チャネル・コントローラ チャネル・コントローラの概要

チャネル・コントローラ

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2018/01/27 09:10 UTC 版)

概要

多くの入出力タスクは複雑であり、データのフォーマットを変換するなどの処理をする必要がある。このような場合コンピュータのCPUはそのタスクを周辺デバイスに任せるが、周辺デバイスの処理は遅いため、CPUはその間ずっと何もしないで待っていることになる。このような状況を「I/Oバウンド」と呼ぶ。

チャネル・コントローラはこの問題を解決する。そのような入出力に関わる処理を行うためのCPUとメモリと回路を備えている。チャネル・コントローラはあまり高性能である必要はなく、柔軟性もないが、その仕事をするには十分である。実際にはコプロセッサの一種と見なすこともできる。

CPUは小さなチャネルプログラムをコントローラに送り、I/Oジョブを任せる。チャネル・コントローラはCPUの助けを借りずにそのジョブを完了させる。完了すると(あるいはエラーが発生すると)、チャネル・コントローラは割り込みでCPUに通知する。なお、プログラムのロードや仮想記憶におけるデマンドページングなどの基本的なシステムタスクの場合、完了時以外にもプログラム制御割り込みをチャネルプログラム内で使用することがある。

チャネル・コントローラはコンピュータの主記憶装置に直接アクセスするので「DMAコントローラ」とも呼ばれる(DMAはdirect memory access)。しかし、DMAコントローラの定義はもっと広く、プログラム不可能なデバイスでもそのように呼ばれる。

歴史

最初のチャネルI/Oを採用したのは、真空管を使ったメインフレーム IBM 709 である[1]。その周辺機器である Model 766 Data Synchronizer が世界初のチャネル・コントローラであり、1957年に登場した。709 をトランジスタ化した後継機 IBM 7090 では[2]、2つ以上のチャネル (7607) を備え、最大8個のチャネルを制御できるチャネル・マルチプレクサ (7606) も取り揃えていた。

その後、System/360や初期のSystem/370の大型機でも、セレクタ・チャネルやマルチプレクサ・チャネルが大掛かりで高価な別プロセッサとして構成されている。例えば、IBM 2860(セレクタ・チャネル)、IBM 2870(マルチプレクサ・チャネル)、IBM 2880(ブロック・マルチプレクサ・チャネル)などがある。System/360でも小型機では、CPU内のマイクロコードでチャネルを実装し、CPU自体が「CPUモード」と「チャネルモード」の2つのモードで動作した。その後、チャネル・コントローラはCPUと同じ筐体内の別個のオンボードプロセッサとなった。

アムダールは、System/370互換機でチャネルI/Oを全く異なる方法で実装した。"C-Unit" と呼ばれる単一の内部ユニットで最大16本のチャネルをサポートしている。C-Unit は最大2個搭載可能で、全部で32本までのチャネルを制御できる。C-Unit は特殊な有限状態機械 (FSM) のように機能してプロセスをそれぞれ独立に実行する。これを「チャネル状態シフト (shifting channel state)」と呼ぶ。CPUサイクル毎(470/V6およびV5では32ナノ秒ごと、470/V7およびV8では26ナノ秒ごと)に、C-Unit が優先順位に従って次のチャネルの状態を完全に読み取る。チャネルの最新状態によって必要な動作が決定されており、そのチャネルの「タグ」が実行される。すなわち、主記憶上のデータの読み書きを行い、チャネルプログラムにOS通知が指定されていたらOSに通知を行い、C-Unitがそのチャネルの次の状態を格納完了すると、次の優先順位のチャネルへと移行する。C-UnitにはFIFOストレージが十分あり、全チャネルがFSMによってエミュレートされる。IBM 2860/2870/2880のエミュレーションが可能であり、制御卓からコマンドを発行することでエミュレーション方式を変更できる。本家よりも柔軟性が高かったため、IBMが等価な機能を実装するため設計変更を余儀なくされたほどである。

IBM(および互換機)以外で最初にチャネル・コントローラを使ったのは1965年の CDC 6600 スーパーコンピュータであり、10個の「周辺プロセッサ」(peripheral processorPP)と呼ぶコンピュータを備えていた。PPは極めて強力で、実のところCDCの初期のコンピュータ CDC 160A の改良版だった。オペレーティングシステムはPP0上で動作していた。その後、チャネル・コントローラはほとんどのメインフレームで採用されており、より小型のコンピュータと比較した際の重要な利点となっていた。

チャネル・コントローラはシングルチップで複数チャネルを操作するものも作られ、NeXTコンピュータでも使われた。しかし、最近のコンピュータの性能向上が激しいため、またオペレーティングシステムが入出力待ち状態で停止することがなくなったため、小さなマシンでは使われなくなっていった。

チャネル・コントローラの機能はバスマスタリング周辺機器に受け継がれている。PCIDMAデバイスなどがある。主記憶とデバイス間のデータ転送をCPUの代わりに行い、処理完了時にCPUに割り込むということで、基本概念はチャネルI/Oと同じである。

解説

チャネルI/Oのリファレンス実装とされているのは、IBM System/360 とその後継メインフレームのものであるが、同様の実装は他のメインフレーム(CDCBullGEハネウェルユニシス)でも採用されている。

チャネルI/O方式を採用したシステムには、システムのCPUとは全く独立して入出力操作全体を制御する専用のハードウェア部品が存在する。チャネルI/O方式のシステムのCPUでは入出力のための機械語命令は一種類だけ存在するのが一般的である。その命令は「チャネルプログラム」の形式でI/O専用ハードウェアに入出力コマンド群を渡すための命令である。その命令を実行後、入出力処理はCPUを煩わせることなく行われ、オペレーティングシステムに通知すべきイベントが発生すると、I/OハードウェアがCPUに対して割り込みを通知する。

チャネルは独立したハードウェアコンポーネントであり、配下のコントローラや周辺機器の入出力を行う。名前が暗に示しているような単なる通信媒体ではない。I/O操作のリスト(チャネルプログラム)を与えられ、それを解釈してI/O処理を行うインテリジェントなハードウェア機器である。

各チャネルには1つ以上のコントローラや周辺機器が接続される。チャネルプログラムにはチャネル自身へのコマンドと、接続された各種コントローラや周辺機器へのコマンドが含まれる。ただし、1つのチャネルプログラムが対象とするのは、1つのデバイスのみである。OSは、必要なコマンド群を用意すると、そのチャネルプログラムを起動するための機械語命令を実行する。その後、チャネルは指定された処理が完了するまで動作する。

非常に複雑なチャネルプログラムを書くことも可能で、データの値を調べ、その値によってチャネルプログラム内で条件分岐することもできる。この柔軟性があるため、CPUは個々の入出力操作を起動/監視/管理するオーバヘッドから解放される。チャネル機構は入出力専用であり、CPUよりも効率的に入出力処理が可能で、かつCPUと完全に並行動作できる。チャネルI/Oは Direct Memory Access (DMA) よりも複雑で機能が豊富である。多くのメインフレームのOSはチャネルI/Oの機能を完全には使いこなしていなかった。

大型メインフレームでは、CPU は並行して動作する強力なハードウェアコンポーネントの1つに過ぎない。様々な入出力コントローラ(メーカーによって名称は異なる)が入出力を専門に処理し、それらがやはり入出力専用のチャネルに接続されている。1つのシステムには複数のCPUと複数のI/Oプロセッサが存在することもある。このアーキテクチャにより、CPUの性能を犠牲にすることなく入出力性能を最適化する。メインフレームの実際のアプリケーションでは入出力性能が重要であり、このアーキテクチャによってメインフレームは非常に高いスループットを実現し、他のクラスのコンピュータとは一線を画していた。

IBMESA/390では、ツリー状または階層状のI/Oサブシステム内のパラレルデータ接続をチャネルと呼ぶ。System/390のI/O筐体では、筐体内のデバイスを接続するケーブルをチャネルと呼ぶ(ESCONケーブル、FICONケーブルなど)。また、I/O筐体からOAフロアの下を通って、磁気テープシステムやDASDなどを接続するケーブルもチャネルと呼ばれた。


  1. ^ 709 Data Processing System”. IBM. 2012年3月20日閲覧。
  2. ^ 7090 Data Processing System”. IBM. 2012年3月20日閲覧。
  3. ^ IBM Corporation (1968). Student Text: Introduction to IBM System/360 Architecture. IBM Corporation. pp. 22. http://www.bitsavers.org/pdf/ibm/360/GC20-1667-1_intro360arch.pdf. 
  4. ^ Attanasio, C.R.; Markstein, P.W. and Phillips, R.J. (1976). “Penetrating an Operating System: a Study of VM/370 Integrity”. IBM Systems Journal 15 (1): 102-116. doi:10.1147/sj.151.0102. 
  5. ^ IBM Corporation (1969). IBM System/360 Component Descriptions: 2314 Direct Access Storage Facility and 2844 Auxiliary Storage Control. IBM Corporation. pp. 50.2. http://www.bitsavers.org/pdf/ibm/dasd/A26-3599-4_2314_Sep69.pdf. 
  6. ^ IBM Corporation (1978). OS/VS2 MVS Overview. pp. 8-12. http://www.bitsavers.org/pdf/ibm/370/OS_VS2/GC28-0984-0_OSVS2_MVS_Overview.pdf. 


「チャネル・コントローラ」の続きの解説一覧



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「チャネル・コントローラ」の関連用語

チャネル・コントローラのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



チャネル・コントローラのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのチャネル・コントローラ (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2024 GRAS Group, Inc.RSS