JP4009248B2 - 分岐予測装置および分岐予測方法 - Google Patents

分岐予測装置および分岐予測方法 Download PDF

Info

Publication number
JP4009248B2
JP4009248B2 JP2003407424A JP2003407424A JP4009248B2 JP 4009248 B2 JP4009248 B2 JP 4009248B2 JP 2003407424 A JP2003407424 A JP 2003407424A JP 2003407424 A JP2003407424 A JP 2003407424A JP 4009248 B2 JP4009248 B2 JP 4009248B2
Authority
JP
Japan
Prior art keywords
branch
prediction
instruction
history
branch prediction
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
Application number
JP2003407424A
Other languages
English (en)
Other versions
JP2005165950A (ja
Inventor
恵美 横井
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 JP2003407424A priority Critical patent/JP4009248B2/ja
Priority to US10/841,433 priority patent/US7472263B2/en
Publication of JP2005165950A publication Critical patent/JP2005165950A/ja
Application granted granted Critical
Publication of JP4009248B2 publication Critical patent/JP4009248B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

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/3848Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques

Description

この発明は、分岐命令の過去の分岐履歴を用いて分岐予測を行う分岐予測装置および分岐予測方法に関し、特に、同時に完了した複数の分岐命令の分岐情報を分岐履歴に反映し、もって分岐予測の精度を向上することができる分岐予測装置および分岐予測方法に関するものである。
従来、分岐命令の過去の分岐履歴を用いて分岐予測を行うグローバルヒストリは、分岐履歴の登録に用いる分岐情報が一つずつ送られてくることが前提とされていた。図8は、グローバルヒストリを用いる分岐予測装置の一例を示す図である。
同図に示すように、この分岐予測装置は、命令フェッチ部20が、命令フェッチアドレス生成部10により生成された命令フェッチアドレスを用いて、命令フェッチ要求を出すと同時にブランチヒストリ200を索引する。ここで、ブランチヒストリ200は、分岐命令のアドレスと分岐命令の予測分岐先のアドレスとを対応させて記憶し、分岐命令のアドレスから分岐先のアドレスを索引する連想記憶である。
すなわち、命令フェッチアドレスに対応する分岐命令がブランチヒストリ200に登録されている場合には、命令フェッチ部20は、ブランチヒストリ200により予測された分岐先の命令アドレスを読み出し、次の命令フェッチは、この命令アドレスに基づいて行う。
一方、フェッチされた分岐命令は、命令デコーダ30によりデコードされ、分岐リザベーションステーション40に登録されて実行される。そして、分岐命令の処理が完了すると、分岐(Taken)または非分岐(Not Taken)のいずれかの分岐情報がグローバルヒストリ800に渡される。
グローバルヒストリ800は、各分岐命令の分岐履歴を記憶しており、受け取った分岐情報を用いて対応する分岐命令の分岐履歴を更新する。そして、更新した分岐履歴に基づいて、この分岐命令の次回の分岐方向を予測し、予測した分岐方向に基づいてブランチヒストリ200の対応するエントリを更新する。
このように、この分岐予測装置では、グローバルヒストリ800が分岐履歴を用いて分岐方向を予測し、その予測結果に基づいてブランチヒストリ200を更新し、ブランチヒストリ200がグローバルヒストリ800の予測結果に基づいて分岐先を予測する(例えば、特願2002−191277参照。)。
しかしながら、従来のグローバルヒストリ800は、履歴登録に用いる分岐情報が一つずつ送られてくることが前提とされていた。したがって、全ての分岐情報が完全に別サイクルで送られてくる場合は、情報を損なうこと無く操作に用いることが可能であるが、複数の分岐情報が同時に送られてくる場合には対処することができないという問題があった。
現在のように、スーパースカラプロセッサやアウトオブオーダの処理を採用したプロセッサにおいては、条件が揃い次第命令を実行し、複数の命令を同時に完了させることがあるため、複数の分岐命令が同時に完了することもある。したがって、グローバルヒストリは、同時に送られてくる複数の分岐情報に対応する必要がある。
また、同時に送られてくる複数の分岐情報にグローバルヒストリが対応する場合には、ブランチヒストリの更新も複数同時に発生するため、ブランチヒストリも複数の同時更新に対応する必要がある。しかし、ブランチヒストリはRAMで構成されるため、入力ポートの数は限られることから、同時更新の数を入力ポートの数まで絞る必要もある。
この発明は、上述した従来技術による問題点を解消するためになされたものであり、同時に完了した複数の分岐命令の分岐情報を分岐履歴に反映し、もって分岐予測の精度を向上することができる分岐予測装置、分岐予測方法および分岐予測プログラムを提供することを目的とする。
上述した課題を解決し、目的を達成するため、本発明は、分岐命令の過去の分岐履歴を用いて分岐予測を行う分岐予測装置であって、分岐命令のアドレスと該分岐命令の予測分岐先のアドレスとの対応表を用いて分岐命令の分岐先を予測するブランチヒストリと、同時に完了した複数の分岐命令の分岐情報を受け付ける分岐情報受付手段と、前記分岐情報受付手段により同時に受け付けられた複数の分岐情報とそれぞれの分岐命令の過去の分岐履歴とに基づいて前記複数の分岐命令が次に実行される場合の分岐予測を並行して行う並行分岐予測手段と、前記並行分岐予測手段により並行して行われた複数の分岐予測結果のうち、分岐命令に関する所定の優先順位に基づいて、所定の数の分岐予測結果を選択する選択手段と、前記選択手段により選択された前記所定の数の分岐予測結果を前記ブランチヒストリに登録する選択登録手段とを備えたことを特徴とする。
また、本発明は、分岐命令の過去の分岐履歴を用いて分岐予測を行う分岐予測方法であって、分岐命令のアドレスと該分岐命令の予測分岐先のアドレスとの対応表を有するブランチヒストリにより分岐命令の分岐先を予測するステップと、同時に完了した複数の分岐命令の分岐情報を受け付けるステップと、前記受け付けた複数の分岐情報とそれぞれの分岐命令の過去の分岐履歴とに基づいて前記複数の分岐命令が次に実行される場合の分岐予測を並行して行うステップ、前記並行して行った複数の分岐予測結果のうち、分岐命令に関する所定の優先順位に基づいて、所定の数の分岐予測結果を選択するステップと、前記選択した所定の数の分岐予測結果を前記ブランチヒストリに登録するステップとを含んだことを特徴とする。
かかる発明によれば、同時に完了した複数の分岐命令の分岐情報を受け付け、同時に受け付けた複数の分岐情報とそれぞれの分岐命令の過去の分岐履歴とに基づいて複数の分岐命令が次に実行される場合の分岐予測を並行して行い、並行して行った複数の分岐予測結果のうち、分岐命令に関する所定の優先順位に基づいて、所定の数の分岐予測結果を選択し、選択した所定の数の分岐予測結果をブランチヒストリに登録するよう構成したので、同時に完了した複数の分岐命令の分岐情報を全て分岐履歴に反映することができる。また、ブランチヒストリの入力ポート数に合わせてブランチヒストリを更新することができる。
また、本発明は、上記発明において、前記選択登録手段は、前記選択手段により選択された前記所定の数の分岐予測結果を前記ブランチヒストリに並行して登録することを特徴とする。
この発明によれば、選択した所定の数の分岐予測結果をブランチヒストリに並行して登録するよう構成したので、同時に完了した複数の分岐命令の分岐情報を用いて行った分岐予測結果をブランチヒストリに反映することができる。
本発明によれば、同時に完了した複数の分岐命令の分岐情報を分岐履歴に反映するので、分岐予測の精度を向上することができるという効果を奏する。
また、本発明によれば、同時に完了した複数の分岐命令の分岐情報を用いて行った分岐予測結果をブランチヒストリに反映するので、分岐予測の精度を向上することができるという効果を奏する。
また、本発明によれば、ブランチヒストリの入力ポート数に合わせてブランチヒストリを更新するので、入力ポート数の少ないブランチヒストリを組み合わせて使用することができるという効果を奏する。
以下に添付図面を参照して、この発明に係る分岐予測装置および分岐予測方法の好適な実施例を詳細に説明する。なお、ここでは、二つの分岐命令が同時に完了する場合を中心に説明する。
まず、本実施例に係るグローバルヒストリのグローバルヒストリエントリの構成について説明する。図1は、本実施例に係るグローバルヒストリのグローバルヒストリエントリの構成を示す機能ブロック図である。同図に示すように、このグローバルヒストリ100は、複数のグローバルヒストリエントリi(i=1,2,・・・,n)から構成され、各グローバルヒストリエントリは、対応する分岐命令の分岐方向を予測し、予測した結果を分岐予測として出力する。
ここで、各グローバルヒストリエントリは、分岐命令のアドレスの部分ビット列によって分岐命令と対応づけられる。すなわち、命令アドレスの特定の部分ビット列が一定の複数の分岐命令が一つのグローバルヒストリエントリに対応付けられる。
また、各グローバルヒストリエントリは、いずれも同様の構成を有するので、ここではグローバルヒストリエントリi110を例にとって説明する。グローバルヒストリエントリi110は、タグ部111と、比較回路112および113と、分岐方向予測回路114とを有する。
タグ部111は、グローバルヒストリエントリi110が分岐方向を予測する分岐命令のアドレスの部分ビット列をタグとして記憶する記憶部である。すなわち、このタグ部111には、グローバルヒストリ100に新たなエントリを作成する場合に、対応する分岐命令のアドレスの特定の部分ビット列がタグとして格納される。なお、タグとしては、分岐命令のアドレスの特定の部分ビット列の代わりに、アドレス全体、命令オペコードをキーとする連想情報などを用いることもできる。
比較回路112は、分岐リザベーションステーション40の中のエントリであるRSBR0から完了した分岐命令の識別情報0、すなわち完了した分岐命令のアドレスの特定の部分ビット列を含む情報を受け取り、タグ部111に記憶されたタグと比較する回路である。
比較回路113は、分岐リザベーションステーション40の中のエントリであるRSBR1から完了した分岐命令の識別情報1を受け取り、タグ部111に記憶されたタグと比較する回路である。
なお、分岐リザベーションステーション40では、RSBR0、RSBR1、RSBR2、・・・の順に分岐命令が完了し、完了していない分岐命令はRSBR0の方向へ順に移動される。したがって、ここでは、最大二つの分岐命令が同時に完了するため、識別情報および分岐情報は、RSBR0とRSBR1とから各グローバルヒストリエントリに渡される。
分岐方向予測回路114は、RSBR0から分岐情報0を受け取り、RSBR1から分岐情報1を受け取って、内部に記憶した過去の分岐履歴情報を用いてそれぞれの分岐命令に対して分岐方向を予測する回路である。
例えば、この分岐方向予測回路114は、過去に発生した連続分岐(Taken)回数Tおよび連続非分岐(Not Taken)回数Nを記憶し、現在連続している分岐(Taken)の回数がTになると次回を非分岐(Not Taken)と予測し、現在連続している非分岐(Not Taken)の回数がNになると次回を分岐(Taken)と予測する。
そして、グローバルヒストリエントリi110は、分岐情報0に対して予測を行った結果と、比較回路112による比較結果とをAND回路115によってANDを取り、分岐予測i_0を生成する。すなわち、RSBR0から受け取った識別情報0がタグ部111に記憶されたタグとマッチする場合には、分岐方向予測回路114が分岐履歴情報とRSBR0から受け取った分岐情報0とを用いて分岐方向を予測して分岐予測i_0を生成する。
同様に、グローバルヒストリエントリi110は、分岐情報1に対して予測を行った結果と、比較回路113による比較結果とをAND回路116によってANDを取り、分岐予測i_1を生成する。すなわち、RSBR1から受け取った識別情報1がタグ部111に記憶されたタグとマッチする場合には、分岐方向予測回路114が分岐履歴情報とRSBR1から受け取った分岐情報1とを用いて分岐方向を予測して分岐予測i_1を生成する。
また、グローバルヒストリ100は、各グローバルヒストリエントリ毎の分岐予測を各エントリの分岐予測i_0毎および分岐予測i_1毎にマージし、分岐予測0および分岐予測1を生成する。
図2は、各グローバルヒストリエントリによる分岐予測をマージするマージ回路の一例を示す図である。同図に示すように、このマージ回路は、各グローバルヒストリエントリの分岐予測i_0(i=1,2,・・・,n)をマージし、分岐予測0を生成する。
なお、ここでは、グローバルヒストリ100に新たなエントリを生成する場合には、完了して送られてきた分岐命令が既存のエントリにヒットしないことを条件としているので、分岐予測i_0(i=1・・・n)のうち一つだけが生成されることが保証されている。したがって、このマージ回路のマージの仕方は、単に分岐予測i_0(i=1,2,・・・,n)のORをとればよい。
同様に、分岐予測i_1(i=1,2,・・・,n)のORをとることによって、分岐予測1を生成することができる。このように、分岐予測i_0および分岐予測i_1をそれぞれマージすることによって、最終的に最大二つの分岐予測、分岐予測0と分岐予測1が得られる。すなわち、別々のグローバルヒストリエントリで、識別情報0と識別情報1がそれぞれタグにマッチしたとすると、分岐予測0と分岐予測1の両方が最終的に得られる。
このように、各グローバルヒストリエントリがRSBR0およびRSBR1の両方から同時に識別情報と分岐情報とを受け付け、受け付けた識別情報のいずれかがタグ部111に記憶されたタグとマッチした場合に分岐予測を生成することによって、グローバルヒストリ100は、RSBR0とRSBR1の両方で同時に完了した分岐命令の分岐情報を処理することができる。
なお、同一のグローバルヒストリエントリに二つの分岐命令がヒット(多重ヒット)した場合には、二つの分岐命令が同一の分岐命令であれば、分岐方向予測回路114が二つの分岐情報を用いて分岐予測を行う。ここで、分岐リザベーションステーション40が完全にインオーダで完了することとすると、同一の分岐命令が同時に完了する場合には、一つめの分岐命令は分岐(Taken)の可能性が高く、一つめの分岐命令を分岐(Taken)と仮定することにより、多重ヒットを効率良く処理することができる。
一方、タグ部111に記憶されたタグが分岐命令のアドレスの部分ビット列であるため、二つの分岐命令が同一の分岐命令でないにもかかわらず同一のグローバルヒストリエントリにヒットしたのであれば、分岐方向予測回路114が分岐情報1を用いて分岐予測を行う。ただし、無条件に分岐情報1を用いて分岐予測を行う代わりに、多重ヒットの回数や予測成功度合などを用いて、いずれかの分岐命令を選択することもできる。
次に、本実施例に係るグローバルヒストリ100の構成について説明する。図3は、本実施例に係るグローバルヒストリ100の構成を示す機能ブロック図である。同図に示すように、このグローバルヒストリ100は、n個のグローバルヒストリエントリi(i=1,2,・・・,n)に加えてフラグ制御回路120と、マージ回路130および140と、セレクト回路150とを有する。
フラグ制御回路120は、RSBR0およびRSBR1から前回の分岐予測、分岐情報などを受け取り、各分岐命令のDizzyフラグおよびGiddyフラグを制御する回路である。
ここで、Dizzyフラグは、ブランチヒストリ200が分岐すると予測したが分岐しなかった場合にセットされるフラグであり、Giddyフラグは、ブランチヒストリ200が分岐すると予測して分岐したが分岐先が間違っていた場合にセットされるフラグである。これらのフラグは、分岐命令毎にブランチヒストリ200に登録される。また、これらのフラグは、分岐予測成功によりリセットされる。
このフラグ制御回路120は、ブランチヒストリ200が予測した結果と実際の分岐結果に基づいて、DizzyフラグおよびGiddyフラグをセットまたはリセットする信号を生成する。そして、生成された信号はセレクト回路150によって使用される。
図4は、フラグ制御回路120の一例を示す図である。なお、RSBR0の分岐命令のフラグを制御する場合とRSBR1の分岐命令のフラグを制御する場合とでは、いずれも同様の回路構成となるので、ここではRSBR0の分岐命令のフラグを制御する場合を例にとって説明する。
同図に示すように、このフラグ制御回路120は、RSBR0からRSBR0_DIZZY、RSBR0_GIDDY、RSBR0_TAKEN、RSBR0_NOT_TAKEN、RSBR0_HITおよびRSBR0_TARGET_MATCHを受け取る。
ここで、RSBR0_DIZZYは、RSBR0の分岐命令の現在のDizzyフラグの状態を示し、RSBR0_GIDDYは、RSBR0の分岐命令の現在のGiddyフラグの状態を示す。また、RSBR0_TAKENは、RSBR0の分岐命令の実行結果が分岐(Taken)であることを示し、RSBR0_NOT_TAKENは、RSBR0の分岐命令の実行結果が非分岐(Not Taken)であることを示す。また、RSBR0_HITは、ブランチヒストリ200がRSBR0の分岐命令が分岐(Taken)と予測したことを示し、RSBR0_TARGET_MATCHは、RSBR0の分岐命令の分岐先が正しく予測されたことを示す。
そして、このフラグ制御回路120は、RSBR0_DIZZYとRSBR0_TAKENとRSBR0_HITのANDをとってDIZZY_OFF_RSBR0を生成する。ここで、DIZZY_OFF_RSBR0は、RSBR0の分岐命令のDizzyフラグをリセットする信号である。
すなわち、このフラグ制御回路120は、現在Dizzyフラグがセットされていて、ブランチヒストリ200の予測が成功した場合には、Dizzyフラグをリセットする信号を生成する。
また、このフラグ制御回路120は、RSBR0_DIZZYの否定とRSBR0_NOT_TAKENとRSBR0_HITのANDをとってNew_DIZZY_RSBR0を生成する。ここで、New_DIZZY_RSBR0は、RSBR0の分岐命令のDizzyフラグをセットする信号である。
すなわち、このフラグ制御回路120は、現在Dizzyフラグがセットされてなく、ブランチヒストリ200の予測が失敗した場合には、Dizzyフラグをセットする信号を生成する。
また、このフラグ制御回路120は、RSBR0_GIDDYとRSBR0_TAKENとRSBR0_HITとRSBR0_TARGET_MATCHのANDをとってGIDDY_OFF_RSBR0を生成する。ここで、GIDDY_OFF_RSBR0は、RSBR0の分岐命令のGiddyフラグをリセットする信号である。
すなわち、このフラグ制御回路120は、現在Giddyフラグがセットされていて、ブランチヒストリ200が正しく分岐先を予測した場合には、Giddyフラグをリセットする信号を生成する。
また、このフラグ制御回路120は、RSBR0_TAKENとRSBR0_HITとRSBR0_TARGET_MATCHとのANDをとってNew_GIDDY_RSBR0を生成する。ここで、New_GIDDY_RSBR0は、RSBR0の分岐命令のGiddyフラグをセットする信号である。
すなわち、このフラグ制御回路120は、分岐すると予測して分岐したが分岐先が間違っていた場合には、Giddyフラグをセットする信号を生成する。
このように、フラグ制御回路120は、DIZZY_OFF_RSBR0、New_DIZZY_RSBR0、GIDDY_OFF_RSBR0およびNew_GIDDY_RSBR0を生成し、生成された信号は、セレクト回路150によって使用される。
マージ回路130は、各グローバルヒストリエントリの分岐予測i_0(i=1,2,・・・,n)をマージし、分岐予測0を生成する回路であり、マージ回路140は、各グローバルヒストリエントリの分岐予測i_1(i=1,2,・・・,n)をマージし、分岐予測1を生成する回路である。
セレクト回路150は、分岐予測0および分岐予測1が同時に生成された場合に、ブランチヒストリ200の更新に用いる分岐予測を選択する回路である。ブランチヒストリ200は入力ポートを一つしか備えていないため、同時に生成された二つの分岐予測を一つに絞る必要がある。そこで、分岐予測0および分岐予測1が同時に生成された場合に、このセレクト回路150がいずれかの分岐予測を選択する。
具体的には、このセレクト回路150は、以下の優先順位で更新する分岐命令を選択する。
(1)再命令フェッチとなる分岐命令(前回の予測が間違っていた)
(2)別の分岐予測機構が用いられる分岐命令
(3)グローバルヒストリ100が分岐方向変更と予測した分岐命令
(4)分岐方向以外の状態値(DizzyフラグおよびGiddyフラグの値)変更と予測した分岐命令
(1)の優先順位を高くする理由は以下のとおりである。ある分岐命令の完了に際して再命令フェッチ要求がでるということは、ブランチヒストリ200の予測が間違っていたということを意味する。したがって、ブランチヒストリ200にエントリがそもそもなければ新規に登録し、ブランチヒストリ200にエントリはあるがそこに書かれた予測が間違っていたならば、正しいと思われる予測値に更新すべく、その分岐命令を優先的に選択する(優先順位1)。
なお、ある分岐命令が再命令フェッチを起こすということは、その分岐命令よりも後ろのRSBRエントリにあった分岐命令は、全て実行されない命令となるので、完了させずに破棄される。したがって、ここでは、同時完了する"再命令フェッチとなる分岐命令"は一つとなる。
(2)の優先順位を高くする理由は以下のとおりである。本実施例に係る分岐予測装置は、サブルーチンコールおよびリターンの無条件分岐命令に対して、これら二つを一組として別の分岐予測機構を備えている。そして、分岐予測装置は、セレクト回路150で選択された情報によって、この分岐予測機構のメンテナンスを行う。そのため、分岐の種類を表す信号が、サブルーチンコール/リターンなどの無条件分岐命令を示していた場合、その分岐命令を優先的に選択する(優先順位2)。
なお、サブルーチンコールおよびリターンは無条件分岐であるため、ブランチヒストリ200に登録されていさえすれば少なくとも分岐方向の予測は成功するので、予測成功の確率は非常に高い。また、常に分岐(Taken)であるから、ブランチヒストリ200のメンテナンスはそれほど必要がない。したがって、ブランチヒストリ200への登録および更新に関係なくこの分岐予測機構のメンテナンスのための別パスを設けるならば、ブランチヒストリ200の更新のための選択では、優先順位を特別高くする必要はない。
(3)の優先順位を高くする理由は、グローバルヒストリ100が分岐方向変更と予測した場合には、その変更をブランチヒストリ200に反映させる必要があるためである(優先順位3)。
(4)の優先順位を高くする理由は、フラグの状態変更と予測した場合には、その変更をブランチヒストリ200に反映させる必要があるためである(優先順位4)。
また、(1)〜(4)の優先順位を用いても分岐命令を選択できない場合には、このセレクト回路150は、RSBR1の分岐命令を選択する。
図5は、セレクト回路150の一例を示す図である。同図に示すように、このセレクト回路150は、RSBR0からRSBR0_REIFTCH、RSBR0_SUBROUTINE_CALL、RSBR0_SUBROUTINE_RETURN、RSBR0_COMPLETED、RSBR0_IARおよびRSBR0_TARGET_IARを受け取る。
ここで、RSBR0_REIFTCHは、RSBR0の分岐命令の完了時の再命令フェッチ要求を示し、RSBR0_SUBROUTINE_CALLは、RSBR0の分岐命令がサブルーチンコールであることを示す。また、RSBR0_SUBROUTINE_RETURNは、RSBR0の分岐命令がサブルーチンリターンであることを示し、RSBR0_COMPLUTEDは、RSBR0の分岐命令の実行が完了したことを示す。また、RSBR0_IARは、RSBR0の分岐命令の命令アドレスであり、RSBR0_TARGET_IAR は、RSBR0の分岐命令の分岐先アドレスである。なお、このセレクト回路150は、RSBR1からも同様の信号を受け取る。
また、このセレクト回路150は、フラグ制御回路120から、DIZZY_OFF_RSBR0、New_DIZZY_RSBR0、GIDDY_OFF_RSBR0およびNew_GIDDY_RSBR0を受け取り、マージ回路130から、PRED_TAKEN_RSBR0およびPRED_NOT_TAKEN_RSBR0を受け取る。
ここで、PRED_TAKEN_RSBR0は、グローバルヒストリ100としてRSBR0の分岐命令が分岐すると予測したことを示し、PRED_NOT_TAKEN_RSBR0は、グローバルヒストリ100としてRSBR0の分岐命令が非分岐と予測したことを示す。
また、このセレクト回路150は、マージ回路140から、PRED_TAKEN_RSBR1およびPRED_NOT_TAKEN_RSBR1を受け取る。
そして、このセレクト回路150は、PRED_TAKEN_RSBR0とRSBR1_REIFTCHの否定とRSBR1_SUBROUTINE_CALLの否定とRSBR1_SUBROUTINE_RETURNの否定とのANDをとってRSBR0_SELECTを生成する。ここで、同時に二つの分岐命令が完了した場合には、RSBR0の分岐命令の実行結果は非分岐(Not Taken)であるため、PRED_TAKEN_RSBR0は、グローバルヒストリ100としてRSBR0の分岐命令を分岐方向変更(優先順位3)と予測したことを示す。
すなわち、グローバルヒストリ100としてRSBR0の分岐命令を分岐方向変更と予測し、RSBR1の分岐命令について再命令フェッチ要求もなく、RSBR1の分岐命令がサブルーチンコールでもリターンでもない(RSBR1の分岐命令は優先順位1にも2にも該当しない)場合には、このセレクト回路150は、RSBR0の分岐命令をブランチヒストリ200の更新対象として選択する。
また、このセレクト回路150は、PRED_NOT_TAKEN_RSBR0とRSBR1_TAKENの否定とPRED_TAKEN_RSBR1の否定とPRED_NOT_TAKEN_RSBR1の否定とRSBR1_REIFTCHの否定とRSBR1_SUBROUTINE_CALLの否定とRSBR1_SUBROUTINE_RETURNの否定とのANDをとってRSBR0_SELECTを生成する。
ここで、再命令フェッチがないので、DizzyフラグおよびGiddyフラグをセットすることはない。したがって、これらのフラグの更新としては、リセットの場合だけであり、RSBR1_TAKEN、すなわちRSBR1の分岐(Taken)の場合にのみ、フラグのリセットの可能性がある。そこで、このセレクト回路150は、RSBR1_TAKENの場合にRSBR1の分岐命令を選択する(優先順位4)。
また、PRED_TAKEN_RSBR1とPRED_NOT_TAKEN_RSBR1の両方とも成立しないことは、RSBR1の分岐命令に対してグローバルヒストリ100として予測ができないことを示す。グローバルヒストリ100として予測ができない場合としては、例えば、分岐履歴情報が十分でない場合がある。
すなわち、このセレクト回路150は、グローバルヒストリ100としてRSBR0の分岐命令を分岐方向変更なしと予測し、RSBR1の分岐命令によるフラグのリセットがなく(RSBR1の分岐命令は優先順位4に該当しない)、RSBR1の分岐命令に対してグローバルヒストリ100として予測ができず(RSBR1の分岐命令は優先順位3に該当しない)、RSBR1の分岐命令について再命令フェッチ要求もなく(RSBR1の分岐命令は優先順位1に該当しない)、RSBR1の分岐命令がサブルーチンコールでもリターンでもない(RSBR1の分岐命令は優先順位2に該当しない)場合には、RSBR0の分岐命令をブランチヒストリ200の更新対象として選択する。
また、RSBR1_COMPLETEDが成立しないことは、RSBR1の分岐命令が完了しなかったことを示し、その場合には、このセレクト回路150は、RSBR0の分岐命令をブランチヒストリ200の更新対象として選択する。なお、RSBR0の分岐命令が再命令フェッチ(優先順位1)の場合ならびにサブルーチンコールおよびリターンの無条件分岐命令(優先順位2)の場合は、RSBR1_COMPLETEDが成立しない場合に含まれる。
このように、このセレクト回路150が、(1)〜(4)の優先順位に基づいてブランチヒストリ200の更新対象の分岐命令を選択することによって、入力ポートが一つのブランチヒストリ200とグローバルヒストリ100とを組み合わせることができる。
次に、本実施例に係るグローバルヒストリ100の処理手順について説明する。図6は、本実施例に係るグローバルヒストリ100の処理手順を示すフローチャートである。同図に示すように、このグローバルヒストリ100は、分岐リザベーションステーション40のRSBR0から分岐命令の識別情報0および分岐情報0を取得し、RSBR1から分岐命令の識別情報1および分岐情報1を取得する(ステップS601)。
そして、それぞれのグローバルヒストリエントリが識別情報0および識別情報1をタグ部111に記憶したタグと比較し(ステップS602)、タグがマッチしたグローバルヒストリエントリが分岐予測を生成する(ステップS603)。
そして、各グローバルヒストリエントリの分岐予測をマージしてマージ回路130が分岐予測0を生成し、マージ回路140が分岐予測1を生成する(ステップS604)。
そして、同時に二つの分岐予測0および分岐予測1が生成された場合には、セレクト回路150が分岐リザベーションステーション40からの情報およびフラグ制御回路120により生成されたフラグ更新情報を用いて分岐予測0または分岐予測1を選択する分岐予測選択処理を行う(ステップS605)。そして、選択した分岐予測を用いてブランチヒストリ200を更新する(ステップS606)。
このように、それぞれのグローバルヒストリエントリが識別情報0および識別情報1をタグ部111に記憶したタグと比較し、タグがマッチしたグローバルヒストリエントリが分岐予測を生成することによって、グローバルヒストリ100は、同時に完了する二つの分岐命令に対応することができる。
次に、図6に示した分岐予測選択処理(ステップS605)の処理手順について説明する。図7は、図6に示した分岐予測選択処理の処理手順を示すフローチャートである。同図に示すように、この分岐予測選択処理は、いずれかの分岐命令の完了により再命令フェッチ要求が発生したか否かを調べる(ステップS701)。
そして、いずれかの分岐命令の完了により再命令フェッチ要求が発生した場合には、再命令フェッチ要求が発生した分岐命令をブランチヒストリ200を更新する対象の分岐命令として選択する(ステップS702)。
一方、どちらの分岐命令の完了によっても再命令フェッチ要求が発生しなかった場合には、いずれかの分岐命令がサブルーチンコールまたはリターンであるか否かを調べる(ステップS703)。
そして、いずれかの分岐命令がサブルーチンコールまたはリターンである場合には、サブルーチンコールまたはリターンである分岐命令をブランチヒストリ200を更新する対象の分岐命令として選択する(ステップS704)。
また、どちらの分岐命令もサブルーチンコールでもリターンでもない場合には、いずれかの分岐命令の分岐予測が分岐方向変更であるか否かを調べる(ステップS705)。そして、いずれかの分岐命令の分岐予測が分岐方向変更である場合には、分岐予測が分岐方向変更である分岐命令をブランチヒストリ200を更新する対象の分岐命令として選択する(ステップS706)。
また、どちらの分岐命令の分岐予測も分岐方向変更でない場合には、いずれかの分岐命令がDizzyフラグまたはGiddyフラグを変更するか否かを調べる(ステップS707)。そして、いずれかの分岐命令がDizzyフラグまたはGiddyフラグを変更する場合には、DizzyフラグまたはGiddyフラグを変更する分岐命令をブランチヒストリ200を更新する対象の分岐命令として選択する(ステップS708)。
また、どちらの分岐命令もDizzyフラグもGiddyフラグも変更しない場合には、分岐命令1すなわちRSBR1の分岐命令をブランチヒストリ200を更新する対象の分岐命令として選択する(ステップS709)。
このように、同時に二つの分岐予測が行われた場合に、この分岐予測選択処理が分岐予測が行われた二つの分岐命令について再命令フェッチ、サブルーチンコール/リターン、分岐方向変更およびフラグ変更を順に調べ、該当する分岐命令がある場合には、その分岐命令をブランチヒストリ200を更新する対象の分岐命令として選択することによって、入力ポートが一つしかないブランチヒストリ200をグローバルヒストリ100と組み合わせて利用することができる。
上述してきたように、本実施例では、グローバルヒストリエントリi110(i=1,2,・・・,n)がRSBR0から識別情報0を、RSBR1から識別情報1を同時に受け取り、識別情報0とタグ部111に記憶したタグとを比較回路112を用いて比較してマッチした場合には分岐予測i_0を生成し、識別情報1とタグ部111に記憶したタグとを比較回路113を用いて比較してマッチした場合には分岐予測i_1を生成することとしたので、グローバルヒストリ100は同時に完了した二つの分岐命令を処理することができる。
また、本実施例では、二つの分岐予測を同時に行った場合に、セレクト回路150が所定の優先順位に基づいていずれかの分岐予測を選択することとしたので、ブランチヒストリ200のポート数を増やすことなくグローバルヒストリ100と組み合わせて精度の高い分岐予測をおこなうことができる。
また、本実施例では、グローバルヒストリが同時に完了する二つの分岐命令を受け付けて二つの分岐予測を行う場合について説明したが、本発明はこれに限定されるものではなく、任意の数の分岐命令が同時に完了する場合にも同様に適用することができる。
また、本実施例では、グローバルヒストリが同時に予測された二つの分岐予測を一つに絞ってブランチヒストリを更新する場合について説明したが、本発明はこれに限定されるものではなく、任意の数の分岐予測をブランチヒストリが同時に受け付ける数に絞る場合にも同様に適用することができる。あるいは、グローバルヒストリにより同時に予測された複数の分岐予測を複数サイクルに分割してブランチヒストリを更新することもできる。
また、本実施例では、グローバルヒストリの予測結果を用いてブランチヒストリを更新する場合について説明したが、本発明はこれに限定されるものではなく、グローバルヒストリの予測結果を直接分岐予測に用いる場合にも同様に適用することができる。
(付記1)分岐命令の過去の分岐履歴を用いて分岐予測を行う分岐予測装置であって、
同時に完了した複数の分岐命令の分岐情報を受け付ける分岐情報受付手段と、
前記分岐情報受付手段により同時に受け付けられた複数の分岐情報とそれぞれの分岐命令の過去の分岐履歴とに基づいて前記複数の分岐命令の分岐予測を並行して行う並行分岐予測手段と
を備えたことを特徴とする分岐予測装置。
(付記2)前記並行分岐予測手段は、
分岐命令を識別する識別子を記憶する識別子記憶手段と、
前記複数の分岐命令のうち前記識別子記憶手段に記憶される識別子と識別子が同一である分岐命令に対して、該分岐命令の過去の分岐履歴および分岐情報に基づいて分岐予測を行う分岐方向予測手段と
を有する分岐予測要素手段を複数備え、該複数の分岐予測要素手段が並行して分岐予測を行うことを特徴とする付記1に記載の分岐予測装置。
(付記3)前記識別子記憶手段により記憶される識別子は、分岐命令ごとに異なり、前記分岐方向予測手段は、前記分岐情報受付手段により同時に受け付けられた複数の分岐情報が識別子が同一である分岐命令についての分岐情報であるときは、該複数の分岐情報を順番に受け付けたものとして分岐予測を行うことを特徴とする付記2に記載の分岐予測装置。
(付記4)前記識別子記憶手段により記憶される識別子は、異なる分岐命令で同一の場合があり、前記分岐方向予測手段は、前記分岐情報受付手段により同時に受け付けられた複数の分岐情報が識別子が同一である分岐命令についての分岐情報であるときは、該複数の分岐情報のうち任意の分岐命令についての分岐情報だけを選択し、該選択した分岐情報を用いて分岐予測を行うことを特徴とする付記2に記載の分岐予測装置。
(付記5)分岐命令のアドレスと該分岐命令の予測分岐先のアドレスとの対応表を用いて分岐命令の分岐先を予測するブランチヒストリを有し、
前記並行分岐予測手段により並行して行われた複数の分岐予測結果を前記ブランチヒストリに並行して登録する並行登録手段
をさらに備えたことを特徴とする付記1に記載の分岐予測装置。
(付記6)分岐命令のアドレスと該分岐命令の予測分岐先のアドレスとの対応表を用いて分岐命令の分岐先を予測するブランチヒストリを有し、
前記並行分岐予測手段により並行して行われた複数の分岐予測結果のうち所定の数の分岐予測結果を選択する選択手段と、
前記選択手段により選択された所定の数の分岐予測結果を前記ブランチヒストリに登録する選択登録手段と
をさらに備えたことを特徴とする付記1に記載の分岐予測装置。
(付記7)前記選択手段は、分岐命令に関する所定の優先順位に基づいて分岐予測結果を選択することを特徴とする付記6に記載の分岐予測装置。
(付記8)前記選択手段が選択する分岐予測結果の優先順位は、再命令フェッチとなった分岐命令の分岐予測結果、他の分岐予測機構を更新する分岐予測結果、分岐方向変更と予測された分岐予測結果、前記ブランチヒストリに分岐命令毎に登録される状態を更新する分岐予測結果の順であることを特徴とする付記7に記載の分岐予測装置。
(付記9)前記他の分岐予測機構は、サブルーチンコールとリターンの無条件分岐命令の対に対して分岐予測を行うことを特徴とする付記8に記載の分岐予測装置。
(付記10)前記ブランチヒストリに分岐命令毎に登録される状態は、該ブランチヒストリが分岐すると予測して分岐しなかった場合にセットされるDizzyフラグおよび該ブランチヒストリが分岐すると予測して分岐したが分岐先が間違っていた場合にセットされるGiddyフラグであることを特徴とする付記8に記載の分岐予測装置。
(付記11)前記分岐情報を用いてDizzyフラグおよびGiddyフラグの更新を行うフラグ制御手段をさらに備えたことを特徴とする付記10に記載の分岐予測装置。
(付記12)分岐命令の過去の分岐履歴を用いて分岐予測を行う分岐予測方法であって、
同時に完了した複数の分岐命令の分岐情報を受け付ける分岐情報受付工程と、
前記分岐情報受付工程により同時に受け付けられた複数の分岐情報とそれぞれの分岐命令の過去の分岐履歴とに基づいて前記複数の分岐命令の分岐予測を並行して行う並行分岐予測工程と
を含んだことを特徴とする分岐予測方法。
(付記13)前記並行分岐予測工程は、
分岐命令を識別する識別子を記憶装置から読み出す識別子読出工程と、
前記複数の分岐命令のうち前記識別子読出工程により記憶装置から読み出された識別子と識別子が同一である分岐命令に対して、該分岐命令の過去の分岐履歴および分岐情報に基づいて分岐予測を行う分岐方向予測工程と
を含んだ分岐予測要素工程を並行して複数実行することにより分岐予測を行うことを特徴とする付記12に記載の分岐予測方法。
(付記14)前記識別子読出工程により読み出される識別子は、分岐命令ごとに異なり、前記分岐方向予測工程は、前記分岐情報受付工程により同時に受け付けられた複数の分岐情報が識別子が同一である分岐命令についての分岐情報であるときは、該複数の分岐情報を順番に受け付けたものとして分岐予測を行うことを特徴とする付記13に記載の分岐予測方法。
(付記15)前記並行分岐予測工程により並行して行われた複数の分岐予測結果を、分岐命令のアドレスと該分岐命令の予測分岐先のアドレスとの対応表を用いて分岐命令の分岐先を予測するブランチヒストリに並行して登録する並行登録工程をさらに含んだことを特徴とする付記12に記載の分岐予測方法。
(付記16)前記並行分岐予測工程により並行して行われた複数の分岐予測結果のうち所定の数の分岐予測結果を選択する選択工程と、
前記選択工程により選択された所定の数の分岐予測結果を、分岐命令のアドレスと該分岐命令の予測分岐先のアドレスとの対応表を用いて分岐命令の分岐先を予測するブランチヒストリに登録する選択登録工程と
をさらに含んだことを特徴とする付記12に記載の分岐予測方法。
(付記17)前記選択工程は、分岐命令に関する所定の優先順位に基づいて分岐予測結果を選択することを特徴とする付記16に記載の分岐予測方法。
(付記18)前記選択工程が選択する分岐予測結果の優先順位は、再命令フェッチとなった分岐命令の分岐予測結果、他の分岐予測機構を更新する分岐予測結果、分岐方向変更と予測された分岐予測結果、前記ブランチヒストリに分岐命令毎に登録される状態を更新する分岐予測結果の順であることを特徴とする付記17に記載の分岐予測方法。
(付記19)前記他の分岐予測機構は、サブルーチンコールとリターンの無条件分岐命令の対に対して分岐予測を行うことを特徴とする付記18に記載の分岐予測方法。
(付記20)前記ブランチヒストリに分岐命令毎に登録される状態は、該ブランチヒストリが分岐すると予測して分岐しなかった場合にセットされるDizzyフラグおよび該ブランチヒストリが分岐すると予測して分岐したが分岐先が間違っていた場合にセットされるGiddyフラグであることを特徴とする付記18に記載の分岐予測方法。
以上のように、本発明にかかる分岐予測装置および分岐予測方法は、プロセッサの分岐予測精度の向上に有用であり、特に、スーパースカラプロセッサやアウトオブオーダ処理を採用したプロセッサなど複数の分岐命令が同時に完了するプロセッサの分岐予測精度の向上に適している。
本実施例に係るグローバルヒストリのグローバルヒストリエントリの構成を示す機能ブロック図である。 各グローバルヒストリエントリによる分岐予測をマージするマージ回路の一例を示す図である。 本実施例に係るグローバルヒストリの構成を示す機能ブロック図である。 フラグ制御回路の一例を示す図である。 セレクト回路の一例を示す図である。 本実施例に係るグローバルヒストリの処理手順を示すフローチャートである。 図6に示した分岐予測選択処理の処理手順を示すフローチャートである。 グローバルヒストリを用いる分岐予測装置の一例を示す図である。
符号の説明
10 命令フェッチアドレス生成部
20 命令フェッチ部
30 命令デコーダ
40 分岐リザベーションステーション
50 その他のリザベーションステーション
100,800 グローバルヒストリ
110 グローバルヒストリエントリi
111 タグ部
112,113 比較回路
114 分岐方向予測回路
115,116 AND回路
120 フラグ制御回路
130,140 マージ回路
150 セレクト回路
200 ブランチヒストリ

Claims (8)

  1. 分岐命令の過去の分岐履歴を用いて分岐予測を行う分岐予測装置であって、
    分岐命令のアドレスと該分岐命令の予測分岐先のアドレスとの対応表を用いて分岐命令の分岐先を予測するブランチヒストリと、
    同時に完了した複数の分岐命令の分岐情報を受け付ける分岐情報受付手段と、
    前記分岐情報受付手段により同時に受け付けられた複数の分岐情報とそれぞれの分岐命令の過去の分岐履歴とに基づいて前記複数の分岐命令が次に実行される場合の分岐予測を並行して行う並行分岐予測手段と
    前記並行分岐予測手段により並行して行われた複数の分岐予測結果のうち、分岐命令に関する所定の優先順位に基づいて、所定の数の分岐予測結果を選択する選択手段と、
    前記選択手段により選択された前記所定の数の分岐予測結果を前記ブランチヒストリに登録する選択登録手段と
    を備えたことを特徴とする分岐予測装置。
  2. 前記並行分岐予測手段は、
    分岐命令を識別する識別子を記憶する識別子記憶手段と、
    前記複数の分岐命令のうち前記識別子記憶手段に記憶される識別子と識別子が同一である分岐命令に対して、該分岐命令の過去の分岐履歴および分岐情報に基づいて分岐予測を行う分岐方向予測手段とを有する分岐予測要素手段を複数備え、
    該複数の分岐予測要素手段が並行して分岐予測を行うことを特徴とする請求項1に記載の分岐予測装置。
  3. 前記識別子記憶手段により記憶される識別子は、分岐命令ごとに異なり、前記分岐方向予測手段は、前記分岐情報受付手段により同時に受け付けられた複数の分岐情報が識別子が同一である分岐命令についての分岐情報であるときは、該複数の分岐情報を順番に受け付けたものとして分岐予測を行うことを特徴とする請求項2に記載の分岐予測装置。
  4. 前記選択登録手段は、前記選択手段により選択された前記所定の数の分岐予測結果を前記ブランチヒストリに並行して登録することを特徴とする請求項1に記載の分岐予測装置。
  5. 前記選択手段が選択する分岐予測結果の優先順位は、再命令フェッチとなった分岐命令の分岐予測結果、他の分岐予測機構を更新する分岐予測結果、分岐方向変更と予測された分岐予測結果、前記ブランチヒストリに分岐命令毎に登録される状態を更新する分岐予測結果の順であることを特徴とする請求項に記載の分岐予測装置。
  6. 前記他の分岐予測機構は、サブルーチンコールとリターンの無条件分岐命令の対に対して分岐予測を行うことを特徴とする請求項に記載の分岐予測装置。
  7. 前記ブランチヒストリに分岐命令毎に登録される状態は、該ブランチヒストリが分岐すると予測して分岐しなかった場合にセットされるDizzyフラグおよび該ブランチヒストリが分岐すると予測して分岐したが分岐先が間違っていた場合にセットされるGiddyフラグであることを特徴とする請求項に記載の分岐予測装置。
  8. 分岐命令の過去の分岐履歴を用いて分岐予測を行う分岐予測方法であって、
    分岐命令のアドレスと該分岐命令の予測分岐先のアドレスとの対応表を有するブランチヒストリにより分岐命令の分岐先を予測するステップと、
    同時に完了した複数の分岐命令の分岐情報を受け付けるステップと、
    前記受け付けた複数の分岐情報とそれぞれの分岐命令の過去の分岐履歴とに基づいて前記複数の分岐命令が次に実行される場合の分岐予測を並行して行うステップ
    前記並行して行った複数の分岐予測結果のうち、分岐命令に関する所定の優先順位に基づいて、所定の数の分岐予測結果を選択するステップと、
    前記選択した所定の数の分岐予測結果を前記ブランチヒストリに登録するステップと
    を含んだことを特徴とする分岐予測方法。
JP2003407424A 2003-12-05 2003-12-05 分岐予測装置および分岐予測方法 Expired - Fee Related JP4009248B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2003407424A JP4009248B2 (ja) 2003-12-05 2003-12-05 分岐予測装置および分岐予測方法
US10/841,433 US7472263B2 (en) 2003-12-05 2004-05-10 Method and apparatus for prediction handling multiple branches simultaneously

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003407424A JP4009248B2 (ja) 2003-12-05 2003-12-05 分岐予測装置および分岐予測方法

Publications (2)

Publication Number Publication Date
JP2005165950A JP2005165950A (ja) 2005-06-23
JP4009248B2 true JP4009248B2 (ja) 2007-11-14

Family

ID=34631751

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003407424A Expired - Fee Related JP4009248B2 (ja) 2003-12-05 2003-12-05 分岐予測装置および分岐予測方法

Country Status (2)

Country Link
US (1) US7472263B2 (ja)
JP (1) JP4009248B2 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7673122B1 (en) * 2005-09-29 2010-03-02 Sun Microsystems, Inc. Software hint to specify the preferred branch prediction to use for a branch instruction
US7617387B2 (en) * 2006-09-27 2009-11-10 Qualcomm Incorporated Methods and system for resolving simultaneous predicted branch instructions
US7565512B2 (en) * 2007-02-02 2009-07-21 Kabushiki Kaisha Toshiba Method, system and apparatus for generation of global branch history
US7805595B2 (en) * 2007-04-20 2010-09-28 Arm Limited Data processing apparatus and method for updating prediction data based on an operation's priority level
US7849299B2 (en) * 2008-05-05 2010-12-07 Applied Micro Circuits Corporation Microprocessor system for simultaneously accessing multiple branch history table entries using a single port
US8645714B2 (en) 2010-05-25 2014-02-04 Via Technologies, Inc. Branch target address cache for predicting instruction decryption keys in a microprocessor that fetches and decrypts encrypted instructions
US9892283B2 (en) 2010-05-25 2018-02-13 Via Technologies, Inc. Decryption of encrypted instructions using keys selected on basis of instruction fetch address
US9798898B2 (en) 2010-05-25 2017-10-24 Via Technologies, Inc. Microprocessor with secure execution mode and store key instructions
US9967092B2 (en) 2010-05-25 2018-05-08 Via Technologies, Inc. Key expansion logic using decryption key primitives
US9911008B2 (en) 2010-05-25 2018-03-06 Via Technologies, Inc. Microprocessor with on-the-fly switching of decryption keys
WO2012093489A1 (ja) 2011-01-07 2012-07-12 富士通株式会社 演算処理装置および分岐予測方法
CN102520914A (zh) * 2011-11-04 2012-06-27 杭州中天微系统有限公司 支持多路并行预测的分支预测装置
US9395984B2 (en) 2012-09-12 2016-07-19 Qualcomm Incorporated Swapping branch direction history(ies) in response to a branch prediction table swap instruction(s), and related systems and methods
US9348599B2 (en) 2013-01-15 2016-05-24 International Business Machines Corporation Confidence threshold-based opposing branch path execution for branch prediction
JP6273718B2 (ja) * 2013-08-13 2018-02-07 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US10613867B1 (en) * 2017-07-19 2020-04-07 Apple Inc. Suppressing pipeline redirection indications
US10853076B2 (en) * 2018-02-21 2020-12-01 Arm Limited Performing at least two branch predictions for non-contiguous instruction blocks at the same time using a prediction mapping

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5434985A (en) * 1992-08-11 1995-07-18 International Business Machines Corporation Simultaneous prediction of multiple branches for superscalar processing
TW345637B (en) 1994-02-04 1998-11-21 Motorola Inc Data processor with branch target address cache and method of operation a data processor has a BTAC storing a number of recently encountered fetch address-target address pairs.
US5758143A (en) * 1996-10-07 1998-05-26 International Business Machines Corporation Method for updating a branch history table in a processor which resolves multiple branches in a single cycle
JP3760041B2 (ja) 1996-12-09 2006-03-29 松下電器産業株式会社 分岐予測する情報処理装置
JP3661727B2 (ja) 1997-07-10 2005-06-22 株式会社ダイフク ピン脱着装置
US6151672A (en) 1998-02-23 2000-11-21 Hewlett-Packard Company Methods and apparatus for reducing interference in a branch history table of a microprocessor
US6108773A (en) * 1998-03-31 2000-08-22 Ip-First, Llc Apparatus and method for branch target address calculation during instruction decode
JP2000132391A (ja) 1998-10-23 2000-05-12 Nec Corp 分岐予測機構
JP3798998B2 (ja) 2002-06-28 2006-07-19 富士通株式会社 分岐予測装置および分岐予測方法

Also Published As

Publication number Publication date
JP2005165950A (ja) 2005-06-23
US20050125646A1 (en) 2005-06-09
US7472263B2 (en) 2008-12-30

Similar Documents

Publication Publication Date Title
JP4009248B2 (ja) 分岐予測装置および分岐予測方法
US7237098B2 (en) Apparatus and method for selectively overriding return stack prediction in response to detection of non-standard return sequence
JP5255367B2 (ja) 分岐先アドレス・キャッシュを備えたプロセッサおよびデータを処理する方法
TWI386850B (zh) 用於主動式分支目標位址快取記憶體管理之方法以及裝置
US6550004B1 (en) Hybrid branch predictor with improved selector table update mechanism
US8082428B2 (en) Methods and system for resolving simultaneous predicted branch instructions
KR101081674B1 (ko) 워킹 글로벌 히스토리 레지스터를 이용하기 위한 시스템 및 방법
JP5734945B2 (ja) スライドウィンドウブロックベースの分岐ターゲットアドレスキャッシュ
US20010020267A1 (en) Pipeline processing apparatus with improved efficiency of branch prediction, and method therefor
JP3565314B2 (ja) 分岐命令実行制御装置
JP2003005956A (ja) 分岐予測装置、プロセッサ、及び分岐予測方法
US9411599B2 (en) Operand fetching control as a function of branch confidence
JPH08249181A (ja) ブランチ予測式データ処理装置および動作方法
US7017030B2 (en) Prediction of instructions in a data processing apparatus
JPH08320788A (ja) パイプライン方式プロセッサ
KR20210058812A (ko) 소스 오퍼랜드 값들의 예측, 및 명령들의 최적화 처리의 장치 및 방법
JP2004038323A (ja) 分岐予測装置および分岐予測方法
US7603545B2 (en) Instruction control method and processor to process instructions by out-of-order processing using delay instructions for branching
JP2001236224A (ja) 分岐予測テーブル汚染の低減方法
US6871275B1 (en) Microprocessor having a branch predictor using speculative branch registers
US6898698B1 (en) Device predicting a branch of an instruction equivalent to a subroutine return and a method thereof
JP2001100994A (ja) モードを変更する分岐命令を制御する命令処理装置および方法
US6738897B1 (en) Incorporating local branch history when predicting multiple conditional branch outcomes
JP4728877B2 (ja) マイクロプロセッサおよびパイプライン制御方法
US6745322B1 (en) Apparatus and method for conditionally flushing a pipeline upon a failure of a test condition

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060525

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20061215

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070123

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070323

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070529

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070730

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: 20070828

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070831

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

Free format text: PAYMENT UNTIL: 20100907

Year of fee payment: 3

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: 20100907

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20110907

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20120907

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20120907

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20130907

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees