(57)【要約】【課題】再構成可能な回路を含み、特定の処理を実行する際、高速な処理が可能な情報処理装置及び情報処理方法を提供する。【解決手段】記憶部１２ａは特定の処理に関する回路を示す第１の情報と第１の情報が示す回路による処理時間がデータに依存するかを示す第２の情報を記憶する。第１のプロセッサ１１は特定のコールを認識すると第１の情報を参照し、リコンフィギュラブルデバイス１２にてコールが実行可能か判断し、出来ないと判断した場合第１のプロセッサ１１にて処理を実行して処理結果を出力し、リコンフィギュラブルデバイス１２にて出来ると判断した場合、第２の情報を参照し、依存しない場合はリコンフィギュラブルデバイス１２にて処理を実行して結果を出力し、依存する場合は第１のプロセッサ１１とリコンフィギュラブルデバイス１２を同時に処理させ、早く処理が終了した方の結果を出力する。【選択図】      図１
2009163328.tif 000002
【特許請求の範囲】
【請求項１】
第１のプロセッサと、
前記第１のプロセッサに接続され、回路構成を再構成できるリコンフィギュラブルデバイスと、
前記リコンフィギュラブルデバイス内に設けられ、特定の処理に関する回路構成を示す第１の情報と、前記第１の情報が示す回路による前記特定の処理の処理時間が、データに依存するか否かを示す第２の情報を記憶する記憶部とを具備し、
前記第１のプロセッサは、前記特定の処理のコールを認識すると前記記憶部に記憶された前記第１の情報を参照し、前記リコンフィギュラブルデバイスにて前記コールが実行可能かどうか判断し、前記コールを実行出来ないと判断した場合、前記第１のプロセッサにて処理を実行して処理結果を出力し、前記リコンフィギュラブルデバイスにて前記コールを実行できると判断した場合、前記記憶部に記憶された前記第２の情報を参照し、データに依存しないと判断した場合は前記リコンフィギュラブルデバイスにて前記特定の処理を実行して結果を出力し、データに依存すると判断した場合は前記第１のプロセッサと前記リコンフィギュラブルデバイスを同時に処理させ、早く処理が終了した方の結果を出力することを特徴とする情報処理装置。
【請求項２】
前記第１のプロセッサと前記リコンフィギュラブルデバイスに接続された第２のプロセッサとを更に具備し、
前記第２のプロセッサは、前記第１のプロセッサが呼び出した前記第１の情報に対する不一致回数が規定値以上である場合、前記第１の情報に基づく回路構成を前記リコンフィギュラブルデバイス内に構成させることを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記第２のプロセッサは、前記第１のプロセッサが呼び出した前記第１の情報の呼び出し順序を記憶し、記憶した前記順序と前記第１のプロセッサにより呼び出される前記第１の情報を照合することにより、次に呼び出される前記第１の情報の順序を予測し、予測した順序に応じた再構成を前記リコンフィギュラブルデバイスに指示することを特徴とする請求項２記載の情報処理装置。
【請求項４】
第１のプロセッサは、特定の処理のコールを認識した場合、リコンフィギュラブルデバイスの記憶部に記憶された前記特定の処理に関する回路構成を示す第１の情報を参照して前記リコンフィギュラブルデバイスにて前記コールが実行可能かどうか判断し、
前記コールを実行出来ないと判断した場合、前記第１のプロセッサにて処理を実行して処理結果を出力し、
前記リコンフィギュラブルデバイスにて前記コールを実行できると判断した場合、前記記憶部に記憶された前記第１の情報が示す回路による前記特定の処理の処理時間がデータに依存するか否かを示す第２の情報を参照し、データに依存しない場合は前記リコンフィギュラブルデバイスにて前記特定の処理を実行して結果を出力し、
データに依存する場合は前記第１のプロセッサと前記リコンフィギュラブルデバイスを同時に処理させ、早く処理が終了した方の結果を出力することを特徴とする情報処理装置の制御方法。
【請求項５】
前記第１のプロセッサと前記リコンフィギュラブルデバイスに接続された第２のプロセッサとを更に具備し、
前記第２のプロセッサは、前記第１のプロセッサが呼び出した前記第１の情報に対するリジェクト回数が規定値以上である場合、前記第１の情報に基づく回路構成を前記リコンフィギュラブルデバイス内に構成させることを特徴とする請求項４記載の情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばプロセッサと、回路構成を変更可能なリコンフィギュラブル回路とを含む情報処理装置及びその制御方法に関する。
【背景技術】
【０００２】
再構成可能なロジック回路を用いて演算処理の高速化を図るデータ処理装置が開発されている。従来の再構成可能なロジック回路を用いたデータ処理装置として、例えば再構成可能なハードウェア（以下、ＨＷと略称する）に、加速したい処理を実現できるように予め再構成しておく技術が開発されている（例えば特許文献１を参照）。しかし、このデータ処理装置は、再構成可能なＨＷは使いたいときだけ使用可能にするという方法であり、再構成可能なＨＷを動的に変更できない。また、加速したい機能が複数あるとき、再構成可能なＨＷを複数用意する必要があり、回路規模が増大する。
【０００３】
また、動的にＨＷの再構成が可能とされたデータ処理装置が開発されている（例えば特許文献２を参照）。このデータ処理装置は、特定の命令が実行された場合、ＨＷの再構成後にＨＷにて処理を実行する場合と、ＣＰＵで全ての処理を実行する場合とでどちらが速いかをＣＰＵにて判定する。この結果、ＨＷの再構成後にＨＷにて処理を実行する場合の方が速いと判断した場合、ＣＰＵによりＨＷの再構成の指示が出力され、ＣＰＵによるデータ処理とＨＷの再構成とを並行して実行する。ＨＷの再構成完了後、ＣＰＵは処理の途中結果等をＨＷへ渡して処理実行のための準備をし、ＨＷに処理を実行させる。ＣＰＵはＨＷに処理を実行させている間、並行して他の処理を実行することが可能である。
【０００４】
このデータ処理装置の場合、ＣＰＵの処理とＨＷの処理を並行して実行することができ、ＨＷの再構成に要する時間が処理全体の所要時間に遅延をもたらすことを抑制できる。
【０００５】
しかし、このデータ処理装置において、ＨＷの再構成後にＨＷにて処理を実行する場合と、ＣＰＵで全ての処理を実行する場合のどちらが速いかを判定することが容易ではない場合、この判定をしている期間、ＣＰＵによる処理が進まなくなる。特に、処理に要する時間がデータに依存する場合、実行前にどちらの処理が速いかを判定することが難しく、一層処理の遅延をきたす事となる。
【特許文献１】特許第３３４０３４３号公報
【特許文献２】特許第３７２３７７５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明は、再構成可能な回路を含み、特定の処理を実行する際、高速な処理が可能な情報処理装置及びその制御方法を提供しようとするものである。
【課題を解決するための手段】
【０００７】
本発明の情報処理装置の態様は、第１のプロセッサと、前記第１のプロセッサに接続され、回路構成を再構成できるリコンフィギュラブルデバイスと、前記リコンフィギュラブルデバイス内に設けられ、特定の処理に関する回路構成を示す第１の情報と、前記第１の情報が示す回路による前記特定の処理の処理時間が、データに依存するか否かを示す第２の情報を記憶する記憶部とを具備し、前記第１のプロセッサは、前記特定の処理のコールを認識すると前記記憶部に記憶された前記第１の情報を参照し、前記リコンフィギュラブルデバイスにて前記コールが実行可能かどうか判断し、前記コールを実行出来ないと判断した場合、前記第１のプロセッサにて処理を実行して処理結果を出力し、前記リコンフィギュラブルデバイスにて前記コールを実行できると判断した場合、前記記憶部に記憶された前記第２の情報を参照し、データに依存しないと判断した場合は前記リコンフィギュラブルデバイスにて前記特定の処理を実行して結果を出力し、データに依存すると判断した場合は前記第１のプロセッサと前記リコンフィギュラブルデバイスを同時に処理させ、早く処理が終了した方の結果を出力することを特徴とする。
【０００８】
本発明の情報処理装置の制御方法の態様は、第１のプロセッサは、特定の処理のコールを認識した場合、リコンフィギュラブルデバイスの記憶部に記憶された前記特定の処理に関する回路構成を示す第１の情報を参照して前記リコンフィギュラブルデバイスにて前記コールが実行可能かどうか判断し、前記コールを実行出来ないと判断した場合、前記第１のプロセッサにて処理を実行して処理結果を出力し、前記リコンフィギュラブルデバイスにて前記コールを実行できると判断した場合、前記記憶部に記憶された前記第１の情報が示す回路による前記特定の処理の処理時間がデータに依存するか否かを示す第２の情報を参照し、データに依存しない場合は前記リコンフィギュラブルデバイスにて前記特定の処理を実行して結果を出力し、データに依存する場合は前記第１のプロセッサと前記リコンフィギュラブルデバイスを同時に処理させ、早く処理が終了した方の結果を出力することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、再構成可能な回路を含み、特定の処理を実行する際、高速な処理が可能な情報処理装置及びその制御方法を提供できる。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の実施の形態について、図面を参照して説明する。
【００１１】
（実施形態）
先ず、図１を用いて概略的に本実施形態の構成を説明する。
【００１２】
第１のプロセッサ１１は例えばＡＬＵ(arithmetic and logic unit)１１ａを具備している。第１のプロセッサ１１はリコンフィギュラブルデバイス１２に接続されている。第１のプロセッサ１１はインターフェース（以下Ｉ／Ｆと略称する）１４を介してバス１５に接続され、リコンフィギュラブルデバイス１２はＩ／Ｆ１６を介してバス１５に接続されている。リコンフィギュラブルデバイス１２には、例えば記憶部としてのステータスレジスタ１２ａが設けられている。ステータスレジスタ１２ａには、リコンフィギュラブルデバイス１２内の回路構成を示す識別情報としてのコンフィグＩＤと、その設定された回路による処理時間がデータに依存するか否かを示すフラグ（ＦＬＧ）が記憶されている。
【００１３】
第２のプロセッサ１３とメインメモリ１７とＤＭＡＣ(Direct Memory Access Controller)１８はバス１５に接続され、ＤＭＡＣ１８は第２のプロセッサ１３からの指令を受けて、メインメモリ１７の動作を制御する。
【００１４】
第１のローカルメモリ１９は第１のプロセッサ１１に接続され、Ｉ／Ｆ１４を介してバス１５に接続されている。第２のローカルメモリ２０は第１のプロセッサ１１とリコンフィギュラブルデバイス１２に接続され、Ｉ／Ｆ１４を介してバス１５に接続されている。第１のローカルメモリ１９は、例えば第１のプロセッサ１１のプログラム及びデータ等を記憶する。第２のローカルメモリ２０は、例えば第１のプロセッサ１１とリコンフィギュラブルデバイス１２で共有するデータ等を保存する。
【００１５】
例えばＤＳＰ(Digital Signal Processor)２１とＶＬＩＷ(Very Long Instruction Word)型コプロセッサ２２はそれぞれ第２のローカルメモリ２０に接続されている。
【００１６】
ＳＤＲＡＭ(Synchronous Dynamic Random Access Memory)２３はＳＤＲＡＭＣ(Synchronous Dynamic Random Access Memory Controller)２４を介してバス１５に接続されている。周辺装置２５、２６は、バス２７に接続されている。周辺装置２５、２６は例えばシリアルＩ／ＦやＵＡＲＴ(Universal asynchronous receiver transmitter)等である。バス２７とバス１５はバスブリッジ２８に接続されている。
【００１７】
前記第１のプロセッサ１１は例えばメディア処理プロセッサであり、ソフトウェア（以下、ＳＷと略称する）により特定の処理、例えば関数処理を実行可能とされている。関数処理は複数命令の集合であり、例えば関数処理サブルーチンである。第１のプロセッサ１１は、関数処理がコールされると、ステータスレジスタ１２ａからフラグとコンフィグＩＤを参照する。第１のプロセッサ１１は、コンフィグＩＤよりリコンフィギュラブルデバイス１２上に設定されている関数処理に関する回路構成が何かを判断する。関数処理を実行する場合、コンフィグＩＤとフラグによって、リコンフィギュラブルデバイス１２かＳＷのどちらか一方、もしくは同時に実行させる。
【００１８】
第１のプロセッサ１１とリコンフィギュラブルデバイス１２の少なくとも一方を使って関数処理を実行する場合で、処理に必要なデータはメインメモリ１７からバス１５、Ｉ／Ｆ１４を介して第２のローカルメモリ２０に転送される。第１のプロセッサ１１とリコンフィギュラブルデバイス１２の少なくとも一方は、第２のローカルメモリ２０よりデータを読み出し、関数処理を実行する。第１のプロセッサ１１は、リコンフィギュラブルデバイス１２が処理を実行している場合において、リコンフィギュラブルデバイス１２からの割り込み要求（Interrupt Request:以下、ＩＲＱと略称する）を受信した場合、リコンフィギュラブルデバイス１２から処理結果を回収する。
【００１９】
リコンフィギュラブルデバイス１２は、例えば外部から与えられるデータに基づき内部構成が変更できる回路である。リコンフィギュラブルデバイス１２は、第２のプロセッサ１３からの再構成指令により例えば関数処理に関する回路を再構成する。リコンフィギュラブルデバイス１２は、設定されている回路を示す第１の情報であるコンフィグＩＤをステータスレジスタ１２ａに記憶する。また、あるコンフィグＩＤが示す回路による関数処理に要する時間がデータに依存する場合、第２の情報であるフラグをステータスレジスタ１２ａに設定する。リコンフィギュラブルデバイス１２が関数処理を実行し、完了した場合、第１のプロセッサ１１にＩＲＱを出力する。
【００２０】
第２のプロセッサ１３は例えば本発明の回路全体の制御を行い、再構成処理も兼ねる全体制御ＣＰＵである。第２のプロセッサ１３は、第１のプロセッサ１１によるステータスレジスタ１２ａへのコンフィグＩＤの呼び出しを監視する。コンフィグＩＤが第１のプロセッサ１１に呼び出され、ステータスレジスタ１２ａに設定されているコンフィグＩＤと不一致の場合で、その不一致の回数が規定値以上、例えば数回続いている場合、第２のプロセッサ１３は不一致の回数が規定値以上のコンフィグＩＤに基づく回路をリコンフィギュラブルデバイス１２に設定する。第２のプロセッサ１３は、リコンフィギュラブルデバイス１２を再構成する都度、ステータスレジスタ１２ａのコンフィグＩＤとフラグの設定を書き替える。第２のプロセッサ１３は、システム起動時は、最も使用頻度が高いと考えられる回路を予めリコンフィギュラブルデバイス１２に設定しておく。
【００２１】
メインメモリ１７は例えばリコンフィギュラブルデバイス１２の再構成に使用されるコンフィグデータ等を記憶している。
【００２２】
次に、図１、図２、図３を用いて本実施形態を第１のプロセッサ１１の動作を中心として具体的に説明する。
【００２３】
第１のプロセッサ１１が特定の処理として関数コール（例えば関数処理を実行するサブルーチンのコール）を認識した場合（Ｓ１０１）、第１のプロセッサ１１はリコンフィギュラブルデバイス１２に設けられたステータスレジスタ１２ａに設定されているコンフィグＩＤを参照する（Ｓ１０２）。この参照したコンフィグＩＤに基づき、リコンフィギュラブルデバイス１２に設定されている回路構成が、その関数を実行可能かどうか判断する（Ｓ１０３）。
【００２４】
回路構成が関数を実行可能である場合、第１のプロセッサ１１はステータスレジスタ１２ａより、関数処理にかかる時間がデータに依存するかどうか、つまりフラグが設定されているか否かを判断する（Ｓ１０４）。
【００２５】
フラグが設定されていない場合、第１のプロセッサ１１は関数の実行処理をリコンフィギュラブルデバイス１２に実行させる（Ｓ１０５）。
【００２６】
リコンフィギュラブルデバイス１２は、処理が完了した場合、第１のプロセッサ１１にＩＲＱを出力する（Ｓ１０６）。第１のプロセッサ１１はリコンフィギュラブルデバイス１２からのＩＲＱを受けた場合、リコンフィギュラブルデバイス１２から処理結果を回収し、出力する（Ｓ１０７）。
【００２７】
ステップＳ１０４において、フラグが設定されていると判断された場合、リコンフィギュラブルデバイス１２と第１のプロセッサ１１のＳＷで関数処理を実行する（Ｓ１０８）。リコンフィギュラブルデバイス１２から第１のプロセッサ１１へＩＲＱが出力された場合（Ｓ１０９）、第１のプロセッサ１１はＳＷ処理を停止し（Ｓ１１０）、リコンフィギュラブルデバイス１２から結果を回収し、出力する（Ｓ１１１）。
【００２８】
一方、リコンフィギュラブルデバイス１２とＳＷで関数処理を実行している状態において、リコンフィギュラブルデバイス１２からのＩＲＱが出力される前にＳＷ処理が完了した場合（Ｓ１１２）、第１のプロセッサ１１はリコンフィギュラブルデバイス１２の関数処理を停止させ（Ｓ１１３）、ＳＷ処理による結果を出力する（Ｓ１１４）。
【００２９】
ところで、第２のプロセッサ１３は第１のプロセッサ１１のステータスレジスタ１２ａへのアクセス状況を監視している。第２のプロセッサ１３はステップＳ１０３において第１のプロセッサ１１が呼び出すコンフィグＩＤがステータスレジスタ１２ａに記憶されたコンフィグＩＤと不一致であると判断した場合、図３で示すように、その不一致回数が規定値以上かどうかを判断する（Ｓ２０１）。不一致回数が規定値に達しない場合、第１のプロセッサ１１はＳＷにより関数処理を実行し、結果を出力する（Ｓ２０２）。不一致回数が例えば規定回数（規定値）以上続いた場合、第２のプロセッサ１３は、同じコンフィグＩＤが呼び出される確率が高いと判断し、このコンフィグＩＤに対応するコンフィグデータをメインメモリ１７からリコンフィギュラブルデバイス１２に供給し、リコンフィギュラブルデバイス１２における回路の設定を開始する（Ｓ２０３）。第１のプロセッサ１１はＳＷにより関数処理を実行し、結果を出力する（Ｓ２０２）。ＳＷによる処理実行中に、リコンフィギュラブルデバイス１２は供給されたコンフィグデータに基づいて回路を再構成する（Ｓ２０４）。第２のプロセッサ１３は再構成した回路に基づいてコンフィグＩＤとフラグをステータスレジスタ１２ａに設定する（Ｓ２０５）。
【００３０】
上記実施形態によれば、リコンフィギュラブルデバイス１２は、ステータスレジスタ１２ａを有し、このステータスレジスタ１２ａは、リコンフィギュラブルデバイス１２に設定された関数処理に関する回路構成を示すコンフィグＩＤと、関数処理に関する回路構成の処理時間がデータに依存することを示すフラグとを記憶する。第１のプロセッサ１１は、関数処理のコールを認識するとコンフィグＩＤとフラグを判別し、第１のプロセッサ１１とリコンフィギュラブルデバイス１２の処理を切り替えている。従って、リコンフィギュラブルデバイス１２の処理時間と第１のプロセッサ１１によるＳＷの処理時間を判定したり、リコンフィギュラブルデバイス１２を再構成すべきかどうかを判断したりする必要がなく、コンフィグＩＤとフラグの判別のみにより、第１のプロセッサ１１とリコンフィギュラブルデバイス１２のうちのいずれかに処理を実行させることができる。しかも、第１のプロセッサ１１とリコンフィギュラブルデバイス１２の両方により処理を実行させた場合、早く終了した処理結果を利用している。このため、処理の高速化が可能である。
【００３１】
また、リコンフィギュラブルデバイス１２の再構成をすべきかどうかや、再構成の指令は第２のプロセッサ１３が行っている。このため、第１のプロセッサ１１はリコンフィギュラブルデバイス１２の再構成に時間を割く必要がない。したがって、システム全体の性能の低下を防止できる。
【００３２】
更に、第２のプロセッサ１３は、第１のプロセッサ１１とリコンフィギュラブルデバイス１２との間のデータをモニタし、第１のプロセッサ１１により呼び出されるコンフィグＩＤとステータスレジスタ１２ａ内に設定されているコンフィグＩＤが不一致であり、且つ同一のコンフィグＩＤが複数回呼び出された場合、リコンフィギュラブルデバイス１２を再構成している。このため、同一関数コールが複数回行われた場合、そのコンフィグＩＤに対応して再構成されたリコンフィギュラブルデバイス１２を用いて処理が実行されるため、処理を高速化することが可能である。
【００３３】
また、リコンフィギュラブルデバイス１２と、第２のプロセッサ１３、及び第１のプロセッサ１１の間に複雑な通信機構が設けられていない。このため、システム構成の単純化を図ることができ、拡張性に優れ、バグが少ないシステムを構築することが可能である。
次に上記実施形態の変形例について説明する。変形例において第２のプロセッサ１３は、第１のプロセッサ１１がこれまでに呼び出したコンフィグＩＤの順序（パターン）、つまり、これまでに実行された関数の順序を例えばメインメモリ１７に記憶しておき、呼び出されるコンフィグＩＤのパターンをパターンマッチング等で検出する。第２のプロセッサ１３は、マッチングを取ることで、次に呼び出されるコンフィグＩＤを予測する。例えば、第１のプロセッサ１１によってＡ、Ｂ、ＣというコンフィグＩＤがＡ，Ｂ、Ｃという順序で呼び出され、ステータスレジスタ１２ａに設定されているコンフィグＩＤと不一致だった場合で、例えばＡというコンフィグＩＤが呼び出された場合、ＳＷにてＡを処理している間に第２のプロセッサ１３は次がＢであると推測し、Ａの処理中にリコンフィギュラブルデバイス１２にＢの再構成を指示する。
【００３４】
上記実施形態の変形例によれば、第２のプロセッサ１３が、それまでに実行した関数のパターンを記憶し、その後実行された関数と記憶されたパターンとのマッチングを取ることにより次に実行される関数を予測し、リコンフィギュラブルデバイス１２に予測に沿った関数を実装する再構成の指令を出力する。これにより、効率的にリコンフィギュラブルデバイス１２の再構成を実行することが可能となり、関数処理においてリコンフィギュラブルデバイス１２を効率的に活用することが可能である。
【００３５】
上記実施形態は関数処理について説明した。しかし、これに限定されるものではなく、例えば特定の命令を処理する場合にも本実施形態を適用することが可能である。
【図面の簡単な説明】
【００３６】
【図１】本発明の実施形態の情報処理装置を示す構成図。
【図２】図１に示す情報処理装置の動作を示すフローチャート。
【図３】図３は、図２に示すフローチャートに続く処理を示すフローチャート。
【符号の説明】
【００３７】
１１…第１のプロセッサ、１２…リコンフィギュラブルデバイス１２ａ…ステータスレジスタ、１３…第２のプロセッサ。
【図１】
2009163328.tif 000003
【図２】
2009163328.tif 000004
【図３】
2009163328.tif 000005