內存的存取原理及技術瓶頸
內存作為計算機的重要部件,近幾年發展迅速,從SDRAM到如今的DDR3,內存經歷了多個技術時代。本文就內存的發展簡單講解內存的存儲原理和內存技術發展歲遇到的瓶頸。
內存和顯存被統稱為記憶體(Memory),全名是動態隨機存取記憶體(Dynamic Random Access Memory,DRAM)。基本原理就是利用電容內存儲電荷的多寡來代表0和1,這就是一個二進制位元(bit),內存的最小單位。
DRAM的存儲單元結構圖
DRAM的結構可謂是簡單高效,每一個bit只需要一個晶體管加一個電容。但是電容不可避免的存在漏電現象,如果電荷不足會導致數據出錯,因此電容必須被周期性的刷新(預充電),這也是DRAM的一大特點。而且電容的充放電需要一個過程,刷新頻率不可能無限提升(頻障),這就導致DRAM的頻率很容易達到上限,即便有先進工藝的支持也收效甚微。
“上古”時代的FP/EDO內存,由于半導體工藝的限制,頻率只有25MHz/50MHz,自SDR以后頻率從66MHz一路飆升至133MHz,終于遇到了難以逾越的障礙。此后所誕生的DDR1/2/3系列,它們存儲單元官方頻率(JEDEC制定)始終在100MHz-200MHz之間徘徊,非官方(超頻)頻率也頂多在250MHz左右,很難突破300MHz。事實上高頻內存的出錯率很高、穩定性也得不到保證,除了超頻跑簡單測試外并無實際應用價值。
既然存儲單元的頻率(簡稱內核頻率,也就是電容的刷新頻率)不能無限提升,那么就只有在I/O(輸入輸出)方面做文章,通過改進I/O單元,這就誕生了DDR1/2/3、GDDR1/2/3/4/5等形形色色的內存種類。
通常大家所說的DDR-400、DDR2-800、DDR3-1600等,其實并非是內存的真正頻率,而是業界約定俗成的等效頻率,這些DDR1/2/3內存相當于老牌SDR內存運行在400MHz、800MHz、1600MHz時的帶寬,因此頻率看上去很夸張,其實真正的內核頻率都只有200MHz而已!
內存有三種不同的頻率指標,它們分別是核心頻率、時鐘頻率和有效數據傳輸頻率。核心頻率即為內存Cell陣列(Memory Cell Array,即內部電容)的刷新頻率,它是內存的真實運行頻率;時鐘頻率即I/O Buffer(輸入/輸出緩沖)的傳輸頻率;而有效數據傳輸頻率就是指數據傳送的頻率(即等效頻率)。
● SDR和DDR1/2/3全系列頻率對照表:
常見DDR內存頻率對照表
通過上表就能非常直觀的看出,近年來內存的頻率雖然在成倍增長,可實際上真正存儲單元的頻率一直在133MHz-200MHz之間徘徊,這是因為電容的刷新頻率受制于制造工藝而很難取得突破。而每一代DDR的推出,都能夠以較低的存儲單元頻率,實現更大的帶寬,并且為將來頻率和帶寬的提升留下了一定的空間。
● SDR和DDR1/2/3存儲原理示意圖:
雖然存儲單元的頻率一直都沒變,但內存顆粒的I/O頻率卻一直在增長,再加上DDR是雙倍數據傳輸,因此內存的數據傳輸率可以達到核心頻率的8倍之多!通過下面的示意圖就能略知一二:
那么,內存IO頻率為什么能達到數倍于核心頻率呢?
相信很多人都知道,DDR1/2/3內存最關鍵的技術就是分別采用了2/4/8bit數據預取技術(Prefetch),由此得以將帶寬翻倍,與此同時I/O控制器也必須做相應的改進。
● DDR1/2/3數據預取技術原理:
預取,顧名思義就是預先/提前存取數據,也就是說在I/O控制器發出請求之前,存儲單元已經事先準備好了2/4/8bit數據。簡單來說這就是把并行傳輸的數據轉換為串行數據流,我們可以把它認為是存儲單元內部的Raid/多通道技術,可以說是以電容矩陣為單位的。
內存數據預取技術示意圖:并行轉串行
這種存儲陣列內部的實際位寬較大,但是數據輸出位寬卻比較小的設計,就是所謂的數據預取技術,它可以讓內存的數據傳輸頻率倍增。試想如果我們把一條細水管安裝在粗水管之上,那么水流的噴射速度就會翻幾倍。
明白了數據預取技術的原理之后,再來看看DDR1/2/3內存的定義,以及三種頻率之間的關系,就豁然開朗了:
● SDRAM(Synchronous DRAM):同步動態隨機存儲器
之所以被稱為“同步”,因為SDR內存的存儲單元頻率、I/O頻率及數據傳輸率都是相同的,比如經典的PC133,三種頻率都是133MHz。
SDR在一個時鐘周期內只能讀/寫一次,只在時鐘上升期讀/寫數據,當同時需要讀取和寫入時,就得等待其中一個動作完成之后才能繼續進行下一個動作。
● DDR(Double Date Rate SDRAM):雙倍速率同步動態隨機存儲器
雙倍是指在一個時鐘周期內傳輸兩次數據,在時鐘的上升期和下降期各傳輸一次數據(通過差分時鐘技術實現),在存儲陣列頻率不變的情況下,數據傳輸率達到了SDR的兩倍,此時就需要I/O從存儲陣列中預取2bit數據,因此I/O的工作頻率是存儲陣列頻率的兩倍。
DQ頻率和I/O頻率是相同的,因為DQ在時鐘上升和下降研能傳輸兩次數據,也是兩倍于存儲陣列的頻率。
● DDR2(DDR 2 SDRAM):第二代雙倍速率同步動態隨機存儲器
DDR2在DDR1的基礎上,數據預取位數從2bit擴充至4bit,此時上下行同時傳輸數據(雙倍)已經滿足不了4bit預取的要求,因此I/O控制器頻率必須加倍。
至此,在存儲單元頻率保持133-200MHz不變的情況下,DDR2的實際頻率達到了266-400MHz,而(等效)數據傳輸率達到了533-800MHz。
● DDR3(DDR 3 SDRAM):第三代雙倍速率同步動態隨機存儲器
DDR3就更容易理解了,數據預取位數再次翻倍到8bit,同理I/O控制器頻率也加倍。此時,在存儲單元頻率保持133-200MHz不變的情況下,DDR3的實際頻率達到了533-800MHz,而(等效)數據傳輸率高達1066-1600MHz。
綜上可以看出,DDR1/2/3的發展是圍繞著數據預取而進行的,同時也給I/O控制器造成了不小的壓力,雖然存儲單元的工作頻率保持不變,但I/O頻率以級數增長,我們可以看到DDR3的I/O頻率已逼近1GHz大關,此時I/O頻率成為了新的瓶頸,如果繼續推出DDR4(注意不是GDDR4,兩者完全不是同一概念,后文會有詳細解釋)的話,將會受到很多未知因素的制約,必須等待更先進的工藝或者新解決方案的出現才有可能延續DDR的生命。