利用高效的編程技術(shù)發(fā)揮多內(nèi)核架構(gòu)優(yōu)勢(shì)
從某種角度看,Larrabee有點(diǎn)類似于IBM的Cell處理器。Larrabee內(nèi)核只有32KB的一級(jí)緩存和256KB的二級(jí)緩存可以訪問。如果數(shù)據(jù)不在緩存中,必須從內(nèi)存控制器或系統(tǒng)中的另一個(gè)緩存中申請(qǐng),然后數(shù)據(jù)被放進(jìn)內(nèi)核的緩存中,再由應(yīng)用程序繼續(xù)處理。
環(huán)形總線用于內(nèi)核和控制器之間的通信。IBM的Cell單元互連總線(EIB)也是一種環(huán)形總線,連接著 SPE和內(nèi)存控制器以及外設(shè)接口。從編程角度看,Larabee的緩存和Cell的SRAM有很大的差異。誠然,對(duì)編程人員來說,Larrabee看起來更像是一組連貫緩存的x86處理器。由于其GPU定位,編程人員可以充分利用它對(duì)DirectX和OpenGL的支持。
多內(nèi)核聯(lián)網(wǎng)
多內(nèi)核芯片也是網(wǎng)絡(luò)基礎(chǔ)設(shè)施中的常見元件。處理10Gps的網(wǎng)絡(luò)對(duì)多內(nèi)核芯片來說本身就是很大的挑戰(zhàn)。分析和處理來自線速網(wǎng)絡(luò)連接的數(shù)據(jù)需要大量的處理資源。
Netronome的NFP-3200網(wǎng)絡(luò)流量處理器包含40個(gè)1.4GHz的內(nèi)核,每個(gè)內(nèi)核可以運(yùn)行8個(gè)線程,因此1個(gè)芯片總共可提供320個(gè)基于硬件的線程。這個(gè)數(shù)量級(jí)與GPU相同,但這些處理器主要用于數(shù)據(jù)包處理。
與IBM的Cell一樣,NFP-3200也有一個(gè)主CPU型控制器,而且是一個(gè)ARM11內(nèi)核。NFP-3200的40個(gè)內(nèi)核也叫做微引擎,兼容Intel的IXP28xx架構(gòu),主要用于網(wǎng)絡(luò)處理。這種兼容性很重要,因?yàn)榇罅看a是針對(duì)這種架構(gòu)開發(fā)的。較老的芯片具有較少的內(nèi)核,因此在某種意義上NFP-3200提供的是相同解決方案。
當(dāng)然,為解決問題而簡(jiǎn)單地采用更多的內(nèi)核只是其中一種措施。Netronome作了大量改進(jìn),例如支持TCP任務(wù)卸載的增強(qiáng)型微模塊。互連速度也更高了,內(nèi)核之間的運(yùn)行速度高達(dá)44Gbps。
Netronome芯片擁有大量的專用處理器,其中包括了用于處理各種安全協(xié)議的加密系統(tǒng)。Netronome的PCI Express接口支持x86處理器經(jīng)常使用的I/O虛擬化功能。它能被移動(dòng)到NFP-3200旁邊,而不是被另外一條網(wǎng)絡(luò)鏈路隔開。
與其它多內(nèi)核芯片相比,編程N(yùn)FP-3200通常沒有太大問題,因?yàn)獒槍?duì)IXP28xx系列有大量現(xiàn)成代碼。另外,Netronome提供庫,這使得網(wǎng)絡(luò)處理應(yīng)用程序的創(chuàng)建更像是模塊的堆疊。
Cavium的Octeon II是一種更傳統(tǒng)的SMP多內(nèi)核設(shè)計(jì),有2到6個(gè)64位 MIPS64內(nèi)核,它們通過一個(gè)交叉開關(guān)相連。與Netronome芯片一樣,Octeon II是針對(duì)網(wǎng)絡(luò)和存儲(chǔ)設(shè)備設(shè)計(jì)的。
Octeon II還有一個(gè)RAID 5/6加速器以及用于數(shù)據(jù)包檢查的正則表達(dá)式超有限時(shí)序機(jī)(HFA)。編程Octeon II與編程大多數(shù)SMP系統(tǒng)相仿。Octeon II可以運(yùn)行諸如Linux的操作系統(tǒng)。
其它多內(nèi)核架構(gòu)
采用更激進(jìn)的多內(nèi)核架構(gòu)會(huì)增加編程事務(wù),但它能為開發(fā)人員開啟利用新架構(gòu)的機(jī)會(huì)。IntellaSys的SeaFORTH 40C18就屬于這種類型(圖6)。它本身的編程語言是VentrueForth,指令長度實(shí)際上是5位,4個(gè)指令可以壓縮為單個(gè)18位的字(一個(gè)指令只有3位長)。40C18有40個(gè)內(nèi)核,它們有相同的處理單元,并且都有64個(gè)字的RAM和64個(gè)字的ROM。
與具有更多存儲(chǔ)空間的芯片(如Intel的Larrabee或IBM的Cell)相比,對(duì)40C18進(jìn)行編程顯然有很大的區(qū)別。40C18內(nèi)核的功耗不到9mW,而其它兩種芯片在沒有大散熱器或風(fēng)扇的情況下都無法正常工作。40C18設(shè)計(jì)用于嵌入式甚至移動(dòng)應(yīng)用。
對(duì)大多數(shù)開發(fā)人員來說,對(duì)40C18進(jìn)行編程將是不同的體驗(yàn),這不僅因?yàn)镕orth是編程語言。每個(gè)內(nèi)核的小內(nèi)存容量和矩陣互連改變了程序設(shè)計(jì)方法。內(nèi)核通常運(yùn)行將數(shù)據(jù)傳送到一個(gè)或多個(gè)相鄰內(nèi)核的小型函數(shù),因此協(xié)同編程將是大勢(shì)所趨。
即使外部存儲(chǔ)器訪問也要求三個(gè)內(nèi)核一起工作,當(dāng)有許多內(nèi)核可以一起工作時(shí)這種方法很管用。40C18還有一種獨(dú)特的能力,它能將4個(gè)指令組成的小程序用一個(gè)字發(fā)送給相鄰內(nèi)核執(zhí)行,因此就有足夠的空間執(zhí)行塊傳送。
XMOS公司的XS1-G4是一種基于32位整數(shù)Xcores的有趣混合產(chǎn)品。每個(gè)Xcore可以處理大量不同的線程,同時(shí)還有一個(gè)基于硬件的事件系統(tǒng)幫助XMOS的軟外設(shè)。與40C18一樣,XS1-G4可以在I/O端口上等待。區(qū)別是XS1-G4處理多個(gè)線程,而IntellaSys芯片處理單個(gè)線程。
開發(fā)人員可以使用C語言的擴(kuò)展版本XC發(fā)揮XMOS硬件的最大功效。C語言擴(kuò)展提供了到硬件支持的快捷路徑,其中也包括Xlinks。Xlinks連接芯片中的4個(gè)內(nèi)核,并提供4個(gè)片外鏈路,因此可以連接多個(gè)芯片。芯片內(nèi)部使用一個(gè)開關(guān)用于Xlink連接,但硬件和軟件為處理器間通信提供統(tǒng)一接口。
每個(gè)內(nèi)核有64KB的內(nèi)存,這個(gè)容量比40C18大,但比本文提到的一些更高性能的芯片的內(nèi)存容量小。同樣,對(duì)大部分應(yīng)用代碼來說這個(gè)容量是足夠用的,并且允許使用更傳統(tǒng)的線程方法進(jìn)行編程。針對(duì)XMOS芯片的大部分編程工作很可能用傳統(tǒng)的C或C++完成,而不是用XC,后者更傾向用于通信和外設(shè)處理。
XS1-G4不會(huì)向雙精度浮點(diǎn)GPU或其它高端系統(tǒng)提出挑戰(zhàn),但它的整數(shù)和定點(diǎn)DSP支持使得它適用于其它許多音頻和視頻處理功能。鏈接好的XMOS芯片早已在內(nèi)部用來驅(qū)動(dòng)多個(gè)大屏幕LCD。
多內(nèi)核架構(gòu)還將繼續(xù)保持高速發(fā)展。高效地對(duì)這些內(nèi)核進(jìn)行編程和選擇合適的產(chǎn)品并不容易,但它會(huì)變得越來越普及,即使是對(duì)嵌入式開發(fā)人員而言。傳統(tǒng)應(yīng)用程序?qū)⒉粩嗟匾浦驳狡ヅ洮F(xiàn)有主機(jī)的架構(gòu)上。當(dāng)應(yīng)用程序被重新設(shè)計(jì)或從頭創(chuàng)建時(shí),也許會(huì)有更好的方案產(chǎn)生。
評(píng)論