FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

キャッシュコヒーレンスを管理するバスプロトコルの勉強 (2. ACE / CHI / TileLinkの比較)

ACE / CHI / TileLink のチャネル構成の違い

それぞれのバスプロトコルについて、チャネルの構成の違いをまとめてみた。一部ChatGPTに教えてもらっている。

  • ACE
チャネル名 方向 概要・役割
AW (Address Write) マスター → スレーブ 書き込みアドレスを送信。バースト長や保護属性なども含む。
W (Write Data) マスター → スレーブ 実際の書き込みデータを送信(可変ビート数)。
B (Write Response) スレーブ → マスター 書き込み完了やエラー等のステータスを返す。
AR (Address Read) マスター → スレーブ 読み出しアドレスを送信。バースト長や保護属性なども含む。
R (Read Data) スレーブ → マスター 読み出しデータ、および応答ステータスを返す。
AC (Snoop Address) インターコネクト/他コア → キャッシュ スヌープ要求(「このアドレスのキャッシュラインをどう扱っているか?」等)を送信。
CR (Snoop Response) キャッシュ → インターコネクト/他コア スヌープ応答(「Modified状態」「Shared状態」等の通知、書き戻し要否など)を返す。
CD (Snoop Data) キャッシュ → インターコネクト/他コア 必要に応じてキャッシュラインの実データ(Dirtyラインなど)を転送。
  • CHI
チャネル名 方向 概要・役割
REQ (Request Channel) リクエスタ(マスター) → インターコネクト/ターゲット リード/ライト要求やコヒーレントアクセス要求など、各種トランザクションの開始を通知。
SNP (Snoop Channel) インターコネクト → スヌープターゲット(キャッシュ) コヒーレンス保持のためのスヌープ要求(「このラインを無効化して」「Modifiedなら書き戻して」など)を送信。
RSP (Response Channel) ターゲット/スヌープターゲット → リクエスタ 上記REQ/SNPに対するレスポンス(成功・失敗、Dirty転送要否など)を返す。
DAT (Data Channel) 双方向 (状況により変化) 実際のデータペイロードを転送するチャネル。読み出しデータ、書き戻しライン、ディレクタリ情報など。
  • TileLink
チャネル名 方向 概要・役割
A (Client to Manager) マスター(クライアント) → スレーブ(マネージャ) 基本的なリクエスト(PutFull/PutPartial, Acquireなど)を送信。
B (Manager to Client) スレーブ(マネージャ) → マスター(クライアント) プローブ(Probe)など、スレーブ側からクライアント側へ追加リクエストを行う。
C (Client to Manager) マスター(クライアント) → スレーブ(マネージャ) リリース(Release)等、クライアントがキャッシュラインを手放す際などに使用。
D (Manager to Client) スレーブ(マネージャ) → マスター(クライアント) A/B/C で発行されたリクエストの最終的な応答(Grant, AccessAck, ReleaseAckなど)やデータ転送を行う。
E (End / Finish) 双方向 (通常はManager→Clientの後) トランザクションを終了(Complete)するための最終ハンドシェイク。Grant後のFinishなどで使用される。