チャネル・コントローラ
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2018/01/27 09:10 UTC 版)
チャネルプログラム
チャネルコマンド語(channel command word、CCW)とは、チャネルに接続された機器の入出力操作("read" や "seek" など)を指示するコマンドである。
CCW によってチャネルプログラムが構成される。チャネルプログラムはOSか何らかの独立したソフトウェア(診断プログラムなど)が作成する。CPUが上述の機械語命令を実行すると、独立した入出力処理ユニットに信号が送られ、その装置が要求されたI/Oに責任を持つ。システムのメインCPUはその間別の作業ができる。I/O操作処理中にOSに通知すべき事象が発生すると、入出力プロセッサはCPUに割り込みを送信し、OSにその後の処理を任せる。
IBMメインフレームの初期の機種では、チャネルは1つの周辺装置と1対1に対応していた。その後、RISCプロセッサをチャネル・プロセッサとして使用するようになり、全チャネルを1つのチャネル・プロセッサで扱うようになっていった。
チャネルI/Oでは入出力をかなり簡略化できる。例えば、IBM の Linux/390 では、DASD(Direct Access Storage Device)のトラック全体のフォーマットを1つのチャネルプログラム(つまり1回のI/O命令)だけで実行できる。その間、メインCPUは別の作業が可能である。
CCW(チャネルコマンド語、channel command word)は、チャネル・プロセッサ専用の命令セットであり、チャネル・プロセッサは一種の有限状態機械である。チャネルに接続されたデバイスに対して "read"、"write"、"sense" といったI/O操作を行う。一般に、チャネルI/Oを採用したアーキテクチャでは、全周辺機器はチャネルに接続され、入出力は全てCCWを使って行われる。
チェーニング
IBMのCCWはチェーニングによってチャネルプログラムを構成する。CCW内のビットで記憶装置上の次の位置にあるデータが同じチャネルプログラムを構成するCCWかどうかを示している。チャネルプログラムは例外発生や分岐CCW実行といった事象が発生するまで逐次的に実行され、チェーニング指定が途切れたところで終了する。チェーニングには「コマンドチェーニング」と「データチェーニング」がある。コマンドチェーニングは次のCCWが新たなコマンドであることを示す。データチェーニングは次のCCWが現在のコマンドの追加データのアドレスであることを示し、例えばデバイスに書き込む1レコード分のデータが主記憶上でばらばらに存在している場合などに対応できる[3]。
自己書き換え型のチャネルプログラム
チャネルプログラムを実行中に読み取ったデータに基づいてチャネルプログラム自身を書き換えることもできる。この技法はよく使われており、例えばOS/360の ISAM などで使われている[4]。
具体例
以下の例は、ディスク上のレコードをキーで検索して読み取るチャネルプログラムである[5]。そのレコードを含むトラックと所望されるキーの値は不明である。このデバイスの制御装置は要求されたレコードを見つけるためトラックを検索する。
SEEK <cylinder/head number> SEARCH KEY EQUAL <key value> TIC *-8 READ DATA <address of record>
TIC (transfer in channel) は一致するキーを持つレコードが見つかるまで(あるいはトラックの終端に到達するまで)直前のSEARCHコマンドに分岐するCCWである。キーが一致するレコードが見つかると分岐せず、次のREADコマンドを実行することになる。
- ^ “709 Data Processing System”. IBM. 2012年3月20日閲覧。
- ^ “7090 Data Processing System”. IBM. 2012年3月20日閲覧。
- ^ IBM Corporation (1968). Student Text: Introduction to IBM System/360 Architecture. IBM Corporation. pp. 22 .
- ^ 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.
- ^ IBM Corporation (1969). IBM System/360 Component Descriptions: 2314 Direct Access Storage Facility and 2844 Auxiliary Storage Control. IBM Corporation. pp. 50.2 .
- ^ IBM Corporation (1978). OS/VS2 MVS Overview. pp. 8-12 .
- チャネル・コントローラのページへのリンク