(57)【要約】【課題】回路規模を抑えつつ、柔軟且つ高性能なプロセッサの提供を目的とする。【解決手段】本発明に係るプロセッサは、複数のスレッドを巡回的に、そのスレッドに割当てられた時間ずつ実行するプロセッサであって、再構成可能な集積回路を備え、複数のスレッド各々に対応する回路構成情報を記憶しておき、回路構成情報に基づいて、前記集積回路の一部分を再構成し、順次、スレッドに対応する回路構成情報に基づき再構成された集積回路を用いて、当該スレッドを実行させる。あるスレッドが実行している間に、次に実行するスレッドを選択し、実行しているスレッドが使用している前記集積回路の部分以外の部分について、次に実行するスレッドのために再構成をする。【選択図】図１
2008052750.tif 000002
【特許請求の範囲】
【請求項１】
複数の命令から成るプログラムを実行するプロセッサであって、
再構成可能な集積回路と、
回路構成情報に基づいて、前記集積回路の一部分を再構成する再構成手段と、
複数の命令各々に対応する回路構成情報を記憶する構成情報記憶手段と、
前記回路構成情報に基づいて前記集積回路を同時に再構成可能な２以上の命令を選択する選択手段と、
前記選択手段で選択された２以上の命令に対応する回路構成情報に基づき再構成された集積回路を用いて、当該２以上の命令を並列実行する実行手段と
を備えることを特徴とするプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はプロセッサに関するものであり、特に、再構成可能な集積回路を有するプロセッサに関する。
【背景技術】
【０００２】
近年のプロセッサ、例えば、デジタル信号を用いた映像、音響機器に搭載されるプロセッサは、複数の処理に対応する必要がある。
映像を圧縮する場合を見てみると、その圧縮方法としてＭＰＥＧ（Moving Picture Experts Group）２、ＭＰＥＧ４、Ｈ．２６３、Ｈ．２６４など、多数の規格が実用化されている。
【０００３】
従って、ユーザの利便性などを考慮し、近年の映像、音響機器は、１機器で、これら複数の規格への対応など、複数の機能の実現が求められる。
この要求に答える為には、一つの処理を行うハードウェアを複数搭載することで複数の処理を実現するか、又は、ハードウェアは一つ搭載して、ソフトウェアで複数の処理を実行するかの方法が考えられる。
【０００４】
前者の方法は、高性能を実現できるという利点があるものの、実現すべき機能が多数になった場合、回路規模が大きくなるという欠点がある。更に、新しい機能を追加する場合などには、ハードウェアの追加が必要となる。
一方、後者の方法は、ソフトウェアの追加、変更等により、複数の機能の実現、追加などを柔軟に行うことができるという利点があるが、性能を上げることが困難であるという欠点がある。
【０００５】
そこで、均質な回路構成の一部に特定の処理に適した回路を組み込み、動的にハードウェア構成を変更することにより、特定の処理に関して、柔軟且つ高性能な処理を実現する再構成可能なハードウェアが提案されている（特許文献１参照）。
【特許文献１】国際公開第２００２／０９５９４６号パンフレット
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、このような再構成可能なハードウェアは、回路機能を実装する部分のほかに、配線部分やスイッチなども必要であり、回路規模が大きくならざるを得ず、また、再構成のためには時間を必要とする。
そこで、本発明は、回路規模を抑えつつ、柔軟且つ高性能なプロセッサの提供を目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決する為に、複数のスレッドを巡回的に、そのスレッドに割当てられた時間ずつ実行するプロセッサであって、再構成可能な集積回路と、回路構成情報に基づいて、前記集積回路の一部分を再構成する再構成手段と、複数のスレッド各々に対応する回路構成情報を記憶する構成情報記憶手段と、順次、スレッドに対応する回路構成情報に基づき再構成された集積回路を用いて、当該スレッドを実行させる制御手段と、前記制御手段があるスレッドを実行させている間に、次に実行するスレッドを選択する選択手段とを備えることを特徴とする。
【発明の効果】
【０００８】
本発明に係るプロセッサは、上述の構成を備えることにより、スレッドごとに回路を再構成できるので、そのスレッドに適した回路を用いて実行することができるようになる。
また、前記制御手段は、更に、スレッドを実行させている間に、実行させているスレッドが使用している前記集積回路の部分以外の部分について、前記再構成手段に前記選択手段で選択されたスレッドに対応する回路構成情報に基づいた再構成をさせることとしてもよい。
【０００９】
これにより、スレッドを実行中に、次のスレッドの為の再構成を行うことできるようになるので、再構成に要する時間が不要となり、柔軟且つ高性能なプロセッサを実現できるようになる。
また、前記プロセッサは、更に、演算器を含み、前記制御手段は、前記演算器と前記再構成された集積回路とを用いて、当該スレッドを実行させることとしてもよい。
【００１０】
これにより、通常の演算器と、再構成した集積回路を使用してスレッドを実行することができ、処理に応じて通常の演算器を使用したり、再構成した演算器を使用したり、又は、双方使用したりできるので、回路規模を抑えつつ、柔軟且つ高性能な処理が出来るようになる。例えば、再構成した集積回路を、特定処理用の演算器として使用するなどである。
【００１１】
すなわち、全ての処理のために集積回路を再構成するのではないので、再構成可能な回路の規模を抑え、プロセッサ全体の規模を小さくすることが可能となり、且つ、処理に必要な回路は再構成できるので柔軟且つ高性能な処理が可能となる。
また、複数の命令から成るプログラムを実行するプロセッサであって、再構成可能な集積回路と、回路構成情報に基づいて、前記集積回路の一部分を再構成する再構成手段と、複数の命令各々に対応する回路構成情報を記憶する構成情報記憶手段と、前記回路構成情報に基づいて前記集積回路を同時に再構成可能な２以上の命令を選択する選択手段と、前記選択手段で選択された２以上の命令に対応する回路構成情報に基づき再構成された集積回路を用いて、当該２以上の命令を並列実行する実行手段とを備えることを特徴とする。
【００１２】
本発明に係るプロセッサは、上述の構成を備えることにより、命令毎に集積回路を再構成でき、再構成する回路の規模などに応じて、複数の命令用の再構成を同時に行えるので、回路規模を抑えつつ、柔軟且つ高性能な処理が出来るようになる。再構成を同時に行うためには、命令の順序を考慮するだけでなく、ある命令に必要な集積回路の回路規模と、別の命令に必要な集積回路の回路規模とを合わせても、再構成可能な論理回路の回路規模を越えない必要がある。
【発明を実施するための最良の形態】
【００１３】
＜実施形態１＞
＜概要＞
本発明に係るプロセッサは、通常のプロセッサが備えている演算器のほかに、再構成可能なハードウェアを備え、処理を分担することで、回路規模を抑えつつ、高性能な処理を実現するものである。
【００１４】
すなわち、複数の処理であっても、処理の全てが異なっているわけではなく、共通する処理や命令、頻繁に使用される処理や命令があることに着目し、共通するものは通常の演算装置で行い、各処理に特有の処理は再構成可能なハードウェアによって構成された演算装置で行わせることで、プロセッサ全体としての回路規模を押さえつつ、高性能を維持するものである。
【００１５】
本実施形態のプロセッサは、マルチスレッドプロセッサであり、マルチスレッドを実現するための方法として、各タスクを一定時間ずつ順番に実行していくラウンドロビン方式を取るものとする。
各スレッドは、それぞれに固有の回路の方が適していたり、固有の回路を必要とする処理は、再構成可能なハードウェアで再構成した回路を使用して実行する。
【００１６】
すなわち、本プロセッサは、スレッドそれぞれに固有の回路を備える必要が無いため、全体の回路規模を抑えることが可能となる。
但し、再構成には時間を要するため、その時間を削減することがポイントとなる。
以下、本発明の実施形態のマルチスレッドプロセッサについて説明する。
＜構成＞
以下、図１を用いて、本発明にかかるプロセッサ１０００の構成を説明する。
【００１７】
図１は、プロセッサ１０００の構成例を表す図である。
プロセッサ１０００は、マルチスレッドプロセッサ１１００、再構成可能演算器１２００、構成情報記憶部１３００及び再構成制御部１４００で構成される。
マルチスレッドプロセッサ１１００は、通常のプロセッサであり、複数の異なる処理を時分割で実行することができる、いわゆるマルチスレッドプロセッサである。
【００１８】
マルチスレッドプロセッサ１１００は、通常の演算器である固定機能演算器１１２０とスレッドスケジュール部１１１０とを有し、スレッドスケジュール部１１１０は、次に実行するスレッドを決定するなど、スレッドのスケジューリング機能を有する。
このスレッドスケジュール部１１１０は、次に実行するスレッドを決定して、レジスタの退避・復帰などの準備を行う他、本発明に特有の処理も行う。
【００１９】
具体的には、スレッド実行中に、次に実行するスレッドを選択し、そのスレッドを再構成制御部１４００に通知するなどである。
このマルチスレッドプロセッサ１１００は、内部の固定機能演算器１１２０と外部の再構成可能演算器１２００の双方と、必要に応じて演算データのやり取りを行いながら処理を実行していく。
【００２０】
次に、再構成可能演算器１２００は、組合せ回路や順序回路を実現できる論理ブロックと、論理ブロック間の配線部分から成る。論理ブロックは、ルックアップテーブルとフリップフロップを含む回路ユニットであり、ルックアップテーブルの設定値を変えることで、所望の論理回路を実現する。また、配線部分には、トランジスタスイッチなどが配され、配線経路が自由に設定可能となっている。
【００２１】
本実施形態では、論理ブロックはすべて同一の構成であるとし、個々に機能を変更でき、それらを組み替え可能な配線群で接続することで、各種機能の回路を実現する。
また、再構成可能演算器１２００は、同一な構成の１０個のエリアに分割されているものとする。これらエリアはそれぞれ独立して再構成が可能であり、エリア間は組み替え可能な配線が引かれ、複数エリアで一つの回路を実現できるものとする。
【００２２】
構成情報記憶部１３００は、再構成可能演算器１２００を所望の回路に再構成する為の構成情報を記憶する機能を有する。構成情報は、所望の回路の個数分あるものとする。
この構成情報は、論理ブロックのルックアップテーブルの設定値や、配線経路を設定する為の各トランジスタスイッチへの制御信号の情報を含むものである。
また、構成情報記憶部１３００は、構成情報以外に、後で説明するスレッド情報テーブル１４１０を記憶しておく機能を有する。このテーブルは、スレッドとそのスレッドで使用する構成情報を対応付けているものである。
【００２３】
再構成制御部１４００は、スレッド実行中にスレッドスケジュール部１１１０から次のスレッドの通知を受けて、通常の固定機能演算器１１２０のみで実行可能なのか、再構成可能演算器１２００を必要とするのかを判断し、再構成可能演算器１２００を再構成する場合には、再構成可能演算器１２００と構成情報記憶部１３００に指示を出す機能を有する。
【００２４】
再構成可能演算器１２００に対して再構成を行う旨と再構成を行うエリアとを通知し、構成情報記憶部１３００には、構成情報を指定して、その構成情報を再構成可能演算器１２００に供給するよう指示する。
また、再構成ができない場合には、その旨をスレッドスケジュール部１１１０に返す機能を有する。再構成ができない場合とは、再構成可能演算器１２００に、再構成できるエリアが無い場合である。
【００２５】
＜動作＞
次に、図２〜図４を用いて、本発明に係るプロセッサの動作を説明する。
図２を用いて、実行順通りにスレッドを実行する場合の例を説明し、図３を用いて、スレッドの実行順を変える場合の例を説明する。
最後に、図４を用いて、スレッドの制御処理をフローチャートを用いて説明する。
【００２６】
＜実行順通りにスレッドを実行する場合＞
図２（ａ）は、スレッド情報テーブル１４１０の構成例及び内容例を示す図であり、図２（ｂ）は、スレッドの実行例を示すタイムチャートである。
図２（ａ）で示すスレッド情報テーブル１４１０のスレッドを実行した場合のタイムチャートが、図２（ｂ）で示すタイムチャートである。
【００２７】
まず、図２（ａ）のスレッド情報テーブル１４１０を説明する。
このスレッド情報テーブル１４１０は、構成情報記憶部１３００に記憶されているものである。
スレッド情報テーブル１４１０は、スレッド名１４１１、構成情報１４１２及び使用エリア数１４１３で構成される。
【００２８】
スレッド名１４１１は、スレッドの識別子である。以下、「ＴＨ０」〜「ＴＨ３」で表される４つのスレッドが順に実行されるものとして説明する。
構成情報１４１２は、スレッド名１４１１で表されるスレッドが、再構成可能演算器１２００を使用する場合の再構成の為の構成情報を示している。
使用エリア数１４１３は、再構成可能演算器１２００を使用する場合に必要なエリア数を表す。
【００２９】
例えば、スレッド名１４１１「ＴＨ０」のスレッドは、構成情報１４１２「構成Ａ」の構成で再構成された再構成可能演算器１２００を使用し、構成情報１４１２「構成Ａ」で再構成可能演算器１２００を再構成するには、使用エリア数１４１３「６」個のエリアが必要となる。また、スレッド名１４１１「ＴＨ１」に対応する構成情報１４１２「―」は、再構成可能演算器１２００を使用しない旨を示し、当然に使用エリア数１４１３「０」個である。
【００３０】
次に、図２（ｂ）を用いて、スレッドの実行例を説明する。
ここでは、スレッドが固定機能演算器１１２０を使用しているタイムチャート１０と、そのスレッドが、再構成可能演算器１２００を使用している場合の構成情報を表すタイムチャート２０、及び、そのスレッドが実行中に、再構成可能演算器１２００を再構成している構成情報を表すタイムチャート３０を示している。また、時間を示す矢印の上方には構成情報を、下方には構成情報が必要とするエリア数を示す。尚、本図２（ｂ）では、全てのスレッドは固定機能演算器１１２０を使用する場合を示しているが、使用しない期間があってももちろん良い。
【００３１】
まず、スレッド名「ＴＨ０」、「ＴＨ１」、「ＴＨ２」、「ＴＨ３」の順で、スレッドが実行され、それぞれのスレッドが実行中に、次のスレッドが使用する再構成可能演算器１２００を再構成しておくものとする。
このように事前に準備することで、再構成に要する時間を取る必要がなくなり、実質的にスレッドの実行時間のみとなる。
【００３２】
例えば、スレッド名「ＴＨ１」のスレッド１００が、固定機能演算器１１２０のみを使用して、スレッドを実行している。
この間に、次に実行予定のスレッド名１４１１「ＴＨ２」のスレッド１１０が使用する構成情報１４１２「構成Ｃ」で再構成可能演算器１２００を再構成する。
この場合、再構成可能演算器１２００は全部で１０個のエリアを備えていることから、使用している再構成可能演算器１２００のエリア数は、「構成Ｃ」に必要な「３／１０」エリア１０１となる。
【００３３】
同様に、スレッド名「ＴＨ２」のスレッド１１０が、固定機能演算器１１２０と、再構成可能演算器の「構成Ｃ」を使用して、スレッドを実行している。
この間に、次に実行予定のスレッド名１４１１「ＴＨ３」のスレッドが使用する構成情報１４１２「構成Ｄ」で再構成可能演算器１２００を再構成する。
この場合、使用している再構成可能演算器１２００のエリア数は、「構成Ｃ」が使用している「３／１０」エリアと「構成Ｄ」が必要とする「４／１０」エリアを加えた「７／１０」エリア１１１となる。
【００３４】
このように、順繰りにスレッド実行前に、必要な再構成を事前に行う。
＜スレッドの実行順を変える場合＞
次に、図３を用いて、スレッドの実行順を変えることにより、スレッド実行中に、次のスレッドの為の再構成が可能となる例を説明する。
図３（ａ）は、スレッド情報テーブル１４２０の構成例及び内容例を示す図であり、図３（ｂ）及び（ｃ）は、スレッドの実行例を示すタイムチャートである。
【００３５】
図３（ａ）で示すスレッド情報テーブル１４２０のスレッドを実行した場合のタイムチャートが、図３（ｂ）及び（ｃ）で示すタイムチャートである。
まず、図３（ａ）のスレッド情報テーブル１４２０を説明する。
この図３（ａ）のスレッド情報テーブル１４２０は、図２（ａ）のスレッド情報テーブル１４１０とほとんど同じである為、差異のみを説明する。
【００３６】
異なる点は、スレッド名１４１１「ＴＨ１」のスレッド１４２１が、再構成可能演算器１２００を使用する点である。構成情報１４１２「構成Ｂ」、使用エリア数１４１３「５」個である。
次に、図３（ｂ）を用いて、スレッドの実行例を示すタイムチャートを説明する。タイムチャートの意味するところは、図２（ｂ）と同様である。
【００３７】
スレッド名「ＴＨ０」のスレッド２００が、固定機能演算器と、再構成可能演算器の「構成Ａ」を使用して、スレッドを実行している。
この間に、次に実行予定のスレッド名１４１１「ＴＨ１」のスレッドが使用する構成情報１４１２「構成Ｂ」で再構成可能演算器１２００を再構成しようとする。
この場合、使用している再構成可能演算器１２００のエリア数は、「構成Ａ」が使用している「６／１０」エリアと「構成Ｂ」が必要とする「５／１０」エリアを加えた「１１／１０」エリア２０１となり、スレッド名「ＴＨ０」のスレッドの実行中に「構成Ｂ」の再構成は出来ない。
【００３８】
そこで、図３（ｃ）に示すように、スレッド名「ＴＨ１」のスレッド２３０の前に、スレッド名「ＴＨ２」のスレッド２２０を実行する。すなわち、実行順序を入れ替えて、スレッドを実行する。
とすると、スレッド名「ＴＨ０」のスレッド実行中に、再構成するのはスレッド名「ＴＨ２」のスレッド２２０が使用する「構成Ｃ」であり、「構成Ａ」が使用している「６／１０」エリアと「構成Ｃ」が必要とする「３／１０」エリアを加えた「９／１０」エリア２１１となり、事前に再構成を行うことが出来るようになる。
【００３９】
同様に、スレッド名「ＴＨ２」のスレッド２２０が、固定機能演算器１１２０と、再構成可能演算器１２００の「構成Ｃ」を使用して、スレッドを実行している間に、次に実行予定のスレッド名１４１１「ＴＨ１」のスレッドが使用する構成情報１４１２「構成Ｂ」で再構成可能演算器１２００を再構成する。
この場合、使用している再構成可能演算器１２００のエリア数は、「構成Ｃ」が使用している「３／１０」エリアと「構成Ｂ」が必要とする「５／１０」エリアを加えた「８／１０」エリア２２２となる。
【００４０】
通常、ラウンドロビン方式では、各スレッドで実行すべき処理に応じて、スレッドに割り当てられるタイムスライスの長さが考慮される。すなわち、処理時間を保障しなければいけない場合などには、タイムスライスの長いスレッドを割り当てるなどである。
したがって、周期が崩れないことが、処理をスレッドに割り当てる際の前提条件となる。
【００４１】
しかし、一つのタイムスライスの時間は、処理全体の実行時間に比べれば、非常に小さいものであるので、本プロセッサでは、所定時間内で、各スレッドの実行時間が予定通りになるようにスレッドスケジュール部１１１０で調整を行うこととする。例えば、全スレッドが１０回実行することを一区切りとし、各スレッドの実行回数をカウントしておいて、最初のスレッドが１１回目の実行を開始する前に、他のスレッドで１０回に足りないものは、優先的に実行する。全スレッドが１０回実行後、最初のスレッドの１１回目の実行を開始するなどである。
【００４２】
＜スレッドの制御処理＞
次に、図４を用いて、本プロセッサのスレッド制御の処理について説明する。
図４は、本プロセッサのスレッド制御の処理を示すフローチャートである。
スレッドスケジュール部１１１０が、次に実行するスレッドを選択する（ステップＳ１００）。制御処理を開始直後の場合は、最初のスレッドである。
【００４３】
各スレッドに割り当てられている処理がすべて終了している場合は（ステップＳ１１０：Ｙ）、スレッドの制御処理を終了する。
選択されたスレッドである次スレッドを実行する場合は、そのスレッド名１４１１を再構成制御部１４００に渡し、再構成を依頼する。
依頼を受けた再構成制御部１４００は、受取ったスレッド名１４１１が、再構成可能演算器１２００を使用するか否かを構成情報記憶部１３００に記憶されているスレッド情報テーブル１４１０を参照し、判断する。具体的には、受取ったスレッド名１４１１に対応する構成情報１４１２に構成が指定されている場合は、再構成可能演算器１２００を使用すると判断する。
【００４４】
使用しないと判断した場合（ステップＳ１２０：Ｎ）、再構成制御部１４００は、その旨スレッドスケジュール部１１１０に返し、スレッドスケジュール部１１１０は、現在実行中のスレッドが終了次第、次スレッドの実行を開始する（ステップＳ１５０）。
一方、使用すると判断した場合は（ステップＳ１２０：Ｙ）、再構成するエリアが空いているか否かを判断する（ステップＳ１３０）。具体的には、受取ったスレッド名１４１１に対応する使用エリア数１４１３に示されている数分のエリアが空いているかを判断する。
【００４５】
再構成制御部１４００は、内部に、現在使用されているエリアの番号を記憶しているものとし、使用しているスレッドのタイムスライスが終了した場合は、使用していたエリアは空いたものとされ、記憶しているエリア番号から消去する。
エリアが空いていないと判断した場合は（ステップＳ１３０：Ｎ）、再構成制御部１４００は、スレッドスケジュール部１１１０にその旨通知する。スレッドスケジュール部１１１０は、異なるスレッドを選択する（ステップＳ１００）。スレッドスケジュール部１１１０は、各スレッドの実行回数を記憶しておき、適切な時に優先的に選択して、全スレッドの実行回数をあわせるものとする。
【００４６】
一方、エリアが空いていると判断した場合には（ステップＳ１３０：Ｙ）、再構成制御部１４００は、再構成可能演算器１２００に再構成する旨通知し、構成情報記憶部１３００には、受取ったスレッド名１４１１に対応する構成情報１４１２を、エリアを指定して送信させる。送信後、再構成制御部１４００は、内部に記憶している使用中のエリア番号を更新する。
【００４７】
再構成可能演算器１２００は、構成情報記憶部１３００から送られた構成情報で、再構成を行い（ステップＳ１４０）、完了したら再構成制御部１４００に通知する。
再構成が完了した旨の通知を受けた再構成制御部１４００は、その旨スレッドスケジュール部１１１０に返し、スレッドスケジュール部１１１０は、現在実行中のスレッド終了後、すぐに次スレッド実行を開始する（ステップＳ１５０）。
【００４８】
スレッドを開始させたスレッドスケジュール部１１１０は、次のスレッドを選択する（ステップＳ１００）。
＜実施形態２＞
＜概要＞
実施形態１が、スレッド毎に、再構成した再構成可能演算器を使用したのに対して、本実施形態では、命令毎に、再構成した再構成可能演算器を使用するものである。
【００４９】
以下、本実施形態２の構成等を説明する。
＜構成＞
図５は、実施形態２のプロセッサ５０００の構成例を表す図である。
プロセッサ５０００は、命令フェッチ部５１００、命令デコード部５２００、演算制御部５３００、アドレステーブル記憶部５４００、再構成情報記憶部５５００、再構成可能演算器５６００及び固定機能演算器５７００を備え、外部に命令記憶部５０１０を備える。
【００５０】
命令記憶部５０１０は、プロセッサ５０００で実行する命令コードを記憶しておく機能を有する。
命令フェッチ部５１００は、命令記憶部５０１０から、命令コードを読み込み、命令デコード部５２００に渡す機能を有する。
命令デコード部５２００は、命令フェッチ部５１００から命令コードを受け取り、解析する通常の機能のほか、本発明に独自の機能を有する。
【００５１】
具体的には、デコードの結果、再構成可能演算器５６００を用いる命令の場合は、命令種別から構成情報の記憶されているアドレスをアドレステーブル記憶部５４００から取得し、再構成情報記憶部５５００にアドレスを渡して再構成可能演算器５６００に構成情報を送信させる機能である。
アドレステーブル記憶部５４００は、命令種別とその構成情報のアドレスとを対応付けて記憶している機能を有している。
【００５２】
演算制御部５３００は、命令デコード部５２００がデコードした結果に従って、演算動作を制御する機能を有する。固定機能演算器５７００と再構成可能演算器５６００とに対して、タイミングをとりながら命令を発行していく。
再構成情報記憶部５５００は、複数の各命令に対応して、構成情報を記憶する機能を有する。ここで記憶されている各構成情報の先頭アドレスが、アドレステーブル記憶部５４００で、命令種別と対応付けて記憶されている。この構成情報は、実施形態１の構成情報記憶部１３００に記憶されている構成情報と同様である。
【００５３】
また、再構成情報記憶部５５００は、命令デコード部５２００からの指示で、指定されたアドレスの構成情報を、再構成可能演算器５６００に送信する機能も有している。
再構成可能演算器５６００は、再構成が可能な演算器であって、実施形態１の再構成可能演算器１２００と同様である。但し本実施形態では、４つのエリアに分割されているものとする。
【００５４】
固定機能演算器５７００は、複数の固定機能演算器で構成され、本実施形態では３つの固定機能演算器（５７０１、５７０２、５７０３）で構成されるものとする。
以下、命令と構成情報との対応関係を簡単に説明し、動作を説明する。
＜命令コードと構成情報との対応関係＞
本発明で使用する命令コードから、その命令の実行に必要な再構成を行う為の構成情報の求め方を、図６及び図７を用いて説明する。
【００５５】
図６は、本発明で使用する命令コードの構成例を示す図であり、図７は、命令情報テーブル５４１０の構成例及び内容例を示す図である。
まず、図６の命令コードの構成例から説明する。
本発明で使用する命令コード５１１０は、命令の種別を示すオペコード５１１１と、この命令で扱う値などを示すオペランド５１１２で構成される。
【００５６】
本発明では、このオペコード５１１１と構成情報が対応付けられており（矢印参照）、命令の実行には再構成可能演算器５６００が必要であると、プロセッサによって判断された場合には、対応付けられている構成情報によって再構成された再構成可能演算器５６００で命令が実行される。
プロセッサによって、命令の実行には再構成可能演算器５６００は不要であると、判断された場合には、固定機能演算器５７００を用いて、実行がなされる。
【００５７】
次に、図７の命令情報テーブル５４１０について説明する。
この命令情報テーブル５４１０は、アドレステーブル記憶部５４００に記憶されているものとする。
命令情報テーブル５４１０は、オペコード種別５４１１、アドレス５４１２及び使用エリア数５４１３とで構成される。
【００５８】
オペコード種別５４１１は、命令コードのオペコード、すなわち、命令を示すものである。ここでは、再構成可能演算器５６００を用いる命令のみが記載されているものとする。
従って、ここに記載されていない命令は、固定機能演算器５７００で実行することになる。
【００５９】
次に、アドレス５４１２は、オペコード種別５４１１で表されるオペコードに対応付けられている構成情報の、再構成情報記憶部５５００内でのアドレスを示す。尚、本実施形態ではアドレスとしているが、ＩＤ等、再構成情報を特定できるものであればよい。
使用エリア数５４１３は、再構成可能演算器５６００を使用する場合のエリア数を表す。例えば、オペコード種別５４１１「Sub」の命令は、アドレス５４１２「ａｄｄｒ１」で示されるアドレスに記憶されている構成情報で再構成された再構成可能演算器５６００を使用し、再構成可能演算器５６００を再構成するには、使用エリア数５４１３「３」個のエリアが必要である。
【００６０】
本実施形態の場合、命令の使用する再構成可能演算器５６００のエリア数を考慮し、プログラムを機械語に変換するコンパイル時に、本実施形態では命令コード５１１０に変換する時に、命令の順序及び命令で再構成するエリアの番号を決めておくものとする。すなわち、コンパイル時に、実行する命令の順序を考慮した上で、前の命令の実行中に再構成できるような命令順に構成し、それぞれの再構成を行うエリアを決めておくものとする。また、使用するエリア番号は、例えば、オペランドでエリア番号を指定したり、命令毎にエリア番号を決めておくなどして、命令デコード部が知ることができるようにしてあるものとする。
【００６１】
＜動作＞
次に、図８〜図１０とを用いて、どのように命令が実行されるかを説明する。
図８は、本発明に係る命令セットを用いたプログラム例であり、図９は、プログラムを動作させたプロセッサのパイプライン動作の例である。
また、図１０は、本実施形態のプロセッサの命令実行処理を示すフローチャートである。
【００６２】
まず、図８のプログラムについて簡単に説明する。
オペコード５１１１「Add」、オペランド５１１２「r0,r1,r2」の命令コードは、レジスタ１の内容とレジスタ２の内容を加算し、結果をレジスタ０に代入することを意味し、オペコード５１１１「Sub」、オペランド５１１２「r3,r1,r3」の命令コードは、レジスタ１の内容からレジスタ３の内容を減算し、結果をレジスタ３に代入することを意味する。
【００６３】
また、オペコード５１１１「Reconf0」、オペランド５１１２「r2,r0,0xfe」の命令コードは、レジスタ０の内容と即値「0xfe」を用いて、演算「Reconf0」を行い、結果をレジスタ２に代入することを意味し、オペコード５１１１「Reconf1」、オペランド５１１２「r3,r1,r3」の命令コードは、レジスタ１の内容とレジスタ３の内容とを用いて、演算「Reconf1」を行い、結果をレジスタ３に代入することを意味する。
【００６４】
次に、図９及び図１０を用いて、プログラムを実行するプロセッサの動作を説明する。図１０のフローチャートに沿って、図９のタイムチャートを参照しながら説明する。
図８に示すプログラムが命令記憶部５０１０に記憶されているものとする。
まず、命令フェッチ部５１００は、命令コード「Add r0,r1,r2」をフェッチし（図１０：ステップＳ８００、図９：ステップＳ５００）、命令デコード部５２００に渡す。
【００６５】
命令コードを受取った命令デコード部５２００は、受取った命令コードを解析する。
受取った命令コードが終了を示す旨のコードである場合には（図１０：ステップＳ８１０：Ｙ）、命令デコード部５２００は、処理を終了する。
また、命令コードが終了を示す旨のコードでない場合には（図１０：ステップＳ８１０：Ｎ）、命令デコード部５２００は、オペコード５１１１「Add」をアドレステーブル記憶部５４００に渡して、構成情報のアドレスを要求する。
【００６６】
アドレステーブル記憶部５４００は、命令情報テーブル５４１０を参照し、オペコード種別５４１１に、渡されたオペコード５１１１「Add」が在るかを検索し、結果、ないことから、再構成可能演算器５６００は使用しない旨を命令デコード部５２００に返す（図１０：ステップＳ８２０：Ｎ、図９：ステップＳ５１０）。
再構成可能演算器５６００を使用しない旨を受取った命令デコード部５２００は、「Add r0,r1,r2」のデコード済みの命令を演算制御部５３００に渡す。
【００６７】
デコード結果を渡された演算制御部５３００は、固定機能演算器５７００に命令を発行し、命令コード「Add r0,r1,r2」を実行する（図１０：ステップＳ８３０、８４０）。
命令フェッチ部５１００は、命令コード「Add r0,r1,r2」をフェッチ後、次の命令コード「Sub r3,r1,r3」をフェッチし（図１０：ステップＳ８００、図９：ステップＳ５２０）、命令デコード部５２００に渡す。
【００６８】
命令コードを受取った命令デコード部５２００は、オペコード５１１１「Sub」をアドレステーブル記憶部５４００に渡して、構成情報のアドレスを要求する。
アドレステーブル記憶部５４００は、命令情報テーブル５４１０を参照し、オペコード種別５４１１に、渡されたオペコード５１１１「Sub」が在るかを検索し、結果、あることから、アドレス５４１２「ａｄｄｒ１」を命令デコード部５２００に返す（図１０：ステップＳ８２０：Ｙ、図９：ステップＳ６００）。
【００６９】
アドレスを受取った命令デコード部５２００は、再構成情報記憶部５５００に受取ったアドレス５４１２「ａｄｄｒ１」を渡し、そのアドレスの構成情報を再構成可能演算器５６００に送信して再構成を行う旨を指示する。
指示を行った命令デコード部５２００は、「Sub r3,r1,r3」のデコード済みの命令を演算制御部５３００に渡す。
【００７０】
一方指示を受取った再構成情報記憶部５５００は、受取ったアドレスの構成情報を再構成可能演算器５６００に送信して再構成を行う（図１０：ステップＳ８５０、図９：ステップＳ６１０）。
この再構成は、再構成可能演算器５６００の４エリアのうち、３エリアを再構成する（図７参照）。
【００７１】
デコード結果を渡された演算制御部５３００は、再構成可能演算器５６００に命令を発行し、命令コード「Sub r3,r1,r3」を実行する（図１０：ステップＳ８６０、図９：ステップＳ６２０）。
その後、実行結果をレジスタ３に書き出す（図９：ステップＳ６３０）。
このように、命令を順次同時に行っていく。
【００７２】
ここで、命令コード「Sub r3,r1,r3」の次の命令コード「Reconf0 r2,r0,0xfe」を実行する場合を見ると、このオペコード「Reconf0」は再構成可能演算器５６００を使用する。
従って、「Sub r3,r1,r3」を実行中（図９：ステップＳ６２０）に、再構成を行うことになる（図９：ステップＳ７００）。
【００７３】
このオペコード種別５４１１「Reconf0」は、使用エリア数５４１３「１」個であることから、「Sub r3,r1,r3」がエリアを３個使用して実行中であっても、再構成が可能となる。
次の命令コード「Reconf1 r3,r1,r3」を実行する場合も同様である。
このように、再構成可能な演算器を持つプロセッサにおいて、命令単位で再構成可能な演算器を制御することが可能となり、柔軟且つ高性能な演算処理を、高い面積効率で実現することができる。
【００７４】
＜変形例＞
次に、実施形態２の変形例について説明する。
実施形態２では、１命令ごとに再構成可能演算器を再構成したが、本変形例では、複数の命令を一度に再構成する例を説明する。同時に複数の命令を実行できることから、処理速度の向上を図ることができる。
【００７５】
図１１〜図１３とを用いて、どのように命令が実行されるかを説明する。
図１１は、本変形例の命令セットを用いたプログラム例であり、図１２は、プログラムを動作させたプロセッサのパイプライン動作の例である。
また、図１３は、本変形例のプロセッサの命令実行処理を示すフローチャートである。
まず、図１１のプログラムの、各命令の内容については、図８と同様である。
【００７６】
但し、「Reconf0 r2,r0,0xfe」と「Reconf1 r3,r1,r3」とを同じステージで行う点が異なる。図１１では、説明の便宜上、「Reconf0 r2,r0,0xfe」と「Reconf1 r3,r1,r3」とを横に並べて記載することで、同時に実行されることを示しているが、２命令を同時に実行することを命令デコード部５２００が解釈できるように、コンパイラが出力しておくこととする。
【００７７】
例えば、命令の使用する再構成可能演算器５６００のエリア数を考慮し、コンパイル時に、命令の順序及び命令で再構成するエリアの番号を決める。すなわち、コンパイル時に、命令実行の順序を考慮して、同時に実行可能で、且つ、同時に再構成できる命令を選択し、それぞれの再構成を行うエリアを決める。この並列に実行する命令と使用するエリア番号とは、例えば、並列実行を示す命令コードを設けて、そのオペランドにこれら命令とエリア番号などを記載する。
【００７８】
具体的には、コンパイルにおいて、使用エリア数５４１３が考慮されて、「Sub」と「Reconf0」とは同時に再構成可能であるが、「Sub」と「Reconf1」とは同時に再構成は出来ないことになる。「Sub」と「Reconf0」とは合わせて４つのエリアを使用するが、「Sub」と「Reconf1」とは合わせて５つのエリアを必要とするからである（図７参照）。
図１２及び図１３を用いて、プログラムを実行するプロセッサの動作を簡単に説明する。図１３のフローチャートに沿って、図１２のタイムチャートを参照しながら説明する。
【００７９】
図１３のフローチャートは、図１０のフローチャートとの差異のみを説明する。具体的には、ステップＳ９００〜ステップＳ９２０までである。
「Reconf0 r2,r0,0xfe」と「Reconf1 r3,r1,r3」は、再構成可能演算器を使用し、且つ、同時に実行することを解析した命令デコード部５２００は、オペコード５１１１「Reconf0」と「Reconf1」とをアドレステーブル記憶部５４００に渡して、構成情報のアドレスを要求する。
【００８０】
アドレステーブル記憶部５４００は、命令情報テーブル５４１０を参照し、アドレス５４１２「ａｄｄｒ４」と「ａｄｄｒ５」とを命令デコード部５２００に返す（図１３：ステップＳ８２０：Ｙ、ステップＳ９００：Ｙ）。
アドレスを受取った命令デコード部５２００は、再構成情報記憶部５５００に受取ったアドレス５４１２「ａｄｄｒ４」と「ａｄｄｒ５」を渡し、そのアドレスの構成情報を再構成可能演算器５６００に送出して再構成を行う旨を指示する。
【００８１】
指示を行った命令デコード部５２００は、「Reconf0 r2,r0,0xfe」と「Reconf1 r3,r1,r3」のデコード済みの命令を演算制御部５３００に渡す。
一方指示を受取った再構成情報記憶部５５００は、受取ったアドレスの構成情報を再構成可能演算器５６００に送信して再構成を行う（図１３：ステップＳ９１０、図１２：ステップＳ７００）。
【００８２】
デコード結果を渡された演算制御部５３００は、再構成可能演算器５６００に命令を発行し、命令コード「Reconf0 r2,r0,0xfe」と「Reconf1 r3,r1,r3」を実行する（図１３：ステップＳ９２０、図１２：ステップＳ７１０）。
命令コードを受取った命令デコード部５２００は、再構成可能演算器を使用しない場合（図１３：ステップＳ８２０：Ｎ）と、使用したとしても１つの命令の場合（図１３：ステップＳ９００：Ｎ）とには、それぞれ図１０と同様の処理を行う（図１３：ステップＳ８３０〜ステップＳ８７０）。
【００８３】
尚、ここでは、再構成可能な演算器を用いる二つの命令を同時に処理する場合を説明したが、同時に発行できる命令数は二つに限るものではない。また、固定機能演算器５７００を使用する命令と同時に処理してもよい。
＜補足＞
以上、本発明に係るプロセッサについて実施形態に基づいて説明したが、このプロセッサを部分的に変形することもでき、本発明は上述の実施形態に限られないことは勿論である。即ち、
（１）実施形態２では、命令コードのオペコードと構成情報とを対応付けていたが、これに限られない。
【００８４】
例えば、オペランドの一部に構成情報を示すコードを入れておいても良い。図１４に示すように、命令コード５１５０のオペランドのフィールド５１６０に、構成情報のＩＤなどを入れておき、実行時にＩＤに応じて構成情報を特定する。
（２）実施形態２では、説明の便宜上、複数の固定機能演算器の実行については詳細な説明はしていないが、これらの固定機能演算器と再構成可能演算器とが同時に実行できるものである場合には、同時に複数の命令を発行することとしても良い。
【００８５】
同時に発行すべき命令の決定如何によっては、演算効率を大幅に向上させることが可能となる。
すなわち、再構成可能なハードウェアによって構成された演算器においては、複数種類の演算機能が選択的に実行可能である。従って、任意の命令を実行することでき、本発明による命令セットを用いることにより、命令の並列度を向上させた最適な機能を実現するプログラムを作成することが可能となるからである。
【００８６】
同時に発行すべき命令を決定する動作は、例えば、プロセッサの内部で命令解釈時に行われるものでも、プロセッサに対して与えられるプログラムの時点で、予め行われているものでもよい。
（３）実施形態では、再構成可能演算器は、均質な複数のエリアに分かれていることとしているが、エリア毎に異なる論理ブロックを有していてもよく、また、そのエリアの大きさが異なっていても良い。
（４）実施形態では、再構成可能演算器を構成する論理ブロックは、ルックアップテーブルとフリップフロップを含む回路ユニットであることとしているが、論理ブロックは、ＡＬＵ（Arithmetic and Logical Unit）、シフトやデータ制御、論理演算を行なうユニット、フリップフロップなどから構成されるもの、すなわち、一般の論理回路の組合せで構成されるものであってもよい。
【産業上の利用可能性】
【００８７】
本発明にかかるプロセッサは、回路規模を抑えつつ柔軟かつ高性能な処理を実現することが可能であるため、画像処理ＬＳＩの演算器等として特に有用である。
【図面の簡単な説明】
【００８８】
【図１】プロセッサ１０００の構成例を表す図である。
【図２】図２（ａ）は、スレッド情報テーブル１４１０の構成例及び内容例を示す図であり、図２（ｂ）は、スレッドの実行例を示すタイムチャートである。
【図３】図３（ａ）は、スレッド情報テーブル１４２０の構成例及び内容例を示す図であり、図３（ｂ）及び（ｃ）は、スレッドの実行例を示すタイムチャートである。
【図４】本プロセッサのスレッド制御の処理を示すフローチャートである。
【図５】実施形態２のプロセッサ５０００の構成例を表す図である。
【図６】実施形態２で使用する命令コードの構成例を示す図である。
【図７】命令情報テーブル５４１０の構成例及び内容例を示す図である。
【図８】実施形態２に係る命令セットを用いたプログラム例である。
【図９】プログラムを動作させたプロセッサのパイプライン動作の例である。
【図１０】実施形態２のプロセッサの命令実行処理を示すフローチャートである。
【図１１】変形例の命令セットを用いたプログラム例である。
【図１２】変形例のプログラムを動作させたプロセッサのパイプライン動作の例である。
【図１３】変形例のプロセッサの命令実行処理を示すフローチャートである。
【図１４】実施形態２で使用する命令コードの構成の変形例を示す図である。
【符号の説明】
【００８９】
１０００  ５０００    プロセッサ
１１００    マルチスレッドプロセッサ
１１１０    スレッドスケジュール部
１１１０    旨スレッドスケジュール部
１１２０    固定機能演算器
１２００    再構成可能演算器
１３００    構成情報記憶部
１３００    再構成情報記憶部
１４００    再構成制御部
１４１０  １４２０    スレッド情報テーブル
５０１０    命令記憶部
５１００    命令フェッチ部
５１１０  ５１５０    命令コード
５１１１    オペコード
５１１２    オペランド
５２００    命令デコード部
５３００    演算制御部
５４００    アドレステーブル記憶部
５４１０    命令情報テーブル
５４１３    使用エリア数
５５００    再構成情報記憶部
５６００    再構成可能演算器
５７００    固定機能演算器
【図１】
2008052750.tif 000003
【図２】
2008052750.tif 000004
【図３】
2008052750.tif 000005
【図４】
2008052750.tif 000006
【図５】
2008052750.tif 000007
【図６】
2008052750.tif 000008
【図７】
2008052750.tif 000009
【図８】
2008052750.tif 000010
【図９】
2008052750.tif 000011
【図１０】
2008052750.tif 000012
【図１１】
2008052750.tif 000013
【図１２】
2008052750.tif 000014
【図１３】
2008052750.tif 000015
【図１４】
2008052750.tif 000016