(57)【要約】分岐予測のためにグローバル分岐履歴を判別することを目的とした方法及び処理デバイスが開示される。方法は、分岐シグネチャの第１ビットを現在のグローバル分岐履歴にシフトすることと、分岐シグネチャの第２ビットと、現在のグローバル分岐履歴のシフトされたビットと、に対してビット毎の排他的論理和（ＸＯＲ）関数を実行することと、を含む。このようにして、現在のグローバル分岐履歴が更新される。処理デバイスは、現在のグローバル分岐履歴を表すビットを記憶し、シフトするように構成されたシフトロジックと、現在のグローバル分岐履歴を記憶するように構成されたレジスタと、分岐が行われたかどうかを判別するように構成された判別回路と、ＸＯＲゲートと、を用いて方法を実施する。【選択図】図４
2019526872.tif 000002
【特許請求の範囲】
【請求項１】
分岐予測のためにグローバル分岐履歴を判別する方法であって、
分岐シグネチャの第１ビットを現在のグローバル分岐履歴にシフトすることと、
前記分岐シグネチャの第２ビットと、前記現在のグローバル分岐履歴のシフトされたビットと、に対してビット毎の排他的論理和（ＸＯＲ）関数を実行して、前記現在のグローバル分岐履歴を更新することであって、前記第２ビットは前記第１ビットと異なる、ことと、を含む、
方法。
【請求項２】
前記分岐シグネチャは、分岐履歴が更新されている特定の分岐を識別するビットを含む、
請求項１の方法。
【請求項３】
前記現在のグローバル分岐履歴内の１つ以上の最古のビットを廃棄することをさらに含む、
請求項１の方法。
【請求項４】
前記シフトすることと、前記ビット毎のＸＯＲ関数を実行することとは、前記分岐シグネチャによって識別された分岐が行われた場合に実行される、
請求項１の方法。
【請求項５】
前記現在のグローバル分岐履歴は、前記分岐シグネチャによって識別された分岐が行われていない場合には変更されない、
請求項１の方法。
【請求項６】
分岐履歴情報及び分岐シグネチャ情報を圧縮することをさらに含み、
前記圧縮することは、
前記現在のグローバル分岐履歴内の１つ以上の最新のビットを、第１桁数だけシフトすることと、
前記現在のグローバル分岐履歴内の１つ以上の最古のビットを、前記第１桁数とは異なる第２桁数だけシフトすることと、
前記第２桁数だけシフトされたビットと、前記現在のグローバル分岐履歴内のより新たなビットと、の間でビット毎のＸＯＲ関数を実行することと、を含む、
請求項１の方法。
【請求項７】
前記分岐シグネチャによって識別された分岐が行われた場合に実行される、
請求項６の方法。
【請求項８】
前記現在のグローバル分岐履歴は、前記分岐シグネチャによって識別された分岐が行われていない場合には変更されない、
請求項６の方法。
【請求項９】
前記第２桁数は前記第１桁数未満である、
請求項６の方法。
【請求項１０】
更新された現在のグローバル分岐履歴が、２レベル適応予測器の第１レベルに含まれる、
請求項１の方法。
【請求項１１】
分岐予測のためにグローバル分岐履歴を判別及び更新するように構成された処理デバイスであって、
現在のグローバル分岐履歴を表すビットをシフトするように構成されたシフトロジックと、
前記現在のグローバル分岐履歴を記憶するように構成されたレジスタと、
分岐が行われるかどうかを判別するように構成された判別回路と、
第１の複数の排他的論理和（ＸＯＲ）ゲートと、を備え、
グローバル分岐履歴を判別及び更新することは、
前記シフトロジックが、現在のグローバル分岐履歴を表すビットをシフトし、１つ以上のシフトされたビットを前記レジスタに記憶することと、
前記レジスタが、分岐シグネチャの第１ビットを受信して記憶することであって、前記分岐シグネチャは、分岐履歴が更新されている特定の分岐を識別するビットを含む、ことと、
前記第１の複数のＸＯＲゲートが、前記分岐シグネチャの第２ビットと、前記現在のグローバル分岐履歴のシフトされたビットと、に対してビット毎のＸＯＲ関数を実行することであって、前記第２ビットは前記第１ビットと異なる、ことと、
前記ビット毎のＸＯＲ関数の結果を前記レジスタに記憶して、前記現在のグローバル分岐履歴を更新することと、を含む、
処理デバイス。
【請求項１２】
前記判別回路は、前記分岐シグネチャによって識別された分岐が行われていると判別した場合に、分岐予測のためにグローバル分岐履歴を判別及び更新するようにさらに構成されている、
請求項１１の処理デバイス。
【請求項１３】
前記判別回路は、前記分岐シグネチャによって識別された分岐が行われていないと判別した場合に、前記現在のグローバル分岐履歴を変更しないようにさらに構成されている、
請求項１１の処理デバイス。
【請求項１４】
分岐履歴情報及び分岐シグネチャ情報の圧縮を実行するようにさらに構成されており、
前記シフトロジックは、前記現在のグローバル分岐履歴内の１つ以上の最新のビットを第１桁数だけシフトするように構成されており、
前記シフトロジックは、前記現在のグローバル分岐履歴内の１つ以上の最古のビットを、前記第１桁数とは異なる第２桁数だけシフトするように構成されており、
前記処理デバイスは、前記第２桁数だけシフトされたビットと、前記現在のグローバル分岐履歴内のより新たなビットと、の間でビット毎のＸＯＲ関数を実行するように構成された第２の複数のＸＯＲゲートをさらに備える、
請求項１１の処理デバイス。
【請求項１５】
前記判別回路は、前記分岐シグネチャによって識別された分岐が行われていると判別した場合に、分岐履歴情報及び分岐シグネチャ情報の圧縮を実行するようにさらに構成されている、
請求項１４の処理デバイス。
【請求項１６】
前記判別回路は、前記分岐シグネチャによって識別された分岐が行われていないと判別した場合に、前記現在のグローバル分岐履歴を変更しないようにさらに構成されている、
請求項１４の処理デバイス。
【請求項１７】
前記第２桁数は前記第１桁数未満である、
請求項１４の処理デバイス。
【請求項１８】
更新された現在のグローバル分岐履歴を第１レベルで受信するように構成された２レベル適応予測装置をさらに備える、
請求項１４の処理デバイス。
【発明の詳細な説明】
【背景技術】
【０００１】
コンピュータアーキテクチャにおいて、分岐予測器は、例えばプログラム又はコード内のｉｆ−ｔｈｅｎ−ｅｌｓｅ構造等の分岐が確実に認識される前に何れの方向に進むかを推測しようとするデジタル回路である。分岐予測器は、分岐予測の方法を実行する。分岐予測は、命令パイプラインのフローを改善し、多くのマイクロプロセッサアーキテクチャにおいて高い実効性能を達成する上で役割を果たす。
【０００２】
分岐予測は、分岐履歴、つまり所定の分岐がどの程度頻繁に行われたのか及び行われなかったのかのレコードに基づいている。グローバル分岐履歴では、複数の分岐の各々の分岐履歴がビットのセットに記憶される。
【０００３】
図２は、グローバル分岐履歴を更新するために使用される従来のタイプの処理装置及び方法を示す図である。回路は、分岐が見つかったかどうかを判別する（ステップ２２５）。分岐が見つからなかった場合、現在のグローバル履歴は変更されない（ステップ２２０）。分岐が見つかると、現在のグローバル分岐履歴が１ビットシフトされ（ステップ２１５、左シフトとして示される）、最古の履歴ビット（ビット３）が失われる。現在のグローバル分岐履歴の右端のビットは、分岐が行われたかどうか（ステップ２３０）を示すビット（例えば、分岐しない場合は０、分岐する場合は１）によって置換される。このようにして、現在のグローバル分岐履歴が更新される。現在の分岐履歴は、将来分岐が行われるかどうかを予測するために、分岐予測器で使用される。
【０００４】
添付の図面と共に例として与えられる以下の説明から、より詳細な理解が得られるであろう。
【図面の簡単な説明】
【０００５】
【図１】１つ以上の開示された態様が実施され得る例示的なデバイスのブロック図である。
【図２】グローバル分岐履歴を更新するように構成された処理デバイスを示す図である。
【図３】グローバル分岐履歴を更新するように構成された別の処理デバイスを示す図である。
【図４】グローバル分岐履歴を更新するように構成された別の処理デバイスを示す図である。
【図５】グローバル分岐履歴を判別及び更新する方法を示す図である。
【図６】グローバル分岐履歴を判別及び更新する別の方法を示す図である。
【発明を実施するための形態】
【０００６】
例えば上述したような従来のグローバル分岐履歴の方法及びデバイスとは対照的に、開示された方法及びデバイスは、タイミングを改善し、新たな分岐を見つけたときの以前の分岐予測器トレーニングの損失を回避する。また、開示された方法及びデバイスは、異なるコード位置で同一の分岐する／分岐しない（Ｔ／ＮＴ）パターンを区別することができるという利点も提供する。実行されているコンピュータコードが、見つけられたＮＴ分岐を含む場合に、開示された方法及びデバイスは、従来のグローバル履歴更新の方法及びデバイスよりも長いシーケンスを追跡することができる。
【０００７】
方法は、分岐シグネチャの第１ビットを現在のグローバル分岐履歴にシフトすることと、分岐シグネチャの第２ビットと、現在のグローバル分岐履歴のシフトされたビットと、に対してビット毎の排他的論理和（ＸＯＲ）関数を実行することと、を含む。第２ビットは、第１ビットとは異なる。分岐シグネチャは、分岐履歴が更新されている特定の分岐を識別するビットを含む。シフトすることは、現在のグローバル分岐履歴内の最古のビットのうち１つ以上を廃棄することを含む。シフトすることと、ビット毎のＸＯＲ関数を実行することとは、分岐シグネチャによって識別された分岐が行われた場合に実行される。現在のグローバル分岐履歴は、分岐シグネチャによって識別された分岐が行われていない場合には変更されない。
【０００８】
一実施形態では、方法は、現在のグローバル分岐履歴内の１つ以上の最新のビットを第１桁数だけシフトすることと、現在のグローバル分岐履歴内の１つ以上の最古のビットを、第１桁数とは異なる第２桁数だけシフトすることと、第２桁数だけシフトされたビットと、現在のグローバル分岐履歴内の最新のビットと、の間でビット毎のＸＯＲ関数を実行することと、を含む。方法のこれらの部分は、分岐シグネチャによって識別された分岐が行われる場合に実行され、分岐シグネチャによって識別された分岐が行われない場合には現在のグローバル分岐履歴は変化しない。例えば、第２桁数は、第１桁数未満である（例えば、第１桁数は３であり、第２桁数は１である）。
【０００９】
一実施形態では、方法は、更新された現在のグローバル分岐履歴が２レベル適応予測器の第１レベルに含まれるように実装される。
【００１０】
一実施形態では、分岐予測のためにグローバル分岐履歴を判別及び更新するように構成された処理デバイスは、現在のグローバル分岐履歴を表すビットをシフトするように構成されたシフトロジックと、現在のグローバル分岐履歴を記憶するように構成されたレジスタと、分岐が行われるかどうかを判別するように構成された判別回路と、第１の複数の排他的論理和（ＸＯＲ）ゲートと、を備える。
【００１１】
一実施形態では、グローバル分岐履歴を判別及び更新することは、シフトロジックが、現在のグローバル分岐履歴を表すビットをシフトし、１つ以上のシフトされたビットをレジスタに記憶することと、レジスタが、分岐シグネチャの第１ビットを受信して記憶することと、第１の複数のＸＯＲゲートが、分岐シグネチャの第２ビットと、現在のグローバル分岐履歴のシフトされたビットと、に対してビット毎のＸＯＲ関数を実行し、ビット毎のＸＯＲ関数の結果をレジスタに記憶することと、を含む。
【００１２】
一実施形態では、処理デバイスは、判別回路が、分岐シグネチャによって識別された分岐が行われていると判別した場合に、グローバル分岐履歴を判別及び更新するように構成されている。一実施形態では、処理デバイスは、判別回路が、分岐シグネチャによって識別された分岐が行われていないと判別した場合に、現在のグローバル分岐履歴を変更しないように構成されている。
【００１３】
一実施形態では、処理デバイスは、分岐履歴情報及び分岐シグネチャ情報の圧縮を実行するように構成されている。この実施形態では、処理デバイスは、現在のグローバル分岐履歴内の１つ以上の最新のビットを第１桁数だけシフトし、現在のグローバル分岐履歴内の１つ以上の最古のビットを、第１桁数とは異なる第２桁数だけシフトするように構成されている。処理デバイスは、第２桁数だけシフトされたビットと、現在のグローバル分岐履歴内のより新たなビットと、の間でビット毎のＸＯＲ関数を実行するように構成された第２の複数のＸＯＲゲートをさらに備える。また、この実施形態の処理デバイスは、判別回路が、分岐シグネチャによって識別された分岐が行われていると判別した場合に、分岐履歴情報及び分岐シグネチャ情報の圧縮を実行するように構成されている。処理デバイスは、判別回路が、分岐シグネチャによって識別された分岐が行われていないと判別した場合に、現在のグローバル分岐履歴を変更しない。
【００１４】
圧縮を実行するように構成された処理デバイスの特定の実施形態では、第２桁数は第１桁数未満であってもよい。第１桁数は３であってもよく、第２桁数は１であってもよい。別の特定の実施形態は、複数レベルの圧縮を含んでもよい。一例として、現在のグローバル分岐履歴内のより新たなビットは３桁分シフトされてもよく、古いビットは２桁分シフトされてもよく、より古いビットは１桁分シフトされてもよい。効果的な圧縮のために、シフト量は、ビットの経過時間（historical age）が長くなるにつれて減少する傾向がある。
【００１５】
処理デバイスは、更新された現在のグローバル分岐履歴を第１レベルで受信するように構成された２レベル適応予測装置を含む。
【００１６】
図１は、１つ以上の開示された実施形態が実施される例示的なデバイス１００のブロック図である。例示的なデバイス１００は、コンピュータ、ゲームデバイス、ハンドヘルドデバイス、セットトップボックス、テレビ、携帯電話又はタブレットコンピュータを含む。デバイス１００は、プロセッサ１０２と、メモリ１０４と、ストレージ１０６と、１つ以上の入力デバイス１０８と、１つ以上の出力デバイス１１０と、を含む。また、デバイス１００は、入力ドライバ１１２及び出力ドライバ１１４をオプションで含むことができる。デバイス１００は、図１に示されていない追加のコンポーネントを含んでもよいことを理解されたい。
【００１７】
プロセッサ１０２は、中央処理装置（ＣＰＵ）、グラフィックス処理装置（ＧＰＵ）、同じダイ上に配置されたＣＰＵ及びＧＰＵ、又は、１つ以上のプロセッサコアを含み、各プロセッサコアはＣＰＵ又はＧＰＵであってもよい。メモリ１０４は、プロセッサ１０２と同じダイ上に配置されてもよいし、プロセッサ１０２とは別に配置されてもよい。メモリ１０４は、例えば、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックＲＡＭ若しくはキャッシュ等の揮発性又は不揮発性メモリを含む。
【００１８】
ストレージ１０６は、例えば、ハードディスクドライブ、ソリッドステートドライブ、光ディスク若しくはフラッシュドライブ等の固定又は取り外し可能なストレージデバイスを含む。入力デバイス１０８は、キーボード、キーパッド、タッチスクリーン、タッチパッド、検出器、マイクロフォン、加速度計、ジャイロスコープ、バイオメトリックスキャナ又はネットワーク接続（例えば、無線ＩＥＥＥ８０２信号を送信及び／若しくは受信するための無線ローカルエリアネットワークカード）を含む。出力デバイス１１０は、ディスプレイ、スピーカ、プリンタ、触覚フィードバック装置、１つ以上のライト、アンテナ又はネットワーク接続（例えば、無線ＩＥＥＥ８０２信号を送信及び／若しくは受信するための無線ローカルエリアネットワークカード）を含む。
【００１９】
入力ドライバ１１２は、プロセッサ１０２及び入力デバイス１０８と通信し、プロセッサ１０２が入力デバイス１０８から入力を受信することを可能にする。出力ドライバ１１４は、プロセッサ１０２及び出力デバイス１１０と通信し、プロセッサ１０２が出力デバイス１１０に出力を送信することを可能にする。入力ドライバ１１２及び出力ドライバ１１４は、オプションのコンポーネントであり、デバイス１００は、入力ドライバ１１２及び出力ドライバ１１４が存在しない場合であっても同様に動作することに留意されたい。
【００２０】
図３は、分岐予測のためにグローバル分岐履歴を判別及び更新するように構成された電子処理デバイス３００の例示的な実施形態を示す図である。電子処理デバイス３００の詳細（例えば、正確なビット数等）は、限定的であるとみなされるべきではない。
【００２１】
現在のグローバル分岐履歴は、ビットシーケンスとしてレジスタ３１０に記憶される。図３において、現在のグローバル分岐履歴は、８ビットを有するものとして示されているが、この数は限定的であるとみなされるべきではない。分岐が見つかると、分岐が行われたかどうかが判別回路３２５によって判別される。分岐が行われていない場合、現在のグローバル履歴は変更されず（３２０）、レジスタ３１０に再記憶される。分岐が行われた場合には、現在のグローバル分岐履歴が以下の例のように更新されるが、これは限定的とみなされるべきではない。
【００２２】
更新は、シフトロジック３１５が、現在のグローバル分岐履歴を表すビットをシフトし、シフトしたビットをレジスタ３１０に記憶することから開始する。図３に示すように、例えば、ビット０〜５は、２桁分左にシフトされる。このプロセスでは、この分岐履歴の古いビット６〜７が廃棄される。１つ以上のシフトされたビット（例えば、ビット２〜５等）は、レジスタ３１０に直接記憶される。レジスタ３１０は、分岐履歴が更新されている特定の分岐を識別する分岐シグネチャの第１ビット（Ｓ［１］及びＳ［０］）を受信して記憶する。非限定的な例として、分岐シグネチャは、線形アドレスの最下位ビットと同じくらいシンプルであってもよいし、（第１線形アドレス部分）ＸＯＲ（第２線形アドレス部分）ＸＯＲ（分岐タイプを表すビット）ＸＯＲ（分岐の他の属性を表すビット）と同じくらい複雑であってもよい。例えば、４ビットの分岐シグネチャが必要な場合、線形アドレス（ＬＩＮＡＤ）の１２の最下位ビットは、以下のように分岐タイプを表す４ビットと排他的論理和をとることができる。
ＬＩＮＡＤ［１１：８］ＸＯＲ
ＬＩＮＡＤ［７：４］ＸＯＲ
ＬＩＮＡＤ［３：０］ＸＯＲ
ＴＹＰＥ［３：０］
【００２３】
現在のグローバル分岐履歴の更新は、複数のＸＯＲゲート３３０が、分岐シグネチャの第２ビット（例えば、Ｓ［３］及びＳ［２］）と、現在のグローバル分岐履歴のシフトされたビット（例えば、ビット０及び１等）と、のビット毎のＸＯＲ関数を実行することで続行する。ビット毎のＸＯＲ関数の実行から生じたビットがレジスタ３１０に記憶され、これにより、レジスタ３１０に記憶されている現在のグローバル分岐履歴を更新する。
【００２４】
レジスタ３１０に記憶されたグローバル分岐履歴は、現在の分岐履歴を使用して分岐が行われる可能性を予測する電子回路である分岐予測器３３５に渡される。一実施形態では、分岐予測器３３５は、更新された現在のグローバル分岐履歴を第１レベルで受信するように構成された２レベル適応予測装置である。代替の実施形態では、他のタイプの分岐予測器を含むことができる。
【００２５】
図４は、分岐予測のためにグローバル分岐履歴を判別及び更新するように構成された電子処理デバイス４００の代替の例示的な実施形態を示す図である。電子処理デバイス４００の詳細（例えば、正確なビット数等）は、限定的とみなされるべきではない。図４の実施形態は、可変シフト関数及び追加のＸＯＲ関数を介した分岐履歴情報及び分岐シグネチャ情報の圧縮を含む。
【００２６】
図３の例と同様に、現在のグローバル分岐履歴は、ビットシーケンスとしてレジスタ４１０に記憶される。図４において、現在のグローバル分岐履歴は、１９ビットを有するものとして示されているが、この数は限定的とみなされるべきではない。
【００２７】
分岐が見つかると、分岐が行われたかどうかが判別回路４２５によって判別される。分岐が行われていない場合、現在のグローバル履歴は変更されず（４２０）、レジスタ４１０に再記憶される。分岐が行われている場合、現在のグローバル分岐履歴が以下の例のように更新されるが、これは限定的とみなされるべきではない。
【００２８】
図４に示す実施形態では、更新は、シフトロジック４１５が、現在のグローバル分岐履歴を表すビットをシフトし、シフトしたビットをレジスタ４１０に記憶することから開始する。しかしながら、図３とは対照的に、現在のグローバル分岐履歴の１つ以上の最新のビットは第１桁数だけシフトされ、１つ以上の最古のビットは第２桁数だけシフトされ、第１桁数及び第２桁数は等しくない。特に、第２桁数は、第１桁数未満である。図４に示すように、ビット０〜７は、３桁分左にシフトされる。一方、ビット１０〜１６は、１桁分左にシフトされる。１つ以上のシフトされたビットは、レジスタ４１０に直接記憶される。図４の例では、このようなビットは３〜７、１５、１６、１７である。このプロセスでは、この分岐履歴の最古のビット１８が廃棄される。
【００２９】
図３と同様に、レジスタ４１０は、分岐シグネチャの第１ビット（Ｓ［２］、Ｓ［１］及びＳ［０］）を受信して記憶する。図３と同様に、現在のグローバル分岐履歴の更新は、第１の複数のＸＯＲゲート４３０が、分岐シグネチャの第２ビット（図４の例では、Ｓ［５］、Ｓ［４］、Ｓ［３］）と、現在のグローバル分岐履歴のシフトされたビット（図４の例では、ビット０、１、２）と、のビット毎のＸＯＲ関数を実行することで続行する。ビット毎のＸＯＲ関数の実行から生じたビットが、更新された現在の分岐履歴の一部としてレジスタ４１０に記憶される。
【００３０】
図３とは対照的に、図４のデバイスは、第２の複数のＸＯＲゲート４３３を使用して圧縮を実行する。ＸＯＲゲート４３３は、第２桁数だけシフトされた現在のグローバル分岐履歴ビットと、現在のグローバル分岐履歴のより新たなビットと、の間でビット毎のＸＯＲ関数を実行するように構成されている。ビット毎のＸＯＲ関数の実行から生じたビットは、現在のグローバル分岐履歴の更新を完了するためにレジスタ４１０に記憶される。図４の特定の例では、以下のＸＯＲ関数（つまり、１０ＸＯＲ５、１１ＸＯＲ６、１２ＸＯＲ７、１３ＸＯＲ８及び１４ＸＯＲ９）が実行される。
【００３１】
一実施形態では、レジスタ４１０に記憶されたグローバル分岐履歴は、現在のグローバル分岐履歴を使用して分岐が行われる可能性を予測する分岐予測器４３５に渡される。一実施形態では、分岐予測器４３５は、更新された現在のグローバル分岐履歴を第１レベルで受信するように構成された２レベル適応予測器装置である。代替の実施形態では、他のタイプの分岐予測器を含むことができる。
【００３２】
図５は、分岐予測のためにグローバル分岐履歴を判別する方法５００を示す図である。図示したステップの正確な順序は、必ずしも限定的なものとして解釈されるべきではない。コードの実行中に、分岐に遭遇する（ステップ５１０）。この分岐が行われたかどうかが判別される（ステップ５１５）。分岐が行われていない場合、現在のグローバル分岐履歴が変更されず（ステップ５２０）、方法は、次の分岐に遭遇する（ステップ５１０）のを待機するために戻る。
【００３３】
分岐が行われると、現在のグローバル分岐履歴が更新される。更新は、分岐シグネチャの第１ビットを現在のグローバル分岐履歴にシフトすることから開始する（ステップ５２５）。シフトすることは、現在のグローバル分岐履歴内の１つ以上の最古のビットを廃棄することを含む。分岐シグネチャの第２ビットと、現在のグローバル分岐履歴のシフトされたビットと、に対してビット毎のＸＯＲ関数が実行される（ステップ５３０）。現在のグローバル分岐履歴は、上述したように、ここで更新され、レジスタに記憶される。方法は、次の分岐に遭遇する（ステップ５１０）のを待機するために戻る。
【００３４】
図６は、分岐予測のためにグローバル分岐履歴を判別する方法の別の実施形態６００を示す図である。図示したステップの正確な順序は、必ずしも限定的なものとして解釈されるべきではない。図５に示す方法に加えて、図６に示す実施形態は、可変シフト関数及び追加のＸＯＲ関数を介した分岐履歴情報及び分岐シグネチャ情報の圧縮を含む。図５と同様に、分岐に遭遇し（ステップ６１０）、この分岐が行われたどうかが判別される（ステップ６１５）。分岐が行われていない場合、図５と同様に、現在のグローバル分岐履歴が変更されず（ステップ６２０）、方法は、次の分岐に遭遇する（ステップ６１０）のを待機するために戻る。
【００３５】
分岐が行われると、現在のグローバル分岐履歴内の１つ以上の最新のビットが第１桁数だけシフトされる（ステップ６２５）。分岐シグネチャの第１ビットは、現在のグローバル分岐履歴にシフトされる（ステップ６２７）。ＸＯＲ関数は、分岐シグネチャの第２ビットと、第１桁数だけシフトされた現在のグローバル分岐履歴のビットと、に対して実行される（ステップ６３０）。
【００３６】
現在のグローバル分岐履歴内の最古のビットのうち１つ以上のビットは、第１桁数とは異なる第２桁数だけシフトされる（ステップ６３５）。特定の実施形態では、第２桁数は第１桁数未満である。一例として、第１桁数は３であり、第２桁数は１である。２回のシフトの結果として、現在のグローバル分岐履歴内の１つ以上の最古のビットが廃棄される。
【００３７】
第２桁数だけシフトされた現在のグローバル分岐履歴のビットと、現在のグローバル分岐履歴内のより新しいビットと、の間でビット毎のＸＯＲ関数が実行される（ステップ６４０）。現在のグローバル分岐履歴の１つ以上のシフトされたビットは、追加の処理無しに、更新された分岐履歴のビットになる。
【００３８】
現在のグローバル分岐履歴がここで更新される。一実施形態では、更新されたグローバル分岐履歴が、上述したように、レジスタに記憶される。方法は、次の分岐に遭遇する（ステップ６１０）のを待機するために戻る。
【００３９】
本明細書における開示に基づいて多くの変形が可能であることを理解されたい。上記では、特徴及び要素が特定の組み合わせで説明されているが、各特徴又は要素は、他の特徴及び要素無しに単独で使用されてもよいし、他の特徴及び要素を伴って又は伴わずに様々な組み合わせで使用されてもよい。
【００４０】
提供された方法は、汎用コンピュータ、プロセッサ又はプロセッサコアで実施されてもよい。適切なプロセッサには、例として、汎用プロセッサ、専用プロセッサ、従来のプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、複数のマイクロプロセッサ、ＤＳＰコアに関連する１つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）回路、他のタイプの集積回路（ＩＣ）、及び／又は、ステートマシンが含まれる。このようなプロセッサは、処理されたハードウェア記述言語（ＨＤＬ）命令（このような命令は、コンピュータ可読媒体に記憶することが可能である）の結果及びネットリストを含む他の中間データを用いて製造プロセスを構成することによって製造することができる。このようなプロセスの結果は、実施形態の態様を実施するプロセッサを製造するために半導体製造プロセスにおいて使用されるマスクワークであってもよい。
【００４１】
本明細書で提供された方法又はフローチャートは、汎用コンピュータ又はプロセッサによる実行のために非一時的なコンピュータ可読記憶媒体に組み込まれたコンピュータプログラム、ソフトウェア又はファームウェアで実施されてもよい。非一時的なコンピュータ可読記憶媒体の例には、例えば読み出し専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、レジスタ、キャッシュメモリ、半導体メモリデバイス、内蔵ハードディスク、リムーバブルディスク等の磁気媒体、光磁気記憶媒体、例えばＣＤ−ＲＯＭディスク及びデジタル多用途ディスク（ＤＶＤ）等の光学媒体が含まれる。
【図１】
2019526872.tif 000003
【図２】
2019526872.tif 000004
【図３】
2019526872.tif 000005
【図４】
2019526872.tif 000006
【図５】
2019526872.tif 000007
【図６】
2019526872.tif 000008
【国際調査報告】
2019526872.tif 000009
2019526872.tif 000010