DRAM內存原理(二)結構和功能

內存最基本的單位是內存“細胞”——也就是我們前面展示給大家DRAM基本單元示意圖所示的部分,下面我們對這個部分通稱爲DRAM基本單元。每個DRAM基本單元代表一個“位”——Bit(也就是一個比特),並且有一個由列地址和行地址定義的唯一地址。8個比特組成一個字節,它可代表256種組合(即2的八次冪),字節是內存中最小的可尋址單元。DRAM基本單元不能被單獨尋址——否則現在的內存將會更加複雜,而且也沒有必要。很多DRAM基本單元連接到同一個列線(Row line)和同一個行線(Column line),組成了一個矩陣結構,這個矩陣結構就是一個Bank。大部分的SDRAM芯片由4個Bank組成,而SDRAM DIMM (Dual Inline Memory Module雙列直插式)可能由8或者16個芯片組成。SDRAM DIMM有14條地址線和64 bit數據線(如果一個DIMM內存使用8bit SDRAM芯片,那麼你應該在內存條上看到8個芯片,當然有的DIMM使用4 bit SDRAM芯片,那麼你將會在內存條上看到16片)。


以下是對插圖的註釋:
Row Address Buffer:行地址緩衝
 Column Address Buffer:列地址緩衝
Row DECODER:行解碼器
  Column DECODER:列解碼器
 Memory Array:內存陣
SENSE AMP:傳感放大器
由上圖可見一個Bank由內存陣列、sense amp、一個行解碼器、一個列解碼器組成。如果要理解內存Bank內部工作狀況,讓我們看看當緩存沒有命中後CPU從系統主內存中調用數據的情況。 CPU需要依次讀取一個32字節的數據,首先向芯片組發出請求——這通常需要一個時鐘週期芯片組將通過14條列地址線發送一個行地址,也就是這個行地址被髮送到DIMM所有的芯片上。擁有相同行地址的行被成爲一個頁面。換句話說,當芯片組向DIMM發送行地址後,就在打開了DIMM上一個頁面。

每一個內存bank都有一個傳感放大器(sense ampplifier),用來放大從基本單元讀出(或者寫入)內容時電荷。傳感放大器根據從芯片組發送來的行地址讀出相應的數據,這個讀出過程需要一定的時間這就是RASCAS的延遲,簡稱TRCD。不同質量的SDRAMTRCD需要2或者3個週期。

現在我們已經有了正確的行地址,不過還不知道確切的到那個基本單元去獲得信息。CAS延遲時間就是內存用於取得正確的列地址所需要的時間。CAS延遲時間一般時2或者3個時鐘週期。

然後內存基本單元就把信號發送到DIMM的輸出緩存,這樣芯片組就可以讀取它們了。現在我們有了前8個字節的內容,以及在傳感放大器中有了正確的行地址,等到下面的24個字節的過程就簡單了。這時就由內部計數器負責把下一個列地址的內存基本單元的內容發送到DIMM的輸出緩存當中。這樣每個時鐘週期都有8個字節傳送到輸出緩存中,這種模式就叫做突發模式

可見,主內存的延遲時間(也就是所謂的潛伏期,從FSB到DRAM)等於下列時間的綜合:

FSB同主板芯片組之間的延遲時間(+/- 1個時鐘週期)
   芯片組同DRAM之間的延遲時間(+/- 1個時鐘週期)
 RAS到CAS延遲時間:RCD(2-3 個時鐘週期,用於決定正確的行地址)
 CAS延遲時間 (2-3 時鐘週期,用於決定正確的列地址)
   另外還需要1個時鐘週期來傳送數據
  數據從DRAM輸出緩存通過芯片組到CPU的延遲時間(+/- 2個時鐘週期)

  可以看出,一個真正的PC100的SDRAM CAS=2)的內存取得最前八個字節的時間是9個時鐘週期,而另外24個字節只是需要3個時鐘週期,這樣PC100的SDRAM取得32個字節的數據只是需要12個時鐘週期。
對於同樣的情況,也就是當二級緩存未命中的時候,CPU從內存取得數據所需要的延遲時間需要用如下方法計算:CPU倍頻×內存延遲時間=CPU延遲時間。如果500MHZ(5×100MHz)的CPU需要5×9個延遲週期。也就是說如果二級緩存沒有命中,CPU需要45個時鐘中期才能得到新的數據。
 通過以上的介紹,我們已經理解的DRAM工作的基本原理,下面讓我們瞭解一下決定RAM技術速度的因素。

究竟是什麼決定DRAM速度?SDRAM是多bank結構,芯片組可以保持一部分曾經訪問過的Bank的行地址,也就是說保持一部分已經被打開的“頁面”。如果需要訪問的數據在同一列中,那麼芯片組不需要等待傳感器進行變換——這種情況就叫做頁面命中。這時RAS到CAS延遲時間就是0個時鐘週期,只需要經過CAS延遲就能在內存緩衝調入正確數據。所以,頁面命中就意味着我們只需要等待列地址的確立,就能得到需要的數據了。不過有的情況下,芯片組請求的內存頁面不是處於打開的狀態,這就叫做頁面失效。在這種情況下,RAS到CAS延遲時間將是2或者3時鐘週期(根據內存的品質不同而不同)。這種情況就是前面我們討論過的情形。如果芯片組已經保持了某一個Bank的某一個行地址,也就是在某一個bank已經打開了一個頁面,而請求的數據是位於同一個bank的不同行地址的數據,這種情況是最糟糕的。這樣就意味着傳感放大器需要首先回寫舊的行地址,然後再轉換新的行地址。回寫舊的行地址所佔用的時間叫做“預轉換時間”(Precharge time),當遇到這種情況時,是最壞的情況。

DEVICE_WIDTH表示設備的帶寬(單位爲Bit),每個列(COLUMN)表示爲DEVICE_WIDTH位(bit),每一行(ROW)有NUM_COLS個COLUMN。每一個BANK包含NUM_ROWS個行,所以一個DEVICE的容量PER_DEVICE_STORAGE=NUM_ROWS*NUM_COLS*DEVICE_WIDTH*NUMBANKS。一個RANK的容量爲64bit。所以一個RANK必須有device的個數爲NUM_DEVICES_PER_RANK=64/DEVICE_WIDTH。這樣我們算在一起,得出一個RANK的大小爲PER_RANK_STORAGE= PER_DEVICE_STORAGE*NUM_DEVICES_PER_RANK=NUM_ROWS*NUM_COLS*DEVICE_WIDTH*NUMBANKS* NUM_DEVICES_PER_RANK=NUM_DEVICES_PER_RANK


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章