チャネル・コントローラ
多くの入出力タスクは複雑であり、データのフォーマットを変換するなどの処理をする必要がある。このような場合コンピュータのCPUはそのタスクを周辺デバイスに任せるが、周辺デバイスの処理は遅いため、CPUはその間ずっと何もしないで待っていることになる。このような状況を「I/Oバウンド」と呼ぶ。
チャネル・コントローラはこの問題を解決する。そのような入出力に関わる処理を行うためのCPUとメモリと回路を備えている。チャネル・コントローラはあまり高性能である必要はなく、柔軟性もないが、その仕事をするには十分である。実際にはコプロセッサの一種と見なすこともできる。
CPUは小さなチャネルプログラムをコントローラに送り、I/Oジョブを任せる。チャネル・コントローラはCPUの助けを借りずにそのジョブを完了させる。完了すると(あるいはエラーが発生すると)、チャネル・コントローラは割り込みでCPUに通知する。なお、プログラムのロードや仮想記憶におけるデマンドページングなどの基本的なシステムタスクの場合、完了時以外にもプログラム制御割り込みをチャネルプログラム内で使用することがある。
チャネル・コントローラはコンピュータの主記憶装置に直接アクセスするので「DMAコントローラ」とも呼ばれる(DMAはdirect memory access)。しかし、DMAコントローラの定義はもっと広く、プログラム不可能なデバイスでもそのように呼ばれる。