インテル® アクセラレーション・スタック (インテル® Xeon® CPU&FPGA対応) コア・キャッシュ・インターフェイス (CCI-P) リファレンス・マニュアル

ID 683193
日付 11/04/2019
Public
ドキュメント目次

1.3.10. バイト・イネーブル・メモリー・リクエスト (インテル FPGA PAC D5005)

書き込みデータを詳細に制御し、データの特定のバイトのみをホストメモリーに書き込むには、バイト・イネーブル・モードを使用します。以下に、バイト・イネーブル・メモリー・リクエストの特性を示します。
  • バイト・イネーブル・メモリー・リクエストは、バイト不変のリトル・エンディアン・スキームを使用します。すなわち、これは次のことを意味します。
    • データ構造内の単一または複数バイトの要素の場合、その要素はメモリーの同じ連続バイトを使用します。これは、byte_startおよびbyte_lenヘッダーフィールドで指定されます。
    • 書き込みデータは、キャッシュライン内の格納されるオフセットのデータフィールドに配置されます。最初に書き込まれるデータビットは、ビットbyte_start*8です。
  • byte_startはバイト・インデックスを指定します。最下位バイトは0 (pck_af2cp_sTx.c1.data[7:0]) であり、最上位バイトは63 (pck_af2cp_sTx.c1.data[511:504]) です。
  • byte_lenは、バイト・イネーブルのメモリー書き込みトランザクションに含まれるバイト数を指定します。バイト長は、書き込みデータを最上位バイトに向かって拡張します。
  • バイト・イネーブル・メモリー・リクエストは、キャッシュ長 (cl_len) を0 (1 CLメモリー書き込みリクエスト) に設定して行う必要があります。
  • 長さは、pck_af2cp_sTx.c1.dataのバイト63を超えることができません。許容される最大のバイト長は、次の計算式で表すことができます。
    • byte_startが0の場合
      • MAX_BYTE_LEN = 63
    • byte_startが0ではない場合
      • MAX_BYTE_LEN = 64 – byte_start
次の表は、チャネル1のリクエストヘッダー (pck_af2cp_sTx.c1.hdr) が、バイト・イネーブル・モードにおいてバイトをインデックス付けする方法の例を示しています。この例においてAFUデザイナーは、データワード0xAAAABBBBCCCCDDDDEのバイト [20:4] (pck_af2cp_sTx.c1.data[167:32]) を、アドレス0xFFF00のホストメモリーのバイト [20:4] に書き込みます。
  ビット・インデックス 幅 (ビット) フィールド
ヘッダー 79:74 6 byte_len 0x11
73:72 2 vc_sel eVC_VA (0x0)
71 1 sop=1 1
70 1 (CL/バイト) 0:CL、1:バイト 1
69:68 2 cl_len 0
67:64 4 req_type eREQ_WRLINE_I (0x0)
63:58 6 byte_start 0x4
57:18 40 address 0xFFF00
17:16 2 0x0
15:0 16 mdata 0x0
データ 512 データ 0xAAAABBBBCCCCDDDDE
図 15. アドレス0xFFF00のホストメモリー この図は、書き込み前後のホストメモリーの値を示しています。