説明

単一命令複数データ/複数命令複数データ・プロセッサ・アレイ用コントローラ

【目的】 SIMD又はSIMD/MIMD 用大規模並列アレイに対するアレイ・コントローラの制御効率の維持改善を計る。
【構成】 DO/WHILE, IF/THEN/ELSE、及びGO-SUB構造を使用して循環及びフロー制御オペレーションを実行するよう配線されたルーチン・シーケンサと、アレイに対するコマンドの安定フローを維持するようにしたパイプラインと、コマンド遂行進行状況を監視する手段と、コントローラの各段に対し進行状況をフィードバックする手段とを含み、SIMDプロセッサは、イ.問題を処理する要素数を最高に維持し、ロ.パイプライン構造とアレイ外部の時間前の循環制御とを持つ連続コマンド・ストリームをアレイに供給し、ハ.問題の階層構造分解により効率よく問題を導入することを特徴とする。

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はコンピュータ及びコンピュータ・システムに関し、特にプロセッサ・アレイに関する。本発明は、更に詳細には、複合オペレーション・モード(単一命令複数命令複数データ、SIMIMD)と称するモードのPE内で自律的に命令遂行可能なSIMDプロセッサ・アレイのオペレーションを制御し監視する制御要素に関する。
【0002】
【従来の技術】
相互参照特許出願本願は下記の関連特許出願の部分継続出願であり、その優先権を要求する。“並列連想プロセッサ・システム”と称するジェイ・ディーフェンダーファほかにより1990年11月13日に提出の米国特許出願611,594号。“動的複数モード並列プロセッサ・アレイ・アーキテクチャ”と称するピー・エム・コージにより1991年11月27日に提出の米国特許出願798,788号。
【0003】更に、本願は本願と同時出願の下記特許出願と関連がある。
“SIMD処理要素内の命令”と称するピー・エイ・ウイルキンソンほかにより1992年5月22日に提出の米国特許出願。
“SIMD機における浮動小数点の実現”と称するピー・エイ・ウイルキンソンほかにより1992年5月22日に提出の米国特許出願。
“SIMDピケットのグループ化”と称するピー・エイ・ウイルキンソンほかにより1992年5月22日に提出の米国特許出願。
“アレイ・プロセッサ用スライド・ネットワーク”と称するピー・エイ・ウイルキンソンほかにより1992年5月22日に提出の米国特許出願。
“SIMD機におけるピケットの自律化”と称するピー・エイ・ウイルキンソンほかにより1992年5月22日に提出の米国特許出願。
“H−DOTSに基づくアレイ・プロセッサ通信ネットワーク”と称するピー・エイ・ウイルキンソンほかにより1992年5月22日に提出の米国特許出願。
“SIMD/MIMD機用制御機能”と称するアール・アール・リチャードソンほかにより1992年5月22日に提出の米国特許出願。
【0004】更に、本願は下記特許出願に関連がある。
“拡張並列アレイ・プロセッサ”と称するティー・バーカほかにより1992年5月22日に提出の米国特許出願。
“SIMD/MIMD処理メモリー要素”と称するティー・バーカほかにより1992年5月22日に提出の米国特許出願。
“PME記憶及び転送/回路切替モード”と称するティー・バーカほかにより1992年5月22日に提出の米国特許出願。
“完全分散処理メモリー要素”と称するティー・バーカほかにより1992年5月22日に提出の米国特許出願。
“N次元修正ハイパーコード”と称するティー・バーカほかにより1992年5月22日に提出の米国特許出願。
【0005】“拡張並列プロセッサ・アレイ・ディレクタ”と称するエム・ダップほかにより1992年5月22日に提出の米国特許出願。
“APAP機械的パッケージ”と称するエム・ダップほかにより1992年5月22日に提出の米国特許出願。
“APAP I/O プログラマブル・ルータ”と称するエム・ダップほかにより1992年5月22日に提出の米国特許出願。
“APAP I/O ジッパ接続”と称するティー・バーカほかにより1992年3月に提出の米国特許出願。
【0006】本願及び上記出願中の特許出願はニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレイションに譲渡され所有されている。上記出願中の特許出願の記載は参照事項により本願に編入される。
【0007】他の相互参照特許出願本願と同一譲受人に譲渡され、本願出願時に所有した相互参照特許出願は下記のものを含む。1988年9月27日に提出され、現在は“SIMDアレイ・プロセッサ”と称するジェイムス・エル・テイラにより1990年5月4日に提出されたその継続出願第07/519,332号の利益となるように放棄された米国特許出願第07/250,595号(1989年5月3日にEPO出願第88307855/88−Aとして最初開示された)。
【0008】“ポリモルフィック・メッシュに任意なグラフを実現する回路及び方法”と称するエイチ・リーにより1988年5月13日に提出の米国特許出願第07/193,990号。
“大容量並列SIMDコンピュータ用2次元入出力方式”と称するアール・ジャフェほかにより1989年10月24日に提出の米国特許出願第07/426,140号。
“並列プロセッサ・システムにおけるメモリー保護操作実行装置及び方法”と称するダヴリュー・シー・ディートリック,ジュニアほかにより1989年11月21日に提出の米国特許出願第07/439,758号。
【0009】“相互接続処理要素システム及び相互接続方法”と称するダヴィド・ビー・ロルフにより1991年5月13日に提出の米国特許出願第07/698,866号。出願中の上記参照全特許出願は本願と同一譲受人であるインターナショナル・ビジネス・マシーンズ・コーポレイションに譲渡され所有されている。上記特許出願の記載は参照事項により本願に編入される。
【0010】使用用語集・ALUプロセッサの演算論理装置である。
・アレイ1次元以上の構成要素又は要素の配列を示す。アレイはホートランのような言語において単一名で識別される順序付きデータ項目(アレイ要素)群を含む。他の言語においては、かかる順序付きデータ項目群の名称は全べて同一属性を有するデータ要素群又は順序付き集合を示す。
【0011】プログラム・アレイは一般に数又は次元属性によって指定された次元を有する。又、アレイの宣言子はある言語のアレイの各次元のサイズを指定することができる。ある言語において、アレイはテーブルの要素の配列である。ハードウェアを意味する場合、アレイは大規模並列アーキテクチャの全体的に同一な構造(機能要素)の集合である。データ並列演算におけるアレイ要素は、並列が各独立であり、要求されたオペレーションを並列に実行することができるときに、そのオペレーションを割当てることができる要素である。一般に、アレイは処理要素の格子とみなすことができる。アレイの各部には、部分データが正規の格子パターンの周囲を移動することができるように、その部分データを割当てることができる。しかし、データはアレイの任意な位置に割振り、又は割当てることができる。
【0012】・アレイ・ディレクタアレイに対する制御装置としてプログラムされた装置である。アレイ・ディレクタはアレイに配列された機能要素のグループ化に対するマスタ・コントローラ(又は制御装置)の機能を実行する。
【0013】・アレイ・プロセッサ2つの主なタイプのアレイ・プロセッサがある。その1つは複数命令複数データ(MIMD)アレイ・プロセッサであり、他方は単一命令複数データ(SIMD)アレイ・プロセッサである。MIMDアレイ・プロセッサにおいては、アレイの処理要素は共通の命令ストリームを経由する同一命令に制限されるが、各処理要素に関連するデータは個有である。本発明の好ましいアレイ・プロセッサは他の特性を有する。それは拡張アレイ・プロセッサと呼称され、頭字語APAPを使用する。
【0014】・非同期正規の時間関係がないことである。一方の機能の遂行により他方の機能の遂行を予想することができないということである。すなわち、他方の機能の遂行との関係において規則的な又は予想可能な時間関係を持たずに発生するものである。制御状況下において、データが遊休要素をアドレスするのを待ち状態にあるとき、コントローラは制御を引渡す位置を指定する。これによりオペレーションの順次は維持されるが、他の事象の発生時刻と一致しない。
【0015】・BOPS/GOPSBOPS又はGOPSは秒当り大量(数10億)のオペレーションと同じ意味を有する頭字語である。GOPS参照。
【0016】・回路切替/記憶転送これらの用語はノード・ネットワークを通してデータ・パケットを移動する2つの機構を示す。記憶転送は各中間ノードがデータ・パケットを受信し、そのメモリーに記憶し、そしてその受信先の方に転送する。回路切替はデータ・パケットを中間ノード・メモリーに入力せずに、そのノードを通して受信先の方に直接データ・パケットを通過するよう、中間ノードの入力ポートを出力ポートに論理的に接続することを指令する機構である。
【0017】・クラスタクラスタは制御装置(クラスタ・コントローラ)及びそれに接続されたハードウェア(ターミナル機能装置、又は仮想構成要素でよい)とから成るステーション(又は端末、機能装置)である。本願のクラスタはノード・アレイとも称するPMEのアレイを含む。通常、クラスタは512PMEを持つ。本願の全PMEノード・アレイは、各々がクラスタ・コントローラ(CC)によって支援されるクラスタ群から成る。
【0018】・クラスタ・コントローラクラスタ・コントローラは1以上の装置又はそれに接続されている機能装置に対する入出力(I/O)オペレーションを制御する装置である。クラスタ・コントローラは通常、それがIBM3601金融機関通信制御装置に存在する場合には、装置に記憶されそこで遂行されるプログラムによって制御されるが、それがIBM3272制御装置に存在する場合には、ハードウェアにより全体的に制御されうるものである。
【0019】
・クラスタ・シンクロナイザクラスタ・シンクロナイザは構成要素の同期オペレーションを維持するため、クラスタの一部又は全部のオペレーションを管理する機能装置である。この機能装置はプログラムの遂行と特定の時間関係を維持する。
【0020】・コントローラコントローラは相互接続ネットワークのリンクを経由してデータ及び命令の送信を制御する装置である。そのオペレーションはコントローラが接続されているプロセッサで遂行されるプログラムにより、又は装置内で遂行されるプログラムによって制御される。
【0021】・CMOSCMOSは相補型金属酸化物半導体技術に対する頭字語である。それは通常動的ランダム・アクセス・メモリー(DRAM)の製造に使用される。NMOSはDRAMの製造に使用される他の技術である。CMOSが好ましいが、APAPの製造に使用する技術は現に使用されている半導体技術の範囲に制限されるべきものではない。
【0022】・ドッティング(Dotting)ドッティングは3以上のリードを物理的に共に接続することにより結合することを示す。ほとんどのバックパネル・バスはこの接続方式を共用する。この用語は経過時間のオア・ドット(OR DOT)も表わすが、ここでは非常に簡単なプロトコルによりバスに組合わせることができる複数のデータ源の識別に使用される。
【0023】本発明におけるI/Oジッパ(Zipper、後述する)の概念は、ノードに入るポートがノードから出るポートによって駆動され、又はシステム・バスからくるデータによって駆動することができる概念の実現に使用することができる。逆に、ノードから出るデータは他のノードに対する入力と、システム・バスに対する入力の両方に使用可能である。システム・バス及び他のノードの両方に対するデータ出力は同時には行われず、サイクルが別である。
【0024】ドッティングは、2ポートPE或はPME又はピケットがドッティングを利用することによって各種編成のアレイに使用することができる場合におけるH−DOTの検討で使用される。2D及び3Dメッシュ、基数2N−立方(又は3次元)、疎基数4N−立方、及び疎基数8N−立方等を含み、数個のトポロジが検討される。
【0025】・DRAMDRAMは動的ランダム・アクセス・メモリーの頭字語であり、コンピュータの主メモリー用の記憶装置として一般に使用される。用語DRAMはキャッシュとして、又は主メモリーではないメモリーとしての使用にも適用される。
【0026】・浮動小数点(FLOATING-POINT)
浮動小数点の数は2つの部分で表わされる。それらは、固定小数点又は小数部と、ある想定の基数又はベース(radix 、base)に対する指数部とである。指数は10進小数点の実際の配置を示す。典型的な浮動小数点の表現として、例えば、実数0.0001234は0.1234−3として表わされる。その場合、0.1234は固定小数点部であり、−3は指数である。
【0027】この例において、浮動小数点の基数又はベース(radix 、base)は10である。この10は単位より大きく、浮動小数点表示の指数により明示的に表わされるか、浮動小数点表示の特性によって表示される冪で累乗されてから、固定小数点部に乗算することにより実数の表示を決定するようにした暗黙固定の正の整数の基数を表わす。数字リテラルは実数同様浮動小数点の表記法で表わすことができる。
【0028】・FLOPSこの用語は秒当りの浮動小数点命令数を示す。浮動小数点の計算は加算(ADD)、減算(SUB)、乗算(MPY)、割算(DIV)及び他の多くのものを含む。秒当りの浮動小数点命令のパラメータは屡加算又は乗算命令を使用して計算され、一般に50/50比の混合を有するものと推定することができる。この計算は指数、小数、及び全べての必要な小数正規化の生成を含む。本実施例においては、32ビット又は48ビット浮動小数点ホーマットをアドレスすることができる(本実施例において、混合の場合、それを計数しなかったがより長くすることができる)。浮動小数点の計算は、固定小数点命令によって行う場合、乗算命令を必要とする。あるものは結果を数字表示する場合10対1比を使用するが、ある特定の研究においてはより適切な使用として6.25比を示した。各種アーキテクチャは異なる比率を有する。
【0029】・機能装置機能装置は目的を達成することができるハードウェア、ソフトウェア、又は両方の実体又はエンティティである。
【0030】・GバイトGバイト(Gbytes)は10億(109 )バイトを示す。Gbytes/sは秒当り10億バイトを表わす。
【0031】・GIGAFLOPSこの用語は秒当り(10)**9浮動小数点命令を意味する。
【0032】・GOPS及びPETAOPSGOPS及びBOPSは意味が同一であり、秒当り109 オペレーションを意味する。PETAOPS は秒当り1012オペレーションという現行機械の能力を意味する。本実施例によるAPAP機のそれは、正に秒当り109 命令を意味するBIP/GIPと同一である。ある機械において、その命令は2以上のオペレーション(すなわち、加算及び乗算)を発生するかもしれないが、本発明はそのようなことはしない。その代り、1オペレーションを実行するに多くの命令を使用するかもしれない。例えば、本発明は、64ビット演算を実行するに複数の命令を使用する。しかし、本発明におけるオペレーションの計数の際、ログ・オペレーションの計数を選択しなかった。GOPSは、成果又はパホーマンスの表示に使用するに好ましいものであるかもしれないが、表示した使用法に一貫性がない。あるものはMIPS/MOPSに遭遇し、次にBIPS/BOPS、及びMega(メガ)FLOPS /Giga(ギガ)FLOPS /Tera(テラ)FLOPS /Teta(テタ)FLOPS に遭遇する。
【0033】・ISAISAは命令セット・アーキテクチャを意味する。
【0034】・リンクリンクは物理的又は論理(ロジック)的であり、要素又は構成要素である。物理的リンクは構成要素又は装置を接続する物理的接続であるが、コンピュータのプログラミングにおいて、リンクはプログラムの離れた部所間において制御及びパラメータを通過させる命令又はアドレスである。多重システムにおいて、リンクは実アドレス又は仮想アドレスによって識別することができるリンク識別用プログラム・コードによって指定することができる2システム間の接続である。かくして、一般に、リンクは、論理的及び物理的両方において、物理的媒体及び全プロトコルと、関連装置及びプログラミングとを含む。
【0035】・MFLOPSこの用語は秒当り(10)**6浮動小数点命令を意味する。
【0036】・MIMDMIMDはプロセッサ・アレイ・アーキテクチャを示すことに使用される。そこで、アレイの各プロセッサはそれ自体の命令ストリーム、すなわち複数の命令ストリームを有し、各処理要素当り1つ配置された複数データ・ストリームを遂行する。
【0037】・モジュールモジュールは他の構成要素と共に使用するよう設計されたハードウェアの個別的且つ識別可能なプログラム装置又は単位、又は機能装置又は単位である。又、単一電子チップに含まれているPEの集合もモジュールと呼ばれる。
【0038】・ノード一般にノードはリンクの接合又は接合点である。一般的PEアレイの1PEはノードであることができる。ノードは、又モジュールと称するPEの集合を含むことができる。本実施例において、ノードはPMEのアレイを構成し、PMEの集合をノードと称する。ノードは8PEMであることが好ましい。
【0039】・ノード・アレイPMEから成るモジュールの集合は屡ノード・アレイと称し、それは、モジュールから成るノードのアレイである。ノード・アレイは通常数個のPMEより多いが、ノード・アレイの用語は複数を包含する。
【0040】・PDEPDEは、部分微分方程式を示す。
【0041】・PDE緩和解答法PDE緩和解答法はPDE(部分微分方程式)を解答するための方法である。PDE解答は公知汎用のほとんどのスーパ・コンピュータ能力を使用するので、緩和法(relaxation process)のよい例であるかもしれない。PDE方程式を解く方法は多数有り、1より多い数値法は緩和法を含む。例えば、有限構成要素法によりPDEを解く場合、緩和法は大量のコンピュータ時間を消費する。
【0042】今、熱伝導の世界における例を考える。煙突内部に熱いガスがあり、外には冷い風が吹いている場合、煙突レンガ内の温度勾配はどのように形成されるだろうか。各レンガを小さなセグメントと仮定し、各セグメント間における熱の流れ方を温度差の関数として方程式を表わすことにより、熱伝導PDEは、有限要素問題に変換することができる。そこで、内部及び外部を除く全べての要素が室温であるのに対し、その境界セグメントが熱ガス温度及び冷風温度であったとして、緩和の開始を決定しなければならない。
【0043】コンピュータ・プログラムはそのセグメントに流入する又は流出する熱の量に基づく各セグメントの温度変数を更新することにより時間をモデル化する。その場合、煙突を横切る温度変数群を緩和して、物理的煙突において発生する実際の温度分布を与えるようにするまで、モデルの全セグメントを処理するに多数のサイクルを必要とする。
【0044】目的が煙突のガス冷却をモデル化することである場合、構成要素はガス方程式にまで拡張しなければならず、煙突内部の境界の状態は他の有限リンク・モデルに連結され、処理又はプロセスを続行する。熱の流れはセグメントとその隣接間温度差によって異なることに注意する。温度変数を分布させるため、PE間通信経路を使用する。それはこの隣接通信パターン、又はPDE関係を並列演算に大いに適用可能にする特性である。
【0045】・ピケット(PICKET)
ピケットはアレイ・プロセッサを構成する構成要素のアレイの要素である。それはデータ・フロー(ALU REGS)、メモリー、制御、要素に関連する通信マトリックスの部分である。その装置はそれらの制御及びアレイ相互通信機構部分を有する並列プロセッサ及びメモリー要素から成る第1/第nのアレイ・プロセッサを示す。ピケットはプロセッサ・メモリー要素又はPMEの形態である。本発明によるPMEチップ設計プロセッサ・ロジックは関連出願のピケット・ロジックを実現することができ、ノードとして形成されたプロセッサ・アレイに対するロジックを有する。
【0046】用語ピケットは一般に使用の処理要素用のアレイ用語PEに類似し、1クロック・サイクルでビット並列情報バイトを処理する、好ましくは処理要素と局所メモリーとの組合せからなる処理アレイの構成要素である。バイト幅データ・フロー・プロセッサと32kバイト以上のメモリーとから成るこの好ましい実施例は、本質的に他のピケットに対する通信を制御し、接続する。
【0047】用語ピケットは機能的には軍によるピケ・ラインの類推が相当ぴったりに適合するものと思われるが、その語源はトム・ソイヤ(Tom Sawyer)及び彼の白柵からとったものである。
【0048】・ピケット・チップピケット・チップは単一シリコン・チップ上に複数のピケットを含む。
【0049】・ピケット・プロセッサ・システム(又はサブシステム)
ピケット・プロセッサはピケットのアレイ、通信ネットワーク、入出力(I/O)システム、及びマイクロプロセッサ、走査ルーチン・プロセッサ、及びアレイを走行するマイクロ−コントローラから成るSIMDコントローラで構成される。
【0050】・ピケット・アーキテクチャピケット・アーキテクチャは下記のような問題を含む数々の異なる種類の問題に適応する機能を有するSIMDアーキテクチャに対する好ましい実施例である。
−集合連想処理−並列数値的集中処理−イメージに類似の物理的アレイ処理
【0051】・ピケット・アレイピケット・アレイは幾何学的順序で配列されたピケットの集合、正規のアレイである。
【0052】・PME又はプロセッサ・メモリー要素PMEはプロセッサ・メモリー要素に対して使用される。用語PMEは単一プロセッサ、メモリー、及び入出力(I/O)可能システム要素又は本発明による並列アレイ・プロセッサの1つを形成する装置を示す。プロセッサ・メモリー要素はピケットを包含する用語である。プロセッサ・メモリー要素はプロセッサと、その関連メモリーと、制御インターフェースと、アレイ通信ネットワーク機構の部分とから成る第1/第nのプロセッサ・アレイである。この要素はピケット・プロセッサ内又はサブアレイの一部にあるような、又ここで説明する多重プロセッサ・メモリー要素ノードにあるような正規のアレイの接続機能を有するプロセッサ・メモリー要素を持つことができる。
【0053】・経路指定経路指定はメッセージを受信先に到達させるまでの物理的経路の指定である。経路指定はソース又は発信元と受信先とを有する。これら要素又はアドレスは一時的関係又は類縁性を有する。メッセージの経路指定は屡指定表を参照して得られるキーに基づき行われる。ネットワークにおいて、受信先はリンクを識別する経路制御アドレスに従い送信される情報の受信先としてアドレスされた如何なる端末、ステーション、又はネットワーク・アドレス可能な装置でよい。受信先フィールドはメッセージ・ヘッダに置かれ、その受信先コードによって受信先が識別される。
【0054】・SIMDSIMDはアレイの全プロセッサが単一の命令ストリームから指令されて、処理要素当り1つ配置されている複数データ・ストリームを遂行するようにしたプロセッサ・アレイ・アーキテクチャである。
【0055】
・SIMDMIMD又はSIMD/MIMDこの用語はある複雑な命令を処理する期間、MIMDからSIMDに切換えることができる二重機能を有する。すなわち、2モードを有する機械を示す用語である。シンキング・マシーンズ社の接続機型式CM−2は、MIMD機の前端又は後端として置かれた場合、オペレーションが異なる問題部分を遂行するため異なるモードを実行すること(屡々二重モードという)を可能とする。
【0056】これらの機械はイリアク(Illiac)以来存在し、マスタCPUと他のプロセッサとを相互接続するバスを使用した。マスタ制御プロセッサは他のCPUの処理の割込能力を有する。他のCPUは独立のプログラム・コードを走行することができる。割込み中チェックポイント機能(制御されるプロセッサの現行状況の閉鎖及び保管)に寄与する機能がなければならない。
【0057】・SIMIMDこの用語はアレイの全プロセッサが単一の命令ストリームから指令されて、処理要素当り1つ配置されている複数データ・ストリームを遂行するようにしたプロセッサ・アレイ・アーキテクチャである。この構造内で、命令遂行を指定する各ピケット内のデータ従属オペレーションはSIMD命令ストリームによって制御される。
【0058】これはSIMD命令ストリームを使用して複数データ・ストリーム(ピケット当り1つ)を操作する複数命令ストリーム(ピケット当り1つ)の逐次能力を有する単一命令ストリーム機である。
【0059】・SISDSISDは単一命令単一データの頭字語である。
【0060】・スワッピングスワッピングとは、ある記憶区域のデータ内容を他の記憶区域のデータ内容と交換することである。
【0061】・同期オペレーションMIMD機の同期オペレーションは、各活動が事象(通常クロック)に関連する動作モードである。それはプログラム・シーケンスで正規に発生する指定事象であることができる。オペレーションは独立して機能を実行するよう多数のPEにディスパッチされる。制御はオペレーションが終了するまでコントローラに戻されない。機能装置のアレイにオペレーション命令があった場合、その要求は、制御がコントローラに戻されるまで、それらオペレーションを終了しなければならない各アレイの要素に対しコントローラから発生する。
【0062】・TERAFLOPSこの用語はTERA(テラ)とFLOPS (前述)との結合語であり、秒当り(10)**12浮動小数点メモリーを意味する。
【0063】・VLSIVLSIは集積回路に対して使用された場合における超大規模集積の頭字語である。
【0064】・ジッパ(Zipper)
ジッパは新たに与えられた機能である。それはアレイ構造の正規な相互接続の外部にある装置から接続されるべきリンクを考慮するものである。
【0065】背景技術より高速なコンピュータに対する終りなき探求において、今日の機械を困惑させる複雑な問題を克服するため、分割して数百及び数千のロー・コスト・マイクロプロセッサを並列に連結することによりスーパ・スーパコンピュータを作成するようにしてきた。かかる機械は大規模並列と呼ばれる。大規模並列システムを作成するため、本発明者は新たな方法を作成した。本発明者が行った多くの改良に対しては他の多くの業績の背景が考慮されなければならない。
【0066】技術分野の要約において他の出願に対し参照が行われた。その点については、本発明者による並列連想プロセッサ・システム(米国特許出願第601,594号)と、拡張並列アレイ・プロセッサ(APAP)に対する関連出願を参照するとよい。特定のアプリケーションに最もよく適合するアーキテクチャを選出するためにシステム交換が要求されるが、一つの解決法も満足するものはなかった。そして、本発明者の思想は解決を与えることを容易にした。
【0067】本発明の背景として、以下、アレイ・プロセッサ用コントローラに関するある特許を再検討し、更に上記の関連出願の背影を参照する。
【0068】“アレイ・プロセッサ・アーキテクチャ”と称するバーンズによる米国特許第4,412,303号は、10年に亘る明らかな進歩の後、如何に技術の開発が考えられてきたかを例示する。大規模アレイ・プロセッサが開発されたとき、プロセッサはそれらの相互接続で密結合され、制御はMIMDアレイ・アーキテクチャ又はSIMDアレイ・アーキテクチャのどちらにも共通な問題を遂行するように設計された。SIMDアーキテクチャは非常に複雑となり、ピケット内で命令を遂行するために提供した単純な施設から相当遠いものとなった。
【0069】この米国特許第4,412,303号はオメガ(Omega )ネットワークと相互接続されたメモリー・モジュールを有するホートラン(FORTRAN )プロセッサのアレイを記述する。アレイに単一制御/データ・メモリー及び関連コントローラ・モニタがあるが、プログラム及びデータ情報は、プロセッサ及びメモリーに分離されて分配され、各プロセッサは、自己のソフトウェアのコピーを有する。プロセッサ・アレイの同期化は計算エンベロープの同期アプローチを使用することによって達成される。全プロセッサは、プログラムの所定の停止点において相互に待つことが要求される。
【0070】アーキテクチャはアレイの各プロセッサが他のプロセッサと独立に実行することを可能にし、大型マルチプロセッサに共通な方法で制御又はデータ情報を共用する。又、アーキテクチャはプロセッサがSIMDアーキテクチャ効果を与える方法をとることにより、データのアレイにおいて同一ソフトウェアを実行することを可能にする。このモードにおいて、プロセッサ・アレイは他のプロセッサ又は隣りとデータの共用が要求される前に同期化される。
【0071】“並列アレイ・プロセッサ用処理要素”と称するバッチャによる米国特許第4,314,349号は従来のSIMDアレイ・プロセッサ要素を例示している。この特許は衛星イメージ処理を意図した出願に関するものであるが、それは本発明者が改良を必要とするタスクに適用可能であるという意味の従来のビット直列SIMDアレイ・プロセッサを詳細に記述している。本発明者によるSIMDアレイ・プロセッサと異なり、シンキング・マシーンズ、インクのような製造者の従来のSIMD要素と同一であるプロセッサはビット直列であるのに対し、本発明のプロセッサは並列にデータ・ストリームを処理する。
【0072】“科学ベクトル処理用局所ストア”と称する、ハムストラによる米国特許第4,706,191号は、全体的に科学ベクトル・プロセッサの局所記憶メモリーの実現について記述している。
【0073】“メモリー結合液面アレイ・プロセッサ”と称するドリセクによる米国特許第4,720,780号は、処理が複雑であり、識別可能性及び直接結果を希望するパイプライン又はシストリック(systolic)処理用メモリー・ブロックがそのエッジに結合されたSISDプロセッサを十分使用可能なシストリック・アレイ・プロセッサを記述している。米国特許第4,720,780号及び米国特許第4,706,191号のシステムはプロセッサ・アレイのSIMD処理要素内で命令遂行の能力を持たない。
【0074】“システム・メモリーに含まれているメモリー・システムを有するプロセッサ・アレイ付き並列処理システム”と称するギホードによる米国特許第4,873,626号は制御構造及び階層構造バス機能管理用制御構造を持つSIMD又はMIMDモードで動作可能な並列プロセッサのメモリー・アーキテクチャ及びバス伝送階層構造によって技術開発の複雑性を例示している。
【0075】“SIMD/MIMD 命令処理を有するプロセッサ・アレイ付き並列処理システム”と称するギホードによる米国特許第4,891,787号は、ギホードによる他の米国特許第4,873,626号と同一システムにおける他の面を要求している。米国特許第4,891,787号は、制御CPU、シーケンサ、1/0装置、及びバス伝送構造により階層構造に配列された、メモリー処理要素のアレイを持つようなプロセッサを記述している。各M/PEのメモリーは、制御CPUのメモリーの一部としてマップされる。
【0076】各M/PEは、自己のメモリーに格納されている命令をMIMD機能に与えてそれを遂行することができる。MIMDモードにある間、制御CPUは、M/PEに対してSIMD命令を発行することができる。M/PEは割込みがかかったときに、それに応答してSIMD命令を遂行し、自己のMIMD命令ストリームを遂行するものとみなされる。M/PEは、MIMDモードにない場合、制御CPU、I/O装置、他のM/PE(より高い段階と推定する)、又は、シーケンサ装置からのSIMDコマンドに応答するのみである。SIMD命令の複雑性については記述していない。又、それらはサブルーチン・レベルに置くことはできたが、その場合、SIMDコマンドは、M/PEを呼出すサブルーチンと同等になる。
【0077】これは、SIMD命令を制御CPUからM/PEに送るまでの経路によって支援される。この米国特許は、PEの並列性の程度については記述していないが、プロセッサ・チップと、あるメモリーと、グループ間バス、グループ・バス、及びカード上の個別的要素の制御に対するインターフェースとを有するカード(バス伝送構造によって相互に接続された複数のカード)に匹敵しうるものである。しかし、ここでは、命令ストリーム制御の構造は説明されていない。
【0078】又、本願で記述するような命令ストリーム・コントローラはここでは記述していない。それに代り、ギホードのMIMDアレイは、MIMDモードにないとき、SIMD呼出しに対する応答に対しM/PEを制限することによってSIMDオペレーションをシミュレートする。本願発明はより古典的意味のSIMDアレイを提供するものであるが、更に、各ピケット内の個有の命令の遂行により、SIMDコマンドの細部のストリングがステップ可能とされる拡張局所自律機能を有するシステムを提供することができる。
【0079】
【発明が解決しようとする課題】本発明においては、並列アレイ・プロセッサに対するコントローラを取扱うことになるが、従来の組織におけるSIMD又はSIMD/MIMD 用大型並列アレイの制御に関しては次に示すような数個の問題があった。
【0080】第1の問題は、アレイの作業効率を維持しなければならないことである。それは、(1)問題に対して作業するアレイ要素の最大数の維持、及び(2)その性能に衝撃を与えることなく、アレイ外部のオーバーヘッド制御オペレーションを管理することである。これは、アレイがコマンドを待たないように、アレイに対してデコード済み命令ストリームを連続供給しなければならないことを意味する。
【0081】アレイ内のオペレーションは計算に対するものであり、全体的に、ほとんど反復性である。それはアレイからのほとんどの制御機能が効率を維持することが望ましい。反復に関するカウント及びベクトルの処理、及び決定コマンドの処理はアレイの要素を含めない一次機能の処理であり、アレイの外部で処理されるべきである。
【0082】上記の第2の問題は、問題をアレイの並列遂行に適したサブユニットに階層構造分解することである。大きな機能(及び制御変数及び定数を伴う)で記述された大きく複雑な問題の処理を開始する場合、機能及びデータ・ベースを小さな機能に分割することが必要である。ある点で、これら機能は機械レベルのプログラミングに適した複数のファミリ(例えば、三角、マトリックス、ベクトル、フィルタ、及びイメージ処理機能等)と認識することができる。
【0083】これら現在実行しているタスクに関する“標準”機能は遂行のため、容易にアクセス可能でなければならい。コントローラ・ハードウェアに対し、支援し、最適化し、記憶し、これら機械レベルのプログラムに対する高速アクセスを可能にする機能を与える場合、SIMD/MIMD 機を制御する機能的要求の定義を必要とする。従って、本発明の目的はSIMD又はSIMD/MIMD 用大型並列アレイの制御において、問題をアレイの並列遂行に適したサブユニットに階層構造分解して、アレイの制御効率の維持を計ることである。
【0084】
【課題を解決するための手段】本発明は、上記の課題を解決するため、以下に説明するように構成した。本発明による並列連想プロセッサ・システムのコントローラは、アプリケーション・プログラム命令を解釈し、SIMD又はMIMD制御構造いずれかのコマンドを遂行するようピケット・アレイを制御する数々の機能を含み、それら機能は、共に又は個別的に、SIMD又はMIMDモードでプロセッサ・アレイを動作させる個有の制御を提供することを特徴とする。
【0085】コントローラは、図1に示すように4つの個別的部分を有する。処理要素又はピケットのアレイは多くのデータ集合の処理を並列に実行する。マイクロコントローラはそのマイクロコード・アレイの線形シーケンスからのコマンドをクロック基準でアレイに供給する。命令シーケンサは循環及び決定を制御し、開始アドレスをFIFOバッファを経由してマイクロコントローラに供給する。最後に、サブシステム・コントローラは主な機能を順序付けするシーケンサに対しコマンドを供給する。サブシステム・コントローラは、又、システム状況全体を検査し、制御するホスト環境を提供する。
【0086】本発明は、主に、プロセッサ・アレイに対する命令の連続的フローを最適化するため、階層構造及びオーバーラップ又はパイプライン形式による命令遂行を達成した。サブシステム・コントローラにおけるユーザ・プログラム・コードは、一般に、パラメータを引出し、実行時間ライブラリのルーチンにそのパラメータを与えるハイレベル・コマンドを供給する。実行時間ルーチンは、簡単な配線の“DO WHILE IF FOR ”制御構造及びカウンタと、局所レジスタに含まれているアドレス情報とを使用してほとんど全べてのプログラム・フローの決定が行われる。命令シーケンサは、データ群を処理するときに、各PEのマイクロステップを指令するプロセッサのアレイの要素に対して並列に順序付けされたマイクロ命令の線形ルーチンを識別する。
【0087】本発明者は新規な概念により設計されたシステム及び新たな“チップ”を作成することにより大規模並列プロセッサ及び他のコンピュータ・システムを作成する新たな方法を創作した。本出願はかかるシステムに向けられる。本願及び関連出願において、開示されるべき各種概念はそれら出願において見ることができる。各出願に記述されている構成要素はこのシステムに組合わされて新たなシステムとすることができる。それらは現行技術と組合わせることもできる。
【0088】本願及び関連出願において、拡張並列アレイ・プロセッサ(APAP)と称するピケット・プロセッサを考案した。ピケット・プロセッサはPMEを使用することができるということに注意するべきである。ピケット・プロセッサは、非常にコンパクトなアレイ・プロセッサを希望するような軍の適用に特に有益であるかもしれない。その点に関し、このピケット・プロセッサは、幾分、本願の拡張並列アレイ・プロセッサ(APAP)に対する好ましい本実施例とは異なるかもしれない。しかし、共通性は在り、本実施例のある面及び機能は、異なる機械に適用することができる。
【0089】用語ピケットは、プロセッサ及びメモリーから成るアレイ・プロセッサの第1/第nの要素と、アレイ相互間通信に適用可能な、そこに含まれている通信要素とを含む。ピケットの概念は、又、第1/第nのAPAP処理アレイにも適用可能である。
【0090】ピケットの概念は、データ幅、メモリー・サイズ、及びレジスタの数においてAPAPとは異なりうるが、ピケットはAPAPの代替である大規模並列実施例においては、第1/第nの正規のアレイに対し接続可能に構成されるのに対し、APAPのPMEはサブアレイの一部であるという点において異なる。両システム共、SIMIMDを遂行することはできるが、ピケット・プロセッサは、PEのMIMDを有するSIMD機として構成されるので、SIMIMDを直接遂行することができるのに対し、MIMD APAP 構造は、SIMDをシミュレートするよう制御されたMIMD PE を使用することによってSIMIMDを遂行する。又、両機械共PMEを使用する。
【0091】両システム共並列アレイ・プロセッサとして構成することができ、アレイ通信ネットワークと相互接続された“N”要素を有するアレイに対するアレイ処理装置から成る。その第1/第Nのプロセッサ・アレイは処理要素と、その関連メモリーと、制御バス・インターフェースと、アレイ通信ネットワークの一部とから成る。
【0092】並列アレイ・プロセッサは2重オペレーション・モード機能を持ち、そこで、処理装置はどちらかのモード又は2つのモードで指令され、SIMDオペレーション及びMIMDオペレーションに対する、これら2つのモード間を自由に移動することができる。SIMDがその組織のモードである場合には、処理装置はSIMIMDモードで自己の命令を遂行するよう各要素を指令するべき能力を持ち、MIMDが処理装置の組織に対する実施モードである場合は、処理装置はMIMDの遂行をシミュレートするようアレイの選ばれた要素を同期化するべき能力を持つ(これをMIMD-SIMD と称する)。
【0093】両アレイの並列アレイ・プロセッサはアレイの要素間で情報を通過させ、通り抜けさせる経路を持つアレイ通信ネットワークを提供する。情報の移動は2つの方法のいずれかによって制御することができる。第1の方法としては、移動データが受信先を規定せず、全メッセージを同時且つ同一方向に移動するようアレイ・コントローラが指示する。第2の方法としては、各メッセージがその開始位置に受信先を規定したヘッダを持ち、自己経路指定するものである。
【0094】複数のアレイ・プロセッサのアレイのセグメントは単一半導体チップ上に設けられている処理装置の複数のコピーを持ち、そのアレイ・セグメントの各コピーは、アレイ通信ネットワークを拡張するため、そのセグメント及びバッファと、ドライバと、マルチプレクサと、そのアレイ・セグメントがアレイの他のセグメントと一体的に接続可能にする制御とに接続されたアレイ通信ネットワークの一部を含む。コントローラからの制御バス又は経路は、アレイの各要素及びそれらの活動の制御機能まで延長するよう各処理装置に配設される。
【0095】並列アレイの各処理要素セグメントはプロセッサ・メモリー要素の複数のコピーを含み、それは単一半導体チップの限界内に含まれ、アレイ・セグメントは、チップに含まれているアレイ・セグメントに対する制御機能の通信を支援するため、アレイ制御バス及びレジスタ・バッファの一部を含む。
【0096】両方共メッシュ移動又は経路指定移動を実現することができる。通常、APAPは、チップ上に一方法で相互関係する8要素を持ち、チップは他の方法で相互関係するようにした2重相互接続構造を実現する。チップのプログラマブル経路指定は、一般に、上記のPME間にリンクを設定して行われるが、ノードは他の方法で接続してもよく、通常他の方法で接続される。チップ上で、正規のAPAP構造は本質的に、2×2メッシュであり、そのノード相互接続は経路指定された疎8進N−立方(3次元)であることができる。両システム共、マトリックスを点対点経路で構成可能にするPE(PME)の間にPE間相互接続経路を有する。
【0097】
【実施例】以下、添付図面に基づき本発明の好ましい実施例を詳細に説明する。図1は制御手段及び通信経路を含む処理セグメント・アレイの典型的な実現を表わすアレイ・ブロック図であり、最終的制御は、サブシステム・コントローラのユーザ・プログラムか、又は代りにサブシステム・インターフェースの外部かのどちらかで開始する。図2は図1に示す“ピケット”の2つを詳細に示す図であり、ピケット通信に対するピケットを実現することができるスライド・レジスタ(slide register)をメモリー・ブロックとALUブロック間に接続して示す。図3は制御の流れ及びプロセッサ・アレイのコントローラ内における制御のレベルの概要を示す構成図であり、命令シーケンサとマイクロ・コントローラ間にある小FIFOがプロセッサ・アレイに対するコマンドのより継続的な流れを容易にする。図4はコントローラの3つの段に共通なオペレーション・コード・ホーマットを示す図である。
【0098】図1において、並列連想プロセッサ・システムのコントローラは、アプリケーション・プログラム命令を翻訳し、SIMD又はMIMDのどちらかの命令を遂行するようピケットのアレイを制御する数個の機能を含む。これら数個の機能は、共に接続され分離されて、SIMD又はMIMDモードのどちらかで作動するプロセッサ・アレイに対する個有の制御を提供する。
【0099】図1は、処理要素アレイに接続された3レベル・アレイ・コントローラのブロック図である。用語ピケットは、遂行するデータ・フロー(DF)と、通信シフト・レジスタ又はスライド・レジスタ(SR)と、ピケット用データを含むメモリーのストリップとから成るアレイ要素の1つの表示に使用される。
【0100】まず、ピケット及びその機能について説明する。ピケットはALU、メモリー、数個のレジスタ、及び通信経路を含む。ピケット全べては、コントローラから同一のコマンドを受信する。そのコマンドはメモリー・アドレスを供給し、ALU、レジスタ、及びデータ・マルチプロセッサが実行するべきことを示す原始信号から成る。複数バイト幅のデータ・フローは、下記のデータ・ホーマットを支援する。
・ 8,16,32ビット固定小数点・ 40ビット浮動小数点(25ビット動的正確度)
【0101】コントローラは4つの個別的部分を有する。処理要素又はピケットのアレイは多くのデータ群に対するオペレーションを並列に実行する。マイクロ・コントローラは、そのマイクロコード・アレイの線形シーケンサからのコマンドをクロック毎にアレイに供給する。命令シーケンサは、循環及び決定を制御し、FIFOバッファを経由してマイクロ・コントローラに対し、開始アドレスを供給する。最後に、サブシステム・コントローラは、主機能を順序付けするシーケンサに対して、コマンドを供給する。又、それはシステム全体の状況を制御し、検査するホスト環境を与える。
【0102】この遂行ステップの区分化及びFIFOファイルの導入はアレイを最適使用状態に維持する。この組織は、効率良くアレイ・オペレーションを維持するためのキーである。
【0103】マイクロ・コントロール(MICRO-CONTROLアレイに最も近い制御機能は最近の単一プロセッサの組織と類似するようマイクロコード化される。マイクロ・コントローラは、ALU、データ経路、及びメモリーのマイクロ命令を制御するため、アレイ・クロック・サイクルと同期するアレイ要素の全べてに対して並行にマイクロ・コマンドを発行する。
【0104】SIMDモードにあるとき、マイクロ命令、データ・アドレス、及びデータは、アレイ要素の全べてを供給し、それら全べては同じ事を行う。マイクロコード・アレイはピケット内で命令の全べて又は一部の実行に使用される多くの小さな線形マイクロ・ルーチンを含む。これらマイクロ・ルーチンの各々は、開始アドレスを有し、1乃至約50命令程度を含む。マイクロコードの遂行は、指定アドレスから開始し、指定したタスクの達成に必要なコマンド・ストリングを使用してそれを増分的に走行する。
【0105】又、マイクロ・コントローラは要素の全べてが使用するよう、同報通信バスを使用する全アレイに対して同時にデータを供給するタスクを有する。これは、一般的に、ロード又は比較オペレーションに使用される。コントローラのマイクロ・コントローラ部は、又共通な局所記憶レジスタ群をロードし、更新する。これらレジスタは、ピケットの全べてに対する大域アドレス及びデータを供給する。
【0106】各ピケットが各個別のオペレーションを行っている状態において、アレイがMIMDモードで動作しているときは、マイクロ・コントローラは、なお、アレイ要素に対してマイクロ命令、データ、及びデータ・アドレスを発行するが、現在はコマンド・ストリングが各ピケットの命令遂行シーケンスを形成する。MIMD命令コードは各ピケットのメモリーからフェッチされ、その後のマイクロサイクルで遂行するよう命令レジスタに記憶される。
【0107】コントローラのマイクロ・コントローラ部は、処理制御のため、アレイからのフィードバックを与える。これはアレイの各要素が状況ビットを状況漏斗(STATUS FUNNEL )にゲートさせるようにするマイクロ命令をアレイに対し発行することにより達成される。状況漏斗はアレイからコントローラに対し、通常、サイズがバイトより小さい簡単な情報片として集合状況を導入するためのハードウェア機構である。いずれかその要素のビットが論理1であれば、状況漏斗は、コントローラに対しその決定工程において使用するための論理1を与える。決定工程は次に説明するよう命令シーケンサで行われる。
【0108】FIFOバッファは、コントローラのアップストリーム部が先に作業することができるように、マイクロ・コントローラの入力に設定される。これは並列アレイ及びマイクロ・コントローラがほとんどの場合、その作業を維持することを可能にする。
【0109】命令シーケンサ命令シーケンサは、マイクロ・コントロール装置に対し開始アドレスを供給する。マイクロ・コントローラ装置はシーケンスを終了したとき、命令シーケンサに対して次の開始アドレスを信号する。命令シーケンサは、DO及びIFタイプ両オペレーションをマイクロ・コントローラ・オペレーションと並行に実行している間、FORオペレーションを実行するよう配線される。命令シーケンサの反復機能はアレイ要素のバイト幅オペレーションを算術計算に必要な共通の複数バイト幅シーケンスに拡張するよう要求される。
【0110】マイクロ・コントロール機能からの命令シーケンサの分離はあるハードウェアに有効な利得を与える個有のステップである。命令シーケンサは、ローレベル機能(浮動小数点加算を行う)及びアッパレベル機能(数学機能(サイン(sin )X )、マトリックス(又は行列)機能、ベクトル算術計算(全ピケットの総和)、及びあるアプリケーションを最適化するすべての個有のオペレーションのような)の両方に使用可能とされる。マクロ命令のあるものはマイクロ・コントローラのマイクロシーケンスの始動に使用される。他のマクロ命令は循環制御及びマクロ内の反復制御用決定命令である。これは、同一ハードウェアがアプリケーション及びマイクロコード・プログラマの両方にサービスすることを可能にする。
【0111】命令シーケンサは記録化(canned)ルーチン・メモリー(実行時間ライブラリ)又は、サブシステム・コントローラからその命令得ることができる。サブシステム・コントローラからの命令は循環条件を設定することができ、直接マイクロ・コントローラを制御するか又は記録化ルーチン・メモリーからシーケンスを呼出すことができる。これら命令は図10に示すような共通4バイト命令ホーマットを持つ。OPは遂行するべき命令を表わし、B及びCは一般に、オペレーションに対する2つのデータ・ソースを示し、Aは結果を記憶するべき場合を識別する。
【0112】このレベルにおける命令は、遂行シーケンスを制御するか、又はマイクロ・コントローラ命令を開始するかのいずれかである。命令シーケンサは下記の命令群を直接遂行する。
【0113】GO-SUB......RETURN:記録化(canned)ルーチン・メモリーに記憶されているサブルーチンを呼び出す。
IF condition met THEN ELSE:並列アレイの活動ピケットの全べてにより集合的に提供された状態に基づき2経路の1つをとる。
【0114】DO......NEXT:最初、反復数をカウンタにロードし、次にカウンタが0に達するまで、DOとNEXT間の命令ストリングを実行する。
DO IMMEDIATE......NEXT:カウンタに即値をロードし、その後カウンタが0に達するまでDOとNEXT間の命令ストリングを実行する。
【0115】DO......NEXT IF :最初、反復数をカウンタにロードし、次にカウンタが0に達するまで、又は状態が並列アレイのピケット全べてにより集合的に提供された状態に基づく状態に合致するまで、DOとNEXT間の命令ストリングを実行する。
【0116】START MICRO-CONTROLLER at X :アドレスXから始まるMICRO-CONTROLLERのアレイ制御機能のシーケンスを開始する。
【0117】命令シーケンサは、サブシステム・コントローラから5つのコマンドを受入れる。それらは下記に示すようなものである。
FILL CAN (ned Routime Memory),and END FILL:サブシステム・コントローラ(SUBSYSTEM CONTROLLER)を指令して、記録化(canned)ルーチン・ライブラリ・メモリーに対するルーチンのロードに使用する。
【0118】LOAD COUNTER:制御カウンタのいずれかにロードする。それら制御カウンタはネストするサブルーチンの全レベルに、循環全べてに対するDO循環カウント数を含むことができる。
注意:ある循環カウンタの値は、記録化ルーチン・メモリーからとることができる。START :記録化ルーチン・メモリーの制御ルーチンの開始アドレスを指定する。
【0119】START MICRO-CONTROLLER at addr X:サブシステム・コントローラは命令シーケンサをバイパスし、マイクロ・コントローラのシーケンサを開始する。かくして、わずか使用されたか、又は新(“NEW”)ルーチンは最初記録化ルーチン・メモリーにロードすることなく、サブシステム・コントローラから直接アレイで遂行することができる。
【0120】SUBSYSTEM CONTROLLER(サブシステム・コントローラ):使用者の選択言語にコード化されたアプリケーション・プログラムはシステム・コントローラに存在し、そこで遂行する。そのプログラムは単一命令スレッドとして遂行され、プロセッサ・アレイに対してハイレベルの制御を与える。構造的に、アプリケーション・プログラムは、次に示すような機能を有するものと考えることができる。
【0121】1.命令シーケンサに対しコマンドを出力する実行時間機能。
2.命令シーケンサ・コマンドに対するアドレス指定制御及び索引付け制御を生成するコンパイル及び実行時間機能。
3.命令シーケンサ、マイクロコントローラ、及びプロセッサ・アレイのデータ及びレジスタ・スペースのためのメモリー・マップ。
【0122】アプリケーション・プログラマに対して処理し易い作業にするため、そのプログラムは、呼出し(CALL)で呼出され、続いて命令シーケンサにインターフェースされる一群の実行時間サービスによって支援される。命令経路のFIFOメモリーは、レベル間のワークロードの動揺を分離するための緩衝機能を提供する。
【0123】サブシステム・コントローラは、処理アレイのハイレベル制御を供給する。それは、又マイクロコントローラを直接制御するためのコマンドをローレベルで供給することができる。それは、更に、又、アレイ又はコントローラの他の部分に出入するデータに対するデータ経路として作用する。
【0124】サブシステム・コントローラはほぼ従来のSISD機組織を使用して、SIMD又はMIMDアーキテクチャを有する並列アレイ・プロセッサの制御を可能にする。プログラマはプログラミング技術に対する異なるレベルの意識を持つ。SISDの視点に対する例外はデータがピケットからピケットに移動する数々の区域で発生する。以下に、活動及びアレイの意識の程度のリストを示す。
【0125】その1データ・フロー以外は知らない(Not aware of more That one deta flow):−SIMD数学、全ピケットは独立事項を実行する。
【0126】軽い意識(Mildly aware):−ピケットのグループ化は内容又は結果に基づく;ピケット間通信(イメージ処理);全活動ピケットに対する同報通信。
【0127】明確な意識(Definite awareness):−個々のピケット制御−それをロードする−使用可能/使用不能−それを読取る
【0128】制御構造コントローラの制御構造は図3で要約される。マイクロ・コントスーラはFIFOから供給され、相互にクロック同期によりアレイ及び局所ストアを完全に制御する。
【0129】命令シーケンサは、そこのメモリーに含まれている記録化ルーチン(サブルーチン・ライブラリ)として全体的に組織されているルーチンを遂行するようシーケンサを指令するサブルーチン・コントローラからそのコマンドを取得する。この点において遂行される命令はISPコードと称する。これらコマンドの具体化はマイクロ・コントローラのPROM及び(又は)RAMに配設されたマイクロコードと記録化ルーチンとの組合せからなる。
【0130】命令群以下にローレベル命令シーケンサの命令群のリストを示す。数字8,16,32,40はオペランドのサイズである。下記のリストは数類別の命令を示す。
【0131】局所レジスタ・オペレーションピケット内アレイ・オペレーション−算術計算ピケット内アレイ・オペレーション−比較ピケットを横切るアレイ・オペレヒション−算術計算ピケット・ロード/読取りアレイ制御
【0132】これらコマンドは、ISPマイクロコードで実現され、命令シーケンサで制御され、ピケット・アレイで及び局所記憶あたりで遂行される。その各命令は以下で説明する。
【0133】局所レジスタLOAD-REGS. 局所レジスタAの値を記憶する。
ADD-REGS. レジスタCの値をレジスタBの値に加え、レジスタAに記憶する。
SUB-REGS. レジスタBの値からレジスタCの値を減じ、レジスタAに記憶する。
AND-REGS. レジスタCの値とレジスタBの値を論理アンドし、レジスタAに記憶する。
ADD-REGS IMMED. レジスタCの値に即値を加え、レジスタAに記憶する。
SUB-REGS IMMED. レジスタCの値から即値を減じ、レジスタAに記憶する。
READ-REGS. レジスタAの値をサブシステム・コントローラに移動する。
【0134】ピケット命令−算術計算MOV8 レジスタCで指定したピケット・メモリー位置に含まれている値をレジスタAで指定したピケット・メモリー位置に移動する。
【0135】ADD32 レジスタBで指定したピケット・メモリー位置に含まれてている32ビット固定小数点値をレジスタCで指定したピケット・メモリー位置に含まれている32ビット固定小数点値に加え、その32ビット固定小数点の結果をレジスタBで指定したピケット・メモリー位置に記憶する。
【0136】MPY40 レジスタBで指定したピケット・メモリー位置に含まれている40ビット浮動小数点の値をレジスタCで指定したピケット・メモリー位置に含まれている40ビット浮動小数点の値に加え、40ビット浮動小数点の結果を、レジスタBで指定したピケット・メモリー位置に記憶する。
【0137】下記の命令全べての実施方法は上記で説明したものと類似する。


【0138】ピケット命令−変換FLT-TO-FIX. レジスタCで指定したピケット・メモリーの40ビット浮動小数点の値を32ビット固定小数点の値に変換し、レジスタAで指定したピケット・メモリー位置に記憶する。
FIX-TO-FLT. 32ビット固定小数点の値を40ビット浮動小数点の値に変換する。
FLT-TO-CC2. 40ビット浮動小数点の値をCC2ホーマットの浮動小数点の値に変換する。
CC2-TO-FLT. CC2ホーマットの浮動小数点の値を40ビット浮動小数点の値に変換する。
【0139】ピケット命令−ピケットを横切るHSUM8. レジスタCで指定したピケット・メモリー位置の8ビット値を全ピケットからの値に水平に加え、その32ビットの結果をレジスタBで指定したピケットのレジスタAで指定したピケット・メモリー位置に記憶する。
【0140】HSUM40. レジスタCで指定したピケット・メモリー位置の40ビット浮動小数点の値を全ピケットからの値と水平に比較し、その40ビット最小値をレジスタBで指定したピケットのレジスタAで指定したピケット・メモリー位置に記憶する。
【0141】


【0142】ピケット命令−ピケット・ロード/読取りBLOAD DATA. このヘッダに続く32ビット・ワードがレジスタAで指定したピケット・メモリー位置から始まるレジスタBで指定したピケットにロードされる。
【0143】HBLOAD DATA. このヘッダに続く32ビット・ワードがレジスタAで指定したピケット・メモリー位置から始まる全活動ピケットにロードされる。
【0144】HLOAD16. レジスタBの値を全活動ピケットのレジスタAで指定したピケット・メモリー位置に移動する。
LOAD16. レジスタBの値をレジスタBで指定したピケットのレジスタAで指定したピケット・メモリー位置に移動する。
【0145】BREAD DATA. 32ビット・ワード・ブロックがレジスタCで指定したピケット・メモリー・アドレスから始まるレジスタBで指定したピケットからコントローラ指定メモリーにフェッチされる。
【0146】READ16. レジスタBで指定したピケットのレジスタCで指定したピケット・メモリー位置の値をレジスタAに移動する。
【0147】ピケット命令−ピケット制御下記の如きモードがある。
活動(ACTIVE)−全命令はピケット内で完全に操作可能である。
【0148】ドーズ又は半眠(DOZE)−全命令は少くとも部分的に操作可能である。全べての計算及び検査は行われるが、ピケット・メモリーに対する記憶は禁止される(又は少くとも非常に制限される)。半眠ピケットは問題における有益な参加ピケットであるが、参加する順番がくるまで……他と共に、呼起こされるまで一時的に待つ。
【0149】使用不能(DISABLED)−使用不能ピケットはサブシステム・コントローラによって一時的に“非活動”にセットされた活動ピケットである。コントローラは、再びそれをターンオンすることができる。
【0150】非活動(INACTIVE)−非活動ピケットは参加していない。そのSRラッチは両方向に透過である。必要な場合、非活動ピケット、はその物理的アドレスを使用してターンオンすることができ、サブシステム・コントローラによって初期化することができる。
【0151】遮断(BROKEN)−ピケットは両方向にSR−ラッチを透過にすることを含み完全にターンオフされる。電源オン以外で再活動化することはできない。
【0152】アレイ制御命令HADDR. 最左活動ピケット……の物理的ピケット・アドレス。
HDISAB. それらの物理的ピケット・アドレスが……のピケットを活動不能にする。
HDOZE. ピケット状況ラッチがピケットのドーズ……の設定に使用される。
HAWAKE. ピケット状況ラッチがピケットのドーズ……のリセットに使用される。
HGROUP. ピケット状況ラッチの状態が……ピケットに移動する。
SET-ARRAY-START. ピケット状況ラッチの状態が……に移動する。
READ-CHIP-STATUS. ……で指定したチップのチップ状況ラッチ。
LOAD-CHIP-ENABLE. ……で指定したチップのチップ使用可能レジスタ。
【0153】セット−アレイ・オペレーション状況当り選ばれた使用可能/使用不能状態ピケットの状況を得るチップの状況を得る
【0154】MICROA. ISP出力に対しマイクロワード・ディレクトリの第1の半分を通過する。
MICROB. ISP出力に対しマイクロワード・ディレクトリの第2の半分を通過する。
INTERRUPT. サブシステム・コントローラに割込み、その割込みを渡す。
【0155】制御例下記表1に示す例はコントローラの各種部分間の接近した相互関係を示す。この例は、1マトリックス乗算の要素全べてが1ピケット内にある場合のマトリックス乗算の例である。そのコードは各ピケット内で遂行される独立のマトリックス乗算のために与えられる。並列乗算は多く同じ機能を有するが、これは有効な方法でピケット間データの転送を加算する。
【0156】
【表1】


【0157】下記表2の遂行と称する列において、それらは下記の如く番号0,1,2,3で表わすように、各ステップで実行するアレイ・プロセッサの一部を示す。
・ 0 サブシステム・コントローラ・ 1 命令シーケンサ・ 2 局所記憶命令を遂行するマイクロ・コントローラ・ 3 アレイ命令を遂行するマイクロ・コントローラ
【0158】
【表2】


【0159】列サイクル10×10は、機械の各部が各機能を消費する合計サイクル数又はカウント(時間)である。ほとんどの時間は計算に使用される。計算に消費する時間は計算する累乗量に達するまでピケットの数で乗算される。計算結果は、各システムで使用した実際の時間によって異なるので、サイクル時間を直接計算することはできない。
【0160】要約すると、下記表3に示すように、列Aは機械の各部で使用するサイクル数を示し、列Bはコントローラの各部におけるサイクルの百分比を示し、列CはFIFOがサブシステム・コントローラ及び命令シーケンサに割振られている処理を隠すようにしたいと思ったときに、ピケットで消費される時間の百分比を示す。
【0161】
【表3】


【0162】以上、本発明の好ましい実施例を詳細に証明したが、本発明はそれのみでなく、現在及び将来、本発明の範囲において更に改良、変更、拡張しうることは明らかである。
【0163】
【発明の効果】本発明は、以上説明したように構成して、問題をアレイの並列遂行に適したサブユニットに階層構造分解したことにより、SIMD又はSIMD/MIMD 用大規模並列アレイに対するアレイ・コントローラの制御効率を維持し改善することができた。
【図面の簡単な説明】
【図1】制御手段及び通信経路を含む処理要素のアレイの典型的な実現方法を示すアレイのブロック図
【図2】図1に示す“ピケット”の2つを詳細に示す図
【図3】制御の流れ及びプロセッサ・アレイのコントローラ内の制御のレベルの概要を示す構成図
【図4】コントローラの3つの段に共通なオペレーション・コード・ホーマットを示す図
【符号の説明】
1〜5,N ピケット
SR スライド・レジスタ
ALU 演算論理装置
REG スライド・レジスタ
DF データ・フロー

【特許請求の範囲】
【請求項1】 データを並列に実行するプロセッサのアレイを有し単一命令複数データを処理するコンピュータ・システム用コントローラであって、命令及びデータの相互通信のために接続された複数のピケットの如きアレイ処理要素から成り、各ピケットはピケット内におけるデータの遂行及びピケット内における単一命令複数データ・コマンドの解釈を行うための各種モードを取得する各種の遂行機能を有する複数の機構を持ち、前記モードは複合オペレーション・モードであることを特徴とするコンピュータ・システム用コントローラ。
【請求項2】 前記コントローラは階層構造を有する複数の制御段を使用して処理要素のアレイを制御することを特徴とする請求項1記載のコンピュータ・システム用コントローラ。
【請求項3】 前記コントローラは3つの制御段を持つことを特徴とする請求項2記載のコンピュータ・システム用コントローラ。
【請求項4】 前記階層構造制御の最低レベルはコマンド、アドレス、索引、及び/又はカウンタ値のストリングを供給することにより、処理要素のアレイを直接制御するアレイ・マイクロ・コントローラから成ることを特徴とする請求項2記載のコンピュータ・システム用コントローラ。
【請求項5】 前記階層構造制御の中間レベルはアレイ・マイクロ・コントローラのシーケンスを選択するべく命令を解釈し、コマンドを供給する、命令シーケンサから成ることを特徴とする請求項2記載のコンピュータ・システム用コントローラ。
【請求項6】 パイプラインFIFOファイルは実行可能のとき、命令シーケンサからデータを受信し、マイクロ・コントローラが最後のマイクロ・ストリングを終了したとき、前記マイクロ・コントローラに対してデータを送出することを特徴とする請求項2記載のコンピュータ・システム用コントローラ。
【請求項7】 前記階層構造制御の最高レベルは、ホストからハイレベルのコマンドを取得し、命令シーケンサの固定ルーチンとアレイ・マイクロ・コントローラのローレベル・コマンドとの組合せを使用してハイレベルの機能を構築するサブシステム・コントローラから成ることを特徴とする請求項2記載のコンピュータ・システム用コントローラ。
【請求項8】 前記コントローラの複数の段は共通のコマンド・ホーマットを共用することを特徴とする請求項2記載のコンピュータ・システム用コントローラ。
【請求項9】 前記単一命令複数データ・アレイはアレイ要素に対して個有である前記アレイ要素内の命令を遂行することにより、複数命令複数データ機能をシミュレートするような方法で制御することを特徴とする請求項2記載のコンピュータ・システム用コントローラ。
【請求項10】 前記アレイ・コントローラは前記アレイの処理要素の全べてに対し単一命令複数データ・コマンドと、データと、アドレスと、索引と、カウンタ値とを同時に送信することを特徴とする請求項4記載のコンピュータ・システム用コントローラ。

【図4】
image rotate


【図1】
image rotate


【図2】
image rotate


【図3】
image rotate