AXIの主な機能を箇条書きにまとめます。
アンアラインドデータとはデータサイズでアライメントされていないデータです。32ビットマイコンの場合、データは32ビット毎にアライメント、すなわち32ビットの境界線にそろえられています。この境界線をまたいだデータをアンアラインドデータと呼びます。AXIプロトコルでアンアラインドデータを扱う場合は、バイト(8ビット)単位で行われます。
DMAの仕様をAXIプロトコルに合わせれば、DMAの適用が可能です。次の章「実際のAXI」で紹介するSTM32MP1ではAXIのインタフェースにDMA(名称はMDMA)を接続しています。
アウトオブオーダーとは、順番に無関係に転送が行われるという意味です。すなわち、最初のアドレスを発行し、その転送が完了する前に、複数のアドレスを発行でき、後から発行したアドレスの転送の方が、先に発行したアドレスの転送よりも早く完了することがあるということです。最終的には、発行されたアドレスの転送は全て完了しますが、最も効率の良い転送順序で実施されるので、タイムロスを最小限に防げます。
ここでは、実際にSTM32F7シリーズで使われているAIXを紹介します。図4にSTM32F765BGT6のバスアーキテクチャを示します。
STM32ファミリーの内部バスはバスマトリックスで構成されています。STM32F7シリーズもバスマトリックス構成を踏襲しています。バスマトリックスは、従来の製品と互換性を維持するために、AXIとはプロトコルが異なります。そのため、Cortex-M7のAXIを直接バスマトリックスに接続することはできません。そこで、Cortex-M7のAXIとバスマトリックスの間にコンバーターが入っています。Cortex-M7がマスターインタフェースになり、コンバーターがスレーブインタフェースになります。
AXIはコンバーターからAHBブリッジを経由して、外部メモリFMC、外部メモリQuad SPI、内部SRAM(SRAM1とSRAM2)および内蔵フラッシュメモリにつながっています。そのため、これらのメモリは、AXIのコンバーター経由になります。そのため、見かけ上AXIのチャネル上に存在することになります。いずれも、命令コードとデータの転送が可能です。
バスマトリクスにはDMA1とDMA2がつながっているので、AXIのチャネル上の外部メモリFMC、外部メモリQuad SPI、内部SRAM(SRAM1とSRAM2)および内蔵フラッシュメモリにDMAでアクセスできます。
一方で、Cortex-M7は、従来のAXIを持たないCortex-Mシリーズとのバス互換性を維持するためITCMバスインタフェース、DTCMバスインタフェース、AHBSバスインタフェースも搭載しています。ITCMはフラッシュメモリの命令フェッチ、データアクセスに使われます。DTCMはRAMのデータアクセスまたは命令フェッチに使われます。
AHBSバスはRAM上のデータ転送に使われます。
Copyright © ITmedia, Inc. All Rights Reserved.