JPH06110683A - マイクロプロセッサの拡張ブランチターゲット方法及びその装置 - Google Patents

マイクロプロセッサの拡張ブランチターゲット方法及びその装置

Info

Publication number
JPH06110683A
JPH06110683A JP3349828A JP34982891A JPH06110683A JP H06110683 A JPH06110683 A JP H06110683A JP 3349828 A JP3349828 A JP 3349828A JP 34982891 A JP34982891 A JP 34982891A JP H06110683 A JPH06110683 A JP H06110683A
Authority
JP
Japan
Prior art keywords
instruction
branch
target
address
executing
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
JP3349828A
Other languages
English (en)
Inventor
Uri C Weiser
ユリイ・シイ・ヴァイザー
David Perlmutter
デビッド・パールムッター
Yaakov Yaari
ヤーコフ・ヤーリ
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of JPH06110683A publication Critical patent/JPH06110683A/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, 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/38Concurrent instruction execution, e.g. pipeline, 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

Abstract

(57)【要約】 【目的】 命令メモリに記憶されている,複数のブラン
チ命令を含む命令を実行するパイプライン命令プロセッ
サを提供する。 【構成】 命令プロセッサは、ブランチ命令に対応する
ターゲット命令及びターゲットアドレスを記憶するブラ
ンチターゲットバッファを含む。ターゲット命令データ
は、ブランチ命令に先立つ命令のアドレスに従って索引
付けされている。ブランチターゲットバッファには、ブ
ランチを取ったか否かを指示するヒストリーデータも含
まれる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、デジタルコンピュータ
において命令を処理する方法及び装置に関し、特に、パ
イプラインでブランチ命令を処理することに関連する遅
延をできる限り少なくする方法及び装置に関する。
【0002】
【従来の技術】コンピュータでは、ブランチ命令が命令
実行の流れに影響を及ぼす。多くの復号命令セットコン
ピュータ(CISC)並びに縮小命令セットコンピュー
タ(RISC)は命令の単純な復号と、パイプライン化
命令実行を利用している。パイプライン化コンピュータ
におけるブランチ命令は、通常、そのブランチ命令が制
御を移行した場所にある命令、すなわち、「ターゲット
命令」が取出されるまでパイプラインを中断する。その
ため、このようなブランチ命令は正規のパイプライン命
令流れを妨害することになる。実際に、1つのブランチ
命令の実行に、CISCマイクロプロセッサやRISC
マイクロプロセッサの実行サイクル時間の約30パーセ
ントを費やす場合もある。
【0003】従来より、この問題を解決するためのいく
つかの方法が実現されている。そのような解決方法の1
つが、ターゲット命令のアドレスを記憶するブランチタ
ーゲットバッファを使用することである。ブランチター
ゲットバッファに記憶されるターゲット命令はブランチ
命令のアドレスに従って索引付けされている。ブランチ
命令の復号中に、そのブランチ命令のアドレスを求めて
ブランチターゲットバッファを探索する。アドレスが見
出されれば、ブランチ命令の実行時にターゲット命令が
復号可能な状態となっているように、ブランチターゲッ
トバッファに記憶されているそのターゲットアドレスに
あるターゲット命令を取出す。後に開発されたブランチ
ターゲットバッファはターゲット命令をも記憶する機能
を含んでいた。米国特許第4,725,947号を参
照。どの型のブランチターゲットバッファについても、
ブランチ命令の実行に続いてターゲット命令を実行す
る。
【0004】従来の技術では、ブランチフォールディン
グ(BF)方式によって2つの命令を一体に「たたみ込
む」ことができる。この方式は、ブランチ命令と、それ
に先立つ非ブランチ命令という2種類の命令の並列実行
を可能にする。この方式の限界の1つは、2つのブラン
チ命令が相次いで現れる場合に利用できないことであ
る。
【0005】もう1つの制限は、条件付きブランチ命令
が、通常、分岐すべきか否かについての判定が実行可能
になる前の先行命令の実行の結果に左右されてしまうこ
とである。先行命令の実行が完了すれば、条件の状態が
わかり、分岐を行うことができる。条件付きブランチ命
令の復号直後にターゲット命令を利用できる場合であっ
ても、ターゲット命令の復号、続いて実行を開始すべき
か、あるいは、命令メモリにおいてブランチ命令に続い
ている命令の実行を継続すべきかの判定は、条件付きブ
ランチ命令が実行されるまではできないのである。条件
付きブランチ命令はそれに先立つ命令の実行を待たなけ
ればならないので、条件付きブランチ命令によるブラン
チフォールディングは誤った分岐を招くおそれがある。
従来より、条件付きブランチ命令の影響を最小限に抑え
るために多種多様な方法が採用されてきた。そのような
方式の1つによれば、パイプラインにおいてブランチ命
令のすぐ後に遅延命令を入力する。米国特許第4,77
7,587号を参照。これにより、遅延命令の復号中に
ブランチ命令を実行すると共に、分岐の判定を下すこと
が可能になる。ブランチ命令の実行が完了したときに
は、分岐すべきか否かの判定を知ることができる。従っ
て、遅延命令の実行が完了した時点で、命令プロセッサ
は、条件を満たしたか否かに応じてデコーダに正しい命
令を入力できる。パイプラインの実行が中断されないと
はいえ、ブランチ命令の実行に伴う遅延と、遅延命令に
よるさらに大きな遅延のために、命令の実行は遅くなっ
てしまう。
【0006】条件付きブランチ命令の影響をできる限り
少なくするもう1つの方式は、(ブランチのヒストリー
に基づいて)時間の上で先行してブランチの発生を予測
し、誤った予測を修正するか、ブランチの方向が確認さ
れるまで複数の命令を取出すか、又はブランチの影響を
遅らせるというものである。ところが、ブランチ命令を
実行するときの全体的な遅延は依然として残っている。
【0007】
【発明が解決しようとする課題】従って、本発明の目的
は、パイプライン命令プロセッサにおいてブランチ命令
が発生させる遅延を最小限に抑え、場合によっては、条
件付き、無条件にかかわらず、ブランチ命令の実行に伴
う遅延を全くなくしてしまうような装置及び方法を提供
することである。
【0008】
【課題を解決するための手段】ブランチ命令及びそのタ
ーゲット命令の実行を含めて、命令メモリに記憶されて
いる命令を並行して実行する命令プロセッサ装置と、そ
の方法を説明する。命令プロセッサは、ブランチ命令に
対応するターゲット命令と、ターゲットアドレスとを記
憶するブランチターゲットバッファを含む。ターゲット
命令のデータは、ブランチ命令に先立つ命令のアドレス
に従って索引付けされている。ブランチターゲットバッ
ファには、ブランチを取ったか否かを指示するヒストリ
ーデータも記憶されている。命令プロセッサは、メモリ
から実行に備えて命令を先取りする装置を含む。命令プ
ロセッサは、命令を復号する第1のデコーダと、続いて
それらの命令を実行する第1の実行装置とをさらに含
む。
【0009】ある命令の復号中、その命令の後にブラン
チ命令が続いているか否かを判定するために、論理装置
はその命令のアドレスを求めてブランチターゲットバッ
ファを探索する。一致が見出されなければ、論理装置は
マルチプレクサに先取り装置から第1のデコーダへ次の
命令を送り出すように指示し、第1の実行装置はその命
令を実行する。一致が見出された場合には、第1のデコ
ーダで現在復号している命令の後にブランチ命令(別の
命令であることも考えられる)が続いており、論理装置
は、ブランチターゲットバッファに記憶されている情報
から、ブランチに関わる予測ターゲット命令と、そのア
ドレスとを発生する。次に、論理装置はマルチプレクサ
に次の命令であるブランチ命令を第2のデコーダを介し
て第2の実行装置へ送り出すと共に、予測ターゲット命
令を第1のデコーダを介して第1の実行装置へ送り出す
ように指示する。そこで、ブランチ命令とターゲット命
令が同一のサイクルの中で実行されることになる。従っ
て、ブランチ命令はサイクルなしで実行されるように見
える。
【0010】第2の実行装置は、ブランチ命令に関わる
実際ブランチターゲット命令を発生し、実際ブランチタ
ーゲットをブランチターゲットバッファから取出した予
測ターゲット命令と比較すると共に、分岐が発生した実
際ブランチ命令のターゲットアドレスをブランチターゲ
ットバッファからの予測ブランチターゲットアドレスと
比較する比較論理をさらに含む。実際ターゲット命令が
ブランチターゲットバッファからの予測ターゲット命令
と同一でない又はその実際ターゲット命令のアドレスが
予測ブランチターゲット命令のアドレスと同一でない場
合には、比較論理は第1の実行装置へ「停止」信号を送
信し、先取り装置へは、先取り装置が実際ブランチター
ゲット命令アドレスにある実際ブランチターゲット命令
を取出すべきであることを指示する取出し信号を送信す
る。第1の実行装置は、停止信号を受信すると、予測タ
ーゲット命令の実行を打切る。
【0011】
【実施例】命令メモリに記憶されている命令を実行する
命令プロセッサ及び方法、特に、サイクルなしの状態で
いくつかのブランチ命令を実行する命令プロセッサ及び
方法を説明する。以下の説明中、本発明を完全に理解さ
せるために特定のコンピュータ素子、特定のビット長さ
などの特定の事項を数多く詳細に挙げるが、そのような
特定の詳細な事項がなくとも本発明を実施しうることは
当業者には自明であろう。また、場合によっては、本発
明を無用にわかりにくくするのを避けるために、周知の
素子、構造及び方式を詳細には示さないことがある。
【0012】本発明の概要 拡張ブランチターゲットバッファ(BTB)の総体的な
概念は、ブランチターゲット命令と並行して制御流れ
(CF)命令(たとえば、JCC,JMP,RET,C
ALLなど)を発行し且つそれを実行するということで
ある。(ここで論じる特定の命令は、Intel Co
rporationの「X86」シリーズのプロセッサ
に対応する命令であるが、本発明がそれらの命令に限定
されないことは当業者には自明であろう。)ブランチタ
ーゲットバッファはターゲット命令とそのアドレスの双
方を記憶しており、「フォワードフォールディング」と
呼ばれる方式を利用して、制御流れ命令とそのターゲッ
ト命令の双方を同時に実行する。
【0013】本発明の命令プロセッサ10の全体ブロッ
ク線図を図1に示す。命令プロセッサ10は現在はIn
tel486マイクロプロセッサで使用されている命令
プロセッサを表わすが、他のアーキテクチャにも適用可
能である。通常の命令実行中、先取り待ち行列12によ
り命令キャッシュ(図示せず)から経路11を介して命
令を取出し、先取りバッファに記憶する。先取り待ち行
列12は命令をマルチプレクサ14へ送り出し、マルチ
プレクサ14は命令を経路14aを介して実行コア20
に供給する。命令は経路15を介して実行コアデコーダ
21に入力する。先取り待ち行列は、スペース(1行分
の長さ)が利用可能となるたびに、キャッシュの1つの
命令行(いくつかの命令を含む)を先取りする。復号
後、コアデコーダ21は命令を実行装置22へ送信して
実行させる。個々の命令を実行している間、コアデコー
ダ21は次に続く命令を先取り待ち行列12から取出
す。
【0014】コアデコーダ21は2段デコーダである。
コアデコーダ21における復号の第1の段階では、命令
のアドレスを発生する。ブランチターゲットバッファ
(BTB)ルックアップメカニズム41は、コアデコー
ダ21における命令の第1段階復号に応答して、復号中
の命令のアドレスを求めてブランチターゲットバッファ
(BTB)42を探索する。
【0015】ブランチターゲットバッファ(BTB)4
2は、たとえば、制御流れブランチセット(CFS)と
呼ばれる64個の別々のブランチングデータセットを保
持している。各ブランチセットの構造を図2に示す。一
般に好ましい実施例では、ブランチセットは、ブランチ
命令の直前の命令の命令アドレスを表わす32ビット
(IPn−1)と,予測ブランチターゲット命令を表わ
す初めの3バイト(24ビット)(n+1)と,予測ブ
ランチターゲット命令の命令アドレス(IPn+1)
と,2ビットのヒストリー(H)と,有効ビット(V)
とを含む。
【0016】ターゲット命令及びターゲット命令アドレ
スのブランチ予測はブランチヒストリーに基づいてい
る。BTBルックアップメカニズム41は、次の時点で
ブランチを取るか否かを予測するために、各ブランチを
取ったか否かの先行シーケンスを使用する。有効ビット
はブランチターゲットバッファ42の記述項の有効性を
指示する。
【0017】命令n−1(制御流れ命令の1つ前の命
令)を復号すると、制御流れ(CF)命令のアドレスI
Pnと、BTB42からの制御流れ命令に続く命令n+
1と、BTB42からの予測ターゲット命令のアドレス
IPn+1という3つの項目を利用できるようになる。
次のサイクルでは、ブランチ命令と予測ターゲット命令
を利用できる。ターゲット命令のアドレスIPn+1を
含む新たなキャッシュ記述項の先取りも、ヒストリー
(H)ビットが正(00又は01)である場合には実行
される。ヒストリー(H)ビットは、JMP,RET及
びJCC命令を取ると予測されるときには常に真であ
る。
【0018】通常動作中、先取り待ち行列12は命令キ
ャッシュから命令の流れを取出す。マルチプレクサ14
はそれらの命令を経路14aを介して実行コア20へ送
る。命令がコアデコーダ21により復号されていると
き、BTBルックアップメカニズム41は復号中の命令
のアドレスに対応するBTB42の記述項を探索する。
【0019】n−1命令の復号中にBTBルックアップ
メカニズム41がBTB42の記述項を見出さないとき
には、コアデコーダ21は復号を完了し、実行装置22
は復号された命令を実行する。この実行と同時に、コア
デコーダ21では次の命令nを復号する。次の命令が本
当にブランチ命令であり、そのために、BTB42に対
応する記述項をもたない(命令n−1がBTB42中に
一致する相手を有していなかったため)ならば、コアデ
コーダ21はブランチ命令を復号し、実行装置22がそ
れを実行する。実行の結果、すなわち、ブランチターゲ
ット命令のアドレスIPn+1と、取出したブランチタ
ーゲット命令の初めの3バイトn+1と、ブランチ命令
のアドレスとを保持する。ブランチセット作成メカニズ
ム23はブランチ命令の前の命令のアドレス(IPn−
1)と,取出したブランチターゲット命令の初めの3つ
のバイト(n+1)と,ブランチターゲット命令のアド
レス(IPn+1)と,ヒストリービット(H)と,有
効ビット(V)−これらはBTB42における1つのブ
ランチセットに対応する−を記憶する。たとえば、BT
B42が一杯になった場合、BTB置換えメカニズム4
3はBTB42のブランチセットの1つをブランチセッ
ト作成メカニズム23が作成したブランチセットと無作
為に置換えるのである。ただし、置換えメカニズムがラ
ンダムである必要はない。
【0020】n−1命令(ブランチ命令の前の命令)の
復号中にBTBルックアップメカニズム41がBTB4
2で一致する相手となる記述項を見出すと、ヒットが起
こる。この場合には、マルチプレクサ14はBTB42
からの予測ターゲット命令を経路14b及び15を介し
て実行コア20へ送る。同時に、ブランチ命令は先取り
待ち行列12から経路14c及び16を介して飛越し実
行装置30に供給される。次に、フォワードフォールデ
ィングを利用して、それら2つの命令を並行して実行す
る。飛越し実行装置30はBTB42の内容の正しさを
検証するためにブランチ命令を実行する。制御流れセッ
トがBTB42にあり、ターゲット命令が正しく予測さ
れていれば、JCCやJMPなどのブランチ命令の実行
はターゲット命令の実行と並行することになるので、そ
のようなブランチ命令をサイクルなしで有効に実行でき
る。
【0021】命令比較器論理44と、飛越し実行装置3
0にあるアドレス比較器論理33は、予測の誤り又は自
己修飾コードによる誤った実行を阻止するために予測タ
ーゲット命令とアドレスの正しさをそれぞれ検証する。
ターゲット命令とターゲットアドレスは共に2つの別個
のステップを経て検査される。初めに、BTB42で一
致する相手であるブランチセットを検出した直後に、命
令キャッシュから実際のターゲット命令を取出す。命令
比較器論理44は、実際ターゲット命令をBTB42に
ある予測ターゲット命令であるn+1命令の24ビット
と比較する。命令比較器論理44が不一致を見出すと、
正規取出しを開始し、予測ブランチターゲット命令の実
行を停止するために、実行装置22へ打切り信号を送信
する。第2に、飛越し実行装置30で実際ターゲットア
ドレスを計算する。アドレス比較器論理33はそのよう
にして計算されたアドレスをBTB42に記憶されてい
る予測ターゲットアドレスIPn+1と比較する。アド
レス比較器論理33が不一致を見出したならば、正規取
出しを開始し、予測ブランチターゲット命令の実行を停
止するために、打切り信号を経路19を介して実行装置
22へ送信する。この状況では、本発明の性能上のペナ
ルティは拡張ブランチターゲットバッファを採用してい
ないシステムの実行時間と等しい。一致が起こった場合
には、それ以降の取出しは不要になり、命令の実行はタ
ーゲット命令のアドレスから継続してゆく。
【0022】ブランチ命令の実行後、実行されたターゲ
ット命令とそのアドレス,そのブランチ命令に先行して
いた命令のアドレス,並びにブランチを取ったか否かを
指示するデータをブランチセット作成メカニズム23
(及び−BTB42が一杯である場合には−BTB置換
えメカニズム43)を使用して、ブランチターゲットバ
ッファに記憶させる。
【0023】命令プロセッサは2つのブランチ命令を順
次実行することもできる。コアデコーダ21でターゲッ
ト命令を復号しているときに、ブランチターゲットバッ
ファルックアップメカニズムはターゲット命令の命令ア
ドレスを求めてブランチターゲットバッファ42を探索
している。一致が見出され、従って、第2のブランチ命
令が第1のブランチ命令の後に続くことが指示される
と、ブランチターゲットバッファ42から第2のターゲ
ット命令と、第2のターゲット命令に対応するアドレス
とを発生する。第1のブランチ命令の場合と同様に、第
2のブランチ命令と第2の予測ブランチ命令を飛越し実
行コア30と、実行コア20とへそれぞれ送る。実行装
置22は第2のターゲット命令を実行し、一方、飛越し
実行装置32は第2のブランチ命令を実行する。2つの
ブランチ命令を順次実行することにより得られる性能上
の利点は、単一のブランチ命令を実行するときと同じで
ある。
【0024】本発明の動作例 一般に好ましい実施例のブランチターゲットバッファは
3種類の命令、すなわち、JCC,JMP及びRETを
含む。JCCは、条件が適合した場合に命令プロセッサ
10がターゲットアドレスへ分岐する条件付き飛越しで
ある。BTBによりブランチを取るものと予測される場
合のJCC命令の実行のタイミング流れの1例を図3に
示す。図4は、フォワードフォールディングを伴うブラ
ンチターゲットバッファを使用するシステムと、使用し
ないシステムとにおけるJCC指令の実行時間を比較し
たものである。JMP命令は、戻り情報を記憶せずにプ
ログラム制御を異なる命令に移行する無条件飛越しであ
る。命令プロセッサ10によるJMP命令実行のタイミ
ング流れの例を図5に示す。図6は、フォワードフォー
ルディングを伴うブランチターゲットバッファを使用す
るシステムと、使用しないシステムにおけるJMP指令
の実行時間を比較したものである。RET命令は、プロ
グラムの制御をプログラムスタックに押込まれた戻りア
ドレスに移行することにより命令プロセッサにプログラ
ムの実行を継続させる。命令プロセッサ10によるRE
T命令実行のタイミング流れの例を図7に示す。この例
では、各段階の全ての命令は1サイクルで実行されてい
る。図8は、フォワードフォールディングを伴うブラン
チターゲットバッファを使用するシステムと、使用しな
いシステムとにおけるRET指令の実行時間を比較した
ものである。
【0025】図3を参照すると、第1のサイクルt0
1(括弧51により示す)の第1の段階(PH1)で
実行コア20のコアデコーダ21の第1段(ID1)に
あるのは、ブランチ命令に先行する命令に先立つ命令n
−2である。
【0026】第2のサイクルt1〜t2(括弧52により
示す)の第1の段階では、n−2命令はコアデコーダ2
1の第2段の復号を継続している(ID2)。同時に、
ブランチ命令に先行する命令n−1はコアデコーダ21
の第1段に入っている。また、第2のサイクルの第1の
段階では、ルックアップメカニズム41がブランチター
ゲットバッファ42においてn−1命令に関わるブラン
チセットの場所を限定して、予測ターゲット命令n+1
と、ターゲット命令n+1のアドレスとを発生する。さ
らに、第2のサイクルの第2の段階(PH2)に入る
と、予測ターゲット命令n+1の取出しのために線形ア
ドレスを計算する(ILAgen)と共に、データ取出
し命令n−2について線形アドレスを計算する(DLA
gen)。
【0027】第3のサイクルt2〜t3(括弧53により
示す)の第1の段階では、ブランチ命令に先立つ命令n
−1はコアデコーダ21の第2段における復号を継続し
ている(ID2)。同時に、ブランチ命令nと予測ター
ゲット命令n+1は、飛越し実行コア30と実行コア2
0の第1段における初期復号をそれぞれ開始する。ま
た、この第3のサイクルの間に、n−2命令について変
換索引バッファで仮想アドレスから物理アドレスを発生
し、データキャッシュからの取出しが行われる(TLB
/DC)。同様に、予測ターゲット命令n+1について
も物理アドレスを発生し、命令n+1を含むキャッシュ
行を命令キャッシュから取出す(TLB/IC)。次の
サイクルで、この命令をn+1命令を保持しているブラ
ンチターゲットバッファ記述項と一致の有無を求めて比
較することになる(比較はアドレス比較器論理33で実
行される)。ブランチ命令nに続く順次命令流れの待ち
行列を表わす先取りのnotakQに、取上げられない
ターゲット命令(n+1)が現れる。さらに、第3のサ
イクルの第2の段階の間には、ブランチ命令nに先立つ
データ取出し命令n−1について線形アドレスを計算す
ると共に、命令n−2を実行する(D(E))。
【0028】第4のサイクルt3〜t4(括弧54により
示す)の第1の段階では、ブランチ命令nと予測ターゲ
ット命令n+1は飛越しデコーダ31とコアデコーダ2
1の第2段における復号をそれぞれ継続している。先の
サイクルでキャッシュ行(命令n+1と、おそらくは命
令n+2とを含む)を取出してあるので、ターゲット命
令に続く命令n+2もコアデコーダ21の第1段の復号
に入ることができる。また、第4のサイクルの第2の段
階では、ブランチターゲット命令の線形アドレスを発生
する(ILAgen)と共に、命令n+1に関するデー
タ取出しのための線形アドレスを発生する(DLAge
n)。第4のサイクルの2つの段階を通して、ブランチ
命令nに先立つ命令n−1について(必要に応じて)メ
モリアクセスの物理アドレス発生及びデータキャッシュ
取出しを行い、コア実行装置22は命令n−1を実行す
る(D(E))。
【0029】第5のサイクルt4〜t5(括弧55により
示す)の第1の段階では、命令n+3はコアデコーダ2
1の第1段の復号を開始し、一方、命令n+2は第2段
の復号を継続している。また、第1の段階の間に、ブラ
ンチ命令nのターゲットアドレスについて物理アドレス
の発生が起こる(TLB/IC)。このターゲットアド
レスをブランチターゲットバッファのアドレスと比較し
て、一致の有無を知る。飛越し実行装置32はフラグを
検査し、ブランチ命令nを実行する(DJ)。第5のサ
イクルの間に命令n+1について(命令n+1がメモリ
命令である場合に、必要に応じて)物理アドレスの発生
と、対応するデータキャッシュからの取出しが行われ
(TLB/DC)、第5のサイクルの第2の段階でそれ
を実行する(D(E))。従って、同一のサイクルの間
に、ブランチ命令nと予測ターゲット命令n+1の双方
を同時に実行したことになる。
【0030】第6のサイクルt5〜t6(括弧56により
示す)では、命令n+4又は取られなかった命令(n+
1)のいずれかがコアデコーダ21の第1段に入る。ブ
ランチターゲットバッファの予測が正しかったならば、
命令n+4を復号する。予測が不正確であったならば、
取られなかったブランチ命令(n+1)を復号する。
【0031】JCC実行時間を図4に提示する。BTB
ヒットの欄はブランチターゲットバッファにおける一致
(1)又はミス(0)を表わす。予測の欄は予測を取っ
たか又は取らなかったかを指示する。実際のブランチは
実際の欄に現れる(取った場合はT,取らなかった場合
はN)。最後の2つの欄は、ブランチターゲットバッフ
ァ及びフォワードフォールディングを採用するシステム
と、それらを採用しないシステムにおける実行時間(サ
イクル数)を比較したものである。表に示す通り、ブラ
ンチターゲットバッファにおける一致に基づいてブラン
チ予測を実行し、予測が正しかった場合、1つ又は3つ
のサイクルが節約される。ブランチを取らないと予測し
たが、実際には取るべきであった場合には、システムは
ブランチ命令は同じ長さの時間の中で実行する。ブラン
チに関する唯一のペナルティは、ブランチを取ると予測
したが、実際には取らなかった場合に起こる。この状況
では、フォワードフォールディングを採用するBTBを
具備しないシステムは、通常、取られないJCC命令を
1サイクルで実行するであろうが、現時点では3つのサ
イクルを使用しなければならない。正しい予測の確率は
高いので、取られなかった誤りのブランチによって起こ
る性能の劣化はごく少ない。
【0032】JMP命令のタイミング流れを図5に示
す。このタイミング流れは、取る/取らないの可能性を
除いては図3に示したJCC命令のタイミング流れと同
一である。JMP命令の場合、JMPターゲットアドレ
スは常に正しいと予測される。しかしながら、JMP命
令から制御を移行する前に、JMPのアドレスは評価及
びブランチターゲットバッファにあるアドレスとの比較
を要求する。そこで、図5を参照すると、ブランチ命令
に先行する命令に先立つ命令n−2は、第1のサイクル
0〜t1(括弧61により示す)の第1の段階(PH
1)の間に実行コア20のコアデコーダ21の第1段に
はいる(ID1)。
【0033】第2のサイクルt1〜t2(括弧62により
示す)の第1の段階では、n−2命令はコアデコーダ2
1の第2段の復号を継続している(ID2)。同時に、
ブランチ命令に先立つ命令n−1はコアデコーダ21の
第1段に入る。また、第2のサイクルの第1の段階の間
に、ルックアップメカニズム41はブランチターゲット
バッファ42においてn−1命令に関するブランチセッ
トの場所を限定して、予測ターゲット命令n+1及びタ
ーゲット命令n+1のアドレスを発生する。さらに、第
2のサイクルの第2の段階(PH2)では、予測ターゲ
ット命令n+1の取出しのために線形アドレスを計算す
る(ILAgen)と共に、データ取出し命令n−2に
ついて線形アドレスを計算する(DLAgen)。
【0034】第3のサイクルt2〜t3(括弧63により
示す)の第1の段階では、ブランチ命令に先立つ命令n
−1はコアデコーダ21の第2段の復号を継続している
(ID2)。同時に、ブランチ命令nと予測ターゲット
命令n+1は飛越し実行コア30及び実行コア20の第
1段の初期復号をそれぞれ開始する。また、第3のサイ
クルの間には、n−2命令について物理アドレスの発生
とデータキャッシュからの取出しが起こる(TLB/D
C)。さらに、第3のサイクルの間には、命令n+1を
含むキャッシュ行の取出しが起こり、一方、変換索引バ
ッファではその命令の物理アドレスを発生する(TLB
/IC)。その上に、第3のサイクルの第2の段階で
は、ブランチ命令nに先立つデータ取出し命令n−1に
ついて線形アドレスを計算し、命令n−2を実行する
(D(E))。
【0035】第4のサイクルt3〜t4(括弧64により
示す)の第1の段階では、ブランチ命令nと予測ターゲ
ット命令n+1は飛越しデコーダ31と、コアデコーダ
21の第2段の復号をそれぞれ継続している。ターゲッ
ト命令に続く命令n+2もコアデコーダ21の第1段の
復号に入る。また、第4のサイクルの第2の段階では、
ブランチ命令の線形アドレスを発生する(ILAge
n)と共に、命令n+1についてデータ取出しのための
線形アドレスを発生する(DLAgen)。ブランチタ
ーゲット命令に先立つ命令n−1について(必要に応じ
て)第4のサイクルの2つの段階を通してメモリアクセ
スの物理アドレス発生と、データキャッシュからの取出
しが実行され、さらに、コア実行装置22によりこの命
令n−1を実行する(D(E))。
【0036】第5のサイクルt4〜t5(括弧65により
示す)の第1の段階では、命令n+3がコアデコーダ2
1の第1段の復号を開始し、一方、命令n+2は第2段
の復号を継続している。また、このサイクルの間に、ブ
ランチ命令nについて命令取出しが起こる(TLB/I
C)。第5のサイクルでは、予測ターゲット命令n+1
について(必要に応じて)物理アドレスの発生と、デー
タキャッシュからの取出しを行い、第5のサイクルの第
2の段階においてこの命令n+1を実行する(D
(E))。さらに、第5のサイクルの第2の段階の間
に、飛越し実行装置32はブランチ命令nを実行する
(DJ)。従って、ブランチ命令nと予測ターゲット命
令n+1の2つは同じサイクルの中で同時に実行される
ことになる。最後に、第6のサイクルt5〜t6(括弧6
6により示す)では、n+3命令がコアデコーダ21に
おける第2段の復号を継続している。
【0037】JMP実行時間を図6に示す。BTBヒッ
トの欄はブランチターゲットバッファにおける一致
(1)又はミス(0)を示す。ブランチは常に正と予測
されるので、予測の欄と実際ブランチの欄は意味をもた
ない。最後の2つの欄は、ブランチターゲットバッファ
及びフォワードフォールディング方式を採用するシステ
ムと、採用しないシステムとにおける実行時間を比較し
たものである。表に示す通り、ブランチターゲットバッ
ファで一致が見出された場合、JMP命令の実行によっ
て3つのサイクルが不要になる。また、ブランチターゲ
ットバッファに一致する相手が存在していないときに
も、JMP命令を実行するために要求されるサイクルの
数は同一であるので、フォワードフォールディングを伴
うブランチターゲットバッファを使用することに何の不
利益もない。
【0038】RET命令のタイミング流れを図7に示
す。Intelの486マイクロプロセッサの場合、R
ET命令は5サイクルで実行されるのが普通であるが、
フォワードフォールディングを伴うブランチターゲット
バッファを採用する本発明は正確な予測によってRET
命令を2サイクルで実行できる。そこで、図7を参照す
ると、第1のサイクルt0〜t1(括弧71により示す)
の第1の段階(PH1)で、ブランチ命令に先立つ命令
の1つ前の命令n−2は実行コア20のコアデコーダ2
1の第1段(ID1)に入っていることがわかる。
【0039】第2のサイクルt1〜t2(括弧72により
示す)の第1の段階では、n−2命令はコアデコーダ2
1の第2段の復号を継続してる(ID2)。同時に、ブ
ランチ命令に先立つ命令n−1はコアデコーダ21の第
1段に入っている。また、第2のサイクルの第1の段階
の間に、ルックアップメカニズム41はブランチターゲ
ットバッファ42においてn−1命令に関わるブランチ
データセットの場所を限定して、予測ターゲット命令n
+1を発生する。さらに、第2のサイクルの第2の段階
(PH2)では、データ取出し命令n−2について線形
アドレスを計算する(DLAgen)。
【0040】第3のサイクルt2〜t3(括弧73により
示す)の第1の段階では、ブランチ命令に先立つ命令n
−1はコアデコーダ21の第2段の復号を継続している
(ID2)。同時に、ブランチ命令nと予測ターゲット
命令n+1は飛越し実行コア30と、実行コア20の第
1段における初期復号をそれぞれ開始する。さらに、第
3のサイクルの間には、n−2命令について物理アドレ
スの発生と、データキャッシュからの取出しを実行す
る。また、第3のサイクルの第2の段階では、ブランチ
命令nに先立つデータ取出し命令n−1について線形ア
ドレスを計算すると共に、命令n−2を実行する(D
(E))。
【0041】第4のサイクルt3〜t4(括弧74により
示す)の第1の段階では、ブランチ命令nは飛越しデコ
ーダ31の第2段の復号を継続している。また、第4の
サイクルの第2の段階の間には、ブランチ命令nの線形
アドレスを発生する(ILAgen)。第4のサイクル
の2つの段階を通して、ブランチ命令nに先立つ命令n
−1について物理アドレスの発生と、データキャッシュ
から取出しを実行し、また、コア実行装置22は命令n
−1を実行する(D(E))。第5のサイクルt4〜t5
(括弧75により示す)では、ブランチ命令nについて
命令の取出しを実行する(TLB/IC)。また、第6
のサイクルt5〜t6の第1の段階では、命令n+2がコ
アデコーダ21の第1段の復号を開始し、一方、命令n
+1は第2段の復号を継続している。さらに、第6のサ
イクルの第2の段階では、ブランチ命令nの線形アドレ
スを発生する(ILAgen)と共に、データ取出し命
令n+1の線形アドレスを発生する(DLAgen)。
【0042】第7のサイクルt6〜t7(括弧77により
示す)の第1の段階では、命令n+3がコアデコーダ2
1の第1段の復号を開始し、一方、命令n+2は第2段
の復号を継続している。また、このサイクルの間に、ブ
ランチ命令nについて物理アドレスの発生と、命令取出
しを実行する(TLB/IC)。第5のサイクルでは、
予測ターゲット命令n+1について物理アドレスの発生
と、データキャッシュからの取出しを実行する。さら
に、第5のサイクルの第2の段階では、命令n+2につ
いて線形アドレスを発生し、飛越し実行装置32はブラ
ンチ命令nを実行する(DJ)。同様に、第5のサイク
ルの第2の段階の間に、予測が正しかったならばターゲ
ット命令n+1を実行する(D(E))。ブランチター
ゲットバッファからの予測が(戻りアドレスが不正確で
あったために)誤りであった場合には、ノーオペレーシ
ョン(NOP)となり、次のサイクルでは、新たな戻り
アドレスの命令の処理を開始しなければならない。従っ
て、予測が正しければ、ブランチ命令nと予測ターゲッ
ト命令n+1が同一のサイクルの中で同時に実行される
ことになる。
【0043】最後に、第8のサイクルt7〜t8(括弧7
8により示す)では、予測が誤りでない限り、命令n+
4はコアデコーダ21の第1段の復号を開始する。ま
た、命令n+2について物理アドレスの発生と、データ
キャッシュから取出しを実行する。予測が正しくなかっ
た場合には、正しい戻りアドレスにおける新たな命令が
コアデコーダ21の第1段の復号を開始し、データ取出
し又は物理アドレス発生の動作は起こらない(NO
P)。
【0044】RETの実行時間を図8に示す。BTBヒ
ットの欄はブランチターゲットバッファにおける一致
(1)又はミス(0)を示す。RET命令は様々に異な
る呼出しに対して存在しうるので、予測の欄は正又は誤
となる。終わりの2つの欄は、ブランチターゲットバッ
ファ及びフォワードフォールディング方式を採用するシ
ステムと、採用しないシステムとにおける実行時間をサ
イクル数によって比較したものである。表に示すとお
り、ブランチターゲットバッファで一致が見出され且つ
RETが個別呼出しに関わっていた場合、RET命令の
実行によって3つのサイクルが不要になる。また、RE
Tが別の呼出しに関わっていた場合も、RET命令を実
行するために要求されるサイクルの数は同一であるの
で、フォワードフォールディングを伴うブランチターゲ
ットバッファを使用することに不利益はない。さらに、
ブランチターゲットバッファに一致する相手がないとき
には、RET命令をフォワードフォールディングを伴う
ブランチターゲットバッファを採用するシステムで実行
しても、採用しないシステムで実行しても全く不利益は
ない。
【0045】好ましい実施例を3つの命令に対応して実
現されるものとしてのみ示したが、そのような限定は全
くない。本発明は特許請求の範囲によってのみ限定され
る。
【0046】以上、ブランチ命令をサイクルなしで実行
する命令プロセッサ及びその方法を説明した。
【図面の簡単な説明】
【図1】本発明の命令プロセッサアーキテクチャのブロ
ック線図。
【図2】本発明のブランチターゲットバッファにおける
個々の記述項のフォーマットを示す図。
【図3】条件付きブランチ(JCC)命令の処理中のパ
イプラインの段階のタイミング図。
【図4】フォワードフォールディングを伴うブランチタ
ーゲットバッファを使用する命令プロセッサと、使用し
ない命令プロセッサとによるJCC命令の実行時間を比
較した図表。
【図5】飛越し(JMP)命令の処理中のパイプライン
の段階のタイミング図。
【図6】フォワードフォールディングを伴うブランチタ
ーゲットバッファを使用する命令プロセッサと、使用し
ない命令プロセッサとによるJMP命令の実行時間を比
較した図表。
【図7】戻り(RET)命令の処理中のパイプラインの
段階のタイミング図。
【図8】フォワードフォールディングを伴うブランチタ
ーゲットバッファを使用する命令プロセッサと、使用し
ない命令プロセッサによるRET命令の実行時間を比較
した図表。
【符号の説明】
10 命令プロセッサ 12 先取り待ち行列 14 マルチプレクサ 20 実行コア 21 コアデコーダ 22 コア実行装置 23 ブランチセット作成メカニズム 30 飛越し実行コア 31 飛越しデコーダ 32 飛越し実行装置 33 アドレス比較器論理 41 BTBルックアップメカニズム 42 ブランチターゲットバッファ(BTB) 43 BTB置換えメカニズム 44 命令比較器論理
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ヤーコフ・ヤーリ イスラエル国 31015 ハイファ・ピイオ ーボックス1659 (番地なし)

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】 第1の実行装置及び第2の実行装置と、
    ブランチ命令のブランチ命令アドレスに先立つ命令のア
    ドレス,ブランチ命令に対応するターゲット命令,前記
    ターゲット命令のアドレス及び前記ブランチ命令を先に
    取ったか否かを指示するデータをそれぞれ含んでいる複
    数のブランチデータセットを記憶するブランチターゲッ
    トバッファとを具備し、複数のブランチ命令を含み、命
    令メモリに記憶されていて、前記命令メモリから先取り
    装置により先取りバッファへ取出される命令を実行する
    パイプライン命令プロセッサによってブランチを実行す
    る方法において, (a)前記先取りバッファから、ブランチ命令に先立つ
    命令のアドレスを取出す過程と; (b)前記命令を復合し、前記命令の前記アドレスに対
    して索引付けされたブランチデータセットを求めて前記
    ブランチターゲットバッファを探索し、前記ブランチデ
    ータセットの場所が限定され、前記ブランチ命令が前記
    1つの命令の後に続いていることが前記探索により判明
    した場合には、前記ブランチ命令に関わる前記ブランチ
    データセットにそれぞれ含まれている前記ブランチター
    ゲット命令及びブランチターゲット命令アドレスから予
    測ターゲット命令と、予測ターゲットアドレスとを発生
    する過程と; (c)前記第2の実行装置で前記ブランチ命令を復号し
    且つ前記第1の実行装置で前記予測ターゲット命令を復
    号しながら、前記第1の実行装置で前記命令を実行する
    過程と; (d)前記予測ターゲット命令が前記ブランチ命令の実
    行と並行して1つのサイクルの中で実行されるように、
    前記第2の実行装置で前記ブランチ命令を実行し且つ前
    記第1の実行装置で前記予測ターゲット命令を実行する
    過程とから成る方法。
  2. 【請求項2】 第1の実行装置及び第2の実行装置と、
    ブランチ命令のブランチ命令アドレスに先立つ命令のア
    ドレス,ブランチ命令に対応するターゲット命令,前記
    ターゲット命令のアドレス及び前記ブランチ命令を先に
    取ったか否かを指示するデータをそれぞれ含んでいる複
    数のブランチデータセットを記憶するブランチターゲッ
    トバッファとを具備し、命令メモリの中で第1のブラン
    チ命令が第2のブランチ命令に先立つような状態で複数
    のブランチ命令を含み、前記命令メモリに記憶されてい
    て、前記命令メモリから先取り装置により先取りバッフ
    ァへ取出される命令を周期的に実行するパイプライン命
    令プロセッサによって、第1のブランチ命令と、第2の
    ブランチ命令とを引き続いて実行する方法において, (a)前記先取りバッファから、前記第1のブランチ命
    令に先立つ命令のアドレスを取出す過程と; (b)前記命令を復号し、前記命令の前記アドレスに対
    して索引付けされたブランチデータセットを求めて前記
    ブランチターゲットバッファを探索し、前記ブランチデ
    ータセットの場所が限定され、前記第1のブランチ命令
    が前記1つの命令の後に続いていることが前記探索によ
    り判明した場合には、前記第1のブランチ命令に関わる
    前記ブランチデータセットにそれぞれ含まれている前記
    ブランチターゲット命令及びブランチターゲット命令ア
    ドレスから第1の予測ターゲット命令と、第1の予測タ
    ーゲットアドレスとを発生する過程と; (c)前記第1の実行装置で前記命令を実行する一方
    で、前記第1のブランチ命令及び前記第1の予測ターゲ
    ット命令を復号し且つ前記第1のブランチ命令の前記ア
    ドレスに対して索引付けされたブランチデータセットを
    求めて前記ブランチターゲットバッファを探索し、前記
    ブランチデータセットの場所が限定され、前記第1のブ
    ランチ命令の後に前記第2のブランチ命令が続いている
    ことが前記探索によって判明した場合には、前記第2の
    ブランチ命令に関わる前記ブランチデータセットにそれ
    ぞれ含まれている前記ブランチターゲット命令及びブラ
    ンチターゲット命令アドレスから第2の予測ターゲット
    命令と、第2の予測ターゲットアドレスとを発生する過
    程と; (d)前記第1のブランチ命令を実行する一方で、前記
    第1の実行装置で前記第2の予測ブランチターゲット命
    令を復号し且つ前記第2の実行装置で前記第2のブラン
    チ命令を復号する過程と; (e)前記第2の予測ターゲット命令が実行される間に
    前記第2の実行装置は前記第2のブランチ命令を実行す
    るように、前記第2の実行装置で前記第2のブランチ命
    令を実行し且つ前記第1の実行装置で前記第2の予測タ
    ーゲット命令を実行する過程とから成る方法。
  3. 【請求項3】 複数のブランチ命令を含み、命令アドレ
    スによりアドレス指定された命令メモリの記憶場所に記
    憶されている命令を実行するパイプライン命令プロセッ
    サにおいて,前記命令を復号する第1の復号手段と、前
    記第1の復号手段に結合し、前記第1の復号手段により
    復号された命令を実行する第1の実行装置とを含み、命
    令を実行する第1の実行手段と;命令のシーケンスを緩
    衝する命令先取りバッファを含み、前記第1の復号手段
    に結合して、前記命令メモリから前記命令のシーケンス
    を逐次取出す命令先取り手段と;前記第1の復号手段と
    結合し、ブランチ命令の直前の命令のアドレスと,ブラ
    ンチ命令に対応する予測ブランチターゲット命令と,そ
    の予測ブランチターゲット命令のアドレスとをそれぞれ
    含んでいる複数のブランチデータセットを記憶するブラ
    ンチターゲットバッファと;前記ブランチターゲットバ
    ッファ及び前記第1の復号手段に結合し、前記第1の復
    号手段により復号されている前記命令の中の1つを検出
    したのに応答して、前記1つの命令のアドレスに対応す
    るブランチデータセットを求めて前記ブランチターゲッ
    トバッファを探索し、前記ブランチデータセットの中の
    1つが前記1つの命令のアドレスに対応し、前記1つの
    命令の後にブランチ命令が続いていることが前記探索に
    より判明した場合には、前記1つのブランチデータセッ
    トから予測ターゲット命令と、予測ターゲット命令のア
    ドレスとを発生する論理手段と;第1の出力端子及び第
    2の出力端子を有し、前記論理手段に結合し且つそれに
    応答すると共に、前記ブランチターゲットバッファと、
    前記命令先取り手段とに結合し、前記論理手段が予測タ
    ーゲット命令と、対応する予測ターゲット命令アドレス
    とを発生しなければ、前記命令先取りバッファから前記
    第1の出力端子を介し、前記第1の復号手段を介して前
    記第1の実行手段へ前記命令のそれぞれを送り出し、前
    記論理手段が予測ターゲット命令と、対応する予測ター
    ゲット命令アドレスとを発生した場合には、前記後に続
    くブランチ命令を前記第2の出力端子へ送り出すと共
    に、前記予測ターゲット命令を前記第1の出力端子へ送
    り出すマルチプレクサ手段と;前記第2の出力端子に結
    合し、前記第1の実行手段が前記予測ターゲット命令を
    実行している間に前記後に続くブランチ命令を実行する
    ことにより前記予測ターゲット命令アドレスへ分岐して
    ゆくように前記ブランチ命令を実行する第2の実行手段
    とを具備する命令プロセッサ。
  4. 【請求項4】 複数のブランチ命令を含み、命令アドレ
    スによりアドレス指定された命令メモリの記憶場所に記
    憶されている命令を実行するパイプライン命令プロセッ
    サにおいて,前記命令を復号する第1の復号手段と、前
    記第1の復号手段に結合し、前記第1の復号手段により
    復号された命令を実行する第1の実行装置とを含み、命
    令を実行する第1の実行手段と;命令のシーケンスを緩
    衝する命令先取りバッファを含み、前記第1の復号手段
    に結合して、前記命令メモリから前記命令のシーケンス
    を逐次取出す命令先取り手段と;前記第1の復号手段に
    結合し、ブランチ命令の直前の命令のアドレスと,ブラ
    ンチ命令に対応する予測ブランチターゲット命令と,そ
    の予測ターゲット命令のアドレスと,先に前記ブランチ
    命令を取ったか否かを指示するヒストリーデータとをそ
    れぞれ含んでいる複数のブランチデータセットを記憶す
    るブランチターゲットバッファと;前記ブランチターゲ
    ットバッファ及び前記第1の復号手段に結合し、前記第
    1の復号手段により復号されている前記命令の中の1つ
    を検出したのに応答して、前記1つの命令のアドレスに
    対応するブランチデータセットを求めて前記ブランチタ
    ーゲットバッファを探索し、前記ブランチデータセット
    の中の1つが前記1つの命令のアドレスに対応し、前記
    1つの命令の後にブランチ命令が続いていることが前記
    探索により判明した場合には、前記1つのブランチデー
    タセットから、前記1つのブランチデータセットに含ま
    れているヒストリーデータに従って、予測ターゲット命
    令と、予測ターゲット命令のアドレスとを発生する論理
    手段と;第1の出力端子及び第2の出力端子を有し、前
    記論理手段に結合し且つそれに応答すると共に、前記ブ
    ランチターゲットバッファと、前記命令先取り手段とに
    結合し、前記論理手段が予測ターゲット命令と、対応す
    る予測ターゲット命令アドレスとを発生しなければ、前
    記命令先取りバッファから前記第1の出力端子を介し、
    前記第1の復号手段を介して前記第1の実行手段へ前記
    命令のそれぞれを送り出し、前記論理手段が予測ターゲ
    ット命令と、対応する予測ターゲット命令アドレスとを
    発生した場合には、前記後に続くブランチ命令を前記第
    2の出力端子へ送り出すと共に、前記予測ターゲット命
    令を前記第1の出力端子へ送り出すマルチプレクサ手段
    と;前記第2の出力端子に結合し、前記ブランチ命令を
    復号する第2の復号手段と、前記第2の復号手段に結合
    し、前記第2の復号手段により復号された前記ブランチ
    命令を実行する第2の実行装置とを含み、前記第1の実
    行手段が前記予測ターゲット命令を実行している間に前
    記後に続くブランチ命令を実行することにより前記予測
    ターゲット命令アドレスへ分岐してゆくように前記ブラ
    ンチ命令を実行する第2の実行手段とを具備する命令プ
    ロセッサ。
JP3349828A 1990-12-10 1991-12-10 マイクロプロセッサの拡張ブランチターゲット方法及びその装置 Pending JPH06110683A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US07/625,761 US5265213A (en) 1990-12-10 1990-12-10 Pipeline system for executing predicted branch target instruction in a cycle concurrently with the execution of branch instruction
US625761 1990-12-10

Publications (1)

Publication Number Publication Date
JPH06110683A true JPH06110683A (ja) 1994-04-22

Family

ID=24507478

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3349828A Pending JPH06110683A (ja) 1990-12-10 1991-12-10 マイクロプロセッサの拡張ブランチターゲット方法及びその装置

Country Status (3)

Country Link
US (1) US5265213A (ja)
JP (1) JPH06110683A (ja)
GB (1) GB2250840B (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0876999A (ja) * 1994-09-02 1996-03-22 Nec Corp 分岐予測装置
US7603545B2 (en) 2002-06-28 2009-10-13 Fujitsu Limited Instruction control method and processor to process instructions by out-of-order processing using delay instructions for branching
US7765387B2 (en) 2002-06-28 2010-07-27 Fujitsu Limited Program counter control method and processor thereof for controlling simultaneous execution of a plurality of instructions including branch instructions using a branch prediction mechanism and a delay instruction for branching

Families Citing this family (76)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0404068A3 (en) * 1989-06-20 1991-12-27 Fujitsu Limited Branch instruction executing device
US5446849A (en) * 1990-11-30 1995-08-29 Kabushiki Kaisha Toshiba Electronic computer which executes squash branching
JPH04340145A (ja) * 1991-05-17 1992-11-26 Nec Corp キャッシュメモリ装置
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
JP2875909B2 (ja) * 1991-07-12 1999-03-31 三菱電機株式会社 並列演算処理装置
US5649097A (en) * 1991-10-25 1997-07-15 International Business Machines Corporation Synchronizing a prediction RAM
JP3369204B2 (ja) * 1991-10-25 2003-01-20 株式会社東芝 プログラマブルコントローラ
US5692167A (en) * 1992-07-31 1997-11-25 Intel Corporation Method for verifying the correct processing of pipelined instructions including branch instructions and self-modifying code in a microprocessor
US5442756A (en) * 1992-07-31 1995-08-15 Intel Corporation Branch prediction and resolution apparatus for a superscalar computer processor
EP0586057B1 (en) 1992-08-31 2000-03-01 Sun Microsystems, Inc. Rapid instruction (pre)fetching and dispatching using prior (pre)fetch predictive annotations
DE4345028A1 (de) * 1993-05-06 1994-11-10 Hewlett Packard Co Vorrichtung zur Reduzierung von Verzögerungen aufgrund von Verzweigungen
KR100310581B1 (ko) * 1993-05-14 2001-12-17 피터 엔. 데트킨 분기목표버퍼의추측기록메카니즘
BR9406606A (pt) * 1993-05-14 1996-01-02 Intel Corp Mecanismo para história especulativa em um buffer objeto de ramificação
US5577217A (en) * 1993-05-14 1996-11-19 Intel Corporation Method and apparatus for a branch target buffer with shared branch pattern tables for associated branch predictions
US5421022A (en) * 1993-06-17 1995-05-30 Digital Equipment Corporation Apparatus and method for speculatively executing instructions in a computer system
JP2596712B2 (ja) * 1993-07-01 1997-04-02 インターナショナル・ビジネス・マシーンズ・コーポレイション 近接した分岐命令を含む命令の実行を管理するシステム及び方法
US5454117A (en) * 1993-08-25 1995-09-26 Nexgen, Inc. Configurable branch prediction for a processor performing speculative execution
US5748976A (en) * 1993-10-18 1998-05-05 Amdahl Corporation Mechanism for maintaining data coherency in a branch history instruction cache
TW261676B (ja) * 1993-11-02 1995-11-01 Motorola Inc
US5539888A (en) * 1993-12-23 1996-07-23 Unisys Corporation System and method for processing external conditional branch instructions
GB2285154B (en) * 1993-12-24 1998-04-01 Advanced Risc Mach Ltd Branch cache
ES2138051T3 (es) * 1994-01-03 2000-01-01 Intel Corp Metodo y aparato para la realizacion de un sistema de resolucion de bifurcaciones en cuatro etapas en un procesador informatico.
US5574871A (en) * 1994-01-04 1996-11-12 Intel Corporation Method and apparatus for implementing a set-associative branch target buffer
JP3290280B2 (ja) * 1994-01-13 2002-06-10 株式会社東芝 情報処理装置
TW253946B (en) * 1994-02-04 1995-08-11 Ibm Data processor with branch prediction and method of operation
US5564056A (en) * 1994-03-01 1996-10-08 Intel Corporation Method and apparatus for zero extension and bit shifting to preserve register parameters in a microprocessor utilizing register renaming
JPH07281893A (ja) * 1994-04-15 1995-10-27 Internatl Business Mach Corp <Ibm> 処理システム及び演算方法
US5592634A (en) * 1994-05-16 1997-01-07 Motorola Inc. Zero-cycle multi-state branch cache prediction data processing system and method thereof
JP3599409B2 (ja) * 1994-06-14 2004-12-08 株式会社ルネサステクノロジ 分岐予測装置
US5627981A (en) * 1994-07-01 1997-05-06 Digital Equipment Corporation Software mechanism for accurately handling exceptions generated by instructions scheduled speculatively due to branch elimination
US5524220A (en) * 1994-08-31 1996-06-04 Vlsi Technology, Inc. Memory subsystems having look-ahead instruction prefetch buffers and intelligent posted write buffers for increasing the throughput of digital computer systems
US5664135A (en) * 1994-09-28 1997-09-02 Hewlett-Packard Company Apparatus and method for reducing delays due to branches
US5812811A (en) * 1995-02-03 1998-09-22 International Business Machines Corporation Executing speculative parallel instructions threads with forking and inter-thread communication
US5724565A (en) * 1995-02-03 1998-03-03 International Business Machines Corporation Method and system for processing first and second sets of instructions by first and second types of processing systems
US5933860A (en) * 1995-02-10 1999-08-03 Digital Equipment Corporation Multiprobe instruction cache with instruction-based probe hint generation and training whereby the cache bank or way to be accessed next is predicted
JP3494736B2 (ja) * 1995-02-27 2004-02-09 株式会社ルネサステクノロジ 分岐先バッファを用いた分岐予測システム
US5918250A (en) * 1995-05-05 1999-06-29 Intel Corporation Method and apparatus for preloading default address translation attributes
US6052801A (en) * 1995-05-10 2000-04-18 Intel Corporation Method and apparatus for providing breakpoints on a selectable address range
US5659679A (en) * 1995-05-30 1997-08-19 Intel Corporation Method and apparatus for providing breakpoints on taken jumps and for providing software profiling in a computer system
US5740413A (en) * 1995-06-19 1998-04-14 Intel Corporation Method and apparatus for providing address breakpoints, branch breakpoints, and single stepping
US5621886A (en) * 1995-06-19 1997-04-15 Intel Corporation Method and apparatus for providing efficient software debugging
US5867699A (en) * 1996-07-25 1999-02-02 Unisys Corporation Instruction flow control for an instruction processor
US5774710A (en) * 1996-09-19 1998-06-30 Advanced Micro Devices, Inc. Cache line branch prediction scheme that shares among sets of a set associative cache
US5758143A (en) * 1996-10-07 1998-05-26 International Business Machines Corporation Method for updating a branch history table in a processor which resolves multiple branches in a single cycle
US5794028A (en) * 1996-10-17 1998-08-11 Advanced Micro Devices, Inc. Shared branch prediction structure
KR100240591B1 (ko) * 1996-11-06 2000-03-02 김영환 분기명령어의 효율적인 처리를 위한 브랜치 타겟 버퍼 및 그를 이용한 분기 예측방법
US6253316B1 (en) 1996-11-19 2001-06-26 Advanced Micro Devices, Inc. Three state branch history using one bit in a branch prediction mechanism
US5887160A (en) * 1996-12-10 1999-03-23 Fujitsu Limited Method and apparatus for communicating integer and floating point data over a shared data path in a single instruction pipeline processor
US6088793A (en) * 1996-12-30 2000-07-11 Intel Corporation Method and apparatus for branch execution on a multiple-instruction-set-architecture microprocessor
US5987599A (en) * 1997-03-28 1999-11-16 Intel Corporation Target instructions prefetch cache
US6249853B1 (en) 1997-06-25 2001-06-19 Micron Electronics, Inc. GART and PTES defined by configuration registers
US6282625B1 (en) 1997-06-25 2001-08-28 Micron Electronics, Inc. GART and PTES defined by configuration registers
US6069638A (en) * 1997-06-25 2000-05-30 Micron Electronics, Inc. System for accelerated graphics port address remapping interface to main memory
US6157988A (en) 1997-08-01 2000-12-05 Micron Technology, Inc. Method and apparatus for high performance branching in pipelined microsystems
US6252612B1 (en) 1997-12-30 2001-06-26 Micron Electronics, Inc. Accelerated graphics port for multiple memory controller computer system
US6157398A (en) * 1997-12-30 2000-12-05 Micron Technology, Inc. Method of implementing an accelerated graphics port for a multiple memory controller computer system
US7071946B2 (en) * 1997-12-30 2006-07-04 Micron Technology, Inc. Accelerated graphics port for a multiple memory controller computer system
US6405307B1 (en) * 1998-06-02 2002-06-11 Intel Corporation Apparatus and method for detecting and handling self-modifying code conflicts in an instruction fetch pipeline
US6237088B1 (en) * 1998-06-03 2001-05-22 Intel Corporation System and method for tracking in-flight instructions in a pipeline
JP3741870B2 (ja) * 1998-08-07 2006-02-01 富士通株式会社 命令及びデータの先読み方法、マイクロコントローラ、疑似命令検出回路
US6263427B1 (en) 1998-09-04 2001-07-17 Rise Technology Company Branch prediction mechanism
US6275918B1 (en) 1999-03-16 2001-08-14 International Business Machines Corporation Obtaining load target operand pre-fetch address from history table information upon incremented number of access indicator threshold
US6651162B1 (en) * 1999-11-04 2003-11-18 International Business Machines Corporation Recursively accessing a branch target address cache using a target address previously accessed from the branch target address cache
US6502188B1 (en) 1999-11-16 2002-12-31 Advanced Micro Devices, Inc. Dynamic classification of conditional branches in global history branch prediction
US6948053B2 (en) 2002-02-25 2005-09-20 International Business Machines Corporation Efficiently calculating a branch target address
US7426628B2 (en) * 2003-03-14 2008-09-16 National Instruments Corporation Run-time node prefetch prediction in dataflow graphs
JP4364077B2 (ja) * 2004-06-30 2009-11-11 富士通株式会社 演算装置及び演算装置の制御方法
JP4362096B2 (ja) * 2004-09-30 2009-11-11 富士通株式会社 情報処理装置,リプレース方法,リプレースプログラム及びリプレースプログラムを記録したコンピュータ読取可能な記録媒体
US7827392B2 (en) * 2006-06-05 2010-11-02 Qualcomm Incorporated Sliding-window, block-based branch target address cache
US7895422B2 (en) * 2008-02-29 2011-02-22 Freescale Semiconductor, Inc. Selective postponement of branch target buffer (BTB) allocation
US7937573B2 (en) * 2008-02-29 2011-05-03 Freescale Semiconductor, Inc. Metric for selective branch target buffer (BTB) allocation
US8527707B2 (en) * 2009-12-25 2013-09-03 Shanghai Xin Hao Micro Electronics Co. Ltd. High-performance cache system and method
US9141388B2 (en) * 2009-12-25 2015-09-22 Shanghai Xin Hao Micro Electronics Co., Ltd. High-performance cache system and method
US8886920B2 (en) * 2011-05-13 2014-11-11 Oracle International Corporation Associating tag to branch instruction to access array storing predicted target addresses for page crossing targets for comparison with resolved address at execution stage
US10664280B2 (en) * 2015-11-09 2020-05-26 MIPS Tech, LLC Fetch ahead branch target buffer
US11086629B2 (en) * 2018-11-09 2021-08-10 Arm Limited Misprediction of predicted taken branches in a data processing apparatus

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4084226A (en) * 1976-09-24 1978-04-11 Sperry Rand Corporation Virtual address translator
JPS6051948A (ja) * 1983-08-31 1985-03-23 Hitachi Ltd 情報処理装置
JPS60168238A (ja) * 1984-02-10 1985-08-31 Hitachi Ltd パイプラインデータ処理装置
US4777587A (en) * 1985-08-30 1988-10-11 Advanced Micro Devices, Inc. System for processing single-cycle branch instruction in a pipeline having relative, absolute, indirect and trap addresses
US4837681A (en) * 1986-03-13 1989-06-06 Tandem Computers Incorporated Instruction sequencer branch mechanism
JPS6393038A (ja) * 1986-10-07 1988-04-23 Mitsubishi Electric Corp 計算機
JPS63131230A (ja) * 1986-11-21 1988-06-03 Hitachi Ltd 情報処理装置
JP2603626B2 (ja) * 1987-01-16 1997-04-23 三菱電機株式会社 データ処理装置
US4926323A (en) * 1988-03-03 1990-05-15 Advanced Micro Devices, Inc. Streamlined instruction processor
US4974155A (en) * 1988-08-15 1990-11-27 Evans & Sutherland Computer Corp. Variable delay branch system
US5131086A (en) * 1988-08-25 1992-07-14 Edgcore Technology, Inc. Method and system for executing pipelined three operand construct
US5142634A (en) * 1989-02-03 1992-08-25 Digital Equipment Corporation Branch prediction
US5136697A (en) * 1989-06-06 1992-08-04 Advanced Micro Devices, Inc. System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache
US5163140A (en) * 1990-02-26 1992-11-10 Nexgen Microsystems Two-level branch prediction cache

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0876999A (ja) * 1994-09-02 1996-03-22 Nec Corp 分岐予測装置
US7603545B2 (en) 2002-06-28 2009-10-13 Fujitsu Limited Instruction control method and processor to process instructions by out-of-order processing using delay instructions for branching
US7765387B2 (en) 2002-06-28 2010-07-27 Fujitsu Limited Program counter control method and processor thereof for controlling simultaneous execution of a plurality of instructions including branch instructions using a branch prediction mechanism and a delay instruction for branching

Also Published As

Publication number Publication date
GB2250840B (en) 1994-07-13
GB9124669D0 (en) 1992-01-08
GB2250840A (en) 1992-06-17
US5265213A (en) 1993-11-23

Similar Documents

Publication Publication Date Title
JPH06110683A (ja) マイクロプロセッサの拡張ブランチターゲット方法及びその装置
US6553488B2 (en) Method and apparatus for branch prediction using first and second level branch prediction tables
US5276882A (en) Subroutine return through branch history table
US7278012B2 (en) Method and apparatus for efficiently accessing first and second branch history tables to predict branch instructions
US6898699B2 (en) Return address stack including speculative return address buffer with back pointers
JP2603626B2 (ja) データ処理装置
US5283873A (en) Next line prediction apparatus for a pipelined computed system
US7350062B2 (en) Predicted return address from return stack entry designated by computation unit with multiple inputs including return hit flag and re-fetch signal
US4827402A (en) Branch advanced control apparatus for advanced control of a branch instruction in a data processing system
JP5209633B2 (ja) ワーキング・グローバル・ヒストリ・レジスタを備えるシステム及び方法
JPS6341093B2 (ja)
JP5815596B2 (ja) プロシージャリターンシーケンスを加速するための方法およびシステム
JPH08249181A (ja) ブランチ予測式データ処理装置および動作方法
US6760835B1 (en) Instruction branch mispredict streaming
US5889986A (en) Instruction fetch unit including instruction buffer and secondary or branch target buffer that transfers prefetched instructions to the instruction buffer
JPH08320788A (ja) パイプライン方式プロセッサ
JPH0650465B2 (ja) 分岐制御回路
EP0889394B1 (en) Program control method
WO2012132214A1 (ja) プロセッサ及びその命令処理方法
JPH07262006A (ja) 分岐ターゲットアドレスキャッシュを備えたデータプロセッサ
US7343481B2 (en) Branch prediction in a data processing system utilizing a cache of previous static predictions
JP4049490B2 (ja) 情報処理装置
JP3851235B2 (ja) 分岐予測装置および分岐予測方法
JPH0774992B2 (ja) データ処理装置
JPH10283184A (ja) データ処理装置