JPH08241291A - プロセッサ - Google Patents

プロセッサ

Info

Publication number
JPH08241291A
JPH08241291A JP8002639A JP263996A JPH08241291A JP H08241291 A JPH08241291 A JP H08241291A JP 8002639 A JP8002639 A JP 8002639A JP 263996 A JP263996 A JP 263996A JP H08241291 A JPH08241291 A JP H08241291A
Authority
JP
Japan
Prior art keywords
instruction
memory
register
instructions
output
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.)
Granted
Application number
JP8002639A
Other languages
English (en)
Other versions
JP3101560B2 (ja
Inventor
Manoj Kumar
マノジ・クマー
Tsao Michael Mi
マイケル・ミ・ツァオ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPH08241291A publication Critical patent/JPH08241291A/ja
Application granted granted Critical
Publication of JP3101560B2 publication Critical patent/JP3101560B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Multi Processors (AREA)
  • Advance Control (AREA)

Abstract

(57)【要約】 【課題】 SIMDコンピュータのプロセッサ中の異な
ったインストラクション(INST)の順序を実行する
PEを与えること。 【解決手段】 本発明のPEは、データをストアするメ
モリと、同報通信されたINSTを受け取る第1マルチ
プレクサ(MX)と、メモリ及び第1MXに接続され、
第1MXからの出力を受けて、メモリに出力するインス
トラクション・レジスタ(IR)と、IR及びメモリに
接続され、少なくとも1つのINSTをストアする記憶
装置と、少なくとも1つのINSTはメモリから読み取
られ、上記記憶装置にストアされるデータを含むこと
と、修正されたINSTを作成するために少なくとも1
つのINST全体を修正して、次のINSTとして実行
するために記憶装置中に修正されたINSTをストアす
る手段と、修正されたINSTは、外部供給源から同報
通信されたINSTによって選ばれた時に反復して使用
されることとを含む。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、複数個の異なった
処理エレメント(PE)において異なったインストラク
ションを実行する場合でもコンピュータの良好な効率を
維持する、複数個のPEを含む「単一インストラクショ
ン・ストリーム複数データ・ストリーム(Single-Instr
uction-Stream-Multiple-Data-Stream−SIMD)」の
コンピュータ装置に関する。
【0002】より詳細に言えば、本発明は、ローカル
(局部的な)インストラクション・バッファ、又はロー
カル・インストラクション・メモリを使用することによ
って、SIMDコンピュータ装置を、アプリケーション
のより大きな組に拡張することができる方法及び装置に
関するものである。
【0003】本発明を適用したSIMDコンピュータ装
置は、夫々の処理エレメントが局部的なインストラクシ
ョン源を持っている複数個の処理エレメントと、マルチ
プレクサ(MX)と、複数のインストラクションの同一
でない順序(sequence)を実行するために、同報通信さ
れたインストラクションを修正する手段とを含んでい
る。本発明は、インストラクションの論理インデックス
又はデータ内容に基づいて、異なった複数のプロセッサ
で異なった複数のインストラクションを実行させること
に向けられている。
【0004】
【従来の技術】複数プロセッサによる並列処理は、例え
ばイメージ処理、天気予報、核反応計算、パターン認識
及び弾道ミサイル防衛などのような科学的又は工学的な
困難な計算問題を解くために必須の性能改善を達成する
ための最も有効なアプローチであると広く考えられてい
る。一般に、平列計算機は、夫々がデータ・メモリ及び
オペランド・レジスタを持っている一連の処理エレメン
ト(PE)を含んでおり、各PEは相互接続ネットワー
クを介して相互接続されている。
【0005】この場合、要求される性能の改善は、現在
用いられているベクトル・コンピュータ又は汎用コンピ
ュータによって得られる性能よりも数倍高い性能、即ち
将来開発されるであろうコンピュータから期待できる性
能である。複数プロセッサによる並列処理について最も
高い開発努力が払われている2つのアプローチは、上述
のSIMDのコンピュータ装置によるアプローチと、
「複数インストラクション・ストリーム複数データ・ス
トリーム(Multiple-Instruction-Stream-Multiple-Dat
a-Stream−MIMD)」のコンピュータ装置によるアプ
ローチとである。
【0006】SIMDコンピュータ装置によるアプロー
チは、個別の(private)データ・メモリと、中央制御
装置(例えば、中央処理装置(CPU))から同報通信
された複数のインストラクション(例えば、プログラ
ム)を同じ順序で同時に実行する論理演算機構(AL
U)とを有する処理エレメントを多数含んでいる。より
特定して言えば、中央制御装置(例えば、アレイ・コン
トローラ)は、ホスト・コンピュータ又は同等の装置か
らの1つのプログラムにアクセスし、各プログラム・ス
テップを解釈し、そして、同じインストラクションをす
べての処理エレメントへ同時に同報通信する。従って、
個々の処理エレメントは、共通のインストラクション・
ストリームの制御の下で動作する。
【0007】MIMDコンピュータ装置によるアプロー
チは、処理エレメント自身のプログラム・メモリ及び制
御ユニットを持つ処理エレメントを多数含んでおり、こ
れらのメモリ及び制御ユニットは、1つのプログラムか
らの複数のインストラクションの同じでない順序で同時
に実行するよう処理エレメントを動作させる。従って、
MIMD並列コンピュータ装置は、アレイ状に配列され
た処理エレメントの各々が処理エレメント自身のデータ
によって処理エレメント自身の独自のインストラクショ
ン・ストリームを実行するような処理エレメントを持っ
ている。
【0008】並列処理に対するSIMDコンピュータ装
置のアプローチ及びMIMDコンピュータ装置のアプロ
ーチの両方とも、それらのアプローチに関連した利点及
び不利点を持っている。
【0009】例えば、SIMDコンピュータ装置におい
て、処理動作を同期させるための負担を軽減するため
に、プロセッサ間の相互通信は、複数のプロセッサ中の
インストラクションの実行と同期することができる。
【0010】更に、ネットワーク内の混信は、コンパイ
ル時に、プロセッサ相互の通信をスケジュールすること
によって除去することができる。この方法は、ネットワ
ークを、より高い通信帯域幅に維持することによって、
通信処理動作の負担を軽減することができるので、プロ
グラムの実行を一層効率的に行なうことができる。
【0011】従って、演算処理単位が非常に規則的な構
成を持っているため、SIMDコンピュータ装置の複数
のプロセッサの間でデータを仕切ることができ、従って
中央コントローラから各プロセッサへ送られる複数のイ
ンストラクションの同じ順序によって、データの異なっ
たセクションを処理することができる場合の問題につい
ては、通常、SIMDコンピュータ装置は、ほぼ同じよ
うなハードウエアの複雑性を持っているMIMDコンピ
ュータ装置よりも秀れている。
【0012】更に、SIMDコンピュータ装置中の個々
のプロセッサは、プロセッサ自身のプログラム・メモリ
と、インストラクションの取り出し及びデコード用論理
回路とを持っていないので、SIMDコンピュータ装置
は、少ないハードウエアで簡単な設計とすることができ
るから、開発及び製造コストを低下することができる。
現在、幾つかのSIMDコンピュータ装置が市販されて
いる。
【0013】然しながら、疎(sparse)マトリックス・
ベースの演算処理のような或る種のアプリケーションに
おいては、異なる区画のデータは、低いデータ密度を持
つデータ区画のために最適化された異なったフォーマッ
トでストアすることができるので、同じインストラクシ
ョン順序によって、異なった区画のデータを処理するこ
とは厄介な処理である。従って、異なったフォーマット
でストアされているデータにアクセスするために、イン
ストラクションの異なった順序が必要とされる。計算
が、性質上非常に規則的で、均質であり、かつSIMD
コンピュータ装置に対して良好に適合しているアプリケ
ーション(例えば、規則的なグリッドにより表現する技
術を用いた流体力学の計算アプリケーション)において
さえも、異質なコンポーネント、つまり、主演算が点在
されている境界エレメントの計算のような異質なコンポ
ーネントがある。このような異質なコンポーネントが存
在する場合には、SIMDコンピュータ装置の最終的な
性能は低下される。
【0014】例えば、物理的なシステムの動作をシミュ
レートするために使用される多くの数値演算方法は、複
数の性質(property)(例えば、温度、圧力、密度等)
の組としてシステムを表現している。これらの性質の各
々は、複数のグリッド・ポイントの集合の各ポイントに
おいて時間の関数として定義される。これらのグリッド
・ポイントの幾つかは、他のグリッド・ポイントによっ
て取り囲まれており、これらのグリッド・ポイントは内
部グリッド・ポイントと呼ばれる。グリッド・ポイント
の集合中の他のグリッド・ポイントは、シミュレートさ
れる物理的システムの境界の位置にあり、従って、他の
グリッド・ポイントによって完全に取り囲まれてはいな
い。これらは、境界グリッド・ポイントである。内部グ
リッド・ポイントの位置にあるシステムの作用(behavi
or)を正確にモデル化する数式、又は物理法則は、境界
グリッド・ポイントの作用をモデル化するために用いら
れる数式とはしばしば異なっている。その結果、内部グ
リッド・ポイントの作用を計算するために用いられるプ
ログラム、即ちインストラクション順序(sequence)
は、境界グリッド・ポイントの作用を計算するために用
いられるインストラクション順序とは異なっている。
【0015】上述のタイプのアプリケーションが並列コ
ンピュータにプログラムされた時、シミュレートされる
物理的なシステムのグリッド・ポイントは、同じ個数の
グリッド・ポイントを受け入れた複数のPEの間で仕切
られる。プロセッサ間の相互通信に関する制限条件によ
って、通常、幾つかのPE(処理エレメント)は内部グ
リッド・ポイントだけを受け入れ、それ以外の残りのP
Eは、割り当てられた内部グリッド・ポイントに加え、
それら残りのPEを通して配分された境界グリッド・ポ
イントとを持っている。64個のグリッド・ポイントを
有する2次元のシステムを示している図8において、内
部グリッド・ポイントは、破線の交点の位置にある丸印
のマークによって示されており、他方、境界グリッド・
ポイントは、X印のマークによって示されている。若し
このシステムが16個のプロセッサで構成されたSIM
Dコンピュータ装置においてシミュレートされるものと
すれば、16個のプロセッサの間でグリッド・ポイント
を仕切った場合の1つの可能性ある態様が図9に示され
ている。この仕切り方法において、4個のプロセッサが
1つの内部グリッド・ポイント及び3つの境界グリッド
・ポイントを獲得し、8個のPE(処理エレメント)が
2つの内部グリッド・ポイント及び2つの境界グリッド
・ポイントを獲得し、そして、残りの4個のプロセッサ
が4個の内部グリッド・ポイントを夫々獲得している。
【0016】若し16個のプロセッサから成るSIMD
並列コンピュータ装置が、図9に従ってPEを仕切った
上述のシステムをシミュレートするために使用されたな
らば、中央コントローラは、内部グリッド・ポイントの
演算処理を4回行なうために必要とするインストラクシ
ョン順序を発生して、プロセッサP5、P6、P9及び
P10を動作させることにより、これらのプロセッサに
割り当てられた計算を完了する。この期間の間で、プロ
セッサP0、P3、P12及びP15は、1つの内部グ
リッド・ポイントだけしか処理しないから、この期間の
3/4の間空転することになる。他の8個のプロセッサ
(P1、P2、P4、P7、P8、P11、P13、P
14)は、期間の半分の間中空転する。内部グリッド・
ポイントの計算処理を4回行なうための上述のインスト
ラクション順序を発生した後、中央コントローラは、プ
ロセッサP0、P3、P12及びP15によりこれらの
プロセッサの演算を完了させるために、境界グリッド・
ポイント演算処理を行なうためのインストラクション順
序を3回取り出さなければならない。プロセッサP5、
P6、P9及びP10は、この期間の間で空転し、残り
の8個のプロセッサは、この期間の2/3の時間しか利
用されない。
【0017】MIMDコンピュータ装置は、上述の状態
を処理する場合には、SIMDコンピュータ装置よりも
遥かに効率的に処理することができる利点を持ってい
る。一般論として言えば、SIMDコンピュータ装置の
処理エレメントは、MIMDコンピュータ装置の処理エ
レメントよりも多数の処理エレメントを必要とするが、
より簡単である。
【0018】従って、SIMD並列コンピュータ装置
は、或る種のアプリケーションにおいてMIMDコンピ
ュータ装置よりも秀れており、そして、MIMD並列コ
ンピュータ装置は、他のアプリケーションの場合にSI
MDコンピュータ装置よりも秀れている。今迄に、SI
MDコンピュータ装置及びMIMDコンピュータ装置の
両方の性能を最適化したコンピュータは知られていな
い。
【0019】初期のSIMDコンピュータ装置におい
て、大域インストラクションのコントローラ及び再ブロ
グラム可能なインストラクション・デコーダを有するア
レイ式のSIMDのプロセッサが与えられており、この
SIMDコンピュータ装置において、プログラム可能な
デコード用ハードウエアが各処理エレメント中で使用さ
れている。このプログラム可能なデコード用ハードウエ
アは、このハードウエアに関連した制御ストレージ中に
異なった情報をロードすることによって、デコード用ハ
ードウエアが再プログラムされるまで、同じ態様でその
インストラクションに付加されたインストラクションの
選択されたビットを常に修正する。
【0020】上述のコンピュータ・システムは、幾つか
の理由のため弱点がある。例えば、1つの弱点は、単一
のインストラクション、又は幾つかのインストラクショ
ン各々の幾つかのブロックをストアするためのローカル
・インストラクション・バッファが使用されていないこ
とである。
【0021】更に、SIMDコンピュータ装置のプロセ
ッサ中で、局部的にインストラクションを修正すること
の拡大解釈が知られている。殆どのSIMDコンピュー
タ装置は、プロセッサ中の動作を無効にするためのマス
ク・レジスタを使用している。並列コンピュータ装置
(例えばGF11並列コンピュータ)中の処理エレメン
トは、上述の従来のコンピュータにおいて提案されてい
るように、ネットワークのロード動作においてソース・
オペランドの選択を局部的に修正することができ、制限
された態様でALU(論理演算機構)の動作を変更する
ことができ、そしてメモリ・アドレスを局部的に修正す
ることができる。
【0022】然しながら、従来のコンピュータ・システ
ムにおいて、局部的に可能な修正のタイプは、処理エレ
メントにおいて実施されるハードウエア・サポートによ
って制限を受ける。従って、汎用目的のALUではない
他の回路が、修正されたインストラクションを論理演算
処理する必要があるので、修正可能な範囲には限界があ
る。
【0023】実際上、従来のアプローチは、インストラ
クション中のオペランドの修正、より特定して言えば、
すべてのインストラクション中の同じ位置中に現われる
オペランドの修正に向けられている。従来のコンピュー
タ・システムにおいては、インストラクション全体をす
べて一括して修正する手段は存在しない。
【0024】更に、上述の通常のコンピュータ・システ
ムにおいて、例えば、処理エレメントの論理的な接続度
(connectivity)が、プログラムの実行の全期間の間
で、物理的な近接体(ハードウエア的な接続度)及び論
理的な近接体(論理的な接続度)間でマッピングを行な
うことによって定義される場合のように、同じ修正が長
期間に亙ってすべてのインストラクションに適用されな
ければならない状態においては、プログラム可能なハー
ドウエア・サポートは有益である。この理由は、プログ
ラム可能なデコード用ハードウエアをプログラムするた
めの労力を費した後では、後続するインストラクション
を同じ態様で修正するための労力を必要としないためで
ある。
【0025】然しながら、上述したような従来のアプロ
ーチの下では、プロセッサの論理インデックス、又はデ
ータ内容に基いて異なったプロセッサによって異なった
インストラクションを実行させることは、下記に説明す
るような厳しい制限を持っている。
【0026】例えば、若しプログラム可能なデコード用
ハードウエアが、例えば、通常の検索テーブル(lookup
table−LUT)を含むデコード用ハードウエアのよう
に単純なものであるならば、このアプローチを使用した
場合、すべてのインストラクション中の同じ位置におい
て生じ、かつ、すべてのインストラクション中において
同じ修正を必要とするオペランドを持つインストラクシ
ョンの中のビットだけしか修正することができない。こ
のことは、従来のコンピュータ・システムに深刻な制限
を与え、特に、OPCODE(オペレーション・コー
ド)それ自身の修正は、簡単に行なうことはできない。
【0027】更に、若しプログラム可能なデコード用ハ
ードウエアがインストラクションに対して、より包括的
な修正を行なうように設計されているならば、これは、
非常に複雑となり、又は非常に低速度となり、従ってS
IMD的なアプローチの利点を失うことになる。
【0028】従来の他のコンピュータ・システムにおい
て、SIMDモード及びMIMDモードに再構成可能な
マルチプロセッサが提供されている。このコンピュータ
・システムにおける各処理エレメントは、共有された外
部インストラクション・メモリのキャッシュとして使用
される独立したインストラクション・メモリに接続され
ている。各処理エレメントは、他の順序付け信号、又は
同期信号を中央コントローラから受け取ることなく、M
IMDモードの完全な自律プロセッサとして動作する、
インストラクションの取り出し及びデコード用論理回路
を持っている。SIMDモードからMIMDモードへモ
ード変換するため、及びSIMDモードにとどまって動
作するための特別の同期回路が与えられている。
【0029】上述のコンピュータ・システムにも弱点が
あり、その弱点とは、複数のプロセッサにより専有され
る外部インストラクション・メモリか、又はプロセッサ
間で共有される外部インストラクション・メモリが存在
することである。これらのプロセッサは、自律的にイン
ストラクションを取り出すので、インストラクションの
取り出し及びデコード用論理回路と、同期回路とが各処
理エレメントの中に必要とされる。
【0030】更に、この従来のコンピュータ・システム
において、各処理エレメント中のハードウェアと、各プ
ロセッサ用の独立したインストラクション・メモリと、
共有外部インストラクション・メモリと、インストラク
ションの取り出し及びデコード用論理回路と同期回路と
は、MIMDモードで実行する処理エレメントに完全な
自律性を与える。然しながら、この余分の論理回路はコ
ンピュータ装置の複雑性を増加し、従って、多くの科学
的、又は工学的アプリケーションに対して顕著で付加的
な利益をもたらすことなく、処理エレメントのコストを
増加する。
【0031】更にまた、従来の他のコンピュータ・シス
テムは、複数個の二次元的な処理エレメントを含んでお
り、この場合、アレイの1つの行中にあるすべてのプロ
セッサは、同じプログラムを実行し、つまりSIMDモ
ードで動作し、他方、異なった行のプロセッサは、相互
に独立して動作し、従って、行レベルにおいてMIMD
モードで動作する。このコンピュータ・システムにおい
て、1つの行中の処理エレメントは、それらの処理エレ
メントが受け取った同一のインストラクションを局部的
に修正する能力を持っていない。
【0032】図1はSIMDコンピュータ中の処理エレ
メント(PE)1の包括的な構成を示している。図1に
おいて、1つのSIMDコンピュータ装置の処理エレメ
ントと、他のSIMDコンピュータ装置の処理エレメン
トとの間の相異については省略してあるけれども、すべ
てのSIMDコンピュータ装置の必須の特性は示されて
いる。
【0033】処理エレメント(PE)1によって実行さ
れるインストラクションは、図5に示されたインストラ
クションの外部供給源100から受け取られ、外部供給
源100は、例えば中央コントローラ、又はアレイ・コ
ントローラを含んでいる。代表例において、アレイ・コ
ントローラは、転じて、メーンフレーム・コンピュー
タ、又はパーソナル・コンピュータでもよいホスト・コ
ンピュータに接続されている。インストラクション・ワ
ードの幅は、コンピュータの設計者によって、必要に応
じて選択することができる。例えば、インストラクショ
ンのビット幅は32ビット幅乃至256ビット幅であっ
てよい。
【0034】図1において、インストラクション・レジ
スタ2にインストラクションを受け取ると、各インスト
ラクションは、PE1の個別(private)のデータ・メ
モリ3からのデータにアクセスし、そして、データ・メ
モリ3へデータを再度ストアし戻す前に論理演算機構
(ALU)4を用いてこのデータに所望の論理演算を行
なうように実行される。
【0035】また、インストラクションの一部は、図1
のインストラクション・レジスタ2と、図5に示した相
互接続ネットワーク102との間の転送を制御する。こ
れらのイスントラクションをストアするためのインスト
ラクション・メモリは存在しない。図1に示した個別の
データ・メモリ3は、レジスタ、キャッシュ・メモリ、
主メモリなどを含む階層的なメモリであってよく、この
場合、メモリ階層の種々のレベル間のデータの移動は、
中央コントローラから受け取ったインストラクションに
よって制御される。
【0036】図1はインストラクション・レジスタ2か
ら、個別のデータ・メモリ3及びALU4へ直接に制御
信号を送るように示しているが、インストラクションが
ALU4及びデータ・メモリ3に適用される前に、中央
コントローラから受け取ったインストラクションを更に
デコードするための付加的な制御ロジックを、インスト
ラクション・レジスタ2に関連付けることができる。
【0037】殆どすべてのSIMDコンピュータ装置中
のPEは、PE自身のデータ・メモリ3からのデータ、
又は通常は、条件コード・レジスタの内容に基いて、図
1において「無効」と表示された破線によって示されて
いるように、インストラクション・レジスタ2の中の現
在のインストラクションを部分的に無効にするか、又は
すべて無効にすることができる。インストラクションを
無効にするこの能力は、異なったデータに関して異なっ
た動作を遂行するために非常に有効な能力であるけれど
も、しかし、上述した殆どの状態の下では、異なったP
E中のインストラクションの同じでない順序を実行する
ためには柔軟性がなく、従って非常に非効率的である。
【0038】
【発明が解決しようとする課題】従って、本発明の目的
は、従来のコンピュータ・システムにおける上述の問題
を解決するSIMDコンピュータ装置を提供することに
ある。
【0039】本発明の他の目的は、複数のインストラク
ションを異なった順序で実行することのできる処理エレ
メントを有するSIMDコンピュータ装置を提供するこ
とにある。
【0040】
【課題を解決するための手段】本発明を適用した構成
は、コンパイル時に、演算と通信とを計画することによ
って最適に使用することのできる単純で効率的なハード
ウエアを有するSIMDコンピュータ装置の利点を持っ
ている。
【0041】また、従来のコンピュータ・システム中の
すべての処理エレメント(PE)において同じインスト
ラクション順序を実行する場合に、しばしば効率が著し
く低下する問題は、本発明の構成によって克服すること
ができる。
【0042】特に、ローカル・インストラクション・バ
ッファ、又はローカル・インストラクション・メモリを
用いることによって、効率の低下は、以下に説明される
ように、効果的に回避することができ、SIMDコンピ
ュータ装置の適用性は、従来よりも遥かに大きなアプリ
ケーションの組に拡張することができる。
【0043】本発明は、以下に説明されるような3つの
ハードウエア構成と、インストラクションの異なった順
序を実行する能力をPEに与えるために、それらの構成
を、SIMD並列コンピュータ装置のPE中に統合する
方法とを含んでいる。
【0044】本発明のハードウエア構成は、PEの設計
を単純化し、SIMDコンピュータ装置の性能に殆ど悪
影響を及ぼさず、そして、上述したように、従来のSI
MDコンピュータ装置が持っている性能上の隘路を回避
したSIMDコンピュータ装置を与えることができる。
【0045】本発明の第1の特徴に従って、単一のイン
ストラクションで複数のデータ・ストリーム(SIM
D)を含むアレイ配列されたプロセッサが与えられ、こ
のSIMDアレイ・プロセッサは複数個の処理エレメン
トを含んでおり、各処理エレメントは、インストラクシ
ョンの外部供給源から同報通信されたインストラクショ
ンを受け取る。複数個の処理エレメント(PE)の各々
は、データをストアするためのメモリと、同報通信され
たインストラクションを受け取るための第1のマルチプ
レクサ(MX)と、第1のマルチプレクサからの出力を
受け取り、かつ制御信号及び上記メモリへの出力を与え
るために、上記メモリ及び第1のマルチプレクサに接続
されたインストラクション・レジスタと、少なくとも1
つのインストラクションをストアするための、インスト
ラクション・レジスタ及び上記メモリに接続されたスト
レージ手段であって、その少なくとも1つのインストラ
クションは、上記メモリから読み出されたデータを含ん
でおり、かつストレージ手段にストアされ、第1のマル
チプレクサは更にストレージ手段中の少なくとも1つの
インストラクションを受け取る、ストレージ手段と、修
正されたインストラクションを作成するために、少なく
とも1つのインストラクションを修正し、かつ、次のイ
ンストラクションとして実行するために、その修正され
たインストラクションをストレージ手段中にストアする
ための手段であって、その修正されたインストラクショ
ンは、外部供給源からの同報通信されたインストラクシ
ョンによって選択された時に繰り返して使用される、上
記手段とを含んでいる。修正する手段は、同報通信され
たインストラクションと修正されたインストラクション
との内、インストラクション・レジスタに出力すべき1
つのインストラクションを選択する装置を含んでいる。
【0046】本発明の構成によって、従来のコンピュー
タ・システムの上述の問題は解決され、そして、本発明
のSIMDコンピュータ装置中の処理エレメントは、異
なったインストラクション順序を実行することができ、
そして、従来のコンピュータ・システムにおいてしばし
ば効率を著しく低下させるすべてのPE中の同一インス
トラクションの実行を制限する問題が、ローカル・イン
ストラクション・バッフア、又はローカル・インストラ
クション・メモリを使用することによって克服すること
ができる。本発明の装置の処理効率は良好に維持するこ
とができ、かつSIMDコンピュータ装置の適用性は、
遥かに大きなアプリケーションの組に拡大することがで
きる。
【0047】
【発明の実施の形態】図2を参照すると、SIMDコン
ピュータ装置の処理エレメント(PE)20によって複
数のインストラクションの異なった順序を実行させる回
路構造を示すブロック図が示されている。代表的な実施
例においてはアレイの形式にされ、かつ、図5に示され
ているように公知の態様で相互接続されるPEの数は、
ユーザの要求及びアプリケーションに従って選択するこ
とができる。処理エレメントの代表的な個数は8個から
65536個までの範囲内で変化する。
【0048】本発明の説明を簡明にするために、図2乃
至図4は、下記に説明されているように単一の処理エレ
メントを示している。更に、本発明の理解を容易にする
ために必要とされる主要な接続ラインだけが示されてい
る。図示されているように、接続ラインは単方向、又は
双方向のラインで示されている。
【0049】図5に示したインストラクションの外部供
給源100は、図5のインストラクション・バス101
を介して複数個のPEへ並列に同報通信インストラクシ
ョンを発行する。
【0050】図2に戻って本発明の細部を説明すると、
処理エレメント(PE)20は、図1に示された従来の
コンピュータ・システムのPEと同じように、インスト
ラクション・レジスタ21、個別のデータ・メモリ22
及び論理演算機構23を含んでいる。
【0051】然しながら、本発明に従ったPE20は、
「ローカル・インストラクション・バッファ」24を含
んでおり、このローカル・インストラクション・バッフ
ァ24において、インストラクションは、PEの個別の
データ・メモリ22からのデータを用いて組み立てるこ
とができ、次いで、局部的に組み立てられたこのインス
トラクションはPE20によって実行することができ
る。また、PE20はマルチプレクサ25及び選択ビッ
ト発生回路26を含んでいる。
【0052】インストラクション・ワードの幅はi個の
バイトの幅であり、かつi個のバイトの幅は、mバイト
(m個のバイト)のデータ・メモリ幅より遥かに大きい
ものと仮定して、特別のインストラクションILOAD
(x、A)がPE20のインストラクション・セットに
付加される。x及びAがILOADインストラクションの即
時オペランドであるこの特別のILOAD(インストラクシ
ョンのロード)インストラクションは、データ・メモリ
22のアドレスAからmバイトを読み出させ、かつ、ロ
ーカル・インストラクション・バッファ24のm×x乃
至m×(x+1)_1アドレス位置にストアさせる。
【0053】ILOADインストラクションを実行するため
に、PE20は、読み取り駆動信号と共に、メモリ22
のmバイトのアドレス「A」を制御ライン29を介して
メモリ22に送る。また、PE20は、インデックスx
及び書き込み駆動信号を制御ライン28を介してローカ
ル・インストラクション・バッファ24に送る。制御ラ
イン29上の読み取り駆動信号は、ローカル・インスト
ラクション・バッファ24とALU23とに接続された
バス27上に、メモリ22のアドレスAにあるmバイト
を検索して読み出させる。制御ライン28上の書き込み
駆動信号は、バス27上の「mバイト」を、ローカル・
インストラクション・バッファのm×x乃至m×(x+
1)_1アドレス位置に書き込ませる。
【0054】PE20は局部的なオフセット値をアドレ
ス・フィールドAに加えることによってILOADインスト
ラクションのアドレス・フィールドAを局部的に修正す
る能力を持っている。この局部的オフセット値はデフォ
ルトのベース・レジスタ、すなわち汎用レジスタの内容
から与えられる。このような態様で同報通信インストラ
クションのアドレス・フィールドを修正する方法は公知
である。
【0055】図5に示した外部供給源100(例えば、
アレイ・コントローラ、又は中央コントローラ)からの
i個のバイトの入力インストラクションと、ローカル・
インストラクション・バッファ24からのi個のバイト
の入力とを受け取ったマルチプレクサ25は、各マシン
・サイクルにおいて、中央コントローラからのインスト
ラクションか、又はPEのローカル・インストラクショ
ン・バッファ24中のインストラクションの各mバイト
のブロックを選択する。このアプリケーションを遂行す
るマシン・サイクルは、インストラクションの外部供給
源(例えば、中央コントローラ又はアレイ・コントロー
ラ)の基本のタイミング・サイクルと同じタイミング・
サイクルである。
【0056】選択されたインストラクションは、次のイ
ンストラクションとして実行されるように、インストラ
クション・レジスタ21(バッファ)中にストアされ
る。マルチプレクサ25による選択動作は、選択ビット
発生回路26により発行された「選択ビット」によって
制御され、各選択ビットは、インストラクション・ワー
ドのmバイトを選択するためにマルチプレクサ25を制
御する。
【0057】選択ビット発生回路26の選択ビットは、
他の新しいインストラクション、SET_SEL_BITSインスト
ラクションを用いて中央コントローラによって設定さ
れ、そして選択ビット発生回路26中にストアされる選
択ビット値は、このSET_SEL_BITSインストラクションの
即時オペランドとして与えられる。また、SET_SEL_BITS
インストラクションは外部供給源100によってすべて
のPEに同報通信される。ライン26aは、選択ビット
発生回路26の選択ビットを設定するために、SET_SEL_
BITSインストラクションの即時オペランドを、インスト
ラクション・レジスタ21から選択ビット発生回路26
へ送る接続線である。
【0058】選択ビット発生回路26は、選択ビットが
SET_SEL_BITSインストラクションによって確実にセット
されなければ、各マシン・サイクルにおいて自動的にク
リアされる。
【0059】選択ビット発生回路26は、プロセッサ特
有のデータに基づき、インストラクション中の幾つかの
マイクロ・オペレーションを中央コントローラ100か
ら得て、他のマイクロ・オペレーションをプロセッサの
ローカル・インストラクション・バッファ24から取れ
るようにしたことにより、中央コントローラから同報通
信されたインストラクションの部分的修正を行なえる。
【0060】選択ビット発生回路26の、より効果的な
他の使用方法は、mバイト・ブロックを制御するのでは
なく、各選択ビットによって1つのマイクロ・オペレー
ションを制御することである。
【0061】これまでの説明は、インストラクション・
ワードの長さがデータ・メモリのワードの長さよりも遥
かに大きいものと仮定して説明してきた。若しインスト
ラクション・ワードの長さとデータ・メモリのワードの
長さとの差が大きくなければ、ローカル・インストラク
ション・バッファ24中のローカル・インストラクショ
ンと、中央コントローラから同報通信されたインストラ
クションとの間でいずれかのインストラクションを選ぶ
ために、ただ1つの選択ビットを使用することが可能で
ある。この場合の代表的なシステムの例において、イン
ストラクション・ワードの長さは16ビット幅乃至25
6ビット幅であり、他方、データ・メモリのワードの長
さは32ビット幅乃至64ビット幅である。
【0062】コンピュータ・プログラムを作成する模範
例を簡単にするために、選択ビット発生回路26及びロ
ーカル・インストラクション・バッファ24を制御する
マイクロ・オペレーションは、同報通信されたインスト
ラクションからのみ受け取ることが望ましい。このよう
な方法は、同報通信されたインストラクションの対応接
続ラインを、インストラクション・レジスタ21へ直接
に配線することによってハードウエアで実施することが
できる。
【0063】図2に示したシステムの動作について以下
に説明する。インストラクションの異なった順序をSI
MDコンピュータ装置のプロセッサの中で実行するため
に、先ず、短いインストラクション順序には、NO−O
P(無効)インストラクションで「パッディング」する
ことによって、すべてのインストラクション順序を同じ
寸法に揃える。このパッディング処理は公知の技術なの
で、これ以上の説明はしない。
【0064】その後、上述のインストラクション順序中
の各インストラクションに対して、すべてのプロセッサ
により下記のステップが遂行される。
【0065】先ず、すべてのPEによって実行されるべ
きインストラクションの中で同一でないマイクロ・オペ
レーション(またはmバイト・ブロック)が、ローカル
・インストラクション・バッファ24の中に組み立てら
れる。この組み立ては、2ステップ処理で行なわれる。
第1のステップにおいて、各PE中のインストラクショ
ンを修正するために必要とされるmバイト・ブロック
は、各PEの個別のデータ・メモリ22において計算さ
れる。細部が後述されるこのステップは、これも後述す
る或る種の条件の下では省略することができる。次い
で、夫々がローカル・インストラクション・バッファ2
4中にmバイトのブロックをロードするILOADインスト
ラクションが適切な数だけ、各PEの個別のデータ・メ
モリ22からローカル・インストラクション・バッファ
24へmバイト・ブロックを移動するために、アレイ・
コントローラ100によって発行される。
【0066】次に、SET_SEL_BITSインストラクションも
また中央コントローラ100によって発行される。この
インストラクションを実行することにより、次のインス
トラクションは、ローカル・インストラクション・バッ
ファ24からのプロセッサ特有のマイクロ・オペレーシ
ョンを含み、残りのマイクロ・オペレーションは、中央
コントローラによって同報通信されたインストラクショ
ンから取り出される。
【0067】中央コントローラ100から同報通信され
たインストラクションを修正するために後で使用される
mバイト・ブロックを、PEの個別のデータ・メモリ中
で組み立てるために、build_code_sequenceと呼ばれる
インストラクションの順序が、アレイ・コントローラ1
00(外部供給源)から各PEに同報通信される。然し
ながら、各PEは、その個別のデータ・メモリ22の中
に異なったデータを持つことができるから、build_code
_sequenceによって計算された上述のmバイト・ワード
は、各PEにおいて異ならせることができる。更に、図
2に示され、既に説明したように、同報通信された任意
のインストラクションの実行を局部的に無効にする各P
Eの能力は、異なったmバイト・ワードを各PEの中に
組み立てるのにも用いることができる。同報通信された
インストラクションの実行は、PEのインストラクショ
ン・セットの他のインストラクションによって設定する
ことのできる条件コード・レジスタ中の特別のビットの
ようなプロセッサ特有のデータに基づいてPEの中で局
部的に無効にされる。
【0068】図6は、build_code_sequenceインストラ
クションを実行した後のデータ・メモリであって、関連
するSIMDコンピュータ装置の2つのPEのデータ・
メモリ22を示す図である。これらのbuild_code_seque
nceインストラクションによって計算され、そして、ア
ドレスAの位置で開始したPE個別データ・メモリ22
中にストアされたインストラクション・ワードのmバイ
ト・ブロックは、2つのPEの中では異なったバイト・
ブロックであり、コード1及びコード2で示されてい
る。
【0069】若し同報通信されたインストラクションを
修正するために必要とされるmバイト・ブロックが、前
に同報通信されたインストラクションを修正するために
既に計算されており、後で使用するために、PEの個別
データ・メモリ22中の同じ位置中にストアされている
ならば、build_code_sequenceインストラクションは必
要としない。
【0070】代案として、同報通信されたインストラク
ションを修正するために異なったPEによって使用され
るmバイト・ワードの異なった組は、コンパイル時に計
算することができ、そして、このようなmバイト・ワー
ドの組は、プログラムがアレイ・コントローラ100中
にロードされる時に、すべてのPEの個別データ・メモ
リ22中にロードすることができる。
【0071】図7は2個のPEを示しており、PE1及
びPE2は夫々コード1及びコード2と記載されたmバ
イト・ブロックの2つの組をストアしている。ここで、
各コード・ブロックは、同じ長さ(例えばL個のmバイ
ト・ワード)を持っており、かつ、各コード・ブロック
は、夫々、アドレスB1及びB2の位置で開始し、各P
E中の同じ位置にストアされているものと仮定する。同
報通信された1つのインストラクションがPE1中のコ
ード1及びPE2中のコード2を用いて修正されなけれ
ばならない場合、L個のILOADインストラクションが中
央コントローラから同報通信される。同報通信されたIL
OADインストラクション中で特定されたアドレスA、A
+1、...、A+1_1は、既に説明されたようなプ
ロセッサ特有の局部的オフセット値を加えることによっ
て、PE1により、アドレスB1、B1+1、...、
B1+1_1に修正され、そして、PE2により、B
2、B2+1、...、B2+1_1に夫々修正され
る。その結果、PE1はそのローカル・インストラクシ
ョン・バッファ24中にコード1がロードされ、他方、
PE2はそのローカル・インストラクション・バッファ
中にコード2がロードされる。
【0072】PE自身のデータ・メモリ22からのデー
タに基づく図1に示されたシステムと同じように、PE
は、図2中で「無効」と表示された破線により示されて
いるように、インストラクション・レジスタ21の中の
現在のインストラクションの一部、又はすべてを無効に
することができる。
【0073】上述した構成及び方法は非常に単純である
けれども、これらは或る種の効率の悪さを持っている。
【0074】例えば、インストラクションの異なった順
序中の各インストラクションに対して、PEは幾つかの
ILOADインストラクションと1つのSET_SEL_BITSインス
トラクションとを実行しなければならない。若し異なっ
たインストラクション順序が繰り返し実行されたなら
ば、build_load_sequenceインストラクションを設けた
ことによるコストは、異なったインストラクション順序
の繰り返し実行により償却できる。
【0075】然しながら、反復して実行されるインスト
ラクションの異なった順序がインストラクション順序中
に2以上のインストラクションを持っている場合には、
複数のILOADインストラクションが、インストラクショ
ン順序の繰り返し毎に、インストラクション中の各イン
ストラクションのために必要とされる。
【0076】図3は図2に示された実施例の構造(及び
関連した方法)を改善した本発明の第2の実施例を示す
図である。
【0077】特に、ローカル・インストラクション・バ
ッファの中にプロセッサ特有のインストラクションを組
み立てるために使用されるILOADインストラクション動
作の負担を軽減するために、図2に示したローカル・イ
ンストラクション・バッファ24は、図3に示したプロ
グラム・メモリ34によって置き換えられる。プログラ
ム・メモリ34は多数の(好ましくは1Kワード乃至1
6Kワード)インストラクション・ワードを含んでい
る。プロセッサ特有のインストラクションは、既に説明
したように、ILOADインストラクションを用いることに
よってプログラム・メモリ中のインストラクション・ワ
ードに組み立てることができる。この実施例において、
ILOADインストラクションは、プログラム・メモリ34
中のインストラクション・ワードを選択するための付加
的な即時オペランドを持っている。
【0078】図3に示した第2の実施例の処理エレメン
ト(PE)30は、図1に示した従来のコンピュータ・
システムのPE1と、図2に示した本発明の第1の実施
例のPE20の構造と同じように、インストラクション
・レジスタ31、個別のデータ・メモリ32及びALU
33を含んでいる。
【0079】然しながら、本発明の第2の実施例のPE
30は、プログラム・メモリ34、Icountレジス
タ35、ベース・アドレス・レジスタ36、マルチプレ
クサ37、ゼロ検出論理回路38、減算器38及びマル
チプレクサ40を含んでいる。第2の実施例のPE30
の細部を以下に説明する。
【0080】既に説明したように、図2のローカル・イ
ンストラクション・バッファ24中にプロセッサ特有の
インストラクションを組み立てるために使用されるILOA
Dインストラクション動作の負担を軽減するために、図
2に示されたローカル・インストラクション・バッファ
24は、図3に示されているように、多数のインストラ
クション・ワードを含むプログラム・メモリ34によっ
て置き換えられている。
【0081】第2の実施例において、ILOADインストラ
クションは、3個のオペランドを持っており、ILOAD
(x、A、B)で示した簡略的なコードで特定されてい
る。x及びAオペランドは図2のものと同じ機能を持っ
ており、その意味は既に説明した通りである。新しいオ
ペランドBは、ILOADインストラクションによって更新
されるプログラム・メモリ34中のインストラクション
・ワードを選択する。従って、ILOAD(x、A、B)を
実行すると、PEのデータ・メモリのアドレス・フィー
ルドAからmバイト・ワードが読み取られ、PEのプロ
グラム・メモリのアドレス・フィールドBのm×x乃至
m(x+1)_1アドレス中にストアされる。
【0082】ブログラム・メモリ中の各インストラクシ
ョン・ワードは選択ビットの異なったパターンを要求す
ることができる。図3において、選択ビットによる援助
動作は示されていないから、従って、インストラクショ
ンのすべてのmバイト・ブロックは、同報通信されたイ
ンストラクションから取り出されるか、又はプロセッサ
のローカル・プログラム・メモリ34から取り出される
すべてのインストラクションから取り出される。然しな
がら、インストラクションに用いられる選択ビットをイ
ンストラクション・ワードと共にストアするなど、各プ
ロセッサ中のローカル・プログラム・メモリ34のワー
ド・サイズを増加することは比較的容易にできる。イン
ストラクション・ワードがプログラム・メモリから読み
出される時、選択ビットを分離し、マルチプレクサ37
用の制御信号を発生するためにゼロ検出論理回路38の
出力と組み合せることができる。
【0083】Icountレジスタ35及びベース・ア
ドレス・レジスタ36はPEの個別のインストラクショ
ン・メモリ34からのインストラクションの順序を実行
するために与えられている。これらのレジスタ35及び
36は、図2に示した選択ビット・レジスタ26に置き
代わっている。
【0084】第2の実施例においては、選択ビット・レ
ジスタ26(図2参照)の中に書き込むインストラクシ
ョンの代わりに、新しい2つのインストラクションが与
えられている。
【0085】第1のインストラクション、SET_ICOUNT
(x)はIcountレジスタ35の中に即時オペランド
を書き込むためのインストラクションである。SET_ICOU
NT(x)を実行すると、Icountレジスタ35がx値
に設定される。第2のインストラクションLOAD_BASE(A)
を実行すると、データ・メモリ32のアドレスAからデ
ータ(m個のバイト)を読み取り、そしてデータ・メモ
リ32から読み取られたデータはベース・アドレス・レ
ジスタ36中にストアされる。Icountレジスタ3
5は、現在のインストラクションによってセットされな
いかぎり、常にゼロになるまで減らされていく。
【0086】Icountレジスタ35の中にゼロでは
ない値があれば、PEは、中央コントローラから同報通
信されたインストラクションではなく、PE自身のプロ
グラム・メモリ34から次のインストラクションを選択
する(マルチプレクサ37を通して)。
【0087】プログラム・メモリ34のインストラクシ
ョン・アドレスは、ベース・アドレス・レジスタ36の
内容から、Icountレジスタ35の内容を差し引く
ことによって得られる。PEのローカル・プログラム・
メモリ34からのインストラクションの順序を実行する
ために、プログラム順序中の最後のインストラクション
のアドレスは、LOAD_BASEインストラクションを用いて
ベース・アドレス・レジスタ36の中にストアされる。
同報通信されたLOAD_BASEインストラクションを実行し
た後に、各PEは、それ自身のベース・アドレス・レジ
スタ36の中に異なった値を持つことができる。
【0088】その後、値Sが、Icountレジスタ3
5の中にストアされ、これにより、次のS個のインスト
ラクションは、プロセッサのローカル・プログラム・メ
モリ34から実行させる。
【0089】若し同報通信されるインストラクションの
幅が、設計上の重要な要素でなければ、ローカル・イン
ストラクションと同報通信されたインストラクションと
の間で何れかを選ぶマルチプレクサ37は、Icoun
tレジスタ35に接続されたゼロ検出論理回路38によ
るのではなく、同報通信されるインストラクション中に
特別のビットを設けることによって直接に制御すること
ができる。
【0090】図3に示した記号「A」は、プログラム・
メモリ34のためのアドレス用の接続ラインを示してい
る。記号「WE」で示した信号は、i÷m個の書き込み
駆動信号を表しており、この書き込み駆動信号はインス
トラクション・ワードの各mバイト・ブロック毎に1個
づつある。WE信号は、通常、高位に保たれているが、
WE信号の内の1つの信号は、1つのILOADインストラ
クションの間で低位にセットされ、そして、アドレス用
接続ラインAによって選択されたプログラム・メモリ3
4中のワードの対応するmバイト・ブロックの中に、デ
ータ・メモリ32から読み取られたデータを書き込ませ
る。記号「DIN」で示された接続ラインは、ILOADイ
ンストラクションによってデータ・メモリ32から読み
取られたデータをプログラム・メモリ34の中に転送す
る。
【0091】マルチプレクサ40の出力は、アドレス用
接続ラインAを介してプログラム・メモリに与えられ
る。ILOADインストラクションを実行している間で、プ
ログラム・メモリ34に与えられるアドレスは、同報通
信されたILOADインストラクションの即時オペランドで
あり、そしてライン40aを介してインストラクション
・レジスタ31からマルチプレクサ40へ与えられる。
すべてのWE信号のAND論理演算の結果はマルチプレ
クサ40のための制御入力として用いられる。WE信号
の内の1つの信号はILOADインストラクションの間で低
位なので、マルチプレクサ40への制御入力は、ILOAD
インストラクションの間で低位であり、従って接続ライ
ン40a上のアドレス信号はプログラム・メモリ34へ
与えられたアドレス信号として選択される。
【0092】PEがILOADインストラクションを実行し
ない時には、マルチプレクサ40は減算回路39によっ
て与えられた他の入力を選択し、そして、プログラム・
メモリ34へ与えられるアドレス信号は、ベース・アド
レス・レジスタ36の内容からIcountレジスタ3
5の内容を差し引いた値を持っている。
【0093】SIMDコンピュータ装置のPEが異なっ
たインストラクション順序を実行しなければならない
時、インストラクション順序全体は、インストラクショ
ン順序から任意のインストラクションが実行される前
に、プログラム・メモリ34において組み立てられる。
この動作は、プログラム・メモリの連続した位置に一時
に1個づつインストラクションを組み立てることによっ
て行なうことができる。プログラム・メモリ34の特定
のワードBの中にインストラクションを組み立てる方法
は、前述したローカル・インストラクション・バッファ
24の中にインストラクションを組み立てる方法と同じ
である。
【0094】インストラクションの順序全体がPEのプ
ログラム・メモリ34の中に組み立てられた後、そのイ
ンストラクション順序は、下記のようにPEによって実
行することができる。ここで、インストラクション順序
の中にS個のインストラクションがあり、最初のインス
トラクションはアドレス位置Aにストアされているもの
とし、従って最後のインストラクションはアドレス位置
A+S_1にストアされているものと仮定する。先ず、
ベース・アドレス・レジスタ36の中にA+S値をロー
ドするために、LOAD_BASE(A+S)インストラクションが発
生される。次に、Icountレジスタ35の中にS値
をロードするために、SET_ICOUNT(S)インストラクショ
ンが発生される。
【0095】その結果、次のS個のサイクルの間で、I
countレジスタはSから0に逓減し、そして、この
レジスタがS個のサイクルの間の計数値、即ちS、S_
1、S3、...、1の値のような0でない値を取って
いる間で、インストラクションは、プログラム・メモリ
34のアドレス位置A、A+1、...、A+S_1か
ら読み取られ、これらのインストラクションは、マルチ
プレクサ37によって選択され、実行するために、イン
ストラクション・レジスタ31の中にストアされる。
【0096】LOAD_BASEインストラクション及びSET_ICO
UNTインストラクションは中央コントローラ100から
すべてのPEに同報通信される。PEは、同報通信され
たインストラクションをベース・アドレス・レジスタ3
6にストアする前に、プロセッサ特有のオフセット値を
LOAD_BASEインストラクションの引数に加える。
【0097】若し、PEが異なったインストラクション
順序を再度実行しなければならず、かつ、各PEがそれ
自身のローカル・プログラム・メモリ中に既にロードさ
れているインストラクションを、そのPE自身で実行す
る必要があるならば(これは、同じインストラクション
順序がそのPEによって既に実行されているからであ
る)、PEのローカル・プログラム・メモリ34からの
インストラクション順序の実行を再開始することには、
LOAD_BASEインストラクション及びSET_COUNTインストラ
クションだけしか必要としない。従って、異なったPE
に割り当てられたインストラクションの異なった順序が
繰り返し実行されねばならない場合、インストラクショ
ン順序を繰り返し実行する負担は、図2の実施例により
インストラクション順序を繰り返し実行する負担よりも
著しく軽減される。
【0098】最後に、若し、良好な性能を達成するため
に、SIMDコンピュータ装置の異なったPEによって
同時に実行されねばならないインストラクションの異な
った順序を、コンパイル時において決定することができ
るならば、そのコンパイラは、プログラムがアレイ・コ
ントローラ100の中にロードされる時に、PEのロー
カル・プログラム・メモリ34の中にロードされるべき
インストラクション順序を発生することができる。図2
のコンピュータ・システムを動作した場合と同じよう
に、すべてのインストラクション順序は各PEのローカ
ル・プログラム・メモリ34の中にロードすることがで
き、そしてPEは、所望のインストラクション順序を選
択するためにLOAD_BASEインストラクションのオペラン
ドを局部的に修正することができる。
【0099】繰り返しになるが、プログラムの模範例を
簡単に保つために、ローカル・プログラム・メモリ34
中にストアされるインストラクションは、Icount
レジスタ35の内容を変更することはできない。また、
望ましくは、LOAD_BASE及びILOADインストラクションの
OPコードは、ローカル・プログラム・メモリ34から
発行されるべきでない。
【0100】図4は本発明の第3の実施例を説明するた
めの図である。図4の改良された処理エレメント41
は、図1に示した従来のシステムの構造と、図2及び図
3に示した本発明の第1及び第2の実施例のPEの構造
と同じようなインストラクション・レジスタ42、個別
のデータ・メモリ43及びALU44を含んでいる。
【0101】また、第3の実施例のPE41はプログラ
ム・メモリ45、マイクロシーケンサ46及びマルチプ
レクサ48を含んでいる。
【0102】図4において、図3に示したPEのローカ
ル・プログラム・メモリ34のためのアドレス発生論理
回路は、市販のマイクロシーケンサ46(例えば、アド
バンスド・マイクロ・デバイス(AMD)社、IDT
社、ビテッセ(Vittesse)社などにより市販されている
2910チップ)によって置き代えられている。
【0103】マイクロシーケンサ46はIcountレ
ジスタ35及びベース・レジスタ36(図3参照)と、
PEのプログラム・メモリ34のアドレスを発生するの
に用いられる減算器39及びマルチプレクサ40と、図
3に示されたIcountレジスタ35と共に用いられ
るゼロ検出論理回路38との機能を持っている。
【0104】WE信号、DIN信号及びA信号は、図3
の装置の信号と同じ態様で使用され、この態様は既に説
明した通りである。簡潔に言えば、既に説明したよう
に、図4の装置は、マイクロシーケンサ46がベース・
アドレス・レジスタ36及びIcountレジスタ35
と、減算回路39と、ゼロ検出論理回路38との機能を
遂行するために使用されていることを除けば図3のPE
の構成と同じである。図4の装置の動作は図3の装置の
動作と同じである。従って、図4の装置は図3の装置の
説明から容易に理解できるので、図4の装置に関するこ
れ以上の説明はしない。
【0105】本発明に従って、PE中にインストラクシ
ョンの個別のメモリ(例えば、図2のローカル・インス
トラクション・バッファ24、又は図3及び図4のプロ
グラム・メモリ34、45)が設けられているから、し
ばしば生じる後続の処理状態における性能が改善され
る。直截的な態様でデータを空間的に分離することは、
異なったデータ・セグメントに遂行される異なったタイ
プの計算を必要とする。
【0106】例えば、規則的に配列されたグリッド・ポ
イントにおいて、境界グリッド・ポイントと、内部グリ
ッド・ポイントでは、異なった処理が必要である。この
場合、異なったプロセッサにおいてデータを処理するた
めに必要とされる異なったインストラクション順序は、
PEの個別のインストラクション・メモリ中の同じアド
レスにストアすることができ、そして、これらのインス
トラクションの同じベース・アドレスと、インストラク
ション・カウントとを中央コントローラ100から同報
通信することによってPEの個別のデータに適用するこ
とができる。
【0107】第2の場合において、PE中のデータ・セ
グメントに適用されるインストラクション順序の選択
は、大域的な構成にあるデータの空間的な位置ではな
く、PE中の同じ変数か、又は異なった変数の値に依存
する。
【0108】例えば、アルゴリズムの各ステップにおい
て、マトリックス因数分解法、又はガウス消去法でプロ
グラムを作成する場合、アルゴリズムの各ステップにお
いて、マトリックスの1つの行は、ピボット行であっ
て、他の行とは異なって処理されなければならない。新
しい行は、アルゴリズムの各ステップにおいてピボット
行になる。若しマトリックスが複数のプロセッサの間で
行毎に仕切られたならば、任意の与えられたステップに
おいて、ピボット行を含むプロセッサは、ピボット行を
含まないプロセッサとは異なったインストラクション順
序で実行しなければならない。
【0109】このような場合を処理するために、ピボッ
ト行及び非ピボット行を処理するためのインストラクシ
ョン順序は、各PE(プログラム・メモリ)の中にスト
アされる。各PEは、図3に示されたベース・アドレス
・レジスタ36の中に対応するベース・アドレスをスト
アすることによって、それ自身でどのインストラクショ
ン順序を実行するかを選択する。
【0110】従って、本発明に従った方法及び装置にお
いて、ローカル・インストラクション・バッファ、又は
ローカル・インストラクション・メモリが使用され、こ
れにより、SIMDコンピュータ装置の適用範囲を、ア
プリケーションの遥かに大きな組に拡張することがで
き、しかも、すべてのPEにおいて異なったインストラ
クションを同時に実行する必要がある場合でも、SIM
Dコンピュータ装置の効率は低下されない。
【0111】既に説明したように、本発明に従ったSI
MDコンピュータ装置は、複数個の処理エレメントを含
んでおり、各処理エレメントは、インストラクションの
異なった順序を実行するためにインストラクションを修
正するため、ローカル・インストラクションの供給源
と、マルチプレクサとを持っている。
【0112】本発明に従って、単一のインストラクショ
ン、又は複数のインストラクションの複数のブロックを
ストアするためのローカル・インストラクション・バッ
ファ(又はインストラクション・メモリ)が使用されて
いる。本発明において、ALUによる演算の結果は、プ
ロセッサの局部的なデータ・メモリの中にストアされ、
そしてローカル・インストラクション・メモリに保存さ
れている修正されたインストラクションの順序は、大域
インストラクションによって選択された時、SIMDコ
ンピュータ装置のプロセッサにより反復して使用するこ
とができる。
【0113】従来のコンピュータ・システムにおいて
は、局部的に可能な修正のタイプは、処理エレメントに
おいて実施されているハードウエア・サポートによって
制限を受けるけれども、本発明のコンピュータ・システ
ムにおいては、汎用ALUが、インストラクションの修
正を計算するから、どのような修正も可能であることが
本発明の主要な利点である。
【0114】更に、従来のアプローチは、インストラク
ション中のオペランドを修正すること、より特定して言
えば、すべてのインストラクション中の同一の位置に現
われるオペランドを修正することに向けられているけれ
ども、本発明は、インストラクションをすべて一緒に修
正する手段を含んでいる。
【0115】加えて、本発明は、アレイの行中の処理エ
レメントが受け取った同一のインストラクションを、行
中の処理エレメントにおいて局部的に修正することので
きる能力を与えている。
【0116】更に、同報通信されたインストラクション
は、同報通信されたプログラムの制御の下でプロセッサ
のローカル・データ・メモリからロードされたローカル
・インストラクション・バッファ中の情報で部分的に置
き替え、又はその情報の全てで置き替えることにより、
プロセッサの中で局部的に修正される。プロセッサは、
インストラクションを自律的に取り出さず、その代わり
に、同報通信されたプログラムの制御の下で、同報通信
されたインストラクションを修正するので、インストラ
クションの取り出し及びデコード論理回路と同期回路と
は各処理エレメントの中に必要としない。
【0117】本発明においては、SIMDコンピュータ
装置中でアレイ状に配列されたエレメント(例えば、処
理エレメント)によって、インストラクションの外部供
給源(例えば、中央コントローラ、アレイ・コントロー
ラ等)により発生され同報通信されたインストラクショ
ンを修正することが可能である。従って、本発明の構成
によって局部的な修正が可能となり、異なったプロセッ
サは、プロセッサのインデックス又はデータ内容に基づ
いて異なったインストラクションを実行することができ
る。
【0118】以上、本発明の良好な実施例について説明
してきたが、当業者であれば、本発明の技術的範囲内
で、これらの実施例に自明の変更、修正を加えることが
できるのは勿論言うまでもない。
【0119】例えば、図2に示したローカル・インスト
ラクション・バッファ24は、データ・メモリ22の出
力からのバス27を介してローカル・インストラクショ
ン・バッファ24にストアされるべきmバイト・ブロッ
クを受け取る。代案として、ローカル・インストラクシ
ョン・バッファ24中にストアされるべきデータ(mバ
イト・ブロック、またはマイクロ・オペレーション)は
ALU23の出力から取り出すことができる。同様に、
図3の実施例の装置において、プログラム・メモリ34
のインストラクション・ワード中に、ストアされるべき
マイクロ・オペレーション、又はベース・レジスタ36
中にロードされるべきアドレスは、データ・メモリ32
の出力ではなく、ALU33の出力から取り出すことが
できる。
【0120】まとめとして、本発明の構成に関して以下
の事項を開示する。
【0121】(1)各処理エレメント(PE)がインス
トラクションの外部供給源から同報通信されたインスト
ラクションを受け取る複数個の処理エレメントを含む、
単一インストラクション複数データ・ストリーム(SI
MD)アレイ・プロセッサであって、上記複数個の処理
エレメントの各々は、データをストアするためのメモリ
と、上記同報通信されたインストラクションを受け取る
第1のマルチプレクサと、上記メモリ及び上記第1のマ
ルチプレクサに接続されており、上記第1のマルチプレ
クサからの出力を受け取り、かつ制御信号と上記メモリ
への出力とを与えるためのインストラクション・レジス
タと、上記インストラクション・レジスタ及び上記メモ
リに接続されており、少なくとも1つのインストラクシ
ョンをストアするためのストレージ手段であって、上記
少なくとも1つのインストラクションは上記メモリから
読み取られたデータを含みかつ上記ストレージ手段にス
トアされ、上記第1のマルチプレクサは上記ストレージ
手段中の上記少なくとも1つのインストラクションを受
け取る、ストレージ手段と、修正されたインストラクシ
ョンを作成するために、上記少なくとも1つのインスト
ラクション全体を修正し、次のインストラクションとし
て実行されるべく修正されたインストラクションを上記
ストレージ手段中にストアするための修正手段であっ
て、上記修正されたインストラクションは、上記外部供
給源からの上記同報通信されたインストラクションによ
って選択された時に繰り返して使用される、修正手段と
を含み、上記修正手段は上記同報通信されたインストラ
クションと上記修正されたインストラクションとから上
記インストラクション・レジスタに出力されるべき1つ
のインストラクションを選択する手段を含むことを特徴
とする単一インストラクション複数データ・ストリーム
・プロセッサ。 (2)上記ストレージ手段はローカル・インストラクシ
ョン・バッファを含むことを特徴とする(1)に記載の
プロセッサ。 (3)上記ストレージ手段はプログラム・メモリを含む
ことを特徴とする(1)に記載のプロセッサ。 (4)上記修正手段は論理演算機構(ALU)と選択ビ
ット発生回路とを含み、該選択ビット発生回路は上記イ
ンストラクション・レジスタからの出力を受け取り、か
つ上記第1のマルチプレクサに入力を与えることを特徴
とする(2)に記載のプロセッサ。 (5)上記修正手段は、上記インストラクション・レジ
スタから制御信号を受け取り、かつ上記データ・メモリ
から受け取ったデータに制御信号によって特定された動
作を遂行するための論理演算機構(ALU)と、上記メ
モリに接続されたベース・アドレス・レジスタと、上記
インストラクション・レジスタからの出力信号を受け取
るIcountレジスタと、上記ベース・アドレス・レ
ジスタの出力値から上記Icountレジスタの出力値
を減算する減算器と、上記インストラクション・レジス
タからの出力信号と、上記減算器の出力信号との間の選
択を行ない、上記プログラム・メモリにアドレスを与え
るための第2のマルチプレクサとを含むことを特徴とす
る(3)に記載のプロセッサ。 (6)上記Icountレジスタからの出力信号を受け
取って、上記第1のマルチプレクサへ入力信号を与える
ためのゼロ検出論理回路を含むことを特徴とする(5)
に記載のプロセッサ。 (7)上記修正手段は上記ストレージ手段の中にストア
されている少なくとも1つのマイクロ・オペレーション
を同報通信されたインストラクションの中に代替するこ
とによって上記処理エレメントの各々の中の上記同報通
信されたインストラクションを局部的に修正することを
特徴とする(1)に記載のプロセッサ。 (8)上記修正手段は、上記メモリに接続されており、
複数個のインストラクション・ワードをストアするプロ
グラム・メモリであって、上記メモリ及び上記インスト
ラクション・レジスタからの出力信号を受け取って、上
記第1のマルチプレクサに出力信号を与えるためのプロ
グラム・メモリと、上記メモリに接続されており、上記
インストラクション・レジスタからの出力を受け取っ
て、上記メモリに出力し戻すための論理演算機構(AL
U)と、上記プログラム・メモリから順序インストラク
ションを受け取って、上記プログラム・メモリへの出力
と上記第1のマルチプレクサへの出力とを与えるマイク
ロシーケンサとを含むことを特徴とする(1)に記載の
プロセッサ。 (9)上記インストラクション・レジスタからの出力
と、上記メモリからの出力との間の選択を行ない、上記
マイクロシーケンサにアドレスを与えるための第2のマ
ルチプレクサを含むことを特徴とする(8)に記載のプ
ロセツサ。
【0122】
【発明の効果】本発明によれば、SIMDコンピュータ
装置の適用範囲を、アプリケーションの遥かに大きな組
に拡張することができ、しかも、すべての処理エレメン
トにおいて異なったインストラクション順序を同時に実
行した場合でもSIMDコンピュータ装置の効率は低下
しない。
【図面の簡単な説明】
【図1】インストラクションの外部供給源からの同報通
信インストラクションを受け取るのに適した従来のSI
MDコンピュータ装置中の処理エレメント(PE)の構
成を説明するためのブロック図である。
【図2】SIMDコンピュータ装置の処理エレメント中
にローカル・インストラクション・バッファを組み込ん
だ本発明の第1の実施例を説明するためのブロック図で
ある。
【図3】SIMD並列コンピュータ装置の処理エレメン
ト中にローカル・プログラム・メモリを組み込んだ本発
明の第2の実施例を説明するためのブロック図である。
【図4】複数のPEによって異なったインストラクショ
ンを同時に実行させるために、SIMDコンピュータ装
置のPE中にマイクロシーケンサ(例えば、市販の29
10型チップ)を用いた本発明の第3の実施例を示すブ
ロック図である。
【図5】アレイ配列に接続された複数個の処理エレメン
トを含むコンピュータ・システムの全体を説明するため
のブロック図である。
【図6】代表的なSIMDコンピュータ装置の第1の処
理エレメント及び第2の処理エレメントの個別のデータ
・メモリを説明するためのブロック図である。
【図7】第1の処理エレメントPE1及び第2の処理エ
レメントPE2を示して、これらの処理エレメント中に
ストアされたコードを用いて同報通信されたインストラ
クションの修正を説明するための図である。
【図8】64個のグリッド・ポイントを有しモデル化さ
れた通常の二次元の物理的なシステムを示す図である。
【図9】図8に示された通常の二次元の物理的なシステ
ムの16個のプロセッサの間でグリッド・ポイントを仕
切る方法を説明するための図である。
【符号の説明】
1、20、30 処理エレメント(PE) 2、21、31、42 インストラクション・レジスタ 3、22、32、43 個別のメモリ 4、23、33、44 論理演算機構(ALU) 24 ローカル・インストラクション・バッファ 25、37、40、48 マルチプレクサ 26 選択ビット発生回路 34、45 プログラム・メモリ 35 Icountレジスタ 36 ベース・アドレス・レジスタ 38 ゼロ検出論理回路 39 減算器 46 マイクロシーケンサ 100 インストラクションの外部供給源 101 インストラクションの同報通信バス 102 相互接続ネットワーク
───────────────────────────────────────────────────── フロントページの続き (72)発明者 マイケル・ミ・ツァオ アメリカ合衆国 ニューヨーク州、ヨーク タウン・ハイツ、デラノ・ロード 746

Claims (9)

    【特許請求の範囲】
  1. 【請求項1】 各処理エレメント(PE)がインストラ
    クションの外部供給源から同報通信されたインストラク
    ションを受け取る複数個の処理エレメントを含む、単一
    インストラクション複数データ・ストリーム(SIM
    D)アレイ・プロセッサであって、 上記複数個の処理エレメントの各々は、 データをストアするためのメモリと、 上記同報通信されたインストラクションを受け取る第1
    のマルチプレクサと、 上記メモリ及び上記第1のマルチプレクサに接続されて
    おり、上記第1のマルチプレクサからの出力を受け取
    り、かつ制御信号と上記メモリへの出力とを与えるため
    のインストラクション・レジスタと、 上記インストラクション・レジスタ及び上記メモリに接
    続されており、少なくとも1つのインストラクションを
    ストアするためのストレージ手段であって、上記少なく
    とも1つのインストラクションは上記メモリから読み取
    られたデータを含みかつ上記ストレージ手段にストアさ
    れ、上記第1のマルチプレクサは上記ストレージ手段中
    の上記少なくとも1つのインストラクションを受け取
    る、ストレージ手段と、 修正されたインストラクションを作成するために、上記
    少なくとも1つのインストラクション全体を修正し、次
    のインストラクションとして実行されるべく修正された
    インストラクションを上記ストレージ手段中にストアす
    るための修正手段であって、上記修正されたインストラ
    クションは、上記外部供給源からの上記同報通信された
    インストラクションによって選択された時に繰り返して
    使用される、修正手段とを含み、 上記修正手段は上記同報通信されたインストラクション
    と上記修正されたインストラクションとから上記インス
    トラクション・レジスタに出力されるべき1つのインス
    トラクションを選択する手段を含むことを特徴とする単
    一インストラクション複数データ・ストリーム・プロセ
    ッサ。
  2. 【請求項2】 上記ストレージ手段はローカル・インス
    トラクション・バッファを含むことを特徴とする請求項
    1に記載のプロセッサ。
  3. 【請求項3】 上記ストレージ手段はプログラム・メモ
    リを含むことを特徴とする請求項1に記載のプロセッ
    サ。
  4. 【請求項4】 上記修正手段は論理演算機構(ALU)
    と選択ビット発生回路とを含み、該選択ビット発生回路
    は上記インストラクション・レジスタからの出力を受け
    取り、かつ上記第1のマルチプレクサに入力を与えるこ
    とを特徴とする請求項2に記載のプロセッサ。
  5. 【請求項5】 上記修正手段は、 上記インストラクション・レジスタから制御信号を受け
    取り、かつ上記データ・メモリから受け取ったデータに
    制御信号によって特定された動作を遂行するための論理
    演算機構(ALU)と、 上記メモリに接続されたベース・アドレス・レジスタ
    と、 上記インストラクション・レジスタからの出力信号を受
    け取るIcountレジスタと、 上記ベース・アドレス・レジスタの出力値から上記Ic
    ountレジスタの出力値を減算する減算器と、 上記インストラクション・レジスタからの出力信号と、
    上記減算器の出力信号との間の選択を行ない、上記プロ
    グラム・メモリにアドレスを与えるための第2のマルチ
    プレクサとを含むことを特徴とする請求項3に記載のプ
    ロセッサ。
  6. 【請求項6】 上記Icountレジスタからの出力信
    号を受け取って、上記第1のマルチプレクサへ入力信号
    を与えるためのゼロ検出論理回路を含むことを特徴とす
    る請求項5に記載のプロセッサ。
  7. 【請求項7】 上記修正手段は上記ストレージ手段の中
    にストアされている少なくとも1つのマイクロ・オペレ
    ーションを同報通信されたインストラクションの中に代
    替することによって上記処理エレメントの各々の中の上
    記同報通信されたインストラクションを局部的に修正す
    ることを特徴とする請求項1に記載のプロセッサ。
  8. 【請求項8】 上記修正手段は、 上記メモリに接続されており、複数個のインストラクシ
    ョン・ワードをストアするプログラム・メモリであっ
    て、上記メモリ及び上記インストラクション・レジスタ
    からの出力信号を受け取って、上記第1のマルチプレク
    サに出力信号を与えるためのプログラム・メモリと、 上記メモリに接続されており、上記インストラクション
    ・レジスタからの出力を受け取って、上記メモリに出力
    し戻すための論理演算機構(ALU)と、 上記プログラム・メモリから順序インストラクションを
    受け取って、上記プログラム・メモリへの出力と上記第
    1のマルチプレクサへの出力とを与えるマイクロシーケ
    ンサとを含むことを特徴とする請求項1に記載のプロセ
    ッサ。
  9. 【請求項9】 上記インストラクション・レジスタから
    の出力と、上記メモリからの出力との間の選択を行な
    い、上記マイクロシーケンサにアドレスを与えるための
    第2のマルチプレクサを含むことを特徴とする請求項8
    に記載のプロセツサ。
JP08002639A 1995-01-26 1996-01-10 プロセッサ Expired - Fee Related JP3101560B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US378756 1995-01-26
US08/378,756 US5680597A (en) 1995-01-26 1995-01-26 System with flexible local control for modifying same instruction partially in different processor of a SIMD computer system to execute dissimilar sequences of instructions

Publications (2)

Publication Number Publication Date
JPH08241291A true JPH08241291A (ja) 1996-09-17
JP3101560B2 JP3101560B2 (ja) 2000-10-23

Family

ID=23494430

Family Applications (1)

Application Number Title Priority Date Filing Date
JP08002639A Expired - Fee Related JP3101560B2 (ja) 1995-01-26 1996-01-10 プロセッサ

Country Status (3)

Country Link
US (1) US5680597A (ja)
EP (1) EP0724221A3 (ja)
JP (1) JP3101560B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009527808A (ja) * 2006-02-16 2009-07-30 ブイエヌエス ポートフォリオ リミテッド ライアビリティ カンパニー マイクロループコンピュータ命令
JP5708634B2 (ja) * 2010-02-24 2015-04-30 日本電気株式会社 Simdプロセッサ

Families Citing this family (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5822606A (en) * 1996-01-11 1998-10-13 Morton; Steven G. DSP having a plurality of like processors controlled in parallel by an instruction word, and a control processor also controlled by the instruction word
US6088783A (en) * 1996-02-16 2000-07-11 Morton; Steven G DPS having a plurality of like processors controlled in parallel by an instruction word, and a control processor also controlled by the instruction word
US6317819B1 (en) 1996-01-11 2001-11-13 Steven G. Morton Digital signal processor containing scalar processor and a plurality of vector processors operating from a single instruction
US5854905A (en) * 1996-09-03 1998-12-29 Intel Corporation Extensible bios for boot support of devices on multiple hierarchical buses
DE19651075A1 (de) * 1996-12-09 1998-06-10 Pact Inf Tech Gmbh Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen
DE19654846A1 (de) * 1996-12-27 1998-07-09 Pact Inf Tech Gmbh Verfahren zum selbständigen dynamischen Umladen von Datenflußprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o. dgl.)
FR2757973B1 (fr) * 1996-12-27 1999-04-09 Sgs Thomson Microelectronics Processeur de traitement matriciel
EP0858168A1 (en) 1997-01-29 1998-08-12 Hewlett-Packard Company Field programmable processor array
US6151668A (en) * 1997-11-07 2000-11-21 Billions Of Operations Per Second, Inc. Methods and apparatus for efficient synchronous MIMD operations with iVLIW PE-to-PE communication
DE69841256D1 (de) * 1997-12-17 2009-12-10 Panasonic Corp Befehlsmaskierung um Befehlsströme einem Prozessor zuzuleiten
JP2003526129A (ja) 1997-12-17 2003-09-02 エリクセントリミティド プログラマブル・アレイにおける乗算器の実現
DE69827589T2 (de) 1997-12-17 2005-11-03 Elixent Ltd. Konfigurierbare Verarbeitungsanordnung und Verfahren zur Benutzung dieser Anordnung, um eine Zentraleinheit aufzubauen
US6862732B1 (en) 1998-02-25 2005-03-01 Metaserver, Inc. Method and apparatus for event-driven processing of data
US6052769A (en) * 1998-03-31 2000-04-18 Intel Corporation Method and apparatus for moving select non-contiguous bytes of packed data in a single instruction
US6728862B1 (en) * 2000-05-22 2004-04-27 Gazelle Technology Corporation Processor array and parallel data processing methods
US7127593B2 (en) * 2001-06-11 2006-10-24 Broadcom Corporation Conditional execution with multiple destination stores
US20070169022A1 (en) * 2003-06-18 2007-07-19 Jones Anthony M Processor having multiple instruction sources and execution modes
US7594069B2 (en) * 2004-02-26 2009-09-22 Ati Technologies, Inc. Method and apparatus for single instruction multiple data caching
US7937557B2 (en) 2004-03-16 2011-05-03 Vns Portfolio Llc System and method for intercommunication between computers in an array
JP4477959B2 (ja) * 2004-07-26 2010-06-09 独立行政法人理化学研究所 ブロードキャスト型並列処理のための演算処理装置
US20060168090A1 (en) * 2005-01-07 2006-07-27 United Technologies Corporation Remote integrated subsystems in an aircraft or the like
US7725691B2 (en) * 2005-01-28 2010-05-25 Analog Devices, Inc. Method and apparatus for accelerating processing of a non-sequential instruction stream on a processor with multiple compute units
US7904695B2 (en) 2006-02-16 2011-03-08 Vns Portfolio Llc Asynchronous power saving computer
US20080320276A1 (en) * 2005-08-04 2008-12-25 Heinz Gerald Krottendorfer Digital Computing Device with Parallel Processing
US7516301B1 (en) * 2005-12-16 2009-04-07 Nvidia Corporation Multiprocessor computing systems with heterogeneous processors
US7913069B2 (en) 2006-02-16 2011-03-22 Vns Portfolio Llc Processor and method for executing a program loop within an instruction word
US7966481B2 (en) 2006-02-16 2011-06-21 Vns Portfolio Llc Computer system and method for executing port communications without interrupting the receiving computer
US7904615B2 (en) 2006-02-16 2011-03-08 Vns Portfolio Llc Asynchronous computer communication
EP2057554A1 (en) * 2006-08-20 2009-05-13 Ambric Inc. Processor having multiple instruction sources and execution modes
CN101379481A (zh) * 2006-08-23 2009-03-04 日本电气株式会社 处理元件、混合模式并行处理器系统、处理元件方法、混合模式并行处理器方法、处理元件程序、以及混合模式并行处理器程序
US7441099B2 (en) * 2006-10-03 2008-10-21 Hong Kong Applied Science and Technology Research Institute Company Limited Configurable SIMD processor instruction specifying index to LUT storing information for different operation and memory location for each processing unit
US7961872B2 (en) * 2006-12-04 2011-06-14 Lsi Corporation Flexible hardware architecture for ECC/HECC based cryptography
GB0907559D0 (en) * 2009-05-01 2009-06-10 Optos Plc Improvements relating to processing unit instruction sets
US20110314256A1 (en) * 2010-06-18 2011-12-22 Microsoft Corporation Data Parallel Programming Model
US8589867B2 (en) 2010-06-18 2013-11-19 Microsoft Corporation Compiler-generated invocation stubs for data parallel programming model
US9424045B2 (en) 2013-01-29 2016-08-23 Arm Limited Data processing apparatus and method for controlling use of an issue queue to represent an instruction suitable for execution by a wide operand execution unit
US9672043B2 (en) 2014-05-12 2017-06-06 International Business Machines Corporation Processing of multiple instruction streams in a parallel slice processor
US9665372B2 (en) * 2014-05-12 2017-05-30 International Business Machines Corporation Parallel slice processor with dynamic instruction stream mapping
US9760375B2 (en) 2014-09-09 2017-09-12 International Business Machines Corporation Register files for storing data operated on by instructions of multiple widths
US9720696B2 (en) 2014-09-30 2017-08-01 International Business Machines Corporation Independent mapping of threads
US9977678B2 (en) 2015-01-12 2018-05-22 International Business Machines Corporation Reconfigurable parallel execution and load-store slice processor
US10133576B2 (en) 2015-01-13 2018-11-20 International Business Machines Corporation Parallel slice processor having a recirculating load-store queue for fast deallocation of issue queue entries
US10133581B2 (en) 2015-01-13 2018-11-20 International Business Machines Corporation Linkable issue queue parallel execution slice for a processor
US9983875B2 (en) 2016-03-04 2018-05-29 International Business Machines Corporation Operation of a multi-slice processor preventing early dependent instruction wakeup
US10037211B2 (en) 2016-03-22 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor with an expanded merge fetching queue
US10346174B2 (en) 2016-03-24 2019-07-09 International Business Machines Corporation Operation of a multi-slice processor with dynamic canceling of partial loads
US10761854B2 (en) 2016-04-19 2020-09-01 International Business Machines Corporation Preventing hazard flushes in an instruction sequencing unit of a multi-slice processor
US10037229B2 (en) 2016-05-11 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor implementing a load/store unit maintaining rejected instructions
US9934033B2 (en) 2016-06-13 2018-04-03 International Business Machines Corporation Operation of a multi-slice processor implementing simultaneous two-target loads and stores
US10042647B2 (en) 2016-06-27 2018-08-07 International Business Machines Corporation Managing a divided load reorder queue
US10318419B2 (en) 2016-08-08 2019-06-11 International Business Machines Corporation Flush avoidance in a load store unit
US11860814B1 (en) * 2020-11-01 2024-01-02 Konda Technologies Inc. Scalable distributed computing system with deterministic communication

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4783738A (en) * 1986-03-13 1988-11-08 International Business Machines Corporation Adaptive instruction processing by array processor having processor identification and data dependent status registers in each processing element
GB2211638A (en) * 1987-10-27 1989-07-05 Ibm Simd array processor
US5179714A (en) * 1988-10-07 1993-01-12 Martin Marietta Corporation Parallel bit serial data processor
US5253308A (en) * 1989-06-21 1993-10-12 Amber Engineering, Inc. Massively parallel digital image data processor using pixel-mapped input/output and relative indexed addressing
US5212777A (en) * 1989-11-17 1993-05-18 Texas Instruments Incorporated Multi-processor reconfigurable in single instruction multiple data (SIMD) and multiple instruction multiple data (MIMD) modes and method of operation
US5239654A (en) * 1989-11-17 1993-08-24 Texas Instruments Incorporated Dual mode SIMD/MIMD processor providing reuse of MIMD instruction memories as data memories when operating in SIMD mode
US5522080A (en) * 1991-10-24 1996-05-28 Intel Corporation Centralized control SIMD processor having different priority levels set for each data transfer request type and successively repeating the servicing of data transfer request in a predetermined order
US5542074A (en) * 1992-10-22 1996-07-30 Maspar Computer Corporation Parallel processor system with highly flexible local control capability, including selective inversion of instruction signal and control of bit shift amount
US5511212A (en) * 1993-06-10 1996-04-23 Rockoff; Todd E. Multi-clock SIMD computer and instruction-cache-enhancement thereof

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009527808A (ja) * 2006-02-16 2009-07-30 ブイエヌエス ポートフォリオ リミテッド ライアビリティ カンパニー マイクロループコンピュータ命令
JP5708634B2 (ja) * 2010-02-24 2015-04-30 日本電気株式会社 Simdプロセッサ

Also Published As

Publication number Publication date
EP0724221A3 (en) 1997-03-12
JP3101560B2 (ja) 2000-10-23
EP0724221A2 (en) 1996-07-31
US5680597A (en) 1997-10-21

Similar Documents

Publication Publication Date Title
JP3101560B2 (ja) プロセッサ
US5872987A (en) Massively parallel computer including auxiliary vector processor
US11693660B2 (en) Data processing apparatus having streaming engine with read and read/advance operand coding
JP3149348B2 (ja) 代理命令を用いる並列処理システム及び方法
US8176265B2 (en) Shared single-access memory with management of multiple parallel requests
US6446190B1 (en) Register file indexing methods and apparatus for providing indirect control of register addressing in a VLIW processor
US7680988B1 (en) Single interconnect providing read and write access to a memory shared by concurrent threads
CN103098020B (zh) 由多个指令集使用的寄存器间映射
US5790854A (en) Efficient stack utilization for compiling and executing nested if-else constructs in a vector data processing system
US20020078320A1 (en) Methods and apparatus for instruction addressing in indirect VLIW processors
JPH0922404A (ja) 同報通信プロセッサ命令を備えたアレイ・プロセッサ通信アーキテクチャ
US4954943A (en) Data processing system
JPH04267466A (ja) 連想並列処理システム
JP2007257549A (ja) 半導体装置
JPH0786845B2 (ja) データ処理装置
US8671266B2 (en) Staging register file for use with multi-stage execution units
JP2653037B2 (ja) データ処理システム
JP2005527037A (ja) 構成可能なプロセッサ
KR20090055765A (ko) 멀티미디어 데이터 처리를 위한 다중 simd 프로세서 및이를 이용한 연산 방법
US8631173B2 (en) Semiconductor device
JP2680828B2 (ja) ディジタル装置
JP2567134B2 (ja) ビットフィールド論理演算処理装置およびそれを具備するモノリシックマイクロプロセッサ
JP2006502489A (ja) 並行処理する機能ユニットを有するデータ処理装置
JP2906792B2 (ja) ディジタルプロセッサ及びその制御方法
USRE41012E1 (en) Register file indexing methods and apparatus for providing indirect control of register addressing in a VLIW processor

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees