(57)【要約】【課題】ソフトウエア処理とハードウエアの再構成を含むハードウエア処理とを並行して実行し、早く終わった処理の結果を採用することにより、処理速度を速くする。【解決手段】マルチコアプロセッサ１は、演算を実行する複数のプロセッサコア１１ａ、１１ｂと、回路情報に基づいて、動的に回路構成を再構成可能な複数のリコンフィギュラブルデバイス１２ａ、１２ｂと、各リコンフィギュラブルデバイスがロックされているか否かを示すロック情報を記憶するロック状態記憶部１３とを有する。また、マルチコアプロセッサ１は、ロック情報を参照して、実行すべき演算の回路情報をロードし、そのリコンフィギュラブルデバイスによる演算の実行と、プロセッサコアよる演算の実行とを並行に行い、実行が早く終わった方の演算の実行の結果を採用する制御を行う複数のリコンフィギュラブル制御部２３ａ、２３ｂを有する。【選択図】図１
2010044578.tif 000002
【特許請求の範囲】
【請求項１】
それぞれがプログラムに基づく演算を実行する複数のプロセッサコアと、
それぞれが回路情報に基づいて、動的に回路構成を再構成可能な複数のリコンフィギュラブルデバイスと、
各リコンフィギュラブルデバイスが前記複数のプロセッサコアのいずれかにロックされているか否かを示すロック情報を記憶するロック状態記憶部と、
前記複数のプロセッサコアのそれぞれに対応して設けられ、それぞれが前記各リコンフィギュラブルデバイスに実行すべき演算の回路情報がロードされているか否かを判定し、前記実行すべき演算の回路情報がロードされている場合、前記ロック情報を参照し、前記実行すべき演算の回路情報がロードされているリコンフィギュラブルデバイスがロックされていないとき、前記実行すべき演算を前記複数のプロセッサコアのいずれかにおいて実行せずに、前記実行すべき演算の回路情報がロードされているリコンフィギュラブルデバイスによる演算の実行のみを行い、前記実行すべき演算の回路情報がロードされていない場合、前記ロック情報を参照して、ロックされていないリコンフィギュラブルデバイスに前記実行すべき演算の回路情報をロードし、前記実行すべき演算の回路情報がロードされたリコンフィギュラブルデバイスによる演算の実行と、前記複数のプロセッサコアのいずれかによる演算の実行とを並行に行い、並行して行われた２つの演算の実行の結果のうち、実行が早く終わった方の演算の実行の結果を前記実行すべき演算の演算結果として制御する複数のリコンフィギュラブル制御部と、
を有することを特徴とするマルチコアプロセッサ。
【請求項２】
前記ロック状態記憶部は、前記各リコンフィギュラブルデバイスが最後の演算の処理を行っているか否かを示す最終実行情報を更に記憶し、
前記複数のリコンフィギュラブル制御部のそれぞれは、前記最終実行情報を参照し、前記最後の演算の処理を行っているリコンフィギュラブルデバイスがある場合、前記最後の演算の処理を行っているリコンフィギュラブルデバイスに一部の回路情報をロードし、前記最後の演算が終了した後に前記リコンフィギュラブルデバイスに残りの回路情報をロードし、前記リコンフィギュラブルデバイスの回路構成を再構成することを特徴とする請求項１に記載のマルチコアプロセッサ。
【請求項３】
前記複数のリコンフィギュラブルデバイスのそれぞれは、ロードされている回路情報を保持するレジスタを有し、
前記複数のリコンフィギュラブル制御部のそれぞれは、前記レジスタを参照することにより、前記各リコンフィギュラブルデバイスに実行する演算の回路情報がロードされているか否かを判定することを特徴とする請求項１又は請求項２に記載のマルチコアプロセッサ。
【請求項４】
前記各リコンフィギュラブル制御部は、前記回路情報をロードする際に、前記回路情報をロードするリコンフィギュラブルデバイスを低消費電力モードから通常消費電力モードに切り換えることを特徴とする請求項１から請求項３の何れか１項に記載のマルチコアプロセッサ。
【請求項５】
前記複数のリコンフィギュラブルデバイスのそれぞれに対応して設けられ、それぞれが対応するリコンフィギュラブルデバイスの自己テストを行う複数のＢＩＳＴ回路と、
前記複数のＢＩＳＴ回路の自己テストの結果を記憶するデバイス状態記憶部と、を更に有し、
前記複数のＢＩＳＴ回路のそれぞれは、前記自己テストの結果を前記デバイス状態記憶部に記憶し、
前記複数のプロセッサコアのいずれかは、前記デバイス状態記憶部に記憶された前記自己テストの結果が異常な場合、異常があるリコンフィギュラブルデバイスをロックすることを特徴とする請求項１から請求項４の何れか１項に記載のマルチコアプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチコアプロセッサに関し、特に、動的に回路構成を再構成可能な複数のリコンフィギュラブルデバイスを有するマルチコアプロセッサに関する。
【背景技術】
【０００２】
従来より、コンピュータの処理性能を増大させるため、１つのチップに複数のプロセッサコアを搭載したマルチコアプロセッサが採用されている。このマルチコアプロセッサを搭載したプロセッサ装置では、複数のプロセッサコアが複数のプログラムを並列に処理することにより、処理性能の向上が図られている。
【０００３】
また、近年では、プロセッサを用いたソフトウエア処理よりも高速の処理を実現するために、所定の処理に合わせた専用の処理回路、即ち、ハードウエアを用いたハードウエア処理が行われている。しかし、所定の処理に合わせて、複数の専用の処理回路を１つのチップに搭載すると、回路規模が増大するという問題がある。そこで、専用の処理回路に代わり、動的に回路構成を再構成可能なリコンフィギュラブルデバイスが活用されている。
【０００４】
このリコンフィギュラブルデバイスは、外部記憶装置等に記憶されている回路情報に基づいて、機能を果たすように回路構成が再構成され、再構成された回路により所定の処理を実行する。このリコンフィギュラブルデバイスを用いることにより、複数の専用の処理回路を有する必要がなく、回路規模の増大を防ぐことができる。
【０００５】
このような回路構成を再構成可能なプログラマブル論理回路を有する情報処理システムが提供されている（例えば、特許文献１参照）。
【０００６】
この文献の情報処理システムでは、ハードウエアの再構成に時間がかかることを考慮し、ハードウエアの再構成と並行して、ソフトウエアによる処理をも行う機能を盛り込んでいる。また、選択条件設定手段には、予めソフトウエア処理及びハードウエア処理による処理時間、メモリ消費量、プログラマブル論理回路の再構成時間などの種々の選択条件項目が格納される。選択条件設定手段は、その選択条件項目のうちの１つ、あるいは、複数を組み合わせることによって、ソフトウエア処理とハードウエア処理とのいずれを選択するかを決定する。これにより、情報処理システムは、処理を実行する前に、ハードウエアの再構成にかかる時間も考慮しつつ、ソフトウエア処理とハードウエア処理とのどちらで処理を実行するほうが早く完了するか、判定することを可能にしている。
【０００７】
しかしながら、上述した文献の情報処理システムは、事前にソフトウエア処理とハードウエア処理とのどちらで処理を実行するほうが早く完了するか、判定が不可能な、あるいは、困難な複雑な処理の場合は対応できない。また、この情報処理システムは、ソフトウエア処理とハードウエア処理とのどちらによる処理が早いかを判定することに時間を消費し、結果として処理速度が遅くなってしまう問題がある。
【特許文献１】特開２００６−１０７５３２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
そこで、本発明は、ソフトウエア処理とハードウエアの再構成を含むハードウエア処理とを並行して実行し、早く終わった処理の結果を採用することにより、処理速度を速くすることができるマルチコアプロセッサを提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の一態様によれば、それぞれがプログラムに基づく演算を実行する複数のプロセッサコアと、それぞれが回路情報に基づいて、動的に回路構成を再構成可能な複数のリコンフィギュラブルデバイスと、各リコンフィギュラブルデバイスが前記複数のプロセッサコアのいずれかにロックされているか否かを示すロック情報を記憶するロック状態記憶部と、前記複数のプロセッサコアのそれぞれに対応して設けられ、それぞれが前記各リコンフィギュラブルデバイスに実行すべき演算の回路情報がロードされているか否かを判定し、前記実行すべき演算の回路情報がロードされている場合、前記ロック情報を参照し、前記実行すべき演算の回路情報がロードされているリコンフィギュラブルデバイスがロックされていないとき、前記実行すべき演算を前記複数のプロセッサコアのいずれかにおいて実行せずに、前記実行すべき演算の回路情報がロードされているリコンフィギュラブルデバイスによる演算の実行のみを行い、前記実行すべき演算の回路情報がロードされていない場合、前記ロック情報を参照して、ロックされていないリコンフィギュラブルデバイスに前記実行すべき演算の回路情報をロードし、前記実行すべき演算の回路情報がロードされたリコンフィギュラブルデバイスによる演算の実行と、前記複数のプロセッサコアのいずれかによる演算の実行とを並行に行い、並行して行われた２つの演算の実行の結果のうち、実行が早く終わった方の演算の実行の結果を前記実行すべき演算の演算結果として制御する複数のリコンフィギュラブル制御部と、を有することを特徴とするマルチコアプロセッサを提供することができる。
【発明の効果】
【００１０】
本発明のマルチコアプロセッサによれば、ソフトウエア処理とハードウエアの再構成を含むハードウエア処理とを並行して実行し、早く終わった処理の結果を採用することにより、処理速度を速くすることができる。
【発明を実施するための最良の形態】
【００１１】
以下、図面を参照して本発明の実施の形態について詳細に説明する。  
まず、図１に基づき、本発明の一実施の形態に係るマルチコアプロセッサの構成について説明する。図１は、本発明の一実施の形態に係るマルチコアプロセッサの構成を示すブロック図である。
【００１２】
図１に示すように、マルチコアプロセッサ１は、複数のプロセッサコア１１ａ及び１１ｂと、複数のリコンフィギュラブルデバイス１２ａ及び１２ｂと、ロック状態記憶部１３と、デバイス状態記憶部１４と、内部記憶装置としてのメモリ１５と、ＳＤＲＡＭコントローラ１６と、入出力インターフェイス１７と、バス１８とを有して構成されている。
【００１３】
複数のプロセッサコア１１ａ、１１ｂ、複数のリコンフィギュラブルデバイス１２ａ、１２ｂ、ロック状態記憶部１３、デバイス状態記憶部１４、メモリ１５、ＳＤＲＡＭコントローラ１６、及び入出力インターフェイス１７は、互いにバス１８を介して接続されている。また、マルチコアプロセッサ１の外には、外部記憶装置としてのＳＤＲＡＭ１９と、入力装置２０と、出力装置２１とを有している。ＳＤＲＡＭ１９は、ＳＤＲＡＭコントローラ１６に接続され、入力装置２０及び出力装置２１のそれぞれは、入出力インターフェイス１７に接続されている。
【００１４】
なお、マルチコアプロセッサ１は、２つのプロセッサコア１１ａ及び１１ｂを有しているが、３つ以上のプロセッサコアを有していてもよい。また、マルチコアプロセッサ１は、２つのリコンフィギュラブルデバイス１２ａ及び１２ｂを有しているが、３つ以上のリコンフィギュラブルデバイスを有していてもよい。即ち、図１では、２つのプロセッサコア１１ａ及び１１ｂが、２つのリコンフィギュラブルデバイス１２ａ及び１２ｂを共有する例を示しているが、３つ以上のプロセッサコアが、３つ以上のリコンフィギュラブルデバイスを共有してもよい。
【００１５】
リコンフィギュラブルデバイス１２ａ、１２ｂは、回路情報に基づいて、動的に回路構成を再構成可能なデバイスである。この回路情報は、メモリ１５又はＳＤＲＡＭ１９に保持されている。
【００１６】
プロセッサコア１１ａは、キャッシュメモリ２２ａと、リコンフィギュラブル制御部２３ａとを有して構成されている。リコンフィギュラブル制御部２３ａは、制御レジスタ２４ａを有して構成されている。
【００１７】
同様に、プロセッサコア１１ｂは、キャッシュメモリ２２ｂと、リコンフィギュラブル制御部２３ｂとを有して構成されている。リコンフィギュラブル制御部２３ｂは、制御レジスタ２４ｂを有して構成されている。
【００１８】
リコンフィギュラブルデバイス１２ａは、タグ２５ａと、ＢＩＳＴ回路２６ａとを有して構成されている。同様に、リコンフィギュラブルデバイス１２ｂは、タグ２５ｂと、ＢＩＳＴ回路２６ｂとを有して構成されている。
【００１９】
プロセッサコア１１ａは、入力装置２０からの指示に基づいて、メモリ１５、あるいは、ＳＤＲＡＭ１９に格納されているプログラムを実行する。プロセッサコア１１ａは、そのプログラムの命令を読み込み、即ち、フェッチし、フェッチした命令をキャッシュメモリ２２ａに格納する。
【００２０】
リコンフィギュラブル制御部２３ａは、プロセッサコア１１ａがフェッチする命令を常に監視し、その命令がリコンフィギュラブルデバイス１２ａ又は１２ｂにより実行可能であるか否かを判定する。リコンフィギュラブル制御部２３ａは、フェッチされた命令がリコンフィギュラブルデバイス１２ａ又は１２ｂにより実行可能であると判定した場合、該当する回路情報がリコンフィギュラブルデバイス１２ａ又は１２ｂにロードされているか否かを、タグ２５ａ又は２５ｂを参照することにより確認する。ここでは、リコンフィギュラブルデバイス１２ａに回路情報がロードされているものとして説明する。
【００２１】
リコンフィギュラブル制御部２３ａは、回路情報がリコンフィギュラブルデバイス１２ａにロードされている場合、回路情報がロードされているリコンフィギュラブルデバイス１２ａが他のプロセッサコア、例えば、プロセッサコア１１ｂに占有されているか否かを確認する。この他のプロセッサコア１１ｂに占有されていることをロックされているという。他のプロセッサコア１１ｂに占有されているか否かの確認は、リコンフィギュラブル制御部２３ａがロック状態記憶部１３を参照することにより行われる。なお、ロック状態記憶部１３の構成については、後述する図２を用いて詳細に説明する。
【００２２】
他のプロセッサコア１１ｂに占有されていない場合、プロセッサコア１１ａは、ソフトウエア処理を行わず、リコンフィギュラブルデバイス１２ａによるハードウエア処理のみを行う。リコンフィギュラブルデバイス１２ａによる実行を行う期間は、プロセッサコア１１ａは、別のソフトウエア処理を行ってもよい。
【００２３】
回路情報がリコンフィギュラブルデバイス１２ａ及び１２ｂにロードされていない場合、あるいは、ロードされているが他のプロセッサコア１１ｂに占有されている場合、リコンフィギュラブル制御部２３ａは、ロック状態記憶部１３を参照することにより、他のプロセッサコア１１ｂに占有されていないリコンフィギュラブルデバイスを検索する。ここでは、リコンフィギュラブルデバイス１２ｂが他のプロセッサコア１１ｂに占有されていないものとして説明する。
【００２４】
他のプロセッサコア１１ｂに占有されていない、即ち、空いているリコンフィギュラブルデバイス１２ｂがある場合、リコンフィギュラブル制御部２３ａは、リコンフィギュラブルデバイス１２ｂへの回路情報のロード及びリコンフィギュラブルデバイス１２ｂによるハードウエア処理の実行と、プロセッサコア１１ａによるソフトウエア処理の実行とを並行して行い、早く完了した処理の結果を採用する。リコンフィギュラブル制御部２３ａは、回路情報をロードする際は、リコンフィギュラブルデバイス１２ｂをロックし、リコンフィギュラブルデバイス１２ｂを低消費電力モードから通常消費電力モードに切り換えてから回路情報をロードする。空いているリコンフィギュラブルデバイスがない場合、プロセッサコア１１ａによるソフトウエア処理のみを実行する。
【００２５】
タグ２５ａ及び２５ｂのそれぞれは、ロードされている演算回路の識別子が格納されるレジスタである。即ち、このタグ２５ａには、リコンフィギュラブルデバイス１２ａにロードされている演算回路の識別子が格納され、タグ２５ｂには、リコンフィギュラブルデバイス１２ｂにロードされている演算回路の識別子が格納される。例えば、電源投入時のリコンフィギュラブルデバイス１２ａに回路情報が何もロードされていない場合、タグ２５ａに０が格納されている。また、リコンフィギュラブルデバイス１２ａに乗算回路の情報がロードされている場合、タグ２５ａに１が格納されている。リコンフィギュラブル制御部２３ａは、このタグ２５ａを参照することにより、リコンフィギュラブルデバイス１２ａにロードされている演算回路を確認することができる。同様に、リコンフィギュラブル制御部２３ａは、タグ２５ｂを参照することにより、リコンフィギュラブルデバイス１２ｂにロードされている演算回路を確認することができる。
【００２６】
ＢＩＳＴ回路２６ａは、電源投入時にリコンフィギュラブルデバイス１２ａに対して自己テスト、即ち、ＢＩＳＴを行い、例えば、リコンフィギュラブルデバイス１２ａの動作確認、あるいは、リコンフィギュラブルデバイス１２ａの一部の素子の静電容量など経年劣化を表す数値を計測する。ＢＩＳＴ回路２６ａは、このＢＩＳＴの結果を数値によりデバイス状態記憶部１４の対応するアドレスに記録する。同様に、ＢＩＳＴ回路２６ｂは、リコンフィギュラブルデバイス１２ｂのＢＩＳＴを行い、ＢＩＳＴの結果を数値によりデバイス状態記憶部１４の対応するアドレスに記録する。なお、デバイス状態記憶部１４の構成については、後述する図４を用いて詳細に説明する。
【００２７】
ここで、ロック状態記憶部１３の構成について説明する。図２は、ロック状態記憶部の構成の例を説明するための説明図である。なお、図２においては、マルチコアプロセッサ１がリコンフィギュラブルデバイスを複数個、ここでは、リコンフィギュラブルデバイス１２ａ〜１２ｎを有しているものとして説明する。
【００２８】
図２に示すように、ロック状態記憶部１３には、各リコンフィギュラブルデバイス１２ａ〜１２ｎに対応する３ビットのデータが格納される。最下位ビットは、回路情報がロード中であるか否かを示すロード中ビットであり、２ビット目は、演算が実行中であるか否かを示す実行中ビットであり、最上位ビットは、実行中の演算がある処理のまとまりの中で最後の演算であるか否かを示す最終実行ビットである。
【００２９】
ロード中ビットが０の場合、対応するリコンフィギュラブルデバイスに回路情報がロード中でないことを示し、ロード中ビットが１の場合、対応するリコンフィギュラブルデバイスに所定の回路情報がロード中であることを示す。
【００３０】
実行中ビットが０の場合、対応するリコンフィギュラブルデバイスが演算を実行中でないことを示し、実行中ビットが１の場合、対応するリコンフィギュラブルデバイスが所定の演算を実行中であることを示す。
【００３１】
最終実行ビットが０の場合、対応するリコンフィギュラブルデバイスが最後の演算の処理を行っていないことを示し、最終実行ビットが１の場合、対応するリコンフィギュラブルデバイスが最後の演算の処理を行っていることを示す。
【００３２】
図２において、リコンフィギュラブルデバイス１２ａは、所定の回路情報がロード中であることを示している。また、リコンフィギュラブルデバイス１２ｂは、所定の演算を実行中であることを示している。また、リコンフィギュラブルデバイス１２ｃは、どのプロセッサコアにも占有されていないことを示している。また、リコンフィギュラブルデバイス１２ｎは、所定の演算を実行中であり、その実行中の演算が、ある処理のまとまりの中で最後の演算であることを示している。
【００３３】
ロード中ビット又は実行中ビットが１の場合、そのリコンフィギュラブルデバイスが他のプロセッサコアに占有されている、即ち、ロックされていることを示している。そのため、リコンフィギュラブル制御部２３ａは、例えば、リコンフィギュラブルデバイス１２ａのロード中ビット又は実行中ビットを読み出し、読み出した値が１であれば、そのリコンフィギュラブルデバイス１２ａが他のプロセッサコア１１ｂにロックされていることを認識することができる。この場合、リコンフィギュラブル制御部２３ａは、別のリコンフィギュラブルデバイス１２ｂのロード中ビット又は実行中ビットを読み出す。リコンフィギュラブル制御部２３ａは、リコンフィギュラブルデバイスのロード中ビット又は実行中ビットを読み出すことを繰り返し行うことにより、上述したように、空いているリコンフィギュラブルデバイス、即ち、他のプロセッサコアにロックさせていないリコンフィギュラブルデバイスを検索することができる。このように、ロード中ビット及び実行中ビットは、対応するリコンフィギュラブルデバイスが他のプロセッサコアにロックされているか否かを示すロック情報を構成する。
【００３４】
また、リコンフィギュラブル制御部２３ａは、空いているリコンフィギュラブルデバイスを検出した場合、対応するリコンフィギュラブルデバイスのロード中ビットに１を書き込み、回路情報をロードする。リコンフィギュラブル制御部２３ａは、回路情報がロードされたら、対応するロード中ビットに０を書き込み、かつ、実行中ビットに１を書き込み、リコンフィギュラブルデバイスによる演算を実行する。
【００３５】
ロード中ビット又は実行中ビットからのデータの読み出し、及び、ロード中ビット又は実行中ビットへのデータの書き込みは、テストアンドセットにより行う。テストアンドセットとは、あるアドレスからデータの読み出しと書き込みとをアトミックに行う命令である。アトミックとは、読み出しと書き込みとの間に、割り込みが絶対に発生しないことである。
【００３６】
最終実行ビットが１の場合、実行中の演算が、ある処理のまとまりの中で最後の演算であり、現在の処理が完了すると直ちに実行中のリコンフィギュラブルデバイスを開放することができる。そのため、最終実行ビットが１の場合、リコンフィギュラブル制御部２３ａは、現在の処理と並行して、次に実行する処理の回路情報のロードを進めることができる。リコンフィギュラブル制御部２３ａは、現在の処理が完了すると、残りの回路情報をロードし、リコンフィギュラブルデバイスによる演算を実行する。ある処理のまとまりの中で最後の演算であるかは、プログラム中に記述することにより実現する。この最終実行ビットは、対応するリコンフィギュラブルデバイスが最後の演算の処理を行っているか否かを示す最終実行情報を構成する。
【００３７】
図３は、最終実行ビットを１にする処理が記述されているプログラムの例を説明するための説明図である。図３に示すように、プログラム２７は、あるプログラム中に所定の処理を１００回繰り返す処理を示している。この処理中に矢印２８に示すコードを記述し、１００回目の処理の場合、“制御レジスタに１を代入する”というコードを追加する。これにより、制御レジスタ２４ａに１が代入される。リコンフィギュラブル制御部２３ａは、制御レジスタ２４ａに１が代入されると、対応するリコンフィギュラブルデバイスの最終実行ビットに１を書き込む処理を行う。
【００３８】
次に、デバイス状態記憶部１４の構成について説明する。図４は、デバイス状態記憶部の構成の例を説明するための説明図である。なお、図４においては、マルチコアプロセッサ１がリコンフィギュラブルデバイスを複数個、ここでは、リコンフィギュラブルデバイス１２ａ〜１２ｎを有しているものとして説明する。
【００３９】
図４に示すように、デバイス状態記憶部１４には、各リコンフィギュラブルデバイス１２ａ〜１２ｎのそれぞれに対応するデバイスの状態が格納される。デバイスの状態とは、各ＢＩＳＴ回路２６ａ〜２６ｎのそれぞれから得られた数値である。プロセッサコア１１ａは、ＢＩＳＴ完了後、ＢＳＩＴ回路２６ａ〜２６ｎのそれぞれが計測した数値を読み出し、デバイス状態記憶部１４の対応するアドレスに記録する。
【００４０】
また、プロセッサコア１１ａは、その数値が所定のしきい値を超えた場合は、ロック状態記憶部１３の対応するリコンフィギュラブルデバイスのロード中ビット又は実行中ビットに１を記録する。これは、そのリコンフィギュラブルデバイスが使用に耐えないことを意味すると共に、常にロック状態とすることによって、そのリコンフィギュラブルデバイスが誤って使用されることを防ぐことができる。プロセッサコア１１ａは、ＢＩＳＴが完了した後、ロック状態記憶部１３及びデバイス状態記憶部１４に記録された数値を解析し、異常がある場合、出力装置２１を用いて、ユーザに対して警告を発することができる。なお、プロセッサコア１１ａがＢＩＳＴの結果の記録及び記録された数値の解析を行うとして説明したが、他のプロセッサコアがＢＩＳＴの結果の記録及び記録された数値の解析を行ってもよい。
【００４１】
このような、ＢＩＳＴの結果の記録及び記録された数値の解析を行うことにより、リコンフィギュラブルデバイスの致命的な故障を未然に予測し、リコンフィギュラブルデバイスが完全に壊れる前に、不安全な状態を前もってユーザに知らせることができる。なお、所定のしきい値を超えた場合に警告を発するとしたが、図示しないフラッシュメモリに前回のＢＩＳＴの計測結果を記録しておき、今回のＢＩＳＴの計測結果と、フラッシュメモリに記録した前回のＢＩＳＴの計測結果とを比較して、大きく値が異なる場合に警告を発するようにしてもよい。
【００４２】
図５は、リコンフィギュラブルデバイスによる演算の処理の流れの例を示すフローチャートである。この処理は、各プロセッサコアがプログラムに基づく演算を実行する場合に、対応するリコンフィギュラブル制御部によって実行される。図５では、代表して、プロセッサコア１１ａがプログラムに基づく演算を実行する場合に、対応するリコンフィギュラブル制御部２３ａによって実行される処理について説明する。図５の処理は、プロセッサコア１１ａがプログラムを実行する、即ち、ソフトウエア処理を実行する場合に開始される。また、プロセッサコア１１ａは、図５の処理の間、ソフトウエア処理を実行しているものとする。
【００４３】
まず、リコンフィギュラブル制御部２３ａは、プロセッサコア１１ａがフェッチする命令を監視し、実行すべき演算の回路情報が用意されているか否かを判定する（ステップＳ１）。実行すべき演算の回路情報が用意されていない場合、ＮＯとなり、ステップＳ１に戻る。実行すべき演算の回路情報が用意されている場合、ＹＥＳとなり、リコンフィギュラブル制御部２３ａは、いずれかのリコンフィギュラブルデバイスに実行すべき演算の回路情報がロードされているか否かを判定する（ステップＳ２）。この処理は、リコンフィギュラブル制御部２３ａがタグ２５ａ及び２５ｂを参照することにより実行される。実行すべき演算の回路情報がロードされている場合、ＹＳＥとなり、リコンフィギュラブル制御部２３ａは、実行すべき演算の回路情報がロードされているリコンフィギュラブルデバイスが演算を実行中か否かを判定する（ステップＳ３）。この処理は、リコンフィギュラブル制御部２３ａがロック状態記憶部１３のロード中ビット及び実行中ビットを参照することにより実行される。リコンフィギュラブルデバイスが演算を実行中でない場合、ＮＯとなり、リコンフィギュラブル制御部２３ａは、そのリコンフィギュラブルデバイスの実行中ビットを１にし（ステップＳ４）、ハードウエア処理、即ち、リコンフィギュラブルデバイスによる演算を実行させる（ステップＳ５）。このように、実行すべき演算の回路情報がリコンフィギュラブルデバイスにロードされており、そのリコンフィギュラブルデバイスが実行中でない場合、リコンフィギュラブルデバイスによる演算のみが実行される。なお、リコンフィギュラブルデバイスによる演算が実行されている間、プロセッサコア１１ａは、別のソフトウエア処理を行ってもよい。別の処理とリコンフィギュラブルデバイスによる演算の実行とが完了したら、リコンフィギュラブル制御部２３ａは、実行中ビットを０にし（ステップＳ６）、ステップＳ１に戻り、元のソフトウエア処理を続行する。
【００４４】
一方、ステップＳ２において、実行すべき演算の回路情報がロードされていない場合、あるいは、ステップＳ３において、リコンフィギュラブルデバイスが演算を実行中の場合、リコンフィギュラブル制御部２３ａは、空いているリコンフィギュラブルデバイスがあるか否かを判定する（ステップＳ７）。空いているリコンフィギュラブルデバイスがある場合、ＹＥＳとなり、リコンフィギュラブル制御部２３ａは、そのリコンフィギュラブルデバイスのロード中ビットを１にして（ステップＳ８）、空いているリコンフィギュラブルデバイスに実行すべき演算の回路情報をロードし、再構成する（ステップＳ９）。リコンフィギュラブル制御部２３ａは、実行すべき演算の回路情報のロードが完了すると、対応するリコンフィギュラブルデバイスのロード中ビットを０にし、かつ、実行中ビットを１にして（ステップＳ１０）、再構成されたリコンフィギュラブルデバイスによる演算を実行させる（ステップＳ１１）。リコンフィギュラブル制御部２３ａは、プロセッサコア１１ａによる演算の実行とリコンフィギュラブルデバイスによる演算とを並行に行い、並行して行われた２つの演算の実行の結果のうち、実行が早く終わった方の演算の実行の結果を採用する（ステップＳ１２）。リコンフィギュラブルデバイスによる演算を実行した場合は、リコンフィギュラブル制御部２３ａは、実行中ビットを０にして（ステップＳ１３）、ステップＳ１に戻る。
【００４５】
ステップＳ７において、空いているリコンフィギュラブルデバイスがない場合、ＮＯとなり、ステップＳ１２に進む。ステップＳ７において、空いているリコンフィギュラブルデバイスがない場合は、リコンフィギュラブルデバイスによるハードウエア処理が行われず、ソフトウエア処理のみが行われる。そのため、ステップＳ１２においては、必ずソフトウエア処理の結果が採用される。また、ステップＳ１３においては、リコンフィギュラブルデバイスが使用されていないため、実行中ビットを０にする処理は行われない。
【００４６】
以上の処理により、実行すべき演算の回路情報がリコンフィギュラブルデバイスにロードされており、そのリコンフィギュラブルデバイスが他のプロセッサコアに占有されていない場合、リコンフィギュラブル制御部は、リコンフィギュラブルデバイスによる演算、即ち、処理速度が速いハードウエア処理のみを実行する。一方、実行すべき演算の回路情報がロードされていない場合、あるいは、実行すべき演算の回路情報がリコンフィギュラブルデバイスにロードされているが、そのリコンフィギュラブルデバイスが演算を実行中の場合、リコンフィギュラブル制御部は、ソフトウエア処理とリコンフィギュラブルデバイスの再構成を含むハードウエア処理とを並行して行い、並行して行われた２つの処理のうち、処理が早く終わった方の処理の結果を、実行すべき演算の処理結果として採用する制御を行う。この結果、従来のように、ソフトウエア処理とハードウエア処理とのどちらによる処理が早いかを判定することなく、常に、早く終わった処理の結果を採用することができる。
【００４７】
図６と図７は、リコンフィギュラブルデバイスによる演算と並行して、新しい回路情報をロードする流れの例を示すフローチャートである。図６において、図５と同一の処理については同一の符号を付して説明を省略する。
【００４８】
ステップＳ５において、リコンフィギュラブルデバイスによる演算を実行し、その演算は最後か否かが検出される（ステップＳ２１）。最後の演算ではない場合、ＮＯとなり、ステップＳ５に戻り、リコンフィギュラブルデバイスによる演算を続行する。最後の演算である場合、ＹＥＳとなり、リコンフィギュラブル制御部２３ａは、対応するリコンフィギュラブルデバイスの最終実行ビットを１にする（ステップＳ２２）。別の処理とリコンフィギュラブルデバイスによる演算の実行とが完了したら、リコンフィギュラブル制御部２３ａは、最終実行ビット及び実行中ビットを０にする（ステップＳ２３）。
【００４９】
ステップＳ７において、空いているリコンフィギュラブルデバイスがある場合、ステップＳ８〜ステップＳ１２の処理が実行され後、実行中ビットを０にする（ステップＳ２４）。
【００５０】
一方、ステップＳ７において、空いているリコンフィギュラブルデバイスがない場合、図７に移り、リコンフィギュラブル制御部２３ａは、最終実行ビットが１のリコンフィギュラブルデバイスがあるか否かを判定する（ステップＳ２５）。最終実行ビットが１のリコンフィギュラブルデバイスがある場合、ＹＥＳとなり、リコンフィギュラブル制御部２３ａは、最終実行ビットが１のリコンフィギュラブルデバイスを獲得する（ステップＳ２６）。リコンフィギュラブル制御部２３ａは、ロード中ビットを１にし（ステップＳ２７）、リコンフィギュラブルデバイスに実行すべき演算の回路情報を途中までロードする（ステップＳ２８）。リコンフィギュラブル制御部２３ａは、現在のリコンフィギュラブルデバイスの演算が終了するまで待ち（ステップＳ２９）、リコンフィギュラブルデバイスに実行すべき演算の回路情報を完全にロードし、再構成する（ステップＳ３０）。リコンフィギュラブル制御部２３ａは、ロード中ビットを０にし、かつ、実行中ビットを１にし（ステップＳ３１）、再構成されたリコンフィギュラブルデバイスによる演算、即ち、ハードウエア処理を実行する（ステップＳ３２）。リコンフィギュラブル制御部２３ａは、ソフトウエア処理とハードウエア処理とで早く終わった処理の結果を採用する（ステップＳ３３）。リコンフィギュラブル制御部２３ａは、リコンフィギュラブルデバイスを使用していた場合は、実行中ビットを０にし（ステップＳ３４）、ステップＳ１に戻る（ステップＳ３５）。
【００５１】
ステップＳ２５において、空いているリコンフィギュラブルデバイスがない場合、ＮＯとなり、ステップＳ３３に進む。ステップＳ２５において、空いているリコンフィギュラブルデバイスがない場合は、リコンフィギュラブルデバイスによるハードウエア処理が行われず、ソフトウエア処理のみが行われる。そのため、ステップＳ３３においては、必ずソフトウエア処理の結果が採用される。また、ステップＳ３４においては、リコンフィギュラブルデバイスが使用されていないため、実行中ビットを０にする処理は行われない。
【００５２】
以上の処理により、リコンフィギュラブル制御部２３ａは、最後の演算の処理を行っているリコンフィギュラブルデバイスがある場合、そのリコンフィギュラブルデバイスに回路情報の部分的なロードし、現在の演算が終了した後に残りの回路情報をロードする。この結果、リコンフィギュラブルデバイスを効率的に利用することができると共に、低消費電力モードと通常消費電力モードとの切り換えによるオーバーヘッドを抑えることもできるという効果を有する。
【００５３】
図８は、ＢＩＳＴの処理の流れの例を示すフローチャートである。このＢＩＳＴの処理は、マルチコアプロセッサ１に電源が投入されることにより開始される。
【００５４】
まず、ＢＩＳＴ回路２６ａ、２６ｂは、対応するリコンフィギュラブルデバイス１２ａ、１２ｂのＢＩＳＴを実行する（ステップＳ４１）。ＢＩＳＴで得られた数値をデバイス状態記憶部１４の対応するアドレスに記録する（ステップＳ４２）。次に、ステップＳ４２において得られた数値が、異常な数値か否かが判定される（ステップＳ４３）。ステップＳ４３において、異常な数値と判定された場合、ＹＳＥとなり、異常があるリコンフィギュラブルデバイスロード中ビット又は実行中ビットを１にして（ステップＳ４４）、処理を終了する。ステップＳ４３において、異常な数値でないと判定された場合、ＮＯとなり、処理を終了する。
【００５５】
以上の処理により、ＢＩＳＴの結果から得られた数値が異常な場合、即ち、リコンフィギュラブルデバイスに異常がある場合、異常があるリコンフィギュラブルデバイスロード中ビット又は実行中ビットを１にし、異常があるリコンフィギュラブルデバイスをロックにする。この結果、異常があるリコンフィギュラブルデバイスの使用を禁止することができる。また、異常があった場合、出力装置２１にその異常を表示することにより、異常があるリコンフィギュラブルデバイスをユーザに通知することもできる。
【００５６】
以上のように、マルチコアプロセッサ１は、プロセッサコア１１ａによる処理とリコンフィギュラブルデバイス１２ａによる処理とを並行に行い、処理が早く終わった方の処理の結果を採用するようにした。この結果、従来のように、ソフトウエア処理あるいはハードウエア処理を実行するかを選択するための時間を必要とせず、処理速度を速くすることが可能となる。
【００５７】
よって、本実施の形態のマルチコアプロセッサによれば、ソフトウエア処理とハードウエアの再構成を含むハードウエア処理とを並行して実行し、早く終わった処理の結果を採用することにより、処理速度を速くすることができる。
【００５８】
なお、本明細書における各フローチャート中の各ステップは、その性質に反しない限り、実行順序を変更し、複数同時に実行し、あるいは実行毎に異なった順序で実行してもよい。
【００５９】
本発明は、上述した実施の形態に限定されるものではなく、本発明の要旨を変えない範囲において、種々の変更、改変等が可能である。
【図面の簡単な説明】
【００６０】
【図１】本発明の一実施の形態に係るマルチコアプロセッサの構成を示すブロック図である。
【図２】ロック状態記憶部の構成の例を説明するための説明図である。
【図３】最終実行ビットを１にする処理が記述されているプログラムの例を説明するための説明図である。
【図４】デバイス状態記憶部の構成の例を説明するための説明図である。
【図５】リコンフィギュラブルデバイスによる演算の処理の流れの例を示すフローチャートである。
【図６】リコンフィギュラブルデバイスによる演算と並行して、新しい回路情報をロードする流れの例を示すフローチャートである。
【図７】リコンフィギュラブルデバイスによる演算と並行して、新しい回路情報をロードする流れの例を示すフローチャートである。
【図８】ＢＩＳＴの処理の流れの例を示すフローチャートである。
【符号の説明】
【００６１】
１…マルチコアプロセッサ、１１ａ，１１ｂ…プロセッサコア、１２ａ，１２ｂ…リコンフィギュラブルデバイス、１３…ロック状態記憶部、１４…デバイス状態記憶部、１５…メモリ、１６…ＳＤＲＡＭコントローラ、１７…入出力インターフェイス、１８…バス、１９…ＳＤＲＡＭ、２０…入力装置、２１…出力装置、２２ａ，２２ｂ…キャッシュメモリ、２３ａ，２３ｂ…リコンフィギュラブル制御部、２４ａ，２４ｂ…制御レジスタ、２５ａ，２５ｂ…タグ、２６ａ，２６ｂ…ＢＩＳＴ回路、２７…プログラム。
【図１】
2010044578.tif 000003
【図２】
2010044578.tif 000004
【図３】
2010044578.tif 000005
【図４】
2010044578.tif 000006
【図５】
2010044578.tif 000007
【図６】
2010044578.tif 000008
【図７】
2010044578.tif 000009
【図８】
2010044578.tif 000010