バスマトリクスは便利であるものの、やみくもにマトリクス状にすればよいわけではない。特定のペリフェラル機能で、決められたバスマスターしかアクセスしない場合は、バスマトリクスに含まずに専用の経路を設けた方が、ハードウェアが軽くなるだけでなく、転送効率も上がる。例えば、CPUでデータを処理する必要がなく、単純にデータを転送すればよい場合などは、バスマスターにCPUが割り当てられているバスマトリクスを使う必要はない。
図5の黄色の線が専用経路を示している。APB1はペリフェラル機能に直接つながっているバスで、バスマトリクスを介さずに直接DMA1につながる経路を持つ。同様に、APB2もペリフェラル機能につながっていて、バスマトリクスを介さずDMA2に直接つながっている。そのため、特定のペリフェラル機能のデータは、バスマトリクスを介さずDMA1またはDMA2に送ることができ、さらにバスマトリクス経由でSRAM2などのバススレーブに送ることができる。
シングルバスでバスマスターが複数ある場合、バス権の調停(Bus Arbitration:バスアービトレーション)が必須だ。バスマトリクスは、複数のバスの組み合わせだからバス権の調停は必要ないようにみえるが、そうではない。バスマトリクスでも、バス権の調停は必要になる。というのも、全てのデータ転送経路が完全に独立しているわけではないからだ。
バス権の調停方式には、いくつか種類がある。代表的なものは、ラウンドロビン、サイクルスチール、バーストだ。
簡単に復習しておくと、ラウンドロビンは順番にバス権を譲っていく方式。サイクルスチールは、CPUがメモリにアクセスしていないバスサイクルの間をぬって、他のバスマスターがバスを使う方式。バースト方式は、一定時間、1つのバスマスターがバス権を占有する方式だ。*1)参考
どの方式なのかは、マイコンの仕様によって決まっており、マニュアルに記載されている。
Copyright © ITmedia, Inc. All Rights Reserved.