1. 程式人生 > >DRAM記憶體原理(二)結構和功能

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