(57)【特許請求の範囲】
【請求項１】
論理回路をプログラムにより形成可能な再構成可能ハードウェアを含む処理装置と処理装置の指定したコマンドを実行する制御装置とを有し、前記コマンドは、処理装置が所定の条件を検出した際に実行を指示され、再構成可能ハードウェアを論理形成するプログラムの切り換えを実行するためのコマンドを含み、
前記処理装置は、再構成可能ハードウェアを有する処理要素と前記再構成可能ハードウェアの論理回路を形成するプログラムを保持するプログラムデータメモリとを有する複数のバンクと、複数のバンクから１つを選択して有効とする有効バンク選択部とを有し、
前記制御装置は、前記バンクが複数ある場合は有効とする前記バンクを指定するとともに前記プログラムデータメモリが複数ある場合は有効とする前記プログラムデータメモリを指定し、指定した前記処理要素の動作を開始するａｃｔｉｖａｔｅコマンドと、前記処理装置が複数存在する場合にあっては複数の前記処理装置のうち指定した前記処理装置の動作を停止するｈａｌｔコマンドと、前記制御装置から指定した前記処理装置へ割り込みベクタを発行するｉｎｔｅｒｒｕｐｔコマンドと、指定した記憶装置から前記プログラムデータメモリへプログラムデータを転送するｌｏａｄ＿ｐｒｇコマンドと、ｌｏａｄ＿ｐｒｇ命令を中止するｃａｎｃｅｌ＿ｐｒｇコマンドと、ｌｏａｄ＿ｐｒｇ命令の終了まで待機するｗａｉｔ＿ｐｒｇコマンドとを解釈実行することを特徴とする電子計算機。
【請求項２】
前記バンクは、再構成可能ハードウェアを含む処理要素と前記再構成可能ハードウェアの論理回路を形成するプログラムを保持する複数のプログラムデータメモリと複数のプログラムデータメモリから１つを選択して有効とする有効ブロック選択部とを含むか、または再構成可能ハードウェアを含む処理要素と前記再構成可能ハードウェアの論理回路を形成するプログラムを保持する一つのプログラムデータメモリとを含むことを特徴とする請求項１記載の電子計算機。
【請求項３】
前記処理装置は、少なくとも１つの処理要素は再構成可能ハードウェアで構成され、残りの処理要素は再構成可能ハードウェア又は汎用ＣＰＵで構成されることを特徴とする請求項１又は２記載の電子計算機。
【請求項４】
前記制御装置が実行するコマンドを保持するコマンドコードメモリを有し、前記制御装置は前記処理装置から指示されたアドレスに従ってコマンドコードメモリからコマンドを読み出して解釈実行するコマンドコード参照装置を有することを特徴とする請求項１、２、３の何れかに記載の電子計算機。
【請求項５】
前記コマンドコード参照装置は前記コマンドコードメモリのアドレスを保持するアドレスカウンタを有し、前記処理装置と制御装置間のコマンドの受渡しにおいて、前記処理装置が出力したアドレス信号線が有効であることを示す第１のアドレス制御線と、第１の制御線が有効の場合アドレス信号線の値をそのままアドレスカウンタに格納するか或いはアドレス信号線の値をアドレスカウンタの値に加算してアドレスカウンタに格納するかを指示する第２のアドレスカウンタ制御線を備えることを特徴とする請求項４記載の電子計算機。
【請求項６】
前記コマンドは、コマンドを分類するコマンドコードとアドレスカウンタ制御コードと後続のコマンドを実行するかどうかを示すフラグとからなるフォーマットで前記コマンドコードメモリに格納され、前記アドレスカウンタ制御コードは、アドレスカウンタに値を設定するｌｏａｄ＿ａｄｒコマンドと、アドレスカウンタに指定した値を加算するａｄｄ＿ａｄｒコマンドとを含むこと特徴とする請求項５記載の電子計算機。
【請求項７】
前記アドレスカウンタ制御コードは、アドレスカウンタを前記制御装置に設けたアドレスカウンタスタックに退避するとともに新たな値をアドレスカウンタに設定するｐｕｓｈ＿ａｄｒコマンドと、アドレスカウンタスタックの値をアドレスカウンタに戻すｐｏｐ＿ａｄｒコマンドとを含むこと特徴とする請求項６記載の電子計算機。
【請求項８】
前記処理装置に対して転送するデータを一時的に保持するキャッシュメモリとキャッシュメモリを制御するキャッシュコントローラを含むキャッシュ装置を有し、前記処理装置が発行するコマンドによってキャッシュコントローラの制御を行なうことを特徴とする請求項１乃至７のいずれかに記載の電子計算機。
【請求項９】
前記キャッシュ装置は前記処理装置の外部で定義するアドレスを処理装置の内部で定義されるアドレスに変換するアドレス変換装置を有し、前記処理装置が発行するコマンドによってアドレス変換装置の制御を行なうことを特徴とする請求項８記載の電子計算機。
【請求項１０】
論理回路をプログラムにより形成可能な再構成可能ハードウェアを含む処理装置と処理装置の指定したコマンドを実行する制御装置とを有し、前記コマンドは、処理装置が所定の条件を検出した際に実行を指示され、再構成可能ハードウェアを論理形成するプログラムの切り換えを実行するためのコマンドを含み、
前記処理装置は、再構成可能ハードウェアを有する処理要素と前記再構成可能ハードウェアの論理回路を形成するプログラムを保持するプログラムデータメモリとを有する複数のバンクと、複数のバンクから１つを選択して有効とする有効バンク選択部とを有し、
前記処理装置は、少なくとも１つの処理要素が論理回路をプログラムにより形成可能な再構成可能ハードウェアを含む第２の処理装置と第２の処理装置の指定したコマンドを実行する再構成可能な第２の制御装置とから構成されることを特徴とする電子計算機。
【請求項１１】
請求項１乃至１０のいずれかに記載の電子計算機を実装した半導体集積回路。
【請求項１２】
再構成可能ハードウェアと再構成可能ハードウェアの論理回路を形成するプログラムを保持する複数のプログラムデータメモリと複数のプログラムデータメモリから１つを選択して有効とする有効ブロック選択部とを含む処理装置が所定の条件を検出した際にコマンドの実行を指示し、処理装置のコマンド実行指示を受けた制御装置が、有効ブロック選択部を制御して指定されたプログラムデータメモリを有効にして再構成可能ハードウェアに接続するａｃｔｉｖａｔｅコマンドを実行し、再構成可能ハードウェアが実行する論理回路の内容を切り換え、
前記制御装置は、前記処理装置が複数存在する場合にあっては複数の前記処理装置のうち指定した前記処理装置の動作を停止するｈａｌｔコマンドと、前記制御装置から指定した前記処理装置へ割り込みベクタを発行するｉｎｔｅｒｒｕｐｔコマンドと、指定した記憶装置から前記プログラムデータメモリへプログラムデータを転送するｌｏａｄ＿ｐｒｇコマンドと、ｌｏａｄ＿ｐｒｇ命令を中止するｃａｎｃｅｌ＿ｐｒｇコマンドと、ｌｏａｄ＿ｐｒｇ命令の終了まで待機するｗａｉｔ＿ｐｒｇコマンドとを実行することを特徴とする制御方法。
【請求項１３】
再構成可能ハードウェアと再構成可能ハードウェアの論理回路を形成するプログラムを保持する複数のプログラムデータメモリと複数のプログラムデータメモリから１つを選択して有効とする有効ブロック選択部とを含む処理装置が所定の条件を検出した際にコマンドの実行を指示すると、処理装置のコマンド実行指示を受けた制御装置が、有効ブロック選択部を制御して指定されたプログラムデータメモリを有効にして再構成可能ハードウェアに接続を切り換えるａｃｔｉｖａｔｅコマンドを実行する手順をコンピュータに実行させ、
前記処理装置が複数存在する場合にあっては複数の前記処理装置のうち指定した前記処理装置の動作を停止するｈａｌｔコマンド、前記制御装置から指定した前記処理装置へ割り込みベクタを発行するｉｎｔｅｒｒｕｐｔコマンド、指定した記憶装置から前記プログラムデータメモリへプログラムデータを転送するｌｏａｄ＿ｐｒｇコマンド、ｌｏａｄ＿ｐｒｇ命令を中止するｃａｎｃｅｌ＿ｐｒｇコマンド、或いはｌｏａｄ＿ｐｒｇコマンドの終了まで待機するｗａｉｔ＿ｐｒｇコマンドを実行する手順をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【００１】  本発明は、電子計算機、半導体集積回路、制御方法、プログラムの生成方法、及びプログラムに関し、アプリケーションプログラムによる処理の一部分もしくはすべてを再構成可能なハードウェアを使用して高速に実行させるための技術に関する。
【背景技術】
【０００２】  従来、ＣＰＵの処理能力を越えるようなアプリケーションプログラムを実行するために、専用ハードウェアを用いる手法が提案／開発されている。図３０はアプリケーションプログラムの全てを専用ハードウェア化する手法である。図３１はアプリケーションプログラムの一部を専用ハードウェア化し、汎用ＣＰＵとネットワークを介して接続して処理し、処理の一部を専用ハードウェアにより高速化する手法である。図３２はアプリケーションプログラムの一部を専用ハードウェア化し、ＣＰＵの内部に専用ハードウェアで処理を実行する新たな命令セットを追加することで追加した命令で処理する部分を高速化する手法である。
このように、ハードウェアにアプリケーション全体もしくは一部を実装する手法は、処理能力を大幅に向上する反面、アプリケーション毎に新規にハードウェアを開発／製造する必要があるため、膨大な費用を必要としている。
一方、ＦＰＧＡ（ｆｉｅｌｄ  ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ）やＰＬＤ（ｐｒｏｇｒａｍｍａｂｌｅ  ｌｏｇｉｃ  ｄｅｖｉｃｅ）に代表されるような論理回路をプログラムにより形成可能な再構成可能ハードウェアはプログラムを変更して論理回路を再構成することで、デバイスを取り替えることなくプログラムで指定した特定の処理を実行することができ、注目されている。
近年では、専用ハードウェアの代わりとしてこの再構成可能ハードウェアを用いることで、ハードウェアを新規に製造することなく、つまり低コストで、高い処理能力を必要とするアプリケーションプログラムを再構成可能ハードウェアで実現する方法及びその装置が提案されている。
例えば、特開平０８−３１６３２９や特開平１１−１８４７１８号公報では専用ハードウェアの代わりに再構成可能ハードウェアを用いている。また、特許３０９９８８９号公報ではＣＰＵに付加する拡張命令を再構成可能ハードウェアで実現している。【０００３】
【特許文献１】特開平０８−３１６３２９号公報
【特許文献２】特開平１１−１８４７１８号公報
【特許文献３】特許３０９９８８９号公報
【特許文献４】特開２００１−１４７８０２号公報
【特許文献５】特表平１１−５０７４７８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】  上記、従来の手法では、再構成可能ハードウェアに形成する論理回路の容量を考慮していないため、再構成可能ハードウェアの容量を越えるようなアプリケーションプログラムを実装することができない。従って、アプリケーションプログラムの規模が大きくなればなるほどそれを実装するための再構成可能ハードウェアの規模も大きくなり高コストとなる。【０００５】  一方、低コスト化のために、容量の小さい再構成可能ハードウェアにアプリケーションプログラムを実装する場合には、ハードウェアリソースに実装できる論理回路のサイズを意識してアプリケーションプログラムを分割する必要がある。
しかしながら、分割したプログラムやそのプログラム間の制御は実装するアーキテクチャに強く依存するという問題を持つ。従って、分割したプログラムやそのプログラム間の制御はアーキテクチャが変わると再利用することができなくなり、プログラムの設計効率を著しく低下させる。【０００６】  さらに、アプリケーションプログラムの分割の妥当性（再構成可能ハードウェアに実装可能かどうか）は再構成可能ハードウェアとして実現する機能の最終段階、すなわち再構成可能ハードウェアへの論理回路のマッピングの段階で判明するため、例えば実装可能なサイズを越えてしまうような、不具合のある分割は大幅な設計の後戻りとなり、設計効率が著しく低下する。【０００７】  また、特開２００１−１４７８０２号公報や特表平１１−５０７４７８号公報のように、分割した処理の間の制御を再構成可能ハードウェアの外部のＣＰＵで制御する場合では、分割した処理間の制御はＣＰＵのプログラムデータとして再利用可能であるが、分割した処理自体は、実装した再構成可能ハードウェアのアーキテクチャや実装可能な容量に依存してしまうため、再利用できない。さらに、処理間の制御をＣＰＵで行なうため、ＣＰＵと再構成可能ハードウェアとの間でシステムコールのオーバヘッドなどの待ち時間が生じてしまい、性能が低下する。これらの問題はアプリケーションプログラムの規模が大きくなるほど顕著に現れてくる。【０００８】  本発明の目的は、アプリケーションプログラムを処理単位に分割して処理単位毎に切り換えて再構成可能ハードウェアに論理回路を構築して実行させることにより低コストで処理速度を向上させ、アプリケーションプログラムを容易に再利用可能とした電子計算機、制御方法、プログラムの生成方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【０００９】
本発明の第１の電子計算機は、論理回路をプログラムにより形成可能な再構成可能ハードウェアを含む処理装置と処理装置の指定したコマンドを実行する制御装置とを有し、前記コマンドは、処理装置が所定の条件を検出した際に実行を指示され、再構成可能ハードウェアを論理形成するプログラムの切り換えを実行するためのコマンドを含み、前記処理装置は、再構成可能ハードウェアを有する処理要素と前記再構成可能ハードウェアの論理回路を形成するプログラムを保持するプログラムデータメモリとを有する複数のバンクと、複数のバンクから１つを選択して有効とする有効バンク選択部とを有し、前記制御装置は、前記バンクが複数ある場合は有効とする前記バンクを指定するとともに前記プログラムデータメモリが複数ある場合は有効とする前記プログラムデータメモリを指定し、指定した前記処理要素の動作を開始するａｃｔｉｖａｔｅコマンドと、前記処理装置が複数存在する場合にあっては複数の前記処理装置のうち指定した前記処理装置の動作を停止するｈａｌｔコマンドと、前記制御装置から指定した前記処理装置へ割り込みベクタを発行するｉｎｔｅｒｒｕｐｔコマンドと、指定した記憶装置から前記プログラムデータメモリへプログラムデータを転送するｌｏａｄ＿ｐｒｇコマンドと、ｌｏａｄ＿ｐｒｇ命令を中止するｃａｎｃｅｌ＿ｐｒｇコマンドと、ｌｏａｄ＿ｐｒｇ命令の終了まで待機するｗａｉｔ＿ｐｒｇコマンドとを解釈実行する。
【００１０】
本発明の第２の電子計算機は、本発明の第１の電子計算機において、前記処理装置は、再構成可能ハードウェアを有する処理要素と前記再構成可能ハードウェアの論理回路を形成するプログラムを保持するプログラムデータメモリとを有する複数のバンクと、複数のバンクから１つを選択して有効とする有効バンク選択部とを有することを特徴とする。
【００１１】
本発明の第３の電子計算機は、本発明の第１の電子計算機において、前記バンクは、再構成可能ハードウェアを含む処理要素と前記再構成可能ハードウェアの論理回路を形成するプログラムを保持する複数のプログラムデータメモリと複数のプログラムデータメモリから１つを選択して有効とする有効ブロック選択部とを含むか、または再構成可能ハードウェアを含む処理要素と前記再構成可能ハードウェアの論理回路を形成するプログラムを保持する一つのプログラムデータメモリとを含むことを特徴とする。
【００１２】
本発明の第４の電子計算機は、本発明の第１又は第３の電子計算機において、前記処理装置は、少なくとも１つの処理要素は再構成可能ハードウェアで構成され、残りの処理要素は再構成可能ハードウェア又は汎用ＣＰＵで構成されることを特徴とする。
【００１３】
本発明の第５の電子計算機は、本発明の第２、第３、又は第４の電子計算機において、前記制御装置は、前記バンクが複数ある場合は有効とする前記バンクを指定するとともに前記プログラムデータメモリが複数ある場合は有効とする前記プログラムデータメモリを指定し指定した前記処理要素の動作を開始するａｃｔｉｖａｔｅコマンドと、前記処理装置が複数存在する場合にあっては複数の前記処理装置のうち指定した前記処理装置の動作を停止するｈａｌｔコマンドと、前記制御装置から指定した前記処理装置へ割り込みベクタを発行するｉｎｔｅｒｒｕｐｔコマンドと、指定した記憶装置から前記プログラムデータメモリへプログラムデータを転送するｌｏａｄ＿ｐｒｇコマンドと、ｌｏａｄ＿ｐｒｇ命令を中止するｃａｎｃｅｌ＿ｐｒｇコマンドと、ｌｏａｄ＿ｐｒｇ命令の終了まで待機するｗａｉｔ＿ｐｒｇコマンドとを解釈実行することを特徴とする。
【００１４】  本発明の第６の電子計算機は、本発明の第１、第２、第３、第４、又は第５の電子計算機において、前記制御装置が実行するコマンドを保持するコマンドコードメモリを有し、前記制御装置は前記処理装置から指示されたアドレスに従ってコマンドコードメモリからコマンドを読み出して解釈実行するコマンドコード参照装置を有することを特徴とする。【００１５】  本発明の第７の電子計算機は、本発明の第６の電子計算機において、前記コマンドコード参照装置は前記コマンドコードメモリのアドレスを保持するアドレスカウンタを有し、前記処理装置と制御装置間のコマンドの受渡しにおいて、前記処理装置が出力したアドレス信号線が有効であることを示す第１のアドレス制御線と、第１の制御線が有効の場合アドレス信号線の値をそのままアドレスカウンタに格納するか或いはアドレス信号線の値をアドレスカウンタの値に加算してアドレスカウンタに格納するかを指示する第２のアドレスカウンタ制御線を備えることを特徴とする。【００１６】  本発明の第８の電子計算機は、本発明の第７の電子計算機において、前記コマンドはコマンドを分類するコマンドコードとアドレスカウンタ制御コードと後続のコマンドを実行するかどうかを示すフラグとからなるフォーマットで前記コマンドコードメモリに格納され、前記アドレスカウンタ制御コードは、アドレスカウンタに値を設定するｌｏａｄ＿ａｄｒコマンドと、アドレスカウンタに指定した値を加算するａｄｄ＿ａｄｒコマンドとを含むこと特徴とする。【００１７】  本発明の第９の電子計算機は、本発明の第８の電子計算機において、前記アドレスカウンタ制御コードは、アドレスカウンタを前記制御装置に設けたアドレスカウンタスタックに退避するとともに新たな値をアドレスカウンタに設定するｐｕｓｈ＿ａｄｒコマンドと、アドレスカウンタスタックの値をアドレスカウンタに戻すｐｏｐ＿ａｄｒコマンドとを含むこと特徴とする。【００１８】  本発明の第１０の電子計算機は、本発明の第１乃至第９のいずれかの電子計算機において、前記処理装置に転送するデータを一時的に保持するキャッシュメモリとキャッシュメモリを制御するキャッシュコントローラを含むキャッシュ装置を有し、前記処理装置が発行するコマンドによってキャッシュコントローラの制御を行なうことを特徴とする。【００１９】  本発明の第１１の電子計算機は、本発明の第１０の電子計算機において、前記キャッシュ装置は前記処理装置の外部で定義するアドレスを処理装置の内部で定義されるアドレスに変換するアドレス変換装置を有し、前記処理装置が発行するコマンドによってアドレス変換装置の制御を行なうことを特徴とする。【００２０】
本発明の第１２の電子計算機は、論理回路をプログラムにより形成可能な再構成可能ハードウェアを含む処理装置と処理装置の指定したコマンドを実行する制御装置とを有し、前記コマンドは、処理装置が所定の条件を検出した際に実行を指示され、再構成可能ハードウェアを論理形成するプログラムの切り換えを実行するためのコマンドを含み、前記処理装置は、再構成可能ハードウェアを有する処理要素と前記再構成可能ハードウェアの論理回路を形成するプログラムを保持するプログラムデータメモリとを有する複数のバンクと、複数のバンクから１つを選択して有効とする有効バンク選択部とを有し、前記処理装置は、少なくとも１つの処理要素が論理回路をプログラムにより形成可能な再構成可能ハードウェアを含む第２の処理装置と第２の処理装置の指定したコマンドを実行する再構成可能な第２の制御装置とから構成されることを特徴とする。
【００２１】  本発明の半導体集積回路は、本発明の第１乃至第１１のいずれかの電子計算機を実装したことを特徴とする。【００２２】  本発明の第１の制御方法は、論理回路をプログラムにより形成可能な再構成可能ハードウェアを含む処理装置が所定の条件を検出した際にコマンドの実行を指示し、処理装置のコマンド実行指示を受けた制御装置が再構成可能ハードウェアを論理形成するプログラムの切り換えを実行することを特徴とする。【００２３】
本発明の第２の制御方法は、本発明の第１の制御方法において、前記切り換えの後、前記処理装置内の一のプログラムデータメモリ上のプログラムの実行中に他のプログラムを前記処理装置内の別のプログラムデータメモリに読み出すことを特徴とする。
【００２４】
本発明の第３の制御方法は、再構成可能ハードウェアと再構成可能ハードウェアの論理回路を形成するプログラムを保持する複数のプログラムデータメモリと複数のプログラムデータメモリから１つを選択して有効とする有効ブロック選択部とを含む処理装置が所定の条件を検出した際にコマンドの実行を指示し、処理装置のコマンド実行指示を受けた制御装置が、有効ブロック選択部を制御して指定されたプログラムデータメモリを有効にして再構成可能ハードウェアに接続するａｃｔｉｖａｔｅコマンドを実行し、再構成可能ハードウェアが実行する論理回路の内容を切り換え、前記制御装置は、前記処理装置が複数存在する場合にあっては複数の前記処理装置のうち指定した前記処理装置の動作を停止するｈａｌｔコマンドと、前記制御装置から指定した前記処理装置へ割り込みベクタを発行するｉｎｔｅｒｒｕｐｔコマンドと、指定した記憶装置から前記プログラムデータメモリへプログラムデータを転送するｌｏａｄ＿ｐｒｇコマンドと、ｌｏａｄ＿ｐｒｇ命令を中止するｃａｎｃｅｌ＿ｐｒｇコマンドと、ｌｏａｄ＿ｐｒｇ命令の終了まで待機するｗａｉｔ＿ｐｒｇコマンドとを実行することを特徴とする。
【００２５】
本発明の第４の制御方法は、本発明の第２の制御方法において、前記制御装置は、前記処理装置が複数存在する場合にあっては複数の前記処理装置のうち指定した前記処理装置の動作を停止するｈａｌｔコマンドと、前記制御装置から指定した前記処理装置へ割り込みベクタを発行するｉｎｔｅｒｒｕｐｔコマンドと、指定した記憶装置から前記プログラムデータメモリへプログラムデータを転送するｌｏａｄ＿ｐｒｇコマンドと、ｌｏａｄ＿ｐｒｇ命令を中止するｃａｎｃｅｌ＿ｐｒｇコマンドと、ｌｏａｄ＿ｐｒｇ命令の終了まで待機するｗａｉｔ＿ｐｒｇコマンドとを実行することを特徴とする。
【００２６】
本発明の第１のプログラムの生成方法は、本発明の１乃至１２の電子計算機がプログラムを生成する方法であって、アプリケーションプログラムの制御フローを解析して、アプリケーションプログラムを処理単位に分割するとともに分割した処理単位を電子計算機内で実行する再構成可能ハードウェアが制御するコマンドを組み合わせたコマンドシーケンス中間コードを生成する制御フロー解析手順と、コマンドシーケンス中間コードを電子計算機で実行可能な形式に変換してコマンドシーケンスを生成するコマンドシーケンス実装手順と、処理単位の動作内容を電子計算機で実行可能な形式に変換するプログラムデータ生成手順とを有することを特徴とする。
【００２７】  本発明の第２のプログラムの生成方法は、本発明の第１のプログラムの生成方法において、前記制御フロー解析手順は、アプリケーションプログラムの制御フローを解析して処理単位に分割する際に、各処理単位を前記再構成可能ハードウェアの論理を形成するプログラムを保持するプログラムデータメモリに格納可能なように分割することを特徴とする。【００２８】  本発明の第１のプログラムは、論理回路をプログラムにより形成可能な再構成可能ハードウェアを含む処理装置が所定の条件を検出した際にコマンドの実行を指示すると、処理装置のコマンド実行指示を受けた制御装置が再構成可能ハードウェアを論理形成するプログラムの切り換えを実行する手順をコンピュータに実行させる。【００２９】
本発明の第２のプログラムは、再構成可能ハードウェアと再構成可能ハードウェアの論理回路を形成するプログラムを保持する複数のプログラムデータメモリと複数のプログラムデータメモリから１つを選択して有効とする有効ブロック選択部とを含む処理装置が所定の条件を検出した際にコマンドの実行を指示すると、処理装置のコマンド実行指示を受けた制御装置が、有効ブロック選択部を制御して指定されたプログラムデータメモリを有効にして再構成可能ハードウェアに接続を切り換えるａｃｔｉｖａｔｅコマンドを実行する手順をコンピュータに実行させ、前記処理装置が複数存在する場合にあっては複数の前記処理装置のうち指定した前記処理装置の動作を停止するｈａｌｔコマンド、前記制御装置から指定した前記処理装置へ割り込みベクタを発行するｉｎｔｅｒｒｕｐｔコマンド、指定した記憶装置から前記プログラムデータメモリへプログラムデータを転送するｌｏａｄ＿ｐｒｇコマンド、ｌｏａｄ＿ｐｒｇ命令を中止するｃａｎｃｅｌ＿ｐｒｇコマンド、或いはｌｏａｄ＿ｐｒｇコマンドの終了まで待機するｗａｉｔ＿ｐｒｇコマンドを実行する手順をコンピュータに実行させる。
【００３０】
本発明の第３のプログラムは、本発明の第２のプログラムにおいて、前記処理装置が複数存在する場合にあっては複数の前記処理装置のうち指定した前記処理装置の動作を停止するｈａｌｔコマンド、前記制御装置から指定した前記処理装置へ割り込みベクタを発行するｉｎｔｅｒｒｕｐｔコマンド、指定した 
記憶装置から前記プログラムデータメモリへプログラムデータを転送するｌｏａｄ＿ｐｒｇコマンド、ｌｏａｄ＿ｐｒｇ命令を中止するｃａｎｃｅｌ＿ｐｒｇコマンド、或いはｌｏａｄ＿ｐｒｇコマンドの終了まで待機するｗａｉｔ＿ｐｒｇコマンドを実行する手順をコンピュータに実行させる。
【図面の簡単な説明】
【００３１】［図１］本発明の実施形態の構成を示すブロック図である。
［図２］本発明の実施形態の処理装置の一例を示すブロック図である。
［図３］本発明の実施形態の処理要素の一例を示した図である。
［図４］本発明の実施形態の処理要素の一例を示した図である。
［図５］本発明の実施形態の処理要素の一例を示した図である。
［図６］本発明の実施形態の制御装置と処理要素の接続例を示した図である。
［図７］本発明の実施形態の制御装置に実装するコマンドコードの構成を示した図である。
［図８］本発明の実施形態の制御装置に実装するコマンドコードの機能を示した図である。
［図９］本発明の実施形態の制御装置と処理要素の接続例を示した図である。
［図１０］本発明の実施形態のコマンドの格納例を示した図である。
［図１１］本発明の実施形態の制御装置と処理要素の接続例を示した図である。
［図１２］本発明の実施形態のコマンドの格納例を示した図である。
［図１３］本発明の実施形態のアドレスカウンタ制御コードの構成例を示した図である。
［図１４］本発明の実施形態のアドレスカウンタ制御コードの機能例を示した図である。
［図１５］本発明の実施形態のコマンドシーケンスを示した図である。
［図１６］本発明の実施形態のキャッシュを付加した構成のブロック図である。
［図１７］本発明の実施形態の動作説明で参照する構成例を示すブロック図である。
［図１８］本発明の実施形態の実装するアプリケーションを示した図である。
［図１９］本発明の実施形態のプログラムデータの生成フロー図である。
［図２０］本発明の実施形態のコマンドシーケンス中間コードを示した図である。
［図２１］本発明の実施形態の処理の制御フロー図である。
［図２２］本発明の実施形態のコマンドコードメモリに割り当てたコマンドシーケンスの図である。
［図２３］本発明の実施形態のメモリに割り当てたプログラムデータの図である。
［図２４］本発明の実施形態の電源投入時の電子計算機の状態を示した図である。
［図２５］本発明の実施形態の動作を示したタイミングチャートである。
［図２６］本発明の実施形態の２つの処理装置で構成するブロック図である。
［図２７］本発明の実施形態のメモリに割り当てたコマンドシーケンスの図である。
［図２８］本発明の実施形態の２つの処理装置が動作するタイミングチャートである。
［図２９］本発明の実施形態のプログラムデータの生成フロー図である。
［図３０］従来技術においてアプリケーションプログラムの全てを専用ハードウェアとして実装する手法例を示した図である。
［図３１］従来技術においてアプリケーションプログラムの一部を専用ハードウェアとして実装する手法例を示した図である。
［図３２］従来技術においてアプリケーションプログラムの一部を専用ハードウェアとして実装する手法例を示した図である。
【発明を実施するための最良の形態】
【００３２】  本発明の実施の形態について図面を参照して詳細に説明する。図１は本発明の実施の形態の電子計算機の基本的な構成を示すブロック図である。本発明の第１の実施形態の電子計算機３０は、外部とのインタフェースを制御しデータを転送するインタフェース装置４０と、アプリケーションプログラムの全部又は一部の処理を実行する処理装置７０と、処理装置７０から指示されたコマンドを実行する制御装置６０とを含み、接続網２０を介して外部記憶装置１０と接続する。図１の電子計算機３０は、処理装置７０を２つ含んでいるが、１つでもよく、３つ以上でもよい。【００３３】
処理装置７０は、メモリ部８０と処理部９０からなる。図２は処理装置７０の構成の一例を示した図であり、１つの処理要素９１と１つのプログラムデータメモリ８１からなるバンク１０１と、１つの処理要素９１に対して複数のプログラムデータメモリ８１を設けて選択できるようになっているバンク１０２と、選択メモリ８３と、複数の処理要素９１から１つを選択して出力する有効バンク選択部９２を構成要素とする。
【００３４】
図２では処理装置７０はバンク１０１とバンク１０２をそれぞれ２つずつ含んでいるが、バンク１０１又はバンク１０２のいずれかを１つ以上含めばよい。また、バンクが１つの構成であれば有効バンク選択部９２は省略でき、バンクもプログラムデータメモリ８１も１つの構成であれば選択メモリ８３を省略できる。
【００３５】  処理装置７０に入力されるプログラムデータ信号Ｓ８０は、プログラムデータメモリ８１及び選択メモリ８３に接続される。プログラムデータメモリ８１は処理要素９１の処理内容を決定するためのプログラムを保持するメモリである。プログラムデータメモリ８１に保持されるプログラムは通常外部記憶装置１０に格納されており、必要に応じて接続網２０、インタフェース装置４０、プログラムデータ信号Ｓ８０を介して転送されプログラムデータメモリ８１に書き込まれる。なお、処理要素９１がＦＰＧＡのような再構成可能ハードウェアである場合、プログラムデータメモリ８１へ保持するプログラムは処理要素９１の論理回路の形成を行うためのプログラムとなる。【００３６】  処理要素９１は接続するプログラムデータメモリ８１に保持されるプログラムの内容に従った処理を実行する。例えば図３のように再構成可能ハードウェアで実現されるが、図４に示すようにＣＰＵにて実現してもよい。【００３７】  選択メモリ８３は、有効バンク選択部９２及び有効ブロック選択部８２に接続され、処理装置７０の中で有効にするバンクを選択したり、バンク１０２のように複数のプログラムデータメモリ８１で構成されたバンクの中で有効にするプログラムデータメモリ８１を選択したりする情報を保持する。なお、プログラムデータメモリ８１への切り換えは瞬時に終わるので、切り換えられたプログラムデータメモリ８１へのプログラムの格納が終了していれば瞬時に新たなプログラムに対応した処理を処理要素９１は開始することができる。ただし、プログラムの格納が終わっていなければ、データ転送が終了しプログラムが格納されるまで待つ必要がある。【００３８】  処理装置７０から出力されるコマンド信号Ｓ９１は処理装置７０の処理要素９１から生成される。処理装置７０に入力される割り込み信号Ｓ９２は処理装置７０の処理要素９１に入力され、その処理の過程で使用される。処理装置７０に入出力される処理データ信号Ｓ９３は、処理部９０に接続され、処理に必要なデータや、処理を終えたデータの入出力線として使用される。【００３９】
コマンド信号Ｓ９１、割り込み信号Ｓ９２及び処理データ信号Ｓ９３は処理装置７０が複数のバンクを含む場合選択メモリ８３によって有効になっているバンクの処理要素９１に入出力される。図２では、処理装置７０へ入力したデータはすべての処理部９０に接続しているが、有効ではないバンクに入力しないように、選択メモリ８３等から制御してそれらの入力データを切断するようにしてもよい。
【００４０】
次に、各処理要素９１について詳細に説明する。処理要素９１は図３に示すように、従来のＦＰＧＡやＰＬＤに代表されるような再構成可能ハードウェアで構成される。ただし、処理要素９１が複数ある場合に、その中の１つ又は複数を図４に示すように、ＣＰＵ１２０で構成してもよい。ＣＰＵ１２０で構成した処理要素９１はアプリケーションプログラムの処理を高級言語で処理する部分を割り当てて処理したり、処理装置７０内を制御したりすることを主な用途とする。なお、処理要素９１をＣＰＵ１２０で構成した場合には、処理データ信号Ｓ９３を介してプログラムを読み込めるため、図４におけるプログラムデータ接続線Ｓ１０１はなくてもよい。
【００４１】
また、処理要素９１は、図５に示すように、本電子計算機３０における制御装置６０を再構成可能なハードウェアで実現し、再構成可能制御装置Ｒ６０を構成してもよい。図５に示したように、再構成可能制御装置Ｒ６０はプログラムデータ接続線Ｓ１０１を用いて設定され、設定される内容に従って処理内容を変えることができる。またコマンド信号Ｓ９１や割り込み信号Ｓ９２及び処理データ信号Ｓ９３はインタフェース装置４０を介して入出力される。
【００４２】  インタフェース装置４０は処理装置７０や制御装置６０と電子計算機３０の外部の接続網２０とを接続し、接続網２０側から電子計算機３０に制御に関する通信が発生した場合には、接続網２０の適切なプロトコルに基づいて制御装置６０にコマンド信号Ｓ４１を出力する。制御装置６０からインタフェース装置４０に割り込み信号Ｓ４２等の制御に関する通信が発生した場合には、同様に適切なプロトコルを用いて接続網２０を介して指定された接続先に伝える。【００４３】  電子計算機３０の内部から外部へのアクセスが発生した場合は、インタフェース装置４０が適切なプロトコルに基づいて外部にアクセスを行なう。電子計算機３０の外部から処理装置７０に対するアクセスが発生した場合には、インタフェース装置４０が適切なプロトコルに基づいてアクセスする。制御装置６０は、インタフェース装置４０を介して電子計算機３０の外部の装置から伝えられたコマンド信号Ｓ４１や処理装置７０から出力されたコマンド信号Ｓ９１を受けとり、受け取ったコマンドを解釈実行する。処理装置７０が制御装置６０へコマンド信号Ｓ９１を発行する際のプロトコルの例を図６に示す。このプロトコルはインタフェース装置４０と制御装置６０の間のプロトコルに適用してもよい。【００４４】  図６は、処理装置７０がリクエスト信号Ｓ９１１と共に直接コマンドコード信号Ｓ９１２を渡す方式を示す図である。コマンドコード信号Ｓ９１２を受けとった制御装置６０はコマンドコードの内容に従って処理を行ない、処理終了時に応答信号Ｓ９２１を返す。【００４５】  制御装置６０が解釈実行するコマンドコードの一例を図７及び図８に示す。図７はコマンドコードの構成を示した図であり、コマンドコードＡ１０はコマンドコード名Ａ１１とコマンドコードパラメータＡ１２で構成される。図８はコマンドの実行内容を一覧にした図であり以下に説明する６つのコマンドを示している。【００４６】  ａｃｔｉｖａｔｅは、選択メモリ８３に、コマンドコードパラメータＡ１２で指示されるコードを書き込むことで、有効バンク選択部９２及び有効ブロック選択部８２を制御し、選択したプログラムデータメモリ８１を同じバンクの処理要素９１に接続する。例えば図３に示したように、再構成可能ハードウェアで処理要素９１が構成されている場合にａｃｔｉｖａｔｅすることは、再構成可能ハードウェアにそのプログラムデータを設定することを意味し、ａｃｔｉｖａｔｅされた再構成ハードウェアはすぐにそのプログラムデータメモリ８１の内容に従って処理を開始する。【００４７】  ｈａｌｔは、コマンドコードパラメータＡ１２によって指定した処理装置７０の動作を停止させる。
ｉｎｔｅｒｒｕｐｔは、コマンドコードパラメータＡ１２によって指定した処理装置７０に対して、指定した割り込みベクタ信号Ｓ９２２を発行する。
ｌｏａｄ＿ｐｒｇは、コマンドコードパラメータＡ１２によって指定したプログラムデータメモリ８１の領域へ、外部記憶装置１０やその他任意の記憶装置に格納されているプログラムデータを転送する。
ｃａｎｃｅｌ＿ｐｒｇは、ｌｏａｄ＿ｐｒｇによって開始した転送を中止する。
ｗａｉｔ＿ｐｒｇは、ｌｏａｄ＿ｐｒｇによって開始した転送が終了するまで待機する。【００４８】  制御装置６０は、図８に示したコマンドの任意の組合せ（コマンドセット）を解釈し、それぞれのコマンドに対して適切な処理を行ない、応答信号を含む割り込みを処理装置７０や、インタフェース装置４０を介して電子計算機３０の外部に出力する。コマンドの解析や処理、割り込みは、処理装置７０毎に並列に行なってもよい。【００４９】  処理装置７０が制御装置６０へコマンド信号Ｓ９１を発行する際の別のプロトコルの例を図９及び図１１に示す。このプロトコルはインタフェース装置４０と制御装置６０の間のプロトコルに適用してもよい。【００５０】  図９は、制御装置６０がコマンドコード参照装置６１とコマンドコードメモリ６３を有し、処理装置７０がリクエスト信号Ｓ９１１と共にアドレス信号Ｓ９１３を渡す方式を示す図である。図１０はコマンドコードメモリ６３に格納されるコマンドコードの一例を示す図である。アドレス信号Ｓ９１３は、制御装置６０に実行させたいコマンドが格納されたコマンドコードメモリ６３のアドレスを指す。【００５１】  アドレス信号Ｓ９１３を受けとった制御装置６０は、コマンドコード参照装置６１を用いて、コマンドコードメモリ６３を参照し、アドレス信号Ｓ９１３に対応するコマンドを実行後、処理終了時に応答信号Ｓ９２１を返す。【００５２】  コマンドコードメモリ６３は、制御装置６０から参照可能な、制御装置６０外部のメモリや外部記憶装置１０等の任意のメモリでもよい。また、処理装置７０が複数ある場合は制御装置６０内にコマンドコード参照装置６１を複数持ってコマンドを並列処理するようにしてもよいし、処理装置７０に対応してコマンドコード参照装置６１を設けるように構成してもよい。【００５３】  図９のプロトコルは、制御装置６０にコマンドコード参照装置６１とコマンドコードメモリ６３を設ける必要があるが、一般に、メモリのアドレスのビット数はデータのビット数より少なくすることができるため、図６のプロトコルに比べて、制御装置６０と処理装置７０との接続信号線数を少なくすることができる。【００５４】  図１１は、制御装置６０がコマンドコード参照装置６１及びそのアドレスカウンタ６２を有し、処理装置７０がリクエスト信号Ｓ９１１と共にアドレス操作信号Ｓ９１４及びＳ９１５を用いてアドレスカウンタ６２の制御を行ない、必要ならばアドレス信号Ｓ９１３を用いてアドレスを制御装置６０に渡す方式を示した図である。コマンドコード参照装置６１及びそのアドレスカウンタ６２は接続する処理装置７０毎に設けてもよい。【００５５】  ａｄｒ＿ｅｎａアドレスカウンタ操作信号Ｓ９１４が有効でかつｄｉｒｅｃｔ／ｏｆｆｓｅｔアドレスカウンタ操作信号Ｓ９１５がｄｉｒｅｃｔを示す場合には、処理装置７０から渡されるアドレス信号Ｓ９１３をアドレスカウンタ６２に格納する。ａｄｒ＿ｅｎａアドレスカウンタ操作信号Ｓ９１４が有効でかつアドレスカウンタ操作信号Ｓ９１５がｏｆｆｓｅｔを示す場合には、処理装置７０から渡されるアドレス信号Ｓ９１３の値をアドレスカウンタ６２に加算する。ａｄｒ＿ｅｎａアドレスカウンタ操作信号Ｓ９１４が無効の場合��は、処理装置７０から渡されるアドレス信号Ｓ９１３は無視し、アドレスカウンタ６２の値は保持する。【００５６】  処理装置７０によるアドレスカウンタ６２の制御が終ると、制御装置６０はアドレスカウンタ６２の値とコマンドコード参照装置６１を用いてコマンドが格納されたコマンドコードメモリ６３を参照して格納されているコマンドの処理を行ない、終了後に応答信号Ｓ９２１を返す。【００５７】  図１２は図１１の構成におけるコマンドコードメモリ６３に格納されるコマンドコードの一例を示した図である。図１２に示すように、コマンドコードメモリ６３には、コマンドコードＡ１０以外にアドレスカウンタ制御コードＡ２０及びフラグＡ３０を格納しているが、含まないようにしてもよい。図１２のようなフォーマットを用いた場合、制御装置６０は、コマンドコードＡ１０に記された処理の終了後、処理装置７０に応答信号Ｓ９２１を返す前にアドレスカウンタ制御コードＡ２０に指定されている処理を行なう。【００５８】  図１３にアドレスカウンタ制御コードＡ２０の詳細を示す。アドレスカウンタ制御コードＡ２０はアドレスカウンタ制御コード名Ａ２１、そのパラメータであるアドレスカウンタ制御コードパラメータＡ２２から構成される。図１４にアドレスカウンタ制御コードの例を示す。ｌｏａｄ＿ａｄｒはアドレスカウンタ制御コードパラメータＡ２２の値を新しいアドレスカウンタ６２の値として設定する。ａｄｄ＿ａｄｒはアドレスカウンタ制御コードパラメータＡ２２の値をアドレスカウンタ６２の値に加算する。ｐｕｓｈ＿ａｄｒは現在のアドレスカウンタ６２の値を図示しないがアドレスカウンタスタックに保存し、アドレスカウンタ制御コードパラメータＡ２２の値を新しいアドレスカウンタ６２の値として設定する。ｐｏｐ＿ａｄｒ命令はアドレスカウンタスタックから値を取り出して、その値を新しいアドレスカウンタ６２の値として設定する。アドレスカウンタスタックはコマンドコード参照装置６１に設ければよい。【００５９】  また、フラグＡ３０は、アドレスカウンタ制御コードＡ２０を実行後の新しいアドレスカウンタ６２の値を用いて、引続きコマンドの参照及び実行を行なうかどうかのフラグとして用いる。以後、引続きコマンドを実行する場合のフラグをｃｏｎｔ、実行しない場合のフラグをｓｔｏｐと記す。
例えば、図１１に示した構成において、コマンドコードメモリ６３が図１５のようなコマンドシーケンスを格納し、処理装置７０がアドレス信号Ｓ９１３を１００に、アドレスカウンタ操作信号Ｓ９１４を無効にしてコマンドを発行すると制御装置６０はコマンドコードをＹ１００、Ｙ１０１、Ｙ２００の順に実行する。【００６０】  従って、コマンドコード参照装置６１がアドレスカウンタ６２を内蔵し、アドレスカウンタ制御コードＡ２０でアドレスカウンタ６２の制御を行なう方式では、処理装置７０はコマンド発行の際に必要な場合にだけアドレス信号Ｓ９１３を出力するだけで済むため、処理装置７０内の処理部９０は少ないハードウェアリソースでアドレス信号Ｓ９１３を生成できるようになる。【００６１】  なお、処理装置７０と制御装置６０間のプロトコルに関しては、図６、図９、図１４の中から１つを選択するか、或いはこれらを任意に組み合わせて構成してもよい。また、複数の構成を組み込んで必要に応じて制御線を追加してプロトコルを切替えるようにしてもよい。例えば、制御線を追加し、図６のプロトコルか図１１のプロトコルかを選択できるようにしてもよい。【００６２】  次に、電子計算機３０と外部とのデータ転送を高速化するため、図１６に示すように、図１の電子計算機３０にキャッシュコントローラ１３０を含むキャッシュ装置５０を追加して、そのキャッシュコントローラ１３０の制御をコマンドで行なうように構成してもよい。図１６ではキャッシュ装置５０はキャッシュコントローラ１３０を３つ設けそれぞれ制御装置６０、メモリ部８０、処理部９０に接続しているが、１つのキャッシュコントローラ１３０でこれらと接続する構成でもよい。また、キャッシュコントローラ１３０内にキャッシュメモリ１４０を複数ポート持ってもよい。また、複数のキャッシュコントローラ間でアドレス変換装置１５０を共有してもよい。【００６３】  キャッシュコントローラ１３０は、例えば外部記憶装置１０等に記憶され処理装置７０がアクセスするデータを一時的に保持するキャッシュメモリ１４０とアドレス変換装置１５０を含んでいる。キャッシュコントローラ１３０は、コマンドによって制御され、主にキャッシュメモリ１４０と外部記憶装置１０との間のデータ転送と、キャッシュメモリ１４０と制御装置６０や処理装置７０との間のデータ転送を行ない、処理装置７０や制御装置６０と並列に動作する。【００６４】  アドレス変換装置１５０は、処理装置７０のアドレス空間とインタフェース装置４０のアドレス空間との間のアドレスを互いに変換する装置であり、処理装置７０内で独立したアドレス空間を持つことができる。また、処理装置７０毎にアドレス変換装置１５０を設けることにより処理装置７０毎に独立したアドレス空間を定義することもできる。【００６５】  また、インタフェース装置４０に設けられたアドレス変換装置１５１は、電子計算機３０と、電子計算機３０と接続網２０を介して接続する外部記憶装置１０や他の装置との間のアドレス空間の差分に対してアドレス変換する。処理装置７０は制御装置６０でコマンドを実行してアドレス変換装置１５０の制御を行なう。【００６６】  なお、キャッシュコントローラを制御するためのコマ���ドについては図８に記載していないが、例えばアドレス変換装置１５０が被変換アドレスと変換アドレスとを対にして記憶する変換用バッファを備える場合はバッファへの登録、消去、置換等の制御を行うコマンド等を設ければよく、
また、キャッシュメモリ１４０内の特定の領域を処理装置７０の専用のローカルメモリ領域として設定するようなコマンドを追加してもよい。【００６７】  また、データフローを解析してスケジューリングを行ない、使用するキャッシュやそのキャッシュの制御を予めコマンドシーケンスとして記述しておくことで、処理装置７０による処理と、制御装置６０によるデータフローの制御を並列に行なうことができ、処理装置７０の処理能力が向上する。また、処理装置７０が必要なタイミングでコマンドを発行するため、無駄なオーバヘッドも発生しない。【００６８】  例えば、キャッシュコントローラ１３０をコマンドで制御して、各装置がキャッシュメモリ１４０にアクセスするより前に、前もってデータをキャッシュメモリ１４０にロードしておくことが可能になり、効率の良いデータ転送が可能になる。
なお、本電子計算機３０を接続網２０に多数接続しても互いに通信および制御が可能であることは、上記説明から明白であり、本電子計算機３０は任意に拡張が可能である。また、本電子計算機３０は、本電子計算機３０を１つ以上含むＬＳＩや、本電子計算機３０の一部分をＬＳＩとして実現してもよい。さらに、本電子計算機３０を論理的にＦＰＧＡやＰＬＤ等の再構成可能ハードウェア上に論理的に実装してもよい。【００６９】  次に、本発明の実施形態の電子計算機３０の動作を図面を参照して説明する。なお、電子計算機３０の構成については様々な構成について説明してきたが、動作の説明では図１７に示す構成を例として説明する。動作説明は電子計算機で処理する対象となるアプリケーションプログラムをプログラムデータメモリ８１１〜８１３へ格納する処理単位へと分割し制御装置６０で実行するコマンドを生成するプログラムの生成方法を説明し、その次に図１７の構成における電子計算機３０での動作・制御方法について説明する。【００７０】  図１７を参照すると、３つのプログラムデータメモリ８１１，８１２，８１３に、有効ブロック選択８２を介して接続され再構成可能ハードウェアで実現された処理要素１１０を１バンク有する１つの処理装置７１があり、図１１からｄｉｒｅｃｔ／ｏｆｆｓｅｔを指定するアドレスカウンタ制御Ｓ９１５を省略したプロトコルで制御装置６０と処理装置７１を接続し、制御装置６０とインタフェース装置４０との間のコマンド信号Ｓ４１及び割り込み信号Ｓ４２を省略した構成となっている。図１７の制御装置６０に実装されているコマンドセットは図８の通りとし、同制御装置６０に実装されているアドレスカウンタ制御コードは図１３及び図１４の通りとする。なお、キャッシュ装置５０は省略した構成としている。【００７１】  図１８は図１７の処理要素１１０で実行するアプリケーションの処理内容の流れの一例を示した制御フロー図である。図１８に示しているように、アプリケーションは初期状態Ｃ０を経て、制御フローで示している処理を動的に切り換えながら実行し、全ての処理が終ると終了状態Ｃ９となる。初期状態Ｃ０は処理Ｐ１を開始できる直前の状態とする。終了状態Ｃ９は、一例として図１７における処理装置７１がすべて停止した状態とする。【００７２】  図１８に示したアプリケーションの処理内容は、５つの状態（Ｃ１，Ｃ２，Ｃ３，Ｃ４，Ｃ５）と４種類の処理内容（Ｐ１，Ｐ２，Ｐ３，Ｐ４）を持つものとし初期状態Ｃ０から状態Ｃ１には無条件で遷移する。状態Ｃ１では処理Ｐ１を行ない、条件Ｆ１で状態２に遷移する。状態Ｃ２では処理Ｐ２を行ない、条件Ｆ２ａで状態３に、条件Ｆ２ｂで状態４に遷移する。状態Ｃ３では処理Ｐ１を行ない、条件Ｆ３で状態５に遷移する。状態Ｃ４では処理Ｐ３を行ない、条件Ｆ４で状態５に遷移する。状態Ｃ５では処理Ｐ４を行ない、条件Ｆ５で終了状態Ｃ９に遷移する。【００７３】  図１９はアプリケーションを実行するプログラムを生成するフローである。図１９に示すフローは、各処理後に実行するコマンドシーケンスを生成する制御フロー解析手順Ｍ１、コマンドシーケンスをデータ列に変換するコマンドシーケンス実装手順Ｍ２、プログラムデータを生成する��めのプログラムデータ生成手順Ｍ３から成り、アプリケーション全体の制御フロー、終了、電子計算機３０の構成情報及びそのコマンドセット等を入力とし、本電子計算機の初期状態Ｃ０を示すコマンドシーケンスコード、各処理装置内で使用する全てのプログラムデータ、及びそれらから参照されるコマンドシーケンスコードを出力する。制御フロー解析手順Ｍ１、コマンドシーケンス実装手順Ｍ２、プログラムデータ生成手順Ｍ３はそれぞれプログラムで実現される。【００７４】  制御フロー解析手順Ｍ１は、各処理（Ｐ１〜Ｐ４）とそれに対応する状態（Ｃ１〜Ｃ５）、各状態に対応した遷移条件（Ｆ１〜Ｆ５）と遷移先を解析する。そして、各処理をプログラムデータメモリ８１１〜プログラムデータメモリ８１３のいずれかに割り当て、有効ブロック選択部８２を切り換えて各処理を続けて実行することで次状態に遷移できるようなコマンドシーケンスの中間コードを生成する。【００７５】  図１８のアプリケーションを制御フロー解析手順Ｍ１によって解析した結果として生成されるコマンドシーケンスの中間コードの一例を図２０に示す。ここで、電源投入時には、有効ブロック選択部８２はプログラムデータメモリ８１１を選択しているものとする。図２０において、コマンドシーケンスＳＱ０のコマンド″ｌｏａｄ＿ｐｒｇ  ８１２、ＰＭ１″のパラメータである８１２は処理要素１１０において処理Ｐ１を実行するように生成されたプログラムデータのロード先がプログラムメモリデータメモリ８１２であることを示し、ＰＭ１は同プログラムデータが格納されているメモリの領域を示す。ＰＭ１で指定されるプログラムデータＰＭ１は外部記憶装置１０を含む任意のメモリに格納されていてよい。現段階では、プログラムデータＰＭ１自体は生成されていないので空のメモリ領域を指している。プログラムデータＰＭ２、ＰＭ３、ＰＭ４もそれぞれ処理Ｐ２、処理Ｐ３、処理Ｐ４を実行するように生成されたプログラムデータが格納されているメモリの領域を指定するものである。【００７６】  図２０において、例えば、状態Ｃ４は処理Ｐ３を実行している状態であり、この状態で条件Ｆ４が成立した時点でコマンドシーケンスＳＱ４を開始する。コマンドシーケンスＳＱ４の処理内容は、″ｗａｉｔ＿ｐｒｇ  ８１３、ＰＭ４″によりプログラムデータメモリ８１３にプログラムデータＰＭ４が全て転送されるまで待機し、″ａｃｔｉｖａｔｅ″によりプログラムデータメモリ８１３を選択して開始することとなる。プログラムデータメモリ８１３が″ａｃｔｉｖａｔｅ″されると、処理要素１１０はプログラムデータメモリ８１３に保持されているプログラムで決められた処理を開始する。この時点では、プログラムデータメモリ８１３には、処理ＰＭ４を実行するプログラムデータが保持されているため、処理要素１１０は処理ＰＭ４を開始する。これは、すなわち、状態Ｃ５に移行することを意味する。【００７７】  このように、処理内容にコマンドシーケンスの実行手順を追加することで次の状態に遷移することができるようになる。しかも、処理装置（処理要素）自身が決められた条件を検出したタイミングでコマンドを出すことができるため、遷移のタイミングを処理内容に含めることが��き、処理効率を向上させる。また、図２０において、処理Ｐ１を行なっている際には、状態がＣ１もしくはＣ３であるかを識別する必要があるため、処理Ｐ１を行なうプログラムデータメモリを″ａｃｔｉｖａｔｅ″する前に、処理Ｐ１を行なう処理装置７１に割り込みベクタを設定し、その値を用いた遷移条件に修正している。例えば、状態Ｃ１の割り込みベクタの設定はＳＱ０の″ｉｎｔｅｒｕｐｔ  ７１、Ｃ１″にて実行する。【００７８】  コマンドシーケンス実装手順Ｍ２を用いて、図２０のコマンドシーケンスをメモリに割り当てた様子を図２２に、各処理におけるコマンドシーケンスの呼び出しを図１７の構成における制御装置６０と処理装置７１との間のインタフェースのプロトコルに変換した、各処理毎の制御フローを図２１にそれぞれ示す。【００７９】  図２１及び図２２では、電源投入後最初に実行するコマンドシーケンスＳＱ０Ａも含めて示している。コマンドシーケンスＳＱ０Ａを実行することにより初期状態Ｃ０へ遷移する。状態Ｃ０では有効ブロック選択部８２はプログラムデータメモリ８１１を選択しているため、処理要素１１０はプログラムデータメモリ８１１に格納されているプログラムの動作を電源投入後に開始する。【００８０】  図２１に示したように、個々の処理は電源投入時及びオリジナルの処理（Ｐ１，Ｐ２，Ｐ３，Ｐ４）に各コマンドシーケンス発行処理を追加した制御フローとなる。例えば、図２１の処理Ｐ２において条件Ｆ２ａが成立した際にはコマンド発行処理ＳＱ２ｂＡを実行し、条件Ｆ２ｂが成立した際にはコマンド発行処理ＳＱ２ｂＡを実行する。処理装置７１がコマンド発行処理ＳＱ２ａＡを実行する際には、リクエスト信号Ｓ９１１と、ａｄｒ＿ｅｎａアドレスカウンタ操作信号Ｓ９１４及びＡＤＲ００２を示すアドレス信号Ｓ９１３が出力される。図２２より、アドレスＡＤＲ００２はコマンドシーケンスＳＱ２ａを指すため、制御装置６０はＳＱ２ａの内容を実行する。【００８１】  また、図２０から分かるように、コマンドシーケンスＳＱ３とコマンドシーケンスＳＱ４は全く同じ動作をするため、図２２に示したように、ベースアドレス値をＡＤＲ００４として１つに集約することができる。また、図１８から分かるように、状態Ｃ３もしくは状態Ｃ４の後には状態Ｃ５となるため、図２２では、コマンドシーケンスＳＱ３及びＳＱ４を指すアドレスＡＤＲ００４のオフセット＋１のアドレスカウンタ制御コードにおいて、″ｌｏａｄ＿ａｄｒ″を使わずに″ａｄｄ＿ａｄｒ″を使用して次のアドレスカウンタ６２の値（ＡＤＲ００４オフセット＋２）を設定している。このように設計することで、処理装置７１は余分なアドレスを出力する必要がなくなる。【００８２】  最後に、図２１で示した個々の処理を、プログラムデータ生成手順Ｍ３を用いて、それぞれの処理を実行するプログラムデータを生成する。生成した各プログラムデータをメモリに格納した例を図２３に示す。生成したプログラムデータＰＭ１、ＰＭ２、ＰＭ３、ＰＭ４が格納されたメモリ領域は、図２２の各コマンドシーケンスのパラメータに反映させる。【００８３】  なお、図１６に示したように、電子計算機にアドレス変換装置を備えることで、個々の処理でアクセスするメモリアドレスやコマンドが格納されたメモリを指すアドレスは独立したアドレス空間で設計することもできる。また、プログラムデータＰＭ０に関しては、図１７の構成例の電子計算機の電源投入直後に実行する必要があるため、このプログラムデータＰＭ０は、あらかじめプログラムデータメモリ８１１に格納されている必要がある。従って、本実装例における、電源投入時の電子計算機の初期状態は図２４のリストのようになる。【００８４】  次に電子計算機３０の動作・制御方法について説明する。図２５は上記説明した動作をタイミングチャートとしてまとめて示した図２５である。図２５と図１７、図１８、図２１、図２２、図２３、図２４を用いて説明する。【００８５】  図２５は横軸に、制御装置６０内のアドレスカウンタ６２の値、制御装置６０の動作内容、処理要素１１０の動作内容、処理要素１１０に入力される割り込みベクタ信号Ｓ９２２の内容、各プログラムデータメモリ８１１、８１２、８１３が保持しているプログラムデータの内容、プログラムデータの転送状態を示し、縦軸は下向きに経過時間をＴ１０１から順に表している。なお、プログラムデータメモリ８１１、８１２、８１３の部分を編み目で表示している部分は実行中であることを示している。【００８６】  Ｔ１０１のタイミングは図２４に示した電源投入時の電子計算機３０の状態であり、プログラムデータメモリ８１１にコマンド発行処理ＳＱ０Ａを行なうプログラムデータＰＭ０が格納されている。【００８７】  Ｔ１０２で処理要素１１０はＰＭ０の動作を開始し、コマンド発行処理ＳＱ０Ａを実行する。制御装置６０のコマンド参照装置６１は、コマンド発行処理ＳＱ０Ａを受けとると、アドレスカウンタ６２にアドレス値ＡＤＲ０００を設定し、図２２のコマンドシーケンスが格納されたコマンドコードメモリ６３のＡＤＲ０００に格納されたコマンドを読み出して、Ｔ１０３で″ｌｏａｄ＿ｐｒｇ″を実行する。Ｔ１０３で制御装置６０は、″ｌｏａｄ＿ｐｒｇ″を実行し、プログラムデータメモリ８１２へプログラムデータＰＭ１を転送し始める。プログラムデータＰＭ１の格納場所の情報は″ｌｏａｄ＿ｐｒｇ″のパラメータのＰＭ１に含まれるものとし、ここでは外部記憶装置１０に図２３のように格納されているものとするが、外部記憶装置１０以外のメモリに格納しておいてもよい。【００８８】  図２２を参照すると、ＡＤＲ０００のアドレスカウンタ制御コードは次のコマンドも実行するように設定されているため、制御装置６０はアドレスカウンタ６２に１を加え、Ｔ１０４で次の命令を実行する。Ｔ１０４で制御装置６０は、プログラムデータメモリ８１２にプログラムデータＰＭ１がすべて転送されるのを待ち、Ｔ１０５でその転送が終了すると、制御装置６０は引続きＴ１０６で次の命令を実行する。【００８９】  以下、同様に実行され、Ｔ１０７で″ａｃｔｉｖａｔｅ  ８１２″を制御装置６０が実行すると、選択メモリ８３がプログラムデータメモリ８１２を選択する情報に更新され、有効ブロック選択８２は選択メモリ８３の指示によりプログラムデータメモリ８１２に切り換え、処理要素１１０は動作が切替えられてプログラムデータメモリ８１２に格納されているＰＭ１の処理を開���する。Ｔ１０８で、制御装置６０はアドレスカウンタ制御コード″ａｄｄ＿ａｄｒ  ０／ｓｔｏｐ″によりＴ１０２から開始した一連のコマンドシーケンスの処理を終了する。【００９０】  以下、同様に実行され、Ｔ１１０において、処理要素１１０が処理Ｐ１を実行中に条件Ｆ１を検出し、割り込みベクタ信号Ｓ９２２がＣ１であることを確認するとコマンド発行処理ＳＱ１Ａを実行する。
Ｔ１１０でコマンド発行処理ＳＱ１Ａを受けた制御装置６０はアドレスカウンタ６２の値をＡＤＲ００１の値に更新する。【００９１】  Ｔ１１２で、制御装置６０はコマンドコードメモリ６３を読み出して″ａｃｔｉｖａｔｅ  ８１３″を実行して、処理要素１１０の処理内容をプログラムデータメモリ８１３に格納されるＰＭ２の処理に切り換える。【００９２】  以下同様に実行され、Ｔ１２３において、処理要素１１０が処理Ｐ４を実行中に条件Ｆ５を検出するとコマンド発行処理ＳＱ５Ａを実行する。Ｔ１２３でコマンド発行処理ＳＱ５Ａを受けた制御装置６０はコマンドコードメモリ６３を参照し、Ｔ１２４で処理装置７１対する″ｈａｌｔ″を実行する。″ｈａｌｔ″による停止指示を受けると処理装置７１は動作を終了し、″ｈａｌｔ″を実行した制御装置６０もコマンドシーケンスの解釈実行を終了する。【００９３】  このように、生成されたプログラムデータはＰＭ０、ＰＭ１、ＰＭ２、ＰＭ３、ＰＭ４の５つであるが、使用するプログラムデータメモリは８１１、８１２、８１３の３つである。これは、ハードウェアリソースを越えるようなアプリケーションが本電子計算機３０に実装できることを示している。【００９４】  また、図１７の構成では処理装置７１はバンクを１つしか含まない構成となっているが、２つ以上のバンクを有する場合はプログラムデータＰＭ０〜ＰＭ４を複数のバンクのプログラムデータメモリに格納しそれぞれの再構成可能ハードウェアで構成された処理要素で実行させるようにしてもよい。この場合、処理装置の出力は有効バンク選択部９２で選択された処理要素のコマンドや出力データとなり、有効バンク選択部９２で選択された処理要素が有効に動作し、プログラムデータメモリと処理要素を切り換えながら処理を進めることになる。【００９５】  次に処理装置７０が複数ある場合の動作について、図２６の構成を例に説明する。図２６は図１７の処理装置７１を１つ含む構成に処理装置７２を追加して処理装置７０が２つ存在する構成としている。さらに、動作開始のトリガとなるコマンドＳＱ０Ａの発行を処理装置７１ではなく処理装置７２から実行するようにしている。また、図２２に示した処理装置７１のコマンドシーケンスＳＱ５を図２７に示すようなコマンドシーケンスＳＱ５Ｂに変更し、″ｈａｌｔ″の後に″ｉｎｔｅｒｒｕｐｔ  ７２，ＥＮＤ７１″を実行するように追加し、処理装置７１の終了を処理装置７２へ割り込みで知らせるようにしている。【００９６】  図２８は、コマンドＳＱ０Ａの発行を処理装置７２が実行し処理装置７１が自己の終了を″ｉｎｔｅｒｒｕｐｔ″で処理装置７２へ通知する上記の動作を示したタイミングチャートである。【００９７】  図２８を参照すると、Ｔ２０１において、処理装置７２は処理Ｐ５の中で、処理装置７１の初期化のためのコマンド発行処理ＳＱ０Ａを実行する。Ｔ２０１でコマンド発行処理ＳＱ０Ａを受けた制御装置６０はコマンドシーケンスＳＱ０を実行する。Ｔ２０２で初期化された処理装置７１は図２５で示したような一連の処理を行い、Ｔ２０３でコマンド発行処理ＳＱ５Ａを実行する。Ｔ２０３で制御装置６０はコマンドシーケンスＳＱ５Ｂを実行し、″ｈａｌｔ″の実行によりＴ２０４で処理装置７１を停止させ、″ｉｎｔｅｒｒｕｐｔ″の実行によりＴ２０５で処理装置７２に割り込みを出力する。【００９８】  処理装置７２は処理Ｐ５を実行中に、Ｔ２０１においてコマンド発行処理ＳＱ０Ａを実行した後、すぐに別の処理Ｐ６を実行することができる。そして、処理Ｐ６において処理装置７１からの割り込みを待って、後続の処理Ｐ７に遷移することもできる。もちろん、処理装置７２は処理Ｐ６を実行せずに、単に処理装置７１からの割り込みを待つだけでもよい。【００９９】
また、図２６の構成の場合には、処理装置７１で"ｈａｌｔ"が実行された後の終了状態を処理装置７１の初期状態として、同じ処理を何度でも処理装置７２から実行することができる。また、処理装置７２中の処理要素は図２、図３、図４、図５で示した構成が可能であり、特にＣＰＵ１２０が処理装置７２の処理要素として入っていた場合には、そのソフトウェアプログラムの中の１つの関数呼び出しやシステムコール、もしくはそれらを含むスレッドやオブジェクト、あるいはＣＰＵ１２０のインストラクションの拡張として処理要素７１を使用してもよい。
【０１００】  このように複数の処理装置を並列に動作させる際に、″ｉｎｔｅｒｒｕｐｔ″コマンドを利用して処理装置間で同期をとれるので、処理能力を向上させとともに全体の処理の前後関係を順序立てて実行することができる。【０１０１】  また、電子計算機３０は図１に示したように、接続網２０を介した外部からコマンドを受けとることができるため、電子計算機３０の外部からコマンド発行処理ＳＱ０Ａを実行させるようにしてもよい。さらに、図５に示したように、処理装置７０の処理要素を電子計算機３０で実現することもできるため、処理を階層化・細分化して実装してもよい。【０１０２】  なお、上記動作説明では、本電子計算機の構成を固定した場合の実装例を示したが、例えば、図５のように制御装置６０が再構成可能な制御装置Ｒ６０であった場合には、図２９のような生成フローにおいて、コマンドシーケンス中間コードで使用しているコマンドのみをコマンドセットとして使用するようにし、そのコマンドサブセットのみを実装した制御装置Ｒ６０を構成してもよい。このように構成することで、制御装置６０を簡略化することができる。【０１０３】  以上の説明では図１６に示したキャッシュ装置５０を除いた構成で説明したが、図１７や図２６の構成にキャッシュ装置５０を挿入する構成にすることもできることは明瞭であり、キャッシュ装置５０を挿入することにより、電子計算機３０の外部との間のデータ転送時間を短縮することができ、さらにアドレス変換装置１５０を有することのより、処理装置に固有のアドレス空間を持たせることが可能になる。【０１０４】  また、実装フローによる解析結果に基づいて、制御装置６０や処理装置７０も含めた全ての構成要素を新規に設計および製造してもよい。【０１０５】  なお、本発明が上記各実施例に限定されず、本発明の技術思想の範囲内において、各実施例は適宜変更され得ることは明らかである。
【産業上の利用可能性】
【０１０６】  以上説明したように本発明によれば、アプリケーションプログラムの処理を分割して複数の処理単位とし処理単位毎に論理回路を形成するプログラムを切り換えながら再構成可能ハードウェアで実行させることにより大きなアプリケーションプログラムでも小さな再構成可能ハードウェアで実行可能となるため、アプリケーションプログラムを安価な構成で高速に実行でき、さらに、処理単位のコマンドシーケンスを変更することにより処理単位のプログラムを容易に応用することができるので、新たなアプリケーションプログラムへの応用や、新たな電子計算機の構築を低コストで実現できるという効果がある。【０１０７】  さらに、論理回路を形成するプログラムを保持するプログラムデータメモリを複数有して処理単位の実行中に次の処理単位のプログラムを別のプログラムデータメモリに読み出すことにより、切り換えの際のプログラムの読み出し時間を短縮して切り換え時間を短縮し処理速度を向上することができる。
【図１】
0004665760.tif 000002
【図２】
0004665760.tif 000003
【図３】
0004665760.tif 000004
【図４】
0004665760.tif 000005
【図５】
0004665760.tif 000006
【図６】
0004665760.tif 000007
【図７】
0004665760.tif 000008
【図８】
0004665760.tif 000009
【図９】
0004665760.tif 000010
【図１０】
0004665760.tif 000011
【図１１】
0004665760.tif 000012
【図１２】
0004665760.tif 000013
【図１３】
0004665760.tif 000014
【図１４】
0004665760.tif 000015
【図１５】
0004665760.tif 000016
【図１６】
0004665760.tif 000017
【図１７】
0004665760.tif 000018
【図１８】
0004665760.tif 000019
【図１９】
0004665760.tif 000020
【図２０】
0004665760.tif 000021
【図２１】
0004665760.tif 000022
【図２２】
0004665760.tif 000023
【図２３】
0004665760.tif 000024
【図２４】
0004665760.tif 000025
【図２５】
0004665760.tif 000026
【図２６】
0004665760.tif 000027
【図２７】
0004665760.tif 000028
【図２８】
0004665760.tif 000029
【図２９】
0004665760.tif 000030
【図３０】
0004665760.tif 000031
【図３１】
0004665760.tif 000032
【図３２】
0004665760.tif 000033