存儲(chǔ)器體系結(jié)構(gòu)的未來(lái)發(fā)展趨勢(shì)
曾經(jīng)在斯坦福大學(xué)舉辦的熱點(diǎn)芯片大會(huì)上,尋求帶寬成為論文討論的主題,設(shè)計(jì)人員介紹了很多方法來(lái)解決所面臨的挑戰(zhàn)。從這些文章中,以及從現(xiàn)場(chǎng)工作的設(shè)計(jì)人員的經(jīng)驗(yàn)中,可以大概看出存儲(chǔ)器系統(tǒng)體系結(jié)構(gòu)今后會(huì)怎樣發(fā)展。
存儲(chǔ)器壁壘
基本問(wèn)題很明顯:現(xiàn)代SoC時(shí)鐘頻率高達(dá)吉赫茲,并且具有多個(gè)內(nèi)核,與單通道DDR DRAM相比,每秒會(huì)發(fā)出更多的存儲(chǔ)器申請(qǐng)。僅僅如此的話,會(huì)有很顯然的方案來(lái)解決這一問(wèn)題。但是,這背后還有重要的精細(xì)結(jié)構(gòu),使得這一問(wèn)題非常復(fù)雜,導(dǎo)致有各種各樣的解決辦法。
SoC開(kāi)發(fā)人員關(guān)注的重點(diǎn)從高速時(shí)鐘轉(zhuǎn)向多個(gè)內(nèi)核,這從根本上改變了存儲(chǔ)器問(wèn)題。不再是要求一個(gè)CPU每秒有更高的兆字節(jié)(MBps),現(xiàn)在,我們面臨很多不同的處理器——經(jīng)常是很多不同類型的處理器,都要求同時(shí)進(jìn)行訪問(wèn)。而且,存儲(chǔ)器訪問(wèn)的主要模式發(fā)生了變化??茖W(xué)和商業(yè)數(shù)據(jù)處理任務(wù)通常涉及到大量的局部訪問(wèn),或者更糟糕的是采用相對(duì)緊湊的算法很慢的傳送大量的數(shù)據(jù)。配置適度規(guī)模的本地SRAM或者高速緩存,這類任務(wù)的一個(gè)CPU對(duì)主存儲(chǔ)器的需求并不高。
DRAM芯片設(shè)計(jì)人員利用了這種易用性,以便實(shí)現(xiàn)更高的密度和能效。相應(yīng)的,以可預(yù)測(cè)的順序申請(qǐng)大塊數(shù)據(jù)時(shí),DRAM實(shí)現(xiàn)了最佳比特率——它允許塊間插。如果SoC不采用這種常用模式,存儲(chǔ)器系統(tǒng)的有效帶寬會(huì)降低一個(gè)數(shù)量級(jí)。
新的訪問(wèn)模式
不好的是,SoC的發(fā)展使得DRAM設(shè)計(jì)人員的假設(shè)難以實(shí)現(xiàn)。多線程以及軟件設(shè)計(jì)新出現(xiàn)的趨勢(shì)改變了每一內(nèi)核訪問(wèn)存儲(chǔ)器的方式。多核處理以及越來(lái)越重要的硬件加速意味著很多硬件要競(jìng)爭(zhēng)使用主存儲(chǔ)器。這些趨勢(shì)使得簡(jiǎn)單的局部訪問(wèn)變得復(fù)雜,DRAM帶寬與此有關(guān)。
多線程意味著,當(dāng)一個(gè)存儲(chǔ)器申請(qǐng)錯(cuò)過(guò)其高速緩存時(shí),CPU不會(huì)等待:它開(kāi)始執(zhí)行不同的線程,其指令和數(shù)據(jù)區(qū)會(huì)在與前面線程完全不同的物理存儲(chǔ)區(qū)中。仔細(xì)的多路高速緩存設(shè)計(jì)有助于解決這一問(wèn)題,但是最終,連續(xù)DRAM申請(qǐng)仍然很有可能去訪問(wèn)不相關(guān)的存儲(chǔ)區(qū),即使每一線程都仔細(xì)的優(yōu)化了其存儲(chǔ)器組織。相似的,競(jìng)爭(zhēng)同一DRAM通道的多個(gè)內(nèi)核也會(huì)擾亂DRAM訪問(wèn)順序。
軟件中的變化也會(huì)產(chǎn)生影響。表查找和鏈接表處理會(huì)對(duì)大數(shù)據(jù)結(jié)構(gòu)產(chǎn)生隨機(jī)分散存儲(chǔ)器訪問(wèn)。數(shù)據(jù)包處理和大數(shù)據(jù)算法將這些任務(wù)從控制代碼轉(zhuǎn)移到大批量數(shù)據(jù)處理流程,系統(tǒng)設(shè)計(jì)人員不得不專門考慮怎樣高效的處理它們。虛擬化把很多虛擬機(jī)放到同一物理內(nèi)核中,使得存儲(chǔ)器數(shù)據(jù)流更加復(fù)雜。
傳統(tǒng)的解決方案
這些問(wèn)題并不是什么新問(wèn)題——只是變復(fù)雜了。因此,芯片和系統(tǒng)設(shè)計(jì)人員有很多成熟的方法來(lái)滿足越來(lái)越高的基帶帶寬需求,提高DRAM的訪問(wèn)效率。這些方法包括軟件優(yōu)化、高速緩存以及部署DRAM多個(gè)通道等。
大部分嵌入式系統(tǒng)設(shè)計(jì)人員習(xí)慣于首先會(huì)想到軟件優(yōu)化。在單線程系統(tǒng)中,軟件在很大程度上過(guò)度使用了存儲(chǔ)器通道,能耗較高。但是在多線程、多核系統(tǒng)中,軟件開(kāi)發(fā)人員對(duì)DRAM控制器上的實(shí)際事件順序的影響很小。一些經(jīng)驗(yàn)表明,他們很難改變實(shí)際運(yùn)行時(shí)數(shù)據(jù)流模式。DRAM控制器可以使用重新排序和公平算法,編程人員對(duì)此并不清楚。
高速緩存的效率會(huì)更高——如果高速緩存足夠大,能夠顯著減少DRAM數(shù)據(jù)流。例如,在嵌入式多核實(shí)現(xiàn)中,相對(duì)較小的L1指令高速緩存與規(guī)模適度的L2一同工作,能夠完全容納所有線程的熱點(diǎn)代碼,有效的減少了對(duì)主存儲(chǔ)器的指令獲取數(shù)據(jù)流。相似的,在信號(hào)處理應(yīng)用中,把相對(duì)較少的數(shù)據(jù)適配到L2或者本地SRAM中,可以去掉濾波器內(nèi)核負(fù)載。要產(chǎn)生較大的影響,高速緩存不一定要實(shí)際減少DRAM申請(qǐng)總數(shù)量——只需要保護(hù)主要申請(qǐng)?jiān)床槐黄渌蝿?wù)中斷,因此,編程人員能夠優(yōu)化主要任務(wù)。
當(dāng)芯片設(shè)計(jì)人員無(wú)法確定將要運(yùn)行在SoC中的各種任務(wù)時(shí),則傾向于只要成本允許,提供盡可能多的高速緩存:所有CPU內(nèi)核和加速器的L1高速緩存、大規(guī)模共享L2,以及越來(lái)越大的管芯L3.在熱點(diǎn)芯片大會(huì)上,從平板電腦級(jí)應(yīng)用處理器到大量的服務(wù)器SoC,有很多高速緩存的實(shí)例。
在低端,AMD的Kabini SoC (圖1)就是很有趣的研究。AMD資深研究員Dan Bouvier介紹了這一芯片,它包括四個(gè)Jaguar CPU內(nèi)核,共享了2兆字節(jié)(MB) L2高速緩存,而每個(gè)Jaguars有32千字節(jié)(KB)指令和數(shù)據(jù)高速緩存——并不是非傳統(tǒng)的協(xié)議。更驚奇的是芯片的圖形處理器,除了常用的顏色高速緩存以及用于渲染引擎的Z緩沖,還有它自己的L1指令高速緩存和128 KB L2.
圖1.AMD的Kabini SoC目標(biāo)應(yīng)用是平板電腦,但是仍然采用了大規(guī)模高速緩存,顯著提高了存儲(chǔ)器帶寬。
而在高端則是IBM的POWER8微處理器(圖2),IBM首席網(wǎng)絡(luò)設(shè)計(jì)師Jeff Stuecheli介紹了這一款芯片。這一650 mm2、22 nm芯片包括12個(gè)POWER體系結(jié)構(gòu)CPU內(nèi)核,每個(gè)都有32 KB指令和64 KB數(shù)據(jù)高速緩存。每個(gè)內(nèi)核還有自己512 KB的SRAM L2高速緩存,12 L2共享大容量96 MB的嵌入式DRAM L3.Stuecheli介紹說(shuō),三級(jí)連續(xù)高速緩存支持每秒230吉字節(jié)(GBps)的存儲(chǔ)器總帶寬。有趣的是,芯片還含有一個(gè)小容量會(huì)話存儲(chǔ)器。
圖2.IBM的POWER8體系結(jié)構(gòu)在SoC管芯上實(shí)現(xiàn)了三級(jí)高速緩存。
在這兩個(gè)SoC之間是為微軟的XBOX One提供的多管芯模塊(圖3),微軟的John Snell在大會(huì)上對(duì)此進(jìn)行了介紹。模塊含有一個(gè)SoC管芯,提供了豐富的存儲(chǔ)器資源。SoC有8個(gè)AMD Jaguar內(nèi)核,分成兩組,每組4個(gè)。每一內(nèi)核有32 KB的L1指令和數(shù)據(jù)高速緩存。每4個(gè)一組的CPU內(nèi)核共享一個(gè)2 MB L2.此外,管芯上還有4個(gè)8 MB共享SRAM,它們至少為CPU提供了109 GBps的帶寬。
圖3.微軟的XBOX One結(jié)合了大容量高速緩存、本地SRAM以及模塊內(nèi)DRAM,以低成本實(shí)現(xiàn)了更大的帶寬。