系統(tǒng)的性能瓶頸是內(nèi)存?在“內(nèi)存墻”的困擾中尋找出路
難以置信?那就讓我們揭開內(nèi)存及其相關(guān)技術(shù)的面紗,好好看清內(nèi)存發(fā)展的本質(zhì)吧。
由于處理器廠商與內(nèi)存廠商相互分離的產(chǎn)業(yè)格局,導(dǎo)致了內(nèi)存技術(shù)與處理器技術(shù)發(fā)展的不同步。在過去的20多年中,處理器的性能以每年大約55%速度快速提升,而內(nèi)存性能的提升速度則只有每年10%左右。長期累積下來,不均衡的發(fā)展速度造成了當(dāng)前內(nèi)存的存取速度嚴(yán)重滯后于處理器的計(jì)算速度,內(nèi)存瓶頸導(dǎo)致高性能處理器難以發(fā)揮出應(yīng)有的功效,這對(duì)日益增長的高性能計(jì)算
(High Performance Computing,HPC)形成了極大的制約。事實(shí)上,早在1994年就有科學(xué)家分析和預(yù)測了這一問題,并將這種嚴(yán)重阻礙處理器性能發(fā)揮的內(nèi)存瓶頸命名為"內(nèi)存墻"(Memory Wall)。
多核處理器的“內(nèi)存墻”問題日趨嚴(yán)重
當(dāng)處理器廠商意識(shí)到單純依靠提高處理器頻率并不能持續(xù)提升計(jì)算性能時(shí),便把目光轉(zhuǎn)向了利用多核心并行計(jì)算技術(shù)來提升計(jì)算性能,同時(shí)也希望該技術(shù)能緩解內(nèi)存瓶頸。
但處理器核心越多,性能就越高嗎?實(shí)際情況并沒有那么簡單,除了如何有效地給多核心分配任務(wù)這一難題之外(核心越多,任務(wù)分配的難度越大),多核心并行計(jì)算還遭遇到了更為嚴(yán)重的“內(nèi)存墻”問題。這是因?yàn)樵诟叨炔⑿械奶幚矸绞较拢嗪诵墓蚕碛邢薜膬?nèi)存帶寬將會(huì)造成更大的延遲,就好像一條高速公路只有4條道,卻有4輛以上的車要并列行駛,當(dāng)然會(huì)造成道路擁堵、行駛緩慢了。
SNL的多核處理器性能仿真測試結(jié)果
美國桑迪亞國家實(shí)驗(yàn)室(Sandia National Laboratories,SNL)所進(jìn)行的一項(xiàng)多核處理器性能仿真測試也正好驗(yàn)證了上述問題,SNL研究人員在一篇題為《多核對(duì)超級(jí)計(jì)算機(jī)是一個(gè)壞消息》的文章中指出:在信息科學(xué)領(lǐng)域,更多核心的處理器并不一定會(huì)帶來更高的處理性能。SNL的仿真測試結(jié)果表明:由于“內(nèi)存墻”的制約,超過8核心之后,處理器性能幾乎沒有提升,而16核處理器的性能甚至不升反降。由此可見,隨著處理器核心的不斷增多、處理性能的不斷提升,“內(nèi)存墻”產(chǎn)生的瓶頸效應(yīng)對(duì)基于多核處理器的高性能計(jì)算的制約將日趨嚴(yán)重。
好在認(rèn)識(shí)到“內(nèi)存墻”問題的嚴(yán)重性之后,處理器和內(nèi)存廠商就一直在嘗試解決“內(nèi)存墻”的問題,并且已經(jīng)找到了不少行之有效的方法。
降低“內(nèi)存墻”影響的兩條基本途徑
內(nèi)存的性能指標(biāo)主要有“帶寬”(Bandwidth)和“等待時(shí)間”(Latency),從這兩項(xiàng)指標(biāo)的基本概念出發(fā),更便于我們理解與“內(nèi)存墻”問題相關(guān)的技術(shù)發(fā)展。
1.內(nèi)存帶寬及其提升技術(shù)
內(nèi)存帶寬(Bandwidth)指內(nèi)存在單位時(shí)間內(nèi)通過總線傳輸?shù)臄?shù)據(jù)量,可以用公式“內(nèi)存帶寬=(傳輸倍率×總線位寬×工作頻率)÷8”進(jìn)行計(jì)算,單位為“字節(jié)/秒”(Byte/s)。總線位寬指內(nèi)存數(shù)據(jù)總線的位數(shù),工作頻率也就是內(nèi)存的時(shí)鐘頻率,傳輸倍率是指每條內(nèi)存數(shù)據(jù)線在一個(gè)時(shí)鐘脈沖周期內(nèi)傳輸數(shù)據(jù)的次數(shù)。顯然,提高內(nèi)存帶寬的基本方法當(dāng)就是公式中決定內(nèi)存帶寬的三個(gè)因素,即總線位寬、工作頻率和傳輸倍率。
提高內(nèi)存總線位寬:在現(xiàn)有采用獨(dú)立內(nèi)存芯片的架構(gòu)下,進(jìn)一步增加內(nèi)存位寬受到了內(nèi)存芯片數(shù)據(jù)線引腳數(shù)量的限制,所以通過增加位寬來提升內(nèi)存帶寬的方式,需要采用能有效消除這種引腳限制的新型內(nèi)存架構(gòu)。例如受到廣泛關(guān)注的“內(nèi)存與處理器集成”技術(shù),就具有通過增加內(nèi)存位寬來明顯提升內(nèi)存帶寬的特點(diǎn)。
提高內(nèi)存工作頻率:單純依靠提高工作頻率來提升內(nèi)存帶寬的方法,會(huì)受到內(nèi)存芯片發(fā)熱量和工藝難度增加等方面的制約,所以采用這種方法進(jìn)一步提高內(nèi)存帶寬的空間非常有限。
提高內(nèi)存?zhèn)鬏敱堵剩?/strong>通過增加傳輸倍率來提升內(nèi)存帶寬的方法對(duì)大家來說更為熟悉。例如DDR內(nèi)存是雙倍數(shù)據(jù)率(Double Data Rate),其每條數(shù)據(jù)線都能夠從存儲(chǔ)單元預(yù)取2位數(shù)據(jù),并分別在時(shí)鐘脈沖的上升沿和下降沿各傳輸1位數(shù)據(jù),即在一個(gè)時(shí)鐘周期的傳輸倍率為2,在相同頻率下DDR內(nèi)存的數(shù)據(jù)傳輸量是SDRAM內(nèi)存的2倍。同理,DDR2內(nèi)存、DDR3內(nèi)存的傳輸倍率分別為4、8,而Rambus的“百萬兆字節(jié)帶寬”技術(shù)則可將傳輸倍率提高到32,從而大幅度提升內(nèi)存的帶寬。