(57)【要約】      （修正有）【課題】情報処理装置の入出力処理の遅延を抑制する演算処理装置を提供する。【解決手段】演算処理装置１０Ｘは、自装置の使用率が予め定められた閾値以下の場合、入出力処理に係るチャネルプログラムに含まれる論理アドレスを入出力処理装置が処理しやすい形式にアドレス変換したスクリプトを作成するスクリプト作成部１０Ｘ１を備える。【選択図】図２５
2019159713.tif 000002
【特許請求の範囲】
【請求項１】
入出力処理に係るチャネルプログラムに含まれる論理アドレスを、入出力処理装置が処理しやすい形式にアドレス変換したスクリプトを作成するスクリプト作成部、
を備える演算処理装置。
【請求項２】
自装置の使用率が予め定められた閾値以下の場合、前記スクリプト作成部が作成した前記スクリプトによる入出力処理の実行を前記入出力処理装置に指示し、
前記使用率が予め定められた閾値を上回る場合、前記入出力処理装置に前記チャネルプログラムの実行を指示する、
請求項１に記載の演算処理装置。
【請求項３】
所定の処理の平均応答時間を、その処理の平均処理時間と待ち行列理論によって求められる平均待ち時間の合計とした場合に、前記入出力処理において前記スクリプトを作成する処理の前記平均応答時間と前記入出力処理装置が前記スクリプトを実行したときの前記平均応答時間とを合計した第１平均応答時間と、前記入出力処理装置が前記チャネルプログラムを実行したときの平均応答時間である第２平均応答時間と、を所定時間あたりの入出力回数について比較し、前記第１平均応答時間が、前記第２平均応答時間よりも短くなる最大の前記入出力回数となるときの前記演算処理装置の使用率を前記使用率の閾値に設定する、
請求項１または請求項２に記載の演算処理装置。
【請求項４】
前記スクリプトは、前記チャネルプログラムの先頭の論理アドレスおよびチャネルプログラムに含まれる全ての論理アドレスを実アドレスに変換した形式で作成される、
請求項１から請求項３の何れか１項に記載の演算処理装置。
【請求項５】
前記チャネルプログラムの論理アドレスによって指定された読み出すべきデータが前記スクリプトに格納できるサイズの場合、前記データを読み出して前記スクリプトに格納して作成する、
請求項４に記載の演算処理装置。
【請求項６】
入出力処理に係るチャネルプログラムに含まれる論理アドレスをアドレス変換したスクリプトを取得し、前記スクリプトを実行することにより入出力処理を行うスクリプト実行部、
を備える入出力処理装置。
【請求項７】
演算処理装置からスクリプトを取得した場合、前記スクリプト実行部が前記スクリプトを実行することにより入出力処理を行い、
前記演算処理装置からチャネルプログラムを取得した場合、前記チャネルプログラムを実行することにより入出力処理を行う、
請求項６に記載の入出力処理装置。
【請求項８】
請求項１から請求項５の何れか１項に記載の演算処理装置と、請求項６または請求項７に記載の入出力処理装置と、
を備える情報処理装置。
【請求項９】
前記入出力処理装置に入出力処理を指示する入出力発行処理のみを行う第１の演算処理装置を少なくとも１つと、
メインメモリと周辺装置との入出力を指示されたとき、前記第１の演算処理装置に入出力処理を指示する第２の演算処理装置を少なくとも１つと、
を備え、前記第１の演算処理装置が、請求項１から請求項５の何れか１項に記載の演算処理装置である請求項８に記載の情報処理装置。
【請求項１０】
入出力処理に係るチャネルプログラムに含まれる論理アドレスを、入出力処理装置が処理しやすい形式にアドレス変換したスクリプトを作成するステップと、
前記スクリプトを実行することにより入出力処理を行うステップと、
を有する入出力処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置、入出力処理装置、情報処理装置及び入出力処理方法に関する。
【背景技術】
【０００２】
サーバやメインフレーム等の情報処理装置に搭載されたＥＰＵ（Execution Processing Unit）やＣＰＵ（Central Processing Unit）等の演算処理装置は、ソフトウェアからの各種指示を処理するためのファームウェアを内蔵している。このファームウェアには、ソフトウェアが作成したチャネルプログラムに基づいて入出力処理装置にメインメモリと周辺装置との間の入出力を指示する入出力発行処理が含まれている。
【０００３】
また、情報処理装置は、演算処理装置とは別に周辺装置との間の入出力処理を行う入出力処理装置を備えている。入出力処理装置は、ファームウェアとそれを実行するためのプロセッサを備えている。このファームウェアにも、演算処理装置からの入出力指示を処理する入出力処理が含まれている。これら入出力処理装置のプロセッサおよびファームウェアは、ソフトウェアが作成したチャネルプログラムを実行して、周辺装置との入出力処理を行う。これにより、演算処理装置の入出力処理に関する負荷を低減させている。
【０００４】
関連する技術として、特許文献１には、主記憶装置と入出力処理装置とを高速なインタフェースで接続し、中央処理装置と入出力処理装置とを信号線で接続した入出力制御システムを備えた情報処理装置が開示されている。この入出力制御システムを用いると、中央処理装置が主記憶装置に書込んだチャネルプログラムを、中央処理装置からの指示信号により、高速なインタフェースを介して入出力処理装置が読み出して実行する。これにより、低速なメモリバスを介して中央処理装置と主記憶装置とが接続された情報処理装置に対しても、メモリバスのデータ転送能力よりも高速な性能を有する入出力装置が接続可能となる。
【０００５】
また、特許文献２には、仮想計算機（ＶＭ：virtual machine）が稼働する情報処理装置においてアドレス変換を行うことが開示されている。より具体的には、特許文献２に記載のアドレス変換方式では、ＶＭが作成したアドレス変換テーブルを入出力装置に設ける。そして、入出力装置は、このアドレス変換テーブルを参照することによりチャネルプログラムを直接実行する。その為、ＶＭがアドレス変換を行うことなく、入出力処理のオーバーヘッドを低減することができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平６−１４９７１４号公報
【特許文献２】特開平１−１５４２６４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記のように、チャネルプログラムを入出力装置が実行するのは、演算処理装置の処理負荷を低減し、演算処理装置の処理効率を向上させるためである。しかし、近年では、演算処理装置と入出力処理装置の間のＩ／Ｆがシリアル化され、入出力処理装置からメインメモリへのアクセスに要するレイテンシが遅くなる傾向がある。入出力処理装置のプロセッサは、メインメモリからチャネルプログラムを読み出して、アドレス変換しながら入出力処理を行う。この処理は、入出力処理装置にとってオーバーヘッドが大きく、入出力処理の遅延の原因となる。特許文献１、２には、この遅延を解決する手段が開示されていない。
【０００８】
そこでこの発明は、上述の課題を解決する演算処理装置、入出力処理装置、情報処理装置及び入出力処理方法を提供することを目的としている。
【課題を解決するための手段】
【０００９】
本発明の一態様によれば、入出力処理に係るチャネルプログラムに含まれる論理アドレスを、入出力処理装置が処理しやすい形式にアドレス変換したスクリプトを作成するスクリプト作成部、を備える演算処理装置である。
【００１０】
本発明の一態様によれば、入出力処理に係るチャネルプログラムに含まれる論理アドレスをアドレス変換したスクリプトを取得し、前記スクリプトを実行することにより入出力処理を行うスクリプト実行部、を備える入出力処理装置である。
【００１１】
本発明の一態様によれば、上記の演算処理装置と、上記の入出力処理装置とを備える情報処理装置である。
【００１２】
本発明の一態様によれば、  入出力処理に係るチャネルプログラムに含まれる論理アドレスを、入出力処理装置が処理しやすい形式にアドレス変換したスクリプトを作成するステップと、前記スクリプトを実行することにより入出力処理を行うステップと、を有する入出力処理方法である。
【発明の効果】
【００１３】
本発明の入出力処理によれば、情報処理装置の入出力処理の遅延を抑制することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の第一実施形態による情報処理装置の構成の一例を示す図である。
【図２】本発明の第一実施形態による情報処理装置の構成の他の例を示す図である。
【図３】本発明の第一実施形態によるチャネルプログラムの構造の一例を示す図である。
【図４】本発明の第一実施形態によるチャネルプログラムヘッダの構造の一例を示す図である。
【図５】本発明の第一実施形態によるチャネルコマンドエントリの構造の一例を示す図である。
【図６】本発明の第一実施形態によるチャネルコマンドの一例を示す図である。
【図７】本発明の第一実施形態によるチャネルプログラムを修飾するフラグの一例を示す図である。
【図８】本発明の第一実施形態によるアドレス変換処理の一例を説明する第１の図である。
【図９】本発明の第一実施形態によるアドレス変換処理の一例を説明する第２の図である。
【図１０】本発明の第一実施形態によるアドレス変換処理の一例を説明する第３の図である。
【図１１】本発明の第一実施形態によるアドレス変換処理の一例を説明する第４の図である。
【図１２】本発明の第一実施形態によるチャネルプログラムのアドレス変換処理を説明する第１の図である。
【図１３】本発明の第一実施形態によるチャネルプログラムのアドレス変換処理を説明する第２の図である。
【図１４】本発明の第一実施形態によるスクリプトヘッダの構造の一例を示す図である。
【図１５】本発明の第一実施形態によるスクリプトエントリの構造の一例を示す図である。
【図１６】本発明の第一実施形態によるスクリプトコマンドの一例を示す図である。
【図１７】本発明の第一実施形態によるスクリプトエントリを修飾するフラグの一例を示す図である。
【図１８】本発明の第一実施形態によるスクリプトの一例を示す図である。
【図１９】本発明の第一実施形態による入出力処理の一例を示すフローチャートである。
【図２０】待ち行列の平均待ち時間の算出式を示す図である。
【図２１】待ち行列の平均応答時間の算出式を示す図である。
【図２２】本発明の第二実施形態による入出力処理応答時間の一例を示す図である。
【図２３】本発明の第二実施形態による入出力処理の一例を示す第１のフローチャートである。
【図２４】本発明の第二実施形態による入出力処理の一例を示す第２のフローチャートである。
【図２５】本発明の各実施形態による演算処理装置の最小構成を示す図である。
【図２６】本発明の各実施形態による入出力処理装置の最小構成を示す図である。
【図２７】本発明の各実施形態による情報処理装置の最小構成を示す図である。
【発明を実施するための形態】
【００１５】
＜第一実施形態＞
以下、本発明の第一実施形態による情報処理装置について図１〜図１９を参照して説明する。
図１は、本発明の第一実施形態による情報処理装置の構成の一例を示す図である。メインフレーム等の情報処理装置１は、図１に示すように演算処理を行うＥＰＵモジュール１００と、入出力処理を行うＩＯＰ（Input-Output Processor）モジュール（入出力処理装置）２００と、を備える。ＥＰＵモジュール１００とＩＯＰモジュール２００とは、ＰＣＩ Ｅｘｐｒｅｓｓ（ＰＣＩｅともいう）５０００のような高速なＩ／Ｆ（インタフェース）によって接続されている。
【００１６】
ＥＰＵモジュール１００には、ソフトウェアからの指示に従い処理を行うＥＰＵ（演算処理装置）１０１〜１０４と、ソフトウェアの指示や処理すべきデータを格納する主記憶装置であるメインメモリ１０５−０およびメインメモリ１０５−１と、ＥＰＵ１０１〜１０４とＩＯＰモジュール２００等とを接続するためのＢｕｓＩ／Ｆ１０７と、他のＥＰＵモジュールを接続するためのＮｏｄｅＩ／Ｆ１０８と、これらを接続する内部Ｂｕｓ１０９とを備えている。メインメモリ１０５−０およびメインメモリ１０５−１を総称して、メインメモリ１０５と記載する。
【００１７】
ＩＯＰモジュール２００は、補助記憶装置であるディスク装置などの周辺装置とメインメモリ１０５との間の入出力を制御する装置である。ＩＯＰモジュール２００は、ＢｕｓＩ／Ｆ１０７を介してＥＰＵモジュール１００と接続されている。
ＩＯＰモジュール２００は、ＩＯＣ（Input-Output Controller）２０１と、プロセッサ２０２と、ローカルメモリ２０３と、ＰＣＩｅカード２０４〜２０７と、を備える。ＩＯＣ２０１は、ＰＣＩｅカード２０４〜２０７およびローカルメモリ２０３と、メインメモリ１０５との間の入出力を制御するためのＩＯコントローラである。ＩＯＣ２０１は、ＥＰＵモジュール１００に接続するためのＩ／Ｆを含んでいる。プロセッサ２０２は、ＥＰＵ１０１〜１０４からの入出力指示に従い、ＰＣＩｅカード２０４〜２０７およびＩＯＣ２０１を制御して入出力を処理する。ローカルメモリ２０３は、プロセッサ２０２が実行するファームウェアと入出力制御で必要となるデータを格納する。ＰＣＩｅカード２０４〜２０７は、ＩＯＰモジュール２００と周辺装置とを接続するためのＨＢＡ（Host Bus Adapter）やＮＩＣ（Network Interface Card）等である。
【００１８】
ＩＯＰモジュール２００では、ＥＰＵ１０１〜１０４からの指示に従って、プロセッサ２０２上でファームウェアが動作し、ＩＯＣ２０１とＰＣＩｅカード２０４〜２０７を制御して周辺装置とメインメモリ１０５との間の入出力を制御する。
ＥＰＵ１０１〜１０４は、ソフトウェアからの指示により周辺装置とメインメモリ１０５の間の入出力を行うにあたり、対応するＩＯＰモジュール２００に対して入出力の開始を指示する。また、ＩＯＰモジュール２００は、ＥＰＵ１０１〜１０４が指示した入出力が終了すると、その終了をＥＰＵ１０１〜１０４に報告する。ＥＰＵ１０１〜１０４とＩＯＰモジュール２００の間のやり取りは、ＩＯＣ２０１内レジスタへの書き込みやＥＰＵ１０１〜１０４への割込みによる通知によって行われる。
本実施形態では、図１に示すＥＰＵモジュール１００の構成を例に説明を行うが、ＥＰＵモジュール１００が備える各装置（ＥＰＵ１０１〜１０４やメインメモリ１０５等）の個数は図１に示す構成に限定されない。
【００１９】
図２は、本発明の一実施形態による情報処理装置の構成の他の例を示す図である。
図２において、ＥＰＵモジュール１００は、ＮｏｄｅＩ／Ｆ１０８を介して、他のＥＰＵモジュール１１０，１２０，１３０と接続されている。ＥＰＵモジュール１００は、複数のＩＯＰモジュール２００，２１０，２２０，２３０を接続することが可能である。ＥＰＵモジュール１１０は、複数のＩＯＰモジュール３００，３１０，３２０，３３０を接続することが可能である。ＥＰＵモジュール１２０，１３０についても同様である。
本実施形態では、図２の例のようにＥＰＵモジュール１００に４台のＩＯＰモジュール２００，２１０，２２０，２３０を接続できるものとして説明する。しかし、ＥＰＵモジュール１台あたりに接続するＩＯＰモジュールの台数は任意であり、４台以上でも良いし、３台以下でもよい。
【００２０】
次にＥＰＵモジュール１００等によって実行されるソフトウェアが作成するチャネルプログラム１０について説明する。チャネルプログラム１０は、ＥＰＵ１０１〜１０４の負荷を軽減するため、ＩＯＰモジュール２００のプロセッサ２０２およびファームウェアが処理する。
図３は、本発明の第一実施形態によるチャネルプログラムの構造の一例を示す図である。
図３に示すようにチャネルプログラム１０は、先頭にチャネルプログラムヘッダ（ＣＰＨ）１０−０を有し、それに続き個々に指示が記載されたチャネルコマンドエントリ（ＣＣＥ）１０−ｎが続く構成を有している。
【００２１】
図４は、本発明の第一実施形態によるチャネルプログラムヘッダの構造の一例を示す図である。
図に示すようにＣＰＨ１０−０は、１６ｂｙｔｅの固定長で、最初の４ｂｙｔｅに入出力指示を行うチャネル番号１０−０−１が格納される。チャネル番号１０−０−１は、入出力を行う周辺装置を指定する値である。チャネル番号１０−０−１は、例えば、ＩＯＰモジュール２００の接続位置や、ＰＣＩｅカード２０４〜２０７の実装位置などを示す番号である。５〜１６ｂｙｔｅには０が格納される。
【００２２】
図５は、本発明の第一実施形態によるチャネルコマンドエントリの構成の一例を示す図である。
ＣＣＥ１０−ｎは、１６ｂｙｔｅの固定長であり、指示の内容を示すコマンド１０−ｎ−１と、コマンドやチャネルプログラムを修飾するフラグ１０−ｎ−２、データ転送の転送長を示すカウント１０−ｎ−３、メインメモリ１０５上のデータ転送元やデータ転送先を示すアドレス１０−ｎ−４が格納される。
【００２３】
図６は、本発明の第一実施形態によるチャネルコマンドの一例を示す図である。
図６の項番１と項番２に示すコマンドは、データ転送を開始する前に周辺装置に対し、制御データを設定するためのコマンドである。これらのコマンドの場合、ＣＣＥ１０−ｎのアドレス１０−ｎ−４には、制御データを格納しているメインメモリ１０５上の論理アドレスを格納する。これらのコマンドでは、ＩＯＰモジュール２００は、メインメモリ１０５から制御データを読み出して、制御データを周辺装置に設定する処理を行う。これらのコマンドはデータ転送前のディスク上のアクセス位置の決定などに使用される。
項番３と項番４に示すコマンドは、周辺装置とメインメモリ１０５の間のデータ転送を指示するコマンドであり、転送方向別にコマンドが分かれている。ＣＣＥ１０−ｎのアドレス１０−ｎ−４には、メインメモリ１０５上の転送元または転送先の論理アドレスが格納される。ＩＯＰモジュール２００は、これらの論理アドレスを元にＩＯＣ２０１とＰＣＩｅカード２０４〜２０７等を制御してデータ転送を実行する。なお、図６に示すコマンドは一例であり、処理系によって異なる場合がある。
【００２４】
図７は、本発明の第一実施形態によるチャネルプログラムを修飾するフラグの一例を示す図である。
図７にＣＣＥ１０−ｎのフラグ１０−ｎ−２の例を示す。各ｂｉｔが０か１かで意味を持つようになっている。例えば、項番１に示すフラグは、ｂｉｔ０が、チャネルプログラム中のＣＣＥが継続しているかどうかを示すフラグである。ｂｉｔ０が、１の場合は次のＣＣＥが存在することを示し、０の場合は現ＣＣＥが最終のＣＣＥであることを示している。
【００２５】
チャネルプログラム１０の構造は、情報処理装置の仕様によって異なり、ＣＰＨ１０−０やＣＰＥ１０−ｎの構造、コマンド１０−ｎ−１およびフラグ１０−ｎ−２の意味も様々である。また、ＣＣＥ１０−ｎは、チャネルコマンドワード（ＣＣＷ）と呼ばれる場合がある。本実施形態では、図３〜図６で例示した用語や構造を用いて説明する。
【００２６】
図８は、本発明の第一実施形態によるアドレス変換処理の一例を説明する第１の図である。
情報処理装置１で動作するソフトウェアは、メモリ保護のため、メインメモリ空間を論理アドレス空間と実アドレス空間に分けて処理する。図８にセグメント方式とページング方式を合わせたページ化セグメンテーション方式の概要を示す。ページ化セグメンテーションでは、メインメモリ空間をセグメントと呼ばれる任意のサイズの領域に分割し、さらにセグメント内をページと呼ばれる固定長の空間に分割して管理する。
【００２７】
図９は、本発明の第一実施形態によるアドレス変換処理の一例を説明する第２の図である。
図９にページ化セグメンテーション方式における論理アドレス空間１０００と、実アドレス空間３０００との対応を示す。論理アドレス空間１０００は、複数のセグメント１０００−ｎに分割される。さらに１つのセグメント１０００−ｎは、複数のページ２０００−ｍに分割されている。そして、論理アドレス空間１０００上の各ページ２０００−ｍは、実アドレス空間３０００上の各ページ３０００−ｐに対応している。論理アドレス空間１０００上では、セグメント１０００−ｎと、ページ２０００−ｍは、連続したアドレス空間となるが、対応する実アドレス空間３０００上のページ３０００−ｐは、論理アドレス空間１０００と異なり不連続となる場合がある。
【００２８】
図１０は、本発明の第一実施形態によるアドレス変換処理の一例を説明する第３の図である。
論理アドレス空間１０００におけるアドレス形式は、図１０に示すように表現される。このアドレス形式では、論理アドレス空間１０００の上位ｂｉｔ列のＳＴＥ１１００が、論理アドレス空間１０００におけるセグメント１０００−ｎの位置を示す。中位ｂｉｔ列のＰＴＥ２１００は、ＳＴＥ１１００の示すセグメント１０００−ｎ中のページ２０００−ｍの位置を示す。下位ｂｉｔ列のＲＰＡ３１００は、ＰＴＥ２１００の示すページ２０００−ｍ中の相対位置を示す。ＳＴＥ１１００、ＰＴＥ２１００、ＲＰＡ３１００の各ｂｉｔ列の長さは各セグメントとページの大きさに依存する。例えば、ページサイズが４ＫＢの場合、ＲＰＡ３１００は１２ｂｉｔになる。本実施形態では、特にページサイズは規定しない。
【００２９】
図１１は、本発明の第一実施形態によるアドレス変換処理の一例を説明する第４の図である。
図１１に、図１０に示すアドレス形式から実アドレスを求める際に使用するアドレス変換テーブルを示す。このアドレス変換テーブルは、入出力処理を要求するソフトウェアによって作成される。メモリ保護単位であるプロセス毎の論理アドレス空間を管理するため、アドレス変換テーブルは、論理アドレス空間を区別するアドレス空間番号表１を有している。アドレス空間番号表１には、空間番号ｎごとに固定長のエントリ１−ｎを有し、そのエントリ１−ｎ内にはその空間に属するセグメントを識別するセグメント記述子表２への実アドレスが格納される。セグメント記述子表２には、セグメント毎に固定長のセグメント記述子（ＳＤ）２−ｍが格納される。セグメント記述子２−ｍは、セグメント番号順に格納され、そのセグメントに属するページを識別するページ記述子表３への実アドレスやセグメントのアクセス許可フラグが格納される。ページ記述子表３には、ページ毎に固定長のページ記述子（ＰＤ）３−ｐが格納される。ページ記述子３−ｐには、ページ番号順にページ記述子表３に格納され、そのページに対応する実アドレス空間上のページ３０００−ｐの実アドレスやページのアクセス許可フラグ等を格納される。
【００３０】
図１０に示す論理アドレスから実アドレスを算出する場合、図１１のアドレス変換テーブルを使用して次のように算出する。例えば、論理アドレスの属する空間番号が０の場合、ＥＰＵ１０１は、まず、論理アドレスの属する空間番号０を使用して、アドレス空間番号表１のエントリ１−０を求めて読み出す。アドレス空間番号表１のエントリは固定長なので空間番号０にエントリのサイズを乗ずることでエントリ１−０の実アドレスを算出することが出来る。次に、ＥＰＵ１０１は、読み出したエントリ１−０からセグメント記述子表２の実アドレスを取得し、その実アドレスにＳＴＥ１１００とセグメント記述子のサイズを乗じた値を加算した実アドレスよりセグメント記述子２−２を読み出す。
【００３１】
次にＥＰＵ１０１は、セグメント記述子２−２からページ記述子表３の実アドレスを取得し、そのアドレスにＰＴＥ２１００とページ記述子のサイズを乗じた値を加算した実アドレスよりページ記述子３−２を読み出す。そして、ＥＰＵ１０１は、読み出したページ記述子３−２よりページの実アドレスを取得し、その実アドレスにＲＰＡを加算した値が目的のアドレス３０００−ｘとなる。
【００３２】
通常、ソフトウェアは、最初にアドレス空間番号表１の先頭の実アドレスをＥＰＵ１０１〜１０４の特定レジスタに設定するだけである。アドレス変換は、ＥＰＵ１０１〜１０４内のハードウェアによって実現される。図８〜図１１を用いて説明したアドレス変換処理は、ＥＰＵ１０１等のプロセッサで行われる一般的な処理である。また、例えば、ソフトウェアの指示により、入出力処理を行う場合、ＩＯＰモジュール２００は、チャネルプログラム１０を実行するために、このようなアドレス変換処理を実行する。ここでチャネルプログラム１０の説明に戻る。
【００３３】
図１２は、本発明の第一実施形態によるチャネルプログラムのアドレス変換処理を説明する第１の図である。
図１２にソフトウェアの論理アドレス空間ｐとチャネルプログラム１０の論理アドレスの関係を示す。ソフトウェアによって作成されるチャネルプログラム１０は、図１２に示すようにソフトウェアの属する論理アドレス空間ｐにおける論理アドレスで指定される。チャネルプログラム１０の先頭アドレスや各ＣＣＥ１０−ｎにおけるデータアドレスも全て論理アドレス空間ｐにおける論理アドレスで指定される。上記のように、データ転送領域は、論理アドレス空間では連続空間であったとしてもページやセグメント境界を跨ぐことによって実アドレス空間では不連続になっている場合がある。
【００３４】
図１２のチャネルプログラム１０の詳細を図１３に示す。
図１３は、本発明の第一実施形態によるチャネルプログラムのアドレス変換処理を説明する第２の図である。
ＣＰＨ１０−０には、入出力処理を要求する周辺装置等のチャネル番号が格納されている。ＣＰＨ１０−０に続くＣＣＥ１０−１は、周辺装置に制御データＢを設定するコマンドである。ＣＣＥ１０−１には、制御データＢのカウントと制御データＢを格納しているメインメモリ１０５上の論理アドレスが格納される。次にＣＣＥ１０−２が存在するので、フラグの値は０ｘ８０である（図７）。
【００３５】
次のＣＣＥ１０−２は、制御データＣを周辺装置に設定するコマンドであり、上記と同様に制御データＣのカウントと制御データＣを格納しているメインメモリ１０５上の論理アドレスが格納される。また、フラグは次にＣＣＥ１０−３が存在するため０ｘ８０になっている。次のＣＣＥ１０−３は、周辺装置にデータ転送するＣＣＥで転送データを格納しているメインメモリ１０５上の論理アドレスと転送カウントＮが格納される。また、本ＣＣＥ１０−３でチャネルプログラム１０が終了するのでフラグは０ｘ００になっている。
【００３６】
図１３に例示するチャネルプログラム１０は、ＥＰＵ１０１〜１０４の指示によりＩＯＰモジュール２００が実行する。ＥＰＵ１０１〜１０４は、チャネルプログラム１０の先頭の論理アドレスとチャネルプログラム１０が属する論理アドレス空間番号ｐを指定して、ＩＯＰモジュール２００へ入出力を指示する。ＩＯＰモジュール２００は、メインメモリ１０５に対して論理アドレスで直接アクセスすることが出来ない。従って、ＩＯＰモジュール２００は、空間番号ｐに基づいて上記の手順で論理アドレスを実アドレスに変換してチャネルプログラム１０を読み出して処理する。この様にＩＯＰモジュール２００でチャネルプログラムのアドレス変換を行うことをチャネルＤＡＴ（dynamic address translation）と言う。チャネルＤＡＴは、メインフレームのような情報処理装置では一般的に使用されている。
【００３７】
ＩＯＰモジュール２００は、各ＣＣＥ１０−１〜１０−３に格納されている論理アドレスに対しても、同様にアドレス変換を行ってデータの読み出しや書き込みを行う。このとき、ＣＣＥ１０−１〜１０−３の論理アドレスとカウントで指定されたデータ転送領域（１０−１−ｄ、１０−２−ｄ、１０−３−ｄ）が、ページやセグメント境界を跨ぐ場合がある。この場合、ＩＯＰモジュール２００は、ページまたはセグメントごとにアドレス変換を行って論理アドレスを実アドレスに変換する処理を行う。さらにチャネルプログラム１０のＣＰＨ１０−０またはＣＣＥ１０−１〜１０−３の境界でもページまたはセグメントを跨ぐ場合がある。この場合にも、ＩＯＰモジュール２００は、ページまたはセグメントごとにアドレス変換を行って読み出しを行う。
【００３８】
ＩＯＰモジュール２００が、チャネルプログラム１０を処理することにより、入出力処理をＥＰＵ１０１〜１０４からＩＯＰモジュール２００にオフロードすることができる。これにより、ＥＰＵ１０１〜１０４の処理効率が向上する。しかし、ＥＰＵモジュール１００とＩＯＰモジュール２００の間のＩ／Ｆのシリアル化（例えば、ＰＣＩｅなど）によってＩＯＰモジュール２００からメインメモリ１０５へのアクセスレイテンシが、ＥＰＵモジュール１００とＩＯＰモジュール２００との間をパラレル接続する場合に比べ遅くなってきている。ＩＯＰモジュール２００でアドレス変換しながらチャネルプログラム１０をメインメモリ１０５から読み出して処理することは、ＩＯＰモジュール２００にとってオーバーヘッドが大きく、入出力処理の遅延の原因となる。これは、上記のようにチャネルプログラム１０が論理アドレスで指定されるため、アドレス変換の為に何回もアドレス変換テーブルにアクセスする必要があるためである。
【００３９】
また、近年ではＥＰＵ１０１〜１０４の性能の向上により、ＥＰＵ１０１〜１０４で入出力処理を実行しても情報処理装置全体の処理効率には、ほとんど影響が出なくなってきている。そこで本実施形態では、ＥＰＵ１０１〜１０４が、チャネルプログラム１０をＩＯＰモジュール２００の処理に適したスクリプト２０に変換する。スクリプト２０には、チャネルプログラム１０に格納された論理アドレスの情報を、実アドレスに変換した値が格納される。
ＥＰＵ１０１〜１０４は、スクリプト２０を格納しているメインメモリ１０５上の実アドレスを指定して入出力処理を指示することができる。次にスクリプト２０について説明する。
【００４０】
図１４は、本発明の第一実施形態によるスクリプトヘッダの構造の一例を示す図である。
スクリプト２０のスクリプトヘッダ２０−０は、例えば、図１４のように定義することができる。チャネル番号２０−０−１は、入出力処理を指示するチャネル番号である。チャネル番号２０−０−１は、ＣＰＨ１０−０のチャネル番号１０−０−１と同じ値を格納する。スクリプトサイズ２０−０−２には、スクリプトヘッダ２０−０の先頭からスクリプトエントリ２０−ｎの最後までのサイズをＢｙｔｅ単位で格納される。
【００４１】
図１５は、本発明の第一実施形態によるスクリプトエントリの構造の一例を示す図である。
スクリプト２０のスクリプトエントリ２０−ｎは、例えば、図１５のように定義することができる。スクリプトエントリ２０−ｎは、ＩＯＰモジュール２００への指示内容を示すコマンド２０−ｎ−１と、コマンド２０−ｎ−１やスクリプト２０全体を修飾するためのフラグ２０−ｎ−２と、コマンド２０−ｎ−１に対するデータを格納するデータ０〜２（２０−ｎ−４〜２０−ｎ−６）と、データのサイズを指定するカウント（２０−ｎ−３）と、から構成されている。
【００４２】
図１６は、本発明の第一実施形態によるスクリプトコマンドの一例を示す図である。
図１６に示す各コマンド２０−ｎ−１は、図６に示すチャネルプログラム１０のコマンド１０−ｎ−１に対応している。
図１６の項番１に示すコマンドは、データ転送を開始する前に制御データＢを、周辺装置に対し設定するためのコマンドである。項番２に示すコマンドは、データ転送を開始する前に制御データＣを、周辺装置に対し設定するためのコマンドである。スクリプトエントリ２０−１のデータ０〜２（２０−ｎ−４〜２０−ｎ−６）には、制御データが格納されている。チャネルプログラム１０の場合、ＣＣＥ１０−１には、制御データＢ，Ｃを格納するメインメモリ１０５上の論理アドレスが格納されるのに対し、コマンド２０−ｎ−１では、論理アドレスが指定する読み出すべき制御データが、データ０〜２（２０−ｎ−４〜２０−ｎ−６）に格納できるサイズの場合、ＥＰＵ１０１等が当該データを読み出し、読み出した制御データを、データ０〜２（２０−ｎ−４〜２０−ｎ−６）に格納する。
項番３と項番４に示すコマンドは、周辺装置とメインメモリ１０５の間のデータ転送を指示するコマンドであり、転送方向別にコマンドが分かれている。メインメモリ１０５上の転送先および転送元の領域が実アドレスでデータ１〜２（２０−ｎ−５〜２０−ｎ−６）に指定される。また、カウント（２０−ｎ−３）には転送長がＢｙｔｅ単位で指定される。
【００４３】
図１７は、本発明の第一実施形態によるスクリプトエントリを修飾するフラグの一例を示す図である。
図１７にスクリプトエントリ２０−ｎのフラグ２０−ｎ−２の例を示す。フラグ２０−ｎ−２の意味はｂｉｔ単位で示されており、項番１に示すフラグはスクリプト２０が終了しているかどうかを示し、項番２に示すフラグはデータ転送が継続しているかどうかを示している。これは、論理アドレス空間におけるページおよびセグメント境界越えのある領域に対してデータ転送を行うときに実アドレス空間が不連続となる場合があるため、１個のＣＣＥ１０−ｎで指定されたデータ転送を複数のスクリプトエントリ２０−ｎに分解するために使用される。
【００４４】
図１８は、本発明の第一実施形態によるスクリプトの一例を示す図である。
図１８に、図１２，１３で示されるチャネルプログラム１０を変換したスクリプト２０を示す。先頭は、スクリプトヘッダ２０−０で、出力処理を指示するチャネル番号とスクリプトサイズが格納される。図１８の例では、スクリプトサイズは１１２ｂｙｔｅなので、スクリプトサイズには、０ｘ７０が格納される。次のスクリプトエントリ２０−１は、制御データＢを周辺装置に設定する指示が格納される。スクリプトエントリ２０−１のデータ０〜２には制御データＢが格納され、カウントに制御データのサイズの０ｘ０Ｃが格納される。また、フラグには次のスクリプトエントリ２０−２が存在するため０ｘ８０が格納される。
【００４５】
次のスクリプトエントリ２０−２は、制御データＣを周辺装置に設定する指示が格納される。スクリプトエントリ２０−２のデータ０〜２には制御データＣが格納され、カウントには制御データＣのサイズの０ｘ０Ｃが格納される。また、フラグには次のスクリプトエントリ２０−３が存在するため０ｘ８０が格納される。そして、次のスクリプトエントリ２０−３は、メインメモリ１０５から周辺装置へのデータ転送を指示する。転送元の領域（データ転送領域１０−３−ｄ）が、図１２のように４つのページまたはセグメントに分割されているため、実アドレスを指定してデータ転送を行うためにフラグを使用して４つのスクリプトエントリ２０−３〜２０−６に分かれて指示されている。
【００４６】
最初のスクリプトエントリ２０−３のデータ転送指示は、データ転送領域の先頭から最初のページまたはセグメント境界までの転送を指示している。転送アドレスには、図１２に示す論理アドレスＤを実アドレスに変換したものが格納される。また、カウントにはデータ転送領域の先頭から最初のページまたはセグメント境界までのサイズｎが格納され、フラグは次の継続したデータ転送が存在するため０ｘ４０が格納される。なお、スクリプト自体はこのデータ転送指示で終了なのでフラグのｂｉｔ０には０が設定される。
【００４７】
次のスクリプトエントリ２０−４、２０−５は継続のデータ転送指示である。最初のページまたはセグメント境界から次のページまたはセグメント境界までの領域がデータ転送対象となる。そのため、スクリプトエントリ２０−４、２０−５の転送アドレスには最初のページまたはセグメント越えした論理アドレスに対する実アドレスが指定され、カウントには次のページまたはセグメントまでのサイズｍが指定される。また、フラグも転送継続を示す０ｘ４０が格納される。
【００４８】
データ転送指示は、カウントが最後に到達するまで行う。スクリプトエントリ２０−６では、最後のページまたはセグメント越えの論理アドレスに対する実アドレスが転送アドレスに格納され、カウントには最後のページまたはセグメント越えの領域の先頭からデータ転送領域の最後までのサイズが指定される。また、スクリプトエントリ２０−６のフラグには０ｘ００が格納されてデータ転送指示が終了することが示される。なお、論理アドレスがページまたはセグメント境界かどうかの判断は論理アドレスがＲＰＡ３１００からＰＴＥ２１００への桁上がり、またはＰＴＥ２１０からＳＴＥ１１００への桁上がりによって判断できる。また、ＲＰＡ３１００からＰＴＥ２１００への桁上がりはページ越えを示し、ＰＴＥ２１００からＳＴＥ３１００への桁上がりはセグメント越えとなる。
【００４９】
第一実施形態では、情報処理装置１のＥＰＵ１０１〜１０４を、チャネルプログラム１０をスクリプト２０に変換する処理のみを行うＥＰＵと、ソフトウェアからの指示を実行するＥＰＵとで役割分担する。例えば、ＥＰＵモジュール１００内のＥＰＵ１０１〜１０３がソフトウェアの指示を実行するＥＰＵで、ＥＰＵ１０４がＥＰＵモジュール１００に接続されているＩＯＰモジュール２００，２１０，２２０，２３０に対するチャネルプログラム１０をスクリプト２０に変換処理するＥＰＵとする。ＥＰＵ１０４をＩＯＰ用ＥＰＵと呼ぶ。ＩＯＰ用ＥＰＵは４台のＩＯＰ分の変換処理を行う。
【００５０】
ＥＰＵ１０１〜１０４は、各種処理を行うためのファームウェアを内蔵している。ソフトウェアからメインメモリ１０５と周辺装置との間の入出力をチャネルプログラム１０によって指示されたとき、ＥＰＵ１０１〜１０３はファームウェアを実行してＩＯＰ用ＥＰＵ（ＥＰＵ１０４）にチャネルプログラム１０のスクリプト２０への変換と、ＩＯＰモジュール２００への入出力要求の発行を通信で指示する。ＩＯＰ用ＥＰＵ（ＥＰＵ１０４）は、その指示を取得するとファームウェアを実行してチャネルプログラム１０をスクリプト２０へ変換する。ＥＰＵ１０４は、変換後のチャネルプログラムヘッダ１０−０のチャネル番号１０−０−１に対応したＩＯＰモジュール２００に対してスクリプト２０の実行を指示する。
【００５１】
次に第一実施形態の入出力処理の流れについて説明する。ＩＯＰ用ＥＰＵ（ＥＰＵ１０４）が、他のＥＰＵ１０１〜１０３から入出力の指示を取得すると、図１９に示す入出力発行処理（７００）を実行する。図１９は、本発明の第一実施形態による入出力処理の一例を示すフローチャートである。
この処理は、ＩＯＰ用ＥＰＵに内蔵されたファームウェアの一部をＥＰＵ１０４が実行することにより実現される。ファームウェアは、チャネルプログラム１０を読み出して、チャネルプログラム１０に格納された各種の論理アドレスを実アドレスに変換するアドレス変換処理を行って、スクリプト２０を作成する（７０３）。次にファームウェアは、作成したスクリプト２０をメインメモリ１０５の任意の位置に格納する。次にファームウェアは、スクリプト２０の実アドレスを指定してＩＯＰモジュール２００にスクリプト２０の実行による入出力処理を指示する（７０４）。
【００５２】
なお、図１４〜図１８に例示するスクリプト２０の形式は一例であって、これに限定されない。スクリプト２０は、ＩＯＰモジュール２００からのメインメモリ１０５へのアクセスが少なくなり、ＩＯＰモジュール２００が処理し易い形式であればよい。
【００５３】
ＥＰＵ１０１〜１０４等の一般的な演算処理装置は、自身のハードウェアにアドレス変換機能（例えばＴＬＢ等）を有している。その為、ソフトウェアおよびＥＰＵ１０１〜１０４に内蔵されるファームウェアは、この機能を利用して、チャネルプログラム１０の論理アドレスを実アドレスに変換することが出来る。また、ＥＰＵ１０１〜１０４の命令を実行することで論理アドレスから実アドレスを算出することもできる。チャネルプログラム１０からスクリプト２０への変換については、これらの機能を利用して行うことができる。本実施形態では、チャネルプログラム１０からスクリプト２０への変換処理の内容については特に限定しない。
【００５４】
スクリプト２０を処理する方法と比べると、ＩＯＰモジュール２００がチャネルプログラム１０を処理する方法は、アドレス変換のためのメインメモリ１０５へのアクセスが多く発生する。図１、２で示すような現在の情報処理装置ではＥＰＵモジュール１００とＩＯＰモジュール２００の間のＩ／ＦはＰＣＩｅ等によりシリアル化されていることが多く、ＩＯＰモジュール２００からメインメモリ１０５へのアクセスは、スループットは高いが応答時間が遅い傾向がある。本実施形態によれば、ＩＯＰ用ＥＰＵ（ＥＰＵ１０４）でチャネルプログラム１０の論理アドレスを実アドレスに変換し、スクリプト２０に変換する。これにより、ＩＯＰモジュール２００でのアドレス変換処理に伴う、ＩＯＰモジュール２００からメインメモリ１０５へのアクセスを減らし、ＩＯＰモジュール２００のオーバーヘッドを削減することが出来る。
【００５５】
近年、コンピュータやサーバなどの情報処理装置で使用されるＣＰＵやＥＰＵ等の演算処理装置の処理能力が向上している。これにより、例えば、人工知能の構築などが可能になってきている。一方、大量のデータを高速に処理する大規模な情報処理装置では、ＥＰＵやＣＰＵの処理能力の向上に見合った入出力処理の向上も必要になる。特に応答性能を必要とするオンライントランザクション処理においては、情報処理装置が高負荷な状態であったとしても安定して処理するために入出力の応答時間がある一定以下の処理時間である必要がある。本実施形態の入出力処理方式を適用すれば、このような要求に対応することができる。
【００５６】
＜第二実施形態＞
以下、本発明の第二実施形態による情報処理装置について、図２０〜図２５を参照して説明する。第二実施形態に係る情報処理装置のうち、第一実施形態に係る情報処理装置と同じ構成には同じ符号を付し、それらの説明を省略する。
【００５７】
第一実施形態の方法では、ＩＯＰ用ＥＰＵ（ＥＰＵ１０４）は、１台のＥＰＵで４台分のＩＯＰモジュール２００の処理を行うことになる。ところで、待ち行列理論よりＭ／Ｍ／１の待ち行列における平均待ち時間は処理系の利用率と平均処理時間に基づき、図２０に示す待ち行列の平均待ち時間の算出式で算出することができる。また、処理系の平均応答時間は、図２１に示す待ち行列の平均応答時間の算出式で算出することができる。
【００５８】
ＩＯＰ用ＥＰＵ（ＥＰＵ１０４）におけるチャネルプログラム１０からスクリプト２０への変換処理の平均処理時間を３５μｓとし、ＩＯＰモジュール２００等におけるスクリプト２０の平均処理時間を４５μｓとする。また、ＩＯＰモジュール２００がチャネルプログラム１０を処理したときの平均処理時間を１００μｓとしたとき、ＩＯＰモジュール２００毎のＩＯＰＳ（入出力回数）に基づいて平均応答時間を、図２０と図２１の式により算出すると図２２に示す表のようになる。
【００５９】
図２２は、本発明の第二実施形態による入出力処理応答時間の一例を示す図である。
ＩＯＰ用ＥＰＵ（ＥＰＵ１０４）で、チャネルプログラム１０をスクリプト２０に変換してＩＯＰモジュール２００で入出力処理する場合の応答時間は、ＥＰＵ応答時間とＩＯＰ応答時間の合計で算出することができる。この算出結果を「Ｉ／Ｏ応答時間（ＥＰＵ有）」の列に示す。ＩＯＰモジュール２００がチャネルプログラム１０を処理する場合の応答時間を、「Ｉ／Ｏ応答時間（ＥＰＵ無）」の列に示す（単位はμｓ）。
【００６０】
図２２の表を参照すると、６０００ＩＯＰＳ以上になるとＩＯＰモジュール２００がチャネルプログラム１０を処理する方が、応答時間が速くなる。ＩＯＰ用ＥＰＵ（ＥＰＵ１０４）によってチャネルプログラム１０をスクリプト２０に変換してＩＯＰモジュール２００に処理させるのはＩＯＰモジュール２００のオーバーヘッドを削減し、ＩＯＰモジュール２００でチャネルプログラム１０を実行するよりも応答時間を短縮させるためである。しかし、６０００ＩＯＰＳだと逆に遅くなってしまう。これは、１台のＩＯＰ用ＥＰＵ（ＥＰＵ１０４）で４台のＩＯＰモジュール２００等を処理しているためＩＯＰ用ＥＰＵ（ＥＰＵ１０４）の負荷が、ＩＯＰモジュール２００等の負荷に対して高くなってしまい、平均待ち時間が長くなってしまうのが原因である。
このような状況を解決するにはＩＯＰに対してＥＰＵの台数を増やすことが考えられる。例えば、ＩＯＰ用ＥＰＵ（ＥＰＵ１０４）を２台に増やせばＥＰＵ使用率は半分程度になるため平均待ち時間が削減され、応答時間が早くなる。つまり、第一実施形態の方法のまま、「Ｉ／Ｏ応答時間（ＥＰＵ有）」の時間が、「Ｉ／Ｏ応答時間（ＥＰＵ無）」より小さくなるようにＩＯＰ用ＥＰＵの個数を調節すればよい。
【００６１】
しかし、実際にはＥＰＵの個数や構成の制限によりＩＯＰ用ＥＰＵを増やすことが出来ない場合がある。そこで、本発明ではＩＯＰ用ＥＰＵ（ＥＰＵ１０４）の使用率を監視し、ＩＯＰモジュール２００がチャネルプログラム１０を読み出して処理したほうが、応答時間が速くなるＥＰＵ使用率以上の場合、ＩＯＰ用ＥＰＵ（ＥＰＵ１０４）がチャネルプログラム１０をスクリプト２０への変換する処理を行わず、ＩＯＰモジュール２００に直接チャネルプログラム１０の処理を指示することで、入出力応答時間の増加を防ぐ。
スクリプト２０を作成するか否かを判定する使用率の閾値は、例えば、「Ｉ／Ｏ応答時間（ＥＰＵ有）」の時間が、「Ｉ／Ｏ応答時間（ＥＰＵ無）」より小さくなる最大のＩＯＰＳを選択し、その時のＩＯＰ用ＥＰＵ（ＥＰＵ１０４）の使用率を閾値に設定することができる。
【００６２】
図２３は、本発明の第二実施形態による入出力処理の一例を示す第１のフローチャートである。
ＩＯＰ用ＥＰＵ（ＥＰＵ１０４）が、他のＥＰＵ１０１〜１０３から入出力の指示を取得すると、入出力発行処理（７００）を実行する。入出力発行処理（７００）では、まず、ＩＯＰ用ＥＰＵ（ＥＰＵ１０４）のファームウェアが、自ＥＰＵ１０４の使用率を確認する（７０１）。使用率が所定の閾値（例えば、７０％）以下ならば（７０２；Ｙｅｓ）、ファームウェアは、ソフトウェアが作成し、他のＥＰＵ１０１〜１０３によって指示されたチャネルプログラム１０に対しアドレス変換処理を行って、スクリプト２０を作成する（７０３）。次にファームウェアは、指定されたＩＯＰモジュール２００にスクリプト２０による入出力処理の実行を指示する（７０４）。自ＥＰＵ１０４の使用率が所定の閾値（例えば、７０％）を上回る場合（７０２；Ｎｏ）、ＩＯＰ用ＥＰＵ（ＥＰＵ１０４）のファームウェアはスクリプト２０の作成を行わない。ファームウェアは、ＩＯＰモジュール２００に直接チャネルプログラム１０を実行するよう指示する（７１０）。より具体的には、ファームウェアは、ＥＰＵ１０１〜１０３から指示されたチャネルプログラム１０の論理アドレスと空間番号ｐを指定して、ＩＯＰモジュール２００等にチャネルプログラム１０による入出力処理を指示する。
【００６３】
また、ＩＯＰモジュール２００は、ＩＯＰ用ＥＰＵ（ＥＰＵ１０４）から入出力指示を受けた時にＩＯＰモジュール２００が内蔵するファームウェアに組込まれた入出力処理８００を実行する。
図２４は、本発明の第二実施形態による入出力処理の一例を示す第２のフローチャートである。
この入出力処理８００は、ＩＯＰモジュール２００内のプロセッサ２０２上で動作するファームウェアによって実現されている。入出力処理８００では、ＩＯＰモジュール２００が内蔵するファームウェアが、ＩＯＰ用ＥＰＵ（ＥＰＵ１０４）からの入出力指示が、スクリプト２０の実行を指示するものか、チャネルプログラム１０の実行を指示するものかを確認する（８０１）。スクリプト２０による指示ならば（８０２；Ｙｅｓ）、ファームウェアは、ＩＯＰ用ＥＰＵ（ＥＰＵ１０４）に指示されたメインメモリ１０５上の実アドレスからスクリプト２０を読み出して入出力処理を行う。一方、チャネルプログラム１０による指示ならば（８０２；Ｎｏ）、ファームウェアは、ＩＯＰ用ＥＰＵ（ＥＰＵ１０４）から指示されたメインメモリ１０５上の論理アドレスを実アドレスに変換しながら入出力処理を行う。
【００６４】
（スクリプト２０を実行する場合）
スクリプト２０による入出力処理の場合（８０２；Ｙｅｓ）、ＩＯＰモジュール２００のファームウェアは、ＩＯＰ用ＥＰＵ（ＥＰＵ１０４）によって指定された実アドレスに基づいて、スクリプトヘッダ２０−０をメインメモリ１０５から読み出し、変数Ｐが示すローカルメモリ２０３上の位置に格納する（８０３）。なお、変数Ｐは入出力処理が開始される時点で適切に初期化されているものとする。
【００６５】
次にファームウェアは、スクリプトヘッダ２０−０からチャネル番号２０−０−１を取得し、処理するチャネルを特定する（８０４）。次にファームウェアは、スクリプトヘッダ２０−０からサイズ２０−０−２を取得してメインメモリ１０５の（実アドレス＋１６）ｂｙｔｅの位置から（サイズ−１６）ｂｙｔｅ分だけ読み出す（８０５）。ファームウェアは、ローカルメモリ２０３の変数Ｐに１６を加算した位置に、読み出したスクリプト２０のデータを格納する（８０６）。これにより、スクリプト２０の全てがローカルメモリ２０３に読み出される。また、このとき変数Ｐは、スクリプトヘッダ２０−０の位置を示している。
【００６６】
次にファームウェアは、変数Ｐに１６を加算した変数Ｐが示すローカルメモリ２０３の位置から、スクリプトエントリ２０−ｎを１個取り出し、対応する処理を行う（８０７）。処理内容は、コマンド２０−ｎ−１の内容によって異なる。例えば、図１８のスクリプト２０における制御データＢ、Ｃの設定の場合、カウント２０−ｎ−３の分だけデータ０〜２（２０−ｎ−４〜２０−ｎ−６）から制御データを読み出し、周辺装置に設定する処理を行う。次にファームウェアは、データ転送の指示に基づきＩＯＣ２０１やＰＣＩｅカード２０４〜２０７等を設定してメインメモリ１０５と周辺装置の間のデータ転送を起動する。また、スクリプト２０の処理に対して待ち合せが必要な場合は、処理の終了を待ち合せる（８０８）。例えば、データ転送指示の場合、ＩＯＣ２０１やＰＣＩｅカード２０４〜２０７等からのデータ転送終了の割込み信号を待ち合せることによりスクリプト２０の処理終了を待ち合せる。そして、スクリプトエントリ２０−ｎのフラグ２０−ｎ−２の値を参照してスクリプト２０が終了したかどうか確認する（８０９）。スクリプト２０が終了した場合（８１０；Ｙｅｓ）、ＥＰＵ１０４に入出力処理の終了を報告する（８１１）。スクリプト２０が終了していない場合（８１０；Ｎｏ）、８０７の処理に戻って次のスクリプトエントリ２０−ｎ＋１を処理する。
【００６７】
（チャネルプログラム１０を実行する場合）
チャネルプログラム１０による入出力処理の場合（８０２；Ｎｏ）、ＩＯＰモジュール２００のファームウェアは、ＩＯＰ用ＥＰＵ（ＥＰＵ１０４）から指定されたチャネルプログラム１０の論理アドレスＡを変数Ａ´に格納し、同じく指定された空間番号Ｐよりセグメント記述子２−ｍとページ記述子３−ｐを読み出して実アドレスＡ´´に変換する（８２０）。なお、ＩＯＰモジュール２００は、アドレス空間番号表１の実アドレスを参照することができるのとする。アドレス変換方法は、図１１等を用いて説明した通りである。次にファームウェアは、メインメモリ１０５の実アドレスＡ´´よりチャネルプログラムヘッダ１０−ｎを読み出し、変数Ｐの示すローカルメモリ２０３の位置に格納する（８２１）。次にファームウェアは、読み出したチャネルプログラムヘッダ１０−０からチャネル番号１０−０−１を取得して、入出力処理を行う対象を特定する（８２２）。なお、変数Ｐは入出力処理の開始時に初期化されているものとする。
【００６８】
次にＩＯＰモジュール２００のファームウェアは、変数Ａ´に１６を加算し、変数Ａ´の値を空間番号Ｐからセグメント記述子２−ｍとページ記述子３−ｐを読み出して実アドレスＡ´´に変換する（８２３）。次にファームウェアは、メインメモリ１０５の実アドレスＡ´´が示す位置からＣＣＥ１０−ｎを１個読み出す。続いてファームウェアは、変数Ｐに１６を加算し、ローカルメモリ２０３における変数Ｐの示す位置に、読み出したＣＣＥ１０−ｎを格納する（８２４）。そして、読み出したＣＣＥ１０−ｎに従って、対応する処理を行う（８２５）。このとき、ファームウェアはＣＣＥ１０−ｎが転送系の指示の場合、ＣＣＥ１０−ｎに格納された論理アドレスＢを空間番号Ｐよりセグメント記述子２−ｍとページ記述子３−ｐを読み出して実アドレスＢ´´に変換して転送処理を行う（８２６）。
【００６９】
例えば、図１３のチャネルプログラム１０において、制御データＢを設定するＣＣＥ１０−１は、出力転送系のＣＣＥである。ファームウェアは、ＣＣＥ１０−１が示す論理アドレス１０−１−４を図１１等で説明した手順で実アドレスに変換し、カウント１０−１−３の示すサイズ分だけメインメモリ１０５の実アドレスＢの示す位置から制御データを読み出して周辺装置に設定する処理を行う。
【００７０】
また、ＣＣＥ１０−ｎのカウント１０−ｎ−３と論理アドレス１０−ｎ−４からメインメモリ１０５上の転送領域（１０−ｎ−ｄ）で、ページまたはセグメント境界越えが有ると判断できる場合、ファームウェアは、ページまたはセグメント境界ごとにアドレス変換を行い、データ転送できるように実アドレスとカウントを算出する。ファームウェアは算出した実アドレスとカウントをＩＯＣ２０１やＰＣＩｅカード２０４〜２０７等に設定すし、処理を行う（８２７）。転送領域（１０−ｎ−ｄ）にページまたはセグメント境界があるかどうかはＣＣＥ（１０−ｎ）で指定された論理アドレス（１０−ｎ−４）にカウント（１０−ｎ−３）を加算し、ＲＰＡ３１００からＰＴＥ２１００への桁上げ、またはＰＴＥ２１００からＳＴＥ１１００への桁上げの有無により判断できる。ここで算出する情報は、図１８のスクリプト２０のデータ転送コマンド列（２０−１〜２０−６）と同様である。スクリプト２０は、ＩＯＰモジュール２００の処理に合わせたものなので同じ形になる。
【００７１】
そして、ファームウェアは、ＣＣＥ１０−ｎの処理に対して待ち合せが必要な場合は終了するまで待ち合わせを行う（８２８）。例えば、図１３のようなメインメモリ１０５と周辺装置とのデータ転送を指示するＣＣＥの場合、ファームウェアは、転送領域の論理アドレスを実アドレスに変換し、ページやセグメント越えの実アドレスとカウントをＩＯＣ２０１やＰＣＩｅカード２０４〜２０７等に設定してデータ転送を起動した後、ＩＣＯ２０１やＰＣＩｅカード２０４〜２０７等からのデータ転送終了の割込みまでＣＣＥの終了を待ち合せる。ＣＣＥ１０−ｎの処理が終了したらフラグ１０−ｎ−２からチャネルプログラム１０が終了したかどうか確認する（８２９）。終了した場合（８３０；Ｙｅｓ）、ＩＯＰ用ＥＰＵ（ＥＰＵ１０４）に入出力処理の終了を報告する（８３１）。終了しない場合（８３０；Ｎｏ）、８２３の処理に戻り、次のＣＣＥ１０−ｎ＋１を読み出して処理を続ける。
【００７２】
本実施形態では、ＥＰＵ１０４のファームウェアは、ＩＯＰ用ＥＰＵ（ＥＰＵ１０４）が入出力指示を受けたときに自身の使用率を確認し、所定の使用率以下ならばチャネルプログラム１０に基づいてスクリプト２０を作成し、ＩＯＰモジュール２００にスクリプト２０の実行を指示する。所定の使用率を上回る場合、ＥＰＵ１０４のファームウェアは、チャネルプログラム１０の実行を直接ＩＯＰモジュール２００に指示する。これにより、ＩＯＰ用ＥＰＵ（ＥＰＵ１０４）の使用率が低い時は入主力処理の応答時間を短縮させることができ、ＩＯＰ用ＥＰＵ（ＥＰＵ１０４）の使用率が高くなっても応答時間がＩＯＰモジュール２００，２１０，２２０，２３０の各々が単独で処理した場合の処理時間以上に増加することを防ぐことが出来るようになる。
【００７３】
＜第三実施形態＞
以下、本発明の第三実施形態による情報処理装置について説明する。第三実施形態に係る情報処理装置のうち、第一実施形態、第二実施形態に係る情報処理装置と同じ構成には同じ符号を付し、それらの説明を省略する。
第三実施形態では、入出力発行処理７００を実行するＥＰＵを、ＩＯＰ用のＥＰＵ１０４に限定せず、全てのＥＰＵ１０１〜１０４で入出力発行処理７００を行う。本実施形態の場合、ソフトウェアの指示を実行したときのＥＰＵの使用率に入出力発行処理７００の処理時間が含まれるため、入出力の平均応答時間のみの観点でスクリプト２０を作成するかどうかを判断することが出来なくなる。
【００７４】
そのため、本実施形態では、ＥＰＵ１０１〜１０４各々のファームウェアは、ソフトウェアの指示によるＥＰＵ使用率の観点でスクリプト２０を作成するかどうかを決定する。例えば、ソフトウェアはプロセスという単位でいくつかの処理を並行して実行しており、それらの中でＥＰＵ１０１等は入出力発行処理を実行している。プロセスにも平均応答時間の概念が有り、ＥＰＵ１０１の使用率が上昇すれば平均待ち時間が増加するため平均応答時間は増加し、プロセスを使用しているオンライントランザクション処理などは応答が遅延してしまう。また、ＥＰＵ１０１の入出力発行処理７００でチャネルプログラム１０をスクリプト２０に変換することはＥＰＵの処理時間を使用することになり、ソフトウェアの指示によって使用されるべき処理時間を消費していることになる。このような場合、ソフトウェアの処理時間が遅延する可能性がある。その遅延に対応するため、ＥＰＵ１０１等の使用率が所定の閾値以上になった場合は、そのＥＰＵでは、入出力発行処理７００でのスクリプト２０の作成を行わず、ＩＯＰモジュール２００等にチャネルプログラム１０の処理をオフロードすることでプロセスの応答時間の増加を防ぐ。
【００７５】
本実施形態によれば、各ＥＰＵの負荷状態に応じて、スクリプト２０による入出力処理を行うかどうかを決定する。これにより、ソフトウェアによる負荷が高いときにスクリプト２０を作成するようなリスクがなく、ＥＰＵ１０１等の使用率が低い時は入主力処理の応答時間を短縮させることができる。
【００７６】
図２５は、本発明の各実施形態による演算処理装置モジュールの最小構成を示す図である。
図２５に示すように演算処理装置１０Ｘは、少なくともスクリプト作成部１０Ｘ１を備える。スクリプト作成部１０Ｘ１は、入出力処理に係るチャネルプログラムに含まれる論理アドレスを、入出力処理装置が処理しやすい形式にアドレス変換したスクリプトを作成する。より具体的には、スクリプト作成部１０Ｘ１は、前記チャネルプログラムの先頭の論理アドレスおよびチャネルプログラムに含まれる全ての論理アドレスを実アドレスに変換してスクリプトを作成する。スクリプト作成部１０Ｘ１は、自装置（演算処理装置１０Ｘ）の使用率が予め定められた閾値以下の場合のみスクリプトを作成してもよい。
上記の第一実施形態〜第三実施形態におけるＥＰＵ１０４は、演算処理装置１０Ｘの一例、ＥＰＵ１０４が内蔵するファームウェアはスクリプト作成部１０Ｘ１の一例である。
【００７７】
図２６は、本発明の各実施形態による入出力処理装置の最小構成を示す図である。
図２６に示すように入出力処理装置２０Ｘは、少なくともスクリプト実行部２０Ｘ１を備える。スクリプト実行部２０Ｘ１は、入出力処理に係るチャネルプログラムに含まれる論理アドレスをアドレス変換したスクリプトを取得し、前記スクリプトを実行することにより入出力処理を行う。また、入出力処理装置２０Ｘは、演算処理装置からスクリプトを取得した場合、スクリプト実行部２０Ｘ１が、そのスクリプトを実行することにより入出力処理を行い、演算処理装置からチャネルプログラムを取得した場合、チャネルプログラムを実行することにより入出力処理を行う。
上記の第一実施形態〜第三実施形態におけるＩＯＰモジュール２００，２１０，２２０，２３０は、入出力処理装置２０Ｘの一例、ＩＯＰモジュール２００等が内蔵するファームウェアはスクリプト実行部２０Ｘ１の一例である。
【００７８】
図２７は、本発明の各実施形態による情報処理装置の最小構成を示す図である。
図２７に示すように情報処理装置１は、演算処理装置１０Ｘと入出力処理装置２０Ｘとを備える。図２５で説明したように演算処理装置１０Ｘは、少なくともスクリプト作成部１０Ｘ１を備える。スクリプト作成部１０Ｘ１は、入出力処理に係るチャネルプログラムに含まれる論理アドレスを、入出力処理装置が処理しやすい形式にアドレス変換したスクリプトを作成する。図２６で説明したように入出力処理装置２０Ｘは、少なくともスクリプト実行部２０Ｘ１を備える。スクリプト実行部２０Ｘ１は、入出力処理に係るチャネルプログラムに含まれる論理アドレスをアドレス変換したスクリプトを取得し、前記スクリプトを実行することにより入出力処理を行う。
【００７９】
その他、本発明の趣旨を逸脱しない範囲で、上記した実施の形態における構成要素を周知の構成要素に置き換えることは適宜可能である。また、この発明の技術範囲は上記の実施形態に限られるものではなく、本発明の趣旨を逸脱しない範囲において種々の変更を加えることが可能である。例えば、ＥＰＵはＣＰＵ、ＭＰＵ、ＧＰＵ等でもよい。
【符号の説明】
【００８０】
１・・・情報処理装置
１００、１１０、１２０、１３０・・・ＥＰＵモジュール
１０１，１０２，１０３、１０４・・・ＥＰＵ
１０５,１０５−０,１０５−１・・・メインメモリ
１０７・・・ＢｕｓＩ／Ｆ
１０８・・・ＮｏｄｅＩ／Ｆ
１０９・・・内部Ｂｕｓ
２００、２１０、２２０、２３０・・・ＩＯＰモジュール
２０１・・・ＩＯＣ
２０２・・・プロセッサ
２０３・・・ローカルメモリ
２０４、２０５、２０６、２０７・・・ＰＣＩｅカード
３００、３１０、３２０、３３０・・・ＩＯＰモジュール
４００、４１０、４２０、４３０・・・ＩＯＰモジュール
５０００・・・ＰＣＩｅ
１０・・・チャネルプログラム
１０−０・・・ＣＰＨ
１０−ｎ・・・ＣＣＥ
２０・・・スクリプト
２０−０・・・スクリプトヘッダ
２０−ｎ・・・スクリプトエントリ
２０−ｎ−１・・・コマンド
２０−ｎ−２・・・フラグ
２０−ｎ−３・・・カウント
２０−ｎ−４〜６・・・データ
【図１】
2019159713.tif 000003
【図２】
2019159713.tif 000004
【図３】
2019159713.tif 000005
【図４】
2019159713.tif 000006
【図５】
2019159713.tif 000007
【図６】
2019159713.tif 000008
【図７】
2019159713.tif 000009
【図８】
2019159713.tif 000010
【図９】
2019159713.tif 000011
【図１０】
2019159713.tif 000012
【図１１】
2019159713.tif 000013
【図１２】
2019159713.tif 000014
【図１３】
2019159713.tif 000015
【図１４】
2019159713.tif 000016
【図１５】
2019159713.tif 000017
【図１６】
2019159713.tif 000018
【図１７】
2019159713.tif 000019
【図１８】
2019159713.tif 000020
【図１９】
2019159713.tif 000021
【図２０】
2019159713.tif 000022
【図２１】
2019159713.tif 000023
【図２２】
2019159713.tif 000024
【図２３】
2019159713.tif 000025
【図２４】
2019159713.tif 000026
【図２５】
2019159713.tif 000027
【図２６】
2019159713.tif 000028
【図２７】
2019159713.tif 000029