(57)【要約】【課題】  論理回路を書き換え可能な再構成回路で複数の処理を実行する際の動的再構成の回数の増加を抑制する。【解決手段】  情報処理装置は、複数の処理のうちのいずれの処理を実行するかを決定する処理決定部と、処理決定部により決定された処理のうちの実行待ちの処理で使用される処理データを保持する待機バッファ部と、処理決定部により決定された処理を実行する論理回路が再構成回路に書き込まれていない場合、処理決定部から受ける新規の処理データを待機バッファ部に格納し、処理決定部により決定された処理を実行待ちの処理として待機させる入力制御部と、待機バッファ部に保持される処理データの量が第１所定量を超える場合、再構成回路に書き込まれている現状の論理回路を、待機バッファ部に保持された複数の処理データの各々を使用する複数の実行待ちの処理のいずれかを実行する論理回路に書き換える書き換え部とを有する。【選択図】  図１
2019021046.tif 000002
【特許請求の範囲】
【請求項１】
論理回路を動的に書き換え可能な再構成回路を有する情報処理装置において、
複数の処理のうちのいずれの処理を実行するかを決定する処理決定部と、
前記処理決定部により決定された処理のうちの実行待ちの処理で使用される処理データを保持する待機バッファ部と、
前記処理決定部により決定された処理を実行する論理回路が前記再構成回路に書き込まれていない場合、前記処理決定部から受ける新規の処理データを前記待機バッファ部に格納し、前記処理決定部により決定された処理を前記実行待ちの処理として待機させる入力制御部と、
前記待機バッファ部に保持される処理データの量が第１所定量を超える場合、前記再構成回路に書き込まれている現状の論理回路を、前記待機バッファ部に保持された複数の処理データの各々を使用する複数の実行待ちの処理のいずれかを実行する論理回路に書き換える書き換え部と
を有することを特徴とする情報処理装置。
【請求項２】
請求項１に記載の情報処理装置において、
前記待機バッファ部に保持された処理データの数が予め決められた第１判定値以上で、前記処理決定部により決定された処理を実行する論理回路と前記現状の論理回路とが異なり、かつ、前記実行待ちの処理のいずれも前記現状の論理回路で実行可能でない場合、前記待機バッファ部に保持される処理データの量が前記第１所定量を超えると判定する第１判定部をさらに有し、
前記書き換え部は、前記第１判定部の判定結果に基づいて、前記現状の論理回路の書き換えを実行する
ことを特徴とする情報処理装置。
【請求項３】
請求項１または請求項２に記載の情報処理装置において、
前記入力制御部は、前記現状の論理回路で実行可能な前記実行待ちの処理が存在する場合、前記処理決定部により決定された処理を前記実行待ちの処理として待機させ、前記現状の論理回路で実行可能な前記実行待ちの処理を前記現状の論理回路に実行させる
ことを特徴とする情報処理装置。
【請求項４】
請求項１ないし請求項３のいずれか１項に記載の情報処理装置において、
前記書き換え部が前記現状の論理回路を書き換える場合、複数の処理のうちのいずれの処理を実行する論理回路に現状の論理回路を書き換えるかを選択する選択部をさらに有し、
前記入力制御部は、前記処理決定部から受けた処理データの受付順を示す順番情報を、処理データに対応付けて前記待機バッファ部に格納し、
前記選択部は、複数の前記実行待ちの処理のうち、受付順が先の処理を順番情報に基づいて選択し、
前記書き換え部は、前記待機バッファ部に保持される処理データの量が前記第１所定量を超える場合、前記選択部により選択された処理を実行する論理回路に前記現状の論理回路を書き換える
ことを特徴とする情報処理装置。
【請求項５】
請求項４に記載の情報処理装置において、
前記現状の論理回路で実行された処理の結果である結果データを、実行された処理に対応する順番情報が示す順番で次段に転送する出力制御部をさらに有し、
前記入力制御部は、前記現状の論理回路に実行させる処理に対応する順番情報を前記出力制御部に転送する
ことを特徴とする情報処理装置。
【請求項６】
請求項５に記載の情報処理装置において、
結果データが次段に転送される度に、出力番号をインクリメントする出力カウンタと、
次段への転送を待機する結果データを順番情報に対応付けて保持する出力バッファ部とをさらに有し、
前記出力制御部は、前記入力制御部から受けた順番情報が示す受付順と前記出力カウンタが示す出力番号とが異なる場合、前記現状の論理回路から受けた結果データを、前記入力制御部から受けた順番情報に対応付けて前記出力バッファ部に格納し、
前記書き換え部は、前記出力バッファ部に保持される結果データの量が第２所定量を超える場合、前記出力カウンタが示す出力番号と同じ順番を示す順番情報に対応する前記実行待ちの処理を実行する論理回路に前記現状の論理回路を書き換える
ことを特徴とする情報処理装置。
【請求項７】
請求項６に記載の情報処理装置において、
前記出力バッファ部に保持された結果データの数が予め決められた第２判定値以上で、かつ、前記出力カウンタが示す出力番号が前記出力バッファ部に保持された順番情報および前記入力制御部から受けた順番情報のそれぞれが示す受付順のいずれにも一致しない場合、前記出力バッファ部に保持される結果データの量が前記第２所定量を超えると判定する第２判定部をさらに有する
ことを特徴とする情報処理装置。
【請求項８】
論理回路を動的に書き換え可能な再構成回路を有する情報処理装置による情報処理方法において、
前記情報処理装置が有する処理決定部が、複数の処理のうちのいずれの処理を実行するかを決定し、
前記情報処理装置が有する入力制御部が、前記処理決定部により決定された処理を実行する論理回路が前記再構成回路に書き込まれていない場合、前記処理決定部から受ける新規の処理データを、前記情報処理装置が有する待機バッファ部に格納し、前記処理決定部により決定された処理を実行待ちの処理として待機させ、
前記情報処理装置が有する書き換え部が、前記待機バッファ部に保持される処理データの量が第１所定量を超える場合、前記再構成回路に書き込まれている現状の論理回路を、前記待機バッファ部に保持された複数の処理データの各々を使用する複数の実行待ちの処理のいずれかを実行する論理回路に書き換える
ことを特徴とする情報処理方法。
【請求項９】
論理回路を動的に書き換え可能な再構成回路を有する情報処理装置の動作を制御する情報処理プログラムにおいて、
前記情報処理装置が有する処理決定部が、複数の処理のうちのいずれの処理を実行するかを決定し、
前記情報処理装置が有する入力制御部が、前記処理決定部により決定された処理を実行する論理回路が前記再構成回路に書き込まれていない場合、前記処理決定部から受ける新規の処理データを、前記情報処理装置が有する待機バッファ部に格納し、前記処理決定部により決定された処理を実行待ちの処理として待機させ、
前記情報処理装置が有する書き換え部が、前記待機バッファ部に保持される処理データの量が第１所定量を超える場合、前記再構成回路に書き込まれている現状の論理回路を、前記待機バッファ部に保持された複数の処理データの各々を使用する複数の実行待ちの処理のいずれかを実行する論理回路に書き換える
処理を前記情報処理装置に実行させるための情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法および情報処理プログラムに関する。
【背景技術】
【０００２】
サーバ等の情報処理装置は、論理回路を書き換え可能なＦＰＧＡ（Field Programmable Gate Array）等のリコンフィギュラブル回路を有する場合がある。ＦＰＧＡには、処理を実行する論理回路が情報処理装置の起動時等に書き込まれる。また、ＦＰＧＡに書き込まれた論理回路は、例えば、回路の動作中に論理回路を変更する動的再構成により、再構成される。
【０００３】
例えば、ＦＰＧＡを有する情報処理装置は、キューに登録されたジョブを順に実行する際に、ジョブを実行する論理回路がＦＰＧＡに書き込まれていない場合、論理回路をＦＰＧＡに書き込み、ＦＰＧＡに書き込んだ論理回路を用いて、ジョブを実行する。なお、ジョブを実行する論理回路が書き込まれるＦＰＧＡ内の領域およびジョブで使用されるメモリの領域の少なくとも一方を確保できない場合に、キューに登録されたジョブの処理順序を変更する情報処理装置が提案されている(例えば、特許文献１参照)。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１６−２０６７２９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
例えば、ＦＰＧＡにおいて、論理回路の書き換えに要する時間は、論理回路が処理を実行する時間に比べて大きい。このため、ＦＰＧＡで論理回路を書き換えながら複数の処理を実行する場合、複数の処理のうちの最初の処理を開始してから最後の処理が終了するまでに掛かる時間は、動的再構成の回数が増加するほど、増加する。すなわち、動的再構成の回数が増加するほど、情報処理装置の性能は低下する。
【０００６】
１つの側面では、本発明は、論理回路を書き換え可能な再構成回路で複数の処理を実行する際の動的再構成の回数の増加を抑制することを目的とする。
【課題を解決するための手段】
【０００７】
１つの実施態様では、情報処理装置は、論理回路を動的に書き換え可能な再構成回路と処理決定部と待機バッファ部と入力制御部と書き換え部とを有する。処理決定部は、複数の処理のうちのいずれの処理を実行するかを決定する。待機バッファ部は、処理決定部により決定された処理のうちの実行待ちの処理で使用される処理データを保持する。入力制御部は、処理決定部により決定された処理を実行する論理回路が再構成回路に書き込まれていない場合、処理決定部から受ける新規の処理データを待機バッファ部に格納し、処理決定部により決定された処理を実行待ちの処理として待機させる。書き換え部は、待機バッファ部に保持される処理データの量が第１所定量を超える場合、再構成回路に書き込まれている現状の論理回路を、待機バッファ部に保持された複数の処理データの各々を使用する複数の実行待ちの処理のいずれかを実行する論理回路に書き換える。
【発明の効果】
【０００８】
１つの側面では、本発明は、論理回路を書き換え可能な再構成回路で複数の処理を実行する際の動的再構成の回数の増加を抑制することができる。
【図面の簡単な説明】
【０００９】
【図１】情報処理装置、情報処理方法および情報処理プログラムの一実施形態を示す図である。
【図２】図１に示した情報処理装置の動作の概要を示す図である。
【図３】図１に示した情報処理装置の動作の一例を示す図である。
【図４】情報処理装置、情報処理方法および情報処理プログラムの別の実施形態を示す図である。
【図５】図４に示した再構成回路が実行するパイプライン処理の一例を示す図である。
【図６】図４に示した判定部の動作の一例を示す図である。
【図７】図４に示した判定部の一例を示す図である。
【図８】図４に示した情報処理装置の動作の一例を示す図である。
【図９】情報処理装置、情報処理方法および情報処理プログラムの別の実施形態を示す図である。
【図１０】図９に示した判定部の動作の一例を示す図である。
【図１１】図９に示した判定部の一例を示す図である。
【図１２】図９に示した情報処理装置の動作の一例を示す図である。
【図１３】図９に示した情報処理装置の動作の別の例を示す図である。
【発明を実施するための形態】
【００１０】
以下、実施形態について、図面を用いて説明する。
【００１１】
図１は、情報処理装置、情報処理方法および情報処理プログラムの一実施形態を示す。図１に示す情報処理装置１０は、サーバ等である。例えば、情報処理システムは、サーバ等の情報処理装置１０を有する。
【００１２】
情報処理装置１０は、例えば、ＣＰＵ（Central Processing Unit）等のプロセッサ１００、メモリ１１０、再構成回路２００および書き換え部３００を有する。プロセッサ１００、メモリ１１０および再構成回路２００は、バス１２０に接続される。そして、情報処理装置１０は、複数のステージを含むパイプラインによるパイプライン処理を、再構成回路２００を用いて実行する。
【００１３】
例えば、プロセッサ１００は、メモリ１１０に格納される情報処理プログラムを実行し、情報処理装置１０の動作を制御する。なお、情報処理プログラムは、情報処理装置１０の記憶装置のうちのメモリ１１０以外の記憶装置に格納されてもよく、情報処理装置１０の外部の記憶装置に格納されてもよい。また、情報処理プログラムは、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＤＶＤ（Digital Versatile Disc）、ＵＳＢ（Universal Serial Bus）メモリ等のコンピュータにより読み取り可能な記録媒体２０に格納されてもよい。この場合、記録媒体２０に格納された情報処理プログラムは、情報処理装置１０に設けられる図示しない入出力インタフェースを介して記録媒体２０からメモリ１１０等に転送される。なお、情報処理プログラムは、記録媒体２０から図示しないハードディスクに転送された後、ハードディスクからメモリ１１０に転送されてもよい。
【００１４】
再構成回路２００は、例えば、論理回路を動的に書き換え可能なＦＰＧＡ等である。例えば、再構成回路２００は、論理回路を書き換え可能な複数の回路領域Ｒ（Ｒ１、Ｒ２、Ｒ３、Ｒ４、Ｒ５、Ｒ６）を有する。なお、回路領域Ｒの数は、６つに限定されない。
【００１５】
各回路領域Ｒの論理回路は、書き換え部３００により、書き換えられる。図１に示す例では、書き換え部３００は、回路領域Ｒ１、Ｒ２、Ｒ３の各々に、処理決定部２１０、入力制御部２２０および待機バッファ部２３０として機能する論理回路をそれぞれ書き込む。これにより、再構成回路２００は、処理決定部２１０、入力制御部２２０および待機バッファ部２３０を有する。また、書き換え部３００は、回路領域Ｒ４、Ｒ５、Ｒ６を含む回路領域群に、論理回路２４０を書き込む。なお、論理回路２４０は、再構成回路２００内の他の回路の動作中に動作していない回路領域Ｒの論理回路を変更する動的再構成により、再構成される論理回路である。図１に示す例では、論理回路２４０は、図２に示す処理Ｂａを実行する論理回路２４０Ｂａおよび処理Ｂｂを実行する論理回路２４０Ｂｂのいずれかに再構成される。なお、再構成される論理回路２４０Ｂの数は、２つに限定されない。
【００１６】
処理決定部２１０は、複数の処理（例えば、図２に示す処理Ｂａ、Ｂｂ）のうちのいずれの処理を実行するかを決定する。そして、処理決定部２１０は、決定した処理で使用される処理データを入力制御部２２０に出力する。入力制御部２２０は、処理決定部２１０により決定された処理を実行する論理回路２４０が再構成回路２００に書き込まれていない場合、処理決定部２１０から受ける新規の処理データを待機バッファ部２３０に格納する。これにより、処理決定部２１０により決定された処理は、実行待ちの処理として待機する。すなわち、待機バッファ部２３０は、処理決定部２１０により決定された処理のうちの実行待ちの処理で使用される処理データを保持する。
【００１７】
なお、情報処理装置１０の構成は、図１に示す例に限定されない。例えば、再構成回路２００には、処理決定部２１０、入力制御部２２０、待機バッファ部２３０および論理回路２４０以外の回路（例えば、論理回路２４０の処理結果を使用する論理回路等）がさらに書き込まれてもよい。
【００１８】
図２は、図１に示した情報処理装置１０の動作の概要を示す。なお、図２に示すかぎ括弧内には、入力制御部２２０および待機バッファ部２３０が情報処理装置１０から省かれた従来の情報処理装置の動作の概要を示す。
【００１９】
図２に示す動作では、再構成回路２００は、処理Ａを実行するＡステージと処理Ｂを実行するＢステージとを有するパイプラインによるパイプライン処理を実行する。処理Ａは、複数の処理Ｂ（Ｂａ、Ｂｂ）のうちのいずれの処理Ｂを実行するかを決定する処理である。なお、図２では、複数回実行される処理Ａを区別するために、符号の末尾に数字（１、２、３、４、５、６）を付している。同様に、複数回実行される処理Ｂａを区別するために、符号の末尾に数字（１、３、５）を付し、複数回実行される処理Ｂｂを区別するために、符号の末尾に数字（２、４、６）を付している。処理Ａ、Ｂａ、Ｂｂの符号の末尾の数字は、パイプラインへの投入順を示す。
【００２０】
処理サイクルＣＹＣ１では、処理決定部２１０は、複数の処理Ｂ（Ｂａ、Ｂｂ）のうちの処理Ｂａ１をＢステージで実行する処理Ｂに決定し、処理Ｂａ１で使用する処理データを入力制御部２２０に出力する。これにより、入力制御部２２０は、処理Ｂａ１で使用される処理データを新規の処理データとして処理決定部２１０から受ける。
【００２１】
なお、図２では、論理回路２４０は、処理サイクルＣＹＣ１が開始する前に、論理回路２４０Ｂａ、２４０Ｂｂのうち、処理Ｂａを実行する論理回路２４０Ｂａに構成される。図１に示した例では、論理回路２４０Ｂａは、回路領域Ｒ４、Ｒ５、Ｒ６を含む回路領域群に書き込まれる。この場合、論理回路２４０Ｂｂを書き込むための回路領域Ｒの空きが不足する。このため、論理回路２４０Ｂａ、２４０Ｂａの一方が再構成回路２００に書き込まれる。
【００２２】
処理サイクルＣＹＣ２では、入力制御部２２０は、処理決定部２１０により決定された処理Ｂａ１を、再構成回路２００に書き込まれている現状の論理回路２４０Ｂａに実行させる。例えば、入力制御部２２０は、処理決定部２１０から受けた新規の処理データ（処理Ｂａ１で使用される処理データ）を現状の論理回路２４０Ｂａに転送して、処理Ｂａ１を現状の論理回路２４０Ｂａに実行させる。また、処理サイクルＣＹＣ２では、処理決定部２１０は、複数の処理Ｂ（Ｂａ、Ｂｂ）のうちの処理Ｂｂ２をＢステージで実行する処理Ｂに決定し、処理Ｂｂ２で使用する処理データを入力制御部２２０に出力する。
【００２３】
処理サイクルＣＹＣ３では、再構成回路２００に書き込まれている現状の論理回路２４０Ｂａは、処理決定部２１０により決定された処理Ｂｂ２を実行する論理回路２４０Ｂｂと異なる。このため、入力制御部２２０は、処理決定部２１０から受けた新規の処理データ（処理Ｂｂ２で使用される処理データ）を待機バッファ部２３０に格納し、処理Ｂｂ２の実行を待機させる。したがって、処理サイクルＣＹＣ３では、論理回路２４０Ｂａは、処理Ｂｂ２を実行しない。
【００２４】
このように、入力制御部２２０は、処理決定部２１０により決定された処理Ｂｂ２を実行する論理回路２４０Ｂｂが再構成回路２００に書き込まれていない場合、処理決定部２１０から受ける新規の処理データを待機バッファ部２３０に格納する。そして、入力制御部２２０は、処理決定部２１０により決定された処理Ｂｂ２を実行待ちの処理Ｂｂ２として待機させる。
【００２５】
ここで、図２に示す例では、待機バッファ部２３０の記憶領域のサイズは、３つの処理データを記憶するサイズである。この場合、例えば、待機バッファ部２３０に新規の処理データを格納する空きがあるかを判定する際に使用する第１判定値が、待機バッファ部２３０が保持可能な処理データの数（“３”）より１つ少ない数（“２”）に予め設定される。処理サイクルＣＹＣ３では、待機バッファ部２３０は、処理Ｂｂ２で使用される１つの処理データを保持する。すなわち、待機バッファ部２３０に保持される処理データの数は、第１判定値（“２”）未満である。したがって、待機バッファ部２３０は、新規の処理データを格納する空きを有する。このため、論理回路２４０の書き換えは実行されない。
【００２６】
また、処理サイクルＣＹＣ３では、処理決定部２１０は、複数の処理Ｂ（Ｂａ、Ｂｂ）のうちの処理Ｂａ３をＢステージで実行する処理Ｂに決定し、処理Ｂａ３で使用する処理データを入力制御部２２０に出力する。
【００２７】
処理サイクルＣＹＣ４では、入力制御部２２０および処理決定部２１０は、処理サイクルＣＹＣ２と同様な動作を実行する。例えば、入力制御部２２０は、処理決定部２１０により決定された処理Ｂａ３を、現状の論理回路２４０Ｂａに実行させる。また、処理決定部２１０は、複数の処理Ｂ（Ｂａ、Ｂｂ）のうちの処理Ｂｂ４をＢステージで実行する処理Ｂに決定し、処理Ｂｂ４で使用する処理データを入力制御部２２０に出力する。
【００２８】
処理サイクルＣＹＣ５では、入力制御部２２０および処理決定部２１０は、処理サイクルＣＹＣ３と同様な動作を実行する。例えば、入力制御部２２０は、処理決定部２１０から受けた新規の処理データ（処理Ｂｂ４で使用される処理データ）を待機バッファ部２３０に格納し、処理Ｂｂ４の実行を待機させる。これにより、待機バッファ部２３０は、処理Ｂｂ４で使用される処理データと処理Ｂｂ２で使用される処理データとを保持する。
【００２９】
また、処理決定部２１０は、複数の処理Ｂ（Ｂａ、Ｂｂ）のうちの処理Ｂａ５をＢステージで実行する処理Ｂに決定し、処理Ｂａ５で使用する処理データを入力制御部２２０に出力する。処理Ｂａ５は次の処理サイクルＣＹＣ６で実行されるため、処理サイクルＣＹＣ６においても待機バッファ部２３０に保持される処理データの数は、第１判定値（“２”）と同じ数に維持され、第１判定値を超えない。このため、論理回路２４０の書き換えは実行されない。なお、第１判定値と同じ数の処理データの量の合計は、例えば、第１所定量に対応する。
【００３０】
処理サイクルＣＹＣ６では、入力制御部２２０および処理決定部２１０は、処理サイクルＣＹＣ４と同様な動作を実行する。例えば、入力制御部２２０は、処理決定部２１０により決定された処理Ｂａ５を、現状の論理回路２４０Ｂａに実行させる。
【００３１】
また、処理決定部２１０は、複数の処理Ｂ（Ｂａ、Ｂｂ）のうちの処理Ｂｂ６をＢステージで実行する処理Ｂに決定し、処理Ｂｂ６で使用する処理データを入力制御部２２０に出力する。処理Ｂｂ６で使用される処理データは、処理Ｂｂ６が次の処理サイクルＣＹＣ７で実行されないため、処理サイクルＣＹＣ７において待機バッファ部２３０に格納される。このため、書き換え部３００は、待機バッファ部２３０に保持される処理データの数が処理サイクルＣＹＣ７において第１判定値（“２”）を超えると判定する。すなわち、書き換え部３００は、待機バッファ部２３０に保持される処理データの量が第１所定量を超えると判定する。そして、書き換え部３００は、論理回路２４０Ｂａを実行待ちの各処理Ｂｂ２、Ｂｂ４、Ｂｂ６を実行する論理回路２４０Ｂｂに書き換える処理を、処理サイクルＣＹＣ７から開始する。
【００３２】
処理サイクルＣＹＣ７では、入力制御部２２０は、処理決定部２１０から受けた新規の処理データ（処理Ｂｂ６で使用される処理データ）を待機バッファ部２３０に格納し、処理Ｂｂ６の実行を待機させる。これにより、待機バッファ部２３０は、処理Ｂｂ２、Ｂｂ４、Ｂｂ６の各々で使用される３つの処理データを保持する。また、書き換え部３００は、上述したように、論理回路２４０Ｂａを実行待ちの各処理Ｂｂ２、Ｂｂ４、Ｂｂ６を実行する論理回路２４０Ｂｂに書き換える処理を開始する。
【００３３】
このように、書き換え部３００は、待機バッファ部２３０に保持される処理データの量が第１所定量を超える場合、再構成回路２００に書き込まれている現状の論理回路２４０を書き換える。例えば、書き換え部３００は、現状の論理回路２４０Ｂａを、待機バッファ部２３０に保持された複数の処理データの各々を使用する複数の実行待ちの処理Ｂｂ２、Ｂｂ４、Ｂｂ６のいずれかを実行する論理回路２４０Ｂｂに書き換える。
【００３４】
処理サイクルＣＹＣ８では、書き換え部３００は、論理回路２４０Ｂａを論理回路２４０Ｂｂに書き換える処理を継続する。図２に示す例では、論理回路２４０の再構成に要する処理サイクルＣＹＣの数は、２サイクル（例えば、処理サイクルＣＹＣ７、ＣＹＣ８の２サイクル）である。なお、論理回路２４０の再構成に要する処理サイクルＣＹＣの数は、２サイクルに限定されない。
【００３５】
処理サイクルＣＹＣ９では、再構成回路２００に書き込まれている現状の論理回路２４０は、各処理Ｂｂ２、Ｂｂ４、Ｂｂ６を実行する論理回路２４０Ｂｂである。このため、入力制御部２２０は、実行待ちの処理Ｂｂ２、Ｂｂ４、Ｂｂ６のうち、Ｂステージで実行する処理Ｂに決定されてからの待機時間が最も長い処理Ｂｂ２を、現状の論理回路２４０Ｂｂに実行させる。例えば、入力制御部２２０は、処理Ｂｂ２で使用される処理データを待機バッファ部２３０から現状の論理回路２４０Ｂｂに転送して、処理Ｂｂ２を現状の論理回路２４０Ｂｂに実行させる。これにより、処理Ｂｂ２で使用される処理データが待機バッファ部２３０から削除される。
【００３６】
処理サイクルＣＹＣ１０では、入力制御部２２０は、実行待ちの処理Ｂｂ４、Ｂｂ６のうち、Ｂステージで実行する処理Ｂに決定されてからの待機時間が最も長い処理Ｂｂ４を、現状の論理回路２４０Ｂｂに実行させる。例えば、入力制御部２２０は、処理Ｂｂ４で使用される処理データを待機バッファ部２３０から現状の論理回路２４０Ｂｂに転送して、処理Ｂｂ４を現状の論理回路２４０Ｂｂに実行させる。これにより、処理Ｂｂ４で使用される処理データが待機バッファ部２３０から削除される。
【００３７】
処理サイクルＣＹＣ１１では、入力制御部２２０は、実行待ちの処理Ｂｂ６を現状の論理回路２４０Ｂｂに実行させる。例えば、入力制御部２２０は、処理Ｂｂ６で使用される処理データを待機バッファ部２３０から現状の論理回路２４０Ｂｂに転送して、処理Ｂｂ６を現状の論理回路２４０Ｂｂに実行させる。これにより、待機バッファ部２３０に保持された処理データが無くなり、処理Ａを６回実行する場合の情報処理装置１０の動作は、終了する。このように、図２に示す動作では、最初の処理Ａ１を実行してから、最後の処理Ａ６で決定した処理Ｂｂ６が終了するまでに要する処理サイクルＣＹＣの数は、１１サイクルである。
【００３８】
ここで、例えば、入力制御部２２０および待機バッファ部２３０が情報処理装置１０から省かれた従来の情報処理装置では、図２のかぎ括弧内に示すように、処理Ｂａと処理Ｂｂとが交互に実行される。このため、処理Ｂａ１、Ｂｂ２、Ｂａ３、Ｂｂ４、Ｂａ５の各々が終了する度に、論理回路２４０の書き換えが発生する。この場合、動的再構成の回数（論理回路２４０の書き換え回数）は、５回であり、情報処理装置１０に比べて４回増加する。論理回路２４０の書き換えが５回実行される場合、最初の処理Ａ１を実行してから、最後の処理Ａ６で決定した処理Ｂｂ６が終了するまでに要する処理サイクルＣＹＣの数は、１７サイクルであり、情報処理装置１０に比べて６サイクル増加する。
【００３９】
これに対し、情報処理装置１０では、現状の論理回路２４０で実行できない処理Ｂで使用される処理データを入力制御部２２０が受ける度に論理回路２４０を書き換えるわけではない。すなわち、情報処理装置１０では、現状の論理回路２４０で実行できない処理ＢをＢステージで実行する処理Ｂに決定される度に論理回路２４０を書き換えるわけではない。このため、情報処理装置１０では、複数の処理Ｂａ、Ｂｂを実行する際の動的再構成の回数の増加を従来に比べて抑制することができる。この結果、情報処理装置１０では、複数の処理Ｂを実行するのに要する処理サイクルＣＹＣの数の増加を従来に比べて抑制することができる。
【００４０】
なお、再構成回路２００により実行される処理は、パイプライン処理に限定されない。また、図２に示す例では、書き換え部３００は、論理回路２４０の書き換えを実行することを処理サイクルＣＹＣ６で決定しているが、論理回路２４０の書き換えを実行することを処理サイクルＣＹＣ７中に決定してもよい。例えば、書き換え部３００は、各処理サイクルＣＹＣにおいて、処理データが待機バッファ部２３０に格納されるタイミングおよび処理Ｂが開始されるタイミングより後のタイミングで、待機バッファ部２３０に保持された処理データの数を参照してもよい。そして、書き換え部３００は、待機バッファ部２３０に保持された処理データの数が第１判定値を超えたか否かを判定し、待機バッファ部２３０に保持された処理データの数が第１判定値を超えた場合、論理回路２４０の書き換えを実行してもよい。
【００４１】
図３は、図１に示した情報処理装置１０の動作の一例を示す。図３に示す動作は、論理回路を書き換え可能な再構成回路を有する情報処理装置による情報処理方法および情報処理装置の動作を制御する情報処理プログラムの一態様である。なお、図３に示す動作は、処理ＡがＡステージに投入される場合の情報処理装置１０の動作を示す。例えば、ステップＳ１１０、Ｓ１２０、Ｓ１３０の処理は、ステップＳ１００の処理が実行された処理サイクルＣＹＣに実行される。また、ステップＳ２１０、Ｓ２１２、Ｓ２２０、Ｓ２３０、Ｓ２３２の処理は、ステップＳ１００の処理が実行された処理サイクルＣＹＣの次の処理サイクルＣＹＣに実行される。
【００４２】
ステップＳ１００では、処理決定部２１０は、複数の処理Ｂのうち、Ｂステージで実行する処理Ｂを決定し、決定した処理Ｂで使用する処理データを入力制御部２２０に転送する。
【００４３】
次に、ステップＳ１１０では、入力制御部２２０は、再構成回路２００に書き込まれている現状の論理回路２４０で実行する処理Ｂが待機中か否かを判定する。例えば、入力制御部２２０は、現状の論理回路２４０で実行可能な処理Ｂで使用される処理データが待機バッファ部２３０に保持されているか否かを判定する。現状の論理回路２４０で実行する処理Ｂが待機中の場合、情報処理装置１０の動作は、ステップＳ２１０に移る。一方、現状の論理回路２４０で実行する処理Ｂが待機中でない場合、情報処理装置１０の動作は、ステップＳ１２０に移る。
【００４４】
ステップＳ１２０では、入力制御部２２０は、処理決定部２１０により決定された処理Ｂ（ステップＳ１００で決定した処理Ｂ）が現状の論理回路２４０で実行する処理Ｂか否かを判定する。処理決定部２１０により決定された処理Ｂが現状の論理回路２４０で実行する処理Ｂの場合、情報処理装置１０の動作は、ステップＳ２２０に移る。一方、処理決定部２１０により決定された処理Ｂが現状の論理回路２４０で実行する処理Ｂでない場合、情報処理装置１０の動作は、ステップＳ１３０に移る。
【００４５】
ステップＳ１３０では、書き換え部３００は、待機バッファ部２３０に保持される処理データの量が第１所定量を超えるか否かを判定する。例えば、書き換え部３００は、ステップＳ１３０の開始時点で待機バッファ部２３０に保持されている処理データの数が第１判定値と同じ数である場合、待機バッファ部２３０に保持される処理データの数が次の処理サイクルＣＹＣで第１判定値を超えると判定する。第１判定値は、図２で説明したように、第１所定量に対応する処理データの数である。待機バッファ部２３０に保持される処理データの量が第１所定量を超える場合、情報処理装置１０の動作は、ステップＳ２３０に移る。一方、待機バッファ部２３０に保持される処理データの量が第１所定量を超えない場合、情報処理装置１０の動作は、ステップＳ２３２に移る。
【００４６】
ステップＳ２１０では、現状の論理回路２４０は、現状の論理回路２４０で実行可能な実行待ちの処理Ｂを実行する。例えば、入力制御部２２０は、待機バッファ部２３０に保持されている処理データのうち、現状の論理回路２４０で実行可能な処理Ｂで使用される処理データを現状の論理回路２４０に転送し、実行待ちの処理Ｂを現状の論理回路２４０に実行させる。
【００４７】
次に、ステップＳ２１２では、入力制御部２２０は、処理決定部２１０から受けた新規の処理データ（ステップＳ１００で決定した処理Ｂで使用される処理データ）を待機バッファ部２３０に格納する。
【００４８】
ステップＳ２２０では、現状の論理回路２４０は、処理決定部２１０により決定された処理Ｂ（ステップＳ１００で決定した処理Ｂ）を実行する。例えば、入力制御部２２０は、処理決定部２１０から受けた新規の処理データを現状の論理回路２４０に転送し、新規の処理データを使用する処理Ｂを現状の論理回路２４０に実行させる。
【００４９】
ステップＳ２３０では、書き換え部３００は、再構成回路２００に書き込まれている現状の論理回路２４０を複数の実行待ちの処理Ｂのいずれかを実行する論理回路２４０に書き換える。例えば、書き換え部３００は、複数の実行待ちの処理Ｂのうち、Ｂステージで実行する処理Ｂに決定されてからの待機時間が最も長い処理Ｂを特定し、特定した処理Ｂを実行する論理回路２４０に現状の論理回路２４０を書き換える。
【００５０】
次に、ステップＳ２３２では、入力制御部２２０は、ステップＳ２１２の処理と同様に、処理決定部２１０から受けた新規の処理データ（ステップＳ１００で決定した処理Ｂで使用される処理データ）を待機バッファ部２３０に格納する。
【００５１】
なお、情報処理装置１０の動作は、図３に示す例に限定されない。例えば、ステップＳ２１０、Ｓ２１２の各々の処理を開始する順番は、図３に示した順番と逆でもよい。また、例えば、ステップＳ２１０、Ｓ２１２各々の処理は、並列に実行されてもよい。
【００５２】
また、例えば、全ての処理ＡがＡステージに投入された後の情報処理装置１０の動作は、図３に示す動作からステップＳ１００、Ｓ１２０、Ｓ２１２、Ｓ１３０、Ｓ２２０、Ｓ２３２が省かれる。例えば、現状の論理回路２４０で実行する処理Ｂが待機中の場合、ステップＳ２１０の処理が実行され、現状の論理回路２４０で実行する処理Ｂが待機中でない場合、ステップＳ２３０の処理が実行される。
【００５３】
以上、図１から図３に示す実施形態では、現状の論理回路２４０で実行できない処理ＢをＢステージで実行する処理Ｂに決定される度に論理回路２４０を書き換える場合に比べて、論理回路２４０の書き換え回数を削減することができる。すなわち、論理回路を書き換え可能な再構成回路２００で複数の処理Ｂを実行する際の動的再構成の回数の増加を抑制することができる。
【００５４】
これにより、情報処理装置１０の性能を向上させることができる。特に、論理回路２４０の書き換えに要する時間が、論理回路２４０が処理Ｂを実行する時間に比べて大きい場合、論理回路２４０の書き換え回数を削減することによる情報処理装置１０の性能向上の効果は、大きくなる。
【００５５】
図４は、情報処理装置、情報処理方法および情報処理プログラムの別の実施形態を示す。図１から図３で説明した要素と同一または同様の要素については、同一または同様の符号を付し、これ等については、詳細な説明を省略する。図４に示す情報処理装置１２は、サーバ等である。例えば、情報処理システムは、サーバ等の情報処理装置１２を有する。
【００５６】
情報処理装置１２は、例えば、ＣＰＵ等のプロセッサ１００、メモリ１１０、再構成回路２０２および書き換え部３０２を有し、再構成回路２０２を用いてパイプライン処理を実行する。プロセッサ１００、メモリ１１０および再構成回路２０２は、バス１２０に接続される。例えば、プロセッサ１００は、メモリ１１０に格納される情報処理プログラムを実行し、情報処理装置１２の動作を制御する。
【００５７】
再構成回路２０２は、例えば、論理回路を動的に書き換え可能なＦＰＧＡ等である。例えば、再構成回路２０２は、論理回路を書き換え可能な複数の回路領域Ｒ（Ｒ１、Ｒ２、Ｒ３、Ｒ４、Ｒ５、Ｒ６、Ｒ７、Ｒ８、Ｒ９）を有する。なお、回路領域Ｒの数は、９つに限定されない。
【００５８】
各回路領域Ｒの論理回路は、書き換え部３０２により、書き換えられる。図４に示す例では、書き換え部３０２は、回路領域Ｒ１、Ｒ４を含む回路領域群に処理決定部２１２として機能する論理回路を書き込む。また、書き換え部３０２は、回路領域Ｒ２、Ｒ３、Ｒ６の各々に、入力制御部２２２、待機バッファ部２３２および判定部２８０として機能する論理回路をそれぞれ書き込み、回路領域Ｒ７に論理回路２７０を書き込む。さらに、書き換え部３０２は、回路領域Ｒ５、Ｒ６、Ｒ８、Ｒ９を含む回路領域群に、論理回路２４２を書き込む。論理回路２４２は、動的再構成により再構成される論理回路である。例えば、再構成回路２０２が図５に示すプログラムを実行する場合、論理回路２４２は、処理Ｂａ、Ｂｂ、・・・、Ｂｎをそれぞれ実行する論理回路２４２Ｂａ、２４２Ｂｂ、・・・、２４２Ｂｎのいずれかに再構成される。なお、再構成される論理回路２４２Ｂの数は、図４に示す例に限定されない。
【００５９】
このように、図４に示す再構成回路２０２は、処理決定部２１２、入力制御部２２２、待機バッファ部２３２、論理回路２４２、２７０および判定部２８０を有する。
【００６０】
処理決定部２１２は、図１に示した処理決定部２１０と同一または同様である。例えば、処理決定部２１２は、複数の処理（例えば、図５に示す処理Ｂａ、Ｂｂ、・・・、Ｂｎ）のうちのいずれの処理を実行するかを決定する。そして、処理決定部２１２は、決定した処理で使用される処理データＰＤＴｊと、決定した処理を示す実行パス情報ＰＩＮＦｊとを入力制御部２２２に出力する。
【００６１】
入力制御部２２２は、図１に示した入力制御部２２０と同一または同様である。例えば、入力制御部２２２は、処理決定部２１２により決定された処理を実行する論理回路２４２が再構成回路２０２に書き込まれていない場合、処理決定部２１２から受ける新規の処理データＰＤＴｊと実行パス情報ＰＩＮＦｊを待機バッファ部２３２に格納する。これにより、処理決定部２１２により決定された処理は、実行待ちの処理として待機する。また、入力制御部２２２は、処理決定部２１２から受けた処理データＰＤＴの受付順を示す順番情報ＮＩＮＦを、処理データＰＤＴｊおよび実行パス情報ＰＩＮＦｊに対応付けて待機バッファ部２３２に格納する。
【００６２】
図４に示す例では、処理決定部２１２により決定された処理を実行する論理回路２４２が再構成回路２０２に書き込まれているか否かの判定は、判定部２８０により実行される。そして、入力制御部２２２は、処理決定部２１２により決定された処理を実行する論理回路２４２が再構成回路２０２に書き込まれていない場合、処理データＰＤＴｊ等の待機バッファ部２３２への格納を要求する格納要求ＢＵＦＩＮを判定部２８０から受ける。これにより、入力制御部２２２は、処理決定部２１２により決定された処理を実行する論理回路２４２が再構成回路２０２に書き込まれていない場合、処理データＰＤＴｊ等を待機バッファ部２３２に格納する。なお、入力制御部２２２は、処理決定部２１２により決定された処理を実行する論理回路２４２が再構成回路２０２に書き込まれているか否かの判定を実行し、判定結果を判定部２８０に通知してもよい。
【００６３】
待機バッファ部２３２は、図１に示した待機バッファ部２３０と同一または同様である。例えば、待機バッファ部２３２は、処理決定部２１２により決定された処理のうちの実行待ちの処理で使用される処理データＰＤＴを保持する。なお、図４に示すかぎ括弧内には、待機バッファ部２３２に保持される情報の一例を示す。例えば、待機バッファ部２３２は、実行パス情報ＰＩＮＦｗ（ＰＩＮＦｗ１、ＰＩＮＦｗ２、・・・）、順番情報ＮＩＮＦ（ＮＩＮＦ１、ＮＩＮＦ２、・・・）および処理データＰＤＴ（ＰＤＴ１、ＰＤＴ２、・・・）を保持する。
【００６４】
実行パス情報ＰＩＮＦｗは、処理決定部２１２から入力制御部２２２に出力された実行パス情報ＰＩＮＦｊのうち、入力制御部２２２から待機バッファ部２３２に転送された実行パス情報ＰＩＮＦである。図４では、複数の実行パス情報ＰＩＮＦｗを区別するために、符号の末尾に数字（１、２、・・・）を付している。同様に、複数の順番情報ＮＩＮＦを区別するために、符号の末尾に数字（１、２、・・・）を付し、複数の処理データＰＤＴを区別するために、符号の末尾に数字（１、２、・・・）を付している。実行パス情報ＰＩＮＦｗ、順番情報ＮＩＮＦ、処理データＰＤＴの符号の末尾の数字は、互いに対応している。
【００６５】
論理回路２７０は、論理回路２４２の次段の論理回路であり、論理回路２４２の処理結果を使用して所定の処理を実行する。
【００６６】
判定部２８０は、待機バッファ部２３２に保持される処理データＰＤＴの量が第１所定量を超えるかを判定する第１判定部の一例である。例えば、判定部２８０は、論理回路２４２から受ける実行パス情報ＰＩＮＦｉ、待機バッファ部２３２から受けるオールモストフル情報ＡＦＬ１等に基づいて、待機バッファ部２３２に保持される処理データＰＤＴの量が第１所定量を超えるか否かを判定する。実行パス情報ＰＩＮＦｉは、再構成回路２０２に書き込まれている現状の論理回路２４２で実行される処理を示す実行パス情報ＰＩＮＦである。また、オールモストフル情報ＡＦＬ１は、待機バッファ部２３２に保持された処理データＰＤＴの数が予め決められた第１判定値に達したことを示す情報である。例えば、論理１のオールモストフル情報ＡＦＬ１は、待機バッファ部２３２に保持された処理データＰＤＴの数が第１判定値以上であることを示す。また、論理０のオールモストフル情報ＡＦＬ１は、待機バッファ部２３２に保持された処理データＰＤＴの数が第１判定値未満であることを示す。
【００６７】
なお、第１判定値は、第１所定量に応じて、予め決められる。例えば、第１所定量が、実行パス情報ＰＩＮＦｗ、順番情報ＮＩＮＦおよび処理データＰＤＴを含む１個の情報群のデータ量を（ｋ−１）倍したデータ量である場合、第１判定値は、（ｋ−１）に予め設定される。（ｋ−１）に設定された第１判定値は、待機バッファ部２３２の記憶領域のサイズがｋ個の情報群を記憶するサイズの場合、待機バッファ部２３２が１個の情報群を記憶する空きを有することを示す。
【００６８】
例えば、判定部２８０は、待機バッファ部２３２が保持する処理データＰＤＴの数が第１判定値以上で、待機バッファ部２３２が保持する処理データＰＤＴの数が増える場合、待機バッファ部２３２が保持する処理データＰＤＴの量が第１所定量を超えると判定する。なお、待機バッファ部２３２が保持する処理データＰＤＴの数が増える場合とは、例えば、待機バッファ部２３２に処理データＰＤＴｊが格納され、かつ、待機バッファ部２３２に保持された処理データＰＤＴが論理回路２４２に出力されない場合である。すなわち、処理決定部２１２により決定された処理を実行する論理回路と現状の論理回路２４２とが異なり、かつ、実行待ちの処理のいずれも現状の論理回路２４２で実行可能でない場合、待機バッファ部２３２に保持される処理データＰＤＴの数は増加する。
【００６９】
このように、判定部２８０は、待機バッファ部２３２に保持される処理データＰＤＴの量が第１所定量を超えるか否かを判定する。そして、判定部２８０は、例えば、待機バッファ部２３２に保持される処理データＰＤＴの量が第１所定量を超える場合、論理回路２４２の書き換えを要求する書き換え要求ＣＲＥＱおよび実行パス情報ＰＩＮＦｎｅｘｔを書き換え部３０２に出力する。実行パス情報ＰＩＮＦｎｅｘｔは、書き換え後の論理回路２４２が実行する処理Ｂを示す実行パス情報ＰＩＮＦである。判定部２８０は、現状の論理回路２４２の書き換えを、実行パス情報ＰＩＮＦｎｅｘｔを用いて書き換え部３０２に要求した場合、実行パス情報ＰＩＮＦｎｅｘｔを実行パス情報ＰＩＮＦｉとして保持してもよい。この場合、現状の論理回路２４２から判定部２８０に実行パス情報ＰＩＮＦｉを転送する処理は、省かれてもよい。
【００７０】
また、判定部２８０は、処理決定部２１２により決定された処理を待機させる場合、処理決定部２１２から入力制御部２２２に転送された処理データＰＤＴｊ等の待機バッファ部２３２への格納を要求する格納要求ＢＵＦＩＮを、入力制御部２２２に出力する。
【００７１】
書き換え部３０２は、図１に示した書き換え部３００と同一または同様である。例えば、書き換え部３０２は、判定部２８０の判定結果に基づいて、現状の論理回路２４２の書き換えを実行する。
【００７２】
なお、情報処理装置１２の構成は、図４に示す例に限定されない。例えば、情報処理装置１２は、判定部２８０として機能する論理回路を再構成回路２０２に書き込まずに、判定部２８０を再構成回路２０２の外部に有してもよい。
【００７３】
図５は、図４に示した再構成回路２０２が実行するパイプライン処理の一例を示す。図５に示すソースプログラムは、処理Ａを実行するＡステージと処理Ｂ（Ｂａ、Ｂｂ、・・・、Ｂｎ）を実行するＢステージと処理Ｃを実行するＣステージとを有するパイプラインによるパイプライン処理を、再構成回路２０２に繰り返し実行させる。処理Ｂ（Ｂａ、Ｂｂ、・・・、Ｂｎ）は、処理Ａの分岐先の処理であり、処理Ｂａ、Ｂｂ、・・・、Ｂｎのいずれに分岐するかは、条件文によって決められる。
【００７４】
例えば、処理決定部２１２は、Ａステージにおいて、処理の分岐先を判定する。すなわち、処理決定部２１２は、複数の処理Ｂのうちのいずれの処理Ｂを実行するかを決定する処理ＡをＡステージで実行する。また、論理回路２４２は、処理Ｂａ、Ｂｂ、・・・、Ｂｎのいずれかの処理ＢをＢステージで実行する。そして、論理回路２７０は、処理Ｂの処理結果を用いて、処理ＣをＣステージで実行する。
【００７５】
なお、図５に示す例では、処理Ｂａ、Ｂｂ、・・・、Ｂｎの各々を実行する複数の論理回路２４２Ｂの１つが再構成回路２０２に書き込まれた場合、他の論理回路２４２Ｂを書き込むための回路領域Ｒの空きが不足する。このため、再構成回路２０２に書き込まれた論理回路２４２Ｂは、動的再構成により、処理Ｂａ、Ｂｂ、・・・、Ｂｎのいずれかの処理Ｂを実行する論理回路２４２Ｂ（２４２Ｂａ、２４２Ｂｂ、・・・、２４２Ｂｎのいずれか）に再構成される。論理回路２４２Ｂの再構成は、図４で説明したように、判定部２８０の判定結果に基づいて、書き換え部３０２により実行される。
【００７６】
図６は、図４に示した判定部２８０の動作の一例を示す。図６に示す動作は、論理回路を書き換え可能な再構成回路を有する情報処理装置による情報処理方法および情報処理装置の動作を制御する情報処理プログラムの一態様である。
【００７７】
ステップＳ３１０では、判定部２８０は、実行パス情報ＰＩＮＦｊが無効値Ｚか否かを判定する。例えば、Ａステージで処理Ａが実行されない場合、すなわち、処理データＰＤＴｊが処理決定部２１２から入力制御部２２２に転送されない場合、実行パス情報ＰＩＮＦｊは、無効値Ｚに設定される。実行パス情報ＰＩＮＦｊが無効値Ｚの場合、判定部２８０の動作は、ステップＳ３２０に移る。一方、実行パス情報ＰＩＮＦｊが無効値Ｚでない場合、すなわち、処理データＰＤＴｊ等が処理決定部２１２から入力制御部２２２に転送される場合、判定部２８０の動作は、ステップＳ３３０に移る。
【００７８】
ステップＳ３２０では、判定部２８０は、再構成回路２０２に書き込まれている現状の論理回路２４２で実行される処理Ｂを示す実行パス情報ＰＩＮＦｉが待機バッファ部２３２に保持されているか否かを判定する。例えば、判定部２８０は、待機バッファ部２３２に保持されている実行パス情報ＰＩＮＦｗのいずれかと実行パス情報ＰＩＮＦｉとが一致するか否かを判定する。
【００７９】
実行パス情報ＰＩＮＦｉが待機バッファ部２３２に保持されている場合、すなわち、待機バッファ部２３２に保持されている実行パス情報ＰＩＮＦｗのいずれかが実行パス情報ＰＩＮＦｉに一致する場合、判定部２８０の動作は終了する。この場合、現状の論理回路２４２は、待機バッファ部２３２に保持されている実行パス情報ＰＩＮＦｉｗのうち、実行パス情報ＰＩＮＦｉに一致する実行パス情報ＰＩＮＦｉｗが示す処理Ｂを実行する。
【００８０】
一方、実行パス情報ＰＩＮＦｉが待機バッファ部２３２に保持されていない場合、すなわち、待機バッファ部２３２に保持されている実行パス情報ＰＩＮＦｗのいずれも実行パス情報ＰＩＮＦｉに一致しない場合、判定部２８０の動作は、ステップＳ３２２に移る。
【００８１】
ステップＳ３２２では、判定部２８０は、待機バッファ部２３２が空か否かを判定する。待機バッファ部２３２が空でない場合、すなわち、待機バッファ部２３２が少なくとも１つの処理データＰＤＴ等を保持している場合、判定部２８０は、ステップＳ３５０において、論理回路２４２の書き換えを書き換え部３０２に要求し、動作を終了する。一方、待機バッファ部２３２が空の場合、すなわち、待機バッファ部２３２が処理データＰＤＴ等を１つも保持していない場合、判定部２８０の動作は、論理回路２４２の書き換えを書き換え部３０２に要求することなく、終了する。
【００８２】
ステップＳ３３０では、判定部２８０は、ステップＳ３２０と同様に、再構成回路２０２に書き込まれている現状の論理回路２４２で実行される処理Ｂを示す実行パス情報ＰＩＮＦｉが待機バッファ部２３２に保持されているか否かを判定する。実行パス情報ＰＩＮＦｉが待機バッファ部２３２に保持されている場合、すなわち、待機バッファ部２３２に保持されている実行パス情報ＰＩＮＦｗのいずれかが実行パス情報ＰＩＮＦｉに一致する場合、判定部２８０の動作は、ステップＳ３４０に移る。
【００８３】
一方、実行パス情報ＰＩＮＦｉが待機バッファ部２３２に保持されていない場合、すなわち、待機バッファ部２３２に保持されている実行パス情報ＰＩＮＦｗのいずれも実行パス情報ＰＩＮＦｉに一致しない場合、判定部２８０の動作は、ステップＳ３３２に移る。
【００８４】
ステップＳ３３２では、判定部２８０は、実行パス情報ＰＩＮＦｉと実行パス情報ＰＩＮＦｊとが異なるか否かを判定する。すなわち、判定部２８０は、処理決定部２１２から入力制御部２２２に転送される実行パス情報ＰＩＮＦｊが示す処理Ｂを実行する論理回路２４２Ｂと現状の論理回路２４２とが異なるか否かを判定する。実行パス情報ＰＩＮＦｉと実行パス情報ＰＩＮＦｊとが異なる場合、判定部２８０の動作は、ステップＳ３３４に移る。
【００８５】
一方、実行パス情報ＰＩＮＦｉと実行パス情報ＰＩＮＦｊとが一致する場合、判定部２８０の動作は終了する。この場合、現状の論理回路２４２は、処理決定部２１２から入力制御部２２２に転送される実行パス情報ＰＩＮＦｊが示す処理Ｂを実行する。
【００８６】
ステップＳ３３４では、判定部２８０は、処理決定部２１２から入力制御部２２２に転送された処理データＰＤＴｊ等の待機バッファ部２３２への格納を、入力制御部２２２に要求する。例えば、判定部２８０は、処理決定部２１２から入力制御部２２２に転送された処理データＰＤＴｊ等の待機バッファ部２３２への格納を要求する格納要求ＢＵＦＩＮを、入力制御部２２２に出力する。これにより、入力制御部２２２は、実行パス情報ＰＩＮＦｉと実行パス情報ＰＩＮＦｊとが異なる場合、処理決定部２１２から受けた処理データＰＤＴｊ等を待機バッファ部２３２に格納する。判定部２８０は、ステップＳ３３４の処理を実行した後、動作をステップＳ３３６に移す。
【００８７】
ステップＳ３３６では、判定部２８０は、オールモストフル情報ＡＦＬ１が論理１か否かを判定する。すなわち、判定部２８０は、待機バッファ部２３２に保持された処理データＰＤＴの数が第１判定値に達したか否かを判定する。オールモストフル情報ＡＦＬ１が論理１の場合、判定部２８０は、ステップＳ３５０において、論理回路２４２の書き換えを書き換え部３０２に要求し、動作を終了する。一方、オールモストフル情報ＡＦＬ１が論理０の場合、判定部２８０は、論理回路２４２の書き換えを書き換え部３０２に要求することなく、動作を終了する。
【００８８】
ステップＳ３４０では、判定部２８０は、ステップＳ３３４と同様に、処理決定部２１２から入力制御部２２２に転送された処理データＰＤＴｊ等の待機バッファ部２３２への格納を、入力制御部２２２に要求する。なお、ステップＳ３４０の処理は、上述したように、待機バッファ部２３２に保持されている実行パス情報ＰＩＮＦｗのいずれかが実行パス情報ＰＩＮＦｉに一致する場合、実行される。例えば、待機バッファ部２３２に保持されている実行パス情報ＰＩＮＦｗのいずれかが実行パス情報ＰＩＮＦｉに一致する場合、実行パス情報ＰＩＮＦｉに一致する実行パス情報ＰＩＮＦｉｗが示す処理Ｂが現状の論理回路２４２により実行される。このため、入力制御部２２２は、処理決定部２１２から受けた処理データＰＤＴｊ等を待機バッファ部２３２に格納する。判定部２８０は、ステップＳ３４０の処理を実行した後、動作を終了する。
【００８９】
ステップＳ３４０の処理により、入力制御部２２２は、現状の論理回路２４２で実行可能な実行待ちの処理Ｂが存在する場合、処理決定部２１２により決定された処理Ｂを実行待ちの処理Ｂとして待機させる。そして、入力制御部２２２は、現状の論理回路２４２で実行可能な実行待ちの処理Ｂを現状の論理回路２４２に実行させる。
【００９０】
ステップＳ３５０では、判定部２８０は、上述したように、論理回路２４２の書き換えを書き換え部３０２に要求する。例えば、判定部２８０は、論理回路２４２の書き換えを要求する書き換え要求ＣＲＥＱおよび実行パス情報ＰＩＮＦｎｅｘｔを書き換え部３０２に出力する。判定部２８０は、ステップＳ３５０の処理を実行した後、動作を終了する。
【００９１】
図６に示す動作により、論理回路２４２の書き換えは、処理データＰＤＴｊが処理決定部２１２から入力制御部２２２に転送されない場合で、かつ、待機バッファ部２３２に保持された処理データＰＤＴ等が現状の論理回路２４２に出力されない場合に実行される。あるいは、論理回路２４２の書き換えは、オールモストフル情報ＡＦＬ１が論理１で、かつ、待機バッファ部２３２に保持された処理データＰＤＴの数が増える場合、実行される。なお、判定部２８０の動作は、図６に示す例に限定されない。
【００９２】
図７は、図４に示した判定部２８０の一例を示す。判定部２８０は、無効値判定部４００、不一致検出回路４１０、不一致検出部４２０、論理積回路４３０、４４０、インバータ４３２、論理和回路４５０、４７０、否定論理和回路４６０および選択部４８０を有する。
【００９３】
無効値判定部４００は、処理決定部２１２から入力制御部２２２に転送される実行パス情報ＰＩＮＦｊを、処理決定部２１２から受ける。そして、無効値判定部４００は、処理決定部２１２から受けた実行パス情報ＰＩＮＦｊが無効値Ｚに設定されているか否かを判定し、判定結果を示す情報を論理積回路４４０および否定論理和回路４６０に出力する。例えば、無効値判定部４００は、実行パス情報ＰＩＮＦｊが無効値Ｚの場合、論理１の情報を論理積回路４４０および否定論理和回路４６０に出力し、実行パス情報ＰＩＮＦｊが無効値Ｚでない場合、論理０の情報を論理積回路４４０および否定論理和回路４６０に出力する。
【００９４】
不一致検出回路４１０は、現状の論理回路２４２から受ける実行パス情報ＰＩＮＦｉと処理決定部２１２から受ける実行パス情報ＰＩＮＦｊとが異なるか否かを判定する。例えば、不一致検出回路４１０は、実行パス情報ＰＩＮＦｉと実行パス情報ＰＩＮＦｊとが異なる場合、論理１の不一致情報ＰＤＩＦを論理積回路４３０および論理和回路４７０に出力する。また、不一致検出回路４１０は、実行パス情報ＰＩＮＦｉと実行パス情報ＰＩＮＦｊとが一致する場合、論理０の不一致情報ＰＤＩＦを論理積回路４３０および論理和回路４７０に出力する。なお、不一致検出回路４１０は、実行パス情報ＰＩＮＦｉ、ＰＩＮＦｊの少なくとも一方が無効値Ｚの場合、論理０の不一致情報ＰＤＩＦを論理積回路４３０および論理和回路４７０に出力する。
【００９５】
なお、無効値判定部４００および不一致検出回路４１０は、実行パス情報ＰＩＮＦｊを処理決定部２１２から入力制御部２２２を介して受けてもよい。
【００９６】
不一致検出部４２０は、待機バッファ部２３２に保持されている実行パス情報ＰＩＮＦｗ（ＰＩＮＦｗ１、・・・、ＰＩＮＦｗｋ）のいずれも実行パス情報ＰＩＮＦｉに一致しないか否かを判定する。例えば、不一致検出部４２０は、待機バッファ部２３２に保持されている実行パス情報ＰＩＮＦｗのいずれも実行パス情報ＰＩＮＦｉに一致しない場合、論理１の情報ＮＯＵＴ１を論理積回路４３０、４４０および否定論理和回路４６０に出力する。また、不一致検出部４２０は、待機バッファ部２３２に保持されている実行パス情報ＰＩＮＦｗのいずれかが実行パス情報ＰＩＮＦｉに一致する場合、論理０の情報ＮＯＵＴ１を論理積回路４３０、４４０および否定論理和回路４６０に出力する。すなわち、不一致検出部４２０は、待機バッファ部２３２から処理データＰＤＴ等が出力されない場合、論理１の情報ＮＯＵＴ１を論理積回路４３０、４４０および否定論理和回路４６０に出力する。
【００９７】
例えば、不一致検出部４２０は、複数の一致検出回路４２０Ａと否定論理和回路４２０Ｂとを有する。一致検出回路４２０Ａの数は、待機バッファ部２３２が保持可能な実行パス情報ＰＩＮＦｗの数に対応する。
【００９８】
各一致検出回路４２０Ａは、複数の実行パス情報ＰＩＮＦｗのうちの対応する実行パス情報ＰＩＮＦｗを待機バッファ部２３２から受け、実行パス情報ＰＩＮＦｉを現状の論理回路２４２から受ける。そして、各一致検出回路４２０Ａは、待機バッファ部２３２から受けた実行パス情報ＰＩＮＦｗと現状の論理回路２４２から受けた実行パス情報ＰＩＮＦｉとが一致するか否かを判定する。例えば、一致検出回路４２０Ａは、実行パス情報ＰＩＮＦｗと実行パス情報ＰＩＮＦｉとが一致する場合、論理１の情報を否定論理和回路４２０Ｂに出力する。また、一致検出回路４２０Ａは、実行パス情報ＰＩＮＦｗと実行パス情報ＰＩＮＦｉとが異なる場合、論理０の情報を否定論理和回路４２０Ｂに出力する。なお、一致検出回路４２０Ａは、実行パス情報ＰＩＮＦｉ、ＰＩＮＦｗの少なくとも一方が無効値Ｚの場合、論理０の情報を否定論理和回路４２０Ｂに出力する。
【００９９】
否定論理和回路４２０Ｂは、複数の一致検出回路４２０Ａから受ける複数の情報の否定論理和を演算し、演算結果を示す情報ＮＯＵＴ１を論理積回路４３０、４４０および否定論理和回路４６０に出力する。
【０１００】
論理積回路４３０は、待機バッファ部２３２から受けるオールモストフル情報ＡＦＬ１と、不一致検出部４２０から受ける情報ＮＯＵＴ１と、不一致検出回路４１０から受ける不一致情報ＰＤＩＦとの論理積を演算する。そして、論理積回路４３０は、オールモストフル情報ＡＦＬ１と情報ＮＯＵＴ１と不一致情報ＰＤＩＦとの論理積の演算結果を示す情報ＣＯＮＤ１を論理和回路４５０に出力する。すなわち、論理積回路４３０は、待機バッファ部２３２が保持する処理データＰＤＴの数が第１判定値以上で、かつ、待機バッファ部２３２が保持する処理データＰＤＴの数が増える場合、論理１の情報ＣＯＮＤ１を論理和回路４５０に出力する。論理１の情報ＣＯＮＤ１は、現状の論理回路２４２を書き換える条件が満たされたことを示す。
【０１０１】
インバータ４３２は、情報ＥＭＰを待機バッファ部２３２から受け、情報ＥＭＰの論理を反転した情報（情報ＥＭＰの反転信号）を論理積回路４４０に出力する。なお、情報ＥＭＰは、待機バッファ部２３２が空であることを示す情報である。例えば、論理値１の情報ＥＭＰは、待機バッファ部２３２が空であること、すなわち、待機バッファ部２３２が処理データＰＤＴ等を１つも保持していないことを示す。また、論理値０の情報ＥＭＰは、待機バッファ部２３２が空でないこと、すなわち、待機バッファ部２３２が少なくとも１つの処理データＰＤＴ等を保持していることを示す。
【０１０２】
論理積回路４４０は、不一致検出部４２０から受ける情報ＮＯＵＴ１と無効値判定部４００から受ける情報とインバータ４３２から受ける情報との論理積を演算し、演算結果を示す情報ＣＯＮＤ２を論理和回路４５０に出力する。すなわち、論理積回路４４０は、処理決定部２１２から新規の処理データＰＤＴｊが出力されず、かつ、待機バッファ部２３２に保持されている処理データＰＤＴ等が待機バッファ部２３２から出力されない場合、論理１の情報ＣＯＮＤ２を論理和回路４５０に出力する。論理１の情報ＣＯＮＤ２は、現状の論理回路２４２を書き換える条件が満たされたことを示す。
【０１０３】
論理和回路４５０は、論理積回路４３０から受ける情報ＣＯＮＤ１と論理積回路４４０から受ける情報ＣＯＮＤ２との論理和を演算し、演算結果を示す情報を書き換え要求ＣＲＥＱとして選択部４８０および書き換え部３０２に出力する。すなわち、論理和回路４５０は、現状の論理回路２４２を書き換える条件が満たされた場合、論理１の書き換え要求ＣＲＥＱを選択部４８０および書き換え部３０２に出力する。論理１の書き換え要求ＣＲＥＱは、論理回路２４２の書き換えの要求を示す。
【０１０４】
否定論理和回路４６０は、不一致検出部４２０から受ける情報ＮＯＵＴ１と無効値判定部４００から受ける情報と待機バッファ部２３２から受ける情報ＥＭＰとの否定論理和を演算し、演算結果を示す情報を論理和回路４７０に出力する。すなわち、否定論理和回路４６０は、処理決定部２１２から新規の処理データＰＤＴｊが出力され、かつ、待機バッファ部２３２から処理データＰＤＴ等が出力される場合、論理１の情報を論理和回路４７０に出力する。否定論理和回路４６０から出力される論理１の情報は、処理決定部２１２から入力制御部２２２に転送された処理データＰＤＴｊを待機バッファ部２３２に格納する条件が満たされたことを示す。
【０１０５】
論理和回路４７０は、否定論理和回路４６０から受ける情報と不一致検出回路４１０から受ける不一致情報ＰＤＩＦとの論理和を演算し、演算結果を示す情報を格納要求ＢＵＦＩＮとして入力制御部２２２に出力する。ここで、例えば、不一致検出回路４１０から論理和回路４７０に出力される論理１の不一致情報ＰＤＩＦは、処理決定部２１２から入力制御部２２２に転送された処理データＰＤＴｊを待機バッファ部２３２に格納する条件が満たされたことを示す。すなわち、論理和回路４７０は、処理決定部２１２から入力制御部２２２に転送された処理データＰＤＴｊを待機バッファ部２３２に格納する条件が満たされた場合、論理１の格納要求ＢＵＦＩＮを入力制御部２２２に出力する。
【０１０６】
選択部４８０は、入力制御部２２２による処理データＰＤＴの受付順を示す順番情報ＮＩＮＦ（ＮＩＮＦ１−ＮＩＮＦｎ）を待機バッファ部２３２から受け、書き換え要求ＣＲＥＱを論理和回路４５０から受ける。そして、選択部４８０は、書き換え要求ＣＲＥＱが論理１の場合、実行パス情報ＰＩＮＦｎｅｘｔを書き換え部３０２に出力する。例えば、選択部４８０は、論理１の書き換え要求ＣＲＥＱを受けた場合、複数の実行待ちの処理Ｂのうち、受付順が先の処理Ｂを順番情報ＮＩＮＦに基づいて選択する。そして、選択部４８０は、選択した処理Ｂ（複数の実行待ちの処理Ｂのうちの受付順が先の処理Ｂ）を示す実行パス情報ＰＩＮＦｎｅｘｔを書き換え部３０２に出力する。これにより、例えば、書き換え部３０２は、複数の実行待ちの処理Ｂのうち、Ｂステージで実行する処理Ｂに決定されてからの待機時間が最も長い処理Ｂを実行する論理回路２４２Ｂに現状の論理回路２４０を書き換える。このように、選択部４８０は、書き換え部３０２が現状の論理回路２４２を書き換える場合、複数の処理Ｂのうちのいずれの処理Ｂを実行する論理回路２４２Ｂに現状の論理回路２４２を書き換えるかを選択する。
【０１０７】
なお、判定部２８０の構成は、図７に示す例に限定されない。例えば、不一致検出回路４１０、否定論理和回路４６０および論理和回路４７０等は、入力制御部２２２内に配置されてもよい。また、例えば、選択部４８０は、書き換え部３０２内に配置されてもよい。また、不一致検出部４２０は、一致検出回路４２０Ａおよび否定論理和回路４２０Ｂの代わりに、不一致検出回路および論理積回路を有してもよい。また、否定論理和回路４６０は、情報ＮＯＵＴ１と無効値判定部４００から受ける情報と情報ＥＭＰとの否定論理和を演算する代わりに、情報ＮＯＵＴ１と無効値判定部４００から受ける情報との否定論理和を演算してもよい。すなわち、否定論理和回路４６０は、情報ＮＯＵＴ１と無効値判定部４００から受ける情報との否定論理和を演算した結果を示す情報を、論理和回路４７０に出力してもよい。
【０１０８】
図８は、図４に示した情報処理装置１２の動作の一例を示す。図８では、再構成される論理回路２４２Ｂの数が２つの場合を例にして、情報処理装置１２の動作を説明する。なお、再構成される論理回路２４２Ｂの数は、２つに限定されない。図８に示す動作では、再構成回路２０２は、処理Ａを実行するＡステージと処理Ｂを実行するＢステージと処理Ｃを実行するＣステージとを有するパイプラインによるパイプライン処理を実行する。処理Ａは、複数の処理Ｂ（Ｂａ、Ｂｂ）のうちのいずれの処理Ｂを実行するかを決定する処理である。なお、図８に示す各処理Ａ、Ｂａ、Ｂｂ、Ｃの符号の末尾の数字は、パイプラインへの投入順を示す。図８に示す符号ＤＲは、再構成回路２０２に書き込まれている論理回路２４２の書き換えを示す。
【０１０９】
処理サイクルＣＹＣ１のＡステージでは、処理決定部２１２は、処理Ａ１の分岐先を判定し、複数の処理Ｂ（Ｂａ、Ｂｂ）のうちの処理Ｂａ１をＢステージで実行する処理Ｂに決定する。なお、図８では、論理回路２４２は、処理サイクルＣＹＣ１が開始する前に、論理回路２４２Ｂａ、２４２Ｂｂのうち、処理Ｂａを実行する論理回路２４２Ｂａに構成される。このため、実行パス情報ＰＩＮＦｊ、ＰＩＮＦｉは、両方とも処理Ｂａを示す。なお、図４に示した例では、論理回路２４２Ｂａは、回路領域Ｒ５、Ｒ８、Ｒ９を含む回路領域群に書き込まれる。この場合、論理回路２４２Ｂｂを書き込むための回路領域Ｒの空きが不足する。このため、論理回路２４２Ｂａ、２４２Ｂｂの一方が再構成回路２０２に書き込まれる。
【０１１０】
また、待機バッファ部２３２に処理データＰＤＴ等が保持されていないため、実行パス情報ＰＩＮＦｉと一致する実行パス情報ＰＩＮＦｗは、待機バッファ部２３２に保持されていない。このため、情報ＮＯＵＴ１は、論理１である。また、待機バッファ部２３２に保持される処理データＰＤＴの数が第１判定値未満であるため、オールモストフル情報ＡＦＬ１は、論理０である。図８に示す例では、第１判定値は、“２”に予め設定される。
【０１１１】
処理サイクルＣＹＣ２のＡステージでは、処理決定部２１２は、処理Ａ２の分岐先を判定し、複数の処理Ｂ（Ｂａ、Ｂｂ）のうちの処理Ｂａ２をＢステージで実行する処理Ｂに決定する。このため、実行パス情報ＰＩＮＦｊ、ＰＩＮＦｉは、両方とも処理Ｂａを示す。また、処理サイクルＣＹＣ２のＢステージでは、入力制御部２２２は、処理サイクルＣＹＣ１で処理決定部２１２により決定された処理Ｂａ１を、再構成回路２０２に書き込まれている現状の論理回路２４２Ｂａに実行させる。
【０１１２】
処理サイクルＣＹＣ３のＡステージでは、処理決定部２１２は、処理Ａ３の分岐先を判定し、複数の処理Ｂ（Ｂａ、Ｂｂ）のうちの処理Ｂａ３をＢステージで実行する処理Ｂに決定する。このため、実行パス情報ＰＩＮＦｊ、ＰＩＮＦｉは、両方とも処理Ｂａを示す。また、処理サイクルＣＹＣ３のＢステージでは、入力制御部２２２は、処理サイクルＣＹＣ２で処理決定部２１２により決定された処理Ｂａ２を現状の論理回路２４２Ｂａに実行させる。また、処理サイクルＣＹＣ３のＣステージでは、論理回路２７０は、処理サイクルＣＹＣ２で実行された処理Ｂａ１の処理結果を用いて、処理Ｃ１を実行する。
【０１１３】
処理サイクルＣＹＣ４のＡステージでは、処理決定部２１２は、処理Ａ４の分岐先を判定し、複数の処理Ｂ（Ｂａ、Ｂｂ）のうちの処理Ｂｂ４をＢステージで実行する処理Ｂに決定する。このため、実行パス情報ＰＩＮＦｊは、処理Ｂｂを示す。なお、現状の論理回路２４２Ｂａの書き換えは実行されていないため、実行パス情報ＰＩＮＦｉは、処理Ｂａを示す。したがって、実行パス情報ＰＩＮＦｊと実行パス情報ＰＩＮＦｉとが異なる。図８では、実行パス情報ＰＩＮＦｊと実行パス情報ＰＩＮＦｉとが異なる場合、太枠で強調して示している。実行パス情報ＰＩＮＦｊと実行パス情報ＰＩＮＦｉとが異なるため、不一致情報ＰＤＩＦは、論理０から論理１に変化する。不一致情報ＰＤＩＦが論理０から論理１に変化することにより、格納要求ＢＵＦＩＮも論理０から論理１に変化する。
【０１１４】
また、処理サイクルＣＹＣ４のＢステージでは、入力制御部２２２は、処理サイクルＣＹＣ３で処理決定部２１２により決定された処理Ｂａ３を現状の論理回路２４２Ｂａに実行させる。また、処理サイクルＣＹＣ４のＣステージでは、論理回路２７０は、処理サイクルＣＹＣ３で実行された処理Ｂａ２の処理結果を用いて、処理Ｃ２を実行する。
【０１１５】
処理サイクルＣＹＣ５のＡステージでは、処理決定部２１２は、処理Ａ５の分岐先を判定し、複数の処理Ｂ（Ｂａ、Ｂｂ）のうちの処理Ｂａ５をＢステージで実行する処理Ｂに決定する。このため、実行パス情報ＰＩＮＦｊ、ＰＩＮＦｉは、両方とも処理Ｂａを示す。
【０１１６】
また、処理サイクルＣＹＣ５では、入力制御部２２２は、処理サイクルＣＹＣ４に論理１の格納要求ＢＵＦＩＮを受けたため、処理サイクルＣＹＣ４で処理決定部２１２により決定された処理Ｂｂ４を示す実行パス情報ＰＩＮＦ等を、待機バッファ部２３２に格納する。図８では、待機バッファ部２３２に格納される実行パス情報ＰＩＮＦｗ、順番情報ＮＩＮＦおよび処理データＰＤＴのうち、実行パス情報ＰＩＮＦｗおよび順番情報ＮＩＮＦの内容を待機バッファ部の欄に示している。例えば、処理サイクルＣＹＣ５では、待機バッファ部２３２に格納された実行パス情報ＰＩＮＦｗは処理Ｂｂを示し、待機バッファ部２３２に格納された順番情報ＮＩＮＦは、受付順が４番目であることを示している。処理Ｂｂ４を示す実行パス情報ＰＩＮＦ等が待機バッファ部２３２に格納されるため、処理Ｂｂ４は、実行待ちの処理Ｂｂ４として待機する。
【０１１７】
すなわち、処理サイクルＣＹＣ５のＢステージでは、処理Ｂは実行されない。なお、処理サイクルＣＹＣ５のＣステージでは、論理回路２７０は、処理サイクルＣＹＣ４で実行された処理Ｂａ３の処理結果を用いて、処理Ｃ３を実行する。
【０１１８】
処理サイクルＣＹＣ６のＡステージでは、処理決定部２１２は、処理Ａ６の分岐先を判定し、複数の処理Ｂ（Ｂａ、Ｂｂ）のうちの処理Ｂａ６をＢステージで実行する処理Ｂに決定する。このため、実行パス情報ＰＩＮＦｊ、ＰＩＮＦｉは、両方とも処理Ｂａを示す。また、処理サイクルＣＹＣ６のＢステージでは、入力制御部２２２は、処理サイクルＣＹＣ５で処理決定部２１２により決定された処理Ｂａ５を現状の論理回路２４２Ｂａに実行させる。また、処理サイクルＣＹＣ６のＣステージでは、処理サイクルＣＹＣ５のＢステージで処理Ｂが実行されなかったため、処理Ｃは実行されない。
【０１１９】
処理サイクルＣＹＣ７−ＣＹＣ１１の各々のＡステージでは、処理Ａ７−Ａ１１がそれぞれ実行される。処理Ａ１１は、Ａステージに投入される最後の処理Ａである。処理サイクルＣＹＣ７−ＣＹＣ１１の各々のＢステージでは、処理Ｂ６−Ｂ１０がそれぞれ実行され、処理サイクルＣＹＣ７−ＣＹＣ１１の各々のＣステージでは、処理Ｃ５−Ｃ９がそれぞれ実行される。
【０１２０】
処理サイクルＣＹＣ１２以降では、処理ＡがＡステージに投入されないため、実行パス情報ＰＩＮＦｊは、無効値Ｚを示す。なお、処理サイクルＣＹＣ１２では、実行パス情報ＰＩＮＦｉは、現状の論理回路２４２Ｂａの書き換えが実行されていないため、処理Ｂａを示す。また、待機バッファ部２３２に保持された実行パス情報ＰＩＮＦｗ（処理Ｂｂ）と実行パス情報ＰＩＮＦｉとが異なるため、情報ＮＯＵＴ１は、論理１に維持される。実行パス情報ＰＩＮＦｊが無効値Ｚであり、情報ＮＯＵＴ１が論理１であるため、情報ＣＯＮＤ２は、論理０から論理１に変化する。これにより、書き換え部３０２は、現状の論理回路２４２Ｂａの書き換えＤＲを次の処理サイクルＣＹＣ１３から開始する。
【０１２１】
処理サイクルＣＹＣ１２のＢステージでは、入力制御部２２２は、処理サイクルＣＹＣ１１で処理決定部２１２により決定された処理Ｂａ１１を現状の論理回路２４２Ｂａに実行させる。また、処理サイクルＣＹＣ１２のＣステージでは、論理回路２７０は、処理サイクルＣＹＣ１１で実行された処理Ｂａ１０の処理結果を用いて、処理Ｃ１０を実行する。
【０１２２】
処理サイクルＣＹＣ１３では、書き換え部３０２は、現状の論理回路２４２Ｂａを論理回路２４２Ｂｂに書き換える（図８に示す網掛け）。実行パス情報ＰＩＮＦｉは、書き換え後の論理回路２４２Ｂｂが実行する処理Ｂｂを示す情報に更新される。これにより、実行パス情報ＰＩＮＦｉ（処理Ｂｂ）と待機バッファ部２３２に保持された実行パス情報ＰＩＮＦｗ（処理Ｂｂ）とが一致するため、情報ＮＯＵＴ１は、論理１から論理０に変化する。
【０１２３】
また、処理サイクルＣＹＣ１３のＣステージでは、論理回路２７０は、処理サイクルＣＹＣ１２で実行された処理Ｂａ１１の処理結果を用いて、処理Ｃ１１を実行する。
【０１２４】
処理サイクルＣＹＣ１４では、書き換え部３０２は、論理回路２４２の書き換えＤＲを継続して実行する。図８に示す例では、論理回路２４２の書き換えＤＲに要する処理サイクルＣＹＣの数は、２サイクル（処理サイクルＣＹＣ１３、ＣＹＣ１４の２サイクル）である。なお、論理回路２４２の書き換えＤＲに要する処理サイクルＣＹＣの数は、２サイクルに限定されない。また、処理サイクルＣＹＣ１４のＣステージでは、処理サイクルＣＹＣ１３のＢステージで処理Ｂが実行されなかったため、処理Ｃは実行されない。
【０１２５】
処理サイクルＣＹＣ１５のＢステージでは、入力制御部２２２は、再構成回路２０２に書き込まれている現状の論理回路２４２Ｂｂ（書き換え後の論理回路２４２Ｂｂ）に実行待ちの処理Ｂｂ４を実行させる。例えば、入力制御部２２２は、待機バッファ部２３２に保持された処理データＰＤＴ等を現状の論理回路２４２Ｂｂに転送して、実行待ちの処理Ｂｂ４を現状の論理回路２４２Ｂｂに実行させる。これにより、待機バッファ部２３２は、処理データＰＤＴ等を１つも保持していない空の状態になる。このため、情報ＮＯＵＴ１は、論理０から論理１に変化する。また、処理サイクルＣＹＣ１５のＣステージでは、処理サイクルＣＹＣ１４のＢステージで処理Ｂが実行されなかったため、処理Ｃは実行されない。
【０１２６】
処理サイクルＣＹＣ１６のＣステージでは、論理回路２７０は、処理サイクルＣＹＣ１５で実行された処理Ｂｂ４の処理結果を用いて、処理Ｃ４を実行する。これにより、パイプラインに投入された一連の処理は終了する。
【０１２７】
このように、情報処理装置１２は、処理サイクルＣＹＣ４において現状の論理回路２４２Ｂａで実行できない処理Ｂｂ４をＢステージで実行する処理Ｂに決定された場合、処理Ｂｂ４の実行を待機し、現状の論理回路２４２Ｂａの書き換えＤＲを待機する。すなわち、情報処理装置１２では、現状の論理回路２４２で実行できない処理ＢをＢステージで実行する処理Ｂに決定される度に論理回路２４２を書き換えるわけではない。このため、情報処理装置１２は、現状の論理回路２４２で実行できない処理ＢをＢステージで実行する処理Ｂに決定される度に論理回路２４２を書き換える従来の方法に比べて、複数の処理Ｂａ、Ｂｂを実行する際の動的再構成の回数の増加を抑制できる。この結果、情報処理装置１２では、複数の処理Ｂを実行するのに要する処理サイクルＣＹＣの数の増加を従来に比べて抑制することができる。
【０１２８】
以上、図４から図８に示す実施形態においても、図１から図３に示した実施形態と同様の効果を得ることができる。例えば、現状の論理回路２４２で実行できない処理ＢをＢステージで実行する処理Ｂに決定される度に論理回路２４２を書き換える場合に比べて、論理回路２４２の書き換え回数を削減することができる。すなわち、論理回路を書き換え可能な再構成回路２０２で複数の処理Ｂを実行する際の動的再構成の回数の増加を抑制することができる。
【０１２９】
これにより、情報処理装置１２の性能を向上させることができる。特に、論理回路２４２の書き換えに要する時間が、論理回路２４２が処理Ｂを実行する時間に比べて大きい場合、論理回路２４２の書き換え回数を削減することによる情報処理装置１２の性能向上の効果は、大きくなる。
【０１３０】
また、判定部２８０は、待機バッファ部２３２に保持された処理データＰＤＴの数が第１判定値を超えるか否かを判定することにより、待機バッファ部２３２に保持される処理データの量が第１所定量を超えるか否かを判定する。これにより、待機バッファ部２３２に保持される処理データの量が第１所定量を超えるか否かを容易に判定することができる。
【０１３１】
また、入力制御部２２２は、受付順を示す順番情報ＮＩＮＦを、処理データＰＤＴおよび実行パス情報ＰＩＮＦｊに対応付けて待機バッファ部２３２に格納する。順番情報ＮＩＮＦを使用することにより、複数の実行待ちの処理Ｂのうち、Ｂステージで実行する処理Ｂに決定されてからの待機時間が最も長い処理Ｂを容易に選択することができる。
【０１３２】
図９は、情報処理装置、情報処理方法および情報処理プログラムの別の実施形態を示す。図１から図８で説明した要素と同一または同様の要素については、同一または同様の符号を付し、これ等については、詳細な説明を省略する。図９に示す情報処理装置１４は、サーバ等である。例えば、情報処理システムは、サーバ等の情報処理装置１４を有する。
【０１３３】
情報処理装置１４は、図４に示した再構成回路２０２の代わりに再構成回路２０４を有することを除いて、図４に示した情報処理装置１２と同一または同様である。例えば、情報処理装置１４は、ＣＰＵ等のプロセッサ１００、メモリ１１０、再構成回路２０４および書き換え部３０２を有し、再構成回路２０４を用いてパイプライン処理を実行する。プロセッサ１００、メモリ１１０および再構成回路２０４は、バス１２０に接続される。例えば、プロセッサ１００は、メモリ１１０に格納される情報処理プログラムを実行し、情報処理装置１４の動作を制御する。
【０１３４】
再構成回路２０４は、例えば、論理回路を動的に書き換え可能なＦＰＧＡ等である。例えば、再構成回路２０４は、論理回路を書き換え可能な複数の回路領域Ｒ（Ｒ１、Ｒ２、Ｒ３、Ｒ４、Ｒ５、Ｒ６、Ｒ７、Ｒ８、Ｒ９、Ｒ１０、Ｒ１１）を有する。なお、回路領域Ｒの数は、１１個に限定されない。
【０１３５】
各回路領域Ｒの論理回路は、書き換え部３０２により、書き換えられる。例えば、回路領域Ｒ１、Ｒ４を含む回路領域群には、処理決定部２１２として機能する論理回路が書き込まれ、回路領域Ｒ２、Ｒ３、Ｒ６の各々には、入力制御部２２２、待機バッファ部２３２および判定部２８２として機能する論理回路がそれぞれ書き込まれる。また、回路領域Ｒ７、Ｒ１０の各々には、出力制御部２５０および出力バッファ部２６０として機能する論理回路がそれぞれ書き込まれ、回路領域Ｒ１１には、論理回路２７２が書き込まれる。
【０１３６】
さらに、回路領域Ｒ５、Ｒ８、Ｒ９を含む回路領域群には、論理回路２４２が書き込まれる。論理回路２４２は、図４から図８で説明したように、動的再構成により再構成される論理回路である。例えば、論理回路２４２は、処理Ｂａ、Ｂｂ、・・・、Ｂｎをそれぞれ実行する論理回路２４２Ｂａ、２４２Ｂｂ、・・・、２４２Ｂｎのいずれかに再構成される。なお、再構成される論理回路２４２Ｂの数は、図９に示す例に限定されない。
【０１３７】
このように、図９に示す再構成回路２０４は、処理決定部２１２、入力制御部２２２、待機バッファ部２３２、論理回路２４２、出力制御部２５０、出力バッファ部２６０、論理回路２７２および判定部２８２を有する。
【０１３８】
処理決定部２１２および待機バッファ部２３２は、図４に示した処理決定部２１２および待機バッファ部２３２と同一または同様である。入力制御部２２２は、現状の論理回路２４２に実行させる処理Ｂに対応する順番情報ＮＩＮＦｉを出力制御部２５０に転送することを除いて、図４に示した入力制御部２２２と同一または同様である。
【０１３９】
論理回路２７２は、論理回路２４２の次段の論理回路であり、論理回路２４２の処理結果を使用して所定の処理を実行する。
【０１４０】
出力制御部２５０は、現状の論理回路２４２に実行させる処理Ｂに対応する順番情報ＮＩＮＦｉを入力制御部２２２から受け、現状の論理回路２４２で実行された処理Ｂの結果である結果データＲＤＴｉを論理回路２４２から受ける。そして、出力制御部２５０は、現状の論理回路２４２で実行された処理の結果である結果データＲＤＴを、実行された処理Ｂに対応する順番情報ＮＩＮＦが示す順番で次段の論理回路２７２に転送する。
【０１４１】
例えば、出力制御部２５０は、結果データＲＤＴが次段の論理回路２７２に転送される度に出力番号ＣＴをインクリメントする出力カウンタ２５２を有する。そして、出力制御部２５０は、順番情報ＮＩＮＦｉが示す受付順と出力カウンタ２５２が示す出力番号ＣＴとが異なる場合、現状の論理回路２４２から受けた結果データＲＤＴｉを順番情報ＮＩＮＦｉに対応付けて出力バッファ部２６０に格納する。
【０１４２】
これにより、出力バッファ部２６０は、次段の論理回路２７２への転送を待機する結果データＲＤＴを順番情報ＮＩＮＦに対応付けて保持する。なお、図９に示すかぎ括弧内には、出力バッファ部２６０に保持される情報の一例を示す。例えば、出力バッファ部２６０は、順番情報ＮＩＮＦ（ＮＩＮＦ１、ＮＩＮＦ２、・・・）および結果データＲＤＴ（ＰＤＴ１、ＰＤＴ２、・・・）を保持する。図９では、複数の順番情報ＮＩＮＦを区別するために、符号の末尾に数字（１、２、・・・）を付し、複数の結果データＲＤＴを区別するために、符号の末尾に数字（１、２、・・・）を付している。順番情報ＮＩＮＦおよび結果データＲＤＴの符号の末尾の数字は、互いに対応している。
【０１４３】
判定部２８２は、出力制御部２５０から受ける順番情報ＮＩＮＦｉ、出力番号ＣＴ、出力バッファ部２６０から受けるオールモストフル情報ＡＦＬ２等に基づいて、出力バッファ部２６０に保持される結果データＲＤＴの量が第２所定量を超えるか否かを判定する。判定部２８２のその他の動作は、図４に示した判定部２８０と同一または同様である。
【０１４４】
ここで、オールモストフル情報ＡＦＬ２は、出力バッファ部２６０に保持された結果データＲＤＴの数が予め決められた第２判定値に達したことを示す情報である。例えば、論理１のオールモストフル情報ＡＦＬ２は、出力バッファ部２６０に保持された処理データＰＤＴの数が第２判定値以上であることを示す。また、論理０のオールモストフル情報ＡＦＬ２は、出力バッファ部２６０に保持された結果データＲＤＴの数が第２判定値未満であることを示す。
【０１４５】
なお、第２判定値は、第２所定量に応じて、予め決められる。例えば、第２所定量が、順番情報ＮＩＮＦおよび結果データＲＤＴを含む１個の情報群のデータ量を（ｍ−１）倍したデータ量である場合、第２判定値は、（ｍ−１）に予め設定される。（ｍ−１）に設定された第２判定値は、出力バッファ部２６０の記憶領域のサイズがｍ個の情報群を記憶するサイズの場合、出力バッファ部２６０が１個の情報群を記憶する空きを有することを示す。
【０１４６】
例えば、判定部２８２は、出力バッファ部２６０が保持する結果データＲＤＴの数が第２判定値以上で、出力バッファ部２６０が保持する結果データＲＤＴの数が増える場合、出力バッファ部２６０が保持する結果データＲＤＴの量が第２所定量を超えると判定する。なお、出力バッファ部２６０が保持する結果データＲＤＴの数が増える場合とは、例えば、出力バッファ部２６０に結果データＲＤＴｉが格納され、かつ、出力バッファ部２６０に保持された結果データＲＤＴが論理回路２７２に出力されない場合である。すなわち、出力バッファ部２６０に保持された順番情報ＮＩＮＦおよび入力制御部２２２から受けた順番情報ＮＩＮＦｉのそれぞれが示す受付順のいずれにも出力番号ＣＴが一致しない場合、出力バッファ部２６０に保持される結果データＲＤＴの数は増加する。
【０１４７】
このように、判定部２８２は、待機バッファ部２３２に保持される処理データＰＤＴの量が第１所定量を超えるか否かを判定する他に、出力バッファ部２６０に保持される結果データＲＤＴの量が第２所定量を超えるか否かを判定する。そして、判定部２８２は、例えば、待機バッファ部２３２に保持される処理データＰＤＴの量が第１所定量を超える場合、または、出力バッファ部２６０に保持される結果データＲＤＴの量が第２所定量を超える場合、論理回路２４２の書き換えを要求する。例えば、判定部２８２は、論理回路２４２の書き換えを要求する書き換え要求ＣＲＥＱおよび実行パス情報ＰＩＮＦｎｅｘｔを書き換え部３０２に出力する。
【０１４８】
判定部２８２は、現状の論理回路２４２の書き換えを、実行パス情報ＰＩＮＦｎｅｘｔを用いて書き換え部３０２に要求をした場合、実行パス情報ＰＩＮＦｎｅｘｔを実行パス情報ＰＩＮＦｉとして保持してもよい。この場合、現状の論理回路２４２から判定部２８２に実行パス情報ＰＩＮＦｉを転送する処理は、省かれてもよい。
【０１４９】
書き換え部３０２は、図４に示した書き換え部３０２と同一または同様である。例えば、書き換え部３０２は、判定部２８２の判定結果に基づいて、現状の論理回路２４２の書き換えを実行する。例えば、書き換え部３０２は、出力バッファ部２６０に保持される結果データＲＤＴの量が第２所定量を超える場合、出力番号ＣＴと同じ順番を示す順番情報ＮＩＮＦに対応する実行待ちの処理Ｂを実行する論理回路２４２Ｂに現状の論理回路２４２を書き換える。
【０１５０】
なお、情報処理装置１４の構成は、図９に示す例に限定されない。例えば、情報処理装置１４は、判定部２８２として機能する論理回路を再構成回路２０４に書き込まずに、判定部２８２を再構成回路２０４の外部に有してもよい。また、出力カウンタ２５２は、出力制御部２５０の外部に配置されてもよい。また、判定部２８２は、順番情報ＮＩＮＦｉを入力制御部２２２から受けてもよい。
【０１５１】
図１０は、図９に示した判定部２８２の動作の一例を示す。図１０に示す動作は、論理回路を書き換え可能な再構成回路を有する情報処理装置による情報処理方法および情報処理装置の動作を制御する情報処理プログラムの一態様である。図６で説明したステップと同一または同様のステップについては、同一または同様の符号を付し、これ等については、詳細な説明を省略する。図１０に示す動作は、ステップＳ３００、Ｓ３０２、Ｓ３０４、Ｓ３０６、Ｓ３０８が図６に示した動作に追加されることを除いて、図６に示した動作と同一または同様である。したがって、図１０では、ステップＳ３００−Ｓ３０８を中心に説明する。
【０１５２】
ステップＳ３００では、判定部２８２は、オールモストフル情報ＡＦＬ２が論理１か否かを判定する。すなわち、判定部２８２は、出力バッファ部２６０に保持された結果データＲＤＴの数が第２判定値に達したか否かを判定する。オールモストフル情報ＡＦＬ２が論理１の場合、判定部２８２の動作は、ステップＳ３０２に移る。一方、オールモストフル情報ＡＦＬ２が論理０の場合、判定部２８２の動作は、ステップＳ３１０に移る。
【０１５３】
ステップＳ３０２では、判定部２８２は、出力制御部２５０から受けた順番情報ＮＩＮＦｉと出力カウンタ２５２が示す出力番号ＣＴとが異なるか否かを判定する。順番情報ＮＩＮＦｉと出力番号ＣＴとが異なる場合、判定部２８２の動作は、ステップＳ３０４に移る。一方、順番情報ＮＩＮＦｉと出力番号ＣＴとが一致する場合、判定部２８２の動作は、ステップＳ３１０に移る。
【０１５４】
ステップＳ３０４では、判定部２８２は、出力番号ＣＴと一致する順番情報ＮＩＮＦが出力バッファ部２６０に保持されているか否かを判定する。例えば、判定部２８２は、出力バッファ部２６０に保持されている順番情報ＮＩＮＦのいずれかと出力番号ＣＴとが一致するか否かを判定する。
【０１５５】
出力番号ＣＴと一致する順番情報ＮＩＮＦが出力バッファ部２６０に保持されていない場合、すなわち、出力バッファ部２６０に保持されている順番情報ＮＩＮＦのいずれも出力番号ＣＴに一致しない場合、判定部２８２の動作は、ステップＳ３０６に移る。すなわち、出力バッファ部２６０に保持された結果データＲＤＴの数が第２判定値以上で、出力バッファ部２６０に保持される結果データＲＤＴの数が増加する場合、ステップＳ３０６の処理が実行される。
【０１５６】
一方、出力番号ＣＴと一致する順番情報ＮＩＮＦが出力バッファ部２６０に保持されている場合、すなわち、出力バッファ部２６０に保持されている順番情報ＮＩＮＦのいずれかが出力番号ＣＴに一致する場合、判定部２８２の動作は、ステップＳ３１０に移る。
【０１５７】
ステップＳ３０６では、判定部２８２は、実行パス情報ＰＩＮＦｊが無効値Ｚか否かを判定する。実行パス情報ＰＩＮＦｊが無効値Ｚの場合、判定部２８０の動作は、ステップＳ３５０に移る。一方、実行パス情報ＰＩＮＦｊが無効値Ｚでない場合、すなわち、処理データＰＤＴｊ等が処理決定部２１２から入力制御部２２２に転送される場合、判定部２８２の動作は、ステップＳ３０８に移る。
【０１５８】
ステップＳ３０８では、判定部２８２は、ステップＳ３３４、Ｓ３４０と同様に、処理決定部２１２から入力制御部２２２に転送された処理データＰＤＴｊ等の待機バッファ部２３２への格納を、入力制御部２２２に要求する。判定部２８２は、ステップＳ３０８の処理を実行した後、動作をステップＳ３５０に移す。
【０１５９】
ステップＳ３５０では、判定部２８２は、論理回路２４２の書き換えを書き換え部３０２に要求する。このように、図１０に示す動作では、出力バッファ部２６０に保持された結果データＲＤＴの数が第２判定値以上で、出力バッファ部２６０に保持される結果データＲＤＴの数が増加する場合においても、論理回路２４２の書き換えが実行される。なお、判定部２８２の動作は、図１０に示す例に限定されない。
【０１６０】
図１１は、図９に示した判定部２８２の一例を示す。判定部２８２では、不一致検出回路４１２、不一致検出部４２２および論理積回路４３４が図７に示した判定部２８０に追加される。また、判定部２８２は、図７に示した論理和回路４５０、４７０の代わりに、論理和回路４５２、４７２を有する。判定部２８２のその他の構成は、図７に示した判定部２８０と同一または同様である。このため、図１１では、不一致検出回路４１２、不一致検出部４２２および論理積回路４３４を中心に説明し、図７で説明した要素については詳細な説明を省略する。
【０１６１】
判定部２８２は、無効値判定部４００、不一致検出回路４１０、４１２、不一致検出部４２０、４２２、論理積回路４３０、４３４、４４０、インバータ４３２、論理和回路４５２、４７２、否定論理和回路４６０および選択部４８０を有する。
【０１６２】
不一致検出回路４１２は、出力制御部２５０から受ける順番情報ＮＩＮＦｉと出力カウンタ２５２が示す出力番号ＣＴとが異なるか否かを判定する。例えば、不一致検出回路４１２は、順番情報ＮＩＮＦｉと出力番号ＣＴとが異なる場合、論理１の情報ＯＤＩＦを論理積回路４３４に出力する。また、不一致検出回路４１２は、順番情報ＮＩＮＦｉと出力番号ＣＴとが一致する場合、論理０の情報ＯＤＩＦを論理積回路４３４に出力する。なお、不一致検出回路４１２は、順番情報ＮＩＮＦｉと出力番号ＣＴとの少なくとも一方が無効値Ｚの場合、論理０の情報ＯＤＩＦを論理積回路４３４に出力する。なお、不一致検出回路４１２は、順番情報ＮＩＮＦｉを入力制御部２２２から受けてもよい。
【０１６３】
不一致検出部４２２は、出力バッファ部２６０に保持されている順番情報ＮＩＮＦ（ＮＩＮＦ１、・・・、ＮＩＮＦｍ）のいずれも出力番号ＣＴに一致しないか否かを判定する。例えば、不一致検出部４２２は、出力バッファ部２６０に保持されている順番情報ＮＩＮＦのいずれも出力番号ＣＴに一致しない場合、論理１の情報ＮＯＵＴ２を論理積回路４３４に出力する。また、不一致検出部４２２は、出力バッファ部２６０に保持されている順番情報ＮＩＮＦのいずれかが出力番号ＣＴに一致する場合、論理０の情報ＮＯＵＴ２を論理積回路４３４に出力する。すなわち、不一致検出部４２２は、出力バッファ部２６０から結果データＲＤＴが出力されない場合、論理１の情報ＮＯＵＴ２を論理積回路４３４に出力する。
【０１６４】
例えば、不一致検出部４２２は、複数の一致検出回路４２２Ａと否定論理和回路４２２Ｂとを有する。一致検出回路４２２Ａの数は、出力バッファ部２６０が保持可能な順番情報ＮＩＮＦの数に対応する。
【０１６５】
各一致検出回路４２２Ａは、複数の順番情報ＮＩＮＦのうちの対応する順番情報ＮＩＮＦを出力バッファ部２６０から受け、出力番号ＣＴを出力カウンタ２５２から受ける。そして、各一致検出回路４２２Ａは、出力バッファ部２６０から受けた順番情報ＮＩＮＦと出力カウンタ２５２から受けた出力番号ＣＴとが一致するか否かを判定する。例えば、一致検出回路４２２Ａは、順番情報ＮＩＮＦと出力番号ＣＴとが一致する場合、論理１の情報を否定論理和回路４２２Ｂに出力する。また、一致検出回路４２２Ａは、順番情報ＮＩＮＦと出力番号ＣＴとが異なる場合、論理０の情報を否定論理和回路４２２Ｂに出力する。なお、一致検出回路４２２Ａは、順番情報ＮＩＮＦと出力番号ＣＴとの少なくとも一方が無効値Ｚの場合、論理０の情報を否定論理和回路４２２Ｂに出力する。
【０１６６】
否定論理和回路４２２Ｂは、複数の一致検出回路４２２Ａから受ける複数の情報の否定論理和を演算し、演算結果を示す情報ＮＯＵＴ２を論理積回路４３４に出力する。
【０１６７】
論理積回路４３４は、出力バッファ部２６０から受けるオールモストフル情報ＡＦＬ２と、不一致検出回路４１２から受ける情報ＯＤＩＦと、不一致検出部４２２から受ける情報ＮＯＵＴ２との論理積を演算する。そして、論理積回路４３４は、オールモストフル情報ＡＦＬ２と情報ＯＤＩＦと情報ＮＯＵＴ２との論理積の演算結果を示す情報ＣＯＮＤ３を論理和回路４５２、４７２に出力する。すなわち、論理積回路４３４は、出力バッファ部２６０が保持する結果データＲＤＴの数が第２判定値以上で、かつ、出力バッファ部２６０が保持する結果データＲＤＴの数が増える場合、論理１の情報ＣＯＮＤ３を論理和回路４５２、４７２に出力する。論理１の情報ＣＯＮＤ３は、現状の論理回路２４２を書き換える条件が満たされたことを示す。
【０１６８】
論理和回路４５２は、論理積回路４３０から受ける情報ＣＯＮＤ１と論理積回路４４０から受ける情報ＣＯＮＤ２と論理積回路４３４から受ける情報ＣＯＮＤ３との論理和を演算する。そして、論理和回路４５２は、情報ＣＯＮＤ１、ＣＯＮＤ２、ＣＯＮＤ３の論理和の演算結果を示す情報を書き換え要求ＣＲＥＱとして選択部４８０および書き換え部３０２に出力する。すなわち、論理和回路４５２は、現状の論理回路２４２を書き換える条件が満たされた場合、論理１の書き換え要求ＣＲＥＱを選択部４８０および書き換え部３０２に出力する。
【０１６９】
論理和回路４７２は、否定論理和回路４６０から受ける情報と不一致検出回路４１０から受ける不一致情報ＰＤＩＦと論理積回路４３４から受ける情報ＣＯＮＤ３との論理和を演算し、演算結果を示す情報を格納要求ＢＵＦＩＮとして入力制御部２２２に出力する。
【０１７０】
ここで、不一致検出回路４１２、不一致検出部４２２および論理積回路４３４を含む回路群は、出力バッファ部２６０に保持される結果データＲＤＴの量が第２所定量を超えるかを判定する第２判定部の一例である。また、無効値判定部４００、不一致検出回路４１０、不一致検出部４２０、論理積回路４３０、４４０、論理和回路４５２を含む回路群は、待機バッファ部２３２に保持される処理データＰＤＴの量が第１所定量を超えるかを判定する第１判定部の一例である。
【０１７１】
なお、判定部２８２の構成は、図１１に示す例に限定されない。例えば、不一致検出回路４１０、否定論理和回路４６０および論理和回路４７２等は、入力制御部２２２内に配置されてもよい。また、例えば、選択部４８０は、書き換え部３０２内に配置されてもよい。不一致検出回路４１２は、出力制御部２５０内に配置されてもよい。また、不一致検出部４２０は、一致検出回路４２０Ａおよび否定論理和回路４２０Ｂの代わりに、不一致検出回路および論理積回路を有してもよい。また、不一致検出部４２２は、一致検出回路４２２Ａおよび否定論理和回路４２２Ｂの代わりに、不一致検出回路および論理積回路を有してもよい。また、否定論理和回路４６０は、情報ＮＯＵＴ１と無効値判定部４００から受ける情報と情報ＥＭＰとの否定論理和を演算する代わりに、情報ＮＯＵＴ１と無効値判定部４００から受ける情報との否定論理和を演算してもよい。すなわち、否定論理和回路４６０は、情報ＮＯＵＴ１と無効値判定部４００から受ける情報との否定論理和を演算した結果を示す情報を、論理和回路４７２に出力してもよい。
【０１７２】
図１２は、図９に示した情報処理装置１４の動作の一例を示す。図１２に示す動作におけるパイプラインのステージ、パイプラインに投入される処理（処理Ａ１−Ａ１１等）、再構成される論理回路２４２Ｂの数等は、図８に示した動作と同一または同様である。図１２では、図８と異なる動作を中心に説明する。なお、図１２では、説明を分かり易くするために、図８に示した情報の他に、順番情報ＮＩＮＦｉ、出力番号ＣＴ、出力バッファ部２６０、オールモストフル情報ＡＦＬ２、情報ＯＤＩＦ、情報ＮＯＵＴ２および情報ＣＯＮＤ３を記載している。例えば、図１２では、出力バッファ部２６０に格納される順番情報ＮＩＮＦおよび結果データＲＤＴのうち、順番情報ＮＩＮＦの内容を出力バッファ部の欄に示している。また、図１２では、図を見やすくするために、図８では記載していた不一致情報ＰＤＩＦの記載を省略している。
【０１７３】
処理サイクルＣＹＣ１−ＣＹＣ５までの動作は、図８に示した動作と同様である。なお、処理サイクルＣＹＣ１−ＣＹＣ５の各々では、出力バッファ部２６０に結果データＲＤＴ等が保持されていないため、出力番号ＣＴと一致する順番情報ＮＩＮＦは、出力バッファ部２６０に保持されていない。このため、情報ＮＯＵＴ２は、論理１である。また、出力バッファ部２６０に保持される結果データＲＤＴの数が第２判定値未満であるため、オールモストフル情報ＡＦＬ２は、論理０である。図１２に示す例では、第２判定値は、“２”に予め設定される。
【０１７４】
処理サイクルＣＹＣ６では、処理サイクルＣＹＣ５のＢステージで処理Ｂｂ４が実行されなかったため、出力番号ＣＴは、“４”に維持される。したがって、処理サイクルＣＹＣ６では、順番情報ＮＩＮＦｉ（“５”）と出力番号ＣＴ（“４”）とが異なる。このため、情報ＯＤＩＦは、論理０から論理１に変化する。処理サイクルＣＹＣ６のその他の動作は、図８に示した動作と同様である。なお、順番情報ＮＩＮＦｉ（“５”）と出力番号ＣＴ（“４”）とが異なるため、処理サイクルＣＹＣ６のＢステージで実行される処理Ｂａ５の処理結果である結果データＲＤＴ等は、処理サイクルＣＹＣ７において出力バッファ部２６０に格納される。
【０１７５】
処理サイクルＣＹＣ７では、ＡステージからＢステージまでの動作は、図８に示した動作と同様である。処理サイクルＣＹＣ７では、上述したように、処理サイクルＣＹＣ６における順番情報ＮＩＮＦｉ（“５”）と出力番号ＣＴ（“４”）とが異なるため、処理Ｂａ５の処理結果である結果データＲＤＴ等は、出力バッファ部２６０に格納される。このため、処理サイクルＣＹＣ７のＣステージでは、処理Ｂａ５の処理結果を用いた処理Ｃ５は、実行されない。結果データＲＤＴが次段の論理回路２７２に出力されなかったため、出力番号ＣＴは、“４”に維持される。
【０１７６】
処理サイクルＣＹＣ８では、ＡステージからＢステージまでの動作は、図８に示した動作と同様である。処理サイクルＣＹＣ８では、処理サイクルＣＹＣ７における順番情報ＮＩＮＦｉ（“６”）と出力番号ＣＴ（“４”）とが異なるため、処理Ｂａ６の処理結果である結果データＲＤＴ等は、出力バッファ部２６０に格納される。これにより、処理サイクルＣＹＣ８では、出力バッファ部２６０は、処理Ｂａ５の処理結果である結果データＲＤＴと処理Ｂａ６の処理結果である結果データＲＤＴとの２つの結果データＲＤＴを保持する。出力バッファ部２６０に第２判定値（“２”）と同じ数の結果データＲＤＴが保持されたため、オールモストフル情報ＡＦＬ２は、論理０から論理１に変化する。
【０１７７】
また、処理Ｂａ６の処理結果である結果データＲＤＴが出力バッファ部２６０に格納されるため、処理サイクルＣＹＣ８のＣステージでは、処理Ｂａ６の処理結果を用いた処理Ｃ６は、実行されない。結果データＲＤＴが次段の論理回路２７２に出力されなかったため、出力番号ＣＴは、“４”に維持される。したがって、処理サイクルＣＹＣ８では、順番情報ＮＩＮＦｉ（“７”）と出力番号ＣＴ（“４”）とが異なり、情報ＯＤＩＦは、論理１に維持される。また、処理サイクルＣＹＣ８では、出力番号ＣＴ（“４”）と一致する順番情報ＮＩＮＦは、出力バッファ部２６０に保持されていないため、情報ＮＯＵＴ２は、論理１に維持される。
【０１７８】
このように、処理サイクルＣＹＣ８では、オールモストフル情報ＡＦＬ２、情報ＯＤＩＦおよび情報ＮＯＵＴ２の全てが論理１であるため、情報ＣＯＮＤ３は、論理０から論理１に変化する。情報ＣＯＮＤ３が論理０から論理１に変化したことにより、格納要求ＢＵＦＩＮも論理０から論理１に変化する。また、情報ＣＯＮＤ３が論理０から論理１に変化したことにより、書き換え部３０２は、現状の論理回路２４２Ｂａの書き換えＤＲを次の処理サイクルＣＹＣ９から開始する。
【０１７９】
処理サイクルＣＹＣ９では、論理回路２４２Ｂａの書き換えＤＲが実行される。例えば、書き換え部３０２は、出力カウンタ２５２が示す出力番号ＣＴ（“４”）と同じ順番を示す順番情報ＮＩＮＦに対応する実行待ちの処理Ｂｂ４を実行する論理回路２４２Ｂｂに現状の論理回路２４２Ｂａを書き換える。このように、処理サイクルＣＹＣ９では、論理回路２４２Ｂａの書き換えＤＲが実行されるため、処理Ａ９は、Ａステージに投入されない。なお、処理サイクルＣＹＣ９では、入力制御部２２２は、処理サイクルＣＹＣ８に論理１の格納要求ＢＵＦＩＮを受けたため、処理サイクルＣＹＣ８で処理決定部２１２により決定された処理Ｂａ８を示す実行パス情報ＰＩＮＦ等を、待機バッファ部２３２に格納する。このため、処理サイクルＣＹＣ９では、オールモストフル情報ＡＦＬ１は、論理０から論理１に変化する。また、待機バッファ部２３２が実行パス情報ＰＩＮＦｉ（処理Ｂｂ）に一致する実行パス情報ＰＩＮＦｗ（処理Ｂｂ）を保持しているため、情報ＮＯＵＴ１は、論理１から論理０に変化する。
【０１８０】
また、処理サイクルＣＹＣ９では、処理サイクルＣＹＣ８における順番情報ＮＩＮＦｉ（“７”）と出力番号ＣＴ（“４”）とが異なるため、処理Ｂａ７の処理結果である結果データＲＤＴ等は、出力バッファ部２６０に格納される。
【０１８１】
処理サイクルＣＹＣ１０では、書き換え部３０２は、論理回路２４２の書き換えＤＲを継続して実行する。このため、処理Ａ９は、Ａステージに投入されない。処理サイクルＣＹＣ１０が終了するまでに、論理回路２４２は、論理回路２４２Ｂｂに書き換えられる。
【０１８２】
処理サイクルＣＹＣ１１のＡステージでは、処理決定部２１２は、処理Ａ９の分岐先を判定し、複数の処理Ｂ（Ｂａ、Ｂｂ）のうちの処理Ｂａ９をＢステージで実行する処理Ｂに決定する。このため、実行パス情報ＰＩＮＦｊは、処理Ｂａを示す。また、実行パス情報ＰＩＮＦｉは、論理回路２４２が論理回路２４２Ｂｂに書き換えられたため、処理Ｂｂを示す。したがって、実行パス情報ＰＩＮＦｊと実行パス情報ＰＩＮＦｉとが異なる。このため、格納要求ＢＵＦＩＮは、論理０から論理１に変化する。
【０１８３】
処理サイクルＣＹＣ１１のＢステージでは、入力制御部２２２は、再構成回路２０４に書き込まれている現状の論理回路２４２Ｂｂ（書き換え後の論理回路２４２Ｂｂ）に実行待ちの処理Ｂｂ４を実行させる。例えば、入力制御部２２２は、待機バッファ部２３２に保持された２つの処理データＰＤＴのうち、順番情報ＮＩＮＦが“４”の処理データＰＤＴを現状の論理回路２４２Ｂｂに転送し、実行待ちの処理Ｂｂ４を現状の論理回路２４２Ｂｂに実行させる。なお、順番情報ＮＩＮＦが“４”の処理データＰＤＴは、実行パス情報ＰＩＮＦｉ（処理Ｂｂ）に一致する実行パス情報ＰＩＮＦｗに対応する処理データＰＤＴである。また、入力制御部２２２は、待機バッファ部２３２から論理回路２４２Ｂｂに転送した処理データＰＤＴに対応する順番情報ＮＩＮＦｉ（“４”）を出力制御部２５０に転送する。待機バッファ部２３２から論理回路２４２Ｂｂに処理データＰＤＴが転送されたため、待機バッファ部２３２に保持された処理データＰＤＴの数は２つから１つに減少する。
【０１８４】
また、処理サイクルＣＹＣ１１では、処理サイクルＣＹＣ１０のＢステージで処理Ｂが実行されなかったため、出力番号ＣＴは、“４”に維持される。したがって、処理サイクルＣＹＣ１１では、順番情報ＮＩＮＦｉ（“４”）と出力番号ＣＴ（“４”）とが一致する。このため、処理Ｂｂ４の処理結果である結果データＲＤＴは、論理回路２７２に転送される。これにより、次の処理サイクルＣＹＣ１２において、出力番号ＣＴは、“４”から“５”にインクリメントされる。
【０１８５】
処理サイクルＣＹＣ１２のＡステージでは、処理決定部２１２は、処理Ａ１０の分岐先を判定し、複数の処理Ｂ（Ｂａ、Ｂｂ）のうちの処理Ｂａ１０をＢステージで実行する処理Ｂに決定する。このため、実行パス情報ＰＩＮＦｊは、処理Ｂａを示し、実行パス情報ＰＩＮＦｉは、処理Ｂｂを示す。実行パス情報ＰＩＮＦｊと実行パス情報ＰＩＮＦｉとが異なるため、格納要求ＢＵＦＩＮは、論理１に維持される。
【０１８６】
また、処理サイクルＣＹＣ１２では、入力制御部２２２は、処理サイクルＣＹＣ１１で処理決定部２１２により決定された処理Ｂａ９を示す実行パス情報ＰＩＮＦ等を待機バッファ部２３２に格納する。このため、処理サイクルＣＹＣ１２では、オールモストフル情報ＡＦＬ１は、論理０から論理１に変化する。また、待機バッファ部２３２が実行パス情報ＰＩＮＦｉ（処理Ｂｂ）に一致する実行パス情報ＰＩＮＦｗを保持していないため、情報ＮＯＵＴ１は、論理１に維持される。実行パス情報ＰＩＮＦｊと実行パス情報ＰＩＮＦｉとが異なり、オールモストフル情報ＡＦＬ１および情報ＮＯＵＴ１が論理１であるため、情報ＣＯＮＤ１は、論理０から論理１に変化する。情報ＣＯＮＤ１が論理０から論理１に変化したことにより、書き換え部３０２は、現状の論理回路２４２Ｂｂの書き換えＤＲを次の処理サイクルＣＹＣ１３から開始する。
【０１８７】
また、処理サイクルＣＹＣ１２のＣステージでは、論理回路２７２は、処理サイクルＣＹＣ１１で実行された処理Ｂｂ４の処理結果を用いて、処理Ｃ４を実行する。なお、処理サイクルＣＹＣ１２では、出力バッファ部２６０が出力番号ＣＴ（“５”）に一致する順番情報ＮＩＮＦを保持しているため、情報ＮＯＵＴ２は、論理１から論理０に変化する。また、出力制御部２５０は、出力バッファ部２６０に保持された結果データＲＤＴのうち、出力番号ＣＴ（“５”）に一致する順番情報ＮＩＮＦに対応する結果データＲＤＴを、論理回路２７２に転送する。これにより、次の処理サイクルＣＹＣ１３において、出力番号ＣＴは、“５”から“６”にインクリメントされる。
【０１８８】
処理サイクルＣＹＣ１３では、論理回路２４２Ｂａの書き換えＤＲが実行されるため、処理Ａ１１は、Ａステージに投入されない。また、処理サイクルＣＹＣ１３では、入力制御部２２２は、処理サイクルＣＹＣ１２で処理決定部２１２により決定された処理Ｂａ１０を示す実行パス情報ＰＩＮＦ等を、待機バッファ部２３２に格納する。また、待機バッファ部２３２が実行パス情報ＰＩＮＦｉ（処理Ｂａ）に一致する実行パス情報ＰＩＮＦｗ（処理Ｂａ）を保持しているため、情報ＮＯＵＴ１は、論理１から論理０に変化する。
【０１８９】
また、処理サイクルＣＹＣ１３のＣステージでは、論理回路２７２は、出力バッファ部２６０に保持された結果データＲＤＴのうち、出力番号ＣＴ（“５”）に一致する順番情報ＮＩＮＦに対応する結果データＲＤＴを用いて、処理Ｃ５を実行する。また、出力制御部２５０は、出力バッファ部２６０に保持された結果データＲＤＴのうち、出力番号ＣＴ（“６”）に一致する順番情報ＮＩＮＦに対応する結果データＲＤＴを、論理回路２７２に転送する。これにより、次の処理サイクルＣＹＣ１４において、出力番号ＣＴは、“６”から“７”にインクリメントされる。
【０１９０】
処理サイクルＣＹＣ１４では、論理回路２４２Ｂａの書き換えＤＲが継続されるため、処理Ａ１１は、Ａステージに投入されない。また、処理サイクルＣＹＣ１４のＣステージでは、論理回路２７２は、出力バッファ部２６０に保持された結果データＲＤＴのうち、出力番号ＣＴ（“６”）に一致する順番情報ＮＩＮＦに対応する結果データＲＤＴを用いて、処理Ｃ６を実行する。また、出力制御部２５０は、出力バッファ部２６０に保持された結果データＲＤＴのうち、出力番号ＣＴ（“７”）に一致する順番情報ＮＩＮＦに対応する結果データＲＤＴを、論理回路２７２に転送する。これにより、次の処理サイクルＣＹＣ１５において、出力番号ＣＴは、“７”から“８”にインクリメントされる。
【０１９１】
処理サイクルＣＹＣ１５のＡステージでは、処理決定部２１２は、処理Ａ１１の分岐先を判定し、複数の処理Ｂ（Ｂａ、Ｂｂ）のうちの処理Ｂａ１１をＢステージで実行する処理Ｂに決定する。このため、実行パス情報ＰＩＮＦｊは、処理Ｂａを示す。また、実行パス情報ＰＩＮＦｉは、論理回路２４２が論理回路２４２Ｂａに書き換えられたため、処理Ｂａを示す。したがって、実行パス情報ＰＩＮＦｊと実行パス情報ＰＩＮＦｉとが一致する。処理Ａ１１がＡステージに投入される最後の処理Ａであるため、処理サイクルＣＹＣ１６以降では、Ａステージに処理Ａは投入されない。
【０１９２】
処理サイクルＣＹＣ１５のＢステージでは、入力制御部２２２は、再構成回路２０４に書き込まれている現状の論理回路２４２Ｂａ（書き換え後の論理回路２４２Ｂａ）に実行待ちの処理Ｂａ８を実行させる。例えば、入力制御部２２２は、待機バッファ部２３２に保持された複数の処理データＰＤＴのうち、順番情報ＮＩＮＦが“８”の処理データＰＤＴを現状の論理回路２４２Ｂａに転送し、実行待ちの処理Ｂａ８を現状の論理回路２４２Ｂａに実行させる。なお、順番情報ＮＩＮＦが“８”の処理データＰＤＴは、実行パス情報ＰＩＮＦｉ（処理Ｂａ）に一致する実行パス情報ＰＩＮＦｗに対応する処理データＰＤＴのうち、受付順が先の処理データＰＤＴである。
【０１９３】
処理サイクルＣＹＣ１５のＣステージでは、論理回路２７２は、出力バッファ部２６０に保持された結果データＲＤＴのうち、出力番号ＣＴ（“７”）に一致する順番情報ＮＩＮＦに対応する結果データＲＤＴを用いて、処理Ｃ７を実行する。
【０１９４】
処理サイクルＣＹＣ１６のＢステージでは、入力制御部２２２は、現状の論理回路２４２Ｂａに実行待ちの処理Ｂａ９を実行させる。このため、処理サイクルＣＹＣ１６では、入力制御部２２２は、処理サイクルＣＹＣ１５で処理決定部２１２により決定された処理Ｂａ１１を示す実行パス情報ＰＩＮＦ等を、待機バッファ部２３２に格納する。また、処理サイクルＣＹＣ１６のＣステージでは、論理回路２７２は、処理サイクルＣＹＣ１５で実行された処理Ｂａ８の処理結果を用いて、処理Ｃ８を実行する。
【０１９５】
処理サイクルＣＹＣ１７のＢステージでは、入力制御部２２２は、現状の論理回路２４２Ｂａに実行待ちの処理Ｂａ１０を実行させる。また、処理サイクルＣＹＣ１７のＣステージでは、論理回路２７２は、処理サイクルＣＹＣ１６で実行された処理Ｂａ９の処理結果を用いて、処理Ｃ９を実行する。
【０１９６】
処理サイクルＣＹＣ１８のＢステージでは、入力制御部２２２は、現状の論理回路２４２Ｂａに実行待ちの処理Ｂａ１１を実行させる。これにより、待機バッファ部２３２は、処理データＰＤＴ等を１つも保持していない空の状態になる。また、処理サイクルＣＹＣ１７のＣステージでは、論理回路２７２は、処理サイクルＣＹＣ１７で実行された処理Ｂａ１０の処理結果を用いて、処理Ｃ１０を実行する。
【０１９７】
処理サイクルＣＹＣ１９のＣステージでは、論理回路２７０は、処理サイクルＣＹＣ１８で実行された処理Ｂａ１１の処理結果を用いて、処理Ｃ１１を実行する。これにより、パイプラインに投入された一連の処理は終了する。
【０１９８】
このように、情報処理装置１４では、動的再構成により再構成される論理回路２４２の次段の論理回路２７２は、パイプラインに投入された順番で、処理Ｃを実行できる。
【０１９９】
図１３は、図９に示した情報処理装置１４の動作の別の例を示す。図１３では、図を見やすくするために、図１２では記載していた情報ＣＯＮＤ２、ＣＯＮＤ３、ＮＯＵＴ２および格納要求ＢＵＦＩＮの記載を省略している。また、図１３に示すＢステージで実行される処理Ｂは、処理Ｂａの欄と処理Ｂｂの欄とに分け、処理Ａ、Ｃに対応する数字（パイプラインへの投入順を示す数字）で記載される。
【０２００】
図１３に示す動作では、分岐先が処理Ｂａである処理Ａ（符号の末尾の数字が奇数の処理Ａ）と分岐先が処理Ｂｂである処理Ａ（符号の末尾の数字が偶数の処理Ａ）とが交互にパイプラインに投入される。このため、処理サイクルＣＹＣ５において、待機バッファ部２３２に保持される処理データＰＤＴの数が第１判定値（“２”）に達し、オールモストフル情報ＡＦＬ１が論理０から論理１に変化する。なお、第１判定値、第２判定値、処理サイクルＣＹＣ１での現状の論理回路２４２は、図１２と同じである。処理サイクルＣＹＣ５では、実行パス情報ＰＩＮＦｊ（処理Ｂａ）と実行パス情報ＰＩＮＦｉ（処理Ｂａ）とが一致するため、情報ＣＯＮＤ１は、論理０に維持される。
【０２０１】
処理サイクルＣＹＣ６では、実行パス情報ＰＩＮＦｊ（処理Ｂｂ）と実行パス情報ＰＩＮＦｉ（処理Ｂａ）とが異なる。また、オールモストフル情報ＡＦＬ１および情報ＮＯＵＴ１は、論理１である。このため、情報ＣＯＮＤ１は、論理０から論理１に変化する。これにより、次の処理サイクルＣＹＣ７において、現状の論理回路２４２Ｂａの書き換えＤＲが開始される。
【０２０２】
図１３に示す動作では、出力バッファ部２６０に保持される結果データＲＤＴの数が第２判定値（“２”）を超える前に、待機バッファ部２３２に保持される処理データＰＤＴの数が第１判定値（“２”）を超える。このため、図１３に示す動作では、出力バッファ部２６０に保持される結果データＲＤＴの数が第２判定値（“２”）を超えることによる論理回路２４２の書き換えＤＲは、発生しない。
【０２０３】
論理回路２４２が論理回路２４２Ｂｂに書き換えられた後では、実行待ちの処理Ｂｂから順に実行される。そして、処理サイクルＣＹＣ１４において、待機バッファ部２３２に保持される処理データＰＤＴの数が第１判定値（“２”）を超える。このため、処理サイクルＣＹＣ１４において、現状の論理回路２４２Ｂｂの書き換えＤＲが開始される。以降、現状の論理回路２４２により処理Ｂが５回実行される度に、現状の論理回路２４２の書き換えＤＲが実行される。そして、処理サイクルＣＹＣ３２のＢステージにおいて、最後の処理Ｂａ２１が実行される。また、処理サイクルＣＹＣ３５のＣステージにおいて、処理Ｂａ２１の処理結果を用いた最後の処理Ｃ２１が実行され、一連の処理が終了する。
【０２０４】
このように、図１３に示す動作では、論理回路２７２がパイプラインに投入された順番で処理Ｃを実行する場合、最初の処理Ａ１を実行してから、最後の処理Ａ２１に対応する処理Ｃ２１が終了するまでに、論理回路２４２の書き換えＤＲが４回実行される。これに対し、図２で説明した従来の情報処理装置では、パイプラインに投入された順番で処理Ｂが実行されるため、処理Ｂａ１から処理Ｂａ２１まで、処理Ｂが終了する度に論理回路２４２の書き換えＤＲが発生する。すなわち、従来の情報処理装置では、論理回路２７２がパイプラインに投入された順番で処理Ｃを実行する場合、最初の処理Ａ１を実行してから、最後の処理Ａ２１に対応する処理Ｃ２１が終了するまでに、論理回路２４２の書き換えＤＲが２０回実行される。
【０２０５】
情報処理装置１４では、動的再構成により再構成される論理回路２４２の次段の論理回路２７２がパイプラインに投入された順番で処理Ｃを実行する場合でも、複数の処理Ｂａ、Ｂｂを実行する際の動的再構成の回数の増加を従来に比べて抑制することができる。この結果、情報処理装置１４では、複数の処理Ｂを実行するのに要する処理サイクルＣＹＣの数の増加を従来に比べて抑制することができる。
【０２０６】
以上、図９から図１３に示す実施形態においても、図４から図８に示す実施形態と同様の効果を得ることができる。例えば、現状の論理回路２４２で実行できない処理ＢをＢステージで実行する処理Ｂに決定される度に論理回路２４２を書き換える場合に比べて、論理回路２４２の書き換え回数を削減することができる。すなわち、論理回路を書き換え可能な再構成回路２０４で複数の処理Ｂを実行する際の動的再構成の回数の増加を抑制することができる。
【０２０７】
これにより、情報処理装置１４の性能を向上させることができる。特に、論理回路２４２の書き換えに要する時間が、論理回路２４２が処理Ｂを実行する時間に比べて大きい場合、論理回路２４２の書き換え回数を削減することによる情報処理装置１４の性能向上の効果は、大きくなる。
【０２０８】
また、出力制御部２５０は、現状の論理回路２４２で実行された処理Ｂの結果である結果データＲＤＴを、実行された処理Ｂに対応する順番情報ＮＩＮＦが示す順番で次段の論理回路２７２に転送する。さらに、書き換え部３０２は、出力バッファ部２６０に保持される結果データＲＤＴの量が第２所定量を超える場合、出力番号ＣＴと同じ順番を示す順番情報ＮＩＮＦに対応する実行待ちの処理Ｂを実行する論理回路２４２に現状の論理回路２４２を書き換える。これにより、動的再構成により再構成される論理回路２４２の次段の論理回路２７２がパイプラインに投入された順番で処理Ｃを実行する場合でも、複数の処理Ｂを実行する際の動的再構成の回数の増加を従来に比べて抑制することができる。
【０２０９】
以上の実施形態において説明した発明を整理して、付記として以下の通り開示する。
（付記１）
論理回路を動的に書き換え可能な再構成回路を有する情報処理装置において、
複数の処理のうちのいずれの処理を実行するかを決定する処理決定部と、
前記処理決定部により決定された処理のうちの実行待ちの処理で使用される処理データを保持する待機バッファ部と、
前記処理決定部により決定された処理を実行する論理回路が前記再構成回路に書き込まれていない場合、前記処理決定部から受ける新規の処理データを前記待機バッファ部に格納し、前記処理決定部により決定された処理を前記実行待ちの処理として待機させる入力制御部と、
前記待機バッファ部に保持される処理データの量が第１所定量を超える場合、前記再構成回路に書き込まれている現状の論理回路を、前記待機バッファ部に保持された複数の処理データの各々を使用する複数の実行待ちの処理のいずれかを実行する論理回路に書き換える書き換え部と
を有することを特徴とする情報処理装置。
（付記２）
付記１に記載の情報処理装置において、
前記待機バッファ部に保持された処理データの数が予め決められた第１判定値以上で、前記処理決定部により決定された処理を実行する論理回路と前記現状の論理回路とが異なり、かつ、前記実行待ちの処理のいずれも前記現状の論理回路で実行可能でない場合、前記待機バッファ部に保持される処理データの量が前記第１所定量を超えると判定する第１判定部をさらに有し、
前記書き換え部は、前記第１判定部の判定結果に基づいて、前記現状の論理回路の書き換えを実行する
ことを特徴とする情報処理装置。
（付記３）
付記１または付記２に記載の情報処理装置において、
前記入力制御部は、前記現状の論理回路で実行可能な前記実行待ちの処理が存在する場合、前記処理決定部により決定された処理を前記実行待ちの処理として待機させ、前記現状の論理回路で実行可能な前記実行待ちの処理を前記現状の論理回路に実行させる
ことを特徴とする情報処理装置。
（付記４）
付記１ないし付記３のいずれか１項に記載の情報処理装置において、
前記書き換え部が前記現状の論理回路を書き換える場合、複数の処理のうちのいずれの処理を実行する論理回路に現状の論理回路を書き換えるかを選択する選択部をさらに有し、
前記入力制御部は、前記処理決定部から受けた処理データの受付順を示す順番情報を、処理データに対応付けて前記待機バッファ部に格納し、
前記選択部は、複数の前記実行待ちの処理のうち、受付順が先の処理を順番情報に基づいて選択し、
前記書き換え部は、前記待機バッファ部に保持される処理データの量が前記第１所定量を超える場合、前記選択部により選択された処理を実行する論理回路に前記現状の論理回路を書き換える
ことを特徴とする情報処理装置。
（付記５）
付記４に記載の情報処理装置において、
前記現状の論理回路で実行された処理の結果である結果データを、実行された処理に対応する順番情報が示す順番で次段に転送する出力制御部をさらに有し、
前記入力制御部は、前記現状の論理回路に実行させる処理に対応する順番情報を前記出力制御部に転送する
ことを特徴とする情報処理装置。
（付記６）
付記５に記載の情報処理装置において、
結果データが次段に転送される度に、出力番号をインクリメントする出力カウンタと、
次段への転送を待機する結果データを順番情報に対応付けて保持する出力バッファ部とをさらに有し、
前記出力制御部は、前記入力制御部から受けた順番情報が示す受付順と前記出力カウンタが示す出力番号とが異なる場合、前記現状の論理回路から受けた結果データを、前記入力制御部から受けた順番情報に対応付けて前記出力バッファ部に格納し、
前記書き換え部は、前記出力バッファ部に保持される結果データの量が第２所定量を超える場合、前記出力カウンタが示す出力番号と同じ順番を示す順番情報に対応する前記実行待ちの処理を実行する論理回路に前記現状の論理回路を書き換える
ことを特徴とする情報処理装置。
（付記７）
付記６に記載の情報処理装置において、
前記出力バッファ部に保持された結果データの数が予め決められた第２判定値以上で、かつ、前記出力カウンタが示す出力番号が前記出力バッファ部に保持された順番情報および前記入力制御部から受けた順番情報のそれぞれが示す受付順のいずれにも一致しない場合、前記出力バッファ部に保持される結果データの量が前記第２所定量を超えると判定する第２判定部をさらに有する
ことを特徴とする情報処理装置。
（付記８）
付記１ないし付記７のいずれか１項に記載の情報処理装置において、
前記処理決定部は、実行する処理を示す実行パス情報と処理データとを前記入力制御部に出力し、
前記入力制御部は、前記処理決定部により決定された処理を前記実行待ちの処理として待機させる場合、実行パス情報を処理データに対応付けて前記待機バッファ部に格納する
ことを特徴とする情報処理装置。
（付記９）
論理回路を動的に書き換え可能な再構成回路を有する情報処理装置による情報処理方法において、
前記情報処理装置が有する処理決定部が、複数の処理のうちのいずれの処理を実行するかを決定し、
前記情報処理装置が有する入力制御部が、前記処理決定部により決定された処理を実行する論理回路が前記再構成回路に書き込まれていない場合、前記処理決定部から受ける新規の処理データを、前記情報処理装置が有する待機バッファ部に格納し、前記処理決定部により決定された処理を実行待ちの処理として待機させ、
前記情報処理装置が有する書き換え部が、前記待機バッファ部に保持される処理データの量が第１所定量を超える場合、前記再構成回路に書き込まれている現状の論理回路を、前記待機バッファ部に保持された複数の処理データの各々を使用する複数の実行待ちの処理のいずれかを実行する論理回路に書き換える
ことを特徴とする情報処理方法。
（付記１０）
論理回路を動的に書き換え可能な再構成回路を有する情報処理装置の動作を制御する情報処理プログラムにおいて、
前記情報処理装置が有する処理決定部が、複数の処理のうちのいずれの処理を実行するかを決定し、
前記情報処理装置が有する入力制御部が、前記処理決定部により決定された処理を実行する論理回路が前記再構成回路に書き込まれていない場合、前記処理決定部から受ける新規の処理データを、前記情報処理装置が有する待機バッファ部に格納し、前記処理決定部により決定された処理を実行待ちの処理として待機させ、
前記情報処理装置が有する書き換え部が、前記待機バッファ部に保持される処理データの量が第１所定量を超える場合、前記再構成回路に書き込まれている現状の論理回路を、前記待機バッファ部に保持された複数の処理データの各々を使用する複数の実行待ちの処理のいずれかを実行する論理回路に書き換える
処理を前記情報処理装置に実行させるための情報処理プログラム。
（付記１１）
論理回路を動的に書き換え可能な再構成回路を有する情報処理装置を有し、前記情報処理装置を用いて演算を実行する情報処理システムにおいて、
前記情報処理装置は、
複数の処理のうちのいずれの処理を実行するかを決定する処理決定部と、
前記処理決定部により決定された処理のうちの実行待ちの処理で使用される処理データを保持する待機バッファ部と、
前記処理決定部により決定された処理を実行する論理回路が前記再構成回路に書き込まれていない場合、前記処理決定部から受ける新規の処理データを前記待機バッファ部に格納し、前記処理決定部により決定された処理を前記実行待ちの処理として待機させる入力制御部と、
前記待機バッファ部に保持される処理データの量が第１所定量を超える場合、前記再構成回路に書き込まれている現状の論理回路を、前記待機バッファ部に保持された複数の処理データの各々を使用する複数の実行待ちの処理のいずれかを実行する論理回路に書き換える書き換え部と
を有することを特徴とする情報処理システム。
【０２１０】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【０２１１】
１０、１２、１４‥情報処理装置；１００‥プロセッサ；１１０‥メモリ；１２０‥バス；２００、２０２、２０４‥再構成回路；２１０、２１２‥処理決定部；２２０、２２２‥入力制御部；２３０、２３２‥待機バッファ部；２４０、２４２‥論理回路；２５０‥出力制御部；２６０‥出力バッファ部；２７０、２７２‥論理回路；２８０、２８２‥判定部；３００、３０２‥書き換え部；４００‥無効値判定部；４１０、４１２‥不一致検出回路；４２０、４２２‥不一致検出部；４３０、４３４、４４０‥論理積回路；４５０、４５２、４７０、４７２‥論理和回路；４２０Ｂ、４２２Ｂ、４６０‥否定論理和回路；４２０Ａ、４２２Ａ‥一致検出回路；４８０‥選択部
【図１】
2019021046.tif 000003
【図２】
2019021046.tif 000004
【図３】
2019021046.tif 000005
【図４】
2019021046.tif 000006
【図５】
2019021046.tif 000007
【図６】
2019021046.tif 000008
【図７】
2019021046.tif 000009
【図８】
2019021046.tif 000010
【図９】
2019021046.tif 000011
【図１０】
2019021046.tif 000012
【図１１】
2019021046.tif 000013
【図１２】
2019021046.tif 000014
【図１３】
2019021046.tif 000015