JP3843048B2 - 分岐予測機構を有する情報処理装置 - Google Patents
分岐予測機構を有する情報処理装置 Download PDFInfo
- Publication number
- JP3843048B2 JP3843048B2 JP2002191433A JP2002191433A JP3843048B2 JP 3843048 B2 JP3843048 B2 JP 3843048B2 JP 2002191433 A JP2002191433 A JP 2002191433A JP 2002191433 A JP2002191433 A JP 2002191433A JP 3843048 B2 JP3843048 B2 JP 3843048B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- branch
- branch prediction
- entry
- boundary
- 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 - Fee Related
Links
- 230000007246 mechanism Effects 0.000 title description 31
- 230000010365 information processing Effects 0.000 title description 28
- 238000000034 method Methods 0.000 claims description 21
- 238000001514 detection method Methods 0.000 claims description 9
- 238000012217 deletion Methods 0.000 claims description 6
- 230000037430 deletion Effects 0.000 claims description 6
- 238000012545 processing Methods 0.000 description 24
- 238000010586 diagram Methods 0.000 description 18
- 101000685824 Homo sapiens Probable RNA polymerase II nuclear localization protein SLC7A6OS Proteins 0.000 description 7
- 102100023136 Probable RNA polymerase II nuclear localization protein SLC7A6OS Human genes 0.000 description 7
- ZGSXEXBYLJIOGF-BOPNQXPFSA-N iwr-1 Chemical compound C=1C=CC2=CC=CN=C2C=1NC(=O)C(C=C1)=CC=C1N1C(=O)[C@@H]2C(C=C3)CC3[C@@H]2C1=O ZGSXEXBYLJIOGF-BOPNQXPFSA-N 0.000 description 7
- 230000000694 effects Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000000605 extraction Methods 0.000 description 3
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 2
- 238000003672 processing method Methods 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000006866 deterioration Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000013519 translation 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, 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, 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
-
- 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, look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
Description
【発明の属する技術分野】
本発明は情報処理装置、特に分岐を含む命令列を高速に実行するための分岐予測機構(ブランチヒストリなど)を採用した情報処理装置に関し、特に性能に悪影響を及ぼすエントリの登録抹消方式に関する。
【0002】
【従来の技術】
パイプライン処理方式以降の高度な命令処理方式を採用した情報処理装置においては、一つの命令の実行の終了を待たずに、投機的に後続の命令の処理を行うことで性能の向上を図ってきた。その中でも分岐命令があると、その分岐命令が分岐するか否か、あるいは、分岐する場合には、その分岐先命令の命令アドレスが確定しないと、次に実行すべき命令を投入できない。この問題を解決するために分岐予測機構を導入し、分岐命令の分岐方向の予測、あるいは分岐先命令アドレスを予測することで、更なる性能向上をするようになった。例えば、特開平6−89173号では、キャッシュメモリと独立した分岐予測機構(ブランチヒストリ)を持つことで、優位な性能を得てきた。
【0003】
【発明が解決しようとする課題】
ところが、ブランチヒストリの規模の増大に伴い、その内容によって逆に性能劣化を引き起こすケースが目立ってきた。
【0004】
特に、ブランチヒストリがキャッシュメモリやTLB(Translation Lookaside Buffer)などと独立しているために、命令列が更新される等で命令域の状態が更新されたとしても、ブランチヒストリに対して通常その更新情報が反映されない、あるいは、全ての更新ケースに対して反映仕切れない。その結果、
・かつて分岐命令が存在した命令アドレスに別の命令がロードされる
・TLBを変更したなどで論理空間に別のプログラムがディスパッチされる
などで、分岐命令以外の命令に対して分岐予測を行う、という事態が発生する。ブランチヒストリ上に存在するこのようなエントリをファントムエントリと呼ぶ。
【0005】
図9は、ファントムエントリが生じる仕組みを概略説明する図である。
従来のブランチヒストリは、ファントムエントリを積極的に消去せず、新たなエントリが登録されることで発生するリプレース動作により、古いエントリが消去される動作により、ファントムエントリもまた、そのうち消滅することを期待していた。
【0006】
しかし、図9に示されるように、プログラムAとプログラムBとがあり、これらをプロセッサが時分割制御によって、並列に実行している場合を考えると、ある時は、プログラムAが実行され、別の時は、プログラムBが実行されるという状態が起きる。図9の場合、プログラムAのアドレスが1500番地にブランチ命令があるとしている。この場合、ブランチヒストリなどの分岐予測機構は、アドレスの1500番地を検出すると、分岐予測を行う。プログラムAのみが実行されている場合には、1500番地に格納されている命令はブランチ命令なので、分岐予測をするのは正しいが、時分割制御のように、ある時命令実行がプログラムBに移ったとすると、ブランチヒストリなどの分岐予測機構は、命令のデコードを待たず、アドレスの検出のみによって分岐予測をするので、1500番地を検出すると自動的に分岐予測をしてしまう。しかし、現在は、プログラムBを実行しているので、図9に示されるように、1500番地には、分岐予測の必要のないアド命令が格納されている。したがって、ブランチヒストリが正しくエントリを保持していないと、このような分岐予測すべきでない、プログラムBのアド命令についても、プログラムAのブランチ命令だと判断して分岐予測を行ってしまう。
【0007】
命令の実行制御において、このように、分岐命令でないにも関わらず分岐予測を行われると、その不整合を解消する処理が必要になり、オーバヘッドを伴う。従って、このファントムエントリに対しては判明次第消去しなければ、性能向上のために開発されたはずのブランチヒストリが、逆に性能劣化を伴うものとなる。特に、ブランチヒストリのエントリ容量が少なかった場合にはリプレース動作などで消去されるまでの時間が短かったものが、容量や連想度の増大に伴い、ファントムエントリの残留も多くなり、問題が顕在化するようになった。
【0008】
本発明の課題は、このような状況を解決するため、ファントムエントリを効果的に消去する装置を提供し、従って、情報処理装置の処理性能の高速化を実現することである。
【0009】
【課題を解決するための手段】
本発明の第1の情報処理装置は、分岐予測機構を有する情報処理装置において、分岐予測を行った対象の命令が分岐命令であるか否かを判断する判断手段と、該分岐予測を行った対象の命令が分岐命令でないと判断された場合に、前記分岐予測機構に格納される該命令に対応する分岐予測のためのエントリを削除するファントム削除手段とを備えることを特徴とする。
【0010】
本発明の第2の情報処理装置は、分岐予測機構を有する情報処理装置において、命令を切り出し、実行のために格納するキュー手段と、該キュー手段に格納される命令について分岐予測を行った場合、該分岐予測を行ったアドレス位置が該キュー手段に格納された命令語の境界にあるか否かを検出する検出手段と、該分岐予測を行ったアドレス位置が命令語の境界にないと判断された場合には、該分岐予測を行う基となった、分岐予測機構に格納される分岐予測のためのエントリを削除するミスアライン削除手段とを備えることを特徴とする。
【0011】
本発明の第3の情報処理装置は、分岐予測機構を有する情報処理装置において、分岐命令であっても高速に実行されない命令、あるいは、分岐命令ではないが、命令シーケンスを不連続にする命令を検出するファントム対象命令検出手段と、該ファントム対象命令検出手段が検出した命令に対応するエントリを、分岐予測機構に格納される分岐予測のためのエントリに生成して加えるファントムエントリ生成手段とを備え、分岐予測のためのエントリを用いて命令プリフェッチを行うことによって命令の高速処理を実現することを特徴とする。
【0012】
本発明によれば、分岐予測機構に格納されるブランチヒストリのエントリの内、余分なエントリであるファントムエントリを確実に消去し、アプリケーションが時分割に情報処理装置によって実行されるような場合でも、間違った分岐予測が行われるのを避けることができる。従って、誤った分岐予測をただすために必要とされる時間を節約し、情報処理装置の処理性能を向上することができる。
【0013】
また、情報処理装置が処理に時間がかかる命令などを故意にファントムエントリとしてブランチヒストリに登録し、これらの命令について命令プリフェッチを行うようにすることで、これらの命令の実行を高速化することができ、やはり、情報処理装置の処理性能を向上することができる。
【0014】
【発明の実施の形態】
分岐予測は当然ながら分岐命令の実行制御と密接に関連する。分岐処理の結果、その分岐予測が成功したか否かを分岐制御部は知っており、ブランチヒストリを更新するための情報・更新制御構造を持っている。この構成は実用化されている(特開2000−282710号公報参照)。
【0015】
ここで分岐制御部において、分岐命令でないにも関わらず分岐予測された命令に対応したエントリを生成することで、分岐予測部(ブランチヒストリ)に対して分岐予測の成否を報告する装置は、特開2000−181710号公報において述べられているので、これを有効活用する。
【0016】
また、通常のブランチヒストリ更新については、例えば、特開2000−172503号公報において述べられているので、これも有効活用する。
装置によっては、命令長が一定ではなく可変長である(複数の命令長を持つ)命令セットを採用しているものがある。このような命令セット上でブランチヒストリを採用したマイクロアーキテクチャの場合、状況によって図1のように、命令境界とは異なる位置に対して分岐予測を行うケースが生じる。これもファントムエントリの一種であるが、前述の状況からさらに困難な問題が控える。
【0017】
図1は、命令境界でないところで分岐予測が生じる場合について説明する図である。
図1(a)に記載されている通常の分岐予測では、命令と命令の間の境界の部分で分岐予測がなされる。しかし、従来技術で述べたような、別のプログラムがロードされ、ブランチヒストリが更新されないままの場合、図1(b)のように、命令の境界以外の場所で分岐予測がなされることがある。これは、前のプログラムにおいて、分岐命令が図1(b)の点線で示される部分にあった場合に、次のプログラムが読み込まれた後では、前のプログラムの命令の境界が必ずしも後のプログラムの命令の境界になるとは限らないと言うことを意味している。
【0018】
この場合、命令境界からのオフセットなど、該予測位置を正確に復元できる情報を記憶しておかなければ、対応するブランチヒストリ上のファントムエントリを消せない場合がある。
【0019】
また、必ず割り込みを発生させる命令(ソフトウェアトラップ命令)など、分岐命令同様に命令アドレスを変更する命令がある。これらの命令は命令アドレスを変更すると同時にプロセッサステートなどを変更するため、分岐命令制御部のみで高速に動作させられないことがある。
【0020】
これらの特殊な命令についてもブランチヒストリに登録することができれば、ブランチヒストリを索引した結果、当該情報より分岐予測先フェッチを行うことができるようになるので、命令キャッシュ領域に実行される命令を先読みする効果をもたらし、キャッシュミスペナルティを軽減することができる。
【0021】
このように、分岐実行制御部が操作しない命令においても、本発明の実施形態に従ったファントムエントリ消去手法を用いることで、矛盾無く、また他の分岐命令の予測を含む動作を阻害することなく動作する事ができるようになる。
【0022】
図2は、本発明の実施形態における情報処理装置の概略を示す図である。
本実施形態においては、スーパスカラ方式の情報処理装置で、3命令同時処理可能であり、命令フェッチ部においては、そのための最大3命令をIWR0〜IWR2(Instruction Word Register)にセットするものとする。また、1命令の命令語長は、2、4、6バイトの3通りがあるものとし、ただし長さ6バイトの命令はIWR0にのみセットされる(それ以外には次以降のサイクルにまわる)ものとする。以下、ハーフワード単位での表現が入ることがある(従って、Half−Wordは、1、2、3ハーフワードの3通り)。
【0023】
分岐処理上の分岐命令キューをここではRSBRとし、RSBR上の各キューには、各分岐命令の命令アドレスPC、分岐先アドレスTPCに、分岐予測情報であるBRHIS Hitタグと、Hit−Wayタグ情報があるものとする。この構成は、特開2000−172503号公報に記載のものと同じである。本実施形態においては、更にHit−Offsetを持ち、これは分岐予測された位置の当該命令アドレスPCからのオフセットで示される。従って、普通に分岐命令について分岐予測されていればHit−Offsetは0を示す。
【0024】
ただし、本発明の実施形態とは異なり、ある種のRISC命令セットでは、命令語が必ず4バイトなどの一定値であり、また、命令の実行位置を命令語境界に持ってくる境界位置保障がなされている。こういった命令セット上では分岐予測位置が命令語境界にならないという事象は起こらない(わざわざ起こるように作ることは可能だが、そのメリットはない)。従って、このような命令セットを実現する装置ではHit−Offsetは不要であるので、本実施形態のこのような命令セットへの応用は当業者によって適宜変型されるべきである。
【0025】
図2において、IF−EAG(Instruction Fetch-Effective Address Generator)すなわち、フェッチアドレス生成部10においては、命令フェッチすべき命令のアドレスが計算される。計算されたアドレスは、ブランチヒストリ(BRHIS)を有する分岐予測部11とI-Cacheすなわち、命令キャッシュ12に入力される。分岐予測部11では、入力されたアドレスから分岐予測を行うか否か、及び分岐予測をした場合には、予測分岐先アドレスを出力する。予測分岐先アドレスはフェッチアドレス生成部10に渡され、そのまま命令キャッシュ12に入力される。また、分岐予測部11の出力である、分岐予測をした旨の信号は、命令投入制御部13に入力される。
【0026】
命令キャッシュ12は、入力されたアドレスから実行すべき命令を取り出し、命令投入制御部13へ入力する。命令投入制御部13は、入力された命令を、分岐予測されたものか否かの情報と共に、命令解読の方法を指示してIWR、すなわち、命令解読部14に渡す。命令解読部14において命令が解読されると、命令の内容によって、それぞれの命令処理部に渡されるが、特に、分岐命令である場合には、分岐命令キューRSBRの生成制御を行うRSBR生成制御部15に入力される。分岐命令キューRSBRは、分岐処理部16内に生成され、分岐命令の処理が順次行われる。
【0027】
分岐処理部16の分岐命令の処理の結果は、分岐完了制御部17に渡され、分岐予測が成功したか、あるいは、失敗したかの判断をし、処理完了した分岐情報をBRHIS更新制御部18に渡す。BRHIS更新制御部18では、取得した分岐情報を基に、分岐予測部11のブランチヒストリの更新を行う。
【0028】
命令をIWRにセットする際、同時に分岐予測結果を命令毎に切り分けて送る。そして、その分岐予測に関連付けられたHit−Wayを含む分岐予測情報と共に、Hit−OffsetをRSBRに渡す。
【0029】
図3は、BRHIS−HitとHit−Offset(MISALIGN Half−Word)の生成回路例を示す図である。なお、図3の回路は、図2の構成の内、命令投入制御部13内に設けられるものである。
【0030】
この図においてL1 HWm ILC n信号は、命令切り出し開始点からハーフワード距離mにある命令の(そこが命令境界点であれば)命令語長がnであることを意味する信号である(nは、この場合2、4、6のいずれかであり、使用されている命令語の長さを示す。また、mは、命令の切り出し位置から、命令の先頭が、ハーフワード数(例えば2ハーフワード)を単位としてどの位置にあるかを示す)。またL1 HIT HW p信号は、分岐予測された点が命令切りだし開始点からハーフワード距離pに有ることを示す信号である。
【0031】
分岐予測が命令境界位置に無かった場合にも対応する命令のHit(SET IWRx HIT)として検出し、同時に、SET IWRx MISALIGN HW y信号を出すことで、命令語境界になかったことを判別する。
【0032】
すなわち、図3の上段の「for IWR0」の回路においては、命令の切り出し位置が命令語境界であることを示すL1 HIT HW 0の論理値が真で入力されると、IWR0がヒットしたことを意味するSET IWR0 HITの論理値が真となる。また、同じく、命令語長が4あるいは6である場合であって、命令切り出し位置からハーフワード距離0のところに命令があり(L1 HW 0 ILC 4、6)、かつ、分岐予測された点が命令切り出し開始点からハーフワード距離1にある場合には、SET IWR0 HITの論理値を真にすると共に、ハーフワード距離1のところで命令語境界になっていないことを示すSET IWR0 MISALIGN HW 1の論理値が真となる。同様に、命令切り出し開始点からハーフワード距離2のところに分岐予測された点が有る場合であって(L1 HIT HW 2)、かつ、命令語長が6である場合であって、命令切り出し位置からハーフワード距離0のところに命令がある場合、ハーフワード距離2のところで、ミスアラインされている(分岐予測が命令語境界でないところで行われている)ことを示すSET IWR0 MISALIGN HW 2の論理値が真となる。ただし、SET IWR0 HITは、何れの場合にも分岐予測が行われたことを示すために真とされる。
【0033】
以上のように、図3の信号を読むと、「for IWR1」の回路の場合には、
1)ハーフワード距離1のところで分岐予測され、命令語長2で、ハーフワード距離0のところに命令がある場合は、ミスアラインではなく、分岐予測が行われたことを示すSET IWR1 HITの論理値が真となる。
2)ハーフワード距離2のところで分岐予測され、命令語長4で、ハーフワード距離0のところに命令がある場合には、ミスアラインではなく、SET IWR1 HITの論理値が真となる。
3)ハーフワード距離2のところで分岐予測され、命令語長が2でハーフワード距離0のところに命令があり、かつ、命令語長が4でハーフワード距離1のところに命令がある場合には、ミスアラインであるとして、SET IWR1 HIT及びSET IWR1 MISALIGN HW 1の論理値が真になる(ここでは、最初の命令が命令語長2で次の命令の命令語長が4であり、分岐予測が次の命令の真ん中で起こっている場合を示している)。
4)ハーフワード距離3のところで分岐予測され、命令語長が4でハーフワード距離0のところに命令があり、かつ、命令語長が4でハーフワード距離2のところに命令がある場合には、ミスアラインであるとして、SET IWR1 HIT及びSET IWR1 MISALIGN HW 1の論理値を真とする。
【0034】
更に、「for IWR2」の回路においては、
1)ハーフワード距離2のところで分岐予測され、命令語長が2でハーフワード距離0と1のところに命令がある場合は、通常にヒットしたとしてSET IWR2 HITの論理値が真となる。
2)ハーフワード距離3のところで分岐予測され、命令語長が2でハーフワード距離0のところに命令があり、かつ、命令語長4でハーフワード距離2のところに命令がある場合は、通常にヒットしたとしてSET IWR2 HITの論理値が真となる。
3)ハーフワード距離3のところで分岐予測され、ハーフワード距離0のところに命令語長4の命令が、ハーフワード距離1のところに命令語長2の命令が有る場合には、通常にヒットしたとして、SET IWR2 HITの論理値が真となる。
4)ハーフワード距離4のところで分岐予測され、ハーフワード距離0のところに命令語長4の命令が、ハーフワード距離2のところに命令語長4の命令がある場合には、通常にヒットしたとして、SET IWR2 HITの論理値を真にする。
5)ハーフワード距離3のところで分岐予測され、ハーフワード距離0のところに、命令語長2の命令が、ハーフワード距離1のところに命令語長2の命令が、ハーフワード距離2のところに命令語長4の命令がある場合には、ミスアラインが起きたとして、SET IWR2 HIT及びSET IWR2 MISALIGN HW 1の論理値が真とする。
6)ハーフワード距離4のところで分岐予測され、ハーフワード距離0のところに命令語長2の命令が、ハーフワード距離1のところに命令語長4の命令が、ハーフワード距離3のところに命令語長4の命令がある場合には、ミスアラインが起きたとして、SET IWR2 HIT及びSET IWR2 MISALIGN HW 1の論理値を真とする。
7)ハーフワード距離4のところで分岐予測され、ハーフワード距離0のところに命令語長4の命令が、ハーフワード距離2のところに命令語長2の命令が、ハーフワード距離3のところに命令語長4の命令がある場合、ミスアラインが起きたとして、SET IWR2 HIT及びSET IWR2 MISALIGN HW 1の論理値を真とする。
8)ハーフワード距離5のところで分岐予測され、ハーフワード距離0のところに命令語長4の命令が、ハーフワード距離2のところに命令語長4の命令が、ハーフワード距離4のところに命令語長4の命令がある場合には、SET IWR2 HIT及びSET IWR2 MISALIGN HW 1の論理値を真とする。
【0035】
これらを他の分岐予測情報タグと組でRSBRに渡す。他の分岐予測情報タグと組でRSBRに渡す構成の詳細は既知である。
図4は、分岐命令とファントムの実行制御キューRSBRの構成例を示す図である。同図のRSBRは、図2の分岐処理部16に設けられるものである。
【0036】
この構成では、キューRSBRのエントリの有効性を示すvalidフラグと、ファントムエントリか否かを示すPhantom-Validフラグ、条件分岐のアドレスや分岐条件などを記述する分岐制御情報、分岐予測する命令のアドレスIAR、分岐先の命令アドレスTIAR、図3のSET IWRy HIT(ここで、yは、IWRを識別する整数)を格納するHit部、ブランチヒストリのWAYを示すWay部、及び、図3のミスアラインを示す信号を格納するMisalign-HW部からなる。Misalign-HWのデータは、RSBRのエントリがファントムエントリの時にのみ有効である。
【0037】
なお、RSBRのPhantom−Validフラグの設定は、前述の特開2000−181710号公報に記載の技術を使って設定するものとする。
RSBRで分岐処理もしくはファントムエントリ処理が完了すると、ブランチヒストリに対して、その完了報告が行われる。
【0038】
図5は、分岐実行完了の報告を行うための動作を説明する図である。なお、図5の回路は、図2の分岐完了制御部17に設けられるものである。
図6は、エントリ消去のための指示信号を生成する回路例を示す図である。図6の回路は、図2のBRHIS更新制御部18に設けられる。
【0039】
分岐完了制御回路は、ファントムエントリ処理完了の場合、当該命令がファントムエントリであったことを示すBR COMP AS PHANTOMとともに、完了した命令の命令アドレスBR COMP IAR<0:31>、BRHIS HitしたWAY位置BR COMP HIT WAY<1:0>、それがミスアラインしていた場合のBR COMP MISALIGN HW y(と必要に応じて他の制御フラグ)をBRHIS更新制御部に送る。
【0040】
図6において、通常の分岐予測の場合には、命令境界位置に予測されるので、Hitしたエントリ位置はBR COMP IAR<0:31>であるが、ファントムエントリであって、ミスアラインを検出している場合、Hitを検出したエントリの本来の位置はBR COMP IAR<0:31>+BR COMP MISALIGN HW y(ここで、yはハーフワード距離の値であり、整数である。この演算は、y=1の場合、2を加算するなど)となる。これで決まるアドレス位置でBR COMP HIT WAYによって指示されたWAYへ消去動作を行えば良い。
【0041】
たまたまミスアラインを検出した命令が分岐命令であった場合、BR COMP AS TAKEN(分岐成立の場合)、あるいはBR COMP AS NOT TAKEN(分岐不成立の場合)が送られ、通常の分岐処理と同様に処理される。この場合も、ミスアラインの情報を加算したアドレスに対して更新制御を行えばよい。ミスアライン分を加算することを除けば、従来に既知の技術と同じである。
【0042】
図6の下の回路は、通常の消去条件とファントムエントリであることを示すBR COMP AS PHANTOMのいずれかが入力されたときに、ブランチヒストリのエントリを消去すべき旨を通知するBRHIS ERASE ENTRYの信号を送出する。また、どのブランチヒストリのエントリを消去するかは、図6の上の回路で計算される。BR COMP IARのアドレスを入力として、BR COMP MISALIGN HWyによって、yの値で示されるハーフワード距離分アドレスを加算器20によって入力アドレスBR COMP IARに加算して、BRHIS UPDATE IARとして出力する。
【0043】
このようにして、ファントムエントリを特定し、ブランチヒストリのファントムエントリのうち、消すべきファントムエントリについての消去依頼の信号を設ける。この消去依頼信号を従来のブランチヒストリのエントリの消去依頼と同様に扱い、従来ブランチヒストリが持っているエントリの消去手段を利用してファントムエントリを消去する。
【0044】
以上により、ファントムエントリを確実に消去できる実施形態を示した。逆に故意にファントムエントリを作成することで命令プリフェッチ効果を見いだす実施形態を以下に示す。
【0045】
図7は、故意にファントムエントリを生成する構成を説明する図である。この回路は、図2のRSBR生成制御部15に設けられるものである。
命令をデコードして発行する時(IWRx Releaseによって処理の開始許可が示される)に、その命令がマイクロコードやファームウェアエミュレートされるような複雑な命令(分岐命令であっても高速に実行されない命令)あるいは、RSBRで処理されるような分岐命令ではないが命令アドレスを不連続にするような命令(ソフトウェア例外処理を発生させる命令やプログラムカウンタを直接書き換える命令など、図中IWRx CTI INST)であることが判明した場合、RSBRにはファントムエントリ相当のエントリとして生成する。ここで当該命令が故意に生成されるファントムエントリであることを識別可能なタグ(図7ではCTIフィールド)を登録しておき、これを完了時にBRHIS更新部へ通知する。また、RSBRでは、命令のアドレスの変更先を、該複雑命令の処理部から受け取るようにしておく。従って、完了時には変更先のアドレスはBR COMP TIARとしてBRHISに送られる。
【0046】
図7では、分岐命令ではないが命令アドレスを不連続にする命令である(IWRx CTI inst)か、ブランチヒストリにヒットし(IWRx BRHIS Hit)、命令が分岐命令ではない場合(IWRx BRANCHの論理反転)である場合であって、IWRx Release(命令デコードが終了し、処理開始許可)が出た場合、Phantom-Validにフラグを立てる。また、ブランチヒストリにヒットしているので、Hitフラグにもフラグを立てる。また、IWRx BRANCHとIWRx Releaseが入力されている場合には、エントリが有効であるとしてValidフラグを立てる。
【0047】
図8は、故意にファントムエントリを生成する場合のBRHISの更新信号の生成回路例を示す図である。図8の回路は、図2のBRHIS更新制御部18に設けられる。
【0048】
BRHIS更新制御部18においては、該タグ付きのBR COMP AS PHANTOM通知が来た場合には消去をせず、通常の分岐予測情報更新と同じ様な動作、すなわち、既にエントリが存在して(BRHIS Hit)いれば必要に応じて更新、エントリが存在しなければ(Not hit)新規エントリ生成を行う。エントリの作成/更新に用いられる分岐先アドレスはRSBRから送られるBR COMP TIARを使う等他の制御は従来技術と同様になる。
【0049】
図8においては、ブランチヒストリのエントリがファントムエントリであり(BR COMP AS PHANTOM)、分岐命令である場合には(BR COMP CTI INSTの反転論理)、通常の消去条件と同様に、ブランチヒストリのエントリを消去する命令(BRHIS ERASE ENTRY)を出力する。また、エントリがファントムエントリであり(BR COMP AS PHANTOM)、分岐命令でない(BR COMP CTI INST)の場合であって、ブランチヒストリにヒットしていない(BR COMP BRHIS HITの反転論理)には、通常の新規エントリの生成条件と共に、故意にファントムエントリを生成する旨の指示(BRHIS CREATE NEW ENTRY)を出す。また、ブランチヒストリにヒットし、エントリがファントムであり、分岐命令でない場合には、そのファントムエントリを維持すべき命令(BRHIS UPDATE OLD ENTRY)を出力する。
【0050】
このようにすると、次回当該命令アドレスに対応する命令フェッチ時に、当該エントリが読み出されて分岐予測命令フェッチが行われるようになる。たとえ、これが実行部で即座に使うことができなくとも、命令プリフェッチができることでキャッシュに対してプリフェッチ要求相当の動作になるため、性能改善効果がある。
【0051】
(付記1)分岐予測機構を有する情報処理装置において、
分岐予測を行った対象の命令が分岐命令であるか否かを判断する判断手段と、
該分岐予測を行った対象の命令が分岐命令でないと判断された場合に、前記分岐予測機構に格納される該命令に対応する分岐予測のためのエントリを削除するファントム削除手段と、
を備えることを特徴とする情報処理装置。
【0052】
(付記2)分岐予測機構を有する情報処理装置において、
命令を切り出し、実行のために格納するキュー手段と、
該キュー手段に格納される命令について分岐予測を行った場合、該分岐予測を行ったアドレス位置が該キュー手段に格納された命令語の境界にあるか否かを検出する検出手段と、
該分岐予測を行ったアドレス位置が命令語の境界にないと判断された場合には、該分岐予測を行う基となった、分岐予測機構に格納される分岐予測のためのエントリを削除するミスアライン削除手段と、
を備えることを特徴とする情報処理装置。
【0053】
(付記3)分岐予測を行おうとする命令のアドレス位置が実際の命令境界位置と異なる位置であることが判明した場合、分岐処理を行う機構において、該境界位置からの位置を特定する特定情報を保持し、該特定情報を用いて分岐予測機構の有する分岐予測のためのエントリを削除することを特徴とする付記2に記載の情報処理装置。
【0054】
(付記4)分岐予測機構を有する情報処理装置において、
分岐命令であっても高速に実行されない命令、あるいは、分岐命令ではないが、命令シーケンスを不連続にする命令を検出するファントム対象命令検出手段と、
該ファントム対象命令検出手段が検出した命令に対応するエントリを、分岐予測機構に格納される分岐予測のためのエントリに生成して加えるファントムエントリ生成手段とを備え、
分岐予測のためのエントリを用いて命令プリフェッチを行うことによって命令の高速処理を実現することを特徴とする情報処理装置。
【0055】
(付記5)分岐予測機構を有する情報処理装置における分岐予測のためのエントリの内の不要なエントリの削除方法であって、
分岐予測を行った対象の命令が分岐命令であるか否かを判断する判断ステップと、
該分岐予測を行った対象の命令が分岐命令でないと判断された場合に、前記分岐予測機構に格納される該命令に対応する分岐予測のためのエントリを削除するファントム削除ステップと、
を備えることを特徴とする方法。
【0056】
(付記6)分岐予測機構を有する情報処理装置における分岐予測のためのエントリの内の不要なエントリを削除する方法であって、
命令セットを切り出し、実行のために格納するキューステップと、
該キューステップにおいて格納された命令について分岐予測を行った場合、該分岐予測を行ったアドレス位置が該キューステップにおいて格納された命令語の境界にあるか否かを検出する検出ステップと、
該分岐予測を行ったアドレス位置が命令語の境界にないと判断された場合には、該分岐予測を行う基となった、分岐予測機構に格納される分岐予測のためのエントリを削除するミスアライン削除ステップと、
を備えることを特徴とする方法。
【0057】
(付記7)分岐予測を行おうとする命令のアドレス位置が実際の命令境界位置と異なる位置であることが判明した場合、分岐処理を行う機構において、該境界位置からのオフセット情報を記憶しておき、該オフセット情報を用いて分岐予測機構の有する分岐予測のためのエントリを削除することを特徴とする付記6に記載の方法。
【0058】
(付記8)分岐予測機構を有する情報処理装置における命令の高速処理のための方法であって、
分岐命令であっても高速に実行されない命令、あるいは、分岐命令ではないが、命令シーケンスを不連続にする命令を検出するファントム対象命令検出ステップと、
該ファントム対象命令検出手段が検出した命令に対応するエントリを、分岐予測機構に格納される分岐予測のためのエントリに生成して加えるファントムエントリ生成ステップとを備え、
分岐予測のためのエントリを用いて命令プリフェッチを行うことによって命令の高速処理を実現することを特徴とする方法。
【0059】
【発明の効果】
以上で述べたように、本手法を用いることで、ファントムエントリを確実に消去でき、ブランチヒストリの性能劣化を回避することができるようになる。また、この機能を積極利用することにより、複雑な制御転送命令であっても命令プリフェッチ効果をもたらす制御を可能とし、性能向上に役立つ。
【図面の簡単な説明】
【図1】命令境界でないところで分岐予測が生じる場合について説明する図である。
【図2】本発明の実施形態における情報処理装置の概略を示す図である。
【図3】BRHIS−HitとHit−Offset(MISALIGN Half−Word)の生成回路例を示す図である。
【図4】分岐命令とファントムの実行制御キューRSBRの構成例を示す図である。
【図5】分岐実行完了の報告を行うための動作を説明する図である。
【図6】エントリ消去のための指示信号を生成する回路例を示す図である。
【図7】故意にファントムエントリを生成する構成を説明する図である。
【図8】故意にファントムエントリを生成する場合のBRHISの更新信号の生成回路例を示す図である。
【図9】ファントムエントリが生じる仕組みを概略説明する図である。
【符号の説明】
10 IF−EAG フェッチアドレス生成部
11 BRHIS 分岐予測部
12 I−CACHE 命令キャッシュ
13 命令投入制御部
14 IWRs 命令解読部
15 RSBR生成制御部
16 分岐処理部 RSBRs
17 分岐完了制御部
18 BRHIS更新制御部
20 加算器
Claims (4)
- 分岐予測のためのエントリを格納する分岐予測手段を有する命令制御装置において、
命令を切り出し、実行のために格納する命令キュー手段と、
前記命令キュー手段に格納される命令について、前記分岐予測手段に格納された分岐予測のためのエントリを使用して分岐予測を行った場合、分岐予測先のアドレス位置が前記命令キュー手段に格納された命令の境界にあるか否かを検出する命令境界検出手段と、
前記命令境界検出手段により前記分岐予測先のアドレス位置が命令の境界にないと判断された場合には、前記エントリを前記分岐予測手段から削除するミスアライン削除手段とを有することを特徴とする命令制御装置。 - 前記命令境界検出手段により前記分岐予測先のアドレス位置が命令の境界にないと判断された場合には、前記エントリに前記命令の境界からの位置を特定する位置特定情報を保持し、前記特定情報を用いて前記分岐予測を行うために使用した前記分岐予測のためのエントリを、前記ミスアライン削除手段が前記分岐予測手段から削除することを特徴とする請求項1に記載の命令制御装置。
- 分岐予測のためのエントリを格納するブランチヒストリを有する命令制御装置の命令制御方法において、
命令を切り出し、実行のために命令キューに格納する命令キュー格納ステップと、
前記命令キューに格納される命令について、前記ブランチヒストリに格納された分岐予測のためのエントリを使用して分岐予測を行った場合、分岐予測先のアドレス位置が前記命令キューに格納された命令の境界にあるか否かを検出する命令境界検出ステップと、
前記分岐予測先のアドレス位置が命令の境界にないと判断された場合には、前記分岐予測を行うために使用した前記分岐予測のためのエントリを前記ブランチヒストリから削除するミスアライン削除ステップとを有することを特徴とする命令制御方法。 - 前記ミスアライン削除ステップは、
前記命令境界検出ステップにより、前記分岐予測先のアドレス位置が命令の境界にないと判断された場合には、前記ブランチヒストリに格納された分岐予測のためのエントリに前記命令の境界からの位置を特定する位置特定情報を保持し、前記特定情報を用いて前記分岐予測を行うために使用した前記分岐予測のためのエントリを、前記ブランチヒストリから削除することを特徴とする請求項3に記載の命令制御方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002191433A JP3843048B2 (ja) | 2002-06-28 | 2002-06-28 | 分岐予測機構を有する情報処理装置 |
US10/349,930 US20040003217A1 (en) | 2002-06-28 | 2003-01-24 | Data processing device with branch prediction mechanism |
US11/330,192 US20060149950A1 (en) | 2002-06-28 | 2006-01-12 | Data processing device with branch prediction mechanism |
US11/330,191 US20060149949A1 (en) | 2002-06-28 | 2006-01-12 | Data processing device with branch prediction mechanism |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002191433A JP3843048B2 (ja) | 2002-06-28 | 2002-06-28 | 分岐予測機構を有する情報処理装置 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006193265A Division JP4113227B2 (ja) | 2006-07-13 | 2006-07-13 | 分岐予測機構を有する情報処理装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004038338A JP2004038338A (ja) | 2004-02-05 |
JP3843048B2 true JP3843048B2 (ja) | 2006-11-08 |
Family
ID=29774404
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002191433A Expired - Fee Related JP3843048B2 (ja) | 2002-06-28 | 2002-06-28 | 分岐予測機構を有する情報処理装置 |
Country Status (2)
Country | Link |
---|---|
US (3) | US20040003217A1 (ja) |
JP (1) | JP3843048B2 (ja) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8607209B2 (en) | 2004-02-04 | 2013-12-10 | Bluerisc Inc. | Energy-focused compiler-assisted branch prediction |
US7447882B2 (en) * | 2005-04-20 | 2008-11-04 | Arm Limited | Context switching within a data processing system having a branch prediction mechanism |
US9535701B2 (en) | 2014-01-29 | 2017-01-03 | Telefonaktiebolaget Lm Ericsson (Publ) | Efficient use of branch delay slots and branch prediction in pipelined computer architectures |
US9430245B2 (en) * | 2014-03-28 | 2016-08-30 | Telefonaktiebolaget Lm Ericsson (Publ) | Efficient branch predictor history recovery in pipelined computer architectures employing branch prediction and branch delay slots of variable size |
US20180081806A1 (en) * | 2016-09-22 | 2018-03-22 | Qualcomm Incorporated | Memory violation prediction |
US11086629B2 (en) * | 2018-11-09 | 2021-08-10 | Arm Limited | Misprediction of predicted taken branches in a data processing apparatus |
CN111258654B (zh) * | 2019-12-20 | 2022-04-29 | 宁波轸谷科技有限公司 | 指令分支预测方法 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1985000453A1 (en) * | 1983-07-11 | 1985-01-31 | Prime Computer, Inc. | Data processing system |
US4763253A (en) * | 1986-09-26 | 1988-08-09 | Motorola, Inc. | Microcomputer with change of flow |
US5228131A (en) * | 1988-02-24 | 1993-07-13 | Mitsubishi Denki Kabushiki Kaisha | Data processor with selectively enabled and disabled branch prediction operation |
US5210831A (en) * | 1989-10-30 | 1993-05-11 | International Business Machines Corporation | Methods and apparatus for insulating a branch prediction mechanism from data dependent branch table updates that result from variable test operand locations |
US5276882A (en) * | 1990-07-27 | 1994-01-04 | International Business Machines Corp. | Subroutine return through branch history table |
TW253946B (en) * | 1994-02-04 | 1995-08-11 | Ibm | Data processor with branch prediction and method of operation |
US5608886A (en) * | 1994-08-31 | 1997-03-04 | Exponential Technology, Inc. | Block-based branch prediction using a target finder array storing target sub-addresses |
US5761490A (en) * | 1996-05-28 | 1998-06-02 | Hewlett-Packard Company | Changing the meaning of a pre-decode bit in a cache memory depending on branch prediction mode |
US6003129A (en) * | 1996-08-19 | 1999-12-14 | Samsung Electronics Company, Ltd. | System and method for handling interrupt and exception events in an asymmetric multiprocessor architecture |
US6061710A (en) * | 1997-10-29 | 2000-05-09 | International Business Machines Corporation | Multithreaded processor incorporating a thread latch register for interrupt service new pending threads |
JP3565314B2 (ja) * | 1998-12-17 | 2004-09-15 | 富士通株式会社 | 分岐命令実行制御装置 |
JP3723020B2 (ja) * | 1999-09-30 | 2005-12-07 | 富士通株式会社 | 分岐履歴情報の書き込み制御装置及びその方法 |
-
2002
- 2002-06-28 JP JP2002191433A patent/JP3843048B2/ja not_active Expired - Fee Related
-
2003
- 2003-01-24 US US10/349,930 patent/US20040003217A1/en not_active Abandoned
-
2006
- 2006-01-12 US US11/330,192 patent/US20060149950A1/en not_active Abandoned
- 2006-01-12 US US11/330,191 patent/US20060149949A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20060149949A1 (en) | 2006-07-06 |
US20040003217A1 (en) | 2004-01-01 |
US20060149950A1 (en) | 2006-07-06 |
JP2004038338A (ja) | 2004-02-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3542020B2 (ja) | 複数予測分岐命令にわたる命令フェッチの位置合わせ命令キャッシュ処理を実行するプロセッサ装置およびプロセッサ制御方法 | |
US6697932B1 (en) | System and method for early resolution of low confidence branches and safe data cache accesses | |
US6185676B1 (en) | Method and apparatus for performing early branch prediction in a microprocessor | |
JP2875909B2 (ja) | 並列演算処理装置 | |
JP4027620B2 (ja) | 分岐予測装置、プロセッサ、及び分岐予測方法 | |
US8943300B2 (en) | Method and apparatus for generating return address predictions for implicit and explicit subroutine calls using predecode information | |
EP0381444A2 (en) | Branch prediction | |
US20110320787A1 (en) | Indirect Branch Hint | |
US7017030B2 (en) | Prediction of instructions in a data processing apparatus | |
US20040117606A1 (en) | Method and apparatus for dynamically conditioning statically produced load speculation and prefetches using runtime information | |
JP2019526873A (ja) | 分岐ターゲットバッファの圧縮 | |
JP3486690B2 (ja) | パイプライン方式プロセッサ | |
KR20080102251A (ko) | 링크 스택 회로를 정정하는 방법 및 장치 | |
US7877578B2 (en) | Processing apparatus for storing branch history information in predecode instruction cache | |
US20060149950A1 (en) | Data processing device with branch prediction mechanism | |
US20030204705A1 (en) | Prediction of branch instructions in a data processing apparatus | |
US20040225866A1 (en) | Branch prediction in a data processing system | |
JP3683439B2 (ja) | 分岐予測を抑止する情報処理装置および方法 | |
US10922082B2 (en) | Branch predictor | |
US7603545B2 (en) | Instruction control method and processor to process instructions by out-of-order processing using delay instructions for branching | |
JP4113227B2 (ja) | 分岐予測機構を有する情報処理装置 | |
US20060015706A1 (en) | TLB correlated branch predictor and method for use thereof | |
US20050154859A1 (en) | Branch prediction in a data processing apparatus | |
CN114116002A (zh) | 一种存储重命名的实现方法、处理器及计算机设备 | |
JP4728877B2 (ja) | マイクロプロセッサおよびパイプライン制御方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20041026 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060131 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060207 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060410 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20060516 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060713 |
|
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: 20060808 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060811 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090818 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100818 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110818 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120818 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120818 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130818 Year of fee payment: 7 |
|
LAPS | Cancellation because of no payment of annual fees |