JPH0370034A - 順次プログラムの並列実行のためのコンピュータ・システム及び方法並びにデータ値割当方法 - Google Patents

順次プログラムの並列実行のためのコンピュータ・システム及び方法並びにデータ値割当方法

Info

Publication number
JPH0370034A
JPH0370034A JP2198117A JP19811790A JPH0370034A JP H0370034 A JPH0370034 A JP H0370034A JP 2198117 A JP2198117 A JP 2198117A JP 19811790 A JP19811790 A JP 19811790A JP H0370034 A JPH0370034 A JP H0370034A
Authority
JP
Japan
Prior art keywords
data
instructions
instruction
type
computer system
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.)
Pending
Application number
JP2198117A
Other languages
English (en)
Inventor
Manoj Kumar
マノー・クマー
Ambuj Goyal
アンビユー・ゴジヤール
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 JPH0370034A publication Critical patent/JPH0370034A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 A、産業上の利用分野 本発明は一般にプログラム記憶式ディジタル・コンピュ
ータに関し、さらに具体的には、順次プログラムを実行
する際に並行処理技術を利用することができるコンピュ
ータ・システムに関するものである。
B、従来技術及びその課題 並列処理は、ディジタル・コンビュータテ高い性能を実
現する手段として近年ますます一般的になってきた。最
少限のシーケンス間連絡または同期化しか必要とせず、
同時に実行することが可能な、大きくかつ明確な命令シ
ーケンスをユーザ・プログラム内で見つけることに主と
して関心が集まっていた。過去に提案された大部分のマ
ルチプロセッサ及び並列プロセッサの設計は、これらの
シーケンスについて行なわれた選択、及び提供された連
絡及び同期化機能により区別することができる。この並
列処理手法をさらに推し進めると、同時に実行される命
令シーケンス間の連絡及び同期化要件が増大するため、
高性能並列プロセッサに余分のプロセッサを追加するこ
との利点が減少する。
一般に、命令の実行は2つの独立したオペレーションに
区分することができる。第1のオペレーションは命令を
選択し、実行のためそれをALUにディスパッチするこ
とである。第2のオペレージ3ンは、選択された命令を
実際に実行することである。確立された規約によれば、
第1の命令が入力オペランドとして使用する中間結果を
もたらす命令、または、やはり第1の命令が更新する値
を参照または更新する命令がすべて実行を完了するまで
、命令を実行のために選択できない。初期のブロセッー
サ設計では、こうした制約(データ依存関係制約とも呼
ばれる)は、先行するすべての命令が実行を完了したと
きにのみ命令を出すことによって満たされる。この手法
は、浮動小数点演算などいくつかの種類の命令が専用の
浮動小数点プロセッサにより数サイクルに渡って実行さ
れるので、制限的である。浮動小数点命令の完了後まで
非浮動小数点命令の発行を制限すると、プロセッサの幾
つかの部分が不必要に遊休状態のままとなる可能性があ
る。
パイプライン式実行装置を使用する現在のプロセッサ設
計では、先行する命令が実行を完了する前に命令をディ
スパッチすることができる。そのような命令と、実行パ
イプラインで処理される別の命令の間にデータ依存関係
がある場合は、ハードウェア・インターロック機構を使
って、そのデータ依存関係が解消されるまで、ディスパ
ッチされた命令の実際の実行が阻止される。しかし、こ
の場合は、この阻止された命令に続く命令も、たとえそ
れが現在実行中のまたは阻止されている命令に依存する
ものでなくても、同様に阻止される。
上記の阻止現象のため、パイプライン式プロセッサでの
命令ディスパッチ速度が、1機械サイクル当たり1命令
よりも小さくなることがよくある。
さらに、ハードウェア・インターロック機構が複雑なた
め、この設計を、複数の命令のディスパッチを同時に可
能にする設計に拡張することができない。
超長命令ワード・アーキテクチャでは、複数の命令(一
定の最大数まで)を各機械サイクルでディスパッチする
ことができる。これらの機械では、コンパイル時間分析
を使って、連続した命令をグループにまとめる。グルー
プ内のすべての命令に同時にディスパッチすることがで
きる。この種のグループ化が適切に働くためには、ある
グープ内のある命令によって生成された結果を同じグル
ープ内の後続の命令が使用することはできない。この制
約により、同時にディスパッチ可能な命令の数が制限さ
れる。同時にディスパッチ可能な命令の数を制限するも
う1つの問題は、条件付き分岐命令である。これらの命
令は、論理条件に基づいてプロセッサによって実行され
る命令の順序を変更する可能性がある。条件付き分岐の
後にくる命令は、条件付き分岐が評価されるまで実行さ
れない。
上述の問題点に加えて、超長命令ワード機械上で実行さ
れる1つの命令グループは、前のグループ内のすべての
命令が実行を完了するまでディスパッチされない。この
制約が存在するのは、データ依存関係制約のため、及び
命令グループ全体のパイプライン化には極めて高価な処
理ハードウェアが必要となる可能性があるためである。
第3のタイプのプロセッサ設計は、データ・フロー(以
下ではデータ流れとも言う)コンピュータである。この
種のコンピュータでは、データを処理する命令が同時に
実行できる。たたし、命令は、その入力オペランドがす
べて使用可能になるまで実行できない。ある命令の出力
オペランドが、後続の命令の入力オペランドとなるので
、命令の順序付けは自動的に制御される。この種のコン
ピュータは、構造化されていない制御流れグラフを発生
する条件付き分岐オペレーション等の制御流れを扱う際
には非効率的である。これらの機械では、そのような制
御フロー(以下では制御流れとも言う)命令を処理する
ための最も効果的な方法は、制御流れの問題が解決され
るまで逐次処理モードに切り換えることである。
コンピュータ・アーキテクチャに関する第13回年次国
際シンポジウム(1986年)報文集(Proc、 1
3th Annual International 
Symp、 onComputer Architec
ture、 1986) 、1) I) 、 297−
306に所載のW、ツー()1wu)等の論文”HPS
m。
a H5gh Performance Re5tri
cted Data FlowArchitectur
e Having Minimal Function
ality”は、処理される制御情報及びデータが共に
単一のメモリに記憶されるシステムに関するものである
単一の命令デコーダが分岐予測を使って制御流れ命令を
処理し、それが出会う各データ処理命令に対してデータ
流れ命令を発生する。これらの命令が組み合わされて、
既存のデータ流れ命令を集中ノード・テーブル内に含む
データ流れグラフになる。ノード・テーブル内の命令は
、1群の並列データ主導型プロセッサによる実行を待っ
ている。ノード・テーブル内の命令の入力オペランドが
使用可能になると、その命令はデータ流れプロセッサの
1台によって実行すべく選択される。
米国特許第4476525号明細書は、命令が実行に先
立って取り出され、復号されるパイプライン制御式デー
タ処理システムに関するものである。命令が復号され、
評価されるとき、算術演算及び記憶命令が同時実行がで
きるように組み合わされ、したがって、全実行時間が減
少する。
米国特許第4295193号明細書は、2つ以上の命令
を同時に実行するように設計されたプロセッサに関する
ものである。実行される命令は、それぞれせいぜいN個
の命令を有するグループに分割される。これは、たとえ
ば、コンパイル中に行なうことができる。各グループは
(N個の命令を実行するために使用されるアクセスの数
よりも少ない)所定数のデータ・アクセスのみを行なう
ことができ、さらに各アクセスは異なるデータ値を対象
とする。グループ内の各命令は別々の命令実行ハードウ
ェアを使用する。
米国特許第3573854号明細書は、先にオペランド
がメモリから取り出されてから、それらのオペランドを
使用する演算式がALUによって評価される、パイプラ
イン式アーキテクチャに関するものである。オペランド
が事前に取り出されるので、オペランドがメモリから取
り出されるのをALUが待つのにかかる時間が大幅に減
少する。
この事前取出し機能は、分岐命令に出会う前にそれらの
分岐命令を評価して、プログラム実行速度を増大させる
のに有用である。
C0課題を解決するための手段 本発明は、第1及び第2の種類の混合した命令を含む順
次プログラムを並行して処理するコンピュータ・システ
ムで具体化される。このシステムは、1度にN個の命令
をN個のディスパッチ装置のグループに供給する命令バ
ソファを備える。
ディスパッチ装置は、第1の種類の命令を直接実行し、
第2の種類の命令は原始(プリミティブ)命令に変換し
て、それをM個の実行装置にディスパッチする。実行装
置は、原始命令を同時に実行するデータ主導型プロセッ
サである。
本発明のもう1つの実施態様によれば、処理システムに
よってアクセスされるデータ空間は、主としてディスパ
ッチ装置によってアクセスされる第1のセグメントと、
主として実行装置によってアクセスされる第2のセグメ
ントに分割される。
本発明のさらに別の実施態様によれば、条件付き(co
nditional )セクションからの命令が先に実
行されてから、このセクションを保護する条件が評価さ
れるという条件付き割当て命令が設けられる。この条件
の評価で、この命令の実行を行なうべきでなかったこと
がわかった場合は、結果は捨てられる。そうでない場合
は、その結果が条件付き割当てオペレーションのオブジ
ェクトに割り当てられる。
D、実施例 Dl、概説 以下に説明する本発明の実施例は、通常のプログラムか
らの複数の命令を各機械サイクルでディスパッチし、実
行することができるプロセッサ・アーキテクチャである
。このプロセッサは、科学技術用アプリケーション・プ
ログラムを効率的に実行するように設計されている。こ
のアーキテクチャは、科学技術用プログラムでは211
1類の異なるデータを使用するという傾向を利用したも
のである。第1の種類のデータは、プログラム内の制御
の流れを決定するために、または大きなアレイに対する
インデックスとして使用される、比較的少数のスカラー
変数からなる。第2の種類のデータは、主としてプログ
ラムによって操作される実際のデータを含む大きなアレ
イからなる。このデータは通常浮動小数点形式であり、
複数の機械サイクルに渡るオペレーションによって操作
される。
本発明で提案するアーキテクチャは、複数のディスパッ
チ装置及び複数の実行装置を使用する。プログラムの制
御流れを決定するために、及びアレイ要素のインデクシ
ングに使用されるデータを、操作される実データから区
別する。これら2種類のデータは、別々のアドレス空間
に割り当て、別々のメモリ・モジュールに記憶するが、
それらのアドレス空間の間でデータを移動することが可
能である。第1の種類のデータに対するオペレーション
は、主として通常の制御流れの形でディスパッチ装置で
実行される。第2の種類のデータに対するオペレージ田
ンは、主としてデータ主導式に実行装置で実行される。
したがって、前にディスパッチされた1組のオペレージ
研ンが実行を完了する前に、新しい1組の複サイクル浮
動小数点演算セットを実行装置にディスパッチすること
が可能である。条件付き割当て命令が命令セットに導入
される。これは、短い条件付きセクションからの命令を
、との全クシ1ンを保護する条件が評価される前に実行
するために使用される。この命令を使用することにより
、条件付き分岐命令によって生じる遅延を回避すること
ができる。
第1図を参照すると、順次プログラムで並列性を活用す
るための例示的アーキテクチャは、5つの基本的構成要
素を含む。すなわち、命令メモリ2011装置204と
208を含むM個のディスパッチ装置のグループ、クロ
スバ−・ネットワーク207、装置208と210を含
むM個の実行装置のグループ、及びデータ通信ネットワ
ーク212である。
データ通信ネットワーク212は、C−L、  ウー(
lJu)等の論文”On a C1ass of Mu
ltistageInterconnection N
etworks+)IEEE Transaction
son Computerss V o l 、  C
−29、No、  8 (1980年8月)、I)り、
894−702に記載された1群のネットワークの1つ
である。この論文を引用により本明細書に合体する。ま
た、ネットワーク212は、以下に説明するクロスバ−
・ネットワーク207等の通常のクロスバ−交換機ネッ
トワークでもよい。
命令メモIJ 201は、ディスパッチ装置に供給され
る命令のシーケンスを含む。これらの命令は2つの種類
に分けることができる。第1の種類の命令は、プログラ
ムの流れを制御し、アレイ・インデックスを決定する整
数演算である。第2の種類の命令は、大きなデータ構造
を操作するオペレーションである。
ディスパッチ装置204ないし206は、第1の種類の
命令を直接実行し、第2の種類の命令を原始オペレーシ
ョン・シーケンスに変換する。第2図を参照すると、各
ディスパッチ装置は定数メモリ302.3個のアドレス
・メモリ303.304.305、及び演算論理機構(
ALU)310を含む。第1の種類の命令は、ALU3
10によって実行される。
クロスバ−・ネットワーク207は、ディスパッチ装置
204ないし206から供給された原始コマンド・シー
ケンスを実行装置208ないし210のうちの選択され
たものに転送する。
実行装置208ないし210は、これらの原始オペレー
ションを実行する。実行装置208−210はそれぞれ
、算術オペランドを記憶し、検索するデータ・メモリ2
11−213を含む。第3図を参照すると、浮動小数点
ALU411は、原始オペレーション・シーケンスで指
示されるように算術論理オペレーションを実行スる。A
LU411は、データ・メモリ412に送られるオペラ
ンド値と、データ・メモリ制御装置416に送られる制
御信号を発生する。データ・メモリ制御装置は、メモリ
412へのデータの転送、及び実行装置208−210
のメモリ間でのデータの転送を制御する。データ通信ネ
ットワーク212は、実行装置間のデータ転送オペレー
ションを実行するために使用される。
D2.詳細な説明 第1図に示す例示的システムでは、コンピュータ・シス
テムによって実行される命令のシーケンスを表すプログ
ラムが、命令メモリ20i内に記憶される。命令メモリ
201内の各ワードは、命令グループと呼ばれ、複数の
命令からなる。各命令は、3つまたは4つのフィールド
を含む。すなわち、実行されるオペレーション(命令コ
ード、オペレーション・コード)、(オペレーションの
[iに応じて)1つまたは2つのソース・オペランド、
及び宛先オペランドである。第2の種類の命令の場合は
、これらのフィールドは原始命令または原始コマンドに
変換される。
命令グループは、命令メモリ201からディスパッチ装
置204−208に供給される。命令メモリ201は、
M個の命令(Mはプロセッサ内のディスパッチ装置の数
)からなる1つの命令グループを各機械サイクルで読み
出し、ディスパッチ装置に送る(1つのディスパッチ装
置当たり1命令)ことができるように構成されている。
第2図は、例示的ディスパッチ装置のブロック・ダイヤ
グラムである。第2図に示すように、各ディスパッチ装
置は3つのアドレス・メモリ303.304.305と
定数メモリ302を含む。各ディスパッチ装置のアドレ
ス・メモリ及び定数メモリは、それぞれ当該の単一デー
タ構造の複数のコピーを表す。
各ディスパッチ装置内の定数メモリは、同じ値を含む。
これらのメモリは、定数やデータ・メモリ211−21
3内の構造化データの基底アドレス等、プログラムの実
行中変化しないデータを保持するために使用される。こ
の種のデータは頻繁にアクセスされるが、プログラムに
よって使用されるデータ記憶域の小さな部分しか占めな
い。したがって、定数メモリは、小型の高速メモリ・モ
ジュールとして実施され、各ディスパッチ装置に同じも
のが複数個設けられる アドレス・メモリ303.304及び305は、データ
・メモリ211−213内のオペランドのアドレス、ア
レイに対するオフセット、ループ定数等のデータ項目を
保持する。この種のデータは頻繁にアクセスされるが、
ときどきしか変更されない。この種のデータも、プログ
ラムによって使用されるデータ記憶域の比較的小さな部
分しか占めない。このメモリは、各ディスパッチ装装置
に同じものが複数個設けられる。ディスパッチ装置内で
、複数同時アクセス能力を与えるため、アドレス・メモ
リの内容が3回複製される。したがって、1機械サイク
ル中に、システム内の各ディスパッチ装置ごとに3回の
読取りオペレーションと1つノティスバッチ装置からの
1回の書込みオペレーシロンを実行するように、それぞ
れのアドレス・メモリを条件付けることができる。デー
タは、アドレス・メモリ303.304.305の各コ
ピーから別々に読み取ることができるが、すべてのディ
スパッチ装置204−206に渡る共通書込みバス31
9から同時にすべてのコピーに書き込まれる。このアク
セス技術により、すべてのディスパッチ装置204−2
06内のすべてのアドレス・メモリ303.304.3
05で同じ内容が維持される。各機械サイクルで1回の
書込みオペレーションしか行なえないという制限は、す
べてのプロセッサに渡る複数の書込みバスと、複数ボー
トを有するアドレス・メモリ・モジュールとを設けて、
各バスによって運ばれる値を全メモリ・モジュールに同
時に書き込むことができるようにすることにより、なく
すことができる。さらに、ディスパッチ装置の3回の読
取りオペレーションは、もっと高速のメモリ回路または
複数ボート付きメモリ・モジュールを使用すれば、2個
以下のアドレス・メモリ・モジュールでサポートするこ
ともできる。
例示的ディスパッチ装置204のオペレーションは、命
令が命令メモリ201から命令レジスタ301に転送さ
れるときに開始する。命令フィールドS1及びS2の値
、すなわち、ソース・オペランドのアドレスが、それぞ
れ当該のアドレス・メモリ・モジュール303及び30
4のアドレス入力ポートに供給される。これらの値は、
ディスパッチ装置204で命令を実行するためのアドレ
ス入力オペランドを直接アドレスすることができ、ある
いは実行装置208−210で命令を実行するためのア
ドレス・オペランドを直接または間接にアドレスするこ
とができる。これらの値が間接アドレスであるときは、
アドレス・メモリ303.304及び305から供給さ
れる値は、データ・メモリ211−213内の記憶セル
のアドレスである。第1のソース・オペランドのアドレ
スS1は、定数値を読み出すために定数メモリ202に
も送られる。
レジスタ301の命令コード(オペレーション・コード
)・フィールドに応じて、マルチプレクサ307及びマ
ルチプレクサ308は、現在の命令用のオペランドを供
給するため、メモリ320.303.304及び305
から供給される値のうちのある値を選択する。これらの
オペランドはディスパッチ装置204内のALU310
によって使用され、あるいは実行装置208にディスパ
ッチされた命令用のオペランドまたは入力オペランドの
アドレスとして使用される入力値でもよい。
レジスタ301に保持された命令のフィールドDの値が
、アドレス・メモリ305のアドレス入力ポートに供給
される。この値に応答して、メモリ305は、レジスタ
301に保持された命令の結果を記憶するためのアドレ
スを供給する。
マルチプレクサ308によって供給される値は、フィー
ルドS2で示される位置におけるアドレス・メモリ30
4の内容か、またはフィールドS1で示される位置にお
ける定数メモリ302の内容のいずれかである。マルチ
プレクサ307によって供給される値は、フィールドS
1で示されるアドレスにおける定数メモリ302の内容
か、またはフィールドS1及びS2のいずれかで示され
る位置におけるアドレス・メモリ303及び304の内
容のいずれかである。
命令コード(オペレージ8ン・ツー1’)ニヨって示さ
れる演算(オペレーション)がディスパッチ装置204
で実行されるときは(すなわち、アドレス・メモリ30
3または定数メモリ302に保持されたデータに関する
整数演算) 、ALU310によって実行される。AL
U310で実行される演算の一例は、メモリ・アドレス
303から得られたアレイ・オフセット値を、定数メモ
リ302から得られた基底値に加算することである。
ALU310から供給される出力値は、ドライバ309
を介して書戻しバス319に送られ、各ディスハツチ装
置204−206内のアドレス・メモリ・モジュール3
03.304.305のすへてに書き込まれる。プロセ
ッサによって実行されるプログラムは、任意の機械サイ
クルで、1つのディスパッチ装置だけが書戻しバス31
9を介して当該のアドレス・メモリにデータを送ること
ができるように書き、またはコンパイルすることが望ま
しいO 命令コードによって示される演算がディスパッチ装置で
実行されない場合は(たとえば、複雑な浮動小数点演算
)、ディスポ・ノチ装置によって1組の原始コマンドに
変換され、これらのコマンドが実行装置208−210
の1つまたは複数に送られる。
ディスパッチ装置は、各コマンド用のソース・オペラン
ド情報をマルチプレクサ307を介して送る。各コマン
ド用の宛先アドレス情報は、アドレス・メモリ305か
ら直接供給される。実行装置に転送される命令の場合は
、これらのオペランド及びオペランド・アドレスが、そ
れぞれPE番号発生論理要素311.312.313に
供給される。これらの論理要素は、定数のデータ値を修
正せずにバスし、メモリ・アドレス値を当該のデータ・
メモリ・モジュールに対する識別番号(すなわち、デー
タ・メモリ・モジュールが存在する実行装置の番号及び
そのモジュール内のアドレス)に変換する。本発明のこ
の実施例では、データ・アドレスはそれぞれの実行装置
のデータ・メモリ・モジュール間に、一定の大きさのブ
ロックとしてインタリーブされる。したがって、PE番
号発生論理要素311.312.313は、アドレスさ
れたデータが存在する実行装置を決定するため、入力ア
ドレス値から所定の1組のビットを選択することができ
る。アドレス値の残りのビットは、選択された実行装置
のデータ・メモリ・モジュール内のアドレスとして扱わ
れる。別の実施例では、プログラム式論理(図示せず)
を使って各実行装置のデータ・メモリ・モジュール内で
より柔軟な30の区画に区分し、上述の方法で避けるこ
とができない「一定の大きさのブロック」という制約を
取り除くことができる。
ノード番号発生論理要素314は、プログラム命令から
導出される各原始命令に共通な識別ノード番号を割り当
てるために使用される。任意の時間におけるすべてのノ
ード番号は一意的であるが、実行済みのプログラム命令
に対するノード番号は必要に応じて再利用することがで
きる。ノード番号は、たとえば、各ディスパッチ装置2
04−206内の8ビツト・カウンタ(図示せず)によ
って発生することができる。このカウンタは、特定のデ
ィスパッチ装置に割り当てられた連続するアドレス空間
内の初期値にセットされ、機械サイクルごとに増分され
る。この方式はいつでも、ディスパッチされたがまだ実
行されていない命令の数があらかじめ指定された設計限
界よりも小さくなるのでうまく働く。
ディスパッチ装置204−208によってディスパッチ
されたプログラム命令は、3つのカテゴリ、すなわち、
算術論理命令、条件付き分岐命令、及び条件付き割当て
命令に分類される。無条件分岐命令は、命令バッファに
よって処理される。
各算術命令または論理命令は、ディスパッチ装置により
、3種類の原始オペレージ3ンまたは原始コマンド、ス
ナわち、オペレーション・コマンド、ロック・コマンド
、及び1つまたは2つの送[:l ? 7 F It:
 変換サレる。オペレーション・コマンドは、実行され
るオペレーション、親命令に対するノード番号、及びこ
のオーレージ3ンの結果が記憶される局所データ・メモ
リ412内の位置からなる。ノード番号は、ディスパッ
チされたがまだ実行されていないオペレーションを一意
的に識別する。ロック・コマンドは、親命令によって更
新されるデータ・メモリ位置を、この更新が実際に行な
われるまで、後続の命令が読み取り、または更新するの
を妨げる。
送信コマンドは、その命令の入力オペランドを含むデー
タ・メモリ・モジュールを有する実行装置i!208−
210に送られる。このコマンドは、要求された入力オ
ペランド値を局所データ・メモリから親コマンドが実行
される実行装置に供給するように、実行装置208−2
10を条件付ける。
送信コマンドは、3つのフィールドを有する。すなわち
、オペランドが取り出されるデータ・メモリ・モジュー
ル内のアドレス、オペランドが送られる先の実行装置2
08−210を識別する値、及び同じプログラム命令か
ら発生されるすべての原始オペレーションに共通なノー
ド番号である。
プログラム命令が1つのソース・オペランドを使用する
か、それとも2つのソース・オペラントラ使用するかに
よって、各プログラム命令ごとに1つまたは2つの原始
送信コマンドが発生される。
原始オペレーション用のソース・オペランドは、いずれ
かの実行装置208−210のデータ・メモリ・モジュ
ールから得ることができる。本発明のこの実施例では、
原始コマンドによって指定されるオペレーションは常に
、そのオペレーションの結果が記憶されるデータ・メモ
リ・モジュールを有する実行装置で実行される。ただし
、どの実行装置もこのオペレーションを実行することが
できる。この場合、オペレーション・コマンドは、結果
を適当なデータ・メモリ・モジュールに記憶するために
使用される追加のフィールド(図示せず)を含むことが
できる。
条件付き分岐命令は、本発明のこの実施例では特別な扱
いをする。条件付き分岐命令を含むプログラムは、条件
付き分岐命令が常に特定のディスパッチ装置206(す
なわち、最後のディスパッチ装置)に送られるように、
命令メモリ20i内で物理的に並べられる。命令は同時
に実行されるが、コンピュータ・システムの構成は、任
意の機械サイクルでそれぞれのディスパッチ装置に供給
された命令が、順序外れで実行されないようになってい
る。条件付き分岐命令は、条件付き分岐命令の後に続く
命令が分岐の解決後まで実行されないようにするため、
最後のディスパッチ装fi1206に割り当てられる。
本発明のこの実施例では、分岐命令が常にディスパッチ
装ff! 20−6に割り当てられるようにするための
命令の順序付けは、条件付き分岐命令の出現に基づいて
、プログラム命令をせいぜいN個のメンバを有するグル
ープ、(Nはディスパッチ装置の数)に分割することに
よって実現される。N個よりも少ないメンバを有する命
令グループは、条件付き分岐命令の前に空文字または「
ノー・オペレーション」命令を挿入することにより、N
個のメンバを有するように拡張される。これらのステッ
プにより、分岐命令が命令シーケンス内で所望の位置を
占めるようになる。
条件付き割当て命令は、その命令セットを保護する条件
を評価する前に命令セットを実行するために使用される
。この種の命令は不必要な取出し遅延を回避する。条件
付き割当て命令は、3オペランド命令、すなわち、2つ
のソース・オペランド及び1つの宛先アドレスを有する
命令である。
第1のソース・オペランドはプール値である。第2のソ
ース・オペランドと宛先オペランドは同じ形式であるこ
とが好ましい。第2のソース・オペランドの値は、第1
のオペランドが真である場合に、宛先アドレスで示され
る位置に割り当てられる。そうでない場合は、どのよう
な処置も取られない。
原始コマンドは、クロスバ−・ネットワーク207を介
して実行袋filffi208−210にディスパッチ
される。ネットワーク207は、いずれかのディスパッ
チai2o4−2oeの3つの出力ポートのうちの任意
の1つを実行装置208−210のいずれかに結合する
ことができる、通常のクロスバ−交換機を含むことがで
きる。適当な命令順序を維持するため、それぞれのディ
スパッチ装置から供給される原始コマンドは、機械サイ
クルを規定するクロック信号のそれぞれ異なる位相と同
時に、ネットワーク207に供給される。クロスバ−・
ネットワーク207は各ディスパッチ装置の出力ポート
を、クロック信号のそれぞれの位相と同時に、その要求
された実行装置に結合する。
ネットワーク207は1つの実行装置に対する要求を待
ち行列に入れ、連続するクロック位相の間の時間に2つ
のそのような要求を処理することができる。これらの要
求は、それらが命令グループで現れる順に待ち行列に入
れられる。ネットワーク207のこの機能により、プロ
グラム命令から発生されたすべての原始コマンドがそれ
ぞれ当該の実行装置にディスパッチされ、次の後続のプ
ログラム命令から発生された原始コマンドがディスパッ
チされる前に受け取られるようになる。クロスバ−・ネ
ットワーク207の代りに、多段ネットワーク等の他の
相互接続方式を使用してもよい。
第3図は、実行装置208−210の工っとして使用す
るのに適した回路のブロック・ダイヤグラムである。第
3図で、選択された実行装置に到着した原始コマンドが
、命令バッファ401に記憶される。バッファ401は
、たとえばノード番号によってアドレスされる高速ラン
ダム・アクセス・メモリまたは連想メモリ・アレイでよ
い。原始オペレーションは、他の実行装置208−21
0のデータ・メモリ412からソース・オペランドが得
られ、宛先アドレスでロックが得られるまで、このバッ
ファで待つ。このバッファ401内の各ワードは3つの
フィールドに分割され、そのうちの2つ、すなわち40
2と403は実際の入力オペランド値を保持し、残りの
1つ、すなわち404は命令コード及び宛先アドレスを
保持する。
この3つのフィールドはそれぞれ有効ビット405.4
06.407を含む。オペレーション・コマンド及び宛
先アドレス・フィールド404もロック・ビット408
を含む。ロック・ビット408がセットされていないと
きは、命令はまだ実行の準備ができていない。このビッ
トは、前の命令が依然として要求しているデータを含む
メモリ位置がオペレーションによって変更されないよう
にするために使用される。
クロスバ−・ネットワーク207を介して供給される送
信原始コマンド及びロック原始コマンドは、データ・メ
モリ412内部の送信/ロック・コマンド・バッファ4
15に供給される。次にこれらのコマンドの処理につい
て詳細に説明する。
たとえば、要求されたオペランドを別の実行装置から受
け取ったとき、命令バッファ401内のアドレスされた
位置に対して更新が行なわれるたびに、命令レディ回路
409はこの更新を知らされる。更新を知らされると、
命令レディ回路409は、更新された命令のアドレスに
おける有効ピッ)405,406.407及びロック・
ビット408を読み取って、命令が実行の準備ができて
いるかどうか判定する。命令が準備完了と判定すると(
すなわち、有効ピッ)405.406.407及びロッ
ク・ビット408がすべてセットされているとき)、命
令レディ論理回路は命令をレディ待ち行列410に置き
、命令は最終的にこの待ち行列から演算論理機構411
によって実行される。
データ・メモリ制御装置416は、ALU411とデー
タ・メモリ412の間の連絡、ならびに送信原始オペレ
ーション及びロック原始オペレーションの処理に対して
責任を負う。
実行装置内のデータ・メモリ・モジュール412は、3
種類の情報を保持できるように区分された記憶セルのア
レイからなる。まず、算術論理演算のソース及びオペラ
ンドであるか、または算術論理演算によって発生された
結果であるデータ値を保持する全クシ3ン413がある
。次に、据置き(deferred )要求リストを保
持するセクション414がある。最後に、セクション4
15は、ネットワーク418から到着し、データ・メモ
リ制御装置416によって検査されるのを待っている送
信コマンド及びロック・コマンドを保持する。
据置き要求リストは、データ依存関係の制約のために直
ちに処理することができない送信コマンド及びロック・
コマンドを保持する。これらの制約は、送信コマンド及
びロック・コマンドによって指定された、アドレスされ
た記憶セルがそれ自体前のロック・コマンドに応答して
ロックされているときに存在する。
データ・メモリ制御装置416は2種類の要求を受け取
る。すなわち、ALU411から到来する書込み要求(
WR)と、送信/ロック・コマンド・バッファ415及
び据置き要求リスト414から到来する送信コマンド及
びロック・コマンド(SLR)である。ALU411か
ら到来する要求に優先権が与えられる。データ有効ピッ
) 417は、メモリの、データ値を保持するために使
用されるセクション413内の各位置と関連している。
このビットは、そのメモリ位置が有効データを有する場
合は“1゛である。その位置が有効データを含むときは
、その位置に関する送信コマンドは直ちに満足させるこ
とができる。
第4図は、原始送信コマンドの実行を示す流れ図である
。ステップ601で、送信コマンドを受け取る。次にス
テップ502で、そこからデータが送られる、アドレス
された位置のデータ有効ビ、。
トがテストされる。データ有効ビ・ソトが+1“′であ
る場合は、ステップ503で、データ値を、そのデータ
値を受け取る実行装置及びそのデータが使われるオペレ
ーション・コマンドのノード番号の指示と共にネットワ
ーク212に供給することにより、送信コマンドが満足
される。そうでない場合は、ステップ504で、送信コ
マンドが据置き要求リスト414に記憶される。据置き
要求リスト414に置かれたコマンドは、連係リスト・
データ構造に記憶される。メモリ位置のデータ有効ビッ
トが“O“のとき、この位置の内容は据置き要求リスト
414を指すポインタとして扱われる。項目をまったく
有しないリストを指すポインタとして、またはリストの
最後の項目を指す次の連係ポインタとして、空白ポイン
タが使用される。
空白ポインタは、前に選んだ負の数で表すことができる
記憶セルのデータ有効ビットがロック・コマンドによっ
てオフにされると、記憶セルによって保持される値が、
空白の据置き要求リスト・ポインタに変更される。
第5図は、原始ロック・コマンドの実行を示す流れ図で
ある。ステップ601で、ロック・コマンドをデータ・
メモリ制御装置416が受け取る。
次にステップ602で、データ有効ビット417が評価
される。ステップ603で、データ有効ビットが“工“
′の場合は、データ記憶域413のデータ有効ビット4
17が°O″に−k ントされ、口、ンク・ビット要求
(LBR)命令が命令バッファ401に送られる。この
命令は、ロック・コマンドと同じメート番号を有する原
始オペレーションのロック・ビットをII I T+に
セントする。ステノブ804で、無効データを有する位
置に関するロック・コマンドが、無効データに関する送
信コマンドが処理される(上述)のと同様にして据置き
要求として処理される。
第6図は、ALU41Lからの書込み要求の実行を示す
流れ図である。ステップ701で、書込み要求及び書き
込むべきデータ値をデータ・メモリ制御装置416が受
け取り、ステップ702で、データ記憶域413内の要
求された位置に関するデータ有効ビットが評価される。
データ有効ビットが1″の場合、ステップ703で、エ
ラーが発生する。データ有効ビットがOの場合は、ステ
ップ704で、このメモリ位置に関する据え置かれた送
信コマンドまたはロック・コマンドが存在するかどうか
メモリ制御装置が判定する。そのようなコマンドが存在
しない場合は、ステップ708で、データ値がそのメモ
リ位置に書き込まれ、実行が完了する。しかし、据え置
かれた送信コマンドまたはロック・コマンドが存在する
場合は、これらのコマンドが、データ・メモリ制御装置
によって保持されたデータ値を使って処理される。ステ
ップ705でロック・コマンドに出会うまで、またはス
テップ704で据置き要求リストが空になるまで、ステ
ップ709で、リストからの送信コマンドが処理される
ステップ705でロック・コマンドに出会った場合は、
ステップ706で、アドレスされたメモリ位置が据置き
要求リストの残りの部分を指すようにセットされ(他に
据置き要求が存在しない場合は空白にセットされ)、デ
ータ有効ビットがnO“°にセットされる。この場合、
入力データ値はアドレスされた記憶セルに記憶されない
。据置き要求がロック・コマンドをまったく含まない場
合は、送信コマンドが、データ・メモリ制御装置416
によって保持されたデータ値を使って処理される。次に
、データ値がアドレスされた記憶セルに記憶され、その
記憶セルに対する有効ビット41フが”1″にセットさ
れる。データ・メモリ制御装置416によって保持され
たデータを使って要求リストを処理すると、データ・メ
モリ412のデータ記憶部分413に関する不必要な読
み書きが避けられる。
この種のプロセッサに十分適したプログラムの一例は、
ガラス・ザイデル反復手順を用いてAx=bの形の連立
工次方程式を解くプログラムである。Aマトリックスは
通常線であり、したがって、各行は通常の行ポインタ及
び列インデックスの形で表される。プログラムの下記の
ステートメントバカラス・ザイデル・アルゴリズムを1
反復実行するものである。
10  do 30 i=1.100 te100te :b(i) do 20 j :rowptr(i)、 rowpt
r(i+1)−1temp(i) =temp(i) 
−entval(j) ”x(colindl)) 20   continue x(i)  :temp(i)  / diag(i)
30   continue 最も内側のループに間接アドレツシングが含まれている
ため、このコードはベクトル化することが難しいことは
周知である。しかし、上述のプロセッサは、以下に示す
ように、最も内側のループの1反復に属するすべての命
令を2機械サイクルでディスパッチすることができる。
アレイxs t・empldiag及びentvalは
データ・メモリ211−213にあり、アレイの残りの
部分及びスカラー量はアドレス・メモリ303.304
.305及び定数メモリ302にあるものとする。
−時変数I I、JLIM、CJはアドレス・メモリ内
に割り振られ、FTEMPはデータ・メモ1ノ・モジュ
ール内に割り振られる。FTEMPをアレイにすること
により、このコードの実行を速くすることができる。
サイクル  命令 i  <−1; II <−i+1;  j <−rowptr(i);
branch  (igloo)−>  7;temp
(i)  <−、b(i) ;JLIM  <−row
ptr   (ii);CJ  <−colind(j
); branch  (j>JLIM)10 −>  6;
mul FTEMP <−、entval(j)、  
x(CJ);sub temp(i)  <−temp
(i)、  FTMP;j  <−j+1;  bra
nch  −>  4;6         div 
 x(i)  <−、temp(i)、  diag(
i);i  15  〈= i+1;  branch
  −>  2;7       end。
コンマ及びセミコロン区切り文字はプログラム命令間の
境界を示す。コンマの両側の命令はノード番号及び宛先
アドレスを共有する。したがって、サイクルはセミコロ
ンで終わる。サイクル2ないし6は上述のプログラムの
外側ループを含み、サイクル4及び5は内側ループを含
む。どのサイクルでも、アドレス・メモリ・モジュール
でただ1回の書込みオペレーションが実行されるだけで
ある。また、コード内のすべての条件付き分岐は、定数
メモリ302及びアドレス・メモリ303.304.3
05で得られる情報を使って、ディスパッチ装置204
−206で解決することができる。したがって、内側ル
ープ及び外側ループはどちらも、実行が追い着くのを待
たずにタスク指定されることが可能である。したがって
、すべてのデータ依存関係を自動的に守り、外側ループ
を何回も反復して順序外れで完了することができる。
他のアーキテクチャでは、Xに関する間接アドレツシン
グのため、外側ループは強制的に順番に完了せざるを得
ない。
上述ノブログラム・セットで使用した例示的な1組の方
程式では、マトリックスAは100X100の大きさを
有し、外側ループを1回反復するごとに内側ループは平
均10回実行される。この例では、ガラス・ザイデル手
順をt回反復するごとに3100機械サイクルで111
00個のプログラム命令がディスパッチされる。プログ
ラムを実行するプロセッサが6個のディスパッチ装置し
かもてないように制限されている場合は、同じ数の命令
が4100機械サイクルでタスク指定されることになる
。以上、順次プログラムの処理で高水準の並列性を実現
するコンピュータ・アーキテクチャについて説明した。
E、効果 本発明によれば、順次プログラムを高度の並列性をもっ
て実行することが可能になる。
【図面の簡単な説明】
第1図は、本発明の一実施例を組み込んだ例示的コンピ
ュータ・システムのブロック・ダイヤグラムである。 第2図は、第工図に示すコンピュータ・システムでの使
用に適したディスパッチ装置のブロック・ダイヤグラム
である。 第3図は、第1図に示すコンピュータ・システムでの使
用に適した実行装置のブロック・ダイヤグラムである。 第4図、第5図及び第6図は、第3図に示す実行装置の
オペレージ3ンを説明する流れ図である。 201・・・・命令メモリ、204−206・・・・デ
ィスパッチ装置、207・・・・クロスバ−・ネットワ
ーク、208−210・・・・実行装置、212・・・
・通信ネットワーク、302・・・・定数メモリ、30
3−305・・・・アドレス・メモリ、411・・・・
演算論理機構(ALU) 、412・・・・データ・メ
モリ、416・・・・データ・メモリ制御装置。 ′$1図 某4図 第5図 第6函

Claims (10)

    【特許請求の範囲】
  1. (1)第1及び第2の種類の混合したプログラム命令の
    シーケンスを並行して処理するためのコンピュータ・シ
    ステムであって、 上記プログラム命令シーケンスを保持し、上記シーケン
    スからの連続した命令をN個(Nは整数)の命令からな
    るグループに分けて供給するための命令記憶手段と、 それぞれ上記命令記憶手段から供給されるN個の命令の
    うち異なるものを受け取るように接続され、それぞれが
    上記第1の種類の命令を直接実行し、且つ上記第2の種
    類の各命令を表す複数の原始オペレーションを発生する
    、N個の命令ディスパッチ手段と、 上記ディスパッチ手段に接続され、それらから供給され
    る原始オペレーションを並行して実行する、M個(Mは
    整数)の命令オペレーション手段と を含むコンピュータ・システム。
  2. (2)上記第1の種類の命令が第1の種類のデータに作
    用し、第2の種類の命令が第2の種類のデータに作用し
    、 さらに、上記第1の種類のデータを保持するための第1
    の記憶手段と、 上記第2の種類のデータを保持するための第2の記憶手
    段を備えた、 請求項1に記載のコンピュータ・システム。
  3. (3)上記第1の種類のデータが主として整数データで
    あり、上記第2の種類のデータが主として浮動小数点デ
    ータである、 請求項2に記載のコンピュータ・システム。
  4. (4)上記第1の記憶手段が、N個の命令ディスパッチ
    手段の間にそれぞれ分配された上記第1の種類のデータ
    の同一のN個のコピーを含み、上記第2の記憶手段が、
    上記M個のオペレーション実行手段の間で区分される、 請求項2に記載のコンピュータ・システム。
  5. (5)上記原始オペレーションが、 M個のオペレーション実行手段のうちの第1のものを、
    該第1のオペレーション実行手段に関連する上記第2の
    記憶手段の区画からのデータ値を上記M個のオペレーシ
    ョン実行手段のうち第2のものに供給するように条件付
    ける、第1の種類の原始オペレーションと、 上記第2のオペレーション実行手段に関連する上記第2
    の記憶手段の区画内の所定の記憶セルだけにアクセスを
    限定するように、上記第2のオペレーション実行手段を
    条件付ける、第2の種類の原始オペレーションと、 上記第1のオペレーション実行手段から供給されるデー
    タ値に対して算術オペレーションを実行し、上記算術オ
    ペレーションの結果を上記所定の記憶セルに記憶するよ
    うに、上記第2のオペレーション実行手段を条件付ける
    、第3の種類の原始オペレーションとを含む、 請求項4に記載のコンピュータ・システム。
  6. (6)データ操作命令と混合された制御フロー命令を有
    するプログラム命令のシーケンスを並行して処理するた
    めのコンピュータ・システムであって、上記プログラム
    命令シーケンスを保持し、上記シーケンスからの連続し
    た命令をN個(Nは整数)の命令からなるグループに分
    けて供給するための命令記憶手段と、 それぞれ上記命令記憶手段から供給されるN個の命令の
    うち異なるものを受け取るように接続され、それぞれが
    上記制御フロー命令を直接実行し、且つ上記データ操作
    命令を処理してそれから原始オペレーションを発生する
    、N個の制御フロー処理手段と、 上記制御フロー処理手段に接続され、それらから供給さ
    れる原始オペレーションを並行して実行する、M個(M
    は整数)のデータ・フロー処理手段と を含むコンピュータ・システム。
  7. (7)さらに、上記制御フロー命令によって操作される
    データを保持するための第1の記憶手段と、上記データ
    操作命令によって操作されるデータを保持するための第
    2の記憶手段を備えた、請求項6に記載のコンピュータ
    ・システム。
  8. (8)上記第1の記憶手段が、上記制御フロー命令によ
    って操作されるデータの同一のN個のコピーを保持する
    ための、それぞれ上記N個の制御フロー処理手段の間に
    分配された同一のN個の記憶手段を含み、 上記第2の記憶手段が、上記M個のデータ・フロー処理
    手段の間に分配され、それぞれが、上記データ操作命令
    によって操作されるデータのそれぞれ異なる部分を保持
    する、M個の別々の記憶手段を含む、 請求項7に記載のコンピュータ・システム。
  9. (9)第1のデータ・セットを操作してプログラムの制
    御フローを決定する制御フロー命令と、第2のデータ・
    セットを操作してプログラムについての出力データ値を
    発生するデータ操作命令とが混在するシーケンスを保持
    するための命令メモリを備えたコンピュータ・システム
    において、 第1のデータ・セットを第1の記憶要素に記憶するステ
    ップと、 第2のデータ・セットを第2の記憶要素に記憶するステ
    ップと、 上記第1の記憶要素にアクセスして上記制御フロー命令
    を実行し、且つ上記データ操作命令をデータ・フロー・
    オペレーションに変換する、第1の処理要素で制御フロ
    ー命令とデータ操作命令が混在した上記シーケンスを処
    理するステップと、上記データ・フロー・オペレーショ
    ンを第2の処理要素で実行して上記出力データ値を発生
    するステップと を含む、命令シーケンスを処理する方法。
  10. (10)データ値をメモリ位置に条件付きで割り当てる
    ための方法であって、 第1の命令セットを復号し実行して上記データ値を発生
    するステップと、 上記第1の命令セットとは無関係に第2の命令セットを
    復号し実行して、上記第1及び第2の命令セットの復号
    及び実行を中断することなく論理的結果を発生するステ
    ップと、 所定の値を有する上記論理的結果に応答して、上記デー
    タ値を上記メモリ位置に記憶するステップとを含む方法
JP2198117A 1989-07-28 1990-07-27 順次プログラムの並列実行のためのコンピュータ・システム及び方法並びにデータ値割当方法 Pending JPH0370034A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US387552 1989-07-28
US07/387,552 US5197137A (en) 1989-07-28 1989-07-28 Computer architecture for the concurrent execution of sequential programs

Publications (1)

Publication Number Publication Date
JPH0370034A true JPH0370034A (ja) 1991-03-26

Family

ID=23530369

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2198117A Pending JPH0370034A (ja) 1989-07-28 1990-07-27 順次プログラムの並列実行のためのコンピュータ・システム及び方法並びにデータ値割当方法

Country Status (3)

Country Link
US (1) US5197137A (ja)
EP (1) EP0410105A3 (ja)
JP (1) JPH0370034A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06242954A (ja) * 1993-01-08 1994-09-02 Internatl Business Mach Corp <Ibm> 独立にアクセスされる中間記憶域を利用してスーパースカラ・プロセッサ・システムにおける命令ディスパッチを改善する方法およびシステム

Families Citing this family (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2835103B2 (ja) * 1989-11-01 1998-12-14 富士通株式会社 命令指定方法及び命令実行方式
US5511167A (en) * 1990-02-15 1996-04-23 Hitachi, Ltd. Program processing method and apparatus for producing a data flow type program
US5448746A (en) * 1990-05-04 1995-09-05 International Business Machines Corporation System for comounding instructions in a byte stream prior to fetching and identifying the instructions for execution
ATE146611T1 (de) * 1990-05-04 1997-01-15 Ibm Maschinenarchitektur für skalaren verbundbefehlssatz
JPH04111127A (ja) * 1990-08-31 1992-04-13 Toshiba Corp 演算処理装置
EP0475282B1 (en) * 1990-09-14 1998-12-16 Hitachi, Ltd. Synchronous method and apparatus for processors
GB9027853D0 (en) * 1990-12-21 1991-02-13 Inmos Ltd Multiple instruction issue
US5630157A (en) * 1991-06-13 1997-05-13 International Business Machines Corporation Computer organization for multiple and out-of-order execution of condition code testing and setting instructions
US5347639A (en) * 1991-07-15 1994-09-13 International Business Machines Corporation Self-parallelizing computer system and method
US5363495A (en) * 1991-08-26 1994-11-08 International Business Machines Corporation Data processing system with multiple execution units capable of executing instructions out of sequence
US5511172A (en) * 1991-11-15 1996-04-23 Matsushita Electric Co. Ind, Ltd. Speculative execution processor
US5410701A (en) * 1992-01-29 1995-04-25 Devonrue Ltd. System and method for analyzing programmed equations
US5577256A (en) * 1992-04-28 1996-11-19 Sharp Kabushiki Kaisha Data driven type information processor including a combined program memory and memory for queuing operand data
US6951019B1 (en) 1992-09-30 2005-09-27 Apple Computer, Inc. Execution control for processor tasks
US5465373A (en) * 1993-01-08 1995-11-07 International Business Machines Corporation Method and system for single cycle dispatch of multiple instructions in a superscalar processor system
WO1994027216A1 (en) * 1993-05-14 1994-11-24 Massachusetts Institute Of Technology Multiprocessor coupling system with integrated compile and run time scheduling for parallelism
US5615343A (en) * 1993-06-30 1997-03-25 Intel Corporation Method and apparatus for performing deferred transactions
TW255022B (ja) * 1993-06-30 1995-08-21 Intel Corp
US5568620A (en) * 1993-06-30 1996-10-22 Intel Corporation Method and apparatus for performing bus transactions in a computer system
TW242673B (ja) * 1993-08-18 1995-03-11 Ibm
CA2123442A1 (en) * 1993-09-20 1995-03-21 David S. Ray Multiple execution unit dispatch with instruction dependency
DE69430018T2 (de) * 1993-11-05 2002-11-21 Intergraph Corp., Huntsville Befehlscachespeicher mit assoziativem Kreuzschienenschalter
US6360313B1 (en) 1993-11-05 2002-03-19 Intergraph Corporation Instruction cache associative crossbar switch
EP1102166B1 (en) * 1993-11-05 2003-05-21 Intergraph Corporation Software scheduled superscalar computer architecture
US5848276A (en) * 1993-12-06 1998-12-08 Cpu Technology, Inc. High speed, direct register access operation for parallel processing units
US5471597A (en) * 1993-12-23 1995-11-28 Unisys Corporation System and method for executing branch instructions wherein branch target addresses are dynamically selectable under programmer control from writable branch address tables
US5495589A (en) * 1993-12-23 1996-02-27 Unisys Corporation Architecture for smart control of bi-directional transfer of data
US5644779A (en) * 1994-04-15 1997-07-01 International Business Machines Corporation Processing system and method of operation for concurrent processing of branch instructions with cancelling of processing of a branch instruction
US5758176A (en) * 1994-09-28 1998-05-26 International Business Machines Corporation Method and system for providing a single-instruction, multiple-data execution unit for performing single-instruction, multiple-data operations within a superscalar data processing system
US5619680A (en) * 1994-11-25 1997-04-08 Berkovich; Semyon Methods and apparatus for concurrent execution of serial computing instructions using combinatorial architecture for program partitioning
US5699536A (en) * 1995-04-13 1997-12-16 International Business Machines Corporation Computer processing system employing dynamic instruction formatting
US5797019A (en) * 1995-10-02 1998-08-18 International Business Machines Corporation Method and system for performance monitoring time lengths of disabled interrupts in a processing system
US5729726A (en) * 1995-10-02 1998-03-17 International Business Machines Corporation Method and system for performance monitoring efficiency of branch unit operation in a processing system
US5691920A (en) * 1995-10-02 1997-11-25 International Business Machines Corporation Method and system for performance monitoring of dispatch unit efficiency in a processing system
US5751945A (en) * 1995-10-02 1998-05-12 International Business Machines Corporation Method and system for performance monitoring stalls to identify pipeline bottlenecks and stalls in a processing system
US5752062A (en) * 1995-10-02 1998-05-12 International Business Machines Corporation Method and system for performance monitoring through monitoring an order of processor events during execution in a processing system
US5748855A (en) * 1995-10-02 1998-05-05 Iinternational Business Machines Corporation Method and system for performance monitoring of misaligned memory accesses in a processing system
US5949971A (en) * 1995-10-02 1999-09-07 International Business Machines Corporation Method and system for performance monitoring through identification of frequency and length of time of execution of serialization instructions in a processing system
US5862340A (en) * 1996-05-24 1999-01-19 International Business Machines Corporation Method operating in each node of a computer system providing and utilizing special records for collective communication commands to increase work efficiency at each node
US5825770A (en) * 1996-06-06 1998-10-20 Northern Telecom Limited Multiple algorithm processing on a plurality of digital signal streams via context switching
US5924128A (en) * 1996-06-20 1999-07-13 International Business Machines Corporation Pseudo zero cycle address generator and fast memory access
US5949995A (en) * 1996-08-02 1999-09-07 Freeman; Jackie Andrew Programmable branch prediction system and method for inserting prediction operation which is independent of execution of program code
US6012118A (en) * 1996-12-30 2000-01-04 Intel Corporation Method and apparatus for performing bus operations in a computer system using deferred replies returned without using the address bus
US6016539A (en) * 1997-11-03 2000-01-18 Teragen Corporation Datapath control logic for processors having instruction set architectures implemented with hierarchically organized primitive operations
US6112293A (en) * 1997-11-17 2000-08-29 Advanced Micro Devices, Inc. Processor configured to generate lookahead results from operand collapse unit and for inhibiting receipt/execution of the first instruction based on the lookahead result
US6314493B1 (en) 1998-02-03 2001-11-06 International Business Machines Corporation Branch history cache
US6249855B1 (en) * 1998-06-02 2001-06-19 Compaq Computer Corporation Arbiter system for central processing unit having dual dominoed encoders for four instruction issue per machine cycle
US7689560B2 (en) 2000-10-13 2010-03-30 Miosoft Corporation Persistent data storage techniques
US7587428B2 (en) * 2000-10-13 2009-09-08 Microsoft Corporation Maintaining a relationship between two different items of data
US6691306B1 (en) * 2000-12-22 2004-02-10 Lsi Logic Corporation Use of limited program space of general purpose processor for unlimited sequence of translated instructions
AU2002363142A1 (en) 2001-10-31 2003-05-12 Doug Burger A scalable processing architecture
US20030135741A1 (en) * 2001-12-04 2003-07-17 Applied Logical Systems, Llc Almost independent logically integrated license enforcement framework
US7860905B2 (en) * 2007-04-24 2010-12-28 Microsoft Corporation Systems and methods for modularizing data flows
US7860904B2 (en) * 2007-04-24 2010-12-28 Microsoft Corporation Standalone execution of incomplete data flows
US7962726B2 (en) * 2008-03-19 2011-06-14 International Business Machines Corporation Recycling long multi-operand instructions
US9772887B2 (en) 2008-06-02 2017-09-26 Microsoft Technology Learning, LLC Composable and cancelable dataflow continuation passing
US8677154B2 (en) * 2011-10-31 2014-03-18 International Business Machines Corporation Protecting sensitive data in a transmission
US9501327B2 (en) * 2014-05-13 2016-11-22 International Business Machines Corporation Concurrently processing parts of cells of a data structure with multiple processes
US11106467B2 (en) 2016-04-28 2021-08-31 Microsoft Technology Licensing, Llc Incremental scheduler for out-of-order block ISA processors

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3573854A (en) * 1968-12-04 1971-04-06 Texas Instruments Inc Look-ahead control for operation of program loops
US4295193A (en) * 1979-06-29 1981-10-13 International Business Machines Corporation Machine for multiple instruction execution
US4415969A (en) * 1980-02-07 1983-11-15 Intel Corporation Macroinstruction translator unit for use in a microprocessor
JPS6028015B2 (ja) * 1980-08-28 1985-07-02 日本電気株式会社 情報処理装置
US4598365A (en) * 1983-04-01 1986-07-01 Honeywell Information Systems Inc. Pipelined decimal character execution unit
JPH0769818B2 (ja) * 1984-10-31 1995-07-31 株式会社日立製作所 デ−タ処理装置
US4903196A (en) * 1986-05-02 1990-02-20 International Business Machines Corporation Method and apparatus for guaranteeing the logical integrity of data in the general purpose registers of a complex multi-execution unit uniprocessor
JPS63131230A (ja) * 1986-11-21 1988-06-03 Hitachi Ltd 情報処理装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06242954A (ja) * 1993-01-08 1994-09-02 Internatl Business Mach Corp <Ibm> 独立にアクセスされる中間記憶域を利用してスーパースカラ・プロセッサ・システムにおける命令ディスパッチを改善する方法およびシステム

Also Published As

Publication number Publication date
US5197137A (en) 1993-03-23
EP0410105A2 (en) 1991-01-30
EP0410105A3 (en) 1993-06-16

Similar Documents

Publication Publication Date Title
US5197137A (en) Computer architecture for the concurrent execution of sequential programs
JP2698033B2 (ja) 順不同の命令実行を可能にするコンピュータ・システム及びその操作方法
US7844802B2 (en) Instructions for ordering execution in pipelined processes
US5710902A (en) Instruction dependency chain indentifier
US3978452A (en) System and method for concurrent and pipeline processing employing a data driven network
US7617384B1 (en) Structured programming control flow using a disable mask in a SIMD architecture
RU2427895C2 (ru) Оптимизированная для потоков многопроцессорная архитектура
US5185868A (en) Apparatus having hierarchically arranged decoders concurrently decoding instructions and shifting instructions not ready for execution to vacant decoders higher in the hierarchy
EP0096575B1 (en) Concurrent processing elements for using dependency free code
EP0365188B1 (en) Central processor condition code method and apparatus
US6035391A (en) Floating point operation system which determines an exchange instruction and updates a reference table which maps logical registers to physical registers
US7219185B2 (en) Apparatus and method for selecting instructions for execution based on bank prediction of a multi-bank cache
KR0124812B1 (ko) 독립적으로 액세스되는 중간 기억 장치를 이용하는 슈퍼스칼라 프로세서 시스템의 명령어 디스패치를 향상시키기 위한 시스템 및 그 방법
JPH04232532A (ja) ディジタル・コンピュータ・システム
WO1999034283A1 (en) Method and apparatus to select the next instruction in a very long instruction word computer
JPH02149156A (ja) 通信プロセッサ装置
JP2002024011A (ja) プロセッサにおける命令の叙述された実行
JP2898105B2 (ja) コンパイル中にソフトウェア・スケジューリング技術を用いてハードウェアのパイプライン処理の中断を最小化する方法
US7418575B2 (en) Long instruction word processing with instruction extensions
JPH04336378A (ja) 情報処理装置
US20240220269A1 (en) Circuitry and method for instruction execution in dependence upon trigger conditions
US5907693A (en) Autonomously cycling data processing architecture
KR100431975B1 (ko) 분기에의한중단이없는파이프라인방식의마이크로프로세서를위한다중명령디스패치시스템
JP2004503872A (ja) 共同利用コンピュータシステム
US20210049016A1 (en) Efficient performance of inner loops on a multi-lane processor