(57)【要約】  各々の演算ブロックの演算論理が可変な複数の演算ブロック（１３）と、それら複数の演算ブロックを接続する経路を構成するためのルーチングマトリクス（１５）とを有する再構成可能な装置を提供する。演算ブロック（１３）は、コンフィグレーションデータ（１７）により論理が決まる論理演算ユニット（２１）と、その論理演算ユニットの演算結果を格納するための格納ユニット（４０）とを含む。格納ユニット（４０）は、複数の格納エレメント（３１ｒ）と、コンフィグレーションデータ（１７）に基づき複数の格納エレメント（３１ｒ）の何れかを選択して論理演算ユニット（２１）の出力を格納するための入力手段（３２）と、複数の格納エレメント（３１ｒ）とルーチングマトリクス（１５）とを接続するための出力手段（３３）とを含む。【特許請求の範囲】
【請求項１】
各々の演算ブロックの演算論理が可変な複数の演算ブロックと、
それら複数の演算ブロックを接続する経路を構成するためのルーチングマトリクスとを有する、再構成可能な装置であって、
前記複数の演算ブロックに含まれる演算ブロックは、コンフィグレーションデータにより論理が決まる論理演算ユニットと、
その論理演算ユニットの演算結果を格納するための格納ユニットとを含み、
前記格納ユニットは、複数の格納エレメントと、
前記コンフィグレーションデータに基づき前記複数の格納エレメントの何れかを選択して前記論理演算ユニットの出力を格納するための入力手段と、
前記複数の格納エレメントと前記ルーチングマトリクスとを接続するための出力手段とを含む、装置。
【請求項２】
請求項１において、複数セットのコンフィグレーションデータを記憶したコンフィグレーションメモリから前記演算ブロックに対し、前記複数セットのコンフィグレーションデータのいずれかを供給するためのコンフィグレーションデータ供給ユニットと、
前記演算ブロックに対して次に供給されるネクストコンフィグレーションデータを決定するためのコンフィグレーション制御ユニットとを、さらに有する、装置。
【請求項３】
請求項２において、前記コンフィグレーション制御ユニットは、前記演算ブロックに含まれ、その演算ブロックのコンフィグレーションを制御する、装置。
【請求項４】
請求項２において、前記コンフィグレーション制御ユニットは、前記複数の演算ブロックのコンフィグレーションを制御する、装置。
【請求項５】
請求項１において、前記格納ユニットの前記出力手段は、前記コンフィグレーションデータに基づき前記複数の格納エレメントの何れかを選択して前記ルーチングマトリクスと接続する、装置。
【請求項６】
請求項１において、前記演算ブロックは、前記論理演算ユニットの出力を前記格納ユニットとは別に前記ルーチングマトリクスに接続するためのダイレクト出力手段を含む、装置。
【請求項７】
請求項１において、前記演算ブロックは、前記コンフィグレーションデータに基づき、前記論理演算ユニットの出力および前記複数の格納エレメントの何れかを選択して前記ルーチングマトリクスと接続するための出力選択手段を含む、装置。
【請求項８】
請求項１において、前記格納ユニットの前記入力手段および／または前記出力手段を制御する格納制御信号を生成する格納制御ユニットをさらに有し、この格納制御ユニットは、前記ルーチングマトリクスから供給される入力データおよび／または前記コンフィグレーションデータの中から、前記コンフィグレーションデータに基づき、前記格納制御信号を生成する手段を含む、装置。
【請求項９】
請求項８において、前記格納制御ユニットは、前記演算ブロックに含まれ、その演算ブロックの前記格納ユニットを制御する、装置。
【請求項１０】
請求項８において、前記格納制御ユニットは、前記複数の演算ブロックに含まれる複数の前記格納ユニットを制御する、装置。
【請求項１１】
請求項１に記載の再構成可能な装置と、
前記再構成可能な装置により処理されるデータを入出力するためのインターフェイスとを有するデータ処理装置。
【請求項１２】
再構成可能な装置の制御システムであって、
前記装置は、
各々の演算ブロックの演算論理が可変な複数の演算ブロックと、
それら複数の演算ブロックを接続する経路を構成するためのルーチングマトリクスとを有し、
前記複数の演算ブロックに含まれる演算ブロックは、コンフィグレーションデータにより論理が決まる論理演算ユニットと、
その論理演算ユニットの演算結果を格納する格納ユニットとを含み、
前記格納ユニットは、複数の格納エレメントと、前記コンフィグレーションデータに基づき前記複数の格納エレメントの何れかを選択して前記論理演算ユニットの出力を格納する入力手段と、前記複数の格納エレメントと前記ルーチングマトリクスとを接続する出力手段とを含み、
当該制御システムは、
サイクル毎の回路を前記複数の演算ブロックにマッピングする際に、前記サイクル毎の回路に含まれる入力および／または出力のための異なるレジスタを、前記コンフィグレーションデータにより、前記複数の格納エレメントに含まれる異なる格納エレメントに割り当てることを含む、制御システム。
【請求項１３】
再構成可能な装置の制御方法であって、
前記装置は、
各々の演算ブロックの演算論理が可変な複数の演算ブロックと、
それら複数の演算ブロックを接続する経路を構成するためのルーチングマトリクスとを有し、
前記複数の演算ブロックに含まれる演算ブロックは、コンフィグレーションデータにより論理が決まる論理演算ユニットと、
その論理演算ユニットの演算結果を格納する格納ユニットとを含み、
前記格納ユニットは、複数の格納エレメントと、前記コンフィグレーションデータに基づき前記複数の格納エレメントの何れかを選択して前記論理演算ユニットの出力を格納する入力手段と、前記複数の格納エレメントと前記ルーチングマトリクスとを接続する出力手段とを含み、
当該制御方法は、
サイクル毎の回路を前記複数の演算ブロックにマッピングする際に、前記サイクル毎の回路に含まれる入力および／または出力のための異なるレジスタを、前記コンフィグレーションデータに基づき、前記複数の格納エレメントに含まれる異なる格納エレメントに割り当てることを含む、制御方法。
【請求項１４】
請求項１３において、前記装置は、複数セットのコンフィグレーションデータを記憶したコンフィグレーションメモリから、前記演算ブロックに対し、前記複数セットのコンフィグレーションデータのいずれかを供給するためのコンフィグレーションデータ供給ユニットを含み、
当該制御方法は、前記演算ブロックに対して次に供給されるネクストコンフィグレーションデータを決定することを含む、制御方法。
【請求項１５】
請求項１４において、前記ネクストコンフィグレーションデータを決定することは、前記演算ブロックの単位で決定することを含む、制御方法。
【請求項１６】
請求項１４において、前記ネクストコンフィグレーションデータを決定することは、前記複数の演算ブロックの単位で決定することを含む、制御方法。
【請求項１７】
再構成可能な装置のためのコンフィグレーションデータを生成するためのシステムであって、
前記装置は、
各々の演算ブロックの演算論理が可変な複数の演算ブロックと、
それら複数の演算ブロックを接続する経路を構成するためのルーチングマトリクスとを有し、
前記複数の演算ブロックに含まれる演算ブロックは、前記コンフィグレーションデータにより論理が決まる論理演算ユニットと、
その論理演算ユニットの演算結果を格納する格納ユニットとを含み、
前記格納ユニットは、複数の格納エレメントと、前記コンフィグレーションデータに基づき前記複数の格納エレメントの何れかを選択して前記論理演算ユニットの出力を格納する入力手段と、前記複数の格納エレメントと前記ルーチングマトリクスとを接続する出力手段とを含み、
当該システムは、
ユーザー回路のサイクル毎のＲＴＬ記述を生成する手段と、
前記サイクル毎のＲＴＬ記述をサイクル毎に論理合成する手段と、
論理合成されたサイクル毎の回路を前記複数の演算ブロックにマッピングする際に、前記サイクル毎の回路に含まれる入力および／または出力のための異なるレジスタを、前記複数の格納エレメントに含まれる異なる格納エレメントに割り当てるための前記コンフィグレーションデータを生成する手段とを有する、システム。
【請求項１８】
再構成可能な装置のためのコンフィグレーションデータを生成する方法であって、
前記装置は、
各々の演算ブロックの演算論理が可変な複数の演算ブロックと、
それら複数の演算ブロックを接続する経路を構成するためのルーチングマトリクスとを有し、
前記複数の演算ブロックに含まれる演算ブロックは、前記コンフィグレーションデータにより論理が決まる論理演算ユニットと、
その論理演算ユニットの演算結果を格納する格納ユニットとを含み、
前記格納ユニットは、複数の格納エレメントと、前記コンフィグレーションデータに基づき前記複数の格納エレメントの何れかを選択して前記論理演算ユニットの出力を格納する入力手段と、前記複数の格納エレメントと前記ルーチングマトリクスとを接続する出力手段とを含み、
当該方法は、
ユーザー回路のサイクル毎のＲＴＬ記述を生成することと、
前記サイクル毎のＲＴＬ記述をサイクル毎に論理合成することと、
論理合成されたサイクル毎の回路を前記複数の演算ブロックにマッピングする際に、前記サイクル毎の回路に含まれる入力および／または出力のための異なるレジスタを、前記複数の格納エレメントに含まれる異なる格納エレメントに割り当てるための前記コンフィグレーションデータを生成することとを含む、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、再構成可能な論理回路を含む装置に関するものである。
【背景技術】
【０００２】
プログラマブル論理装置の形態は、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）と称されるシステムである。ＦＰＧＡは、コンフィグラブル、すなわち、ユーザが所望する論理関数をプログラミングする（書き込む）ことができる複数の論理ブロックを有する。【０００３】
本願の出願人が出願した国際公開ＷＯ２００５／０２２３８０号公報では、再構成可能な論理回路により構成されるハードウェア空間を動的に最適化することが開示されている。この再構成可能なシステムでは、使用しない、あるいはスタンバイ状態になる機能へのハードウェア資源の割り当てを大幅に絞って、本来集中すべき情報処理にハードウェア資源を集中的に割り当てできることが記載されている。ハードウェア空間を動的に最適化することにより、従来の専用ＬＳＩのように、ハードウェア回路をすべて実装する必要がなくなる。このため、少ないハードウェア資源で高い実行効率を得ることができる。【０００４】
汎用のプロセッサにおいて処理能力を向上する公知の方法の１つは、クロックの周波数を上げることである。しかしながら、システム全体のクロック周波数を上げることは、電力消費などの点でシステムのパフォーマンスの向上のために好ましくないことが多い。代わりに、処理能力が不足するユニット（あるいは機能的なハードウェア資源の集団）のみのクロック周波数を上げることを提案できる。このケースでは、クロック周波数を上げたユニットと、他のユニット、たとえば、入出力回路とのクロック周波数の差を補償する回路あるいは機能の設置が要求される。また、処理能力を向上する要求には限界がない。既に高速で処理を行うようにクロック周波数の高いシステムにおいて能力が不足する場合は、いっそう周波数の高いクロックでシステムを駆動することが求められる。その結果、膨大な電力消費と膨大な発熱との問題を解決する必要が生ずる。
【発明の開示】
【０００５】
本発明の目的の１つは、再構成可能な論理回路において、論理の実装効率の向上を図れるようにすることである。本発明の他の目的の１つは、再構成可能な回路を、他の回路の処理状況に適した論理に再構成しやすいようにすることである。本発明のさらに異なる目的の１つは、論理の切り替えにより、ハードウェア資源を有効に活用できるようにすることである。
【０００６】
本発明の一態様は、各々の演算ブロックの演算論理を変更可能な複数の演算ブロックと、それら複数の演算ブロックを接続する経路を構成するためのルーチングマトリクスとを有する装置である。複数の演算ブロックに含まれる演算ブロックは、コンフィグレーションデータにより論理が決まる論理演算ユニットと、その論理演算ユニットの演算結果を格納するための格納ユニットとを含む。さらに、格納ユニットは、複数の格納エレメントと、コンフィグレーションデータに基づき複数の格納エレメントの何れかを選択して論理演算ユニットの出力を格納するための入力手段と、複数の格納エレメントとルーチングマトリクスとを接続するための出力手段とを含む。
【０００７】
この再構成可能な装置に含まれる演算ブロックは、その演算ブロックに含まれる論理演算ユニットの出力数よりも多い数の格納エレメントを備えており、そのいずれかに論理演算ユニットの出力を格納可能にする。さらに、論理演算ユニットの論理を制御する機能を備えたコンフィグレーションデータに基づいて、論理演算ユニットの出力を格納する格納エレメントの選択を可能とする。したがって、あるサイクルにおける論理演算ユニットの出力は、コンフィグレーションデータに基づいた格納エレメントに格納でき、次のサイクルにおいて、論理演算ユニットは次の論理演算を行なうことができる。演算ブロックの出力としては、後続のサイクルのいずれかにおいて、その後続のサイクルの論理演算ユニットの論理に関わらず、格納エレメントに格納されている演算結果を出力することができる。コンフィグレーションデータに基づき格納エレメントが選択されることは、コンフィグレーションデータ自体により指定されることと、コンフィグレーションデータにより選択された他の信号に指定されることを含む。
【０００８】
この再構成可能な装置は、複数セットのコンフィグレーションデータを記憶したコンフィグレーションメモリから演算ブロックに対し、複数セットのコンフィグレーションデータのいずれかを供給するためのコンフィグレーションデータ供給ユニットと、演算ブロックに対して次に供給されるネクストコンフィグレーションデータを決定するためのコンフィグレーション制御ユニットとをさらに有することが望ましい。この再構成可能な装置は、コンフィグレーション制御ユニットにより、自律的にシステムを再構成して種々のアプリケーションを実行する用途に適している。したがって、小規模デバイスで大規模なユーザ回路を実現する用途に適している。
【０００９】
この再構成可能な装置は、コンフィグレーションデータ単位での演算ブロックの利用効率を向上できる。サイクル単位でコンフィグレーションデータを変えて論理を再構成することにより処理速度の向上が図れる。したがって、演算ブロックのクロック周波数を上げるという方法に代わり、あるいはその方法と共に、論理を再構成するという方法により、再構成可能な装置の処理能力の向上という要望に対応できる。
【００１０】
コンフィグレーション制御ユニットには、演算ブロック単位で制御するためのユニットが含まれる。また、コンフィグレーション制御ユニットには、複数の演算ブロックからなる区画あるいはグループ単位で、それら複数の演算ブロックに含まれる演算ブロックの論理を制御するためのユニットが含まれる。
【００１１】
コンフィグレーション制御ユニットが各々の演算ブロックに含まれ、その演算ブロックのコンフィグレーションを制御することにより、演算ブロック単位、すなわち、演算ブロックに対応したコンフィグレーションデータ単位で、演算ブロックの構成を制御できる。このため種々の構成をフレキシブルに実現できる。コンフィグレーション制御ユニットの構成に要するハードウェア資源が増加する可能性がある。また、隣接する演算ブロックとのインターフェイスの調整をコンフィグレーションデータ毎に解決することを要求される可能性がある。このことは、コンフィグレーションデータの生成に多少時間を要する可能性があるが、コンフィグレーションの生成段階で解決できる。
【００１２】
コンフィグレーション制御ユニットが、複数の演算ブロックのコンフィグレーションを制御することにより、コンフィグレーション制御ユニットに要するハードウェア資源を縮小できる。また、コンフィグレーションデータの縮小に効果がある可能性がある。さらに、この制御方法および構成は、演算ブロックを個別に再構成することにも適用できるが、複数の演算ブロックの構成を一括して再構成することに適している。
【００１３】
格納ユニットの出力手段は、複数の格納エレメントが独立してルーチングマトリクスからアクセスできるものを含む。格納エレメントの参照先、すなわち、格納エレメントに格納されたデータを必要とする演算ブロックから、格納エレメントを選択できる。このため、格納エレメントに格納されたデータの利用効率は高い。
【００１４】
格納ユニットの出力手段は、コンフィグレーションデータに基づき（連動して）複数の格納エレメントの何れかを選択してルーチングマトリクスと接続するものを含む。多くのアプリケーションでは、格納エレメントに格納された出力の１つまたは限られた数が自己または他の演算ブロックの入力として有用であるケースが多い。したがって、格納エレメントの利用効率と、格納エレメントを参照するための配線資源の利用効率との向上が図れる。
【００１５】
また、論理演算ユニットで演算された出力が、同サイクルにおける他の演算ブロックの入力として有用であるケースも多い。したがって、演算ブロックは、論理演算ユニットの出力を格納ユニットとは別にルーチングマトリクスに接続するダイレクト出力手段を備えていることが望ましい。演算ブロックは、コンフィグレーションデータに基づき、論理演算ユニットの出力および複数の格納エレメントの何れかを選択してルーチングマトリクスと接続する出力選択手段を備えていることも有効である。
【００１６】
コンフィグレーションデータは、格納ユニットの入力手段および／または出力手段を直に制御する信号あるいは情報を含んでいても良い。また、コンフィグレーションデータおよび／または入力データを利用して、コンフィグレーションデータに基づき、格納ユニットの入力手段および／または出力手段を制御するための信号を生成しても良い。コンフィグレーションデータに含まれる格納ユニットの制御情報の削減を図ることができる。したがって、格納ユニットは、その入力手段および／または出力手段を制御する格納制御信号を生成する格納制御ユニットを含むことが望ましい。この格納制御ユニットの一形態は、ルーチングマトリクスから供給される入力データおよびコンフィグレーションデータの中から、コンフィグレーションデータに基づき、制御信号を生成するものである。複数の演算ブロックによりデータパスを構成して多ビット演算を行なう場合は、ルーチングマトリクスから供給され入力データにより格納エレメントが選択されるようにコンフィグレーションデータが格納制御ユニットを設定できることが有効である。
【００１７】
格納制御ユニットは演算ブロック単位で配置されていても良く、コンフィグレーションデータによる格納ユニットの制御のフレキシビリティは高い。格納制御ユニットは、複数の演算ブロックからなる区画あるいはグループ単位で配置されても良く、格納制御ユニットの構成に要するハードウェア資源を減らすことができる。複数の演算ブロックからなる区画あるいはグループ単位で配置された格納制御ユニットは、それらの区画あるいはグループに含まれる個々の演算ブロックを制御することが可能であると共に、それらの区画あるいはグループに含まれる複数の演算ブロックを一括で制御するのに適している。
【００１８】
本発明の他の態様は、再構成可能な装置の制御システムである。再構成可能な装置は、各々の演算ブロックの演算論理が可変な複数の演算ブロックと、それら複数の演算ブロックを接続する経路を構成するためのルーチングマトリクスとを有し、複数の演算ブロックに含まれる演算ブロックは、コンフィグレーションデータにより論理が決まる論理演算ユニットと、その論理演算ユニットの演算結果を格納する格納ユニットとを含み、格納ユニットは、複数の格納エレメントと、コンフィグレーションデータに基づき複数の格納エレメントの何れかを選択して論理演算ユニットの出力を格納する入力手段と、複数の格納エレメントとルーチングマトリクスとを接続する出力手段とを含む。当該制御システムは、サイクル毎の回路を複数の演算ブロックにマッピングする際に、サイクル毎の回路に含まれる入力および／または出力のための異なるレジスタを、コンフィグレーションデータにより、複数の格納エレメントに含まれる異なる格納エレメントに割り当てることを含む。
【００１９】
本発明のさらに他の態様は、再構成可能な装置の制御方法である。再構成可能な装置は、上記と同様の複数の演算ブロックと、ルーチングマトリクスとを有し、演算ブロックは、コンフィグレーションデータにより論理が決まる論理演算ユニットと、その論理演算ユニットの演算結果を格納する格納ユニットとを含み、格納ユニットは、複数の格納エレメントと、コンフィグレーションデータに基づき複数の格納エレメントの何れかを選択して論理演算ユニットの出力を格納する入力手段と、複数の格納エレメントとルーチングマトリクスとを接続する出力手段とを含む。当該制御方法は、サイクル毎の回路を複数の演算ブロックにマッピングする際に、サイクル毎の回路に含まれる入力および／または出力のための異なるレジスタを、コンフィグレーションデータに基づき、複数の格納エレメントに含まれる異なる格納エレメントに割り当てることを含む。
【００２０】
再構成可能な装置は、複数セットのコンフィグレーションデータを記憶したコンフィグレーションメモリから、演算ブロックに対し、複数セットのコンフィグレーションデータのいずれかを供給するためのコンフィグレーションデータ供給ユニットを含み、当該制御方法は、演算ブロックに対して次に供給されるネクストコンフィグレーションデータを決定することを含むことが望ましい。ネクストコンフィグレーションデータを決定することは、演算ブロックの単位で決定することを含む。ネクストコンフィグレーションデータを決定することは、複数の演算ブロックの単位で決定することを含む。
【００２１】
本発明のさらに他の態様は、再構成可能な装置のためのコンフィグレーションデータを生成するためのシステムである。再構成可能な装置は、上記と同様の複数の演算ブロックと、ルーチングマトリクスとを有する。当該システムは、ユーザー回路のサイクル毎のＲＴＬ記述を生成する手段と、サイクル毎のＲＴＬ記述をサイクル毎に論理合成する手段と、論理合成されたサイクル毎の回路を複数の演算ブロックにマッピングする際に、サイクル毎の回路に含まれる入力および／または出力のための異なるレジスタを、複数の格納エレメントに含まれる異なる格納エレメントに割り当てるためのコンフィグレーションデータを生成する手段とを有する。
【００２２】
本発明のさらに他の態様は、再構成可能な装置のためのコンフィグレーションデータを生成する方法である。再構成可能な装置は、上記と同様の複数の演算ブロックと、ルーチングマトリクスとを有する。この方法は、以下を含む。
１．ユーザー回路のサイクル毎のＲＴＬ記述を生成すること。
２．サイクル毎のＲＴＬ記述をサイクル毎に論理合成すること。
３．論理合成されたサイクル毎の回路を複数の演算ブロックにマッピングする際に、サイクル毎の回路に含まれる入力および／または出力のための異なるレジスタを、複数の格納エレメントに含まれる異なる格納エレメントに割り当てるためのコンフィグレーションデータを生成すること。
【図面の簡単な説明】
【００２３】
【図１】再構成可能な装置の一例の集積回路装置（デバイス）の概略構成を示す図。
【図２】図１のデバイスに含まれる演算ブロック（ＰＢ）の概略構成を示す図。
【図３】図２のＰＢに含まれる論理演算ユニット（ＬＯＵ）の一例を示す図。
【図４】図１のデバイスに含まれる格納制御ユニットの一例を示す図。
【図５】ユーザー回路のＲＴＬ記述の一例を示す図。
【図６】ＦＰＧＡの一例を示す図。
【図７】ＦＰＧＡの演算ブロックの一例を示す図。
【図８】ＦＰＧＡにユーザー回路をマッピングする過程を示すフローチャート。
【図９】ユーザー回路を論理合成した回路図。
【図１０】回路図をＦＰＧＡにマッピングした様子を示す図。
【図１１】再構成可能なデバイスにユーザー回路をマッピングする過程を示すフローチャート。
【図１２】コンフィグレーションデータを生成するシステムの概略構成を示す図。
【図１３】ユーザー回路をサイクル単位で論理合成した回路をシングルレジスタの演算ブロック（ＰＢＳ）にマッピングした様子を示す図であり、図１３（ａ）はステート００、図１３（ｂ）はステート０１、図１３（ｃ）はステート１０、図１３（ｄ）はステート１１を示す。
【図１４】ユーザー回路を、マルチＦＦを含むデバイスにマッピングした例を示す図であり、図１４（ａ）はステート００、図１４（ｂ）はステート０１、図１４（ｃ）はステート１０、図１４（ｄ）はステート１１を示す。
【図１５】コンフィグレーションデータによるデバイスの制御を示すフローチャート。
【図１６】コンフィグレーションデータの格納制御に関わる部分の一例を示す図。
【図１７】コンフィグレーションデータの格納制御に関わる部分の異なる例を示す図。
【図１８】ユーザー回路の異なる例を示す図。
【図１９】図１８に示すユーザー回路をＦＰＧＡにマッピングした例を示す図。
【図２０】図１８に示すユーザー回路を再構成可能なデバイスにマッピングした例を示す図であり、図２０（ａ）はステート０、図２０（ｂ）はステート１を示す。
【図２１】図１８に示すユーザー回路を再構成可能なデバイスにマッピングした異なる例を示す図であり、図２１（ａ）はステート００、図２１（ｂ）はステート０１、図２１（ｃ）はステート１０、図２１（ｄ）はステート１１を示す。
【図２２】ユーザー回路の異なる例を示す図。
【図２３】図２２に示すユーザー回路をＦＰＧＡにマッピングした例を示す図。
【図２４】図２２に示すユーザー回路を再構成可能なデバイスにマッピングした例を示す図であり、図２４（ａ）はステート０、図２４（ｂ）はステート１を示す。
【図２５】演算ブロックの異なる例を示す図。
【図２６】演算ブロックのさらに異なる例を示す図。
【図２７】演算ブロックのさらに異なる例を示す図。
【図２８】演算ブロックのさらに異なる例を示す図。
【図２９】演算ブロックのさらに異なる例を示す図。
【図３０】演算ブロックのさらに異なる例を示す図。
【図３１】演算ブロックのさらに異なる例を示す図。
【図３２】格納制御ユニットの異なる例を示す図。
【図３３】再構成可能なデバイスを含むデータ処理装置の一例を示す図。
【発明を実施するための形態】
【００２４】
回路を再構成可能な装置は、ハードウェア空間を動的に最適化するシステムに含まれる。このシステムの、瞬間的に処理量が増えたときの対処方法の１つは、処理量が増えた処理のために割り当てられるハードウェア資源を増やし、他の緊急性の低い処理のために割り当てられるハードウェア資源を減らすことである。このシステムにおいても、再構成可能なハードウェア資源の量が十分でなければ、ハードウェア資源の割当てを変えても、処理速度の向上の要求に対して十分に対応できず、処理能力の向上の要求に対しても十分な対応ができない可能性がある。
【００２５】
ハードウェア空間を動的に最適化するシステムにおいても、従来のプロセッサと同じ意味において、クロックの周波数を上げることにより処理能力を向上できる。しかしながら、クロック周波数を上げることが、電力消費などの点で、最も好ましい対処方法であると言えない点でも共通する。
【００２６】
再構成可能なシステムにおいては、クロック周波数を上げる代わりに、あるいはクロック周波数を上げることに加えて、ハードウェア資源を並び替えて処理の並列度を上げて処理速度を向上するという方法を採ることが可能である。再構成可能なシステムにおいては、他の処理あるいは機能を並列実行するために使用あるいは流用されていたハードウェア資源を、処理速度が要求される処理の並列度を上げるために使用可能である。すなわち、再構成可能なシステムは、論理の切り替えによる実効回路規模の増大を図り、ハードウェア資源を有効に活用できるシステムである。したがって、再構成可能なハードウェア資源を、より多くの目的で、フレキシブルに使用できることは、処理速度が速く、経済的な再構成可能なシステムを提供する上で重要である。
【００２７】
本発明の実施形態における再構成可能な装置は、集積回路装置の形態で説明される。この集積回路装置（デバイス）は、複数の演算ブロックを含み、演算ブロックは、論理をコンフィグレーションデータにより変更可能である論理演算ユニットと、論理演算ユニットの出力数よりも多い数の格納エレメントを含む。コンフィグレーションデータに基づいて、論理演算ユニットの出力を格納する格納エレメントの選択を可能とすることにより、あるサイクルにおける論理演算ユニットの出力は、コンフィグレーションデータに基づく所定の格納エレメントに格納される。このため、個々の演算ブロックにおいて、前のサイクルの出力は、コンフィグレーションデータに基づき、次のサイクルにおける論理演算ユニットの論理演算の結果（出力）と分けて、あるいは独立したデータ（データセット）としてハンドリングされる。このため、それぞれの演算ブロックをサイクル単位でフレキシブルに利用することが可能となる。
【００２８】
したがって、以下の実施形態の集積回路装置に、ユーザーのアプリケーションを実現するためのユーザー回路をマッピングする方法の１つは、以下の工程を有するものである。
ａ１．ユーザー回路のサイクル毎のＲＴＬ（Register Transfer Level）記述を生成すること。
ａ２．サイクル毎のＲＴＬ記述をサイクル毎に論理合成すること。
ａ３．論理合成されたサイクル毎の回路を複数の演算ブロックにマッピングする際に、サイクル毎の回路に含まれる入力および／または出力の異なるレジスタを、規則の範囲で複数の格納エレメントの異なる格納エレメントに割り当てるようにマッピングすること。
【００２９】
サイクル毎の回路に含まれる入力および／または出力の異なるレジスタには、入力として参照されるデータであって論理演算において異なる意味を持つデータが格納されるレジスタ、異なる入力および／または論理演算により生成（出力）されたデータがラッチされるレジスタなどが含まれる。
【００３０】
規則は、演算ブロックに含まれる格納ユニットの構成により決まる。例えば、複数の格納エレメントの全てがルーチングマトリクスから自由に参照できるシステムであれば、ユーザー回路において、複数の入力のレジスタとして参照されるレジスタを１つの演算ブロックの複数の格納エレメントにそれぞれ割り当てることができる。複数の格納エレメントの内の選択された１つがルーチングマトリクスから参照されるシステムであれば、あるサイクルで複数の入力のレジスタが要求される回路がユーザー回路の一部として論理合成された場合は、それらの入力のレジスタは、１つの演算ブロックの格納エレメントではなく、複数の演算ブロックの格納エレメントに割り当てられる。
【００３１】
この集積回路装置においては、後続のサイクルにおいて必要とされる演算結果をその都度演算する代わりに格納エレメントの１つに格納しておくことが可能である。例えば、演算ブロックをＮ個含むシステムにおいて、各サイクルにおいてＮ個の演算ブロックが次々と所望の論理演算を行なうことが望ましい。その一方で、Ｎ個の演算ブロックの演算結果が各サイクルにおいて全て消費され、後続のサイクルにおいて必要とされないというような回路はほとんどない。後続のサイクルにおいて必要とされるたびに、その論理演算を演算ブロックに割り当てて演算しなおすことは可能である。再演算する代わりに、格納エレメントに格納されているデータを使用することが可能であり、演算ブロックの利用効率を向上できる可能性がある。
【００３２】
本実施形態の再構成可能なシステムは、論理演算ユニットの論理を決めるためのコンフィグレーションデータの単位あるいはタイミングで、論理演算ユニットの出力を格納する格納エレメントの選択を可能とする。したがって、複数のロジックを、ある演算ブロックにより実行する場合に、コンフィグレーションデータの単位あるいはタイミングで、その演算ブロックに含まれる論理演算ユニットの演算論理は次々と移行する。また、論理演算ユニットの演算論理とは独立に、コンフィグレーションデータの単位あるいはタイミングで、演算ブロックから出力される演算結果を選択する、あるいは選択させることができる。
【００３３】
このため、演算ブロックに含まれる論理演算ユニットの演算時期を、その論理演算出力の要求時期と分離できる。論理演算ユニットを論理演算後に直ちに開放できるので論理演算ユニットの演算能力を最大限に利用できる。そして、論理演算ユニットの出力が格納される格納エレメントは、論理演算ユニットの論理を決定するコンフィグレーションデータに基づき選択されるので、擬似的に１つの演算ブロックから、コンフィグレーションデータにより指定された複数の論理の演算結果を出力させることが可能となる。また、演算ブロックにおいて、同じ論理演算の出力を繰り返し出力するために、論理演算ユニットが同じ論理演算を繰り返す必要はないので、論理演算ユニットは次の論理演算に即座に移行してシステムの処理能力の向上に寄与できる。
【００３４】
図１は、本発明に含まれる再構成可能な装置の一実施形態の集積回路装置の概略構成を示している。この集積回路装置（デバイス）１０は、各々の演算論理を変更可能な複数の演算ブロック（Processing Block（ＰＢ）またはConfigurable Logic Block（ＣＬＢ）、以降においてはＰＢ）１３と、それら複数の演算ブロック１３を接続する経路（配線路、回路、伝送路）を構成するためのルーチングマトリクス１５と、複数セットのコンフィグレーションデータ１７を記憶したコンフィグレーションメモリ１１と、コンフィグレーションデータ１７のいずれかを供給するためのコンフィグレーション制御ユニット１２と、演算ブロック１３に含まれる格納ユニットを制御するための格納制御ユニット４０とを有している。コンフィグレーション制御ユニット１２は、コンフィグレーションメモリ１１から演算ブロック１３に対し、複数セットのコンフィグレーションデータ１７のいずれかを供給する。格納制御ユニット４０は、演算ブロック１３に含まれる格納ユニットを制御する格納制御信号１９を生成する。
【００３５】
図２に、演算ブロック１３の構成の一例を示してある。ＰＢ１３は、コンフィグレーションデータ１７に含まれるファンクションデータ２４により論理が決まる論理演算ユニット（Logical Operating Unit（ＬＯＵ））２１と、そのＬＯＵ２１の演算結果を格納する格納ユニット３０とを備えている。このＬＯＵ２１は、４つの入力信号２３に対して、１つ出力信号２５を出力する。ＰＢ１３の格納ユニット３０は、ＬＯＵ２１の出力信号２５を一時的に格納するためのものである。格納ユニット３０は、出力信号２５よりも多い４つの格納エレメント３１ｒを備えたマルチＦＦ３１と、格納制御信号１９により複数の格納エレメント３１ｒの何れかを選択して出力信号２５を格納する入力ユニット３２と、複数の格納エレメント３１とルーチングマトリクス１５とを接続する出力ユニット３３とを備えている。さらに、ＰＢ１３は、ＬＯＵ２１の出力信号２５を直にルーチングマトリクス１５に出力するダイレクト出力ライン（配線）２９を備えている。
【００３６】
ＬＯＵ２１の１つの例は、ルックアップテーブル式の関数発生装置である。ルックアップテーブル式の関数発生装置の一例はＦＰＧＡなどに採用されているものである。ＬＯＵ２１の他の例は、クロックサイクルベース（サイクルベース）で論理を変更することができるものである。図３は、本願の出願人が国際公開ＷＯ２００５／０２２３８０号公報において提案したデコーダ方式の論理演算回路であり、サイクルベースで論理を変更することができるＬＯＵ２１の一例である。
【００３７】
図３のＬＯＵ２１は、４入力のデコーダ２１ａと、１６入力１出力のセレクタ２１ｂとを含む。ＬＯＵ２１は、１６ビットのファンクションデータ２４から４ビットの入力２３により１ビットの出力信号２５を選択して出力する。ＬＯＵ２１は、さらに、２ビットのモード信号２１ｃにより、４入力１出力の論理演算回路に限らず、３入力１出力の論理演算回路、２入力１出力の論理演算回路として機能させることができる。ＬＯＵ２１には、ファンクションデータ２４を変えることにより、４入力ＡＮＤ、４入力ＮＡＮＤなど２０種類以上の論理をサイクル単位で実装することができる。このため、サイクル単位で供給される入力信号２３をサイクル単位で供給される異なる論理により演算して出力信号２５を生成することができる。
【００３８】
格納ユニット３０は、４つのフリップフロップあるいはレジスタ３１ｒを含むレジスタ群（以降においてはマルチＦＦまたはマルチレジスタ）３１を備えている。４つのフリップフロップあるいはレジスタ３１ｒは格納エレメントであり、ＬＯＵ２１の出力信号２５が供給される。格納ユニット３０の出力ユニット３３はセレクタを含む。出力ユニット３３は、以降において、セレクタ３３あるいは読み出しセレクタ３３として参照されることがある。セレクタ３３は、格納制御信号１９に含まれる出力制御信号１９ｏにより、マルチＦＦ３１のレジスタ３１ｒを選んでその現在値を出力信号３９として読み出すことを可能とする。
【００３９】
格納ユニット３０の入力ユニット３２はデコーダを含む。以降において、入力ユニット３２は、デコーダ３２として参照されることがある。デコーダ３２は、格納制御信号１９に含まれる入力制御信号１９ｉにより、マルチＦＦ３１の一つのレジスタ３１ｒを選ぶ。さらに、入力ユニット３２は、格納制御信号１９に含まれる書き込みイネーブル信号１９ｔを、選ばれたレジスタ３１ｒに対し書き込みイネーブル信号１９ｅとして出力する。
【００４０】
この論理を再構成可能なデバイス１０においては、コンフィグレーション制御ユニットに含まれるコンフィグレーション指定レジスタ１２ｒの値１６に基づいて、クロックサイクル毎に、コンフィグレーションメモリアレイ１１のうちのひとつが選ばれる。これにより、コンフィグレーションデータ１７が確定する。コンフィグレーションデータ１７により、各クロックサイクルにおける、ＰＢ１３と、格納制御ユニット４０と、コンフィグラブルルーチングマトリクス１５の形態が特定される。
【００４１】
格納制御ユニット４０は、コンフィグレーションデータ１７に基づき、格納制御信号１９を生成する。格納制御信号１９は、コンフィグラブルルーチングマトリクス１５を介して各ＰＢ１３の格納ユニット３０に送られる。この格納制御ユニット４０は、コンフィグレーションデータ１７に含まれる格納制御データにより、その格納制御データから格納制御信号１９を生成する。または、格納制御ユニット４０は、コンフィグレーションデータ１７に含まれる格納制御データに基づき、コンフィグラブルルーチングマトリクス１５から取得した信号１８により格納制御信号１９を生成する。
【００４２】
ＰＢ１３の格納ユニット３０の読み出しセレクタ３３は、格納制御信号（レジスタ選択信号）１９のうち、出力制御信号（読み出しレジスタ選択信号）１９ｏに基づいて、マルチＦＦ３１の中のひとつのレジスタ３１ｒを選ぶ。その結果、セレクタ３３は、選択されたレジスタ３１ｒに格納された値をコンフィグラブルルーチングマトリクス１５に出力する。または、セレクタ３３は、選択されたレジスタ３１ｒに格納された値を、コンフィグラブルルーチングマトリクス１５を介して他のＰＢ１３が読みこむことを可能とする。
【００４３】
あるクロックサイクルにおいて、ＰＢ１３の組み合わせ論理演算ユニット２１は、コンフィグラブルルーチングマトリクス１５から取得した入力信号２３に対して、コンフィグレーションデータ１７のうち該ＰＢ向けのファンクションデータ２４で指示される組み合わせ論理演算を行い、演算結果２５を出力する。その出力２５は、ダイレクト出力配線２９によりコンフィグラブルルーチングマトリクス１５に出力される。論理演算ユニット２１の出力（演算結果）２５は同時に、レジスタ書き込みデータとして格納ユニット３０にも送られる。演算結果２５は、レジスタ書き込みデータとして、ＰＢ１３に内蔵されるマルチＦＦ３１の全てのレジスタ３１ｒのデータ入力信号に接続される。
【００４４】
演算結果２５が、いずれのレジスタ３１ｒに書き込まれるかは、格納制御信号１９により格納入力制御ユニットであるデコーダ３２から供給される書き込みイネーブル信号１９ｅによって制御される。つまり、書き込みイネーブル信号１９ｔが無効であれば各レジスタ３１の書き込みイネーブル信号１９ｅは全て無効となり、書き込みイネーブル信号１９ｔが有効であれば各レジスタ３１の書き込みイネーブル信号１９ｅのうちどれか１つが有効になり、演算出力２５が格納される。
【００４５】
そのクロックサイクルの終了時には、各ＰＢ１３のマルチレジスタ３１のうち書き込みイネーブル信号１９ｅが有効であったレジスタ３１ｒの値が更新される。それと同時に、いずれかのＰＢ１３により生成され、コンフィグラブルルーチングマトリクス１５に出力されたコンフィグレーション指定レジスタ１２ｒへの書き込み信号２０によって、コンフィグレーション指定レジスタ１２ｒの選択値１６が更新される。これにより、ネクストコンフィグレーションが決まる。ここまでが、デバイス１０における１クロックサイクル分の処理となる。
【００４６】
次のクロックサイクルでは、再び、コンフィグレーション指定レジスタ１２ｒの選択値１６に応じてコンフィグレーションメモリアレイ１１のうちのひとつが選ばれ、コンフィグレーションデータ１７が確定する。その結果、ＰＢ１３と、格納制御ユニット４０と、コンフィグラブルルーチングマトリクス１５の形態が特定され、その後の処理も前のサイクルと同じ手順で進行する。このように、デバイス１０における動作手順は毎サイクル同じである。一方、デバイス１０の動作結果を左右するコンフィグレーションデータ１７は毎サイクルで変えることが可能であり、各ＰＢ１３において各サイクルで異なる処理を行うことができる。
【００４７】
図４に、格納制御ユニット４０の構成を示している。この格納制御ユニット４０は、セレクタ群４１を含む。このセレクタ群４１は、コンフィグレーションデータ１７により、出力制御信号（２ビット）１９ｏ、入力制御信号（２ビット）１９ｉ、書き込みイネーブル信号（１ビット）１９ｔを、コンフィグレーションデータ１７の中の所定の部分から選択する。セレクタ群４１は、これらの信号１９ｏ、１９ｉおよび１９ｔをコンフィグラブルルーチングマトリクス１５から取得した入力信号１８から選択することも可能である。格納制御ユニット４０は、全ＰＢ１３に対する制御信号１９を単純に、独立して生成することが可能である。図４に示した格納制御ユニット４０では、ユニット４０に対してコンフィグラブルルーチングマトリクス１５から供給される入力信号１８は、読み出し選択用の信号、書き込み選択用の信号、書き込みイネーブル用の信号が全ＰＢ１３に対し共通する。コンフィグレーションデータ１７の量、およびコンフィグラブルルーチングマトリクス１５に含まれる入力信号１８の本数を減らすことにより、データおよび／またはルーチングマトリクスによりシリコン面積が消費されるのを防止できる。
【００４８】
図４に示した格納制御ユニット４０には、コンフィグレーションデータ１７の含まれるセレクタ４１を制御するための情報が、制御信号４５として供給される。制御信号４５は、ＰＢ毎に独立に用意されるのではなく、制御信号４５に「個数」をエンコードすることにより信号線の数が減らされている。たとえば、制御信号４５は、「出力制御信号１９ｏとしてコンフィグラブルルーチングマトリクス１５から取得した信号１８を選ぶＰＢの数」を示す信号を含む。その結果、各ＰＢに対応して設けられたコンパレータ４６が、制御信号４５と自己のＰＢ番号とを比較して、自己のＰＢ１３に対応するセレクタ４１に制御信号を供給する。
【００４９】
例えば、制御信号４５が「０」なら、すべてのコンパレータ４６が「偽」となる。このため、格納制御ユニット４０は、コンフィグラブルルーチングマトリクス１５から取得した信号１８でなく、コンフィグレーションデータ１７の所定の信号が出力制御信号１９ｏとして選ばれるように設定される。制御信号４５が「２」なら、左側の２つのＰＢ１３のコンパレータ４６が真となる。このため、格納制御ユニット４０では、左側の２つのＰＢ１３の出力制御信号１９ｏはコンフィグラブルルーチングマトリクス１５から取得した信号１８から生成される。右側の残りのＰＢ１３の出力制御信号１９ｏはコンフィグレーションデータ１７の所定の信号から生成される。入力制御信号１９ｉ、書き込みイネーブル信号１９ｔの生成についても、同様に、格納制御ユニット４０は、コンフィグレーションデータ１７に基づき制御される。
【００５０】
図４に示した格納制御ユニット４０の構成は、格納制御ユニット４０を実装するのに必要なシリコン面積を節約しつつも、ユーザー回路をデバイスにマッピングする際の制約が実用上あまり厳しくならないように配慮されている。すなわち、読み出し／書き込みレジスタの選択は多くの場合、コンフィグレーションデータ１７で直接指定するであろうと考えられる。そのケースでは、格納制御ユニット４０は、コンフィグレーションデータ１７に基づき、各ＰＢ１３において異なるレジスタ３１ｒを読み書きできるように制御する。
【００５１】
レジスタ３１ｒの選択をルーチングマトリクス１５から取得した信号１８により、間接的／動的に行いたいケースがある。例えば、データパス系の多ビット演算である。多ビット演算のケースでは、各ＰＢ１３において異なるレジスタ３１ｒを読み書きする必要が発生することはほとんどない。このため、ルーチングマトリクス１５からの信号１８を複数のＰＢ用として共有にすることによるディメリットはほとんどない。ただし、多ビット演算のビット数はいろいろな可能性が考えられる。このため、コンフィグレーションデータ１７により、ＰＢ１３の個数を指定できることは有効である。
【００５２】
また、データパス系の演算の制御で格納制御ユニット４０を用いる場合、格納制御ユニット４０はデータパス演算に対応づけて制御を行うことが望ましい。図１に示したデバイス１０では、全体を１つの格納制御ユニット４０により共通制御（共有制御）しているのに対し、データパス系の演算を主とするデバイスであれば、１０あるいは２０程度のＰＢ１３のグループ毎に格納制御ユニットを割り当てて、それらのグループに含まれるＰＢ１３を共通制御（共有制御）することが望ましい。
【００５３】
次に、具体的なユーザー回路をデバイス１０にマッピングする例を説明する。図５は、マッピングする対象のユーザー回路５１をＶｅｒｉｌｏｇコードにより表わしたものである。このユーザー回路は、４つのステート（００）、（０１）、（１０）および（１１）がｓｔａｔｅレジスタの値により実行されるステートマシンとして機能する。
【００５４】
まず、任意の４入力論理関数を計算できるＦＰＧＡを想定し、そのＦＰＧＡに、このユーザー回路を実装するケースを説明する。図６に、そのようなＦＰＧＡ９０の全体構成を示し、図７に、演算ブロック９３の構成を示している。ＦＰＧＡ９０は、複数の演算ブロック９３と、それらを接続するルーチングマトリクス９５と、演算ブロック９３およびルーチングマトリクス９５をプログラミングするためのデータ９７が格納されたメモリ９１とを備えている。各々の演算ブロック９３は、任意の４入力論理関数を計算できる論理演算ユニット９２と、その出力をダイレクトに、あるいはレジスタ９８にラッチした後にルーチングマトリクス９５に出力する出力ユニット９９とを備えている。
【００５５】
図８に、ＦＰＧＡにユーザー回路５１をマッピングする方法を示している。ステップ８１において、Ｃ言語などの動作レベル記述から動作合成ツールを通してハードウェア言語（ＶｅｒｉｌｏｇあるいはＶＨＤＬなど）によるＲＴＬ（Register Transfer Level）記述を生成する。ステップ８２において、実装するＦＰＧＡ向けの論理合成ツールにより回路図を生成する。ステップ８３において、配置配線ツールによりＦＰＧＡにマッピングするデータ９７を生成する。
【００５６】
図９は、図５にＲＴＬ記述で示したユーザー回路５１を、ＦＰＧＡ９０にマッピングするために論理合成した回路図である。図１０は、図９の回路図をＦＰＧＡ９０にマッピングした結果を示している。図１０からわかるように、ＦＰＧＡ９０では、３１個の演算ブロック９３を用いることによりユーザー回路５１をマッピングすることができる。
【００５７】
図１１に、本例のデバイス１０にユーザー回路をマッピングする過程をフローチャートにより示している。まず、ステップ７１において、Ｃ言語などの動作レベル記述を解析して、サイクル単位で動作が記述されたサイクル単位のＲＴＬ記述を生成する。マッピングしようとしているユーザー回路５１はステートマシンである。したがって、１ステートを１サイクルの処理とすることにより、図５に示したＲＴＬ記述がサイクル単位のＲＴＬ記述に該当する。ステップ７２において、これらのサイクル毎のＲＴＬ記述を、個々に、論理合成してサイクル毎に回路図を生成する。ステップ７３において、サイクル毎にデバイス１０に回路をマッピングするためのコンフィグレーションデータ１７を生成する。コンフィグレーションデータ１７は、各サイクルのコンフィグレーションデータの集合と言うことができる。
【００５８】
コンフィグレーションデータ１７を生成するステップ７３においては、ユーザー回路５１に含まれる異なるレジスタ、すなわち、入力のレジスタ（入力データが格納されるレジスタ）および出力のレジスタ（出力データが格納されるレジスタ）のそれぞれに対してＰＢ１３を個別に割り当てない。ステップ７３ａにおいて、入力のレジスタ（読み出されるレジスタ）および出力のレジスタ（書き込まれるレジスタ）のそれぞれを、規則にしたがって格納ユニット３０のマルチＦＦ３１の異なるＦＦ（レジスタ）３１ｒに割り当てる。
【００５９】
さらに、ＦＰＧＡのケースでは複数の演算ブロックに割り当てられる回路構成を、本例のデバイス１０では１つのＰＢ１３にマージしてマッピングする。ステップ７３ｂにおいて、複数の回路構成を１つのＰＢ１３にマージしてマッピングするためのコンフィグレーションデータ１７を生成する。入力および出力のレジスタが同じ場合は、マルチＦＦ３１の同じレジスタ３１ｒを割り付ける。
【００６０】
ステップ７３ａにおける規則は、そのサイクルの入出力状態および他のサイクルにおける入出力状態を参照し、格納ユニット３０の機能がカバーできる範囲で入力および出力の異なるレジスタを、マルチＦＦ３１の異なるレジスタ３１ｒに割り当てることを含む。例えば、図２に示した格納ユニット３０では、１サイクルにおいては、マルチレジスタ３１を構成する４つのレジスタ３１ｒの１つに対してのみ書き込みできる。また、格納ユニット３０では、書き込みとは独立して、マルチレジスタ３１の１つのレジスタ３１ｒからデータを出力できる。したがって、あるサイクルにおいて同時に参照されるレジスタは異なるＰＢ１３にマッピングする必要がある。また、あるサイクルにおいて同時に値が更新されるレジスタは異なるＰＢ１３にマッピングする必要がある。
【００６１】
このため、ステップ７３ａにおいては、これらの規則に従い、参照されているレジスタを格納ユニット３０のマルチレジスタ３１の１つに割り当てる。その範囲内において、ステップ７２の論理合成の段階では複数の演算ブロックが要求される機能を１つのＰＢ１３にマージする。例えば、後述する格納ユニットの一例においては、マルチレジスタ３１を構成する４つのレジスタ３１ｒの出力が全てルーチングマトリクス１５から参照できる。そのような格納ユニットが採用されているデバイスにマッピングするためのコンフィグレーションデータを生成する場合は、あるサイクルにおいて同時に参照されるレジスタであっても、それらのレジスタを１つのＰＢ１３にマッピングするためのコンフィグレーションデータを生成できる可能性がある。
【００６２】
図１２に、このマッピング方法に基づき、コンフィグレーションデータを生成するシステムの概略構成を示している。このシステム１００は、通常のコンピュータを制御するためのソフトウェア（プログラム製品）としてＣＤ−ＲＯＭなどの適当な記録媒体に記録して提供される。そして、システム１００は、コンピュータに含まれるハードウェア資源を用いて構成される。このシステムは、ＬＳＩあるいはＡＳＩＣなどの半導体装置を開発および設計するＣＡＤシステムと同様に、再構成可能なデバイス１０を設計および開発するＣＡＤシステムあるいはフレームワークの一環として提供される。システム１００は、ユーザー回路５１の仕様に関するデータ１１１を読み込み、ユーザー回路のサイクル毎のＲＴＬ記述を生成する手段１０１と、サイクル毎のＲＴＬ記述をサイクル毎に論理合成する手段１０２と、論理合成された結果とデバイスライブラリ１１２の情報に基づきコンフィグレーションデータ１７を生成する手段１０３とを含む。コンフィグレーションデータ１７を生成する手段１０３は、論理合成されたサイクル毎の回路を複数の演算ブロックＰＢにマッピングする際に、サイクル毎の回路に含まれる入力および／または出力のための異なるレジスタを、上記した規則にしたがって格納ユニット４０の複数の格納エレメント（マルチＦＦ）３１に含まれる異なる格納エレメント（レジスタ）３１ｒに割り当てるためのコンフィグレーションデータ１７を生成する。コンフィグレーションデータ１７は、各サイクルのコンフィグレーションデータの集合となる。
【００６３】
このようにコンフィグレーションデータ１７を生成することにより、１つのＰＢ１３のマルチＦＦ３１に、あるサイクルにおいて入出力される複数のデータを格納するレジスタを割り付けたり、サイクルを跨いで入出力される複数のデータを格納するレジスタを割り付けることができる。したがって、上述したマッピング方法を採用し、それに基づきコンフィグレーションデータ１７を生成することにより、ＰＢ１３の利用効率が大幅に向上する。このため、少ないハードウェア資源でユーザー回路を実装できる。また、ハードウェア資源が不足することを防止できるので、並列度を上げて処理速度の向上を図ることも容易となる。
【００６４】
ＰＢ１３の利用効率の向上は、幾つかの面から説明できる。１つの説明は、論理演算ユニット２１の出力２５を格納ユニット３０のマルチＦＦ３１にラッチすることである。このため、出力２５が要求されるタイミングと論理演算とは独立させることが可能となる。さらに、演算後にＰＢ１３の論理演算ユニット２１を出力２５の論理から解放して、次の論理演算を実行させることができる。
【００６５】
他の１つの説明は、論理演算ユニット２１の演算ロジックおよびマルチＦＦ３１の選択が、格納制御ユニット４０を制御するコンフィグレーションデータ１７により制御されることである。このため、ＰＢ１３の機能は、コンフィグレーションデータ１７により論理演算と出力とを個別に制御できる。したがって、マルチＦＦ３１を使用することにより、ＰＢ１３の論理演算ユニット２１を、コンフィグレーションデータ単位、すなわち、本例ではサイクル単位で使用できることが保証される。さらに、ＰＢ１３は、ダイレクト出力配線２９を備えている。このため、クロック周波数を上げずに、１サイクルのコンフィグレーションデータ１７により、１つのＰＢ１３から複数の論理演算結果を出力させることができる。
【００６６】
さらに異なる説明の１つは、論理演算ユニット２１の演算結果をマルチＦＦ３１に出力をラッチして、後続のサイクルで出力できることである。このため、あるサイクルで演算が要求されるロジックの複数の入力データを、数サイクルかけて事前に準備することが可能となる。さらに、瞬間的な演算数の増加を時間方向に平均化することも可能となる。そして、このようなＰＢ１３における論理演算の内容とタイミング、ＰＢ１３の出力の内容とタイミングは、全て、回路をデバイス１０にマッピングするためのコンフィグレーションデータ１７に集約され、解決される。このため、クロック周波数を高速化したり、クロック周波数の異なる回路との同期をとる機能を追加したり、特別なメモリを設けたりする必要はない。
【００６７】
図１３に、図５にＶｅｒｉｌｏｇコードで表されたユーザー回路５１をデバイス１０にマッピングするためにステート毎、すなわち、サイクル毎に論理合成した結果を示している。すなわち、図１１のステップ７１の出力である。論理合成した結果の回路図は、サイクル毎に図１３（ａ）〜（ｄ）の４通りになる。
【００６８】
図１３（ａ）は、ステート（００）の回路図である。ｂｆｌｇレジスタ（Ｂ）とｘｒｅｇレジスタ（Ｘ０、Ｘ１、Ｘ２）の現在値およびｆｓｍｉｎ入力信号（ｆｓｍｉｎ０、ｆｓｍｉｎ１、ｆｓｍｉｎ２、ｆｓｍｉｎ３）をもとに小規模な論理演算を行い、ａｆｌｇレジスタ（Ａ）、ｃｆｌｇレジスタ（Ｃ）、ｄｆｌｇレジスタ（Ｄ）に値を書き込む。さらに、ｆｓｍｏｕｔ出力信号（ｆｓｍｏｕｔ０、ｆｓｍｏｕｔ１）にはｘｒｅｇレジスタ（Ｘ０、Ｘ１）の値を出す。そして、ネクストコンフィグレーションを指示するためのｎ＿ｓｔａｔｅ信号（ｎ＿ｓｔａｔｅ０、ｎ＿ｓｔａｔｅ１）として定数（０１）を出力する。ｎ＿ｓｔａｔｅ信号により、次のサイクルではステート（０１）に遷移することを指示する。
【００６９】
図１３（ｂ）は、ステート（０１）の回路図である。図１３（ｃ）は、ステート（１０）の回路図である。図１３（ｄ）は、ステート（１１）の回路図である。これらも図５のＶｅｒｉｌｏｇコードのｃａｓｅ文の通りに、それぞれのステートを個別に回路図に翻訳したものである。なお、図１３（ａ）〜（ｄ）においては、論理演算ユニットの出力をシングルＦＦによりラッチする演算ブロックＰＢＳ７９を想定して、破線により論理を分割している。論理合成した段階では、ユーザー回路５１をシングルＦＦの演算ブロックＰＢＳ７９により構成されるデバイスにマップするのであれば、ステート（００）を実装するためには８つのＰＢＳ７９が必要となり、ステート（０１）を実装するためには８つのＰＢＳ７９が必要となる。同様に、ステート（１０）を実装するためには１３個のＰＢＳ７９が必要となり、ステート（１１）を実装するためには７つのＰＢＳ７９が必要となる。したがって、論理合成した段階で、図１０に示したＦＰＧＡでは３１個の演算ブロックがマッピングするのに必要だったユーザー回路５１を、最大で１３個のＰＢＳ７９にマッピングすることができる。
【００７０】
図１４に、サイクル毎に論理合成した回路を、デバイス１０にマッピングした結果を示している。図１１のステップ７３の出力である。図１４（ａ）は、ステート（００）をマッピングした状態を示し、図１４（ｂ）は、ステート（０１）をマッピングした状態を示し、図１４（ｃ）は、ステート（１０）をマッピングした状態を示し、図１４（ｄ）は、ステート（１１）をマッピングした状態を示している。
【００７１】
いずれのステート（サイクル）においても、４つのＰＢ１３を用いてユーザー回路がマッピングされている。したがって、デバイス１０をサイクル単位で再構成することにより、ユーザー回路５１を４個のＰＢ１３を用いてマッピングすることができることがわかる。このユーザー回路５１は、図１０に示したＦＰＧＡでは、マッピングするために３１個の演算ブロックを用いた回路と同じでものである。
【００７２】
図１５に、このデバイス１０の制御を示している。このデバイス１０では、ステップ１２１において、演算ブロックに対して次に供給されるネクストコンフィグレーションデータが決定される。ステップ１２２において、各サイクルのコンフィグレーションデータ１７ａ〜１７ｄのいずれかがコンフィグレーションメモリ１１からＰＢ１３に供給されることにより、各々のユーザー回路５１のＲＴＬ記述の各ステート（サイクル）の機能は実現される。すなわち、ＰＢ１３に供給されるサイクル単位のコンフィグレーションデータ１７ａ〜１７ｄは、ＰＢ１３から出力される信号２０に基づきコンフィグレーション制御ユニット１２の選択値１６により決まる。したがって、このデバイス１０においては、サイクル毎に次のサイクルのコンフィグレーション（ネクストコンフィグレーション）が決まり、それと共にデバイスが再構成され、サイクル単位でデバイスにおいて処理される内容が変更される。
【００７３】
ステップ１２２において、サイクル毎の回路を複数の演算ブロックＰＢにマッピングする際に、サイクル毎の回路に含まれる入力および／または出力のための異なるレジスタが、サイクル毎のコンフィグレーションデータに基づき、マルチＦＦ３１のレジスタ３１ｒに割り当てられる。図１に示すデバイス１０は、複数のＰＢを制御するためのコンフィグレーション制御ユニット１２を備えている。したがって、コンフィグレーション制御ユニット１２は、複数の演算ブロックＰＢからなる区画あるいはグループ単位で、それら複数の演算ブロックＰＢに含まれる演算ブロックの論理を制御する。この方式は、複数の演算ブロックＰＢからなる区画あるいはグループ単位でコンフィグレーションが決められているので、インターフェイスの調整、すなわち、ルーチングマトリクス１５の再構成も容易である。
【００７４】
ネクストコンフィグレーションを決定する制御機能を各々の演算ブロックＰＢに含ませることも可能である。この場合、各ＰＢ１３からルーチングマトリクス１５を介して制御ユニット１２に供給される書き込み信号２０が、各ＰＢ１３から出力されたネクストコンフィグレーションの指示情報であると理解される。この方式は、演算ブロックＰＢの単位、すなわち、演算ブロックに対応したコンフィグレーションデータの単位で演算ブロックの構成を制御できる。このため種々の構成をフレキシブルに実現できる。その一方で、コンフィグレーションを制御するために要するハードウェア資源が増加する傾向にあり、また、隣接する演算ブロックとのインターフェイスの調整、ルーチングマトリクス１５の構成をコンフィグレーションデータ毎に解決することを要求される可能性がある。
【００７５】
図１１のユーザー回路５１のコンフィグレーションデータを生成するためのステップ７３ａにおいて、各サイクルのレジスタに対する入出力状態および他のサイクルにおける入出力状態を判断する。具体的には、ステップ７３ａにおいては、格納ユニット３０は各サイクルにおいてマルチＦＦ３１の１つに対して入力でき、１つを出力できるという規則に基づき、論理合成された回路に含まれるサイクル当たりの複数のレジスタを各ＰＢ１３のマルチＦＦ３１のレジスタ３１ｒに割り当てるためのコンフィグレーションデータ１７を生成している。すなわち、
ステート００：
・レジスタＸ０〜Ｘ２と、レジスタＢを読んでいるので、これらを異なるＰＢ１３のマルチＦＦ３１に割り当てる必要がある。
・レジスタＡ、レジスタＣ、レジスタＤに書いているので、これらを異なるＰＢ１３のマルチＦＦ３１に割り当てる必要がある。
【００７６】
ステート０１：
・レジスタＹ０〜Ｙ２と、レジスタＡを読んでいるので、これらを異なるＰＢ１３のマルチＦＦ３１に割り当てる必要がある。
・レジスタＸ０〜Ｘ２と、レジスタＢに書いているので、これらを異なるＰＢ１３のマルチＦＦ３１に割り当てる必要がある。
【００７７】
ステート１０：
・レジスタＸ０とＹ０、レジスタＸ１とＹ１、レジスタＸ２とＹ２とを、それぞれ動的に選択して読んでいるので、それぞれのペアを異なるＰＢ１３のマルチＦＦ３１に割り当てる必要がある。さらに、レジスタＡを読んでいるので、それを上記のペアと異なるＰＢ１３のマルチＦＦ３１に割り当てる必要がある。
・レジスタＸ０〜Ｘ２と、レジスタＢに書いているので、これらを異なるＰＢ１３のマルチＦＦ３１に割り当てる必要がある。
【００７８】
ステート１１：
・レジスタＢ、レジスタＣ、レジスタＤを読んでいるので、これらを異なるＰＢ１３のマルチＦＦ３１に割り当てる必要がある。
・レジスタＹ０〜Ｙ２に書いているので、これらを異なるＰＢ１３のマルチＦＦ３１に割り当てる必要がある。
【００７９】
図１４（ａ）〜図１４（ｄ）に示したマッピングは、各ステートにおけるこれらの条件を満足するように４つのＰＢ１３のマルチＦＦ３１に各レジスタを配置した１つの例である。この例では、４つのＰＢ１３の内、第１のＰＢ１３ａのマルチＦＦ３１には、レジスタＸ０、レジスタＹ０およびレジスタＣが割り当てられ、残りの１つは未使用である。第２のＰＢ１３ｂのマルチＦＦ３１には、レジスタＸ１、レジスタＹ１およびレジスタＤが割り当てられ、残りの１つは未使用である。第３のＰＢ１３ｃのマルチＦＦ３１にはレジスタＸ２およびレジスタＹ２が割り当てられ、残りの２つは未使用である。第４のＰＢ１３ｄのマルチＦＦ３１にはレジスタＡおよびレジスタＢが割り当てられ、残りの２つは未使用である。なお、４つのＰＢ１３ａ〜１３ｄの配置は、ルーチングマトリクス１５により接続可能な範囲で自由であり、図１４（ａ）〜図１４（ｄ）に示した配置は一例に過ぎない。また、図１４（ａ）、図１４（ｂ）および図１４（ｄ）では、各ＰＢ１３の格納ユニット３０を制御する格納制御ユニット４０の構成は省略している。
【００８０】
図１６は、図１４（ａ）に示したステート（００）におけるＰＢ１３ａの格納ユニット３０を制御するための格納制御ユニット４０の状態を示している。ステート（００）のコンフィグレーションデータ１７ａの格納制御ユニット４０を制御する部分の内、格納制御ユニット４０のセレクタ４１を制御する部分はそれぞれ「０００」であり、制御信号１９はすべてコンフィグレーションデータ１７ａから供給される。そして、書き込みイネーブル信号１９ｔは「１」となり、マルチＦＦ３１のレジスタ３１ｒのいずれかへの書き込みが許可される。入力制御信号１９ｉは「１０」で、レジスタＣに割り当てられたマルチＦＦ３１の２番目のレジスタ３１ｒへの書き込みが選択されている。また、出力制御信号１９ｏは「００」で、レジスタＸ０に割り当てられたマルチＦＦの０番目のレジスタ３１ｒの読み出しが選択されている。したがって、格納制御信号１９により、一番目のＰＢ１３ａの格納ユニット３０の状態は、図１４（ａ）に示したようにセットされる。他のＰＢ１３の格納ユニット３０も格納制御信号１９を介してコンフィグレーションデータ１７ａにより同様に制御される。
【００８１】
図１７に、図１４（ｃ）に示したステート（１０）におけるＰＢ１３ａ〜１３ｄの格納ユニット３０を制御するための格納制御ユニット４０の状態を示してある。ステート（１０）のコンフィグレーションデータ１７ｃの格納制御ユニット４０を制御する部分の内、格納制御ユニット４０のセレクタ４１を制御する部分は、読み出しを制御する部分が「０１１」であり、他は「０００」である。したがって、１〜３番目のＰＢ１３ａ〜１３ｃの格納ユニット３０のマルチＦＦ３１の読み出しレジスタの制御に係る格納制御信号１９ｏは、ルーチングマトリクス１５から供給される選択信号１８により決まり、他の格納制御信号１９ｉおよび１９ｔはコンフィグレーションデータ１７ｃから供給される。このため、ＰＢ１３ａ〜１３ｃのマルチＦＦ３１からそれぞれ読み出されるレジスタは、ＰＢ１３ｃの論理演算ユニット２１の論理演算結果を受けて決まる。ＰＢ１３ｄから読み出されるレジスタはコンフィグレーションデータ１７ｃにより決まり、マルチＦＦ３１のレジスタＡに割り当てられている０番目のレジスタが読み出される。ＰＢ１３ａ〜１３ｃの書き込みは、コンフィグレーションデータ１７ｃの書き込みイネーブル信号のデータがそれぞれ「０」なので、入力選択信号の部分はドントケアである。ＰＢ１３ｄの書き込みは、イネーブル信号１９ｔが「１」で、入力選択信号１９ｉが「００」になるので、論理演算ユニット２１の出力２５は、マルチＦＦ３１のレジスタＡに割り当てられている０番目のレジスタに書き込まれる。
【００８２】
図１８〜図２１に、異なるユーザー回路を本例のデバイス１０にマッピングした例を示している。図１８に示したユーザー回路５２は、３ビットカウンターである。図１９は、ユーザー回路５２を図６に示したＦＰＧＡ９０にマッピングした状態を示している。図２０は、本例のデバイス１０に、２個のＰＢ１３と２組（２サイクル）のコンフィグレーションデータ１７を用いてユーザー回路５２をマッピングした例である。図２１は、デバイス１０に、１個のＰＢ１３と、４組（４サイクル）のコンフィグレーションデータ１７を用いてマッピングした例である。これらの例においては、カウンターのユーザー回路５２を、２ステートまたは４ステートのステートマシンとみなし、サイクル毎に各ステートの動作をデバイス１０にマッピングすることによりユーザー回路５２を実現している。その結果、ＦＰＧＡ９０にマッピングする場合よりも、少ない数の演算ブロックによりユーザー回路をマッピングできている。
【００８３】
ステートマシンに限らず、殆どのデータパス演算回路を実際のシステムに実装する場合、レジスタと結合される。したがって、データパス演算回路とレジスタとの組み合わせをステートマシンとみなせば、殆ど全てのデータパス演算回路を、デバイス１０に効果的にマッピングすることが可能である。
【００８４】
図２２〜図２４に、さらに異なるユーザー回路を本例のデバイス１０にマッピングした例を示している。図２２に示したユーザー回路５３は、７ビット入力Ａ６〜Ａ０を２ビットのシフト量Ｓ１〜Ｓ０でシフトして４ビットの答え（Ｙ３〜Ｙ０）を出力するバレルシフタ回路であり、シフト量Ｓ１〜Ｓ０にパイプラインレジスタを結合した回路である。図２３は、ユーザー回路５３を図６に示したＦＰＧＡ９０にマッピングした状態を示している。図２４（ａ）および（ｂ）は、本例のデバイス１０に、５個のＰＢ１３と２組（２サイクル）のコンフィグレーションデータ１７を用いてユーザー回路５３をマッピングした例である。このケースでは、デバイス１０においては、ＦＰＧＡ９０の半分以下の演算ブロックによりユーザー回路を実装できる。
【００８５】
図２５〜図３１に、演算ブロックＰＢの幾つかの変形例を示している。図２５に示したＰＢ１３ｚの格納ユニット３０の出力ユニット３３は、マルチＦＦ３１のいずれかのレジスタ３１ｒを選択してルーチングマトリクス１５に出力するためのセレクタ３３ｓを２セット備えている。これら２つのセレクタ３３ｓは、異なる出力制御信号１９ｏａおよび１９ｏｂにより制御され、それぞれの値を出力３９ａおよび３９ｂとして出力する。したがって、格納ユニット３０のマルチＦＦを構成する４つの内蔵レジスタ３１ｒのうち、２つの現在値をルーチングマトリクス１５に出力することができる。このため、他のＰＢにより、マルチＦＦ３１の２つのレジスタ３１ｒを同じサイクルで読み出すことができる。
【００８６】
図２６に示したＰＢ１３ｙの格納ユニット３０は、マルチＦＦ３１を構成する４つの内蔵レジスタ３１ｒの現在値を全てルーチングマトリクス１５に出力する出力ユニット３３を備えている。したがって、この格納ユニット３０の出力ユニット３３はセレクタを含まない。また、出力制御信号１９ｔも不要である。他のＰＢは、マルチＦＦ３１の４つのレジスタ３１ｒを同じサイクルで読み出すことができる。再構成可能なデバイスにユーザー回路をマッピングする場合、図２６に示したＰＢ１３ｙは単純な構成の格納ユニット３０を含むので、このＰＢ１３ｙを備えているデバイス１０にマッピングする方が機能のマージは容易である。すなわち、ＰＢ１３ｙを備えたデバイスを対象にマッピングするためのコンフィグレーションデータを生成するには、図１１に示したステップ７３ａにおける入出力レジスタの割当ての規則が緩やかであり、論理合成した機能を１つのＰＢにマージしやすい。図２に示したＰＢ１３あるいは図２５に示したＰＢ１３ｚを含むデバイスに対してマッピングするためのコンフィグレーションデータを生成するには「各クロックサイクルの瞬間瞬間には選択した１または２のレジスタしか演算対象にできない」という制約（規則）に従う必要があるからである。一方、デバイスを製造する立場で評価すると、図２６に示したＰＢ１３ｙの構成よりも、図２または図２５のＰＢの構成のほうが望ましい。図２６のＰＢ１３ｙの構成はコンフィグラブルルーチングマトリクス１５への出力本数が多いため、シリコン面積を余分に消費してしまうからである。
【００８７】
図２７に示したＰＢ１３ｘは、格納ユニット３０からの出力３９と、論理演算ユニット２１の出力２５のいずれかを選択してルーチングマトリクス１５に出力する出力選択ユニット２８を備えている。この出力選択ユニット２８は、コンフィグレーションデータ１７中のルーチングマトリクス出力選択情報２７により制御されるセレクタを含む。このＰＢ１３ｘでは、ルーチングマトリクス１５に対する出力信号は１本だけに絞るので、ルーチングマトリクス１５の構成は簡易になる。
【００８８】
図２８に示したＰＢ１３ｗは、論理演算ユニット２１が２つの出力２５ａおよび２５ｂを備えており、一方の出力結果２５ｂを格納ユニット３０のマルチＦＦ３１にラッチし、他方の出力結果２５ａはルーチングマトリクス１５に出力するようになっている。このバリエーションとしては、さらに、出力２５ａおよび２５ｂをそれぞれラッチする複数の格納ユニット３０を備えた演算ブロックＰＢ、および、そのような演算ブロックを備えたデバイスを提供することが可能である。
【００８９】
図２９に示したＰＢ１３ｖは、一方の出力２５ｂと、格納ユニット３０からの出力３９とのいずれかを選択してルーチングマトリクス１５に出力する出力選択ユニット２８を備えている。このような演算ブロックＰＢ１３ｖ、および演算ブロックＰＢ１３ｖを備えたデバイスを提供することも可能である。
【００９０】
図３０に示したＰＢ１３ｕは、個々の格納ユニット３０を制御する信号１９を出力する格納制御ユニット４０を内蔵している。また、格納制御ユニット４０は、コンフィグレーションデータ１７の格納制御成分２６により制御される。また、格納制御ユニット４０がＰＢ１３に内蔵されるので、各格納ユニット３０を、ＰＢ１３の単位で供給されるコンフィグレーションデータ１７により制御することが可能となる。このため、コンフィグレーションデータ１７によりさらにフレキシブルに各格納ユニット３０を制御できる。その一方で、各ＰＢ１３は格納制御ユニット４０を内蔵するので、面積が大きくなり、デバイス１０を実装するためのシリコン面積が増大し易い。
【００９１】
図３１に示したＰＢ１３ｔは、個々の格納ユニット３０を制御する信号１９を出力する格納制御ユニット４０を内蔵しており、さらに、格納制御ユニット４０はコンフィグレーションデータ１７のみにより制御される。この方式のＰＢ１３ｔは、格納制御ユニット４０を内蔵することによるＰＢ１３ｔの面積の増大を抑制できる。その一方、他のＰＢ１３の演算結果を格納ユニット３０の制御に反映するためには、演算結果によりＰＢ１３ｔに供給されるコンフィグレーションデータ１７を変える必要がある。このため、ユーザー回路をマッピングするためのコンフィグレーションデータ１７の量が増加する可能性がある。
【００９２】
図３２は、複数のＰＢ１３の格納ユニット３０に対する制御信号１９を生成する格納制御ユニット４０の異なる例である。先に図４に示した格納制御ユニット４０は、シリコン面積を縮小するために、コンフィグレーションデータ１７の側でＰＢ１３の番号を指定することにより、格納制御信号１９のソースをルーチングマトリクス１５からの信号１８と、コンフィグレーション１７とから選択できるようにしている。図３２の格納制御ユニット４０では、４つのＰＢの格納ユニット３０を１つのグループとして制御しており、それぞれの格納ユニット３０をコンフィグレーションデータ１７により個別に選択できる。したがって、格納ユニット３０を制御するフレキシビリティは高いが、実装するためのシリコン面積は大きくなる。
【００９３】
図３３は、再構成可能なデバイス１０をベースとしたデータ処理装置１３０の概略構成を示している。データ処理装置１３０は、デバイス１０と、このデバイス１０により処理されるデータを入出力するためのインターフェイス１３１とを含む。このデータ処理装置１３０は、さらに、複数のコンフィグレーションデータのグループあるいはブロック、またはコンフィグレーションデータファイル１３２を格納するためのメモリ１３３と、再構成可能なデバイス１０にコンフィグレーションデータファイル１３２の内容をセットするための制御ユニット１３４とを含む。制御ユニット１３４は、例えば、ＲＩＳＣなどの汎用プロセッサであり、再構成可能なデバイス１０に含まれるコンフィグレーションメモリ１１にセットあるいは格納されるコンフィグレーションデータ１７を切り換える。これにより、再構成可能なデバイス１０を、さらに多種多様な目的で利用することができる。また、メモリ１３３の内容を、インターフェイス１３１を介して外部から変更できるようにすることにより、さらに、データ処理装置１３０の汎用性は増大する。制御ユニット１３４の機能を再構成可能なデバイス１０に実現することにより、制御ユニット１３４を省くことも可能である。
【００９４】
インターフェイス１３１は、主に、物理的なインターフェイス機構をサポートする。インターフェイス１３１は、さらに、伝送路を介してデータを交換するための処理としてアナログ処理が必要な場合は、そのためのアナログ回路をサポートする。伝送路を介してデータを交換するためのデジタル処理は、再構成可能なデバイス１０でサポートすることが可能である。インターフェイスとしての機能あるいはその一部を再構成可能なデバイス１０によりサポートすることにより、データの種別、データを交換するためのプロトコルなどに依存しない、あるいは汎用的なデータ処理装置を提供することができる。このデータ処理装置１３０を適用可能なアプリケーションには、例えば、プログラムベースのＣＰＵに代わる汎用的な処理装置、ルータなどのネットワーク処理装置、デコーダ・エンコーダとしての機能を含む画像処理装置、無線・有線を含む電話などの通信装置が含まれる。
【００９５】
以上に説明した再構成可能な集積回路装置（デバイス）は、マルチＦＦ３１を備えた格納ユニット３０を含む複数のＰＢ１３を有する。各ＰＢ１３においては、コンフィグレーションデータ１７によりマルチＦＦ３１が制御され、論理演算ユニット２１の出力２５をマルチＦＦ３１にラッチし、また、それとは独立に、マルチＦＦ３１のレジスタ３１ｒにラッチされた演算結果を出力できる。したがって、個々のＰＢ１３の利用効率が大幅に向上し、少ないハードウェア資源でユーザー回路を実装できる。また、ハードウェア資源が不足することを防止できるので、並列度を上げて処理速度の向上を図ることも容易となる。
【００９６】
なお、上記に示したデバイスおよび演算ブロックの例は、本発明に含まれる再構成可能な装置の幾つかの例に過ぎず、本発明は上記の回路例に限定されるものではない。上述した集積回路装置は、単体でチップなどの形態で提供できる。上述した集積回路を含むＬＳＩあるいはＡＳＩＣなどの半導体装置も本発明に含まれる。また、上記においては、半導体集積回路技術をベースにした装置、例えばＬＳＩに本発明を適用する例を説明しているが、いわゆる回路網を形成するための再構成可能な装置、および再構成可能な装置を含む、あるいは再構成可能な装置をベースにしたデータ処理装置のすべてに本発明を適用することが可能である。すなわち、電気あるいは電子レベルの回路技術をベースにした回路装置に限らず、光、生体、分子あるいは原子構造、遺伝子構造などをベースにした回路網を形成する全ての再構成可能な装置に対して本発明を適用できる。
【図１】
2006129722.tif 000002
【図２】
2006129722.tif 000003
【図３】
2006129722.tif 000004
【図４】
2006129722.tif 000005
【図５】
2006129722.tif 000006
【図６】
2006129722.tif 000007
【図７】
2006129722.tif 000008
【図８】
2006129722.tif 000009
【図９】
2006129722.tif 000010
【図１０】
2006129722.tif 000011
【図１１】
2006129722.tif 000012
【図１２】
2006129722.tif 000013
【図１３】
2006129722.tif 000014
【図１４】
2006129722.tif 000015
【図１５】
2006129722.tif 000016
【図１６】
2006129722.tif 000017
【図１７】
2006129722.tif 000018
【図１８】
2006129722.tif 000019
【図１９】
2006129722.tif 000020
【図２０】
2006129722.tif 000021
【図２１】
2006129722.tif 000022
【図２２】
2006129722.tif 000023
【図２３】
2006129722.tif 000024
【図２４】
2006129722.tif 000025
【図２５】
2006129722.tif 000026
【図２６】
2006129722.tif 000027
【図２７】
2006129722.tif 000028
【図２８】
2006129722.tif 000029
【図２９】
2006129722.tif 000030
【図３０】
2006129722.tif 000031
【図３１】
2006129722.tif 000032
【図３２】
2006129722.tif 000033
【図３３】
2006129722.tif 000034
【国際調査報告】
2006129722.tif 000035
2006129722.tif 000036
2006129722.tif 000037