JPH09311787A - データ処理装置 - Google Patents

データ処理装置

Info

Publication number
JPH09311787A
JPH09311787A JP12858996A JP12858996A JPH09311787A JP H09311787 A JPH09311787 A JP H09311787A JP 12858996 A JP12858996 A JP 12858996A JP 12858996 A JP12858996 A JP 12858996A JP H09311787 A JPH09311787 A JP H09311787A
Authority
JP
Japan
Prior art keywords
branch
address
instruction
prediction
predictable
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
JP12858996A
Other languages
English (en)
Inventor
Harutaka Goto
治隆 後藤
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP12858996A priority Critical patent/JPH09311787A/ja
Publication of JPH09311787A publication Critical patent/JPH09311787A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Advance Control (AREA)

Abstract

(57)【要約】 【課題】 この発明は、簡単かつ少ない構成にして容易
な制御により、パイプライン処理におけるフェッチステ
ージにおいて分岐方向を予測し得るデータ処理装置を提
供することを課題とする。 【解決手段】 この発明は、分岐を予測する際に、現在
の実行しているフェッチPC13の一部と、予め分岐キ
ャッシュ1に格納されている分岐アドレスの一部を分岐
アドレス算出回路3により連結して予測分岐先アドレス
とし、連結できるか否かを示す分岐可否情報を分岐キャ
ッシュ1に格納しておき、その情報と分岐をするか否か
を予測する予測判定回路2の結果を使用し、パイプライ
ン処理における命令フェッチステージにおいて分岐予測
を行うようにしている。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】この発明は、パイプライン処
理のおけるフェッチステージにおいてプログラムの実行
順序制御命令(分岐/ジャンプ命令)の分岐方向を予測
するデータ処理装置に関する。
【0002】
【従来の技術】最近のプロセッサは、性能向上ならびに
動作速度の向上のために高度にパイプライン化されてお
り、命令が実際に実行されるまでにいくつかのパイプラ
インステージを経ている。
【0003】通常の演算命令だけでなく分岐命令の場合
も同様で、特に先行する命令の演算結果を利用して分岐
方向を判断するような分岐命令の場合には、分岐判定か
ら分岐先の命令を取り込むまでの遅延が大きくなる。す
なわち、分岐の判断がパイプラインステージの比較的下
流で行われるので、分岐することか決定した時には、既
にパイプラインに入っている命令が無効になってしま
う。この無効になった命令の分が無駄になる。
【0004】このように、高度にパイプライン化された
プロセッサでは、分岐命令の実行時間が全体の性能を律
則するため、分岐の方向を予測し効率よく分岐命令を実
行する手法がいくつか考案されている。
【0005】例えば、図13の構成に示すように、BT
B(Branch Target Buffer)100に分岐先アドレスを記
憶し、BHT(Branch Histry Table) 101に分岐の履
歴を記憶し、分岐命令のアドレスからそれらの内容を取
り出せるようにした手法がある。プロセッサによって
は、分岐の履歴情報と分岐先のアドレスだけを別のメモ
リに保存しておく構成を採用しているものもある。メモ
リから命令を取り出すパイプラインステージ(命令フェ
ッチステージ)で、BTB100から分岐方向の履歴を
読み出し、予測判定回路102によって分岐すべきと予
測されたならば、同時に分岐先アドレスをBTB100
から読み出し、読み出したアドレスに命令フェッチステ
ージで分岐する。
【0006】この手法の利点は、分岐先アドレスの全て
のビットをBTB100に保存しているため、直ちに分
岐先の予測ができることである。
【0007】一方、欠点として、BTB100のエント
リ数が少ないと性能を出すことができないことがあげら
れる。また、分岐アドレスの全てのアドレスを保持する
ため、コストが高くなる。さらに、BTB100をセッ
トアソシアティブ方式、フルアソシアティブ方式のよう
にタグ付きの構成にすると、さらにコストが高くなる。
【0008】これらを解消するために、先のBHT10
1のみを、別途大きなメモリに格納し、BTB100に
分岐先アドレスが見つからなかった場合を補間するよう
な予測機能を追加しているプロセッサがある。大容量の
キャッシュメモリを搭載しているプロセッサでは、キャ
ッシュメモリの構成に着目して、キャッシュメモリに特
殊化した形でBTBのようなバッファを用意している。
【0009】例えば、図14に示すように、次にキャッ
シュメモリ(命令data)104のどのラインを読み
出すべきかという情報と、分岐方向の履歴を分岐キャッ
シュ105に記憶してキャッシュのライン毎に用意し、
キャッシュをアクセスする度に、次に読み出すべきキャ
ッシュのライン番号を使って、次のラインを予測する。
さらに、セットアソシアティブ構成のキャッシュではど
ちらかのセットを読み出すべきかを予測する手法もあ
る。
【0010】この手法の利点として、1サイクル後に次
に読み出すべきキャッシュのラインを予測できるので、
分岐の予測率が高ければ効率のよい命令フェッチを行う
ことが可能である。また、すべてのアドレスを持たない
ため、64ビットマシンなどの広いアドレス空間を持っ
たプロセッサに対してはメモリ効率がよい。
【0011】一方、欠点として、キャッシュのラインを
予測するために、実際の分岐アドレスは分岐命令をデコ
ードするまでわからないことがあげられる。すなわち、
分岐先の上位のアドレスをどこかで作成する必要があ
る。分岐アドレスをなんらかの形で作成し、その後命令
TLB106をアクセスしてから、キャッシュミス判定
を行なければならないため、キャッシュから読み出した
タグの値をキャッシュミス判定できるパイプラインステ
ージまで保持する必要がある。また、キャッシュミスが
見つかった場合には、実行をそこで中断し、プログラム
カウンタ(PC)を元に戻してやる必要があり、制御が
複雑になり、かつレジスタなどのハードウェアが増加す
る。
【0012】一方、キャッシュのライン番号ではなく、
分岐先のアドレスすべてを用意する方法もあるが、特に
64ビット級のプロセッサにおいては、キャッシュの1
ライン毎に64ビットのアドレスを用意しなければなら
ず、メモリコストが極めて大きくなる。これは消費電力
の増加につながる。
【0013】また、キャッシュのライン番号を一切用意
せずに1ライン中に入っている命令の分岐の場所を用意
し、そのアドレスから実際の分岐先のアドレスを計算し
(計算できる場合のみ)分岐する手法もある。
【0014】この手法の利点としては、分岐先アドレス
を実際に求めているため、キャッシュミス判定が早く可
能であり、アドレスを格納するためのメモリが不要とな
り、メモリの面積、消費電力において有利である。一
方、欠点として、分岐先を予測するまでに必ず時間がか
かることがあげられる。すなわち、予測情報の読み出し
→分岐命令の選択→アドレスの計算のパスが必要になる
ため、2サイクル時間が必要になる場合がある。また、
アドレス計算のために加算器が必要となる。
【0015】
【発明が解決しようとする課題】以上説明したように、
高度にパイプライン化された従来のデータ処置装置にあ
っては、分岐命令の実行時間が装置全体の性能を左右し
ていたため、分岐命令の迅速な実行が求められていた。
そこで、分岐命令を迅速に実行するために、分岐先を予
測する手法がとられていた。
【0016】しかしながら、分岐先を予測する従来の手
法にあっては、構成が増加したり制御が複雑になるとい
った不具合を招いていた。
【0017】そこで、この発明は、上記に鑑みてなされ
たものであり、その目的とするところは、簡単かつ少な
い構成にして容易な制御により、パイプライン処理にお
けるフェッチステージにおいて分岐方向を予測し得るデ
ータ処理装置を提供することにある。
【0018】
【課題を解決するための手段】上記目的を達成するため
に、請求項1記載の発明は、記憶領域の全アドレス空間
内において分岐命令の分岐先が予測可能な予め設定され
た分岐予測可能範囲のアドレスを示し、予測分岐先アド
レスの一部となる分岐予測可能アドレスと、過去に算出
された分岐先アドレスが前記分岐予測可能範囲であった
(予測可)か否か(予測否)を示す分岐予測可否情報
と、過去における分岐の成立/不成立を示す分岐履歴情
報とを記憶し、それぞれの情報はフェッチされる命令の
アドレスに対応して記憶され、命令のフェッチに対応し
て読み出され、分岐の成立/不成立が確定する毎に更新
されてなる分岐バッファと、前記分岐バッファから読み
出された分岐予測可否情報と分岐履歴情報に基づいて、
フェッチした命令が分岐するか否かを予測判定する予測
判定回路と、前記予測判定回路によって分岐が予測され
た場合は、命令をフェッチしたフェッチアドレスの一部
に前記分岐バッファから読み出された分岐予測可能アド
レスを連結して予測分岐先アドレスを算出する分岐アド
レス算出回路とを有し、パイプライン処理における命令
フェッチステージにおいて予測分岐先アドレスを求める
ことを特徴とする。
【0019】請求項2記載の発明は、請求項2記載の発
明において、パイプライン処理におけるデコードステー
ジにおいて分岐命令の分岐先アドレスが算出されて確定
されると、算出された分岐先アドレスの一部を前記分岐
バッファに記憶される前記分岐予測可能アドレスとして
更新し、算出された分岐先アドレスの内前記分岐予測可
能アドレスとして更新された部分を除く分岐先アドレス
と前記分岐アドレス算出回路によって算出された予測分
岐先アドレスの同一部分とが一致した場合は算出された
分岐先アドレスが前記分岐予測可能範囲内のアドレスと
して分岐予測可とし、不一致の場合には算出された分岐
先アドレスが前記分岐予測可能範囲外のアドレスとして
分岐予測否として前記分岐予測可否情報を更新すること
を特徴とする。
【0020】
【発明の実施の形態】以下、図面を用いてこの発明の一
実施形態を説明する。
【0021】図1はこの発明の一実施形態に係るデータ
処理装置の構成を示す図である。
【0022】図1に示すデータ処理装置は、その構成が
パイプライン処理におけるフェッチ(F)ステージ、デ
コード(D)ステージ、命令発行(I)ステージ及び実
行(E)ステージにそれぞれ分かれており、図2に示す
パイプライン処理の流れにしたがって命令を実行処理
し、フェッチステージにおいて最初に実行順序制御命令
(分岐命令/ジャンプ命令)の分岐予測を行うようにし
ている。
【0023】まず、この実施形態のデータ処理装置の構
成を説明する前に、このデータ処理装置で実行される命
令の命令フォーマットを図3及び図4を参照して説明す
る。
【0024】図1に示すデータ処理装置で実行される命
令のフォーマットは、図3に示すように3つのフォーマ
ットに分かれており、それぞれのフィールドの機能は図
3に示す通りである。
【0025】分岐命令は、図4に示すように、命令フォ
ーマットでは図3に示すI−Typeに属している。例
えば、BEQ命令は、rs,rtフィールドで示される
レジスタの内容を比較し、比較結果が等しければ分岐す
る。分岐先のアドレスは、Immediateで示され
る符号付の値を4倍し、分岐命令の命令アドレスに加え
たものになる。BGETZ命令は、rtフィールドが分
岐の条件を示している。この命令ではrsフィールドで
示されるレジスタの内容が0以上であれば分岐する。分
岐先のアドレスは、先のBEQ命令と同じである。
【0026】ジャンプ命令には、直接ジャンプ先を指定
できる命令、例えばJ命令と、間接的にジャンプを指定
する命令、例えばJR命令とがある。J命令は、図3に
示すJ−Typeに属しており、targetを4倍
し、ジャンプ命令のアドレスの上位4ビットと連結した
値をジャンプ先アドレスとしてジャンプを行う。この命
令は無条件にジャンプを行う。JR命令は、図3に示す
R−Typeに属しており、rsフィールドが示すレジ
スタの内容にジャンプする。これは主に多方向分岐、サ
ブルーチンからのリターンに用いられる。この命令の特
性から分岐予測が非常に行い難いため、本実施形態で
は、この命令の予測は割愛する。しかしながら、Ret
urn Stackなどのハードウェアを投入すること
により予測は可能になる。
【0027】次に、本実施形態のデータ処理装置の前提
条件を説明する。
【0028】ここでは便宜上、キャッシュメモリを搭載
した分岐遅延スロットルなどのスカラプロセッサとす
る。本発明は、キャッシュメモリのないプロセッサや、
分岐遅延スロットがあるようなプロセッサ、またスーパ
ースカラプロセッサでも同様に有効な手法である。
【0029】また、本発明は、分岐またはジャンプ予測
(以下分岐予測)できる範囲を限定し、例えば図5に示
すようにして限定する。
【0030】図5に示すように、ある決められたページ
サイズ(この実施形態では8Kバイト)を定義し、分岐
/ジャンプ命令が存在するページと同じページに分岐ま
たはジャンプする場合には、分岐先のアドレスが予測可
能であるが、その他の場合には分岐先のアドレスの予測
は不可能とする。なお、分岐をすべきかどうかの予測は
別途分岐の履歴を使って予測を行う。このように制限が
あるため、コンパイラなどのソフトウェアにより、プロ
グラムの位置を制御する必要がある。
【0031】また、この手法にて分岐先アドレスの予測
が不可能な場合でも、パイプラインの別のステージ(デ
コードステージ)にて、分岐先のアドレスが求まれば分
岐すべきかどうかの予測は可能であるため、そのパイプ
ラインステージから改めて分岐を行える。
【0032】次に、図1に戻って、この実施形態のデー
タ処理装置の構成を説明する。
【0033】図1において、データ処理装置は、命令の
フェッチステージにおいて分岐予測を行うための構成と
して、分岐キャッシュ(分岐バッファ)1、予測判定回
路2及び分岐アドレス算出回路3を備え、命令のデコー
ドステージにおいて分岐予測を行うための構成として、
予測判定回路4と分岐アドレス算出回路5を備え、実行
ステージにおいて分岐制御回路6及び分岐履歴更新回路
7を備えており、加えてキャッシュメモリを有するデー
タ処理装置が命令を実行処理するために通常備えてい
る、命令を格納する命令data8、命令タグ9、命令
TLB10、命令デコーダ11、レジスタファイル12
を備えている。
【0034】分岐キャッシュ1は、図5に示す記憶領域
の全アドレス空間内において分岐命令の分岐先が予測可
能な予め設定された分岐予測可能範囲(8Kバイト)の
アドレスを示し、予測分岐先アドレスの一部となる分岐
予測可能アドレス(分岐ページオフセット)と、過去に
算出された分岐先アドレスが分岐予測可能範囲であった
(予測可)か否か(予測否)を示す分岐予測可否情報
と、過去における分岐の成立/不成立を示す分岐履歴情
報とを記憶し、それぞれの情報はフェッチされる命令の
アドレスに対応して記憶され、命令のフェッチに対応し
て読み出され、分岐の成立/不成立が確定する毎に更新
される。
【0035】予測判定回路2は、分岐キャッシュ1から
読み出された分岐予測可否情報と分岐履歴情報に基づい
て、フェッチした命令が分岐するか否かをフェッチステ
ージにおいて予測判定する。
【0036】分岐アドレス算出回路3は、予測判定回路
2によって分岐が予測された場合は、命令をフェッチし
たフェッチアドレスの一部に分岐キャッシュ1から読み
出された分岐予測可能アドレスを連結して予測分岐先ア
ドレスを算出する。
【0037】デコードステージの分岐アドレス算出回路
5と分岐履歴更新回路7は、パイプライン処理における
デコードステージにおいて分岐命令の分岐先アドレスが
算出されて確定されると、算出された分岐先アドレスの
一部を分岐キャッシュ1に記憶される分岐予測可能アド
レスとして更新し、算出された分岐先アドレスの内分岐
予測可能アドレスとして更新された部分を除く分岐先ア
ドレスと分岐アドレス算出回路3によって算出された予
測分岐先アドレスの同一部分とが一致した場合は算出さ
れた分岐先アドレスが分岐予測可能範囲内のアドレスと
して分岐予測可とし、不一致の場合には算出された分岐
先アドレスが分岐予測可能範囲外のアドレスとして分岐
予測否として分岐予測可否情報を更新する。
【0038】分岐予測は、Fステージ、Dステージの2
つのステージで行われ、Eステージで実際に分岐の条件
を判断し、もし予測が誤っていれは再度分岐を行う。
【0039】Fステージでは、フェッチPC13を使用
して、命令キャッシュ(命令data8,命令ダグ9、
分岐キャッシュ1)、命令TLB10をアクセスする。
命令キャッシュ、命令TLB10は一般的な構成である
ため、説明を省略する。命令キャッシュの構成は、セッ
トアソシアティブ、ダイレクトマップでも構わない。ま
た、命令キャッシュがセットアソシアティブ構成の場合
には、分岐キャッシュ1も同様に同じウェイ数のセット
アソシアティブとなる。
【0040】分岐キャッシュ1には、分岐履歴(2ビッ
ト)、分岐予測可否を示す分岐予測可否情報(1ビッ
ト)、分岐先ページオフセット(13ビット)が格納さ
れている。
【0041】分岐履歴は2ビットで構成され、図6に示
すように、2ビットのステートマシンになっている。分
岐命令をEステージで実行する度に状態が遷移する。分
岐をするかどうかはこのステートマシンから予測する。
分岐予測可否を示すビットは、分岐先アドレスが予測可
能であることを示すビットであり、同時にFステージで
分岐予測が可能であるかどうかを示すビットである。分
岐先ページオフセットは13ビットで構成される。これ
は分岐先のアドレスが予測可能な範囲を8Kバイトに限
っているためである。このページオフセットとフェッチ
PC13の上位51ビットを連結し、予測分岐先アドレ
スとする。
【0042】これらの制御ビットは、キャッシュの1ラ
イン内にある命令1つにつき、1組格納されていてもよ
いし、複数の命令に対して1組与えても構わない。複数
の命令に対して1組の制御ビットが対応している場合に
は、これらのビットに加えて、「どの命令に対して分岐
を予測しているか」を示すための命令の位置を示すビッ
トを加えることができる。この「命令の位置を示すビッ
ト」と命令バッファを設け、命令フェッチと分岐予測を
デッカップリングすることにより、パイプラインの次の
ステージにて先行して命令予測が可能となる。
【0043】分岐キャッシュ1の内容を読み出すと、予
測判定回路2において、分岐履歴情報と分岐予測可否情
報を示すビットを使用して、分岐予測を行うか否かを調
べる。予測判定回路2は図7に示すようにして分岐予測
を行う。
【0044】分岐判定回路2で判定した結果を使用し
て、分岐アドレス算出回路3で分岐先のアドレスを選択
する。分岐アドレス算出回路3は、図8に示すように、
フェッチPC13に保持されたフェッチアドレスの上位
51ビットと分岐先ページオフセットを連結して予測分
岐先アドレスを生成する連結器14と、フェッチPC1
3のフェッチアドレスに“4“を加算して分岐しない場
合の次アドレスを算出する加算器15と、予測判定回路
2の判定結果にしたがってフェッチPC13、連結器1
4又は加算器15のアドレスを選択するマルチプレクサ
(MUX)を備えて構成される。
【0045】分岐予測が成立した場合には、分岐先ペー
ジオフセット(13ビット)と、現在のフェッチPC1
3の上位51ビットを連結して予測分岐先アドレスとす
る。連結動作しか行わないため、加算器が不要であり、
アドレスが簡単に求まるが、ページの外へ分岐するよう
な場合は予測ができない。分岐を行わない場合には、現
在のフェッチPC13の値に“4”を加えて次の命令ア
ドレスを算出する。パイプラインがストールするような
場合には、現在のフェッチPC13の値をそのまま出力
する。
【0046】Dステージでは、命令キャッシュから読み
出したデータをデコーダ11でデコードする。また、F
ステージで予測できなかった命令やページ外への分岐命
令の予測、そして間違って分岐予測をした場合のリカバ
リもこのステージで行う。
【0047】デコードステージの予測判定回路5では、
分岐キャッシュ1から読み出した分岐履歴情報と分岐予
測可否情報を示すビット、Fステージで判定した分岐予
測結果、命令のデコード結果(分岐命令/ジャンプ命令
であるかどうかを判定)を使用して、改めて分岐予測が
可能かどうかを調べる。これらは図9に示すようにして
判定される。Dステージでは、すでに命令が分岐命令/
ジャンプ命令であることが判明しているため、実際に分
岐すべきアドレスを計算することができる。
【0048】分岐アドレス算出回路5は、図10に示す
ように構成されて分岐先アドレスの算出を行う。分岐命
令は、命令からImmediate値を取り出し、2ビ
ットシフトと符号拡張を行い、フェッチPC13に加算
する。Dステージでは、無条件ジャンプJ命令に対して
もデコードを行い、ジャンプ動作を行う。予測判定回路
4で求めた分岐予測の結果において、分岐予測が成立し
ていれば分岐を行う。
【0049】分岐アドレス算出回路5では、求めた分岐
先のアドレスが次の実行の際にFステージで算出可能で
あるかどうかを示す分岐予測可否情報として、図10に
示す分岐加算器17のビット13からのオーバフロー情
報を取り出す。取り出されたビット13がオーバフロー
しているならば、上位16ビットは変化している。すな
わち、8Kバイトのページサイズからはみ出しているこ
とを示すことにある。また、分岐命令やジャンプ命令で
ない命令で分岐が行われているような場合には、デコー
ドPC18に4バイト分を加え、次の命令の先頭アドレ
スを求めて、命令の実行をやりなおす。
【0050】Iステージでは、分岐命令実行に必要なレ
ジスタを読み出す。図4に示すように、命令フォーマッ
トのrs,rtフィールドを使ってレジスタファイル1
2を読み出す。またIステージでは、分岐が予測された
が、実際には分岐しなかったことがわかった場合には、
元のプログラムの流れに戻るための戻り先のアドレス計
算を行う。図1に示すデータ処理装置では、遅延分岐を
採用していないため、次の命令の先頭アドレスを求める
ため、1命令分の命令長(4バイト)を分岐命令のアド
レスに加える。
【0051】Eステージでは、分岐条件の判定を行い、
分岐が成立したか否かをチェックする。分岐の条件の判
定は、予測ではなく本来の命令の実行として行う。Fス
テージ、Dステージで行ってきた分岐予測の結果は、フ
リップフロップ(F/F)で順番に下流のパイプライン
に転送される。これらの結果と、本来の結果が正しいか
どうかをチェックする。さらに、予測した予測分岐先ア
ドレスが本当に正しいかどうかもチェックする。このチ
ェックは、分岐制御回路6が図11に示すようにして行
う。
【0052】分岐予測の結果が正しくない、もしくは、
予測した分岐先アドレスが正しくない場合には、再度正
しい分岐先アドレスに分岐をしなおす。また、Eステー
ジでは、次に同じ分岐命令を実行する時のために、分岐
キャッシュ1を更新する。分岐履歴情報は、分岐履歴更
新回路7によって図6に示すステートマシンのアルゴリ
ズムで更新を行い、その結果を分岐キャッシュ1に書き
込む。分岐予測可否情報は、オーバフローとしてIステ
ージの分岐アドレス算出回路5で求めている。これをE
ステージに転送して分岐キャッシュ1に書き込む。分岐
先のページオフセットは、分岐先アドレスの下位13ビ
ットをそのまま格納する。
【0053】このように、Eステージにおいて分岐情報
を更新するため、初めて実行する分岐命令に関しては分
岐キャッシュ1に情報が入っていない。初めて分岐/ジ
ャンプを実行する場合には、Fステージにおける分岐の
予測は行わず、Dステージで分岐を予測する。
【0054】このような実施形態においては、パイプラ
イン処理におけるフェッチステージにおいて分岐を予測
することが可能となり、分岐命令を迅速に実行処理する
ことができる。また、予測できる範囲を特定の領域内に
限定しているので、ハードウェア量を簡単にして、制御
を容易にすることができる。
【0055】図12はこの発明の他の実施形態に係るデ
ータ処理装置の構成を示す図であり、図12に示す実施
形態は、データ処理装置にキャッシュメモリを備えてい
ないデータ処理装置に本発明を適用した実施形態であ
り、その特徴とするところは、分岐キャッシュ1に代え
て、BHT(Branch Histry Table) 19に分岐履歴情報
を保持し、BOB(Branch Offset Buffer)20に分岐予
測可否情報と分岐先ページオフセットを記憶するように
したことにあり、上記実施形態と同様な効果を得ること
ができる。
【0056】この発明の実施形態の分岐キャッシュ1と
分岐アドレス算出回路3の組合せは、ほぼBranch Targe
t Bufferと等価な機能を果たす。分岐先のアドレスを全
ビット求めることができるため、キャッシュのライン予
測のようなキャッシュに特化することはない。
【0057】また、独立にBHT(Branch Histry Tabl
e) とページオフセットのメモリを別々に設け、BHT
用のメモリをより大きくとることにより、Dステージで
の分岐予測率を高めることができる。
【0058】
【発明の効果】以上説明したように、この発明によれ
ば、過去の分岐の履歴及び過去の分岐先の予測の可否を
示す情報を用いて、分岐先の予測可能範囲を特定の領域
内に限定して分岐方向を予測するようにしたので、簡単
かつ少ない構成にして容易な制御により、命令のフェッ
チステージにおいて分岐先の予測を行うことができる。
これにより、分岐命令を迅速に実行することが可能とな
り、高度にパイプライン化されたデータ処理装置の処理
速度を向上させることができる。
【図面の簡単な説明】
【図1】この発明の一実施形態に係るデータ処理装置の
構成を示す図である。
【図2】図1に示す装置におけるパイプラインの構成を
示す図である。
【図3】図1に示す装置で実行される命令のフォーマッ
トを示す図である。
【図4】図1に示す装置で実行される分岐命令、ジャン
プ命令のフォーマットを示す図である。
【図5】メモリ空間における分岐予測が可能となる範囲
を示す図である。
【図6】分岐履歴の更新アルゴリズムを示す図である。
【図7】図1に示す予測判定回路2の動作を示す図であ
る。
【図8】図1に示す分岐アドレス算出回路3の構成を示
す図である。
【図9】図1に示す予測判定回路4の動作を示す図であ
る。
【図10】図1に示す分岐アドレス算出回路5の構成を
示す図である。
【図11】図1に示す分岐制御回路6の動作を示す図で
ある。
【図12】この発明の他の実施形態に係るデータ処理装
置の構成を示す図である。
【図13】BTBを用いて分岐予測を行う従来のデータ
処理装置の構成を示す図である。
【図14】キャッシュのライン番号を用いて分岐予測を
行う従来のデータ処理装置の構成を示す図である。
【符号の説明】
1 分岐キャッシュ 2,4 予測判定回路 3,5 分岐アドレス算出回路 6 分岐制御回路 7 分岐履歴更新回路 8 命令data 9 命令タグ 10 命令TLB 11 デコーダ 12 レジスタファイル 13 フェッチPC 14 連結器 15,18 加算器 16 マルチプレクサ 17 デコードPC 19 BHT 20 BOB

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 記憶領域の全アドレス空間内において分
    岐命令の分岐先が予測可能な予め設定された分岐予測可
    能範囲のアドレスを示し、予測分岐先アドレスの一部と
    なる分岐予測可能アドレスと、過去に算出された分岐先
    アドレスが前記分岐予測可能範囲であった(予測可)か
    否か(予測否)を示す分岐予測可否情報と、過去におけ
    る分岐の成立/不成立を示す分岐履歴情報とを記憶し、
    それぞれの情報はフェッチされる命令のアドレスに対応
    して記憶され、命令のフェッチに対応して読み出され、
    分岐の成立/不成立が確定する毎に更新されてなる分岐
    バッファと、 前記分岐バッファから読み出された分岐予測可否情報と
    分岐履歴情報に基づいて、フェッチした命令が分岐する
    か否かを予測判定する予測判定回路と、 前記予測判定回路によって分岐が予測された場合は、命
    令をフェッチしたフェッチアドレスの一部に前記分岐バ
    ッファから読み出された分岐予測可能アドレスを連結し
    て予測分岐先アドレスを算出する分岐アドレス算出回路
    とを有し、 パイプライン処理における命令フェッチステージにおい
    て予測分岐先アドレスを求めることを特徴とするデータ
    処理装置。
  2. 【請求項2】 パイプライン処理におけるデコードステ
    ージにおいて分岐命令の分岐先アドレスが算出されて確
    定されると、算出された分岐先アドレスの一部を前記分
    岐バッファに記憶される前記分岐予測可能アドレスとし
    て更新し、算出された分岐先アドレスの内前記分岐予測
    可能アドレスとして更新された部分を除く分岐先アドレ
    スと前記分岐アドレス算出回路によって算出された予測
    分岐先アドレスの同一部分とが一致した場合は算出され
    た分岐先アドレスが前記分岐予測可能範囲内のアドレス
    として分岐予測可とし、不一致の場合には算出された分
    岐先アドレスが前記分岐予測可能範囲外のアドレスとし
    て分岐予測否として前記分岐予測可否情報を更新するこ
    とを特徴とする請求項1記載のデータ処理装置。
JP12858996A 1996-05-23 1996-05-23 データ処理装置 Pending JPH09311787A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP12858996A JPH09311787A (ja) 1996-05-23 1996-05-23 データ処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP12858996A JPH09311787A (ja) 1996-05-23 1996-05-23 データ処理装置

Publications (1)

Publication Number Publication Date
JPH09311787A true JPH09311787A (ja) 1997-12-02

Family

ID=14988498

Family Applications (1)

Application Number Title Priority Date Filing Date
JP12858996A Pending JPH09311787A (ja) 1996-05-23 1996-05-23 データ処理装置

Country Status (1)

Country Link
JP (1) JPH09311787A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007099605A1 (ja) * 2006-02-28 2007-09-07 Fujitsu Limited 圧縮したアドレス情報により分岐予測する処理装置
JP2013004101A (ja) * 2011-06-17 2013-01-07 Freescale Semiconductor Inc データプロセッサ内での分岐先バッファのアドレス指定

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007099605A1 (ja) * 2006-02-28 2007-09-07 Fujitsu Limited 圧縮したアドレス情報により分岐予測する処理装置
US7949862B2 (en) 2006-02-28 2011-05-24 Fujitsu Limited Branch prediction table storing addresses with compressed high order bits
JP5136405B2 (ja) * 2006-02-28 2013-02-06 富士通株式会社 演算処理装置及び演算処理装置の制御方法
JP2013004101A (ja) * 2011-06-17 2013-01-07 Freescale Semiconductor Inc データプロセッサ内での分岐先バッファのアドレス指定

Similar Documents

Publication Publication Date Title
JP5889986B2 (ja) 実行された命令の結果を選択的にコミットするためのシステムおよび方法
JP3871883B2 (ja) 間接分岐ターゲットを計算するための方法
US7203824B2 (en) Apparatus and method for handling BTAC branches that wrap across instruction cache lines
US6338136B1 (en) Pairing of load-ALU-store with conditional branch
US7444501B2 (en) Methods and apparatus for recognizing a subroutine call
US7234045B2 (en) Apparatus and method for handling BTAC branches that wrap across instruction cache lines
US7266676B2 (en) Method and apparatus for branch prediction based on branch targets utilizing tag and data arrays
JP5231403B2 (ja) スライドウィンドウブロックベースの分岐ターゲットアドレスキャッシュ
JP2009536770A (ja) ブロックに基づく分岐先アドレスキャッシュ
US11099850B2 (en) Branch prediction circuitry comprising a return address prediction structure and a branch target buffer structure
JP2006520964A5 (ja)
JP3486690B2 (ja) パイプライン方式プロセッサ
WO1999041659A1 (en) Microprocessor including multiple register files occupying the same logical space
WO2008022190A1 (en) Methods and apparatus for reducing lookups in a branch target address cache
JPH0773104A (ja) キャッシュ・システム
US7234046B2 (en) Branch prediction using precedent instruction address of relative offset determined based on branch type and enabling skipping
JPH03129432A (ja) 分岐制御回路
JP2001236224A (ja) 分岐予測テーブル汚染の低減方法
JPH06266556A (ja) データ処理装置
US7472264B2 (en) Predicting a jump target based on a program counter and state information for a process
JPH09311787A (ja) データ処理装置
Hasan et al. An improved pipelined processor architecture eliminating branch and jump penalty
JP4728877B2 (ja) マイクロプロセッサおよびパイプライン制御方法
JP2001022577A (ja) 情報処理装置
US20040128482A1 (en) Eliminating register reads and writes in a scheduled instruction cache

Legal Events

Date Code Title Description
A02 Decision of refusal

Effective date: 20040106

Free format text: JAPANESE INTERMEDIATE CODE: A02