バスマスタリング
表示
バスマスタリング(英: Bus mastering)は、多くのバスでサポートされている機能であり、接続されているデバイスがトランザクションを起動できるもの。
一部のバスでは、唯一のデバイス(通常はCPUまたはその代理)だけがトランザクションを起動できる。PCIなど最近のバスアーキテクチャでは、複数のデバイスが「バスマスター」になることができ、汎用オペレーティングシステムでの性能向上に寄与している。一部のリアルタイムオペレーティングシステムは周辺機器がバスマスターになるのを禁止して、レイテンシが予測不可能とならないようにしている。
バスマスタリングは、理論的には任意の周辺機器が他の周辺機器と直接通信できるものだが、実際には主記憶とのDMAの実行にのみ使われていることが多い。例外として、ビデオキャプチャーやTVチューナーカードのビデオオーバーレイにはバスマスタリング技術が使われている。またグラフィクスカードがメインメモリから描画要素を集めて、CPUから完全に独立して描画を行い、画面全体をオーバーレイとする技術もある(Windows VistaのAero、Mac OS XのQuartz Expressがこれに当たる)。
複数のデバイスがバスマスターになれる場合、同時に複数のデバイスがマスターにならないようにする調停方法が必要となる。その方式はバスによって様々である。例えば SCSI は各 SCSI ID 毎に固定の優先順位を設定している。PCI ではアルゴリズムは指定されておらず、優先順位の設定は実装依存となっている。
外部リンク
[編集]- 2.PnPの仕事:「バスリソース」の割り当て The Linux Plug-and-Play-HOWTO(Linux Japanese FAQ Project)