JP3549595B2 - 分岐キャッシュ - Google Patents
分岐キャッシュ Download PDFInfo
- Publication number
- JP3549595B2 JP3549595B2 JP29736494A JP29736494A JP3549595B2 JP 3549595 B2 JP3549595 B2 JP 3549595B2 JP 29736494 A JP29736494 A JP 29736494A JP 29736494 A JP29736494 A JP 29736494A JP 3549595 B2 JP3549595 B2 JP 3549595B2
- 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.)
- Expired - Lifetime
Links
- 238000012545 processing Methods 0.000 claims description 26
- 238000000034 method Methods 0.000 claims description 5
- 238000001514 detection method Methods 0.000 claims description 4
- 238000003672 processing method Methods 0.000 claims description 3
- 230000004044 response Effects 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 2
- 238000003860 storage Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative 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)
Description
【産業上の利用分野】
本発明は分岐キャッシュを使用したデータ処理の分野に関する。
【0002】
【従来の技術】
各々の命令の実行を、いくつかのフェーズ(通常パイプラインステージと呼ばれる)に分割するパイプライン技術を具備するコンピュータが知られている。良好なパフォーマンスをこの様なシステムから得るために、スムーズでかつ連続した命令のフローがパイプラインを通ることが重要である。命令のストリーム内の分岐命令の実行はこの望まれるスムーズなフローを中断しがちである。分岐命令を実行するためには、その命令を分岐命令として認識し、もし該分岐が条件分岐の場合は、プロセッサは、分岐が行われるべきかどうかを判断し、分岐の分岐先アドレスを決定し、次の命令を分岐先アドレスからフェッチしなければならない。パイプライン処理システムの命令ストリーム内に分岐命令が存在するとパフォーマンスを低下させるが、それは次の命令がパイプラインに供給される前に上記の処理が実行される必要が有るためである。
【0003】
上記の問題を軽減するために、分岐キャッシュを用意することが知られている。分岐キャッシュは、分岐の分岐先アドレスを分岐命令のデコードに依ってではなくキャッシュから供給することにより分岐命令の実行時間を短縮する。これは通常は分岐命令のアドレスであるキャッシュタグを備え、そのキャッシュデータが分岐先命令のアドレスである分岐キャッシュを具備することにより実現される。
パイプラインに供給される各々の命令は分岐キャッシュ内のキャッシュタグと比較されるそれ自身の命令アドレスを有し、キャッシュヒットが発生すると、次に分岐命令が識別され分岐先アドレスがブランチキャッシュから供給されて、プロセッサに分岐命令のフルデコードを必要とする事なくロード命令を開始させる。
【0004】
この様なブランチキャッシュの例はIEEEのコンピュータに関する論文集、巻42,第4号、1993年4月、396ページ、”分岐先バッファの設計と最適化”、クリス エイチ.パーレベルグ並びにアラン ジエイ スミス著、及びIEEE技術報告、第CSL−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(例えばRAMまたはROM)から、プログラムカウンタレジスタ10の制御の下に送出され、このレジスタはパイプライン2の中へ送出される命令のアドレスを表わすプログラムカウンタ値PCを記憶している。
【0035】
ブランチキャッシュ4は複数のキャッシュライン12を含み、その各々はキャッシュタグ(TAG),到達値(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ビットをPC−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項記載の装置に於て、各キャッシュラインが、前記キャッシュライン内の前記ネクスト分岐命令の後で処理される、分岐先の命令のアドレスを示すための分岐先へのポインタを記憶するように動作可能であり、かつキャッシュライン内の前記最も最近に読み込まれたネクスト分岐データが、前記パイプラインプロセッサで処理される前記アドレスを示す時に、前記分岐先へのポインタを用いて前記命令ストリームの前記分岐先命令への分岐を制御するためのターゲットアドレス手段を含むことを特徴とする、前記装置。
- 請求項第2項記載の装置に於て、各キャッシュラインが前記ターゲット命令を記憶するように動作可能であり、かつ前記最も最近に読み込まれたキャッシュラインの前記ネクスト分岐データが前記パイプラインプロセッサで処理される前記アドレスを識別した時に、前記キャッシュライン内の前記分岐先命令を前記パイプラインプロセッサに供給するためのターゲット命令手段を含むことを特徴とする、前記装置。
- 請求項第1項記載の装置に於て、各キャッシュラインに対して、前記キャッシュタグが前記分岐命令の直前の命令のアドレスを含むことを特徴とする、前記装置。
- 請求項第1項記載の装置に於て、各分岐ラインに対して、前記ネクスト分岐データが前記ネクスト分岐命令の直前の命令のアドレスを識別することを特徴とする、前記装置。
- 請求項第5項記載の装置に於て、前記ネクスト分岐データがアドレスの下位ビットを含むことを特徴とする、前記装置。
- 請求項第5項記載の装置が、前記パイプラインプロセッサで処理される前記アドレスを記憶するためのプログラムカウンタレジスタを含み、前記キャッシュ読み取りトリガ手段が前記プログラムカウンタレジスタからの前記アドレスと前記ネクスト分岐データとを比較し、前記分岐キャッシュメモリに対してイネーブル信号を生成する比較器とを含むことを特徴とする前記装置。
- 請求項第1項記載の装置が、前記命令ストリーム内の分岐命令を検出し、分岐検出信号を発生させるための分岐命令検出器と、前記分岐検出信号に応答しキャッシュラインに対して前記パイプラインプロセッサで処理される前記アドレスから導かれたネクスト分岐データと、前記パイプラインプロセッサで処理されるアドレスから導かれたキャッシュタグとを、直前の分岐命令が検出されたときに書き込むためのキャッシュ書き込み手段とを含むことを特徴とする、前記装置。
- 請求項第8項記載の装置に於て、各キャッシュラインが前記ターゲット命令を格納するように動作可能であり、前記最も最近に読み込まれたキャッシュラインの前記ネクスト分岐データが前記パイプラインプロセッサで処理される前記アドレスを識別する時、前記キャッシュラインの前記ターゲット命令を前記パイプラインプロセッサに対して供給するためのターゲット命令手段とを含み、前記キャッシュ書き込み装置が前記分岐命令をデコードし判定して前記キャッシュラインに前記分岐ターゲットポインタと前記ターゲット命令とを書き込むことを特徴とする前記装置。
- データ処理方法であって、
命令ストリームをパイプライン処理し、
複数のキャッシュラインを有する分岐キャッシュメモリの、前記各キャッシュライン内へ、
前記命令ストリーム内の分岐命令のアドレスを識別するキャッシュタグと、
前記分岐命令に引き続いて処理されるネクスト分岐命令のアドレスを識別するネクスト分岐データとを記憶し、
最も最近に読み込まれたキャッシュラインの前記ネクスト分岐データが前記パイプラインプロセッサで処理されるアドレスを識別した時に応答し、前記複数のキャッシュラインの前記キャッシュタグと前記パイプラインプロセッサで処理される前記アドレスとの比較をトリガする手順を含むことを特徴とする前記データ処理方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
GB93264398 | 1993-12-24 | ||
GB9326439A GB2285154B (en) | 1993-12-24 | 1993-12-24 | Branch cache |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH07281895A JPH07281895A (ja) | 1995-10-27 |
JP3549595B2 true 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) |
Families Citing this family (36)
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 |
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 |
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 |
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 |
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 |
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 |
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 |
US7266676B2 (en) * | 2003-03-21 | 2007-09-04 | Analog Devices, Inc. | Method and apparatus for branch prediction based on branch targets utilizing tag and data arrays |
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 | 富士通株式会社 | 情報処理装置及び分岐予測方法 |
JP5609609B2 (ja) * | 2010-12-09 | 2014-10-22 | 富士通株式会社 | 分岐予測装置およびプロセッサ |
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)
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 |
-
1993
- 1993-12-24 GB GB9326439A patent/GB2285154B/en not_active Expired - Lifetime
-
1994
- 1994-09-08 US US08/303,230 patent/US5506976A/en not_active Expired - Lifetime
- 1994-11-30 JP JP29736494A patent/JP3549595B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
US5506976A (en) | 1996-04-09 |
GB2285154B (en) | 1998-04-01 |
GB2285154A (en) | 1995-06-28 |
JPH07281895A (ja) | 1995-10-27 |
GB9326439D0 (en) | 1994-02-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3549595B2 (ja) | 分岐キャッシュ | |
US5941981A (en) | System for using a data history table to select among multiple data prefetch algorithms | |
JP5410281B2 (ja) | 非シーケンシャル命令アドレスをプリフェッチするための方法および装置 | |
US6295594B1 (en) | Dynamic memory allocation suitable for stride-based prefetching | |
US9632788B2 (en) | Buffering instructions of a single branch, backwards short loop within a virtual loop buffer | |
KR100974384B1 (ko) | 분기 명령들을 예측하기 위한 방법 및 장치 | |
US6237081B1 (en) | Queuing method and apparatus for facilitating the rejection of sequential instructions in a processor | |
EP0718758A2 (en) | Mechanism to identify instruction word boundaries in cache | |
US6081887A (en) | System for passing an index value with each prediction in forward direction to enable truth predictor to associate truth value with particular branch instruction | |
JPH0334024A (ja) | 分岐予測の方法とそのための装置 | |
JPH11212788A (ja) | プロセッサのデータ供給装置 | |
US5935238A (en) | Selection from multiple fetch addresses generated concurrently including predicted and actual target by control-flow instructions in current and previous instruction bundles | |
KR100259306B1 (ko) | 분기 명령 버퍼를 갖는 데이타 프로세서 | |
US5964869A (en) | Instruction fetch mechanism with simultaneous prediction of control-flow instructions | |
US8387065B2 (en) | Speculative popcount data creation | |
US20070260754A1 (en) | Hardware Assisted Exception for Software Miss Handling of an I/O Address Translation Cache Miss | |
US5815700A (en) | Branch prediction table having pointers identifying other branches within common instruction cache lines | |
US20110066820A1 (en) | Overflow handling of speculative store buffers | |
JPH0682320B2 (ja) | データ処理装置 | |
US6859860B2 (en) | Control circuits comparing index offset and way for cache system and method of controlling cache system | |
TW200815981A (en) | Methods and apparatus for reducing lookups in a branch target address cache | |
US6889314B2 (en) | Method and apparatus for fast dependency coordinate matching | |
JP3762816B2 (ja) | マイクロプロセッサにおける早期例外を追跡するシステム及び方法 | |
EP1952235A2 (en) | System and method for handling information transfer errors between devices | |
JP2000148584A (ja) | プリフェッチ方法および装置 |
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 |