しかしながら、現在、マルチメディアデバイス、モバイルデバイス、デジタルデバイスなどに搭載され、それらのデバイスのデータ処理の多くを行っているシステムLSIは、1つのチップの上に、特定の機能を実現するための回路単位(多くのケースでは、ハードウェアモジュールあるいはIP(Intellectual Property)、ライブラリと称される)が複数搭載され、それらのハードウェアモジュールが並列して処理を行っている。したがって、FPGAに、単に1つの回路を分解して実装したとしても、回路を再構成可能なデバイスの有効性が大きく広がることにはならない。
従来のシステムLSIに代表される回路デバイスの技術においては、ハードウェアで実現する回路は、特定のハードウェアモジュール、IP、ライブラリと呼ばれる単位で、固定されたハードウェアとして搭載され、それらの回路により専用化されたLSIによりデータが処理される。これに対し、汎用的な回路あるいはアーキテクチャでハードウェアの回路を実行する技術がある。例えば、シミュレータであり、プログラムの命令を1つ1つ実行して、その回路自体を実行しているかのように、汎用的な装置であるCPUに役割を割り当てる手法である。これは、本来、ハードウェアで実現する回路の持つ並列性を命令単位の実行に変えてCPUで処理を行うため、複数のCPUを使用したとしても、実際のハードウェアの回路と比較して、実行する回路規模にもよるが、普通3桁〜5桁以上の実行時間が必要とされる。また、リアルタイム性に決定的に欠けるので、実際に複雑な回路をシミュレーションしようとすると膨大な検証時間を必要とする。このため、膨大なゲート数を有する近年の専用LSIに代わり処理を実行することが不可能なだけではなく、複雑な専用LSIの機能を検証するにも不向きな状況になりつつある。
リアルタイム性の問題に対して、ハードウェア・アクセラレーションと呼ばれる手法がある。これは、最初の段階では、CPUやDSPを複数並べて並列実行させ、その一つ一つに小規模な回路を割り当てて、全体としてはシミュレーション時間を短時間で行うというアイデアである。FPGAやPLDが実用化されたことにより、シミュレーション対象の回路を直接これに割り当てるやり方が主流となり、大規模な集積回路やハードウェアのエミュレーションが、リアルタイムに極めて近い時間で実行できるようになりつつある。
しかしながら、FPGAの内部セル構造は、ハードウェア回路の実現をある一定の時間を掛けて変更するようなアーキテクチャ構造となっており、CPUやDSP等のデータパス系を有するハードウェアの実装にはあまり向いていない。実際に、実装しようとすると、処理性能(動作周波数)・ゲート効率・消費電力の何れでも、専用に設計されたLSIと競争できない。さらに、アプリケーションを実行するための回路にもよるが、FPGAまたはPLDの場合、実装対象となる回路の規模がFPGAあるいはPLDの集積度より大きいと、原則として実装は不可能である。アプリケーションを実行するための回路を分割して実装する事も考えられるが、その場合、チップが複数になりピン数の制限から、更に性能・コスト・消費電力とも不利になる。
さらに、1つのFPGAに分割した回路を実装する場合、ピン数の制限や、分割した回路同士の境界情報の伝播など、回路を分割する際に発生する問題が多数ある。それらを、FPGAを用いたハードウェアの設計の段階ですべて解決しようとすると、専用LSIを設計および開発する従来の技術に対し、FPGAを用いたメリットは失われてしまう。さらに、一般的に、FPGAやPLDは、目標のハードウェア回路の数倍〜数十倍ものハードウェアが必要となり、チップ・コスト、目標性能、および消費電力の3つの点でも、専用LSIには及ばない。
一方、専用LSIにも多くの問題がある。従来の専用LSIの場合、LSIの設計段階で正確な性能目標や機能仕様が無いと設計が収束しない。例えば、アプリケーションの実行状況によっては、機能と性能の動的トレード・オフが可能なことが多いが、設計段階で必要とされる性能を実現可能なだけのハードウェア領域や性能を保証出来る動作周波数を確定させる必要がある。つまり、機能や性能の動的トレード・オフがアプリケーション上可能な場合でも、ピーク性能要求や単体レベルの機能毎の性能保証を行った上で、LSI設計を行う必要がある。従って、機能と性能についての要求が決定的であり、高性能および多機能を狙うシステムLSIは、コスト的には最悪ケースの積み上げとなり、製造コスト、チップ面積、消費電力などが悪化する一方になる。
さらに具体的には、自動制御装置、例えば、ロボットのようなアプリケーションの場合、視覚情報や聴覚情報を処理しているときは、他の機能(歩行機能・言語処理・嗅覚処理等)を大幅に弱めて良い場合が多い。しかしながら、従来のシステムLSIでは、すべての機能を実現するすべての回路を同じようにシステムLSIに実装しており、単にその処理結果を使用しないか、あるいは、スタンバイ状態で処理能力を低下させているに過ぎない。
これに対し、回路構成を動的に再構成できるのであれば、その再構成可能な論理回路により構成されるハードウェア空間を動的に最適化することにより、使用しない、あるいはスタンバイ状態になる機能へのハードウェア資源の割り当てを大幅に絞って、本来集中すべき視覚情報処理や聴覚情報処理にハードウェア資源を集中的に割り当てることができる。以下に示す技術によれば、従来の専用LSIのように、ハードウェア回路(ターゲット回路)をすべて実装する必要がないので、少ないハードウェア資源で最大の実行効率を得ることができる。また、以下に示す動的最適化技術は、論理回路により構成される実ハードウェア空間のアレンジを動的に最適化することを言い、実ハードウェア空間をその都度刷新するだけではなく、実ハードウェア空間の部分的なアレンジを動的に最適化することも含む概念である。したがって、現在使用していない機能へのハードウェア資源の割り当てを無くすだけではなく、ハードウェア資源の割り当てを絞り、スタンバイ中の機能のリアルタイム応答性を犠牲にすることなく、使用中の機能に対するハードウェア資源の割り当てを増加させることができるものである。
また、以下に示す動的最適化技術は、使用中であっても緊急性を要する機能に対してはハードウェア資源の割り当てを増加し、緊急性を要しない機能に対してはハードウェア資源の割り当てを減らしたり、ハードウェア資源の割り当てを一時的に無くすことができるものである。緊急性とは、処理速度、優先順位などを含む概念であり、データ処理装置に対する要求の重要なものの1つである。ハードウェア資源の割り当てを左右する、データ処理装置に対するその他の要求としては、並列処理するジョブの増減、割り込みの有無など様々なものが考えられる。以下に示す動的最適化技術は、これらのデータ処理装置に対する要求に応じてハードウェア資源の割り当て、すなわち、実ハードウェア空間の構成を動的に最適化する。
実ハードウェア空間を動的に最適化する1つの方法は、データ処理装置が遭遇するすべての場面を想定し、それに対して最適な実ハードウェア空間のアレンジを予め決定し、コンテキスト情報(あるいはコンフィグレーション情報)として用意し、その都度、ロードする方法である。この方法は、実ハードウェア空間で生ずるタイミング収束などの問題を予め解決できるので、データ処理装置の性能を確保する点では望ましいであろう。しかしながら、すべてのシナリオにおいて遭遇する場面を想定することは不可能であり、限られた場面を対象としてある程度最適化し、その他の場面では中庸な性能が得られるような汎用的な解を得ようとすれば、実ハードウェア空間を動的に最適化する効果は薄れてしまう。
他の方法の1つは、ある機能を実装するための単位として設計されるハードウェアモジュール(IPまたはライブラリ)を、論理ゲートとそれらの接続状態を示しただけのネットリストの状態で用意し、その機能が必要となったときに、そのネットリストの一部あるいは全体を実ハードウェア空間の空いた空間にあわせて動的に配置および配線し、マッピングする方法である。この方法は、実ハードウェア空間の瞬間的な状況に合わせて回路をフレキシブルに、動的に配置できるので、ハードウェア空間を最も動的に最適化できる方法であると考えられる。しかしながら、ネットリストに基づく配置および配線する処理は、静的なLSIの設計および開発段階でも膨大な時間を要する処理であり、その処理をマッピングする瞬間毎に繰り返す必要がある。瞬間的な実ハードウェア空間の実情とその他の要素を加味し、瞬間的に必要な回路のネットリストに基づいて配置・配線の諸問題を解決してマッピングすることは実際には不可能である。ほとんどクロック単位あるいはサイクル単位で高速にタイミング収束を含めた問題を解決できるハードウェアが提供できたとしても、そのようなハードウェア資源を別途用意することは経済的でもないし、そのようなハードウェアの登場を待つのでは、ハードウェア空間の動的最適化の実現が難しくなるだけである。
ネットリストの状態から、そのネットリストで実装しようとしている回路の一部の適当な範囲を単位とし、それぞれの回路単位内の配置・配線を解決し、それらの回路単位を実ハードウェア空間の空いた空間に配置して、それらの回路単位を接続する配置・配線問題に縮小することにより、マッピングする瞬間毎の配置・配線問題を解決する時間を短縮できる可能性がある。しかしながら、配置・配線するときの実ハードウェア空間の状況は刻々と変動する。したがって、状況に応じて常に瞬間瞬間で配置・配線問題を動的に解決することは容易ではないであろうし、可能であったとしてもハードウェア資源と電力をそのために常に費やすことには変わりなく、高性能高機能・低チップコスト・低消費電力のデータ処理装置を提供するという課題を解決することができない。
本発明の一態様は、回路を動的に再構成可能な論理回路領域を有するデータ処理装置である。このデータ処理装置は、論理回路領域に再構成可能な複数のエレメントを有する。それぞれのエレメントは、入力データを論理演算して出力データを出力する演算コアであって、論理演算を指示する多ビットのファンクションコードが入力され、入力データにより出力データを選択するセレクタを含む演算コアと、複数n個の入力と、n個の出力と、n個の入力から入力データを選択する入力インタフェースと、n個の入力および出力データの少なくともいずれかを選択してn個の出力の少なくともいずれかから出力する出力インタフェースとを備えている。
これらのエレメントにより、2次元または3次元の広がりを含む論理回路領域を構築できる。複数nの候補は4であり、東西南北(前後左右)4方向のいずれからもデータを入力でき、4方向のいずれに対してもデータを出力できる。また、3次元の広がりのある論理回路領域であれば、複数nの候補は6であり、前後左右上下の6方向のいずれからもデータを入力でき、6方向のいずれに対してもデータを出力できる。さらに、このエレメントは論理演算しない単なる接続切り換えエレメントとしても機能する。
さらに、演算コアに、n個の入力のいずれかのデータ、または、出力データをラッチするレジスタを設けることが望ましい。レジスタを使用しなければ、デコーダなどのクロック依存性のない、あるいは少ない処理を実行するのに適した回路を構成でき、レジスタを使用すれば、ステートマシンなどのクロック依存性の高い処理に適した回路を構成できる。
このエレメントは、入力データを論理演算して出力データを出力する演算コアを備えており、演算コアは、論理演算を指示する多ビットのファンクションコードが入力され、入力データにより出力データを選択するセレクタを備えている。演算コアに入力されているファンクションコードを供給するだけで論理を変更できるので、ルックアップテーブル(LUT)を書き換える必要がなく高速に論理を交換できる。したがって、FPGAのように回路の構成をルックアップテーブル(LUT)に記憶するハードウェアに対し、再構成に要する時間が非常に短い論理回路領域を有するデータ処理装置を提供することができる。
このデータ処理装置において動的に回路をマッピングする1つの手段はアーキテクチャコードを用いることである。アーキテクチャコードは、アプリケーションを実行するための回路の少なくとも一部であるオブジェクト回路を論理回路領域の一部にマッピングするためのオブジェクト回路情報と、オブジェクト回路に接するインタフェース回路を論理回路領域にマッピングするためのインタフェース回路情報と、インタフェース回路において実現する境界条件とを含む。オブジェクト回路の最も適当な例は、アプリケーションを実行するためのある機能を実装するための単位として設計されるハードウェアモジュールを複数に分割した分割回路である。ハードウェアモジュールを実装するために要するハードウェア資源が少ない場合は、分割せずにオブジェクト回路化し、それに対応するインタフェース回路情報を生成して論理回路領域に実装することも可能である。
回路を動的に再構成可能な論理回路領域を有するデータ処理装置における制御方法は、アーキテクチャコードを取得する工程と、アーキテクチャコードのオブジェクト回路情報およびインタフェース回路情報により、論理回路領域にオブジェクト回路と、そのオブジェクト回路に接するインタフェース回路とをマッピングする工程と、アーキテクチャコードの境界条件に基づきインタフェース回路を制御する動作工程とを有する。
また、このデータ処理装置は、回路を動的に再構成可能な論理回路領域と、アーキテクチャコードを取得するロードユニットと、アーキテクチャコードのオブジェクト回路情報およびインタフェース回路情報により、論理回路領域にオブジェクト回路と、そのオブジェクト回路に接するインタフェース回路とをマッピングするマッピングユニットと、アーキテクチャコードの境界条件にしたがってインタフェース回路を制御する動作制御ユニットとを有する。ロードユニットは、アーキテクチャコードをフェッチする場合はフェッチユニットであり、コンピュータなどを用いた通信ネットワークやメモリからダウンロードする場合はダウンロードユニットになる。ロードした回路情報によりハードウェアを再構成するマッピングを含めてロードと呼ばれることもあるが、本明細書においては、アーキテクチャコードを取得するまでをロードするステップと呼ぶことにする。ロードユニットにおいてコードを取得するプロセスには、フェッチ、ダウンロード、ゲット、リードなど様々な命令を割り当てることができ、コミュニケーションシステムによりアーキテクチャコードをロードすることも可能である。
これらのロードユニット、マッピングユニットおよび動作制御ユニットも、ハードウェアモジュールの1つとして捉えることが可能であり、分割してオブジェクト回路化することにより、論理回路領域に分割回路として実装することが可能である。したがって、アプリケーションの実行状況により、ロードユニット、マッピングユニットおよび動作制御ユニットの機能の一部を実現すれば良いような条件においては、これらの機能に割かれるハードウェア資源を解放して、他のハードウェアモジュールの実現のためにハードウェア資源を割当てて並列処理能力を向上したり、処理速度を改善したりすることができる。
ハードウェアモジュールを含むアプリケーションを実行するための回路のオリジナルのネットリストから、ある適当な範囲を分割し、分割されたユニット内で配置・配線問題が解決され、論理回路領域の一部にマッピング可能なオブジェクト回路情報を生成する。次に、オブジェクト回路情報により構成されるオブジェクト回路の、オリジナルのネットリスト上の境界を形成する情報からインタフェース回路情報を生成する。さらに、オリジナルのネットリストをオブジェクト回路の集合に変換して、それらのオブジェクト回路の間の配置・配線問題を解決し、インタフェース回路における境界条件を生成する。したがって、オブジェクト回路の間の配置・配線問題は、インタフェース回路における境界条件として、アーキテクチャコードの生成段階で解決される。
このため、実ハードウェア空間である、回路を動的に再構成可能な論理回路領域の空いた空間に、オブジェクト回路を配置するときには、ロードユニットにより、適切なアーキテクチャコードを取得し、マッピングユニットによりオブジェクト回路をマッピングすると共に、その周囲にインタフェース回路をマッピングし、実行制御ユニットにより、インタフェース回路を境界条件に基づいて制御することにより、実ハードウェア空間にオブジェクト回路を動的に配置し、オブジェクト回路を実行することができる。したがって、実ハードウェア空間の瞬間的な状態により、所望の、あるいは適切なオブジェクト回路とインタフェース回路を論理回路領域にアレンジするだけで、オブジェクト回路を実行することができる。そして、瞬間瞬間でオブジェクト回路の間の配置および配線問題を解決しなければならないという問題の発生を未然に防止できる。
実ハードウェア空間である再構成可能な論理回路領域にマッピングされた1つまたは複数のオブジェクト回路は、その状態で実行される。オブジェクト回路の境界はインタフェース回路を介して、仮想的には、そのオブジェクト回路が属するハードウェアモジュールを構成する多数のオブジェクト回路に接続されている。このため、オブジェクト回路の境界は多数のオブジェクト回路が接続された仮想ハードウェア空間の状態で制御される。したがって、マッピングする際は、オブジェクト回路とインタフェース回路とを、実ハードウェア空間である論理回路領域の利用可能ないずれの領域にもマッピングすることができる。
さらに、隣り合うオブジェクト回路との境界におけるインタフェース回路情報および境界条件が一致する、または対応している場合は、マッピングしようとしているオブジェクト回路と隣り合うオブジェクト回路とは仮想ハードウェア空間において隣接しているオブジェクト回路であることを意味する。このため、インタフェース回路を経ずに隣り合うオブジェクト回路同士が直に接続されるようにオブジェクト回路をマッピングすることができる。すなわち、実ハードウェア空間にマッピングする実際のオブジェクト回路の集合の大きさを、実ハードウェア空間の状態に合わせて自由に変えることができる。複数のオブジェクト回路を実ハードウェア空間に分散してマッピングすることも、集中してマッピングすることも可能であり、実ハードウェア空間を極めてフレキシブルに使用することができる。
論理回路領域に現在および/または過去に、時間的および/または空間的に分散配置されたオブジェクト回路同士の接続も容易である。時間的および/または空間的に分かれてマッピングされた他方のオブジェクト回路のインタフェース回路の状態を、動作制御ユニットにより、境界条件に基づき、実行する一方のオブジェクト回路のインタフェース回路の制御に反映することにより、実ハードウェア空間では時間的あるいは空間的に分かれたオブジェクト回路同士を、仮想ハードウェア空間では無理なく接続することができる。このため、論理回路領域に現在および/または過去にマッピングされたオブジェクト回路のインタフェース回路の状態を記憶する境界情報メモリを設けておくことが望ましい。他方のオブジェクト回路には、時間的および/または空間的に接続されずにマッピングされた自己のオブジェクト回路も含まれる。これにより、あるオブジェクト回路を条件によって実ハードウェア空間では消滅・再生しても、仮想ハードウェア空間で連続した処理が可能である。さらに、同一のオブジェクト回路情報による回路インスタンスを複数構成して並列度を高めたり、信頼度を高めたりすることも可能である。そのような制御はアーキテクチャコードによっても、マッピングユニットと動作制御ユニットの組合せによっても可能である。
このアーキテクチャコードは、様々な利用方法がある。実ハードウェア空間にマッピングするアーキテクチャコードをプログラムの命令セットのようにシーケンシャルにトレースできる状態で提供することにより、アーキテクチャコードによりデータ処理装置を制御できる。アーキテクチャコードは、記録媒体に記録して提供することも可能であるし、ネットワークなどの通信手段を介して提供することも可能であり、ハードウェアの構成を遠隔操作により変えることも可能である。
また、従来のシステムLSIに代わる使用方法としては、ロードユニットにより、データ処理装置に対する要求(緊急性や、新たなジョブの開始あるいは並列処理状態の変化、割り込みの有無など)、マッピングされたオブジェクト回路の実行状況、論理回路領域の利用可能状況を含めた動作環境情報に基づき、複数のアーキテクチャコードを備えたアーキテクチャライブラリから所望のアーキテクチャコードを取得し、アプリケーションの実行状況によりデータ処理装置のハードウェアを動的に最適な構成にすることができる。最適化の指針は、動作環境情報に基づき決めることができ、それにはロードユニット、マッピングユニット、実行制御ユニットの1つまたは複数が寄与する。実ハードウェア空間の空いた空間に新たなオブジェクト回路をマッピングしたり、使用済みのオブジェクト回路を消去したり、緊急性を有するハードウェアモジュールを優先的にマッピングするために、他のハードウェアモジュールの分割回路を一時的に退避したり、他のハードウェアモジュールに割り当てられたハードウェア資源の割合を一時的に縮小したり、実ハードウェア空間の利用方法に制限はない。
また、ハードウェア回路をアーキテクチャコード化することにより、データ処理装置の利用価値は飛躍的に増大する。限られた利用方法としては、アーキテクチャライブラリをデータ処理装置に実装することができる。例えば、このデータ処理装置と、データ処理装置に実装される少なくとも1つのハードウェアモジュールが、それぞれの制御またはデータ処理に用いられる複数の自動制御機構とを有し、論理回路領域に、複数のハードウェアモジュールの分割回路がそれぞれ動的にマッピングされる自動制御装置を提供できる。ロボットの視覚情報や聴覚情報を処理しているときは、それらの制御に必要なハードウェアモジュールの分割回路にハードウェアリソースが主に割り当てられ、歩行機能などの他の自動制御機構の制御に必要なハードウェアモジュールの分割回路は実ハードウェア空間から追い出されるといった制御が可能となる。
一方、ネットワークなどのデータ処理装置の外側に対する通信を介してアーキテクチャコードを取得することも可能であり、オブジェクト回路をマッピングできる程度のハードウェア空間があれば、膨大なハードウェア資産を自由に利用することができる。たとえばインターネット上に存在する多種多様なハードウェア資産を手元の携帯端末のLSIにマッピングして利用することが可能となる。ロボットのように、種々の機構を備えた装置と組み合わせることにより、小さなリソースで多種多様な作業を行うことができる。また、アーキテクチャコードは常にアップデートされるので、常にアップデートされた制御回路の下で多種多様な作業を行わせることができる。
また、このデータ処理装置と、アンテナ、コネクタなどの、外界との通信のために回路では実現できない通信に必要な機構と、ディスプレイ、マイクなどの入出力に特化した機構とを備えた端末により、種々の通信を行う機能から、通信以外の機能、例えば、身体の状態をモニタする機能など、様々なサービスを提供できる。そして、それぞれのサービスを行う回路構成は、常にアップデートされた最新なものを使用できる。
オブジェクト回路のサイズはフレキシブルであり、マッピング対象の論理回路領域にインタフェース回路も含めてマッピングできるサイズよりも小さければ良い。オブジェクト回路のサイズは小さい方が実ハードウェア空間の最適化の効率は高い。しかしながら、1つのハードウェアモジュールに対する用意されるアーキテクチャコードの量が多くなる。マッピングする際は、ハードウェアスペースさえあれば複数のオブジェクト回路をまとめてマッピングすることが可能である。したがって、オブジェクト回路のサイズによりマッピングを繰り返す数が膨大になり、その結果、処理時間が増大するような心配は少ない。再構成可能なアーキテクチャの内、特定の数の再構成可能な回路により構成される回路ブロックを複数備えているアーキテクチャに対しては、アーキテクチャコードは、回路ブロックの単位でマッピングできるオブジェクト回路情報を含むことが望ましい。
数クロックあるいはサイクルの単位で実ハードウェア空間の動的な最適化が可能となるため、トレード・オフの自由度が非常に大きく、高性能高機能・低チップコスト・低消費電力という、相反する幾つかの要求を同時に高いレベルで実現することができる。したがって、リコンフィギャブル・テクノロジーの有効性は飛躍的に増大する。動的に再構成可能な回路領域における実装効率が向上し、専用LSIと比較して内部の稼働効率を格段に向上させ、チップ・コスト、性能及び消費電力の3つの点で有利な解決手段を提供することができる。また、動的に再構成可能なハードウェアがプログラマブルなハードウェアである特徴は最大限に活かされるので、従来のLSI開発手法では、物理デザインと機能検証・品質保証のために数ヶ月以上の時間を必要としたハードウェアの提供を、原理的にこれらの期間を必要としないアーキテクチャを提供できる。
実現可能なハードウェア空間の動的最適化技術を提供することにより、従来、有体物で提供されたハードウェア回路情報と、命令プログラムのようなハードウェア回路を制御するソフトウェア情報とを1つの統一されたアーキテクチャコードと呼ばれる体系で符号化した新たな情報として提供している。このため、ハードウェアの実行サイクルにおいて、アプリケーション要求(アーキテクチャ)の拘束条件下で、その瞬間瞬間に有効となるハードウェア・リソースと、要求される処理性能とをトレードオフし、動的に最適化を行うことで、特定のアプリケーション用に設計された専用LSI対しても、リコンフィギャブルなチップが、チップ・コスト、性能要求・消費電力の3つの面で優位性を示すことが可能となる。
ハードウェア空間の動的最適化を実現するためのアーキテクチャの基本要素技術は、ハードウェア回路の時分割実行可能とする回路分割実行と継続実行技術、複数のハードウェア回路間のチャネル接続技術、動的ハードウェア回路生成技術・縮小技術・消去交換技術、ハードウェア回路情報のコンパクト化技術と回路情報の高速移動技術、アプリケーション要求とリソース間トレード・オフ・ソフトウェア技術、ハードウェア回路やソフトウェア情報の高速エミュレーション技術を挙げることができる。
また、アーキテクチャコードは、オブジェクト回路情報(分割回路情報)、インタフェース回路情報、境界条件を含むものであるが、さらには、アーキテクチャコードは、ハードウェア回路情報とソフトウェア情報の2つに大きく分類される。ハードウェア回路情報は、使用可能なハードウェア資源を100%とした場合の各回路のモジュール相関情報(静的トポロジー情報と動的モジュール実行情報)・階層構造・優先順位・例外処理条件・動的トレード・オフ条件等を含むことができる。アーキテクチャコードは、境界条件を始めとする、ハードウェア回路の機能やタイミング制御を補助的にサポートする情報全体を含むことができ、それには、従来の命令プログラムやベクターテーブル、アプリケーションによっては画像等のデータ情報といったソフトウェア情報も含まれる。
たとえば、マイクロ・プロセッサーの場合、外部割り込み制御部や例外処理部のような特定条件でしか必要とされない回路と、デコーダあるいはデータ・パスのように比較的高い頻度で実行されるような回路とが存在する。アーキテクチャコードを用いれば、ハードウェア空間に階層的に構成されるハードウェア回路を、マイクロ・プロセッサーという機能面から分析し直して、動的実行を想定した動的最適化が可能なように再構成した情報の集合体として、マイクロ・プロセッサーのハードウェアおよびソフトウェア情報を提供することができる。これは、一般的なプログラム空間とは異なり、並列実行を想定した複数のアーキテクチャコードから構成される。そして、アーキテクチャコードにより実装されるオブジェクト回路の内、回路交換の余裕が無いものに関するアーキテクチャコードはLSI内部のメモリに格納される。逆に、回路実行や起動余裕のあるオブジェクト回路に関するアーキテクチャコードは、外部メモリに格納され、外部メモリから内部メモリにロードされてから実行される。
アーキテクチャLSIは、ロードユニットおよびマッピングユニットとしての機能を備え、アーキテクチャコードをハードウェア上で翻訳してハードウェアの初期化や分割実行する為の外部・内部の高速ローディング制御ユニット(RLC)、実行制御ユニットとしての機能を備え、高速論理回路交換動作の制御と階層的情報伝達(伝送)を行う高速論理通信マスタ(RTM)、論理回路領域となる、各種ハードウェア回路(テスト回路含む)を直接分割実行する高速論理回路交換エレメント(RXE)群から構成することができる。
図1に、データ処理装置の一例を示してある。このデータ処理装置1はアーキテクチャLSIであり、回路を動的に再構成可能な論理回路領域(RC領域、リコンフィグラブル領域)10と、幾つかのハードウェアモジュールのアーキテクチャコード20を記録したアーキテクチャライブラリ2と、アーキテクチャコード20を再構成可能なハードウェア10の上で翻訳してハードウェアの初期化や分割実行する高速ローディング制御ユニット(RLC)11と、高速論理回路交換動作の制御と階層的情報伝達(伝送)を行う高速論理通信マスタ(RTM)12とを備えている。RLC11は、ライブラリ2からアーキテクチャコード20を取得(フェッチあるいはダウンロード)するロードユニット(LU)13としての機能を備えている。さらに、RLC11は、アーキテクチャコード20のオブジェクト回路情報およびインタフェース回路情報により、RC領域10にオブジェクト回路19と、そのオブジェクト回路19に接するインタフェース回路18とをマッピングするマッピングユニット(MU)14としての機能を備えている。RTM12は、アーキテクチャコードの境界条件にしたがってインタフェース回路18を制御する動作制御ユニットとしての機能を備えている。また、RTM12は、RC領域10に現在および/または過去にマッピングされたオブジェクト回路19のインタフェース回路18の状態を、必要に応じて境界情報メモリ15に記憶し、オブジェクト回路19の間の情報伝達を行う。
以下の例においては、アーキテクチャコード20のオブジェクト回路情報は、ハードウェアモジュールを適当な範囲に分割して、RC領域10にマッピングできるように生成されている。したがって、オブジェクト回路情報によりRC領域10に構成されるオブジェクト回路19は、ある機能を実装するための単位として設計されたハードウェアモジュールを分割した分割回路となる。このため、以下においては、分割回路情報をオブジェクト回路情報として含むアーキテクチャコード20と、分割回路19とを例にしてさらに説明する。
データ処理装置1は、さらに、アプリケーションを実行するプログラム4が記憶されたRAM5と、プログラム4にしたがってデータ処理装置1のハードウェア資源を用いて処理を実行するRISCプロセッサ6と、割り込み信号を受信する割り込み制御ユニット7と、データ処理装置1の各ハードウェア資源にクロック信号を供給するクロック発生源8と、外部メモリに対してデータの入出力を制御するデータ入出力インタフェース9とを備えている。コードRAM5は、RC領域10からもアクセスできるようになっている。
図2に、データ処理装置1の異なる例を示してある。CPUあるいはDSPとしてのハードウェアは、1つまたは複数のハードウェアモジュール(ハードウェアマクロ)により提供できる。同様に、アーキテクチャコード20をロードするロードユニット(LU)13、マッピングユニット(MU)14および動作制御ユニット(RTM)12の各機能も1つまたは複数のハードウェアモジュールにより提供できる。さらに、割り込み検出ユニット(IU)7もハードウェアモジュールにより提供できる。したがって、これらのハードウェアモジュールを分割回路化して、アーキテクチャコードによりRC領域10に動的に構成することが可能である。このため、図2に示したデータ処理装置1は、RC領域10に、分割回路19とインタフェース回路18とによりプロセッサ6、LU13、MU14およびRTM12の機能が、部分的に、あるいは必要であれば全体として実現されるようになっている。
したがって、このデータ処理装置1においては、RISCプロセッサ6の機能がRC領域10を用いて実現されるので、RC領域10にマッピングされる回路によりRC領域10の制御も含めたデータ処理装置1の制御が行われる。この場合、データ処理装置1において構成が固定されたハードウェアで実現される機能は、データ処理装置であるアーキテクチャLSI1を起動する際、あるいはリセットする際に、そのための構成をRC領域10にマッピングする初期設定機能16となる。この初期設定機能16は、独立した回路であっても良いし、あるいは、RTM12のようにRC領域10を管理あるいは制御するために固定的に必要な機能に含まれて、その機能が固定されたハードウェアで提供されても良い。
このように、RC領域10にマッピングされる回路により、RC領域10の制御も含めたデータ処理装置1の制御を行うことができる。したがって、RAM4にデータ処理装置1の制御も含めたアーキテクチャコード28を用意することにより、アーキテクチャコード28によりデータ処理装置1の制御を行うことができる。このため、複数の命令セットを備えた従来のプログラムによる制御を、アーキテクチャコード28による制御に代えることが可能となる。このことは、記録媒体、ネットワーク、通信などによりアーキテクチャコード28を提供することにより、ハードウェア情報のみならず、従来のソフトウェア情報も含めてデータ処理装置1に実装できることを意味しており、データ処理装置1のフレキシビリティーは拡大する。
また、LU13、MU14およびRTM12の機能などのように、データ処理装置1において、アプリケーションを実行するために必要であるが、複数のアプリケーションに対して汎用性のある機能を提供するアーキテクチャコードは、データ処理装置1の基本的な機能をサポートするためのアーキテクチャコード29としてアプリケーション用のアーキテクチャコード20とは独立して供給することが可能である。このシステムをサポートするアーキテクチャコード29は、従来のプログラムベースで稼動するプロセッサにおけるOSあるいはBIOSに対応した取り扱いが可能となる。さらに、システムをサポートするハードウェアもアーキテクチャコード29として提供することにより、RC領域10の交換動作が不要な場合、あるいは交換動作のサイクルを低下できる場合は、RC領域10の交換動作のためのハードウェアが占める領域をアプリケーションの実行のためのハードウェアに解放することが可能となる。このため、RC領域10の利用効率を向上でき、少ないハードウェアリソースで最大限の処理能力を発揮するLSIを提供することが可能となる。
図3にアーキテクチャコード20の一例を示してある。アーキテクチャコード20は、ハードウェア回路情報21とソフトウェア情報22から構成される。ハードウェア回路情報21は、ある機能単位を回路として実装するために設計されるハードウェアモジュール(IPまたはライブラリ)を複数に分割した分割回路19をRC領域10の一部にマッピングする分割回路情報23と、分割回路19に接するインタフェース回路18をRC領域10にマッピングするインタフェース回路情報24とを備えている。ソフトウェア情報22は、アーキテクチャコード20を識別するための識別情報25と、インタフェース回路18において実現する境界条件26に加え、その他の情報27、たとえば、他の分割回路に対する優先順位、例外処理条件、動的トレード・オフ条件、分割回路の実行順序などの情報を含む。アーキテクチャコード20により、回路を構成するプリミティブのファンクション情報やトポロジーはすべて明確にされ、個々の分割回路19のファンクションおよび分割回路19の接続関係も明確になる。
本例のデータ処理装置1においては、たとえば、図1および図2に示したAという機能を実現するための回路構成(ハードウェアモジュール)は、A1〜Anのアーキテクチャコード20として与えられる。また、Bという機能を実現する回路構成は、B1〜Bmのアーキテクチャコード20として与えられ、Cという機能を実現する回路構成は、C1〜Cxのアーキテクチャコード20として与えられ、Dという機能を実現する回路構成は、D1〜Dyのアーキテクチャコードとして与えられる。なお、n、m、xおよびyは適当な整数である。
図4に示すように、データ処理装置1が、自動制御装置の一つの例であるロボット70の制御を行う場合、A機能は聴覚71の制御およびデータ処理を行い、B機能は視覚72の制御およびデータ処理を行い、C機能は言語能力73の制御およびデータ処理を行い、D機能は身体機能74の制御およびデータ処理を行う。そして、データ処理装置1のRC領域10には、これら複数の自動制御機構71〜74のハードウェアモジュール(AモジュールからDモジュール)の分割回路がそれぞれ動的にマッピングされる。RC領域10において、それぞれの機構71〜74のためのハードウェアモジュールが占める面積は動的に制御される。たとえば、ロボット70が会話するときは、そのために聴覚、視覚および言語能力が大きく要求されるので、機能A、BおよびCを制御するための分割回路19が占める面積が増大する。一方、ロボット70が身体を用いた作業を行うときは、視覚および身体機能の能力が大きく要求されるので、機能BおよびCを制御するための分割回路19が占める面積が増大する。
このロボット70は、さらに、外界、たとえば、無線あるいは有線を介してインターネットなどのコンピュータネットワークに接続するための機構75を備えている。したがって、それぞれの機能を実現するためのアーキテクチャコードを外界からダウンロードすることが可能となる。このため、ロボット70で実現できる作業の種類は基本的には限界がなくなる。そして、アーキテクチャコードの供給元において、アーキテクチャコードをアップデートすることにより、常に最新のハードウェアモジュールによりロボット70を制御することができるので、ハードウェアの陳腐化という問題も解決される。また、アーキテクチャコードを用いてロボット70を遠隔操作することも可能となる。外界との通信に必要な機能の内、回路でカバーできる機能は基本的にアーキテクチャコードを用いて本例のデータ処理装置1により行われる。したがって、通信用の機構75は、アンテナ、コネクタなどの、回路ではカバーできないハードウェアを備えたものとなる。
1つのデータ処理装置1により通信までカバーできない場合は、通信用のデータ処理装置1を搭載し、通信機能をサポートすると共に、通信機能の負荷が小さいときは、他の機能をサポートするように設計することが可能である。他の機能についても同様であり、身体機能用として、1または複数のデータ処理装置1を集中あるいは分散して搭載し、身体機能の負荷が小さいときは、それらのデータ処理装置1を言語処理などの他の機能ために用いることができる。
図5に、データ処理装置1を搭載した端末80の概略構成を示してある。この端末80も外界と通信するための機構85を備えている。したがって、アーキテクチャコードを外界からダウンロードすることにより、端末80により様々なサービスを提供できる。ディスプレイ、マイク、スピーカなどの入出力機構81を搭載していれば、画像、音声などの入出力を必要とする全てのサービスを提供することができる。さらに、光、温度などを感知するセンサー82を備えていれば、カメラや温度計などとしてのサービスに限らず、身体をモニタするサービスなど、センサー82を用いた他の様々なサービスを提供することができる。そして、アーキテクチャコードを外界からダウンロードすることにより、常に最新のハードウェアモジュールの機能を利用できる。
図6に、アーキテクチャコード20の生成方法を示してある。まず、ステップ31において、ハードウェアモジュールのオリジナルのネットリストを生成する。ネットリストを生成するまでの段階は、C言語などの高級言語、Verilogなどのハードウェア記述言語を用いた様々な方法が公知であり、いずれの方法を用いても良い。ステップ32において、オリジナルのネットリストを幾つかの単位に分割し、それぞれの分割した範囲内で、RC領域10にマッピングできるように配置および配線問題を解決して分割回路情報23を生成する。
RC領域10にマッピングする分割回路19は、RC領域10を構成するハードウェアの適切な範囲を単位とする回路ブロックを1または複数用いて配置されるように分割される。この分割方法を採用することにより、RC領域10に分割回路19を効率的に割付できる。また、分割回路19の間で頻繁にデータ交換が起きるような分割方法は、分割回路19を個別にRC領域10にマッピングすることを考えると好ましい分割方法とは言えない。もっとも、そのような分割回路19の組み合わせは、RC領域10の状況が許す限り同時にマッピングするように優先順位をつけることが可能である。したがって、データ処理装置1においては、ネットリストの様々な分割方法を許容し、対応することが可能である。しかしながら、ステップ32においては、オリジナルのネットリストを分割し、それをRC領域10のハードウェアに割り当てる作業をある程度繰り返して最適な分割回路情報23が得られるようにすることが望ましい。
さらに、ステップ33において、オリジナルのネットリストの分割回路19の境界を形成する情報からインタフェース回路情報24を生成する。したがって、隣接する分割回路19と境界が一致する部分においては、インタフェース回路情報24は同一になり、部分的に共通のインタフェース回路情報24を持ったアーキテクチャコードが生成されることになる。
次に、ステップ34において、オリジナルのネットリストを分割回路19の集合に変換し、それらの分割回路19の間で、ハードウェアモジュールとしての機能が実現されるように、タイミング収束問題などを含む配置および配線問題を解決し、インタフェース回路18における境界条件26を生成する。したがって、隣接する分割回路19と境界が一致または接続できる状態に対応しており、インタフェース回路情報24が同一または対応した構成となる部分においては、境界条件も同一または対応した条件になる。このため、部分的に共通の、あるいは対応した境界条件26を持ったアーキテクチャコードが生成されることになる。
さらに、分割回路を実ハードウェア空間(論理回路領域)10にマッピングしてハードウェアモジュールとしての機能を実現させるように上記の情報をコンパイルする段階で、他の分割回路に対する優先順位、例外処理条件、動的トレード・オフ条件、分割回路の実行順序などの情報が得られるので、それらを含め、ステップ35でアーキテクチャコード20を生成する。したがって、ハードウェアモジュールは複数の分割回路19により仮想ハードウェア空間上に構成され、アーキテクチャコード20により、その一部を実ハードウェア空間であるRC領域10に実現し、実行することが可能となる。RC領域10にマッピングされた分割回路19は、回路インスタンスであるということができる。
仮想ハードウェア空間と実ハードウェア空間とはインタフェース回路18を介して結び付けられており、タイミング収束などの実ハードウェア空間に配置配線する際の問題は、インタフェース回路18を境界条件26により制御するという解決策が示されている。したがって、仮想ハードウェア空間においても、実ハードウェア空間においても、所望の分割回路19を用いてソフトウェア的な処理、およびハードウェア的な処理を実現することが可能となる。
図7に、データ処理装置1において、アーキテクチャコード20を用いてRC領域10に分割回路19およびインタフェース回路18を生成して実行する過程を示してある。まず、ステップ41において、ロードユニット13は、RTM12により指定されたアーキテクチャコード20をライブラリ2から取得する。本例のデータ処理装置1において、リスクプロセッサ6がアプリケーションプログラム4を実行するケース、アーキテクチャコード28によりRC領域10に実現される構成によりデータ処理装置が制御されるケースがあるが、いずれにおいても、RTM12が動作環境情報に基づき、取得するアーキテクチャコードを決定し、ロードユニット13に指示を出す。動作環境情報は、プログラム4あるいはアーキテクチャコード28により得られる当該データ処理装置1に対する要求、割り込み制御回路7からの割り込み情報、RC領域10にマッピングされた分割回路19の実行状況、RC領域10の利用可能状況(空き領域の有無、置換可能な分割回路の有無など)が含まれる。
ロードユニット13は、ライブラリ2にコード20があればアドレスを出力してコード20をフェッチする。ロードユニット13が適当な通信機能を備えていれば、他のデータ処理装置や、外部のメモリ、さらには、ネットワークで接続されたサーバやその他のネットワーク上の資源からコード20を取得することができる。アーキテクチャコード28のように、アーキテクチャコードが強制的に、あるいは能動的にロードユニット13にロードされる構成にすることにより、アーキテクチャコードを介してデータ処理装置1における処理を能動的に制御することも可能である。
ステップ42において、マッピングユニット14は取得されたアーキテクチャコード20の分割回路情報23およびインタフェース回路情報24により、RC領域10に分割回路19と、その分割回路に接するインタフェース回路18とをマッピングする。RC領域10の状況は、分割回路19の実行を制御するRTM12が最も精度良く把握できるので、マッピングユニット14はRTM12の指示により、RC領域10の空いたハードウェア空間またはリプレイス可能なハードウェア空間に分割回路19およびインタフェース回路18をマッピングする。その際、隣り合う分割回路19との境界のインタフェース回路情報24および境界条件26が一致あるいは対応する場合は、仮想ハードウェア空間において隣接する分割回路19なので、実ハードウェア空間10においてそのまま接続することが可能である。したがって、双方のインタフェース回路を経ずに隣り合う分割回路同士が接続されるように分割回路19をマッピングする。なお、図1および図2などにおいて、表示を簡略にするためにインタフェース回路18は分割回路19の左右のみに形成されている。分割回路19が左右のみならず上下にも接続する配線を含む場合は、インタフェース回路18は分割回路19の上下左右に分割回路19をカプセルで包むようにアレンジされる。さらに、RC領域10が3次元方向の広がりを持ち、分割回路19も3次元方向の広がりを持つ回路であれば、インタフェース回路18は、立体的に分割回路19をエンカプセルするように構成される。
基本的には、RC領域10の空き領域に分割回路19はマッピングされることになる。RTM12が把握している動作環境情報によると、RC領域10にマッピング済みの他の分割回路に対して、新たな分割回路19を優先してマッピングする緊急性があれば、マッピング済みの他の分割回路19を消去したり、縮小して空き領域を形成することも可能である。消去した他の分割回路19は、緊急性が除かれた後に、RC領域10に再度マッピングして、最初から、あるいは途中から実行することができる。また、縮小した他の分割回路19では、分割回路19をマッピングする工程を繰り返すことにより、処理速度は低下するが、その分割回路に係る機能の処理を継続して実行することができる。このように、本例のデータ処理装置1においては、RC領域10に、動作環境情報などには依存するが、神出鬼没に分割回路19をマッピングすることができる。アプリケーションが直面する場面を予めシミュレーションなどにより把握し、RC領域10の所定の位置に所望の分割回路19がマッピングされるようにスケジューリングすることも可能であり、RC領域10の利用効率を向上することができる。
ステップ43において、マッピングされた分割回路19を動作させる。分割回路19を動作させるために、ステップ44において、境界条件26に基づきインタフェース回路18を制御し、分割回路19に所定のタイミングで所定のデータを供給する。このステップ44において、RTM12の機能により、RC領域10に現在および/または過去に、時間的および/または空間的に分かれてマッピングされた他の分割回路19のインタフェース回路18の状態が、境界条件26に基づき、動作対象の分割回路19のインタフェース回路18の制御に反映される。したがって、ステップ45において、実ハードウェア空間に実現された分割回路19は、周囲に他の分割回路が接続されている仮想ハードウェア空間と同じ状態となり、その分割回路19が属するハードウェアモジュールとしての機能が実ハードウェア空間上で実現される。また、分割回路19が動作した結果は、インタフェース回路18に出力されるので、RTM12はそのインタフェース回路18の状態をRC領域10にマッピングされている他の分割回路19のインタフェース回路18に空間的に伝達したり、次にマッピングされる他の分割回路19のインタフェース回路18に時間を経て伝達する。これにより仮想ハードウェア空間では信号がネットリストに従って伝播し、ハードウェアモジュールの機能が実現される。
インタフェース回路18に設定する境界情報は、メモリ15に記憶しておくことが可能である。他の分割回路19がマッピングされるタイミングまでの時間が長かったり、動作途中に分割回路19が消去されたときに、メモリ15に記憶された境界情報をインタフェース回路18に設定することにより、分割回路19を所望の条件で動作、あるいは再動作させることができる。
ステップ46において、マッピングされた分割回路19を動作させる要求が終了するまでステップ44および45を繰り返す。そして、処理が終了した分割回路19は、ステップ47においてRC領域10から消去される。あるいは、RC領域10に余裕があり、以降に分割回路19の機能が必要となることが予測される場合は、縮小してRC領域10に存在させることも可能である。さらに、RC領域10に余裕がある場合は、そのまま存在させておいても良い。
連続して入力されるデータに対して繰り返し動作が必要な分割回路19がマッピングされている場合は、その処理が終了するまで同一の分割回路19がRC領域10に存在する。並列度を高めることにより処理速度が上がる場合は、同一の分割回路19の回路インスタンスを複数マッピングして処理速度を向上することも可能である。さらに、同一のアーキテクチャコード20に対して複数の回路インスタンスをRC領域10に構成し、それらの出力を比較することにより信頼性の高い処理を実現することも可能である。そして、信頼性が要求される状態であることを判断したり、処理速度が要求される状態であることを判断して、そのような構成を自動的に採用するようにデータ処理装置1を制御することも可能である。一方、ステートマシンのように、ステートが進むことにより処理内容が順番に変わる場合は、次々に異なる分割回路19がマッピングされる。
分割回路19、すなわち、回路インスタンスは、マッピングされる際に、ハードウェア空間の動的最適化を行う為に、他の回路インスタンスの起動と消去をテーブルマスタであるRTM12に要求することができる。RTM12は、複数の回路生成・消去・コピー・移動や回路間のチャネル接続を行い、本来は大規模な回路を物理空間上に展開し回路構成しないと動作しない機能を、瞬間瞬間で必要な回路だけを回路インスタンスとしてハードウェア空間に動的に最適化しながら生成し、資源の少ないハードウェア空間を用いて実質的には膨大な複数の回路を並列に動作させることができる。
ハードウェア空間に生成される分割回路19は、常に、このデータ処理装置(アーキテクチャLSI)1の論理回路領域(回路プレーン)10の上に存在するパーマネント回路と、生成された回路がある一定時間しか存在しないインスタント回路、一定時間毎に生成されるサイクリック回路等の種類に分けることができる。インスタント回路やサイクリック回路は、実際に実行されると消去される前に自分の実行結果で他の回路に通知すべき情報をRTM12へ通知し記憶させておく。通常は、この回路実行情報は、次に生成される分割回路19へ効率良く伝達される。逆に、RTM12は、インスタント回路間の実行情報が効率良く伝達されるように回路制御を行う。
分割回路19の実行順序の確定は、図6に示したアーキテクチャコード20を生成する開発段階で、開発環境(FW)の回路コンパイラがこれを行う。分割回路が、外部信号やデータ入力条件により回路実行順序に変更がある場合は、RTM12が、この実行制御を行う。逆に、分割回路自身で実行順番が完全に制御可能な場合は、RTM12がシステム全体での優先順位に応じて回路の実行エリアの拡大・縮小を行う。
たとえば、図1のRC領域10には、A機能を実現するAモジュールの分割回路A1がインタフェース回路と共に生成され、B機能を実現するBモジュールの分割回路B1〜B3がインタフェース回路と共に生成されている。分割回路B1〜B3は、連続した回路インスタンスで連続したRC領域10に生成されたので、隣接した分割回路の境界領域は連続しており、連続した分割回路から外側に繋がる境界にインタフェース回路18が形成されている。なお、簡単に説明するためにインタフェース回路18が図面の左右のみに生成されているが、仮想ハードウェア空間において上下に分割回路が接続される場合は、インタフェース回路が生成される場合があることは上述したとおりである。
C機能を実現するCモジュールにおいては、分割回路C1およびC2がRC領域10にマッピングされているが空間的に分割されている。このため、各々の分割回路C1およびC2にインタフェース回路18が生成され、RTM12を介してこれらの分割回路C1およびC2は接続される。また、D機能を実現するDモジュールにおいては、分割回路D1およびD2が接続した状態でマッピングされている。RTM12は、これらの分割回路19のインタフェース回路18に適当なタイミングでデータをセットすることにより分割回路18をアクティブにし、その結果インタフェース回路18に出力されたデータを保存したり、空間あるいは時間的に分割された接続先の分割回路19のインタフェース回路18に伝達する。
さらに、RTM12は、分割回路19のアーキテクチャコード20の情報や、分割回路19に対する動作環境情報により、RC領域10の分割回路19に対してクロック発生源8から供給されるクロック信号の種類、すなわち周波数を変えることができる。このため、RC領域10の電力消費を必要最小限に抑えることができ、パフォーマンスは最大に維持することができる。RC領域10のうち、回路インスタンスがマッピングされていない領域にはクロック信号は原則として供給されない。
図8および図9は、時間が経過したRC領域10の状態である。A機能はインスタント回路であり、A1、A2およびA3という分割回路19が次々と生成されては消滅していき、その間のデータの転送はRTM12により行われる。B機能は、図示したシーケンスでは緊急性を要する機能としてRTM12に要求されており、RC領域10のかなりのハードウェア資源を費やして生成されている。図8に示したタイミングでは、D機能を消滅させ、その資源を用いて多数の分割回路19が生成されている。したがって、図9に示したタイミングでは、B機能の分割回路19が消滅した領域にD機能の分割回路19を復元して、再度、D機能の処理を途中または初めから再実行することになる。
図10に、RC領域10の構成を示してある。本例のRC領域10は、各々の論理演算を変更可能な複数のエレメントの集合である回路ブロック(rxe_plane)51が格子状(アレイ状あるいはマトリクス状)に配列され、それらの間が配線52により接続されている。アーキテクチャコード20により定義される分割回路19のサイズは、この回路ブロック51の倍数を単位とすることが望ましい。その場合、分割回路情報24をコンテキスト(コンフィグレーション情報)として、分割回路19が1つまたは複数の回路ブロック51を消費してマッピングされる。
図11に、1つの回路ブロック51の構成を示してある。本例では、回路ブロック51には、16個の論理エレメント53が4×4のアレイ構造をなすように配列されている。各々の論理エレメント53は図面の上下左右の4方向に隣接する論理エレメント53と4ビットのレイア1のバス54により接続されている。さらに、上下左右に隣接する論理エレメント53を越して、その外側に位置する論理エレメント53と接続するレイア2のバス55も用意されている。このため、論理エレメント53の間を、よりフレキシブルに接続することができる。さらに、論理エレメント53を3つ飛び越したレイア3のバスを配置することも可能である。
各々の論理エレメント53は、論理演算エレメントとしての機能と、論理エレメント間の接続切り換えを行う配線スイッチとしての機能を備えている。そして、演算する論理と、配線接続の状態を高速で変更または交換する必要があるので、本例のRC領域10には、RXE(Rapid eXchange Element)53と称される高速で交換動作が可能なエレメントが配置されている。
図12に、RXE53の構成を示してある。RXE53は、4系統の入力61と、4系統の出力62と、4系統の入力61から任意の入力データを選択する入力インタフェース63と、この入力インタフェース63により選択された入力データφiを論理演算してデータを出力する演算コア65と、4系統の入力61と演算コア65の出力データφoとを任意に選択して4系統の出力62へ接続可能な出力インタフェース64とを備えている。演算コア65は、論理演算を変更可能な構成になっており、論理を変更可能な演算エレメントとしての機能を果たす。また、入力インタフェース63は、4系統の入力61から任意の1ビットを選択するための16対1のセレクタ63sが複数配置された構成となっている。出力インタフェース64は、演算コア65からの出力φoと4系統の入力61のルーティングを兼ねた7対1のセレクタ64sが複数配置された構成となっている。
図13に、演算コア(rxe_core)65の構成を示してある。演算コア65は、論理演算を指示する16ビットのファンクションコードφfを入力とし、入力データφiにより出力データφoを選択するセレクタ66を備えている。演算コア65は、さらに、4ビットの入力データφiをデコードして16ビットのセレクタ66の選択信号を生成するデコーダ67と、4系統の入力61のいずれかのデータ、または、出力データφoをラッチするレジスタ68と、レジスタ68にラッチする信号を選択するためのセレクタ69aおよび69bとを備えている。
図14および図15に、演算コア65の動作を示している。演算コア65はモード信号φmによって動作が変わる。図14のモード0は、演算コア65は、4ビットの入力データφiにより1ビットの出力データφoを生成し、その出力データφoをレジスタ68でラッチして出力する。図14のモード1は、演算コア65は、4ビットの入力データφiにより1ビットの出力データφoを生成し、その出力データφoをレジスタ68でラッチせずに出力する。出力データφoは、16ビットのファンクションコードφfと、入力データφiをデコードした結果による。したがって、図16に示すように、これらのモード1および2においては、ファンクションコードφfを変えることにより、演算コア65を4入力ANDから4入力コンパレータまで、9種類以上の異なる論理演算素子として使用することができる。
さらに、演算コア65は、セレクタ66とファンクションコードφfの組み合わせに論理演算を行っている。このため、従来のFPGAのようにSRAMなどの記憶素子を用いたルックアップテーブル(LUT)に論理をセットする必要がない。したがって、SRAMに入出力を行うサイクルを省略することができ、ファンクションコードφfを演算コア65に出力したタイミングで瞬時に演算コア65で行う演算を交換することができる。このため、本例の演算コア65は高速交換演算素子と称されている。
図15に示したモード2からモード4においては、1つの演算コア65が、2ビットの入力信号φiに対して1ビットの出力信号φoを出力する2つの演算素子として機能する。すなわち、内蔵された16対1のセレクタ66が、2つの4対1のセレクタとして動作するようにセットされる。これらのモード2から4においては、演算コア65は、図16に示してあるように、ファンクションコードφfを変えることにより、インバータから2入力EXNORまで、7種類以上の異なる論理演算素子として使用することができる。
さらに、図15に示したモード5からモード7においては、演算コア65を、3ビットの入力信号φiに対して1ビットの出力信号φoを出力する演算素子として使用できる。追加ビットの入力を許せば、内蔵された16対1のセレクタ66を、2つの3対1のセレクタとして動作するようにセットできるので、演算コア65を2つの3ビット入力1ビット出力の演算素子としても利用できる。これらのモード5から7においては、演算コア65は、図16に示してあるように、ファンクションコードφfを変えることにより、3入力ANDからフルアダーまで、5種類以上の異なる論理演算素子として使用することができる。
このように、本例のRC領域10を構成するRXE53は、セレクタ方式で高速で論理を交換することが可能である。REX53は、さらに、内部に出力データをラッチするレジスタ68を備えており、出力データをスルーで出力することも、F/Fによりクロックに同期した状態でも出力することができる。したがって、デジタル回路で良く使用される組み合わせ回路(デコーダ)と、順序回路(ステートマシン)及び演算回路(データパス)を、アーキテクチャコード20の回路情報により効率よく実装し、実行することができる。
本例の論理を再構成可能なエレメント(RXE)53は、2次元アレイあるいはマトリクスを構成すること考えている。したがって、2次元に格子状に配置するのに適した4系統の入出力を備えている。しかしながら、エレメント間を接続するネットワークが1次元的であれば、2系統あるいは3系統の入出力で対応することができる。さらには、エレメント間を接続するネットワークが3次元的であれば、5系統以上の入出力を用意することが望ましい。さらに、本例の演算コア(rxe_core)は、高速で交換動作が可能なようにセレクタ方式を採用しているが、ルックアップテーブル(LUT)へロジックを入力するサイクルを消費できるようであればLUTを備えた演算コアを採用することも可能である。
また、本例においては、同一構造のエレメント53によりマトリクスを構成しているが、論理演算用のエレメントとネットワーク形成用のエレメントによりマトリクスを構成することも可能である。さらに、算術計算を主としたエレメント、アドレス発生を主としたエレメントなどのある程度の機能に特化した、または、汎用性はあるが、ある機能の処理能力の高い複数種類のエレメントを適当な密度で配置したマトリクにより、回路を再構成できるRC領域を構成することも可能である。
上記にて開示している制御方法の1つは、回路を動的に再構成可能な論理回路領域を有するデータ処理装置の制御方法である。この制御方法は、アプリケーションを実行するための回路の少なくとも一部であるオブジェクト回路を前記論理回路領域の一部にマッピングするためのオブジェクト回路情報と、前記オブジェクト回路に接するインタフェース回路を前記論理回路領域にマッピングするためのインタフェース回路情報と、前記インタフェース回路において実現する境界条件とを備えたアーキテクチャコードを取得する工程と、前記アーキテクチャコードの前記オブジェクト回路情報およびインタフェース回路情報により、前記論理回路領域に前記オブジェクト回路と、そのオブジェクト回路に接する前記インタフェース回路とをマッピングする工程と、前記アーキテクチャコードの前記境界条件に基づき前記インタフェース回路を制御する動作工程とを有する。
前記オブジェクト回路は、ある機能を実装するためのハードウェアモジュールを分割した分割回路であることが好ましい。前記マッピングする工程では、前記オブジェクト回路と前記インタフェース回路とを、前記論理回路領域の利用可能ないずれかの領域にマッピングすることが好ましい。前記マッピングする工程では、隣り合うオブジェクト回路との境界におけるインタフェース回路情報および境界条件が一致または対応する場合は、双方のインタフェース回路を経ずに前記隣り合うオブジェクト回路と接続するように前記オブジェクト回路をマッピングすることが好ましい。前記動作工程では、前記論理回路領域に、時間的および/または空間的に分かれてマッピングされた他のオブジェクト回路のインタフェース回路の状態が前記境界条件に基づき当該オブジェクト回路のインタフェース回路の制御に反映されることが好ましい。前記取得する工程では、当該データ処理装置に対する要求、マッピングされた前記オブジェクト回路の実行状況、前記論理回路領域の利用可能状況を含めた動作環境情報に基づき、取得する前記アーキテクチャコードを選択することが好ましい。前記取得する工程では、前記アーキテクチャコードを、通信ネットワークを介して取得することが好ましい。さらに、前記論理回路領域は、特定の数の再構成可能な複数のエレメントにより構成される回路ブロックを複数備えており、前記アーキテクチャコードは、前記回路ブロックの単位の前記オブジェクト回路情報を含むことが好ましい。
また、上記にて開示しているデータ処理装置の1つは、回路を動的に再構成可能な論理回路領域と、アプリケーションを実行するための回路の少なくとも一部であるオブジェクト回路を前記論理回路領域の一部にマッピングするためのオブジェクト回路情報と、前記オブジェクト回路に接するインタフェース回路を前記論理回路領域にマッピングするためのインタフェース回路情報と、前記インタフェース回路において実現する境界条件とを備えたアーキテクチャコードを取得するロードユニットと、前記アーキテクチャコードの前記オブジェクト回路情報およびインタフェース回路情報により、前記論理回路領域に前記オブジェクト回路と、そのオブジェクト回路に接する前記インタフェース回路とをマッピングするマッピングユニットと、前記アーキテクチャコードの前記境界条件にしたがって前記インタフェース回路を制御する動作制御ユニットとを有する。
オブジェクト回路は、ある機能を実装するためのハードウェアモジュールを分割した分割回路であることが好ましい。前記ロードユニット、前記マッピングユニットおよび前記動作制御ユニットは、それぞれ前記ハードウェアモジュールの1つであり、前記分割回路により前記論理回路領域に実装されることが好ましい。前記マッピングユニットは、前記オブジェクト回路と前記インタフェース回路とを、前記論理回路領域の利用可能ないずれかの領域にマッピングすることが好ましい。前記マッピングユニットは、隣り合うオブジェクト回路との境界における前記インタフェース回路情報および境界条件が一致または対応する場合は、双方のインタフェース回路を経ずに前記隣り合うオブジェクト回路と接続するように前記オブジェクト回路をマッピングすることが好ましい。動作制御ユニットは、前記論理回路領域に、時間的および/または空間的に分かれてマッピングされた他のオブジェクト回路のインタフェース回路の状態を前記境界条件に基づき当該オブジェクト回路の前記インタフェース回路の制御に反映することが好ましい。前記論理回路領域に、時間的および/または空間的に分かれてマッピングされたオブジェクト回路のインタフェース回路の状態を記憶する境界情報メモリをさらに有することが好ましい。前記ロードユニットは、当該データ処理装置に対する要求、マッピングされた前記オブジェクト回路の実行状況、前記論理回路領域の利用可能状況を含めた動作環境情報に基づき、複数のアーキテクチャコードを備えたアーキテクチャライブラリから前記アーキテクチャコードを取得することが好ましい。前記ロードユニットは、前記アーキテクチャコードを、通信ネットワークを介して取得することが好ましい。複数のハードウェアモジュールを構成する複数のアーキテクチャコードを備えたアーキテクチャライブラリを有することが好ましい。さらに、前記論理回路領域は、特定の数の再構成可能なエレメントにより構成される回路ブロックを複数備えており、前記アーキテクチャコードは、前記回路ブロックの単位の前記オブジェクト回路情報を含むことが好ましい。
また、前記エレメントは、複数n個の入力と、n個の出力と、前記n個の入力から任意の入力データを選択する入力インタフェースと、この入力インタフェースにより選択された入力データを論理演算して出力データを出力する演算コアであって、その論理演算を変更可能な演算コアと、前記n個の入力および前記出力データの少なくともいずれかを任意に選択して前記n個の出力の少なくともいずれかから出力する出力インタフェースとを備えていることも有効である。前記演算コアは、論理演算を指示する多ビットのファンクションコードが入力され、前記入力データにより前記出力データを選択するセレクタを備えていることが好ましい。前記演算コアは、前記n個の入力のいずれかのデータ、または、前記出力データをラッチするレジスタを備えていることが好ましい。
上記に開示されている自動制御機構の1つは、上記のデータ処理装置と、前記データ処理装置に実装される少なくとも1つの前記ハードウェアモジュールが、それぞれの制御またはデータ処理に用いられる複数の自動制御機構とを有し、前記論理回路領域に、複数のハードウェアモジュールの分割回路がそれぞれ動的にマッピングされるものである。前記アーキテクチャコードを外界との通信により取得するための通信機構をさらに有することが好ましい。
上記に開示されている端末の1つは、上記のデータ処理装置と、前記アーキテクチャコードを外界との通信により取得する通信機構とを有するものである。
さらに、上記には、記録媒体であって、回路を動的に再構成可能な論理回路領域を有するデータ処理装置を制御するためのアーキテクチャコードを記録している記録媒体が含まれる。アーキテクチャコードは、アプリケーションを実行するための回路の少なくとも一部であるオブジェクト回路を前記論理回路領域の一部にマッピングするためのオブジェクト回路情報と、前記オブジェクト回路に接するインタフェース回路を前記論理回路領域にマッピングするためのインタフェース回路情報と、前記インタフェース回路において実現する境界条件とを含む。前記オブジェクト回路は、ある機能を実装するためのハードウェアモジュールを分割した分割回路であることが望ましい。
上記に開示されているアーキテクチャコードの製造方法の1つは、前記アプリケーションを実行するための回路のネットリストを分割し、それぞれの分割した範囲内の配置・配線問題を解決して前記オブジェクト回路情報を生成する工程と、前記ネットリストの、前記オブジェクト回路情報により構成される前記オブジェクト回路の境界を形成する情報から前記インタフェース回路情報を生成する工程と、前記ネットリストを前記オブジェクト回路の集合に変換し、それらのオブジェクト回路の間の配置・配線問題を解決し、それぞれの前記オブジェクト回路のインタフェース回路における境界条件を生成する工程とを有する。前記生成する工程では、ある機能を実装するためのハードウェアモジュールのネットリストを分割して前記オブジェクト回路情報を生成することが好ましい。
システムのハードウェア・アーキテクチャは、一般的に設計開始(検討)の段階で要求仕様として確定することが多い。実際のアプリケーションが固まった段階における要求の変化や、設計初期段階の時点では予想しなかった要求仕様の変更に対応するために、最近のFPGAやPLDは、ハードウェア構成を変更可能なアーキテクチャを採用している。しかしながら、その柔軟性自体は、内部を構成する基本エレメントを冗長化し、チップ・コストの競争力の点、および専用設計されたLSIやASSPに比較して動作周波数の点で不利な要素となる。
最近は、ダイナミック・リコンフィギャブル・マシンが注目されるようになり、チップ・コストが高いという問題と動作周波数が低いという欠点をカバーできるようになりつつある。ただ、その競争力は、1〜2年掛けて開発された専用LSIと比較すると十分なレベルにはない。上記の開示により、これらの問題を解決することに加え、低消費電力化も実現することで、トータルとして現在のSoCのコストパフォーマンスを実現しながら、アーキテクチャへの動的最適化を行い、次に来るハイパーSoCを実現することができる。
一方、現在のLSI開発の問題は、チップ・コストの競争力という点と、性能・低消費電力化は最高であっても開発期間と開発コストは最悪という点であるが、これらの問題も解決することができる。
現在のLSI設計の常識では、ハードウェア記述言語(Verilog-HDLやVHDL)を中心にして、これを各社の半導体プロセスに合うライブラリの接続形式に合うネットリストに翻訳(論理合成)する。この場合、物理配線と各論理ゲート(回路)の接続形態により動作周波数も影響を受けるが、それにも増して大きな問題は、システムアーキテクチャの視点からの最適化が出来ない点である。つまり、現在のSoCやFPGA、ダイナミック・リコンフィギャブル技術は、ハードウェアを実行する際に、アーキテクチャ・レベルからの動的最適化を実現できない構造になっている。上記では、ハードウェアを実行する際のハードウェア空間を動的に最適化することが可能であり、この問題を解決する。
また、現在のLSI開発手法と実装方法では、システムの信頼性を上げたり品質を保証したりするためのコストが異常に大きいと言える。1つの要因は、テスト回路を実装しないと内部の機能チェックができず、テスト回路を実装するとそのテスト回路でチップ面積が占められ、チップコストが上昇することである。したがって、結果的に品質を上げる手段は存在するが、最終的にはコストとのトレード・オフとなり、信頼性や品質保証をするには限界がある。このため、コンシュマー品に最も必要とされるテスト自体が製品の競争力を奪う結果となってしまう。さらに、デバッグを容易化するための設計も全体の開発時間や開発リソースを減少するために必要なコンセプトであるが、やはり、その設計のための費用がチップ・コストを上昇させる要因となる。
本明細書に含まれる技術により、これらの課題の全てに対して解を与えることができる。本発明のハードウェア空間の動的最適化テクノロジーは、信頼性や品質保証する回路を必要なタイミングだけ存在させて、全体的なコスト影響を最小にできる。デバッグ容易化のための回路は、デバッグが完了すれば一般的には必要無い。逆に、デバッグが必要なタイミングで追加すべきデバッグ用回路を生成すれば良く、極めて容易に対応できる。
さらに、アーキテクチャコードは、将来、ネットワーク等を使って、動的にテスト回路やその他の機能を実現する回路を変更したり、生成したりすることを可能とし、大規模で複雑なシステムを構築するコストを大幅に低減できる。したがって、手元には小型のチップ化された本発明のデータ処理装置が内蔵されたターミナルを持ち、ネットワークを介して膨大なリソースを持つ仮想ハードウェア空間と接続することにより、多種多様な機能を手元の小型のターミナルにより実行することが可能となる。このシステムは、ネットワークを介して膨大な入出力データを通信しながらネットワーク上に存在するハードウェア資源を用いて処理を行う現在の方式とは全く逆の発想であり、ネットワーク上に存在するハードウェア資源を手元のターミナルで実行しようというものである。したがって、大量の入出力データの送受信を緩和してネットワーク負荷を低減でき、また、データの秘匿性を保証できるなど、様々なメリットを持ったシステムが構築されうる。
また、上記においては、半導体集積回路技術をベースにしたLSIに適用する例を説明しているが、いわゆる回路網を形成するデータ処理装置のすべてに適用することが可能である。すなわち、電気あるいは電子レベルの回路技術をベースにしたデータ処理装置に限らず、光、生体、分子あるいは原子構造、遺伝子構造などをベースにした回路網を形成する全てのデータ処理装置に対して上記に開示された技術を適用することができる。