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