(57)【特許請求の範囲】
【請求項１】
動的再プログラマブル処理マシンのデータパケットのためのローカルメモリ宛先を指定するメタアドレス指定アーキテクチャであって、
第１のメモリ装置と、
前記第１のメモリ装置が結合され、所定の命令を受け取ると、受け取った該命令が遠隔演算情報を含む遠隔演算を要求する命令かを判定し、該命令が遠隔演算情報を含む遠隔演算を要求する命令であると判定した場合に、該命令に含まれる遠隔演算情報を前記第１のメモリ装置に記憶し、該遠隔演算情報が記憶されている該第１のメモリ装置におけるメモリアドレスを含む無条件命令を生成する動的再プログラマブル処理マシンと、
第１の前記動的再プログラマブル処理マシンから前記無条件命令を受け取り、該無条件命令に含まれるメモリアドレスに基づいて前記第１のメモリ装置から前記遠隔演算情報を検索し、該遠隔演算情報に基づき生成されるデータパケットの送信先のアドレスを示す目的地理アドレスと、該送信先において該データパケットを書き込む第２のメモリ装置のアドレスを示す目的ローカルメモリアドレスとを含むメタアドレスを該遠隔演算情報に基づいて生成し、該メタアドレスを含む該データパケットを該遠隔演算情報に基づいて生成するアドレス指定マシンと、
第１の前記アドレス指定マシンおよび前記データパケットの送信先として前記目的地理アドレスに示される第２の前記アドレス指定マシンに結合され、該第１のアドレス指定マシンで生成された前記データパケットを該第１のアドレス指定マシンから受け取って、該データパケットにおける前記メタアドレスに含まれる前記目的地理アドレスに応じて、該第１のアドレス指定マシンと該第２のアドレス指定マシンとの間で相互にデータをルーティングする相互結合装置と
を具備する動的再構成計算のためのメタアドレス指定アーキテクチャ。
【請求項２】
前記動的再プログラマブル処理マシンは、
前記受け取った命令が遠隔演算を要求する命令でない場合は、受け取った命令に従って処理を実行する請求項１記載の動的再構成計算のためのメタアドレス指定アーキテクチャ。
【請求項３】
前記第２のアドレス指定マシンは、
前記第１のアドレス指定マシンが生成した前記データパケットを受け取ると、該データパケットに含まれるメタアドレスを前記目的地理アドレスと前記目的ローカルメモリアドレスとに復号し、当該第２のアドレス指定マシンのアドレスを示す地理アドレスと復号した該目的地理アドレスとを比較するアドレス復号器と、
前記アドレス復号器による比較の結果、前記地理アドレスと前記目的地理アドレスとが一致する場合に、前記データパケットを第２の前記動的再プログラマブル処理マシンに伝送する制御装置と
を具備する請求項１または請求項２記載の動的再構成計算のためのメタアドレス指定アーキテクチャ。
【請求項４】
前記第２の動的再プログラマブル処理マシンに結合され、結合される該第２の動的再プログラマブル処理マシンについてのアドレスを示す地理アドレスを記憶するアーキテクチャ記述メモリ装置をさらに具備する請求項３記載の動的再構成計算のためのメタアドレス指定アーキテクチャ。
【請求項５】
前記第２のアドレス指定マシンが、入出力装置に結合された割込みハンドラをさらに含み、
前記割込みハンドラが、
割込み要求を識別するための識別装置と、
割込み要求の有効性を検証するために、識別した割込み要求を割込み要求の記憶されたリストと比較するためのコンパレータと、
記憶された割込み処理命令に従って有効性が確認された割込み要求を処理するための割込みロジックと、
を具備する請求項３記載の動的再構成計算のためのメタアドレス指定アーキテクチャ。
【請求項６】
メタアドレスが８０ビット幅であり、目的地理アドレスが１６ビット幅であり、ローカルアドレスが６４ビット幅である請求項１記載の動的再構成計算のためのメタアドレス指定アーキテクチャ。
【請求項７】
動的再プログラマブル処理マシンのデータパケットのためのローカルメモリ宛先を指定するメタアドレス指定方法であって、
所定の命令を受け取ると、受け取った該命令が遠隔演算情報を含む遠隔演算を要求する命令かを判定し、該命令が遠隔演算情報を含む遠隔演算を要求する命令であると判定した場合に、該命令に含まれる遠隔演算情報を第１のメモリ装置に記憶し、該遠隔演算情報が記憶されている該第１のメモリ装置におけるメモリアドレスを含む無条件命令を動的再プログラマブル処理マシンにより生成する無条件命令生成ステップと、
前記無条件命令生成ステップで生成された前記無条件命令を前記動的再プログラマブル処理マシンから受け取り、該無条件命令に含まれるメモリアドレスに基づいて前記第１のメモリ装置から前記遠隔演算情報を検索し、該遠隔演算情報に基づき生成されるデータパケットの送信先のアドレスを示す目的地理アドレスと、該送信先において該データを書き込む第２のメモリ装置のアドレスを示す目的ローカルメモリアドレスとを含むメタアドレスを該遠隔演算情報に基づいて生成し、該メタアドレスを含む該データパケットを該遠隔演算情報に基づいてアドレス指定マシンにより生成するデータパケット生成ステップと、
前記データパケット生成ステップで生成された前記データパケットを第１の前記アドレス指定マシンから受け取って、該データパケットにおける前記メタアドレスに含まれる前記目的地理アドレスに応じて、該第１のアドレス指定マシンと、前記データの送信先として該目的地理アドレスに示される第２の前記アドレス指定マシンとの間で相互にデータをルーティングするステップと
を具備する動的再構成計算のためのメタアドレス指定方法。
【請求項８】
前記無条件命令生成ステップで、前記動的再プログラマブル処理マシンは、
前記受け取った命令が遠隔演算を要求する命令でない場合は、受け取った命令に従って処理を実行する請求項７記載の動的再構成計算のためのメタアドレス指定方法。
【請求項９】
前記第２のアドレス指定マシンが、前記第１のアドレス指定マシンが生成した前記データパケットを受け取ると、該データパケットに含まれるメタアドレスを前記目的地理アドレスと前記目的ローカルメモリアドレスとに復号し、当該第２のアドレス指定マシンのアドレスを示す地理アドレスと復号した該目的地理アドレスとを比較するアドレス復号ステップと、
前記アドレス比較ステップによる比較の結果、前記地理アドレスと前記目的地理アドレスとが一致する場合に、前記データパケットを第２の前記動的再プログラマブル処理マシンに伝送する伝送ステップと
をさらに具備する請求項７または請求項８記載の動的再構成計算のためのメタアドレス指定方法。
【請求項１０】
前記第２の動的再プログラマブル処理マシンについてのアドレスを示す地理アドレスが、該第２の動的再プログラマブル処理マシンに結合されるアーキテクチャ記述メモリ装置に記憶される請求項９記載の動的再構成計算のためのメタアドレス指定方法。
【請求項１１】
前記第２のアドレス指定マシンが含む、入出力装置に結合された割込みハンドラが、割込み要求を識別する識別ステップと、
前記識別ステップで識別された前記割込み要求の有効性を検証するために、識別した割込み要求を割込み要求の記憶されたリストと比較する比較ステップと、
記憶された割込み処理命令に従って前期比各ステップの比較結果に基づき有効性が確認された割込み要求を処理するためのステップと
を具備する請求項９記載の動的再構成計算のためのメタアドレス指定方法。
【請求項１２】
メタアドレスが８０ビット幅であり、目的地理アドレスが１６ビット幅であり、ローカルアドレスが６４ビット幅である請求項７記載の動的再構成計算のためのメタアドレス指定方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般にコンピュータアーキテクチャに係り、特に、再構成計算のためのシステム及び方法、つまり、動的再構成計算のためのメタアドレス指定アーキテクチャ及び動的再構成計算のためのメタアドレス指定方法に関する。
【０００２】
本発明は、１９９５年４月１７日付で提出した米国特許Ｎｏ．５，７９４，０６２の分割出願である１９９８年２月２６日付で提出した「変更可能な内部ハードウェア編成を含む処理装置を用いた動的再構成計算のためのシステム及び方法」という名称の米国特許出願Ｎｏ．０９／０３１，３２３の米国一部継続出願に基づく優先権主張出願である。
【０００３】
【従来の技術】
コンピュータアーキテクチャの進展は、より優れた計算性能への要求によって推進されている。各種の計算問題を迅速かつ正確に解くには、一般に異なる種類の計算リソースが必要である。問題の種類が限られている場合には、検討中の種類の問題のために特に構築された計算リソースを用いることによって計算性能を向上させることができる。たとえば、デジタル信号処理（ＤＳＰ：Digital Signal Processing）ハードウェアを汎用コンピュータと併用すると、ある種の信号処理能力を大幅に向上させることができる。コンピュータ自体が検討中の種類の問題のために特別に構築されているときには、こうした特定の種類の問題について計算性能がさらに向上するか、または、利用可能な計算リソースと比べて、おそらくさらに最適化されたものとなる。現在の並列コンピュータ及び大規模並列コンピュータは、Ｏ（ｎ2 ）またはそれ以上に複雑な特殊な種類の問題に対する処理能力が優れており、これが上記の場合の例である。
【０００４】
優れた計算性能は必要ではあるが、その一方でシステム費用を最小限に抑える必要性と均衡させなければならず、また現在及び将来考えられるできるだけ広範囲な用途においてシステム生産性を最大限に高める必要性とも均衡させなければならない。一般に、特殊なハードウェアは汎用ハードウェアより高価であるため、限られた数種類の問題専用の計算リソースをコンピュータシステムに組込むことは、システム費用を低く抑えることに悪影響を与える。専用コンピュータを設計し生産することは、エンジニアリング（工学設計）に要する時間とハードウェアの費用の点からきわめて高価なものとなる。計算性能を高めるために専用ハードウェアを用いた場合、計算性能の必要度が変化すると性能上の利点は少なくなる。先行技術では、計算性能の必要度が変化すると、新しい専用ハードウェアまたは新しい専用システムが設計され、製造され、結果として望ましくないほど高額の再活用できない設計・製造費用が繰返し支出される。したがって、特定種類の問題専用の計算リソースを用いると、計算の必要度が変化した場合、利用可能なシリコンリソースを非効率に利用することになる。したがって、上記のような理由で専用ハードウェアを用いて計算性能を向上させようとする試みは望ましくない。
【０００５】
従来、再プログラマブルハードウェアまたは再構成ハードウェアを用いて計算性能を向上させ、また問題の種類の適用可能性を最大限に高めるさまざまな試みが行われてきた。最初のこのような先行技術のアプローチは、ダウンロード可能マイクロコードコンピュータアーキテクチャによるものである。ダウンロード可能マイクロアーキテクチャでは、固定された非再構成ハードウェアリソースの機能を特定のバージョンのマイクロコードを用いることによって選択的に変化させることができる。このようなアーキテクチャの例に、ＩＢＭシステム／３６０がある。このような先行技術システムの基本的計算ハードウェア自体は再構成可能ではないので、広範囲の種類の問題について検討する場合、こうしたシステムでは最適化された計算性能は得られない。
【０００６】
計算性能を向上させ、問題の種類の適用可能性を最大限に高めるための先行技術の第２のアプローチは、非再構成ホストプロセッサまたはホストシステムに結合された再構成ハードウェアを用いることである。この先行技術のアプローチでは、非再構成ホストに結合された１個またはそれ以上の再構成プロセッサを利用することが最も一般的である。このアプローチは、ホストに付加されたプロセッサセット内のハードウェアの一部分が再構成できるような「付加再構成可能プロセッサ（ＡＲＰ：Attached Reconfigurable Processor）」アーキテクチャとして分類することができる。ホストシステムに結合された１組の再構成プロセッサを利用する現在の付加再構成可能プロセッサ（ＡＲＰ）システムの例には、Supercomputing Research Center（Bowie，メリーランド）が設計したＳＰＬＡＳＨ−１とＳＰＬＡＳＨ−２、Annapolis Micro Systems（Annapolis，メリーランド）製のWILDFIRE Custom Configurable Computer（ＳＰＬＡＳＨ−２の市販バージョン）、Virtual Computer Corporation（Reseda，カリフォルニア）製のＥＣＶ−１がある。計算を主体とした問題の多くでは、プログラムコードの比較的小さな部分の実行にかなりの時間が費やされる。一般に、付加再構成可能プロセッサ（ＡＲＰ）アーキテクチャを用いて、プログラムコードのこのような部分のために再構成計算アクセラレータが提供される。
【０００７】
【発明が解決しようとする課題】
残念ながら、１個またはそれ以上の再構成計算アクセラレータを基礎においた計算モデルには、下記に詳細に説明するような重大な欠点がある。
【０００８】
＜第1の欠点＞
付加再構成可能プロセッサ（ＡＲＰ）アーキテクチャの第１の欠点は、付加再構成可能プロセッサ（ＡＲＰ）システムが特定のときに再構成ハードウェアの特定のアルゴリズムの最適実動化を実行しようと試みるために起こる。
【０００９】
たとえば、Virtual Computer CorporationのＥＣＶ−１の背後にある設計方針は、特定のアルゴリズムのために最適の計算性能を提供するよう、その特定のアルゴリズムを再構成ハードウェアソースの特定の構成に変換するというものである。再構成ハードウェアリソースは、特定のアルゴリズムのために最適の能力を提供する目的だけに用いられる。命令実行の管理などの一般的な目的のために再構成ハードウェアリソースを用いることは避けられる。したがって、所定のアルゴリズムについて、再構成ハードウェアリソースは最適の能力が得られるよう結合された個々のゲートの全体像から検討される。
【００１０】
一部の付加再構成可能プロセッサ（ＡＲＰ）システムは、「プログラム」が従来型のプログラム命令と、各種再構成ハードウェアリソースがどのように相互結合されるかを定める専用命令との両方を含むプログラミングモデルに依拠している。付加再構成可能プロセッサ（ＡＲＰ）システムは、ゲートレベルアルゴリズムに適した固有の方法で再構成ハードウェアリソースを検討するので、これらの専用命令は、用いられる各再構成ハードウェアリソースの特性に関する詳細な内容と、再構成ハードウェアリソースが他の再構成ハードウェアリソースに結合される方法を提供しなければならない。これにより、プログラムは複雑なものとなる。プログラミングの複雑さを軽減するために、プログラムに従来型の高レベルプログラミング言語命令と高レベル専用命令の両方を含めたプログラミングモデルを利用する試みが行われている。つまり、現在の付加再構成可能プロセッサ（ＡＲＰ）システムでは、高レベルプログラミング言語命令と上記の高レベル専用命令の両方をコンパイルできるコンパイルシステムを利用しようという試みがなされている。このようなコンパイルシステムの目的出力は、従来型の高レベルプログラミング言語命令についてはアセンブリ言語コードであり、専用命令についてはハードウェア記述言語（ＨＤＬ：Hardware Description Language）である。検討中の特定のアルゴリズムについて最適の計算性能を得るために１組の再構成ハードウェアリソースと相互結合スキームを自動決定することは、残念ながらＮＰハード問題である。一部の付加再構成可能プロセッサ（ＡＲＰ）システムの長期目標は、アルゴリズムを１組のゲートのための最適化相互結合スキームに直接コンパイルできるコンパイルシステムを開発することである。しかし、このようなコンパイルシステムの開発は、特に複数の種類のアルゴリズムについて検討する場合、きわめて困難な作業である。
【００１１】
＜第２の欠点＞
付加再構成可能プロセッサ（ＡＲＰ）アーキテクチャの第２の欠点は、付加再構成可能プロセッサ（ＡＲＰ）装置を構成するアルゴリズムに関連した計算作業を、付加再構成可能プロセッサ（ＡＲＰ）装置が多重再構成論理装置全体に分散するために起こる。
【００１２】
たとえば１組のフィールドプログラマブル論理回路（ＦＰＧＡ）を用いて実装され、また並列乗算アクセラレータを実動化するために構成された付加再構成可能プロセッサ（ＡＲＰ）装置については、並列乗算に関連した計算作業がフィールドプログラマブル論理回路（ＦＰＧＡ）全体に分散される。したがって、付加再構成可能プロセッサ（ＡＲＰ）装置を構成できるアルゴリズムの大きさは、存在する再構成論理装置の数によって制限される。同様に、付加再構成可能プロセッサ（ＡＲＰ）装置が扱うことができる最大データセットの大きさも制限される。一部のアルゴリズムにはデータ従属性があるので、ソースコードの試験を行っても、付加再構成可能プロセッサ（ＡＲＰ）装置の限界が必ずしも明示的に示されるとは限らない。一般に、データ従属性アルゴリズムは避けられる。
【００１３】
さらに、付加再構成可能プロセッサ（ＡＲＰ）アーキテクチャが多重再構成論理装置全体に計算作業を分散することを開示しているので、新規のまたはやや修正したアルゴリズムを含めるには、再構成をひとまとめに行う必要がある。すなわち、多重再構成論理装置を再構成しなければならない。これにより、別の問題またはカスケード接続された副次的問題について再構成を行うことができる最大レートが限定される。
【００１４】
＜第３の欠点＞
付加再構成可能プロセッサ（ＡＲＰ）アーキテクチャの第３の欠点は、プログラムコードの１つまたはそれ以上の部分がホストで実行されるために生じる。
【００１５】
すなわち、付加再構成可能プロセッサ（ＡＲＰ）装置はそれ自体独立した計算システムではなく、プログラム全体を実行するものではない。このためホストとの相互作用が必要となる。一部のプログラムコードが非再構成ホストで実行されるので、利用可能なシリコンリソースがプログラムの実行の時間枠において最大限に利用されない。特にホストによる命令の実行中、付加再構成可能プロセッサ（ＡＲＰ）装置のシリコンリソースはアイドル状態であるか、非効率な利用状態にある。同様に、付加再構成可能プロセッサ（ＡＲＰ）装置がデータを処理するとき、ホストでのシリコンリソースの利用はおおむね非効率である。複数の全プログラムを容易に実行するためには、システム内のシリコンリソースを、容易に再利用できるリソースにグループ化しなければならない。上記のように、付加再構成可能プロセッサ（ＡＲＰ）システムは、再構成ハードウェアリソースを特定の時間における特定のアルゴリズムの実動化のために最適に相互結合された１組のゲートとして扱う。したがって、再利用できるためにはアルゴリズムがある程度の独立性をもつ必要があるので、付加再構成可能プロセッサ（ＡＲＰ）システムは再構成ハードウェアリソースの特定のセットをアルゴリズムごとに容易に再利用できるリソースとして扱うための手段は提供しない。
【００１６】
付加再構成可能プロセッサ（ＡＲＰ）装置は、現在実行しているホストプログラムをデータとして扱うことができず、一般にそれ自体を計算環境に適合させることができない。付加再構成可能プロセッサ（ＡＲＰ）装置は、それ自体のホストプログラムを実行することによって、それ自体をシミュレートするようには作られていない。さらに付加再構成可能プロセッサ（ＡＲＰ）装置は、構築される再構成ハードウェアリソースを直接用いて、それ自体に対しそれ自体のハードウェア記述言語（ＨＤＬ）またはアプリケーションプログラムをコンパイルするようには作られていない。したがって付加再構成可能プロセッサ（ＡＲＰ）装置は、ホストプロセッサからの独立性を開示する独立計算モデルに関してアーキテクチャ的に制限されている。
【００１７】
付加再構成可能プロセッサ（ＡＲＰ）装置は、計算アクセラレータとして機能するので、一般に独立した入力／出力（Ｉ／Ｏ）処理は行えない。通常は、付加再構成可能プロセッサ（ＡＲＰ）装置は入出力処理のためのホスト相互作用を必要とする。したがって、付加再構成可能プロセッサ（ＡＲＰ）装置の性能は入出力について限られているかもしれない。しかし、当業者は、付加再構成可能プロセッサ（ＡＲＰ）装置が特定の入出力問題を加速処理するために構成できることを認めるであろう。しかし、付加再構成可能プロセッサ（ＡＲＰ）装置全体は単一の特定の問題について構成されているので、付加再構成可能プロセッサ（ＡＲＰ）装置が入出力処理とデータ処理について互いに悪影響を与えずに均衡をとることはできない。さらに、付加再構成可能プロセッサ（ＡＲＰ）装置は割込み処理のための手段を提供しない。付加再構成可能プロセッサ（ＡＲＰ）装置は計算アクセラレーションを最大化するのに向けられているので、付加再構成可能プロセッサ（ＡＲＰ）に関する開示内容ではこのような割込みメカニズムは述べられておらず、割込みは計算加速に否定的な影響を与える。
【００１８】
＜第４の欠点＞
付加再構成可能プロセッサ（ＡＲＰ）アーキテクチャの第４の欠点は、付加再構成可能プロセッサ（ＡＲＰ）装置を用いて利用するのが困難な固有のデータ並列性を有するソフトウェアアプリケーションが存在するために生じる。
【００１９】
きわめて大規模なネットリストのネットネーム記号導出が必要とされるときには、ハードウェア記述言語（ＨＤＬ）コンパイルアプリケーションがこのような例の１つとして挙げられる。
【００２０】
＜第５の欠点＞
付加再構成可能プロセッサ（ＡＲＰ）アーキテクチャの第５の欠点は、これのアーキテクチャが基本的にＳＩＭＤ（Single Instruction Stream Multiple Data Stream）コンピュータアーキテクチャモデルである点である。
【００２１】
したがって、付加再構成可能プロセッサ（ＡＲＰ）アーキテクチャは、１つまたはそれ以上の革新的先行技術の非再構成システムと比べ、アーキテクチャとして効率的ではない。付加再構成可能プロセッサ（ＡＲＰ）システムは、各特定の構成例について、利用できる再構成ハードウェアが提供できるのと同じ程度の計算能力について、プログラム実行のプロセスのほんの一部、主として算術計算のための演算ロジックしか反映していない。これに対して、１９７１年のFairchildでのＳＹＭＢＯＬマシンのシステム設計では、コンピュータ全体がプログラムの実行の各局面について一意的なハードウェアコンテクストを使用している。結果として、付加再構成可能プロセッサ（ＡＲＰ）システムが開示しているホスト部分を含めて、ＳＹＭＢＯＬはコンピュータのシステムアプリケーションについてのすべての構成部分を含むこととなった。
【００２２】
＜その他の欠点＞
付加再構成可能プロセッサ（ＡＲＰ）アーキテクチャにはその他の欠点もある。
【００２３】
たとえば、付加再構成可能プロセッサ（ＡＲＰ）装置は多重再構成論理装置に独立したタイミングを与えるための有効な手段を持っていない。同様に、カスケード接続された付加再構成可能プロセッサ（ＡＲＰ）装置には、独立してタイミング決定された装置を提供するための有効なクロック分散手段を持っていない。別の例としては、実行時間と、アクセラレーションを試みるソースコード文とを正確に相関させることが困難なことがある。ネットシステムクロックレートを正確に算出するためには、ハードウェア記述言語（ＨＤＬ）コンパイルのあと、コンピュータ支援設計（ＣＡＤ：Computer‐Aided Design）手段で付加再構成可能プロセッサ（ＡＲＰ）装置をモデル化しなければならないが、このような基本パラメータへの到達は時間のかかるプロセスである。
【００２４】
従来のアーキテクチャで同様に重要な問題は、それらが仮想または共有メモリを使用していることである。この開示内容は統合されたアドレススペースを使用するということであり、これによって、より複雑なアドレス指定演算が必要となり、そのためメモリアクセスが遅くなり、効率が低下する。たとえば仮想メモリを用いてシステム内のメモリ装置の個々のビットにアクセスするには、まずメモリの物理的アドレススペースを論理アドレスに区分し、次に仮想アドレスをその論理アドレスにマッピングしなければならない。このようにしてようやくメモリの各ビットにアクセスすることができる。さらに共有メモリシステムでは、プロセッサは通常はメモリにアクセスを許容する前にアドレス確認演算を実行するため、メモリ演算はさらに複雑になる。最後にプロセッサは、ある種の優先度決定システムを提供することにより、メモリの同じ領域に同時にアクセスしようとする複数のプロセスの間で調整（仲裁）を行わなければならない。
【００２５】
共有メモリ及び仮想メモリを使用することにより起こる多くの問題に対処するために、多くの従来型のシステムはメモリ管理システム（ＭＭＵ：Memory Management Units）を用いて、論理アドレスの仮想アドレスへの変換などのメモリ管理機能のほとんど実行している。しかし、メモリ管理システム（ＭＭＵ）／ソフトウェア相互作用により、メモリアクセス演算はさらに複雑になる。さらにメモリ管理システム（ＭＭＵ）は、実行できる演算の種類がきわめて限定されている。メモリ管理システム（ＭＭＵ）は、割込みを扱うことができず、メッセージを待ち行列に待機させることができず、また複雑なアドレス指定演算を実行することができないため、すべてプロセッサが実行しなければならない。多重並列プロセッサを有するコンピュータアーキテクチャで共有メモリまたは仮想メモリシステムを用いると、上記のような欠点がさらに拡大される。ハードウェア／ソフトウェア相互作用が上に述べたように管理されなければならないばかりでなく、共有メモリにアクセスしようとする多重プロセッサに応じてメモリ内のデータのコヒーレント性と一致性を、ソフトウェア及びハードウェアの両方によって維持しなければならない。プロセッサを追加すると、仮想アドレスの論理アドレスへの変換はさらに困難となる。メモリアクセス演算におけるこうした複雑性によってシステム能力が必然的に低下し、プロセッサを追加しシステムの規模が大きくなればなるほどこの能力低下は大幅なものとなる。
【００２６】
従来型のシステムの一例は、キャッシュコヒーレント、非一様メモリアクセス（ｃｃＮＵＭＡ：Non-Uniform Memory Access）コンピュータアーキテクチャである。非一様メモリアクセス（ｃｃＮＵＭＡ）マシンは、キャッシュ制御装置やクロスバー切替装置などの複雑で高価なハードウェアを使用し、このメモリは多重プロセッサにより実際には共有されているとしても、個々の独立したＣＰＵについて単一のアドレススペースの幻影（仮想スペース）を維持する。非一様メモリアクセス（ｃｃＮＵＭＡ）はやや拡張性があるが、この拡張性は、システム内でプロセッサを緊密に結合させるためにハードウェアを追加することによって達成される。この種のシステムは、科学的計算での有限要素グリッドの場合のように、共有メモリ入出力演算のためきわめて広い帯域幅を必要とする単一のプログラムイメージが共有されている計算環境で用いられると一層有利である。さらに非一様メモリアクセス（ｃｃＮＵＭＡ）は、プロセッサの特性が互いに類似していないようなシステムでは役に立たない。非一様メモリアクセス（ｃｃＮＵＭＡ）アーキテクチャでは、追加される各プロセッサが既存のプロセッサと同種のものでなければならない。したがって、プロセッサを異なる機能を実行させるために最適化し、互いに異なった作動を行うシステムでは、非一様メモリアクセス（ｃｃＮＵＭＡ）アーキテクチャは有効な解決策とはならない。最後に、従来型のシステムでは、標準的メモリアドレススキームのみがシステム内のメモリをアドレス指定するのに用いられる。
【００２７】
必要とされているのは、拡張性、平易性のあるアドレス指定を提供し、またシステムの処理能力にほとんど影響を与えないような、並列計算環境でのメモリをアドレス指定するための手段である。
【００２８】
【発明が解決しようとする課題】
第１の発明は、上述した課題を解決するために、動的再プログラマブル処理マシンのデータパケットのためのローカルメモリ宛先を指定するメタアドレス指定アーキテクチャであって、第１のメモリ装置と、第１のメモリ装置が結合され、所定の命令を受け取ると、受け取った命令が遠隔演算情報を含む遠隔演算を要求する命令かを判定し、命令が遠隔演算情報を含む遠隔演算を要求する命令であると判定した場合に、命令に含まれる遠隔演算情報を第１のメモリ装置に記憶し、遠隔演算情報が記憶されている第１のメモリ装置におけるメモリアドレスを含む無条件命令を生成する動的再プログラマブル処理マシンと、第１の動的再プログラマブル処理マシンから無条件命令を受け取り、無条件命令に含まれるメモリアドレスに基づいて第１のメモリ装置から遠隔演算情報を検索し、遠隔演算情報に基づき生成されるデータパケットの送信先のアドレスを示す目的地理アドレスと、送信先においてデータを書き込む第２のメモリ装置のアドレスを示す目的ローカルメモリアドレスとを含むメタアドレスを遠隔演算情報に基づいて生成し、メタアドレスを含むデータパケットを遠隔演算情報に基づいて生成するアドレス指定マシンと、第１のアドレス指定マシンおよびデータの送信先として目的地理アドレスに示される第２のアドレス指定マシンに結合され、第１のアドレス指定マシンで生成されたデータパケットを第１のアドレス指定マシンから受け取って、データパケットにおけるメタアドレスに含まれる目的地理アドレスに応じて、第１のアドレス指定マシンと第２のアドレス指定マシンとの間で相互にデータをルーティングする相互結合装置とを具備する。
【００２９】
第２の発明は、動的再プログラマブル処理マシンは、受け取った命令が遠隔演算を要求する命令でない場合は、受け取った命令に従って処理を実行する。
【００３０】
第３の発明は、第２のアドレス指定マシンは、第１のアドレス指定マシンが生成したデータパケットを受け取ると、データパケットに含まれるメタアドレスを目的地理アドレスと目的ローカルメモリアドレスとに復号し、当第２のアドレス指定マシンのアドレスを示す地理アドレスと復号した目的地理アドレスとを比較するアドレス復号器と、アドレス復号器による比較の結果、地理アドレスと目的地理アドレスとが一致する場合に、データパケットを第２の動的再プログラマブル処理マシンに伝送する制御装置とを具備する。
【００３１】
第４の発明は、第２の動的再プログラマブル処理マシンに結合され、結合される第２の動的再プログラマブル処理マシンについてのアドレスを示す地理アドレスを記憶するアーキテクチャ記述メモリ装置をさらに具備する。
【００３２】
第５の発明は、第２のアドレス指定マシンが、入出力装置に結合された割込みハンドラをさらに含み、割込みハンドラが、割込み要求を識別するための識別装置と、割込み要求の有効性を検証するために、識別した割込み要求を割込み要求の記憶されたリストと比較するためのコンパレータと、記憶された割込み処理命令に従って有効性が確認された割込み要求を処理するための割込みロジックと、を具備する。
【００３３】
第６の発明は、メタアドレスが８０ビット幅であり、目的地理アドレスが１６ビット幅であり、ローカルアドレスが６４ビット幅である。
【００３４】
第７の発明は、動的再プログラマブル処理マシンのデータパケットのためのローカルメモリ宛先を指定するメタアドレス指定方法であって、所定の命令を受け取ると、受け取った命令が遠隔演算情報を含む遠隔演算を要求する命令かを判定し、命令が遠隔演算情報を含む遠隔演算を要求する命令であると判定した場合に、命令に含まれる遠隔演算情報を第１のメモリ装置に記憶し、遠隔演算情報が記憶されている第１のメモリ装置におけるメモリアドレスを含む無条件命令を動的再プログラマブル処理マシンにより生成する無条件命令生成ステップと、無条件命令生成ステップで生成された無条件命令を動的再プログラマブル処理マシンから受け取り、無条件命令に含まれるメモリアドレスに基づいて第１のメモリ装置から遠隔演算情報を検索し、遠隔演算情報に基づき生成されるデータパケットの送信先のアドレスを示す目的地理アドレスと、送信先においてデータを書き込む第２のメモリ装置のアドレスを示す目的ローカルメモリアドレスとを含むメタアドレスを遠隔演算情報に基づいて生成し、メタアドレスを含むデータパケットを遠隔演算情報に基づいてアドレス指定マシンにより生成するデータパケット生成ステップと、データパケット生成ステップで生成されたデータパケットを第１のアドレス指定マシンから受け取って、データパケットにおけるメタアドレスに含まれる目的地理アドレスに応じて、第１のアドレス指定マシンと、データの送信先として目的地理アドレスに示される第２のアドレス指定マシンとの間で相互にデータをルーティングするステップとを具備する。
【００３５】
第８の発明は、無条件命令生成ステップで、動的再プログラマブル処理マシンは、受け取った命令が遠隔演算を要求する命令でない場合は、受け取った命令に従って処理を実行する。
【００３６】
第９の発明は、第２のアドレス指定マシンが、第１のアドレス指定マシンが生成したデータパケットを受け取ると、データパケットに含まれるメタアドレスを目的地理アドレスと目的ローカルメモリアドレスとに復号し、当第２のアドレス指定マシンのアドレスを示す地理アドレスと復号した目的地理アドレスとを比較するアドレス復号ステップと、アドレス比較ステップによる比較の結果、地理アドレスと目的地理アドレスとが一致する場合に、データパケットを第２の動的再プログラマブル処理マシンに伝送する伝送ステップとをさらに具備する。
【００３７】
第１０の発明は、第２の動的再プログラマブル処理マシンについてのアドレスを示す地理アドレスが、第２の動的再プログラマブル処理マシンに結合されるアーキテクチャ記述メモリ装置に記憶される。
【００３８】
第１１の発明は、第２のアドレス指定マシンが含む、入出力装置に結合された割込みハンドラが、割込み要求を識別する識別ステップと、識別ステップで識別された割込み要求の有効性を検証するために、識別した割込み要求を割込み要求の記憶されたリストと比較する比較ステップと、記憶された割込み処理命令に従って前期比各ステップの比較結果に基づき有効性が確認された割込み要求を処理するためのステップとを具備する。
【００３９】
第１２の発明は、メタアドレスが８０ビット幅であり、目的地理アドレスが１６ビット幅であり、ローカルアドレスが６４ビット幅である。
【００４３】
【発明の実施の形態】
＜概要＞
本発明は、１組のＳマシンと、各Ｓマシンに対応するＴマシンと、汎用相互結合マトリックス（ＧＰＩＭ：General-Purpose Interconnect Matrix）と、１組の入出力Ｔマシンと、１組の入出力装置と、マスタタイムベース装置とが、拡張性、並列、動的再構成計算のためのシステムを形成する。各Ｓマシンは、メモリと、第１ローカルタイムベース装置と、動的再構成処理装置（ＤＲＰＵ：Dynamically Reconfigurable Process unit）とを含む動的再構成コンピュータである。動的再構成処理装置（ＤＲＰＵ）は、命令取出し装置（ＩＦＵ：Instruction Fetch Unit）として構成された再プログラマブル論理装置と、データ演算装置（ＤＯＵ：Data Operate unit）と、アドレス演算装置（ＡＯＵ：Address Operate Unit）とを用いて実装され、これらはそれぞれ再構成割込みまたは１組のプログラム命令に埋込まれた再構成命令の選択に応じてプログラム実行中に選択的に再構成される。各再構成割込みと各再構成命令は、特定の命令セットアーキテクチャ（ＩＳＡ：Instruction Set Architecture）の実装のために最適化された動的再構成処理装置（ＤＲＰＵ）ハードウェア編成を指定する構成データセットを引照する。命令取出し装置（ＩＦＵ）は、再構成演算と、命令取り出し・復号演算と、メモリアクセス演算とを指示し、命令の実行を容易にするために制御信号をデータ演算装置（ＤＯＵ）とアドレス演算装置（ＡＯＵ）とに発する。データ演算装置（ＤＯＵ）はデータ演算を実行し、アドレス演算装置（ＡＯＵ）はアドレス演算を実行する。各Ｔマシンは、共通インタフェース制御装置（ＣＩＣＵ：Common Interface and Control Unit）と、１個またはそれ以上の相互結合入出力装置と、第２ローカルタイムベース装置とを含むデータ転送装置である。汎用相互結合マトリックス（ＧＰＩＭ）は、Ｔマシン相互間の並列通信を容易に行えるようにする拡張性相互結合ネットワークである。この１組のＴマシンと汎用相互結合マトリックス（ＧＰＩＭ）によって、Ｓマシン間の並列通信が容易に行われる。またＴマシンは、ネットワークのＳマシン相互間のデータの転送を制御し、要求されるアドレス指定演算を提供する。メタアドレスは、各Ｓマシンに拡張性ビットアドレス指定能力を提供するのに用いられる。
【００４４】
＜具体的態様＞
図１は、本発明に基づいて構築された、拡張性、並列、動的再構成計算のためのシステム１０の好ましい実施例の構成図である。システム１０は、少なくとも１個のＳマシン１２と、各Ｓマシン１２に対応するＴマシン１４と、汎用相互結合マトリックス（ＧＰＩＭ）１６と、少なくとも１個の入出力Ｔマシン１８と、１個またはそれ以上の入出力装置２０と、マスタタイムベース装置２２とを含んでいることが好ましい。好ましい実施例では、システム１０は、多重Ｓマシン１２と、したがって多重Ｔマシン１４と、多重入出力Ｔマシン１８と、多重入出力装置２０とを含んでいる。
【００４５】
Ｓマシン１２と、Ｔマシン１４と、入出力Ｔマシン１８とは、それぞれマスタタイムベース装置２２のタイミング出力部に結合されたマスタタイミング入力部を含んでいる。各Ｓマシン１２は、それに対応するＴマシン１４に結合された入力部と出力部とを含んでいる。各Ｔマシン１４は、それに対応するＳマシン１２に結合された入力部と出力部の他に、汎用相互結合マトリックス（ＧＰＩＭ）１６に結合されたルーティング入力部とルーティング出力部とを含んでいる。同様に、各入出力Ｔマシン１８は、入出力装置２０に結合された入力部と出力部とを含み、また汎用相互結合マトリックス（ＧＰＩＭ）１６に結合されたルーティング入力部とルーティング出力部とを含んでいる。
【００４６】
下記に詳細に説明するように、各Ｓマシン１２は動的再構成コンピュータである。汎用相互結合マトリックス（ＧＰＩＭ）１６は、Ｔマシン１４間の通信を容易に行えるようにする２点間並列相互結合手段を形成している。Ｔマシン１４と汎用相互結合マトリックス（ＧＰＩＭ）１６は、Ｓマシン１２間のデータ転送のための２点間並列相互結合手段を形成している。同様に、汎用相互結合マトリックス（ＧＰＩＭ）１６と、１組のＴマシン１４と、１組の入出力Ｔマシン１８とは、Ｓマシン１２と各入出力装置２０との間の入出力転送のための２点間並列相互結合手段を形成している。マスタタイムベース装置２２は、各Ｓマシン１２と各Ｔマシン１４にマスタタイミング信号を送る発振器を含んでいる。
【００４７】
模範実施例では、各Ｓマシン１２は、６４メガバイトのランダムアクセスメモリ（ＲＡＭ）に結合されたＸｉｌｉｎｘ  ＸＣ４０１３（Xilinx, Inc., サンノゼ，カリフォルニア）フィールドプログラマブルゲートアレイ（ＦＰＧＡ：Field Programmable Gate Array）を用いて実装されている。各Ｔマシン１４は、各入出力Ｔマシン１８と同様に、Ｘｉｌｉｎｘ  ＸＣ４０１３フィールドプログラマブルゲートアレイ（ＦＰＧＡ）の再構成ハードウェアリソースの約５０％を用いて実装されている。汎用相互結合マトリックス（ＧＰＩＭ）１６は、環状体の相互結合メッシュとして実装されている。マスタタイムベース装置２２は、システム全体の周波数基準を提示するクロック分散回路に結合されたクロック発振器であり、米国に特許出願された「位相同期、フレキシブル周波数クロッキングとメッセージングのためのシステムと方法（System and Method for Phase-Synchronous, Flexible Frequency Clocking and Messaging）」に記載されている。Ｔマシン１４と、Ｓマシン１２と、入出力Ｔマシン１８とは、拡張性コヒーレントインタフェース（ＳＣＩ）を定めたＡＮＳＩ／ＩＥＥＥ規格１５９６−１９９２に従って情報を転送するのが好ましい。
【００４８】
好ましい実施例では、システム１０は並列で機能する多重Ｓマシン１２を含んでいる。個々のＳマシン１２の構造と機能については、図２から図１７を用いて下記に詳しく説明する。図２は、Ｓマシン１２の好ましい実施例の構成図である。Ｓマシン１２は、第１ローカルタイムベース装置３０と、プログラム命令を実行するための動的再構成処理装置（ＤＲＰＵ）３２と、メモリ３４とを含んでいる。第１ローカルタイムベース装置３０は、Ｓマシンのマスタタイミング入力部を形成するタイミング入力部を含んでいる。また第１ローカルタイムベース装置３０は、第１ローカルタイミング信号すなわちクロックを、第１タイミング信号ライン４０を経て動的再構成処理装置（ＤＲＰＵ）３２のタイミング入力部に、またメモリ３４のタイミング入力部に送るタイミング出力部を含んでいる。動的再構成処理装置（ＤＲＰＵ）３２は、メモリ制御ライン４２を経てメモリ３４の制御信号入力部に結合された制御信号出力部と、アドレスライン４４を経てメモリ３４のアドレス入力部に結合されたアドレス出力部と、メモリ入出力ライン４６を経てメモリ３４の双方向データポートに結合された双方向データポートとを含んでいる。さらに動的再構成処理装置（ＤＲＰＵ）３２は、外部制御ライン４８を経てその対応するＴマシン１４の双方向データポートに結合された双方向データポートを含んでいる。図２に示すように、メモリ制御ライン４２はＸビットであり、アドレスライン４４はＭビットであり、メモリ入出力ライン４６は（Ｎ×ｋ）ビットであり、外部制御ライン４８はＹビットである。
【００４９】
好ましい実施例では、第１ローカルタイムベース装置３０は、マスタタイムベース装置２２からマスタタイミング信号を受取る。第１ローカルタイムベース装置３０は、マスタタイミング信号から第１ローカルタイミング信号を生成し、第１ローカルタイミング信号を動的再構成処理装置（ＤＲＰＵ）３２とメモリ３４に送る。好ましい実施例では、第１ローカルタイミング信号は個々のＳマシン１２ごとに異なる。したがって、所定のＳマシン１２内の動的再構成処理装置（ＤＲＰＵ）３２とメモリ３４は、他のＳマシン１２内の動的再構成処理装置（ＤＲＰＵ）３２とメモリ３４とは独立したクロックレートで機能する。第１ローカルタイミング信号は、マスタタイミング信号と位相同期であることが好ましい。好ましい実施例では、第１ローカルタイムベース装置３０は、再構成ハードウェアリソースを用いて実装された位相ロック検出回路を含む位相ロック周波数変換回路を用いて実動化される。当業者は、別の実施例で、第１ローカルタイムベース装置３０がクロック分散ツリーの一部として実動化できることを認めるであろう。
【００５０】
メモリ３４は、ＲＡＭとして実動化され、またプログラム命令と、プログラムデータと、動的再構成処理装置（ＤＲＰＵ）３２のための構成データとを記憶することが好ましい。任意のＳマシン１２のメモリ３４は、汎用相互結合マトリックス（ＧＰＩＭ）１６を経てシステム１０内の他のＳマシン１２にアクセスできることが好ましい。さらに各Ｓマシン１２には、均一のメモリアドレススペースがあることが好ましい。好ましい実施例では、メモリ３４に記憶されたプログラム命令は、動的再構成処理装置（ＤＲＰＵ）３２へ向けられた再構成指示を選択的に含んでいる。図３は、再構成指示を含む模範プログラムリスト５０である。図３に示すように、模範プログラムリスト５０は１組の外部ループ部分５２と、第１内部ループ部分５４と、第２内部ループ部分５５と、第３内部ループ部分５６と、第４内部ループ部分５７と、第５内部ループ部分５８とを含んでいる。当業者は、「内部ループ」という用語が特定のセットの関連演算を実行するプログラムの反復部分を指し、また「外部ループ」という用語が、主として汎用演算を実行し、及び／または一つの内部ループ部分からもう一つの内部ループ部分へ制御を転送するプログラムの部分を指すことを容易に認めるであろう。一般に、プログラムの内部ループ部分５４、５５、５６、５７、５８は、潜在的に大きなデータセットについて特定の演算を実行する。たとえば画像処理アプリケーションでは、第１内部ループ部分５４は画像データについてカラーフォーマット変換演算を実行し、第２〜第５内部ループ部分５４、５５、５６、５７、５８は、線形フィルタリング演算、畳込み演算、パターン探索演算、及び圧縮演算を実行することになる。当業者は、内部ループ部分５５、５６、５７、５８の連続シーケンスがソフトウェアパイプラインとして考えられることを認めるであろう。各外部ループ部分５２は、データの入出力について責任を有し、及び／または第１内部ループ部分５４から第２内部ループ部分５５へのデータ及び制御の転送を指示する。当業者は、さらに、所定の内部ループ部分５４、５５、５６、５７、５８が一つまたはそれ以上の再構成指示を含むことを認めるであろう。一般に任意のプログラムについて、プログラムリスト５０の外部ループ部分５２は各種の汎用命令を含むが、プログラムリスト５０の内部ループ５４、５６は特定の命令セットを実行するのに用いられる比較的種類の少ない命令で構成される。
【００５１】
模範プログラムリスト５０では、第１再構成指示は第１内部ループ部分５４の開始部分に現れ、第２再構成指示は第１内部ループ部分５４の終了部分に現れる。同様に、第３再構成指示は第２内部ループ部分５５の開始部分に、また第４の再構成指示は第３内部ループ部分５６の開始部分に、第５再構成指示は第４内部ループ部分５７の開始部分に、第６及び第７再構成指示はそれぞれ第５内部ループ部分５８の開始部分と終了部分に現れる。各再構成指示は、特定の命令セットアーキテクチャ（ＩＳＡ）を実動化するためのものであり、またそれに最適化された内部動的再構成処理装置（ＤＲＰＵ）ハードウェア編成を指定する構成データセットを指示することが好ましい。命令セットアーキテクチャ（ＩＳＡ）は、コンピュータをプログラムするのに用いることができる基本的なまたは中核となる命令セットである。命令セットアーキテクチャ（ＩＳＡ）は、命令フォーマットと、操作コードと、データフォーマットと、アドレス指定モードと、実行制御フラグと、プログラムアクセス可能レジスタとを定義する。当業者は、これが命令セットアーキテクチャ（ＩＳＡ）の従来の定義に対応することを認めるであろう。本発明では、各Ｓマシンの動的再構成処理装置（ＤＲＰＵ）３２は、各所望の命令セットアーキテクチャ（ＩＳＡ）について独自の構成データセットを用いて多重命令セットアーキテクチャ（ＩＳＡ）を直接実装するよう、迅速なランタイム構成とすることができる。すなわち各命令セットアーキテクチャ（ＩＳＡ）は、対応する構成データセットによって定められる独自の内部動的再構成処理装置（ＤＲＰＵ）ハードウェア編成で実装される。したがって本発明では、第１〜第５内部ループ部分５４、５５、５６、５７、５８はそれぞれ一意の命令セットアーキテクチャ（ＩＳＡ）、すなわち命令セットアーキテクチャ（ＩＳＡ）１、命令セットアーキテクチャ（ＩＳＡ）２、命令セットアーキテクチャ（ＩＳＡ）３、命令セットアーキテクチャ（ＩＳＡ）４及び命令セットアーキテクチャ（ＩＳＡ）ｋに対応する。当業者は、連続命令セットアーキテクチャ（ＩＳＡ）がそれぞれ一意である必要はないことを認めるであろう。したがって、命令セットアーキテクチャ（ＩＳＡ）ｋは命令セットアーキテクチャ（ＩＳＡ）１、命令セットアーキテクチャ（ＩＳＡ）２、命令セットアーキテクチャ（ＩＳＡ）３、命令セットアーキテクチャ（ＩＳＡ）４であってもよく、また異なる命令セットアーキテクチャ（ＩＳＡ）であっても良い。１組の外部ループ部分５２も、一意の命令セットアーキテクチャ（ＩＳＡ）、すなわち命令セットアーキテクチャ（ＩＳＡ）０に対応する。好ましい実施例では、プログラムの実行中、連続した再構成指示の選択はデータ従属的に行われる（データに応じて異なる）。特定の再構成指示を選択すると、プログラム命令はその後、対応する構成データセットによって指定された独自の動的再構成処理装置（ＤＲＰＵ）ハードウェア構成により、対応する命令セットアーキテクチャ（ＩＳＡ）に従って実行される。
【００５２】
本発明では、特定の命令セットアーキテクチャ（ＩＳＡ）は、命令セットアーキテクチャ（ＩＳＡ）が含む命令の数と種類に従って、内部ループ命令セットアーキテクチャ（ＩＳＡ）または外部ループ命令セットアーキテクチャ（ＩＳＡ）として分類することができる。いくつかの命令を含み、汎用演算の実行に役立つ命令セットアーキテクチャ（ＩＳＡ）は外部ループ命令セットアーキテクチャ（ＩＳＡ）であり、一方、比較的少ない命令を含み、特定の種類の命令の実行に向けられている命令セットアーキテクチャ（ＩＳＡ）は内部ループ命令セットアーキテクチャ（ＩＳＡ）である。外部ループ命令セットアーキテクチャ（ＩＳＡ）は汎用演算の実行に向けられているので、プログラム命令の逐次実行が望ましい場合に最も役に立つ。外部ループ命令セットアーキテクチャ（ＩＳＡ）の実行性能は、実行される命令ごとのクロックサイクルで特徴付けられることが好ましい。これに対して、内部ループ命令セットアーキテクチャ（ＩＳＡ）は特定の種類の命令の実行に向けられているので、プログラム命令の並列実行が望ましい場合に最も役に立つ。内部ループ命令セットアーキテクチャ（ＩＳＡ）の実行性能は、クロックサイクル当たりで実行される命令で、またはクロックサイクル当たり得られる計算結果で特徴付けられることが好ましい。
【００５３】
当業者は、プログラム命令の逐次実行及び並列実行に関するこれまでの説明が単一の動的再構成処理装置（ＤＲＰＵ）３２内でのプログラム命令の実行に関連していることを認めるであろう。システム１０に多重Ｓマシン１２が存在することによって、特定の動的再構成処理装置（ＤＲＰＵ）３２によって各プログラム命令シーケンスが実行される場合、多重プログラム命令シーケンスを任意の時間に並列実行することが容易になる。各動的再構成処理装置（ＤＲＰＵ）３２は、特定の時間にそれぞれ特定の内部ループ命令セットアーキテクチャ（ＩＳＡ）または外部ループ命令セットアーキテクチャ（ＩＳＡ）を実動化するための並列ハードウェアまたは直列ハードウェアを含むように構成されている。任意の動的再構成処理装置（ＤＲＰＵ）３２の内部ハードウェア構成は、実行される一連のプログラム命令内に埋込まれた１つまたはそれ以上の再構成指示の選択に従って経時的に変化する。
【００５４】
好ましい実施例では、各命令セットアーキテクチャ（ＩＳＡ）とその対応する内部動的再構成処理装置（ＤＲＰＵ）ハードウェア編成は、１組の利用可能な再構成ハードウェアリソースに対して特定のクラスの計算上の問題について最適の計算性能を備えるよう設計されている。上に述べたように、また下記に詳しく説明するように、外部ループ命令セットアーキテクチャ（ＩＳＡ）に対応する内部動的再構成処理装置（ＤＲＰＵ）ハードウェア編成は、プログラム命令の逐次実行について最適化されるのが好ましい。また内部ループ命令セットアーキテクチャ（ＩＳＡ）に対応する内部動的再構成処理装置（ＤＲＰＵ）ハードウェア編成は、プログラム命令の並列実行について最適化されるのが好ましい。模範汎用外部ループ命令セットアーキテクチャ（ＩＳＡ）を参考資料Ａに示し、畳込み演算専用の模範内部ループ命令セットアーキテクチャ（ＩＳＡ）を参考資料Ｂに示す。
【００５５】
各再構成指示を除いて、図３の模範プログラムリスト５０は、従来の高レベル言語文、たとえばＣプログラミング言語に従って書かれた文で構成されていることが好ましい。当業者は、一連のプログラム命令に１つまたはそれ以上の再構成指示を含むには、再構成指示に対応するために修正されたコンパイラが必要であることを認めるであろう。図４は、一連のプログラム命令のコンパイル中に実行される先行技術コンパイル演算のフローチャートである。ここで、先行技術のコンパイル演算は、Free Software Foundation（Cambridge，マサチューセッツ）によって作成されたＧＮＵ  Ｃコンパイラ（ＧＣＣ：ＧＮＵ Ｃ Compiler）によって実行されるものにほぼ相当している。当業者は、下記に説明する先行技術コンパイル演算が他のコンパイラについて容易に一般化できることを認めるであろう。先行技術コンパイル演算はステップ５００で始まり、コンパイラフロントエンドが一連のプログラム命令から次の高レベル文を選択する。次にステップ５０２で、コンパイラフロントエンドは選択した高レベル文に対応する中間レベルのコードを生成する。これは、ＧＮＵ  Ｃコンパイラ（ＧＣＣ）の場合には、レジスタ転送レベル（ＲＴＬ：Register Transfer Level）文に相当する。ステップ５０２のあとステップ５０４で、コンパイラフロントエンドはさらに別の高レベル文を検討する必要があるかどうかを決定する。検討する必要があれば、この好適な方法はステップ５００に戻る。
【００５６】
ステップ５０４でコンパイラフロントエンドが他のどの高レベル文も検討する必要がないと決定したときは、次にステップ５０６でコンパイラバックエンドが従来のレジスタ割当て演算を実行する。ステップ５０６のあとステップ５０８で、コンパイラバックエンドは現在のレジスタ転送レベル（ＲＴＬ）文グループ内で検討するために次のレジスタ転送レベル（ＲＴＬ）文を選択する。次にステップ５１０でコンパイラバックエンドは現在のレジスタ転送レベル（ＲＴＬ）文グループが１組のアセンブリ言語文に翻訳することのできる方法を定めるルールが存在するかどうかを決定する。このようなルールが存在しないときには、この好適な方法はステップ５０８に戻り、現在のレジスタ転送レベル（ＲＴＬ）文グループに含めるためにさらに別のレジスタ転送レベル（ＲＴＬ）文を選択する。現在のレジスタ転送レベル（ＲＴＬ）文グループに対応するルールが存在するときには、ステップ５１２でコンパイラバックエンドはそのルールに従って１組のアセンブリ言語文を生成する。ステップ５１２のあと、コンパイラバックエンドは次のレジスタ転送レベル（ＲＴＬ）文グループのコンテクストにおいて次のレジスタ転送レベル（ＲＴＬ）文を検討する必要があるかどうかを決定する。検討する必要があるときには、この好適な方法はステップ５０８に戻る。必要がなければ、この好適な方法は終了する。
【００５７】
本発明は、動的再構成計算のためのコンパイラを含んでいることが好ましい。図５と図６は、動的再構成計算のためのコンパイラによって実行される好ましいコンパイル演算のフローチャートである。好ましいコンパイル演算はステップ６００から始まり、動的再構成計算のためのコンパイラのフロントエンドが一連のプログラム命令内の次の高レベル文を選択する。次にステップ６０２で動的再構成計算のためのコンパイラのフロントエンドは、選択された高レベル文が再構成指示であるかどうかを決定する。再構成指示であるときには、ステップ６０４で動的再構成計算のためのコンパイラのフロントエンドはレジスタ転送レベル（ＲＴＬ）再構成文を生成し、ステップ６００に戻る。好ましい実施例では、レジスタ転送レベル（ＲＴＬ）再構成文は命令セットアーキテクチャ（ＩＳＡ）識別を含む非標準レジスタ転送レベル（ＲＴＬ）文である。ステップ６０２で、選択した高レベルプログラム文が再構成指示ではないときには、次にステップ６０６で動的再構成計算のためのコンパイラのフロントエンドは従来の方法で１組のレジスタ転送レベル（ＲＴＬ）文を生成する。ステップ６０６のあと、ステップ６０８で動的再構成計算のためのコンパイラのフロントエンドはさらに別の高レベル文を検討する必要があるかどうかを決定する。検討する必要があるときには、この好適な方法はステップ６００に戻る。そうでないときにはこの好適な方法はステップ６１０に進み、バックエンド演算を開始する。
【００５８】
ステップ６１０で、動的再構成計算のためのコンパイラのバックエンドはレジスタ割当て演算を実行する。本発明の好ましい実施例では、各命令セットアーキテクチャ（ＩＳＡ）は命令セットアーキテクチャ（ＩＳＡ）ごとのレジスタアーキテクチャが互いに一致するように定められている。したがって、レジスタ割当て演算は従来の方法で実行される。当業者は、一般に、命令セットアーキテクチャ（ＩＳＡ）ごとのレジスタアーキテクチャが互いに一致することが絶対的要件ではないことを認めるであろう。次にステップ６１２で動的再構成計算のためのコンパイラのバックエンドは、現在検討中のレジスタ転送レベル（ＲＴＬ）文グループ内で次のレジスタ転送レベル（ＲＴＬ）文を選択する。次にステップ６１４で動的再構成計算のためのコンパイラのバックエンドは、選択したレジスタ転送レベル（ＲＴＬ）文がレジスタ転送レベル（ＲＴＬ）再構成文であるかどうかを決定する。選択したレジスタ転送レベル（ＲＴＬ）文がレジスタ転送レベル（ＲＴＬ）再構成文でないときには、ステップ６１８で動的再構成計算のためのコンパイラのバックエンドは、現在検討中のレジスタ転送レベル（ＲＴＬ）文グループについてのルールが存在するかどうかを決定する。存在しなければ、この好適な方法はステップ６１２に戻り、現在検討中のレジスタ転送レベル（ＲＴＬ）文グループに含めるために次のレジスタ転送レベル（ＲＴＬ）文グループを選択する。ステップ６１８で現在検討中のレジスタ転送レベル（ＲＴＬ）文グループについてのルールが存在するときには、次にステップ６２０で動的再構成計算のためのコンパイラのバックエンドはこのルールに従って現在検討中のレジスタ転送レベル（ＲＴＬ）文グループに対応する１組のアセンブリ言語文を生成する。ステップ６２０のあと、ステップ６２２で動的再構成計算のためのコンパイラのバックエンドは、次のレジスタ転送レベル（ＲＴＬ）文グループのコンテクストにおいて、さらに別のレジスタ転送レベル（ＲＴＬ）文を検討する必要があるかどうかを決定する。検討する必要があればこの好適な方法はステップ６１２に戻り、そうでなければこの好適な方法は終了する。
【００５９】
ステップ６１４で、選択したレジスタ転送レベル（ＲＴＬ）文がレジスタ転送レベル（ＲＴＬ）再構成文であるときには、ステップ６１６で動的再構成計算のためのコンパイラのバックエンドはレジスタ転送レベル（ＲＴＬ）再構成文内の命令セットアーキテクチャ（ＩＳＡ）識別に対応する１組のルールセットを選択する。本発明では、各命令セットアーキテクチャ（ＩＳＡ）について独自のルールが存在することが好ましい。従って各ルールセットは、特定の命令セットアーキテクチャ（ＩＳＡ）に従ってレジスタ転送レベル（ＲＴＬ）文グループをアセンブリ言語文に変換するための１つまたはそれ以上のルールを提供する。ステップ６１６のあと、好適な方法はステップ６１８に進む。任意の命令セットアーキテクチャ（ＩＳＡ）に対応するルールセットは、レジスタ転送レベル（ＲＴＬ）再構成文を、ソフトウェア割込みを生じるような１組のアセンブリ言語命令に翻訳するためのルールを含んでいることが好ましい。このソフトウェア割込みの結果、再構成ハンドラーが実行されるが、これについては下記に詳しく説明する。
【００６０】
上記に説明した方法では、動的再構成計算のためのコンパイラは選択的にまた自動的にコンパイル演算中に多重命令セットアーキテクチャ（ＩＳＡ）に従ってアセンブリ言語文を生成する。言い換えれば、コンパイル中、動的再構成計算のためのコンパイラはそれぞれ異なる命令セットアーキテクチャ（ＩＳＡ）に従って１組のプログラム命令をコンパイルする。動的再構成計算のためのコンパイラは、図５と図６を用いて上に説明したような好ましいコンパイル演算を実行するよう修正した従来型コンパイラであることが好ましい。当業者は、必要とされる修正は複雑ではないが、このような修正は先行技術コンパイル技術及び先行技術再構成計算技術から見て自明ではないことを認めるであろう。
【００６１】
図７は、動的再構成処理装置（ＤＲＰＵ）３２の好ましい実施例の構成図である。動的再構成処理装置（ＤＲＰＵ）３２は、命令取出し装置（ＩＦＵ）６０と、データ演算装置（ＤＯＵ）６２と、アドレス演算装置（ＡＯＵ）６４とを含んでいる。命令取出し装置（ＩＦＵ）６０と、データ演算装置（ＤＯＵ）６２と、アドレス演算装置（ＡＯＵ）６４のそれぞれは、第１タイミング信号ライン４０に結合されたタイミング入力部を含んでいる。命令取出し装置（ＩＦＵ）６０は、メモリ制御ライン４２に結合されたメモリ制御出力部と、メモリ入出力ライン４６に結合されたデータ入力部と、外部制御ライン４８に結合された双方向制御ポートとを含んでいる。命令取出し装置（ＩＦＵ）６０はさらに、第１制御ライン７０を経てデータ演算装置（ＤＯＵ）６２の第１制御入力部に結合された第１制御出力部と、第２制御ライン７２を経てアドレス演算装置（ＡＯＵ）６４の第１制御入力部に結合された第２制御出力部とを含んでいる。命令取出し装置（ＩＦＵ）６０は、第３制御ライン７４を経てデータ演算装置（ＤＯＵ）６２の第２制御入力部とアドレス演算装置（ＡＯＵ）６４の第２制御入力部に結合された第１制御出力部を含んでいる。データ演算装置（ＤＯＵ）６２とアドレス演算装置（ＡＯＵ）６４とは、それぞれメモリ入出力ライン４６に結合された双方向データポートを含んでいる。最後にアドレス演算装置（ＡＯＵ）６４は、動的再構成処理装置（ＤＲＰＵ）のアドレス出力部を形成するアドレス出力部を含んでいる。
【００６２】
動的再構成処理装置（ＤＲＰＵ）３２は、再構成論理装置または再プログラマブル論理装置、たとえばＸｉｌｉｎｘ  ＸＣ４０１３（Xilinx, Inc., サンノゼ，カリフォルニア）またはＡＴ＆Ｔ  ＯＲＣＡ  ＩＣ０７（ＡＴ＆Ｔ  Microelectronics, Allentown, ペンシルバニア）などのフィールドプログラマブルゲートアレイ（ＦＰＧＡ）を用いて実装されるのが好ましい。再プログラマブル論理装置は、複数の、
１）選択的再プログラマブル論理ブロック、または構成可能論理ブロック（ＣＬＢ：Selectively Reprogramable Logic Blocks or Configurable Logick Blocks）と、
２）選択的再プログラマブル入出力ブロック（ＩＯＢ：Ｉ／Ｏ Blocks）と、
３）選択的再プログラマブル相互結合構造と、
４）データ記憶リソースと、
５）３値バッファリソースと、
６）ワイヤード論理関数能力と、
を備えていることが好ましい。各論理ブロック（ＣＬＢ）は、論理関数を生成し、データを記憶し、信号のルーティングを行うための選択的再構成回路を含んでいることが好ましい。当業者は、使用中の再プログラマブル論理装置の正確な設計に応じて、再構成データ記憶回路が論理ブロック（ＣＬＢ）とは別の１個またはそれ以上のデータ記憶ブロック（ＤＳＢ：Data Storage Block）に含まれることもあることを認めるであろう。ここでは、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）内の再構成データ記憶回路は、論理ブロック（ＣＬＢ）内に取入れられている。すなわち、データ記憶ブロック（ＤＳＢ）の存在は想定されていない。当業者は、上に説明した論理ブロック（ＣＬＢ）ベース再構成データ記憶回路を利用する１個またはそれ以上の構成部分が、データ記憶ブロック（ＤＳＢ）が存在する場合にはデータ記憶ブロック（ＤＳＢ）ベース回路も利用できることを認めるであろう。各入出力ブロック（ＩＯＢ）は、論理ブロック（ＣＬＢ）とフィールドプログラマブルゲートアレイ（ＦＰＧＡ）出力ピンとの間でデータを転送するための選択的再構成回路を含んでいることが好ましい。構成データセットは、論理ブロック（ＣＬＢ）内で実行される関数を指定することによって動的再構成処理装置（ＤＲＰＵ）ハードウェア構成または編成を定め、また、
１）論理ブロック（ＣＬＢ）内、
２）論理ブロック（ＣＬＢ）相互間、
３）入出力ブロック（ＩＯＢ）内、
４）入出力ブロック（ＩＯＢ）相互間、及び、
５）論理ブロック（ＣＬＢ）と入出力ブロック（ＩＯＢ）との間
の相互結合を定める。当業者は、構成データセットによって、メモリ制御ライン４２と、アドレスライン４４と、メモリ入出力ライン４６と、外部制御ライン４８のそれぞれにおけるビット数が再構成可能であることを認めるであろう。再構成データセットは、システム１０の中の１個またはそれ以上のＳマシン３４に記憶されることが好ましい。当業者は、動的再構成処理装置（ＤＲＰＵ）３２がフィールドプログラマブルゲートアレイ（ＦＰＧＡ）ベース実装に限定されないことを認めるであろう。たとえば動的再構成処理装置（ＤＲＰＵ）３２は、１つまたはそれ以上のルックアップテーブルをおそらく含むＲＡＭベース状態マシンとして実装することができる。あるいは動的再構成処理装置（ＤＲＰＵ）３２は、複合プログラマブル論理装置（ＣＰＬＤ）を用いて実装することができる。しかし当業者は、システム１０のＳマシン１２の一部が再構成可能ではない動的再構成処理装置（ＤＲＰＵ）１２を含むことができることを認めるであろう。
【００６３】
好ましい実施例では、命令取出し装置（ＩＦＵ）６０と、データ演算装置（ＤＯＵ）６２と、アドレス演算装置（ＡＯＵ）６４はそれぞれ動的に再構成可能である。したがって、その内部ハードウェア構成はプログラム実行中に選択的に変更することができる。命令取出し装置（ＩＦＵ）６０は、命令取出し・復号演算と、メモリアクセス演算と、動的再構成処理装置（ＤＲＰＵ）再構成演算とを指示し、命令の実行を容易に行うためにデータ演算装置（ＤＯＵ）６２とアドレス演算装置（ＡＯＵ）６４に制御信号を送る。データ演算装置（ＤＯＵ）６２は、データ計算に関する演算を実行し、アドレス演算装置（ＡＯＵ）６４はアドレス計算に関する演算を実行する。命令取出し装置（ＩＦＵ）６０と、データ演算装置（ＤＯＵ）６２と、アドレス演算装置（ＡＯＵ）６４のそれぞれの内部構造と演算については下記に詳しく説明する。
【００６４】
図８は、命令取出し装置（ＩＦＵ）６０の好ましい実施例の構成図である。命令取出し装置（ＩＦＵ）６０は、命令状態シーケンサ（ＩＳＳ：Instruction State Sequencer）１００と、アーキテクチャ記述メモリ１０１と、メモリアクセスロジック１０２と、再構成ロジック１０４と、割込みロジック１０６と、取出し制御装置１０８と、命令バッファ１１０と、復号制御装置１１２と、命令復号器１１４と、操作コード記憶レジスタセット１１６と、レジスタファイル（ＲＦ：Register File）アドレスレジスタセット１１８と、定数レジスタセット１２０と、プロセス制御レジスタセット１２２とを含んでいる。命令状態シーケンサ（ＩＳＳ）１００は、それぞれ命令取出し装置（ＩＦＵ）６０の第１及び第２制御出力部を形成する第１及び第２制御出力部を含んでおり、また命令取出し装置（ＩＦＵ）６０のタイミング入力部を形成するタイミング入力部を含んでいる。また命令状態シーケンサ（ＩＳＳ）１００は、取出し／復号制御ライン１３０を経て取出し制御装置１０８の制御入力部と復号制御装置１１２の制御入力部とに結合された取出し／復号制御出力部を含んでいる。さらに命令状態シーケンサ（ＩＳＳ）１００は、双方向制御ライン１３２を経てメモリアクセスロジック１０２と、再構成ロジック１０４と、割込みロジック１０６のそれぞれの第１双方向制御ポートに結合された双方向制御ポートを含んでいる。また命令状態シーケンサ（ＩＳＳ）１００は、操作コードライン１４２を経て、操作コード記憶レジスタセット１１６の出力部に結合された操作コード入力部を含んでいる。最後に命令状態シーケンサ（ＩＳＳ）１００は、処理データライン１４４を経て、プロセス制御レジスタセット１２２の双方向制御ポートに結合された双方向制御ポートを含んでいる。
【００６５】
メモリアクセスロジック１０２と、再構成ロジック１０４と、割込みロジック１０６は、それぞれ外部制御ライン４８に結合された第２双方向制御ポートを含んでいる。さらにメモリアクセスロジック１０２と、再構成ロジック１０４と、割込みロジック１０６は、それぞれ実装制御ライン１３１を経てアーキテクチャ記述メモリ１０１のデータ出力部に結合されたデータ入力部を含んでいる。メモリアクセスロジック１０２は、さらに命令取出し装置（ＩＦＵ）６０のメモリ制御出力部を形成する制御出力部を含み、また割込みロジック１０６はさらに処理データライン１４４に結合された出力部を含んでいる。命令バッファ１１０は、命令取出し装置（ＩＦＵ）６０のデータ入力部を形成するデータ入力部と、取出し制御ライン１３４を経て取出し制御装置１０８の制御出力部に結合された制御入力部と、命令ライン１３６を経て命令復号器１１４の入力部に結合された出力部とを含んでいる。命令復号器１１４は、復号制御ライン１３８を経て復号制御装置１１２の制御出力部に結合された制御入力部と、復号命令ライン１４０を経て、
１）操作コード記憶レジスタ１１６の入力部と、
２）レジスタファイル（ＲＦ）アドレスレジスタセット１１８の入力部と、
３）定数レジスタセット１２０の入力部に結合された出力部と、
を含んでいる。レジスタファイル（ＲＦ）アドレスレジスタセット１１８と定数レジスタセット１２０は、それぞれ命令取出し装置（ＩＦＵ）６０の第３制御出力部７４を形成する出力部を含んでいる。
【００６６】
アーキテクチャ記述メモリ１０１は、現在の動的再構成処理装置（ＤＲＰＵ）構成を特徴付けるアーキテクチャ指定信号を記憶する。このアーキテクチャ指定信号は、
１）デフォルト構成データセットに対する基準と、
２）許容される構成データセットリストに対する基準と、
３）現在検討中の命令セットアーキテクチャ（ＩＳＡ）に対応する構成データセットに対する基準、すなわち現在の動的再構成処理装置（ＤＲＰＵ）構成を定める構成データセットに対する基準と、
４）命令取出し装置（ＩＦＵ）６０が存在するＳマシン１２に関連したＴマシン１４内の１個またはそれ以上の相互結合入出力装置３０４を識別する相互結合アドレスリスト（これについては、図１８を用いて下記に詳しく説明する）と、
５）割込み待ち時間と、命令取出し装置（ＩＦＵ）６０が割込みにどのように応答するかを定める割込み精度情報とを指定する１組の割込み応答信号と、
６）アトミックメモリアドレスインクリメントを定めるメモリアクセス定数と、を含んでいることが好ましい。好ましい実施例では、各構成データセットは、読出し専用メモリ（ＲＯＭ）として構成された１組の論理ブロック（ＣＬＢ）としてアーキテクチャ記述メモリ１０１を実動化する。アーキテクチャ記述メモリ１０１の内容を定めるアーキテクチャ指定信号は、各構成データセットに含まれることが好ましい。したがって、各構成データセットが特定の命令セットアーキテクチャ（ＩＳＡ）に対応するので、アーキテクチャ記述メモリ１０１の内容は、現在検討中の命令セットアーキテクチャ（ＩＳＡ）によって異なる。所定の命令セットアーキテクチャ（ＩＳＡ）について、アーキテクチャ記述メモリ１０１の内容へのプログラムアクセスは、命令セットアーキテクチャ（ＩＳＡ）にメモリ読出し命令を含めることによって容易に行われることが好ましい。これによってプログラム実行中に現在の動的再構成処理装置（ＤＲＰＵ）構成に関する情報をプログラムが検索することができる。
【００６７】
本発明では、再構成ロジック１０４は一連の再構成演算を制御する状態マシンであり、これによって構成データセットに応じて動的再構成処理装置（ＤＲＰＵ）３２の再構成が容易に行われる。再構成ロジック１０４は、再構成信号を受取り次第、再構成演算を開始することが好ましい。下記に詳しく説明するように、再構成信号は、外部制御ライン４８で受取った再構成割込みに応じて割込みロジック１０６が発生させた信号であるか、またはプログラムに埋込まれた再構成指示に応じて命令状態シーケンサ（ＩＳＳ）１００が発生させた信号である。再構成演算によって、アーキテクチャ記述メモリ１０１によって参照されるデフォルト構成データを用いて電源オン／リセット後の当初の動的再構成処理装置（ＤＲＰＵ）構成が得られる。また再構成演算によって、当初の動的再構成処理装置（ＤＲＰＵ）構成が確定したあとの選択的動的再構成処理装置（ＤＲＰＵ）再構成が得られる。再構成演算が完了すると再構成ロジック１０４は完了信号を発する。好ましい実施例では、再構成ロジック１０４は、再プログラマブル論理装置自体への構成データセットのローディングを制御する非再構成ロジックであり、したがって再構成演算のシーケンスは再プログラマブル論理装置のメーカーによって定められる。したがって、再構成演算は当業者に既知である。
【００６８】
各動的再構成処理装置（ＤＲＰＵ）構成は、対応する命令セットアーキテクチャ（ＩＳＡ）の実動化のための特定のハードウェア編成を定める構成データセットによって与えられるのが好ましい。好ましい実施例では、命令取出し装置（ＩＦＵ）６０は動的再構成処理装置（ＤＲＰＵ）構成に関係なく、上記の各構成部分を含んでいる。基本レベルでは、命令取出し装置（ＩＦＵ）６０内の各構成部分によって与えられる機能性は、現在検討中の命令セットアーキテクチャ（ＩＳＡ）とは無関係である。しかし、好ましい実施例では、命令取出し装置（ＩＦＵ）６０の１個またはそれ以上の構成部分の詳細な構造と機能性は、それが構成されている命令セットアーキテクチャ（ＩＳＡ）の特性に応じて異なる。好ましい実施例では、アーキテクチャ記述メモリ１０１及び再構成ロジック１０４の構造と機能性は、それぞれの動的再構成処理装置（ＤＲＰＵ）構成について一定であることが好ましい。命令取出し装置（ＩＦＵ）６０のその他の構成部分の構造と機能性について、またこれらが命令セットアーキテクチャ（ＩＳＡ）の種類によって異なることについては、下記に詳しく説明する。
【００６９】
プロセス制御レジスタセット１２２は、命令実行中に命令状態シーケンサ（ＩＳＳ）１００によって用いられる信号とデータを記憶する。好ましい実施例では、プロセス制御レジスタセット１２２は、プロセス制御ワードを記憶するためのレジスタと、割込みベクトルを記憶するためのレジスタと、構成データセットへの参照を記憶するためのレジスタとを含んでいる。プロセス制御ワードは、命令実行中に発生する状態にもとづいて選択的に設定またはリセットすることができる複数の条件フラグを含んでいることが好ましい。さらにプロセス制御ワードは、割込みを実施できる１つまたはそれ以上の方法を定める複数の遷移制御信号を含んでいる（これについては、下記に詳しく説明する）。好ましい実施例では、プロセス制御レジスタセット１２２は、データ記憶及びゲーティングロジックのために構成された１組の論理ブロック（ＣＬＢ）として実装される。
【００７０】
命令状態シーケンサ（ＩＳＳ）１００は、取出し制御装置１０８と復号制御装置１１２と、データ演算装置（ＤＯＵ）６２と、アドレス演算装置（ＡＯＵ）６４との演算を制御し、命令の実行を容易にするためにメモリ読出し信号とメモリ書込み信号をメモリアクセスロジック１０２に発信する状態マシンであることが好ましい。図９は、命令状態シーケンサ（ＩＳＳ）１００によって支援される１組の好ましい状態を示す状態図である。電源オンまたはリセット後、または再構成が行われた直後、命令状態シーケンサ（ＩＳＳ）１００は状態Ｐで演算を開始する。再構成ロジック１０４により発せられた完了信号に応じて、命令状態シーケンサ（ＩＳＳ）１００は状態Ｓに進み、命令状態シーケンサ（ＩＳＳ）は電源オン／リセットまたは再構成が行われた場合、それぞれプログラム状態情報を初期化するか、復元する。命令状態シーケンサ（ＩＳＳ）１００は次に状態Ｆに進み、命令取出し演算を実行する。命令取出し演算では、命令状態シーケンサ（ＩＳＳ）１００はメモリ読出し信号をメモリアクセスロジック１０２に発信し、取出し信号を取出し制御装置１０８に発信し、次命令プログラムアドレスレジスタ（ＮＩＰＡＲ）２３２をインクリメントするためにインクリメント信号をアドレス演算装置（ＡＯＵ）６４に発信する（これについては、図１５と図１６を用いて下記に詳しく説明する）。状態Ｆの後、命令状態シーケンサ（ＩＳＳ）１００は状態Ｄに進み、命令復号演算を開始する。状態Ｄで、命令状態シーケンサ（ＩＳＳ）１００は復号信号を復号制御１１２に発信する。状態Ｄで、命令状態シーケンサ（ＩＳＳ）１００はさらに復号命令に対応する操作コードを操作コード記憶レジスタセット１１６から検索する。検索した操作コードに基づいて、命令状態シーケンサ（ＩＳＳ）１００は状態Ｅまたは状態Ｍに進み、命令実行演算を実行する。命令が１回のクロックサイクルで実行できるときには、命令状態シーケンサ（ＩＳＳ）１００は状態Ｅに進む。それ以外の場合には、命令状態シーケンサ（ＩＳＳ）１００は複数のサイクルで命令を実行するために状態Ｍに進む。命令実行演算では、命令状態シーケンサ（ＩＳＳ）１００はデータ演算装置（ＤＯＵ）制御信号と、アドレス演算装置（ＡＯＵ）制御信号と、及び／または検索した操作コードに対応する命令の実行を容易にするためのメモリアクセスロジック１０２専用の信号とを生成する。状態ＥまたはＭのあと、命令状態シーケンサ（ＩＳＳ）１００は状態Ｗに進む。状態Ｗで、命令状態シーケンサ（ＩＳＳ）１００は、データ演算装置（ＤＯＵ）制御信号と、アドレス演算装置（ＡＯＵ）制御信号と、及び／または命令実行の結果の記憶を容易にするためのメモリ書込み信号とを生成する。したがって、状態Ｗはライトバック状態と呼ばれる。当業者は、状態Ｆ、Ｄ、Ｅ、Ｍ、Ｗが完全な命令実行サイクルを含むことを認めるであろう。状態Ｗのあと命令状態シーケンサ（ＩＳＳ）１００は、命令の実行を中断する必要があるときには状態Ｙに進む。状態Ｙは、たとえばＴマシン１４がＳマシンのメモリ３４にアクセスしなくてはならないときに必要とされるようなアイドル状態に対応している。状態Ｙのあと、または命令の実行を継続するときには状態Ｗの後、命令状態シーケンサ（ＩＳＳ）１００は状態Ｆに戻り、さらに別の命令実行サイクルを開始する。
【００７１】
図９に示すように、状態図には状態Ｉも含まれている。この状態は、割込み実施状態として定義される。本発明では、命令状態シーケンサ（ＩＳＳ）１００は割込みロジック１０６から割込み通知信号を受取る。図１０を用いて下記に詳しく説明するように、割込みロジック１０６は遷移制御信号を生成し、プロセス制御レジスタセット１２２内のプロセス制御ワード内に遷移制御信号を記憶する。遷移制御信号は、状態Ｆ、Ｄ、Ｅ、Ｍ、Ｗ、Ｙのどの状態が割込み可能かについて、また各割込み可能状態で必要とされる割込み精度のレベルについて、また状態Ｉのあとも命令の実行を継続すべき各割込み可能状態の次の状態を示すことが好ましい。命令状態シーケンサ（ＩＳＳ）１００が所定の状態で割込み通知信号を受取ったとき、遷移制御信号によって現在の状態が割込み可能であることが示されている場合には、命令状態シーケンサ（ＩＳＳ）１００は状態Ｉに進む。それ以外の場合には、命令状態シーケンサ（ＩＳＳ）１００は割込み可能状態に達するまで割込み信号を受取っていなかったかのように進む。
【００７２】
命令状態シーケンサ（ＩＳＳ）１００が状態Ｉに進むと、命令状態シーケンサ（ＩＳＳ）１００は割込みマスキングフラグを設定し、また割込みベクトルを検索するために、プロセス制御レジスタセット１２２にアクセスするのが好ましい。割込みベクトルを受取った後、命令状態シーケンサ（ＩＳＳ）１００は、割込みベクトルによって指定される割込みハンドラーに従来のようなサブルーチンジャンプを行い現在の割込みを実施するのが好ましい。
【００７３】
本発明では、動的再構成処理装置（ＤＲＰＵ）３２の再構成は、
１）外部制御ライン４８で表明される再構成割込みか、または、
２）一連のプログラム命令内の再構成指示の実行
に応じて開始される。好ましい実施例では、再構成割込みを行っても、また再構成指示を実行しても、再構成ハンドラーへのサブルーチンジャンプが行われる。再構成ハンドラーはプログラム状態情報をセーブし、構成データセットアドレスと再構成信号を再構成ロジック１０４に発信することが好ましい。
【００７４】
現在の割込みが再構成割込みでないときには、命令状態シーケンサ（ＩＳＳ）１００は、割込みが実施された場合に遷移制御信号によって示される次の状態に進み、これによって命令実行サイクルを再開し、完了し、または開始する。
【００７５】
好ましい実施例では、命令状態シーケンサ（ＩＳＳ）１００により支援される１組の状態は、動的再構成処理装置（ＤＲＰＵ）３２が構成される命令セットアーキテクチャ（ＩＳＡ）の特性に応じて異なる。したがって、典型的な内部ループ命令セットアーキテクチャ（ＩＳＡ）での場合のように、１つまたはそれ以上の命令が１回のクロックサイクルで実行できる命令セットアーキテクチャ（ＩＳＡ）について状態Ｍは存在しない。図に示すように、図９の状態図は、汎用外部ループ命令セットアーキテクチャ（ＩＳＡ）を実動化するために命令状態シーケンサ（ＩＳＳ）によって支援される状態を規定することが好ましい。内部ループ命令セットアーキテクチャ（ＩＳＡ）の実動化については、命令状態シーケンサ（ＩＳＳ）１００は複数の状態Ｆ、Ｄ、Ｅ、Ｗを並列に支援するのが好ましい。これによって当業者が容易に理解するような方法で命令実行のパイプライン制御を容易に行うことができる。好ましい実施例では、命令状態シーケンサ（ＩＳＳ）１００は現在検討中の命令セットアーキテクチャ（ＩＳＡ）に従って上記に述べた状態または状態のサブセットを支援する論理ブロック（ＣＬＢ）ベース状態マシンとして実動化される。
【００７６】
割込みロジック１０６は、遷移制御信号を生成し、外部制御ライン４８を経て受取った割込み信号に応じて割込み通知演算を実行する状態マシンを含んでいることが好ましい。図１０は、割込みロジック１０６によって支援される１組の好ましい状態を示す状態図である。割込みロジック１０６は状態Ｐで演算を開始する。状態Ｐは、電源オン、リセット、または再構成状態に対応している。再構成ロジック１０４によって発せられた完了信号に応じて、割込みロジック１０６は状態Ａに進み、アーキテクチャ記述メモリ１０１から割込み応答信号を検索する。割込みロジック１０６は、次に割込み応答信号から遷移制御信号を生成し、この遷移制御信号をプロセス制御レジスタセット１２２に記憶する。好ましい実施例では、割込みロジック１０６は、割込み応答信号を受取り遷移制御信号を生成するための論理ブロック（ＣＬＢ）ベースプログラマブル論理アレイ（ＰＬＡ）を含んでいる。状態Ａのあと、割込みロジック１０６は状態Ｂに進み割込み信号を待つ。割込み信号を受取り、プロセス制御レジスタセット１２２内の割込みマスキングフラグがリセットされた場合に割込みロジック１０６は状態Ｃに進む。状態Ｃでは、割込みロジック１０６は割込みの開始点と、割込み優先度と、割込みハンドラーアドレスとを決定する。割込み信号が再構成割込みのときには、割込みロジック１０６は状態Ｒに進み、構成データセットアドレスをプロセス制御レジスタセット１２２に記憶する。状態Ｒのあと、または割込み信号が再構成割込みではないときには状態Ｃのあと、割込みロジック１０６は状態Ｎに進み、割込みハンドラーアドレスをプロセス制御レジスタセット１２２に記憶する。割込みロジック１０６は次に状態Ｘに進み、割込み通知信号を命令状態シーケンサ（ＩＳＳ）１００に発する。状態Ｘのあと、割込みロジック１０６は状態Ｂに戻り、次の割込み信号を待つ。
【００７７】
好ましい実施例では、割込み応答信号が、したがって遷移制御信号が指定する割込み待ち時間のレベルは、動的再構成処理装置（ＤＲＰＵ）３２が構成されている現在の命令セットアーキテクチャ（ＩＳＡ）によって異なる。たとえば高性能リアルタイム動作制御用の命令セットアーキテクチャ（ＩＳＡ）では、迅速で予測可能な割込み応答能力が求められる。したがって、このような命令セットアーキテクチャ（ＩＳＡ）に対応する構成データセットは、待ち時間の短い割込みが必要であることを示す割込み応答信号を含んでいることが好ましい。対応する遷移制御信号は、複数の命令状態シーケンサ（ＩＳＳ）状態を割込み可能として識別することが好ましい。これにより、命令実行サイクルが完了する前に割込みによって命令実行サイクルを中断することができる。リアルタイム動作制御用の命令セットアーキテクチャ（ＩＳＡ）とは異なり、画像畳込み演算用の命令セットアーキテクチャ（ＩＳＡ）では、単位時間当たりに実行される畳込み演算の回数が最大となるような割込み応答能力が必要である。画像畳込み演算用命令セットアーキテクチャ（ＩＳＡ）に対応する構成データセットは、待ち時間の長い割込みが必要であることを指定する割込み応答信号を含んでいることが好ましい。対応する遷移制御信号は、状態Ｗを割込み可能として識別することが好ましい。画像畳込み演算用命令セットアーキテクチャ（ＩＳＡ）を実装するために構成され、命令状態シーケンサ（ＩＳＳ）１００が複数の状態Ｆ、Ｄ、Ｅ、Ｗを並列に支援するときには、遷移制御信号はそれぞれ状態Ｗを割込み可能として識別し、さらに各並列命令実行サイクルがその状態Ｗ演算を完了するまで割込み実施を遅延すべきであることを指定することが好ましい。これにより、割込みが実施される前にすべての命令が実行されることが保証され、これによって適切なパイプライン実行能力レベルが維持される。
【００７８】
割込み待ち時間のレベルと同様に、割込み応答信号によって指定される割込み精度のレベルも動的再構成処理装置（ＤＲＰＵ）３２が構成される命令セットアーキテクチャ（ＩＳＡ）によって異なる。たとえば、状態Ｍが割込み可能なマルチサイクル演算を支援する外部ループ命令セットアーキテクチャ（ＩＳＡ）について割込み可能状態であると定められた場合、割込み応答信号は正確な割込みが必要であることを指定することが好ましい。したがって遷移制御信号は、マルチサイクル演算がうまく再スタートできるよう状態Ｍで受取った割込みを正確な割込みとして扱うよう指定する。もう１つの例として、無欠陥パイプライン算術演算を支援する命令セットアーキテクチャ（ＩＳＡ）については、割込み応答信号は不正確な割込みが必要であると指定することが好ましい。次に遷移制御信号は、状態Ｗで受取った割込みを不正確な割込みとして扱うことを指定する。
【００７９】
任意の命令セットアーキテクチャ（ＩＳＡ）については、割込み応答信号は命令セットアーキテクチャ（ＩＳＡ）の対応する構成データセットの一部によって定められ、またプログラムされる。プログラマブル割込み応答信号によって、また対応する遷移制御信号を生成することにより、本発明では、命令セットアーキテクチャ（ＩＳＡ）ごとの最適の割込みスキームを実動化することが容易となっている。当業者は、先行技術コンピュータアーキテクチャのほとんどでは、割込み能力、すなわちプログラマブル状態遷移の有効化、プログラマブル割込み待ち時間、及びプログラマブル割込み精度を柔軟に指定できないことを認めるであろう。好ましい実施例では、割込みロジック１０６は上記のような状態を支援する論理ブロック（ＣＬＢ）ベース状態マシンとして実装される。
【００８０】
取出し制御装置１０８は、命令セットアーキテクチャ（ＩＳＡ）１００によって発せられた取出し信号に応じて命令バッファ１１０に命令をロードするよう指示する。好ましい実施例では、取出し制御装置１０８は１組の論理ブロック（ＣＬＢ）内でフリップフロップを用いた従来型のワンホット符号化状態マシンとして実装される。当業者は、別の実施例で、取出し制御装置１０８が従来型の符号化状態マシンとして、またはＲＯＭベース状態マシンとして構成できることを認めるであろう。命令バッファ１１０は、メモリ３４からロードされた命令を一時記憶する。外部ループ命令セットアーキテクチャ（ＩＳＡ）の実装については、命令バッファ１１０は多重論理ブロック（ＣＬＢ）を用いた従来型のＲＡＭベース先入れ先出し（ＦＩＦＯ）バッファとして実装されるのが好ましい。内部ループ命令セットアーキテクチャ（ＩＳＡ）の実装については、命令バッファ１１０は１組の入出力ブロック（ＩＯＢ）内で複数のフリップフロップを用いた、または入出力ブロック（ＩＯＢ）と論理ブロック（ＣＬＢ）の両方で複数のフリップフロップを用いた１組のフリップフロップレジスタとして実装されるのが好ましい。
【００８１】
復号制御装置１１２は、命令セットアーキテクチャ（ＩＳＡ）１００によって発せられた復号信号に応じて、命令を命令バッファ１１０から命令復号器１１４へ転送するよう指示する。内部ループ命令セットアーキテクチャ（ＩＳＡ）については、復号制御装置１１２は論理ブロック（ＣＬＢ）ベースレジスタに結合された論理ブロック（ＣＬＢ）ベースＲＯＭを含むＲＯＭベース状態マシンとして実装されるのが好ましい。外部ループ命令セットアーキテクチャ（ＩＳＡ）については、復号制御装置１１２は論理ブロック（ＣＬＢ）ベース符号化状態マシンとして実装されるのが好ましい。入力として受取った各命令については、命令復号器１１４は、従来の方法で対応する操作コードと、レジスタファイルアドレスと、選択的に１つまたはそれ以上の定数とを出力する。内部ループ命令セットアーキテクチャ（ＩＳＡ）については、命令復号器１１４は入力として受取った一連の命令を復号するよう構成されていることが好ましい。好ましい実施例では、命令復号器１１４は現在検討中の命令セットアーキテクチャ（ＩＳＡ）に含まれる各命令を復号するために構成された論理ブロック（ＣＬＢ）ベース復号器として実装される。
【００８２】
操作コード記憶レジスタセット１１６は、命令復号器１１４による各操作コード出力を一時記憶し、また各操作コードを命令状態シーケンサ（ＩＳＳ）１００に出力する。外部ループ命令セットアーキテクチャ（ＩＳＡ）を動的再構成処理装置（ＤＲＰＵ）３２に実装するとき、操作コード記憶レジスタセット１１６は最適数のフリップフロップレジスタバンクを用いて実装されることが好ましい。フリップフロップレジスタバンクは、命令バッファ１１０を通りすでに待ち行例を形成している命令の操作コードリテラルビットフィールドから導出されるクラスコードまたはグループコードを表す信号を命令復号器１１４から受取る。フリップフロップレジスタバンクは、命令状態シーケンサ（ＩＳＳ）の複雑性を最小限にとどめることのできる復号スキームに従って、前述のクラスコードまたはグループコードを記憶する。内部ループ命令セットアーキテクチャ（ＩＳＡ）の場合には、操作コード記憶レジスタセット１１６は、命令復号器１１４による操作コードリテラルビットフィールドから直接導出される操作コード指示信号を記憶する。内部ループ命令セットアーキテクチャ（ＩＳＡ）は小さい操作コードリテラルビットフィールドを必然的に有し、これによってそれぞれ命令バッファ１１０と、命令復号器１１４と、操作コード記憶レジスタセット１１６とによるバッファリングと、復号化と、命令シーケンシング（順序づけ）のための操作コード表示とについての実装要件を最小限にとどめる。以上をまとめると、外部ループ命令セットアーキテクチャ（ＩＳＡ）については、操作コード記憶レジスタセット１１６は操作コードリテラルサイズに等しいビット幅またはその一部として特徴付けられるフリップフロップレジスタバンクの小さな組合わせとして実装されることが好ましい。内部ループについては、操作コード記憶レジスタセット１１６は外部ループ命令セットアーキテクチャ（ＩＳＡ）の場合よりもフリップフロップレジスタバンクが小さくまた統合されていることが好ましい。内部ループで、フリップフロップレジスタバンクのサイズが小さくて済むのは、外部ループ命令セットアーキテクチャ（ＩＳＡ）と比較して内部ループ命令セットアーキテクチャ（ＩＳＡ）の命令数がきわめて少ないためである。
【００８３】
レジスタファイル（ＲＦ）アドレスレジスタセット１１８と定数レジスタセット１２０は、それぞれ命令復号器１１４による各レジスタファイルと各定数出力とを一時記憶する。好ましい実施例では、操作コード記憶レジスタセット１１６と、レジスタファイル（ＲＦ）アドレスレジスタセット１１８と、定数レジスタセット１２０とはそれぞれデータ記憶のために構成された１組の論理ブロック（ＣＬＢ）として実装される。
【００８４】
メモリアクセスロジック１０２は、アーキテクチャ記述メモリ１２２で指定されたアトミックメモリアドレスのサイズに従って、メモリ３４と、データ演算装置（ＤＯＵ）６２と、アドレス演算装置（ＡＯＵ）６４との間でデータの転送を指示し同期させるメモリ制御回路である。メモリアクセスロジック１０２はさらに、Ｓマシン１２と所定のＴマシン１４との間のデータとコマンドの転送を指示し同期させる。好ましい実施例では、メモリアクセスロジック１０２はバーストメモリアクセスを支援し、論理ブロック（ＣＬＢ）を用いた従来型のＲＡＭコントローラとして実装されることが好ましい。当業者は、再構成中に、再構成論理装置の入力ピンと出力ピンが３値であり、抵抗停止によって非表明ロジックレベルを定めることができ、したがってメモリ３４を混乱させないことを認めるであろう。別の実施例では、メモリアクセスロジック１０２は動的再構成処理装置（ＤＲＰＵ）３２の外部に実装することができる。
【００８５】
図１１は、データ演算装置６２の好ましい実施例の構成図である。データ演算装置（ＤＯＵ）６２はデータ演算装置（ＤＯＵ）制御信号と、レジスタファイル（ＲＦ）アドレスと、命令セットアーキテクチャ（ＩＳＡ）１００から受取った定数とに従ってデータについて演算を実行する。データ演算装置（ＤＯＵ）６２は、データ演算装置（ＤＯＵ）クロスバースイッチ１５０と、記憶／整列ロジック１５２と、データ演算ロジック１５４とを含んでいる。データ演算装置（ＤＯＵ）クロスバースイッチ１５０と、記憶／整列ロジック１５２と、データ演算ロジック１５４とはそれぞれ第１制御ライン７０を経て命令取出し装置（ＩＦＵ）６０の第１制御出力部に結合された制御入力部を含んでいる。データ演算装置（ＤＯＵ）クロスバースイッチ１５０は、データ演算装置（ＤＯＵ）の双方向データポートを形成する双方向データポートと、第３制御ライン７４に結合された定数入力部と、第１データライン１６０を経てデータ演算ロジック１５４のデータ出力部に結合された第１データフィードバック入力部と、第２データライン１６４を経て記憶／整列ロジック１５２のデータ出力部に結合された第２データフィードバック入力部と、第３データラインを経て記憶／整列ロジック１５２のデータ入力部に結合されたデータ出力部とを含んでいる。記憶／整列ロジック１５２は、そのデータ出力部の他に、第３制御ライン７４に結合されたアドレス入力部を含んでいる。データ演算ロジック１５４は、さらに第２データライン１６４を経て記憶／整列ロジックの出力部に結合されたデータ入力部を含んでいる。
【００８６】
データ演算ロジック１５４は、その制御入力部で受取ったデータ演算装置（ＤＯＵ）制御信号に応じて、そのデータ入力部で受取ったデータについて、算術演算、シフト演算及び／または論理演算を実行する。記憶／整列ロジック１５２は、それぞれそのアドレス入力部と制御入力部とで受取ったレジスタファイル（ＲＦ）アドレスとデータ演算装置（ＤＯＵ）制御の指示に従って、オペランドと、定数と、データ計算に関連した部分的結果とを一時記憶するデータ記憶素子を含んでいる。データ演算装置（ＤＯＵ）クロスバースイッチ１５０は、その制御入力部で受取ったデータ演算装置（ＤＯＵ）制御信号に従って、メモリ３４からのデータのローディングと、データ演算ロジック１５４による結果出力の記憶／整列ロジック１５２またはメモリ３４への転送と、命令取出し装置（ＩＦＵ）６０による定数出力の記憶／整列ロジック１５２へのローディングとを容易にするような従来型のクロスバースイッチネットワークであることが好ましい。好ましい実施例では、データ演算ロジック１５４の詳細な構造は、現在検討中の命令セットアーキテクチャ（ＩＳＡ）によって支援される演算の種類によって定まる。すなわち、データ演算ロジック１５４は、現在検討中の命令セットアーキテクチャ（ＩＳＡ）内のデータ処理命令によって指定された算術演算及び／または論理演算を実行するための回路を含んでいる。同様に、記憶／整列ロジック１５２とデータ演算装置（ＤＯＵ）クロスバースイッチ１５０の詳細な構造は、現在検討中の命令セットアーキテクチャ（ＩＳＡ）によって定まる。命令セットアーキテクチャ（ＩＳＡ）の種類によるデータ演算ロジック１５４と、記憶／整列ロジック１５２と、データ演算装置（ＤＯＵ）クロスバースイッチ１５０との詳細な構造は、図１２及び図１３を参照して下記に詳しく説明する。
【００８７】
外部ループ命令セットアーキテクチャ（ＩＳＡ）については、データ演算装置（ＤＯＵ）６２はデータに対して逐次演算を実行するよう構成されていることが好ましい。図１２は、汎用外部ループ命令セットアーキテクチャ（ＩＳＡ）の実動化のために構成されたデータ演算装置（ＤＯＵ）６１の第１模範実施例の構成図である。汎用外部ループ命令セットアーキテクチャ（ＩＳＡ）では、乗算、加算、減算などの数学的演算と、ＡＮＤ、ＯＲ、ＮＯＴなどのブール演算と、シフト演算と、回転演算とを実行するために構成されたハードウェアが必要である。したがって、汎用外部ループ命令セットアーキテクチャ（ＩＳＡ）の実装については、データ演算ロジック１５４は第１入力部と、第２入力部と、制御入力部と、出力部とを有する従来型の演算論理装置（ＡＬＵ）／シフタ１８４とを含んでいることが好ましい。記憶／整列ロジック１５２は、第１ＲＡＭ１８０と第２ＲＡＭ１８２とで構成されていることが好ましく、これはそれぞれデータ入力部と、データ出力部と、アドレス選択入力部と、イネーブル入力部とを含んでいる。データ演算装置（ＤＯＵ）クロスバースイッチ１５０は、双方向及び単方向クロスバー結合部を有し、また図１１を用いてすでに説明したような入力部と出力部とを有する従来型のクロスバースイッチネットワークを含んでいることが好ましい。当業者は、外部ループ命令セットアーキテクチャ（ＩＳＡ）のためのデータ演算装置（ＤＯＵ）クロスバースイッチ１５０の効率的な実動化には、マルチプレクサと、３値バッファと、論理ブロック（ＣＬＢ）ベースロジックと、直接配線と、または再構成結合手段によって、いずれかの組合わせで結合された上記構成部分のサブセットが含まれることを認めるであろう。外部ループについては、データ演算装置（ＤＯＵ）クロスバースイッチ１５０は最短時間で逐次データ移動を促進するよう実動化されるが、汎用外部ループ命令を支援するために最大数の単一データ移動クロスバー結合部も提供する。
【００８８】
第１ＲＡＭ１８０のデータ入力部は第２ＲＡＭ１８２のデータ入力部と同様に、第３データライン１６２を経てデータ演算装置（ＤＯＵ）クロスバースイッチ１５０のデータ出力部に結合されている。第１ＲＡＭ１８０と第２ＲＡＭ１８２とのアドレス選択入力部は、第３制御ライン７４を経て命令取出し装置（ＩＦＵ）６０からレジスタファイルアドレスを受取るよう結合されている。同様に、第１ＲＡＭ１８０と第２ＲＡＭ１８２とのイネーブル入力部は、第１制御ライン７０を経てデータ演算装置（ＤＯＵ）制御信号を受取るよう結合されている。第１ＲＡＭ１８０と第２ＲＡＭ１８２とのデータ出力部は、それぞれＡＬＵ／シフタ１８４の第１入力部と第２入力部に結合されており、またデータ演算装置（ＤＯＵ）クロスバースイッチ１５０の第２データフィードバック入力部にも結合されている。ＡＬＵ／シフタ１８４の制御入力部は、第１制御ライン７０を経てデータ演算装置（ＤＯＵ）制御信号を受取るよう結合されている。またＡＬＵ／シフタ１８４の出力部は、データ演算装置（ＤＯＵ）クロスバースイッチ１５０の第１データフィードバック入力部に結合されている。データ演算装置（ＤＯＵ）クロスバースイッチ１５０の残りの入力部と出力部への結合部は、図１１を用いて上記に説明したものと同一である。
【００８９】
データ演算命令の実行を容易にするために、命令取出し装置（ＩＦＵ）６０は命令状態シーケンサ（ＩＳＳ）が状態ＥまたはＭであるときに、データ演算装置（ＤＯＵ）制御信号と、レジスタファイル（ＲＦ）アドレス信号と、定数信号とをデータ演算装置（ＤＯＵ）６１に発する。第１ＲＡＭ１８０と第２ＲＡＭ１８２とは、それぞれ一時データ記憶のための第１及び第２レジスタファイルを提供する。第１ＲＡＭ１８０と第２ＲＡＭ１８２内の個々のアドレスは、各ＲＡＭのそれぞれのアドレス選択入力部で受取ったレジスタファイル（ＲＦ）アドレスに従って選択される。同様に、第１ＲＡＭ１８０と第２ＲＡＭ１８２のローディングは、その書込みイネーブル入力部で各第１ＲＡＭ１８０と第２ＲＡＭ１８２とがそれぞれ受取るデータ演算装置（ＤＯＵ）制御信号によって制御される。好ましい実施例では、第１ＲＡＭ１８０と第２ＲＡＭ１８２の少なくとも１個が、データ演算装置（ＤＯＵ）クロスバースイッチ１５０からＡＬＵ／シフタ１８４へデータを直接転送するのを容易にするための伝達（引渡し）能力を含んでいる。ＡＬＵ／シフタ１８４は、その制御入力部で受取ったデータ演算装置（ＤＯＵ）制御信号の指示に従って、第１ＲＡＭ１８０から受取った第１オペランドに基づいて、及び／または第２ＲＡＭ１８２から受取った第２オペランドに基づいて、算術演算、論理演算、またはシフト（桁送り）演算を実行する。データ演算装置（ＤＯＵ）クロスバースイッチ１５０は選択的に、
１）メモリ３４と第１ＲＡＭ１８０及び第２ＲＡＭ１８２との間のデータのルーティングと、
２）ＡＬＵ／シフタ１８４から第１ＲＡＭ１８０及び第２ＲＡＭ１８２へ、またはメモリ３４への結果のルーティングと、
３）第１ＲＡＭ１８０または第２ＲＡＭ１８２に記憶されたデータのメモリ３４へのルーティングと、
４）命令取出し装置（ＩＦＵ）６０から第１ＲＡＭ１８０及び第２ＲＡＭ１８２への定数のルーティングと、
を行う。すでに述べたように、第１ＲＡＭ１８０か第２ＲＡＭ１８２のいずれかが伝達能力を有するときには、データ演算装置（ＤＯＵ）クロスバースイッチ１５０も選択的にメモリ３４からＡＬＵ／シフタ１８４に、またはＡＬＵ／シフタの出力部からＡＬＵ／シフタ１８４に直接戻るようデータをルーティングする。データ演算装置（ＤＯＵ）クロスバースイッチ１５０は、その制御入力部で受取ったデータ演算装置（ＤＯＵ）制御信号に従って、特定のルーティング演算を実行する。好ましい実施例では、ＡＬＵ／シフタ１８４は再構成論理装置内の数学的演算用の１組の論理ブロック（ＣＬＢ）と回路内の論理関数発生器を用いて実装される。第１ＲＡＭ１８０と第２ＲＡＭ１８２は、それぞれ１組の論理ブロック（ＣＬＢ）内に存在するデータ記憶回路を用いて実装されることが好ましい。データ演算装置（ＤＯＵ）クロスバースイッチ１５０は、すでに述べた方法で実装されることが好ましい。
【００９０】
図１３は、内部ループ命令セットアーキテクチャ（ＩＳＡ）の実動化のために構成されたデータ演算装置（ＤＯＵ）６３の第２模範実施例の構成図である。一般に内部ループ命令セットアーキテクチャ（ＩＳＡ）は比較的少ない専用演算を支援し、大きなデータセットに対して共通した演算セットを実行するのに用いることが好ましい。したがって、内部ループ命令セットアーキテクチャ（ＩＳＡ）のための最適の計算性能は、演算を並列に実行するために構成されたハードウェアによって得られる。したがってデータ演算装置（ＤＯＵ）６３の第２模範実施例では、データ演算ロジック１５４と、記憶／整列ロジック１５２と、データ演算装置（ＤＯＵ）クロスバースイッチ１５０とはパイプライン計算を実行するよう構成される。データ演算ロジック１５４は、複数の入力部と、制御入力部と、出力部とを有するパイプライン機能単位１９４を含んでいる。記憶／整列ロジック１５２は、
１）１組の従来型のフリップフロップアレイ１９２（それぞれがデータ入力部と、データ出力部と、制御入力部とを含んでいる）と、
２）データセレクタ１９０（制御入力部と、データ入力部と、フリップフロップアレイ１９２に対応する数のデータ出力部とを含んでいる）と、
を含んでいる。データ演算装置（ＤＯＵ）クロスバースイッチ１５０は、二重単方向クロスバー結合部を有する従来型のクロスバースイッチネットワークを含んでいる。データ演算装置（ＤＯＵ）６３の第２模範実施例では、データ演算装置（ＤＯＵ）クロスバースイッチ１５０は第２データフィードバック入力部を除き、図１１を用いてすでに説明した入力部と出力部とを含んでいることが好ましい。外部ループ命令セットアーキテクチャ（ＩＳＡ）の場合と同様に、内部ループ命令セットアーキテクチャ（ＩＳＡ）のためのデータ演算装置（ＤＯＵ）クロスバースイッチ１５０の効率的な実装には、マルチプレクサと、３値バッファと、論理ブロック（ＣＬＢ）ベースロジックと、直接配線と、または再構成可能な方法で結合された上記構成部分のサブセットとを含めることができる。内部ループ命令セットアーキテクチャ（ＩＳＡ）については、データ演算装置（ＤＯＵ）クロスバースイッチ１５０は最短時間で並列データ移動を最大にするよう実装されるのが好ましいが、高度パイプライン化内部ループ命令セットアーキテクチャ（ＩＳＡ）命令を支援するために、最小数の単一データ動作クロスバー結合部も提供する。
【００９１】
データセレクタ１９０のデータ入力部は、第１データライン１６２を経てデータ演算装置（ＤＯＵ）クロスバースイッチ１５０のデータ出力部に結合されている。データセレクタ１９０の制御入力部は、第３制御ライン７４を経てレジスタファイル（ＲＦ）アドレスを受取るよう結合されており、データセレクタ１９０の各出力部は、対応するフリップフロップアレイデータ入力部に結合されている。各フリップフロップアレイ１９２の制御入力部は、第１制御ライン７０を経てデータ演算装置（ＤＯＵ）制御信号を受取るよう結合されており、各フリップフロップアレイデータ出力部は機能単位１９４の入力部に結合されている。機能単位１９４の制御入力部は、第１制御ライン７０を経てデータ演算装置（ＤＯＵ）制御信号を受取るよう結合されており、機能単位１９４の出力部はデータ演算装置（ＤＯＵ）クロスバースイッチ１５０の第１データフィードバック入力部に結合されている。データ演算装置（ＤＯＵ）クロスバースイッチ１５０の残りの入力部と出力部の結合部は、図１１を用いて既に説明したものと同一である。
【００９２】
演算では、機能単位１９４はその制御入力部で受取ったデータ演算装置（ＤＯＵ）制御信号に従ってそのデータ入力部で受取ったデータに対してパイプライン演算を実行する。当業者は、機能単位１９４が乗算／累算装置か、閾値決定装置か、画像回転装置か、エッジ強調装置か、または区分されたデータに対してパイプライン演算を実行するのに適したいずれかの種類の機能単位であることを認めるであろう。データセレクタ１９０は、その制御入力部で受取ったレジスタファイル（ＲＦ）アドレスに従ってデータ演算装置（ＤＯＵ）クロスバースイッチ１５０の出力部から所定のフリップフロップアレイ１９２へデータをルーティング（経路決定）する。各フリップフロップアレイ１９２は、その制御入力部で受取った制御信号の指示に従って、もう１個のフリップフロップアレイ１９２のデータ内容に対してデータを空間的、時間的に整列させるために逐次結合されたデータラッチを含んでいることが好ましい。データ演算装置（ＤＯＵ）クロスバースイッチ１５０は選択的に、
１）データをメモリ３４からデータセレクタ１９０へルーティングし、
２）結果を乗算／累算装置１９４からデータセレクタ１９０またはメモリ３４へルーティングし、
３）定数を命令取出し装置（ＩＦＵ）６０からデータセレクタ１９０へルーティングする。
当業者は、内部ループ命令セットアーキテクチャ（ＩＳＡ）が１組の「内蔵」定数を含んでいることを認めるであろう。このような内部ループ命令セットアーキテクチャ（ＩＳＡ）の実装では、記憶／整列ロジック１５４が内蔵定数を有する論理ブロック（ＣＬＢ）ベースＲＯＭを含んでいることが好ましく、これによってデータ演算装置（ＤＯＵ）クロスバースイッチ１５０を経て命令取出し装置（ＩＦＵ）６０から記憶／整列ロジック１５２へ定数をルーティングする必要性をなくすことができる。好ましい実施例では、機能単位１９４は１組の論理ブロック（ＣＬＢ）内の数学的演算用の論理関数発生器と回路とを用いて実装されるのが好ましい。各フリップフロップアレイ１９２は１組の論理ブロック（ＣＬＢ）内のフリップフロップを用いて実装されることが好ましい。データセレクタ１９０は１組の論理ブロック（ＣＬＢ）内の論理関数発生器とデータ選択回路とを用いて実装されることが好ましい。最後にデータ演算装置（ＤＯＵ）クロスバースイッチ１５０は、内部ループについてすでに説明した方法で実装されることが好ましい。
【００９３】
図１４は、アドレス演算装置（ＡＯＵ）６４の好ましい実施例の構成図である。アドレス演算装置（ＡＯＵ）６４は、アドレス演算装置（ＡＯＵ）制御信号と、レジスタファイル（ＲＦ）アドレスと、命令取出し装置（ＩＦＵ）６０から受取った定数とに従ってアドレスに対して演算を実行する。アドレス演算装置（ＡＯＵ）６４は、アドレス演算装置（ＡＯＵ）クロスバースイッチ２００と、記憶／計数ロジック２０２と、アドレス演算ロジック２０４と、アドレスマルチプレクサ２０６とを含んでいる。アドレス演算装置（ＡＯＵ）クロスバースイッチ２００と、記憶／計数ロジック２０２と、アドレス演算ロジック２０４と、アドレスマルチプレクサ２０６とは、それぞれ第２制御ライン７２を経て命令取出し装置（ＩＦＵ）６０の第２制御出力部に結合された制御入力部を含んでいる。アドレス演算装置（ＡＯＵ）クロスバースイッチ２００は、アドレス演算装置（ＡＯＵ）の双方向データポートを形成する双方向データポートと、第１アドレスライン２１０を経てアドレス演算ロジック２０４のアドレス出力部に結合されたアドレスフィードバック入力部と、第３制御ライン７４に結合された定数入力部と、第２アドレスライン２１２を経て記憶／計数ロジック２０２のアドレス入力部に結合されたアドレス出力部とを含んでいる。記憶／計数ロジック２０２は、そのアドレス入力部と制御入力部の他に、第３制御ライン７４に結合されたレジスタファイル（ＲＦ）アドレス入力部と、第３アドレスライン２１４を経てアドレス演算ロジック２０４のアドレス入力部に結合されたアドレス出力部とを含んでいる。アドレスマルチプレクサ２０６は、第１アドレスライン２１０に結合された第１入力部と、第３アドレスライン２１４に結合された第２入力部と、アドレス演算装置（ＡＯＵ）６４のアドレス出力部を形成する出力部とを含んでいる。
【００９４】
アドレス演算ロジック２０４は、その制御入力部で受取ったアドレス演算装置（ＡＯＵ）制御信号の指示に従ってそのアドレス入力部で受取ったアドレスに対して算術演算を実行する。記憶／計数ロジック２０２は、アドレス及びアドレス計算結果を一時記憶する。アドレス演算装置（ＡＯＵ）クロスバースイッチ２００は、その制御入力部で受取ったアドレス演算装置（ＡＯＵ）制御信号に従って、メモリ３４からのアドレスのローディングと、アドレス演算ロジック２０４の結果出力の記憶／計数ロジック２０２またはメモリ３４への転送と、命令取出し装置（ＩＦＵ）６０による定数出力の記憶／計数ロジック２０２へのローディングとを容易にする。アドレスマルチプレクサ２０６は、その制御入力部で受取ったアドレス演算装置（ＡＯＵ）制御信号の指示に従って、記憶／計数ロジック２０２またはアドレスマルチプレクサ２０６から受取ったアドレスをアドレス演算装置（ＡＯＵ）６４のアドレス出力部に選択的に出力する。好ましい実施例では、アドレス演算装置（ＡＯＵ）クロスバースイッチ２００と、記憶／計数ロジック２０２と、アドレス演算ロジック２０４との詳細な構造は、図１５と図１６を用いて下記に説明するように、現在検討中の命令セットアーキテクチャ（ＩＳＡ）の種類により定まる。
【００９５】
図１５は、汎用外部ループ命令セットアーキテクチャ（ＩＳＡ）の実動化のために構成されたアドレス演算装置（ＡＯＵ）６５の第１模範実施例の構成図である。汎用外部ループ命令セットアーキテクチャ（ＩＳＡ）では、記憶／計数ロジック２０２に記憶されたプログラムカウンタとアドレスの内容に対して加算、減算、インクリメント、及びデクリメントなどの演算を実行するためのハードウェアが必要である。アドレス演算装置（ＡＯＵ）６５の第１模範実施例では、アドレス演算ロジック２０４は、入力部と、出力部と、制御入力部とを有する次命令プログラムアドレスレジスタ（ＮＩＰＡＲ）２３２と、第１入力部と、第２入力部と、第３入力部と、制御入力部と、出力部とを有する演算装置２３４と、第１入力部と、第２入力部と、制御入力部と、出力部とを有するマルチプレクサ２３０とを含んでいることが好ましい。記憶／計数ロジック２０２は、それぞれ入力部と、出力部と、アドレス選択入力部と、イネーブル入力部とを有する第３ＲＡＭ２２０と第４ＲＡＭ２２２とを含んでいることが好ましい。アドレスマルチプレクサ２０６は、第１入力部と、第２入力部と、第３入力部と、制御入力部と、出力部とを有するマルチプレクサを含んでいることが好ましい。アドレス演算装置（ＡＯＵ）クロスバースイッチ２００は、二重単方向クロスバー結合部と、図１４を用いてすでに説明した入力部と出力部とを有する従来型クロスバースイッチネットワークを含んでいることが好ましい。アドレス演算装置（ＡＯＵ）クロスバースイッチ２００の効率的な実動化には、マルチプレクサと、３値バッファと、論理ブロック（ＣＬＢ）ベースロジックと、直接配線と、または再構成結合部によって結合されたこのような構成部分のサブセットが含まれる。外部ループ命令セットアーキテクチャ（ＩＳＡ）については、アドレス演算装置（ＡＯＵ）クロスバースイッチ２００は最短時間で逐次データ移動を最大化するよう実装されることが好ましいが、汎用外部ループアドレス演算命令を支援するために最大数の一意のアドレス移動クロスバー結合部も提供する。
【００９６】
第３ＲＡＭ２２０の入力部と第４ＲＡＭ２２２との入力部とは、それぞれ第２アドレスライン２１２を経てアドレス演算装置（ＡＯＵ）クロスバースイッチ２００の出力部に結合されている。第３ＲＡＭ２２０と第４ＲＡＭ２２２とのアドレス選択入力部は、第３制御ライン７４を経て命令取出し装置（ＩＦＵ）６０からレジスタファイル（ＲＦ）アドレスを受取るよう結合されている。第３ＲＡＭ２２０と第４ＲＡＭ２２２とのイネーブル入力部は、第２制御ライン７２を経てアドレス演算装置（ＡＯＵ）制御信号を受取るよう結合されている。第３ＲＡＭ２２０の出力部は、マルチプレクサ２３０の第１入力部と、演算装置２３４の第１入力部と、アドレスマルチプレクサ２０６の第１入力部とに結合されている。同様に、第４ＲＡＭ２２２の出力部は、マルチプレクサ２３０の第２入力部と、演算装置２３４の第２入力部と、アドレスマルチプレクサ２０６の第２入力部とに結合されている。マルチプレクサ２３０と、ＮＩＰＡＲ２３２と、演算装置２３４との制御入力部は、それぞれ第２制御ライン７２に結合されている。演算装置２３４の出力部は、アドレス演算ロジック２０４の出力部を形成しており、したがって、アドレス演算装置（ＡＯＵ）クロスバースイッチ２００のアドレスフィードバック入力部とアドレスマルチプレクサ２０６の第３入力部とに結合されている。アドレス演算装置（ＡＯＵ）クロスバースイッチ２００とアドレスマルチプレクサ２０６との残りの入力部と出力部への結合部は、図１４を用いてすでに説明したものと同一である。
【００９７】
アドレス演算命令の実行を容易にするために、命令取出し装置（ＩＦＵ）６０は命令状態シーケンサ（ＩＳＳ）が状態ＥまたはＭの時に、アドレス演算装置（ＡＯＵ）制御信号と、レジスタファイル（ＲＦ）アドレスと、定数とをアドレス演算装置（ＡＯＵ）６４に発する。第３ＲＡＭ２２０と第４ＲＡＭ２２２とは、それぞれアドレスの一時記憶のための第１及び第２レジスタファイルを提供する。第３ＲＡＭ２２０と第４ＲＡＭ２２２内の各記憶位置は、各ＲＡＭのアドレス選択入力部で受取ったレジスタファイル（ＲＦ）アドレスに従って選択される。第３ＲＡＭ２２０と第４ＲＡＭ２２２とのローディングは、その書込みイネーブル入力部で第３ＲＡＭ２２０と第４ＲＡＭ２２２とがそれぞれ受取るアドレス演算装置（ＡＯＵ）制御によって制御される。マルチプレクサ２３０は、その制御入力部で受取ったアドレス演算装置（ＡＯＵ）制御信号の指示に従って、第３ＲＡＭ２２０と第４ＲＡＭ２２２とによるアドレス出力をＮＩＰＡＲ２３２に選択的にルーティングする。ＮＩＰＡＲ２３２は、マルチプレクサ２３０の出力部から受取ったアドレスをロードしてその制御入力部で受取ったアドレス演算装置（ＡＯＵ）制御信号に応じてその内容をインクリメントする。好ましい実施例では、ＮＩＰＡＲ２３２は、実行すべき次のプログラム命令のアドレスを記憶する。演算装置２３４は、第３ＲＡＭ２２０と第４ＲＡＭ２２２とから受取ったアドレスに対して、及び／またはＮＩＰＡＲ２３２の内容に対して加算、減算、インクリメント、及びデクリメントを含む算術演算を実行する。アドレス演算装置（ＡＯＵ）クロスバースイッチ２００は選択的に、
１）アドレスをメモリ３４から第３ＲＡＭ２２０と第４ＲＡＭ２２２とへルーティングし、
２）演算装置２３４によるアドレス計算出力の結果をメモリ３４または第３ＲＡＭ２２０と第４ＲＡＭ２２２とへルーティングする。
アドレス演算装置（ＡＯＵ）クロスバースイッチ２００は、制御入力部で受取ったアドレス演算装置（ＡＯＵ）制御信号に従って特定のルーティング演算を実行する。アドレスマルチプレクサ２０６は、この制御入力部で受取ったアドレス演算装置（ＡＯＵ）制御の指示に従って第３ＲＡＭ２２０によるアドレス出力と、第４ＲＡＭ２２２によるアドレス出力と、または演算装置２３４によるアドレス計算出力の結果とをアドレス演算装置（ＡＯＵ）のアドレス出力部に選択的にルーティングする。
【００９８】
好ましい実施例では、第３ＲＡＭ２２０と第４ＲＡＭ２２２とはそれぞれ１組の論理ブロック（ＣＬＢ）内に存在するデータ記憶回路を用いて実動化される。マルチプレクサ２３０とアドレスマルチプレクサ２０６とは、それぞれ１組の論理ブロック（ＣＬＢ）内に存在するデータ選択回路を用いて実動化されるのが好ましく、ＮＩＰＡＲ２３２は１組の論理ブロック（ＣＬＢ）内に存在するデータ記憶回路を用いて実装されることが好ましい。演算装置２３４は、１組の論理ブロック（ＣＬＢ）内の数学的演算用の論理関数発生器と回路とを用いて実装されることが好ましい。最後に、アドレス演算装置（ＡＯＵ）クロスバースイッチ２００は、すでに説明した方法で実装されることが好ましい。
【００９９】
図１６は、内部ループ命令セットアーキテクチャ（ＩＳＡ）の実装のために構成されたアドレス演算装置（ＡＯＵ）６６の第２模範実施例の構成図である。内部ループ命令セットアーキテクチャ（ＩＳＡ）はきわめて限られた数のアドレス演算を実行するためのハードウェアを必要とし、また少なくとも１個のソースアドレスポインタと、対応する数の宛先アドレスポインタを維持するためのハードウェアを必要とする。きわめて限られた数のアドレス演算または１個のアドレス演算が必要な内部ループ処理の種類には、画像データのブロック演算、ラスター演算、またはサーペンタイン演算と、ビットリバーサル演算と、環状バッファデータに対する演算と、可変長データパーシング演算とが含まれる。ここでは、１回のアドレス演算すなわち、インクリメント演算を検討する。当業者は、インクリメント演算を実行するハードウェアが本来デクリメント演算も実行でき、これによってさらに別のアドレス演算能力が得られることを認めるであろう。アドレス演算装置（ＡＯＵ）６６の第２模範実施例では、記憶／計数ロジック２０２は、入力部と、出力部と、制御入力部とを有する少なくとも１個のソースアドレスレジスタ２５２と、入力部と、出力部と、制御入力部とを有する少なくとも１個の宛先アドレスレジスタ２５４と、入力部と、制御入力部と、現存のソースアドレスレジスタ２５２及び宛先アドレスレジスタ２５４の総数に等しい数の出力部とを有するデータセレクタ２５０とを含んでいる。ここでは、１個のソースアドレスレジスタ２５２と、１個の宛先アドレスレジスタ２５４を検討する。したがって、データセレクタ２５０は、第１出力部と第２出力部とを含んでいる。アドレス演算ロジック２０４は、入力部と、出力部と、制御入力部とを有するＮＩＰＡＲ２３２と、データセレクタと等しい数の入力部と、制御入力部と、出力部とを有するマルチプレクサ２６０とを含んでいる。ここでマルチプレクサ２６０は、第１入力部と第２入力部とを含んでいる。アドレスマルチプレクサ２０６は、データセレクタ出力部より１つ多い入力部と、制御入力部と、出力部とを有するマルチプレクサを含んでいることが好ましい。したがってここでは、アドレスマルチプレクサ２０６は、第１入力部と、第２入力部と、第３入力部とを含んでいる。アドレス演算装置（ＡＯＵ）クロスバースイッチ２００は、双方向及び単方向クロスバー結合部を有し、また図１４を用いてすでに説明した入力部と出力部とを有する従来型のクロスバースイッチネットワークを含んでいることが好ましい。アドレス演算装置（ＡＯＵ）クロスバースイッチ２００の効率的な実動化には、マルチプレクサと、３値バッファと、論理ブロック（ＣＬＢ）ベースロジックと、直接配線と、または再構成結合部によって結合されたこのような構成部分のサブセットが含まれる。内部ループ命令セットアーキテクチャ（ＩＳＡ）については、アドレス演算装置（ＡＯＵ）クロスバースイッチ２００は最短時間で並列アドレス移動を最大にするよう実動化されるのが好ましいが、内部ループ操作コードを支援するために、最大数の一意のアドレス移動クロスバー結合部も提供する。
【０１００】
データセレクタ２５０の入力部は、アドレス演算装置（ＡＯＵ）クロスバースイッチ２００の出力部に結合されている。データセレクタ２５０の第１及び第２出力部は、それぞれソースアドレスレジスタ２５２の入力部と宛先アドレスレジスタ２５４の入力部とに結合されている。ソースアドレスレジスタ２５２と宛先アドレスレジスタ２５４との制御入力部は、第２制御ライン７２を経てアドレス演算装置（ＡＯＵ）制御信号を受取るために結合されている。ソースアドレスレジスタ２５２の出力部は、マルチプレクサ２６０の第１入力部とアドレスマルチプレクサ２０６の第１入力部とに結合されている。同様に、宛先アドレスレジスタ２５４の出力部は、マルチプレクサ２６０の第２入力部とアドレスマルチプレクサ２０６の第２入力部とに結合されている。ＮＩＰＡＲ２３２の入力部は、マルチプレクサ２６０の出力部に結合されており、ＮＩＰＡＲ２３２の制御入力部は第２制御ライン７２を経てアドレス演算装置（ＡＯＵ）制御信号を受取るために結合されており、ＮＩＰＡＲ２３２の出力部はアドレス演算装置（ＡＯＵ）クロスバースイッチ２００のアドレスフィードバック入力部とアドレスマルチプレクサ２０６の第３入力部とに結合されている。アドレス演算装置（ＡＯＵ）クロスバースイッチ２００の残りの入力部と出力部とへの結合部は、図１４を用いて上記に説明したものと同一である。
【０１０１】
演算では、データセレクタ２５０は、その制御入力部で受取ったレジスタファイル（ＲＦ）アドレスに従ってアドレス演算装置（ＡＯＵ）クロスバースイッチから受取ったアドレスをソースアドレスレジスタ２５２または宛先アドレスレジスタ２５４にルーティングする。ソースアドレスレジスタ２５２は、その制御入力部に存在するアドレス演算装置（ＡＯＵ）制御信号に応じてその入力部に存在するアドレスをロードする。宛先アドレスレジスタ２５４は、同様の方法でその入力部に存在するアドレスをロードする。マルチプレクサ２６０は、その制御入力部で受取ったアドレス演算装置（ＡＯＵ）制御信号に従ってソースアドレスレジスタ２５２または宛先アドレスレジスタ２５４から受取ったアドレスをＮＩＰＡＲ２３２の入力部にルーティングする。ＮＩＰＡＲ２３２は、その制御入力部で受取ったアドレス演算装置（ＡＯＵ）制御信号に応じてその入力部に存在するアドレスをロードし、その内容をインクリメントするか、またはデクリメントする。アドレス演算装置（ＡＯＵ）クロスバースイッチ２００は選択的に、
１）アドレスをメモリ３４からデータセレクタ２５０にルーティングし、
２）ＮＩＰＡＲ２３２の内容をメモリ３４またはデータセレクタ２５０にルーティングする。
アドレス演算装置（ＡＯＵ）クロスバースイッチ２００は、その制御入力部で受取ったアドレス演算装置（ＡＯＵ）制御信号に従って特定のルーティング演算を実行する。アドレスマルチプレクサ２０６は、その制御入力部で受取ったアドレス演算装置（ＡＯＵ）制御信号の指示に従って、ソースアドレスレジスタ２５２、宛先アドレスレジスタ２５４、またはＮＩＰＡＲ２３２の内容をアドレス演算装置（ＡＯＵ）のアドレス出力部に選択的にルーティングする。
【０１０２】
好ましい実施例では、ソースアドレスレジスタ２５２と宛先アドレスレジスタ２５４とは、それぞれ１組の論理ブロック（ＣＬＢ）内に存在するデータ記憶回路を用いて実動化される。ＮＩＰＡＲ２３２は、１組の論理ブロック（ＣＬＢ）内のインクリメント／デクリメントロジック及びフリップフロップを用いて実動化されることが好ましい。データセレクタ２５０と、マルチプレクサ２３０と、アドレスマルチプレクサ２０６とは、それぞれ１組の論理ブロック（ＣＬＢ）内に存在するデータ選択回路を用いて実動化されることが好ましい。最後にアドレス演算装置（ＡＯＵ）クロスバースイッチ２００は、内部ループ命令セットアーキテクチャ（ＩＳＡ）についてすでに述べた方法で実動化されることが好ましい。当業者は、一部のアプリケーションでは、外部ループデータ演算装置（ＤＯＵ）構成を備えた内部ループアドレス演算装置（ＡＯＵ）構成に依存する命令セットアーキテクチャ（ＩＳＡ）を用いることが、またはその逆（内部ループアドレス演算装置（ＡＯＵ）構成を備えた外部ループデータ演算装置（ＤＯＵ）構成）が有利であることを認めるであろう。たとえば連想ストリング探索命令セットアーキテクチャ（ＩＳＡ）は、外部ループアドレス演算装置（ＡＯＵ）構成を備えた内部ループデータ演算装置（ＤＯＵ）構成を利用すると有利であろう。別の例として、ヒストグラム演算を実行するための命令セットアーキテクチャ（ＩＳＡ）は、内部ループアドレス演算装置（ＡＯＵ）構成を備えた外部ループデータ演算装置（ＤＯＵ）構成を利用すると有利であろう。
【０１０３】
有限の再構成ハードウェアリソースを、動的再構成処理装置（ＤＲＰＵ）３２の各構成部分間で割当てなければならない。再構成ハードウェアリソースは数が限られているので、たとえばこれらを命令取出し装置（ＩＦＵ）６０に割当てるとデータ演算装置（ＤＯＵ）６２及びアドレス演算装置（ＡＯＵ）６４によって達成可能な最大計算性能レベルに影響を与える。再構成ハードウェアリソースを、命令取出し装置（ＩＦＵ）６０と、データ演算装置（ＤＯＵ）６２と、アドレス演算装置（ＡＯＵ）６４との間で割当てる方法は、任意の瞬間で実装される命令セットアーキテクチャ（ＩＳＡ）の種類に応じて異なる。命令セットアーキテクチャ（ＩＳＡ）が複雑になると、次第に複雑になる復号演算及び制御演算を容易に行うために、より多くの再構成ハードウェアリソースを命令取出し装置（ＩＦＵ）６０に割当てなければならなくなり、データ演算装置（ＤＯＵ）６２とアドレス演算装置（ＡＯＵ）６４との間で利用できる再構成ハードウェアリソースは少なくなる。したがって、データ演算装置（ＤＯＵ）６２とアドレス演算装置（ＡＯＵ）６４とによって達成可能な最大計算性能は、命令セットアーキテクチャ（ＩＳＡ）の複雑性が増すと低下する。一般に、外部ループ命令セットアーキテクチャ（ＩＳＡ）は内部ループ命令セットアーキテクチャ（ＩＳＡ）より多くの命令を含み、したがってその実装は、復号回路と制御回路においてかなり複雑となる。たとえば汎用６４ビットプロセッサを規定する外部ループ命令セットアーキテクチャ（ＩＳＡ）は、データ圧縮のみに用いられる内部ループ命令セットアーキテクチャ（ＩＳＡ）より多くの命令を含むことになると考えられる。
【０１０４】
図１７（ａ）は、外部ループ命令セットアーキテクチャ（ＩＳＡ）のための、命令取出し装置（ＩＦＵ）６０と、データ演算装置（ＤＯＵ）６２と、アドレス演算装置（ＡＯＵ）６４との間での再構成ハードウェアリソースの模範割当てを示す図である。外部ループ命令セットアーキテクチャ（ＩＳＡ）のための再構成ハードウェアリソースの模範割当てでは、命令取出し装置（ＩＦＵ）６０と、データ演算装置（ＤＯＵ）６２と、アドレス演算装置（ＡＯＵ）６４はそれぞれ利用できる再構成ハードウェアリソースの約３分の１を割当てられる。内部ループ命令セットアーキテクチャ（ＩＳＡ）を実装するために動的再構成処理装置（ＤＲＰＵ）３２を再構成すべきときには、内部ループ命令セットアーキテクチャ（ＩＳＡ）によって支援される命令の数とアドレス命令の種類が限られるため、命令取出し装置（ＩＦＵ）６０とアドレス演算装置（ＡＯＵ）６４とを実装するのに必要な再構成ハードウェアリソースは少なくて済む。図１７（ｂ）は、内部ループ命令セットアーキテクチャ（ＩＳＡ）のための、命令取出し装置（ＩＦＵ）６０と、データ演算装置（ＤＯＵ）６２と、アドレス演算装置（ＡＯＵ）６４との間での再構成ハードウェアリソースの模範割当てを示す図である。内部ループ命令セットアーキテクチャ（ＩＳＡ）のための再構成ハードウェアリソースの模範割当てでは、命令取出し装置（ＩＦＵ）６０は再構成ハードウェアリソースの約５〜１０％を用いて実装され、アドレス演算装置（ＡＯＵ）６４は再構成ハードウェアリソースの約１０〜２５％を用いて実装される。したがって、再構成ハードウェアリソースの約７０〜８０％はデータ演算装置（ＤＯＵ）６２の実装に利用できる。このことは、内部ループ命令セットアーキテクチャ（ＩＳＡ）に関連したデータ演算装置（ＤＯＵ）６２の内部構造が、内部ループ命令セットアーキテクチャ（ＩＳＡ）に関連したデータ演算装置（ＤＯＵ）６２の内部構造より複雑であってもよく、したがってはるかに高い性能を発揮できることを意味している。
【０１０５】
当業者は、別の実施例で動的再構成処理装置（ＤＲＰＵ）３２がデータ演算装置（ＤＯＵ）６２またはアドレス演算装置（ＡＯＵ）６４を除外できることを認めるであろう。たとえば別の実施例では、動的再構成処理装置（ＤＲＰＵ）３２はアドレス演算装置（ＡＯＵ）６４を含まなくても良い。その場合、データ演算装置（ＤＯＵ）６２はデータとアドレスの両方に対して演算を実行することになる。（上記で）検討した特定の動的再構成処理装置（ＤＲＰＵ）実施例とは無関係に、動的再構成処理装置（ＤＲＰＵ）３２の各構成部分を実装するために有限数の再構成ハードウェアリソースを割当てなければならない。再構成ハードウェアリソースは、利用できる再構成ハードウェアリソースの全スペースに対して現在検討中の命令セットアーキテクチャ（ＩＳＡ）について最適のまたは最適に近い能力が達成されるように割当てるのが好ましい。
【０１０６】
当業者は、命令取出し装置（ＩＦＵ）６０と、データ演算装置（ＤＯＵ）６２と、アドレス演算装置（ＡＯＵ）６４との各構成部分の詳細な構造が上記に説明した実施例に限定されないことを認めるであろう。所定の命令セットアーキテクチャ（ＩＳＡ）について、対応する構成データセットは、命令取出し装置（ＩＦＵ）６０と、データ演算装置（ＤＯＵ）６２と、アドレス演算装置（ＡＯＵ）６４内の各構成部分の内部構造が、利用できる再構成ハードウェアリソースに対して計算性能を最大限にするように定められるのが好ましい。
【０１０７】
図１８は、Ｔマシンの好ましい実施例の構成図である。Ｔマシン１４は、第２ローカルタイムベース装置３００と、共用インタフェース制御装置（ＣＩＣＵ：Common Interface and Control Unit）３０２と、１組の相互結合入出力装置３０４とを含んでいる。第２ローカルタイムベース装置３００は、Ｔマシンのマスタタイミング入力部を形成するタイミング入力部を含んでいる。共通インタフェース制御装置（ＣＩＣＵ）３０２は、第２タイミング信号ライン３１０を経て第２ローカルタイムベース装置３００のタイミング出力部に結合されたタイミング入力部と、アドレスライン４４に結合されたアドレス出力部と、メモリ入出力ライン４６に結合された第１双方向制御ポートと、外部制御ライン４８に結合された双方向制御ポートと、メッセージ転送ライン３１２を経て現存する各相互結合入出力装置３０４の双方向データポートに結合された第２双方向データポートとを含んでいる。各相互結合入出力装置３０４は、メッセージ入力ライン３１４を経て汎用相互結合マトリックス（ＧＰＩＭ）１６に結合された入力部と、メッセージ出力ライン３１６を経て汎用相互結合マトリックス（ＧＰＩＭ）１６に結合された出力部とを含んでいる。
【０１０８】
Ｔマシン１４内の第２ローカルタイムベース装置３００は、マスタタイムベース装置２２からマスタタイミング信号を受取り、第２ローカルタイミング信号を生成する。第２ローカルタイムベース装置３００は、第２ローカルタイミング信号を共通インタフェース制御装置（ＣＩＣＵ）３０２に送り、これによってそれが存在するＴマシン１４についてのタイミング基準を提供する。第２ローカルタイミング信号は、マスタタイミング信号と位相同期であることが好ましい。システム１０では、各Ｔマシンの第２ローカルタイムベース装置３００は同一の周波数で作動することが好ましい。当業者は、別の実施例では、１個またはそれ以上の第２ローカルタイムベース装置３００が異なる周波数で作動することを認めるであろう。第２ローカルタイムベース装置３００は、論理ブロック（ＣＬＢ）ベース位相ロック検出回路を含む従来型の位相ロック周波数変換回路を用いて実装されることが好ましい。当業者は、別の実施例では第２ローカルタイムベース装置３００がクロック分散ツリーの一部として実装できることを認めるであろう。
【０１０９】
共通インタフェース制御装置（ＣＩＣＵ）３０２は、その対応するＳマシン１２と特定の相互結合入出力装置３０４との間のメッセージの転送を指示し、このメッセージにはコマンドとおそらくデータとが含まれる。好ましい実施例では、指定された相互結合入出力装置３０４がシステム１０の内部または外部にあるいずれかのＴマシン１４または入出力Ｔマシン１８内に存在しても良い。好ましい実施例では、各相互結合入出力装置３０４は相互結合入出力装置３０４を一意的に識別する相互結合アドレスを割当てられているのが好ましい。所定のＴマシン内の相互結合入出力装置３０４についての相互結合アドレスは、対応するＳマシンのアーキテクチャ記述メモリ１０１に記憶される。
【０１１０】
共通インタフェース制御装置（ＣＩＣＵ）３０２は、それぞれメモリ入出力ライン４６と外部制御信号ライン４８とを経てその対応するＳマシン１２からデータとコマンドとを受取る。受取った各コマンドは、目的相互結合アドレスと実行すべき特定の種類の演算を指定するコマンドコードとを含んでいることが好ましい。好ましい実施例では、コマンドコードによって一意的に識別される種類の演算には、
１）データ読出し演算と、
２）データ書込み演算と、
３）再構成割込み転送を含む割込み信号転送と、
を含んでいる。目的相互結合アドレスは、データとコマンドとを転送すべき目的相互結合入出力装置３０４を識別する。共通インタフェース制御装置（ＣＩＣＵ）３０２は、従来の方法で１組のパケットベースメッセージとして各コマンドと関連データを転送することが好ましく、各メッセージには目的相互結合アドレスとコマンドコードとが含まれている。
【０１１１】
共通インタフェース制御装置（ＣＩＣＵ）３０２は、その対応するＳマシン１２からデータとコマンドとを受取る他に、メッセージ転送ライン３１２に結合された各相互結合入出力装置３０４からメッセージを受取る。好ましい実施例では、共通インタフェース制御装置（ＣＩＣＵ）３０２は、関連メッセージグループを単一のコマンドとデータシーケンスに変換する。コマンドがその対応するＳマシン１２内の動的再構成処理装置（ＤＲＰＵ）３２に向けられているときには、共通インタフェース制御装置（ＣＩＣＵ）３０２は外部制御信号ライン４８を経てコマンドを発する。コマンドがその対応するＳマシン１２内のメモリ３４に向けられているときには、共通インタフェース制御装置（ＣＩＣＵ）３０２は外部制御信号ライン４８を経て適切なメモリ制御信号を発し、またメモリアドレスライン４４を経てメモリアドレス信号を発する。データは、メモリ入出力ライン４６を経て転送される。好ましい実施例では、共通インタフェース制御装置（ＣＩＣＵ）３０２は、ＡＮＳＩ／ＩＥＥＥ規格１５９６−１９９２に定められた従来型のＳＣＩ切替装置によって実行される演算に類似した演算を実行するための論理ブロック（ＣＬＢ）ベース回路を含んでいる。
【０１１２】
各相互結合入出力装置３０４は、共通インタフェース制御装置（ＣＩＣＵ）３０２からメッセージを受取り、共通インタフェース制御装置（ＣＩＣＵ）３０２から受取った制御信号の指示に従って、このメッセージを汎用相互結合マトリックス（ＧＰＩＭ）１６を経て別の相互結合入出力装置３０４に転送する。好ましい実施例では、相互結合入出力装置３０４は、ＡＮＳＩ／ＩＥＥＥ規格１５９６−１９９２に定められたＳＣＩノードに基づいている。図１９は、相互結合入出力装置３０４の好ましい実施例の構成図である。相互結合入出力装置３０４は、アドレス復号器３２０と、入力ＦＩＦＯバッファ３２２と、バイパスＦＩＦＯバッファ３２４と、出力ＦＩＦＯバッファ３２６と、マルチプレクサ３２８とを含んでいる。アドレス復号器３２０は、相互結合入出力装置の入力部を形成する入力部と、入力ＦＩＦＯバッファ３２２に結合された第１出力部と、バイパスＦＩＦＯバッファ３２４に結合された第２出力部とを含んでいる。入力ＦＩＦＯバッファ３２２は、メッセージを共通インタフェース制御装置（ＣＩＣＵ）３０２に転送するためのメッセージ転送ライン３１２に結合された出力部を含んでいる。出力ＦＩＦＯバッファ３２６は、共通インタフェース制御装置（ＣＩＣＵ）３０２からメッセージを受取るためのメッセージ転送ライン３１２に結合された入力部と、マルチプレクサ３２８の第１入力部に結合された出力部とを含んでいる。バイパスＦＩＦＯバッファ３２４は、マルチプレクサ３２８の第２入力部に結合された出力部を含んでいる。最後にマルチプレクサ３２８は、メッセージ転送ライン３１２に結合された制御入力部と、相互結合入出力装置の出力部を形成する出力部とを含んでいる。
【０１１３】
相互結合入出力装置３０４は、アドレス復号器３２０の入力部でメッセージを受取る。アドレス復号器３２０は、受取ったメッセージで指定されている目的相互結合アドレスがそれが存在する相互結合入出力装置３０４の相互結合アドレスと同一であるかどうかを決定する。同一の場合には、アドレス復号器３２０はこのメッセージを入力ＦＩＦＯバッファ３２２にルーティングする。そうでなければアドレス復号器３２０は、メッセージをバイパスＦＩＦＯバッファ３２４にルーティングする。好ましい実施例では、アドレス復号器３２０は入出力ブロック（ＩＯＢ）と論理ブロック（ＣＬＢ）を用いて実装された復号器とデータセレクタとで構成される。
【０１１４】
入力ＦＩＦＯバッファ３２２は、その入力部で受取ったメッセージをメッセージ転送ライン３１２に転送する従来型のＦＩＦＯバッファである。バイパスＦＩＦＯバッファ３２４と出力ＦＩＦＯバッファ３２６とは、いずれもその入力部で受取ったメッセージをマルチプレクサ３２８に転送する従来型のＦＩＦＯバッファである。マルチプレクサ３２８は、その制御入力部で受取った制御信号に従って、バイパスＦＩＦＯバッファ３２４から受取ったメッセージまたは出力ＦＩＦＯバッファ３２６から受取ったメッセージを汎用相互結合マトリックス（ＧＰＩＭ）１６にルーティングする従来型のマルチプレクサである。好ましい実施例では、入力ＦＩＦＯバッファ３２２と、バイパスＦＩＦＯバッファ３２４と、出力ＦＩＦＯバッファ３２６とはそれぞれ１組の論理ブロック（ＣＬＢ）を用いて実装される。マルチプレクサ３２８は、１組の論理ブロック（ＣＬＢ）と入出力ブロック（ＩＯＢ）とを用いて実装されることが好ましい。
【０１１５】
図２０は、入出力Ｔマシン１８の好ましい実施例の構成図である。入出力Ｔマシン１８は、第３ローカルタイムベース装置３６０と、共通カスタムインタフェース制御装置３６２と、相互結合入出力装置３０４とを含んでいる。第３ローカルタイムベース装置３６０は、入出力Ｔマシンのマスタタイミング入力部を形成するタイミング入力部を含んでいる。相互結合入出力装置３０４は、メッセージ入力部ライン３１４を経て汎用相互結合マトリックス（ＧＰＩＭ）１６に結合された入力部と、メッセージ出力ライン３１６を経て汎用相互結合マトリックス（ＧＰＩＭ）１６に結合された出力部とを含んでいる。共通カスタムインタフェース制御装置３６２は、第３タイミング信号ライン３７０を経て第３ローカルタイムベース装置３６０のタイミング出力部に結合されたタイミング入力部と、相互結合入出力装置３０４の双方向データポートに結合された第１双方向データポートと、入出力装置２０への１組の結合部とを含んでいる。好ましい実施例では、入出力装置２０への１組の結合部は、入出力装置２０の双方向データポートに結合された第２双方向データポートと、入出力装置２０のアドレス入力部に結合されたアドレス出力部と、入出力装置２０の双方向制御ポートに結合された双方向制御ポートとを含んでいる。当業者は、共通カスタムインタフェース制御装置３６２が結合されている入出力装置２０の種類によって、入出力装置２０への結合部が定まることを容易に認めるであろう。
【０１１６】
第３ローカルタイムベース装置３６０は、マスタタイムベース装置２２からマスタタイミング信号を受取り、第３ローカルタイミング信号を生成する。第３ローカルタイムベース装置３６０は、第３ローカルタイミング信号を共通カスタムインタフェース制御装置３６２へ送り、それが配置されている入出力Ｔマシンにタイミング基準を提供する。好ましい実施例では、第３ローカルタイミング信号はマスタタイミング信号と位相同期している。各入出力Ｔマシンの第３ローカルタイムベース装置３６０は、同一の周波数で作動するのが好ましい。別の実施例では、１個またはそれ以上の第３ローカルタイムベース装置３６０は異なる周波数で作動することができる。第３ローカルタイムベース装置３６０は、論理ブロック（ＣＬＢ）ベース位相ロック検出回路を含む従来型の位相ロック周波数変換回路を用いて実装するのが好ましい。第１ローカルタイムベース装置３０及び第２ローカルタイムベース装置３００と同様の方法で、別の実施例では第３ローカルタイムベース装置３６０をクロック分散ツリーの一部として実装することができる。
【０１１７】
入出力Ｔマシン１８内の相互結合入出力装置３０４の構造と機能は、Ｔマシン１４についてすでに説明したものと同一であることが好ましい。入出力Ｔマシン１８内の相互結合入出力装置３０４は、任意のＴマシン１４内の各相互接続入出力装置３０４の場合と類似した方法でユニークな相互結合アドレスが割当てられる。
【０１１８】
共通カスタムインタフェース制御装置３６２は、それに結合された入出力装置２０と相互結合入出力装置３０４との間のメッセージの転送を指示し、このメッセージにはコマンドとおそらくデータとが含まれる。共通カスタムインタフェース制御装置３６２は、その対応する入出力装置２０からデータとコマンドとを受取る。入出力装置２０から受取った各コマンドは、目的相互結合アドレスと実行すべき特定の種類の演算を指定するコマンドコードとを含んでいることが好ましい。好ましい実施例では、コマンドコードによって一意的に識別される演算の種類には、
１）データ要求と、
２）データ転送確認と、
３）割込み信号転送と、
が含まれる。目的相互結合アドレスは、データとコマンドとを転送すべきシステム１０内の目的相互結合入出力装置３０４を識別する。共通カスタムインタフェース制御装置３６２は、従来の方法で１組のパケットベースメッセージとして各コマンドと関連データを転送することが好ましく、各メッセージには目的相互結合アドレスとコマンドコードとが含まれている。
【０１１９】
共通カスタムインタフェース制御装置３６２は、その対応する入出力装置２０からデータとコマンドとを受取る他に、その関連する入出力装置２０からメッセージを受取る。好ましい実施例では、共通カスタムインタフェース制御装置３６２は、その対応する入出力装置２０に支援される通信プロトコルに従って、関連メッセージグループを単一のコマンド及びデータシーケンスに変換する。好ましい実施例では、共通カスタムインタフェース制御装置３６２は、ＡＮＳＩ／ＩＥＥＥ規格１５９６−１９９２に定められた従来型のＳＣＩ切替装置によって実行される演算と類似した演算を実行するための論理ブロック（ＣＬＢ）ベース回路に結合された論理ブロック（ＣＬＢ）ベース入出力装置コントローラを含んでいる。
【０１２０】
汎用相互結合マトリックス（ＧＰＩＭ）１６は、相互結合入出力装置３０４の間の２点間並列メッセージルーティングを容易に行えるようにする従来型の相互結合メッシュである。好ましい実施例では、汎用相互結合マトリックス（ＧＰＩＭ）１６はワイヤーベースでｋ−ａｒｙのｎキューブの静的相互結合ネットワークである。図２１は、汎用相互結合マトリックス（ＧＰＩＭ）１６の模範実施例の構成図である。図２１では、汎用相互結合マトリックス（ＧＰＩＭ）１６は、複数の第１通信チャネル３８０と、複数の第２通信チャネル３８２とを含む、ｋ−ａｒｙの２キューブの環状体相互結合メッシュである。各第１通信チャネル３８０は、複数のノード接続部３８４を含んでおり、各第２通信チャネル３８２も同様に含んでいる。システム１０の各相互結合入出力装置３０４は、メッセージ入力ライン３１４と、メッセージ出力ライン３１６とが、所定の第１通信チャネル３８０と第２通信チャネル３８２内とで連続ノード接続部３８４と接続するように汎用相互結合マトリックス（ＧＰＩＭ）１６に結合されているのが好ましい。好ましい実施例では、各Ｔマシン１４は上記に説明した方法で第１通信チャネル３８０に結合された相互結合入出力装置３０４と、第２通信チャネル３８２に結合された相互結合入出力装置３０４とを含んでいる。Ｔマシン１４内の共通インタフェース制御装置（ＣＩＣＵ）３０２は、第１通信チャネル３８０に結合されたその相互結合入出力装置３０４と、第２通信チャネル３８２に結合されたその相互結合入出力装置３０４との間の情報のルーティングを容易に行えることが好ましい。したがって、図２１で３８０ｃと表記されている第１通信チャネル３８０に結合された相互結合入出力装置３０４と、３８２ｃと表記されている第２通信チャネル３８２に結合された相互結合入出力装置３０４とを含むＴマシン１４については、このＴマシンの共通インタフェース制御装置（ＣＩＣＵ）３０２は、第１通信チャネル３８０ｃと第２通信チャネル３８２ｃとの間の情報ルーティングを容易に行える。
【０１２１】
したがって汎用相互結合マトリックス（ＧＰＩＭ）１６は、並列に配置された相互結合入出力装置３０４間の複数のメッセージのルーティングを容易に行える。図２１の２次元汎用相互結合マトリックス（ＧＰＩＭ）１６については、各Ｔマシン１４は第１通信チャネル３８０について１個の相互結合入出力装置３０４を、また第２通信チャネル３８２について１個の相互結合入出力装置３０４を含んでいることが好ましい。当業者は、汎用相互結合マトリックス（ＧＰＩＭ）１６の次元が２次元を越える実施例では、Ｔマシン１４が２個を超える相互結合入出力装置３０４を含んでいることが好ましいことを認めるであろう。汎用相互結合マトリックス（ＧＰＩＭ）１６は、１６ビットデータパスを含むｋ−ａｒｙの２キューブとして実装されることが好ましい。
【０１２２】
上記の説明では、本発明の各種構成部分は、再構成ハードウェアリソースを用いて実装されることが好ましい。再構成論理装置のメーカーは、一般に再プログラマブルハードウェアリソースまたは再構成ハードウェアリソースを用いて従来型のデジタルハードウェアを実装するための指針を公表している。たとえば１９９４年度のＸｉｌｉｎｘプログラマブル論理装置データブック（xilinx, Inc., サンノゼ，カリフォルニア）には、次のようなアプリケーションノートが含まれている。すなわち、アプリケーションノートＸＡＰＰ００５．００２「レジスタベースＦＩＦＯ」、アプリケーションノートＸＡＰＰ０４４．００「高性能ＲＡＭベースＦＩＦＯ」、アプリケーションノートＸＡＰＰ０１３．００１「ＸＣ４０００での桁上げ専用ロジックの使用」、アプリケーションノートＸＡＰＰ０１８．００「ＸＣ４０００加算器とカウンタの性能の推定」、アプリケーションノートＸＡＰＰ０２８．００１「位相ロックループのための周波数／位相コンパレータ」、アプリケーションノートＸＡＰＰ０３１．０００「ＸＣ４０００ＲＡＭの使用」、アプリケーションノートＸＡＰＰ０３６．００１「４ポートＤＲＡＭコントロ−ラ．．．」、アプリケーションノートＸＡＰＰ０３９．００１「１８ビットパイプライン累算器」の各アプリケーションノートである。Ｘｉｌｉｎｘ社が公表している資料には、さらにＸｉｌｉｎｘプログラマブルロジックのユーザーのための季刊誌である「ＸＣＥＬＬ」に含まれる記事がある。たとえば１９９４年の第３号（通刊第１４号）には高速整数乗算器の実装に関する詳しい記事が掲載されている。
【０１２３】
この明細書で説明しているシステム１０は、動的に実装される多重命令セットアーキテクチャ（ＩＳＡ）のための拡張性、並列コンピュータアーキテクチャである。どのＳマシン１２も、別のＳマシン１２やホストコンピュータなどの外部ハードウェアリソースとは無関係に、それだけでコンピュータプログラム全体を実行することができる。どのＳマシン１２においても、多重命令セットアーキテクチャ（ＩＳＡ）は再構成割込み及び／またはプログラムに埋込まれた再構成指示に応じて、プログラム実行中に連続的に実装される。システム１０は多重Ｓマシン１２を含んでいるのが好ましいので、複数のプログラムが同時に実行されるのが好ましく、各プログラムは独立したものでも良い。したがって、システム１０が多重Ｓマシン１２を含んでいるのが好ましいので、多重命令セットアーキテクチャ（ＩＳＡ）はシステム初期化または再構成中以外はいつでも同時に（すなわち、並列に）実動化される。すなわち、任意の時間に複数のセットのプログラム命令が同時に実行され、プログラム命令の各セットは対応する命令セットアーキテクチャ（ＩＳＡ）に従って実行される。このような命令セットアーキテクチャ（ＩＳＡ）は、それぞれ一意なものである。
【０１２４】
Ｓマシン１２は、（複数の）Ｔマシン１４と、汎用相互結合マトリックス（ＧＰＩＭ）１６と、各入出力Ｔマシン１８とを経て、互いに、また入出力装置２０と通信する。各Ｓマシン１２は、独立した演算を実行できる、それ自体完全なコンピュータであるが、どのＳマシン１２もその他のＳマシン１２またはシステム１０全体についてマスタＳマシン１２として機能することができ、データ及び／またはコマンドをその他のＳマシン１２に、１個またはそれ以上のＴマシン１６に、１個またはそれ以上の入出力Ｔマシン１８に、１個またはそれ以上の入出力装置２２に送ることができる。
【０１２５】
したがって、本発明のシステム１０は、空間的及び時間的に１つまたはそれ以上のデータ並列（サブ）問題に分割できる問題、たとえば画像処理、医療用データ処理、校正済みカラーマッチング、データベース計算、ドキュメントの処理、連想探索エンジン、及びネットワークサーバについて特に有用である。オペランド列が多い計算問題については、並列計算法によって効率的な計算の高速化が得られるようにアルゴリズムを適用できるときには、データが並列していることになる。データ並列問題は既知の複雑さを含んでいて、これはＯ（ｎk）で表される。ｋの値は問題によって定まる。たとえば画像処理ではｋ＝２であり、医療用データ処理ではｋ＝３である。本発明では、各Ｓマシン１２はプログラム命令グループのレベルでデータの並列性を活用するのに用いられるのが好ましい。システム１０は多重Ｓマシン１２を含んでいるので、システム１０はプログラム全体のレベルでデータの並列性を活用するのに用いられるのが好ましい。
【０１２６】
任意の瞬間で必要な計算に対して、このようなハードウェアの計算性能を最適なものとするために、各Ｓマシン１２の命令処理ハードウェアを完全に再構成できるので、本発明のシステム１０によって大規模な計算力が得られる。各Ｓマシン１２は、他のＳマシン１２とは無関係に再構成することができる。システム１０は、ソフトウェアと、この明細書で説明した再構成ハードウェアとの間のプログラムされた境界、すなわちインタフェースとして各構成データセットを、したがって各命令セットアーキテクチャ（ＩＳＡ）を扱うのが有利である。さらに本発明のアーキテクチャによって、本来の場所で実際のシステムの問題を選択的に扱うために再構成ハードウェアを高レベルに構築することが容易となり、こうした問題には、割込みが命令処理に影響する方法と、リアルタイム処理とコンピュータ性能とを容易にする決定待ち時間応答の必要性と、欠陥処理に対する選択可能な応答の必要とが含まれる。
【０１２７】
その他のコンピュータアーキテクチャとは異なり、本発明はいつでもシリコンリソースを最大限に利用できることを開示している。本発明は、いつでも所望のサイズに拡大できる並列コンピュータシステムを提供し、その規模は数千個のＳマシン１２からなる大規模な並列システムでも可能である。このようなアーキテクチャの拡張性は、Ｓマシンベース命令処理がＴマシンベースデータ通信から意図的に分離されているので可能となっている。この命令処理／データ通信分離モデルは、データ並列計算にきわめて適している。Ｓマシンハードウェアの内部構造は、命令のタイムフローについて最適化されるのが好ましいが、Ｔマシンハードウェアの内部構造は、有効なデータ通信について最適化されるのが好ましい。Ｓマシン１２のセットとＴマシン１４のセットは、それぞれデータ並列計算の空間的・時間的区分において分離可能で構成可能なコンポーネントである。
【０１２８】
本発明を用いると、この明細書で説明した全体的構造を維持しながらさらに優れた計算性能を有するシステムを構築するのに将来の再構成ハードウェアを利用することができるかもしれない。言い換えれば、本発明のシステム１０は技術的に拡張可能である。現在用いられているほとんどすべての再構成論理装置は、メモリベース相補型金属酸化膜半導体（ＣＭＯＳ）技術を用いている。装置の能力の進歩は、半導体メモリ技術の流れ（傾向）に追随している。将来のシステムでは、Ｓマシン１２を構築するのに用いられる再構成論理装置は、この明細書に説明した内部ループ及び外部ループ命令セットアーキテクチャ（ＩＳＡ）に従った内部ハードウェアリソースの１区分を含むことになるであろう。大規模の再構成論理装置であっても、単一の装置内でより多くのデータ並列計算を実行する能力を単に提供するにすぎない。たとえば図１３を用いて上記に説明したデータ演算装置（ＤＯＵ）６３の第２模範実施例に含まれる機能単位１９４が大きいと、より大きなサイズの画像処理カーネルを含むことになるであろう。当業者は、本発明により提供される技術的拡張性がＣＭＯＳベース装置に限定されず、またフィールドプログラマブルゲートアレイ（ＦＰＧＡ）ベース実装にも限定されないことを認めるであろう。したがって、本発明は再構成可能性または再プログラマブル性を得るために用いられる特定の技術とは無関係に、技術的拡張性を提供する。
【０１２９】
図２２は、拡張性、並列、動的再構成計算のための好ましい方法のフローチャートである。図２２の方法は、システム１０内の各Ｓマシン１２内で実行されるのが好ましい。この好適な方法は、図２２のステップ１０００から始まり、再構成ロジック１０４が命令セットアーキテクチャ（ＩＳＡ）に対応する構成データセットを検索する。次にステップ１００２で、再構成ロジック１０４はステップ１０００で検索した構成データセットに従って、命令取出し装置（ＩＦＵ）６０と、データ演算装置（ＤＯＵ）６２と、アドレス演算装置（ＡＯＵ）６４内の各構成部分を構成し、これによって現在検討中の命令セットアーキテクチャ（ＩＳＡ）の実装のための動的再構成処理装置（ＤＲＰＵ）ハードウェア編成が得られる。ステップ１００２のあと、ステップ１００４で割込みロジック１０６はアーキテクチャ記述メモリ１０１に記憶された割込み応答信号を検索し、現在の動的再構成処理装置（ＤＲＰＵ）構成が割込みにどのように応答するかを定める遷移制御信号の対応するセットを生成する。その後、命令セットアーキテクチャ（ＩＳＡ）１００はステップ１００６でプログラム状態情報を初期化する。その後命令セットアーキテクチャ（ＩＳＡ）１００はステップ１００８で命令実行サイクルを開始する。
【０１３０】
次にステップ１０１０では、命令セットアーキテクチャ（ＩＳＡ）１００または割込みロジック１０６は再構成が必要かどうかを決定する。プログラム実行中に再構成指示が選択されるときには、命令セットアーキテクチャ（ＩＳＡ）１００は再構成が必要であると決定する。割込みロジック１０６は、再構成割込みに応じて再構成が必要であると決定する。再構成が必要なときには、この優先的方法はステップ１０１２に進み、ここで再構成ハンドラーはプログラム状態情報をセーブする。プログラム状態情報は、現在の動的再構成処理装置（ＤＲＰＵ）構成に対応した構成データセットへの引照を含んでいることが好ましい。ステップ１０１２のあと、この優先的方法はステップ１０００に戻り、再構成指示または再構成割込みによって引照される次の構成データセットを検索する。
【０１３１】
ステップ１０１０で再構成が必要とされないときには、ステップ１０１４で割込みロジック１０６は非再構成割込みを実施する必要があるかどうかを決定する。必要な場合には、次にステップ１０２０で、命令セットアーキテクチャ（ＩＳＡ）１００は命令実行サイクル内の現在の命令状態シーケンサ（ＩＳＳ）状態からの割込み実施状態への遷移が遷移制御信号に基づいて許容されるかどうかを決定する。割込み実施状態への遷移が許容されないときには、命令セットアーキテクチャ（ＩＳＡ）１００は命令実行サイクルの次の状態に進み、ステップ１０２０に戻る。遷移制御信号によって命令実行サイクル内の現在の命令状態シーケンサ（ＩＳＳ）状態からの割込み実施状態への遷移が許容されるときには、次にステップ１０２４で命令セットアーキテクチャ（ＩＳＡ）１００は割込み実施状態へと進む。ステップ１０２４で、命令セットアーキテクチャ（ＩＳＡ）１００はプログラム状態情報をセーブし、割込みを実施するためのプログラム命令を実行する。ステップ１０２４の後、この優先的方法はステップ１００８に戻り、現在の命令実行サイクルが完了していなかったときにはこれを再開し、（完了していたときには）次の命令実行サイクルを開始する。
【０１３２】
ステップ１０１４で非再構成割込みを実施する必要がないときには、この優先的方法はステップ１０１６に進み、現在のプログラムの実行が完了しているかどうかを決定する。現在のプログラムの実行を継続すべきときには、この優先的方法はステップ１００８に戻り、別の命令実行サイクルを開始する。それ以外の場合には、この優先的方法は終了する。
【０１３３】
本発明は、本発明のアーキテクチャにより必要とされるメモリ演算を実行するためのメタアドレス指定メカニズムを組入れている。本発明によれば、Ｔマシン１４はアドレス指定マシンとして用いられる。Ｔマシン１４は、割込み処理と、メッセージの待ち行列設定と、メタアドレス生成と、データパケットの全体的転送の制御とを実行する。図２３は、本発明に基づくデータパケット１８００の構成図である。データパケット１８００は、データ部分１８２４と、コマンド部分１８２０と、ソース地理アドレス１８１６と、サイズ区切り記号１８１２と、目的ローカルアドレスと、目的地理アドレス１８０４とを含んでいる。メタアドレス１８２８は、目的地理アドレス１８０４と、目的ローカルメモリアドレス１８０８とを含んでいる。目的ローカルメモリアドレス１８０８は、データパケット１８００のデータをローカルメモリ３４のどこに書込むかを指定する。目的地理アドレス、すなわち相互結合アドレス１８０４は、どのＴマシン１４がデータパケット１８００を受取るべきかを指定する。ソース地理アドレス１８１６は、データパケット１８００を生成したＴマシン１４を指定する。
【０１３４】
任意の２対のソース地理アドレス１８１６及び宛先
（目的）地理アドレス１８０４によって、２６４ビットのローカルアドレススペースへの１つの経路（パス）が一意的に決定される。しかし、システムにはこのような経路（パス）が２つ以上存在し、並列に作動することができる。Ｓマシン１２はそれに結合されたＴマシン１４を含み、その数はローカルメモリ帯域幅に相当する数まで、または持ち行列効果を考慮した任意の数までを含むことができる。したがって、本発明では２の不確定累乗分だけの拡張性が可能であり、またシステム内のプロセッサが不均一であってもよく、さらに各Ｓマシン１２へのユニークなパスの数を任意に拡張することができる。この種の拡張性は、分散画像処理など多くのアプリケーションで重要であり、動的再構成処理構成部分のピラミッドまたはツリーは、このシステムの高いレベルに対しさらに広い通信帯域幅を提供できるよう構成できるかもしれない。望む場合には、より多くの等速度Ｔマシン１４がＳマシン１２のピラミッドの高いレベルにアクセスできるようにすることによって、このピラミッドアーキテクチャを実装し、アドレス指定能力を最も必要とするＳマシン１２にこの能力を与える。これによって、システムリソースをほとんどの処理及び通信タスクに集中させることができるので、対費用効果のすぐれたシステムが得られる。
【０１３５】
好ましい実施例では、メタアドレスは８０ビット幅である。この実施例では、地理アドレスは１６ビットであり、ローカルメモリアドレスは６４ビット幅である。１６ビットの地理アドレスにより、６５５３６個の地理アドレスを指定することができる。６４ビットのローカルメモリアドレスにより、各ローカルメモリ３４内に２64の個別のアドレス可能ビットを指定することができる。各Ｓマシン１２は、特定のＳマシン１２について構成されるローカルメモリ３４を含んでいる。Ｓマシン１２とメモリ３４が互いに分離しているので、各メモリのサイズや構造が均一である必要はなく、またメモリ全体のコヒーレント性や一致性を維持する必要もない。ソースＳマシン１２のプログラム命令が目的Ｓマシン１２のローカルメモリ３４のアーキテクチャを意識して書かれたものであり、またこのプログラム命令がメモリ位置を正確に指定する限り、そのサイズやレイアウトとは無関係に、目的Ｓマシン１２のローカルメモリ３４に容易にアドレス指定することができる。こうしたモジュール性を備えているため、問題の取扱いとは無関係に、さまざまなコンポーネントを用いてこのアーキテクチャのサイズを拡大・縮小することができる。新しいＳマシンを統合する方法も大幅に単純化されている。新しいＳマシン１２をシステムに加えるときには、そのＳマシン１２について新しい地理アドレスを選択し、新しいＳマシン１２の使用を要求するプログラムに新しいアドレスが与えられる。新しいＳマシン１２を利用するよう設計されたプログラムに新しいアドレスがいったん組入れられると、解決すべき問題は生じず、また計算を実行する必要もなく、Ｓマシン１２が統合される。
【０１３６】
図２４は、遠隔演算を要求するための本発明のＳマシン１２の処理の流れを示すフローチャートである。ステップ１９００で、Ｓマシン１２は命令を受取る。ステップ１９０４でＳマシン１２は、この命令が遠隔演算を要求しているかどうかを決定する。この命令が遠隔演算を要求していないときには、ステップ１９０６でこの命令が実行される。命令が遠隔演算を要求しているときには、ステップ１９０４で遠隔演算情報はローカルメモリに記憶される。下記に説明するようにステップ１９２０に進んだ後、Ｓマシン１２は遠隔演算が要求されているかどうかを示す命令コード内のフラグの状態を調べることによって、命令が遠隔演算を要求していると決定する。遠隔演算とは、結果を得るために異なるＳマシン１２を使用する必要がある演算である。遠隔演算情報は、Ｓマシン１２によって実行されるプログラムにより提供され、遠隔演算の実行が望まれる場合にローカルメモリ３４に記憶される。遠隔演算を記憶するにはローカルメモリ３４の一定のメモリ位置を用いるのが好ましく、このようにすれば、Ｔマシン１４はただちに情報にアクセスでき、最初にアドレスを取得する必要はない。遠隔演算情報は、一般に遠隔Ｔマシン１４の目的地理アドレス１８０４と、遠隔Ｓマシン１２にデータを記憶し、または遠隔Ｓマシン１２からデータを検索するための目的ローカルメモリアドレス１８０８と、コマンド情報１８２０と、サイズ情報１８１２と、データ１８２４とを含んでいる。命令が遠隔演算を必要とすると決定され次第、これらの情報はすべてＳマシン１２によってローカルメモリ３４に記憶される。
【０１３７】
１つの実施例では、ステップ１９１２でＳマシン１２が、遠隔演算が必要であることを示すようＴマシンに無条件命令を発する。無条件命令は、Ｔマシン１４が認識するよう設計されている一意的なコマンド列である。無条件命令は、一般に遠隔演算情報がローカルメモリ３４に納められているメモリアドレスと、アドレス指定情報のサイズを示すサイズ区切り記号とを含んでいる。これは遠隔演算情報の開始アドレスと一連のサイズ区切り記号を単に指定するだけで、Ｓマシン１２によって実行中のプログラムによって１度に複数の遠隔演算を要求することができる。そのときＴマシン１４は、情報について異なる要求を逐次処理することができる。次にステップ１９２０で、Ｓマシン１２は実行すべきその他の命令があるかどうかを決定する。命令が存在するときには、次の命令を受取り実行する。したがって、Ｓマシン１２は遠隔演算の要求があってもそれとは無関係に、命令の実行をほぼ瞬間的に行うことができる。Ｔマシン１４がデータの転送と検索を実行するので、Ｓマシン１２の処理能力は、命令の処理のみに集中することができる。図２５は、Ｓマシン１２から無条件命令を受取るＴマシン１４の処理のフローチャートである。まずステップ２０００でＴマシン１４は、制御ライン４８上でＳマシン１２から受取ったコマンドが無条件命令であるかどうかを決定する。コマンドが無条件命令であると決定したら、ステップ２００４でＴマシンはメモリ／データライン４６を経てローカルメモリ３４から遠隔演算情報を検索する。遠隔演算情報は、Ｔマシン１４がデータを検索する際に、遠隔演算情報を検索するたびに新しいメモリアドレスを決定する必要がないようにメモリ３４の一定の場所に納められるのが好ましい。遠隔演算情報は、ローカルメモリ３４の任意の場所に記憶することもできる。しかしこの場合には、情報の場所は無条件命令の一部として伝送されなければならない。遠隔演算情報を検索した後、Ｔマシン１４、特にＴマシン１４の共通インタフェース制御装置（ＣＩＣＵ）３０２コンポーネントは、ステップ２００８で情報からメタアドレス１８２８を生成する。目的ローカルメモリアドレス１８０８は、メタアドレス１８２８を形成するために、目的地理アドレス１８０４に添付される。次にステップ２１１２で、Ｔマシン１４は残りの遠隔演算情報からデータパケット１８００を生成し、要求されている宛先に伝送するためにデータパケット１８００を相互結合装置または汎用相互結合マトリックス（ＧＰＩＭ）１６に伝送する。
【０１３８】
ソース地理アドレス１８１６は、プログラム命令によって指定してもよく、したがってＴマシン１４による検索のためにローカルメモリ３４に記憶しても良い。またソース地理アドレス１８１６は、アーキテクチャ記述メモリ（ＡＤＭ：Architecture Description Memory）１０１に記憶されるのが好ましい。アーキテクチャ記述メモリ（ＡＤＭ）１０１は、それが結合されているＴマシン１４の地理アドレスを記憶する変更可能なメモリである。アーキテクチャ記述メモリ（ＡＤＭ）１０１を用いて、システム全体の地理アドレスを明白に変更することができる。このシステムの実施例では、Ｔマシン１４はアーキテクチャ記述メモリ（ＡＤＭ）１０１からソース地理アドレス１８１６を検索し、Ｔマシン１４自体の最も新しいソース地理アドレス１８１６を用いていることを確かめる。多重共通インタフェース制御装置（ＣＩＣＵ）３０２が各Ｓマシン１２に結合された実施例では、各共通インタフェース制御装置（ＣＩＣＵ）３０２の地理アドレスはアーキテクチャ記述メモリ（ＡＤＭ）１０１に記憶される。
【０１３９】
図２６は、相互結合装置を経て伝送されたデータパケットを受取るためのＴマシン１４の処理を示すフローチャートである。ステップ２１００でＴマシン１４は、相互結合装置からデータパケットを受取る。ステップ２１０４でＴマシン１４は、メタアドレス１８２８の目的地理アドレス１８０４コンポーネントを解析することによって、データパケット１８００を復号する。上記に説明したようにＴマシンのアドレス復号器３２０は、データパケット１８００を復号する。ステップ２１０８でアドレス復号器３２０は、目的地理アドレス１８０４と、関連する地理アドレスとを比較する。変更可能なアーキテクチャ記述メモリ（ＡＤＭ）１０１を用いる実施例では、アドレス復号器３２０は受取った目的地理アドレス１８０４とアーキテクチャ記述メモリ（ＡＤＭ）１０１内に記憶したアドレスとを比較する。ステップ２１１２で、地理アドレスが一致するとアドレス復号器３２０が決定したときには、データパケット１８００はローカルメモリアドレス１８０８によって指定されたメモリ３４の場所に伝送される。データパケット１８００は解析され、データはメモリ／データライン４６を経て送られ、コマンドは制御ライン４８を経て送られる。アドレス情報は、アドレスライン４４を経て送られる。各アドレスが一致しないときには、エラーメッセージがバイパスＦＩＦＯ３２４と、ＭＵＸ３２８と、汎用相互結合マトリックス（ＧＰＩＭ）１６とを通ってデータパケット１８００のソース地理アドレス１８１６コンポーネントによって識別されたＴマシン１４に伝送される。誤ってアドレスされたデータパケット１８００をＴマシン１４が受取った場合も、上記に説明したのと同じプロセスを用いる。新しいデータパケット１８００を受取った際に、ＣＩＣＵ３０４がデータパケット１８００を組立てているか解体しているときには、ＣＩＣＵ３０４がデータを受取り処理できるようになるまでＴマシン１４はデータパケット１８００を入力ＦＩＦＯ３２２に送り、待機させる。
【０１４０】
別の実施例では、Ｔマシン１４はメッセージの優先度を認識するように設計されており、Ｓマシンに新しいコマンドを処理させるのが適切であるときには、Ｓマシン１２の処理に割込む。この実施例では、図２７に示すように、共通インタフェース制御装置（ＣＩＣＵ）３０２は割込みロジック２２００と、コンパレータ（比較器）２２０４と、認識装置２２０８とを含む追加コンポーネントをさらに含んでいる。図２８は、共通インタフェース制御装置（ＣＩＣＵ）３０２の割込み処理能力を示すフローチャートである。ステップ２３００で認識装置２２０８は、アドレス復号３２０によってアドレスを確認したあと、データパケット１８００を解析し、パースコマンド１８２０を識別する。ステップ２３０４で認識装置２２０８は、コマンド１８２０が割込み要求であるかどうかを決定する。データパケット１８００が割込み要求であるときには、コマンド１８２０は割込みＩＤを含むことになる。コマンド１８２０が割込みＩＤを含んでいないときには、上記に説明したような処理を行うためにステップ２３０８でデータパケットは共通インタフェース制御装置（ＣＩＣＵ）３０２に送られる。
【０１４１】
コマンド１８２０が割込みＩＤを含んでいるときには、割込みＩＤはメモリ３４に結合されているコンパレータ２２０４に送られる。メモリ３４は割込みＩＤのリストを記憶する。各Ｓマシンには、その関連するローカルメモリ３４に記憶するようＳマシンが設計された割込みＩＤのリストを含むのが好ましい。このリストによって割込みを識別し、割込みの優先度を指定することができ、またこのリストは割込みを実行するための指示を含んでいる。ステップ２３１２で、コンパレータ２２０４は受取ったコマンドの割込みＩＤと、記憶されているＩＤのリストとを比較する。コマンドにより指定された割込みＩＤがリストのＩＤと一致しないときには、ステップ２３２０で、エラーメッセージがバイパスＦＩＦＯ３２４、ＭＵＸ３２８を経てソース地理アドレス１８１６により指定された宛先に伝送され、また信号ライン３１４を経て汎用相互結合マトリックス（ＧＰＩＭ）１６に伝送される。割込みＩＤが記憶されたＩＤと一致するときには、ステップ２３２４で割込みロジック２２００は記憶されたＩＤに関連するローカルメモリ３４に含まれている情報に従って、またはデータパケット１８００に含まれている情報に従って割込みを処理し、また得られたコマンドを制御ライン４８を経てＳマシン１２に送る。
【０１４２】
優先度の比較が可能なときには、割込みロジック２２００は、割込み要求の優先度と、現在入力ＦＩＦＯ３２２にあるデータパケット１８００の優先度とを比較する。割込み要求の優先度がＦＩＦＯ３２のデータパケット１８００より高いときには、割込み要求の優先度の低いデータパケット１８００の手前に置かれる。場合によっては、割込み要求がＳマシン１２の実行を停止するよう求めることもある。この場合、優先度レベルはＳマシン１２で実行しているプロセスに割当てられる。割込み要求の優先度が現在実行しているプロセスの優先度より高いときには、割込みロジック２２００は、Ｓマシン１２が現在の処理を終了し割込み要求の処理を開始する命令を制御ライン４８を経てＳマシン１２に発信する。したがって、完全な優先度比較と割込み処理スキームは、本発明のアーキテクチャに基づくＴマシン１４によって実動化され、Ｓマシン１２が追加の処理を行う必要はほとんどない。
【０１４３】
したがって、Ｔマシン１４がコンピュータシステムによって要求されるすべてのメモリ演算機能を実行するので、Ｓマシン１２はプログラムの主命令を実行することができる。メモリと命令実行演算を空間的・時間的に分離することによって、マルチプロセッサで構成される高度に並列のシステムの処理能力を大幅に最適化することができる。仮想メモリや共用メモリを使用しないので、ハードウェア一致性及びコヒーレンス性演算を行う必要はない。Ｓマシン１２は異なるレートで作動することができ、動的に再構成可能なＳマシン１２によって実現される命令セットアーキテクチャ（ＩＳＡ）は異なるものでも良い。さらにＳマシン１２を実動化するフィールドプログラマブルゲートアレイ（ＦＰＧＡ）も、特定のタスクについて最適化される。たとえば、埋込まれた画像を計算する場合、フロントパネルＬＣＤ画面コントローラを画像処理用に最適化したＳマシン１２とする必要はない。しかし、システムのすべてのＳマシン１２に対し、別のＳマシンと通信する必要がある各Ｓマシン１２が一様にアドレス指定できるようにすることは、それでもきわめて望ましいことであり、これは上記に説明したように本発明によって得られる。ソフトウェアは、システム全体のコヒーレント性また一致性を得るように用いられ、これにはＳマシン１２及びＴマシン１４のためのメッセージ伝達インタフェース（ＭＰＩ）実行時（ランタイム）ライブラリなど、また並列仮想マシン（ＰＶＭ）のための実行時ライブラリなどの従来の方法が用いられる。ＭＰＩもＰＶＭもハードウェア抽象化層（ＨＡＬ）として機能する。本発明によると、ＨＡＬは動的に再構成可能なＳマシン１２と固定式Ｔマシン１４のためのものである。メモリ演算はソフトウェアによって完全に制御されているので、このシステムは動的に再構成可能であり複雑なハードウェア／ソフトウェア相互作用の影響を受ない。したがって、独立して分離したメモリを用い、また別個のアドレス指定マシンと処理マシンとを有する完全に拡張性がありアーキテクチャ的に再構成可能なコンピュータシステムが、高度並列計算環境で使用するために提供される。メタアドレスを用いることにより、透過性で細かいアドレス指定が可能であり、またコンピュータシステムの通信経路をシステムの要求に応じて割当てたり再割当てすることが可能である。アドレス指定マシンと処理マシンとを分離することによって、処理マシンのリソースを処理のみに集中させることができ、処理マシンに多様な命令セットアーキテクチャを利用したりさまざまなレートで作動させることができ、またそれぞれ最適化されたハードウェアを用いて実動化することができる。これらのすべてによってシステムの処理力が大幅に向上する。
【０１４４】
本発明の開示内容は、再プログラマブル計算または再構成計算のためのその他のシステムと著しく異なっている。特に、ダウンロード可能なマイクロコードアーキテクチャは一般に非再構成制御手段と非再構成ハードウェアに依存しているので、本発明はこのようなアーキテクチャとは同等ではない。本発明は、１組の再構成ハードウェアが非再構成ホストプロセッサまたはホストシステムに結合された付加再構成プロセッサ（ＡＲＰ）システムとも明白に異なっている。付加再構成可能プロセッサ（ＡＲＰ）装置は、いくつかのプログラムを実行するホストに従属している。したがって、ホストまたは付加再構成可能プロセッサ（ＡＲＰ）装置がそれぞれデータについて演算する際に、付加再構成可能プロセッサ（ＡＲＰ）装置またはホストのシリコンリソースがアイドル状態であるかまたは非効率に用いられるので、利用できるシリコンリソースはプログラム実行の時間枠において最大限に利用されない。これに対して各Ｓマシン１２は、プログラム全体を容易に実行することができる独立したコンピュータである。多重Ｓマシン１２は、プログラムを同時に実行することが好ましい。したがって本発明は、個々のＳマシン１２上で実行する各プログラムとシステム１０全体上で実行する多重プログラムとの両方について、常にシリコンリソースを最大限に利用することを開示している。
【０１４５】
付加再構成可能プロセッサ（ＡＲＰ）装置は、特定の時間で特定のアルゴリズムについて計算アクセラレータを提供し、特定のアルゴリズムに関して最適に相互結合された１組のゲートとして実装される。命令実行の管理などの汎用演算のために再構成ハードウェアリソースを使用することは、付加再構成可能プロセッサ（ＡＲＰ）システムでは避けられている。さらに付加再構成可能プロセッサ（ＡＲＰ）システムは、所定のセットの相互結合を容易に再使用可能なリソースとしては扱わない。これに対して、本発明は特定の時間における計算の必要性に最も適した命令実行モデルによる、命令実行の効率的管理のために構成された動的再構成処理手段を開示している。Ｓマシン１２は、複数の再使用可能なリソース、たとえば命令状態シーケンサ（ＩＳＳ）１００と、割込みロジック１０６と、記憶／整列ロジック１５２とを含んでいる。本発明は、相互結合ゲートのレベルではなく、論理ブロック（ＣＬＢ）、入出力ブロック（ＩＯＢ）、及び再構成相互結合のレベルで再構成論理リソースを使用することを開示している。したがって本発明は、単一のアルゴリズムについて有用な単一のゲート接続スキームを開示するのではなく、すべてのクラスの計算問題について演算を実行するのに有用な再構成可能な高レベル論理構成部品の使用を開示している。
【０１４６】
一般に付加再構成可能プロセッサ（ＡＲＰ）システムは、特定のアルゴリズムを１組の相互結合ゲートに翻訳するためのものである。一部の付加再構成可能プロセッサ（ＡＲＰ）システムは、高レベル命令を最適のゲートレベルハードウェア構成にコンパイルするよう試みるが、これは一般にＮＰハード問題である。これに対して本発明は、きわめて簡単な方法で、可変命令セットアーキテクチャ（ＩＳＡ）に従って高レベルプログラム命令をアセンブリ言語命令にコンパイルする動的再構成計算のためのコンパイラの使用を開示している。
【０１４７】
付加再構成可能プロセッサ（ＡＲＰ）装置は、一般にそのホストプログラムをデータとして扱うことはできず、またそれ自体を計算環境に適合させることもできない。これに対して、システム１０の各Ｓマシン１２は、それ自体のプログラムをデータとして扱うことができ、したがって、容易にそれ自体を計算環境に適合させることができる。システム１０はそれ自体のプログラムを実行することにより、それ自体を容易にシミュレートすることができる。本発明はさらに、それ自体のコンパイラをコンパイルすることができる。
【０１４８】
本発明では、単一のプログラムには、第１命令セットアーキテクチャ（ＩＳＡ）に属する第１命令グループと、第２命令セットアーキテクチャ（ＩＳＡ）に属する第２命令グループと、さらに別の命令セットアーキテクチャ（ＩＳＡ）に属する第３命令グループと．．．を含んでいる。この明細書で開示したこのアーキテクチャは、命令が属する命令セットアーキテクチャ（ＩＳＡ）を実装するためにランタイム構成されているハードウェアを用いて、このような命令グループをそれぞれ実行する。先行技術のシステムや方法で同様の開示内容を提示しているものはない。
【０１４９】
本発明はさらに、割込み待ち時間と、割込み精度と、プログラマブル状態遷移イネイブリングとが、現在検討中の命令セットアーキテクチャ（ＩＳＡ）に従って変化する再構成割込みスキームを開示している。その他のコンピュータシステムでは、同様の開示内容は認められない。本発明はさらに、先行技術コンピュータシステムとは異なり、再構成データパスビット幅、アドレスビット幅、及び再構成制御ライン幅を有するコンピュータシステムを開示している。
【０１５０】
本発明はいくつかの好ましい実施例を用いて説明してきたが、当業者は、さまざまな変形例が得られることを認めるであろう。
【０１５１】
＜参考資料Ａ＞
命令セット0，汎用外部ループ命令セットアーキテクチャ（ＩＳＡ）
１．０  プログラマのアーキテクチャモデル
この節では、レジスタ、メモリモデル、高レベル言語から呼出しコンベンション及び割込みモデルを含む命令セットアーキテクチャ（ＩＳＡ）０アーキテクチャについてのプログラマの概略コンセプトを示す。
【０１５２】
１．１  レジスタ
命令セットアーキテクチャ（ＩＳＡ）０は、１６個の１６ビット汎用レジスタ、１６個のアドレスレジスタ、２個のプロセッサ状態レジスタ、及び１個の割込みベクトルレジスタを含んでいる。データ及びアドレスレジスタのニーモニックは１６進数を用いており、したがって最後のデータレジスタはdf.であり、最後のアドレスレジスタはaf.である。プロセッサ状態レジスタの１つであるnipar（Next Instruction Program Address Register）は取出す（フェッチする）次命令のアドレスを指している。もう一方の状態レジスタであるpcw（Processor Control Word）はプログラムフローと割込み処理を行うために用いられるフラグと制御ビットとを含んでいる。そのビットは表２に定義されている。未定義のビットは将来の使用のため保留される。さまざまな命令の副作用として４つの条件フラグ、Ｚ、Ｎ、Ｖ及びＣが設定される。どのフラグが各命令によって影響を受けるかの概要については、２．０項を参照。
【０１５３】
Ｔ（Trace Mode）及びＩＭ（Interrupt Mask）フラグは、プロセッサが割込みに対してどのように対応するか、またトラップがいつ取扱われるかを制御する。割込みベクトルレジスタivecは、割込みサービスルーチンの６４ビットアドレスを保持する。割込みとトラップについては後述する１．４項で述べる。
【０１５４】
【表１】
0004285877.tif 000002
【０１５５】
１．２  メモリアクセス
６４ビットアドレスレジスタに記憶されている値は、１６ビット及び６４ビットインクリメントでメモリロード／ストア命令アクセスメモリにより用いられる（表７参照）。アドレスはビットアドレスである。つまり、アドレス１６はメモリ内のビット１６で始まるワード（語）を指す。ワードは１６ビット境界上でのみ読出すことができ、したがってメモリを読出すときにはアドレスレジスタの４つのＬＳＢ（最下位ビット）は無視される。ＫISAのコンセプトの詳細については［１］を参照。６４ビット値は、リトルエンディアン順（最下位１６ビットが最も下位のアドレスに記憶される順序）の１６ビットワードとして記憶される。
【０１５６】
【表２】
0004285877.tif 000003
【０１５７】
１．３  呼出しコンベンション
コンベンションによって、レジスタafはＣプログラムによりスタックポインタとして用いられ、レジスタaeはスタックフレームポインタとして用いられる。ニーモニックsp及びfpはこれらのレジスタのエイリアス（別名）として用いられることがある。他のすべてのレジスタは一般用に自由に用いられる。スタックは下に向かって増大する。
【０１５８】
intは１６ビットであり、longは６４であり、aはボイド*である。int値はd0で復帰され、longとボイド*の値はa0で復帰される。d0-d4とa0-a3はファンクションによってクロバーされ、他のすべての汎用レジスタはファンクションコール上で保持されなくてはならない。ファンクションに入ると、スタックポインタは復帰アドレスを指し、こうして最初の引数はアドレスsp＋64（１０進）で始まる。
【０１５９】
１．４  トラップと割込み
命令セットアーキテクチャ（ＩＳＡ）０は１本の割込みラインに作用し、ソフトウエアは２つのソースからトラップする。すべては下記に述べる同じ制御フロー（flow-of-control）転送メカニズムを呼出す。
【０１６０】
外部的には単一のＩＮＴＲ信号入力があり、１つのiack出力がある。pcw内の割込みマスクビットが、xpcw命令でpcwをリセットすることにより、またはrti命令で割込みから復帰してpcwをその当初の値へ戻すことによってクリアされると同時に、iackはアクティブ（能動的）となる。外部装置による割込みの信号発信とプロセッサによる割込みのサービスの間の時間量は、現在実行中の命令とソフトウエアトラップの存在に応じて定まる。
【０１６１】
ソフトウエアトラップは、明示トラップ命令によって、またはＴ（トレース）フラッグセットで命令を実行することによってトリガされる。この場合、Ｔの設定に続く最初の命令のあと、コントロール（制御権）が割込みサービスルーチンへ移される。トラップ命令が実行されるときは、プロセッサはＴフラグを設定し、あたかも命令を実行する前にＴフラッグが設定されていたかのように割込みサービスルーチンに入る。Ｔフラッグが設定されている間は割込みのサービスは行われない。xpcw命令でpcwをリセットすることによって、またはrti命令で割込みからの復帰によりスタックからリセットすることによってＴフラグがクリアされるまではそれ以上トラップは起こらない。
【０１６２】
割込みは、intr外部信号でのアクティブ信号の存在によって発生する。imフラグまたはＴフラグが設定されているときは、割込みはマスクされ、未決定の割込みは無視される。imフラグとＴフラグがクリアされると、intrの表明に続く最初の命令のあと、コントロールは割込みサービスルーチンに移される。割込みサービスルーチンに入ると、imフラグがプロセッサにより設定される。xpcw命令でpcwがリセットされるか、またはrti命令による割込みからの復帰によってスタックからリセットされることによってimフラグがクリアされるまでは、それ以上は割込みは起こらない。
【０１６３】
割込みまたはトラップが起こるときに、プロセッサがとるステップは次の通りである。
１．現在実行中のすべての命令を完了する。
２．１６個のデータレジスタ（d0が先）、１６個のアドレスレジスタ（a0が先）、pcw、ivec及びniparが、この順序で（レジスタafによりポイントされた）スタックに押込まれる。スタックに押込まれるafの値は、割込みまたはトラップのサービスが始まる前のその値である。
３．これが割込みであるときには、pcw内の割込みビットが、それ以上の割込みをマスクするよう設定される。これがトラップ命令であるときには、Ｔフラッグが設定されるこれがＴフラッグにより発生したトラップであるときは、pcwは変更されない。
４．ivecレジスタ内の値をniperにロードする。
割込みハンドラ内での命令の実行が始まる。
【０１６４】
rti命令の実行時には、下記の動作が行われる。
１．レジスタは、それが書込まれたのと反対の順序でスタックから回復される。
２．実行を再開する。
【０１６５】
割込みマスクフラグがすでにクリアされていないときは、それはrti命令によってクリアされる。pcwの値がスタック上で変更されない限り、それはサービスルーチンに入ったときにクリアされていたからである。トラップ命令を実行することによってＴフラグが設定されるときは、同じ理由によってrtiの実行時にそれはクリアされる。サービスルーチンへ入る前に設定されていたＴフラッグによってトラップが発生したときは、トラップが発生したことを確認するために、それはサービスルーチンによりクリアされなくてはならない。割込みマスクフラグが何らかの手段によってクリアされるときは、外部出力信号iackは割込みが行われている外部装置に信号を送るために１クロックサイクルの間アクティブとなる。
【０１６６】
２．０  機能による命令の分類
表記コンベンションは次の通りである。
【０１６７】
【表３】
0004285877.tif 000004
【０１６８】
２．１  レジスタの動き
【０１６９】
【表４】
0004285877.tif 000005
【０１７０】
２．２  論理演算
【０１７１】
【表５】
0004285877.tif 000006
【０１７２】
２．３  メモリ  ロード／ストア
【０１７３】
【表６】
0004285877.tif 000007
【０１７４】
２．４  算術演算
【０１７５】
【表７】
0004285877.tif 000008
【０１７６】
２．５  制御フロー
【０１７７】
【表８】
0004285877.tif 000009
【０１７８】
３．０  英字参照記号
命令セットアーキテクチャ（ＩＳＡ）０のために設定された命令を下記にアルファベット順に示す。ニーモニックは短い記述で示してある。その下は命令の２進コードである。２進コードの各行は１６ビットのワードである。影響を受けるフラグを次にリストで示す。ほかに定めのない限り、フラグは宛先レジスタに記憶されたデータを用いて設定する。niparは命令実行の開始時にすでにインクリメントされたものと想定する。最後に命令の意味についてのテキスト記述を示す。
【０１７９】
２進コードに用いられている表記コンベンションを下記の表にまとめてある。条件コードは表５９に定義されている。
【０１８０】
【表９】
0004285877.tif 000010
【０１８１】
【表１０】
0004285877.tif 000011
【０１８２】
２個のデータレジスタを加算し、結果を宛先レジスタに残す。
【０１８３】
【表１１】
0004285877.tif 000012
【０１８４】
２個のデータレジスタと桁上げフラグを加算し、結果を宛先レジスタに残す。
【０１８５】
【表１２】
0004285877.tif 000013
【０１８６】
８ビット符号つき（２の補数）定数をデータレジスタに加算し、結果をレジスタに残す。
【０１８７】
【表１３】
0004285877.tif 000014
【０１８８】
２個のデータレジスタのビットワイズANDを実行し、結果を宛先レジスタに残す。
【０１８９】
【表１４】
0004285877.tif 000015
【０１９０】
条件が真のときは、（offset << Kisa ）をniparに加算する。
【０１９１】
【表１５】
0004285877.tif 000016
【０１９２】
（offset << Kisa）をniparに加算する。
【０１９３】
【表１６】
0004285877.tif 000017
【０１９４】
条件つきで８ビット右へシフトし、マスクする。ワードオフセットから読出された８ビットデータを整列するためにロード命令のあとに用いられる。ソースアドレスレジスタに含まれるアドレスが８ビット境界上にある（ビット２セットをもつ）ときには、データレジスタ内の値を８ビット右へシフトする。アドレスが８ビット境界上にないときは、レジスタの上流８ビットをクリアする。
【０１９５】
［註］  負のフラグは、ビット１５でなくビット７で設定する。これによって８ビット量の符号延長が容易となる。
【０１９６】
【表１７】
0004285877.tif 000018
【０１９７】
宛先レジスタからソースレジスタを差引くことによって、２個のデータレジスタの絶対値比較のためのフラグを設定し、フラグだけに影響を与える。
【０１９８】
【表１８】
0004285877.tif 000019
【０１９９】
１６ビット符号つき整数により３２ビット符号つき整数の符号つき除算を行い、１６ビット符号つき商と剰余を戻す。３２ビット被除数は、宛先レジスタのインデックスから始まる2個の連続するレジスタ内に格納する（リトルエンディアン順）。１６ビット除数はソースレジスタ内にある。剰余は宛先レジスタに戻し、商は宛先レジスタ後のレジスタに戻す（モジュロ１６）。商が１６ビットを越えるときはオーバフローとなる。
【０２００】
【表１９】
0004285877.tif 000020
【０２０１】
データレジスタをアドレスレジスタに加算し、結果をアドレスレジスタに残す。
【０２０２】
【表２０】
0004285877.tif 000021
【０２０３】
８ビット符号つき定数をアドレスレジスタに加算し、結果をアドレスレジスタに残す。
【０２０４】
【表２１】
0004285877.tif 000022
【０２０５】
宛先レジスタからソースレジスタを差引くことによって、２個のアドレスレジスタの絶対値比較のためのフラグを設定し、フラグだけに影響を与える。
【０２０６】
【表２２】
0004285877.tif 000023
【０２０７】
２個のアドレスレジスタを加算し、結果を宛先レジスタに残す。
【０２０８】
【表２３】
0004285877.tif 000024
【０２０９】
宛先レジスタからソースレジスタを差引き、結果を宛先レジスタに格納する。
【０２１０】
【表２４】
0004285877.tif 000025
【０２１１】
ロードをアドレスレジスタ内に事後インクリメントする。ソースレジスタによりポイントされたアドレスからメモリを読出し、宛先レジスタ内に入れる。次にソースレジスタをインクリメントする。
【０２１２】
【表２５】
0004285877.tif 000026
【０２１３】
アドレスレジスタを1ビット右へシフトする。
【０２１４】
【表２６】
0004285877.tif 000027
【０２１５】
アドレスレジスタから格納する。ソースレジスタ内の６４ビット値を、宛先レジスタによりポイントされたメモリ位置に書込む。この値はリトルエンディアン順に配置した４つの１６ビットワードとして書込む。
【０２１６】
【表２７】
0004285877.tif 000028
【０２１７】
アドレスレジスタからのストアを事前デクリメントする。宛先レジスタをデクリメントし、次にソースレジスタ内の値を、宛先レジスタによりポイントされたメモリ位置に書込む。この値はリトルエンディアン順に配置した４つの１６ビットワードとして書込む。
【０２１８】
【表２８】
0004285877.tif 000029
【０２１９】
アドレスレジスタからデータレジスタを差引き、結果をアドレスレジスタに残す。
【０２２０】
【表２９】
0004285877.tif 000030
【０２２１】
宛先レジスタへソースレジスタをビットごとに反転配置する。
【０２２２】
【表３０】
0004285877.tif 000031
【０２２３】
絶対アドレスへ条件つきジャンプする。条件コードビットの定義については、表５９を参照。
【０２２４】
【表３１】
0004285877.tif 000032
【０２２５】
絶対アドレスへ無条件ジャンプする。条件「常時」はjCCと同じ。
【０２２６】
【表３２】
0004285877.tif 000033
【０２２７】
宛先レジスタをまずインクリメントし、次に宛先レジスタ（通常はスタックポインタ）によりポイントされたアドレスに、（次命令を指す）現在のniparを格納する。次に、次命令を取出す前にソースレジスタ内のアドレスでniparをロードする。
【０２２８】
【表３３】
0004285877.tif 000034
【０２２９】
ビットの定数だけデータレジスタを左へシフトする。
【０２３０】
【表３４】
0004285877.tif 000035
【０２３１】
ビットの定数だけデータレジスタを右へシフトする。
【０２３２】
【表３５】
0004285877.tif 000036
【０２３３】
メモリからデータレジスタをロードする。ソースアドレスレジスタによりポイントされた値を宛先データレジスタにロードする。
【０２３４】
【表３６】
0004285877.tif 000037
【０２３５】
データレジスタ内へロードを事後インクリメントする。ソースアドレスレジスタによりポイントされたアドレスからメモリを読出し、宛先データレジスタに入れる。次にソースレジスタをインクリメントする。
【０２３６】
【表３７】
0004285877.tif 000038
【０２３７】
１６ビット隣接値をデータレジスタ内にロードする。
【０２３８】
【表３８】
0004285877.tif 000039
【０２３９】
宛先レジスタを、ソースレジスタのビットワイズ反転で置換え、宛先レジスタを加える。
【０２４０】
【表３９】
0004285877.tif 000040
【０２４１】
ソースデータレジスタ内の値を宛先データレジスタ内に入れる。
【０２４２】
【表４０】
0004285877.tif 000041
【０２４３】
ソースレジスタ内の値を宛先レジスタ内の値により乗算した結果を、宛先レジスタで始まる2つの連続するレジスタ内に格納する（リトルエンディアン順）。
【０２４４】
【表４１】
0004285877.tif 000042
【０２４５】
２つのデータレジスタのビットワイズORを実行し、結果を宛先レジスタに残す。
【０２４６】
【表４２】
0004285877.tif 000043
【０２４７】
データレジスタを１ビット左へシフトする。ＬＳＢ（最下位ビット）を桁上げフラグの値で置換える。命令の終りに当初のＭＳＢ（最上位ビット）を桁上げフラグ内に入れる。
【０２４８】
【表４３】
0004285877.tif 000044
【０２４９】
前述した１．４項を参照。ソースレジスタをスタックポインタとして用いる。
【０２５０】
【表４４】
0004285877.tif 000045
【０２５１】
サブルーチンからの復帰。宛先レジスタ（通常はスタックポインタ）によりポイントされたメモリ位置からniparをロードする。次に、宛先レジスタをインクリメントする。
【０２５２】
【表４５】
0004285877.tif 000046
【０２５３】
ソースレジスタ内の値により指定されたビット数だけ、宛名レジスタを左へシフトする。
【０２５４】
【表４６】
0004285877.tif 000047
【０２５５】
ソースレジスタ内の値により指定されたビット数だけ、宛名レジスタを右へシフトする。
【０２５６】
【表４７】
0004285877.tif 000048
【０２５７】
データレジスタから格納（ストア）する。ソース内の値を、宛先レジスタによりポイントされたメモリ位置に書込む。
【０２５８】
【表４８】
0004285877.tif 000049
【０２５９】
データレジスタからストアを事前デクリメントする。宛先レジスタをデクリメントし、次に宛先レジスタによりポイントされたメモリ位置にソースレジスタ内の値を書込む。
【０２６０】
【表４９】
0004285877.tif 000050
【０２６１】
宛先レジスタからソースレジスタを差引き、結果を宛先レジスタに格納する。
【０２６２】
【表５０】
0004285877.tif 000051
【０２６３】
宛先レジスタからソースレジスタを差引き、次に桁上げビットを差引き、結果を宛先レジスタに格納する。
【０２６４】
【表５１】
0004285877.tif 000052
【０２６５】
割込みハンドラーを実行する。１．４項を参照。宛先レジスタをスタックポインタとして用いる。
【０２６６】
【表５２】
0004285877.tif 000053
【０２６７】
１６ビット符号つき整数による３２ビット符号つき整数の符号なし除算を行い、１６ビット符号つき商と剰余を戻す。宛先レジスタのインデックスから始まる２つの連続するレジスタ内に３２ビットを格納する（リトルエンディアン順）。除数はソースレジスタ内にある。剰余は宛先レジスタへ戻し、商は宛先レジスタ後の次レジスタへ戻す。商が１６ビットを越えるときはオーバフローとなる。
【０２６８】
【表５３】
0004285877.tif 000054
【０２６９】
宛先レジスタ内の値によりソースレジスタ内の値を乗算した結果を、宛先レジスタで始まる２つの連続するレジスタ内に格納する（リトルエンディアン順）。
【０２７０】
【表５４】
0004285877.tif 000055
【０２７１】
ソースアドレスレジスタ内の値を、宛先レジスタで始まる4つの連続するデータレジスタへ転送する。この値はリトルエンディアン順に格納し、宛先レジスタアドレスをモジュロ１６で計算し、宛先レジスタがどのレジスタでも良いようにする。
【０２７２】
【表５５】
0004285877.tif 000056
【０２７３】
４つの連続するデータレジスタ内のリトルエンディアン順の６４ビット値を宛先アドレスレジスタ内へ転送する。ソースレジスタアドレスをモジュロ１６で計算し、宛先レジスタがどのレジスタでも良いようにする。
【０２７４】
【表５６】
0004285877.tif 000057
【０２７５】
２つのデータレジスタのビットワイズ排他的ORを実行し、結果を宛先レジスタ内に残す。
【０２７６】
【表５７】
0004285877.tif 000058
【０２７７】
ソースデータレジスタ内の値をpcwレジスタと交換する。
【０２７８】
【表５８】
0004285877.tif 000059
【０２７９】
ソースアドレスレジスタ内の値をivecレジスタと交換する。
【０２８０】
４．０  条件コード
条件コード操作コード部分フィールドには、下記の表からの値を用いる。
【０２８１】
【表５９】
0004285877.tif 000060
【０２８２】
＜参考資料Ｂ＞
命令セット１，パイプライン乗算・累算命令セットアーキテクチャ（ＩＳＡ）
ＩＳＡ１ − ＸＣ４０１３のためのパイプライン畳込みエンジン
はじめに
命令セットアーキテクチャ（ＩＳＡ）１は、命令サイクルあたり４回の同時乗算・累算を行うことのできるパイプライン乗算・累算アレイである。４個の８ビット×８ビット乗算器への入力ごとに１個、つまり、８個の８ビットデータレジスタ（xd0-xd3及びyd0-yd3）がある。１つの最終１６ビット合計が出るまで、パイプライン加算アレイを経由して、４つの乗算器出力が合計され、４個までの１６ビットレジスタが結果を記憶できる（m0-m4）。命令セットアーキテクチャ（ＩＳＡ）１のアーキテクチャは、主メモリでフロースルーバッチ処理サイクルを仮定している。累算結果を再循環させるための乗算器累算器データパスを通るフィードバックパスはない。これはメモリデータ流量に重点が置かれているからである。オーバフロースケーリングまたは拡張有限性累算のための用意はない。畳込みフィルタリングに用いられる係数は、すべてのデータセットについて、１６ビットを超えない結果有限性を与えると、命令セットアーキテクチャ（ＩＳＡ）１は仮定している。乗算アレイは、８ビットの２の補数データ入力を受け、１６ビットの２の補数結果を出す。
【０２８３】
メモリへのアクセスは、２個の１６ビットアドレスレジスタ（a0とa1）によって管理され、これらは互換性のあるソース及び宛先ポインタと考えることができる。プログラムフローは、標準６４ビットNIPARレジスタにより管理され、６４ビット割込みベクトルレジスタは、フレームまたはデータ実行可能割込みなどの単独割込みについて支援される（IVEC）。
【０２８４】
命令セットアーキテクチャ（ＩＳＡ）１の命令セットはきわめて小さく、１６ビットのワードサイズに整列され、汎用外部ループプロセッサ命令セットアーキテクチャ（ＩＳＡ）０のためのKISA＝４メモリ編成に対応している。命令セットアーキテクチャ（ＩＳＡ）１での単一のクロックサイクルで7回までの算術演算を例示することができ、実動化によってクロックの小ウィンドウ上でクロックあたり１の割合で結果を保持し、新しいソースまたは宛名アドレスをインデックスする能力があり、計算と並行してメモリから、またメモリへ、レジスタデータを移す。
命令セットアーキテクチャ（ＩＳＡ）１命令セット
データ移動
ld（reg−vector）
命令ワード内に右揃えされた１４ビットのビットマップreg-vectorに従って、メモリから順次１４個までのレジスタがロードされる。
【０２８５】
st（reg-vector）
命令ワード内に右揃えされた１４ビットのビットマップreg-vectorに従って、メモリへ順次１４個までのレジスタが記憶される。
【０２８６】
ld（ivec-data）
この命令に続く６４ビットのアドレスがIVECレジスタにロードされ、次命令をポイントするNIPAR＋＝5が実行される。
【０２８７】
プログラム制御
jmp（nipar-data）
この命令に続く６４ビットのアドレスがNIPARレジスタにロードされ、これによって次命令へのポインティングが実行される。
【０２８８】
算術演算
mac（m-reg）
２ビットのm-regコードで示される乗算結果レジスタが積と和（xd0*yd0） ＋（xd1*yd1）＋（xd2*yd2）＋（xd3*yd3）を受取る。
【０２８９】
macp（s-vec, d-vec）
４ビットd-vecコードの２ビットにより示される乗算結果レジスタが積と和（xd0*yd0）＋（xd1*yd1）＋（xd2*yd2）＋（xd3*yd3）を受取る。d-vecコードの１つおきのビットが選択的にこの結果レジスタのアドレス（a1）へのメモリ書込みを可能にし、d-vecコードの残りのビットが、アドレスレジスタa1が増分されるかどうかを選択する。８ビットs-vecは４つの２ビットグループに分けられ、データレジスタxd0-xd3について連続してアドレス（a0）でのメモリからの読出しが行われるかどうか、またアドレスレジスタa0が増分されるかどうかを指定する。読出しまたは書込みが指定されるときは、乗算に並行して行われる。ソフトウエアは、メモリから読出され、メモリへ記憶されるデータの各バッチについて命令処理のパイプライン整列を行わなければならない。
【０２９０】
再構成
reconf（ISA-vector）
命令セットアーキテクチャ（ＩＳＡ）１は脱コンテキストされ、Ｓマシンは命令内の命令セットアーキテクチャ（ＩＳＡ）ベクトルビットフィールドにより選択される命令セットアーキテクチャ（ＩＳＡ）について再構成される。
【０２９１】
表６０に、ＩＳＡ１のブロック構成として、ＸＣ４０１３のためのパイプライン畳込みエンジンを示す。
【０２９２】
【表６０】
0004285877.tif 000061
【０２９３】
【発明の効果】
本発明は、拡張性、並列、動的再構成計算のためのシステム及び方法に関するものである。このシステムは、少なくとも１個のＳマシンと、各Ｓマシンに対応するＴマシンと、汎用相互結合マトリックス（ＧＰＩＭ）と、１組の入出力Ｔマシンと、１個またはそれ以上の入出力装置と、マスタタイムベース装置とを含んでいる。好ましい実施例では、このシステムは多重Ｓマシンを含んでいる。各Ｓマシンは、対応するＴマシンの出力部と入力部とにそれぞれ結合された入力部と出力部とを含んでいる。各Ｔマシンは、汎用相互結合マトリックス（ＧＰＩＭ）に結合されたルーティング入力部とルーティング出力部とを含んでおり、各入出力Ｔマシンも同様にこれらを含んでいる。入出力Ｔマシンはさらに、入出力装置に結合された入力部と出力部とを含んでいる。最後に、各Ｓマシンと、Ｔマシンと、入出力Ｔマシンとは、マスタタイムベース装置のタイミング出力部に結合されたマスタタイミング入力部を含んでいる。
【０２９４】
本発明のメタアドレス指定システムは、プロセッサ自体に処理集中アドレス操作機能を実行するよう要求することなしに、ネットワーク内のプロセッサにビットアドレス指定能力を提供する。割当てられた各機能を実行するよう最適化された個別の処理マシン及びアドレス指定マシンが開示される。処理マシンは命令を実行し、ローカルメモリにデータを記憶し、またローカルメモリからデータを検索し、いつ遠隔演算が要求されるかを決定する。アドレス指定マシンは、伝送するためのデータのパケットを組立て、このパケットの地理アドレスまたはネットワークアドレスを決定し、入ってくるパケットに対してアドレスをチェックする。さらにアドレス指定マシンは、割込み処理とその他のアドレス指定演算を実行することができる。
【０２９５】
１つの実施例では、Ｔマシンはまた本発明のメタアドレス指定メカニズムも提供する。メタアドレスは、システム内のＴマシンの地理的位置を指定し、ローカルメモリ装置内のデータの位置を指定する。メタアドレスのローカルアドレスは、装置のアドレス指定可能スペースがローカルアドレスのビット数以下である限りは、装置の実際のメモリサイズとは関係なく、新しい装置のメモリ内の各ビットをアドレス指定するのに用いられる。したがって、単一のメタアドレスを用いて異なるメモリサイズと構造とを有する装置のアドレス指定を行うことができる。さらに、メタアドレスを用いているので、マルチプロセッサ並列アーキテクチャ内のハードウェアが、システム全体のコヒーレント性と一致性とを保証する必要はない。
【０２９６】
メタアドレスによって、完全な拡張性が得られる。新しいＳマシンまたは新しい入出力装置が加えられると、新しい地理アドレスがこの新しい装置について指定される。本発明では、拡張性は不規則であってもよく、プロセッサの数の２乗の拡張を行わなければならないという条件がない。利用できるローカルメモリ帯域幅までの任意の数のアドレス指定マシンを各処理マシンに結合する能力によって、拡張性はさらに高まる。これにより、システム設計者は、各処理マシンへの経路の数を任意に指定することができる。このような柔軟性によって、システムのより高いレベルにより広い帯域幅を提供することができ、システムの最も重要な機能に最も広い帯域幅を与えるよう最適化されたピラミッド型処理アーキテクチャを構築することができる。
【０２９７】
上に説明したように、好ましい実施例によると、Ｔマシンはメタアドレスを生成し、割込みを扱い、メッセージを待ち行列に待機させるアドレス指定マシンである。したがって、Ｓマシンはその処理能力をプログラム命令の実行にのみ集中させることができ、本発明のマルチプロセッサ並列アーキテクチャの全体的な効率を大幅に最適化することができる。Ｓマシンは所望のデータを探し出すためのメタアドレスのローカルメモリコンポーネントにアクセスするだけでよく、地理アドレスは、Ｓマシンに対して透過性である。このアドレス指定アーキテクチャは、分散メモリ／分散プロセッサ並列計算システムときわめてよく相互作動する。ローカルメモリを分離するアーキテクチャ設計を選択することにより、ハードウェアを独立に、また並列に作動することができる。本発明によれば、各Ｓマシンは、１つの計算問題にすべて並列に向けられていたとしても、実行時には全く異なった再構成命令を有することができる。また、動的再構成Ｓマシンにより実現される命令セットアーキテクチャ（ＩＳＡ）が異なっていても良いばかりでなく、Ｓマシンを実現するのに用いられる実際のハードウェアが一定のタスクを実行するように最適化されていても良い。したがって、単一のシステム内のＳマシンはすべて異なるレートで作動してもよく、各Ｓマシンはシステムリソースの利用を最大限に高めながらその機能を最適に実行することができる。
【０２９８】
さらに、唯一のメモリ確認によって、正確な地理アドレスが伝送されていることが確認され、ローカルメモリアドレスの確認は提供されない。さらに、この確認は処理マシンではなくアドレス指定マシンによって実行される。仮想アドレス指定は用いられないので、仮想アドレスを論理アドレスに変換するためのハードウェア／ソフトウェア相互作動は必要ではない。メタアドレスのアドレスは、物理的アドレスである。このような予防的及び保全的機能をすべてなくすることにより、システム全体の処理速度が大幅に向上する。したがって、メタアドレス指定スキームと組合わせて、コンピュータシステムの「スペース」管理を、別個の処理マシンにより提供されるコンピュータシステムの「時間」管理から別のアドレス指定マシンに分離することにより、高度並列計算システムのための一意的なメモリ管理及びアドレス指定システムが提供される。本発明のアーキテクチャにより、Ｓマシンの作動は優れた柔軟性を有することとなり、Ｔマシンのレートを一定に保ったまま各Ｓマシンはそれぞれに最適なレートで作動することができる。システム全体のデータ通信を最も遠いスペースにも達するようにし、きわめて短時間でローカル命令処理を均衡させることができ、これによって高度並列コンピュータシステムによる複雑な問題の解決へのアプローチが改善される。
【図面の簡単な説明】
【図１】本発明に基づいて構築された、拡張性、並列、動的再構成計算のためのシステムの好ましい構成例を示すブロック図である。
【図２】本発明のＳマシンの好ましい構成例を示すブロック図である。
【図３】再構成指示を含む模範的プログラムリストの模式図である。
【図４】一連のプログラム命令のコンパイル中に実行される先行技術コンパイル作業のフローチャートである。
【図５】動的再構成計算のためにコンパイラによって実行される好ましいコンパイル作業のフローチャートである。
【図６】動的再構成計算のためにコンパイラによって実行される好ましいコンパイル作業のフローチャートである。
【図７】本発明の動的再構成処理装置（ＤＲＰＵ）の好ましい構成例を示すブロック図である。
【図８】本発明の命令取出し装置（ＩＦＵ）の好ましい構成例を示すブロック図である。
【図９】本発明の命令状態シーケンサ（ＩＳＳ）によって支援される好ましい１組の状態を示す模式図である。
【図１０】本発明の割込みロジックによって支援される好ましい１組の状態を示す模式図である。
【図１１】本発明のデータ演算装置（ＤＯＵ）の好ましい構成例を示すブロック図である。
【図１２】汎用外部ループ命令セットアーキテクチャ（ＩＳＡ）を実動化するために構成されたデータ演算装置（ＤＯＵ）の第１模範実施例の構成図である。
【図１３】内部ループ命令セットアーキテクチャ（ＩＳＡ）を実動化するために構成されたデータ演算装置（ＤＯＵ）の第２模範実施例の構成ブロック図である。
【図１４】本発明のアドレス演算装置（ＡＯＵ）の好ましい構成例を示すブロック図である。
【図１５】汎用外部ループ命令セットアーキテクチャ（ＩＳＡ）を実動化するために構成されたアドレス演算装置（ＡＯＵ）の第１模範実施例の構成ブロック図である。
【図１６】内部ループ命令セットアーキテクチャ（ＩＳＡ）を実動化するために構成されたアドレス演算装置（ＡＯＵ）の第２模範実施例の構成ブロック図である。
【図１７】（ａ）は、外部ループ命令セットアーキテクチャ（ＩＳＡ）のための命令取出し装置（ＩＦＵ）と、データ演算装置（ＤＯＵ）と、アドレス演算装置（ＡＯＵ）との間での再構成ハードウェアリソースの模範的割当てを示す模式図、（ｂ）は、内部ループ命令セットアーキテクチャ（ＩＳＡ）のための命令取出し装置（ＩＦＵ）と、データ演算装置（ＤＯＵ）と、アドレス演算装置（ＡＯＵ）との間での再構成ハードウェアリソースの模範的割当てを示す模式図である。
【図１８】本発明のＴマシンの好ましい構成例を示すブロック図である。
【図１９】本発明の相互結合入出力装置の構成例を示すブロック図である。
【図２０】本発明の入出力Ｔマシンの好ましい構成例を示すブロック図である。
【図２１】本発明の汎用相互結合マトリックス（ＧＰＩＭ）の好ましい構成例を示すブロック図である。
【図２２】本発明に基づく、拡張性、並列、動的再構成計算のための好ましい方法のフローチャートである。
【図２３】本発明に基づくデータパケットの好ましい構成例を示す模式図である。
【図２４】本発明に基づくデータ要求を発生させるための好ましい方法のフローチャートである。
【図２５】本発明に基づくデータを送るための好ましい方法のフローチャートである。
【図２６】本発明に基づくデータを受取るための好ましい方法のフローチャートである。
【図２７】本発明に基づく割込み処理演算を実行する相互結合入出力装置の好ましい構成例を示すブロック図である。
【図２８】本発明に基づく割込みを扱うための好ましい方法のフローチャートである。
【符号の説明】
１２        動的プログラム処理マシン（Ｓマシン）
１４        アドレス指定マシン（Ｔマシン）
１６        相互結合装置（汎用相互結合マトリックス）
３４        メモリ装置、ローカルメモリ（メモリ）
１０１      アーキテクチャ記述メモリ
１０６，２２００    割込みロジック
３２０      アドレス復号器
１８００    データパケット
１８１６    地理アドレス
２２０８    メタアドレス
２２０８    認識装置
２２０４    コンパレータ
【図１】
0004285877.tif 000062
【図２】
0004285877.tif 000063
【図３】
0004285877.tif 000064
【図４】
0004285877.tif 000065
【図５】
0004285877.tif 000066
【図６】
0004285877.tif 000067
【図７】
0004285877.tif 000068
【図８】
0004285877.tif 000069
【図９】
0004285877.tif 000070
【図１０】
0004285877.tif 000071
【図１１】
0004285877.tif 000072
【図１２】
0004285877.tif 000073
【図１３】
0004285877.tif 000074
【図１４】
0004285877.tif 000075
【図１５】
0004285877.tif 000076
【図１６】
0004285877.tif 000077
【図１７】
0004285877.tif 000078
【図１８】
0004285877.tif 000079
【図１９】
0004285877.tif 000080
【図２０】
0004285877.tif 000081
【図２１】
0004285877.tif 000082
【図２２】
0004285877.tif 000083
【図２３】
0004285877.tif 000084
【図２４】
0004285877.tif 000085
【図２５】
0004285877.tif 000086
【図２６】
0004285877.tif 000087
【図２７】
0004285877.tif 000088
【図２８】
0004285877.tif 000089