JP2011203955A - 分岐予測方法及びその方法を実行する分岐予測回路 - Google Patents

分岐予測方法及びその方法を実行する分岐予測回路 Download PDF

Info

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
Application number
JP2010069910A
Other languages
English (en)
Other versions
JP5633169B2 (ja
Inventor
Yoshimasa Takebe
好正 竹部
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2010069910A priority Critical patent/JP5633169B2/ja
Priority to US13/052,197 priority patent/US8806184B2/en
Publication of JP2011203955A publication Critical patent/JP2011203955A/ja
Application granted granted Critical
Publication of JP5633169B2 publication Critical patent/JP5633169B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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, 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
    • 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, 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

Abstract

【課題】
本発明によれば、分岐命令に対する過去の履歴の内、分岐予測に有効な過去の履歴を効率よく取得し、分岐予測の精度を高める分岐予測方法及びその分岐予測方法を実行する分岐予測回路を提供することを目的とする。
【解決手段】
上記の課題を解決するため、分岐命令と分岐予測を表す情報を記憶する記憶部と、分岐命令により設定された分岐条件と、実現した分岐とから、分岐予測が実現したか否か及び実現した分岐の属性を判断し、判断に応じて記憶部内の情報の書き換えを制御する制御回路と、制御回路による制御を受けて、記憶部内の情報の書き換えを行う書き換え回路と、を備えることを特徴とする分岐予測回路を提供する。

【選択図】 図4

Description

命令をパイプライン処理する中央処理装置における分岐予測方法、及び、その分岐予測方法を実行する分岐予測回路。
命令コードをパイプラインにより処理するパイプライン処理プロセッサでは、命令コード処理の効率の低下を防止するため、命令コードを次々にフェッチし、パイプラインを構成する各段階を途切れなく動作させている。
また、命令コードの効率の低下を防止するため、分岐命令の動作を予測して、投機的に命令コードをフェッチすることにより、パイプライン動作を途切れないように維持することとしている。
そうすると、パイプライン動作を途切れなく維持するには、予測精度の高い分岐予測手法を用いる必要がある。
そこで、分岐命令コードに対応する分岐先又は分岐方向について、過去の履歴を記録し、記録した過去の履歴に基づいて分岐予測をする手法が、予測精度向上のために適用されている。
ここで、分岐予測に有効な分岐先又は分岐方向についての過去の履歴は、アプリケーションプログラムに含まれる分岐命令の個数や、各分岐命令の分岐方向の偏りの程度や、メモリ上における分岐命令の位置といったパラメータに依存する。
そのことは、記憶できる過去の履歴の量を一定とした場合には、分岐予測に有効な過去の履歴を優先して記憶しなければ、分岐予測精度が向上しないことを意味する。言い換えれば、分岐予測の精度をあげるには、上記のようなアプリケーションの性質を考慮して、分岐予測に有効な過去の履歴を取捨選択する必要があることを意味する。
すべての過去の履歴を記憶することとすると、過去の履歴を蓄積する記憶領域が増加してしまうため、限られた記憶領域で、すなわち、限られた過去の履歴の量によっていかに予測精度を向上させるかについて、数多くの提案がなされている(特許文献1 参照)。
しかし、分岐方向の偏りや、規則性を有する分岐命令の他に、分岐方向の偏りや、規則性がない分岐命令も数多く存在し、記憶するに値する分岐命令の過去の履歴の取捨選択は容易ではない。
特開平11−96005号公報
本発明によれば、分岐命令に対する過去の履歴の内、分岐予測に有効な過去の履歴を効率よく取得し、分岐予測の精度を高める分岐予測方法及びその分岐予測方法を実行する分岐予測回路を提供することを目的とする。
上記の課題を解決するため、本発明の一側面によれば、
分岐命令と分岐予測を表す情報を記憶する記憶部と、
分岐命令により設定された分岐条件と、実現した分岐とから、分岐予測が実現したか否か及び実現した分岐の属性を判断し、判断に応じて記憶部内の情報の書き換えを制御する制御回路と、
制御回路による制御を受けて、記憶部内の情報の書き換えを行う書き換え回路と、を備えることを特徴とする分岐予測回路が提供される。
本発明によれば、分岐命令に対する過去の履歴の内、分岐予測に有効な過去の履歴を効率よく取得し、分岐予測の精度を高める分岐予測方法及びその分岐予測方法を実行する分岐予測回路を提供することができる。
図1は実施例に関わるコンピュータ10を示す図である。 図2は、図1のコンピュータ10に対して入力した命令において、前方分岐及び後方分岐を説明する図である。 図3A、Bは図1のコンピュータ10に対して命令を入力したときのパイプライン動作を説明する図である。 図4は、BTB(BranchTarget Buffer)エントリを蓄積するBTBエントリ管理回路200に新しい履歴情報含むBTBエントリ又は新しいBTBエントリを登録する際のフローチャートを示す。 図5はBranchPrediction25に含まれるBTBエントリ管理回路200を示す回路ブロック図である。 図6はBTBエントリ管理回路200の予測動作について詳細に説明する図である。
本発明は、以下に説明する実施例に対し、当業者が想到可能な、設計上の変更が加えられたもの、及び、実施例に現れた構成要素の組み換えが行われたものも含む。また、本発明は、その構成要素が同一の作用効果を及ぼす他の構成要素へ置き換えられたもの等も含み、以下の実施例に限定されない。
図1は実施例に関わるコンピュータ10を示す図である。コンピュータ10は、I−Cache11、レジスタ12、レジスタ13、レジスタ14、Decode15、レジスタ16、レジスタ17、レジスタ18、レジスタ19、レジスタ20、レジスタ21、BTAG22、IFEAG23、Selector24、BranchPrediction25、RegNo26、RegisterFile27、Src28、ALU/EAG29、Result30、D−Cache31、Selector32、Writedata33、短い前方分岐FLAGレジスタ35、短い前方分岐FLAGレジスタ36、RRCDレジスタ37、及び、EXCDレジスタ38から構成されるパイプライン40、50を含むコンピュータである。なお、パイプラインは後に説明するように、IF(命令プリフェッチ)、ID(命令デコード)、RR(レジスターリード)、EX(命令実行)、MA(メモリアクセス)、WB(ライトバック)の段階からなっている。なお、図1において、点線は、上記パイプラインの各段階に属する回路の境目を表す。
命令プリフェッチ段階において、IFEAG23は次にフェッチする命令(インストラクション)が記憶されている記憶領域を示すアドレス、IFIA(Instruction Fetch Instruction Address)を計算により求める回路である。その後、IFEAG23はSelector24及びBranchPrediction25に対してIFIAを出力する。
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内の分岐予測機構が有する記憶領域に対するアドレスとして使用される。
次いで、パイプライン処理中の命令デコード段階(ID)において、レジスタ12はI−Cache11から出力された命令(Instruction)を格納する命令格納レジスタである。
命令デコード段階において、レジスタ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が有するパイプラインの数にも依存する。すなわち、パイプライン長はパイプライン構造に依存する数値である。
パイプラインのレジスターリード段階(RR)において、レジスタ16はDecode15から供給されたimmediate(即値:処理対象を特定する値)を格納するレジスタである。また、RegNo26はDecode15から供給されたimmediateを格納するレジスタである。
レジスターリード段階において、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)において、レジスタ19はレジスタ16に格納されていたImmediteを受け取り、格納するレジスタである。
パイプラインの命令実行段階(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)において、Result30はALU/EAG29で行った演算の結果及びデータアクセスのためのアドレス計算の結果を格納するレジスタである。
メモリアクセスの段階(MA)において、D−Cache31はResult30から供給された演算の結果及びデータアクセスのためのアドレス計算の結果を一時格納し、その後、Selector32に出力するキャッシュである。
メモリアクセスの段階(MA)において、Selector32はResult30からの演算の結果及びデータアクセスのためのアドレス計算の結果、又は、D−Cache31に格納された演算の結果及びデータアクセスのためのアドレス計算の結果の内、どちらかを選択してWritedata33に出力するデータを選択する回路である。
ライトバックの段階(WB)において、Writedata33はRegisterFile27に格納するデータを蓄積するレジスタである。
図2は、図1のコンピュータ10に対して入力した命令において、前方分岐及び後方分岐を説明する図である。
ラベル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以上となったときにループを終了することを示す。
上記のような一続きの命令において、ライン40に示す命令、bit _Label1についての分岐は、データ依存で分岐方向が代わる。そのため、ライン40に示す命令に対する分岐方向の予測は困難ある。一方、ライン60に示す命令、bra_Label2についての分岐は、かならず、ライン番号の大きな方向(前方)に飛ぶ分岐である。従って、分岐方向は固定であるので、ライン60に示す命令に対する分岐予測はかならず当たる。ライン110に示す命令、blt _loopについての分岐は、分岐する確率が高く、分岐するときには、ライン番号が小さくなる方向(後方)に分岐する。
上記のように、分岐命令において、分岐方向及び分岐距離は、その命令コードから、判別することができる。そこで、命令デコード段階において、Decoder15は、分岐方向及び分岐距離を、命令から認識し、「分岐先アドレスと現在アドレスとのアドレス差」と、「命令デコード段階から命令実行段階までのパイプライン長」の積が4以下であって、前方に分岐するときは短い且つ前方分岐FLAGの論理値を”1”に設定し、上記の積が4より大きな数値のとき、又は、後方分岐であるときには、短い且つ前方分岐FLAGの論理値を”0”に決定する。上記より、短い且つ前方分岐FLAGはその命令に対する分岐の属性を示すFLAGであると言える。
図3A、Bは図1のコンピュータ10に対して命令を入力したときのパイプライン動作を説明する図である。なお、パイプラインは、IF(命令プリフェッチ)、ID(命令デコード)、RR(レジスターリード)、EX(命令実行)、MA(メモリアクセス)、WB(ライトバック)の段階からなっている。
図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で指定されるレジスタに格納する。
そこで、図1に示すコンピュータ10では、パイプライン40、50により、上記の命令を並列して2個ずつ処理している。まず、命令cmp r1、r2、命令blt_label1を命令フェッチ段階にセットする。次いで、パイプライン40の分岐予測機構を含むBranchPrediction25からのブランチアドレスの出力により命令sub r1、r2、r3、命令st r3,@(r9,r0)について命令フェッチ段階にセットする。ここで、最初に命令フェッチ段階にセットした命令cmp r1、r2、命令blt_label1が命令実行段階にきて、結果が確定し、分岐予測があたると、次に命令フェッチ段階にセットされたsub r2、r1、r3、命令st r3,@(r9,r0)はそのまま継続して実行が進められる。その結果、パイプライン40、50のBranchPrediction25において、分岐予測が当たったことについてブランチアドレスのプロファイル(履歴情報)の更新が行われる。そして、分岐方向が決まったら実行しない命令、sub r2、r1、r3はキャンセルされる。
図3Bは、ライン60においてelseが実現した場合のパイプラインの動作を示す。図3Bにおいて、命令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で指定されるレジスタに格納する。
そこで、図1に示すコンピュータ10では、パイプライン40、50に対して、まず、命令cmp r1、r2、命令blt_label1を命令フェッチ段階にセットする。
次いで、同様にパイプライン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において、分岐予測がはずれたことについてブランチアドレスのプロファイル(履歴情報)の更新が行われる。
図4は、BTB(BranchTarget Buffer)エントリを蓄積するBTBエントリ管理回路200に新しい履歴情報含むBTBエントリ又は新しいBTBエントリを登録する際のフローチャートを示す。ここで、BTBエントリを記憶するBTBエントリ管理回路200は分岐予測機構を含むBranchPrediction25に備えられている。また、BTBエントリは分岐命令(instruction)の格納アドレス、分岐先を示すアドレス(target)、その分岐が起こる可能性の程度を示すプロファイル(PF:履歴情報)、及び、BTBエントリが確定したものであることを示すVFLAG(valid flag)を含む。
コンピュータ10において、BTAG22から実際の分岐条件を示すEXtargetがBranchPrediction25に出力されたときに、図3のフローチャートにおけるオペレーションop100の判断が行われる。
オペレーションop100において、BranchPrediction25は予測に基づく分岐が行われたかいなか、すなわち、予測のもととなったBTBエントリに対応する分岐がtakenになったか否かを判断する。分岐が行われたとき(takenになったとき)はオペレーション120へ進む。一方、分岐が行われなかったとき(nottakenのとき)はオペレーション110へ進む。
オペレーションop110においては、BranchPrediction25は分岐が行われなかったブランチアドレスを含むBTBエントリがBTB管理回路200に登録されているかを判断する。そのBTBエントリがBTB管理回路200に登録されていなければ、BranchPrediction25はBTB管理回路200に記憶されているすべてのBTBエントリに修正を加えずに動作を終了する。
オペレーションop120においては、BranchPrediction25は分岐が行われたブランチアドレスを含むBTBエントリがBTB管理回路200に登録されているかを判断する。登録されていた場合はオペレーション130へ進む。登録されていなかった場合は、オペレーション140へ進む。
オペレーションop130においては、BranchPrediction25は分岐が行われたブランチアドレスを含むBTBエントリのプロファイル(履歴情報)を更新する。
オペレーションop140においては、BranchPrediction25は分岐が行われたブランチアドレスを含むBTBエントリに付属する、RRFLAG又はEXFLAG(短い且つ前方分岐であることを示すFLAG)が論理値”1”である場合は、すなわち、そのBTBエントリに関連する分岐の属性が短距離かつ前方分岐であった場合は、BTB管理回路200においてBTBエントリのプロファイル(履歴情報)を更新及びBTBエントリのリプレースを実行せず、動作を終了する。一方、RRFLAG又はEXFLAGが論理値”0”であった場合は、オペレーション160へ進む。
ここで、分岐命令により起こる分岐の属性が、短距離且つ前方向分岐であるときには、図3に示すように、早い時期に命令のキャンセルが起こる。従って、パイプラインにおいて、比較的無駄な動作が少ない。そうすると、パイプラインに負荷がかからない命令は分岐予測をしても、その分岐予測は有効性に乏しい。また、そのような分岐命令に対して分岐予測を行うため、その分岐命令に関するBTBエントリをBTB管理回路200に登録すると、分岐予測をおこなった方が有効な命令に対するBTBエントリをBTB管理回路200に登録することができなくなる。BTBエントリを記憶する記憶領域(BTB回路240、250)は限られているからである。
そこで、BTBエントリに関連するRRFLAG又はEXFLAGの論理値が”1”であったときに、履歴情報の更新又はBTBエントリのリプレースを行わないことによって、分岐予測が有効ではない命令に対するBTBエントリを記憶領域(BTB240、250)に登録しないこととしている。上記より、BranchPrediction25は、短い且つ前方分岐FLAG、すなわち、分岐情報に基づいて、BTBエントリの登録の可否を判断している。
オペレーションop160においては、BranchPrediction25は分岐が行われたブランチアドレスを含むBTBエントリがBTBの記憶領域に空きがあるか否かを判断する。BTBの記憶領域に空きがある場合は、オペレーション170へ進む。記憶領域に空きがない場合はオペレーション180へ進む。
オペレーション170においては、空いている記憶領域にエントリを登録する。その後、オペレーション190へ進む。
オペレーション180においては、BranchPrediction25は、すでに登録されているBTBエントリの内、LRU(Late Recently Used)管理回路により最後に参照された時刻が古いBTBエントリを検出する。そこで、最後に参照された時刻が古いBTBエントリを、新しく登録しようするBTBエントリに置き換える。その後、オペレーション190へ進む。なお、上記のおいては、参照された時刻によって、古いBTBエントリか新しいBTBエントリかを検出したが、参照された時刻に基づいて設定された順序情報によって、古いBTBエントリか新しいBTBエントリかを検出することとしてもよい。
なお、最後に参照された時刻が古いBTBエントリが複数存在する場合は、BTBエントリのBTB240、250内におけるアドレスに応じて順番に置き換える古いBTBエントリを選択してもよいし、アドレスに応じてランダムに置き換える古いBTBエントリを選択してもよい。
オペレーション190においては、そのブランチアドレスを含むBTBエントリにおけるプロファイル(履歴情報)を初期化する。初期化とは、プロファイルのカウンタ値を予め決められた値に設定することをいい、例えば、カウンタ値を”11”(ストロングリーtaken(分岐可能性大))に設定する。
図5はBranchPrediction25に含まれるBTBエントリ管理回路200を示す回路ブロック図である。
BTBエントリ管理回路200はcondition−code−resister210、LRU管理回路230、BTB240、250、リプレース制御回路260、マッチング検出回路280、290、マルチプレクサ300、及び、制御回路310から構成されている。
命令プリフェッチ段階において、BTBエントリ管理回路200は、フェッチした分岐条件を示す命令に対して、分岐先アドレスの予測を行う。詳細については後に図6を用いて説明する。
パイプラインの命令実行段階(EX)において、BTBエントリ管理回路200は、分岐予測結果に基づいて、BTBエントリのプロファイルの更新又はBTBエントリのリプレースを行うかの判断、BTBエントリのプロファイルの更新、BTBエントリのリプレースを行うかの判断をする。
condition−code−resister210は分岐命令に対する分岐条件を記憶するレジスタである。そして、condition−code−resister210は、分岐条件を制御回路310に出力する。
制御回路310は、分岐命令を実行する際に、図4を用いて説明した判断を行う。そして、BTB240、250にBTBエントリを登録するか、又は、すでに登録済みのBTBエントリを、現在実行中の分岐命令に関連するBTBエントリにリプレースする必要があるか、又は、すでに登録済みのBTBエントリのプロファイル(履歴情報)を更新する必要があるかを判断するため、リプレース制御回路260及びLRU管理回路230へ活性化信号を出力する。
まず、制御回路310はcondition−code−resister210から分岐条件を受け取り、BTAG22から受け取ったEXBCDとから、分岐takenとなったか否かを判断する。さらに、マッチング検出回路280のマッチング信号によって、分岐takenとならなかった分岐命令と分岐予測の組合せに関わるBTBエントリがBTB240又はBTB250に登録されていたかを判断し、さらに、分岐takenとなった分岐命令と分岐予測の組合せに関わるBTBエントリがBTB240又はBTB250に登録されていたかを判断する。
その結果、分岐takenとならなかった場合において、さらに、その分岐命令と分岐予測の組合せに関わるBTBエントリがBTB240又はBTB250に登録されていた場合には、制御回路310はリプレース制御回路260に活性化信号を送付し、EXIAをアドレスとしてBTB240又はBTB250にアクセスし、そのアドレスで指定された記憶領域に登録されているBTBエントリのPF(プロファイル:履歴情報)を、履歴情報のカウント値を下げるように、書き換える。
一方、分岐takenとなった場合において、さらに、その分岐命令と分岐予測の組合せに関わるBTBエントリがBTB240又はBTB250に登録されていた場合には、制御回路310はリプレース制御回路260に活性化信号を送付し、BTB240又はBTB250に登録されているBTBエントリのPF(プロファイル:履歴情報)を、履歴情報のカウント値を上げるように書き換える。すなわち、制御回路310はEXPFのカウント値を一つあげた後、EXPFをリプレース制御回路260に送り、リプレース制御回路260はBTBエントリのPFをEXPFに置き換える。
ところで、分岐takenとなった場合において、さらに、マッチング検出回路280のマッチング信号より判断して、その分岐命令と分岐予測の組合せに関わるBTBエントリがBTB240又はBTB250に登録されていなかった場合には、制御回路310はEXFLAGによって、さらに、分岐の属性が短距離かつ前方分岐であったか否かを判断する。その結果、短距離かつ前方分岐であったときには、制御回路310はリプレース制御回路260を活性化しない。
一方、分岐の属性が短距離かつ前方分岐でなかったときには、制御回路310はリプレース制御回路260を活性化し、EXIAをアドレスとしてBTB240又はBTB250にアクセスし、BTB240又はBTB250に空き領域があるか否かを判断する。
BTB240又はBTB250に空き領域があった場合は、分岐takenとなった、その分岐命令と分岐予測の組合せに関わるBTBエントリを空き領域に登録するように、制御回路310はEXIAをアドレスとして使用し、リプレース制御回路260を制御する。
BTB240又はBTB250に空き領域がなかった場合は、制御回路310はLRU管理回路230を活性化する信号を出力する。LRU管理回路230はEXIAで示されたBTB240の記憶領域に登録されているBTBエントリの登録時刻及びBTB250の領域に登録されているBTBエントリの登録時刻をリプレース制御回路260に送信する。リプレース制御回路260は、BTBエントリの登録時刻に基づいて、上記の2つのBTBエントリの内、古い登録時刻を有するBTBエントリを特定する。リプレース制御回路260は、古い登録時刻を有するBTBエントリを、分岐takenとなった、その分岐命令と分岐予測の組合せに関わるBTBエントリにリプレースする。
なお、上記では、LRU管理回路230は登録時刻を管理することとしたが、登録時刻に基づいた順序情報を管理することとしてもよい。その場合、リプレース制御回路260はLRU管理回路230からの順序情報を受け、古いBTBエントリから新しいBTBエントリかを特定する。
ところで、上記では、LRU管理回路230における登録時刻の新しい、古いによって、又は、順序情報に基づいて置き換えるBTBエントリを選択したが、BTB240に記憶されたBTBエントリと、BTB250に記憶されたBTBエントリと、を交互に選択するラウンドロピンアルゴリズムによって置き換えるBTBエントリを選択してもよい。さらに、BTB240に記憶されたBTBエントリと、BTB250に記憶されたBTBエントリとから、ランダムアルゴリズムによって、置き換えるBTBエントリを選択してもよい。
なお、上記において、分岐takenとなった、その分岐命令と分岐予測の組合せに関わるBTBエントリをBTB240又はBTB250に登録するとき、及び、登録時刻が古いBTBエントリをリプレースするときには、新しいBTBエントリのPF(履歴情報)をリプレース制御回路260は、初期値にリセットする。例えば、初期値とはストロングリーtaken(分岐可能性大)に相当するカウント値”11”とすることが考えられる。
また、LRU管理回路230は、BTB240又はBTB250において新しBTBエントリにリプレースが行われるときに、登録時刻を記録する。ただし、登録時刻そのものを記録するのみに限られず、登録時刻に応じた登録順序情報を記録することであってもよい。
図6はBTBエントリ管理回路200の予測動作について詳細に説明する図である。なお、図6は図5の回路ブロック図から予測動作を行う回路ブロックを抜き出した回路ブロック図である。
命令プリフェッチ段階において、BTBエントリ管理回路200は、フェッチした分岐条件を示す命令に対して、分岐先アドレスの予測を行う。
BTB240、250はBTBエントリを記憶し、リプレース回路260からのアドレスに従って、BTBエントリを読み出す回路である。
制御回路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が占める面積は増加する。
マッチング検出回路280、290はBTB240、250から出力されるIA31−12と、入力されたIFIAの12ビット目から31ビット目を比較し、それぞれ、一致信号をマルチプレクサ300及び制御回路310へ出力する回路である。ただし、一致信号を出力するのは、BTBエントリのVFLAGの論理が”1”のときのみである。
マルチプレクサ300はBTB240、250それぞれから出力される一致信号、IFtarget、及び、IFPFを受け、BTB240、250から出力されたIFPFのカウンタ値が大きい方に対応するIFtargetと、そのIFPFを出力する。なお、IFtargetはSelector24へ出力され、IFPFはレジスタ14へ出力される。
以上より、分岐予測回路(BTB管理回路200)は、
分岐命令と分岐予測を表す情報(BTBエントリ)を記憶する記憶部(BTB240、250)と、
上記分岐命令により設定された分岐条件(condition−code−resister210に格納されたcondition code)と、実現した分岐(EXBCD)とから、上記分岐予測が実現したか否か及び上記実現した分岐の属性を判断し、上記判断に応じて上記記憶部内の上記情報の書き換えを制御する制御回路(制御回路310)と、
上記制御回路(制御回路310)による制御を受けて、上記記憶部内の上記情報の書き換えを行う書き換え回路と、を備えることを特徴とする。
さらに、分岐予測回路(BTB管理回路200)は、
上記制御回路による上記実現した分岐の属性の判断は、「分岐先アドレスと分岐命令のアドレスとのアドレス差」と、「命令デコード段階から命令実行段階までのパイプライン長」の積に基づいて行うことを特徴とする。
分岐予測方法は、
分岐命令と分岐予測を表す情報(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記憶部の上記情報の内から、ランダムに選択する選択工程を含むことを特徴とする。
分岐命令により起こる分岐が、短距離且つ前方向分岐であるときには、図3に示すように、早い時期に命令のキャンセルが起こる。従って、パイプラインにおいて、比較的無駄な動作が少ない。そうすると、パイプラインに負荷がかからない分岐命令は分岐予測をしても、その分岐予測は有効性に乏しい。また、そのような命令に対して分岐予測を行うため、その分岐命令に関するBTBエントリをBTB回路240、250に登録すると、分岐予測をおこなった方が有効な命令に対するBTBエントリをBTB回路240、250に登録することができなくなる。BTBエントリを記憶する記憶領域(BTB回路240、250)は限られているからである。
ここで、分岐予測をおこなった方が有効な分岐命令とは、分岐命令と分岐先の距離と、パイプライン長とから決定される数値が、予め決められた数値より大きい命令をいう。さらに、分岐予測をおこなった方が有効性に乏しい分岐命令とは、分岐命令と分岐先の距離と、パイプライン長とから決定される数値が、予め決められた数値未満の命令をいう。
従って、分岐予測をおこなった方が有効性に乏しい分岐命令のBTBエントリをBTB回路240、250に登録しないこととすれば、分岐予測をおこなった方が有効な分岐命令の内、特に、分岐方向や分岐先に規則性のある分岐命令のBTBエントリを、効率よくBTB回路240、250に登録することができる。
従って、すでに登録されているBTBエントリと、新しく登録したいBTBエントリに置き換えるか否かについて、分岐情報に基づいて判断をおこなって、置き換えをすることとすれば、記憶するBTBエントリの数を多くすることなく、すなわち、予測回路(BTBエントリ管理回路200)の回路面積の増大がなく、予測機構の予測確率を上昇させることになる。
なお、パイプラインに負荷がかかるか、かからないかの判断のもとになる、分岐情報は、「分岐先アドレスと分岐命令のアドレスとのアドレス差」と、「命令デコード段階から命令実行段階までのパイプライン長」の積が4以下であるか否かに関するものであることが望ましい。
本発明によれば、分岐命令に対する過去の履歴の内、分岐予測に有効な過去の履歴を効率よく取得し、分岐予測の精度を高める分岐予測方法及びその分岐予測方法を実行する分岐予測回路を提供することができる。
11 I−Cache
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記憶部内の前記情報の書き換えを行う書き換え回路と、を備えることを特徴とする分岐予測回路。
  2. 前記制御回路による前記実現した分岐の属性の判断は、分岐先アドレスと分岐命令のアドレスとのアドレス差と、命令デコード段階から命令実行段階までのパイプライン長の積に基づいて行うことを特徴とする請求項1記載の分岐予測回路。
  3. 分岐命令と分岐予測を表す情報を記憶する第1記憶部を有する分岐予測回路を含む処理装置において、
    前記情報を前記第1記憶部に記憶する情報記憶工程と、
    前記分岐命令により設定された分岐条件と、実現した分岐とから、前記分岐予測が実現したか否か及び前記実現した分岐の属性を判断する工程と、
    前記判断に応じて前記第1記憶部内の前記情報の書き換えを行う情報書き換え工程と、
    前記分岐命令を処理装置で実行する際に、前記情報に応じて分岐予測を行う工程と、
    を備えることを特徴とする分岐予測方法。
  4. 前記実現した分岐の属性の判断は、分岐先アドレスと分岐命令のアドレスとのアドレス差と、命令デコード段階から命令実行段階までのパイプライン長の積に基づいて行うことを特徴とする請求項3記載の分岐予測方法。
  5. 前記分岐予測回路は前記分岐命令と前記分岐予測を表す前記情報を記憶する第2記憶部を含み、
    前記情報記憶工程は、前記情報を前記第2記憶部に記憶する工程を含むとともに、前記情報を記憶する際に、記憶する時刻に応じた記憶順序情報を記録する工程を含み、
    前記情報書き換え工程は、書き換えを行う前記情報を、前記第1記憶部の前記情報又は前記第2記憶部の前記情報内から、前記記憶順序情報に応じて選択する選択工程を含むことを特徴とする請求項3記載の分岐予測方法。
  6. 前記分岐予測回路は前記分岐命令と前記分岐予測を表す前記情報を記憶する第2記憶部を含み、
    前記情報書き換え工程は、書き換えを行う前記情報を、前記第1記憶部の前記情報、又は、前記第2記憶部の上記情報の内から、交互に選択する選択工程を含むことを特徴とする請求項3記載の分岐予測方法。
  7. 前記分岐予測回路は前記分岐命令と前記分岐予測を表す前記情報を記憶する第2記憶部を含み、
    前記情報書き換え工程は、書き換えを行う前記情報を、前記第1記憶部の前記情報、又は、前記第2記憶部の前記情報の内から、ランダムに選択する選択工程を含むことを特徴とする請求項3記載の分岐予測方法。

JP2010069910A 2010-03-25 2010-03-25 分岐予測方法及びその方法を実行する分岐予測回路 Expired - Fee Related JP5633169B2 (ja)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (6)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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