【實作實驗室】直擊電腦內部的記憶體架構

作者:實作派

最近忙著把 NAS 的記憶體升級,於是逛了一下網路商城,發現規格實在是五花八門,除了速度與第幾代 DDR 的基本規格外,最常令人混淆的不外乎就是 Rank 了,市場上的 1Rx8 與 2Rx8 ,到底有沒有差別呢?

記憶體的層級

如下圖,電腦內的記憶體架構是分層負責的,最上層是通道 Channel,裡面再分為 DIMM。以 Intel 北橋的 X38 為例,它支援 2 個 Channel,所以會有兩組獨立的線拉到各自的記憶體,每個 Channel 最多支援 2 個 DIMM,所以你在主機板上最多會看到 4 個 DIMM 插槽。

電腦記憶體架構(圖片來源:實作派提供)

分組的記憶體顆粒—RANK

這裡的 DIMM 就是我們平常買的記憶體模組,單一模組上焊滿了一顆顆的記憶體 IC,這些 IC 顆粒被劃分為不同的 Rank,每個 Rank 以相同的 Chip Select(CS#)連接在一起,也就是說當北橋發出 CS# 訊號時,這個 Rank 內所有的 IC 顆粒會同時被 Enable。

若你的模組有 2 個 Rank,表示此 Memory Module 能接受兩條 CS# 的訊號,以美光 Micron 的模組為例,它們的名稱為 S0# 與 S1#。若分為 1 個 Rank,稱為 1R;分為 2 個 Bank,就稱為 2R;下圖就是 2R 模組內的接線方式,你會發現相同 Rank IC 的 CS# 全部與 DIMM 的 S0# 與 S1# 分別接在一起。

DDR3 的記憶體模組線路(圖片來源:實作派提供)

至於為何要分 Rank 呢?全部接一起不是挺好的嗎?我想應該與晶片 IO 的 Fan out 能力或與阻抗匹配有關,畢竟速度這麼快,阻抗是需要考慮的,否則資料全部反射攪和在一起,也是很傷腦筋。

2Rx8 不等於雙面

從上面的敘述可以知道,Rank 只是拿來分組用的,2 個 Rank 的模組因為顆粒數目多,大都會將記憶體顆粒焊在兩面,而單一 Rank 的 DDR Module 有焊在同一面的,也有焊在兩面的。

所以 2R 與 1R 與單雙面沒有關係,它只表示北橋的 Memory Channel 用了多少 Chip Select 來存取DIMM。下圖是個例子,上方 8 G 2Rx8 表示記憶體模組分成 2 個 Rank,每個 Rank 有 8 顆 IC,它是雙面焊件,因此共有 16 顆 IC;下方 2 GB 的記憶體模組只用了 1 個 Rank,每個 Rank 有 8 顆 IC,但它也是雙面焊件,一面焊了 4 顆。

2Rx8 和 1Rx8 DDR3 SODIMM 的記憶體模組(圖片來源:實作派提供)

記憶體電壓

目前 DDR3 分為 1.5 V 與 1.35 V,1.35 V 的記憶體模組會標示為 DDR3L,但我照著型號去查詢 datasheet,發現上圖中 2 GB 模組的顆粒,竟然原本是 DDR3L 使用的,而且速度還是 1866 MHz,那怎麼會出現在 DDR3 1600 的模組上呢?

DDR3 Module 顆粒規格比模組高 (圖片來源:實作派提供)

於是我詢問了在 PC 廠工作的朋友,他告訴我這是有可能的,也就是原本規畫應該在 1866 MHz 1.35 V 跑的記憶體,廠商可能發現它跑起來沒那麼穩定,於是就讓這款記憶體在 1600 MHz 1.5 V 上跑,結果跑得嚇嚇叫,因此就折價賣給模組廠使用。

基本上記憶模組只要出廠前有測試驗證過,都不會有問題,因為產品好壞的差別在於品管控制,品管控制得好,小廠也能上天堂,品管控制得差,大廠也會下地獄;我一般都選大廠,因為他們資源多,我「傾向」相信他們的品管做得比較完整。

4G bit 為何只需要 16 條位址線?

不知各位是否有想過,一個 4 GB 的 DDR 為何只需要 A [15:0]  16 條位址線?照理說 4 GB(512 Mega x 8 bit)應該要有 29 條線才能定址到 512 Mega,現在只要 16 條是怎麼辦到的呢?確實 29 條位址線實在太多了,因此位址資料分為兩次傳送,第一次稱為 Row,第二次稱為 Col,如下圖這兩個資料到了記憶體內部,便會像 XY 座標一般地將對應的資料找出來,再將資料放到 DQ [7:0] 上。

事實上在 DRAM 記憶體內還有分 Bank,這樣又可以讓位址線減少一些,以下圖為例有 8 個 bank,所以它需要 BA [2:0] 共 3 條線來定址,我一直認為 bank 與 address 其實是相同作用的東西,只是因為我沒有在DRAM 上著墨太深,無法理解為何還要在 IC 內部分 Bank,如果有了解的朋友歡迎讓我知道一下。

DDR3 顆粒內部方塊圖(圖片來源:實作派提供)

為何要這麼多顆粒?

以 PC 的角度來看,這還真是個合理的問題,為什麼要放那麼多小顆的 IC 呢?直接做一個大顆的不就全搞定了!但這件事情牽涉頗廣,首先若要做這麼大顆容量的 IC,它的良率一定會下降,意思就是將來的價格會比較貴,到時候做出來誰要買單是個大問題。

再來是資料位元寬度,目前 PC 大都以 64 bit 作為資料傳輸,但除了 PC 外,仍有很多小型應用會需要用到 32 bit 甚至 16 bit 的位元寬度;對 DRAM 廠而言,其實做 8 bit 或 16 bit 寬度的顆粒市場彈性最大,但事實上他們做了 x4、x8、x16 三種寬度,好讓使用者自己去湊出需要的寬度。

上圖就是一個 8 bit 寬度的 IC,右邊的 DQ [7:0] 指的就是資料的寬度,如果你要用 64 bit,就得用 8 顆 8 bit 寬度的 IC 來湊,或是 4 顆 16 bit 的 IC 來湊,這也就是為什麼我們買來的記憶體模組會有這麼多顆粒。

(本篇轉載自實作派電子實驗室原文連結;責任編輯:賴佩萱)

StrongPiLab

實作派電子實驗室(StrongPiLab)是一個著重知識與經驗的實作交流媒體,提供工程師們理論外的實務經驗,主要傳達電子產品與家電用品的正確操作概念與生活小常識、解說各種測試手法的技巧。
StrongPiLab

Author: StrongPiLab

實作派電子實驗室(StrongPiLab)是一個著重知識與經驗的實作交流媒體,提供工程師們理論外的實務經驗,主要傳達電子產品與家電用品的正確操作概念與生活小常識、解說各種測試手法的技巧。

Share This Post On

Submit a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *