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

ID 683741
日付 9/30/2019
Public
ドキュメント目次

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

コントローラーがページをミスし、そのページが別のバンクにある場合、バンク・インターリーブを使用してバスの効率を維持できます。
注: ページサイズとは、単一のアクティブ化コマンドでアクセスする任意の行の列位置の最小数を指しています。例えば、1024の列位置を備える512 Mbのx8 DDR3 SDRAMの場合 (列アドレス A[9:0])、ページサイズは1024列 x 8 = 8192ビット = 8192/8バイト = 1024バイト (1 KB) です。

インターリーブを使用しない場合、コントローラーはアドレスを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から受け取ります。

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

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


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

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

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

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

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