(57)【要約】プロセッサの投機的分岐予測効率を表す値が求められ、投機的分岐予測深度がそれに応じて調整される。プロセッサの投機的分岐予測効率は、１命令当たりのクロックの平均個数(平均CPI)によって表すことができる。これによれば、平均CPIの増加は、間違って予測された投機的分岐予測のためにプロセッサの効率が悪くなっていることを示し、逆に、減少は、プロセッサの有する、適切に予測された投機的分岐予測の比率がより高くなっていることを示す。このように、プロセッサが投機的分岐予測をより効果的に予測しているときは、プロセッサの利用可能な投機的分岐予測深度を増加させて、この増加された効率を活用することができ、プロセッサが投機的分岐予測をあまり効果的に予測していないときは、誤った投機的分岐予測を遂行する際にプロセッサにより使用される処理サイクル及び電力を削減又は最小化するように利用可能な投機的分岐予測深度を減少させることができる。
2008538251.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサによる１つ又は２つ以上の命令の実行中に発生する周期パルス数を定量化し、
前記周期パルス数を所定の値と比較することに基づいて、分岐予測の利用可能な深度を調整する、方法。
【請求項２】
前記周期パルス数の定量化では、１命令当たりの前記パルスの比率が求められる、請求項１に記載の方法。
【請求項３】
前記周期パルス数の定量化では、所定数の命令に対する該周期パルス数を求める、請求項１に記載の方法。
【請求項４】
前記分岐予測の利用可能な深度の調整に従って、前記所定数の命令を調整する、請求項１に記載の方法。
【請求項５】
前記所定数の命令の調整では、前記分岐予測の利用可能な深度を減少させることに応じて、前記所定数の命令を増加させる、請求項４に記載の方法。
【請求項６】
前記所定数の命令の調整では、前記分岐予測の利用可能な深度を増加させることに応じて、前記所定数の命令を減少させる、請求項５に記載の方法。
【請求項７】
前記所定数の命令は、所定の最小数の命令及び所定の最大数の命令によって設定された範囲内に維持される、請求項６に記載の方法。
【請求項８】
前記分岐予測は、投機的分岐予測を含む、請求項１に記載の方法。
【請求項９】
プロセッサの命令実行効率を定量化するように動作可能な第１の部分（２０２）と、
前記命令実行効率に基づいて、利用可能な投機的分岐予測深度を調整する第２の部分（２０６）と
を備える、システム。
【請求項１０】
前記第１の部分（２０２）は、周期信号を受け取る第１の入力（１２４）と、命令の実行に応じてアサートされる命令カウント信号を受け取る第２の入力（１２６）と、実行された命令数と比較される前記周期信号のパルス数の第１の表示を提供する出力（２０４）とを有し、前記第１の表示は、前記命令実行効率を表す、請求項９に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、投機的分岐予測技法を対象とし、より詳細には、適応型投機的分岐予測最適化のための技術を対象とする。
【背景技術】
【０００２】
分岐予測技法は、プロセッサの性能を高めるためにプロセッサ及び他の処理デバイスで頻繁に使用される。分岐予測の１つのタイプには、投機的分岐予測が含まれる。この投機的分岐予測によれば、最初の条件分岐予測が行われた後、その最初の分岐予測が解決する前に、１つ又は２つ以上の投機的分岐予測を行うことができる。ここで、行われる投機的分岐予測の個数は、利用可能な投機的予測深度と呼ばれる。投機的分岐予測は、或る投機的分岐予測に先行する条件分岐予測が選ばれた場合に、その投機的分岐予測は、条件分岐予測になり、その新しい条件分岐予測に関係した命令は、すでにプリフェッチされ、プロセッサのパイプラインによる実行に利用可能であるという点で多くの場合に有利である。その結果、プロセッサのパイプラインがフルに利用されることになり、それによって、プロセッサのストールが防止される。
一方、投機的分岐予測は、最初の条件分岐予測が選ばれなかった場合に、パイプラインは、その投機的分岐予測に関係した命令をプリフェッチしてキャッシュ及び／又はパイプライン自体にロードする際の時間及び電力の双方を浪費してしまうという点で不利となる場合がある。その結果、プロセッサは、パイプラインに誤った予測や分岐の実行を強いるために、また、誤って予測された分岐の実行に起因するデータを除去又は無視するために、エネルギー及び時間を浪費してしまう。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
したがって、従来の処理デバイスは、投機的分岐予測の有利な点と不利な点との間の最適なバランスの達成を試みて、所定の利用可能な投機的分岐予測深度を利用する場合がある。しかしながら、投機的分岐予測のヒット／ミスの割合及び条件分岐の平均個数は、アプリケーションに非常に特有のものであるので、どの特定の所定の利用可能な投機的分岐予測深度を選択しても、その深度は、多くの場合、プロセッサによって実行されるアプリケーションの一部又は全部にとって準最適であることが分かる。したがって、適応型投機的分岐予測深度最適化のためのシステム及び方法が有利となる。
【発明を実施するための最良の形態】
【０００４】
図１〜図４は、プロセッサ及び他の処理デバイスにおける投機的分岐予測の適応型最適化のためのさまざまなシステム及び技法を示している。本開示の少なくとも１つの実施形態によれば、プロセッサの投機的分岐予測効率を表す値が求められ、投機的分岐予測深度が、その効率値に従って調整される。プロセッサの投機的分岐予測効率は、たとえば、１命令当たりのクロックの個数（ＣＰＩ）によって表すことができる。
【０００５】
これによれば、ＣＰＩの増加は、間違って予測された投機的分岐予測のためにプロセッサの効率が悪くなっていることを示し、逆に、ＣＰＩの減少は、プロセッサの有する、適切に予測された投機的分岐予測の比率がより高くなっていることを示す。このように、プロセッサが投機的分岐予測をより効果的に予測しているアプリケーションを実行しているときは、プロセッサの利用可能な投機的分岐予測深度を増加させて、この増加された効率を活用することができ、プロセッサが投機的分岐予測をあまり効果的に予測していないときは、誤った投機的分岐予測を遂行する際にプロセッサにより使用される処理サイクル及び電力を削減又は最小化するように利用可能な投機的分岐予測深度を減少させることができる。
【０００６】
次に図１を参照すると、適応型投機的分岐予測深度最適化技法を利用する１つの例示的な処理デバイス１００が、本開示の少なくとも１つの実施形態に従って示されている。処理デバイス１００は、命令キャッシュ１０６に結合されたプリフェッチモジュール１０４を有するパイプライン１０２を備える。図示するように、パイプライン１０２は、命令デコードモジュール１０８、命令キュー１１０、アドレス計算モジュール１１２、実行モジュール１１４、ライトバックモジュール１１５等をさらに備えることができる。処理デバイス１００は、少なくともプリフェッチモジュール１０４及び実行モジュール１１４に結合された投機的分岐予測状態マシン１２０をさらに備える。
【０００７】
投機的分岐予測状態マシン１２０は、少なくとも１つの実施形態では、プロセッサの投機的分岐予測効率を表すために求められた１つ又は２つ以上の値に基づいて、プリフェッチモジュール１０４に利用可能な、利用可能な投機的分岐予測深度を動的に調整するように動作可能である。一実施形態では、１命令当たりの平均クロック、すなわち平均ＣＰＩは、プロセッサの投機的分岐予測効率の表示として投機的分岐予測状態マシン１２０により利用され、このＣＰＩ値から、状態マシン１２０は、プリフェッチモジュール１０４によって使用される新しい投機的分岐予測深度を求めることもできるし、プリフェッチモジュール１０４によって使用される既存の投機的分岐予測深度を調整することもできる。
【０００８】
次に図２を参照すると、状態マシン１２０がより詳細に示されている。図示した例では、状態マシン１２０は、深度調整モジュール２０６に結合された予測効率モジュール２０２を備える。予測効率モジュール２０２は、パイプラインクロック１２４等の周期信号を受け取る入力、現在の命令サイクルについてのカウント命令（ＩＴＣ：instruction to count）の個数の指示又はその個数の表示（ＩＴＣ信号１２３）を受け取る入力、及び実行モジュール１１４から受け取られた信号１２６を受け取る入力を含む。ここで、命令が実行モジュール１１４によってコミットされた時、実行モジュール１１４は、信号１２６をアサートするか、又は、特定の値を信号１２６として提供する。クロック信号１２４のパルス及び信号１２６から導出されるコミットされた命令のカウントを使用することによって、予測効率モジュール２０２は、ＩＴＣ信号１２３によって規定された命令サイクルの平均ＣＰＩを求めることができる。
この平均ＣＰＩは、命令サイクルについてのプロセッサの投機的分岐予測効率を示すものとして、深度調整モジュール２０６へ信号２０４として出力することができる。信号２０４において出力された平均ＣＰＩに基づいて、深度調整モジュール２０６は、プリフェッチモジュール１０４に利用可能な投機的分岐予測深度をインクリメントするのか、それともデクリメントするかどうかを判断することができる。
ここで、現在の命令サイクルの平均ＣＰＩが前の命令サイクルの平均ＣＰＩよりも大きいときは、利用可能な深度をデクリメントすることができ、逆に、現在の命令サイクルの平均ＣＰＩが前の命令サイクルの平均ＣＰＩよりも小さいときは、深度調整モジュール２０６は、プリフェッチモジュール１０４によって使用される利用可能な投機的分岐予測深度をインクリメントすることができる。代替的に、深度調整モジュール２０６は、ＣＰＩ値を１つ又は２つ以上のしきい値と比較することに基づいて、プリフェッチモジュール１０４によって使用される新しい利用可能な投機的分岐予測深度値を求めることもできる。このように、深度調整モジュール２０６は、所与のアプリケーションに使用される投機的分岐予測深度の有効性を評価するために、或る命令サイクルの平均ＣＰＩを前の命令サイクルの平均ＣＰＩと比較することに基づいて、利用可能な投機的分岐予測深度を動的に調整することができる。
【０００９】
次に図３を参照すると、予測効率モジュール２０２の例示的な一実施態様が、本開示の少なくとも１つの実施形態に従って示されている。モジュール２０２は、クロックカウンタ３０２、クロックカウントレジスタ３０４、命令カウンタ３０６、比較モジュール３０８、除算器３１２、遅延素子３２２、ＯＲゲート３２０、及びＩＴＣレジスタ１２２を備える。クロックカウンタ３０２は、パイプラインクロック１２４を受け取る入力、及び、クロックカウントレジスタ３０４の入力に結合された出力を含む。クロックカウンタレジスタ３０４は、比較モジュール３０８の出力に結合された第２の入力、及び、除算器３１２の入力に結合された出力をさらに備える。命令カウンタ３０６は、コミットされた命令信号１２６を受け取る入力、及び、比較モジュール３０８の第１の入力に結合された出力を備える。比較モジュールは、ＩＴＣレジスタ１２２の出力に結合された第２の入力をさらに備える。上述したように、ＩＴＣレジスタ１２２には、たとえばソフトウェアドライバ又はオペレーティングシステムを介して、ＩＴＣ信号１２３として提供できるＩＴＣ値をロードすることができる。
【００１０】
動作中、命令サイクルの開始時に、クロックカウンタ３０２及び命令カウンタ３０６が、たとえば、ＯＲゲート３２０を介して提供されるリセット信号を介してリセットされる。クロックカウンタ３０２は、次に、パイプラインクロック１２４の各パルスにおいてインクリメントされる。同様に、命令カウンタ３０６が、現在の命令サイクル中に実行モジュール１１４によってコミットされた命令の現在の個数を表すように、命令カウンタ３０６は、コミットされた信号１２６が実行モジュール１１４によってアサートされるごとにインクリメントされる。命令カウンタ３０６の現在の値は、比較モジュール３０８に提供され、同様に、ＩＴＣレジスタ１２２に記憶されたＩＴＣ値も比較モジュール３０８に提供される。これらの値が等しいか又はほぼ等しいとき、比較モジュール３０８は、同等信号３１０をアサートし、それによって、実行モジュール１１４によってコミットされた命令の個数が、オペレーティングシステム又はソフトウェアドライバによって指示されたカウント命令の個数と等しいか又はほぼ等しいことを示す。クロックカウントレジスタ３０４は、一実施形態では、現在の命令サイクル中にパイプラインクロック１２４からクロックカウンタ３０２によって決定されるクロックサイクル又はパルスの現在の個数を記憶する。同等信号３１０のアサートに応答して、クロックカウントレジスタ３０４は、現在のクロックカウントを除算器３１２に出力する。除算器３１２は、現在の命令サイクルのクロックカウントをカウント命令（ＩＴＣ）の個数で除算して、現在の命令サイクル中に実行モジュール１１４によってコミットされたそれらの命令について、１命令当たりのクロックの平均個数（平均ＣＰＩ）を求める。一実施形態では、除算器３１２は、右シフト入力としてＩＴＣ信号１２３を有するシフタとして実装される。求められた平均ＣＰＩの表示は、信号２０４として出力することができる。
【００１１】
次に図４を参照すると、１つ又は２つ以上の命令サイクルの平均ＣＰＩに基づいて、プロセッサ１００により使用される利用可能な投機的分岐予測深度を調整するための１つの例示的な方法が、本開示の少なくとも１つの実施形態に従って示されている。この方法４００は、ブロック４０２で開始する。ブロック４０２において、特定の命令サイクルについてカウントされる命令の個数を表す１つ又は複数のＩＴＣ値が、たとえばＩＴＣレジスタ１２２にロードされる。ブロック４０４において、実行モジュール１１４によってコミットされた命令の個数が、現在の命令サイクルについてカウントされる。ブロック４０６において、パイプラインクロック１２４のパルス又はサイクルの個数がカウントされる。ステップ４０８において、この命令サイクルの平均ＣＰＩが、ブロック４０４でカウントされた、コミットされた命令の個数に対する、ブロック４０６でカウントされたサイクルの個数の比率に基づいて求められる。ブロック４１０において、現在の命令サイクルの平均ＣＰＩが、前の命令サイクルの平均ＣＰＩと比較される。現在の命令サイクルの平均ＣＰＩが前の命令サイクルの平均ＣＰＩよりも小さい状況は、プロセッサ１１０の投機的分岐予測がより効果的であるか、又は、より効果的になりつつあることを示すものと解釈することができ、したがって、ブロック４１２において、プリフェッチモジュール１０４によって利用される利用可能な投機的分岐予測深度を或る値だけインクリメントすることができる。たとえば、深度を一定の増分だけインクリメントしたり（たとえば、１だけインクリメント）、特定のパーセンテージだけインクリメントしたり（たとえば、投機的分岐予測を２０％だけインクリメント）等することができる。
【００１２】
カウント命令の個数（すなわち、ＩＴＣの値）は、平均ＣＰＩが計算される継続期間を表し、したがって、その結果の平均ＣＰＩの因子となり得る。たとえば、ＩＴＣ値が、たとえばタイトループにおける命令の個数よりも小さい場合、平均ＣＰＩ値は、そのタイトループの実行によって不自然に低いものとして計算される場合がある。同様に、大きすぎるＩＴＣ値は、プロセッサの分岐予測効率を完全には反映していない見積もり平均ＣＰＩ値となる場合がある。したがって、現在の平均ＣＰＩが、前の平均ＣＰＩよりも小さい場合には、次の命令サイクルについて平均ＣＰＩが計算される継続期間を精緻化するために、ＩＴＣ値をブロック４１４において減少させることができる。たとえば、現在のＩＴＣ値が所定の最小ＩＴＣ値よりも大きいことを確認した後、たとえば、ＩＴＣレジスタ１２２の値を右に１ビットだけシフトすることによって、ＩＴＣ値を半分だけ削減することができる。
【００１３】
現在の命令サイクルの平均ＣＰＩが前の命令サイクルの平均ＣＰＩよりも大きい場合は、プロセッサがその投機的分岐予測であまり効果的でないか又は効果的でなくなってきていることを示すものと解釈することができる。したがって、プリフェッチモジュール１０４が選ぶことができる投機的分岐予測の個数を削減し、したがって、ミスした投機的分岐予測に起因する浪費されたプロセッササイクル時間及び電力消費を削減又は最小化するために、ブロック４１８において、利用可能な分岐予測深度を或る量だけデクリメントすることができる。その上、これは、現在のＩＴＣ値が、適切な平均ＣＰＩ値を求めることができる命令の個数としては不十分であることを表す場合もある。したがって、ブロック４２０において、現在のＩＴＣ値を増加させて、次のサイクル中にカウントされる命令の個数を増加させることができる。たとえば、ＩＴＣ値が所定の最大ＩＴＣ値よりも小さいことを確認した後、たとえば、ＩＴＣレジスタ１２２を左に１ビットだけシフトすることによって、現在のＩＴＣ値を増加させて、そのサイズを２倍にすることができる。
【００１４】
次の命令サイクルでは、かつての現在の平均ＣＰＩが、前の平均ＣＰＩとなるように設定され、次の命令サイクルについて方法４００を繰り返すことができる。したがって、方法４００の繰り返される反復の結果、プロセッサによって行われる投機的分岐予測の有効性の変動に加えて、多くの場合、アプリケーションに非常に依存する誤りのある投機的分岐予測のコストの変動に順応するように、プリフェッチモジュール１０４によって使用される利用可能な投機的分岐予測深度が動的に調節される。
【００１５】
上記で開示した内容は、制限的ではなく、例示的なものとみなされるべきであり、添付の特許請求の範囲は、本発明の真の趣旨及び範囲内に入るすべての変更、高度化、及び他の実施形態をカバーすることを目的としている。したがって、本発明の範囲は、法律によって許可される最大範囲まで、添付の特許請求の範囲及びその均等物の許容可能な最も広い解釈によって決定されるべきであり、上記詳細な説明によって制限も限定もされない。
【図面の簡単な説明】
【００１６】
【図１】本開示の少なくとも１つの実施形態による適応型投機的分岐予測深度最適化を利用する１つの例示的な処理デバイスのブロック図である。
【図２】本開示の少なくとも１つの実施形態による図１の処理デバイスの１つの例示的な投機的分岐予測状態マシンを示すブロック図である。
【図３】本開示の少なくとも１つの実施形態による１つの例示的な予測効率モジュールを示すブロック図である。
【図４】本開示の少なくとも１つの実施形態による最適な投機的分岐予測深度を求めるための１つの例示的な方法を示すフロー図である。
【図１】
2008538251.tif 000003
【図２】
2008538251.tif 000004
【図３】
2008538251.tif 000005
【図４】
2008538251.tif 000006
【国際調査報告】
2008538251.tif 000007
2008538251.tif 000008
2008538251.tif 000009