(57)【要約】【課題】並列計算機システムの処理性能を向上させることを目的とする。【解決手段】情報処理装置１０は、複数のプロセッサ１１〜１３を有する。ここで、情報処理装置１０は、各プロセッサ１１〜１３が実行する処理の進捗を示す進捗度を、プロセッサ１１〜１３ごとに計測する計測回路１１ａ〜１３ａを有する。そして、情報処理装置１０は、外部装置に対するアクセス要求を複数のプロセッサから受信した場合は、アクセス要求の送信元となるプロセッサから計測された進捗度に基づいて、アクセス要求を調停する。【選択図】図１
2015069576.tif 000002
【特許請求の範囲】
【請求項１】
複数の演算処理装置を有する情報処理装置において、
各演算処理装置は、
演算処理を実行する演算部と、
前記演算部が実行する演算処理の進捗を示す進捗度を計測する計測部と
を有し、
前記情報処理装置は、
外部装置に対するアクセス要求を複数の演算処理装置から受信した場合は、各アクセス要求の送信元となる演算処理装置が有する計測部により計測された進捗度の比較結果に基づいて、アクセス要求の調停を行う調停部
を有することを特徴とする情報処理装置。
【請求項２】
前記演算部は、前記演算処理を複数の単位処理に分けて実行し、
前記計測部は、前記演算部が前記単位処理を実行するたびに、前記進捗度の値に１を加算することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記調停部は、前記アクセス要求の発行対象となる外部装置が複数存在する場合は、前記外部装置ごとに、当該外部装置に対するアクセス要求の送信元となる演算処理装置が有する計測部により計測された進捗度に基づいて、アクセス要求の調停を行うことを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
他の情報処理装置が管理する外部装置に対するアクセス要求を、前記他の情報処理装置へ送信する場合は、該アクセス要求の送信元となる演算処理装置が有する計測部により計測された進捗度と、前記他の情報処理措置が管理する外部装置に対する処理の実行要求とを送信する送信部を有することを特徴とする請求項１〜３のいずれか１つに記載の情報処理装置。
【請求項５】
複数の演算処理装置と、
前記演算処理装置が実行する処理の進捗を示す進捗度を、前記演算処理装置ごとに計測する計測部と、
外部装置に対するアクセス要求を複数の演算処理装置から受信した場合は、該アクセス要求の送信元となる演算処理装置について前記計測部が計測した進捗度に基づいて、該アクセス要求の調停を行う調停部と
を有することを特徴とする情報処理装置。
【請求項６】
複数の演算処理装置を有する情報処理装置の制御方法において、
各演算処理装置が実行する処理の進捗を示す進捗度を、前記演算処理装置ごとに計測し、
外部装置に対するアクセス要求を複数の演算処理装置から受信した場合は、該アクセス要求の送信元となる演算処理装置について計測された進捗度に基づいて、該アクセス要求を調停する
ように前記情報処理装置を制御することを特徴とする情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置および情報処理装置の制御方法に関する。
【背景技術】
【０００２】
従来、複数のプロセッサを有し、各プロセッサが処理を並列に実行する並列計算機システムの技術が知られている。例えば、複数のコンピュータをネットワーク接続した並列コンピューティングシステム、複数のプロセッサをバスレベルで接続したマルチプロセッサシステム、同一チップ上に複数のプロセッサを集積したＣＭＰ（Chip  Multi  Processor）等の技術が知られている。
【０００３】
このような並列計算機システムは、１つのタスクを複数のプロセスやスレッド等の処理に分割し、分割されたプロセスやスレッドを各プロセッサに割当てる。かかる場合、各プロセッサは、メモリ、ネットワーク、ストレージ等への外部アクセスや、他のプロセッサとの通信を実行し、割当てられた処理を実行するためのデータを取得する。そして、各プロセッサは、取得したデータを用いて処理を実行し、外部アクセスを実行して、処理の実行結果を出力する。
【０００４】
また、並列計算機システムは、全てのプロセッサが処理を完了するまで待機する。そして、並列計算機システムは、全てのプロセッサが処理を完了した場合には、新たなタスクを分割し、分割された処理を各プロセッサに割当てる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０００−２５３０６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述した並列計算機システムの技術では、他のプロセッサよりも早く処理を完了したしたプロセッサが、他のプロセッサが処理を完了するまで無駄な待機を行うので、全体の処理性能が低下してしまうという課題がある。
【０００７】
例えば、並列計算機システムは、各プロセッサの処理時間が同じになるように、１つのジョブを複数の処理に分割した際に、最も効率良く処理を実行する。しかしながら、外部アクセスやプロセッサ間の通信等を実行する場合は、通信先装置の状況により遅延や競合が生じるので、外部アクセスやプロセッサ間の通信を行うために要する時間がプロセッサごとに変化する。このため、各プロセッサの処理時間が同じになるようにジョブを分割するのが困難となる結果、各プロセッサは、処理を同時に終了することができない。
【０００８】
１つの側面では、本発明は、並列計算機システムの処理性能を向上させる情報処理装置および情報処理装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
一態様の情報処理装置は、複数の演算処理装置を有する。ここで、情報処理装置は、各演算処理装置が実行する処理の進捗を示す進捗度を、演算処理装置ごとに計測する。そして、情報処理装置は、外部装置に対するアクセス要求を複数の演算処理装置から受信した場合は、アクセス要求の送信元となる演算処理装置から計測した進捗度に基づいて、アクセス要求を調停する。
【発明の効果】
【００１０】
一実施形態によれば、並列計算機システムの処理性能を向上させることができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、実施例１に係る情報処理装置のハードウェア構成を説明する図である。
【図２】図２は、実施例１に係るプロセッサのハードウェア構成を説明する図である。
【図３】図３は、実施例１に係るアービタのハードウェア構成を説明する図である。
【図４】図４は、従来の並列計算機システムが実行する処理の流れを説明する図である。
【図５】図５は、実施例１に係る情報処理装置が実行する処理の流れを説明する図である。
【図６】図６は、実施例１に係るアービタが実行する処理の流れを説明するフローチャートである。
【図７】図７は、実施例２に係る情報処理装置が有するハードウェア構成を説明する図である。
【図８】図８は、実施例２に係る情報処理装置が出力するパケットのフォーマットを説明する図である。
【図９】図９は、情報処理装置のハードウェア構成のバリエーションを説明する図である。
【発明を実施するための形態】
【００１２】
以下に添付図面を参照して本願に係る情報処理装置および情報処理装置の制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により開示技術が限定されるものではない。また、各実施例は、矛盾しない範囲で適宜組みあわせてもよい。
【実施例１】
【００１３】
以下の実施例１では、図１を用いて、複数のプロセッサを有する情報処理装置が複数設置された並列計算機システム１の一例について説明する。図１は、実施例１に係る情報処理装置のハードウェア構成を説明する図である。図１に示すように、並列計算機システム１は、外部装置として、メモリ２、Ｉ／Ｏ（Input/Output）装置３、管理装置４、情報処理装置１０、１０ａを有する。
【００１４】
なお、図１では記載を省略したが、並列計算機システム１は、情報処理装置１０と同様の機能を発揮する情報処理装置を他にも有するものとする。また、情報処理装置１０ａには、メモリ２、Ｉ／Ｏ装置３と同様の装置が接続され、情報処理装置１０と同様の機能を発揮するものとして、以下の説明を省略する。
【００１５】
情報処理装置１０は、複数のプロセッサ１１〜１３、アービタ１４、メモリアクセスコントローラ１５、外部バスコントローラ１６、インターコネクトコントローラ１７を有する。また、プロセッサ１１は、計測回路１１ａと演算回路１１ｂとを有する。また、プロセッサ１２は、計測回路１２ａと演算回路１２ｂとを有する。また、プロセッサ１３は、計測回路１３ａと演算回路１３ｂとを有する。
【００１６】
すなわち、プロセッサ１１〜１３は、同様のハードウェア構成を有する演算処理装置である。なお、プロセッサ１２、１３は、プロセッサ１１と同様の機能を発揮するものとして、以下の説明を省略する。情報処理装置１０は、図１に図示したプロセッサ１１〜１３以外にも、プロセッサ１１と同様の機能を発揮するプロセッサを有するものとする。
【００１７】
なお、図１には、情報処理装置１０のハードウェア構成のうち、各プロセッサ１１〜１３から各外部装置に信号を送信するための出力系の回路構成についてのみ記載した。しかしながら、情報処理装置１０は、図１に示すハードウェア構成以外にも、各外部装置から各プロセッサ１１〜１３へ信号を送信するための受信系の回路構成も有する。
【００１８】
続いて、各ハードウェアが発揮する機能について説明する。メモリ２は、情報処理装置１０とメモリバスで接続された記憶装置であり、情報処理装置１０が制御や管理を行う記憶装置である。例えば、メモリ２には、情報処理装置１０や情報処理装置１０ａが演算処理を実行するための各種データが格納されている。
【００１９】
Ｉ／Ｏ装置３は、情報処理装置１０と各種バスで接続された外部装置であり、情報処理装置１０が制御や管理を行う外部装置である。例えば、Ｉ／Ｏ装置３は、ＨＤＤ（Hard  Disk  Drive）、ＳＳＤ（Solid  State  Drive）、ＦＤ（Flexible  Disk）等の記憶装置、各種入力装置等の装置である。
【００２０】
管理装置４は、並列計算機システム１が有する各情報処理装置１０、１０ａの管理を行う情報処理装置である。具体的には、管理装置４は、並列計算機システム１が有する各プロセッサ１１〜１３にタスクを並列実行させる場合は、タスクを複数のプロセスやスレッドに分割する。そして、管理装置４は、インターコネクトを介して、分割されたプロセスやスレッドを各プロセッサ１１〜１３に送信し、各プロセッサ１１〜１３にプロセスやスレッドを実行させる。なお、以下の説明では、管理装置４が各プロセッサ１１〜１３に実行させるプロセスやスレッドを分割処理と記載する。
【００２１】
情報処理装置１０は、プロセッサ１１〜１３を用いて分割処理を実行する情報処理装置である。プロセッサ１１は、各種演算処理を実行する演算処理装置であり、例えば、ＣＰＵ（Central  Processing  Unit）、ＭＰＵ（Micro  Processing  Unit）、ＡＳＩＣ（Application  specific  integrated  circuit）等の演算処理装置である。また、プロセッサ１１は、管理装置４から分割処理を受信した場合は、受信した分割処理を複数の単位処理へとさらに分割する。ここで、単位処理とは、プロセッサ１１が単位時間当たりに実行する処理であり、例えば、プロセッサ１１が独自に計測するローカルタイムが進む度にプロセッサ１１が実行する処理である。そして、プロセッサ１１は、分割後の単位処理を実行する。
【００２２】
また、プロセッサ１１は、プロセッサ１１が実行する分割処理の進捗を示す進捗度を計測する。例えば、プロセッサ１１は、進捗度を計測するカウンタを有し、単位処理を実行する度にカウンタの値を１つインクリメントする。そして、プロセッサ１１は、メモリ２に対するメモリアクセスを実行する場合や、Ｉ／Ｏ装置３に対するアクセスを実行する場合には、アクセス要求を生成し、生成したアクセス要求と、計測した進捗度とをアービタ１４に出力する。そして、プロセッサ１１は、アービタ１４から応答として、メモリ２から読み出されたデータやＩ／Ｏ装置３から取得されたデータを受信すると、受信したデータを用いて、分割処理の実行を継続する。
【００２３】
計測回路１１ａは、プロセッサ１１が実行する分割処理の進捗を示す進捗度を計測する計測回路である。例えば、計測回路１１ａは、演算回路１１ｂが単位処理を実行する度に値を１つインクリメントするカウンタである。具体的には、計測回路１１ａは、演算回路１１ｂから単位処理の実行が完了した旨の信号を受信すると、進捗度の値を１つインクリメントする。そして、計測回路１１ａは、計測した進捗度の値をアービタ１４に出力する。
【００２４】
演算回路１１ｂは、各種演算処理を実行する回路であり、例えば、プロセッサ１１のコアである。また、演算回路１１ｂは、プロセッサ１１に割当てられた分割処理を受信すると、受信した分割処理を複数の単位処理に分割し、分割した単位処理を実行する。また、演算回路１１ｂは、単位処理の実行が完了した場合は、計測回路１１ａに対し、単位処理の実行が完了した旨の信号を出力するとともに、次の単位処理を実行する。
【００２５】
ここで、演算回路１１ｂが実行する単位処理は、メモリ２に対するメモリアクセス、Ｉ／Ｏ装置３に対するアクセス、情報処理装置１０ａが有する他のプロセッサとの通信等、外部アクセスの実行を含む場合がある。例えば、演算回路１１ｂは、メモリ２からデータの読み出しを実行する処理を含む単位処理を実行する場合は、メモリ２に対するアクセス要求をアービタ１４に出力する。
【００２６】
そして、演算回路１１ｂは、アービタ１４から、アクセス権の取得通知を受信すると、メモリ２に対する読出し処理の実行を要求する読出し要求を生成し、アービタ１４を介して、生成した読出し要求をメモリアクセスコントローラ１５に出力する。その後、演算回路１１ｂは、読出し要求に対する応答を受信すると、受信した応答に含まれるデータ、すなわち、メモリ２から読み出されたデータを取得し、取得したデータを用いて単位処理に含まれる演算処理の実行を進める。
【００２７】
そして、演算回路１１ｂは、単位処理が完了すると、単位処理の実行が完了した旨の信号を計測回路１１ａに出力する。このため、計測回路１１ａは、演算回路１１ｂが各種演算処理を実行している間は、進捗度の値を進め、少なくとも、演算回路１１ｂが外部アクセスを開始してから完了しているまでの間は、進捗度の値を進めずに待機する。
【００２８】
なお、演算回路１１ｂは、メモリ２に対し、読出し要求以外にも、データの書込み処理の実行を要求する書込み要求を発行する場合がある。また、演算回路１１ｂは、Ｉ／Ｏ装置３に対する読出し要求、書込み要求、各種処理の実行の要求等を発行する場合がある。また、演算回路１１ｂは、情報処理装置１０ａが管理する各種外部装置に対する要求等を発行する場合がある。以下の説明では、演算回路１１ｂが発行する各種要求を処理要求と記載する。
【００２９】
以下、図２を用いて、上述した機能を発揮するためにプロセッサ１１が有するハードウェア構成の一例について説明する。図２は、実施例１に係るプロセッサのハードウェア構成を説明する図である。図２に示すように、プロセッサ１１は、アービタ１４と接続された計測回路１１ａと演算回路１１ｂを有する。また、計測回路１１ａは、カウンタ１８、インクリメンタ１９、マルチプレクサ２０を有する。
【００３０】
カウンタ１８は、進捗度を示す値を計数し、計数した値をアービタ１４に出力する。例えば、カウンタ１８は、マルチプレクサ２０が出力する信号が示す値を保持するフリップフロップ等の保持回路である。また、カウンタ１８は、保持した値を示す信号を、アービタ１４、インクリメンタ１９、マルチプレクサ２０に出力する。
【００３１】
インクリメンタ１９は、カウンタ１８が保持する値に１を加算した値をマルチプレクサ２０に出力する。例えば、インクリメンタ１９は、カウンタ１８が保持する値を示す信号を受信すると、受信した信号が示す値に１を加算した値を示す信号を生成し、生成した信号をマルチプレクサ２０に出力する。
【００３２】
マルチプレクサ２０は、演算回路１１ｂが単位処理の実行を完了する度に、カウンタ１８が保持する進捗度を示す値を１つインクリメントする。詳細には、マルチプレクサ２０は、入力信号として、カウンタ１８が出力する信号と、インクリメンタ１９が出力する信号を受信する。また、マルチプレクサ２０は、演算回路１１ｂから、単位処理が終了した旨を示す信号を選択信号として受信する。
【００３３】
そして、マルチプレクサ２０は、演算回路１１ｂから、単位処理が完了した旨の信号を受信した場合は、インクリメンタ１９から受信した信号を出力する。例えば、演算回路１１ｂは、単位処理が完了した場合は、電位が「Ｈｉｇｈ」となるパルス信号をマルチプレクサ２０に出力する。一方、マルチプレクサ２０は、演算回路１１ｂから受信する信号の電位が「Ｈｉｇｈ」となった場合は、インクリメンタ１９が出力する信号をカウンタ１８に出力する。一方、マルチプレクサ２０は、演算回路１１ｂから受信する信号の電位が「Ｌｏｗ」となる場合は、カウンタ１８が出力する信号を再度カウンタ１８へ入力する。この結果、マルチプレクサ２０は、演算回路１１ｂが単位処理の実行を完了した際に、カウンタ１８が保持する進捗度を示す値を１つインクリメントできる。
【００３４】
なお、上述した例では、計測回路１１ａは、演算回路１１ｂが単位処理を完了する度に進捗度の値を進めたが、実施例は、これに限定されるものではない。例えば、計測回路１１ａは、演算回路１１ｂが分割処理を開始した時点から、プロセッサ１１が動作するクロックに基づいて、ローカルタイムのカウントを実行する。
【００３５】
ここで、演算回路１１ｂは、メモリ２、Ｉ／Ｏ装置３、情報処理装置１０ａが管理するメモリやＩ／Ｏ等の外部装置に対するアクセス要求を発行する場合は、計測回路１１ａに、進捗度の出力を要求する。かかる場合、計測回路１０ａは、ローカルタイムの値を進捗度として出力するとともに、ローカルタイムのカウントを停止する。
【００３６】
また、演算回路１１ｂは、各種外部装置に対する処理要求を発行する場合は、アービタ１４に対してアクセス要求を発行する。例えば、演算回路１１ｂは、アービタ１４に対して出力する信号の電位を「Ｈｉｇｈ」にする。そして、演算回路１１ｂは、アービタ１４から、アクセス権の取得通知を受信すると、各種外部装置に対する処理要求をアービタ１４に対して送信する。
【００３７】
また、演算回路１１ｂは、図示を省略した受信系の回路を介して、処理要求に対する応答を受信した場合は、計測回路１０ａに対し、ローカルタイムのカウント再開を示す信号を出力する。かかる場合、演算回路１０ａは、プロセッサ１１が動作するクロックに基づいて、ローカルタイムのカウントを開始する。かかる処理を実行することで、計測回路１１ａは、プロセッサ１１が実行する分割処理の進捗度を計測することができる。なお、かかる処理を実行する場合、計測回路１１ａは、演算回路１１ｂが新たな分割処理を開始する際に、カウントした値をリセットしてから、プロセッサ１１が動作するクロックに基づいて、ローカルタイムのカウントを開始する。
【００３８】
図１に戻って説明を続ける。アービタ１４は、メモリ２、Ｉ／Ｏ装置３、情報処理装置１０ａ等の外部装置に対するアクセス要求の調停を行う調停回路である。具体的には、アービタ１４は、外部装置に対するアクセス要求を複数のプロセッサから受信した場合は、各アクセス要求の送信元となるプロセッサが有する計測回路により計測された進捗度の比較結果に基づいて、アクセス要求を調停する調停処理を実行する。
【００３９】
例えば、アービタ１４は、プロセッサ１１の演算回路１１ｂからメモリ２に対するアクセス要求と、プロセッサ１２の演算回路１２ｂからメモリ２に対するアクセス要求とを受信する。かかる場合、アービタ１４は、プロセッサ１１の計測回路１１ａが計測するプロセッサ１１の分割処理の進捗度と、プロセッサ１２の計測回路１２ａが計測するプロセッサ１２の分割処理の進捗度とを受信する。そして、アービタ１４は、受信した進捗度のうち、最も値が少ない進捗度を特定する。その後、アービタ１４は、特定した進捗度の送信元となるプロセッサの処理要求を、メモリアクセスコントローラ１５に出力する。
【００４０】
このように、アービタ１４は、アクセス要求の競合が発生した場合は、アクセス要求の送信元となるプロセッサのうち、進捗度の値が最も少ないプロセッサの処理要求を出力する。この結果、アービタ１４は、進捗度が最も低いプロセッサの外部アクセスを優先して実行させるので、各プロセッサが実行する分割処理の進捗のバランスをとることができる。
【００４１】
なお、アービタ１４は、アクセス要求の発行先となる外部装置が複数存在する場合は、上述した調停処理を、アクセス要求の送信先となる外部装置ごとに実行する。例えば、アービタ１４は、調停処理を実行する調停回路を外部装置ごとに有し、各調停回路が、アクセス要求の送信元となるプロセッサのうち、進捗度が最も少ないプロセッサのアクセス要求を優先して出力する。
【００４２】
以下、図３を用いて、上述した機能を発揮するためにアービタ１４が有するハードウェア構成の一例について説明する。図３は、実施例１に係るアービタのハードウェア構成を説明する図である。例えば、図３に示す例では、アービタ１４は、複数の調停回路３０、３０ａ、３０ｂを有する。
【００４３】
ここで、調停回路３０は、メモリ２に対するアクセス要求の調停を行う回路であり、調停回路３０ａは、Ｉ／Ｏ装置３に対するアクセス要求の調停を行う回路である。また、調停回路３０ｂは、情報処理装置１０ａが管理する外部装置に対するアクセス要求の調停を行う回路である。ここで、調停回路３０ａ、調停回路３０ｂは、調停回路３０と同様のハードウェア構成を有するものとして、以下の説明を省略する。
【００４４】
調停回路３０は、複数のマルチプレクサ３１〜３３、複数の定数保持回路３４〜３６、進捗度比較回路３７、マルチプレクサ３８を有する。なお、定数保持回路３４〜３６は、１６進数の定数を示す信号を常時出力する回路であり、図３に示す例では「０ｘＦＦＦＦ」、すなわち「０」を示す信号を出力する回路である。かかる場合、定数保持回路３４〜３６は、アース等で代替されてもよい。
【００４５】
マルチプレクサ３１は、プロセッサ１１の演算回路１１ｂが出力する信号を制御信号とし、プロセッサ１１の計測回路１１ａが出力する進捗度を示す信号、または、定数保持回路３４の出力のいずれかを進捗度比較回路３７に出力するマルチプレクサである。また、マルチプレクサ３２は、プロセッサ１２の演算回路１２ｂが出力する信号を制御信号とし、プロセッサ１２の計測回路１２ａが出力する進捗度を示す信号、または、定数保持回路３５の出力のいずれかを進捗度比較回路３７に出力するマルチプレクサである。また、マルチプレクサ３３は、プロセッサ１３の演算回路１３ｂが出力する信号を制御信号とし、プロセッサ１３の計測回路１３ａが出力する進捗度を示す信号、または、定数保持回路３６の出力のいずれかを進捗度比較回路３７に出力するマルチプレクサである。
【００４６】
例えば、マルチプレクサ３１は、演算回路１１ｂがマルチプレクサ３８に入力する信号の電位を「Ｌｏｗ」にしている間は、定数保持回路３４が出力する信号を進捗度比較回路３７に出力する。そして、マルチプレクサ３１は、演算回路１１ｂがメモリ２に対するアクセス要求として、マルチプレクサ３８に入力する信号の電位を「Ｈｉｇｈ」にした場合は、計測回路１１ａが出力する進捗度を示す信号を進捗度比較回路３７に出力する。なお、マルチプレクサ３２、３３は、マルチプレクサ３１と同様の動作をするものして、説明を省略する。
【００４７】
進捗度比較回路３７は、メモリ２に対するアクセス要求の送信元となるプロセッサにより測定された進捗度を比較する。そして、進捗度比較回路３７は、比較した進捗度のうち、値が最も少ない進捗度を測定したプロセッサのアクセス要求をメモリアクセスコントローラ１５に出力するよう指示する制御信号を、マルチプレクサ３８に対して出力する。
【００４８】
以下、進捗度比較回路３７が実行する処理の一例について説明する。なお、以下の説明では、プロセッサ１１〜１３が同時にメモリ２に対するアクセス要求を発行した際に進捗度比較回路３７が実行する処理について説明する。例えば、進捗度比較回路３７は、プロセッサ１１の計測回路１１ａが測定した進捗度「３」を示す信号、プロセッサ１２の計測回路１２ａが測定した進捗度「８」を示す信号、プロセッサ１３の計測回路１３ａが測定した進捗度「６」を示す信号を受信する。かかる場合、進捗度比較回路３７は、受信した各信号が示す進捗度同士を比較し、値が最も少ない進捗度「３」を特定する。
【００４９】
そして、進捗度比較回路３７は、特定した進捗度を示す信号の送信元となるプロセッサ１１を特定し、特定したプロセッサ１１に対してアクセス権を取得した旨の通知をプロセッサ１１に出力する。また、進捗度比較回路３７は、プロセッサ１１を示す信号をマルチプレクサ３８に出力する。この結果、プロセッサ１１は、マルチプレクサ３８を介して、メモリ２に対する処理要求をメモリアクセスコントローラ１５に送信し、メモリ２に対するメモリアクセスを実行する。
【００５０】
また、進捗度比較回路３７は、プロセッサ１１のメモリアクセスが完了すると、プロセッサ１２の計測回路１２ａが測定した進捗度「８」と、プロセッサ１３の計測回路１３ａが測定した進捗度「６」とを比較する。この結果、進捗度比較回路３７は、値が最も少ない進捗度「６」を特定し、特定した進捗度を示す信号の送信元となるプロセッサ１３を特定しする。そして、進捗度比較回路３７は、特定したプロセッサ１３にアクセス権を取得した旨の通知を出力し、プロセッサ１３を示す信号をマルチプレクサ３８に出力する。この結果、プロセッサ１３は、マルチプレクサ３８を介して、メモリ２に対する処理要求をメモリアクセスコントローラ１５に送信し、メモリ２に対するメモリアクセスを実行する。
【００５１】
また、プロセッサ１３が要求したメモリアクセスが完了すると、進捗度比較回路３７は、プロセッサ１２の計測回路１２ａが測定した進捗度「８」を示す信号のみを受信する。かかる場合は、進捗度比較回路３７は、プロセッサ１２を示す信号をマルチプレクサ３８に出力する。この結果、プロセッサ１２は、マルチプレクサ３８を介して、メモリ２に対する処理要求をメモリアクセスコントローラ１５に送信し、メモリ２に対するメモリアクセスを実行する。
【００５２】
なお、進捗度比較回路３７は、複数の進捗度を比較した結果、値が最も少ない進捗度が複数存在する場合は、ラウンドロビンやＬＲＵ（Least  Recently  Used）の技術を用いて、調停を行ってもよい。例えば、進捗度比較回路３７は、プロセッサ１１の計測回路１１ａが測定した進捗度「３」を示す信号とプロセッサ１２の計測回路１２ａが測定した進捗度「３」を示す信号を受信する。かかる場合、進捗度比較回路３７は、ラウンドロビンやＬＲＵの技術を用いて、プロセッサ１１、１２のいずれかを選択し、選択したプロセッサを示す信号をマルチプレクサ３８に出力してもよい。
【００５３】
マルチプレクサ３８は、進捗度比較回路３７が出力する信号を制御信号とし、各プロセッサ１１〜１３が有する各演算回路１１ｂ〜１３ｂが出力する処理要求のいずれかをメモリアクセスコントローラ１５に出力するマルチプレクサである。例えば、マルチプレクサ３８は、進捗度比較回路３７から、プロセッサ１１を示す信号を受信した場合は、プロセッサ１１が有する演算回路１１ｂが出力する処理要求をメモリアクセスコントローラ１５に出力する。
【００５４】
上述したように、調停回路３０は、複数のプロセッサからメモリ２に対するアクセス要求を受信した場合は、アクセス要求の送信元となるプロセッサにおける分割処理の進捗度を比較し、値が最も小さい進捗度を特定する。そして、調停回路３０は、特定した進捗度を測定したプロセッサから受信する処理要求を、メモリアクセスコントローラ１５に出力する。この結果、調停回路３０は、各プロセッサにおける分割処理の進捗度を揃える結果、情報処理装置１０の処理性能を向上させることができる。
【００５５】
なお、調停回路３０ａは、各プロセッサ１１〜１３から、Ｉ／Ｏ装置３に対するアクセス要求を受信し、調停回路３０と同様に動作することで、Ｉ／Ｏ装置３に対するアクセス要求の調停を行うものとする。また、調停回路３０ｂは、各プロセッサ１１〜１３から、情報処理装置１０ａに対するアクセス要求を受信し、調停回路３０と同様に動作することで、情報処理装置１０ａに対するアクセス要求の調停を行うものとする。
【００５６】
図１に戻って、説明を続ける。メモリアクセスコントローラ１５は、メモリ２に対するメモリアクセスを制御するメモリアクセスコントローラである。例えば、メモリアクセスコントローラ１５は、アービタ１４から、メモリ２に対する処理要求を受信すると、受信した処理要求が示す読出し処理や書込み処理を実行する。そして、メモリアクセスコントローラ１５は、読み出したデータやデータの書込み結果を示す情報が含まれる応答を生成し、図示を省略した受信系の回路を介して、生成した応答を処理要求の送信元へ送信する。
【００５７】
外部バスコントローラ１６は、Ｉ／Ｏ装置３と情報処理装置１０とを接続する外部バスの制御を行う制御装置である。例えば、外部バスコントローラ１６は、アービタ１４からＩ／Ｏ装置３に対する処理要求を受信すると、受信した処理要求が示す各種処理を実行する。そして、外部バスコントローラ１６は、受信した処理要求に対応する応答を生成し、生成した応答を処理要求の送信元へ送信する。
【００５８】
インターコネクトコントローラ１７は、情報処理装置１０と管理装置４および情報処理装置１０ａとを接続するインターコネクトを制御する制御装置である。例えば、インターコネクトコントローラ１７は、アービタ１４から情報処理装置１０ａに対する処理要求を受信した場合は、インターコネクトを介して、処理要求を情報処理装置１０ａに送信する。また、インターコネクトコントローラ１７は、情報処理装置１０ａから、送信した処理要求に対する応答を受信すると、図示を省略した受信系の回路を介して、受信した応答をアクセス要求の送信元へ送信する。
【００５９】
このように、情報処理装置１０は、各プロセッサ１１〜１３が実行する分割処理の進捗度を計測する。そして、情報処理装置１０は、複数のプロセッサから同一の外部装置に対するアクセス要求を受信した場合は、アクセス要求の送信元となるプロセッサが実行する分割処理の進捗度に基づいて、アクセス要求の調停を実行する。このため、情報処理装置１０は、各プロセッサ１１〜１３が実行する分割処理の進捗を揃えるので、各プロセッサ１１〜１３が分割処理を開始してから完了するまでの時間差を減少させることができる。このため、情報処理装置１０は、並列処理の処理性能を向上させることができる。
【００６０】
以下、図４、図５を用いて、情報処理装置１０の効果の一例について説明する。まず、図４を用いて、従来の並列計算機システムが実行する処理の一例について説明する。図４は、従来の並列計算機システムが実行する処理の流れを説明する図である。なお、図４には、従来の並列計算機システムが有するプロセッサ＃１〜＃３が計算処理を実行する度にカウントされるローカルタイムの値と、各プロセッサの状況によらず一律にカウントされるグローバルタイムとを記載した。
【００６１】
また、図４には、各プロセッサ＃１〜＃３が外部装置に対するアクセスを行っている期間を濃いハッチングで示し、外部装置に対するアクセス要求を送信してから実際にアクセスを実行するまでの待機時間を薄いハッチングで示した。また、図４に示す例では、各プロセッサ＃１〜＃３のアクセス要求を調停するアービタは、ラウンドロビン方式で、アクセス要求の調停を行うものとする。
【００６２】
また、図４に示す例では、プロセッサ＃１は、ローカルタイムが「３」、「８」のタイミングでアクセス要求を発行し、プロセッサ＃２は、ローカルタイムが「６」、「１４」のタイミングでアクセス要求を発行するものとする。また、図４に示す例では、プロセッサ＃３は、ローカルタイムが「８」、「１１」のタイミングでアクセス要求を発行するものとする。また、各プロセッサ＃１〜＃３は、ローカルタイムが「１５」となった時点で、割当てられた分割処理を完了するものとする。
【００６３】
例えば、図４中（Ａ）に示すように、グローバルタイムが「４」のタイミングで、プロセッサ＃１がアクセス要求を発行する。かかる場合は、アービタは、プロセッサ＃１のアクセス要求を出力するので、優先権をプロセッサ＃１からプロセッサ＃２に変更する。次に、グローバルタイムが「７」の時点で、プロセッサ＃２がアクセス要求を発行し、グローバルタイムが「９」の時点で、プロセッサ＃３がアクセス要求を発行する。
【００６４】
ここで、図４中（Ｂ）に示すように、グローバルタイムが「９」の時点でプロセッサ＃１のアクセスが終了するが、図４中（Ｃ）に示すように、プロセッサ＃２とプロセッサ＃３とのアクセス要求が存在するので、アービタは、調停処理を実行する。この結果、アービタは、優先権を有するプロセッサ＃２からの処理要求を発行し、優先権をプロセッサ＃２からプロセッサ＃３に変更する。
【００６５】
次に、図４中（Ｄ）に示すように、グローバルタイムが「１４」の時点で、プロセッサ＃２のアクセスが終了するが、プロセッサ＃１がアクセス要求を発行するので、図４中（Ｅ）に示すように、アービタは、調停処理を実行する。この結果、アービタは、優先権を有するプロセッサ＃３からの処理要求を発行し、優先権をプロセッサ＃３からプロセッサ＃１に変更する。
【００６６】
続いて、図４中（Ｆ）に示すように、グローバルタイムが「１９」の時点で、プロセッサ＃３によるアクセスが終了する。このため、アービタは、図４中（Ｇ）に示すように、プロセッサ＃１からのアクセス要求を発行し、優先権をプロセッサ＃１からプロセッサ＃２に変更する。
【００６７】
ここで、グローバルタイムが「２２」の際に、プロセッサ＃２とプロセッサ＃３とが同時にアクセス要求を発行したものとする。すると、図４中（Ｈ）に示すように、グローバルタイムが「２４」の際に、プロセッサ＃１のアクセスが終了するので、アービタは、調停処理を実行する。この結果、アービタは、図４中（Ｉ）に示すように、優先権を有するプロセッサ＃２からの処理要求を発行する。
【００６８】
また、図４中（Ｊ）に示すように、グローバルタイムが「２９」のときに、プロセッサ＃２のアクセスが終了するので、アービタは、プロセッサ＃３からの処理要求を発行する。この結果、グローバルタイムが「３４」の際に、プロセッサ＃３のアクセス処理が終了し、図４中（Ｋ）に示すように、グローバルタイムが「３７」の際に、全てのプロセッサ＃１〜＃３が、分割処理を完了する。
【００６９】
次に、図５を用いて、実施例１に係る情報処理装置１０が実行する処理について説明する。図５は、実施例１に係る情報処理装置が実行する処理の流れを説明する図である。なお、図５に示す例では、アービタ１４は、各プロセッサ１１〜１３におけるローカルタイムを進捗度として使用するものとする。また、各プロセッサ１１〜１３は、図４に示す各プロセッサ＃１〜＃３と同じ分割処理が割当てられたものとする。
【００７０】
例えば、アービタ１４は、図５中（Ｌ）に示すように、グローバルタイムが「４」となる際に、プロセッサ１１の処理要求を発行する。また、図５中（Ｍ）に示すように、グローバルタイムが「９」の時点でプロセッサ１１のアクセスが終了するが、図５中（Ｎ）および（Ｏ）に示すように、プロセッサ１２とプロセッサ１３とのアクセス要求が存在する。このため、アービタ１４は、プロセッサ１２のローカルタイム「６」とプロセッサ１３のローカルタイム「８」とを比較し、プロセッサ１２のローカルタイムの方が値が少ない、すなわち、プロセッサ１２の処理が遅れていると判定する。この結果、アービタ１４は、図５中（Ｐ）に示すように、プロセッサ１２の処理要求を発行する。
【００７１】
次に、図５中（Ｑ）に示すように、グローバルタイムが「１４」の際、プロセッサ１２のアクセスが終了するが、図５中（Ｒ）および（Ｓ）に示すように、プロセッサ１１とプロセッサ１３とのアクセス要求が存在する。このため、アービタ１４は、プロセッサ１１のローカルタイム「８」とプロセッサ１３のローカルタイム「８」とを比較する。ここで、アービタ１４は、各プロセッサのローカルタイムが同一の値であるため、どちらのアクセス要求を選択してもよいが、図５に示す例では、ランドロビンによりプロセッサ１３の処理要求を発行したものとする。また、図５中（Ｔ）に示すように、グローバルタイムが「１９」の際、プロセッサ１３のアクセスが終了するので、アービタ１４は、プロセッサ１１の処理要求を発行する。
【００７２】
ここで、図５中（Ｕ）に示すように、グローバルタイムが「２２」の際に、プロセッサ１２とプロセッサ１３とは、同時にアクセス要求を発行する。そして、アービタ１４は、図５中（Ｖ）に示すように、グローバルタイムが「２４」の時点で、プロセッサ１１のアクセスが終了するので、プロセッサ１２とプロセッサ１３とが発行したアクセス要求を調停する。詳細には、アービタ１４は、プロセッサ１２のローカルタイム「１４」と、プロセッサ１３のローカルタイム「１１」とを比較する。
【００７３】
この結果、アービタ１４は、プロセッサ１３の処理が遅れているので、図５中（Ｗ）に示すように、プロセッサ１３の処理要求を発行する。また、図５中（Ｘ）に示すように、グローバルタイムが「２９」の際に、プロセッサ１２のアクセスが終了するので、アービタ１４は、プロセッサ１２の処理要求を発行する。この結果、図５中（Ｙ）に示すように、情報処理装置１０は、グローバルタイムが「３４」の際に処理を終了する。
【００７４】
このように、情報処理装置１０は、アクセス要求の調停を行う際、分割処理の進捗度が最も低いプロセッサからのアクセス要求を優先して発行する。このため、情報処理装置１０は、タスクの実行にかかる時間を短縮できる。
【００７５】
また、図４に示す例では、最も早く分割処理を完了したプロセッサ＃２の待機時間は、プロセッサ＃３が分割処理を終了するまでのグローバルタイムで「８」つ分となる。しかしながら、図５に示す例では、最も早く分割処理を完了したプロセッサ１１の待機時間はは、プロセッサ１２が分割処理を終了するまでのグローバルタイムで「４」つ分となる。このため、情報処理装置１０は、各プロセッサ１１〜１３が分割処理を実行する時間を揃える結果、分割処理の実効性能を向上させることができる。
【００７６】
次に、図６を用いて、アービタ１４が実行する処理の流れについて説明する。図６は、実施例１に係るアービタが実行する処理の流れを説明するフローチャートである。なお、アービタ１４は、外部装置ごとに、図６に示す処理を並行して実行する。
【００７７】
例えば、アービタ１４は、アクセス要求が存在するか否かを判定する（ステップＳ１０１）。そして、アービタ１４は、アクセス要求が存在すると判定した場合は（ステップＳ１０１：Ｙｅｓ）、競合が発生しているか否かを判定する（ステップＳ１０２）。そして、アービタ１４は、例えば、同一の外部装置に対するアクセス要求が存在する場合には、競合が発生していると判定し（ステップＳ１０２：Ｙｅｓ）、最小進捗度判定を実行する（ステップＳ１０３）。つまり、アービタ１４は、競合しているアクセス要求の送信元となる各プロセッサから進捗度を受信し、受信した進捗度のうち値が最も小さい進捗度を判定する。
【００７８】
次に、アービタ１４は、値が最も小さい進捗度を測定したプロセッサを選択し（ステップＳ１０４）、選択したプロセッサから処理要求を受理し（ステップＳ１０５）、受理した処理要求を出力する（ステップＳ１０６）。また、アービタ１４は、処理要求に対する応答が有るか否かを判定し（ステップＳ１０７）、応答が有ると判定した場合は（ステップＳ１０７：Ｙｅｓ）、ステップＳ１０１を実行する。
【００７９】
一方、アービタ１４は、応答が無かったと判定した場合は（ステップＳ１０７：Ｎｏ）、応答が受信されるまでステップＳ１０７を実行する。また、アービタ１４は、競合がないと判定した場合は（ステップＳ１０２：Ｎｏ）、ステップＳ１０３、ステップＳ１０４の実行をスキップし、ステップＳ１０５を実行する。また、アービタ１４は、アクセス要求がない場合には（ステップＳ１０１：Ｎｏ）、再度、ステップＳ１０１から処理を実行する。
【００８０】
［情報処理装置１０の効果］
上述したように、情報処理装置１０は、演算処理を実行する演算回路１１ｂと、演算回路１１ｂが実行する演算処理の進捗を示す進捗度を計測する計測回路１１ａとを有するプロセッサ１１を有する。また、情報処理装置１０は、プロセッサ１１と同様のプロセッサであるプロセッサ１２、１３を有する。そして、情報処理装置１０は、外部装置に対するアクセス要求を複数のプロセッサ１１〜１３から受信した場合は、アクセス要求の送信元となるプロセッサが有する計測回路により計測された進捗度の比較結果に基づいて、アクセス要求の調停を行う。この結果、情報処理装置１０は、各プロセッサ１１〜１３が実行する分割処理の進捗度を揃えるので、早期に処理が完了したプロセッサが無駄な待機を行う時間を短縮する結果、タスクを並行処理する際の処理性能を向上させることができる。
【００８１】
また、演算回路１１ｂは、分割処理を複数の単位処理に分けて実行する。そして、計測回路１１ａは、演算回路１１ｂが単位処理を実行する度に、計測する進捗度の値に１を加算する。このため、情報処理装置１０は、各プロセッサ１１〜１３が実行する分割処理の進捗度合いに応じて、アクセス要求の調停を実行することができる。
【００８２】
また、情報処理装置１０は、アクセス要求の発行対象となる外部装置が複数存在する場合は、外部装置ごとに、アクセス要求の送信元となるプロセッサが有する計測回路により計測された進捗度の比較結果に基づいて、アクセス要求の調停を実行する。このため、情報処理装置１０は、各プロセッサ１１〜１３が複数の外部装置に対してアクセス要求を発行する際に、外部装置ごとに進捗度に応じたアクセス要求を実行できる。この結果、情報処理装置１０は、複数の外部装置が存在する際に、競合が発生していない外部装置に対するアクセス要求を即座に発行することができるので、タスクを分割処理する際の処理性能を向上させることができる。
【実施例２】
【００８３】
上述した情報処理装置１０は、情報処理装置１０が有するプロセッサ１１〜１３が発行したアクセス要求の調停を行った。しかしながら、実施例は、これに限定されるものではない。例えば、情報処理装置１０は、情報処理装置１０ａが管理する各種外部装置に対してアクセス可能なＮＵＭＡ（Non-Uniform  Memory  Access）型のメモリ共有システム、ＭＰＰ（Massively  Multi-Processor）型やＰＣクラスタ型のメモリ分散システムといったアーキテクチャを有する場合、情報処理装置１０ａに送信する処理要求に進捗度を付与して送信してもよい。すなわち、情報処理装置１０が、メモリ共有システムのうちのＳＭＰ（Symmetric  Multiprocessing）や、ＵＭＡ型等、情報処理装置内でメモリアクセスが完結するような情報処理装置ではない場合は、情報処理装置１０ａ等他の情報処理装置に各種処理の要求を送信する際に進捗度を付与して送信してもよい。
【００８４】
以下、実施例２として、他の情報処理装置へアクセス要求を送信する際、アクセス要求の送信元となるプロセッサの進捗度をアクセス要求に付与して送信する情報処理装置１０ｂについて説明する。
【００８５】
図７は、実施例２に係る情報処理装置が有するハードウェア構成を説明する図である。なお、以下の説明では、図１に示すハードウェア構成と同様の機能を発揮するハードウェア構成については、同一の符号を付し、以下の説明を省略する。例えば、並列計算機システム１ａは、複数の情報処理装置１０ｂ〜１０ｄを有する。
【００８６】
また、情報処理装置１０ｂは、アービタ１４ａ、インターコネクトコントローラ１７ａを有する。また、情報処理装置１０ｄは、複数のプロセッサ１１ｃ〜１３ｃ、アービタ１４ｂ、メモリアクセスコントローラ１５ａ、外部バスコントローラ１６ａ、インターコネクトコントローラ１７ｂを有する。また、情報処理装置１０ｄには、メモリ２ａとＩ／Ｏ装置３ａとが接続されてている。なお、情報処理装置１０ｄが有する各ハードウェア構成１１ｃ〜１３ｃ、１４ｂ、１５ａ、１６ａ、１７ｂは、情報処理装置１０ｂが有するハードウェア構成１１〜１３、１４ａ、１５、１６、１７ａと同様の機能を発揮するものとして、説明を省略する。また、情報処理装置１０ｃは、情報処理装置１０ｂと同様の機能を発揮するものとして、説明を省略する。
【００８７】
アービタ１４ａは、アービタ１４と同様の調停処理を実行する。具体的には、アービタ１４ａは、プロセッサ１１〜１３から、アクセス要求と進捗度とを受信する。また、アービタ１４ａは、インターコネクトコントローラ１７ａから、アクセス要求と、他の情報処理装置１０ｂ、１０ｃが有するプロセッサが計測した進捗度とを受信する。そして、アービタ１４ａは、同一の外部装置に対して複数のアクセス要求を受信した場合は、アクセス要求の送信元となるプロセッサまたはインターコネクトコントローラ１７ａから受信した進捗度に基づいて、アクセス要求の調停を行う。
【００８８】
例えば、アービタ１４ａは、プロセッサ１１からメモリ２に対するアクセス要求と、プロセッサ１１が計測した進捗度とを受信する。また、アービタ１４ａは、インターコネクトコントローラ１７ａから、アクセス要求と、プロセッサ１１ｃが計測した進捗度とを受信する。かかる場合、アービタ１４ａは、プロセッサ１１の進捗度とプロセッサ１１ｃの進捗度とを比較する。
【００８９】
そして、アービタ１４ａは、比較の結果、プロセッサ１１ｃの進捗度の方が、プロセッサ１１の進捗度よりも値が小さい場合は、インターコネクトコントローラ１７ａに対して、アクセス権を取得した旨の通知を出力する。かかる場合、インターコネクトコントローラ１７ａは、プロセッサ１１ｃが発行した処理要求を、アービタ１４ａを介してメモリアクセスコントローラ１５に出力する。
【００９０】
かかる場合、メモリアクセスコントローラ１５は、メモリアクセスの結果を含む応答を生成し、生成した応答のあて先をプロセッサ１１ｃとして、インターコネクトコントローラ１７ａに出力する。その後、インターコネクトコントローラ１７ａは、受信した応答を情報処理装置１０ｄのインターコネクトコントローラ１７ｂに送信し、応答をプロセッサ１１ｃに送信させる。
【００９１】
また、アービタ１４ａは、各プロセッサ１１〜１３から情報処理装置１０ｄが管理する外部装置、例えば、メモリ２ａやＩ／Ｏ装置３ａに対する処理要求をインターコネクトコントローラ１７ａに出力する場合は、以下の処理を実行する。すなわち、アービタ１４ａは、処理要求をインターコネクトコントローラ１７ａに出力するとともに、処理要求の送信元となるプロセッサが計測した進捗度をインターコネクトコントローラ１７ａに出力する。
【００９２】
インターコネクトコントローラ１７ａは、アービタ１４ａから処理要求と、進捗度とを受信した場合は、受信した処理要求に進捗度を付加したパケットを生成し、生成したパケットを情報処理装置１０ｃまたは情報処理装置１０ｄに送信する。例えば、図８は、実施例２に係る情報処理装置が出力するパケットのフォーマットを説明する図である。
【００９３】
例えば、インターコネクトコントローラ１７ａは、図８に示すように、先頭から、パケットを識別するＩＤ（Identifier）、パケット種別、処理要求の送信先を示す宛先アドレスが格納されたパケットを生成する。また、インターコネクトコントローラ１７ａは、処理要求の送信元となるプロセッサを示す要求元アドレス、処理要求の送信元となるプロセッサが計測した進捗度、処理要求のデータが格納されたパケットを生成する。そして、インターコネクトコントローラ１７ａは、パケットに格納された宛先アドレスに応じて、生成したパケットを情報処理装置１０ｃ、１０ｄに送信する。
【００９４】
また、インターコネクトコントローラ１７ａは、他の情報処理装置１０ｃ、１０ｄからパケットを受信した場合は、パケットに格納された各種データから処理要求を生成するとともに、パケットに格納された進捗度を抽出する。また、インターコネクトコントローラ１７ａは、アービタ１４ａに対し、アクセス要求と抽出した進捗度とを出力する。そして、インターコネクトコントローラ１７ａは、アクセス権を取得した旨の通知をアービタ１４ａから受信した場合は、生成した処理要求をアービタ１４ａに出力する。
【００９５】
上述したように、情報処理装置１０ｂは、他の情報処理装置１０ｃ、１０ｄが有するプロセッサからのアクセス要求を調停する場合にも、アクセス要求の送信元となるプロセッサの処理進捗度に応じて、アクセス要求の調停を行うことができる。このため、並列計算機システム１ａは、１つのジョブを分割した分割処理をプロセッサ１１〜１３、１１ｃ〜１３ｃに実行させる場合にも、各プロセッサ１１〜１３、１１ｃ〜１３ｃが分割処理を完了する時間を揃えることができる。この結果、並列計算機システム１ａは、並列処理の処理性能をさらに向上させることができる。
【００９６】
なお、上述した例では、処理要求と進捗度とが格納されたパケットを受信したインターコネクトコントローラ１７ａが、パケットに格納された進捗度とアクセス要求とをアービタ１４ａに出力した。しかしながら、実施例は、これに限定されるものではない。例えば、各プロセッサ１１〜１３、１１ｃ〜１３ｃ、インターコネクトコントローラ１７ａ、１７ｂは、図８に示すパケット形式の処理要求をアービタ１４ａ、１４ｂに出力する。かかる場合、アービタ１４ａ、１４ｂは、受信したパケットのうち、格納された進捗度の値が小さいパケットから出力することで、処理要求を直接調停してもよい。
【００９７】
［情報処理装置１０ｂの効果］
上述したように、情報処理装置１０ｂは、他の情報処理装置１０ｃ、１０ｄが管理する外部装置に対するアクセス要求の調停を行う。そして、情報処理装置１０ｂは、他の情報処理装置１０ｃ、１０ｄへアクセス要求を送信する場合は、アクセス要求の送信元となるプロセッサが計測した進捗度を、処理要求とともに送信する。このため、情報処理装置１０ｂは、他の情報処理装置１０ｃ、１０ｄに、情報処理装置１０ｂが有するプロセッサ１１〜１３の進捗度に応じた調停を実行させることができる。このため、並列計算機システム１ａは、１つのジョブを分割して情報処理装置１０ｂ〜１０ｄに実行させる場合にも、各プロセッサ１１〜１３、１１ｃ〜１３ｃが分割処理を完了する時間を揃えるので、並列処理の処理性能をさらに向上させることができる。
【実施例３】
【００９８】
これまで本発明の実施例について説明したが実施例は、上述した実施例以外にも様々な異なる形態にて実施されてよいものである。そこで、以下では実施例３として本発明に含まれる他の実施例を説明する。
【００９９】
（１）進捗度の測定について
上述した情報処理装置１０は、各プロセッサ１１〜１３が、進捗度を測定する計測回路１１ａ〜１３ａを有していた。しかしながら、実施例はこれに限定されるものではない。例えば、情報処理装置１０は、各プロセッサ１１〜１３が実行する処理の進捗度を測定する計測回路を、各プロセッサ１１〜１３の外部に配置してもよい。
【０１００】
例えば、図９は、情報処理装置のハードウェア構成のバリエーションを説明する図である。なお、図９に示すハードウェア構成のうち、図１に示すハードウェア構成と同様の機能を発揮するハードウェア構成については、同一の符号を付し、説明を省略する。例えば、並列計算機システム１ｂは、情報処理装置１０に代えて、情報処理装置１０ｅを有する。また、情報処理装置１０ｅは、プロセッサ１１〜１３に代えて、プロセッサ１１ｄ〜１３ｄを有し、さらに、各プロセッサ１１ｄ〜１３ｄとアービタ１４とに接続された計測回路２１を有する。
【０１０１】
ここで、各プロセッサ１１ｄ〜１３ｄは、演算回路１１ｂ〜１３ｂのみを有するプロセッサである。また、計測回路２１は、計測回路１１ａ〜１３ａと同様に、各プロセッサ１１ｄ〜１３ｄが有する演算回路１１ｂ〜１３ｂが実行する分割処理の進捗度を測定する。例えば、計測回路２１は、進捗度として、各演算回路１１ｂ〜１３ｂのローカルタイムを測定する。そして、計測回路２１は、計測した各進捗度をアービタ１４に出力する。
【０１０２】
なお、計測回路２１は、各演算回路１１ｂ〜１３ｂのローカルタイムと情報処理装置１０ｅのクロック信号に基づくグローバルタイムとの差分を各プロセッサ１１ｄ〜１３ｄの進捗度として算出してもよい。また、計測回路２１は、各演算回路１１ｂ〜１３ｂのローカルタイムの平均値と、各演算回路１１ｂ〜１３ｂのローカルタイムとの差分を各プロセッサ１１ｄ〜１３ｄの進捗度として算出してもよい。
【０１０３】
また、計測回路２１は、アービタ１４が内蔵しても良い。すなわち、各プロセッサ１１ｄ〜１３ｄが実行する分割処理の進捗を計測することができるのであれば、各計測回路１１ａ〜１３ａ、２１は、任意の位置に配置することができる。
【０１０４】
このように、情報処理装置１０ｅは、複数のプロセッサ１１ｄ〜１３ｄと、各プロセッサ１１ｄ〜１３ｄが実行する処理の進捗を示す進捗度をそれぞれ計測する計測回路２１とを有する。そして、情報処理装置１０ｅは、計測回路２１が計測した進捗度に基づいて、各プロセッサ１１ｄ〜１３ｄのアクセス要求の調停を行う。このため、情報処理装置１０ｅは、各プロセッサ１１ｄ〜１３ｄが実行する分割処理の進捗を揃える結果、並列計算処理の性能を向上させることができる。
【０１０５】
また、情報処理装置１０ｅは、各プロセッサ１１ｄ〜１３ｄから独立した計測回路２１を有する。このため、情報処理装置１０ｅは、情報処理装置１０ｅの動作クロックで各プロセッサ１１ｄ〜１３ｄが実行する分割処理の進捗度を測定できる。この結果、情報処理装置１０ｅは、各プロセッサ１１ｄ〜１３ｄの動作クロックの周波数がそれぞれ異なる場合にも、各プロセッサ１１ｄ〜１３ｄが実行する分割処理の進捗度を、適切に測定することができる。
【０１０６】
（２）進捗度について
上述した計測回路１１ａは、演算回路１１ｂが単位処理を完了する度にインクリメントされる値を進捗度として計測した。しかしながら、実施例は、これに限定されるものではない。すなわち、計測回路１１ａは、各プロセッサ１１〜１３が処理すべき計算処理量のうち、既に処理が終了している割合を各プロセッサ１１〜１３間で相対的に比較できるのであれば、任意の値を進捗度とすることができる。
【０１０７】
例えば、計測回路１１ａは、演算回路１１ｂが実行する分割処理を完了するために実行される全計算回数のうち、実際に演算回路１１ｂが実行した計算回数の割合を進捗度として測定してもよい。例えば、あるタスクを複数のプロセッサに並列実行させる場合は、コンパイラ等のソフトウェアがタスクの分割を実行する。かかる場合、分割された各スレッドやプロセス等、各プロセッサに割当てられる分割処理を完了させるための全計算回数を、ソフトウェアが計測回路１１ａに通知する。そして、計測回路１１ａは、通知された全計算回数のうち、実際に演算回路１１ｂが実行した計算回数の割合を進捗度として測定してもよい。
【０１０８】
また、計測回路１１ａは、演算回路１１ｂが計算処理を実行するクロックサイクルでは、進捗度のカウントを停止し、演算回路１１ｂが外部アクセスを行う場合等、計算処理を実行しないクロックサイクルでは、進捗度のカウントを実行してもよい。また、計測回路１１ａは、アービタ１４へのアクセス要求発行時に進捗度のカウントを開始し、アービタ１４がアクセス要求を受理した際、外部装置への処理が開始された際、若しくは応答を受信するまでの間、進捗度のカウントを行っても良い。
【０１０９】
かかる処理を実行した場合、計測回路１１ａは、計算量よりも外部アクセス量が少ない分割処理を演算回路１１ｂが実行する際は、進捗度の桁数が少なくなるので、計測回路１１ａは、回路規模を減少させることができる。なお、かかる処理を実行した場合は、処理が遅れているプロセッサほど進捗度の値が大きくなるので、アービタ１４は、アクセス要求の送信元となるプロセッサのうち、進捗度の値が最も大きいプロセッサからの処理要求を発行する。
【０１１０】
（３）アービタについて
上述したアービタ１４は、アクセス要求の送信元となる複数のプロセッサの進捗度が同一となる場合は、ラウンドロビンやＬＲＵの調停を行った。しかしながら、実施例は、これに限定されるものではない。例えば、アービタ１４は、通信時の遅延を考慮し、他の情報処理装置１０ａに対するアクセス要求を優先してもよい。また、アービタ１４は、インターコネクトコントローラ１７が通信網上に輻輳などの理由で長時間滞留していたパケットを受信した場合は、インターコネクトコントローラ１７からのアクセス要求を優先してもよい。
【０１１１】
（４）インターコネクトコントローラについて
上述したインターコネクトコントローラ１７ａは、処理要求の送信元となるプロセッサの進捗度をパケットに格納した。しかしながら、実施例はこれに限定されるものではない。例えば、インターコネクトコントローラ１７ａは、通信網上に輻輳などの理由でパケットを一定時間キャッシュした場合は、キャッシュしたパケットに格納された進捗度から所定の値を減算することで、優先的に処理が実行されるようにしてもよい。すなわち、インターコネクトコントローラ１７ａは、パケットが送信されなかった時間に応じて、パケットに格納された処理要求の優先度を向上させてもよい。
【０１１２】
（５）その他
なお、並列計算機システム１は、上述した情報処理装置１０、１０ａ〜１０ｅを任意の組合わせて有しても良い。また、並列計算機システム１は、情報処理装置１０、１０ａ〜１０ｅが有する機能を矛盾しない範囲で組合わせて発揮できるようにしてもよい。
【符号の説明】
【０１１３】
１、１ａ、１ｂ  並列計算機システム
２、２ａ  メモリ
３、３ａ  Ｉ／Ｏ装置
４  管理装置
１０、１０ａ〜１０ｅ  情報処理装置
１１〜１３、１１ｃ〜１３ｃ  プロセッサ
１１ａ〜１３ａ  計測回路
１１ｂ〜１３ｂ  演算回路
１４、１４ａ、１４ｂ  アービタ
１５、１５ａ  メモリアクセスコントローラ
１６、１６ａ  外部バスコントローラ
１７、１７ａ、１７ｂ  インターコネクトコントローラ
１８  カウンタ
１９  インクリメンタ
２０  マルチプレクサ
３０、３０ａ、３０ｂ  調停回路
３７  進捗度比較回路
【図１】
2015069576.tif 000003
【図２】
2015069576.tif 000004
【図３】
2015069576.tif 000005
【図４】
2015069576.tif 000006
【図５】
2015069576.tif 000007
【図６】
2015069576.tif 000008
【図７】
2015069576.tif 000009
【図８】
2015069576.tif 000010
【図９】
2015069576.tif 000011