説明

プログラマブルロジックデバイス

【課題】ロジックブロックユニットの演算構成と接続を高速に変更可能なプログラマブルロジックデバイスを提供する。
【解決手段】コンフィグレーションコントロール回路(213)は、第1のコンフィグレーション情報に応じてロジックブロックユニット(210)の演算構成と接続を制御する。データコントロール回路(211)は、第1の入力データストリームをロジックブロックユニットに出力し、ロジックブロックユニットは、第1の入力データストリームの論理演算結果を出力する。コンフィグレーションコントロール回路は、データコントロール回路が第1の入力データストリームをロジックブロックユニットに出力している間に、第2のコンフィグレーション情報を入力して記憶し、ロジックブロックユニットが第1の入力データストリームの論理演算を終了すると、第2のコンフィグレーション情報に応じてロジックブロックユニットの演算構成と接続を制御する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラマブルロジックデバイスに関する。
【背景技術】
【0002】
プログラムによって回路構成を変更できるプログラマブルロジックデバイスの内、一般的にフィールドプログラマブルゲートアレイ(FPGA)と呼ばれる半導体集積回路がある。プログラマブルロジックデバイスは、半導体集積回路の論理演算回路を、プログラマブルに構成可能なロジックデバイスの総称で、中でも、FPGAと呼ばれるプログラマブルロジックデバイスは、中小規模の回路から、従来は専用のロジック回路で形成されていた大規模な論理回路に至るまで、半導体集積回路を使用する産業機器の中で、幅広く使用されている。FPGAの構造は、1980年代のFreemanの提案により、ルックアップテーブル型メモリによる可変論理ロジックブロックと、それらをプログラマブルに結線するスイッチマトリクスにより構成されるのが一般的である。ルックアップテーブルのアドレスラインが論理入力に相当し、出力が論理演算結果を表す。ルックアップテーブルのデータを書き換えることにより、任意の論理演算と等価なロジックブロックが実現できる。ロジックブロックの出力は、プログラマブルに切り替え可能なスイッチボックスによって、他の任意のロジックブロックに結線されるように、コネクションボックスを通じて配線される。一般的なFPGAは、ロジックブロック、スイッチボックス及びコネクションボックスが市松模様状のアレイ型に配置され、ルックアップテーブルのデータ、スイッチボックス及びコネクションボックスのデータを事前に設定した後、動作させる。この設定作業をコンフィグレーション(再構成)と呼ぶ。
【0003】
多くのアプリケーションにおいて、通常、FPGAは、電源投入後、まず、コンフィグレーション情報をデバイス内に転送し、その後、クロックを印加して動作状態とさせている。これを、一括再構成と呼び、普及当初よりこの使用方法は変わっていない。これに加え、近年、動作中に回路ブロックの一部のコンフィグレーションを変更できるように構成した、部分再構成型FPGAと呼ばれるタイプのものが利用され始めている。ロジックブロックとスイッチマトリックスの間に他のロジックブロック群と回路的に隔離できるような回路を付加し、他の回路が動作中であっても、当該部分のロジックブロックのコンフィグレーション情報を書き換えることができるように構成されている。このような構成により、例えば画像処理の一部分の処理内容を動作中に変更したり、通信処理の一部を規格の更新に合わせて適宜変更させたりといったことが可能となる。
【0004】
例えば、FPGAを部分的に構成するための方法であって、FPGAは、多数のアドレス線および多数のデータ線対により接続された構成可能論理ブロック(CLB)の配列を有し、その方法は、少なくとも1本のアドレス線でアドレス指定された1つ以上の第1のCLBを再構成するステップと、同時に、アドレス線によりアドレス指定された第2のCLBの再構成を防ぐステップとを含む、方法が知られている(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】米国特許第6526557号明細書
【発明の概要】
【発明が解決しようとする課題】
【0006】
現在の部分再構成型FPGAの代表的なものは、通常、外部の不揮発性メモリやデータストレージに、予めコンフィグレーション情報(フルビットファイルやパーシャルビットファイル)が格納されている。これを、電源投入時、及び、部分再構成実行前に、マイクロコントローラといった制御装置を使い、FPGA内のコンフィグレーションメモリにデータ転送し、その後、所望の動作を実行する。この一連の手順は、例えば、以下のステップにより実行される。
【0007】
第1のステップでは、フラッシュメモリ等の記憶媒体に、全体構成情報、及び、複数の部分再構成情報を格納しておく。
第2のステップでは、電源投入時に、全体構成情報をロードし、システムを稼働させる。
第3のステップでは、部分再構成をする領域と接続されている信号線をフリップフロップ等で固定し、信号変化の伝播を抑止する。
第4のステップでは、部分再構成領域に、記憶媒体から再構成情報をロードする。
第5のステップでは、フリップフロップを解除し、信号線を再接続する。
【0008】
以上の操作は、通常、チップ内外のプロセッサコントローラ、もしくは、シーケンサ、ステートマシンなどで制御する。しかしながら、これらのステップを必要とする部分再構成型FPGAにおいては、この手順が必須であるがために、それを応用するシステムを構築する上で、以下の(1)〜(5)の課題が生じている。
【0009】
(1)部分再構成する手順が煩雑で、構成変更に時間がかかる。これは、実際、上記のような手順を実行するためには、FPGAの動作速度に比べ、数十倍から数百倍の時間が必要になることに起因している。特に、部分再構成をする領域を設定し、それらの信号線を固定、次の構成情報をロード、信号線を再接続という、一連のシーケンシャルな動作によるところが大きい。構成変更の間、当該処理を行うことができず、システムには処理速度低下につながる制約がかかる。
【0010】
(2)ダイナミックな構成変更の要求に対する現実的な解を提供できない。すなわち、現在の代表的な部分再構成型FPGAは、その構造上、領域分割された複数のFPGAブロックの集合体とほぼ等価であり、構成情報を絶え間なく変化させながら処理を行ってゆくようなアプリケーション、例えばリコンフィギャラブルコンピューティングのようなシステムへ適用するのは、システムのオーバヘッドが大きくなりすぎる問題が生じる。
【0011】
(3)構成内容のローディングを制御するコントローラを必要とする。すなわち、上記一連の動作実行には、通常、マイクロコントローラのような制御装置によるシーケンスコントロールが必要である。これは、FPGAに付加させる形で置かれるのが普通であるが、内蔵される場合もある。いずれにしても、システムのコストアップ要因となる。
【0012】
(4)構成を変更する際、データフローを停止する結果となり易い。多くの実運用形態において、現在の代表的な部分再構成型FPGAを利用して稼働中のシステムの部分変更を行う場合は、構成変更する領域を一度切り離し、再構成後に再び接続するという動作が必要である。要求される処理速度が遅い場合は問題を生じないが、近年の多くの高速処理アプリケーションにおいては、安全のため、データフローをいったん停止せざるをえなくなる問題がある。
【0013】
(5)部分再構成領域が細かくなるにつれ、上記の一連の問題点の影響が顕著になる。より先進的なアプリケーションにおいては、システムの利用効率を最大限に高めるため、より小さな論理単位で再構成を行う要求がある。領域が細分化されるに伴い、各細分領域に対して再構成シーケンスが必要なのは変わらず、再構成シーケンス実行のオーバヘッドが顕著になるという問題点は自明である。
【0014】
本発明の目的は、複数のロジックブロックの演算構成と接続を高速に、かつ、ダイナミックに変更することができるプログラマブルロジックデバイスを提供することである。
【課題を解決するための手段】
【0015】
プログラマブルロジックデバイスは、論理演算を行う複数のロジックブロックを含み、前記複数のロジックブロックをプログラマブルに接続可能であり、入力データストリームを前記複数のロジックブロックにより論理演算するロジックブロックユニットと、コンフィグレーション情報に応じて、前記ロジックブロックユニット内の複数のロジックブロックの演算構成と接続を制御するコンフィグレーションコントロール回路と、前記ロジックブロックユニットに前記入力データストリームを出力するデータコントロール回路とを有し、前記コンフィグレーションコントロール回路は、第1のコンフィグレーション情報に応じて前記ロジックブロックユニット内の複数のロジックブロックの演算構成と接続を制御し、その後、前記データコントロール回路は、第1の入力データストリームを前記ロジックブロックユニットに出力し、前記ロジックブロックユニットは、前記第1の入力データストリームの論理演算結果を出力し、前記コンフィグレーションコントロール回路は、前記データコントロール回路が前記第1の入力データストリームを前記ロジックブロックユニットに出力している間に、第2のコンフィグレーション情報を入力して記憶し、前記ロジックブロックユニットが前記第1の入力データストリームの論理演算を終了すると、前記第2のコンフィグレーション情報に応じて前記ロジックブロックユニット内の複数のロジックブロックの演算構成と接続を制御し、その後、前記データコントロール回路は、第2の入力データストリームを前記ロジックブロックユニットに出力し、前記ロジックブロックユニットは、前記第2の入力データストリームの論理演算結果を出力する。
【発明の効果】
【0016】
第1の入力データストリームをロジックブロックユニットに出力している間に、第2のコンフィグレーション情報を入力して記憶するので、第2のコンフィグレーション情報に基づく複数のロジックブロックの演算構成と接続を高速に、かつ、ダイナミックに変更することができる。
【図面の簡単な説明】
【0017】
【図1】図1(A)及び(B)は実施形態によるプログラマブルロジックデバイスの入出力例を示す図である。
【図2】プログラマブルロジックデバイスの構成例を示す図である。
【図3】プログラマブルロジックデバイス内の再構成ユニットの構成例を示す図である。
【図4】コネクションユニットの構成例を示す図である。
【図5】データルーティンユニットの構成例を示す図である。
【図6】コンフィグレーションコントロール回路の構成例を示す図である。
【図7】図7(A)は図2のプログラマブルロジックデバイスの一部の回路の構成例を示す図であり、図7(B)は2相型非同期通信のタイミングチャートであり、図7(C)は4相型非同期通信のタイミングチャートである。
【図8】図8(A)はコンフィグレーション固定モードのプログラマブルロジックデバイスの入力例を示す図であり、図8(B)はコンフィグレーション可変モードのプログラマブルロジックデバイスの入力例を示す図である。
【図9】プログラマブルロジックデバイスの処理例を示すフローチャートである。
【発明を実施するための形態】
【0018】
図1(A)及び(B)は、実施形態によるプログラマブルロジックデバイス(プログラマブル論理演算装置)101の入出力例を示す図である。プログラマブルロジックデバイス101は、図1(A)のコンフィグレーション固定モード及び図1(B)のコンフィグレーション可変モードを有する。プログラマブルロジックデバイス101は、例えば、フィールドプログラマブルゲートアレイ(FPGA)であり、論理演算を行う複数のロジックブロックを含み、コンフィグレーション情報に応じて複数のロジックブロックをプログラマブルに接続可能である。これにより、プログラマブルロジックデバイス101は、種々の論理演算が可能になる。
【0019】
図1(A)は、コンフィグレーション固定モードのプログラマブルロジックデバイス101の入出力例を示す。まず、プログラマブルロジックデバイス101は、コンフィグレーション情報111を入力し、コンフィグレーション情報111に応じて複数のロジックブロックの演算構成と接続を行う。このコンフィグレーション情報111により、複数のロジックブロックの演算構成と接続は固定される。次に、プログラマブルロジックデバイス101は、複数の入力データストリーム112をシーケンシャルに入力し、複数のロジックブロックにより入力データストリーム112の論理演算を行い、その論理演算の結果113を出力する。
【0020】
図1(B)は、コンフィグレーション可変モードのプログラマブルロジックデバイス101の入出力例を示す。まず、プログラマブルロジックデバイス101は、第1のコンフィグレーション情報121aを入力し、第1のコンフィグレーション情報121aに応じて複数のロジックブロックの演算構成と接続を行う。その後、プログラマブルロジックデバイス101は、第1の入力データストリーム122aを入力し、第1の入力データストリーム122aの論理演算を行い、その論理演算の結果123aを出力する。この際、プログラマブルロジックデバイス101は、上記の第1の入力データストリーム122aを入力している間に、第2のコンフィグレーション情報121bも入力して記憶しておく。プログラマブルロジックデバイス101は、上記の第1の入力データストリーム122aの論理演算を終了すると、上記で記憶した第2のコンフィグレーション情報121bに応じて複数のロジックブロックの接続を行う。その後、プログラマブルロジックデバイス101は、第2の入力データストリーム122bを入力し、第2の入力データストリーム122bの論理演算を行い、その論理演算の結果123bを出力する。この際、プログラマブルロジックデバイス101は、上記の第2の入力データストリーム122bを入力している間に、第3のコンフィグレーション情報121cも入力して記憶しておく。プログラマブルロジックデバイス101は、上記の第2の入力データストリーム122bの論理演算を終了すると、上記で記憶した第3のコンフィグレーション情報121cに応じて複数のロジックブロックの接続を行う。その後、プログラマブルロジックデバイス101は、第3の入力データストリーム122cを入力し、第3の入力データストリーム122cの論理演算を行い、その論理演算の結果123cを出力する。その後、同様に、コンフィグレーション情報及び入力データストリームの並列入力を繰り返す。
【0021】
ここで、プログラマブルロジックデバイス101の単純なコンフィグレーション変更方法を説明する。これは、固定モードで連続的なコンフィグレーションを実施した状態に相当する。まず、プログラマブルロジックデバイス101は、第1のコンフィグレーション情報121aを入力し、第1のコンフィグレーション情報121aに応じて複数のロジックブロックの接続を行う。次に、プログラマブルロジックデバイス101は、第1の入力データストリーム122aを入力し、第1の入力データストリーム122aの論理演算を行い、その論理演算の結果123aを出力する。その後、プログラマブルロジックデバイス101は、一旦動作停止状態にした後、第2のコンフィグレーション情報121bを入力し、第2のコンフィグレーション情報121bに応じて複数のロジックブロックの接続を行う。次に、プログラマブルロジックデバイス101は、第2の入力データストリーム122bを入力し、第2の入力データストリーム122bの論理演算を行い、その論理演算の結果123bを出力する。その後、プログラマブルロジックデバイス101は、一旦動作停止状態にした後、第3のコンフィグレーション情報121cを入力し、第3のコンフィグレーション情報121cに応じて複数のロジックブロックの接続を行う。次に、プログラマブルロジックデバイス101は、第3の入力データストリーム122cを入力し、第3の入力データストリーム122cの論理演算を行い、その論理演算の結果123cを出力する。このように、入力データストリーム121a〜121c及びコンフィグレーション情報122a〜122cをシーケンシャルに入力すると、論理演算結果123a〜123cを出力するまでに煩雑な設定処理が生じ、結果、長時間を要する。
【0022】
これに対し、図1(B)のコンフィグレーション可変モードでは、プログラマブルロジックデバイス101は、入力データストリーム121a〜121c及びコンフィグレーション情報122a〜122cを並列に入力するので、コンフィグレーション情報121a〜121cに基づく複数のロジックブロックの演算構成と接続を高速に、かつ、ダイナミックに変更することができ、論理演算結果123a〜123cを短時間で得ることができる。
【0023】
図2はプログラマブルロジックデバイス101の構成例を示す図であり、図3はプログラマブルロジックデバイス101内の再構成ユニット214の構成例を示す図である。複数の再構成ユニット214は、2次元行列状に配列される。各再構成ユニット214は、ロジックブロックユニット210、データコントロール回路211、コンフィグレーション情報コントロール回路212、及びコンフィグレーションコントロール回路213を有する。ロジックブロックユニット210は、複数のロジックブロック209、複数のスイッチボックスS、及び複数のコネクションボックスCを有し、複数のロジックブロック209をプログラマブルに接続可能である。複数のロジックブロック209は、2次元行列状に配列され、例えば、ルックアップテーブル301、フリップフロップ302及びセレクタ303を有し、論理演算を行う。複数のロジックブロック209の入出力端子は、スイッチボックスS及びコネクションボックスCにより相互に接続される。ルックアップテーブル301のアドレス信号が論理入力信号に相当し、出力信号が論理演算結果を表す。ルックアップテーブル301のデータを書き換えることにより、任意の論理演算と等価なロジックブロック209が実現できる。ロジックブロック209の出力信号は、プログラマブルに切り替え可能なスイッチボックスSによって、他の任意のロジックブロック209に結線されるように、コネクションボックスCを通じて配線される。コンフィグレーションコントロール回路213は、コンフィグレーション情報コントロール回路212からコンフィグレーション情報CFを入力し、コンフィグレーション情報CFに応じて、ルックアップテーブル301のデータ、スイッチボックスSの接続及びコネクションボックスCの接続を制御する。
【0024】
コンフィグレーション情報コントロール回路212は、データコントロール回路211からコンフィグレーションリクエスト信号CFG_REQを入力すると、コンフィグレーション情報CFをコンフィグレーションルーティンユニット217から入力してコンフィグレーションコントロール回路213に出力する。コンフィグレーションコントロール回路213は、コンフィグレーション情報CFに応じて、ロジックブロックユニット210内の複数のロジックブロック209の演算構成と接続を制御する。その後、コンフィグレーション情報コントロール回路212は、データコントロール回路211にコンフィグレーションアクノリッジ信号CFG_ACKを出力する。
【0025】
データコントロール回路211は、データリクエスト信号REQをコネクションユニット215に出力し、それに応答してコネクションユニット215からデータアクノリッジ信号ACK及び入力データストリームDiを入力すると、入力データストリームDiをロジックブロックユニット210に出力する。ロジックブロックユニット210は、入力データストリームDiを複数のロジックブロック209により論理演算し、その論理演算結果の出力データストリームDoをデータコントロール回路211に出力する。データコントロール回路211は、データリクエスト信号REQをコネクションユニット215から入力すると、それに応答してデータアクノリッジ信号ACK及び出力データストリームDoをコネクションユニット215に出力する。
【0026】
上記のように、まず、データコントロール回路211は、コンフィグレーションリクエスト信号CFG_REQを出力し、ロジックブロックユニット210にコンフィグレーション情報CFをローディングする。すると、データコントロール回路211は、コンフィグレーション完了を示すコンフィグレーションアクノリッジ信号CFG_ACKを受信する。次に、データコントロール回路211は、コネクションユニット215にデータリクエスト信号REQを送信する。すると、データコントロール回路211は、コネクションユニット215より入力データストリームDi及びデータアクノリッジ信号ACKを受信する。次に、データコントロール回路211は、他のロジックブロックユニット210からデータリクエスト信号REQを受信する。すると、データコントロール回路211は、ロジックブロックユニット210の論理演算完了後、出力データストリームDo及びデータアクノリッジ信号ACKを送信する。以降、上記の処理を繰り返す。
【0027】
コンフィグレーションルーティンユニット217は、コンフィグレーション情報CFのネットワーク配線に接続され、複数の再構成ユニット214へのコンフィグレーション情報CFの出力を制御する。データルーティンユニット216は、複数の再構成ユニット214間に接続され、複数の再構成ユニット214のデータDi,Do、データリクエスト信号REQ及びデータアクノリッジ信号ACKの入出力を制御する。コネクションユニット215も、複数の再構成ユニット214間に接続され、複数の再構成ユニット214のデータDi,Do、データリクエスト信号REQ及びデータアクノリッジ信号ACKの入出力を制御する。
【0028】
各再構成ユニット214間は、データリクエスト信号REQ及びデータアクノリッジ信号ACKによる非同期通信を行い、各再構成ユニット214の独立性を確保する。再構成ユニット214間には、コネクションユニット215及びデータルーティンユニット216を設け、各再構成ユニット214間の通信を非同期かつプログラマブルに行えるよう構成する。また、データストリームDi,Do及びコンフィグレーション情報CFの双方のデータフローに対して、それぞれデータルーティンユニット216及びコンフィグレーションルーティンユニット217を設け、データストリームDi,Do及びコンフィグレーション情報CFを別系統で流れるように構成する。
【0029】
再構成ユニット214は、コネクションユニット215で結合される。コネクションユニット215は、データフロールーティンユニット216で結合されている。また、各再構成ユニット214のコンフィグレーション情報CFは、コンフィグレーションルーティンユニット217を介して供給される。
【0030】
ロジックブロックユニット210に含まれるロジックブロック209の数は、任意に設定されるが、最もシンプルなのは、数百のロジックブロック209を同一の数でくくり、同一サイズのロジックブロックユニット210を構成するものである。必要に応じて、複数のサイズのロジックブロックユニット210を設けることも可能である。また、ロジックブロックユニット210のサイズを可変とすることも可能である。
【0031】
図4は、コネクションユニット215の構成例を示す図である。コネクションユニット215は、再構成ユニット214及びデータルーティンユニット216に接続される。コネクションユニット215は、再構成ユニット214からのデータDi,Do、データリクエスト信号REQ及びデータアクノリッジ信号ACKを、十字型のスイッチ複合回路401にて結合する。スイッチ複合回路401は、データDi,Doのバス幅分のアレイ、及び、データリクエスト信号REQ及びデータアクノリッジ信号ACKのアレイで構成される。ただし、スイッチ複合回路401は、プログラマブルロジックデバイス101の構成要件によって、適宜バス幅を減少させることもできる。スイッチ複合回路401は、予め設定されているか、あるいは、隣接の再構成ユニット214のコンフィグレーションコントロール回路213により制御される。
【0032】
図5は、データルーティンユニット216の構成例を示す図である。データルーティンユニット216は、上下左右のコネクションユニット215からのデータDi,Do、データリクエスト信号REQ及びデータアクノリッジ信号ACKを、6つのスイッチ501で構成されたスイッチ複合回路により結合する。これらのスイッチ複合回路は、データDi,Doのバス幅分のアレイ、及び、データリクエスト信号REQ及びデータアクノリッジ信号ACKのアレイで構成される。ただし、スイッチ複合回路は、プログラマブルロジックデバイス101の構成要件と回路リソースの許容度の兼ね合いで、バス内の線の入れ替えスイッチを適宜付加することもできる。理想的には、すべてのバスの信号線が入れ替え可能なように構成することも可能であるが、データルーティンユニット216が巨大になるというデメリットもあり、構成要件に応じた最適構成をとるのが望ましい。それぞれのスイッチ501は、予め設定されているか、あるいは、コネクションユニット215を通じ、隣接の再構成ユニット214のコンフィグレーションコントロール回路213により制御される。なお、データルーティンユニット216は図4の回路で構成してもよく、コネクションユニット215は図5の回路で構成してもよい。
【0033】
図6は、コンフィグレーションコントロール回路213の構成例を示す図である。コンフィグレーションコントロール回路213は、第1のコンフィグレーションメモリ(メモリバンク)801、第2のコンフィグレーションメモリ(メモリバンク)802、及びスイッチ803〜806を有する。スイッチ803をオンすることにより、第1のコンフィグレーションメモリ801は、コンフィグレーション情報コントロール回路212からのコンフィグレーション情報CFを書き込むことができる。また、スイッチ804をオンすることにより、第2のコンフィグレーションメモリ802は、コンフィグレーション情報コントロール回路212からのコンフィグレーション情報CFを書き込むことができる。また、スイッチ805をオンすることにより、第1のコンフィグレーションメモリ801から読み出したコンフィグレーション情報CF又はそれに応じた制御情報をロジックブロックユニット210に出力することができる。また、スイッチ806をオンすることにより、第2のコンフィグレーションメモリ802から読み出したコンフィグレーション情報CF又はそれに応じた制御情報をロジックブロックユニット210に出力することができる。
【0034】
図9は、プログラマブルロジックデバイス101の処理例を示すフローチャートである。ステップS901では、データコントロール回路211は、コンフィグレーションリクエスト信号CFG_REQを出力する。
【0035】
次に、ステップS902では、コンフィグレーションコントロール回路213は、メモリ切り替えのため、スイッチ803をオンにし、スイッチ804をオフにし、コンフィグレーション情報CFを第1のコンフィグレーションメモリ801に書き込む。次に、コンフィグレーションコントロール回路213は、スイッチ803及び806をオフにし、スイッチ805をオンにし、第1のコンフィグレーションメモリ801内のコンフィグレーション情報CFをロジックブロックユニット210に出力する。
【0036】
次に、ステップS903では、コンフィグレーションコントロール回路213は、コンフィグレーション終了信号CFG_ENDをコンフィグレーション情報コントロール回路212に出力する。
【0037】
次に、ステップS904では、コンフィグレーション情報コントロール回路212は、コンフィグレーションアクノリッジ信号CFG_ACKをデータコントロール回路211に出力する。
【0038】
次に、ステップS905では、データコントロール回路211は、データリクエスト信号REQを出力する。
【0039】
次に、ステップS906及びS907では、データコントロール回路211は、入力データストリームDi及びデータアクノリッジ信号ACKを入力し、入力データストリームDiをロジックブロックユニット210に出力する。
【0040】
次に、ステップS908で、データ処理を完了する。その後、ステップS901に戻り、上記と同様の処理を繰り返す。その詳細は、後に、図8(A)及び(B)を参照しながら説明する。
【0041】
図7(A)は、図2のプログラマブルロジックデバイス101の一部の回路の構成例を示す図である。再構成ユニット214内のデータコントロール回路211は、コネクションユニット215を介して他の再構成ユニット214内のデータコントロール回路211に対して、データDi,Do、データリクエスト信号REQ及びデータアクノリッジ信号ACKを入出力する。
【0042】
図7(B)は、2相型非同期通信のタイミングチャートであり、データリクエスト信号REQ及びデータアクノリッジ信号ACKの立ち上がりエッジ及び立ち下がりエッジに同期してデータDi,Doの入出力を行うダブルエッジ方式を示す。一の再構成ユニット214内のデータコントロール回路211は、データリクエスト信号REQの立ち上がりエッジ又は立ち下がりエッジを入力すると、出力データストリームDoと共に立ち上がりエッジ又は立ち下がりエッジのデータアクノリッジ信号ACKを出力する。また、他の再構成ユニット214内のデータコントロール回路211は、データリクエスト信号REQの立ち上がりエッジ又は立ち下がりエッジを出力すると、それに応答して入力データストリームDiと共に立ち上がりエッジ又は立ち下がりエッジのデータアクノリッジ信号ACKを入力する。
【0043】
図7(C)は、4相型非同期通信のタイミングチャートであり、データリクエスト信号REQ及びデータアクノリッジ信号ACKの立ち上がりエッジのみに同期してデータDi,Doの入出力を行うシングルエッジ方式を示す。一の再構成ユニット214内のデータコントロール回路211は、データリクエスト信号REQの立ち上がりエッジを入力すると、出力データストリームDoと共に立ち上がりエッジのデータアクノリッジ信号ACKを出力する。また、他の再構成ユニット214内のデータコントロール回路211は、データリクエスト信号REQの立ち上がりエッジを出力すると、それに応答して入力データストリームDiと共に立ち上がりエッジのデータアクノリッジ信号ACKを入力する。
【0044】
図7(A)〜(C)は、コネクションユニット215とデータコントロール回路211の間の信号を例に示すが、データコントロール回路211及びコンフィグレーション情報コントロール回路212間、複数のコンフィグレーションルーティンユニット217間、コネクションユニット215及びデータルーティンユニット216間も同様である。図7(B)の2相型と図7(C)の4相型は、適宜、どちらかのタイミング形式を使用してもよいし、また、このタイミング図に限定されるものでもない。
【0045】
図8(A)は、コンフィグレーション固定モードのプログラマブルロジックデバイス101の入力例を示す図である。まず、コンフィグレーション情報コントロール回路212は、データコントロール回路211からコンフィグレーションリクエスト信号CFG_REQを入力すると、コンフィグレーション情報CFを入力してコンフィグレーションコントロール回路213に出力する。コンフィグレーションコントロール回路213は、コンフィグレーション情報CFを入力し、スイッチ803をオンにし、第1のコンフィグレーションメモリ801にコンフィグレーション情報CFを書き込む。次に、コンフィグレーションコントロール回路213は、スイッチ803及び806をオフにし、スイッチ805をオンにし、第1のコンフィグレーションメモリ801に記憶されているコンフィグレーション情報CFをロジックブロックユニット210に出力し、コンフィグレーション情報CFに応じてロジックブロックユニット210内の複数のロジックブロック209の演算構成と接続を制御する。これにより、複数のロジックブロック209の演算構成と接続状態は、コンフィグレーション情報CFに応じて設定され、固定される。
【0046】
その後、コンフィグレーションコントロール回路213は、コンフィグレーション終了信号CFG_ENDをコンフィグレーション情報コントロール回路212に出力する。すると、コンフィグレーション情報コントロール回路212は、データコントロール回路211にコンフィグレーションアクノリッジ信号CFG_ACKを出力する。
【0047】
すると、データコントロール回路211は、データリクエスト信号REQを出力し、それに応答してデータアクノリッジ信号ACK及び第1の入力データストリームDi1を入力し、第1の入力データストリームDi1をロジックブロックユニット210に出力する。その後、ロジックブロックユニット210は、第1の入力データストリームDi1の論理演算結果を出力する。
【0048】
次に、データコントロール回路211は、データリクエスト信号REQを出力し、それに応答してデータアクノリッジ信号ACK及び第2の入力データストリームDi2を入力し、第2の入力データストリームDi2をロジックブロックユニット210に出力する。その後、ロジックブロックユニット210は、第2の入力データストリームDi2の論理演算結果を出力する。その後、同様に、データコントロール回路211は、シーケンシャルに、入力データストリームをロジックブロックユニット210に出力する。
【0049】
以上のように、コンフィグレーション固定モードは、部分再構成を行わないモードである。アプリケーションによっては、ロジックブロックユニット210の再構成を頻繁に行わない場合もある。この場合、モード切り替えにより、コンフィグレーション固定モードに設定することにより、制御信号によりコンフィグレーション情報CFをホールド状態にする。これにより、以降の入力データストリームDi1及びDi2等が連続的に流れるようにすることができる。このような構成をとることで、コンフィグレーション固定モードでのパフォーマンスを最大に高めることが可能である。
【0050】
図8(B)は、コンフィグレーション可変モードのプログラマブルロジックデバイス101の入力例を示す図である。まず、コンフィグレーション情報コントロール回路212は、データコントロール回路211からコンフィグレーションリクエスト信号CFG_REQを入力すると、第1のコンフィグレーション情報CF1を入力してコンフィグレーションコントロール回路213に出力する。コンフィグレーションコントロール回路213は、第1のコンフィグレーション情報CF1を入力し、スイッチ803をオンにし、第1のコンフィグレーションメモリ801に第1のコンフィグレーション情報CF1を書き込む。次に、コンフィグレーションコントロール回路213は、スイッチ803及び806をオフにし、スイッチ805をオンにし、第1のコンフィグレーションメモリ801に記憶されている第1のコンフィグレーション情報CF1をロジックブロックユニット210に出力し、第1のコンフィグレーション情報CF1に応じてロジックブロックユニット210内の複数のロジックブロック209の演算構成と接続を制御する。
【0051】
その後、コンフィグレーションコントロール回路213は、コンフィグレーション終了信号CFG_ENDをコンフィグレーション情報コントロール回路212に出力する。すると、コンフィグレーション情報コントロール回路212は、データコントロール回路211にコンフィグレーションアクノリッジ信号CFG_ACKを出力する。
【0052】
すると、データコントロール回路211は、データリクエスト信号REQを出力し、それに応答してデータアクノリッジ信号ACK及び第1の入力データストリームDi1を入力し、第1の入力データストリームDi1をロジックブロックユニット210に出力する。その後、ロジックブロックユニット210は、第1の入力データストリームDi1の論理演算結果を出力する。
【0053】
コンフィグレーション情報コントロール回路212は、データコントロール回路211が第1の入力データストリームDi1をロジックブロックユニット210に出力している間に、データコントロール回路211からコンフィグレーションリクエスト信号CFG_REQを入力し、第2のコンフィグレーション情報CF2を入力してコンフィグレーションコントロール回路213に出力する。コンフィグレーションコントロール回路213は、第2のコンフィグレーション情報CF2を入力し、スイッチ803及び806をオフにし、スイッチ804及び805をオンにし、第2のコンフィグレーションメモリ802に第2のコンフィグレーション情報CF2を書き込む。その後、データコントロール回路211は、ロジックブロックユニット210への第1の入力データストリームDi1の出力を完了する。次に、ロジックブロックユニット210は、第1の入力データストリームDi1の論理演算が終了すると、論理演算終了信号をデータコントロール回路211に出力する。すると、データコントロール回路211及びコンフィグレーションコントロール回路213は、スイッチ803及び806をオンにし、スイッチ804及び805をオフにし、第2のコンフィグレーションメモリ802に記憶されている第2のコンフィグレーション情報CF2をロジックブロックユニット210に出力し、第2のコンフィグレーション情報CF2に応じてロジックブロックユニット210内の複数のロジックブロック209の演算構成と接続を制御する。
【0054】
その後、コンフィグレーションコントロール回路213は、コンフィグレーション終了信号CFG_ENDをコンフィグレーション情報コントロール回路212に出力する。すると、コンフィグレーション情報コントロール回路212は、データコントロール回路211にコンフィグレーションアクノリッジ信号CFG_ACKを出力する。
【0055】
すると、データコントロール回路211は、データリクエスト信号REQを出力し、それに応答してデータアクノリッジ信号ACK及び第2の入力データストリームDi2を入力し、第2の入力データストリームDi2をロジックブロックユニット210に出力する。その後、ロジックブロックユニット210は、第2の入力データストリームDi2の論理演算結果を出力する。
【0056】
コンフィグレーション情報コントロール回路212は、データコントロール回路211が第2の入力データストリームDi2をロジックブロックユニット210に出力している間に、データコントロール回路211からコンフィグレーションリクエスト信号CFG_REQを入力し、第3のコンフィグレーション情報CF3を入力してコンフィグレーションコントロール回路213に出力する。コンフィグレーションコントロール回路213は、第3のコンフィグレーション情報CF3を入力し、スイッチ804及び805をオフにし、スイッチ803及び806をオンにし、第1のコンフィグレーションメモリ801に第3のコンフィグレーション情報CF3を書き込む。その後、データコントロール回路211は、ロジックブロックユニット210への第2の入力データストリームDi2の出力を完了する。次に、ロジックブロックユニット210は、第2の入力データストリームDi2の論理演算が終了すると、論理演算終了信号をデータコントロール回路211に出力する。すると、データコントロール回路211及びコンフィグレーションコントロール回路213は、スイッチ804及び805をオンにし、スイッチ803及び806をオフにし、第1のコンフィグレーションメモリ801に記憶されている第3のコンフィグレーション情報CF3をロジックブロックユニット210に出力し、第3のコンフィグレーション情報CF3に応じてロジックブロックユニット210内の複数のロジックブロック209の演算構成と接続を制御する。
【0057】
以後、同様の処理を繰り返す。コンフィグレーション情報CF1〜CF3等は、その順番で、第1のコンフィグレーションメモリ801及び第2のコンフィグレーションメモリ802に交互に記憶される。
【0058】
コンフィグレーション可変モードでは、第2のコンフィグレーション情報CF2は、その一つ前の第1の入力データストリームDi1の処理中に入力される。具体的には、データコントロール回路211が第1の入力データストリームDi1をロジックブロックユニット210に出力している間に、コンフィグレーションコントロール回路213が第2のコンフィグレーション情報CF2を入力して記憶するので、第2のコンフィグレーション情報CF2に基づく複数のロジックブロック209の演算構成と接続を高速に、かつ、ダイナミックに変更することができ、論理演算結果を高速に得ることができる。
【0059】
本実施形態によれば、ロジックブロックユニット210の再構成は、自動的に、かつ、略、入力データストリームDiの転送速度で行われるため、以下の効果が得られる。
【0060】
第1に、構成変更に必要であった煩雑な手順が不要になり、高速な構成変更が可能になる。
第2に、入力データストリームDiを入力している間にコンフィグレーション情報CFによる構成変更が行われるので、ダイナミックな構成変更を行うことができる。
第3に、構成変更はすべて再構成ユニット214内のコントロール回路で完結するので、再構成ユニット214の外部のコントロール装置やコントローラが不要となる。
第4に、入力データストリームDiとコンフィグレーション情報CFが常に流れた状態で稼働することで、著しく長いコンフィグレーション情報CFや、著しく短い入力データストリームDiの場合を除き、データフローが停止することはない。
第5に、各再構成ユニット214が自己完結型であるので、再構成ユニット214の大きさを小さくしても、上記の第1〜第4の効果を得ることができる。
【0061】
上記の第1及び第4の効果は処理速度の向上、第2の効果はシステム全体のパフォーマンス向上、第3の効果はコストダウン、第5の効果は総合的なパフォーマンスの向上につながるものである。
【0062】
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【0063】
101 プログラマブルロジックデバイス
209 ロジックブロック
210 ロジックブロックユニット
211 データコントロール回路
212 コンフィグレーション情報コントロール回路
213 コンフィグレーションコントロール回路
214 再構成ユニット
215 コネクションユニット
216 データルーティンユニット
217 コンフィグレーションルーティンユニット
301 ルックアップテーブル
302 フリップフロップ
303 セレクタ
801 第1のコンフィグレーションメモリ
802 第2のコンフィグレーションメモリ
803〜806 スイッチ

【特許請求の範囲】
【請求項1】
論理演算を行う複数のロジックブロックを含み、前記複数のロジックブロックをプログラマブルに接続可能であり、入力データストリームを前記複数のロジックブロックにより論理演算するロジックブロックユニットと、
コンフィグレーション情報に応じて、前記ロジックブロックユニット内の複数のロジックブロックの演算構成と接続を制御するコンフィグレーションコントロール回路と、
前記ロジックブロックユニットに前記入力データストリームを出力するデータコントロール回路とを有し、
前記コンフィグレーションコントロール回路は、第1のコンフィグレーション情報に応じて前記ロジックブロックユニット内の複数のロジックブロックの演算構成と接続を制御し、
その後、前記データコントロール回路は、第1の入力データストリームを前記ロジックブロックユニットに出力し、前記ロジックブロックユニットは、前記第1の入力データストリームの論理演算結果を出力し、
前記コンフィグレーションコントロール回路は、前記データコントロール回路が前記第1の入力データストリームを前記ロジックブロックユニットに出力している間に、第2のコンフィグレーション情報を入力して記憶し、前記ロジックブロックユニットが前記第1の入力データストリームの論理演算を終了すると、前記第2のコンフィグレーション情報に応じて前記ロジックブロックユニット内の複数のロジックブロックの演算構成と接続を制御し、
その後、前記データコントロール回路は、第2の入力データストリームを前記ロジックブロックユニットに出力し、前記ロジックブロックユニットは、前記第2の入力データストリームの論理演算結果を出力することを特徴とするプログラマブルロジックデバイス。
【請求項2】
前記コンフィグレーションコントロール回路は、第1のコンフィグレーションメモリ及び第2のコンフィグレーションメモリを有し、
前記コンフィグレーションコントロール回路は、前記第1のコンフィグレーション情報を前記第1のコンフィグレーションメモリに書き込み、前記第1のコンフィグレーションメモリに記憶されている前記第1のコンフィグレーション情報に応じて前記ロジックブロックユニット内の複数のロジックブロックの演算構成と接続を制御し、
その後、前記コンフィグレーションコントロール回路は、前記データコントロール回路が前記第1の入力データストリームを前記ロジックブロックユニットに出力している間に、前記第2のコンフィグレーション情報を入力して前記第2のコンフィグレーションメモリに書き込み、前記ロジックブロックユニットが前記第1の入力データストリームの論理演算を終了すると、前記第2のコンフィグレーションメモリに記憶されている前記第2のコンフィグレーション情報に応じて前記ロジックブロックユニット内の複数のロジックブロックの演算構成と接続を制御することを特徴とする請求項1記載のプログラマブルロジックデバイス。
【請求項3】
さらに、前記データコントロール回路からコンフィグレーションリクエスト信号を入力すると、コンフィグレーション情報を入力して前記コンフィグレーションコントロール回路に出力し、前記データコントロール回路にコンフィグレーションアクノリッジ信号を出力するコンフィグレーション情報コントロール回路を有し、
前記コンフィグレーション情報コントロール回路は、前記データコントロール回路からコンフィグレーションリクエスト信号を入力すると、前記第2のコンフィグレーション情報を入力して前記コンフィグレーションコントロール回路に出力し、
前記コンフィグレーションコントロール回路は、前記第2のコンフィグレーション情報を入力して記憶し、
その後、前記データコントロール回路は、データリクエスト信号を出力し、データアクノリッジ信号及び前記第2の入力データストリームを入力すると、前記第2の入力データストリームを前記ロジックブロックユニットに出力することを特徴とする請求項1又は2記載のプログラマブルロジックデバイス。
【請求項4】
前記ロジックブロックユニット、前記コンフィグレーションコントロール回路及び前記データコントロール回路は再構成ユニットを構成し、
前記再構成ユニットが複数設けられ、
前記データコントロール回路は、前記ロジックブロックユニットに対してデータの入出力を行い、
さらに、前記複数の再構成ユニット間に接続され、前記複数の再構成ユニットのデータの入出力を制御するデータルーティンユニットと、
前記複数の再構成ユニットへのコンフィグレーション情報の出力を制御するコンフィグレーションルーティンユニットとを有することを特徴とする請求項1〜3のいずれか1項に記載のプログラマブルロジックデバイス。
【請求項5】
コンフィグレーション固定モードでは、
前記コンフィグレーションコントロール回路は、コンフィグレーション情報に応じて前記ロジックブロックユニット内の複数のロジックブロックの演算構成と接続を制御し、
その後、前記データコントロール回路は、第1の入力データストリームを前記ロジックブロックユニットに出力し、前記ロジックブロックユニットは、前記第1の入力データストリームの論理演算結果を出力し、
その後、前記データコントロール回路は、第2の入力データストリームを前記ロジックブロックユニットに出力し、前記ロジックブロックユニットは、前記第2の入力データストリームの論理演算結果を出力することを特徴とする請求項1〜4のいずれか1項に記載のプログラマブルロジックデバイス。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate