(57)【要約】  再構成対象となる一連の処理の実行中に、該一連の処理うちソフトウェアによって実行中の一部の処理の機能を実現する論理回路をハードウェア上に構築し、一部の処理の実行を、ソフトウェアによる実行からハードウェア上に構築された論理回路による実行に切り替える。これを、ソフトウェアによって実行中の処理がなくなるまで段階的におこなうことにより、ハードウェアの再構成にかかるオーバーヘッドを削減しつつ、出力のレスポンスの向上および低消費電力を実現する。
2009022418.tif 000002
【特許請求の範囲】
【請求項１】
再構成対象となる一連の処理の実行をソフトウェアからハードウェアに段階的に切り替えさせる動的再構成プログラムであって、
前記一連の処理のうち前記ソフトウェアによって実行中の一部の処理を検出させる検出工程と、
前記検出工程によって検出された一部の処理の機能を実現する論理回路を前記ハードウェア上に構築させる構築工程と、
前記構築工程によって前記論理回路が構築された結果、前記一部の処理の実行を、前記ソフトウェアによる実行から前記ハードウェア上に構築された論理回路による実行に切り替えさせる切替工程と、
をコンピュータに実行させることを特徴とする動的再構成プログラム。
【請求項２】
前記切替工程によって切り替えられた結果、前記一連の処理のうち前記ソフトウェアによって実行中の処理の存否を判定させる判定工程を前記コンピュータに実行させ、
前記判定工程によって前記ソフトウェアによって実行中の処理が存在すると判定された場合、前記検出工程、前記構築工程および前記切替工程を前記コンピュータに実行させることを特徴とする請求項１に記載の動的再構成プログラム。
【請求項３】
前記検出工程は、
前記一連の処理の実行順序に従って前記一部の処理を検出させることを特徴とする請求項１に記載の動的再構成プログラム。
【請求項４】
前記検出工程は、
前記一連の処理の実行順序とは逆の順序に従って前記一部の処理を検出させることを特徴とする請求項１に記載の動的再構成プログラム。
【請求項５】
前記検出工程は、
予め設定された検出順序に従って前記一部の処理を検出させることを特徴とする請求項１に記載の動的再構成プログラム。
【請求項６】
前記構築工程は、
前記一部の処理の機能を実現するためのハードウェア記述情報を前記ハードウェア上に書き込むことにより、前記一部の処理の機能を実現する論理回路を構築させることを特徴とする請求項１に記載の動的再構成プログラム。
【請求項７】
請求項１〜６のいずれか一つに記載の動的再構成プログラムを記録した前記コンピュータに読み取り可能な記録媒体。
【請求項８】
再構成対象となる一連の処理の実行をソフトウェアからハードウェアに段階的に切り替える動的再構成装置であって、
前記一連の処理のうち前記ソフトウェアによって実行中の一部の処理を検出する検出手段と、
前記検出手段によって検出された一部の処理の機能を実現する論理回路を前記ハードウェア上に構築する構築手段と、
前記構築手段によって前記論理回路が構築された結果、前記一部の処理の実行を、前記ソフトウェアによる実行から前記ハードウェア上に構築された論理回路による実行に切り替える切替手段と、
を備えることを特徴とする動的再構成装置。
【請求項９】
前記切替手段によって切り替えられた結果、前記一連の処理のうち前記ソフトウェアによって実行中の処理の存否を判定する判定手段を備え、
前記検出手段は、
前記判定手段によって前記ソフトウェアによって実行中の処理が存在すると判定された場合、前記ソフトウェアによって実行中の残余の処理のうち一部の処理を検出することを特徴とする請求項８に記載の動的再構成装置。
【請求項１０】
前記検出手段は、
前記一連の処理の実行順序に従って前記一部の処理を検出することを特徴とする請求項８に記載の動的再構成装置。
【請求項１１】
前記検出手段は、
前記一連の処理の実行順序とは逆の順序に従って前記一部の処理を検出することを特徴とする請求項８に記載の動的再構成装置。
【請求項１２】
前記検出手段は、
予め設定された検出順序に従って前記一部の処理を検出することを特徴とする請求項８に記載の動的再構成装置。
【請求項１３】
前記構築手段は、
前記一部の処理の機能を実現するためのハードウェア記述情報を前記ハードウェア上に書き込むことにより、前記一部の処理の機能を実現する論理回路を構築することを特徴とする請求項８に記載の動的再構成装置。
【請求項１４】
再構成対象となる一連の処理の実行をソフトウェアからハードウェアに段階的に切り替える動的再構成方法であって、
前記一連の処理のうち前記ソフトウェアによって実行中の一部の処理を検出する検出工程と、
前記検出工程によって検出された一部の処理の機能を実現する論理回路を前記ハードウェア上に構築する構築工程と、
前記構築工程によって前記論理回路が構築された結果、前記一部の処理の実行を、前記ソフトウェアによる実行から前記ハードウェア上に構築された論理回路による実行に切り替える切替工程と、
を含んだことを特徴とする動的再構成方法。
【請求項１５】
前記切替工程によって切り替えられた結果、前記一連の処理のうち前記ソフトウェアによって実行中の処理の存否を判定させる判定工程を含み、
前記判定工程によって前記ソフトウェアによって実行中の処理が存在すると判定された場合、前記検出工程、前記構築工程および前記切替工程を繰り返すことを特徴とする請求項１４に記載の動的再構成方法。
【請求項１６】
前記検出工程は、
前記一連の処理の実行順序に従って前記一部の処理を検出することを特徴とする請求項１４に記載の動的再構成方法。
【請求項１７】
前記検出工程は、
前記一連の処理の実行順序とは逆の順序に従って前記一部の処理を検出することを特徴とする請求項１４に記載の動的再構成方法。
【請求項１８】
前記検出工程は、
予め設定された検出順序に従って前記一部の処理を検出することを特徴とする請求項１４に記載の動的再構成方法。
【請求項１９】
前記構築工程は、
前記一部の処理の機能を実現するためのハードウェア記述情報を前記ハードウェア上に書き込むことにより、前記一部の処理の機能を実現する論理回路を構築することを特徴とする請求項１４に記載の動的再構成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、一連の処理の実行をソフトウェアからハードウェアに段階的に切り替える動的再構成プログラム、該プログラムを記録した記録媒体、動的再構成装置および動的再構成方法に関する。
【背景技術】
【０００２】
一般的に、ソフトウェアは、柔軟に設計変更が可能で汎用性が高いが、タスクの実行に多くの処理時間を要し消費電力の増加を招いてしまう。一方で、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）などの専用ハードウェアは、処理が高速となるためタスクの実行に要する処理時間が短くなり消費電力を削減することができるが、設計変更が難しく汎用性に乏しい。【０００３】
これらソフトウェアと専用ハードウェアとの中間的な存在として、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）などの再構成可能なハードウェアがある。これは、高速かつ低消費電力という特性を有し、さらに、回路構成を書き換え可能であるというソフトウェア的な特性も有している。【０００４】
近年、この再構成可能なハードウェアを用いて、タスクの実行中にハードウェアをプログラミングし、回路構成を動的に再構成する技術が提供されている（たとえば、下記特許文献１および特許文献２参照。）。これによれば、回路構成を動的に再構成することで、少ないハードウェア資源で多くの機能を実現し、各種機能に応じた回路を構成して処理の高速化を図ることができる。【０００５】
【特許文献１】特開２００６−２１５５９２号公報
【特許文献２】特開平１０−３２０３７６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述した特許文献１および特許文献２に記載の従来技術によれば、ハードウェアの再構成自体に時間がかかるため、タスクの実行を開始するまでのタイムラグが発生し、出力のレスポンスが低下してしまうという問題があった。【０００７】
ここで、動画像を再生する場合を例に挙げて、従来技術の問題点を具体的に説明する。図１３は、従来技術の問題点を示す説明図である。図１３において、グラフ１３１０およびグラフ１３２０には、動画像の再生時における品質（たとえば、画質）の変動が表現されている。グラフ１３１０，１３２０において、縦軸は品質、横軸は時間を示している。【０００８】
グラフ１３１０は、ハードウェア（図１３中、「ＨＷ」と表記）の逐次再構成が必要となる場合の動画像の品質の変動を表現している。この場合、動画像の再生指示があってからハードウェアの再構成が完了するまでの間はブランク画面が続き、そのあと、時間ｔ3で鮮明な動画像「品質ｑ4」が再生される。【０００９】
すなわち、再生指示があってからしばらくの間はブランク画面が表示されることとなり、出力のレスポンスが低下してしまっている。このため、ユーザは、再生指示をおこなってからしばらくの間はブランク画面を見ることとなり、動画像がすぐに表示されないことによるストレスを感じる場合があった。【００１０】
グラフ１３２０は、ハードウェアの再構成完了前にソフトウェア（図１３中、「ＳＷ」と表記）によって代替実行する場合の動画像の品質の変動を表現している。この場合、動画像の再生指示があってからハードウェアの再構成が完了するまでの間は品質の低い動画像「品質ｑ1」が再生され、そのあと、時間ｔ3で鮮明な動画像「品質ｑ4」が再生される。【００１１】
すなわち、再生指示があってからしばらくの間は品質の低い動画像が再生されることとなり、出力のレスポンスが低下してしまっている。このため、ユーザは、再生指示をおこなってからしばらくの間は低品質の動画像を見ることとなり、見にくい動画像が表示されることによるストレスを感じる場合があった。【００１２】
この発明は、上述した従来技術による問題点を解消するため、ソフトウェアによる機能を段階的にハードウェアに切り替えることにより、ハードウェアの再構成にかかるオーバーヘッドを低減させ、出力のレスポンスの向上および低消費電力を実現することができる動的再構成プログラム、該プログラムを記録した記録媒体、動的再構成装置および動的再構成方法を提供することを目的とする。
【課題を解決するための手段】
【００１３】
上述した課題を解決し、目的を達成するため、この発明にかかる動的再構成プログラム、該プログラムを記録した記録媒体、動的再構成装置および動的再構成方法は、再構成対象となる一連の処理の実行をソフトウェアからハードウェアに段階的に切り替える動的再構成プログラム、該プログラムを記録した記録媒体、動的再構成装置および動的再構成方法であって、前記一連の処理のうち前記ソフトウェアによって実行中の一部の処理を検出し、その一部の処理の機能を実現する論理回路を前記ハードウェア上に構築する。そして、前記論理回路が構築された結果、前記一部の処理の実行を、前記ソフトウェアによる実行から前記ハードウェア上に構築された論理回路による実行に切り替えることを特徴とする。【００１４】
この発明によれば、一連の処理の実行中に、一部の処理の実行をソフトウェアによる実行からハードウェアによる実行に切り替えることにより、一部の処理の高速化を図ることができる。【００１５】
また、上記発明において、前記一連の処理のうち前記ソフトウェアによって実行中の処理の存否を判定し、前記ソフトウェアによって実行中の処理が存在すると判定された場合には、前記一部の処理の検出、前記一部の処理の機能を実現する論理回路の構築、および前記一部の処理の実行の切り替えを繰り返しおこなうこととしてもよい。【００１６】
この発明によれば、一連の処理を構成するすべての処理の実行を、ソフトウェアによる実行からハードウェアによる実行に段階的に切り替えることができる。【００１７】
また、上記発明において、前記一連の処理の実行順序に従って前記一部の処理を検出することとしてもよい。【００１８】
また、上記発明において、前記一連の処理の実行順序とは逆の順序に従って前記一部の処理を検出することとしてもよい。【００１９】
これらの発明によれば、一連の処理を構成する処理間での演算データの送受信にかかる制御を簡素化することができる。【００２０】
また、上記発明において、予め設定された検出順序に従って前記一部の処理を検出することとしてもよい。【００２１】
この発明によれば、ソフトウェアによる実行からハードウェアによる実行に切り替える際の切り替え順序を任意に設定することができる。
【発明の効果】
【００２２】
本発明にかかる動的再構成プログラム、該プログラムを記録した記録媒体、動的再構成装置および動的再構成方法によれば、ソフトウェアによる機能を段階的にハードウェアに切り替えることにより、ハードウェアの再構成にかかるオーバーヘッドを低減させ、出力のレスポンスの向上および低消費電力を実現することができるという効果を奏する。
【図面の簡単な説明】
【００２３】
【図１】図１は、本発明の概要を示す説明図である。
【図２】図２は、この発明の実施の形態にかかる動的再構成装置のハードウェア構成を示す説明図である。
【図３】図３は、この発明の実施の形態にかかる動的再構成装置の機能的構成を示すブロック図である。
【図４】図４は、再構成対象の一例を示す説明図である。
【図５】図５は、この発明の実施の形態にかかる動的再構成装置の動的再構成処理手順を示すフローチャートである。
【図６】図６は、デコーダの一連の機能を示すブロック図である。
【図７】図７は、動的再構成の概要を示す説明図である。
【図８】図８は、動画像の品質の変動を示すグラフである。
【図９】図９は、実施例における動的再構成処理手順を示すフローチャートである。
【図１０】図１０は、ソフトウェアによって一連の処理を実行するためのプログラムの一例を示す説明図である。
【図１１】図１１は、ステータスレジスタの一例を示す説明図である。
【図１２】図１２は、動的再構成処理を実行するためのプログラムの一例を示す説明図である。
【図１３】図１３は、従来技術の問題点を示す説明図である。
【符号の説明】
【００２４】
２００  動的再構成装置
３０１  検出部
３０２  構築部
３０３  切替部
３０４  判定部
８００，１３１０，１３２０  グラフ
１０００，１２００  プログラム
１１００  ステータスレジスタ
【発明を実施するための最良の形態】
【００２５】
以下に添付図面を参照して、この発明にかかる動的再構成プログラム、該プログラムを記録した記録媒体、動的再構成装置および動的再構成方法の好適な実施の形態を詳細に説明する。【００２６】
（本発明の概要）
まず、本発明の概要について説明する。図１は、本発明の概要を示す説明図である。図１において、グラフ１００には、動画像の再生時における品質の変動が表現されている（縦軸：品質、横軸：時間）。グラフ１００に示すように、動画像の再生時における品質が時間の経過とともに徐々に高くなっている。品質とは、たとえば、画質やビットレートなどをあらわす指標である。【００２７】
具体的には、再構成前の段階では、動画像の再生がソフトウェアのみによって実現されており、品質の低い動画像（品質ｑ1）が再生される。そのあと、時間ｔ1において１段階目の再構成が完了し、品質ｑ2（ｑ2＞ｑ1）の動画像が再生される。さらに、時間ｔ2において２段階目の再構成が完了し、品質ｑ3（ｑ3＞ｑ2）の動画像が再生される。最後に、時間ｔ3において３段階目の再構成が完了し、品質ｑ4（ｑ4＞ｑ3）の動画像が再生される。【００２８】
本発明では、ソフトウェアによって実行中の一連の処理を段階的にハードウェアに切り替えて実行することにより、動画像の品質を徐々に高くすることができる（ｑ1→ｑ2→ｑ3→ｑ4）。この結果、グラフ１００におけるある時間ｔの品質は、［従来技術］で説明したグラフ１３１０，１３２０（図１３参照）における時間ｔの品質に比べて高くなっている。【００２９】
（動的再構成装置のハードウェア構成）
つぎに、この発明の実施の形態にかかる動的再構成装置のハードウェア構成について説明する。図２は、この発明の実施の形態にかかる動的再構成装置のハードウェア構成を示す説明図である。【００３０】
図２において、動的再構成装置２００は、コンピュータ本体２１０と、入力装置２２０と、出力装置２３０と、から構成されており、不図示のルータやモデムを介してＬＡＮ，ＷＡＮやインターネットなどのネットワーク２４０に接続可能である。【００３１】
コンピュータ本体２１０は、ＣＰＵ，メモリ，インターフェースを有する。ＣＰＵは、動的再構成装置２００の全体の制御を司る。メモリは、ＲＯＭ，ＲＡＭ，ＨＤ，光ディスク２１１，フラッシュメモリから構成される。メモリはＣＰＵのワークエリアとして使用される。【００３２】
また、メモリには各種プログラムが格納されており、ＣＰＵからの命令に応じてロードされる。ＨＤおよび光ディスク２１１はディスクドライブによりデータのリード／ライトが制御される。また、光ディスク２１１およびフラッシュメモリはコンピュータ本体２１０に対し着脱自在である。インターフェースは、入力装置２２０からの入力、出力装置２３０への出力、ネットワーク２４０に対する送受信の制御をおこなう。【００３３】
また、入力装置２２０としては、キーボード２２１、マウス２２２、スキャナ２２３などがある。キーボード２２１は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式であってもよい。マウス２２２は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。スキャナ２２３は、画像を光学的に読み取る。読み取られた画像は画像データとして取り込まれ、コンピュータ本体２１０内のメモリに格納される。なお、スキャナ２２３にＯＣＲ機能を持たせてもよい。【００３４】
また、出力装置２３０としては、ディスプレイ２３１、スピーカ２３２、プリンタ２３３などがある。ディスプレイ２３１は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。また、スピーカ２３２は、効果音や読み上げ音などの音声を出力する。また、プリンタ２３３は、画像データや文書データを印刷する。【００３５】
（動的再構成装置の機能的構成）
つぎに、この発明の実施の形態にかかる動的再構成装置２００の機能的構成について説明する。図３は、この発明の実施の形態にかかる動的再構成装置２００の機能的構成を示すブロック図である。図３において、動的再構成装置２００は、検出部３０１と、構築部３０２と、切替部３０３と、判定部３０４と、から構成されている。【００３６】
これら各機能３０１〜３０４は、記憶領域に格納された当該機能に関するプログラムをＣＰＵに実行させることにより、当該機能を実現することができる。また、各機能３０１〜３０４からの出力データは記憶領域に保持される。また、図３中矢印で示した接続先の機能的構成は、接続元の機能からの出力データを記憶領域から読み込んで、当該機能に関するプログラムをＣＰＵに実行させる。【００３７】
動的再構成装置２００は、再構成対象となる一連の処理の実行をソフトウェアからハードウェアに段階的に切り替える機能を有している。ここで、ソフトウェアによる実行とは、様々な機能を実現するプログラムのＣＰＵによる実行を意味している。また、ハードウェアによる実行とは、各機能３０１〜３０４を実現するために専用に作り込まれた論理回路による実行を意味している。【００３８】
上記ハードウェアは、回路構成が書き換え可能な半導体集積回路であり、たとえば、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）やＣＰＬＤ（Ｃｏｍｐｌｅｘ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）などである。なお、一連の処理を構成する各処理は、ソフトウェアおよびハードウェアの両方で実行可能とする。【００３９】
まず、検出部３０１は、再構成対象となる一連の処理のうちソフトウェアによって実行中の一部の処理を検出する。一連の処理とは、予め定められた実行順序に従って実行される処理群である。また、一部の処理は、ソフトウェアによって実行中の処理であり、単数であっても複数であってもよい。【００４０】
ここで、再構成対象となる一連の処理について説明する。図４は、再構成対象の一例を示す説明図である。図４において、再構成対象は、実行順序に従って並べられた処理Ａ〜処理Ｄの処理群である。ここでは、再構成前の段階において、一連の処理Ａ〜処理Ｄのうち処理Ａ、処理Ｂおよび処理Ｃはソフトウェア（図４中「ＳＷ」と表記）によって実行され、処理Ｄはハードウェア（図４中「ＨＷ」と表記）によって実行される。【００４１】
なぜなら、一連の処理Ａ〜処理Ｄのうち、処理Ａ、処理Ｂおよび処理Ｃを実行するためのハードウェアが用意されていないため、再構成前の段階では、これらの処理をソフトウェアによって代替実行する。一方、処理Ｄについては、該処理Ｄを実行するための専用のハードウェアが用意されており、始めからハードウェアによって実行することができる。【００４２】
検出部３０１は、再構成対象となる一連の処理Ａ〜処理Ｄのうちソフトウェアによって実行中の一部の処理を検出する。ここでは、ソフトウェアによって実行中の『処理Ａ』、『処理Ｂ』、『処理Ｃ』、『処理Ａおよび処理Ｂ』、『処理Ｂおよび処理Ｃ』および『処理Ａおよび処理Ｃ』のいずれかを検出することとなる。【００４３】
図３の説明に戻り、構築部３０２は、検出部３０１によって検出された一部の処理の機能を実現する論理回路をハードウェア上に構築する。具体的には、一部の処理の機能を実現するためのハードウェア記述情報をハードウェア上に書き込むことにより、一部の処理の機能を実現する論理回路を構築することとしてもよい。【００４４】
ハードウェア記述情報とは、回路のハードウェア動作が言語レベルで記述されたＨＤＬ（ＶＨＤＬ、Ｖｅｒｉｌｏｇなど）である。具体的には、ハードウェア記述情報をハードウェアに内蔵のＳＲＡＭ型メモリセル構造を持つ記憶素子にローディングすることにより、設計通りの論理回路として動作させることができる。【００４５】
なお、一連の処理を構成する各処理の機能を実現するためのハードウェア記述情報は、ＲＯＭやＲＡＭなどの記憶領域に予め記憶されている。構築部３０２は、検出部３０１によって検出された一部の処理に応じて、記憶領域からハードウェア記述情報を読み出して、そのハードウェア記述情報をハードウェア上に書き込む。【００４６】
たとえば、図４に示した再構成対象となる一連の処理Ａ〜処理Ｄのうちソフトウェアによって実行中の処理Ａが検出された場合、該処理Ａの機能を実現するためのハードウェア記述情報を記憶領域から読み出して、そのハードウェア記述情報をハードウェア上に書き込むこととなる。【００４７】
切替部３０３は、構築部３０２によって論理回路が構築された結果、一部の処理の実行を、ソフトウェアによる実行からハードウェア上に構築された論理回路による実行に切り替える。すなわち、一連の処理を実行中に、一部の処理によって実現される機能を、ソフトウェアによる機能からハードウェアによる機能に切り替える。【００４８】
ここで、切替部３０３による切替処理の具体例について説明する。装置本体には、一部の処理の実行を切り替えるためのスイッチが設けられている。切替部３０３は、このスイッチを制御することにより、一部の処理の実行を、ソフトウェアによる実行からハードウェア上に構築された論理回路による実行に切り替える。【００４９】
たとえば、図４に示した処理Ａの機能を実現するための論理回路が構築された場合、上記スイッチを制御して、処理Ａの実行を、ソフトウェアによる実行からハードウェア上に構築された論理回路による実行に切り替える。この結果、一連の処理Ａ〜処理Ｄのうち、処理Ａおよび処理Ｄがハードウェアによって実行され、処理Ｂおよび処理Ｃがソフトウェアによって実行されることとなる。【００５０】
なお、処理Ａの実行がソフトウェアからハードウェアに切り替わった場合、ソフトウェアによる処理Ａの実行を停止し、ＲＡＭに記憶されている処理Ａを実行するためのプログラムを削除することとしてもよい。【００５１】
判定部３０４は、切替部３０３によって切り替えられた結果、一連の処理のうちソフトウェアによって実行中の処理の存否を判定する。具体的には、検出部３０１によって検出されていない未検出の処理（ソフトウェアによって実行中）の存否を判定することとしてもよい。【００５２】
そして、判定部３０４によってソフトウェアによって実行中の処理が存在すると判定された場合、検出部３０１による検出処理、構築部３０２による構築処理および切替部３０３による切替処理を実行することとしてもよい。すなわち、ソフトウェアによって実行中の処理が存在しなくなるまで、ソフトウェアによって実行中の残余の処理から一部の処理を検出して、一連の処理を繰り返す。【００５３】
たとえば、図４に示した一連の処理Ａ〜処理Ｄにおいて、処理Ａの実行がソフトウェアによる実行からハードウェアによる実行に切り替えられたとする。この場合、判定部３０４は、ソフトウェアによって実行中の処理Ｂおよび処理Ｃが存在すると判定し、検出部３０１、構築部３０２および切替部３０３による各種処理を繰り返し実行する。【００５４】
ここで、上記検出部３０１による検出処理の具体例について説明する。まず、第１の具体例として、検出部３０１は、一連の処理の実行順序に従って一部の処理を検出することとしてもよい。実行順序を特定するための情報は、ＲＯＭやＲＡＭなどの記憶領域に記憶されている。具体的には、実行順序を特定するための情報を記憶領域から読み出して、該情報から特定される実行順序に従って一部の処理を検出する。【００５５】
たとえば、図４に示した再構成対象となる一連の処理Ａ〜処理Ｄにおいては、ソフトウェアによって実行中の処理Ａ、処理Ｂおよび処理Ｃを『処理Ａ→処理Ｂ→処理Ｃ』の順に検出する。これにより、一連の処理を構成する処理間での演算データの送受信にかかる制御（たとえば、上述したスイッチの制御）を簡素化し、ハードウェアの再構成にかかるオーバーヘッドを削減することができる。【００５６】
つぎに、第２の具体例として、検出部３０１は、一連の処理の実行順序とは逆の順序に従って一部の処理を検出することとしてもよい。具体的には、実行順序を特定するための情報を記憶領域から読み出して、該情報から特定される実行順序とは逆の順序に従って一部の処理を検出する。【００５７】
たとえば、図４に示した再構成対象となる一連の処理Ａ〜処理Ｄにおいては、ソフトウェアによって実行中の処理Ａ、処理Ｂおよび処理Ｃを『処理Ｃ→処理Ｂ→処理Ａ』の順に検出する。これにより、一連の処理を構成する処理間での演算データの送受信にかかる制御を簡素化し、ハードウェアの再構成にかかるオーバーヘッドを削減することができる。【００５８】
つぎに、第３の具体例として、検出部３０１は、予め設定された検出順序に従って一部の処理を検出することとしてもよい。この検出順序は、ユーザによって任意に設定可能である。たとえば、一連の処理を構成する各処理のソフトウェアによる実行時間が長いものから優先的に検出することとしてもよい。これにより、一連の処理のうちボトルネックとなっている処理から順に検出することができる。【００５９】
また、処理間の演算データの送受信にかかる制御や上記実行時間のトレードオフを考慮して、一連の処理を実行することによって実現される機能の品質に与える影響が大きい処理を優先的に検出することとしてもよい。また、再構成（構築部３０２による構築処理）にかかる時間が少ない処理から優先的に検出することとしてもよい。【００６０】
検出順序を特定するための情報は、動的再構成装置２００に直接入力することとしてもよく、また、外部のコンピュータ装置から取得することとしてもよい。入力または取得された検出順序を特定するための情報は記憶領域に記憶され、検出部３０１は、この情報を記憶領域から読み出して、該情報から特定される検出順序に従って一部の処理を検出する。【００６１】
なお、構築部３０２によってハードウェア上に構築された論理回路は、一連の処理が終了した場合に消去することとしてもよい。また、一連の処理を実行する際に、ハードウェア上に別の機能を実現するための論理回路が既に構築されている場合、一部の処理の機能を実現するハードウェアを再構成する時間を利用して、ハードウェア上（構築中の部分は除く）の既に構築されている論理回路を消去することとしてもよい。【００６２】
（動的再構成装置の動的再構成処理手順）
つぎに、この発明の実施の形態にかかる動的再構成装置２００の動的再構成処理手順について説明する。図５は、この発明の実施の形態にかかる動的再構成装置２００の動的再構成処理手順を示すフローチャートである。【００６３】
図５のフローチャートにおいて、まず、検出部３０１により、再構成対象となる一連の処理のうちソフトウェアによって実行中の一部の処理を検出する（ステップＳ５０１）。このあと、構築部３０２により、検出部３０１によって検出された一部の処理の機能を実現する論理回路をハードウェア上に構築する（ステップＳ５０２）。【００６４】
つぎに、切替部３０３により、構築部３０２によって論理回路が構築された結果、一部の処理の実行を、ソフトウェアによる実行からハードウェア上に構築された論理回路による実行に切り替える（ステップＳ５０３）。このあと、判定部３０４により、一連の処理のうちソフトウェアによって実行中の処理の存否を判定する（ステップＳ５０４）。【００６５】
ここで、ソフトウェアによって実行中の処理が存在すると判定された場合（ステップＳ５０４：Ｙｅｓ）、ステップＳ５０１に戻り、ステップＳ５０１〜ステップＳ５０３の処理を繰り返す。一方、ソフトウェアによって実行中の処理が存在しないと判定された場合（ステップＳ５０４：Ｎｏ）、本フローチャートによる一連の処理を終了する。【００６６】
以上説明した、この発明の実施の形態によれば、一連の処理の実行中に、一部の処理の実行をソフトウェアによる実行からハードウェアによる実行に切り替えることができる。これにより、一連の処理を継続して実行しながら、段階的に一部の処理の高速化を図ることができる。【００６７】
また、ソフトウェアによって実行中の処理がなくなるまでハードウェアの再構成をおこなうことにより、一連の処理を構成するすべての処理の実行を、ソフトウェアによる実行からハードウェアによる実行に段階的に切り替えることができる。【００６８】
また、一連の処理の実行順序、または該実行順序とは逆の順序に従って、一部の処理の実行を、ソフトウェアによる実行からハードウェアによる実行に切り替えることができる。これにより、一連の処理を構成する処理間での演算データの送受信にかかる制御を簡素化し、ハードウェアの再構成にかかるオーバーヘッドを削減することができる。【００６９】
また、予め設定された検出順序に従って、一部の処理の実行を、ソフトウェアによる実行からハードウェアによる実行に切り替えることができる。具体的には、ボトルネックとなっている処理を優先するなど、一連の処理を実行することによって実現される機能の品質に与える影響が大きい処理を優先的に再構成することにより、より効果的な品質の向上を実現することができる。
【実施例】
【００７０】
つぎに、上述した実施の形態の実施例について説明する。本実施例では、符号化された動画像データを復号するデコード処理を例に挙げて動的再構成について説明する。図６は、デコーダの一連の機能を示すブロック図である。図６において、デコーダの機能は、ＶＬＤ（可変長符号化）と、逆量子化と、ＩＤＣＴ（直行余弦変換）と、ＭＣ（動き補償）と、から構成されている。【００７１】
具体的には、バッファから読み出されたフレームごとのビットストリームに対して、上記機能（ＶＬＤ、逆量子化、ＩＤＣＴ、ＭＣ）を実現するための一連の処理（ＶＬＤ処理、逆量子化処理、ＩＤＣＴ処理、ＭＣ処理）を実行することにより、復号された映像データがメモリから出力される。ここでは、再構成前の段階において、上記機能は、ソフトウェアによって実現される。【００７２】
まず、ソフトウェアによる上記機能を実現する一連の処理の実行を開始するとともに、ハードウェアの再構成を開始する。このあと、再構成が完了すると、一部の処理の実行をソフトウェアからハードウェアに切り替える。これにより、デコーダの機能を実現する一連の処理の実行を、ソフトウェアからハードウェアに段階的に切り替え、最終的にデコーダの機能をハードウェアによって実現する。【００７３】
ここでは、図３に示した検出部３０１による検出処理を、上記機能を実現する一連の処理の実行順序（ＶＬＤ処理→逆量子化処理→ＩＤＣＴ処理→ＭＣ処理）とは逆の順序（ＭＣ処理→ＩＤＣＴ処理→逆量子化処理→ＶＬＤ処理）に従っておこなうこととする。【００７４】
図７は、動的再構成の概要を示す説明図である。図７において、［ステップＳ１］では、上記機能（ＶＬＤ、逆量子化、ＩＤＣＴ、ＭＣ）を実現する一連の処理（ＶＬＤ処理、逆量子化処理、ＩＤＣＴ処理、ＭＣ処理）がソフトウェアによって実行されている。【００７５】
［ステップＳ２］では、検出部３０１により、再構成対象となる一連の処理（ＶＬＤ処理、逆量子化処理、ＩＤＣＴ処理、ＭＣ処理）のうちＭＣ処理が検出され、構築部３０２により、ＭＣ処理の機能を実現する論理回路がハードウェア上に構築されている。そして、切替部３０３により、ＭＣ処理の実行が、ソフトウェアによる実行からハードウェア上に構築された論理回路による実行に切り替えられている。【００７６】
この結果、デコーダの機能を実現する一連の処理（ＶＬＤ処理、逆量子化処理、ＩＤＣＴ処理、ＭＣ処理）のうち、ＶＬＤ処理、逆量子化処理およびＩＤＣＴ処理はソフトウェアによって実行され、再構成が完了したＭＣ処理はハードウェアによって実行される。なお、再構成が完了したＭＣ処理を実行するためのプログラムは、この時点で削除される。【００７７】
［ステップＳ３］では、検出部３０１により、再構成対象となる一連の処理（ＶＬＤ処理、逆量子化処理、ＩＤＣＴ処理、ＭＣ処理）のうちＩＤＣＴ処理が検出され、構築部３０２により、ＩＤＣＴ処理の機能を実現する論理回路がハードウェア上に構築されている。そして、切替部３０３により、ＩＤＣＴ処理の実行が、ソフトウェアによる実行からハードウェア上に構築された論理回路による実行に切り替えられている。【００７８】
この結果、デコーダの機能を実現する一連の処理（ＶＬＤ処理、逆量子化処理、ＩＤＣＴ処理、ＭＣ処理）のうち、ＶＬＤ処理および逆量子化処理はソフトウェアによって実行され、再構成が完了したＭＣ処理およびＩＤＣＴ処理はハードウェアによって実行される。なお、再構成が完了したＩＤＣＴ処理を実行するためのプログラムは、この時点で削除される。【００７９】
［ステップＳ４］では、検出部３０１により、再構成対象となる一連の処理（ＶＬＤ処理、逆量子化処理、ＩＤＣＴ処理、ＭＣ処理）のうち逆量子化処理が検出され、構築部３０２により、逆量子化処理の機能を実現する論理回路がハードウェア上に構築されている。そして、切替部３０３により、ＩＤＣＴ処理の実行が、ソフトウェアによる実行からハードウェア上に構築された論理回路による実行に切り替えられている。【００８０】
この結果、デコーダの機能を実現する一連の処理（ＶＬＤ処理、逆量子化処理、ＩＤＣＴ処理、ＭＣ処理）のうち、ＶＬＤ処理はソフトウェアによって実行され、再構成が完了したＭＣ処理、ＩＤＣＴ処理および逆量子化処理はハードウェアによって実行される。なお、再構成が完了した逆量子化処理を実行するためのプログラムは、この時点で削除される。【００８１】
［ステップＳ５］では、検出部３０１により、再構成対象となる一連の処理（ＶＬＤ処理、逆量子化処理、ＩＤＣＴ処理、ＭＣ処理）のうちＶＬＤ処理が検出され、構築部３０２により、ＶＬＤ処理の機能を実現する論理回路がハードウェア上に構築されている。そして、切替部３０３により、ＶＬＤ処理の実行が、ソフトウェアによる実行からハードウェア上に構築された論理回路による実行に切り替えられている。【００８２】
この結果、デコーダの機能を実現する一連の処理（ＶＬＤ処理、逆量子化処理、ＩＤＣＴ処理、ＭＣ処理）のすべてがハードウェアによって実行される。なお、再構成が完了したＶＬＤ処理を実行するためのプログラムは、この時点で削除される。【００８３】
図８は、動画像の品質の変動を示すグラフである。図８において、グラフ８００には、図７に示した各［ステップＳ１］〜［ステップＳ５］における動画像の品質が表現されている。グラフ８００において、縦軸は品質［ｆｐｓ］、横軸は時間［Ｔ］を示している。ここでは、単位時間当たりのフレーム数によって品質をあらわしている。つまり、品質が高くなればなるほど単位時間当たりのフレーム数が増加し、より滑らかな動画像が表示されることとなる。【００８４】
具体的には、ＭＣの機能を実現するハードウェアを再構成中である［ステップＳ１］における動画像の品質は５［ｆｐｓ］である。また、ＩＤＣＴの機能を実現するハードウェアを再構成中である［ステップＳ２］における動画像の品質は６［ｆｐｓ］である。すなわち、ＭＣの機能をハードウェアによって実現することにより、［ステップＳ１］に比べて品質が５［ｆｐｓ］から６［ｆｐｓ］に高くなっている。【００８５】
また、逆量子化の機能を実現するハードウェアを再構成中である［ステップＳ３］における動画像の品質は９［ｆｐｓ］である。すなわち、ＩＤＣＴの機能をハードウェアによって実現することにより、［ステップＳ２］に比べて品質が６［ｆｐｓ］から９［ｆｐｓ］に高くなっている。【００８６】
また、ＶＬＤの機能を実現するハードウェアを再構成中である［ステップＳ４］における動画像の品質は１８［ｆｐｓ］である。すなわち、逆量子化の機能をハードウェアによって実現することにより、［ステップＳ３］に比べて品質が９［ｆｐｓ］から１８［ｆｐｓ］に高くなっている。【００８７】
また、一連の機能（ＶＬＤ、逆量子化、ＩＤＣＴ、ＭＣ）を実現するハードウェアの再構成が完了した［ステップＳ５］における動画像の品質は３０［ｆｐｓ］である。すなわち、ＶＬＤの機能をハードウェアによって実現することにより、［ステップＳ４］に比べて品質が１８［ｆｐｓ］から３０［ｆｐｓ］に高くなっている。【００８８】
このように、一連の機能（ＶＬＤ、逆量子化、ＩＤＣＴ、ＭＣ）を実現するハードウェアの再構成を、機能ごとに段階的におこなうことにより、１フレームごとのデコード処理にかかる処理時間が徐々に短くなり、動画像の品質を高めることができる。【００８９】
つぎに、実施例における動的再構成処理手順について説明する。図９は、実施例における動的再構成処理手順を示すフローチャートである。図９のフローチャートにおいて、まず、再構成の開始通知を受け付けたか否かを判断する（ステップＳ９０１）。再構成の開始通知は、ユーザからの動画像の再生指示などである。具体的には、図２に示したキーボード２２１やマウス２２２などの入力装置２２０をユーザが操作することにより再構成の開始通知を受け付けることとしてもよい。【００９０】
ここで、再構成の開始通知を受け付けるのを待って（ステップＳ９０１：Ｎｏ）、受け付けた場合（ステップＳ９０１：Ｙｅｓ）、デコーダの機能（ＶＬＤ、逆量子化、ＩＤＣＴ、ＭＣ）を実現する一連の処理（ＶＬＤ処理、逆量子化処理、ＩＤＣＴ処理、ＭＣ処理）をソフトウェアによって実行する（ステップＳ９０２）。【００９１】
具体的には、上記機能（ＶＬＤ、逆量子化、ＩＤＣＴ、ＭＣ）に対応するプログラムをＣＰＵによって実行する。図１０は、ソフトウェアによって一連の処理を実行するためのプログラムの一例を示す説明図である。図１０において、プログラム１０００には、一連の処理（ＶＬＤ処理、逆量子化処理、ＩＤＣＴ処理、ＭＣ処理）を実行するためのソースコードが記述されている。【００９２】
ＣＰＵは、プログラム１０００内のＷｈｉｌｅ文に従って、一連の処理（ＶＬＤ処理、逆量子化処理、ＩＤＣＴ処理、ＭＣ処理）を実行する。図１０中、Ｓ１はＶＬＤ処理、Ｓ２は逆量子化処理、Ｓ３はＩＤＣＴ処理、Ｓ４はＭＣ処理に対応している。なお、各処理を実行するためのプログラムの詳細は図示および説明を省略する。【００９３】
つぎに、上記機能（ＶＬＤ、逆量子化、ＩＤＣＴ、ＭＣ）を特定する整数値ｎ（初期値：ｎ＝０）に１をインクリメントする（ステップＳ９０３）。整数値ｎは、上記各機能（ＶＬＤ、逆量子化、ＩＤＣＴ、ＭＣ）に対応しており、ＶＬＤはｎ＝１、逆量子化はｎ＝２、ＩＤＣＴはｎ＝３、ＭＣはｎ＝４に対応している。【００９４】
このあと、整数値ｎが整数値Ｎよりも小さいか否かを判断する（ステップＳ９０４）。整数値Ｎは、上記機能（ＶＬＤ、逆量子化、ＩＤＣＴ、ＭＣ）の総数をあらわしており、ここでは「４」となる。ここで、整数値ｎが整数値Ｎよりも小さいと判断された場合（ステップＳ９０４：Ｙｅｓ）、整数値ｎから特定される機能を実現するハードウェアの再構成の要否を判断する（ステップＳ９０５）。【００９５】
具体的には、ソフトウェアによって実行しても処理時間があまりかからない処理については、ハードウェアの再構成は不要であると判断することとしてもよい。また、ハードウェアの再構成が必要な機能が予め設定されており、その設定内容を参照することにより、整数値ｎから特定される機能を実現するハードウェアの再構成の要否を判断することとしてもよい。【００９６】
ステップＳ９０５において、再構成が不要であると判断された場合（ステップＳ９０５：Ｎｏ）、ステップＳ９０３に戻る。一方、再構成が必要であると判断された場合（ステップＳ９０５：Ｙｅｓ）、整数値ｎから特定される機能を実現するハードウェアの再構成データを記憶領域から読み出して（ステップＳ９０６）、整数値ｎから特定される機能を実現する論理回路をハードウェア上に構築する（ステップＳ９０７）。なお、再構成データは、上述したハードウェア記述情報に相当する。【００９７】
このあと、整数値ｎから特定される機能を実現するハードウェアの再構成が完了したか否かを判断する（ステップＳ９０８）。ここで、再構成が完了するのを待って（ステップＳ９０８：Ｎｏ）、完了した場合（ステップＳ９０８：Ｙｅｓ）、ステータスレジスタに整数値ｎから特定される機能の終了フラグを立てる（ステップＳ９０９）。【００９８】
ここで、ステータスレジスタについて説明する。図１１は、ステータスレジスタの一例を示す説明図である。図１１において、ステータスレジスタ１１００は、上記機能（ＶＬＤ、逆量子化、ＩＤＣＴ、ＭＣ）を実現するハードウェアの再構成が完了したか否かを示す終了フラグを保持している。【００９９】
ステータスレジスタ１１００において、Ｈ１はＶＬＤ、Ｈ２は逆量子化、Ｈ３はＩＤＣＴ、Ｈ４はＭＣの機能を実現するハードウェアをあらわしている。ＣＰＵは、このステータスレジスタ１１００を参照することにより、各機能を実現するハードウェアの再構成が完了したか否かを判断する。図１１においては、ステータスレジスタ１１００を参照することにより、上記機能（ＶＬＤ、逆量子化、ＩＤＣＴ、ＭＣ）のうちＶＬＤの機能を実現するハードウェアの再構成が完了していると判断する。【０１００】
図１０の説明に戻り、ステップＳ９０９のあと、ステータスレジスタ（たとえば、ステータスレジスタ１１００）に終了フラグを立てた機能の割り込みハンドラを発行して（ステップＳ９１０）、ステップＳ９０３に戻る。すなわち、整数値ｎから特定される機能を実現する処理の実行を、ソフトウェアによる実行からステップＳ９０７において構築された論理回路による実行に切り替える。【０１０１】
また、ステップＳ９０４において、整数値ｎが整数値Ｎよりも大きいと判断された場合（ステップＳ９０４：Ｎｏ）、本フローチャートによる一連の処理を終了する。【０１０２】
なお、上記ステップＳ９０３における処理は図３に示した検出部３０１による検出処理に相当し、上記ステップ９０６およびステップＳ９０７における処理は構築部３０２による構築処理に相当し、上記ステップ９０９における処理は切替部３０３による切替処理に相当し、上記ステップＳ９０４における処理は判定部３０４による判定処理に相当する。【０１０３】
ここで、上記動的再構成処理を実行するためのプログラムについて説明する。図１２は、動的再構成処理を実行するためのプログラムの一例を示す説明図である。図１２において、プログラム１２００には、図９に示した動的再構成処理を実現するためのソースコードが記述されている。【０１０４】
動的再構成装置２００は、このプログラム１２００の記述内容に従って、一連の処理を構成する処理ごとに、ハードウェアが再構成されているか否かを判断する。そして、再構成されている場合には、その処理をハードウェアによって実行し、再構成されていない場合には、その処理をソフトウェアによって代替実行する。【０１０５】
たとえば、ＭＣの機能を実現するハードウェアの再構成が完了したか否かを判断して、完了した場合は、ＭＣ処理をハードウェアによって実行して、処理を待つ。一方、完了していない場合は、ＭＣ処理をソフトウェアによって実行するという論理的構成となっている。これらの制御を機能ごとにおこない、すべての機能を実現するハードウェアの再構成が完了するまでおこなう。【０１０６】
以上説明した、この発明の実施例によれば、デコーダの機能を実現する一連の処理（ＶＬＤ処理、逆量子化処理、ＩＤＣＴ処理、ＭＣ処理）の実行中に、一部の処理の実行をソフトウェアによる実行からハードウェアによる実行に切り替えることができる。これにより、デコード処理を継続して実行しながら、一部の処理の高速化を段階的に図ることができる。【０１０７】
このように、一連の処理を構成するすべての処理の実行を、ソフトウェアによる実行からハードウェアによる実行に段階的に切り替えることにより、ハードウェアの再構成にかかるオーバーヘッドを低減させ、デコード処理の高速化および動画像の品質の向上を図ることができる。【０１０８】
具体的には、動画像の再生中に、単位時間当たりのフレーム数を徐々に増加させることにより、出力（映像データ）のレスポンスを向上させることができる。この結果、動画像の再生時に、動画像の品質が時間の経過とともに徐々に高くなり、低品質の動画像を視聴し続けることによるユーザのストレスを低減させることができる。【０１０９】
特に、携帯電話端末など使用可能なハードウェア資源が少ない機器において、本発明にかかるハードウェアの動的再構成を適用することにより、出力のレスポンスを向上させ、適切なサービス（テレビ電話、ワンセグ放送など）の提供を実現することができる。【０１１０】
以上説明したように、動的再構成プログラム、該プログラムを記録した記録媒体、動的再構成装置および動的再構成方法によれば、ソフトウェアによる機能を段階的にハードウェアに切り替えることにより、ハードウェアの再構成にかかるオーバーヘッドを低減させ、出力のレスポンスの向上および低消費電力を実現することができる。【０１１１】
なお、本実施の形態で説明した動的再構成方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーションなどのコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネットなどのネットワークを介して配布することが可能な伝送媒体であってもよい。【０１１２】
また、本実施の形態で説明した動的再構成装置２００は、スタンダードセルやストラクチャードＡＳＩＣなどの特定用途向けＩＣ（以下、単に「ＡＳＩＣ」と称す。）やＦＰＧＡなどのＰＬＤによっても実現することができる。具体的には、たとえば、上述した動的再構成装置２００の機能的構成３０１〜３０４をＨＤＬ記述によって機能定義し、そのＨＤＬ記述を論理合成してＡＳＩＣやＰＬＤに与えることにより、動的再構成装置２００を製造することができる。
【産業上の利用可能性】
【０１１３】
以上のように、本発明にかかる動的再構成プログラム、該プログラムを記録した記録媒体、動的再構成装置および動的再構成方法は、限られたハードウェア資源を利用して多くの機能を実現する機器に有用である。
【図１】
2009022418.tif 000003
【図２】
2009022418.tif 000004
【図３】
2009022418.tif 000005
【図４】
2009022418.tif 000006
【図５】
2009022418.tif 000007
【図６】
2009022418.tif 000008
【図７】
2009022418.tif 000009
【図８】
2009022418.tif 000010
【図９】
2009022418.tif 000011
【図１０】
2009022418.tif 000012
【図１１】
2009022418.tif 000013
【図１２】
2009022418.tif 000014
【図１３】
2009022418.tif 000015
【手続補正書】
【提出日】平成21年10月9日(2009.10.9)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
再構成対象となる一連の処理の実行をソフトウェアからハードウェアに段階的に切り替えさせる動的再構成プログラムであって、
前記一連の処理の実行順序とは逆の順序に従って、前記一連の処理のうち前記ソフトウェアによって実行中の一部の処理を検出させる検出工程と、
前記検出工程によって検出された一部の処理の機能を実現する論理回路を前記ハードウェア上に構築させる構築工程と、
前記構築工程によって前記論理回路が構築された結果、前記一部の処理の実行を、前記ソフトウェアによる実行から前記ハードウェア上に構築された論理回路による実行に切り替えさせる切替工程と、
をコンピュータに実行させることを特徴とする動的再構成プログラム。
【請求項２】
前記切替工程によって切り替えられた結果、前記一連の処理のうち前記ソフトウェアによって実行中の処理の存否を判定させる判定工程を前記コンピュータに実行させ、
前記判定工程によって前記ソフトウェアによって実行中の処理が存在すると判定された場合、前記検出工程、前記構築工程および前記切替工程を前記コンピュータに実行させることを特徴とする請求項１に記載の動的再構成プログラム。
【請求項３】
前記構築工程は、
前記一部の処理の機能を実現するためのハードウェア記述情報を前記ハードウェア上に書き込むことにより、前記一部の処理の機能を実現する論理回路を構築させることを特徴とする請求項１または２に記載の動的再構成プログラム。
【請求項４】
再構成対象となる一連の処理の実行をソフトウェアからハードウェアに段階的に切り替える動的再構成装置であって、
前記一連の処理の実行順序とは逆の順序に従って、前記一連の処理のうち前記ソフトウェアによって実行中の一部の処理を検出する検出手段と、
前記検出手段によって検出された一部の処理の機能を実現する論理回路を前記ハードウェア上に構築する構築手段と、
前記構築手段によって前記論理回路が構築された結果、前記一部の処理の実行を、前記ソフトウェアによる実行から前記ハードウェア上に構築された論理回路による実行に切り替える切替手段と、
を備えることを特徴とする動的再構成装置。
【請求項５】
前記切替手段によって切り替えられた結果、前記一連の処理のうち前記ソフトウェアによって実行中の処理の存否を判定する判定手段を備え、
前記検出手段は、
前記判定手段によって前記ソフトウェアによって実行中の処理が存在すると判定された場合、前記ソフトウェアによって実行中の残余の処理のうち一部の処理を検出することを特徴とする請求項４に記載の動的再構成装置。
【請求項６】
前記構築手段は、
前記一部の処理の機能を実現するためのハードウェア記述情報を前記ハードウェア上に書き込むことにより、前記一部の処理の機能を実現する論理回路を構築することを特徴とする請求項４または５に記載の動的再構成装置。
【請求項７】
再構成対象となる一連の処理の実行をソフトウェアからハードウェアに段階的に切り替える動的再構成方法であって、
前記一連の処理の実行順序とは逆の順序に従って、前記一連の処理のうち前記ソフトウェアによって実行中の一部の処理を検出する検出工程と、
前記検出工程によって検出された一部の処理の機能を実現する論理回路を前記ハードウェア上に構築する構築工程と、
前記構築工程によって前記論理回路が構築された結果、前記一部の処理の実行を、前記ソフトウェアによる実行から前記ハードウェア上に構築された論理回路による実行に切り替える切替工程と、
を含んだことを特徴とする動的再構成方法。
【請求項８】
前記切替工程によって切り替えられた結果、前記一連の処理のうち前記ソフトウェアによって実行中の処理の存否を判定させる判定工程を含み、
前記判定工程によって前記ソフトウェアによって実行中の処理が存在すると判定された場合、前記検出工程、前記構築工程および前記切替工程を繰り返すことを特徴とする請求項７に記載の動的再構成方法。
【請求項９】
前記構築工程は、
前記一部の処理の機能を実現するためのハードウェア記述情報を前記ハードウェア上に書き込むことにより、前記一部の処理の機能を実現する論理回路を構築することを特徴とする請求項７または８に記載の動的再構成方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、一連の処理の実行をソフトウェアからハードウェアに段階的に切り替える動的再構成プログラム、該プログラムを記録した記録媒体、動的再構成装置および動的再構成方法に関する。
【背景技術】
【０００２】
一般的に、ソフトウェアは、柔軟に設計変更が可能で汎用性が高いが、タスクの実行に多くの処理時間を要し消費電力の増加を招いてしまう。一方で、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）などの専用ハードウェアは、処理が高速となるためタスクの実行に要する処理時間が短くなり消費電力を削減することができるが、設計変更が難しく汎用性に乏しい。
【０００３】
これらソフトウェアと専用ハードウェアとの中間的な存在として、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）などの再構成可能なハードウェアがある。これは、高速かつ低消費電力という特性を有し、さらに、回路構成を書き換え可能であるというソフトウェア的な特性も有している。
【０００４】
近年、この再構成可能なハードウェアを用いて、タスクの実行中にハードウェアをプログラミングし、回路構成を動的に再構成する技術が提供されている（たとえば、下記特許文献１および特許文献２参照。）。これによれば、回路構成を動的に再構成することで、少ないハードウェア資源で多くの機能を実現し、各種機能に応じた回路を構成して処理の高速化を図ることができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−２１５５９２号公報
【特許文献２】特開平１０−３２０３７６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述した特許文献１および特許文献２に記載の従来技術によれば、ハードウェアの再構成自体に時間がかかるため、タスクの実行を開始するまでのタイムラグが発生し、出力のレスポンスが低下してしまうという問題があった。
【０００７】
ここで、動画像を再生する場合を例に挙げて、従来技術の問題点を具体的に説明する。図１３は、従来技術の問題点を示す説明図である。図１３において、グラフ１３１０およびグラフ１３２０には、動画像の再生時における品質（たとえば、画質）の変動が表現されている。グラフ１３１０，１３２０において、縦軸は品質、横軸は時間を示している。
【０００８】
グラフ１３１０は、ハードウェア（図１３中、「ＨＷ」と表記）の逐次再構成が必要となる場合の動画像の品質の変動を表現している。この場合、動画像の再生指示があってからハードウェアの再構成が完了するまでの間はブランク画面が続き、そのあと、時間ｔ3で鮮明な動画像「品質ｑ4」が再生される。
【０００９】
すなわち、再生指示があってからしばらくの間はブランク画面が表示されることとなり、出力のレスポンスが低下してしまっている。このため、ユーザは、再生指示をおこなってからしばらくの間はブランク画面を見ることとなり、動画像がすぐに表示されないことによるストレスを感じる場合があった。
【００１０】
グラフ１３２０は、ハードウェアの再構成完了前にソフトウェア（図１３中、「ＳＷ」と表記）によって代替実行する場合の動画像の品質の変動を表現している。この場合、動画像の再生指示があってからハードウェアの再構成が完了するまでの間は品質の低い動画像「品質ｑ1」が再生され、そのあと、時間ｔ3で鮮明な動画像「品質ｑ4」が再生される。
【００１１】
すなわち、再生指示があってからしばらくの間は品質の低い動画像が再生されることとなり、出力のレスポンスが低下してしまっている。このため、ユーザは、再生指示をおこなってからしばらくの間は低品質の動画像を見ることとなり、見にくい動画像が表示されることによるストレスを感じる場合があった。
【００１２】
この発明は、上述した従来技術による問題点を解消するため、ソフトウェアによる機能を段階的にハードウェアに切り替えることにより、ハードウェアの再構成にかかるオーバーヘッドを低減させ、出力のレスポンスの向上および低消費電力を実現することができる動的再構成プログラム、該プログラムを記録した記録媒体、動的再構成装置および動的再構成方法を提供することを目的とする。
【課題を解決するための手段】
【００１３】
上述した課題を解決し、目的を達成するため、この発明にかかる動的再構成プログラム、該プログラムを記録した記録媒体、動的再構成装置および動的再構成方法は、再構成対象となる一連の処理の実行をソフトウェアからハードウェアに段階的に切り替える動的再構成プログラム、該プログラムを記録した記録媒体、動的再構成装置および動的再構成方法であって、前記一連の処理のうち前記ソフトウェアによって実行中の一部の処理を検出し、その一部の処理の機能を実現する論理回路を前記ハードウェア上に構築する。そして、前記論理回路が構築された結果、前記一部の処理の実行を、前記ソフトウェアによる実行から前記ハードウェア上に構築された論理回路による実行に切り替えることを特徴とする。
【００１４】
この発明によれば、一連の処理の実行中に、一部の処理の実行をソフトウェアによる実行からハードウェアによる実行に切り替えることにより、一部の処理の高速化を図ることができる。
【００１５】
また、上記発明において、前記一連の処理のうち前記ソフトウェアによって実行中の処理の存否を判定し、前記ソフトウェアによって実行中の処理が存在すると判定された場合には、前記一部の処理の検出、前記一部の処理の機能を実現する論理回路の構築、および前記一部の処理の実行の切り替えを繰り返しおこなうこととしてもよい。
【００１６】
この発明によれば、一連の処理を構成するすべての処理の実行を、ソフトウェアによる実行からハードウェアによる実行に段階的に切り替えることができる。
【００１７】
また、上記発明において、前記一連の処理の実行順序に従って前記一部の処理を検出することとしてもよい。
【００１８】
また、上記発明において、前記一連の処理の実行順序とは逆の順序に従って前記一部の処理を検出することとしてもよい。
【００１９】
これらの発明によれば、一連の処理を構成する処理間での演算データの送受信にかかる制御を簡素化することができる。
【００２０】
また、上記発明において、予め設定された検出順序に従って前記一部の処理を検出することとしてもよい。
【００２１】
この発明によれば、ソフトウェアによる実行からハードウェアによる実行に切り替える際の切り替え順序を任意に設定することができる。
【発明の効果】
【００２２】
本発明にかかる動的再構成プログラム、該プログラムを記録した記録媒体、動的再構成装置および動的再構成方法によれば、ソフトウェアによる機能を段階的にハードウェアに切り替えることにより、ハードウェアの再構成にかかるオーバーヘッドを低減させ、出力のレスポンスの向上および低消費電力を実現することができるという効果を奏する。
【図面の簡単な説明】
【００２３】
【図１】本発明の概要を示す説明図である。
【図２】この発明の実施の形態にかかる動的再構成装置のハードウェア構成を示す説明図である。
【図３】この発明の実施の形態にかかる動的再構成装置の機能的構成を示すブロック図である。
【図４】再構成対象の一例を示す説明図である。
【図５】この発明の実施の形態にかかる動的再構成装置の動的再構成処理手順を示すフローチャートである。
【図６】デコーダの一連の機能を示すブロック図である。
【図７】動的再構成の概要を示す説明図である。
【図８】動画像の品質の変動を示すグラフである。
【図９】実施例における動的再構成処理手順を示すフローチャートである。
【図１０】ソフトウェアによって一連の処理を実行するためのプログラムの一例を示す説明図である。
【図１１】ステータスレジスタの一例を示す説明図である。
【図１２】動的再構成処理を実行するためのプログラムの一例を示す説明図である。
【図１３】従来技術の問題点を示す説明図である。
【発明を実施するための形態】
【００２４】
以下に添付図面を参照して、この発明にかかる動的再構成プログラム、該プログラムを記録した記録媒体、動的再構成装置および動的再構成方法の好適な実施の形態を詳細に説明する。
【００２５】
（本発明の概要）
まず、本発明の概要について説明する。図１は、本発明の概要を示す説明図である。図１において、グラフ１００には、動画像の再生時における品質の変動が表現されている（縦軸：品質、横軸：時間）。グラフ１００に示すように、動画像の再生時における品質が時間の経過とともに徐々に高くなっている。品質とは、たとえば、画質やビットレートなどをあらわす指標である。
【００２６】
具体的には、再構成前の段階では、動画像の再生がソフトウェアのみによって実現されており、品質の低い動画像（品質ｑ1）が再生される。そのあと、時間ｔ1において１段階目の再構成が完了し、品質ｑ2（ｑ2＞ｑ1）の動画像が再生される。さらに、時間ｔ2において２段階目の再構成が完了し、品質ｑ3（ｑ3＞ｑ2）の動画像が再生される。最後に、時間ｔ3において３段階目の再構成が完了し、品質ｑ4（ｑ4＞ｑ3）の動画像が再生される。
【００２７】
本発明では、ソフトウェアによって実行中の一連の処理を段階的にハードウェアに切り替えて実行することにより、動画像の品質を徐々に高くすることができる（ｑ1→ｑ2→ｑ3→ｑ4）。この結果、グラフ１００におけるある時間ｔの品質は、［従来技術］で説明したグラフ１３１０，１３２０（図１３参照）における時間ｔの品質に比べて高くなっている。
【００２８】
（動的再構成装置のハードウェア構成）
つぎに、この発明の実施の形態にかかる動的再構成装置のハードウェア構成について説明する。図２は、この発明の実施の形態にかかる動的再構成装置のハードウェア構成を示す説明図である。
【００２９】
図２において、動的再構成装置２００は、コンピュータ本体２１０と、入力装置２２０と、出力装置２３０と、から構成されており、不図示のルータやモデムを介してＬＡＮ，ＷＡＮやインターネットなどのネットワーク２４０に接続可能である。
【００３０】
コンピュータ本体２１０は、ＣＰＵ，メモリ，インターフェースを有する。ＣＰＵは、動的再構成装置２００の全体の制御を司る。メモリは、ＲＯＭ，ＲＡＭ，ＨＤ，光ディスク２１１，フラッシュメモリから構成される。メモリはＣＰＵのワークエリアとして使用される。
【００３１】
また、メモリには各種プログラムが格納されており、ＣＰＵからの命令に応じてロードされる。ＨＤおよび光ディスク２１１はディスクドライブによりデータのリード／ライトが制御される。また、光ディスク２１１およびフラッシュメモリはコンピュータ本体２１０に対し着脱自在である。インターフェースは、入力装置２２０からの入力、出力装置２３０への出力、ネットワーク２４０に対する送受信の制御をおこなう。
【００３２】
また、入力装置２２０としては、キーボード２２１、マウス２２２、スキャナ２２３などがある。キーボード２２１は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式であってもよい。マウス２２２は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。スキャナ２２３は、画像を光学的に読み取る。読み取られた画像は画像データとして取り込まれ、コンピュータ本体２１０内のメモリに格納される。なお、スキャナ２２３にＯＣＲ機能を持たせてもよい。
【００３３】
また、出力装置２３０としては、ディスプレイ２３１、スピーカ２３２、プリンタ２３３などがある。ディスプレイ２３１は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。また、スピーカ２３２は、効果音や読み上げ音などの音声を出力する。また、プリンタ２３３は、画像データや文書データを印刷する。
【００３４】
（動的再構成装置の機能的構成）
つぎに、この発明の実施の形態にかかる動的再構成装置２００の機能的構成について説明する。図３は、この発明の実施の形態にかかる動的再構成装置２００の機能的構成を示すブロック図である。図３において、動的再構成装置２００は、検出部３０１と、構築部３０２と、切替部３０３と、判定部３０４と、から構成されている。
【００３５】
これら各機能３０１〜３０４は、記憶領域に格納された当該機能に関するプログラムをＣＰＵに実行させることにより、当該機能を実現することができる。また、各機能３０１〜３０４からの出力データは記憶領域に保持される。また、図３中矢印で示した接続先の機能的構成は、接続元の機能からの出力データを記憶領域から読み込んで、当該機能に関するプログラムをＣＰＵに実行させる。
【００３６】
動的再構成装置２００は、再構成対象となる一連の処理の実行をソフトウェアからハードウェアに段階的に切り替える機能を有している。ここで、ソフトウェアによる実行とは、様々な機能を実現するプログラムのＣＰＵによる実行を意味している。また、ハードウェアによる実行とは、各機能３０１〜３０４を実現するために専用に作り込まれた論理回路による実行を意味している。
【００３７】
上記ハードウェアは、回路構成が書き換え可能な半導体集積回路であり、たとえば、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）やＣＰＬＤ（Ｃｏｍｐｌｅｘ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）などである。なお、一連の処理を構成する各処理は、ソフトウェアおよびハードウェアの両方で実行可能とする。
【００３８】
まず、検出部３０１は、再構成対象となる一連の処理のうちソフトウェアによって実行中の一部の処理を検出する。一連の処理とは、予め定められた実行順序に従って実行される処理群である。また、一部の処理は、ソフトウェアによって実行中の処理であり、単数であっても複数であってもよい。
【００３９】
ここで、再構成対象となる一連の処理について説明する。図４は、再構成対象の一例を示す説明図である。図４において、再構成対象は、実行順序に従って並べられた処理Ａ〜処理Ｄの処理群である。ここでは、再構成前の段階において、一連の処理Ａ〜処理Ｄのうち処理Ａ、処理Ｂおよび処理Ｃはソフトウェア（図４中「ＳＷ」と表記）によって実行され、処理Ｄはハードウェア（図４中「ＨＷ」と表記）によって実行される。
【００４０】
なぜなら、一連の処理Ａ〜処理Ｄのうち、処理Ａ、処理Ｂおよび処理Ｃを実行するためのハードウェアが用意されていないため、再構成前の段階では、これらの処理をソフトウェアによって代替実行する。一方、処理Ｄについては、該処理Ｄを実行するための専用のハードウェアが用意されており、始めからハードウェアによって実行することができる。
【００４１】
検出部３０１は、再構成対象となる一連の処理Ａ〜処理Ｄのうちソフトウェアによって実行中の一部の処理を検出する。ここでは、ソフトウェアによって実行中の『処理Ａ』、『処理Ｂ』、『処理Ｃ』、『処理Ａおよび処理Ｂ』、『処理Ｂおよび処理Ｃ』および『処理Ａおよび処理Ｃ』のいずれかを検出することとなる。
【００４２】
図３の説明に戻り、構築部３０２は、検出部３０１によって検出された一部の処理の機能を実現する論理回路をハードウェア上に構築する。具体的には、一部の処理の機能を実現するためのハードウェア記述情報をハードウェア上に書き込むことにより、一部の処理の機能を実現する論理回路を構築することとしてもよい。
【００４３】
ハードウェア記述情報とは、回路のハードウェア動作が言語レベルで記述されたＨＤＬ（ＶＨＤＬ、Ｖｅｒｉｌｏｇなど）である。具体的には、ハードウェア記述情報をハードウェアに内蔵のＳＲＡＭ型メモリセル構造を持つ記憶素子にローディングすることにより、設計通りの論理回路として動作させることができる。
【００４４】
なお、一連の処理を構成する各処理の機能を実現するためのハードウェア記述情報は、ＲＯＭやＲＡＭなどの記憶領域に予め記憶されている。構築部３０２は、検出部３０１によって検出された一部の処理に応じて、記憶領域からハードウェア記述情報を読み出して、そのハードウェア記述情報をハードウェア上に書き込む。
【００４５】
たとえば、図４に示した再構成対象となる一連の処理Ａ〜処理Ｄのうちソフトウェアによって実行中の処理Ａが検出された場合、該処理Ａの機能を実現するためのハードウェア記述情報を記憶領域から読み出して、そのハードウェア記述情報をハードウェア上に書き込むこととなる。
【００４６】
切替部３０３は、構築部３０２によって論理回路が構築された結果、一部の処理の実行を、ソフトウェアによる実行からハードウェア上に構築された論理回路による実行に切り替える。すなわち、一連の処理を実行中に、一部の処理によって実現される機能を、ソフトウェアによる機能からハードウェアによる機能に切り替える。
【００４７】
ここで、切替部３０３による切替処理の具体例について説明する。装置本体には、一部の処理の実行を切り替えるためのスイッチが設けられている。切替部３０３は、このスイッチを制御することにより、一部の処理の実行を、ソフトウェアによる実行からハードウェア上に構築された論理回路による実行に切り替える。
【００４８】
たとえば、図４に示した処理Ａの機能を実現するための論理回路が構築された場合、上記スイッチを制御して、処理Ａの実行を、ソフトウェアによる実行からハードウェア上に構築された論理回路による実行に切り替える。この結果、一連の処理Ａ〜処理Ｄのうち、処理Ａおよび処理Ｄがハードウェアによって実行され、処理Ｂおよび処理Ｃがソフトウェアによって実行されることとなる。
【００４９】
なお、処理Ａの実行がソフトウェアからハードウェアに切り替わった場合、ソフトウェアによる処理Ａの実行を停止し、ＲＡＭに記憶されている処理Ａを実行するためのプログラムを削除することとしてもよい。
【００５０】
判定部３０４は、切替部３０３によって切り替えられた結果、一連の処理のうちソフトウェアによって実行中の処理の存否を判定する。具体的には、検出部３０１によって検出されていない未検出の処理（ソフトウェアによって実行中）の存否を判定することとしてもよい。
【００５１】
そして、判定部３０４によってソフトウェアによって実行中の処理が存在すると判定された場合、検出部３０１による検出処理、構築部３０２による構築処理および切替部３０３による切替処理を実行することとしてもよい。すなわち、ソフトウェアによって実行中の処理が存在しなくなるまで、ソフトウェアによって実行中の残余の処理から一部の処理を検出して、一連の処理を繰り返す。
【００５２】
たとえば、図４に示した一連の処理Ａ〜処理Ｄにおいて、処理Ａの実行がソフトウェアによる実行からハードウェアによる実行に切り替えられたとする。この場合、判定部３０４は、ソフトウェアによって実行中の処理Ｂおよび処理Ｃが存在すると判定し、検出部３０１、構築部３０２および切替部３０３による各種処理を繰り返し実行する。
【００５３】
ここで、上記検出部３０１による検出処理の具体例について説明する。まず、第１の具体例として、検出部３０１は、一連の処理の実行順序に従って一部の処理を検出することとしてもよい。実行順序を特定するための情報は、ＲＯＭやＲＡＭなどの記憶領域に記憶されている。具体的には、実行順序を特定するための情報を記憶領域から読み出して、該情報から特定される実行順序に従って一部の処理を検出する。
【００５４】
たとえば、図４に示した再構成対象となる一連の処理Ａ〜処理Ｄにおいては、ソフトウェアによって実行中の処理Ａ、処理Ｂおよび処理Ｃを『処理Ａ→処理Ｂ→処理Ｃ』の順に検出する。これにより、一連の処理を構成する処理間での演算データの送受信にかかる制御（たとえば、上述したスイッチの制御）を簡素化し、ハードウェアの再構成にかかるオーバーヘッドを削減することができる。
【００５５】
つぎに、第２の具体例として、検出部３０１は、一連の処理の実行順序とは逆の順序に従って一部の処理を検出することとしてもよい。具体的には、実行順序を特定するための情報を記憶領域から読み出して、該情報から特定される実行順序とは逆の順序に従って一部の処理を検出する。
【００５６】
たとえば、図４に示した再構成対象となる一連の処理Ａ〜処理Ｄにおいては、ソフトウェアによって実行中の処理Ａ、処理Ｂおよび処理Ｃを『処理Ｃ→処理Ｂ→処理Ａ』の順に検出する。これにより、一連の処理を構成する処理間での演算データの送受信にかかる制御を簡素化し、ハードウェアの再構成にかかるオーバーヘッドを削減することができる。
【００５７】
つぎに、第３の具体例として、検出部３０１は、予め設定された検出順序に従って一部の処理を検出することとしてもよい。この検出順序は、ユーザによって任意に設定可能である。たとえば、一連の処理を構成する各処理のソフトウェアによる実行時間が長いものから優先的に検出することとしてもよい。これにより、一連の処理のうちボトルネックとなっている処理から順に検出することができる。
【００５８】
また、処理間の演算データの送受信にかかる制御や上記実行時間のトレードオフを考慮して、一連の処理を実行することによって実現される機能の品質に与える影響が大きい処理を優先的に検出することとしてもよい。また、再構成（構築部３０２による構築処理）にかかる時間が少ない処理から優先的に検出することとしてもよい。
【００５９】
検出順序を特定するための情報は、動的再構成装置２００に直接入力することとしてもよく、また、外部のコンピュータ装置から取得することとしてもよい。入力または取得された検出順序を特定するための情報は記憶領域に記憶され、検出部３０１は、この情報を記憶領域から読み出して、該情報から特定される検出順序に従って一部の処理を検出する。
【００６０】
なお、構築部３０２によってハードウェア上に構築された論理回路は、一連の処理が終了した場合に消去することとしてもよい。また、一連の処理を実行する際に、ハードウェア上に別の機能を実現するための論理回路が既に構築されている場合、一部の処理の機能を実現するハードウェアを再構成する時間を利用して、ハードウェア上（構築中の部分は除く）の既に構築されている論理回路を消去することとしてもよい。
【００６１】
（動的再構成装置の動的再構成処理手順）
つぎに、この発明の実施の形態にかかる動的再構成装置２００の動的再構成処理手順について説明する。図５は、この発明の実施の形態にかかる動的再構成装置２００の動的再構成処理手順を示すフローチャートである。
【００６２】
図５のフローチャートにおいて、まず、検出部３０１により、再構成対象となる一連の処理のうちソフトウェアによって実行中の一部の処理を検出する（ステップＳ５０１）。このあと、構築部３０２により、検出部３０１によって検出された一部の処理の機能を実現する論理回路をハードウェア上に構築する（ステップＳ５０２）。
【００６３】
つぎに、切替部３０３により、構築部３０２によって論理回路が構築された結果、一部の処理の実行を、ソフトウェアによる実行からハードウェア上に構築された論理回路による実行に切り替える（ステップＳ５０３）。このあと、判定部３０４により、一連の処理のうちソフトウェアによって実行中の処理の存否を判定する（ステップＳ５０４）。
【００６４】
ここで、ソフトウェアによって実行中の処理が存在すると判定された場合（ステップＳ５０４：Ｙｅｓ）、ステップＳ５０１に戻り、ステップＳ５０１〜ステップＳ５０３の処理を繰り返す。一方、ソフトウェアによって実行中の処理が存在しないと判定された場合（ステップＳ５０４：Ｎｏ）、本フローチャートによる一連の処理を終了する。
【００６５】
以上説明した、この発明の実施の形態によれば、一連の処理の実行中に、一部の処理の実行をソフトウェアによる実行からハードウェアによる実行に切り替えることができる。これにより、一連の処理を継続して実行しながら、段階的に一部の処理の高速化を図ることができる。
【００６６】
また、ソフトウェアによって実行中の処理がなくなるまでハードウェアの再構成をおこなうことにより、一連の処理を構成するすべての処理の実行を、ソフトウェアによる実行からハードウェアによる実行に段階的に切り替えることができる。
【００６７】
また、一連の処理の実行順序、または該実行順序とは逆の順序に従って、一部の処理の実行を、ソフトウェアによる実行からハードウェアによる実行に切り替えることができる。これにより、一連の処理を構成する処理間での演算データの送受信にかかる制御を簡素化し、ハードウェアの再構成にかかるオーバーヘッドを削減することができる。
【００６８】
また、予め設定された検出順序に従って、一部の処理の実行を、ソフトウェアによる実行からハードウェアによる実行に切り替えることができる。具体的には、ボトルネックとなっている処理を優先するなど、一連の処理を実行することによって実現される機能の品質に与える影響が大きい処理を優先的に再構成することにより、より効果的な品質の向上を実現することができる。
【実施例】
【００６９】
つぎに、上述した実施の形態の実施例について説明する。本実施例では、符号化された動画像データを復号するデコード処理を例に挙げて動的再構成について説明する。図６は、デコーダの一連の機能を示すブロック図である。図６において、デコーダの機能は、ＶＬＤ（可変長符号化）と、逆量子化と、ＩＤＣＴ（直行余弦変換）と、ＭＣ（動き補償）と、から構成されている。
【００７０】
具体的には、バッファから読み出されたフレームごとのビットストリームに対して、上記機能（ＶＬＤ、逆量子化、ＩＤＣＴ、ＭＣ）を実現するための一連の処理（ＶＬＤ処理、逆量子化処理、ＩＤＣＴ処理、ＭＣ処理）を実行することにより、復号された映像データがメモリから出力される。ここでは、再構成前の段階において、上記機能は、ソフトウェアによって実現される。
【００７１】
まず、ソフトウェアによる上記機能を実現する一連の処理の実行を開始するとともに、ハードウェアの再構成を開始する。このあと、再構成が完了すると、一部の処理の実行をソフトウェアからハードウェアに切り替える。これにより、デコーダの機能を実現する一連の処理の実行を、ソフトウェアからハードウェアに段階的に切り替え、最終的にデコーダの機能をハードウェアによって実現する。
【００７２】
ここでは、図３に示した検出部３０１による検出処理を、上記機能を実現する一連の処理の実行順序（ＶＬＤ処理→逆量子化処理→ＩＤＣＴ処理→ＭＣ処理）とは逆の順序（ＭＣ処理→ＩＤＣＴ処理→逆量子化処理→ＶＬＤ処理）に従っておこなうこととする。
【００７３】
図７は、動的再構成の概要を示す説明図である。図７において、［ステップＳ１］では、上記機能（ＶＬＤ、逆量子化、ＩＤＣＴ、ＭＣ）を実現する一連の処理（ＶＬＤ処理、逆量子化処理、ＩＤＣＴ処理、ＭＣ処理）がソフトウェアによって実行されている。
【００７４】
［ステップＳ２］では、検出部３０１により、再構成対象となる一連の処理（ＶＬＤ処理、逆量子化処理、ＩＤＣＴ処理、ＭＣ処理）のうちＭＣ処理が検出され、構築部３０２により、ＭＣ処理の機能を実現する論理回路がハードウェア上に構築されている。そして、切替部３０３により、ＭＣ処理の実行が、ソフトウェアによる実行からハードウェア上に構築された論理回路による実行に切り替えられている。
【００７５】
この結果、デコーダの機能を実現する一連の処理（ＶＬＤ処理、逆量子化処理、ＩＤＣＴ処理、ＭＣ処理）のうち、ＶＬＤ処理、逆量子化処理およびＩＤＣＴ処理はソフトウェアによって実行され、再構成が完了したＭＣ処理はハードウェアによって実行される。なお、再構成が完了したＭＣ処理を実行するためのプログラムは、この時点で削除される。
【００７６】
［ステップＳ３］では、検出部３０１により、再構成対象となる一連の処理（ＶＬＤ処理、逆量子化処理、ＩＤＣＴ処理、ＭＣ処理）のうちＩＤＣＴ処理が検出され、構築部３０２により、ＩＤＣＴ処理の機能を実現する論理回路がハードウェア上に構築されている。そして、切替部３０３により、ＩＤＣＴ処理の実行が、ソフトウェアによる実行からハードウェア上に構築された論理回路による実行に切り替えられている。
【００７７】
この結果、デコーダの機能を実現する一連の処理（ＶＬＤ処理、逆量子化処理、ＩＤＣＴ処理、ＭＣ処理）のうち、ＶＬＤ処理および逆量子化処理はソフトウェアによって実行され、再構成が完了したＭＣ処理およびＩＤＣＴ処理はハードウェアによって実行される。なお、再構成が完了したＩＤＣＴ処理を実行するためのプログラムは、この時点で削除される。
【００７８】
［ステップＳ４］では、検出部３０１により、再構成対象となる一連の処理（ＶＬＤ処理、逆量子化処理、ＩＤＣＴ処理、ＭＣ処理）のうち逆量子化処理が検出され、構築部３０２により、逆量子化処理の機能を実現する論理回路がハードウェア上に構築されている。そして、切替部３０３により、ＩＤＣＴ処理の実行が、ソフトウェアによる実行からハードウェア上に構築された論理回路による実行に切り替えられている。
【００７９】
この結果、デコーダの機能を実現する一連の処理（ＶＬＤ処理、逆量子化処理、ＩＤＣＴ処理、ＭＣ処理）のうち、ＶＬＤ処理はソフトウェアによって実行され、再構成が完了したＭＣ処理、ＩＤＣＴ処理および逆量子化処理はハードウェアによって実行される。なお、再構成が完了した逆量子化処理を実行するためのプログラムは、この時点で削除される。
【００８０】
［ステップＳ５］では、検出部３０１により、再構成対象となる一連の処理（ＶＬＤ処理、逆量子化処理、ＩＤＣＴ処理、ＭＣ処理）のうちＶＬＤ処理が検出され、構築部３０２により、ＶＬＤ処理の機能を実現する論理回路がハードウェア上に構築されている。そして、切替部３０３により、ＶＬＤ処理の実行が、ソフトウェアによる実行からハードウェア上に構築された論理回路による実行に切り替えられている。
【００８１】
この結果、デコーダの機能を実現する一連の処理（ＶＬＤ処理、逆量子化処理、ＩＤＣＴ処理、ＭＣ処理）のすべてがハードウェアによって実行される。なお、再構成が完了したＶＬＤ処理を実行するためのプログラムは、この時点で削除される。
【００８２】
図８は、動画像の品質の変動を示すグラフである。図８において、グラフ８００には、図７に示した各［ステップＳ１］〜［ステップＳ５］における動画像の品質が表現されている。グラフ８００において、縦軸は品質［ｆｐｓ］、横軸は時間［Ｔ］を示している。ここでは、単位時間当たりのフレーム数によって品質をあらわしている。つまり、品質が高くなればなるほど単位時間当たりのフレーム数が増加し、より滑らかな動画像が表示されることとなる。
【００８３】
具体的には、ＭＣの機能を実現するハードウェアを再構成中である［ステップＳ１］における動画像の品質は５［ｆｐｓ］である。また、ＩＤＣＴの機能を実現するハードウェアを再構成中である［ステップＳ２］における動画像の品質は６［ｆｐｓ］である。すなわち、ＭＣの機能をハードウェアによって実現することにより、［ステップＳ１］に比べて品質が５［ｆｐｓ］から６［ｆｐｓ］に高くなっている。
【００８４】
また、逆量子化の機能を実現するハードウェアを再構成中である［ステップＳ３］における動画像の品質は９［ｆｐｓ］である。すなわち、ＩＤＣＴの機能をハードウェアによって実現することにより、［ステップＳ２］に比べて品質が６［ｆｐｓ］から９［ｆｐｓ］に高くなっている。
【００８５】
また、ＶＬＤの機能を実現するハードウェアを再構成中である［ステップＳ４］における動画像の品質は１８［ｆｐｓ］である。すなわち、逆量子化の機能をハードウェアによって実現することにより、［ステップＳ３］に比べて品質が９［ｆｐｓ］から１８［ｆｐｓ］に高くなっている。
【００８６】
また、一連の機能（ＶＬＤ、逆量子化、ＩＤＣＴ、ＭＣ）を実現するハードウェアの再構成が完了した［ステップＳ５］における動画像の品質は３０［ｆｐｓ］である。すなわち、ＶＬＤの機能をハードウェアによって実現することにより、［ステップＳ４］に比べて品質が１８［ｆｐｓ］から３０［ｆｐｓ］に高くなっている。
【００８７】
このように、一連の機能（ＶＬＤ、逆量子化、ＩＤＣＴ、ＭＣ）を実現するハードウェアの再構成を、機能ごとに段階的におこなうことにより、１フレームごとのデコード処理にかかる処理時間が徐々に短くなり、動画像の品質を高めることができる。
【００８８】
つぎに、実施例における動的再構成処理手順について説明する。図９は、実施例における動的再構成処理手順を示すフローチャートである。図９のフローチャートにおいて、まず、再構成の開始通知を受け付けたか否かを判断する（ステップＳ９０１）。再構成の開始通知は、ユーザからの動画像の再生指示などである。具体的には、図２に示したキーボード２２１やマウス２２２などの入力装置２２０をユーザが操作することにより再構成の開始通知を受け付けることとしてもよい。
【００８９】
ここで、再構成の開始通知を受け付けるのを待って（ステップＳ９０１：Ｎｏ）、受け付けた場合（ステップＳ９０１：Ｙｅｓ）、デコーダの機能（ＶＬＤ、逆量子化、ＩＤＣＴ、ＭＣ）を実現する一連の処理（ＶＬＤ処理、逆量子化処理、ＩＤＣＴ処理、ＭＣ処理）をソフトウェアによって実行する（ステップＳ９０２）。
【００９０】
具体的には、上記機能（ＶＬＤ、逆量子化、ＩＤＣＴ、ＭＣ）に対応するプログラムをＣＰＵによって実行する。図１０は、ソフトウェアによって一連の処理を実行するためのプログラムの一例を示す説明図である。図１０において、プログラム１０００には、一連の処理（ＶＬＤ処理、逆量子化処理、ＩＤＣＴ処理、ＭＣ処理）を実行するためのソースコードが記述されている。
【００９１】
ＣＰＵは、プログラム１０００内のＷｈｉｌｅ文に従って、一連の処理（ＶＬＤ処理、逆量子化処理、ＩＤＣＴ処理、ＭＣ処理）を実行する。図１０中、Ｓ１はＶＬＤ処理、Ｓ２は逆量子化処理、Ｓ３はＩＤＣＴ処理、Ｓ４はＭＣ処理に対応している。なお、各処理を実行するためのプログラムの詳細は図示および説明を省略する。
【００９２】
つぎに、上記機能（ＶＬＤ、逆量子化、ＩＤＣＴ、ＭＣ）を特定する整数値ｎ（初期値：ｎ＝０）に１をインクリメントする（ステップＳ９０３）。整数値ｎは、上記各機能（ＶＬＤ、逆量子化、ＩＤＣＴ、ＭＣ）に対応しており、ＶＬＤはｎ＝１、逆量子化はｎ＝２、ＩＤＣＴはｎ＝３、ＭＣはｎ＝４に対応している。
【００９３】
このあと、整数値ｎが整数値Ｎよりも小さいか否かを判断する（ステップＳ９０４）。整数値Ｎは、上記機能（ＶＬＤ、逆量子化、ＩＤＣＴ、ＭＣ）の総数をあらわしており、ここでは「４」となる。ここで、整数値ｎが整数値Ｎよりも小さいと判断された場合（ステップＳ９０４：Ｙｅｓ）、整数値ｎから特定される機能を実現するハードウェアの再構成の要否を判断する（ステップＳ９０５）。
【００９４】
具体的には、ソフトウェアによって実行しても処理時間があまりかからない処理については、ハードウェアの再構成は不要であると判断することとしてもよい。また、ハードウェアの再構成が必要な機能が予め設定されており、その設定内容を参照することにより、整数値ｎから特定される機能を実現するハードウェアの再構成の要否を判断することとしてもよい。
【００９５】
ステップＳ９０５において、再構成が不要であると判断された場合（ステップＳ９０５：Ｎｏ）、ステップＳ９０３に戻る。一方、再構成が必要であると判断された場合（ステップＳ９０５：Ｙｅｓ）、整数値ｎから特定される機能を実現するハードウェアの再構成データを記憶領域から読み出して（ステップＳ９０６）、整数値ｎから特定される機能を実現する論理回路をハードウェア上に構築する（ステップＳ９０７）。なお、再構成データは、上述したハードウェア記述情報に相当する。
【００９６】
このあと、整数値ｎから特定される機能を実現するハードウェアの再構成が完了したか否かを判断する（ステップＳ９０８）。ここで、再構成が完了するのを待って（ステップＳ９０８：Ｎｏ）、完了した場合（ステップＳ９０８：Ｙｅｓ）、ステータスレジスタに整数値ｎから特定される機能の終了フラグを立てる（ステップＳ９０９）。
【００９７】
ここで、ステータスレジスタについて説明する。図１１は、ステータスレジスタの一例を示す説明図である。図１１において、ステータスレジスタ１１００は、上記機能（ＶＬＤ、逆量子化、ＩＤＣＴ、ＭＣ）を実現するハードウェアの再構成が完了したか否かを示す終了フラグを保持している。
【００９８】
ステータスレジスタ１１００において、Ｈ１はＶＬＤ、Ｈ２は逆量子化、Ｈ３はＩＤＣＴ、Ｈ４はＭＣの機能を実現するハードウェアをあらわしている。ＣＰＵは、このステータスレジスタ１１００を参照することにより、各機能を実現するハードウェアの再構成が完了したか否かを判断する。図１１においては、ステータスレジスタ１１００を参照することにより、上記機能（ＶＬＤ、逆量子化、ＩＤＣＴ、ＭＣ）のうちＶＬＤの機能を実現するハードウェアの再構成が完了していると判断する。
【００９９】
図１０の説明に戻り、ステップＳ９０９のあと、ステータスレジスタ（たとえば、ステータスレジスタ１１００）に終了フラグを立てた機能の割り込みハンドラを発行して（ステップＳ９１０）、ステップＳ９０３に戻る。すなわち、整数値ｎから特定される機能を実現する処理の実行を、ソフトウェアによる実行からステップＳ９０７において構築された論理回路による実行に切り替える。
【０１００】
また、ステップＳ９０４において、整数値ｎが整数値Ｎよりも大きいと判断された場合（ステップＳ９０４：Ｎｏ）、本フローチャートによる一連の処理を終了する。
【０１０１】
なお、上記ステップＳ９０３における処理は図３に示した検出部３０１による検出処理に相当し、上記ステップ９０６およびステップＳ９０７における処理は構築部３０２による構築処理に相当し、上記ステップ９０９における処理は切替部３０３による切替処理に相当し、上記ステップＳ９０４における処理は判定部３０４による判定処理に相当する。
【０１０２】
ここで、上記動的再構成処理を実行するためのプログラムについて説明する。図１２は、動的再構成処理を実行するためのプログラムの一例を示す説明図である。図１２において、プログラム１２００には、図９に示した動的再構成処理を実現するためのソースコードが記述されている。
【０１０３】
動的再構成装置２００は、このプログラム１２００の記述内容に従って、一連の処理を構成する処理ごとに、ハードウェアが再構成されているか否かを判断する。そして、再構成されている場合には、その処理をハードウェアによって実行し、再構成されていない場合には、その処理をソフトウェアによって代替実行する。
【０１０４】
たとえば、ＭＣの機能を実現するハードウェアの再構成が完了したか否かを判断して、完了した場合は、ＭＣ処理をハードウェアによって実行して、処理を待つ。一方、完了していない場合は、ＭＣ処理をソフトウェアによって実行するという論理的構成となっている。これらの制御を機能ごとにおこない、すべての機能を実現するハードウェアの再構成が完了するまでおこなう。
【０１０５】
以上説明した、この発明の実施例によれば、デコーダの機能を実現する一連の処理（ＶＬＤ処理、逆量子化処理、ＩＤＣＴ処理、ＭＣ処理）の実行中に、一部の処理の実行をソフトウェアによる実行からハードウェアによる実行に切り替えることができる。これにより、デコード処理を継続して実行しながら、一部の処理の高速化を段階的に図ることができる。
【０１０６】
このように、一連の処理を構成するすべての処理の実行を、ソフトウェアによる実行からハードウェアによる実行に段階的に切り替えることにより、ハードウェアの再構成にかかるオーバーヘッドを低減させ、デコード処理の高速化および動画像の品質の向上を図ることができる。
【０１０７】
具体的には、動画像の再生中に、単位時間当たりのフレーム数を徐々に増加させることにより、出力（映像データ）のレスポンスを向上させることができる。この結果、動画像の再生時に、動画像の品質が時間の経過とともに徐々に高くなり、低品質の動画像を視聴し続けることによるユーザのストレスを低減させることができる。
【０１０８】
特に、携帯電話端末など使用可能なハードウェア資源が少ない機器において、本発明にかかるハードウェアの動的再構成を適用することにより、出力のレスポンスを向上させ、適切なサービス（テレビ電話、ワンセグ放送など）の提供を実現することができる。
【０１０９】
以上説明したように、動的再構成プログラム、該プログラムを記録した記録媒体、動的再構成装置および動的再構成方法によれば、ソフトウェアによる機能を段階的にハードウェアに切り替えることにより、ハードウェアの再構成にかかるオーバーヘッドを低減させ、出力のレスポンスの向上および低消費電力を実現することができる。
【０１１０】
なお、本実施の形態で説明した動的再構成方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーションなどのコンピュータで実行することにより実現することができる。このプログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネットなどのネットワークを介して配布することが可能な伝送媒体であってもよい。
【０１１１】
また、本実施の形態で説明した動的再構成装置２００は、スタンダードセルやストラクチャードＡＳＩＣなどの特定用途向けＩＣ（以下、単に「ＡＳＩＣ」と称す。）やＦＰＧＡなどのＰＬＤによっても実現することができる。具体的には、たとえば、上述した動的再構成装置２００の機能的構成３０１〜３０４をＨＤＬ記述によって機能定義し、そのＨＤＬ記述を論理合成してＡＳＩＣやＰＬＤに与えることにより、動的再構成装置２００を製造することができる。
【０１１２】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１１３】
（付記１）再構成対象となる一連の処理の実行をソフトウェアからハードウェアに段階的に切り替えさせる動的再構成プログラムであって、
前記一連の処理のうち前記ソフトウェアによって実行中の一部の処理を検出させる検出工程と、
前記検出工程によって検出された一部の処理の機能を実現する論理回路を前記ハードウェア上に構築させる構築工程と、
前記構築工程によって前記論理回路が構築された結果、前記一部の処理の実行を、前記ソフトウェアによる実行から前記ハードウェア上に構築された論理回路による実行に切り替えさせる切替工程と、
をコンピュータに実行させることを特徴とする動的再構成プログラム。
【０１１４】
（付記２）前記切替工程によって切り替えられた結果、前記一連の処理のうち前記ソフトウェアによって実行中の処理の存否を判定させる判定工程を前記コンピュータに実行させ、
前記判定工程によって前記ソフトウェアによって実行中の処理が存在すると判定された場合、前記検出工程、前記構築工程および前記切替工程を前記コンピュータに実行させることを特徴とする付記１に記載の動的再構成プログラム。
【０１１５】
（付記３）前記検出工程は、
前記一連の処理の実行順序に従って前記一部の処理を検出させることを特徴とする付記１に記載の動的再構成プログラム。
【０１１６】
（付記４）前記検出工程は、
前記一連の処理の実行順序とは逆の順序に従って前記一部の処理を検出させることを特徴とする付記１に記載の動的再構成プログラム。
【０１１７】
（付記５）前記検出工程は、
予め設定された検出順序に従って前記一部の処理を検出させることを特徴とする付記１に記載の動的再構成プログラム。
【０１１８】
（付記６）前記構築工程は、
前記一部の処理の機能を実現するためのハードウェア記述情報を前記ハードウェア上に書き込むことにより、前記一部の処理の機能を実現する論理回路を構築させることを特徴とする付記１に記載の動的再構成プログラム。
【０１１９】
（付記７）付記１〜６のいずれか一つに記載の動的再構成プログラムを記録した前記コンピュータに読み取り可能な記録媒体。
【０１２０】
（付記８）再構成対象となる一連の処理の実行をソフトウェアからハードウェアに段階的に切り替える動的再構成装置であって、
前記一連の処理のうち前記ソフトウェアによって実行中の一部の処理を検出する検出手段と、
前記検出手段によって検出された一部の処理の機能を実現する論理回路を前記ハードウェア上に構築する構築手段と、
前記構築手段によって前記論理回路が構築された結果、前記一部の処理の実行を、前記ソフトウェアによる実行から前記ハードウェア上に構築された論理回路による実行に切り替える切替手段と、
を備えることを特徴とする動的再構成装置。
【０１２１】
（付記９）前記切替手段によって切り替えられた結果、前記一連の処理のうち前記ソフトウェアによって実行中の処理の存否を判定する判定手段を備え、
前記検出手段は、
前記判定手段によって前記ソフトウェアによって実行中の処理が存在すると判定された場合、前記ソフトウェアによって実行中の残余の処理のうち一部の処理を検出することを特徴とする付記８に記載の動的再構成装置。
【０１２２】
（付記１０）前記検出手段は、
前記一連の処理の実行順序に従って前記一部の処理を検出することを特徴とする付記８に記載の動的再構成装置。
【０１２３】
（付記１１）前記検出手段は、
前記一連の処理の実行順序とは逆の順序に従って前記一部の処理を検出することを特徴とする付記８に記載の動的再構成装置。
【０１２４】
（付記１２）前記検出手段は、
予め設定された検出順序に従って前記一部の処理を検出することを特徴とする付記８に記載の動的再構成装置。
【０１２５】
（付記１３）前記構築手段は、
前記一部の処理の機能を実現するためのハードウェア記述情報を前記ハードウェア上に書き込むことにより、前記一部の処理の機能を実現する論理回路を構築することを特徴とする付記８に記載の動的再構成装置。
【０１２６】
（付記１４）再構成対象となる一連の処理の実行をソフトウェアからハードウェアに段階的に切り替える動的再構成方法であって、
前記一連の処理のうち前記ソフトウェアによって実行中の一部の処理を検出する検出工程と、
前記検出工程によって検出された一部の処理の機能を実現する論理回路を前記ハードウェア上に構築する構築工程と、
前記構築工程によって前記論理回路が構築された結果、前記一部の処理の実行を、前記ソフトウェアによる実行から前記ハードウェア上に構築された論理回路による実行に切り替える切替工程と、
を含んだことを特徴とする動的再構成方法。
【０１２７】
（付記１５）前記切替工程によって切り替えられた結果、前記一連の処理のうち前記ソフトウェアによって実行中の処理の存否を判定させる判定工程を含み、
前記判定工程によって前記ソフトウェアによって実行中の処理が存在すると判定された場合、前記検出工程、前記構築工程および前記切替工程を繰り返すことを特徴とする付記１４に記載の動的再構成方法。
【０１２８】
（付記１６）前記検出工程は、
前記一連の処理の実行順序に従って前記一部の処理を検出することを特徴とする付記１４に記載の動的再構成方法。
【０１２９】
（付記１７）前記検出工程は、
前記一連の処理の実行順序とは逆の順序に従って前記一部の処理を検出することを特徴とする付記１４に記載の動的再構成方法。
【０１３０】
（付記１８）前記検出工程は、
予め設定された検出順序に従って前記一部の処理を検出することを特徴とする付記１４に記載の動的再構成方法。
【０１３１】
（付記１９）前記構築工程は、
前記一部の処理の機能を実現するためのハードウェア記述情報を前記ハードウェア上に書き込むことにより、前記一部の処理の機能を実現する論理回路を構築することを特徴とする付記１４に記載の動的再構成方法。
【産業上の利用可能性】
【０１３２】
以上のように、本発明にかかる動的再構成プログラム、該プログラムを記録した記録媒体、動的再構成装置および動的再構成方法は、限られたハードウェア資源を利用して多くの機能を実現する機器に有用である。
【符号の説明】
【０１３３】
２００  動的再構成装置
３０１  検出部
３０２  構築部
３０３  切替部
３０４  判定部
８００，１３１０，１３２０  グラフ
１０００，１２００  プログラム
１１００  ステータスレジスタ
【国際調査報告】
2009022418.tif 000016
2009022418.tif 000017