外部メモリー・インターフェイス・ インテル® Agilex™ FPGA IPユーザーガイド

ID 683216
日付 12/14/2020
Public

このドキュメントの新しいバージョンが利用できます。お客様は次のことを行ってください。 こちらをクリック 最新バージョンに移行する。

ドキュメント目次

10.4.3. バンク・インターリーブ

コントローラーがページをミスし、そのページが別のバンクにある場合、バンク・インターリーブを使用してバスの効率を維持することができます。
注:
  • ページサイズとは、単一のアクティブ化コマンドでアクセスする任意の行の列位置の最小数を指しています。
  • DDR4の場合、バンクはバンクアドレスとバンクグループを指しています。

インターリーブを使用しない場合、コントローラーは、アドレスをSDRAMデバイスに送信し、要求されたデータを受信後、SDRAMデバイスがプリチャージおよび再アクティブ化するのを待機してから次のデータ・トランザクションを開始します。そのため、数クロックサイクルが浪費されます。

インターリーブにより、SDRAMデバイスのバンクでは、バックグラウンドの動作とアクセスサイクルを交互に行うことができます。1つのバンクでプリチャージとアクティブ化サイクルを実行している間に、別のバンクがアクセスされます。バンクを交互に切り替え、各バンクのプリチャージとアクティブ化の時間をマスクすることにより、コントローラーのパフォーマンスを向上させます。システムに4つのバンクがある場合、コントローラーは1つのデータ要求をそれぞれのバンクに連続したクロックサイクルで理想的に送信することができます。

例えば、最初のクロックサイクルでCPUはバンク0にアドレスを送信し、2番目のクロックサイクルで次のアドレスをバンク1に送信します。その後、3番目と4番目のクロックサイクルで、3番目と4番目のアドレスをバンク2と3にそれぞれ送信します。シーケンスは次のとおりです。

  1. コントローラーはアドレス0をバンク0に送信します。
  2. コントローラーはアドレス1をバンク1に送信し、データ0をバンク0から受信します。
  3. コントローラーはアドレス2をバンク2に送信し、データ1をバンク1から受信します。
  4. コントローラーはアドレス3をバンク3に送信し、データ2をバンク2から受信します。
  5. コントローラーはデータ3をバンク3から受信します。

次の図は、インターリーブを使用し帯域幅を拡大する方法を示しています。

図 72. インターリーブを使用することによる帯域幅の拡大

インターリーブを使用することによる帯域幅の拡大

コントローラーは、3つのインターリーブのオプションをサポートしています。

CS-BG-Bank-CID-Row-Col – これは、インターリーブを行わないオプションです。このオプションを選択し、ランダムなトラフィックでの効率を改善します。

CS-CID-Row-Col-Bank-BG – このオプションでは、チップセレクト・インターリーブなしのバンク・インターリーブを使用します。このオプションを選択し、より小さなデータ構造をチップ内のすべてのバンクに分散することで、連続するトラフィックの効率を向上させます。

CID-Row-CS-Bank-Col-BG – このオプションでは、チップセレクト・インターリーブありのバンク・インターリーブを使用します。このオプションを選択し、連続するトラフィックと複数のチップセレクトの効率を向上させます。このオプションでは、より小さなデータ構造を複数のバンクおよびチップに分散させることができます。

バンク・インターリーブは固定パターンのデータ・トランザクションであり、ベストケースの帯域幅とレイテンシーの実現を可能にします。また、開いているバンク間での十分なインターリーブ・トランザクションを可能にすることで、tRCを完全に隠します。最適なシステムでは、バンク・インターリーブ・トランザクションの100%の効率を8つのバンクで達成することができます。バンクが8つ未満のシステムで100%を達成することはほとんどありません。  

注: アディティブ・レイテンシーは、インターリーブを使用する連続した読み出しまたは書き込みの効率を向上させますが、個々のランダムな読み出しまたは書き込みでの効率は改善されません。