JP2011203955A - 分岐予測方法及びその方法を実行する分岐予測回路 - Google Patents
分岐予測方法及びその方法を実行する分岐予測回路 Download PDFInfo
- Publication number
- JP2011203955A JP2011203955A JP2010069910A JP2010069910A JP2011203955A JP 2011203955 A JP2011203955 A JP 2011203955A JP 2010069910 A JP2010069910 A JP 2010069910A JP 2010069910 A JP2010069910 A JP 2010069910A JP 2011203955 A JP2011203955 A JP 2011203955A
- Authority
- JP
- Japan
- Prior art keywords
- branch
- instruction
- information
- branch prediction
- storage unit
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 25
- 238000010586 diagram Methods 0.000 description 12
- 238000004364 calculation method Methods 0.000 description 11
- 210000005100 blood-tumour barrier Anatomy 0.000 description 6
- 238000001514 detection method Methods 0.000 description 5
- 230000004913 activation Effects 0.000 description 3
- 230000007423 decrease Effects 0.000 description 3
- 230000003442 weekly effect Effects 0.000 description 3
- 239000000470 constituent Substances 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000003213 activating effect Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
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/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/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
Abstract
本発明によれば、分岐命令に対する過去の履歴の内、分岐予測に有効な過去の履歴を効率よく取得し、分岐予測の精度を高める分岐予測方法及びその分岐予測方法を実行する分岐予測回路を提供することを目的とする。
【解決手段】
上記の課題を解決するため、分岐命令と分岐予測を表す情報を記憶する記憶部と、分岐命令により設定された分岐条件と、実現した分岐とから、分岐予測が実現したか否か及び実現した分岐の属性を判断し、判断に応じて記憶部内の情報の書き換えを制御する制御回路と、制御回路による制御を受けて、記憶部内の情報の書き換えを行う書き換え回路と、を備えることを特徴とする分岐予測回路を提供する。
【選択図】 図4
Description
また、命令コードの効率の低下を防止するため、分岐命令の動作を予測して、投機的に命令コードをフェッチすることにより、パイプライン動作を途切れないように維持することとしている。
そこで、分岐命令コードに対応する分岐先又は分岐方向について、過去の履歴を記録し、記録した過去の履歴に基づいて分岐予測をする手法が、予測精度向上のために適用されている。
ここで、分岐予測に有効な分岐先又は分岐方向についての過去の履歴は、アプリケーションプログラムに含まれる分岐命令の個数や、各分岐命令の分岐方向の偏りの程度や、メモリ上における分岐命令の位置といったパラメータに依存する。
そのことは、記憶できる過去の履歴の量を一定とした場合には、分岐予測に有効な過去の履歴を優先して記憶しなければ、分岐予測精度が向上しないことを意味する。言い換えれば、分岐予測の精度をあげるには、上記のようなアプリケーションの性質を考慮して、分岐予測に有効な過去の履歴を取捨選択する必要があることを意味する。
しかし、分岐方向の偏りや、規則性を有する分岐命令の他に、分岐方向の偏りや、規則性がない分岐命令も数多く存在し、記憶するに値する分岐命令の過去の履歴の取捨選択は容易ではない。
分岐命令と分岐予測を表す情報を記憶する記憶部と、
分岐命令により設定された分岐条件と、実現した分岐とから、分岐予測が実現したか否か及び実現した分岐の属性を判断し、判断に応じて記憶部内の情報の書き換えを制御する制御回路と、
制御回路による制御を受けて、記憶部内の情報の書き換えを行う書き換え回路と、を備えることを特徴とする分岐予測回路が提供される。
I−Cache11はコンピュータ10の外部から、矢印で示すように、外部バス34を介して供給される命令(Instruction)を蓄積している命令キャッシュである。そして、パイプライン処理中の命令プリフェッチ(IF)段階において、I−Cache11はSelector24からIFIAを受け取ると、対応する命令(インストラクション(Instruction))をI−Cache11が有する記憶領域から読出し、レジスタ12に出力する。
命令プリフェッチ段階において、IFEAG23からIFIAを受け取ると、BranchPrediction25は分岐命令に対して、分岐方向や分岐先アドレスの予測を行う回路であり、分岐予測機構を含む。分岐予測の後、分岐予測に応じた分岐先を示すIFtargetをSelector24に出力し、IFPF(Instruction Fetch Profile)をIDPF(Instructiondecode Profile)としてレジスタ14に出力する。
IFPFとは2ビットからなるデジタルのカウント値であり、カウント値は分岐命令に対応するIFtargetにより示された分岐が起こる可能性の程度を示す。例えば、カウンタ値”11”はストロングリーtaken(分岐可能性大)を表し、カウンタ値”10”はウィークリーteken(分岐可能性小)を表し、カウンタ値”01”はウィークリーnottaken(分岐しない可能性小)を表し、カウンタ値”00”はストロングリーnottaken(分岐しない可能性大)を表す。カウンタ値は分岐命令に対応して分岐が起こったか否かの評価に対応して更新される履歴情報である。例えば、分岐命令に対して、分岐しない場合、その分岐命令に対応するカウンタ値はデクリメント(減少)され、カウント値は「ウィークリーnottaken(分岐しない可能性大)」の方向に移行する。
命令プリフェッチ段階において、Selector24は、分岐命令のときには、BranchPrediction25からのIFtargetとIFIAとの組合せを選択し、I−Cache11に出力する。ただし、BTAG22から出力されたEXtargetにより、IFtargetが示す分岐先と異なる分岐先が指定されたときは、EXtargetを再度、I−Cache11に出力する。分岐命令でないときには、Selector24はIFEAG23からのIFIAのみをI−Cache11に出力する。
また、IFIAは0番目ビットから31番目ビットまでを有し、Selector24はIFIAの12番目のビットから31番目のビットまでを、IDIA(Instruction decode Instruction Address)としてレジスタ13に出力する。なお、IDIAは、BranchPrediction25内の分岐予測機構が有する記憶領域に対するアドレスとして使用される。
命令デコード段階において、レジスタ13はSelector24から出力されるIDIAを格納するアドレスレジスタである。
命令デコード段階において、レジスタ14はBranchPrediction25から出力されるIFPFを、IDPFとして格納するプロファイルバッファである。
命令デコード段階において、Decode15は命令(Instruction)から即値(immediate)をデコードし、分岐命令に対応する分岐先に関連するRRFLAG(Register read flag)の論理値を算出し、RRBCD(resisterread branch condition code)を算出する。
ここで、RRBCDは、複数の分岐条件の内、どの条件にあてはまったかを示すコードである。なお、分岐条件の中には、分岐がおきないという条件も含まれる。
また、RRFLAGとは、分岐命令に関連する分岐先アドレスと分岐命令のアドレスとのアドレス差と、命令デコード段階から命令実行段階までのパイプライン長の積が4以下であって、その分岐が前方分岐のときに”1”、上記の積の結果が4より大きな数値であるか、又は、後方分岐のときに”0”となるものである。すなわち、分岐の属性が短くかつ前方分岐であることを示すフラグである。なお、上記では、アドレス差×パイプライン長が4以下としたが、数値は4以外でもよい。また、パイプライン長は、コンピュータ10が有するパイプラインの数にも依存する。すなわち、パイプライン長はパイプライン構造に依存する数値である。
レジスターリード段階において、RegisterFile27は、RegNo26からimmediateを受け取り、immediateを蓄積する記憶回路である。
レジスターリード段階において、レジスタ17はDecode15から出力されるimmediateに関連するRRIA(resister read instruction address)を格納するアドレスレジスタである。レジスタ13に格納されたIDIAが、RRIA(Register read instruction address)としてレジスタ17に格納される。
レジスターリード段階において、レジスタ18はレジスタ14から出力されるIDPFを、RRPF(Register read profile)として格納するプロファイルレジスタである。
レジスターリード段階において、短い且つ前方分岐FLAGレジスタ35はDecode15から出力される分岐状態に関連するRRFLAGを格納するレジスタである。
レジスターリード段階において、分岐コンディションレジスタ37はDecode15から出力されるRRBCDを格納するレジスタである。
パイプラインの命令実行段階(EX)において、レジスタ20はレジスタ17が格納するRRIAを受け取り、EXIA(Execute instruction Address)として格納するアドレスレジスタである。
パイプラインの命令実行段階(EX)において、レジスタ21はレジスタ18に格納されたRRPFを受け取り、EXPF(Execute Profile)として格納するプロファイルバッファである。
パイプラインの命令実行段階(EX)において、短い且つ前方分岐FLAGレジスタ36は短い且つ前方分岐FLAGレジスタ35から供給されたRRFLAGを受け取り、EXFLAG(Execute flag)として格納するレジスタである。
パイプラインの命令実行段階(EX)において、レジスタ38は、レジスタ37が格納しているRRBCDを受け取り、EXBCD(Execute branch condition code)として格納する。
パイプラインの命令実行段階(EX)において、BTAG22は予測した分岐が行われず、分岐予測ミスの場合及び分岐予測をしなかった場合に、分岐先アドレスを計算し、その分岐先のアドレス(EX target)をSelector24へ出力するとともに、BranchPrediction25に出力する回路である。
パイプラインの命令実行段階(EX)において、Src28は、RegisterFile27から読み出したimmedite(処理対象を特定する値)を格納するレジスタである。
パイプラインの命令実行段階(EX)において、ALU/EAG29は命令で指定された演算、データアクセスのためのアドレス計算を行う。ここで、演算とは、例えば、値の大小比較、減算、加算などである。また、ALU/EAG29は分岐命令に関連するcondition code(分岐条件)を、BranchPrediction25に出力する。
メモリアクセスの段階(MA)において、D−Cache31はResult30から供給された演算の結果及びデータアクセスのためのアドレス計算の結果を一時格納し、その後、Selector32に出力するキャッシュである。
メモリアクセスの段階(MA)において、Selector32はResult30からの演算の結果及びデータアクセスのためのアドレス計算の結果、又は、D−Cache31に格納された演算の結果及びデータアクセスのためのアドレス計算の結果の内、どちらかを選択してWritedata33に出力するデータを選択する回路である。
ライトバックの段階(WB)において、Writedata33はRegisterFile27に格納するデータを蓄積するレジスタである。
ラベルLOOPに引き続くライン10から110までのプログラムは、いわゆるDOループを構成する。ライン10に示す命令、@(r8,r0),r1は、数値r0と、r8とで指定したレジスタにr1を格納する命令である。ライン20に示す命令、@(r9,r0),r2は、r0とr9により示したレジスタにr2を代入する命令である。ライン30に示す命令、cmp r1,r2は、数値r1と数値r2を比較する命令である。ライン40に示す命令、bit _Label1は、r1>r2のときはLabel1のラインへ分岐する命令であることを示す。ライン50に示す命令、sub r1,r2,r3は、r3=r1−r2の演算を実行することを示す。ライン60に示す命令、bra_Label2は、Label2のラインへ分岐する命令であることを示す。ライン70に示す命令、sub r2,r1,r3は、r3=r2−r1の演算を実行することを示す。ライン80に示す命令、st r3,@(r10,r0)は、r3をr10とr0により指定したレジスタに代入することを示す。ライン90は、r0に1を足してr0とすることを示す。ライン100は、r0と100を比較することを示す。ライン110に示す命令、blt _loopは、r0が100未満のときはループを続け、100以上となったときにループを終了することを示す。
上記のように、分岐命令において、分岐方向及び分岐距離は、その命令コードから、判別することができる。そこで、命令デコード段階において、Decoder15は、分岐方向及び分岐距離を、命令から認識し、「分岐先アドレスと現在アドレスとのアドレス差」と、「命令デコード段階から命令実行段階までのパイプライン長」の積が4以下であって、前方に分岐するときは短い且つ前方分岐FLAGの論理値を”1”に設定し、上記の積が4より大きな数値のとき、又は、後方分岐であるときには、短い且つ前方分岐FLAGの論理値を”0”に決定する。上記より、短い且つ前方分岐FLAGはその命令に対する分岐の属性を示すFLAGであると言える。
図3Aは、ライン40においてIFが実現した場合のパイプラインの動作を示す。図3Aにおいて、命令cmp r1、r2、命令blt_label1、命令sub r1、r2、r3、(命令bra_label1)、(命令sub r1、r2、r3)、命令st r3,@(r9,r0)を行う場合に、パイプライン動作において分岐予測があたった例を示す。上記の命令の主旨は、以下である。まず数値r1と数値r2を比較する。次いで、r1が大きければ、r3=r1−r2を行い、r2が大きければ、r3=r2−r1を行う。ついで、結果r3を数値r9と数値r0で指定されるレジスタに格納する。
次いで、同様にパイプライン40、50の分岐予測機構を含むBranchPrediction25からのブランチアドレスの出力により命令sub r1、r2、r3、命令st r3,@(r9,r0)について命令フェッチ段階にセットする。ここで、分岐予測がはずれるように、命令実行段階にセットされた命令cmp r1、r2、命令blt_label1の結果が確定すると、命令sub r1、r2、r3、命令st r3,@(r9,r0)に対するパイプライン動作は停止される。そして、正しい分岐先の命令bra_label1、及び、命令sub r1、r2、r3が行われる。命令sub r1、r2、r3、命令st r3,@(r9,r0)に対するパイプライン動作が停止されたときに、パイプライン50のALU/EAG29から演算結果は、パイプライン40、50のBranchPrediction25へ伝達される。その結果、パイプライン40、50のBranchPrediction25において、分岐予測がはずれたことについてブランチアドレスのプロファイル(履歴情報)の更新が行われる。
オペレーションop100において、BranchPrediction25は予測に基づく分岐が行われたかいなか、すなわち、予測のもととなったBTBエントリに対応する分岐がtakenになったか否かを判断する。分岐が行われたとき(takenになったとき)はオペレーション120へ進む。一方、分岐が行われなかったとき(nottakenのとき)はオペレーション110へ進む。
オペレーションop110においては、BranchPrediction25は分岐が行われなかったブランチアドレスを含むBTBエントリがBTB管理回路200に登録されているかを判断する。そのBTBエントリがBTB管理回路200に登録されていなければ、BranchPrediction25はBTB管理回路200に記憶されているすべてのBTBエントリに修正を加えずに動作を終了する。
オペレーションop130においては、BranchPrediction25は分岐が行われたブランチアドレスを含むBTBエントリのプロファイル(履歴情報)を更新する。
オペレーションop160においては、BranchPrediction25は分岐が行われたブランチアドレスを含むBTBエントリがBTBの記憶領域に空きがあるか否かを判断する。BTBの記憶領域に空きがある場合は、オペレーション170へ進む。記憶領域に空きがない場合はオペレーション180へ進む。
なお、最後に参照された時刻が古いBTBエントリが複数存在する場合は、BTBエントリのBTB240、250内におけるアドレスに応じて順番に置き換える古いBTBエントリを選択してもよいし、アドレスに応じてランダムに置き換える古いBTBエントリを選択してもよい。
オペレーション190においては、そのブランチアドレスを含むBTBエントリにおけるプロファイル(履歴情報)を初期化する。初期化とは、プロファイルのカウンタ値を予め決められた値に設定することをいい、例えば、カウンタ値を”11”(ストロングリーtaken(分岐可能性大))に設定する。
BTBエントリ管理回路200はcondition−code−resister210、LRU管理回路230、BTB240、250、リプレース制御回路260、マッチング検出回路280、290、マルチプレクサ300、及び、制御回路310から構成されている。
condition−code−resister210は分岐命令に対する分岐条件を記憶するレジスタである。そして、condition−code−resister210は、分岐条件を制御回路310に出力する。
その結果、分岐takenとならなかった場合において、さらに、その分岐命令と分岐予測の組合せに関わるBTBエントリがBTB240又はBTB250に登録されていた場合には、制御回路310はリプレース制御回路260に活性化信号を送付し、EXIAをアドレスとしてBTB240又はBTB250にアクセスし、そのアドレスで指定された記憶領域に登録されているBTBエントリのPF(プロファイル:履歴情報)を、履歴情報のカウント値を下げるように、書き換える。
一方、分岐の属性が短距離かつ前方分岐でなかったときには、制御回路310はリプレース制御回路260を活性化し、EXIAをアドレスとしてBTB240又はBTB250にアクセスし、BTB240又はBTB250に空き領域があるか否かを判断する。
BTB240又はBTB250に空き領域があった場合は、分岐takenとなった、その分岐命令と分岐予測の組合せに関わるBTBエントリを空き領域に登録するように、制御回路310はEXIAをアドレスとして使用し、リプレース制御回路260を制御する。
なお、上記では、LRU管理回路230は登録時刻を管理することとしたが、登録時刻に基づいた順序情報を管理することとしてもよい。その場合、リプレース制御回路260はLRU管理回路230からの順序情報を受け、古いBTBエントリから新しいBTBエントリかを特定する。
ところで、上記では、LRU管理回路230における登録時刻の新しい、古いによって、又は、順序情報に基づいて置き換えるBTBエントリを選択したが、BTB240に記憶されたBTBエントリと、BTB250に記憶されたBTBエントリと、を交互に選択するラウンドロピンアルゴリズムによって置き換えるBTBエントリを選択してもよい。さらに、BTB240に記憶されたBTBエントリと、BTB250に記憶されたBTBエントリとから、ランダムアルゴリズムによって、置き換えるBTBエントリを選択してもよい。
また、LRU管理回路230は、BTB240又はBTB250において新しBTBエントリにリプレースが行われるときに、登録時刻を記録する。ただし、登録時刻そのものを記録するのみに限られず、登録時刻に応じた登録順序情報を記録することであってもよい。
命令プリフェッチ段階において、BTBエントリ管理回路200は、フェッチした分岐条件を示す命令に対して、分岐先アドレスの予測を行う。
制御回路310はIFIAを受け取ると、活性化信号をリプレース回路260に対して送信する。リプレース回路260は、IFIAの12ビット目から31ビット目までをアドレスとして使用し、そのアドレスにより指定されたBTB240の領域及びBTB250の領域からBTBエントリを読み出す。ここで、BTBエントリは53ビットからなり、IFPFに相当する部分は2ビット、IFtargetに相当する部分は30ビット、IFIAの12ビット目から31ビット目に相当する部分は20ビット、VFLAGに相当する部分は1ビットである。従って、分岐予測の精度をあげるために、BTBエントリ数を増やすと、BTB240、250が占める面積は増加する。
マルチプレクサ300はBTB240、250それぞれから出力される一致信号、IFtarget、及び、IFPFを受け、BTB240、250から出力されたIFPFのカウンタ値が大きい方に対応するIFtargetと、そのIFPFを出力する。なお、IFtargetはSelector24へ出力され、IFPFはレジスタ14へ出力される。
分岐命令と分岐予測を表す情報(BTBエントリ)を記憶する記憶部(BTB240、250)と、
上記分岐命令により設定された分岐条件(condition−code−resister210に格納されたcondition code)と、実現した分岐(EXBCD)とから、上記分岐予測が実現したか否か及び上記実現した分岐の属性を判断し、上記判断に応じて上記記憶部内の上記情報の書き換えを制御する制御回路(制御回路310)と、
上記制御回路(制御回路310)による制御を受けて、上記記憶部内の上記情報の書き換えを行う書き換え回路と、を備えることを特徴とする。
上記制御回路による上記実現した分岐の属性の判断は、「分岐先アドレスと分岐命令のアドレスとのアドレス差」と、「命令デコード段階から命令実行段階までのパイプライン長」の積に基づいて行うことを特徴とする。
分岐命令と分岐予測を表す情報(BTBエントリ)を記憶する第1記憶部(BTB240)を有し、分岐命令を実行する処理装置(コンピュータ10)に含まれる分岐予測回路(BTB管理回路200)において、
上記情報を記憶部に記憶する情報記憶工程と、
上記分岐命令により設定された分岐条件(condition−code−resister210に格納されたcondition code)と、実現した分岐(EXBCD)とから、上記分岐予測が実現したか否か及び上記実現した分岐の属性を判断する工程と、
上記判断に応じて上記記憶部内の上記情報の書き換えを行う情報書き換え工程と、
上記分岐命令を処理装置で実行する際に、上記情報に応じて分岐予測を行う工程と、
を備えることを特徴とする。
上記実現した分岐の属性の判断は、「分岐先アドレスと分岐命令のアドレスとのアドレス差」と、「命令デコード段階から命令実行段階までのパイプライン長」の積に基づいて行うことを特徴とする。
上記分岐予測回路は第1記憶部(BTB240)に加え、分岐命令と分岐予測を表す情報(BTBエントリ)を記憶する第2記憶部(BTB250)を含み、
上記情報記憶工程は、前記情報を前記第2記憶部に記憶する工程を含むとともに、上記情報を記憶する際に、記憶する時刻に応じた記憶順序情報(登録順序情報)を記録する工程を含み、
上記情報書き換え工程は、書き換えを行う上記情報を、上記第1記憶部の上記情報又は上記第2記憶部の上記情報内から、上記記憶順序情報に応じて選択する選択工程を含むことを特徴とする。
上記分岐予測回路は第1記憶部(BTB240)に加え、分岐命令と分岐予測を表す情報(BTBエントリ)を記憶する第2記憶部(BTB250)を含み、
上記情報書き換え工程は、書き換えを行う上記情報を、上記第1記憶部の上記情報、又は、上記第2記憶部の上記情報の内から、交互に選択する選択工程を含むことを特徴とする。
上記分岐予測回路は第1記憶部(BTB240)に加え、分岐命令と分岐予測を表す情報(BTBエントリ)を記憶する第2記憶部(BTB250)を含み、
上記情報書き換え工程は、書き換えを行う上記情報を、上記第1記憶部の上記情報、又は、上記第2記憶部の上記情報の内から、ランダムに選択する選択工程を含むことを特徴とする。
従って、分岐予測をおこなった方が有効性に乏しい分岐命令のBTBエントリをBTB回路240、250に登録しないこととすれば、分岐予測をおこなった方が有効な分岐命令の内、特に、分岐方向や分岐先に規則性のある分岐命令のBTBエントリを、効率よくBTB回路240、250に登録することができる。
12、13、14、16、17、18、19、20、21 レジスタ
15 Decode
22 BTAG
23 IFEAG
24 Selector
25 BranchPrediction
26 RegNo
27 RegisterFile
28 Src
29 ALU/EAG
30 Result
31 D−Cache
32 Selector
33 Writedata
35、36 短い且つ前方分岐FLAGレジスタ
37 RRCDレジスタ
38 EXCDレジスタ38
40、50 パイプライン
op100、op110、op120、op130、op140、op160、op170、op180 オペレーション
200 BTBエントリ管理回路
210 condition−code−resister
230 LRU管理回路
240、250 BTB
260 リプレース制御回路
280、290 マッチング検出回路
300 マルチプレクサ
310 制御回路
Claims (7)
- 分岐命令と分岐予測を表す情報を記憶する第1記憶部と、
前記分岐命令により設定された分岐条件と、実現した分岐とから、前記分岐予測が実現したか否か及び前記実現した分岐の属性を判断し、前記判断に応じて前記第1記憶部内の前記情報の書き換えを制御する制御回路と、
前記制御回路による制御を受けて、前記第1記憶部内の前記情報の書き換えを行う書き換え回路と、を備えることを特徴とする分岐予測回路。 - 前記制御回路による前記実現した分岐の属性の判断は、分岐先アドレスと分岐命令のアドレスとのアドレス差と、命令デコード段階から命令実行段階までのパイプライン長の積に基づいて行うことを特徴とする請求項1記載の分岐予測回路。
- 分岐命令と分岐予測を表す情報を記憶する第1記憶部を有する分岐予測回路を含む処理装置において、
前記情報を前記第1記憶部に記憶する情報記憶工程と、
前記分岐命令により設定された分岐条件と、実現した分岐とから、前記分岐予測が実現したか否か及び前記実現した分岐の属性を判断する工程と、
前記判断に応じて前記第1記憶部内の前記情報の書き換えを行う情報書き換え工程と、
前記分岐命令を処理装置で実行する際に、前記情報に応じて分岐予測を行う工程と、
を備えることを特徴とする分岐予測方法。 - 前記実現した分岐の属性の判断は、分岐先アドレスと分岐命令のアドレスとのアドレス差と、命令デコード段階から命令実行段階までのパイプライン長の積に基づいて行うことを特徴とする請求項3記載の分岐予測方法。
- 前記分岐予測回路は前記分岐命令と前記分岐予測を表す前記情報を記憶する第2記憶部を含み、
前記情報記憶工程は、前記情報を前記第2記憶部に記憶する工程を含むとともに、前記情報を記憶する際に、記憶する時刻に応じた記憶順序情報を記録する工程を含み、
前記情報書き換え工程は、書き換えを行う前記情報を、前記第1記憶部の前記情報又は前記第2記憶部の前記情報内から、前記記憶順序情報に応じて選択する選択工程を含むことを特徴とする請求項3記載の分岐予測方法。 - 前記分岐予測回路は前記分岐命令と前記分岐予測を表す前記情報を記憶する第2記憶部を含み、
前記情報書き換え工程は、書き換えを行う前記情報を、前記第1記憶部の前記情報、又は、前記第2記憶部の上記情報の内から、交互に選択する選択工程を含むことを特徴とする請求項3記載の分岐予測方法。 - 前記分岐予測回路は前記分岐命令と前記分岐予測を表す前記情報を記憶する第2記憶部を含み、
前記情報書き換え工程は、書き換えを行う前記情報を、前記第1記憶部の前記情報、又は、前記第2記憶部の前記情報の内から、ランダムに選択する選択工程を含むことを特徴とする請求項3記載の分岐予測方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010069910A JP5633169B2 (ja) | 2010-03-25 | 2010-03-25 | 分岐予測方法及びその方法を実行する分岐予測回路 |
US13/052,197 US8806184B2 (en) | 2010-03-25 | 2011-03-21 | Branch prediction method and branch prediction circuit performing the method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010069910A JP5633169B2 (ja) | 2010-03-25 | 2010-03-25 | 分岐予測方法及びその方法を実行する分岐予測回路 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2011203955A true JP2011203955A (ja) | 2011-10-13 |
JP5633169B2 JP5633169B2 (ja) | 2014-12-03 |
Family
ID=44657685
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010069910A Expired - Fee Related JP5633169B2 (ja) | 2010-03-25 | 2010-03-25 | 分岐予測方法及びその方法を実行する分岐予測回路 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8806184B2 (ja) |
JP (1) | JP5633169B2 (ja) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08241198A (ja) * | 1995-03-06 | 1996-09-17 | Fujitsu Ltd | 分岐命令処理方法 |
JPH10133874A (ja) * | 1996-11-01 | 1998-05-22 | Mitsubishi Electric Corp | スーパスカラプロセッサ用分岐予測機構 |
US5842008A (en) * | 1996-06-18 | 1998-11-24 | Intel Corporation | Method and apparatus for implementing a branch target buffer cache with multiple BTB banks |
JP2000172503A (ja) * | 1998-12-10 | 2000-06-23 | Fujitsu Ltd | 複数のウェイを持つブランチヒストリを備える情報処理装置 |
JP2003005956A (ja) * | 2001-06-20 | 2003-01-10 | Fujitsu Ltd | 分岐予測装置、プロセッサ、及び分岐予測方法 |
JP2006072926A (ja) * | 2004-09-06 | 2006-03-16 | Fujitsu Ltd | メモリ制御回路およびマイクロプロセッサシステム |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6170053B1 (en) * | 1996-06-27 | 2001-01-02 | Texas Instruments Incorporated | Microprocessor with circuits, systems and methods for responding to branch instructions based on history of prediction accuracy |
JPH1196005A (ja) | 1997-09-19 | 1999-04-09 | Nec Corp | 並列処理装置 |
US6256728B1 (en) * | 1997-11-17 | 2001-07-03 | Advanced Micro Devices, Inc. | Processor configured to selectively cancel instructions from its pipeline responsive to a predicted-taken short forward branch instruction |
US8195886B2 (en) * | 2007-03-16 | 2012-06-05 | Arm Limited | Data processing apparatus and method for implementing a replacement scheme for entries of a storage unit |
US20090249048A1 (en) * | 2008-03-28 | 2009-10-01 | Sergio Schuler | Branch target buffer addressing in a data processor |
US20100262813A1 (en) * | 2009-04-14 | 2010-10-14 | International Business Machines Corporation | Detecting and Handling Short Forward Branch Conversion Candidates |
-
2010
- 2010-03-25 JP JP2010069910A patent/JP5633169B2/ja not_active Expired - Fee Related
-
2011
- 2011-03-21 US US13/052,197 patent/US8806184B2/en not_active Expired - Fee Related
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH08241198A (ja) * | 1995-03-06 | 1996-09-17 | Fujitsu Ltd | 分岐命令処理方法 |
US5842008A (en) * | 1996-06-18 | 1998-11-24 | Intel Corporation | Method and apparatus for implementing a branch target buffer cache with multiple BTB banks |
JPH10133874A (ja) * | 1996-11-01 | 1998-05-22 | Mitsubishi Electric Corp | スーパスカラプロセッサ用分岐予測機構 |
JP2000172503A (ja) * | 1998-12-10 | 2000-06-23 | Fujitsu Ltd | 複数のウェイを持つブランチヒストリを備える情報処理装置 |
JP2003005956A (ja) * | 2001-06-20 | 2003-01-10 | Fujitsu Ltd | 分岐予測装置、プロセッサ、及び分岐予測方法 |
JP2006072926A (ja) * | 2004-09-06 | 2006-03-16 | Fujitsu Ltd | メモリ制御回路およびマイクロプロセッサシステム |
Non-Patent Citations (1)
Title |
---|
JPN7014000478; Gary Scott Tyson: '"The Effects of Predicated Execution on Branch Prediction"' MICRO 27 Proceedings of the 27th annual international symposium on Microarchitecture , 1994, Pages:196-206, ACM * |
Also Published As
Publication number | Publication date |
---|---|
US20110238965A1 (en) | 2011-09-29 |
US8806184B2 (en) | 2014-08-12 |
JP5633169B2 (ja) | 2014-12-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5558814B2 (ja) | プロアクティブ分岐ターゲットアドレスキャッシュ管理のための方法及び装置 | |
JP4027620B2 (ja) | 分岐予測装置、プロセッサ、及び分岐予測方法 | |
JP3502592B2 (ja) | 分岐予測装置 | |
KR20170076564A (ko) | 레지스터 리네이밍을 사용한 무브 명령어 처리 | |
JP5231403B2 (ja) | スライドウィンドウブロックベースの分岐ターゲットアドレスキャッシュ | |
TW201423584A (zh) | 提取寬度預測器 | |
CN106681695B (zh) | 提前取出分支目标缓冲器 | |
TW201324343A (zh) | 具有遲滯現象下一個提取預測器之訓練 | |
JP6205966B2 (ja) | 演算処理装置及び演算処理装置の制御方法 | |
EP3803577A1 (en) | Storing incidental branch predictions to reduce latency of misprediction recovery | |
WO2012127666A1 (ja) | 演算処理装置、情報処理装置及び演算処理方法 | |
JP5154763B2 (ja) | 複数の命令セットデータ処理システム内の条件付分岐命令エンコーディング | |
US8521999B2 (en) | Executing touchBHT instruction to pre-fetch information to prediction mechanism for branch with taken history | |
US20030204705A1 (en) | Prediction of branch instructions in a data processing apparatus | |
JP2011209774A (ja) | 分岐予測方法及びその方法を実行する分岐予測回路 | |
US10963260B2 (en) | Branch predictor | |
JP5633169B2 (ja) | 分岐予測方法及びその方法を実行する分岐予測回路 | |
US7836288B2 (en) | Branch prediction mechanism including a branch prediction memory and a branch prediction cache | |
JP2018200545A (ja) | プロセッサ装置 | |
JP2002024008A (ja) | データ処理装置およびプログラム変換装置 | |
JP4728877B2 (ja) | マイクロプロセッサおよびパイプライン制御方法 | |
JP2001022577A (ja) | 情報処理装置 | |
US20060112262A1 (en) | Branch prediction of unconditionally executed branch instructions | |
JP4113227B2 (ja) | 分岐予測機構を有する情報処理装置 | |
WO2008038373A1 (fr) | Processeur pour augmenter la vitesse de prédiction de branchement |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20130206 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20140130 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20140218 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140415 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20140527 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20140822 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20140829 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20140916 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20140929 |
|
LAPS | Cancellation because of no payment of annual fees |