(57)【特許請求の範囲】
【請求項１】
動的に再設定自在な計算環境のためのコンピュータシステムであって、
データ処理のためのプログラム命令を実行する複数の第１のコンピュータと、
前記複数の第1のコンピュータの各々に対応する複数の第２のコンピュータと、
前記第１のコンピュータおよび前記第２のコンピュータの通信において２点間並列相互接続を行う汎用相互接続マトリックスと、
前記汎用相互接続マトリックスと接続された複数の第３のコンピュータと、
前記複数の第３のコンピュータに各々対応する入出力手段と、
を備え、
前記複数の第１のコンピュータのそれぞれは、
データ処理のためのプログラム命令を実行するための動的に再設定自在な処理ユニットを有し、
前記動的に再設定自在な処理ユニットは、任意の命令セットからの命令を実行する第１のハードウェアアーキテクチャと前記任意の命令セットと異なる他の命令セットの命令を実行する他のハードウェアアーキテクチャの間でプログラム命令のシーケンス実行中に選択的に変更することのできる変更可能な内部ハードウェア構造を有し、前記第１のハードウェアアーキテクチャとして設定された場合に再設定命令に応じて前記内部ハードウェア構造を変更して前記他のハードウェアアーキテクチャに設定されることを特徴とするコンピュータシステム。
【請求項２】
前記第１のコンピュータと前記第２のコンピュータと前記第３のコンピュータのそれぞれにマスタタイミングを入力するためのマスタ時刻ベースユニットを更に備えたことを特徴とする請求項１に記載のコンピュータシステム。
【請求項３】
前記複数の第１のコンピュータのそれぞれは、
複数のハードウェアアーキテクチャのそれぞれに対応した複数の命令セットと前記再設定命令とを記憶するメモリと、
前記マスタタイミングの入力と前記メモリのタイミング入力をおこない、前記前記マスタタイミングの信号から局所タイミング信号を生成する局所時刻ユニットを更に備え、
前記動的に再設定自在な処理ユニットは、前記第２のコンピュータに対応する双方向制御ポートを備えたことを特徴とする請求項２に記載のコンピュータシステム。
【請求項４】
前記動的に再設定自在な処理ユニットと前記メモリは、それぞれ前記第１のコンピュータにおいて独立したクロック速度を有しており、前記局所タイミング信号は、前記マスタタイミングの信号と同期していることを特徴とする請求項３に記載のコンピュータシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般にコンピュータ・アーキテクチャに関連し、さらに詳しくは、動的に再設定自在なコンピュータシステムに関する。さらに詳しくは、本発明はスケーラブル、並列、動的に再設定自在なコンピューティングシステムに関する。
【０００２】
【従来の技術】
コンピュータ・アーキテクチャの発達はさらに大きな計算能力の要求により導かれる。様々な種類の計算上の問題の高速で正確な解決は典型的に様々な種類の計算資源を必要とする。任意の問題形式の範囲で、計算能力は検討中の問題形式について特定のアーキテクチャを備えた計算資源の使用により拡張することができる。例えば、デジタル信号処理（ＤＳＰ）ハードウェアを汎用コンピュータと組み合せて使用することにより信号処理能力のあるものを大幅に拡張できる。コンピュータが検討している問題形式に特定のアーキテクチャを備えていない場合計算能力はさらに拡張されるか、又は、その特定の問題形式について利用可能な計算資源に関連してさらに最適化される。現在の並列及び超並列コンピュータはＯ（ｎ2 ）の特定の種類の問題、又は、さらに複雑な問題に高い能力を発揮し、この場合の例を提供する。
【０００３】
大きな計算能力の必要性は、現在と考えられる将来の応用の両方で、可能な限り広い範囲においてのシステムコスト低減の必要性とシステム生産性拡充の必要性に対して均衡させる必要がある。一般に、限られた個数の問題形式に専用の計算資源をコンピュータ・システムへ組み込むことは、専用ハードウェアが典型的には汎用ハードウェアより高価であるためシステムのコストに対して悪影響をもたらす。特殊用途コンピュータ全体の設計と製造はエンジニアリングの時間とハードウェアのコストの両面で考えられないほど高価になる。専用ハードウェアを使用して計算能力を増加させるのは計算要求の変化のため殆ど性能上の利益が得られない。従来技術において、計算の必要が変化すると、新しい種類の専用ハードウェア又は新しい専用システムが設計製造され、望ましくないほど多くの再利用できないエンジニアリング・コストの繰返しとなった。特定の問題形式に専用の計算資源を使用すると、計算要求の変化を考慮した場合利用可能なシステムのシリコンが非効率的に使用されることになる。つまり、前述の理由から、専用ハードウェアを用いた計算能力の増加の試みは望ましくない。
【０００４】
従来技術において、再プログラム可能又は再設定自在なハードウェアを使用して計算能力を増加させ、かつ、問題形式への応用性を最大限にする試みがなされてきた。第１のこのような従来技術の試みは、ダウンローダブル・マイクロコード・コンピュータ・アーキテクチャである。ダウンローダブル・マイクロコード・コンピュータ・アーキテクチャでは、固定された再設定自在ではないハードウェア資源の挙動は特定バージョンのマイクロコードを使用することによって選択的に変更できる。このようなアーキテクチャの例として、ＩＢＭSystem/360がある。このような従来技術システムの基本的計算ハードウェアはそれ自体が再設定自在ではないので、このようなシステムは広範囲の問題形式を考慮した場合に最適な計算能力を提供できない。
【０００５】
計算能力の増大と問題形式への応用性の拡充に対する第２の従来技術の方法は、再設定自在ではないホストプロセッサ又はホストシステムと結合した再設定自在なハードウェアの使用である。この従来技術の方法は、再設定自在ではないホストに結合した１つ又はそれ以上の再設定自在なコプロセッサの使用が最も普遍的に関係する。この方法は、Ａttached Ｒeconfigurable Ｐrocessor（ＡＲＰ）アーキテクチャに分類され、ホストに接続されたプロセッサセット内部のハードウェアのある部分が再設定自在になっている。１組の再設定自在なプロセッサをホストシステムに結合した現在のＡＲＰシステムの例としては、スーパーコンピューティング・リサーチセンタ（ボウイ、メリーランド州）のSPLASHー1及びSPLASH-2システム、SPLASHー2の市販製品であるアナポリス・マイクロシステムズ（アナポリス、メリーランド州）のWILDFIRE Ｃustom Ｃnfigurable Ｃomputer、 バーチャル・コンピュータ・コーポレーション（レセダ、カリフォルニア州）のＥＶＣ−１がある。大半の計算重視の問題で、比較的小さいプログラムコード部分の実行に大量の時間が消費されている。一般に、ＡＲＰアーキテクチャはこのようなプログラムコード部分に再設定自在な計算アクセラレータを提供するために使用する。残念ながら、１つ又はそれ以上の再設定自在な計算アクセラレータに基づく計算モデルは、詳細について後述するように、顕著な欠点を含んでいる。
【０００６】
【発明が解決しようとする課題】
ＡＲＰアーキテクチャの第１の欠点は、ＡＲＰシステムが特定の時刻に再設定自在なハードウェア内に特定のアルゴリズムの最適化した実装を提供しようと試みることによっている。例えば、バーチャル・コンピュータ・コーポレーションのＥＶＣ−１の背後にある哲学は、特定アルゴリズムを再設定自在なハードウェア資源の特定の構成に変換してその特定のアルゴリズムに最適化した計算能力を提供しようとするものである。再設定自在なハードウェア資源は専ら特定アルゴリズムの最適能力の提供に使用される。例えば、命令の実行管理プログラム等さらに汎用の再設定自在なハードウェア資源の使用は回避される。従って、任意のアルゴリズムについて再設定自在なハードウェア資源は最適能力を確保するように結合された個別のゲートの観点から考慮される。
【０００７】
幾つかのＡＲＰシステムは、「プログラム」が従来のプログラム命令並びに各種再設定自在なハードウェア資源がどのように相互接続されているかを指定する専用の命令の両方を含むようなプログラミング・モデルに依存している。ＡＲＰシステムはゲートレベルのアルゴリズム特有の方法で再設定自在なハードウェア資源を考えているので、これらの専用命令は使用される再設定自在なハードウェア資源の各々の性質についての明示的な詳細と他の再設定自在なハードウェア資源に接続される方法を提供しなければならない。これは、プログラムの複雑さに悪影響を及ぼす。プログラムの複雑さを減少するため、プログラムが従来の高級プログラミング言語の命令と高級専用命令の両方を含むようなプログラミングモデルを使用する試みがなされてきた。現在のＡＲＰシステムは高級プログラミング言語の命令と前述の高級専用命令の両方をコンパイルできるコンパイラシステムを使用しようとしている。このようなコンパイラシステムの標的出力は従来の高級プログラミング言語の命令に対するアセンブリ言語コードと専用命令についてのハードウェア記述言語コード（ＨＤＬ）である。残念ながら、１組の再設定自在なハードウェア資源と最適な計算能力を検討している全ての特定のアルゴリズムに提供する相互接続方式との自動判定はＮＰハードの問題である。幾つかのＡＲＰシステムの長期的な目標はアルゴリズムを１組のゲートに対する最適な相互接続方式にコンパイルすることのできるコンパイラシステムの開発である。しかし、このようなコンパイラシステムの開発は極めて困難な作業で、特に複数のアルゴリズム形式を考慮している場合がそうである。
【０００８】
ＡＲＰアーキテクチャの第２の欠点は、ＡＲＰ装置が設定されたアルゴリズムに関する計算作業を複数の再設定自在な論理装置に分散することによる。例えば、１組のフィールド・プログラマブル論理装置（ＦＰＧＡ）を用いて実装され並列乗算アクセラレータを実装するように構成されたＡＲＰ装置では、並列乗算に関連する計算作業はＦＰＧＡの組全体に分散される。従って、ＡＲＰ装置が設定できるアルゴリズムの大きさは、再設定自在に存在する論理装置の個数で制限される。ＡＲＰ装置が取り扱うことのできるデータセットの最大の大きさも同様に制限される。ソースコードの検証はＡＲＰ装置の制限の明らかな指標を必ずしも提供し得ないが、これは、幾つかのアルゴリズムがデータの依存性を有するためである。一般に、データ依存アルゴリズムは回避される。
【０００９】
さらに、ＡＲＰアーキテクチャは複数の再設定可能な論理装置にわたる計算作業の分散を教示しているので、新規（又は、僅かにでも変更された）アルゴリズムの対応は再設定を全体に行なう必要がある、即ち、複数の再設定自在な論理装置を再設定しなければならない。これは、別の問題又はカスケード接続した下位の問題について再設定が発生し得る最大速度を制限する。
【００１０】
ＡＲＰアーキテクチャの第３の欠点は、１つ又はそれ以上のプログラムコード部分がホスト上で実行されることに由来する。つまり、ＡＲＰ装置はそれ自体が独立計算システムではなく、ＡＲＰ装置が問題全体を実行せず、従って、ホストとの相互作用が必要とされる。幾つかのプログラムコードは再設定自在ではないホストで実行されるので、利用可能なシリコン資源の組み合せはプログラム実行の時間枠で最大限に使用されない。特に、ホストによる命令実行中は、ＡＲＰ装置上のシリコン資源が待機しているか非効率的に使用されることになる。同様に、ＡＲＰ装置がデータを演算するとき、ホスト上のシリコン資源は、一般に、非効率的に使用される。複数プログラム全体を簡単に実行するため、システム内部のシリコン資源は容易に再利用できる資源にグループ化する必要がある。前述のように、ＡＲＰシステムは再設定自在なハードウェア資源を特定の時刻に特定のアルゴリズムの実装のために最適に相互接続された１組のゲートとして取り扱う。つまり、ＡＲＰシステムは特定の再設定自在なハードウェア資源を１つのアルゴリズムから別のアルゴリズムへ容易に再利用できる資源として取り扱うための手段を提供しないが、これは、再利用にはある程度の水準のアルゴリズムの独自性が必要なためである。
【００１１】
ＡＲＰ装置は、現在実行中のホストプログラムをデータとして取り扱えず、一般にそれ自身を状況に当てはめることができない。ＡＲＰ装置はそれ自身のホストプログラムの実行によって自分自身をシミュレートするようには簡単にできない。さらに、ＡＲＰ装置はそれ自身のＨＤＬ又はアプリケーション・プログラムをそれ自身で、これの構成された再設定自在なハードウェア資源を直接使ってコンパイルするように作ることはできない。ＡＲＰ装置はホストプロセッサからの独立を教示する自己内蔵計算モデルとの関連においてアーキテクチャが制限される。
【００１２】
ＡＲＰ装置は計算アクセラレータとして機能するので、一般に、独立したＩ／Ｏ（入出力）処理はできない。典型的には、ＡＲＰ装置はＩ／Ｏ処理にホストの存在を必要とする。ＡＲＰ装置の性能はＩ／Ｏで制限され得る。しかし、ＡＲＰ装置は特定のＩ／Ｏ問題を加速するように設定できることが当業者には理解されよう。しかし、ＡＲＰ装置全体は単一の特定の問題に設定されるので、ＡＲＰ装置はＩ／Ｏ処理とデータ処理とを妥協せずに均衡させることができない。さらに、ＡＲＰ装置は割込処理のための手段を提供しない。ＡＲＰは計算の加速を最大にするように向けられており割込みは計算速度をマイナスに加速するのでＡＲＰの教示はこのような機構を提供しない。
【００１３】
ＡＲＰアーキテクチャの第４の欠点は、ＡＲＰ装置を使用して開発するのが難しい固有データの並行処理を有するソフトウェアアプリケーションが存在するために存在している。ＨＤＬでコンパイルするアプリケーションは非常に大きなネットリストのネット名シンボルの解釈が必要な場合に、このような例の１つを提供する。
【００１４】
ＡＲＰアーキテクチャに関連した第５の欠点は、これが基本的にはＳＩＭＤ計算機アーキテクチャ・モデルであることである。ＡＲＰアーキテクチャは１つ又はそれ以上の再設定自在ではない従来技術システムよりアーキテクチャの面で効率が悪い。ＡＲＰシステムはプログラムの実行処理の一部だけ、主として算術計算の算術論理を、各々の特定の設定インスタンスで利用できる再設定自在なハードウェアが提供できるかぎりの計算能力で反映する。逆に、１９７１年のフェアチャイルドによるＳＹＭＢＯＬマシンのシステム設計では、プログラム実行の全ての態様でコンピュータ全体が独自のハードウェア内容を使用した。その結果、ＳＹＭＢＯＬはＡＲＰシステムで教示されるホスト部分を含めたコンピュータのシステム・アプリケーションについてのあらゆる要素を包含した。
【００１５】
ＡＲＰアーキテクチャは他の欠点も示す。例えば、多数の再設定自在な論理装置への独立したタイミングを提供するための効果的な手段を欠除している。同様に、カスケード接続したＡＲＰ装置は独立して刻時するユニットを提供するための効率的なクロック分散手段を欠除している。別の例として、加速を行なおうとするソースコードのステートメントと実行時間を正確に相関させることが困難である。ネットシステムのクロック速度の正確な推定には、ＡＲＰ装置はＨＤＬコンパイル後のコンピュータ支援設計（ＣＡＤ）ツールでモデル化すべきだが、このような基本的パラメータに到達するには時間のかかる処理である。
【００１６】
必要とされるものは前述の従来技術の制限を克服する再設定自在な計算環境のための手段である。
【００１７】
【課題を解決するための手段】
Ａ．請求項１に関して
請求項１記載の発明は、動的に再設定自在な計算環境のためのコンピュータシステムであって、データ処理のためのプログラム命令を実行する複数の第１のコンピュータと、前記複数の第1のコンピュータの各々に対応する複数の第２のコンピュータと、前記第１のコンピュータおよび前記第２のコンピュータの通信において２点間並列相互接続を行う汎用相互接続マトリックスと、前記汎用相互接続マトリックスと接続された複数の第３のコンピュータと、前記複数の第３のコンピュータに各々対応する入出力手段と、を備え、前記複数の第１のコンピュータのそれぞれは、データ処理のためのプログラム命令を実行するための動的に再設定自在な処理ユニットを有し、前記動的に再設定自在な処理ユニットは、任意の命令セットからの命令を実行する第１のハードウェアアーキテクチャと前記任意の命令セットと異なる他の命令セットの命令を実行する他のハードウェアアーキテクチャの間でプログラム命令のシーケンス実行中に選択的に変更することのできる変更可能な内部ハードウェア構造を有し、前記第１のハードウェアアーキテクチャとして設定された場合に再設定命令に応じて前記内部ハードウェア構造を変更して前記他のハードウェアアーキテクチャに設定されるように構成している。
【００１８】
請求項１において、再設定命令は前記第１の命令セットの命令の１つであってもよい（Ａ−１）。また、請求項１において、前記再設定命令は別の命令の一部であって前記再設定命令の実行は前記動的に再設定自在な処理ユニットのレジスタ内に記憶されたデータに依存するようにしてもよい（Ａ−２）。さらに、請求項１において、入力と、出力と、前記第１の命令セットからの命令を実行する前記第１のハードウェアアーキテクチャと前記第２の命令セットの命令を実行する前記第２のハードウェアアーキテクチャの間でプログラム命令のシーケンス実行中に選択的に変更することのできる前記変更可能な内部ハードウェア構造とを有する第２の再設定自在な処理ユニットをさらに含み、前記第２の再設定自在な処理ユニットの入力は前記動的に再設定自在な処理ユニットの出力に接続され、前記第２の再設定自在な処理ユニットの出力は前記動的に再設定自在な処理ユニットの入力に接続されるようにしてもよい（Ａ−３）。このＡ−３において、動的に再設定自在な処理ユニットは前記第２の再設定自在な処理ユニットの再設定とは独立して動的に再設定できるようにしてもよい（Ａ−４）。
【００１９】
また、請求項１において、第１のハードウェア構成は逐次命令処理装置であって前記第２のハードウェアアーキテクチャは並列命令処理装置であってもよい（Ａ−５）。請求項１において、動的に再設定自在な処理ユニットの前記変更可能な内部ハードウェア構造はデータ入力と、第１の制御出力と、第２の制御出力とを有して前記動的に再設定自在な処理ユニット内部の命令実行動作をシーケンス化するための命令フェッチユニットを含み、前記データ入力がメモリのデータポートに接続されるようにしてもよい（Ａ−６）。
【００２０】
このＡ−６において、命令フェッチユニットは、さらに、出力を有し、命令セット構成を実装するように設定されたときに前記動的に再設定自在な処理ユニットが割込信号に応答する様式を指定する割込応答信号を含む１組のアーキテクチャ記述信号を記憶するアーキテクチャ記述メモリと、入力と出力とを有し、命令実行サイクルと、命令フェッチ状態、命令復号状態、命令実行状態、書き戻し状態の間の遷移とを制御するための命令状態シーケンサと、入力と出力とを有し、命令実行サイクル内で割込サービス状態への移行が許容される状態を指定する遷移制御信号を生成し、前記入力は前記アーキテクチャ記述メモリの出力に接続され、前記出力は前記命令状態シーケンサの入力に接続された割込状態マシンと、を含んでいてもよい（Ａ−７）。
【００２１】
また、請求項１において、動的に再設定自在な処理ユニットの前記変更可能な内部ハードウェア構造はデータポートと制御入力とを有しデータに対する演算を実行し、前記データポートは前記メモリの前記データポートへ接続され前記制御入力は制御信号を受信するように接続されたデータ演算ユニットを含んでいてもよい（Ａ−８）。このＡ−８において、データ演算ユニットは、データポートと、制御入力と、フィードバック入力と、出力とを有し、前記データポートと前記フィードバック入力と前記出力の間でデータを選択的に転送し、前記データポートが前記メモリの前記データポートへ接続され、前記制御入力は制御信号を受信するように接続されたスイッチと、入力と、出力と、制御入力とを有し、前記入力は前記スイッチの前記出力に接続され、前記制御入力は制御信号を受信するように接続されたデータを保存するための記憶／整列ユニットと、入力と、出力と、制御入力とを有し、前記入力は前記記憶／整列ユニットの前記出力に接続され、前記出力は前記スイッチの前記フィードバック入力へ接続され、前記制御入力は制御信号を受信するように接続され、データ計算を実行するためのデータ演算回路と、を含んでいてもよい（Ａ−９）。
【００２２】
このＡ−９において、記憶／整列ユニットは再設定自在であって、ランダムアクセスメモリとパイプライン化レジスタとからなるグループからの１つとして対応する命令セットアーキテクチャの制御信号に応じて選択的に設定することができるようにしてもよい（Ａ−１０）。また、Ａ−９において、データ演算ユニットは再設定自在であって、算術論理ユニットとパイプライン化機能ユニットからなるグループからの１つとして対応する命令セットアーキテクチャの制御信号に応じた信号に従い選択的に設定することができるようにしてもよい（Ａ−１１）。
【００２３】
さらに、請求項１において、再設定自在な処理ユニットの前記変更可能な内部ハードウェア構造は、制御入力と、アドレス入力と、出力とを有して前記アドレス入力はメモリのデータポートに接続され、前記出力は前記メモリのアドレス入力へ接続され、前記制御入力は制御信号を受信するように接続されて、アドレスに対する演算を実行するためのアドレス演算ユニットを含むようにしてもよい（Ａ−１２）。このＡ−１２において、アドレス演算ユニットは、データポートと、制御入力と、フィードバック入力と、出力とを有し、前記データポートは前記メモリの前記データポートに接続され、前記制御入力で受信した制御信号に応じて前記データポートと前記フィードバック入力と前記出力の間でアドレスを選択的に転送するためのスイッチと、入力と、出力と、制御入力とを有し、前記入力は前記スイッチの出力に接続され、前記制御入力は制御信号を受信するように接続されて、データを保存するための記憶／カウントユニットと、入力と、出力と、制御入力とを有し、前記入力は前記記憶／カウントユニットの出力に接続され、前記出力は前記スイッチのフィードバック入力に接続され、前記制御入力は制御信号を受信するように接続されてアドレス計算を実行するためのアドレス演算回路と、を含んでいてもよい（Ａ−１３）。
【００２４】
このＡ−１３において、記憶／カウントユニットは再設定自在であって、ランダムアクセスメモリとレジスタとからなるグループからの１つとして前記記憶／カウントユニットの前記制御入力に受信した信号に応じて選択的に設定することができるようにしてもよい（Ａ−１４）。また、Ａ−１３において、アドレス演算回路はレジスタと算術演算ユニットからなるグループの１つとして前記アドレス演算回路の制御入力に受信した信号に応じて再設定自在としてもよい（Ａ−１５）。
【００６５】
Ｉ．これらの発明の概要
本発明は、スケーラブル、並列、動的に再設定自在な計算環境のためのシステム及び方法である。本システムは、少なくとも１つのＳマシンと、各々のＳマシンに対応するＴマシンと、汎用相互接続マトリックス（ＧＰＩＭ）と、１組のＩ／ＯＴマシンと、１つ又はそれ以上のＩ／Ｏ装置と、マスタ時刻ベースユニットとを含む。好適な実施の形態において、本システムは複数のＳマシンを含む。各々のＳマシンは入力と出力が各々対応するＴマシンの出力と入力に各々結合されている。各々のＴマシンは各々のＩ／ＯＴマシンのようにＧＰＩＭへ接続された配送入力と配送出力とを含む。Ｉ／ＯＴマシンはさらにＩ／Ｏ装置へ接続された入力と出力とを有する。最後に、各々のＳマシン、Ｔマシン、Ｉ／ＯＴマシンはマスタ時刻ベースユニットのタイミング出力へ接続したマスタタイミング入力を有する。
【００６６】
マスタ時刻ベースユニットは各々のＳマシン、Ｔマシン、Ｉ／ＯＴマシンへシステム全体の周波数基準を提供する。各々のＳマシンはプログラム命令の実行中に選択的に再設定することのできる処理ユニットを有するコンピュータである。各々のＴマシンはデータ転送装置である。ＧＰＩＭはＴマシン間の通信のためのスケーラブル２点間並列相互接続手段を提供する。組み合せて１組のＴマシンとＧＰＩＭはＳマシン間の通信のためのスケーラブル２点間並列相互接続手段を提供する。
【００６７】
Ｓマシンは第１の局部時刻ユニットと、メモリと、動的に再設定自在処理ユニット（ＤＲＰＵ）を含むのが望ましい。第１の局部時刻ユニットはマスタ時刻ベースユニットへ接続したタイミング入力と、ＤＲＰＵのタイミング入力及び第１のタイミング信号線経由でメモリのタイミング入力とへ接続したタイミング出力とを有する。ＤＲＰＵは制御信号出力と、アドレス出力と、双方向データポートとが各々メモリ制御線、アドレス線、メモリＩ／Ｏ線で各々制御信号入力、アドレス入力、双方向データポートへ接続してある。ＤＲＰＵは対応するＴマシンの双方向制御ポートへ外部制御線で接続した双方向制御ポートも有する。
【００６８】
第１の局部時刻ユニットはマスタ時刻ベースユニットからマスタタイミング信号を受信し、第１のタイミング信号線経由でＤＲＰＵとメモリへ供給する第１の局部タイミング信号を生成する。メモリはプログラム命令と、プログラムデータと、１つ又はそれ以上の設定データセットを記憶するランダムアクセスメモリ（ＲＡＭ）が望ましい。好適な実施の形態では、任意のＳマシンのメモリはＧＰＩＭとこれに対応するＴマシン経由でシステム内の他の全てのＳマシンからアクセス可能である。
【００６９】
おそらく大きなデータセットに特定の演算の組み合せを実行する専用のプログラム命令のグループを本明細書ではプログラムの「内側ループ」部分と称する。汎用演算の実行及び／又は１つの内側ループ部分から別の部分へ制御を渡すプログラム命令のグループを、本明細書ではプログラムの「外側ループ」部分と称する。あらゆる任意のプログラム内部で、各々の内側ループ部分は少数の命令形式から構成するのが望ましいが、外側ループ部分は各種の汎用命令形式を含むのが望ましい。
【００７０】
メモリ内に記憶してある各々の設定データセットは対応する命令セット・アーキテクチャ（ＩＳＡ）の実装に最適化したＤＲＰＵハードウェア構成を指定する。ＩＳＡはプリミティブな命令セットで、コンピュータをプログラムするために使用する。本発明において、ＩＳＡは内側ループＩＳＡ又は外側ループＩＳＡとして含まれる命令の個数と種類に従って分類できる。内側ループＩＳＡは比較的少ない命令からなり、命令は特定の種類の演算を実行するのに有用である。外側ループＩＳＡは幾つかの命令を含み、命令は各種の汎用演算を実行するのに有用である。
【００７１】
メモリ内に記憶されたプログラム命令は１つ又はそれ以上の再設定指示を選択的に含み、各々の再設定指示は１つの設定データセットを参照する。ＤＲＰＵによるプログラム実行中、１つ又はそれ以上の再設定指示を選択できる。任意の再設定指示の選択により再設定指示により参照される設定データセットによるＤＲＰＵハードウェアの再設定が行なわれる。つまり、再設定指示の選択時に、ＤＲＰＵハードウェアが再設定されて特定ＩＳＡの最適な実装を提供する。本発明において、ＤＲＰＵの再設定も再設定割込みに応じて初期化される。ここで、再設定割込みは前述の方法でＩＳＡに対応する設定データセットを参照する。
【００７２】
ＤＲＰＵは、命令フェッチユニット（ＩＦＵ）と、データ演算ユニット（ＤＯＵ）と、アドレス演算ユニット（ＡＯＵ）とを含み、その各々が動的に再設定自在である。好適な実施の形態において、ＤＲＰＵはＸｉｌｉｎｘＸＣ４０１３フィールド・プログラマブル・ゲートアレイ（ＦＰＧＡ）などの再設定自在な論理装置を用いて実装される。再プログラム可能な論理装置は、複数の再プログラム可能な
１）論理ブロック、又は設定可能論理ブロック（ＣＬＢ）、
２）Ｉ／Ｏブロック（ＩＯＢ）、
３）相互接続構造、
４）データ記憶資源、
５）スリーステートバッファ資源、
６）ワイヤードロジック能力
を提供するのが望ましい。
【００７３】
ＩＦＵはＤＲＰＵのメモリ制御出力を形成するメモリ制御出力と、メモリＩ／Ｏ線に接続したデータ入力と、ＤＲＰＵの双方向制御ポートを形成する双方向制御ポートとを有する。ＩＦＵはさらに第１と第２と第３の制御出力を有する。ＤＯＵとＡＯＵは各々がメモリＩ／Ｏ線に接続した双方向データポートを有しており、ＡＯＵはアドレス線に接続したアドレス出力を有する。ＤＯＵは第１の制御線経由でＩＦＵの第１の制御出力に接続した第１の制御入力を有する。ＤＯＵとＡＯＵの両方とも第３の制御線経由でＩＦＵの第３の制御出力に第２の制御入力が接続してある。最後に、ＩＦＵの各々と、ＤＯＵと、ＡＯＵは第１のタイミング信号線に接続したタイミング入力を有する。
【００７４】
ＩＦＵは命令のフェッチとデコード演算、メモリアクセス演算、ＤＲＰＵ再設定演算を指示し、制御信号をＤＯＵ及びＡＯＵへ発行して命令の実行を容易にする。ＩＦＵはアーキテクチャ記述メモリ、命令状態シーケンサ（ＩＳＳ）、メモリアクセス論理回路、再設定論理回路、割込論理回路、フェッチ制御ユニット、命令バッファ、デコード制御ユニット、命令デコーダ、オプコード記憶レジスタセット、レジスタファイル（ＲＦ）アドレスレジスタセット、定数レジスタセット、プロセス制御レジスタセットを含むのが望ましい。ＩＳＳはＩＦＵの第１と第２の制御出力を各々構成する第１と第２の制御出力と、ＩＦＵのタイミング入力を構成するタイミング入力と、フェッチ制御ユニットの制御入力とデコード制御入力の制御入力へ接続したフェッチ／デコード制御出力、各々のメモリアクセス論理回路の第１の双方向制御ポートと再設定論理回路と割込論理回路へ接続した双方向制御ポートと、オプコード記憶レジスタセットの出力へ接続したオプコード入力と、プロセス制御レジスタセットの双方向データポートへ接続した双方向データポートとを含むのが望ましい。メモリアクセス論理回路の各々と、再設定論理回路と、割込論理回路は外部制御線へ接続した第２の双方向制御ポート、及びアーキテクチャ記述メモリのデータ出力へ接続したデータ入力を有する。メモリアクセス論理回路もＩＦＵのメモリ制御出力を構成する制御出力を有し、割込論理回路はさらにプロセス制御レジスタセットの双方向データポートへ接続した出力を有する。
【００７５】
アーキテクチャ記述メモリはＤＲＰＵ設定を任意の時刻に特徴付けるアーキテクチャ仕様信号を記憶するためのメモリを含むのが望ましい。アーキテクチャ仕様信号は初期設定データセットへの基準と、許容される設定データセットのリストへの基準と、アトミックメモリアドレス増分と，現在のＤＲＰＵハードウェア構成が割込みにどのように応答するかを規定する１組の割込応答信号を含むのが望ましい。ＩＳＳはフェッチ制御ユニット、デコード制御ユニット、ＤＯＵ、ＡＯＵ、メモリアクセス論理回路へ信号を発行することにより現在検討しているＩＳＡ内部の命令実行を容易にする状態マシンを含むのが望ましい。ＩＳＳはＤＯＵ制御信号を第１の制御線に発行し、ＡＯＵ制御信号を第２の制御線に発行し、ＲＦアドレスと定数を第３の制御線に発行する。割込論理回路は再設定信号に応答して再設定演算を実行する状態マシンを含むのが望ましい。好適な実施の形態において、再設定信号は再設定割込みに応答して生成されるか、又は再設定指示がプログラム実行中に選択された場合に生成される。
【００７６】
【発明の実施の形態】
本発明の実施の一形態を図面に基づいて説明する。
図１を参照すると、本発明により構成したスケーラブル、並列、動的に再設定可能な計算環境のためのシステム１０の好適な実施の形態のブロック図が図示してある。システム１０は、望ましくは少なくとも１つのＳマシン１２、各々のＳマシン１２に対応するＴマシン１４、汎用相互接続マトリックス（ＧＰＩＭ）１６，少なくとも１つのＩ／ＯＴマシン１８、１つ又はそれ以上のＩ／Ｏ装置２０、及びマスタ時刻ベースユニット２２を含む。好適な実施の形態において、システム１０は複数のＳマシン１２と複数のＴマシン１４、さらに複数のＩ／ＯＴマシン１８と複数のＩ／Ｏ装置２０を含む。Ｓマシン１２、Ｔマシン１４、Ｉ／ＯＴマシン１８の各々はマスタ時刻ベースユニット２２のタイミング出力に接続したマスタタイミング入力を有する。各々のＳマシン１２は対応するＴマシン１４に接続した入力と出力とを有する。対応するＳマシン１２に接続した入力と出力に加えて、各々のＴマシン１４はＧＰＩＭ１６へ接続した配送入力と配送出力とを有する。同様に、各々のＩ／ＯＴマシン１８はＩ／Ｏ装置２０へ接続した入力と出力と、ＧＰＩＭ１６へ接続した配送入力及び配送出力を有する。
【００７７】
詳細は後述するが、各々のＳマシン１２は動的に再設定自在なコンピュータである。ＧＰＩＭ１６はＴマシン１４の間の通信を容易にする２点間並列相互接続手段を形成する。Ｔマシン１４とＧＰＩＭ１６の組はＳマシン１２の間のデータ転送のための２点間並列相互接続手段を形成する。同様に、ＧＰＩＭ１６、Ｔマシン１４の組とＩ／ＯＴマシン１８の組はＳマシン１２と各々のＩ／Ｏ装置２０の間のＩ／Ｏ転送のための２点間並列相互接続手段を形成する。マスタ時刻ベースユニット２２は各々のＳマシン１２及びＴマシン１４にマスタタイミング信号を提供する発振回路を含む。
【００７８】
図示した実施の形態では、各々のＳマシン１２はＸｉｌｉｎｘＸＣ４０１３（ジリンクス社、カリフォルニア州サンノゼ）フィールド・プログラマブル・ゲートアレイ（ＦＰＧＡ）を６４ＭＢのランダムアクセスメモリ（ＲＡＭ）へ接続したものを用いて実現している。各々のＴマシン１４は各々のＩ／ＯＴマシン１８にＸｉｌｉｎｘＸＣ４０１３ＦＰＧＡの再設定可能なハードウェア資源のほぼ５０％を使用して実現している。ＧＰＩＭ１６はトロイダル相互接続メッシュとして実現した。マスタ時刻ベースユニット２２はシステム全体に周波数基準を提供するクロック分配回路に接続したクロック発振回路である。望ましくは、ＧＰＩＭ１６、Ｓマシン１２、Ｉ／ＯＴマシン１８はスケーラブル・コヒーレント・インタフェース（ＳＣＩ）を定義しているＡＮＳＩ／ＩＥＥＥ規格１５９６−１９９２に準拠して情報を転送する。
【００７９】
好適な実施の形態では、システム１０は並列に機能する複数のＳマシン１２を含む。個別のＳマシン１２の各々の構造と機能は図２から図１７(ｂ)を参照して後述する。ここで、図２を参照すると、Ｓマシン１２の好適な実施の形態のブロック図が図示してある。Ｓマシン１２は第１の局部時刻ユニット３０、プログラム命令を実行するための動的に再設定自在な処理ユニット（ＤＲＰＵ）３２、メモリ３４を含む。第１の局部時刻ユニット３０はＳマシンのマスタタイミング入力を構成するタイミング入力を有する。第１の局部時刻ユニット３０はＤＲＰＵ３２のタイミング入力とメモリ３４のタイミング入力へ第１のタイミング信号線４０を介して第１の局部タイミング信号又はクロックを提供するタイミング出力も有する。ＤＲＰＵ３２はメモリ制御線４２経由でメモリ３４の制御信号入力へ接続した制御信号出力、アドレス線４４経由でメモリ３４のアドレス入力へ接続したアドレス出力、メモリＩ／Ｏ線４６経由でメモリ３４の双方向データポートへ接続した双方向データポートを有する。ＤＲＰＵ３２はさらに外部制御線４８経由で対応するＴマシン１４の双方向制御ポートへ接続した双方向制御ポートも有する。図２に図示してあるように、メモリ制御線４２はＸビット幅で、アドレス線４４はＭビット幅、メモリＩ／Ｏ線４６は（Ｎ×ｋ）ビット幅、外部制御線４８はＹビット幅である。
【００８０】
好適な実施の形態では、第１の局部時刻ユニット３０がマスタ時刻ベースユニット２２からマスタタイミング信号を受信する。第１の局部時刻ユニット３０はマスタタイミング信号から第１の局部タイミング信号を生成し、第１の局部タイミング信号をＤＲＰＵ３２とメモリ３４へ供給する。好適な実施の形態において、第１の局部タイミング信号は１つのＳマシン１２から別のＳマシン１２へ変化できる。つまり、任意のＳマシン１２内部のＤＲＰＵ３２とメモリ３４は他のＳマシン１２内部のＤＲＰＵ３２とメモリ３４に対して独立したクロック速度で機能する。望ましくは、第１の局部タイミング信号はマスタタイミング信号と相同期する。好適な実施の形態において、第１の局部時刻ユニット３０は再設定可能なハードウェア資源を用いて実現したフェーズロック検出回路を含むフェーズロック周波数変換回路を使用して実現されている。別の実施の形態において第１の局部時刻ユニット３０はクロック分配ツリーの一部として実現し得ることは当業者には理解されよう。
【００８１】
メモリ３４はＲＡＭとして実装するのが望ましく、プログラム命令、プログラムデータ、ＤＲＰＵ３２の設定データセットを記憶する。任意のＳマシン１２のメモリ３４はＧＰＩＭ１６経由でシステム１０の他のＳマシン１２がアクセスできる。さらに、各々のＳマシン１２は一様のメモリアドレス空間を有するように特徴付けられるのが望ましい。好適な実施の形態において、メモリ３４に記憶されたプログラム命令はＤＲＰＵ３２に向けられた再設定指示を選択的に含む。
【００８２】
ここで、図３を参照すると、再設定指示を含むプログラムリスト５０の例が図示してある。図３に図示してあるように、プログラムリストの例５０は１組の外側ループ部分５２、第１の内側ループ部分５４、第２の内側ループ部分５５、第３の内側ループ部分５６、第４の内側ループ部分５７、第５の内側ループ部分５８を含む。述語「内側ループ」が関連する演算の特定の組み合せを実行するプログラムの反復部分を表わしており、述語「外側ループ」が汎用演算の実行、及び／又は１つの内側ループ部分から別の部分へ制御を渡すことを主体としたプログラムの部分を表わすことは当業者には容易に理解されよう。
【００８３】
一般に、プログラムの内側ループ部分５４，５５，５６，５７，５８は、潜在的に大きなデータセットに対する特定の演算を実行する。画像処理アプリケーションでは、例えば、第１の内側ループ部分５４で画像データに対する色フォーマット変換演算を実行し、第２から第５の内側ループ部分５５，５６，５７，５８で線形フィルタリング、コンボリューション、パターン検索、圧縮演算を行なうことがある。当業者には内側ループの連続したシーケンス５５，５６，５７，５８がソフトウェア・パイプラインと考えられることも理解されよう。各々の外側ループ部分５２はデータＩ／Ｏ及び／又はデータと制御を第１の内側ループ部分５４から第２の内側ループ部分５５へ転送する。任意の内側ループ部分５４，５５，５６，５７，５８は１つ又はそれ以上の再設定指示を含み得ることが当業者にはさらに理解されよう。一般に、任意のプログラムで、プログラムリスト５０の外側ループ部分５２は各種の汎用命令形式を含み、プログラムリスト５０の内側ループ部分５４，５６は比較的僅かな命令形式から構成されて特定の演算の組み合せを実行するために使用される。
【００８４】
プログラムリスト５０の例では、第１の再設定指示は第１の内側ループ部分５４の始めに現れ、第２の再設定指示は第１の内側ループ部分５４の最後に現れる。同様に、第３の再設定指示は第２の内側ループ部分５５の始めに現れ、第４の再設定指示は第３の内側ループ部分５６の始めに現れ、第５の再設定指示は第５の内側ループ部分５７の始めに現れ、第６と第７の再設定指示は各々第５の内側ループ部分５８の各々始めと終りに現れる。各々の再設定指示は特定の命令セットアーキテクチャ（ＩＳＡ）の実装に専用で最適化された内部ＤＲＰＵハードウェア構成を指定する設定データセットを参照するのが望ましい。
【００８５】
ＩＳＡはコンピュータをプログラムするために使用できる命令のプリミティブ又はコアセットである。ＩＳＡは命令フォーマット、オプコード、データフォーマット、アドレシング・モード、実行制御フラグ、プログラムがアクセス可能なレジスタを定義する。当業者にはこれがＩＳＡの従来の定義に相当することが理解されよう。本発明において、各々のＳマシンのＤＲＰＵ３２は高速でランタイム設定されて各々の所望のＩＳＡの独自の設定データセットを使用して複数ＩＳＡを実現できる。つまり、各々のＩＳＡは対応する設定データセットで指定される独自の内部ＤＲＰＵハードウェア構成で実現される。
【００８６】
つまり、本発明では、第１から第５の内側ループ部分５４，５５，５６，５７，５８の各々が独自のＩＳＡ、即ちＩＳＡ１，２，３，４，ｋに各々対応している。各々の連続したＩＳＡが独自でなくともよいことは当業者に理解されよう。つまり、ＩＳＡｋはＩＳＡ１，２，３，４，又は他のＩＳＡであってもよい。外側ループ部分のセット５２も独自ＩＳＡに対応する、即ちＩＳＡ０に対応する。好適な実施の形態において、プログラム実行中の連続した再設定指示の選択はデータ依存である。任意の再設定指示の選択時に、プログラム命令はこの後対応する設定データセットで指定された独自のＤＲＰＵハードウェア設定を介して対応するＩＳＡに従って実行される。
【００８７】
本発明において、任意のＩＳＡは内側ループＩＳＡ又は外側ループＩＳＡとして、含まれる命令の個数及び種類により分類できる。多くの命令を含み汎用演算を実行するのに有用なＩＳＡは外側ループＩＳＡであり、比較的少い命令から構成されて特定の種類の演算を実行するように指示されているＩＳＡは、内側ループＩＳＡである。外側ループＩＳＡは汎用演算の実行に向いているので、プログラム命令の連続実行が望ましい場合には外側ループＩＳＡが最適である。外側ループＩＳＡの実行能力は実行する命令当たりのクロック周期で特徴付けるのが望ましい。逆に、内側ループＩＳＡは特定の種類の演算を実行するのに向いているので、並列プログラム命令実行が望ましい場合内側ループＩＳＡが好適である。内側ループＩＳＡの実行能力はクロック周期当たりに実行される命令数又はクロック周期当たりに作成される計算結果によって特徴付けるのが望ましい。
【００８８】
前述の連続プログラム命令実行及び並列プログラム命令実行の説明は、単一のＤＲＰＵ３２内でのプログラム命令実行に含まれることが当業者には理解されよう。システム１０内の複数Ｓマシン１２の存在により任意の時刻に複数のプログラム命令シーケンスの並列実行が容易に行なえるようになり、各々のプログラム命令シーケンスは任意のＤＲＰＵ３２内で実行される。各々のＤＲＰＵ３２は特定の内側ループＩＳＡ又は外側ループＩＳＡを特定の時刻に実現するために各々並列又は直列ハードウェアを有するように設定される。任意のＤＲＰＵ３２の内部ハードウェア構成は実行するプログラム命令のシーケンス内に埋め込まれた１つ又はそれ以上の再設定指示の選択に併せて時間とともに変化する。
【００８９】
好適な実施の形態において、各々のＩＳＡとこれに対応する内部ＤＲＰＵハードウェア構成は、特定クラスの計算問題で利用可能な１組の再設定可能なハードウェア資源に対して最適な計算能力を提供するように設計される。前述のように、また詳細については後述するように、外側ループＩＳＡに対応する内部ＤＲＰＵハードウェア構成は連続プログラム命令実行に最適化するのが望ましく、また、内側ループＩＳＡに対応する内側ＤＲＰＵハードウェア構成は並列プログラム命令実行に対して最適化するのが望ましい。
【００９０】
各々の再設定指示の例外として、図３のプログラムリスト５０の例は望ましくは従来の高級言語ステートメント、例えばＣ言語で書かれたステートメントを含むのが望ましい。１つ又はそれ以上の再設定指示をプログラム命令のシーケンス内に含めるには再設定指示を考慮するように変更したコンパイラが必要であることは当業者には理解されよう。図４をここで参照すると、プログラム命令のシーケンスのコンパイル中に実行される従来技術のコンパイル演算の流れ図が図示してある。本明細書において、従来技術のコンパイル演算は一般にフリーソフトウェア・ファウンデーション（マサチューセッツ州ケンブリッジ）が製作したＧＮＵ−Ｃコンパイラ（ＧＣＣ）で実行される演算に対応する。
【００９１】
当業者には以下で説明する従来技術のコンパイル演算は他のコンパイラに容易に一般化できることが理解できよう。従来技術のコンパイル演算は、ステップ５００でコンパイラのフロントエンドがプログラム命令シーケンスから次の高級ステートメントを選択することで始まる。次に、コンパイラ・フロントエンドが選択した高級ステートメントに対応する中間コードをステップ５０２で生成する。ＧＣＣの場合にはレジスタ転送レベル（ＲＴＬ）ステートメントである。ステップ５０２に続いて、コンパイラ・フロントエンドは別の供給ステートメントを検討すべきかステップ５０４で決定する。必要な場合、好適な方法はステップ５００へ戻る。
【００９２】
ステップ５０４でコンパイラ・フロントエンドが他の高級ステートメントの検討が必要ないと決定した場合、コンパイラ・バックエンドは次に従来のレジスタ割当演算をステップ５０６で行なう。ステップ５０６の後で、コンパイラ・バックエンドは現在のＲＴＬステートメント・グループ内の検討のために次のＲＴＬステートメントをステップ５０８で選択する。コンパイラ・バックエンドは現在のＲＴＬステートメント・グループを１組のアセンブリ言語ステートメントに変換する方法を指定したルールが存在するかをステップ５１０で判定する。このようなルールが存在しない場合、好適な方法はステップ５０８へ戻り、現在のＲＴＬステートメント・グループに含めるために別のＲＴＬステートメントを選択する。現在のＲＴＬステートメント・グループに対応するルールが存在する場合、コンパイラ・バックエンドは１組のアセンブリ言語ステートメントをルールに従ってステップ５１２で生成する。ステップ５１２の後、コンパイラ・バックエンドは次のＲＴＬステートメントが次のＲＴＬステートメントグループのコンテクストの中で検討を必要とするか判定する。その場合，好適な方法はステップ５０８に戻る。それ以外の場合には好適な方法は終了する。
【００９３】
本発明は、動的に再設定可能な計算環境のためのコンパイラを含むのが望ましい。ここで、図５及び図６を参照すると、動的に再設定自在な計算環境のためのコンパイラで実行される好適なコンパイル演算の流れ図が図示してある。好適なコンパイル演算はステップ６００で始まり、動的に再設定自在な計算環境のためのコンパイラのフロントエンドがプログラム命令のシーケンス内部の次の高級ステートメントを選択する。次に、動的に再設定自在な計算環境のためのコンパイラのフロントエンドはステップ６０２で選択した高級ステートメントが再設定指示か判定する。その場合、動的に再設定自在な計算環境のためのコンパイラのフロントエンドはステップ６０４でＲＴＬ再設定ステートメントを生成し、この後、好適な方法はステップ６００に戻る。好適な実施の形態において、ＲＴＬ再設定ステートメントはＩＳＡ識別を含む非標準的ＲＴＬステートメントである。ステップ６０２で、選択した高級プログラムステートメントが再設定指示ではない場合、動的に再設定自在な計算環境のためのコンパイラのフロントエンドはステップ６０６で通常の方法でＲＴＬステートメントのセットを生成する。ステップ６０６の後、動的に再設定自在な計算環境のためのコンパイラのフロントエンドは別の高級ステートメントが検討を必要とするかをステップ６０８で判定する。その場合、好適な方法はステップ６００に戻る。それ以外の場合、好適な方法はステップ６１０へ進みバックエンド演算を起動する。
【００９４】
ステップ６１０で、動的に再設定自在な計算環境のためのコンパイラのバックエンドはレジスタ割当演算を実行する。本発明の好適な実施の形態において、各々のＩＳＡはＩＳＡ同士でレジスタアーキテクチャが一定となるように定義されるので、レジスタ割当演算は通常の方法で実行する。当業者には、一般に、ＩＳＡ間で一定のレジスタアーキテクチャが絶対条件ではないことが理解されよう。次に、ステップ６１２で、動的に再設定自在な計算環境のためのコンパイラのバックエンドは現在検討しているＲＴＬステートメントのグループ内で次のＲＴＬステートメントを選択する。ステップ６１４で、動的に再設定自在な計算環境のためのコンパイラのバックエンドは選択したＲＴＬステートメントがＲＴＬ再設定ステートメントかを判定する。選択したＲＴＬステートメントがＲＴＬ再設定ステートメントではない場合、動的に再設定自在な計算環境のためのコンパイラのバックエンドはステップ６１８で現在検討しているＲＴＬステートメントグループに対するルールが存在するか判定する。存在しない場合、好適な方法はステップ６１２に戻り、現在検討しているＲＴＬステートメントグループに含める次のＲＴＬステートメントを選択する。現在検討しているＲＴＬステートメントグループのルールがステップ６１８で存在している場合、動的に再設定自在な計算環境のためのコンパイラのバックエンドは現在検討しているＲＴＬステートメントグループに対応するアセンブリ言語ステートメントをステップ６２０でこのルールに従って生成する。ステップ６２０の後、動的に再設定自在な計算環境のためのコンパイラのバックエンドはステップ６２２で次のＲＴＬステートメントグループのコンテクストの中で別のＲＴＬステートメントが検討を必要とするか判定する。その場合、好適な方法はステップ６１２に戻り、それ以外の場合、好適な方法は終了する。
【００９５】
ステップ６１４で選択したＲＴＬステートメントがＲＴＬ再設定ステートメントの場合、動的に再設定自在な計算環境のためのコンパイラのバックエンドはステップ６１６でＲＴＬ再設定ステートメント内部でＩＳＡの識別に対応するルールセットを選択する。本発明では、各々のＩＳＡに独自のルールセットが存在するのが望ましい。従って、各々のルールセットはＲＴＬステートメントのグループを特定のＩＳＡに合わせてアセンブリ言語ステートメントへ変換する１つ又はそれ以上のルールを提供する。ステップ６１６の後、好適な方法はステップ６１８に進む。任意のＩＳＡに対応するルールセットは、詳細を後述するように、ソフトウェア割込みを発生して再設定ハンドラを実行する１組のアセンブリ言語命令にＲＴＬ再設定ステートメントを変換するためのルールを含むのが望ましい。
【００９６】
前述の方法では、動的に再設定自在な計算環境のためのコンパイラはアセンブリ言語ステートメントを複数ＩＳＡに合わせてコンパイル演算中に選択的かつ自動的に生成する。言い換えれば、コンパイル処理中に、動的に再設定自在な計算環境のためのコンパイラは可変ＩＳＡに従って１組のプログラム命令をコンパイルする。動的に再設定自在な計算環境のためのコンパイラは図５及び図６を参照して前述した好適なコンパイル演算を実行するように変更した従来のコンパイラが望ましい。必要とされる変更が複雑でなければ、このような変更は従来技術のコンパイル技術と従来技術の再設定可能な計算技術の両方の観点で明らかではないことが当業者には理解できよう。
【００９７】
図７を参照すると、動的に再設定自在な処理ユニット３２の好適な実施の形態のブロック図が図示してある。ＤＲＰＵ３２は命令フェッチユニット（ＩＦＵ）６０、データ演算ユニット（ＤＯＵ）６２、アドレス演算ユニット（ＡＯＵ）６４を含む。ＩＦＵ６０、ＤＯＵ６２、ＡＯＵ６４の各々は第１のタイミング信号線４０へ接続したタイミング入力を有する。ＩＦＵ６０はメモリ制御線４２に接続したメモリ制御出力と、メモリＩ／Ｏ線４６に接続したデータ入力と、外部制御線４８に接続した双方向制御ポートを有する。ＩＦＵ６０はさらに第１の制御線７０経由でＤＯＵ６２の第１の制御入力へ接続した第１の制御出力と、第２の制御線７２経由でＡＯＵ６４の第１の制御入力へ接続した第２の制御出力とを有する。ＩＦＵ６０はＤＯＵ６２の第２の制御入力と第３の制御線７４経由でＡＯＵ６４の第２の制御入力へ接続した第３の制御出力も有する。ＤＯＵ６２とＡＯＵ６４の各々はメモリＩ／Ｏ線４６に接続した双方向データポートを有する。最後にＡＯＵ６４はＤＲＰＵのアドレス出力を形成するアドレス出力を有する。
【００９８】
ＤＲＰＵ３２は再設定可能又は再プログラム可能な論理装置、例えば、ＸｉｌｉｎｘＸＣ４０１３（ジリンクス社、カリフォルニア州サンノゼ）又はＡＴ＆Ｔ社ＯＲＣＡ（ＡＴ＆Ｔマイクロエレクトロニクス社、ペンシルバニア州アーレンタウン）などのＦＰＧＡを用いて実装するのが望ましい。望ましくは、再プログラム可能な論理装置は複数の
１）選択的に再プログラム可能な論理ブロック、又は、設定可能論理ブロック（ＣＬＢ）、
２）選択的に再プログラム可能なＩ／Ｏブロック（ＩＯＢ）、
３）選択的に再プログラム可能な相互接続構造、
４）データ記憶資源、
５）スリーステートバッファ資源、
６）ワイヤードロジック能力
を提供する。各々のＣＬＢは、論理関数を生成し、データを記憶し、信号を送出するための選択的に再設定自在な回路を含むのが望ましい。当業者には再設定自在なデータ記憶回路が使用する再プログラム可能な論理装置の正確な設計に従ってＣＬＢのセットとは別の１つ又はそれ以上のデータ記憶ブロック（ＤＳＢ）に含まれ得ることが理解されよう。本明細書において、ＦＰＧＡ内部の再設定自在なデータ記憶回路はＣＬＢ内部にあるととられる、即ち、ＤＳＢの存在が仮定されない。ＤＳＢが存在する場合にＣＬＢに基づく再設定自在なデータ記憶回路を使用する本明細書で説明した１つ又はそれ以上の素子がＤＳＢに基づく回路を使用し得ることは当業者には容易に理解されよう。
【００９９】
各々のＩＯＢは、ＣＬＢとＦＰＧＡ出力ピンの間でデータを転送するための選択的に再設定自在な回路を含むのが望ましい。設定データセットは、ＣＬＢ内部で実行される関数並びに、
１）ＣＬＢとＩＯＢ間、
２）ＣＬＢ間、
３）ＩＯＢ内部、
４）ＩＯＢ間、
５）ＣＬＢとＩＯＢの間
での相互接続を指定することによりＤＲＰＵハードウェア設定又は構成を定義する。当業者には、設定データセット経由でメモリ制御線４２、アドレス線４４、メモリＩ／Ｏ線４６、外部制御線４８の各々でビット数が再設定自在であることが理解されよう。望ましくは、設定データセットはシステム１０内の１つ又はそれ以上のＳマシンメモリ３４に記憶する。当業者には、ＤＲＰＵ３２がＦＰＧＡに基づく実装に制限されないことは理解されよう。例えば、ＤＲＰＵ３２はＲＡＭ上の状態マシンとして、１つ又はそれ以上の参照テーブルを含み得るように、実装されることがある。これ以外にも、ＤＲＰＵ３２は複合プログラマブル論理装置（ＣＰＬＤ）を用いて実装できる。しかし、システム１０のＳマシン１２の幾つかは再構成可能ではないＤＲＰＵ３２を有し得ることが当業者には理解されよう。
【０１００】
好適な実施の形態において、ＩＦＵ６０，ＤＯＵ６２，ＡＯＵ６４は各々動的に再設定自在である。つまり、これらの内部ハードウェア構成はプログラム実行中に選択的に変更できる。ＩＦＵ６０は命令フェッチ及びデコード演算、メモリアクセス演算、ＤＲＰＵ再設定演算を指示し、ＤＯＵ６２とＡＯＵ６４へ制御信号を発行して命令実行を促す。ＤＯＵ６２はデータ計算に関する演算を実行し、ＡＯＵ６４はアドレス計算に関係する演算を実行する。ＩＦＵ６０，ＤＯＵ６２，ＡＯＵ６４の各々の内部構造と動作について以下で詳細に説明する。
【０１０１】
図８を参照すると、命令フェッチユニット６０の好適な実施の形態のブロック図が図示してある。ＩＦＵ６０は命令状態シーケンサ（ＩＳＳ）１００、アーキテクチャ記述メモリ１０１、メモリアクセス論理回路１０２、再設定論理回路１０４、割込み論理回路１０６、フェッチ制御ユニット１０８、命令バッファ１１０、デコード制御ユニット１１２、命令デコーダ１１４、オプコード記憶レジスタセット１１６、レジスタファイル（ＲＦ）アドレスレジスタセット１１８、定数レジスタセット１２０、処理制御レジスタセット１２２を含む。ＩＳＳ１００はＩＦＵの第１と第２の制御出力を各々形成する第１と第２の制御出力、ＩＦＵのタイミング入力を形成するタイミング入力とを有する。
【０１０２】
ＩＳＳ１００はフェッチ制御ユニット１０８の制御入力とデコード制御ユニット１１２の制御入力にフェッチ／デコード制御線１３０経由で接続されたフェッチ／デコード制御出力も有する。ＩＳＳ１００はさらに各々のメモリアクセス論理１０２、再設定論理回路１０４、割込論理回路１０６へ双方向制御線１３２経由で接続された双方向制御ポートも有する。ＩＳＳ１００はオプコード線１４２経由でオプコード記憶レジスタセット１１６の出力へ接続されたオプコード入力も有している。最後に、ＩＳＳ１００は処理データ線１４４経由で処理制御レジスタセット１２２の双方向データポートへ接続された双方向データポートを有する。
【０１０３】
メモリアクセス論理１０２、再設定論理回路１０４、割込論理回路１０６の各々は外部制御線４８に接続した第２の双方向制御ポートを有する。メモリアクセス論理１０２、再設定論理回路１０４、割込論理回路１０６はさらに各々が実装制御線１３１経由でアーキテクチャ記述メモリ１０１のデータ出力へ結合したデータ入力を有する。メモリアクセス論理１０２はさらにＩＦＵのメモリ制御出力を構成する制御出力を有し、割込論理回路１０６はさらに処理データ線１４４へ接続した出力を有する。命令バッファ１１０はＩＦＵのデータ入力を構成するデータ入力、フェッチ制御線１３４経由でフェッチ制御ユニット１０８の制御出力へ接続した制御入力、命令線１３６経由で命令デコーダ１１４の入力へ接続された出力を有する。命令デコーダ１１４はデコード制御線１３８経由でデコード制御ユニット１１２の制御出力へ接続した制御入力と、デコード命令線１４０経由で
１）オプコード記憶レジスタセット１１６の入力、
２）ＲＦアドレスレジスタセット１１８の入力、
３）定数レジスタセット１２０の入力へ接続した出力
を有する。ＲＦアドレスレジスタセット１１８と定数レジスタセット１２０は各々がＩＦＵの第３の制御出力７４を形成する出力を有する。
【０１０４】
アーキテクチャ記述メモリ１０１は現在のＤＲＰＵ設定を特徴付けるアーキテクチャ仕様信号を記憶する。望ましくは、アーキテクチャ仕様信号は
１）初期設定データセットの基準、
２）許容される設定データセットのリストへの基準、
３）現在検討しているＩＳＡに対応する設定データセットの基準、即ち現在のＤＲＰＵ設定を定義する設定データセットへの基準、
４）図１８を参照して詳細に後述するようにＩＦＵ６０が存在するＳマシン１２に関連するＴマシン１４内部の１つ又はそれ以上の相互接続Ｉ／Ｏユニット３０４を識別する相互接続アドレスリスト、
５）割込みにＩＦＵ６０がどのように応答するかを定義する割込精度情報と割込待ち時間を指定する割込応答信号のセット、
６）アトミックメモリアドレス増分を定義するメモリアクセス定数
を含む。好適な実施の形態において、各々の設定データセットは読出専用メモリ（ＲＯＭ）として設定された１組のＣＬＢとしてアーキテクチャ記述メモリ１０１を実装する。
【０１０５】
アーキテクチャ記述メモリ１０１の内容を定義するアーキテクチャ仕様信号は各々の設定データセットに含まれるのが望ましい。つまり、各々の設定データセットは特定のＩＳＡに対応するため、アーキテクチャ記述メモリ１０１の内容は現在検討しているＩＳＡに応じて変化する。任意のＩＳＡについて、アーキテクチャ記述メモリ１０１の内容へのプログラムアクセスはＩＳＡ内にメモリ読取命令を含めることで促されるのが望ましい。これによってプログラムがプログラム実行中に現在のＤＲＰＵ設定についての情報を取出すことができるようになる。本発明において、再設定論理回路１０４は設定データセットに従ってＤＲＰＵ３２の再設定を促す再設定演算シーケンスを制御する状態マシンである。望ましくは、再設定論理回路１０４は再設定信号受信時に再設定演算を開始する。詳細には後述するように、再設定信号は外部制御線４８に受信した再設定割込み信号に応じて割込論理回路１０６で、又はプログラム内に埋め込まれた再設定指示に応じてＩＳＳ１００で生成される。再設定演算はアーキテクチャ記述メモリ１０１で参照する初期設定データセットを用いて電源投入／リセット条件に続く初期ＤＲＰＵ設定を提供する。再設定演算は初期ＤＲＰＵ設定が設定された後で選択的ＤＲＰＵ再設定も提供する。再設定演算の完了時に、再設定論理回路１０４は完了信号を発行する。好適な実施の形態において、再設定論理回路１０４は設定データセットを再プログラム可能な論理装置自体に読込むことを制御する再設定自在ではない論理回路で、再設定演算のシーケンスは再プログラム可能な論理装置のメーカーが定義する。再設定演算は従って当業者には周知であろう。
【０１０６】
各々のＤＲＰＵ設定は対応するＩＳＡの実装に専用の特定のハードウェア構成を定義する設定データセットで与えられるのが望ましい。好適な実施の形態において、ＩＦＵ６０はＤＲＰＵ設定に関わらず上記の要素の各々を含む。基本的レベルでは、ＩＦＵ６０内の各々の素子が提供する機能は現在考慮しているＩＳＡとは無関係である。しかし、好適な実施の形態においてはＩＦＵ６０の１つ又はそれ以上の素子の詳細な構造と機能は設定されたＩＳＡの性質に基づいて変化することがある。好適な実施の形態において、アーキテクチャ記述メモリ１０１と再設定論理回路１０４の構造及び機能は１つのＤＲＰＵ設定から別の設定へ一定のままとするのが望ましい。ＩＦＵ６０の他の素子の構造及び機能とＩＳＡ形式に従って変化させる方法は詳細に後述する。
【０１０７】
処理制御レジスタセット１２２は命令実行中にＩＳＳ１００により使用される信号とデータを保存する。この処理制御レジスタセット１２２は処理制御ワードを記憶するためのレジスタ、割込ベクタを保存するためのレジスタ、設定データセットへの基準を記憶するためのレジスタを含む。処理制御ワードは望ましくは命令実行中に発生する条件に基づいて選択的に設定又はリセットできる複数の条件フラグを含む。処理制御ワードはさらに詳細に後述するように割込みがサービスされ得る１つ又はそれ以上の方法を定義する複数の遷移制御信号を含む。好適な実施の形態において、処理制御レジスタセット１２２はデータ記憶とゲート論理に設定された１組のＣＬＢとして実現している。
【０１０８】
ＩＳＳ１００はフェッチ制御ユニット１０８、デコード制御ユニット１１２、ＤＯＵ６２、ＡＯＵ６４の動作を制御する状態マシンであり、メモリアクセス論理１０２にメモリ読込及びメモリ書込信号を発行して命令実行を促す。図９を参照すると、ＩＳＳ１００でサポートしている好適な状態の組を示す状態図が図示してある。電源投入又はリセット条件に続いて、又は再設定が行なわれた直後、ＩＳＳ１００は状態Ｐで演算を開始する。再設定論理回路１０４が発行した完了信号に応じて、ＩＳＳ１００は状態Ｓに移行し、ＩＳＳは電源投入／リセット条件又は再設定が行なわれたときのプログラム状態情報を各々初期化又は復元する。ＩＳＳ１００は状態Ｆに移行し、命令フェッチ演算を行なう。命令フェッチ演算では、ＩＳＳ１００はメモリ読取信号をメモリアクセス論理１０２に発行し、フェッチ信号をフェッチ制御ユニット１０８に発行し、インクリメント信号をＡＯＵ６４に発行して、図１５及び図１６を参照して詳細に後述するように次命令プログラムアドレスレジスタ（ＮＩＰＡＲ）２３２をインクリメントする。
【０１０９】
状態Ｆの後、ＩＳＳ１００は状態Ｄに移行して命令デコード演算を開始する。状態ＤではＩＳＳ１００はデコード制御ユニット１１２にデコード信号を発行する。状態Ｄにいる間にＩＳＳ１００はさらにオプコード記憶レジスタセット１１６からデコードした命令に対応するオプコードを取出す。取出したオプコードに基づいて、ＩＳＳ１００は状態Ｅ又は状態Ｍへ移行して命令実行演算を実行する。ＩＳＳ１００は１つのクロック周期で命令が実行できる場合には状態Ｅに移行し、それ以外の場合にはＩＳＳ１００は多周期命令実行のために状態Ｍへ移行する。命令実行演算において、ＩＳＳ１００はＤＯＵ制御信号、ＡＯＵ制御信号、及び／又はメモリアクセス論理１０２宛の信号を生成して取出したオプコードに対応する命令の実行を促す状態Ｅ又は状態Ｍの何れかに続けてＩＳＳ１００は状態Ｗへ移行する。状態Ｗでは、ＩＳＳ１００はＤＯＵ制御信号、ＡＯＵ制御信号、及び／又はメモリ書込信号を生成して命令実行結果の保存を促す。状態Ｗはライトバック状態と称する。当業者には状態Ｆ，Ｄ，Ｅ又はＭ及びＷが完全な命令実行サイクルを含むことが理解されよう。状態Ｗの後、命令実行の中断が必要な場合にはＩＳＳ１００は状態Ｙに移行する。状態Ｙはアイドリング状態に対応し、例えば、Ｔマシン１４がＳマシンのメモリ３４へアクセスする必要がある場合等で必要とされることがある。状態Ｙ又は状態Ｗの後命令実行を継続する場合、ＩＳＳ１００は別の命令実行サイクルを再開させるように状態Ｆへ戻る。
【０１１０】
図９に図示したように、状態図には状態Ｉも含まれ、これは割込サービス状態であると定義する。本発明において、ＩＳＳ１００は割込論理回路１０６から割込通知信号を受信する。詳細については図１０を参照して後述するように割込論理回路１０６は遷移制御信号を生成して処理制御レジスタセット１２２内の処理制御ワードに遷移制御信号を保存する。遷移制御信号は望ましくは状態Ｆ，Ｄ，Ｅ，Ｍ，Ｗ，Ｙのどれが割込可能か、各々の割込可能状態で必要とされる割込精度のレベル、及び各々の割込可能な状態で状態Ｉに続けて命令実行を継続する次の状態を示す。任意の状態でＩＳＳ１００が割込通知信号を受信すると、ＩＳＳ１００は遷移制御信号が現在の状態を割込可能であると示していれば状態Ｉに移行する。それ以外の場合にはＩＳＳ１００は割込可能な状態に達するまで、割込信号を受信しなかったように移行する。
【０１１１】
ＩＳＳ１００が状態Ｉに移行すると、ＩＳＳ１００は処理制御レジスタセット１２２にアクセスして割込みマスクフラグをセットし、割込ベクタを取出すのが望ましい。割込ベクタの取出しの後、ＩＳＳ１００は従来のサブルーチンジャンプによって割込ハンドラへ割込ベクタで指定された現在の割込みをサービスするのが望ましい。
【０１１２】
本発明において、ＤＲＰＵ３２の再設定は、
１）外部制御線４８に発行された再設定割込み、
２）プログラム命令シーケンス内の再設定指示の実行、
に応じて初期化される。好適な実施の形態において、再設定割込みと再設定指示の実行の両方により再設定ハンドラへサブルーチンジャンプする。望ましくは、再設定ハンドラはプログラム状態情報を保存し、設定データセットのアドレスと再設定信号を再設定論理回路１０４に発行する。
【０１１３】
現在の割込みが再設定割込みではない場合、ＩＳＳ１００は割込サービスが終ると遷移制御信号２より示された次の状態へ移行し、これによって命令実行サイクルの再開、完了、又は起動を行なう。
【０１１４】
好適な実施の形態において、ＩＳＳ１００でサポートされる状態のセットはＤＲＰＵ３２が設定されるＩＳＡの性質に従って変化する。つまり、状態Ｍは、典型的な内側ループＩＳＡの場合のように、１クロック周期で１つ又はそれ以上の命令を実行できるようなＩＳＡでは存在しないことになる。図示したように、図９の状態図は汎用外側ループＩＳＡを実装するためにＩＳＳ１００でサポートされる状態を定義するのが望ましい。内側ループＩＳＡの実装では、ＩＳＳ１００は状態Ｆ，Ｄ，Ｅ，Ｗの複数セットを並行してサポートし、これによって当業者には容易に理解されるような方法で命令実行のパイプライン制御を促すのが望ましい。好適な実施の形態において、ＩＳＳ１００は現在検討しているＩＳＡに従って前述の状態又は状態のサブセットをサポートするＣＬＢに基づく状態マシンとして実装される。
【０１１５】
割込論理回路１０６は遷移制御信号を生成し外部制御線４８経由で受信した割込信号２応じて割込通知演算を実行する状態マシンを含むのが望ましい。図１０を参照すると、割込論理回路１０６によりサポートされる好適な状態の組み合せを示す状態図が図示してある。割込論理回路１０６は状態Ｐで演算を開始する。状態Ｐは電源投入、リセット、又は再設定条件に対応する。再設定論理回路１０４が発行した完了信号に応じて、割込論理回路１０６は状態Ａに移行し、アーキテクチャ記述メモリ１０１から割込応答信号を取出す。割込論理回路１０６は割込応答信号から遷移制御信号を生成し、遷移制御信号を処理制御レジスタセット１２２に保存する。好適な実施の形態において、割込論理回路１０６は割込応答信号を受信し遷移制御信号を生成するためのＣＬＢによるプログラマブル・ロジックアレイ（ＰＬＡ）を含む。
【０１１６】
状態Ａの後、割込論理回路１０６は状態Ｂへ移行して割込信号を待つ。割込信号の受信時に、処理制御レジスタセット１２２内部の割込マスクフラグがリセットされる場合割込論理回路１０６は状態Ｃへ移行する。状態Ｃでは、割込論理回路１０６は割込みの発生場所、割込順位、割込ハンドラのアドレスを判定する。割込信号が再設定割込の場合、割込論理回路１０６は状態Ｒに移行して処理制御レジスタセット１２２の設定データセット・アドレスを保存する。状態Ｒの後、又は割込信号が再設定割込ではない場合に状態Ｃに続けて、割込論理回路１０６は状態Ｎに移行し、処理制御レジスタセット１２２に割込ハンドラアドレスを保存する。割込論理回路１０６は次に状態Ｘへ移行し、割込通知信号をＩＳＳ１００へ発行する。状態Ｘに続けて、処理制御レジスタセット１２２は状態Ｂへ復帰して次の割込信号を待機する。
【０１１７】
好適な実施の形態において、割込応答信号即ち遷移制御信号により指定された割込遅延レベルはＤＲＰＵ３２が設定された現在のＩＳＡに従って変化する。例えば、高性能リアルタイムモーション制御専用のＩＳＡは高速かつ予測可能な割込応答能力を必要とする。このようなＩＳＡに対応する設定データセットは望ましくは遅延の小さい割込が要求されていることを示す割込応答信号を含む。これに対応する遷移制御信号は複数のＩＳＳ状態を割込可能であると識別し、これによって割込が命令実行サイクルの終了までに命令実行サイクルを中断できるようにするのが望ましい。リアルタイムモーション制御専用のＩＳＡとは対照的に、画像コンボリューション演算専用のＩＳＡは単位時間当たりで実行されるコンボリューション演算数が最大となるように割込応答能力を必要とする。画像コンボリューションＩＳＡに対応する設定データセットは遅延時間の大きな割込みを必要とすることを指定する割込応答信号を含むのが望ましい。対応する遷移制御信号は望ましくは状態Ｗを割込可能であると識別する。画像コンボリューションＩＳＡを実装するように設定された場合にＩＳＳ１００が複数の状態セットＦ，Ｄ，Ｅ，Ｗを並行してサポートする場合、遷移制御信号は各々の状態Ｗを割込可能であると識別するのが望ましく、さらに、並列命令実行サイクルの各々が状態Ｗの演算を完了するまで割込サービスを遅延させるように指定する。これによって命令グループ全体が割込サービスの前に実行され、妥当なパイプライン化実行能力レベルを維持できる。
【０１１８】
割込遅延レベルと類似の方法で、割込応答信号により指定される割込精度のレベルもＤＲＰＵ３２が設定されるＩＳＡに従って変化する。例えば、割込可能な複数サイクル演算を指示する外側ループＩＳＡで割込可能な状態であると状態Ｍが定義された場合、割込応答信号は正確な割込みが必要であることを指定するのが望ましい。遷移制御信号は状態Ｍで受信した割込みが複数サイクル演算を連続して再スタートできるようにする正確な割込みとして処理する。別の例として、障害の発生しないパイプライン化算術演算をサポートするＩＳＡでは、割込応答信号は不正確な割込みが要求されることを指定する。遷移制御信号は状態Ｗで受信した割込が不正確な割込みとして処理されることを指定する。
【０１１９】
任意のＩＳＡについて、割込応答信号はＩＳＡの対応する設定データセットの一部により定義又はプログラムされる。プログラム可能な割込応答信号と対応する遷移制御信号の生成を経由して、本発明は、ＩＳＡ毎の最適な割込方式の実現を容易にする。大半の従来技術のコンピュータアーキテクチャが割込能力の柔軟な仕様、言い換えればプログラム可能な状態遷移のイネーブル化、プログラム可能な割込遅延、及び、プログラム可能な割込精度を提供しないことが当業者には理解されよう。好適な実施の形態において、割込論理回路１０６は前述の状態をサポートするＣＬＢに基づいた状態マシンとして実装される。
【０１２０】
フェッチ制御ユニット１０８はＩＳＳ１００が発行したフェッチ信号に応答して命令バッファ１１０に命令を読込むよう指示する。好適な実施の形態において、フェッチ制御ユニット１０８はＣＬＢセット内部でフリップフロップを使用する従来のワンホット・符号化状態マシンとして実装される。別の実施の形態において、フェッチ制御ユニット１０８は従来の符号化状態マシンとして、又はＲＯＭ版の状態マシンとして、設定できることが当業者には理解されよう。ＩＳＳ１００はメモリ３４から読込んだ命令の一時記憶を提供する。外側ループＩＳＡの実装では、命令バッファ１１０は複数のＣＬＢを使用する従来のＲＡＭ版先入れ先出し（ＦＩＦＯ）バッファとして実装するのが望ましい。内側ループＩＳＡの実装では、命令バッファ１１０は複数のフリップフロップを１組のＩＯＢ内部に、又は複数のフリップフロップをＩＯＢとＣＬＢ両方の内部に使用する１組のフリップフロップ・レジスタとして実装するのが望ましい。
【０１２１】
デコード制御ユニット１１２はＩＳＳ１００が発行するデコード信号に応じて命令デコーダ１１４へ命令バッファ１１０からの命令の転送を指示する。内側ループＩＳＡでは、デコード制御ユニット１１２はＣＬＢ版レジスタに接続したＣＬＢ版ＲＯＭを含むＲＯＭ版状態マシンとして実装するのが望ましい。外側ループＩＳＡでは、デコード制御ユニット１１２はＣＬＢ版符号化状態マシンとして実装するのが望ましい。入力として受信した各々の命令について、命令デコーダ１１４は対応するオプコード、レジスタファイルアドレス、及び任意で１つ又はそれ以上の定数を従来の方法で出力する。内側ループＩＳＡでは、命令デコーダ１１４は入力として受信した命令グループをデコードするように構成するのが望ましい。好適な実施の形態において、命令デコーダ１１４は現在検討しているＩＳＡに含まれる命令の各々をデコードするように設定したＣＬＢ版デコーダとして実装される。
【０１２２】
オプコード記憶レジスタセット１１６は処理データ線１４４が出力した各々のオプコードの一時記憶を提供し、各々のオプコードをＩＳＳ１００へ出力する。外側ループのＩＳＡがＤＲＰＵ３２に実装される場合、オプコード記憶レジスタセット１１６は最適な個数のフリップフロップレジスタバンクを使用して実装するのが望ましい。フリップフロップレジスタバンクは命令バッファ１１０経由でそれまで待ち行列にある命令からのオプコード文字ビットフィールドから導き出したクラス又はグループ符号を表わす命令デコーダ１１４からの信号を受信する。フリップフロップレジスタバンクはＩＳＳの複雑さを望ましくは低減する復号方式に従って前述のクラス又はグループ符号を保存する。
【０１２３】
内側ループＩＳＡの場合、オプコード記憶レジスタセット１１６は望ましくは命令デコーダ１１４が出力するオプコード文字ビットフィールドからさらに直接導き出されるオプコード指示信号を保存する。内側ループＩＳＡは必ず小さいオプコード文字ビットフィールドを有しているので、これによって命令バッファ１１０、命令デコーダ１１４、オプコード記憶レジスタセット１１６の各々でシーケンス化される命令についてのバッファリング、復号、オプコード指示の実施条件を少なくする。要するに、外側ループＩＳＡでは、オプコード記憶レジスタセット１１６は、オプコード文字サイズに等しい又はその一部のビット幅を特徴とするフリップフロップ・レジスタバンクの小さな集合として実装されるのが望ましい。内側ループＩＳＡでは、オプコード記憶レジスタセット１１６は外側ループＩＳＡよりも小さくさらに統一されたフリップフロップ・レジスタバンクが望ましい。内側ループの場合にフリップフロップ・レジスタバンクの縮小した大きさは外側ループＩＳＡに対して内側ループＩＳＡの最小命令カウント特性を反映する。
【０１２４】
ＲＦアドレスレジスタセット１１８と定数レジスタセット１２０は命令デコーダ１１４から出力される各々のレジスタファイル・アドレスと各々の定数の一時記憶を提供する。好適な実施の形態において、オプコード記憶レジスタセット１１６、ＲＦアドレスレジスタセット１１８、定数レジスタセット１２０は各々データ記憶のために設定した１組のＣＬＢとして実装される。
【０１２５】
メモリアクセス論理回路１０２はメモリ３４，ＤＯＵ６２，ＡＯＵ６４の間で処理制御レジスタセット１２２において指定されたアトミックメモリアドレスの寸法に従ってデータ転送を指示し同期させるメモリ制御回路である。メモリアクセス論理回路１０２はさらにＳマシン１２と任意のＴマシン１４の間のデータ及び命令の転送を指示し同期させる。好適な実施の形態において、メモリアクセス論理回路１０２はバーストモード・メモリアクセスをサポートしており、望ましくはＣＬＢを用いる従来のＲＡＭ制御装置として実装する。再設定中、再設定可能な論理装置の入出力ピンは３状態であり、抵抗端末処理で発行されない論理レベルを定義でき、このためメモリ３４を不安定にしないことが当業者には理解されよう。別の実施の形態において、メモリアクセス論理回路１０２はＤＲＰＵ３２の外部に実装することができる。
【０１２６】
図１１を参照すると、データ演算ユニット（ＤＯＵ）６２の好適な実施の形態のブロック図が図示してある。ＤＯＵ６２はＤＯＵ制御信号、ＲＦアドレス、ＩＳＳ１００から受信した定数に対して演算を実行する。ＤＯＵ６２はＤＯＵクロスバースイッチ１５０、記憶・配列論理回路１５２、データ演算論理回路１５４を含む。ＤＯＵクロスバースイッチ１５０、記憶・配列論理回路１５２、データ演算論理回路１５４の各々は第１の制御線７０経由でＩＦＵ６０の第１の制御出力に接続した制御入力を有する。ＤＯＵクロスバースイッチ１５０はＤＯＵの双方向データポートを形成する双方向データポート、第３の制御出力７４に接続した定数入力、第１のデータ線１６０経由でデータ演算論理回路１５４のデータ出力に接続してある第１のデータフィードバック入力、第２のデータ線１６４で記憶・配列論理回路１５２のデータ出力に接続してある第２のデータフィードバック入力、第３のデータ線１６２で記憶・配列論理回路１５２のデータ入力に接続してあるデータ出力とを有する。データ出力以外に、データ演算論理回路１５４は第３の制御出力７４に接続してあるアドレス入力を有する。データ演算論理回路１５４はさらに第２のデータ線１６４で記憶・整列論理の出力へ接続してあるデータ入力を有する。
【０１２７】
データ演算論理回路１５４は制御入力に受信したＤＯＵ制御信号に応じてこれのデータ入力に受信したデータに算術、シフト、及び／又は論理演算を実行する。記憶・配列論理回路１５２は、これのアドレス入力と制御入力の各々で受信したＲＦアドレスとＤＯＵ制御信号の指示に従ってデータ計算に関連するオペランド、定数、部分的な結果の一時記憶を提供するデータ記憶素子を含む。ＤＯＵクロスバースイッチ１５０はメモリ３４からのデータ読込、データ演算論理回路１５４が記憶・配列論理回路１５２又はメモリ３４へ出力した結果の転送、制御入力に受信したＤＯＵ制御信号に従って記憶・配列論理回路１５２へＩＦＵ６０が出力した定数の読込を容易にする従来のクロスバースイッチが望ましい。
【０１２８】
好適な実施の形態において、データ演算論理回路１５４の詳細な構造は現在検討しているＩＳＡでサポートされる演算の種類によって変化する。つまり、データ演算論理回路１５４は現在検討しているＩＳＡ内部のデータ演算命令で指定された算術及び／又は論理演算を実行するための回路を含む。同様に記憶・配列論理回路１５２とＤＯＵクロスバースイッチ１５０の詳細な構造は現在検討しているＩＳＡによって変化する。データ演算論理回路１５４と、記憶・配列論理回路１５２と、ＤＯＵクロスバースイッチ１５０のＩＳＡ形式による詳細な構造については図１２と図１３を参照して後述する。
【０１２９】
外側ループＩＳＡについて、ＤＯＵ６２はデータに対して直列演算を実行するように設定するのが望ましい。図１２を参照すると、汎用外側ＩＳＡの実装のために設定したＤＯＵ６１の第１の実施の形態のブロック図が図示してある。汎用外側ループＩＳＡは乗算、加算、減算等の数学演算、ＡＮＤ、ＯＲ、ＮＯＴ等のブーリアン演算、シフト演算、回転演算等を実行するように設定したハードウェアを必要とする。つまり、汎用外側ループデータ演算論理回路１５４は第１の入力と、第２の入力と、制御入力と、出力とを有する従来の算術論理ユニット（ＡＬＵ）／シフト回路１８４を含むのが望ましい。記憶・配列論理回路１５２は望ましくは第１のＲＡＭ１８０と第２のＲＡＭ１８２を含み、その各々がデータ入力と、データ出力と、アドレス選択入力と、イネーブル入力とを有する。ＤＯＵクロスバースイッチ１５０は望ましくは双方向と単方向両方のクロスバー接続を有し、また、図１１を参照して既に説明したような入力と出力とを有するような従来技術のクロスバースイッチを含む。外側ループＩＳＡでのＤＯＵクロスバースイッチ１５０の効率的な実装がマルチプレクサ、スリーステートバッファ、ＣＬＢによる論理回路、直接配線、又は再設定可能な接続手段によりあらゆる組み合せで接続された前述の素子のサブセットを含み得ることが当業者には理解されよう。
【０１３０】
外側ループＩＳＡでは、ＤＯＵクロスバースイッチ１５０は可能な限り最小限の時間でシリアルデータ移動を行なうように実装され、同時に一般化した外側ループ命令形式をサポートするように最大個数の独自のデータ移動クロスバー接続も提供する。
【０１３１】
第１のＲＡＭ１８０のデータ入力は第２のＲＡＭ１８２同様に、第３のデータ線１６２経由でＤＯＵクロスバースイッチ１５０のデータ出力へ接続される。第１のＲＡＭ１８０と第２のＲＡＭ１８２のアドレス選択入力は第３の制御出力７４によりＩＦＵ６０からのレジスタファイルアドレスを受信するように接続される。同様に、第１のＲＡＭ１８０と第２のＲＡＭ１８２のイネーブル入力は第１の制御線７０経由でＤＯＵ制御信号を受信するように接続する。第１のＲＡＭ１８０と第２のＲＡＭ１８２のデータ出力はＡＬＵ／シフト回路１８４の第１と第２の入力に各々接続され、ＤＯＵクロスバースイッチ１５０の第２のデータフィードバック入力へも接続される。ＡＬＵ／シフト回路１８４の制御入力は第１の制御線７０経由でＤＯＵ制御信号を受信するように接続され、ＡＬＵ／シフト回路１８４の出力はＤＯＵクロスバースイッチ１５０の第１のデータフィードバック入力に接続される。ＤＯＵクロスバースイッチ１５０の残りの入出力の接続は図１１を参照して前述したのと同じである。
【０１３２】
データ演算命令の実行を容易にするため、ＩＦＵ６０はＤＯＵ制御信号、ＲＦアドレス、ＤＯＵ６１への定数をＩＳＳ状態Ｅ又はＭ何れかの間に発行する。第１のＲＡＭ１８０と第２のＲＡＭ１８２は各々一時データ記憶のためのレジスタファイルを提供する。第１のＲＡＭ１８０と第２のＲＡＭ１８２内部の個別のアドレスは各々のＲＡＭの各々のアドレス選択入力で受信したＲＦアドレスに従って選択される。同様に、第１のＲＡＭ１８０と第２のＲＡＭ１８２の読込みは各々第１のＲＡＭ１８０と第２のＲＡＭ１８２の各々が書込みイネーブル入力に受信するＤＯＵ制御信号によって制御される。好適な実施の形態において、少なくとも１つのＲＡＭ１８０、１８２はＤＯＵクロスバースイッチ１５０からＡＬＵ／シフト回路１８４への直接的なデータ転送を容易にする転送能力を含む。ＡＬＵ／シフト回路１８４は、制御入力に受信したＤＯＵ制御信号の指示によって、第１のＲＡＭ１８０から受信した第１のオペランド及び／又は第２のＲＡＭ１８２から受信した第２のオペランドに対する算術、論理、シフト演算を行なう。ＤＯＵクロスバースイッチ１５０は、
１）メモリ３４と第１のＲＡＭ１８０及び第２のＲＡＭ１８２の間のデータ、２）ＡＬＵ／シフト回路１８４から第１のＲＡＭ１８０及び第２のＲＡＭ１８２又はメモリ３４への結果、
３）第１のＲＡＭ１８０又は第２のＲＡＭ１８２に記憶されたデータをメモリ３４へ、
４）ＩＦＵ６０から第１のＲＡＭ１８０及び第２のＲＡＭ１８２への定数、
を選択的に転送する。前述のように、第１のＲＡＭ１８０又は第２のＲＡＭ１８２の何れかが転送能力を含む場合、ＤＯＵクロスバースイッチ１５０もメモリ３４又はＡＬＵ／シフト回路１８４の出力からのデータを直接ＡＬＵ／シフト回路１８４へ選択的に配送する。ＤＯＵクロスバースイッチ１５０は制御入力に受信したＤＯＵ制御信号に従って特定の配送演算を実行する。好適な実施の形態において、ＡＬＵ／シフト回路１８４は１組のＣＬＢ内部の論理関数ジェネレータを用いまた再設定可能な論理装置内部の数学演算専用の回路を用いて実装される。第１のＲＡＭ１８０、第２のＲＡＭ１８２は各々１組のＣＬＢ内部に存在するデータ記憶回路を用いて実装するのが望ましく、ＤＯＵクロスバースイッチ１５０は前述の方法で実装するのが望ましい。
【０１３３】
図１３を参照すると、内側ループＩＳＡの実施のために設定したＤＯＵ６３の第２の実施の形態のブロック図が図示してある。一般に、内側ループＩＳＡは比較的少数の特定化した演算をサポートし、望ましくは潜在的に大きなデータセットに対する共通の１組の演算を実行するために使用される。内側ループＩＳＡの最適計算能力は並列に演算を実行するように設定されたハードウェアによって作成される。即ち、ＤＯＵ６３の第２の実施の形態において、データ演算論理回路１５４、記憶・配列論理回路１５２、ＤＯＵクロスバースイッチ１５０はパイプライン化計算を実行するように設定される。データ演算論理回路１５４は、複数の入力と、制御入力と、出力とを有するパイプライン化機能ユニット１９４を含む。記憶・配列論理回路１５２は、
１）各々がデータ入力と、データ出力と、制御入力とを有する１組の従来のフリップフロップ・アレイ１９２、
２）制御入力と、データ入力と、存在するフリップフロップ・アレイ１９２の個数に対応する多数のデータ出力とを有するデータセレクタ１９０、
を含む。ＤＯＵクロスバースイッチ１５０は全二重単方向クロスバ−結合を有する従来のクロスバースイッチ・ネットワークを有する。ＤＯＵ６３の第２の実施の形態において、ＤＯＵクロスバースイッチ１５０は図１１を参照して前述した入力と出力を含み、第２のデータフィードバック入力を含まないのが望ましい。外側ループＩＳＡの場合と同様に、内側ループＩＳＡのためのＤＯＵクロスバースイッチ１５０の効率的な実装はマルチプレクサ、スリーステートバッファ、ＣＬＢによる論理回路、直接配線、又は再設定可能な方法で接続した前述の素子のサブセットを含む。内側ループＩＳＡでは、ＤＯＵクロスバースイッチ１５０は望ましくは最小限の時間で並列データ移動を最大限に行なえるようにしつつ重いパイプライン化内側ループＩＳＡ命令をサポートするような最少数の独自データ移動クロスバ結合も提供するように実装する。
【０１３４】
データセレクタ１９０のデータ入力は第３のデータ線１６２経由でＤＯＵクロスバースイッチ１５０のデータ出力へ接続する。データセレクタ１９０の制御入力は第３の制御出力７４でＲＦアドレスを受信するように接続し、データセレクタ１９０の各々の出力は対応するフリップフロップ・アレイのデータ入力へ接続する。各々のフリップフロップ・アレイ１９２の制御入力は第１の制御線７０経由でＤＯＵ制御信号を受信するように接続し、各々のフリップフロップ・アレイのデータ出力はパイプライン化機能ユニット１９４の入力に接続する。パイプライン化機能ユニット１９４の制御入力は第１の制御線７０経由でＤＯＵ制御信号を受信するように接続し、パイプライン化機能ユニット１９４の出力はＤＯＵクロスバースイッチ１５０の第１のデータフィードバック入力に接続する。ＤＯＵクロスバースイッチ１５０の残りの入力と出力の接続は図１１を参照して既に説明したものと同一である。
【０１３５】
動作において、パイプライン化機能ユニット１９４は制御入力に受信したＤＯＵ制御信号に従ってデータ入力に受信したデータに対するパイプライン演算を実行する。機能ユニット１９４は乗算アキュームレータユニット、閾値決定ユニット、画像回転ユニット、エッジ強調ユニット、又は分割データに対するパイプライン演算を実行するのに好適な何らかの種類の機能ユニットで有り得ることは当業者に理解されよう。データセレクタ１９０はＤＯＵクロスバースイッチ１５０の出力から任意のフリップフロップ・アレイ１９２へ制御入力に受信したＲＦアドレスに従ってデータを転送する。各々のフリップフロップ・アレイ１９２は制御入力に受信した制御信号の指示に従って、別のフリップフロップ・アレイ１９２のデータ内容に対して空間的時間的に配列したデータのために１組の順次結合したデータラッチを含むのが望ましい。ＤＯＵクロスバースイッチ１５０は選択的に、
１）メモリ３４からデータセレクタ１９０へのデータ、
２）乗算／積算ユニット１９４からデータセレクタ１９０へ又はメモリ３４への結果、
３）ＩＦＵ６０からデータセレクタ１９０への定数、
を転送する。
【０１３６】
内側ループＩＳＡは１組の「組み込み」定数を有することが当業者には理解されよう。このような内側ループＩＳＡの実施において、データ演算論理回路１５４は組み込み定数を含むＣＬＢによるＲＯＭを含み、これによって、ＩＦＵ６０からＤＯＵクロスバースイッチ１５０経由で記憶・配列論理回路１５２へ定数を転送する必要性を排除するのが望ましい。好適な実施の形態において、機能ユニット乗算／積算ユニット１９４は論理関数ジェネレータと１組のＣＬＢ内部の数学演算専用回路を用いて実装するのが望ましい。各々のフリップフロップ・アレイ１９２は１組のＣＬＢ内部のフリップフロップを用いて実装するのが望ましく、また、データセレクタ１９０は１組のＣＬＢ内部の論理関数ジェネレータとデータ選択回路を用いて実装するのが望ましい。最後に、ＤＯＵクロスバースイッチ１５０は内側ループＩＳＡで説明した方法で実装するのが望ましい。
【０１３７】
図１４を参照すると、アドレス演算ユニット（ＡＯＵ）６４の好適な実施の形態のブロック図が図示してある。ＡＯＵ６４はＩＦＵ６０から受信したＡＯＵ制御信号、ＲＦアドレス、及び、定数に従ってアドレスに演算を行なう。ＡＯＵ６４はＡＯＵクロスバースイッチ２００、記憶・カウント論理回路２０２、アドレス演算論理回路２０４、アドレス・マルチプレクサ２０６の各々は制御信号線７２経由でＩＦＵ６０の第２の制御出力に接続した制御入力を有する。ＡＯＵクロスバー・スイッチ２００はＡＯＵの双方向データポートを形成する双方向データポート、第１のアドレス線２１０経由でアドレス演算論理回路２０４のアドレス出力に接続したアドレスフィードバック入力、第３の制御出力７４へ接続した定数入力、第２のアドレス線２１２経由で記憶・カウント論理回路２０２のアドレス入力に接続したアドレス出力を有する。アドレス入力と制御入力以外にも、記憶・カウント論理回路２０２は第３の制御出力７４に接続したＲＦアドレス入力と、第３のアドレス線２１４経由でアドレス演算論理回路２０４のアドレス入力に接続したアドレス出力を有する。アドレス・マルチプレクサ２０６は第１のアドレス線２１０へ接続した第１の入力と、第３のアドレス線２１４へ接続した第２の入力と、ＡＯＵ６４のアドレス出力を形成する出力とを含む。
【０１３８】
アドレス演算論理回路２０４はこれの制御入力に受信したＡＯＵ制御信号の指示によってこれのアドレス入力に受信したアドレスに対して算術演算を行なう。記憶・カウント論理回路２０２はアドレスとアドレス計算結果の一時記憶を提供する。ＡＯＵクロスバースイッチ２００はメモリ３４からのアドレス読込、アドレス演算論理回路２０４が出力した結果の記憶・カウント論理回路２０２又はメモリ３４への転送、ＩＦＵ６０が出力した定数の記憶・カウント論理回路２０２への読込をこれの制御入力に受信したＡＯＵ制御信号に従って行なう。アドレス・マルチプレクサ２０６は記憶・カウント論理回路２０２又はＡＯＵクロスバースイッチ２００から受信したアドレスをこれの制御入力に受信したＡＯＵ制御信号の指示によりＡＯＵ６４のアドレス出力へ選択的に出力する。好適な実施の形態において、ＡＯＵクロスバースイッチ２００、記憶・カウント論理回路２０２、アドレス演算論理回路２０４の細部の構造は現在検討中のＩＳＡの種類によって、図１５及び図１６を参照してこの後説明するように異ってくる。
【０１３９】
図１５を参照すると、汎用外側ループＩＳＡの実装用に設定したＡＯＵ６５の第１の実施の形態のブロック図が図示してある。汎用外側ループＩＳＡはプログラムカウンタの内容と記憶・カウント論理回路２０２に記憶しているアドレスに対して加算、減算、インクリメント、デクリメント等の演算を行なうためのハードウェアを必要とする。ＡＯＵ６５の図示した第１の実施の形態において、アドレス演算論理回路２０４は入力と出力と制御入力を有する次命令プログラムアドレス・レジスタ（ＮＩＰＡＲ）２３２、第１の入力と第２の入力と第３の入力と制御入力と出力を有する算術ユニット２３４、第１の入力と第２の入力と制御入力と出力を有するマルチプレクサ２３０を含むのが望ましい。記憶・カウント論理回路２０２は望ましくは第３のＲＡＭ２２０と第４のＲＡＭ２２２を含み、この各々は入力と出力とアドレス選択入力とイネーブル入力を有する。アドレス・マルチプレクサ２０６は望ましくは第１の入力と第２の入力と第３の入力と制御入力と出力とを有するマルチプレクサを含む。ＡＯＵクロスバースイッチ２００は望ましくは全二重単方向クロスバ結合を有し、また、図１４を参照して既に説明した入力と出力を有する従来のクロスバースイッチ・ネットワークを含む。ＡＯＵクロスバースイッチ２００の効率的な実装はマルチプレクサと、スリーステートバッファと、ＣＬＢによる論理回路と、直接配線又は再設定可能な結合によって接続されたこれら素子の何らかのサブセットを含むことがある。外側ループＩＳＡでは、ＡＯＵクロスバースイッチ２００は望ましくは最小限の時間で最大限に直列アドレス移動を行ない、同時に一般化した外側ループＩＳＡアドレス演算命令をサポートするように最大数の独自アドレス移動クロスバ結合を提供するように実装する。
【０１４０】
第３のＲＡＭ２２０の入力と第４のＲＡＭ２２２の入力は各々第２のアドレス線２１２経由でＡＯＵクロスバースイッチ２００の出力に接続される。第３のＲＡＭ２２０と第４のＲＡＭ２２２のアドレス選択入力は第３の制御出力７４経由でＩＦＵ６０からのＲＦアドレスを受信するように接続され、第３のＲＡＭ２２０、第４のＲＡＭ２２２のイネーブル入力は制御信号線７２経由でＡＯＵ制御信号を受信するように接続される。第３のＲＡＭ２２０の出力はマルチプレクサ２３０の第１の入力、算術ユニット２３４の第１の入力、アドレス・マルチプレクサ２０６の第１の入力に接続される。同様に、第４のＲＡＭ２２２の出力はマルチプレクサ２３０の第２の入力、算術ユニット２３４の第２の入力、アドレス・マルチプレクサ２０６の第２の入力に接続される。マルチプレクサ２３０、ＮＩＰＡＲ２３２、算術ユニット２３４の制御入力は各々が制御信号線７２に接続される。算術ユニット２３４の出力はアドレス演算論理回路２０４の出力を形成するので、ＡＯＵクロスバースイッチ２００のアドレスフィードバック入力とアドレス・マルチプレクサ２０６の第３の入力に接続される。ＡＯＵクロスバースイッチ２００とアドレス・マルチプレクサ２０６の残りの入出力への接続は図１４を参照して既に説明したのと同じである。
【０１４１】
アドレス演算命令の実行を容易にするため、ＩＦＵ６０はＡＯＵ制御信号、ＲＦアドレス、定数をＩＳＳ状態Ｅ又はＭ何れかの間に発行する。第３のＲＡＭ２２０、第４のＲＡＭ２２２は各々一時的なアドレス記憶のための第１と第２のレジスタファイルを提供する。第３のＲＡＭ２２０、第４のＲＡＭ２２２内部の個別の記憶場所は各々のＲＡＭの各々のアドレス選択入力で受信したＲＦアドレスに従って選択される。第３のＲＡＭ２２０、第４のＲＡＭ２２２の読込みは第３のＲＡＭ２２０、第４のＲＡＭ２２２の各々が書込イネーブル入力に受信する各々のＡＯＵ制御信号により制御される。マルチプレクサ２３０は第３のＲＡＭ２２０、第４のＲＡＭ２２２が出力したアドレスをこれの制御入力に受信したＡＯＵ制御信号の指示に従ってＮＩＰＡＲ２３２へ選択的に転送する。ＮＩＰＡＲ２３２はマルチプレクサ２３０の出力から受信したアドレスを読込み、これの制御入力に受信したＡＯＵ制御信号に従ってこれの内容をインクリメントする。好適な実施の形態において、ＮＩＰＡＲ２３２は実行すべき次のプログラム命令のアドレスを記憶する。算術ユニット２３４は加算、減算、インクリメント、デクリメントを含む算術演算を、第３のＲＡＭ２２０、第４のＲＡＭ２２２から受信したアドレスに対して、及び／又はＮＩＰＡＲ２３２の内容に対して実行する。ＡＯＵクロスバースイッチ２００は選択的に、
１）メモリ３４から第３のＲＡＭ２２０、第４のＲＡＭ２２２へのアドレス、
２）算術ユニット２３４が出力したメモリ３４又は第３のＲＡＭ２２０、第４のＲＡＭ２２２へのアドレス計算の結果、
を転送する。ＡＯＵクロスバースイッチ２００はこれの制御入力に受信したＡＯＵ制御信号に従って特定の転送演算を実行する。アドレス・マルチプレクサ２０６は第３のＲＡＭ２２０が出力したアドレス、第４のＲＡＭ２２２が出力したアドレス、又は算術ユニット２３４が出力したアドレス計算の結果をこれの制御入力に受信したＡＯＵ制御信号の指示に従ってＡＯＵのアドレス出力へ選択的に転送する。
【０１４２】
好適な実施の形態において、第３のＲＡＭ２２０、第４のＲＡＭ２２２は各々が１組のＣＬＢ内部に存在するデータ記憶回路を用いて実現される。マルチプレクサ２３０とアドレス・マルチプレクサ２０６は各々１組のＣＬＢ内部に存在するデータ選択回路を用いて実現され、ＮＩＰＡＲ２３２は１組のＣＬＢ内部に存在するデータ記憶回路を用いて実現されるのが望ましい。算術ユニット２３４は１組のＣＬＢ内部の論理関数ジェネレータと算術演算専用の回路を用いて実現されるのが望ましい。最後に、ＡＯＵクロスバースイッチ２００は望ましくは前述した方法で実現される。
【０１４３】
図１６を参照すると、内側ループＩＳＡの実装用に設定したＡＯＵ６６の第２の実施の形態のブロック図が図示してある。望ましくは、内側ループＩＳＡは非常に限定された１組のアドレス演算を実行するためのハードウェアと、少なくとも１つのソース・アドレス・ポインタとこれに対応する多数の宛先アドレス・ポインタを保持するためのハードウェアを必要とする。非常に限られた個数のアドレス演算、又は１つだけのアドレス演算を必要とする内側ループ処理の形式には、画像データに対するブロック、ラスタ、又は歪曲演算、ビット反転演算、巡回バッファデータに対する演算、及び可変長データ・パース演算が含まれる。本明細書においては、単一のアドレス演算、即ち、インクリメント演算を考える。インクリメント演算を実行するハードウェアは本質的にデクリメント演算を実行することも可能であるので、さらなるアドレス演算能力を提供し得ることが当業者には理解されよう。
【０１４４】
ＡＯＵ６６の第２の実施の形態において、記憶・カウント論理回路２０２は入力と出力と制御入力とを有する少なくとも１つのソースアドレス・レジスタ２５２、入力と出力と制御入力とを有する少なくとも１つの宛先アドレス・レジスタ２５４、及び入力と制御入力と存在するソース及び宛先アドレスレジスタ２５２、２５４の総数に等しい多数の出力を有するデータセレクタ２５０を含む。本明細書において、１つのソースアドレス・レジスタ２５２と１つの宛先アドレス・レジスタ２５４とを考えるので、データセレクタ２５０は第１の出力と第２の出力とを有する。アドレス演算論理回路２０４は入力と出力と制御入力とを有するＮＩＰＡＲ２３２、データセレクタ出力の数に等しい多数の入力と制御入力と出力とを有するマルチプレクサ２６０とを含む。本明細書において、マルチプレクサ２６０は第１の入力と第２の入力とを有する。アドレス・マルチプレクサ２０６は望ましくはデータセレクタ出力の個数より１つ多い多数の入力と、制御入力と、出力とを有するマルチプレクサを含む。つまり、本明細書において、アドレス・マルチプレクサ２０６は第１の入力と、第２の入力と、第３の入力とを有する。
【０１４５】
ＡＯＵクロスバースイッチ２００は望ましくは双方向及び単方向クロスバー結合を有し、図１４を参照して前述した入力及び出力を有する従来のクロスバースイッチ・ネットワークを含む。ＡＯＵクロスバースイッチ２００の効果的な実装は、マルチプレクサと、スリーステートバッファと、ＣＬＢによる論理回路と、直接配線、又は再設定自在な結合により接続されたこれらの素子の何らかのサブセットを含むことができる。内側ループＩＳＡでは、ＡＯＵクロスバースイッチ２００は望ましくは可能な限り最小限の時間で並列アドレス移動を最大限としつつ最小の個数の独自のアドレス移動クロスバー結合も提供して内側ループアドレス演算をサポートする。
【０１４６】
データセレクタ２５０の入力はＡＯＵクロスバースイッチ２００の出力に接続される。データセレクタ２５０の第１と第２の出力はソースアドレス・レジスタ２５２の入力と宛先アドレス・レジスタ２５４の入力に各々接続される。ソースアドレス・レジスタ２５２と宛先アドレス・レジスタ２５４の制御入力は制御信号線７２経由でＡＯＵ制御信号を受信するように接続される。ソースアドレス・レジスタ２５２の出力はマルチプレクサ２６０の第１の入力とアドレス・マルチプレクサ２０６の第１の入力に接続される。同様に、宛先アドレス・レジスタ２５４の出力は宛先アドレス・レジスタ２５４の第２の入力とアドレス・マルチプレクサ２０６の第２の入力に接続される。ＮＩＰＡＲ２３２の入力はマルチプレクサ２６０の出力へ接続され、ＮＩＰＡＲ２３２の制御入力は制御信号線７２経由でＡＯＵ制御信号を受信するように接続され、ＮＩＰＡＲ２３２の出力はＡＯＵクロスバースイッチ２００のアドレスフィードバック入力とアドレス・マルチプレクサ２０６の第３の入力の両方に接続される。ＡＯＵクロスバースイッチ２００の残りの入力及び出力の接続は図１４を参照して上記で既に説明したものと同じである。
【０１４７】
動作において、データセレクタ２５０はＡＯＵクロスバースイッチ２００から受信したアドレスをソースアドレス・レジスタ２５２又は宛先アドレス・レジスタ２５４へ、これの制御入力に受信したＲＦアドレスに従って転送する。ソースアドレス・レジスタ２５２はこれの制御入力に存在するＡＯＵ制御信号に応じてこれの入力に存在するアドレスを読込む。宛先アドレス・レジスタ２５４は同様の方法で入力に存在するアドレスを読込む。マルチプレクサ２６０はソースアドレス・レジスタ２５２から受信した又は宛先アドレス・レジスタ２５４から受信したアドレスをこれの制御入力で受信したＡＯＵ制御信号に従ってＮＩＰＡＲ２３２の入力へ転送する。ＮＩＰＡＲ２３２はこれの入力に存在するアドレスを読込み、これの制御入力で受信したＡＯＵ制御信号に応じてその内容をインクリメントし、又はその内容をデクリメントする。ＡＯＵクロスバースイッチ２００は選択的に、
１）メモリ３４からのアドレスをデータセレクタ２５０へ、
２）ＮＩＰＡＲ２３２の内容をメモリ３４へ又はデータセレクタ２５０へ、
転送する。ＡＯＵクロスバースイッチ２００はこれの制御入力で受信したＡＯＵ制御信号に従って特定の転送演算を実行する。アドレス・マルチプレクサ２０６はソースアドレス・レジスタ２５２、宛先アドレス・レジスタ２５４、又はＮＩＰＡＲ２３２の内容を、これの制御入力で受信したＡＯＵ制御信号の指示に従ってＡＯＵのアドレス出力へ選択的に転送する。好適な実施の形態において、ソースアドレス・レジスタ２５２と宛先アドレス・レジスタ２５４は各々１組のＣＬＢ内部に存在するデータ記憶回路を用いて実装される。
【０１４８】
ＮＩＰＡＲ２３２は、望ましくは１組のＣＬＢ内部のインクリメント／デクリメント論理回路とフリップフロップを使用して実装される。データセレクタ２５０、マルチプレクサ２３０、アドレス・マルチプレクサ２０６は各々１組のＣＬＢ内部に存在するデータ選択回路を使用して実装するのが望ましい。最後に、ＡＯＵクロスバースイッチ２００は、望ましくは内側ループで前述した方法で実装する。ある種のアプリケーションにおいて、外側ループがＤＯＵ設定で内側ループがＡＯＵ構成、又はその逆のＩＳＡを用いるのが有利であることは当業者には理解されよう。例えば、結合文字列検索ＩＳＡは有利にも外側ループがＡＯＵ設定で内側ループがＤＯＵ設定を用いる。別の例として、ヒストグラム演算を実行するＩＳＡは有利にも外側ループがＤＯＵ設定で内側ループがＡＯＵ設定を用いることになる。
【０１４９】
有限再設定自在なハードウェア資源はＤＲＰＵ３２の各々の素子の間で割当てなければならない。再設定自在なハードウェア資源は個数が限られているので、例えば、ＩＦＵ６０に割当てる方法はＤＯＵ６２とＡＯＵ６４で実行可能な最大計算能力レベルに影響を与える。ＩＦＵ６０，ＤＯＵ６２，ＡＯＵ６４の間で再設定自在なハードウェア資源を割当てる方法は任意の時刻に実装しようとするＩＳＡの種類によって変化する。ＩＳＡの複雑さが増加するほど、多くの再設定自在なハードウェア資源をＩＦＵ６０に割当てて、増加した複雑な復号及び制御演算を容易にし、ＤＯＵ６２とＡＯＵ６４の間で利用できるもっと少ない再設定自在なハードウェア資源を残す必要がある。つまり、ＩＳＡが複雑になるとＤＯＵ６２とＡＯＵ６４から実現できる最大の計算能力が減少する。一般に、外側ループＩＳＡは内側ループＩＳＡより非常に多い命令を有するので、これの実装は復号及び制御回路に関して顕著に複雑になる。例えば、汎用ＡＯＵ６４ビット処理装置を定義する外側ループＩＳＡは専らデータ圧縮専用の内側ループＩＳＡに比べて非常に多くの命令を有する。
【０１５０】
図１７（ａ）を参照すると、ＩＦＵ６０，ＤＯＵ６２，ＡＯＵ６４の間で外側ループＩＳＡについて再設定自在なハードウェア資源の割当て例を示す図が図示してある。外側ループＩＳＡについて再設定自在なハードウェア資源の割当ての例では、ＩＦＵ６０，ＤＯＵ６２，ＡＯＵ６４には各々利用できる再設定自在なハードウェア資源のほぼ１／３が割当てられている。ＤＲＰＵ３２を内側ループＩＳＡの実現のために再設定すべき場合には、内側ループＩＳＡでサポートされる命令数とアドレスの種類が限られているので、ＩＦＵ６０とＡＯＵ６４の実装にはもっと少ない再設定自在なハードウェア資源が必要である。
【０１５１】
ここで、図１７（ｂ）も参照すると、ＩＦＵ６０，ＤＯＵ６２，ＡＯＵ６４の間で内側ループＩＳＡに再設定自在なハードウェア資源の割当てを行なう例を示す略図が図示してある。図示した内側ループＩＳＡのための再設定自在なハードウェア資源割当て例では、ＩＦＵ６０は再設定自在なハードウェア資源の５〜１０％を用いて実現し、ＡＯＵ６４は再設定自在なハードウェア資源の１０〜２５％を用いて実現している。つまり、およそ７０〜８０％の再設定自在なハードウェア資源がＤＯＵ６２の実装に利用できる。これは、内側ループＩＳＡに関連したＤＯＵ６２の内部構造がもっと複雑化することがあり、そのため外側ループＩＳＡに関連するＤＯＵ６２の内部構造より有意に高い能力が提供されることを意味している。
【０１５２】
別の実施の形態において、ＤＯＵ６２又はＡＯＵ６４の何れかをＤＲＰＵ３２が排除し得ることを当業者は理解されよう。例えば、別の実施の形態においてＤＲＰＵ３２はＡＯＵ６４を含まないことがある。ＤＯＵ６２はデータとアドレスの両方に対する演算を行なう必要がある。考察している特定のＤＲＰＵの実施の形態とは無関係に、有限個の再設定自在なハードウェア資源を割当ててＤＲＰＵ３２の素子を実現する必要がある。再設定自在なハードウェア資源は、利用可能な再設定自在なハードウェア資源の全空間に対して、最適又はほぼ最適な性能が現在考察しているＩＳＡで実現されるように割当てるのが望ましい。
【０１５３】
ＩＦＵ６０，ＤＯＵ６２，ＡＯＵ６４の各々の素子の詳細な構造が前述の実施の形態に制限されないことが当業者には理解されよう。任意のＩＳＡについて、対応する設定データセットを、ＩＦＵ６０，ＤＯＵ６２，ＡＯＵ６４の内部の各々の素子の内部構造が利用できる再設定自在なハードウェア資源に対して最大限の計算能力となるように定義するのが望ましい。
【０１５４】
図１８を参照すると、Ｔマシン１４の好適な実施の形態のブロック図が図示してある。Ｔマシン１４は第２の局部時刻ユニット３００、共通インタフェース及び制御ユニット３０２、１組の相互接続Ｉ／Ｏユニット３０４を含む。第２の局部時刻ユニット３００はＴマシンのマスター・タイミング入力を形成するタイミング入力を有する。共通インタフェース及び制御ユニット３０２は第２のタイミング信号線３１０経由で第２の局部時刻ユニット３００のタイミング出力に接続したタイミング入力と、アドレス線４４へ接続したアドレス出力と、メモリＩ／Ｏ線４６へ接続した第１の双方向データポートと、外部制御線４８へ接続した双方向制御ポートと、メッセージ転送線３１２経由で存在する各々の相互接続Ｉ／Ｏユニット３０４の双方向データポートへ接続した第２の双方向データポートを有する。各々の相互接続Ｉ／Ｏユニット３０４は３１４経由でＧＰＩＭ１６へ接続した入力と、メッセージ出力線３１６経由でＧＰＩＭ１６へ接続した出力とを有する。
【０１５５】
Ｔマシン１４内部の第２の局部時刻ユニット３００はマスタ時刻ベースユニット２２からのマスタタイミング信号を受信し、第２の局部タイミング信号を生成する。第２の局部時刻ユニット３００は第２の局部タイミング信号を共通インタフェース及び制御ユニット３０２へ供給することで、これが存在しているＴマシン１４のタイミング基準を提供する。望ましくは、第２の局部タイミング信号はマスタタイミング信号と位相同期する。システム１０内部で、各々のＴマシンの第２の局部時刻ユニット３００は望ましくは同一周波数で動作する。別の実施の形態において、１つ又はそれ以上の第２の局部時刻ユニット３００が別の周波数で動作し得ることは当業者には理解されよう。第２の局部時刻ユニット３００は望ましくはＣＬＢによるフェーズロック検出回路を含む通常のフェーズロック周波数変換回路を用いて実現する。当業者には別の実施の形態において第２の局部時刻ユニット３００がクロック分配ツリーの一部として実現し得ることが理解されよう。
【０１５６】
共通インタフェース及び制御ユニット３０２はこれの対応するＳマシン１２と指定した相互接続Ｉ／Ｏユニット３０４の間でメッセージ転送を指示する。ここでメッセージは命令とおそらくはデータも含む。好適な実施の形態において、指定した相互接続Ｉ／Ｏユニット３０４は、システム１０の内部又は外部にある何らかのＴマシン１４又はＩ／ＯＴマシン１８の内部に存在し得る。本発明において各々の相互接続Ｉ／Ｏユニット３０４は相互接続Ｉ／Ｏユニット３０４を独自に識別する相互接続アドレスを割当てるのが望ましい。任意のＴマシン内部の相互接続Ｉ／Ｏユニット３０４の相互接続アドレスは対応するＳマシンのアーキテクチャ記述メモリ１０１に記憶される。
【０１５７】
共通インタフェース及び制御ユニット３０２はメモリＩ／Ｏ線４６と外部制御線４８各々を経由して対応するＳマシン１２からデータと命令を受信する。望ましくは、各々の受信した命令は標的相互接続アドレスと、実行すべき演算の特定の種類を指定する命令コードを含む。好適な実施の形態において、命令コードによって独自に識別される演算の種類としては、
１）データ読込演算、
２）データ書込演算、
３）割込信号転送、
が含まれる。標的相互接続アドレスはデータと命令を転送すべき標的相互接続Ｉ／Ｏユニット３０４を識別する。望ましくは、共通インタフェース及び制御ユニット３０２は各々の命令と何らかの関連するデータを従来の方法で１組のパケット化したメッセージとして転送し、各々のメッセージには標的相互接続アドレスと命令コードを含む。
【０１５８】
対応するＳマシン１２からデータと命令を受信する他に、共通インタフェース及び制御ユニット３０２はメッセージ転送線３１２に接続された各々の相互接続Ｉ／Ｏユニット３０４からメッセージを受信する。好適な実施の形態において、共通インタフェース及び制御ユニット３０２は関連メッセージのグループを単一の命令とデータのシーケンスに変換する。命令がこれに対応するＳマシン１２内部のＤＲＰＵ３２に向けられたものであれば、共通インタフェース及び制御ユニット３０２は外部制御線４８経由で命令を発行する。命令がこれに対応するＳマシン１２内部のメモリ３４に向けられたものであれば、共通インタフェース及び制御ユニット３０２は外部制御線４８経由で適切なメモリ制御信号とアドレス線４４経由でメモリアドレス信号とを発行する。データはメモリＩ／Ｏ線４６経由で転送される。好適な実施の形態において、共通インタフェース及び制御ユニット３０２はＡＮＳＩ／ＩＥＥＥ規格１５９６−１９９２で定義された従来のＳＣＩスイッチングユニットで実行されるのと同様の演算を実装するためのＣＬＢによる回路を含む。
【０１５９】
各々の相互接続Ｉ／Ｏユニット３０４は共通インタフェース及び制御ユニット３０２からメッセージを受信して、共通インタフェース及び制御ユニット３０２から受信した制御信号の指示に従い、メッセージをＧＰＩＭ１６経由で他の相互接続Ｉ／Ｏユニット３０４へ転送する。好適な実施の形態において、相互接続Ｉ／Ｏユニット３０４はＡＮＳＩ／ＩＥＥＥ規格１５９６−１９９２に定義されたＳＣＩノードに基づいている。図１９を参照すると、相互接続Ｉ／Ｏユニット３０４の好適な実施の形態のブロック図が図示してある。相互接続Ｉ／Ｏユニット３０４はアドレス・デコーダ３２０、入力ＦＩＦＯバッファ３２２、バイパスＦＩＦＯバッファ３２４、出力ＦＩＦＯバッファ３２６、マルチプレクサ３２８を含む。アドレス・デコーダ３２０は相互接続Ｉ／Ｏユニットの入力を構成する入力と、入力ＦＩＦＯバッファ３２２に接続された第１の出力と、バイパスＦＩＦＯバッファ３２４に接続された第２の出力とを有する。入力ＦＩＦＯバッファ３２２はメッセージ転送線３１２へ接続されて共通インタフェース及び制御ユニット３０２へメッセージを転送するための出力を有する。出力ＦＩＦＯバッファ３２６はメッセージ転送線３１２へ接続されて共通インタフェース及び制御ユニット３０２からメッセージを受信するための入力と、マルチプレクサ３２８の第１の入力に接続された出力を有する。出力ＦＩＦＯバッファ３２６はマルチプレクサ３２８の第２の入力に接続された出力を有する。最後に、マルチプレクサ３２８はメッセージ転送線３１２へ接続された制御入力と、相互接続Ｉ／Ｏユニットの出力を構成する出力とを有する。
【０１６０】
相互接続Ｉ／Ｏユニット３０４はアドレス・デコーダ３２０の入力でメッセージを受信する。アドレス・デコーダ３２０は受信したメッセージで指定されている標的相互接続アドレスがこれの存在する相互接続Ｉ／Ｏユニット３０４の相互接続アドレスと同一かを判定する。その場合、アドレス・デコーダ３２０は入力ＦＩＦＯバッファ３２２へメッセージを転送する。それ以外の場合、アドレス・デコーダ３２０はバイパスＦＩＦＯバッファ３２４へメッセージを転送する。好適な実施の形態において、アドレス・デコーダ３２０はＩＯＢとＣＬＢを用いて実装されたデコーダとデータ・セレクタを含む。
【０１６１】
入力ＦＩＦＯバッファ３２２は、これの入力で受信したメッセージをメッセージ転送線３１２に転送する従来のＦＩＦＯバッファである。バイパスＦＩＦＯバッファ３２４と出力ＦＩＦＯバッファ３２６の双方はこれらの入力で受信したメッセージをマルチプレクサ３２８へ転送する従来のＦＩＦＯバッファである。マルチプレクサ３２８はバイパスＦＩＦＯバッファ３２４から受信したメッセージ又は出力ＦＩＦＯバッファ３２６から受信したメッセージの何れかを、制御入力で受信した制御信号に従ってＧＰＩＭ１６へ転送する従来のマルチプレクサである。好適な実施の形態において、入力ＦＩＦＯバッファ３２２、バイパスＦＩＦＯバッファ３２４、出力ＦＩＦＯバッファ３２６の各々は１組のＣＬＢを用いて実装する。マルチプレクサ３２８は望ましくは１組のＣＬＢとＩＯＢを用いて実装する。
【０１６２】
図２０を参照すると、Ｉ／ＯＴマシン１８の好適な実施の形態のブロック図が図示してある。Ｉ／ＯＴマシン１８は第３の時刻ユニット３６０、共通カスタムインタフェース及び制御ユニット３６２、相互接続Ｉ／Ｏユニット３０４を含む。第３の時刻ユニット３６０はＩ／ＯＴマシンのマスタタイミング入力を構成するタイミング入力を有する。相互接続Ｉ／Ｏユニット３０４は３１４経由でＧＰＩＭ１６へ接続された入力と、メッセージ出力線３１６経由でＧＰＩＭ１６へ接続された出力を有する。共通カスタムインタフェース及び制御ユニット３６２は望ましくは第３のタイミング信号線３７０経由で第３の時刻ユニット３６０のタイミング出力へ接続されたタイミング入力、相互接続Ｉ／Ｏユニット３０４の双方向データポートへ接続された第１の双方向データポート、及びＩ／Ｏ装置２０への１組の接続を有する。好適な実施の形態において、Ｉ／Ｏ装置２０への接続の組はＩ／Ｏ装置２０の双方向データポートへ接続した第２の双方向データポートと、Ｉ／Ｏ装置２０のアドレス入力へ接続したアドレス出力と、Ｉ／Ｏ装置２０の双方向制御ポートへ接続した双方向制御ポートを含む。Ｉ／Ｏ装置２０への接続は共通カスタムインタフェース及び制御ユニット３６２が接続されているＩ／Ｏ装置２０の種類に依存することは当業者には容易に理解されよう。
【０１６３】
第３の時刻ユニット３６０は、マスタ時刻ユニット２２からのマスタタイミング信号を受信して第３の局部タイミング信号を生成する。第３の時刻ユニット３６０は共通カスタムインタフェース及び制御ユニット３６２へ第３の局部タイミング信号を供給するので、これが存在するＩ／ＯＴマシンにタイミング基準を提供することになる。好適な実施の形態において、第３の局部タイミング信号はマスタタイミング信号と位相同期している。各々のＩ／ＯＴマシンの第３の時刻ユニット３６０は望ましくは同一の周波数で動作する。別の実施の形態において、１つ又はそれ以上の第３の時刻ユニット３６０が別の周波数で動作することがある。第３の時刻ユニット３６０は、望ましくはＣＬＢによるフェーズロック検出回路を含む従来のフェーズロック周波数変換回路を用いて実装する。第１と第２の局部時刻ユニット３０、３００の場合と同様の方法で、第３の時刻ユニット３６０は別の実施の形態においてクロック分散ツリーの一部として実装することができる。
【０１６４】
Ｉ／ＯＴマシン１８内部の相互接続Ｉ／Ｏユニット３０４の構造と機能はＴマシン１４について前述したのと同一が望ましい。Ｉ／ＯＴマシン１８内部の相互接続Ｉ／Ｏユニット３０４は任意のＴマシン１４内部の相互接続Ｉ／Ｏユニット３０４の各々についてと同様の方法で独自の相互接続アドレスが割当てられる。
【０１６５】
共通カスタムインタフェース及び制御ユニット３６２はこれが接続しているＩ／Ｏ装置２０と相互接続Ｉ／Ｏユニット３０４の間でのメッセージ転送を指示し、ここでメッセージは命令とおそらくはデータとを含む。共通カスタムインタフェース及び制御ユニット３６２はこれに対応するＩ／Ｏ装置２０からデータと命令とを受信する。望ましくは、Ｉ／Ｏ装置２０から受信した各々の命令は標的相互接続アドレスと、実行しようとする演算の特定の種類を指定する命令コードとを含む。好適な実施の形態において、命令コードで独自に識別される演算の種類は、
１）データ要求、
２）データ転送確認、
３）割込信号転送、
を含む。標的相互接続アドレスはシステム１０内部にあってデータと命令を転送しようとする標的相互接続Ｉ／Ｏユニット３０４を識別する。望ましくは、共通カスタムインタフェース及び制御ユニット３６２は従来の方法で１組のパケット化したメッセージとして各々の命令と全ての関連データを転送し、ここで各々のメッセージは標的相互接続アドレスと命令コードとを含む。
【０１６６】
対応するＩ／Ｏ装置２０からデータと命令を受信する以外に、共通カスタムインタフェース及び制御ユニット３６２は関連する相互接続Ｉ／Ｏユニット３０４からメッセージを受信する。好適な実施の形態において、共通カスタムインタフェース及び制御ユニット３６２は対応するＩ／Ｏ装置２０がサポートする通信プロトコルに従って関連メッセージのグループを単一の命令とデータのシーケンスに変換する。好適な実施の形態において、共通カスタムインタフェース及び制御ユニット３６２はＡＮＳＩ／ＩＥＥＥ規格１５９６−１９９２で定義されている従来のＳＣＩスイッチング・ユニットで実行するのと同様の演算を実行するためにＣＬＢによる回路へ接続したＣＬＢによるＩ／Ｏ装置の制御装置を含む。
【０１６７】
ＧＰＩＭ１６は、相互接続Ｉ／Ｏユニット３０４の間で２点間系列メッセージ転送を容易にする従来の相互接続メッシュである。好適な実施の形態において、ＧＰＩＭ１６は配線によるｋ-ary ｎ-cubeスタティック相互接続ネットワークである。図２１を参照すると、汎用相互接続マトリックス１６の好適な実施の形態のブロック図が図示してある。図２１において、ＧＰＩＭ１６はトロイダル相互接続メッシュ又は同等な、ｋ-ary ２-cubeで、複数の第１の通信チャンネル３８０と複数の第２の通信チャンネル３８２を含む。各々の第１の通信チャンネル３８０は、各々の第２の通信チャンネル３８２と同様に、複数のノード接続サイト３８４を含む。システム１０の各々の相互接続Ｉ／Ｏユニット３０４は望ましくはＧＰＩＭ１６に接続されて、メッセージ入力線３１４とメッセージ出力線３１６が任意の通信チャンネル３８０，３８２内で連続したノード接続サイト３８４に接続するようにする。好適な実施の形態において、各々のＴマシン１４は前述した方法で第１の通信チャンネル３８０に接続した相互接続Ｉ／Ｏユニット３０４と、第２の通信チャンネル３８２に接続した相互接続Ｉ／Ｏユニット３０４とを含む。
【０１６８】
Ｔマシン１４内の共通インタフェース及び制御ユニット３０２は望ましくは第１の通信チャンネル３８０に接続したこれの相互接続Ｉ／Ｏユニット３０４と第２の通信チャンネル３８２に接続したこれの相互接続Ｉ／Ｏユニット３０４との間での情報の転送を容易にする。つまり、図２１で３８０ｃと標記してある第１の通信チャンネルに接続した相互接続Ｉ／Ｏユニット３０４と、図２１で３８２ｃと標記してある第２の通信チャンネルに接続した相互接続Ｉ／Ｏユニット３０４とを有するＴマシン１４について、このＴマシンの共通インタフェース及び制御ユニット３０２は第１と第２の通信チャンネル３８０ｃ、３８２ｃのこの組み合せの間での情報の転送を容易にする。
【０１６９】
ＧＰＩＭ１６は相互接続Ｉ／Ｏユニット３０４の間で並列に複数メッセージの転送を容易にする。図２１に図示した２次元ＧＰＩＭ１６では、各々のＴマシン１４は望ましくは第１の通信チャンネル３８０について単一の相互接続Ｉ／Ｏユニット３０４、また第２の通信チャンネル３８２について単一の相互接続Ｉ／Ｏユニット３０４を含む。ＧＰＩＭ１６が２より大きな次数を有するような実施の形態において、Ｔマシン１４は望ましくは２つ以上の相互接続Ｉ／Ｏユニット３０４を含むことが当業者には容易に理解されよう。望ましくはＧＰＩＭ１６はデータパスが１６ビット幅のｋ-ary ２-cubeとして実装する。
【０１７０】
前述の説明において、本発明の各種素子は再設定可能なハードウェア資源を用いて実装するのが望ましい。再プログラム可能な論理装置のメーカーは再プログラム可能な又は再設定可能なハードウェア資源を用いる従来のデジタルハードウェアを実装するための公開ガイドラインを典型的には提供している。例えば、１９９４年Ｘｉｌｉｎｘプログラマブル論理回路データブック（ジリンクス社、カリフォルニア州サンノゼ）は以下のようなアプリケーションノートを含む：アプリケーションノートＸＡＰＰ００５．００２「レジスタによるＦＩＦＯ」、アプリケーションノートＸＡＰＰ０４４．００「高性能ＲＡＭベースＦＩＦＯ」、アプリケーションノートＸＡＰＰ０１３．００１「ＸＣ４００で専用キャリー論理回路を使用する」、アプリケーションノートＸＡＰＰ０１８．０００「ＸＣ４０００加算器とカウンタの性能予測」、アプリケーションノートＸＡＰＰ０２８．００１「フェーズ・ロックド・ループ用周波数／位相コンパレータ」、アプリケーションノートＸＡＰＰ０３６．００１「４ポートＤＲＡＭコントローラ」、アプリケーションノートＸＡＰＰ０３９．００１「Ｉ／ＯＴマシン１８ビットパイプライン化アキュムレータ」。さらなるジリンクス社による出版物は「ＸＣＥＬＬ、ジリンクス・プログラマブル論理回路ユーザ向け季刊ジャーナル」の特徴を含む。例えば、高速整数乗算器の実施を詳細に述べた記事が１９９４年第３四半期第１４号に掲載されている。
【０１７１】
本明細書で説明したシステム１０は複数ＩＳＡを動的に実現するためのスケーラブル・並列コンピュータのアーキテクチャである。個別のＳマシン１２はどれも他のＳマシン１２又はホスト計算機等の外部ハードウェア資源とは無関係にそれだけでコンピュータ・プログラム全体を実行可能である。どのＳマシン１２においても複数ＩＳＡはプログラム実行中に再設定割込みに応じて、及び／又はプログラムに埋込まれた再設定指示に応じて、時間的に順次実装される。システム１０は望ましくは複数Ｓマシン１２を含むので、複数プログラムが同時に実行されるのが望ましく、ここで、各々のプログラムは独立したもので有り得る。つまり、システム１０は複数Ｓマシン１２を含むのが望ましいため、システムの初期化又は再設定中を除き、あらゆる時点で複数ＩＳＡが同時に（即ち、並列に）実装される。これは、任意の時刻に、複数の組のプログラム命令が同時に実行され、各々のプログラム命令の組は対応するＩＳＡに従って実行される。このような各々のＩＳＡは独自のもので有り得る。
【０１７２】
Ｓマシン１２はＴマシン１４、ＧＰＩＭ１６、及び各々のＩ／ＯＴマシン１８を経由して相互にまたＩ／Ｏ装置２０と通信する。各々のＳマシン１２は独立して動作可能なコンピュータそのものであるが、全てのＳマシン１２は他のＳマシン１２又はシステム１０全体に対するマスタＳマシン１２として機能し、他のＳマシン１２、１つ又はそれ以上のＧＰＩＭ１６、１つ又はそれ以上のＩ／ＯＴマシン１８、及び１つ又はそれ以上のＩ／Ｏ装置２０にデータ及び／又は命令を送信することができる。
【０１７３】
本発明のシステム１０は空間的時間的に１つ又はそれ以上のデータ並列の下位問題に分割することのできるような問題で特に有用である。例えば、画像処理、医学データ処理、色較正の照合、データベース計算、文書処理、関連検索エンジン、ネットワーク・サーバ等。大きなオペランドのアレイを有する計算問題では、アルゴリズムを適用して並列計算技術により効率的な計算の高速化を提供しようとする際にデータ並列が存在する。データ並列問題は既知の複雑さ、即ちＯ（ｎ＾ｋ）を含んでいる。ｋは問題に依存する値である。例えば、画像処理についてｋ＝２で、医学データ処理についてｋ＝３である。本発明において、個別のＳマシン１２はプログラム命令グループの水準でデータ並列を発見するように用いるのが望ましい。システム１０は複数のＳマシン１２を含むので、システム１０は望ましくはプログラム全体の組の水準でデータ並列を発見するように用いる。
【０１７４】
本発明のシステム１０は、各々のＳマシン１２において命令処理ハードウェアを完全に再設定してこのようなハードウェアの計算能力をあらゆる任意の時点での計算要求に対して最適化する能力のため非常に大きな計算能力を提供する。各々のＳマシン１２は他のＳマシン１２とは独立して再設定することができる。システム１０は有利にも各々の設定データセット、即ち、各々のＩＳＡを本明細書で説明した再設定可能なハードウェアとソフトウェアの間のプログラムされた境界、又はインタフェースとして取扱う。本発明のアーキテクチャはさらに再設定可能なハードウェアの高次構造を、実際のシステムの指向に選択的に適合するようにして、例えば、命令処理に割込みが影響する方式、リアルタイム処理及び制御能力を加速する決定的遅延応答の必要性、障害取扱いに選択的に対応する必要性、を含む。
【０１７５】
他のコンピュータ・アーキテクチャとは対照的に、本発明はあらゆる時点でのシリコン資源の最大限の利用を教示するものである。本発明はあらゆる時点で所望のあらゆる大きさに、数千のＳマシン１２を含む超並列までも、増大することのできる並列計算機システムを提供する。このようなアーキテクチャの拡張性が可能なのは、Ｓマシンによる命令処理が意図的にＴマシンによるデータ通信と分離されていることによる。この命令処理／データ通信の分離パラダイムはデータ並列計算に非常に好適である。Ｓマシンハードウェアの内部構造は命令の時間的な流れに対して最適化するのが望ましく、一方でＴマシンハードウェアの内部構造は効率的データ通信に最適化するのが望ましい。Ｓマシン１２の組とＴマシン１４の組は各々がデータ並列計算作業の時空間分割において分離可能、設定可能な要素である。本発明では、将来再設定可能なハードウェアを検索してさらに大きな計算能力を有するシステムを構築し、同時に全体として本明細書に説明した構造を維持することができる。言い換えれば、本発明のシステム１０は技術的にスケーラブルである。事実上全ての現在再設定可能な論理装置はメモリを用いた相補型金属酸化物半導体（ＣＭＯＳ）技術である。装置の容量の増加は半導体メモリ技術傾向に追従する。将来のシステムにおいて、Ｓマシン１２を較正するために使用する再設定可能な論理装置は本明細書で説明したような内側ループと外側ループＩＳＡのパラメータに従って内部ハードウェア資源の分割を有する。さらに大きな再設定可能な論理装置は単一の装置内でさらに多くのデータ並列計算作業を実行する能力を提供するだけである。図１３を参照して前述したＤＯＵ６３の第２の実施の形態で、例えば、大きな乗算／積算ユニット１９４は大きな画像カーネルの寸法に対応する。本発明が提供する技術的な拡張性がＣＭＯＳによる装置に制限されるものではなく、また、ＦＰＧＡによる実施に制限されるものでもないことが当業者には理解されよう。つまり、本発明は再設定能力又は再プログラム能力を提供するために使用する特定の技術とは関係なく技術的拡張性を提供する。
【０１７６】
図２２を参照すると、スケーラブル、並列、動的に再設定可能な計算環境の好適な方法の流れ図が図示してある。望ましくは図２２の方法はシステム１０の各々のＳマシン１２内部で実行される。好適な方法は図２２のステップ１０００で始まり、再設定論理回路１０４がＩＳＡに対応する設定データセットを取出す。次にステップ１００２で、再設定論理回路１０４はステップ１００２で取出した設定データセットに従ってＩＦＵ６０、ＤＯＵ６２、ＡＯＵ６４内部の各々の素子を設定し、これによって現在検討中のＩＳＡの実装のためのＤＲＰＵハードウェア較正を作成する。ステップ１００２に続けて、割込論理回路１０６がアーキテクチャ記述メモリ１０１に記憶されている割込応答信号を取出し、ステップ１００４で割込みに現在のＤＲＰＵ設定がどのように応答するかを定義する遷移制御信号の対応する組を生成する。ＩＳＳ１００は続けてステップ１００６でプログラム状態情報を初期化し、この後ＩＳＳ１００はステップ１００８で命令実行サイクルを初期化する。
【０１７７】
次に、ステップ１０１０で、ＩＳＳ１００又は割込論理回路１０６は再設定が必要か判定する。ＩＳＳ１００はプログラム実行中に再設定指示が選択された場合に再設定が必要なことを判定する。割込論理回路１０６は再設定割込みに応答して再設定が必要なことを判定する。再設定が必要な場合、好適な方法はステップ１０１２に進み、再設定ハンドラはプログラム状態情報を保存する。望ましくは、プログラム状態情報は現在のＤＲＰＵ設定に対応する設定データセットの基準を含む。ステップ１０１２ＮＯＲと、好適な方法はステップ１０００に戻り再設定指示又は再設定割込みによって参照される次の設定データセットを取出す。
【０１７８】
ステップ１０１０で再設定が必要とされない場合、割込論理回路１０６はステップ１０１４で非再設定割込みがサービスを要求するか判定する。その場合、ＩＳＳ１００は次にステップ１０２０で命令実行サイクル内で現在のＩＳＳ状態から割込サービス状態への遷移が遷移制御信号に基づいて許容されるかを判定する。割込サービス状態への状態遷移が許容されない場合、ＩＳＳ１００は命令実行サイクル内で次の状態に進み、ステップ１０２０へ復帰する。遷移制御信号が命令実行サイクル内で現在のＩＳＳ状態から割込サービス状態への状態遷移を許容する場合、ＩＳＳ１００は次にステップ１０２４で割込サービスへ進む。ステップ１０２４で、ＩＳＳ１００はプログラム状態情報を保存し割込みをサービスするためプログラム命令を実行する。ステップ１０２４に続いて、好適な方法はステップ１００８に戻り、現在の命令実行サイクルが完了していなければこれを再開し、又は次の命令実行サイクルを開始する。
【０１７９】
非再設定割込みがステップ１０１４でサービスを必要としない場合、好適な方法はステップ１０１６に進み現在のプログラムの実行が完了するか判定する。現在のプログラムの実行が継続する場合、好適な方法はステップ１００８に戻り、別の命令実行サイクルを開始する。それ以外の場合、好適な方法は終了する。
【０１８０】
本発明の教示は再プログラム可能又は再設定可能な計算環境のためのシステム及び方法とは明らかに異る。特に、本発明はダウンローダブル・マイクロコード・アーキテクチャと等価ではない。これは、一般に、このようなアーキテクチャが非再設定可能な制御手段と非再設定可能なハードウェアに依存しているためである。本発明はまた、１組の再設定可能なハードウェア資源が非再設定可能なホストプロセッサ又はホストシステムに接続されるような、Ａttached Ｒeconfigurable Ｐrocessor（ＡＲＰ）システムとも明らかに異なる。ＡＲＰ装置はある種のプログラム命令を実行するためにホストに依存する。従って、利用可能なシリコンの組み合せはプログラム実行の時間枠で最大限に利用されないが、これは、ホスト又はＡＲＰ装置がデータに対して動作する時にＡＲＰ装置のシリコン資源又はホストが各々アイドル状態又は非効率的に使用されるためである。対照的に、各々のＳマシン１２はプログラム全体が容易に実行できるような独立した計算機である。複数Ｓマシン１２は望ましくはプログラムを同時に実行する。従って、本発明は、個別のＳマシン１２での単一のプログラム実行と、システム１０全体での複数プログラム実行の両方について、全ての時点でシリコン資源の最大限の利用を教示するものである。
【０１８１】
ＡＲＰ装置は特定時刻に特定アルゴリズムに対する計算アクセラレータを提供し、特定のアルゴリズムに対して最適な相互接続が行なわれている１組のゲートとして実現される。汎用演算、例えば、管理命令実行等の再設定可能なハードウェア資源の使用はＡＲＰシステムでは回避される。さらに、ＡＲＰシステムは任意の１組の相互接続ゲートを容易に再利用できる資源として扱うことがない。逆に、本発明は、あらゆる特定の時刻に計算要求に最も適合した命令実行モデルに従って、命令実行の効率的な管理を行なうように設定された動的に再設定可能な処理手段を教示する。各々のＳマシン１２は複数の容易に再利用できる資源、例えばＩＳＳ１００、割込論理回路１０６、記憶・配列論理１５２等を含む。本発明は相互接続されたゲートの水準ではなくＣＬＢ、ＩＯＢのグループの水準で再設定可能な論理資源及び再設定可能な相互接続の使用を教示する。本発明は単一のアルゴリズムで有用な単一の有用なゲート接続方式を教示するのではなく、計算問題のクラス全体に対して演算を実行するのに有用な再設定可能な高次論理設計製造の使用を教示するものである。
【０１８２】
一般に、ＡＲＰシステムは特定のアルゴリズムを１組の相互接続されたゲートに変換する方向に向かっている。ある種のＡＲＰシステムは高次命令を最適なゲートレベルのハードウェア構成にコンパイルしようと試み、これは一般にＮＰハードの問題である。対照的に、本発明は、高次プログラム命令を非常に簡単な方法で可変ＩＳＡに従ってアセンブリ言語命令へとコンパイルする動的に再設定可能な計算環境のためのコンパイラの使用を教示する。
【０１８３】
ＡＲＰ装置は一般にそれ自身のホストプログラムをデータとして取扱う又はそれ自身を状況に適合させることができない。これと対照的にシステム１０の各々のＳマシンはそれ自体のプログラムをデータとして取扱うことができるので、容易に状況に適合することができる。システム１０はそれ自身のプログラムの実行により自分自身を簡単にシミュレートできる。本発明はさらにそれ自身のコンパイラをコンパイルする能力も有する。
【０１８４】
本発明において、単一のプログラムは第１のＩＳＡに属する第１のグループの命令と、第２のＩＳＡに属する第２のグループの命令と、さらに別のＩＳＡに属する第３のグループの命令、等を含む。本明細書で教示したアーキテクチャは、命令が属するＩＳＡを実現するように実行時に設定されるハードウェアを用いて各々のグループの命令を実行する。同様の教示を提供する従来技術のシステムは存在しない。
【０１８５】
本発明は、さらに割込遅延、割込精度、プログラム可能な状態遷移イネーブル化が現在検討しているＩＳＡに併せて変化し得るような再設定可能な割込み方式も教示する。他の計算機システムでは同様の教示がみられない。本発明は、さらに再設定可能なデータパスビット幅、アドレスビット幅と、再設定可能な制御線幅を有するような、従来技術の計算機システムとは対照的な計算機システムを教示する。
【０１８６】
本発明は、幾つかの好適な実施の形態を参照して説明したが、各種の変更を提供し得ることが当業者には理解されよう。好適な実施の形態に対する変化及び変更は特許請求の範囲によってのみ制限されるべき本発明により提供されるものである。
【図面の簡単な説明】
【図１】本発明により製作したスケーラブル、並列、動的に再設定自在な計算環境のためのシステムの好適な実施の形態のブロック図である。
【図２】本発明のＳマシンの好適な実施の形態のブロック図である。
【図３】再設定指示を含むプログラムリストを示す説明図である。
【図４】プログラム命令のシーケンスのコンパイル中に実行する従来技術のコンパイル演算の流れ図である。
【図５】動的に再設定自在な計算環境のためのコンパイラで実行する好適なコンパイル演算の流れ図である。
【図６】動的に再設定自在な計算環境のためのコンパイラで実行する好適なコンパイル演算の流れ図である。
【図７】本発明の動的に再設定自在処理ユニットの好適な実施の形態のブロック図である。
【図８】本発明の命令フェッチユニットの好適な実施の形態のブロック図である。
【図９】本発明の命令状態シーケンサで支持される好適な状態セットを示す状態図である。
【図１０】本発明の割込論理回路で支持される好適な状態セットを示す状態図である。
【図１１】本発明のデータ演算ユニットの好適な実施の形態のブロック図である。
【図１２】汎用外側ループ命令セットアーキテクチャの実装のために設定したデータ演算ユニットの第１の実施の形態のブロック図である。
【図１３】内側ループ命令セットアーキテクチャの実装のために設定したデータ演算ユニットの第２の実施の形態のブロック図である。
【図１４】本発明のアドレス演算ユニットの好適な実施の形態のブロック図である。
【図１５】汎用外側ループ命令セットアーキテクチャの実装のために設定したアドレス演算ユニットの第１の実施の形態のブロック図である。
【図１６】内側ループ命令セットアーキテクチャの実装のために設定したアドレス演算ユニットの第２の実施の形態のブロック図である。
【図１７】（ａ）は外側ループ命令セットアーキテクチャのための命令フェッチユニット、データ演算ユニット、アドレス演算ユニットの間の再設定可能なハードウェア資源の割当てを示す略図、（ｂ）は内側ループ命令セットアーキテクチャのための命令フェッチユニット、データ演算ユニット、アドレス演算ユニットの間の再設定可能なハードウェア資源の割当てを示す略図である。
【図１８】本発明のＴマシンの好適な実施の形態のブロック図である。
【図１９】本発明の相互接続Ｉ／Ｏユニットのブロック図である。
【図２０】本発明のＩ／ＯＴマシンの好適な実施の形態のブロック図である。
【図２１】本発明の汎用相互接続マトリックスの好適な実施の形態のブロック図である。
【図２２】本発明によるスケーラブル、並列、動的に再設定自在な計算環境の好適な方法の流れ図である。
【符号の説明】
１０      計算環境のためのシステム
１６      相互接続手段
３２      動的に再設定自在な処理ユニット
６０      命令フェッチユニット
１００    命令状態シーケンサ
１０１    アーキクチャ記述メモリ
１０４    割込状態マシン
【図１】
0003785218.tif 000002
【図２】
0003785218.tif 000003
【図３】
0003785218.tif 000004
【図４】
0003785218.tif 000005
【図５】
0003785218.tif 000006
【図６】
0003785218.tif 000007
【図７】
0003785218.tif 000008
【図８】
0003785218.tif 000009
【図９】
0003785218.tif 000010
【図１０】
0003785218.tif 000011
【図１１】
0003785218.tif 000012
【図１２】
0003785218.tif 000013
【図１３】
0003785218.tif 000014
【図１４】
0003785218.tif 000015
【図１５】
0003785218.tif 000016
【図１６】
0003785218.tif 000017
【図１７】
0003785218.tif 000018
【図１８】
0003785218.tif 000019
【図１９】
0003785218.tif 000020
【図２０】
0003785218.tif 000021
【図２１】
0003785218.tif 000022
【図２２】
0003785218.tif 000023