JP2643087B2 - プログラム処理方法及びコンピュータ・システム - Google Patents

プログラム処理方法及びコンピュータ・システム

Info

Publication number
JP2643087B2
JP2643087B2 JP6065018A JP6501894A JP2643087B2 JP 2643087 B2 JP2643087 B2 JP 2643087B2 JP 6065018 A JP6065018 A JP 6065018A JP 6501894 A JP6501894 A JP 6501894A JP 2643087 B2 JP2643087 B2 JP 2643087B2
Authority
JP
Japan
Prior art keywords
branch
instruction
address
register
loop
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP6065018A
Other languages
English (en)
Other versions
JPH06332699A (ja
Inventor
クラウス・ユルグ・ゲツラフ
ウド・ウィル
ブリジット・ロエテ
ウィルヘルム・ハラー
ハンス・ウェルナー・タスト
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 JPH06332699A publication Critical patent/JPH06332699A/ja
Application granted granted Critical
Publication of JP2643087B2 publication Critical patent/JP2643087B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • 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/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/323Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect branch instructions
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter

Landscapes

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

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】プログラムにおいて、分岐命令に
しばしば遭遇する。高性能処理システムにおいては、こ
うした分岐命令の実行に要求されるサイクル数を低減す
るための手段が採用される。
【0002】
【従来の技術】Normoyleらによる米国特許出願第507
0475号は、中央処理ユニット(CPU)とインタフ
ェースする浮動小数点計算ユニット(FPU:floating
pointcomputation unit) を含むデータ処理システム
を示す。中央処理ユニットは自身が浮動小数点マイクロ
命令を実行することをFPUに通知するために、ディス
パッチ制御信号を供給し、またディスパッチ制御信号が
供給されるのと同じ動作サイクルの間に、浮動小数点マ
イクロ命令の開始アドレスを含むディスパッチ・アドレ
スを供給する。あるデコードされるマクロ命令の開始ア
ドレスを記憶するためのバッファ・メモリがFPU内に
提供される一方で、以前にデコードされたマクロ命令に
対応するマイクロ命令のシーケンスがFPUによって実
行される。
【0003】この特許は更にインタフェース論理を教示
し、このインタフェース論理はFPU及びCPUの非同
期のオペレーションを許可するための適切な制御信号を
扱い、更にFPUオペレーションを開始するために、マ
クロ命令の単一レベルのパイプライン化を使用すること
により高効率を達成する。また、FPU命令情報の転送
を許可し、適切なローディング及びFPUによる続く使
用に対応するために、適切な制御信号が使用される。F
PUにおける単一バッファ・パイプラインがフルで、F
PU命令を受入れ不能な時に、CPUがFPU命令を転
送しないことを保証するための制御が更に要求される。
【0004】この特許ではまた、CPUデータ・バスと
FPUデータ・バスとの間の両方向データ転送を提供す
る制御信号が開示される。更に、FPUにより実行され
る計算において発生する浮動小数点誤りを処理するため
の他の制御信号が提供される。
【0005】Lackeyらによる米国特許出願第45091
16号は、CPUとFPU間の相互接続構成(この特許
明細書の中では特殊命令プロセッサと称されている)を
述べている。CPUはメモリから直列に全てのマイクロ
命令を取り出し、命令をデコードする。命令のイメージ
がFPUに受渡される。FPUによる処理を要求する命
令が受信されると、CPUはオペランドを含むデータ・
ワードをメモリから取り出し、それらをFPUに受渡
す。
【0006】命令を受信後、FPUはまた命令をデコー
ドし、命令のオペランドを含むデータ・ワードを受信す
るように進行する。FPUは次に従来通りにオペランド
を処理し、CPUに処理結果すなわち処理データ及び条
件コードを戻す準備をする。CPUはFPUにより処理
の終了を伝えられると、FPUにデータを送信するよう
に伝える。CPUは次に処理データをメモリ内の記憶に
戻すことが可能となる。
【0007】DeGrootによる米国特許出願第46835
47号は、プットアウェイ(putaway)・バス及びバイ
パス・バスを有する複数の浮動小数点演算ユニット(F
PU)を含むデータ処理システムを教示する。FPUは
複数の乗除算命令を処理する新たな命令を含む。これら
の命令は、アキュムレート・バイパス・バスからの入力
と一緒に、バイパス・バス上の各乗算または除算結果を
加算器の入力に渡す命令を含む。アキュムレート・バイ
パス・バスは、アキュムレート乗算演算またはアキュム
レート除算演算における自動加算演算に対応する加算器
からの出力である。これは2つの浮動小数点結果を各サ
イクルにおいて生成し、その1つはCPUによる介入制
御なしに累算される。
【0008】Nishiyama らによる米国特許出願第465
4785号は、汎用命令演算ユニットまたはCPU、及
び浮動小数点命令演算ユニットまたはFPUなどの複数
の演算ユニットを有する情報処理システムを示す。この
情報処理システムは、各演算ユニットに対応して、条件
分岐命令の分岐判断において使用される条件コードを生
成する手段を含む。各演算ユニットにおいて、コード生
成手段により生成される条件を使用し、条件分岐命令の
分岐の成功または失敗を判断する分岐判断手段が提供さ
れる。更に判断ユニット判定回路が提供され、これは各
演算ユニットの動作状態に応答して、どの分岐判断手段
が動作されるかを示す命令信号を生成し、この命令信号
が分岐判断手段に供給される。それにより、それぞれの
演算ユニットにおいて獲得される分岐判断結果の1つを
有効結果として使用することにより、分岐制御が実行さ
れる。
【0009】IBM Technical Disclosure Bulletin、vol
32、no 5B、pp 403-404(1989年10月)"Repeati
ng Microcode Words for Fast Controlled Repeat Cycl
eFunctions"は、マイクロプログラム制御式プロセッサ
における繰返しサイクル許可機能を教示する。この開示
では、各ループするマイクロ制御ワードが実行される時
に、マイクロワード制御ラッチがセットされる。このラ
ッチは制御レジスタへのマイクロ制御ワードのゲート論
理を制御する。ラッチがオンの場合、次のサイクルの開
始時に制御レジスタにクロック入力される制御ワード
は、現制御レジスタの出力から供給される。ラッチがオ
フの場合、次のサイクルの開始時に制御レジスタにクロ
ック入力される制御ワードは制御記憶の出力である。
【0010】IBM Technical Disclosure Bulletin、vol
33、no 10B、pp 253-259 (1991年3月)"Zero-cy
cle Branches in simple RISC Designs"は、中断なしに
または標準固定小数点命令資源を使用して分岐を実行す
る分岐実行ユニットを提供することにより、RISCシ
ステムにおけるパイプライン遅延を低減する方法を教示
する。この分岐実行ユニットは固定小数点及び浮動小数
点実行ユニットにはほとんど認識できない分岐の実行を
試行する。この分岐実行ユニットのオペレーションを可
能とするためには、ソフトウェア支援が必要となる。
【0011】ハイ・エンド・マシンにおいて、分岐命令
を実行するために必要なサイクル数を0サイクルまたは
1サイクルに低減する多数の方法が知られている。一般
に、これらは前の命令が実行される間に、次の分岐サイ
クルが処理されることを許可する。前の命令が分岐条件
の実行にも、マイクロプログラムがジャンプするアドレ
スの生成にも影響しないと仮定すると、分岐条件が計算
され、処理される次の命令のアドレスが命令バッファに
配置される。
【0012】こうした実施例は高性能なコンピュータ能
力、及び並列データ・フローを制御するための余分な回
路を必要とする。更に、現存のマイクロコード・シーケ
ンスとの下位互換性を提供することが可能でない。
【0013】
【発明が解決しようとする課題】本発明の目的は、分岐
命令の実行のためのより効率的な方法を提供することで
ある。
【0014】
【課題を解決するための手段】本目的はプロセッサ及び
1つのコプロセッサを提供することにより達成され、コ
プロセッサは他のプロセッサに依存する。上記プロセッ
サの1つにおいて、ループ内の命令が処理され、上記プ
ロセッサの他において同時にループ終了条件が処理され
る。本発明の好適な実施例では、コプロセッサは浮動小
数点ユニットである。
【0015】ループ終了条件を評価する方法は、次の特
徴を有する。ループ内の命令の上記処理の間に、分岐命
令の指標値が計算され、計算された指標値が分岐条件値
と比較される。分岐条件値が計算された指標値に等しい
場合、成功分岐標識ラッチがセットされる。セットされ
た成功分岐標識ラッチは、ループ内の命令が再度実行さ
れることを示す。それ以外はループ外の次の命令が実行
される。
【0016】本発明は主プロセッサ、従属コプロセッ
サ、及び汎用目的レジスタを有するコンピュータ・シス
テムを使用する。本発明の好適な実施例によれば、分岐
命令条件が満たされた時にセットされる成功分岐標識ラ
ッチが提供される。第1の分岐アドレス・レジスタは分
岐命令のアドレスを記憶し、第2の分岐アドレス・レジ
スタは分岐命令条件が満たされた時に実行される目的命
令のアドレスを記憶する。
【0017】コンピュータ・システムは更に、分岐マイ
クロコード命令のレジスタ番号を記憶する第1及び第2
の補助レジスタ、及び分岐条件の計算を制御するための
第1及び第2のラッチを提供される。
【0018】
【実施例】本発明を説明するために、IBM system/390マ
イクロ命令セットで知られるある特定の分岐命令が選択
される。BXLE(Branch on Index Low or Equal)命
令は図1に示される形式を有する。BXLEは16進
値'87'のオペレーション・コードOP、2つのフィー
ルドR1及びR3、及び分岐アドレスD2を有する。
【0019】BXLE命令はEnterprise Systems Archi
tecture/390 Principles ofOperation(IBM Publicatio
ns Number SA22-7201)で詳細に述べられている。この
命令は、そのアドレスがフィールドR1に提供されるレ
ジスタに記憶される第1オペランドに増分を加算し、次
に合計を比較値と比較する。この比較結果により、分岐
が発生するか否かが決定される。その後、合計が第1オ
ペランドのロケーション(すなわち、フィールドR1に
そのアドレスが提供されるレジスタ)に配置される。フ
ィールドD2に記憶されるアドレスは、分岐が発生する
アドレスを示す。BXLEにおいて、合計が比較値以下
の場合、現PSW内の次の命令アドレスがフィールドD
2内の分岐アドレスにより置換される。
【0020】R3フィールドの値が偶数の場合、これは
1対のレジスタを指定し、その対の偶数及び奇数レジス
タの内容がそれぞれ増分及び比較値として使用される。
R3フィールドの値が奇数の場合、これは単一のレジス
タを指定し、そのレジスタの内容が増分及び比較値の両
方として使用される。
【0021】BXLE命令を使用する典型的なプログラ
ム・ループでは、ベクトル積が計算される。こうしたプ
ログラムは次の命令を含む。 L1: LDR ロード R2>R1 MD R1*キャッシュ・オペランド>R1 AD R1+キャッシュ・オペランド>R1 STD ストア R1>キャッシュ BXLE 増分後に比較。満足されない場合、L1に分岐。
【0022】典型的プログラムからのこの抽出におい
て、LDR命令によりレジスタR2に記憶される値がレ
ジスタR1にロードされる。これは1サイクルを必要と
する。次にMD命令により、レジスタR1の値がキャッ
シュの値により乗算され、R1レジスタに記憶される。
これは別のサイクルを必要とする。次にAD命令によ
り、レジスタR1の値がキャッシュの値に加算され、レ
ジスタR1に配置される。これは1サイクルを必要とす
る。次にSTD命令により、レジスタR1の値がキャッ
シュに記憶される。これは更に1サイクルを必要とす
る。最後にBXLE命令が実行される。図4及び図5に
関連して後述されるように、従来システムでは、分岐オ
ペレーションが実行される場合、これは3サイクルを要
し、それ以外の場合には2サイクルを要した。
【0023】図2及び図3は本発明を実施するために使
用する装置を示す。これらの図において、本発明の共通
要素に対しては同一番号が使用される。
【0024】図2は実行される命令のアドレスを生成す
るために使用される回路を示す。アドレス発生器100
において、プログラム内の命令の目的アドレスが、例え
ばBXLEなどの分岐命令により生成され、マルチプレ
クサ101を介し、命令アドレス・レジスタ(IAR)
103に渡される。目的アドレスは命令バッファ・セレ
クタ112に渡され、これはアドレスされる命令を命令
バッファ110から選択する。命令バッファ110は第
1オペレーション・レジスタ120に接続され、第1オ
ペレーション・レジスタは続いて第2オペレーション・
レジスタ130に接続される。
【0025】命令の実行の間、IAR変更子107がプ
ログラムの次の順次命令をアドレスする。IAR変更子
107はこの命令の計算を許可するネットワークであ
る。IAR変更子の出力は、ライン108及びマルチプ
レクサ101を介して、命令アドレス・レジスタ103
に接続される。
【0026】IAR変更子(IAR Mod)107の
出力は、マルチプレクサ109を介して、命令バッファ
110に接続される。マルチプレクサ109の他の入力
は、後述のように、プログラム・ループ内の最初の命令
のアドレスを記憶する分岐目的レジスタ140に接続さ
れる。このアドレスは分岐命令のフィールドD2から生
成される。
【0027】マルチプレクサ109はANDゲート15
0からの信号により制御される。ANDゲート150は
3入力を有する。第1の入力は成功分岐(SFB)条件
ラッチSFB240から到来し、第2の入力は成功ルー
プ条件信号SBCであり、第3の入力はアドレス比較器
160の出力から到来する。アドレス比較器160はI
AR変更子(IAR Mod)107内のアドレスを分
岐アドレス・レジスタ165内のアドレスと比較し、2
つのアドレスが等しい場合に信号を生成する。
【0028】図3は本発明の1実施例におけるデータ・
フローを示す。第1オペレーション・レジスタ120は
補足レジスタ220に接続される。補足レジスタ220
はBXLE命令のR1及びR3フィールドにより提供さ
れるレジスタのアドレスを記憶及びデコードする。第1
オペレーション・レジスタ120はまたアドレス・デコ
ーダ200にも接続される。アドレス・デコーダ200
は、BXLE命令のR1及びR3フィールドにより提供
されるレジスタの汎用目的レジスタ・ファイル250内
におけるアドレスをデコードする。
【0029】アドレス・デコーダ200及び補足レジス
タ220の両者は、マルチプレクサ225及び230に
接続され、これらのマルチプレクサは成功分岐(SF
B)条件ラッチ240からの信号により制御される。マ
ルチプレクサ225及び230は、成功分岐(SFB)
条件ラッチ240がセットされない時、アドレス・デコ
ーダ200内のデコード・アドレスをパスするように制
御される。それ以外の場合は、補足レジスタ220に記
憶されるデコード・アドレスをパスする。
【0030】マルチプレクサ225は、BXLE命令の
R1フィールドに記憶されるアドレスの値を汎用目的レ
ジスタ・ファイル250にパスする。このアドレスに記
憶される値は、演算論理ユニット280のAレジスタ2
60にパスされる。マルチプレクサ230は、BXLE
命令のR3フィールドに記憶されるアドレスの値を汎用
目的レジスタ・ファイル250にパスする。このアドレ
スに記憶される値は、演算論理ユニット280のBレジ
スタ270にパスされる。
【0031】演算論理ユニット280にはDレジスタ2
90が接続され、これは演算論理ユニット280の出力
を記憶し、その出力をAレジスタ260、Bレジスタ2
70、または汎用目的レジスタ・ファイル250にパス
する。演算論理ユニット280の出力には更に分岐デコ
ーダ300が接続され、これは後述のように、分岐命令
に対する条件が適合する場合に、成功分岐条件SFB信
号を生成する。
【0032】従来のBXLE命令の処理について、図4
及び図5を参照しながら説明する。図中におけるバツ印
はサイクル内において活動が実行されるポイントを示
す。図中の水平バーは、信号またはデータが有効な期間
を示す。
【0033】オペレーションの第1サイクルにおいて、
IAR変更子107からの命令Aのアドレスがマルチプ
レクサ109の出力から取り出され、命令バッファ11
0にパスされる(ライン400、500)。
【0034】オペレーションの第2サイクルにおいて、
実行される次の命令Bのアドレスが計算され、マルチプ
レクサ109の出力に配置される(ライン400、50
0)。新たなアドレスはまた命令アドレス・レジスタ
(IAR)103にも配置される。命令Aが命令バッフ
ァ110から第1オペレーション・レジスタ120にロ
ードされる(ライン410、510)。
【0035】オペレーションの第3サイクルにおいて、
実行される次の命令の命令バッファ110内のアドレス
が計算され、マルチプレクサ109の出力に配置される
(ライン400、500)。この例では、この次の命令
は分岐命令BXLEである。もちろん任意の分岐命令で
あっても良い。命令Aが第1オペレーション・レジスタ
120から第2オペレーション・レジスタ130にパス
され(ライン420、520)、命令Bが命令バッファ
110から第1オペレーション・レジスタ120にパス
される(ライン410、510)。
【0036】第1オペレーション・レジスタ120及び
第2オペレーション・レジスタ130内の命令A及びB
は、従来技術において既知のようにデコードされ、実行
される。
【0037】オペレーションの第4サイクルにおいて、
BXLE命令が命令バッファ110から第1オペレーシ
ョン・レジスタ120にパスされ、ここでデコード及び
実行される(ライン410、510)。
【0038】BXLE命令のデコーディング及び実行
は、既知のように実行される。R1及びR3フィールド
の内容がアドレス・デコーダ200にパスされ、デコー
ダが汎用目的レジスタ・ファイル250内のレジスタの
アドレスをデコードし、そこに第1オペランドの値、増
分値、及び比較値が記憶される。デコード・アドレスは
マルチプレクサを介して、汎用目的レジスタ・ファイル
250にパスされ、そこで読出しオペレーションが実行
される(ライン430、530)。
【0039】オペレーションの第5サイクルにおいて、
BXLE命令が第1オペレーション・レジスタ120か
ら第2オペレーション・レジスタ130にパスされる
(ライン420、520)。しかしながら、BXLE命
令はその完了に少なくとも2サイクルを要するために、
第1オペレーション・レジスタ120内にも留まる。I
AR変更子107において、ループ・オペレーションの
完了時に実行される次の命令(NSI)のアドレスが計
算される。アドレス発生器100は分岐条件が成功の場
合、準備される目的アドレスを計算する(ライン49
0)。R1及びR3フィールドに記憶されるアドレスに
より示される汎用目的レジスタ250内のレジスタの内
容、すなわち第1オペランド及び増分値が、Aレジスタ
260及びBレジスタ270に読出される(ライン44
0、540)。演算論理ユニット280において、Aレ
ジスタ260及びBレジスタ270の内容が一緒に加算
される(ライン460、560)。BXLEフィールド
のR3フィールドに記憶される値はまた、汎用目的レジ
スタ・ファイル250内において、奇数レジスタ内の
値、すなわち上述のように比較値をアドレスするために
も使用される(ライン430、530)。
【0040】オペレーションの第6サイクルでは、分岐
条件の成功か否かに依存して異なる処理が実行される。
図4は成功分岐条件の例を示す。すなわち、ループ・オ
ペレーションが継続される。この場合、第1オペランド
と増分値との合計(S)、すなわちR1内のアドレスに
より示されるレジスタに記憶される値、及びR3フィー
ルドにより示される偶数レジスタの値の合計が、汎用目
的レジスタ・ファイル250に書込まれ(ライン45
0)、更にAレジスタ260にも書込まれる(ライン4
40)。BXLE命令のフィールドR3に記憶されるア
ドレスにより示される奇数レジスタの内容は、Bレジス
タ270に読込まれる(ライン440)。
【0041】演算論理ユニット280において、BXL
E命令のフィールドR3のアドレスにより示される奇数
レジスタの内容が、フィールドR3及びR1の値により
示されるレジスタの内容の値の合計から減算される(ラ
イン460)。この値が正または0の場合、分岐条件が
満たされて、成功分岐条件信号(SFB)が発行され
(ライン470)、BXLE命令のD2フィールドのア
ドレス値が、目的命令(TGI)のアドレスを示すため
に、IAR変更子107にパスされる(ライン40
0)。
【0042】しかしながら、図5に示されるように、演
算論理ユニット280内の値が負の場合、分岐条件は満
たされず(ライン560)、成功分岐条件信号は発行さ
れない(ライン570において破線により示される)。
次の命令(NSI)が第1オペレーション・レジスタ1
20にパスされ(ライン510)、そこにおいてデコー
ドされ、実行が開始される。
【0043】図4及び図5を比較すると、BXLE命令
が第1オペレーション・レジスタ120にパスされる時
点から、次の非分岐命令が第1オペレーション・レジス
タにパスされる時点までが、分岐条件が成功の場合には
3サイクルを要し(図4参照)、また分岐条件が不成功
の場合には2サイクル(図5参照)を要することがわか
る。BXLEの成功完了は、サイクル7で第2オペレー
ション・レジスタ130において待機サイクルを要求
し、これはノー・オペレーション(NOP)命令として
示されている(ライン420)。
【0044】本発明による分岐命令の処理について次に
説明する。ここではプログラムが浮動小数点ユニットに
おいて実行される一連の4つの命令F1乃至F4を含む
ループを含み、BXLE命令がそれに続くものと仮定す
る。こうした命令のセットはベクトル演算では典型的で
ある。もちろん、ループが実寿命において、これより長
いことも可能である。ループはn回実行される。
【0045】図6はループの1回目のパスを示す。図4
及び図5に関連して述べられたように、IAR変更子1
07は命令が見い出される命令バッファ110における
アドレスを計算する(ライン600)。ライン605及
び610で示されるように、命令は命令バッファ110
から第1オペレーション・レジスタ120へ、更に第2
オペレーション・レジスタ130へと、続くサイクルに
おいてパスされる。単純化のため、命令F1乃至F4及
びBXLEだけが、図6乃至図8において示されてい
る。図6乃至図8において、互いに対応するラインには
同一番号が提供される。
【0046】1回目のループの第6サイクルにおいて
(図6)、BXLE命令が第1オペレーション・レジス
タ120にパスされ(ライン605)、第7サイクルに
おいて、更に第2オペレーション・レジスタ130にパ
スされ(ライン610)、第8サイクルにおいて分岐条
件が評価される(ライン665)。これらについては既
に図4及び図5に関連して述べた。1回目のループにお
いて、分岐条件は成功し、成功分岐条件信号(SFB)
が発行され(ライン630)、次のサイクルにおいて、
成功分岐(SFB)ラッチ240をセットする。成功分
岐ラッチ240は図8に関連して後述されるように、自
身がリセットされるまで、セットされた状態を維持す
る。
【0047】成功分岐条件信号(SFB)はまた、分岐
される目的アドレス(すなわちBXLE命令のD2フィ
ールドで示されるアドレス)を分岐目的レジスタ140
内に記憶する。更に、BXLE命令のR1及びR3フィ
ールドに提供されるレジスタのアドレスが、補足レジス
タ220に記憶される。分岐命令自身のアドレスは、分
岐アドレス・レジスタ165に記憶される。
【0048】成功分岐条件信号(SFB)はまた第9サ
イクルにおいて、分岐A1ラッチをセットする(ライン
640)。次に、このラッチは第10サイクルにおい
て、分岐A2ラッチをセットする(ライン645)。分
岐A1ラッチ及び分岐A2は、図6乃至図8に示される
ように、1サイクルの間だけセットされた状態を維持す
る。
【0049】図7はループにおけるパス2からパスn−
1(すなわち最後から2番目のパス)までのパスを表
す。これらのパスでは、浮動小数点命令F1乃至F4が
直接第1オペレーション・レジスタ120及び第2オペ
レーション・レジスタ130から、浮動小数点ユニット
にパスされ、そこで実行される(ライン600乃至61
0)。
【0050】浮動小数点ユニットにおける浮動小数点命
令F1乃至F4の実行と並列に、分岐条件が後述される
ように固定小数点ユニットにおいて計算される。
【0051】図7の第3サイクルで示されるように、或
いは前述のように、成功分岐条件信号は分岐A1ラッチ
をセットする(ライン640)。これは図6の第9サイ
クルと等価なステップである。分岐A1ラッチは、補足
レジスタ220に記憶されるR1及びR3で示されるレ
ジスタの値を、汎用目的レジスタ・ファイル250から
Aレジスタ260またはBレジスタ270に読出す(ラ
イン655)。これは成功分岐ラッチ240からの信号
によりスイッチされるマルチプレクサ225及び230
により制御される。成功分岐条件信号(SFB)は分岐
B2ラッチをセットする(ライン650)。
【0052】図7の第4サイクルにおいて、BXLE命
令のR1フィールドに提供されるアドレスにおける汎用
目的レジスタ・ファイル250に記憶される第1オペラ
ンドと、BXLE命令のR3フィールドに提供されるア
ドレスにおける汎用目的レジスタ・ファイル250に記
憶される増分値との合計(S)が、演算論理ユニット2
80内において計算され(ライン665)、これが次に
Aレジスタ260またはBレジスタ270のいずれかに
書戻される。BXLEコマンドのR3の奇数部分により
提供されるアドレスにおける汎用目的レジスタ250の
値が、Aレジスタ260またはBレジスタ270の他方
のレジスタに読出される。アドレスが補足レジスタ22
0から獲得され、マルチプレクサ221により制御され
る。マルチプレクサ221は、分岐A2ラッチが活動状
態の時(ライン645)、トリガされる。
【0053】図7の第5サイクルにおいて、分岐条件が
再度チェックされ(ライン665)、条件が満たされて
いる限り、成功分岐ラッチ240はセット状態を維持す
る(ライン625)。
【0054】ループの終わりはIAR変更子107内の
命令のアドレスを調査し、これがループ内の最後の命令
のアドレス、すなわちBXLE命令のアドレスと同じか
否かを確認することにより決定される。上述のように、
ループ内の最後の命令のアドレスは分岐アドレス・レジ
スタ165に記憶される。図2に示されるアドレス比較
器160において比較が実行される。2つのアドレス命
令が等しい場合、信号が生成され(ライン675)、B
XLE命令を第1オペレーション・レジスタ120に読
出すために、BXLE命令のアドレスを命令バッファに
パスする代わりに、ループの最初の命令F1のアドレス
が分岐目的レジスタ140から読出され、命令バッファ
にパスされる。マルチプレクサ109は上述のように、
ANDゲート150からの信号により制御される。
【0055】成功分岐条件信号(SFB)はまた分岐B
2ラッチをセットする。このラッチは第1オペランドと
増分値との計算された合計(S)を、BXLE命令のR
1により示されるアドレスにおける汎用目的レジスタ・
ファイル250へ書込むことを制御する。
【0056】図8は浮動小数点命令F1乃至F4のルー
プにおける最終処理を表す。図8の第1サイクルから第
4サイクルまでの計算は、上述のように進行する。第5
サイクルにおいて、分岐条件は満たされない(ライン6
65)。この場合、成功分岐条件信号(SFB)は発行
されず(ライン630)、その結果、成功分岐条件ラッ
チ240はセットされない(ライン625)。図8の破
線は信号の不在を示す。その結果、ANDゲート・ラッ
チ150からマルチプレクサ109へ信号が発行され
ず、分岐命令BXLEが命令バッファ110から第1オ
ペレーション・レジスタ120にパスされる(ライン6
05)。分岐条件が次に従来通りに評価され、それが満
たされない場合、IAR変更子107から読出された次
の命令NSIが命令バッファから第1オペレーション・
レジスタ120に読出され、上述のように実行される。
【0057】本発明を使用することにより、分岐条件の
評価に要する有効時間を3サイクルから0サイクルに低
減することが可能となる。これは分岐条件に関連する計
算を固定小数点ユニットにおいて実行することにより達
成される。一方、浮動小数点の計算は浮動小数点ユニッ
トにおいて実行される。
【0058】本発明に関連して以下の事項について開示
する。 (1)主プロセッサ及び従属コプロセッサを有するデュ
アル・プロセッサ・コンピュータ・システムにおいて、
ループ内に命令を含むプログラムを処理する方法であっ
て、上記プロセッサの一方において、ループ内の命令を
同時に処理するステップと、上記プロセッサの他方にお
いて、ループ終了条件を処理するステップと、を含む方
法。 (2)上記ループ内の命令が数学的オペレーションであ
る、(1)記載の方法。 (3)上記コプロセッサが浮動小数点ユニットである、
(1)または(2)記載の方法。 (4)上記ループ終了条件が分岐命令(BXLE)であ
る、(1)、(2)または(3)に記載の方法。 (5)上記分岐命令がBXLE(branch on index low
or equal)命令である、(4)記載の方法。 (6)上記ループ内の命令の上記処理の間に、分岐命令
(BXLE)に対する指標値を計算する第1のステップ
と、計算された指標値を分岐条件値と比較する第2のス
テップと、分岐条件値が計算された指標値に等しい場合
に、成功分岐標識ラッチをセットする第3のステップ
と、成功分岐標識ラッチがセットされる場合、ループ内
の命令を再度実行し、それ以外の場合には実行されるル
ープ外の次の命令にジャンプする第4のステップと、を
含む(4)または(5)記載の方法。 (7)上記第1のステップが指標レジスタから指標値の
前の値を取り出し、前の値に分岐命令(BXLE)内に
提供される値を加算するステップを含む、(6)記載の
方法。 (8)第4のステップが実行される目的命令のアドレス
を第1の分岐アドレス・レジスタに配置することにより
実行される、(6)記載の方法。 (9)主プロセッサ、従属コプロセッサ及び汎用目的レ
ジスタ(250)を有するコンピュータ・システムであ
って、分岐マイクロコード命令条件が満たされる時セッ
トされる成功分岐標識ラッチ(240)と、分岐命令
(BXLE)の分岐アドレス(D2)を記憶する分岐目
的アドレス・レジスタ(140)と、分岐命令(BXL
E)のアドレスを記憶する分岐アドレス・レジスタ(1
65)と、分岐命令(BXLE)条件が満たされない場
合に実行される次の命令(NSI)のアドレスを生成す
る命令アドレス変更子レジスタ(107)と、を含むコ
ンピュータ・システム。 (10)分岐命令(BXLE)のレジスタ番号(R1、
R3)を記憶する補足レジスタ(220)を含む、
(9)記載のコンピュータ・システム。 (11)分岐条件の計算を制御する第1及び第2のラッ
チを含む、(9)または(10)記載のコンピュータ・
システム。
【0059】
【発明の効果】以上説明したように、本発明によれば、
分岐命令の実行のためのより効率的な方法が提供され
る。
【図面の簡単な説明】
【図1】BXLE分岐命令形式を示す図である。
【図2】実行される次の命令のアドレスを計算するため
に使用される回路の図である。
【図3】本発明のデータ・フロー及び汎用目的レジスタ
のアドレス機構を示す図である。
【図4】従来技術によるBXLE分岐命令の実行を示す
図である。
【図5】従来技術によるBXLE分岐命令の実行を示す
図である。
【図6】本発明によるBXLE分岐命令の実行を示す図
である。
【図7】本発明によるBXLE分岐命令の実行を示す図
である。
【図8】本発明によるBXLE分岐命令の実行を示す図
である。
【符号の説明】 103 命令アドレス・レジスタ(IAR) 107 命令アドレス変更子レジスタ(IAR変更子) 110 命令バッファ 120 第1オペレーション・レジスタ 130 第2オペレーション・レジスタ 140 分岐目的レジスタ 200 アドレス・デコーダ 220 補足レジスタ 280 演算論理ユニット 300 分岐デコーダ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ブリジット・ロエテ ドイツ、ボブリンゲン 71032、ウォル ドバルグストリート 12 (72)発明者 ウィルヘルム・ハラー ドイツ、レムシャルデン 73630、レヘ ンストリート 38 (72)発明者 ハンス・ウェルナー・タスト ドイツ、ウェイル・イン・スコエンバッ ハ 71093、ベルグワイゼンストリート 4 (56)参考文献 特開 平2−255916(JP,A)

Claims (9)

    (57)【特許請求の範囲】
  1. 【請求項1】第1及び第2のプロセッサを有するデュア
    ル・プロセッサ・コンピュータ・システムにおいて、ル
    ープ内に命令を含むプログラムを処理する方法であっ
    て、 前記第1プロセッサが前記命令の最初の実行を処理し、
    前記第2のプロセッサが同時にループ終了条件を処理す
    るステップと、 分岐ターゲット・レジスタに前記ループ内の第1の命令
    のアドレスである分岐ターゲット・アドレスを記憶し、
    分岐アドレス・レジスタに分岐命令のアドレスを記憶す
    るステップと、 前記第1のプロセッサで前記命令の次の実行を処理し、
    前記分岐命令の実行を無効にすると同時にその代わりと
    して前記第1のプロセッサで分岐条件を評価し、もし該
    分岐条件が満たされていれば、実行される次の命令の有
    効アドレスと前記記憶されている分岐命令のアドレスと
    を比較することによってそのループの終了を検知するス
    テップと、 前記命令を再実行するために前記記憶された分岐ターゲ
    ット・アドレスを前記分岐ターゲット・レジスタから前
    記第2のプロセッサに渡すステップと、 分岐条件が満たされるまで前記命令を実行し、前記ルー
    プ外から次の命令をアドレスするステップと、 を含む方法。
  2. 【請求項2】前記ループ内の命令が数学的オペレーショ
    ンである、請求項1記載の方法。
  3. 【請求項3】前記第2のプロセッサが浮動小数点ユニッ
    トである、請求項1または2記載の方法。
  4. 【請求項4】前記分岐命令がBXLE(branch on inde
    x low or equal)命令である、請求項1、請求項2、ま
    たは請求項3記載の方法。
  5. 【請求項5】前記ループ内の命令の前記処理の間に、 分岐命令(BXLE)に対する指標値を計算する第1の
    ステップと、 計算された指標値を分岐条件値と比較する第2のステッ
    プと、 分岐条件値が計算された指標値に等しい場合に、成功分
    岐標識ラッチをセットする第3のステップと、 成功分岐標識ラッチがセットされる場合、ループ内の命
    令を再度実行し、それ以外の場合には実行されるループ
    外の次の命令にジャンプする第4のステップと、 を含む請求項4記載の方法。
  6. 【請求項6】前記第1のステップが指標レジスタから指
    標値の前の値を取り出し、前の値に分岐命令(BXL
    E)内に提供される値を加算するステップを含む、請求
    項5記載の方法。
  7. 【請求項7】主プロセッサ、従属コプロセッサ及び汎用
    目的レジスタ(250)を有するコンピュータ・システ
    ムであって、 分岐マイクロコード命令条件が満たされる時セットされ
    る成功分岐標識ラッチ(240)と、 分岐命令(BXLE)の分岐アドレス(D2)を記憶す
    る分岐目的アドレス・レジスタ(140)と、 分岐命令(BXLE)のアドレスを記憶する分岐アドレ
    ス・レジスタ(165)と、 分岐命令(BXLE)条件が満たされない場合に実行さ
    れる次の命令(NSI)のアドレスを生成する命令アド
    レス変更子レジスタ(107)と、 を含むコンピュータ・システム。
  8. 【請求項8】分岐命令(BXLE)のレジスタ番号(R
    1、R3)を記憶する補足レジスタ(220)を含む、
    請求項7記載のコンピュータ・システム。
  9. 【請求項9】分岐条件の計算を制御する第1及び第2の
    ラッチを含む、請求項7または8記載のコンピュータ・
    システム。
JP6065018A 1993-05-03 1994-04-01 プログラム処理方法及びコンピュータ・システム Expired - Lifetime JP2643087B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE93107110.4 1993-05-03
EP93107110A EP0623874A1 (en) 1993-05-03 1993-05-03 Method for improving the performance of processors executing instructions in a loop

Publications (2)

Publication Number Publication Date
JPH06332699A JPH06332699A (ja) 1994-12-02
JP2643087B2 true JP2643087B2 (ja) 1997-08-20

Family

ID=8212860

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6065018A Expired - Lifetime JP2643087B2 (ja) 1993-05-03 1994-04-01 プログラム処理方法及びコンピュータ・システム

Country Status (3)

Country Link
US (1) US5634047A (ja)
EP (1) EP0623874A1 (ja)
JP (1) JP2643087B2 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0728639A (ja) * 1993-07-13 1995-01-31 Nec Corp マイクロプロセッサ
US6085315A (en) * 1997-09-12 2000-07-04 Siemens Aktiengesellschaft Data processing device with loop pipeline
US6950929B2 (en) * 2001-05-24 2005-09-27 Samsung Electronics Co., Ltd. Loop instruction processing using loop buffer in a data processing device having a coprocessor
US7610476B1 (en) 2003-12-05 2009-10-27 Advanced Micro Devices, Inc. Multiple control sequences per row of microcode ROM
US7725694B2 (en) * 2004-12-21 2010-05-25 Denso Corporation Processor, microcomputer and method for controlling program of microcomputer
US20060190710A1 (en) * 2005-02-24 2006-08-24 Bohuslav Rychlik Suppressing update of a branch history register by loop-ending branches
US20080229074A1 (en) * 2006-06-19 2008-09-18 International Business Machines Corporation Design Structure for Localized Control Caching Resulting in Power Efficient Control Logic
US20070294519A1 (en) * 2006-06-19 2007-12-20 Miller Laura F Localized Control Caching Resulting In Power Efficient Control Logic
US8359462B1 (en) * 2007-11-21 2013-01-22 Marvell International Ltd. Method and apparatus for programmable coupling between CPU and co-processor
US11614941B2 (en) * 2018-03-30 2023-03-28 Qualcomm Incorporated System and method for decoupling operations to accelerate processing of loop structures

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4062058A (en) * 1976-02-13 1977-12-06 The United States Of America As Represented By The Secretary Of The Navy Next address subprocessor
US4509116A (en) * 1982-04-21 1985-04-02 Digital Equipment Corporation Special instruction processing unit for data processing system
JPS59146342A (ja) * 1983-02-09 1984-08-22 Nec Corp ル−プ制御方式
JPS6043751A (ja) * 1983-08-18 1985-03-08 Hitachi Ltd 情報処理装置
US4683547A (en) * 1984-10-25 1987-07-28 International Business Machines Corporation Special accumulate instruction for multiple floating point arithmetic units which use a putaway bus to enhance performance
US4858115A (en) * 1985-07-31 1989-08-15 Unisys Corporation Loop control mechanism for scientific processor
US5070475A (en) * 1985-11-14 1991-12-03 Data General Corporation Floating point unit interface
US4991080A (en) * 1986-03-13 1991-02-05 International Business Machines Corporation Pipeline processing apparatus for executing instructions in three streams, including branch stream pre-execution processor for pre-executing conditional branch instructions
EP0348030B1 (en) * 1988-06-23 1996-04-10 International Business Machines Corporation Computing sequence result availability
JPH04111127A (ja) * 1990-08-31 1992-04-13 Toshiba Corp 演算処理装置
EP0480095B1 (de) * 1990-10-12 1998-12-23 Siemens Aktiengesellschaft Vorrichtung zur Befehlsbereitstellung in einem Mikroprozessor
US5421020A (en) * 1993-01-08 1995-05-30 International Business Machines Corporation Counter register implementation for speculative execution of branch on count instructions

Also Published As

Publication number Publication date
EP0623874A1 (en) 1994-11-09
JPH06332699A (ja) 1994-12-02
US5634047A (en) 1997-05-27

Similar Documents

Publication Publication Date Title
US4740893A (en) Method for reducing the time for switching between programs
JP3093684B2 (ja) 命令ループを投機的に実行するプロセッサ及び方法
JP3547482B2 (ja) 情報処理装置
EP0207665B1 (en) Bidirectional branch prediction and optimization
US6076159A (en) Execution of a loop instructing in a loop pipeline after detection of a first occurrence of the loop instruction in an integer pipeline
JP3120152B2 (ja) コンピューターシステム
JP3397081B2 (ja) 複数の分岐予測方式のうちの選択された1つを使用して条件分岐命令を推測的に実行するためのプロセッサ、データ処理システム及び方法
KR100404257B1 (ko) 파이프라인 프로세서 아키텍처, 모든 인라인 및 분기인스트럭션을 정확한 구조적인 시퀀스로 프로세서파이프라인에 제공하는 시스템, 및 분기 처리 유닛
US6131158A (en) Data processing system capable of executing groups of instructions, including at least one arithmetic instruction, in parallel
US5313644A (en) System having status update controller for determining which one of parallel operation results of execution units is allowed to set conditions of shared processor status word
JP2643087B2 (ja) プログラム処理方法及びコンピュータ・システム
JP3578883B2 (ja) データ処理装置
JP3207124B2 (ja) カウント/リンク・レジスタ変更命令の投機実行をサポートする方法及び装置
JPH07120284B2 (ja) データ処理装置
EP0162929B1 (en) Method of controlling branching
JP3122420B2 (ja) プロセッサおよび条件コード・ビット計算方法
EP0181462B1 (en) Microcode control of a parallel architecture microprocessor
US6691223B1 (en) Processing full exceptions using partial exceptions
EP1050805B1 (en) Transfer of guard values in a computer system
US5745723A (en) Data processing system capable of execution of plural instructions in parallel
JPH09138748A (ja) 浮動小数点命令の早期完了方法および装置
JP3100705B2 (ja) マイクロプロセッサ内の命令準備のための装置
US7991816B2 (en) Inverting data on result bus to prepare for instruction in the next cycle for high frequency execution units
JP3547585B2 (ja) 条件実行命令を有するマイクロプロセッサ
EP0211487A1 (en) Conditional operations in computers