您可能已經(jīng)習(xí)慣了芯片系統(tǒng)(SoC)的multicore處理器這一概念,而現(xiàn)實(shí)卻總是在不斷變化,。8月份舉行的Hot Chips大會(huì)研討中,,已經(jīng)清楚的表明multicore正在向many-core發(fā)展:在SoC核心位置,,密切相關(guān)的處理器內(nèi)核的數(shù)量在不斷增長(zhǎng),從2個(gè)或者4個(gè)增加到8個(gè),、16個(gè),,甚至是很多,很多,。
這種增長(zhǎng)僅是摩爾定律發(fā)展的另一階段,,系統(tǒng)開(kāi)發(fā)人員還是能清楚的了解這一切嗎?從multicore發(fā)展到many-core是類(lèi)型的變化,還是僅僅是規(guī)模的變化?這種轉(zhuǎn)變能解決系統(tǒng)開(kāi)發(fā)人員面臨的問(wèn)題嗎?
為找到這些問(wèn)題的答案,,我們與一些團(tuán)隊(duì)進(jìn)行了交流,,他們已經(jīng)在many-coreSoC開(kāi)發(fā)上積累了一些設(shè)計(jì)經(jīng)驗(yàn)。我們向他們提出了一個(gè)簡(jiǎn)單的問(wèn)題:您的體驗(yàn)與使用multicore有什么不同嗎?對(duì)于這一簡(jiǎn)單的問(wèn)題,,我們得到了各種各樣的回答,。
Many-core的發(fā)展
Hot Chips的論文列出了SoC體系結(jié)構(gòu)向many-core領(lǐng)域發(fā)展的三條主要路線。我們從Cavium的Kin-Yip Liu在小規(guī)模無(wú)線基站SoC設(shè)計(jì)論文中闡述的路線開(kāi)始,,這些設(shè)計(jì)包括微基站,、微微基站和毫微微基站,。
名為Octeon Fusion CNF71xx的設(shè)計(jì)如 圖1 所示,包括兩個(gè)處理簇,,含有四個(gè)一組的增強(qiáng)MIPS64內(nèi)核,,以及圍繞一個(gè)共享L2高速緩存的各種硬件加速器,還有6個(gè)為一組的數(shù)字信號(hào)處理(DSP)內(nèi)核,,每個(gè)內(nèi)核都有很多硬件加速器,,這些內(nèi)核分布在共享存儲(chǔ)器交換架構(gòu)周?chē)?/div>

圖1.Cavium的Octeon Fusion體系結(jié)構(gòu)結(jié)合了CPU簇以及相連接的硬件加速器和分立的DSP內(nèi)核簇。
四個(gè)CPU還很難說(shuō)明是many-core設(shè)計(jì),。但是有兩個(gè)很好的理由讓我們的討論從這一芯片開(kāi)始,。首先,增加6個(gè)DSP內(nèi)核使得芯片成為10核異構(gòu)體系結(jié)構(gòu),,表面上看已經(jīng)進(jìn)入many-core領(lǐng)域,。其次,更多的是在理論上,,Cavium使用內(nèi)核的方式與傳統(tǒng)的multicore并不相同,。
Multicore SoC將線程映射至內(nèi)核的方式一般是靜態(tài)的。而隨著內(nèi)核數(shù)量的增加,,這種映射更具流動(dòng)性,。CPU和DSP可以按數(shù)據(jù)流來(lái)劃分,也可以構(gòu)成虛擬流水線,,每一個(gè)完成復(fù)雜任務(wù)的幾級(jí)任務(wù),。或者,,處理器可以觀察任務(wù)序列,,一旦空閑,就可以執(zhí)行新任務(wù),。不斷增強(qiáng)一個(gè)處理器的能力來(lái)完成所有數(shù)據(jù)的處理,,而這一概念正在轉(zhuǎn)向由很多處理器共同完成一項(xiàng)工作——從固定硬件到軟件與加速器的組合。這種概念上的變化確定了multicore與many-core計(jì)算之間的邊界,。我們看到這種變化是從本地對(duì)稱(chēng)的Octeon Fusion體系結(jié)構(gòu)開(kāi)始的。Cavium很顯然同意這一觀點(diǎn),。他們?cè)贖ot Chips上的研討表明,,目前的芯片只是軟件兼容系列的開(kāi)始,這些系列能夠從單核發(fā)展到48核,。
作為對(duì)比,,F(xiàn)ujitsu的Takumi Maruyama發(fā)表的論文介紹了公司的16核芯片SPARC64 X將成為服務(wù)器中心處理器。SPARC64 X與Octeon共享了一個(gè)重要的體系結(jié)構(gòu)概念:16個(gè)SPARC內(nèi)核簇圍繞一個(gè)大規(guī)模內(nèi)核——24 Mbyte,,共享L2高速緩存,。但這也有很大的不同,。這就是專(zhuān)用硬件加速器。Fujitsu將其稱(chēng)之為“芯片軟件”,。Fujitsu沒(méi)有在CPU之外開(kāi)發(fā)松耦合加速器,,來(lái)處理棘手的運(yùn)算問(wèn)題(在這個(gè)例子中,十進(jìn)制數(shù)學(xué)運(yùn)算,、加密和數(shù)據(jù)庫(kù)函數(shù)等),,而是開(kāi)發(fā)了新的RISC類(lèi)型指令來(lái)加速這些運(yùn)算,在每一CPU的浮點(diǎn)單元流水線中增加了必要的執(zhí)行硬件,。因此,,硬件加速并不能靈活的共享L2高速緩存,或者鏈接系統(tǒng)總線,,而是成為CPU不可缺少的組成部分,。實(shí)際上,這些加速器增加了指令,,編譯器可以將其優(yōu)化到CPU指令流中,。
Intel和many-core
最后,考慮Intel的Xeon Phi,,或者還可以考慮Intel資深首席工程師George Chrysos所介紹的Knights Corner,,如 圖2 所示。在Chrysos有些含糊的描述中,,該器件是采用了“50多個(gè)”x86處理器內(nèi)核的協(xié)處理器,,還含有四個(gè)GDDR存儲(chǔ)器控制器,以及與主處理器Xeon CPU連接的PCI Express® (PCIe®)接口,。每一個(gè)處理器都有自己的專(zhuān)用矢量處理單元,,以及自己的512 Kbyte L2高速緩存。L2高速緩存,、GDDR控制器以及PCIe控制器不是由傳統(tǒng)的交換矩陣連接的,,這樣會(huì)導(dǎo)致規(guī)模非常大而在物理上無(wú)法實(shí)現(xiàn),而是由雙向環(huán)形總線連接,。這一總線在每一方向上都有64字節(jié)數(shù)據(jù)通路,,通過(guò)分布式標(biāo)簽方案來(lái)實(shí)現(xiàn)所有L2之間的一致性。遵從體系結(jié)構(gòu)的發(fā)展規(guī)律,,Xeon Phi在內(nèi)部與早期的multicore設(shè)計(jì)非常相似,,即,在PlayStation 3中首次使用的IBM Cell協(xié)處理器,。

圖2.Intel的Xeon Phi是50多個(gè)x86內(nèi)核構(gòu)成的異構(gòu)陣列,,這些內(nèi)核通過(guò)兩路跑道型互聯(lián)結(jié)構(gòu)連接起來(lái)。
Xeon Phi代表了從multicore向many-core的深入發(fā)展。這里,,與Cell不同,,沒(méi)有專(zhuān)門(mén)的加速器或者專(zhuān)用存儲(chǔ)器結(jié)構(gòu),只有相對(duì)簡(jiǎn)單的x86處理器,,連接了矢量處理單元和高速緩存,、DRAM控制器以及PCIe接口。所有這些芯片都專(zhuān)門(mén)用于執(zhí)行x86指令代碼,。Intel展望了Xeon Phi將用于物理,、化學(xué)、生物和金融分析等應(yīng)用中,。
編程模型
這三種芯片代表了系統(tǒng)軟件開(kāi)發(fā)人員三種完全不同的模型,。Octeon Fusion非常專(zhuān)用:它是芯片基站。編程人員使用它時(shí),,將基站應(yīng)用線程映射到CPU,、加速器和DSP上,通過(guò)中心共享高速緩存來(lái)同步線程,。雖然可以在CPU之間或者在DSP之間動(dòng)態(tài)映射任務(wù),,還是需要在不同類(lèi)型的處理器之間來(lái)回遷移一些任務(wù)。
對(duì)于軟件設(shè)計(jì)人員,,16核SPARC64在兩方面是完全不同的,。所有這些處理器都是一樣的,都共享一個(gè)L2,,因此,,不需要將線程鎖定某一CPU。硬件加速器位于指令級(jí),,由編譯器推斷其使用,,而不是由編程器進(jìn)行調(diào)用。您不需要在分立的硬件加速器之間輸入輸出數(shù)據(jù),,確定正確的線程位于正確的CPU上,,或者與松耦合輔助處理器同步。
Xeon Phi在數(shù)量上與Fujitsu SPARC64芯片不同,,北向有50個(gè)CPU,,而不是16個(gè)。其互聯(lián)結(jié)構(gòu)也明顯不同,,連貫環(huán)上有適度的專(zhuān)用L2,,而不是完全共享的L2。毫無(wú)疑問(wèn),,對(duì)于與以前IBM相似的Intel體系結(jié)構(gòu),,雙環(huán)是最高效的芯片實(shí)現(xiàn)方式。
Intel和Fujitsu芯片都具有同構(gòu)體系結(jié)構(gòu)的優(yōu)點(diǎn),,不需要專(zhuān)門(mén)調(diào)用硬件加速器,,性能與具體位置無(wú)關(guān),沒(méi)有跑道方式那么復(fù)雜,。軟件設(shè)計(jì)人員可以按照自己的方式,,將任何混合數(shù)據(jù)流、多線程或者數(shù)據(jù)并行機(jī)映射到CPU中,。
那么,,這到底意味著什么?
很顯然,這三種完全不同的many-core芯片對(duì)軟件開(kāi)發(fā)人員提出了不同的需求,。但是,,如果是這樣,這些SoC究竟給系統(tǒng)開(kāi)發(fā)人員帶來(lái)了哪些問(wèn)題呢?由于這些芯片是新出現(xiàn)的,,因此,,我們向其他公司中有many-core應(yīng)用經(jīng)驗(yàn)的用戶提出了我們的問(wèn)題。
他們建議我們應(yīng)深入了解幾個(gè)不同的問(wèn)題,。一是配置:SoC需要多大的I/O帶寬,、總線帶寬以及外部存儲(chǔ)器帶寬?第二,密切相關(guān)的問(wèn)題是性能建模,。芯片到底需要多大帶寬與它使用數(shù)據(jù)和產(chǎn)生數(shù)據(jù)的速度有關(guān),。第三是控制問(wèn)題:SoC怎樣處理中斷?芯片初始化調(diào)試操作、電源管理和按序關(guān)斷時(shí),,都需要什么條件?還有功耗問(wèn)題,,在另一篇文章中專(zhuān)門(mén)解決了這一問(wèn)題。
有經(jīng)驗(yàn)的用戶還提出了另一個(gè)有用的建議:明確Octeon Fusion等異構(gòu)專(zhuān)用SoC與Xeon Phi等同構(gòu)芯片之間的不同,。專(zhuān)家說(shuō),,這兩方面代表了完全不同的挑戰(zhàn)。
數(shù)據(jù)之后
異構(gòu)many-coreSoC盡管在內(nèi)部組織上是圍繞共享存儲(chǔ)器和總線進(jìn)行構(gòu)建,,而實(shí)際上用作數(shù)據(jù)流機(jī),。在某一工作模式下,已知數(shù)據(jù)流通過(guò)芯片的各種處理器來(lái)傳送,,一般是固定的數(shù)據(jù)無(wú)關(guān)碼型,。這些約束簡(jiǎn)化了系統(tǒng)級(jí)分析。
全球研究組織IMEC (比利時(shí)Leuven)的軟件無(wú)線電(SDR)研究部科學(xué)項(xiàng)目總監(jiān)Liesbet Van der Perre解釋說(shuō):“這些系統(tǒng)的存儲(chǔ)器數(shù)據(jù)流有很高的可預(yù)測(cè)性,。在這些系統(tǒng)中,,數(shù)據(jù)流定義了處理器和通路。在某些共享總線或者存儲(chǔ)器結(jié)構(gòu)中的某些點(diǎn)上,,您會(huì)看到瓶頸,,但這通常是可以預(yù)測(cè)的。”
Van der Perre的計(jì)劃是采用可重新定義的粗粒度處理器陣列來(lái)實(shí)現(xiàn)移動(dòng)SDR。芯片配置會(huì)隨著射頻工作模式而變化,,但是,,當(dāng)射頻保持在某一模式上時(shí),配置會(huì)保持穩(wěn)定,。那么,,在某一模式下,陣列的行為實(shí)際上與靜態(tài)異構(gòu)體系結(jié)構(gòu)非常相似,。一旦您理解了數(shù)據(jù)流之后,,就比較容易對(duì)帶寬需求和功耗進(jìn)行建模。其實(shí)施要求主要來(lái)自算法級(jí)模型,。
這種實(shí)現(xiàn)方法是應(yīng)用異構(gòu)多處理器常用的方法,,能夠以同樣的方式來(lái)使用同構(gòu)many-core系統(tǒng)。對(duì)于某一工作模式,,可以將任務(wù)固定映射至處理器和存儲(chǔ)器,,明確設(shè)計(jì)團(tuán)隊(duì)的配置需求,能夠解釋數(shù)據(jù),。由于這種映射,,分析SoC體系結(jié)構(gòu)和算法描述體現(xiàn)了系統(tǒng)設(shè)計(jì)人員是否具有這方面的設(shè)計(jì)技巧。這也是Mercury計(jì)算機(jī)公司成名的原因之一,,該公司是高端嵌入式計(jì)算公司,,在PowerPC早期就使用了multicore和many-core體系結(jié)構(gòu),并率先使用了圖像處理單元(GPU)進(jìn)行信號(hào)處理,。Mercury公司的技術(shù)總監(jiān)Scott Thieret說(shuō):“這成為我們?cè)鲋档闹饕獊?lái)源,,使我們能夠與客戶一起工作,將數(shù)據(jù)流映射到硬件中,。”
通過(guò)固定映射,,至少有信心在理論上對(duì)數(shù)據(jù)流和功耗建模。但這并不意味著很容易實(shí)現(xiàn),。Thieret說(shuō):“對(duì)這些系統(tǒng)建模和優(yōu)化來(lái)自于經(jīng)驗(yàn),。您需要進(jìn)行很多測(cè)試。有一些重要的指南,,例如,,讓數(shù)據(jù)盡可能靠近處理器,利用芯片最佳數(shù)據(jù)移動(dòng)模型等,。但這要依靠經(jīng)驗(yàn),。”
動(dòng)態(tài)挑戰(zhàn)
一些規(guī)劃人員認(rèn)為many-core系統(tǒng)的未來(lái)是在另一方向:不是將任務(wù)靜態(tài)映射至處理器,而是流動(dòng)的,、虛擬化系統(tǒng),,其中任何線程都可能隨時(shí)占用任何資源,。在這一環(huán)境中,預(yù)測(cè)帶寬需求,、處理負(fù)載甚至是功耗都會(huì)成為很復(fù)雜的任務(wù),。
一家經(jīng)驗(yàn)豐富的many-core系統(tǒng)開(kāi)發(fā)公司內(nèi)部人士評(píng)論說(shuō):“出于這一原因,發(fā)售的很多系統(tǒng)性能都不是太好,。開(kāi)發(fā)人員能夠?qū)ο到y(tǒng)平均帶寬需求進(jìn)行建模,但是,,他們低估了峰值需求,,遇到了無(wú)法預(yù)測(cè)的瓶頸問(wèn)題。使其能夠正常工作的唯一方法是降低系統(tǒng)性能,。”
他繼續(xù)解釋說(shuō):“很難預(yù)測(cè)這些系統(tǒng)中的總線競(jìng)爭(zhēng)或者峰值帶寬,。設(shè)計(jì)人員一般甚至都不會(huì)進(jìn)行嘗試;他們只是盡量做好總線和外部存儲(chǔ)器配置,。他們?cè)O(shè)計(jì),,測(cè)試,并不斷重復(fù),。”
這種不確定性意味著,,在工程開(kāi)始時(shí),如果缺少工作參考設(shè)計(jì),,則無(wú)法知道某一many-coreSoC是否能夠滿足一些特殊的要求,。解決的唯一方法是為系統(tǒng)提供過(guò)多的資源,使得資源競(jìng)爭(zhēng)不會(huì)超出能夠使用的資源范圍,。
這樣做必然的結(jié)果就是增大了功耗,。如果不能提前預(yù)測(cè)哪些處理器會(huì)全速運(yùn)行,哪些會(huì)降速工作,,哪些會(huì)在某些時(shí)刻關(guān)斷,,那么,很難估算SoC和DRAM的功耗或者溫度,。Thieret認(rèn)為:“很難預(yù)測(cè)功耗,。總功耗等數(shù)據(jù)指標(biāo)幾乎與系統(tǒng)中的實(shí)際功耗不相干,。您最好的做法是借鑒以前工程的經(jīng)驗(yàn),,進(jìn)行大量的測(cè)試。在FPGA行業(yè)以外,,還沒(méi)有很好的工具來(lái)進(jìn)行早期功耗估算,。”
誰(shuí)在控制?
如果理解了many-coreSoC的性能和功耗是很大的挑戰(zhàn),那么,,也就知道這些芯片的系統(tǒng)控制同樣是棘手的問(wèn)題,。與前兩個(gè)問(wèn)題不同,,對(duì)于異構(gòu)、靜態(tài)映射的系統(tǒng),,系統(tǒng)控制并不那么簡(jiǎn)單,。也不能通過(guò)過(guò)度設(shè)計(jì)來(lái)解決這一問(wèn)題。Thieret提醒說(shuō):“系統(tǒng)控制是一個(gè)基本問(wèn)題,,隨著處理器數(shù)量的增加,,會(huì)越來(lái)越復(fù)雜。但是,,您必須解決這一問(wèn)題,。”
最基本的難點(diǎn)在于將不同處理器中的任務(wù)與外部異步事件同步,例如,,中斷,、調(diào)試信號(hào)或者掉電等。即使是以清晰數(shù)據(jù)流模型為主的靜態(tài)系統(tǒng),,如果需要對(duì)某一處理器中的任務(wù)進(jìn)行中斷,,以響應(yīng)某一事件,那么,,也很難弄清楚應(yīng)該啟動(dòng),、暫停或者重新同步哪些任務(wù),。
在同構(gòu)虛擬系統(tǒng)中,,只有系統(tǒng)管理程序知道某一任務(wù)所在的位置,幾乎不可能在正確的地方及時(shí)執(zhí)行中斷,,在嵌入式操作系統(tǒng)中,,會(huì)很難完成這一過(guò)程。系統(tǒng)設(shè)計(jì)人員可能要考慮中斷的替代方案,,例如,,讓一個(gè)處理器專(zhuān)門(mén)用于輪詢外部事件,或者使用中斷信號(hào)來(lái)啟動(dòng)新服務(wù)線程,,而不是中斷現(xiàn)有線程,。這些方法都不能很好的解決SoC內(nèi)部和外部之間復(fù)雜的仲裁問(wèn)題。
初始化和關(guān)斷是同樣的難題,。只是停止所有處理器上的所有線程,,并不是一種好選擇,這可能會(huì)破壞數(shù)據(jù)結(jié)構(gòu),,或者使得受控機(jī)處于危險(xiǎn)狀態(tài)中,。在出現(xiàn)電源完全失效等情況時(shí),也會(huì)很難理解系統(tǒng)是怎樣工作的,。一開(kāi)始就會(huì)很難,。一些設(shè)計(jì)團(tuán)隊(duì)已經(jīng)證實(shí),,能夠設(shè)計(jì)無(wú)法初始化的芯片。一些設(shè)計(jì)支持有序啟動(dòng),,但是不在系統(tǒng)要求的時(shí)間范圍內(nèi),。Thieret看到:“不同的應(yīng)用有不同的需求。有時(shí)候,,您有一個(gè)小時(shí)的重新啟動(dòng)時(shí)間,,而有時(shí)候,只有四秒的時(shí)間,。” Many-core計(jì)算的前景很直觀:這是摩爾定律向前發(fā)展的唯一途徑,。而采用many-core SoC來(lái)實(shí)際實(shí)現(xiàn)系統(tǒng)時(shí),在系統(tǒng)理解,、估算、配置和控制等方面會(huì)帶來(lái)很多新問(wèn)題,。SoC設(shè)計(jì)人員和系統(tǒng)設(shè)計(jì)人員一般通過(guò)參考設(shè)計(jì)來(lái)互相理解,,這樣才能夠推動(dòng)向前發(fā)展。
本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章,、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無(wú)法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容,、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)通過(guò)電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118,;郵箱:[email protected],。