JP4285877B2 - Metaaddressing architecture for dynamic reconfiguration computation and metaaddressing method for dynamic reconfiguration computation - Google Patents
Metaaddressing architecture for dynamic reconfiguration computation and metaaddressing method for dynamic reconfiguration computation Download PDFInfo
- Publication number
- JP4285877B2 JP4285877B2 JP2000034825A JP2000034825A JP4285877B2 JP 4285877 B2 JP4285877 B2 JP 4285877B2 JP 2000034825 A JP2000034825 A JP 2000034825A JP 2000034825 A JP2000034825 A JP 2000034825A JP 4285877 B2 JP4285877 B2 JP 4285877B2
- Authority
- JP
- Japan
- Prior art keywords
- address
- instruction
- data
- machine
- interrupt
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Advance Control (AREA)
- Microcomputers (AREA)
Description
【0001】
【発明の属する技術分野】
本発明は、一般にコンピュータアーキテクチャに係り、特に、再構成計算のためのシステム及び方法、つまり、動的再構成計算のためのメタアドレス指定アーキテクチャ及び動的再構成計算のためのメタアドレス指定方法に関する。
【0002】
本発明は、1995年4月17日付で提出した米国特許No.5,794,062の分割出願である1998年2月26日付で提出した「変更可能な内部ハードウェア編成を含む処理装置を用いた動的再構成計算のためのシステム及び方法」という名称の米国特許出願No.09/031,323の米国一部継続出願に基づく優先権主張出願である。
【0003】
【従来の技術】
コンピュータアーキテクチャの進展は、より優れた計算性能への要求によって推進されている。各種の計算問題を迅速かつ正確に解くには、一般に異なる種類の計算リソースが必要である。問題の種類が限られている場合には、検討中の種類の問題のために特に構築された計算リソースを用いることによって計算性能を向上させることができる。たとえば、デジタル信号処理(DSP:Digital Signal Processing)ハードウェアを汎用コンピュータと併用すると、ある種の信号処理能力を大幅に向上させることができる。コンピュータ自体が検討中の種類の問題のために特別に構築されているときには、こうした特定の種類の問題について計算性能がさらに向上するか、または、利用可能な計算リソースと比べて、おそらくさらに最適化されたものとなる。現在の並列コンピュータ及び大規模並列コンピュータは、O(n2 )またはそれ以上に複雑な特殊な種類の問題に対する処理能力が優れており、これが上記の場合の例である。
【0004】
優れた計算性能は必要ではあるが、その一方でシステム費用を最小限に抑える必要性と均衡させなければならず、また現在及び将来考えられるできるだけ広範囲な用途においてシステム生産性を最大限に高める必要性とも均衡させなければならない。一般に、特殊なハードウェアは汎用ハードウェアより高価であるため、限られた数種類の問題専用の計算リソースをコンピュータシステムに組込むことは、システム費用を低く抑えることに悪影響を与える。専用コンピュータを設計し生産することは、エンジニアリング(工学設計)に要する時間とハードウェアの費用の点からきわめて高価なものとなる。計算性能を高めるために専用ハードウェアを用いた場合、計算性能の必要度が変化すると性能上の利点は少なくなる。先行技術では、計算性能の必要度が変化すると、新しい専用ハードウェアまたは新しい専用システムが設計され、製造され、結果として望ましくないほど高額の再活用できない設計・製造費用が繰返し支出される。したがって、特定種類の問題専用の計算リソースを用いると、計算の必要度が変化した場合、利用可能なシリコンリソースを非効率に利用することになる。したがって、上記のような理由で専用ハードウェアを用いて計算性能を向上させようとする試みは望ましくない。
【0005】
従来、再プログラマブルハードウェアまたは再構成ハードウェアを用いて計算性能を向上させ、また問題の種類の適用可能性を最大限に高めるさまざまな試みが行われてきた。最初のこのような先行技術のアプローチは、ダウンロード可能マイクロコードコンピュータアーキテクチャによるものである。ダウンロード可能マイクロアーキテクチャでは、固定された非再構成ハードウェアリソースの機能を特定のバージョンのマイクロコードを用いることによって選択的に変化させることができる。このようなアーキテクチャの例に、IBMシステム/360がある。このような先行技術システムの基本的計算ハードウェア自体は再構成可能ではないので、広範囲の種類の問題について検討する場合、こうしたシステムでは最適化された計算性能は得られない。
【0006】
計算性能を向上させ、問題の種類の適用可能性を最大限に高めるための先行技術の第2のアプローチは、非再構成ホストプロセッサまたはホストシステムに結合された再構成ハードウェアを用いることである。この先行技術のアプローチでは、非再構成ホストに結合された1個またはそれ以上の再構成プロセッサを利用することが最も一般的である。このアプローチは、ホストに付加されたプロセッサセット内のハードウェアの一部分が再構成できるような「付加再構成可能プロセッサ(ARP:Attached Reconfigurable Processor)」アーキテクチャとして分類することができる。ホストシステムに結合された1組の再構成プロセッサを利用する現在の付加再構成可能プロセッサ(ARP)システムの例には、Supercomputing Research Center(Bowie,メリーランド)が設計したSPLASH−1とSPLASH−2、Annapolis Micro Systems(Annapolis,メリーランド)製のWILDFIRE Custom Configurable Computer(SPLASH−2の市販バージョン)、Virtual Computer Corporation(Reseda,カリフォルニア)製のECV−1がある。計算を主体とした問題の多くでは、プログラムコードの比較的小さな部分の実行にかなりの時間が費やされる。一般に、付加再構成可能プロセッサ(ARP)アーキテクチャを用いて、プログラムコードのこのような部分のために再構成計算アクセラレータが提供される。
【0007】
【発明が解決しようとする課題】
残念ながら、1個またはそれ以上の再構成計算アクセラレータを基礎においた計算モデルには、下記に詳細に説明するような重大な欠点がある。
【0008】
<第1の欠点>
付加再構成可能プロセッサ(ARP)アーキテクチャの第1の欠点は、付加再構成可能プロセッサ(ARP)システムが特定のときに再構成ハードウェアの特定のアルゴリズムの最適実動化を実行しようと試みるために起こる。
【0009】
たとえば、Virtual Computer CorporationのECV−1の背後にある設計方針は、特定のアルゴリズムのために最適の計算性能を提供するよう、その特定のアルゴリズムを再構成ハードウェアソースの特定の構成に変換するというものである。再構成ハードウェアリソースは、特定のアルゴリズムのために最適の能力を提供する目的だけに用いられる。命令実行の管理などの一般的な目的のために再構成ハードウェアリソースを用いることは避けられる。したがって、所定のアルゴリズムについて、再構成ハードウェアリソースは最適の能力が得られるよう結合された個々のゲートの全体像から検討される。
【0010】
一部の付加再構成可能プロセッサ(ARP)システムは、「プログラム」が従来型のプログラム命令と、各種再構成ハードウェアリソースがどのように相互結合されるかを定める専用命令との両方を含むプログラミングモデルに依拠している。付加再構成可能プロセッサ(ARP)システムは、ゲートレベルアルゴリズムに適した固有の方法で再構成ハードウェアリソースを検討するので、これらの専用命令は、用いられる各再構成ハードウェアリソースの特性に関する詳細な内容と、再構成ハードウェアリソースが他の再構成ハードウェアリソースに結合される方法を提供しなければならない。これにより、プログラムは複雑なものとなる。プログラミングの複雑さを軽減するために、プログラムに従来型の高レベルプログラミング言語命令と高レベル専用命令の両方を含めたプログラミングモデルを利用する試みが行われている。つまり、現在の付加再構成可能プロセッサ(ARP)システムでは、高レベルプログラミング言語命令と上記の高レベル専用命令の両方をコンパイルできるコンパイルシステムを利用しようという試みがなされている。このようなコンパイルシステムの目的出力は、従来型の高レベルプログラミング言語命令についてはアセンブリ言語コードであり、専用命令についてはハードウェア記述言語(HDL:Hardware Description Language)である。検討中の特定のアルゴリズムについて最適の計算性能を得るために1組の再構成ハードウェアリソースと相互結合スキームを自動決定することは、残念ながらNPハード問題である。一部の付加再構成可能プロセッサ(ARP)システムの長期目標は、アルゴリズムを1組のゲートのための最適化相互結合スキームに直接コンパイルできるコンパイルシステムを開発することである。しかし、このようなコンパイルシステムの開発は、特に複数の種類のアルゴリズムについて検討する場合、きわめて困難な作業である。
【0011】
<第2の欠点>
付加再構成可能プロセッサ(ARP)アーキテクチャの第2の欠点は、付加再構成可能プロセッサ(ARP)装置を構成するアルゴリズムに関連した計算作業を、付加再構成可能プロセッサ(ARP)装置が多重再構成論理装置全体に分散するために起こる。
【0012】
たとえば1組のフィールドプログラマブル論理回路(FPGA)を用いて実装され、また並列乗算アクセラレータを実動化するために構成された付加再構成可能プロセッサ(ARP)装置については、並列乗算に関連した計算作業がフィールドプログラマブル論理回路(FPGA)全体に分散される。したがって、付加再構成可能プロセッサ(ARP)装置を構成できるアルゴリズムの大きさは、存在する再構成論理装置の数によって制限される。同様に、付加再構成可能プロセッサ(ARP)装置が扱うことができる最大データセットの大きさも制限される。一部のアルゴリズムにはデータ従属性があるので、ソースコードの試験を行っても、付加再構成可能プロセッサ(ARP)装置の限界が必ずしも明示的に示されるとは限らない。一般に、データ従属性アルゴリズムは避けられる。
【0013】
さらに、付加再構成可能プロセッサ(ARP)アーキテクチャが多重再構成論理装置全体に計算作業を分散することを開示しているので、新規のまたはやや修正したアルゴリズムを含めるには、再構成をひとまとめに行う必要がある。すなわち、多重再構成論理装置を再構成しなければならない。これにより、別の問題またはカスケード接続された副次的問題について再構成を行うことができる最大レートが限定される。
【0014】
<第3の欠点>
付加再構成可能プロセッサ(ARP)アーキテクチャの第3の欠点は、プログラムコードの1つまたはそれ以上の部分がホストで実行されるために生じる。
【0015】
すなわち、付加再構成可能プロセッサ(ARP)装置はそれ自体独立した計算システムではなく、プログラム全体を実行するものではない。このためホストとの相互作用が必要となる。一部のプログラムコードが非再構成ホストで実行されるので、利用可能なシリコンリソースがプログラムの実行の時間枠において最大限に利用されない。特にホストによる命令の実行中、付加再構成可能プロセッサ(ARP)装置のシリコンリソースはアイドル状態であるか、非効率な利用状態にある。同様に、付加再構成可能プロセッサ(ARP)装置がデータを処理するとき、ホストでのシリコンリソースの利用はおおむね非効率である。複数の全プログラムを容易に実行するためには、システム内のシリコンリソースを、容易に再利用できるリソースにグループ化しなければならない。上記のように、付加再構成可能プロセッサ(ARP)システムは、再構成ハードウェアリソースを特定の時間における特定のアルゴリズムの実動化のために最適に相互結合された1組のゲートとして扱う。したがって、再利用できるためにはアルゴリズムがある程度の独立性をもつ必要があるので、付加再構成可能プロセッサ(ARP)システムは再構成ハードウェアリソースの特定のセットをアルゴリズムごとに容易に再利用できるリソースとして扱うための手段は提供しない。
【0016】
付加再構成可能プロセッサ(ARP)装置は、現在実行しているホストプログラムをデータとして扱うことができず、一般にそれ自体を計算環境に適合させることができない。付加再構成可能プロセッサ(ARP)装置は、それ自体のホストプログラムを実行することによって、それ自体をシミュレートするようには作られていない。さらに付加再構成可能プロセッサ(ARP)装置は、構築される再構成ハードウェアリソースを直接用いて、それ自体に対しそれ自体のハードウェア記述言語(HDL)またはアプリケーションプログラムをコンパイルするようには作られていない。したがって付加再構成可能プロセッサ(ARP)装置は、ホストプロセッサからの独立性を開示する独立計算モデルに関してアーキテクチャ的に制限されている。
【0017】
付加再構成可能プロセッサ(ARP)装置は、計算アクセラレータとして機能するので、一般に独立した入力/出力(I/O)処理は行えない。通常は、付加再構成可能プロセッサ(ARP)装置は入出力処理のためのホスト相互作用を必要とする。したがって、付加再構成可能プロセッサ(ARP)装置の性能は入出力について限られているかもしれない。しかし、当業者は、付加再構成可能プロセッサ(ARP)装置が特定の入出力問題を加速処理するために構成できることを認めるであろう。しかし、付加再構成可能プロセッサ(ARP)装置全体は単一の特定の問題について構成されているので、付加再構成可能プロセッサ(ARP)装置が入出力処理とデータ処理について互いに悪影響を与えずに均衡をとることはできない。さらに、付加再構成可能プロセッサ(ARP)装置は割込み処理のための手段を提供しない。付加再構成可能プロセッサ(ARP)装置は計算アクセラレーションを最大化するのに向けられているので、付加再構成可能プロセッサ(ARP)に関する開示内容ではこのような割込みメカニズムは述べられておらず、割込みは計算加速に否定的な影響を与える。
【0018】
<第4の欠点>
付加再構成可能プロセッサ(ARP)アーキテクチャの第4の欠点は、付加再構成可能プロセッサ(ARP)装置を用いて利用するのが困難な固有のデータ並列性を有するソフトウェアアプリケーションが存在するために生じる。
【0019】
きわめて大規模なネットリストのネットネーム記号導出が必要とされるときには、ハードウェア記述言語(HDL)コンパイルアプリケーションがこのような例の1つとして挙げられる。
【0020】
<第5の欠点>
付加再構成可能プロセッサ(ARP)アーキテクチャの第5の欠点は、これのアーキテクチャが基本的にSIMD(Single Instruction Stream Multiple Data Stream)コンピュータアーキテクチャモデルである点である。
【0021】
したがって、付加再構成可能プロセッサ(ARP)アーキテクチャは、1つまたはそれ以上の革新的先行技術の非再構成システムと比べ、アーキテクチャとして効率的ではない。付加再構成可能プロセッサ(ARP)システムは、各特定の構成例について、利用できる再構成ハードウェアが提供できるのと同じ程度の計算能力について、プログラム実行のプロセスのほんの一部、主として算術計算のための演算ロジックしか反映していない。これに対して、1971年のFairchildでのSYMBOLマシンのシステム設計では、コンピュータ全体がプログラムの実行の各局面について一意的なハードウェアコンテクストを使用している。結果として、付加再構成可能プロセッサ(ARP)システムが開示しているホスト部分を含めて、SYMBOLはコンピュータのシステムアプリケーションについてのすべての構成部分を含むこととなった。
【0022】
<その他の欠点>
付加再構成可能プロセッサ(ARP)アーキテクチャにはその他の欠点もある。
【0023】
たとえば、付加再構成可能プロセッサ(ARP)装置は多重再構成論理装置に独立したタイミングを与えるための有効な手段を持っていない。同様に、カスケード接続された付加再構成可能プロセッサ(ARP)装置には、独立してタイミング決定された装置を提供するための有効なクロック分散手段を持っていない。別の例としては、実行時間と、アクセラレーションを試みるソースコード文とを正確に相関させることが困難なことがある。ネットシステムクロックレートを正確に算出するためには、ハードウェア記述言語(HDL)コンパイルのあと、コンピュータ支援設計(CAD:Computer‐Aided Design)手段で付加再構成可能プロセッサ(ARP)装置をモデル化しなければならないが、このような基本パラメータへの到達は時間のかかるプロセスである。
【0024】
従来のアーキテクチャで同様に重要な問題は、それらが仮想または共有メモリを使用していることである。この開示内容は統合されたアドレススペースを使用するということであり、これによって、より複雑なアドレス指定演算が必要となり、そのためメモリアクセスが遅くなり、効率が低下する。たとえば仮想メモリを用いてシステム内のメモリ装置の個々のビットにアクセスするには、まずメモリの物理的アドレススペースを論理アドレスに区分し、次に仮想アドレスをその論理アドレスにマッピングしなければならない。このようにしてようやくメモリの各ビットにアクセスすることができる。さらに共有メモリシステムでは、プロセッサは通常はメモリにアクセスを許容する前にアドレス確認演算を実行するため、メモリ演算はさらに複雑になる。最後にプロセッサは、ある種の優先度決定システムを提供することにより、メモリの同じ領域に同時にアクセスしようとする複数のプロセスの間で調整(仲裁)を行わなければならない。
【0025】
共有メモリ及び仮想メモリを使用することにより起こる多くの問題に対処するために、多くの従来型のシステムはメモリ管理システム(MMU:Memory Management Units)を用いて、論理アドレスの仮想アドレスへの変換などのメモリ管理機能のほとんど実行している。しかし、メモリ管理システム(MMU)/ソフトウェア相互作用により、メモリアクセス演算はさらに複雑になる。さらにメモリ管理システム(MMU)は、実行できる演算の種類がきわめて限定されている。メモリ管理システム(MMU)は、割込みを扱うことができず、メッセージを待ち行列に待機させることができず、また複雑なアドレス指定演算を実行することができないため、すべてプロセッサが実行しなければならない。多重並列プロセッサを有するコンピュータアーキテクチャで共有メモリまたは仮想メモリシステムを用いると、上記のような欠点がさらに拡大される。ハードウェア/ソフトウェア相互作用が上に述べたように管理されなければならないばかりでなく、共有メモリにアクセスしようとする多重プロセッサに応じてメモリ内のデータのコヒーレント性と一致性を、ソフトウェア及びハードウェアの両方によって維持しなければならない。プロセッサを追加すると、仮想アドレスの論理アドレスへの変換はさらに困難となる。メモリアクセス演算におけるこうした複雑性によってシステム能力が必然的に低下し、プロセッサを追加しシステムの規模が大きくなればなるほどこの能力低下は大幅なものとなる。
【0026】
従来型のシステムの一例は、キャッシュコヒーレント、非一様メモリアクセス(ccNUMA:Non-Uniform Memory Access)コンピュータアーキテクチャである。非一様メモリアクセス(ccNUMA)マシンは、キャッシュ制御装置やクロスバー切替装置などの複雑で高価なハードウェアを使用し、このメモリは多重プロセッサにより実際には共有されているとしても、個々の独立したCPUについて単一のアドレススペースの幻影(仮想スペース)を維持する。非一様メモリアクセス(ccNUMA)はやや拡張性があるが、この拡張性は、システム内でプロセッサを緊密に結合させるためにハードウェアを追加することによって達成される。この種のシステムは、科学的計算での有限要素グリッドの場合のように、共有メモリ入出力演算のためきわめて広い帯域幅を必要とする単一のプログラムイメージが共有されている計算環境で用いられると一層有利である。さらに非一様メモリアクセス(ccNUMA)は、プロセッサの特性が互いに類似していないようなシステムでは役に立たない。非一様メモリアクセス(ccNUMA)アーキテクチャでは、追加される各プロセッサが既存のプロセッサと同種のものでなければならない。したがって、プロセッサを異なる機能を実行させるために最適化し、互いに異なった作動を行うシステムでは、非一様メモリアクセス(ccNUMA)アーキテクチャは有効な解決策とはならない。最後に、従来型のシステムでは、標準的メモリアドレススキームのみがシステム内のメモリをアドレス指定するのに用いられる。
【0027】
必要とされているのは、拡張性、平易性のあるアドレス指定を提供し、またシステムの処理能力にほとんど影響を与えないような、並列計算環境でのメモリをアドレス指定するための手段である。
【0028】
【発明が解決しようとする課題】
第1の発明は、上述した課題を解決するために、動的再プログラマブル処理マシンのデータパケットのためのローカルメモリ宛先を指定するメタアドレス指定アーキテクチャであって、第1のメモリ装置と、第1のメモリ装置が結合され、所定の命令を受け取ると、受け取った命令が遠隔演算情報を含む遠隔演算を要求する命令かを判定し、命令が遠隔演算情報を含む遠隔演算を要求する命令であると判定した場合に、命令に含まれる遠隔演算情報を第1のメモリ装置に記憶し、遠隔演算情報が記憶されている第1のメモリ装置におけるメモリアドレスを含む無条件命令を生成する動的再プログラマブル処理マシンと、第1の動的再プログラマブル処理マシンから無条件命令を受け取り、無条件命令に含まれるメモリアドレスに基づいて第1のメモリ装置から遠隔演算情報を検索し、遠隔演算情報に基づき生成されるデータパケットの送信先のアドレスを示す目的地理アドレスと、送信先においてデータを書き込む第2のメモリ装置のアドレスを示す目的ローカルメモリアドレスとを含むメタアドレスを遠隔演算情報に基づいて生成し、メタアドレスを含むデータパケットを遠隔演算情報に基づいて生成するアドレス指定マシンと、第1のアドレス指定マシンおよびデータの送信先として目的地理アドレスに示される第2のアドレス指定マシンに結合され、第1のアドレス指定マシンで生成されたデータパケットを第1のアドレス指定マシンから受け取って、データパケットにおけるメタアドレスに含まれる目的地理アドレスに応じて、第1のアドレス指定マシンと第2のアドレス指定マシンとの間で相互にデータをルーティングする相互結合装置とを具備する。
【0029】
第2の発明は、動的再プログラマブル処理マシンは、受け取った命令が遠隔演算を要求する命令でない場合は、受け取った命令に従って処理を実行する。
【0030】
第3の発明は、第2のアドレス指定マシンは、第1のアドレス指定マシンが生成したデータパケットを受け取ると、データパケットに含まれるメタアドレスを目的地理アドレスと目的ローカルメモリアドレスとに復号し、当第2のアドレス指定マシンのアドレスを示す地理アドレスと復号した目的地理アドレスとを比較するアドレス復号器と、アドレス復号器による比較の結果、地理アドレスと目的地理アドレスとが一致する場合に、データパケットを第2の動的再プログラマブル処理マシンに伝送する制御装置とを具備する。
【0031】
第4の発明は、第2の動的再プログラマブル処理マシンに結合され、結合される第2の動的再プログラマブル処理マシンについてのアドレスを示す地理アドレスを記憶するアーキテクチャ記述メモリ装置をさらに具備する。
【0032】
第5の発明は、第2のアドレス指定マシンが、入出力装置に結合された割込みハンドラをさらに含み、割込みハンドラが、割込み要求を識別するための識別装置と、割込み要求の有効性を検証するために、識別した割込み要求を割込み要求の記憶されたリストと比較するためのコンパレータと、記憶された割込み処理命令に従って有効性が確認された割込み要求を処理するための割込みロジックと、を具備する。
【0033】
第6の発明は、メタアドレスが80ビット幅であり、目的地理アドレスが16ビット幅であり、ローカルアドレスが64ビット幅である。
【0034】
第7の発明は、動的再プログラマブル処理マシンのデータパケットのためのローカルメモリ宛先を指定するメタアドレス指定方法であって、所定の命令を受け取ると、受け取った命令が遠隔演算情報を含む遠隔演算を要求する命令かを判定し、命令が遠隔演算情報を含む遠隔演算を要求する命令であると判定した場合に、命令に含まれる遠隔演算情報を第1のメモリ装置に記憶し、遠隔演算情報が記憶されている第1のメモリ装置におけるメモリアドレスを含む無条件命令を動的再プログラマブル処理マシンにより生成する無条件命令生成ステップと、無条件命令生成ステップで生成された無条件命令を動的再プログラマブル処理マシンから受け取り、無条件命令に含まれるメモリアドレスに基づいて第1のメモリ装置から遠隔演算情報を検索し、遠隔演算情報に基づき生成されるデータパケットの送信先のアドレスを示す目的地理アドレスと、送信先においてデータを書き込む第2のメモリ装置のアドレスを示す目的ローカルメモリアドレスとを含むメタアドレスを遠隔演算情報に基づいて生成し、メタアドレスを含むデータパケットを遠隔演算情報に基づいてアドレス指定マシンにより生成するデータパケット生成ステップと、データパケット生成ステップで生成されたデータパケットを第1のアドレス指定マシンから受け取って、データパケットにおけるメタアドレスに含まれる目的地理アドレスに応じて、第1のアドレス指定マシンと、データの送信先として目的地理アドレスに示される第2のアドレス指定マシンとの間で相互にデータをルーティングするステップとを具備する。
【0035】
第8の発明は、無条件命令生成ステップで、動的再プログラマブル処理マシンは、受け取った命令が遠隔演算を要求する命令でない場合は、受け取った命令に従って処理を実行する。
【0036】
第9の発明は、第2のアドレス指定マシンが、第1のアドレス指定マシンが生成したデータパケットを受け取ると、データパケットに含まれるメタアドレスを目的地理アドレスと目的ローカルメモリアドレスとに復号し、当第2のアドレス指定マシンのアドレスを示す地理アドレスと復号した目的地理アドレスとを比較するアドレス復号ステップと、アドレス比較ステップによる比較の結果、地理アドレスと目的地理アドレスとが一致する場合に、データパケットを第2の動的再プログラマブル処理マシンに伝送する伝送ステップとをさらに具備する。
【0037】
第10の発明は、第2の動的再プログラマブル処理マシンについてのアドレスを示す地理アドレスが、第2の動的再プログラマブル処理マシンに結合されるアーキテクチャ記述メモリ装置に記憶される。
【0038】
第11の発明は、第2のアドレス指定マシンが含む、入出力装置に結合された割込みハンドラが、割込み要求を識別する識別ステップと、識別ステップで識別された割込み要求の有効性を検証するために、識別した割込み要求を割込み要求の記憶されたリストと比較する比較ステップと、記憶された割込み処理命令に従って前期比各ステップの比較結果に基づき有効性が確認された割込み要求を処理するためのステップとを具備する。
【0039】
第12の発明は、メタアドレスが80ビット幅であり、目的地理アドレスが16ビット幅であり、ローカルアドレスが64ビット幅である。
【0043】
【発明の実施の形態】
<概要>
本発明は、1組のSマシンと、各Sマシンに対応するTマシンと、汎用相互結合マトリックス(GPIM:General-Purpose Interconnect Matrix)と、1組の入出力Tマシンと、1組の入出力装置と、マスタタイムベース装置とが、拡張性、並列、動的再構成計算のためのシステムを形成する。各Sマシンは、メモリと、第1ローカルタイムベース装置と、動的再構成処理装置(DRPU:Dynamically Reconfigurable Process unit)とを含む動的再構成コンピュータである。動的再構成処理装置(DRPU)は、命令取出し装置(IFU:Instruction Fetch Unit)として構成された再プログラマブル論理装置と、データ演算装置(DOU:Data Operate unit)と、アドレス演算装置(AOU:Address Operate Unit)とを用いて実装され、これらはそれぞれ再構成割込みまたは1組のプログラム命令に埋込まれた再構成命令の選択に応じてプログラム実行中に選択的に再構成される。各再構成割込みと各再構成命令は、特定の命令セットアーキテクチャ(ISA:Instruction Set Architecture)の実装のために最適化された動的再構成処理装置(DRPU)ハードウェア編成を指定する構成データセットを引照する。命令取出し装置(IFU)は、再構成演算と、命令取り出し・復号演算と、メモリアクセス演算とを指示し、命令の実行を容易にするために制御信号をデータ演算装置(DOU)とアドレス演算装置(AOU)とに発する。データ演算装置(DOU)はデータ演算を実行し、アドレス演算装置(AOU)はアドレス演算を実行する。各Tマシンは、共通インタフェース制御装置(CICU:Common Interface and Control Unit)と、1個またはそれ以上の相互結合入出力装置と、第2ローカルタイムベース装置とを含むデータ転送装置である。汎用相互結合マトリックス(GPIM)は、Tマシン相互間の並列通信を容易に行えるようにする拡張性相互結合ネットワークである。この1組のTマシンと汎用相互結合マトリックス(GPIM)によって、Sマシン間の並列通信が容易に行われる。またTマシンは、ネットワークのSマシン相互間のデータの転送を制御し、要求されるアドレス指定演算を提供する。メタアドレスは、各Sマシンに拡張性ビットアドレス指定能力を提供するのに用いられる。
【0044】
<具体的態様>
図1は、本発明に基づいて構築された、拡張性、並列、動的再構成計算のためのシステム10の好ましい実施例の構成図である。システム10は、少なくとも1個のSマシン12と、各Sマシン12に対応するTマシン14と、汎用相互結合マトリックス(GPIM)16と、少なくとも1個の入出力Tマシン18と、1個またはそれ以上の入出力装置20と、マスタタイムベース装置22とを含んでいることが好ましい。好ましい実施例では、システム10は、多重Sマシン12と、したがって多重Tマシン14と、多重入出力Tマシン18と、多重入出力装置20とを含んでいる。
【0045】
Sマシン12と、Tマシン14と、入出力Tマシン18とは、それぞれマスタタイムベース装置22のタイミング出力部に結合されたマスタタイミング入力部を含んでいる。各Sマシン12は、それに対応するTマシン14に結合された入力部と出力部とを含んでいる。各Tマシン14は、それに対応するSマシン12に結合された入力部と出力部の他に、汎用相互結合マトリックス(GPIM)16に結合されたルーティング入力部とルーティング出力部とを含んでいる。同様に、各入出力Tマシン18は、入出力装置20に結合された入力部と出力部とを含み、また汎用相互結合マトリックス(GPIM)16に結合されたルーティング入力部とルーティング出力部とを含んでいる。
【0046】
下記に詳細に説明するように、各Sマシン12は動的再構成コンピュータである。汎用相互結合マトリックス(GPIM)16は、Tマシン14間の通信を容易に行えるようにする2点間並列相互結合手段を形成している。Tマシン14と汎用相互結合マトリックス(GPIM)16は、Sマシン12間のデータ転送のための2点間並列相互結合手段を形成している。同様に、汎用相互結合マトリックス(GPIM)16と、1組のTマシン14と、1組の入出力Tマシン18とは、Sマシン12と各入出力装置20との間の入出力転送のための2点間並列相互結合手段を形成している。マスタタイムベース装置22は、各Sマシン12と各Tマシン14にマスタタイミング信号を送る発振器を含んでいる。
【0047】
模範実施例では、各Sマシン12は、64メガバイトのランダムアクセスメモリ(RAM)に結合されたXilinx XC4013(Xilinx, Inc., サンノゼ,カリフォルニア)フィールドプログラマブルゲートアレイ(FPGA:Field Programmable Gate Array)を用いて実装されている。各Tマシン14は、各入出力Tマシン18と同様に、Xilinx XC4013フィールドプログラマブルゲートアレイ(FPGA)の再構成ハードウェアリソースの約50%を用いて実装されている。汎用相互結合マトリックス(GPIM)16は、環状体の相互結合メッシュとして実装されている。マスタタイムベース装置22は、システム全体の周波数基準を提示するクロック分散回路に結合されたクロック発振器であり、米国に特許出願された「位相同期、フレキシブル周波数クロッキングとメッセージングのためのシステムと方法(System and Method for Phase-Synchronous, Flexible Frequency Clocking and Messaging)」に記載されている。Tマシン14と、Sマシン12と、入出力Tマシン18とは、拡張性コヒーレントインタフェース(SCI)を定めたANSI/IEEE規格1596−1992に従って情報を転送するのが好ましい。
【0048】
好ましい実施例では、システム10は並列で機能する多重Sマシン12を含んでいる。個々のSマシン12の構造と機能については、図2から図17を用いて下記に詳しく説明する。図2は、Sマシン12の好ましい実施例の構成図である。Sマシン12は、第1ローカルタイムベース装置30と、プログラム命令を実行するための動的再構成処理装置(DRPU)32と、メモリ34とを含んでいる。第1ローカルタイムベース装置30は、Sマシンのマスタタイミング入力部を形成するタイミング入力部を含んでいる。また第1ローカルタイムベース装置30は、第1ローカルタイミング信号すなわちクロックを、第1タイミング信号ライン40を経て動的再構成処理装置(DRPU)32のタイミング入力部に、またメモリ34のタイミング入力部に送るタイミング出力部を含んでいる。動的再構成処理装置(DRPU)32は、メモリ制御ライン42を経てメモリ34の制御信号入力部に結合された制御信号出力部と、アドレスライン44を経てメモリ34のアドレス入力部に結合されたアドレス出力部と、メモリ入出力ライン46を経てメモリ34の双方向データポートに結合された双方向データポートとを含んでいる。さらに動的再構成処理装置(DRPU)32は、外部制御ライン48を経てその対応するTマシン14の双方向データポートに結合された双方向データポートを含んでいる。図2に示すように、メモリ制御ライン42はXビットであり、アドレスライン44はMビットであり、メモリ入出力ライン46は(N×k)ビットであり、外部制御ライン48はYビットである。
【0049】
好ましい実施例では、第1ローカルタイムベース装置30は、マスタタイムベース装置22からマスタタイミング信号を受取る。第1ローカルタイムベース装置30は、マスタタイミング信号から第1ローカルタイミング信号を生成し、第1ローカルタイミング信号を動的再構成処理装置(DRPU)32とメモリ34に送る。好ましい実施例では、第1ローカルタイミング信号は個々のSマシン12ごとに異なる。したがって、所定のSマシン12内の動的再構成処理装置(DRPU)32とメモリ34は、他のSマシン12内の動的再構成処理装置(DRPU)32とメモリ34とは独立したクロックレートで機能する。第1ローカルタイミング信号は、マスタタイミング信号と位相同期であることが好ましい。好ましい実施例では、第1ローカルタイムベース装置30は、再構成ハードウェアリソースを用いて実装された位相ロック検出回路を含む位相ロック周波数変換回路を用いて実動化される。当業者は、別の実施例で、第1ローカルタイムベース装置30がクロック分散ツリーの一部として実動化できることを認めるであろう。
【0050】
メモリ34は、RAMとして実動化され、またプログラム命令と、プログラムデータと、動的再構成処理装置(DRPU)32のための構成データとを記憶することが好ましい。任意のSマシン12のメモリ34は、汎用相互結合マトリックス(GPIM)16を経てシステム10内の他のSマシン12にアクセスできることが好ましい。さらに各Sマシン12には、均一のメモリアドレススペースがあることが好ましい。好ましい実施例では、メモリ34に記憶されたプログラム命令は、動的再構成処理装置(DRPU)32へ向けられた再構成指示を選択的に含んでいる。図3は、再構成指示を含む模範プログラムリスト50である。図3に示すように、模範プログラムリスト50は1組の外部ループ部分52と、第1内部ループ部分54と、第2内部ループ部分55と、第3内部ループ部分56と、第4内部ループ部分57と、第5内部ループ部分58とを含んでいる。当業者は、「内部ループ」という用語が特定のセットの関連演算を実行するプログラムの反復部分を指し、また「外部ループ」という用語が、主として汎用演算を実行し、及び/または一つの内部ループ部分からもう一つの内部ループ部分へ制御を転送するプログラムの部分を指すことを容易に認めるであろう。一般に、プログラムの内部ループ部分54、55、56、57、58は、潜在的に大きなデータセットについて特定の演算を実行する。たとえば画像処理アプリケーションでは、第1内部ループ部分54は画像データについてカラーフォーマット変換演算を実行し、第2〜第5内部ループ部分54、55、56、57、58は、線形フィルタリング演算、畳込み演算、パターン探索演算、及び圧縮演算を実行することになる。当業者は、内部ループ部分55、56、57、58の連続シーケンスがソフトウェアパイプラインとして考えられることを認めるであろう。各外部ループ部分52は、データの入出力について責任を有し、及び/または第1内部ループ部分54から第2内部ループ部分55へのデータ及び制御の転送を指示する。当業者は、さらに、所定の内部ループ部分54、55、56、57、58が一つまたはそれ以上の再構成指示を含むことを認めるであろう。一般に任意のプログラムについて、プログラムリスト50の外部ループ部分52は各種の汎用命令を含むが、プログラムリスト50の内部ループ54、56は特定の命令セットを実行するのに用いられる比較的種類の少ない命令で構成される。
【0051】
模範プログラムリスト50では、第1再構成指示は第1内部ループ部分54の開始部分に現れ、第2再構成指示は第1内部ループ部分54の終了部分に現れる。同様に、第3再構成指示は第2内部ループ部分55の開始部分に、また第4の再構成指示は第3内部ループ部分56の開始部分に、第5再構成指示は第4内部ループ部分57の開始部分に、第6及び第7再構成指示はそれぞれ第5内部ループ部分58の開始部分と終了部分に現れる。各再構成指示は、特定の命令セットアーキテクチャ(ISA)を実動化するためのものであり、またそれに最適化された内部動的再構成処理装置(DRPU)ハードウェア編成を指定する構成データセットを指示することが好ましい。命令セットアーキテクチャ(ISA)は、コンピュータをプログラムするのに用いることができる基本的なまたは中核となる命令セットである。命令セットアーキテクチャ(ISA)は、命令フォーマットと、操作コードと、データフォーマットと、アドレス指定モードと、実行制御フラグと、プログラムアクセス可能レジスタとを定義する。当業者は、これが命令セットアーキテクチャ(ISA)の従来の定義に対応することを認めるであろう。本発明では、各Sマシンの動的再構成処理装置(DRPU)32は、各所望の命令セットアーキテクチャ(ISA)について独自の構成データセットを用いて多重命令セットアーキテクチャ(ISA)を直接実装するよう、迅速なランタイム構成とすることができる。すなわち各命令セットアーキテクチャ(ISA)は、対応する構成データセットによって定められる独自の内部動的再構成処理装置(DRPU)ハードウェア編成で実装される。したがって本発明では、第1〜第5内部ループ部分54、55、56、57、58はそれぞれ一意の命令セットアーキテクチャ(ISA)、すなわち命令セットアーキテクチャ(ISA)1、命令セットアーキテクチャ(ISA)2、命令セットアーキテクチャ(ISA)3、命令セットアーキテクチャ(ISA)4及び命令セットアーキテクチャ(ISA)kに対応する。当業者は、連続命令セットアーキテクチャ(ISA)がそれぞれ一意である必要はないことを認めるであろう。したがって、命令セットアーキテクチャ(ISA)kは命令セットアーキテクチャ(ISA)1、命令セットアーキテクチャ(ISA)2、命令セットアーキテクチャ(ISA)3、命令セットアーキテクチャ(ISA)4であってもよく、また異なる命令セットアーキテクチャ(ISA)であっても良い。1組の外部ループ部分52も、一意の命令セットアーキテクチャ(ISA)、すなわち命令セットアーキテクチャ(ISA)0に対応する。好ましい実施例では、プログラムの実行中、連続した再構成指示の選択はデータ従属的に行われる(データに応じて異なる)。特定の再構成指示を選択すると、プログラム命令はその後、対応する構成データセットによって指定された独自の動的再構成処理装置(DRPU)ハードウェア構成により、対応する命令セットアーキテクチャ(ISA)に従って実行される。
【0052】
本発明では、特定の命令セットアーキテクチャ(ISA)は、命令セットアーキテクチャ(ISA)が含む命令の数と種類に従って、内部ループ命令セットアーキテクチャ(ISA)または外部ループ命令セットアーキテクチャ(ISA)として分類することができる。いくつかの命令を含み、汎用演算の実行に役立つ命令セットアーキテクチャ(ISA)は外部ループ命令セットアーキテクチャ(ISA)であり、一方、比較的少ない命令を含み、特定の種類の命令の実行に向けられている命令セットアーキテクチャ(ISA)は内部ループ命令セットアーキテクチャ(ISA)である。外部ループ命令セットアーキテクチャ(ISA)は汎用演算の実行に向けられているので、プログラム命令の逐次実行が望ましい場合に最も役に立つ。外部ループ命令セットアーキテクチャ(ISA)の実行性能は、実行される命令ごとのクロックサイクルで特徴付けられることが好ましい。これに対して、内部ループ命令セットアーキテクチャ(ISA)は特定の種類の命令の実行に向けられているので、プログラム命令の並列実行が望ましい場合に最も役に立つ。内部ループ命令セットアーキテクチャ(ISA)の実行性能は、クロックサイクル当たりで実行される命令で、またはクロックサイクル当たり得られる計算結果で特徴付けられることが好ましい。
【0053】
当業者は、プログラム命令の逐次実行及び並列実行に関するこれまでの説明が単一の動的再構成処理装置(DRPU)32内でのプログラム命令の実行に関連していることを認めるであろう。システム10に多重Sマシン12が存在することによって、特定の動的再構成処理装置(DRPU)32によって各プログラム命令シーケンスが実行される場合、多重プログラム命令シーケンスを任意の時間に並列実行することが容易になる。各動的再構成処理装置(DRPU)32は、特定の時間にそれぞれ特定の内部ループ命令セットアーキテクチャ(ISA)または外部ループ命令セットアーキテクチャ(ISA)を実動化するための並列ハードウェアまたは直列ハードウェアを含むように構成されている。任意の動的再構成処理装置(DRPU)32の内部ハードウェア構成は、実行される一連のプログラム命令内に埋込まれた1つまたはそれ以上の再構成指示の選択に従って経時的に変化する。
【0054】
好ましい実施例では、各命令セットアーキテクチャ(ISA)とその対応する内部動的再構成処理装置(DRPU)ハードウェア編成は、1組の利用可能な再構成ハードウェアリソースに対して特定のクラスの計算上の問題について最適の計算性能を備えるよう設計されている。上に述べたように、また下記に詳しく説明するように、外部ループ命令セットアーキテクチャ(ISA)に対応する内部動的再構成処理装置(DRPU)ハードウェア編成は、プログラム命令の逐次実行について最適化されるのが好ましい。また内部ループ命令セットアーキテクチャ(ISA)に対応する内部動的再構成処理装置(DRPU)ハードウェア編成は、プログラム命令の並列実行について最適化されるのが好ましい。模範汎用外部ループ命令セットアーキテクチャ(ISA)を参考資料Aに示し、畳込み演算専用の模範内部ループ命令セットアーキテクチャ(ISA)を参考資料Bに示す。
【0055】
各再構成指示を除いて、図3の模範プログラムリスト50は、従来の高レベル言語文、たとえばCプログラミング言語に従って書かれた文で構成されていることが好ましい。当業者は、一連のプログラム命令に1つまたはそれ以上の再構成指示を含むには、再構成指示に対応するために修正されたコンパイラが必要であることを認めるであろう。図4は、一連のプログラム命令のコンパイル中に実行される先行技術コンパイル演算のフローチャートである。ここで、先行技術のコンパイル演算は、Free Software Foundation(Cambridge,マサチューセッツ)によって作成されたGNU Cコンパイラ(GCC:GNU C Compiler)によって実行されるものにほぼ相当している。当業者は、下記に説明する先行技術コンパイル演算が他のコンパイラについて容易に一般化できることを認めるであろう。先行技術コンパイル演算はステップ500で始まり、コンパイラフロントエンドが一連のプログラム命令から次の高レベル文を選択する。次にステップ502で、コンパイラフロントエンドは選択した高レベル文に対応する中間レベルのコードを生成する。これは、GNU Cコンパイラ(GCC)の場合には、レジスタ転送レベル(RTL:Register Transfer Level)文に相当する。ステップ502のあとステップ504で、コンパイラフロントエンドはさらに別の高レベル文を検討する必要があるかどうかを決定する。検討する必要があれば、この好適な方法はステップ500に戻る。
【0056】
ステップ504でコンパイラフロントエンドが他のどの高レベル文も検討する必要がないと決定したときは、次にステップ506でコンパイラバックエンドが従来のレジスタ割当て演算を実行する。ステップ506のあとステップ508で、コンパイラバックエンドは現在のレジスタ転送レベル(RTL)文グループ内で検討するために次のレジスタ転送レベル(RTL)文を選択する。次にステップ510でコンパイラバックエンドは現在のレジスタ転送レベル(RTL)文グループが1組のアセンブリ言語文に翻訳することのできる方法を定めるルールが存在するかどうかを決定する。このようなルールが存在しないときには、この好適な方法はステップ508に戻り、現在のレジスタ転送レベル(RTL)文グループに含めるためにさらに別のレジスタ転送レベル(RTL)文を選択する。現在のレジスタ転送レベル(RTL)文グループに対応するルールが存在するときには、ステップ512でコンパイラバックエンドはそのルールに従って1組のアセンブリ言語文を生成する。ステップ512のあと、コンパイラバックエンドは次のレジスタ転送レベル(RTL)文グループのコンテクストにおいて次のレジスタ転送レベル(RTL)文を検討する必要があるかどうかを決定する。検討する必要があるときには、この好適な方法はステップ508に戻る。必要がなければ、この好適な方法は終了する。
【0057】
本発明は、動的再構成計算のためのコンパイラを含んでいることが好ましい。図5と図6は、動的再構成計算のためのコンパイラによって実行される好ましいコンパイル演算のフローチャートである。好ましいコンパイル演算はステップ600から始まり、動的再構成計算のためのコンパイラのフロントエンドが一連のプログラム命令内の次の高レベル文を選択する。次にステップ602で動的再構成計算のためのコンパイラのフロントエンドは、選択された高レベル文が再構成指示であるかどうかを決定する。再構成指示であるときには、ステップ604で動的再構成計算のためのコンパイラのフロントエンドはレジスタ転送レベル(RTL)再構成文を生成し、ステップ600に戻る。好ましい実施例では、レジスタ転送レベル(RTL)再構成文は命令セットアーキテクチャ(ISA)識別を含む非標準レジスタ転送レベル(RTL)文である。ステップ602で、選択した高レベルプログラム文が再構成指示ではないときには、次にステップ606で動的再構成計算のためのコンパイラのフロントエンドは従来の方法で1組のレジスタ転送レベル(RTL)文を生成する。ステップ606のあと、ステップ608で動的再構成計算のためのコンパイラのフロントエンドはさらに別の高レベル文を検討する必要があるかどうかを決定する。検討する必要があるときには、この好適な方法はステップ600に戻る。そうでないときにはこの好適な方法はステップ610に進み、バックエンド演算を開始する。
【0058】
ステップ610で、動的再構成計算のためのコンパイラのバックエンドはレジスタ割当て演算を実行する。本発明の好ましい実施例では、各命令セットアーキテクチャ(ISA)は命令セットアーキテクチャ(ISA)ごとのレジスタアーキテクチャが互いに一致するように定められている。したがって、レジスタ割当て演算は従来の方法で実行される。当業者は、一般に、命令セットアーキテクチャ(ISA)ごとのレジスタアーキテクチャが互いに一致することが絶対的要件ではないことを認めるであろう。次にステップ612で動的再構成計算のためのコンパイラのバックエンドは、現在検討中のレジスタ転送レベル(RTL)文グループ内で次のレジスタ転送レベル(RTL)文を選択する。次にステップ614で動的再構成計算のためのコンパイラのバックエンドは、選択したレジスタ転送レベル(RTL)文がレジスタ転送レベル(RTL)再構成文であるかどうかを決定する。選択したレジスタ転送レベル(RTL)文がレジスタ転送レベル(RTL)再構成文でないときには、ステップ618で動的再構成計算のためのコンパイラのバックエンドは、現在検討中のレジスタ転送レベル(RTL)文グループについてのルールが存在するかどうかを決定する。存在しなければ、この好適な方法はステップ612に戻り、現在検討中のレジスタ転送レベル(RTL)文グループに含めるために次のレジスタ転送レベル(RTL)文グループを選択する。ステップ618で現在検討中のレジスタ転送レベル(RTL)文グループについてのルールが存在するときには、次にステップ620で動的再構成計算のためのコンパイラのバックエンドはこのルールに従って現在検討中のレジスタ転送レベル(RTL)文グループに対応する1組のアセンブリ言語文を生成する。ステップ620のあと、ステップ622で動的再構成計算のためのコンパイラのバックエンドは、次のレジスタ転送レベル(RTL)文グループのコンテクストにおいて、さらに別のレジスタ転送レベル(RTL)文を検討する必要があるかどうかを決定する。検討する必要があればこの好適な方法はステップ612に戻り、そうでなければこの好適な方法は終了する。
【0059】
ステップ614で、選択したレジスタ転送レベル(RTL)文がレジスタ転送レベル(RTL)再構成文であるときには、ステップ616で動的再構成計算のためのコンパイラのバックエンドはレジスタ転送レベル(RTL)再構成文内の命令セットアーキテクチャ(ISA)識別に対応する1組のルールセットを選択する。本発明では、各命令セットアーキテクチャ(ISA)について独自のルールが存在することが好ましい。従って各ルールセットは、特定の命令セットアーキテクチャ(ISA)に従ってレジスタ転送レベル(RTL)文グループをアセンブリ言語文に変換するための1つまたはそれ以上のルールを提供する。ステップ616のあと、好適な方法はステップ618に進む。任意の命令セットアーキテクチャ(ISA)に対応するルールセットは、レジスタ転送レベル(RTL)再構成文を、ソフトウェア割込みを生じるような1組のアセンブリ言語命令に翻訳するためのルールを含んでいることが好ましい。このソフトウェア割込みの結果、再構成ハンドラーが実行されるが、これについては下記に詳しく説明する。
【0060】
上記に説明した方法では、動的再構成計算のためのコンパイラは選択的にまた自動的にコンパイル演算中に多重命令セットアーキテクチャ(ISA)に従ってアセンブリ言語文を生成する。言い換えれば、コンパイル中、動的再構成計算のためのコンパイラはそれぞれ異なる命令セットアーキテクチャ(ISA)に従って1組のプログラム命令をコンパイルする。動的再構成計算のためのコンパイラは、図5と図6を用いて上に説明したような好ましいコンパイル演算を実行するよう修正した従来型コンパイラであることが好ましい。当業者は、必要とされる修正は複雑ではないが、このような修正は先行技術コンパイル技術及び先行技術再構成計算技術から見て自明ではないことを認めるであろう。
【0061】
図7は、動的再構成処理装置(DRPU)32の好ましい実施例の構成図である。動的再構成処理装置(DRPU)32は、命令取出し装置(IFU)60と、データ演算装置(DOU)62と、アドレス演算装置(AOU)64とを含んでいる。命令取出し装置(IFU)60と、データ演算装置(DOU)62と、アドレス演算装置(AOU)64のそれぞれは、第1タイミング信号ライン40に結合されたタイミング入力部を含んでいる。命令取出し装置(IFU)60は、メモリ制御ライン42に結合されたメモリ制御出力部と、メモリ入出力ライン46に結合されたデータ入力部と、外部制御ライン48に結合された双方向制御ポートとを含んでいる。命令取出し装置(IFU)60はさらに、第1制御ライン70を経てデータ演算装置(DOU)62の第1制御入力部に結合された第1制御出力部と、第2制御ライン72を経てアドレス演算装置(AOU)64の第1制御入力部に結合された第2制御出力部とを含んでいる。命令取出し装置(IFU)60は、第3制御ライン74を経てデータ演算装置(DOU)62の第2制御入力部とアドレス演算装置(AOU)64の第2制御入力部に結合された第1制御出力部を含んでいる。データ演算装置(DOU)62とアドレス演算装置(AOU)64とは、それぞれメモリ入出力ライン46に結合された双方向データポートを含んでいる。最後にアドレス演算装置(AOU)64は、動的再構成処理装置(DRPU)のアドレス出力部を形成するアドレス出力部を含んでいる。
【0062】
動的再構成処理装置(DRPU)32は、再構成論理装置または再プログラマブル論理装置、たとえばXilinx XC4013(Xilinx, Inc., サンノゼ,カリフォルニア)またはAT&T ORCA IC07(AT&T Microelectronics, Allentown, ペンシルバニア)などのフィールドプログラマブルゲートアレイ(FPGA)を用いて実装されるのが好ましい。再プログラマブル論理装置は、複数の、
1)選択的再プログラマブル論理ブロック、または構成可能論理ブロック(CLB:Selectively Reprogramable Logic Blocks or Configurable Logick Blocks)と、
2)選択的再プログラマブル入出力ブロック(IOB:I/O Blocks)と、
3)選択的再プログラマブル相互結合構造と、
4)データ記憶リソースと、
5)3値バッファリソースと、
6)ワイヤード論理関数能力と、
を備えていることが好ましい。各論理ブロック(CLB)は、論理関数を生成し、データを記憶し、信号のルーティングを行うための選択的再構成回路を含んでいることが好ましい。当業者は、使用中の再プログラマブル論理装置の正確な設計に応じて、再構成データ記憶回路が論理ブロック(CLB)とは別の1個またはそれ以上のデータ記憶ブロック(DSB:Data Storage Block)に含まれることもあることを認めるであろう。ここでは、フィールドプログラマブルゲートアレイ(FPGA)内の再構成データ記憶回路は、論理ブロック(CLB)内に取入れられている。すなわち、データ記憶ブロック(DSB)の存在は想定されていない。当業者は、上に説明した論理ブロック(CLB)ベース再構成データ記憶回路を利用する1個またはそれ以上の構成部分が、データ記憶ブロック(DSB)が存在する場合にはデータ記憶ブロック(DSB)ベース回路も利用できることを認めるであろう。各入出力ブロック(IOB)は、論理ブロック(CLB)とフィールドプログラマブルゲートアレイ(FPGA)出力ピンとの間でデータを転送するための選択的再構成回路を含んでいることが好ましい。構成データセットは、論理ブロック(CLB)内で実行される関数を指定することによって動的再構成処理装置(DRPU)ハードウェア構成または編成を定め、また、
1)論理ブロック(CLB)内、
2)論理ブロック(CLB)相互間、
3)入出力ブロック(IOB)内、
4)入出力ブロック(IOB)相互間、及び、
5)論理ブロック(CLB)と入出力ブロック(IOB)との間
の相互結合を定める。当業者は、構成データセットによって、メモリ制御ライン42と、アドレスライン44と、メモリ入出力ライン46と、外部制御ライン48のそれぞれにおけるビット数が再構成可能であることを認めるであろう。再構成データセットは、システム10の中の1個またはそれ以上のSマシン34に記憶されることが好ましい。当業者は、動的再構成処理装置(DRPU)32がフィールドプログラマブルゲートアレイ(FPGA)ベース実装に限定されないことを認めるであろう。たとえば動的再構成処理装置(DRPU)32は、1つまたはそれ以上のルックアップテーブルをおそらく含むRAMベース状態マシンとして実装することができる。あるいは動的再構成処理装置(DRPU)32は、複合プログラマブル論理装置(CPLD)を用いて実装することができる。しかし当業者は、システム10のSマシン12の一部が再構成可能ではない動的再構成処理装置(DRPU)12を含むことができることを認めるであろう。
【0063】
好ましい実施例では、命令取出し装置(IFU)60と、データ演算装置(DOU)62と、アドレス演算装置(AOU)64はそれぞれ動的に再構成可能である。したがって、その内部ハードウェア構成はプログラム実行中に選択的に変更することができる。命令取出し装置(IFU)60は、命令取出し・復号演算と、メモリアクセス演算と、動的再構成処理装置(DRPU)再構成演算とを指示し、命令の実行を容易に行うためにデータ演算装置(DOU)62とアドレス演算装置(AOU)64に制御信号を送る。データ演算装置(DOU)62は、データ計算に関する演算を実行し、アドレス演算装置(AOU)64はアドレス計算に関する演算を実行する。命令取出し装置(IFU)60と、データ演算装置(DOU)62と、アドレス演算装置(AOU)64のそれぞれの内部構造と演算については下記に詳しく説明する。
【0064】
図8は、命令取出し装置(IFU)60の好ましい実施例の構成図である。命令取出し装置(IFU)60は、命令状態シーケンサ(ISS:Instruction State Sequencer)100と、アーキテクチャ記述メモリ101と、メモリアクセスロジック102と、再構成ロジック104と、割込みロジック106と、取出し制御装置108と、命令バッファ110と、復号制御装置112と、命令復号器114と、操作コード記憶レジスタセット116と、レジスタファイル(RF:Register File)アドレスレジスタセット118と、定数レジスタセット120と、プロセス制御レジスタセット122とを含んでいる。命令状態シーケンサ(ISS)100は、それぞれ命令取出し装置(IFU)60の第1及び第2制御出力部を形成する第1及び第2制御出力部を含んでおり、また命令取出し装置(IFU)60のタイミング入力部を形成するタイミング入力部を含んでいる。また命令状態シーケンサ(ISS)100は、取出し/復号制御ライン130を経て取出し制御装置108の制御入力部と復号制御装置112の制御入力部とに結合された取出し/復号制御出力部を含んでいる。さらに命令状態シーケンサ(ISS)100は、双方向制御ライン132を経てメモリアクセスロジック102と、再構成ロジック104と、割込みロジック106のそれぞれの第1双方向制御ポートに結合された双方向制御ポートを含んでいる。また命令状態シーケンサ(ISS)100は、操作コードライン142を経て、操作コード記憶レジスタセット116の出力部に結合された操作コード入力部を含んでいる。最後に命令状態シーケンサ(ISS)100は、処理データライン144を経て、プロセス制御レジスタセット122の双方向制御ポートに結合された双方向制御ポートを含んでいる。
【0065】
メモリアクセスロジック102と、再構成ロジック104と、割込みロジック106は、それぞれ外部制御ライン48に結合された第2双方向制御ポートを含んでいる。さらにメモリアクセスロジック102と、再構成ロジック104と、割込みロジック106は、それぞれ実装制御ライン131を経てアーキテクチャ記述メモリ101のデータ出力部に結合されたデータ入力部を含んでいる。メモリアクセスロジック102は、さらに命令取出し装置(IFU)60のメモリ制御出力部を形成する制御出力部を含み、また割込みロジック106はさらに処理データライン144に結合された出力部を含んでいる。命令バッファ110は、命令取出し装置(IFU)60のデータ入力部を形成するデータ入力部と、取出し制御ライン134を経て取出し制御装置108の制御出力部に結合された制御入力部と、命令ライン136を経て命令復号器114の入力部に結合された出力部とを含んでいる。命令復号器114は、復号制御ライン138を経て復号制御装置112の制御出力部に結合された制御入力部と、復号命令ライン140を経て、
1)操作コード記憶レジスタ116の入力部と、
2)レジスタファイル(RF)アドレスレジスタセット118の入力部と、
3)定数レジスタセット120の入力部に結合された出力部と、
を含んでいる。レジスタファイル(RF)アドレスレジスタセット118と定数レジスタセット120は、それぞれ命令取出し装置(IFU)60の第3制御出力部74を形成する出力部を含んでいる。
【0066】
アーキテクチャ記述メモリ101は、現在の動的再構成処理装置(DRPU)構成を特徴付けるアーキテクチャ指定信号を記憶する。このアーキテクチャ指定信号は、
1)デフォルト構成データセットに対する基準と、
2)許容される構成データセットリストに対する基準と、
3)現在検討中の命令セットアーキテクチャ(ISA)に対応する構成データセットに対する基準、すなわち現在の動的再構成処理装置(DRPU)構成を定める構成データセットに対する基準と、
4)命令取出し装置(IFU)60が存在するSマシン12に関連したTマシン14内の1個またはそれ以上の相互結合入出力装置304を識別する相互結合アドレスリスト(これについては、図18を用いて下記に詳しく説明する)と、
5)割込み待ち時間と、命令取出し装置(IFU)60が割込みにどのように応答するかを定める割込み精度情報とを指定する1組の割込み応答信号と、
6)アトミックメモリアドレスインクリメントを定めるメモリアクセス定数と、を含んでいることが好ましい。好ましい実施例では、各構成データセットは、読出し専用メモリ(ROM)として構成された1組の論理ブロック(CLB)としてアーキテクチャ記述メモリ101を実動化する。アーキテクチャ記述メモリ101の内容を定めるアーキテクチャ指定信号は、各構成データセットに含まれることが好ましい。したがって、各構成データセットが特定の命令セットアーキテクチャ(ISA)に対応するので、アーキテクチャ記述メモリ101の内容は、現在検討中の命令セットアーキテクチャ(ISA)によって異なる。所定の命令セットアーキテクチャ(ISA)について、アーキテクチャ記述メモリ101の内容へのプログラムアクセスは、命令セットアーキテクチャ(ISA)にメモリ読出し命令を含めることによって容易に行われることが好ましい。これによってプログラム実行中に現在の動的再構成処理装置(DRPU)構成に関する情報をプログラムが検索することができる。
【0067】
本発明では、再構成ロジック104は一連の再構成演算を制御する状態マシンであり、これによって構成データセットに応じて動的再構成処理装置(DRPU)32の再構成が容易に行われる。再構成ロジック104は、再構成信号を受取り次第、再構成演算を開始することが好ましい。下記に詳しく説明するように、再構成信号は、外部制御ライン48で受取った再構成割込みに応じて割込みロジック106が発生させた信号であるか、またはプログラムに埋込まれた再構成指示に応じて命令状態シーケンサ(ISS)100が発生させた信号である。再構成演算によって、アーキテクチャ記述メモリ101によって参照されるデフォルト構成データを用いて電源オン/リセット後の当初の動的再構成処理装置(DRPU)構成が得られる。また再構成演算によって、当初の動的再構成処理装置(DRPU)構成が確定したあとの選択的動的再構成処理装置(DRPU)再構成が得られる。再構成演算が完了すると再構成ロジック104は完了信号を発する。好ましい実施例では、再構成ロジック104は、再プログラマブル論理装置自体への構成データセットのローディングを制御する非再構成ロジックであり、したがって再構成演算のシーケンスは再プログラマブル論理装置のメーカーによって定められる。したがって、再構成演算は当業者に既知である。
【0068】
各動的再構成処理装置(DRPU)構成は、対応する命令セットアーキテクチャ(ISA)の実動化のための特定のハードウェア編成を定める構成データセットによって与えられるのが好ましい。好ましい実施例では、命令取出し装置(IFU)60は動的再構成処理装置(DRPU)構成に関係なく、上記の各構成部分を含んでいる。基本レベルでは、命令取出し装置(IFU)60内の各構成部分によって与えられる機能性は、現在検討中の命令セットアーキテクチャ(ISA)とは無関係である。しかし、好ましい実施例では、命令取出し装置(IFU)60の1個またはそれ以上の構成部分の詳細な構造と機能性は、それが構成されている命令セットアーキテクチャ(ISA)の特性に応じて異なる。好ましい実施例では、アーキテクチャ記述メモリ101及び再構成ロジック104の構造と機能性は、それぞれの動的再構成処理装置(DRPU)構成について一定であることが好ましい。命令取出し装置(IFU)60のその他の構成部分の構造と機能性について、またこれらが命令セットアーキテクチャ(ISA)の種類によって異なることについては、下記に詳しく説明する。
【0069】
プロセス制御レジスタセット122は、命令実行中に命令状態シーケンサ(ISS)100によって用いられる信号とデータを記憶する。好ましい実施例では、プロセス制御レジスタセット122は、プロセス制御ワードを記憶するためのレジスタと、割込みベクトルを記憶するためのレジスタと、構成データセットへの参照を記憶するためのレジスタとを含んでいる。プロセス制御ワードは、命令実行中に発生する状態にもとづいて選択的に設定またはリセットすることができる複数の条件フラグを含んでいることが好ましい。さらにプロセス制御ワードは、割込みを実施できる1つまたはそれ以上の方法を定める複数の遷移制御信号を含んでいる(これについては、下記に詳しく説明する)。好ましい実施例では、プロセス制御レジスタセット122は、データ記憶及びゲーティングロジックのために構成された1組の論理ブロック(CLB)として実装される。
【0070】
命令状態シーケンサ(ISS)100は、取出し制御装置108と復号制御装置112と、データ演算装置(DOU)62と、アドレス演算装置(AOU)64との演算を制御し、命令の実行を容易にするためにメモリ読出し信号とメモリ書込み信号をメモリアクセスロジック102に発信する状態マシンであることが好ましい。図9は、命令状態シーケンサ(ISS)100によって支援される1組の好ましい状態を示す状態図である。電源オンまたはリセット後、または再構成が行われた直後、命令状態シーケンサ(ISS)100は状態Pで演算を開始する。再構成ロジック104により発せられた完了信号に応じて、命令状態シーケンサ(ISS)100は状態Sに進み、命令状態シーケンサ(ISS)は電源オン/リセットまたは再構成が行われた場合、それぞれプログラム状態情報を初期化するか、復元する。命令状態シーケンサ(ISS)100は次に状態Fに進み、命令取出し演算を実行する。命令取出し演算では、命令状態シーケンサ(ISS)100はメモリ読出し信号をメモリアクセスロジック102に発信し、取出し信号を取出し制御装置108に発信し、次命令プログラムアドレスレジスタ(NIPAR)232をインクリメントするためにインクリメント信号をアドレス演算装置(AOU)64に発信する(これについては、図15と図16を用いて下記に詳しく説明する)。状態Fの後、命令状態シーケンサ(ISS)100は状態Dに進み、命令復号演算を開始する。状態Dで、命令状態シーケンサ(ISS)100は復号信号を復号制御112に発信する。状態Dで、命令状態シーケンサ(ISS)100はさらに復号命令に対応する操作コードを操作コード記憶レジスタセット116から検索する。検索した操作コードに基づいて、命令状態シーケンサ(ISS)100は状態Eまたは状態Mに進み、命令実行演算を実行する。命令が1回のクロックサイクルで実行できるときには、命令状態シーケンサ(ISS)100は状態Eに進む。それ以外の場合には、命令状態シーケンサ(ISS)100は複数のサイクルで命令を実行するために状態Mに進む。命令実行演算では、命令状態シーケンサ(ISS)100はデータ演算装置(DOU)制御信号と、アドレス演算装置(AOU)制御信号と、及び/または検索した操作コードに対応する命令の実行を容易にするためのメモリアクセスロジック102専用の信号とを生成する。状態EまたはMのあと、命令状態シーケンサ(ISS)100は状態Wに進む。状態Wで、命令状態シーケンサ(ISS)100は、データ演算装置(DOU)制御信号と、アドレス演算装置(AOU)制御信号と、及び/または命令実行の結果の記憶を容易にするためのメモリ書込み信号とを生成する。したがって、状態Wはライトバック状態と呼ばれる。当業者は、状態F、D、E、M、Wが完全な命令実行サイクルを含むことを認めるであろう。状態Wのあと命令状態シーケンサ(ISS)100は、命令の実行を中断する必要があるときには状態Yに進む。状態Yは、たとえばTマシン14がSマシンのメモリ34にアクセスしなくてはならないときに必要とされるようなアイドル状態に対応している。状態Yのあと、または命令の実行を継続するときには状態Wの後、命令状態シーケンサ(ISS)100は状態Fに戻り、さらに別の命令実行サイクルを開始する。
【0071】
図9に示すように、状態図には状態Iも含まれている。この状態は、割込み実施状態として定義される。本発明では、命令状態シーケンサ(ISS)100は割込みロジック106から割込み通知信号を受取る。図10を用いて下記に詳しく説明するように、割込みロジック106は遷移制御信号を生成し、プロセス制御レジスタセット122内のプロセス制御ワード内に遷移制御信号を記憶する。遷移制御信号は、状態F、D、E、M、W、Yのどの状態が割込み可能かについて、また各割込み可能状態で必要とされる割込み精度のレベルについて、また状態Iのあとも命令の実行を継続すべき各割込み可能状態の次の状態を示すことが好ましい。命令状態シーケンサ(ISS)100が所定の状態で割込み通知信号を受取ったとき、遷移制御信号によって現在の状態が割込み可能であることが示されている場合には、命令状態シーケンサ(ISS)100は状態Iに進む。それ以外の場合には、命令状態シーケンサ(ISS)100は割込み可能状態に達するまで割込み信号を受取っていなかったかのように進む。
【0072】
命令状態シーケンサ(ISS)100が状態Iに進むと、命令状態シーケンサ(ISS)100は割込みマスキングフラグを設定し、また割込みベクトルを検索するために、プロセス制御レジスタセット122にアクセスするのが好ましい。割込みベクトルを受取った後、命令状態シーケンサ(ISS)100は、割込みベクトルによって指定される割込みハンドラーに従来のようなサブルーチンジャンプを行い現在の割込みを実施するのが好ましい。
【0073】
本発明では、動的再構成処理装置(DRPU)32の再構成は、
1)外部制御ライン48で表明される再構成割込みか、または、
2)一連のプログラム命令内の再構成指示の実行
に応じて開始される。好ましい実施例では、再構成割込みを行っても、また再構成指示を実行しても、再構成ハンドラーへのサブルーチンジャンプが行われる。再構成ハンドラーはプログラム状態情報をセーブし、構成データセットアドレスと再構成信号を再構成ロジック104に発信することが好ましい。
【0074】
現在の割込みが再構成割込みでないときには、命令状態シーケンサ(ISS)100は、割込みが実施された場合に遷移制御信号によって示される次の状態に進み、これによって命令実行サイクルを再開し、完了し、または開始する。
【0075】
好ましい実施例では、命令状態シーケンサ(ISS)100により支援される1組の状態は、動的再構成処理装置(DRPU)32が構成される命令セットアーキテクチャ(ISA)の特性に応じて異なる。したがって、典型的な内部ループ命令セットアーキテクチャ(ISA)での場合のように、1つまたはそれ以上の命令が1回のクロックサイクルで実行できる命令セットアーキテクチャ(ISA)について状態Mは存在しない。図に示すように、図9の状態図は、汎用外部ループ命令セットアーキテクチャ(ISA)を実動化するために命令状態シーケンサ(ISS)によって支援される状態を規定することが好ましい。内部ループ命令セットアーキテクチャ(ISA)の実動化については、命令状態シーケンサ(ISS)100は複数の状態F、D、E、Wを並列に支援するのが好ましい。これによって当業者が容易に理解するような方法で命令実行のパイプライン制御を容易に行うことができる。好ましい実施例では、命令状態シーケンサ(ISS)100は現在検討中の命令セットアーキテクチャ(ISA)に従って上記に述べた状態または状態のサブセットを支援する論理ブロック(CLB)ベース状態マシンとして実動化される。
【0076】
割込みロジック106は、遷移制御信号を生成し、外部制御ライン48を経て受取った割込み信号に応じて割込み通知演算を実行する状態マシンを含んでいることが好ましい。図10は、割込みロジック106によって支援される1組の好ましい状態を示す状態図である。割込みロジック106は状態Pで演算を開始する。状態Pは、電源オン、リセット、または再構成状態に対応している。再構成ロジック104によって発せられた完了信号に応じて、割込みロジック106は状態Aに進み、アーキテクチャ記述メモリ101から割込み応答信号を検索する。割込みロジック106は、次に割込み応答信号から遷移制御信号を生成し、この遷移制御信号をプロセス制御レジスタセット122に記憶する。好ましい実施例では、割込みロジック106は、割込み応答信号を受取り遷移制御信号を生成するための論理ブロック(CLB)ベースプログラマブル論理アレイ(PLA)を含んでいる。状態Aのあと、割込みロジック106は状態Bに進み割込み信号を待つ。割込み信号を受取り、プロセス制御レジスタセット122内の割込みマスキングフラグがリセットされた場合に割込みロジック106は状態Cに進む。状態Cでは、割込みロジック106は割込みの開始点と、割込み優先度と、割込みハンドラーアドレスとを決定する。割込み信号が再構成割込みのときには、割込みロジック106は状態Rに進み、構成データセットアドレスをプロセス制御レジスタセット122に記憶する。状態Rのあと、または割込み信号が再構成割込みではないときには状態Cのあと、割込みロジック106は状態Nに進み、割込みハンドラーアドレスをプロセス制御レジスタセット122に記憶する。割込みロジック106は次に状態Xに進み、割込み通知信号を命令状態シーケンサ(ISS)100に発する。状態Xのあと、割込みロジック106は状態Bに戻り、次の割込み信号を待つ。
【0077】
好ましい実施例では、割込み応答信号が、したがって遷移制御信号が指定する割込み待ち時間のレベルは、動的再構成処理装置(DRPU)32が構成されている現在の命令セットアーキテクチャ(ISA)によって異なる。たとえば高性能リアルタイム動作制御用の命令セットアーキテクチャ(ISA)では、迅速で予測可能な割込み応答能力が求められる。したがって、このような命令セットアーキテクチャ(ISA)に対応する構成データセットは、待ち時間の短い割込みが必要であることを示す割込み応答信号を含んでいることが好ましい。対応する遷移制御信号は、複数の命令状態シーケンサ(ISS)状態を割込み可能として識別することが好ましい。これにより、命令実行サイクルが完了する前に割込みによって命令実行サイクルを中断することができる。リアルタイム動作制御用の命令セットアーキテクチャ(ISA)とは異なり、画像畳込み演算用の命令セットアーキテクチャ(ISA)では、単位時間当たりに実行される畳込み演算の回数が最大となるような割込み応答能力が必要である。画像畳込み演算用命令セットアーキテクチャ(ISA)に対応する構成データセットは、待ち時間の長い割込みが必要であることを指定する割込み応答信号を含んでいることが好ましい。対応する遷移制御信号は、状態Wを割込み可能として識別することが好ましい。画像畳込み演算用命令セットアーキテクチャ(ISA)を実装するために構成され、命令状態シーケンサ(ISS)100が複数の状態F、D、E、Wを並列に支援するときには、遷移制御信号はそれぞれ状態Wを割込み可能として識別し、さらに各並列命令実行サイクルがその状態W演算を完了するまで割込み実施を遅延すべきであることを指定することが好ましい。これにより、割込みが実施される前にすべての命令が実行されることが保証され、これによって適切なパイプライン実行能力レベルが維持される。
【0078】
割込み待ち時間のレベルと同様に、割込み応答信号によって指定される割込み精度のレベルも動的再構成処理装置(DRPU)32が構成される命令セットアーキテクチャ(ISA)によって異なる。たとえば、状態Mが割込み可能なマルチサイクル演算を支援する外部ループ命令セットアーキテクチャ(ISA)について割込み可能状態であると定められた場合、割込み応答信号は正確な割込みが必要であることを指定することが好ましい。したがって遷移制御信号は、マルチサイクル演算がうまく再スタートできるよう状態Mで受取った割込みを正確な割込みとして扱うよう指定する。もう1つの例として、無欠陥パイプライン算術演算を支援する命令セットアーキテクチャ(ISA)については、割込み応答信号は不正確な割込みが必要であると指定することが好ましい。次に遷移制御信号は、状態Wで受取った割込みを不正確な割込みとして扱うことを指定する。
【0079】
任意の命令セットアーキテクチャ(ISA)については、割込み応答信号は命令セットアーキテクチャ(ISA)の対応する構成データセットの一部によって定められ、またプログラムされる。プログラマブル割込み応答信号によって、また対応する遷移制御信号を生成することにより、本発明では、命令セットアーキテクチャ(ISA)ごとの最適の割込みスキームを実動化することが容易となっている。当業者は、先行技術コンピュータアーキテクチャのほとんどでは、割込み能力、すなわちプログラマブル状態遷移の有効化、プログラマブル割込み待ち時間、及びプログラマブル割込み精度を柔軟に指定できないことを認めるであろう。好ましい実施例では、割込みロジック106は上記のような状態を支援する論理ブロック(CLB)ベース状態マシンとして実装される。
【0080】
取出し制御装置108は、命令セットアーキテクチャ(ISA)100によって発せられた取出し信号に応じて命令バッファ110に命令をロードするよう指示する。好ましい実施例では、取出し制御装置108は1組の論理ブロック(CLB)内でフリップフロップを用いた従来型のワンホット符号化状態マシンとして実装される。当業者は、別の実施例で、取出し制御装置108が従来型の符号化状態マシンとして、またはROMベース状態マシンとして構成できることを認めるであろう。命令バッファ110は、メモリ34からロードされた命令を一時記憶する。外部ループ命令セットアーキテクチャ(ISA)の実装については、命令バッファ110は多重論理ブロック(CLB)を用いた従来型のRAMベース先入れ先出し(FIFO)バッファとして実装されるのが好ましい。内部ループ命令セットアーキテクチャ(ISA)の実装については、命令バッファ110は1組の入出力ブロック(IOB)内で複数のフリップフロップを用いた、または入出力ブロック(IOB)と論理ブロック(CLB)の両方で複数のフリップフロップを用いた1組のフリップフロップレジスタとして実装されるのが好ましい。
【0081】
復号制御装置112は、命令セットアーキテクチャ(ISA)100によって発せられた復号信号に応じて、命令を命令バッファ110から命令復号器114へ転送するよう指示する。内部ループ命令セットアーキテクチャ(ISA)については、復号制御装置112は論理ブロック(CLB)ベースレジスタに結合された論理ブロック(CLB)ベースROMを含むROMベース状態マシンとして実装されるのが好ましい。外部ループ命令セットアーキテクチャ(ISA)については、復号制御装置112は論理ブロック(CLB)ベース符号化状態マシンとして実装されるのが好ましい。入力として受取った各命令については、命令復号器114は、従来の方法で対応する操作コードと、レジスタファイルアドレスと、選択的に1つまたはそれ以上の定数とを出力する。内部ループ命令セットアーキテクチャ(ISA)については、命令復号器114は入力として受取った一連の命令を復号するよう構成されていることが好ましい。好ましい実施例では、命令復号器114は現在検討中の命令セットアーキテクチャ(ISA)に含まれる各命令を復号するために構成された論理ブロック(CLB)ベース復号器として実装される。
【0082】
操作コード記憶レジスタセット116は、命令復号器114による各操作コード出力を一時記憶し、また各操作コードを命令状態シーケンサ(ISS)100に出力する。外部ループ命令セットアーキテクチャ(ISA)を動的再構成処理装置(DRPU)32に実装するとき、操作コード記憶レジスタセット116は最適数のフリップフロップレジスタバンクを用いて実装されることが好ましい。フリップフロップレジスタバンクは、命令バッファ110を通りすでに待ち行例を形成している命令の操作コードリテラルビットフィールドから導出されるクラスコードまたはグループコードを表す信号を命令復号器114から受取る。フリップフロップレジスタバンクは、命令状態シーケンサ(ISS)の複雑性を最小限にとどめることのできる復号スキームに従って、前述のクラスコードまたはグループコードを記憶する。内部ループ命令セットアーキテクチャ(ISA)の場合には、操作コード記憶レジスタセット116は、命令復号器114による操作コードリテラルビットフィールドから直接導出される操作コード指示信号を記憶する。内部ループ命令セットアーキテクチャ(ISA)は小さい操作コードリテラルビットフィールドを必然的に有し、これによってそれぞれ命令バッファ110と、命令復号器114と、操作コード記憶レジスタセット116とによるバッファリングと、復号化と、命令シーケンシング(順序づけ)のための操作コード表示とについての実装要件を最小限にとどめる。以上をまとめると、外部ループ命令セットアーキテクチャ(ISA)については、操作コード記憶レジスタセット116は操作コードリテラルサイズに等しいビット幅またはその一部として特徴付けられるフリップフロップレジスタバンクの小さな組合わせとして実装されることが好ましい。内部ループについては、操作コード記憶レジスタセット116は外部ループ命令セットアーキテクチャ(ISA)の場合よりもフリップフロップレジスタバンクが小さくまた統合されていることが好ましい。内部ループで、フリップフロップレジスタバンクのサイズが小さくて済むのは、外部ループ命令セットアーキテクチャ(ISA)と比較して内部ループ命令セットアーキテクチャ(ISA)の命令数がきわめて少ないためである。
【0083】
レジスタファイル(RF)アドレスレジスタセット118と定数レジスタセット120は、それぞれ命令復号器114による各レジスタファイルと各定数出力とを一時記憶する。好ましい実施例では、操作コード記憶レジスタセット116と、レジスタファイル(RF)アドレスレジスタセット118と、定数レジスタセット120とはそれぞれデータ記憶のために構成された1組の論理ブロック(CLB)として実装される。
【0084】
メモリアクセスロジック102は、アーキテクチャ記述メモリ122で指定されたアトミックメモリアドレスのサイズに従って、メモリ34と、データ演算装置(DOU)62と、アドレス演算装置(AOU)64との間でデータの転送を指示し同期させるメモリ制御回路である。メモリアクセスロジック102はさらに、Sマシン12と所定のTマシン14との間のデータとコマンドの転送を指示し同期させる。好ましい実施例では、メモリアクセスロジック102はバーストメモリアクセスを支援し、論理ブロック(CLB)を用いた従来型のRAMコントローラとして実装されることが好ましい。当業者は、再構成中に、再構成論理装置の入力ピンと出力ピンが3値であり、抵抗停止によって非表明ロジックレベルを定めることができ、したがってメモリ34を混乱させないことを認めるであろう。別の実施例では、メモリアクセスロジック102は動的再構成処理装置(DRPU)32の外部に実装することができる。
【0085】
図11は、データ演算装置62の好ましい実施例の構成図である。データ演算装置(DOU)62はデータ演算装置(DOU)制御信号と、レジスタファイル(RF)アドレスと、命令セットアーキテクチャ(ISA)100から受取った定数とに従ってデータについて演算を実行する。データ演算装置(DOU)62は、データ演算装置(DOU)クロスバースイッチ150と、記憶/整列ロジック152と、データ演算ロジック154とを含んでいる。データ演算装置(DOU)クロスバースイッチ150と、記憶/整列ロジック152と、データ演算ロジック154とはそれぞれ第1制御ライン70を経て命令取出し装置(IFU)60の第1制御出力部に結合された制御入力部を含んでいる。データ演算装置(DOU)クロスバースイッチ150は、データ演算装置(DOU)の双方向データポートを形成する双方向データポートと、第3制御ライン74に結合された定数入力部と、第1データライン160を経てデータ演算ロジック154のデータ出力部に結合された第1データフィードバック入力部と、第2データライン164を経て記憶/整列ロジック152のデータ出力部に結合された第2データフィードバック入力部と、第3データラインを経て記憶/整列ロジック152のデータ入力部に結合されたデータ出力部とを含んでいる。記憶/整列ロジック152は、そのデータ出力部の他に、第3制御ライン74に結合されたアドレス入力部を含んでいる。データ演算ロジック154は、さらに第2データライン164を経て記憶/整列ロジックの出力部に結合されたデータ入力部を含んでいる。
【0086】
データ演算ロジック154は、その制御入力部で受取ったデータ演算装置(DOU)制御信号に応じて、そのデータ入力部で受取ったデータについて、算術演算、シフト演算及び/または論理演算を実行する。記憶/整列ロジック152は、それぞれそのアドレス入力部と制御入力部とで受取ったレジスタファイル(RF)アドレスとデータ演算装置(DOU)制御の指示に従って、オペランドと、定数と、データ計算に関連した部分的結果とを一時記憶するデータ記憶素子を含んでいる。データ演算装置(DOU)クロスバースイッチ150は、その制御入力部で受取ったデータ演算装置(DOU)制御信号に従って、メモリ34からのデータのローディングと、データ演算ロジック154による結果出力の記憶/整列ロジック152またはメモリ34への転送と、命令取出し装置(IFU)60による定数出力の記憶/整列ロジック152へのローディングとを容易にするような従来型のクロスバースイッチネットワークであることが好ましい。好ましい実施例では、データ演算ロジック154の詳細な構造は、現在検討中の命令セットアーキテクチャ(ISA)によって支援される演算の種類によって定まる。すなわち、データ演算ロジック154は、現在検討中の命令セットアーキテクチャ(ISA)内のデータ処理命令によって指定された算術演算及び/または論理演算を実行するための回路を含んでいる。同様に、記憶/整列ロジック152とデータ演算装置(DOU)クロスバースイッチ150の詳細な構造は、現在検討中の命令セットアーキテクチャ(ISA)によって定まる。命令セットアーキテクチャ(ISA)の種類によるデータ演算ロジック154と、記憶/整列ロジック152と、データ演算装置(DOU)クロスバースイッチ150との詳細な構造は、図12及び図13を参照して下記に詳しく説明する。
【0087】
外部ループ命令セットアーキテクチャ(ISA)については、データ演算装置(DOU)62はデータに対して逐次演算を実行するよう構成されていることが好ましい。図12は、汎用外部ループ命令セットアーキテクチャ(ISA)の実動化のために構成されたデータ演算装置(DOU)61の第1模範実施例の構成図である。汎用外部ループ命令セットアーキテクチャ(ISA)では、乗算、加算、減算などの数学的演算と、AND、OR、NOTなどのブール演算と、シフト演算と、回転演算とを実行するために構成されたハードウェアが必要である。したがって、汎用外部ループ命令セットアーキテクチャ(ISA)の実装については、データ演算ロジック154は第1入力部と、第2入力部と、制御入力部と、出力部とを有する従来型の演算論理装置(ALU)/シフタ184とを含んでいることが好ましい。記憶/整列ロジック152は、第1RAM180と第2RAM182とで構成されていることが好ましく、これはそれぞれデータ入力部と、データ出力部と、アドレス選択入力部と、イネーブル入力部とを含んでいる。データ演算装置(DOU)クロスバースイッチ150は、双方向及び単方向クロスバー結合部を有し、また図11を用いてすでに説明したような入力部と出力部とを有する従来型のクロスバースイッチネットワークを含んでいることが好ましい。当業者は、外部ループ命令セットアーキテクチャ(ISA)のためのデータ演算装置(DOU)クロスバースイッチ150の効率的な実動化には、マルチプレクサと、3値バッファと、論理ブロック(CLB)ベースロジックと、直接配線と、または再構成結合手段によって、いずれかの組合わせで結合された上記構成部分のサブセットが含まれることを認めるであろう。外部ループについては、データ演算装置(DOU)クロスバースイッチ150は最短時間で逐次データ移動を促進するよう実動化されるが、汎用外部ループ命令を支援するために最大数の単一データ移動クロスバー結合部も提供する。
【0088】
第1RAM180のデータ入力部は第2RAM182のデータ入力部と同様に、第3データライン162を経てデータ演算装置(DOU)クロスバースイッチ150のデータ出力部に結合されている。第1RAM180と第2RAM182とのアドレス選択入力部は、第3制御ライン74を経て命令取出し装置(IFU)60からレジスタファイルアドレスを受取るよう結合されている。同様に、第1RAM180と第2RAM182とのイネーブル入力部は、第1制御ライン70を経てデータ演算装置(DOU)制御信号を受取るよう結合されている。第1RAM180と第2RAM182とのデータ出力部は、それぞれALU/シフタ184の第1入力部と第2入力部に結合されており、またデータ演算装置(DOU)クロスバースイッチ150の第2データフィードバック入力部にも結合されている。ALU/シフタ184の制御入力部は、第1制御ライン70を経てデータ演算装置(DOU)制御信号を受取るよう結合されている。またALU/シフタ184の出力部は、データ演算装置(DOU)クロスバースイッチ150の第1データフィードバック入力部に結合されている。データ演算装置(DOU)クロスバースイッチ150の残りの入力部と出力部への結合部は、図11を用いて上記に説明したものと同一である。
【0089】
データ演算命令の実行を容易にするために、命令取出し装置(IFU)60は命令状態シーケンサ(ISS)が状態EまたはMであるときに、データ演算装置(DOU)制御信号と、レジスタファイル(RF)アドレス信号と、定数信号とをデータ演算装置(DOU)61に発する。第1RAM180と第2RAM182とは、それぞれ一時データ記憶のための第1及び第2レジスタファイルを提供する。第1RAM180と第2RAM182内の個々のアドレスは、各RAMのそれぞれのアドレス選択入力部で受取ったレジスタファイル(RF)アドレスに従って選択される。同様に、第1RAM180と第2RAM182のローディングは、その書込みイネーブル入力部で各第1RAM180と第2RAM182とがそれぞれ受取るデータ演算装置(DOU)制御信号によって制御される。好ましい実施例では、第1RAM180と第2RAM182の少なくとも1個が、データ演算装置(DOU)クロスバースイッチ150からALU/シフタ184へデータを直接転送するのを容易にするための伝達(引渡し)能力を含んでいる。ALU/シフタ184は、その制御入力部で受取ったデータ演算装置(DOU)制御信号の指示に従って、第1RAM180から受取った第1オペランドに基づいて、及び/または第2RAM182から受取った第2オペランドに基づいて、算術演算、論理演算、またはシフト(桁送り)演算を実行する。データ演算装置(DOU)クロスバースイッチ150は選択的に、
1)メモリ34と第1RAM180及び第2RAM182との間のデータのルーティングと、
2)ALU/シフタ184から第1RAM180及び第2RAM182へ、またはメモリ34への結果のルーティングと、
3)第1RAM180または第2RAM182に記憶されたデータのメモリ34へのルーティングと、
4)命令取出し装置(IFU)60から第1RAM180及び第2RAM182への定数のルーティングと、
を行う。すでに述べたように、第1RAM180か第2RAM182のいずれかが伝達能力を有するときには、データ演算装置(DOU)クロスバースイッチ150も選択的にメモリ34からALU/シフタ184に、またはALU/シフタの出力部からALU/シフタ184に直接戻るようデータをルーティングする。データ演算装置(DOU)クロスバースイッチ150は、その制御入力部で受取ったデータ演算装置(DOU)制御信号に従って、特定のルーティング演算を実行する。好ましい実施例では、ALU/シフタ184は再構成論理装置内の数学的演算用の1組の論理ブロック(CLB)と回路内の論理関数発生器を用いて実装される。第1RAM180と第2RAM182は、それぞれ1組の論理ブロック(CLB)内に存在するデータ記憶回路を用いて実装されることが好ましい。データ演算装置(DOU)クロスバースイッチ150は、すでに述べた方法で実装されることが好ましい。
【0090】
図13は、内部ループ命令セットアーキテクチャ(ISA)の実動化のために構成されたデータ演算装置(DOU)63の第2模範実施例の構成図である。一般に内部ループ命令セットアーキテクチャ(ISA)は比較的少ない専用演算を支援し、大きなデータセットに対して共通した演算セットを実行するのに用いることが好ましい。したがって、内部ループ命令セットアーキテクチャ(ISA)のための最適の計算性能は、演算を並列に実行するために構成されたハードウェアによって得られる。したがってデータ演算装置(DOU)63の第2模範実施例では、データ演算ロジック154と、記憶/整列ロジック152と、データ演算装置(DOU)クロスバースイッチ150とはパイプライン計算を実行するよう構成される。データ演算ロジック154は、複数の入力部と、制御入力部と、出力部とを有するパイプライン機能単位194を含んでいる。記憶/整列ロジック152は、
1)1組の従来型のフリップフロップアレイ192(それぞれがデータ入力部と、データ出力部と、制御入力部とを含んでいる)と、
2)データセレクタ190(制御入力部と、データ入力部と、フリップフロップアレイ192に対応する数のデータ出力部とを含んでいる)と、
を含んでいる。データ演算装置(DOU)クロスバースイッチ150は、二重単方向クロスバー結合部を有する従来型のクロスバースイッチネットワークを含んでいる。データ演算装置(DOU)63の第2模範実施例では、データ演算装置(DOU)クロスバースイッチ150は第2データフィードバック入力部を除き、図11を用いてすでに説明した入力部と出力部とを含んでいることが好ましい。外部ループ命令セットアーキテクチャ(ISA)の場合と同様に、内部ループ命令セットアーキテクチャ(ISA)のためのデータ演算装置(DOU)クロスバースイッチ150の効率的な実装には、マルチプレクサと、3値バッファと、論理ブロック(CLB)ベースロジックと、直接配線と、または再構成可能な方法で結合された上記構成部分のサブセットとを含めることができる。内部ループ命令セットアーキテクチャ(ISA)については、データ演算装置(DOU)クロスバースイッチ150は最短時間で並列データ移動を最大にするよう実装されるのが好ましいが、高度パイプライン化内部ループ命令セットアーキテクチャ(ISA)命令を支援するために、最小数の単一データ動作クロスバー結合部も提供する。
【0091】
データセレクタ190のデータ入力部は、第1データライン162を経てデータ演算装置(DOU)クロスバースイッチ150のデータ出力部に結合されている。データセレクタ190の制御入力部は、第3制御ライン74を経てレジスタファイル(RF)アドレスを受取るよう結合されており、データセレクタ190の各出力部は、対応するフリップフロップアレイデータ入力部に結合されている。各フリップフロップアレイ192の制御入力部は、第1制御ライン70を経てデータ演算装置(DOU)制御信号を受取るよう結合されており、各フリップフロップアレイデータ出力部は機能単位194の入力部に結合されている。機能単位194の制御入力部は、第1制御ライン70を経てデータ演算装置(DOU)制御信号を受取るよう結合されており、機能単位194の出力部はデータ演算装置(DOU)クロスバースイッチ150の第1データフィードバック入力部に結合されている。データ演算装置(DOU)クロスバースイッチ150の残りの入力部と出力部の結合部は、図11を用いて既に説明したものと同一である。
【0092】
演算では、機能単位194はその制御入力部で受取ったデータ演算装置(DOU)制御信号に従ってそのデータ入力部で受取ったデータに対してパイプライン演算を実行する。当業者は、機能単位194が乗算/累算装置か、閾値決定装置か、画像回転装置か、エッジ強調装置か、または区分されたデータに対してパイプライン演算を実行するのに適したいずれかの種類の機能単位であることを認めるであろう。データセレクタ190は、その制御入力部で受取ったレジスタファイル(RF)アドレスに従ってデータ演算装置(DOU)クロスバースイッチ150の出力部から所定のフリップフロップアレイ192へデータをルーティング(経路決定)する。各フリップフロップアレイ192は、その制御入力部で受取った制御信号の指示に従って、もう1個のフリップフロップアレイ192のデータ内容に対してデータを空間的、時間的に整列させるために逐次結合されたデータラッチを含んでいることが好ましい。データ演算装置(DOU)クロスバースイッチ150は選択的に、
1)データをメモリ34からデータセレクタ190へルーティングし、
2)結果を乗算/累算装置194からデータセレクタ190またはメモリ34へルーティングし、
3)定数を命令取出し装置(IFU)60からデータセレクタ190へルーティングする。
当業者は、内部ループ命令セットアーキテクチャ(ISA)が1組の「内蔵」定数を含んでいることを認めるであろう。このような内部ループ命令セットアーキテクチャ(ISA)の実装では、記憶/整列ロジック154が内蔵定数を有する論理ブロック(CLB)ベースROMを含んでいることが好ましく、これによってデータ演算装置(DOU)クロスバースイッチ150を経て命令取出し装置(IFU)60から記憶/整列ロジック152へ定数をルーティングする必要性をなくすことができる。好ましい実施例では、機能単位194は1組の論理ブロック(CLB)内の数学的演算用の論理関数発生器と回路とを用いて実装されるのが好ましい。各フリップフロップアレイ192は1組の論理ブロック(CLB)内のフリップフロップを用いて実装されることが好ましい。データセレクタ190は1組の論理ブロック(CLB)内の論理関数発生器とデータ選択回路とを用いて実装されることが好ましい。最後にデータ演算装置(DOU)クロスバースイッチ150は、内部ループについてすでに説明した方法で実装されることが好ましい。
【0093】
図14は、アドレス演算装置(AOU)64の好ましい実施例の構成図である。アドレス演算装置(AOU)64は、アドレス演算装置(AOU)制御信号と、レジスタファイル(RF)アドレスと、命令取出し装置(IFU)60から受取った定数とに従ってアドレスに対して演算を実行する。アドレス演算装置(AOU)64は、アドレス演算装置(AOU)クロスバースイッチ200と、記憶/計数ロジック202と、アドレス演算ロジック204と、アドレスマルチプレクサ206とを含んでいる。アドレス演算装置(AOU)クロスバースイッチ200と、記憶/計数ロジック202と、アドレス演算ロジック204と、アドレスマルチプレクサ206とは、それぞれ第2制御ライン72を経て命令取出し装置(IFU)60の第2制御出力部に結合された制御入力部を含んでいる。アドレス演算装置(AOU)クロスバースイッチ200は、アドレス演算装置(AOU)の双方向データポートを形成する双方向データポートと、第1アドレスライン210を経てアドレス演算ロジック204のアドレス出力部に結合されたアドレスフィードバック入力部と、第3制御ライン74に結合された定数入力部と、第2アドレスライン212を経て記憶/計数ロジック202のアドレス入力部に結合されたアドレス出力部とを含んでいる。記憶/計数ロジック202は、そのアドレス入力部と制御入力部の他に、第3制御ライン74に結合されたレジスタファイル(RF)アドレス入力部と、第3アドレスライン214を経てアドレス演算ロジック204のアドレス入力部に結合されたアドレス出力部とを含んでいる。アドレスマルチプレクサ206は、第1アドレスライン210に結合された第1入力部と、第3アドレスライン214に結合された第2入力部と、アドレス演算装置(AOU)64のアドレス出力部を形成する出力部とを含んでいる。
【0094】
アドレス演算ロジック204は、その制御入力部で受取ったアドレス演算装置(AOU)制御信号の指示に従ってそのアドレス入力部で受取ったアドレスに対して算術演算を実行する。記憶/計数ロジック202は、アドレス及びアドレス計算結果を一時記憶する。アドレス演算装置(AOU)クロスバースイッチ200は、その制御入力部で受取ったアドレス演算装置(AOU)制御信号に従って、メモリ34からのアドレスのローディングと、アドレス演算ロジック204の結果出力の記憶/計数ロジック202またはメモリ34への転送と、命令取出し装置(IFU)60による定数出力の記憶/計数ロジック202へのローディングとを容易にする。アドレスマルチプレクサ206は、その制御入力部で受取ったアドレス演算装置(AOU)制御信号の指示に従って、記憶/計数ロジック202またはアドレスマルチプレクサ206から受取ったアドレスをアドレス演算装置(AOU)64のアドレス出力部に選択的に出力する。好ましい実施例では、アドレス演算装置(AOU)クロスバースイッチ200と、記憶/計数ロジック202と、アドレス演算ロジック204との詳細な構造は、図15と図16を用いて下記に説明するように、現在検討中の命令セットアーキテクチャ(ISA)の種類により定まる。
【0095】
図15は、汎用外部ループ命令セットアーキテクチャ(ISA)の実動化のために構成されたアドレス演算装置(AOU)65の第1模範実施例の構成図である。汎用外部ループ命令セットアーキテクチャ(ISA)では、記憶/計数ロジック202に記憶されたプログラムカウンタとアドレスの内容に対して加算、減算、インクリメント、及びデクリメントなどの演算を実行するためのハードウェアが必要である。アドレス演算装置(AOU)65の第1模範実施例では、アドレス演算ロジック204は、入力部と、出力部と、制御入力部とを有する次命令プログラムアドレスレジスタ(NIPAR)232と、第1入力部と、第2入力部と、第3入力部と、制御入力部と、出力部とを有する演算装置234と、第1入力部と、第2入力部と、制御入力部と、出力部とを有するマルチプレクサ230とを含んでいることが好ましい。記憶/計数ロジック202は、それぞれ入力部と、出力部と、アドレス選択入力部と、イネーブル入力部とを有する第3RAM220と第4RAM222とを含んでいることが好ましい。アドレスマルチプレクサ206は、第1入力部と、第2入力部と、第3入力部と、制御入力部と、出力部とを有するマルチプレクサを含んでいることが好ましい。アドレス演算装置(AOU)クロスバースイッチ200は、二重単方向クロスバー結合部と、図14を用いてすでに説明した入力部と出力部とを有する従来型クロスバースイッチネットワークを含んでいることが好ましい。アドレス演算装置(AOU)クロスバースイッチ200の効率的な実動化には、マルチプレクサと、3値バッファと、論理ブロック(CLB)ベースロジックと、直接配線と、または再構成結合部によって結合されたこのような構成部分のサブセットが含まれる。外部ループ命令セットアーキテクチャ(ISA)については、アドレス演算装置(AOU)クロスバースイッチ200は最短時間で逐次データ移動を最大化するよう実装されることが好ましいが、汎用外部ループアドレス演算命令を支援するために最大数の一意のアドレス移動クロスバー結合部も提供する。
【0096】
第3RAM220の入力部と第4RAM222との入力部とは、それぞれ第2アドレスライン212を経てアドレス演算装置(AOU)クロスバースイッチ200の出力部に結合されている。第3RAM220と第4RAM222とのアドレス選択入力部は、第3制御ライン74を経て命令取出し装置(IFU)60からレジスタファイル(RF)アドレスを受取るよう結合されている。第3RAM220と第4RAM222とのイネーブル入力部は、第2制御ライン72を経てアドレス演算装置(AOU)制御信号を受取るよう結合されている。第3RAM220の出力部は、マルチプレクサ230の第1入力部と、演算装置234の第1入力部と、アドレスマルチプレクサ206の第1入力部とに結合されている。同様に、第4RAM222の出力部は、マルチプレクサ230の第2入力部と、演算装置234の第2入力部と、アドレスマルチプレクサ206の第2入力部とに結合されている。マルチプレクサ230と、NIPAR232と、演算装置234との制御入力部は、それぞれ第2制御ライン72に結合されている。演算装置234の出力部は、アドレス演算ロジック204の出力部を形成しており、したがって、アドレス演算装置(AOU)クロスバースイッチ200のアドレスフィードバック入力部とアドレスマルチプレクサ206の第3入力部とに結合されている。アドレス演算装置(AOU)クロスバースイッチ200とアドレスマルチプレクサ206との残りの入力部と出力部への結合部は、図14を用いてすでに説明したものと同一である。
【0097】
アドレス演算命令の実行を容易にするために、命令取出し装置(IFU)60は命令状態シーケンサ(ISS)が状態EまたはMの時に、アドレス演算装置(AOU)制御信号と、レジスタファイル(RF)アドレスと、定数とをアドレス演算装置(AOU)64に発する。第3RAM220と第4RAM222とは、それぞれアドレスの一時記憶のための第1及び第2レジスタファイルを提供する。第3RAM220と第4RAM222内の各記憶位置は、各RAMのアドレス選択入力部で受取ったレジスタファイル(RF)アドレスに従って選択される。第3RAM220と第4RAM222とのローディングは、その書込みイネーブル入力部で第3RAM220と第4RAM222とがそれぞれ受取るアドレス演算装置(AOU)制御によって制御される。マルチプレクサ230は、その制御入力部で受取ったアドレス演算装置(AOU)制御信号の指示に従って、第3RAM220と第4RAM222とによるアドレス出力をNIPAR232に選択的にルーティングする。NIPAR232は、マルチプレクサ230の出力部から受取ったアドレスをロードしてその制御入力部で受取ったアドレス演算装置(AOU)制御信号に応じてその内容をインクリメントする。好ましい実施例では、NIPAR232は、実行すべき次のプログラム命令のアドレスを記憶する。演算装置234は、第3RAM220と第4RAM222とから受取ったアドレスに対して、及び/またはNIPAR232の内容に対して加算、減算、インクリメント、及びデクリメントを含む算術演算を実行する。アドレス演算装置(AOU)クロスバースイッチ200は選択的に、
1)アドレスをメモリ34から第3RAM220と第4RAM222とへルーティングし、
2)演算装置234によるアドレス計算出力の結果をメモリ34または第3RAM220と第4RAM222とへルーティングする。
アドレス演算装置(AOU)クロスバースイッチ200は、制御入力部で受取ったアドレス演算装置(AOU)制御信号に従って特定のルーティング演算を実行する。アドレスマルチプレクサ206は、この制御入力部で受取ったアドレス演算装置(AOU)制御の指示に従って第3RAM220によるアドレス出力と、第4RAM222によるアドレス出力と、または演算装置234によるアドレス計算出力の結果とをアドレス演算装置(AOU)のアドレス出力部に選択的にルーティングする。
【0098】
好ましい実施例では、第3RAM220と第4RAM222とはそれぞれ1組の論理ブロック(CLB)内に存在するデータ記憶回路を用いて実動化される。マルチプレクサ230とアドレスマルチプレクサ206とは、それぞれ1組の論理ブロック(CLB)内に存在するデータ選択回路を用いて実動化されるのが好ましく、NIPAR232は1組の論理ブロック(CLB)内に存在するデータ記憶回路を用いて実装されることが好ましい。演算装置234は、1組の論理ブロック(CLB)内の数学的演算用の論理関数発生器と回路とを用いて実装されることが好ましい。最後に、アドレス演算装置(AOU)クロスバースイッチ200は、すでに説明した方法で実装されることが好ましい。
【0099】
図16は、内部ループ命令セットアーキテクチャ(ISA)の実装のために構成されたアドレス演算装置(AOU)66の第2模範実施例の構成図である。内部ループ命令セットアーキテクチャ(ISA)はきわめて限られた数のアドレス演算を実行するためのハードウェアを必要とし、また少なくとも1個のソースアドレスポインタと、対応する数の宛先アドレスポインタを維持するためのハードウェアを必要とする。きわめて限られた数のアドレス演算または1個のアドレス演算が必要な内部ループ処理の種類には、画像データのブロック演算、ラスター演算、またはサーペンタイン演算と、ビットリバーサル演算と、環状バッファデータに対する演算と、可変長データパーシング演算とが含まれる。ここでは、1回のアドレス演算すなわち、インクリメント演算を検討する。当業者は、インクリメント演算を実行するハードウェアが本来デクリメント演算も実行でき、これによってさらに別のアドレス演算能力が得られることを認めるであろう。アドレス演算装置(AOU)66の第2模範実施例では、記憶/計数ロジック202は、入力部と、出力部と、制御入力部とを有する少なくとも1個のソースアドレスレジスタ252と、入力部と、出力部と、制御入力部とを有する少なくとも1個の宛先アドレスレジスタ254と、入力部と、制御入力部と、現存のソースアドレスレジスタ252及び宛先アドレスレジスタ254の総数に等しい数の出力部とを有するデータセレクタ250とを含んでいる。ここでは、1個のソースアドレスレジスタ252と、1個の宛先アドレスレジスタ254を検討する。したがって、データセレクタ250は、第1出力部と第2出力部とを含んでいる。アドレス演算ロジック204は、入力部と、出力部と、制御入力部とを有するNIPAR232と、データセレクタと等しい数の入力部と、制御入力部と、出力部とを有するマルチプレクサ260とを含んでいる。ここでマルチプレクサ260は、第1入力部と第2入力部とを含んでいる。アドレスマルチプレクサ206は、データセレクタ出力部より1つ多い入力部と、制御入力部と、出力部とを有するマルチプレクサを含んでいることが好ましい。したがってここでは、アドレスマルチプレクサ206は、第1入力部と、第2入力部と、第3入力部とを含んでいる。アドレス演算装置(AOU)クロスバースイッチ200は、双方向及び単方向クロスバー結合部を有し、また図14を用いてすでに説明した入力部と出力部とを有する従来型のクロスバースイッチネットワークを含んでいることが好ましい。アドレス演算装置(AOU)クロスバースイッチ200の効率的な実動化には、マルチプレクサと、3値バッファと、論理ブロック(CLB)ベースロジックと、直接配線と、または再構成結合部によって結合されたこのような構成部分のサブセットが含まれる。内部ループ命令セットアーキテクチャ(ISA)については、アドレス演算装置(AOU)クロスバースイッチ200は最短時間で並列アドレス移動を最大にするよう実動化されるのが好ましいが、内部ループ操作コードを支援するために、最大数の一意のアドレス移動クロスバー結合部も提供する。
【0100】
データセレクタ250の入力部は、アドレス演算装置(AOU)クロスバースイッチ200の出力部に結合されている。データセレクタ250の第1及び第2出力部は、それぞれソースアドレスレジスタ252の入力部と宛先アドレスレジスタ254の入力部とに結合されている。ソースアドレスレジスタ252と宛先アドレスレジスタ254との制御入力部は、第2制御ライン72を経てアドレス演算装置(AOU)制御信号を受取るために結合されている。ソースアドレスレジスタ252の出力部は、マルチプレクサ260の第1入力部とアドレスマルチプレクサ206の第1入力部とに結合されている。同様に、宛先アドレスレジスタ254の出力部は、マルチプレクサ260の第2入力部とアドレスマルチプレクサ206の第2入力部とに結合されている。NIPAR232の入力部は、マルチプレクサ260の出力部に結合されており、NIPAR232の制御入力部は第2制御ライン72を経てアドレス演算装置(AOU)制御信号を受取るために結合されており、NIPAR232の出力部はアドレス演算装置(AOU)クロスバースイッチ200のアドレスフィードバック入力部とアドレスマルチプレクサ206の第3入力部とに結合されている。アドレス演算装置(AOU)クロスバースイッチ200の残りの入力部と出力部とへの結合部は、図14を用いて上記に説明したものと同一である。
【0101】
演算では、データセレクタ250は、その制御入力部で受取ったレジスタファイル(RF)アドレスに従ってアドレス演算装置(AOU)クロスバースイッチから受取ったアドレスをソースアドレスレジスタ252または宛先アドレスレジスタ254にルーティングする。ソースアドレスレジスタ252は、その制御入力部に存在するアドレス演算装置(AOU)制御信号に応じてその入力部に存在するアドレスをロードする。宛先アドレスレジスタ254は、同様の方法でその入力部に存在するアドレスをロードする。マルチプレクサ260は、その制御入力部で受取ったアドレス演算装置(AOU)制御信号に従ってソースアドレスレジスタ252または宛先アドレスレジスタ254から受取ったアドレスをNIPAR232の入力部にルーティングする。NIPAR232は、その制御入力部で受取ったアドレス演算装置(AOU)制御信号に応じてその入力部に存在するアドレスをロードし、その内容をインクリメントするか、またはデクリメントする。アドレス演算装置(AOU)クロスバースイッチ200は選択的に、
1)アドレスをメモリ34からデータセレクタ250にルーティングし、
2)NIPAR232の内容をメモリ34またはデータセレクタ250にルーティングする。
アドレス演算装置(AOU)クロスバースイッチ200は、その制御入力部で受取ったアドレス演算装置(AOU)制御信号に従って特定のルーティング演算を実行する。アドレスマルチプレクサ206は、その制御入力部で受取ったアドレス演算装置(AOU)制御信号の指示に従って、ソースアドレスレジスタ252、宛先アドレスレジスタ254、またはNIPAR232の内容をアドレス演算装置(AOU)のアドレス出力部に選択的にルーティングする。
【0102】
好ましい実施例では、ソースアドレスレジスタ252と宛先アドレスレジスタ254とは、それぞれ1組の論理ブロック(CLB)内に存在するデータ記憶回路を用いて実動化される。NIPAR232は、1組の論理ブロック(CLB)内のインクリメント/デクリメントロジック及びフリップフロップを用いて実動化されることが好ましい。データセレクタ250と、マルチプレクサ230と、アドレスマルチプレクサ206とは、それぞれ1組の論理ブロック(CLB)内に存在するデータ選択回路を用いて実動化されることが好ましい。最後にアドレス演算装置(AOU)クロスバースイッチ200は、内部ループ命令セットアーキテクチャ(ISA)についてすでに述べた方法で実動化されることが好ましい。当業者は、一部のアプリケーションでは、外部ループデータ演算装置(DOU)構成を備えた内部ループアドレス演算装置(AOU)構成に依存する命令セットアーキテクチャ(ISA)を用いることが、またはその逆(内部ループアドレス演算装置(AOU)構成を備えた外部ループデータ演算装置(DOU)構成)が有利であることを認めるであろう。たとえば連想ストリング探索命令セットアーキテクチャ(ISA)は、外部ループアドレス演算装置(AOU)構成を備えた内部ループデータ演算装置(DOU)構成を利用すると有利であろう。別の例として、ヒストグラム演算を実行するための命令セットアーキテクチャ(ISA)は、内部ループアドレス演算装置(AOU)構成を備えた外部ループデータ演算装置(DOU)構成を利用すると有利であろう。
【0103】
有限の再構成ハードウェアリソースを、動的再構成処理装置(DRPU)32の各構成部分間で割当てなければならない。再構成ハードウェアリソースは数が限られているので、たとえばこれらを命令取出し装置(IFU)60に割当てるとデータ演算装置(DOU)62及びアドレス演算装置(AOU)64によって達成可能な最大計算性能レベルに影響を与える。再構成ハードウェアリソースを、命令取出し装置(IFU)60と、データ演算装置(DOU)62と、アドレス演算装置(AOU)64との間で割当てる方法は、任意の瞬間で実装される命令セットアーキテクチャ(ISA)の種類に応じて異なる。命令セットアーキテクチャ(ISA)が複雑になると、次第に複雑になる復号演算及び制御演算を容易に行うために、より多くの再構成ハードウェアリソースを命令取出し装置(IFU)60に割当てなければならなくなり、データ演算装置(DOU)62とアドレス演算装置(AOU)64との間で利用できる再構成ハードウェアリソースは少なくなる。したがって、データ演算装置(DOU)62とアドレス演算装置(AOU)64とによって達成可能な最大計算性能は、命令セットアーキテクチャ(ISA)の複雑性が増すと低下する。一般に、外部ループ命令セットアーキテクチャ(ISA)は内部ループ命令セットアーキテクチャ(ISA)より多くの命令を含み、したがってその実装は、復号回路と制御回路においてかなり複雑となる。たとえば汎用64ビットプロセッサを規定する外部ループ命令セットアーキテクチャ(ISA)は、データ圧縮のみに用いられる内部ループ命令セットアーキテクチャ(ISA)より多くの命令を含むことになると考えられる。
【0104】
図17(a)は、外部ループ命令セットアーキテクチャ(ISA)のための、命令取出し装置(IFU)60と、データ演算装置(DOU)62と、アドレス演算装置(AOU)64との間での再構成ハードウェアリソースの模範割当てを示す図である。外部ループ命令セットアーキテクチャ(ISA)のための再構成ハードウェアリソースの模範割当てでは、命令取出し装置(IFU)60と、データ演算装置(DOU)62と、アドレス演算装置(AOU)64はそれぞれ利用できる再構成ハードウェアリソースの約3分の1を割当てられる。内部ループ命令セットアーキテクチャ(ISA)を実装するために動的再構成処理装置(DRPU)32を再構成すべきときには、内部ループ命令セットアーキテクチャ(ISA)によって支援される命令の数とアドレス命令の種類が限られるため、命令取出し装置(IFU)60とアドレス演算装置(AOU)64とを実装するのに必要な再構成ハードウェアリソースは少なくて済む。図17(b)は、内部ループ命令セットアーキテクチャ(ISA)のための、命令取出し装置(IFU)60と、データ演算装置(DOU)62と、アドレス演算装置(AOU)64との間での再構成ハードウェアリソースの模範割当てを示す図である。内部ループ命令セットアーキテクチャ(ISA)のための再構成ハードウェアリソースの模範割当てでは、命令取出し装置(IFU)60は再構成ハードウェアリソースの約5〜10%を用いて実装され、アドレス演算装置(AOU)64は再構成ハードウェアリソースの約10〜25%を用いて実装される。したがって、再構成ハードウェアリソースの約70〜80%はデータ演算装置(DOU)62の実装に利用できる。このことは、内部ループ命令セットアーキテクチャ(ISA)に関連したデータ演算装置(DOU)62の内部構造が、内部ループ命令セットアーキテクチャ(ISA)に関連したデータ演算装置(DOU)62の内部構造より複雑であってもよく、したがってはるかに高い性能を発揮できることを意味している。
【0105】
当業者は、別の実施例で動的再構成処理装置(DRPU)32がデータ演算装置(DOU)62またはアドレス演算装置(AOU)64を除外できることを認めるであろう。たとえば別の実施例では、動的再構成処理装置(DRPU)32はアドレス演算装置(AOU)64を含まなくても良い。その場合、データ演算装置(DOU)62はデータとアドレスの両方に対して演算を実行することになる。(上記で)検討した特定の動的再構成処理装置(DRPU)実施例とは無関係に、動的再構成処理装置(DRPU)32の各構成部分を実装するために有限数の再構成ハードウェアリソースを割当てなければならない。再構成ハードウェアリソースは、利用できる再構成ハードウェアリソースの全スペースに対して現在検討中の命令セットアーキテクチャ(ISA)について最適のまたは最適に近い能力が達成されるように割当てるのが好ましい。
【0106】
当業者は、命令取出し装置(IFU)60と、データ演算装置(DOU)62と、アドレス演算装置(AOU)64との各構成部分の詳細な構造が上記に説明した実施例に限定されないことを認めるであろう。所定の命令セットアーキテクチャ(ISA)について、対応する構成データセットは、命令取出し装置(IFU)60と、データ演算装置(DOU)62と、アドレス演算装置(AOU)64内の各構成部分の内部構造が、利用できる再構成ハードウェアリソースに対して計算性能を最大限にするように定められるのが好ましい。
【0107】
図18は、Tマシンの好ましい実施例の構成図である。Tマシン14は、第2ローカルタイムベース装置300と、共用インタフェース制御装置(CICU:Common Interface and Control Unit)302と、1組の相互結合入出力装置304とを含んでいる。第2ローカルタイムベース装置300は、Tマシンのマスタタイミング入力部を形成するタイミング入力部を含んでいる。共通インタフェース制御装置(CICU)302は、第2タイミング信号ライン310を経て第2ローカルタイムベース装置300のタイミング出力部に結合されたタイミング入力部と、アドレスライン44に結合されたアドレス出力部と、メモリ入出力ライン46に結合された第1双方向制御ポートと、外部制御ライン48に結合された双方向制御ポートと、メッセージ転送ライン312を経て現存する各相互結合入出力装置304の双方向データポートに結合された第2双方向データポートとを含んでいる。各相互結合入出力装置304は、メッセージ入力ライン314を経て汎用相互結合マトリックス(GPIM)16に結合された入力部と、メッセージ出力ライン316を経て汎用相互結合マトリックス(GPIM)16に結合された出力部とを含んでいる。
【0108】
Tマシン14内の第2ローカルタイムベース装置300は、マスタタイムベース装置22からマスタタイミング信号を受取り、第2ローカルタイミング信号を生成する。第2ローカルタイムベース装置300は、第2ローカルタイミング信号を共通インタフェース制御装置(CICU)302に送り、これによってそれが存在するTマシン14についてのタイミング基準を提供する。第2ローカルタイミング信号は、マスタタイミング信号と位相同期であることが好ましい。システム10では、各Tマシンの第2ローカルタイムベース装置300は同一の周波数で作動することが好ましい。当業者は、別の実施例では、1個またはそれ以上の第2ローカルタイムベース装置300が異なる周波数で作動することを認めるであろう。第2ローカルタイムベース装置300は、論理ブロック(CLB)ベース位相ロック検出回路を含む従来型の位相ロック周波数変換回路を用いて実装されることが好ましい。当業者は、別の実施例では第2ローカルタイムベース装置300がクロック分散ツリーの一部として実装できることを認めるであろう。
【0109】
共通インタフェース制御装置(CICU)302は、その対応するSマシン12と特定の相互結合入出力装置304との間のメッセージの転送を指示し、このメッセージにはコマンドとおそらくデータとが含まれる。好ましい実施例では、指定された相互結合入出力装置304がシステム10の内部または外部にあるいずれかのTマシン14または入出力Tマシン18内に存在しても良い。好ましい実施例では、各相互結合入出力装置304は相互結合入出力装置304を一意的に識別する相互結合アドレスを割当てられているのが好ましい。所定のTマシン内の相互結合入出力装置304についての相互結合アドレスは、対応するSマシンのアーキテクチャ記述メモリ101に記憶される。
【0110】
共通インタフェース制御装置(CICU)302は、それぞれメモリ入出力ライン46と外部制御信号ライン48とを経てその対応するSマシン12からデータとコマンドとを受取る。受取った各コマンドは、目的相互結合アドレスと実行すべき特定の種類の演算を指定するコマンドコードとを含んでいることが好ましい。好ましい実施例では、コマンドコードによって一意的に識別される種類の演算には、
1)データ読出し演算と、
2)データ書込み演算と、
3)再構成割込み転送を含む割込み信号転送と、
を含んでいる。目的相互結合アドレスは、データとコマンドとを転送すべき目的相互結合入出力装置304を識別する。共通インタフェース制御装置(CICU)302は、従来の方法で1組のパケットベースメッセージとして各コマンドと関連データを転送することが好ましく、各メッセージには目的相互結合アドレスとコマンドコードとが含まれている。
【0111】
共通インタフェース制御装置(CICU)302は、その対応するSマシン12からデータとコマンドとを受取る他に、メッセージ転送ライン312に結合された各相互結合入出力装置304からメッセージを受取る。好ましい実施例では、共通インタフェース制御装置(CICU)302は、関連メッセージグループを単一のコマンドとデータシーケンスに変換する。コマンドがその対応するSマシン12内の動的再構成処理装置(DRPU)32に向けられているときには、共通インタフェース制御装置(CICU)302は外部制御信号ライン48を経てコマンドを発する。コマンドがその対応するSマシン12内のメモリ34に向けられているときには、共通インタフェース制御装置(CICU)302は外部制御信号ライン48を経て適切なメモリ制御信号を発し、またメモリアドレスライン44を経てメモリアドレス信号を発する。データは、メモリ入出力ライン46を経て転送される。好ましい実施例では、共通インタフェース制御装置(CICU)302は、ANSI/IEEE規格1596−1992に定められた従来型のSCI切替装置によって実行される演算に類似した演算を実行するための論理ブロック(CLB)ベース回路を含んでいる。
【0112】
各相互結合入出力装置304は、共通インタフェース制御装置(CICU)302からメッセージを受取り、共通インタフェース制御装置(CICU)302から受取った制御信号の指示に従って、このメッセージを汎用相互結合マトリックス(GPIM)16を経て別の相互結合入出力装置304に転送する。好ましい実施例では、相互結合入出力装置304は、ANSI/IEEE規格1596−1992に定められたSCIノードに基づいている。図19は、相互結合入出力装置304の好ましい実施例の構成図である。相互結合入出力装置304は、アドレス復号器320と、入力FIFOバッファ322と、バイパスFIFOバッファ324と、出力FIFOバッファ326と、マルチプレクサ328とを含んでいる。アドレス復号器320は、相互結合入出力装置の入力部を形成する入力部と、入力FIFOバッファ322に結合された第1出力部と、バイパスFIFOバッファ324に結合された第2出力部とを含んでいる。入力FIFOバッファ322は、メッセージを共通インタフェース制御装置(CICU)302に転送するためのメッセージ転送ライン312に結合された出力部を含んでいる。出力FIFOバッファ326は、共通インタフェース制御装置(CICU)302からメッセージを受取るためのメッセージ転送ライン312に結合された入力部と、マルチプレクサ328の第1入力部に結合された出力部とを含んでいる。バイパスFIFOバッファ324は、マルチプレクサ328の第2入力部に結合された出力部を含んでいる。最後にマルチプレクサ328は、メッセージ転送ライン312に結合された制御入力部と、相互結合入出力装置の出力部を形成する出力部とを含んでいる。
【0113】
相互結合入出力装置304は、アドレス復号器320の入力部でメッセージを受取る。アドレス復号器320は、受取ったメッセージで指定されている目的相互結合アドレスがそれが存在する相互結合入出力装置304の相互結合アドレスと同一であるかどうかを決定する。同一の場合には、アドレス復号器320はこのメッセージを入力FIFOバッファ322にルーティングする。そうでなければアドレス復号器320は、メッセージをバイパスFIFOバッファ324にルーティングする。好ましい実施例では、アドレス復号器320は入出力ブロック(IOB)と論理ブロック(CLB)を用いて実装された復号器とデータセレクタとで構成される。
【0114】
入力FIFOバッファ322は、その入力部で受取ったメッセージをメッセージ転送ライン312に転送する従来型のFIFOバッファである。バイパスFIFOバッファ324と出力FIFOバッファ326とは、いずれもその入力部で受取ったメッセージをマルチプレクサ328に転送する従来型のFIFOバッファである。マルチプレクサ328は、その制御入力部で受取った制御信号に従って、バイパスFIFOバッファ324から受取ったメッセージまたは出力FIFOバッファ326から受取ったメッセージを汎用相互結合マトリックス(GPIM)16にルーティングする従来型のマルチプレクサである。好ましい実施例では、入力FIFOバッファ322と、バイパスFIFOバッファ324と、出力FIFOバッファ326とはそれぞれ1組の論理ブロック(CLB)を用いて実装される。マルチプレクサ328は、1組の論理ブロック(CLB)と入出力ブロック(IOB)とを用いて実装されることが好ましい。
【0115】
図20は、入出力Tマシン18の好ましい実施例の構成図である。入出力Tマシン18は、第3ローカルタイムベース装置360と、共通カスタムインタフェース制御装置362と、相互結合入出力装置304とを含んでいる。第3ローカルタイムベース装置360は、入出力Tマシンのマスタタイミング入力部を形成するタイミング入力部を含んでいる。相互結合入出力装置304は、メッセージ入力部ライン314を経て汎用相互結合マトリックス(GPIM)16に結合された入力部と、メッセージ出力ライン316を経て汎用相互結合マトリックス(GPIM)16に結合された出力部とを含んでいる。共通カスタムインタフェース制御装置362は、第3タイミング信号ライン370を経て第3ローカルタイムベース装置360のタイミング出力部に結合されたタイミング入力部と、相互結合入出力装置304の双方向データポートに結合された第1双方向データポートと、入出力装置20への1組の結合部とを含んでいる。好ましい実施例では、入出力装置20への1組の結合部は、入出力装置20の双方向データポートに結合された第2双方向データポートと、入出力装置20のアドレス入力部に結合されたアドレス出力部と、入出力装置20の双方向制御ポートに結合された双方向制御ポートとを含んでいる。当業者は、共通カスタムインタフェース制御装置362が結合されている入出力装置20の種類によって、入出力装置20への結合部が定まることを容易に認めるであろう。
【0116】
第3ローカルタイムベース装置360は、マスタタイムベース装置22からマスタタイミング信号を受取り、第3ローカルタイミング信号を生成する。第3ローカルタイムベース装置360は、第3ローカルタイミング信号を共通カスタムインタフェース制御装置362へ送り、それが配置されている入出力Tマシンにタイミング基準を提供する。好ましい実施例では、第3ローカルタイミング信号はマスタタイミング信号と位相同期している。各入出力Tマシンの第3ローカルタイムベース装置360は、同一の周波数で作動するのが好ましい。別の実施例では、1個またはそれ以上の第3ローカルタイムベース装置360は異なる周波数で作動することができる。第3ローカルタイムベース装置360は、論理ブロック(CLB)ベース位相ロック検出回路を含む従来型の位相ロック周波数変換回路を用いて実装するのが好ましい。第1ローカルタイムベース装置30及び第2ローカルタイムベース装置300と同様の方法で、別の実施例では第3ローカルタイムベース装置360をクロック分散ツリーの一部として実装することができる。
【0117】
入出力Tマシン18内の相互結合入出力装置304の構造と機能は、Tマシン14についてすでに説明したものと同一であることが好ましい。入出力Tマシン18内の相互結合入出力装置304は、任意のTマシン14内の各相互接続入出力装置304の場合と類似した方法でユニークな相互結合アドレスが割当てられる。
【0118】
共通カスタムインタフェース制御装置362は、それに結合された入出力装置20と相互結合入出力装置304との間のメッセージの転送を指示し、このメッセージにはコマンドとおそらくデータとが含まれる。共通カスタムインタフェース制御装置362は、その対応する入出力装置20からデータとコマンドとを受取る。入出力装置20から受取った各コマンドは、目的相互結合アドレスと実行すべき特定の種類の演算を指定するコマンドコードとを含んでいることが好ましい。好ましい実施例では、コマンドコードによって一意的に識別される演算の種類には、
1)データ要求と、
2)データ転送確認と、
3)割込み信号転送と、
が含まれる。目的相互結合アドレスは、データとコマンドとを転送すべきシステム10内の目的相互結合入出力装置304を識別する。共通カスタムインタフェース制御装置362は、従来の方法で1組のパケットベースメッセージとして各コマンドと関連データを転送することが好ましく、各メッセージには目的相互結合アドレスとコマンドコードとが含まれている。
【0119】
共通カスタムインタフェース制御装置362は、その対応する入出力装置20からデータとコマンドとを受取る他に、その関連する入出力装置20からメッセージを受取る。好ましい実施例では、共通カスタムインタフェース制御装置362は、その対応する入出力装置20に支援される通信プロトコルに従って、関連メッセージグループを単一のコマンド及びデータシーケンスに変換する。好ましい実施例では、共通カスタムインタフェース制御装置362は、ANSI/IEEE規格1596−1992に定められた従来型のSCI切替装置によって実行される演算と類似した演算を実行するための論理ブロック(CLB)ベース回路に結合された論理ブロック(CLB)ベース入出力装置コントローラを含んでいる。
【0120】
汎用相互結合マトリックス(GPIM)16は、相互結合入出力装置304の間の2点間並列メッセージルーティングを容易に行えるようにする従来型の相互結合メッシュである。好ましい実施例では、汎用相互結合マトリックス(GPIM)16はワイヤーベースでk−aryのnキューブの静的相互結合ネットワークである。図21は、汎用相互結合マトリックス(GPIM)16の模範実施例の構成図である。図21では、汎用相互結合マトリックス(GPIM)16は、複数の第1通信チャネル380と、複数の第2通信チャネル382とを含む、k−aryの2キューブの環状体相互結合メッシュである。各第1通信チャネル380は、複数のノード接続部384を含んでおり、各第2通信チャネル382も同様に含んでいる。システム10の各相互結合入出力装置304は、メッセージ入力ライン314と、メッセージ出力ライン316とが、所定の第1通信チャネル380と第2通信チャネル382内とで連続ノード接続部384と接続するように汎用相互結合マトリックス(GPIM)16に結合されているのが好ましい。好ましい実施例では、各Tマシン14は上記に説明した方法で第1通信チャネル380に結合された相互結合入出力装置304と、第2通信チャネル382に結合された相互結合入出力装置304とを含んでいる。Tマシン14内の共通インタフェース制御装置(CICU)302は、第1通信チャネル380に結合されたその相互結合入出力装置304と、第2通信チャネル382に結合されたその相互結合入出力装置304との間の情報のルーティングを容易に行えることが好ましい。したがって、図21で380cと表記されている第1通信チャネル380に結合された相互結合入出力装置304と、382cと表記されている第2通信チャネル382に結合された相互結合入出力装置304とを含むTマシン14については、このTマシンの共通インタフェース制御装置(CICU)302は、第1通信チャネル380cと第2通信チャネル382cとの間の情報ルーティングを容易に行える。
【0121】
したがって汎用相互結合マトリックス(GPIM)16は、並列に配置された相互結合入出力装置304間の複数のメッセージのルーティングを容易に行える。図21の2次元汎用相互結合マトリックス(GPIM)16については、各Tマシン14は第1通信チャネル380について1個の相互結合入出力装置304を、また第2通信チャネル382について1個の相互結合入出力装置304を含んでいることが好ましい。当業者は、汎用相互結合マトリックス(GPIM)16の次元が2次元を越える実施例では、Tマシン14が2個を超える相互結合入出力装置304を含んでいることが好ましいことを認めるであろう。汎用相互結合マトリックス(GPIM)16は、16ビットデータパスを含むk−aryの2キューブとして実装されることが好ましい。
【0122】
上記の説明では、本発明の各種構成部分は、再構成ハードウェアリソースを用いて実装されることが好ましい。再構成論理装置のメーカーは、一般に再プログラマブルハードウェアリソースまたは再構成ハードウェアリソースを用いて従来型のデジタルハードウェアを実装するための指針を公表している。たとえば1994年度のXilinxプログラマブル論理装置データブック(xilinx, Inc., サンノゼ,カリフォルニア)には、次のようなアプリケーションノートが含まれている。すなわち、アプリケーションノートXAPP005.002「レジスタベースFIFO」、アプリケーションノートXAPP044.00「高性能RAMベースFIFO」、アプリケーションノートXAPP013.001「XC4000での桁上げ専用ロジックの使用」、アプリケーションノートXAPP018.00「XC4000加算器とカウンタの性能の推定」、アプリケーションノートXAPP028.001「位相ロックループのための周波数/位相コンパレータ」、アプリケーションノートXAPP031.000「XC4000RAMの使用」、アプリケーションノートXAPP036.001「4ポートDRAMコントロ−ラ...」、アプリケーションノートXAPP039.001「18ビットパイプライン累算器」の各アプリケーションノートである。Xilinx社が公表している資料には、さらにXilinxプログラマブルロジックのユーザーのための季刊誌である「XCELL」に含まれる記事がある。たとえば1994年の第3号(通刊第14号)には高速整数乗算器の実装に関する詳しい記事が掲載されている。
【0123】
この明細書で説明しているシステム10は、動的に実装される多重命令セットアーキテクチャ(ISA)のための拡張性、並列コンピュータアーキテクチャである。どのSマシン12も、別のSマシン12やホストコンピュータなどの外部ハードウェアリソースとは無関係に、それだけでコンピュータプログラム全体を実行することができる。どのSマシン12においても、多重命令セットアーキテクチャ(ISA)は再構成割込み及び/またはプログラムに埋込まれた再構成指示に応じて、プログラム実行中に連続的に実装される。システム10は多重Sマシン12を含んでいるのが好ましいので、複数のプログラムが同時に実行されるのが好ましく、各プログラムは独立したものでも良い。したがって、システム10が多重Sマシン12を含んでいるのが好ましいので、多重命令セットアーキテクチャ(ISA)はシステム初期化または再構成中以外はいつでも同時に(すなわち、並列に)実動化される。すなわち、任意の時間に複数のセットのプログラム命令が同時に実行され、プログラム命令の各セットは対応する命令セットアーキテクチャ(ISA)に従って実行される。このような命令セットアーキテクチャ(ISA)は、それぞれ一意なものである。
【0124】
Sマシン12は、(複数の)Tマシン14と、汎用相互結合マトリックス(GPIM)16と、各入出力Tマシン18とを経て、互いに、また入出力装置20と通信する。各Sマシン12は、独立した演算を実行できる、それ自体完全なコンピュータであるが、どのSマシン12もその他のSマシン12またはシステム10全体についてマスタSマシン12として機能することができ、データ及び/またはコマンドをその他のSマシン12に、1個またはそれ以上のTマシン16に、1個またはそれ以上の入出力Tマシン18に、1個またはそれ以上の入出力装置22に送ることができる。
【0125】
したがって、本発明のシステム10は、空間的及び時間的に1つまたはそれ以上のデータ並列(サブ)問題に分割できる問題、たとえば画像処理、医療用データ処理、校正済みカラーマッチング、データベース計算、ドキュメントの処理、連想探索エンジン、及びネットワークサーバについて特に有用である。オペランド列が多い計算問題については、並列計算法によって効率的な計算の高速化が得られるようにアルゴリズムを適用できるときには、データが並列していることになる。データ並列問題は既知の複雑さを含んでいて、これはO(nk)で表される。kの値は問題によって定まる。たとえば画像処理ではk=2であり、医療用データ処理ではk=3である。本発明では、各Sマシン12はプログラム命令グループのレベルでデータの並列性を活用するのに用いられるのが好ましい。システム10は多重Sマシン12を含んでいるので、システム10はプログラム全体のレベルでデータの並列性を活用するのに用いられるのが好ましい。
【0126】
任意の瞬間で必要な計算に対して、このようなハードウェアの計算性能を最適なものとするために、各Sマシン12の命令処理ハードウェアを完全に再構成できるので、本発明のシステム10によって大規模な計算力が得られる。各Sマシン12は、他のSマシン12とは無関係に再構成することができる。システム10は、ソフトウェアと、この明細書で説明した再構成ハードウェアとの間のプログラムされた境界、すなわちインタフェースとして各構成データセットを、したがって各命令セットアーキテクチャ(ISA)を扱うのが有利である。さらに本発明のアーキテクチャによって、本来の場所で実際のシステムの問題を選択的に扱うために再構成ハードウェアを高レベルに構築することが容易となり、こうした問題には、割込みが命令処理に影響する方法と、リアルタイム処理とコンピュータ性能とを容易にする決定待ち時間応答の必要性と、欠陥処理に対する選択可能な応答の必要とが含まれる。
【0127】
その他のコンピュータアーキテクチャとは異なり、本発明はいつでもシリコンリソースを最大限に利用できることを開示している。本発明は、いつでも所望のサイズに拡大できる並列コンピュータシステムを提供し、その規模は数千個のSマシン12からなる大規模な並列システムでも可能である。このようなアーキテクチャの拡張性は、Sマシンベース命令処理がTマシンベースデータ通信から意図的に分離されているので可能となっている。この命令処理/データ通信分離モデルは、データ並列計算にきわめて適している。Sマシンハードウェアの内部構造は、命令のタイムフローについて最適化されるのが好ましいが、Tマシンハードウェアの内部構造は、有効なデータ通信について最適化されるのが好ましい。Sマシン12のセットとTマシン14のセットは、それぞれデータ並列計算の空間的・時間的区分において分離可能で構成可能なコンポーネントである。
【0128】
本発明を用いると、この明細書で説明した全体的構造を維持しながらさらに優れた計算性能を有するシステムを構築するのに将来の再構成ハードウェアを利用することができるかもしれない。言い換えれば、本発明のシステム10は技術的に拡張可能である。現在用いられているほとんどすべての再構成論理装置は、メモリベース相補型金属酸化膜半導体(CMOS)技術を用いている。装置の能力の進歩は、半導体メモリ技術の流れ(傾向)に追随している。将来のシステムでは、Sマシン12を構築するのに用いられる再構成論理装置は、この明細書に説明した内部ループ及び外部ループ命令セットアーキテクチャ(ISA)に従った内部ハードウェアリソースの1区分を含むことになるであろう。大規模の再構成論理装置であっても、単一の装置内でより多くのデータ並列計算を実行する能力を単に提供するにすぎない。たとえば図13を用いて上記に説明したデータ演算装置(DOU)63の第2模範実施例に含まれる機能単位194が大きいと、より大きなサイズの画像処理カーネルを含むことになるであろう。当業者は、本発明により提供される技術的拡張性がCMOSベース装置に限定されず、またフィールドプログラマブルゲートアレイ(FPGA)ベース実装にも限定されないことを認めるであろう。したがって、本発明は再構成可能性または再プログラマブル性を得るために用いられる特定の技術とは無関係に、技術的拡張性を提供する。
【0129】
図22は、拡張性、並列、動的再構成計算のための好ましい方法のフローチャートである。図22の方法は、システム10内の各Sマシン12内で実行されるのが好ましい。この好適な方法は、図22のステップ1000から始まり、再構成ロジック104が命令セットアーキテクチャ(ISA)に対応する構成データセットを検索する。次にステップ1002で、再構成ロジック104はステップ1000で検索した構成データセットに従って、命令取出し装置(IFU)60と、データ演算装置(DOU)62と、アドレス演算装置(AOU)64内の各構成部分を構成し、これによって現在検討中の命令セットアーキテクチャ(ISA)の実装のための動的再構成処理装置(DRPU)ハードウェア編成が得られる。ステップ1002のあと、ステップ1004で割込みロジック106はアーキテクチャ記述メモリ101に記憶された割込み応答信号を検索し、現在の動的再構成処理装置(DRPU)構成が割込みにどのように応答するかを定める遷移制御信号の対応するセットを生成する。その後、命令セットアーキテクチャ(ISA)100はステップ1006でプログラム状態情報を初期化する。その後命令セットアーキテクチャ(ISA)100はステップ1008で命令実行サイクルを開始する。
【0130】
次にステップ1010では、命令セットアーキテクチャ(ISA)100または割込みロジック106は再構成が必要かどうかを決定する。プログラム実行中に再構成指示が選択されるときには、命令セットアーキテクチャ(ISA)100は再構成が必要であると決定する。割込みロジック106は、再構成割込みに応じて再構成が必要であると決定する。再構成が必要なときには、この優先的方法はステップ1012に進み、ここで再構成ハンドラーはプログラム状態情報をセーブする。プログラム状態情報は、現在の動的再構成処理装置(DRPU)構成に対応した構成データセットへの引照を含んでいることが好ましい。ステップ1012のあと、この優先的方法はステップ1000に戻り、再構成指示または再構成割込みによって引照される次の構成データセットを検索する。
【0131】
ステップ1010で再構成が必要とされないときには、ステップ1014で割込みロジック106は非再構成割込みを実施する必要があるかどうかを決定する。必要な場合には、次にステップ1020で、命令セットアーキテクチャ(ISA)100は命令実行サイクル内の現在の命令状態シーケンサ(ISS)状態からの割込み実施状態への遷移が遷移制御信号に基づいて許容されるかどうかを決定する。割込み実施状態への遷移が許容されないときには、命令セットアーキテクチャ(ISA)100は命令実行サイクルの次の状態に進み、ステップ1020に戻る。遷移制御信号によって命令実行サイクル内の現在の命令状態シーケンサ(ISS)状態からの割込み実施状態への遷移が許容されるときには、次にステップ1024で命令セットアーキテクチャ(ISA)100は割込み実施状態へと進む。ステップ1024で、命令セットアーキテクチャ(ISA)100はプログラム状態情報をセーブし、割込みを実施するためのプログラム命令を実行する。ステップ1024の後、この優先的方法はステップ1008に戻り、現在の命令実行サイクルが完了していなかったときにはこれを再開し、(完了していたときには)次の命令実行サイクルを開始する。
【0132】
ステップ1014で非再構成割込みを実施する必要がないときには、この優先的方法はステップ1016に進み、現在のプログラムの実行が完了しているかどうかを決定する。現在のプログラムの実行を継続すべきときには、この優先的方法はステップ1008に戻り、別の命令実行サイクルを開始する。それ以外の場合には、この優先的方法は終了する。
【0133】
本発明は、本発明のアーキテクチャにより必要とされるメモリ演算を実行するためのメタアドレス指定メカニズムを組入れている。本発明によれば、Tマシン14はアドレス指定マシンとして用いられる。Tマシン14は、割込み処理と、メッセージの待ち行列設定と、メタアドレス生成と、データパケットの全体的転送の制御とを実行する。図23は、本発明に基づくデータパケット1800の構成図である。データパケット1800は、データ部分1824と、コマンド部分1820と、ソース地理アドレス1816と、サイズ区切り記号1812と、目的ローカルアドレスと、目的地理アドレス1804とを含んでいる。メタアドレス1828は、目的地理アドレス1804と、目的ローカルメモリアドレス1808とを含んでいる。目的ローカルメモリアドレス1808は、データパケット1800のデータをローカルメモリ34のどこに書込むかを指定する。目的地理アドレス、すなわち相互結合アドレス1804は、どのTマシン14がデータパケット1800を受取るべきかを指定する。ソース地理アドレス1816は、データパケット1800を生成したTマシン14を指定する。
【0134】
任意の2対のソース地理アドレス1816及び宛先
(目的)地理アドレス1804によって、264ビットのローカルアドレススペースへの1つの経路(パス)が一意的に決定される。しかし、システムにはこのような経路(パス)が2つ以上存在し、並列に作動することができる。Sマシン12はそれに結合されたTマシン14を含み、その数はローカルメモリ帯域幅に相当する数まで、または持ち行列効果を考慮した任意の数までを含むことができる。したがって、本発明では2の不確定累乗分だけの拡張性が可能であり、またシステム内のプロセッサが不均一であってもよく、さらに各Sマシン12へのユニークなパスの数を任意に拡張することができる。この種の拡張性は、分散画像処理など多くのアプリケーションで重要であり、動的再構成処理構成部分のピラミッドまたはツリーは、このシステムの高いレベルに対しさらに広い通信帯域幅を提供できるよう構成できるかもしれない。望む場合には、より多くの等速度Tマシン14がSマシン12のピラミッドの高いレベルにアクセスできるようにすることによって、このピラミッドアーキテクチャを実装し、アドレス指定能力を最も必要とするSマシン12にこの能力を与える。これによって、システムリソースをほとんどの処理及び通信タスクに集中させることができるので、対費用効果のすぐれたシステムが得られる。
【0135】
好ましい実施例では、メタアドレスは80ビット幅である。この実施例では、地理アドレスは16ビットであり、ローカルメモリアドレスは64ビット幅である。16ビットの地理アドレスにより、65536個の地理アドレスを指定することができる。64ビットのローカルメモリアドレスにより、各ローカルメモリ34内に264の個別のアドレス可能ビットを指定することができる。各Sマシン12は、特定のSマシン12について構成されるローカルメモリ34を含んでいる。Sマシン12とメモリ34が互いに分離しているので、各メモリのサイズや構造が均一である必要はなく、またメモリ全体のコヒーレント性や一致性を維持する必要もない。ソースSマシン12のプログラム命令が目的Sマシン12のローカルメモリ34のアーキテクチャを意識して書かれたものであり、またこのプログラム命令がメモリ位置を正確に指定する限り、そのサイズやレイアウトとは無関係に、目的Sマシン12のローカルメモリ34に容易にアドレス指定することができる。こうしたモジュール性を備えているため、問題の取扱いとは無関係に、さまざまなコンポーネントを用いてこのアーキテクチャのサイズを拡大・縮小することができる。新しいSマシンを統合する方法も大幅に単純化されている。新しいSマシン12をシステムに加えるときには、そのSマシン12について新しい地理アドレスを選択し、新しいSマシン12の使用を要求するプログラムに新しいアドレスが与えられる。新しいSマシン12を利用するよう設計されたプログラムに新しいアドレスがいったん組入れられると、解決すべき問題は生じず、また計算を実行する必要もなく、Sマシン12が統合される。
【0136】
図24は、遠隔演算を要求するための本発明のSマシン12の処理の流れを示すフローチャートである。ステップ1900で、Sマシン12は命令を受取る。ステップ1904でSマシン12は、この命令が遠隔演算を要求しているかどうかを決定する。この命令が遠隔演算を要求していないときには、ステップ1906でこの命令が実行される。命令が遠隔演算を要求しているときには、ステップ1904で遠隔演算情報はローカルメモリに記憶される。下記に説明するようにステップ1920に進んだ後、Sマシン12は遠隔演算が要求されているかどうかを示す命令コード内のフラグの状態を調べることによって、命令が遠隔演算を要求していると決定する。遠隔演算とは、結果を得るために異なるSマシン12を使用する必要がある演算である。遠隔演算情報は、Sマシン12によって実行されるプログラムにより提供され、遠隔演算の実行が望まれる場合にローカルメモリ34に記憶される。遠隔演算を記憶するにはローカルメモリ34の一定のメモリ位置を用いるのが好ましく、このようにすれば、Tマシン14はただちに情報にアクセスでき、最初にアドレスを取得する必要はない。遠隔演算情報は、一般に遠隔Tマシン14の目的地理アドレス1804と、遠隔Sマシン12にデータを記憶し、または遠隔Sマシン12からデータを検索するための目的ローカルメモリアドレス1808と、コマンド情報1820と、サイズ情報1812と、データ1824とを含んでいる。命令が遠隔演算を必要とすると決定され次第、これらの情報はすべてSマシン12によってローカルメモリ34に記憶される。
【0137】
1つの実施例では、ステップ1912でSマシン12が、遠隔演算が必要であることを示すようTマシンに無条件命令を発する。無条件命令は、Tマシン14が認識するよう設計されている一意的なコマンド列である。無条件命令は、一般に遠隔演算情報がローカルメモリ34に納められているメモリアドレスと、アドレス指定情報のサイズを示すサイズ区切り記号とを含んでいる。これは遠隔演算情報の開始アドレスと一連のサイズ区切り記号を単に指定するだけで、Sマシン12によって実行中のプログラムによって1度に複数の遠隔演算を要求することができる。そのときTマシン14は、情報について異なる要求を逐次処理することができる。次にステップ1920で、Sマシン12は実行すべきその他の命令があるかどうかを決定する。命令が存在するときには、次の命令を受取り実行する。したがって、Sマシン12は遠隔演算の要求があってもそれとは無関係に、命令の実行をほぼ瞬間的に行うことができる。Tマシン14がデータの転送と検索を実行するので、Sマシン12の処理能力は、命令の処理のみに集中することができる。図25は、Sマシン12から無条件命令を受取るTマシン14の処理のフローチャートである。まずステップ2000でTマシン14は、制御ライン48上でSマシン12から受取ったコマンドが無条件命令であるかどうかを決定する。コマンドが無条件命令であると決定したら、ステップ2004でTマシンはメモリ/データライン46を経てローカルメモリ34から遠隔演算情報を検索する。遠隔演算情報は、Tマシン14がデータを検索する際に、遠隔演算情報を検索するたびに新しいメモリアドレスを決定する必要がないようにメモリ34の一定の場所に納められるのが好ましい。遠隔演算情報は、ローカルメモリ34の任意の場所に記憶することもできる。しかしこの場合には、情報の場所は無条件命令の一部として伝送されなければならない。遠隔演算情報を検索した後、Tマシン14、特にTマシン14の共通インタフェース制御装置(CICU)302コンポーネントは、ステップ2008で情報からメタアドレス1828を生成する。目的ローカルメモリアドレス1808は、メタアドレス1828を形成するために、目的地理アドレス1804に添付される。次にステップ2112で、Tマシン14は残りの遠隔演算情報からデータパケット1800を生成し、要求されている宛先に伝送するためにデータパケット1800を相互結合装置または汎用相互結合マトリックス(GPIM)16に伝送する。
【0138】
ソース地理アドレス1816は、プログラム命令によって指定してもよく、したがってTマシン14による検索のためにローカルメモリ34に記憶しても良い。またソース地理アドレス1816は、アーキテクチャ記述メモリ(ADM:Architecture Description Memory)101に記憶されるのが好ましい。アーキテクチャ記述メモリ(ADM)101は、それが結合されているTマシン14の地理アドレスを記憶する変更可能なメモリである。アーキテクチャ記述メモリ(ADM)101を用いて、システム全体の地理アドレスを明白に変更することができる。このシステムの実施例では、Tマシン14はアーキテクチャ記述メモリ(ADM)101からソース地理アドレス1816を検索し、Tマシン14自体の最も新しいソース地理アドレス1816を用いていることを確かめる。多重共通インタフェース制御装置(CICU)302が各Sマシン12に結合された実施例では、各共通インタフェース制御装置(CICU)302の地理アドレスはアーキテクチャ記述メモリ(ADM)101に記憶される。
【0139】
図26は、相互結合装置を経て伝送されたデータパケットを受取るためのTマシン14の処理を示すフローチャートである。ステップ2100でTマシン14は、相互結合装置からデータパケットを受取る。ステップ2104でTマシン14は、メタアドレス1828の目的地理アドレス1804コンポーネントを解析することによって、データパケット1800を復号する。上記に説明したようにTマシンのアドレス復号器320は、データパケット1800を復号する。ステップ2108でアドレス復号器320は、目的地理アドレス1804と、関連する地理アドレスとを比較する。変更可能なアーキテクチャ記述メモリ(ADM)101を用いる実施例では、アドレス復号器320は受取った目的地理アドレス1804とアーキテクチャ記述メモリ(ADM)101内に記憶したアドレスとを比較する。ステップ2112で、地理アドレスが一致するとアドレス復号器320が決定したときには、データパケット1800はローカルメモリアドレス1808によって指定されたメモリ34の場所に伝送される。データパケット1800は解析され、データはメモリ/データライン46を経て送られ、コマンドは制御ライン48を経て送られる。アドレス情報は、アドレスライン44を経て送られる。各アドレスが一致しないときには、エラーメッセージがバイパスFIFO324と、MUX328と、汎用相互結合マトリックス(GPIM)16とを通ってデータパケット1800のソース地理アドレス1816コンポーネントによって識別されたTマシン14に伝送される。誤ってアドレスされたデータパケット1800をTマシン14が受取った場合も、上記に説明したのと同じプロセスを用いる。新しいデータパケット1800を受取った際に、CICU304がデータパケット1800を組立てているか解体しているときには、CICU304がデータを受取り処理できるようになるまでTマシン14はデータパケット1800を入力FIFO322に送り、待機させる。
【0140】
別の実施例では、Tマシン14はメッセージの優先度を認識するように設計されており、Sマシンに新しいコマンドを処理させるのが適切であるときには、Sマシン12の処理に割込む。この実施例では、図27に示すように、共通インタフェース制御装置(CICU)302は割込みロジック2200と、コンパレータ(比較器)2204と、認識装置2208とを含む追加コンポーネントをさらに含んでいる。図28は、共通インタフェース制御装置(CICU)302の割込み処理能力を示すフローチャートである。ステップ2300で認識装置2208は、アドレス復号320によってアドレスを確認したあと、データパケット1800を解析し、パースコマンド1820を識別する。ステップ2304で認識装置2208は、コマンド1820が割込み要求であるかどうかを決定する。データパケット1800が割込み要求であるときには、コマンド1820は割込みIDを含むことになる。コマンド1820が割込みIDを含んでいないときには、上記に説明したような処理を行うためにステップ2308でデータパケットは共通インタフェース制御装置(CICU)302に送られる。
【0141】
コマンド1820が割込みIDを含んでいるときには、割込みIDはメモリ34に結合されているコンパレータ2204に送られる。メモリ34は割込みIDのリストを記憶する。各Sマシンには、その関連するローカルメモリ34に記憶するようSマシンが設計された割込みIDのリストを含むのが好ましい。このリストによって割込みを識別し、割込みの優先度を指定することができ、またこのリストは割込みを実行するための指示を含んでいる。ステップ2312で、コンパレータ2204は受取ったコマンドの割込みIDと、記憶されているIDのリストとを比較する。コマンドにより指定された割込みIDがリストのIDと一致しないときには、ステップ2320で、エラーメッセージがバイパスFIFO324、MUX328を経てソース地理アドレス1816により指定された宛先に伝送され、また信号ライン314を経て汎用相互結合マトリックス(GPIM)16に伝送される。割込みIDが記憶されたIDと一致するときには、ステップ2324で割込みロジック2200は記憶されたIDに関連するローカルメモリ34に含まれている情報に従って、またはデータパケット1800に含まれている情報に従って割込みを処理し、また得られたコマンドを制御ライン48を経てSマシン12に送る。
【0142】
優先度の比較が可能なときには、割込みロジック2200は、割込み要求の優先度と、現在入力FIFO322にあるデータパケット1800の優先度とを比較する。割込み要求の優先度がFIFO32のデータパケット1800より高いときには、割込み要求の優先度の低いデータパケット1800の手前に置かれる。場合によっては、割込み要求がSマシン12の実行を停止するよう求めることもある。この場合、優先度レベルはSマシン12で実行しているプロセスに割当てられる。割込み要求の優先度が現在実行しているプロセスの優先度より高いときには、割込みロジック2200は、Sマシン12が現在の処理を終了し割込み要求の処理を開始する命令を制御ライン48を経てSマシン12に発信する。したがって、完全な優先度比較と割込み処理スキームは、本発明のアーキテクチャに基づくTマシン14によって実動化され、Sマシン12が追加の処理を行う必要はほとんどない。
【0143】
したがって、Tマシン14がコンピュータシステムによって要求されるすべてのメモリ演算機能を実行するので、Sマシン12はプログラムの主命令を実行することができる。メモリと命令実行演算を空間的・時間的に分離することによって、マルチプロセッサで構成される高度に並列のシステムの処理能力を大幅に最適化することができる。仮想メモリや共用メモリを使用しないので、ハードウェア一致性及びコヒーレンス性演算を行う必要はない。Sマシン12は異なるレートで作動することができ、動的に再構成可能なSマシン12によって実現される命令セットアーキテクチャ(ISA)は異なるものでも良い。さらにSマシン12を実動化するフィールドプログラマブルゲートアレイ(FPGA)も、特定のタスクについて最適化される。たとえば、埋込まれた画像を計算する場合、フロントパネルLCD画面コントローラを画像処理用に最適化したSマシン12とする必要はない。しかし、システムのすべてのSマシン12に対し、別のSマシンと通信する必要がある各Sマシン12が一様にアドレス指定できるようにすることは、それでもきわめて望ましいことであり、これは上記に説明したように本発明によって得られる。ソフトウェアは、システム全体のコヒーレント性また一致性を得るように用いられ、これにはSマシン12及びTマシン14のためのメッセージ伝達インタフェース(MPI)実行時(ランタイム)ライブラリなど、また並列仮想マシン(PVM)のための実行時ライブラリなどの従来の方法が用いられる。MPIもPVMもハードウェア抽象化層(HAL)として機能する。本発明によると、HALは動的に再構成可能なSマシン12と固定式Tマシン14のためのものである。メモリ演算はソフトウェアによって完全に制御されているので、このシステムは動的に再構成可能であり複雑なハードウェア/ソフトウェア相互作用の影響を受ない。したがって、独立して分離したメモリを用い、また別個のアドレス指定マシンと処理マシンとを有する完全に拡張性がありアーキテクチャ的に再構成可能なコンピュータシステムが、高度並列計算環境で使用するために提供される。メタアドレスを用いることにより、透過性で細かいアドレス指定が可能であり、またコンピュータシステムの通信経路をシステムの要求に応じて割当てたり再割当てすることが可能である。アドレス指定マシンと処理マシンとを分離することによって、処理マシンのリソースを処理のみに集中させることができ、処理マシンに多様な命令セットアーキテクチャを利用したりさまざまなレートで作動させることができ、またそれぞれ最適化されたハードウェアを用いて実動化することができる。これらのすべてによってシステムの処理力が大幅に向上する。
【0144】
本発明の開示内容は、再プログラマブル計算または再構成計算のためのその他のシステムと著しく異なっている。特に、ダウンロード可能なマイクロコードアーキテクチャは一般に非再構成制御手段と非再構成ハードウェアに依存しているので、本発明はこのようなアーキテクチャとは同等ではない。本発明は、1組の再構成ハードウェアが非再構成ホストプロセッサまたはホストシステムに結合された付加再構成プロセッサ(ARP)システムとも明白に異なっている。付加再構成可能プロセッサ(ARP)装置は、いくつかのプログラムを実行するホストに従属している。したがって、ホストまたは付加再構成可能プロセッサ(ARP)装置がそれぞれデータについて演算する際に、付加再構成可能プロセッサ(ARP)装置またはホストのシリコンリソースがアイドル状態であるかまたは非効率に用いられるので、利用できるシリコンリソースはプログラム実行の時間枠において最大限に利用されない。これに対して各Sマシン12は、プログラム全体を容易に実行することができる独立したコンピュータである。多重Sマシン12は、プログラムを同時に実行することが好ましい。したがって本発明は、個々のSマシン12上で実行する各プログラムとシステム10全体上で実行する多重プログラムとの両方について、常にシリコンリソースを最大限に利用することを開示している。
【0145】
付加再構成可能プロセッサ(ARP)装置は、特定の時間で特定のアルゴリズムについて計算アクセラレータを提供し、特定のアルゴリズムに関して最適に相互結合された1組のゲートとして実装される。命令実行の管理などの汎用演算のために再構成ハードウェアリソースを使用することは、付加再構成可能プロセッサ(ARP)システムでは避けられている。さらに付加再構成可能プロセッサ(ARP)システムは、所定のセットの相互結合を容易に再使用可能なリソースとしては扱わない。これに対して、本発明は特定の時間における計算の必要性に最も適した命令実行モデルによる、命令実行の効率的管理のために構成された動的再構成処理手段を開示している。Sマシン12は、複数の再使用可能なリソース、たとえば命令状態シーケンサ(ISS)100と、割込みロジック106と、記憶/整列ロジック152とを含んでいる。本発明は、相互結合ゲートのレベルではなく、論理ブロック(CLB)、入出力ブロック(IOB)、及び再構成相互結合のレベルで再構成論理リソースを使用することを開示している。したがって本発明は、単一のアルゴリズムについて有用な単一のゲート接続スキームを開示するのではなく、すべてのクラスの計算問題について演算を実行するのに有用な再構成可能な高レベル論理構成部品の使用を開示している。
【0146】
一般に付加再構成可能プロセッサ(ARP)システムは、特定のアルゴリズムを1組の相互結合ゲートに翻訳するためのものである。一部の付加再構成可能プロセッサ(ARP)システムは、高レベル命令を最適のゲートレベルハードウェア構成にコンパイルするよう試みるが、これは一般にNPハード問題である。これに対して本発明は、きわめて簡単な方法で、可変命令セットアーキテクチャ(ISA)に従って高レベルプログラム命令をアセンブリ言語命令にコンパイルする動的再構成計算のためのコンパイラの使用を開示している。
【0147】
付加再構成可能プロセッサ(ARP)装置は、一般にそのホストプログラムをデータとして扱うことはできず、またそれ自体を計算環境に適合させることもできない。これに対して、システム10の各Sマシン12は、それ自体のプログラムをデータとして扱うことができ、したがって、容易にそれ自体を計算環境に適合させることができる。システム10はそれ自体のプログラムを実行することにより、それ自体を容易にシミュレートすることができる。本発明はさらに、それ自体のコンパイラをコンパイルすることができる。
【0148】
本発明では、単一のプログラムには、第1命令セットアーキテクチャ(ISA)に属する第1命令グループと、第2命令セットアーキテクチャ(ISA)に属する第2命令グループと、さらに別の命令セットアーキテクチャ(ISA)に属する第3命令グループと...を含んでいる。この明細書で開示したこのアーキテクチャは、命令が属する命令セットアーキテクチャ(ISA)を実装するためにランタイム構成されているハードウェアを用いて、このような命令グループをそれぞれ実行する。先行技術のシステムや方法で同様の開示内容を提示しているものはない。
【0149】
本発明はさらに、割込み待ち時間と、割込み精度と、プログラマブル状態遷移イネイブリングとが、現在検討中の命令セットアーキテクチャ(ISA)に従って変化する再構成割込みスキームを開示している。その他のコンピュータシステムでは、同様の開示内容は認められない。本発明はさらに、先行技術コンピュータシステムとは異なり、再構成データパスビット幅、アドレスビット幅、及び再構成制御ライン幅を有するコンピュータシステムを開示している。
【0150】
本発明はいくつかの好ましい実施例を用いて説明してきたが、当業者は、さまざまな変形例が得られることを認めるであろう。
【0151】
<参考資料A>
命令セット0,汎用外部ループ命令セットアーキテクチャ(ISA)
1.0 プログラマのアーキテクチャモデル
この節では、レジスタ、メモリモデル、高レベル言語から呼出しコンベンション及び割込みモデルを含む命令セットアーキテクチャ(ISA)0アーキテクチャについてのプログラマの概略コンセプトを示す。
【0152】
1.1 レジスタ
命令セットアーキテクチャ(ISA)0は、16個の16ビット汎用レジスタ、16個のアドレスレジスタ、2個のプロセッサ状態レジスタ、及び1個の割込みベクトルレジスタを含んでいる。データ及びアドレスレジスタのニーモニックは16進数を用いており、したがって最後のデータレジスタはdf.であり、最後のアドレスレジスタはaf.である。プロセッサ状態レジスタの1つであるnipar(Next Instruction Program Address Register)は取出す(フェッチする)次命令のアドレスを指している。もう一方の状態レジスタであるpcw(Processor Control Word)はプログラムフローと割込み処理を行うために用いられるフラグと制御ビットとを含んでいる。そのビットは表2に定義されている。未定義のビットは将来の使用のため保留される。さまざまな命令の副作用として4つの条件フラグ、Z、N、V及びCが設定される。どのフラグが各命令によって影響を受けるかの概要については、2.0項を参照。
【0153】
T(Trace Mode)及びIM(Interrupt Mask)フラグは、プロセッサが割込みに対してどのように対応するか、またトラップがいつ取扱われるかを制御する。割込みベクトルレジスタivecは、割込みサービスルーチンの64ビットアドレスを保持する。割込みとトラップについては後述する1.4項で述べる。
【0154】
【表1】
【0155】
1.2 メモリアクセス
64ビットアドレスレジスタに記憶されている値は、16ビット及び64ビットインクリメントでメモリロード/ストア命令アクセスメモリにより用いられる(表7参照)。アドレスはビットアドレスである。つまり、アドレス16はメモリ内のビット16で始まるワード(語)を指す。ワードは16ビット境界上でのみ読出すことができ、したがってメモリを読出すときにはアドレスレジスタの4つのLSB(最下位ビット)は無視される。KISAのコンセプトの詳細については[1]を参照。64ビット値は、リトルエンディアン順(最下位16ビットが最も下位のアドレスに記憶される順序)の16ビットワードとして記憶される。
【0156】
【表2】
【0157】
1.3 呼出しコンベンション
コンベンションによって、レジスタafはCプログラムによりスタックポインタとして用いられ、レジスタaeはスタックフレームポインタとして用いられる。ニーモニックsp及びfpはこれらのレジスタのエイリアス(別名)として用いられることがある。他のすべてのレジスタは一般用に自由に用いられる。スタックは下に向かって増大する。
【0158】
intは16ビットであり、longは64であり、aはボイド*である。int値はd0で復帰され、longとボイド*の値はa0で復帰される。d0-d4とa0-a3はファンクションによってクロバーされ、他のすべての汎用レジスタはファンクションコール上で保持されなくてはならない。ファンクションに入ると、スタックポインタは復帰アドレスを指し、こうして最初の引数はアドレスsp+64(10進)で始まる。
【0159】
1.4 トラップと割込み
命令セットアーキテクチャ(ISA)0は1本の割込みラインに作用し、ソフトウエアは2つのソースからトラップする。すべては下記に述べる同じ制御フロー(flow-of-control)転送メカニズムを呼出す。
【0160】
外部的には単一のINTR信号入力があり、1つのiack出力がある。pcw内の割込みマスクビットが、xpcw命令でpcwをリセットすることにより、またはrti命令で割込みから復帰してpcwをその当初の値へ戻すことによってクリアされると同時に、iackはアクティブ(能動的)となる。外部装置による割込みの信号発信とプロセッサによる割込みのサービスの間の時間量は、現在実行中の命令とソフトウエアトラップの存在に応じて定まる。
【0161】
ソフトウエアトラップは、明示トラップ命令によって、またはT(トレース)フラッグセットで命令を実行することによってトリガされる。この場合、Tの設定に続く最初の命令のあと、コントロール(制御権)が割込みサービスルーチンへ移される。トラップ命令が実行されるときは、プロセッサはTフラグを設定し、あたかも命令を実行する前にTフラッグが設定されていたかのように割込みサービスルーチンに入る。Tフラッグが設定されている間は割込みのサービスは行われない。xpcw命令でpcwをリセットすることによって、またはrti命令で割込みからの復帰によりスタックからリセットすることによってTフラグがクリアされるまではそれ以上トラップは起こらない。
【0162】
割込みは、intr外部信号でのアクティブ信号の存在によって発生する。imフラグまたはTフラグが設定されているときは、割込みはマスクされ、未決定の割込みは無視される。imフラグとTフラグがクリアされると、intrの表明に続く最初の命令のあと、コントロールは割込みサービスルーチンに移される。割込みサービスルーチンに入ると、imフラグがプロセッサにより設定される。xpcw命令でpcwがリセットされるか、またはrti命令による割込みからの復帰によってスタックからリセットされることによってimフラグがクリアされるまでは、それ以上は割込みは起こらない。
【0163】
割込みまたはトラップが起こるときに、プロセッサがとるステップは次の通りである。
1.現在実行中のすべての命令を完了する。
2.16個のデータレジスタ(d0が先)、16個のアドレスレジスタ(a0が先)、pcw、ivec及びniparが、この順序で(レジスタafによりポイントされた)スタックに押込まれる。スタックに押込まれるafの値は、割込みまたはトラップのサービスが始まる前のその値である。
3.これが割込みであるときには、pcw内の割込みビットが、それ以上の割込みをマスクするよう設定される。これがトラップ命令であるときには、Tフラッグが設定されるこれがTフラッグにより発生したトラップであるときは、pcwは変更されない。
4.ivecレジスタ内の値をniperにロードする。
割込みハンドラ内での命令の実行が始まる。
【0164】
rti命令の実行時には、下記の動作が行われる。
1.レジスタは、それが書込まれたのと反対の順序でスタックから回復される。
2.実行を再開する。
【0165】
割込みマスクフラグがすでにクリアされていないときは、それはrti命令によってクリアされる。pcwの値がスタック上で変更されない限り、それはサービスルーチンに入ったときにクリアされていたからである。トラップ命令を実行することによってTフラグが設定されるときは、同じ理由によってrtiの実行時にそれはクリアされる。サービスルーチンへ入る前に設定されていたTフラッグによってトラップが発生したときは、トラップが発生したことを確認するために、それはサービスルーチンによりクリアされなくてはならない。割込みマスクフラグが何らかの手段によってクリアされるときは、外部出力信号iackは割込みが行われている外部装置に信号を送るために1クロックサイクルの間アクティブとなる。
【0166】
2.0 機能による命令の分類
表記コンベンションは次の通りである。
【0167】
【表3】
【0168】
2.1 レジスタの動き
【0169】
【表4】
【0170】
2.2 論理演算
【0171】
【表5】
【0172】
2.3 メモリ ロード/ストア
【0173】
【表6】
【0174】
2.4 算術演算
【0175】
【表7】
【0176】
2.5 制御フロー
【0177】
【表8】
【0178】
3.0 英字参照記号
命令セットアーキテクチャ(ISA)0のために設定された命令を下記にアルファベット順に示す。ニーモニックは短い記述で示してある。その下は命令の2進コードである。2進コードの各行は16ビットのワードである。影響を受けるフラグを次にリストで示す。ほかに定めのない限り、フラグは宛先レジスタに記憶されたデータを用いて設定する。niparは命令実行の開始時にすでにインクリメントされたものと想定する。最後に命令の意味についてのテキスト記述を示す。
【0179】
2進コードに用いられている表記コンベンションを下記の表にまとめてある。条件コードは表59に定義されている。
【0180】
【表9】
【0181】
【表10】
【0182】
2個のデータレジスタを加算し、結果を宛先レジスタに残す。
【0183】
【表11】
【0184】
2個のデータレジスタと桁上げフラグを加算し、結果を宛先レジスタに残す。
【0185】
【表12】
【0186】
8ビット符号つき(2の補数)定数をデータレジスタに加算し、結果をレジスタに残す。
【0187】
【表13】
【0188】
2個のデータレジスタのビットワイズANDを実行し、結果を宛先レジスタに残す。
【0189】
【表14】
【0190】
条件が真のときは、(offset << Kisa )をniparに加算する。
【0191】
【表15】
【0192】
(offset << Kisa)をniparに加算する。
【0193】
【表16】
【0194】
条件つきで8ビット右へシフトし、マスクする。ワードオフセットから読出された8ビットデータを整列するためにロード命令のあとに用いられる。ソースアドレスレジスタに含まれるアドレスが8ビット境界上にある(ビット2セットをもつ)ときには、データレジスタ内の値を8ビット右へシフトする。アドレスが8ビット境界上にないときは、レジスタの上流8ビットをクリアする。
【0195】
[註] 負のフラグは、ビット15でなくビット7で設定する。これによって8ビット量の符号延長が容易となる。
【0196】
【表17】
【0197】
宛先レジスタからソースレジスタを差引くことによって、2個のデータレジスタの絶対値比較のためのフラグを設定し、フラグだけに影響を与える。
【0198】
【表18】
【0199】
16ビット符号つき整数により32ビット符号つき整数の符号つき除算を行い、16ビット符号つき商と剰余を戻す。32ビット被除数は、宛先レジスタのインデックスから始まる2個の連続するレジスタ内に格納する(リトルエンディアン順)。16ビット除数はソースレジスタ内にある。剰余は宛先レジスタに戻し、商は宛先レジスタ後のレジスタに戻す(モジュロ16)。商が16ビットを越えるときはオーバフローとなる。
【0200】
【表19】
【0201】
データレジスタをアドレスレジスタに加算し、結果をアドレスレジスタに残す。
【0202】
【表20】
【0203】
8ビット符号つき定数をアドレスレジスタに加算し、結果をアドレスレジスタに残す。
【0204】
【表21】
【0205】
宛先レジスタからソースレジスタを差引くことによって、2個のアドレスレジスタの絶対値比較のためのフラグを設定し、フラグだけに影響を与える。
【0206】
【表22】
【0207】
2個のアドレスレジスタを加算し、結果を宛先レジスタに残す。
【0208】
【表23】
【0209】
宛先レジスタからソースレジスタを差引き、結果を宛先レジスタに格納する。
【0210】
【表24】
【0211】
ロードをアドレスレジスタ内に事後インクリメントする。ソースレジスタによりポイントされたアドレスからメモリを読出し、宛先レジスタ内に入れる。次にソースレジスタをインクリメントする。
【0212】
【表25】
【0213】
アドレスレジスタを1ビット右へシフトする。
【0214】
【表26】
【0215】
アドレスレジスタから格納する。ソースレジスタ内の64ビット値を、宛先レジスタによりポイントされたメモリ位置に書込む。この値はリトルエンディアン順に配置した4つの16ビットワードとして書込む。
【0216】
【表27】
【0217】
アドレスレジスタからのストアを事前デクリメントする。宛先レジスタをデクリメントし、次にソースレジスタ内の値を、宛先レジスタによりポイントされたメモリ位置に書込む。この値はリトルエンディアン順に配置した4つの16ビットワードとして書込む。
【0218】
【表28】
【0219】
アドレスレジスタからデータレジスタを差引き、結果をアドレスレジスタに残す。
【0220】
【表29】
【0221】
宛先レジスタへソースレジスタをビットごとに反転配置する。
【0222】
【表30】
【0223】
絶対アドレスへ条件つきジャンプする。条件コードビットの定義については、表59を参照。
【0224】
【表31】
【0225】
絶対アドレスへ無条件ジャンプする。条件「常時」はjCCと同じ。
【0226】
【表32】
【0227】
宛先レジスタをまずインクリメントし、次に宛先レジスタ(通常はスタックポインタ)によりポイントされたアドレスに、(次命令を指す)現在のniparを格納する。次に、次命令を取出す前にソースレジスタ内のアドレスでniparをロードする。
【0228】
【表33】
【0229】
ビットの定数だけデータレジスタを左へシフトする。
【0230】
【表34】
【0231】
ビットの定数だけデータレジスタを右へシフトする。
【0232】
【表35】
【0233】
メモリからデータレジスタをロードする。ソースアドレスレジスタによりポイントされた値を宛先データレジスタにロードする。
【0234】
【表36】
【0235】
データレジスタ内へロードを事後インクリメントする。ソースアドレスレジスタによりポイントされたアドレスからメモリを読出し、宛先データレジスタに入れる。次にソースレジスタをインクリメントする。
【0236】
【表37】
【0237】
16ビット隣接値をデータレジスタ内にロードする。
【0238】
【表38】
【0239】
宛先レジスタを、ソースレジスタのビットワイズ反転で置換え、宛先レジスタを加える。
【0240】
【表39】
【0241】
ソースデータレジスタ内の値を宛先データレジスタ内に入れる。
【0242】
【表40】
【0243】
ソースレジスタ内の値を宛先レジスタ内の値により乗算した結果を、宛先レジスタで始まる2つの連続するレジスタ内に格納する(リトルエンディアン順)。
【0244】
【表41】
【0245】
2つのデータレジスタのビットワイズORを実行し、結果を宛先レジスタに残す。
【0246】
【表42】
【0247】
データレジスタを1ビット左へシフトする。LSB(最下位ビット)を桁上げフラグの値で置換える。命令の終りに当初のMSB(最上位ビット)を桁上げフラグ内に入れる。
【0248】
【表43】
【0249】
前述した1.4項を参照。ソースレジスタをスタックポインタとして用いる。
【0250】
【表44】
【0251】
サブルーチンからの復帰。宛先レジスタ(通常はスタックポインタ)によりポイントされたメモリ位置からniparをロードする。次に、宛先レジスタをインクリメントする。
【0252】
【表45】
【0253】
ソースレジスタ内の値により指定されたビット数だけ、宛名レジスタを左へシフトする。
【0254】
【表46】
【0255】
ソースレジスタ内の値により指定されたビット数だけ、宛名レジスタを右へシフトする。
【0256】
【表47】
【0257】
データレジスタから格納(ストア)する。ソース内の値を、宛先レジスタによりポイントされたメモリ位置に書込む。
【0258】
【表48】
【0259】
データレジスタからストアを事前デクリメントする。宛先レジスタをデクリメントし、次に宛先レジスタによりポイントされたメモリ位置にソースレジスタ内の値を書込む。
【0260】
【表49】
【0261】
宛先レジスタからソースレジスタを差引き、結果を宛先レジスタに格納する。
【0262】
【表50】
【0263】
宛先レジスタからソースレジスタを差引き、次に桁上げビットを差引き、結果を宛先レジスタに格納する。
【0264】
【表51】
【0265】
割込みハンドラーを実行する。1.4項を参照。宛先レジスタをスタックポインタとして用いる。
【0266】
【表52】
【0267】
16ビット符号つき整数による32ビット符号つき整数の符号なし除算を行い、16ビット符号つき商と剰余を戻す。宛先レジスタのインデックスから始まる2つの連続するレジスタ内に32ビットを格納する(リトルエンディアン順)。除数はソースレジスタ内にある。剰余は宛先レジスタへ戻し、商は宛先レジスタ後の次レジスタへ戻す。商が16ビットを越えるときはオーバフローとなる。
【0268】
【表53】
【0269】
宛先レジスタ内の値によりソースレジスタ内の値を乗算した結果を、宛先レジスタで始まる2つの連続するレジスタ内に格納する(リトルエンディアン順)。
【0270】
【表54】
【0271】
ソースアドレスレジスタ内の値を、宛先レジスタで始まる4つの連続するデータレジスタへ転送する。この値はリトルエンディアン順に格納し、宛先レジスタアドレスをモジュロ16で計算し、宛先レジスタがどのレジスタでも良いようにする。
【0272】
【表55】
【0273】
4つの連続するデータレジスタ内のリトルエンディアン順の64ビット値を宛先アドレスレジスタ内へ転送する。ソースレジスタアドレスをモジュロ16で計算し、宛先レジスタがどのレジスタでも良いようにする。
【0274】
【表56】
【0275】
2つのデータレジスタのビットワイズ排他的ORを実行し、結果を宛先レジスタ内に残す。
【0276】
【表57】
【0277】
ソースデータレジスタ内の値をpcwレジスタと交換する。
【0278】
【表58】
【0279】
ソースアドレスレジスタ内の値をivecレジスタと交換する。
【0280】
4.0 条件コード
条件コード操作コード部分フィールドには、下記の表からの値を用いる。
【0281】
【表59】
【0282】
<参考資料B>
命令セット1,パイプライン乗算・累算命令セットアーキテクチャ(ISA)
ISA1 − XC4013のためのパイプライン畳込みエンジン
はじめに
命令セットアーキテクチャ(ISA)1は、命令サイクルあたり4回の同時乗算・累算を行うことのできるパイプライン乗算・累算アレイである。4個の8ビット×8ビット乗算器への入力ごとに1個、つまり、8個の8ビットデータレジスタ(xd0-xd3及びyd0-yd3)がある。1つの最終16ビット合計が出るまで、パイプライン加算アレイを経由して、4つの乗算器出力が合計され、4個までの16ビットレジスタが結果を記憶できる(m0-m4)。命令セットアーキテクチャ(ISA)1のアーキテクチャは、主メモリでフロースルーバッチ処理サイクルを仮定している。累算結果を再循環させるための乗算器累算器データパスを通るフィードバックパスはない。これはメモリデータ流量に重点が置かれているからである。オーバフロースケーリングまたは拡張有限性累算のための用意はない。畳込みフィルタリングに用いられる係数は、すべてのデータセットについて、16ビットを超えない結果有限性を与えると、命令セットアーキテクチャ(ISA)1は仮定している。乗算アレイは、8ビットの2の補数データ入力を受け、16ビットの2の補数結果を出す。
【0283】
メモリへのアクセスは、2個の16ビットアドレスレジスタ(a0とa1)によって管理され、これらは互換性のあるソース及び宛先ポインタと考えることができる。プログラムフローは、標準64ビットNIPARレジスタにより管理され、64ビット割込みベクトルレジスタは、フレームまたはデータ実行可能割込みなどの単独割込みについて支援される(IVEC)。
【0284】
命令セットアーキテクチャ(ISA)1の命令セットはきわめて小さく、16ビットのワードサイズに整列され、汎用外部ループプロセッサ命令セットアーキテクチャ(ISA)0のためのKISA=4メモリ編成に対応している。命令セットアーキテクチャ(ISA)1での単一のクロックサイクルで7回までの算術演算を例示することができ、実動化によってクロックの小ウィンドウ上でクロックあたり1の割合で結果を保持し、新しいソースまたは宛名アドレスをインデックスする能力があり、計算と並行してメモリから、またメモリへ、レジスタデータを移す。
命令セットアーキテクチャ(ISA)1命令セット
データ移動
ld(reg−vector)
命令ワード内に右揃えされた14ビットのビットマップreg-vectorに従って、メモリから順次14個までのレジスタがロードされる。
【0285】
st(reg-vector)
命令ワード内に右揃えされた14ビットのビットマップreg-vectorに従って、メモリへ順次14個までのレジスタが記憶される。
【0286】
ld(ivec-data)
この命令に続く64ビットのアドレスがIVECレジスタにロードされ、次命令をポイントするNIPAR+=5が実行される。
【0287】
プログラム制御
jmp(nipar-data)
この命令に続く64ビットのアドレスがNIPARレジスタにロードされ、これによって次命令へのポインティングが実行される。
【0288】
算術演算
mac(m-reg)
2ビットのm-regコードで示される乗算結果レジスタが積と和(xd0*yd0) +(xd1*yd1)+(xd2*yd2)+(xd3*yd3)を受取る。
【0289】
macp(s-vec, d-vec)
4ビットd-vecコードの2ビットにより示される乗算結果レジスタが積と和(xd0*yd0)+(xd1*yd1)+(xd2*yd2)+(xd3*yd3)を受取る。d-vecコードの1つおきのビットが選択的にこの結果レジスタのアドレス(a1)へのメモリ書込みを可能にし、d-vecコードの残りのビットが、アドレスレジスタa1が増分されるかどうかを選択する。8ビットs-vecは4つの2ビットグループに分けられ、データレジスタxd0-xd3について連続してアドレス(a0)でのメモリからの読出しが行われるかどうか、またアドレスレジスタa0が増分されるかどうかを指定する。読出しまたは書込みが指定されるときは、乗算に並行して行われる。ソフトウエアは、メモリから読出され、メモリへ記憶されるデータの各バッチについて命令処理のパイプライン整列を行わなければならない。
【0290】
再構成
reconf(ISA-vector)
命令セットアーキテクチャ(ISA)1は脱コンテキストされ、Sマシンは命令内の命令セットアーキテクチャ(ISA)ベクトルビットフィールドにより選択される命令セットアーキテクチャ(ISA)について再構成される。
【0291】
表60に、ISA1のブロック構成として、XC4013のためのパイプライン畳込みエンジンを示す。
【0292】
【表60】
【0293】
【発明の効果】
本発明は、拡張性、並列、動的再構成計算のためのシステム及び方法に関するものである。このシステムは、少なくとも1個のSマシンと、各Sマシンに対応するTマシンと、汎用相互結合マトリックス(GPIM)と、1組の入出力Tマシンと、1個またはそれ以上の入出力装置と、マスタタイムベース装置とを含んでいる。好ましい実施例では、このシステムは多重Sマシンを含んでいる。各Sマシンは、対応するTマシンの出力部と入力部とにそれぞれ結合された入力部と出力部とを含んでいる。各Tマシンは、汎用相互結合マトリックス(GPIM)に結合されたルーティング入力部とルーティング出力部とを含んでおり、各入出力Tマシンも同様にこれらを含んでいる。入出力Tマシンはさらに、入出力装置に結合された入力部と出力部とを含んでいる。最後に、各Sマシンと、Tマシンと、入出力Tマシンとは、マスタタイムベース装置のタイミング出力部に結合されたマスタタイミング入力部を含んでいる。
【0294】
本発明のメタアドレス指定システムは、プロセッサ自体に処理集中アドレス操作機能を実行するよう要求することなしに、ネットワーク内のプロセッサにビットアドレス指定能力を提供する。割当てられた各機能を実行するよう最適化された個別の処理マシン及びアドレス指定マシンが開示される。処理マシンは命令を実行し、ローカルメモリにデータを記憶し、またローカルメモリからデータを検索し、いつ遠隔演算が要求されるかを決定する。アドレス指定マシンは、伝送するためのデータのパケットを組立て、このパケットの地理アドレスまたはネットワークアドレスを決定し、入ってくるパケットに対してアドレスをチェックする。さらにアドレス指定マシンは、割込み処理とその他のアドレス指定演算を実行することができる。
【0295】
1つの実施例では、Tマシンはまた本発明のメタアドレス指定メカニズムも提供する。メタアドレスは、システム内のTマシンの地理的位置を指定し、ローカルメモリ装置内のデータの位置を指定する。メタアドレスのローカルアドレスは、装置のアドレス指定可能スペースがローカルアドレスのビット数以下である限りは、装置の実際のメモリサイズとは関係なく、新しい装置のメモリ内の各ビットをアドレス指定するのに用いられる。したがって、単一のメタアドレスを用いて異なるメモリサイズと構造とを有する装置のアドレス指定を行うことができる。さらに、メタアドレスを用いているので、マルチプロセッサ並列アーキテクチャ内のハードウェアが、システム全体のコヒーレント性と一致性とを保証する必要はない。
【0296】
メタアドレスによって、完全な拡張性が得られる。新しいSマシンまたは新しい入出力装置が加えられると、新しい地理アドレスがこの新しい装置について指定される。本発明では、拡張性は不規則であってもよく、プロセッサの数の2乗の拡張を行わなければならないという条件がない。利用できるローカルメモリ帯域幅までの任意の数のアドレス指定マシンを各処理マシンに結合する能力によって、拡張性はさらに高まる。これにより、システム設計者は、各処理マシンへの経路の数を任意に指定することができる。このような柔軟性によって、システムのより高いレベルにより広い帯域幅を提供することができ、システムの最も重要な機能に最も広い帯域幅を与えるよう最適化されたピラミッド型処理アーキテクチャを構築することができる。
【0297】
上に説明したように、好ましい実施例によると、Tマシンはメタアドレスを生成し、割込みを扱い、メッセージを待ち行列に待機させるアドレス指定マシンである。したがって、Sマシンはその処理能力をプログラム命令の実行にのみ集中させることができ、本発明のマルチプロセッサ並列アーキテクチャの全体的な効率を大幅に最適化することができる。Sマシンは所望のデータを探し出すためのメタアドレスのローカルメモリコンポーネントにアクセスするだけでよく、地理アドレスは、Sマシンに対して透過性である。このアドレス指定アーキテクチャは、分散メモリ/分散プロセッサ並列計算システムときわめてよく相互作動する。ローカルメモリを分離するアーキテクチャ設計を選択することにより、ハードウェアを独立に、また並列に作動することができる。本発明によれば、各Sマシンは、1つの計算問題にすべて並列に向けられていたとしても、実行時には全く異なった再構成命令を有することができる。また、動的再構成Sマシンにより実現される命令セットアーキテクチャ(ISA)が異なっていても良いばかりでなく、Sマシンを実現するのに用いられる実際のハードウェアが一定のタスクを実行するように最適化されていても良い。したがって、単一のシステム内のSマシンはすべて異なるレートで作動してもよく、各Sマシンはシステムリソースの利用を最大限に高めながらその機能を最適に実行することができる。
【0298】
さらに、唯一のメモリ確認によって、正確な地理アドレスが伝送されていることが確認され、ローカルメモリアドレスの確認は提供されない。さらに、この確認は処理マシンではなくアドレス指定マシンによって実行される。仮想アドレス指定は用いられないので、仮想アドレスを論理アドレスに変換するためのハードウェア/ソフトウェア相互作動は必要ではない。メタアドレスのアドレスは、物理的アドレスである。このような予防的及び保全的機能をすべてなくすることにより、システム全体の処理速度が大幅に向上する。したがって、メタアドレス指定スキームと組合わせて、コンピュータシステムの「スペース」管理を、別個の処理マシンにより提供されるコンピュータシステムの「時間」管理から別のアドレス指定マシンに分離することにより、高度並列計算システムのための一意的なメモリ管理及びアドレス指定システムが提供される。本発明のアーキテクチャにより、Sマシンの作動は優れた柔軟性を有することとなり、Tマシンのレートを一定に保ったまま各Sマシンはそれぞれに最適なレートで作動することができる。システム全体のデータ通信を最も遠いスペースにも達するようにし、きわめて短時間でローカル命令処理を均衡させることができ、これによって高度並列コンピュータシステムによる複雑な問題の解決へのアプローチが改善される。
【図面の簡単な説明】
【図1】本発明に基づいて構築された、拡張性、並列、動的再構成計算のためのシステムの好ましい構成例を示すブロック図である。
【図2】本発明のSマシンの好ましい構成例を示すブロック図である。
【図3】再構成指示を含む模範的プログラムリストの模式図である。
【図4】一連のプログラム命令のコンパイル中に実行される先行技術コンパイル作業のフローチャートである。
【図5】動的再構成計算のためにコンパイラによって実行される好ましいコンパイル作業のフローチャートである。
【図6】動的再構成計算のためにコンパイラによって実行される好ましいコンパイル作業のフローチャートである。
【図7】本発明の動的再構成処理装置(DRPU)の好ましい構成例を示すブロック図である。
【図8】本発明の命令取出し装置(IFU)の好ましい構成例を示すブロック図である。
【図9】本発明の命令状態シーケンサ(ISS)によって支援される好ましい1組の状態を示す模式図である。
【図10】本発明の割込みロジックによって支援される好ましい1組の状態を示す模式図である。
【図11】本発明のデータ演算装置(DOU)の好ましい構成例を示すブロック図である。
【図12】汎用外部ループ命令セットアーキテクチャ(ISA)を実動化するために構成されたデータ演算装置(DOU)の第1模範実施例の構成図である。
【図13】内部ループ命令セットアーキテクチャ(ISA)を実動化するために構成されたデータ演算装置(DOU)の第2模範実施例の構成ブロック図である。
【図14】本発明のアドレス演算装置(AOU)の好ましい構成例を示すブロック図である。
【図15】汎用外部ループ命令セットアーキテクチャ(ISA)を実動化するために構成されたアドレス演算装置(AOU)の第1模範実施例の構成ブロック図である。
【図16】内部ループ命令セットアーキテクチャ(ISA)を実動化するために構成されたアドレス演算装置(AOU)の第2模範実施例の構成ブロック図である。
【図17】(a)は、外部ループ命令セットアーキテクチャ(ISA)のための命令取出し装置(IFU)と、データ演算装置(DOU)と、アドレス演算装置(AOU)との間での再構成ハードウェアリソースの模範的割当てを示す模式図、(b)は、内部ループ命令セットアーキテクチャ(ISA)のための命令取出し装置(IFU)と、データ演算装置(DOU)と、アドレス演算装置(AOU)との間での再構成ハードウェアリソースの模範的割当てを示す模式図である。
【図18】本発明のTマシンの好ましい構成例を示すブロック図である。
【図19】本発明の相互結合入出力装置の構成例を示すブロック図である。
【図20】本発明の入出力Tマシンの好ましい構成例を示すブロック図である。
【図21】本発明の汎用相互結合マトリックス(GPIM)の好ましい構成例を示すブロック図である。
【図22】本発明に基づく、拡張性、並列、動的再構成計算のための好ましい方法のフローチャートである。
【図23】本発明に基づくデータパケットの好ましい構成例を示す模式図である。
【図24】本発明に基づくデータ要求を発生させるための好ましい方法のフローチャートである。
【図25】本発明に基づくデータを送るための好ましい方法のフローチャートである。
【図26】本発明に基づくデータを受取るための好ましい方法のフローチャートである。
【図27】本発明に基づく割込み処理演算を実行する相互結合入出力装置の好ましい構成例を示すブロック図である。
【図28】本発明に基づく割込みを扱うための好ましい方法のフローチャートである。
【符号の説明】
12 動的プログラム処理マシン(Sマシン)
14 アドレス指定マシン(Tマシン)
16 相互結合装置(汎用相互結合マトリックス)
34 メモリ装置、ローカルメモリ(メモリ)
101 アーキテクチャ記述メモリ
106,2200 割込みロジック
320 アドレス復号器
1800 データパケット
1816 地理アドレス
2208 メタアドレス
2208 認識装置
2204 コンパレータ[0001]
BACKGROUND OF THE INVENTION
The present invention relates generally to computer architectures, and more particularly to systems and methods for reconfiguration calculations, ie, metaaddressing architectures for dynamic reconfiguration calculations andMeta for dynamic reconfiguration computationIt relates to the addressing method.
[0002]
The present invention is disclosed in U.S. Pat. United States of America entitled "System and Method for Dynamic Reconfiguration Calculations Using Processors with Changeable Internal Hardware Organization" filed on Feb. 26, 1998, a divisional application of 5,794,062 Patent application no. This is a priority application based on the 09 / 031,323 US continuation application.
[0003]
[Prior art]
Advances in computer architecture are driven by demands for better computing performance. In order to solve various calculation problems quickly and accurately, different kinds of calculation resources are generally required. If the type of problem is limited, computational performance can be improved by using computational resources specifically constructed for the type of problem under consideration. For example, when digital signal processing (DSP) hardware is used in combination with a general-purpose computer, certain signal processing capabilities can be greatly improved. When the computer itself is specially built for the type of problem under consideration, computational performance will be further improved for that particular type of problem, or perhaps more optimized compared to the available computational resources Will be. Current parallel computers and massively parallel computers are O (n2 ) Or more complex special types of problems, which is an example of the above case.
[0004]
Good computing performance is necessary, but it must be balanced with the need to minimize system costs and maximize system productivity in the widest possible range of applications now and in the future It must be balanced with gender. In general, special hardware is more expensive than general-purpose hardware, so incorporating a limited number of problem-specific computing resources into a computer system has a negative impact on keeping system costs low. Designing and producing a dedicated computer is extremely expensive in terms of engineering time and hardware costs. When dedicated hardware is used to improve computing performance, the performance advantage decreases as the need for computing performance changes. In the prior art, as the need for computing performance changes, new dedicated hardware or new dedicated systems are designed and manufactured, resulting in repetitive expenditures of undesirably high non-reusable design and manufacturing costs. Therefore, if a calculation resource dedicated to a particular type of problem is used, the available silicon resource will be used inefficiently when the degree of calculation changes. Therefore, an attempt to improve calculation performance using dedicated hardware for the reasons described above is undesirable.
[0005]
In the past, various attempts have been made to improve computational performance using reprogrammable or reconfigurable hardware and to maximize the applicability of problem types. The first such prior art approach is by a downloadable microcode computer architecture. In a downloadable microarchitecture, the functionality of fixed non-reconfigurable hardware resources can be selectively changed by using specific versions of microcode. An example of such an architecture is the IBM system / 360. Since the basic computing hardware itself of such prior art systems is not reconfigurable, such systems do not provide optimized computing performance when considering a wide variety of problems.
[0006]
A second prior art approach for improving computational performance and maximizing the applicability of problem types is to use reconfiguration hardware coupled to a non-reconfigurable host processor or host system. . In this prior art approach, it is most common to utilize one or more reconfiguration processors coupled to a non-reconfigurable host. This approach can be categorized as an “Attached Reconfigurable Processor” (ARP) architecture in which a portion of the hardware in the processor set attached to the host can be reconfigured. Examples of current additive reconfigurable processor (ARP) systems that utilize a set of reconfigurable processors coupled to a host system include SPLASH-1 and SPLASH-2 designed by the Supercomputing Research Center (Bowie, MD) And WILDFIRE Custom Configurable Computer (commercial version of SPLASH-2) manufactured by Annapolis Micro Systems (Annapolis, Maryland) and ECV-1 manufactured by Virtual Computer Corporation (Reseda, California). In many computational problems, considerable time is spent executing relatively small portions of program code. In general, a reconfiguration computation accelerator is provided for such portions of program code using an additional reconfigurable processor (ARP) architecture.
[0007]
[Problems to be solved by the invention]
Unfortunately, computational models based on one or more reconstructed computational accelerators have significant drawbacks as described in detail below.
[0008]
<First drawback>
The first drawback of the Additive Reconfigurable Processor (ARP) architecture is that the Additive Reconfigurable Processor (ARP) system attempts to perform optimal production of a specific algorithm of the reconfigurable hardware at a specific time Occur.
[0009]
For example, the design policy behind Virtual Computer Corporation's ECV-1 is to convert that particular algorithm to a particular configuration of reconfigurable hardware sources to provide optimal computational performance for that particular algorithm. Is. Reconfiguration hardware resources are used only for the purpose of providing optimal capabilities for a particular algorithm. The use of reconfigurable hardware resources for general purposes such as managing instruction execution is avoided. Thus, for a given algorithm, the reconfiguration hardware resources are considered from the overall picture of the individual gates combined for optimal performance.
[0010]
Some additional reconfigurable processor (ARP) systems are programming in which the “program” includes both conventional program instructions and dedicated instructions that define how the various reconfigurable hardware resources are interconnected. Rely on the model. Since the Additional Reconfigurable Processor (ARP) system considers the reconfigurable hardware resources in a unique way appropriate to the gate level algorithm, these dedicated instructions provide detailed information on the characteristics of each reconfigurable hardware resource used. Content and a method for reconfiguring hardware resources to be combined with other reconfigurable hardware resources must be provided. This complicates the program. In order to reduce programming complexity, attempts have been made to utilize programming models that include both conventional high-level programming language instructions and high-level dedicated instructions in the program. In other words, in current additive reconfigurable processor (ARP) systems, attempts have been made to use a compilation system that can compile both high-level programming language instructions and the above high-level dedicated instructions. The target output of such a compile system is assembly language code for conventional high-level programming language instructions, and hardware description language (HDL) for dedicated instructions. Unfortunately, it is an NP hard problem to automatically determine a set of reconfigurable hardware resources and interconnection schemes to obtain optimal computing performance for the particular algorithm under consideration. The long-term goal of some additive reconfigurable processor (ARP) systems is to develop a compilation system that can compile algorithms directly into an optimized interconnection scheme for a set of gates. However, developing such a compilation system is a very difficult task, especially when considering multiple types of algorithms.
[0011]
<Second disadvantage>
A second drawback of the additional reconfigurable processor (ARP) architecture is that the additional reconfigurable processor (ARP) device performs multiple reconfiguration logic to perform the computational work associated with the algorithms that make up the additional reconfigurable processor (ARP) device. It happens to be distributed throughout the device.
[0012]
For example, for an additional reconfigurable processor (ARP) device implemented using a set of field programmable logic circuits (FPGAs) and configured to implement a parallel multiplication accelerator, the computational work associated with parallel multiplication Are distributed throughout the field programmable logic (FPGA). Thus, the size of the algorithm that can construct an additional reconfigurable processor (ARP) device is limited by the number of reconfigurable logic devices present. Similarly, the maximum data set size that can be handled by an additional reconfigurable processor (ARP) device is also limited. Because some algorithms have data dependencies, testing the source code does not necessarily explicitly indicate the limits of an additional reconfigurable processor (ARP) device. In general, data dependency algorithms are avoided.
[0013]
In addition, since an additional reconfigurable processor (ARP) architecture is disclosed that distributes computational work across multiple reconfigurable logic units, reconfiguration is done together to include new or slightly modified algorithms. There is a need. That is, the multiple reconfiguration logic device must be reconfigured. This limits the maximum rate at which reconfiguration can be performed for another problem or cascaded secondary problems.
[0014]
<Third drawback>
A third drawback of the additive reconfigurable processor (ARP) architecture arises because one or more portions of program code are executed on the host.
[0015]
That is, an additional reconfigurable processor (ARP) device is not an independent computing system itself and does not execute the entire program. This requires interaction with the host. Because some program code is executed on a non-reconfigurable host, available silicon resources are not utilized to the maximum extent in the program execution time frame. In particular, during execution of instructions by the host, the silicon resources of the additional reconfigurable processor (ARP) device are idle or in an inefficient utilization state. Similarly, when an additional reconfigurable processor (ARP) device processes data, the use of silicon resources at the host is largely inefficient. In order to easily execute all the multiple programs, the silicon resources in the system must be grouped into resources that can be easily reused. As described above, an additional reconfigurable processor (ARP) system treats reconfigurable hardware resources as a set of gates that are optimally interconnected for the implementation of a particular algorithm at a particular time. Therefore, because an algorithm must have some degree of independence to be reusable, an additional reconfigurable processor (ARP) system is a resource that can easily reuse a specific set of reconfigurable hardware resources for each algorithm. Does not provide a means to treat
[0016]
An additional reconfigurable processor (ARP) device cannot handle a currently executing host program as data and cannot generally adapt itself to a computing environment. An additional reconfigurable processor (ARP) device is not designed to simulate itself by executing its own host program. In addition, an additional reconfigurable processor (ARP) device is designed to compile its own hardware description language (HDL) or application program against itself, directly using the reconfigurable hardware resources that are constructed. Not. Thus, additional reconfigurable processor (ARP) devices are architecturally limited with respect to an independent computation model that discloses independence from the host processor.
[0017]
An additional reconfigurable processor (ARP) device functions as a computational accelerator and generally cannot perform independent input / output (I / O) processing. Typically, additional reconfigurable processor (ARP) devices require host interaction for input / output processing. Therefore, the performance of an additional reconfigurable processor (ARP) device may be limited for input and output. However, those skilled in the art will appreciate that an additional reconfigurable processor (ARP) device can be configured to accelerate certain I / O problems. However, since the entire additional reconfigurable processor (ARP) device is configured for a single specific problem, the additional reconfigurable processor (ARP) device balances input / output processing and data processing without adversely affecting each other. I can't take it. In addition, additional reconfigurable processor (ARP) devices do not provide a means for interrupt handling. Since an additional reconfigurable processor (ARP) device is aimed at maximizing computational acceleration, the disclosure relating to an additional reconfigurable processor (ARP) does not mention such an interrupt mechanism and interrupts. Has a negative impact on computational acceleration.
[0018]
<4th fault>
A fourth disadvantage of the additive reconfigurable processor (ARP) architecture arises from the existence of software applications with inherent data parallelism that are difficult to utilize using additive reconfigurable processor (ARP) devices.
[0019]
A hardware description language (HDL) compiled application is one such example when netname symbol derivation of a very large netlist is required.
[0020]
<5th fault>
A fifth drawback of the additional reconfigurable processor (ARP) architecture is that it is basically a single instruction stream multiple data stream (SIMD) computer architecture model.
[0021]
Thus, an additive reconfigurable processor (ARP) architecture is not as efficient as an architecture compared to one or more innovative prior art non-reconfigurable systems. An additional reconfigurable processor (ARP) system, for each specific configuration example, for the same degree of computational power that available reconfigurable hardware can provide, for a fraction of the program execution process, primarily for arithmetic calculations. Only the arithmetic logic of is reflected. In contrast, in the 1971 Fairchild SYMBOL machine system design, the entire computer uses a unique hardware context for each aspect of program execution. As a result, SYMBOL, including the host portion disclosed by the Additional Reconfigurable Processor (ARP) system, contained all the components for the computer's system application.
[0022]
<Other disadvantages>
The additional reconfigurable processor (ARP) architecture has other drawbacks.
[0023]
For example, an additional reconfigurable processor (ARP) device does not have an effective means for providing independent timing to multiple reconfigurable logic devices. Similarly, cascaded additional reconfigurable processor (ARP) devices do not have an effective clock distribution means to provide independently timed devices. As another example, it may be difficult to accurately correlate execution time with source code statements attempting acceleration. To accurately calculate the net system clock rate, you must model an additional reconfigurable processor (ARP) device using computer-aided design (CAD) after hardware description language (HDL) compilation. However, reaching these basic parameters is a time consuming process.
[0024]
An equally important problem with traditional architectures is that they use virtual or shared memory. The disclosure is that it uses an integrated address space, which requires more complex addressing operations, thus slowing memory access and reducing efficiency. For example, using virtual memory to access individual bits of a memory device in the system, the physical address space of the memory must first be partitioned into logical addresses, and then the virtual addresses must be mapped to the logical addresses. In this way, each bit of the memory can finally be accessed. Furthermore, in a shared memory system, the memory operation is further complicated because the processor typically performs an address verification operation before allowing access to the memory. Finally, the processor must coordinate (arbitrate) among multiple processes attempting to access the same area of memory simultaneously by providing some sort of prioritization system.
[0025]
Many conventional systems use memory management units (MMUs) to convert logical addresses to virtual addresses, etc. to address the many problems that arise from using shared memory and virtual memory. Most of the memory management functions are running. However, memory access operations are further complicated by memory management system (MMU) / software interactions. Furthermore, the memory management system (MMU) has a very limited number of operations that can be performed. The memory management system (MMU) cannot handle interrupts, cannot queue messages in a queue, and cannot perform complex addressing operations, so all must be performed by the processor . The use of shared memory or virtual memory systems in computer architectures with multiple parallel processors further exacerbates the disadvantages described above. Not only must the hardware / software interaction be managed as described above, but the coherency and consistency of the data in the memory depending on the multiple processors attempting to access the shared memory, software and hardware Must be maintained by both. When a processor is added, it becomes more difficult to convert a virtual address to a logical address. This complexity in memory access operations inevitably reduces system capacity, and the capacity drops as the number of processors increases and the system scales up.
[0026]
An example of a conventional system is a cache coherent, non-uniform memory access (ccNUMA) computer architecture. Non-uniform memory access (ccNUMA) machines use complex and expensive hardware such as cache controllers and crossbar switchers, and this memory is independent of each other even though it is actually shared by multiple processors. The phantom (virtual space) of a single address space is maintained for the CPU. Non-uniform memory access (ccNUMA) is somewhat extensible, but this extensibility is achieved by adding hardware to tightly couple the processors in the system. This type of system is used in computing environments where a single program image is shared that requires very wide bandwidth for shared memory I / O operations, as in the case of finite element grids in scientific computing. And more advantageous. Furthermore, non-uniform memory access (ccNUMA) is not useful in systems where the processor characteristics are not similar to each other. In a non-uniform memory access (ccNUMA) architecture, each added processor must be of the same type as the existing processor. Therefore, non-uniform memory access (ccNUMA) architectures are not an effective solution in systems where the processor is optimized to perform different functions and operates differently. Finally, in conventional systems, only standard memory addressing schemes are used to address memory in the system.
[0027]
What is needed is a means for addressing memory in a parallel computing environment that provides scalable, straightforward addressing and has little impact on system performance. .
[0028]
[Problems to be solved by the invention]
A first invention is a metaaddressing architecture for specifying a local memory destination for a data packet of a dynamic reprogrammable processing machine to solve the above-mentioned problem,When the first memory device and the first memory device are coupled to each other and receive a predetermined command, it is determined whether the received command is a command requesting a remote operation including remote operation information, and the instruction includes the remote operation information If it is determined that the command is a request for remote computation, the remote computation information included in the command is stored in the first memory device, and the memory address in the first memory device in which the remote computation information is stored is included. A dynamic reprogrammable processing machine that generates a conditional instruction and an unconditional instruction received from the first dynamic reprogrammable processing machine, and remote operation information is received from the first memory device based on a memory address included in the unconditional instruction The purpose of searching and indicating the destination address of the data packet generated based on the remote calculation informationGeographic address andThe purpose of indicating the address of the second memory device to which data is written at the destinationlocalmemoryMeta address including addressBased on remote calculation informationGenerate andGenerates a data packet containing a meta address based on remote computation informationAn addressing machine;FirstAddressing machineAnd a second addressing machine indicated in the destination geographic address as the data destinationCombined withA data packet generated by the first addressing machine is received from the first addressing machine andIncluded in meta addressthe purposeAccording to geographic addressThe firstAddressing machineAnd a second addressing machineIn betweenMutualAnd an interconnection device for routing data.
[0029]
In the second invention, the dynamic reprogrammable processing machine executes processing in accordance with the received instruction when the received instruction is not an instruction requesting remote operation..
[0030]
In a third aspect, when the second addressing machine receives the data packet generated by the first addressing machine, the second addressing machine decodes the meta address included in the data packet into the destination geographic address and the destination local memory address. If the address decoder that compares the geographic address indicating the address of the second addressing machine and the decoded target geographic address matches the result of the comparison by the address decoder, and the geographic address matches the target geographic address, the data A controller for transmitting the packet to a second dynamic reprogrammable processing machine;It comprises.
[0031]
The fourth invention further comprises an architecture description memory device coupled to the second dynamic reprogrammable processing machine for storing a geographic address indicating an address for the coupled second dynamic reprogrammable processing machine.It has.
[0032]
According to a fifth aspect, the second addressing machine further includes an interrupt handler coupled to the input / output device, and the interrupt handler verifies the validity of the interrupt request with an identification device for identifying the interrupt request A comparator for comparing the identified interrupt request with a stored list of interrupt requests, and an interrupt logic for processing interrupt requests validated according to stored interrupt processing instructionsAnd.
[0033]
In the sixth invention, the meta address is 80 bits wide, the destination geographic address is 16 bits wide, and the local address is 64 bits wide.
[0034]
A seventh invention is a metaaddressing method for designating a local memory destination for a data packet of a dynamic reprogrammable processing machine, wherein when a predetermined instruction is received, the received instruction includes remote operation information. If the command is a command requesting remote calculation including remote calculation information, the remote calculation information included in the command is stored in the first memory device, and the remote calculation information is stored. An unconditional instruction generation step for generating an unconditional instruction including a memory address in the first memory device in which is stored by a dynamic reprogrammable processing machine, and an unconditional instruction generated in the unconditional instruction generation step is dynamically generated Remote operation information is received from the first memory device based on the memory address received from the reprogrammable processing machine and included in the unconditional instruction. A meta address including a destination geographic address indicating a destination address of a data packet generated based on the remote calculation information and a destination local memory address indicating a second memory device address at which data is written at the destination. A data packet generation step for generating a data packet including a meta address by an addressing machine based on the remote calculation information, and a data packet generated at the data packet generation step, the first addressing machine Between the first addressing machine and the second addressing machine indicated in the destination geographic address as the destination of the data according to the destination geographic address contained in the meta-address in the data packet Data routing steps To.
[0035]
In an eighth aspect of the present invention, in the unconditional instruction generation step, the dynamic reprogrammable processing machine executes a process according to the received instruction when the received instruction is not an instruction requesting remote operation.
[0036]
In a ninth aspect, when the second addressing machine receives the data packet generated by the first addressing machine, the metaaddress included in the data packet is decoded into the destination geographic address and the destination local memory address. If the result of the comparison by the address decoding step for comparing the geographical address indicating the address of the second addressing machine with the decrypted target geographical address and the comparison by the address comparing step are the same, the data Transmitting the packet to a second dynamic reprogrammable processing machine;It has.
[0037]
In a tenth aspect, a geographic address indicating an address for a second dynamic reprogrammable processing machine is stored in an architecture description memory device coupled to the second dynamic reprogrammable processing machine.
[0038]
According to an eleventh aspect of the invention, an interrupt handler coupled to an input / output device included in the second addressing machine verifies an interrupt request identified by the identification step for identifying the interrupt request and the interrupt request. A comparison step for comparing the identified interrupt request with a stored list of interrupt requests, and for processing an interrupt request whose validity has been confirmed based on a comparison result of each step compared to the previous period according to a stored interrupt processing instruction. Steps.
[0039]
In the twelfth aspect, the meta address is 80 bits wide, the destination geographic address is 16 bits wide, and the local address is 64 bits wide..
[0043]
DETAILED DESCRIPTION OF THE INVENTION
<Overview>
The present invention includes a set of S machines, a T machine corresponding to each S machine, a general-purpose interconnect matrix (GPIM), a set of input / output T machines, and a set of input / outputs. The device and the master time base device form a system for scalable, parallel, dynamic reconfiguration computation. Each S machine is a dynamic reconfigurable computer including a memory, a first local time base device, and a dynamically reconfigurable processing unit (DRPU). The dynamic reconfiguration processing unit (DRPU) includes a reprogrammable logic unit configured as an instruction fetch unit (IFU), a data arithmetic unit (DOU), and an address arithmetic unit (AOU). Which are selectively reconfigured during program execution in response to the selection of a reconfiguration interrupt or a reconfiguration instruction embedded in a set of program instructions, respectively. Each reconfiguration interrupt and each reconfiguration instruction is a configuration data set that specifies a dynamic reconfiguration processor (DRPU) hardware organization that is optimized for the implementation of a specific instruction set architecture (ISA). Refer back to. An instruction fetch unit (IFU) instructs a reconfiguration operation, an instruction fetch / decode operation, and a memory access operation, and transmits a control signal to a data operation unit (DOU) and an address operation unit to facilitate the execution of the instruction. (AOU). The data arithmetic unit (DOU) performs data arithmetic, and the address arithmetic unit (AOU) performs address arithmetic. Each T machine is a data transfer device including a common interface control unit (CICU), one or more interconnected input / output devices, and a second local time base device. A general purpose interconnection matrix (GPIM) is an extensible interconnection network that facilitates parallel communication between T machines. This one set of T machines and general interconnection matrix (GPIM) facilitates parallel communication between S machines. The T machine also controls the transfer of data between the S machines in the network and provides the required addressing operations. The meta address is used to provide each S machine with extensible bit addressing capabilities.
[0044]
<Specific embodiment>
FIG. 1 is a block diagram of a preferred embodiment of a system 10 for scalable, parallel, dynamic reconfiguration computation constructed in accordance with the present invention. The system 10 includes at least one S
[0045]
[0046]
As described in detail below, each
[0047]
In the exemplary embodiment, each
[0048]
In the preferred embodiment, system 10 includes
[0049]
In the preferred embodiment, the first local
[0050]
The
[0051]
In the exemplary program list 50, the first reconfiguration instruction appears at the beginning of the first
[0052]
In the present invention, a specific instruction set architecture (ISA) is classified as an inner loop instruction set architecture (ISA) or an outer loop instruction set architecture (ISA) according to the number and type of instructions that the instruction set architecture (ISA) contains. Can do. An instruction set architecture (ISA) that includes several instructions and is useful for performing general purpose operations is the outer loop instruction set architecture (ISA), while it contains relatively few instructions and is directed to the execution of certain types of instructions. The instruction set architecture (ISA) is the inner loop instruction set architecture (ISA). The outer loop instruction set architecture (ISA) is directed to the execution of general purpose operations and is most useful when sequential execution of program instructions is desired. The execution performance of the outer loop instruction set architecture (ISA) is preferably characterized by a clock cycle for each instruction executed. In contrast, the Inner Loop Instruction Set Architecture (ISA) is most useful when parallel execution of program instructions is desired because it is directed to the execution of specific types of instructions. The execution performance of an inner loop instruction set architecture (ISA) is preferably characterized by instructions executed per clock cycle, or by computational results obtained per clock cycle.
[0053]
Those skilled in the art will appreciate that the previous description of sequential and parallel execution of program instructions relates to the execution of program instructions within a single dynamic reconfiguration processor (DRPU) 32. When each program instruction sequence is executed by a specific dynamic reconfiguration processor (DRPU) 32 due to the presence of the
[0054]
In the preferred embodiment, each instruction set architecture (ISA) and its corresponding internal dynamic reconfiguration processor (DRPU) hardware organization is a specific class of computation for a set of available reconfigurable hardware resources. Designed to provide optimal computational performance for the above problems. As described above and as described in detail below, the internal dynamic reconfiguration processor (DRPU) hardware organization corresponding to the outer loop instruction set architecture (ISA) optimizes the sequential execution of program instructions. Preferably it is done. Also, the internal dynamic reconfiguration processor (DRPU) hardware organization corresponding to the internal loop instruction set architecture (ISA) is preferably optimized for parallel execution of program instructions. An exemplary generalized external loop instruction set architecture (ISA) is shown in reference material A, and an exemplary internal loop instruction set architecture (ISA) dedicated to convolution is shown in reference material B.
[0055]
Except for each reconfiguration instruction, the exemplary program list 50 of FIG. 3 is preferably composed of conventional high-level language sentences, for example, sentences written according to the C programming language. Those skilled in the art will appreciate that including a series of one or more reconfiguration instructions in a series of program instructions requires a modified compiler to accommodate the reconfiguration instructions. FIG. 4 is a flowchart of a prior art compile operation performed during compilation of a series of program instructions. Here, the compile operation of the prior art is substantially equivalent to that executed by the GNU C Compiler (GCC) created by the Free Software Foundation (Cambridge, Mass.). Those skilled in the art will appreciate that the prior art compilation operations described below can be easily generalized for other compilers. The prior art compilation operation begins at step 500 where the compiler front end selects the next high level statement from a series of program instructions. Next, in step 502, the compiler front end generates intermediate level code corresponding to the selected high level sentence. In the case of the GNU C compiler (GCC), this corresponds to a register transfer level (RTL) statement. After step 502, in
[0056]
If at
[0057]
The present invention preferably includes a compiler for dynamic reconfiguration computation. 5 and 6 are flowcharts of preferred compilation operations performed by the compiler for dynamic reconfiguration computation. A preferred compilation operation begins at
[0058]
At
[0059]
If, in
[0060]
In the method described above, the compiler for dynamic reconfiguration computation selectively and automatically generates assembly language statements according to a multiple instruction set architecture (ISA) during a compile operation. In other words, during compilation, compilers for dynamic reconfiguration computations compile a set of program instructions according to different instruction set architectures (ISAs). The compiler for dynamic reconfiguration computation is preferably a conventional compiler that has been modified to perform the preferred compilation operations as described above with reference to FIGS. Those skilled in the art will appreciate that the required modifications are not complex, but such modifications are not obvious in view of prior art compilation techniques and prior art reconstruction computation techniques.
[0061]
FIG. 7 is a block diagram of a preferred embodiment of the dynamic reconfiguration processor (DRPU) 32. The dynamic reconfiguration processing unit (DRPU) 32 includes an instruction fetch unit (IFU) 60, a data arithmetic unit (DOU) 62, and an address arithmetic unit (AOU) 64. Each of the instruction fetch unit (IFU) 60, the data arithmetic unit (DOU) 62, and the address arithmetic unit (AOU) 64 includes a timing input coupled to the first
[0062]
The dynamic reconfiguration processor (DRPU) 32 is a field such as a reconfiguration logic device or a reprogrammable logic device, such as Xilinx XC4013 (Xilinx, Inc., San Jose, Calif.) Or AT & T ORCA IC07 (AT & T Microelectronics, Allentown, Pennsylvania). It is preferably implemented using a programmable gate array (FPGA). A reprogrammable logic unit can have multiple,
1) Selectively Reprogrammable Logic Blocks or Configurable Logic Blocks (CLB),
2) Selective reprogrammable input / output blocks (IOB: I / O Blocks);
3) a selective reprogrammable interconnect structure;
4) data storage resources;
5) a ternary buffer resource;
6) Wired logic function capability;
It is preferable to provide. Each logic block (CLB) preferably includes a selective reconfiguration circuit for generating logic functions, storing data, and performing signal routing. One skilled in the art will recognize that the reconfigurable data storage circuit is one or more data storage blocks (DSBs) separate from the logic block (CLB), depending on the exact design of the reprogrammable logic device in use. I will admit that it may be included. Here, the reconfiguration data storage circuit in the field programmable gate array (FPGA) is incorporated in the logic block (CLB). That is, the existence of a data storage block (DSB) is not assumed. Those skilled in the art will recognize that one or more components that utilize the logical block (CLB) based reconfiguration data storage circuit described above are data storage blocks (DSBs) if a data storage block (DSB) is present. It will be appreciated that a base circuit can also be used. Each input / output block (IOB) preferably includes a selective reconfiguration circuit for transferring data between a logic block (CLB) and a field programmable gate array (FPGA) output pin. The configuration data set defines a dynamic reconfiguration processor (DRPU) hardware configuration or organization by specifying functions to be executed within a logical block (CLB), and
1) Within a logical block (CLB)
2) Between logical blocks (CLB),
3) In the input / output block (IOB),
4) Between input / output blocks (IOBs), and
5) Between logical block (CLB) and input / output block (IOB)
Determine the mutual coupling. Those skilled in the art will recognize that the number of bits in each of the
[0063]
In the preferred embodiment, the instruction fetch unit (IFU) 60, the data arithmetic unit (DOU) 62, and the address arithmetic unit (AOU) 64 are each dynamically reconfigurable. Therefore, the internal hardware configuration can be selectively changed during program execution. The instruction fetch unit (IFU) 60 instructs a command fetch / decode operation, a memory access operation, and a dynamic reconfiguration processor (DRPU) reconfiguration operation, and a data operation unit for easily executing the instruction. Control signals are sent to (DOU) 62 and address arithmetic unit (AOU) 64. The data arithmetic unit (DOU) 62 performs an operation related to data calculation, and the address arithmetic unit (AOU) 64 executes an operation related to address calculation. The internal structures and operations of the instruction fetch unit (IFU) 60, the data operation unit (DOU) 62, and the address operation unit (AOU) 64 will be described in detail below.
[0064]
FIG. 8 is a block diagram of a preferred embodiment of an instruction fetch unit (IFU) 60. An instruction fetch unit (IFU) 60 includes an instruction state sequencer (ISS) 100, an
[0065]
1) An input unit of the operation
2) Input section of register file (RF) address register set 118;
3) an output coupled to the input of the constant register set 120;
Is included. The register file (RF) address register set 118 and the constant register set 120 each include an output unit that forms the third
[0066]
The
1) the criteria for the default configuration data set;
2) criteria for an acceptable configuration data set list;
3) Criteria for configuration data sets corresponding to the currently considered instruction set architecture (ISA), that is, criteria for configuration data sets that define the current dynamic reconfiguration processor (DRPU) configuration;
4) A cross-coupled address list identifying one or more cross-coupled I /
5) a set of interrupt response signals that specify interrupt latency and interrupt accuracy information that defines how the instruction fetch unit (IFU) 60 responds to interrupts;
And 6) a memory access constant that defines an atomic memory address increment. In the preferred embodiment, each configuration data set implements the
[0067]
In the present invention, the
[0068]
Each dynamic reconfiguration processor (DRPU) configuration is preferably provided by a configuration data set that defines a specific hardware organization for production of a corresponding instruction set architecture (ISA). In the preferred embodiment, the instruction fetch unit (IFU) 60 includes the above components regardless of the dynamic reconfiguration processor (DRPU) configuration. At the basic level, the functionality provided by each component within the instruction fetch unit (IFU) 60 is independent of the instruction set architecture (ISA) currently under consideration. However, in the preferred embodiment, the detailed structure and functionality of one or more components of the instruction fetch unit (IFU) 60 will vary depending on the characteristics of the instruction set architecture (ISA) in which it is configured. . In the preferred embodiment, the structure and functionality of the
[0069]
The process control register set 122 stores signals and data used by the instruction state sequencer (ISS) 100 during instruction execution. In the preferred embodiment, the process control register set 122 includes a register for storing a process control word, a register for storing an interrupt vector, and a register for storing a reference to a configuration data set. . The process control word preferably includes a plurality of condition flags that can be selectively set or reset based on conditions that occur during instruction execution. In addition, the process control word includes a plurality of transition control signals that define one or more ways in which interrupts can be implemented (this is described in detail below). In the preferred embodiment, the process control register set 122 is implemented as a set of logical blocks (CLB) configured for data storage and gating logic.
[0070]
The instruction state sequencer (ISS) 100 controls the operations of the fetch
[0071]
As shown in FIG. 9, the state diagram also includes state I. This state is defined as the interrupt execution state. In the present invention, the instruction state sequencer (ISS) 100 receives an interrupt notification signal from the interrupt
[0072]
As the instruction state sequencer (ISS) 100 proceeds to state I, the instruction state sequencer (ISS) 100 preferably accesses the process control register set 122 to set the interrupt masking flag and retrieve the interrupt vector. After receiving the interrupt vector, the instruction state sequencer (ISS) 100 preferably performs a conventional subroutine jump to the interrupt handler specified by the interrupt vector to implement the current interrupt.
[0073]
In the present invention, the reconfiguration of the dynamic reconfiguration processor (DRPU) 32 is
1) a reconfiguration interrupt asserted on
2) Execution of reconfiguration instructions in a series of program instructions
Will start according to. In the preferred embodiment, a subroutine jump to the reconfiguration handler is performed whether a reconfiguration interrupt is performed or a reconfiguration instruction is executed. The reconfiguration handler preferably saves program state information and sends a configuration data set address and a reconfiguration signal to the
[0074]
When the current interrupt is not a reconfiguration interrupt, the instruction state sequencer (ISS) 100 proceeds to the next state indicated by the transition control signal when the interrupt is implemented, thereby resuming and completing the instruction execution cycle. Or start.
[0075]
In the preferred embodiment, the set of states supported by the instruction state sequencer (ISS) 100 depends on the characteristics of the instruction set architecture (ISA) in which the dynamic reconfiguration processor (DRPU) 32 is configured. Thus, state M does not exist for an instruction set architecture (ISA) in which one or more instructions can execute in one clock cycle, as in a typical inner loop instruction set architecture (ISA). As shown, the state diagram of FIG. 9 preferably defines the states supported by the instruction state sequencer (ISS) to implement the general purpose external loop instruction set architecture (ISA). For implementation of the inner loop instruction set architecture (ISA), the instruction state sequencer (ISS) 100 preferably supports multiple states F, D, E, and W in parallel. As a result, pipeline control of instruction execution can be easily performed in a manner that is easily understood by those skilled in the art. In the preferred embodiment, the instruction state sequencer (ISS) 100 is implemented as a logical block (CLB) based state machine that supports the state or subset of states described above according to the currently considered instruction set architecture (ISA). .
[0076]
The interrupt
[0077]
In the preferred embodiment, the level of interrupt latency that the interrupt response signal, and thus the transition control signal specifies, depends on the current instruction set architecture (ISA) in which the dynamic reconfiguration processor (DRPU) 32 is configured. For example, an instruction set architecture (ISA) for high-performance real-time operation control requires a quick and predictable interrupt response capability. Accordingly, the configuration data set corresponding to such an instruction set architecture (ISA) preferably includes an interrupt response signal indicating that a low latency interrupt is required. The corresponding transition control signal preferably identifies a plurality of instruction state sequencer (ISS) states as interruptible. Thus, the instruction execution cycle can be interrupted by an interrupt before the instruction execution cycle is completed. Unlike the instruction set architecture (ISA) for real-time operation control, the image set convolution operation instruction set architecture (ISA) has an interrupt response capability that maximizes the number of convolution operations executed per unit time. is required. The configuration data set corresponding to the image convolution instruction set architecture (ISA) preferably includes an interrupt response signal that specifies that a long latency interrupt is required. The corresponding transition control signal preferably identifies state W as interruptible. When the instruction state sequencer (ISS) 100 is configured to implement an instruction set architecture (ISA) for image convolution operations and supports a plurality of states F, D, E, and W in parallel, the transition control signal is in each state. Preferably, W is identified as interruptible and further specifies that interrupt execution should be delayed until each parallel instruction execution cycle has completed its state W operation. This ensures that all instructions are executed before the interrupt is implemented, thereby maintaining an appropriate pipeline execution capability level.
[0078]
Similar to the interrupt latency level, the interrupt accuracy level specified by the interrupt response signal also depends on the instruction set architecture (ISA) in which the dynamic reconfiguration processor (DRPU) 32 is configured. For example, if state M is determined to be interruptible for an external loop instruction set architecture (ISA) that supports interruptable multi-cycle operations, the interrupt response signal specifies that an accurate interrupt is required. Is preferred. Thus, the transition control signal specifies that an interrupt received in state M should be treated as an accurate interrupt so that the multicycle operation can be successfully restarted. As another example, for an instruction set architecture (ISA) that supports defect-free pipeline arithmetic, the interrupt response signal preferably specifies that an inaccurate interrupt is required. The transition control signal then specifies that an interrupt received in state W should be treated as an incorrect interrupt.
[0079]
For any instruction set architecture (ISA), the interrupt response signal is defined and programmed by a portion of the corresponding configuration data set of the instruction set architecture (ISA). By generating programmable interrupt response signals and corresponding transition control signals, the present invention makes it easy to implement an optimal interrupt scheme for each instruction set architecture (ISA). Those skilled in the art will appreciate that most prior art computer architectures cannot flexibly specify interrupt capabilities, namely enabling programmable state transitions, programmable interrupt latency, and programmable interrupt accuracy. In the preferred embodiment, the interrupt
[0080]
The fetch
[0081]
Decoding
[0082]
The operation code storage register set 116 temporarily stores each operation code output by the
[0083]
Register file (RF) address register set 118 and constant register set 120 temporarily store each register file and each constant output by
[0084]
The
[0085]
FIG. 11 is a block diagram of a preferred embodiment of the data
[0086]
The
[0087]
For the outer loop instruction set architecture (ISA), the data processing unit (DOU) 62 is preferably configured to perform sequential operations on the data. FIG. 12 is a block diagram of a first exemplary embodiment of a data processing unit (DOU) 61 configured for the implementation of a general purpose external loop instruction set architecture (ISA). In general purpose external loop instruction set architecture (ISA), hardware configured to perform mathematical operations such as multiplication, addition, subtraction, Boolean operations such as AND, OR, NOT, shift operations, and rotation operations. Wear is necessary. Thus, for the implementation of the general purpose external loop instruction set architecture (ISA), the data
[0088]
Similar to the data input section of the
[0089]
In order to facilitate the execution of data arithmetic instructions, the instruction fetch unit (IFU) 60 provides a data arithmetic unit (DOU) control signal and a register file (RF) when the instruction state sequencer (ISS) is in state E or M. ) An address signal and a constant signal are issued to the data arithmetic unit (DOU) 61. The
1) routing of data between the
2) routing the results from the ALU /
3) routing the data stored in the
4) Routing constants from the instruction fetch unit (IFU) 60 to the
I do. As described above, when either the
[0090]
FIG. 13 is a block diagram of a second exemplary embodiment of a data processing unit (DOU) 63 configured for the implementation of an inner loop instruction set architecture (ISA). In general, the inner loop instruction set architecture (ISA) supports relatively few dedicated operations and is preferably used to perform a common set of operations on large data sets. Thus, optimal computational performance for an inner loop instruction set architecture (ISA) is obtained with hardware configured to perform operations in parallel. Thus, in the second exemplary embodiment of data processing unit (DOU) 63,
1) a set of conventional flip-flop arrays 192 (each including a data input, a data output, and a control input);
2) a data selector 190 (including a control input unit, a data input unit, and a number of data output units corresponding to the flip-flop array 192);
Is included. Data processing unit (DOU)
[0091]
The data input of the
[0092]
In operation,
1) Route data from
2) Route the result from the multiplier /
3) Route constants from instruction fetch unit (IFU) 60 to
Those skilled in the art will recognize that the inner loop instruction set architecture (ISA) includes a set of “built-in” constants. In such an internal loop instruction set architecture (ISA) implementation, the storage /
[0093]
FIG. 14 is a block diagram of a preferred embodiment of an address arithmetic unit (AOU) 64. The address arithmetic unit (AOU) 64 performs an operation on the address according to the address arithmetic unit (AOU) control signal, the register file (RF) address, and the constant received from the instruction fetch unit (IFU) 60. The address arithmetic unit (AOU) 64 includes an address arithmetic unit (AOU)
[0094]
The
[0095]
FIG. 15 is a block diagram of a first exemplary embodiment of an address arithmetic unit (AOU) 65 configured for the implementation of a general purpose external loop instruction set architecture (ISA). The general purpose external loop instruction set architecture (ISA) requires hardware to perform operations such as addition, subtraction, increment, and decrement on the contents of the program counter and address stored in the storage /
[0096]
The input unit of the
[0097]
In order to facilitate the execution of address arithmetic instructions, the instruction fetch unit (IFU) 60 provides an address arithmetic unit (AOU) control signal and a register file (RF) address when the instruction state sequencer (ISS) is in state E or M. And a constant are issued to the address arithmetic unit (AOU) 64. The
1) Route addresses from
2) The result of the address calculation output by the
The address arithmetic unit (AOU)
[0098]
In the preferred embodiment, the
[0099]
FIG. 16 is a block diagram of a second exemplary embodiment of an address arithmetic unit (AOU) 66 configured for implementation of an inner loop instruction set architecture (ISA). The inner loop instruction set architecture (ISA) requires hardware to perform a very limited number of address operations and also maintains at least one source address pointer and a corresponding number of destination address pointers. Requires hardware. The types of inner loop processing that require a very limited number of address operations or one address operation include block operations, raster operations, or serpentine operations for image data, bit reversal operations, and operations on circular buffer data. Variable length data parsing operations. Here, one address operation, that is, increment operation is considered. Those skilled in the art will recognize that the hardware that performs the increment operation can also perform the decrement operation inherently, thereby providing additional addressing capabilities. In a second exemplary embodiment of address arithmetic unit (AOU) 66, storage /
[0100]
The input of
[0101]
In operation, the
1) Route addresses from
2) Route the contents of
The address arithmetic unit (AOU)
[0102]
In the preferred embodiment,
[0103]
A finite reconfiguration hardware resource must be allocated between each component of the dynamic reconfiguration processor (DRPU) 32. Since the number of reconfigurable hardware resources is limited, the maximum computational performance level achievable by the data arithmetic unit (DOU) 62 and address arithmetic unit (AOU) 64, for example, if they are assigned to the instruction fetch unit (IFU) 60 To affect. A method for allocating reconfigurable hardware resources between an instruction fetch unit (IFU) 60, a data arithmetic unit (DOU) 62, and an address arithmetic unit (AOU) 64 is an instruction set architecture implemented at any moment. It depends on the type of (ISA). As the instruction set architecture (ISA) becomes more complex, more reconfigurable hardware resources must be allocated to the instruction fetch unit (IFU) 60 to facilitate increasingly complex decoding and control operations, Less reconfigurable hardware resources are available between the data arithmetic unit (DOU) 62 and the address arithmetic unit (AOU) 64. Therefore, the maximum computational performance achievable by the data arithmetic unit (DOU) 62 and the address arithmetic unit (AOU) 64 decreases as the complexity of the instruction set architecture (ISA) increases. In general, the outer loop instruction set architecture (ISA) contains more instructions than the inner loop instruction set architecture (ISA), and its implementation is therefore considerably more complex in the decoding and control circuits. For example, an outer loop instruction set architecture (ISA) that defines a general purpose 64-bit processor would contain more instructions than an inner loop instruction set architecture (ISA) used only for data compression.
[0104]
FIG. 17 (a) shows the re-routing between the instruction fetch unit (IFU) 60, the data arithmetic unit (DOU) 62, and the address arithmetic unit (AOU) 64 for the outer loop instruction set architecture (ISA). It is a figure which shows the model allocation of a structure hardware resource. In an exemplary allocation of reconfigurable hardware resources for an external loop instruction set architecture (ISA), an instruction fetch unit (IFU) 60, a data arithmetic unit (DOU) 62, and an address arithmetic unit (AOU) 64 can each be used. Almost one third of the reconfigured hardware resources are allocated. When the dynamic reconfiguration processor (DRPU) 32 is to be reconfigured to implement an inner loop instruction set architecture (ISA), the number of instructions and types of address instructions supported by the inner loop instruction set architecture (ISA) Therefore, less reconfigurable hardware resources are required to implement the instruction fetch unit (IFU) 60 and the address arithmetic unit (AOU) 64. FIG. 17 (b) shows the re-routing between the instruction fetch unit (IFU) 60, the data arithmetic unit (DOU) 62, and the address arithmetic unit (AOU) 64 for the inner loop instruction set architecture (ISA). It is a figure which shows the model allocation of a structure hardware resource. In the exemplary allocation of reconfigurable hardware resources for an internal loop instruction set architecture (ISA), the instruction fetch unit (IFU) 60 is implemented using approximately 5-10% of the reconfigurable hardware resources and the address arithmetic unit ( AOU) 64 is implemented using approximately 10-25% of the reconfigurable hardware resources. Therefore, about 70-80% of the reconfigurable hardware resources can be used to implement the data processing unit (DOU) 62. This is because the internal structure of the data processing unit (DOU) 62 related to the inner loop instruction set architecture (ISA) is more complicated than the internal structure of the data processing unit (DOU) 62 related to the inner loop instruction set architecture (ISA). Which means that much higher performance can be achieved.
[0105]
Those skilled in the art will recognize that in another embodiment, the dynamic reconfiguration processor (DRPU) 32 can exclude the data arithmetic unit (DOU) 62 or the address arithmetic unit (AOU) 64. For example, in another embodiment, the dynamic reconfiguration processor (DRPU) 32 may not include an address arithmetic unit (AOU) 64. In that case, the data operation unit (DOU) 62 performs an operation on both the data and the address. Regardless of the particular dynamic reconfiguration processor (DRPU) embodiment discussed (above), a finite number of reconfiguration hardware to implement each component of the dynamic reconfiguration processor (DRPU) 32 You must allocate resources. The reconfiguration hardware resources are preferably allocated so that the optimal or near-optimal capability for the currently considered instruction set architecture (ISA) is achieved over the total space of available reconfiguration hardware resources.
[0106]
Those skilled in the art will recognize that the detailed structure of each component of the instruction fetch unit (IFU) 60, the data arithmetic unit (DOU) 62, and the address arithmetic unit (AOU) 64 is not limited to the embodiment described above. I will admit. For a given instruction set architecture (ISA), the corresponding configuration data set is the internal structure of each component in the instruction fetch unit (IFU) 60, data arithmetic unit (DOU) 62, and address arithmetic unit (AOU) 64. Are preferably defined to maximize computational performance for available reconfigurable hardware resources.
[0107]
FIG. 18 is a block diagram of a preferred embodiment of a T machine. The
[0108]
The second local
[0109]
The common interface controller (CICU) 302 directs the transfer of a message between its
[0110]
A common interface controller (CICU) 302 receives data and commands from its
1) Data read operation,
2) Data write operation,
3) Interrupt signal transfer including reconfiguration interrupt transfer;
Is included. The target interconnection address identifies the target interconnection I /
[0111]
In addition to receiving data and commands from its
[0112]
Each mutual coupling input /
[0113]
The interconnection I /
[0114]
[0115]
FIG. 20 is a block diagram of a preferred embodiment of the input /
[0116]
The third local
[0117]
The structure and function of the interconnection I /
[0118]
The common
1) Data request and
2) Confirm data transfer,
3) Interrupt signal transfer,
Is included. The target interconnection address identifies the target interconnection I /
[0119]
In addition to receiving data and commands from its corresponding input /
[0120]
The general purpose interconnection matrix (GPIM) 16 is a conventional interconnection mesh that facilitates point-to-point parallel message routing between the interconnection I /
[0121]
Therefore, the general purpose interconnection matrix (GPIM) 16 can easily route a plurality of messages between the interconnection I /
[0122]
In the above description, the various components of the present invention are preferably implemented using reconfigurable hardware resources. Manufacturers of reconfigurable logic devices have published guidelines for implementing conventional digital hardware, typically using reprogrammable hardware resources or reconfigurable hardware resources. For example, the 1994 Programmable Logic Device Data Book (xilinx, Inc., San Jose, California) includes the following application notes. That is, application note XAPP005.002 “register-based FIFO”, application note XAPP044.00 “high-performance RAM-based FIFO”, application note XAPP013.001 “use of carry-only logic in XC4000”, application note XAPP018.00 “XC4000” Adder and Counter Performance Estimation ", Application Note XAPP028.001" Frequency / Phase Comparator for Phase Locked Loop ", Application Note XAPP031.000" Using XC4000RAM ", Application Note XAPP036.001" 4 Port DRAM Controller La ... ", application note XAPP039.001" 18-bit pipeline accumulator " Are the respective application notes. The materials published by Xilinx include articles included in “XCELL,” a quarterly magazine for users of Xilinx programmable logic. For example, the third issue of 1994 (the 14th issue) contains a detailed article on the implementation of fast integer multipliers.
[0123]
The system 10 described herein is an extensible, parallel computer architecture for a dynamically implemented multiple instruction set architecture (ISA). Any
[0124]
The
[0125]
Thus, the system 10 of the present invention can be divided into one or more data parallel (sub) problems spatially and temporally, such as image processing, medical data processing, calibrated color matching, database calculations, documents This is particularly useful for the above processing, the associative search engine, and the network server. For a computation problem with many operand strings, the data is in parallel when the algorithm can be applied so that efficient computation speed can be obtained by the parallel computation method. Data parallel problems contain a known complexity, which is O (nk). The value of k is determined by the problem. For example, k = 2 in image processing and k = 3 in medical data processing. In the present invention, each
[0126]
Since the instruction processing hardware of each
[0127]
Unlike other computer architectures, the present invention discloses that silicon resources can be maximized at any time. The present invention provides a parallel computer system that can be expanded to a desired size at any time, and can be a large-scale parallel system composed of several thousand
[0128]
With the present invention, future reconfiguration hardware may be used to build systems with better computing performance while maintaining the overall structure described in this document. In other words, the system 10 of the present invention is technically scalable. Almost all reconfigurable logic devices in use today use memory-based complementary metal oxide semiconductor (CMOS) technology. Advances in device capabilities follow the trend (trend) in semiconductor memory technology. In future systems, the reconfiguration logic unit used to build the
[0129]
FIG. 22 is a flowchart of a preferred method for scalable, parallel, dynamic reconfiguration computation. The method of FIG. 22 is preferably performed within each
[0130]
Next, at
[0131]
If no reconfiguration is required at
[0132]
When it is not necessary to implement a non-reconfigurable interrupt at
[0133]
The present invention incorporates a metaaddressing mechanism for performing the memory operations required by the architecture of the present invention. According to the present invention, the
[0134]
Any two pairs of source
(Purpose) The
[0135]
In the preferred embodiment, the metaaddress is 80 bits wide. In this embodiment, the geographic address is 16 bits and the local memory address is 64 bits wide. With 16-bit geographic addresses, 65536 geographic addresses can be specified. 2 in each
[0136]
FIG. 24 is a flowchart showing the flow of processing of the
[0137]
In one embodiment, at step 1912, the
[0138]
The source
[0139]
FIG. 26 is a flowchart showing the processing of the
[0140]
In another embodiment, the
[0141]
When
[0142]
When priority comparison is possible, the interrupt
[0143]
Therefore, since the
[0144]
The disclosure of the present invention is significantly different from other systems for reprogrammable or reconfiguration calculations. In particular, the downloadable microcode architecture generally relies on non-reconfigurable control means and non-reconfigurable hardware, so the present invention is not equivalent to such an architecture. The present invention also clearly differs from an additional reconfiguration processor (ARP) system in which a set of reconfiguration hardware is coupled to a non-reconfigurable host processor or host system. An additional reconfigurable processor (ARP) device is dependent on a host that executes several programs. Thus, as the host or additional reconfigurable processor (ARP) device operates on the data respectively, the silicon resources of the additional reconfigurable processor (ARP) device or host are idle or used inefficiently, The available silicon resources are not utilized to the maximum during the program execution time frame. In contrast, each
[0145]
An additional reconfigurable processor (ARP) device is implemented as a set of gates that provide computational accelerators for a particular algorithm at a particular time and are optimally interconnected for the particular algorithm. The use of reconfigurable hardware resources for general-purpose operations such as managing instruction execution is avoided in additive reconfigurable processor (ARP) systems. In addition, additive reconfigurable processor (ARP) systems do not treat a given set of interconnections as easily reusable resources. In contrast, the present invention discloses a dynamic reconfiguration processing means configured for efficient management of instruction execution with an instruction execution model that is best suited to the need for computation at a particular time. The
[0146]
In general, an additional reconfigurable processor (ARP) system is for translating a particular algorithm into a set of interconnected gates. Some additive reconfigurable processor (ARP) systems attempt to compile high level instructions into an optimal gate level hardware configuration, which is generally an NP hard problem. In contrast, the present invention discloses the use of a compiler for dynamic reconfiguration computation that compiles high-level program instructions into assembly language instructions according to a variable instruction set architecture (ISA) in a very simple manner.
[0147]
An additional reconfigurable processor (ARP) device generally cannot treat its host program as data, nor can it adapt itself to a computing environment. On the other hand, each
[0148]
In the present invention, a single program includes a first instruction group belonging to the first instruction set architecture (ISA), a second instruction group belonging to the second instruction set architecture (ISA), and another instruction set architecture ( ISA) and a third instruction group. . . Is included. The architecture disclosed herein executes each such group of instructions using hardware that is configured at runtime to implement the instruction set architecture (ISA) to which the instructions belong. None of the prior art systems or methods presents similar disclosures.
[0149]
The present invention further discloses a reconfiguration interrupt scheme in which interrupt latency, interrupt accuracy, and programmable state transition enabling vary according to the currently considered instruction set architecture (ISA). Other computer systems do not allow similar disclosures. The present invention further discloses a computer system having a reconfiguration data path bit width, an address bit width, and a reconfiguration control line width, unlike prior art computer systems.
[0150]
Although the present invention has been described using several preferred embodiments, those skilled in the art will recognize that various modifications may be obtained.
[0151]
<Reference Material A>
1.0 Programmer's architecture model
This section presents the programmer's general concept for the instruction set architecture (ISA) 0 architecture, including registers, memory model, call convention from high level language, and interrupt model.
[0152]
1.1 Register
Instruction Set Architecture (ISA) 0 includes 16 16-bit general purpose registers, 16 address registers, 2 processor status registers, and 1 interrupt vector register. The data and address register mnemonics use hexadecimal numbers, so the last data register is df. And the last address register is af. Nipar (Next Instruction Program Address Register), which is one of the processor status registers, indicates the address of the next instruction to be fetched (fetched). The other status register, pcw (Processor Control Word), includes a program flow and flags and control bits used for interrupt processing. The bits are defined in Table 2. Undefined bits are reserved for future use. Four condition flags, Z, N, V, and C are set as side effects of various instructions. See Section 2.0 for an overview of which flags are affected by each instruction.
[0153]
T (Trace Mode) and IM (Interrupt Mask) flags control how the processor responds to interrupts and when traps are handled. The interrupt vector register ivec holds the 64-bit address of the interrupt service routine. Interrupts and traps are described in section 1.4 below.
[0154]
[Table 1]
[0155]
1.2 Memory access
The value stored in the 64-bit address register is used by the memory load / store instruction access memory in 16-bit and 64-bit increments (see Table 7). The address is a bit address. That is,
[0156]
[Table 2]
[0157]
1.3 Calling convention
By convention, the register af is used as a stack pointer by the C program, and the register ae is used as a stack frame pointer. The mnemonics sp and fp may be used as aliases for these registers. All other registers are free for general use. The stack grows downward.
[0158]
int is 16 bits, long is 64, and a is void *. The int value is restored with d0, and the long and void * values are restored with a0. d0-d4 and a0-a3 are clobbered by the function and all other general purpose registers must be retained on the function call. When entering the function, the stack pointer points to the return address, thus the first argument starts at address sp + 64 (decimal).
[0159]
1.4 Traps and interrupts
Instruction Set Architecture (ISA) 0 operates on one interrupt line, and software traps from two sources. All call the same flow-of-control transfer mechanism described below.
[0160]
Externally, there is a single INTR signal input and one iack output. iack is active at the same time that the interrupt mask bit in pcw is cleared by resetting pcw with the xpcw instruction or by returning from interrupt with the rti instruction and returning pcw to its original value It becomes. The amount of time between the interrupt signaling by the external device and the interrupt service by the processor depends on the currently executing instruction and the presence of the software trap.
[0161]
Software traps are triggered by explicit trap instructions or by executing instructions on the T (trace) flag set. In this case, after the first instruction following the setting of T, control is transferred to the interrupt service routine. When the trap instruction is executed, the processor sets the T flag and enters the interrupt service routine as if the T flag had been set before executing the instruction. Interrupts are not serviced while the T-flag is set. No further traps occur until the T flag is cleared by resetting pcw with the xpcw instruction or by resetting from the stack by return from interrupt with the rti instruction.
[0162]
An interrupt is generated by the presence of an active signal with an intr external signal. When the im flag or T flag is set, interrupts are masked and pending interrupts are ignored. When the im and T flags are cleared, control is transferred to the interrupt service routine after the first instruction following the assertion of intr. Upon entering the interrupt service routine, the im flag is set by the processor. No further interrupts occur until the im flag is cleared by resetting pcw with the xpcw instruction or by resetting from the stack by returning from the interrupt with the rti instruction.
[0163]
The steps the processor takes when an interrupt or trap occurs are as follows:
1. Complete all currently executing instructions.
2. 16 data registers (d0 first), 16 address registers (a0 first), pcw, ivec and nipar are pushed into the stack (pointed by register af) in this order. The value of af pushed onto the stack is that value before the interrupt or trap service begins.
3. When this is an interrupt, the interrupt bit in pcw is set to mask any further interrupts. When this is a trap instruction, the T flag is set. When this is a trap generated by a T flag, pcw is not changed.
4). Load the value in the ivec register into the niper.
Execution of the instruction within the interrupt handler begins.
[0164]
The following operations are performed when the rti instruction is executed.
1. The registers are recovered from the stack in the opposite order that they were written.
2. Resume execution.
[0165]
If the interrupt mask flag is not already cleared, it is cleared by the rti instruction. This is because unless the value of pcw was changed on the stack, it was cleared when the service routine was entered. When the T flag is set by executing a trap instruction, it is cleared when rti is executed for the same reason. When a trap occurs due to a T flag that was set before entering the service routine, it must be cleared by the service routine to confirm that the trap has occurred. When the interrupt mask flag is cleared by any means, the external output signal iack is active for one clock cycle to send a signal to the external device being interrupted.
[0166]
2.0 Instruction classification by function
The conventions are as follows.
[0167]
[Table 3]
[0168]
2.1 Register behavior
[0169]
[Table 4]
[0170]
2.2 Logical operations
[0171]
[Table 5]
[0172]
2.3 Memory load / store
[0173]
[Table 6]
[0174]
2.4 Arithmetic operations
[0175]
[Table 7]
[0176]
2.5 Control flow
[0177]
[Table 8]
[0178]
3.0 Letter reference symbols
The instructions set for Instruction Set Architecture (ISA) 0 are listed below in alphabetical order. The mnemonic is shown in a short description. Below that is the binary code of the instruction. Each row of binary code is a 16-bit word. The affected flags are listed below. Unless otherwise specified, the flag is set using data stored in the destination register. Assume that nipar has already been incremented at the start of instruction execution. Finally, a text description of the meaning of the command is shown.
[0179]
The notation conventions used for binary codes are summarized in the table below. Condition codes are defined in Table 59.
[0180]
[Table 9]
[0181]
[Table 10]
[0182]
Add the two data registers and leave the result in the destination register.
[0183]
[Table 11]
[0184]
Add the two data registers and the carry flag and leave the result in the destination register.
[0185]
[Table 12]
[0186]
Add an 8-bit signed (2's complement) constant to the data register and leave the result in the register.
[0187]
[Table 13]
[0188]
Perform a bitwise AND of the two data registers and leave the result in the destination register.
[0189]
[Table 14]
[0190]
If the condition is true, (offset << Kisa ) Is added to nipar.
[0191]
[Table 15]
[0192]
(Offset << Kisa) Is added to nipar.
[0193]
[Table 16]
[0194]
Conditionally shift 8 bits to the right and mask. Used after the load instruction to align the 8-bit data read from the word offset. When the address contained in the source address register is on an 8-bit boundary (with bit 2 set), the value in the data register is shifted 8 bits to the right. If the address is not on an 8-bit boundary, the upstream 8 bits of the register are cleared.
[0195]
[註] The negative flag is set by bit 7 instead of bit 15. This facilitates code extension of 8 bits.
[0196]
[Table 17]
[0197]
By subtracting the source register from the destination register, a flag for comparing the absolute values of the two data registers is set, and only the flag is affected.
[0198]
[Table 18]
[0199]
The signed division of the 32-bit signed integer is performed by the 16-bit signed integer, and the 16-bit signed quotient and the remainder are returned. The 32-bit dividend is stored in two consecutive registers starting from the destination register index (little endian order). The 16-bit divisor is in the source register. The remainder is returned to the destination register, and the quotient is returned to the register after the destination register (modulo 16). When the quotient exceeds 16 bits, overflow occurs.
[0200]
[Table 19]
[0201]
Add the data register to the address register and leave the result in the address register.
[0202]
[Table 20]
[0203]
Add an 8-bit signed constant to the address register and leave the result in the address register.
[0204]
[Table 21]
[0205]
By subtracting the source register from the destination register, a flag for comparing the absolute values of the two address registers is set, and only the flag is affected.
[0206]
[Table 22]
[0207]
Add the two address registers and leave the result in the destination register.
[0208]
[Table 23]
[0209]
Subtract the source register from the destination register and store the result in the destination register.
[0210]
[Table 24]
[0211]
Post-increment load into address register. Read the memory from the address pointed to by the source register and place it in the destination register. Next, the source register is incremented.
[0212]
[Table 25]
[0213]
Shift address register one bit to the right.
[0214]
[Table 26]
[0215]
Store from address register. Write the 64-bit value in the source register to the memory location pointed to by the destination register. This value is written as four 16-bit words arranged in little endian order.
[0216]
[Table 27]
[0217]
Pre-decrement store from address register. Decrement the destination register and then write the value in the source register to the memory location pointed to by the destination register. This value is written as four 16-bit words arranged in little endian order.
[0218]
[Table 28]
[0219]
Subtract the data register from the address register and leave the result in the address register.
[0220]
[Table 29]
[0221]
The source register is inverted and arranged bit by bit in the destination register.
[0222]
[Table 30]
[0223]
Jump conditional to an absolute address. See Table 59 for condition code bit definitions.
[0224]
[Table 31]
[0225]
Jump unconditionally to an absolute address. The condition “always” is the same as jCC.
[0226]
[Table 32]
[0227]
The destination register is first incremented and then the current nipar (pointing to the next instruction) is stored at the address pointed to by the destination register (usually the stack pointer). Next, load nipar with the address in the source register before fetching the next instruction.
[0228]
[Table 33]
[0229]
Shift data register left by bit constant.
[0230]
[Table 34]
[0231]
Shift data register right by bit constant.
[0232]
[Table 35]
[0233]
Load data register from memory. Loads the value pointed to by the source address register into the destination data register.
[0234]
[Table 36]
[0235]
Increment after load into data register. Read the memory from the address pointed to by the source address register and place it in the destination data register. Next, the source register is incremented.
[0236]
[Table 37]
[0237]
A 16-bit adjacent value is loaded into the data register.
[0238]
[Table 38]
[0239]
Replace the destination register with the bitwise inversion of the source register and add the destination register.
[0240]
[Table 39]
[0241]
Put the value in the source data register into the destination data register.
[0242]
[Table 40]
[0243]
The result of multiplying the value in the source register by the value in the destination register is stored in two consecutive registers starting with the destination register (little endian order).
[0244]
[Table 41]
[0245]
Perform a bitwise OR of the two data registers and leave the result in the destination register.
[0246]
[Table 42]
[0247]
Shift data register one bit to the left. Replace LSB (least significant bit) with the value of the carry flag. The original MSB (most significant bit) is placed in the carry flag at the end of the instruction.
[0248]
[Table 43]
[0249]
See section 1.4 above. Use source register as stack pointer.
[0250]
[Table 44]
[0251]
Return from subroutine. Load nipar from the memory location pointed to by the destination register (usually the stack pointer). Next, the destination register is incremented.
[0252]
[Table 45]
[0253]
Shift the address register to the left by the number of bits specified by the value in the source register.
[0254]
[Table 46]
[0255]
Shift the address register to the right by the number of bits specified by the value in the source register.
[0256]
[Table 47]
[0257]
Store from the data register. Write the value in the source to the memory location pointed to by the destination register.
[0258]
[Table 48]
[0259]
Pre-decrement the store from the data register. Decrement the destination register and then write the value in the source register to the memory location pointed to by the destination register.
[0260]
[Table 49]
[0261]
Subtract the source register from the destination register and store the result in the destination register.
[0262]
[Table 50]
[0263]
Subtract the source register from the destination register, then subtract the carry bit and store the result in the destination register.
[0264]
[Table 51]
[0265]
Run the interrupt handler. See section 1.4. The destination register is used as a stack pointer.
[0266]
[Table 52]
[0267]
Unsigned division of a 32-bit signed integer by a 16-bit signed integer, and returns a 16-bit signed quotient and remainder.
[0268]
[Table 53]
[0269]
The result of multiplying the value in the source register by the value in the destination register is stored in two consecutive registers starting with the destination register (little endian order).
[0270]
[Table 54]
[0271]
Transfers the value in the source address register to four consecutive data registers starting with the destination register. This value is stored in little endian order, and the destination register address is calculated by modulo 16 so that the destination register can be any register.
[0272]
[Table 55]
[0273]
Transfer the little endian order 64-bit values in the four consecutive data registers into the destination address register. The source register address is calculated modulo 16 so that the destination register can be any register.
[0274]
[Table 56]
[0275]
Perform a bitwise exclusive OR of the two data registers and leave the result in the destination register.
[0276]
[Table 57]
[0277]
Exchange the value in the source data register with the pcw register.
[0278]
[Table 58]
[0279]
Exchange the value in the source address register with the ivec register.
[0280]
4.0 Condition code
In the condition code operation code part field, a value from the following table is used.
[0281]
[Table 59]
[0282]
<Reference Material B>
ISA1-Pipeline convolution engine for XC4013
Introduction
Instruction Set Architecture (ISA) 1 is a pipelined multiply / accumulate array that can perform four simultaneous multiply / accumulates per instruction cycle. There is one, ie, eight 8-bit data registers (xd0-xd3 and yd0-yd3) for each input to four 8-bit × 8-bit multipliers. The four multiplier outputs are summed through the pipeline adder array until one final 16-bit sum is obtained, and up to four 16-bit registers can store the results (m0-m4). The architecture of Instruction Set Architecture (ISA) 1 assumes a flow-through batch processing cycle in main memory. There is no feedback path through the multiplier accumulator data path to recirculate the accumulation result. This is because the emphasis is on memory data flow. There is no provision for overflow scaling or extended finite accumulation. Instruction set architecture (ISA) 1 assumes that the coefficients used for convolution filtering give a result finiteness that does not exceed 16 bits for all data sets. The multiply array receives an 8-bit two's complement data input and produces a 16-bit two's complement result.
[0283]
Access to the memory is managed by two 16-bit address registers (a0 and a1), which can be thought of as compatible source and destination pointers. Program flow is managed by standard 64-bit NIPAR registers, which are supported for single interrupts (IVEC) such as frame or data-executable interrupts.
[0284]
The instruction set for instruction set architecture (ISA) 1 is very small, aligned to a 16-bit word size, and K for general purpose external loop processor instruction set architecture (ISA) 0ISA= 4 Corresponds to memory organization. Can illustrate up to 7 arithmetic operations in a single clock cycle with Instruction Set Architecture (ISA) 1 and keeps the result at a rate of 1 per clock over a small window of clocking It has the ability to index source or destination addresses and moves register data from and to memory in parallel with computation.
Instruction Set Architecture (ISA) 1 instruction set
Data movement
ld (reg-vector)
Up to 14 registers are loaded sequentially from memory according to a 14-bit bitmap reg-vector right-justified in the instruction word.
[0285]
st (reg-vector)
Up to 14 registers are sequentially stored in memory according to a 14-bit bitmap reg-vector right-justified in the instruction word.
[0286]
ld (ivec-data)
The 64-bit address following this instruction is loaded into the IVEC register and NIPAR + = 5 pointing to the next instruction is executed.
[0287]
Program control
jmp (nipar-data)
The 64-bit address following this instruction is loaded into the NIPAR register, thereby pointing to the next instruction.
[0288]
Arithmetic
mac (m-reg)
The multiplication result register indicated by the 2-bit m-reg code is the product and sum (xd0*yd0) + (xd1*yd1) + (xd2*yd2) + (xd3*yd3) is received.
[0289]
macp (s-vec, d-vec)
The multiplication result register indicated by 2 bits of the 4-bit d-vec code is the product and sum (xd0*yd0) + (xd1*yd1) + (xd2*yd2) + (xd3*yd3) is received. Every other bit of the d-vec code selectively enables memory writes to this result register address (a1), and the remaining bits of the d-vec code indicate whether the address register a1 is incremented. select. The 8-bit s-vec is divided into four 2-bit groups. Whether data register xd0-xd3 is continuously read from memory at address (a0) and whether address register a0 is incremented Is specified. When reading or writing is specified, it is performed in parallel with multiplication. The software must perform pipeline alignment of instruction processing for each batch of data that is read from and stored in memory.
[0290]
Reconstruction
reconf (ISA-vector)
Instruction set architecture (ISA) 1 is de-contexted and the S machine is reconfigured for the instruction set architecture (ISA) selected by the instruction set architecture (ISA) vector bit field in the instruction.
[0291]
Table 60 shows a pipeline convolution engine for XC4013 as a block configuration of ISA1.
[0292]
[Table 60]
[0293]
【The invention's effect】
The present invention relates to systems and methods for scalable, parallel, dynamic reconfiguration computations. The system includes at least one S machine, a T machine corresponding to each S machine, a general purpose interconnection matrix (GPIM), a set of input / output T machines, and one or more input / output devices. And a master time base device. In the preferred embodiment, the system includes multiple S machines. Each S machine includes an input section and an output section respectively coupled to the output section and input section of the corresponding T machine. Each T machine includes a routing input and a routing output coupled to a general purpose interconnection matrix (GPIM), and each input / output T machine includes these as well. The input / output T machine further includes an input and an output coupled to the input / output device. Finally, each S machine, T machine, and input / output T machine includes a master timing input coupled to the timing output of the master time base device.
[0294]
The metaaddressing system of the present invention provides bit addressing capabilities to processors in the network without requiring the processor itself to perform processing intensive addressing functions. Disclosed are individual processing machines and addressing machines that are optimized to perform each assigned function. The processing machine executes instructions, stores data in local memory, and retrieves data from local memory to determine when remote operations are required. The addressing machine assembles a packet of data for transmission, determines the geographic or network address of this packet, and checks the address against the incoming packet. In addition, the addressing machine can perform interrupt processing and other addressing operations.
[0295]
In one embodiment, the T machine also provides the metaaddressing mechanism of the present invention. The meta address specifies the geographic location of the T machine in the system and specifies the location of the data in the local memory device. The metaaddress local address is used to address each bit in the new device's memory, regardless of the device's actual memory size, as long as the device's addressable space is less than or equal to the number of bits in the local address. Used. Thus, a single metaaddress can be used to address devices having different memory sizes and structures. Furthermore, because of the use of meta-addresses, hardware in a multiprocessor parallel architecture need not guarantee the coherency and consistency of the entire system.
[0296]
Metaaddresses provide full extensibility. When a new S machine or new I / O device is added, a new geographic address is specified for this new device. In the present invention, the extensibility may be irregular, and there is no requirement that the square of the number of processors must be expanded. Scalability is further enhanced by the ability to couple any number of addressing machines up to the available local memory bandwidth to each processing machine. Thereby, the system designer can arbitrarily designate the number of paths to each processing machine. This flexibility can provide higher bandwidth to the higher levels of the system and build a pyramid processing architecture that is optimized to give the most bandwidth to the most important functions of the system. it can.
[0297]
As explained above, according to the preferred embodiment, the T machine is an addressing machine that generates meta addresses, handles interrupts, and queues messages. Thus, the S machine can concentrate its processing power only on the execution of program instructions, and can greatly optimize the overall efficiency of the multiprocessor parallel architecture of the present invention. The S machine only needs to access the local memory component of the meta address to locate the desired data, and the geographic address is transparent to the S machine. This addressing architecture interacts very well with distributed memory / distributed processor parallel computing systems. By choosing an architectural design that isolates local memory, the hardware can operate independently and in parallel. In accordance with the present invention, each S machine can have completely different reconfiguration instructions at runtime, even if all are directed to a single computational problem in parallel. Also, not only may the instruction set architecture (ISA) realized by the dynamically reconfigurable S machine be different, but the actual hardware used to implement the S machine will perform certain tasks. It may be optimized. Thus, all S machines in a single system may operate at different rates, and each S machine can optimally perform its functions while maximizing utilization of system resources.
[0298]
In addition, a unique memory confirmation confirms that the correct geographic address is being transmitted and does not provide confirmation of the local memory address. Furthermore, this confirmation is performed by the addressing machine, not the processing machine. Since virtual addressing is not used, no hardware / software interaction is required to translate virtual addresses to logical addresses. The address of the meta address is a physical address. By eliminating all such preventive and maintenance functions, the processing speed of the entire system is greatly improved. Thus, in combination with the meta-addressing scheme, highly parallel computing by separating the “space” management of a computer system from the “time” management of a computer system provided by a separate processing machine to another addressing machine A unique memory management and addressing system for the system is provided. With the architecture of the present invention, the operation of the S machine has excellent flexibility, and each S machine can operate at the optimum rate while keeping the rate of the T machine constant. Data communication of the entire system can reach the farthest space and local instruction processing can be balanced in a very short time, thereby improving the approach to solving complex problems with highly parallel computer systems.
[Brief description of the drawings]
FIG. 1 is a block diagram illustrating a preferred configuration example of a system for scalable, parallel, dynamic reconfiguration computation constructed in accordance with the present invention.
FIG. 2 is a block diagram showing a preferred configuration example of an S machine of the present invention.
FIG. 3 is a schematic diagram of an exemplary program list including reconfiguration instructions.
FIG. 4 is a flowchart of a prior art compilation operation performed during compilation of a series of program instructions.
FIG. 5 is a flowchart of a preferred compilation operation performed by a compiler for dynamic reconfiguration computation.
FIG. 6 is a flowchart of a preferred compilation operation performed by a compiler for dynamic reconfiguration computation.
FIG. 7 is a block diagram showing a preferred configuration example of a dynamic reconfiguration processing apparatus (DRPU) of the present invention.
FIG. 8 is a block diagram showing a preferred configuration example of an instruction fetch unit (IFU) of the present invention.
FIG. 9 is a schematic diagram illustrating a preferred set of states supported by the instruction state sequencer (ISS) of the present invention.
FIG. 10 is a schematic diagram illustrating a preferred set of states supported by the interrupt logic of the present invention.
FIG. 11 is a block diagram showing a preferred configuration example of a data operation unit (DOU) according to the present invention.
FIG. 12 is a block diagram of a first exemplary embodiment of a data processing unit (DOU) configured to implement a general purpose external loop instruction set architecture (ISA).
FIG. 13 is a block diagram of a second exemplary embodiment of a data processing unit (DOU) configured to implement an internal loop instruction set architecture (ISA).
FIG. 14 is a block diagram showing a preferred configuration example of an address arithmetic unit (AOU) according to the present invention.
FIG. 15 is a block diagram of a first exemplary embodiment of an address arithmetic unit (AOU) configured to implement a general purpose external loop instruction set architecture (ISA).
FIG. 16 is a block diagram of a second exemplary embodiment of an address arithmetic unit (AOU) configured to implement an inner loop instruction set architecture (ISA).
FIG. 17 (a) shows a reconfiguration hardware between an instruction fetch unit (IFU), a data arithmetic unit (DOU), and an address arithmetic unit (AOU) for an outer loop instruction set architecture (ISA). Schematic diagram showing exemplary allocation of wear resources, (b) shows an instruction fetch unit (IFU), a data arithmetic unit (DOU), an address arithmetic unit (AOU) for an inner loop instruction set architecture (ISA), FIG. 3 is a schematic diagram illustrating an exemplary allocation of reconfigurable hardware resources between the two.
FIG. 18 is a block diagram showing a preferred configuration example of a T machine of the present invention.
FIG. 19 is a block diagram showing a configuration example of a mutual coupling input / output device of the present invention.
FIG. 20 is a block diagram showing a preferred configuration example of an input / output T machine of the present invention.
FIG. 21 is a block diagram showing a preferred configuration example of a general purpose interconnection matrix (GPIM) of the present invention.
FIG. 22 is a flowchart of a preferred method for scalable, parallel, dynamic reconfiguration computation according to the present invention.
FIG. 23 is a schematic diagram showing a preferred configuration example of a data packet according to the present invention.
FIG. 24 is a flowchart of a preferred method for generating a data request according to the present invention.
FIG. 25 is a flowchart of a preferred method for sending data according to the present invention.
FIG. 26 is a flowchart of a preferred method for receiving data in accordance with the present invention.
FIG. 27 is a block diagram showing a preferred configuration example of a mutual coupling input / output device that executes an interrupt processing operation according to the present invention.
FIG. 28 is a flowchart of a preferred method for handling interrupts in accordance with the present invention.
[Explanation of symbols]
12 Dynamic program processing machine (S machine)
14 Addressing machine (T machine)
16 Interconnection device (general purpose interconnection matrix)
34 Memory device, local memory (memory)
101 Architecture description memory
106,2200 interrupt logic
320 address decoder
1800 data packets
1816 Geographic address
2208 Meta address
2208 Recognition device
2204 Comparator
Claims (12)
第1のメモリ装置と、
前記第1のメモリ装置が結合され、所定の命令を受け取ると、受け取った該命令が遠隔演算情報を含む遠隔演算を要求する命令かを判定し、該命令が遠隔演算情報を含む遠隔演算を要求する命令であると判定した場合に、該命令に含まれる遠隔演算情報を前記第1のメモリ装置に記憶し、該遠隔演算情報が記憶されている該第1のメモリ装置におけるメモリアドレスを含む無条件命令を生成する動的再プログラマブル処理マシンと、
第1の前記動的再プログラマブル処理マシンから前記無条件命令を受け取り、該無条件命令に含まれるメモリアドレスに基づいて前記第1のメモリ装置から前記遠隔演算情報を検索し、該遠隔演算情報に基づき生成されるデータパケットの送信先のアドレスを示す目的地理アドレスと、該送信先において該データパケットを書き込む第2のメモリ装置のアドレスを示す目的ローカルメモリアドレスとを含むメタアドレスを該遠隔演算情報に基づいて生成し、該メタアドレスを含む該データパケットを該遠隔演算情報に基づいて生成するアドレス指定マシンと、
第1の前記アドレス指定マシンおよび前記データパケットの送信先として前記目的地理アドレスに示される第2の前記アドレス指定マシンに結合され、該第1のアドレス指定マシンで生成された前記データパケットを該第1のアドレス指定マシンから受け取って、該データパケットにおける前記メタアドレスに含まれる前記目的地理アドレスに応じて、該第1のアドレス指定マシンと該第2のアドレス指定マシンとの間で相互にデータをルーティングする相互結合装置と
を具備する動的再構成計算のためのメタアドレス指定アーキテクチャ。A metaaddressing architecture that specifies a local memory destination for data packets of a dynamic reprogrammable processing machine,
A first memory device;
When the first memory device is coupled and a predetermined command is received, it is determined whether the received command is a command requesting a remote operation including remote operation information, and the command requests a remote operation including remote operation information If the instruction is determined to be an instruction to be executed, the remote calculation information included in the instruction is stored in the first memory device, and the memory address in the first memory device in which the remote calculation information is stored is included. A dynamic reprogrammable processing machine that generates conditional instructions;
The unconditional instruction is received from the first dynamic reprogrammable processing machine, the remote calculation information is retrieved from the first memory device based on a memory address included in the unconditional instruction, and the remote calculation information is stored in the remote calculation information. The remote calculation information includes a meta-address including a destination geographic address indicating a destination address of a data packet generated based on the destination and a destination local memory address indicating a second memory device address at which the data packet is written at the destination. and addressing machine to produce on the basis of the generated, the remote operation information the data packets containing the metadata address based on,
The first addressing machine and the second addressing machine indicated by the destination geographic address as a destination of the data packet are coupled to the data packet generated by the first addressing machine. receiving from the first addressing machines, wherein in accordance with the intended geographic address included in the meta address in the data packet, the mutual data between said first addressing machine and the second addressing machine A metaaddressing architecture for dynamic reconfiguration computation comprising an interconnecting device for routing.
前記受け取った命令が遠隔演算を要求する命令でない場合は、受け取った命令に従って処理を実行する請求項1記載の動的再構成計算のためのメタアドレス指定アーキテクチャ。The metaaddressing architecture for dynamic reconfiguration computation according to claim 1, wherein if the received instruction is not an instruction requesting a remote operation, processing is executed according to the received instruction.
前記第1のアドレス指定マシンが生成した前記データパケットを受け取ると、該データパケットに含まれるメタアドレスを前記目的地理アドレスと前記目的ローカルメモリアドレスとに復号し、当該第2のアドレス指定マシンのアドレスを示す地理アドレスと復号した該目的地理アドレスとを比較するアドレス復号器と、
前記アドレス復号器による比較の結果、前記地理アドレスと前記目的地理アドレスとが一致する場合に、前記データパケットを第2の前記動的再プログラマブル処理マシンに伝送する制御装置と
を具備する請求項1または請求項2記載の動的再構成計算のためのメタアドレス指定アーキテクチャ。 The second addressing machine is
Upon receipt of the data packet generated by the first addressing machine, the metaaddress contained in the data packet is decoded into the destination geographic address and the destination local memory address, and the address of the second addressing machine An address decoder that compares a geographical address indicating
The address comparison by the decoder results, when said geographical address and the target geographic address matches, comprising a that control device to send transferred to the data packet a second of the dynamic re-programmable processing machine Meta-addressing architecture for dynamic reconfiguration computation according to claim 1 or claim 2 .
前記割込みハンドラが、
割込み要求を識別するための識別装置と、
割込み要求の有効性を検証するために、識別した割込み要求を割込み要求の記憶されたリストと比較するためのコンパレータと、
記憶された割込み処理命令に従って有効性が確認された割込み要求を処理するための割込みロジックと、
を具備する請求項3記載の動的再構成計算のためのメタアドレス指定アーキテクチャ。 The second addressing machine further includes an interrupt handler coupled to the input / output device;
The interrupt handler is
An identification device for identifying an interrupt request;
A comparator for comparing the identified interrupt request with a stored list of interrupt requests to verify the validity of the interrupt request;
Interrupt logic for processing interrupt requests validated according to stored interrupt processing instructions;
The metaaddressing architecture for dynamic reconfiguration computation of claim 3 comprising:
所定の命令を受け取ると、受け取った該命令が遠隔演算情報を含む遠隔演算を要求する命令かを判定し、該命令が遠隔演算情報を含む遠隔演算を要求する命令であると判定した場合に、該命令に含まれる遠隔演算情報を第1のメモリ装置に記憶し、該遠隔演算情報が記憶されている該第1のメモリ装置におけるメモリアドレスを含む無条件命令を動的再プログラマブル処理マシンにより生成する無条件命令生成ステップと、When a predetermined command is received, it is determined whether the received command is a command requesting a remote calculation including remote calculation information, and when it is determined that the command is a command requesting a remote calculation including remote calculation information, Remote operation information included in the instruction is stored in a first memory device, and an unconditional instruction including a memory address in the first memory device in which the remote operation information is stored is generated by a dynamic reprogrammable processing machine An unconditional instruction generation step,
前記無条件命令生成ステップで生成された前記無条件命令を前記動的再プログラマブル処理マシンから受け取り、該無条件命令に含まれるメモリアドレスに基づいて前記第1のメモリ装置から前記遠隔演算情報を検索し、該遠隔演算情報に基づき生成されるデータパケットの送信先のアドレスを示す目的地理アドレスと、該送信先において該データを書き込む第2のメモリ装置のアドレスを示す目的ローカルメモリアドレスとを含むメタアドレスを該遠隔演算情報に基づいて生成し、該メタアドレスを含む該データパケットを該遠隔演算情報に基づいてアドレス指定マシンにより生成するデータパケット生成ステップと、The unconditional instruction generated in the unconditional instruction generation step is received from the dynamic reprogrammable processing machine, and the remote calculation information is retrieved from the first memory device based on a memory address included in the unconditional instruction. And a meta data including a target geographic address indicating a destination address of a data packet generated based on the remote calculation information, and a target local memory address indicating an address of a second memory device to which the data is written at the destination. A data packet generation step of generating an address based on the remote calculation information and generating the data packet including the meta address by an addressing machine based on the remote calculation information;
前記データパケット生成ステップで生成された前記データパケットを第1の前記アドレス指定マシンから受け取って、該データパケットにおける前記メタアドレスに含まれる前記目的地理アドレスに応じて、該第1のアドレス指定マシンと、前記データの送信先として該目的地理アドレスに示される第2の前記アドレス指定マシンとの間で相互にデータをルーティングするステップとReceiving the data packet generated in the data packet generation step from the first addressing machine, and according to the destination geographic address included in the metaaddress in the data packet, the first addressing machine; Routing data to and from the second addressing machine indicated by the destination geographic address as a destination for the data;
を具備する動的再構成計算のためのメタアドレス指定方法。A metaaddressing method for dynamic reconfiguration computation comprising:
前記受け取った命令が遠隔演算を要求する命令でない場合は、受け取った命令に従って処理を実行する請求項7記載の動的再構成計算のためのメタアドレス指定方法。8. The metaaddressing method for dynamic reconfiguration calculation according to claim 7, wherein when the received instruction is not an instruction for requesting remote operation, processing is executed according to the received instruction.
前記アドレス比較ステップによる比較の結果、前記地理アドレスと前記目的地理アドレスとが一致する場合に、前記データパケットを第2の前記動的再プログラマブル処理マシンに伝送する伝送ステップとA transmission step of transmitting the data packet to a second dynamic reprogrammable processing machine if the geographic address and the destination geographic address match as a result of the comparison in the address comparison step;
をさらに具備する請求項7または請求項8記載の動的再構成計算のためのメタアドレス指定方法。9. The metaaddressing method for dynamic reconfiguration calculation according to claim 7 or 8, further comprising:
前記識別ステップで識別された前記割込み要求の有効性を検証するために、識別した割込み要求を割込み要求の記憶されたリストと比較する比較ステップと、A comparing step comparing the identified interrupt request with a stored list of interrupt requests to verify the validity of the interrupt request identified in the identifying step;
記憶された割込み処理命令に従って前期比各ステップの比較結果に基づき有効性が確認された割込み要求を処理するためのステップとA step for processing an interrupt request whose validity has been confirmed based on a comparison result of each step in accordance with a stored interrupt processing instruction;
を具備する請求項9記載の動的再構成計算のためのメタアドレス指定方法。The metaaddressing method for dynamic reconfiguration calculation according to claim 9 comprising:
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US09/255499 | 1999-02-23 | ||
| US09/255,499 US6594752B1 (en) | 1995-04-17 | 1999-02-23 | Meta-address architecture for parallel, dynamically reconfigurable computing |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2000242613A JP2000242613A (en) | 2000-09-08 |
| JP4285877B2 true JP4285877B2 (en) | 2009-06-24 |
Family
ID=22968594
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2000034825A Expired - Fee Related JP4285877B2 (en) | 1999-02-23 | 2000-02-14 | Metaaddressing architecture for dynamic reconfiguration computation and metaaddressing method for dynamic reconfiguration computation |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP4285877B2 (en) |
Families Citing this family (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| DE102005005073B4 (en) * | 2004-02-13 | 2009-05-07 | Siemens Ag | Computer device with reconfigurable architecture for the parallel calculation of arbitrary algorithms |
| JP5175517B2 (en) * | 2005-04-12 | 2013-04-03 | パナソニック株式会社 | Processor |
| DE102007044803B4 (en) | 2007-09-20 | 2025-08-14 | Robert Bosch Gmbh | Circuit arrangement for signal recording and generation and method for operating this circuit arrangement |
| US20110184687A1 (en) * | 2010-01-25 | 2011-07-28 | Advantest Corporation | Test apparatus and test method |
| JP6313237B2 (en) * | 2015-02-04 | 2018-04-18 | 東芝メモリ株式会社 | Storage system |
| CN120371772B (en) * | 2025-04-08 | 2025-12-23 | 四川云一达科技有限公司 | A chip based on a reconfigurable neuromorphic interconnect architecture |
Family Cites Families (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH08147250A (en) * | 1994-09-20 | 1996-06-07 | Hitachi Ltd | Mutual connection network and its communication method |
| US5689713A (en) * | 1995-03-31 | 1997-11-18 | Sun Microsystems, Inc. | Method and apparatus for interrupt communication in a packet-switched computer system |
| US5794062A (en) * | 1995-04-17 | 1998-08-11 | Ricoh Company Ltd. | System and method for dynamically reconfigurable computing using a processing unit having changeable internal hardware organization |
| JP3328872B2 (en) * | 1996-09-30 | 2002-09-30 | 株式会社日立製作所 | Computer network communication method and network computer system |
-
2000
- 2000-02-14 JP JP2000034825A patent/JP4285877B2/en not_active Expired - Fee Related
Also Published As
| Publication number | Publication date |
|---|---|
| JP2000242613A (en) | 2000-09-08 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US7493472B2 (en) | Meta-address architecture for parallel, dynamically reconfigurable computing | |
| US6594752B1 (en) | Meta-address architecture for parallel, dynamically reconfigurable computing | |
| JP7264955B2 (en) | Memory network processor with programmable optimization | |
| CN109213523B (en) | Processor, method and system for configurable spatial accelerator with memory system performance, power reduction and atomic support features | |
| CN109213723B (en) | A processor, method, device, and non-transitory machine-readable medium for data flow graph processing | |
| CN109597646B (en) | Processor, method and system with configurable spatial accelerator | |
| US10915471B2 (en) | Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator | |
| CN108268278B (en) | Processors, methods and systems with configurable spatial accelerators | |
| CN109597459B (en) | Processor and method for privilege configuration in a spatial array | |
| US11029958B1 (en) | Apparatuses, methods, and systems for configurable operand size operations in an operation configurable spatial accelerator | |
| CN111512292A (en) | Apparatus, method and system for unstructured data streaming in a configurable spatial accelerator | |
| CN111868702A (en) | Apparatus, method and system for remote memory access in a configurable space accelerator | |
| US20220100680A1 (en) | Apparatuses, methods, and systems for a configurable accelerator having dataflow execution circuits | |
| EP1215569B1 (en) | Data processor | |
| CN111767080A (en) | Apparatus, method and system for operations in a configurable spatial accelerator | |
| CN111512298A (en) | Apparatus, method and system for conditional queues in configurable space accelerators | |
| WO2020005448A1 (en) | Apparatuses, methods, and systems for unstructured data flow in a configurable spatial accelerator | |
| CN112148647A (en) | Apparatus, method and system for memory interface circuit arbitration | |
| CN111566623A (en) | Apparatus, method and system for integrated performance monitoring in configurable spatial accelerators | |
| CN112148664A (en) | Apparatus, method and system for time multiplexing in a configurable spatial accelerator | |
| JP4285877B2 (en) | Metaaddressing architecture for dynamic reconfiguration computation and metaaddressing method for dynamic reconfiguration computation | |
| KR19980018071A (en) | Single instruction multiple data processing in multimedia signal processor | |
| WO2025247854A2 (en) | Data processing devices and methods | |
| Eastep | Evolve: a preliminary multicore architecture for introspective computing | |
| Gunberg | An integration concept for dynamically reconfigurable functional units for RISC processors |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20051021 |
|
| RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20060811 |
|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070213 |
|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20081215 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20081224 |
|
| A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090223 |
|
| TRDD | Decision of grant or rejection written | ||
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20090317 |
|
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20090324 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120403 Year of fee payment: 3 |
|
| R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130403 Year of fee payment: 4 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140403 Year of fee payment: 5 |
|
| LAPS | Cancellation because of no payment of annual fees |
