JPH08320788A - パイプライン方式プロセッサ - Google Patents

パイプライン方式プロセッサ

Info

Publication number
JPH08320788A
JPH08320788A JP7125029A JP12502995A JPH08320788A JP H08320788 A JPH08320788 A JP H08320788A JP 7125029 A JP7125029 A JP 7125029A JP 12502995 A JP12502995 A JP 12502995A JP H08320788 A JPH08320788 A JP H08320788A
Authority
JP
Japan
Prior art keywords
branch
instruction
information
btb
read
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.)
Granted
Application number
JP7125029A
Other languages
English (en)
Other versions
JP3486690B2 (ja
Inventor
Tetsuya Hara
哲也 原
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP12502995A priority Critical patent/JP3486690B2/ja
Priority to US08/625,180 priority patent/US5740418A/en
Publication of JPH08320788A publication Critical patent/JPH08320788A/ja
Application granted granted Critical
Publication of JP3486690B2 publication Critical patent/JP3486690B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer

Abstract

(57)【要約】 【目的】 パイプライン方式プロセッサの分岐予測ヒッ
ト率を向上させる。 【構成】 命令キャッシュ16およびBTB20を有す
るパイプライン方式プロセッサにおいて、命令キャッシ
ュ16のミスヒット時に主記憶12からラインフェッチ
される命令をデコードし、分岐命令である場合にはBT
B20に分岐情報を登録するためのBTB登録判別器1
4を設ける。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明はパイプライン方式プロ
セッサに関し、特に、分岐先バッファ(BTB(Branch
Target Bugger))と呼ばれるハードウェアを用いて分
岐予測を行なうパイプライン方式のプロセッサに関す
る。
【0002】
【従来の技術】パイプライン方式のプロセッサにおい
て、分岐によるパイプラインの乱れは性能向上を阻む大
きな原因となっている。この分岐ペナルティを低減させ
るために、通常のパイプライン方式プロセッサでは、分
岐予測を導入している。
【0003】分岐予測の一方式として、分岐先バッファ
と呼ばれるハードウェアを用いて、この分岐先バッファ
に、予測に必要な情報を保持するための分岐予測方式が
ある。この方式では以下のような手順で分岐予測を行な
う。
【0004】(1) 登録・更新 分岐命令が実行されると、分岐先アドレス、分岐方向な
どの分岐命令の実行結果を、その分岐命令の命令アドレ
スの下位何ビットかでアドレス指定されるBTBエント
リに登録し、または更新する。
【0005】(2) 予測 命令フェッチ指定時において、命令キャッシュをアクセ
スすると同時に、同じアドレスでBTBのアクセスを行
なう。この場合BTBのアドレス指定は、上述の(1)
で行なわれた下位何ビットかを用いて行なわれる。BT
Bの当該アドレスに有効な命令に関する履歴情報が登録
されていれば、その履歴情報に基づいて分岐方向の予測
を行なう。この場合予測がテークン予測であれば分岐先
アドレスをプログラムカウンタ(PC)に設定する。
【0006】(3) 予測のチェック 分岐命令が実行されると、その実行結果と分岐予測とを
照らし合わせて予測のチェックを行なう。予測が誤って
いた場合には、分岐命令のフェッチから分岐命令の実行
の終了までにパイプラインに投入された命令を無効化
し、正しい命令流を再フェッチする。
【0007】上述のように分岐予測と、予測のチェック
と、予測のチェック結果に基づいてBTBに分岐命令の
分岐情報を登録することとにより、BTBに分岐情報が
登録されている限り、分岐予測が有効に行なわれる。
【0008】
【発明が解決しようとする課題】しかし、上述のBTB
による予測分岐方式には次のような問題点がある。BT
Bは、命令キャッシュと類似の構造を有しており、命令
キャッシュと同様にその初期状態が空であり、分岐命令
が実行されることによって初めてそのエントリの登録が
行なわれる。したがって、各分岐命令が最初に実行され
るときには、BTBにはその分岐情報は必ず登録されて
いない。BTBに当該分岐命令の分岐情報が登録されて
いない場合には、通常分岐が発生しないものとして予測
が行なわれる。そのため分岐命令が実際には分岐する場
合には、最初の実行では必ず予測が外れてしまう。その
ため最初の実行の場合にも、分岐命令の分岐予測を有効
に行なうことができれば分岐予測ヒット率を向上させる
ことができる。またそうした分岐予測ヒット率の向上
は、数種類の分岐命令に対して行なえることが望まし
く、特にプログラムカウンタ相対方式の分岐先アドレス
指定を行なう分岐命令についても有効であることが望ま
しい。また分岐予測のヒット率を向上させるにあたっ
て、ハードウェアはできるだけ簡単であることが望まし
い。
【0009】したがって、請求項1記載の発明の目的
は、BTBを有するパイプライン方式プロセッサの分岐
予測ヒット率を向上させることである。
【0010】請求項2記載の発明の目的は、BTBを有
するパイプライン方式プロセッサの分岐予測ヒット率
を、種々の分岐命令について向上させることである。
【0011】請求項3記載の発明の目的は、BTBを有
するパイプライン方式プロセッサの分岐予測ヒット率
を、プログラムカウンタの内容により分岐先アドレスが
変化するような分岐先命令を含む種々の分岐命令につい
て向上させることである。
【0012】請求項4記載の発明の目的は、BTBを有
するパイプライン方式プロセッサの分岐予測ヒット率
を、複数種類の分岐命令に対して、比較的簡単な回路で
もって向上させることである。
【0013】
【課題を解決するための手段】請求項1記載のパイプラ
イン方式プロセッサは、主記憶と、主記憶中の、実行す
べき命令のアドレスを指定するプログラムカウンタと、
プログラムカウンタにより指定されるアドレスの命令を
主記憶から読出して実行する命令実行手段と、命令実行
手段により読出が要求された命令を記憶していない場合
には、当該命令を含む一群の命令を主記憶から読出し記
憶して、次に同じアドレスからの読出要求があったとき
に主記憶へのアクセスなしに命令実行手段に与える、高
速アクセス可能な命令キャッシュメモリと、命令実行手
段が実行する分岐命令に関する分岐情報を記憶し、分岐
情報に基づいて分岐予測を行なって、分岐命令の次に読
出すべき命令のアドレスをプログラムカウンタに設定す
る分岐先バッファと、主記憶から命令キャッシュメモリ
に読出される命令を解読し、その命令が分岐命令である
場合には、当該分岐命令に関する分岐情報を分岐先バッ
ファに登録するための分岐先バッファ登録判別手段とを
含む。
【0014】請求項2記載のパイプライン方式プロセッ
サは、請求項1記載のプロセッサであって、分岐先バッ
ファ登録判別手段は、主記憶から命令キャッシュメモリ
に読出される命令を解読して、分岐先バッファに対し
て、分岐情報を登録すべきことを指令する登録指令信号
を出力するための解読手段と、解読手段により解読され
た命令の種類に従って必要な分岐情報を生成して分岐先
バッファに与えるための分岐情報生成手段とを含む。
【0015】請求項3記載のパイプライン方式プロセッ
サは、請求項2記載のプロセッサであって、解読手段
は、主記憶から命令キャッシュメモリに読出される命令
を解読して、当該命令が予め定める複数種類の分岐命令
のうちの1つであるときに登録指令信号を出力し、か
つ、当該命令が、予め定める複数種類の分岐命令のいず
れであるかを示す命令判別信号を出力するためのデコー
ダを含み、分岐情報生成手段は、主記憶から命令キャッ
シュメモリに読出される命令のオペランドと、プログラ
ムカウンタの内容とから、予め定める複数種類の命令の
各々に対する分岐先アドレスを生成する分岐先アドレス
手段と、命令判別信号に応答して、分岐先アドレス生成
手段の出力のいずれか1つを選択して分岐先バッファに
与えるための選択手段とを含む。
【0016】請求項4記載のパイプライン方式プロセッ
サは、請求項1記載のプロセッサであって、分岐命令内
には、当該分岐命令に関する分岐情報を分岐先バッファ
に登録すべきか否かを指定するための登録指定情報が予
め設定されており、分岐先バッファ登録判別手段は、主
記憶から命令キャッシュメモリに読出される命令を解読
する解読手段と、解読手段により解読された命令の種類
に従って必要な分岐情報を生成して分岐先バッファに与
えるための分岐情報生成手段と、登録指定情報に従って
分岐先バッファに対して、分岐情報を登録すべきことを
指令するための登録指令手段とを含む。
【0017】
【作用】請求項1記載のパイプライン方式プロセッサに
おいては、命令実行手段により読出が要求された命令が
命令キャッシュメモリに存在しないとき、当該命令を含
む一群の命令が主記憶から読出されて命令キャッシュメ
モリ内に記憶される。このとき、分岐先バッファ登録判
別手段が、これらの命令を解読し、その命令が分岐命令
である場合には、当該分岐命令に関する分岐情報を分岐
先バッファに登録する。
【0018】請求項2記載のパイプライン方式プロセッ
サにおいては、請求項1記載のプロセッサの作用に加
え、解読手段が命令を解読して、分岐先バッファに対し
て、分岐情報を登録すべきことを指令する登録指令信号
を出力し、分岐情報生成手段が、解読手段により解読さ
れた命令の種類に従って必要な分岐情報を生成して分岐
先バッファに与える。
【0019】請求項3記載のパイプライン方式プロセッ
サにおいては、請求項2記載のプロセッサの作用に加
え、デコーダが、主記憶から命令キャッシュメモリに読
出される命令を解読して、当該命令が予め定める複数種
類の分岐命令のうちの1つであるときに登録指令信号を
出力し、かつ、当該命令が、予め定める複数種類の分岐
命令のいずれであるかを示す命令判別信号を出力する。
分岐先アドレス生成手段は、主記憶から命令キャッシュ
メモリに読出される命令のオペランドと、プログラムカ
ウンタの内容とから、予め定める複数種類の命令の各々
に対する分岐先アドレスを生成する。選択手段は、命令
判別信号に応答して、分岐先アドレス生成手段の出力の
いずれか1つを選択して分岐先バッファに与える。
【0020】請求項4記載のパイプライン方式プロセッ
サにおいては、請求項1記載のプロセッサの作用に加
え、分岐命令内には、当該分岐命令に関する分岐情報を
分岐先バッファに登録すべきか否かを指定するための登
録指定情報が予め設定されている。分岐先バッファ登録
判別手段においては、解読手段が、主記憶から命令キャ
ッシュメモリに読出される命令を解読する。分岐情報生
成手段は、解読手段により解読された命令の種類に従っ
て必要な分岐情報を生成して分岐先バッファに与える。
登録指令手段が、登録指定情報に従って分岐先バッファ
に対して、分岐情報を登録すべきことを指令する。
【0021】
【実施例】
第1の実施例 図1を参照して、本発明の第1の実施例のパイプライン
方式プロセッサ10は、プログラムカウンタ22と、実
行すべきプログラムなどを記憶する主記憶12と、プロ
グラムカウンタ22により指定される命令を主記憶12
からフェッチしてパイプライン方式で実行するための実
行ユニット18と、主記憶12から読出された命令を含
む一群の命令を記憶し、実行ユニット18から当該命令
の読出が再度要求されたときに、主記憶12にアクセス
することなく実行ユニット18に与えるための、高速ア
クセス可能な命令キャッシュ16と、分岐命令の分岐情
報を記憶するためのBTB20と、主記憶12から命令
キャッシュ16に読出される命令が分岐命令であるか否
かを判別し、判別結果に従ってBTB20に、当該分岐
命令に関する分岐情報を登録させるためのBTB登録判
別器14とを含む。
【0022】なお命令キャッシュ16およびBTB20
は、いずれもプログラムカウンタ22により出力される
命令のアドレスの下位何ビットかを、それぞれの格納し
ている情報の読出の際のアドレス指定に利用する。ま
た、命令キャッシュ16による主記憶12からの命令の
読出はラインフェッチと呼ばれ、一度に複数の命令が読
出される。
【0023】図2を参照して、命令キャッシュ16は、
主記憶から読出された命令を格納するための命令アレイ
32と、命令アレイ32の各エントリに記憶された命令
の、主記憶内のアドレスの上位何ビットかを示すタグを
記憶するタグアレイ36と、命令アレイ32内の各エン
トリが有効か否かを示す有効フラグを記憶する有効フラ
グ領域34と、プログラムカウンタ22から与えられる
アドレスの下位何ビットかを使用して、タグアレイ36
と、有効フラグ34と、命令アレイ32とのそれぞれの
1エントリを選択するためのデコーダ38と、プログラ
ムカウンタ22から与えられるアドレスのタグ部分と、
タグアレイ36から出力されるタグとを比較して一致信
号を出力するための比較回路40と、比較回路40の出
力と、有効フラグ領域34から出力される有効フラグの
値と、実行ユニット18から与えられる分岐命令の実行
結果に従って主記憶12から命令を再フェッチし、タグ
アレイ36と、有効フラグ34と、命令アレイ32とを
更新するためのミスヒット処理制御回路42とを含む。
【0024】なお、実行ユニット18から命令の読出要
求があり、かつプログラムカウンタ22から与えられる
アドレスの下位何ビットかで指定されるアドレスの有効
フラグが「有効」を示す値であり、かつ当該アドレスに
記憶されているタグが、プログラムカウンタから出力さ
れるアドレスのタグと一致する場合には、命令アレイ3
2の当該エントリの内容が実行ユニット18に与えられ
る。
【0025】図3を参照して、図1のBTB登録判別器
14は、デコーダ50と、AND回路52と、OR回路
54と、セレクタ56とを含む。
【0026】デコーダ50は、主記憶12から命令キャ
ッシュ16に読出される命令のオペコードを受ける入力
を有する。デコーダ50は2つの出力を有し、その一方
はOR回路54の一方の入力に接続される。デコーダ5
0の他方の出力は、AND回路52の一方の入力と、セ
レクタ56の制御端子とに接続される。
【0027】AND回路52の他方の入力には、主記憶
12から命令キャッシュ16に読出される命令内のオペ
ランドのうち、プログラムカウンタ相対分岐命令のオフ
セット部分に相当する部分の符号ビットが与えられる。
AND回路52の出力は、OR回路54の2つの入力の
うち、デコーダ50の出力に接続されていない方の出力
に接続されている。
【0028】OR回路54の出力は登録指令信号であ
り、図1に示すBTB20に与えられる。
【0029】セレクタ56は本実施例では2つの入力を
有しており、一方入力にはプログラムカウンタ22の出
力と、主記憶12から命令キャッシュ16に読出される
命令のオペランドのうち、PC相対分岐命令のオフセッ
ト部分とが加算された値が与えられる。セレクタ56の
他方入力には、PCの上位何ビットかと、主記憶12か
ら命令キャッシュ16に読出される命令のオペランド内
の即値とを連接したものが与えられる。セレクタ56の
出力はBTB20に与えられる。なおセレクタ56は、
デコーダ50から与えられる制御信号がハイレベルであ
るときにはPC+オフセットを、ローレベルである場合
にはPCの上位何ビットかと即値とを連接したものを、
それぞれ選択して出力する。
【0030】デコーダ50は、オペコードが無条件分岐
命令である場合にはハイレベルの信号をOR回路54に
与え、それ以外の場合にはローレベルの信号をOR回路
54に与える。デコーダ50はまた、オペコードがPC
相対分岐命令である場合にはハイレベルの信号をAND
回路52およびセレクタ56に与え、それ以外の場合に
はローレベルの信号をAND回路52およびセレクタ5
6に与える。
【0031】図4にBTB20のブロック回路図を示
す。図20を参照してBTB20は、BTB制御回路7
0と、デコーダ72と、セレクタ74と、有効フラグア
レイ76と、タグアレイ78と、分岐先情報領域80
と、予測情報領域82と、セレクタ83および84と、
比較回路86と、分岐予測回路88と、インクリメンタ
90と、セレクタ92とを含む。
【0032】BTB制御回路70は、実行ユニット18
からのミスヒット情報と、BTB登録判別器14からの
登録指令信号とに応答して、有効フラグアレイ76と、
タグアレイ78と、分岐先情報領域80と、予測情報領
域82との内容を更新するためのものである。BTB制
御回路70はまた、後述するようにセレクタ74,83
および84をも制御して、BTB20からの分岐情報の
読出と、BTB20への分岐情報の書込とを制御する。
【0033】セレクタ74の一方入力はプログラムカウ
ンタ22に接続されている。セレクタ74の他方入力は
実行ユニット18の出力に接続されており、実行ユニッ
ト18から分岐命令のアドレスを受ける。セレクタ74
は、BTB制御回路70の制御に従って、分岐情報の読
出時にはプログラムカウンタ22の出力を、分岐情報の
書込時には実行ユニット18の出力をそれぞれ選択して
デコーダ72に与える。セレクタ74は、登録指令信号
がハイレベルである場合にも、BTB制御回路70の制
御によりプログラムカウンタ22の出力を選択する。な
お、セレクタ74への入力および出力は、いずれもプロ
グラムカウンタ22の出力するアドレスのうちの下位何
ビットかに相当するものである。これは、BTB20の
ハードウェア量が限られており、すべてのアドレスに対
してBTBエントリを用意することができないためであ
る。実際にBTBに格納されている情報が、どの命令に
対応するものであるかは、タグアレイ78の内容と有効
フラグ76の内容とによって判断される。すなわちタグ
アレイ78は、分岐先情報領域80の各エントリに格納
されている情報に対応するアドレスの上位何ビットか
(タグ)を格納している。有効フラグアレイ76は、対
応する分岐先情報領域80および予測情報領域82のエ
ントリの内容が有効か否かを示すフラグを格納する。
【0034】セレクタ83の一方入力はプログラムカウ
ンタに接続され、その出力のタグ部分を受ける。他方入
力は、実行ユニット18の出力を受け、分岐命令のアド
レスのタグ部分を受ける。セレクタ83はBTB制御回
路70に制御され、予測ミス時には実行ユニット18の
出力を選択し、それ以外の場合にはPCの出力を選択し
てタグアレイ78に与える。
【0035】セレクタ84の一方入力は実行ユニット1
8の出力に接続されており、予測ミス時の分岐先アドレ
スを受ける。セレクタ84の他方入力には、BTB登録
判別器14からの分岐先情報が与えられる。セレクタ8
4は、BTB制御70の制御に従って、主記憶12から
命令キャッシュ16に読出される分岐命令の分岐情報を
登録する場合には分岐先情報を、実行ユニット18によ
る分岐命令の実行の結果予測ミスが発生した場合には実
行ユニット18の出力を、それぞれ選択して分岐先情報
領域80に与えるためのものである。
【0036】比較回路86は、デコーダ72により選択
されたタグアレイ78のエントリと、プログラムカウン
タ22の出力アドレスの上位何ビットか(タグ)とを比
較し、比較結果を分岐予測回路88に与えるためのもの
である。
【0037】分岐予測回路88は、デコーダ72により
選択された有効フラグ76のエントリの内容と、比較回
路86の出力と、デコーダ72により選択された予測情
報82のエントリとから、インクリメンタ90の出力
と、デコーダ72により選択された分岐先情報80のエ
ントリとのいずれを選択すべきかを判定し(分岐予
測)、分岐予測信号をセレクタ92に与えるためのもの
である。なお命令アクセスは、32ビットアーキテクチ
ャのプロセッサの場合、通常アドレスの下位2ビットを
「00」とした部分を境界とするブロック単位で行なわ
れるので、インクリメンタ90は次のアクセス先のアド
レスとして、プログラムカウンタ22の出力に4を加算
する。
【0038】セレクタ92は、3つの入力を有してい
る。1つの入力は前述のとおりインクリメンタ90の出
力に接続されている。2番目の入力は分岐先情報領域8
0の出力に接続されている。3番目の入力は実行ユニッ
ト18の出力に接続されており、予測ミス時の分岐命令
の実際の分岐先アドレスを受ける。セレクタ92は、分
岐予測回路88の出力と実行ユニット18の出力とによ
って制御され、分岐予測時には分岐予測回路88からの
制御信号に従ってインクリメンタ90の出力または分岐
先情報領域80の出力のいずれかを出力してプログラム
カウンタ22に設定する。一方セレクタ92は、予測ミ
ス時には、実行ユニット18から与えられる実際の分岐
先アドレスを選択してプログラムカウンタ22に設定す
る。
【0039】図1〜図4を参照して、この第1の実施例
のパイプライン方式プロセッサは以下のように動作す
る。
【0040】実行ユニット18は、プログラムカウンタ
22により指定されるアドレスからの命令の読出を命令
キャッシュ16に対して与える。命令キャッシュ16
は、プログラムカウンタの値のうち下位何ビットかをデ
コードし、タグアレイ36と、有効フラグアレイ34
と、命令アレイ32との対応エントリを選択する。タグ
アレイ36と、有効フラグアレイ34と、命令アレイ3
2とからは、対応のタグと、有効フラグと、命令とが出
力される。
【0041】図2を参照して、比較回路40は、プログ
ラムカウンタ22から与えられたアドレスのタグ部分
と、タグアレイ36の出力とを比較し、一致するか否か
を示す信号をミスヒット処理制御回路42に与える。ミ
スヒット処理制御回路42は、比較回路40の出力が、
不一致を示す値である場合と、有効フラグアレイ34の
出力する有効フラグが無効を示す値である場合とは、キ
ャッシュミスの発生であると判断して、主記憶12(図
1参照)に対して当該アドレスからの読出を要求する。
【0042】主記憶12からは、該当のアドレスの命令
を含む一群の命令がラインフェッチされ、命令アレイ3
2に与えられる。命令アレイ32は、デコーダ38によ
り選択されたエントリにこの命令を格納する。同時にタ
グアレイ36には、主記憶12の読出に使用されたアド
レスのタグ部分が格納される。このときのエントリは、
デコーダ38によって選択されたエントリである。この
エントリに対応する有効フラグアレイ34内の有効フラ
グは「有効」を示す値に設定される。
【0043】上述のように一旦命令アレイ32内に当該
命令が格納されると、比較回路40の出力は「一致」を
示し、有効フラグアレイ34の出力する有効フラグは
「有効」を示す値となる。この場合にはミスヒット処理
制御回路42は実行ユニット18に対して、命令アレイ
32の出力が有効であることを示し、実行ユニット18
は命令アレイ32の出力を受取り実行する。
【0044】図1を参照して、上述のキャッシュミスが
生じた場合、要求された命令を含む命令流(これをキャ
ッシュラインと呼び、通常は8から32命令である。)
を主記憶12からフェッチする。このキャッシュライン
のフェッチは、1サイクルに1〜2命令が処理される。
【0045】主記憶12から命令キャッシュ16に命令
が読出されるとき、BTB登録判別器14にもこの命令
が与えられる。
【0046】図3を参照して、デコーダ50は、与えら
れた命令のオペコードが無条件分岐命令であるか否かを
判断し、無条件分岐命令である場合にはハイレベルの信
号をOR回路54の一方入力に与え、無条件分岐命令で
ない場合にはローレベルの信号を与える。デコーダ50
はまた、オペコードがPC相対分岐命令である場合には
AND回路52およびセレクタ56に対してハイレベル
の信号を、それ以外はローレベルの信号をそれぞれ与え
る。
【0047】プログラムカウンタの値と、与えられた命
令内のオペランド内の、PC相対分岐命令のオフセット
部分に相当する値とが図示されない回路で生成され、セ
レクタ56の一方入力に与えられる。同様にプログラム
カウンタの上位何ビットかと、オペランド内の即値とを
連接した値がセレクタ56の他方入力に与えられる。セ
レクタ56は、デコーダ50からの信号がハイレベルで
ある場合にはPC+オフセットを、ローレベルである場
合にはPCの上位ビットと即値とを連接したものを選択
して分岐先情報としてBTB20(図1参照)に与え
る。
【0048】AND回路52の他方入力には、オペラン
ドのうち、PC相対分岐命令のオフセットに相当する部
分の符号ビットが与えられる。この符号ビットは正の場
合には0、負の場合には1であるものとする。したがっ
てAND回路52は、デコードされた命令がPC相対分
岐命令であり、かつオフセットの符号が負である場合に
ハイレベルの信号をOR回路54の他方入力に与える。
【0049】OR回路54の機能により、デコーダ50
がデコードした命令が無条件分岐命令である場合と、P
C相対分岐命令であってかつそのオフセットの符号が負
である場合には、登録指令信号がBTB20に与えられ
る。PC相対分岐命令であってかつオフセットの符号が
負である場合とは、いわゆる後方分岐の場合である。こ
れは、後方分岐の場合には一般に高い確率で分岐が発生
することがわかっているためである。たとえば所定の条
件が繰返すまで何回かループ処理を実行する場合の最後
の分岐命令がこの後方分岐の一例である。
【0050】図4を参照して、BTB20は次のように
動作する。まず、登録指令信号がBTB登録判別器14
から与えられた場合を考える。この場合BTB制御回路
70はセレクタ74を制御して、プログラムカウンタ2
2の出力のうちの下位ビットを選択してデコーダ72に
与える。これにより有効フラグアレイ76と、タグアレ
イ78と、分岐先情報領域80と、予測情報領域82と
の対応するエントリが選択される。タグアレイ78に
は、セレクタ83を介してプログラムカウンタ22の出
力の上位ビット(タグ)が与えられる。分岐先情報領域
80には、セレクタ84を介してBTB登録判別器14
からの分岐先情報が与えられる。これら情報はいずれも
タグアレイ78と分岐先情報領域80との選択されたエ
ントリに格納される。同時に有効フラグアレイ76の対
応するエントリの値が「有効」を示す値に設定される。
【0051】BTB20からの分岐情報の読出および分
岐予測は次のようにして行なわれる。BTB制御回路7
0は、セレクタ74を制御してプログラムカウンタ22
の下位ビットを選択してデコーダ72に与える。デコー
ダ72は、有効フラグアレイ76と、タグアレイ78
と、分岐先情報領域80と、予測情報領域82との対応
エントリを選択する。したがって有効フラグアレイ76
からは対応エントリの有効フラグが、タグアレイ78か
らは、対応エントリのタグが、分岐先情報領域80から
は、対応エントリに格納されている予測分岐先アドレス
が、予測情報領域82からは、対応するエントリに格納
されている予測情報がそれぞれ出力される。
【0052】比較回路86は、プログラムカウンタ22
から与えられるアドレスの上位ビット(タグ部分)とタ
グアレイ78の出力とを比較し、一致する場合にはハイ
レベルの信号を分岐予測回路82に与える。比較回路8
6は、2つの入力が一致しない場合にはローレベルの信
号を分岐予測回路88に与える。
【0053】分岐予測回路88は、有効フラグが「有
効」を示す値であって、比較回路86の出力が「一致」
を示す値である場合に、予測情報領域82の出力に基づ
いて、その分岐命令において分岐が発生するか否かを予
測する。分岐が発生すると予測された場合には分岐予測
回路88はセレクタ92を制御して分岐先情報領域80
の出力を選択させる。したがって分岐先情報領域80か
ら出力された予測分岐先アドレスがプログラムカウンタ
22に設定される。
【0054】分岐が発生しないと予測された場合、分岐
予測回路88はセレクタ92を制御して、インクリメン
タ90の出力を選択させる。したがってプログラムカウ
ンタ22には、直前のプログラムカウンタの値に4加算
されたものが設定される。
【0055】以上のようにして分岐予測に従って次命令
のフェッチが行なわれることになる。
【0056】次に、分岐予測ミスが発生した場合のBT
B20の動作について説明する。このとき実行ユニット
18からBTB制御回路70に対して、予測ミスが発生
したことを示す信号が与えられる。また実際の分岐命令
の実行結果に従って、分岐先アドレスがセレクタ92
と、セレクタ84とに実行ユニット18から与えられ
る。また実行履歴に関する情報が予測情報領域82に対
して与えられる。実行ユニット18が実行した分岐命令
のアドレスの下位ビットがセレクタ74に与えられる。
分岐命令の上位ビット(タグ)がセレクタ83に与えら
れる。
【0057】セレクタ74は、BTB制御回路70の制
御に従って、実行ユニット18から与えられるアドレス
をデコーダ72に与える。デコーダ72は、したがっ
て、実行ユニット18が実行し、かつ予測ミスが発生し
た分岐命令のアドレスの下位ビットで指定されるアドレ
スのエントリを、有効フラグアレイ76と、タグアレイ
78と、分岐先情報領域80と、予測情報領域82とに
おいて選択する。
【0058】セレクタ83も同様に、BTB制御回路7
0の制御に従って、実行ユニット18が実行した分岐命
令のアドレスの上位ビット(タグ)を選択し、タグアレ
イ78に与える。タグアレイ78の、選択されたエント
リがこのタグを格納する。
【0059】セレクタ84も、BTB制御回路70の制
御に従って、実行ユニット18から出力された分岐先ア
ドレスを選択して分岐先情報領域80に与える。分岐先
情報領域80の、選択されたエントリが、この分岐先ア
ドレスを格納する。
【0060】予測情報領域82の、選択されたエントリ
が、実行ユニット18から与えられる予測情報を格納す
る。
【0061】有効フラグアレイ76の、選択されたエン
トリに「有効」を示す値が設定される。
【0062】セレクタ92は、実行ユニット18から与
えられた、ミスヒットの発生を示す信号に応答して、実
行ユニット18から出力された分岐先アドレスを選択し
てプログラムカウンタ22に与える。したがってプログ
ラムカウンタ22の値は、分岐命令の実際の実行結果に
従った分岐先アドレスとなる。
【0063】なおこのとき、図示していないが既にパイ
プラインに投入された命令は無効化される。
【0064】以上のようにこの発明の第1の実施例で
は、従来方式では予測が行なえなかった、分岐命令の第
1回目の実行時でも、BTBの対応エントリにその分岐
命令の分岐予測情報(分岐先アドレスなど)が登録され
ている。したがって分岐命令の第1回目の実行時でも有
効な予測を行なうことができ、分岐予測ヒット率の向上
が期待できるという効果がある。
【0065】第2の実施例 以上の第1の実施例では、分岐命令の第1回目の実行時
でも有効な予測を行なうことができる。またそうした有
効な予測を行なうことができる命令の例としてPC相対
分岐命令と、無条件分岐命令とを扱っている。
【0066】既に述べたように、一般に後方分岐が分岐
する確率は高いと言える。しかし命令によってはほとん
ど分岐しないものもあり得る。また、前方分岐であって
も非常に高い確率で分岐する場合もあり得る。第1の実
施例で述べた方法では、分岐確率が低い後方分岐や、分
岐確率が高い前方分岐が存在していても、これらを判別
することができない。そのためそれらの分岐命令の予測
時には、実際の分岐方向とは逆方向に予測されることが
多くなる。それら命令について、そうした傾向が予め知
られているならばそうした予測ミスの発生は予防できる
はずである。
【0067】さらに、分岐確率が低い後方分岐をBTB
に登録すると次のような弊害が生ずる。前述のようにB
TBは、比較的少ないハードウェア量を有効に使用する
ために、命令キャッシュ内のすべての命令に対してエン
トリを用意することはなく、数命令で1エントリを共有
するのが一般的である。したがって、ある命令をBTB
に登録することによって、そのエントリに登録されてい
た他の命令がBTBから追い出されることがある。仮に
新たに登録される命令の分岐確率が低く、既に登録され
ていた命令の分岐確率が高い場合を考えると、そのよう
な分岐確率が低い命令をBTBに登録しても予測ヒット
率の向上は期待できず、かえって既に登録されていた分
岐確率が高い命令の分岐予測が有効に行なえなくなって
しまう。そのため分岐予測ヒット率が低下してしまう恐
れがある。
【0068】以下に述べる第2の実施例は、そうした問
題点を解決でき、しかも比較的少ないハードウェア量で
そうした問題点を解決できるものである。
【0069】本実施例では、プログラムのコンパイル時
に、コンパイラによって分岐成立と予測する分岐命令を
予め指定しておく。そして主記憶から命令キャッシュへ
のラインフェッチ時に、それらの分岐情報をBTBに登
録することとする。なおコンパイル時の予測手法として
は、命令の種類(無条件分岐か、後方分岐か)による予
測や、命令のフローグラフから判断する手法や、当該プ
ログラムを実行したトレース結果からの予測手法など、
何通りかの手法が考えられる。
【0070】この第2の実施例のパイプライン方式プロ
セッサの構成は概略図1に示した第1の実施例のものと
同様であるが、第1の実施例のBTB登録判別器14に
代えて、命令の内容からBTBに分岐予測情報を登録す
べきか否かを判別するためのBTB登録判別器114を
用いる点のみが異なっている。したがってここでは、第
1の実施例と同様の部分については詳細な説明は繰返さ
ない。
【0071】本実施例では、分岐命令の命令フィールド
にBTBに登録を行なうか否かを示すBTB登録ビット
を1ビット設ける。前述のようにコンパイラは、静的分
岐予測の結果に基づいて、分岐確率が高い命令のBTB
登録ビットをセットし、分岐確率が低い命令のBTB登
録ビットをリセットしておく。
【0072】図5を参照して、BTB登録判別器114
は、主記憶12(図1参照)から命令キャッシュ16に
読出される命令のオペコードをデコードし、その命令が
PC相対分岐命令である場合にはハイレベルの信号を、
それ以外の場合にはローレベルの信号を出力するための
デコーダ122と、オペコードのうち、BTB登録ビッ
トを登録指令信号として抽出するための配線120と、
一方入力にはプログラムカウンタの値と命令のオペラン
ド内のオフセット量に相当する部分との和を受け、他方
入力にはプログラムカウンタの出力の上位ビットとオペ
ランド内の即値とを連接したものをそれぞれ受け、デコ
ーダ122の出力に応じていずれか一方の入力の値を選
択して分岐先情報として出力するためのセレクタ124
とを含む。
【0073】セレクタ124への入力は、図示されない
回路によって生成されるが、それらは、プログラムカウ
ンタ22の出力と、主記憶12から読出された命令の内
容とから用意に生成することが可能である。
【0074】この第2の実施例のパイプライン方式プロ
セッサは次のように動作する。以下の説明ではBTB登
録判別器114についてのみ説明する。
【0075】まず、与えられた命令がPC相対分岐命令
であり、かつBTB登録ビットがセットされている場合
を考える。この場合配線120によって抽出された登録
指令信号はハイレベルである。したがってBTB20に
分岐予測情報の登録が行なわれる。登録される情報の内
容は次のようにして定められる。
【0076】デコーダ122は、オペコードをデコード
し、この場合ハイレベルの信号をセレクタ124に与え
る。セレクタ124はこのハイレベルの信号に応答し
て、PC+オフセットを選択して分岐先情報としてBT
B20に与える。したがってBTB20には、このPC
+オフセットが、当該PC相対分岐命令の分岐先情報と
して格納される。
【0077】次に、命令がPC相対分岐命令であるが、
BTB登録ビットがリセットされている場合を考える。
この場合登録指令信号はローレベルとなる。したがって
BTB20への分岐予測情報の登録は行なわれない。
【0078】次に、主記憶12から読出される命令が無
条件分岐命令である場合を考える。この場合にはコンパ
イラは、予めBTB登録ビットをセットしておくのは上
述のとおりである。
【0079】デコーダ122は、オペコードをデコード
し、この場合ローレベルの信号をセレクタ124に与え
る。セレクタ124はこのローレベルの信号に応答し
て、プログラムカウンタの上位ビットと即値フィールド
の値とを連接したものを選択し分岐先情報としてBTB
20に与える。したがってBTB20には、無条件分岐
命令の飛び先の絶対アドレスが格納されることになる。
【0080】以上のように、キャッシュラインフェッチ
時に、BTB登録判別器で各命令のデコードを行ない、
分岐命令の場合にはそのBTB登録ビットを参照して、
セットされている分岐命令はその予測情報をBTBに登
録する。一方、分岐命令でもBTB登録ビットがリセッ
トされているものはBTBへの登録は行なわない。
【0081】分岐命令の種類にかかわらず分岐確率が高
い分岐命令のみをキャッシュラインフェッチ時にBTB
に登録することができる。前方分岐であっても分岐確率
が高い分岐命令は第1回目の実行時にテークン予測をで
きる。後方分岐であっても分岐確率が低い命令はBTB
への登録は行なわないので、分岐成立予測を行なわな
い。分岐確率が低い命令をBTBに登録しないので、B
TBの各エントリには、予測のために有効な情報のみが
格納されることになり、BTBを効率よく使用すること
ができる。
【0082】
【発明の効果】以上のように請求項1記載のパイプライ
ン方式プロセッサによれば、主記憶から命令キャッシュ
メモリ内に読出される命令は、分岐先バッファ登録判別
手段により解読され、その命令が分岐命令である場合に
は、当該分岐命令に関する分岐情報を分岐先バッファに
登録する。命令キャッシュメモリに当該分岐命令が初め
て記憶され実行されるときにも、分岐先バッファには有
効な分岐情報が登録されていることになり、命令の初回
実行時にも有効な分岐予測を行なうことが可能になる。
そのため、分岐予測ヒット率の向上が期待できる。請求
項2記載のパイプライン方式プロセッサによれば、請求
項1記載のプロセッサの効果に加え、分岐命令の種類に
従って必要な分岐情報を分岐先バッファに登録すること
ができる。種々の分岐命令について、分岐予測ヒット率
の向上が期待できる。
【0083】請求項3記載のパイプライン方式プロセッ
サによれば、請求項2記載のプロセッサの効果に加え、
当該命令が予め定める複数種類の分岐命令のうちの1つ
であるときに、主記憶から命令キャッシュメモリに読出
される命令のオペランドと、プログラムカウンタの内容
とから、予め定める複数種類の命令の各々に対する分岐
先アドレスが生成され、当該命令の種類に応じていずれ
か1つを選択して分岐先バッファに与える。そのため、
プログラムカウンタの内容により分岐先アドレスが変化
するような分岐命令に対しても、分岐予測ヒット率の向
上が期待できる。
【0084】請求項4記載のパイプライン方式プロセッ
サによれば、請求項1記載のプロセッサの効果に加え、
主記憶から命令キャッシュメモリに読出された命令が解
読され、解読された命令の種類に従って必要な分岐情報
を生成して分岐先バッファに与える。登録指令手段は、
命令内に含まれる登録指定情報に従って、分岐先バッフ
ァに対して、分岐情報を登録すべきことを指令するの
で、複数種類の分岐命令に対して、比較的簡単な回路で
もって分岐予測ヒット率の向上を実現することができ
る。
【図面の簡単な説明】
【図1】 本発明の第1の実施例のパイプライン方式プ
ロセッサの概略ブロック図である。
【図2】 第1の実施例の命令キャッシュのブロック図
である。
【図3】 第1の実施例のBTB登録判別器のブロック
図である。
【図4】 第1の実施例のBTBのブロック図である。
【図5】 第2の実施例のBTB登録判別器のブロック
図である。
【符号の説明】
10 パイプライン方式プロセッサ、12 主記憶、1
4,114 BTB登録判別器、16 命令キャッシ
ュ、18 実行ユニット、20 分岐先バッファ、22
プログラムカウンタ、50,122 デコーダ、5
6,124 セレクタ。

Claims (4)

    【特許請求の範囲】
  1. 【請求項1】 主記憶と、 主記憶中の、実行すべき命令のアドレスを指定するプロ
    グラムカウンタと、 前記プログラムカウンタにより指定されるアドレスの命
    令を前記主記憶から読出して実行する命令実行手段と、 前記命令実行手段により読出が要求された命令を記憶し
    ていない場合に前記主記憶から当該命令を含む一群の命
    令を読出し記憶して、次に同じアドレスからの読出要求
    があったときに前記主記憶へのアクセスなしに前記命令
    実行手段に与える、高速アクセス可能な命令キャッシュ
    メモリと、 前記命令実行手段が実行する分岐命令に関する分岐情報
    を記憶し、前記分岐情報に基づいて分岐予測を行なっ
    て、分岐命令の次に読出すべき命令のアドレスを前記プ
    ログラムカウンタに設定する分岐先バッファと、 前記主記憶から前記命令キャッシュメモリに読出される
    命令を解読し、その命令が分岐命令である場合には、当
    該分岐命令に関する分岐情報を前記分岐先バッファに登
    録するための分岐先バッファ登録判別手段とを含む、パ
    イプライン方式プロセッサ。
  2. 【請求項2】 前記分岐先バッファ登録判別手段は、 前記主記憶から前記命令キャッシュメモリに読出される
    命令を解読して、前記分岐先バッファに対して、分岐情
    報を登録すべきことを指令する登録指令信号を出力する
    ための解読手段と、 前記解読手段により解読された命令の種類に従って必要
    な分岐情報を生成して前記分岐先バッファに与えるため
    の分岐情報生成手段とを含む、請求項1記載のパイプラ
    イン方式プロセッサ。
  3. 【請求項3】 前記解読手段は、 前記主記憶から前記命令キャッシュメモリに読出される
    命令を解読して、当該命令が予め定める複数種類の分岐
    命令のうちの1つであるときに前記登録指令信号を出力
    し、かつ、当該命令が、前記予め定める複数種類の分岐
    命令のいずれであるかを示す命令判別信号を出力するた
    めのデコーダを含み、 前記分岐情報生成手段は、 前記主記憶から前記命令キャッシュメモリに読出される
    命令のオペランドと、前記プログラムカウンタの内容と
    から、前記予め定める複数種類の命令の各々に対する分
    岐先アドレスを生成する分岐先アドレス手段と、 前記命令判別信号に応答して、前記分岐先アドレス生成
    手段の出力のいずれか1つを選択して前記分岐先バッフ
    ァに与えるための選択手段とを含む、請求項2記載のパ
    イプライン方式プロセッサ。
  4. 【請求項4】 分岐命令内には、当該分岐命令に関する
    分岐情報を分岐先バッファに登録すべきか否かを指定す
    るための登録指定情報が予め設定されており、 前記分岐先バッファ登録判別手段は、 前記主記憶から前記命令キャッシュメモリに読出される
    命令を解読する解読手段と、 前記解読手段により解読された命令の種類に従って必要
    な分岐情報を生成して前記分岐先バッファに与えるため
    の分岐情報生成手段と、 前記登録指定情報に従って前記分岐先バッファに対し
    て、分岐情報を登録すべきことを指令するための登録指
    令手段とを含む、請求項1記載のパイプライン方式プロ
    セッサ。
JP12502995A 1995-05-24 1995-05-24 パイプライン方式プロセッサ Expired - Fee Related JP3486690B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP12502995A JP3486690B2 (ja) 1995-05-24 1995-05-24 パイプライン方式プロセッサ
US08/625,180 US5740418A (en) 1995-05-24 1996-03-29 Pipelined processor carrying out branch prediction by BTB

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP12502995A JP3486690B2 (ja) 1995-05-24 1995-05-24 パイプライン方式プロセッサ

Publications (2)

Publication Number Publication Date
JPH08320788A true JPH08320788A (ja) 1996-12-03
JP3486690B2 JP3486690B2 (ja) 2004-01-13

Family

ID=14900094

Family Applications (1)

Application Number Title Priority Date Filing Date
JP12502995A Expired - Fee Related JP3486690B2 (ja) 1995-05-24 1995-05-24 パイプライン方式プロセッサ

Country Status (2)

Country Link
US (1) US5740418A (ja)
JP (1) JP3486690B2 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006338656A (ja) * 2005-05-31 2006-12-14 Arm Ltd 分岐予測コントロール
JP2007514237A (ja) * 2003-12-15 2007-05-31 フリースケール セミコンダクター インコーポレイテッド 分岐先バッファにおいてエントリを割り当てる方法及び装置
CN1324460C (zh) * 2004-03-09 2007-07-04 国际商业机器公司 用最近条目队列补充分支目标缓冲器的方法和系统
JP2011530104A (ja) * 2008-07-29 2011-12-15 フリースケール セミコンダクター インコーポレイテッド 分岐先バッファの割り当て

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6157988A (en) * 1997-08-01 2000-12-05 Micron Technology, Inc. Method and apparatus for high performance branching in pipelined microsystems
US7117347B2 (en) * 2001-10-23 2006-10-03 Ip-First, Llc Processor including fallback branch prediction mechanism for far jump and far call instructions
US20050144427A1 (en) * 2001-10-23 2005-06-30 Ip-First Llc Processor including branch prediction mechanism for far jump and far call instructions
US7343481B2 (en) * 2003-03-19 2008-03-11 Arm Limited Branch prediction in a data processing system utilizing a cache of previous static predictions
US20040225866A1 (en) * 2003-05-06 2004-11-11 Williamson David James Branch prediction in a data processing system
US20080040591A1 (en) * 2006-08-11 2008-02-14 Moyer William C Method for determining branch target buffer (btb) allocation for branch instructions
US20080040590A1 (en) * 2006-08-11 2008-02-14 Lea Hwang Lee Selective branch target buffer (btb) allocaiton
DE102006056222A1 (de) * 2006-11-29 2008-06-05 Daimler Ag Personenkraftwagen
JP2008204249A (ja) * 2007-02-21 2008-09-04 Renesas Technology Corp データプロセッサ
CN106951374B (zh) * 2016-01-06 2022-06-10 北京忆芯科技有限公司 用于检查块页地址的方法及其装置
KR101894894B1 (ko) 2017-06-16 2018-09-05 서울대학교산학협력단 바이트코드 처리 장치 및 동작 방법

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5440704A (en) * 1986-08-26 1995-08-08 Mitsubishi Denki Kabushiki Kaisha Data processor having branch predicting function
US5522053A (en) * 1988-02-23 1996-05-28 Mitsubishi Denki Kabushiki Kaisha Branch target and next instruction address calculation in a pipeline processor
US5163140A (en) * 1990-02-26 1992-11-10 Nexgen Microsystems Two-level branch prediction cache
US5507028A (en) * 1992-03-30 1996-04-09 International Business Machines Corporation History based branch prediction accessed via a history based earlier instruction address
US5623614A (en) * 1993-09-17 1997-04-22 Advanced Micro Devices, Inc. Branch prediction cache with multiple entries for returns having multiple callers
US5471597A (en) * 1993-12-23 1995-11-28 Unisys Corporation System and method for executing branch instructions wherein branch target addresses are dynamically selectable under programmer control from writable branch address tables
GB2285154B (en) * 1993-12-24 1998-04-01 Advanced Risc Mach Ltd Branch cache
US5530825A (en) * 1994-04-15 1996-06-25 Motorola, Inc. Data processor with branch target address cache and method of operation

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007514237A (ja) * 2003-12-15 2007-05-31 フリースケール セミコンダクター インコーポレイテッド 分岐先バッファにおいてエントリを割り当てる方法及び装置
CN1324460C (zh) * 2004-03-09 2007-07-04 国际商业机器公司 用最近条目队列补充分支目标缓冲器的方法和系统
JP2006338656A (ja) * 2005-05-31 2006-12-14 Arm Ltd 分岐予測コントロール
JP4727491B2 (ja) * 2005-05-31 2011-07-20 アーム・リミテッド 分岐予測コントロール
JP2011530104A (ja) * 2008-07-29 2011-12-15 フリースケール セミコンダクター インコーポレイテッド 分岐先バッファの割り当て

Also Published As

Publication number Publication date
JP3486690B2 (ja) 2004-01-13
US5740418A (en) 1998-04-14

Similar Documents

Publication Publication Date Title
US7836287B2 (en) Reducing the fetch time of target instructions of a predicted taken branch instruction
US5530825A (en) Data processor with branch target address cache and method of operation
US5805877A (en) Data processor with branch target address cache and method of operation
US4860197A (en) Branch cache system with instruction boundary determination independent of parcel boundary
US6185676B1 (en) Method and apparatus for performing early branch prediction in a microprocessor
US5276882A (en) Subroutine return through branch history table
JP3494736B2 (ja) 分岐先バッファを用いた分岐予測システム
US6550004B1 (en) Hybrid branch predictor with improved selector table update mechanism
US6247124B1 (en) Branch prediction entry with target line index calculated using relative position of second operation of two step branch operation in a line of instructions
US9361110B2 (en) Cache-based pipline control method and system with non-prediction branch processing using a track table containing program information from both paths of a branch instruction
US6263427B1 (en) Branch prediction mechanism
US5761723A (en) Data processor with branch prediction and method of operation
US6044459A (en) Branch prediction apparatus having branch target buffer for effectively processing branch instruction
US5774710A (en) Cache line branch prediction scheme that shares among sets of a set associative cache
JPH0334024A (ja) 分岐予測の方法とそのための装置
US20070266228A1 (en) Block-based branch target address cache
WO1990003001A1 (en) Pipeline structures and methods
JP3486690B2 (ja) パイプライン方式プロセッサ
KR20070118135A (ko) 인덱스당 2개 이상의 분기 타겟 어드레스를 저장하는 분기타겟 어드레스 캐시
US5761490A (en) Changing the meaning of a pre-decode bit in a cache memory depending on branch prediction mode
US5964869A (en) Instruction fetch mechanism with simultaneous prediction of control-flow instructions
JP2006520964A (ja) 分岐ターゲットに基づいて分岐予測をするための方法および装置
JP2006520964A5 (ja)
JP2010501913A (ja) 可変長命令セット内の分岐命令の最後の粒度(granularity)と関連付けられたキャッシュ分岐情報
US20090217002A1 (en) System and method for providing asynchronous dynamic millicode entry prediction

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20030924

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081031

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081031

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091031

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees