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

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

1.3.10.1. バイト・イネーブルとフル・キャッシュ・ライン・アクセスの併用

一部のアプリケーションでは、AFUは、ホストメモリーの64バイト境界に始まりがアライメントされていないバッファー、または次の64バイト境界よりも前に終わるバッファーにアクセスすることが必要になります。AFUは、バイト・イネーブルのトランザクションおよびフル・キャッシュライン・アクセスを併用し、任意の境界で開始または終了するバッファー書き込みを実行することができます。そのような転送の場合にAFUは、バイト・イネーブルのバースト (mode=eMOD_BYTE) とフル・キャッシュ・ラインのバースト (mode=eMOD_CL) を混在させることはできません。

次の例においてAFUは、バイトアドレス0x62ECで始まるインクリメント・パターンの152バイトを書き込みます。アクセスされる最初と最後のバイトアドレスは64バイト境界に揃っていないため、転送は3つのセクションに分割されます。開始セクションと終了セクションはバイト・イネーブルを使用して、メモリーの64バイトにアライメントされた領域内のバイトのサブセットを更新します。最初のセクションは20バイトをメモリーに書き込み、その後128バイトがフル・キャッシュ・ライン・バーストを使用して書き込まれます。そして最後の4バイトの書き込みが続きます。
図 16. アクセスされるメモリーと対応するCCIPアドレス

最初のアクセスが64バイト境界で開始しないため、モードはeMOD_BYTEに設定されます。byte_startフィールドは0x2C、byte_lenフィールドは0x14、そしてCCIPアドレスビット41:2は0x62に設定され、CCIPアドレスビット1:0は0x3に設定されます。

2番目のアクセスは2CLの境界にアライメントされているため、次の128バイトは、モードがeMOD_CLに設定された2ビートのバーストとしてポストすることができます。2つのモードを同じバーストでインターリーブすることはできないため、このアクセスは、モードをeMOD_BYTEに設定するビートと組み合わせることはできません。

3番目のアクセスは64バイト境界で開始しますが、メモリーの4バイトにしかアクセスしません。そのため、モードはeMOD_BYTEに設定されます。byte_startフィールドは0x0、byte_lenフィールドは0x4、そしてCCIPアドレスビット41:2は0x63に設定され、ビット1:0は0x2に設定されます。
図 17. バイト・イネーブルとフル・キャッシュ・ラインを併用するアクセスのタイミング図
図 18. ホストメモリー