一、DRAM的存儲結構
channel>DIMM>rank>chip>bank>row/column
1、channel 和 DIMM,DIMM和RANK
SIMM----->DIMM
2、rank 和 chip
現在市場上的DIMM條一般都有2個RANK。rank 指的是連接到同 一個CS(Chip Select)的chip,內存控制器能對同 一 rank 的 chip 進行讀寫操作。
Rank
CPU與內存之間的接口位寬是64bit,也就意味着CPU在一個時鍾周期內會向內存發送或從內存讀取64bit的數據。可是,單個內存顆粒的位寬僅有4bit、8bit或16bit,個別也有32bit的。因此,必須把多個顆粒並聯起來,組成一個位寬為64bit的數據集合,才可以和CPU互連。生產商把64bit集合稱為一個物理BANK(Physical BANK),簡寫為P-BANK。為了和邏輯BANK相區分,也經常把P-BANK稱為RANK或Physical RANK,把L-BANK則簡稱為BANK。如果每個內存顆粒的位寬是8bit,應該由8個顆粒並聯起來,組成一個RANK(64bit);同理,如果顆粒的位寬是16bit,應該由4個顆粒組成一個RANK。由此可知:Rank其實就是一組內存顆粒位寬的集合,也可以叫Chips,在PCB上,往往把一面上的內存顆粒組成一個Rank,另一面是另外一個Rank(假若有的話),這樣也可以將Rank理解內存條的Side(面)。具體說,當顆粒位寬×顆粒 數=64bits時,這個模組就是有一個RANK。為了保證和CPU的溝通,一個模組至少要有一個RANK。但是,為了保證有一定的內存容量,目前,DDR2內存,經常是采用一個模組兩個RANK的架構。“模組構成”中的“R”“RANK”的意思。“2R”是說組成模組的RANK數(Number of ranks of memory installed)是2個。有“1R”和“2R”兩種;“模組構成”中的“×8”是顆粒的位寬(bit width),有×4、×8和×16三種.
理論上,完全可以做出一個位寬為 64bit 的芯片來滿足 P-Bank 的需要,但這對技術的要求很高, 在成本和實用性方面也都處於劣勢。所以芯片的位寬一般都較小。台式機市場所用的 SDRAM 芯片位寬 最高也就是 16bit,常見的則是 8bit。這樣,為了組成 P-Bank 所需的位寬,就需要多顆芯片並聯工 作。對於 16bit 芯片,需要 4 顆(4×16bit=64bit)。對於 8bit 芯片,則就需要 8 顆了。
Chip(Memory)
存儲芯片,又叫內存顆粒。真正提供存儲的器件。
3、chip 和 bank
chip 往下拆分為 bank,如圖所示,一個chip有8個bank。
4、bank 和 row/column
bank 往下拆就是 1 個個的儲存單元,橫向 1 排稱之為 row,直向 1 排稱之為 column,每排 column 的下方都有個 row buffer,用以暫存讀出來的 row 排資料。
一般來說橫向選擇排數的線路稱為 row(row enable、row select、word line),直向負責傳遞訊號的線路為column(bitline),每組 bank 的下方還會有個 row buffer(sense amplifier),負責將獨出的 row 資料暫存,等待 column 位址送到後輸出正確的位元,以及判斷儲存的邏輯值是 0 還是 1。
二、內存的讀寫
內存控制器和DIMM之間的線路連接如下:
一個bank的讀操作如下:
一個bank的寫操作如下:
讀操作時,首先內存控制器會將 1 組地址由位址線傳到內存上,控制線跟著傳送控制訊號;如果是多 rank 的安裝情形,CS 也會送出對應的訊號選擇目標 rank。接著由於每個 rank 由許多 chip 組成,1 個 chip 僅負責部分的資料讀取,chip 接收到位址訊號後,將位址丟入內部的 row/column 解碼器找出相對應的 bank 位址(每家每款產品的內部 bank 組合有可能不同,因此對應也會有所不同),接著開啟 row 線,同 1 排 row 的內部資料就會流到 row buffer 內部,row buffer 判斷訊號為 0 或是 1 之後就輸出資料。
寫操作時,除了地址數據外,還會傳送欲寫入的數據至晶片內部的 input buffer,同樣的也是依照 row/column 解碼器找出對應位置之后再寫入。
問題:Rank, 位寬,行列的關系;
我們可以計算一下,結果可以發現這三個規格的容量都是 128Mbits,只是由於位寬的變化引起 了存儲單元的數量變化。從這個例子就也可以看出,在相同的總容量下,位寬可以采用多種不同的設 計。所以相同的一個矩陣,可以通過不同的方式划分,以滿足不同的需求;
為什么常用的是X4,X8,X16?
高位寬的芯片可以讓 DIMM 的設計簡單一些(因為所用的芯片少),但在芯片容量相同時,這種 DIMM 的容量就肯定比不上采用低位寬芯片的模組,因為后者在一個 P- Bank 中可以容納更多的芯片。 比如上文中那個內存芯片容量標識圖,容量都是 128Mbit,合 16MB。如果 DIMM 采用雙 P-Bank+16bit 芯 片設計,那么只能容納 8 顆芯片,計 128MB。但如果采用 4bit 位寬芯片,則可容納 32 顆芯片,計 512MB。 DIMM 容量前后相差出 4 倍,可見芯片位寬對 DIMM 設計的重要性。
因此,8bit 位寬芯片是桌面台式機上容量與成本之間平衡性較好的選擇,所以在市場上也最為 普及,而高於 16bit 位寬的芯片一般用在需要更大位寬的場合,如顯卡等,至於 4bit 位寬芯片很明 顯非常適用於大容量內存應用領域,基本不會在標准的 Unbuffered 模組設計中出現。
不同的位寬,如何控制引腳?
在一個容量標准下,SDRAM 的引腳/信號標准不能只考慮一種位寬的設計,而是要顧及多種位寬,然后盡量給出一個通用的標准, 小位寬的芯片也許會空出一些引腳,但高位寬的芯片可能就全部用上了。不過容量不同時,設計標准 也會有所不同,一般的容量越小的芯片所需要的引腳也就越小。
1、首先,我們知道內存控制器要先確定一個 P-Bank 的芯片集合,然后才對這集合中的芯片進 行尋址操作。因此要有一個片選的信號,它一次選擇一個 P-Bank 的芯片集(根據位寬的不同,數量 也不同)。被選中的芯片將同時接收或讀取數據,所以要有一個片選信號。
2、接下來是對所有被選中的芯片進行統一的 L-Bank 的尋址,目前 SDRAM 中 L-Bank 的數量最 高為 4 個,所以需要兩個 L-Bank 地址信號。
3、最后就是對被選中的芯片進行統一的行/列(存儲單元)尋址。地址線數量要根據芯片的組織 結構分別設計了。但在相同容量下,行數不變,只有列數會根據位寬的而變化,位寬越大,列數越少, 因為所需的存儲單元減少了。
4、找到了存儲單元后,被選中的芯片就要進行統一的數據傳輸,那么肯定要有與位寬相同數量 的數據 I/O 通道才行,所以肯定要有相應數量的數據線引腳。現在我們就基本知道了內存芯片的一些 信號引腳,下圖就是一個簡單的 SDRAM 示意圖,大家可以詳細看看。
兩個DRAM 晶片的內部功能圖如下所示: