Rank 與記憶體顆粒
相對於沒甚麼好說的記憶體模組而言,接下來這個就不太好懂了,據我所知在很多場合中記憶體的 Rank 與 Bank 這兩個名詞經常被混合使用,但這裡我選擇依照 JEDEC 規格書的定義來說明,在 JEDEC 的解釋上,Rank 這個階層是在記憶體模組與記憶體顆粒晶片之間的。
在討論 Rank 之前我們得先來看記憶體顆粒的規格,以 SK Hynix 發售的 DDR3 記憶體 HMT325S6CFR8C 為例吧,這款 2 GB 的模組是由 8 顆 H5TQ2G83CFR 顆粒所組成,根據 SK Hynix 官方公佈的規格我們可以知道 H5TQ2G83CFR 是一種容量為 2Gb (注意這個 b 是小寫,指的是 bit,跟我們平常用的 MB 單位正好差八倍,換算之後就是上圖中的 256 MB),通道寬度為 8 bit (上圖中寫的 x 8 就是了) 的記憶體顆粒晶片。
至於使用同款晶片的 4 GB 記憶體模組 HMT351S6CFR8C 則是由 16 顆 H5TQ2G83CFR 顆粒所組成,還記得我們前面說過個人電腦用記憶體 DIMM 的通道寬度是 64 bit 嗎?所以在上一段提到的 2 GB 模組中八顆記憶體顆粒晶片正好拼成 64 bit 寬沒甚麼問題,但你大概會想問,那 4 GB 模組呢?16 顆晶片不是應該拼成 128 bit 的雙倍寬度嗎?
但實際上並不是這樣,由於記憶體控制器一次就是只能處理單一通道 64 bit 寬度的資料,所以我們會在記憶體模組上加入一個稱為 Chip Select 的訊號,透過 MUX 多工器的方式「一次只選擇一組拼起來寬度是 64 bit 的記憶體顆粒」來進行讀寫操作,而這個分組就是我們所說的 Rank (反過來說 Rank 的定義也可以說成是一個 Chip Select 訊號所能選中的一群晶片)。
有一點要特別注意,那就是 Rank 的數量跟記憶體是否正反面都有記憶體顆粒晶片沒有關係,單面記憶體也可以做成雙 Rank,雙面記憶體也有可能實際上只是單 Rank,這取決於顆粒晶片本身的寬度需要多少顆才拚得成 64-bit 組合 (如果是 ECC 記憶體的話則以 72-bit 為一組)。
記憶體晶片顆粒與 Bank
接下來最後一個要討論的階層則是 Bank,根據 JEDEC 的定義,Bank 其實比記憶體晶片顆粒還要小,是構成記憶體晶片顆粒的一部分,相較於 Rank 可能影響主機板能夠安裝的記憶體容量上限或是能不能辨識某些高容量但採用低密度記憶體顆粒晶片的 DIMM,Bank 通常不會帶來甚麼影響,所以一般而言我們比較不在意 Bank 的部分。
還記得上一節曾經出現的這張圖嗎?當時我們用大型矩陣來比喻記憶體空間,其實一張圖上的這種大型矩陣就被稱為是一個 Bank,而一塊記憶體顆粒晶片上可能就有八個左右的 Bank 組合而成。