このセクションでは、各種トランザクションおよびエージェントのトランザクション フローについて詳しく説明します。CPM を CCIX-RA として使用するには、アクセラレータ カーネル以外に PL の追加ロジックが必要です。まず、CCIX-RA モードに必要な追加のモジュールについて説明します。
RA (Request Agent): RA は、読み出しおよび書き込みトランザクションのソースとなる CCIX エージェントです。各 CCIX RA は、AF (Acceleration Function) と呼ばれる内部イニシエーターを 1 つまたは複数持つことができます。
次のブロック図に、CCB をバイパスしない場合に CCIX-RA モードで必要な PL モジュールの概要を示します。
図 1. CCIX-RA モードの CPM とプログラマブル ロジックのブロック図
- CPM の PCIe コントローラーからの PCIe AXI-S インターフェイスは ATS スイッチに接続し、この ATS スイッチが ATS (アドレス変換サービス) および受信したトランザクションを ATC (アドレス変換キャッシュ) へ転送します。
- PCIe AXI ブリッジは、ATS スイッチ ブロックからの VC0 に対する PCIe AXI4-Stream インターフェイスに接続し、AF ユニットへの制御インターフェイスを提供します。
- System Cache は、CPM から PL への CHI インターフェイスの代わりに、ユーザーが使用可能な AXI インターフェイスを提供します。IP コンフィギュレーション時に、追加のキャッシング サポートも有効にできます。また、System Cache は ATC ロジックも実装します。
-
ユーザー カーネルが AF です。
ホスト システム上のアプリケーションが仮想アドレスでユーザー カーネルをプログラムする場合、トランザクション フローは次のようになります。
- System Cache IP はアドレス変換キャッシュ (ATC) とアドレス変換サービス (ATS) を実装します。ATS を有効にした場合、受信したすべての AX4 要求に対して System Cache IP は ATC をチェックします。キャッシュ ヒットの場合は、ATC からの変換後のアドレスを使用します。キャッシュ ミスの場合、System Cache IP は PCIe AXI Bridge IP によって提供される AXI4-Stream インターフェイスを介してこの仮想アドレスに対する ATS 要求を発行し、受信した変換後アドレスを使用して変換内容を ATC にキャッシュします。
- 仮想アドレスに対して読み出しまたは書き込みトランザクションを発行するカーネルの場合、System Cache はアドレス変換を実行した後、キャッシュを参照してヒットかミスかを判定します。キャッシュ ミスの場合、トランザクションは PL からアクセス可能な CHI インターフェイスを介して CPM に送信されます。
トランザクション フロー
このセクションでは、基本的なトランザクション フローについて説明します。この中で、「ローカル」とはデバイス自身を指し、「リモート」はリンク経由でアクセスするピア エージェントを指します。
- ローカル メモリに対するローカル要求が、ローカル キャッシュにヒット
- これは、PL 内のカーネルはローカル メモリを参照するメモリ アクセスを生成する場合です。トランザクションは、読み出しの場合と書き込みの場合があります。PL にマップされた L1 キャッシュ (System Cache IP で実装) または CPM 内の L2 キャッシュ (L2 キャッシュが存在し、有効にしている場合) のいずれかにヒットします。キャッシュされたコピーがそれ以外の場所に存在しない場合、L2 キャッシュ (L2 キャッシュが存在し、有効にしている場合) を超えて要求を伝搬する必要はありません。
- ローカル メモリに対するローカル要求が、リモート キャッシュにヒット
- これは、カーネルが生成したローカル メモリへの参照が、どのローカル キャッシュにもヒットしない場合です。HA は、この要求をシステム内のその他すべての要求に対してシリアライズします。リモート ノードにキャッシュされたコピーが存在する可能性が SF によって示される場合、これらのキャッシュに PCIe 経由でスヌープが送信されます。キャッシュにヒットすると、要求元 (この場合は PL 内のカーネル) にデータが返されます。
- ローカル メモリに対するローカル要求が、ローカル メモリにアクセス
- これは、ローカル キャッシュにヒットせず、キャッシュされたコピーがシステム内に存在しないことが SF によって示される場合です。HA はローカル DDR メモリ (NoC を経由して SBSX) からデータを読み出し、PL 内のカーネルに返します。
- リモート メモリに対するローカル要求が、ローカル キャッシュにヒット
- これは、ローカル カーネルがリモート メモリを参照するメモリ アクセスを生成する場合です。トランザクションは、読み出しの場合と書き込みの場合があります。PL にマップされた L1 キャッシュ (System Cache IP で実装) または L2 キャッシュ (L2 キャッシュが存在し、有効にしている場合) のいずれかにヒットします。キャッシュされたコピーがそれ以外の場所に存在しない場合、L2 キャッシュ (L2 キャッシュが存在し、有効にしている場合) を超えて要求を伝搬する必要はありません。
- リモート メモリに対するローカル要求が、ローカル キャッシュにミス
- これは、要求がリモート ホーム ノードに送信され、リモート ホーム ノードの PoC でシリアライズされる場合です。キャッシュされたコピーが存在することがリモート ホーム ノードの SF によって示される場合、リモート ホーム ノードの PoC はシステム内のほかのキャッシュをスヌープします。SF が存在しない場合は、リモート ホーム ノードの PoC はブロードキャスト スヌープを送信します。キャッシュにヒットすると、リモート ホーム ノード、要求元の順にデータが返されます。どのキャッシュにもヒットしない場合、PoC はリモート メモリからデータを返します。
- ローカル メモリに対するリモート要求
- これは、リモート RA からアクセラレータに接続されたメモリへの要求を受信した場合です。CCB のホーム ノード PoC は、この要求を同じアドレスに対するすべての要求に対してシリアライズします。SF を参照し、SF によって示されるキャッシュへスヌープが送信されます。スヌープに加え、PoC は要求を満たすためにローカル メモリにもアクセスできます。
- リモート スヌープ
- アクセラレータにキャッシュされたアドレスへのリモート参照の場合、リモート スヌープを受信します。スヌープはキャッシュを参照した後、必要に応じてステートを更新し、プロトコルに従って応答を生成します。
重要: PL System Cache から CML WriteUnique (WU) への帯域幅の差異について: WU の帯域幅は、CML を経由すると理想値の 16GB/s から 12.8GB/s へ低下します。この帯域幅の低下が観察されるのは、L2 を経由した場合のみです。したがって、WU の帯域幅を重視する場合は、L2 インスタンスをバイパスしてください。
CCB バイパス モードでは、プロトコル エージェント機能を実装するユーザー向けに、CPM-PCIe コントローラーからの CXS インターフェイスがプログラマブル ロジックから直接アクセス可能になります。ザイリンクスではリクエスト エージェント (RA) の実装用に System Cache IP を提供しています。詳細は、 『System Cache LogiCORE IP 製品ガイド』 (PG118) を参照してください。