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

データ処理システム

Info

Publication number
JPH06332697A
JPH06332697A JP6117643A JP11764394A JPH06332697A JP H06332697 A JPH06332697 A JP H06332697A JP 6117643 A JP6117643 A JP 6117643A JP 11764394 A JP11764394 A JP 11764394A JP H06332697 A JPH06332697 A JP H06332697A
Authority
JP
Japan
Prior art keywords
instruction
branch
register
instructions
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
JP6117643A
Other languages
English (en)
Inventor
Frederic C Amerson
フレデリック・シー・エイマソン
Rajiv Gupta
ラジフ・グプタ
Balasubramanian Kumar
バラスブラマニアン・クマル
Michael S Schlansker
マイケル・エス・シュランスカ
William S Worley
ウイリアム・エス・ウオーリィ
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 JPH06332697A publication Critical patent/JPH06332697A/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/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
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables

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)

Abstract

(57)【要約】 【目的】分岐命令実行によるパイプラインのフラッシュ
の頻度を低減する。 【構成】条件分岐命令を3つの命令:分岐準備命令、比
較命令、分岐実行命令、に分割する。分岐準備命令はレ
ジスタファイル中の1つの命令アドレスレジスタ14中
の目標アドレスフィールド16に目標アドレスをストア
する。比較命令は同じレジスタ中のジャンプフラグフィ
ールド18に、分岐条件の成否をストアする。分岐実行
命令はこのレジスタ中の2つのフィールドの値に基づい
て、分岐を起こすか、またドのアドレスへ分岐するかを
決める。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はコンピュータシステムに
関し、より詳細には分岐命令による遅延を軽減する改良
されたマシンアーキテクチャと命令セットに関する。
【0002】
【従来技術及びその問題点】コンピュータの動作速度に
対する多数の改良にもかかわらず、より効率の高いスル
ープットで動作するコンピュータが常に必要とされてい
る。コンピュータハードウエアの動作速度を上げ、また
あれやこれやの形態の並列処理を導入することによって
計算速度の向上がはかられてきた。並列処理によって得
られる改良によってコンピュータ命令に関係する待時間
による遅延が軽減される。説明の目的上、この待時間
を、命令の開始と命令が実際に実行される時点の間の遅
延と定義する。
【0003】ある特定のレジスタに格納されたデータを
参照する命令を考える。この命令の実行には5マシンサ
イクルを要するとしよう。第1のサイクルで命令がメモ
リからフェッチされる。第2のサイクルでこの命令がデ
コードされる。第3のサイクルでこのレジスタの内容が
フェッチされる。第4のサイクルで命令が実行され、第
5のサイクルでデータが適当なロケーションに書き込ま
れる。命令の実行が完了するまで待たなければならない
とするならば、5マシンサイクル毎に1命令ずつしか実
行されない。
【0004】待時間の影響は、パイプラインプロセッサ
において第1の命令の実行が完了する前に第2の命令の
処理を開始することによって軽減される。上の例で考え
れば、任意の時点で、5つの命令が別々の処理ステージ
にある。このプロセッサは平列に動作する5つのプロセ
ッサを有し、それぞれのプロセッサは命令の実行に必要
な5つの作業の中の1つを実行する。最も古い命令のデ
ータがメモリあるいはレジスタに書き込まれるとき、次
に古い命令が実行ハードウエアによって実行される。次
に実行すべき命令に必要なレジスタの内容は、レジスタ
ハードウエア等によってそれと同時に取り出される。以
下同様の動作が行われる。
【0005】原則として、パイプラインプロセッサは既
知の命令のシーケンスが実行されているとき1マシンサ
イクル当り1命令の実行を完了することができる。残念
ながら、コンピュータプログラムは命令のフローに割り
込む分岐命令を含む。次の命令のシーケンスを考えて見
よう。 if x=0 then goto newstart y=z goto somewhere newstart: y=k 第1の命令は変数xの内容に基づく分岐命令に翻訳され
る。この命令がパイプラインの実行ユニットに達する前
に、いくつかの命令が更にこのパイプラインに入ってい
る。しかし、このコンピュータは実際にこの分岐を実行
するまでにこの分岐に続く命令が“y=z”であるか“y=
k”であるかを判定する方法を持っていない。従って、
分岐命令の後にどの命令をこのパイプラインにロードす
べきかを判定することができない。通常、2つの分岐結
果のうちの1つが正しい分岐結果であると考えられ、選
択された分岐結果に対応する命令が次にこのパイプライ
ンにロードされる。
【0006】間違った命令のシーケンスがロードされた
場合、コンピュータはパイプラインを空にし、再充填す
るのに充分な時間だけ停止する。従って、“y=z”に対
応する命令が分岐命令とx=0の後にロードされた場合、
パイプラインをフラッシュし、“y=k”に対応する命令
が実行のためにロードされる。これによって、プログラ
ムの実行はパイプラインの段の数によって決まる時間だ
け遅延される。
【0007】従来のシステムでは分岐命令の結果を予測
し、次に予測された結果に対応する命令をロードするこ
とによってこのような遅延を軽減しようとしてきた。し
かし、100%正確な予測法はない。従って、依然として
遅延が存在する。
【0008】また、分岐命令はメモリに関係する待時間
遅延を発生させる。最新のコンピュータシステムはコン
ピュータのメインメモリへの有効アクセス時間を改善す
るためのキャッシュサブシステムを用いている。このキ
ャッシュは最も最近使用された命令とデータを格納する
高速連想メモリからなる。プロセッサが特定のメモリロ
ケーションの内容を要求すると、キャッシュプロセッサ
はこの要求を傍受し、キャッシュメモリをチェックして
要求された情報がキャッシュにあるかどうかを判定す
る。要求された情報がキャッシュにある場合、この情報
は最少の遅延でプロセッサに返される。しかし、要求さ
れた情報がメインメモリにある場合、プロセッサはキャ
ッシュがこの情報を検索する間停止する。メインメモリ
の速度はキャッシュよりはるかに遅いため、このような
キャッシュ“ミス”によって大きな遅延が発生する。
【0009】分岐命令によってキャッシュミスが発生す
ることが多い。分岐によってコンピュータは分岐命令の
メモリロケーションから遠く離れたメモリロケーション
で動作を続けることが多い。キャッシュは最も最近使用
された情報とメインメモリ中でこの情報の近くにある情
報を格納する。従って、遠いロケーションに分岐する場
合、次の命令がキャッシュにある可能性は低い。
【0010】分岐命令を処理する従来のシステムに発生
する別の問題としては、このようなシステムが第1の分
岐命令の処理中に生成されたデータを用いて第2の分岐
命令に必要な処理を軽減する能力を持たないことであ
る。条件付き分岐命令は3つのリンクされた命令からな
るものと見ることができる。第1の命令は目標アドレ
ス、すなわち分岐が発生した場合に次に実行すべき命令
のアドレスを計算する。第2の命令は分岐結果を計算す
る。この結果はこの分岐を取るべきかどうかを決定す
る。第3の命令は実際の制御の移行を行なう。
【0011】多くの場合、同じ目標アドレスを有する多
数の分岐命令がプログラムに存在する。従って、原則的
に、第1の命令からの目標アドレスの計算結果を残りの
命令に用いることができれば、処理時間が大きく節約さ
れる。従来のコンピュータアーキテクチャはこれを達成
するための有効な方法を提供していない。従って、各分
岐について目標アドレスが計算し直される。同様に、比
較計算によっていくつかの分岐を判定することができ
る。
【0012】最後に、従来のシステムは所与の時点で1
つの分岐命令に対応する計算を実行する手段を提供する
だけである。待時間の影響を軽減する1つの重要な方法
においては命令シーケンス内で命令の移動を行なう。例
えば、コンパイラがロード動作が待時間遅延を有するこ
とを知っている場合、コンパイラは命令シーケンス中の
他の命令を移動してこの待時間中にこれらの命令が実行
されるようにすることができる。この方法によれば、待
時間遅延の影響が軽減される。残念ながら、コンパイラ
が分岐命令に必要な計算を実行することによってこれら
の待時間遅延を埋める能力は、分岐計算全部を完全に行
なうことができないために制限される。例えば、従来の
システムは目標アドレスの計算を比較演算から分離し
て、目標アドレスを順序から外れて計算できるようにす
る有効な手段を提供しない。従来のシステムで高々でき
ることは、1つの分岐命令を処理することだけであり、
その分岐命令についての情報がない場合、分岐を前以っ
て計算することができない。
【0013】
【目的】本発明の目的は、一般的に言えば、分岐命令を
実行するための改良されたコンピュータアーキテクチャ
と命令セットを提供することである。
【0014】本発明の別の目的は、予想されない分岐結
果が発生したときパイプラインをフラッシュする必要が
あることに起因する従来のシステムにおいて発生した遅
延を軽減するコンピュータアーキテクチャを提供するこ
とである。
【0015】本発明のまた別の目的は、分岐命令の実行
によって発生するメモリ待時間遅延を軽減するコンピュ
ータアーキテクチャを提供することである。
【0016】本発明のまた別の目的は、分岐命令の実行
に固有の計算を多数の分岐命令で共用することのできる
コンピュータアーキテクチャを提供することである。
【0017】本発明の他の目的は、複数の分岐命令が任
意の時点で相異なる処理ステージにありうるコンピュー
タアーキテクチャを提供することである。
【0018】本発明の他の目的は、アドレス計算と条件
計算の順序及びタイミングを、コード中の命令の順序に
よって示されているものから変更することができるコン
ピュータアーキテクチャを提供することである。
【0019】本発明の以上の及び他の目的は以下の詳細
な説明と添付図面から当業者には明らかになるであろ
う。
【0020】
【概要】本発明のデータ処理システムにおいては、命令
プロセッサが、この命令プロセッサがプログラムシーケ
ンス中の次の命令の代わりに目標アドレスによってこの
プログラム中の次の命令として指定される命令を実行す
べきことを示す分岐命令を実行するまで、プログラムの
命令を順次実行する。このデータ処理システムは命令プ
ロセッサに接続されたレジスタファイルを用いて分岐命
令の実行を容易にする。このレジスタファイルは1つあ
るいは複数のレジスタを有する。それぞれのレジスタは
分岐命令の実行に必要な情報の格納に用いられる。これ
らのレジスタはそれぞれ分岐命令の目標アドレスを格納
するためのスペースと第1及び第2の状態を有するフラ
グを格納するためのスペースを有する。第1の状態は、
このレジスタを参照する分岐実行命令が実行されると
き、このレジスタを参照する分岐命令が、命令プロセッ
サに目標アドレスによって指定される命令への分岐を起
こさせなければならないことを示す。第2の状態は、こ
のレジスタを参照する分岐実行命令が命令プロセッサに
よって実行されるとき、この命令プロセッサが分岐を起
こすのではなく命令を順次実行しなければならないこと
を示す。本発明は“分岐準備”命令を用いてレジスタに
目標アドレスをロードする。条件付き分岐命令は、指定
された条件が満たされたとき、この命令によって参照さ
れるレジスタ中にフラグをセットする比較命令の支援の
もとに実装される。
【0021】本発明の一実施例において、レジスタのう
ちの1つのフラグが分岐を行なうべきことを示すように
セットされたとき、プリフェッチ命令がキャッシュメモ
リに送られる。このプリフェッチはこのフラグの最終値
まで待たない。このプリフェッチ命令は、目標アドレス
を含むキャッシュラインがキャッシュにない場合、これ
をキャッシュにロードさせる。階層的キャッシュ構造を
有するシステムにおいては、このフラグは3つ以上の状
態を有する場合がある。ここで追加された状態は、キャ
ッシュ階層中のキャッシュラインのコピーを格納すべき
レベルを示したり、あるいは情報をメインメモリから直
接転送すべきことを示すのに用いることができる。
【0022】本発明の他の実施例において、分岐準備命
令、分岐実行命令及び比較命令によって参照されるレジ
スタはポインタレジスタによって指定される。このポイ
ンタレジスタの内容は別個の命令の助けをかりてセット
することができる。こうする代わりに、ポインタレジス
タの内容はレジスタファイルに格納されたデータを用い
て分岐実行命令によってセットすることもできる。
【0023】
【実施例】本発明は命令アドレスレジスタファイルと呼
ばれる特殊なレジスタファイルを用いて分岐命令を実装
するための改良された命令セットとアーキテクチャを提
供する。このファイル中の各レジスタは1つの分岐命令
の実行に要する情報の格納に用いられる。命令アドレス
レジスタファイルの最も簡単な実施態様を図1の10に示
す。レジスタファイル10は命令プロセッサ12が次に述べ
る分岐実行命令を実行するのに必要な情報を提供する。
レジスタファイル10は好適には複数の命令アドレスレジ
スタ14を有する。それぞれのレジスタ14は目標アドレス
16と命令プロセッサ12が問題のレジスタを参照する分岐
実行命令を実行するとき制御を目標アドレス16に移行す
べきかどうかを決定するフラグ18を格納するスペースを
有する。
【0024】本発明を用いるデータプロセッサにおいて
は、従来の分岐命令は分岐準備(PTB)、条件計算(CM
P)及び分岐実行(EB)と呼ばれる3つの命令によって
実装される。これらの命令は条件付き分岐命令を実装す
るのに必要な3つのタスクを実行する。これらの命令は
命令アドレスレジスタファイルのレジスタを参照する。
PTB命令は分岐のための目標アドレスを提供し、命令ア
ドレスレジスタファイル中の命令アドレスレジスタのう
ちの1つにこのアドレスを格納する。具体的にどのレジ
スタに格納するかは命令の一部としてあるいは次により
詳細に説明する機構によって指定される。説明の目的
上、このレジスタは命令の一部として指定されるものと
する。
【0025】CMP命令は2つの引数を比較して分岐すべ
きかどうかを判定し、その結果に従ってこの比較命令中
で指定されたレジスタにジャンプフラグ18をセットす
る。本発明の一実施態様においては、このジャンプフラ
グは2つの引数が同じであるときジャンプすべきことを
示す第1の状態にセットされる。2つの引数が同じでな
い場合、このジャンプフラグはジャンプをすべきでない
ことを示す第2の状態にセットされる。
【0026】EB命令は分岐を実際に実行する。命令プロ
セッサ12はEB命令を実行するとき、EB命令中で指定され
た命令アドレスレジスタにアクセスし、このレジスタの
ジャンプフラグを調べる。ジャンプフラグが分岐すべき
ことを示している場合、命令プロセッサ12によって実行
されるべき次の命令は目標アドレスにある命令である。
ジャンプフラグがジャンプすべきでないことを示してい
る場合、命令プロセッサ12によって実行されるべき次の
命令は次の順の命令である。
【0027】本発明は従来技術において用いられる条件
付き分岐実装ハードウエア及び方法に大きな改良をもた
らすものである。従来技術においては、目標アドレスは
比較演算が実行されるときに計算される。従って、この
比較に用いる引数がないか、コード中で条件付き分岐を
実行すべき地点の前に変化する可能性があるため、条件
付き分岐命令に必要な情報を早期に計算することができ
ない。これに対して、本発明では目標アドレスを可能な
かぎり早く計算することができる。それは比較のための
引数が不要であるためである。従って、この作業を他の
命令の待時間を埋めるのに用いることができる。同様
に、引数がわかりしだい比較を行なうことができるた
め、この作業もまた他の何らかの命令の待時間を埋める
ように移動することができる。
【0028】EB命令がパイプラインに入るとき、この命
令の結果で最も可能性の高いものが対応する命令アドレ
スレジスタのジャンプフラグにすでに格納されているこ
とに注意しなければならない。従って、このシステムは
このEB命令に続く命令をどこからロードするかについて
適当なロケーションを高い確度で推定することができ
る。本発明の実施例において、EB命令はそれがパイプラ
インに入るとき適当な命令アドレスレジスタを読み出
す。ほとんどの場合、ジャンプフラグの値は、その後EB
がパイプライン中の実行ポイントに達するときにまで変
化していることはない。この場合、適切な命令がパイプ
ライン中のEB命令の後にあり、パイプラインのフラッシ
ュは不要である。パイプライン中のEBの前の命令によっ
てフラグが変化する場合、パイプラインは従来の方法で
フラッシュされる。しかし、このようなケースはごくま
れにしか発生しないと考えられる。それは、EBの手前に
フラグ値をこのように変化させるEB命令は通常少ないた
めである。更に、コンパイラはほとんど常に命令シーケ
ンスを配列し直して、これらの命令のいずれも問題の命
令アドレスレジスタを参照する比較ではないことを保証
することができる。
【0029】また、従来の条件付き分岐命令を上述した
3つの命令に分割することによって、計算が大幅に節約
される。例えば、次のような条件付き分岐を含むループ
を有するプログラムを考えてみよう。 While i=0 いくつかの命令 if x=y then goto error_exit end 従来のシステムでは、このループのそれぞれの反復に
は、プロセッサが“error_exit”のアドレスを判定し、
xとyを比較し、分岐すべきかどうかを判断しなければな
らない。本発明によれば、PTB命令をこのループの外に
移動することができる。すなわち、 PTB error_exit,iarx While i=0 いくつかの命令 CMP x, y, iarx EB iarx end ここで、“iarx”はレジスタファイル中のレジスタの1
つを示す。従って、PTB命令は一度実行するだけでよ
い。同様に、xとyの値がこのループ中で変更されない場
合、CMP命令もまたループ外に移動することができ、こ
れによって更に節約を行なうことができる。
【0030】本発明の実施例において、PTB命令はまた
ジャンプフラグを初期値にセットする。これは2つの理
由から有益である。まず、ジャンプフラグをPTB命令が
実行されるときにセットすることによって、条件付き分
岐命令と無条件分岐命令の両方の実装に同じアーキテク
チャを用いることができる。無条件分岐命令の場合、PT
B命令とEB命令の間でCMP命令は実行されない。
【0031】第2に、分岐結果をあらかじめ知ることに
よって待時間を軽減することができる。分岐が起こった
場合、分岐点に続くコードの命令はデータ処理システム
のキャッシュメモリ中に現在ない可能性が高い。キャッ
シュは通常最も最近実行された命令とメインメモリ中で
それらの命令の近くにある命令、すなわち最も最近実行
された命令と同じキャッシュライン中にある命令を有す
る。分岐命令はプログラムの制御をメインメモリ中の現
在のロケーションから遠いロケーションに移すことがし
ばしばある。従って、新しい命令実行パス上の命令はま
たメインメモリ上にしかない可能性が高い。
【0032】従来のシステムでは通常、分岐の後の最初
の命令が実行されるときにメモリ待時間遅延が発生す
る。これは、キャッシュのサブシステムがメインメモリ
から適当なキャッシュラインをフェッチしている間、プ
ロセッサは停止しなければならないためである。本発明
は命令アドレスレジスタ中の情報によって起動される
“プリフェッチ”命令を用いてこのような待時間遅延を
軽減するものである。この技術を用いる本発明の最も簡
単な実施例においては、メモリプロセッサは分岐が起こ
るかもしれないことがわかりしだいキャッシュのサブシ
ステムに命令を発する。この命令によって、キャッシュ
サブシステムは、メインメモリからの目標アドレスを含
むキャッシュラインを、そのキャッシュラインがすでに
キャッシュにない場合にロードする。従って、PTB命令
あるいはCMP命令によってジャンプフラグがセットされ
しだい、キャッシュサブシステムはメモリからの必要な
キャッシュラインのフェッチを開始する。これによっ
て、分岐によって発生する待時間遅延は大幅に軽減され
る。改良の程度はジャンプフラグがEB命令の実行よりど
れだけ先にセットされるかによることは明らかである。
充分早くセットされれば、待時間遅延がすべて除去され
る。
【0033】このようなプリフェッチ命令を用いる本発
明の一実施例を図2の100に示す。命令アドレスレジス
タファイル101は命令アドレスレジスタ104中のジャンプ
フラグを走査するコントローラ102を含む。命令プロセ
ッサ106がこれらのフラグのうちの1つをセットする
と、コントローラ102はキャッシュ108にプリフェッチ命
令を発する。このプリフェッチ命令はジャンプフラグの
セットされた命令アドレスレジスタに格納されている目
標アドレスを含む。この目標アドレスを含むキャッシュ
ラインがキャッシュ108に現在格納されていない場合、
キャッシュ108はこのキャッシュラインをメインメモリ1
10からロードさせる。
【0034】上述したプリフェッチ命令は分岐が行なわ
れたとき発生するメモリ待時間の影響を軽減するが、キ
ャッシュ108において問題が発生する可能性がある。キ
ャッシュに新しいエントリが読み込まれる度に、キャッ
シュ中の既存のエントリを捨てなければならない。捨て
られたエントリが近い将来にまた使用される可能性が高
く、入って来るエントリは一度しか使用されない場合、
キャッシュ性能の低下が起こることがある。この性能の
低下は放棄されたエントリを次に使用するときこれを再
ロードしなければならないことによる。この再ローディ
ング動作によってこのエントリがメインメモリからロー
ドされるとき遅延が発生する。分岐パスに対する命令は
“置換されるまでに一度しか使用されない”というタイ
プのものであることが多い。これは、分岐パスはプログ
ラム中で一度通るだけの場合が多いためである。
【0035】多レベルキャッシュシステム210を用いる
本発明の一実施例を図3の200に示す。本実施例は一度
しか使用されない可能性の高いエントリがキャッシュに
送られるときに発生する問題を軽減する。キャッシュシ
ステム210は212と213に示す2つのレベルのキャッシュ
メモリを含む。第1のレベルであるレベル1は従来の置
換方法に基づいて動作する。このレベルはキャッシュシ
ステム210にある間に2回以上使用されることが予想さ
れるエントリの格納に用いられる。レベル1は従来の態
様で動作する。例えば、レベル1の最も古いエントリを
入って来るエントリで置き換えられるエントリとしてよ
い。レベル2はキャッシュシステム210にある間に一度
しか使用されないエントリの格納に用いられる。従っ
て、レベル2の置き換え方法は、このように再使用され
ないことを反映して選択される。例えば、1つのエント
リはそれが命令プロセッサに送られてきたとき置換のた
めのマークが付けられる置換方法を用いることができ
る。一度しか使用されそうもないエントリはこのキャッ
シュのレベル1には入らないため、上述した問題は防止
される。
【0036】本発明のこの実施例では、キャッシュレベ
ルの選択は命令アドレスレジスタファイル201のそれぞ
れの命令アドレスレジスタ中の追加フィールド(メモリ
制御情報フィールド)207によって決定される。この情
報はコンパイラあるいはプログラマが提供することがで
きる。キャッシュレベルの決定に加えて、メモリ制御情
報207はまたコントローラ208がキャッシュシステム210
にプリフェッチ命令を送るかどうかの決定にも用いるこ
とができる。すなわち、このメモリ制御情報をジャンプ
フラグ206の代わりに用いてプリフェッチを送るべきか
どうかを決定することができる。当業者には、このメモ
リ制御情報をジャンプフラグの拡張とみなすことができ
ることは明らかであろう。
【0037】更に、フィールド207に格納されるメモリ
制御情報はプリフェッチ動作の優先順位を指定する情報
を含んでもよい。多くのシステムにおいて、メインメモ
リ214とこれらのキャッシュレベルの間のメモリ帯域幅
によって、分岐命令のセットアップからその命令の実際
の実行までの時間に有効に行なうことのできるプリフェ
ッチ動作の回数が制限される。更に、すべての分岐が等
しい可能性を持つわけではない。従って、プリフェッチ
動作に優先順位を付ける機構を提供することが有効であ
る。この優先順位情報はPTB命令あるいは他の何らかの
適当な命令によってロードすることができる。本発明の
一実施例における優先順位情報は、リンカあるいはコン
パイラが決定した分岐が起こる確率を含む。この情報は
次にコントローラ208がプリフェッチ動作に優先順位を
設定するのに用いることができる。
【0038】レベル1のキャッシュサブシステムのサイ
ズは大きくなくてもよいことに注意しなければならな
い。このサブシステムは命令アドレスレジスタファイル
201において実行準備中である分岐命令のためのキャッ
シュラインを保持するのに充分な大きさがあれば良い。
最大でも、1つの命令アドレスレジスタにつき1つのエ
ントリが必要とされる。
【0039】本発明の上記の実施例は、従来の比較・分
岐命令を上述した3つの命令に置き換えることによって
その効果を達成する。これらの実施例はかなりの効果を
もたらすが、一方で1つの命令にかえて3つの命令を導
入することによってプログラムのサイズが大きくなる。
この増大は3つの命令のうちの2つの機能を組み合わせ
る“組み合わせ”命令を用いることによっていくらか軽
減することができる。例えば、CMP命令とEB命令を組み
合わせて、CMP部分の実行後EB命令が自動的に実行され
る単一の命令にすることができる。この実行はCMP命令
の直後でもよく、あるいはまたCMP命令から指定された
数のマシンサイクルの後であってもよい。PTB命令とEB
命令を組み合わせて無条件分岐を実行するための単一の
命令にすることができる。この場合、EB命令はこの命令
のPTB部分の実行から所定数のマシンサイクル後に実行
される。マシンサイクルの数は固定でもよく、あるいは
これを組み合わせ命令の一部に入れておくこともでき
る。CMP命令の後にPTB命令が続く組み合わせ命令もまた
有効なものであることは明らかである。
【0040】本発明の上記の実施例においては、3つの
命令PTB、CMP及びEBがそれぞれ特定の命令アドレスレジ
スタを指定する。これらの実施例は従来技術に比べて大
きな利点を有するものであるが、命令プロセッサが命令
アドレスレジスタを指定する情報をデコードする必要が
ある。そのため、多量の高速なハードウエアが必要にな
る。このハードウエアを不要とする本発明の一実施例を
図4の300に示す。この実施例では、PTB命令、CMP命令
及びEB命令はレジスタ309の内容によって指定される命
令アドレスレジスタ302を参照する。従って、これらの
命令は命令自身の中で命令アドレスレジスタを指定する
必要がない。レジスタ309の内容の変更はそのための別
の命令を用いて行なうことができる。
【0041】更に、レジスタ309の内容はこの実施例で
はEB命令によって変更することができる。この実施例で
は、命令アドレスレジスタ302のそれぞれは現在活動状
態にある命令アドレスレジスタを指定するEB命令が実行
された後に活動状態となるべき次の命令アドレスレジス
タを指定するフィールド305を有する。フィールド305の
内容は問題の命令アドレスレジスタに向けられたPTB命
令中に指定することができる。こうする代わりに、この
目的のために特定の命令を設けてもよい。フィールド30
5はレジスタ309の2つの選択肢の格納に用いることがで
きる。第1の選択肢はジャンプが行なわれるとき用いら
れ、第2の選択肢はジャンプが行なわれないとき用いら
れる。
【0042】手続きは分岐及びリンク(branch and lin
k, EBL)と呼ばれる特殊な分岐命令を呼び出す。この命
令では手続き呼び出しの後の次の命令のアドレスがレジ
スタに入る。このレジスタ中のアドレスは、この手続き
からの復帰後のプログラムの再開位置を指定する。EBL
命令が命令アドレスレジスタを明示的に指定する場合、
手続き呼び出しが通常の分岐と異なる点は、手続き呼び
出し後の命令のアドレスが指定されたレジスタに入れら
れることだけである。このレジスタは別の命令アドレス
レジスタとすることができることに注意されたい。
【0043】レジスタ309のようなポインタを用いてEBL
命令の使用すべき命令アドレスレジスタを指定する場
合、本発明の好適実施例では、上述したEBL命令と以下
のような点で異なる命令を使用する。すなわち、この命
令は、司令レジスタと呼ばれるレジスタ309の内容が、
分岐が行われない場合に分岐及びリンク命令によって使
用される命令アドレスレジスタ中で指定される点で相違
している。分岐を起こさずにリンクする命令が、それに
よって指名レジスタの内容を指定する処理に対して透過
的になることができる。この情報は、分岐及びリンク準
備命令によって、他の分岐準備命令について上述したの
と同様な態様で命令アドレスレジスタに格納することが
できる。
【0044】残念ながら、分岐及びリンクが行なわれる
場合、2つの問題が発生する。まず、次に指名される命
令アドレスレジスタが呼び出された手続きに役に立つ可
能性が極めて低いことがある、更に、呼び出された手続
きは、一連の指名レジスタ値を呼び出された手続きが呼
出し元の手続きに戻るとき、分岐が起こらなかった時に
用いられた値に一致するように何らかの方法で復元しな
ければならない。原則として、これは指名レジスタの内
容を呼び出された手続き中に保管し、そこからリターン
する前に指名レジスタの内容を復元することによって行
なわれる。しかし、これには指名レジスタの内容を保管
し復元するための命令を更に必要とする。更に、この方
法は上述したキャッシュからの情報のプリフェッチに干
渉する。
【0045】本発明の好適な実施例においては、指名レ
ジスタの内容を保管する作業はEBL命令の副次的効果で
ある。2つの値が次活動状態フィールド305に格納され
る。第1の値は分岐及びリンクが行なわれない場合の指
名レジスタの内容を指定し、第2の値は分岐が行なわれ
る場合にEBL命令によってリターンアドレスを入れるべ
きレジスタを指定する。前と同じ様に、分岐及びリンク
が行なわれない場合、指名レジスタの内容はEBL命令に
よって参照された命令アドレスレジスタ中の第1の値に
よって指定される値である。分岐及びリンクが行なわれ
る場合、リターンアドレスはEBL命令の用いる命令アド
レスレジスタの次活動状態フィールド中の第2の値によ
って指定される命令アドレスレジスタに格納される。更
に、リターンアドレスが格納される命令アドレスレジス
タの次活動状態フィールドは上述した第1のフィールド
の値にセットされ、指名レジスタの内容はこのリターン
アドレスを含む命令アドレスレジスタを指すようにセッ
トされる。
【0046】例えば、IAR2(すなわち命令レジスタ2)
を用いてEBL命令が準備されたと仮定してみよう。すな
わち、EBL命令が実行されるとき指名レジスタがIAR2を
指示する。分岐が行われない場合にはIAR4が次に指名さ
れなければならず、また分岐が行われる場合に分岐及び
リンクの時点でリターンアドレスを入れるべき命令アド
レスレジスタとしてIAR8が指定されると仮定しよう。従
って、EBL命令がIAR2にアクセスするとき、IAR4とIAR8
へのポインタがIAR2の次活動状態フィールドにロードさ
れる。
【0047】分岐及びリンクが行なわれない場合、EBL
命令の後に指名レジスタはIAR4を指示する。分岐及びリ
ンク命令が実行される場合、EBL命令は命令のフローをI
AR2に格納された目標アドレスへと変更するだけではな
く、IAR8の目標アドレスフィールドにリターンアドレス
を格納し、IAR8を次活動状態命令アドレスレジスタとし
て指名する。更に、IAR8の次指名フィールド(フィール
ド305)がIAR4を指示するようにセットされる。すなわ
ち、IAR8はEBL命令後の活動状態の命令アドレスレジス
タとなり、IAR8はIAR8を用いた分岐実行命令によって、
この分岐実行命令が実行された後IAR4が指名されるよう
にすでにセットアップされた状態となる。指名連鎖がこ
れでセットアップされ、呼び出された手続きは指名ポイ
ンタがIAR4を指示した状態で呼び出された手続きにリタ
ーンするための分岐実行命令を指定するだけでよい。こ
れによって、呼び出された手続きを、呼出元手続きに対
して少なくとも指名連鎖について透過的にすることがで
きる。
【0048】この機構はまた、分岐が行われた場合の実
行パスと行われなかった場合の実行パスのそれぞれにつ
いて次に指名されるべき独立した命令アドレスレジスタ
を指定する実施例にも用いることができる。この場合、
指名された非分岐時命令アドレスレジスタへのポインタ
が、リターンアドレスが格納されている命令アドレスレ
ジスタ中で指定される次活動状態レジスタになる。
【0049】トラップと割り込みは、ある条件が発生す
るとコンピュータが新しいロケーションに分岐して例外
処理ルーチンを実行し、このルーチンからの復帰後、コ
ンピュータはトラップあるいは割り込みが発生しなかっ
たかのように動作を再開しなければならないという点で
EBL命令に類似している。上述した実施例を、トラップ
あるいは割り込みルーチンのための目標アドレスを保持
するように割り当てられたレジスタの1つを参照する暗
黙のうちに実行されるトラップあるいは割り込み命令を
含むように拡張することができることは明らかであろ
う。このレジスタは適当な分岐準備命令でロードするこ
とができる。次に、ハードウエアがトラップあるいは割
り込み条件を検出して分岐及びリンク命令に等価なもの
を実行する。更に、ハードウエアが、トラップあるいは
割り込みからの復帰後に指名されたレジスタとして用い
るために現在の指名レジスタの内容を格納する。
【0050】上述した実施例は2つの引数が比較される
CMP命令について説明したものであるが、当業者にはプ
ロセッサの判定することのできる任意の条件を用いるこ
とができることは明らかであろう。また、複数のCMP命
令を有し、それぞれのCMPが異なる条件を用いる命令を
実装しうることも明らかであろう。
【0051】上述した実施例では、分岐命令の目標アド
レスの格納にレジスタファイルが用いられた。しかし、
当業者には、この情報が格納されるロケーションを指定
するポインタを格納するためにレジスタファイルを用い
ることができることは明らかであろう。
【0052】上述した実施例から、本発明は分岐命令の
実行に対する従来の解決方法にまさる大きな効果を提供
することは明らかである。本発明は従来の分岐命令を上
述した3つの構成命令に分割することによってこのよう
な効果を得ている。
【0053】もっとも簡単な従来技術の方法では、アド
レス計算動作、条件判定、及び分岐実行は単一の命令に
まとめられる。このような方法は分岐予測を用いてパイ
プラインのフラッシュの頻度を下げるのに好適なもので
あるが、パイプラインのフラッシュに要する時間は依然
としてかなりのものである。更に、このような方法はほ
とんどの命令にある待時間をより有効に利用するための
計算のタイミングと順序の変更を可能にするという利点
を提供するものではない。更に、このような方法は、予
測が誤っていた場合に目標アドレスの内容をプリフェッ
チする手段を提供しない。これらの問題点は、その動作
を構成する諸命令をまとめたこ及び分岐実行が正しい目
標アドレスを判定するのを待つことに起因するものであ
る。
【0054】予測誤りに対する従来の解決方法の1つ
に、ある一定数のマシンサイクル中実行されない分岐命
令を用いるものがある。このアーキテクチャによって予
測誤りは防止される。なぜなら、命令がパイプラインに
入る前に正しい分岐がわかっているためである。しか
し、命令動作を構成する諸命令がまとめられたままであ
るため、この方法は最適なものからはほど遠い。まず、
コードが一定数のマシンサイクルを有効に使用すること
ができなければならない。これを行なうためには、命令
をこの待時間を埋めるために移動しなければならない。
命令を待時間を正確に埋めるように移動することは常に
可能であるわけではない。更に、待時間はハードウエア
によって異なる。従って、1つのハードウエアプラット
フォームに最適化したコードは他のプラットフォーム上
では良好に実行されない。最後に、待時間が非常に長い
場合を除いて、目標アドレスのキャッシュへのプリフェ
ッチを充分有効に行なうことはできない。これは目標ア
ドレスの判定と分岐命令の実行の間の時間が不充分であ
るためである。
【0055】これらの問題点に対する第2の部分的な従
来の解決方法は、目標アドレスの計算を条件の計算と分
岐の実行から分離することであった。この解決法によれ
ば原則的には予測される目標アドレスについてのプリフ
ェッチを実現できるようになるが、予測誤りの問題が依
然として存在する。すなわち、実際の目標アドレスは分
岐命令が実行されるまで定まらない。従って、分岐命令
の実行の際にパイプラインをフラッシュしてキャッシュ
に正しい目標アドレスの内容をロードしなければならな
い割合が高い。
【0056】当業者には、以上の説明と添付図面から本
発明に対するさまざまな変更が可能であることは明らか
であろう。従って、本発明は特許請求の範囲によっての
み限定されるものである。
【0057】本発明の実施態様は以下の通りである。
【0058】〔実施態様1〕以下の(a)及び(b)を設け
てなるデータ処理システム: (a)プログラムの命令を順次実行するための命令プロセ
ッサ:前記命令は前記命令プロセッサに目標アドレスに
よって指定される命令を前記プログラムシーケンス中の
次の命令の代わりに前記プログラム中の次に命令として
実行させる分岐実行命令を含む; (b)1つあるいは複数のレジスタを有し、前記命令プロ
セッサと作動的に接続されたレジスタファイル:前記レ
ジスタはそれぞれ分岐命令の目標アドレスを格納する目
標アドレス手段と第1及び第2の状態を有するフラグを
格納するフラグ手段を有し、前記第1の状態は、前記レ
ジスタを参照する分岐実行命令が前記命令プロセッサに
よって実行されるとき、前記分岐命令が命令プロセッサ
に、前記目標アドレスによって指定される命令を実行さ
せるべきことを示し、前記第2の状態は、前記レジスタ
を参照する分岐実行命令が前記命令プロセッサによって
実行されるとき、前記命令プロセッサが前記シーケンス
順位の次の命令を実行すべきことを示す。
【0059】〔実施態様2〕前記レジスタファイルは少
なくとも2つの前記レジスタを有することを特徴とする
実施態様1記載のデータ処理システム。
【0060】〔実施態様3〕前記命令はアドレスを含む
分岐準備命令を含み、前記命令プロセッサが前記アドレ
スを前記レジスタのうちの指定されたレジスタの目標ア
ドレス手段に格納することを特徴とする実施態様1記載
のデータ処理システム。
【0061】〔実施態様4〕前記分岐準備命令はデフォ
ルト値を有し、前記命令プロセッサが前記レジスタのう
ちの前記指定されたレジスタの前記フラグ手段に前記デ
フォルトフラグ値を格納することを特徴とする実施態様
3記載のデータ処理システム。
【0062】〔実施態様5〕前記命令は比較命令を含
み、前記比較命令は前記命令プロセッサに前記命令によ
って指定された条件が真であるかどうかを判定させると
ともに、前記レジスタのうちの1つレジスタの前記フラ
グを前記状態のうちの1つにセットさせることを特徴と
する実施態様1記載のデータ処理システム。
【0063】〔実施態様6〕以下の(c)及び(d)を設けた
ことを特徴とする実施態様1記載のデータ処理システ
ム: (c)より低速なメインメモリに通常格納される情報のコ
ピーを格納するための、前記命令プロセッサに作動的に
接続されたキャッシュメモリ; (d)前記レジスタファイルと前記キャッシュメモリに作
動的に接続されたキャッシュローディング手段:前記キ
ャッシュローディング手段は、前記レジスタのうちの1
つのレジスタの前記目標アドレスによって指定される命
令のコピーを、前記レジスタのうちの前記1つのレジス
タの前記フラグ手段が前記フラグがあらかじめ指定され
た状態にあることを示すときに、前記キャッシュメモリ
に格納させる。
【0064】〔実施態様7〕前記キャッシュメモリが複
数のメモリレベルを有し、前記フラグ手段が3つ以上の
状態を有し、前記フラグの状態が目標アドレスによって
指定される前記命令の前記コピーが格納される前記メモ
リレベルを決定することを特徴とする実施態様6記載の
データ処理システム。
【0065】〔実施態様8〕前記レジスタファイルが前
記レジスタファイル中の前記レジスタのうちのどれが次
に分岐実行命令によって参照されるかを指定するポイン
タレジスタを有することを特徴とする実施態様1記載の
データ処理システム。
【0066】〔実施態様9〕前記レジスタファイル中の
前記レジスタのそれぞれが前記ポインタレジスタに格納
すべき値を格納する手段を有し、前記レジスタを参照す
る前記分岐実行命令が前記命令プロセッサによって実行
されるとき、前記分岐実行命令が前記格納された値を前
記ポインタレジスタにロードさせることを特徴とする実
施態様8記載のデータ処理システム。
【0067】〔実施態様10〕前記命令は分岐実行及び
リンク命令を含み、前記レジスタがそれぞれ第1及び第
2の値を格納する手段を有し、前記分岐及びリンク命令
の実行によって、前記第2の値によって指定されるレジ
スタにリターンアドレスがロードされ、前記第1の値が
前記指定されたレジスタに格納され、前記ポインタレジ
スタに前記第2の値がロードされることを特徴とする実
施態様8記載のデータ処理システム。
【0068】
【効果】以上詳細に説明したように、本発明によれば、
分岐命令実行の際のパイプラインのフラッシュの頻度を
大きく低減し、分岐命令実行による遅延を極めて少なく
することができるという効果が得られる。
【図面の簡単な説明】
【図1】本発明のデータ処理システムの一実施例のブロ
ック図。
【図2】本発明のデータ処理システムの第2実施例のブ
ロック図。
【図3】本発明の多レベルキャッシュシステムを用いる
データ処理システムの一実施例のブロック図。
【図4】本発明の第4実施例のブロック図。
【符号の説明】
10:レジスタファイル 12:命令プロセッサ 14:命令アドレスレジスタ 16:目標アドレス 18:フラグ 101:命令アドレスレジスタファイル 102:コントローラ 104:命令アドレスレジスタ 106:命令プロセッサ 108:キャッシュ 110:メインメモリ 201:命令アドレスレジスタファイル 205:目標アドレス 206:ジャンプフラグ 207:メモリ制御情報フィールド 208:コントローラ 210:キャッシュシステム 211:コントローラ 212:レベル1 213:レベル2 214:メインメモリ 301:命令プロセッサ 302:命令アドレスレジスタ 305:次活動状態フィールド 306:目標アドレスフィールド 307:ジャンプフラグ 309:活動状態レジスタ
───────────────────────────────────────────────────── フロントページの続き (72)発明者 バラスブラマニアン・クマル アメリカ合衆国カリフォルニア州クーパテ ィノ、チャーサム・レイン11445 (72)発明者 マイケル・エス・シュランスカ アメリカ合衆国カリフォルニア州ロス・ア ルトス、ラ・プレンダ409 (72)発明者 ウイリアム・エス・ウオーリィ アメリカ合衆国カリフォルニア州サラト ガ、ファルマス・サークル29316

Claims (1)

    【特許請求の範囲】
  1. 【請求項1】以下の(a)及び(b)を設けてなるデータ処
    理システム: (a)プログラムの命令を順次実行するための命令プロセ
    ッサ:前記命令は前記命令プロセッサに目標アドレスに
    よって指定される命令を前記プログラムシーケンス中の
    次の命令の代わりに前記プログラム中の次に命令として
    実行させる分岐実行命令を含む; (b)1つあるいは複数のレジスタを有し、前記命令プロ
    セッサと作動的に接続されたレジスタファイル:前記レ
    ジスタはそれぞれ分岐命令の目標アドレスを格納する目
    標アドレス手段と第1及び第2の状態を有するフラグを
    格納するフラグ手段を有し、前記第1の状態は、前記レ
    ジスタを参照する分岐実行命令が前記命令プロセッサに
    よって実行されるとき、前記分岐命令が命令プロセッサ
    に、前記目標アドレスによって指定される命令を実行さ
    せるべきことを示し、前記第2の状態は、前記レジスタ
    を参照する分岐実行命令が前記命令プロセッサによって
    実行されるとき、前記命令プロセッサが前記シーケンス
    順位の次の命令を実行すべきことを示す。
JP6117643A 1993-05-06 1994-05-06 データ処理システム Pending JPH06332697A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US5885893A 1993-05-06 1993-05-06
US058,858 1993-05-06

Publications (1)

Publication Number Publication Date
JPH06332697A true JPH06332697A (ja) 1994-12-02

Family

ID=22019331

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6117643A Pending JPH06332697A (ja) 1993-05-06 1994-05-06 データ処理システム

Country Status (4)

Country Link
US (1) US5615386A (ja)
JP (1) JPH06332697A (ja)
DE (1) DE4345028A1 (ja)
GB (1) GB2277819B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19980024622A (ko) * 1996-09-13 1998-07-06 다까노 야스아끼 프로그램 실행 방법 및 그 방법을 이용한 장치

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB9412487D0 (en) * 1994-06-22 1994-08-10 Inmos Ltd A computer system for executing branch instructions
US5928357A (en) * 1994-09-15 1999-07-27 Intel Corporation Circuitry and method for performing branching without pipeline delay
US5790845A (en) * 1995-02-24 1998-08-04 Hitachi, Ltd. System with reservation instruction execution to store branch target address for use upon reaching the branch point
US6185674B1 (en) 1995-04-05 2001-02-06 International Business Machines Corporation Method and apparatus for reconstructing the address of the next instruction to be completed in a pipelined processor
US5881276A (en) * 1996-07-30 1999-03-09 Intel Corporation Manipulation of protected pages to reduce conditional statements
JP3745039B2 (ja) * 1996-08-01 2006-02-15 株式会社ルネサステクノロジ 遅延命令を有するマイクロプロセッサ
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
US6105123A (en) * 1998-03-10 2000-08-15 Hewlett-Packard Company High speed register file organization for a pipelined computer architecture
US6253306B1 (en) 1998-07-29 2001-06-26 Advanced Micro Devices, Inc. Prefetch instruction mechanism for processor
TW455814B (en) * 1998-08-06 2001-09-21 Intel Corp Software directed target address cache and target address register
US6470444B1 (en) * 1999-06-16 2002-10-22 Intel Corporation Method and apparatus for dividing a store operation into pre-fetch and store micro-operations
US6523110B1 (en) * 1999-07-23 2003-02-18 International Business Machines Corporation Decoupled fetch-execute engine with static branch prediction support
US6772325B1 (en) * 1999-10-01 2004-08-03 Hitachi, Ltd. Processor architecture and operation for exploiting improved branch control instruction
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
US7085915B1 (en) * 2000-02-29 2006-08-01 International Business Machines Corporation Programmable prefetching of instructions for a processor executing a non-procedural program
US7127593B2 (en) * 2001-06-11 2006-10-24 Broadcom Corporation Conditional execution with multiple destination stores
US6986025B2 (en) * 2001-06-11 2006-01-10 Broadcom Corporation Conditional execution per lane
US7861071B2 (en) * 2001-06-11 2010-12-28 Broadcom Corporation Conditional branch instruction capable of testing a plurality of indicators in a predicate register
US7010675B2 (en) * 2001-07-27 2006-03-07 Stmicroelectronics, Inc. Fetch branch architecture for reducing branch penalty without branch prediction
US6772179B2 (en) * 2001-12-28 2004-08-03 Lucent Technologies Inc. System and method for improving index performance through prefetching
US20060015866A1 (en) * 2004-07-16 2006-01-19 Ang Boon S System installer for a reconfigurable data center
US10496647B2 (en) * 2017-04-18 2019-12-03 Microsoft Technology Licensing, Llc Delay detection in query processing

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US4334268A (en) * 1979-05-01 1982-06-08 Motorola, Inc. Microcomputer with branch on bit set/clear instructions
US4435758A (en) * 1980-03-10 1984-03-06 International Business Machines Corporation Method for conditional branch execution in SIMD vector processors
US4430706A (en) * 1980-10-27 1984-02-07 Burroughs Corporation Branch prediction apparatus and method for a data processing system
JPS6051948A (ja) * 1983-08-31 1985-03-23 Hitachi Ltd 情報処理装置
US4764861A (en) * 1984-02-08 1988-08-16 Nec Corporation Instruction fpefetching device with prediction of a branch destination for each branch count instruction
EP0199009A3 (en) * 1985-02-28 1989-05-31 Kabushiki Kaisha Toshiba Path coverage measuring system in a programme
US4755935A (en) * 1986-01-27 1988-07-05 Schlumberger Technology Corporation Prefetch memory system having next-instruction buffer which stores target tracks of jumps prior to CPU access of instruction
US5197136A (en) * 1987-11-12 1993-03-23 Matsushita Electric Industrial Co., Ltd. Processing system for branch instruction
US4933847A (en) * 1987-11-17 1990-06-12 International Business Machines Corporation Microcode branch based upon operand length and alignment
US4943908A (en) * 1987-12-02 1990-07-24 International Business Machines Corporation Multiple branch analyzer for prefetching cache lines
JPH081602B2 (ja) * 1988-02-23 1996-01-10 三菱電機株式会社 データ処理装置
US5050068A (en) * 1988-10-03 1991-09-17 Duke University Method and apparatus for using extracted program flow information to prepare for execution multiple instruction streams
US5134701A (en) * 1989-02-10 1992-07-28 Hewlett-Packard Co. Test apparatus performing runtime replacement of program instructions with breakpoint instructions for processor having multiple instruction fetch capabilities
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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR19980024622A (ko) * 1996-09-13 1998-07-06 다까노 야스아끼 프로그램 실행 방법 및 그 방법을 이용한 장치

Also Published As

Publication number Publication date
DE4345028A1 (de) 1994-11-10
US5615386A (en) 1997-03-25
GB2277819A (en) 1994-11-09
GB9408738D0 (en) 1994-06-22
GB2277819B (en) 1997-07-02

Similar Documents

Publication Publication Date Title
JPH06332697A (ja) データ処理システム
US5664135A (en) Apparatus and method for reducing delays due to branches
KR100274268B1 (ko) 멀티스레드 프로세서에서 스레드 스위치 대기 시간을 감소시키기 위한 방법 및 장치
JP3120152B2 (ja) コンピューターシステム
US4755966A (en) Bidirectional branch prediction and optimization
US9875106B2 (en) Computer processor employing instruction block exit prediction
US6772325B1 (en) Processor architecture and operation for exploiting improved branch control instruction
KR100411529B1 (ko) 제2 레벨 분기 예측 테이블을 이용한 분기 예측 방법 및장치
EP0747816B1 (en) Method and system for high performance multithread operation in a data processing system
JPH0334024A (ja) 分岐予測の方法とそのための装置
KR20010050791A (ko) 분기 명령과 연관된 컴퓨팅 시스템 레이턴시를 감소시키기위한 시스템 및 방법
JPH06236271A (ja) プロセッサおよび命令推測実行方法
US20100287358A1 (en) Branch Prediction Path Instruction
US7243350B2 (en) Speculative execution for java hardware accelerator
US20060031822A1 (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
US5784604A (en) Method and system for reduced run-time delay during conditional branch execution in pipelined processor systems utilizing selectively delayed sequential instruction purging
US6163821A (en) Method and apparatus for balancing load vs. store access to a primary data cache
JP3602801B2 (ja) メモリデータアクセス構造およびその方法
WO2006006613A1 (en) Methods and apparatus for updating of a branch history table
JPH0628187A (ja) データロード方法及びそれを用いた演算プロセッサ