(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6850888
(24)【登録日】2021年3月10日
(45)【発行日】2021年3月31日
(54)【発明の名称】分岐予測のために分岐履歴を判別する方法及びデバイス
(51)【国際特許分類】
G06F 9/38 20060101AFI20210322BHJP
【FI】
G06F9/38 330B
【請求項の数】16
【全頁数】12
(21)【出願番号】特願2019-532917(P2019-532917)
(86)(22)【出願日】2016年9月9日
(65)【公表番号】特表2019-526872(P2019-526872A)
(43)【公表日】2019年9月19日
(86)【国際出願番号】US2016051040
(87)【国際公開番号】WO2018044332
(87)【国際公開日】20180308
【審査請求日】2019年8月15日
(31)【優先権主張番号】15/252,168
(32)【優先日】2016年8月30日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】591016172
【氏名又は名称】アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド
【氏名又は名称原語表記】ADVANCED MICRO DEVICES INCORPORATED
(74)【代理人】
【識別番号】100108833
【弁理士】
【氏名又は名称】早川 裕司
(74)【代理人】
【識別番号】100111615
【弁理士】
【氏名又は名称】佐野 良太
(74)【代理人】
【識別番号】100162156
【弁理士】
【氏名又は名称】村雨 圭介
(72)【発明者】
【氏名】スティーブン アール. ハヴリール
【審査官】
漆原 孝治
(56)【参考文献】
【文献】
米国特許出願公開第2009/0198984(US,A1)
【文献】
特表2012−502367(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/38
(57)【特許請求の範囲】
【請求項1】
分岐予測のためにグローバル分岐履歴を判別する方法であって、
分岐が行われたのを検出したことに応じて、現在のグローバル分岐履歴を記憶するレジスタを更新することを含み、
前記更新することは、
前記分岐を識別するビットシーケンスを含む分岐シグネチャの第1ビットを、現在のグローバル分岐履歴を記憶するレジスタにシフトすることと、
前記分岐シグネチャの第2ビットと、前記現在のグローバル分岐履歴のシフトされたビットと、に対してビット毎の排他的論理和(XOR)関数を実行して、前記現在のグローバル分岐履歴を更新することであって、前記第2ビットは前記第1ビットと異なる、ことと、を含む、
方法。
【請求項2】
前記現在のグローバル分岐履歴内の1つ以上の最古のビットを廃棄することをさらに含む、
請求項1の方法。
【請求項3】
前記シフトすることと、前記ビット毎のXOR関数を実行することとは、前記分岐シグネチャによって識別された分岐が行われた場合に実行される、
請求項1の方法。
【請求項4】
前記現在のグローバル分岐履歴は、前記分岐シグネチャによって識別された分岐が行われていない場合には変更されない、
請求項1の方法。
【請求項5】
分岐履歴情報及び分岐シグネチャ情報を圧縮することをさらに含み、
前記圧縮することは、
前記現在のグローバル分岐履歴内の1つ以上の最新のビットを、第1桁数だけシフトすることと、
前記現在のグローバル分岐履歴内の1つ以上の最古のビットを、前記第1桁数とは異なる第2桁数だけシフトすることと、
前記第2桁数だけシフトされたビットと、前記現在のグローバル分岐履歴内のより新たなビットと、の間でビット毎のXOR関数を実行することと、を含む、
請求項1の方法。
【請求項6】
前記現在のグローバル分岐履歴は、前記分岐シグネチャによって識別された分岐が行われていない場合には変更されない、
請求項5の方法。
【請求項7】
前記第2桁数は前記第1桁数未満である、
請求項5の方法。
【請求項8】
更新された現在のグローバル分岐履歴が、2レベル適応予測器の第1レベルに含まれる、
請求項1の方法。
【請求項9】
分岐予測のためにグローバル分岐履歴を判別及び更新するように構成された処理デバイスであって、
現在のグローバル分岐履歴を表すビットをシフトするように構成されたシフトロジックと、
前記現在のグローバル分岐履歴を記憶するように構成されたレジスタと、
行われた分岐を検出するように構成された判別回路と、
第1の複数の排他的論理和(XOR)ゲートと、を備え、
前記シフトロジック、前記レジスタ及び前記第1の複数のXORゲートは、行われた分岐を前記判別回路が検出したことに応じて、前記レジスタを更新するように構成されており、
前記レジスタを更新することは、
前記シフトロジックが、現在のグローバル分岐履歴を表すビットをシフトし、1つ以上のシフトされたビットを前記レジスタに記憶することと、
前記レジスタが、分岐シグネチャの第1ビットを受信して記憶することであって、前記分岐シグネチャは、分岐履歴が更新されている特定の分岐を識別するビットを含む、ことと、
前記第1の複数のXORゲートが、前記分岐シグネチャの第2ビットと、前記現在のグローバル分岐履歴のシフトされたビットと、に対してビット毎のXOR関数を実行することであって、前記第2ビットは前記第1ビットと異なる、ことと、
前記ビット毎のXOR関数の結果を前記レジスタに記憶して、前記現在のグローバル分岐履歴を更新することと、を含む、
処理デバイス。
【請求項10】
前記判別回路は、前記分岐シグネチャによって識別された分岐が行われていると判別した場合に、分岐予測のためにグローバル分岐履歴を判別及び更新するようにさらに構成されている、
請求項9の処理デバイス。
【請求項11】
前記判別回路は、前記分岐シグネチャによって識別された分岐が行われていないと判別した場合に、前記現在のグローバル分岐履歴を変更しないようにさらに構成されている、
請求項9の処理デバイス。
【請求項12】
分岐履歴情報及び分岐シグネチャ情報の圧縮を実行するようにさらに構成されており、
前記シフトロジックは、前記現在のグローバル分岐履歴内の1つ以上の最新のビットを第1桁数だけシフトするように構成されており、
前記シフトロジックは、前記現在のグローバル分岐履歴内の1つ以上の最古のビットを、前記第1桁数とは異なる第2桁数だけシフトするように構成されており、
前記処理デバイスは、前記第2桁数だけシフトされたビットと、前記現在のグローバル分岐履歴内のより新たなビットと、の間でビット毎のXOR関数を実行するように構成された第2の複数のXORゲートをさらに備える、
請求項9の処理デバイス。
【請求項13】
前記判別回路は、前記分岐シグネチャによって識別された分岐が行われていると判別した場合に、分岐履歴情報及び分岐シグネチャ情報の圧縮を実行するようにさらに構成されている、
請求項12の処理デバイス。
【請求項14】
前記判別回路は、前記分岐シグネチャによって識別された分岐が行われていないと判別した場合に、前記現在のグローバル分岐履歴を変更しないようにさらに構成されている、
請求項12の処理デバイス。
【請求項15】
前記第2桁数は前記第1桁数未満である、
請求項12の処理デバイス。
【請求項16】
更新された現在のグローバル分岐履歴を第1レベルで受信するように構成された2レベル適応予測装置をさらに備える、
請求項12の処理デバイス。
【発明の詳細な説明】
【背景技術】
【0001】
コンピュータアーキテクチャにおいて、分岐予測器は、例えばプログラム又はコード内のif−then−else構造等の分岐が確実に認識される前に何れの方向に進むかを推測しようとするデジタル回路である。分岐予測器は、分岐予測の方法を実行する。分岐予測は、命令パイプラインのフローを改善し、多くのマイクロプロセッサアーキテクチャにおいて高い実効性能を達成する上で役割を果たす。
【0002】
分岐予測は、分岐履歴、つまり所定の分岐がどの程度頻繁に行われたのか及び行われなかったのかのレコードに基づいている。グローバル分岐履歴では、複数の分岐の各々の分岐履歴がビットのセットに記憶される。
【0003】
図2は、グローバル分岐履歴を更新するために使用される従来のタイプの処理装置及び方法を示す図である。回路は、分岐が見つかったかどうかを判別する(ステップ225)。分岐が見つからなかった場合、現在のグローバル履歴は変更されない(ステップ220)。分岐が見つかると、現在のグローバル分岐履歴が1ビットシフトされ(ステップ215、左シフトとして示される)、最古の履歴ビット(ビット3)が失われる。現在のグローバル分岐履歴の右端のビットは、分岐が行われたかどうか(ステップ230)を示すビット(例えば、分岐しない場合は0、分岐する場合は1)によって置換される。このようにして、現在のグローバル分岐履歴が更新される。現在の分岐履歴は、将来分岐が行われるかどうかを予測するために、分岐予測器で使用される。
【0004】
添付の図面と共に例として与えられる以下の説明から、より詳細な理解が得られるであろう。
【図面の簡単な説明】
【0005】
【
図1】1つ以上の開示された態様が実施され得る例示的なデバイスのブロック図である。
【
図2】グローバル分岐履歴を更新するように構成された処理デバイスを示す図である。
【
図3】グローバル分岐履歴を更新するように構成された別の処理デバイスを示す図である。
【
図4】グローバル分岐履歴を更新するように構成された別の処理デバイスを示す図である。
【
図5】グローバル分岐履歴を判別及び更新する方法を示す図である。
【
図6】グローバル分岐履歴を判別及び更新する別の方法を示す図である。
【発明を実施するための形態】
【0006】
例えば上述したような従来のグローバル分岐履歴の方法及びデバイスとは対照的に、開示された方法及びデバイスは、タイミングを改善し、新たな分岐を見つけたときの以前の分岐予測器トレーニングの損失を回避する。また、開示された方法及びデバイスは、異なるコード位置で同一の分岐する/分岐しない(T/NT)パターンを区別することができるという利点も提供する。実行されているコンピュータコードが、見つけられたNT分岐を含む場合に、開示された方法及びデバイスは、従来のグローバル履歴更新の方法及びデバイスよりも長いシーケンスを追跡することができる。
【0007】
方法は、分岐シグネチャの第1ビットを現在のグローバル分岐履歴にシフトすることと、分岐シグネチャの第2ビットと、現在のグローバル分岐履歴のシフトされたビットと、に対してビット毎の排他的論理和(XOR)関数を実行することと、を含む。第2ビットは、第1ビットとは異なる。分岐シグネチャは、分岐履歴が更新されている特定の分岐を識別するビットを含む。シフトすることは、現在のグローバル分岐履歴内の最古のビットのうち1つ以上を廃棄することを含む。シフトすることと、ビット毎のXOR関数を実行することとは、分岐シグネチャによって識別された分岐が行われた場合に実行される。現在のグローバル分岐履歴は、分岐シグネチャによって識別された分岐が行われていない場合には変更されない。
【0008】
一実施形態では、方法は、現在のグローバル分岐履歴内の1つ以上の最新のビットを第1桁数だけシフトすることと、現在のグローバル分岐履歴内の1つ以上の最古のビットを、第1桁数とは異なる第2桁数だけシフトすることと、第2桁数だけシフトされたビットと、現在のグローバル分岐履歴内の最新のビットと、の間でビット毎のXOR関数を実行することと、を含む。方法のこれらの部分は、分岐シグネチャによって識別された分岐が行われる場合に実行され、分岐シグネチャによって識別された分岐が行われない場合には現在のグローバル分岐履歴は変化しない。例えば、第2桁数は、第1桁数未満である(例えば、第1桁数は3であり、第2桁数は1である)。
【0009】
一実施形態では、方法は、更新された現在のグローバル分岐履歴が2レベル適応予測器の第1レベルに含まれるように実装される。
【0010】
一実施形態では、分岐予測のためにグローバル分岐履歴を判別及び更新するように構成された処理デバイスは、現在のグローバル分岐履歴を表すビットをシフトするように構成されたシフトロジックと、現在のグローバル分岐履歴を記憶するように構成されたレジスタと、分岐が行われるかどうかを判別するように構成された判別回路と、第1の複数の排他的論理和(XOR)ゲートと、を備える。
【0011】
一実施形態では、グローバル分岐履歴を判別及び更新することは、シフトロジックが、現在のグローバル分岐履歴を表すビットをシフトし、1つ以上のシフトされたビットをレジスタに記憶することと、レジスタが、分岐シグネチャの第1ビットを受信して記憶することと、第1の複数のXORゲートが、分岐シグネチャの第2ビットと、現在のグローバル分岐履歴のシフトされたビットと、に対してビット毎のXOR関数を実行し、ビット毎のXOR関数の結果をレジスタに記憶することと、を含む。
【0012】
一実施形態では、処理デバイスは、判別回路が、分岐シグネチャによって識別された分岐が行われていると判別した場合に、グローバル分岐履歴を判別及び更新するように構成されている。一実施形態では、処理デバイスは、判別回路が、分岐シグネチャによって識別された分岐が行われていないと判別した場合に、現在のグローバル分岐履歴を変更しないように構成されている。
【0013】
一実施形態では、処理デバイスは、分岐履歴情報及び分岐シグネチャ情報の圧縮を実行するように構成されている。この実施形態では、処理デバイスは、現在のグローバル分岐履歴内の1つ以上の最新のビットを第1桁数だけシフトし、現在のグローバル分岐履歴内の1つ以上の最古のビットを、第1桁数とは異なる第2桁数だけシフトするように構成されている。処理デバイスは、第2桁数だけシフトされたビットと、現在のグローバル分岐履歴内のより新たなビットと、の間でビット毎のXOR関数を実行するように構成された第2の複数のXORゲートをさらに備える。また、この実施形態の処理デバイスは、判別回路が、分岐シグネチャによって識別された分岐が行われていると判別した場合に、分岐履歴情報及び分岐シグネチャ情報の圧縮を実行するように構成されている。処理デバイスは、判別回路が、分岐シグネチャによって識別された分岐が行われていないと判別した場合に、現在のグローバル分岐履歴を変更しない。
【0014】
圧縮を実行するように構成された処理デバイスの特定の実施形態では、第2桁数は第1桁数未満であってもよい。第1桁数は3であってもよく、第2桁数は1であってもよい。別の特定の実施形態は、複数レベルの圧縮を含んでもよい。一例として、現在のグローバル分岐履歴内のより新たなビットは3桁分シフトされてもよく、古いビットは2桁分シフトされてもよく、より古いビットは1桁分シフトされてもよい。効果的な圧縮のために、シフト量は、ビットの経過時間(historical age)が長くなるにつれて減少する傾向がある。
【0015】
処理デバイスは、更新された現在のグローバル分岐履歴を第1レベルで受信するように構成された2レベル適応予測装置を含む。
【0016】
図1は、1つ以上の開示された実施形態が実施される例示的なデバイス100のブロック図である。例示的なデバイス100は、コンピュータ、ゲームデバイス、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話又はタブレットコンピュータを含む。デバイス100は、プロセッサ102と、メモリ104と、ストレージ106と、1つ以上の入力デバイス108と、1つ以上の出力デバイス110と、を含む。また、デバイス100は、入力ドライバ112及び出力ドライバ114をオプションで含むことができる。デバイス100は、
図1に示されていない追加のコンポーネントを含んでもよいことを理解されたい。
【0017】
プロセッサ102は、中央処理装置(CPU)、グラフィックス処理装置(GPU)、同じダイ上に配置されたCPU及びGPU、又は、1つ以上のプロセッサコアを含み、各プロセッサコアはCPU又はGPUであってもよい。メモリ104は、プロセッサ102と同じダイ上に配置されてもよいし、プロセッサ102とは別に配置されてもよい。メモリ104は、例えば、ランダムアクセスメモリ(RAM)、ダイナミックRAM若しくはキャッシュ等の揮発性又は不揮発性メモリを含む。
【0018】
ストレージ106は、例えば、ハードディスクドライブ、ソリッドステートドライブ、光ディスク若しくはフラッシュドライブ等の固定又は取り外し可能なストレージデバイスを含む。入力デバイス108は、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、バイオメトリックスキャナ又はネットワーク接続(例えば、無線IEEE802信号を送信及び/若しくは受信するための無線ローカルエリアネットワークカード)を含む。出力デバイス110は、ディスプレイ、スピーカ、プリンタ、触覚フィードバック装置、1つ以上のライト、アンテナ又はネットワーク接続(例えば、無線IEEE802信号を送信及び/若しくは受信するための無線ローカルエリアネットワークカード)を含む。
【0019】
入力ドライバ112は、プロセッサ102及び入力デバイス108と通信し、プロセッサ102が入力デバイス108から入力を受信することを可能にする。出力ドライバ114は、プロセッサ102及び出力デバイス110と通信し、プロセッサ102が出力デバイス110に出力を送信することを可能にする。入力ドライバ112及び出力ドライバ114は、オプションのコンポーネントであり、デバイス100は、入力ドライバ112及び出力ドライバ114が存在しない場合であっても同様に動作することに留意されたい。
【0020】
図3は、分岐予測のためにグローバル分岐履歴を判別及び更新するように構成された電子処理デバイス300の例示的な実施形態を示す図である。電子処理デバイス300の詳細(例えば、正確なビット数等)は、限定的であるとみなされるべきではない。
【0021】
現在のグローバル分岐履歴は、ビットシーケンスとしてレジスタ310に記憶される。
図3において、現在のグローバル分岐履歴は、8ビットを有するものとして示されているが、この数は限定的であるとみなされるべきではない。分岐が見つかると、分岐が行われたかどうかが判別回路325によって判別される。分岐が行われていない場合、現在のグローバル履歴は変更されず(320)、レジスタ310に再記憶される。分岐が行われた場合には、現在のグローバル分岐履歴が以下の例のように更新されるが、これは限定的とみなされるべきではない。
【0022】
更新は、シフトロジック315が、現在のグローバル分岐履歴を表すビットをシフトし、シフトしたビットをレジスタ310に記憶することから開始する。
図3に示すように、例えば、ビット0〜5は、2桁分左にシフトされる。このプロセスでは、この分岐履歴の古いビット6〜7が廃棄される。1つ以上のシフトされたビット(例えば、ビット2〜5等)は、レジスタ310に直接記憶される。レジスタ310は、分岐履歴が更新されている特定の分岐を識別する分岐シグネチャの第1ビット(S[1]及びS[0])を受信して記憶する。非限定的な例として、分岐シグネチャは、線形アドレスの最下位ビットと同じくらいシンプルであってもよいし、(第1線形アドレス部分)XOR(第2線形アドレス部分)XOR(分岐タイプを表すビット)XOR(分岐の他の属性を表すビット)と同じくらい複雑であってもよい。例えば、4ビットの分岐シグネチャが必要な場合、線形アドレス(LINAD)の12の最下位ビットは、以下のように分岐タイプを表す4ビットと排他的論理和をとることができる。
LINAD[11:8]XOR
LINAD[7:4]XOR
LINAD[3:0]XOR
TYPE[3:0]
【0023】
現在のグローバル分岐履歴の更新は、複数のXORゲート330が、分岐シグネチャの第2ビット(例えば、S[3]及びS[2])と、現在のグローバル分岐履歴のシフトされたビット(例えば、ビット0及び1等)と、のビット毎のXOR関数を実行することで続行する。ビット毎のXOR関数の実行から生じたビットがレジスタ310に記憶され、これにより、レジスタ310に記憶されている現在のグローバル分岐履歴を更新する。
【0024】
レジスタ310に記憶されたグローバル分岐履歴は、現在の分岐履歴を使用して分岐が行われる可能性を予測する電子回路である分岐予測器335に渡される。一実施形態では、分岐予測器335は、更新された現在のグローバル分岐履歴を第1レベルで受信するように構成された2レベル適応予測装置である。代替の実施形態では、他のタイプの分岐予測器を含むことができる。
【0025】
図4は、分岐予測のためにグローバル分岐履歴を判別及び更新するように構成された電子処理デバイス400の代替の例示的な実施形態を示す図である。電子処理デバイス400の詳細(例えば、正確なビット数等)は、限定的とみなされるべきではない。
図4の実施形態は、可変シフト関数及び追加のXOR関数を介した分岐履歴情報及び分岐シグネチャ情報の圧縮を含む。
【0026】
図3の例と同様に、現在のグローバル分岐履歴は、ビットシーケンスとしてレジスタ410に記憶される。
図4において、現在のグローバル分岐履歴は、19ビットを有するものとして示されているが、この数は限定的とみなされるべきではない。
【0027】
分岐が見つかると、分岐が行われたかどうかが判別回路425によって判別される。分岐が行われていない場合、現在のグローバル履歴は変更されず(420)、レジスタ410に再記憶される。分岐が行われている場合、現在のグローバル分岐履歴が以下の例のように更新されるが、これは限定的とみなされるべきではない。
【0028】
図4に示す実施形態では、更新は、シフトロジック415が、現在のグローバル分岐履歴を表すビットをシフトし、シフトしたビットをレジスタ410に記憶することから開始する。しかしながら、
図3とは対照的に、現在のグローバル分岐履歴の1つ以上の最新のビットは第1桁数だけシフトされ、1つ以上の最古のビットは第2桁数だけシフトされ、第1桁数及び第2桁数は等しくない。特に、第2桁数は、第1桁数未満である。
図4に示すように、ビット0〜7は、3桁分左にシフトされる。一方、ビット10〜16は、1桁分左にシフトされる。1つ以上のシフトされたビットは、レジスタ410に直接記憶される。
図4の例では、このようなビットは3〜7、15、16、17である。このプロセスでは、この分岐履歴の最古のビット18が廃棄される。
【0029】
図3と同様に、レジスタ410は、分岐シグネチャの第1ビット(S[2]、S[1]及びS[0])を受信して記憶する。
図3と同様に、現在のグローバル分岐履歴の更新は、第1の複数のXORゲート430が、分岐シグネチャの第2ビット(
図4の例では、S[5]、S[4]、S[3])と、現在のグローバル分岐履歴のシフトされたビット(
図4の例では、ビット0、1、2)と、のビット毎のXOR関数を実行することで続行する。ビット毎のXOR関数の実行から生じたビットが、更新された現在の分岐履歴の一部としてレジスタ410に記憶される。
【0030】
図3とは対照的に、
図4のデバイスは、第2の複数のXORゲート433を使用して圧縮を実行する。XORゲート433は、第2桁数だけシフトされた現在のグローバル分岐履歴ビットと、現在のグローバル分岐履歴のより新たなビットと、の間でビット毎のXOR関数を実行するように構成されている。ビット毎のXOR関数の実行から生じたビットは、現在のグローバル分岐履歴の更新を完了するためにレジスタ410に記憶される。
図4の特定の例では、以下のXOR関数(つまり、10XOR5、11XOR6、12XOR7、13XOR8及び14XOR9)が実行される。
【0031】
一実施形態では、レジスタ410に記憶されたグローバル分岐履歴は、現在のグローバル分岐履歴を使用して分岐が行われる可能性を予測する分岐予測器435に渡される。一実施形態では、分岐予測器435は、更新された現在のグローバル分岐履歴を第1レベルで受信するように構成された2レベル適応予測器装置である。代替の実施形態では、他のタイプの分岐予測器を含むことができる。
【0032】
図5は、分岐予測のためにグローバル分岐履歴を判別する方法500を示す図である。図示したステップの正確な順序は、必ずしも限定的なものとして解釈されるべきではない。コードの実行中に、分岐に遭遇する(ステップ510)。この分岐が行われたかどうかが判別される(ステップ515)。分岐が行われていない場合、現在のグローバル分岐履歴が変更されず(ステップ520)、方法は、次の分岐に遭遇する(ステップ510)のを待機するために戻る。
【0033】
分岐が行われると、現在のグローバル分岐履歴が更新される。更新は、分岐シグネチャの第1ビットを現在のグローバル分岐履歴にシフトすることから開始する(ステップ525)。シフトすることは、現在のグローバル分岐履歴内の1つ以上の最古のビットを廃棄することを含む。分岐シグネチャの第2ビットと、現在のグローバル分岐履歴のシフトされたビットと、に対してビット毎のXOR関数が実行される(ステップ530)。現在のグローバル分岐履歴は、上述したように、ここで更新され、レジスタに記憶される。方法は、次の分岐に遭遇する(ステップ510)のを待機するために戻る。
【0034】
図6は、分岐予測のためにグローバル分岐履歴を判別する方法の別の実施形態600を示す図である。図示したステップの正確な順序は、必ずしも限定的なものとして解釈されるべきではない。
図5に示す方法に加えて、
図6に示す実施形態は、可変シフト関数及び追加のXOR関数を介した分岐履歴情報及び分岐シグネチャ情報の圧縮を含む。
図5と同様に、分岐に遭遇し(ステップ610)、この分岐が行われたどうかが判別される(ステップ615)。分岐が行われていない場合、
図5と同様に、現在のグローバル分岐履歴が変更されず(ステップ620)、方法は、次の分岐に遭遇する(ステップ610)のを待機するために戻る。
【0035】
分岐が行われると、現在のグローバル分岐履歴内の1つ以上の最新のビットが第1桁数だけシフトされる(ステップ625)。分岐シグネチャの第1ビットは、現在のグローバル分岐履歴にシフトされる(ステップ627)。XOR関数は、分岐シグネチャの第2ビットと、第1桁数だけシフトされた現在のグローバル分岐履歴のビットと、に対して実行される(ステップ630)。
【0036】
現在のグローバル分岐履歴内の最古のビットのうち1つ以上のビットは、第1桁数とは異なる第2桁数だけシフトされる(ステップ635)。特定の実施形態では、第2桁数は第1桁数未満である。一例として、第1桁数は3であり、第2桁数は1である。2回のシフトの結果として、現在のグローバル分岐履歴内の1つ以上の最古のビットが廃棄される。
【0037】
第2桁数だけシフトされた現在のグローバル分岐履歴のビットと、現在のグローバル分岐履歴内のより新しいビットと、の間でビット毎のXOR関数が実行される(ステップ640)。現在のグローバル分岐履歴の1つ以上のシフトされたビットは、追加の処理無しに、更新された分岐履歴のビットになる。
【0038】
現在のグローバル分岐履歴がここで更新される。一実施形態では、更新されたグローバル分岐履歴が、上述したように、レジスタに記憶される。方法は、次の分岐に遭遇する(ステップ610)のを待機するために戻る。
【0039】
本明細書における開示に基づいて多くの変形が可能であることを理解されたい。上記では、特徴及び要素が特定の組み合わせで説明されているが、各特徴又は要素は、他の特徴及び要素無しに単独で使用されてもよいし、他の特徴及び要素を伴って又は伴わずに様々な組み合わせで使用されてもよい。
【0040】
提供された方法は、汎用コンピュータ、プロセッサ又はプロセッサコアで実施されてもよい。適切なプロセッサには、例として、汎用プロセッサ、専用プロセッサ、従来のプロセッサ、デジタル信号プロセッサ(DSP)、複数のマイクロプロセッサ、DSPコアに関連する1つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)回路、他のタイプの集積回路(IC)、及び/又は、ステートマシンが含まれる。このようなプロセッサは、処理されたハードウェア記述言語(HDL)命令(このような命令は、コンピュータ可読媒体に記憶することが可能である)の結果及びネットリストを含む他の中間データを用いて製造プロセスを構成することによって製造することができる。このようなプロセスの結果は、実施形態の態様を実施するプロセッサを製造するために半導体製造プロセスにおいて使用されるマスクワークであってもよい。
【0041】
本明細書で提供された方法又はフローチャートは、汎用コンピュータ又はプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に組み込まれたコンピュータプログラム、ソフトウェア又はファームウェアで実施されてもよい。非一時的なコンピュータ可読記憶媒体の例には、例えば読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク、リムーバブルディスク等の磁気媒体、光磁気記憶媒体、例えばCD−ROMディスク及びデジタル多用途ディスク(DVD)等の光学媒体が含まれる。