(57)【特許請求の範囲】
【請求項１】
回路を動的に再構成可能な論理回路領域を有するデータ処理装置の制御方法であって、
アプリケーションを実行するための回路の少なくとも一部であるオブジェクト回路を前記論理回路領域の一部にマッピングするためのオブジェクト回路情報と、前記オブジェクト回路に接するインタフェース回路を前記論理回路領域にマッピングするためのインタフェース回路情報と、前記インタフェース回路において実現する境界条件とを備えたアーキテクチャコードを取得する工程と、
前記アーキテクチャコードの前記オブジェクト回路情報およびインタフェース回路情報により、前記論理回路領域に前記オブジェクト回路と、そのオブジェクト回路に接する前記インタフェース回路とをマッピングする工程と、
前記アーキテクチャコードの前記境界条件に基づき前記インタフェース回路を制御する動作工程とを有し、
前記オブジェクト回路は、ある機能を実装するためのハードウェアモジュールを分割した分割回路であり、前記境界条件は、前記ハードウェアモジュールを前記オブジェクト回路に分割して実行する際のタイミングを制御する情報を含む、制御方法。
【請求項２】
回路を動的に再構成可能な論理回路領域を有するデータ処理装置の制御方法であって、
アプリケーションを実行するための回路の少なくとも一部であるオブジェクト回路を前記論理回路領域の一部にマッピングするためのオブジェクト回路情報と、前記オブジェクト回路に接するインタフェース回路を前記論理回路領域にマッピングするためのインタフェース回路情報と、前記インタフェース回路において実現する境界条件とを備えたアーキテクチャコードを取得する工程と、
前記アーキテクチャコードの前記オブジェクト回路情報および前記インタフェース回路情報により、前記論理回路領域に前記オブジェクト回路と、そのオブジェクト回路に接する前記インタフェース回路とをマッピングする工程と、
前記アーキテクチャコードの前記境界条件に基づき前記インタフェース回路を制御する動作工程とを有し、
前記マッピングする工程では、隣り合うオブジェクト回路との境界におけるインタフェース回路情報および境界条件が一致または対応する場合は、双方のインタフェース回路を経ずに前記隣り合うオブジェクト回路と接続するように前記オブジェクト回路をマッピングする、制御方法。
【請求項３】
前記オブジェクト回路は、ある機能を実装するためのハードウェアモジュールを分割した分割回路である、請求項２の制御方法。
【請求項４】
前記マッピングする工程では、前記オブジェクト回路と前記インタフェース回路とを、前記論理回路領域の利用可能ないずれかの領域にマッピングする、請求項１ないし３のいずれかの制御方法。
【請求項５】
前記動作工程では、前記論理回路領域に、時間的および／または空間的に分かれてマッピングされた他のオブジェクト回路のインタフェース回路の状態が前記境界条件に基づき当該オブジェクト回路のインタフェース回路の制御に反映される、請求項１ないし４のいずれかの制御方法。
【請求項６】
前記取得する工程では、当該データ処理装置に対する要求、マッピングされた前記オブジェクト回路の実行状況、前記論理回路領域の利用可能状況を含めた動作環境情報に基づき、取得する前記アーキテクチャコードを選択する、請求項１ないし５のいずれかの制御方法。
【請求項７】
前記取得する工程では、前記アーキテクチャコードを、通信ネットワークを介して取得する、請求項１ないし６のいずれかの制御方法。
【請求項８】
前記論理回路領域は、特定の数の再構成可能な複数のエレメントにより構成される回路ブロックを複数備えており、前記アーキテクチャコードは、前記回路ブロックの単位の前記オブジェクト回路情報を含む、請求項１ないし７のいずれかの制御方法。
【請求項９】
回路を動的に再構成可能な論理回路領域と、
アプリケーションを実行するための回路の少なくとも一部であるオブジェクト回路を前記論理回路領域の一部にマッピングするためのオブジェクト回路情報と、前記オブジェクト回路に接するインタフェース回路を前記論理回路領域にマッピングするためのインタフェース回路情報と、前記インタフェース回路において実現する境界条件とを備えたアーキテクチャコードを取得するロードユニットと、
前記アーキテクチャコードの前記オブジェクト回路情報およびインタフェース回路情報により、前記論理回路領域に前記オブジェクト回路と、そのオブジェクト回路に接する前記インタフェース回路とをマッピングするマッピングユニットと、
前記アーキテクチャコードの前記境界条件にしたがって前記インタフェース回路を制御する動作制御ユニットとを有し、
前記オブジェクト回路は、ある機能を実装するためのハードウェアモジュールを分割した分割回路であり、前記境界条件は、前記ハードウェアモジュールを前記オブジェクト回路に分割して実行する際のタイミングを制御する情報を含む、データ処理装置。
【請求項１０】
回路を動的に再構成可能な論理回路領域と、
アプリケーションを実行するための回路の少なくとも一部であるオブジェクト回路を前記論理回路領域の一部にマッピングするためのオブジェクト回路情報と、前記オブジェクト回路に接するインタフェース回路を前記論理回路領域にマッピングするためのインタフェース回路情報と、前記インタフェース回路において実現する境界条件とを備えたアーキテクチャコードを取得するロードユニットと、
前記アーキテクチャコードの前記オブジェクト回路情報および前記インタフェース回路情報により、前記論理回路領域に前記オブジェクト回路と、そのオブジェクト回路に接する前記インタフェース回路とをマッピングするマッピングユニットと、
前記アーキテクチャコードの前記境界条件にしたがって前記インタフェース回路を制御する動作制御ユニットとを有し、
前記マッピングユニットは、隣り合うオブジェクト回路との境界における前記インタフェース回路情報および境界条件が一致または対応する場合は、双方のインタフェース回路を経ずに前記隣り合うオブジェクト回路と接続するように前記オブジェクト回路をマッピングする、データ処理装置。
【請求項１１】
前記オブジェクト回路は、ある機能を実装するためのハードウェアモジュールを分割した分割回路である、請求項１０のデータ処理装置。
【請求項１２】
前記ロードユニット、前記マッピングユニットおよび前記動作制御ユニットは、それぞれ前記ハードウェアモジュールの１つであり、前記分割回路により前記論理回路領域に実装される、請求項１１のデータ処理装置。
【請求項１３】
前記マッピングユニットは、前記オブジェクト回路と前記インタフェース回路とを、前記論理回路領域の利用可能ないずれかの領域にマッピングする、請求項９ないし１２のいずれかのデータ処理装置。
【請求項１４】
前記動作制御ユニットは、前記論理回路領域に、時間的および／または空間的に分かれてマッピングされた他のオブジェクト回路のインタフェース回路の状態を前記境界条件に基づき当該オブジェクト回路の前記インタフェース回路の制御に反映する、請求項９ないし１３のいずれかのデータ処理装置。
【請求項１５】
前記論理回路領域に、時間的および／または空間的に分かれてマッピングされたオブジェクト回路のインタフェース回路の状態を記憶する境界情報メモリをさらに有する、請求項９ないし１４のいずれかのデータ処理装置。
【請求項１６】
前記ロードユニットは、当該データ処理装置に対する要求、マッピングされた前記オブジェクト回路の実行状況、前記論理回路領域の利用可能状況を含めた動作環境情報に基づき、複数のアーキテクチャコードを備えたアーキテクチャライブラリから前記アーキテクチャコードを取得する、請求項９ないし１５のデータ処理装置。
【請求項１７】
前記ロードユニットは、前記アーキテクチャコードを、通信ネットワークを介して取得する、請求項９ないし１５のいずれかのデータ処理装置。
【請求項１８】
複数のハードウェアモジュールを構成する複数のアーキテクチャコードを備えたアーキテクチャライブラリを有する、請求項９または１１のデータ処理装置。
【請求項１９】
前記論理回路領域は、特定の数の再構成可能なエレメントにより構成される回路ブロックを複数備えており、前記アーキテクチャコードは、前記回路ブロックの単位の前記オブジェクト回路情報を含む、請求項９ないし１８のいずれかのデータ処理装置。
【請求項２０】
回路を動的に再構成可能な論理回路領域と、
アプリケーションを実行するための回路の少なくとも一部であるオブジェクト回路を前記論理回路領域の一部にマッピングするためのオブジェクト回路情報と、前記オブジェクト回路に接するインタフェース回路を前記論理回路領域にマッピングするためのインタフェース回路情報と、前記インタフェース回路において実現する境界条件とを備えたアーキテクチャコードを取得するロードユニットと、
前記アーキテクチャコードの前記オブジェクト回路情報および前記インタフェース回路情報により、前記論理回路領域に前記オブジェクト回路と、そのオブジェクト回路に接する前記インタフェース回路とをマッピングするマッピングユニットと、
前記アーキテクチャコードの前記境界条件にしたがって前記インタフェース回路を制御する動作制御ユニットとを有し、
前記論理回路領域は、特定の数の再構成可能なエレメントにより構成される回路ブロックを複数備えており、前記アーキテクチャコードは、前記回路ブロックの単位の前記オブジェクト回路情報を含み、さらに、
前記エレメントは、複数ｎ個の入力と、ｎ個の出力と、
前記ｎ個の入力から任意の入力データを選択する入力インタフェースと、
この入力インタフェースにより選択された入力データを論理演算して出力データを出力する演算コアであって、その論理演算を変更可能な演算コアと、
前記ｎ個の入力および前記出力データの少なくともいずれかを任意に選択して前記ｎ個の出力の少なくともいずれかから出力する出力インタフェースとを備えている、データ処理装置。
【請求項２１】
前記演算コアは、論理演算を指示する多ビットのファンクションコードが入力され、前記入力データにより前記出力データを選択するセレクタを備えている、請求項２０のデータ処理装置。
【請求項２２】
前記演算コアは、前記ｎ個の入力のいずれかのデータ、または、前記出力データをラッチするレジスタを備えている、請求項２０のデータ処理装置。
【請求項２３】
請求項９または１１に記載のデータ処理装置と、
前記データ処理装置に実装される少なくとも１つの前記ハードウェアモジュールが、それぞれの制御またはデータ処理に用いられる複数の自動制御機構とを有し、
前記論理回路領域に、複数のハードウェアモジュールの分割回路がそれぞれ動的にマッピングされる、自動制御装置。
【請求項２４】
前記アーキテクチャコードを外界との通信により取得するための通信機構をさらに有する、請求項２３の自動制御装置。
【請求項２５】
請求項９ないし２４のいずれかに記載のデータ処理装置と、
前記アーキテクチャコードを外界との通信により取得する通信機構とを有する端末。
【請求項２６】
回路を動的に再構成可能な論理回路領域を有するデータ処理装置を制御するためのアーキテクチャコードであって、アプリケーションを実行するための回路の一部であるオブジェクト回路を前記論理回路領域の一部にマッピングするためのオブジェクト回路情報と、前記オブジェクト回路に接するインタフェース回路を前記論理回路領域にマッピングするためのインタフェース回路情報と、前記インタフェース回路において実現する境界条件とを備えたアーキテクチャコードの生成方法であって、
前記アプリケーションを実行するための回路のネットリストを分割し、それぞれの分割した範囲内の配置・配線問題を解決して前記オブジェクト回路情報を生成する工程と、
前記ネットリストの、前記オブジェクト回路情報により構成される前記オブジェクト回路の境界を形成する情報から前記インタフェース回路情報を生成する工程と、
前記ネットリストを前記オブジェクト回路の集合に変換し、それらのオブジェクト回路の間の配置・配線問題を解決し、それぞれの前記オブジェクト回路のインタフェース回路における境界条件を生成する工程とを有する、アーキテクチャコードの生成方法。
【請求項２７】
前記生成する工程では、ある機能を実装するためのハードウェアモジュールのネットリストを分割して前記オブジェクト回路情報を生成する、請求項２６の生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】  本発明は、再構成可能な論理回路領域を有するデータ処理装置に関するものである。
【背景技術】
【０００２】  回路を再構成できるプログラマブルデバイスとして、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）、ＰＬＤ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）、ＰＬＡ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ａｒｒａｙ）と称されるデバイスが知られている。これらのプログラマブルデバイスの基本的な構成は、論理セルあるいは論理ユニットと称されるユニットが格子状に配置され、それを取り巻くように配線群が配置されたものであり、コンテキスト情報あるいはコンフィグレーション情報と呼ばれる情報によって、論理セルの機能や配線の接続を変更できるようになっている。【０００３】  特開２０００−４０７４５号公報には、ＦＰＧＡに論理回路の異なる部分を実装する技術の１つとして、論理回路を特徴付ける初期ネットリストを多くのページへと区分し、ＦＰＧＡにこれらのページの１つの回路を実装することが記載されている。これにより、ＦＰＧＡの物理的容量よりもはるかに大きな回路の実装を可能にしようとしている。【０００４】  しかしながら、現在、マルチメディアデバイス、モバイルデバイス、デジタルデバイスなどに搭載され、それらのデバイスのデータ処理の多くを行っているシステムＬＳＩは、１つのチップの上に、特定の機能を実現するための回路単位（多くのケースでは、ハードウェアモジュールあるいはＩＰ（Ｉｎｔｅｌｌｅｃｔｕａｌ  Ｐｒｏｐｅｒｔｙ）、ライブラリと称される）が複数搭載され、それらのハードウェアモジュールが並列して処理を行っている。したがって、ＦＰＧＡに、単に１つの回路を分解して実装したとしても、回路を再構成可能なデバイスの有効性が大きく広がることにはならない。
【発明の開示】
【０００５】  これに対し、本発明においては、アプリケーションを実行するために、または、アプリケーションを実行する際に、ハードウェア空間を動的に最適化する技術を提供する。そして、コンパイラ翻訳による命令セットの集合であるプログラムのような、従来のソフトウェア情報だけでは無く、ハードウェア情報であるアプリケーションを実行する回路そのものの情報を得て、それを直接実行可能とするアーキテクチャを備えたデータ処理装置、例えば、ＬＳＩを本発明においては提供する。
【０００６】  従来のシステムＬＳＩに代表される回路デバイスの技術においては、ハードウェアで実現する回路は、特定のハードウェアモジュール、ＩＰ、ライブラリと呼ばれる単位で、固定されたハードウェアとして搭載され、それらの回路により専用化されたＬＳＩによりデータが処理される。これに対し、汎用的な回路あるいはアーキテクチャでハードウェアの回路を実行する技術がある。例えば、シミュレータであり、プログラムの命令を１つ１つ実行して、その回路自体を実行しているかのように、汎用的な装置であるＣＰＵに役割を割り当てる手法である。これは、本来、ハードウェアで実現する回路の持つ並列性を命令単位の実行に変えてＣＰＵで処理を行うため、複数のＣＰＵを使用したとしても、実際のハードウェアの回路と比較して、実行する回路規模にもよるが、普通３桁〜５桁以上の実行時間が必要とされる。また、リアルタイム性に決定的に欠けるので、実際に複雑な回路をシミュレーションしようとすると膨大な検証時間を必要とする。このため、膨大なゲート数を有する近年の専用ＬＳＩに代わり処理を実行することが不可能なだけではなく、複雑な専用ＬＳＩの機能を検証するにも不向きな状況になりつつある。
【０００７】  リアルタイム性の問題に対して、ハードウェア・アクセラレーションと呼ばれる手法がある。これは、最初の段階では、ＣＰＵやＤＳＰを複数並べて並列実行させ、その一つ一つに小規模な回路を割り当てて、全体としてはシミュレーション時間を短時間で行うというアイデアである。ＦＰＧＡやＰＬＤが実用化されたことにより、シミュレーション対象の回路を直接これに割り当てるやり方が主流となり、大規模な集積回路やハードウェアのエミュレーションが、リアルタイムに極めて近い時間で実行できるようになりつつある。
【０００８】  しかしながら、ＦＰＧＡの内部セル構造は、ハードウェア回路の実現をある一定の時間を掛けて変更するようなアーキテクチャ構造となっており、ＣＰＵやＤＳＰ等のデータパス系を有するハードウェアの実装にはあまり向いていない。実際に、実装しようとすると、処理性能（動作周波数）・ゲート効率・消費電力の何れでも、専用に設計されたＬＳＩと競争できない。さらに、アプリケーションを実行するための回路にもよるが、ＦＰＧＡまたはＰＬＤの場合、実装対象となる回路の規模がＦＰＧＡあるいはＰＬＤの集積度より大きいと、原則として実装は不可能である。アプリケーションを実行するための回路を分割して実装する事も考えられるが、その場合、チップが複数になりピン数の制限から、更に性能・コスト消費電力とも不利になる。
【０００９】  さらに、１つのＦＰＧＡに分割した回路を実装する場合、ピン数の制限や、分割した回路同士の境界情報の伝播など、回路を分割する際に発生する問題が多数ある。それらを、ＦＰＧＡを用いたハードウェアの設計の段階ですべて解決しようとすると、専用ＬＳＩを設計および開発する従来の技術に対し、ＦＰＧＡを用いたメリットは失われてしまう。さらに、一般的に、ＦＰＧＡやＰＬＤは、目標のハードウェア回路の数倍〜数十倍ものハードウェアが必要となり、チップ・コスト、目標性能、および消費電力の３つの点でも、専用ＬＳＩには及ばない。
【００１０】  一方、専用ＬＳＩにも多くの問題がある。従来の専用ＬＳＩの場合、ＬＳＩの設計段階で正確な性能目標や機能仕様が無いと設計が収束しない。例えば、アプリケーションの実行状況によっては、機能と性能の動的トレード・オフが可能なことが多いが、設計段階で必要とされる性能を実現可能なだけのハードウェア領域や性能を保証出来る動作周波数を確定させる必要がある。つまり、機能や性能の動的トレード・オフがアプリケーション上可能な場合でも、ピーク性能要求や単体レベルの機能毎の性能保証を行った上で、ＬＳＩ設計を行う必要がある。従って、機能と性能についての要求が決定的であり、高性能および多機能を狙うシステムＬＳＩは、コスト的には最悪ケースの積み上げとなり、製造コスト、チップ面積、消費電力などが悪化する一方になる。
【００１１】  さらに具体的には、自動制御装置、例えば、ロボットのようなアプリケーションの場合、視覚情報や聴覚情報を処理しているときは、他の機能（歩行機能・言語処理・嗅覚処理等）を大幅に弱めて良い場合が多い。しかしながら、従来のシステムＬＳＩでは、すべての機能を実現するすべての回路を同じようにシステムＬＳＩに実装しており、単にその処理結果を使用しないか、あるいは、スタンバイ状態で処理能力を低下させているに過ぎない。
【００１２】  これに対し、回路構成を動的に再構成できるのであれば、その再構成可能な論理回路により構成されるハードウェア空間を動的に最適化することにより、使用しない、あるいはスタンバイ状態になる機能へのハードウェア資源の割り当てを大幅に絞って、本来集中すべき視覚情報処理や聴覚情報処理にハードウェア資源を集中的に割り当てることができる。すなわち、本発明によれば、従来の専用ＬＳＩのように、ハードウェア回路（ターゲット回路）をすべて実装する必要がないので、少ないハードウェア資源で最大の実行効率を得ることができる。
【００１３】  本発明における動的最適化技術は、論理回路により構成される実ハードウェア空間のアレンジを動的に最適化することを言い、実ハードウェア空間をその都度刷新するだけではなく、実ハードウェア空間の部分的なアレンジを動的に最適化することも含む概念である。したがって、現在使用していない機能へのハードウェア資源の割り当てを無くすだけではなく、ハードウェア資源の割り当てを絞り、スタンバイ中の機能のリアルタイム応答性を犠牲にすることなく、使用中の機能に対するハードウェア資源の割り当てを増加させることができるものである。
【００１４】  また、本発明における動的最適化技術は、使用中であっても緊急性を要する機能に対してはハードウェア資源の割り当てを増加し、緊急性を要しない機能に対してはハードウェア資源の割り当てを減らしたり、ハードウェア資源の割り当てを一時的に無くすことができるものである。緊急性とは、処理速度、優先順位などを含む概念であり、データ処理装置に対する要求の重要なものの１つである。ハードウェア資源の割り当てを左右する、データ処理装置に対するその他の要求としては、並列処理するジョブの増減、割り込みの有無など様々なものが考えられる。本発明における動的最適化技術は、これらのデータ処理装置に対する要求に応じてハードウェア資源の割り当て、すなわち、実ハードウェア空間の構成を動的に最適化する。
【００１５】  実ハードウェア空間を動的に最適化する１つの方法は、データ処理装置が遭遇するすべての場面を想定し、それに対して最適な実ハードウェア空間のアレンジを予め決定し、コンテキスト情報（あるいはコンフィグレーション情報）として用意し、その都度、ロードする方法である。この方法は、実ハードウェア空間で生ずるタイミング収束などの問題を予め解決できるので、データ処理装置の性能を確保する点では望ましいであろう。しかしながら、すべてのシナリオにおいて遭遇する場面を想定することは不可能であり、限られた場面を対象としてある程度最適化し、その他の場面では中庸な性能が得られるような汎用的な解を得ようとすれば、実ハードウェア空間を動的に最適化する効果は薄れてしまう。
【００１６】  他の方法の１つは、ある機能を実装するための単位として設計されるハードウェアモジュール（ＩＰまたはライブラリ）を、論理ゲートとそれらの接続状態を示しただけのネットリストの状態で用意し、その機能が必要となったときに、そのネットリストの一部あるいは全体を実ハードウェア空間の空いた空間にあわせて動的に配置および配線し、マッピングする方法である。この方法は、実ハードウェア空間の瞬間的な状況に合わせて回路をフレキシブルに、動的に配置できるので、ハードウェア空間を最も動的に最適化できる方法であると考えられる。しかしながら、ネットリストに基づく配置および配線する処理は、静的なＬＳＩの設計および開発段階でも膨大な時間を要する処理であり、その処理をマッピングする瞬間毎に繰り返す必要がある。瞬間的な実ハードウェア空間の実情とその他の要素を加味し、瞬間的に必要な回路のネットリストに基づいて配置・配線の諸問題を解決してマッピングすることは実際には不可能である。ほとんどクロック単位あるいはサイクル単位で高速にタイミング収束を含めた問題を解決できるハードウェアが提供できたとしても、そのようなハードウェア資源を別途用意することは経済的でもないし、そのようなハードウェアの登場を待つのでは、ハードウェア空間の動的最適化の実現が難しくなるだけである。
【００１７】  ネットリストの状態から、そのネットリストで実装しようとしている回路の一部の適当な範囲を単位とし、それぞれの回路単位内の配置・配線を解決し、それらの回路単位を実ハードウェア空間の空いた空間に配置して、それらの回路単位を接続する配置・配線問題に縮小することにより、マッピングする瞬間毎の配置・配線問題を解決する時間を短縮できる可能性がある。しかしながら、配置・配線するときの実ハードウェア空間の状況は刻々と変動する。したがって、状況に応じて常に瞬間瞬間で配置・配線問題を動的に解決することは容易ではないであろうし、可能であったとしてもハードウェア資源と電力をそのために常に費やすことには変わりなく、高性能高機能・低チップコスト低消費電力のデータ処理装置を提供するという課題を解決することができない。
【００１８】
そこで、本発明においては、アプリケーションを実行するための回路の少なくとも一部であるオブジェクト回路を論理回路領域の一部にマッピングするためのオブジェクト回路情報と、オブジェクト回路に接するインタフェース回路を論理回路領域にマッピングするためのインタフェース回路情報と、インタフェース回路において実現する境界条件とを備えたアーキテクチャコードを提供する。オブジェクト回路の最も適当な例は、アプリケーションを実行するためのある機能を実装するための単位として設計されるハードウェアモジュールを複数に分割した分割回路であり、境界条件は、ハードウェアモジュールをオブジェクト回路に分割して実行する際のタイミングを制御する情報を含む。ハードウェアモジュールを実装するために要するハードウェア資源が少ない場合は、分割せずにオブジェクト回路化し、それに対応するインタフェース回路情報を生成して論理回路領域に実装することも可能である。
【００１９】  回路を動的に再構成可能な論理回路領域を有するデータ処理装置における、本発明の制御方法は、アーキテクチャコードを取得する工程と、アーキテクチャコードのオブジェクト回路情報およびインタフェース回路情報により、論理回路領域にオブジェクト回路と、そのオブジェクト回路に接するインタフェース回路とをマッピングする工程と、アーキテクチャコードの境界条件に基づきインタフェース回路を制御する動作工程とを有する。
【００２０】  また、本発明のデータ処理装置は、回路を動的に再構成可能な論理回路領域と、アーキテクチャコードを取得するロードユニットと、アーキテクチャコードのオブジェクト回路情報およびインタフェース回路情報により、論理回路領域にオブジェクト回路と、そのオブジェクト回路に接するインタフェース回路とをマッピングするマッピングユニットと、アーキテクチャコードの境界条件にしたがってインタフェース回路を制御する動作制御ユニットとを有する。ロードユニットは、アーキテクチャコードをフェッチする場合はフェッチユニットであり、コンピュータなどを用いた通信ネットワークやメモリからダウンロードする場合はダウンロードユニットになる。ロードした回路情報によりハードウェアを再構成するマッピングを含めてロードと呼ばれることもあるが、本明細書においては、アーキテクチャコードを取得するまでをロードするステップと呼ぶことにする。ロードユニットにおいてコードを取得するプロセスには、フェッチ、ダウンロード、ゲット、リードなど様々な命令を割り当てることができ、コミュニケーションシステムによりアーキテクチャコードをロードすることも可能である。
【００２１】  これらのロードユニット、マッピングユニットおよび動作制御ユニットも、ハードウェアモジュールの１つとして捉えることが可能であり、分割してオブジェクト回路化することにより、論理回路領域に分割回路として実装することが可能である。したがって、アプリケーションの実行状況により、ロードユニット、マッピングユニットおよび動作制御ユニットの機能の一部を実現すれば良いような条件においては、これらの機能に割かれるハードウェア資源を解放して、他のハードウェアモジュールの実現のためにハードウェア資源を割当てて並列処理能力を向上したり、処理速度を改善したりすることができる。
【００２２】  本発明においては、ハードウェアモジュールを含むアプリケーションを実行するための回路のオリジナルのネットリストから、ある適当な範囲を分割し、分割されたユニット内で配置・配線問題が解決され、論理回路領域の一部にマッピング可能なオブジェクト回路情報を生成する。次に、オブジェクト回路情報により構成されるオブジェクト回路の、オリジナルのネットリスト上の境界を形成する情報からインタフェース回路情報を生成する。さらに、オリジナルのネットリストをオブジェクト回路の集合に変換して、それらのオブジェクト回路の間の配置・配線問題を解決し、インタフェース回路における境界条件を生成する。したがって、オブジェクト回路の間の配置・配線問題は、インタフェース回路における境界条件として、アーキテクチャコードの生成段階で解決される。
【００２３】  このため、実ハードウェア空間である、回路を動的に再構成可能な論理回路領域の空いた空間に、オブジェクト回路を配置するときには、ロードユニットにより、適切なアーキテクチャコードを取得し、マッピングユニットによりオブジェクト回路をマッピングすると共に、その周囲にインタフェース回路をマッピングし、実行制御ユニットにより、インタフェース回路を境界条件に基づいて制御することにより、実ハードウェア空間にオブジェクト回路を動的に配置し、オブジェクト回路を実行することができる。したがって、実ハードウェア空間の瞬間的な状態により、所望の、あるいは適切なオブジェクト回路とインタフェース回路を論理回路領域にアレンジするだけで、オブジェクト回路を実行することができる。そして、瞬間瞬間でオブジェクト回路の間の配置および配線問題を解決しなければならないという問題の発生を未然に防止できる。
【００２４】  本発明においては、実ハードウェア空間である再構成可能な論理回路領域にマッピングされた１つまたは複数のオブジェクト回路は、その状態で実行される。オブジェクト回路の境界はインタフェース回路を介して、仮想的には、そのオブジェクト回路が属するハードウェアモジュールを構成する多数のオブジェクト回路に接続されている。このため、オブジェクト回路の境界は多数のオブジェクト回路が接続された仮想ハードウェア空間の状態で制御される。したがって、マッピングする際は、オブジェクト回路とインタフェース回路とを、実ハードウェア空間である論理回路領域の利用可能ないずれの領域にもマッピングすることができる。
【００２５】  さらに、隣り合うオブジェクト回路との境界におけるインタフェース回路情報および境界条件が一致する、または対応している場合は、マッピングしようとしているオブジェクト回路と隣り合うオブジェクト回路とは仮想ハードウェア空間において隣接しているオブジェクト回路であることを意味する。このため、インタフェース回路を経ずに隣り合うオブジェクト回路同士が直に接続されるようにオブジェクト回路をマッピングすることができる。すなわち、実ハードウェア空間にマッピングする実際のオブジェクト回路の集合の大きさを、実ハードウェア空間の状態に合わせて自由に変えることができる。複数のオブジェクト回路を実ハードウェア空間に分散してマッピングすることも、集中してマッピングすることも可能であり、実ハードウェア空間を極めてフレキシブルに使用することができる。
【００２６】  論理回路領域に現在および／または過去に、時間的および／または空間的に分散配置されたオブジェクト回路同士の接続も容易である。時間的および／または空間的に分かれてマッピングされた他方のオブジェクト回路のインタフェース回路の状態を、動作制御ユニットにより、境界条件に基づき、実行する一方のオブジェクト回路のインタフェース回路の制御に反映することにより、実ハードウェア空間では時間的あるいは空間的に分かれたオブジェクト回路同士を、仮想ハードウェア空間では無理なく接続することができる。このため、論理回路領域に現在および／または過去にマッピングされたオブジェクト回路のインタフェース回路の状態を記憶する境界情報メモリを設けておくことが望ましい。他方のオブジェクト回路には、時間的および／または空間的に接続されずにマッピングされた自己のオブジェクト回路も含まれる。これにより、あるオブジェクト回路を条件によって実ハードウェア空間では消滅・再生しても、仮想ハードウェア空間で連続した処理が可能である。さらに、同一のオブジェクト回路情報による回路インスタンスを複数構成して並列度を高めたり、信頼度を高めたりすることも可能である。そのような制御はアーキテクチャコードによっても、マッピングユニットと動作制御ユニットの組合せによっても可能である。
【００２７】  本発明のアーキテクチャコードは、様々な利用方法がある。実ハードウェア空間にマッピングするアーキテクチャコードをプログラムの命令セットのようにシーケンシャルにトレースできる状態で提供することにより、アーキテクチャコードによりデータ処理装置を制御できる。アーキテクチャコードは、記録媒体に記録して提供することも可能であるし、ネットワークなどの通信手段を介して提供することも可能であり、ハードウェアの構成を遠隔操作により変えることも可能である。
【００２８】  また、従来のシステムＬＳＩに代わる使用方法としては、ロードユニットにより、データ処理装置に対する要求（緊急性や、新たなジョブの開始あるいは並列処理状態の変化、割り込みの有無など）、マッピングされたオブジェクト回路の実行状況、論理回路領域の利用可能状況を含めた動作環境情報に基づき、複数のアーキテクチャコードを備えたアーキテクチャライブラリから所望のアーキテクチャコードを取得し、アプリケーションの実行状況によりデータ処理装置のハードウェアを動的に最適な構成にすることができる。最適化の指針は、動作環境情報に基づき決めることができ、それにはロードユニット、マッピングユニット、実行制御ユニットの１つまたは複数が寄与する。実ハードウェア空間の空いた空間に新たなオブジェクト回路をマッピングしたり、使用済みのオブジェクト回路を消去したり、緊急性を有するハードウェアモジュールを優先的にマッピングするために、他のハードウェアモジュールの分割回路を一時的に退避したり、他のハードウェアモジュールに割り当てられたハードウェア資源の割合を一時的に縮小したり、実ハードウェア空間の利用方法に制限はない。
【００２９】  また、ハードウェア回路をアーキテクチャコード化することにより、データ処理装置の利用価値は飛躍的に増大する。限られた利用方法としては、アーキテクチャライブラリをデータ処理装置に実装することができる。例えば、このデータ処理装置と、データ処理装置に実装される少なくとも１つのハードウェアモジュールが、それぞれの制御またはデータ処理に用いられる複数の自動制御機構とを有し、論理回路領域に、複数のハードウェアモジュールの分割回路がそれぞれ動的にマッピングされる自動制御装置を提供できる。ロボットの視覚情報や聴覚情報を処理しているときは、それらの制御に必要なハードウェアモジュールの分割回路にハードウェアリソースが主に割り当てられ、歩行機能などの他の自動制御機構の制御に必要なハードウェアモジュールの分割回路は実ハードウェア空間から追い出されるといった制御が可能となる。
【００３０】  一方、ネットワークなどのデータ処理装置の外側に対する通信を介してアーキテクチャコードを取得することも可能であり、オブジェクト回路をマッピングできる程度のハードウェア空間があれば、膨大なハードウェア資産を自由に利用することができる。たとえばインターネット上に存在する多種多様なハードウェア資産を手元の携帯端末のＬＳＩにマッピングして利用することが可能となる。ロボットのように、種々の機構を備えた装置と組み合わせることにより、小さなリソースで多種多様な作業を行うことができる。また、アーキテクチャコードは常にアップデートされるので、常にアップデートされた制御回路の下で多種多様な作業を行わせることができる。
【００３１】  また、本発明のデータ処理装置と、アンテナ、コネクタなどの、外界との通信のために回路では実現できない通信に必要な機構と、ディスプレイ、マイクなどの入出力に特化した機構とを備えた端末により、種々の通信を行う機能から、通信以外の機能、例えば、身体の状態をモニタする機能など、様々なサービスを提供できる。そして、それぞれのサービスを行う回路構成は、常にアップデートされた最新なものを使用できる。
【００３２】  オブジェクト回路のサイズはフレキシブルであり、マッピング対象の論理回路領域にインタフェース回路も含めてマッピングできるサイズよりも小さければ良い。オブジェクト回路のサイズは小さい方が実ハードウェア空間の最適化の効率は高い。しかしながら、１つのハードウェアモジュールに対する用意されるアーキテクチャコードの量が多くなる。マッピングする際は、本発明においては、ハードウェアスペースさえあれば複数のオブジェクト回路をまとめてマッピングすることが可能である。したがって、オブジェクト回路のサイズによりマッピングを繰り返す数が膨大になり、その結果、処理時間が増大するような心配は少ない。再構成可能なアーキテクチャの内、特定の数の再構成可能な回路により構成される回路ブロックを複数備えているアーキテクチャに対しては、アーキテクチャコードは、回路ブロックの単位でマッピングできるオブジェクト回路情報を含むことが望ましい。
【００３３】  本発明のアーキテクチャコードは、回路を動的に再構成可能な論理回路領域を有するすべてのデータ処理装置に対して適用できる。しかしながら、ＦＰＧＡのように回路の構成をルックアップテーブル（ＬＵＴ）に記憶するハードウェアであると、ＬＵＴを変更するために数クロックを有し、実行速度の遅れが目立つ可能性がある。したがって、本発明においては、再構成に要する時間が非常に短い複数のエレメントを備えた論理回路領域を有するデータ処理装置を提供する。
【００３４】  本発明のエレメントは、入力データを論理演算して出力データを出力する演算コアを備えており、演算コアは、論理演算を指示する多ビットのファンクションコードが入力され、入力データにより出力データを選択するセレクタを備えている。演算コアに入力されているファンクションコードを供給するだけで論理を変更できるので、ＬＵＴを書き換える必要がなく高速に論理を交換できる。
【００３５】  さらに、エレメントは、ｎを複数の整数としたときに、ｎ個の入力と、ｎ個の出力と、ｎ個の入力から任意の入力データを選択する入力インタフェースと、ｎ系統の入力および出力データのいずれかから任意に選択してｎ系統の出力の少なくともいずれかから出力する出力インタフェースとを備えていることが望ましい。例えば、２次元の広がりの論理回路領域であれば、複数ｎの候補は４であり、東西南北（前後左右）４方向のいずれからもデータを入力でき、４方向のいずれに対してもデータを出力できる。また、３次元の広がりのある論理回路領域であれば、複数ｎの候補は６であり、前後左右上下の６方向のいずれからもデータを入力でき、６方向のいずれに対してもデータを出力できる。さらに、このエレメントは論理演算しない単なる接続切り換えエレメントとしても機能する。さらに、演算コアに、ｎ個の入力のいずれかのデータ、または、出力データをラッチするレジスタを設けることが望ましい。レジスタを使用しなければ、デコーダなどのクロック依存性のない、あるいは少ない処理を実行するのに適した回路を構成でき、レジスタを使用すれば、ステートマシンなどのクロック依存性の高い処理に適した回路を構成できる。
【００３６】  本発明によれば、数クロックあるいはサイクルの単位で実ハードウェア空間の動的な最適化が可能となる。このため、トレード・オフの自由度が非常に大きく、高性能高機能・低チップコスト低消費電力という、相反する幾つかの要求を同時に高いレベルで実現することができる。したがって、リコンフィギャブル・テクノロジーの有効性は飛躍的に増大する。動的に再構成可能な回路領域における実装効率が向上し、専用ＬＳＩと比較して内部の稼働効率を格段に向上させ、チップ・コスト、性能及び消費電力の３つの点で有利な解決手段を提供することができる。また、動的に再構成可能なハードウェアがプログラマブルなハードウェアである特徴は最大限に活かされるので、従来のＬＳＩ開発手法では、物理デザインと機能検証・品質保証のために数ヶ月以上の時間を必要としたハードウェアの提供を、原理的にこれらの期間を必要としないアーキテクチャを提供できる。
【００３７】  すなわち、本発明においては、実現可能なハードウェア空間の動的最適化技術を提供している。従来、有体物で提供されたハードウェア回路情報と、命令プログラムのようなハードウェア回路を制御するソフトウェア情報とを１つの統一されたアーキテクチャコードと呼ばれる体系で符号化した新たな情報として提供している。このため、ハードウェアの実行サイクルにおいて、アプリケーション要求（アーキテクチャ）の拘束条件下で、その瞬間瞬間に有効となるハードウェア・リソースと、要求される処理性能とをトレードオフし、動的に最適化を行うことで、特定のアプリケーション用に設計された専用ＬＳＩ対しても、リコンフィギャブルなチップが、チップ・コスト、性能要求・消費電力の３つの面で優位性を示すことが可能となる。
【００３８】  ハードウェア空間の動的最適化を実現するためのアーキテクチャの基本要素技術は、ハードウェア回路の時分割実行可能とする回路分割実行と継続実行技術、複数のハードウェア回路間のチャネル接続技術、動的ハードウェア回路生成技術・縮小技術・消去交換技術、ハードウェア回路情報のコンパクト化技術と回路情報の高速移動技術、アプリケーション要求とリソース間トレード・オフ・ソフトウェア技術、ハードウェア回路やソフトウェア情報の高速エミュレーション技術を挙げることができる。本発明のアーキテクチャコードは、これらの技術をサポートできるものである。
【００３９】  また、本発明のアーキテクチャコードは、オブジェクト回路情報（分割回路情報）、インタフェース回路情報、境界条件を含むものであるが、さらには、アーキテクチャコードは、ハードウェア回路情報とソフトウェア情報の２つに大きく分類される。ハードウェア回路情報は、使用可能なハードウェア資源を１００％とした場合の各回路のモジュール相関情報（静的トポロジー情報と動的モジュール実行情報）・階層構造・優先順位・例外処理条件・動的トレード・オフ条件等を含むことができる。アーキテクチャコードは、境界条件を始めとする、ハードウェア回路の機能やタイミング制御を補助的にサポートする情報全体を含むことができ、それには、従来の命令プログラムやベクターテーブル、アプリケーションによっては画像等のデータ情報といったソフトウェア情報も含まれる。
【００４０】  たとえば、マイクロ・プロセッサーの場合、外部割り込み制御部や例外処理部のような特定条件でしか必要とされない回路と、デコーダあるいはデータ・パスのように比較的高い頻度で実行されるような回路とが存在する。本発明のアーキテクチャコードを用いれば、ハードウェア空間に階層的に構成されるハードウェア回路を、マイクロ・プロセッサーという機能面から分析し直して、動的実行を想定した動的最適化が可能なように再構成した情報の集合体として、マイクロ・プロセッサーのハードウェアおよびソフトウェア情報を提供することができる。これは、一般的なプログラム空間とは異なり、並列実行を想定した複数のアーキテクチャコードから構成される。そして、アーキテクチャコードにより実装されるオブジェクト回路の内、回路交換の余裕が無いものに関するアーキテクチャコードはＬＳＩ内部のメモリに格納される。逆に、回路実行や起動余裕のあるオブジェクト回路に関するアーキテクチャコードは、外部メモリに格納され、外部メモリから内部メモリにロードされてから実行される。
【００４１】  本発明のデータ処理装置であるアーキテクチャＬＳＩは、ロードユニットおよびマッピングユニットとしての機能を備え、アーキテクチャコードをハードウェア上で翻訳してハードウェアの初期化や分割実行する為の外部・内部の高速ローディング制御ユニット（ＲＬＣ）、実行制御ユニットとしての機能を備え、高速論理回路交換動作の制御と階層的情報伝達（伝送）を行う高速論理通信マスタ（ＲＴＭ）、論理回路領域となる、各種ハードウェア回路（テスト回路含む）を直接分割実行する高速論理回路交換エレメント（ＲＸＥ）群から構成することができる。本発明の実施の形態については、本発明の他の課題、構成および効果と共に以下でさらに詳しく説明する。
【図面の簡単な説明】
【００４２】
【図１】本発明のデータ処理装置の概略構成を示す図である。
【図２】本発明のデータ処理装置の異なる例を示す図である。
【図３】アーキテクチャコードの概要を示す図である。
【図４】データ処理装置により制御されるロボットの概略構成を示す図である。
【図５】データ処理装置を備えた端末の概略構成を示す図である。
【図６】アーキテクチャコードを生成する過程を示すフローチャートである。
【図７】データ処理装置においてアーキテクチャコードを実行する過程を示すフローチャートである。
【図８】ＲＣ領域の構成の一例を示す図である。
【図９】ＲＣ領域の構成の異なる例を示す図である。
【図１０】ＲＣ領域のハードウェア構成を示す図である。
【図１１】エレメントの配置を示す図である。
【図１２】エレメントの構成を示す図である。
【図１３】演算コアの構成を示す図である。
【図１４】演算コアの動作例を示す図である。
【図１５】演算コアの他の動作例を示す図である。
【図１６】演算コアで実行可能な論理演算の例を示す図である。
【発明を実施するための最良の形態】
【００４３】  図１に、本発明のデータ処理装置の一例を示してある。このデータ処理装置１はアーキテクチャＬＳＩであり、回路を動的に再構成可能な論理回路領域（ＲＣ領域、リコンフィグラブル領域）１０と、幾つかのハードウェアモジュールのアーキテクチャコード２０を記録したアーキテクチャライブラリ２と、アーキテクチャコード２０を再構成可能なハードウェア１０の上で翻訳してハードウェアの初期化や分割実行する高速ローディング制御ユニット（ＲＬＣ）１１と、高速論理回路交換動作の制御と階層的情報伝達（伝送）を行う高速論理通信マスタ（ＲＴＭ）１２とを備えている。ＲＬＣ１１は、ライブラリ２からアーキテクチャコード２０を取得（フェッチあるいはダウンロード）するロードユニット（ＬＵ）１３としての機能を備えている。さらに、ＲＬＣ１１は、アーキテクチャコード２０のオブジェクト回路情報およびインタフェース回路情報により、ＲＣ領域１０にオブジェクト回路１９と、そのオブジェクト回路１９に接するインタフェース回路１８とをマッピングするマッピングユニット（ＭＵ）１４としての機能を備えている。ＲＴＭ１２は、アーキテクチャコードの境界条件にしたがってインタフェース回路１８を制御する動作制御ユニットとしての機能を備えている。また、ＲＴＭ１２は、ＲＣ領域１０に現在および／または過去にマッピングされたオブジェクト回路１９のインタフェース回路１８の状態を、必要に応じて境界情報メモリ１５に記憶し、オブジェクト回路１９の間の情報伝達を行う。【００４４】  以下の例においては、アーキテクチャコード２０のオブジェクト回路情報は、ハードウェアモジュールを適当な範囲に分割して、ＲＣ領域１０にマッピングできるように生成されている。したがって、オブジェクト回路情報によりＲＣ領域１０に構成されるオブジェクト回路１９は、ある機能を実装するための単位として設計されたハードウェアモジュールを分割した分割回路となる。このため、以下においては、分割回路情報をオブジェクト回路情報として含むアーキテクチャコード２０と、分割回路１９とを例にして本発明をさらに説明する。【００４５】  データ処理装置１は、さらに、アプリケーションを実行するプログラム４が記憶されたＲＡＭ５と、プログラム４にしたがってデータ処理装置１のハードウェア資源を用いて処理を実行するＲＩＳＣプロセッサ６と、割り込み信号を受信する割り込み制御ユニット７と、データ処理装置１の各ハードウェア資源にクロック信号を供給するクロック発生源８と、外部メモリに対してデータの入出力を制御するデータ入出力インタフェース９とを備えている。コードＲＡＭ５は、ＲＣ領域１０からもアクセスできるようになっている。【００４６】  図２に、本発明に係るデータ処理装置１の異なる例を示してある。ＣＰＵあるいはＤＳＰとしてのハードウェアは、１つまたは複数のハードウェアモジュール（ハードウェアマクロ）により提供できる。同様に、アーキテクチャコード２０をロードするロードユニット（ＬＵ）１３、マッピングユニット（ＭＵ）１４および動作制御ユニット（ＲＴＭ）１２の各機能も１つまたは複数のハードウェアモジュールにより提供できる。さらに、割り込み検出ユニット（ＩＵ）���もハードウェアモジュールにより提供できる。したがって、これらのハードウェアモジュールを分割回路化して、アーキテクチャコードによりＲＣ領域１０に動的に構成することが可能である。このため、図２に示したデータ処理装置１は、ＲＣ領域１０に、分割回路１９とインタフェース回路１８とによりプロセッサ６、ＬＵ１３、ＭＵ１４およびＲＴＭ１２の機能が、部分的に、あるいは必要であれば全体として実現されるようになっている。【００４７】  したがって、このデータ処理装置１においては、ＲＩＳＣプロセッサ６の機能がＲＣ領域１０を用いて実現されるので、ＲＣ領域１０にマッピングされる回路によりＲＣ領域１０の制御も含めたデータ処理装置１の制御が行われる。この場合、データ処理装置１において構成が固定されたハードウェアで実現される機能は、データ処理装置であるアーキテクチャＬＳＩ１を起動する際、あるいはリセットする際に、そのための構成をＲＣ領域１０にマッピングする初期設定機能１６となる。この初期設定機能１６は、独立した回路であっても良いし、あるいは、ＲＴＭ１２のようにＲＣ領域１０を管理あるいは制御するために固定的に必要な機能に含まれて、その機能が固定されたハードウェアで提供されても良い。【００４８】  このように、ＲＣ領域１０にマッピングされる回路により、ＲＣ領域１０の制御も含めたデータ処理装置１の制御を行うことができる。したがって、ＲＡＭ４にデータ処理装置１の制御も含めたアーキテクチャコード２８を用意することにより、アーキテクチャコード２８によりデータ処理装置１の制御を行うことができる。このため、複数の命令セットを備えた従来のプログラムによる制御を、アーキテクチャコード２８による制御に代えることが可能となる。このことは、記録媒体、ネットワーク、通信などによりアーキテクチャコード２８を提供することにより、ハードウェア情報のみならず、従来のソフトウェア情報も含めてデータ処理装置１に実装できることを意味しており、データ処理装置１のフレキシビリティーは拡大する。【００４９】  また、ＬＵ１３、ＭＵ１４およびＲＴＭ１２の機能などのように、データ処理装置１において、アプリケーションを実行するために必要であるが、複数のアプリケーションに対して汎用性のある機能を提供するアーキテクチャコードは、データ処理装置１の基本的な機能をサポートするためのアーキテクチャコード２９としてアプリケーション用のアーキテクチャコード２０とは独立して供給することが可能である。このシステムをサポートするアーキテクチャコード２９は、従来のプログラムベースで稼動するプロセッサにおけるＯＳあるいはＢＩＯＳに対応した取り扱いが可能となる。さらに、システムをサポートするハードウェアもアーキテクチャコード２９として提供することにより、ＲＣ領域１０の交換動作が不要な場合、あるいは交換動作のサイクルを低下できる場合は、ＲＣ領域１０の交換動作のためのハードウェアが占める領域をアプリケーションの実行のためのハードウェアに解放することが可能となる。このため、ＲＣ領域１０の利用効率を向上でき、少ないハードウェアリソースで最大限の処理能力を発揮するＬＳＩを提供することが可能となる。【００５０】  図３にアーキテクチャコード２０の一例を示してある。アーキテクチャコード２０は、ハードウェア回路情報２１とソフトウェア情報２２から構成される。ハードウェア回路情報２１は、ある機能単位を回路として実装するために設計されるハードウェアモジュール（ＩＰまたはライブラリ）を複数に分割した分割回路１９をＲＣ領域１０の一部にマッピングする分割回路情報２３と、分割回路１９に接するインタフェース回路１８をＲＣ領域１０にマッピングするインタフェース回路情報２４とを備えている。ソフトウェア情報２２は、アーキテクチャコード２０を識別するための識別情報２５と、インタフェース回路１８において実現する境界条件２６に加え、その他の情報２７、たとえば、他の分割回路に対する優先順位、例外処理条件、動的トレード・オフ条件、分割回路の実行順序などの情報を含む。アーキテクチャコード２０により、回路を構成するプリミティブのファンクション情報やトポロジーはすべて明確にされ、個々の分割回路１９のファンクションおよび分割回路１９の接続関係も明確になる。【００５１】  本例のデータ処理装置１においては、たとえば、図１および図２に示したＡという機能を実現するための回路構成（ハードウェアモジュール）は、Ａ１〜Ａｎのアーキテクチャコード２０として与えられる。また、Ｂという機能を実現する回路構成は、Ｂ１〜Ｂｍのアーキテクチャコード２０として与えられ、Ｃという機能を実現する回路構成は、Ｃ１〜Ｃｘのアーキテクチャコード２０として与えられ、Ｄという機能を実現する回路構成は、Ｄ１〜Ｄｙのアーキテクチャコードとして与えられる。なお、ｎ、ｍ、ｘおよびｙは適当な整数である。【００５２】  図４に示すように、データ処理装置１が、自動制御装置の一つの例であるロボット７０の制御を行う場合、Ａ機能は聴覚７１の制御およびデータ処理を行い、Ｂ機能は視覚７２の制御およびデータ処理を行い、Ｃ機能は言語能力７３の制御およびデータ処理を行い、Ｄ機能は身体機能７４の制御およびデータ処理を行う。そして、データ処理装置１のＲＣ領域１０には、これら複数の自動制御機構７１〜７４のハードウェアモジュール（ＡモジュールからＤモジュール）の分割回路がそれぞれ動的にマッピングされる。ＲＣ領域１０において、それぞれの機構７１〜７４のためのハードウェアモジュールが占める面積は動的に制御される。たとえば、ロボット７０が会話するときは、そのために聴覚、視覚および言語能力が大きく要求されるので、機能Ａ、ＢおよびＣを制御するための分割回路１９が占める面積が増大する。一方、ロボット７０が身体を用いた作業を行うときは、視覚および身体機能の能力が大きく要求されるので、機能ＢおよびＣを制御するための分割回路１９が占める面積が増大する。【００５３】  このロボット７０は、さらに、外界、たとえば、無線あるいは有線を介してインターネットなどのコンピュータネットワークに接続するための機構７５を備えている。したがって、それぞれの機能を実現するためのアーキテクチャコードを外界からダウンロードすることが可能となる。このため、ロボット７０で実現できる作業の種類は基本的には限界がなくなる。そして、アーキテクチャコードの供給元において、��ーキテクチャコードをアップデートすることにより、常に最新のハードウェアモジュールによりロボット７０を制御することができるので、ハードウェアの陳腐化という問題も解決される。また、アーキテクチャコードを用いてロボット７０を遠隔操作することも可能となる。外界との通信に必要な機能の内、回路でカバーできる機能は基本的にアーキテクチャコードを用いて本例のデータ処理装置１により行われる。したがって、通信用の機構７５は、アンテナ、コネクタなどの、回路ではカバーできないハードウェアを備えたものとなる。【００５４】  １つのデータ処理装置１により通信までカバーできない場合は、通信用のデータ処理装置１を搭載し、通信機能をサポートすると共に、通信機能の負荷が小さいときは、他の機能をサポートするように設計することが可能である。他の機能についても同様であり、身体機能用として、１または複数のデータ処理装置１を集中あるいは分散して搭載し、身体機能の負荷が小さいときは、それらのデータ処理装置１を言語処理などの他の機能ために用いることができる。【００５５】  図５に、データ処理装置１を搭載した端末８０の概略構成を示してある。この端末８０も外界と通信するための機構８５を備えている。したがって、アーキテクチャコードを外界からダウンロードすることにより、端末８０により様々なサービスを提供できる。ディスプレイ、マイク、スピーカなどの入出力機構８１を搭載していれば、画像、音声などの入出力を必要とする全てのサービスを提供することができる。さらに、光、温度などを感知するセンサー８２を備えていれば、カメラや温度計などとしてのサービスに限らず、身体をモニタするサービスなど、センサー８２を用いた他の様々なサービスを提供することができる。そして、アーキテクチャコードを外界からダウンロードすることにより、常に最新のハードウェアモジュールの機能を利用できる。【００５６】  図６に、アーキテクチャコード２０の生成方法を示してある。まず、ステップ３１において、ハードウェアモジュールのオリジナルのネットリストを生成する。ネットリストを生成するまでの段階は、Ｃ言語などの高級言語、Ｖｅｒｉｌｏｇなどのハードウェア記述言語を用いた様々な方法が公知であり、いずれの方法を用いても良い。ステップ３２において、オリジナルのネットリストを幾つかの単位に分割し、それぞれの分割した範囲内で、ＲＣ領域１０にマッピングできるように配置および配線問題を解決して分割回路情報２３を生成する。【００５７】  ＲＣ領域１０にマッピングする分割回路１９は、ＲＣ領域１０を構成するハードウェアの適切な範囲を単位とする回路ブロックを１または複数用いて配置されるように分割される。この分割方法を採用することにより、ＲＣ領域１０に分割回路１９を効率的に割付できる。また、分割回路１９の間で頻繁にデータ交換が起きるような分割方法は、分割回路１９を個別にＲＣ領域１０にマッピングすることを考えると好ましい分割方法とは言えない。もっとも、そのような分割回路１９の組み合わせは、ＲＣ領域１０の状況が許す限り同時にマッピングするように優先順位をつけることが本発明では可能である。したがって、本発明のデータ処理装置１においては、ネットリストの様々な分割方法を許容し、対応することが可能である。しかしながら、ステップ３２においては、オリジナルのネットリストを分割し、それをＲＣ領域１０のハードウェアに割り当てる作業をある程度繰り返して最適な分割回路情報２３が得られるようにすることが望ましい。【００５８】  さらに、ステップ３３において、オリジナルのネットリストの分割回路１９の境界を形成する情報からインタフェース回路情報２４を生成する。したがって、隣接する分割回路１９と境界が一致する部分においては、インタフェース回路情報２４は同一になり、部分的に共通のインタフェース回路情報２４を持ったアーキテクチャコードが生成されることになる。【００５９】  次に、ステップ３４において、オリジナルのネットリストを分割回路１９の集合に変換し、それらの分割回路１９の間で、ハードウェアモジュールとしての機能が実現されるように、タイミング収束問題などを含む配置および配線問題を解決し、インタフェース回路１８における境界条件２６を生成する。したがって、隣接する分割回路１９と境界が一致または接続できる状態に対応しており、インタフェース回路情報２４が同一または対応した構成となる部分においては、境界条件も同一または対応した条件になる。このため、部分的に共通の、あるいは対応した境界条件２６を持ったアーキテクチャコードが生成されることになる。【００６０】  さらに、分割回路を実ハードウェア空間（論理回路領域）１０にマッピングしてハードウェアモジュールとしての機能を実現させるように上記の情報をコンパイルする段階で、他の分割回路に対する優先順位、例外処理条件、動的トレード・オフ条件、分割回路の実行順序などの情報が得られるので、それらを含め、ステップ３５でアーキテクチャコード２０を生成する。したがって、ハードウェアモジュールは複数の分割回路１９により仮想ハードウェア空間上に構成され、アーキテクチャコード２０により、その一部を実ハードウェア空間であるＲＣ領域１０に実現し、実行することが可能となる。ＲＣ領域１０にマッピングされた分割回路１９は、回路インスタンスであるということができる。【００６１】
仮想ハードウェア空間と実ハードウェア空間とはインタフェース回路１８を介して結び付けられており、タイミング収束などの実ハードウェア空間に配置配線する際の問題は、インタフェース回路１８を境界条件２６により制御するという解決策が示されている。したがって、仮想ハードウェア空間においても、実ハードウェア空間においても、所望の分割回路１９を用いてソフトウェア的な処理、およびハードウェア的な処理を実現することが可能となる。
【００６２】  図７に、データ処理装置１において、アーキテクチャコード２０を用いてＲＣ領域１０に分割回路１９およびインタフェース回路１８を生成して実行する過程を示してある。まず、ステップ４１において、ロードユニット１３は、ＲＴＭ１２により指定されたアーキテクチャコード２０をライブラリ２から取得する。本例のデータ処理装置１において、リスクプロセッサ６がアプリケーションプログラム４を実行するケース、アーキテクチャコード２８によりＲＣ領域１０に実現される構成によりデータ処理装置が制御されるケースがあるが、いずれにおいても、ＲＴＭ１２が動作環境情報に基づき、取得するアーキテクチャコードを決定し、ロードユニット１３に指示を出す。動作環境情報は、プログラム４あるいはアーキテクチャコード２８により得られる当該データ処理装置１に対する要求、割り込み制御回路７からの割り込み情報、ＲＣ領域１０にマッピングされた分割回路１９の実行状況、ＲＣ領域１０の利用可能状況（空き領域の有無、置換可能な分割回路の有無など）が含まれる。【００６３】  ロードユニット１３は、ライブラリ２にコード２０があればアドレスを出力してコード２０をフェッチする。ロードユニット１３が適当な通信機能を備えていれば、他のデータ処理装置や、外部のメモリ、さらには、ネットワークで接続されたサーバやその他のネットワーク上の資源からコード２０を取得することができる。アーキテクチャコード２８のように、アーキテクチャコードが強制的に、あるいは能動的にロードユニット１３にロードされる構成にすることにより、アーキテクチャコードを介してデータ処理装置１における処理を能動的に制御することも可能である。【００６４】  ステップ４２において、マッピングユニット１４は取得されたアーキテクチャコード２０の分割回路情報２３およびインタフェース回路情報２４により、ＲＣ領域１０に分割回路１９と、その分割回路に接するインタフェース回路１８とをマッピングする。ＲＣ領域１０の状況は、分割回路１９の実行を制御するＲＴＭ１２が最も精度良く把握できるので、マッピングユニット１４はＲＴＭ１２の指示により、ＲＣ領域１０の空いたハードウェア空間またはリプレイス可能なハードウェア空間に分割回路１９およびインタフェース回路１８をマッピングする。その際、隣り合う分割回路１９との境界のインタフェース回路情報２４および境界条件２６が一致あるいは対応する場合は、仮想ハードウェア空間において隣接する分割回路１９なので、実ハードウェア空間１０においてそのまま接続することが可能である。したがって、双方のインタフェース回路を経ずに隣り合う分割回路同士が接続されるように分割回路１９をマッピングする。なお、図１および図２などにおいて、表示を簡略にするためにインタフェース回路１８は分割回路１９の左右のみに形成されている。分割回路１９が左右のみならず上下にも接続する配線を含む場合は、インタフェース回路１８は分割回路１９の上下左右に分割回路１９をカプセルで包むようにアレンジされる。さらに、ＲＣ領域１０が３次元方向の広がりを持ち、分割回路１９も３次元方向の広がりを持つ回路であれば、インタフェース回路１８は、立体的に分割回路１９をエンカプセルするように構成される。【００６５】  基本的には、ＲＣ領域１０の空き領域に分割回路１９はマッピングされることになる。ＲＴＭ１２が把握している動作環境情報によると、ＲＣ領域１０にマッピング済みの他の分割回路に対して、新たな分割回路１９を優先してマッピングする緊急性があれば、マッピング済みの他の分割回路１９を消去したり、縮小して空き領域を形成することも可能である。消去した他の分割回路１９は、緊急性が除かれた後に、ＲＣ領域１０に再度マッピングして、最初から、あるいは途中から実行することができる。また、縮小した他の分割回路１９では、分割回路１９をマッピングする工程を繰り返すことにより、処理速度は低下するが、その分割回路に係る機能の処理を継続して実行することができる。このように、本例のデータ処理装置１においては、ＲＣ領域１０に、動作環境情報などには依存するが、神出鬼没に分割回路１９をマッピングすることができる。アプリケーションが直面する場面を予めシミュレーションなどにより把握し、ＲＣ領域１０の所定の位置に所望の分割回路１９がマッピングされるようにスケジューリングすることも可能であり、ＲＣ領域１０の利用効率を向上することができる。【００６６】  ステップ４３において、マッピングされた分割回路１９を動作させる。分割回路１９を動作させるために、ステップ４４において、境界条件２６に基づきインタフェース回路１８を制御し、分割回路１９に所定のタイミングで所定のデータを供給する。このステップ４４において、ＲＴＭ１２の機能により、ＲＣ領域１０に現在および／または過去に、時間的および／または空間的に分かれてマッピングされた他の分割回路１９のインタフェース回路１８の状態が、境界条件２６に基づき、動作対象の分割回路１９のインタフェース回路１８の制御に反映される。したがって、ステップ４５において、実ハードウェア空間に実現された分割回路１９は、周囲に他の分割回路が接続されている仮想ハードウェア空間と同じ状態となり、その分割回路１９が属するハードウェアモジュールとしての機能が実ハードウェア空間上で実現される。また、分割回路１９が動作した結果は、インタフェース回路１８に出力されるので、ＲＴＭ１２はそのインタフェース回路１８の状態をＲＣ領域１０にマッピングされている他の分割回路１９のインタフェース回路１８に空間的に伝達したり、次にマッピングされる他の分割回路１９のインタフェース回路１８に時間を経て伝達する。これにより仮想ハードウェア空間では信号がネットリストに従って伝播し、ハードウェアモジュールの機能が実現される。【００６７】  インタフェース回路１８に設定する境界情報は、メモリ１５に記憶しておくことが可能である。他の分割回路１９がマッピングされるタイミングまでの時間が長かったり、動作途中に分割回路１９が消去されたときに、メモリ１５に記憶された境界情報をインタフェース回路１８に設定することにより、分割回路１９を所望の条件で動作、あるいは再動作させることができる。【００６８】  ステップ４６において、マッピングされた分割回路１９を動作させる要求が終了するまでステップ４４および４５を繰り返す。そして、処理が終了した分割回路１���は、ステップ４７においてＲＣ領域１０から消去される。あるいは、ＲＣ領域１０に余裕があり、以降に分割回路１９の機能が必要となることが予測される場合は、縮小してＲＣ領域１０に存在させることも可能である。さらに、ＲＣ領域１０に余裕がある場合は、そのまま存在させておいても良い。【００６９】  連続して入力されるデータに対して繰り返し動作が必要な分割回路１９がマッピングされている場合は、その処理が終了するまで同一の分割回路１９がＲＣ領域１０に存在する。並列度を高めることにより処理速度が上がる場合は、同一の分割回路１９の回路インスタンスを複数マッピングして処理速度を向上することも可能である。さらに、同一のアーキテクチャコード２０に対して複数の回路インスタンスをＲＣ領域１０に構成し、それらの出力を比較することにより信頼性の高い処理を実現することも可能である。そして、信頼性が要求される状態であることを判断したり、処理速度が要求される状態であることを判断して、そのような構成を自動的に採用するようにデータ処理装置１を制御することも可能である。一方、ステートマシンのように、ステートが進むことにより処理内容が順番に変わる場合は、次々に異なる分割回路１９がマッピングされる。【００７０】  分割回路１９、すなわち、回路インスタンスは、マッピングされる際に、ハードウェア空間の動的最適化を行う為に、他の回路インスタンスの起動と消去をテーブルマスタであるＲＴＭ１２に要求することができる。ＲＴＭ１２は、複数の回路生成・消去・コピー・移動や回路間のチャネル接続を行い、本来は大規模な回路を物理空間上に展開し回路構成しないと動作しない機能を、瞬間瞬間で必要な回路だけを回路インスタンスとしてハードウェア空間に動的に最適化しながら生成し、資源の少ないハードウェア空間を用いて実質的には膨大な複数の回路を並列に動作させることができる。【００７１】  ハードウェア空間に生成される分割回路１９は、常に、このデータ処理装置（アーキテクチャＬＳＩ）１の論理回路領域（回路プレーン）１０の上に存在するパーマネント回路と、生成された回路がある一定時間しか存在しないインスタント回路、一定時間毎に生成されるサイクリック回路等の種類に分けることができる。インスタント回路やサイクリック回路は、実際に実行されると消去される前に自分の実行結果で他の回路に通知すべき情報をＲＴＭ１２へ通知し記憶させておく。通常は、この回路実行情報は、次に生成される分割回路１９へ効率良く伝達される。逆に、ＲＴＭ１２は、インスタント回路間の実行情報が効率良く伝達されるように回路制御を行う。【００７２】  分割回路１９の実行順序の確定は、図６に示したアーキテクチャコード２０を生成する開発段階で、開発環境（ＦＷ）の回路コンパイラがこれを行う。分割回路が、外部信号やデータ入力条件により回路実行順序に変更がある場合は、ＲＴＭ１２が、この実行制御を行う。逆に、分割回路自身で実行順番が完全に制御可能な場合は、ＲＴＭ１２がシステム全体での優先順位に応じて回路の実行エリアの拡大・縮小を行う。【００７３】  たとえば、図１のＲＣ領域１０には、Ａ機能を実現するＡモジュールの分割回路Ａ１がインタフェース回路と共に生成され、Ｂ機能を実現するＢモジュールの分割回路Ｂ１〜Ｂ３がインタフェース回路と共に生成されている。分割回路Ｂ１〜Ｂ３は、連続した回路インスタンスで連続したＲＣ領域１０に生成されたので、隣接した分割回路の境界領域は連続しており、連続した分割回路から外側に繋がる境界にインタフェース回路１８が形成されている。なお、簡単に説明するためにインタフェース回路１８が図面の左右のみに生成されているが、仮想ハードウェア空間において上下に分割回路が接続される場合は、インタフェース回路が生成される場合があることは上述したとおりである。【００７４】  Ｃ機能を実現するＣモジュールにおいては、分割回路Ｃ１およびＣ２がＲＣ領域１０にマッピングされているが空間的に分割されている。このため、各々の分割回路Ｃ１およびＣ２にインタフェース回路１８が生成され、ＲＴＭ１２を介してこれらの分割回路Ｃ１およびＣ２は接続される。また、Ｄ機能を実現するＤモジュールにおいては、分割回路Ｄ１およびＤ２が接続した状態でマッピングされている。ＲＴＭ１２は、これらの分割回路１９のインタフェース回路１８に適当なタイミングでデータをセットすることにより分割回路１８をアクティブにし、その結果インタフェース回路１８に出力されたデータを保存したり、空間あるいは時間的に分割された接続先の分割回路１９のインタフェース回路１８に伝達する。【００７５】  さらに、ＲＴＭ１２は、分割回路１９のアーキテクチャコード２０の情報や、分割回路１９に対する動作環境情報により、ＲＣ領域１０の分割回路１９に対してクロック発生源８から供給されるクロック信号の種類、すなわち周波数を変えることができる。このため、ＲＣ領域１０の電力消費を必要最小限に抑えることができ、パフォーマンスは最大に維持することができる。ＲＣ領域１０のうち、回路インスタンスがマッピングされていない領域にはクロック信号は原則として供給されない。【００７６】  図８および図９は、時間が経過したＲＣ領域１０の状態である。Ａ機能はインスタント回路であり、Ａ１、Ａ２およびＡ３という分割回路１９が次々と生成されては消滅していき、その間のデータの転送はＲＴＭ１２により行われる。Ｂ機能は、図示したシーケンスでは緊急性を要する機能としてＲＴＭ１２に要求されており、ＲＣ領域１０のかなりのハードウェア資源を費やして生成されている。図８に示したタイミングでは、Ｄ機能を消滅させ、その資源を用いて多数の分割回路１９が生成されている。したがって、図９に示したタイミングでは、Ｂ機能の分割回路１９が消滅した領域にＤ機能の分割回路１９を復元して、再度、Ｄ機能の処理を途中または初めから再実行することになる。【００７７】  図１０に、ＲＣ領域１０の構成を示してある。本例のＲＣ領域１０は、各々の論理演算を変更可能な複数のエレメントの集合である回路ブロック（ｒｘｅ＿ｐｌａｎｅ）５１が格子状（アレイ状あるいはマトリクス状）に配列され、それらの間が配線５２により接続されている。アーキテクチャコード２０により定義される分割回路１９のサイズは、この回路ブロック５１の倍数を単位とすることが望ましい。その場合、分割回路情報２４をコンテキスト（コンフィグレーション情報）と���て、分割回路１９が１つまたは複数の回路ブロック５１を消費してマッピングされる。【００７８】  図１１に、１つの回路ブロック５１の構成を示してある。本例では、回路ブロック５１には、１６個の論理エレメント５３が４×４のアレイ構造をなすように配列されている。各々の論理エレメント５３は図面の上下左右の４方向に隣接する論理エレメント５３と４ビットのレイア１のバス５４により接続されている。さらに、上下左右に隣接する論理エレメント５３を越して、その外側に位置する論理エレメント５３と接続するレイア２のバス５５も用意されている。このため、論理エレメント５３の間を、よりフレキシブルに接続することができる。さらに、論理エレメント５３を３つ飛び越したレイア３のバスを配置することも可能である。【００７９】  各々の論理エレメント５３は、論理演算エレメントとしての機能と、論理エレメント間の接続切り換えを行う配線スイッチとしての機能を備えている。そして、演算する論理と、配線接続の状態を高速で変更または交換する必要があるので、本例のＲＣ領域１０には、ＲＸＥ（Ｒａｐｉｄ  ｅＸｃｈａｎｇｅ  Ｅｌｅｍｅｎｔ）５３と称される高速で交換動作が可能なエレメントが配置されている。【００８０】  図１２に、ＲＸＥ５３の構成を示してある。ＲＸＥ５３は、４系統の入力６１と、４系統の出力６２と、４系統の入力６１から任意の入力データを選択する入力インタフェース６３と、この入力インタフェース６３により選択された入力データφｉを論理演算してデータを出力する演算コア６５と、４系統の入力６１と演算コア６５の出力データφｏとを任意に選択して４系統の出力６２へ接続可能な出力インタフェース６４とを備えている。演算コア６５は、論理演算を変更可能な構成になっており、論理を変更可能な演算エレメントとしての機能を果たす。また、入力インタフェース６３は、４系統の入力６１から任意の１ビットを選択するための１６対１のセレクタ６３ｓが複数配置された構成となっている。出力インタフェース６４は、演算コア６５からの出力φｏと４系統の入力６１のルーティングを兼ねた７対１のセレクタ６４ｓが複数配置された構成となっている。【００８１】  図１３に、演算コア（ｒｘｅ＿ｃｏｒｅ）６５の構成を示してある。演算コア６５は、論理演算を指示する１６ビットのファンクションコードφｆを入力とし、入力データφｉにより出力データφｏを選択するセレクタ６６を備えている。演算コア６５は、さらに、４ビットの入力データφｉをデコードして１６ビットのセレクタ６６の選択信号を生成するデコーダ６７と、４系統の入力６１のいずれかのデータ、または、出力データφｏをラッチするレジスタ６８と、レジスタ６８にラッチする信号を選択するためのセレクタ６９ａおよび６９ｂとを備えている。【００８２】  図１４および図１５に、演算コア６５の動作を示している。演算コア６５はモード信号φｍによって動作が変わる。図１４のモード０は、演算コア６５は、４ビットの入力データφｉにより１ビットの出力データφｏを生成し、その出力データφｏをレジスタ６８でラッチして出力する。図１４のモード１は、演算コア６５は、４ビットの入力データφｉにより１ビットの出力データφｏを生成��、その出力データφｏをレジスタ６８でラッチせずに出力する。出力データφｏは、１６ビットのファンクションコードφｆと、入力データφｉをデコードした結果による。したがって、図１６に示すように、これらのモード１および２においては、ファンクションコードφｆを変えることにより、演算コア６５を４入力ＡＮＤから４入力コンパレータまで、９種類以上の異なる論理演算素子として使用することができる。【００８３】  さらに、演算コア６５は、セレクタ６６とファンクションコードφｆの組み合わせに論理演算を行っている。このため、従来のＦＰＧＡのようにＳＲＡＭなどの記憶素子を用いたルックアップテーブル（ＬＵＴ）に論理をセットする必要がない。したがって、ＳＲＡＭに入出力を行うサイクルを省略することができ、ファンクションコードφｆを演算コア６５に出力したタイミングで瞬時に演算コア６５で行う演算を交換することができる。このため、本例の演算コア６５は高速交換演算素子と称されている。【００８４】  図１５に示したモード２からモード４においては、１つの演算コア６５が、２ビットの入力信号φｉに対して１ビットの出力信号φｏを出力する２つの演算素子として機能する。すなわち、内蔵された１６対１のセレクタ６６が、２つの４対１のセレクタとして動作するようにセットされる。これらのモード２から４においては、演算コア６５は、図１６に示してあるように、ファンクションコードφｆを変えることにより、インバータから２入力ＥＸＮＯＲまで、７種類以上の異なる論理演算素子として使用することができる。【００８５】  さらに、図１５に示したモード５からモード７においては、演算コア６５を、３ビットの入力信号φｉに対して１ビットの出力信号φｏを出力する演算素子として使用できる。追加ビットの入力を許せば、内蔵された１６対１のセレクタ６６を、２つの３対１のセレクタとして動作するようにセットできるので、演算コア６５を２つの３ビット入力１ビット出力の演算素子としても利用できる。これらのモード５から７においては、演算コア６５は、図１６に示してあるように、ファンクションコードφｆを変えることにより、３入力ＡＮＤからフルアダーまで、５種類以上の異なる論理演算素子として使用することができる。【００８６】  このように、本例のＲＣ領域１０を構成するＲＸＥ５３は、セレクタ方式で高速で論理を交換することが可能である。ＲＸＥ５３は、さらに、内部に出力データをラッチするレジスタ６８を備えており、出力データをスルーで出力することも、Ｆ／Ｆによりクロックに同期した状態でも出力することができる。したがって、デジタル回路で良く使用される組み合わせ回路（デコーダ）と、順序回路（ステートマシン）及び演算回路（データパス）を、アーキテクチャコード２０の回路情報により効率よく実装し、実行することができる。【００８７】  本例の論理を再構成可能なエレメント（ＲＸＥ）５３は、２次元アレイあるいはマトリクスを構成すること考えている。したがって、２次元に格子状に配置するのに適した４系統の入出力を備えている。しかしながら、エレメント間を接続するネットワークが１次元的であれば、２系統あるいは３系統の入出力で対応することができる。さらには��エレメント間を接続するネットワークが３次元的であれば、５系統以上の入出力を用意することが望ましい。さらに、本例の演算コア（ｒｘｅ＿ｃｏｒｅ）は、高速で交換動作が可能なようにセレクタ方式を採用しているが、ルックアップテーブル（ＬＵＴ）へロジックを入力するサイクルを消費できるようであればＬＵＴを備えた演算コアを採用することも可能である。【００８８】  また、本例においては、同一構造のエレメント５３によりマトリクスを構成しているが、論理演算用のエレメントとネットワーク形成用のエレメントによりマトリクスを構成することも可能である。さらに、算術計算を主としたエレメント、アドレス発生を主としたエレメントなどのある程度の機能に特化した、または、汎用性はあるが、ある機能の処理能力の高い複数種類のエレメントを適当な密度で配置したマトリクスにより、回路を再構成できるＲＣ領域を構成することも可能である。
【産業上の利用可能性】
【００８９】  システムのハードウェア・アーキテクチャは、一般的に設計開始（検討）の段階で要求仕様として確定することが多い。実際のアプリケーションが固まった段階における要求の変化や、設計初期段階の時点では予想しなかった要求仕様の変更に対応するために、最近のＦＰＧＡやＰＬＤは、ハードウェア構成を変更可能なアーキテクチャを採用している。しかしながら、その柔軟性自体は、内部を構成する基本エレメントを冗長化し、チップ・コストの競争力の点、および専用設計されたＬＳＩやＡＳＳＰに比較して動作周波数の点で不利な要素となる。【００９０】  最近は、ダイナミック・リコンフィギャブル・マシンが注目されるようになり、チップ・コストが高いという問題と動作周波数が低いという欠点をカバーできるようになりつつある。ただ、その競争力は、１〜２年掛けて開発された専用ＬＳＩと比較すると十分なレベルにはない。本発明においては、これらの問題を解決することに加え、低消費電力化も実現することで、トータルとして現在のＳｏＣのコストパフォーマンスを実現しながら、アーキテクチャへの動的最適化を行い、次に来るハイパーＳｏＣを実現することができる。【００９１】  一方、現在のＬＳＩ開発の問題は、チップ・コストの競争力という点と、性能・低消費電力化は最高であっても開発期間と開発コストは最悪という点であるが、これらの問題も解決することができる。【００９２】  現在のＬＳＩ設計の常識では、ハードウェア記述言語（Ｖｅｒｉｌｏｇ−ＨＤＬやＶＨＤＬ）を中心にして、これを各社の半導体プロセスに合うライブラリの接続形式に合うネットリストに翻訳（論理合成）する。この場合、物理配線と各論理ゲート（回路）の接続形態により動作周波数も影響を受けるが、それにも増して大きな問題は、システムアーキテクチャの視点からの最適化が出来ない点である。つまり、現在のＳｏＣやＦＰＧＡ、ダイナミック・リコンフィギャブル技術は、ハードウェアを実行する際に、アーキテクチャ・レベルからの動的最適化を実現できない構造になっている。本発明は、ハードウェアを実行する際のハードウェア空間を動的に最適化することが可能であり、この問題を解決する。【００９３】  また、現在のＬＳＩ開発手法と実装方法では、システムの信頼性を上げたり品質を保証したりするためのコストが異常に大きいと言える。１つの要因は、テスト回路を実装しないと内部の機能チェックができず、テスト回路を実装するとそのテスト回路でチップ面積が占められ、チップコストが上昇することである。したがって、結果的に品質を上げる手段は存在するが、最終的にはコストとのトレード・オフとなり、信頼性や品質保証をするには限界がある。このため、コンシュマー品に最も必要とされるテスト自体が製品の競争力を奪う結果となってしまう。さらに、デバッグを容易化するための設計も全体の開発時間や開発リソースを減少するために必要なコンセプトであるが、やはり、その設計のための費用がチップ・コストを上昇させる要因となる。【００９４】  本発明は、これらの課題の全てに対して解を与えることができる。本発明のハードウェア空間の動的最適化テクノロジーは、信頼性や品質保証する回路を必要なタイミングだけ存在させて、全体的なコスト影響を最小にできる。デバッグ容易化のための回路は、デバッグが完了すれば一般的には必要無い。逆に、デバッグが必要なタイミングで追加すべきデバッグ用回路を生成すれば良く、本発明においては、極めて容易に対応できる。【００９５】  さらに、アーキテクチャコードに基づく本発明は、将来、ネットワーク等を使って、動的にテスト回路やその他の機能を実現する回路を変更したり、生成したりすることを可能とし、大規模で複雑なシステムを構築するコストを大幅に低減できる。したがって、手元には小型のチップ化された本発明のデータ処理装置が内蔵されたターミナルを持ち、ネットワークを介して膨大なリソースを持つ仮想ハードウェア空間と接続することにより、多種多様な機能を手元の小型のターミナルにより実行することが可能となる。このシステムは、ネットワークを介して膨大な入出力データを通信しながらネットワーク上に存在するハードウェア資源を用いて処理を行う現在の方式とは全く逆の発想であり、ネットワーク上に存在するハードウェア資源を手元のターミナルで実行しようというものである。したがって、大量の入出力データの送受信を緩和してネットワーク負荷を低減でき、また、データの秘匿性を保証できるなど、様々なメリットを持ったシステムが本発明に基づき構築されうる。【００９６】  また、上記においては、半導体集積回路技術をベースにしたＬＳＩに本発明を適用する例を説明しているが、いわゆる回路網を形成するデータ処理装置のすべてに本発明を適用することが可能である。すなわち、電気あるいは電子レベルの回路技術をベースにしたデータ処理装置に限らず、光、生体、分子あるいは原子構造、遺伝子構造などをベースにした回路網を形成する全てのデータ処理装置に対して本発明を適用することができる。
【図１】
0004572835.tif 000002
【図２】
0004572835.tif 000003
【図３】
0004572835.tif 000004
【図４】
0004572835.tif 000005
【図５】
0004572835.tif 000006
【図６】
0004572835.tif 000007
【図７】
0004572835.tif 000008
【図８】
0004572835.tif 000009
【図９】
0004572835.tif 000010
【図１０】
0004572835.tif 000011
【図１１】
0004572835.tif 000012
【図１２】
0004572835.tif 000013
【図１３】
0004572835.tif 000014
【図１４】
0004572835.tif 000015
【図１５】
0004572835.tif 000016
【図１６】
0004572835.tif 000017