(57)【特許請求の範囲】
【請求項１】
命令処理装置（以下、ＩＰと略す）、主記憶装置（以下、ＭＳと略す）、１つまたは複数の入出力処理装置（以下、ＩＯＰと略す）、前記ＩＯＰ配下に１つまたは複数のチャネル（以下、ＣＨと略す）、前記ＣＨ配下に１つまたは複数の入出力制御装置（以下、ＣＵと略す）、ＭＳ上の入出力命令（以下、Ｉ／Ｏ命令と略す）の待ち行列制御エリア（以下、ＵＣＷＣと略す）、プログラムから発行されたＩ／Ｏ命令の制御情報を各入出力装置（以下、Ｉ／Ｏと略す）毎に格納するＭＳ上の入出力装置制御エリア（以下、ＵＣＷと略す）、各ＵＣＷ内のＩ／Ｏ命令の実行に使用可能な１つまたは複数のＣＨ情報とＣＵの情報とから成り、前記ＩＰがＵＣＷＣにＵＣＷを登録し、前記ＩＯＰがＵＣＷＣに登録されたＵＣＷを取り出し、ＵＣＷに格納されたＣＨ，ＣＵ情報に従い、プログラムから発行されたＩ／Ｏ命令を実行する入出力処理システムにおいて、
前記ＩＰは前記ＵＣＷの中の使用可能なＣＨ情報から、Ｉ／Ｏ命令を実行可能な１つまたは複数のＩＯＰを対応付け、該対応付けの制御情報（以下、ＳＩＯＰＭと略す）を生成し前記ＵＣＷに備えられた領域に前記ＳＩＯＰＭを格納する手段を備え、前記ＵＣＷＣに前記ＳＩＯＰＭから生成される制御情報（以下、ＳＩＯＰＭＯＲと略す）を格納する領域を備え、また前記ＩＰがＵＣＷＣにＵＣＷを登録するときに、前記ＳＩＯＰＭＯＲに該ＵＣＷのＳＩＯＰＭをオアしてＵＣＷＣに格納する手段を備え、
前記ＩＯＰは前記ＵＣＷＣのＳＩＯＰＭＯＲを参照し、ＩＰがＵＣＷＣに登録したＵＣＷの中に該ＩＯＰが実行可能なＵＣＷがあるかどうかを判断する手段を備え、実行可能なＵＣＷがある場合に、前記ＩＯＰは前記ＵＣＷＣの先頭のＵＣＷから順次にＵＣＷを読み出して当該ＵＣＷのＳＩＯＰＭを参照し、ＵＣＷＣから実行可能なＵＣＷを取り出す手段を備えたことを特徴とする入出力処理システム。
【請求項２】
前記請求項１の入出力処理システムにおいて、前記ＩＯＰ内部に、該ＩＯＰ配下のＣＨを使用してＩ／Ｏ命令の実行を試みたことを記憶するＣＨ毎のエリア（以下、ＣＨＣＷと略す）と、該ＣＨ配下のＣＵを使用してＩ／Ｏ命令の実行を試みたことを記憶するＣＵ毎のエリア（以下、ＣＵＷと略す）を備え、前記ＩＯＰがＩ／Ｏ命令を実行する際、該Ｉ／Ｏ命令を起動するために使用可能なＣＨ、または該ＣＨ配下のＣＵが使用中のため、該Ｉ／Ｏ命令を実行出来なかったときに、該ＣＨまたはＣＵを使用して該Ｉ／Ｏ命令の実行を試みたことを示す情報を生成し、前記ＣＨＣＷまたはＣＵＷに記憶する手段と、該ＵＣＷのＳＩＯＰＭを参照し、他ＩＯＰが実行可能であれば該ＵＣＷを再度前記ＵＣＷＣに登録する手段と、前記使用中であった該ＣＨまたはＣＵが空き状態になったときに、前記ＣＨＣＷまたはＣＵＷを参照し、Ｉ／Ｏ命令が保留中であるかどうかを判断し、Ｉ／Ｏ命令が保留中である時に該Ｉ／Ｏ命令を実行する手段を備えたことを特徴とする入出力処理システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、Ｉ／Ｏの起動方式に係り、特に入出力待ち行列を使用する入出力処理システムに好適なＩ／Ｏの起動処理方式に関する。
【０００２】
【従来の技術】
入出力処理システムにおいて、Ｉ／Ｏ命令実行時のＩＰの負荷軽減を図る方法の一つに、入出力待ち行列を導入し、該入出力待ち行列にＩ／Ｏ命令を登録し、ＩＯＰが該入出力待ち行列からＩ／Ｏ命令を取り出しＩ／Ｏを起動する方式がある。このような入出力処理システムの例としては、例えば特開平２−３２４４８号公報『入出力装置の起動処理方式』が挙げられる。
【０００３】
【発明が解決しようとする課題】
従来の技術においては、Ｉ／Ｏが複数のＣＨに接続され、それらのＣＨが複数のＩＯＰにまたがるような構成においてＩ／Ｏ命令を実行する場合に、あるＣＨが使用不可能な状態であっても、そのＣＨを制御するＩＯＰが入出力待ち行列からＩ／Ｏ命令を取り出し、再度入出力待ち行列に登録するという動作を行ってしまい、ＩＯＰの処理オーバーヘッドが増大する問題があった。また、ＩＯＰが入出力待ち行列からＩ／Ｏ命令を取り出しＩ／Ｏを起動する処理は、ＣＨ及びそのＣＨ配下のＣＵが空き状態であるか使用中であるかに関係なく実行されるため、ＣＨまたはＣＵが使用中であったときにＩ／Ｏ命令を再度入出力待ち行列に登録するという動作を行ってしまい、かつＣＨまたはＣＵが空き状態になっても、そのＣＨ及びＣＵを使用してＩ／Ｏを起動するのは、ＩＯＰによって入出力待ち行列の中のそのＣＨ及びＣＵを使用するＩ／Ｏ命令が取り出されるまで待たされることになり、ＣＨ及びＣＵを有効利用出来ないという問題があった。
【０００４】
本発明の目的は、入出力待ち行列を使用する入出力処理システムにおいて、Ｉ／Ｏ起動処理に係わるＩＯＰの処理効率の向上を可能にして、この種の入出力処理システム全体の性能向上を実現することにある。
【０００５】
【課題を解決するための手段】
ＩＰが、プログラムから発行されたＩ／Ｏ命令の制御エリア（以下、ＵＣＷと略す）の中の使用可能なＣＨ情報から、Ｉ／Ｏ命令を実行可能な１つまたは複数のＩＯＰを対応付け、該対応付けの制御情報（以下、ＳＩＯＰＭＯＲと略す）を生成する手段を備え、入出力待ち行列（以下、ＵＣＷＣと略す）に前記ＳＩＯＰＭＯＲを格納する領域を備え、また前記ＩＰがＵＣＷＣにＵＣＷを登録するときに、前記ＳＩＯＰＭＯＲを変更しＵＣＷＣに格納する手段を備え、前記ＩＯＰは前記ＵＣＷＣのＳＩＯＰＭＯＲを参照し、ＩＰがＵＣＷＣに登録したＵＣＷを実行可能かどうかを判断し、ＵＣＷＣから実行可能なＵＣＷを取り出す手段を備えたことを特徴とする。また、ＩＯＰ内部に、該ＩＯＰ配下のＣＨを使用してＩ／Ｏ命令の実行を試みたことを記憶するＣＨ毎のエリア（以下、ＣＨＣＷと略す）と、該ＣＨ配下のＣＵを使用してＩ／Ｏ命令の実行を試みたことを記憶するＣＵ毎のエリア（以下、ＣＵＷと略す）を備え、前記ＩＯＰがＩ／Ｏ命令を実行する際、該Ｉ／Ｏ命令を起動するために使用可能なＣＨ、または該ＣＨ配下のＣＵが使用中のため、該Ｉ／Ｏ命令を実行出来なかったときに、該ＣＨまたはＣＵを使用して該Ｉ／Ｏ命令の実行を試みたことを示す情報を生成し、前記ＣＨＣＷまたはＣＵＷに記憶する手段と、前記使用中であった該ＣＨまたはＣＵが空き状態になったときに、前記ＣＨＣＷまたはＣＵＷを参照し、該Ｉ／Ｏ命令が保留中であるかどうかを判断し、該Ｉ／Ｏ命令が保留中である時に該Ｉ／Ｏ命令を実行する手段を備えたことを特徴とする。
【０００６】
本発明においては、Ｉ／Ｏが複数のＣＨに接続され、それらのＣＨが複数のＩＯＰにまたがるような構成においてＩ／Ｏ命令を実行する場合に、あるＣＨが使用不可能な状態であったとき、そのＣＨを制御するＩＯＰが入出力待ち行列からＩ／Ｏ命令を取り出し、再度入出力待ち行列に登録するという動作が不要となり、ＩＯＰの処理のオーバーヘッドを低減することが出来る。また、ＣＨ及びそのＣＨ配下のＣＵが空き状態になったことを契機にＩ／Ｏを起動することにより、空き状態になったＣＨ及びＣＵを有効利用することが可能となる。
【０００７】
【発明の実施の形態】
以下、本発明の一実施例を図面により説明する。
【０００８】
図１は、本発明の一実施例を示す入出力処理システムの構成図であり、１は命令処理装置（ＩＰ）、２は主記憶装置（ＭＳ）、３０〜３１は入出力処理装置（ＩＯＰ）、４００〜４０ｉ、４１０〜４１ｉはチャネル（ＣＨ）、５００は入出力制御装置（ＣＵ）、６００〜６０１は入出力装置（Ｉ／Ｏ）である。本実施例では、ＩＯＰが２台（即ち、ＩＯＰ３０、ＩＯＰ３１）存在する場合を示しており、ＩＯＰ３０は複数のＣＨ４００〜４０ｉを有し、ＩＯＰ３１は複数のＣＨ４１０〜４１ｉを有している。ＣＨ４００と４１０は、ＣＵ５００を介してＩ／Ｏ６００〜６０１に接続され、Ｉ／Ｏ６００〜６０１はＩＯＰ３０と３１の両方からアクセス可能な構成となっている。ＭＳ２はＩＰ１とＩＯＰ３０〜３１で共用され、該ＭＳ２内に入出力待ち行列（ＵＣＷＣ）７とＩ／Ｏ制御語（ＵＣＷ）８と論理入出力制御装置語（ＬＣＵＷ）９が割当られている。
【０００９】
図２（ａ）〜（ｃ）は、図１のＭＳ２に格納されるＵＣＷＣ７、ＵＣＷ８、ＬＣＵＷ９の詳細を示す図である。
【００１０】
図２（ａ）のＵＣＷＣ７はＩＰ１とＩＯＰ３０〜３１間でＩ／Ｏ命令起動の情報交換をする領域で、最初の１バイトはＩＰ１とＩＯＰ３０〜３１とのアクセスの競合を排他的に制御するために使用されるロックバイト（ＬＯＣＫ）、次の１バイトは、ＩＯＰ３０、３１がＵＣＷＣ７に登録されているＩ／Ｏ命令を実行する際に、それぞれのＩ／Ｏ命令起動時に使用可能なＣＨを制御下に持つＩＯＰを示すマスク情報（ＳＩＯＰＭＯＲ）、次の２バイトはＵＣＷＣ７に登録されているＩ／Ｏ命令の数（ＮＵＣ）、次の４バイトは、ＵＣＷＣ７の中の先頭と末尾のＩ／Ｏ命令に対応するＵＣＷ番号（ＴＵＣＷＮＯとＢＵＣＷＮＯ）がそれぞれ記憶される。
【００１１】
図２（ｂ）のＵＣＷ９は、Ｉ／Ｏと一対一に対応したＩ／Ｏ命令の制御領域で、最初の１バイトはＵＣＷＣ７と同様のＬＯＣＫ、次の１バイトは各ビットに意味を持ち、最初のビットは該ＵＣＷがＵＣＷＣ７に登録されているかを示すビット（Ｕ、１のときＵＣＷＣ７に登録されていることを示す）、次のビットは該ＵＣＷがＬＣＵＷ９に登録されているかを示すビット（ＬＣ、１のときＬＣＵＷ９に登録されていることを示す）、次のビットは該ＵＣＷに対応するＩ／Ｏ命令の実行が保留中であるかを示すビット（Ｐ、１のとき保留中であることを示す）である。次の１バイトは、該Ｉ／Ｏ命令起動時に使用可能なＣＨを制御下に持つＩＯＰを示すマスク情報（ＳＩＯＰＭ）、１バイト空けた次の２バイトは、該ＵＣＷがＵＣＷＣ７に登録されているとき、該ＵＣＷの次にＵＣＷＣ７に登録されているＵＣＷ番号（ＮＵＣＷＮＯ）、次の２バイトは該ＵＣＷがＬＣＵＷ９に登録されているとき、該ＵＣＷの次にＬＣＵＷ９に登録されているＵＣＷ番号（ＮＬＵＣＷＮＯ）、次の１バイトは該ＵＣＷに対応するＩ／Ｏに接続されるＣＨの有効性を示すビット形式の情報（ＰＩＭ）、次の１バイトは前記ＰＩＭの中でＩ／Ｏ命令を実行するために使用可能なＣＨの有効性を示すビット形式の情報（ＰＡＭ）、次の２バイトは該ＵＣＷに対応するＬＣＵＷ番号（ＬＣＵＷＮＯ）がそれぞれ記憶される。
【００１２】
図２（ｃ）のＬＣＵＷ９は、１つまたは複数のＩ／Ｏを共有する１つまたは複数の入出力制御装置の集合体である論理入出力制御装置（ＬＣＵ）の制御領域で、最初の１バイトはＵＣＷＣ７と同様のＬＯＣＫ、１バイト空けた次の２バイトはＬＣＵＷ９に登録されているＩ／Ｏ命令の数（ＱＬＥＮＧＴＨ）、次の４バイトは、該ＬＣＵＷ９の中の先頭と末尾のＩ／Ｏ命令に対応するＵＣＷ番号（ＴＬＵＣＷＮＯとＢＬＵＣＷＮＯ）、次の８バイトは、該ＬＣＵＷに接続されるＣＨの番号（ＣＨＰＩＤ０〜７）がそれぞれ記憶される。なお、該ＬＣＵＷのＣＨＰＩＤ０〜７は、前記ＵＣＷのＰＩＭとＰＡＭの各ビットに対応する。
【００１３】
図３（ａ）〜（ｂ）は、図１のＩＯＰ３０〜３１の内部に格納されるＣＨＣＷ、ＣＵＷの詳細を示す図である。
【００１４】
図３（ａ）のＣＨＣＷは、ＩＯＰ配下の１つまたは複数のＣＨ単位の制御領域で、該ＣＨを使用してＩ／Ｏ命令の実行を試みたことを記憶するために使用する。最初の１ビットが該ＣＨＣＷの有効性を示すビット（Ｖ）、次の１バイトが該Ｉ／Ｏ命令に対応するＵＣＷのＰＡＭの中の、該ＣＨに対応したパスマスク（ＰＭ）、次の２バイトが該Ｉ／Ｏ命令に対応するＬＣＵＷＮＯが記憶される。
【００１５】
図３（ｂ）のＣＵＷは、ＣＨ配下の１つまたは複数のＣＵ単位の制御領域で、該ＣＵを使用してＩ／Ｏ命令の実行を試みたことを記憶するために使用する。ＣＵＷに記憶される情報は、ＣＨＣＷと同様である。
【００１６】
以下、図１のＩ／Ｏ６００に対するＩ／Ｏ命令起動処理の例に基づき本発明の実施例を説明する。図４（ａ）〜（ｂ）はＩ／Ｏ６００に対応するＵＣＷとＬＣＵＷであり、Ｉ／Ｏ６００がＩＯＰ３０（ここでは、ＩＯＰＮＯ＝０）に制御されるＣＨ（ここでは、ＣＨＰＩＤ＝１０）と、ＩＯＰ３１（ここでは、ＩＯＰＮＯ＝１）に制御されるＣＨ（ここでは、ＣＨＰＩＤ＝３０）に接続され、ＩＯＰ３１配下のＣＨのみ使用可能であることを前提としている。図５は、本発明の中のＩＰにおけるＩ／Ｏ命令起動処理の一実施例を示すフローチャートである。ＩＰ１は、プログラムがＩ／Ｏ６００に対し発行したＩ／Ｏ命令を受け取ると、ＭＳ２のＩ／Ｏ６００に対応するＵＣＷ８（ここでは、ＵＣＷＮＯ＝０）とＬＣＵＷ９（ここでは、ＬＣＵＷＮＯ＝０）を読み出し、該ＵＣＷ８のＰＡＭが１となっているＣＨを制御可能なＩＯＰを示すマスク情報を作成し、該ＵＣＷ８のＳＩＯＰＭに入れる（ここでは、ＰＡＭ＝４０に対応するＣＨがＩＯＰ３１配下であるため、ＳＩＯＰＭが４０になる）（ステップ５−１）、次にＵＣＷＣ７を読み出し（ステップ５−２）、ＵＣＷＣ７のＮＵＣをチェックする（ステップ５−３）。ＮＵＣが０でなければＵＣＷＣ７のＢＵＣＷＮＯに対応するＵＣＷ８のＮＵＣＷＮＯに、ＵＣＷＮＯ＝０をセットし（ステップ５−４）、ＵＣＷＣ７のＢＵＣＷＮＯにＵＣＷＮＯ＝０をセット（ステップ５−５）、ＵＣＷＣ７のＳＩＯＰＭＯＲに該ＵＣＷ８のＳＩＯＰＭ（＝４０）をオアし（ステップ５−６）、ＵＣＷＣ７のＮＵＣをプラス１し（ステップ５−７）、該ＵＣＷ８のＵビットとＰビットを１にして（ステップ５−８）処理を終了する。ステップ５−３でＮＵＣが０であれば、ＵＣＷＣ７のＴＵＣＷＮＯとＢＵＣＷＮＯに、ＵＣＷＮＯ＝０をセットし（ステップ５−９）、ＵＣＷＣ７のＳＩＯＰＭＯＲに該ＵＣＷ８のＳＩＯＰＭ（＝４０）をセットし（ステップ５−１０）、ＵＣＷＣ７のＮＵＣをプラス１し（ステップ５−７）、該ＵＣＷ８のＵビットとＰビットを１にして（ステップ５−８）処理を終了する。
【００１７】
ＩＯＰ３０とＩＯＰ３１は、処理すべき処理がなくなると、ある一定時間間隔で、ＵＣＷＣ７を検索する機能を有しており、このＵＣＷＣ７の検索により起動すべきＩ／Ｏ命令が存在すると、そのＩ／Ｏ命令に対応したＵＣＷ８を取り出しＩ／Ｏ起動を行う。図６及び図７は、本発明の中のＩＯＰにおけるＩ／Ｏ命令取り出し処理の一実施例を示すフローチャートである。ＩＯＰ３０とＩＯＰ３１は、ＵＣＷＣ７の内容を読み出し（ステップ６−１）、ＵＣＷＣ７のＮＵＣをチェックする（ステップ６−２）。ＮＵＣが０であれば処理を終了する。ＮＵＣが０でなければＵＣＷＣ７のＳＩＯＰＭＯＲに自ＩＯＰのマスク情報が存在するかチェックする（ステップ６−３）（例えば、前記ＩＰ１のＩ／Ｏ命令起動処理で、Ｉ／Ｏ６００のＩ／Ｏ命令をＵＣＷＣ７に登録したため、ＩＯＰ３１のマスク情報は存在し、ＩＯＰ３０のマスク情報は存在しないことになる。）ＳＩＯＰＭＯＲに自ＩＯＰのマスク情報が存在しなければ処理を終了する。ＳＩＯＰＭＯＲに自ＩＯＰのマスク情報が存在すればＵＣＷＣ７のＴＵＣＷＮＯに対応するＵＣＷ８を読み出し（ステップ６−４）、該ＵＣＷ８のＳＩＯＰＭに自ＩＯＰのマスク情報が存在するかチェックする（ステップ６−５）。ＳＩＯＰＭに自ＩＯＰのマクス情報が存在しなければ、該ＵＣＷＮＯがＵＣＷＣ７のＢＵＣＷＮＯと一致するかチェックし（ステップ６−６）、一致しなければ該ＵＣＷ８のＮＵＣＷＮＯに対応する該ＵＣＷ８を読み出し（ステップ６−７）、ステップ６−５〜６−６の処理を繰り返す。ステップ６−６で該ＵＣＷＮＯがＵＣＷＣ７のＢＵＣＷＮＯと一致すれば、ＵＣＷＣ７のＳＩＯＰＭＯＲの自ＩＯＰを示すＩＯＰマスク情報をリセットし（ステップ６−２１）処理を終了する。ステップ６−５で該ＵＣＷ８のＳＩＯＰＭに自ＩＯＰのマスク情報が存在すれば（例えば、前記ＩＰ１のＩ／Ｏ命令起動処理で、Ｉ／Ｏ６００のＩ／Ｏ命令をＵＣＷＣ７に登録したため、ＵＣＷＮＯ＝０のＵＣＷ８のＳＩＯＰＭにＩＯＰ３１のマスク情報が存在することになる
。）、ＵＣＷＣ７のＮＵＣをマイナス１し（ステップ６−８）、その結果ＮＵＣが０になるかチェックする（ステップ６−９）。ＮＵＣが０になればステップ６−１３の処理を行う。ＮＵＣが０にならなければ該ＵＣＷＮＯがＵＣＷＣ７のＴＵＣＷＮＯと一致するかチェックする（ステップ６−１０）。該ＵＣＷＮＯがＵＣＷＣ７のＴＵＣＷＮＯと一致すればＵＣＷＣ７のＴＵＣＷＮＯに該ＵＣＷ８のＮＵＣＷＮＯをセットし（ステップ６−１９）ステップ６−１３の処理を行う。該ＵＣＷＮＯがＵＣＷＣ７のＴＵＣＷＮＯと一致しなければ該ＵＣＷＮＯがＵＣＷＣ７のＢＵＣＷＮＯと一致するかチェックする（ステップ６−１１）。該ＵＣＷＮＯがＵＣＷＣ７のＢＵＣＷＮＯと一致すればＵＣＷＣ７のＢＵＣＷＮＯに該ＵＣＷ８の１つ前に登録されているＵＣＷＮＯをセットし（ステップ６−２０）ステップ６−１３の処理を行う。該ＵＣＷＮＯがＵＣＷＣ７のＢＵＣＷＮＯと一致しなければ、該ＵＣＷ８の１つ前に登録されているＵＣＷ８のＮＵＣＷＮＯに該ＵＣＷ８のＮＵＣＷＮＯをセットし（ステップ６−１２）する。次に該ＵＣＷ８のＵビットを０にし（ステップ６−１３）、該ＵＣＷ８のＰビットが１かどうかチェックする（ステップ６−１４）。該ＵＣＷ８のＰビットが１でなければ処理を終了する。該ＵＣＷ８のＰビットが１であれば、該ＵＣＷ８に対応するＬＣＵＷ８を読み出し（ステップ６−１５）、該ＵＣＷ８のＰＡＭが１となっているＣＨが自ＩＯＰ配下のＣＨかチェックする（ステップ６−１６）。自ＩＯＰ配下のＣＨでなければ、図５のＩＰ１のＩ／Ｏ命令起動処理と同じ要領で、該ＵＣＷ８をＵＣＷＣ７に登録し（ステップ６−１８）処理を終了する。ＰＡＭが１となっているＣＨが自ＩＯＰ配下のＣＨであれば、該ＣＨを使用してＩ／Ｏを起動（例えば、Ｉ／Ｏ６００の起動はＩＯＰ３１が、ＵＣＷＮＯ＝０のＵＣＷ８のＰＡＭが４０に対応するＬＣＵＷＮＯ＝０のＬＣＵＷ９のＣＨＰＩＤ＝３０のＣＨを選択し、このＣＨを使用してＩ／Ｏ６００を起動する。）し（ステップ６−１７）処理を終了する。
【００１８】
ＩＯＰ３０及び３１がＣＨを使用してＩ／Ｏを起動したとき、該ＣＨまたは該ＣＨ配下のＣＵが使用中のため該Ｉ／Ｏ起動が出来ない場合がある。ＩＯＰ３０と３１は、このような場合に対応するため、該Ｉ／Ｏ起動を他のＩＯＰに処理させるために、再度ＵＣＷＣに登録する機能と、該ＣＨまたは該ＣＨ配下のＣＵでＩ／Ｏ起動を試みたことをそれぞれＣＨＣＷまたはＣＵＷに記憶し、該ＣＨまたは該ＣＨ配下のＣＵが空き状態になった時点で該ＣＨＣＷまたはＣＵＷを参照しＩ／Ｏを起動する機能を有している。図８は、本発明の中のＩＯＰにおけるＩ／Ｏ起動処理の中で、ＣＨまたはＣＵが使用中であったときにＣＨＣＷまたはＣＵＷに制御情報を記憶する処理の一実施例を示すフローチャートである。また図９は、本発明の中のＩＯＰにおけるＩ／Ｏ起動処理の中で、ＣＨまたはＣＵが空き状態になったときに、ＣＨＣＷまたはＣＵＷの中の制御情報に従いＩ／Ｏを起動する処理の一実施例を示すフローチャートである。ＩＯＰ３０とＩＯＰ３１は、Ｉ／Ｏを起動する際にＣＨまたはＣＵが使用中であったときに、該ＣＨまたは該ＣＨ配下のＣＵに対応するＣＨＣＷ及びＣＵＷを読み出し（ステップ７−１）、Ｖビットが１かどうかチェックする（ステップ７−２）。Ｖビットが１である時ステップ７−１２の処理を実行する。Ｖビットが０である時Ｖビットを１にセットし、ＰＭフィールドに該ＵＣＷ８のＰＡＭの中の該ＣＨに対応するパスマスクをセットし、ＬＣＵＷＮＯフィールドに該ＵＣＷ８に対応するＬＣＵＷＮＯをセットする（ＩＯＰ３１が行うＩ／Ｏ６００のＩ／Ｏ起動処理の場合、ＰＭは４０、ＬＣＵＷＮＯは０がセットされる）（ステップ７−３）。次に該ＵＣＷ８に対応するＬＣＵＷ９を読み出し（ステップ７−４）、該ＵＣＷ８のＬＣビットが１かどうかをチェックする（ステップ７−５）。ＬＣビットが１であればステップ７−１１の処理を実行する。ＬＣビットが０であれば、該ＵＣＷ８のＬＣビットにし（ステップ７−６）、該ＬＣＵＷ９のＱＬＥＮＧＴＨをプラス１し（ステップ７−７）その結果、該ＬＣＵＷ９のＱＬＥＮＧＴＨが１かどうかチェックする（ステップ７−８）。ＱＬＥＮＧＴＨが１のとき該ＬＣＵＷ９のＴＬＵＣＷＮＯに該ＵＣＷＮＯをセットし（ＩＯＰ３１が行うＩ／Ｏ６００のＩ／Ｏ起動処理の場合、ＵＣＷＮＯ＝０がセットされる）（ステップ７−１３）ステップ７−１０の処理を行う。該ＬＣＵＷ９のＱＬＥＮＧＴＨが１でないとき該ＬＣＵＷ９のＢＬＵＣＷＮＯに対応するＵＣＷ８のＮＬＵＣＷＮＯに該ＵＣＷＮＯをセットする（Ｉ／Ｏ６００のＩ／Ｏ起動処理の場合、ＵＣＷＮＯ＝０がセットされる）（ステップ７−９）。次に該ＬＣＵＷ９のＢＬＵＣＷＮＯに該ＵＣＷＮＯをセットし（ＩＯＰ３１が行うＩ／Ｏ６００のＩ／Ｏ起動処理の場合、ＵＣＷＮＯ＝０がセットされる）（ステップ７−１０）、該ＵＣＷ８のＳＩＯＰＭが自ＩＯＰＭのみを示しているかチェックする（ステップ７−１０）。自ＩＯＰのみを示している場合は処理を終了する（ＩＯＰ３１が行うＩ／Ｏ６００のＩ／Ｏ起動処理の場合も本処理に該当する）。該ＵＣＷ８のＳＩＯＰＭが自ＩＯＰＭのみを示していない（即ち、他ＩＯＰＭも存在する）とき、図５のＩＰ１のＩ／Ｏ命令起動処理と同じ要領で、該ＵＣＷ８をＵＣＷＣ７に登録し（ステップ７−１２）処理を終了する。
【００１９】
ＩＯＰ３０とＩＯＰ３１は、使用中であったＣＨまたはＣＨ配下のＣＵが空き状態になったとき該ＣＨＣＷまたはＣＵＷを読み出し（ステップ８−１）、Ｖビットが１かどうかチェックする（ステップ８−２）。Ｖビットが０である時処理を終了する。Ｖビットが１であるとき該ＣＨＣＷまたはＣＵＷのＬＣＵＷＮＯに対応するＬＣＵＷ９を読み出し（ＩＯＰ３１が行うＩ／Ｏ６００のＩ／Ｏ起動処理の場合、ＬＣＵＷＮＯ＝０のＬＣＵＷ９が読み出される）（ステップ８−３）、該ＬＣＵＷ９のＱＬＥＮＧＴＨが０かチェックする（ステップ８−４）。ＱＬＥＮＧＴＨが０であれば該ＣＨＣＷまたはＣＵＷのＶを０にして（ステップ８−１３）処理を終了する。次に該ＬＣＵＷ９のＴＬＵＣＷＮＯに対応するＵＣＷ８を読み出し（ステップ８−５）、該ＣＨＣＷまたはＣＵＷの該ＵＣＷ８のＰＡＭに含まれるかをチェックする（ステップ８−６）。ＰＡＭに含まれないときは処理を終了する。該ＵＣＷ８のＰＡＭに含まれる（ＩＯＰ３１が行うＩ／Ｏ６００のＩ／Ｏ起動処理の場合も本ケースに該当する）ときは、該ＵＣＷ８のＬＣを０にし（ステップ８−７）、該ＬＣＵＷ９のＱＬＥＮＧＴＨをマイナス１し（ステップ８−８）、その結果ＱＬＥＮＧＴＨが０になるかどうかチェックする（ステップ８−９）。ＱＬＥＮＧＴＨが０になるのであれば該ＣＨＣＷまたはＣＵＷのＶを０にして（ステップ８−１４）ステップ８−１１の処理を実行する。ＱＬＥＮＧＴＨが０にならなければ、該ＬＣＵＷ９のＴＬＵＣＷＮＯに該ＵＣＷ８のＮＬＵＣＷＮＯをセットし（ステップ８−１０）、該ＵＣＷ８のＰビットが１かをチェックする（ステップ８−１１）。Ｐビットが０であれば処理を終了する。該ＵＣＷ８のＰビットが１であれば該ＣＨを使用し該Ｉ／Ｏを起動し（Ｉ／Ｏ６００の起動はＩＯＰ３１が、ＵＣＷＮＯ＝０のＵＣＷ８のＰＡＭが４０に対応するＬＣＵＷＮＯ＝０のＬＣＵＷ９のＣＨＰＩＤ＝３０のＣＨを選択し、このＣＨを使用してＩ／Ｏ６００を起動する。）（ステップ８−１２）処理を終了する。
【００２０】
以上、本発明を一実施例に基づき具体的に説明したが、言うまでもなく本発明は前記実施例に限られるものでなく、その要旨を逸脱しない範囲において変更可能である。
【００２１】
【発明の効果】
以上説明したように、本発明によれば、Ｉ／Ｏが複数のＣＨに接続され、それらのＣＨが複数のＩＯＰにまたがるような構成においてＩ／Ｏ命令を実行する場合に、あるＣＨが使用不可能な状態であったとき、そのＣＨを制御するＩＯＰが入出力待ち行列からＩ／Ｏ命令を取り出し、再度入出力待ち行列に登録するという動作が不要となり、ＩＯＰの処理のオーバーヘッドを低減することが出来る。また、ＣＨ及びそのＣＨ配下のＣＵが空き状態になったことを契機にＩ／Ｏを起動することにより、空き状態になったＣＨ及びＣＵを有効利用することが可能となる。
【図面の簡単な説明】
【図１】本発明を実施した入出力処理システムの一例を示す構成図。
【図２】図１の主記憶装置に展開された入出力制御情報のテーブルを示す図。
【図３】図１の入出力処理装置の内部の入出力制御情報のテーブルを示す図。
【図４】図１の入出力装置（Ｉ／Ｏ６００）に関する入出力制御情報のテーブルを示す図。
【図５】命令処理装置の入出力命令処理フロー図。
【図６】入出力処理装置の入出力命令取り出し処理フロー図。
【図７】入出力処理装置の入出力命令取り出し処理フロー図（続き）。
【図８】入出力処理装置の入出力装置起動時における、チャネルまたは入出力制御装置使用中検出時の入出力制御情報記憶処理フロー図。
【図９】チャネルまたは入出力制御装置が空き状態になった後の入出力装置起動処理フロー図。
【符号の説明】
１…命令処理装置、  ２…主記憶装置、    ３０〜３１…入出力処理装置、
４００〜４０ｉ／４１０〜４１ｉ…チャネル、５００…入出力制御装置、
６００〜６０１…入出力装置、                  ７…入出力待ち行列、
８…入出力装置制御語、                    ９…論理入出力制御装置語。
【図１】
0004013313.tif 000002
【図２】
0004013313.tif 000003
【図３】
0004013313.tif 000004
【図４】
0004013313.tif 000005
【図５】
0004013313.tif 000006
【図６】
0004013313.tif 000007
【図７】
0004013313.tif 000008
【図８】
0004013313.tif 000009
【図９】
0004013313.tif 000010