(57)【特許請求の範囲】
【請求項１】
入力される構成データに応じて回路構成を再構成し、データ処理機能を変更することが可能なリコンフィギュラブルアレイ部と、
外部から入力された命令をフェッチし、前記命令に応じてデータ処理を実行するプロセッサ部と、
前記構成データを複数格納する構成データメモリ部と、
前記データ処理と同時に、前記構成データメモリ部に格納された前記構成データのメモリアドレスが前記命令に含まれるか否かを識別し、前記命令に前記メモリアドレスが含まれる場合、前記メモリアドレスに基づいて、前記構成データを読み出す出力要求信号を前記構成データメモリ部に出力するデコード部と、
前記データメモリ部から読み出された複数の前記構成データが格納され、前記データ処理によって前記プロセッサ部から出力される第１の信号に基づいて、格納された前記構成データを前記リコンフィギュラブルアレイ部に出力する構成データバッファ部と、
を有し、
前記構成データバッファ部は、前記複数の前記構成データが格納されるバッファと、前記複数の前記構成データが格納された位置を示すカウンタ値を保持するレジスタと、前記第１の信号が示すカウンタ値と前記レジスタに保持されたカウンタ値とを比較する比較器とを備え、前記第１の信号が示すカウンタ値と前記レジスタに保持されたカウンタ値が一致する場合、前記第１の信号が示すカウンタ値に対応する構成データが既に前記バッファにあることを通知し、前記通知後、格納された前記構成データを前記リコンフィギュラブルアレイ部に出力することを特徴とするデータ処理システム。
【請求項２】
前記通知は、前記プロセッサ部に対して前記第１の信号が示すカウンタ値とは異なるカウンタ値を示す第２の信号の出力を要求することを特徴とする請求項１記載のデータ処理システム。
【請求項３】
前記デコード部は、前記構成データが格納されている前記構成データメモリ部の先頭のメモリアドレスと前記構成データの数に基づいて、前記出力要求信号を生成するたびに前記メモリアドレスを所定の値だけ増加させるアドレス生成部を備え、前記メモリアドレスを基に前記出力要求信号を前記構成データメモリ部に出力することを特徴とする請求項１記載のデータ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサと動的に回路構成を再構成可能な回路とを有するデータ処理システムに関する。
【背景技術】
【０００２】
汎用プロセッサは、高いプログラマビリティを有する。その反面、汎用プロセッサにおける命令セットは汎用的なものであるので、プロセッサ単体の処理性能を向上させるために、動作周波数を上げたり高度な投機的命令実行を行う機構を設けたりする手法が多く取られてきた。しかし、汎用プロセッサは、テクノロジの微細化が進むに連れて消費電力の面で問題が顕在化しており、例えば処理性能の向上を図るために動作周波数を上げるにも限界がある。また、特定のアプリケーション分野に適した命令を実装して、汎用性を保ちつつ特定分野に特化する形で処理性能の向上を図ったＤＳＰ（Digital Signal Processor）も市場に多数存在する。近年においてはアプリケーションの要求性能の向上が著しく、ＤＳＰにおいても処理性能の不足が顕在化しつつあり、汎用プロセッサと同様の問題が避けられない状況にある。
【０００３】
前述の課題を解決するために、ユーザーが設計段階で決めた独自の命令を追加してプロセッサやＤＳＰをカスタマイズするコンフィギュラブルプロセッサの分野が発展してきた。これにより、特定のアプリケーションにおける処理性能を効率的に向上させることが可能となった。しかし、独自の命令を追加してプロセッサ等をカスタマイズする手法は、高度にアプリケーションに特化させるため、追加する命令がしばしば特定のプログラムに限定された仕様になり、プログラマビリティが犠牲になっていた。加えて、半導体装置製造後のカスタマイズが不可能であるので、半導体装置製造後におけるアプリケーションの仕様変更や機能追加に対応する場合に要求性能を満たせるかどうかの見込みが難しく、この点が大きなリスク要因となっている。
【０００４】
このような半導体装置製造後におけるカスタマイズを可能にする回路技術に、動的に回路構成を再構成可能な回路（Dynamically Reconfigurable Circuit：以下、ＤＲＣとも記す）がある。ＤＲＣを利用することで、前述のようなリスク要因を低減させることが可能である。
【０００５】
図１０は、ＤＲＣを利用した従来のデータ処理システムの構成例を示すブロック図である（例えば特許文献１参照）。図１０において、１０１は、ＤＲＣ１０２で実行させる機能を制御するための命令が追加された命令セットに基づいて動作するプロセッサであり、１０２は、外部からの命令に応じて回路構成を再構成可能なＤＲＣである。ＤＲＣ１０２は、外部からの命令に応じて回路構成を再構成してデータ処理機能を変更することが可能なリコンフィギュラブルアレイ１０４、及びリコンフィギュラブルアレイ１０４を制御するスレーブコントローラ１０３を有する。スレーブコントローラ１０３は、リコンフィギュラブルアレイ１０４へのデータの供給やリコンフィギュラブルアレイ１０４の回路構成の変更等を実行する。１０５は、外部メモリであり、１０６は、プロセッサ１０１に供給される命令を一時的に記憶する命令キャッシュである。１０７は、プロセッサ１０１、ＤＲＣ１０２、及び外部メモリ１０５に接続され、外部メモリ１０５からプロセッサ１０１又はＤＲＣ１０２に供給されるデータやプロセッサ１０１又はＤＲＣ１０２による演算の結果を一時的に記憶するデータキャッシュである。
【０００６】
図１０に示したデータ処理システムにおけるＤＲＣ実行シーケンスの例を図１１に示す。プロセッサ１０１は、ＤＲＣ１０２で実行させる機能を制御するためのＤＲＣ命令が供給され、それを実行する（Ｓ１０１）と、ＤＲＣ１０２で処理させる内容を制御信号によりＤＲＣ１０２内のスレーブコントローラ１０３に指示する（Ｓ１０２）。スレーブコントローラ１０３は、その内容に沿った構成データを外部メモリ１０５から読み込み（Ｓ１０３）、読み込んだ構成データをリコンフィギュラブルアレイ１０４に供給することでリコンフィギュラブルアレイ１０４の回路構成を変更する（Ｓ１０４）。リコンフィギュラブルアレイ１０４は、変更された回路構成での処理（ＤＲＣ演算）を実行し（Ｓ１０５）、処理が終了するとスレーブコントローラ１０３に終了したことを通知する（Ｓ１０６）。スレーブコントローラ１０３は、リコンフィギュラブルアレイ１０４からの終了通知を受けると、プロセッサに対して割り込みでこれを通知する（Ｓ１０７）。図１１（Ｂ）には、プロセッサ１０１、スレーブコントローラ１０３、及びリコンフィギュラブルアレイ１０４における処理実行に係る各段階のタイミングの関係を示している。図１１（Ｂ）において、“Ｆ”はフェッチ（fetch）、“Ｄ”はデコード（decode）、“Ｅ”は実行（execute）、“Ｍ”はメモリアクセス（memory access）、“Ｗ”はライトバック（write back）を示す。
【０００７】
また、ＤＲＣを利用したデータ処理システムにおいて、ＤＲＣの構成データをプロセッサの命令を利用して動的に生成する手法が提案されている（例えば特許文献２）。この手法では、プロセッサが命令を実行すると同時に、ＤＲＣの構成データ及びこれを動作させるドライバ・ソフトウェアを自動生成して、元のプログラムを途中から置き換えるようにしている。また、ＤＲＣの構成データを命令の中に埋め込み、ＤＲＣの構成データを命令と同じタイミングで取り込めるようにする手法が提案されている（例えば特許文献３）。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平１１−３０７７２５号公報
【特許文献２】国際公開第２００４／０２５４６８号
【特許文献３】国際公開第０１／０１６７１０号
【発明の概要】
【発明が解決しようとする課題】
【０００９】
動的に回路構成を再構成可能なＤＲＣを用いるには、ＤＲＣの構成データが別途必要である。通常、ＤＲＣの構成データは、図１０及び図１１に示したように外部メモリからＤＲＣに転送されるが、図１１（Ｂ）に示したように、その指示を行うためのオーバーヘッドが生じることになるため演算のレイテンシは延びる。また、特許文献２に記載のようなプロセッサの命令からＤＲＣの構成データを生成する手法においても、構成データの生成に先立って通常の命令を実行する必要があることから同様である。これらのオーバーヘッドは、高速に処理する必要がある追加命令を実装する際の障害となる。
【００１０】
このオーバーヘッドを生じさせないためには、特許文献３に記載のような手法が利用できる。しかし、ＤＲＣの構成データを命令の中に埋め込んでいるために、同じ構成データが命令コードの複数の箇所に存在してしまう場合には、無駄に命令コードのサイズを消費してしまうことになる。また、本来の命令とは異なるものをプロセッサがフェッチするため、命令キャッシュを有するシステムにおいては、命令キャッシュが汚されてしまい、キャッシュ効率の著しい低下を招くことが容易に予見される。
【課題を解決するための手段】
【００１１】
本発明の一観点によれば、入力される構成データに応じて回路構成を再構成しデータ処理機能を変更することが可能なリコンフィギュラブルアレイ部と、外部から入力された命令をフェッチし命令に応じてデータ処理を実行するプロセッサ部と、構成データを複数格納する構成データメモリ部と、データ処理と同時に、構成データメモリ部に格納された構成データのメモリアドレスが命令に含まれるか否かを識別し、含まれる場合、構成データを読み出す出力要求信号を構成データメモリ部に出力するデコード部と、データ処理によってプロセッサ部から出力される第１の信号に基づいて、格納された構成データをリコンフィギュラブルアレイ部に出力する構成データバッファ部とを有するデータ処理システムが提供される。構成データバッファ部は、複数の構成データが格納されるバッファと、構成データが格納された位置を示すカウンタ値を保持するレジスタと、第１の信号が示すカウンタ値とレジスタに保持されたカウンタ値とを比較する比較器とを備える。構成データバッファ部は、第１の信号が示すカウンタ値とレジスタに保持されたカウンタ値が一致する場合、第１の信号が示すカウンタ値に対応する構成データが既にバッファにあることを通知し、通知後、格納された構成データをリコンフィギュラブルアレイ部に出力する。
【発明の効果】
【００１２】
開示のデータ処理システムは、リコンフィギュラブルアレイ部に対して構成データを高速に供給することができ、処理を高速に行うことができるという効果を奏する。
【図面の簡単な説明】
【００１３】
【図１】第１の実施形態におけるデータ処理システムの構成例を示す図である。
【図２】本実施形態におけるリコンフィギュラブルアレイの構成例を示す図である。
【図３】本実施形態における構成データ命令、構成データメモリ、及び構成データデコーダの構成例を示す図である。
【図４】本実施形態における構成データデコーダの他の構成例を示す図である。
【図５】本実施形態における構成データバッファの構成例を示す図である。
【図６】第１の実施形態におけるＤＲＣ実行シーケンスの一例を示す図である。
【図７】第１の実施形態におけるＤＲＣ実行シーケンスの他の例を示す図である。
【図８】第２の実施形態におけるデータ処理システムの構成例を示す図である。
【図９】第２の実施形態におけるＤＲＣ実行シーケンスの一例を示す図である。
【図１０】従来のデータ処理システムの構成例を示す図である。
【図１１】図１０に示したデータ処理システムにおけるＤＲＣ実行シーケンスの例を示す図である。
【発明を実施するための形態】
【００１４】
以下、本発明の実施形態を図面に基づいて説明する。
本発明の実施形態におけるデータ処理システムは、ユーザーが独自の命令を追加するための手段として、半導体装置製造後においてもカスタマイズできる動的に回路構成を再構成可能な回路（Dynamically Reconfigurable Circuit：ＤＲＣ）を利用する。本実施形態では、外部メモリとは異なる、ＤＲＣの構成データを格納するメモリ（構成データメモリ）を内部に用意し、構成データメモリに格納された構成データを読み出すためのアドレス情報（例えばメモリアドレス）をフィールドとして命令に埋め込む。
【００１５】
本実施形態におけるデータ処理システムでは、その命令（構成データ命令）がプロセッサ又はＤＳＰでフェッチされると、それとともに構成データ命令内のアドレス情報を用いて構成データメモリから構成データが読み出されてＤＲＣに供給される。このようにして、命令の記憶に要するメモリ容量の増大を抑制するとともに、ＤＲＣの構成データの供給に係るオーバーヘッドを生じさせないようにする。
【００１６】
（第１の実施形態）
本発明の第１の実施形態について説明する。
図１は、第１の実施形態におけるデータ処理システムの構成例を示すブロック図である。図１において、１１は、構成データメモリ１８からＤＲＣ１２の構成データを読み出すためのアドレス情報（例えばメモリアドレス）をフィールドとして埋め込んだ命令（構成データ命令）が追加された命令セットに基づいて動作するプロセッサである。なお、図１においては、プロセッサ１１を示しているが、これに限定されるものではなく、例えばＤＳＰ（Digital Signal Processor）であっても良い。
【００１７】
１２は、供給される構成データに応じて動的に回路構成を再構成可能なＤＲＣである。ＤＲＣ１２は、リコンフィギュラブルアレイ１３及び構成データバッファ１４を有する。構成データバッファ１４は、構成データメモリ１８から読み出されたＤＲＣ１２の構成データを格納するバッファである。
【００１８】
リコンフィギュラブルアレイ１３は、複数のレジスタと任意の機能を持つ多機能ブロックとを有し、構成データバッファ１４を介して供給される構成データに応じて回路構成を再構成しデータ処理機能を変更することが可能となっている。リコンフィギュラブルアレイ１３は、例えば、構成データに応じて、多機能ブロックの機能、及び多機能ブロックとレジスタとの間の接続が変更されることでアレイ１３内部の回路構成が変更され、構成データに応じた所望のデータ処理機能を提供する。
【００１９】
図２に、本実施形態におけるリコンフィギュラブルアレイ１３の構成例を示す。図２において、３１はバレルシフタ（多機能ブロック）であり、３３は演算器（多機能ブロック）であり、３２及び３４はレジスタであり、３５は処理部であり、３８はアドレス生成シーケンサである。
【００２０】
バレルシフタ（多機能ブロック）３１は、構成データＣＤＴに応じて回路構成が変更され、リコンフィギュラブルアレイ１３に入力される外部からの入力データをレジスタ３２に対して出力する。レジスタ３２は、バレルシフタ（多機能ブロック）３１から出力されたデータを保持する。
【００２１】
演算器（多機能ブロック）３３は、構成データＣＤＴに応じて回路構成が変更される。例えば、演算器（多機能ブロック）３３は、構成データＣＤＴに応じて、加算器、乗算器、シフター（シフト回路）等の機能を実現する。演算器（多機能ブロック）３３は、レジスタ３２に保持されたデータを用い、変更された回路構成でのデータ処理を実行して処理結果（データ）をレジスタ３４に対して出力する。
【００２２】
処理部３５のそれぞれは、セレクタ３６及び演算器（多機能ブロック）３７を有する。処理部３５内のセレクタ３６及び演算器（多機能ブロック）３７は、構成データＣＤＴに応じて回路構成が変更可能である。例えば、各演算器（多機能ブロック）３７は、構成データＣＤＴに応じて、加算器、乗算器、シフター（シフト回路）等の機能を実現する。
【００２３】
各演算器（多機能ブロック）３７は、レジスタ３４に保持されているデータが入力可能なように、それぞれ対応するセレクタ３６を介して処理部３５の前段に設けられたレジスタ３４と接続される。各演算器（多機能ブロック）３７は、入力されたデータを用い、変更された回路構成でのデータ処理を実行して処理結果（データ）を処理部３５の後段に設けられたレジスタ３４に対して出力する。
【００２４】
レジスタ３４の各々は、対応する演算器（多機能ブロック）３３、３７から出力されたデータを保持する。アドレス生成シーケンサ３８は、構成データＣＤＴに基づいて、データ処理に用いる入力データを外部メモリ１５等から読み出すためのメモリアドレスや、処理結果である出力データを外部メモリ１５等に書き込むためのメモリアドレスを生成する。
【００２５】
ここで、構成データＣＤＴには、データのメモリ転送に係る情報、リコンフィギュラブルアレイ１３内の多機能ブロックの機能制御に係る情報、及び多機能ブロック間や多機能ブロックとレジスタとの間の接続に係る情報等が指定可能である。構成データＣＤＴとして指定された各種情報に応じて、多機能ブロックの機能や、多機能ブロック間及び多機能ブロックとレジスタとの間の接続が制御され、リコンフィギュラブルアレイ１３は所望のデータ処理を行う。
【００２６】
データのメモリ転送に係る情報は、例えばデータをリコンフィギュラブルアレイ１３に読み込んで処理結果を外部メモリ１５に書き込む手順やメモリアドレスを含む。また、多機能ブロック間や多機能ブロックとレジスタとの間の接続に係る情報は、バレルシフタ３１に係る回路情報や処理部３５内のセレクタ３６の制御に係る情報を含む。
【００２７】
なお、図２においては、レジスタ３２を６個並列に配置し、各処理段毎に演算器（多機能ブロック）３３、３７及びレジスタ３４を３個並列に配置したリコンフィギュラブルアレイ１３を一例として示しているが、これに限定されるものではない。各処理段毎に配置する演算器（多機能ブロック）３３、３７及びレジスタ３４の数は任意であり、これらに合わせてレジスタ３２やセレクタ３６等を設ければ良い。また、図２においては、３個の処理部３５をシリアルに接続した例を示しているが、処理部３５の数も任意である。また、最終段の処理部３５の出力を受けるレジスタ３４に限らず、他の処理部３５（最終段ではない途中の処理部３５）の出力を受けるレジスタ３４から出力データを外部に出力するようにしても良い。
【００２８】
図１に戻り、１５は、プロセッサ１１に供給する命令（プログラム）やＤＲＣ１２の構成データ等が記憶されている外部メモリである。１６は、プロセッサ１１に供給される命令を一時的に記憶する命令キャッシュである。１７は、プロセッサ１１、ＤＲＣ１２、及び外部メモリ１５に接続され、外部メモリ１５からプロセッサ１１又はＤＲＣ１２に供給されるデータやプロセッサ１１又はＤＲＣ１２による演算の結果を一時的に記憶するデータキャッシュである。
【００２９】
１８は、ＤＲＣ１２の構成データを格納する構成データメモリである。データ処理システムの起動時（ブートシーケンス等）において、外部メモリ１５に記憶されているＤＲＣ１２の構成データが、構成データメモリ１８にコピーされ記憶される。なお、外部メモリ１５に記憶されているＤＲＣ１２の構成データの構成データメモリ１８へのコピーは、データ処理システムにおけるデータ処理動作開始前に行われていれば良い。
【００３０】
１９は、プロセッサ１１による命令フェッチと同時に命令をデコードする構成データデコーダである。構成データデコーダ１９は、命令がＤＲＣ１２の構成データを読み出すためのメモリアドレスが埋め込まれた構成データ命令である場合には、構成データメモリ１８に対するリード要求（出力要求）を行い、構成データを構成データメモリ１８から出力させる。
【００３１】
図３は、本実施形態における構成データ命令、構成データメモリ１８、及び構成データデコーダ１９の構成例を示す図である。この図３において、図１に示した構成要素と同一の機能を有する構成要素には同一の符号を付し、重複する説明は省略する。
【００３２】
前述のように構成データメモリ１８には、外部メモリ１５に記憶されているＤＲＣ１２の構成データがコピーされ格納されている。また、構成データメモリ１８から構成データＣＦＤを読み出すための構成データ命令ＣＤＩは、構成データ命令であることを示すオペコードＯＰＣを有し、構成データが格納されたメモリアドレスＭＡＤをフィールドに持つ。
【００３３】
命令キャッシュ１６は、プロセッサ１１からの命令フェッチアドレスＩＦＡを受信すると、その命令フェッチアドレスＩＦＡに対応する領域に記憶されている命令をプロセッサ１１に供給する。プロセッサ１１に供給される命令ＲＤＩは、構成データメモリ１８及び構成データデコーダ１９にも供給される。構成データメモリ１８には、命令ＲＤＩにおいて、命令が構成データ命令ＣＤＩである場合にメモリアドレスＭＡＤが格納されているフィールドに相当する部分が少なくとも供給される。また、構成データデコーダ１９には、命令ＲＤＩにおけるオペコード部分が少なくとも供給される。すなわち、命令キャッシュ１６から構成データメモリ１８に供給されるものはメモリアドレスＭＡＤが格納され得るフィールドを含んでいれば良く、命令キャッシュ１６から構成データデコーダ１９に供給されるものはオペコードＯＰＣを含んでいれば良い。
【００３４】
構成データデコーダ１９は、プロセッサ１１による命令フェッチと同時に、フェッチされた命令のオペコードＯＰＣをデコードして、命令が構成データ命令ＣＤＩであるか否かを識別する。構成データデコーダ１９は、命令が構成データ命令ＣＤＩであると認識した場合には、構成データメモリ１８にリードイネーブル信号ＲＥＮを出力しリード要求（出力要求）を行う。また、構成データメモリ１８のアドレス信号として、命令フェッチと同時に、構成データ命令ＣＤＩにてメモリアドレスＭＡＤを示すフィールドが接続される。
【００３５】
これにより、構成データ命令ＣＤＩをフェッチした際には、構成データ命令ＣＤＩのメモリアドレスＭＡＤによってアドレス指定された構成データが構成データメモリ１８から読み出されてリードデータＲＤＴとして出力される。リードデータＲＤＴとして出力されたＤＲＣ１２の構成データは、ＤＲＣ１２の構成データバッファ１４に供給され格納される。このようにすることで、プロセッサ１１による命令フェッチと同じタイミングで構成データを構成データメモリ１８から読み出してＤＲＣ１２に構成データを高速に供給することができる。また、命令には構成データが格納されているメモリアドレスを指定するだけで良いので、命令において同じ構成データが複数の箇所に存在することがなく、命令（プログラム）の記憶に要するメモリ容量の増大を抑制することができる。
【００３６】
なお、構成データメモリ１８においてＤＲＣ１２の構成データＣＦＤが複数のメモリアドレスに跨って格納されている場合には、それぞれのメモリアドレスを指定する複数の構成データ命令ＣＤＩが使用されることになる。しかし、前述した構成は一例であり、これに限定されるものではない。例えば、複数の構成データ命令ＣＤＩを使用する代わりに、図４に示すように構成データが格納されている領域の先頭アドレスと消費するメモリ量（構成データ数もしくはデータ量）を示す構成データ命令を用意する。そして、構成データデコーダ１９が、構成データが格納されている領域の先頭アドレス及び消費するメモリ量（構成データ数もしくはデータ量）に基づいてアドレスを生成するようにしても良い。
【００３７】
図４は、本実施形態における構成データデコーダ１９の他の構成例を示す図である。図４に示すように、構成データデコーダ１９は、アドレス生成部４１を有する。構成データ命令の１つは、構成データ命令であることを示し、かつＤＲＣ１２の構成データが格納されている領域の先頭のメモリアドレスＭＡＤをフィールドに持つことを示すオペコードＯＰＣＡを有する。また、構成データ命令の他の１つは、構成データ命令であることを示し、かつＤＲＣ１２の構成データが消費するメモリ量（構成データ数もしくはデータ量）ＤＮをフィールドに持つことを示すオペコードＯＰＣＢを有する。
【００３８】
構成データデコーダ１９は、プロセッサ１１による命令フェッチと同時に、フェッチされた命令のオペコードをデコードして、命令が構成データ命令であるか否かを識別する。構成データデコーダ１９は、命令がオペコードＯＰＣＡを有する構成データ命令であると認識した場合には、そのフィールドに持つメモリアドレスＭＡＤをアドレス生成部４１に供給する。続いて、構成データデコーダ１９は、命令がオペコードＯＰＣＢを有する構成データ命令であると認識した場合には、そのフィールドに持つ構成データ数ＤＮをアドレス生成部４１に供給する。
【００３９】
アドレス生成部４１は、ＤＲＣ１２の構成データが格納されている領域の先頭のメモリアドレスＭＡＤの情報と構成データ数ＤＮの情報とに基づいて、構成データメモリ１８に供給するメモリアドレスＡＤを毎サイクル生成する。すなわち、アドレス生成部４１は、メモリアドレスＭＡＤを初期値とし、サイクル毎に所定の値だけ順次増加させるようにして構成データ数ＤＮ個のメモリアドレスＡＤを生成して出力する。そして、構成データデコーダ１９は、アドレス生成部４１により順次生成されるメモリアドレスＡＤ及びリードイネーブル信号ＥＮを構成データメモリ１８に出力しリード要求を行う。
【００４０】
これにより、構成データメモリ１８において複数のメモリアドレスに跨って格納されているＤＲＣ１２の構成データが、２つの構成データ命令によって構成データメモリ１８から読み出されて、ＤＲＣ１２の構成データバッファ１４に格納される。したがって、複数のメモリアドレスに跨って格納されている構成データを、各メモリアドレスをそれぞれ指定する構成データ命令を用いずに、２つの構成データ命令で読み出すことができ、命令（プログラム）の記憶に要するメモリ容量の増大をさらに抑制できる。
【００４１】
図５は、本実施形態における構成データバッファ１４の構成例を示す図である。
図５において、５１はレジスタ、５２は比較器、５３は加算器、５４は論理積演算回路（ＡＮＤ回路）、５５はバッファである。
【００４２】
レジスタ５１は、プロセッサ１１から供給されるプログラムカウンタ（ＰＣ）値ＰＰＣを格納するためのレジスタである。レジスタ５１は、プロセッサ１１からのイネーブル信号ＰＣＥＮが出力されているときにプロセッサ１１から供給されるプログラムカウンタ値ＰＰＣを取り込んで保持する。イネーブル信号ＰＣＥＮは、供給されるプログラムカウンタ値ＰＰＣをレジスタ５１に格納するタイミングを通知する信号である。イネーブル信号ＰＣＥＮは、構成データが複数の構成データ命令により指定される、すなわち構成データ命令が複数あって、かつ複数の構成データ命令における先頭の構成データ命令のプログラムカウンタ値の供給に伴って出力される。プロセッサ１１によるイネーブル信号ＰＣＥＮの生成は、構成データ命令列の先頭であることを示す構成データ命令を設けることで可能である。
【００４３】
比較器５２は、レジスタ５１に保持されているプログラムカウンタ値と、プロセッサ１１から供給されるプログラムカウンタ値ＰＰＣとを比較する。比較の結果、２つのプログラムカウンタ値が一致する場合には、比較器５２は、アクノリッジ信号ＡＣＫを外部に出力するとともに、マスク信号ＭＳＫをＡＮＤ回路５４に出力する（“１”から“０”に変化させる）。
【００４４】
加算器５３は、比較器５２での比較の結果、２つのプログラムカウンタ値が一致した場合に、レジスタ５１に保持されているプログラムカウンタ値にオフセット値を加算し、次のプログラムカウンタ値ＮＰＣとして出力する。ここで、オフセット値は、複数の構成データ命令における先頭の構成データ命令のプログラムカウンタ値と最終の構成データ命令のプログラムカウンタ値との差、すなわち複数の構成データ命令の命令数である。
【００４５】
ＡＮＤ回路５４は、プロセッサ１１から供給されるリクエスト信号ＲＥＱと比較器５２から出力されたマスク信号ＭＳＫとが入力され、その演算結果をイネーブル信号としてバッファ５５に出力する。ＡＮＤ回路５４から出力されるイネーブル信号は、構成データメモリ１８から出力されたＤＲＣ１２の構成データをバッファ５５に取り込むか否かを示す信号である。また、リクエスト信号ＲＥＱは、構成データメモリ１８からＤＲＣ１２の構成データが供給されることを示す信号である。バッファ５５は、ＡＮＤ回路５４から出力されるイネーブル信号に応じて、構成データメモリ１８から供給されるＤＲＣ１２の構成データを格納し保持する。
【００４６】
構成データ命令がフェッチされた場合、構成データバッファ１４には、ＤＲＣ１２の構成データが構成データメモリ１８から供給されるとともに、構成データが供給されることを示すリクエスト信号ＲＥＱがプロセッサ１１から供給される。プロセッサ１１は、構成データ命令に応じてリクエスト信号ＲＥＱを出力するとともに、その構成データ命令のプログラムカウンタ値を出力することが可能になっている。例えば、構成データが複数の構成データ命令により指定される、すなわち構成データ命令が複数あった場合に、ＤＲＣ１２の構成データをバッファ５５に保持するとともに、先頭の構成データ命令のプログラムカウンタ値をレジスタ５１に保持しておく。次に、同じ構成データが供給された場合には、構成データバッファ１４は、プロセッサ１１に対して構成データが既にあることと構成データ命令の次の命令のプログラムカウンタ値を求めてプロセッサ１１に信号ＡＣＫ、ＮＰＣにより通知する。同じ構成データが供給されたか否かは、レジスタ５１に保持されているプログラムカウンタ値とプロセッサ１１から供給されたプログラムカウンタ値ＰＰＣとを比較器５２にて比較することにより行い、一致した場合に同じ構成データが供給されているとする。これにより、同じ構成データが供給される場合に、２回目以降においては構成データメモリ１８からの構成データを構成データバッファ１４に格納する動作を行なわなくても良くなり、２回目以降の処理を高速に行うことができる。
【００４７】
次に、第１の実施形態におけるデータ処理システムの動作について説明する。なお、プロセッサ１１に供給される命令が構成データ命令でなく通常の命令である場合には、プロセッサ１１が当該命令に応じた処理を実行する。以下では、プロセッサ１１に供給される命令が構成データ命令である場合について説明する。
【００４８】
図６は、第１の実施形態におけるデータ処理システムのＤＲＣ実行シーケンスの一例を示す図である。
プロセッサ１１は、構成データを読み出すためのメモリアドレスをフィールドに持つ構成データ命令をフェッチする（Ｓ１１）と、構成データが供給されることを示すリクエスト信号ＲＥＱを構成データバッファ１４に出力する（Ｓ１２）。また、構成データ命令がフェッチされるのと同じタイミングで、構成データデコーダ１９は、命令のオペコードをデコードして構成データ命令であると認識し、構成データメモリ１８に対してリード要求を行う。これにより、構成データ命令が持つメモリアドレスによりアドレス指定された構成データが構成データメモリ１８から読み出されて構成データバッファ１４に供給される。
【００４９】
次に、ＤＲＣ１２の構成データバッファ１４は、プロセッサ１１からのリクエスト信号ＲＥＱを受信すると、構成データメモリ１８から供給される構成データを構成データバッファ１４に格納する（Ｓ１３）。そして、構成データの格納が完了すると、構成データバッファ１４は、構成データの格納が完了したことを示すアクノリッジ信号ＡＣＫをプロセッサ１１に出力する（Ｓ１４）。
【００５０】
続いて、構成データバッファ１４は、格納した構成データをリコンフィギュラブルアレイ１３に供給する（Ｓ１５）。これにより、リコンフィギュラブルアレイ１３の回路構成が変更される。リコンフィギュラブルアレイ１３は、変更された回路構成での処理（ＤＲＣ演算）を実行する（Ｓ１６）。
【００５１】
図７は、第１の実施形態におけるデータ処理システムのＤＲＣ実行シーケンスの他の例を示す図である。図７には、構成データに応じたデータ処理内容を、１サイクル以上をかけて実行する場合の例を示している。図７に示した実行シーケンスにおけるＳ２１〜Ｓ２６の動作は、図６に示した実行シーケンスにおけるＳ１１〜Ｓ１６の動作と同様である。
【００５２】
リコンフィギュラブルアレイ１３は、変更された回路構成での処理（ＤＲＣ演算）を実行し（Ｓ１６）、処理が終了すると構成データバッファ１４に終了したことを通知する（Ｓ２７）。構成データバッファ１４は、リコンフィギュラブルアレイ１３からの終了通知を受けると、プロセッサ１１に対して割り込みでこれを通知する（Ｓ２８）。
【００５３】
ここで、図６（Ｂ）及び図７（Ｂ）には、プロセッサ１１、構成データバッファ１４、及びリコンフィギュラブルアレイ１３における処理実行に係る各段階のタイミングの関係を示している。図６（Ｂ）及び図７（Ｂ）において、“Ｆ”はフェッチ（fetch）、“Ｄ”はデコード（decode）、“Ｅ”は実行（execute）、“Ｍ”はメモリアクセス（memory access）、“Ｗ”はライトバック（write back）を示す。
【００５４】
以上説明した第１の実施形態によれば、プロセッサ１１により命令がフェッチされたとき、構成データデコーダは、その命令が構成データメモリ１８に格納された構成データを読み出すためのアドレス情報をフィールドに持つ構成データ命令であるか識別する。その結果、構成データ命令である場合には、構成データ命令が有するアドレス情報に基づいて、構成データメモリから構成データが読み出されてＤＲＣ１２の構成データバッファ１４に供給され格納される。これにより、プロセッサ１１により構成データ命令がフェッチされるのと同じタイミングで、構成データメモリ１８に格納されている構成データがＤＲＣ１２に供給され、構成データを高速に供給することができる。
また、構成データそのものではなく、構成データを読み出すためのアドレス情報を公正データ命令に持てば良い。すなわち、ソフトウェア内にＤＲＣ１２で処理する同じ内容が複数あっても、構成データが格納されているアドレスを指定するだけで、同じ構成データを複数持たなくても良い。したがって、命令（プログラム）の記憶に要するメモリ容量の増大を抑制することができる。また、命令には構成データが含まれないので、命令キャッシュ１６に構成データを格納しなくて良いため、効率的に命令キャッシュ１６を使用することが可能となる。
【００５５】
（第２の実施形態）
次に、本発明の第２の実施形態について説明する。
前述した第１の実施形態は、ＤＲＣ１２でのデータ処理に用いる入力データ及び処理結果としての出力データを、ＤＲＣ１２と外部メモリ１５との間でデータキャッシュ１７を介して授受する。以下に説明する第２の実施形態は、ＤＲＣ１２でのデータ処理に用いる入力データ及び処理結果としての出力データを、プロセッサ１１とＤＲＣ１２との間で直接に授受するようにしたものである。
【００５６】
図８は、第２の実施形態におけるデータ処理システムの構成例を示すブロック図である。この図８において、図１に示した構成要素と同一の機能を有する構成要素には同一の符号を付し、重複する説明は省略する。
【００５７】
図８において、プロセッサ１１はレジスタ６１を有する。レジスタ６１は、リコンフィギュラブルアレイ１３に対してデータ授受可能なように接続され、リコンフィギュラブルアレイ１３に供給するデータ処理用のデータやリコンフィギュラブルアレイ１３によるデータ処理の結果を格納する。リコンフィギュラブルアレイ１３は、プロセッサ１１からレジスタ６１に格納されているデータの供給を受けてデータ処理を行い、処理結果をレジスタ６１に対して供給する。
【００５８】
したがって、第２の実施形態におけるデータ処理システムでは、データ処理に係る外部メモリ１５からのデータの読み込み及び外部メモリ１５へのデータの書き込みはプロセッサ１１によって実行される。また、第２の実施形態におけるデータ処理システムでは、リコンフィギュラブルアレイ１３は、外部メモリ１５に対するデータの読み込み及び書き込みは行わないので、図２に示した構成におけるアドレス生成シーケンサ３８は不要である。
【００５９】
次に、第２の実施形態におけるデータ処理システムの動作について説明する。なお、プロセッサ１１に供給される命令が構成データ命令でなく通常の命令である場合には、プロセッサ１１が当該命令に応じた処理を実行する。以下では、プロセッサ１１に供給される命令が構成データ命令である場合について説明する。
【００６０】
図９は、第２の実施形態におけるデータ処理システムのＤＲＣ実行シーケンスの一例を示す図である。
プロセッサ１１は、構成データ命令をフェッチする（Ｓ３１）と、構成データが供給されることを示すリクエスト信号ＲＥＱを構成データバッファ１４に出力する（Ｓ３２）。また、構成データ命令がフェッチされるのと同じタイミングで、構成データデコーダ１９によって命令が構成データ命令であると認識され構成データメモリ１８に対してリード要求が行われる。これにより、構成データ命令が持つメモリアドレスによりアドレス指定された構成データが構成データメモリ１８から読み出されて構成データバッファ１４に供給される。
【００６１】
次に、ＤＲＣ１２の構成データバッファ１４は、プロセッサ１１からのリクエスト信号ＲＥＱを受信すると、構成データメモリ１８から供給される構成データを構成データバッファ１４に格納する（Ｓ３３）。そして、構成データの格納が完了すると、構成データバッファ１４は、構成データの格納が完了したことを示すアクノリッジ信号ＡＣＫをプロセッサ１１に出力する（Ｓ３４）。
【００６２】
続いて、構成データバッファ１４は、格納した構成データをリコンフィギュラブルアレイ１３に供給する（Ｓ３５）。これにより、リコンフィギュラブルアレイ１３の回路構成が変更される。次に、プロセッサ１１は、リコンフィギュラブルアレイ１３に対してデータイネーブル信号を出力するとともに、レジスタ６１に格納されているデータを入力データとして供給する（Ｓ３６）。リコンフィギュラブルアレイ１３は、プロセッサ１１から入力データとして供給されたデータを用い、変更された回路構成での処理（ＤＲＣ演算）を実行する（Ｓ３７）。
【００６３】
リコンフィギュラブルアレイ１３は、変更された回路構成での処理（ＤＲＣ演算）が終了すると、プロセッサ１１に対してデータイネーブル信号を出力するとともに、処理結果として得られたデータを出力データとして供給する（Ｓ３８）。それを受けたプロセッサ１１は、プロセッサ１１から出力データとして供給されたデータをレジスタ６１に格納する。
【００６４】
図９（Ｂ）には、プロセッサ１１、構成データバッファ１４、及びリコンフィギュラブルアレイ１３における処理実行に係る各段階のタイミングの関係を示している。図９（Ｂ）において、“Ｆ”はフェッチ、“Ｄ”はデコード、“Ｅ”は実行、“Ｍ”はメモリアクセス、“Ｗ”はライトバックを示す。
【００６５】
第２の実施形態によれば、前述した第１の実施形態と同様の効果が得られる。さらに、レジスタ６１を用いて、プロセッサ１１とリコンフィギュラブルアレイ１３との間でデータを授受して処理を行うことが可能になり、複雑なデータ処理を行うことが可能になる。なお、前述した第２の実施形態では、プロセッサ１１内にレジスタ６１を設けているが、プロセッサ１１及びリコンフィギュラブルアレイ１３のそれぞれに対してデータ授受可能なように接続されていれば良く、プロセッサ１１の外部にあっても良い。
【００６６】
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
本発明の諸態様を付記として以下に示す。
【００６７】
（付記１）
フェッチした命令に応じて処理を行う第１の処理部と、
前記第１の処理部とは異なる処理部であって、構成データに応じて動的に回路構成を再構成可能な第２の処理部と、
前記構成データが格納された構成データメモリと、
前記第１の処理部が命令をフェッチしたとき、当該命令が構成データ命令であるか否かを識別するデコード部とを備え、
前記デコード部は、前記命令が構成データ命令である場合には、前記構成データ命令が有するアドレス情報に基づいて、前記構成データメモリから前記構成データを読み出して前記第２の処理部に供給することを特徴とするデータ処理システム。
（付記２）
前記構成データメモリから読み出された前記構成データを格納するバッファ部を備え、
前記第２の処理部は、前記バッファ部に格納された前記構成データに従って回路構成を再構成することを特徴とする付記１記載のデータ処理システム。
（付記３）
前記第２の処理部に接続され、前記第１の処理部とデータを授受可能なレジスタを備えることを特徴とする付記１記載のデータ処理システム。
（付記４）
前記デコード部は、前記アドレス情報に基づいて前記構成データメモリから前記構成データを読み出すためのメモリアドレスを生成するアドレス生成部を有することを特徴とする付記１記載のデータ処理システム。
（付記５）
前記アドレス情報は、読み出す前記構成データが格納されている領域の先頭を示すメモリアドレスと、読み出す前記構成データのデータ量とを含み、
前記アドレス生成部は、前記アドレス情報のメモリアドレス及びデータ量に基づいて、前記構成データメモリから前記構成データを読み出すためのメモリアドレスを生成することを特徴とする付記４記載のデータ処理システム。
（付記６）
前記アドレス情報は、読み出す前記構成データが格納されているメモリアドレスであり、
前記構成データ命令が有するアドレス情報を前記構成データメモリに供給し、命令が構成データ命令である場合に前記デコード部が前記構成データメモリに対して出力要求を行うことを特徴とする付記１記載のデータ処理システム。
（付記７）
前記第１の処理部がフェッチした命令が、前記バッファ部に格納されている前記構成データを前記構成データメモリから読み出す前記構成データ命令とプログラムカウンタ値が一致した場合には、前記バッファ部は、前記バッファ部に格納されている前記構成データに応じた値を加算してプログラムカウンタ値を更新することを特徴とする付記２記載のデータ処理システム。
（付記８）
前記第１の処理部がフェッチした命令が、前記バッファ部に格納されている前記構成データと同じ前記構成データが前記構成データメモリから読み出される前記構成データ命令である場合には、前記バッファ部に格納されている前記構成データに対応する前記構成データ命令をスキップすることを特徴とする付記２記載のデータ処理システム。
（付記９）
前記構成データメモリに格納された前記構成データは、前記構成データメモリとは異なる外部メモリが記憶している前記構成データのコピーであることを特徴とする付記１記載のデータ処理システム。
（付記１０）
前記第２の処理部は、複数のレジスタと任意の機能を持つ多機能ブロックとを有することを特徴とする付記１記載のデータ処理システム。
（付記１１）
前記構成データは、前記多機能ブロックの機能制御に係る情報、及び前記多機能ブロックと前記レジスタとの間の接続に係る情報を含むことを特徴とする付記１０記載のデータ処理システム。
（付記１２）
前記第２の処理部は、前記構成データに応じたデータ処理内容を複数サイクルの期間をかけて実行することが可能であり、かつ実行の完了を前記第１の処理部に対して通知することが可能であることを特徴とする付記１記載のデータ処理システム。
（付記１３）
フェッチした命令に応じて処理を行う第１の処理部と、構成データに応じて動的に回路構成を再構成可能な第２の処理部とを有するデータ処理システムの制御方法であって、
前記第１の処理部が命令をフェッチしたとき、当該命令が構成データ命令であるか否かを識別する識別工程と、
前記識別工程にて前記命令が構成データ命令であると識別された場合に、前記構成データ命令が有するアドレス情報に基づいて、前記構成データが格納された構成データメモリから前記構成データを読み出して前記第２の処理部に供給する読み出し工程とを有することを特徴とするデータ処理システムの制御方法。
（付記１４）
前記アドレス情報に基づいて、前記構成データメモリから前記構成データを読み出すためのメモリアドレスを生成するアドレス生成工程を有し、
前記読み出し工程では、前記アドレス生成工程にて生成されたメモリアドレスを用いて、前記構成データメモリから前記構成データを読み出すことを特徴とする付記１３記載のデータ処理システムの制御方法。
【符号の説明】
【００６８】
１１  プロセッサ
１２  ＤＲＣ
１３  リコンフィギュラブルアレイ
１４  構成データバッファ
１５  外部メモリ
１６  命令キャッシュ
１７  データキャッシュ
１８  構成データメモリ
１９  構成データデコーダ
【図１】
0005617282.tif 000002
【図２】
0005617282.tif 000003
【図３】
0005617282.tif 000004
【図４】
0005617282.tif 000005
【図５】
0005617282.tif 000006
【図６】
0005617282.tif 000007
【図７】
0005617282.tif 000008
【図８】
0005617282.tif 000009
【図９】
0005617282.tif 000010
【図１０】
0005617282.tif 000011
【図１１】
0005617282.tif 000012