JPH07281895A - 分岐キャッシュ - Google Patents

分岐キャッシュ

Info

Publication number
JPH07281895A
JPH07281895A JP6297364A JP29736494A JPH07281895A JP H07281895 A JPH07281895 A JP H07281895A JP 6297364 A JP6297364 A JP 6297364A JP 29736494 A JP29736494 A JP 29736494A JP H07281895 A JPH07281895 A JP H07281895A
Authority
JP
Japan
Prior art keywords
branch
instruction
cache
address
data
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
JP6297364A
Other languages
English (en)
Other versions
JP3549595B2 (ja
Inventor
David V Jaggar
ビビアン ジャガー デビッド
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.)
ARM Ltd
Original Assignee
Advanced Risc Machines Ltd
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 Advanced Risc Machines Ltd filed Critical Advanced Risc Machines Ltd
Publication of JPH07281895A publication Critical patent/JPH07281895A/ja
Application granted granted Critical
Publication of JP3549595B2 publication Critical patent/JP3549595B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime 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/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)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

(57)【要約】 【目的】パイプラインシステム内の分岐命令に起因する
遅延を軽減しかつ電力消費の少ない分岐キャッシュを提
供することを目的とする。 【構成】命令ストリームを処理するパイプラインプロセ
ッサと、ストリーム内の分岐命令のアドレスを識別する
ためのキャッシュタグと、前記分岐命令に続いて処理さ
れるネクスト分岐命令のアドレスを識別するための次の
分岐データとを記憶する、複数のキャッシュラインを有
する分岐キャッシュメモリと、最も最近に読み込まれた
キャッシュラインのネクスト分岐データが、パイプライ
ンで処理されるアドレスを識別する際に、複数のキャッ
シュタグをパイプラインで処理されるアドレスと比較さ
せるトリガをかけるキャッシュリードトリガ装置とで構
成する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は分岐キャッシュを使用し
たデータ処理の分野に関する。
【0002】
【従来の技術】各々の命令の実行を、いくつかのフェー
ズ(通常パイプラインステージと呼ばれる)に分割する
パイプライン技術を具備するコンピュータが知られてい
る。良好なパフォーマンスをこの様なシステムから得る
ために、スムーズでかつ連続した命令のフローがパイプ
ラインを通ることが重要である。命令のストリーム内の
分岐命令の実行はこの望まれるスムーズなフローを中断
しがちである。分岐命令を実行するためには、その命令
を分岐命令として認識し、もし該分岐が条件分岐の場合
は、プロセッサは、分岐が行われるべきかどうかを判断
し、分岐の分岐先アドレスを決定し、次の命令を分岐先
アドレスからフェッチしなければならない。パイプライ
ン処理システムの命令ストリーム内に分岐命令が存在す
るとパフォーマンスを低下させるが、それは次の命令が
パイプラインに供給される前に上記の処理が実行される
必要が有るためである。
【0003】上記の問題を軽減するために、分岐キャッ
シュを用意することが知られている。分岐キャッシュ
は、分岐の分岐先アドレスを分岐命令のデコードに依っ
てではなくキャッシュから供給することにより分岐命令
の実行時間を短縮する。これは通常は分岐命令のアドレ
スであるキャッシュタグを備え、そのキャッシュデータ
が分岐先命令のアドレスである分岐キャッシュを具備す
ることにより実現される。パイプラインに供給される各
々の命令は分岐キャッシュ内のキャッシュタグと比較さ
れるそれ自身の命令アドレスを有し、キャッシュヒット
が発生すると、次に分岐命令が識別され分岐先アドレス
がブランチキャッシュから供給されて、プロセッサに分
岐命令のフルデコードを必要とする事なくロード命令を
開始させる。
【0004】この様なブランチキャッシュの例はIEE
Eのコンピュータに関する論文集、巻42,第4号、1
993年4月、396ページ、”分岐先バッファの設計
と最適化”、クリス エイチ.パーレベルグ並びにアラ
ン ジエイ スミス著、及びIEEE技術報告、第CS
L−TR−92−553号、1992年12月、”大規
模自己履歴を用いた分岐予測”、ジョン ディー.ジョ
ンソンに記述されている。
【0005】この様なブランチキャッシュを使用するこ
とによって、パイプラインシステム内の分岐命令に起因
する遅延を減少させることに成功する一方で、システム
の電力消費を増加させるという問題が生ずる。パイプラ
インに供給された各々の命令の命令アドレスをキャッシ
ュメモリの全てのキャッシュタグと比較しなければなら
ないため、大量の電力を消費する不都合を生ずる。この
技術分野で不変の目的は、携帯式電池で電力供給される
機器製造を支援し、また熱消費問題を軽減する為に電力
消費を削減することである。
【0006】
【発明の目的と要約】本発明の目的は、上記の問題を解
決することである。
【0007】本発明の特徴の1側面は、 (a)命令ストリームを処理するためのパイプラインプ
ロセッサ、 (b)複数のキャッシュラインを有する分岐キャッシュ
メモリ、ここで前記各々のキャッシュラインは、(i)
前記命令ストリーム内の分岐命令のアドレスを識別する
ためのキャッシュタグと、(ii)前記分岐命令に続い
て処理されたネクスト分岐命令のアドレスを識別するネ
クスト分岐データとを記憶するように動作する (c)最も最近に読まれたキャッシュラインの前記ネク
スト分岐データが、前記パイプラインプロセッサで処理
されるアドレスを識別した時に、前記複数の前記キャッ
シュタグと前記パイプラインプロセッサで処理される前
記アドレスとの比較をトリガする、キャッシュリードト
リガ手段とを含む、データプロセッサを提供することで
ある。
【0008】分岐キャッシュ内にネクスト分岐データを
用意することは好ましい結果を有し、すなわちこのデー
タをネクスト分岐命令がいつ発生するかの予測に使用す
ることができ、従って処理される命令が分岐命令である
と示される際に、キャッシュの読み出しを制御してキャ
ッシュヒットをテストすることが可能である。このこと
により、分岐キャッシュを行うために必要な読みだし操
作数が削減され、従って分岐キャッシュにより得られる
高パフォーマンスを維持しつつ、システムの電力消費を
好適に低減する。
【0009】各々のキャッシュラインはキャッシュライ
ン識別子用のキャッシュタグが識別する分岐命令に続い
て実行される命令のアドレスを識別するためのデータを
記憶できることが理解されよう。これは分岐キャッシュ
を構成する際の通常の方法である。しかしながら、この
様な構成では、キャッシュヒットが識別されねばなら
ず、キャッシュから取り出されるターゲットデータと処
理に先だってプロセッサに供給されるターゲットデータ
は連続しているであろう。
【0010】本発明の提出された実施例では各キャッシ
ュラインは前記キャッシュラインの前記ネクスト分岐命
令の後に処理されるターゲット命令のアドレスを識別す
る分岐先ポインタを記憶するように動作し、前記最も最
近に読まれたキャッシュラインの前記ネクスト分岐デー
タが前記パイプラインプロセッサで処理される前記アド
レスを識別した際に、前記分岐先ポインタを用いて前記
命令ストリームを前記ターゲット命令に分岐制御させる
ためのターゲットアドレス装置を含む。
【0011】この様にして、個別の分岐命令に付随する
キャッシュタグを具備した各キャッシュラインは、後続
の分岐命令のターゲットアドレスを記憶する。そしてキ
ャッシュラインがリードされる時に、該キャッシュライ
ンからのネクスト分岐データはネクスト分岐が発生場所
を識別し、キャッシュラインからの分岐先ポインタは、
処理のネクスト分岐による移動先を識別する。従って、
ネクスト分岐データが分岐に到達したことを示す時に
は、分岐先ポインタは既にキャッシュから取り出されて
おり、プロセッサで直接使用することが可能である。
【0012】同様な方法で、本発明の提出された実施例
では各キャッシュラインは前記ターゲット命令を記憶す
るように動作可能であり、前記最も最近に読み取られた
キャッシュラインの前記ネクスト分岐データが前記パイ
プラインプロセッサで処理されるべき前記アドレスを識
別する時に、前記キャッシュラインの前記ターゲット命
令を前記パイプラインプロセッサに供給するためのター
ゲット命令装置を含む。
【0013】この特徴によれば、ネクスト分岐命令に対
するターゲット命令は各キャッシュライン内に記憶され
ており、ネクスト分岐命令に到達した時に直ちに利用可
能である。キャッシュは各分岐に対して複数の命令を記
憶することも可能である。これは分岐を取り扱うために
利用できる時間を増すことが出来るが、これは必要なキ
ャッシュサイズの増大とのバランスである。
【0014】本発明の別の好適な特徴は、各キャッシュ
ラインに対して前記キャッシュタグが前記分岐命令の直
前の命令のアドレスを含むことである。
【0015】この様にして、各分岐命令は先行命令のア
ドレスによって識別されることが出来、従って先行命令
がパイプラインに達すると、分岐命令に対するターゲッ
トアドレスを回復するために、分岐命令自体をパイプラ
インの中に一度もロードする事なくブランチキャッシュ
参照をトリガ出来る。
【0016】似た方法で、各分岐ラインに対して前記分
岐データが前記ネクスト分岐命令の直前の命令のアドレ
スを識別することが好適である。
【0017】ネクスト分岐データが多数の形式を取り得
ることが理解されよう。例えば、ネクスト分岐データは
ネクスト分岐命令に到達する前に実行される命令数の形
式を取ることもできる。次にこの数は各々の命令が実行
される毎に、ネクスト分岐命令に達するまでカウントダ
ウンされる。別の代替方法は、ネクスト分岐命令の命令
アドレスを利用することである。しかしながら本発明の
提出された特徴では、前記ネクスト分岐データはアドレ
スの低位ビットを含む。
【0018】ネクスト分岐命令のアドレスの低位ビット
のみをネクスト分岐データとして使用することは、ブラ
ンチキャッシュ内に記憶される必要のあるビット数を軽
減するという特長を有する一方で、システムのパフォー
マンスに大きな影響を与えることも無い。実際ほとんど
の分岐は比較的短くアドレスの低位ビットはネクスト分
岐命令のアドレスを特定する上で一般的に十分である。
【0019】キャッシュリードトリガ装置を実現するた
めの簡便な方法は、前記パイプラインプロセッサで処理
される前記アドレスを記憶するためのプログラムカウン
ターレジスタを用意し、そこで前記キャッシュリードト
リガ装置が前記プログラムカウンターレジスタからの前
記アドレスと前記ネクスト分岐データとを比較するため
の比較器を有し、前記ブランチキャッシュメモリにイネ
ーブル信号を出力するやり方である。
【0020】ブランチキャッシュが有効データで簡便に
満たされるようにするために好適なことは、分岐命令を
検出するための分岐命令検出器を、前記命令ストリーム
内に分岐検出信号を発生させる目的で具備し、前記分岐
検出信号に応答し前記パイプラインプロセッサで処理さ
れる前記アドレスから導き出されたネクスト分岐データ
と、前記パイプラインプロセッサで処理されるアドレス
から導き出されたキャッシュタグとを、直前の分岐命令
が検出された時にキャッシュラインに書き込むためのキ
ャッシュ書き込み手段を具備することである。
【0021】本発明の実施例に於てはまた、分岐先ポイ
ンタとターゲット命令とを各キャッシュライン内で使用
しており、好適なことは前記キャッシュ書き込み装置が
前記分岐命令をデコードして前記分岐先ポインタと前記
ターゲット命令とを判定し前記キャッシュラインに書き
込むことである。
【0022】別の特徴から見て、本発明は以下の手順を
含むデータ処理方法を提供する、 (a)命令ストリームをパイプライン処理し、 (b)複数のキャッシュラインを有する分岐キャッシュ
メモリの各キャッシュライン内へ、(i)前記命令スト
リーム内の分岐命令のアドレスを識別するキャッシュタ
グと(ii)前記分岐命令に引き続いて処理されるネク
スト分岐命令のアドレスを識別するネクスト分岐データ
とを記憶し、 (c)最も最近に読み込まれたキャッシュラインの前記
ネクスト分岐データが前記パイプラインプロセッサで処
理されるアドレスを識別したことに応答し、前記複数の
キャッシュラインの前記キャッシュタグと前記パイプラ
インプロセッサで処理される前記アドレスとの比較をト
リガする。
【0023】上記の、またその他の本発明の目的、特徴
並びに特長は例示された実施例の以下の詳細な説明を添
付図と組み合わせて読むことにより明かとなろう。
【0024】
【実施例】図1は分岐命令を含む命令のシーケンスを示
す。命令の処理は順番に命令アドレスに沿って分岐命
令、例えば命令Fまたは命令Y、に達するまで進行す
る。パイプライン処理は通常多数のパイプラインステー
ジ、例えば命令フェッチ、命令デコード、オペランドフ
ェッチ、実行および結果書き込み、に細分される。従っ
て分岐命令はパイプラインに沿っていくつかのステージ
を移動するまで完全には認識されず、その時間の間に、
分岐の実行結果には従わない不適切な命令が命令アドレ
スのシーケンスからパイプラインに送出される。
【0025】図1に図示された場合では、分岐命令Fは
命令Uへの分岐を引き起こす。従って命令G,H,I,
J,...は分岐命令Fに続いて処理されるべきではな
い。同様に、命令Uへの分岐に続いて、処理は命令V,
WおよびXを通って別の分岐命令Yに達するまで進む。
分岐命令Yは処理を命令Mに再び向け、ここから再び順
番に進む。
【0026】パイプライン処理システム内でのこの様な
分岐命令の発生に関する問題は知られている。表1はこ
れらの問題を図示し、図1に図示されたシーケンスを通
して処理が進行する際の異なるパイプラインステージで
実行される命令を示す。表1に於て分岐命令は、最終結
果書き込みステージに達し、分岐が指し示すアドレスが
使用可能となるまで完全には認識されず、またデコード
されないものと仮定している。従って、表1に於て分岐
命令Fに関する処理はパイプラインに沿ってそれが結果
書き込みステージで完全に認識されるまで進行する。こ
の時迄に命令G,H,IおよびJは、これらは実際は分
岐命令Fから見て実行されないにも係わらず先行のパイ
プラインステージに既にロードされてしまっている。こ
れを処理するために、パイプラインプロセッサにはバッ
クアウト機構が具備されており、ここでは部分的に実行
された命令が廃棄される。これは表1のダッシュで示さ
れている。
【0027】従って、分岐Fが結果書き込みステージに
到達した時に、命令G,H,I及びJは廃棄され分岐F
で示されるターゲットアドレスからターゲット命令Uが
命令フェッチステージの中にロードされる。次にターゲ
ット命令Uに続く命令V,W,X...のシーケンスが
後続の処理サイクルの際にパイプラインの中にロードさ
れる。
【0028】命令G,H,IおよびJをパイプライン中
への不必要なロードと、次にそれら命令を廃棄すること
により、結果書き込みステージに達するまで、命令シー
ケンスが正しい順序でプロセッサ経由で送出される一方
で、その間に該パイプラインプロセッサからは一切の有
用な出力が得られない。4命令サイクルが生ずる。
【表1】
【0029】表2はブランチキャッシュを有するシステ
ムで同一の処理を行った場合示す。このシステムに於
て、プロセッサの命令フェッチステージ内に送出された
各命令はブランチキャッシュのキャッシュタグと比較さ
れる。このブランチキャッシュは対象としている分岐に
関するターゲット命令アドレスを示す分岐命令のデータ
を含む。従って分岐命令Fが命令フェッチステージ内に
送出される際に、ブランチキャッシュヒットが生じ、命
令Uに対する命令アドレスがブランチキャッシュから取
り出されて、命令Uを直ちに次の命令サイクルでロード
することを可能とする。
【表2】
【0030】この様にして分岐命令Fはそれが結果書き
込みステージに達するまでは完全にデコードされないに
も係わらず、命令U,V,WおよびXは先のパイプライ
ンステージ内に既にロードされている。従って表1の中
で示されているような分岐命令に続く冗長処理サイクル
は発生しない。
【0031】表2に示されている動作は必要な分岐デー
タはブランチキャッシュ内に存在すると仮定している。
もしもそうでない場合は、分岐命令は表1に示されるよ
うにデコードされる必要がある。この場合、分岐先を決
定するために多数の冗長処理サイクルが結果として必要
になる。同様のことが条件分岐にも言える。この場合も
しも最も頻繁に起こる条件判定の結果、分岐が生じるの
であれば、分岐データをキャッシュ内に記憶することが
可能で、分岐はたとえそれが完全にデコードされていな
くても実行するように仮定できる。平均として、これは
処理時間を節約するであろう。条件分岐が起こりそうか
否かの判定は、プログラムのコンパイルに際して行える
か、またはこれに代わって後方分岐が一般的に使用さ
れ、前方分岐は一般的には使用されないという様な規則
を用いて行える。
【0032】表3は表2のブランチキャッシュシステム
を洗練したものを示す。この場合、使用されるキャッシ
ュタグは、分岐命令に先行する命令、例えば命令Eおよ
び命令Xの命令アドレスである。従ってこれらの命令が
パイプラインの命令フェッチステージの中に挿入されキ
ャッシュヒットが生じると、後続の命令は、分岐先既知
の分岐命令であると認識される。従って分岐命令をパイ
プライン中に実際に置く必要はなく、分岐先の命令が直
接パイプライン中に置かれる。表3に示されるように、
この方法において処理は命令Eから命令Uへ、また命令
Xから命令Mへ直接進行する。この洗練化により処理速
度が上昇する。
【表3】
【0033】図2はパイプラインプロセッサ2とブラン
チキャッシュ4とを含むシステムを図式的に示す。パイ
プラインプロセッサ2は5個のパイプラインステージ、
命令フェッチ、命令デコード、オペランドフェッチ、実
行および結果書き込み、を有する。しかしながらこれと
は別の個数のパイプラインステージを有するパイプライ
ンを使用できることも理解されよう。
【0034】命令はパイプライン2の命令フェッチステ
ージ6の中へ、接続されている主記憶装置8(例えばR
AMまたはROM)から、プログラムカウンタレジスタ
10の制御の下に送出され、このレジスタはパイプライ
ン2の中へ送出される命令のアドレスを表わすプログラ
ムカウンタ値PCを記憶している。
【0035】ブランチキャッシュ4は複数のキャッシュ
ライン12を含み、その各々はキャッシュタグ(TA
G),到達値(reach value)(R;”ネク
スト分岐データ”)、ターゲットアドレス(TA)そし
てターゲット命令(TI)を記憶している。ブランチキ
ャッシュ4は通常は低電力消費状態にあり、比較器14
からのイネーブル信号がONの時にのみプログラムカウ
ンタ値PCと比較されるキャッシュタグを有する。ブラ
ンチキャッシュ4がイネーブルされると、プログラムカ
ウンタ値PCが、各キャッシュライン12のキャッシュ
タグ値と並列に比較される。該比較時にキャッシュヒッ
トが発生すると、到達値R、ターゲットアドレス値TA
およびターゲット命令値TIはブランチキャッシュ4か
ら出力され、到達値ラッチ16、ターゲットアドレスラ
ッチ18およびターゲット命令ラッチ20に各々記憶さ
れる。
【0036】イネーブル信号は、比較器14が到達値ラ
ッチ16内に現在記憶されている到達値Rとプログラム
カウンタレジスタ10の中に記憶されているプログラム
カウンタ値PCの下位ビットとが一致すると判定した時
に、比較器14によってONとされる。もしも命令アド
レスが16ビットアドレスの場合、到達値Rには8ビッ
トしか必要としないため、ブランチキャッシュ4内の記
憶容量が節約される。この様にして到達値Rはプログラ
ムカウンタ値PCの下位8ビットと比較される。
【0037】到達値ラッチ16と比較器14の動作は、
到達されるべきネクスト分岐命令を示す信号を生成する
ことが理解されよう。しかしながら、到達値はフルアド
レスのわずか8ビットであるため、到達値Rとプログラ
ムカウンタ値PCの下位8ビットが一致しても、ネクス
ト分岐命令の真の位置に到達することが出来ず、プログ
ラムカウンタ値PCがブランチキャッシュ4内のキャッ
シュタグと比較される時にキャッシュヒットが発生しな
い可能性がある。到達値の分解能は28 =256であ
り、最悪の場合でもキャッシュヒットを導くためのブラ
ンチキャッシュ4を読み込む無駄な試行は256命令サ
イクル毎に一度しか生じない。これは全ネクスト分岐命
令アドレスを保存しなければならないことに比較して、
ブランチキャッシュ4内の記憶容量を節約すると言う点
に於て価値のある妥協である。
【0038】比較器14で生成されるイネーブル信号は
ネクスト分岐命令に到達出来ることを保証はしていない
ので、”真”のヒット信号はプログラムカウンタ値PC
がキャッシュタグに一致した時にブランチキャッシュ4
から導かれる。このヒット信号は到達値ラッチ16、タ
ーゲットアドレスラッチ18およびターゲット命令ラッ
チ20にトリガを与え、キャッシュヒットを生成したキ
ャッシュラインからのそれぞれの到達値R、ターゲット
アドレスTAそしてターゲット命令TIを記憶し、先行
のキャッシュヒットからのそれらの内容をプログラムカ
ウンタレジスタ10および命令フェッチステージ6にそ
れぞれ出力する。到達値Rがネクスト分岐命令に到達し
たことを示す際には、プログラムカウンタ値PCがキャ
ッシュタグのいずれかと一致するか否かをチェックする
ためにキャッシュ読み込みが生じる。もしもキャッシュ
ヒットが生じると、先行のキャッシュヒットからのター
ゲットアドレスTAおよびターゲット命令TIがプログ
ラムカウンタレジスタ10と命令フェッチステージ6と
にそれぞれ送られる一方で、今回のキャッシュヒットの
結果である到達値R、ターゲットアドレスTAおよびタ
ーゲット命令TIの新たな値がラッチされる。
【0039】分岐命令検出器22はパイプラインプロセ
ッサ2の命令フェッチステージ6の中に送出される命令
を監視する。分岐命令が命令フェッチステージ6の中に
置かれたことが分岐命令検出器22で検出されると、分
岐命令検出器22は動作シーケンスにトリガを与え、そ
の結果ブランチキャッシュ4のキャッシュライン12の
中にその分岐命令に対応するキャッシュデータが書き込
まれる。
【0040】最初に、分岐命令に対応する先行のプログ
ラムカウンタ値の下位ビット、PC−1が記憶される。
次に、分岐命令がパイプラインプロセッサを通してその
行き先をターゲットアドレスTAがすでに決定されてい
るステージに向けると、これは記憶され、またターゲッ
トアドレスTAが、対応するターゲット命令TIを読み
出すためにアクセスされている場合、これもまた記憶さ
れる。タグラッチ24は先行キャッシュの直前の命令の
全プログラムカウンタ値PCを記憶するために用意され
ている。従って、タグラッチ22は分岐命令を前回認識
した時のプログラムカウンタ値PCを今回の分岐命令ま
で記憶し、該カウンタPCは今回の分岐命令が生じた時
点で今回の分岐命令に対するキャッシュタグとして使用
される。キャッシュライン12に対するデータが収集さ
れる四回に一度づつ、該データはブランチキャッシュの
中に書き込まれる。
【0041】図3は図2のシステムがブランチキャッシ
ュ4からデータを取り出す際の動作を図示する。図示さ
れるように、ブランチキャッシュ4には既に要求された
有効キャッシュデータがロードされている。プログラム
カウンタ値PCは命令Aに対応するアドレスから開始
し、順番に命令B,C..と進行する。
【0042】先行する分岐命令(例えばQ’)に行き当
たったときに、キャッシュライン26からデータがアク
セスされて到達値ラッチ16、ターゲットアドレスラッ
チ18そしてターゲット命令ラッチ20の中に読み込ま
れる。従って、到達値ラッチ16は命令Eのアドレスの
下位ビットに相当する値を記憶する。プログラムカウン
タレジスタ10が命令A,B,C,...のアドレスを
経て進むと比較器14は到達値ラッチ16の内容をプロ
グラムカウンタ値PCと比較し、これらが不一致である
と判断してイネーブル信号をOFF状態にホールドす
る。イネーブル信号がOFF状態であることで、ブラン
チキャッシュ4は読み込まれず、ブランチキャッシュ4
の不必要な読み込みの実行を避けることで、電力が節約
できる。
【0043】図4は命令Eのパイプライン2での処理が
開始し、命令Eが命令フェッチステージ6の中にロード
された時点を図示する。この時点でプログラムカウンタ
値PCは命令Eのアドレスに等しい。従ってプログラム
カウンタ値PCの下位8ビットは到達値ラッチ16内の
値に一致し、比較器14はイネーブル信号をONとす
る。イネーブル信号がONであることにより、プログラ
ムカウンタレジスタ10からの全命令アドレスの値が全
てのキャッシュタグと並行して比較され、分岐キャッシ
ュヒットが真に生じたか否かの判定が行われる。
【0044】キャッシュヒットが真に生じた(すなわ
ち、キャッシュライン28に於て)時には、ヒット信号
がONとされ、到達値ラッチ16が新たな到達値&Xを
ラッチするようにさせ、ターゲットアドレスラッチ18
およびターゲット命令ラッチ20がそれらの内容&Uお
よびUをプログラムカウンタレジスタ10と命令フェッ
チステージ6とにそれぞれ出力するようにさせる。ヒッ
ト信号がONとされることはまた、ターゲットアドレス
ラッチ18およびターゲット命令ラッチ20が、キャッ
シュヒットが生じたキャッシュライン28から新たな値
&MおよびMをラッチして記憶するようにさせる。
【0045】従って全体の動作はブランチキャッシュ読
み込み試行は命令Eに到達した時にのみ実行され、この
時点で分岐に引き続くターゲットアドレスTAおよびタ
ーゲット命令TIが、分岐命令Fがデコードされたりま
たはパイプラインプロセッサ2に入力されることなく回
復されることとして理解される。
【0046】図5は分岐命令検出器22が分岐命令Yに
対応するブランチキャッシュデータを生成する際の動作
を図示する。先行の分岐命令は命令Eである。命令Eに
続くネクスト分岐命令にはまだ至っていないので、命令
Eのアドレス&Eを使用した分岐キャッシュヒットは行
われていない。にもかかわらず、この命令アドレスはネ
クスト分岐命令に実際に遭遇した時にキャッシュタグと
して使用するためにキャッシュタグラッチ24内に記憶
される。次にプログラムカウンタレジスタ10は、ネク
スト分岐命令Yが実際に命令フェッチステージ6の中に
送り込まれるまで、主記憶装置8からパイプラインプロ
セッサ2への命令の回復制御を進行させる。
【0047】分岐命令検出器22は分岐命令Yの存在を
検出し、先行命令Xの命令アドレスの下位8ビットをP
C−1値としてセーブし、実際にデコードされた命令Y
のターゲットアドレス、すなわち命令Mのアドレス&
M、およびターゲット命令M自身をセーブするためのト
リガをかける。ターゲット命令Mはキャッシュラインを
完成させるための最後のデータ項目であり、Mが決定す
ると上記データを含む新たなキャッシュライン30が書
き込まれる。
【0048】後続の処理中に命令Eに到達すると、分岐
キャッシュヒットが発生し、キャッシュライン30から
のデータがブランチキャッシュ4から読み込まれる。そ
の結果、命令Xがその後パイプラインの中にロードされ
た時に、比較器14は到達値Rとの一致を検出し、ター
ゲットアドレス&Mを命令Mに対して使用し、ターゲッ
ト命令自身をプログラムカウンタレジスタ10および命
令フェッチステージ6使用する。
【0049】図示された本発明の実施例を添付図を参照
して詳細に説明してきたが、本発明はそれらの詳細な実
施例では制限されず、種々の変更および改変が当業者に
より、添付の特許請求の項に定義された本発明の範囲並
びに精神から逸脱することなく実現出来ることを理解さ
れたい。
【図面の簡単な説明】
【図1】分岐命令を含む命令シーケンスを示す図。
【図2】ブランチキャッシュとパイプラインプロセッサ
の配置を示す図。
【図3】処理速度を上昇させるためにブランチキャッシ
ュの使用したパイプラインプロセッサを示す図。
【図4】処理速度を上昇させるためのブランチキャッシ
ュを使用したパイプラインプロセッサを示す図。
【図5】ブランチキャッシュへのデータの書き込みを示
す図。
【符号の説明】
2 パイプライン 4 ブランチキャッシュ 12 キャッシュライン 16 到達値ラッチ 18 ターゲットアドレスラッチ 20 ターゲット命令ラッチ

Claims (10)

    【特許請求の範囲】
  1. 【請求項1】 データ処理装置であって、 命令ストリームを処理するためのパイプラインプロセッ
    サと、 複数のキャッシュラインを有する分岐キャッシュメモリ
    であって、前記各々のキャッシュラインが、 前記命令ストリーム内の分岐命令のアドレスを識別する
    ためのキャッシュタグと、 前記分岐命令に続いて処理されたネクスト分岐命令のア
    ドレスを識別するネクスト分岐データとを記憶するよう
    に動作する、前記分岐キャッシュメモリと、 キャッシュライン内の最も最近に読まれた前記ネクスト
    分岐データが前記パイプラインプロセッサによって処理
    されるアドレスを示す時、前記複数の前記キャッシュタ
    グを前記パイプラインプロセッサで処理される前記アド
    レスと比較するためのトリガをかけるように応答する、
    キャッシュ読み取りトリガ手段を含むことを特徴とする
    前記データ処理装置。
  2. 【請求項2】 請求項第1項記載の装置に於て、各キャ
    ッシュラインが、前記キャッシュライン内の前記ネクス
    ト分岐命令の後で処理される、分岐先の命令のアドレス
    を示すための分岐先へのポインタを記憶するように動作
    可能であり、かつキャッシュライン内の前記最も最近に
    読み込まれたネクスト分岐データが、前記パイプライン
    プロセッサで処理される前記アドレスを示す時に、前記
    分岐先へのポインタを用いて前記命令ストリームの前記
    分岐先命令への分岐を制御するためのターゲットアドレ
    ス手段を含むことを特徴とする、前記装置。
  3. 【請求項3】 請求項第2項記載の装置に於て、各キャ
    ッシュラインが前記ターゲット命令を記憶するように動
    作可能であり、かつ前記最も最近に読み込まれたキャッ
    シュラインの前記ネクスト分岐データが前記パイプライ
    ンプロセッサで処理される前記アドレスを識別した時
    に、前記キャッシュライン内の前記分岐先命令を前記パ
    イプラインプロセッサに供給するためのターゲット命令
    手段を含むことを特徴とする、前記装置。
  4. 【請求項4】 請求項第1項記載の装置に於て、各キャ
    ッシュラインに対して、前記キャッシュタグが前記分岐
    命令の直前の命令のアドレスを含むことを特徴とする、
    前記装置。
  5. 【請求項5】 請求項第1項記載の装置に於て、各分岐
    ラインに対して、前記ネクスト分岐データが前記ネクス
    ト分岐命令の直前の命令のアドレスを識別することを特
    徴とする、前記装置。
  6. 【請求項6】 請求項第5項記載の装置に於て、前記ネ
    クスト分岐データがアドレスの下位ビットを含むことを
    特徴とする、前記装置。
  7. 【請求項7】 請求項第5項記載の装置が、前記パイプ
    ラインプロセッサで処理される前記アドレスを記憶する
    ためのプログラムカウンタレジスタを含み、前記キャッ
    シュ読み取りトリガ手段が前記プログラムカウンタレジ
    スタからの前記アドレスと前記ネクスト分岐データとを
    比較し、前記分岐キャッシュメモリに対してイネーブル
    信号を生成する比較器とを含むことを特徴とする前記装
    置。
  8. 【請求項8】 請求項第1項記載の装置が、前記命令ス
    トリーム内の分岐命令を検出し、分岐検出信号を発生さ
    せるための分岐命令検出器と、前記分岐検出信号に応答
    しキャッシュラインに対して前記パイプラインプロセッ
    サで処理される前記アドレスから導かれたネクスト分岐
    データと、前記パイプラインプロセッサで処理されるア
    ドレスから導かれたキャッシュタグとを、直前の分岐命
    令が検出されたときに書き込むためのキャッシュ書き込
    み手段とを含むことを特徴とする、前記装置。
  9. 【請求項9】 請求項第8項記載の装置に於て、各キャ
    ッシュラインが前記ターゲット命令を格納するように動
    作可能であり、前記最も最近に読み込まれたキャッシュ
    ラインの前記ネクスト分岐データが前記パイプラインプ
    ロセッサで処理される前記アドレスを識別する時、前記
    キャッシュラインの前記ターゲット命令を前記パイプラ
    インプロセッサに対して供給するためのターゲット命令
    手段とを含み、前記キャッシュ書き込み装置が前記分岐
    命令をデコードし判定して前記キャッシュラインに前記
    分岐ターゲットポインタと前記ターゲット命令とを書き
    込むことを特徴とする前記装置。
  10. 【請求項10】 データ処理方法であって、 命令ストリームをパイプライン処理し、 複数のキャッシュラインを有する分岐キャッシュメモリ
    の、前記各キャッシュライン内へ、 前記命令ストリーム内の分岐命令のアドレスを識別する
    キャッシュタグと、 前記分岐命令に引き続いて処理されるネクスト分岐命令
    のアドレスを識別するネクスト分岐データとを記憶し、 最も最近に読み込まれたキャッシュラインの前記ネクス
    ト分岐データが前記パイプラインプロセッサで処理され
    るアドレスを識別した時に応答し、前記複数のキャッシ
    ュラインの前記キャッシュタグと前記パイプラインプロ
    セッサで処理される前記アドレスとの比較をトリガする
    手順を含むことを特徴とする前記データ処理方法。
JP29736494A 1993-12-24 1994-11-30 分岐キャッシュ Expired - Lifetime JP3549595B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB9326439A GB2285154B (en) 1993-12-24 1993-12-24 Branch cache
GB93264398 1993-12-24

Publications (2)

Publication Number Publication Date
JPH07281895A true JPH07281895A (ja) 1995-10-27
JP3549595B2 JP3549595B2 (ja) 2004-08-04

Family

ID=10747214

Family Applications (1)

Application Number Title Priority Date Filing Date
JP29736494A Expired - Lifetime JP3549595B2 (ja) 1993-12-24 1994-11-30 分岐キャッシュ

Country Status (3)

Country Link
US (1) US5506976A (ja)
JP (1) JP3549595B2 (ja)
GB (1) GB2285154B (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006520964A (ja) * 2003-03-21 2006-09-14 アナログ・デバイシズ・インコーポレーテッド 分岐ターゲットに基づいて分岐予測をするための方法および装置
JP2012123683A (ja) * 2010-12-09 2012-06-28 Fujitsu Ltd 分岐予測装置およびプロセッサ

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5652858A (en) * 1994-06-06 1997-07-29 Hitachi, Ltd. Method for prefetching pointer-type data structure and information processing apparatus therefor
JP3599409B2 (ja) * 1994-06-14 2004-12-08 株式会社ルネサステクノロジ 分岐予測装置
JP3590427B2 (ja) * 1994-08-30 2004-11-17 株式会社ルネサステクノロジ 先行読出機能付命令キャッシュメモリ
GB2293670A (en) * 1994-08-31 1996-04-03 Hewlett Packard Co Instruction cache
US5581776A (en) * 1995-02-03 1996-12-03 Nokia Mobile Phones Limited Branch control system for rom-programmed processor
JP2987311B2 (ja) * 1995-05-12 1999-12-06 松下電器産業株式会社 プロセッサ及び翻訳装置
JP3486690B2 (ja) * 1995-05-24 2004-01-13 株式会社ルネサステクノロジ パイプライン方式プロセッサ
US5860106A (en) * 1995-07-13 1999-01-12 Intel Corporation Method and apparatus for dynamically adjusting power/performance characteristics of a memory subsystem
US6391550B1 (en) * 1996-09-19 2002-05-21 Affymetrix, Inc. Identification of molecular sequence signatures and methods involving the same
US6189092B1 (en) 1997-06-30 2001-02-13 Matsushita Electric Industrial Co., Ltd. Pipeline processor capable of reducing branch hazards with small-scale circuit
US6157988A (en) * 1997-08-01 2000-12-05 Micron Technology, Inc. Method and apparatus for high performance branching in pipelined microsystems
US6442681B1 (en) * 1998-12-28 2002-08-27 Bull Hn Information Systems Inc. Pipelined central processor managing the execution of instructions with proximate successive branches in a cache-based data processing system while performing block mode transfer predictions
US6175897B1 (en) * 1998-12-28 2001-01-16 Bull Hn Information Systems Inc. Synchronization of branch cache searches and allocation/modification/deletion of branch cache
US6282614B1 (en) 1999-04-15 2001-08-28 National Semiconductor Corporation Apparatus and method for reducing the power consumption of a microprocessor with multiple levels of caches
US6523110B1 (en) * 1999-07-23 2003-02-18 International Business Machines Corporation Decoupled fetch-execute engine with static branch prediction support
US6647490B2 (en) * 1999-10-14 2003-11-11 Advanced Micro Devices, Inc. Training line predictor for branch targets
US6636959B1 (en) 1999-10-14 2003-10-21 Advanced Micro Devices, Inc. Predictor miss decoder updating line predictor storing instruction fetch address and alignment information upon instruction decode termination condition
US6546478B1 (en) 1999-10-14 2003-04-08 Advanced Micro Devices, Inc. Line predictor entry with location pointers and control information for corresponding instructions in a cache line
US6732260B1 (en) 2000-03-06 2004-05-04 Intel Corporation Presbyopic branch target prefetch method and apparatus
US20010021973A1 (en) * 2000-03-10 2001-09-13 Matsushita Electric Industrial Co., Ltd. Processor
JP3577049B2 (ja) * 2002-03-06 2004-10-13 株式会社東芝 分岐予測回路
US20040003210A1 (en) * 2002-06-27 2004-01-01 International Business Machines Corporation Method, system, and computer program product to generate test instruction streams while guaranteeing loop termination
US20070294518A1 (en) * 2006-06-14 2007-12-20 Shen-Chang Wang System and method for predicting target address of branch instruction utilizing branch target buffer having entry indexed according to program counter value of previous instruction
US7681021B2 (en) * 2006-09-28 2010-03-16 Freescale Semiconductor, Inc. Dynamic branch prediction using a wake value to enable low power mode for a predicted number of instruction fetches between a branch and a subsequent branch
JP2008165589A (ja) * 2006-12-28 2008-07-17 Fujitsu Ltd 情報処理装置
US7890739B2 (en) * 2008-02-19 2011-02-15 Oracle America, Inc. Method and apparatus for recovering from branch misprediction
GB2458295B (en) * 2008-03-12 2012-01-11 Advanced Risc Mach Ltd Cache accessing using a micro tag
JP5423156B2 (ja) * 2009-06-01 2014-02-19 富士通株式会社 情報処理装置及び分岐予測方法
US20120311308A1 (en) * 2011-06-01 2012-12-06 Polychronis Xekalakis Branch Predictor with Jump Ahead Logic to Jump Over Portions of Program Code Lacking Branches
US20140143526A1 (en) * 2012-11-20 2014-05-22 Polychronis Xekalakis Branch Prediction Gating
US10289417B2 (en) * 2014-10-21 2019-05-14 Arm Limited Branch prediction suppression for blocks of instructions predicted to not include a branch instruction
US20160335089A1 (en) * 2015-05-11 2016-11-17 Qualcomm Incorporated Eliminating redundancy in a branch target instruction cache by establishing entries using the target address of a subroutine
US10664280B2 (en) * 2015-11-09 2020-05-26 MIPS Tech, LLC Fetch ahead branch target buffer
US11550588B2 (en) * 2018-08-22 2023-01-10 Advanced Micro Devices, Inc. Branch target filtering based on memory region access count

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2603626B2 (ja) * 1987-01-16 1997-04-23 三菱電機株式会社 データ処理装置
US5131086A (en) * 1988-08-25 1992-07-14 Edgcore Technology, Inc. Method and system for executing pipelined three operand construct
US5101341A (en) * 1988-08-25 1992-03-31 Edgcore Technology, Inc. Pipelined system for reducing instruction access time by accumulating predecoded instruction bits a FIFO
JPH0769811B2 (ja) * 1988-12-21 1995-07-31 松下電器産業株式会社 データ処理装置
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 (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006520964A (ja) * 2003-03-21 2006-09-14 アナログ・デバイシズ・インコーポレーテッド 分岐ターゲットに基づいて分岐予測をするための方法および装置
JP2012123683A (ja) * 2010-12-09 2012-06-28 Fujitsu Ltd 分岐予測装置およびプロセッサ

Also Published As

Publication number Publication date
GB2285154B (en) 1998-04-01
GB9326439D0 (en) 1994-02-23
JP3549595B2 (ja) 2004-08-04
US5506976A (en) 1996-04-09
GB2285154A (en) 1995-06-28

Similar Documents

Publication Publication Date Title
JP3549595B2 (ja) 分岐キャッシュ
JP5410281B2 (ja) 非シーケンシャル命令アドレスをプリフェッチするための方法および装置
US5941981A (en) System for using a data history table to select among multiple data prefetch algorithms
EP1244970B1 (en) Cache which provides partial tags from non-predicted ways to direct search if way prediction misses
US8069336B2 (en) Transitioning from instruction cache to trace cache on label boundaries
US8458408B2 (en) Cache directed sequential prefetch
EP0718758A2 (en) Mechanism to identify instruction word boundaries in cache
US9632788B2 (en) Buffering instructions of a single branch, backwards short loop within a virtual loop buffer
JPH0557616B2 (ja)
JPS5991546A (ja) 中央処理装置
WO1993017384A1 (en) Cpu having pipelined instruction unit and effective address calculation unit with retained virtual address capability
US5935238A (en) Selection from multiple fetch addresses generated concurrently including predicted and actual target by control-flow instructions in current and previous instruction bundles
US5964869A (en) Instruction fetch mechanism with simultaneous prediction of control-flow instructions
JPH06208463A (ja) 命令をその少なくとも1つの実行装置へ迅速にディスパッチする方法および装置
US6301654B1 (en) System and method for permitting out-of-order execution of load and store instructions
US20070260754A1 (en) Hardware Assisted Exception for Software Miss Handling of an I/O Address Translation Cache Miss
US7509472B2 (en) Collapsible front-end translation for instruction fetch
US8635408B2 (en) Controlling power of a cache based on predicting the instruction cache way for high power applications
JP3762816B2 (ja) マイクロプロセッサにおける早期例外を追跡するシステム及び方法
TW200815981A (en) Methods and apparatus for reducing lookups in a branch target address cache
US6889314B2 (en) Method and apparatus for fast dependency coordinate matching
JPS5991551A (ja) 分岐先アドレス予測を行なう命令先取り装置
US20200409864A1 (en) Speculative address translation requests pertaining to instruction cache misses
JPH06301537A (ja) 命令フェッチ回路
US8117383B2 (en) Hardware accelerator based method and device for string searching

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20040331

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20040409

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040421

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

Free format text: PAYMENT UNTIL: 20080430

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20090430

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20090430

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20100430

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20100430

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20110430

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20120430

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20130430

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20130430

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20140430

Year of fee payment: 10

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term