(57)【要約】【課題】ロジックブロックユニットの演算構成と接続を高速に変更可能なプログラマブルロジックデバイスを提供する。【解決手段】コンフィグレーションコントロール回路（２１３）は、第１のコンフィグレーション情報に応じてロジックブロックユニット（２１０）の演算構成と接続を制御する。データコントロール回路（２１１）は、第１の入力データストリームをロジックブロックユニットに出力し、ロジックブロックユニットは、第１の入力データストリームの論理演算結果を出力する。コンフィグレーションコントロール回路は、データコントロール回路が第１の入力データストリームをロジックブロックユニットに出力している間に、第２のコンフィグレーション情報を入力して記憶し、ロジックブロックユニットが第１の入力データストリームの論理演算を終了すると、第２のコンフィグレーション情報に応じてロジックブロックユニットの演算構成と接続を制御する。【選択図】図３
2013030906.tif 000002
【特許請求の範囲】
【請求項１】
論理演算を行う複数のロジックブロックを含み、前記複数のロジックブロックをプログラマブルに接続可能であり、入力データストリームを前記複数のロジックブロックにより論理演算するロジックブロックユニットと、
コンフィグレーション情報に応じて、前記ロジックブロックユニット内の複数のロジックブロックの演算構成と接続を制御するコンフィグレーションコントロール回路と、
前記ロジックブロックユニットに前記入力データストリームを出力するデータコントロール回路とを有し、
前記コンフィグレーションコントロール回路は、第１のコンフィグレーション情報に応じて前記ロジックブロックユニット内の複数のロジックブロックの演算構成と接続を制御し、
その後、前記データコントロール回路は、第１の入力データストリームを前記ロジックブロックユニットに出力し、前記ロジックブロックユニットは、前記第１の入力データストリームの論理演算結果を出力し、
前記コンフィグレーションコントロール回路は、前記データコントロール回路が前記第１の入力データストリームを前記ロジックブロックユニットに出力している間に、第２のコンフィグレーション情報を入力して記憶し、前記ロジックブロックユニットが前記第１の入力データストリームの論理演算を終了すると、前記第２のコンフィグレーション情報に応じて前記ロジックブロックユニット内の複数のロジックブロックの演算構成と接続を制御し、
その後、前記データコントロール回路は、第２の入力データストリームを前記ロジックブロックユニットに出力し、前記ロジックブロックユニットは、前記第２の入力データストリームの論理演算結果を出力することを特徴とするプログラマブルロジックデバイス。
【請求項２】
前記コンフィグレーションコントロール回路は、第１のコンフィグレーションメモリ及び第２のコンフィグレーションメモリを有し、
前記コンフィグレーションコントロール回路は、前記第１のコンフィグレーション情報を前記第１のコンフィグレーションメモリに書き込み、前記第１のコンフィグレーションメモリに記憶されている前記第１のコンフィグレーション情報に応じて前記ロジックブロックユニット内の複数のロジックブロックの演算構成と接続を制御し、
その後、前記コンフィグレーションコントロール回路は、前記データコントロール回路が前記第１の入力データストリームを前記ロジックブロックユニットに出力している間に、前記第２のコンフィグレーション情報を入力して前記第２のコンフィグレーションメモリに書き込み、前記ロジックブロックユニットが前記第１の入力データストリームの論理演算を終了すると、前記第２のコンフィグレーションメモリに記憶されている前記第２のコンフィグレーション情報に応じて前記ロジックブロックユニット内の複数のロジックブロックの演算構成と接続を制御することを特徴とする請求項１記載のプログラマブルロジックデバイス。
【請求項３】
さらに、前記データコントロール回路からコンフィグレーションリクエスト信号を入力すると、コンフィグレーション情報を入力して前記コンフィグレーションコントロール回路に出力し、前記データコントロール回路にコンフィグレーションアクノリッジ信号を出力するコンフィグレーション情報コントロール回路を有し、
前記コンフィグレーション情報コントロール回路は、前記データコントロール回路からコンフィグレーションリクエスト信号を入力すると、前記第２のコンフィグレーション情報を入力して前記コンフィグレーションコントロール回路に出力し、
前記コンフィグレーションコントロール回路は、前記第２のコンフィグレーション情報を入力して記憶し、
その後、前記データコントロール回路は、データリクエスト信号を出力し、データアクノリッジ信号及び前記第２の入力データストリームを入力すると、前記第２の入力データストリームを前記ロジックブロックユニットに出力することを特徴とする請求項１又は２記載のプログラマブルロジックデバイス。
【請求項４】
前記ロジックブロックユニット、前記コンフィグレーションコントロール回路及び前記データコントロール回路は再構成ユニットを構成し、
前記再構成ユニットが複数設けられ、
前記データコントロール回路は、前記ロジックブロックユニットに対してデータの入出力を行い、
さらに、前記複数の再構成ユニット間に接続され、前記複数の再構成ユニットのデータの入出力を制御するデータルーティンユニットと、
前記複数の再構成ユニットへのコンフィグレーション情報の出力を制御するコンフィグレーションルーティンユニットとを有することを特徴とする請求項１〜３のいずれか１項に記載のプログラマブルロジックデバイス。
【請求項５】
コンフィグレーション固定モードでは、
前記コンフィグレーションコントロール回路は、コンフィグレーション情報に応じて前記ロジックブロックユニット内の複数のロジックブロックの演算構成と接続を制御し、
その後、前記データコントロール回路は、第１の入力データストリームを前記ロジックブロックユニットに出力し、前記ロジックブロックユニットは、前記第１の入力データストリームの論理演算結果を出力し、
その後、前記データコントロール回路は、第２の入力データストリームを前記ロジックブロックユニットに出力し、前記ロジックブロックユニットは、前記第２の入力データストリームの論理演算結果を出力することを特徴とする請求項１〜４のいずれか１項に記載のプログラマブルロジックデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブルロジックデバイスに関する。
【背景技術】
【０００２】
プログラムによって回路構成を変更できるプログラマブルロジックデバイスの内、一般的にフィールドプログラマブルゲートアレイ（ＦＰＧＡ）と呼ばれる半導体集積回路がある。プログラマブルロジックデバイスは、半導体集積回路の論理演算回路を、プログラマブルに構成可能なロジックデバイスの総称で、中でも、ＦＰＧＡと呼ばれるプログラマブルロジックデバイスは、中小規模の回路から、従来は専用のロジック回路で形成されていた大規模な論理回路に至るまで、半導体集積回路を使用する産業機器の中で、幅広く使用されている。ＦＰＧＡの構造は、１９８０年代のＦｒｅｅｍａｎの提案により、ルックアップテーブル型メモリによる可変論理ロジックブロックと、それらをプログラマブルに結線するスイッチマトリクスにより構成されるのが一般的である。ルックアップテーブルのアドレスラインが論理入力に相当し、出力が論理演算結果を表す。ルックアップテーブルのデータを書き換えることにより、任意の論理演算と等価なロジックブロックが実現できる。ロジックブロックの出力は、プログラマブルに切り替え可能なスイッチボックスによって、他の任意のロジックブロックに結線されるように、コネクションボックスを通じて配線される。一般的なＦＰＧＡは、ロジックブロック、スイッチボックス及びコネクションボックスが市松模様状のアレイ型に配置され、ルックアップテーブルのデータ、スイッチボックス及びコネクションボックスのデータを事前に設定した後、動作させる。この設定作業をコンフィグレーション（再構成）と呼ぶ。
【０００３】
多くのアプリケーションにおいて、通常、ＦＰＧＡは、電源投入後、まず、コンフィグレーション情報をデバイス内に転送し、その後、クロックを印加して動作状態とさせている。これを、一括再構成と呼び、普及当初よりこの使用方法は変わっていない。これに加え、近年、動作中に回路ブロックの一部のコンフィグレーションを変更できるように構成した、部分再構成型ＦＰＧＡと呼ばれるタイプのものが利用され始めている。ロジックブロックとスイッチマトリックスの間に他のロジックブロック群と回路的に隔離できるような回路を付加し、他の回路が動作中であっても、当該部分のロジックブロックのコンフィグレーション情報を書き換えることができるように構成されている。このような構成により、例えば画像処理の一部分の処理内容を動作中に変更したり、通信処理の一部を規格の更新に合わせて適宜変更させたりといったことが可能となる。
【０００４】
例えば、ＦＰＧＡを部分的に構成するための方法であって、ＦＰＧＡは、多数のアドレス線および多数のデータ線対により接続された構成可能論理ブロック（ＣＬＢ）の配列を有し、その方法は、少なくとも１本のアドレス線でアドレス指定された１つ以上の第１のＣＬＢを再構成するステップと、同時に、アドレス線によりアドレス指定された第２のＣＬＢの再構成を防ぐステップとを含む、方法が知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許第６５２６５５７号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００６】
現在の部分再構成型ＦＰＧＡの代表的なものは、通常、外部の不揮発性メモリやデータストレージに、予めコンフィグレーション情報（フルビットファイルやパーシャルビットファイル）が格納されている。これを、電源投入時、及び、部分再構成実行前に、マイクロコントローラといった制御装置を使い、ＦＰＧＡ内のコンフィグレーションメモリにデータ転送し、その後、所望の動作を実行する。この一連の手順は、例えば、以下のステップにより実行される。
【０００７】
第１のステップでは、フラッシュメモリ等の記憶媒体に、全体構成情報、及び、複数の部分再構成情報を格納しておく。
第２のステップでは、電源投入時に、全体構成情報をロードし、システムを稼働させる。
第３のステップでは、部分再構成をする領域と接続されている信号線をフリップフロップ等で固定し、信号変化の伝播を抑止する。
第４のステップでは、部分再構成領域に、記憶媒体から再構成情報をロードする。
第５のステップでは、フリップフロップを解除し、信号線を再接続する。
【０００８】
以上の操作は、通常、チップ内外のプロセッサコントローラ、もしくは、シーケンサ、ステートマシンなどで制御する。しかしながら、これらのステップを必要とする部分再構成型ＦＰＧＡにおいては、この手順が必須であるがために、それを応用するシステムを構築する上で、以下の（１）〜（５）の課題が生じている。
【０００９】
（１）部分再構成する手順が煩雑で、構成変更に時間がかかる。これは、実際、上記のような手順を実行するためには、ＦＰＧＡの動作速度に比べ、数十倍から数百倍の時間が必要になることに起因している。特に、部分再構成をする領域を設定し、それらの信号線を固定、次の構成情報をロード、信号線を再接続という、一連のシーケンシャルな動作によるところが大きい。構成変更の間、当該処理を行うことができず、システムには処理速度低下につながる制約がかかる。
【００１０】
（２）ダイナミックな構成変更の要求に対する現実的な解を提供できない。すなわち、現在の代表的な部分再構成型ＦＰＧＡは、その構造上、領域分割された複数のＦＰＧＡブロックの集合体とほぼ等価であり、構成情報を絶え間なく変化させながら処理を行ってゆくようなアプリケーション、例えばリコンフィギャラブルコンピューティングのようなシステムへ適用するのは、システムのオーバヘッドが大きくなりすぎる問題が生じる。
【００１１】
（３）構成内容のローディングを制御するコントローラを必要とする。すなわち、上記一連の動作実行には、通常、マイクロコントローラのような制御装置によるシーケンスコントロールが必要である。これは、ＦＰＧＡに付加させる形で置かれるのが普通であるが、内蔵される場合もある。いずれにしても、システムのコストアップ要因となる。
【００１２】
（４）構成を変更する際、データフローを停止する結果となり易い。多くの実運用形態において、現在の代表的な部分再構成型ＦＰＧＡを利用して稼働中のシステムの部分変更を行う場合は、構成変更する領域を一度切り離し、再構成後に再び接続するという動作が必要である。要求される処理速度が遅い場合は問題を生じないが、近年の多くの高速処理アプリケーションにおいては、安全のため、データフローをいったん停止せざるをえなくなる問題がある。
【００１３】
（５）部分再構成領域が細かくなるにつれ、上記の一連の問題点の影響が顕著になる。より先進的なアプリケーションにおいては、システムの利用効率を最大限に高めるため、より小さな論理単位で再構成を行う要求がある。領域が細分化されるに伴い、各細分領域に対して再構成シーケンスが必要なのは変わらず、再構成シーケンス実行のオーバヘッドが顕著になるという問題点は自明である。
【００１４】
本発明の目的は、複数のロジックブロックの演算構成と接続を高速に、かつ、ダイナミックに変更することができるプログラマブルロジックデバイスを提供することである。
【課題を解決するための手段】
【００１５】
プログラマブルロジックデバイスは、論理演算を行う複数のロジックブロックを含み、前記複数のロジックブロックをプログラマブルに接続可能であり、入力データストリームを前記複数のロジックブロックにより論理演算するロジックブロックユニットと、コンフィグレーション情報に応じて、前記ロジックブロックユニット内の複数のロジックブロックの演算構成と接続を制御するコンフィグレーションコントロール回路と、前記ロジックブロックユニットに前記入力データストリームを出力するデータコントロール回路とを有し、前記コンフィグレーションコントロール回路は、第１のコンフィグレーション情報に応じて前記ロジックブロックユニット内の複数のロジックブロックの演算構成と接続を制御し、その後、前記データコントロール回路は、第１の入力データストリームを前記ロジックブロックユニットに出力し、前記ロジックブロックユニットは、前記第１の入力データストリームの論理演算結果を出力し、前記コンフィグレーションコントロール回路は、前記データコントロール回路が前記第１の入力データストリームを前記ロジックブロックユニットに出力している間に、第２のコンフィグレーション情報を入力して記憶し、前記ロジックブロックユニットが前記第１の入力データストリームの論理演算を終了すると、前記第２のコンフィグレーション情報に応じて前記ロジックブロックユニット内の複数のロジックブロックの演算構成と接続を制御し、その後、前記データコントロール回路は、第２の入力データストリームを前記ロジックブロックユニットに出力し、前記ロジックブロックユニットは、前記第２の入力データストリームの論理演算結果を出力する。
【発明の効果】
【００１６】
第１の入力データストリームをロジックブロックユニットに出力している間に、第２のコンフィグレーション情報を入力して記憶するので、第２のコンフィグレーション情報に基づく複数のロジックブロックの演算構成と接続を高速に、かつ、ダイナミックに変更することができる。
【図面の簡単な説明】
【００１７】
【図１】図１（Ａ）及び（Ｂ）は実施形態によるプログラマブルロジックデバイスの入出力例を示す図である。
【図２】プログラマブルロジックデバイスの構成例を示す図である。
【図３】プログラマブルロジックデバイス内の再構成ユニットの構成例を示す図である。
【図４】コネクションユニットの構成例を示す図である。
【図５】データルーティンユニットの構成例を示す図である。
【図６】コンフィグレーションコントロール回路の構成例を示す図である。
【図７】図７（Ａ）は図２のプログラマブルロジックデバイスの一部の回路の構成例を示す図であり、図７（Ｂ）は２相型非同期通信のタイミングチャートであり、図７（Ｃ）は４相型非同期通信のタイミングチャートである。
【図８】図８（Ａ）はコンフィグレーション固定モードのプログラマブルロジックデバイスの入力例を示す図であり、図８（Ｂ）はコンフィグレーション可変モードのプログラマブルロジックデバイスの入力例を示す図である。
【図９】プログラマブルロジックデバイスの処理例を示すフローチャートである。
【発明を実施するための形態】
【００１８】
図１（Ａ）及び（Ｂ）は、実施形態によるプログラマブルロジックデバイス（プログラマブル論理演算装置）１０１の入出力例を示す図である。プログラマブルロジックデバイス１０１は、図１（Ａ）のコンフィグレーション固定モード及び図１（Ｂ）のコンフィグレーション可変モードを有する。プログラマブルロジックデバイス１０１は、例えば、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）であり、論理演算を行う複数のロジックブロックを含み、コンフィグレーション情報に応じて複数のロジックブロックをプログラマブルに接続可能である。これにより、プログラマブルロジックデバイス１０１は、種々の論理演算が可能になる。
【００１９】
図１（Ａ）は、コンフィグレーション固定モードのプログラマブルロジックデバイス１０１の入出力例を示す。まず、プログラマブルロジックデバイス１０１は、コンフィグレーション情報１１１を入力し、コンフィグレーション情報１１１に応じて複数のロジックブロックの演算構成と接続を行う。このコンフィグレーション情報１１１により、複数のロジックブロックの演算構成と接続は固定される。次に、プログラマブルロジックデバイス１０１は、複数の入力データストリーム１１２をシーケンシャルに入力し、複数のロジックブロックにより入力データストリーム１１２の論理演算を行い、その論理演算の結果１１３を出力する。
【００２０】
図１（Ｂ）は、コンフィグレーション可変モードのプログラマブルロジックデバイス１０１の入出力例を示す。まず、プログラマブルロジックデバイス１０１は、第１のコンフィグレーション情報１２１ａを入力し、第１のコンフィグレーション情報１２１ａに応じて複数のロジックブロックの演算構成と接続を行う。その後、プログラマブルロジックデバイス１０１は、第１の入力データストリーム１２２ａを入力し、第１の入力データストリーム１２２ａの論理演算を行い、その論理演算の結果１２３ａを出力する。この際、プログラマブルロジックデバイス１０１は、上記の第１の入力データストリーム１２２ａを入力している間に、第２のコンフィグレーション情報１２１ｂも入力して記憶しておく。プログラマブルロジックデバイス１０１は、上記の第１の入力データストリーム１２２ａの論理演算を終了すると、上記で記憶した第２のコンフィグレーション情報１２１ｂに応じて複数のロジックブロックの接続を行う。その後、プログラマブルロジックデバイス１０１は、第２の入力データストリーム１２２ｂを入力し、第２の入力データストリーム１２２ｂの論理演算を行い、その論理演算の結果１２３ｂを出力する。この際、プログラマブルロジックデバイス１０１は、上記の第２の入力データストリーム１２２ｂを入力している間に、第３のコンフィグレーション情報１２１ｃも入力して記憶しておく。プログラマブルロジックデバイス１０１は、上記の第２の入力データストリーム１２２ｂの論理演算を終了すると、上記で記憶した第３のコンフィグレーション情報１２１ｃに応じて複数のロジックブロックの接続を行う。その後、プログラマブルロジックデバイス１０１は、第３の入力データストリーム１２２ｃを入力し、第３の入力データストリーム１２２ｃの論理演算を行い、その論理演算の結果１２３ｃを出力する。その後、同様に、コンフィグレーション情報及び入力データストリームの並列入力を繰り返す。
【００２１】
ここで、プログラマブルロジックデバイス１０１の単純なコンフィグレーション変更方法を説明する。これは、固定モードで連続的なコンフィグレーションを実施した状態に相当する。まず、プログラマブルロジックデバイス１０１は、第１のコンフィグレーション情報１２１ａを入力し、第１のコンフィグレーション情報１２１ａに応じて複数のロジックブロックの接続を行う。次に、プログラマブルロジックデバイス１０１は、第１の入力データストリーム１２２ａを入力し、第１の入力データストリーム１２２ａの論理演算を行い、その論理演算の結果１２３ａを出力する。その後、プログラマブルロジックデバイス１０１は、一旦動作停止状態にした後、第２のコンフィグレーション情報１２１ｂを入力し、第２のコンフィグレーション情報１２１ｂに応じて複数のロジックブロックの接続を行う。次に、プログラマブルロジックデバイス１０１は、第２の入力データストリーム１２２ｂを入力し、第２の入力データストリーム１２２ｂの論理演算を行い、その論理演算の結果１２３ｂを出力する。その後、プログラマブルロジックデバイス１０１は、一旦動作停止状態にした後、第３のコンフィグレーション情報１２１ｃを入力し、第３のコンフィグレーション情報１２１ｃに応じて複数のロジックブロックの接続を行う。次に、プログラマブルロジックデバイス１０１は、第３の入力データストリーム１２２ｃを入力し、第３の入力データストリーム１２２ｃの論理演算を行い、その論理演算の結果１２３ｃを出力する。このように、入力データストリーム１２１ａ〜１２１ｃ及びコンフィグレーション情報１２２ａ〜１２２ｃをシーケンシャルに入力すると、論理演算結果１２３ａ〜１２３ｃを出力するまでに煩雑な設定処理が生じ、結果、長時間を要する。
【００２２】
これに対し、図１（Ｂ）のコンフィグレーション可変モードでは、プログラマブルロジックデバイス１０１は、入力データストリーム１２１ａ〜１２１ｃ及びコンフィグレーション情報１２２ａ〜１２２ｃを並列に入力するので、コンフィグレーション情報１２１ａ〜１２１ｃに基づく複数のロジックブロックの演算構成と接続を高速に、かつ、ダイナミックに変更することができ、論理演算結果１２３ａ〜１２３ｃを短時間で得ることができる。
【００２３】
図２はプログラマブルロジックデバイス１０１の構成例を示す図であり、図３はプログラマブルロジックデバイス１０１内の再構成ユニット２１４の構成例を示す図である。複数の再構成ユニット２１４は、２次元行列状に配列される。各再構成ユニット２１４は、ロジックブロックユニット２１０、データコントロール回路２１１、コンフィグレーション情報コントロール回路２１２、及びコンフィグレーションコントロール回路２１３を有する。ロジックブロックユニット２１０は、複数のロジックブロック２０９、複数のスイッチボックスＳ、及び複数のコネクションボックスＣを有し、複数のロジックブロック２０９をプログラマブルに接続可能である。複数のロジックブロック２０９は、２次元行列状に配列され、例えば、ルックアップテーブル３０１、フリップフロップ３０２及びセレクタ３０３を有し、論理演算を行う。複数のロジックブロック２０９の入出力端子は、スイッチボックスＳ及びコネクションボックスＣにより相互に接続される。ルックアップテーブル３０１のアドレス信号が論理入力信号に相当し、出力信号が論理演算結果を表す。ルックアップテーブル３０１のデータを書き換えることにより、任意の論理演算と等価なロジックブロック２０９が実現できる。ロジックブロック２０９の出力信号は、プログラマブルに切り替え可能なスイッチボックスＳによって、他の任意のロジックブロック２０９に結線されるように、コネクションボックスＣを通じて配線される。コンフィグレーションコントロール回路２１３は、コンフィグレーション情報コントロール回路２１２からコンフィグレーション情報ＣＦを入力し、コンフィグレーション情報ＣＦに応じて、ルックアップテーブル３０１のデータ、スイッチボックスＳの接続及びコネクションボックスＣの接続を制御する。
【００２４】
コンフィグレーション情報コントロール回路２１２は、データコントロール回路２１１からコンフィグレーションリクエスト信号ＣＦＧ＿ＲＥＱを入力すると、コンフィグレーション情報ＣＦをコンフィグレーションルーティンユニット２１７から入力してコンフィグレーションコントロール回路２１３に出力する。コンフィグレーションコントロール回路２１３は、コンフィグレーション情報ＣＦに応じて、ロジックブロックユニット２１０内の複数のロジックブロック２０９の演算構成と接続を制御する。その後、コンフィグレーション情報コントロール回路２１２は、データコントロール回路２１１にコンフィグレーションアクノリッジ信号ＣＦＧ＿ＡＣＫを出力する。
【００２５】
データコントロール回路２１１は、データリクエスト信号ＲＥＱをコネクションユニット２１５に出力し、それに応答してコネクションユニット２１５からデータアクノリッジ信号ＡＣＫ及び入力データストリームＤｉを入力すると、入力データストリームＤｉをロジックブロックユニット２１０に出力する。ロジックブロックユニット２１０は、入力データストリームＤｉを複数のロジックブロック２０９により論理演算し、その論理演算結果の出力データストリームＤｏをデータコントロール回路２１１に出力する。データコントロール回路２１１は、データリクエスト信号ＲＥＱをコネクションユニット２１５から入力すると、それに応答してデータアクノリッジ信号ＡＣＫ及び出力データストリームＤｏをコネクションユニット２１５に出力する。
【００２６】
上記のように、まず、データコントロール回路２１１は、コンフィグレーションリクエスト信号ＣＦＧ＿ＲＥＱを出力し、ロジックブロックユニット２１０にコンフィグレーション情報ＣＦをローディングする。すると、データコントロール回路２１１は、コンフィグレーション完了を示すコンフィグレーションアクノリッジ信号ＣＦＧ＿ＡＣＫを受信する。次に、データコントロール回路２１１は、コネクションユニット２１５にデータリクエスト信号ＲＥＱを送信する。すると、データコントロール回路２１１は、コネクションユニット２１５より入力データストリームＤｉ及びデータアクノリッジ信号ＡＣＫを受信する。次に、データコントロール回路２１１は、他のロジックブロックユニット２１０からデータリクエスト信号ＲＥＱを受信する。すると、データコントロール回路２１１は、ロジックブロックユニット２１０の論理演算完了後、出力データストリームＤｏ及びデータアクノリッジ信号ＡＣＫを送信する。以降、上記の処理を繰り返す。
【００２７】
コンフィグレーションルーティンユニット２１７は、コンフィグレーション情報ＣＦのネットワーク配線に接続され、複数の再構成ユニット２１４へのコンフィグレーション情報ＣＦの出力を制御する。データルーティンユニット２１６は、複数の再構成ユニット２１４間に接続され、複数の再構成ユニット２１４のデータＤｉ，Ｄｏ、データリクエスト信号ＲＥＱ及びデータアクノリッジ信号ＡＣＫの入出力を制御する。コネクションユニット２１５も、複数の再構成ユニット２１４間に接続され、複数の再構成ユニット２１４のデータＤｉ，Ｄｏ、データリクエスト信号ＲＥＱ及びデータアクノリッジ信号ＡＣＫの入出力を制御する。
【００２８】
各再構成ユニット２１４間は、データリクエスト信号ＲＥＱ及びデータアクノリッジ信号ＡＣＫによる非同期通信を行い、各再構成ユニット２１４の独立性を確保する。再構成ユニット２１４間には、コネクションユニット２１５及びデータルーティンユニット２１６を設け、各再構成ユニット２１４間の通信を非同期かつプログラマブルに行えるよう構成する。また、データストリームＤｉ，Ｄｏ及びコンフィグレーション情報ＣＦの双方のデータフローに対して、それぞれデータルーティンユニット２１６及びコンフィグレーションルーティンユニット２１７を設け、データストリームＤｉ，Ｄｏ及びコンフィグレーション情報ＣＦを別系統で流れるように構成する。
【００２９】
再構成ユニット２１４は、コネクションユニット２１５で結合される。コネクションユニット２１５は、データフロールーティンユニット２１６で結合されている。また、各再構成ユニット２１４のコンフィグレーション情報ＣＦは、コンフィグレーションルーティンユニット２１７を介して供給される。
【００３０】
ロジックブロックユニット２１０に含まれるロジックブロック２０９の数は、任意に設定されるが、最もシンプルなのは、数百のロジックブロック２０９を同一の数でくくり、同一サイズのロジックブロックユニット２１０を構成するものである。必要に応じて、複数のサイズのロジックブロックユニット２１０を設けることも可能である。また、ロジックブロックユニット２１０のサイズを可変とすることも可能である。
【００３１】
図４は、コネクションユニット２１５の構成例を示す図である。コネクションユニット２１５は、再構成ユニット２１４及びデータルーティンユニット２１６に接続される。コネクションユニット２１５は、再構成ユニット２１４からのデータＤｉ，Ｄｏ、データリクエスト信号ＲＥＱ及びデータアクノリッジ信号ＡＣＫを、十字型のスイッチ複合回路４０１にて結合する。スイッチ複合回路４０１は、データＤｉ，Ｄｏのバス幅分のアレイ、及び、データリクエスト信号ＲＥＱ及びデータアクノリッジ信号ＡＣＫのアレイで構成される。ただし、スイッチ複合回路４０１は、プログラマブルロジックデバイス１０１の構成要件によって、適宜バス幅を減少させることもできる。スイッチ複合回路４０１は、予め設定されているか、あるいは、隣接の再構成ユニット２１４のコンフィグレーションコントロール回路２１３により制御される。
【００３２】
図５は、データルーティンユニット２１６の構成例を示す図である。データルーティンユニット２１６は、上下左右のコネクションユニット２１５からのデータＤｉ，Ｄｏ、データリクエスト信号ＲＥＱ及びデータアクノリッジ信号ＡＣＫを、６つのスイッチ５０１で構成されたスイッチ複合回路により結合する。これらのスイッチ複合回路は、データＤｉ，Ｄｏのバス幅分のアレイ、及び、データリクエスト信号ＲＥＱ及びデータアクノリッジ信号ＡＣＫのアレイで構成される。ただし、スイッチ複合回路は、プログラマブルロジックデバイス１０１の構成要件と回路リソースの許容度の兼ね合いで、バス内の線の入れ替えスイッチを適宜付加することもできる。理想的には、すべてのバスの信号線が入れ替え可能なように構成することも可能であるが、データルーティンユニット２１６が巨大になるというデメリットもあり、構成要件に応じた最適構成をとるのが望ましい。それぞれのスイッチ５０１は、予め設定されているか、あるいは、コネクションユニット２１５を通じ、隣接の再構成ユニット２１４のコンフィグレーションコントロール回路２１３により制御される。なお、データルーティンユニット２１６は図４の回路で構成してもよく、コネクションユニット２１５は図５の回路で構成してもよい。
【００３３】
図６は、コンフィグレーションコントロール回路２１３の構成例を示す図である。コンフィグレーションコントロール回路２１３は、第１のコンフィグレーションメモリ（メモリバンク）８０１、第２のコンフィグレーションメモリ（メモリバンク）８０２、及びスイッチ８０３〜８０６を有する。スイッチ８０３をオンすることにより、第１のコンフィグレーションメモリ８０１は、コンフィグレーション情報コントロール回路２１２からのコンフィグレーション情報ＣＦを書き込むことができる。また、スイッチ８０４をオンすることにより、第２のコンフィグレーションメモリ８０２は、コンフィグレーション情報コントロール回路２１２からのコンフィグレーション情報ＣＦを書き込むことができる。また、スイッチ８０５をオンすることにより、第１のコンフィグレーションメモリ８０１から読み出したコンフィグレーション情報ＣＦ又はそれに応じた制御情報をロジックブロックユニット２１０に出力することができる。また、スイッチ８０６をオンすることにより、第２のコンフィグレーションメモリ８０２から読み出したコンフィグレーション情報ＣＦ又はそれに応じた制御情報をロジックブロックユニット２１０に出力することができる。
【００３４】
図９は、プログラマブルロジックデバイス１０１の処理例を示すフローチャートである。ステップＳ９０１では、データコントロール回路２１１は、コンフィグレーションリクエスト信号ＣＦＧ＿ＲＥＱを出力する。
【００３５】
次に、ステップＳ９０２では、コンフィグレーションコントロール回路２１３は、メモリ切り替えのため、スイッチ８０３をオンにし、スイッチ８０４をオフにし、コンフィグレーション情報ＣＦを第１のコンフィグレーションメモリ８０１に書き込む。次に、コンフィグレーションコントロール回路２１３は、スイッチ８０３及び８０６をオフにし、スイッチ８０５をオンにし、第１のコンフィグレーションメモリ８０１内のコンフィグレーション情報ＣＦをロジックブロックユニット２１０に出力する。
【００３６】
次に、ステップＳ９０３では、コンフィグレーションコントロール回路２１３は、コンフィグレーション終了信号ＣＦＧ＿ＥＮＤをコンフィグレーション情報コントロール回路２１２に出力する。
【００３７】
次に、ステップＳ９０４では、コンフィグレーション情報コントロール回路２１２は、コンフィグレーションアクノリッジ信号ＣＦＧ＿ＡＣＫをデータコントロール回路２１１に出力する。
【００３８】
次に、ステップＳ９０５では、データコントロール回路２１１は、データリクエスト信号ＲＥＱを出力する。
【００３９】
次に、ステップＳ９０６及びＳ９０７では、データコントロール回路２１１は、入力データストリームＤｉ及びデータアクノリッジ信号ＡＣＫを入力し、入力データストリームＤｉをロジックブロックユニット２１０に出力する。
【００４０】
次に、ステップＳ９０８で、データ処理を完了する。その後、ステップＳ９０１に戻り、上記と同様の処理を繰り返す。その詳細は、後に、図８（Ａ）及び（Ｂ）を参照しながら説明する。
【００４１】
図７（Ａ）は、図２のプログラマブルロジックデバイス１０１の一部の回路の構成例を示す図である。再構成ユニット２１４内のデータコントロール回路２１１は、コネクションユニット２１５を介して他の再構成ユニット２１４内のデータコントロール回路２１１に対して、データＤｉ，Ｄｏ、データリクエスト信号ＲＥＱ及びデータアクノリッジ信号ＡＣＫを入出力する。
【００４２】
図７（Ｂ）は、２相型非同期通信のタイミングチャートであり、データリクエスト信号ＲＥＱ及びデータアクノリッジ信号ＡＣＫの立ち上がりエッジ及び立ち下がりエッジに同期してデータＤｉ，Ｄｏの入出力を行うダブルエッジ方式を示す。一の再構成ユニット２１４内のデータコントロール回路２１１は、データリクエスト信号ＲＥＱの立ち上がりエッジ又は立ち下がりエッジを入力すると、出力データストリームＤｏと共に立ち上がりエッジ又は立ち下がりエッジのデータアクノリッジ信号ＡＣＫを出力する。また、他の再構成ユニット２１４内のデータコントロール回路２１１は、データリクエスト信号ＲＥＱの立ち上がりエッジ又は立ち下がりエッジを出力すると、それに応答して入力データストリームＤｉと共に立ち上がりエッジ又は立ち下がりエッジのデータアクノリッジ信号ＡＣＫを入力する。
【００４３】
図７（Ｃ）は、４相型非同期通信のタイミングチャートであり、データリクエスト信号ＲＥＱ及びデータアクノリッジ信号ＡＣＫの立ち上がりエッジのみに同期してデータＤｉ，Ｄｏの入出力を行うシングルエッジ方式を示す。一の再構成ユニット２１４内のデータコントロール回路２１１は、データリクエスト信号ＲＥＱの立ち上がりエッジを入力すると、出力データストリームＤｏと共に立ち上がりエッジのデータアクノリッジ信号ＡＣＫを出力する。また、他の再構成ユニット２１４内のデータコントロール回路２１１は、データリクエスト信号ＲＥＱの立ち上がりエッジを出力すると、それに応答して入力データストリームＤｉと共に立ち上がりエッジのデータアクノリッジ信号ＡＣＫを入力する。
【００４４】
図７（Ａ）〜（Ｃ）は、コネクションユニット２１５とデータコントロール回路２１１の間の信号を例に示すが、データコントロール回路２１１及びコンフィグレーション情報コントロール回路２１２間、複数のコンフィグレーションルーティンユニット２１７間、コネクションユニット２１５及びデータルーティンユニット２１６間も同様である。図７（Ｂ）の２相型と図７（Ｃ）の４相型は、適宜、どちらかのタイミング形式を使用してもよいし、また、このタイミング図に限定されるものでもない。
【００４５】
図８（Ａ）は、コンフィグレーション固定モードのプログラマブルロジックデバイス１０１の入力例を示す図である。まず、コンフィグレーション情報コントロール回路２１２は、データコントロール回路２１１からコンフィグレーションリクエスト信号ＣＦＧ＿ＲＥＱを入力すると、コンフィグレーション情報ＣＦを入力してコンフィグレーションコントロール回路２１３に出力する。コンフィグレーションコントロール回路２１３は、コンフィグレーション情報ＣＦを入力し、スイッチ８０３をオンにし、第１のコンフィグレーションメモリ８０１にコンフィグレーション情報ＣＦを書き込む。次に、コンフィグレーションコントロール回路２１３は、スイッチ８０３及び８０６をオフにし、スイッチ８０５をオンにし、第１のコンフィグレーションメモリ８０１に記憶されているコンフィグレーション情報ＣＦをロジックブロックユニット２１０に出力し、コンフィグレーション情報ＣＦに応じてロジックブロックユニット２１０内の複数のロジックブロック２０９の演算構成と接続を制御する。これにより、複数のロジックブロック２０９の演算構成と接続状態は、コンフィグレーション情報ＣＦに応じて設定され、固定される。
【００４６】
その後、コンフィグレーションコントロール回路２１３は、コンフィグレーション終了信号ＣＦＧ＿ＥＮＤをコンフィグレーション情報コントロール回路２１２に出力する。すると、コンフィグレーション情報コントロール回路２１２は、データコントロール回路２１１にコンフィグレーションアクノリッジ信号ＣＦＧ＿ＡＣＫを出力する。
【００４７】
すると、データコントロール回路２１１は、データリクエスト信号ＲＥＱを出力し、それに応答してデータアクノリッジ信号ＡＣＫ及び第１の入力データストリームＤｉ１を入力し、第１の入力データストリームＤｉ１をロジックブロックユニット２１０に出力する。その後、ロジックブロックユニット２１０は、第１の入力データストリームＤｉ１の論理演算結果を出力する。
【００４８】
次に、データコントロール回路２１１は、データリクエスト信号ＲＥＱを出力し、それに応答してデータアクノリッジ信号ＡＣＫ及び第２の入力データストリームＤｉ２を入力し、第２の入力データストリームＤｉ２をロジックブロックユニット２１０に出力する。その後、ロジックブロックユニット２１０は、第２の入力データストリームＤｉ２の論理演算結果を出力する。その後、同様に、データコントロール回路２１１は、シーケンシャルに、入力データストリームをロジックブロックユニット２１０に出力する。
【００４９】
以上のように、コンフィグレーション固定モードは、部分再構成を行わないモードである。アプリケーションによっては、ロジックブロックユニット２１０の再構成を頻繁に行わない場合もある。この場合、モード切り替えにより、コンフィグレーション固定モードに設定することにより、制御信号によりコンフィグレーション情報ＣＦをホールド状態にする。これにより、以降の入力データストリームＤｉ１及びＤｉ２等が連続的に流れるようにすることができる。このような構成をとることで、コンフィグレーション固定モードでのパフォーマンスを最大に高めることが可能である。
【００５０】
図８（Ｂ）は、コンフィグレーション可変モードのプログラマブルロジックデバイス１０１の入力例を示す図である。まず、コンフィグレーション情報コントロール回路２１２は、データコントロール回路２１１からコンフィグレーションリクエスト信号ＣＦＧ＿ＲＥＱを入力すると、第１のコンフィグレーション情報ＣＦ１を入力してコンフィグレーションコントロール回路２１３に出力する。コンフィグレーションコントロール回路２１３は、第１のコンフィグレーション情報ＣＦ１を入力し、スイッチ８０３をオンにし、第１のコンフィグレーションメモリ８０１に第１のコンフィグレーション情報ＣＦ１を書き込む。次に、コンフィグレーションコントロール回路２１３は、スイッチ８０３及び８０６をオフにし、スイッチ８０５をオンにし、第１のコンフィグレーションメモリ８０１に記憶されている第１のコンフィグレーション情報ＣＦ１をロジックブロックユニット２１０に出力し、第１のコンフィグレーション情報ＣＦ１に応じてロジックブロックユニット２１０内の複数のロジックブロック２０９の演算構成と接続を制御する。
【００５１】
その後、コンフィグレーションコントロール回路２１３は、コンフィグレーション終了信号ＣＦＧ＿ＥＮＤをコンフィグレーション情報コントロール回路２１２に出力する。すると、コンフィグレーション情報コントロール回路２１２は、データコントロール回路２１１にコンフィグレーションアクノリッジ信号ＣＦＧ＿ＡＣＫを出力する。
【００５２】
すると、データコントロール回路２１１は、データリクエスト信号ＲＥＱを出力し、それに応答してデータアクノリッジ信号ＡＣＫ及び第１の入力データストリームＤｉ１を入力し、第１の入力データストリームＤｉ１をロジックブロックユニット２１０に出力する。その後、ロジックブロックユニット２１０は、第１の入力データストリームＤｉ１の論理演算結果を出力する。
【００５３】
コンフィグレーション情報コントロール回路２１２は、データコントロール回路２１１が第１の入力データストリームＤｉ１をロジックブロックユニット２１０に出力している間に、データコントロール回路２１１からコンフィグレーションリクエスト信号ＣＦＧ＿ＲＥＱを入力し、第２のコンフィグレーション情報ＣＦ２を入力してコンフィグレーションコントロール回路２１３に出力する。コンフィグレーションコントロール回路２１３は、第２のコンフィグレーション情報ＣＦ２を入力し、スイッチ８０３及び８０６をオフにし、スイッチ８０４及び８０５をオンにし、第２のコンフィグレーションメモリ８０２に第２のコンフィグレーション情報ＣＦ２を書き込む。その後、データコントロール回路２１１は、ロジックブロックユニット２１０への第１の入力データストリームＤｉ１の出力を完了する。次に、ロジックブロックユニット２１０は、第１の入力データストリームＤｉ１の論理演算が終了すると、論理演算終了信号をデータコントロール回路２１１に出力する。すると、データコントロール回路２１１及びコンフィグレーションコントロール回路２１３は、スイッチ８０３及び８０６をオンにし、スイッチ８０４及び８０５をオフにし、第２のコンフィグレーションメモリ８０２に記憶されている第２のコンフィグレーション情報ＣＦ２をロジックブロックユニット２１０に出力し、第２のコンフィグレーション情報ＣＦ２に応じてロジックブロックユニット２１０内の複数のロジックブロック２０９の演算構成と接続を制御する。
【００５４】
その後、コンフィグレーションコントロール回路２１３は、コンフィグレーション終了信号ＣＦＧ＿ＥＮＤをコンフィグレーション情報コントロール回路２１２に出力する。すると、コンフィグレーション情報コントロール回路２１２は、データコントロール回路２１１にコンフィグレーションアクノリッジ信号ＣＦＧ＿ＡＣＫを出力する。
【００５５】
すると、データコントロール回路２１１は、データリクエスト信号ＲＥＱを出力し、それに応答してデータアクノリッジ信号ＡＣＫ及び第２の入力データストリームＤｉ２を入力し、第２の入力データストリームＤｉ２をロジックブロックユニット２１０に出力する。その後、ロジックブロックユニット２１０は、第２の入力データストリームＤｉ２の論理演算結果を出力する。
【００５６】
コンフィグレーション情報コントロール回路２１２は、データコントロール回路２１１が第２の入力データストリームＤｉ２をロジックブロックユニット２１０に出力している間に、データコントロール回路２１１からコンフィグレーションリクエスト信号ＣＦＧ＿ＲＥＱを入力し、第３のコンフィグレーション情報ＣＦ３を入力してコンフィグレーションコントロール回路２１３に出力する。コンフィグレーションコントロール回路２１３は、第３のコンフィグレーション情報ＣＦ３を入力し、スイッチ８０４及び８０５をオフにし、スイッチ８０３及び８０６をオンにし、第１のコンフィグレーションメモリ８０１に第３のコンフィグレーション情報ＣＦ３を書き込む。その後、データコントロール回路２１１は、ロジックブロックユニット２１０への第２の入力データストリームＤｉ２の出力を完了する。次に、ロジックブロックユニット２１０は、第２の入力データストリームＤｉ２の論理演算が終了すると、論理演算終了信号をデータコントロール回路２１１に出力する。すると、データコントロール回路２１１及びコンフィグレーションコントロール回路２１３は、スイッチ８０４及び８０５をオンにし、スイッチ８０３及び８０６をオフにし、第１のコンフィグレーションメモリ８０１に記憶されている第３のコンフィグレーション情報ＣＦ３をロジックブロックユニット２１０に出力し、第３のコンフィグレーション情報ＣＦ３に応じてロジックブロックユニット２１０内の複数のロジックブロック２０９の演算構成と接続を制御する。
【００５７】
以後、同様の処理を繰り返す。コンフィグレーション情報ＣＦ１〜ＣＦ３等は、その順番で、第１のコンフィグレーションメモリ８０１及び第２のコンフィグレーションメモリ８０２に交互に記憶される。
【００５８】
コンフィグレーション可変モードでは、第２のコンフィグレーション情報ＣＦ２は、その一つ前の第１の入力データストリームＤｉ１の処理中に入力される。具体的には、データコントロール回路２１１が第１の入力データストリームＤｉ１をロジックブロックユニット２１０に出力している間に、コンフィグレーションコントロール回路２１３が第２のコンフィグレーション情報ＣＦ２を入力して記憶するので、第２のコンフィグレーション情報ＣＦ２に基づく複数のロジックブロック２０９の演算構成と接続を高速に、かつ、ダイナミックに変更することができ、論理演算結果を高速に得ることができる。
【００５９】
本実施形態によれば、ロジックブロックユニット２１０の再構成は、自動的に、かつ、略、入力データストリームＤｉの転送速度で行われるため、以下の効果が得られる。
【００６０】
第１に、構成変更に必要であった煩雑な手順が不要になり、高速な構成変更が可能になる。
第２に、入力データストリームＤｉを入力している間にコンフィグレーション情報ＣＦによる構成変更が行われるので、ダイナミックな構成変更を行うことができる。
第３に、構成変更はすべて再構成ユニット２１４内のコントロール回路で完結するので、再構成ユニット２１４の外部のコントロール装置やコントローラが不要となる。
第４に、入力データストリームＤｉとコンフィグレーション情報ＣＦが常に流れた状態で稼働することで、著しく長いコンフィグレーション情報ＣＦや、著しく短い入力データストリームＤｉの場合を除き、データフローが停止することはない。
第５に、各再構成ユニット２１４が自己完結型であるので、再構成ユニット２１４の大きさを小さくしても、上記の第１〜第４の効果を得ることができる。
【００６１】
上記の第１及び第４の効果は処理速度の向上、第２の効果はシステム全体のパフォーマンス向上、第３の効果はコストダウン、第５の効果は総合的なパフォーマンスの向上につながるものである。
【００６２】
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００６３】
１０１  プログラマブルロジックデバイス
２０９  ロジックブロック
２１０  ロジックブロックユニット
２１１  データコントロール回路
２１２  コンフィグレーション情報コントロール回路
２１３  コンフィグレーションコントロール回路
２１４  再構成ユニット
２１５  コネクションユニット
２１６  データルーティンユニット
２１７  コンフィグレーションルーティンユニット
３０１  ルックアップテーブル
３０２  フリップフロップ
３０３  セレクタ
８０１  第１のコンフィグレーションメモリ
８０２  第２のコンフィグレーションメモリ
８０３〜８０６  スイッチ
【図１】
2013030906.tif 000003
【図２】
2013030906.tif 000004
【図３】
2013030906.tif 000005
【図４】
2013030906.tif 000006
【図５】
2013030906.tif 000007
【図６】
2013030906.tif 000008
【図７】
2013030906.tif 000009
【図８】
2013030906.tif 000010
【図９】
2013030906.tif 000011