チャネル・コントローラ
出典: フリー百科事典『ウィキペディア(Wikipedia)』
チャネル・コントローラ(channel controller)は、コンピュータシステムの一部であり、周辺機器とメモリの間のデータのやりとりを制御する単純なプロセッサ(CPU)である。設計の洗練度によって「周辺プロセッサ」あるいは「DMAコントローラ」とも呼ばれる。
多くの入出力タスクは複雑であり、データのフォーマットを変換するなどの処理をする必要がある。 このような場合コンピュータのCPUはそのタスクを周辺デバイスに任せるが、周辺デバイスの処理は遅いため、CPUはその間ずっと何もしないで待っていることになる。
チャネル・コントローラはこの問題を解決する。そのような入出力に関わる処理を行うためのCPUとメモリと回路を備えている。 チャネル・コントローラはあまり高性能である必要はなく、柔軟性もないが、その仕事をするには十分である。 実際にはコプロセッサの形式をとることが多い。 CPUは小さなプログラムをコントローラに送り、I/Oジョブを任せる。チャネル・コントローラはCPUの助けを借りずにそのジョブを完了させる。完了すると(あるいはエラーが発生すると)、チャネル・コントローラは割り込みでCPUに通知する。
チャネル・コントローラはコンピュータの主記憶装置に直接アクセスするので「DMAコントローラ」とも呼ばれる(DMAはdirect memory access)。しかし、DMAコントローラの定義はもっと広く、プログラム不可能なデバイスでもそのように呼ばれる。
最初にチャネル・コントローラを使ったのはCDC 6600スーパーコンピュータであり、12個の「周辺プロセッサ」(peripheral processor、PP)と呼ぶコンピュータを備えていた。PPは極めて強力で、実のところCDCの最初のコンピュータCDC 1604の機能削減版だった。1960年代からチャネル・コントローラは汎用コンピュータで必ず使われていた。CDCのPPは最も強力なチャネル・コントローラであり、単にチャネル・コントローラとしてだけでなく、オペレーティングシステムの大部分の仕事をこなした。
チャネル・コントローラはシングルチップで複数チャネルを操作するものも作られ、NeXTコンピュータでも使われた。 しかし、最近のコンピュータの性能向上が激しいため、またオペレーティングシステムが入出力待ち状態で停止することがなくなったため、小さなマシンでは使われなくなっていった。
チャネル・コントローラの機能はバスマスタリング周辺機器に受け継がれている。SCSIアダプタやネットワークカードがそれである。
- (訳注:チャネルとは周辺デバイスへのアクセスポートとみなすことができる。各デバイスは一般に一度にひとつの入出力要求しか受け付けられない。そこでそのようなデバイス毎にチャネル番号を付与し、そのチャネルに対してチャネルプログラムという形式で入出力要求を送る。チャネルプログラムは、ページング方式の仮想記憶を採用しているCPU側と物理空間しか理解できない入出力側をつなぐもので、仮想空間上連続なバッファの物理構造を記述している。また、汎用コンピュータにはネットワーク関係のI/Oを専門に扱うネットワーク・プロセッサというものもあり、こちらは様々なネットワーク上のプロトコルを処理して本体側が理解できる特定のプロトコル(SNAなど)に変換するゲートウェイの役割を果たしていた。)