以下、実施形態について、図面を用いて説明する。
図1は、情報処理装置、情報処理方法および情報処理プログラムの一実施形態を示す。図1に示す情報処理装置10は、サーバ等である。例えば、情報処理システムは、サーバ等の情報処理装置10を有する。
情報処理装置10は、例えば、CPU(Central Processing Unit)等のプロセッサ100、メモリ110、再構成回路200および書き換え部300を有する。プロセッサ100、メモリ110および再構成回路200は、バス120に接続される。そして、情報処理装置10は、複数のステージを含むパイプラインによるパイプライン処理を、再構成回路200を用いて実行する。
例えば、プロセッサ100は、メモリ110に格納される情報処理プログラムを実行し、情報処理装置10の動作を制御する。なお、情報処理プログラムは、情報処理装置10の記憶装置のうちのメモリ110以外の記憶装置に格納されてもよく、情報処理装置10の外部の記憶装置に格納されてもよい。また、情報処理プログラムは、CD−ROM(Compact Disc Read Only Memory)、DVD(Digital Versatile Disc)、USB(Universal Serial Bus)メモリ等のコンピュータにより読み取り可能な記録媒体20に格納されてもよい。この場合、記録媒体20に格納された情報処理プログラムは、情報処理装置10に設けられる図示しない入出力インタフェースを介して記録媒体20からメモリ110等に転送される。なお、情報処理プログラムは、記録媒体20から図示しないハードディスクに転送された後、ハードディスクからメモリ110に転送されてもよい。
再構成回路200は、例えば、論理回路を動的に書き換え可能なFPGA等である。例えば、再構成回路200は、論理回路を書き換え可能な複数の回路領域R(R1、R2、R3、R4、R5、R6)を有する。なお、回路領域Rの数は、6つに限定されない。
各回路領域Rの論理回路は、書き換え部300により、書き換えられる。図1に示す例では、書き換え部300は、回路領域R1、R2、R3の各々に、処理決定部210、入力制御部220および待機バッファ部230として機能する論理回路をそれぞれ書き込む。これにより、再構成回路200は、処理決定部210、入力制御部220および待機バッファ部230を有する。また、書き換え部300は、回路領域R4、R5、R6を含む回路領域群に、論理回路240を書き込む。なお、論理回路240は、再構成回路200内の他の回路の動作中に動作していない回路領域Rの論理回路を変更する動的再構成により、再構成される論理回路である。図1に示す例では、論理回路240は、図2に示す処理Baを実行する論理回路240Baおよび処理Bbを実行する論理回路240Bbのいずれかに再構成される。なお、再構成される論理回路240Bの数は、2つに限定されない。
処理決定部210は、複数の処理(例えば、図2に示す処理Ba、Bb)のうちのいずれの処理を実行するかを決定する。そして、処理決定部210は、決定した処理で使用される処理データを入力制御部220に出力する。入力制御部220は、処理決定部210により決定された処理を実行する論理回路240が再構成回路200に書き込まれていない場合、処理決定部210から受ける新規の処理データを待機バッファ部230に格納する。これにより、処理決定部210により決定された処理は、実行待ちの処理として待機する。すなわち、待機バッファ部230は、処理決定部210により決定された処理のうちの実行待ちの処理で使用される処理データを保持する。
なお、情報処理装置10の構成は、図1に示す例に限定されない。例えば、再構成回路200には、処理決定部210、入力制御部220、待機バッファ部230および論理回路240以外の回路(例えば、論理回路240の処理結果を使用する論理回路等)がさらに書き込まれてもよい。
図2は、図1に示した情報処理装置10の動作の概要を示す。なお、図2に示すかぎ括弧内には、入力制御部220および待機バッファ部230が情報処理装置10から省かれた従来の情報処理装置の動作の概要を示す。
図2に示す動作では、再構成回路200は、処理Aを実行するAステージと処理Bを実行するBステージとを有するパイプラインによるパイプライン処理を実行する。処理Aは、複数の処理B(Ba、Bb)のうちのいずれの処理Bを実行するかを決定する処理である。なお、図2では、複数回実行される処理Aを区別するために、符号の末尾に数字(1、2、3、4、5、6)を付している。同様に、複数回実行される処理Baを区別するために、符号の末尾に数字(1、3、5)を付し、複数回実行される処理Bbを区別するために、符号の末尾に数字(2、4、6)を付している。処理A、Ba、Bbの符号の末尾の数字は、パイプラインへの投入順を示す。
処理サイクルCYC1では、処理決定部210は、複数の処理B(Ba、Bb)のうちの処理Ba1をBステージで実行する処理Bに決定し、処理Ba1で使用する処理データを入力制御部220に出力する。これにより、入力制御部220は、処理Ba1で使用される処理データを新規の処理データとして処理決定部210から受ける。
なお、図2では、論理回路240は、処理サイクルCYC1が開始する前に、論理回路240Ba、240Bbのうち、処理Baを実行する論理回路240Baに構成される。図1に示した例では、論理回路240Baは、回路領域R4、R5、R6を含む回路領域群に書き込まれる。この場合、論理回路240Bbを書き込むための回路領域Rの空きが不足する。このため、論理回路240Ba、240Baの一方が再構成回路200に書き込まれる。
処理サイクルCYC2では、入力制御部220は、処理決定部210により決定された処理Ba1を、再構成回路200に書き込まれている現状の論理回路240Baに実行させる。例えば、入力制御部220は、処理決定部210から受けた新規の処理データ(処理Ba1で使用される処理データ)を現状の論理回路240Baに転送して、処理Ba1を現状の論理回路240Baに実行させる。また、処理サイクルCYC2では、処理決定部210は、複数の処理B(Ba、Bb)のうちの処理Bb2をBステージで実行する処理Bに決定し、処理Bb2で使用する処理データを入力制御部220に出力する。
処理サイクルCYC3では、再構成回路200に書き込まれている現状の論理回路240Baは、処理決定部210により決定された処理Bb2を実行する論理回路240Bbと異なる。このため、入力制御部220は、処理決定部210から受けた新規の処理データ(処理Bb2で使用される処理データ)を待機バッファ部230に格納し、処理Bb2の実行を待機させる。したがって、処理サイクルCYC3では、論理回路240Baは、処理Bb2を実行しない。
このように、入力制御部220は、処理決定部210により決定された処理Bb2を実行する論理回路240Bbが再構成回路200に書き込まれていない場合、処理決定部210から受ける新規の処理データを待機バッファ部230に格納する。そして、入力制御部220は、処理決定部210により決定された処理Bb2を実行待ちの処理Bb2として待機させる。
ここで、図2に示す例では、待機バッファ部230の記憶領域のサイズは、3つの処理データを記憶するサイズである。この場合、例えば、待機バッファ部230に新規の処理データを格納する空きがあるかを判定する際に使用する第1判定値が、待機バッファ部230が保持可能な処理データの数(“3”)より1つ少ない数(“2”)に予め設定される。処理サイクルCYC3では、待機バッファ部230は、処理Bb2で使用される1つの処理データを保持する。すなわち、待機バッファ部230に保持される処理データの数は、第1判定値(“2”)未満である。したがって、待機バッファ部230は、新規の処理データを格納する空きを有する。このため、論理回路240の書き換えは実行されない。
また、処理サイクルCYC3では、処理決定部210は、複数の処理B(Ba、Bb)のうちの処理Ba3をBステージで実行する処理Bに決定し、処理Ba3で使用する処理データを入力制御部220に出力する。
処理サイクルCYC4では、入力制御部220および処理決定部210は、処理サイクルCYC2と同様な動作を実行する。例えば、入力制御部220は、処理決定部210により決定された処理Ba3を、現状の論理回路240Baに実行させる。また、処理決定部210は、複数の処理B(Ba、Bb)のうちの処理Bb4をBステージで実行する処理Bに決定し、処理Bb4で使用する処理データを入力制御部220に出力する。
処理サイクルCYC5では、入力制御部220および処理決定部210は、処理サイクルCYC3と同様な動作を実行する。例えば、入力制御部220は、処理決定部210から受けた新規の処理データ(処理Bb4で使用される処理データ)を待機バッファ部230に格納し、処理Bb4の実行を待機させる。これにより、待機バッファ部230は、処理Bb4で使用される処理データと処理Bb2で使用される処理データとを保持する。
また、処理決定部210は、複数の処理B(Ba、Bb)のうちの処理Ba5をBステージで実行する処理Bに決定し、処理Ba5で使用する処理データを入力制御部220に出力する。処理Ba5は次の処理サイクルCYC6で実行されるため、処理サイクルCYC6においても待機バッファ部230に保持される処理データの数は、第1判定値(“2”)と同じ数に維持され、第1判定値を超えない。このため、論理回路240の書き換えは実行されない。なお、第1判定値と同じ数の処理データの量の合計は、例えば、第1所定量に対応する。
処理サイクルCYC6では、入力制御部220および処理決定部210は、処理サイクルCYC4と同様な動作を実行する。例えば、入力制御部220は、処理決定部210により決定された処理Ba5を、現状の論理回路240Baに実行させる。
また、処理決定部210は、複数の処理B(Ba、Bb)のうちの処理Bb6をBステージで実行する処理Bに決定し、処理Bb6で使用する処理データを入力制御部220に出力する。処理Bb6で使用される処理データは、処理Bb6が次の処理サイクルCYC7で実行されないため、処理サイクルCYC7において待機バッファ部230に格納される。このため、書き換え部300は、待機バッファ部230に保持される処理データの数が処理サイクルCYC7において第1判定値(“2”)を超えると判定する。すなわち、書き換え部300は、待機バッファ部230に保持される処理データの量が第1所定量を超えると判定する。そして、書き換え部300は、論理回路240Baを実行待ちの各処理Bb2、Bb4、Bb6を実行する論理回路240Bbに書き換える処理を、処理サイクルCYC7から開始する。
処理サイクルCYC7では、入力制御部220は、処理決定部210から受けた新規の処理データ(処理Bb6で使用される処理データ)を待機バッファ部230に格納し、処理Bb6の実行を待機させる。これにより、待機バッファ部230は、処理Bb2、Bb4、Bb6の各々で使用される3つの処理データを保持する。また、書き換え部300は、上述したように、論理回路240Baを実行待ちの各処理Bb2、Bb4、Bb6を実行する論理回路240Bbに書き換える処理を開始する。
このように、書き換え部300は、待機バッファ部230に保持される処理データの量が第1所定量を超える場合、再構成回路200に書き込まれている現状の論理回路240を書き換える。例えば、書き換え部300は、現状の論理回路240Baを、待機バッファ部230に保持された複数の処理データの各々を使用する複数の実行待ちの処理Bb2、Bb4、Bb6のいずれかを実行する論理回路240Bbに書き換える。
処理サイクルCYC8では、書き換え部300は、論理回路240Baを論理回路240Bbに書き換える処理を継続する。図2に示す例では、論理回路240の再構成に要する処理サイクルCYCの数は、2サイクル(例えば、処理サイクルCYC7、CYC8の2サイクル)である。なお、論理回路240の再構成に要する処理サイクルCYCの数は、2サイクルに限定されない。
処理サイクルCYC9では、再構成回路200に書き込まれている現状の論理回路240は、各処理Bb2、Bb4、Bb6を実行する論理回路240Bbである。このため、入力制御部220は、実行待ちの処理Bb2、Bb4、Bb6のうち、Bステージで実行する処理Bに決定されてからの待機時間が最も長い処理Bb2を、現状の論理回路240Bbに実行させる。例えば、入力制御部220は、処理Bb2で使用される処理データを待機バッファ部230から現状の論理回路240Bbに転送して、処理Bb2を現状の論理回路240Bbに実行させる。これにより、処理Bb2で使用される処理データが待機バッファ部230から削除される。
処理サイクルCYC10では、入力制御部220は、実行待ちの処理Bb4、Bb6のうち、Bステージで実行する処理Bに決定されてからの待機時間が最も長い処理Bb4を、現状の論理回路240Bbに実行させる。例えば、入力制御部220は、処理Bb4で使用される処理データを待機バッファ部230から現状の論理回路240Bbに転送して、処理Bb4を現状の論理回路240Bbに実行させる。これにより、処理Bb4で使用される処理データが待機バッファ部230から削除される。
処理サイクルCYC11では、入力制御部220は、実行待ちの処理Bb6を現状の論理回路240Bbに実行させる。例えば、入力制御部220は、処理Bb6で使用される処理データを待機バッファ部230から現状の論理回路240Bbに転送して、処理Bb6を現状の論理回路240Bbに実行させる。これにより、待機バッファ部230に保持された処理データが無くなり、処理Aを6回実行する場合の情報処理装置10の動作は、終了する。このように、図2に示す動作では、最初の処理A1を実行してから、最後の処理A6で決定した処理Bb6が終了するまでに要する処理サイクルCYCの数は、11サイクルである。
ここで、例えば、入力制御部220および待機バッファ部230が情報処理装置10から省かれた従来の情報処理装置では、図2のかぎ括弧内に示すように、処理Baと処理Bbとが交互に実行される。このため、処理Ba1、Bb2、Ba3、Bb4、Ba5の各々が終了する度に、論理回路240の書き換えが発生する。この場合、動的再構成の回数(論理回路240の書き換え回数)は、5回であり、情報処理装置10に比べて4回増加する。論理回路240の書き換えが5回実行される場合、最初の処理A1を実行してから、最後の処理A6で決定した処理Bb6が終了するまでに要する処理サイクルCYCの数は、17サイクルであり、情報処理装置10に比べて6サイクル増加する。
これに対し、情報処理装置10では、現状の論理回路240で実行できない処理Bで使用される処理データを入力制御部220が受ける度に論理回路240を書き換えるわけではない。すなわち、情報処理装置10では、現状の論理回路240で実行できない処理BをBステージで実行する処理Bに決定される度に論理回路240を書き換えるわけではない。このため、情報処理装置10では、複数の処理Ba、Bbを実行する際の動的再構成の回数の増加を従来に比べて抑制することができる。この結果、情報処理装置10では、複数の処理Bを実行するのに要する処理サイクルCYCの数の増加を従来に比べて抑制することができる。
なお、再構成回路200により実行される処理は、パイプライン処理に限定されない。また、図2に示す例では、書き換え部300は、論理回路240の書き換えを実行することを処理サイクルCYC6で決定しているが、論理回路240の書き換えを実行することを処理サイクルCYC7中に決定してもよい。例えば、書き換え部300は、各処理サイクルCYCにおいて、処理データが待機バッファ部230に格納されるタイミングおよび処理Bが開始されるタイミングより後のタイミングで、待機バッファ部230に保持された処理データの数を参照してもよい。そして、書き換え部300は、待機バッファ部230に保持された処理データの数が第1判定値を超えたか否かを判定し、待機バッファ部230に保持された処理データの数が第1判定値を超えた場合、論理回路240の書き換えを実行してもよい。
図3は、図1に示した情報処理装置10の動作の一例を示す。図3に示す動作は、論理回路を書き換え可能な再構成回路を有する情報処理装置による情報処理方法および情報処理装置の動作を制御する情報処理プログラムの一態様である。なお、図3に示す動作は、処理AがAステージに投入される場合の情報処理装置10の動作を示す。例えば、ステップS110、S120、S130の処理は、ステップS100の処理が実行された処理サイクルCYCに実行される。また、ステップS210、S212、S220、S230、S232の処理は、ステップS100の処理が実行された処理サイクルCYCの次の処理サイクルCYCに実行される。
ステップS100では、処理決定部210は、複数の処理Bのうち、Bステージで実行する処理Bを決定し、決定した処理Bで使用する処理データを入力制御部220に転送する。
次に、ステップS110では、入力制御部220は、再構成回路200に書き込まれている現状の論理回路240で実行する処理Bが待機中か否かを判定する。例えば、入力制御部220は、現状の論理回路240で実行可能な処理Bで使用される処理データが待機バッファ部230に保持されているか否かを判定する。現状の論理回路240で実行する処理Bが待機中の場合、情報処理装置10の動作は、ステップS210に移る。一方、現状の論理回路240で実行する処理Bが待機中でない場合、情報処理装置10の動作は、ステップS120に移る。
ステップS120では、入力制御部220は、処理決定部210により決定された処理B(ステップS100で決定した処理B)が現状の論理回路240で実行する処理Bか否かを判定する。処理決定部210により決定された処理Bが現状の論理回路240で実行する処理Bの場合、情報処理装置10の動作は、ステップS220に移る。一方、処理決定部210により決定された処理Bが現状の論理回路240で実行する処理Bでない場合、情報処理装置10の動作は、ステップS130に移る。
ステップS130では、書き換え部300は、待機バッファ部230に保持される処理データの量が第1所定量を超えるか否かを判定する。例えば、書き換え部300は、ステップS130の開始時点で待機バッファ部230に保持されている処理データの数が第1判定値と同じ数である場合、待機バッファ部230に保持される処理データの数が次の処理サイクルCYCで第1判定値を超えると判定する。第1判定値は、図2で説明したように、第1所定量に対応する処理データの数である。待機バッファ部230に保持される処理データの量が第1所定量を超える場合、情報処理装置10の動作は、ステップS230に移る。一方、待機バッファ部230に保持される処理データの量が第1所定量を超えない場合、情報処理装置10の動作は、ステップS232に移る。
ステップS210では、現状の論理回路240は、現状の論理回路240で実行可能な実行待ちの処理Bを実行する。例えば、入力制御部220は、待機バッファ部230に保持されている処理データのうち、現状の論理回路240で実行可能な処理Bで使用される処理データを現状の論理回路240に転送し、実行待ちの処理Bを現状の論理回路240に実行させる。
次に、ステップS212では、入力制御部220は、処理決定部210から受けた新規の処理データ(ステップS100で決定した処理Bで使用される処理データ)を待機バッファ部230に格納する。
ステップS220では、現状の論理回路240は、処理決定部210により決定された処理B(ステップS100で決定した処理B)を実行する。例えば、入力制御部220は、処理決定部210から受けた新規の処理データを現状の論理回路240に転送し、新規の処理データを使用する処理Bを現状の論理回路240に実行させる。
ステップS230では、書き換え部300は、再構成回路200に書き込まれている現状の論理回路240を複数の実行待ちの処理Bのいずれかを実行する論理回路240に書き換える。例えば、書き換え部300は、複数の実行待ちの処理Bのうち、Bステージで実行する処理Bに決定されてからの待機時間が最も長い処理Bを特定し、特定した処理Bを実行する論理回路240に現状の論理回路240を書き換える。
次に、ステップS232では、入力制御部220は、ステップS212の処理と同様に、処理決定部210から受けた新規の処理データ(ステップS100で決定した処理Bで使用される処理データ)を待機バッファ部230に格納する。
なお、情報処理装置10の動作は、図3に示す例に限定されない。例えば、ステップS210、S212の各々の処理を開始する順番は、図3に示した順番と逆でもよい。また、例えば、ステップS210、S212各々の処理は、並列に実行されてもよい。
また、例えば、全ての処理AがAステージに投入された後の情報処理装置10の動作は、図3に示す動作からステップS100、S120、S212、S130、S220、S232が省かれる。例えば、現状の論理回路240で実行する処理Bが待機中の場合、ステップS210の処理が実行され、現状の論理回路240で実行する処理Bが待機中でない場合、ステップS230の処理が実行される。
以上、図1から図3に示す実施形態では、現状の論理回路240で実行できない処理BをBステージで実行する処理Bに決定される度に論理回路240を書き換える場合に比べて、論理回路240の書き換え回数を削減することができる。すなわち、論理回路を書き換え可能な再構成回路200で複数の処理Bを実行する際の動的再構成の回数の増加を抑制することができる。
これにより、情報処理装置10の性能を向上させることができる。特に、論理回路240の書き換えに要する時間が、論理回路240が処理Bを実行する時間に比べて大きい場合、論理回路240の書き換え回数を削減することによる情報処理装置10の性能向上の効果は、大きくなる。
図4は、情報処理装置、情報処理方法および情報処理プログラムの別の実施形態を示す。図1から図3で説明した要素と同一または同様の要素については、同一または同様の符号を付し、これ等については、詳細な説明を省略する。図4に示す情報処理装置12は、サーバ等である。例えば、情報処理システムは、サーバ等の情報処理装置12を有する。
情報処理装置12は、例えば、CPU等のプロセッサ100、メモリ110、再構成回路202および書き換え部302を有し、再構成回路202を用いてパイプライン処理を実行する。プロセッサ100、メモリ110および再構成回路202は、バス120に接続される。例えば、プロセッサ100は、メモリ110に格納される情報処理プログラムを実行し、情報処理装置12の動作を制御する。
再構成回路202は、例えば、論理回路を動的に書き換え可能なFPGA等である。例えば、再構成回路202は、論理回路を書き換え可能な複数の回路領域R(R1、R2、R3、R4、R5、R6、R7、R8、R9)を有する。なお、回路領域Rの数は、9つに限定されない。
各回路領域Rの論理回路は、書き換え部302により、書き換えられる。図4に示す例では、書き換え部302は、回路領域R1、R4を含む回路領域群に処理決定部212として機能する論理回路を書き込む。また、書き換え部302は、回路領域R2、R3、R6の各々に、入力制御部222、待機バッファ部232および判定部280として機能する論理回路をそれぞれ書き込み、回路領域R7に論理回路270を書き込む。さらに、書き換え部302は、回路領域R5、R6、R8、R9を含む回路領域群に、論理回路242を書き込む。論理回路242は、動的再構成により再構成される論理回路である。例えば、再構成回路202が図5に示すプログラムを実行する場合、論理回路242は、処理Ba、Bb、・・・、Bnをそれぞれ実行する論理回路242Ba、242Bb、・・・、242Bnのいずれかに再構成される。なお、再構成される論理回路242Bの数は、図4に示す例に限定されない。
このように、図4に示す再構成回路202は、処理決定部212、入力制御部222、待機バッファ部232、論理回路242、270および判定部280を有する。
処理決定部212は、図1に示した処理決定部210と同一または同様である。例えば、処理決定部212は、複数の処理(例えば、図5に示す処理Ba、Bb、・・・、Bn)のうちのいずれの処理を実行するかを決定する。そして、処理決定部212は、決定した処理で使用される処理データPDTjと、決定した処理を示す実行パス情報PINFjとを入力制御部222に出力する。
入力制御部222は、図1に示した入力制御部220と同一または同様である。例えば、入力制御部222は、処理決定部212により決定された処理を実行する論理回路242が再構成回路202に書き込まれていない場合、処理決定部212から受ける新規の処理データPDTjと実行パス情報PINFjを待機バッファ部232に格納する。これにより、処理決定部212により決定された処理は、実行待ちの処理として待機する。また、入力制御部222は、処理決定部212から受けた処理データPDTの受付順を示す順番情報NINFを、処理データPDTjおよび実行パス情報PINFjに対応付けて待機バッファ部232に格納する。
図4に示す例では、処理決定部212により決定された処理を実行する論理回路242が再構成回路202に書き込まれているか否かの判定は、判定部280により実行される。そして、入力制御部222は、処理決定部212により決定された処理を実行する論理回路242が再構成回路202に書き込まれていない場合、処理データPDTj等の待機バッファ部232への格納を要求する格納要求BUFINを判定部280から受ける。これにより、入力制御部222は、処理決定部212により決定された処理を実行する論理回路242が再構成回路202に書き込まれていない場合、処理データPDTj等を待機バッファ部232に格納する。なお、入力制御部222は、処理決定部212により決定された処理を実行する論理回路242が再構成回路202に書き込まれているか否かの判定を実行し、判定結果を判定部280に通知してもよい。
待機バッファ部232は、図1に示した待機バッファ部230と同一または同様である。例えば、待機バッファ部232は、処理決定部212により決定された処理のうちの実行待ちの処理で使用される処理データPDTを保持する。なお、図4に示すかぎ括弧内には、待機バッファ部232に保持される情報の一例を示す。例えば、待機バッファ部232は、実行パス情報PINFw(PINFw1、PINFw2、・・・)、順番情報NINF(NINF1、NINF2、・・・)および処理データPDT(PDT1、PDT2、・・・)を保持する。
実行パス情報PINFwは、処理決定部212から入力制御部222に出力された実行パス情報PINFjのうち、入力制御部222から待機バッファ部232に転送された実行パス情報PINFである。図4では、複数の実行パス情報PINFwを区別するために、符号の末尾に数字(1、2、・・・)を付している。同様に、複数の順番情報NINFを区別するために、符号の末尾に数字(1、2、・・・)を付し、複数の処理データPDTを区別するために、符号の末尾に数字(1、2、・・・)を付している。実行パス情報PINFw、順番情報NINF、処理データPDTの符号の末尾の数字は、互いに対応している。
論理回路270は、論理回路242の次段の論理回路であり、論理回路242の処理結果を使用して所定の処理を実行する。
判定部280は、待機バッファ部232に保持される処理データPDTの量が第1所定量を超えるかを判定する第1判定部の一例である。例えば、判定部280は、論理回路242から受ける実行パス情報PINFi、待機バッファ部232から受けるオールモストフル情報AFL1等に基づいて、待機バッファ部232に保持される処理データPDTの量が第1所定量を超えるか否かを判定する。実行パス情報PINFiは、再構成回路202に書き込まれている現状の論理回路242で実行される処理を示す実行パス情報PINFである。また、オールモストフル情報AFL1は、待機バッファ部232に保持された処理データPDTの数が予め決められた第1判定値に達したことを示す情報である。例えば、論理1のオールモストフル情報AFL1は、待機バッファ部232に保持された処理データPDTの数が第1判定値以上であることを示す。また、論理0のオールモストフル情報AFL1は、待機バッファ部232に保持された処理データPDTの数が第1判定値未満であることを示す。
なお、第1判定値は、第1所定量に応じて、予め決められる。例えば、第1所定量が、実行パス情報PINFw、順番情報NINFおよび処理データPDTを含む1個の情報群のデータ量を(k−1)倍したデータ量である場合、第1判定値は、(k−1)に予め設定される。(k−1)に設定された第1判定値は、待機バッファ部232の記憶領域のサイズがk個の情報群を記憶するサイズの場合、待機バッファ部232が1個の情報群を記憶する空きを有することを示す。
例えば、判定部280は、待機バッファ部232が保持する処理データPDTの数が第1判定値以上で、待機バッファ部232が保持する処理データPDTの数が増える場合、待機バッファ部232が保持する処理データPDTの量が第1所定量を超えると判定する。なお、待機バッファ部232が保持する処理データPDTの数が増える場合とは、例えば、待機バッファ部232に処理データPDTjが格納され、かつ、待機バッファ部232に保持された処理データPDTが論理回路242に出力されない場合である。すなわち、処理決定部212により決定された処理を実行する論理回路と現状の論理回路242とが異なり、かつ、実行待ちの処理のいずれも現状の論理回路242で実行可能でない場合、待機バッファ部232に保持される処理データPDTの数は増加する。
このように、判定部280は、待機バッファ部232に保持される処理データPDTの量が第1所定量を超えるか否かを判定する。そして、判定部280は、例えば、待機バッファ部232に保持される処理データPDTの量が第1所定量を超える場合、論理回路242の書き換えを要求する書き換え要求CREQおよび実行パス情報PINFnextを書き換え部302に出力する。実行パス情報PINFnextは、書き換え後の論理回路242が実行する処理Bを示す実行パス情報PINFである。判定部280は、現状の論理回路242の書き換えを、実行パス情報PINFnextを用いて書き換え部302に要求した場合、実行パス情報PINFnextを実行パス情報PINFiとして保持してもよい。この場合、現状の論理回路242から判定部280に実行パス情報PINFiを転送する処理は、省かれてもよい。
また、判定部280は、処理決定部212により決定された処理を待機させる場合、処理決定部212から入力制御部222に転送された処理データPDTj等の待機バッファ部232への格納を要求する格納要求BUFINを、入力制御部222に出力する。
書き換え部302は、図1に示した書き換え部300と同一または同様である。例えば、書き換え部302は、判定部280の判定結果に基づいて、現状の論理回路242の書き換えを実行する。
なお、情報処理装置12の構成は、図4に示す例に限定されない。例えば、情報処理装置12は、判定部280として機能する論理回路を再構成回路202に書き込まずに、判定部280を再構成回路202の外部に有してもよい。
図5は、図4に示した再構成回路202が実行するパイプライン処理の一例を示す。図5に示すソースプログラムは、処理Aを実行するAステージと処理B(Ba、Bb、・・・、Bn)を実行するBステージと処理Cを実行するCステージとを有するパイプラインによるパイプライン処理を、再構成回路202に繰り返し実行させる。処理B(Ba、Bb、・・・、Bn)は、処理Aの分岐先の処理であり、処理Ba、Bb、・・・、Bnのいずれに分岐するかは、条件文によって決められる。
例えば、処理決定部212は、Aステージにおいて、処理の分岐先を判定する。すなわち、処理決定部212は、複数の処理Bのうちのいずれの処理Bを実行するかを決定する処理AをAステージで実行する。また、論理回路242は、処理Ba、Bb、・・・、Bnのいずれかの処理BをBステージで実行する。そして、論理回路270は、処理Bの処理結果を用いて、処理CをCステージで実行する。
なお、図5に示す例では、処理Ba、Bb、・・・、Bnの各々を実行する複数の論理回路242Bの1つが再構成回路202に書き込まれた場合、他の論理回路242Bを書き込むための回路領域Rの空きが不足する。このため、再構成回路202に書き込まれた論理回路242Bは、動的再構成により、処理Ba、Bb、・・・、Bnのいずれかの処理Bを実行する論理回路242B(242Ba、242Bb、・・・、242Bnのいずれか)に再構成される。論理回路242Bの再構成は、図4で説明したように、判定部280の判定結果に基づいて、書き換え部302により実行される。
図6は、図4に示した判定部280の動作の一例を示す。図6に示す動作は、論理回路を書き換え可能な再構成回路を有する情報処理装置による情報処理方法および情報処理装置の動作を制御する情報処理プログラムの一態様である。
ステップS310では、判定部280は、実行パス情報PINFjが無効値Zか否かを判定する。例えば、Aステージで処理Aが実行されない場合、すなわち、処理データPDTjが処理決定部212から入力制御部222に転送されない場合、実行パス情報PINFjは、無効値Zに設定される。実行パス情報PINFjが無効値Zの場合、判定部280の動作は、ステップS320に移る。一方、実行パス情報PINFjが無効値Zでない場合、すなわち、処理データPDTj等が処理決定部212から入力制御部222に転送される場合、判定部280の動作は、ステップS330に移る。
ステップS320では、判定部280は、再構成回路202に書き込まれている現状の論理回路242で実行される処理Bを示す実行パス情報PINFiが待機バッファ部232に保持されているか否かを判定する。例えば、判定部280は、待機バッファ部232に保持されている実行パス情報PINFwのいずれかと実行パス情報PINFiとが一致するか否かを判定する。
実行パス情報PINFiが待機バッファ部232に保持されている場合、すなわち、待機バッファ部232に保持されている実行パス情報PINFwのいずれかが実行パス情報PINFiに一致する場合、判定部280の動作は終了する。この場合、現状の論理回路242は、待機バッファ部232に保持されている実行パス情報PINFiwのうち、実行パス情報PINFiに一致する実行パス情報PINFiwが示す処理Bを実行する。
一方、実行パス情報PINFiが待機バッファ部232に保持されていない場合、すなわち、待機バッファ部232に保持されている実行パス情報PINFwのいずれも実行パス情報PINFiに一致しない場合、判定部280の動作は、ステップS322に移る。
ステップS322では、判定部280は、待機バッファ部232が空か否かを判定する。待機バッファ部232が空でない場合、すなわち、待機バッファ部232が少なくとも1つの処理データPDT等を保持している場合、判定部280は、ステップS350において、論理回路242の書き換えを書き換え部302に要求し、動作を終了する。一方、待機バッファ部232が空の場合、すなわち、待機バッファ部232が処理データPDT等を1つも保持していない場合、判定部280の動作は、論理回路242の書き換えを書き換え部302に要求することなく、終了する。
ステップS330では、判定部280は、ステップS320と同様に、再構成回路202に書き込まれている現状の論理回路242で実行される処理Bを示す実行パス情報PINFiが待機バッファ部232に保持されているか否かを判定する。実行パス情報PINFiが待機バッファ部232に保持されている場合、すなわち、待機バッファ部232に保持されている実行パス情報PINFwのいずれかが実行パス情報PINFiに一致する場合、判定部280の動作は、ステップS340に移る。
一方、実行パス情報PINFiが待機バッファ部232に保持されていない場合、すなわち、待機バッファ部232に保持されている実行パス情報PINFwのいずれも実行パス情報PINFiに一致しない場合、判定部280の動作は、ステップS332に移る。
ステップS332では、判定部280は、実行パス情報PINFiと実行パス情報PINFjとが異なるか否かを判定する。すなわち、判定部280は、処理決定部212から入力制御部222に転送される実行パス情報PINFjが示す処理Bを実行する論理回路242Bと現状の論理回路242とが異なるか否かを判定する。実行パス情報PINFiと実行パス情報PINFjとが異なる場合、判定部280の動作は、ステップS334に移る。
一方、実行パス情報PINFiと実行パス情報PINFjとが一致する場合、判定部280の動作は終了する。この場合、現状の論理回路242は、処理決定部212から入力制御部222に転送される実行パス情報PINFjが示す処理Bを実行する。
ステップS334では、判定部280は、処理決定部212から入力制御部222に転送された処理データPDTj等の待機バッファ部232への格納を、入力制御部222に要求する。例えば、判定部280は、処理決定部212から入力制御部222に転送された処理データPDTj等の待機バッファ部232への格納を要求する格納要求BUFINを、入力制御部222に出力する。これにより、入力制御部222は、実行パス情報PINFiと実行パス情報PINFjとが異なる場合、処理決定部212から受けた処理データPDTj等を待機バッファ部232に格納する。判定部280は、ステップS334の処理を実行した後、動作をステップS336に移す。
ステップS336では、判定部280は、オールモストフル情報AFL1が論理1か否かを判定する。すなわち、判定部280は、待機バッファ部232に保持された処理データPDTの数が第1判定値に達したか否かを判定する。オールモストフル情報AFL1が論理1の場合、判定部280は、ステップS350において、論理回路242の書き換えを書き換え部302に要求し、動作を終了する。一方、オールモストフル情報AFL1が論理0の場合、判定部280は、論理回路242の書き換えを書き換え部302に要求することなく、動作を終了する。
ステップS340では、判定部280は、ステップS334と同様に、処理決定部212から入力制御部222に転送された処理データPDTj等の待機バッファ部232への格納を、入力制御部222に要求する。なお、ステップS340の処理は、上述したように、待機バッファ部232に保持されている実行パス情報PINFwのいずれかが実行パス情報PINFiに一致する場合、実行される。例えば、待機バッファ部232に保持されている実行パス情報PINFwのいずれかが実行パス情報PINFiに一致する場合、実行パス情報PINFiに一致する実行パス情報PINFiwが示す処理Bが現状の論理回路242により実行される。このため、入力制御部222は、処理決定部212から受けた処理データPDTj等を待機バッファ部232に格納する。判定部280は、ステップS340の処理を実行した後、動作を終了する。
ステップS340の処理により、入力制御部222は、現状の論理回路242で実行可能な実行待ちの処理Bが存在する場合、処理決定部212により決定された処理Bを実行待ちの処理Bとして待機させる。そして、入力制御部222は、現状の論理回路242で実行可能な実行待ちの処理Bを現状の論理回路242に実行させる。
ステップS350では、判定部280は、上述したように、論理回路242の書き換えを書き換え部302に要求する。例えば、判定部280は、論理回路242の書き換えを要求する書き換え要求CREQおよび実行パス情報PINFnextを書き換え部302に出力する。判定部280は、ステップS350の処理を実行した後、動作を終了する。
図6に示す動作により、論理回路242の書き換えは、処理データPDTjが処理決定部212から入力制御部222に転送されない場合で、かつ、待機バッファ部232に保持された処理データPDT等が現状の論理回路242に出力されない場合に実行される。あるいは、論理回路242の書き換えは、オールモストフル情報AFL1が論理1で、かつ、待機バッファ部232に保持された処理データPDTの数が増える場合、実行される。なお、判定部280の動作は、図6に示す例に限定されない。
図7は、図4に示した判定部280の一例を示す。判定部280は、無効値判定部400、不一致検出回路410、不一致検出部420、論理積回路430、440、インバータ432、論理和回路450、470、否定論理和回路460および選択部480を有する。
無効値判定部400は、処理決定部212から入力制御部222に転送される実行パス情報PINFjを、処理決定部212から受ける。そして、無効値判定部400は、処理決定部212から受けた実行パス情報PINFjが無効値Zに設定されているか否かを判定し、判定結果を示す情報を論理積回路440および否定論理和回路460に出力する。例えば、無効値判定部400は、実行パス情報PINFjが無効値Zの場合、論理1の情報を論理積回路440および否定論理和回路460に出力し、実行パス情報PINFjが無効値Zでない場合、論理0の情報を論理積回路440および否定論理和回路460に出力する。
不一致検出回路410は、現状の論理回路242から受ける実行パス情報PINFiと処理決定部212から受ける実行パス情報PINFjとが異なるか否かを判定する。例えば、不一致検出回路410は、実行パス情報PINFiと実行パス情報PINFjとが異なる場合、論理1の不一致情報PDIFを論理積回路430および論理和回路470に出力する。また、不一致検出回路410は、実行パス情報PINFiと実行パス情報PINFjとが一致する場合、論理0の不一致情報PDIFを論理積回路430および論理和回路470に出力する。なお、不一致検出回路410は、実行パス情報PINFi、PINFjの少なくとも一方が無効値Zの場合、論理0の不一致情報PDIFを論理積回路430および論理和回路470に出力する。
なお、無効値判定部400および不一致検出回路410は、実行パス情報PINFjを処理決定部212から入力制御部222を介して受けてもよい。
不一致検出部420は、待機バッファ部232に保持されている実行パス情報PINFw(PINFw1、・・・、PINFwk)のいずれも実行パス情報PINFiに一致しないか否かを判定する。例えば、不一致検出部420は、待機バッファ部232に保持されている実行パス情報PINFwのいずれも実行パス情報PINFiに一致しない場合、論理1の情報NOUT1を論理積回路430、440および否定論理和回路460に出力する。また、不一致検出部420は、待機バッファ部232に保持されている実行パス情報PINFwのいずれかが実行パス情報PINFiに一致する場合、論理0の情報NOUT1を論理積回路430、440および否定論理和回路460に出力する。すなわち、不一致検出部420は、待機バッファ部232から処理データPDT等が出力されない場合、論理1の情報NOUT1を論理積回路430、440および否定論理和回路460に出力する。
例えば、不一致検出部420は、複数の一致検出回路420Aと否定論理和回路420Bとを有する。一致検出回路420Aの数は、待機バッファ部232が保持可能な実行パス情報PINFwの数に対応する。
各一致検出回路420Aは、複数の実行パス情報PINFwのうちの対応する実行パス情報PINFwを待機バッファ部232から受け、実行パス情報PINFiを現状の論理回路242から受ける。そして、各一致検出回路420Aは、待機バッファ部232から受けた実行パス情報PINFwと現状の論理回路242から受けた実行パス情報PINFiとが一致するか否かを判定する。例えば、一致検出回路420Aは、実行パス情報PINFwと実行パス情報PINFiとが一致する場合、論理1の情報を否定論理和回路420Bに出力する。また、一致検出回路420Aは、実行パス情報PINFwと実行パス情報PINFiとが異なる場合、論理0の情報を否定論理和回路420Bに出力する。なお、一致検出回路420Aは、実行パス情報PINFi、PINFwの少なくとも一方が無効値Zの場合、論理0の情報を否定論理和回路420Bに出力する。
否定論理和回路420Bは、複数の一致検出回路420Aから受ける複数の情報の否定論理和を演算し、演算結果を示す情報NOUT1を論理積回路430、440および否定論理和回路460に出力する。
論理積回路430は、待機バッファ部232から受けるオールモストフル情報AFL1と、不一致検出部420から受ける情報NOUT1と、不一致検出回路410から受ける不一致情報PDIFとの論理積を演算する。そして、論理積回路430は、オールモストフル情報AFL1と情報NOUT1と不一致情報PDIFとの論理積の演算結果を示す情報COND1を論理和回路450に出力する。すなわち、論理積回路430は、待機バッファ部232が保持する処理データPDTの数が第1判定値以上で、かつ、待機バッファ部232が保持する処理データPDTの数が増える場合、論理1の情報COND1を論理和回路450に出力する。論理1の情報COND1は、現状の論理回路242を書き換える条件が満たされたことを示す。
インバータ432は、情報EMPを待機バッファ部232から受け、情報EMPの論理を反転した情報(情報EMPの反転信号)を論理積回路440に出力する。なお、情報EMPは、待機バッファ部232が空であることを示す情報である。例えば、論理値1の情報EMPは、待機バッファ部232が空であること、すなわち、待機バッファ部232が処理データPDT等を1つも保持していないことを示す。また、論理値0の情報EMPは、待機バッファ部232が空でないこと、すなわち、待機バッファ部232が少なくとも1つの処理データPDT等を保持していることを示す。
論理積回路440は、不一致検出部420から受ける情報NOUT1と無効値判定部400から受ける情報とインバータ432から受ける情報との論理積を演算し、演算結果を示す情報COND2を論理和回路450に出力する。すなわち、論理積回路440は、処理決定部212から新規の処理データPDTjが出力されず、かつ、待機バッファ部232に保持されている処理データPDT等が待機バッファ部232から出力されない場合、論理1の情報COND2を論理和回路450に出力する。論理1の情報COND2は、現状の論理回路242を書き換える条件が満たされたことを示す。
論理和回路450は、論理積回路430から受ける情報COND1と論理積回路440から受ける情報COND2との論理和を演算し、演算結果を示す情報を書き換え要求CREQとして選択部480および書き換え部302に出力する。すなわち、論理和回路450は、現状の論理回路242を書き換える条件が満たされた場合、論理1の書き換え要求CREQを選択部480および書き換え部302に出力する。論理1の書き換え要求CREQは、論理回路242の書き換えの要求を示す。
否定論理和回路460は、不一致検出部420から受ける情報NOUT1と無効値判定部400から受ける情報と待機バッファ部232から受ける情報EMPとの否定論理和を演算し、演算結果を示す情報を論理和回路470に出力する。すなわち、否定論理和回路460は、処理決定部212から新規の処理データPDTjが出力され、かつ、待機バッファ部232から処理データPDT等が出力される場合、論理1の情報を論理和回路470に出力する。否定論理和回路460から出力される論理1の情報は、処理決定部212から入力制御部222に転送された処理データPDTjを待機バッファ部232に格納する条件が満たされたことを示す。
論理和回路470は、否定論理和回路460から受ける情報と不一致検出回路410から受ける不一致情報PDIFとの論理和を演算し、演算結果を示す情報を格納要求BUFINとして入力制御部222に出力する。ここで、例えば、不一致検出回路410から論理和回路470に出力される論理1の不一致情報PDIFは、処理決定部212から入力制御部222に転送された処理データPDTjを待機バッファ部232に格納する条件が満たされたことを示す。すなわち、論理和回路470は、処理決定部212から入力制御部222に転送された処理データPDTjを待機バッファ部232に格納する条件が満たされた場合、論理1の格納要求BUFINを入力制御部222に出力する。
選択部480は、入力制御部222による処理データPDTの受付順を示す順番情報NINF(NINF1−NINFn)を待機バッファ部232から受け、書き換え要求CREQを論理和回路450から受ける。そして、選択部480は、書き換え要求CREQが論理1の場合、実行パス情報PINFnextを書き換え部302に出力する。例えば、選択部480は、論理1の書き換え要求CREQを受けた場合、複数の実行待ちの処理Bのうち、受付順が先の処理Bを順番情報NINFに基づいて選択する。そして、選択部480は、選択した処理B(複数の実行待ちの処理Bのうちの受付順が先の処理B)を示す実行パス情報PINFnextを書き換え部302に出力する。これにより、例えば、書き換え部302は、複数の実行待ちの処理Bのうち、Bステージで実行する処理Bに決定されてからの待機時間が最も長い処理Bを実行する論理回路242Bに現状の論理回路240を書き換える。このように、選択部480は、書き換え部302が現状の論理回路242を書き換える場合、複数の処理Bのうちのいずれの処理Bを実行する論理回路242Bに現状の論理回路242を書き換えるかを選択する。
なお、判定部280の構成は、図7に示す例に限定されない。例えば、不一致検出回路410、否定論理和回路460および論理和回路470等は、入力制御部222内に配置されてもよい。また、例えば、選択部480は、書き換え部302内に配置されてもよい。また、不一致検出部420は、一致検出回路420Aおよび否定論理和回路420Bの代わりに、不一致検出回路および論理積回路を有してもよい。また、否定論理和回路460は、情報NOUT1と無効値判定部400から受ける情報と情報EMPとの否定論理和を演算する代わりに、情報NOUT1と無効値判定部400から受ける情報との否定論理和を演算してもよい。すなわち、否定論理和回路460は、情報NOUT1と無効値判定部400から受ける情報との否定論理和を演算した結果を示す情報を、論理和回路470に出力してもよい。
図8は、図4に示した情報処理装置12の動作の一例を示す。図8では、再構成される論理回路242Bの数が2つの場合を例にして、情報処理装置12の動作を説明する。なお、再構成される論理回路242Bの数は、2つに限定されない。図8に示す動作では、再構成回路202は、処理Aを実行するAステージと処理Bを実行するBステージと処理Cを実行するCステージとを有するパイプラインによるパイプライン処理を実行する。処理Aは、複数の処理B(Ba、Bb)のうちのいずれの処理Bを実行するかを決定する処理である。なお、図8に示す各処理A、Ba、Bb、Cの符号の末尾の数字は、パイプラインへの投入順を示す。図8に示す符号DRは、再構成回路202に書き込まれている論理回路242の書き換えを示す。
処理サイクルCYC1のAステージでは、処理決定部212は、処理A1の分岐先を判定し、複数の処理B(Ba、Bb)のうちの処理Ba1をBステージで実行する処理Bに決定する。なお、図8では、論理回路242は、処理サイクルCYC1が開始する前に、論理回路242Ba、242Bbのうち、処理Baを実行する論理回路242Baに構成される。このため、実行パス情報PINFj、PINFiは、両方とも処理Baを示す。なお、図4に示した例では、論理回路242Baは、回路領域R5、R8、R9を含む回路領域群に書き込まれる。この場合、論理回路242Bbを書き込むための回路領域Rの空きが不足する。このため、論理回路242Ba、242Bbの一方が再構成回路202に書き込まれる。
また、待機バッファ部232に処理データPDT等が保持されていないため、実行パス情報PINFiと一致する実行パス情報PINFwは、待機バッファ部232に保持されていない。このため、情報NOUT1は、論理1である。また、待機バッファ部232に保持される処理データPDTの数が第1判定値未満であるため、オールモストフル情報AFL1は、論理0である。図8に示す例では、第1判定値は、“2”に予め設定される。
処理サイクルCYC2のAステージでは、処理決定部212は、処理A2の分岐先を判定し、複数の処理B(Ba、Bb)のうちの処理Ba2をBステージで実行する処理Bに決定する。このため、実行パス情報PINFj、PINFiは、両方とも処理Baを示す。また、処理サイクルCYC2のBステージでは、入力制御部222は、処理サイクルCYC1で処理決定部212により決定された処理Ba1を、再構成回路202に書き込まれている現状の論理回路242Baに実行させる。
処理サイクルCYC3のAステージでは、処理決定部212は、処理A3の分岐先を判定し、複数の処理B(Ba、Bb)のうちの処理Ba3をBステージで実行する処理Bに決定する。このため、実行パス情報PINFj、PINFiは、両方とも処理Baを示す。また、処理サイクルCYC3のBステージでは、入力制御部222は、処理サイクルCYC2で処理決定部212により決定された処理Ba2を現状の論理回路242Baに実行させる。また、処理サイクルCYC3のCステージでは、論理回路270は、処理サイクルCYC2で実行された処理Ba1の処理結果を用いて、処理C1を実行する。
処理サイクルCYC4のAステージでは、処理決定部212は、処理A4の分岐先を判定し、複数の処理B(Ba、Bb)のうちの処理Bb4をBステージで実行する処理Bに決定する。このため、実行パス情報PINFjは、処理Bbを示す。なお、現状の論理回路242Baの書き換えは実行されていないため、実行パス情報PINFiは、処理Baを示す。したがって、実行パス情報PINFjと実行パス情報PINFiとが異なる。図8では、実行パス情報PINFjと実行パス情報PINFiとが異なる場合、太枠で強調して示している。実行パス情報PINFjと実行パス情報PINFiとが異なるため、不一致情報PDIFは、論理0から論理1に変化する。不一致情報PDIFが論理0から論理1に変化することにより、格納要求BUFINも論理0から論理1に変化する。
また、処理サイクルCYC4のBステージでは、入力制御部222は、処理サイクルCYC3で処理決定部212により決定された処理Ba3を現状の論理回路242Baに実行させる。また、処理サイクルCYC4のCステージでは、論理回路270は、処理サイクルCYC3で実行された処理Ba2の処理結果を用いて、処理C2を実行する。
処理サイクルCYC5のAステージでは、処理決定部212は、処理A5の分岐先を判定し、複数の処理B(Ba、Bb)のうちの処理Ba5をBステージで実行する処理Bに決定する。このため、実行パス情報PINFj、PINFiは、両方とも処理Baを示す。
また、処理サイクルCYC5では、入力制御部222は、処理サイクルCYC4に論理1の格納要求BUFINを受けたため、処理サイクルCYC4で処理決定部212により決定された処理Bb4を示す実行パス情報PINF等を、待機バッファ部232に格納する。図8では、待機バッファ部232に格納される実行パス情報PINFw、順番情報NINFおよび処理データPDTのうち、実行パス情報PINFwおよび順番情報NINFの内容を待機バッファ部の欄に示している。例えば、処理サイクルCYC5では、待機バッファ部232に格納された実行パス情報PINFwは処理Bbを示し、待機バッファ部232に格納された順番情報NINFは、受付順が4番目であることを示している。処理Bb4を示す実行パス情報PINF等が待機バッファ部232に格納されるため、処理Bb4は、実行待ちの処理Bb4として待機する。
すなわち、処理サイクルCYC5のBステージでは、処理Bは実行されない。なお、処理サイクルCYC5のCステージでは、論理回路270は、処理サイクルCYC4で実行された処理Ba3の処理結果を用いて、処理C3を実行する。
処理サイクルCYC6のAステージでは、処理決定部212は、処理A6の分岐先を判定し、複数の処理B(Ba、Bb)のうちの処理Ba6をBステージで実行する処理Bに決定する。このため、実行パス情報PINFj、PINFiは、両方とも処理Baを示す。また、処理サイクルCYC6のBステージでは、入力制御部222は、処理サイクルCYC5で処理決定部212により決定された処理Ba5を現状の論理回路242Baに実行させる。また、処理サイクルCYC6のCステージでは、処理サイクルCYC5のBステージで処理Bが実行されなかったため、処理Cは実行されない。
処理サイクルCYC7−CYC11の各々のAステージでは、処理A7−A11がそれぞれ実行される。処理A11は、Aステージに投入される最後の処理Aである。処理サイクルCYC7−CYC11の各々のBステージでは、処理B6−B10がそれぞれ実行され、処理サイクルCYC7−CYC11の各々のCステージでは、処理C5−C9がそれぞれ実行される。
処理サイクルCYC12以降では、処理AがAステージに投入されないため、実行パス情報PINFjは、無効値Zを示す。なお、処理サイクルCYC12では、実行パス情報PINFiは、現状の論理回路242Baの書き換えが実行されていないため、処理Baを示す。また、待機バッファ部232に保持された実行パス情報PINFw(処理Bb)と実行パス情報PINFiとが異なるため、情報NOUT1は、論理1に維持される。実行パス情報PINFjが無効値Zであり、情報NOUT1が論理1であるため、情報COND2は、論理0から論理1に変化する。これにより、書き換え部302は、現状の論理回路242Baの書き換えDRを次の処理サイクルCYC13から開始する。
処理サイクルCYC12のBステージでは、入力制御部222は、処理サイクルCYC11で処理決定部212により決定された処理Ba11を現状の論理回路242Baに実行させる。また、処理サイクルCYC12のCステージでは、論理回路270は、処理サイクルCYC11で実行された処理Ba10の処理結果を用いて、処理C10を実行する。
処理サイクルCYC13では、書き換え部302は、現状の論理回路242Baを論理回路242Bbに書き換える(図8に示す網掛け)。実行パス情報PINFiは、書き換え後の論理回路242Bbが実行する処理Bbを示す情報に更新される。これにより、実行パス情報PINFi(処理Bb)と待機バッファ部232に保持された実行パス情報PINFw(処理Bb)とが一致するため、情報NOUT1は、論理1から論理0に変化する。
また、処理サイクルCYC13のCステージでは、論理回路270は、処理サイクルCYC12で実行された処理Ba11の処理結果を用いて、処理C11を実行する。
処理サイクルCYC14では、書き換え部302は、論理回路242の書き換えDRを継続して実行する。図8に示す例では、論理回路242の書き換えDRに要する処理サイクルCYCの数は、2サイクル(処理サイクルCYC13、CYC14の2サイクル)である。なお、論理回路242の書き換えDRに要する処理サイクルCYCの数は、2サイクルに限定されない。また、処理サイクルCYC14のCステージでは、処理サイクルCYC13のBステージで処理Bが実行されなかったため、処理Cは実行されない。
処理サイクルCYC15のBステージでは、入力制御部222は、再構成回路202に書き込まれている現状の論理回路242Bb(書き換え後の論理回路242Bb)に実行待ちの処理Bb4を実行させる。例えば、入力制御部222は、待機バッファ部232に保持された処理データPDT等を現状の論理回路242Bbに転送して、実行待ちの処理Bb4を現状の論理回路242Bbに実行させる。これにより、待機バッファ部232は、処理データPDT等を1つも保持していない空の状態になる。このため、情報NOUT1は、論理0から論理1に変化する。また、処理サイクルCYC15のCステージでは、処理サイクルCYC14のBステージで処理Bが実行されなかったため、処理Cは実行されない。
処理サイクルCYC16のCステージでは、論理回路270は、処理サイクルCYC15で実行された処理Bb4の処理結果を用いて、処理C4を実行する。これにより、パイプラインに投入された一連の処理は終了する。
このように、情報処理装置12は、処理サイクルCYC4において現状の論理回路242Baで実行できない処理Bb4をBステージで実行する処理Bに決定された場合、処理Bb4の実行を待機し、現状の論理回路242Baの書き換えDRを待機する。すなわち、情報処理装置12では、現状の論理回路242で実行できない処理BをBステージで実行する処理Bに決定される度に論理回路242を書き換えるわけではない。このため、情報処理装置12は、現状の論理回路242で実行できない処理BをBステージで実行する処理Bに決定される度に論理回路242を書き換える従来の方法に比べて、複数の処理Ba、Bbを実行する際の動的再構成の回数の増加を抑制できる。この結果、情報処理装置12では、複数の処理Bを実行するのに要する処理サイクルCYCの数の増加を従来に比べて抑制することができる。
以上、図4から図8に示す実施形態においても、図1から図3に示した実施形態と同様の効果を得ることができる。例えば、現状の論理回路242で実行できない処理BをBステージで実行する処理Bに決定される度に論理回路242を書き換える場合に比べて、論理回路242の書き換え回数を削減することができる。すなわち、論理回路を書き換え可能な再構成回路202で複数の処理Bを実行する際の動的再構成の回数の増加を抑制することができる。
これにより、情報処理装置12の性能を向上させることができる。特に、論理回路242の書き換えに要する時間が、論理回路242が処理Bを実行する時間に比べて大きい場合、論理回路242の書き換え回数を削減することによる情報処理装置12の性能向上の効果は、大きくなる。
また、判定部280は、待機バッファ部232に保持された処理データPDTの数が第1判定値を超えるか否かを判定することにより、待機バッファ部232に保持される処理データの量が第1所定量を超えるか否かを判定する。これにより、待機バッファ部232に保持される処理データの量が第1所定量を超えるか否かを容易に判定することができる。
また、入力制御部222は、受付順を示す順番情報NINFを、処理データPDTおよび実行パス情報PINFjに対応付けて待機バッファ部232に格納する。順番情報NINFを使用することにより、複数の実行待ちの処理Bのうち、Bステージで実行する処理Bに決定されてからの待機時間が最も長い処理Bを容易に選択することができる。
図9は、情報処理装置、情報処理方法および情報処理プログラムの別の実施形態を示す。図1から図8で説明した要素と同一または同様の要素については、同一または同様の符号を付し、これ等については、詳細な説明を省略する。図9に示す情報処理装置14は、サーバ等である。例えば、情報処理システムは、サーバ等の情報処理装置14を有する。
情報処理装置14は、図4に示した再構成回路202の代わりに再構成回路204を有することを除いて、図4に示した情報処理装置12と同一または同様である。例えば、情報処理装置14は、CPU等のプロセッサ100、メモリ110、再構成回路204および書き換え部302を有し、再構成回路204を用いてパイプライン処理を実行する。プロセッサ100、メモリ110および再構成回路204は、バス120に接続される。例えば、プロセッサ100は、メモリ110に格納される情報処理プログラムを実行し、情報処理装置14の動作を制御する。
再構成回路204は、例えば、論理回路を動的に書き換え可能なFPGA等である。例えば、再構成回路204は、論理回路を書き換え可能な複数の回路領域R(R1、R2、R3、R4、R5、R6、R7、R8、R9、R10、R11)を有する。なお、回路領域Rの数は、11個に限定されない。
各回路領域Rの論理回路は、書き換え部302により、書き換えられる。例えば、回路領域R1、R4を含む回路領域群には、処理決定部212として機能する論理回路が書き込まれ、回路領域R2、R3、R6の各々には、入力制御部222、待機バッファ部232および判定部282として機能する論理回路がそれぞれ書き込まれる。また、回路領域R7、R10の各々には、出力制御部250および出力バッファ部260として機能する論理回路がそれぞれ書き込まれ、回路領域R11には、論理回路272が書き込まれる。
さらに、回路領域R5、R8、R9を含む回路領域群には、論理回路242が書き込まれる。論理回路242は、図4から図8で説明したように、動的再構成により再構成される論理回路である。例えば、論理回路242は、処理Ba、Bb、・・・、Bnをそれぞれ実行する論理回路242Ba、242Bb、・・・、242Bnのいずれかに再構成される。なお、再構成される論理回路242Bの数は、図9に示す例に限定されない。
このように、図9に示す再構成回路204は、処理決定部212、入力制御部222、待機バッファ部232、論理回路242、出力制御部250、出力バッファ部260、論理回路272および判定部282を有する。
処理決定部212および待機バッファ部232は、図4に示した処理決定部212および待機バッファ部232と同一または同様である。入力制御部222は、現状の論理回路242に実行させる処理Bに対応する順番情報NINFiを出力制御部250に転送することを除いて、図4に示した入力制御部222と同一または同様である。
論理回路272は、論理回路242の次段の論理回路であり、論理回路242の処理結果を使用して所定の処理を実行する。
出力制御部250は、現状の論理回路242に実行させる処理Bに対応する順番情報NINFiを入力制御部222から受け、現状の論理回路242で実行された処理Bの結果である結果データRDTiを論理回路242から受ける。そして、出力制御部250は、現状の論理回路242で実行された処理の結果である結果データRDTを、実行された処理Bに対応する順番情報NINFが示す順番で次段の論理回路272に転送する。
例えば、出力制御部250は、結果データRDTが次段の論理回路272に転送される度に出力番号CTをインクリメントする出力カウンタ252を有する。そして、出力制御部250は、順番情報NINFiが示す受付順と出力カウンタ252が示す出力番号CTとが異なる場合、現状の論理回路242から受けた結果データRDTiを順番情報NINFiに対応付けて出力バッファ部260に格納する。
これにより、出力バッファ部260は、次段の論理回路272への転送を待機する結果データRDTを順番情報NINFに対応付けて保持する。なお、図9に示すかぎ括弧内には、出力バッファ部260に保持される情報の一例を示す。例えば、出力バッファ部260は、順番情報NINF(NINF1、NINF2、・・・)および結果データRDT(PDT1、PDT2、・・・)を保持する。図9では、複数の順番情報NINFを区別するために、符号の末尾に数字(1、2、・・・)を付し、複数の結果データRDTを区別するために、符号の末尾に数字(1、2、・・・)を付している。順番情報NINFおよび結果データRDTの符号の末尾の数字は、互いに対応している。
判定部282は、出力制御部250から受ける順番情報NINFi、出力番号CT、出力バッファ部260から受けるオールモストフル情報AFL2等に基づいて、出力バッファ部260に保持される結果データRDTの量が第2所定量を超えるか否かを判定する。判定部282のその他の動作は、図4に示した判定部280と同一または同様である。
ここで、オールモストフル情報AFL2は、出力バッファ部260に保持された結果データRDTの数が予め決められた第2判定値に達したことを示す情報である。例えば、論理1のオールモストフル情報AFL2は、出力バッファ部260に保持された処理データPDTの数が第2判定値以上であることを示す。また、論理0のオールモストフル情報AFL2は、出力バッファ部260に保持された結果データRDTの数が第2判定値未満であることを示す。
なお、第2判定値は、第2所定量に応じて、予め決められる。例えば、第2所定量が、順番情報NINFおよび結果データRDTを含む1個の情報群のデータ量を(m−1)倍したデータ量である場合、第2判定値は、(m−1)に予め設定される。(m−1)に設定された第2判定値は、出力バッファ部260の記憶領域のサイズがm個の情報群を記憶するサイズの場合、出力バッファ部260が1個の情報群を記憶する空きを有することを示す。
例えば、判定部282は、出力バッファ部260が保持する結果データRDTの数が第2判定値以上で、出力バッファ部260が保持する結果データRDTの数が増える場合、出力バッファ部260が保持する結果データRDTの量が第2所定量を超えると判定する。なお、出力バッファ部260が保持する結果データRDTの数が増える場合とは、例えば、出力バッファ部260に結果データRDTiが格納され、かつ、出力バッファ部260に保持された結果データRDTが論理回路272に出力されない場合である。すなわち、出力バッファ部260に保持された順番情報NINFおよび入力制御部222から受けた順番情報NINFiのそれぞれが示す受付順のいずれにも出力番号CTが一致しない場合、出力バッファ部260に保持される結果データRDTの数は増加する。
このように、判定部282は、待機バッファ部232に保持される処理データPDTの量が第1所定量を超えるか否かを判定する他に、出力バッファ部260に保持される結果データRDTの量が第2所定量を超えるか否かを判定する。そして、判定部282は、例えば、待機バッファ部232に保持される処理データPDTの量が第1所定量を超える場合、または、出力バッファ部260に保持される結果データRDTの量が第2所定量を超える場合、論理回路242の書き換えを要求する。例えば、判定部282は、論理回路242の書き換えを要求する書き換え要求CREQおよび実行パス情報PINFnextを書き換え部302に出力する。
判定部282は、現状の論理回路242の書き換えを、実行パス情報PINFnextを用いて書き換え部302に要求をした場合、実行パス情報PINFnextを実行パス情報PINFiとして保持してもよい。この場合、現状の論理回路242から判定部282に実行パス情報PINFiを転送する処理は、省かれてもよい。
書き換え部302は、図4に示した書き換え部302と同一または同様である。例えば、書き換え部302は、判定部282の判定結果に基づいて、現状の論理回路242の書き換えを実行する。例えば、書き換え部302は、出力バッファ部260に保持される結果データRDTの量が第2所定量を超える場合、出力番号CTと同じ順番を示す順番情報NINFに対応する実行待ちの処理Bを実行する論理回路242Bに現状の論理回路242を書き換える。
なお、情報処理装置14の構成は、図9に示す例に限定されない。例えば、情報処理装置14は、判定部282として機能する論理回路を再構成回路204に書き込まずに、判定部282を再構成回路204の外部に有してもよい。また、出力カウンタ252は、出力制御部250の外部に配置されてもよい。また、判定部282は、順番情報NINFiを入力制御部222から受けてもよい。
図10は、図9に示した判定部282の動作の一例を示す。図10に示す動作は、論理回路を書き換え可能な再構成回路を有する情報処理装置による情報処理方法および情報処理装置の動作を制御する情報処理プログラムの一態様である。図6で説明したステップと同一または同様のステップについては、同一または同様の符号を付し、これ等については、詳細な説明を省略する。図10に示す動作は、ステップS300、S302、S304、S306、S308が図6に示した動作に追加されることを除いて、図6に示した動作と同一または同様である。したがって、図10では、ステップS300−S308を中心に説明する。
ステップS300では、判定部282は、オールモストフル情報AFL2が論理1か否かを判定する。すなわち、判定部282は、出力バッファ部260に保持された結果データRDTの数が第2判定値に達したか否かを判定する。オールモストフル情報AFL2が論理1の場合、判定部282の動作は、ステップS302に移る。一方、オールモストフル情報AFL2が論理0の場合、判定部282の動作は、ステップS310に移る。
ステップS302では、判定部282は、出力制御部250から受けた順番情報NINFiと出力カウンタ252が示す出力番号CTとが異なるか否かを判定する。順番情報NINFiと出力番号CTとが異なる場合、判定部282の動作は、ステップS304に移る。一方、順番情報NINFiと出力番号CTとが一致する場合、判定部282の動作は、ステップS310に移る。
ステップS304では、判定部282は、出力番号CTと一致する順番情報NINFが出力バッファ部260に保持されているか否かを判定する。例えば、判定部282は、出力バッファ部260に保持されている順番情報NINFのいずれかと出力番号CTとが一致するか否かを判定する。
出力番号CTと一致する順番情報NINFが出力バッファ部260に保持されていない場合、すなわち、出力バッファ部260に保持されている順番情報NINFのいずれも出力番号CTに一致しない場合、判定部282の動作は、ステップS306に移る。すなわち、出力バッファ部260に保持された結果データRDTの数が第2判定値以上で、出力バッファ部260に保持される結果データRDTの数が増加する場合、ステップS306の処理が実行される。
一方、出力番号CTと一致する順番情報NINFが出力バッファ部260に保持されている場合、すなわち、出力バッファ部260に保持されている順番情報NINFのいずれかが出力番号CTに一致する場合、判定部282の動作は、ステップS310に移る。
ステップS306では、判定部282は、実行パス情報PINFjが無効値Zか否かを判定する。実行パス情報PINFjが無効値Zの場合、判定部280の動作は、ステップS350に移る。一方、実行パス情報PINFjが無効値Zでない場合、すなわち、処理データPDTj等が処理決定部212から入力制御部222に転送される場合、判定部282の動作は、ステップS308に移る。
ステップS308では、判定部282は、ステップS334、S340と同様に、処理決定部212から入力制御部222に転送された処理データPDTj等の待機バッファ部232への格納を、入力制御部222に要求する。判定部282は、ステップS308の処理を実行した後、動作をステップS350に移す。
ステップS350では、判定部282は、論理回路242の書き換えを書き換え部302に要求する。このように、図10に示す動作では、出力バッファ部260に保持された結果データRDTの数が第2判定値以上で、出力バッファ部260に保持される結果データRDTの数が増加する場合においても、論理回路242の書き換えが実行される。なお、判定部282の動作は、図10に示す例に限定されない。
図11は、図9に示した判定部282の一例を示す。判定部282では、不一致検出回路412、不一致検出部422および論理積回路434が図7に示した判定部280に追加される。また、判定部282は、図7に示した論理和回路450、470の代わりに、論理和回路452、472を有する。判定部282のその他の構成は、図7に示した判定部280と同一または同様である。このため、図11では、不一致検出回路412、不一致検出部422および論理積回路434を中心に説明し、図7で説明した要素については詳細な説明を省略する。
判定部282は、無効値判定部400、不一致検出回路410、412、不一致検出部420、422、論理積回路430、434、440、インバータ432、論理和回路452、472、否定論理和回路460および選択部480を有する。
不一致検出回路412は、出力制御部250から受ける順番情報NINFiと出力カウンタ252が示す出力番号CTとが異なるか否かを判定する。例えば、不一致検出回路412は、順番情報NINFiと出力番号CTとが異なる場合、論理1の情報ODIFを論理積回路434に出力する。また、不一致検出回路412は、順番情報NINFiと出力番号CTとが一致する場合、論理0の情報ODIFを論理積回路434に出力する。なお、不一致検出回路412は、順番情報NINFiと出力番号CTとの少なくとも一方が無効値Zの場合、論理0の情報ODIFを論理積回路434に出力する。なお、不一致検出回路412は、順番情報NINFiを入力制御部222から受けてもよい。
不一致検出部422は、出力バッファ部260に保持されている順番情報NINF(NINF1、・・・、NINFm)のいずれも出力番号CTに一致しないか否かを判定する。例えば、不一致検出部422は、出力バッファ部260に保持されている順番情報NINFのいずれも出力番号CTに一致しない場合、論理1の情報NOUT2を論理積回路434に出力する。また、不一致検出部422は、出力バッファ部260に保持されている順番情報NINFのいずれかが出力番号CTに一致する場合、論理0の情報NOUT2を論理積回路434に出力する。すなわち、不一致検出部422は、出力バッファ部260から結果データRDTが出力されない場合、論理1の情報NOUT2を論理積回路434に出力する。
例えば、不一致検出部422は、複数の一致検出回路422Aと否定論理和回路422Bとを有する。一致検出回路422Aの数は、出力バッファ部260が保持可能な順番情報NINFの数に対応する。
各一致検出回路422Aは、複数の順番情報NINFのうちの対応する順番情報NINFを出力バッファ部260から受け、出力番号CTを出力カウンタ252から受ける。そして、各一致検出回路422Aは、出力バッファ部260から受けた順番情報NINFと出力カウンタ252から受けた出力番号CTとが一致するか否かを判定する。例えば、一致検出回路422Aは、順番情報NINFと出力番号CTとが一致する場合、論理1の情報を否定論理和回路422Bに出力する。また、一致検出回路422Aは、順番情報NINFと出力番号CTとが異なる場合、論理0の情報を否定論理和回路422Bに出力する。なお、一致検出回路422Aは、順番情報NINFと出力番号CTとの少なくとも一方が無効値Zの場合、論理0の情報を否定論理和回路422Bに出力する。
否定論理和回路422Bは、複数の一致検出回路422Aから受ける複数の情報の否定論理和を演算し、演算結果を示す情報NOUT2を論理積回路434に出力する。
論理積回路434は、出力バッファ部260から受けるオールモストフル情報AFL2と、不一致検出回路412から受ける情報ODIFと、不一致検出部422から受ける情報NOUT2との論理積を演算する。そして、論理積回路434は、オールモストフル情報AFL2と情報ODIFと情報NOUT2との論理積の演算結果を示す情報COND3を論理和回路452、472に出力する。すなわち、論理積回路434は、出力バッファ部260が保持する結果データRDTの数が第2判定値以上で、かつ、出力バッファ部260が保持する結果データRDTの数が増える場合、論理1の情報COND3を論理和回路452、472に出力する。論理1の情報COND3は、現状の論理回路242を書き換える条件が満たされたことを示す。
論理和回路452は、論理積回路430から受ける情報COND1と論理積回路440から受ける情報COND2と論理積回路434から受ける情報COND3との論理和を演算する。そして、論理和回路452は、情報COND1、COND2、COND3の論理和の演算結果を示す情報を書き換え要求CREQとして選択部480および書き換え部302に出力する。すなわち、論理和回路452は、現状の論理回路242を書き換える条件が満たされた場合、論理1の書き換え要求CREQを選択部480および書き換え部302に出力する。
論理和回路472は、否定論理和回路460から受ける情報と不一致検出回路410から受ける不一致情報PDIFと論理積回路434から受ける情報COND3との論理和を演算し、演算結果を示す情報を格納要求BUFINとして入力制御部222に出力する。
ここで、不一致検出回路412、不一致検出部422および論理積回路434を含む回路群は、出力バッファ部260に保持される結果データRDTの量が第2所定量を超えるかを判定する第2判定部の一例である。また、無効値判定部400、不一致検出回路410、不一致検出部420、論理積回路430、440、論理和回路452を含む回路群は、待機バッファ部232に保持される処理データPDTの量が第1所定量を超えるかを判定する第1判定部の一例である。
なお、判定部282の構成は、図11に示す例に限定されない。例えば、不一致検出回路410、否定論理和回路460および論理和回路472等は、入力制御部222内に配置されてもよい。また、例えば、選択部480は、書き換え部302内に配置されてもよい。不一致検出回路412は、出力制御部250内に配置されてもよい。また、不一致検出部420は、一致検出回路420Aおよび否定論理和回路420Bの代わりに、不一致検出回路および論理積回路を有してもよい。また、不一致検出部422は、一致検出回路422Aおよび否定論理和回路422Bの代わりに、不一致検出回路および論理積回路を有してもよい。また、否定論理和回路460は、情報NOUT1と無効値判定部400から受ける情報と情報EMPとの否定論理和を演算する代わりに、情報NOUT1と無効値判定部400から受ける情報との否定論理和を演算してもよい。すなわち、否定論理和回路460は、情報NOUT1と無効値判定部400から受ける情報との否定論理和を演算した結果を示す情報を、論理和回路472に出力してもよい。
図12は、図9に示した情報処理装置14の動作の一例を示す。図12に示す動作におけるパイプラインのステージ、パイプラインに投入される処理(処理A1−A11等)、再構成される論理回路242Bの数等は、図8に示した動作と同一または同様である。図12では、図8と異なる動作を中心に説明する。なお、図12では、説明を分かり易くするために、図8に示した情報の他に、順番情報NINFi、出力番号CT、出力バッファ部260、オールモストフル情報AFL2、情報ODIF、情報NOUT2および情報COND3を記載している。例えば、図12では、出力バッファ部260に格納される順番情報NINFおよび結果データRDTのうち、順番情報NINFの内容を出力バッファ部の欄に示している。また、図12では、図を見やすくするために、図8では記載していた不一致情報PDIFの記載を省略している。
処理サイクルCYC1−CYC5までの動作は、図8に示した動作と同様である。なお、処理サイクルCYC1−CYC5の各々では、出力バッファ部260に結果データRDT等が保持されていないため、出力番号CTと一致する順番情報NINFは、出力バッファ部260に保持されていない。このため、情報NOUT2は、論理1である。また、出力バッファ部260に保持される結果データRDTの数が第2判定値未満であるため、オールモストフル情報AFL2は、論理0である。図12に示す例では、第2判定値は、“2”に予め設定される。
処理サイクルCYC6では、処理サイクルCYC5のBステージで処理Bb4が実行されなかったため、出力番号CTは、“4”に維持される。したがって、処理サイクルCYC6では、順番情報NINFi(“5”)と出力番号CT(“4”)とが異なる。このため、情報ODIFは、論理0から論理1に変化する。処理サイクルCYC6のその他の動作は、図8に示した動作と同様である。なお、順番情報NINFi(“5”)と出力番号CT(“4”)とが異なるため、処理サイクルCYC6のBステージで実行される処理Ba5の処理結果である結果データRDT等は、処理サイクルCYC7において出力バッファ部260に格納される。
処理サイクルCYC7では、AステージからBステージまでの動作は、図8に示した動作と同様である。処理サイクルCYC7では、上述したように、処理サイクルCYC6における順番情報NINFi(“5”)と出力番号CT(“4”)とが異なるため、処理Ba5の処理結果である結果データRDT等は、出力バッファ部260に格納される。このため、処理サイクルCYC7のCステージでは、処理Ba5の処理結果を用いた処理C5は、実行されない。結果データRDTが次段の論理回路272に出力されなかったため、出力番号CTは、“4”に維持される。
処理サイクルCYC8では、AステージからBステージまでの動作は、図8に示した動作と同様である。処理サイクルCYC8では、処理サイクルCYC7における順番情報NINFi(“6”)と出力番号CT(“4”)とが異なるため、処理Ba6の処理結果である結果データRDT等は、出力バッファ部260に格納される。これにより、処理サイクルCYC8では、出力バッファ部260は、処理Ba5の処理結果である結果データRDTと処理Ba6の処理結果である結果データRDTとの2つの結果データRDTを保持する。出力バッファ部260に第2判定値(“2”)と同じ数の結果データRDTが保持されたため、オールモストフル情報AFL2は、論理0から論理1に変化する。
また、処理Ba6の処理結果である結果データRDTが出力バッファ部260に格納されるため、処理サイクルCYC8のCステージでは、処理Ba6の処理結果を用いた処理C6は、実行されない。結果データRDTが次段の論理回路272に出力されなかったため、出力番号CTは、“4”に維持される。したがって、処理サイクルCYC8では、順番情報NINFi(“7”)と出力番号CT(“4”)とが異なり、情報ODIFは、論理1に維持される。また、処理サイクルCYC8では、出力番号CT(“4”)と一致する順番情報NINFは、出力バッファ部260に保持されていないため、情報NOUT2は、論理1に維持される。
このように、処理サイクルCYC8では、オールモストフル情報AFL2、情報ODIFおよび情報NOUT2の全てが論理1であるため、情報COND3は、論理0から論理1に変化する。情報COND3が論理0から論理1に変化したことにより、格納要求BUFINも論理0から論理1に変化する。また、情報COND3が論理0から論理1に変化したことにより、書き換え部302は、現状の論理回路242Baの書き換えDRを次の処理サイクルCYC9から開始する。
処理サイクルCYC9では、論理回路242Baの書き換えDRが実行される。例えば、書き換え部302は、出力カウンタ252が示す出力番号CT(“4”)と同じ順番を示す順番情報NINFに対応する実行待ちの処理Bb4を実行する論理回路242Bbに現状の論理回路242Baを書き換える。このように、処理サイクルCYC9では、論理回路242Baの書き換えDRが実行されるため、処理A9は、Aステージに投入されない。なお、処理サイクルCYC9では、入力制御部222は、処理サイクルCYC8に論理1の格納要求BUFINを受けたため、処理サイクルCYC8で処理決定部212により決定された処理Ba8を示す実行パス情報PINF等を、待機バッファ部232に格納する。このため、処理サイクルCYC9では、オールモストフル情報AFL1は、論理0から論理1に変化する。また、待機バッファ部232が実行パス情報PINFi(処理Bb)に一致する実行パス情報PINFw(処理Bb)を保持しているため、情報NOUT1は、論理1から論理0に変化する。
また、処理サイクルCYC9では、処理サイクルCYC8における順番情報NINFi(“7”)と出力番号CT(“4”)とが異なるため、処理Ba7の処理結果である結果データRDT等は、出力バッファ部260に格納される。
処理サイクルCYC10では、書き換え部302は、論理回路242の書き換えDRを継続して実行する。このため、処理A9は、Aステージに投入されない。処理サイクルCYC10が終了するまでに、論理回路242は、論理回路242Bbに書き換えられる。
処理サイクルCYC11のAステージでは、処理決定部212は、処理A9の分岐先を判定し、複数の処理B(Ba、Bb)のうちの処理Ba9をBステージで実行する処理Bに決定する。このため、実行パス情報PINFjは、処理Baを示す。また、実行パス情報PINFiは、論理回路242が論理回路242Bbに書き換えられたため、処理Bbを示す。したがって、実行パス情報PINFjと実行パス情報PINFiとが異なる。このため、格納要求BUFINは、論理0から論理1に変化する。
処理サイクルCYC11のBステージでは、入力制御部222は、再構成回路204に書き込まれている現状の論理回路242Bb(書き換え後の論理回路242Bb)に実行待ちの処理Bb4を実行させる。例えば、入力制御部222は、待機バッファ部232に保持された2つの処理データPDTのうち、順番情報NINFが“4”の処理データPDTを現状の論理回路242Bbに転送し、実行待ちの処理Bb4を現状の論理回路242Bbに実行させる。なお、順番情報NINFが“4”の処理データPDTは、実行パス情報PINFi(処理Bb)に一致する実行パス情報PINFwに対応する処理データPDTである。また、入力制御部222は、待機バッファ部232から論理回路242Bbに転送した処理データPDTに対応する順番情報NINFi(“4”)を出力制御部250に転送する。待機バッファ部232から論理回路242Bbに処理データPDTが転送されたため、待機バッファ部232に保持された処理データPDTの数は2つから1つに減少する。
また、処理サイクルCYC11では、処理サイクルCYC10のBステージで処理Bが実行されなかったため、出力番号CTは、“4”に維持される。したがって、処理サイクルCYC11では、順番情報NINFi(“4”)と出力番号CT(“4”)とが一致する。このため、処理Bb4の処理結果である結果データRDTは、論理回路272に転送される。これにより、次の処理サイクルCYC12において、出力番号CTは、“4”から“5”にインクリメントされる。
処理サイクルCYC12のAステージでは、処理決定部212は、処理A10の分岐先を判定し、複数の処理B(Ba、Bb)のうちの処理Ba10をBステージで実行する処理Bに決定する。このため、実行パス情報PINFjは、処理Baを示し、実行パス情報PINFiは、処理Bbを示す。実行パス情報PINFjと実行パス情報PINFiとが異なるため、格納要求BUFINは、論理1に維持される。
また、処理サイクルCYC12では、入力制御部222は、処理サイクルCYC11で処理決定部212により決定された処理Ba9を示す実行パス情報PINF等を待機バッファ部232に格納する。このため、処理サイクルCYC12では、オールモストフル情報AFL1は、論理0から論理1に変化する。また、待機バッファ部232が実行パス情報PINFi(処理Bb)に一致する実行パス情報PINFwを保持していないため、情報NOUT1は、論理1に維持される。実行パス情報PINFjと実行パス情報PINFiとが異なり、オールモストフル情報AFL1および情報NOUT1が論理1であるため、情報COND1は、論理0から論理1に変化する。情報COND1が論理0から論理1に変化したことにより、書き換え部302は、現状の論理回路242Bbの書き換えDRを次の処理サイクルCYC13から開始する。
また、処理サイクルCYC12のCステージでは、論理回路272は、処理サイクルCYC11で実行された処理Bb4の処理結果を用いて、処理C4を実行する。なお、処理サイクルCYC12では、出力バッファ部260が出力番号CT(“5”)に一致する順番情報NINFを保持しているため、情報NOUT2は、論理1から論理0に変化する。また、出力制御部250は、出力バッファ部260に保持された結果データRDTのうち、出力番号CT(“5”)に一致する順番情報NINFに対応する結果データRDTを、論理回路272に転送する。これにより、次の処理サイクルCYC13において、出力番号CTは、“5”から“6”にインクリメントされる。
処理サイクルCYC13では、論理回路242Baの書き換えDRが実行されるため、処理A11は、Aステージに投入されない。また、処理サイクルCYC13では、入力制御部222は、処理サイクルCYC12で処理決定部212により決定された処理Ba10を示す実行パス情報PINF等を、待機バッファ部232に格納する。また、待機バッファ部232が実行パス情報PINFi(処理Ba)に一致する実行パス情報PINFw(処理Ba)を保持しているため、情報NOUT1は、論理1から論理0に変化する。
また、処理サイクルCYC13のCステージでは、論理回路272は、出力バッファ部260に保持された結果データRDTのうち、出力番号CT(“5”)に一致する順番情報NINFに対応する結果データRDTを用いて、処理C5を実行する。また、出力制御部250は、出力バッファ部260に保持された結果データRDTのうち、出力番号CT(“6”)に一致する順番情報NINFに対応する結果データRDTを、論理回路272に転送する。これにより、次の処理サイクルCYC14において、出力番号CTは、“6”から“7”にインクリメントされる。
処理サイクルCYC14では、論理回路242Baの書き換えDRが継続されるため、処理A11は、Aステージに投入されない。また、処理サイクルCYC14のCステージでは、論理回路272は、出力バッファ部260に保持された結果データRDTのうち、出力番号CT(“6”)に一致する順番情報NINFに対応する結果データRDTを用いて、処理C6を実行する。また、出力制御部250は、出力バッファ部260に保持された結果データRDTのうち、出力番号CT(“7”)に一致する順番情報NINFに対応する結果データRDTを、論理回路272に転送する。これにより、次の処理サイクルCYC15において、出力番号CTは、“7”から“8”にインクリメントされる。
処理サイクルCYC15のAステージでは、処理決定部212は、処理A11の分岐先を判定し、複数の処理B(Ba、Bb)のうちの処理Ba11をBステージで実行する処理Bに決定する。このため、実行パス情報PINFjは、処理Baを示す。また、実行パス情報PINFiは、論理回路242が論理回路242Baに書き換えられたため、処理Baを示す。したがって、実行パス情報PINFjと実行パス情報PINFiとが一致する。処理A11がAステージに投入される最後の処理Aであるため、処理サイクルCYC16以降では、Aステージに処理Aは投入されない。
処理サイクルCYC15のBステージでは、入力制御部222は、再構成回路204に書き込まれている現状の論理回路242Ba(書き換え後の論理回路242Ba)に実行待ちの処理Ba8を実行させる。例えば、入力制御部222は、待機バッファ部232に保持された複数の処理データPDTのうち、順番情報NINFが“8”の処理データPDTを現状の論理回路242Baに転送し、実行待ちの処理Ba8を現状の論理回路242Baに実行させる。なお、順番情報NINFが“8”の処理データPDTは、実行パス情報PINFi(処理Ba)に一致する実行パス情報PINFwに対応する処理データPDTのうち、受付順が先の処理データPDTである。
処理サイクルCYC15のCステージでは、論理回路272は、出力バッファ部260に保持された結果データRDTのうち、出力番号CT(“7”)に一致する順番情報NINFに対応する結果データRDTを用いて、処理C7を実行する。
処理サイクルCYC16のBステージでは、入力制御部222は、現状の論理回路242Baに実行待ちの処理Ba9を実行させる。このため、処理サイクルCYC16では、入力制御部222は、処理サイクルCYC15で処理決定部212により決定された処理Ba11を示す実行パス情報PINF等を、待機バッファ部232に格納する。また、処理サイクルCYC16のCステージでは、論理回路272は、処理サイクルCYC15で実行された処理Ba8の処理結果を用いて、処理C8を実行する。
処理サイクルCYC17のBステージでは、入力制御部222は、現状の論理回路242Baに実行待ちの処理Ba10を実行させる。また、処理サイクルCYC17のCステージでは、論理回路272は、処理サイクルCYC16で実行された処理Ba9の処理結果を用いて、処理C9を実行する。
処理サイクルCYC18のBステージでは、入力制御部222は、現状の論理回路242Baに実行待ちの処理Ba11を実行させる。これにより、待機バッファ部232は、処理データPDT等を1つも保持していない空の状態になる。また、処理サイクルCYC17のCステージでは、論理回路272は、処理サイクルCYC17で実行された処理Ba10の処理結果を用いて、処理C10を実行する。
処理サイクルCYC19のCステージでは、論理回路270は、処理サイクルCYC18で実行された処理Ba11の処理結果を用いて、処理C11を実行する。これにより、パイプラインに投入された一連の処理は終了する。
このように、情報処理装置14では、動的再構成により再構成される論理回路242の次段の論理回路272は、パイプラインに投入された順番で、処理Cを実行できる。
図13は、図9に示した情報処理装置14の動作の別の例を示す。図13では、図を見やすくするために、図12では記載していた情報COND2、COND3、NOUT2および格納要求BUFINの記載を省略している。また、図13に示すBステージで実行される処理Bは、処理Baの欄と処理Bbの欄とに分け、処理A、Cに対応する数字(パイプラインへの投入順を示す数字)で記載される。
図13に示す動作では、分岐先が処理Baである処理A(符号の末尾の数字が奇数の処理A)と分岐先が処理Bbである処理A(符号の末尾の数字が偶数の処理A)とが交互にパイプラインに投入される。このため、処理サイクルCYC5において、待機バッファ部232に保持される処理データPDTの数が第1判定値(“2”)に達し、オールモストフル情報AFL1が論理0から論理1に変化する。なお、第1判定値、第2判定値、処理サイクルCYC1での現状の論理回路242は、図12と同じである。処理サイクルCYC5では、実行パス情報PINFj(処理Ba)と実行パス情報PINFi(処理Ba)とが一致するため、情報COND1は、論理0に維持される。
処理サイクルCYC6では、実行パス情報PINFj(処理Bb)と実行パス情報PINFi(処理Ba)とが異なる。また、オールモストフル情報AFL1および情報NOUT1は、論理1である。このため、情報COND1は、論理0から論理1に変化する。これにより、次の処理サイクルCYC7において、現状の論理回路242Baの書き換えDRが開始される。
図13に示す動作では、出力バッファ部260に保持される結果データRDTの数が第2判定値(“2”)を超える前に、待機バッファ部232に保持される処理データPDTの数が第1判定値(“2”)を超える。このため、図13に示す動作では、出力バッファ部260に保持される結果データRDTの数が第2判定値(“2”)を超えることによる論理回路242の書き換えDRは、発生しない。
論理回路242が論理回路242Bbに書き換えられた後では、実行待ちの処理Bbから順に実行される。そして、処理サイクルCYC14において、待機バッファ部232に保持される処理データPDTの数が第1判定値(“2”)を超える。このため、処理サイクルCYC14において、現状の論理回路242Bbの書き換えDRが開始される。以降、現状の論理回路242により処理Bが5回実行される度に、現状の論理回路242の書き換えDRが実行される。そして、処理サイクルCYC32のBステージにおいて、最後の処理Ba21が実行される。また、処理サイクルCYC35のCステージにおいて、処理Ba21の処理結果を用いた最後の処理C21が実行され、一連の処理が終了する。
このように、図13に示す動作では、論理回路272がパイプラインに投入された順番で処理Cを実行する場合、最初の処理A1を実行してから、最後の処理A21に対応する処理C21が終了するまでに、論理回路242の書き換えDRが4回実行される。これに対し、図2で説明した従来の情報処理装置では、パイプラインに投入された順番で処理Bが実行されるため、処理Ba1から処理Ba21まで、処理Bが終了する度に論理回路242の書き換えDRが発生する。すなわち、従来の情報処理装置では、論理回路272がパイプラインに投入された順番で処理Cを実行する場合、最初の処理A1を実行してから、最後の処理A21に対応する処理C21が終了するまでに、論理回路242の書き換えDRが20回実行される。
情報処理装置14では、動的再構成により再構成される論理回路242の次段の論理回路272がパイプラインに投入された順番で処理Cを実行する場合でも、複数の処理Ba、Bbを実行する際の動的再構成の回数の増加を従来に比べて抑制することができる。この結果、情報処理装置14では、複数の処理Bを実行するのに要する処理サイクルCYCの数の増加を従来に比べて抑制することができる。
以上、図9から図13に示す実施形態においても、図4から図8に示す実施形態と同様の効果を得ることができる。例えば、現状の論理回路242で実行できない処理BをBステージで実行する処理Bに決定される度に論理回路242を書き換える場合に比べて、論理回路242の書き換え回数を削減することができる。すなわち、論理回路を書き換え可能な再構成回路204で複数の処理Bを実行する際の動的再構成の回数の増加を抑制することができる。
これにより、情報処理装置14の性能を向上させることができる。特に、論理回路242の書き換えに要する時間が、論理回路242が処理Bを実行する時間に比べて大きい場合、論理回路242の書き換え回数を削減することによる情報処理装置14の性能向上の効果は、大きくなる。
また、出力制御部250は、現状の論理回路242で実行された処理Bの結果である結果データRDTを、実行された処理Bに対応する順番情報NINFが示す順番で次段の論理回路272に転送する。さらに、書き換え部302は、出力バッファ部260に保持される結果データRDTの量が第2所定量を超える場合、出力番号CTと同じ順番を示す順番情報NINFに対応する実行待ちの処理Bを実行する論理回路242に現状の論理回路242を書き換える。これにより、動的再構成により再構成される論理回路242の次段の論理回路272がパイプラインに投入された順番で処理Cを実行する場合でも、複数の処理Bを実行する際の動的再構成の回数の増加を従来に比べて抑制することができる。
以上の実施形態において説明した発明を整理して、付記として以下の通り開示する。
(付記1)
論理回路を動的に書き換え可能な再構成回路を有する情報処理装置において、
複数の処理のうちのいずれの処理を実行するかを決定する処理決定部と、
前記処理決定部により決定された処理のうちの実行待ちの処理で使用される処理データを保持する待機バッファ部と、
前記処理決定部により決定された処理を実行する論理回路が前記再構成回路に書き込まれていない場合、前記処理決定部から受ける新規の処理データを前記待機バッファ部に格納し、前記処理決定部により決定された処理を前記実行待ちの処理として待機させる入力制御部と、
前記待機バッファ部に保持される処理データの量が第1所定量を超える場合、前記再構成回路に書き込まれている現状の論理回路を、前記待機バッファ部に保持された複数の処理データの各々を使用する複数の実行待ちの処理のいずれかを実行する論理回路に書き換える書き換え部と
を有することを特徴とする情報処理装置。
(付記2)
付記1に記載の情報処理装置において、
前記待機バッファ部に保持された処理データの数が予め決められた第1判定値以上で、前記処理決定部により決定された処理を実行する論理回路と前記現状の論理回路とが異なり、かつ、前記実行待ちの処理のいずれも前記現状の論理回路で実行可能でない場合、前記待機バッファ部に保持される処理データの量が前記第1所定量を超えると判定する第1判定部をさらに有し、
前記書き換え部は、前記第1判定部の判定結果に基づいて、前記現状の論理回路の書き換えを実行する
ことを特徴とする情報処理装置。
(付記3)
付記1または付記2に記載の情報処理装置において、
前記入力制御部は、前記現状の論理回路で実行可能な前記実行待ちの処理が存在する場合、前記処理決定部により決定された処理を前記実行待ちの処理として待機させ、前記現状の論理回路で実行可能な前記実行待ちの処理を前記現状の論理回路に実行させる
ことを特徴とする情報処理装置。
(付記4)
付記1ないし付記3のいずれか1項に記載の情報処理装置において、
前記書き換え部が前記現状の論理回路を書き換える場合、複数の処理のうちのいずれの処理を実行する論理回路に現状の論理回路を書き換えるかを選択する選択部をさらに有し、
前記入力制御部は、前記処理決定部から受けた処理データの受付順を示す順番情報を、処理データに対応付けて前記待機バッファ部に格納し、
前記選択部は、複数の前記実行待ちの処理のうち、受付順が先の処理を順番情報に基づいて選択し、
前記書き換え部は、前記待機バッファ部に保持される処理データの量が前記第1所定量を超える場合、前記選択部により選択された処理を実行する論理回路に前記現状の論理回路を書き換える
ことを特徴とする情報処理装置。
(付記5)
付記4に記載の情報処理装置において、
前記現状の論理回路で実行された処理の結果である結果データを、実行された処理に対応する順番情報が示す順番で次段に転送する出力制御部をさらに有し、
前記入力制御部は、前記現状の論理回路に実行させる処理に対応する順番情報を前記出力制御部に転送する
ことを特徴とする情報処理装置。
(付記6)
付記5に記載の情報処理装置において、
結果データが次段に転送される度に、出力番号をインクリメントする出力カウンタと、
次段への転送を待機する結果データを順番情報に対応付けて保持する出力バッファ部とをさらに有し、
前記出力制御部は、前記入力制御部から受けた順番情報が示す受付順と前記出力カウンタが示す出力番号とが異なる場合、前記現状の論理回路から受けた結果データを、前記入力制御部から受けた順番情報に対応付けて前記出力バッファ部に格納し、
前記書き換え部は、前記出力バッファ部に保持される結果データの量が第2所定量を超える場合、前記出力カウンタが示す出力番号と同じ順番を示す順番情報に対応する前記実行待ちの処理を実行する論理回路に前記現状の論理回路を書き換える
ことを特徴とする情報処理装置。
(付記7)
付記6に記載の情報処理装置において、
前記出力バッファ部に保持された結果データの数が予め決められた第2判定値以上で、かつ、前記出力カウンタが示す出力番号が前記出力バッファ部に保持された順番情報および前記入力制御部から受けた順番情報のそれぞれが示す受付順のいずれにも一致しない場合、前記出力バッファ部に保持される結果データの量が前記第2所定量を超えると判定する第2判定部をさらに有する
ことを特徴とする情報処理装置。
(付記8)
付記1ないし付記7のいずれか1項に記載の情報処理装置において、
前記処理決定部は、実行する処理を示す実行パス情報と処理データとを前記入力制御部に出力し、
前記入力制御部は、前記処理決定部により決定された処理を前記実行待ちの処理として待機させる場合、実行パス情報を処理データに対応付けて前記待機バッファ部に格納する
ことを特徴とする情報処理装置。
(付記9)
論理回路を動的に書き換え可能な再構成回路を有する情報処理装置による情報処理方法において、
前記情報処理装置が有する処理決定部が、複数の処理のうちのいずれの処理を実行するかを決定し、
前記情報処理装置が有する入力制御部が、前記処理決定部により決定された処理を実行する論理回路が前記再構成回路に書き込まれていない場合、前記処理決定部から受ける新規の処理データを、前記情報処理装置が有する待機バッファ部に格納し、前記処理決定部により決定された処理を実行待ちの処理として待機させ、
前記情報処理装置が有する書き換え部が、前記待機バッファ部に保持される処理データの量が第1所定量を超える場合、前記再構成回路に書き込まれている現状の論理回路を、前記待機バッファ部に保持された複数の処理データの各々を使用する複数の実行待ちの処理のいずれかを実行する論理回路に書き換える
ことを特徴とする情報処理方法。
(付記10)
論理回路を動的に書き換え可能な再構成回路を有する情報処理装置の動作を制御する情報処理プログラムにおいて、
前記情報処理装置が有する処理決定部が、複数の処理のうちのいずれの処理を実行するかを決定し、
前記情報処理装置が有する入力制御部が、前記処理決定部により決定された処理を実行する論理回路が前記再構成回路に書き込まれていない場合、前記処理決定部から受ける新規の処理データを、前記情報処理装置が有する待機バッファ部に格納し、前記処理決定部により決定された処理を実行待ちの処理として待機させ、
前記情報処理装置が有する書き換え部が、前記待機バッファ部に保持される処理データの量が第1所定量を超える場合、前記再構成回路に書き込まれている現状の論理回路を、前記待機バッファ部に保持された複数の処理データの各々を使用する複数の実行待ちの処理のいずれかを実行する論理回路に書き換える
処理を前記情報処理装置に実行させるための情報処理プログラム。
(付記11)
論理回路を動的に書き換え可能な再構成回路を有する情報処理装置を有し、前記情報処理装置を用いて演算を実行する情報処理システムにおいて、
前記情報処理装置は、
複数の処理のうちのいずれの処理を実行するかを決定する処理決定部と、
前記処理決定部により決定された処理のうちの実行待ちの処理で使用される処理データを保持する待機バッファ部と、
前記処理決定部により決定された処理を実行する論理回路が前記再構成回路に書き込まれていない場合、前記処理決定部から受ける新規の処理データを前記待機バッファ部に格納し、前記処理決定部により決定された処理を前記実行待ちの処理として待機させる入力制御部と、
前記待機バッファ部に保持される処理データの量が第1所定量を超える場合、前記再構成回路に書き込まれている現状の論理回路を、前記待機バッファ部に保持された複数の処理データの各々を使用する複数の実行待ちの処理のいずれかを実行する論理回路に書き換える書き換え部と
を有することを特徴とする情報処理システム。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。