(57)【要約】【課題】分散型プレディケート予測を実現する。【解決手段】分散型のマルチコアアーキテクチャにおいてプレディケート予測を生成するための、システム、方法、およびコンピュータによってアクセス可能な媒体の実施例が提供される。そのようなシステム、方法、およびコンピュータによってアクセス可能な媒体を用いると、分岐命令についての概略プレディケート経路情報をインテリジェントに符号化することが可能になる。この静的に生成された情報を用いて、分散型のプレディケート予測器は、信頼性の高いプレディケートの正確な予測を容易にし得る動的なプレディケート履歴を生成することができ、同時に、コア間の通信を最小化する。【選択図】図４
2014142969.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサコアを含むマルチコアプロセッサを備えるコンピューティングシステムであって、前記コアの各々がプレディケート予測器を備え、前記プレディケート予測器が、プレディケート予測を生成するように構成される、コンピューティングシステム。
【請求項２】
前記コアの少なくとも１つが、符号化されたプレディケート経路情報を有する分岐命令を備えるアプリケーションプログラムを実行し、前記プレディケート予測器が、前記プレディケート経路情報に基づいて前記プレディケート予測を生成するように構成される、請求項１に記載のコンピューティングシステム。
【請求項３】
前記コアの少なくとも１つが、前記分岐命令に基づいて前記プレディケート経路情報を符号化するように構成されるコンパイラである、請求項２に記載のコンピューティングシステム。
【請求項４】
前記マルチコアプロセッサのうちのどの前記コアが前記分岐命令を実行するのに割り当てられるかを決定するブロックアドレスを、前記分岐命令が有する、請求項２に記載のコンピューティングシステム。
【請求項５】
前記マルチコアプロセッサが、エクスプリジット・データ・グラフ・エグゼキューション（ｅｘｐｌｉｃｉｔ  ｄａｔａ  ｇｒａｐｈ  ｅｘｅｃｕｔｉｏｎ）マイクロアーキテクチャを備える、請求項１に記載のコンピューティングシステム。
【請求項６】
前記プレディケート予測器が、基本予測器およびグローバル履歴レジスタを備える、請求項１に記載のコンピューティングシステム。
【請求項７】
前記基本予測器が、幾何履歴長予測器を備える、請求項６に記載のコンピューティングシステム。
【請求項８】
前記グローバル履歴レジスタが、コアローカルプレディケート履歴レジスタを備える、請求項６に記載のコンピューティングシステム。
【請求項９】
前記グローバル履歴レジスタが、グローバルブロック履歴レジスタを備える、請求項６に記載のコンピューティングシステム。
【請求項１０】
前記グローバル履歴レジスタが、コアローカルプレディケート履歴レジスタおよびグローバルブロック履歴レジスタを備える、請求項６に記載のコンピューティングシステム。
【請求項１１】
前記プレディケート予測器が、複数のプレディケート予測を生成するように構成され、前記コアの少なくとも１つが、前記プレディケート予測の正確さを示す信頼性予測を得て、前記信頼性予測に基づいて、どのプレディケートが次に予測されるべきかを決定するように構成される、請求項１に記載のコンピューティングシステム。
【請求項１２】
マルチコアプロセッサ内の複数のプロセッサコアの各々に対してプレディケート予測器を提供すること、
前記プレディケート予測器を用いて、複数の分岐命令からプレディケート予測を生成すること含む、マルチコアプロセッサ内でプレディケート予測を提供する方法。
【請求項１３】
前記コアの少なくとも１つによってアプリケーションプログラムを実行することをさらに含み、前記プログラムが、符号化されたプレディケート経路情報を有する複数の分岐命令の１つを含む、請求項１２に記載の方法。
【請求項１４】
コンパイラを用いて、前記分岐命令についての前記プレディケート経路情報を符号化することをさらに含む、請求項１３に記載の方法。
【請求項１５】
前記プログラムが複数の分岐命令を備える請求項１３に記載の方法であって、前記分岐命令の各々のブロックアドレスを用いて、どのプロセッサコアが前記分岐命令を実行するかを決定することをさらに含む、方法。
【請求項１６】
前記少なくとも１つのプレディケート予測器が、基本予測器およびグローバル履歴レジスタを含む、請求項１２に記載の方法。
【請求項１７】
前記基本予測器が幾何履歴長予測器である、請求項１６に記載の方法。
【請求項１８】
前記グローバル履歴レジスタがコアローカルプレディケート履歴レジスタである、請求項１６に記載の方法。
【請求項１９】
前記グローバル履歴レジスタがグローバルブロック履歴レジスタである、請求項１６に記載の方法。
【請求項２０】
マルチコアプロセッサコンピューティングシステム内でプレディケート予測を提供するためのコンピュータ実行可能命令が記憶された、コンピュータによってアクセス可能な媒体であって、処理構成が前記命令を実行するときに処理手順を実行するように構成され、前記処理手順が、
前記マルチコアプロセッサの複数のプロセッサコアの各々に対してプレディケート予測器を提供することであって、前記プロセッサコアの各々が少なくとも１つのプレディケート予測器を備える、提供することと、
前記プレディケート予測器を用いて、前記プレディケート予測を生成することとを含む、コンピュータによってアクセス可能な媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
政府支援の研究に関する陳述
本発明は、米国空軍によって与えられたＦ３３６１５−０３−Ｃ−４１０６の下での政府支援によりなされた。米国政府は、本発明の一定の権利を有する。
【０００２】
分散型の、ウィンドウの大きなプロセッサでは、プレディケーションは、プログラムの制御フローにおいて頻繁に変化を生じさせる分岐を、命令を保護することができるデータ値に変換するために使用される技術であり、このデータ値により、どの命令を実行しどの命令を実行しないかを決定することができる。プレディケーションによって制御フローを直線化することができ、分岐がとり得る可能な両経路に提供される命令が折り畳まれる（ｔｏ  ｂｅ  ｃｏｌｌａｐｓｅｄ）のを容易にし、全ての命令をフェッチし、プレディケートに応じて命令の一部のみを実行する。このモデルは、大きなコードブロックを生成して多くの実行ユニット全体に広めるには効果的であり得るが、プレディケートを用いないアーキテクチャでは分岐であったはずのプレディケートが、実行時に評価され得るという問題が生じ得る（フェッチされてからすぐに予測される分岐とは異なる）。プレディケートの評価のこの遅延により、性能が大幅に低下し得る。
【０００３】
現在の技術では、２つの、おそらくは望ましくない選択肢のうちの１つを採用する。１つ目のそのような技術は、プレディケーションを回避することを選び、これは、あらゆる制御判断を分岐として残し得るとともに、大規模な分散型プロセッサ全体に命令を分散させることを不可能にし得る。２つ目の選択肢は、命令をプレディケートする一方、フェッチおよびプレディケート予測を単一のユニットに集中させることであり得るが、フェッチの帯域幅が狭くなり、大規模な分散型マルチコアプロセッサ全体に命令を分散させることはやはり不可能になる。
【０００４】
ＥＤＧＥ（エクスプリジット・データ・グラフ・エグゼキューション：Ｅｘｐｌｉｃｉｔ  Ｄａｔａ  Ｇｒａｐｈ  Ｅｘｅｃｕｔｉｏｎ）アーキテクチャのようなハイブリッドなデータフローのアーキテクチャでは、制御フローには分岐とプレディケートとが混在していることがある。どの分岐がプレディケートにｉｆ変換（if-convert）され得るかを決定することは、複雑な問題になり得る。予測の難しい分岐がプレディケートされるのを好ましいものとすることができ、制御フローを十分に直線化するのに役立つ分岐がプリディケートされる。残りの制御ポイントは、分岐として残され得る。そのような区分によって、予測スキームは全ての分岐と最も予測可能なプレディケートを予測することができ、予測の難しいプレディケートの評価は遅らせて実行時に選択する。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、分散型のデータフローのマシンでは、完全に制御の履歴を管理して正確なプレディケート予測を容易にすることは難しいことがある。この分野における従来の試みでは、通常、予測の難しい分岐に“ｉｆ変換”を適用するコンパイラ、および、ランタイム情報の不足によりコンパイラが誤りを犯した場合の、回復するための特定のマイクロアーキテクチャ機構に依存してきた。その結果、現在知られているほとんどのデータフローマシンは、商業用途で効果的であり得る方式では、プレディケート予測を利用していない。
【課題を解決するための手段】
【０００６】
システム、方法、およびコンピュータによってアクセス可能な媒体の例が、分散型マルチコアアーキテクチャにおいてプレディケート予測を生成するために提供される。そのようなシステム、方法、およびコンピュータによってアクセス可能な媒体を用いることで、分岐命令についての概略プレディケート経路情報（approximate predicate path information）をインテリジェントに符号化することができる。この静的に生成された情報を用いることで、分散型プレディケート予測器は、信頼性の高いプレディケートの正確な予測に役立ち得る、動的なプレディケート履歴を生成することができ、同時にコア間の通信を最小にする。  
【０００７】
一実施例では、コンピューティングシステムが提供される。コンピューティングシステムは、複数のプロセッサコアを有するマルチコアプロセッサを含んでもよい。コアの各々は、プレディケート予測器を含んでもよい。プレディケート予測器は、プレディケート予測を生成するように構成され得る。
【０００８】
別の実施例では、マルチコアプロセッサにおいてプレディケート予測を提供するための方法が提供される。その方法は、マルチコアプロセッサにおいて複数のプロセッサコアの各々に、プレディケート予測器を提供することと、プレディケート予測器を用いて、複数の分岐命令からプレディケート予測を生成することとを含んでもよい。
【０００９】
さらに別の実施例では、マルチコアプロセッサコンピューティングシステム内でプレディケート予測を提供するためのコンピュータ実行可能命令を記憶した、コンピュータによってアクセス可能な媒体が提供される。処理構成（processing arrangement）が命令を実行するときに処理手順を実行するように構成され得る。処理手順は、マルチコアプロセッサ内の複数のプロセッサコアの各々にプレディケート予測器を提供することであって、プロセッサコアの各々が少なくとも１つのプレディケート予測器を含む、ことと、プレディケート予測器を用いてプレディケート予測を生成することとを含んでもよい。
【００１０】
複数の実施例が開示されるが、さらに別の実施例が、以下の発明を実施するための形態から当業者には明らかになろう。明らかとなるように、システム、方法、およびコンピュータによってアクセス可能な媒体は、全て本明細書の教示の趣旨および範囲から逸脱することなく、様々な明らかな態様の修正が可能である。したがって、発明を実施するための形態は、限定的ではなく実際には例示的であるものとして見なされるべきである。
【００１１】
本開示の前述および別の特徴が、添付の図面とともに、以下の記述および添付の特許請求の範囲から、より完全に明らかになろう。これらの図面は本開示によるいくつかの実施形態のみを示し、したがって、本開示の範囲を限定するものと考えるべきではないことを理解して、本開示が、添付の図面を用いてさらに具体的かつ詳細に説明される。
【図面の簡単な説明】
【００１２】
【図１】一実施例による、代表的なコンピューティングシステムのブロック図である。
【図２】一実施例による、プレディケート予測システムのブロック図および流れ図である。
【図３】別の実施例による、プレディケート予測システムのブロック図および流れ図である。
【図４】一実施例による、幾何履歴長予測器（ｇｅｏｍｅｔｒｉｃ  ｈｉｓｔｏｒｙ  ｌｅｎｇｔｈ  ｐｒｅｄｉｃｔｏｒ）のブロック図および流れ図である。
【図５】一実施例による、プレディケート予測に適した方法のブロック図および流れ図である。
【図６ａ】いくつかの実施例による、グローバル履歴レジスタの構成のブロック図および流れ図である。
【図６ｂ】いくつかの実施例による、グローバル履歴レジスタの構成のブロック図および流れ図である。
【発明を実施するための形態】
【００１３】
以下の発明を実施するための形態では、本明細書の一部を形成する添付の図面が参照される。図面においては、状況によって別段指定されない限り、同様の記号は通常同様の構成要素を識別する。発明を実施するための形態、図面、および特許請求の範囲に記載される説明のための例は、限定的であることを意図しない。本明細書で提示される主題の趣旨または範囲から逸脱することなく、別の例を利用することができ、別の変更を行うことができる。本開示の態様は、本明細書で一般的に説明され図面に示される通り、様々な異なる構成に配置され、置換され、結合され、分離され、かつ設計されることが可能であり、これらの全てが本明細書で明示されずに考慮されることが、容易に理解されよう。  
【００１４】
本開示は、分岐予測に関連する方法、装置、コンピュータプログラム、およびシステムに向けて描かれる。１つのそのようなシステムのある好適な実施形態が、図面において示され、以下で説明される。多くの別の実施形態も可能であるが、時間とスペースの制約のため、そうした実施形態の網羅的なリストを１つの文書に収めることはしない。したがって、特許請求の範囲内にある別の実施形態は、本特許の教示から当業者には明らかになろう。  
【００１５】
図は、図面において示される例の例示的な構成要素を指定するための番号を含む。その例示的な構成要素は、コンピュータシステム１００、プロセッサ１０１、システムバス１０２、オペレーティングシステム１０３、アプリケーション１０４、読み取り専用メモリ１０５、ランダムアクセスメモリ１０６、ディスクアダプタ１０７、ディスクユニット１０８、通信アダプタ１０９、ユーザーインターフェースアダプタ１１０、ディスプレイアダプタ１１１、キーボード１１２、マウス１１３、スピーカー１１４、ディスプレイモニタ１１５、コンピューティング環境２０１、アプリケーションプログラム２０２、命令データフロー２０３、コンパイラ２０４、分岐命令２０５、概略プレディケート経路情報２０６、第２の命令データフロー２０７、プロセッサ２１０、プロセッサコア２１１〜２１３、プレディケート予測器２１４〜２１６、プレディケート予測２２０、ブロック命令３０１〜３０３、ブロック開始アドレス３０４〜３０６、幾何履歴長予測器４００、コアローカル履歴レジスタ４０１、グローバル履歴レジスタ４０２、加算ブロック４０４、予測符号４０５、グローバル予測テーブル４０６〜４０９、信頼性予測テーブル４１０、カウンタ４１１、コアローカル予測テーブル４１２、コアローカルプレディケート履歴レジスタ６０１〜６０３、およびグローバル履歴レジスタ６０５を含む。  
【００１６】
図１は、いくつかの実施例により構成された、コンピューティングシステム１００のブロック図の概略図である。コンピュータシステム１００も、本開示の一実施例のためのハードウェア環境を代表するものである。例えば、コンピュータシステム１００は、システムバス１０２によって様々な別の構成要素に結合されるプロセッサ１０１を有してもよい。プロセッサ１０１は、本明細書の実施例によって構成された複数のプレディケート予測器２１４〜２１６を有する、ヘテロジニアス・マルチコアプロセッサであってよい。プロセッサ１０１のより詳細な説明は、図２に示される実施例の説明と関連して以下で与えられる。図１を参照すると、オペレーティングシステム１０３はプロセッサ１０１上で実行することができ、図１の様々な構成要素の機能を制御および調整する。本開示の実施例の原理によるアプリケーション１０４は、オペレーティングシステム１０３とともに実行して、オペレーティングシステム１０３に呼び出しおよび／または命令を提供することができ、呼び出し／命令は、アプリケーション１０４により実行される様々な機能またはサービスを実施する。  
【００１７】
図１を参照すると、読み取り専用メモリ（ＲＯＭ）１０５はシステムバス１０２に結合されてもよく、コンピュータ機器１００のある基本的な機能を制御できる基本入出力システム（ＢＩＯＳ）を含んでもよい。ランダムアクセスメモリ（ＲＡＭ）１０６およびディスクアダプタ１０７も、システムバス１０２に結合されてよい。オペレーティングシステム１０３およびアプリケーション１０４を含むソフトウェア構成要素は、ＲＡＭ１０６内にロードされてもよく、ＲＡＭ１０６は、実行のためのコンピュータシステム１００のメインメモリであってよいことに、留意されたい。ディスクアダプタ１０７が提供されてもよく、ディスクアダプタ１０７は、ＩＤＥ（ｉｎｔｅｇｒａｔｅｄ  ｄｒｉｖｅ  ｅｌｅｃｔｒｏｎｉｃｓ）またはＰＡＴＡ（ｐａｒａｌｌｅｌ  ａｄｖａｎｃｅｄ  ｔｅｃｈｎｏｌｏｇｙ  ａｔｔａｃｈｍｅｎｔ）アダプタ、ＳＡＴＡ（ｓｅｒｉａｌ  ａｄｖａｎｃｅｄ  ｔｅｃｈｎｏｌｏｇｙ  ａｔｔａｃｈｅｍｅｎｔ）アダプタ、ＳＣＳＩ（ｓｍａｌｌ  ｃｏｍｐｕｔｅｒ  ｓｙｓｔｅｍ  ｉｎｔｅｒｆａｃｅ）アダプタ、ユニバーサルシリアルバス（ＵＳＢ）アダプタ、ＩＥＥＥ  １３９４アダプタ、またはディスクドライブなどのディスクユニット１０８と通信する任意の他の適切なアダプタであってよい。  
【００１８】
図１を参照すると、コンピュータシステム１００は、バス１０２に結合された通信アダプタ１０９をさらに含んでもよい。通信アダプタ１０９は、バス１０２を外部ネットワーク（図示せず）と相互接続してもよく、それにより、コンピュータシステム１００が別の同様のおよび／または異なる機器と通信するのを容易にする。  
【００１９】
入力／出力（Ｉ／Ｏ）機器も、ユーザーインターフェースアダプタ１１０およびディスプレイアダプタ１１１を介して、コンピュータシステム１００に接続されてよい。例えば、キーボード１１２、マウス１１３、およびスピーカー１１４が、ユーザーインターフェースアダプタ１１０を通じて、バス１０２に相互接続されてもよい。これらの例示的な機器のいずれかを通じて、データがコンピュータシステム１００に提供され得る。ディスプレイモニタ１１５は、ディスプレイアダプタ１１１によってシステムバス１０２に接続されてもよい。この例示的な方式では、ユーザーはキーボード１１２および／またはマウス１１３を通じて、データまたは別の情報をコンピュータシステム１００に提供することができ、ディスプレイ１１５および／またはスピーカー１１４を介してコンピュータシステム１００から出力を得ることができる。  
【００２０】
本明細書で説明される本開示の実施例の様々な態様、特徴、実施形態または実装形態は、単独で、または様々な組合せで使用され得る。本開示の方法の実施例は、ソフトウェア、ハードウェア、またはハードウェアとソフトウェアの組合せ（例えば、コンピュータによってアクセス可能な媒体に記憶されるソフトウェア）によって実装され得る。  
【００２１】
本明細書で説明されるのは、分散型マルチコアマイクロアーキテクチャのためのプレディケート予測スキームの例であり、これはプロセッサ１０１上で実装することができ、例えば、ＥＤＧＥ（ｅｘｐｌｉｃｉｔ  ｄａｔａ  ｇｒａｐｈ  ｅｘｅｃｕｔｉｏｎ）マイクロアーキテクチャとともに使用されるようになされ得る。分散型スキームの例は、分岐命令において概略プレディケート経路情報をインテリジェントに符号化するコンパイラに依存し得る。この静的に生成された情報を用いて、分散型プレディケート予測器は、信頼性の高いプレディケートの正確な予測を容易にしつつコア間の通信を低減する、動的なプレディケート履歴を生成することができる。正確かつ効率的な分散型プレディケート予測スキームの例により、コンパイラが、例えばオーバーヘッド計算を軽減するプレディケート予測器によって、コードを積極的にプレディケートすることが容易になる。  
【００２２】
したがって、図２に示されるように、コンピューティング環境２０１がコンピュータシステム１００に設けられてよく、ソフトウェアアプリケーションプログラム２０２およびコンパイラ２０４を含んでもよい。アプリケーションプログラム２０２は命令データフロー２０３を生成することができ、命令データフロー２０３の一部または多くは、分岐命令であってよい。コンパイラ２０４は、概略プレディケート経路情報２０６によって、分岐命令２０５を符号化することができる。結果として得られる命令データ２０７は、実行のためにプロセッサ１０１、２１０に流れ得る。プロセッサ２１０は複数のプロセッサコア（簡単にするために、例えば３つのプロセッサコアがコア２１１〜２１３として図示される）を含んでもよく、複数のプロセッサコアの各々はプレディケート予測器２１４〜２１６の１つをそれぞれ含んでもよい。そして、これらの予測器２１４〜２１６は、コンパイラで符号化されたプレディケート経路情報２０６を用いて、信頼性の高いプレディケートの正確な予測を容易にする（ブロック２２０）。  
【００２３】
以下では、ＥＤＧＥ命令セットアーキテクチャ（ＩＳＡ）のさらなる説明が与えられる。しかし、本発明の実施例は別のＩＳＡとともに同様に使用され得ることを、理解されたい。ＥＤＧＥ  ＩＳＡは、２つの例示的な特徴、例えば、ブロックアトミック（block-atomic）実行（ブロックの命令の全てが実行を完了しコミットするか、ブロック命令のいずれもが実行を完了せずコミットしないかのいずれか）、および直接的な命令の伝達（ＩＳＡは命令中のブロック内の依存関係を符号化することができる）がある。この例示的なモデルを用いると、命令データフローのブロック、例えば命令データフロー２０３は、命令データフローが一貫性のある出力のセットを生成する場合に、その動作を完了することができる。例えば、実行の各期間について、ブロックは同じ数のレジスタにデータを書き込み、または提供することができ、ちょうど１つの分岐の出力を生成するのに加えて、同じ数の記憶されたデータを、ブロックヘッダ内で静的に符号化されたものとして生成することができる。命令は、レジスタおよびメモリ１０５、１０６を通じて、ブロック間で伝わり得る。  
【００２４】
命令は、命令のブロック内のインデックスに基づき、１つのプロセッサ１０１、２１０として収集された一部または全てのコアにわたって、インターリーブされ得る。プロセッサコアの構成が変化するとき、例えば、コアが別個の処理ユニットとして動作しているとき、それに応じてインターリーブ手順は変化することができ、これによりコアの１つまたは複数においてプロセッサがブロックを実行することが容易になり得る。各命令ブロックはプレディケートオペランドを有してもよく、これによりＥＤＧＥ  ＩＳＡを完全にプレディケートすることができる。データフロー実行モデル（例えば直接的なオペランドの伝達）を用いると、命令ブロックは、自身の全てのオペランドを受け取るときに実行されることが可能であり、命令ブロックがプレディケートされる場合は、対応するものがプレディケートする。  
【００２５】
一実施例によるアーキテクチャでは、命令の各ブロックは、接続されるまたは加わるコアを調整してそのようなブロックの実行を容易にする、特定のコア（例えば所有者コア（owner core））を有してもよい。例えば、所有者コアは、従来のアーキテクチャのプログラムカウンタと同様にまたは同等に、ブロック開始アドレスにより識別され得る。図３を見ると、命令の複数のブロック（例えば、簡単にするためにブロック３０１〜３０３として示されている３つのブロック）が提供され、各ブロックは、ブロック開始アドレス３０４〜３０６の１つをそれぞれ含む。そのようなアドレス３０４〜３０６は、適切な所有者コア２１１〜２１３を識別するために使用され得る。図３に示されるように、ブロック３０１は自身のアドレス３０４を通じてコア２１１と関連して（例えば、コア２１１に所有されて）もよく、ブロック３０２は自身のアドレス３０５を通じてコア２１３と関連してもよく、ブロック３０３は自身のアドレス３０６を通じてコア２１２と関連してもよい。それぞれの所有者コア２１１〜２１３は、フェッチ命令を送信し、次のブロックアドレスを予測して所有者であることを示すトークンを次のブロックアドレスに渡し、完了情報（例えばレジスタの書き込み、記憶、終了／分岐アドレスなどを含む）を集め、コミットを送信または（１つまたは複数の）コマンドをフラッシュし、最終的にコミットの肯定応答を得るという役割を担い得る。  
【００２６】
さらに、それぞれの所有者コア２１１〜２１３のうちの１つまたは複数は、次のブロックアドレスを予測しやすくすることができる。コア２１１〜２１３のそれぞれは、完全な機能ブロック予測器２１４〜２１６の１つをそれぞれ含んでもよく、予測器は複数のコアについて同一であっても、互いに異なっていてもよい。ブロック予測器２１４〜２１６の次の１つは、どの分岐がブロックから取り出されるかを予測できる終了予測器と、予測される終了目標に基づいてブロック２１４〜２１６の次の１つのアドレスを予測できる、予測器２１４〜２１６のうち、関連する目標となる予測器とを含んでもよい。図４を参照すると、予測器２１４〜２１６の終了予測器は、２レベルのローカル予測器、グローバル予測器、および／または選択予測器を含んでもよく、これらは、ローカル終了履歴４０１およびグローバル終了履歴４０２を使用できる。終了履歴４０１、４０２は、それぞれのブロックの各分岐命令に対して静的に割り当てられた、概略プレディケート経路情報２０６を用いて、コア２１１〜２１３から生成され得る。概略プレディケート経路情報２０６は、分岐命令に符号化されることが可能であり、特定のブロックの具体的な分岐を識別することができる。コンパイラ２０４は、最初は、それぞれのブロックの分岐命令の順序に基づいて、概略プレディケーション経路情報２０６を割り当ててもよい。コア２１１〜２１３は、終了を用いて、（従来のアーキテクチャで使用され得るような）取得された／取得されていない情報の代わりに、関連する予測器の中でローカル履歴およびグローバル履歴を生成することができる。  
【００２７】
コア２１１〜２１３の各々は、コアにマッピングされたプレディケート命令の出力を予測することができるプレディケート予測構成によって増強され得る。基本予測器とグローバル履歴レジスタとを含み得る、グローバル履歴に基づく予測器が、各コアで使用され得る。そのようなグローバル履歴予測器は、コア２１１〜２１３の各々の中で更新されるグローバル履歴情報を維持し、同時にコア２１１〜２１３の間での通信を減らそうとしてもよい。まず図４を参照すると、一実施例では、幾何履歴長（ＧＥＨＬ：geometric history length）予測器４００は、分散型プレディケート予測を実行するための基本予測器として使用され得る。ＧＥＨＬ予測器４００は、グローバル分岐履歴レジスタ４０２および分岐アドレス（例えばコアローカル履歴レジスタ４０１）の独立の機能によってインデックスを与えられる、いくつかの予測テーブル４０６〜４０９を含んでもよい。予測は、テーブル４０６〜４０９から取り出された値、ならびにコアローカル履歴レジスタ４０１に関連するコアローカル予測テーブル４１２からの値にわたる加算４０４の符号４０５に基づいてよい。本実施例では、記憶の大部分が、最近の分岐履歴の相互関係を得るために使用され得るが、依然として、一定の古い分岐との相互関係を得ることも容易にする。  
【００２８】
ここでグローバルプレディケート履歴情報を見ると、いくつかの適切な実施例が与えられ得る。ある実施例は高い正確性を実現することができ、同時にコア２１１〜２１３の間の通信を低減する。図６ａを参照すると、そのような実施例の１つでは、コアローカルプレディケート履歴レジスタ（ＣＬＰＨＲ）６００が使用され得る。したがって、例えば、予測器は、別のコアと何ら情報を通信することなく、コア内のみで使用可能な情報を用いるだけで、提供され得る。本実施例では、コア２１１〜２１３の各々は、そのようなコアにマッピングされるプレディケート命令を追跡できる、自身に固有の唯一のグローバル履歴レジスタ６０１〜６０３を有してよい。そして、コンパイラ２０４は、従属命令をそのコアにマッピングしようとしてもよい。その結果、従属プレディケート命令は同一のコアにマッピングされることが可能であり、これにより、ＣＬＰＨＲ６００がそれらの命令の間の相互関係を利用しやすくなり得る。  
【００２９】
図６ｂを参照すると、別の実施例では、グローバルブロック履歴レジスタ（ＧＢＨＲ）６０５が提供され得る。分散型の終了予測器がブロックの終了コードを予測すると、そのような終了予測器は、終了予測番号またはコードを連結させることもでき、したがってＧＢＨＲ６０５を生成する。本実施例では、コンパイラ２０４は、各ブロック内の分岐命令に、プログラム内での分岐命令の順序にしたがって、３ビットの終了コードを割り当てることができる。したがって、ＧＢＨＲ６０５は、グローバル履歴情報として使用され得る。ブロック内のプレディケートからの情報を何ら使用することなく、終了予測器とプレディケート予測器の両方が同一の履歴情報を共有することができ、これにより、追加の通信機構の必要性を減らす、またはなくすことができる。  
【００３０】
ＣＬＰＨＲ６００およびＧＢＨＲ６０５の実施例は、任意の適切な方式で組み合わせることができる。例えば、ＧＢＨＲ６０５は、メインのグローバル履歴レジスタではなく、ＣＬＰＨＲによってインデックスが与えられ得る別のテーブルを追加することによって、増強され得る。このテーブルから取り出される予測は、加算器ツリーによって、ＧＥＨＬテーブルから取り出される予測と結合され得る。  
【００３１】
図４を再び参照すると、いくつかの実施例では、プレディケート予測の正確性を推定するように構成され得る、信頼性予測テーブル４１０が提供され得る。したがって、信頼性推定テーブル４１０は、予測器が、予測の難しいプレディケート（例えば信頼性の低いプレディケート）を「除去する」ことを容易にし得る。信頼性予測テーブル４１０のエントリはカウンタ、例えばカウンタ４１１をリセットしていてもよく、カウンタは、分岐における正しい連続的な予測の数を計数することができる。例えば、誤った予測が発生すると、カウンタ４１１は０にリセットされ得る。プレディケートは、対応するカウンタの値がある閾値よりも高い場合、予測されるように選択され得る。いくつかの実施例では、信頼性テーブルのエントリ（例えばカウンタ４１１）は、より少数のコアで構成するために信頼性の高い閾値をサポートすることができる、３ビットのリセットカウンタであってよい。  
【００３２】
本発明の方法の実施例が図５として示されている。コンピュータシステム１００はプロセッサ１０１を含んでもよく、プロセッサ１０１は実行されると、以下の手順を実行するように構成され得る。具体的には、プロセッサ１０１は、コンパイラ２０４に、概略プレディケート経路情報を用いて分岐命令を符号化させることができる（手順５０１）。次に、結果として得られる命令データが、実行のためにプロセッサ１０１に提供され得る（手順５０２）。次いで、各プロセッサコアと関連するこれらの予測器は、コンパイラで符号化された経路情報を使用して、信頼性の高いプレディケートの正確な予測を容易にすることができる（手順５０３）。  
【００３３】
いくつかの実施例に開示されているのは、複数のプロセッサコアを含むマルチコアプロセッサを含むコンピューティングシステムであり、コアの各々は少なくとも１つのプレディケート予測器を含み、プレディケート予測器はプレディケート予測を生成する。いくつかの実施例では、コンピューティングシステムは、符号化されたプレディケート経路情報を有する１つまたは複数の分岐命令を含む、アプリケーションプログラムをさらに含んでもよい。別の実施例では、プレディケート経路情報を符号化することは、コンパイラによって実現される。別の様々な実施例においては、１つまたは複数の分岐命令の各々のブロックアドレスによって、マルチコアプロセッサのどのプロセッサコアがそれぞれの分岐命令を実行するのかが決定される。他の実施例では、マルチコアプロセッサは、エクスプリジット・データ・グラフ・エグゼキューション・マイクロアーキテクチャを含む。さらに他の実施例では、１つまたは複数のプレディケート予測器は、基本予測器およびグローバル履歴レジスタを含む。別の実施例では、基本予測器は、幾何履歴長予測器である。一方いくつかの実施例では、グローバル履歴レジスタは、コアローカルプレディケート履歴レジスタである。他の実施例では、グローバル履歴レジスタは、グローバブロック履歴レジスタである。さらに他の実施例では、グローバル履歴レジスタは、コアローカルプレディケート履歴レジスタおよびグローバルブロック履歴レジスタを含む。さらに別の実施例では、コンピューティングシステムは、信頼性予測テーブルをさらに含む。  
【００３４】
他の実施例で開示されているのは、マルチコアプロセッサの複数のプロセッサコアを介して１つまたは複数の分岐命令を提供することを含む、マルチコアプロセッサ内でプレディケート予測を提供し、プレディケート予測器を用いてプレディケート予測を生成するための方法であって、プロセッサコアの各々は少なくとも１つのプレディケート予測器を含む。いくつかの実施例では、方法は、１つまたは複数の分岐命令内の概略プレディケート経路情報を符号化することを、さらに含んでもよい。別の例では、プレディケート経路情報の符号化は、コンパイラによって実行される。さらなる実施例では、方法は、どのプロセッサコアが１つまたは複数の分岐命令の各々のブロックアドレスを用いて分岐命令を実行するかを決定することを、さらに含む。一方別の実施例では、１つまたは複数のプレディケート予測器は、基本予測器およびグローバル履歴レジスタを含む。さらに別の実施例では、基本予測器は、幾何履歴長予測器である。さらに別の実施例では、グローバル履歴レジスタは、コアローカルプレディケート履歴レジスタである。様々な別の実施例では、グローバル履歴レジスタは、グローバルブロック履歴レジスタである。  
【００３５】
さらに別の実施例で開示されているのは、マルチコアプロセッサコンピューティングシステム内でプレディケート予測を提供するためのコンピュータ実行可能命令が記憶されている、コンピュータによってアクセス可能な媒体であって、処理構成が、命令を実行するときに、１つまたは複数の分岐命令内の概略プレディケート経路情報を符号化することを含む手順を実行するように構成され、マルチコアプロセッサの１つまたは複数のプロセッサコア上の１つまたは複数の分岐命令を実行し、１つまたは複数のプロセッサコアの各々は、１つまたは複数のプレディケート予測器を含み、処理構成はさらに、１つまたは複数のプレディケート予測器を用いてプレディケート予測を生成する。  
【００３６】
本開示は、本出願で説明される特定の実施例に関して限定されるべきではなく、実施例は様々な態様の例示であることを意図している。当業者には明らかなように、多くの修正および実施例が、本発明の趣旨および範囲から逸脱することなくなされ得る。本開示の範囲内にある機能的に等価な方法および装置が、本明細書で列挙されたものに加えて、前述の説明から当業者には明らかになろう。そのような修正および実施例は、添付の特許請求の範囲内となることが意図される。本開示は、添付の特許請求の範囲とともに、そのような請求が権利を有する等価物の完全な範囲に関してのみ限定されるべきである。本開示は、特定の方法、試薬、化合物組成、または生体システムに限定されず、これらは当然変化し得ることを理解されたい。本明細書で使用される用語は、特定の実施例を説明するためだけのものであり、限定することを意図していないことも理解されたい。  
【００３７】
本明細書における実質的にあらゆる複数形および／または単数形の用語の使用に関して、当業者は、状況および／または用途に適切となるように、複数形から単数形に、かつ／または単数形から複数形に変換することができる。本明細書では、明瞭さのために、様々な単数形／複数形の置換が明示的に行われることがある。  
【００３８】
全般的に、本明細書、特に添付の特許請求の範囲（例えば添付の特許請求の範囲の主部）で使用される用語は、一般に「オープン」な用語（例えば、用語「含んでいる（ｉｎｃｌｕｄｉｎｇ）」は「含んでいるが限定されない」と解釈されるべきであり、用語「有している（ｈａｖｉｎｇ）」は「少なくとも有している」と解釈されるべきであり、用語「含む（ｉｎｃｌｕｄｅｓ）」は「含むが限定されない」と解釈されるべきであるなど）であることが意図されることを、当業者は理解するであろう。導入される請求項の記述において具体的な数が意図される場合、そのような意図は請求項中に明確に記載され、そのような記載がない場合は、そのような意図も存在しないことが当業者にはさらに理解されるであろう。例えば、理解を促すために、以下の添付の特許請求の範囲では、導入句「少なくとも１つの」および「１つまたは複数の」を使用し、請求項の記述を導入することがある。しかし、そのような句の使用は、たとえ同一の請求項中に導入句「１つ以上の」または「少なくとも１つの」および「ａ」または「ａｎ」のような不定冠詞が含まれる場合でも、不定冠詞「ａ」または「ａｎ」による請求項の記述の導入が、そのように導入された請求項の記述を含む任意の特定の請求項を、そのような記述を１つのみ含む例に限定するということを示唆するものと解釈されるべきではない（例えば、「ａ」および／または「ａｎ」は、「少なくとも１つの」または「１つまたは複数の」を意味すると解釈されるべきである）。定冠詞を使用して請求項の記述を導入する場合にも同様のことが当てはまる。さらに、導入された請求項の記述において具体的な数が明示的に記載されている場合であっても、そのような記載は、最小でも記載された数であるという意味で解釈されるべきであることを、当業者は理解するであろう（例えば、他に修飾語のない、単なる「２つの記載事項」という記載は、少なくとも２つの記載事項、または２つ以上の記載事項を意味する）。さらに、「Ａ、ＢおよびＣなどのうち少なくとも１つ」に類する表記が使用される場合、一般的に、そのような構造は、当業者がその表記を理解するであろう意味を意図している（例えば、「Ａ、ＢおよびＣのうち少なくとも１つを有するシステム」は、Ａのみ、Ｂのみ、Ｃのみ、ＡとＢの両方、ＡとＣの両方、ＢとＣの両方、および／またはＡとＢとＣの全て、などを有するシステムを含むがこれらには限定されない）。「Ａ、ＢまたはＣなどのうち少なくとも１つ」に類する表記が使用される場合、一般的に、そのような構造は、当業者がその表記を理解するであろう意味を意図している（例えば、「Ａ、ＢまたはＣのうち少なくとも１つを有するシステム」は、Ａのみ、Ｂのみ、Ｃのみ、ＡとＢの両方、ＡとＣの両方、ＢとＣの両方、および／またはＡとＢとＣの全て、などを有するシステムを含むがこれらには限定されない）。さらに、２つ以上の選択可能な用語を表す実質的にあらゆる離接語および／または離接句は、説明文内、特許請求の範囲内、または図面内のどこであっても、用語のうちの１つ、用語のうちのいずれか、または用語の両方を含む可能性を考慮すると理解されるべきであることが、当業者には理解されるであろう。例えば、「ＡまたはＢ」という句は、「ＡまたはＢ」または「ＡおよびＢ」の可能性を含むことが理解されよう。  
【００３９】
さらに、本開示の特徴または態様がマーカッシュグループに関して記述される場合、その結果として、本開示を、任意の個別の要素またはマーカッシュグループの要素のサブグループに関して記述することもできることを、当業者は理解するであろう。  
【００４０】
当業者によって理解されるように、あらゆる全ての目的のために、例えば書面による説明を提供するために、本明細書で開示される全ての範囲は、全ての可能な部分的な範囲および部分的な範囲の組合せも網羅する。あらゆる記載された範囲は、少なくとも２等分、３等分、４等分、５等分、１０等分などされた同じ範囲を十分に説明し、可能にするものと容易に理解され得る。非限定的な例として、本明細書で議論される各範囲は、下側３分の１、真中３分の１、上側３分の１などに容易に分割され得る。当業者によってやはり理解されるように、「まで」、「少なくとも」、「より大きい」、「より少ない」などのような全ての表現は、記載された数を含み、続いて上記の部分的な範囲に分割され得る範囲を指す。最後に、当業者によって理解されるように、範囲は各々の個別の要素を含む。したがって、例えば、１〜３個のセルまたはコアを有するグループは、１個、２個、または３個のセルもしくはコアを有するグループを指す。同様に、１〜５個のセルまたはコアを有するグループは、１個、２個、３個、４個、または５個のセルもしくはコアを有するグループを指し、他も同様である。  
【００４１】
様々な態様および実施例が本明細書で開示されてきたが、当業者には別の態様および実施例が明らかになろう。本明細書で開示される様々な態様および実施例は、例示のみを目的としており、限定することを意図しておらず、真の範囲および趣旨は以下の特許請求の範囲で示される。
【図１】
2014142969.tif 000003
【図２】
2014142969.tif 000004
【図３】
2014142969.tif 000005
【図４】
2014142969.tif 000006
【図５】
2014142969.tif 000007
【図６ａ】
2014142969.tif 000008
【図６ｂ】
2014142969.tif 000009
【手続補正書】
【提出日】平成26年5月7日(2014.5.7)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のプロセッサコアを含むマルチコアプロセッサを備えるコンピューティングシステムであって、
前記複数のプロセッサコアの少なくともいくつかがプレディケート予測器を備え、
少なくとも１つのプレディケート予測器が、前記複数のプロセッサコアのうちの対応するプロセッサコアにマッピングされたプレディケート命令の出力を予測するように構成され、
前記プレディケート命令は、命令ブロックに含まれる分岐命令から生成され、
前記命令ブロックは、前記複数のプロセッサコアのうちのどのプロセッサコアが前記分岐命令を実行するのに割り当てられるかを決定するブロックアドレスを含み、
前記予測は、前記分岐命令内に符号化された情報に基づき、
前記分岐命令内に符号化された前記情報は、概略プレディケート経路を表し、
前記少なくとも１つのプレディケート予測器が、予測が正しく連続的に行われた数を示す信頼性予測情報を保持し、前記信頼性予測情報に基づいて、対応するプレディケート命令の出力を予測すべきかを決定するように構成される、
コンピューティングシステム。
【請求項２】
前記複数のプロセッサコアの少なくとも１つのプロセッサコアが、前記分岐命令を備えるアプリケーションプログラムを実行するように構成される、請求項１に記載のコンピューティングシステム。
【請求項３】
コンパイラの実行により、前記分岐命令に前記情報が符号化される、請求項１に記載のコンピューティングシステム。
【請求項４】
前記マルチコアプロセッサが、エクスプリジット・データ・グラフ・エグゼキューション（ｅｘｐｌｉｃｉｔ  ｄａｔａ  ｇｒａｐｈ  ｅｘｅｃｕｔｉｏｎ）マイクロアーキテクチャを備える、請求項１に記載のコンピューティングシステム。
【請求項５】
前記少なくとも１つのプレディケート予測器が、基本予測器およびグローバル履歴レジスタを備え、前記予測は、前記基本予測器および前記グローバル履歴レジスタにさらに基づく、請求項１に記載のコンピューティングシステム。
【請求項６】
前記グローバル履歴レジスタが、コアローカルプレディケート履歴レジスタを備え、前記コアローカルプレディケート履歴レジスタは、前記対応するプロセッサコアの前記プレディケート予測器に関するデータを記憶するように構成される、請求項５に記載のコンピューティングシステム。
【請求項７】
前記グローバル履歴レジスタが、グローバルブロック履歴レジスタを備え、前記グローバルブロック履歴レジスタは、複数の命令ブロックに関する複数のエントリを記憶するように構成され、前記複数のエントリの少なくともいくつかは、関連する分岐命令に対応する予測された終了コードを含む、請求項５に記載のコンピューティングシステム。
【請求項８】
前記グローバル履歴レジスタが、
前記対応するプロセッサコアの前記プレディケート予測器に関するデータを記憶するように構成されるコアローカルプレディケート履歴レジスタと、
複数の命令ブロックに関する複数のエントリを記憶するように構成されるグローバルブロック履歴レジスタとを備え、
前記複数のエントリの少なくともいくつかは、関連する分岐命令に対応する予測された終了コードを含む、請求項５に記載のコンピューティングシステム。
【請求項９】
マルチコアプロセッサ内の複数のプロセッサコアの少なくともいくつかに対してプレディケート予測器を使用することと、
前記複数のプロセッサコアのうちの対応するプロセッサコアにマッピングされたプレディケート命令の出力を予測することと、
を含み、
少なくとも１つのプレディケート予測器が、基本予測器およびグローバル履歴レジスタを含み、前記グローバル履歴レジスタが、複数の命令ブロックに関する複数のエントリを記憶するように構成されるグローバルブロック履歴レジスタを含み、前記複数のエントリの少なくともいくつかは、関連する分岐命令に対応する予測された終了コードを含み、
前記プレディケート命令は、分岐命令から生成され、前記プレディケート命令の前記出力を予測することは、前記分岐命令内に符号化された情報に基づき、前記プレディケート命令の前記出力を予測することは、前記基本予測器および前記グローバル履歴レジスタにさらに基づき、前記分岐命令内に符号化された前記情報は、概略プレディケート経路を表し、
前記少なくとも１つのプレディケート予測器が、予測が正しく連続的に行われた数を示す信頼性予測情報を保持し、前記信頼性予測情報に基づいて、対応するプレディケート命令の出力を予測すべきかを決定する、
マルチコアプロセッサ内でプレディケート予測を提供する方法。
【請求項１０】
前記複数のプロセッサコアの少なくとも１つのプロセッサコアによってアプリケーションプログラムを実行することをさらに含み、前記アプリケーションプログラムが、前記分岐命令を含む、請求項９に記載の方法。
【請求項１１】
コンパイラを用いて、前記分岐命令に前記情報を符号化することをさらに含む、請求項９に記載の方法。
【請求項１２】
前記分岐命令は、命令ブロックに含まれ、前記命令ブロックは、ブロックアドレスを含み、前記ブロックアドレスを用いて、どのプロセッサコアが前記分岐命令を実行するかを決定することをさらに含む、請求項１０に記載の方法。
【請求項１３】
マルチコアプロセッサコンピューティングシステム内でプレディケート予測を提供するためのコンピュータ実行可能命令が記憶された、コンピュータによってアクセス可能な媒体であって、処理構成が、前記処理構成による前記コンピュータ実行可能命令の実行に応じて処理手順を実行するように構成され、前記処理手順が、
マルチコアプロセッサの複数のプロセッサコアの少なくともいくつかに対してプレディケート予測器を使用することであって、前記プロセッサコアの少なくともいくつかが少なくとも１つのプレディケート予測器を備える、使用することと、
前記複数のプロセッサコアのうちの対応するプロセッサコアにマッピングされたプレディケート命令の出力を予測することと、
を含み、前記プレディケート命令は、命令ブロックに含まれる分岐命令から生成され、前記プレディケート命令の前記出力を予測することは、前記分岐命令内に符号化された情報に基づき、前記命令ブロックは、前記複数のプロセッサコアのうちのどのプロセッサコアが前記分岐命令を実行するのに割り当てられるかを決定するブロックアドレスを含み、前記分岐命令内に符号化された前記情報は、概略プレディケート経路を表し、
前記少なくとも１つのプレディケート予測器が、予測が正しく連続的に行われた数を示す信頼性予測情報を保持し、前記信頼性予測情報に基づいて、対応するプレディケート命令の出力を予測すべきかを決定する、
コンピュータによってアクセス可能な媒体。
【請求項１４】
複数のプロセッサコアを含むマルチコアプロセッサを備えるコンピューティングシステムであって、
前記複数のプロセッサコアの少なくともいくつかがプレディケート予測器を備え、
少なくとも１つのプレディケート予測器が、前記複数のプロセッサコアのうちの対応するプロセッサコアにマッピングされたプレディケート命令の出力を予測するように構成され、
前記少なくとも１つのプレディケート予測器が、基本予測器およびグローバル履歴レジスタを備え、
前記グローバル履歴レジスタが、前記対応するプロセッサコアの前記プレディケート予測器に関するデータを記憶するように構成されるコアローカルプレディケート履歴レジスタと、複数の命令ブロックに関する複数のエントリを記憶するように構成されるグローバルブロック履歴レジスタとを備え、
前記複数のエントリの少なくともいくつかは、関連する分岐命令に対応する予測された終了コードを含み、
前記プレディケート命令は、分岐命令から生成され、
前記予測は、前記分岐命令内に符号化された情報に基づき、
前記予測は、前記基本予測器および前記グローバル履歴レジスタにさらに基づき、
前記情報は、概略プレディケート経路を表し、
前記少なくとも１つのプレディケート予測器が、予測が正しく連続的に行われた数を示す信頼性予測情報を保持し、前記信頼性予測情報に基づいて、対応するプレディケート命令の出力を予測すべきかを決定するように構成される、
コンピューティングシステム。
【請求項１５】
マルチコアプロセッサ内の複数のプロセッサコアの少なくともいくつかに対してプレディケート予測器を使用することと、
前記複数のプロセッサコアのうちの対応するプロセッサコアにマッピングされたプレディケート命令の出力を予測することと、
を含み、
前記プレディケート命令は、命令ブロックに含まれる分岐命令から生成され、前記命令ブロックは、前記複数のプロセッサコアのうちのどのプロセッサコアが前記分岐命令を実行するのに割り当てられるかを決定するブロックアドレスを含み、前記プレディケート命令の前記出力を予測することは、前記分岐命令内に符号化された情報に基づき、前記分岐命令内に符号化された前記情報は、概略プレディケート経路を表し、
前記プレディケート予測器が、前記予測が正しく連続的に行われた数を示す信頼性予測情報を保持し、前記信頼性予測情報に基づいて、対応するプレディケート命令の出力を予測すべきかを決定する、
マルチコアプロセッサ内でプレディケート予測を提供する方法。
【外国語明細書】
2014142969000001.pdf