JPH08106386A - データ処理システム - Google Patents

データ処理システム

Info

Publication number
JPH08106386A
JPH08106386A JP7186897A JP18689795A JPH08106386A JP H08106386 A JPH08106386 A JP H08106386A JP 7186897 A JP7186897 A JP 7186897A JP 18689795 A JP18689795 A JP 18689795A JP H08106386 A JPH08106386 A JP H08106386A
Authority
JP
Japan
Prior art keywords
branch
instruction
instructions
register
destination address
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
JP7186897A
Other languages
English (en)
Inventor
Michael S Schlansker
マイケル・エス・シュランスカー
Vinod Kathail
ヴィノド・カテイル
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.)
HP Inc
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of JPH08106386A publication Critical patent/JPH08106386A/ja
Pending 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • G06F9/30163Decoding the operand specifier, e.g. specifier format with implied specifier, e.g. top of stack
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer

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)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】 【目的】 分岐命令に起因して生じる遅延を減らす。 【構成】 1ブロックの命令シーケンスに含まれる複数
の分岐命令について分岐先番地および、その分岐命令の
前記1ブロックの命令シーケンスの始めからの位置を分
岐メモリに記憶する。分岐処理装置は、前記複数の分岐
命令のそれぞれの分岐条件が満足されたか否かの判断を
行い、条件が満足された分岐のうち、前記1ブロックの
命令シーケンスに最も近い分岐を特定し、その分岐先番
地に分岐させる。1ブロックの命令シーケンスは、その
中に含まれる分岐が発生することなくブロックの終わり
まで通り抜けられる確率が高くなるようにリンクされて
いる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、コンピュータ・システ
ム、具体的には、分岐命令に起因する遅延を減らす、改
善されたコンピュータ・アーキテクチャおよび命令セッ
トに関する。
【0002】
【従来の技術】コンピュータの動作速度に多くの改善が
なされてきたが、より効果的なスループットで動作する
コンピュータが求め続けられている。計算速度の改善
は、コンピュータ・ハードウェアが動作する速度を増す
こと、および、何らかの形の並行処理を導入することに
よって得られてきた。並行処理から得られた改善の1つ
の種類は、コンピュータの命令に関連する待ち時間によ
る遅延を減らすものである。ここでの説明の目的のため
に、待ち時間とは、ある命令の始動とその命令が実際に
実行される時間との間の遅延と定義する。
【0003】指定されたレジスタに記憶されたデータを
参照する命令を考えてみる。この命令を実行するのに、
5マシン・サイクル要るとする。第1サイクルで命令が
メモリから取り出され、第2サイクルで命令が解読さ
れ、第3サイクルでレジスタの内容が取り出される。第
4サイクルで命令が実際に実行され、第5サイクルでデ
ータが適切な位置に書かれる。この命令の実行が完了す
るまで待つとするならば、5マシン・サイクルごとに1
つの命令しか実行されない。
【0004】パイプライン・プロセッサでは、第1の命
令の実際の実行が完了する前に第2の命令の処理を始め
ることによって、待ち時間の影響を減らしている。上述
の例では、5個の命令が、ある与えられた時間におい
て、いろいろの処理段階にある。プロセッサは、並行動
作する5つのパイプライン段階を持ち、各段階が、1つ
の命令を実行するのに必要な5つのタスクの1つを実行
する。最も古い命令に対するデータがメモリまたはレジ
スタに書かれている間に、最も古い命令の次の命令が実
行ハードウェアで実行される。同時に、次に実行される
命令に必要なレジスタの内容が、レジスタ・ハードウェ
アによって取り出される。
【0005】原則として、順序がわかっている一連の命
令を実行するとき、パイプライン・プロセッサは、1マ
シン・サイクルにつき1つの命令の実行を完了すること
ができる。不幸にして、コンピュータ・プログラムは、
命令の流れを中断させる分岐命令を含む。次の命令シー
ケンスを考えてみる。 if x=0 then goto newstart y=z goto somewhere newstart: y=k 第1の命令はxの内容に応じて分岐命令に翻訳される。
この命令がパイプラインの実行装置に到着するまでに、
さらにいくつかの命令がパイプラインに入ってきてい
る。しかし、コンピュータは、分岐命令を実際に実行す
るまで、分岐の次の命令が、"y=z"かまたは"y=k"である
かを判断する方法がない。したがって、分岐命令の後の
どの命令をパイプラインにロードするべきか決めること
ができない。従来技術によるシステムでは、分岐命令の
結果を予測し、予測された結果に対応する命令をロード
することによって分岐による遅延を減らすことを試み
た。しかし、100%正確に予測する方法がない。した
がって、まだ、遅延に遭遇する。
【0006】間違った順序の命令がロードされた場合
は、パイプラインを空にして再び満たすのに必要な時
間、コンピュータは機能を停止(stall)しなければな
らない。したがって、第1の分岐命令の後のy=zに対応
する命令がロードされ分岐が実行された場合、パイプラ
インを空にし、y=kに対応する命令を実行するためにロ
ードしなければならない。これにより、プログラムの実
行が、パイプラインの中の段階の数に依存する時間遅れ
る。
【0007】分岐命令は、メモリに関連する待ち時間遅
延も起こす。最新のコンピュータ・システムの多くは、
コンピュータの主記憶装置(メインメモリ)への有効ア
クセス時間を改善するために、キャッシュ・サブシステ
ムを利用している。キャッシュは、最も最近使用された
命令およびデータを記憶する、高速の連想記憶装置から
なる。プロセッサが特定のメモリ位置の内容を要求する
と、キャッシュ・プロセッサは、要求を横取り(インタ
セプト)して、要求された情報がキャッシュにあるかを
判断するためにキャッシュメモリを調べる。要求された
情報がキャッシュにある場合、その情報は最小の遅延時
間でプロセッサに返される。しかし、要求された情報が
メインメモリにある場合、キャッシュがその情報を取り
出す間、プロセッサは機能を停止する。メインメモリの
速度はキャッシュの速度よりかなり遅いので、そのよう
なキャッシュの"ミス"はかなりの遅延をもたらす。
【0008】分岐命令はしばしばキャッシュ・ミスをも
たらす。分岐により、コンピュータは、分岐命令から遠
いメモリ位置でしばしば動作を続ける。キャッシュは、
最も最近使用された情報、および、メインメモリ内のこ
の情報の近くにある情報を記憶する。したがって、分岐
命令が遠い位置に行き最近使われていない場合、次の命
令がキャッシュにある可能性は低い。
【0009】分岐命令を扱うときの従来技術のシステム
でのもう1つの問題は、これらのシステムが、第1の分
岐命令を処理するときに生成されるデータを、第2の分
岐命令に必要な処理を減らすために使うことができない
ことである。条件付き分岐命令は、連結(リンク)した
3つの命令からできていると見ることができる。第1の
命令は、分岐先番地(target address)、すなわち、分
岐がとられた場合に実行される次の命令のアドレスを計
算する。第2の命令は分岐の結果を計算する(その結果
によって分岐を実行するかが決められる)。第3の命令
が実際にコントロールを渡す。
【0010】プログラムでは、多くの分岐命令が同じ分
岐先番地を持つ場合が多い。したがって、原則として、
第1の命令の分岐先番地の計算の結果が残りの命令にも
使えるならば、かなりの処理時間が節約できる。従来技
術のコンピュータ・アーキテクチャは、これを達成する
ための有効な方法を提供していない。したがって、分岐
先番地が、分岐のたびに再計算される。同様に、比較計
算によっても、いくつかの分岐の結果が決まる場合があ
る。
【0011】最後に、従来技術のシステムは、1時に1
つの分岐命令に対応する計算を実行する手段を提供する
だけである。待ち時間の影響を減らす際の1つの重要な
戦略は、命令シーケンスの範囲内での命令の移動を必要
とする。たとえば、コンパイラが、ロード動作に待ち時
間遅延があることがわかれば、コンパイラは、その他の
命令が待ち時間の間に実行できるように、これらの命令
を命令シーケンス内で移動することができる。この戦略
によって、待ち時間遅延の影響を減らすことができる。
不幸なことに、分岐命令に必要な計算を実行することに
よってこれらの待ち時間遅延を埋めるコンパイラの能力
は、全ての分岐計算を完了する能力がないことによって
制約されている。たとえば、従来のシステムは、順序を
変えて分岐先番地が計算できるようにするために、分岐
先番地計算と比較動作とを切り離す有効な手段を提供し
ていない。従来技術のシステムは、せいぜい、1度に1
つの分岐命令を行うことができるだけで、その分岐命令
のための情報が入手不可能な場合、分岐情報を早めに計
算することができない。
【0012】米国特許出願08/058,858号に記載されてい
るコンピュータ・アーキテクチャおよび命令セットは、
上記の問題に関し、従来技術にくらべてかなりの改善を
提供している。上記出願に記載されたコンピュータ・シ
ステムは、分岐命令の実行を容易にするために、命令処
理装置に接続されたレジスタ・ファイルを使う。レジス
タ・ファイルは、多くのレジスタを持つ。各レジスタ
は、分岐命令を実行するときに必要な情報を記憶するた
めに使われる。各レジスタは、分岐命令の分岐先番地を
記憶するスペース、および、第1および第2の状態を持
つフラグを記憶するスペースを含む。第1の状態は、レ
ジスタを参照している分岐実行命令が実行されるとき
に、レジスタを参照している分岐命令が命令処理装置
に、分岐先番地で指定されている命令に分岐させること
を示す。第2の状態は、レジスタを参照している分岐実
行命令が命令処理装置によって実行されるとき、命令処
理装置は命令を順序通り実行し続けることを示す。コン
ピュータ・システムは、"分岐準備"命令を利用してレジ
スタを割り当て、このレジスタに分岐先番地をロードす
る。条件付き分岐命令は比較命令のたすけによって具体
化され、比較命令は、指定された条件が満たされたとき
に、この命令が参照しているレジスタにフラグを設定す
る。
【0013】レジスタの1つの中のフラグが、分岐がと
られることを示すように設定されているとき、先取り命
令(prefetch instruction)がキャッシュメモリに送ら
れる。先取りはフラグの最終値を待たない。先取り命令
は、分岐先番地を持っているキャッシュライン(cache
line)を、そのキャッシュラインがまだキャッシュに入
っていないならば、キャッシュにロードする。
【0014】分岐準備命令、分岐実行命令、比較命令に
よって参照されるレジスタは、ポインタ・レジスタによ
って指定される。ポインタ・レジスタの内容は、別の命
令の助けによって設定することができる。代替方法とし
て、ポインタ・レジスタの内容は、レジスタ・ファイル
に記憶されているデータを使用して、分岐実行命令によ
って設定することもできる。
【0015】このコンピュータ・アーキテクチャは、分
岐による遅延をかなり減らすが、スーパースカラまたは
VLIWコンピュータのように、1マシン・サイクルに
複数の命令を出すコンピュータにとっては最適レベルに
達していない。そのようなコンピュータでは、各マシン
・サイクルに2つ以上の命令が実行される。したがっ
て、原則的に、複数の分岐が同時に処理できる。
【0016】1マシン・サイクルに1つの命令だけを実
行するアーキテクチャにおいても、分岐結果の判断を、
複数のレジスタ上でとられるアクションを実行するのに
使うことができる。上述のように、上記のシステムは、
メモリ待ち時間遅延の影響を減らすために、先取り命令
を使うことが望ましい。他のレジスタに既に割り当てら
れた多くの分岐が代替経路上にあり、コンピュータが、
特定の分岐がとられることを決定する場合を想定してみ
よう。これらの他のレジスタで示されたアドレスに対す
る先取り命令も、レジスタ制御ハードウェアによって処
理される。しかし、これらのアドレスは参照されること
はないので、先取り操作を続けることは、コンピュータ
資源の無駄である。実際、対応するデータをキャッシュ
に移動することは、キャッシュからもっと有用なデータ
を置き換えることになるので、キャッシュの性能を実際
に下げることになりかねない。
【0017】一般に、レジスタ制御ハードウェアは、キ
ャッシュに供給する先取り命令の待ち行列を持つ。も
し、ある特定の分岐がとられていないということがわか
っている場合、原則として、まだ出されていない対応す
る先取り命令が待ち行列から外され、それにより、キャ
ッシュを通してもっとアクセスされそうなデータの優先
順位を上げることができる。不幸にして、制御ハードウ
ェアは、分岐結果によってどのレジスタおよび対応する
先取り命令を取り止めるかを判断するために、1レジス
タあたり1エントリを持っているリンクされたリストを
通して追跡しなければならない。このリンクされたリス
トを調べるために要する時間のために、この手法は擁護
し得ない。
【0018】
【発明が解決しようとする課題】本発明の目的は、分岐
命令を実行するための改善されたコンピュータ・アーキ
テクチャおよび命令セットを提供することである。さら
に本発明の目的は、1つのソースプログラムからの複数
の分岐を1マシン・サイクル中にいっそう効率よく実行
するコンピュータ・アーキテクチャを提供することであ
る。さらに本発明の目的は、キャッシュに到達する余計
な先取り命令の数を減らすコンピュータ・アーキテクチ
ャを提供することである。
【0019】
【課題を解決するための手段】本発明は、分岐命令によ
って起こる遅延を減らす、改善されたコンピュータ・ア
ーキテクチャおよび命令セットである。本発明によるデ
ータ処理システムは、プログラムの命令を順番に実行す
る命令処理装置を含む。命令には、分岐命令が含まれ、
それにより、命令処理装置は、分岐命令に関連した条件
が満たされた場合に、プログラム・シーケンスの次の命
令のかわりに、プログラムの次の命令として、分岐命令
に関連した分岐先番地で指定された命令を実行する。本
発明によるデータ処理システムは、コード・シーケンス
に含まれている複数の分岐命令を指定する情報を記憶す
る分岐メモリを持つ分岐処理装置(branch processor)
を含む。分岐メモリは、各分岐命令の分岐先番地を指定
する情報、および分岐命令の、プログラム・シーケンス
の始めからの位置を記憶する。分岐処理装置は、分岐メ
モリに記憶されている種々の分岐に関連する条件が満た
されるかどうかを判断する種々の比較の結果を受け取
る。分岐処理装置は、条件が満たされた、プログラム・
シーケンスの始めに最も近い分岐のアイデンティティ
(identity)を持つことが望ましい。この分岐は、イネ
ーブルされた最高分岐(highest branch enabled)と呼
ばれる。実際の分岐動作の実行は、分岐メモリに記憶さ
れている1つまたは複数の分岐を指定する分岐実行命令
を受け取ることに反応して行われる。分岐実行命令で指
定された分岐の1つがイネーブルされた最高分岐に一致
する場合、データ処理システムによって実行される次の
命令は、イネーブルされた最高分岐の分岐先番地であ
る。そうでない場合、次の命令は、分岐実行命令に続く
命令である。本発明の実施例では、分岐処理装置は、中
央処理装置に通常データを供給するキャッシュメモリに
先取り命令も出す。この実施例では、分岐メモリは、記
憶されている種々の分岐に対応する分岐先番地に対する
先取り命令が送られる順序を指定する情報も記憶する。
先取り命令が送られる前に、分岐処理装置が、イネーブ
ルされた最高分岐の方が、ある特定の分岐先番地に対応
する分岐よりもプログラム・シーケンスの始めに近いと
判断した場合、分岐処理装置は、その分岐先番地に対応
する先取り命令がキャッシュメモリに送られないように
する。同様に、対応する先取り命令が送られる前に、あ
る特定の分岐命令に対応する条件が満たされないと判断
された場合、分岐処理装置は、先取り命令が出されない
ようにする。
【0020】
【実施例】本発明の利点は、複数の分岐をグループとし
て扱い、従来の分岐に内在する動作を別々に実行できる
サブ動作に分離することによって、達成される。本発明
は、スーパーブロックと呼ばれる1ブロックのコードに
関連する複数の分岐をグループとして扱う。スーパーブ
ロックは、分岐命令によってリンクされている基本ブロ
ックのシーケンスで、第1の基本ブロックの始めが入口
になる。この説明の目的のために、基本ブロックとは、
ブロックの始めで入り、終わりに1つの分岐を持つ1ブ
ロックのコードである。スーパーブロックの1つの例を
図1の10に示す。スーパーブロック10は、それぞれ
分岐15ないし18によってリンクされている基本ブロ
ック11ないし14を含む。本発明の実施例では、基本
ブロックをリンクする分岐は、最も起こりそうであると
期待されるものが選ばれる。あまり起こりそうでない分
岐は、スーパーブロックの外のコードになる。分岐15
ないし18の起こりそうでない結果は、それぞれ、命令
1ないしI4である。これらの結果のどれもとられない
場合、スーパーブロックはコントロールを命令I5に渡
す。これは、以下の説明で、通り抜け(fall through:
フォール・スルー)命令と呼ぶ。
【0021】以下の議論を単純にするために、先ず、1
つの条件付き分岐命令を考える。そのような命令によ
り、コンピュータが実行する次の命令は、この分岐命令
の次の命令か、または、分岐命令で指定されたターゲッ
ト・アドレスすなわち分岐先番地にある命令である。一
般的には、次の命令の選択は、分岐命令で指定された2
個の引き数を比較することによって決められる。指定さ
れたレジスタの内容が0の場合番地Aに分岐せよという
形の分岐命令は、そのような条件付き分岐命令の例であ
る。レジスタの内容が0でない場合、次の命令は、プロ
グラム・シーケンスの中の、分岐命令に続く命令であ
る。
【0022】命令は、従来のコンピュータ・システムで
順番に実行される3個のサブ動作を持つものと見ること
ができる。第1のサブ動作は分岐先番地を計算する。分
岐先番地はしばしばレジスタに関連して指定され、した
がって、実アドレスを生成するために計算が必要になる
場合がある。分岐先番地を、指定されたレジスタの内容
にオフセットを加えた内容とする例は、当業者にはお馴
染みであろう。
【0023】第2のサブ動作は、分岐をとるべきかどう
かを判断するために上述した比較動作を必要とするもの
である。分岐をとる場合、比較動作は、第3の動作で使
われるビットを設定することができる。
【0024】第3のサブ動作は、実際の分岐動作、すな
わち、比較動作で指定された条件が満たされた場合に、
プログラム・カウンタを分岐先番地に変える動作であ
る。最初の2つの動作は、第3の動作のための準備動作
と見ることができる。
【0025】従来のコンピュータ・システムでは、コン
ピュータが分岐命令に遭遇したとき、3つの動作は順番
に実行される。この固定的な実行は、コンピュータ資源
の有効利用を図るためにコンパイラがサブ動作を動かす
ことを妨げる。従来技術では、比較動作が実行されたと
きに分岐先番地が計算され、比較の直後に分岐が実行さ
れる。したがって、サブ動作がこのような固定された順
序で実行されるので、条件付き分岐命令のために必要な
情報を早めに計算することができない。さらに、分岐が
とられた場合に次の命令がキャッシュにない場合があ
り、したがって、分岐先番地にある命令がキャッシュに
ロードされる間、プロセッサは機能を停止せざるをえな
い場合が起こる。
【0026】これと対照的に、分岐命令をサブ動作要素
に分離することにより、分岐先番地の計算は、比較のた
めの引き数を必要としないので、直ちに計算することが
できる。したがって、この仕事は、他の命令の待ち時間
を埋めるのに使うこともできる。同様に、比較は、引き
数がわかり次第直ちに行うことができ、この仕事も、他
の命令の待ち時間を埋めるために動かすことができる。
最後に、分岐がとられるときに分岐先番地にある命令が
確実にキャッシュにあるようにするために、先取り命令
をキャッシュメモリに送ることができる。この先取り命
令は、分岐先番地が計算されたときに出してもよい。従
来技術のシステムでは、分岐が分岐先番地の計算の直後
に実行されるため、キャッシュに対して先取り動作を実
行しても役に立たず、ごくわずかな予告しか得られな
い。
【0027】上記の説明は、1つの分岐命令に関するも
のであった。本発明では、スーパーブロックの中の分岐
命令はグループとして扱われる。図2に、本発明による
分岐処理装置100のブロック図を示す。スーパーブロ
ックの各分岐を指定するデータはレジスタ・ファイル1
02に記憶される。データは、分岐に関連する分岐先番
地、および、スーパーブロックの中の分岐の位置を含
む。以下の説明において、分岐は、スーパーブロックの
始めに最も近い分岐から番号をつける。スーパーブロッ
クの始めに最も近い分岐は、最高分岐と呼ぶ。レジスタ
・ファイル102に記憶することができるその他の任意
の情報については以下に述べる。
【0028】分岐データは、コンパイラによって生成さ
れ制御装置104によって処理される分岐準備(prepar
e to branch: PT)命令によってレジスタ・ファイル1
02にロードされる。PT命令は、スーパーブロック全
体を指定してもよいし、スーパーブロックの中の1つの
分岐だけを指定してもよい。後者の場合、分岐処理装置
100を初期化するために、いくつかの別々のPT命令
が必要になる。PT命令が完了すると、レジスタ・ファ
イル102に、スーパーブロックの中の各分岐に対応し
てレジスタが1つできる。図3に、本発明で使用するの
に適したレジスタ・ファイルのブロック図を示す。各レ
ジスタ160は、対応する分岐命令の分岐先番地16
1、および、分岐命令の、スーパーブロックの始めから
の位置情報を持つ。位置情報は、レジスタのフィールド
162に記憶してもよいし、レジスタ・ファイル自身の
中のレジスタの位置で間接的に示してもよい。
【0029】スーパーブロックに対応する比較命令は、
スーパーブロックの分岐位置を指定することによりレジ
スタ・ファイルの個々のレジスタを参照する。種々の比
較命令の結果が受け取られると、それらは処理装置11
0で処理される。処理装置110は、対応する比較命令
で指定された条件が満たされた、スーパーブロックの始
めに最も近い分岐のアイデンティティを保持しているレ
ジスタ112を更新する。この分岐は、イネーブルされ
た最高分岐と呼ばれる。全ての比較が完了した後、レジ
スタ112は、スーパーブロックから外される分岐のア
イデンティティを持つ。
【0030】図2に示すように、処理装置110は複数
の入力を受け取ることに留意されたい。スーパースカラ
およびVLIWコンピュータ・アーキテクチャでは、各
マシン・サイクルで複数の比較命令を実行することがで
きる。したがって、2つ以上の比較動作の結果が、1マ
シン・サイクルで使用可能になる。処理装置110は、
1マシン・サイクルで受け取った全ての入力をレジスタ
112の内容と較べ、対応する比較条件が満たされた最
高分岐のアイデンティティをレジスタ112に返す。全
ての比較命令が実行された後、レジスタ112は、スー
パーブロックから外される分岐の分岐先番地を持つ、レ
ジスタ・ファイル102の中のレジスタを指定する。
【0031】PT命令および比較命令は、実際の分岐命
令(EB)、すなわち、分岐がとられたときにプログラム
・カウンタ130が分岐先番地を指すようにさせる命令
の準備命令と見ることができる。本発明の実施例では、
EB命令は、レジスタ・ファイル102の中の可能なレ
ジスタの各々に対して1ビットを持つマスクを含む。ビ
ットが"1"に設定された場合、分岐はテストのためにイ
ネーブルされる。EB命令は、コンピュータに、イネー
ブルされた最高分岐の分岐先番地にジャンプさせる(た
だし、その分岐がEB命令によってマスクされていない
場合)。EB命令が受け取られたときに、イネーブルさ
れた最高分岐がEB命令によってマスクされている場合
は、分岐は通り抜ける。
【0032】1つの命令の中で複数の分岐をテストでき
る能力は、数多くの状況において利点を提供する。分岐
のどれもがとられる確率が非常に小さいことがわかって
いる場合が多い。すなわち、図1に示したI5は、殆ど
の場合、スーパーブロックからの出口になる。たとえ
ば、スーパーブロックの中の分岐がエラー条件に関連す
る場合、この状況が予想できる。図1に示したように4
つの別々のEB命令を実行する代わりに、4つの分岐が
すべてイネーブルされた1つのEB命令を、スーパーブ
ロックの終わりで実行することができる。レジスタ11
2が、レジスタ・ファイル102の中の、イネーブルさ
れた分岐の1つに対応するレジスタを指す場合、プログ
ラムは、レジスタに示された分岐先番地にコントロール
を渡すことができる。このようにして、かなりの数のE
B命令をなくすことができ、エラーがない場合のプログ
ラム実行の速度を改善できる。
【0033】上述の方法は、元の位置で実行されたとき
にとられたであろう1つあるいは複数の分岐がたとえ遅
延させられた場合でも、スーパーブロックが完了するま
で動作できることを仮定している。多くの場合、コンパ
イラまたはプログラマは、この条件が満たされることを
確かめることができる。
【0034】分岐を結合する上記の方法は、すべての分
岐がスーパーブロックの最後で1つの分岐に結合される
ことを仮定している。この方法は、分岐が1つの分岐に
まとめられていないときに早期の分岐がとられた場合で
も、分岐点までコードを実行することが効率的で安全な
場合に、効率的である。原則として、複数の分岐をグル
ープにまとめることができる。たとえば、分岐15およ
び16を分岐16の位置で1つの分岐に、残りの分岐を
スーパーブロックの最後で1つの分岐に、まとめること
ができる。
【0035】再び図2を参照する。最新のコンピュータ
・システムでは、プロセッサ135に供給される実際の
データおよび命令は、プロセッサ135に供給される前
に、キャッシュメモリ133に記憶される。プロセッサ
135がデータを要求したときにそのデータがキャッシ
ュ133にない場合、キャッシュ133がメインメモリ
134からデータを取り出すまで、プロセッサ135は
機能停止する。この状況はキャッシュ・ミスと呼ばれ
る。キャッシュ・ミスはコンピュータ・システムの効率
を落とすので避けなければならない。本発明は、キャッ
シュ・ミスの数を減らす手段を提供する。
【0036】本発明の実施例では、制御装置104は、
キャッシュ133がメインメモリ134から情報を前も
って要求できるように、先取りコマンドをキャッシュ1
33に出し、キャッシュ・ミスによってプロセッサが機
能停止するサイクル数を減らす。先取り命令は、PT命
令の中の情報によって指定された順序で出される。本発
明の実施例では、この情報も、レジスタ・ファイル10
2の対応するレジスタに記憶される。この情報は、プロ
グラマまたはコンパイラによって生成することができ
る。
【0037】キャッシュ133は、有限数の先取り命令
(典型的には通常1マシン・サイクルにつき1つ)だけ
を受け取ることができる。先取り命令は、PT命令で指
定された順序で先取り待ち行列140に置くことができ
る。順序付け情報も、レジスタ・ファイル102の中
の、分岐命令に対応するレジスタのフィールド165に
記憶させることができる。代替方法として、先取り命令
は、待ち行列に置かずに、直接キャッシュ133に出し
てもよい。この場合、フィールド165の中の順序付け
情報は、制御装置104が次にどの先取り命令を出すか
を決める際に参照される。
【0038】先取り命令が出されるのを待つ間に、指定
されたデータが必要なくなるということが明らかになる
場合がある。この場合、制御装置104は、先取り命令
を待ち行列から外すか、または、先取り命令がキャッシ
ュ133に出されないようにするための何らかの印をつ
ける。先取り命令が、スーパーブロックの分岐の分岐先
番地に記憶されている情報を参照する場合を考えてみよ
う。分岐に関連する条件が満たされないとわかっている
場合、分岐先番地にある情報は、プロセッサによって要
求されない。したがって、対応する比較命令が、その命
令で指定された条件が満たされないことを示す場合、制
御装置104は、分岐先番地に対する先取り命令を待ち
行列から外す。同様に、レジスタ112が、ある特定の
先取り命令に対応する分岐の上にある分岐を指す場合を
考えてみよう。この場合、レジスタ112で指定された
分岐、またはその上にある分岐がとられるので、先取り
命令に対応する分岐は、たとえ関連する条件が満たされ
ている場合でも、決して実行されないということがわか
っている。したがって、制御装置104は、レジスタ1
12の内容も監視し、イネーブルされた最高分岐の下の
分岐の分岐先番地を参照する先取り命令を、待ち行列1
40から外す。
【0039】また、対応する分岐がとられることが確実
にわかっている場合に、先取り命令を実行することを望
む場合もある。たとえば、先取り命令自身がシステム遅
延を起こすかもしれない場合がある。そのような場合、
この分岐がイネーブルされた最高分岐であり、この分岐
命令の上の他の全ての分岐命令に対する比較命令が評価
されたということがわかっているときに、制御装置10
4は先取り命令を出すだけである。この場合、制御装置
104は、比較命令がまだ実行されていない分岐命令を
追跡しなければならない。本発明の実施例では、どの比
較命令がまだ完了していないかを追跡するために、図3
に示すフィールド164のようなフィールドが、レジス
タ・ファイル102の各レジスタの中にある。
【0040】本発明の上述した実施例では、各分岐に関
連する情報を記憶するためにレジスタ・ファイルを、と
られる分岐のアイデンティティを記憶するためにレジス
タ112を利用する。当業者には明らかなように、この
情報を記憶するために他の記憶手段を使用してもよい。
たとえば、情報のすべてまたは一部を従来のメモリに記
憶させてもよい。
【0041】また、レジスタ112の状態を維持するた
めに使われる更新計算の結果が、これらの結果が実際に
レジスタ112に現れる前に、プロセッサ110内で使
用可能にすることができることに留意されたい。この場
合、同じマシン・サイクルの中で分岐動作の直前に比較
動作を実行するシステムを具体化することができる。
【0042】本発明には、例として次のような実施態様
が含まれる。 (1)順序づけられたシーケンスの複数の命令を含む命
令シーケンスを有するプログラムを実行し、前記順序づ
けられたシーケンスは始まりおよび複数の分岐命令を含
み、前記分岐命令のそれぞれが、指定された条件が満た
されたときに、分岐先番地で指定された命令を実行する
データ処理システムであって、複数の前記分岐命令を指
定し、各分岐命令に対応する分岐先番地[161]、およ
び、前記分岐命令の前記順序づけられたシーケンスの前
記始まりからの相対的な位置を含む情報を記憶する記憶
手段[102]と、前記分岐命令の1つに関連する前記条件
が満たされたことを示す情報を受け取る比較結果手段[1
10]と、前記記憶手段[102]に記憶されている情報を持つ
前記分岐命令の1つを識別する分岐実行命令を受け取る
手段[104]と、前記識別された分岐命令に関連する前記
条件が満たされ、前記識別された分岐命令よりも前記順
序づけられたシーケンスの始まりに近い分岐命令に関連
する前記条件が満たされなかった場合に、前記分岐実行
命令を受け取って反応し、前記データ処理システムに、
前記識別された分岐命令に対応する分岐先番地[161]で
指定された前記命令を実行させる制御手段[104]と、を
備えた分岐処理装置[100]を有する、データ処理システ
ム。
【0043】(2)前記分岐処理装置[100]が、分岐先
番地[161]および前記分岐命令の1つに対応する位置を
指定する情報を含む分岐準備命令を受け取り、前記情報
を前記記憶手段に記憶させる手段[104]をさらに有す
る、上記(1)に記載のシステム。 (3)前記比較結果手段が、前記条件が満たされ、前記
順序づけられたシーケンスの始まりに最も近い前記分岐
命令のアイデンティティを記憶するレジスタ[112]を有
する、上記(1)に記載のシステム。 (4)前記分岐実行命令が複数の分岐命令を指定する情
報を含み、前記制御手段[104]が、前記分岐実行命令の
中で指定された前記分岐命令のどれかが前記レジスタ[1
12]に記憶されているアイデンティティを持つ前記分岐
命令であるかを判断し、前記データ処理システムに、前
記レジスタ[112]に記憶されているアイデンティティを
持つ前記分岐命令に対応する前記分岐先番地[161]によ
り識別された前記命令を実行させる手段を含む、上記
(3)に記載のシステム。
【0044】(5)通常メインメモリ[134]に記憶され
るデータを記憶し、前記データをプロセッサ装置[135]
に直接提供するキャッシュメモリ手段[133]をさらに有
し、前記キャッシュメモリ手段[133]が、前記メインメ
モリ[134]のデータアドレスを含む先取り命令を受け取
る手段、および、前記先取り命令を受け取って反応し、
前記データのコピーが前記キャッシュメモリ[133]にま
だない場合に前記データアドレスに記憶されているデー
タを前記キャッシュメモリ[133]にコピーさせる手段を
有し、前記分岐処理装置[100]の中の前記制御手段[104]
が、前記分岐先番地[161]の1つに一致するデータアド
レスを持つ前記先取り命令の1つを前記キャッシュメモ
リ[133]に送る手段[140]をさらに有する、上記(3)に
記載のシステム。 (6)前記分岐処理装置[100]の前記記憶手段[102]が、
前記先取り命令が前記キャッシュメモリ[133]に送られ
る最初の順序[165]を指定する情報を記憶する手段をさ
らに有する、上記(5)に記載のシステム。 (7)前記制御手段[104]が、前記レジスタ[122]によっ
て識別された前記分岐命令よりも前記命令シーケンスの
始めから遠くにある対応する分岐命令を持ついかなる分
岐先番地[161]に対して、前記先取り命令の開始または
終了を送らないようにする手段をさらに有する、上記
(6)に記載のシステム。 (8)前記比較結果手段[110]が、前記分岐命令の1つ
に関連する前記条件が満たされなかったことを指定する
情報を受け取る手段をさらに有し、前記制御手段[104]
が、条件が満たされなかった前記分岐命令の前記分岐先
番地[161]に等しいデータアドレスを持つ前記先取り命
令の開始または終了を前記キャッシュメモリ[133]に送
らないようにする手段をさらに有する、上記(6)に記
載のシステム。
【0045】
【発明の効果】本発明による改善されたコンピュータ・
アーキテクチャおよび命令セットを提供することによ
り、分岐命令に起因して生じる待ち時間遅延を減らすこ
とができる。
【図面の簡単な説明】
【図1】スーパーブロックの具体例を示す流れ図。
【図2】本発明による分岐処理装置、および、典型的な
データ処理システムの他の要素を示すブロック図。
【図3】図2に示したレジスタ・ファイルを詳細に示す
ブロック図。
【符号の説明】
10 スーパーブロックの1つの例 11、12、13、14 基本ブロック 15、16、17、18 分岐 100 分岐処理装置 102 レジスタ・ファイル 104 制御装置 110 比較結果処理装置 112 イネーブルされた最高分岐レジスタ 130 プログラム・カウンタ 133 キャッシュメモリ 134 メインメモリ 135 プロセッサ 140 先取り待ち行列 160 レジスタ 161 分岐先番地 162 分岐の順番 164 比較完了 165 先取り優先順位

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】 順序づけられたシーケンスの複数の命令
    を含む命令シーケンスを有するプログラムを実行し、前
    記順序づけられたシーケンスは始まりおよび複数の分岐
    命令を含み、前記分岐命令のそれぞれが、指定された条
    件が満たされたときに、分岐先番地で指定された命令を
    実行するデータ処理システムであって、 複数の前記分岐命令を指定し、各分岐命令に対応する分
    岐先番地、および、前記分岐命令の前記順序づけられた
    シーケンスの前記始まりからの相対的な位置を含む情報
    を記憶する記憶手段と、 前記分岐命令の1つに関連する前記条件が満たされたこ
    とを示す情報を受け取る比較結果手段と、 前記記憶手段に記憶されている情報を持つ前記分岐命令
    の1つを識別する分岐実行命令を受け取る手段と、 前記識別された分岐命令に関連する前記条件が満たさ
    れ、前記識別された分岐命令よりも前記順序づけられた
    シーケンスの始まりに近い分岐命令に関連する前記条件
    が満たされなかった場合に、前記分岐実行命令を受け取
    って反応し、前記データ処理システムに、前記識別され
    た分岐命令に対応する分岐先番地で指定された前記命令
    を実行させる制御手段と、 を備えた分岐処理装置を有する、データ処理システム。
JP7186897A 1994-09-28 1995-07-24 データ処理システム Pending JPH08106386A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US313,980 1994-09-28
US08/313,980 US5664135A (en) 1994-09-28 1994-09-28 Apparatus and method for reducing delays due to branches

Publications (1)

Publication Number Publication Date
JPH08106386A true JPH08106386A (ja) 1996-04-23

Family

ID=23218024

Family Applications (1)

Application Number Title Priority Date Filing Date
JP7186897A Pending JPH08106386A (ja) 1994-09-28 1995-07-24 データ処理システム

Country Status (4)

Country Link
US (1) US5664135A (ja)
JP (1) JPH08106386A (ja)
DE (1) DE19527031C2 (ja)
GB (1) GB2293671A (ja)

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69433124T2 (de) * 1993-11-05 2004-05-27 Intergraph Corp., Huntsville Befehlsspeicher mit assoziativem Kreuzschienenschalter
US5802346A (en) * 1995-06-02 1998-09-01 International Business Machines Corporation Method and system for minimizing the delay in executing branch-on-register instructions
US5774737A (en) * 1995-10-13 1998-06-30 Matsushita Electric Industrial Co., Ltd. Variable word length very long instruction word instruction processor with word length register or instruction number register
JP3203180B2 (ja) * 1996-03-27 2001-08-27 三菱電機株式会社 幾何学演算装置
GB2318959B (en) * 1996-03-27 1998-10-07 Mitsubishi Electric Corp Geometrical operation apparatus
JPH09319569A (ja) * 1996-05-31 1997-12-12 Mitsubishi Electric Corp マイクロコンピュータ
US5740419A (en) * 1996-07-22 1998-04-14 International Business Machines Corporation Processor and method for speculatively executing an instruction loop
JP3745039B2 (ja) * 1996-08-01 2006-02-15 株式会社ルネサステクノロジ 遅延命令を有するマイクロプロセッサ
KR100240591B1 (ko) * 1996-11-06 2000-03-02 김영환 분기명령어의 효율적인 처리를 위한 브랜치 타겟 버퍼 및 그를 이용한 분기 예측방법
US5920716A (en) * 1996-11-26 1999-07-06 Hewlett-Packard Company Compiling a predicated code with direct analysis of the predicated code
JP3535354B2 (ja) * 1997-08-27 2004-06-07 株式会社東芝 ストール検出表示装置及び方法
JPH1185515A (ja) * 1997-09-10 1999-03-30 Ricoh Co Ltd マイクロプロセッサ
US5948095A (en) * 1997-12-31 1999-09-07 Intel Corporation Method and apparatus for prefetching data in a computer system
US5881260A (en) * 1998-02-09 1999-03-09 Hewlett-Packard Company Method and apparatus for sequencing and decoding variable length instructions with an instruction boundary marker within each instruction
US6253306B1 (en) 1998-07-29 2001-06-26 Advanced Micro Devices, Inc. Prefetch instruction mechanism for processor
JP3741870B2 (ja) * 1998-08-07 2006-02-01 富士通株式会社 命令及びデータの先読み方法、マイクロコントローラ、疑似命令検出回路
US6243805B1 (en) * 1998-08-11 2001-06-05 Advanced Micro Devices, Inc. Programming paradigm and microprocessor architecture for exact branch targeting
US6430682B1 (en) * 1998-09-11 2002-08-06 Agere Systems Guardian Corp. Reliable branch predictions for real-time applications
US6289442B1 (en) 1998-10-05 2001-09-11 Advanced Micro Devices, Inc. Circuit and method for tagging and invalidating speculatively executed instructions
US6175897B1 (en) * 1998-12-28 2001-01-16 Bull Hn Information Systems Inc. Synchronization of branch cache searches and allocation/modification/deletion of branch cache
JP3867427B2 (ja) * 1999-01-11 2007-01-10 ソニー株式会社 プロセッサ装置および集積回路
US6401144B1 (en) * 1999-02-26 2002-06-04 Intel Corporation Method and apparatus for managing data transfers between peripheral devices by encoding a start code in a line of data to initiate the data transfers
US6304962B1 (en) 1999-06-02 2001-10-16 International Business Machines Corporation Method and apparatus for prefetching superblocks in a computer processing system
US6289444B1 (en) 1999-06-02 2001-09-11 International Business Machines Corporation Method and apparatus for subroutine call-return prediction
DE19928260A1 (de) * 1999-06-21 2000-08-31 Siemens Ag Schaltungsanordnung zur Steuerung von Programmverzweigungen in einem Prozessor
US6523110B1 (en) * 1999-07-23 2003-02-18 International Business Machines Corporation Decoupled fetch-execute engine with static branch prediction support
US6446197B1 (en) * 1999-10-01 2002-09-03 Hitachi, Ltd. Two modes for executing branch instructions of different lengths and use of branch control instruction and register set loaded with target instructions
US6449712B1 (en) * 1999-10-01 2002-09-10 Hitachi, Ltd. Emulating execution of smaller fixed-length branch/delay slot instructions with a sequence of larger fixed-length instructions
US6820193B1 (en) * 1999-12-17 2004-11-16 Koninklijke Philips Electronics N.V. Branch instructions with decoupled condition and address
WO2001065362A1 (en) * 2000-02-28 2001-09-07 Koninklijke Philips Electronics N.V. Data processor with multi-command instruction words
US6874171B2 (en) * 2003-05-22 2005-04-05 Deanna Erves Overspray shield for toilet
JP2009163624A (ja) * 2008-01-09 2009-07-23 Nec Electronics Corp プロセッサ装置及び条件分岐処理方法
JP2011065565A (ja) * 2009-09-18 2011-03-31 Toshiba Corp キャッシュシステム及びマルチプロセッサシステム
GB2551574B (en) 2016-06-24 2019-11-27 Advanced Risc Mach Ltd An apparatus and method for generating and processing a trace stream indicative of instruction execution by processing circuitry
CN112905237A (zh) * 2019-12-04 2021-06-04 北京百度网讯科技有限公司 指令预取方法、装置、设备和介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3570006A (en) * 1968-01-02 1971-03-09 Honeywell Inc Multiple branch technique
US3577189A (en) * 1969-01-15 1971-05-04 Ibm Apparatus and method in a digital computer for allowing improved program branching with branch anticipation reduction of the number of branches, and reduction of branch delays
JPS6051948A (ja) * 1983-08-31 1985-03-23 Hitachi Ltd 情報処理装置
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
US5317703A (en) * 1990-06-29 1994-05-31 Hitachi, Ltd. Information processing apparatus using an advanced pipeline control method
US5265213A (en) * 1990-12-10 1993-11-23 Intel Corporation Pipeline system for executing predicted branch target instruction in a cycle concurrently with the execution of branch instruction

Also Published As

Publication number Publication date
GB2293671A (en) 1996-04-03
GB9517268D0 (en) 1995-10-25
US5664135A (en) 1997-09-02
DE19527031C2 (de) 1998-12-24
DE19527031A1 (de) 1996-04-04

Similar Documents

Publication Publication Date Title
JPH08106386A (ja) データ処理システム
US5615386A (en) Computer architecture for reducing delays due to branch instructions
JP3095802B2 (ja) 性能向上命令キャッシュを備えるデータ処理システム
EP1071010B1 (en) Decoupled instruction fetch-execute with static branch prediction support
US5649138A (en) Time dependent rerouting of instructions in plurality of reservation stations of a superscalar microprocessor
JP3014773B2 (ja) プロセサアーキテクチャ
US7734897B2 (en) Allocation of memory access operations to memory access capable pipelines in a superscalar data processing apparatus and method having a plurality of execution threads
JPS62221036A (ja) 計算装置
US5297281A (en) Multiple sequence processor system
JPH0334024A (ja) 分岐予測の方法とそのための装置
US20080005544A1 (en) Method and apparatus for partitioned pipelined execution of multiple execution threads
US7028167B2 (en) Core parallel execution with different optimization characteristics to decrease dynamic execution path
US7454596B2 (en) Method and apparatus for partitioned pipelined fetching of multiple execution threads
US6910104B2 (en) Icache-based value prediction mechanism
US6516462B1 (en) Cache miss saving for speculation load operation
US7490210B2 (en) System and method for processor with predictive memory retrieval assist
US5943494A (en) Method and system for processing multiple branch instructions that write to count and link registers
JP2526017B2 (ja) ランタイム遅延削減方法及びデ―タ処理システム
JP3779012B2 (ja) 分岐による中断のないパイプライン化されたマイクロプロセッサ及びその動作方法
US20100100709A1 (en) Instruction control apparatus and instruction control method
US6163821A (en) Method and apparatus for balancing load vs. store access to a primary data cache
US20080184194A1 (en) Method and System for Enhancing Computer Processing Performance
WO2006006613A1 (en) Methods and apparatus for updating of a branch history table
US11782871B2 (en) Method and apparatus for desynchronizing execution in a vector processor
KR100262234B1 (ko) 인텔리전트 데이타 캐쉬 프리펫치 방법과 이를 이용한 컴퓨터