(57)【特許請求の範囲】
【請求項１】
クロック単位で進むサイクル毎に再構成可能な論理回路と、ハードウェア制御情報を格納したライブラリとを有するデータ処理装置であって、
前記ハードウェア制御情報は、アプリケーションを実行するために１クロックで処理が完結する各ステートの機能のみをそれぞれ実現する複数のサイクルベース回路を個々に前記論理回路にマッピングするための複数のサイクルベースマッピング情報と、前記アプリケーションの実行状態により、それらのサイクルベースマッピング情報の少なくともいずれかを選択するための構成選択情報とを備えており、さらに、当該データ処理装置は、
前記構成選択情報に基づくサイクル毎の要請により、前記複数のサイクルベースマッピング情報の少なくともいずれかにより前記論理回路の少なくとも一部を再構成する制御ユニットを有するデータ処理装置。
【請求項２】
請求項１において、前記複数のサイクルベースマッピング情報は、前記サイクル毎の機能を阻害することなくマージできるサイクルベースマッピング情報がマージされた複合サイクルベースマッピング情報を含む、データ処理装置。
【請求項３】
請求項１または２において、前記複数のサイクルベースマッピング情報は、各ステートの前記制御ユニットを前記論理回路にマッピングするための情報をそれぞれ含んでおり、
前記各ステートの制御ユニットが、前記論理回路に再構成される、データ処理装置。
【請求項４】
クロック単位で進むサイクル毎に再構成可能な論理回路と、ハードウェア制御情報を格納したライブラリとを有するデータ処理装置であって、
前記ハードウェア制御情報は、アプリケーションを実行するために１クロックで処理が完結する各ステートの機能のみをそれぞれ実現する複数のサイクルベース回路を個々に、前記論理回路にマッピングするための複数のサイクルベースマッピング情報と、前記アプリケーションの実行状態により、それらのサイクルベースマッピング情報の少なくともいずれかを選択するための構成選択情報とを備えており、
前記論理回路の少なくとも一部は、前記構成選択情報に基づくサイクル毎の要請により、前記複数のサイクルベースマッピング情報の少なくともいずれかにより再構成される、データ処理装置。
【請求項５】
請求項４において、前記複数のサイクルベースマッピング情報は、各ステートの前記制御ユニットを前記論理回路にマッピングするための情報をそれぞれ含んでおり、
前記論理回路の少なくとも一部は、前記論理回路に再構成された前記各ステートの制御ユニットの要請により再構成される、データ処理装置。
【請求項６】
クロック単位で進むサイクル毎に再構成可能な論理回路を有するデータ処理装置の制御方法であって、ハードウェア制御情報に基づき前記論理回路の少なくとも一部を再構成する工程を有し、
前記ハードウェア制御情報は、アプリケーションを実行するために１クロックで処理が完結する各ステートの機能のみをそれぞれ実現する複数のサイクルベース回路を個々に前記論理回路にマッピングするための複数のサイクルベースマッピング情報と、前記アプリケーションの実行状態により、それらのサイクルベースマッピング情報の少なくともいずれかを選択するための構成選択情報とを含み、
前記再構成する工程は、前記構成選択情報に基づくサイクル毎の要請により、前記複数のサイクルベースマッピング情報のいずれかを選択して前記論理回路の少なくとも一部を再構成することを含む、制御方法。
【請求項７】
請求項６において、前記複数のサイクルベースマッピング情報は、各ステートの前記制御ユニットを前記論理回路にマッピングするための情報をそれぞれ含んでおり、
前記再構成する工程は、前記論理回路に再構成された前記各ステートの制御ユニットの要請により、前記論理回路の少なくとも一部を再構成することを含む、制御方法。
【請求項８】
再構成可能な論理回路を制御するためのハードウェア制御情報を生成するための生成システムであって、
アプリケーションを実行するためにクロック単位で処理が進むサイクル毎の機能であって１クロックで処理が完結する各ステートの機能のみをそれぞれ実現する複数のサイクルベース回路の回路情報を生成する機能と、
前記複数のサイクルベース回路を前記論理回路にそれぞれマッピングするための複数のサイクルベースマッピング情報、および、前記アプリケーションの実行状態により、それらのサイクルベースマッピング情報の少なくともいずれかを選択するための構成選択情報を含む前記ハードウェア制御情報を生成する機能とを有する、生成システム。
【請求項９】
請求項８において、さらに、前記複数のサイクルベースマッピング情報の中の、前記サイクル毎の機能を阻害することなくマージできるサイクルベースマッピング情報を抽出して、それらをマージして複合サイクルベースマッピング情報を生成する機能を有する、生成システム。
【請求項１０】
請求項８または９において、前記ハードウェア制御情報を生成する機能は、各ステートの前記構成選択情報を生成して前記サイクルベースマッピング情報にマージする、生成システム。
【請求項１１】
請求項８ないし１０のいずれかにおいて、前記回路情報を生成する機能は、前記アプリケーションを実行するためのコントロールデータフローダイアグラムに基づき、前記複数のサイクルベース回路の情報を生成する、生成システム。
【請求項１２】
請求項８ないし１０のいずれかにおいて、前記回路情報を生成する機能は、前記アプリケーションを実行するためのＲＴＬをサイクルベースに分解して、前記複数のサイクルベース回路の情報を生成する、生成システム。
【請求項１３】
再構成可能な論理回路を制御するためのハードウェア制御情報を生成する方法であって、
アプリケーションを実行するためにクロック単位で処理が進むサイクル毎の機能であって１クロックで処理が完結する各ステートの機能のみをそれぞれ実現する複数のサイクルベース回路の回路情報を生成する工程と、
前記複数のサイクルベース回路を前記論理回路にそれぞれマッピングするための複数のサイクルベースマッピング情報、および、前記アプリケーションの実行状態により、それらのサイクルベースマッピング情報の少なくともいずれかを選択するための構成選択情報を含む前記ハードウェア制御情報を生成する工程とを有する、生成する方法。
【請求項１４】
請求項１３において、さらに、前記複数のサイクルベースマッピング情報の中の、前記サイクル毎の機能を阻害することなくマージできるサイクルベースマッピング情報を抽出して、それらをマージして複合サイクルベースマッピング情報を生成する工程を有する、生成する方法。
【請求項１５】
請求項１３または１４において、前記ハードウェア制御情報を生成する工程では、各ステートの前記構成選択情報を生成し、前記サイクルベースマッピング情報にマージする、生成する方法。
【請求項１６】
請求項１３ないし１５のいずれかにおいて、前記回路情報を生成する工程では、前記アプリケーションを実行するためのコントロールデータフローダイアグラムに基づき、前記複数のサイクルベース回路の情報を生成する、生成する方法。
【請求項１７】
請求項１３ないし１５のいずれかにおいて、前記回路情報を生成する工程では、前記アプリケーションを実行するためのＲＴＬをサイクルベースに分解して、前記複数のサイクルベース回路の情報を生成する、生成する方法。
【請求項１８】
再構成可能な論理回路を有するデータ処理装置を制御するためのハードウェア制御情報であって、アプリケーションを実行するためにクロック単位で処理が進むサイクル毎の機能であって１クロックで処理が完結する各ステートの機能のみをそれぞれ実現する複数のサイクルベース回路を個々に前記論理回路にマッピングするための複数のサイクルベースマッピング情報と、前記アプリケーションの実行状態により、それらのサイクルベースマッピング情報の少なくともいずれかを選択するための構成選択情報とを有するハードウェア制御情報が記録されている記録媒体。
【請求項１９】
請求項１８において、前記複数のサイクルベースマッピング情報は、前記サイクル毎の機能を阻害することなく、複数のサイクルベースマッピング情報がマージされた複合サイクルベースマッピング情報を含んでいる、記録媒体。
【請求項２０】
請求項１８において、前記構成選択情報は、各ステートの構成選択情報であり、前記サイクルベースマッピング情報にマージされている、記録媒体。
【請求項２１】
請求項１ないし３のいずれかにおいて、前記複数のサイクルベース回路はそれぞれインプットセレクタを含まない回路である、データ処理装置。
【請求項２２】
請求項４または５において、前記複数のサイクルベース回路はそれぞれインプットセレクタを含まない回路である、データ処理装置。
【請求項２３】
請求項６または７において、前記複数のサイクルベース回路はそれぞれインプットセレクタを含まない回路である、制御方法。
【請求項２４】
請求項８ないし１２のいずれかにおいて、前記複数のサイクルベース回路はそれぞれインプットセレクタを含まない回路である、生成システム。
【請求項２５】
請求項１２において、前記回路情報を生成する機能は、前記ＲＴＬからインプットセレクタおよびセレクタ制御信号を消去することにより、前記ＲＴＬをサイクルベースに分解する機能を含む、生成システム。
【請求項２６】
請求項１３ないし１７のいずれかにおいて、前記複数のサイクルベース回路はそれぞれインプットセレクタを含まない回路である、生成する方法。
【請求項２７】
請求項１７において、前記回路情報を生成する工程は、前記ＲＴＬからインプットセレクタおよびセレクタ制御信号を消去することにより、前記ＲＴＬをサイクルベースに分解することを含む、生成する方法。
【請求項２８】
請求項１８ないし２０のいずれかにおいて、前記複数のサイクルベース回路はそれぞれインプットセレクタを含まない回路である、記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、再構成可能な論理回路を有するデータ処理装置に関するものである。
【背景技術】
【０００２】
回路を再構成できるプログラマブルデバイスとして、ＦＰＧＡ（Field Programmable Gate Array）と称されるデバイスが知られている。特開２０００−４０７４５号公報には、ＦＰＧＡに論理回路の異なる部分を実装する技術の１つとして、論理回路を特徴付ける初期ネットリストを多くのページへと区分し、ＦＰＧＡにこれらのページの１つの回路を実装することが記載されている。これにより、ＦＰＧＡの物理的容量よりもはるかに大きな回路の実装を可能にしようとしている。特表２００３−５１８６６６号公報には、デザインネットリストをスタティックマクロの組と、再構成可能なマクロコンテキストの組に分け、再構成可能なコンテキストの各々をコンパイルして初期デバイスコンテキストを配置配線することが記載されている。
【発明の開示】
【０００３】
ＦＰＧＡは動的に再構成可能であるとは言っても、プログラミングするのに少なくとも数１０サイクルを要し、その間は有意義な仕事を行えない。したがって、上記のハードウェアのセットを再構成する方法は、再構成する都度、５００〜１０００サイクル以上、その構成を動かし、纏まった処理を行うことを想定している。つまり、再構成の対象となる回路は、「パリティ有りモード用の処理回路」と「パリティ無しモード用の処理回路」のように、モード毎に場合分けされた、単体の構成として、それなりに意義のある機能モジュールである。アプリケーションが、そのような機能モジュールレベルの再構成の可能性を持たない場合は、上記の従来技術を効果的に適用することは難しい。
【０００４】
本発明においては、サイクルベースで再構成可能なハードウェアに、アプリケーションを実行するための回路を実装するための技術を提供する。このハードウェアは、サイクル毎に回路構成を変えることができる。したがって、上記の従来技術を使って５００〜１０００サイクル単位で機能モジュールレベルの動的再構成を行えるだけでなく、より細かな単位あるいはサイクルでの動的再構成をも行えるようになり、動的再構成の適用可能範囲が広がる。再構成時間を数１０サイクルから１サイクルへと量的に変えることにより、再構成利用形態が機能モジュールレベルから動作ステートレベルへと質的に変わる。このため、そのような再構成可能な論理回路を備えたデータ処理装置の制御に適した制御情報および方法を提供する。
【０００５】
本発明の１つの態様は、クロック単位で進むサイクル毎に再構成可能な論理回路と、ハードウェア制御情報を格納したライブラリとを有するデータ処理装置である。ハードウェア制御情報は、アプリケーションを実行するために１クロックで処理が完結する機能のみをそれぞれ実現するための複数のサイクルベース回路を個々に再構成可能な論理回路にマッピングするための複数のサイクルベースマッピング情報と、そのアプリケーションの実行状態により、それらのサイクルベースマッピング情報の少なくともいずれかを選択するための構成選択情報とを備えている。さらに、このデータ処理装置は、構成選択情報に基づくサイクル毎の要請により、複数のサイクルベースマッピング情報の少なくともいずれかにより論理回路の少なくとも一部を再構成する制御ユニットを有する。
【０００６】
複数のサイクルベースマッピング情報は、サイクル毎の機能を阻害することなくマージできるサイクルベースマッピング情報がマージされた複合サイクルベースマッピング情報を含むものであっても良い。また、複数のサイクルベースマッピング情報は、各ステートの制御ユニットを論理回路にマッピングするための情報をそれぞれ含んでいても良く、その場合は、各ステートの制御ユニットが論理回路に再構成される。
【０００７】
本発明の他の態様の１つは、クロック単位で進むサイクル毎に再構成可能な論理回路と、ハードウェア制御情報を格納したライブラリとを有するデータ処理装置であって、論理回路の少なくとも一部が構成選択情報に基づくサイクル毎の要請により、複数のサイクルベースマッピング情報の少なくともいずれかにより再構成されるものである。複数のサイクルベースマッピング情報が、各ステートの制御ユニットを論理回路にマッピングするための情報をそれぞれ含んでいる場合は、論理回路の少なくとも一部は、論理回路に再構成された各ステートの制御ユニットの要請により再構成される。
【０００８】
本発明のさらに異なる態様の１つは、クロック単位で進むサイクル毎に再構成可能な論理回路を有するデータ処理装置の制御方法であって、ハードウェア制御情報に基づき再構成可能な論理回路の少なくとも一部を再構成する工程を有し、この再構成する工程が、構成選択情報に基づくサイクル毎の要請により、複数のサイクルベースマッピング情報の少なくともいずれかを選択して論理回路の少なくとも一部を再構成することを含む、制御方法である。複数のサイクルベースマッピング情報が、各ステートの制御ユニットを論理回路にマッピングするための情報をそれぞれ含んでいる場合は、再構成する工程は、論理回路に再構成された各ステートの制御ユニットの要請により、論理回路の少なくとも一部を再構成することを含む。
【０００９】
本発明のさらに異なる態様の１つは、再構成可能な論理回路を制御するためのハードウェア制御情報を生成するための生成システムであって、アプリケーションを実行するためにクロック単位で処理が進むサイクル毎の機能であって１クロックで処理が完結する各ステートの機能のみをそれぞれ実現するための複数のサイクルベース回路の回路情報を生成する機能と、ハードウェア制御情報を生成する機能とを有する生成システムである。
【００１０】
本発明のさらに異なる態様の１つは、本発明における再構成可能な論理回路を制御するための情報を生成する方法であって、アプリケーションを実行するためにクロック単位で処理が進むサイクル毎の機能であって１クロックで処理が完結する各ステートの機能のみをそれぞれ実現するための複数のサイクルベース回路の回路情報を生成する工程と、それらサイクルベース回路を個々に再構成可能な論理回路にマッピングするための複数のサイクルベースマッピング情報、および、アプリケーションの実行状態により、それらのサイクルベースマッピング情報の少なくともいずれかを選択するための構成選択情報を含むハードウェア制御情報を生成する工程とを有する。
【００１１】
固定化された回路を生成する場合、サイクル毎の機能を抽出するとしても、そのサイクル毎の機能をサイクル毎に回路として具現化する必要はない。その代わりに、サイクル毎の機能を実現するために、実空間に固定された論理回路を生成する。例えば、サイクル毎の機能を、信号の伝達に従ってサイクルの範囲を超えて組み合わせてパイプライン化された回路を生成する。あるいは、演算器やレジスタなどの論理素子を共用するためにセレクタを配置して、全サイクル分の全機能を包含する１つの統合回路を生成する。そのような回路設計の結果は、通常、ＲＴＬ（Register Transfer Level）で表現される。さらに、そのＲＴＬを論理合成してネットリストを生成し、配置配線を行なってハードウェア化する。
【００１２】
これに対し、本発明においては、サイクル毎の機能を、サイクル毎に回路化する。クロック単位でサイクルが進むので、上記は、クロック毎の機能を、クロック毎に回路化すると言っても良い。あるアプリケーションを実行するためのサイクル毎の機能をそれぞれ実現するためのサイクルベース回路の情報（以降では「ＣＢ回路情報」とも称する）がＲＴＬで記述されるのであれば、サイクル毎にＲＴＬが生成されることになる
【００１３】
複数のサイクルベース回路を再構成可能な論理回路にそれぞれマッピングするための複数のサイクルベースマッピング情報（以降では「ＣＢマッピング情報」とも称する）により、サイクルベースの回路（以降では「ＣＢ回路」とも称する）をサイクル単位で再構成可能な論理回路に再構成できる。論理合成ツールを用いるのであれば、サイクル毎のＲＴＬを論理合成ツールでサイクル毎にネットリスト化して、配置配線を行ない、ＣＢマッピング情報を生成する。この過程では、パイプライン化するためにＦＦを挿入したり、演算器やレジスタなどの論理素子の入力を切り換えてそれらを共用するためのセレクタを配置したり、セレクタ制御信号を生成するという作業は基本的には発生しない。
【００１４】
したがって、再構成可能な論理回路にマッピングされるＣＢ回路の構成は、入力切替用のセレクタなどは基本的に含まず、データパスもそのサイクルで必要な分だけを表すシンプルなものとなり、少ない論理素子で実装することが可能となる。また、論理素子の入力を切り換えて論理を選択するためのセレクタ制御信号は不要となり、代わりに、アプリケーションの実行状態により、ＣＢマッピング情報を選択する構成選択情報により論理が選択される。したがって、本発明により、再構成可能な回路領域を、機能モジュールレベルの利用形態から、動作ステートレベルの利用形態に変更することが可能となる。
【００１５】
複数のサイクルベースマッピング情報の中の、サイクル毎の機能を阻害することなくマージできるサイクルベースマッピング情報を抽出し、それらをマージして複合サイクルベースマッピング情報を生成する工程を設けることが望ましい。これは、サイクル間を伝達される信号に沿ってサイクルを超えて回路を組み合わせるということではなく、ＣＢマッピング情報の種類を減らし、アプリケーションを実行するために必要となるＣＢマッピング情報の情報量を減らすことを目的とするものである。したがって、マッピングするタイミングとして隣接するＣＢマッピング情報を選択してマージするのではなく、タイミングは離れていてもＣＢ回路の構成に共通点があるものをマージして、あるサイクルの機能には不要であるが、その機能を阻害しない配線を備えた複合ＣＢマッピング情報を生成したり、ＣＢマッピング情報が少ないものをマージして、独立したＣＢ回路を１つの複合ＣＢマッピング情報により生成したりすることが含まれる。
【００１６】
また、ハードウェア制御情報を生成する工程では、サイクル毎の構成選択情報を生成し、サイクルベースマッピング情報にマージすることが可能である。この場合は、ＣＢマッピング情報によりマッピングされるＣＢ回路にサイクル毎の構成選択情報を生成する構成が含まれるので、再構成可能な論理回路にＣＢ回路をマッピング、あるいは再構成することによりアプリケーションを実行できる。
【００１７】
回路情報を生成する工程では、アプリケーションを実行するためのコントロールデータフローダイアグラムに基づき、複数のサイクルベース回路の情報を生成できる。例えば、Ｃ言語などの高級言語によりアプリケーションの仕様が与えられたときに、Ｃ言語からＣＢ回路情報を生成し、ＣＢマッピング情報を生成することができる。また、回路情報を生成する工程では、アプリケーションを実行するためのＲＴＬをサイクルベースに分解して、複数のサイクルベース回路情報を生成することも可能である。すでにＲＴＬまで設計が進んだＲＴＬ資産を用いて、ＣＢ回路情報を生成し、ＣＢマッピング情報を生成することができる。
【００１８】
本発明のハードウェア制御情報は、ＲＯＭなどの適当な記録媒体に記録して提供することができる。ハードウェア制御情報は、インターネットなどのコンピュータネットワークを用いて、有線により、あるいは無線により伝達することも可能である。そして、再構成可能な論理回路を有するデータ処理装置によりアプリケーションを実行できる。
【図面の簡単な説明】
【００１９】
【図１】ハードウェア制御情報により制御されるデータ処理装置の概略構成を示す。
【図２】図１と異なるデータ処理装置の概略構成を示す。
【図３】サイクルベースで回路を再構成可能なＲＣ領域のハードウェア構成を示す。
【図４】エレメントの配置を示す。
【図５】エレメントの構成を示す。
【図６】演算コアの構成を示す。
【図７】演算コアの動作例を示す。
【図８】演算コアの他の動作例を示す。
【図９】演算コアで実行可能な論理演算の例を示す。
【図１０】ＦＰＧＡあるいはＡＳＩＣ用に、Ｃ言語の仕様からハードウェア構成を決定する過程を示すフローチャート。
【図１１】ＡＳＩＣのマスクパターンやＦＰＧＡの構成情報を生成する過程をさらに詳しく示すフローチャート。
【図１２】ハードウェア制御情報の生成システムの概要を示すブロック図。
【図１３】ハードウェア制御情報を生成する方法を示すフローチャート。
【図１４】図１４（ａ）はＣ言語仕様の一例、図１４（ｂ）はＣＤＦＧの一例を示す。
【図１５】サイクル毎の機能を抽出した状態を示す。
【図１６】図１６（ａ）はＡＳＩＣまたはＦＰＧＡ用の回路例、図１６（ｂ）はＦＳＭの例を示す。
【図１７】図１６（ａ）および（ｂ）の回路のＲＴＬ記述を示す。
【図１８】図１８（ａ）は、サイクル０の回路、図１８（ｂ）はそのＲＴＬ記述を示す。
【図１９】図１９（ａ）は、サイクル１の回路、図１９（ｂ）はそのＲＴＬ記述を示す。
【図２０】図２０（ａ）は、サイクル２の回路、図２０（ｂ）はそのＲＴＬ記述を示す。
【図２１】選択構成情報を示す。
【図２２】図２２（ａ）は、サイクル１および２マージした回路、図２０（ｂ）はそのＲＴＬ記述を示す。
【図２３】選択構成情報を示す。
【図２４】データ処理装置の制御方法の概要を示す。
【図２５】ハードウェア制御情報を生成する、異なる方法を示すフローチャート。
【図２６】ハードウェア制御情報を生成する、さらに異なる方法を示すフローチャート。
【図２７】サイクル毎に生成されるＲＴＬ記述の異なる例を示す。
【図２８】ＲＴＬ記述をマージした例を示す。
【発明を実施するための形態】
【００２０】
図１に示したデータ処理装置１は、回路を動的に再構成可能な論理回路領域（ＲＣ領域、リコンフィギャラブル領域）１０と、幾つかのアプリケーションを実行するためのハードウェア制御情報２０を格納（記録）したライブラリ２のためのメモリ３とを備えている電子デバイス、例えば、ＬＳＩ、ＩＣ、チップあるいはチップセットである。データ処理装置１は、光デバイスあるいは光電子デバイスなどであっても良い。このデータ処理装置１は、さらに、このライブラリ２からハードウェア制御情報２０の所望のサイクルベースマッピング情報（ＣＢマッピング情報）２１を取得（フェッチあるいはダウンロード）してＲＣ領域１０に、あるいはＲＣ領域１０の一部の適当な領域にマッピングしてＣＢ回路１９を再構成する制御ユニットであるマッピングユニット（ＭＵ）１１と、ハードウェアを初期化したり、ハードウェア制御情報２０の選択情報２２をデコードして所望のＣＢマッピング情報２１を選択したりする高速ローディング制御ユニット（ＲＬＣ）１２とを備えている。さらに、データ処理装置１は、アプリケーションプログラム４が記憶されたＲＡＭ５と、ワーク用のメモリ６と、割り込み信号を受信する割り込み制御ユニット（ＩＵ）７と、データ処理装置１の各ハードウェア資源にクロック信号を供給するクロック発生源８と、外部メモリに対してデータの入出力を制御するデータ入出力インタフェース９とを備えている。
【００２１】
ＭＵ１１、ＲＬＣ１２およびＩＵ７は、固定回路によりデータ処理装置に実装あるいは実現することも可能である。このデータ処理装置１においては、ＭＵ１１、ＲＬＣ１２およびＩＵ７としての機能は、ＲＣ領域１０にＣＢマッピング情報２１により所望の回路をマッピングあるいは再構成することにより実現している。したがって、ライブラリ２には、このデータ処理装置１の基本的なシステムをサポートする回路を構成するためのハードウェア制御情報２９も格納されている。
【００２２】
図２に、異なるデータ処理装置の概略構成を示してある。このデータ処理装置１もサイクル毎に再構成可能な論理回路であるＲＣ領域１と、ハードウェア制御情報２０を格納したライブラリ２のためのメモリ３とを有するデータ処理装置である。さらに、本図に示したデータ処理装置１では、ＭＵ１１およびＲＬＣ１２としての機能を提供する回路を生成するための情報は、ハードウェア制御情報２０の個々のＣＢマッピング情報２１に含まれている。したがって、サイクル毎に、あるいはサイクル毎の要請により、ＣＢ回路１９としてアプリケーションを実行するための回路と共にＲＣ領域１０に再構成される。さらに、選択情報２２もサイクルベース化されてＣＢマッピング情報２１に含まれている。したがって、ＲＣ領域１０の全体が、あるアプリケーションを実行するためにサイクルベースで再構成できる領域となる。複数のアプリケーションを同時実行する際は、複数のアプリケーションを実行するために、異なるＣＢ回路１９がＲＣ領域１０に再構成される。
【００２３】
また、再構成可能な領域１０は、サイクルベースで再構成可能であるが、必ずしもサイクルベースで再構成する必要はない。回路を再構成するために要する電力消費などを考えると、サイクルベースで再構成しないで良い回路は、サイクルベースで再構成しないことが望ましいケースもある。さらに、再構成可能な領域１０のハードウェア資源が十分にあり、いったん構成したＣＢ回路１９が数クロック先でも使用されることが分かっているのであれば、そのＣＢ回路１９を存続させておくことも有効である。したがって、アプリケーションを実行するためにＲＣ領域１０に構成される回路は、幾つかのＣＢ回路１９に分割することが可能であり、その全てあるいは一部がサイクル毎の要請により再構成される。
【００２４】
図３に、サイクルベースで回路を再構成可能なＲＣ領域１０の一例を示してある。このＲＣ領域１０は、格子状（アレイ状あるいはマトリクス状）に配列され、各々の論理演算を変更可能な複数のエレメントの集合である回路ブロック（ｒｘｅ＿ｐｌａｎｅ）５１と、回路ブロック５１を接続する配線５２とを備えている。ＣＢマッピング情報２１は、回路ブロック５１の単位でＣＢ回路１９をマッピングするように生成することが望ましい。すなわち、あるサイクルの機能を実現するためのＣＢ回路１９が複数の回路ブロック５１を消費してマッピングされる場合、回路ブロック５１の数に対応した複数のＣＢマッピング情報２１によりＣＢ回路１９を構成するようにＣＢマッピング情報２１を生成することが望ましい。これにより１つまたは複数の回路ブロック５１を再構成することにより次のサイクルの機能を実現するＣＢ回路１９が実現できる場合は、マッピングするためのＣＢマッピング情報２１の情報量を少なくすることができる。また、回路ブロック５１の単位で、ＣＢマッピング情報２１をマージして情報量を少なくすることができる。
【００２５】
図４に、１つの回路ブロック５１の構成を示してある。この回路ブロック５１には、１６個の論理エレメント５３が４×４のアレイ構造をなすように配列されている。各々の論理エレメント５３は図面の上下左右の４方向に隣接する論理エレメント５３と４ビットのレイア１のバス５４により接続されている。さらに、上下左右に隣接する論理エレメント５３を越して、その外側に位置する論理エレメント５３と接続するレイア２のバス５５も用意されている。このため、論理エレメント５３の間を、よりフレキシブルに接続することができる。さらに、論理エレメント５３を３つ飛び越したレイア３のバスを配置することも可能である。
【００２６】
各々の論理エレメント５３は、論理演算エレメントとしての機能と、論理エレメント間の接続切り換えを行う配線スイッチとしての機能を備えている。そして、演算する論理と、配線接続の状態を高速で変更または交換する必要があるので、このＲＣ領域１０には、ＲＸＥ（Rapid eXchange Element）５３と称される高速で交換動作が可能なエレメントが配置されている。
【００２７】
図５に、ＲＸＥ５３の構成を示してある。ＲＸＥ５３は、４系統の入力６１と、４系統の出力６２と、４系統の入力６１から任意の入力データを選択する入力インタフェース６３と、この入力インタフェース６３により選択された入力データφｉを論理演算してデータを出力する演算コア６５と、４系統の入力６１と演算コア６５の出力データφｏとを任意に選択して４系統の出力６２へ接続可能な出力インタフェース６４とを備えている。演算コア６５は、論理演算を変更可能な構成になっており、論理を変更可能な演算エレメントとしての機能を果たす。また、入力インタフェース６３は、４系統の入力６１から任意の１ビットを選択するための１６対１のセレクタ６３ｓが複数配置された構成となっている。出力インタフェース６４は、演算コア６５からの出力φｏと４系統の入力６１のルーティングを兼ねた７対１のセレクタ６４ｓが複数配置された構成となっている。
【００２８】
図６に、演算コア（ｒｘｅ＿ｃｏｒｅ）６５の構成を示してある。演算コア６５は、論理演算を指示する１６ビットのファンクションコードφｆを入力とし、入力データφｉにより出力データφｏを選択するセレクタ６６を備えている。演算コア６５は、さらに、４ビットの入力データφｉをデコードして１６ビットのセレクタ６６の選択信号を生成するデコーダ６７と、４系統の入力６１のいずれかのデータ、または、出力データφｏをラッチするレジスタ６８と、レジスタ６８にラッチする信号を選択するためのセレクタ６９ａおよび６９ｂとを備えている。
【００２９】
図７および図８に、演算コア６５の動作を示している。演算コア６５はモード信号φｍによって動作が変わる。図７のモード０では、演算コア６５は、４ビットの入力データφｉにより１ビットの出力データφｏを生成し、その出力データφｏをレジスタ６８でラッチして出力する。図７のモード１では、演算コア６５は、４ビットの入力データφｉにより１ビットの出力データφｏを生成し、その出力データφｏをレジスタ６８でラッチせずに出力する。出力データφｏは、１６ビットのファンクションコードφｆと、入力データφｉをデコードした結果による。したがって、図９に纏めて示すように、これらのモード０および１においては、ファンクションコードφｆを変えることにより、演算コア６５を４入力ＡＮＤから４入力コンパレータまで、９種類以上の異なる論理演算素子として使用することができる。
【００３０】
さらに、演算コア６５は、セレクタ６６とファンクションコードφｆの組み合わせに論理演算を行っている。このため、従来のＦＰＧＡのようにＳＲＡＭなどの記憶素子を用いたルックアップテーブル（ＬＵＴ）に論理をセットする必要がない。したがって、ＳＲＡＭに入出力を行うサイクルを省略することができ、ファンクションコードφｆを演算コア６５に出力したタイミングで瞬時に演算コア６５で行う演算を交換することができる。このため、この演算コア６５は高速交換演算素子と称されており、ファンクションコードφｆをサイクルベースで切り換えて供給することにより、サイクルベースで演算機能を変えることができる。入力インタフェース６３および出力インタフェース６４の機能もサイクルベースで変更することが可能である。したがって、ＲＸＥ５３の機能および接続をサイクル毎に変えることが可能であり、これらのＲＸＥ５３により構成されるＲＣ領域１０にサイクル毎の異なる回路を構成することができる。
【００３１】
図８に示したモード２からモード４においては、１つの演算コア６５が、２ビットの入力信号φｉに対して１ビットの出力信号φｏを出力する２つの演算素子として機能する。すなわち、内蔵された１６対１のセレクタ６６が、２つの４対１のセレクタとして動作するようにセットされる。これらのモード２から４においては、演算コア６５は、図９に示してあるように、ファンクションコードφｆを変えることにより、インバータから２入力ＥＸＮＯＲまで、７種類以上の異なる論理演算素子として使用することができる。
【００３２】
さらに、図８に示したモード５からモード７においては、演算コア６５を、３ビットの入力信号φｉに対して１ビットの出力信号φｏを出力する演算素子として使用できる。追加ビットの入力を許せば、内蔵された１６対１のセレクタ６６を、２つの３対１のセレクタとして動作するようにセットできるので、演算コア６５を２つの３ビット入力１ビット出力の演算素子としても利用できる。これらのモード５から７においては、演算コア６５は、図９に示してあるように、ファンクションコードφｆを変えることにより、３入力ＡＮＤからフルアダーまで、５種類以上の異なる論理演算素子として使用することができる。
【００３３】
このＲＣ領域１０を構成するＲＸＥ５３は、セレクタ方式で高速で論理を交換することが可能である。ＲＸＥ５３は、さらに、内部に出力データをラッチするレジスタ６８を備えており、出力データをスルーで出力することも、Ｆ／Ｆによりクロックに同期した状態で出力することができる。したがって、デジタル回路で良く使用される組み合わせ回路（デコーダ）と、順序回路（ステートマシン）及び演算回路（データパス）を、ハードウェア制御情報２０のＣＢマッピング情報２１により効率よく実装し、実行することができる。
【００３４】
この論理を再構成可能なエレメント（ＲＸＥ）５３は、２次元アレイあるいはマトリクスを構成することを考えている。したがって、２次元に格子状に配置するのに適した４系統の入出力を備えている。しかしながら、エレメント間を接続するネットワークが１次元的であれば、２系統あるいは３系統の入出力で対応することができる。さらには、エレメント間を接続するネットワークが３次元的であれば、５系統以上の入出力を用意することが望ましい。さらに、この演算コア（ｒｘｅ＿ｃｏｒｅ）は、高速で交換動作が可能なようにセレクタ方式を採用しているが、ロジックの交換に複数サイクルかかることを許容できるのであればルックアップテーブル（ＬＵＴ）を備えた演算コアを採用することも可能である。
【００３５】
図１０に、ＡＳＩＣあるいはＦＰＧＡの設計手法の一例を示してある。この設計方法１１０は、Ｃ言語９１などの動作レベル記述からＡＳＩＣあるいはＦＰＧＡに実装する回路９３を生成する方法であり、近年、設計規模の増大にともない多用されつつある。この設計方法１１０は、Ｃ言語９１などの動作レベル記述から動作合成ツールを通してＲＴＬ（Register Transfer Level）によるハードウェア記述９２を生成する、ビへイビア合成と称される工程１１１と、論理合成ツールと配置配線ツールとを通してＡＳＩＣあるいはＦＰＧＡに実装する回路９３を生成する工程１１２とを有する。ＲＴＬ９２は、ＶｅｒｉｌｏｇあるいはＶＨＤＬなどのハードウェア記述言語による回路機能の表現であり、ＡＳＩＣ向けないしＦＰＧＡ向けの論理合成ツールと配置配線ツールとにより、所望のＡＳＩＣマスクパターンないしＦＰＧＡ構成情報に変換する。この設計方法１１０は、動作合成と呼ばれることもある。適当なハードウェア資源を備えたコンピュータにより、これらの処理を行うソフトウェア（プログラム）が、ＡＳＩＣあるいはＦＰＧＡの設計および開発支援用の動作合成ツールとして提供されている。多くの動作合成ツールは、各処理を行うツール（プログラム）の組み合わせにより構成される。
【００３６】
図１１に、ＡＳＩＣ／ＦＰＧＡ向けの動作合成ツールの処理をフローチャートにより示している。ＡＳＩＣ／ＦＰＧＡ向けの動作合成ツールは、ステップ７１において、Ｃ言語などの動作レベル記述９１をまず解析して、コントロールデータフローグラフ（ＣＤＦＧ（Control Data Flow Graph））９４を生成する。ステップ７２において、スケジューリング、演算器割り当て、およびレジスタ割り当てを行い、サイクル毎の機能を実現するためのデータパス３１と、制御ステートマシン３２とを生成する。
【００３７】
ステップ８１において、それらのデータパス３１を組み合わせてパイプライン化したり、なるべく少ないハードウェアリソースで実現できるよう演算器やレジスタを共有化したりする。そのために、演算器およびレジスタの入力側に入力セレクタを挿入したり、タイミングの同期を取るためにＦＦを挿入したりする作業を行う。制御ステートマシン３２は、適当なセレクタ制御信号を出力するように構成され、目的のＲＴＬ（ハードウェア記述）９２が生成される。さらに、ステップ８２において、論理合成ツールによりネットリスト９５を生成し、その後、ステップ８３において、配置配線ツールによりタイミング収束などを検討して、ＡＳＩＣを製造するためのマスクパターンや、ＦＰＧＡにマッピングするための構成情報９６を生成する。
【００３８】
図１２に、サイクルベースで回路を再構成可能な論理回路であるＲＣ領域１０を備えたデータ処理装置１を制御するためのハードウェア制御情報２０の生成するシステム１００の概要を示している。この生成システム１００は、ＨＤＤなどのストレージデバイス１０５に入力情報１０６が入力され、その入力情報１０６からアプリケーションを実行するためのサイクル毎の機能をそれぞれ実現するための複数のサイクルベース回路の回路情報３８を生成する機能１０１と、ハードウェア制御情報２０を生成する機能１０２とを有する。これらの機能１０１は、それぞれにおいて生成された情報３８および２０を、これらの機能間の通信により伝送しても良く、ストレージデバイス１０５に格納した状態で情報を交換しても良い。ハードウェア制御情報２０は、複数のサイクルベース回路をＲＣ領域１０にそれぞれマッピングするための複数のサイクルベースマッピング情報（ＣＢマッピング情報）２１と、アプリケーションの実行状態により、それらのサイクルベースマッピング情報の少なくともいずれかを選択するための構成選択情報２２を含む。生成システム１００は、さらに、ＣＢマッピング情報２１をマージして複合サイクルベースマッピング情報を含むハードウェア制御情報２０を生成する機能１０３も備えている。
【００３９】
この生成システム１００の入力情報１０６は、対象となるアプリケーションそのものの仕様、たとえばアプリケーションプログラムであっても良く、あるいは、そのアプリケーションを実行するために既に生成されたハードウェア情報であっても良い。入力情報１０６には、Ｃ言語プログラム９１などによる高級言語ベースの仕様、ＣＤＦＧ９４のようなデータフローベースの仕様、ＲＴＬ９２などの回路情報ベースの仕様などが含まれる。
【００４０】
この生成システム１００は、データ処理装置１の設計および開発支援用のツールとして提供される。生成システム１００は、コンパイラーあるいは他の設計支援ツールと同様に、適当なハードウェア資源を備えたコンピュータに、生成システム１００の機能を実現するためのソフトウェア（プログラム）をインストールすることにより実現される。それぞれの機能１０１〜１０３は、各処理を行うツール（プログラム）として、ＣＤ−ＲＯＭなどの適当な記録媒体に記録して、あるいはコンピュータネットワークを介して提供することも可能である。また、生成システム１００はコンピュータネットワークにより接続された複数のサーバからなる分散システムにより実現することも可能である。
【００４１】
図１３に、サイクルベースで回路を再構成可能なＲＣ領域１０にマッピングするのに適した情報を備えたハードウェア制御情報２０の生成方法７９をフローチャートにより示してある。このハードウェア制御情報２０を生成する方法７９は、生成システム１００において実行可能な生成方法の一例であり、仕様として入力される情報の種類などにより処理の流れは変わる。
【００４２】
図１３に示したフローチャートでは、ステップ７１において、Ｃ言語などの動作レベル記述９１をまず解析して、ＣＤＦＧ９４を生成する。ステップ７２において、スケジューリング、演算器割り当て、レジスタ割り当て、あるいは統合を行い、サイクル毎の機能を実現するためのデータパス（サイクル毎のデータパス）３１と、制御ステートマシン（コントロールＦＳＭ）３２とを生成する。次のステップ７３において、サイクル毎のデータパス３１をサイクル毎のＲＴＬ３３で記述し、サイクル毎の機能を果たすサイクルベース回路（ＣＢ回路）の回路情報（ＣＢ回路情報）を生成する。このステップ７３において、制御ステートマシン３２の機能は、サイクルベースの構成を選択する選択情報３４に変換される。この例では、ＣＢ回路情報３３と、選択情報３４とを含む情報がサイクルベース回路の回路情報３８として次のステップに供給される。
【００４３】
ステップ７４において、これらのサイクル毎のＲＴＬ３３を、個々に、論理合成し、配置・配線を行なって、サイクル毎にＲＣ領域１０にマッピングするためのＣＢマッピング情報２１と、そのマッピング情報２１をサイクルベースで選択する構成選択情報２２と含むハードウェア制御情報を生成する。
【００４４】
さらに、ステップ７５において、サイクル毎の回路規模を揃えるために、複数のＣＢマッピング情報２１の中の、サイクル毎の機能を阻害することなくマージできる情報をマージし、複合サイクルベースマッピング情報（複合ＣＢマッピング情報）２３を生成する。また、複合ＣＢマッピング情報２３を含んだＣＢマッピング情報２１を選択するように構成選択情報２２もマージする。このようにして、アプリケーションを実行するための回路を構成するＣＢマッピング情報２１と構成選択情報２２とを備えたハードウェア制御情報２０が生成される。
【００４５】
ＣＢマッピング情報２１の複合化は、ＲＴＬ３３の段階で行なうことも可能であり、複合化したサイクル毎のＲＴＬを論理合成および配置配線して複合ＣＢマッピング情報２３を生成することも可能である。この複合化する工程は、ＣＢマッピング情報２３によりマッピングされる回路規模を同程度、例えば、上述した回路ブロック（ｒｘｅ＿ｐｌａｎｅ）５１の単位に合致した規模にしようとするものである。これにより、ハードウェア制御情報２０に含まれるＣＢマッピング情報２１の種類を減らし、アプリケーションを実行するために必要となるハードウェア制御情報２０の情報量を減らすことができる。
【００４６】
したがって、ＣＢマッピング情報２１を複合化する典型的な工程では、サイクル間を伝達される信号に沿ってサイクルを超えて回路を組み合わせてパイプライン化することはなく、また、演算器およびレジスタを多サイクルにわたり使用するために入力セレクタを設けてマルチ化することもない。逆に、サイクルは離れていてもＣＢ回路のＲＴＬ３３に共通点があるものをマージして、あるサイクルの機能には不要であるが、その機能を阻害しない配線を備えた複合ＣＢマッピング情報２３を生成する。また、ＣＢマッピング情報が少ないもの同士をマージして、ｒｘｅ＿ｐｌａｎｅ５１に適したサイズにする、というタイプの複合化も行なう。さらに、同一の演算器およびレジスタを複数のサイクルで共用するように複合化されることもある。入力セレクタにより回路を切り換える代わりに、サイクル毎に配線自体を切り換えることにより同一の演算器が異なる目的で選択されるように複合化することがある。また、演算器あるいはレジスタに対する入出力がそのサイクルの機能には影響を及ぼさないなら、それらの入出力を無視（ドントケア）することにより複合化することがある。
【００４７】
簡単な具体例を用いて、ハードウェア制御情報の生成にさらに説明する。図１４（ａ）にＣソースコード９１の簡単な具体例を示し、図１４（ｂ）に、それを解析した後のＣＤＦＧ９４を示してある。図１５に、このＣＤＦＧ９４を、「演算器の遅延時間はクロック周期の半分より大きい」という条件でスケジューリングして、サイクル毎の機能を抽出した結果を示してある。このスケジューリングでは、３つのレジスタＲ１〜Ｒ３に中間結果を保存しつつ、サイクル０からサイクル２まで３サイクルかけて演算する。図１５に、ＣＤＦＧ９４に加えて、サイクル毎の機能を提供するデータパス３１および制御ＦＳＭ３２を示している。
【００４８】
図１６（ａ）に、これらのサイクル毎のデータパス３１を、全サイクル分の全機能を包含する１つの統合回路として表現した回路構成９２ｃを示してある。この回路構成９２ｃには、データパスの機能を実現するための演算器およびレジスタに加えて、それらの入力セレクタとその制御信号（セレクト信号）が含まれている。また、図１６（ｂ）にＦＳＭ３２の回路構成を示してある。この回路構成９２ｃは、ＡＳＩＣまたはＦＰＧＡ向けに生成される回路であり、演算器やレジスタを使い回すために、各演算器９２ａ、９２ｂおよびレジスタＲ１およびＲ３の入力側にセレクタ９２ｓが追加されている。これらのセレクタ９２ｓの制御信号は、図１６（ｂ）のＦＳＭ回路３２から出力される。
【００４９】
図１７に、図１６（ａ）に示した回路構成９２ｃに対応したＲＴＬ記述９２を示してある。このような図１６（ａ）の回路構成９２ｃに対応したＲＴＬ記述９２を生成し、論理合成ツールおよび配置配線ツールに通すことにより、ＡＳＩＣのマスクパターンないしＦＰＧＡの構成情報９６が生成される。
【００５０】
図１８〜図２１に、サイクル毎の回路情報３３と、それによりマッピングされるＣＢ回路３３ａとを示してある。これらのサイクル毎の回路情報３３と、ＣＢ回路３３ａとは、生成方法７９のステップ７３において、図１４の入力情報に対して生成される例である。図１８（ａ）は、サイクル０のデータパス３１に対応するＣＢ回路３３ａであり、図１８（ｂ）は、そのＣＢ回路情報、すなわち、ＲＴＬ記述３３である。図１９（ａ）は、サイクル１のデータパス３３に対応する回路構成３３ａであり、図１９（ｂ）は、そのＲＴＬ記述３３である。図２０（ａ）は、サイクル２のデータパス３３に対応する回路構成３３ａであり、図２０（ｂ）は、そのＲＴＬ記述３３である。さらに、図２１に、サイクル単位の機能を選択する情報３２を、サイクル単位の構成を選択する情報に変換した構成選択情報３４を示してある。この構成選択情報３４は、ステート番号に対応する実行すべきＣＢ回路３３ａを指示するものであり、簡単な情報となる。
【００５１】
図１４（ａ）に示したＣソースコード９１により与えられた処理は、図１５にデータパスとして示したサイクル毎の機能３１を、サイクル単位で用いることにより実現できる。したがって、図１８（ａ）、図１９（ａ）および図２０（ａ）に示したサイクル毎の回路３３ａを、データ処理装置１のＲＣ領域１０に再構成することにより実現できる。このため、ステップ７４において、それらのサイクル毎の回路３３ａに対応する、図１８（ｂ）、図１９（ｂ）および図２０（ｂ）に示したＲＴＬ記述３３を、個々に論理合成ツールおよび配置配線ツールに通すことにより、ＲＣ領域１０にマッピングする情報（ＣＢマッピング情報）２１を生成できる。さらに、サイクル単位で構成を選択する情報３４を、ＣＢマッピング情報２１を制御する情報２２に変換することにより、ＣＢマッピング情報２１と、それを制御する情報２２とを含むハードウェア制御情報２０を生成できる。
【００５２】
これらのＣＢマッピング情報２１により、データ処理装置１のＲＣ領域１０に再構成されるＣＢ回路３３ａは、図１８（ａ）、図１９（ａ）および図２０（ａ）に示したものになる。これらのＣＢ回路３３ａにおいては、演算器３７ａおよび３７ｂ、さらにはレジスタＲ１およびＲ３の入力側にセレクタは配置されていない。したがって、図１６に示した回路と比較し、構成が簡略化されており、ＲＣ領域１０のハードウェア規模が小さくても、あるいはＲＣ領域１０の一部を用いて、それぞれのＣＢ回路を実現できる。
【００５３】
図１９（ａ）のサイクル１のＣＢ回路３３ａは、演算器３７ａを用いない。図２０（ａ）のサイクル２のＣＢ回路３３ａは、演算器３７ｂおよびレジスタＲ２を用いない。一方、図１８（ａ）のサイクル０のＣＢ回路３３ａでは、１つのサイクルで両方の演算器を使用する。したがって、図１４（ａ）で与えられたＣソースコード９１の機能を図１５のタイミング（性能）で実装するためには、両方の演算器３７ａおよび３７ｂを１サイクルの間に実現するのに十分な規模の再構成可能なハードウェアをＲＣ領域１０に確保する必要がある。サイクル０以外の回路について、両方の演算器３７ａおよび３７ｂを含む程度の規模までマージしても、ＲＣ領域１０の面積的なペナルティはない。したがって、サイクル１および２のＣＢ回路３３ａをマージしてＣＢマッピング情報２１を削減することによりハードウェア制御情報２０の情報量を減らすことができる。
【００５４】
サイクルの異なるＣＢ回路３３ａをマージする代わりに、演算器３７ａおよび３７ｂの内、それぞれのサイクルで使用しない演算器をサイクル毎に開放することも可能である。演算器の使用が要請されないサイクルでは、演算器を開放してもＣＢ回路の処理速度は低下しない。したがって、１つのアプリケーションを実行するためのハードウェア制御情報２０を、他のアプリケーションの処理から開放された演算器を使用するように生成できる。これにより、アプリケーションの実行速度を低下させずに、多種多様なアプリケーションを並列に実行できる。
【００５５】
図２２および図２３に、ステップ７５において、上述したサイクル毎のマッピング情報２１をマージする例を示してある。なお、説明を簡単にするために、図２３および図２４においては、ＣＢ回路３３ａおよびそれらに対応する情報３３により、サイクル毎の回路がマージされる様子を示している。しかしながら、ＲＣ領域１０に個々のサイクル毎の回路３３ａを構成するために使用されるハードウェア資源は、論理合成および配置配線まで処理しないと厳密には決定できない。したがって、ＣＢマッピング情報２１が生成された段階で、複数のＣＢマッピング情報２１をマージできるか否かを決定することが望ましい。この際、回路構成を再度検討する必要があるのであれば、ＲＴＬの段階に戻ってマージを行なうことになる。ハードウェア資源に余裕がある場合、ハードウェア資源の消費の見通しがつく場合などは、ＣＢ回路情報であるＲＴＬ３３の段階でマージすることも可能である。
【００５６】
本例においては、図１９（ａ）に示したサイクル１のＣＢ回路３３ａと、図２０（ａ）に示したサイクル２のＣＢ回路３３ａとをマージすることが可能である。図２２（ａ）にマージした複合ＣＢ回路３５ａの構成を示し、図２２（ｂ）にそのＲＴＬ記述３５を示してある。マージすることにより、サイクル１および２の機能は、回路３５ａを続けて２サイクル実行することで得ることができる。そのため、構成選択情報３４は、図２１から図２３に変換される。なお、サイクル０のＣＢ回路３３ａおよび、そのＲＴＬ記述は図１８（ａ）および（ｂ）と同じである。  図２２（ａ）に示すように、図１９（ａ）および図２０（ａ）に示したサイクル１の回路とサイクル２の回路とをマージすることにより、図１８（ａ）に示したサイクル０の回路と回路規模のバランスが取れた両用回路を生成することができる。そして、ＣＢマッピング情報２１を１ページ分削減できる。したがって、ＲＣ領域１０を有効に活用でき、ハードウェア制御情報２０の情報量を削減でき、ハードウェアライブラリ２に使用されるメモリ３の量を削減できる。また、ＲＣ領域１０の構成を切り換える回数を減らすことができるので、構成切り替えのために消費する電力も低減できる。
【００５７】
ステップ７５のマージする工程では、サイクル０のＣＢ回路のＲＴＬ記述３３と、マージされた複合ＣＢ回路のＲＴＬ記述３５を、個々に論理合成ツールおよび配置配線ツールに通すことにより、ＲＣ領域１０にマッピングする情報（ＣＢマッピング情報）２１と複合ＣＢマッピング情報２３を生成できる。また、サイクル単位で構成を選択する情報３４を、ＣＢマッピング情報２１を制御する情報２２に変換することができる。そして、これらのＣＢマッピング情報２１および２３と、ＣＢマッピング情報を制御する構成選択情報２２とにより、ＲＣ領域１０をサイクル毎に制御するためのハードウェア制御情報２０を生成できる。
【００５８】
本例のハードウェア制御情報２０によりＲＣ領域１０にマッピングあるいは再構成されるサイクルベースの回路３３ａおよび３５ａには、演算器３７ａおよび３７ｂ、レジスタＲ１〜Ｒ３を多サイクルにわたって使いまわしするための入力セレクタは設けられていない。ただし、マッピング情報２１をマージしてその種類を減らすことを目的とした場合、ＣＢ回路３３ａあるいは複合ＣＢ回路３５ａに入力セレクタを設けることを禁止するものではない。しかしながら、入力セレクタを設けることにより余分なハードウェア資源が消費されるので、基本的には好ましくない。ＣＢマッピング情報２１の情報量を削減するためには、セレクタの追加を最小限に抑えながら複数のＣＢ回路をマージすることが有効である。ＣＢ回路マージの際にセレクタを追加した場合は、構成選択情報によって、次サイクルで実行すべき回路を選択指示するだけではなく、セレクタのセレクト信号も指示してやる必要がある。
【００５９】
サイクルベースで再構成可能なＲＣ領域１０においては、図１８（ａ）〜図２１（ａ）に示すようにサイクル単位で回路を交換することにより、入力セレクタを設けなくても演算器３７ａおよび３７ｂを多サイクルにわたり使いまわしすることが可能である。さらに、その使いまわしできる範囲は入力セレクタがカバーする限定的な信号の範囲ではなく、基本的には無制限である。そして、本発明のハードウェア制御情報２０は、ＲＣ領域１０のハードウェア資源の無制限の使い回しをサイクル単位で可能とするものである。
【００６０】
複合ＣＢマッピング情報２３によりマッピングされた、図２２（ａ）の複合ＣＢ回路３５ａにおいては、２サイクルにわたり回路構成が固定される。そして、サイクル１においては、演算器３７ａの周りの信号は無視され、サイクル２においては、演算器３７ｂの周りの信号は無視される。したがって、サイクル毎にドントケアの範囲を組み合わせることにより、入力セレクタを設けずに演算器３７ａおよび３７ｂを複数サイクルにわたり使いまわししている。本例では、２サイクルにわたり回路構成を固定しているが、サイクル０で複合ＣＢ回路３５ａを構成し、サイクル１でＣＢ回路３３を構成し、サイクル２で複合ＣＢ回路３５ａを構成するといった使用方法も可能であり、複合ＣＢマッピング情報２３は非連続で使用できることが基本である。したがって、複合ＣＢマッピング情報２３は、ＣＢマッピング情報２３に含まれている多サイクルの回路構成の１サイクル分をサイクル毎に使用しており、入力セレクタを設ける代わりに、サイクル単位で回路を交換することによりハードウェア資源を使いまわししていることに変わりはない。
【００６１】
図２４に、ＲＣ領域１０を有するデータ処理装置１の制御方法の概要を示してある。図２４に示すように、ステップ４１において、ハードウェア制御情報２０から、構成選択情報２２に基づき、ＣＢマッピング情報２１のいずれかを選択する。ステップ４２において、選択されたＣＢマッピング情報２１によりＲＣ領域１０の全部あるいは一部を再構成する。これらのプロセス４１および４２を繰り返すことにより、アプリケーションを実行するために適したハードウェア環境をデータ処理装置１により提供できる。ＣＢマッピング情報２１をフェッチしてマッピングするために要するサイクル数が、ＲＣ領域１０において処理を実行するサイクル数と合致しない場合は、プリフェッチなどの、従来のソフトウェアプログラムの命令シーケンスをフェッチする技術を用いることが可能である。さらに、アプリケーションの命令シーケンスと、ＣＢマッピング情報２１とをレイテンシーをずらせて組み合わせたプログラムを生成することにより、ソフトウェアの命令セットと、ハードウェア制御情報とを融合したデータ処理装置の制御記述を提供することも可能である。この場合は、アプリケーションの命令セットが構成選択情報として機能する。このようなハードウェア制御情報２０あるいは融合制御記述は、ＲＯＭなどの適当な記録媒体に記録して提供することが可能であり、さらに、有線あるいは無線により構成されるインターネットなどのコンピュータネットワークを介して提供することも可能である。
【００６２】
図２５に、生成システム１００において、既存のＲＴＬ記述９２から、ハードウェア制御情報２０を生成する過程を示してある。生成システム１００のサイクルベース回路の情報を生成する機能１０１は、既存のＲＴＬ９２からＣＢ回路の情報を生成する機能を備えている。すなわち、このハードウェア制御情報の生成方法７８においては、ステップ７６において、既存のＲＴＬ９２のステートマシンを解析して、ステート毎のデータパス３１に分解する。例えば、インプットセレクタを消去し、セレクタ制御信号を消去する。これにより、サイクル毎の機能が抽出される。その後は、図１３に示した生成方法７９と同様に、ステップ７３のサイクルベースの回路情報を生成する工程において、サイクル毎のＲＴＬ（ＣＢ回路情報）３３を生成し、ステップ７４のハードウェア制御情報を生成する工程において、ＣＢマッピング情報２１を生成する。必要であれば、ステップ７５において、ＣＢマッピング情報２１のマージ可能な部分をマージしてハードウェア制御情報２０を生成する。この生成方法７８により、既存のＦＰＧＡあるいはＡＳＩＣ用に設計および開発されたＲＴＬ資産を有効に活用できる。また、既存のＲＴＬに基づく構成のＦＰＧＡあるいはＡＳＩＣで動作しているソフトウェアができるようにハードウェア制御情報２０を生成し、それによりデータ処理装置１を再構成できる。このため、既存のＦＰＧＡあるいはＡＳＩＣで動作するアプリケーションをデータ処理装置１により動作させることが可能となる。
【００６３】
図２６に、生成システム１００において、分割制御型のハードウェア制御情報２０を生成する過程を示している。この生成方法７７により生成される分割制御型のハードウェア制御情報２０は、構成選択情報２２が、それぞれのＣＢマッピング情報２１に含まれており、全体制御用の構成選択情報を持たない。そのため、上述した生成方法７８のステップ７６または生成方法７９のステップ７２により、サイクル毎のデータパス３１と制御ステートマシン３２が生成されると、ステップ７３において、サイクル毎のＲＴＬ３３を生成する際に、制御ステートマシンとしての機能、すなわち、各ステートにおける次ステートを計算する機能をステート毎（サイクル毎）の回路に分割してデータパス回路に付加する。
【００６４】
これにより、図２７に示すように、サイクル毎のＲＴＬ３３として、次サイクルで実行すべき回路の番号などの選択情報を計算する機能を含んだサイクルベース回路の回路情報３８が生成される。本例においては、次サイクルで実行すべき回路番号が定数であるが、ＲＴＬ３３に次のサイクルの回路番号を指定する機能を設けることにより、適当な関数により、あるいはステータス情報により、次サイクルでマッピングするＣＢマッピング情報２１を選択する機能を、各々のＣＢマッピング情報２１に付加できる。
【００６５】
構成選択情報２２を演算する機能を含めたＣＢ回路の情報３３から、ステップ７４により、ＣＢマッピング情報２１を含むハードウェア制御情報２０を生成することができる。図２６に示した生成方法７７においては、マージするステップ７５を先行して行い、サイクル毎のＲＴＬ３３のマージをトライし、複合化されたサイクル毎のＲＴＬ３６を生成している。この複合化されたサイクル毎のＲＴＬ３６も選択情報を含んだサイクルベース回路の回路情報３８である。本例であると、図２８に示すように、サイクル１とサイクル２のＲＴＬ３３を、制御情報を含めて複合化し、ＲＴＬ３６を得ることができる。そして、これらのＲＴＬ３３および３６を、ハードウェア制御情報を生成するステップ７４で論理合成および配置配線して、ＲＣ領域１０にマッピングできるＣＢマッピング情報（複合ＣＢマッピング情報も含めて）２１を生成する。このＣＢマッピング情報２１には、上述したように次のサイクルでマッピングするＣＢマッピング情報２１を選択するための制御情報２２を生成する回路が含まれている。
【００６６】
本発明において提供されるハードウェア制御情報２０は、サイクルベースで再構成可能なハードウェアに、アプリケーションを実行するための回路をサイクルベースで実装するものである。そして、機能モジュールレベルで回路構成を変えるという長期稼動を前提とした設計方法ではなく、動作ステートレベル、すなわち、ステート毎（サイクル毎）に回路構成を変える、あるいは回路構成をサイクル毎に交換することを前提としている。したがって、再構成対象の機能モジュールを吟味するというようなプロセスはなく、サイクルベースの回路情報を先ず生成して、それを実際のアーキテクチャに実装するＣＢマッピング情報に生成するプロセスが採用されている。このため、再構成可能な回路領域は、基本的にはサイクル毎に構成が交換され、固定された構成を持たない状態で制御され、アプリケーションを実行する。
【００６７】
一方、このハードウェア制御情報２０は、数サイクルにわたり再構成可能な回路領域に固定されるマッピング情報が含まれることを許容するものである。ベクトル演算、フーリエ解析のようなパイプライン処理をすることが最も好ましいデータ処理を含むアプリケーションを実行するハードウェア構成としては、パイプラインを構成するハードウェアを数クロックあるいはそれ以上の間、固定することが好ましいからである。これに対し、ＭＰＥＧデコーダのようなステートマシン系の処理を必要とするアプリケーションを実行するハードウェア構成としては、サイクル毎に回路構成を変えることが望ましい。ＲＩＳＣのようなステートマシンの制御プロセッサと、ＦＦＴのようなパイプライン処理用のコプロセッサ機能とを必要とするプロセッサをデータ処理装置１に実装する場合は、ＲＣ領域１０の一部はサイクル毎に構成が変わり、他の部分は数サイクルあるいはそれ以上、データフローが形成された状態で固定されるという状態が発生しうる。そのような再構成の選択は構成選択情報２２のサイクル毎の要請により決まり、再構成の要請が無ければＲＣ領域１０の構成は維持される。したがって、ハードウェア制御情報２０のＣＢマッピング情報２１は、構成選択情報２２によりサイクル毎の要請により、ＲＣ領域が再構成され、あるいは、ＲＣ領域１０の構成が維持されるように制御することも含む。
【００６８】
また、上記においては、半導体集積回路技術をベースにしたＬＳＩに本発明を適用する例を説明しているが、いわゆる回路網を形成するデータ処理装置のすべてに本発明を適用することが可能である。すなわち、電気あるいは電子レベルの回路技術をベースにしたデータ処理装置に限らず、光、生体、分子あるいは原子構造、遺伝子構造などをベースにした回路網を形成する全てのデータ処理装置に対して本発明を適用することができる。
【図１】
0004893309.tif 000002
【図２】
0004893309.tif 000003
【図３】
0004893309.tif 000004
【図４】
0004893309.tif 000005
【図５】
0004893309.tif 000006
【図６】
0004893309.tif 000007
【図７】
0004893309.tif 000008
【図８】
0004893309.tif 000009
【図９】
0004893309.tif 000010
【図１０】
0004893309.tif 000011
【図１１】
0004893309.tif 000012
【図１２】
0004893309.tif 000013
【図１３】
0004893309.tif 000014
【図１４】
0004893309.tif 000015
【図１５】
0004893309.tif 000016
【図１６】
0004893309.tif 000017
【図１７】
0004893309.tif 000018
【図１８】
0004893309.tif 000019
【図１９】
0004893309.tif 000020
【図２０】
0004893309.tif 000021
【図２１】
0004893309.tif 000022
【図２２】
0004893309.tif 000023
【図２３】
0004893309.tif 000024
【図２４】
0004893309.tif 000025
【図２５】
0004893309.tif 000026
【図２６】
0004893309.tif 000027
【図２７】
0004893309.tif 000028
【図２８】
0004893309.tif 000029