新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 學(xué)習(xí)方法與實踐 > 多核與多緒在各種運算體系的整合與對抗

多核與多緒在各種運算體系的整合與對抗

作者:林宗輝 時間:2008-03-24 來源:DIGITIMES 收藏

  心架構(gòu)是的主流設(shè)計方式之一,不論在超級計算機、服務(wù)器領(lǐng)域、個人計算機,小至掌上型行動裝置,不論是同質(zhì)核心,甚或是異質(zhì)核心,架構(gòu)帶給消費者的好處也越來越明顯。

本文引用地址:http://butianyuan.cn/article/80562.htm

        但是架構(gòu)必須結(jié)合多個核心,在電路規(guī)模以及芯片復(fù)雜度上的增加必須藉由制程來抵消,而多執(zhí)行緒雖然也可以跟多核架構(gòu)兼容并蓄,但在嵌入式環(huán)境中,卻是呈現(xiàn)分庭抗禮的狀態(tài),兩者各有優(yōu)勢,但也有其缺點,短期之內(nèi)可預(yù)見此2大架構(gòu)在嵌入式應(yīng)用中各擅勝場。

  多核與多執(zhí)行緒架構(gòu)其實都是相當(dāng)成熟且具有歷史的技術(shù),兩者其實可以相輔相成,在大型計算機、工作站等領(lǐng)域,其采用的核心往往都同時具備此2大技術(shù),而且在效能表現(xiàn)上取得了相當(dāng)優(yōu)秀的結(jié)果,然而在嵌入式應(yīng)用中,卻因為2大嵌入式廠商的開發(fā)走向差異,讓多核心與多執(zhí)行緒技術(shù)成為各家獨到的特性,并以此為賣點,然而隨著處理器架構(gòu)的進步,以及半導(dǎo)體制程的進化,兩者其實也有可能結(jié)合,畢竟這2種技術(shù)其實沒有太多相抵之處,目前無法在嵌入式處理器中并行,只能看成是廠商的技術(shù)限制,也或者是市場營銷取向的不同,如果哪里天某陣營突然推出結(jié)合兩者優(yōu)點的處理器,其實也在預(yù)料之中。
 

 圖說:IBM的多核技術(shù)在高階運算中相當(dāng)普及。

       多核心的架構(gòu)特色

        處理器的多核心技術(shù)其實已經(jīng)行之有年,對于特定應(yīng)用,多核心架構(gòu)的確能夠?qū)π芷鸱浅4蟮恼鎺椭?,但是一般人在多核心對系統(tǒng)效能的幫助其實會有點誤會,對基于多核心架構(gòu)處理器的系統(tǒng)來說,多核心處理器并不能把單一執(zhí)行緒的工作平均切割分配給處理器中的不同核心。

        舉個比較淺顯的例子:單核心處理器在進行單一工作處理時,就好像1個工人在掃地,而場景轉(zhuǎn)換到多核心處理器時,那掃地的工作并不會平均分配給多個工人,而仍然是1位工人在掃地,其它工人只能在旁邊看,系統(tǒng)只能指定其它工人去進行別的工作,比如說澆花、洗衣或者是剪樹,掃地這件工作本身在同1個時間點內(nèi)依然只能由同1個工人進行。而多核心架構(gòu)必須整合顆或多顆核心,在處理單元上多少都會有重復(fù),若工作排程分配機制設(shè)計不佳、操作系統(tǒng)配合度不夠高,最佳化程度不夠,或者是工作本身過于單純,那等于是會有大批的晶體管處于閑置狀態(tài),形成浪費。

      多執(zhí)行緒的技術(shù)特性

      至于在多執(zhí)行緒方面,我們可以將之想象成具有1個復(fù)雜的大腦,而且有8只手腳的工人,這種架構(gòu)在應(yīng)用上,可以視工作的需求,來分配其大腦和手腳的工作負載,當(dāng)大腦覺得正在進行的工作內(nèi)容單純又輕松,那么可以依照其預(yù)設(shè)的工作模式,來將大腦的思考能力和手腳進行切割,將其分散出去進行其它工作,如果當(dāng)目前的執(zhí)行緒本身復(fù)雜度高,或者是僅處理單一執(zhí)行緒,則可以將所有執(zhí)行單元(大腦和手腳)結(jié)合為一體,全力應(yīng)付目前的工作。

      乍看之下,多執(zhí)行緒在應(yīng)用的彈性方面要高出許多,但是多執(zhí)行序架構(gòu)的處理器在本質(zhì)上仍為單一處理器(以前例而言,則是基于同1個大腦),即使能夠同時處理多個執(zhí)行緒,但是執(zhí)行單元總數(shù)仍有其限制,在資源有限(快取存儲器、分支預(yù)測單元、整數(shù)、浮點運算單元等等)的狀況之下,要如何為特定應(yīng)用最佳化可能是相當(dāng)困難的1件事。

      多核心/多執(zhí)行緒在PC平臺上的發(fā)展

      我們以x86處理器為例,其實多執(zhí)行緒的引進要早于多核心體系,這主要是肇因于半導(dǎo)體制程的限制,在過去的制程技術(shù)之下,要導(dǎo)入多核心架構(gòu)是相當(dāng)困難的1件事,除了核心熱功耗問題難以解決以外,制程的不成熟也讓良率難以有效提高,IBM基于RISC架構(gòu)的POWER處理器,早在2001年就已經(jīng)邁入多核心,不過初期僅限于高階的計算運用,x86平臺則是遲至2005年才推出了首款雙核心處理器。

圖說:Power4的芯片結(jié)構(gòu)。

      POWER4的架構(gòu)為64位元,采用深管線,非循序執(zhí)行指令(Out-Of-Order Execute)和超純量(superscalar,即在1個處理器中擁有多重資料流路徑的技術(shù),可以藉此加快計算的速度)設(shè)計,除此之外,POWER4還能執(zhí)行POWER指令集。每個POWER4處理器擁有2個加載/儲存單元;2個倍精度的乘法浮點計算單元;1個分支預(yù)測單元和1個條件程序碼暫存器執(zhí)行單元。2個加載/貯存單元本身也具備了執(zhí)行簡單整數(shù)指令的能力,例如加、減和邏輯運算等。

      每個POWER4處理器擁有32KB的資料快取(data cache )和64KB的指令快?。╥nstruction cache),資料快取每個時脈周期可以完成2個加載動作和1個貯存動作。L1邏輯控制器支持在資料快取和指令快取中實現(xiàn)硬件指令預(yù)取。POWER4是非常先進的架構(gòu),遠遠超越了當(dāng)時的X86體系。不過POWER4的芯片成本非常高昂,晶體管面積龐大,功耗也相當(dāng)驚人,也此該處理器在初期僅能被應(yīng)用在高速資料處理硬件上,直到制程技術(shù)有了突破,才逐漸被應(yīng)用到桌面平臺。

      x86平臺方面要主要是消費性應(yīng)用,因此價格與成本必須被擺到第一要件考量,雙核心芯片面積過于龐大,功耗更是難以利用當(dāng)時的技術(shù)解決,而x86處理器為了能夠適應(yīng)復(fù)雜的運算環(huán)境,在芯片上設(shè)計了許多執(zhí)行單元,已被不時之需,事實上,這些執(zhí)行單元在大多數(shù)的運算應(yīng)用中總是被閑置,形成了效能上的浪費,為了解決這樣的問題,Intel借鏡其它處理器廠商的技術(shù),推出了自有的雙執(zhí)行緒技術(shù),也就是俗稱的HyperThreading,藉由該技術(shù),Intel Pentium處理器在單一周期中最多可以執(zhí)行2道指令,這項技術(shù)在當(dāng)時的x86環(huán)境上看起來很新鮮,實際上針對高階運算的RISC平臺早已行之有年,而這項技術(shù)也有其缺點,當(dāng)開啟HyperThreading時,因為部分處理單元被切割來作為執(zhí)行第二個執(zhí)行緒之用,在面對單一復(fù)雜的執(zhí)行緒運算需求,效能表現(xiàn)反而可能會遜于關(guān)閉HyperThreading的狀態(tài)。

       在x86環(huán)境當(dāng)中,微軟的操作系統(tǒng)向來無法良好的負擔(dān)起多核心處理器的資料分配需求,以WindowsXP為例,該操作系統(tǒng)在執(zhí)行單元與存儲器存取的流程分配上有很大的問題,當(dāng)雙核心處理器的1個核心在進行運算時,另1核心必須等到運算中的核心完成工作之后,才能從L2快取存儲器中取得所需資料來進行運算,而如果該運算資料剛好在正在運算的另1核心的L2快取中,則處理器核心還要透過匯流排將對方L2快取資料傳輸過來,不僅耗費過多執(zhí)行周期,對匯流排也是相當(dāng)大的負擔(dān)。Vista在某種程度上改善了這樣的狀況,但是存儲器控制器仍會影響到處理器核心的資料分配與傳輸,一般來說,高效能處理器通常都會將存儲器控制器內(nèi)建,如此可以大幅降低存儲器存取所造成的延遲,并提供處理器更大的頻寬。

圖說:具備HyperThreading技術(shù)的Intel處理器。

      后來Intel逐漸發(fā)展成為半導(dǎo)體猛獸,擁有業(yè)界最先進的半導(dǎo)體制程技術(shù),雙核心設(shè)計逐漸取得領(lǐng)先,雖然存儲器控制器仍是效能瓶頸,但是藉由不計工本的整合龐大快取存儲器,在效能上仍是具有相當(dāng)?shù)目煽葱?,為了避免抵消龐大快取存儲器的加速作用,其對HyperThreading之類的多執(zhí)行緒技術(shù)也采避而不談的態(tài)度,新近的Core 微架構(gòu)雙核心處理器上也沒有導(dǎo)入此技術(shù),不過在45nm Penryn處理器家族上,藉由改善快取存儲器的效率,將可見到Hyper Threading技術(shù)復(fù)活。不過將來計算環(huán)境預(yù)料將大幅向串流應(yīng)用傾斜,針對此類串流應(yīng)用,循序(In-Order)執(zhí)行能力的核心將藉由核心數(shù)量以及可運用計算單元取勝,在此類架構(gòu)導(dǎo)入多執(zhí)行緒來避免執(zhí)行管線阻塞,將是未來的設(shè)計主流,效率也將會更高。當(dāng)然,為了避免多執(zhí)行緒架構(gòu)對讀寫效能帶來沖擊,整合存儲器控制器是絕對必須的條件之一。

      嵌入式環(huán)境中的SoC設(shè)計

      在嵌入式系統(tǒng)方面,處理器多以SoC的形式進行發(fā)展,單一芯片內(nèi)部可能包含了1到多個同質(zhì)或非同質(zhì)處理器核心,情況更不是如前述基本型態(tài)多核心處理器那般單純,由于SoC除了中央處理器核心以外,還要包括了數(shù)碼訊號處理器、存儲器或周邊控制器、音效處理單元、視訊處理單元、或是SIMD處理單元,在架構(gòu)上非常的復(fù)雜,在此種型態(tài)芯片中采用多核心方案,其實有其困難度。先不論硬件方面的問題,在軟件開發(fā)與整合方面,就已經(jīng)是1大難關(guān)。

      在一般應(yīng)用上,同質(zhì)多核心的性能成長幅度無法隨著核心數(shù)目的增加而線性成長,就目前的例子來看,4核心同質(zhì)處理器的效能表現(xiàn),尚無法達到單一核心的3倍幅度,這是因為通用操作系統(tǒng)在安排工作時,通常對排程管理無法達到最佳化,而以一般PC平臺最常面對的隨機運算特性,系統(tǒng)很難去判斷何時是特定核心工作交接或執(zhí)行的最佳時間點,不過在嵌入式應(yīng)用方面,其運算環(huán)境多為串流應(yīng)用,或者是可預(yù)期的計算過程與資料來源,最佳化過的操作系統(tǒng)可以將不同特性的運算需求分配給不同性質(zhì)的處理核心(也就是異質(zhì)多核心),一般通用多核心處理器在此處所扮演的角色其實相當(dāng)弱。


            圖說:德州儀器的OMAP3430是1款相當(dāng)標(biāo)準的異質(zhì)多核心處理器。

        多核心對于提升整體性能雖然具有效益,但是效率相對較低。例如設(shè)計1個4核心系統(tǒng),每個核心都只有1個執(zhí)行緒,當(dāng)然每個核心的性能都能達到最大化;但即使4個核心的性能都能達到最大化,最多也僅能同時執(zhí)行4個執(zhí)行緒,因此免不了仍會有空閑的處理單元??紤]到不是所有的執(zhí)行緒都需要用到所有的處理單元,如果能擁有4個具備多執(zhí)行緒能力的處理器核心,藉由充分利用所有執(zhí)行單元的處理能力,在理想狀態(tài)下,甚至能達到8個或更多單執(zhí)行緒的核心性能總和。也就是說,多執(zhí)行緒能使多核心處理器整體的性能更容易達到硬件極限,兩者互相搭配可以有效避免執(zhí)行單元的閑置與浪費。

        但是就目前的狀況來看,多核心架構(gòu)處理器在嵌入式應(yīng)用中較占優(yōu)勢,除了核心較為單純,藉由制程的進步可以很容易以內(nèi)建更多核心的方式來達到更高的效能,這樣的作法等于是將設(shè)計端的負載轉(zhuǎn)移到芯片制造端,IC設(shè)計公司花費的設(shè)計時間能夠減少,成品也能更快上市,因此大多數(shù)具備高性能需求的嵌入式應(yīng)用多采用此方式。但是多執(zhí)行緒在架構(gòu)上有其效率高的優(yōu)點,在較少的晶體管需求之下,能夠擁有比起單執(zhí)行緒更高的總和輸出運算能量,除了功耗能夠更為有效的控制以外,芯片的單位效率也更居優(yōu)勢,在成本效能比方面較高。

        但是多執(zhí)行緒架構(gòu)并非毫無隱憂,由于多執(zhí)行緒應(yīng)用往往難以被明確界定,而且在程序碼撰寫上要更難以被一般人理解。這是因為多執(zhí)行緒系統(tǒng),程序執(zhí)行的程序以及和處理器狀態(tài)將可以在任何時間被轉(zhuǎn)換,對于程序設(shè)計師而言,要確定是否每1個可能的程序都可以正常地運作將是非常困難的1件事,事實上,這個目標(biāo)幾乎是不可能實現(xiàn)的。而由這種不確定性所導(dǎo)致的結(jié)果,可能會使看似簡單的程序由于潛在的死鎖或其它的危險而漏洞百出。多核心體系等同于放大過后的多執(zhí)行緒處理器,每1核心/執(zhí)行緒都具備了完整的執(zhí)行電路,但是在程序設(shè)計概念上其實都有互通之處,因此發(fā)生在多執(zhí)行緒處理器身上的困難,在多核心處理器上同樣也會有很大的機會可以見到。

        x86入侵 RISC體系面臨大危機

        多核心設(shè)計雖然可以在低時脈前提之下,取得相對較高的運算能量,但是多核心也同時代表著更龐大的晶體管數(shù)目,尤其以目前的核心架構(gòu)仍以非循序執(zhí)行(OOOE)為主流,非循序執(zhí)行需要更多的分支預(yù)測電路、存儲器管理以及更復(fù)雜的執(zhí)行單元,以每晶體管效率來看,其實并不是相當(dāng)理想,但即便是以MIPS為主流的多執(zhí)行緒嵌入式處理器來看,為了針對通用運算達到更高的效能表現(xiàn),也都是采用OOOE方式設(shè)計,加上為了多執(zhí)行緒處理而增加的處理單元,在SoC整合多核心的難度要來得更高。由此來看,其實傳統(tǒng)的RISC架構(gòu)嵌入式處理器都不約而同的面臨了瓶頸,單位芯片成本不夠低、效能不夠高,多核心必須結(jié)合多顆芯片來達成等狀況,都是發(fā)展上的重重限制。

       過去的嵌入式應(yīng)用具備了長久且穩(wěn)定的特性,因此IP廠商在推出1款處理器的架構(gòu)時,基本上都可以沿用數(shù)年不做改變,但是這樣的狀況隨著x86體系嵌入式處理器逐步逼近,逐漸有了根本上的改變。傳統(tǒng)RISC處理器雖然目前仍然在架構(gòu)上保有優(yōu)勢,但是這些優(yōu)勢總有一天會被追趕弭平,當(dāng)RISC體系不再具備技術(shù)/功耗/效能上的優(yōu)勢,那要如何說服嵌入式系統(tǒng)廠商將其處理器應(yīng)用在其產(chǎn)品之中?而且未來的信息產(chǎn)品將更為瞬息萬變,世代更新也更為迅速,如恐龍般踩到尾巴五分鐘之后才知道喊痛的話,將免不了會遭到滅種的命運。



關(guān)鍵詞: 多核 處理器

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉