同期ダイナミック RAM は、チャネル、ランク、バンク、行、列の階層を通じて選択されるセルに電荷を格納します。DDR SDRAM はデータクロックの両エッジで転送を追加しますが、DDR 世代の名称は完全な電気的プロトコルとコマンドプロトコルを表します。したがって、DDR3、DDR4、DDR5 モジュールは容量が同じでも互換性がありません。
セルからメモリチャネルまで #
各 DRAM ダイはセルアレイをバンクに分割します。バンクには多数の行があり、そのセンスアンプは行バッファーとしても機能します。行を開くとセルがそのバッファーにコピーされ、その後の列選択で転送するサブセットを選びます。DDR4 は、バンク内とバンク間でコマンド間の遅延が異なるため、バンクをバンクグループに分割します。
階層の異なるレベルを表す用語は次のとおりです。
- コンポーネントは 1 つの DRAM パッケージです。
x4、x8、x16などの幅は、コンポーネントが 1 回の転送で供給するDQデータビット数を示します。 - ランクは一緒に選択されるコンポーネントのグループです。8 個の
x8コンポーネントで 1 つの 64 ビットランクを形成し、9 個目は 72 ビット ECC モジュールで 8 個のチェックビットを供給します。 - モジュールは、1 つ以上のランクを載せた DIMM または SO-DIMM の回路基板です。ランク数は、基板の実装面数からは決まりません。
- チャネルは、独立してスケジュールされるメモリコントローラーのインターフェイスです。従来の非 ECC チャネルは一度に 64 データビットを転送します。

容量と幅を混同してはいけません。8 Gib の x8 コンポーネントは 1 GiB を格納し、8 本のデータピンを公開します。このようなコンポーネント 8 個で、64 ビット幅、8 GiB のランクを構成します。
8 Gib/component × 8 components ÷ 8 bits/byte = 8 GiB同等のランクをもう 1 つ追加すると、モジュール容量は 16 GiB になります。ECC コンポーネントは、アプリケーションから見えるバイトではなくチェックビットを追加します。
行コマンドシーケンス #
コントローラーは、明示的なステートマシンを通じてバンクを操作します。
ACTIVATEはバンクと行を選択し、その行をセンスアンプに読み込む。READまたはWRITEは開いている行の列を選択し、バーストを開始する。- 追加の列コマンドは、開いている行を再利用できる。
PRECHARGEはセルを復元し、同じバンクの別の行をアクティブ化する前に行を閉じる。
読み取りまたは書き込みコマンドは自動プリチャージを要求でき、その場合バースト後にバンクを閉じます。リフレッシュコマンドは、ソフトウェアが行を列挙せずに電荷を復元します。メモリコントローラーはデバイスの保持要件を満たす頻度でリフレッシュを発行します。
タイミング記号は、メモリ速度を 1 つのスカラー値で表すのではなく、コマンドとデータ間の制約を表します。
| タイミング | 制約 |
|---|---|
tRCD | ACTIVATE から列コマンドまで |
CL | READ コマンドから最初に返されるデータまで |
tRAS | 行がアクティブであり続ける最小時間 |
tRP | PRECHARGE から次のアクティベーションまで |
tRC | 1 つのバンクにおけるアクティベーション間隔 |
tRRD | 異なるバンク間のアクティベーションの最小間隔 |
tFAW | アクティブ化できるバンク数を制限するローリングウィンドウ |
行ヒットは tRP と tRCD を回避します。行コンフリクトでは、有用なデータを移動する前に両方の時間を消費します。コントローラーはバンクとランク間で作業をインターリーブして一部の遅延を隠しますが、チャネル上のすべてのランクは最終的にチャネルのデータ線を共有します。
バースト、プリフェッチ、表示レート #
DDR SDRAM は、コマンドごとに独立してアドレス指定された 1 バイトを返すわけではありません。列コマンドはバーストを開始し、DDR4 の 8 というバースト長は 8n プリフェッチアーキテクチャに対応します。コアアレイはより幅広いグループを I/O バッファーに供給し、バッファーはそのグループを高速な外部ピンでシリアライズします。したがって、プリフェッチ幅は内部から外部への構成を表し、モジュールのチャネル幅ではありません。
DDR のデータレートは 1 秒あたりの転送回数で測定されます。DDR4-3200 は 1600 MHz の I/O クロックを使用し、両エッジで転送するため、表示レートは 3200 MHz ではなく 3200 MT/s です。ピーク帯域幅は転送レートとチャネル幅から求められます。
3200 × 10^6 transfers/s × 64 bits/transfer ÷ 8 = 25.6 GB/s独立して使用される 64 ビットチャネル 2 つは、同じレートで 51.2 GB/s を提供できます。リフレッシュ、コマンドスロット、バスの方向転換、行ミス、ワークロードの局所性により持続帯域幅は低下します。同じ MT/s 定格を表示する 2 つのモジュールでも、レイテンシーのタイミングは依然として重要です。

DDR4 のコマンド、アドレス、データインターフェイス #
DDR4 は、コマンド/アドレス信号と双方向データインターフェイスを分離します。差動 CK_t/CK_c クロックがコマンドとアドレス信号をサンプリングします。チップセレクト、バンクグループ、バンク、アドレス、制御ピンが操作を符号化し、対象ランクと位置を識別します。ACT_n はアクティベーションを他のコマンドエンコーディングと区別します。
DQ ピンはデータを運び、差動 DQS_t/DQS_c ストローブは各バイトレーンにソース同期のタイミングを提供します。コンポーネントの幅とモードに応じて、DM_n は書き込みデータをマスクし、DBI_n はデータバス反転を通知します。その他の信号はプロトコルと電気的制御を担います。
CKEはクロックと電力状態の制御に関与する。ODTはオンダイ終端を選択する。ZQはインピーダンスキャリブレーションをサポートする。RESET_n、パリティ、ALERT_nは、デバイスまたはモジュールの種類が定義する場合に、初期化とエラー報告をサポートする。
モードレジスター書き込みは、バースト動作、レイテンシー、終端、電力機能、その他の関連オプションを設定します。電源、リセット、モードレジスター、ZQ キャリブレーションの順序は提案ではなくタイミング要件であるため、初期化はコンポーネントのデータシートに従う必要があります。
モジュール、ランク、プラットフォーム制限 #
DIMM は dual inline memory module を意味します。反対側の面にある接点が別々の信号を運びます。DDR4 UDIMM は 288 接点、DDR4 SO-DIMM は 260 接点です。キー位置、電圧、ピン割り当て、プロトコルは世代ごとに異なります。
アンバッファード DIMM はコマンド/アドレス線を DRAM 負荷に直接接続します。レジスタード DIMM は選択された制御経路にレジスターを挿入し、追加のコマンド段階の代わりにチャネルあたりのデバイス数を増やせます。プラットフォームファームウェアは、モジュールの種類、ランクトポロジー、サポート速度、モジュールの SPD EEPROM から得られるタイミングデータも理解する必要があります。
モジュールが表示レートで動作できるかどうかは、メモリコントローラーとマザーボードの制限によって決まります。DDR4-3200 は 3200 MT/s を示し、PC4-25600 は 1 つの 64 ビットデータ経路に対応する 25.6 GB/s のピークを表します。どちらのラベルも、実装されたすべてのチャネルがそのレートでトレーニングできることを保証しません。
コメント
GitHub で閲覧・コメントする(投稿にはログインが必要です)