回路基板上の物理的な配線は、高速メモリのタイミング許容範囲を超える信号遅延を引き起こす可能性があるため、DDR3およびDDR4システムは、データシステムクロックと同期させるためのキャリブレーションプロセスを起動ごとに実行する必要があります。LiteDRAMプロジェクトで文書化されているこのプロセスは、同じランク内の異なるメモリチップが、コントローラからの物理的な距離の違いにより、わずかに異なるタイミングでクロック信号を受信する事実に対応するものです。

メモリインターフェースのパラメータとタイミング仕様を示す技術的な表。
メモリインターフェースのタイミングおよび構成パラメータの技術仕様。github.com

この表は、記事で議論されているメモリインターフェース構成に関連する特定の技術パラメータを提供します。

フライバイ・トポロジーの課題

DDR3およびDDR4メモリインターフェースは、クロック、コマンド、およびアドレスピンにフライバイ・トポロジーを利用しています。このレイアウトでは、信号は終端点に到達する前に各メモリチップを順番に通過し、これにより高負荷な信号を高速域でもクリーンに保ちます。

DDR3/DDR4 デフォルトの終端およびドライブ強度: DDR3 RTT_NOM 60 ohm; DDR4 RTT_NOM 40 ohm; DDR3 RTT_WR 60 ohm; DDR4 RTT_WR 120 ohm
DDR3/DDR4 デフォルトの終端およびドライブ強度github.com

HN Digestによる図表(github.comの報告数値に基づく)。数値はソースの表記通り。

その代償として、各チップは前のチップよりもわずかに遅れてクロックを受信します。データレーンはポイント・ツー・ポイントであるため、それらの遅延はクロックに従わず、最初のチップと最後のチップの間に1クロック周期を超えるスキューが生じることがあります。

「フライバイ・ルーティングでは、最初のチップと最後のチップの間のスキューが1クロック周期を超える可能性があるため、各レーンに独自のDQS遅延が必要です。」

— litedram/doc/manual/03_dram_interface.md at master · enjoy-digital/litedram

書き込みレベル調整とレイテンシのキャリブレーション

フライバイによるスキューを修正するために、コントローラは「書き込みレベル調整」を実行します。コントローラはDRAMを特殊なモードに移行させ、DQSパルスを送信して、DRAMが特定のビット遷移を返すまでの遅延を測定します。その後、コントローラは、特定のチップにおいてDQSがクロック(CK)と完全に一致するまで、各レーンの出力遅延を調整します。

メモリハードウェア構成と信号特性を詳述するデータテーブル。
メモリハードウェア構成と信号特性を例示した詳細なデータテーブル。github.com

この表は、高速メモリシステムにおける特定のハードウェア構成と信号動作の議論をサポートします。

アライメントだけでなく、システムは書き込みレイテンシとDQ-DQSトレーニングもキャリブレーションする必要があります。これにより、レーンが1クロック周期分だけ早く、あるいは遅くならないこと、および書き込み操作中にデータ(DQ)がストローブ(DQS)に対して中心に配置されることが保証されます。

読み取りレベル調整とデータアイ

読み取り側では、ボードおよびI/Oの遅延がレーンごとに異なるため、コントローラはデータが正確にいつ到着するかを知ることができません。読み取りレベル調整は、各レーンに対して2つの設定を見つけます。一つはワードを正しいクロックサイクルに合わせるための粗い「ビットスリップ」、もう一つは「データアイ」を見つけるための微細な入力遅延です。

データアイは、読み取りの最初のワードが正しいビット位置に到着するウィンドウです。広いウィンドウは堅牢なインターフェースを示し、狭いウィンドウは信号の整合性やクロッキングの問題を示唆します。LatticeやGowinのPHYなど、一部のハードウェアでは、システムはDRAMが実際にデータを送信しているタイミングを特定するために「バースト検出」も使用する必要があります。

メモリのタイミングとレベル調整データを示す技術的なチャートまたは表。
メモリのタイミングおよびレベル調整データポイントの技術的な概要。github.com

この視覚資料は、本文で説明されている読み取りレベル調整とデータアイの測定に関する追加のコンテキストを提供します。

ハードウェアの制約とトレードオフ

すべてのハードウェアが同等のレベルのキャリブレーションをサポートしているわけではありません。例えば、Artix-7 FPGAはすべてのレーンで標準的な書き込みレベル調整に必要な出力遅延を欠いているため、システムは静的なDQSフェーズまたはCKフェーズシフトモードを使用せざるを得ません。

さらに、UltraScale+ PHYはFPGAの読み取りVREF(基準電圧)をステップ単位で設定できますが、LiteDRAM BIOSは現在、ソフトウェアによって手動で調整されない限り、この値をビルド時の値のままにします。これらの制限は、物理的なハードウェアの制約がいかにサポートされるメモリ構成を直接規定しているかを浮き彫りにしています。