(57)【要約】【課題】演算に応じて処理時間を短縮できるリコンフィグ演算装置を備えるコンピュータシステムの実現。【解決手段】CPU1と、RAM I/F2と、リコンフィグ演算装置4と、を備えるコンピュータシステムであって、リコンフィグ演算装置は、入力端子31と、出力端子32と、複数のPE33と、接続状態が変更可能なネットワーク34と、RAM I/F2のアドレス空間に配置されたリコンフィグ内蔵RAM14と、制御部31,32と、を備え、演算は、第１の種類の命令と、第２の種類の命令と、を備え、CPU1は、第１の種類の命令をリコンフィグ内蔵RAMの第１アドレスに、変数データを第２アドレスに書き込み、制御部は書き込まれた第１の種類の命令を解読して、複数のPEおよびネットワークを設定し、CPU1は第２の種類の命令の変数データを、リコンフィグ内蔵RAMの固定入力アドレスに書き込み、制御部はそれに応じて複数のPEおよびネットワークを設定する。【選択図】図２
2011008519.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵと、ＲＡＭインターフェースと、前記ＲＡＭインターフェースのアドレス空間に配置されるＲＡＭと、コンフィグレーションデータに基づいて演算機能を動的に変更可能なリコンフィグ演算装置と、を備えるコンピュータシステムであって、
前記リコンフィグ演算装置は、
入力端子と、
出力端子と、
クロックに同期してそれぞれの演算処理を行う複数のプロセッサエレメントと、
前記入力端子と前記出力端子と前記複数のプロセッサエレメントの入力ポートおよび出力ポートとの間を接続し、接続状態が変更可能なプロセッサ間ネットワークと、
前記ＲＡＭインターフェースのアドレス空間に配置され、前記ＣＰＵが、前記リコンフィグ演算装置で実行する演算に関係するデータを書き込み、前記リコンフィグ演算装置で実行した演算結果が書き込まれるリコンフィグ内蔵ＲＡＭと、
前記ＣＰＵが前記リコンフィグ内蔵ＲＡＭの所定アドレスに前記演算に関係するデータを書き込むと、前記複数のプロセッサエレメントおよび前記プロセッサ間ネットワークを対応した演算処理を行う状態に設定して前記演算を開始するように制御する制御部と、を備え、
前記演算は、第１の種類の命令と、第２の種類の命令と、を備え、
前記ＣＰＵは、前記第１の種類の命令を前記リコンフィグ内蔵ＲＡＭの第１の所定アドレスに、前記第１の種類の命令の変数データを前記リコンフィグ内蔵ＲＡＭの第２の所定アドレスに書き込み、
前記制御部は、前記第１の所定アドレスに書き込みが行われると、書き込まれた前記第１の種類の命令を解読して、前記複数のプロセッサエレメントおよび前記プロセッサ間ネットワークを前記演算命令に対応した演算処理を行う状態に設定し、
前記ＣＰＵは、前記第２の種類の命令の変数データを、前記リコンフィグ内蔵ＲＡＭの前記第１および第２の所定アドレス以外の固定入力アドレスに書き込み、
前記制御部は、前記固定入力アドレスに書き込みが行われると、前記複数のプロセッサエレメントおよび前記プロセッサ間ネットワークを前記第２の種類の命令に対応した演算処理を行う状態に設定することを特徴とするコンピュータシステム。
【請求項２】
前記第２の種類の命令は、複数の特定演算命令を備え、
前記リコンフィグ内蔵ＲＡＭの前記固定入力アドレスは、前記複数の特定演算命令に対応して複数の特定入力固定アドレスを備え、
前記ＣＰＵは、前記複数の特定演算命令を、対応する前記リコンフィグ内蔵ＲＡＭの前記複数の特定固定入力アドレスに書き込むことを特徴とする請求項１に記載のコンピュータシステム。
【請求項３】
前記制御部は、前記第２の種類の命令の変数データの前記固定入力アドレスへの書き込みが行われると、前記リコンフィグ演算装置が前記第１の種類の命令を実行中であるか判定し、実行中でなければ前記第２の種類の命令をただちに実行し、実行中であれば、前記リコンフィグ演算装置で前記第２の種類の命令が並行して実行可能であるか判定し、並行して実行可能であれば前記複数のプロセッサエレメントおよび前記プロセッサ間ネットワークを前記第２の種類の命令を並行して行う状態に設定し、並行して実行可能でなければ実行中の前記第１の種類の命令の終了後前記第２の種類の命令をただちに実行することを特徴とする請求項１または２に記載のコンピュータシステム。
【請求項４】
前記リコンフィグ演算装置は、
前記第１の種類の命令の演算結果を、前記リコンフィグ内蔵ＲＡＭの第３の所定アドレスに書き込み、
前記第２の種類の命令の演算結果を、前記リコンフィグ内蔵ＲＡＭの固定出力アドレスに書き込むことを特徴とする請求項１から３のいずれか１項に記載のコンピュータシステム。
【請求項５】
前記リコンフィグ演算装置は、前記ＣＰＵによる前記第２の種類の命令の変数データの前記固定入力アドレスへの書き込みに対する受取を、前記第２の種類の命令の演算結果を前記リコンフィグ内蔵ＲＡＭの固定出力アドレスに書き込んだ後出力することを特徴とする請求項４に記載のコンピュータシステム。
【請求項６】
前記複数のプロセッサエレメントは、前記特定演算命令の演算を単独で実行可能であるプロセッサエレメントを含むことを特徴とする請求項２に記載のコンピュータシステム。
【請求項７】
前記複数のプロセッサエレメントは、異なる前記特定演算命令の演算を単独で実行するように変更可能であるプロセッサエレメントを含むことを特徴とする請求項２に記載のコンピュータシステム。
【請求項８】
入力端子と、
出力端子と、
クロックに同期してそれぞれの演算処理を行う複数のプロセッサエレメントと、
前記入力端子と前記出力端子と前記複数のプロセッサエレメントの入力ポートおよび出力ポートとの間を接続し、接続状態が変更可能なプロセッサ間ネットワークと、
複数の演算をそれぞれ実行するように、前記複数のプロセッサエレメントおよび前記プロセッサ間ネットワークを変更するためのコンフィグレーションデータを記憶するメモリと、
実行する演算に関係するデータが書き込まれ、実行した演算結果が書き込まれるリコンフィグ内蔵ＲＡＭと、
前記リコンフィグ内蔵ＲＡＭの所定アドレスに前記演算に関係するデータが書き込まれると、前記コンフィグレーションデータに基づいて前記複数のプロセッサエレメントおよび前記プロセッサ間ネットワークを対応した演算処理を行う状態に設定して前記演算を開始するように制御する制御部と、を備え、
前記演算は、第１の種類の命令と、第２の種類の命令と、を備え、
前記第１の種類の命令は前記リコンフィグ内蔵ＲＡＭの第１の所定アドレスに、前記第１の種類の命令の変数データは前記リコンフィグ内蔵ＲＡＭの第２の所定アドレスに書き込まれ、
前記制御部は、前記第１の所定アドレスに書き込みが行われると、書き込まれた前記第１の種類の命令を解読して、前記複数のプロセッサエレメントおよび前記プロセッサ間ネットワークを前記演算命令に対応した演算処理を行う状態に設定し、
前記第２の種類の命令の変数データは、前記リコンフィグ内蔵ＲＡＭの前記第１および第２の所定アドレス以外の固定入力アドレスに書き込まれ、
前記制御部は、前記固定入力アドレスに書き込みが行われると、前記複数のプロセッサエレメントおよび前記プロセッサ間ネットワークを前記第２の種類の命令に対応した演算処理を行う状態に設定する、ことを特徴とする演算機能を動的に変更可能なリコンフィグ演算装置。
【請求項９】
前記第２の種類の命令は、複数の特定演算命令を備え、
前記リコンフィグ内蔵ＲＡＭの前記固定入力アドレスは、前記複数の特定演算命令に対応して複数の特定入力固定アドレスを備え、
前記複数の特定演算命令は、対応する前記リコンフィグ内蔵ＲＡＭの前記複数の特定固定入力アドレスに書き込まれることを特徴とする請求項８に記載のリコンフィグ演算装置。
【請求項１０】
前記制御部は、前記第２の種類の命令の変数データの前記固定入力アドレスへの書き込みが行われると、前記第１の種類の命令を実行中であるか判定し、実行中でなければ前記第２の種類の命令をただちに実行し、実行中であれば、前記第２の種類の命令が並行して実行可能であるか判定し、並行して実行可能であれば前記複数のプロセッサエレメントおよび前記プロセッサ間ネットワークを前記第２の種類の命令を並行して行う状態に設定し、並行して実行可能でなければ実行中の前記第１の種類の命令の終了後前記第２の種類の命令をただちに実行することを特徴とする請求項８または９に記載のリコンフィグ演算装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リコンフィグ演算装置を備えるコンピュータシステムおよびリコンフィグ演算装置に関する。
【背景技術】
【０００２】
従来の伝統的なプログラム可能なマイクロプロセッサは、メモリに記憶されている命令を順番に読み出して逐次的に処理する。実行可能な命令は簡単な命令であり、このようなマイクロプロセッサの処理能力には一定の限界がある。
近年、マイクロプロセッサは、高速の割り込み応答性などの従来通りの要求に加えて、さらに複雑な演算についても高速に実行することが要求されるようになってきた。
【０００３】
制御用マイクロコンピュータ（マイコン）は、高速に演算処理を実行することを目的に作られた汎用マイクロプロセッサ（ＣＰＵ）と異なり、一般的に割り込みによる制御および高い応答性を目的として作られている。そのため、制御用マイコンで実行可能な命令は、単純な命令のみで、複雑な処理命令を備えていないという問題があった。また、複雑な命令を備えている場合でも、その処理時間が長いという問題があった。近年要望されている制御マイコンは、割り込み応答性は重要であるが、それに加えて、複雑な演算を含んだアプリケーションを高速に実行できることが要求されている。制御用マイコンを含めて、マイクロプロセッサには、次のような問題があった。
【０００４】
マイクロプロセッサで複雑な演算を実行可能にする場合、プロセッサ内部の演算ユニット（ＡＬＵ）における演算レイテンシが長くなり、演算実行時における割り込み応答が遅くなるという問題を生じる。また、割り込み応答のために、実行していた演算を破棄した場合、再実行処理による演算ペナルティが大きくなり、演算時間が長くなるという問題を生じる。
【０００５】
そこで、プロセッサに、複雑な演算を実行する専用のコプロセッサを接続して、複雑な演算はコプロセッサで実行し、プロセッサは演算結果のみを受け取ることが行われている。しかし、汎用のバス（ＢＵＳ）上にコプロセッサを接続した場合、アプリケーションの連続する処理で、直前の演算結果を使う演算や、直後に演算結果が必要な場合が生じる。このような場合に、例えば平方根演算を１演算だけコプロセッサで実行しても、ＢＵＳアクセスによるペナルティのために実際にはあまり演算性能が向上しないという問題がある。また、汎用ＢＵＳ上にコプロセッサを接続する場合、割り込み応答などによる処理に悪影響を及ぼし、割り込み処理時間が長くなるという問題を生じる。
【０００６】
また、コプロセッサを専用インターフェース（Ｉ／Ｆ）で接続した場合、接続するコプロセッサに搭載される命令で演算可能な処理が決定されてしまい、使用できる演算が限定されるという問題がある。
【０００７】
コプロセッサの演算機能が限定されるという問題を解決するために、複数のプロセッサエレメントと、複数のプロセッサエレメント、入力端子および出力端子間を変更可能に接続するプロセッサ間ネットワークと、を備え、複数の演算機能を選択的に実行するように内部状態を変更可能な再構成可能な演算装置が知られている。以下、再構成可能な演算装置をリコンフィグ演算装置と称する。
【０００８】
リコンフィグ演算装置は、一般には複雑な演算を実行することを目的としているため、多数の変数データを設定可能で、繰り返し演算などを実行可能なように構成される。そのため、リコンフィグ演算装置での演算時間が長く、プロセッサによるリコンフィグ演算装置へのアクセスは高速であることはあまり必要でなかった。このような理由で、リコンフィグ演算装置は、汎用ＢＵＳに接続され、プロセッサ（ＣＰＵ）が変数データを設定した後、割り込みにより起動されるのが一般的である。リコンフィグ演算装置を使用する場合、プロセッサはＣＰＵと称されるので、以下プロセッサをＣＰＵとして説明する。
【０００９】
リコンフィグ演算装置は、演算機能を変更可能であり、非常に複雑な演算も実行可能であるが、内部の構成を変更すれば、比較的簡単な演算も実行可能である。このような比較的簡単な演算も、ＣＰＵで実行する場合処理時間が長くなる。リコンフィグ演算装置の実際の使用においては、非常に複雑な演算を行う頻度はあまり高くなく、比較的簡単な演算に使用されることが多い。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００６−３０２１３２号公報
【特許文献２】特開２００７−０９４８４７号公報
【特許文献３】特開２００７−１３３４５６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
前記のリコンフィグ演算装置では、汎用ＢＵＳに接続されるため、上記のＢＵＳアクセスによるペナルティのために実際にはあまり演算性能が向上しないという問題や、割り込み処理時間が長くなるという問題がある。そのため、比較的簡単な演算をリコンフィグ演算装置で実行するようにしても、処理時間はあまり短縮できないという問題が生じている。
【課題を解決するための手段】
【００１２】
実施形態の第１の態様のコンピュータシステムは、ＣＰＵと、ＲＡＭインターフェースと、ＲＡＭインターフェースのアドレス空間に配置されるＲＡＭと、コンフィグレーションデータに基づいて演算機能を動的に変更可能なリコンフィグ演算装置と、を備えるコンピュータシステムである。このコンピュータシステムにおいて、リコンフィグ演算装置は、入力端子と、出力端子と、クロックに同期してそれぞれの演算処理を行う複数のプロセッサエレメントと、入力端子と出力端子と複数のプロセッサエレメントの入力ポートおよび出力ポートとの間を接続し、接続状態が変更可能なプロセッサ間ネットワークと、ＲＡＭインターフェースのアドレス空間に配置され、ＣＰＵが、リコンフィグ演算装置で実行する演算に関係するデータを書き込み、リコンフィグ演算装置で実行した演算結果が書き込まれるリコンフィグ内蔵ＲＡＭと、ＣＰＵがリコンフィグ内蔵ＲＡＭの所定アドレスに演算に関係するデータを書き込むと、複数のプロセッサエレメントおよびプロセッサ間ネットワークを対応した演算処理を行う状態に設定して演算を開始するように制御する制御部と、を備える。演算は、第１の種類の命令と、第２の種類の命令と、を備える。第１の種類の命令を実行する場合、ＣＰＵは、第１の種類の命令をリコンフィグ内蔵ＲＡＭの第１の所定アドレスに、第１の種類の命令の変数データをリコンフィグ内蔵ＲＡＭの第２の所定アドレスに書き込み、制御部は、第１の所定アドレスに書き込みが行われると、書き込まれた第１の種類の命令を解読して、複数のプロセッサエレメントおよびプロセッサ間ネットワークを演算命令に対応した演算処理を行う状態に設定する。第２の種類の命令を実行する場合、ＣＰＵは、第２の種類の命令の変数データを、リコンフィグ内蔵ＲＡＭの第１および第２の所定アドレス以外の固定入力アドレスに書き込み、制御部は、固定入力アドレスに書き込みが行われると、複数のプロセッサエレメントおよびプロセッサ間ネットワークを第２の種類の命令に対応した演算処理を行う状態に設定する。
【発明の効果】
【００１３】
実施形態の第１の態様によれば、ＣＰＵは、ＲＡＭインターフェースを介してリコンフィグ内蔵ＲＡＭの所定のアドレスに演算に関係するデータを書き込むだけで、リコンフィグ演算装置に演算を実行させることができる。また、演算結果がリコンフィグ内蔵ＲＡＭに出力されるので、ＣＰＵはリコンフィグ内蔵ＲＡＭにアクセスするだけで演算結果を得ることができる。
【００１４】
特に、比較的簡単な演算処理である第２の種類の命令を実行する場合、ＣＰＵが、第２の種類の命令の変数データを、リコンフィグ内蔵ＲＡＭの固定入力アドレスに書き込むだけでよい。この書き込みに応じて、命令の解読を行わずに複数のプロセッサエレメントおよびプロセッサ間ネットワークは、第２の種類の命令に対応した演算処理を行う状態に設定される。従って。応答時間が短くなり、比較的簡単な演算処理である第２の種類の命令を短時間で実行できる。
特に、制御用マイコンは、一般的に割り込みによる制御および高い応答性を目的として作られているため、リコンフィグ回路を追加するだけで、特別な回路や機構を増やすことなく、複雑な演算を含む処理を高速に実行できるようになる。さらに、上記の実施例の構成によれば、リコンフィグ回路は、汎用のバスを使用しないため、制御用マイコンの割り込みの応答性が低下することもない。
【図面の簡単な説明】
【００１５】
【図１】図１は、第１実施形態のコンピュータシステムの概略構成を示す図である。
【図２】図２は、第１実施形態のリコンフィグ回路の構成を示す図である。
【図３】図３は、第１実施形態のリコンフィグ回路における演算実行のための構成例を示す図である。
【図４】図４は、第１実施形態のリコンフィグ回路に設けた、内部に複数の演算器およびネットワークを備えるＰＥの例を示す図である。
【図５】図５は、第１実施形態におけるリコンフィグ内蔵ＳＲＡＭのアドレス構成を示す図である。
【図６】図６は、第１実施形態におけるリコンフィグ回路を利用した演算動作を示すシーケンス図である。
【図７】図７は、第１実施形態において、アクセラレータ演算を実行する場合の動作を示すフローチャートである。
【図８】図８は、第１実施形態において、特定演算を実行する場合の動作を示すフローチャートである。
【図９】図９は、第１実施形態において、アクセラレータ演算と特定演算を並列に実効する場合の演算ユニット&ネットワークにおける使用状態を説明する図である。
【図１０】図１０は、第１実施形態における特定演算の起動動作を示すタイムチャートである。
【図１１】図１１は、第１実施形態における特定演算の終了動作を示すタイムチャートである。
【図１２】図１２は、第１実施形態で、特定演算を実行する場合にＣＰＵからのアクセスに対してアクノレッジの返送を演算終了まで待つ変形例の動作を示すフローチャートである。
【図１３】図１３は、第２実施形態のコンピュータシステムの構成を示す図である。
【図１４】図１４は、第３実施形態のコンピュータシステムの構成を示す図である。
【図１５】図１５は、第２および第３実施形態のコンピュータシステムにおいて、演算エレメントに割り当てる演算機能の例を示す図である。
【図１６】図１６は、第２および第３実施形態のコンピュータシステムにおいて、演算エレメントに割り当てる演算機能の別の例を示す図である。
【発明を実施するための形態】
【００１６】
図１は、第１実施形態のコンピュータシステムの構成を示す図である。
【００１７】
図１に示すように、第１実施形態のコンピュータシステムは、ＣＰＵ１と、ＲＡＭインターフェース（Ｉ／Ｆ）２と、ＳＲＡＭ３と、リコンフィグ回路４と、周辺Ｉ／Ｆ５と、外部ＲＡＭ６と、周辺機器７Ａ〜７Ｎと、を備える。ＣＰＵ１は、ＲＡＭＩ／Ｆ２を介してＳＲＡＭ３およびリコンフィグ回路４にアクセスする。また、ＣＰＵ１は、ＲＡＭＩ／Ｆ２および周辺Ｉ／Ｆ５を介して外部ＲＡＭ６および周辺機器７Ａ〜７Ｎにアクセスする。ＲＡＭＩ／Ｆ２の方が周辺Ｉ／Ｆ５より拘束のアクセスが可能であるので、ＣＰＵ１からＳＲＡＭ３およびリコンフィグ回路４に対するアクセス速度の方が、ＣＰＵ１から外部ＲＡＭ６および周辺機器７Ａ〜７Ｎに対するアクセス速度より高速である。
【００１８】
ＣＰＵ１、ＳＲＡＭ３、リコンフィグ回路４、ＲＡＭＩ／Ｆ２および周辺Ｉ／Ｆ５のすべてまたは一部は、１チップの半導体集積回路として実現できる。しかし、ＣＰＵ１、ＳＲＡＭ３、リコンフィグ回路４および周辺Ｉ／Ｆ５を個別の集積回路チップとし、プリントボード上に形成されたＲＡＭＩ／Ｆ２の配線に接続するように搭載する形で実現することも可能である。
【００１９】
図１に示すように、リコンフィグ回路４は、演算エレメント１１と、制御ブロック１２と、リコンフィグシーケンサ１３と、リコンフィグ内蔵ＳＲＡＭ１４と、備える。さらに、演算エレメント１１は、演算ユニット＆ネットワーク２１と、コンフィグデータメモリ２２と、を備える。ＣＰＵ１は、ＲＡＭＩ／Ｆ２を介してリコンフィグ内蔵ＳＲＡＭ１４にアクセスする。
【００２０】
図２は、リコンフィグ回路４のより詳細な構成を示す図である。
【００２１】
図２に示すように、演算ユニット＆ネットワーク２１は、入力ポート３１と、出力ポート３２と、複数のプロセッサエレメント（ＰＥ）３３と、入力ポート３１、出力ポート３２および複数のＰＥ３３の入力部および出力レジスタの間の接続を変更するネットワーク３４と、を備える。コンフィグデータメモリ２２は、実行する各演算に対応して、ネットワーク３４の接続および使用するＰＥ３３内の接続などのデータを記憶している。コンフィグデータメモリ２２は、指示された演算に対応するデータを演算ユニット＆ネットワーク２１に出力し、入力ポート３１から入力される変数データに指示された演算を施して結果を出力ポート３２に出力する。
【００２２】
リコンフィグ内蔵ＳＲＡＭ１４は、ＣＰＵから演算用変数データおよび演算命令を書き込まれると、リコンフィグ起動指示フラグを立てる。リコンフィグ起動指示フラグが立てられると、そのことが制御ブロック１２に通知される。演算命令は、制御ブロック１２またはコンフィグデータメモリ２２に通知され、演算用変数データは入力ポート３１に転送される。出力ポート３２から出力される演算結果は、リコンフィグ内蔵ＳＲＡＭ１４に書き込まれる。制御ブロック１２は、演算が終了すると、リコンフィグ内蔵ＳＲＡＭ１４に演算終了フラグを書き込む。リコンフィグシーケンサ１３は、制御ブロック１２からの指示に応じて演算エレメント１１をシーケンス制御し、演算シーケンスが終了すると、制御ブロック１２に終了を通知する。
【００２３】
図３は、複数のＰＥ３３を組み合わせて所定の演算処理を実行する演算ユニット＆ネットワーク２１の例を説明する図である。図３の例は、乗算加算(Multiplier Accumulate)プロセッサエレメントMAC-PEと、遅延プロセッサエレメントDEL-PEと、加算プロセッサエレメントALU-PEと、を図示のように接続して、ａ×ｂ＋ｃを演算する。図３で、Shift/Maskは、入力データのビットをシフトするシフト回路とその一部のビットをマスクするマスク回路からなる入力部である。Regは、クロックCLKに同期して保持動作を行うレジスタである。MULは乗算器である。ACCは加算器である。ALUは加算、減算、論理演算を行うように切り替え可能な演算器である。
【００２４】
演算ユニット＆ネットワーク２１は、入力部と出力レジスタと１個の演算器のみからなる基本演算用ＰＥのみを備え、これらのＰＥをネットワーク３４で接続して所望の演算を行えるようにすることが可能である。また、ＰＥ内に複数の演算器およびレジスタなどを設け、使用頻度の高い演算を、１個のＰＥで行うようにすることも可能である。
【００２５】
また、図４に示すように、１個のＰＥ内に複数のＰＥおよび接続変更可能なネットワークを設けて、１個のＰＥで複雑な演算を行えるようにする場合もある。
【００２６】
上記のようなＰＥを多数備え、繰り返し演算も可能な演算ユニット＆ネットワーク２１は、非常に複雑な演算も実行可能であるが、その分演算時間も長くなる。
【００２７】
リコンフィグ回路４については、広く知られているので、これ以上の説明は省略する。
【００２８】
第１実施形態におけるリコンフィグ回路４は、除算器、平方根演算器、三角関数演算器、浮動小数点演算器などの頻繁に使用される演算を実行するＰＥを備えている。言い換えれば、リコンフィグ回路４は、除算用ＰＥ、平方根演算用ＰＥ、三角関数演算用ＰＥ、浮動小数点演算用ＰＥなどを備える。ここでは、このような演算を特定演算と称し、このような演算を行うＰＥ３３を特定演算エレメントと称する。さらに、リコンフィグ回路４で特定演算を実行するように指示する命令を第２の種類の命令と称する。特定演算は、あらかじめ決定されている。
【００２９】
これに対して、リコンフィグ回路４内で複数のＰＥ３３をネットワークで接続して行う演算をアクセラレータ演算と称し、リコンフィグ回路４でアクセラレータ演算を実行するように指示する命令を第１の種類の命令と称する。
【００３０】
図５は、リコンフィグ内蔵ＲＡＭ１４のアドレス領域の割り当てを説明する図である。図５に示すように、リコンフィグ内蔵ＲＡＭ１４のアドレス領域は、アクセラレータ演算領域と、特定演算Ａ領域と、特定演算領域Ｂと、フラグ領域と、を備える。特定演算領域は、登録されている特定演算の個数分存在する。
【００３１】
アクセラレータ演算領域は、アクセラレータ演算命令（第１の種類の命令）、すなわちコマンドコードを書き込むアドレス領域と、アクセラレータ演算の変数データを書き込むアドレス領域と、アクセラレータ演算の演算結果を書き込むアドレス領域と、を備える。変数データおよび演算結果の個数（データ量）は、アクセラレータ演算命令により異なる。そのため、アクセラレータ演算の変数データを書き込むアドレス領域およびアクセラレータ演算の演算結果を書き込むアドレス領域は、最大データ量が書き込める領域を有する。
【００３２】
特定演算Ａ領域は、特定演算Ａの変数データを書き込むアドレス領域と、特定演算Ａの演算結果を書き込むアドレス領域と、を備える。同様に、特定演算Ｂ領域は、特定演算Ｂの変数データを書き込むアドレス領域と、特定演算Ｂの演算結果を書き込むアドレス領域と、を備える。他の特定演算領域も、同様のアドレス領域を備える。特定演算の種類により、変数データおよび演算結果の個数（データ量）は決まっているので、各特定演算領域の幅は固定である。
【００３３】
上記のように、アクセラレータ演算領域にアクセラレータ演算命令が書き込まれると、リコンフィグ起動指示フラグが立ち、これに応じて制御ブロック１２がアクセラレータ演算命令を解読し、コンフィグデータメモリ２２内に記憶された対応するコンフィグデータがサーチされる。リコンフィグシーケンサ１３は、サーチされた対応するコンフィグデータに基づいて、演算ユニット＆ネットワーク２１のネットワーク３４および使用するＰＥ３３を、指示された演算を実行する状態に設定する。
【００３４】
アクセラレータ演算領域に書き込まれた変数データは、リコンフィグシーケンサ１３の指示により、入力ポート３１に入力され、ネットワーク３４を介して、変数データが入力されるＰＥ３３に供給される。
【００３５】
アクセラレータ演算が終了すると、アクセラレータ演算の演算結果が出力ポート３２に出力され、リコンフィグシーケンサ１３の指示により、リコンフィグ内蔵ＲＡＭ１４のアクセラレータ演算の演算結果を書き込むアドレス領域に書き込まれる。
【００３６】
以上のように、アクセラレータ演算は、制御ブロック１２およびリコンフィグシーケンサ１３により、演算ユニット＆ネットワーク２１のネットワーク３４および使用するＰＥ３３の設定が制御される。
【００３７】
特定演算は、特定演算の変数データが所定のアドレス領域に書き込まれると、制御ブロック１２によりその特定演算を実行するＰＥが使用可能であるか判定され、使用可能であれば、変数データが対応するＰＥに入力され、対応するＰＥが特権モードで起動する。この場合の変数データの転送は、ネットワーク３４を使用して行うことができる。しかし、特定演算を実行するＰＥ３３の入力部を、リコンフィグ内蔵ＳＲＡＭ１４の特定演算の変数データが書き込まれるアドレス領域と直接接続し、変数データが直接対応するＰＥ３３に入力できるようにしてもよい。これは、演算結果についても同様で、対応するＰＥ３３の出力を、直接リコンフィグ内臓ＳＲＡＭ１４の特定演算の演算結果のアドレス領域に出力するようにしてもよい。
【００３８】
いずれにしろ、特定演算は、実行するＰＥがあらかじめ決められており、リコンフィグ内臓ＳＲＡＭ１４から対応するＰＥへの変数データの転送および演算結果のリコンフィグ内臓ＳＲＡＭ１４のための経路を設定するだけなので、短時間に起動して実行可能である。
【００３９】
図６は、第１実施形態において、ＣＰＵ１が、リコンフィグ回路４に演算を指示し、演算結果を取得するまでの基本的な動作シーケンスを示す。
【００４０】
まず、ＣＰＵ１が、リコンフィグ内蔵ＳＲＡＭ１４の所定のアドレスに演算の変数データを書き込む。上記のように、特定演算であれば、決められたアドレスに変数データを書き込むだけで演算の指示が終了するが、アクセラレータ演算の場合には、さらにアクセラレータ演算命令を書き込むことにより演算指示が終了する。
【００４１】
次に、リコンフィグ回路４の制御ブロック１２は、指示された演算を開始する起動条件が成立したかが判定され、成立するまで待機し、成立すれば演算ユニット＆ネットワーク２１を指示された演算を実行するように変更するように指示(Launch)する。これに応じてリコンフィグシーケンサ１３が、入力された変数データを演算ユニット＆ネットワーク２１を取り込むように制御する。この後、演算ユニット＆ネットワーク２１は、リコンフィグシーケンサ１３の制御で演算を実行する。
【００４２】
演算が終了すると、リコンフィグシーケンサ１３は、演算が正常に終了したかを判定し、正常に終了していれば、演算結果をリコンフィグ内蔵ＳＲＡＭ１４の所定のアドレスに出力するように指示し、正常終了割り込みを発生する。これに応じて制御ブロック１２は、リコンフィグ内蔵ＳＲＡＭ１４に正常終了フラグを書き込む。リコンフィグシーケンサ１３は、正常に終了していなければ、エラーによる終了割り込みを発生する。これに応じて制御ブロック１２は、リコンフィグ内蔵ＳＲＡＭ１４にエラー終了フラグを書き込む。これらのフラグは、例えば、終了フラグと正常終了またはエラー終了を示すフラグを組み合わせて実現される。
【００４３】
正常終了の場合には、ＣＰＵ１は、リコンフィグ内蔵ＳＲＡＭ１４から演算結果を読み出し、演算データの取得が完了する。エラー終了の場合は、ＣＰＵ１は、再度演算指示を行うなどの処理を実行する。
【００４４】
図７は、第１実施形態において、ＣＰＵ１が、リコンフィグ回路４にアクセラレータ演算を指示し、演算結果を取得するまでの動作を示すフローチャートである。
【００４５】
ステップ１０１では、ＣＰＵ１が、リコンフィグ内蔵ＳＲＡＭ１４の所定のアドレス（アクセラレータ演算の変数データ領域）に演算の変数データを書き込む。
【００４６】
ステップ１０２では、ＣＰＵ１が、リコンフィグ内蔵ＳＲＡＭ１４の所定のアドレス（アクセラレータ演算命令領域）にアクセラレータ演算命令を書き込む。これにより、リコンフィグ演算の起動が指示される。
【００４７】
ステップ１０３では、ＣＰＵ１が、リコンフィグ内蔵ＳＲＡＭ１４にリコンフィグ起動指示フラグを立てる。
【００４８】
ステップ１０４では、リコンフィグ内蔵ＳＲＡＭ１４にリコンフィグ起動指示フラグを立てることにより、制御ブロック１２に、アクセラレータ演算の起動指示が発行される。
【００４９】
ステップ１０５では、制御ブロック１２が、演算ユニット＆ネットワーク２１で特定演算を実行中であるかを判定し、実行中でなければ、ステップ１０８に進み、実行中であればステップ１０６に進む。
【００５０】
ステップ１０６では、制御ブロック１２が、指示されたアクセラレータ演算で、実行中の特定演算で使用しているＰＥを使用するかを判定し、使用していなければステップ１０８に進み、使用していればステップ１０７に進む。
【００５１】
ステップ１０７では、制御ブロック１２が、特定演算の終了を判定し、特定演算が終了するまで待機し、終了すればステップ１０８に進む。なお、待機中に他の特定演算の実行が指示された場合には、新たに指示された特定演算の実行を優先し、実行中の特定演算の終了後、新たに指示された特定演算を実行し、その後ステップ１０７に進む。
【００５２】
ステップ１０８では、制御ブロック１２が、リコンフィグシーケンサ１３に対してリコンフィグ起動指示を行う。
【００５３】
ステップ１０９では、リコンフィグシーケンサ１３が、指示されたアクセラレータ演算に対応する構成データをコンフィグデータメモリ２２から読み出し、演算ユニット＆ネットワーク２１のＰＥおよびネットワークを構成データにしたがって変更する。これにより、演算ユニット＆ネットワーク２１では、指示されたアクセラレータ演算が実行可能なデータフローが構築される。
【００５４】
ステップ１１０では、リコンフィグシーケンサ１３が、リコンフィグ内蔵ＳＲＡＭ１４の所定のアドレス（アクセラレータ演算の変数データ領域）の変数データを入力ポート３１に転送し、リコンフィグ回路４でのアクセラレータ演算の実行を制御する。
【００５５】
ステップ１１１では、演算が終了すると、リコンフィグシーケンサ１３が、出力ポート３２に出力された演算結果を、リコンフィグ内蔵ＳＲＡＭ１４の所定のアドレス（アクセラレータ演算の演算結果領域）に書き込むように制御する。
【００５６】
ステップ１１２では、リコンフィグシーケンサ１３が、制御ブロック１２に演算の終了を通知する。
【００５７】
ステップ１１３では、制御ブロック１２が、リコンフィグ内蔵ＳＲＡＭ１４に終了フラグを立てる。
【００５８】
ステップ１１４では、ＣＰＵ１が、リコンフィグ内蔵ＳＲＡＭ１４の終了フラグにより演算の終了を検知して、終了する。
【００５９】
図８は、第１実施形態において、ＣＰＵ１が、リコンフィグ回路４に特定演算を指示し、演算結果を取得するまでの動作を示すフローチャートである。
【００６０】
ステップ２０１では、ＣＰＵ１が、リコンフィグ内蔵ＳＲＡＭ１４の所定のアドレス（特定演算の変数データ領域）に演算の変数データを書き込む。
【００６１】
ステップ２０２では、ＣＰＵ１が、リコンフィグ内蔵ＳＲＡＭ１４にリコンフィグ起動指示フラグを立てる。
【００６２】
ステップ２０３では、変数データの書き込みに応じて、制御ブロック１２に、アクセラレータ演算の起動指示が発行される。
【００６３】
ステップ２０４では、制御ブロック１２が、演算ユニット＆ネットワーク２１でリコンフィグ演算を実行中であるか、すなわち他の特定演算またはアクセラレータ演算実行中であるか判定し、実行中でなければ、ステップ２０７に進み、実行中であればステップ２０５に進む。
【００６４】
ステップ２０５では、制御ブロック１２が、指示された特定演算で、実行中のリコンフィグ演算で使用しているＰＥを使用するかを判定し、使用していなければステップ２０７に進み、使用していればステップ２０６に進む。
【００６５】
ステップ２０６では、制御ブロック１２が、リコンフィグ演算の終了を判定し、リコンフィグ演算が終了するまで待機し、終了すればステップ２０７に進む。なお、実行中のリコンフィグ演算のほかに、別のアクセラレータ演算が先に指示されている場合でも、特定演算を優先する。
【００６６】
ステップ２０７では、制御ブロック１２が、演算ユニット＆ネットワーク２１に対して、指示された特定演算が実行可能なデータフローを構築するように指示する。もし、指示された特定演算が１個のＰＥで実行可能であれば、そのＰＥの内部状態を設定する。これにより、そのＰＥは、指示された特定演算を実行する状態になり、リコンフィグ内蔵ＳＲＡＭ１４の所定のアドレス（特定演算の変数データ領域および演算結果領域）と関係付けられる。
【００６７】
ステップ２０８では、リコンフィグ内蔵ＳＲＡＭ１４の所定のアドレス（特定演算の変数データ領域）の変数データを、特定演算を実行するＰＥの入力部に転送して特定演算を実行する。
【００６８】
ステップ２０９では、演算が終了すると、そのＰＥでの演算結果を、リコンフィグ内蔵ＳＲＡＭ１４の所定のアドレス（アクセラレータ演算の演算結果領域）に書き込む。
【００６９】
ステップ２１０では、制御ブロック１２が、特定演算の終了に応じて、リコンフィグ内蔵ＳＲＡＭ１４に終了フラグを立てる。
【００７０】
ステップ２１１では、ＣＰＵ１が、リコンフィグ内蔵ＳＲＡＭ１４の終了フラグにより演算の終了を検知して、終了する。
【００７１】
図９は、演算ユニット＆ネットワーク２１において、一部はアクセラレータ演算を、一部は特定演算を実行している状態を模式的に示す図である。
【００７２】
斜線部３５で示される１１個のＰＥ３３およびネットワーク３４の部分は、指示されたアクセラレータ演算を実行する部分で、入力ポート３１Ａから入力された変数データに対して指定されたアクセラレータ演算を行い、演算結果を出力ポート３２Ａに出力する。斜線部３６で示される１個のＰＥ３３およびネットワーク３４の部分は、指示された特定演算を実行する部分で、入力ポート３１Ｂから入力された変数データに対して指定された特定演算を行い、演算結果を出力ポート３２Ｂに出力する。斜線部３５および３６以外の部分のＰＥ３３およびネットワーク３４は、この時には使用されていない。もし、この部分のＰＥが他の特定演算を実行可能であれば、さらにそれを実行することも可能である。
【００７３】
図１０は、リコンフィグ装置４で、特定演算を実行する場合の起動動作を示すタイミングチャートである。この場合の起動動作は、複数の変数データのうち最初の１個がリコンフィグ内蔵ＳＲＡＭ１４に書き込まれると、ただちに演算処理の開始を指示する命令(Launch)を発生する第１の場合と、演算に使用するすべての変数データ（図１０では３個）がすべて書き込まれた時に、Launchを発生する第２の場合と、がある。第１の場合には、Launchを発生した後、リコンフィグ内蔵ＳＲＡＭ１４に他の変数データが書き込まれるとすぐにＰＥに転送し、すべての変数データがＰＥに入力されると実際の演算処理が行われる。
【００７４】
図１１は、リコンフィグ装置４で、特定演算を実行する場合の起動動作を示すタイミングチャートである。ここでは、出力データがａ，ｂ，ｃの３つであり、演算が行われて３つの出力データａ，ｂ，ｃが順次生成されると、リコンフィグ内蔵ＳＲＡＭ（レジスタ）１４に順次書き込まれる。３番目の出力データｃが生成されると、演算終了条件が成立し、３番目の出力データｃがリコンフィグ内蔵ＳＲＡＭ（レジスタ）１４に書き込まれると、ＣＰＵ１に対して割り込みが発生して、特定演算の終了を通知する。
【００７５】
図８に示すように、第１実施形態では、ＣＰＵ１が特定演算命令を指示するために変数データをリコンフィグ内蔵ＳＲＡＭ１４の所定のアドレス（特定演算の変数データ領域）に書き込むと、リコンフィグ内蔵ＳＲＡＭ１４に特定演算起動指示フラグを立てた。そして、制御ブロック１２により終了フラグが立てられると、ＣＰＵ１はこれにより特定演算の終了を検知した。このシーケンスでは、ＣＰＵ１は、特定演算命令を指示した後、終了フラグが立てられるまで他の処理を行うことができる。しかし、ＣＰＵ１の処理性能はレイテンシに直結する場合があり、アプリケーションによっては、演算結果をＣＰＵ１すぐに使用したい場合がある。図１２は、このような場合に適したシーケンスを示すフローチャートである。
【００７６】
ステップ３０１では、制御ブロック１２が、ＣＰＵ１によりリコンフィグ内蔵ＳＲＡＭ１４のどのアドレスに変数データが書き込まれたかを検出することにより、指示された特定演算を読み取る。
【００７７】
ステップ３０２では、指示された特定演算があらかじめ決定されている緊急演算であるかを判定し、緊急演算であればステップ３０３に進み、緊急演算でなければステップ３０５に進む。例えば、特定演算をすべて緊急演算とすることも、特定演算の中でももっとも簡単な演算のみを緊急演算とすることもできる。
【００７８】
ステップ３０３では、ＣＰＵ１の変数データの書き込みに対するアクノレッジ(ACK.)を返送せず、演算の終了を待ち、演算が終了するとステップ３０４に進む。
【００７９】
ステップ３０４では、アクノレッジを返送する。これに応じてＣＰＵ１は、リコンフィグ内蔵ＳＲＡＭ１４の所定のアドレス（特定演算の演算結果領域）にアクセスして、演算結果を得る。このように、演算終了までＣＰＵ１からのアクセスに対するアクノレッジを返送しないので、ＣＰＵ１からみた演算性能（レイテンシ）は最短になる。
【００８０】
緊急演算でない場合には、ステップ３０５で、ＣＰＵ１の変数データの書き込みに対するアクノレッジ(ACK.)を返送し、ステップ３０６に進む。
【００８１】
ステップ３０６では、演算の終了を待ち、演算が終了するとステップ３０７に進む。
【００８２】
ステップ３０７では、制御ブロック１２が終了フラグを立てる。ＣＰＵ１は、これにより演算の終了を検知し、適当なタイミングでリコンフィグ内蔵ＳＲＡＭ１４の所定のアドレス（特定演算の演算結果領域）にアクセスして、演算結果を得る。
【００８３】
以上説明した第１実施形態では、ＣＰＵ１から容易にアクセス可能な形でリコンフィグ回路を搭載しているため、ＣＰＵの負担を少なくして、簡単な演算から複雑な演算までの各種の演算を選択的に行うことができる。特に、あらかじめ決められた簡単な特定演算については、ＣＰＵ１は、ＲＡＭインターフェースのアドレスに変数データを書き込むだけで、リコンフィグ回路４における演算が短時間に起動され、短時間に演算結果を得ることができる。さらに、図１２で説明したように、ＣＰＵからのアクセスに対して演算終了までアクノレッジを返送しない場合、ＣＰＵ１は最短時間で演算結果を取得できる。
【００８４】
さらに、ＣＰＵ１から指示されたアクセラレータ演算と特定演算が、演算ユニットＰＥの使用において競合しない限り、並列に演算を行うことが可能である。また、競合した場合には、短時間での処理の要求が高い特定演算を優先して実行するため、ＣＰＵ１の演算処理の速度（レイテンシ）が実質的に向上する。
【００８５】
第１実施形態のリコンフィグ回路を備えるコンピュータシステムの利点は、以下の通りである。
【００８６】
・各種の演算をＣＰＵの負荷を低減して実行できる。これにより、処理能力の小さい旧世代のプロセッサ（マイクロコンピュータ）を使用して、高速な演算処理が可能になる。
【００８７】
・プロセッサ、特にマイクロコンピュータにおいて重要である割り込み応答性を良好に維持したまま、演算処理を高速に実行できる。
【００８８】
・また、リコンフィグ回路で非常に複雑な演算処理も実行でき、その演算の種類を変更可能であり、各種の処理に柔軟に対応できる。
【００８９】
・リコンフィグ内蔵ＳＲＡＭは、ＲＡＭインターフェースのアドレス空間に配置されるので、コプロセッサに比べて接続が容易である。これにより、ＣＰＵの開発環境にあまり影響を与えずにリコンフィグ回路の開発環境を組み込む環境が容易に構築できる。
【００９０】
・ＣＰＵは、リコンフィグ内蔵ＳＲＡＭにアクセスするだけで演算処理を指示できる。また、ＣＰＵからリコンフィグ回路へのアクセス動作は共通化されているため、コンフィグ回路を変更するだけで、処理の負荷や演算速度を容易に変更することができる。例えばパイプライン処理を行うリコンフィグ回路を使用すれば、非常に高速な演算処理が行える。
【００９１】
図１３は、第２実施形態のコンピュータシステムの構成を示す図であり、ＣＰＵ１、ＲＡＭインターフェース２およびリコンフィグ回路４の部分のみを示す。リコンフィグ回路４は、複数の演算エレメント１１−１、…、１１−ｎと、複数の制御ブロック１２−１、…、１２−ｎと、複数のコンフィグ内蔵ＳＲＡＭ１４−１、…、１４−ｎと、１個のリコンフィグシーケンサ１３と、を備える。対応する演算エレメント、制御ブロックおよびコンフィグ内蔵ＳＲＡＭは組をなす。言い換えれば、第２実施形態のリコンフィグ回路４は、第１実施形態のリコンフィグ回路を複数個備え、リコンフィグシーケンサ１３を共通化したものである。
【００９２】
第２実施形態では、ＣＰＵ１は、共通のＲＡＭインターフェース２および個別のコンフィグ内蔵ＳＲＡＭを介して、各演算エレメントの演算を独立して指示することができる。これにより、ＣＰＵ１は、複数の演算処理を複数の演算エレメントで同時に実行させることができ、処理をより高速化できる。
【００９３】
図１４は、第３実施形態のコンピュータシステムの構成を示す図であり、ＣＰＵ１、ＲＡＭインターフェース２およびリコンフィグ回路４の部分のみを示す。リコンフィグ回路４は、複数の演算エレメント１１−１、…、１１−ｎと、制御ブロック１２と、リコンフィグシーケンサ１３と、コンフィグ内蔵ＳＲＡＭ１４と、を備える。言い換えれば、第３実施形態のリコンフィグ回路４は、第１実施形態のリコンフィグ回路を複数個備え、制御ブロック１２、リコンフィグシーケンサ１３およびコンフィグ内蔵ＳＲＡＭ１４を共通化したものである。
【００９４】
第２実施形態でも、複数の演算処理が複数の演算エレメントで同時に実行できる。ＣＰＵ１が、共通のＲＡＭインターフェース２および共通のコンフィグ内蔵ＳＲＡＭ１４を介して、順番に複数の演算処理の実行を指示し、共通の制御ブロック１２が、指示された演算処理を各演算エレメントに割り振る。そして、共通のリコンフィグシーケンサ１３が各演算エレメントの処理動作を制御する。制御ブロック１２およびリコンフィグシーケンサ１３による制御および変数データと演算結果の転送は順に行うため、処理速度は第２実施形態に比べて遅くなる。第３実施形態は、バスのコンフリクト（競合）が発生せず、各演算エレメントでパイプライン処理を行う場合や、比較的長い演算時間を要する演算を１つの演算エレメントで行う場合などに適している。
【００９５】
第２および第３実施形態で、各演算エレメントをどのように構成し、各演算エレメントでどのような演算を行うかについては各種の例があり得る。例えば、すべての演算エレメントを同じように構成し、各演算エレメントの動作状態に応じて指示された演算を適宜各演算エレメントに割り当てて実行してもよいが、演算エレメントごとに機能および構成を異ならせることも可能である。
【００９６】
図１５は、演算エレメントごとに機能および構成を異ならせた例を示す。図１５では、ｍ個をアクセラレータ演算が可能なアクセラレータ演算エレメント１１−１、…、１１−ｍとし、１個を除算演算エレメント１１−Ａとし、１個を平方根演算エレメント１１−Ｂとし、１個を三角関数演算エレメント１１−Ｃとし、１個を浮動小数点演算エレメント１１−Ｄとする。アクセラレータ演算を実行する場合には、アクセラレータ演算エレメント１１−１、…、１１−ｍのいずれかを選択して演算を実行する。除算を行う場合には、演算エレメント１１−Ａがその演算実行する。平方根演算を行う場合には、平方根演算エレメント１１−Ｂが実行する。三角関数演算を行う場合には、三角関数演算エレメント１１−Ｃがその演算を実行する。浮動小数点演算を行う場合には、浮動小数点演算エレメント１１−Ｄがその演算を実行する。なお、三角関数演算には、ｓｉｎ，ｃｏｓ，ｔａｎなど各種の演算があるので、実行する三角関数演算に応じて、三角関数演算エレメント１１−Ｃの構成を変更するようにしてもよい。もちろん、別の特定演算を登録し、それをアクセラレータ演算エレメント１１−１、…、１１−ｍに含まれるＰＥを利用して実行するようにしてもよい。
【００９７】
図１６は、演算エレメントごとに機能および構成を異ならせた別の例を示す。図１６では、ｍ個をアクセラレータ演算が可能なアクセラレータ演算エレメント１１−１、…、１１−ｍとし、１個を特定演算エレメント１１−Ｐし、１個を浮動小数点演算エレメント１１−Ｄとする。特定演算エレメント１１−Ｐは、演算ユニット＆ネットワークを変更することにより、除算、平方根、三角関数の演算を実行可能である。
【００９８】
どのような演算を特定演算とし、特定演算をどのような演算エレメントで行うかは、特定演算の使用頻度、要求される演算時間およびＰＥの構成の複雑さなどを考慮して決定すべきである。
【００９９】
ここに記載したすべての例や条件は、発明および技術に適用する発明の概念の理解を助ける目的で記載されたものであり、特に記載された例や条件は発明の範囲を制限することを意図するものではなく、明細書のそのような例の構成は発明の利点および欠点を示すものではない。発明の実施形態を詳細に記載したが、各種の変更、置き換え、変形が発明の精神および範囲を逸脱することなく行えることが理解されるべきである。
【０１００】
以下、実施形態に関し、更に以下の付記を開示する。
（付記１）
ＣＰＵと、ＲＡＭインターフェースと、前記ＲＡＭインターフェースのアドレス空間に配置されるＲＡＭと、コンフィグレーションデータに基づいて演算機能を動的に変更可能なリコンフィグ演算装置と、を備えるコンピュータシステムであって、
前記リコンフィグ演算装置は、
入力端子と、
出力端子と、
クロックに同期してそれぞれの演算処理を行う複数のプロセッサエレメントと、
前記入力端子と前記出力端子と前記複数のプロセッサエレメントの入力ポートおよび出力ポートとの間を接続し、接続状態が変更可能なプロセッサ間ネットワークと、
前記ＲＡＭインターフェースのアドレス空間に配置され、前記ＣＰＵが、前記リコンフィグ演算装置で実行する演算に関係するデータを書き込み、前記リコンフィグ演算装置で実行した演算結果が書き込まれるリコンフィグ内蔵ＲＡＭと、
前記ＣＰＵが前記リコンフィグ内蔵ＲＡＭの所定アドレスに前記演算に関係するデータを書き込むと、前記複数のプロセッサエレメントおよび前記プロセッサ間ネットワークを対応した演算処理を行う状態に設定して前記演算を開始するように制御する制御部と、を備え、
前記演算は、第１の種類の命令と、第２の種類の命令と、を備え、
前記ＣＰＵは、前記第１の種類の命令を前記リコンフィグ内蔵ＲＡＭの第１の所定アドレスに、前記第１の種類の命令の変数データを前記リコンフィグ内蔵ＲＡＭの第２の所定アドレスに書き込み、
前記制御部は、前記第１の所定アドレスに書き込みが行われると、書き込まれた前記第１の種類の命令を解読して、前記複数のプロセッサエレメントおよび前記プロセッサ間ネットワークを前記演算命令に対応した演算処理を行う状態に設定し、
前記ＣＰＵは、前記第２の種類の命令の変数データを、前記リコンフィグ内蔵ＲＡＭの前記第１および第２の所定アドレス以外の固定入力アドレスに書き込み、
前記制御部は、前記固定入力アドレスに書き込みが行われると、前記複数のプロセッサエレメントおよび前記プロセッサ間ネットワークを前記第２の種類の命令に対応した演算処理を行う状態に設定することを特徴とするコンピュータシステム。
【０１０１】
（付記２）
前記第２の種類の命令は、複数の特定演算命令を備え、
前記リコンフィグ内蔵ＲＡＭの前記固定入力アドレスは、前記複数の特定演算命令に対応して複数の特定入力固定アドレスを備え、
前記ＣＰＵは、前記複数の特定演算命令を、対応する前記リコンフィグ内蔵ＲＡＭの前記複数の特定固定入力アドレスに書き込む付記１に記載のコンピュータシステム。
【０１０２】
（付記３）
前記制御部は、前記第２の種類の命令の変数データの前記固定入力アドレスへの書き込みが行われると、前記リコンフィグ演算装置が前記第１の種類の命令を実行中であるか判定し、実行中でなければ前記第２の種類の命令をただちに実行し、実行中であれば、前記リコンフィグ演算装置で前記第２の種類の命令が並行して実行可能であるか判定し、並行して実行可能であれば前記複数のプロセッサエレメントおよび前記プロセッサ間ネットワークを前記第２の種類の命令を並行して行う状態に設定し、並行して実行可能でなければ実行中の前記第１の種類の命令の終了後前記第２の種類の命令をただちに実行する付記１または２に記載のコンピュータシステム。
【０１０３】
（付記４）
前記リコンフィグ演算装置は、
前記第１の種類の命令の演算結果を、前記リコンフィグ内蔵ＲＡＭの第３の所定アドレスに書き込み、
前記第２の種類の命令の演算結果を、前記リコンフィグ内蔵ＲＡＭの固定出力アドレスに書き込む付記１から３のいずれかに記載のコンピュータシステム。
【０１０４】
（付記５）
前記リコンフィグ演算装置は、前記ＣＰＵによる前記第２の種類の命令の変数データの前記固定入力アドレスへの書き込みに対する受取を、前記第２の種類の命令の演算結果を前記リコンフィグ内蔵ＲＡＭの固定出力アドレスに書き込んだ後出力する付記４に記載のコンピュータシステム。
【０１０５】
（付記６）
前記複数のプロセッサエレメントは、前記特定演算命令の演算を単独で実行可能であるプロセッサエレメントを含む付記２に記載のコンピュータシステム。
【０１０６】
（付記７）
前記複数のプロセッサエレメントは、異なる前記特定演算命令の演算を単独で実行するように変更可能であるプロセッサエレメントを含む付記２に記載のコンピュータシステム。
【０１０７】
（付記８）
入力端子と、
出力端子と、
クロックに同期してそれぞれの演算処理を行う複数のプロセッサエレメントと、
前記入力端子と前記出力端子と前記複数のプロセッサエレメントの入力ポートおよび出力ポートとの間を接続し、接続状態が変更可能なプロセッサ間ネットワークと、
複数の演算をそれぞれ実行するように、前記複数のプロセッサエレメントおよび前記プロセッサ間ネットワークを変更するためのコンフィグレーションデータを記憶するメモリと、
実行する演算に関係するデータが書き込まれ、実行した演算結果が書き込まれるリコンフィグ内蔵ＲＡＭと、
前記リコンフィグ内蔵ＲＡＭの所定アドレスに前記演算に関係するデータが書き込まれると、前記コンフィグレーションデータに基づいて前記複数のプロセッサエレメントおよび前記プロセッサ間ネットワークを対応した演算処理を行う状態に設定して前記演算を開始するように制御する制御部と、を備え、
前記演算は、第１の種類の命令と、第２の種類の命令と、を備え、
前記第１の種類の命令は前記リコンフィグ内蔵ＲＡＭの第１の所定アドレスに、前記第１の種類の命令の変数データは前記リコンフィグ内蔵ＲＡＭの第２の所定アドレスに書き込まれ、
前記制御部は、前記第１の所定アドレスに書き込みが行われると、書き込まれた前記第１の種類の命令を解読して、前記複数のプロセッサエレメントおよび前記プロセッサ間ネットワークを前記演算命令に対応した演算処理を行う状態に設定し、
前記第２の種類の命令の変数データは、前記リコンフィグ内蔵ＲＡＭの前記第１および第２の所定アドレス以外の固定入力アドレスに書き込まれ、
前記制御部は、前記固定入力アドレスに書き込みが行われると、前記複数のプロセッサエレメントおよび前記プロセッサ間ネットワークを前記第２の種類の命令に対応した演算処理を行う状態に設定する、演算機能を動的に変更可能なリコンフィグ演算装置。
【０１０８】
（付記９）
前記第２の種類の命令は、複数の特定演算命令を備え、
前記リコンフィグ内蔵ＲＡＭの前記固定入力アドレスは、前記複数の特定演算命令に対応して複数の特定入力固定アドレスを備え、
前記複数の特定演算命令は、対応する前記リコンフィグ内蔵ＲＡＭの前記複数の特定固定入力アドレスに書き込まれる付記８に記載のリコンフィグ演算装置。
【０１０９】
（付記１０）
前記制御部は、前記第２の種類の命令の変数データの前記固定入力アドレスへの書き込みが行われると、前記第１の種類の命令を実行中であるか判定し、実行中でなければ前記第２の種類の命令をただちに実行し、実行中であれば、前記第２の種類の命令が並行して実行可能であるか判定し、並行して実行可能であれば前記複数のプロセッサエレメントおよび前記プロセッサ間ネットワークを前記第２の種類の命令を並行して行う状態に設定し、並行して実行可能でなければ実行中の前記第１の種類の命令の終了後前記第２の種類の命令をただちに実行する付記８または９に記載のリコンフィグ演算装置。
【０１１０】
（付記１１）
前記第１の種類の命令の演算結果は、前記リコンフィグ内蔵ＲＡＭの第３の所定アドレスに書き込まれ、
前記第２の種類の命令の演算結果は、前記リコンフィグ内蔵ＲＡＭの固定出力アドレスに書き込まれる付記８から１０のいずれかに記載のリコンフィグ演算装置。
【０１１１】
（付記１２）
前記第２の種類の命令の変数データの前記固定入力アドレスへの書き込みに対する受取を、前記第２の種類の命令の演算結果を前記リコンフィグ内蔵ＲＡＭの固定出力アドレスに書き込んだ後出力する付記１１に記載のリコンフィグ演算装置。
【０１１２】
（付記１３）
前記複数のプロセッサエレメントは、前記特定演算命令の演算を単独で実行可能であるプロセッサエレメントを含む付記９に記載のリコンフィグ演算装置。
【０１１３】
（付記１４）
前記複数のプロセッサエレメントは、異なる前記特定演算命令の演算を単独で実行するように変更可能であるプロセッサエレメントを含む付記９に記載のリコンフィグ演算装置。
【符号の説明】
【０１１４】
１    ＣＰＵ
２    ＲＡＭインターフェース（Ｉ／Ｆ）
３    ＳＲＡＭ
４    リコンフィグ回路（装置）
５    周辺インターフェース（Ｉ／Ｆ）
６    外部ＲＡＭ
７Ａ−７Ｎ    周辺機器
１１    演算エレメント
１２    制御ブロック
１３    リコンフィグシーケンサ
１４    リコンフィグ内蔵ＳＲＡＭ
２１    演算ユニット＆ネットワーク２１
２２    コンフィグデータメモリ
３１    入力ポート３１
３２    出力ポート３２
３３    プロセッサエレメント（ＰＥ）
３４    ネットワーク３４
【図１】
2011008519.tif 000003
【図２】
2011008519.tif 000004
【図３】
2011008519.tif 000005
【図４】
2011008519.tif 000006
【図５】
2011008519.tif 000007
【図６】
2011008519.tif 000008
【図７】
2011008519.tif 000009
【図８】
2011008519.tif 000010
【図９】
2011008519.tif 000011
【図１０】
2011008519.tif 000012
【図１１】
2011008519.tif 000013
【図１２】
2011008519.tif 000014
【図１３】
2011008519.tif 000015
【図１４】
2011008519.tif 000016
【図１５】
2011008519.tif 000017
【図１６】
2011008519.tif 000018