バスマトリクス
マイコン内部のクロスバー。CPUとDMAコントローラが1本のバスを順番に奪い合うのではなく、別々のメモリへ同時にアクセスできるようにする。
単純なバスでは、同時に使えるマスタは1つだけだ。DMAが転送している間CPUは待たされる。これがいわゆるサイクルスチールである。バスマトリクス(Armの用語ではマルチレイヤAHB)は、各マスタからすべてのスレーブへ専用の経路を与える。コアの命令バスがフラッシュから命令を取り込み、データバスがSRAMを読み、2つのDMAコントローラが周辺機能へ書き込む。これらが同じクロックサイクルで進む。
競合が起きるのは、2つのマスタが同じスレーブを求めたときだけで、その場合はアービタ(多くはラウンドロビン)が調停する。ベンダーがSRAMを別ポートの複数ブロックに分けているのはこのためだ。リンカスクリプトで配置を工夫すれば、DMAとCPUが同じメモリを奪い合わずに済む。リアルタイム要件を満たせるかどうかを決めるのは、表紙に書かれたクロック周波数ではなく、リファレンスマニュアルのブロック図に並ぶ矢印と交差である。