多核與多緒在各種運(yùn)算體系的整合與對(duì)抗
多核心架構(gòu)是處理器的主流設(shè)計(jì)方式之一,不論在超級(jí)計(jì)算機(jī)、服務(wù)器領(lǐng)域、個(gè)人計(jì)算機(jī),小至掌上型行動(dòng)裝置,不論是同質(zhì)核心,甚或是異質(zhì)核心,多核架構(gòu)帶給消費(fèi)者的好處也越來(lái)越明顯。
本文引用地址:http://m.ptau.cn/article/80562.htm但是多核架構(gòu)必須結(jié)合多個(gè)核心,在電路規(guī)模以及芯片復(fù)雜度上的增加必須藉由制程來(lái)抵消,而多執(zhí)行緒雖然也可以跟多核架構(gòu)兼容并蓄,但在嵌入式環(huán)境中,卻是呈現(xiàn)分庭抗禮的狀態(tài),兩者各有優(yōu)勢(shì),但也有其缺點(diǎn),短期之內(nèi)可預(yù)見(jiàn)此2大架構(gòu)在嵌入式應(yīng)用中各擅勝場(chǎng)。
多核與多執(zhí)行緒架構(gòu)其實(shí)都是相當(dāng)成熟且具有歷史的技術(shù),兩者其實(shí)可以相輔相成,在大型計(jì)算機(jī)、工作站等領(lǐng)域,其采用的處理器核心往往都同時(shí)具備此2大技術(shù),而且在效能表現(xiàn)上取得了相當(dāng)優(yōu)秀的結(jié)果,然而在嵌入式應(yīng)用中,卻因?yàn)?大嵌入式處理器廠商的開(kāi)發(fā)走向差異,讓多核心與多執(zhí)行緒技術(shù)成為各家獨(dú)到的特性,并以此為賣點(diǎn),然而隨著處理器架構(gòu)的進(jìn)步,以及半導(dǎo)體制程的進(jìn)化,兩者其實(shí)也有可能結(jié)合,畢竟這2種技術(shù)其實(shí)沒(méi)有太多相抵之處,目前無(wú)法在嵌入式處理器中并行,只能看成是廠商的技術(shù)限制,也或者是市場(chǎng)營(yíng)銷取向的不同,如果哪里天某陣營(yíng)突然推出結(jié)合兩者優(yōu)點(diǎn)的處理器,其實(shí)也在預(yù)料之中。
圖說(shuō):IBM的多核技術(shù)在高階運(yùn)算中相當(dāng)普及。
多核心的架構(gòu)特色
處理器的多核心技術(shù)其實(shí)已經(jīng)行之有年,對(duì)于特定應(yīng)用,多核心架構(gòu)的確能夠?qū)π芷鸱浅4蟮恼鎺椭?,但是一般人在多核心?duì)系統(tǒng)效能的幫助其實(shí)會(huì)有點(diǎn)誤會(huì),對(duì)基于多核心架構(gòu)處理器的系統(tǒng)來(lái)說(shuō),多核心處理器并不能把單一執(zhí)行緒的工作平均切割分配給處理器中的不同核心。
舉個(gè)比較淺顯的例子:?jiǎn)魏诵奶幚砥髟谶M(jìn)行單一工作處理時(shí),就好像1個(gè)工人在掃地,而場(chǎng)景轉(zhuǎn)換到多核心處理器時(shí),那掃地的工作并不會(huì)平均分配給多個(gè)工人,而仍然是1位工人在掃地,其它工人只能在旁邊看,系統(tǒng)只能指定其它工人去進(jìn)行別的工作,比如說(shuō)澆花、洗衣或者是剪樹(shù),掃地這件工作本身在同1個(gè)時(shí)間點(diǎn)內(nèi)依然只能由同1個(gè)工人進(jìn)行。而多核心架構(gòu)必須整合顆或多顆核心,在處理單元上多少都會(huì)有重復(fù),若工作排程分配機(jī)制設(shè)計(jì)不佳、操作系統(tǒng)配合度不夠高,最佳化程度不夠,或者是工作本身過(guò)于單純,那等于是會(huì)有大批的晶體管處于閑置狀態(tài),形成浪費(fèi)。
多執(zhí)行緒的技術(shù)特性
至于在多執(zhí)行緒方面,我們可以將之想象成具有1個(gè)復(fù)雜的大腦,而且有8只手腳的工人,這種架構(gòu)在應(yīng)用上,可以視工作的需求,來(lái)分配其大腦和手腳的工作負(fù)載,當(dāng)大腦覺(jué)得正在進(jìn)行的工作內(nèi)容單純又輕松,那么可以依照其預(yù)設(shè)的工作模式,來(lái)將大腦的思考能力和手腳進(jìn)行切割,將其分散出去進(jìn)行其它工作,如果當(dāng)目前的執(zhí)行緒本身復(fù)雜度高,或者是僅處理單一執(zhí)行緒,則可以將所有執(zhí)行單元(大腦和手腳)結(jié)合為一體,全力應(yīng)付目前的工作。
乍看之下,多執(zhí)行緒在應(yīng)用的彈性方面要高出許多,但是多執(zhí)行序架構(gòu)的處理器在本質(zhì)上仍為單一處理器(以前例而言,則是基于同1個(gè)大腦),即使能夠同時(shí)處理多個(gè)執(zhí)行緒,但是執(zhí)行單元總數(shù)仍有其限制,在資源有限(快取存儲(chǔ)器、分支預(yù)測(cè)單元、整數(shù)、浮點(diǎn)運(yùn)算單元等等)的狀況之下,要如何為特定應(yīng)用最佳化可能是相當(dāng)困難的1件事。
多核心/多執(zhí)行緒在PC平臺(tái)上的發(fā)展
我們以x86處理器為例,其實(shí)多執(zhí)行緒的引進(jìn)要早于多核心體系,這主要是肇因于半導(dǎo)體制程的限制,在過(guò)去的制程技術(shù)之下,要導(dǎo)入多核心架構(gòu)是相當(dāng)困難的1件事,除了核心熱功耗問(wèn)題難以解決以外,制程的不成熟也讓良率難以有效提高,IBM基于RISC架構(gòu)的POWER處理器,早在2001年就已經(jīng)邁入多核心,不過(guò)初期僅限于高階的計(jì)算運(yùn)用,x86平臺(tái)則是遲至2005年才推出了首款雙核心處理器。
圖說(shuō):Power4的芯片結(jié)構(gòu)。
POWER4的架構(gòu)為64位元,采用深管線,非循序執(zhí)行指令(Out-Of-Order Execute)和超純量(superscalar,即在1個(gè)處理器中擁有多重資料流路徑的技術(shù),可以藉此加快計(jì)算的速度)設(shè)計(jì),除此之外,POWER4還能執(zhí)行POWER指令集。每個(gè)POWER4處理器擁有2個(gè)加載/儲(chǔ)存單元;2個(gè)倍精度的乘法浮點(diǎn)計(jì)算單元;1個(gè)分支預(yù)測(cè)單元和1個(gè)條件程序碼暫存器執(zhí)行單元。2個(gè)加載/貯存單元本身也具備了執(zhí)行簡(jiǎn)單整數(shù)指令的能力,例如加、減和邏輯運(yùn)算等。
每個(gè)POWER4處理器擁有32KB的資料快?。╠ata cache )和64KB的指令快取(instruction cache),資料快取每個(gè)時(shí)脈周期可以完成2個(gè)加載動(dòng)作和1個(gè)貯存動(dòng)作。L1邏輯控制器支持在資料快取和指令快取中實(shí)現(xiàn)硬件指令預(yù)取。POWER4是非常先進(jìn)的架構(gòu),遠(yuǎn)遠(yuǎn)超越了當(dāng)時(shí)的X86體系。不過(guò)POWER4的芯片成本非常高昂,晶體管面積龐大,功耗也相當(dāng)驚人,也此該處理器在初期僅能被應(yīng)用在高速資料處理硬件上,直到制程技術(shù)有了突破,才逐漸被應(yīng)用到桌面平臺(tái)。
x86平臺(tái)方面要主要是消費(fèi)性應(yīng)用,因此價(jià)格與成本必須被擺到第一要件考量,雙核心芯片面積過(guò)于龐大,功耗更是難以利用當(dāng)時(shí)的技術(shù)解決,而x86處理器為了能夠適應(yīng)復(fù)雜的運(yùn)算環(huán)境,在芯片上設(shè)計(jì)了許多執(zhí)行單元,已被不時(shí)之需,事實(shí)上,這些執(zhí)行單元在大多數(shù)的運(yùn)算應(yīng)用中總是被閑置,形成了效能上的浪費(fèi),為了解決這樣的問(wèn)題,Intel借鏡其它處理器廠商的技術(shù),推出了自有的雙執(zhí)行緒技術(shù),也就是俗稱的HyperThreading,藉由該技術(shù),Intel Pentium處理器在單一周期中最多可以執(zhí)行2道指令,這項(xiàng)技術(shù)在當(dāng)時(shí)的x86環(huán)境上看起來(lái)很新鮮,實(shí)際上針對(duì)高階運(yùn)算的RISC平臺(tái)早已行之有年,而這項(xiàng)技術(shù)也有其缺點(diǎn),當(dāng)開(kāi)啟HyperThreading時(shí),因?yàn)椴糠痔幚韱卧磺懈顏?lái)作為執(zhí)行第二個(gè)執(zhí)行緒之用,在面對(duì)單一復(fù)雜的執(zhí)行緒運(yùn)算需求,效能表現(xiàn)反而可能會(huì)遜于關(guān)閉HyperThreading的狀態(tài)。
在x86環(huán)境當(dāng)中,微軟的操作系統(tǒng)向來(lái)無(wú)法良好的負(fù)擔(dān)起多核心處理器的資料分配需求,以WindowsXP為例,該操作系統(tǒng)在執(zhí)行單元與存儲(chǔ)器存取的流程分配上有很大的問(wèn)題,當(dāng)雙核心處理器的1個(gè)核心在進(jìn)行運(yùn)算時(shí),另1核心必須等到運(yùn)算中的核心完成工作之后,才能從L2快取存儲(chǔ)器中取得所需資料來(lái)進(jìn)行運(yùn)算,而如果該運(yùn)算資料剛好在正在運(yùn)算的另1核心的L2快取中,則處理器核心還要透過(guò)匯流排將對(duì)方L2快取資料傳輸過(guò)來(lái),不僅耗費(fèi)過(guò)多執(zhí)行周期,對(duì)匯流排也是相當(dāng)大的負(fù)擔(dān)。Vista在某種程度上改善了這樣的狀況,但是存儲(chǔ)器控制器仍會(huì)影響到處理器核心的資料分配與傳輸,一般來(lái)說(shuō),高效能處理器通常都會(huì)將存儲(chǔ)器控制器內(nèi)建,如此可以大幅降低存儲(chǔ)器存取所造成的延遲,并提供處理器更大的頻寬。
圖說(shuō):具備HyperThreading技術(shù)的Intel處理器。
后來(lái)Intel逐漸發(fā)展成為半導(dǎo)體猛獸,擁有業(yè)界最先進(jìn)的半導(dǎo)體制程技術(shù),雙核心設(shè)計(jì)逐漸取得領(lǐng)先,雖然存儲(chǔ)器控制器仍是效能瓶頸,但是藉由不計(jì)工本的整合龐大快取存儲(chǔ)器,在效能上仍是具有相當(dāng)?shù)目煽葱裕瑸榱吮苊獾窒嫶罂烊〈鎯?chǔ)器的加速作用,其對(duì)HyperThreading之類的多執(zhí)行緒技術(shù)也采避而不談的態(tài)度,新近的Core 微架構(gòu)雙核心處理器上也沒(méi)有導(dǎo)入此技術(shù),不過(guò)在45nm Penryn處理器家族上,藉由改善快取存儲(chǔ)器的效率,將可見(jiàn)到Hyper Threading技術(shù)復(fù)活。不過(guò)將來(lái)計(jì)算環(huán)境預(yù)料將大幅向串流應(yīng)用傾斜,針對(duì)此類串流應(yīng)用,循序(In-Order)執(zhí)行能力的核心將藉由核心數(shù)量以及可運(yùn)用計(jì)算單元取勝,在此類架構(gòu)導(dǎo)入多執(zhí)行緒來(lái)避免執(zhí)行管線阻塞,將是未來(lái)的設(shè)計(jì)主流,效率也將會(huì)更高。當(dāng)然,為了避免多執(zhí)行緒架構(gòu)對(duì)讀寫效能帶來(lái)沖擊,整合存儲(chǔ)器控制器是絕對(duì)必須的條件之一。
嵌入式環(huán)境中的SoC設(shè)計(jì)
在嵌入式系統(tǒng)方面,處理器多以SoC的形式進(jìn)行發(fā)展,單一芯片內(nèi)部可能包含了1到多個(gè)同質(zhì)或非同質(zhì)處理器核心,情況更不是如前述基本型態(tài)多核心處理器那般單純,由于SoC除了中央處理器核心以外,還要包括了數(shù)碼訊號(hào)處理器、存儲(chǔ)器或周邊控制器、音效處理單元、視訊處理單元、或是SIMD處理單元,在架構(gòu)上非常的復(fù)雜,在此種型態(tài)芯片中采用多核心方案,其實(shí)有其困難度。先不論硬件方面的問(wèn)題,在軟件開(kāi)發(fā)與整合方面,就已經(jīng)是1大難關(guān)。
在一般應(yīng)用上,同質(zhì)多核心的性能成長(zhǎng)幅度無(wú)法隨著核心數(shù)目的增加而線性成長(zhǎng),就目前的例子來(lái)看,4核心同質(zhì)處理器的效能表現(xiàn),尚無(wú)法達(dá)到單一核心的3倍幅度,這是因?yàn)橥ㄓ貌僮飨到y(tǒng)在安排工作時(shí),通常對(duì)排程管理無(wú)法達(dá)到最佳化,而以一般PC平臺(tái)最常面對(duì)的隨機(jī)運(yùn)算特性,系統(tǒng)很難去判斷何時(shí)是特定核心工作交接或執(zhí)行的最佳時(shí)間點(diǎn),不過(guò)在嵌入式應(yīng)用方面,其運(yùn)算環(huán)境多為串流應(yīng)用,或者是可預(yù)期的計(jì)算過(guò)程與資料來(lái)源,最佳化過(guò)的操作系統(tǒng)可以將不同特性的運(yùn)算需求分配給不同性質(zhì)的處理核心(也就是異質(zhì)多核心),一般通用多核心處理器在此處所扮演的角色其實(shí)相當(dāng)弱。
圖說(shuō):德州儀器的OMAP3430是1款相當(dāng)標(biāo)準(zhǔn)的異質(zhì)多核心處理器。
多核心對(duì)于提升整體性能雖然具有效益,但是效率相對(duì)較低。例如設(shè)計(jì)1個(gè)4核心系統(tǒng),每個(gè)核心都只有1個(gè)執(zhí)行緒,當(dāng)然每個(gè)核心的性能都能達(dá)到最大化;但即使4個(gè)核心的性能都能達(dá)到最大化,最多也僅能同時(shí)執(zhí)行4個(gè)執(zhí)行緒,因此免不了仍會(huì)有空閑的處理單元??紤]到不是所有的執(zhí)行緒都需要用到所有的處理單元,如果能擁有4個(gè)具備多執(zhí)行緒能力的處理器核心,藉由充分利用所有執(zhí)行單元的處理能力,在理想狀態(tài)下,甚至能達(dá)到8個(gè)或更多單執(zhí)行緒的核心性能總和。也就是說(shuō),多執(zhí)行緒能使多核心處理器整體的性能更容易達(dá)到硬件極限,兩者互相搭配可以有效避免執(zhí)行單元的閑置與浪費(fèi)。
但是就目前的狀況來(lái)看,多核心架構(gòu)處理器在嵌入式應(yīng)用中較占優(yōu)勢(shì),除了核心較為單純,藉由制程的進(jìn)步可以很容易以內(nèi)建更多核心的方式來(lái)達(dá)到更高的效能,這樣的作法等于是將設(shè)計(jì)端的負(fù)載轉(zhuǎn)移到芯片制造端,IC設(shè)計(jì)公司花費(fèi)的設(shè)計(jì)時(shí)間能夠減少,成品也能更快上市,因此大多數(shù)具備高性能需求的嵌入式應(yīng)用多采用此方式。但是多執(zhí)行緒在架構(gòu)上有其效率高的優(yōu)點(diǎn),在較少的晶體管需求之下,能夠擁有比起單執(zhí)行緒更高的總和輸出運(yùn)算能量,除了功耗能夠更為有效的控制以外,芯片的單位效率也更居優(yōu)勢(shì),在成本效能比方面較高。
但是多執(zhí)行緒架構(gòu)并非毫無(wú)隱憂,由于多執(zhí)行緒應(yīng)用往往難以被明確界定,而且在程序碼撰寫上要更難以被一般人理解。這是因?yàn)槎鄨?zhí)行緒系統(tǒng),程序執(zhí)行的程序以及和處理器狀態(tài)將可以在任何時(shí)間被轉(zhuǎn)換,對(duì)于程序設(shè)計(jì)師而言,要確定是否每1個(gè)可能的程序都可以正常地運(yùn)作將是非常困難的1件事,事實(shí)上,這個(gè)目標(biāo)幾乎是不可能實(shí)現(xiàn)的。而由這種不確定性所導(dǎo)致的結(jié)果,可能會(huì)使看似簡(jiǎn)單的程序由于潛在的死鎖或其它的危險(xiǎn)而漏洞百出。多核心體系等同于放大過(guò)后的多執(zhí)行緒處理器,每1核心/執(zhí)行緒都具備了完整的執(zhí)行電路,但是在程序設(shè)計(jì)概念上其實(shí)都有互通之處,因此發(fā)生在多執(zhí)行緒處理器身上的困難,在多核心處理器上同樣也會(huì)有很大的機(jī)會(huì)可以見(jiàn)到。
x86入侵 RISC體系面臨大危機(jī)
多核心設(shè)計(jì)雖然可以在低時(shí)脈前提之下,取得相對(duì)較高的運(yùn)算能量,但是多核心也同時(shí)代表著更龐大的晶體管數(shù)目,尤其以目前的核心架構(gòu)仍以非循序執(zhí)行(OOOE)為主流,非循序執(zhí)行需要更多的分支預(yù)測(cè)電路、存儲(chǔ)器管理以及更復(fù)雜的執(zhí)行單元,以每晶體管效率來(lái)看,其實(shí)并不是相當(dāng)理想,但即便是以MIPS為主流的多執(zhí)行緒嵌入式處理器來(lái)看,為了針對(duì)通用運(yùn)算達(dá)到更高的效能表現(xiàn),也都是采用OOOE方式設(shè)計(jì),加上為了多執(zhí)行緒處理而增加的處理單元,在SoC整合多核心的難度要來(lái)得更高。由此來(lái)看,其實(shí)傳統(tǒng)的RISC架構(gòu)嵌入式處理器都不約而同的面臨了瓶頸,單位芯片成本不夠低、效能不夠高,多核心必須結(jié)合多顆芯片來(lái)達(dá)成等狀況,都是發(fā)展上的重重限制。
過(guò)去的嵌入式應(yīng)用具備了長(zhǎng)久且穩(wěn)定的特性,因此IP廠商在推出1款處理器的架構(gòu)時(shí),基本上都可以沿用數(shù)年不做改變,但是這樣的狀況隨著x86體系嵌入式處理器逐步逼近,逐漸有了根本上的改變。傳統(tǒng)RISC處理器雖然目前仍然在架構(gòu)上保有優(yōu)勢(shì),但是這些優(yōu)勢(shì)總有一天會(huì)被追趕弭平,當(dāng)RISC體系不再具備技術(shù)/功耗/效能上的優(yōu)勢(shì),那要如何說(shuō)服嵌入式系統(tǒng)廠商將其處理器應(yīng)用在其產(chǎn)品之中?而且未來(lái)的信息產(chǎn)品將更為瞬息萬(wàn)變,世代更新也更為迅速,如恐龍般踩到尾巴五分鐘之后才知道喊痛的話,將免不了會(huì)遭到滅種的命運(yùn)。
評(píng)論