(57)【要約】命令を実行する演算器が複数実装されているプロセッサ（１０１）は、回路構成が動的に再構成不可能な固定機能演算器（１２１〜１２３）と、回路構成が動的に再構成可能な再構成可能演算器（１２５）と、データの依存性が存在しない命令群の中から、固定機能演算器（１２１〜１２３）および再構成可能演算器（１２５）に対して、個別に命令を割り当て、個別に割り当てた命令を割り当て先に発行する演算制御部（１１３）とを備える。
2007074583.tif 000002
【特許請求の範囲】
【請求項１】
命令を実行する演算器が複数実装されているプロセッサであって、
回路構成が動的に再構成不可能な固定機能演算器と、
回路構成が動的に再構成可能な再構成可能演算器と、
データの依存性が存在しない命令群の中から、前記固定機能演算器および前記再構成可能演算器に対して、命令を個別に割り当てる命令割当手段と、
個別に割り当てられた命令を割り当て先に発行する命令発行手段と
を備えることを特徴とするプロセッサ。
【請求項２】
前記命令割当手段は、前記再構成可能演算器よりも前記固定機能演算器を優先して命令を割り当てる
ことを特徴とする請求項１に記載のプロセッサ。
【請求項３】
前記命令発行手段は、個別に割り当てられた各命令を各割り当て先に並行して発行する
ことを特徴とする請求項１に記載のプロセッサ。
【請求項４】
前記プロセッサは、さらに、
所定の命令が割り当てられたときの前記再構成可能演算器の回路構成が前記所定の命令に適合しない場合は、前記所定の命令に適合する回路構成が定義された構成情報に基づいて回路構成を動的に再構成することを前記再構成可能演算器に指示する構成制御手段
を備えることを特徴とする請求項１に記載のプロセッサ。
【請求項５】
前記プロセッサは、さらに、
２以上の命令に適合する回路構成が定義された構成情報に基づいて回路構成を動的に再構成することを前記再構成可能演算器に指示する構成制御手段を備え、
前記命令割当手段は、前記２以上の命令を前記再構成可能演算器に同時に割り当て、
前記命令発行手段は、前記２以上の命令を前記再構成可能演算器に並行して発行する
ことを特徴とする請求項１に記載のプロセッサ。
【請求項６】
前記構成制御手段は、前記所定の命令の前に、前記再構成可能演算器の回路構成を再構成することが示される構成命令を挿入し、
前記命令発行手段は、前記構成命令を発行した後に、前記所定の命令を発行する
ことを特徴とする請求項４に記載のプロセッサ。
【請求項７】
請求項１に記載のプロセッサが実装されている情報処理装置であって、
実行対象となるソフトウェアプログラムに最適な回路構成が定義された構成情報を保持する構成情報保持手段と、
前記構成情報から決定される前記プロセッサの回路構成に基づいて生成された実行形式の命令コードを記憶する命令記憶手段と、
前記命令コードを実行することを前記プロセッサに指示する前に、前記構成情報に基づいて回路構成を再構成することを前記再構成可能演算器に指示する構成制御手段と
を備えることを特徴とする情報処理装置。
【請求項８】
前記情報処理装置は、さらに、
複数種類の構成情報のテンプレートを保持するテンプレート保持手段と、
複数のソフトウェアプログラムを保持するソフトウェアプログラム保持手段と、
前記実行対象となるソフトウェアプログラムを前記複数のソフトウェアプログラムの中から決定するソフトウェアプログラム決定手段と、
前記実行対象となるソフトウェアプログラムに最適な構成情報のテンプレートを前記複数種類の構成情報のテンプレートの中から選択するテンプレート選択手段と、
前記選択された構成情報のテンプレートに基づいて前記プロセッサの回路構成を仮決定する回路構成仮決定手段と、
前記仮決定された回路構成に基づいて、前記決定されたソフトウェアプログラムから実行形式の命令コードを生成する命令コード生成手段と、
前記生成された命令コードに対する実行サイクルが閾値以下であるか否かを判定する閾値判定手段と、
判定した結果、前記実行サイクルが閾値以下である場合は、前記生成された命令コードを前記命令記憶手段に出力し、前記選択された構成情報のテンプレートを前記構成情報保持手段に出力する出力出段と
を備えることを特徴とする請求項７に記載の情報処理装置。
【請求項９】
複数のソフトウェアプログラムを時分割で実行する場合において、
前記情報処理装置は、
実行対象となるソフトウェアプログラムを所定の時間単位で切り替える切替手段を備え、
前記構成情報保持手段は、ソフトウェアプログラム毎に前記構成情報を保持し、
前記命令記憶手段は、ソフトウェアプログラム毎に前記命令コードを保持し、
前記構成制御部は、実行対象となるソフトウェアプログラムが切り替わる度に、回路構成を再構成することを前記再構成可能演算器に指示する
ことを特徴とする請求項７に記載の情報処理装置。
【請求項１０】
前記情報処理装置は、
ソフトウェアプログラムと回路構成とが対応付けられたテーブルを保持するテーブル保持手段を備え、
前記構成制御手段は、前記テーブルから、前記プロセッサに実行することを指示するソフトウェアプログラムに対応する回路構成を特定し、特定した回路構成が定義された構成情報に基づいて回路構成を再構成することを再構成可能演算器に指示する
ことを特徴とする請求項９に記載の情報処理装置。
【請求項１１】
回路構成が動的に再構成不可能な固定機能演算器と、回路構成が動的に再構成可能な再構成可能演算器とを備えるプロセッサを制御するプロセッサ制御方法であって、
データの依存性が存在しない命令群の中から、前記固定機能演算器および前記再構成可能演算器に対して、命令を個別に割り当てる命令割当ステップと、
個別に割り当てられた命令を割り当て先に発行する命令発行ステップと
を含むことを特徴とするプロセッサ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】  本発明は、動的に再構成可能な演算器を持つプロセッサ、特に、動的に再構成可能な演算器の回路規模を抑えながら、柔軟性かつ高速性が実現されるプロセッサに関する。
【背景技術】
【０００２】  近年、デジタル化された映像・音声などを処理する機器（以下、デジタルＡＶ機器と呼称する。）は、専用のハードウェアや高性能なＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）などが組み込まれている。これは、例えば、圧縮、伸張などのように、デジタル化された映像・音声などを処理するにあたっての演算量が大きいためである。【０００３】  また、例えば、ＭＰＥＧ（Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）２、ＭＰＥＧ４、Ｈ．２６３、Ｈ．２６４などのように、映像・音声などをデジタル化するにあたっての規格が非常に多数実用化されている。これに伴い、デジタルＡＶ機器に対して、複数の規格に対応することが要求されている。この要求に応じる方法として、（１）ハードウェアで処理する方法、（２）ソフトウェアで処理する方法などがある。ここで、（１）ハードウェアで処理する場合については、高速性を実現することができる。ただし、新たな機能を追加するにあたって、新たなハードウェアを追加することが必要となる。また、機能が多数になると、回路の規模が大きくなる。（２）ソフトウェアで処理する場合については、柔軟性を実現することができる。多数の機能をソフトウェアとして実現することができ、容易に機能を追加することができる。ただし、処理速度を上げることが困難である。【０００４】  これに対して、動的に再構成可能な回路を持つプロセッサで処理する技術が提案されている（例えば、特許文献１参照。）。これによって、柔軟性かつ高速性を実現することができる。
【特許文献１】国際公開第２００２／０９５９４６号パンフレット
【発明の開示】
【発明が解決しようとする課題】
【０００５】  しかしながら、従来の技術に示されるように、動的に再構成可能な回路を持つプロセッサは、多数の演算器を備えて演算器間の配線を変更することで、これらの演算器を自由に構成するため、回路規模が大きくなるという課題がある。【０００６】  そこで、本発明は、上記問題に鑑みてなされたものであり、動的に再構成可能な演算器の回路規模を抑えながら、柔軟性かつ高速性が実現されるプロセッサを提供することを目的とする。
【課題を解決するための手段】
【０００７】  上記目的を達成するために、本発明に係わるプロセッサは、（ａ）命令を実行する演算器が複数実装されているプロセッサであって、（ｂ）回路構成が動的に再構成不可能な固定機能演算器と、（ｃ）回路構成が動的に再構成可能な再構成可能演算器と、（ｄ）データの依存性が存在しない命令群の中から、前記固定機能演算器および前記再構成可能演算器に対して、命令を個別に割り当てる命令割当手段と、（ｅ）個別に割り当てられた命令を割り当て先に発行する命令発行手段とを備えることを特徴とする。【０００８】  これによって、通常の固定機能演算器に加え、回路構成が動的に再構成可能な再構成可能演算器を備える。さらに、並列に実行すべき命令を決定するにあたり、機能を変更することができる再構成可能演算器に適した命令を割り当てることによって、回路規模を抑えながら、柔軟性かつ高速性を実現することができる。【０００９】  なお、本発明は、プロセッサとして実現されるだけでなく、プロセッサを備える情報処理装置、プロセッサを制御するプロセッサ制御方法、情報処理装置を制御する方法などとして実現されるとしてもよい。
【発明の効果】
【００１０】  本発明によれば、動的に再構成可能な演算器を持つプロセッサにおいて、再構成可能なハードウェアによる演算器において、複数種類の命令が複数個数同時に実行できるとして命令スケジューリング及び命令発行を行うことにより、回路規模の増大を抑えつつ、高性能かつ柔軟な処理を実現する構成提供することができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、本発明に係わる実施の形態１におけるプロセッサの構成を示す図である。
【図２】図２は、本発明に係わる実施の形態１におけるプロセッサの動作を示すフローチャートである。
【図３Ａ】図３Ａは、本発明に係わる実施の形態１におけるプロセッサにおいて実行される命令群の例を示す図である。
【図３Ｂ】図３Ｂは、本発明に係わる実施の形態１におけるプロセッサにおいて実行される命令群の例を示す図である。
【図３Ｃ】図３Ｃは、本発明に係わる実施の形態１におけるプロセッサの演算部における演算器の構成を示す図である。
【図４】図４は、本発明に係わる実施の形態２におけるプロセッサの構成を示す図である。
【図５】図５は、本発明に係わる実施の形態２におけるプロセッサの動作を示すフローチャートである。
【図６Ａ】図６Ａは、本発明に係わる実施の形態２におけるプロセッサにおいて実行される命令群の例を示す図である。
【図６Ｂ】図６Ｂは、本発明に係わる実施の形態２におけるプロセッサの演算部における演算器の構成の例を示す図である。
【図７】図７は、本発明に係わる実施の形態３におけるプロセッサの構成を示す図である。
【図８】図８は、本発明に係わる実施の形態３におけるプロセッサの動作を示すフローチャートである。
【図９Ａ】図９Ａは、本発明に係わる実施の形態３におけるプロセッサにおいて実行される命令群の動作例を示す図である。
【図９Ｂ】図９Ｂは、本発明に係わる実施の形態３におけるプロセッサにおいて実行される命令群に構成命令を挿入しない場合の動作例を示す図である。
【図９Ｃ】図９Ｃは、本発明に係わる実施の形態３におけるプロセッサにおいて実行される命令群に構成命令を挿入する場合の動作例を示す図である。
【図１０】図１０は、本発明に係わる実施の形態４におけるプロセッサが実装されている情報処理装置の構成を示す図である。
【図１１】図１１は、本発明に係わる実施の形態４におけるプロセッサの構成を示す図である。
【図１２】図１２は、本発明に係わる実施の形態４における生成部の動作の一例を示すフローチャートである。
【図１３】図１３は、本発明に係わる実施の形態４における生成部の動作の変形例を示すフローチャートである。
【図１４】図１４は、本発明に係わる実施の形態５におけるプロセッサが実装されている情報処理装置の構成の例を示す図である。
【図１５】図１５は、本発明に係わる実施の形態５におけるプロセッサにおいて実行されるソフトウェアプログラムに対応する回路構成を示す図である。
【図１６】図１６は、本発明に係わる実施の形態５におけるプロセッサにおいて複数のソフトウェアプログラムを時分割で実行する場合の例を示す図である。
【符号の説明】
【００１２】１０１、２０１、３０１、４０１  プロセッサ
１０２  命令記憶部
１０３、４０３、５０３  構成情報保持部
１１１、４１１  命令フェッチ部
１１２  命令デコード部
１１３、２１３、３１３、４１３  演算制御部
１１４  レジスタファイル
１１５、２１５、３１５、４１５  演算部
１２１〜１２３  固定機能演算器
１３１  命令保持部
１３２  命令選択部
１３３、２３３  命令割当部
１３４、２３４、３３４  構成制御部
１３５  命令発行部
１２５、２２５、３２５、４２５  再構成可能演算器
４００、５００  情報処理装置
４０４、５０４  生成部
４０５、５０５  構成制御部
４０６  ソフトウェアプログラム保持部
４０７  テンプレート保持部
【発明を実施するための最良の形態】
【００１３】  （実施の形態１）
以下、本発明に係る実施の形態１について、図面を参照しながら説明する。【００１４】  本実施の形態に係わるプロセッサは、（ａ）命令を実行する演算器が複数実装されているプロセッサであって、（ｂ）回路構成が動的に再構成不可能な固定機能演算器と、（ｃ）回路構成が動的に再構成可能な再構成可能演算器と、（ｄ）固定機能演算器および再構成可能演算器に対して、データの依存性が存在しない複数の命令の中から個別に命令を割り当てる命令割当機能と、（ｅ）個別に割り当てられた命令を割り当て先に発行する命令発行機能とを備えることを特徴とする。【００１５】  さらに、命令割当機能は、再構成可能演算器よりも固定機能演算器を優先して命令を割り当てる。また、命令発行機能は、個別に割り当てられた各命令を並行して各割り当て先に発行する。【００１６】  また、本実施の形態に係わるプロセッサは、さらに、所定の命令が割り当てられたときの再構成可能演算器の回路構成が所定の命令に適合しない場合は、所定の命令に適合する回路構成が定義された構成情報に基づいて回路構成を動的に再構成することを再構成可能演算器に指示する構成制御機能を備える。【００１７】  以上の点を踏まえて、本実施の形態に係わるプロセッサについて説明する。【００１８】  図１は、本実施の形態におけるプロセッサの構成を示す図である。図１に示されるように、プロセッサ１０１は、命令記憶部１０２に記憶されている命令列を複数の演算器を併用して実行するプロセッサである。ここでは、一例として、プロセッサ１０１は、複数の演算器として固定機能演算器１２１〜１２３と再構成可能演算器１２５とを備える。固定機能演算器１２１〜１２３のそれぞれは、回路構成が動的に再構成不可能な演算器である。再構成可能演算器１２５は、回路構成が動的に再構成可能な演算器である。例えば、回路構成を再構成することが指示されると、構成情報保持部１０３で保持されている構成情報の中から、指示された回路構成が定義された構成情報を選択し、選択した構成情報に基づいて回路構成を再構成する。【００１９】  「構成情報」とは、再構成する演算器が実行可能な１以上の命令に適合した回路構成が定義された情報である。【００２０】  具体的には、プロセッサ１０１は、命令フェッチ部１１１、命令デコード部１１２、演算制御部１１３、レジスタファイル１１４、演算部１１５などを備える。【００２１】  命令フェッチ部１１１は、プロセッサ１０１において実行される命令を命令記憶部１０２から読み出し、読み出した命令を命令デコード部１１２に渡す。命令デコード部１１２は、命令フェッチ部１１１から渡された命令を受け取り、受け取った命令をデコードする。演算制御部１１３は、命令デコード部１１２においてデコードした結果に基づいて、演算部１１５を制御する。レジスタファイル１１４は、演算部１１５において用いられるデータおよび演算した結果を保持する。演算部１１５は、固定機能演算器１２１〜１２３と再構成可能演算器１２５とを備え、各命令に適合する演算処理を実行する。【００２２】  さらに、演算制御部１１３は、命令保持部１３１、命令選択部１３２、命令割当部１３３、構成制御部１３４、および命令発行部１３５を備える。【００２３】  命令保持部１３１は、命令デコード部１１２でデコードされた命令を保持する。命令選択部１３２は、命令保持部１３１で保持されている未発行の命令の中から、データの依存性が存在しない１以上の命令を選択する。【００２４】  命令割当部１３３は、固定機能演算器１２１〜１２３および再構成可能演算器１２５に対して、命令選択部１３２で選択された１以上の命令の中から個別に命令を割り当てる。このとき、再構成可能演算器１２５よりも固定機能演算器１２１〜１２３を優先して命令を割り当てる。【００２５】  構成制御部１３４は、再構成可能演算器１２５の回路構成が再構成可能演算器１２５に割り当てた命令に適合しない場合は、その命令に適合する回路構成が定義された構成情報に基づいて再構成可能演算器１２５の回路構成を動的に再構成させる。【００２６】  命令発行部１３５は、個別に割り当てた命令を割り当て先に発行する。このとき、個別に割り当てた各命令を並行して各割り当て先に発行する。【００２７】  図２は、本実施の形態におけるプロセッサの動作を示すフローチャートである。図２に示されるように、ここでは、命令をデコードしてから命令を発行するまでの手順について説明する。【００２８】  まず、命令デコード部１１２は、命令フェッチ部１１１から受け取った命令をデコードする（Ｓ１０１）。【００２９】  続いて、演算制御部１１３（命令保持部１３１）は、命令デコード部１１２でデコードされた命令を保持する。【００３０】  演算制御部１１３（命令選択部１３２）は、保持している未発行の命令に対して、データの依存性を調べる。さらに、保持している未発行の命令の中から、データの依存性が存在しない命令を選択する（Ｓ１０２）。【００３１】  演算制御部１１３（命令割当部１３３）は、固定機能演算器に割り当てられた索引を検索するにあたって使用される変数Ｘを初期化する（Ｓ１０３）。そして、演算制御部１１３（命令割当部１３３）は、選択した命令、すなわち、データの依存性が存在しない命令が有るか否かを確認する（Ｓ１０４）。確認した結果、データの依存性が存在しない命令が有る限り（Ｓ１０４：Ｙｅｓ）、データの依存性が存在しない命令の中から、割り当てた命令を除いて、固定機能演算器１２１〜１２３のそれぞれに対して、発行可能な命令を検索して割り当てる（Ｓ１０５〜Ｓ１０７）。【００３２】  さらに、演算制御部１１３（命令割当部１３３）は、データの依存性が存在しない命令が有るか否かを確認する（Ｓ１０８）。確認した結果、データの依存性が存在しない命令が有る場合は（Ｓ１０８：Ｙｅｓ）、データ依存性が存在しない命令の中から、割り当てた命令を除いて、再構成可能演算器１２５に対して、発行可能な命令を検索して割り当てる（Ｓ１０９）。このとき、デコードされた時間が最も古い命令を割り当てる。【００３３】  演算制御部１１３（構成制御部１３４）は、割り当てた命令が、現在の回路構成で演算可能か否かを調べる（Ｓ１１０）。調べた結果、現在の回路構成で演算可能でない場合（Ｓ１１０：Ｎｏ）は、再構成可能演算器１２５に対して、回路構成を再構成することを指示する（Ｓ１１１）。【００３４】  そして、演算制御部１１３（命令発行部１３５）は、固定機能演算器１２１〜１２３と再構成可能演算器１２５とのそれぞれに対して、それぞれに割り当てた命令を発行する（Ｓ１１２）。【００３５】  なお、演算制御部１１３（命令発行部１３５）は、データの依存性が存在しない命令が無い場合（Ｓ１０４：Ｎｏ、Ｓ１０８：Ｎｏ）や、現在の回路構成で演算可能な場合（Ｓ１１０：Ｙｅｓ）は、固定機能演算器１２１〜１２３と再構成可能演算器１２５とのそれぞれに対して、それぞれに割り当てた命令を発行する（Ｓ１１２）。【００３６】  図３Ａ、図３Ｂは、本実施の形態におけるプロセッサにおいて実行される命令群の例を示す図である。図３Ｃは、本実施の形態におけるプロセッサの演算部における演算器の構成を示す図である。ここでは、一例として、図３Ａに示されるように、デコードされた時間が古い順に、下記の命令群１５０（命令１５１〜１５５）が演算制御部１１３（命令保持部１３１）の中に格納されている。【００３７】  （命令１５１）ａｄｄ  ｒ８，ｒ１３，ｒ１４    （ｒ１３＋ｒ１４→ｒ８）
（命令１５２）ｓｕｂ  ｒ１０，ｒ１１，ｒ１２  （ｒ１１−ｒ１２→ｒ１０）
（命令１５３）ｍｕｌ  ｒ７，ｒ８，ｒ９        （ｒ８＊ｒ９→ｒ７）
（命令１５４）ｍｕｌ  ｒ１，ｒ５，ｒ６        （ｒ５＋ｒ６→ｒ１）
（命令１５５）ａｄｄ  ｒ１，ｒ２，ｒ３        （ｒ２＋ｒ３→ｒ１）
また、命令１５１、１５２、１５４に対しては、データの依存性が存在しないために、ｔａｇカラムに“○”がセットされている。命令１５３、１５５に対しては、データの依存性が存在するために、ｔａｇカラムに“×”がセットされている。【００３８】  さらに、プロセッサ１０１において実行されるにあたって、命令１５１、１５２、１５５は、演算器として加算／減算器（ＡＬＵ）が使用される。また、命令１５３、１５４は、演算器として乗算器（ＭＵＬ）が使用される。【００３９】  同様に、図３Ｂに示されるように、別の例として、デコードされた時間が古い順に、下記の命令群１６０（命令１６１〜１６５）が演算制御部１１３（命令保持部１３１）の中に格納されている。【００４０】  （命令１６１）ａｄｄ  ｒ８，ｒ１３，ｒ１４    （ｒ１３＋ｒ１４→ｒ８）
（命令１６２）ｍｕｌ  ｒ１０，ｒ１１，ｒ１２  （ｒ１１＊ｒ１２→ｒ１０）
（命令１６３）ｍｕｌ  ｒ７，ｒ８，ｒ９        （ｒ８＊ｒ９→ｒ７）
（命令１６４）ｍｕｌ  ｒ１，ｒ５，ｒ６        （ｒ５＊ｒ６→ｒ１）
（命令１６５）ａｄｄ  ｒ１，ｒ２，ｒ３        （ｒ２＋ｒ３−＋ｒ１）
また、命令１６１、１６２、１６４に対しては、データの依存性が存在しないために、ｔａｇカラムに“○”がセットされている。命令１６３、１６５に対しては、データの依存性が存在するために、ｔａｇカラムに“×”がセットされている。【００４１】  さらに、プロセッサ１０１において実行されるにあたって、命令１６１、１６５は、演算器として加算／減算器（ＡＬＵ）が使用される。また、命令１６２〜１６４は、演算器として乗算器（ＭＵＬ）が使用される。【００４２】  なお、図３Ｃに示されるように、これらの例において、演算部１１５は、固定機能演算器１２１（Ａｄｄ／Ｓｕｂ演算器）、固定機能演算器１２２（Ｍｕｌ演算器）、固定機能演算器１２３（Ｌｄ／Ｓｔ演算器）を備える。さらに、これらの固定機能演算器１２１〜１２３とは別に再構成可能演算器１２５を備える。【００４３】  ここで、Ａｄｄ／Ｓｕｂ演算器とは、加算／減算器（ＡＬＵ）である。Ｍｕｌ演算器とは、乗算器（ＭＵＬ）である。Ｌｄ／Ｓｔ演算器とは、ロード／ストア器（ＬＤ／ＳＴ）である。【００４４】  例えば、演算制御部１１３（命令割当部１３３）は、命令群１５０（例えば、図３Ａ参照。）の中から、固定機能演算器１２１（Ａｄｄ／Ｓｕｂ演算器）に対して発行可能な命令１５１、１５２のうち、デコードされた時間が古い命令１５１を、固定機能演算器１２１（Ａｄｄ／Ｓｕｂ演算器）に割り当てる。固定機能演算器１２２（Ｍｕｌ演算器）に対して発行可能な命令１５４を、固定機能演算器１２２（Ｍｕｌ演算器）に割り当てる。固定機能演算器１２３（Ｌｄ／Ｓｔ演算器）に対して発行可能な命令が存在しないために、固定機能演算器１２３（Ｌｄ／Ｓｔ演算器）に何も割り当てない。そして、再構成可能演算器１２５に対して発行可能な命令１５２を、再構成可能演算器１２５に割り当てる。【００４５】  また、演算制御部１１３（命令割当部１３３）は、命令群１６０（例えば、図３Ｂ参照。）の中から、固定機能演算器１２１（Ａｄｄ／Ｓｕｂ演算器）に対して発行可能な命令１６１を、固定機能演算器１２１（Ａｄｄ／Ｓｕｂ演算器）に割り当てる。固定機能演算器１２２（Ｍｕｌ演算器）に対して発行可能な命令１６２、１６４のうち、デコードされた時間が古い命令１６２を固定機能演算器１２２（Ｍｕｌ演算器）に割り当てる。固定機能演算器１２３（Ｌｄ／Ｓｔ演算器）に対して発行可能な命令が存在しないために、固定機能演算器１２３（Ｌｄ／Ｓｔ演算器）に何も割り当てない。そして、再構成可能演算器１２５（Ｒｅｃｏｎｆ演算器）に対して発行可能な命令１６４を、再構成可能演算器１２５（Ｒｅｃｏｎｆ演算器）に割り当てる。【００４６】  以上、本実施の形態に係わるプロセッサ１０１によれば、固定機能演算器１２１などの数を制約しても、再構成可能演算器１２５に命令を割り当てることができるため、回路規模を抑えながら、命令の並列度を向上させることができる。【００４７】  （実施の形態２）
次に、本発明に係わる実施の形態２について、図面を参照しながら説明する。【００４８】  本実施の形態に係わるプロセッサは、さらに、２以上の命令に適合する回路構成が定義された構成情報に基づいて再構成可能演算器の回路構成を動的に再構成させる構成制御機能を備える。これに伴い、命令割当機能は、２以上の命令を再構成可能演算器に同時に割り当て、命令発行機能は、２以上の命令を並行して再構成可能演算器に発行することを特徴とする。【００４９】  以上の点を踏まえて、本実施の形態に係わるプロセッサについて説明する。なお、実施の形態１に係わるプロセッサと同一の構成要素については、同一の参照符号を付して説明を省略する。【００５０】  図４は、本実施の形態におけるプロセッサの構成を示す図である。図４に示されるように、プロセッサ２０１は、実施の形態１におけるプロセッサ１０１（例えば、図１参照。）と比べて、下記（１）、（２）の点が異なる。【００５１】  （１）演算制御部１１３の代わりに、演算制御部２１３を備える。【００５２】  演算制御部２１３（命令割当部２３３）は、２以上の命令を再構成可能演算器２２５に同時に割り当てることができる。さらに、演算制御部２１３（構成制御部２３４）は、２以上の命令に適合する回路構成が定義された構成情報に基づいて再構成可能演算器２２５の回路構成を動的に再構成させる。そして、演算制御部２１３（命令発行部２３５）は、２以上の命令を並行して再構成可能演算器２２５に発行する。すなわち、演算制御部２１３は、再構成可能演算器２２５に対して、複数の命令を割り当て発行することができる。【００５３】  （２）演算部１１５の代わりに、演算部２１５を備える。【００５４】  演算部２１５は、１つの命令しか実行することができなかった再構成可能演算器１２５の代わりに、回路規模が許す限り、１以上の命令を並行して実行することができる再構成可能演算器２２５を備える。すなわち、再構成可能演算器２２５は、最大ｎ（ｎは自然数。）までの命令を並列に実行することができる回路構成を構成することができる。なお、再構成可能演算器２２５は、ｎ種類の演算回路を１個ずつ構成するとしてもよいし、１種類の演算回路をｎ個構成するとしてもよいし、計ｎ個までである限り複数の種類の演算回路を複数個構成するとしてもよい。【００５５】  なお、これに限定される訳ではないが、ここでは、一例として、再構成可能演算器２２５の回路規模を、同時に、２つの乗算器を動的に再構成することができなくても、加算／減算器と乗算器とを動的に再構成することができる回路規模とする。【００５６】  図５は、本実施の形態におけるプロセッサの動作を示すフローチャートである。図５に示されるように、演算制御部２１３（命令割当部２３３）は、データの依存性が存在しない命令が有るか否かを確認した結果（Ｓ１０８）、データの依存性が存在しない命令が有る場合（Ｓ１０８：Ｙｅｓ）は、データの依存性が存在しない命令の中から、割り当てた命令を除いて、回路規模が許す限り、再構成可能演算器２２５に対して、発行可能な命令を検索して割り当てる（Ｓ１０９、Ｓ２０１、Ｓ２０２）。このとき、デコードされた時間が最も古い命令から順に割り当てる。【００５７】  そして、演算制御部２１３（構成制御部２３４）は、割り当てた命令が、現在の回路構成で演算可能か否かを調べる（Ｓ１１０）。調べた結果、現在の回路構成で演算可能でない場合は、再構成可能演算器２２５に対して、回路構成を再構成することを指示する（Ｓ１１１）。【００５８】  なお、演算制御部２１３（命令割当部２３３）は、データの依存性が存在しない命令が無い場合（Ｓ２０２：Ｎｏ）は、スケジューリングした命令が、現在の回路構成で演算可能か否かを調べる（Ｓ１１０）。【００５９】  図６Ａは、本実施の形態におけるプロセッサにおいて実行される命令群の例を示す図である。図６Ｂは、本実施の形態におけるプロセッサの演算部における演算器の構成の例を示す図である。ここでは、一例として、図６Ａに示されるように、デコードされた時間が古い順に、下記の命令群２５０（命令２５１〜２５５）が演算制御部２１３（命令保持部１３１）の中に格納されている。【００６０】  （命令２５１）ａｄｄ  ｒ８，ｒ１３，ｒ１４    （ｒ１３＋ｒ１４→ｒ８）
（命令２５２）ｍｕｌ  ｒ１０，ｒ１１，ｒ１２  （ｒ１１＊ｒ１２→ｒ１０）
（命令２５３）ｍｕｌ  ｒ７，ｒ８，ｒ９        （ｒ８＊ｒ９→ｒ７）
（命令２５４）ｍｕｌ  ｒ１，ｒ５，ｒ６        （ｒ５＊ｒ６→ｒ１）
（命令２５５）ａｄｄ  ｒ４，ｒ２，ｒ３        （ｒ２＋ｒ３→ｒ４）
また、命令２５１、２５２、２５４、２５５に対しては、データの依存性が存在しないために、ｔａｇカラムに“○”がセットされている。命令２５３に対しては、データの依存性が存在するために、ｔａｇカラムに“×”がセットされている。【００６１】  さらに、プロセッサ２０１において処理されるにあたって、命令２５１、２５５は、演算器として加算／減算器（ＡＬＵ）が使用される。また、命令２５２〜２５４は、演算器として乗算器（ＭＵＬ）が使用される。【００６２】  なお、図６Ｂに示されるように、この例において、演算部２１５は、再構成可能演算器１２５の代わりに、回路規模が許す限り、同時に複数の演算器を動的に再構成することができる再構成可能演算器２２５を備える。【００６３】  例えば、演算制御部２１３（命令割当部２３３）は、命令群２５０（例えば、図６Ａ参照。）の中から、固定機能演算器１２１（Ａｄｄ／Ｓｕｂ演算器）に対して発行可能な命令２５１、２５５のうち、デコードされた時間が古い命令２５１を、固定機能演算器１２１（Ａｄｄ／Ｓｕｂ演算器）に割り当てる。固定機能演算器１２２（Ｍｕｌ演算器）に対して発行可能な命令２５２、２５４のうち、デコードされた時間が古い命令２５２を、固定機能演算器１２２（Ｍｕｌ演算器）に割り当てる。固定機能演算器１２３（Ｌｄ／Ｓｔ演算器）に対して発行可能な命令が存在しないため、固定機能演算器１２３（Ｌｄ／Ｓｔ演算器）に何も割り当てない。そして、データの依存性が存在しない命令２５１、２５２、２５４、２５５の中から、割り当てた命令２５１、２５２を除いて、再構成可能演算器２２５（Ｒｅｃｏｎｆ演算器）に対して発行可能な命令２５４、２５５のうち、回路規模が許す限り、複数の命令を、再構成可能演算器２２５（Ｒｅｃｏｎｆ演算器）に割り当てる。ここでは、再構成可能演算器２２５が同時に加算／減算器（ＡＬＵ）と乗算器（ＭＵＬ）とを動的に再構成することができることにより、命令２５４、２５５を再構成可能演算器２２５に割り当てる。【００６４】  以上、本実施の形態に係わるプロセッサ２０１によれば、固定機能演算器に対して、数を制約しても、再構成可能演算器２２５に対して、複数の命令を同時に割り当てることができるため、回路規模を抑えながら、命令の並列度を向上させることができる。【００６５】  （実施の形態３）
次に、本発明に係わる実施の形態３について、図面を参照しながら説明する。【００６６】  本実施の形態に係わるプロセッサにおいて、構成制御機能は、所定の命令の前に、再構成可能演算器の回路構成を再構成することが示される構成命令を挿入し、命令発行機能は、構成命令を発行した後に、所定の命令を発行することを特徴とする。【００６７】  以上の点を踏まえて、本実施の形態に係わるプロセッサについて説明する。なお、実施の形態１に係わるプロセッサと同一の構成要素については、同一の参照符号を付して説明を省略する。【００６８】  図７は、本実施の形態におけるプロセッサの構成を示す図である。図７に示されるように、プロセッサ３０１は、実施の形態１におけるプロセッサ１０１（例えば、図１参照。）と比べて、下記（１）、（２）の点が異なる。【００６９】  （１）演算制御部１１３の代わりに、演算制御部３１３を備える。【００７０】  演算制御部３１３（構成制御部３３４）は、所定の命令が割り当てられたときの再構成可能演算器３２５の回路構成が所定の命令に適合しない場合は、所定の命令に適合する回路構成が定義された構成情報に基づいて回路構成を動的に再構成することを再構成可能演算器３２５に指示する。【００７１】  このとき、演算制御部３１３（命令発行部３３５）は、所定の命令を再構成可能演算器３２５に発行する前に、再構成可能演算器３２５の回路構成を再構成することが示される第２の命令（以下、構成命令と呼称する。）を再構成可能演算器３２５に発行する。【００７２】  すなわち、演算制御部３１３は、再構成可能演算器３２５の回路構成が適合しないために所定の命令を発行しても実行できない場合は、代わりに構成命令を発行し、その間に、回路構成を再構成させ、再構成させた後に、所定の命令を発行する。【００７３】  （２）演算部１１５の代わりに、演算部３１５を備える。【００７４】  演算部３１５は、再構成可能演算器１２５の代わりに、再構成可能演算器３２５を備える。再構成可能演算器３２５は、構成命令を受けても何もせずに廃棄する。【００７５】  なお、再構成可能演算器３２５は、構成制御部３３４から指示を受けて回路構成を再構成する代わりに、構成命令を受けて回路構成を再構成するとしてもよい。【００７６】  図８は、本実施の形態におけるプロセッサの動作を示すフローチャートである。図８に示されるように、演算制御部３１３（命令発行部３３５）は、現在の回路構成で演算可能でない場合（Ｓ１１０：Ｎｏ）は、再構成可能演算器３２５に対して割り当てた発行可能な命令を次のサイクルにおいて優先的に発行し、代わりに構成命令を発行する（Ｓ３１１）。【００７７】  図９Ａは、本実施の形態におけるプロセッサにおいて実行される命令群の動作例を示す図である。図９Ｂは、本実施の形態におけるプロセッサにおいて実行される命令群に構成命令を挿入しない場合の動作例を示す図である。図９Ｃは、本実施の形態におけるプロセッサにおいて実行される命令群に構成命令を挿入する場合の動作例を示す図である。ここでは、一例として、図９Ａに示されるように、下記の命令組３５１、３５２について説明する。【００７８】  命令組３５１は、固定機能演算器１２１（Ａｄｄ／Ｓｕ���演算器）に割り当てられたａｄｄ（１）命令と、固定機能演算器１２２（Ｍｕｌ演算器）に割り当てられたｍｕｌ（１）命令と、再構成可能演算器３２５（Ｒｅｃｏｎｆ演算器）に割り当てられたａｄｄ（２）命令とからなる。【００７９】  命令組３５２は、固定機能演算器１２１（Ａｄｄ／Ｓｕｂ演算器）に割り当てられたａｄｄ（３）命令と、固定機能演算器１２２（Ｍｕｌ演算器）に割り当てられたｍｕｌ（２）命令と、再構成可能演算器３２５（Ｒｅｃｏｎｆ演算器）に割り当てられたｍｕｌ（３）命令とからなる。【００８０】  なお、これらの命令は、従来では、図９Ｂに示されるように、実際には下記のステップ３６１〜３６３のように動作する。このとき、ステップ３６２においてオーバーヘッドが存在する。【００８１】  （ステップ３６１）固定機能演算器１２１（Ａｄｄ／Ｓｕｂ演算器）に対してａｄｄ（１）命令が、固定機能演算器１２２（Ｍｕｌ演算器）に対してｍｕｌ（１）命令が、再構成可能演算器３２５（Ｒｅｃｏｎｆ演算器）に対してａｄｄ（２）命令が、発行される。【００８２】  （ステップ３６２）固定機能演算器１２１（Ａｄｄ／Ｓｕｂ演算器）に対してｈａｌｔ命令が、固定機能演算器１２２（Ｍｕｌ演算器）に対してｈａｌｔ命令が、再構成可能演算器３２５（Ｒｅｃｏｎｆ演算器）に対してｒｅｃｏｎｆｉｇｕｒｅ命令が、発行される。【００８３】  （ステップ３６３）固定機能演算器１２１（Ａｄｄ／Ｓｕｂ演算器）に対してａｄｄ（３）命令が、固定機能演算器１２２（Ｍｕｌ演算器）に対してｍｕｌ（２）命令が、再構成可能演算器３２５（Ｒｅｃｏｎｆ演算器）に対してｍｕｌ（３）命令が、発行される。【００８４】  これに対して、図９Ｃに示されるように、演算制御部３１３（命令発行部３３５）は、下記のサイクル３７１〜３７３のように並行して命令を発行する。【００８５】  （サイクル３７１）固定機能演算器１２１（Ａｄｄ／Ｓｕｂ演算器）に対してａｄｄ（１）命令を、固定機能演算器１２２（Ｍｕｌ演算器）に対してｍｕｌ（１）命令を、再構成可能演算器３２５（Ｒｅｃｏｎｆ演算器）に対してａｄｄ（１）命令を、並行して発行する。【００８６】  （サイクル３７２）固定機能演算器１２１（Ａｄｄ／Ｓｕｂ演算器）に対してａｄｄ（３）命令を、固定機能演算器１２２（Ｍｕｌ演算器）に対してｍｕｌ（２）命令を、再構成可能演算器３２５（Ｒｅｃｏｎｆ演算器）に対してｉｎｓｔ＿ｒｅｃ（ｍｕｌ）命令を、並行して発行する。ここで、ｉｎｓｔ＿ｒｅｃ（ｍｕｌ）命令とは、再構成可能演算器３２５を、乗算器（ＭＵＬ）に再構成することを指示している。【００８７】  （サイクル３７３）再構成が完了した再構成可能演算器３２５に対してｍｕｌ（３）命令を発行する。このとき、固定機能演算器１２１（Ａｄｄ／Ｓｕｂ演算器）および固定機能演算器１２２（Ｍｕｌ演算器）に対して、命令を割り当てておくことで、命令の発行効率が向上する。【００８８】  以上、本実施の形態に係わるプロセッサ３０１によれば、所定の命令を再構成可能演算器３２５に割り当てることによって再構成可能演算器３２５の回路構成が再構成される場合は、所定の命令を発行する前に構成命令を再構成可能演算器に発行する。これによって、��構成に時間を要しても、固定機能演算器に割り当てられた命令を構成命令にあわせて発行することができる。すなわち、再構成が完了するまで、固定機能演算器に割り当てられた命令までも、所定の命令にあわせて発行待ちになることを回避することができる。【００８９】  （実施の形態４）
次に、本発明に係わる実施の形態４について、図面を参照しながら説明する。【００９０】  本実施の形態に係わるプロセッサが実装されている情報処理装置は、（ａ）実行対象となるソフトウェアプログラムに最適な回路構成が定義された構成情報を保持する構成情報保持機能と、（ｂ）構成情報から決定されるプロセッサの回路構成に基づいて生成された実行形式の命令コードを記憶する命令記憶機能と、（ｃ）命令コードを実行することをプロセッサに指示する前に、構成情報に基づいて回路構成を再構成することを再構成可能演算器に指示する構成制御機能とを備えることを特徴とする。【００９１】  また、情報処理装置は、さらに、（ａ）複数種類の構成情報のテンプレートを保持するテンプレート保持機能と、（ｂ）複数のソフトウェアプログラムを保持するソフトウェアプログラム保持機能と、（ｃ）実行対象となるソフトウェアプログラムを複数のソフトウェアプログラムの中から決定するソフトウェアプログラム決定機能と、（ｄ）決定されたソフトウェアプログラムに最適な構成情報のテンプレートを複数種類の構成情報のテンプレートの中から選択するテンプレート選択機能と、（ｅ）選択された構成情報のテンプレートに基づいてプロセッサの回路構成を仮決定する回路構成仮決定機能と、（ｆ）仮決定された回路構成に基づいて、決定されたソフトウェアプログラムから実行形式の命令コードを生成する命令コード生成機能と、（ｇ）生成された命令コードに対する実行サイクルが閾値以下であるか否かを判定する閾値判定機能と、（ｈ）判定した結果、実行サイクルが閾値以下である場合は、生成された命令コードを命令記憶機能に出力し、選択された構成情報のテンプレートを構成情報保持機能に出力する出力機能とを備えるとしてもよい。【００９２】  以上の点を踏まえて、本実施の形態に係わるプロセッサおよび本実施の形態に係わるプロセッサが実装されている情報処理装置について説明する。なお、実施の形態１に係わるプロセッサと同一の構成要素については、同一の参照符号を付して説明を省略する。【００９３】  図１０は、本実施の形態におけるプロセッサが実装されている情報処理装置の構成を示す図である。図１０に示されるように、情報処理装置４００は、プロセッサ４０１、命令記憶部１０２、構成情報保持部４０３、生成部４０４、構成制御部４０５、ソフトウェアプログラム保持部４０６、およびテンプレート保持部４０７を備える。なお、生成部４０４は、ソフトウェアプログラム決定機能と、テンプレート選択機能と、回路構成仮決定機能と、命令コード生成機能と、閾値判定機能と、出力機能とを少なくとも備える。また、情報処理装置４００は、内部バスを介して相互に接続されているプロセッサとメモリとを少なくとも備えている。【００９４】  プロセッサ４０１は、命令記憶部１０２に記憶されている最適化コードを読み出して実行する。【００９５】  命令記憶部１０２は、生成部４０４から出力された最適化コードを記憶する。【００９６】  構成情報保持部４０３は、生成部４０４から出力された構成情報のテンプレートを構成情報として保持する。なお、構成情報のテンプレートには、１以上の演算回路が定義されている。なお、構成情報保持部���０３は、プロセッサ４０１に内蔵されているとしてもよい。【００９７】  生成部４０４は、実行対象となるソフトウェアプログラムを複数のソフトウェアプログラムの中から決定する。決定したソフトウェアプログラムに最適なテンプレートを複数種類の構成情報のテンプレートの中から選択する。ここで、複数のソフトウェアプログラムは、ソフトウェアプログラム保持部４０６に保持されている。複数種類の構成情報のテンプレートは、テンプレート保持部４０７に保持されている。【００９８】  さらに、生成部４０４は、選択したテンプレートに基づいてプロセッサ４０１の回路構成（以下、アーキテクチャと呼称する。）を仮決定する。仮決定したアーキテクチャに基づいて、決定したソフトウェアプログラムを最適化して最終的な実行形式の命令コード（以下、最適化コードと呼称する。）を生成する。生成した最適化コードが目標とする性能を満たしている場合、すなわち、生成した最適化コードに対する実行サイクルが、あらかじめ定められた閾値以下である場合は、生成した最適化コードを命令記憶部１０２に出力し、選択した構成情報のテンプレートを構成情報保持部４０３に出力する。一方、目標とする性能を満たしていない場合、すなわち、実行サイクルが閾値を超えている場合は、次の構成情報のテンプレートを選択し、処理を繰り返す。【００９９】  なお、生成部４０４は、全ての構成情報のテンプレートを選択した場合は、実行サイクルが最小となる構成情報のテンプレートを全ての構成情報のテンプレートの中から選択する。選択した構成情報のテンプレートを使用して生成した最適化コードを命令記憶部１０２に出力し、選択した構成情報のテンプレートを構成情報保持部４０３に出力する。ここで、生成部４０４は、選択した構成情報のテンプレートを構成情報保持部４０３に出力するまで、構成情報のテンプレート毎に実行サイクルと最適化コードとを記憶しているものとする。【０１００】  なお、生成部４０４は、生成した最適化コードに対する実行サイクルを評価するにあたって、プロセッサ４０１のシミュレーションによって評価するとしてもよいし、プロセッサ４０１を実際に用いて評価するとしてもよい。【０１０１】  構成制御部４０５は、命令記憶部１０２に記憶されている最適化コードを実行することをプロセッサ４０１に指示する前に、構成情報保持部４０３で保持されている構成情報に基づいて回路構成を再構成することを再構成可能演算器４２５に指示する。なお、構成制御部４０５は、プロセッサ４０１に内蔵されているとしてもよい。【０１０２】  ソフトウェアプログラム保持部４０６は、複数のソフトウェアプログラムを保持する。【０１０３】  テンプレート保持部４０７は、複数種類の構成情報のテンプレートを保持する。【０１０４】  図１１は、本実施の形態におけるプロセッサの構成を示す図である。図１１に示されるように、プロセッサ４０１は、実施の形態１におけるプロセッサ１０１（例えば、図１参照。）と比べて、下記（１）〜（３）の点が異なる。【０１０５】  （１）命令フェッチ部１１１の代わりに、命令フェッチ部４１１を備える。【０１０６】  命令フェッチ部４１１は、実行対象となるソフトウェアプログラムの最適化コ��ドを実行することを構成制御部４０５から指示されると、実行対象となるソフトウェアプログラムの最適化コードを命令記憶部１０２から読み出す。【０１０７】  （２）演算制御部１１３の代わりに、演算制御部４１３を備える。【０１０８】  演算制御部４１３は、再構成可能演算器４２５の回路構成を命令単位で再構成させないでソフトウェアプログラム単位で再構成させるので、構成制御部１３４を備えない。ソフトウェアプログラムの実行中は、実行前に再構成された再構成可能演算器４２５の回路構成に適合する命令を割り当てて発行する。【０１０９】  （３）演算部１１５の代わりに、演算部４１５を備える。【０１１０】  演算部４１５は、再構成可能演算器１２５の代わりに、再構成可能演算器４２５を備える。再構成可能演算器４２５は、回路構成を再構成することを構成制御部４０５から指示されると、実行対象となるソフトウェアプログラムに対応する構成情報に基づいて回路構成を再構成する。このとき、複数の演算回路が定義された構成情報に基づいて再構成した場合は、再構成した回路構成で実行可能な複数の命令を並行して実行する。【０１１１】  図１２は、本実施の形態における生成部の動作の一例を示すフローチャートである。図１２に示されるように、生成部４０４は、実行対象となるソフトウェアプログラムを複数のソフトウェアプログラムの中から決定する（Ｓ４０１）。決定したソフトウェアプログラムに最適なテンプレートを複数のテンプレートの中から選択する（Ｓ４０２、Ｓ４０３）。選択したテンプレートに基づいてプロセッサ４０１のアーキテクチャ（演算器構成）を仮決定する（Ｓ４０４）。仮決定したアーキテクチャ（演算器構成）に基づいて、選択したソフトウェアプログラムから最適化コードを生成する（Ｓ４０５）。生成した最適化コードが目標とする性能を満たしている場合、すなわち、生成した最適化コードに対する実行サイクルが、あらかじめ定められた閾値以下である場合は（Ｓ４０６：Ｙｅｓ）、生成した最適化コードを命令記憶部１０２に出力し、選択したテンプレートを構成情報保持部４０３に出力する（Ｓ４１０）。一方、目標とする性能を満たしていない場合、すなわち、実行サイクルが閾値を超えている場合は（Ｓ４０６：Ｎｏ）、次のテンプレートを選択し（Ｓ４０７）、処理を繰り返す（Ｓ４０８：Ｎｏ）。【０１１２】  なお、生成部４０４は、全てのテンプレートを選択した場合は（Ｓ４０８：Ｙｅｓ）、実行サイクルが最小となるテンプレートを全てのテンプレートの中から選択する（Ｓ４０９）。選択したテンプレートを使用して生成した最適化コードを命令記憶部１０２に出力し、選択したテンプレートを構成情報保持部４０３に出力する（Ｓ４１０）。【０１１３】  なお、図１３に示されるように、ステップＳ４０６を省略するとしてもよい。【０１１４】  以上、本実施の形態に係わるプロセッサ４０１が実装されている情報処理装置４００によれば、命令単位で回路構成を再構成することを指示する代わりに、ソフトウェアプログラム単位で回路構成を再構成することを指示する。これによって、ソフトウェアプログラムの実行中に回路構成を再構成しないので、回路構成を再構成することに伴う電力の消費を抑える���とができる。また、回路構成を再構成するにあたって時間が掛かる場合は、再構成によって生じる命令発行待ちの状態を解消することができる。すなわち、回路規模を抑えながら、命令の並列度を向上させることができる。さらに、消費電力を抑えることができる。【０１１５】  （実施の形態５）
次に、本発明に係わる実施の形態５について、図面を参照しながら説明する。【０１１６】  本実施の形態に係わる情報処理装置は、（ａ）複数のソフトウェアプログラムを時分割で実行する場合において、（ｂ）実行対象となるソフトウェアプログラムを所定の時間単位で切り替える切替機能を備え、（ｃ）構成情報保持機能は、ソフトウェアプログラム毎に構成情報を保持し、（ｄ）命令記憶機能は、ソフトウェアプログラム毎に命令コードを保持し、（ｅ）構成制御機能は、実行対象となるソフトウェアプログラムが切り替わる度に、回路構成を再構成することを再構成可能演算器に指示することを特徴とする。【０１１７】  以上の点を踏まえて、本実施の形態に係わる情報処理装置について説明する。なお、実施の形態４における情報処理装置と同一の構成要素については、同一の参照符号を付して説明を省略する。【０１１８】  図１４は、本実施の形態における情報処理装置の構成を示す図である。図１４に示されるように、情報処理装置５００は、ソフトウェアプログラム保持部５０６に保持されている複数のソフトウェアプログラムを時分割で実行する。このとき、実行対象となるソフトウェアプログラムを切り替える度に、再構成可能演算器４２５（例えば、図１１参照。）の回路構成を再構成する。なお、生成部５０４は、切替機能を備える。【０１１９】  具体的には、あらかじめ、生成部５０４は、ソフトウェアプログラム毎に最適化コードを生成する。生成した最適化コードを命令記憶部１０２に出力する。また、ソフトウェアプログラム毎に最適な構成情報を複数種類の構成情報のテンプレートの中から選択する。選択した構成情報のテンプレートを構成情報保持部５０３に出力する。なお、構成情報保持部５０３は、プロセッサ４０１に内蔵されているとしてもよい。【０１２０】  ここで、生成部５０４から出力された最適化コードは、ソフトウェアプログラム毎に命令記憶部１０２に記憶される。また、生成部５０４から出力された構成情報のテンプレートは、ソフトウェアプログラム毎に構成情報として構成情報保持部５０３に保持される。【０１２１】  なお、ソフトウェアプログラムに最適な構成情報のテンプレートは、実施の形態４において説明した手法によって選択されることが好ましい。【０１２２】  そして、構成制御部５０５は、実行対象となるソフトウェアプログラムを切り替える度に、実行対象となるソフトウェアプログラムに対応する構成情報に基づいて回路構成を再構成することを再構成可能演算器４２５に指示する。さらに、実行対象となるソフトウェアプログラムの最適化コードを実行することをプロセッサ４０１に指示する。これに伴い、プロセッサ４０１は、実行対象となるソフトウェアプログラムの最適化コードを命令記憶部１０２から読み出し、読み出した最適化コードを実行する。なお、構成制御部５０５は、プロセッサ４０１に内蔵されているとしてもよい。【０１２３】  図１５は、本実施の形態５におけるプロセッサにおいて実行されるソフトウェアプログラムに対応する回路構成を示す図である。ここでは、一例として、図１５に示されるように、生成部５０４は、ソフトウェアプログラムＡの最適化コードを生成する場合は、回路構成Ａ（Ａｄｄ��Ｓｕｂ、Ｍｕｌ）が定義されたテンプレートを複数のテンプレートの中から選択する。同様に、ソフトウェアプログラムＢの最適化コードを生成する場合は、回路構成Ｂ（Ａｄｄ／Ｓｕｂ、Ｌｄ／Ｓｔ）が定義されたテンプレートを選択する。ソフトウェアプログラムＣの最適化コードを生成する場合は、回路構成Ｃ（Ｍｕｌ、Ｌｄ／Ｓｔ）が定義されたテンプレートを選択する。【０１２４】  これに伴い、構成制御部５０５は、テーブル５５０を保持し、保持しているテーブル５５０に基づいて、ソフトウェアプログラムＡを実行する場合は、回路構成を回路構成Ａに再構成することを再構成可能演算器４２５に指示する。ソフトウェアプログラムＢを実行する場合は、回路構成を回路構成Ｂに再構成することを再構成可能演算器４２５に指示する。ソフトウェアプログラムＣを実行する場合は、回路構成を回路構成Ｃに再構成することを再構成可能演算器４２５に指示する。【０１２５】  図１６は、本実施の形態における情報処理装置において複数のソフトウェアプログラムを時分割で実行する場合の例を示す図である。図１６に示されるように、構成制御部５０５は、実行対象となるソフトウェアプログラムを切り替える度に、再構成可能演算器４２５の回路構成を再構成させる。【０１２６】  例えば、構成制御部５０５は、実行対象となるソフトウェアプログラムをソフトウェアプログラムＡからソフトウェアプログラムＢに切り替える場合は、再構成可能演算器４２５の回路構成を回路構成Ａから回路構成Ｂに構成させる。同様に、ソフトウェアプログラムＢからソフトウェアプログラムＣに切り替える場合は、回路構成Ｂから回路構成Ｃに構成させる。ソフトウェアプログラムＣからソフトウェアプログラムＡに切り替える場合は、回路構成Ｃから回路構成Ａに構成させる。【０１２７】  以上、本実施の形態における情報処理装置によれば、複数のソフトウェアプログラムを時分割で実行するにあたって、実行対象となるソフトウェアプログラムを切り替える度に、再構成可能演算器の回路構成を再構成させる。これに伴い、再構成可能演算器４２５は、ソフトウェアプログラムに対応する構成情報に基づいて回路構成を再構成する。これによって、ソフトウェアプログラムの合計動作時間を短縮することができる。【０１２８】  なお、実施の形態５における生成部５０４は、ソフトウェアプログラム単位で構成情報のテンプレートを選択すると説明したが、スレッド単位で構成情報のテンプレートを選択するとしてもよい。【０１２９】  なお、実施の形態５における構成制御部５０５は、ソフトウェアプログラム単位で回路構成を再構成することを再構成可能演算器４２５に指示すると説明したが、スレッド単位で回路構成を再構成することを再構成可能演算器４２５に指示するとしてもよい。【０１３０】  （その他）
なお、固定機能演算器および再構成可能演算器は、１つのデバイスに実現されるとしてもよいし、個別に各デバイスに実現されるとしてもよい。【０１３１】  １つのデバイスに実現される場合は、動的に回路構成が書き換え不可能な部分と動的に回路構成が書き換え可能な部分とを備えるデバイスによって実現される。このとき、動的に回路構成が書き換え不可能な部分に固定機能演算器が形成され、動的に回路構成が書き換え可能な部分に再構成可能演算器が形成される。【０１３２】  個別に各デバイスに実現される場合は、動的に回路構成が書き換え不可能なデバイスに固定機能演算器が形成され、動的に回路構成が書き換え可能なデバイスに再構成可能演算器が形成される。ここで、動的に回路構成が書き換え不可能なデバイスとして、フルカスタムＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）等のようなセミカスタムＬＳＩ、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）、ＣＰＬＤ（Ｃｏｍｐｌｅｘ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）等のようなプログラマブル・ロジック・デバイスなどによって実現されるとしてもよい。一方、動的に回路構成が書き換え可能なデバイスとして、動的に回路構成が書き換え可能なダイナミック・リコンフィギュラブル・デバイスなどによって実現されるとしてもよい。【０１３３】  さらに、情報処理装置を構成する１以上の機能をデバイスに形成する設計データは、ＶＨＤＬ（Ｖｅｒｙ  ｈｉｇｈ  ｓｐｅｅｄ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ  Ｈａｒｄｗａｒｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）、Ｖｅｒｉｌｏｇ−ＨＤＬ、ＳｙｓｔｅｍＣ等のようなハードウェア記述言語によって記述されたプログラム（以下、ＨＤＬプログラムと呼称する。）としてもよい。また、ＨＤＬプログラムを論理合成して得られるゲート・レベルのネットリストとしてもよい。また、ゲート・レベルのネットリストに、配置情報、プロセス条件等を付加したマクロセル情報としてもよい。また、寸法、タイミング等が規定されたマスクデータとしてもよい。また、構成情報は、１以上の演算回路が記述されたＨＤＬプログラムを論理合成して得られるゲート・レベルのネットリストとしてもよい。【０１３４】  さらに、本発明に係わる情報処理装置に読み出され得るように、光学記録媒体（例えば、ＣＤ−ＲＯＭなど。）、磁気記録媒体（例えば、ハードディスクなど。）、光磁気記録媒体（例えば、ＭＯなど。）、半導体メモリ（例えば、ＳＤメモリなど。）などのような記録媒体に設計データまたは構成情報を記録しておくとしてもよい。【０１３５】  または、ネットワーク等のような伝送路を経由して取得され得るように、伝送路上のハードウェアシステムに設計データまたは構成情報を保持しておくとしてもよい。【０１３６】  なお、本発明に係わるプロセッサは、情報処理装置以外に、デジタルＴＶ、デジタルレコーダ、ゲーム機、ＩＰ電話機、携帯電話、ネットワーク機器などのような組み込みシステムに実装されるとしてもよい。ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、��ＮＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、ネットワークアダプタなどを備えるコンピュータシステムに実装されるとしてもよい。【０１３７】  なお、本発明に係わるプロセッサは、シングルコアプロセッサとして説明したが、マルチコアプロセッサとしてもよい。さらに、その場合において、再構成可能演算器が共有されるとしてもよい。【０１３８】  なお、本発明に係わる情報処理装置は、シングルプロセッサを備えると説明したが、マルチプロセッサを備えるとしてもよい。
【産業上の利用可能性】
【０１３９】  本発明は、デジタル化された映像や音声などを処理するプロセッサなどとして、特に、ＤＶＤレコーダやデジタルＴＶなどのように、デジタル信号を用いた映像機器や音響機器などに実装される信号処理用プロセッサなどとして、利用することができる。
【図１】
2007074583.tif 000003
【図２】
2007074583.tif 000004
【図３Ａ】
2007074583.tif 000005
【図３Ｂ】
2007074583.tif 000006
【図３Ｃ】
2007074583.tif 000007
【図４】
2007074583.tif 000008
【図５】
2007074583.tif 000009
【図６Ａ】
2007074583.tif 000010
【図６Ｂ】
2007074583.tif 000011
【図７】
2007074583.tif 000012
【図８】
2007074583.tif 000013
【図９Ａ】
2007074583.tif 000014
【図９Ｂ】
2007074583.tif 000015
【図９Ｃ】
2007074583.tif 000016
【図１０】
2007074583.tif 000017
【図１１】
2007074583.tif 000018
【図１２】
2007074583.tif 000019
【図１３】
2007074583.tif 000020
【図１４】
2007074583.tif 000021
【図１５】
2007074583.tif 000022
【図１６】
2007074583.tif 000023
【手続補正書】
【提出日】平成19年4月19日(2007.4.19)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
命令を実行する演算器が複数実装されているプロセッサであって、
回路構成が動的に再構成不可能な固定機能演算器と、
回路構成が動的に再構成可能な再構成可能演算器と、
データの依存性が存在しない命令群の中から、前記固定機能演算器および前記再構成可能演算器に対して、命令を個別に割り当てる命令割当手段と、
個別に割り当てられた命令を割り当て先に発行する命令発行手段と
を備えることを特徴とするプロセッサ。
【請求項２】
前記命令割当手段は、前記再構成可能演算器よりも前記固定機能演算器を優先して命令を割り当てる
ことを特徴とする請求項１に記載のプロセッサ。
【請求項３】
前記命令発行手段は、個別に割り当てられた各命令を各割り当て先に並行して発行する
ことを特徴とする請求項１に記載のプロセッサ。
【請求項４】
前記プロセッサは、さらに、
所定の命令が割り当てられたときの前記再構成可能演算器の回路構成が前記所定の命令に適合しない場合は、前記所定の命令に適合する回路構成が定義された構成情報に基づいて回路構成を動的に再構成することを前記再構成可能演算器に指示する構成制御手段
を備えることを特徴とする請求項１に記載のプロセッサ。
【請求項５】
前記プロセッサは、さらに、
２以上の命令に適合する回路構成が定義された構成情報に基づいて回路構成を動的に再構成することを前記再構成可能演算器に指示する構成制御手段を備え、
前記命令割当手段は、前記２以上の命令を前記再構成可能演算器に同時に割り当て、
前記命令発行手段は、前記２以上の命令を前記再構成可能演算器に並行して発行する
ことを特徴とする請求項１に記載のプロセッサ。
【請求項６】
前記構成制御手段は、前記所定の命令の前に、前記再構成可能演算器の回路構成を再構成することが示される構成命令を挿入し、
前記命令発行手段は、前記構成命令を発行した後に、前記所定の命令を発行する
ことを特徴とする請求項４に記載のプロセッサ。
【請求項７】
請求項１に記載のプロセッサが実装されている情報処理装置であって、
実行対象となるソフトウェアプログラムに最適な回路構成が定義された構成情報を保持する構成情報保持手段と、
前記構成情報から決定される前記プロセッサの回路構成に基づいて生成された実行形式の命令コードを記憶する命令記憶手段と、
前記命令コードを実行することを前記プロセッサに指示する前に、前記構成情報に基づいて回路構成を再構成することを前記再構成可能演算器に指示する構成制御手段と
を備えることを特徴とする情報処理装置。
【請求項８】
前記情報処理装置は、さらに、
複数種類の構成情報のテンプレートを保持するテンプレート保持手段と、
複数のソフトウェアプログラムを保持するソフトウェアプログラム保持手段と、
前記実行対象となるソフトウェアプログラムを前記複数のソフトウェアプログラムの中から決定するソフトウェアプログラム決定手段と、
前記実行対象となるソフトウェアプログラムに最適な構成情報のテンプレートを前記複数種類の構成情報のテンプレートの中から選択するテンプレート選択手段と、
前記選択された構成情報のテンプレートに基づいて前記プロセッサの回路構成を仮決定する回路構成仮決定手段と、
前記仮決定された回路構成に基づいて、前記決定されたソフトウェアプログラムから実行形式の命令コードを生成する命令コード生成手段と、
前記生成された命令コードに対する実行サイクルが閾値以下であるか否かを判定する閾値判定手段と、
判定した結果、前記実行サイクルが閾値以下である場合は、前記生成された命令コードを前記命令記憶手段に出力し、前記選択された構成情報のテンプレートを前記構成情報保持手段に出力する出力出段と
を備えることを特徴とする請求項７に記載の情報処理装置。
【請求項９】
複数のソフトウェアプログラムを時分割で実行する場合において、
前記情報処理装置は、
実行対象となるソフトウェアプログラムを所定の時間単位で切り替える切替手段を備え、
前記構成情報保持手段は、ソフトウェアプログラム毎に前記構成情報を保持し、
前記命令記憶手段は、ソフトウェアプログラム毎に前記命令コードを保持し、
前記構成制御手段は、実行対象となるソフトウェアプログラムが切り替わる度に、回路構成を再構成することを前記再構成可能演算器に指示する
ことを特徴とする請求項７に記載の情報処理装置。
【請求項１０】
前記情報処理装置は、
ソフトウェアプログラムと回路構成とが対応付けられたテーブルを保持するテーブル保持手段を備え、
前記構成制御手段は、前記テーブルから、前記プロセッサに実行することを指示するソフトウェアプログラムに対応する回路構成を特定し、特定した回路構成が定義された構成情報に基づいて回路構成を再構成することを再構成可能演算器に指示する
ことを特徴とする請求項９に記載の情報処理装置。
【請求項１１】
回路構成が動的に再構成不可能な固定機能演算器と、回路構成が動的に再構成可能な再構成可能演算器とを備えるプロセッサを制御するプロセッサ制御方法であって、
データの依存性が存在しない命令群の中から、前記固定機能演算器および前記再構成可能演算器に対して、命令を個別に割り当てる命令割当ステップと、
個別に割り当てられた命令を割り当て先に発行する命令発行ステップと
を含むことを特徴とするプロセッサ制御方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動的に再構成可能な演算器を持つプロセッサ、特に、動的に再構成可能な演算器の回路規模を抑えながら、柔軟性かつ高速性が実現されるプロセッサに関する。
【背景技術】
【０００２】
近年、デジタル化された映像・音声などを処理する機器（以下、デジタルＡＶ機器と呼称する。）は、専用のハードウェアや高性能なＤＳＰ（Digital Signal Processor）などが組み込まれている。これは、例えば、圧縮、伸張などのように、デジタル化された映像・音声などを処理するにあたっての演算量が大きいためである。
【０００３】
また、例えば、ＭＰＥＧ（Moving Picture Experts Group）２、ＭＰＥＧ４、Ｈ．２６３、Ｈ．２６４などのように、映像・音声などをデジタル化するにあたっての規格が非常に多数実用化されている。これに伴い、デジタルＡＶ機器に対して、複数の規格に対応することが要求されている。この要求に応じる方法として、（１）ハードウェアで処理する方法、（２）ソフトウェアで処理する方法などがある。ここで、（１）ハードウェアで処理する場合については、高速性を実現することができる。ただし、新たな機能を追加するにあたって、新たなハードウェアを追加することが必要となる。また、機能が多数になると、回路の規模が大きくなる。（２）ソフトウェアで処理する場合については、柔軟性を実現することができる。多数の機能をソフトウェアとして実現することができ、容易に機能を追加することができる。ただし、処理速度を上げることが困難である。
【０００４】
これに対して、動的に再構成可能な回路を持つプロセッサで処理する技術が提案されている（例えば、特許文献１参照。）。これによって、柔軟性かつ高速性を実現することができる。
【特許文献１】国際公開第２００２／０９５９４６号パンフレット
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来の技術に示されるように、動的に再構成可能な回路を持つプロセッサは、多数の演算器を備えて演算器間の配線を変更することで、これらの演算器を自由に構成するため、回路規模が大きくなるという課題がある。
【０００６】
そこで、本発明は、上記問題に鑑みてなされたものであり、動的に再構成可能な演算器の回路規模を抑えながら、柔軟性かつ高速性が実現されるプロセッサを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、本発明に係わるプロセッサは、（ａ）命令を実行する演算器が複数実装されているプロセッサであって、（ｂ）回路構成が動的に再構成不可能な固定機能演算器と、（ｃ）回路構成が動的に再構成可能な再構成可能演算器と、（ｄ）データの依存性が存在しない命令群の中から、前記固定機能演算器および前記再構成可能演算器に対して、命令を個別に割り当てる命令割当手段と、（ｅ）個別に割り当てられた命令を割り当て先に発行する命令発行手段とを備えることを特徴とする。
【０００８】
これによって、通常の固定機能演算器に加え、回路構成が動的に再構成可能な再構成可能演算器を備える。さらに、並列に実行すべき命令を決定するにあたり、機能を変更することができる再構成可能演算器に適した命令を割り当てることによって、回路規模を抑えながら、柔軟性かつ高速性を実現することができる。
【０００９】
なお、本発明は、プロセッサとして実現されるだけでなく、プロセッサを備える情報処理装置、プロセッサを制御するプロセッサ制御方法、情報処理装置を制御する方法などとして実現されるとしてもよい。
【発明の効果】
【００１０】
本発明によれば、動的に再構成可能な演算器を持つプロセッサにおいて、再構成可能なハードウェアによる演算器において、複数種類の命令が複数個数同時に実行できるとして命令スケジューリング及び命令発行を行うことにより、回路規模の増大を抑えつつ、高性能かつ柔軟な処理を実現する構成提供することができる。
【発明を実施するための最良の形態】
【００１１】
（実施の形態１）
以下、本発明に係る実施の形態１について、図面を参照しながら説明する。
【００１２】
本実施の形態に係わるプロセッサは、（ａ）命令を実行する演算器が複数実装されているプロセッサであって、（ｂ）回路構成が動的に再構成不可能な固定機能演算器と、（ｃ）回路構成が動的に再構成可能な再構成可能演算器と、（ｄ）固定機能演算器および再構成可能演算器に対して、データの依存性が存在しない複数の命令の中から個別に命令を割り当てる命令割当機能と、（ｅ）個別に割り当てられた命令を割り当て先に発行する命令発行機能とを備えることを特徴とする。
【００１３】
さらに、命令割当機能は、再構成可能演算器よりも固定機能演算器を優先して命令を割り当てる。また、命令発行機能は、個別に割り当てられた各命令を並行して各割り当て先に発行する。
【００１４】
また、本実施の形態に係わるプロセッサは、さらに、所定の命令が割り当てられたときの再構成可能演算器の回路構成が所定の命令に適合しない場合は、所定の命令に適合する回路構成が定義された構成情報に基づいて回路構成を動的に再構成することを再構成可能演算器に指示する構成制御機能を備える。
【００１５】
以上の点を踏まえて、本実施の形態に係わるプロセッサについて説明する。
【００１６】
図１は、本実施の形態におけるプロセッサの構成を示す図である。図１に示されるように、プロセッサ１０１は、命令記憶部１０２に記憶されている命令列を複数の演算器を併用して実行するプロセッサである。ここでは、一例として、プロセッサ１０１は、複数の演算器として固定機能演算器１２１〜１２３と再構成可能演算器１２５とを備える。固定機能演算器１２１〜１２３のそれぞれは、回路構成が動的に再構成不可能な演算器である。再構成可能演算器１２５は、回路構成が動的に再構成可能な演算器である。例えば、回路構成を再構成することが指示されると、構成情報保持部１０３で保持されている構成情報の中から、指示された回路構成が定義された構成情報を選択し、選択した構成情報に基づいて回路構成を再構成する。
【００１７】
「構成情報」とは、再構成する演算器が実行可能な１以上の命令に適合した回路構成が定義された情報である。
【００１８】
具体的には、プロセッサ１０１は、命令フェッチ部１１１、命令デコード部１１２、演算制御部１１３、レジスタファイル１１４、演算部１１５などを備える。
【００１９】
命令フェッチ部１１１は、プロセッサ１０１において実行される命令を命令記憶部１０２から読み出し、読み出した命令を命令デコード部１１２に渡す。命令デコード部１１２は、命令フェッチ部１１１から渡された命令を受け取り、受け取った命令をデコードする。演算制御部１１３は、命令デコード部１１２においてデコードした結果に基づいて、演算部１１５を制御する。レジスタファイル１１４は、演算部１１５において用いられるデータおよび演算した結果を保持する。演算部１１５は、固定機能演算器１２１〜１２３と再構成可能演算器１２５とを備え、各命令に適合する演算処理を実行する。
【００２０】
さらに、演算制御部１１３は、命令保持部１３１、命令選択部１３２、命令割当部１３３、構成制御部１３４、および命令発行部１３５を備える。
【００２１】
命令保持部１３１は、命令デコード部１１２でデコードされた命令を保持する。命令選択部１３２は、命令保持部１３１で保持されている未発行の命令の中から、データの依存性が存在しない１以上の命令を選択する。
【００２２】
命令割当部１３３は、固定機能演算器１２１〜１２３および再構成可能演算器１２５に対して、命令選択部１３２で選択された１以上の命令の中から個別に命令を割り当てる。このとき、再構成可能演算器１２５よりも固定機能演算器１２１〜１２３を優先して命令を割り当てる。
【００２３】
構成制御部１３４は、再構成可能演算器１２５の回路構成が再構成可能演算器１２５に割り当てた命令に適合しない場合は、その命令に適合する回路構成が定義された構成情報に基づいて再構成可能演算器１２５の回路構成を動的に再構成させる。
【００２４】
命令発行部１３５は、個別に割り当てた命令を割り当て先に発行する。このとき、個別に割り当てた各命令を並行して各割り当て先に発行する。
【００２５】
図２は、本実施の形態におけるプロセッサの動作を示すフローチャートである。図２に示されるように、ここでは、命令をデコードしてから命令を発行するまでの手順について説明する。
【００２６】
まず、命令デコード部１１２は、命令フェッチ部１１１から受け取った命令をデコードする（Ｓ１０１）。
【００２７】
続いて、演算制御部１１３（命令保持部１３１）は、命令デコード部１１２でデコードされた命令を保持する。
【００２８】
演算制御部１１３（命令選択部１３２）は、保持している未発行の命令に対して、データの依存性を調べる。さらに、保持している未発行の命令の中から、データの依存性が存在しない命令を選択する（Ｓ１０２）。
【００２９】
演算制御部１１３（命令割当部１３３）は、固定機能演算器に割り当てられた索引を検索するにあたって使用される変数Ｘを初期化する（Ｓ１０３）。そして、演算制御部１１３（命令割当部１３３）は、選択した命令、すなわち、データの依存性が存在しない命令が有るか否かを確認する（Ｓ１０４）。確認した結果、データの依存性が存在しない命令が有る限り（Ｓ１０４：Ｙｅｓ）、データの依存性が存在しない命令の中から、割り当てた命令を除いて、固定機能演算器１２１〜１２３のそれぞれに対して、発行可能な命令を検索して割り当てる（Ｓ１０５〜Ｓ１０７）。
【００３０】
さらに、演算制御部１１３（命令割当部１３３）は、データの依存性が存在しない命令が有るか否かを確認する（Ｓ１０８）。確認した結果、データの依存性が存在しない命令が有る場合は（Ｓ１０８：Ｙｅｓ）、データ依存性が存在しない命令の中から、割り当てた命令を除いて、再構成可能演算器１２５に対して、発行可能な命令を検索して割り当てる（Ｓ１０９）。このとき、デコードされた時間が最も古い命令を割り当てる。
【００３１】
演算制御部１１３（構成制御部１３４）は、割り当てた命令が、現在の回路構成で演算可能か否かを調べる（Ｓ１１０）。調べた結果、現在の回路構成で演算可能でない場合（Ｓ１１０：Ｎｏ）は、再構成可能演算器１２５に対して、回路構成を再構成することを指示する（Ｓ１１１）。
【００３２】
そして、演算制御部１１３（命令発行部１３５）は、固定機能演算器１２１〜１２３と再構成可能演算器１２５とのそれぞれに対して、それぞれに割り当てた命令を発行する（Ｓ１１２）。
【００３３】
なお、演算制御部１１３（命令発行部１３５）は、データの依存性が存在しない命令が無い場合（Ｓ１０４：Ｎｏ、Ｓ１０８：Ｎｏ）や、現在の回路構成で演算可能な場合（Ｓ１１０：Ｙｅｓ）は、固定機能演算器１２１〜１２３と再構成可能演算器１２５とのそれぞれに対して、それぞれに割り当てた命令を発行する（Ｓ１１２）。
【００３４】
図３Ａ、図３Ｂは、本実施の形態におけるプロセッサにおいて実行される命令群の例を示す図である。図３Ｃは、本実施の形態におけるプロセッサの演算部における演算器の構成を示す図である。ここでは、一例として、図３Ａに示されるように、デコードされた時間が古い順に、下記の命令群１５０（命令１５１〜１５５）が演算制御部１１３（命令保持部１３１）の中に格納されている。
【００３５】
（命令１５１）ａｄｄ  ｒ８，ｒ１３，ｒ１４    （ｒ１３＋ｒ１４→ｒ８）
（命令１５２）ｓｕｂ  ｒ１０，ｒ１１，ｒ１２  （ｒ１１−ｒ１２→ｒ１０）
（命令１５３）ｍｕｌ  ｒ７，ｒ８，ｒ９        （ｒ８＊ｒ９→ｒ７）
（命令１５４）ｍｕｌ  ｒ１，ｒ５，ｒ６        （ｒ５＋ｒ６→ｒ１）
（命令１５５）ａｄｄ  ｒ１，ｒ２，ｒ３        （ｒ２＋ｒ３→ｒ１）
また、命令１５１、１５２、１５４に対しては、データの依存性が存在しないために、ｔａｇカラムに“○”がセットされている。命令１５３、１５５に対しては、データの依存性が存在するために、ｔａｇカラムに“×”がセットされている。
【００３６】
さらに、プロセッサ１０１において実行されるにあたって、命令１５１、１５２、１５５は、演算器として加算／減算器（ＡＬＵ）が使用される。また、命令１５３、１５４は、演算器として乗算器（ＭＵＬ）が使用される。
【００３７】
同様に、図３Ｂに示されるように、別の例として、デコードされた時間が古い順に、下記の命令群１６０（命令１６１〜１６５）が演算制御部１１３（命令保持部１３１）の中に格納されている。
【００３８】
（命令１６１）ａｄｄ  ｒ８，ｒ１３，ｒ１４    （ｒ１３＋ｒ１４→ｒ８）
（命令１６２）ｍｕｌ  ｒ１０，ｒ１１，ｒ１２  （ｒ１１＊ｒ１２→ｒ１０）
（命令１６３）ｍｕｌ  ｒ７，ｒ８，ｒ９        （ｒ８＊ｒ９→ｒ７）
（命令１６４）ｍｕｌ  ｒ１，ｒ５，ｒ６        （ｒ５＊ｒ６→ｒ１）
（命令１６５）ａｄｄ  ｒ１，ｒ２，ｒ３        （ｒ２＋ｒ３→ｒ１）
また、命令１６１、１６２、１６４に対しては、データの依存性が存在しないために、ｔａｇカラムに“○”がセットされている。命令１６３、１６５に対しては、データの依存性が存在するために、ｔａｇカラムに“×”がセットされている。
【００３９】
さらに、プロセッサ１０１において実行されるにあたって、命令１６１、１６５は、演算器として加算／減算器（ＡＬＵ）が使用される。また、命令１６２〜１６４は、演算器として乗算器（ＭＵＬ）が使用される。
【００４０】
なお、図３Ｃに示されるように、これらの例において、演算部１１５は、固定機能演算器１２１（Ａｄｄ／Ｓｕｂ演算器）、固定機能演算器１２２（Ｍｕｌ演算器）、固定機能演算器１２３（Ｌｄ／Ｓｔ演算器）を備える。さらに、これらの固定機能演算器１２１〜１２３とは別に再構成可能演算器１２５を備える。
【００４１】
ここで、Ａｄｄ／Ｓｕｂ演算器とは、加算／減算器（ＡＬＵ）である。Ｍｕｌ演算器とは、乗算器（ＭＵＬ）である。Ｌｄ／Ｓｔ演算器とは、ロード／ストア器（ＬＤ／ＳＴ）である。
【００４２】
例えば、演算制御部１１３（命令割当部１３３）は、命令群１５０（例えば、図３Ａ参照。）の中から、固定機能演算器１２１（Ａｄｄ／Ｓｕｂ演算器）に対して発行可能な命令１５１、１５２のうち、デコードされた時間が古い命令１５１を、固定機能演算器１２１（Ａｄｄ／Ｓｕｂ演算器）に割り当てる。固定機能演算器１２２（Ｍｕｌ演算器）に対して発行可能な命令１５４を、固定機能演算器１２２（Ｍｕｌ演算器）に割り当てる。固定機能演算器１２３（Ｌｄ／Ｓｔ演算器）に対して発行可能な命令が存在しないために、固定機能演算器１２３（Ｌｄ／Ｓｔ演算器）に何も割り当てない。そして、再構成可能演算器１２５に対して発行可能な命令１５２を、再構成可能演算器１２５に割り当てる。
【００４３】
また、演算制御部１１３（命令割当部１３３）は、命令群１６０（例えば、図３Ｂ参照。）の中から、固定機能演算器１２１（Ａｄｄ／Ｓｕｂ演算器）に対して発行可能な命令１６１を、固定機能演算器１２１（Ａｄｄ／Ｓｕｂ演算器）に割り当てる。固定機能演算器１２２（Ｍｕｌ演算器）に対して発行可能な命令１６２、１６４のうち、デコードされた時間が古い命令１６２を固定機能演算器１２２（Ｍｕｌ演算器）に割り当てる。固定機能演算器１２３（Ｌｄ／Ｓｔ演算器）に対して発行可能な命令が存在しないために、固定機能演算器１２３（Ｌｄ／Ｓｔ演算器）に何も割り当てない。そして、再構成可能演算器１２５（Ｒｅｃｏｎｆ演算器）に対して発行可能な命令１６４を、再構成可能演算器１２５（Ｒｅｃｏｎｆ演算器）に割り当てる。
【００４４】
以上、本実施の形態に係わるプロセッサ１０１によれば、固定機能演算器１２１などの数を制約しても、再構成可能演算器１２５に命令を割り当てることができるため、回路規模を抑えながら、命令の並列度を向上させることができる。
【００４５】
（実施の形態２）
次に、本発明に係わる実施の形態２について、図面を参照しながら説明する。
【００４６】
本実施の形態に係わるプロセッサは、さらに、２以上の命令に適合する回路構成が定義された構成情報に基づいて再構成可能演算器の回路構成を動的に再構成させる構成制御機能を備える。これに伴い、命令割当機能は、２以上の命令を再構成可能演算器に同時に割り当て、命令発行機能は、２以上の命令を並行して再構成可能演算器に発行することを特徴とする。
【００４７】
以上の点を踏まえて、本実施の形態に係わるプロセッサについて説明する。なお、実施の形態１に係わるプロセッサと同一の構成要素については、同一の参照符号を付して説明を省略する。
【００４８】
図４は、本実施の形態におけるプロセッサの構成を示す図である。図４に示されるように、プロセッサ２０１は、実施の形態１におけるプロセッサ１０１（例えば、図１参照。）と比べて、下記（１）、（２）の点が異なる。
【００４９】
（１）演算制御部１１３の代わりに、演算制御部２１３を備える。
【００５０】
演算制御部２１３（命令割当部２３３）は、２以上の命令を再構成可能演算器２２５に同時に割り当てることができる。さらに、演算制御部２１３（構成制御部２３４）は、２以上の命令に適合する回路構成が定義された構成情報に基づいて再構成可能演算器２２５の回路構成を動的に再構成させる。そして、演算制御部２１３（命令発行部２３５）は、２以上の命令を並行して再構成可能演算器２２５に発行する。すなわち、演算制御部２１３は、再構成可能演算器２２５に対して、複数の命令を割り当て発行することができる。
【００５１】
（２）演算部１１５の代わりに、演算部２１５を備える。
【００５２】
演算部２１５は、１つの命令しか実行することができなかった再構成可能演算器１２５の代わりに、回路規模が許す限り、１以上の命令を並行して実行することができる再構成可能演算器２２５を備える。すなわち、再構成可能演算器２２５は、最大ｎ（ｎは自然数。）までの命令を並列に実行することができる回路構成を構成することができる。なお、再構成可能演算器２２５は、ｎ種類の演算回路を１個ずつ構成するとしてもよいし、１種類の演算回路をｎ個構成するとしてもよいし、計ｎ個までである限り複数の種類の演算回路を複数個構成するとしてもよい。
【００５３】
なお、これに限定される訳ではないが、ここでは、一例として、再構成可能演算器２２５の回路規模を、同時に、２つの乗算器を動的に再構成することができなくても、加算／減算器と乗算器とを動的に再構成することができる回路規模とする。
【００５４】
図５は、本実施の形態におけるプロセッサの動作を示すフローチャートである。図５に示されるように、演算制御部２１３（命令割当部２３３）は、データの依存性が存在しない命令が有るか否かを確認した結果（Ｓ１０８）、データの依存性が存在しない命令が有る場合（Ｓ１０８：Ｙｅｓ）は、データの依存性が存在しない命令の中から、割り当てた命令を除いて、回路規模が許す限り、再構成可能演算器２２５に対して、発行可能な命令を検索して割り当てる（Ｓ１０９、Ｓ２０１、Ｓ２０２）。このとき、デコードされた時間が最も古い命令から順に割り当てる。
【００５５】
そして、演算制御部２１３（構成制御部２３４）は、割り当てた命令が、現在の回路構成で演算可能か否かを調べる（Ｓ１１０）。調べた結果、現在の回路構成で演算可能でない場合は、再構成可能演算器２２５に対して、回路構成を再構成することを指示する（Ｓ１１１）。
【００５６】
なお、演算制御部２１３（命令割当部２３３）は、データの依存性が存在しない命令が無い場合（Ｓ２０２：Ｎｏ）は、スケジューリングした命令が、現在の回路構成で演算可能か否かを調べる（Ｓ１１０）。
【００５７】
図６Ａは、本実施の形態におけるプロセッサにおいて実行される命令群の例を示す図である。図６Ｂは、本実施の形態におけるプロセッサの演算部における演算器の構成の例を示す図である。ここでは、一例として、図６Ａに示されるように、デコードされた時間が古い順に、下記の命令群２５０（命令２５１〜２５５）が演算制御部２１３（命令保持部１３１）の中に格納されている。
【００５８】
（命令２５１）ａｄｄ  ｒ８，ｒ１３，ｒ１４    （ｒ１３＋ｒ１４→ｒ８）
（命令２５２）ｍｕｌ  ｒ１０，ｒ１１，ｒ１２  （ｒ１１＊ｒ１２→ｒ１０）
（命令２５３）ｍｕｌ  ｒ７，ｒ８，ｒ９        （ｒ８＊ｒ９→ｒ７）
（命令２５４）ｍｕｌ  ｒ１，ｒ５，ｒ６        （ｒ５＊ｒ６→ｒ１）
（命令２５５）ａｄｄ  ｒ４，ｒ２，ｒ３        （ｒ２＋ｒ３→ｒ４）
また、命令２５１、２５２、２５４、２５５に対しては、データの依存性が存在しないために、ｔａｇカラムに“○”がセットされている。命令２５３に対しては、データの依存性が存在するために、ｔａｇカラムに“×”がセットされている。
【００５９】
さらに、プロセッサ２０１において処理されるにあたって、命令２５１、２５５は、演算器として加算／減算器（ＡＬＵ）が使用される。また、命令２５２〜２５４は、演算器として乗算器（ＭＵＬ）が使用される。
【００６０】
なお、図６Ｂに示されるように、この例において、演算部２１５は、再構成可能演算器１２５の代わりに、回路規模が許す限り、同時に複数の演算器を動的に再構成することができる再構成可能演算器２２５を備える。
【００６１】
例えば、演算制御部２１３（命令割当部２３３）は、命令群２５０（例えば、図６Ａ参照。）の中から、固定機能演算器１２１（Ａｄｄ／Ｓｕｂ演算器）に対して発行可能な命令２５１、２５５のうち、デコードされた時間が古い命令２５１を、固定機能演算器１２１（Ａｄｄ／Ｓｕｂ演算器）に割り当てる。固定機能演算器１２２（Ｍｕｌ演算器）に対して発行可能な命令２５２、２５４のうち、デコードされた時間が古い命令２５２を、固定機能演算器１２２（Ｍｕｌ演算器）に割り当てる。固定機能演算器１２３（Ｌｄ／Ｓｔ演算器）に対して発行可能な命令が存在しないため、固定機能演算器１２３（Ｌｄ／Ｓｔ演算器）に何も割り当てない。そして、データの依存性が存在しない命令２５１、２５２、２５４、２５５の中から、割り当てた命令２５１、２５２を除いて、再構成可能演算器２２５（Ｒｅｃｏｎｆ演算器）に対して発行可能な命令２５４、２５５のうち、回路規模が許す限り、複数の命令を、再構成可能演算器２２５（Ｒｅｃｏｎｆ演算器）に割り当てる。ここでは、再構成可能演算器２２５が同時に加算／減算器（ＡＬＵ）と乗算器（ＭＵＬ）とを動的に再構成することができることにより、命令２５４、２５５を再構成可能演算器２２５に割り当てる。
【００６２】
以上、本実施の形態に係わるプロセッサ２０１によれば、固定機能演算器に対して、数を制約しても、再構成可能演算器２２５に対して、複数の命令を同時に割り当てることができるため、回路規模を抑えながら、命令の並列度を向上させることができる。
【００６３】
（実施の形態３）
次に、本発明に係わる実施の形態３について、図面を参照しながら説明する。
【００６４】
本実施の形態に係わるプロセッサにおいて、構成制御機能は、所定の命令の前に、再構成可能演算器の回路構成を再構成することが示される構成命令を挿入し、命令発行機能は、構成命令を発行した後に、所定の命令を発行することを特徴とする。
【００６５】
以上の点を踏まえて、本実施の形態に係わるプロセッサについて説明する。なお、実施の形態１に係わるプロセッサと同一の構成要素については、同一の参照符号を付して説明を省略する。
【００６６】
図７は、本実施の形態におけるプロセッサの構成を示す図である。図７に示されるように、プロセッサ３０１は、実施の形態１におけるプロセッサ１０１（例えば、図１参照。）と比べて、下記（１）、（２）の点が異なる。
【００６７】
（１）演算制御部１１３の代わりに、演算制御部３１３を備える。
【００６８】
演算制御部３１３（構成制御部３３４）は、所定の命令が割り当てられたときの再構成可能演算器３２５の回路構成が所定の命令に適合しない場合は、所定の命令に適合する回路構成が定義された構成情報に基づいて回路構成を動的に再構成することを再構成可能演算器３２５に指示する。
【００６９】
このとき、演算制御部３１３（命令発行部３３５）は、所定の命令を再構成可能演算器３２５に発行する前に、再構成可能演算器３２５の回路構成を再構成することが示される第２の命令（以下、構成命令と呼称する。）を再構成可能演算器３２５に発行する。
【００７０】
すなわち、演算制御部３１３は、再構成可能演算器３２５の回路構成が適合しないために所定の命令を発行しても実行できない場合は、代わりに構成命令を発行し、その間に、回路構成を再構成させ、再構成させた後に、所定の命令を発行する。
【００７１】
（２）演算部１１５の代わりに、演算部３１５を備える。
【００７２】
演算部３１５は、再構成可能演算器１２５の代わりに、再構成可能演算器３２５を備える。再構成可能演算器３２５は、構成命令を受けても何もせずに廃棄する。
【００７３】
なお、再構成可能演算器３２５は、構成制御部３３４から指示を受けて回路構成を再構成する代わりに、構成命令を受けて回路構成を再構成するとしてもよい。
【００７４】
図８は、本実施の形態におけるプロセッサの動作を示すフローチャートである。図８に示されるように、演算制御部３１３（命令発行部３３５）は、現在の回路構成で演算可能でない場合（Ｓ１１０：Ｎｏ）は、再構成可能演算器３２５に対して割り当てた発行可能な命令を次のサイクルにおいて優先的に発行し、代わりに構成命令を発行する（Ｓ３１１）。
【００７５】
図９Ａは、本実施の形態におけるプロセッサにおいて実行される命令群の動作例を示す図である。図９Ｂは、本実施の形態におけるプロセッサにおいて実行される命令群に構成命令を挿入しない場合の動作例を示す図である。図９Ｃは、本実施の形態におけるプロセッサにおいて実行される命令群に構成命令を挿入する場合の動作例を示す図である。ここでは、一例として、図９Ａに示されるように、下記の命令組３５１、３５２について説明する。
【００７６】
命令組３５１は、固定機能演算器１２１（Ａｄｄ／Ｓｕｂ演算器）に割り当てられたａｄｄ（１）命令と、固定機能演算器１２２（Ｍｕｌ演算器）に割り当てられたｍｕｌ（１）命令と、再構成可能演算器３２５（Ｒｅｃｏｎｆ演算器）に割り当てられたａｄｄ（２）命令とからなる。
【００７７】
命令組３５２は、固定機能演算器１２１（Ａｄｄ／Ｓｕｂ演算器）に割り当てられたａｄｄ（３）命令と、固定機能演算器１２２（Ｍｕｌ演算器）に割り当てられたｍｕｌ（２）命令と、再構成可能演算器３２５（Ｒｅｃｏｎｆ演算器）に割り当てられたｍｕｌ（３）命令とからなる。
【００７８】
なお、これらの命令は、従来では、図９Ｂに示されるように、実際には下記のステップ３６１〜３６３のように動作する。このとき、ステップ３６２においてオーバーヘッドが存在する。
【００７９】
（ステップ３６１）固定機能演算器１２１（Ａｄｄ／Ｓｕｂ演算器）に対してａｄｄ（１）命令が、固定機能演算器１２２（Ｍｕｌ演算器）に対してｍｕｌ（１）命令が、再構成可能演算器３２５（Ｒｅｃｏｎｆ演算器）に対してａｄｄ（２）命令が、発行される。
【００８０】
（ステップ３６２）固定機能演算器１２１（Ａｄｄ／Ｓｕｂ演算器）に対してｈａｌｔ命令が、固定機能演算器１２２（Ｍｕｌ演算器）に対してｈａｌｔ命令が、再構成可能演算器３２５（Ｒｅｃｏｎｆ演算器）に対してｒｅｃｏｎｆｉｇｕｒｅ命令が、発行される。
【００８１】
（ステップ３６３）固定機能演算器１２１（Ａｄｄ／Ｓｕｂ演算器）に対してａｄｄ（３）命令が、固定機能演算器１２２（Ｍｕｌ演算器）に対してｍｕｌ（２）命令が、再構成可能演算器３２５（Ｒｅｃｏｎｆ演算器）に対してｍｕｌ（３）命令が、発行される。
【００８２】
これに対して、図９Ｃに示されるように、演算制御部３１３（命令発行部３３５）は、下記のサイクル３７１〜３７３のように並行して命令を発行する。
【００８３】
（サイクル３７１）固定機能演算器１２１（Ａｄｄ／Ｓｕｂ演算器）に対してａｄｄ（１）命令を、固定機能演算器１２２（Ｍｕｌ演算器）に対してｍｕｌ（１）命令を、再構成可能演算器３２５（Ｒｅｃｏｎｆ演算器）に対してａｄｄ（１）命令を、並行して発行する。
【００８４】
（サイクル３７２）固定機能演算器１２１（Ａｄｄ／Ｓｕｂ演算器）に対してａｄｄ（３）命令を、固定機能演算器１２２（Ｍｕｌ演算器）に対してｍｕｌ（２）命令を、再構成可能演算器３２５（Ｒｅｃｏｎｆ演算器）に対してｉｎｓｔ＿ｒｅｃ（ｍｕｌ）命令を、並行して発行する。ここで、ｉｎｓｔ＿ｒｅｃ（ｍｕｌ）命令とは、再構成可能演算器３２５を、乗算器（ＭＵＬ）に再構成することを指示している。
【００８５】
（サイクル３７３）再構成が完了した再構成可能演算器３２５に対してｍｕｌ（３）命令を発行する。このとき、固定機能演算器１２１（Ａｄｄ／Ｓｕｂ演算器）および固定機能演算器１２２（Ｍｕｌ演算器）に対して、命令を割り当てておくことで、命令の発行効率が向上する。
【００８６】
以上、本実施の形態に係わるプロセッサ３０１によれば、所定の命令を再構成可能演算器３２５に割り当てることによって再構成可能演算器３２５の回路構成が再構成される場合は、所定の命令を発行する前に構成命令を再構成可能演算器に発行する。これによって、再構成に時間を要しても、固定機能演算器に割り当てられた命令を構成命令にあわせて発行することができる。すなわち、再構成が完了するまで、固定機能演算器に割り当てられた命令までも、所定の命令にあわせて発行待ちになることを回避することができる。
【００８７】
（実施の形態４）
次に、本発明に係わる実施の形態４について、図面を参照しながら説明する。
【００８８】
本実施の形態に係わるプロセッサが実装されている情報処理装置は、（ａ）実行対象となるソフトウェアプログラムに最適な回路構成が定義された構成情報を保持する構成情報保持機能と、（ｂ）構成情報から決定されるプロセッサの回路構成に基づいて生成された実行形式の命令コードを記憶する命令記憶機能と、（ｃ）命令コードを実行することをプロセッサに指示する前に、構成情報に基づいて回路構成を再構成することを再構成可能演算器に指示する構成制御機能とを備えることを特徴とする。
【００８９】
また、情報処理装置は、さらに、（ａ）複数種類の構成情報のテンプレートを保持するテンプレート保持機能と、（ｂ）複数のソフトウェアプログラムを保持するソフトウェアプログラム保持機能と、（ｃ）実行対象となるソフトウェアプログラムを複数のソフトウェアプログラムの中から決定するソフトウェアプログラム決定機能と、（ｄ）決定されたソフトウェアプログラムに最適な構成情報のテンプレートを複数種類の構成情報のテンプレートの中から選択するテンプレート選択機能と、（ｅ）選択された構成情報のテンプレートに基づいてプロセッサの回路構成を仮決定する回路構成仮決定機能と、（ｆ）仮決定された回路構成に基づいて、決定されたソフトウェアプログラムから実行形式の命令コードを生成する命令コード生成機能と、（ｇ）生成された命令コードに対する実行サイクルが閾値以下であるか否かを判定する閾値判定機能と、（ｈ）判定した結果、実行サイクルが閾値以下である場合は、生成された命令コードを命令記憶機能に出力し、選択された構成情報のテンプレートを構成情報保持機能に出力する出力機能とを備えるとしてもよい。
【００９０】
以上の点を踏まえて、本実施の形態に係わるプロセッサおよび本実施の形態に係わるプロセッサが実装されている情報処理装置について説明する。なお、実施の形態１に係わるプロセッサと同一の構成要素については、同一の参照符号を付して説明を省略する。
【００９１】
図１０は、本実施の形態におけるプロセッサが実装されている情報処理装置の構成を示す図である。図１０に示されるように、情報処理装置４００は、プロセッサ４０１、命令記憶部１０２、構成情報保持部４０３、生成部４０４、構成制御部４０５、ソフトウェアプログラム保持部４０６、およびテンプレート保持部４０７を備える。なお、生成部４０４は、ソフトウェアプログラム決定機能と、テンプレート選択機能と、回路構成仮決定機能と、命令コード生成機能と、閾値判定機能と、出力機能とを少なくとも備える。また、情報処理装置４００は、内部バスを介して相互に接続されているプロセッサとメモリとを少なくとも備えている。
【００９２】
プロセッサ４０１は、命令記憶部１０２に記憶されている最適化コードを読み出して実行する。
【００９３】
命令記憶部１０２は、生成部４０４から出力された最適化コードを記憶する。
【００９４】
構成情報保持部４０３は、生成部４０４から出力された構成情報のテンプレートを構成情報として保持する。なお、構成情報のテンプレートには、１以上の演算回路が定義されている。なお、構成情報保持部４０３は、プロセッサ４０１に内蔵されているとしてもよい。
【００９５】
生成部４０４は、実行対象となるソフトウェアプログラムを複数のソフトウェアプログラムの中から決定する。決定したソフトウェアプログラムに最適なテンプレートを複数種類の構成情報のテンプレートの中から選択する。ここで、複数のソフトウェアプログラムは、ソフトウェアプログラム保持部４０６に保持されている。複数種類の構成情報のテンプレートは、テンプレート保持部４０７に保持されている。
【００９６】
さらに、生成部４０４は、選択したテンプレートに基づいてプロセッサ４０１の回路構成（以下、アーキテクチャと呼称する。）を仮決定する。仮決定したアーキテクチャに基づいて、決定したソフトウェアプログラムを最適化して最終的な実行形式の命令コード（以下、最適化コードと呼称する。）を生成する。生成した最適化コードが目標とする性能を満たしている場合、すなわち、生成した最適化コードに対する実行サイクルが、あらかじめ定められた閾値以下である場合は、生成した最適化コードを命令記憶部１０２に出力し、選択した構成情報のテンプレートを構成情報保持部４０３に出力する。一方、目標とする性能を満たしていない場合、すなわち、実行サイクルが閾値を超えている場合は、次の構成情報のテンプレートを選択し、処理を繰り返す。
【００９７】
なお、生成部４０４は、全ての構成情報のテンプレートを選択した場合は、実行サイクルが最小となる構成情報のテンプレートを全ての構成情報のテンプレートの中から選択する。選択した構成情報のテンプレートを使用して生成した最適化コードを命令記憶部１０２に出力し、選択した構成情報のテンプレートを構成情報保持部４０３に出力する。ここで、生成部４０４は、選択した構成情報のテンプレートを構成情報保持部４０３に出力するまで、構成情報のテンプレート毎に実行サイクルと最適化コードとを記憶しているものとする。
【００９８】
なお、生成部４０４は、生成した最適化コードに対する実行サイクルを評価するにあたって、プロセッサ４０１のシミュレーションによって評価するとしてもよいし、プロセッサ４０１を実際に用いて評価するとしてもよい。
【００９９】
構成制御部４０５は、命令記憶部１０２に記憶されている最適化コードを実行することをプロセッサ４０１に指示する前に、構成情報保持部４０３で保持されている構成情報に基づいて回路構成を再構成することを再構成可能演算器４２５に指示する。なお、構成制御部４０５は、プロセッサ４０１に内蔵されているとしてもよい。
【０１００】
ソフトウェアプログラム保持部４０６は、複数のソフトウェアプログラムを保持する。
【０１０１】
テンプレート保持部４０７は、複数種類の構成情報のテンプレートを保持する。
【０１０２】
図１１は、本実施の形態におけるプロセッサの構成を示す図である。図１１に示されるように、プロセッサ４０１は、実施の形態１におけるプロセッサ１０１（例えば、図１参照。）と比べて、下記（１）〜（３）の点が異なる。
【０１０３】
（１）命令フェッチ部１１１の代わりに、命令フェッチ部４１１を備える。
【０１０４】
命令フェッチ部４１１は、実行対象となるソフトウェアプログラムの最適化コードを実行することを構成制御部４０５から指示されると、実行対象となるソフトウェアプログラムの最適化コードを命令記憶部１０２から読み出す。
【０１０５】
（２）演算制御部１１３の代わりに、演算制御部４１３を備える。
【０１０６】
演算制御部４１３は、再構成可能演算器４２５の回路構成を命令単位で再構成させないでソフトウェアプログラム単位で再構成させるので、構成制御部１３４を備えない。ソフトウェアプログラムの実行中は、実行前に再構成された再構成可能演算器４２５の回路構成に適合する命令を割り当てて発行する。
【０１０７】
（３）演算部１１５の代わりに、演算部４１５を備える。
【０１０８】
演算部４１５は、再構成可能演算器１２５の代わりに、再構成可能演算器４２５を備える。再構成可能演算器４２５は、回路構成を再構成することを構成制御部４０５から指示されると、実行対象となるソフトウェアプログラムに対応する構成情報に基づいて回路構成を再構成する。このとき、複数の演算回路が定義された構成情報に基づいて再構成した場合は、再構成した回路構成で実行可能な複数の命令を並行して実行する。
【０１０９】
図１２は、本実施の形態における生成部の動作の一例を示すフローチャートである。図１２に示されるように、生成部４０４は、実行対象となるソフトウェアプログラムを複数のソフトウェアプログラムの中から決定する（Ｓ４０１）。決定したソフトウェアプログラムに最適なテンプレートを複数のテンプレートの中から選択する（Ｓ４０２、Ｓ４０３）。選択したテンプレートに基づいてプロセッサ４０１のアーキテクチャ（演算器構成）を仮決定する（Ｓ４０４）。仮決定したアーキテクチャ（演算器構成）に基づいて、選択したソフトウェアプログラムから最適化コードを生成する（Ｓ４０５）。生成した最適化コードが目標とする性能を満たしている場合、すなわち、生成した最適化コードに対する実行サイクルが、あらかじめ定められた閾値以下である場合は（Ｓ４０６：Ｙｅｓ）、生成した最適化コードを命令記憶部１０２に出力し、選択したテンプレートを構成情報保持部４０３に出力する（Ｓ４１０）。一方、目標とする性能を満たしていない場合、すなわち、実行サイクルが閾値を超えている場合は（Ｓ４０６：Ｎｏ）、次のテンプレートを選択し（Ｓ４０７）、処理を繰り返す（Ｓ４０８：Ｎｏ）。
【０１１０】
なお、生成部４０４は、全てのテンプレートを選択した場合は（Ｓ４０８：Ｙｅｓ）、実行サイクルが最小となるテンプレートを全てのテンプレートの中から選択する（Ｓ４０９）。選択したテンプレートを使用して生成した最適化コードを命令記憶部１０２に出力し、選択したテンプレートを構成情報保持部４０３に出力する（Ｓ４１０）。
【０１１１】
なお、図１３に示されるように、ステップＳ４０６を省略するとしてもよい。
【０１１２】
以上、本実施の形態に係わるプロセッサ４０１が実装されている情報処理装置４００によれば、命令単位で回路構成を再構成することを指示する代わりに、ソフトウェアプログラム単位で回路構成を再構成することを指示する。これによって、ソフトウェアプログラムの実行中に回路構成を再構成しないので、回路構成を再構成することに伴う電力の消費を抑えることができる。また、回路構成を再構成するにあたって時間が掛かる場合は、再構成によって生じる命令発行待ちの状態を解消することができる。すなわち、回路規模を抑えながら、命令の並列度を向上させることができる。さらに、消費電力を抑えることができる。
【０１１３】
（実施の形態５）
次に、本発明に係わる実施の形態５について、図面を参照しながら説明する。
【０１１４】
本実施の形態に係わる情報処理装置は、（ａ）複数のソフトウェアプログラムを時分割で実行する場合において、（ｂ）実行対象となるソフトウェアプログラムを所定の時間単位で切り替える切替機能を備え、（ｃ）構成情報保持機能は、ソフトウェアプログラム毎に構成情報を保持し、（ｄ）命令記憶機能は、ソフトウェアプログラム毎に命令コードを保持し、（ｅ）構成制御機能は、実行対象となるソフトウェアプログラムが切り替わる度に、回路構成を再構成することを再構成可能演算器に指示することを特徴とする。
【０１１５】
以上の点を踏まえて、本実施の形態に係わる情報処理装置について説明する。なお、実施の形態４における情報処理装置と同一の構成要素については、同一の参照符号を付して説明を省略する。
【０１１６】
図１４は、本実施の形態における情報処理装置の構成を示す図である。図１４に示されるように、情報処理装置５００は、ソフトウェアプログラム保持部５０６に保持されている複数のソフトウェアプログラムを時分割で実行する。このとき、実行対象となるソフトウェアプログラムを切り替える度に、再構成可能演算器４２５（例えば、図１１参照。）の回路構成を再構成する。なお、生成部５０４は、切替機能を備える。
【０１１７】
具体的には、あらかじめ、生成部５０４は、ソフトウェアプログラム毎に最適化コードを生成する。生成した最適化コードを命令記憶部１０２に出力する。また、ソフトウェアプログラム毎に最適な構成情報を複数種類の構成情報のテンプレートの中から選択する。選択した構成情報のテンプレートを構成情報保持部５０３に出力する。なお、構成情報保持部５０３は、プロセッサ４０１に内蔵されているとしてもよい。
【０１１８】
ここで、生成部５０４から出力された最適化コードは、ソフトウェアプログラム毎に命令記憶部１０２に記憶される。また、生成部５０４から出力された構成情報のテンプレートは、ソフトウェアプログラム毎に構成情報として構成情報保持部５０３に保持される。
【０１１９】
なお、ソフトウェアプログラムに最適な構成情報のテンプレートは、実施の形態４において説明した手法によって選択されることが好ましい。
【０１２０】
そして、構成制御部５０５は、実行対象となるソフトウェアプログラムを切り替える度に、実行対象となるソフトウェアプログラムに対応する構成情報に基づいて回路構成を再構成することを再構成可能演算器４２５に指示する。さらに、実行対象となるソフトウェアプログラムの最適化コードを実行することをプロセッサ４０１に指示する。これに伴い、プロセッサ４０１は、実行対象となるソフトウェアプログラムの最適化コードを命令記憶部１０２から読み出し、読み出した最適化コードを実行する。なお、構成制御部５０５は、プロセッサ４０１に内蔵されているとしてもよい。
【０１２１】
図１５は、本実施の形態５におけるプロセッサにおいて実行されるソフトウェアプログラムに対応する回路構成を示す図である。ここでは、一例として、図１５に示されるように、生成部５０４は、ソフトウェアプログラムＡの最適化コードを生成する場合は、回路構成Ａ（Ａｄｄ／Ｓｕｂ、Ｍｕｌ）が定義されたテンプレートを複数のテンプレートの中から選択する。同様に、ソフトウェアプログラムＢの最適化コードを生成する場合は、回路構成Ｂ（Ａｄｄ／Ｓｕｂ、Ｌｄ／Ｓｔ）が定義されたテンプレートを選択する。ソフトウェアプログラムＣの最適化コードを生成する場合は、回路構成Ｃ（Ｍｕｌ、Ｌｄ／Ｓｔ）が定義されたテンプレートを選択する。
【０１２２】
これに伴い、構成制御部５０５は、テーブル５５０を保持し、保持しているテーブル５５０に基づいて、ソフトウェアプログラムＡを実行する場合は、回路構成を回路構成Ａに再構成することを再構成可能演算器４２５に指示する。ソフトウェアプログラムＢを実行する場合は、回路構成を回路構成Ｂに再構成することを再構成可能演算器４２５に指示する。ソフトウェアプログラムＣを実行する場合は、回路構成を回路構成Ｃに再構成することを再構成可能演算器４２５に指示する。
【０１２３】
図１６は、本実施の形態における情報処理装置において複数のソフトウェアプログラムを時分割で実行する場合の例を示す図である。図１６に示されるように、構成制御部５０５は、実行対象となるソフトウェアプログラムを切り替える度に、再構成可能演算器４２５の回路構成を再構成させる。
【０１２４】
例えば、構成制御部５０５は、実行対象となるソフトウェアプログラムをソフトウェアプログラムＡからソフトウェアプログラムＢに切り替える場合は、再構成可能演算器４２５の回路構成を回路構成Ａから回路構成Ｂに構成させる。同様に、ソフトウェアプログラムＢからソフトウェアプログラムＣに切り替える場合は、回路構成Ｂから回路構成Ｃに構成させる。ソフトウェアプログラムＣからソフトウェアプログラムＡに切り替える場合は、回路構成Ｃから回路構成Ａに構成させる。
【０１２５】
以上、本実施の形態における情報処理装置によれば、複数のソフトウェアプログラムを時分割で実行するにあたって、実行対象となるソフトウェアプログラムを切り替える度に、再構成可能演算器の回路構成を再構成させる。これに伴い、再構成可能演算器４２５は、ソフトウェアプログラムに対応する構成情報に基づいて回路構成を再構成する。これによって、ソフトウェアプログラムの合計動作時間を短縮することができる。
【０１２６】
なお、実施の形態５における生成部５０４は、ソフトウェアプログラム単位で構成情報のテンプレートを選択すると説明したが、スレッド単位で構成情報のテンプレートを選択するとしてもよい。
【０１２７】
なお、実施の形態５における構成制御部５０５は、ソフトウェアプログラム単位で回路構成を再構成することを再構成可能演算器４２５に指示すると説明したが、スレッド単位で回路構成を再構成することを再構成可能演算器４２５に指示するとしてもよい。
【０１２８】
（その他）
なお、固定機能演算器および再構成可能演算器は、１つのデバイスに実現されるとしてもよいし、個別に各デバイスに実現されるとしてもよい。
【０１２９】
１つのデバイスに実現される場合は、動的に回路構成が書き換え不可能な部分と動的に回路構成が書き換え可能な部分とを備えるデバイスによって実現される。このとき、動的に回路構成が書き換え不可能な部分に固定機能演算器が形成され、動的に回路構成が書き換え可能な部分に再構成可能演算器が形成される。
【０１３０】
個別に各デバイスに実現される場合は、動的に回路構成が書き換え不可能なデバイスに固定機能演算器が形成され、動的に回路構成が書き換え可能なデバイスに再構成可能演算器が形成される。ここで、動的に回路構成が書き換え不可能なデバイスとして、フルカスタムＬＳＩ（Large Scale Integration）、ＡＳＩＣ（Application Specific Integrated Circuit）等のようなセミカスタムＬＳＩ、ＦＰＧＡ（Field Programmable Gate Array）、ＣＰＬＤ（Complex Programmable Logic Device）等のようなプログラマブル・ロジック・デバイスなどによって実現されるとしてもよい。一方、動的に回路構成が書き換え可能なデバイスとして、動的に回路構成が書き換え可能なダイナミック・リコンフィギュラブル・デバイスなどによって実現されるとしてもよい。
【０１３１】
さらに、情報処理装置を構成する１以上の機能をデバイスに形成する設計データは、ＶＨＤＬ（Very high speed integrated circuit Hardware Description Language）、Ｖｅｒｉｌｏｇ−ＨＤＬ、ＳｙｓｔｅｍＣ等のようなハードウェア記述言語によって記述されたプログラム（以下、ＨＤＬプログラムと呼称する。）としてもよい。また、ＨＤＬプログラムを論理合成して得られるゲート・レベルのネットリストとしてもよい。また、ゲート・レベルのネットリストに、配置情報、プロセス条件等を付加したマクロセル情報としてもよい。また、寸法、タイミング等が規定されたマスクデータとしてもよい。また、構成情報は、１以上の演算回路が記述されたＨＤＬプログラムを論理合成して得られるゲート・レベルのネットリストとしてもよい。
【０１３２】
さらに、本発明に係わる情報処理装置に読み出され得るように、光学記録媒体（例えば、ＣＤ−ＲＯＭなど。）、磁気記録媒体（例えば、ハードディスクなど。）、光磁気記録媒体（例えば、ＭＯなど。）、半導体メモリ（例えば、ＳＤメモリなど。）などのような記録媒体に設計データまたは構成情報を記録しておくとしてもよい。
【０１３３】
または、ネットワーク等のような伝送路を経由して取得され得るように、伝送路上のハードウェアシステムに設計データまたは構成情報を保持しておくとしてもよい。
【０１３４】
なお、本発明に係わるプロセッサは、情報処理装置以外に、デジタルＴＶ、デジタルレコーダ、ゲーム機、ＩＰ電話機、携帯電話、ネットワーク機器などのような組み込みシステムに実装されるとしてもよい。ＣＰＵ（Central Processing Unit）、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、ＨＤＤ（Hard Disk Drive）、ネットワークアダプタなどを備えるコンピュータシステムに実装されるとしてもよい。
【０１３５】
なお、本発明に係わるプロセッサは、シングルコアプロセッサとして説明したが、マルチコアプロセッサとしてもよい。さらに、その場合において、再構成可能演算器が共有されるとしてもよい。
【０１３６】
なお、本発明に係わる情報処理装置は、シングルプロセッサを備えると説明したが、マルチプロセッサを備えるとしてもよい。
【産業上の利用可能性】
【０１３７】
本発明は、デジタル化された映像や音声などを処理するプロセッサなどとして、特に、ＤＶＤレコーダやデジタルＴＶなどのように、デジタル信号を用いた映像機器や音響機器などに実装される信号処理用プロセッサなどとして、利用することができる。
【図面の簡単な説明】
【０１３８】
【図１】図１は、本発明に係わる実施の形態１におけるプロセッサの構成を示す図である。
【図２】図２は、本発明に係わる実施の形態１におけるプロセッサの動作を示すフローチャートである。
【図３Ａ】図３Ａは、本発明に係わる実施の形態１におけるプロセッサにおいて実行される命令群の例を示す図である。
【図３Ｂ】図３Ｂは、本発明に係わる実施の形態１におけるプロセッサにおいて実行される命令群の例を示す図である。
【図３Ｃ】図３Ｃは、本発明に係わる実施の形態１におけるプロセッサの演算部における演算器の構成を示す図である。
【図４】図４は、本発明に係わる実施の形態２におけるプロセッサの構成を示す図である。
【図５】図５は、本発明に係わる実施の形態２におけるプロセッサの動作を示すフローチャートである。
【図６Ａ】図６Ａは、本発明に係わる実施の形態２におけるプロセッサにおいて実行される命令群の例を示す図である。
【図６Ｂ】図６Ｂは、本発明に係わる実施の形態２におけるプロセッサの演算部における演算器の構成の例を示す図である。
【図７】図７は、本発明に係わる実施の形態３におけるプロセッサの構成を示す図である。
【図８】図８は、本発明に係わる実施の形態３におけるプロセッサの動作を示すフローチャートである。
【図９Ａ】図９Ａは、本発明に係わる実施の形態３におけるプロセッサにおいて実行される命令群の動作例を示す図である。
【図９Ｂ】図９Ｂは、本発明に係わる実施の形態３におけるプロセッサにおいて実行される命令群に構成命令を挿入しない場合の動作例を示す図である。
【図９Ｃ】図９Ｃは、本発明に係わる実施の形態３におけるプロセッサにおいて実行される命令群に構成命令を挿入する場合の動作例を示す図である。
【図１０】図１０は、本発明に係わる実施の形態４におけるプロセッサが実装されている情報処理装置の構成を示す図である。
【図１１】図１１は、本発明に係わる実施の形態４におけるプロセッサの構成を示す図である。
【図１２】図１２は、本発明に係わる実施の形態４における生成部の動作の一例を示すフローチャートである。
【図１３】図１３は、本発明に係わる実施の形態４における生成部の動作の変形例を示すフローチャートである。
【図１４】図１４は、本発明に係わる実施の形態５におけるプロセッサが実装されている情報処理装置の構成の例を示す図である。
【図１５】図１５は、本発明に係わる実施の形態５におけるプロセッサにおいて実行されるソフトウェアプログラムに対応する回路構成を示す図である。
【図１６】図１６は、本発明に係わる実施の形態５におけるプロセッサにおいて複数のソフトウェアプログラムを時分割で実行する場合の例を示す図である。
【符号の説明】
【０１３９】
１０１、２０１、３０１、４０１  プロセッサ
１０２  命令記憶部
１０３、４０３、５０３  構成情報保持部
１１１、４１１  命令フェッチ部
１１２  命令デコード部
１１３、２１３、３１３、４１３  演算制御部
１１４  レジスタファイル
１１５、２１５、３１５、４１５  演算部
１２１〜１２３  固定機能演算器
１３１  命令保持部
１３２  命令選択部
１３３、２３３  命令割当部
１３４、２３４、３３４  構成制御部
１３５  命令発行部
１２５、２２５、３２５、４２５  再構成可能演算器
４００、５００  情報処理装置
４０４、５０４  生成部
４０５、５０５  構成制御部
４０６  ソフトウェアプログラム保持部
４０７  テンプレート保持部
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１】
2007074583.tif 000024
【図２】
2007074583.tif 000025
【図３Ａ】
2007074583.tif 000026
【図３Ｂ】
2007074583.tif 000027
【図３Ｃ】
2007074583.tif 000028
【図４】
2007074583.tif 000029
【図５】
2007074583.tif 000030
【図６Ａ】
2007074583.tif 000031
【図６Ｂ】
2007074583.tif 000032
【図７】
2007074583.tif 000033
【図８】
2007074583.tif 000034
【図９Ａ】
2007074583.tif 000035
【図９Ｂ】
2007074583.tif 000036
【図９Ｃ】
2007074583.tif 000037
【図１０】
2007074583.tif 000038
【図１１】
2007074583.tif 000039
【図１２】
2007074583.tif 000040
【図１３】
2007074583.tif 000041
【図１４】
2007074583.tif 000042
【図１５】
2007074583.tif 000043
【図１６】
2007074583.tif 000044
【国際調査報告】
2007074583.tif 000045
2007074583.tif 000046
2007074583.tif 000047
2007074583.tif 000048