FPGA開発日記

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

AMBA5 の CHI (Coherence Hub Interface)についての調査 (1. 概要)

developer.arm.com

developer.arm.com

AMBA5ではデバイス間のコヒーレンスを取るためのプロトコルとしてCHIが導入される。CHIはCoherent Hub Interfaceの略称で、AMBA4ではACEと呼ばれていたものを拡張したものになる。

AMBA history

ACEとCHIの違いはどのようになっているのだろうか。CHIは3階層に分かれたパケットベースの階層型通信プロトコルを持っているという点がACEと異なる。SoC内のより幅広いデバイスを持っており、CPUクラスタ・グラフィクスプロセッサ・メモリコントローラ・I/Oブリッジなどの機能を持っており、これらの機能をCHIを使って結合することを目的としている。

CHIの特徴は以下のようになっている。

  • スケーラブルなアーキテクチャとモジュール化されたデザインにより、小さなシステムから大きなシステムまで適用できる。
  • 独立した階層によるアプローチを取っている。プロトコル層、ネットワーク層、リンク層に分けられている。
  • パケットベースの送受信を行う。
  • スヌープ・キャッシュ・メモリアクセスなどが必要なインターコネクトベースのホームノードによりすべてのトランザクションが処理される。
  • CHIは以下のコヒーレントプロトコルをサポートする。
    • 64バイトのキャッシュライン
    • スヌープフィルタとディレクトリベースのシステム
    • MESIとMOESIキャッシュモデルにより任意のキャッシュ状態からのデータフォワーディング
    • キャッシュラインステータスを追加する
  • CHIのトランザクションは以下のものを含む
    • システムキャッシュの性能・面積・電力効率を向上させるための高機能なトランザクションタイプを含んでいる。
    • インターコネクト間でのアトミック操作・同期操作をサポートする
    • 排他アクセスの効率的な事項をサポートする
    • 効率的なデータ移動とデータの配置の転送をサポートする。
    • 分散仮想メモリ(Distributed Virtual Memory: DVM)によよる仮想メモリ管理をサポートする
  • プロトコルのリソースを管理するためのリトライリクエストをサポートする
  • エンドツーエンドでのQuality of Service(QoS)をサポートする
  • システム内でのコンフィギャラブルなデータ幅をサポートする
  • トランザクション単位でのARM TrustZoneをサポートする
  • 送信トランザクションフローの最適化
  • エラー通知システムによりシステムの信頼性と整合性を確保する
  • 電力対策

CHIのレイヤ

CHIは以下のレイヤから構成される:

CHIのトポロジ

CHIはトポロジを一般的に定義せず、どのようなトポロジでも動作することができるということになっている。

  • クロスバ:シンプルな構成で低レイテンシの通信を提供できるが、ノード数が小さい場合にのみ適する
  • リング:効率性とレイテンシのトレードオフが存在する。リングが大きくなるとレイテンシも増加する
  • メッシュ:より多くの配線を使用することでより大きなバンド幅を確保する。スイッチを配置することでスケーラビリティがありより大きな構成を取ることができる

コヒーレンスモデル

CHIが想定するコヒーレントシステムの例を以下に示す。

f:id:msyksphinz:20210809235956p:plain:w400

f:id:msyksphinz:20210810000014p:plain:w400

  • RN : Request Node
  • HN-F : Home Node. Request Nodeからトランザクションを受けとる。
    • HN-F : Fully Coherent Home Node. DVMOpを除くすべてのリクエストを受け取る
      • スヌーピングによりコヒーレンシを管理するためのPoC(Point of Coherence)を含んでいる
      • PoS(Point of Serialization)を含んでおりメモリリクエストの順序管理を行う
      • ディレクトリやスヌープフィルタを持っており、冗長なスヌーピングを除去する
    • HN-I : Non-Coherent Home Node
      • プロトコル内の一部のリクエストをサポートする
      • PoCによるスヌーピングなどの処理はサポートしない
      • PoSなどをサポートし、IOサブシステムに対するIOリクエストなどの順序管理を行う
  • SN : Slave Node
    • HNからリクエストを受け付ける。要求された動作を行いレスポンスを生成する
    • SN-F : Slave Node used for Normal Memory. 一般的なスヌープ不可能な読み書きとアトミック操作を行い、Cache Maintenance Operation(CMO)も行う
    • SN-I : Slave Node used for Peripherals or Normal Memory. ペリフェラル向け