記憶體牆

記憶體牆

記憶體牆,指的是記憶體性能嚴重限制CPU性能發揮的現象。記憶體的性能指標主要有“頻寬”(Bandwidth)和“等待時間”(Latency)。

背景

提到系統的性能瓶頸,也許大家最先想到的是硬碟,但你知道記憶體同樣也是系統中的性能“短板”嗎?由於處理器廠商與記憶體廠商相互分離的產業格局,導致了記憶體技術與處理器技術發展的不同步。在過去的20多年中,處理器的性能以每年大約55%速度快速提升,而記憶體性能的提升速度則只有每年10%左右。長期累積下來,不均衡的發展速度造成了當前記憶體的存取速度嚴重滯後於處理器的計算速度,記憶體瓶頸導致高性能處理器難以發揮出應有的功效,這對日益增長的高性能計算(High Performance Computing,HPC)形成了極大的制約。事實上,早在1994年就有科學家分析和預測了這一問題,並將這種嚴重阻礙處理器性能發揮的記憶體瓶頸命名為"記憶體牆"(Memory Wall)。

面臨問題

當處理器廠商意識到單純依靠提高處理器頻率並不能持續提升計算性能時,便把目光轉向了利用多核心並行計算技術來提升計算性能,同時也希望該技術能緩解記憶體瓶頸。 但處理器核心越多,性能就越高嗎?實際情況並沒有那么簡單,除了如何有效地給多核心分配任務這一難題之外(核心越多,任務分配的難度越大),多核心並行計算還遭遇到了更為嚴重的“記憶體牆”問題。這是因為在高度並行的處理方式下,多核心共享有限的記憶體頻寬將會造成更大的延遲,就好像一條高速公路只有4條道,卻有4輛以上的車要並列行駛,當然會造成道路擁堵、行駛緩慢了。

美國桑迪亞國家實驗室(Sandia National Laboratories,SNL)所進行的一項多核處理器性能仿真測試也正好驗證了上述問題,SNL研究人員在一篇題為《多核對超級計算機是一個壞訊息》的文章中指出:在信息科學領域,更多核心的處理器並不一定會帶來更高的處理性能。SNL的仿真測試結果表明:由於“記憶體牆”的制約,超過8核心之後,處理器性能幾乎沒有提升,而16核處理器的性能甚至不升反降。由此可見,隨著處理器核心的不斷增多、處理性能的不斷提升,“記憶體牆”產生的瓶頸效應對基於多核處理器的高性能計算的制約將日趨嚴重。

解決途徑

記憶體的性能指標主要有“頻寬”(Bandwidth)和“等待時間”(Latency),從這兩項指標的基本概念出發,更便於我們理解與“記憶體牆”問題相關的技術發展。

記憶體頻寬及其提升技術

記憶體頻寬(Bandwidth)指記憶體在單位時間內通過匯流排傳輸的數據量,可以用公式“記憶體頻寬=(傳輸倍率×匯流排位寬×工作頻率)÷8”進行計算,單位為“位元組/秒”(Byte/s)。匯流排位寬指記憶體數據匯流排的位數,工作頻率也就是記憶體的時鐘頻率,傳輸倍率是指每條記憶體數據線在一個時鐘脈衝周期內傳輸數據的次數。顯然,提高記憶體頻寬的基本方法當就是公式中決定記憶體頻寬的三個因素,即匯流排位寬、工作頻率和傳輸倍率。

提高記憶體匯流排位寬:在現有採用獨立記憶體晶片的架構下,進一步增加記憶體位寬受到了記憶體晶片數據線引腳數量的限制,所以通過增加位寬來提升記憶體頻寬的方式,需要採用能有效消除這種引腳限制的新型記憶體架構。例如受到廣泛關注的“記憶體與處理器集成”技術,就具有通過增加記憶體位寬來明顯提升記憶體頻寬的特點。

提高記憶體工作頻率:單純依靠提高工作頻率來提升記憶體頻寬的方法,會受到記憶體晶片發熱量和工藝難度增加等方面的制約,所以採用這種方法進一步提高記憶體頻寬的空間非常有限。

提高記憶體傳輸倍率:通過增加傳輸倍率來提升記憶體頻寬的方法對大家來說更為熟悉。例如DDR記憶體是雙倍數據率(Double Data Rate),其每條數據線都能夠從存儲單元預取2位數據,並分別在時鐘脈衝的上升沿和下降沿各傳輸1位數據,即在一個時鐘周期的傳輸倍率為2,在相同頻率下DDR記憶體的數據傳輸量是SDRAM記憶體的2倍。同理,DDR2記憶體、DDR3記憶體的傳輸倍率分別為4、8,而Rambus的“百萬兆位元組頻寬”技術則可將傳輸倍率提高到32,從而大幅度提升記憶體的頻寬。

記憶體等待時間及其禁止技術

記憶體等待時間(Latency),即從處理器向記憶體發出訪問請求到記憶體發出數據所用的時間,一般用“納秒”(ns)來度量。相對於處理器的高速處理能力而言,記憶體等待時間顯得過長,在現有記憶體技術還不能從根本上大幅度降低等待時間的情況下,利用高速快取技術和並行處理技術來儘量降低“記憶體牆”的影響目前仍然是有效的方法。

記憶體等待時間禁止技術:將處理器可能訪問的數據和程式代碼預先保存到高速快取中,儘可能地減少處理器對記憶體的直接訪問,而是從高速的快取中獲取數據,就是一種典型的記憶體等待時間禁止(Latency Hiding)技術。這種基於快取機制的技術一直是降低“記憶體牆”影響的常規方法。

硬體支持的並行處理技術:雖然由硬體支持的多執行緒、亂序執行等並行處理技術並不能直接解決“記憶體牆”問題,但多執行緒和亂序執行的並行處理機制,能夠更有效地減少在處理任務過程中處理器資源被閒置的情況,當處理器處理大量任務時其“資源不被閒置”所產生的累積效應,就能使吞吐量明顯增加,因此整體的處理效率就相應地有所提升,從而在一定程度上禁止了“記憶體牆”的影響。

更先進的記憶體與處理器集成技術

相比上述單純降低記憶體等待時間和提升記憶體頻寬的現有技術,業界還致力於研究更加先進的記憶體與處理器集成技術。這類技術中最有代表性的就是“在記憶體中處理”(Processingin Memory,PIM),其基本思路是將記憶體與多核處理器集成到同一顆晶片中。此外,“智慧型隨機存取存儲器”(Intelligent Random Access Memory,IRAM)和“嵌入式動態隨機存儲器”(Embedded Dynamic Random Access Memory,EDRAM)技術也是基於將記憶體與處理器集成的原理。

PIM技術的優勢主要體現在兩個方面:一是能夠有效降低記憶體等待時間,由於處理器各核心與記憶體之間的物理距離明顯縮短,核心訪問記憶體的等待時間也隨之被有效減少,即由原來的晶片間延時變為晶片內延時;二是具有提升記憶體頻寬的潛力,傳統的獨立式記憶體架構由於受到記憶體晶片引腳數目的限制,難以通過採用增加數據線引腳來提高記憶體的位寬,而PIM技術則能使核心與記憶體在同一晶片內部建立更寬的數據傳輸通道,沒有引腳的限制,因而更容易通過增加位寬來提升記憶體頻寬。

理論計算表明,PIM技術所具有的這些特點,將有可能使記憶體的反應時間降低5~10倍,頻寬提升50~100倍,能耗降低50%~75%。目前很多廠商都在研發“三維堆疊晶片”(3D Stacking Chip)封裝技術,以最終製造出基於3D堆疊的PIM晶片。

例如桑迪亞國家實驗室(SNL)研發的X-Caliber處理器,就是將DRAM記憶體堆疊在多核處理器邏輯電路層上的PIM晶片,其性能可隨核心數量的不斷增加呈現上升的平穩趨勢。不過,3D堆疊晶片封裝技術目前面臨的一個主要難題是散熱問題,還需要在堆疊方式、散熱、電源和熱管理技術等方面取得進一步的突破。

遠景展望

更多的核心≠更高的性能:由於“記憶體牆”等問題對多核處理器性能提升形成的嚴重阻礙,AMD認為單純依靠增加處理器核心的辦法不可行,Intel也表示在現有發展環境下超過16核心不會明顯提高性能。對於未來處理器性能的提升,Intel比較關注處理器浮點運算能力的增強,而AMD似乎更傾向於採用基於GPU的流處理技術。由此看來,在多核處理器的“記憶體牆”等問題還不能從根本上有所突破的情況下,將不大可能繼續大幅度增加處理器的核心數量來提升處理性能,而需要另闢蹊徑滿足日益增長的對高性能計算的需求。 “將一切多重化”的思路:據報導,美國專家Joseph Ashwood設計了一種全新架構的存儲系統,其最大特點是能夠實現並行存取,存取速度明顯高於現在的串列存取方式存儲器。由於這種新型存儲系統與多核處理器的並行處理機制相適應,故而被稱作“多核存儲器”。雖然“多核存儲器”目前只完成了書面設計,距離實際套用還有很遠,但其思路卻與一些研究人員提出的“將一切多重化”(Multi-Everything)的理論不謀而合,也許“多執行緒”、“多核處理器”、“多核記憶體”等技術的發展軌跡,就是解決“記憶體牆”問題的一種可能途徑。

未來新一代存儲技術的發展:開發基於全新架構和新型器件的存儲器,從而縮小記憶體與處理器性能差距應該是解決“記憶體牆”問題的一種更有效的途徑。例如正在發展的“相變存儲器”(PCM)、“可程式金屬單元存儲器”(PMCM)、“磁性隨機存取存儲器(MRAM)、“鐵電隨機存取存儲器”(FRAM)、“納米管隨機存取存儲器”(NRAM)和“記憶電阻”(Memristor)等新型存儲技術,其中一些非易失存儲器已有望取代目前的快閃記憶體。而隨著技術的進一步發展,某些新型的高速存儲器將有可能最終取代現在的DRAM記憶體。

各種全新計算機構架的研究:迄今為止的計算機系統架構都是基於馮·諾伊曼的“存儲程式原理”,因此根本的解決辦法或許是採用非“馮·諾伊曼”的全新計算機架構。例如“數據流機器”(DFM)、“人工神經網路”(ANN)等均摒棄了存儲程式的原理,因而不再存在“記憶體牆”的問題。

總之,我們從計算機技術的發展歷程中不難看出,科學家很早就意識到了“記憶體牆”問題。針對記憶體頻寬和記憶體等待時間兩大基本途徑,前者的應對方法是採用提高記憶體匯流排位寬和傳輸倍率的技術;後者是採用多級快取和預取、多執行緒和亂序執行等技術;而近期熱門的記憶體與處理器集成技術更徹底地同時最佳化記憶體頻寬和記憶體等待時間。不過,人們對更高性能計算的追求是沒有止境的,在多核處理器性能越來越強的情況下,人們必須突破“記憶體牆”的重重阻礙,找到走向更高性能計算的通途。

相關詞條

相關搜尋

熱門詞條

聯絡我們