AXI(Advanced eXtensible Interface)は、ARMのAMBA(Advanced Microcontroller Bus Architecture)仕様の一部であり、特にオンチップでの高速なデータ通信のために設計されたパラレルインターフェースです。AMBA 3およびAMBA 4仕様に含まれ、高性能、同期、高周波動作、マルチマスター、マルチスレーブといった特徴を持ちます。
AXIの歴史と特徴
AXIは、2003年にAMBA 3仕様の一部として初めて導入されました。その後、2010年にはAMBA 4の新しいリビジョンにおいて、AXI 4、AXI 4-Lite、AXI 4-Streamという3つのプロトコルが定義されました。これらのプロトコルは、さまざまな用途や要件に対応できるよう、柔軟性を持たせて設計されています。AXIの仕様はロイヤリティフリーで提供されており、ARMから無償で入手できます。
AXIの主な機能
アドレス/制御とデータフェーズの分離: AXIは、アドレスや制御信号とデータ転送を明確に分離することで、効率的なデータ転送を実現します。
アラインメントされていないデータアクセス: データがメモリ境界に整列していなくても、アクセスが可能です。
バースト転送: 連続したデータ転送をまとめて行うバースト転送をサポートしており、効率的なデータ転送が可能です。
独立した読み書きチャネル: 読み取りと書き込みのための独立したチャネルを持つことで、双方向のデータ転送を同時に行うことができます。
未処理トランザクションのサポート: 複数のデータ転送要求を同時に処理することができ、システムの応答性を向上させます。
アウト・オブ・オーダー実行: 同じマスターポートからの異なるスレッドIDを持つトランザクションは、順序に関係なく完了できます。ただし、同じスレッドIDを持つトランザクションは順序が保証されます。異なるマスターポート間では、
アウト・オブ・オーダー実行も可能です。
アトミック操作: データの一貫性を保つためのアトミック操作をサポートします。
パイプライン処理: 複数のデータ転送を同時に実行することで、データ転送速度を向上させます。
*
最大1024ビットのデータ幅: 幅広いデータバスに対応しており、高速なデータ転送が可能です。
AXIの柔軟性
AMBA AXIは、さまざまなオプション信号を規定しています。これらのオプション信号は、設計の特定の要件に応じて追加することができ、AXIを幅広いアプリケーションに適した汎用バスにしています。AXIバスを介した通信は、通常、単一のマスターと単一のスレーブ間で行われますが、仕様にはN:Mの相互接続を可能にするための詳細な説明と信号も含まれています。これにより、より多くのマスターとスレーブを持つ複雑なシステム構成にも対応できます。
AXIの採用例
AMBA AXI4、AXI4-Lite、AXI4-Streamプロトコルは、
ザイリンクスなどの主要な企業によって、製品の主要な通信バスとして広く採用されています。これは、AXIの柔軟性と高性能が、さまざまな用途で求められるデータ転送ニーズを満たすことができるためです。
AXIプロトコル
AXIの仕様は、しばしば「AXIプロトコル」と呼ばれます。これは、
PCI Expressなどの物理的なバス仕様まで規定するインターフェースとは異なり、AXIがオンチップバス向けであることから、通信端点となる各デバイスの挙動を中心とした抽象度の高いレベルで仕様が定義されているためです。
論理合成を実行すると、回路の制約や最適化によって、AXI仕様通りの信号線が必ずしも得られるとは限りません。このため、AXIはハードウェア設計において、柔軟な実装を可能にする一方で、設計者が注意深く仕様を理解し、適切な回路設計を行う必要があります。
まとめ
AXIは、高性能なオンチップデータ通信を実現するための重要なインターフェースです。その柔軟性と高いパフォーマンスから、多くの組み込みシステムやFPGAで採用されており、今後もその重要性は増していくと考えられます。