(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B1)
(11)【特許番号】
(24)【登録日】2024-09-02
(45)【発行日】2024-09-10
(54)【発明の名称】情報処理装置及び入出力処理方法
(51)【国際特許分類】
G06F 13/10 20060101AFI20240903BHJP
G06F 13/14 20060101ALI20240903BHJP
【FI】
G06F13/10 330C
G06F13/14 330C
(21)【出願番号】P 2023051742
(22)【出願日】2023-03-28
【審査請求日】2023-03-28
(73)【特許権者】
【識別番号】000227205
【氏名又は名称】NECプラットフォームズ株式会社
(74)【代理人】
【識別番号】100149548
【氏名又は名称】松沼 泰史
(74)【代理人】
【識別番号】100181135
【氏名又は名称】橋本 隆史
(72)【発明者】
【氏名】妙嶋 慎二郎
【審査官】松平 英
(56)【参考文献】
【文献】特開2019-114197(JP,A)
【文献】国際公開第2015/025358(WO,A1)
【文献】国際公開第2011/151930(WO,A1)
【文献】米国特許第09026694(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F13/00-13/14
13/20-13/42
(57)【特許請求の範囲】
【請求項1】
入出力処理に係るチャネルプログラムを実行する演算処理手段と、
I/O管理テーブルを記憶する記憶手段と、
を備え、
前記I/O管理テーブルには、デバイスへの前記入出力処理における前記デバイスの制御に用いられるLCテーブルが、前記デバイスへのインタフェースである物理チャネルに接続可能な前記デバイスの最大数分含まれ、前記最大数分の前記LCテーブルを、実際に物理チャネルに接続されている前記デバイスに対応する実LCと、前記デバイスに対応していない空LCと、の2つに分割し、全体を仮想LCとしたときに、
前記チャネルプログラムには、前記入出力処理を行う前記デバイスを指定する実LC番号と、前記入出力処理に用いる前記LCテーブルを指定する仮想LC番号と、を設定することができ、
前記演算処理手段は、前記チャネルプログラムに基づいて、前記実LC番号が示す前記デバイスへ、前記仮想LC番号が示す前記LCテーブルを用いて入出力処理を行う、
情報処理装置。
【請求項2】
前記I/O管理テーブルには、前記物理チャネルの数だけ、前記物理チャネルの管理に用いられるPCテーブルが含まれ、
前記実LCの識別番号が連続する番号で、前記空LCの識別番号が前記実LCの識別番号のうちの最大の番号の次の番号から始まる連続する番号の場合に、
前記PCテーブルには、当該PCテーブルで管理する前記物理チャネルに接続される前記デバイスについて、前記空LCの最初の番号である開始番号と、前記空LCが有効か無効かを示す情報とが設定される、
請求項1に記載の情報処理装置。
【請求項3】
自装置の起動時に前記物理チャネルに接続される前記デバイスを検出し、接続されている前記デバイスの数分を前記実LCとして、前記実LCの前記識別番号に前記連続する番号を設定し、残りを前記空LCとして、前記空LCの前記識別番号に前記最大の番号の次の番号から始まる連続する番号を設定する手段、
をさらに備える請求項2に記載の情報処理装置。
【請求項4】
前記演算処理手段は、前記チャネルプログラムに設定された前記仮想LC番号に基づいて、当該仮想LC番号が示す前記LCテーブルを使用した入出力処理の実行状態を確認し、前記実行状態が未実行であれば、前記仮想LC番号を指定して前記チャネルプログラムに基づく入出力処理要求を入出力処理手段に対して行い、前記実行状態が実行中ならば前記チャネルプログラムを作成したソフトウェアに入出力要求を実行できないことを報告する、
請求項2に記載の情報処理装置。
【請求項5】
前記入出力処理手段は、前記PCテーブルに設定された前記有効か無効かを示す情報が、前記空LCが有効であることを示す場合、前記開始番号に基づいて、前記演算処理手段から指定された前記仮想LC番号が前記実LCか前記空LCかを判断し、前記実LCの場合、前記仮想LC番号に対応する前記LCテーブルに設定された前記チャネルプログラムへのアドレスより前記チャネルプログラムを読み出して、前記仮想LC番号に対応する前記デバイスに対して入出力処理を行う、
請求項4に記載の情報処理装置。
【請求項6】
前記入出力処理手段は、前記PCテーブルに設定された前記有効か無効かを示す情報が、前記空LCが有効であることを示す場合、前記開始番号に基づいて、前記演算処理手段から指定された前記仮想LC番号が前記実LCか前記空LCかを判断し、前記空LCの場合、前記仮想LC番号に対応する前記LCテーブルに設定された前記チャネルプログラムへのアドレスより読み出した前記チャネルプログラムに設定された前記実LC番号が示す前記デバイスに対して、前記アドレスより読み出した前記チャネルプログラムに基づいて入出力処理を行う、
請求項4に記載の情報処理装置。
【請求項7】
前記入出力処理手段は、前記PCテーブルに設定された前記有効か無効かを示す情報が、前記空LCが無効であることを示す場合、前記演算処理手段から指定された前記仮想LC番号に対応する前記LCテーブルに設定された前記チャネルプログラムへのアドレスより前記チャネルプログラムを読み出して、前記仮想LC番号に対応する前記デバイスに対する入出力処理を行う、
請求項4に記載の情報処理装置。
【請求項8】
前記LCテーブルに、前記実LC番号を設定する領域を設け、
前記入出力処理手段は、前記チャネルプログラムを終了したとき、前記LCテーブルの前記領域に、前記チャネルプログラムの前記実LC番号に設定された値を格納して、前記チャネルプログラムを作成したソフトウェアに前記チャネルプログラムの終了を報告する、
請求項5又は請求項6に記載の情報処理装置。
【請求項9】
コンピュータによって実行される入出力処理方法であって、
入出力処理に係るチャネルプログラムに、前記入出力処理を行うデバイスを指定する実LC番号と、前記入出力処理における前記デバイスの管理に用いられ、前記デバイスへのインタフェースである物理チャネルに接続可能な前記デバイスの最大数分用意されたLCテーブルの何れかを指定する仮想LC番号と、を設定し、
前記実LC番号が示す前記デバイスへ、前記仮想LC番号が示すLCテーブルを用いて前記チャネルプログラムに基づく入出力処理を行う、
入出力処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置及び入出力処理方法に関する。
【背景技術】
【0002】
一般的な情報処理装置の構成を
図1に示す。情報処理装置1は、一般的な大型コンピュータであり、例えば、メインフレーム等に相当するものである。中央処理装置(以下、CPU(Central Computing Unit)と呼ぶ)100上にはソフトウェアの命令を実行する演算処理装置(以下、EPU(Execution Processing Unit)と呼ぶ)101と、命令や処理データなどを格納するメインメモリ102と、他のCPU100と接続するためのNode I/F(インタフェース)104と、ディスク装置などの周辺処理装置300との入出力を行うための入出力処理装置(以下、IOP(Input-Output Processor)と呼ぶ)200を接続するためのBus I/F103と、が内部バス105によって接続され、相互にアクセスできるようになっている。なお、情報処理装置1は、各I/Fを接続することにより、
図22のように構成を拡張することが出来る。
【0003】
IOP200には、CPU100と周辺処理装置300との間のデータ転送を実行するためのI/Oコントローラ(以下、IOCと呼ぶ)201と、EPU101からの指示によりデータ転送を制御するためのプロセッサ202と、プロセッサ202上で動作するファームウェアや制御情報を格納するローカルメモリ203と、IOP200と周辺処理装置300とのI/Fである物理チャネル205~208を実装しており、それぞれ内部バス204によって接続されている。なお、物理チャネル205~208はHBA(Host Bus Adapter)カード等のPCIe(PCI Express)カードであり、ファイバーチャネルなどの媒体によって周辺処理装置300と接続されている。
【0004】
周辺処理装置300は外部記憶装置などであり、ディスクアレイ装置などに相当する。周辺処理装置300がディスクアレイ装置である場合を例に説明すると、その内部には、IOP200からの指示に従ってCPU100とディスク装置300-0~300-63(以下、デバイス300-0~300-63と記載する場合がある。)との間のデータ転送を制御するための処理装置(以下、PCUと呼ぶ)301と、データを格納するための複数のデバイス300-0~300-63を内部バス302によって接続している。本明細書では、一例として64台のディスク装置が接続されているものとする。
【0005】
情報処理装置1では、EPU101上で動作するソフトウェアはチャネルプログラムを作成してメインメモリ102と周辺処理装置300との間の入出力処理を行うが、どの装置に対して入出力を行うかを指定するために各装置に番号が割り当てられている。CPU100に接続されるIOP200に対してIOP番号が割り当てられ、IOP200内の物理チャネル205~208に対してPC番号が割り当てられ、周辺処理装置300内の各デバイス300-0~300-63にはLC番号が割り当てられる。
図1の情報処理装置1に対しては
図2のような割り当てとなる。例えば、IOP200にはIOP番号0(IOP#0)が割り当てられ、物理チャネル205~208にはそれぞれPC番号0~3(PC#0~3)が割り当てられ、周辺処理装置300の各ディスク装置300-0~300-63にはLC番号0~63(LC#0~63)が割り当てられる。
【0006】
情報処理装置1では、入出力処理を管理するため、メインメモリ102上に
図3に示すI/O管理テーブル2を作成している。IOPT10-0~10-nは、IOP200を管理するためのテーブルであり、CPU100に接続されたIOP台数分存在し、IOP番号順に並んで格納されている。PCT20-0~20-mはIOP200に実装された物理チャネルを管理するためのテーブルであり、IOP毎に物理チャネル数分だけ連続して格納されている。LCT30-0~30-pは周辺処理装置300内のディスク装置300-0などのデバイスを管理するためのテーブルで、予め決定された数のテーブルがLC番号順に並んで格納されている。
【0007】
IOPT10-0~10-nの構造を
図4に示す。IOPT10-nは、自IOP200配下のPC番号0の物理チャネルを管理するPCT20-0のアドレスを示すPCT#0ポインタ10-n-1と、自IOP200配下の物理チャネル数を示す最大PC数10-n-2と、IOP制御情報10-n-3を格納している。
【0008】
PCT20-0~20-mの構造を
図5に示す。PCT20-mは、自物理チャネル配下のLC番号0のデバイスを管理するLCT30-0のアドレスを示すLCT#0ポインタ20-m-1と、自物理チャネル配下のデバイス数を示す最大LC数20-m-2と、PC制御情報20-m-3を格納している。
【0009】
LCT30-0~30-pの構造を
図6に示す。LCT30-pは、LC番号に対応する周辺処理装置のデバイスに対する入出力処理を行うためのチャネルプログラムアドレス30-p-1と、チャネルプログラムの実行状態等を示すLC状態30-p-2と、自LCT30-pに対応しているIOP番号とPC番号を格納するIOP番号30-p-3、PC番号30-p-4と、自LCT30-pのLC番号を格納する仮想LC番号30-p-5aと、チャネルプログラムアドレス30-p-1で示されたチャネルプログラムの実行結果等を格納する事象報告30-p-6と、LCT30-pに対応するデバイスの各種情報を格納するLC制御情報30-p-7を格納している。
【0010】
図3~
図6に示したIOPT10、PCT20、LCT30のエントリ数は情報処理装置1の構成によって決定される。情報処理装置1にIOPが8台接続できる構成であればIOPT10は8エントリ存在し、IOP毎に物理チャネルが4台まで実装可能であればPCT20はIOP毎に4エントリ存在し、LCT30はすべての周辺処理装置300のデバイスを構成できるように、あらかじめ定められた定数分だけ、PC毎にエントリが存在する。IOPT10、PCT20、LCT30は情報処理装置1の初期化時にEPU101上で動作するファームウェアによって情報処理装置1の構成に従って初期化され、最大PC数10-n-2や最大LC数20-m-2もそのとき構成に合わせて設定される。本明細書では、一例としてLCTのエントリ数は128として説明する。
【0011】
図7に示すように、LCT30の各エントリ30-0~30-63は周辺処理装置300のデバイス300-0~300-63に対応しており、ソフトウェアおよびEPU101は、デバイス300-0~300-63に対して入出力処理を行う場合、対応するLCT30-0~30-63にチャネルプログラムアドレスを設定してIOP200にデバイス300-0~300-63に対応するIOP番号、PC番号、LC番号を指定して入出力指示を行う。
図7では、周辺処理装置300のデバイスは64台しかなく、LCT30-64~30-127は対応デバイスが無く空きエントリとなっている。
【0012】
ここに、一般的な技術の課題がある。任意のデバイス300-rに対して入出力処理を行うには、チャネルプログラム40を作成してデバイス300-rに対応するLCT30-rにチャネルプログラム40のアドレスを設定してIOP200に入出力処理を指示する。このとき、LCT30-rはチャネルプログラム40の処理が完了するまでビジー状態となり、その処理が完了するまでデバイス300-rに対する別の入出力処理を発行することが出来ない。ディスク装置300-rがHDD(Hard Disk Drive)やSSD(Solid State Drive)などの場合、別の領域に対するアクセスは同時に発行可能であるが、一般的な技術では同時に発行を行うことが出来ず、情報処理装置1の性能向上の足枷になってしまう。以下に、一般的な技術における入出力処理の詳細について、
図11A~
図13を参照して説明する。
【0013】
情報処理装置1において、CPU100と周辺処理装置300の間で入出力処理を行うには、EPU101上で動作するソフトウェアが、
図8に示すチャネルプログラム40を作成し、EPU101に対して入出力要求を行う。チャネルプログラム40はチャネルプログラムヘッダ(以下、CPHと呼ぶ)40-0と、チャネルコマンドエントリ(以下、CCEと呼ぶ)40-1~40-qによって構成されている。
【0014】
CPH40-0の構成を
図9に示す。入出力要求先であるデバイス300-rを示すIOP番号40-0-2とPC番号40-0-3とLC番号40-0-4は、Word3に格納される。また、チャネルプログラム40の実行に必要な情報は、Word0~2のチャネルプログラム制御情報40-0-1に格納される。CPH40-0に続くCCE-n(nは1~q)の構成は
図10に示す。入出力処理の指示内容を示すCCEコマンド40-n-1と、CCEコマンド40-n-1を修飾するCCEフラグ40-n-2がWord0に格納され、CCEコマンド40-n-1に対する各種情報は、Word1~3のCCE制御情報40-n-3に格納される。
【0015】
IOP200はプロセッサ202上で動作するファームウェアを実装しており、チャネルプログラム40を解釈して入出力処理を実行する。また、EPU101もファームウェアを内蔵しており、ソフトウェアの命令に従って対応する処理を行う。一般的な技術でソフトウェアが周辺処理装置300に対して入出力を行う場合は次のような動作となる。ここでは、周辺処理装置300内の任意のディスク装置300-rに対して入出力を処理するものとして説明する。
【0016】
CPU100上で動作するソフトウェアが、周辺処理装置300のディスク装置300-r内に格納されたデータに対して入出力処理を行う場合、メインメモリ102上にチャネルプログラム40を作成する。このとき、ソフトウェアは入出力先のディスク装置300-rを指定するため、CPH40-0のIOP番号40-0-2とPC番号40-0-3とLC番号40-0-4を設定する。
図2の構成とするならば、IOP番号は0、PC番号は0、LC番号はrになるので、CPH40-0のIOP番号40-0-2には0、PC番号40-0-3には0、LC番号40-0-4にはrを格納する。そして、CPH40-0のチャネルプログラム制御情報40-0-1やCCE40-nに入出力制御に必要な情報を格納し、チャネルプログラム40のアドレスとしてCPH40-0の先頭アドレスを指定してEPU101に対して入出力要求命令を実行する。
【0017】
EPU101はソフトウェアにより入出力要求命令を実行されると、EPU101に内蔵するファームウェアの入出力要求処理400を実行する。一般的な技術における入出力要求処理400を
図11A、
図11Bに示す。入出力要求処理400では、EPU101は、最初にソフトウェアから指示されたチャネルプログラム40のアドレスよりCPH40-0を読み出し(ステップ401)、CPH40-0のWord3より入出力要求先のIOP番号40-0-2、PC番号40-0-3、LC番号40-0-4を読み出す(ステップ402)。
【0018】
次に、EPU101は、IOP番号40-0-2よりIOPTアドレスを求める(ステップ403)。IOP番号0のIOPTアドレスは情報処理装置1内で一意に決まっており、IOP番号とIOPTサイズの乗算値をそのアドレスに加算することで求めることが出来る。IOPTアドレスを求めたらIOPT10-nより最大PC数10-n-2を読み出してPC番号40-0-3と比較し(ステップ404)、PC番号が最大PC数以内か確認する(ステップ405)。PC番号40-0-3が最大PC数10-n-2の値を超える場合は(ステップ405;No)、情報処理装置1の構成範囲外なのでソフトウェアに異常終了を報告して処理を終える(ステップ417、ステップ418)。
【0019】
PC番号40-0-3が最大PC数10-n-2以内(ステップ405;Yes)であれば正常であるので、IOPT10-n(
図4)よりPCT#0ポインタ10-n-1を読み出し、その値にPCTサイズとPC番号40-0-3を乗算した値を加算することでPC番号40-0-3に対応するPCTアドレスを求める(ステップ406)。そして、PCT20-mより最大LC数20-m-2を読み出してLC番号40-0-4と比較し(ステップ407)、LC番号40-0-4が最大LC数20-m-2以内か確認する(ステップ408)。LC番号40-0-4が最大LC数20-m-2を超える場合は(ステップ408;No)、情報処理装置1の構成範囲外なのでソフトウェアに異常終了を報告して処理を終える(ステップ419、420)。
【0020】
次に、PCT20-mよりLCT#0ポインタ20-m-1を読み出し、LCTサイズとLC番号40-0-4を乗算した値を加算することでLC番号40-0-4に対応するLCTアドレスを求める(ステップ409)。そして、LCT30-pよりLC状態30-p-2を読み出し、LC状態が未使用かどうか確認する(ステップ410、411)。LC状態30-p-2には値が格納されており、その値が0の場合は未使用を示し、0以外の場合はチャネルプログラムが実行中であることを示している。LC(デバイス300-r)が既に使用されているときは他の入出力要求を処理することが出来ないので、ソフトウェアに入出力要求が処理できなかったことを報告して処理を終える(ステップ420、421)。
【0021】
LC状態30-p-2が未使用状態を示しているのなら、LCT30-pのチャネルプログラムアドレス30-p-1にソフトウェアから指示されたチャネルプログラムアドレスを格納し(ステップ412)、LCT30-pのLC状態30-p-2に1を設定してチャネルプログラム待ち状態に設定する(ステップ413)。そして、IOP番号40-0-2で指示されたIOP200にIOP番号40-0-2、PC番号40-0-3、LC番号40-0-4を指定して入出力要求を通知する(ステップ414)。これは、EPU101からIOP200のIOC201を介してプロセッサ202に割込み通知などすることで行われる。そして、ソフトウェアに入出力要求が正常終了したことを報告して処理を終える(ステップ415、416)。
【0022】
IOP200は、EPU101より入出力要求を受けると、プロセッサ202上で入出力要求を処理する入出力処理500を実行する。一般的な技術における入出力処理500を
図12に示す。入出力処理500では、プロセッサ200は、最初にEPU101より通知されたIOP番号、PC番号、LC番号よりLCTアドレスを求める(ステップ501)。LCTアドレスの求め方は、EPU101の入出力要求処理400で説明した方法と同じである。LCTアドレスを求めたら、プロセッサ200は、LCT30-pよりLC状態30-p-2を読み出し、チャネルプログラム待ち状態か確認する(ステップ502、503)。これは、LC状態30-p-2に1が格納されているかどうかで確認する。チャネルプログラム待ち状態でない(LC状態30-p-2に1が格納されていない)場合(ステップ503;No)は、通常では起こりえない異常であるので障害処理を実行して処理を終える(ステップ512、513)。
【0023】
LC状態30-p-2がチャネルプログラム待ち状態であるならば(ステップ503;Yes)、プロセッサ202は、LC状態30-p-2に2を書き込んでLC状態30-p-2をチャネルプログラム実行中に設定し(ステップ504)、LCT30-pよりチャネルプログラムアドレス30-p-1を読み出す(ステップ505)。そして、チャネルプログラムアドレスよりチャネルプログラム40を読み出し(ステップ506)、EPU101より通知されたLC番号に対応するデバイスに対してチャネルプログラム40の処理を実行する(ステップ507)。この場合、デバイス300-rに対してチャネルプログラム40の処理を行う。IOP200と周辺処理装置300のチャネルプログラム40の処理方法については、本発明の範囲外なので説明しない。
【0024】
チャネルプログラム40の処理が完了したら、処理結果をLCT30-pの事象報告30-p-6に格納し、EPU101より指示されたIOP番号とPC番号とLC番号をLCT30-pのIOP番号30-p-3、PC番号30-p-4、LC番号30-p-5に格納する(ステップ508)。そして、プロセッサ202は、LCT30-pのLC状態30-p-2に4を書き込んでチャネルプログラム40が終了したことを設定し(ステップ509)、EPU101に、IOP番号、PC番号、LC番号にて指示された入出力要求処理が完了したことを割込みで報告して処理を終える(ステップ510、511)。
【0025】
そして、EPU101はIOP200より入出力要求処理の終了を受信すると、EPU101のファームウェアより入出力終了処理600を実行する。一般的な技術における入出力終了処理600を
図13に示す。入出力終了処理600では、EPU101は、IOP200より通知されたIOP番号、PC番号、LC番号よりLCTアドレスを求め(ステップ601)、LCT30-pよりLC状態30-p-2を読み出してチャネルプログラム40が終了したかどうか確認する(ステップ602、603)。これはLC状態30-p-2に格納された値が4かどうかで確認する。チャネルプログラム40が終了していないのにIOP200から入出力要求処理の終了報告を受信することは無いので、LC状態30-p-2がチャネルプログラム終了状態になっていない場合(ステップ603;No)は異常と判断し、障害処理を実行して処理を終える(ステップ609、610)。
【0026】
LC状態30-p-2がチャネルプログラムの終了を示していた場合(ステップ603;Yes)、チャネルプログラムの実行結果としてLCT30-pの事象報告30-p-6を読み出し(ステップ604)、IOP番号、PC番号、LC番号をIOP番号30-p-3、PC番号30-p-4、LC番号30-p-5より読み出す(ステップ605)。そして、LCT30-pのLC状態30-p-2に0を書き込んで未使用状態に設定する(ステップ606)。最後に、チャネルプログラム40の実行結果として、読みだした事象報告内容とIOP番号、PC番号、LC番号をソフトウェアに通知して処理を終える(ステップ607、608)。
【0027】
ソフトウェアへのチャネルプログラム40の実行結果の報告はLCT30-pのIOP番号30-p-3、PC番号30-p-4、LC番号30-p-5と、事象報告30-p-6の内容をソフトウェアに渡すことで行われる。ソフトウェアはIOP番号30-p-3、PC番号30-p-4、LC番号30-p-5を確認することで、どのデバイスに対して発行したチャネルプログラムか判断でき、また、事象報告30-p-6を確認することでチャネルプログラムの実行結果を確認することが出来る。
【0028】
一般的な技術における入出力処理は上記の通りである。上記での説明の通り、課題となるのはデバイス300-rに対してLCT30-rを割り当てて管理しているため、デバイス300-rに対する入出力処理はLCT30-rのみを介してしか実行することが出来ず、デバイス300-rに対して同時に複数の入出力要求を発行できないことである。つまり、一般的な構成では先行する入出力処理が完了しなければ後続の入出力要求を発行することが出来ない。そのため、入出力の処理効率が向上しない課題がある。
【0029】
これを図で説明すると
図23のようになる。ソフトウェアがデバイス300-rに対して入出力処理を行う場合、ソフトウェアが入出力処理のためにチャネルプログラムを作成して入出力要求を行うためのEPU101のEPU時間と、デバイス300-rが入出力処理を行うI/O時間がかかる。この時間の間、デバイス300-rに対応するLCT30-rはチャネルプログラムで使用中となるため、EPU101では先行する入出力処理が完了するまで後続の入出力処理は実行できない状態となる。また、デバイス300-rでは、I/O時間しか発生しないので、残りの時間は空き時間となり、デバイス300-rの使用効率はその分向上しないことになる。
【0030】
特許文献1には、物理的に1つの入出力アダプタを、ハイパーバイザ内の仮想仲介を介して、複数の仮想化されたクライアントから共用することに関するシステムが開示されている。特許文献1には、上記の課題を解決する技術は開示されていない。
【先行技術文献】
【特許文献】
【0031】
【発明の概要】
【発明が解決しようとする課題】
【0032】
先行する入出力処理が完了しなければ後続の入出力処理を実行することができないという課題を解決する情報処理装置及び入出力処理方法を提供する。
【課題を解決するための手段】
【0033】
本発明の一態様によれば、情報処理装置は、入出力処理に係るチャネルプログラムを実行する演算処理手段と、I/O管理テーブルを記憶する記憶手段と、を備え、前記I/O管理テーブルには、デバイスへの前記入出力処理における前記デバイスの制御に用いられるLCテーブルが、前記デバイスへのインタフェースである物理チャネルに接続可能な前記デバイスの最大数分含まれ、前記最大数分の前記LCテーブルを、実際に物理チャネルに接続されている前記デバイスに対応する実LCと、前記デバイスに対応していない空LCと、の2つに分割し、全体を仮想LCとしたときに、前記チャネルプログラムには、前記入出力処理を行う前記デバイスを指定する実LC番号と、前記入出力処理に用いる前記LCテーブルを指定する仮想LC番号と、を設定することができ、前記演算処理手段は、前記チャネルプログラムに基づいて、前記実LC番号が示す前記デバイスへ、前記仮想LC番号が示す前記LCテーブルを用いて入出力処理を行う。
【0034】
本発明の一態様によれば、入出力処理方法は、コンピュータによって実行される入出力処理方法であって、入出力処理に係るチャネルプログラムに、入出力処理を行うデバイスを指定する実LC番号と、前記入出力処理における前記デバイスの管理に用いられ、前記デバイスへのインタフェースである物理チャネルに接続可能な前記デバイスの最大数分用意されたLCテーブルの何れかを指定する仮想LC番号と、を設定し、前記実LC番号が示す前記デバイスへ、前記仮想LC番号が示すLCテーブルを用いて前記チャネルプログラムに基づく入出力処理を行う、入出力処理方法である。
【発明の効果】
【0035】
本発明によれば、同一のデバイスに関する複数の入出力処理を同時並行的に実行することができる。
【図面の簡単な説明】
【0036】
【
図1】実施形態に係る情報処理装置の一例を示す図である。
【
図2】実施形態に係る情報処理装置の入出力に係る構成に付される番号の一例を示す図である。
【
図7】LCTの各エントリとデバイスの対応関係について説明する図である。
【
図8】チャネルプログラムの構造の一例を示す図である。
【
図11A】一般的な入出力要求処理の一例を示す第1の図である。
【
図11B】一般的な入出力要求処理の一例を示す第2の図である。
【
図12】一般的な入出力処理の一例を示す図である。
【
図13】一般的な入出力終了処理の一例を示す図である。
【
図14】実施形態に係るLCTの各エントリとデバイスの対応関係について説明する図である。
【
図15】実施形態に係るPCTの構造の一例を示す図である。
【
図16】実施形態に係るLCTの構造の一例を示す図である。
【
図17】実施形態に係るCPHの構造の一例を示す図である。
【
図18A】実施形態に係る入出力要求処理の一例を示す第1の図である。
【
図18B】実施形態に係る入出力要求処理の一例を示す第2の図である。
【
図19A】実施形態に係る入出力要求処理の一例を示す第1の図である。
【
図19B】実施形態に係る入出力要求処理の一例を示す第2の図である。
【
図19C】実施形態に係る入出力要求処理の一例を示す第3の図である。
【
図20】実施形態に係る入出力終了処理の一例を示す図である。
【
図21A】実施形態に係るFree LC開始LC番号設定処理の一例を示す第1の図である。
【
図21B】実施形態に係るFree LC開始LC番号設定処理の一例を示す第2の図である。
【
図22】実施形態に係る情報処理装置の構成の拡張例を示す図である。
【
図23】一般的な入出処理で生じる待ち時間について説明する図である。
【
図24】実施形態に係る入出処理の待ち時間について説明する図である。
【
図25】最小構成を有する情報処理装置の構成を示すブロック図である。
【
図26】最小構成を有する情報処理装置の動作を示すフローチャート図である。
【発明を実施するための形態】
【0037】
以下、本発明の実施形態に係る入出力に係る構成および処理について図面を参照して説明する。以下の説明に用いる図面において本発明に関係ない部分の構成については、記載を省略し、図示しない場合がある。
【0038】
<実施形態>
(構成)
図1に本実施形態の情報処理装置1の構成を示す。本実施形態の情報処理装置1は、一般的な情報処理装置と同様である。IOP200と物理チャネル205~208、周辺処理装置300のデバイス300-rへのIOP番号、PC番号、LC番号の割り当ても、
図2に示す一般的な技術と同様である。また、I/O管理テーブル2の構造も
図3に示す一般的な技術と同様である。
【0039】
LCT30-pとデバイス300-rの割り当てと、PCT20-mとLCT30-pの構造、チャネルプログラムヘッダ40-0の構造が一般的な技術と異なる。また、EPU101の入出力要求処理700と入出力終了処理900、IOP200の入出力処理800の処理内容が一般的な技術と異なる。
【0040】
図14に、本実施形態に係るLCT30-pとデバイス300-rの割り当てを示す。本実施形態ではLCT30-pとデバイス300-rを
図14のように対応付ける。本説明では、最大LC数を128とし、周辺処理装置300のデバイス数を64台とする。この場合、LCT30-0~30-63がデバイス300-0~300-63に対応することになり、LCT30-64~30-127は、対応するデバイス300-rが無い空きエントリとなる。ここで、デバイス300-0~300-63に対応するLCT30-0~30-63を実LCと呼び、対応するデバイスが無い空きエントリのLCT30-64~30-127をFree LCと呼び、任意のデバイス300-rに割り当てて使用できるLCとする。また、LC全体(LCT30-0~30-127)を仮想LCと呼ぶ。
【0041】
また、本実施形態では、
図15に示すように一般的な技術のPCT20-mに対して、PCT[0x0A-0x0B]にFree LCの開始LC番号を格納するFree LC開始LC番号20-m-5と、PCT[0x08]にFree LC開始LC番号20-m-5が有効かどうかを示すValid20-m-4を格納する。これらの領域は、情報処理装置1の起動時にIOP200に内蔵されたファームウェアの、
図21に示すFree LC開始LC番号設定処理1000によって設定される。例えば、
図14と同様にデバイス300-0~300-63が64台の場合、Free LC開始LC番号200-m-5には64が設定され、Valid20-m-4が有効に設定される。なお、周辺処理装置300がデバイスに対して入手力処理を同時発行できない装置の場合、Valid20-m-4は無効に設定される。
【0042】
LCT30-pには、
図16に示すようにLCT[0x10]に実LC番号を格納する実LC番号30-p-8を追加し、LCT[0x13]のLC番号を、仮想LC番号を使用するように領域を仮想LC番号30-p-5aに変更する。LCT[0x14-0x1F]はチャネルプログラムの実行結果をソフトウェアに報告するために使用する領域である。
【0043】
また、CPH40-0にも、
図17に示すようにWord3の0byte目に実LC番号を指定する実LC番号40-0-5を追加し、Word3の3byte目のLC番号指定を、仮想LC番号を指定する仮想LC番号40-0-4aに変更する。
図16に示すLCT30-pのLCT[0x10-0x13]と
図17に示すCPH40-0のWord3はチャネルプログラム40の終了時にソフトウェアがどのデバイス300-rに対する入出力処理が終了したかを判断するのに使用するため、同じ構造になっている。
【0044】
(動作)
EPU101上で動作するファームウェアの入出力要求処理700を
図18A、
図18Bに示す。一般的な技術の入出力要求処理400(
図11A、
図11B)との違いは、CPH40-0の実LC番号40-0-5を読み出すところと、仮想LC番号40-0-4aを一般的な技術におけるLC番号として処理するところである。処理対象が変更になるだけで、処理自体に変更は無い。入出力要求処理700の動作は次のようになる。
【0045】
まず、ソフトウェアは周辺処理装置300のデバイス300-rに対して入出力処理を実行するためにチャネルプログラム40を作成する。このとき、ソフトウェアはCPH40-0の実LC番号40-0-5にデバイス300-rに対応するLC番号rを格納し、仮想LC番号40-0-4aにrか、Free LCから空いているLC番号を選択して格納する。ソフトウェアは入出力処理において、どの仮想LC番号を現在使用しているのか、空いている仮想LC番号はどこかを管理しているものとする。チャネルプログラム40の作成が完了したら、チャネルプログラムの先頭アドレスを指定してEPU101に入出力処理要求を行う。
【0046】
EPU101はソフトウェアから入出力処理要求を受けると、内蔵するファームウェアの入出力要求処理700を実行する。入出力要求処理700では、EPU101は、最初にソフトウェアから指示されたチャネルプログラムアドレスよりCPH40-0を読み出し(ステップ701)、CPH40-0より、IOP番号40-0-2、PC番号40-0-3、仮想LC番号40-0-4a、実LC番号40-0-5を読み出す(ステップ702)。そして、IOP番号40-0-2に対応するIOPTアドレスを求める(ステップ703)。IOPTアドレスの求め方は一般的な技術で説明した方法と同じである。
【0047】
対応するIOPTアドレスを求めたら、IOPT10-nより最大PC数10-n-2を読み出し、PC番号40-n-3が最大PC数40-n-2以下か確認する(ステップ704、705)。PC番号40-n-3が、最大PC数10-n-2を超える場合は(ステップ705;No)、情報処理装置1の構成上、存在しないPC番号なので、ソフトウェアに異常終了を報告して処理を終える(ステップ717、718)。PC番号40-0-3が最大PC数10-n-2以内ならば(ステップ705;Yes)、IOPT10-nよりPCT#0ポインタ10-n-1を読み出し、PC番号40-n-3に対応するPCTアドレスを求める(ステップ706)。
【0048】
PCTアドレスを求めたら、PCT20-mより最大LC数20-m-2を読み出し、仮想LC番号(40-0-4)が最大LC数(20-m-2)以内か確認する(ステップ707、708)。仮想LC番号(40-0-4)が、最大LC数20-m-2を超える場合は(ステップ708;No)、情報処理装置1の構成上、存在しないLC番号なので、ソフトウェアに異常終了を報告して処理を終える(ステップ719、720)。仮想LC番号40-0-4aが最大LC数20-m-2以内の場合(ステップ708;Yes)は、PCT20-mよりLCT#0ポインタ20-m-1を読み出し、仮想LC番号40-0-4aに対応するLCTアドレスを求める(ステップ709)。
【0049】
LCTアドレスを求めたら、LCT30-pよりLC状態30-p-2を読み出し、仮想LC番号40-0-4aで指定されたLCが未使用状態か確認する(ステップ710、711)。LC状態30-p-2が未使用でない場合(ステップ711;No)は、既に入出力処理で使用されているので、ソフトウェアに入出力要求処理を実行できなかったことを報告し、処理を終える(ステップ721、722)。通常はソフトウェアがどの仮想LCを使用して入出力処理を実行しているかを管理しているので、このケースはソフトウェアの問題のときしか発生しない。なお、LC状態30-p-2が未使用かどうかは値が0かどうかで判断でき、値が0の場合は未使用となる。
【0050】
LC状態30-p-2が未使用ならば(ステップ711;Yes)、LCT30-pのチャネルプログラムアドレス30-p-1にソフトウェアから指示されたチャネルプログラムアドレスを格納し(ステップ712)、LC状態30-p-2に1を書き込んでチャネルプログラム待ち状態に設定する(ステップ713)。そして、IOP番号40-0-2で指定されたIOP200にIOP番号40-0-2、PC番号40-0-3、仮想LC番号40-0-4aを指定して入出力処理要求を通知し(ステップ714)、ソフトウェアに入出力要求処理が正常終了したことを報告して処理を終える(ステップ715、716)。
【0051】
IOP200がEPU101より入出力処理要求を通知されると、IOP200上で動作するファームウェアの入出力処理800が動作する。本発明における入出力処理800と、
図12に示す一般的な技術の入出力処理500との違いは、一般的な技術の入出力処理500ではLC番号40-0-4に対応したLCT30-pを使用して、LC番号40-0-4に対応するデバイス300-pに対して入出力処理を行うのに対し、本実施形態における入出力処理800では、仮想LC番号40-0-4aに対応するLCT30-pを使用して、実LC番号40-0-5で指定されたデバイス300-rに対して入出力処理を行うところにある。
【0052】
図19に本実施形態に係る入出力処理800を示す。IOP200で動作する入出力処理800の動作は次のようになる。まず、IOP200が、EPU101より通知されたIOP番号、PC番号、仮想LC番号より対応するLCTアドレスを求める(ステップ801)。ここで、EPU101より通知されるIOP番号、PC番号、仮想LC番号はCPH40のIOP番号40-0-2、PC番号40-0-3、仮想LC番号40-0-4aと同じであり、LCTアドレスの求め方は、一般的な技術と同じである。
【0053】
LCTアドレスを求めたら、LCT30-pよりLC状態30-p-2を読み出してチャネルプログラム待ち状態か確認する(ステップ802、803)。これは、LC状態30-p-2に格納された値が1かどうかで確認する。LC状態30-p-2がチャネルプログラム待ち状態でない(値が1ではない)状況は、通常は起こりえない。チャネルプログラム待ち状態でない場合(ステップ803;No)、障害処理を実行して処理を終える(ステップ822、823)。LC状態30-p-2がチャネルプログラム待ち状態ならば(ステップ803;Yes)、LC状態30-p-2に2を書き込んでLC状態をチャネルプログラム実行中に設定する(ステップ804)。
【0054】
次に、IOP200が、EPU101より通知されたIOP番号40-0-2とPC番号40-0-3よりPCTアドレスを求め(ステップ805)、PCT20-mよりValid20-m-4とFree LC開始LC番号20-m-5を読み出す(ステップ806)。そして、LCT30-pよりチャネルプログラムアドレス30-p-1を読み出し(ステップ807)、チャネルプログラムアドレス30-p-1よりCPH40-0を読み出し、IOP番号40-0-2、PC番号40-0-3、仮想LC番号40-0-4a、実LC番号40-0-5を読み出す(ステップ808)。
【0055】
そして、Free LC開始LC番号20-m-5が有効か確認するためにValid20-m-4の値を確認する(ステップ809、810)。これはValid20-m-4の値が0かどうかで確認することが出来る。Valid20-m-4が0の場合(ステップ810;No)は、Free LC開始LC番号(20-m-5)は無効であり、Free LCが使用できないことを示しているので一般的な技術と同様な処理となる(後述するステップ826~831)。Valid20-m-4が0以外の場合(ステップ810;Yes)は、Free LC開始LC番号20-m-5が有効なので、仮想LC番号40-0-4aとFree LC開始LC番号20-m-5を比較し、仮想LC番号40-0-4aがFree LC番号かどうかを確認する(ステップ811、812)。これは、仮想LC番号40-0-4aの値がFree LC開始LC番号20-m-5の値以上かどうかで確認でき、値以上の場合、仮想LC番号40-0-4aはFree LCとなる。
【0056】
仮想LC番号40-0-4aがFree LCの場合(ステップ812;Yes)は、CPH40-0の実LC番号40-0-5はデイバス300-rのLC番号になるはずなので、実LC番号40-0-5とFree LC開始LC番号20-m-5を比較して確認する(ステップ813、814)。これは、実LC番号40-0-5がFree LC開始LC番号20-m-5より小さいかで確認する。実LC番号40-0-5がFree LC開始LC番号20-m-5以上の場合はソフトウェアの設定ミスなので通常は起こり得ない。実LC番号40-0-5がFree LC開始LC番号20-m-5より小さい場合、実LC番号40-0-5は実LCとなる。実LC番号40-0-5が実LCではない場合(ステップ814;No)、IOP200は障害処理を行って処理を終了する(ステップ824、825)。
【0057】
実LC番号40-0-5が実LCの場合(ステップ814;Yes)、IOP200は、チャネルプログラムアドレス30-p-1よりチャネルプログラム40を読み出し(ステップ815)、実LC番号40-0-5で指定されたデバイス300-rに対して読み出したチャネルプログラム40の処理を実行する(ステップ816)。そして、処理が終了したら処理結果をLCT30-pの事象報告30-p-6に格納し、CPH40-0のIOP番号40-0-2、PC番号40-0-3、仮想LC番号40-0-4a、実LC番号40-0-5をLCT30-pのIOP番号30-p-3、PC番号30-p-4、仮想LC番号30-p-5a、実LC番号30-p-8に格納する(ステップ817、818)。
【0058】
そして、LCT30-pのLC状態30-p-2に4を書き込んでLC状態をチャネルプログラム終了状態に設定し(ステップ819)、EPU101にIOP番号40-0-2、PC番号40-0-3、仮想LC番号40-p-4aに対する入出力処理が完了したことを報告して処理を終える(ステップ820、821)。
【0059】
なお、仮想LC番号40-0-4aがFree LC開始LC番号20-m-5より小さい場合(ステップ812;No)は、Free LCではなく直接デバイス300-rのLC番号を示しているので、一般的な技術と同じ動作となる。この場合、チャネルプログラムアドレス30-p-1よりチャネルプログラムを読み出し(ステップ826)、仮想LC番号40-0-4aに対応するデバイス300-rに対してチャネルプログラムの処理を実行する(ステップ827)。そして、処理結果をLCT30-pの事象報告30-p-6に格納し、また、CPH40-0のIOP番号40-0-2、PC番号40-0-3、仮想LC番号40-0-4aをLC30-pのIOP番号30-p-3、PC番号30-p-4、仮想LC番号30-p-5aに格納する。なお、実LC番号30-p-8には0を格納する(ステップ828、829)。
【0060】
そして、LCT30-pのLC状態30-p-2に4を書き込んでLC状態をチャネルプログラム終了状態に設定し(ステップ830)、EPU101にIOP番号40-0-2、PC番号40-0-3、仮想LC番号40-0-4aに対する入出力処理が完了したことを報告して処理を終える(ステップ831、832)。
【0061】
EPU101が、IOP200から入出力処理の終了を受けたときの処理は、一般的な技術と異なり、LCT30-pより実LC番号30-p-8を読み出してソフトウェアに報告する処理が追加されている。本実施形態に係る入出力終了処理900を
図20に示す。EPU101は、IOP200より入出力要求処理の終了を受信すると、EPU101のファームウェアより入出力終了処理900を実行する。入出力終了処理900では、IOP200より通知されたIOP番号、PC番号、仮想LC番号よりLCTアドレスを求め(ステップ901)、LCT30-pよりLC状態30-p-2を読み出してチャネルプログラム40が終了したかどうか確認する(ステップ902、903)。これはLC状態30-p-2に格納された値が4かどうかで確認する。チャネルプログラム40が終了していないのにIOP200から入出力要求処理の終了報告を受信することは無いので、LC状態30-p-2がチャネルプログラム終了状態になっていない場合(ステップ903;No)は異常と判断し、障害処理を実行して処理を終える(ステップ909、910)。
【0062】
LC状態30-p-2がチャネルプログラム終了を示していた場合(ステップ903;Yes)、EPU101は、LCT30-pの事象報告30-p-6よりチャネルプログラム40の終了報告を読み出す(ステップ904)。次にEPU101は、IOP番号、PC番号、仮想LC番号、実LC番号をIOP番号30-p-3、PC番号30-p-4、仮想LC番号30-p-5a、実LC番号30-p-8より読み出す(ステップ905)。次にEPU101は、LCT30-pのLC状態30-p-2に0を書き込んで未使用状態に設定する(ステップ906)。そして、チャネルプログラム40の実行結果として、読みだした事象報告内容とIOP番号、PC番号、仮想LC番号、実LC番号をソフトウェアに通知して処理を終える(ステップ907、908)。
【0063】
情報処理装置1上で動作するソフトウェアは、その起動時にPCT20-mのValid20-m-4とFree LC開始LC番号20-m-5を読み出し、PCT20-m配下のデバイス300-rがFree LCに対応しているか確認し、実LCとFree LCの個数を認識している。そして、それに合わせてソフトウェア内の入出力管理を行い、どのIOP番号、PC番号、仮想LC番号を使用して実LC番号のデバイス300-rに入出力要求を行うか判断している。
【0064】
また、ソフトウェアはEPU101より入出力処理の終了報告を受けたとき、LCT30-pのIOP番号30-p-3、PC番号30-p-4、仮想LC番号30-p-5a、実LC番号30-p-8と、事象報告30-p-6を確認することで、どのIOP番号、PC番号、仮想LC番号を使用してデバイス300-rに発行した入出力要求を判断することができ、個々の入出力要求の結果を判断することが出来る。これは、ソフトウェアがどのような入出力管理構造を設けるかに依存する。
【0065】
なお、IOP200のファームウェアによって実行されるFree LC開始LC番号設定処理1000は次のように動作する。
図21A、
図21Bに、Free LC開始LC番号設定処理1000を示す。この処理は情報処理装置1の起動時に、情報処理装置1に接続された全IOPにより自IOPに対応したPCT20-mを設定するように実行される。まず、Free LC開始LC番号設定処理1000では、自IOP200に存在する物理チャネル205~208に対応する全PCTを設定するのにループ処理を行うため、ループカウントしての変数iを0に初期化する(ステップ1001)。
【0066】
そして、自IOP200のIOP番号より、IOPTアドレスを求め、変数iに対応するPC番号iのPCTアドレスを求める(ステップ1002)。これは、IOPT10-nのPCT#0ポインタ10-n-1にPCT20-iのサイズとPC番号iを乗算したものを加算することで求めることできる。次に、PC番号iに対応する物理チャネルiに周辺処理装置300が接続されているか確認する(ステップ1003、1004)。これは、物理チャネルiを経由して周辺処理装置300にアクセスして応答があるかどうかで確認する。
【0067】
物理チャネルiに周辺処理装置300が接続されているならば、周辺処理装置300がFree LCに対応しているかどうか確認する(ステップ1005、1006)。これは、周辺処理装置300にアクセスして周辺処理装置300の種類を確認することで判断する。周辺処理装置300がFree LCに対応しているならば、周辺処理装置300に接続されているデバイス300-rの数を確認する(ステップ1007)。これは、周辺処理装置300にデバイス数の読み出し指示を行って確認するか、周辺処理装置300の種類ごとにデバイス数が決定しているので、それにより確認する。
【0068】
デバイス数が確認出来たら、PCT20-iのValid20-i-4に1を書き込んで有効に設定し、PCT20-iのFree LC開始LC番号20-i-5にデバイス数を書き込んで設定する(ステップ1008)。そして、変数iを1加算して次PC番号を示すようにし(ステップ1009)、次PC番号iに対応した物理チャネルiが存在するか確認する(ステップ1010)。存在する場合はステップ1002に戻って処理を継続し、物理チャネルiが存在しない場合は処理を終了する(ステップ1011、1012)。また、ステップ1006でFree LC対応装置でないと判断した場合(ステップ1006;No)は、PCT20-iのValid20-i-4に0を書き込んで無効に設定し、Free LC開始LC番号20-i-5にも0を書き込み、ステップ1009に進む。
【0069】
IOP200に割り振られているIOP番号は情報処理装置1の起動時に構成に従って割り当てられており、IOP200で動作するファームウェアによって読み出すことが出来る。また、IOP200に存在する物理チャネルの数は装置的に固定されており、PC番号と物理チャネルの番号は一致するように割り当てられている。
【0070】
(具体例)
EPU101上で動作するファームウェアの入出力要求処理700と入出力終了処理900、IOP200上で動作するファームウェアの入出力処理800とFree LC開始LC番号設定処理1000の動作の詳細は、上記で説明した動作となる。ここでは、
図1および
図2の情報処理装置1において、仮想LC数を128個、周辺処理装置300のデバイス数を64個として、情報処理装置1が起動してソフトウェアが入出力処理を同一デバイス300-rに対して複数実行したときの動作を説明する。
【0071】
情報処理装置1が起動したとき、EPU101によってI/O管理テーブル2が作成される。このとき、情報処理装置1の構成に合わせてIOPT10-n、PCT20-m、LCT30-pが作成され、IOPT10-nのPCT#0ポインタ10-n-1が設定され、最大PC数10-n-2は
図1の構成に合わせて4に設定される。また、PCT20-mのLCT#0ポインタ20-m-1が設定され、最大LC数20-m-2が128に設定される。また、それ以外の領域は0に設定される。
【0072】
その後、IOP200によりFree LC開始LC番号設定処理1000が実行される。
図1および
図2において、周辺処理装置300はFree LC対応デバイスとすると、IOP番号0、PC番号0はFree LC対応となり、デバイス数が64台であるので、PCT20-0のValid20-0-4に1が書き込まれ、Free LC開始LC番号には64が格納される。これにより、IOP番号0、PC番号0配下の装置はFree LC有効とPCT20-0に設定される。
【0073】
次に、ソフトウェアが初期化され、ソフトウェアの入出力管理機構が初期化される。このとき、ソフトウェアは全IOPのPCT20-mのValid20-m-4を読み出して、そのPCがFree LC対応か確認する。Valid20-m-4の値が0でFree LC未対応の場合は、仮想LC番号は実LC番号しか使用できず、同一デバイスに複数入出力を同時に発行が出来ないので、それに対応した管理を実施し、Valid20-m-4が0以外ならばFree LC対応なのでFree LC開始LC番号20-m-5と最大LC数20-m-2を読み出し、仮想LC番号、実LC番号を使用して同一デバイスに対して複数入出力を同時に発行できるような管理を実施するように入出力管理機構を初期化する。
【0074】
ソフトウェアの入出力管理機構については本実施形態の範囲外なので詳細な説明はしないが、例としては、Free LC開始LC番号20-m-5から最大LC数20-m-2-1までを管理するエントリを設け、入出力処理に使用していないエントリをFIFOキューに繋いで管理する方法が考えられる。この場合、デバイス300-rに入出力処理を行う時に対応する実LC番号のLCT30-rのLC状態30-r-2を確認して未使用状態ならばそれを使用し、使用中ならば前記のFree LCキューより空いているFree LCのエントリを取り出し、それに対応するFree LC番号を仮想LC番号として実LC番号を指定してチャネルプログラム40を作成し、EPU101に入出力要求を行う。そして、Free LCを使用した入出力処理が終了したら、対応するエントリをキューに戻して再利用できるようにする。こうすることで、同一のデバイス300-rに対しても対応する実LC30-rと任意のFree LCを使用することで同時に入出力処理を行うことが出来る。
【0075】
ソフトウェアに前記のような入出力管理機構があるものとし、ソフトウェアがデバイス300-r(rは0以上63以下)に対して入出力処理を実行する場合は、次のような動作になる。まず、ソフトウェアはデバイス300-rに対応するIOP番号、PC番号、実LC番号を求め、対応する仮想LCを取得する。このとき、デバイス300-rに対して入出力処理を行っていないので、仮想LC番号として実LC番号rが選択され、ソフトウェアはCPH40-0のIOP番号4-0-2を0、PC番号4-0-3を0、仮想LC番号40-0-4aをrとし、実LC番号40-0-5は仮想LC番号と同じなので0を設定してチャネルプログラム40を作成し、EPU101にIOP番号0、PC番号0、仮想LC番号rとして入出処理要求を行う。
【0076】
EPU101はソフトウェアより入出力処理要求を受けると、入出力要求処理700を実行する。この処理では前記で説明した通り、仮想LC番号rに対応するLCT30-rのチャネルプログラムアドレス30-r-1にソフトウェアから指示されたチャネルプログラムアドレスを設定して、IOP番号0に対応するIOP200に入出力処理要求を通知し、処理を終える。その後、ソフトウェアはEPU101からの入出力処理の終了を、セマフォなどを使用して待ち合わせる。
【0077】
IOP200はEPU101より入出力処理要求を受けると、通知されたIOP番号0、PC番号0、仮想LC番号rより、対応するPCT20-0、LCT30-rを読み出す。ここで、PCT20-0のValid20-0-4は1に設定されているのでFree LC開始LC番号20-0-5は有効であり、仮想LC番号rはFree LC開始LC番号20-0-5の64より小さいので、仮想LC番号rは実LCであり、指定されたデバイス300-rに対して、LCT30-rのチャネルプログラムアドレス30-r-1で指定されたチャネルプログラム40の処理を行う。
【0078】
このとき、ソフトウェアは前記で入出力処理を実行した同じデバイス300-rに別の入出力処理を行おうとするとする。デバイス300-rに対応するLCT30-rは前記の入出力処理で使用中であるので、ソフトウェアの入出力管理機構よりFree LCが選択される。ここでは、Free LC番号f(fは64以上127以下)が選択されたとして説明する。ソフトウェアはIOP番号0、PC番号0、仮想LC番号f、実LC番号rをCPH40-0に設定してチャネルプログラム40を作成する。つまり、CPH40-0のIOP番号40-0-2を0、PC番号40-0-3を0、仮想LC番号40-0-4aをf、実LC番号40-0-4をrに設定し、EPU101にIOP番号0、PC番号0、仮想LC番号fとして入出力要求を行う。
【0079】
EPU101はソフトウェアより入出力要求を受けると、前記と同様に入出力要求処理700を実行する。一般的な技術の場合、前記のソフトウェアが仮想LC番号rとして要求した入出力処理が完了していないとき、対応するLCT30-rのLC状態30-r-2は未使用状態を示さないため、一般的な技術の入出力要求処理400ではLC状態が使用中のため入出力処理が発行できずに終了してしまう(ステップ411、421、422)。
【0080】
しかし、本実施形態によれば、仮想LC番号fを指定しているので、入出力要求処理700では実LC番号rとは異なる仮想LC番号fのLCT30-fのLC状態30-f-2を確認する。このとき、LC状態30-f-2は未使用状態であるので、入出力要求処理700はLCT30-fのチャネルプログラムアドレス30-f-1を設定し、LC状態30-f-2をチャネルプログラム待ち状態にして、IOP200にIOP番号0、PC番号0、仮想LC番号fを指定して入出力要求を発行し、正常終了することが出来る。
【0081】
IOP200はEPU101より入出力要求を受けると、入出力処理800を実行する。このとき、EPU101より通知されたのは、IOP番号0、PC番号0、仮想LC番号fであり、対応するLCT30-fよりLC状態30-f-2を読み出し、チャネルプログラム待ち状態なのでチャネルプログラムアドレス30-f-1よりCPH40-0を読み出し、実LC番号40-0-5を読み出す。このとき、実LC番号40-0-5にはrが格納されている。
【0082】
そして、PCT20-0のValid20-0-4は1に設定されているのでFree LC開始LC番号20-0-5は有効であり、64が格納されている。EPU101より通知された仮想LC番号はfであるので、仮想LC番号はFree LCとなり、実LC番号rが実LCの範囲内かFree LC開始LC番号20-0-5と比較することで確認される。その後、入出力処理800は実LC番号rに対応するデバイス300-rに対して仮想LC番号fに対応するLCT30-fのチャネルプログラムアドレス30-f-1で指定されたチャネルプログラム40を実行する。これにより、デバイス300-rに対して、仮想LC番号rとfで指定されたチャネルプログラムが同時に動作している状態になる。
【0083】
次に、デバイス300-rに対する仮想LC番号rと仮想LC番号fのチャネルプログラム40の処理が終了したとき、IOP200の入出力処理800はそれぞれ対応するLCT30-r,30-fの事象報告30-r-6,30-f-6に処理結果を格納し、それぞれのチャネルプログラムヘッダから読み出したIOP番号、PC番号、仮想LC番号、実LC番号を格納する。つまり、LCT30-rのIOP番号30-r-3、PC番号30-r-4、仮想LC番号30-r-5a、実LC番号30-r-8にはIOP番号0、PC番号0、仮想LC番号r、実LC番号0が格納され、LCT30-fのIOP番号30-f-3、PC番号30-f-4、仮想LC番号30-f-5a、実LC番号30-f-8にはIOP番号0、PC番号0、仮想LC番号f、実LC番号rが格納される。そして、それぞれのLC状態30-r-2、30-f-2がチャネルプログラム終了状態に設定され、EPU101にそれぞれのIOP番号、PC番号、仮想LC番号と共に入出力処理が終了したことが通知される。
【0084】
EPU101はIOP200より入出力処理の終了を通知されると、入出力終了処理900を実行する。前記の仮想LC番号rとfに対するチャネルプログラムが終了したとき、EPU101にはIOP番号0、PC番号0、仮想LC番号rと、IOP番号0、PC番号0、仮想LC番号fの入出力処理が終了したことがIOP200より通知される。入出力終了処理900ではそれぞれ対応するLCT30-r、30-fよりLC状態30-r-2、30-f-2を読み出し確認し、チャネルプログラム終了状態であるので、事象報告30-r-6、30-f-6と、IOP番号30-r-3、30-f-3、PC番号30-r-4、30-f-4、仮想LC番号30-r-5a、30-f-5、実LC番号30-r-8、30-f-8を読み出してソフトウェアに実行結果として報告する。
【0085】
ソフトウェアはEPU101よりチャネルプログラムの終了報告を受けると、報告されたIOP番号、PC番号、仮想LC番号、実LC番号より、自身が発行した入出力処理を判断し、事象報告より結果を確認する。このように、本発明では同一のデバイス300-rに対してLC番号rとLC番号fを使用して同時に入出力処理を実行することが出来る。また、他の空きFree LCを使用することによって同一デバイス300-rに対する入出力処理の多重度を増やすこともできる。
【0086】
(効果)
メインフレームのような情報処理装置において、ディスクアレイ装置などの周辺処理装置のディスク当たりの容量が増加してきており、また、SSDを使用することで高速にアクセスできるようになってきている。ディスク装置の容量増加に伴って、今まで複数のディスク装置に分散して格納していたデータを同一ディスクに集約し、かつ、他のディスク装置に分散格納していた時と同様に、同一ディスクでも同時にデータにアクセスしたいという要望がある。しかし、一般的な技術では、同一のディスク装置に対して複数同時に入出力処理を実行することができない。これに対し、本実施形態によれば、同一のディスク装置に対して複数同時に入出力処理を実行することができる。
【0087】
具体的には、情報処理装置1の初期化時にIOP200がFree LC開始LC番号設定処理1000を実行することでPCT20-mのValid20-m-4とFree LC開始LC番号20-m-5が設定され、ソフトウェアがそれを確認することで、PCT20-mに対応するPC番号配下のLCが、実LCとFree LCに分割され、実LC対応のデバイス300-0~300-63に対して、実LCとFree LCを使用して同時に入出力処理要求を発行できることを判断でき、ソフトウェアは自身の入出力管理機構を対応した形で初期化できるようになる。
【0088】
また、情報処理装置1において、LCT30-pを
図14のようにデバイス300-0~300-63に対応した実LC30-0~30-63と、空きエントリとなるLCT30-64~30-127をFree LCとし、実LCとFree LCをまとめて仮想LCとすることで、ソフトウェアはデバイス300-r指定として実LCを使用し、チャネルプログラム40の実行要素として仮想LCを使用して入出力要求処理を行えるようになり、デバイス300-rに対して同時に複数の入出力処理要求を行えるようになる。これは、CPH40-0にデバイス300-rを指定する実LC番号40-0-5とLCT30-pを指定する仮想LC番号40-0-4aを設けたことによる効果である。
【0089】
EPU101で動作する入出力要求処理700では、CPH40-0の仮想LC番号40-0-4aをもとに対応するLCT30-pのLC状態30-p-2を確認することで、入出力要求先デバイス300-rに対応する実LC番号の、LCT30-rのLC状態30-r-2がチャネルプログラム実行中を示していたとしても、仮想LC番号が実LC番号と異なっていれば、IOP200に入出力要求を発行できるようになる。これにより、同一デバイス300-rに対して複数の入出力要求を発行できるようになる。
【0090】
IOP200で実行する入出力処理800では、EPU101より通知された仮想LC番号よりチャネルプログラム40のアドレスを格納したLCT30-pを特定し、CPH40-0の実LC番号40-0-5より入出力処理を行うデバイス300-rを求め、デバイス300-rに対して仮想LC番号が示すLCT30-pを使用してチャネルプログラム40の入出力処理を行っている。これにより、実LC番号40-0-5と異なる仮想LC番号40-0-4aを使用することで、同一デバイス300-rに対して同時に複数の入出力処理を実行できるようになる。
【0091】
また、ソフトウェアがEPU101上で入出力処理を行うときは
図24のようになり、同一のデバイス300-rに対する入出力処理において、実LC30-rとFree LC30-fを使用することにより特定LCTが未使用になるのを待ち合せる必要がなくなるため、先行の入出力処理のEPU時間待ちのみで後続の入出力処理を開始することが出来る。そして、デバイス300-rにおいても、連続して入出力処理を実行できるようになり、使用効率が向上することが出来るようになる。
【0092】
(最小構成)
図25は、最小構成を有す情報処理装置の構成を示すブロック図である。
情報処理装置80は、演算処理手段81と、記憶手段82と、を備える。
演算処理手段81は、入出力処理について作成されるチャネルプログラムを実行する。
記憶手段82は、I/O管理テーブルを記憶する。I/O管理テーブルには、デバイスへの前記入出力処理における前記デバイスの制御に用いられるLCテーブルが、前記デバイスへのインタフェースである物理チャネルに接続可能な前記デバイスの最大数分含まれる。最大数分の前記LCテーブルを、実際に物理チャネルに接続されている前記デバイスに対応する実LCと、前記デバイスに対応していない空LCと、の2つに分割し、全体を仮想LCとしたときに、チャネルプログラムには、前記入出力処理を行う前記デバイスを指定する実LC番号と、前記入出力処理に用いる前記LCテーブルを指定する仮想LC番号と、を設定することができ、演算処理手段は、前記チャネルプログラムに基づいて、前記実LC番号が示す前記デバイスへ、前記仮想LC番号が示す前記LCテーブルを用いて入出力処理を行う。
【0093】
図26は、最小構成を有する情報処理装置の動作を示すフローチャート図である。
入出力処理ごとに作成されるチャネルプログラムに、入出力処理を行うデバイスを指定する実LC番号と、前記入出力処理における前記デバイスの管理に用いられ、前記デバイスへのインタフェースである物理チャネルに接続可能な前記デバイスの最大数分用意されたLCテーブルの何れかを指定する仮想LC番号と、を設定し(S81)、前記実LC番号が示す前記デバイスへ、前記仮想LC番号が示すLCテーブルを用いて前記チャネルプログラムに基づく入出力処理を行う(S82)。
【0094】
以上、図面を参照してこの発明の一実施形態について詳しく説明してきたが、具体的な構成は上述のものに限られることはなく、この発明の要旨を逸脱しない範囲内において様々な設計変更等をすることが可能である。また、本発明の一態様は、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。また、上記各実施形態や変形例に記載された要素であり、同様の効果を奏する要素同士を置換した構成も含まれる。
【符号の説明】
【0095】
1・・・情報処理装置
100・・・CPU
101・・・EPU
102・・・メインメモリ
103・・・Bus I/F
104・・・Node I/F
105・・・内部バス
200・・・IOP
201・・・IOC
202・・・プロセッサ
203・・・ローカルメモリ
204・・・内部バス
205~208・・・物理チャネル
300・・・周辺処理装置
300-0~300-63・・・ディスク装置
301・・・処理装置
302・・・内部バス
【要約】
【課題】先行する入出力処理が完了しなければ後続の入出力処理を実行することができないという課題を解決する情報処理装置を提供する。
【解決手段】情報処理装置は、デバイスへの入出力処理の管理に用いられるLCテーブルが、前記デバイスへのインタフェースである物理チャネルに接続可能な前記デバイスの最大数分含まれ、前記最大数分の前記LCテーブルを、前記デバイスに対応する実LCと、前記デバイスに対応していない空LCと、の2つに分割し、全体を仮想LCとしたときに、入出力処理を行う前記デバイスを指定する実LC番号と、前記入出力処理に用いる前記LCテーブルを指定する仮想LC番号と、を設定することができるチャネルプログラムに基づいて、前記実LC番号が示す前記デバイスへ、前記仮想LC番号が示すLCテーブルを用いて入出力処理を行う。
【選択図】
図14