(57)【要約】【課題】  他機能へ影響を与えずに細かな動作制御を行う。【解決手段】  ＡＬＵ１の入力ポートには、選択器４、６を介してレジスタ群３、５が接続されており、ＡＬＵ１に入力するデータは、シーケンサ２に従って選択器４、６が選択したレジスタに保持される。たとえば、あるアプリケーションでレジスタ１（３ａ、５ａ）が選択されていて、次のアプリケーションに切り替える場合、前のアプリケーション終了後、シーケンサ２の指示によって選択器４、６が選択するレジスタを切り替える。このとき、前のアプリケーションのデータは、レジスタ１（３ａ、５ａ）に残っているので、アプリケーション終了後のデータ吐き出しを行わずに、直ちに次のアプリケーションを開始できる。【選択図】  図１
2006011924.tif 000002
【特許請求の範囲】
【請求項１】
複数の演算器を含む演算器群と、前記演算器群の動作を制御するシーケンサを有する再構成可能演算装置において、
前記演算器の入力ポートと前記演算器にデータを入力する前段の間に配置され、前記前段から前記演算器に入力される前記データを保持するレジスタを複数有するレジスタ群と、
前記シーケンサからの指示に従って、前記演算器と接続する前記レジスタを前記レジスタ群から選択し、選択された前記レジスタと前記演算器の前記入力ポートとを接続する選択器と、
を具備することを特徴とする再構成可能演算装置。
【請求項２】
任意のアプリケーションを実行するための前記演算器群の状態を記述した設定情報に応じて前記状態ごとの前記レジスタ群において選択される前記レジスタが予め決定され、
前記選択器は、前記シーケンサの設定する前記演算器群の状態の切り替えに応じて前記レジスタの選択を行うことを特徴とする請求項１記載の再構成可能演算装置。
【請求項３】
前記レジスタ群を構成する複数の前記レジスタは、それぞれ同時に選択される他のすべてのレジスタ群の前記レジスタと関連付けられて同一面を構成しており、
すべての前記選択器は、前記シーケンサからの指示に応じて、前記同一面の前記レジスタを選択することを特徴とする請求項１記載の再構成可能演算装置。
【請求項４】
前記レジスタ群を構成する複数の前記レジスタは、それぞれ同時に選択される所定のグループに属する他のレジスタ群の前記レジスタと関連付けられて同一面を構成し、
前記グループに属する前記レジスタ群に接続する前記選択器は、前記シーケンサからの指示に応じて、前記同一面の前記レジスタを選択することを特徴とする請求項１記載の再構成可能演算装置。
【請求項５】
前記レジスタ群を構成する前記レジスタは、前記選択器によって前記演算器に接続されていない状態では、前記レジスタ自身の出力を入力として選択することを特徴とする請求項１記載の再構成可能演算装置。
【請求項６】
前記レジスタ群を構成する前記レジスタは、近接するレジスタ群の所定の前記レジスタと直列に接続する配線を有しており、
前記レジスタ群を構成するレジスタは、前記選択器によって前記演算器に接続されている状態では前記前段と接続され、前記選択器によって前記演算器に接続されていない状態では前記近接するレジスタ群と直列に接続されることを特徴とする請求項１記載の再構成可能演算装置。
【請求項７】
前記レジスタ群を構成する前記レジスタは、前記レジスタ群に接続する前記演算器に入力する入力データに応じたデータ長で構成されることを特徴とする請求項１記載の再構成可能演算装置。
【請求項８】
複数の演算器を含む演算器群と、前記演算器群の動作を制御するシーケンサとを有し、前記シーケンサによって前記演算器群の動作状態を再構成する半導体装置において、
前記演算器の入力ポートと前記演算器にデータを入力する前段の間に配置され、前記前段から前記演算器に入力される前記データを保持するレジスタを複数有するレジスタ群と、
前記シーケンサからの指示に従って、前記演算器と接続する前記レジスタを前記レジスタ群から選択し、選択された前記レジスタと前記演算器の前記入力ポートとを接続する選択器と、
を具備することを特徴とする半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は再構成可能演算装置および半導体装置に関し、特に複数の演算器を含む演算器群と、前記演算器群の動作を制御するシーケンサを有する再構成可能演算装置および半導体装置に関する。
【背景技術】
【０００２】
従来、製品出荷後に発生する仕様変更、機能追加、新サービス追加などに対し、デバイスの作り直しをせずに機能変更を行うことを可能にするため、回路構成情報を入れ替えるだけで対応できる再構成可能演算装置が提供されている。
【０００３】
再構成可能演算装置として、たとえば、ＩＰ−Ｆｌｅｘ社製のＤＡＰ／ＤＮＡ（Digital Application Processor/Distributed Network Architecture（登録商標））や、ＮＥＣ社製のＤＲＰ（Dynamically Reconfigurable Processor）が知られている。
【０００４】
ＤＡＰ／ＤＮＡは、２次元状に配置される複数の演算器複合ユニットを有し、ユニット内の構成と演算器間の接続情報を記述したメモリを複数面備え、このメモリ面を切り替えることにより異なるアルゴリズムを処理する。
【０００５】
ＤＲＰは、命令メモリ、命令デコーダおよび演算器を有する演算器ユニットが２次元状に複数配置されており、演算器ユニットの動作を状態遷移管理部で管理する。状態遷移管理部では、状態遷移テーブルを有し、状態遷移テーブルに従って各演算器ユニットの実行する命令メモリのアドレスを指示することにより、任意の命令を選択して実行させる。
【０００６】
このように、再構成可能演算装置は、演算器（ＡＬＵ；Arithmetic and Logic Unit）が複数配置された演算器群を有しており、演算器群を構成する演算器の動作や演算器間の接続関係は、設定情報に基づき、再構成することができる。各演算器には、入力値を保持するためのレジスタが接続されている。図７は、従来の再構成可能演算装置の演算器とレジスタの構成図である。
【０００７】
従来の再構成可能演算装置に配置される複数のＡＬＵ９０１、９０２は、バス９１０を介してデータの交換を行って所定の演算処理を行っている。それぞれのＡＬＵ９０１、９０２には、バス９１０を介して入力する入力値を保持するためのレジスタ９０３、９０４、９０５、９０６が入力信号に対して固定で設置されている。すなわち、２入力のＡＬＵ９０１については、それぞれの入力に対して、レジスタ９０３とレジスタ９０４が１ずつ固定で設置されている。同様に、２入力のＡＬＵ９０２に対してもレジスタ９０５、９０６が設置されている。このように、従来の再構成可能演算装置では、ＡＬＵの入力に対して１つのレジスタが固定で設けられていた。
【０００８】
一方、ＡＬＵに複数のレジスタを設ける一例として、外部コプロセッサからアクセス可能な複数セットのレジスタファイルがＡＬＵに接続される構成を有するＲＩＳＣ（Reduced Instruction Set Computer）プロセッサがある（たとえば、特許文献１参照）。
【特許文献１】特表２００２−５１２３９９号公報（図３）
【発明の開示】
【発明が解決しようとする課題】
【０００９】
従来の再構成可能演算装置では、動作させる演算器群の構成を時間軸で切り替えようとした場合、性能が低下するという問題点がある。図８は、従来の再構成可能演算装置における構成の切り替えタイミングを示した図である。アプリケーション１とアプリケーション２では、演算器群は、それぞれの処理内容に合わせて異なる構成が設定される。
【００１０】
従来の再構成可能演算装置は、各ＡＬＵに設置されるレジスタが１個に固定されているため、アプリケーション１（９２１）からアプリケーション２（９２２）に構成を切り替えようとした場合、アプリケーション１（９２１）が終了した後、アプリケーション１（９２１）で生成されたデータの吐き出し（９３１）を行ってデータをレジスタから出力し、その後アプリケーション２（９２２）へ切り替えていた。アプリケーション２（９２２）からアプリケーション１（９２１）に戻る際にも、同様の処理が行われた後、切り替えられていた。
【００１１】
このように、アプリケーションを切り替える際、データの吐き出しを行う無駄時間が生じ、細かく時分割でアプリケーションを切り替えたいような場合には、性能が低下するという問題がある。さらに、アプリケーション１で実行した結果を保持して、アプリケーション１の２回目で使用したい場合には、データをメモリなどの記憶保持装置に保存する必要があるため、実行性能に多大な影響があった。
【００１２】
また、従来の再構成可能演算装置では、演算器群のデバッグが難しいという問題点がある。デバッグでは、ある任意の時点における演算器の入出力の状態（レジスタの値）を知りたい場合が生じるが、データを取り出すためには、動作を完全に停止するか、停止後の回路状態およびデータはすべて破棄する必要があった。しかしながら、従来の再構成可能演算装置では、レジスタ間を演算器が挟みこんでいる構成であるため、演算器を介してしかレジスタの値を外部へ出力することができなかった。そして、演算器に接続されるレジスタは１個であるため、ある瞬間のレジスタの値を外部に取り出すためには、演算器の命令をすべて一旦ＮＯＰ（無処理）に変更してデータを順次流す必要があった。この場合、命令変更前の演算途中のデータが流れてしまうため、デバッグ用のデータを取り出した後は、継続して演算を再開することができなかった。
【００１３】
一方、従来のコンテキストスイッチングを行って複数セットのレジスタファイルを切り替える装置では、すべてのレジスタファイルは、一括して同時に切り替えられていた。このため、ＡＬＵごと、あるいは１つのＡＬＵグループ単位など、細かい単位での切り替えを行うことができなかった。
【００１４】
本発明はこのような点に鑑みてなされたものであり、時分割のアプリケーション切り替えやデバッグなどの際に、他機能へ影響を与えずに細かな動作制御が可能な再構成可能演算装置および半導体装置を提供することを目的とする。
【課題を解決するための手段】
【００１５】
本発明では上記課題を解決するために、図１に示すような再構成可能演算装置が提供される。再構成可能演算装置は、演算を行う演算器（図では、ＡＬＵ）１が複数配置される演算器群と、この演算器群の動作を制御するシーケンサ２とによって、所定のアプリケーションを実行する。
【００１６】
演算器（ＡＬＵ）１の入力ポート（図の例では２つ）には、選択器４、６を介してレジスタ群３、５が接続する。レジスタ群３は、演算器（ＡＬＵ）１へデータを出力する前段と、入力ポートとの間のデータ入力経路上に配置され、演算器（ＡＬＵ）１に入力するデータを保持する複数のレジスタ、レジスタ１（３ａ）、レジスタ２（３ｂ）およびレジスタ３（３ｃ）を有する。もう一方の入力ポートに接続するレジスタ群５も同様に配置され、レジスタ１（５ａ）、レジスタ２（５ｂ）およびレジスタ３（５ｃ）を有する。選択器４、６は、レジスタ群３、５と演算器（ＡＬＵ）１の間に配置され、シーケンサ２が指示するレジスタと演算器（ＡＬＵ）１を接続する。
【００１７】
このような再構成可能演算装置によれば、あるアプリケーション実行時には、シーケンサ２の指示に従って、レジスタ群３、５の１つのレジスタが選択器４、６によって選択され、演算器（ＡＬＵ）１は、選択されたレジスタを介して入力するデータを用いて、演算処理を行っている。この状態で、たとえば、アプリケーションを切り替える場合、シーケンサ２が選択器４、６に対して選択レジスタの変更を指示する。選択器４、６は指示に従って、現在使用中のレジスタと演算器（ＡＬＵ）１との接続を解除し、指示されたレジスタと演算器（ＡＬＵ）１を接続する。これにより、アプリケーション切り替え前のデータの流れ（以下、データフローとする）で使用するレジスタと、切り替え後のデータフローで使用するレジスタを動的に切り替えられ、切り替え前のデータフローでのデータが保持される。
【００１８】
また、上記課題を解決するために、複数の演算器を含む演算器群と、前記演算器群の動作を制御するシーケンサとを有し、前記シーケンサによって前記演算器群の動作状態を再構成する半導体装置において、前記演算器の入力ポートと前記演算器にデータを入力する前段の間に配置され、前記前段から前記演算器に入力される前記データを保持するレジスタを複数有するレジスタ群と、前記シーケンサからの指示に従って、前記演算器と接続する前記レジスタを前記レジスタ群から選択し、選択された前記レジスタと前記演算器の前記入力ポートとを接続する選択器と、を具備することを特徴とする半導体装置、が提供される。
【００１９】
このような半導体装置では、データを入力する入力ポートは、レジスタ群と選択器を介して前段と接続する。選択器は、シーケンサに従って、レジスタ群を構成する複数のレジスタから１つのレジスタを選択して、演算器の入力ポートと前段の演算器などとの間のデータ経路に配置する。前段の演算器などの出力は、選択されたレジスタに保持されてから演算器に入力する。そして、選択器は、シーケンサによる動作状態の切り替えなどの指示があると、指示に応じて、演算器に接続するレジスタを切り替える。これにより、切り替え前の動作状態におけるデータフローと、切り替え後の動作状態のデータフローとを動的に切り替えることができる。
【発明の効果】
【００２０】
本発明では、演算器に入力するデータを保持する複数のレジスタを設けておき、シーケンサの指示に従ってレジスタを選択する。これにより、シーケンサの動作状態に応じて、使用するレジスタを動的に切り替えることができる。すなわち、ある動作状態におけるデータフローで使用するレジスタと、動作状態が切り替えた後に使用するレジスタとをシーケンサの動作状態切り替え指示などに応じて動的に切り替える。これにより、前のデータフローにおけるデータを保持することができ、データフローを時間軸上で直ちに変更することができる。また、レジスタ群および選択器は、演算器ごとに操作可能であり、データフロー上の特定のデータパスのみを動的に変更することもでき、変更前のデータパスにおけるデータを保持することができる。このように、他機能へ影響を与えずに細かな動作制御が可能となる。
【発明を実施するための最良の形態】
【００２１】
本発明の実施の形態を図面を参照して説明する。まず、実施の形態に適用される発明の概念について説明し、その後、実施の形態の具体的な内容を説明する。
図１は、本発明の実施の形態に適用される発明の概念図である。
【００２２】
本発明の実施の形態の再構成可能演算装置は、演算器（以下、ＡＬＵとする）が複数、たとえばマトリックス状に配置される演算器群と、演算器群の動作を制御するシーケンサ２を有する。演算器群を構成する１つのＡＬＵ１に着目するとＡＬＵ１は、２つの入力ポートがそれぞれ選択器４、６を介してレジスタ群３、５に接続する。
【００２３】
ＡＬＵ１は、前段から出力されたデータをレジスタ群３、５と、選択器４、６を介して入力し、シーケンサ２に従って、数値演算や論理演算など、所定の演算を行う。データの入力先の前段は、シーケンサ２によって接続される他のＡＬＵなどである。
【００２４】
シーケンサ２は、演算器群を構成するＡＬＵの動作と、ＡＬＵとＡＬＵとの接続関係など、任意のアプリケーションを実行するために必要な演算器群の構成を記述した設定情報を複数有し、動作させる設定情報を切り替えることによって演算器群の状態を切り替え、所望のアプリケーションを実現している。また、選択された状態に応じて選択器４、６を制御し、ＡＬＵ１と接続させるレジスタ群３、５のレジスタを選択する。
【００２５】
レジスタ群３、５は、それぞれ独立して動作可能な複数のレジスタ、レジスタ群３の場合はレジスタ１（３ａ）、レジスタ２（３ｂ）およびレジスタ３（３ｃ）、レジスタ群５の場合はレジスタ１（５ａ）、レジスタ２（５ｂ）およびレジスタ３（５ｃ）、を有する。これらのレジスタは、選択器４、６によって１つのレジスタが選択され、ＡＬＵ１に接続される。選択されたレジスタは、前段とＡＬＵ１の入力ポートとの間に接続され、前段から出力されたデータ（ＡＬＵ１の入力データ）を保持するとともに、ＡＬＵ１へ出力する。このデータは、次の動作タイミングまで保持される。また、レジスタは、接続されるＡＬＵ１の入力データに応じたデータ長で構成される。すなわち、ＡＬＵ１に入力されるデータが８ビット長であれば８ビット、１６ビット長であれば１６ビット、３２ビット長であれば３２ビットで構成される。なお、レジスタ群を構成するレジスタの数は、任意である。
【００２６】
選択器４、６は、シーケンサ２に従って、接続するレジスタ群３、５から１つのレジスタを選択してＡＬＵ１に接続する。選択器４は、レジスタ群３に接続し、レジスタ１（３ａ）、レジスタ２（３ｂ）もしくはレジスタ３（３ｃ）のいずれかをＡＬＵ１に接続する。選択器６は、レジスタ群５に接続し、レジスタ１（５ａ）、レジスタ２（５ｂ）もしくはレジスタ３（５ｃ）のいずれかをＡＬＵ１に接続する。
【００２７】
このような構成の再構成可能演算装置の動作について説明する。
シーケンサ２が有する設定情報には、ＡＬＵ１の２つの入力ポートに関し、演算器群のどの状態でどのレジスタが選択・接続されるかが登録されている。シーケンサ２は、演算器群の動作の状態制御とともに、選択された状態に応じたレジスタの切り替え制御を行う。以下、演算器群の状態切り替え時におけるレジスタの切り替えについて説明する。
【００２８】
まず、切り替え前の状態として、演算器群が任意のアプリケーションを実行している。このとき、シーケンサ２に従って、選択器４、６が、ＡＬＵ１に接続するレジスタ群３、５から任意のレジスタを選択し、ＡＬＵ１に接続する。たとえば、レジスタ群３のレジスタ１（３ａ）とレジスタ群５のレジスタ１（５ａ）が選択され、ＡＬＵ１の前段の出力データ（ＡＬＵ１の入力データ）がレジスタ１（３ａ）とレジスタ１（５ａ）経由でＡＬＵ１に入力するデータフローが構築される。
【００２９】
シーケンサ２が演算器群の状態切り替えを判断すると、レジスタの切り替え指令も出される。選択器４、６は、シーケンサ２の指示に従って、現在接続中のレジスタの接続を切り離し、指定されたレジスタとＡＬＵ１とを接続する。たとえば、レジスタ群３のレジスタ２（３ｂ）とレジスタ群５のレジスタ２（５ｂ）が選択され、ＡＬＵ１の前段の出力データがレジスタ２（３ｂ）とレジスタ２（５ｂ）経由でＡＬＵ１に入力するという、新しいレジスタを用いたデータフローに切り替わる。このため、前のデータフローの終了を待って、生成されたデータの吐き出しを行う必要がなくなり、アプリケーションの切り替えタイミングでデータフローの切り替えを直ちに行うことができ、性能を低下させることがない。
【００３０】
また、レジスタの切り替えの際には、切り替えられたレジスタ１（３ａ）とレジスタ１（５ａ）には、切り替え前のデータフローで入力された最後のデータが残されており、ラッチ機構を設けることによってこの値を保持しておくことができる。また、特別なデータ経路を設けておくことにより、このデータを外部から取り出せるようにしておくこともできる。これにより、データフローを切り替えて所定の処理を行った後、切り替え前の状態に再帰させることができるようになる。また、デバッグなどの際のデータ取出しを容易に行うことが可能となる。さらに、デバッグからの復帰はレジスタの選択を元に戻せばよいので、他の機能に影響を与えることなく、デバッグを行うことができる。
【００３１】
以下、本発明の実施の形態を図面を参照して詳細に説明する。
図２は、本発明の実施の形態の再構成可能演算装置の全体構成を示すブロック図である。
【００３２】
再構成可能演算装置は、複数の演算器が配列された演算器群１０と、演算器群１０の構成要素である演算器ユニットの動作を制御するシーケンサ２０を有する。
演算器群１０は、コンフィギュレーションメモリ１１、配線＆スイッチ１２、構成要素であるＡＬＵ１３ａ、１３ｂ、・・・、１３ｃ、データ蓄積装置１３ｄ、１３ｅ、・・・、カウンタ１３ｆ、およびウインドウレジスタ部１４などを有する。
【００３３】
コンフィギュレーションメモリ１１は、演算器群を構成する演算器ユニットの実行内容や、演算器ユニット間の配線経路、演算に必要なデータなどの演算器群１０の動作を設定する設定情報が格納されている。１つの設定情報は、演算器群１０の１つの回路構成の「状態」に対応し、コンフィギュレーションメモリ１１には「状態」が複数設定されている。以下、このような「状態」をステートとする。そして、シーケンサ２０から指定されたステートで演算器群１０を動作させる。各ＡＬＵおよび配線＆スイッチ１２は、コンフィギュレーションメモリ１１の設定内容に従って動作する。配線＆スイッチ１２は、コンフィギュレーションメモリ１１の設定内容に従って、演算器ユニット間の接続と接続の切り替えを行う配線部とスイッチ部を備える。ＡＬＵ１３ａ、１３ｂ、・・・、１３ｃは、配線＆スイッチ１２とウインドウレジスタ部１４経由で入力する入力信号に所定の演算を施し、配線＆スイッチ１２経由で出力する。演算器ユニットには、演算処理の他、データ処理用のデータを蓄積するデータ蓄積装置（メモリやレジスタ）１３ｄ、１３ｅ、・・・や、カウンタ１３ｆがある。また、外部との間でデータやアドレスを交換するインタフェースやアドレス生成器などもある。ウインドウレジスタ部１４は、データを保持する複数のレジスタで構成されるレジスタ群と、レジスタ群のうちの１つのレジスタを選択して演算器に接続する接続器を有し、このウインドウレジスタがＡＬＵの入力ポートに対応して配置される。このウインドウレジスタ部１４は、コンフィギュレーションメモリ１１の設定に応じて全体で、または、１もしくは複数のＡＬＵで構成されるグループ単位で、レジスタの切り替えを行う。
【００３４】
なお、図では、ウインドウレジスタ部１４は、配線＆スイッチ１２とＡＬＵ１３ａ、１３ｂ、・・・、１３ｃとの間に配置されているが、ウインドウレジスタ部１４は、配線＆スイッチ１２内、ＡＬＵ１３ａ、１３ｂ、・・・、１３ｃ内、もしくは、これらに分割して配置することもできる。また、コンフィギュレーションメモリ１１を演算器群１０に設けているが、コンフィギュレーションメモリ１１は、シーケンサ２０内、演算器群１０とシーケンサ２０の外側に設置してもよいし、これらに分割して設けることもできる。
【００３５】
シーケンサ２０は、状態制御部２１、状態テーブル２２、現状態アドレスレジスタ２３およびウインドウ面制御部２４を有する。
状態制御部２１は、演算器群１０から入力する切り替え条件信号に応じて、次に遷移する演算器群１０のステートを設定する。なお、切り替え条件信号は、切り替え条件発生の通知と、切り替え条件コードから成る。状態テーブル２２は、コンフィギュレーションメモリ１１のアドレスと同じアドレスが割り付けられており、個々のエントリには次のエントリへの遷移の振る舞いを表すオペコードと、選択される可能性のあるエントリのアドレスが格納される。現状態アドレスレジスタ２３は、現在のステートを示すアドレス（状態テーブル２２とコンフィギュレーションメモリ１１）が格納される。ウインドウ面制御部２４は、状態制御部２１が設定するステートに応じて、ウインドウレジスタ部１４によって選択されるレジスタを制御する。
【００３６】
このような再構成可能演算装置では、演算器群１０は、シーケンサ２０によって指定されたコンフィギュレーションメモリ１１の指定アドレスの設定情報に基づくステートで動作を行っている。そして、演算器群１０において切り替え条件が成立したことが判定されると、切り替え条件コードとともにシーケンサ２０に切り替え条件信号を発生させる。シーケンサ２０では、状態制御部２１が切り替え条件信号によって起動し、切り替え条件コードと状態テーブル２２のエントリとから次に遷移するステートを決定し、そのステートを指示する設定情報が登録されたアドレス（遷移先アドレスとする）を算出し、算出した遷移先アドレスを現状態アドレスレジスタ２３と状態テーブル２２およびコンフィギュレーションメモリ１１に設定する。これにより、コンフィギュレーションメモリ１１の指定アドレスが遷移先アドレスに変更され、演算器群１０のステートが遷移する。このとき、ウインドウ面制御部２４は、状態制御部２１の設定するステートに応じて、レジスタの切り替え指令と選択するレジスタを指示する。なお、レジスタの切り替え指令は、必要に応じて、ウインドウレジスタ部１４全体、予め設定されたＡＬＵのグループごと、もしくは、個別のＡＬＵごとに出される。
【００３７】
ここで、コンフィギュレーションメモリ１１について説明する。コンフィギュレーションメモリ１１には、任意のアプリケーションを実行するための演算器群１０のデータフローが、使用するレジスタとともに記述されている。図３は、本発明の実施の形態のコンフィギュレーションメモリの構成の一例を示した図である。
【００３８】
コンフィギュレーションメモリ１１には、特定のステートにおける演算器群１０の動作を決定するコンフィギュレーションデータが、ステートごとに格納されている。図の例では、ステートごとにコンフィギュレーションデータ１１１、１１２、１１３、１１４、・・・がエントリされている。この各ステートは、アドレスによって管理されている。
【００３９】
各エントリは、動作モード１１１ａ、リコンフィグ回路設計情報１１１ｂ、ステート１（１１１ｃ）、ステート２（１１１ｄ）、ステート３（１１１ｅ）、ステート４（１１１ｆ）の領域を有する。動作モード１１１ａは、このステートを識別する情報である。リコンフィグ回路設計情報１１１ｂは、この動作モードにおける再構成可能（リコンフィグ）回路の各演算器の動作や演算器間の接続関係を示した設計情報が格納される。なお、設計情報生成時に、特定のデータフローでは特定のレジスタを使用することが、自動的かつ一意的に決定される。そして、ステート１（１１１ｃ）、ステート２（１１１ｄ）、ステート３（１１１ｅ）、ステート４（１１１ｆ）には、この回路構成の次の状態としての候補が記述される。実際には、コンフィギュレーションメモリのアドレスが直接、または、その値から演算することによってアドレスが直接生成できるデータが記述されている。それぞれの次のステート候補は、ある切り替え条件と対応付けられており、その切り替え条件が成立すると、成立したステートへ遷移する処理が行われる。ステートの遷移処理では、コンフィギュレーションメモリ１１に従って、ＡＬＵの動作や接続関係とともに、ＡＬＵに接続されるレジスタが設定される。なお、次候補として登録するステート数は任意に選択される。
【００４０】
次に、ウインドウレジスタ部１４の構成について説明する。図４は、本実施の形態のウインドウレジスタ部の構成の一例を示した図である。図２と同じものには同じ番号を付し、説明は省略する。
【００４１】
ウインドウレジスタ部１４は、ＡＬＵ１３ａ、１３ｂの入力ポートに対応して、複数のレジスタ群と、そのレジスタ群のうちの１つを選択してＡＬＵに接続する選択器とが配置されている。図の例では、２つの入力ポートを持つＡＬＵ１３ａ、ＡＬＵ１３ｂの入力ポートごと、すなわち、ＡＬＵ１３ａの第１の入力ポートには、Ｗｉｎｄｏｗ１（１４１ａ）、Ｗｉｎｄｏｗ２（１４２ａ）およびＷｉｎｄｏｗ３（１４３ａ）のレジスタ群と、選択器１４４ａ、ＡＬＵ１３ａの第２の入力ポートには、Ｗｉｎｄｏｗ１（１４１ｂ）、Ｗｉｎｄｏｗ２（１４２ｂ）およびＷｉｎｄｏｗ３（１４３ｂ）のレジスタ群と選択器１４４ｂ、ＡＬＵ１３ｂの第１の入力ポートには、Ｗｉｎｄｏｗ１（１４１ｃ）、Ｗｉｎｄｏｗ２（１４２ｃ）およびＷｉｎｄｏｗ３（１４３ｃ）のレジスタ群と選択器１４４ｃ、ＡＬＵ１３ｂの第２の入力ポートには、Ｗｉｎｄｏｗ１（１４１ｄ）、Ｗｉｎｄｏｗ２（１４２ｄ）およびＷｉｎｄｏｗ３（１４３ｄ）のレジスタ群と、選択器１４４ｄ、が接続している。
【００４２】
それぞれのレジスタ群を構成するレジスタは、同時に選択されるレジスタで同一面を構成している。たとえば、あるアプリケーションにおいて、Ｗｉｎｄｏｗ１（１４１ａ）、Ｗｉｎｄｏｗ１（１４１ｂ）、Ｗｉｎｄｏｗ１（１４１ｃ）、Ｗｉｎｄｏｗ１（１４１ｄ）が選択される場合、これらのウインドウを同一面と呼ぶ。同様に、Ｗｉｎｄｏｗ２（１４２ａ）、Ｗｉｎｄｏｗ２（１４２ｂ）、Ｗｉｎｄｏｗ２（１４２ｃ）およびＷｉｎｄｏｗ２（１４２ｄ）と、Ｗｉｎｄｏｗ３（１４３ａ）、Ｗｉｎｄｏｗ３（１４３ｂ）、Ｗｉｎｄｏｗ３（１４３ｃ）、Ｗｉｎｄｏｗ３（１４３ｄ）と、が同一面を構成する。なお、同一面を構成する各レジスタ群のＷｉｎｄｏｗ面は、任意に選択される。また、同一面のＷｉｎｄｏｗ同士は、直列に接続される。以下、この同一面のＷｉｎｄｏｗを直列に接続する経路をダミーパスと呼ぶ。このようにダミーパスを設けることにより、コンフィギュレーションメモリ１１に記述されたデータフローによって所定のデータを流すと同時に、予め同一のウインドウ面に設けられたダミーパスによってデータフローに選択されていないレジスタのデータを流すことができる。
【００４３】
次に、ウインドウレジスタを構成する各ウインドウ（Ｗｉｎｄｏｗ）の詳細な構成について説明する。図５は、本実施の形態のウインドウの構成の一例を示した図である。図は、ウインドウレジスタを構成する１つのウインドウについて示している。
【００４４】
Ｗｉｎｄｏｗ１（１４１ａ）は、入力の切り替えを行うスイッチ１４１１ａと、レジスタ１４１２ａとから構成される。スイッチ１４１１ａには、近接するＡＬＵに接続するＷｉｎｄｏｗ１５１のレジスタ１５１２、配線＆スイッチ１２および自身のレジスタ１４１２ａの出力に接続する３つの信号線が入力する。なお、接続するレジスタ１５１２と、レジスタ１４１２ａは、同一面に属する。
【００４５】
スイッチ１４１１ａは、Ｗｉｎｄｏｗ１（１４１ａ）とＡＬＵ１３との接続状況に応じて、スイッチ１４１１ａの接続先を選択する。たとえば、選択器によってＷｉｎｄｏｗ１（１４１ａ）がＡＬＵ１３に接続され、Ｗｉｎｄｏｗ１（１４１ａ）がアクティブの状態では、配線＆スイッチ１２と接続される。これにより、配線＆スイッチ１２を介して入力されるデータをＡＬＵ１３へ出力するとともに、このデータをレジスタ１４１２ａに保存することができる。このような状態から、Ｗｉｎｄｏｗ１（１４１ａ）の接続が解除され、非アクティブの状態となると、スイッチ１４１１ａは、自身のレジスタ１４１２ａの出力を接続する。これにより、Ｗｉｎｄｏｗ１（１４１ａ）がアクティブの状態であった最後に入力されたデータがＷｉｎｄｏｗ１（１４１ａ）内で保持される。また、Ｗｉｎｄｏｗ１（１４１ａ）が非アクティブの状態では、直列接続された他のＷｉｎｄｏｗの同一面のレジスタ１５１２の出力を接続することもできる。直列接続された他のＷｉｎｄｏｗの同一面のレジスタ１５１２の接続は、たとえば、シーケンサもしくはデバッグを制御するデバッグブロックからデバッグの指示を受けたときなど、特定の条件が成立した場合に行う。これにより、直列接続された非アクティブのＷｉｎｄｏｗが保持するデータをダミーパス経由で外部に出力できる。
【００４６】
なお、上記では、Ｗｉｎｄｏｗ１（１４１ａ）について説明したが、他のＷｉｎｄｏｗ２、Ｗｉｎｄｏｗ３も同様の構造を有する。
このような構成のウインドウレジスタの動作について説明する。
【００４７】
たとえば、アプリケーション１を実行する際には、レジスタＷｉｎｄｏｗ１を使用し、アプリケーション２を実行する際にはレジスタＷｉｎｄｏｗ２を使用するように、コンフィギュレーションメモリ１１に設定しておく。そして、アプリケーション１とアプリケーション２は、所定の条件が成立するごとに、切り替えられて交互に実行される。
【００４８】
最初に、アプリケーション１が実行され、ウインドウレジスタ部１４の選択器１４４ａ、１４４ｂ、１４４ｃ、１４４ｄは、それぞれレジスタＷｉｎｄｏｗ１（１４１ａ、１４１ｂ、１４１ｃ、１４１ｄ）を選択する。こうして、アプリケーション１では、Ｗｉｎｄｏｗ１がデータフローに組込まれ、処理が実行される。
【００４９】
アプリケーション１を実行中に、切り替え条件が成立すると、シーケンサ２０は、コンフィギュレーションメモリ１１のアドレス指定をアプリケーション２に切り替え、演算器群の構成をアプリケーション２に変更する。このとき、コンフィギュレーションメモリ１１経由もしくはシーケンサ２０からの直接に指示を受け、選択器１４４ａ、１４４ｂ、１４４ｃ、１４４ｄは、レジスタＷｉｎｄｏｗ１（１４１ａ、１４１ｂ、１４１ｃ、１４１ｄ）の接続を解除し、ＡＬＵ１３ａ、１３ｂの接続をレジスタＷｉｎｄｏｗ２（１４２ａ、１４２ｂ、１４２ｃ、１４２ｄ）に切り替える。切り離されたレジスタＷｉｎｄｏｗ１（１４１ａ、１４１ｂ、１４１ｃ、１４１ｄ）は、レジスタが非アクティブとなったので、自身の出力を入力するラッチモードに遷移し、アプリケーション１の最終のデータを保持する。
【００５０】
続いて、アプリケーション２を実行中に切り替え条件が成立し、アプリケーション１に切り替えられる。このとき、アプリケーション１からアプリケーション２への切り替えとは逆に、レジスタＷｉｎｄｏｗ２（１４２ａ、１４２ｂ、１４２ｃ、１４２ｄ）の接続が解除され、ＡＬＵ１３ａ、１３ｂの接続をレジスタＷｉｎｄｏｗ１（１４１ａ、１４１ｂ、１４１ｃ、１４１ｄ）に切り替える。再びアクティブとなったレジスタＷｉｎｄｏｗ１（１４１ａ、１４１ｂ、１４１ｃ、１４１ｄ）には、アプリケーション１の最終のデータが保持されており、必要に応じてこれを使用することができる。また、Ｗｉｎｄｏｗ２（１４２ａ、１４２ｂ、１４２ｃ、１４２ｄ）も、上記と同様に、ラッチモードへ遷移する。このため、再びアプリケーション２に切り替えられた際には、このデータを使用することもできる。
【００５１】
このような切り替え動作をタイミングチャートで説明する。図６は、本実施の形態のウインドウレジスタ切り替えの一例を示したタイミングチャートである。図は、サイクルごとにアプリケーション１（Ｗｉｎｄｏｗ１使用）と、アプリケーション２（Ｗｉｎｄｏｗ２使用）が繰り返される場合の例を示している。
【００５２】
上記の説明のように、シーケンサは、アプリケーションの切り替え（演算器群の状態切り替え）を行う際に、データを一時保存する処理を行うことなく、アプリケーションの切り替えと同時にレジスタの切り替え指示を行うことができる。図では、１つのシーケンスブロックの処理開始時に、レジスタの切り替えが行われてＷｉｎｄｏｗ１（Ｗ１）が選択され、直ちにアプリケーション１の処理が行われる。続く、シーケンスブロックの立ち上がりでも同様に、Ｗｉｎｄｏｗ２（Ｗ２）が選択され、直ちにアプリケーション２の処理が開始される。このように、複数のデータフローを時間軸において畳み込んで高速に実行することが可能となる。
【００５３】
なお、上記の説明では、切り替えるウインドウをＷｉｎｄｏｗ１と、Ｗｉｎｄｏｗ２として説明したが、それ以上のＷｉｎｄｏｗ数であっても同様に、レジスタを切り替えることによりアプリケーションの切り替えを容易に行うことができる。
【００５４】
また、上記の説明では、同一面のＷｉｎｄｏｗをすべて切り替える場合について説明したが、アプリケーションによっては、演算器ごとにいくつかのグループを生成し、グループ単位でウインドウの切り替え制御を行うようにすることもできる。グループは、１つのＡＬＵに構成される場合も含む。
【００５５】
さらに、デバッグなどの際には、コンフィギュレーションメモリ１１に基づくデータフローとは別に、同一面のＷｉｎｄｏｗを直列に接続したダミーパスを用いてデータを転送することができる。
【図面の簡単な説明】
【００５６】
【図１】本発明の実施の形態に適用される発明の概念図である。
【図２】本発明の実施の形態の再構成可能演算装置の全体構成を示すブロック図である。
【図３】本発明の実施の形態のコンフィギュレーションメモリの構成の一例を示した図である。
【図４】本実施の形態のウインドウレジスタ部の構成の一例を示した図である。
【図５】本実施の形態のウインドウの構成の一例を示した図である。
【図６】本実施の形態のウインドウレジスタ切り替えの一例を示したタイミングチャートである。
【図７】従来の再構成可能演算装置の演算器とレジスタの構成図である。
【図８】従来の再構成可能演算装置における構成の切り替えタイミングを示した図である。
【符号の説明】
【００５７】
１  演算器（ＡＬＵ）
２  シーケンサ
３  レジスタ群
３ａ  レジスタ１
３ｂ  レジスタ２
３ｃ  レジスタ３
４  選択器
５  レジスタ群
５ａ  レジスタ１
５ｂ  レジスタ２
５ｃ  レジスタ３
６  選択器
【図１】
2006011924.tif 000003
【図２】
2006011924.tif 000004
【図３】
2006011924.tif 000005
【図４】
2006011924.tif 000006
【図５】
2006011924.tif 000007
【図６】
2006011924.tif 000008
【図７】
2006011924.tif 000009
【図８】
2006011924.tif 000010