(57)【特許請求の範囲】
【請求項１】
演算を行う複数のプロセッサエレメントと，前記各プロセッサエレメントからのＩ／Ｏ要求を処理する複数のコントロールプロセッサと，前記プロセッサエレメントと前記コントロールプロセッサとを接続するネットワークと，前記コントロールプロセッサに接続されるＩ／Ｏの対象となる記憶装置または入出力装置とを備えた並列型計算機システムにおいて，
前記コントロールプロセッサの中の１台がマスタコントロールプロセッサとなり，
このマスタコントロールプロセッサは，
前記各プロセッサエレメントからのＩ／Ｏ要求を受け付ける手段と，
前記各コントロールプロセッサの負荷状況および所定の分散指示情報に基づいてＩ／Ｏ要求の実行を複数のコントロールプロセッサに分散させるか，または特定のコントロールプロセッサで行うかを決定する分散判定処理手段と，
他のコントロールプロセッサでＩ／Ｏ要求を実行する場合に，Ｉ／Ｏ要求をそのコントロールプロセッサへ転送するＩ／Ｏ要求転送手段と，
他のコントロールプロセッサでＩ／Ｏ要求を実行した場合に，そのＩ／Ｏ処理結果を受け取るＩ／Ｏ処理結果受信手段と，
自コントロールプロセッサで実行したＩ／Ｏ処理結果もしくは他のコントロールプロセッサで実行したＩ／Ｏ処理結果またはそれらの双方のＩ／Ｏ処理結果をＩ／Ｏ要求元の前記プロセッサエレメントへ通知するＩ／Ｏ処理完了通知手段とを備えた
ことを特徴とする並列型計算機システム。
【請求項２】
請求項１記載の並列型計算機システムにおいて，
前記Ｉ／Ｏ要求を複数のコントロールプロセッサに分散するか否か，または各コントロールプロセッサに前記Ｉ／Ｏ要求を分散する割合を，外部から入力するＩ／Ｏ分散指示入力手段を備えた
ことを特徴とする並列型計算機システム。
【請求項３】
請求項１または請求項２記載の並列型計算機システムにおいて，
前記マスタコントロールプロセッサは，
他のコントロールプロセッサの異常を検出する異常検出手段と，
異常が検出された他のコントロールプロセッサにＩ／Ｏ要求の実行を分担させないように抑止する分散抑止手段とを備えた
ことを特徴とする並列型計算機システム。
【請求項４】
請求項１，請求項２または請求項３記載の並列型計算機システムにおいて，
前記マスタコントロールプロセッサは，
Ｉ／Ｏ要求を分担して実行していた他のコントロールプロセッサの異常を検出した場合に，このコントロールプロセッサが処理していたＩ／Ｏ要求を再実行するリカバリ処理手段を備えた
ことを特徴とする並列型計算機システム。
【請求項５】
演算を行う複数のプロセッサエレメントと，前記各プロセッサエレメントからのＩ／Ｏ要求を処理する複数のコントロールプロセッサと，前記プロセッサエレメントと前記コントロールプロセッサとを接続するネットワークと，前記コントロールプロセッサに接続されるＩ／Ｏの対象となる記憶装置または入出力装置とを備えた並列型計算機システムにおいて，
前記コントロールプロセッサの中の１台がマスタコントロールプロセッサとなり，
このマスタコントロールプロセッサは，
Ｉ／Ｏ要求を複数のコントロールプロセッサに分散するか否かを外部から入力するＩ／Ｏ分散指示入力手段と，
Ｉ／Ｏ要求を複数のＩ／Ｏ実行単位に分割する分割数を，外部から入力するＩ／Ｏ分割指示入力手段と，
前記各プロセッサエレメントからのＩ／Ｏ要求を受け付ける手段と，
前記各コントロールプロセッサの負荷状況および前記Ｉ／Ｏ分散指示入力手段からの分散指示情報に基づいてＩ／Ｏ要求の実行を複数のコントロールプロセッサに分散させるか，または特定のコントロールプロセッサで行うかを決定する分散判定処理手段と，
他のコントロールプロセッサでＩ／Ｏ要求を実行する場合に，Ｉ／Ｏ要求をそのコントロールプロセッサへ転送するＩ／Ｏ要求転送手段と，
他のコントロールプロセッサでＩ／Ｏ要求を実行した場合に，そのＩ／Ｏ処理結果を受け取るＩ／Ｏ処理結果受信手段と，
自コントロールプロセッサで実行したＩ／Ｏ処理結果もしくは他のコントロールプロセッサで実行したＩ／Ｏ処理結果またはそれらの双方のＩ／Ｏ処理結果をＩ／Ｏ要求元の前記プロセッサエレメントへ通知するＩ／Ｏ処理完了通知手段と，
前記Ｉ／Ｏ分割指示入力手段の指示に従い，前記プロセッサエレメントからのＩ／Ｏ要求を，複数のＩ／Ｏ実行単位に分割する処理手段と，
分割された複数のＩ／Ｏ実行単位について，前記記憶装置または入出力装置と前記コントロールプロセッサとの間のデータの入出力と，前記コントロールプロセッサとＩ／Ｏ要求元の前記プロセッサエレメントとの間のデータの転送とを，並列に実行するＩ／Ｏ並列実行手段とを備えた
ことを特徴とする並列型計算機システム。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は，複数のプロセッサエレメントとコントロールプロセッサとがネットワークで結合された計算機システムにおいて，Ｉ／Ｏ装置を持たないプロセッサエレメントからの，Ｉ／Ｏ装置を持つコントロールプロセッサを経由したＩ／Ｏ処理を，高速に効率よく実行できるようにした並列型計算機システムに関するものである。
【０００２】
【従来の技術】
図８は従来技術の説明図である。
図８（Ａ），（Ｃ）に示す並列型計算機システムにおいて，プロセッサエレメントＰＥ〔ＰＥ（０），ＰＥ（１），…〕は，演算を専門に行うプロセッサである。コントロールプロセッサＣＰは，プロセッサエレメントＰＥを管理する装置であり，これには記憶装置８０のようなＩ／Ｏ装置が接続されている。また，コントロールプロセッサＣＰと，各プロセッサエレメントＰＥとは，クロスバネットワークＸＢで接続されている。
【０００３】
各プロセッサエレメントＰＥが記憶装置８０上に格納されているデータを参照する場合，プロセッサエレメントＰＥには記憶装置８０が接続されていないため，コントロールプロセッサＣＰに存在するサーバにＩ／Ｏ要求を出す。Ｉ／Ｏ要求を受けたコントロールプロセッサＣＰのサーバは，記憶装置８０へのＩ／Ｏを実行し，読み込んだデータをクロスバネットワークＸＢを経由して要求元のプロセッサエレメントＰＥに転送する。
【０００４】
【発明が解決しようとする課題】
図８において，記憶装置８０とコントロールプロセッサＣＰとの間のデータ転送速度が８００Ｍｂｙｔｅ／秒，コントロールプロセッサＣＰと各プロセッサエレメントＰＥとの間のデータ転送速度が４００Ｍｂｙｔｅ／秒であるとする。
【０００５】
従来，図８（Ａ）に示すように，プロセッサエレメントＰＥ（０）が，Ｉ／Ｏ（１）の要求と，Ｉ／Ｏ（２）の要求を行い，プロセッサエレメントＰＥ（１）がＩ／Ｏ（３）の要求と，Ｉ／Ｏ（４）の要求をこの順序で行った場合，コントロールプロセッサＣＰは，これらのＩ／Ｏ要求を１つずつ順番に処理していた。そのため，記憶装置８０からコントロールプロセッサＣＰへの１つのＩ／Ｏ処理によるデータ転送に例えば６秒かかるとすると，図８（Ｂ）に示すように，記憶装置８０からコントロールプロセッサＣＰへの全部のデータ転送では，６秒×４＝２４秒かかることになった。
【０００６】
また，図８（Ｃ）に示すように，プロセッサエレメントＰＥのクライアントから１つのｒｅａｄ要求が出された場合に，記憶装置８０からコントロールプロセッサＣＰへのデータ転送に例えば６秒かかると，そのＩ／Ｏ処理が完了してからＩ／Ｏ要求元のプロセッサエレメントＰＥへのＩ／Ｏ処理を開始するので，さらにコントロールプロセッサＣＰからプロセッサエレメントＰＥへのデータ転送に１２秒かかり，１つのＩ／Ｏ要求が完了するまで，図８（Ｄ）に示すように，全部で１８秒の時間がかかっていた。
【０００７】
以上のように，従来技術では，プロセッサエレメントＰＥからのＩ／Ｏ要求の処理に時間がかかるという問題があった。
また，コントロールプロセッサＣＰでは，プロセッサエレメントＰＥを管理するための処理や，運用に関する処理，ジョブに関する処理等，いろいろな処理が動いており，プロセッサエレメントＰＥが例えば１００台〜２００台の規模になった場合，Ｉ／Ｏ要求が１台のコントロールプロセッサＣＰに集中し，コントロールプロセッサＣＰの負荷が非常に高くなることがあるという問題があった。
【０００８】
本発明は上記問題点の解決を図り，Ｉ／Ｏ処理の分散化とＩ／Ｏ分割並列化により，Ｉ／Ｏ処理の高速化を可能にするとともに，コントロールプロセッサの負荷を軽減することを目的とする。
【０００９】
【課題を解決するための手段】
図１は本発明の構成例を示す。
プロセッサエレメント（ＰＥ）１０−０，１０−１，…は，演算を専門に行うプロセッサである。記憶装置３１のようなＩ／Ｏ装置が接続されているコントロールプロセッサが複数台設けられ，その中の１台がマスタコントロールプロセッサ（以下，マスタＣＰという）１２として設定され，その他がスレーブコントロールプロセッサ（以下，スレーブＣＰという）２６として設定される。
【００１０】
マスタＣＰ１２，スレーブＣＰ２６およびプロセッサエレメントＰＥは，クロスバネットワーク（ＸＢ）１１で接続されている。
マスタＣＰ１２には，プロセッサエレメントＰＥの管理，運用に関する処理，ジョブに関する処理などのために，オペレーション用の入力装置１３が接続されている。
【００１１】
Ｉ／Ｏ分割指示入力手段１４は，Ｉ／Ｏ要求を複数のＩ／Ｏ実行単位に分割する分割数を，入力装置１３からのコマンド等により入力する手段である。Ｉ／Ｏ分散指示入力手段１５は，Ｉ／Ｏ要求を複数のコントロールプロセッサに分散するか否か，または各コントロールプロセッサに何％分散させるかを，入力装置１３からのコマンド等により入力する手段てある。
【００１２】
Ｉ／Ｏ要求受付け手段１６は，各プロセッサエレメントＰＥからのＩ／Ｏ要求を受け付ける手段である。分散判定処理手段１７は，マスタＣＰ１２およびスレーブＣＰ２６の負荷状況およびＩ／Ｏ分散指示入力手段１５からの分散指示情報に基づいて，Ｉ／Ｏ要求の実行を複数のコントロールプロセッサに分散させるか，または特定のコントロールプロセッサで行うかを決定する手段である。
【００１３】
Ｉ／Ｏ要求転送手段２０は，分散判定処理手段１７の判定結果に従い，Ｉ／Ｏ要求をスレーブＣＰ２６で実行する場合に，Ｉ／Ｏ要求をスレーブＣＰ２６へ転送する手段である。Ｉ／Ｏ処理結果受信手段２１は，スレーブＣＰ２６でＩ／Ｏ要求を実行した場合に，そのＩ／Ｏ処理結果を受け取る手段である。
【００１４】
Ｉ／Ｏ分割処理手段１８は，Ｉ／Ｏ分割指示入力手段１４の指示に従い，プロセッサエレメントＰＥからのＩ／Ｏ要求を，複数のＩ／Ｏ実行単位に分割する手段である。Ｉ／Ｏ並列実行手段１９は，分割されたＩ／Ｏ実行単位について，記憶装置３１とマスタＣＰ１２との間のデータの入出力と，マスタＣＰ１２とＩ／Ｏ要求元のプロセッサエレメントＰＥとの間のデータの転送とを，並列に実行する手段である。
【００１５】
Ｉ／Ｏ処理完了通知手段２２は，マスタＣＰ１２で実行したＩ／Ｏ処理結果もしくはスレーブＣＰ２６で実行したＩ／Ｏ処理結果またはそれらの双方のＩ／Ｏ処理結果をＩ／Ｏ要求元のプロセッサエレメントＰＥへ通知する手段である。
【００１６】
異常検出手段２３は，要求したＩ／Ｏのタイムアウトまたは所定の運転制御等により，スレーブＣＰ２６の異常を検出する手段である。分散抑止手段２４は，異常検出手段２３によってスレーブＣＰ２６に異常が検出された場合に，そのスレーブＣＰ２６にＩ／Ｏ要求の実行を分担させないように分散判定処理手段１７に指示を出す手段である。
【００１７】
リカバリ処理手段２５は，Ｉ／Ｏ要求を分担して実行していたスレーブＣＰ２６の異常を検出した場合に，このスレーブＣＰ２６が処理していたＩ／Ｏ要求を再実行する手段である。
【００１８】
スレーブＣＰ２６におけるＩ／Ｏ要求受信手段２７は，Ｉ／Ｏの分散化のために，マスタＣＰ１２から送られてきたＩ／Ｏ要求を受信する手段である。Ｉ／Ｏ分割処理手段２８は，Ｉ／Ｏ分割指示入力手段１４からの指示に従い，マスタＣＰ１２からのＩ／Ｏ要求を，複数のＩ／Ｏ実行単位に分割する手段である。Ｉ／Ｏ並列実行手段２９は，分割されたＩ／Ｏ実行単位について，記憶装置３１とスレーブＣＰ２６との間のデータの入出力と，スレーブＣＰ２６からプロセッサエレメントＰＥまたはマスタＣＰ１２へのデータ転送とを並列に実行する手段である。Ｉ／Ｏ処理結果転送手段３０は，スレーブＣＰ２６で実行したＩ／Ｏ処理結果を，マスタＣＰ１２またはＩ／Ｏ要求元のプロセッサエレメントＰＥへ転送する手段である。
【００１９】
図１では，スレーブＣＰ２６が１台であるが，スレーブＣＰは２台以上存在してもよい。
【００２０】
【作用】
本発明では，コントロールプロセッサの数を増やし，マスタＣＰ１２以外にスレーブＣＰ２６を設ける。そして，各プロセッサエレメントＰＥからのＩ／Ｏ要求を，複数のコントロールプロセッサで分担して処理を行う。ここでは，これをＩ／Ｏの分散化と呼ぶ。
【００２１】
また，記憶装置３１とコントロールプロセッサ間，コントロールプロセッサとプロセッサエレメントＰＥ間でデータ転送が行われることに着目して，プロセッサエレメントＰＥから発行された１つのＩ／Ｏ要求を，複数に分割する。これによってトータルのＩ／Ｏ処理のスピードアップを図る。ここでは，これをＩ／Ｏの分割並列化と呼ぶ。
【００２２】
以上のようなＩ／Ｏの分散化とＩ／Ｏの分割並列化とによって，コントロールプロセッサの負荷分散およびＩ／Ｏ性能の向上が可能になる。これにより，ジョブのスループット性能，Ｉ／Ｏのピーク性能が向上し，システム全体としてのスピードアップが図れる。
【００２３】
プロセッサエレメントＰＥからのＩ／Ｏ要求を，すべてマスタＣＰ１２が受け取り，それを１台または複数台のスレーブＣＰ２６に分担させるので，マスタＣＰ１２におけるデータの排他制御等を簡単に実現することができる。
【００２４】
また，スレーブＣＰ２６に異常があった場合，Ｉ／Ｏの分散化を自動抑止し，さらにスレーブＣＰ２６がＩ／Ｏを実行中に異常になった場合には，マスタＣＰ１２でＩ／Ｏ処理をリトライすることにより，信頼性の向上も可能になる。
【００２５】
【実施例】
図２は本発明の実施例によるＩ／Ｏの分散化を説明する図である。
図２（Ａ）に示すように，複数台のコントロールプロセッサは，マスタＣＰ１２とスレーブＣＰ２６とに分かれて動作する。プロセッサエレメントＰＥからＩ／Ｏ要求を受けるのは，マスタＣＰ１２だけである。プロセッサエレメントＰＥからＩ／Ｏ要求を受けたマスタＣＰ１２では，所定の負荷アルゴリズムにより，自分でＩ／Ｏ処理を行うか，スレーブＣＰ２６にＩ／Ｏ処理を任せるかを判断する。
【００２６】
あるコントロールプロセッサでＩ／Ｏの分散化を行うかどうかは，オペレータが，図２（Ｃ）に示すような分散化コマンドによって指定することができる。コマンド名は“ｂａｌａｎｃｅ”であり，−ｓは分散化の指定である。ＣＰ識別番号は，どのコントロールプロセッサに対して本コマンドを適用するかを指定するものである。ｏｎ／ｏｆｆは分散化の開始／終了を表す。分散する場合には，例えばマスタＣＰ１２が３０％，スレーブＣＰ２６が７０％というように分散率を指定することができる。分散率を省略した場合，ディフォルト値としてマスタＣＰ１２とスレーブＣＰ２６の分担が１対２となる分散率が与えられる。ディフォルト値でマスタＣＰ１２の負担を少なくしているのは，プロセッサエレメントＰＥからの要求の受け付け，完了の通知等，スレーブＣＰ２６に比べて処理負担が大きいためである。
【００２７】
分散化コマンドが投入されている状態で，図１に示す分散判定処理手段１７が用いる負荷アルゴリズムは，以下のとおりである。
▲１▼  マスタＣＰ１２が全くＩ／Ｏ処理を行っていないならば，マスタＣＰ１２がＩ／Ｏを実行する。スレーブＣＰ２６に処理を依頼するには通信コストがかかるからである。
【００２８】
▲２▼  マスタＣＰ１２がある量のＩ／Ｏ処理を行っている最中で，負荷の低い，Ｉ／Ｏ処理を行っていないスレーブＣＰ２６があれば，このスレーブＣＰ２６にＩ／Ｏ処理を依頼する。
【００２９】
▲３▼  マスタＣＰ１２およびスレーブＣＰ２６が共にＩ／Ｏ処理中であれば，Ｉ／Ｏ量で分担し，マスタＣＰ１２，スレーブＣＰ２６でバランシングする。マスタＣＰ１２およびスレーブＣＰ２６が１台ずつで，１対２の分散率の場合には，マスタＣＰ１２が１／３のＩ／Ｏ量を分担し，スレーブＣＰ２６が２／３のＩ／Ｏ量を分担する。
【００３０】
図２（Ａ）において，例えばプロセッサエレメント１０−０がＩ／Ｏ（１），Ｉ／Ｏ（３）の要求を出し，プロセッサエレメント１０−１がＩ／Ｏ（２），Ｉ／Ｏ（４）の要求を出したとする。前述した負荷アルゴリズムにより，マスタＣＰ１２はＩ／Ｏ（２），Ｉ／Ｏ（４）の要求をスレーブＣＰ２６に転送し，２つのコントロールプロセッサで記憶装置３１へのＩ／Ｏを実行する。
【００３１】
これによって，記憶装置３１から各コントロールプロセッサへのデータ転送は，図２（Ｂ）に示すように行われ，１つのＩ／Ｏ処理に６秒かかったとすると，トータルで１２秒となる。従来技術では，図８（Ｂ）に示すように２４秒かかっていたので，分散化の効果が現れていることが分かる。
【００３２】
図３は本発明の実施例によるＩ／Ｏの分割並列化を説明する図である。
図３（Ａ）に示すように，マスタＣＰ１２がプロセッサエレメント１０−０からのＩ／Ｏ要求（ｒｅａｄ要求）を処理する場合，Ｉ／Ｏの実行単位をいくつかに分割する。例えば，Ｉ／Ｏ（１）とＩ／Ｏ（２）の２つに分割したとすると，まず，Ｉ／Ｏ（１）を実行し，そのＩ／Ｏ（１）によって読み取ったデータをプロセッサエレメント１０−０に転送している間に，Ｉ／Ｏ（２）による残りの読み出しを行う。すなわち，記憶装置３１からマスタＣＰ１２へのデータ入力と，マスタＣＰ１２からプロセッサエレメント１０−０へのデータ転送とを並列に行う。
【００３３】
スレーブＣＰ２６がＩ／Ｏを実行する場合にも，同様に分割して実行することができる。
このＩ／Ｏ要求の分割は，例えばプロセッサエレメント１０−０からのＩ／Ｏ要求パケットが図３（Ｂ）のＰ１のような場合に，分割数が２であるとすると，要求されたデータサイズを１／２にしたパケットＰ２と，アドレスをデータサイズの１／２だけ進めて，データサイズを１／２にしたパケットＰ３とを作成することによって，行うことができる。
【００３４】
例えば，記憶装置３１とマスタＣＰ１２間のデータ転送速度が８００Ｍｂｙｔｅ／秒，マスタＣＰ１２とプロセッサエレメント１０−０間のデータ転送速度が４００Ｍｂｙｔｅ／秒であるとして，Ｉ／Ｏ要求を２つに分割した場合のタイムチャートは，図３（Ｃ）に示すようになる。なお，データ転送以外の時間については，非常に小さいので無視している。Ｉ／Ｏの分割並列化によって，Ｉ／Ｏ完了までのトータルの時間は，１５秒となっている。従来技術では，図８（Ｄ）に示すように１８秒かかっていたので，分割並列化の効果が現れているのが分かる。
【００３５】
この分割並列化を行うか否かは，例えば図３（Ｄ）に示す分割並列化コマンドによって指定することができる。コマンド名は“ｂａｌａｎｃｅ”であり，−ｐは分割並列化の指定である。ＣＰ識別番号は，どのコントロールプロセッサに対して本コマンドを適用するかを指定するものである。ｏｎ／ｏｆｆは分割並列化を行うか否かを表す。分割並列化を行う場合には，分割数を指定することができる。分割数を省略した場合，ディフォルト値は２である。理論的には分割数を増やすと効率がよくなるように思えるが，通信回数などのオーバーヘッドも同時に大きくなるため，そのコストも無視できなくなる。
【００３６】
図４は本発明の実施例による全体のＩ／Ｏ処理の流れを示している。
記憶装置３１は半導体記憶装置であり，転送速度は比較的大きい。プロセッサエレメントＰＥは３台である。プロセッサエレメント１０−０，１０−１，１０−２がそれぞれＩ／Ｏ要求（１），Ｉ／Ｏ要求（２），Ｉ／Ｏ要求（３）を出したとすると，マスタＣＰ１２では，それらの要求をキューイングし，要求順に処理していく。Ｉ／Ｏ要求の実行では，まずデータの排他制御を行い，各コントロールプロセッサの負荷を考慮して，分散判定処理を行う。
【００３７】
この結果，自プロセッサでＩ／Ｏ処理を行う場合には，指定に応じてＩ／Ｏの実行単位を分割して，記憶装置３１のデータにアクセスする。一方，スレーブＣＰ２６でＩ／Ｏ処理を行う場合には，スレーブＣＰ２６に処理を依頼する。その後，マスタＣＰ１２は，スレーブＣＰ２６のＩ／Ｏ完了を待ち合わせる。スレーブＣＰ２６では，マスタＣＰ１２からのＩ／Ｏ要求を受信すると，指定に応じてＩ／Ｏの実行単位を分割して，記憶装置３１のデータにアクセスする。Ｉ／Ｏ処理が完了すると，その処理結果をマスタＣＰ１２に通知する。
【００３８】
マスタＣＰ１２では，自プロセッサによるＩ／Ｏ処理およびスレーブＣＰ２６からのＩ／Ｏ処理完了の報告を受けると，Ｉ／Ｏ要求元のプロセッサエレメントＰＥにＩ／Ｏ処理完了を通知する。
【００３９】
例えば，記憶装置３１からデータをｒｅａｄするＩ／Ｏ要求に対して，そのＩ／ＯをスレーブＣＰ２６だけで行った場合には，スレーブＣＰ２６から直接Ｉ／Ｏ要求元のプロセッサエレメントＰＥへｒｅａｄしたデータを転送する。ただし，スレーブＣＰ２６がダウンした場合等のリカバリ処理のために，マスタＣＰ１２はスレーブＣＰ２６からのＩ／Ｏ処理の完了通知を待っているので，スレーブＣＰ２６は，マスタＣＰ１２にもＩ／Ｏが終了したことを通知する。
【００４０】
また，データをｒｅａｄするＩ／Ｏを，マスタＣＰ１２とスレーブＣＰ２６とが分担して処理する場合には，スレーブＣＰ２６が読み出したデータをマスタＣＰ１２が集め，それをマスタＣＰ１２から自プロセッサが読み出したデータとともに，プロセッサエレメントＰＥへ転送する。
【００４１】
上記処理において，マスタＣＰ１２がスレーブＣＰ２６にＩ／Ｏを依頼した後，スレーブＣＰ２６に異常が発生した場合，またはスレーブＣＰ２６から所定の時間以上の応答がなく，Ｉ／Ｏの依頼がタイムアウトになった場合，マスタＣＰ１２は，スレーブＣＰ２６へ依頼したＩ／Ｏを自プロセッサが実施し，リカバリ処理を行う。
【００４２】
図５はマスタＣＰ１２におけるＩ／Ｏ分散化処理フローチャートである。
まず，ステップ５１では，Ｉ／Ｏ要求のキューを調べ，Ｉ／Ｏ要求があればそれをキューから取り外す。ステップ５２では，データの排他制御を行う。このデータの排他制御については，従来から種々の方式が知られているので，ここでは詳しい説明を省略する。
【００４３】
ステップ５３では，マスタＣＰ１２の分散化フラグがｏｎになっているかどうかを判定する。この分散化フラグは，分散化コマンドまたはその他の環境設定手段によりｏｎ／ｏｆｆされるシステム運用制御のためのフラグである。マスタＣＰ１２の分散化フラグがｏｆｆの場合，ステップ５５へ進む。
【００４４】
マスタＣＰ１２の分散化フラグがｏｎの場合，ステップ５４では，マスタＣＰ１２がＩ／Ｏ処理中であるか否かを判定する。Ｉ／Ｏ処理中でない場合，Ｉ／Ｏ実行装置をマスタＣＰ１２とする。Ｉ／Ｏ処理中の場合，次のステップ５５へ進む。
【００４５】
ステップ５５では，スレーブＣＰ２６が使用可能かどうかを判定する。故障等によりスレーブＣＰ２６が使用できない場合，Ｉ／Ｏ実行装置をマスタＣＰ１２とする。
【００４６】
スレーブＣＰ２６が使用可能である場合，ステップ５６では，スレーブＣＰ２６の分散化フラグがｏｎになっているかどうかを判定する。スレーブＣＰ２６の分散化フラグがｏｆｆであれば，Ｉ／Ｏ実行装置をマスタＣＰ１２とする。なお，通常の運用時には，スレーブＣＰ２６の分散化フラグは常時ｏｎであることが一般的に望ましいと考えられる。
【００４７】
スレーブＣＰ２６の分散化フラグがｏｎであれば，ステップ５７では，スレーブＣＰ２６がＩ／Ｏ処理中であるか否かを判定する。Ｉ／Ｏ処理中でない場合，Ｉ／Ｏ実行装置をスレーブＣＰ２６とする。Ｉ／Ｏ処理中の場合，所定の分散率に従ってマスタＣＰ１２とスレーブＣＰ２６とでＩ／Ｏを分担し実行する。この場合，Ｉ／Ｏ要求の個数ごとに分散させてもよく，また，１つのＩ／Ｏ要求を分割して分散率に応じてマスタＣＰ１２とスレーブＣＰ２６とが処理を分担するようにしてもよい。
【００４８】
図６は，本発明の実施例によるＩ／Ｏ実行装置におけるＩ／Ｏ分割化処理フローチャートである。
マスタＣＰ１２またはスレーブＣＰ２６においてＩ／Ｏを実行する場合，まず図６（Ａ）のステップ６１では，指定されたＩ／Ｏ分割数が２以上かどうかを判定する。Ｉ／Ｏの実行単位を分割しない場合，すなわち分割数が１の場合，ステップ６３へ進む。
【００４９】
分割数が２以上であれば，ステップ６２により，指定された分割数になるようにＩ／Ｏ要求の実行単位を分割する。
ステップ６３では，現在，記憶装置３１に対しＩ／Ｏ発行可能であるかどうかを調べ，発行可能であればステップＳ６４へ進む。発行可能でなければ，発行可能になるのを待つ。
【００５０】
ステップ６４では，記憶装置３１に対して分割したＩ／Ｏ要求のＩ／Ｏを発行する。ステップ６５の判定により，全Ｉ／Ｏ発行が終了するまで，ステップ６３〜６５を繰り返す。
【００５１】
以上のＩ／Ｏ発行に対するＩ／Ｏ割込みがあった場合，またはマスタＣＰ１２がスレーブＣＰ２６からＩ／Ｏの処理結果を受信した場合には，図６（Ｂ）に示す転送処理を行う。
【００５２】
まず，ステップ７１では，自コントロールプロセッサ（ＣＰ）がマスタＣＰ１２かスレーブＣＰ２６かを判定し，スレーブＣＰ２６であれば，ステップ７４へ進む。
【００５３】
自ＣＰがマスタＣＰ１２であれば，ステップ７２により，Ｉ／Ｏ要求元のプロセッサエレメントＰＥへＩ／Ｏの処理結果を転送可能であるかどうかを判定し，転送可能であれば，ステップ７３により，プロセッサエレメントＰＥへＩ／Ｏ処理結果を転送する。プロセッサエレメントＰＥへ転送可能でなければ，一旦，割込み元へ復帰し，次の転送契機を待つ。
【００５４】
自ＣＰがスレーブＣＰ２６の場合，ステップ７４により，マスタＣＰ１２へＩ／Ｏ処理結果を転送可能であるかどうかを判定し，転送可能であれば，ステップ７５により，マスタＣＰ１２へＩ／Ｏ処理結果を転送する。マスタＣＰ１２へ転送可能でなければ，一旦，割込み元へ復帰し，次の転送契機を待つ。
【００５５】
図７は，本発明の一実施例においてＩ／Ｏ分散化と分割並列化を併用したときのタイムチャートを示す。
マスタＣＰ１２が１台とスレーブＣＰ２６が１台あり，指定されたＩ／Ｏ分割数が２であるとする。また，分散率はマスタ：スレーブ＝１：２であるとする。プロセッサエレメントＰＥからのＩ／Ｏ要求のｒｅａｄデータは，図７（Ａ）に示すように，マスタＣＰ１２およびスレーブＣＰ２６によって実行される。すなわち，マスタＣＰ１２では，データＡ，Ｂのｒｅａｄが実行され，スレーブＣＰ２６では，データＣ，Ｄのｒｅａｄが実行される。
【００５６】
時間的な流れは，図７（Ｂ）に示すようになる。まず，マスタＣＰ１２から記憶装置３１へのデータＡに関するＩ／Ｏ実行により，記憶装置３１からマスタＣＰ１２へ時間Ａ１だけデータが転送される。Ａ１の転送が終了すると，マスタＣＰ１２はデータＢに関するＩ／Ｏを実行するとともに，Ａ１で入力したデータＡをＩ／Ｏ要求元のプロセッサエレメントＰＥへ，時間Ａ２をかけて転送する。この間，記憶装置３１からマスタＣＰ１２へのデータ転送が時間Ｂ１の間，並列に実行されることになる。時間Ａ２の後，マスタＣＰ１２からプロセッサエレメントＰＥへ時間Ｂ２分のデータ転送が行われる。
【００５７】
スレーブＣＰ２６においても，データＣ，Ｄのそれぞれについて，図７（Ｂ）に示すようにデータ転送が行われる。まず，記憶装置３１からスレーブＣＰ２６へのデータ転送が時間Ｃ１，Ｄ１のように行われ，スレーブＣＰ２６からマスタＣＰ１２へのデータ転送が時間Ｃ２，Ｄ２のように行われ，マスタＣＰ１２からプロセッサエレメントＰＥへ時間Ｃ３，Ｄ３のように行われる。
【００５８】
本実施例において，スレーブＣＰ２６のＩ／Ｏ処理に異常があった場合，マスタＣＰ１２がそのＩ／Ｏ処理を引き継いでリカバリ処理を行う。マスタＣＰ１２に異常があった場合には，他のスレーブＣＰの１台がマスタＣＰになって，同様に処理を引き継ぐことができる。
【００５９】
【発明の効果】
以上説明したように，本発明によれば，Ｉ／Ｏの分散化，Ｉ／Ｏの分割並列化により，コントロールプロセッサの負荷が分散され，またプロセッサエレメントが要求したＩ／Ｏの実行完了までの時間が短縮される。したがって，ジョブのスループット性能，Ｉ／Ｏのピーク性能が向上し，システム全体としてのスピードアップが可能になる。また，スレーブＣＰのＩ／Ｏ処理に何らかの異常があった場合，マスタＣＰがリカバリするので，信頼性の維持も可能である。
【図面の簡単な説明】
【図１】本発明の構成例を示す図である。
【図２】本発明の実施例によるＩ／Ｏの分散化を説明する図である。
【図３】本発明の実施例によるＩ／Ｏの分割並列化を説明する図である。
【図４】本発明の実施例による全体のＩ／Ｏ処理の流れを示す図である。
【図５】マスタＣＰにおけるＩ／Ｏ分散化処理フローチャートである。
【図６】本発明の実施例によるＩ／Ｏ分割化処理フローチャートである。
【図７】本発明の一実施例においてＩ／Ｏ分散化と分割並列化を併用したときのタイムチャートである。
【図８】従来技術の説明図である。
【符号の説明】
１０−０，１０−１，…  プロセッサエレメント
１１    クロスバネットワーク
１２    マスタＣＰ
１３    入力装置
１４    Ｉ／Ｏ分割指示入力手段
１５    Ｉ／Ｏ分散指示入力手段
１６    Ｉ／Ｏ要求受付け手段
１７    分散判定処理手段
１８    Ｉ／Ｏ分割処理手段
１９    Ｉ／Ｏ並列実行手段
２０    Ｉ／Ｏ要求転送手段
２１    Ｉ／Ｏ処理結果受信手段
２２    Ｉ／Ｏ処理完了通知手段
２３    異常検出手段
２４    分散抑止手段
２５    リカバリ処理手段
２６    スレーブＣＰ
２７    Ｉ／Ｏ要求受信手段
２８    Ｉ／Ｏ分割処理手段
２９    Ｉ／Ｏ並列実行手段
３０    Ｉ／Ｏ処理結果転送手段
３１    記憶装置
【図１】
0003569341.tif 000002
【図２】
0003569341.tif 000003
【図３】
0003569341.tif 000004
【図４】
0003569341.tif 000005
【図５】
0003569341.tif 000006
【図６】
0003569341.tif 000007
【図７】
0003569341.tif 000008
【図８】
0003569341.tif 000009