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