ACE / CHI / TileLink のチャネル構成の違い
それぞれのバスプロトコルについて、チャネルの構成の違いをまとめてみた。一部ChatGPTに教えてもらっている。
チャネル名 |
方向 |
概要・役割 |
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ラインなど)を転送。 |
チャネル名 |
方向 |
概要・役割 |
REQ (Request Channel) |
リクエスタ(マスター) → インターコネクト/ターゲット |
リード/ライト要求やコヒーレントアクセス要求など、各種トランザクションの開始を通知。 |
SNP (Snoop Channel) |
インターコネクト → スヌープターゲット(キャッシュ) |
コヒーレンス保持のためのスヌープ要求(「このラインを無効化して」「Modifiedなら書き戻して」など)を送信。 |
RSP (Response Channel) |
ターゲット/スヌープターゲット → リクエスタ |
上記REQ/SNPに対するレスポンス(成功・失敗、Dirty転送要否など)を返す。 |
DAT (Data Channel) |
双方向 (状況により変化) |
実際のデータペイロードを転送するチャネル。読み出しデータ、書き戻しライン、ディレクタリ情報など。 |
チャネル名 |
方向 |
概要・役割 |
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などで使用される。 |