DDR SDRAM 與記憶體模組

最後更新: 2022-12-03 10:49:54 +0800 +0800
原文以英文撰寫。您正在閱讀AI翻譯版本。

同步動態 RAM 會將電荷儲存在透過通道、rank、bank、列與欄階層選取的儲存格中。DDR SDRAM 在資料時脈的兩個邊緣都加入傳輸,但 DDR 世代名稱代表完整的電氣與命令協定。因此,即使容量相同,DDR3、DDR4 與 DDR5 模組也不能互換。

從儲存格到記憶體通道 #

每個 DRAM 晶粒會將儲存格陣列分成多個 bank。每個 bank 有許多列,而其感測放大器也會作為列緩衝區。開啟列會將其儲存格複製到該緩衝區;之後的欄選取會選擇要傳輸的子集。DDR4 將 bank 分成 bank group,因為群組內與群組間的某些命令間延遲不同。

數個術語描述階層的不同層級:

  • 元件是一個 DRAM 封裝。x4、x8 與 x16 等寬度表示元件每次傳輸提供多少個 DQ 資料位元。
  • Rank 是一組一起選取的元件。八個 x8 元件形成一個 64 位元 rank;第九個在 72 位元 ECC 模組上提供八個檢查位元。
  • 模組是承載一或多個 rank 的 DIMM 或 SO-DIMM 電路板。Rank 數量不由電路板已安裝的面數決定。
  • 通道是獨立排程的記憶體控制器介面。傳統非 ECC 通道一次傳輸 64 個資料位元。

DDR4 x16 元件

不得混淆容量與寬度。一個 8-Gib 的 x8 元件儲存 1 GiB,同時公開八個資料接腳。八個這類元件提供一個寬度 64 位元、容量 8 GiB 的 rank:

text
8 Gib/component × 8 components ÷ 8 bits/byte = 8 GiB

第二個相同的 rank 會將模組容量提高至 16 GiB。ECC 元件增加的是檢查位元,而非應用程式可見的位元組。

列命令序列 #

控制器透過明確的狀態機操作 bank:

  1. ACTIVATE 選取 bank 與列,並將該列載入感測放大器。
  2. READ 或 WRITE 選取開啟列中的欄,並開始突發。
  3. 更多欄命令可以重複使用開啟的列。
  4. PRECHARGE 還原儲存格並關閉列,之後才能啟用同一 bank 中的另一列。

讀取或寫入命令可以要求自動預充電,在突發後關閉 bank。重新整理命令會在不讓軟體列舉列的情況下還原電荷;記憶體控制器會頻繁發出這些命令,以符合裝置的保存要求。

時序符號描述命令與資料之間的限制,而不是單一的記憶體速度量值:

時序限制
tRCDACTIVATE 至欄命令
CLREAD 命令至第一個回傳資料
tRAS列保持啟用的最短時間
tRPPRECHARGE 至下一次啟用
tRC單一 bank 中的啟用至啟用間隔
tRRD不同 bank 啟用之間的最短間隔
tFAW限制可啟用 bank 數量的滑動視窗

列命中可避免 tRP 與 tRCD;列衝突則須在有用資料移動前支付兩者。控制器會在 bank 與 rank 之間交錯工作以涵蓋部分延遲,但通道上的每個 rank 最終都共用通道的資料線。

突發、預取與標示速率 #

DDR SDRAM 不會針對每個命令回傳一個獨立定址的位元組。欄命令會啟動突發,而 DDR4 的八次傳輸突發長度符合其 8n 預取架構。核心陣列會將較寬的群組提供給 I/O 緩衝區,再由緩衝區透過較快的外部接腳序列化該群組。因此,預取寬度描述內部至外部的組織,而不是模組的通道寬度。

DDR 資料速率以每秒傳輸次數計量。DDR4-3200 使用 1600 MHz I/O 時脈並在兩個邊緣傳輸,因此其標示速率是 3200 MT/s,而非 3200 MHz。峰值頻寬由傳輸速率與通道寬度得出:

text
3200 × 10^6 transfers/s × 64 bits/transfer ÷ 8 = 25.6 GB/s

兩個獨立使用的 64 位元通道可以在相同速率下提供 51.2 GB/s。重新整理、命令時槽、匯流排轉向、列未命中與工作負載區域性都會降低持續頻寬;即使兩個模組標示相同 MT/s 評級,延遲時序仍然相關。

Bank 交錯示意圖

DDR4 命令、位址與資料介面 #

DDR4 將命令/位址訊號與雙向資料介面分開。差動 CK_t/CK_c 時脈會取樣命令與位址訊號。晶片選取、bank group、bank、位址與控制接腳會編碼操作並識別目標 rank 與位置;ACT_n 將啟用與其他命令編碼區分開。

DQ 接腳承載資料,而差動 DQS_t/DQS_c 閃控會為每個位元組通道提供來源同步時序。依元件寬度與模式而定,DM_n 會遮罩寫入資料,而 DBI_n 會表示資料匯流排反轉。其他訊號服務協定與電氣控制:

  • CKE 參與時脈與電力狀態控制。
  • ODT 選取晶片內終端。
  • ZQ 支援阻抗校準。
  • RESET_n、同位元檢查與 ALERT_n 會在裝置或模組型別定義時支援初始化與錯誤回報。

模式暫存器寫入會設定突發行為、延遲、終端、電力功能與相關選項。初始化必須遵循元件資料表,因為電源、重設、模式暫存器與 ZQ 校準順序是時序要求,而非建議。

模組、Rank 與平台限制 #

DIMM 代表 dual inline memory module:相對兩面上的接點承載不同訊號。DDR4 UDIMM 有 288 個接點,而 DDR4 SO-DIMM 有 260 個。不同世代的關鍵位置、電壓、接腳配置與協定各不相同。

無緩衝 DIMM 會將命令/位址線直接連接到 DRAM 負載。註冊 DIMM 會在選定的控制路徑插入暫存器,付出額外命令階段的代價,換取每個通道可容納更多裝置。平台韌體也必須了解模組型別、rank 拓撲、支援的速度,以及模組序列存在偵測 EEPROM 中的時序資料。

記憶體控制器與主機板限制決定模組能否以標示速率運作。DDR4-3200 表示 3200 MT/s,而 PC4-25600 表示單一 64 位元資料路徑相應的 25.6 GB/s 峰值。兩個標籤都不保證所有已安裝通道都能以該速率完成訓練。

參考資料 #

評論

在 GitHub 上閱讀或評論(發表評論需要登入)