High Bandwidth Memory (HBM2) Interface Intel® FPGA IPユーザーガイド

ID 683189
日付 10/05/2020
Public
ドキュメント目次

6.5.1. ユーザー制御のRefresh

デフォルトでは、HBM2パラメーター・エディター設定によって、HBM2コントローラーでは、RefreshコマンドをHBM2 DRAMにスケジュールできます。ただし、ユーザーロジックからもRefreshコマンドをメモリーに発行することもできます。

ユーザーロジックによるRefresh要求の発行を許可する場合は、パラメーター・エディターのController Settingsで次のように指定してください。

Controller Settings > REFRESH MODE値をController Refresh AllからUser Refresh AllまたはUser Refresh Per-bankに変更します。

各APBインターフェイスは、1つのHBM2チャネルに対応するため、要求のアドレス指定は、Pseudo Channel 2つのうち1つ (一度にPseudo Channel 1つ) に対して行ってください。

リフレッシュ間隔のタイミングは、HBM2 DRAMタイミングに固有です。必要なリフレッシュ・レートの提供は、HBM2 DRAMによってされ、TEMP[2:0] ベクトルを介します。これは、APBインターフェイスを介して読み出すことができます。

表 29.  DRAM Refreshのタイミング
TEMP[2:0] リフレッシュ・レート
000 4x tREFI
001 2x tREFI
011 1x tREFI
010 0.5x tREFI
110 0.25x tREFI
111 未定
101 未定
100 未定

ユーザーロジックから使用できるリフレッシュ・コマンドのオプションは次のとおりです。

  • バンク単位ベースで発行されるユーザー・リフレッシュ・コマンド。HBM2 Pseudo Channelに対応するバンクに対応しています。
  • すべてのバンクに対するユーザー・リフレッシュ・コマンド。HBM2 Pseudo Channelに対応するすべてのバンクに対応しています。
  • セルフリフレッシュ・コマンド。

すべてのユーザー・リフレッシュ要求は、APBインターフェイス・プロトコルに従います。ユーザーロジックでは、Refresh要求を発行し、HBM2コントローラーからの確認応答を待ってから、別のRefresh要求を発行します。

バンクごとのユーザー・リフレッシュ

バンクごとのユーザー・リフレッシュ要求を構成するのは次のコマンドです。これは、APBインターフェイスに対して発行されたものです。

表 30.  バンクごとのユーザー・リフレッシュ要求のAPB書き込みデータ定義
リフレッシュ要求の書き込みデータ定義 説明
[0] Pseudo Channel Numberです。Pseudoチャネル番号を示す次の値を設定します。

0 - Pseudo Channel 0

1 - Pseudo Channel 1

[5:1]

バンクごとのリフレッシュのバンク番号です。

ビット[5] - 8GBコンフィグレーションのStack ID

ビット[4:1] - 4ビットBank Address
[6] バンクごとまたはすべてのバンクのリフレッシュを選択します。バンクごとのリフレッシュの場合は、1’b0に設定します。
[7] 予約済み。1'b0に設定します。
[8] ユーザーが開始したリフレッシュ要求です。このビットを1'b1に設定して、リフレッシュ・コマンドを開始します。
[12:10] バンク・リフレッシュ・バースト機能ごとのバースト数です。バースト = 値[1:0] + 1。バンクごとのリフレッシュ・バースト機能は、HBM2コントローラーでサポートされています。この機能により、ユーザー・インターフェイスでは、リフレッシュ・コマンド発行の要求を複数のHBM2 DRAMバンクに対してすることができます。
[15:13] バンクごとのリフレッシュ・バースト機能の増分値。最大バンク値に達するとロールオーバーします。増分 = value[2:0] + 1です。ここで value が指すのは、書き込みコマンド発行時の現在のバンクアドレスです。これが開始バンクアドレスになります。
注: Pseudo Channelごとのバンクの総数に対する最大増分値の比率を4で割ります。(例えば、4Hデバイスの最大値は16/4=4です。)

バンクごとのユーザー・リフレッシュ・コマンドを発行するには、次の手順に従います。

  1. アドレス16’h0000への書き込みを対応するWrite Dataで行います。
    • 例えば、16’b0000_0001_0000_0010のWriteデータ (Pseudo Channel 0、バンクアドレスの位置はビット[5:1] 、ビット[6] の設定はバンクごとのリフレッシュの場合は0、ビット[8] はUser initiated Refresh Requestに設定)。
    • バンクごとのリフレッシュの複数バーストを発行するには、PWDATA[12:10] およびPWDATA[15:13] の対応ビットを必要な設定項目で設定します。
  2. Refresh Request Acknowledgeのアドレス16’h0000から読み出します。
  3. PRDATA[9] によって1'b1が返され、コントローラーによるリフレッシュ要求の受け入れが示されるまで待ちます。PRDATAの他のビットの値はすべて無視できます。次の図で示すのは、APBインターフェイスに対するバンクごとのリフレッシュ要求のタイミングです。
    図 29. バンクごとのAPBリフレッシュ要求のタイミング

異なるPseudo Channelへの個々の要求の発行は、連続して行う必要があります。HBM2コントローラーからAcknowledge信号が発行されるのを待ってから、別のRefresh要求を発行してください。

すべてのバンクに対するユーザー・リフレッシュ

表 31.  すべてのバンクに対するユーザー・リフレッシュ要求のAPB書き込みデータの定義
リフレッシュ要求の書き込みデータビットの定義 説明
[0] Pseudo Channel Numberです。値0をPseudo Channel 0に対して設定するか、値1をPseudo Channel 1に対して設定します。
[5:1] バンクごとのリフレッシュのバンク番号です。すべてのバンクのリフレッシュは無視します。
[6] バンクごとまたはすべてのバンクのリフレッシュを選択します。バンクごとのリフレッシュの場合は、1’b1に設定します。
[7] 予約済み。1'b0に設定します。
[8] ユーザーがリフレッシュ要求を開始しました。このビットを1'b1に設定して、リフレッシュ・コマンドを開始します。
[15:9] 無視します。
表 32.  ユーザー・リフレッシュ要求のAPB読み出しデータの定義
リフレッシュ要求の読み出しデータビットの定義 説明
[8:0] 予約済み。
[9] HBM2コントローラー発行のRefresh Request Acknowledgeです。
  • 1'b1 - 1'b1の読み出しデータでは、HBM2コントローラーによるRefreshコマンドのAcknowledgeを示します。
  • リフレッシュ要求が発行されたら、Acknowledgeビットがアサートされるのを待ってから、次の要求を発行してください。
[15:10] 予約済み。

すべてのバンクへのユーザー・リフレッシュ・コマンドを発行するには、次の手順に従います。

  1. 対応するWrite Dataを使用してアドレス16’h0000に書き込みます。
    • 例えば、16’b0000_0001_0100_0010のWriteデータ (Pseudo Channel 0、バンクアドレスの位置はビット[5:1] 、ビット[6] の設定はバンクごとのリフレッシュの場合は0、ビット[8] はUser initiated Refresh Requestに設定)。
  2. Refresh Request Acknowledgeのアドレス16’h0000に読み出します。
  3. PRDATA[9] によって1'b1が返され、コントローラーによるユーザー・リフレッシュ要求の受け入れが示されるまで待ちます。次の図で示すのは、すべてのバンクに対するリフレッシュ要求のAPBインターフェイスのタイミングです。
    図 30. すべてのバンクに対するAPBリフレッシュ要求のタイミング

Self Refresh

Self Refresh状態に入るには、次のコマンドをAPBインターフェイスに対して発行します。

  1. 16’h0001のWrite Data(PWDATA) を使用してアドレス16’h004に書き込みます。
  2. アドレス16’h004から読み出します。データの読み出し (PRDATA [1]) によって値1’b1が返され、HBM2コントローラーがSelf Refresh状態にあることが示されるまで待ちます。

Self Refresh状態を終了するには、次のコマンドをAPBインターフェイスに発行します。

  • 16'h0000のWrite Data(PWDATA) を使用して16'h0004に書き込み、Self-Refreshを終了します。Self Refresh Acknowledgeが1'b0になるまで待ってから次のSelf Refresh要求を発行します。

書き込みデータバスを使用して、セルフ・リフレッシュの開始または終了を要求します。読み出しデータ バスを使用して、HBM2チャネルのセルフ・リフレッシュ・ステータスを読み出します。次の表で示すWriteデータ定義およびReadデータ定義を使用して、セルフ・リフレッシュにアクセスします。

表 33.  セルフ・リフレッシュ用のAPB書き込みデータビットの定義
書き込みデータビットの定義 説明
[0] ユーザーが開始したSelf-Refresh Requestです。Self Refreshを開始するには、
  • 1’b1: Self Refreshを開始します。
  • アサートすると、 Self Refresh要求を示します。このビットを1'b1に設定して、Self Refreshへのエントリーを開始します。
Self Refreshを終了するには、
  • 1’b0: Self Refreshを終了します。
  • このビットを1'b0にクリアして、Self Refreshを終了します。
[15:1] 予約済み。
表 34.  セルフ・リフレッシュ用のAPB読み出しデータビットの定義
読み出しデータビットの定義 説明
[0] 予約済み。
[1] セルフ・リフレッシュ・ステータス:
  • 1’b1: HBM ChannelはSelf Refresh中です。
  • 1’b1: HBM ChannelはSelf Refresh中ではありません。
[15:2] 予約済み。