(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5747104
(24)【登録日】2015年5月15日
(45)【発行日】2015年7月8日
(54)【発明の名称】分散型プレディケート予測を実現するための方法、システム、およびコンピュータによってアクセス可能な媒体
(51)【国際特許分類】
G06F 9/38 20060101AFI20150618BHJP
G06F 9/32 20060101ALI20150618BHJP
【FI】
G06F9/38 330D
G06F9/38 370X
G06F9/38 330B
G06F9/32 320F
【請求項の数】12
【外国語出願】
【全頁数】15
(21)【出願番号】特願2014-95690(P2014-95690)
(22)【出願日】2014年5月7日
(62)【分割の表示】特願2012-522834(P2012-522834)の分割
【原出願日】2010年6月11日
(65)【公開番号】特開2014-142969(P2014-142969A)
(43)【公開日】2014年8月7日
【審査請求日】2014年5月7日
(31)【優先権主張番号】12/556,440
(32)【優先日】2009年9月9日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】512021656
【氏名又は名称】ボード オブ リージエンツ,ユニバーシテイ オブ テキサス システム
(74)【代理人】
【識別番号】100079108
【弁理士】
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【弁理士】
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【弁理士】
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【弁理士】
【氏名又は名称】内藤 和彦
(74)【代理人】
【識別番号】100109586
【弁理士】
【氏名又は名称】土屋 徹雄
(72)【発明者】
【氏名】バーガー,ダグ
(72)【発明者】
【氏名】ケックラー,ステファン,ダブリュー.
(72)【発明者】
【氏名】エスマエイルザデー,ハーディ
【審査官】
三坂 敏夫
(56)【参考文献】
【文献】
米国特許出願公開第2005/0216714(US,A1)
【文献】
米国特許出願公開第2002/0174326(US,A1)
【文献】
米国特許出願公開第2001/0032308(US,A1)
【文献】
Nitya RANGANATHAN et al.,"Analysis of the TRIPS Prototype Block Predictor",ISPASS 2009. IEEE International Symposium on Performance Analysis of Systems and Software, 2009.,米国,IEEE,2009年 4月28日,Pages:195-206
【文献】
Doug BURGER et al.,"Scaling to the End ofSilicon with EDGE Architectures",Computer,米国,IEEE,2004年 7月,Volume:37,Issue:7,Pages:44-55
【文献】
Karthkeyan SANKARALINGAM et al.,"Distributed Microarchitectural Protocols in the TRIPS Prototype Processor",MICRO-39. 39th Annual IEEE/ACM International Symposium on Microarchitecture, 2006.,米国,IEEE,2006年12月13日,Pages:480-491
【文献】
古関 聰 他,「拡張VLIWプロセッサGIFTにおけるブランチハンドリング機構」,情報処理学会論文誌,日本,社団法人情報処理学会,1997年12月15日,第38巻 第12号,2576頁〜2587頁
【文献】
Aaron SMITH et al.,"Compiling for EDGE Architectures",CGO 2006. International Symposium on Code Generation and Optimization, 2006.,米国,IEEE,2006年 3月29日,pages:1-11
【文献】
Aaron SMITH et al.,"Dataflow Predication",MICRO-39. 39th Annual IEEE/ACM International Symposium on Microarchitecture, 2006.,米国,IEEE,2006年12月,Pages:89-102
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/38
G06F 9/32
(57)【特許請求の範囲】
【請求項1】
複数のプロセッサコアを含むマルチコアプロセッサを備えるコンピューティングシステムであって、
前記複数のプロセッサコアの少なくともいくつかがプレディケート予測器を備え、
少なくとも1つのプレディケート予測器が、前記複数のプロセッサコアのうちの対応するプロセッサコアにマッピングされたプレディケート命令の出力を予測するように構成され、
コンパイラが、分岐命令とプレディケート命令が混在した命令ブロックを生成し、
前記命令ブロックは、前記複数のプロセッサコアのうちのどのプロセッサコアが前記分岐命令を実行するのに割り当てられるかを決定するブロックアドレスを含み、
前記予測は、前記分岐命令内に符号化された情報に基づき、
前記分岐命令内に符号化された前記情報は、出口コードを表し、
前記少なくとも1つのプレディケート予測器が、予測が正しく連続的に行われた数を示す信頼性予測情報を保持し、前記信頼性予測情報に基づいて、対応するプレディケート命令の出力を予測すべきかを決定するように構成され、
前記少なくとも1つのプレディケート予測器が、基本予測器およびグローバル履歴レジスタを備え、前記予測は、前記基本予測器および前記グローバル履歴レジスタにさらに基づき、
前記グローバル履歴レジスタが、コアローカルプレディケート履歴レジスタを備え、前記コアローカルプレディケート履歴レジスタは、前記対応するプロセッサコアの前記プレディケート予測器に関するデータを記憶するように構成される、
コンピューティングシステム。
【請求項2】
前記複数のプロセッサコアの少なくとも1つのプロセッサコアが、前記分岐命令を備えるアプリケーションプログラムを実行するように構成される、請求項1に記載のコンピューティングシステム。
【請求項3】
前記コンパイラの実行により、前記分岐命令に前記情報が符号化される、請求項1に記載のコンピューティングシステム。
【請求項4】
前記マルチコアプロセッサが、エクスプリシット・データ・グラフ・エグゼキューション(explicit data graph execution)マイクロアーキテクチャを備える、請求項1に記載のコンピューティングシステム。
【請求項5】
前記グローバル履歴レジスタが、グローバルブロック履歴レジスタを備え、前記グローバルブロック履歴レジスタは、複数の命令ブロックに関する複数のエントリを記憶するように構成され、前記複数のエントリの少なくともいくつかは、関連する分岐命令に対応する予測された出口コードを含む、請求項1に記載のコンピューティングシステム。
【請求項6】
マルチコアプロセッサ内の複数のプロセッサコアの少なくともいくつかに対してプレディケート予測器を使用することと、
前記複数のプロセッサコアのうちの対応するプロセッサコアにマッピングされたプレディケート命令の出力を予測することと、
を含み、
少なくとも1つのプレディケート予測器が、基本予測器およびグローバル履歴レジスタを含み、前記グローバル履歴レジスタが、複数の命令ブロックに関する複数のエントリを記憶するように構成されるグローバルブロック履歴レジスタを含み、前記複数のエントリの少なくともいくつかは、関連する分岐命令に対応する予測された出口コードを含み、
コンパイラが、分岐命令とプレディケート命令が混在した命令ブロックを生成し、前記プレディケート命令の前記出力を予測することは、前記分岐命令内に符号化された情報に基づき、前記プレディケート命令の前記出力を予測することは、前記基本予測器および前記グローバル履歴レジスタにさらに基づき、前記分岐命令内に符号化された前記情報は、出口コードを表し、
前記少なくとも1つのプレディケート予測器が、予測が正しく連続的に行われた数を示す信頼性予測情報を保持し、前記信頼性予測情報に基づいて、対応するプレディケート命令の出力を予測すべきかを決定し、
前記グローバル履歴レジスタが、コアローカルプレディケート履歴レジスタを備え、前記コアローカルプレディケート履歴レジスタは、前記対応するプロセッサコアの前記プレディケート予測器に関するデータを記憶するように構成される、
マルチコアプロセッサ内でプレディケート予測を提供する方法。
【請求項7】
前記複数のプロセッサコアの少なくとも1つのプロセッサコアによってアプリケーションプログラムを実行することをさらに含み、前記アプリケーションプログラムが、前記分岐命令を含む、請求項6に記載の方法。
【請求項8】
コンパイラを用いて、前記分岐命令に前記情報を符号化することをさらに含む、請求項6に記載の方法。
【請求項9】
前記命令ブロックは、ブロックアドレスを含み、前記ブロックアドレスを用いて、どのプロセッサコアが前記分岐命令を実行するかを決定することをさらに含む、請求項7に記載の方法。
【請求項10】
マルチコアプロセッサコンピューティングシステム内でプレディケート予測を提供するためのコンピュータ実行可能命令が記憶された、コンピュータによってアクセス可能な媒体であって、処理構成が、前記処理構成による前記コンピュータ実行可能命令の実行に応じて処理手順を実行するように構成され、前記処理手順が、
マルチコアプロセッサの複数のプロセッサコアの少なくともいくつかに対してプレディケート予測器を使用することであって、前記プロセッサコアの少なくともいくつかが少なくとも1つのプレディケート予測器を備える、使用することと、
前記複数のプロセッサコアのうちの対応するプロセッサコアにマッピングされたプレディケート命令の出力を予測することと、
を含み、コンパイラが、分岐命令とプレディケート命令が混在した命令ブロックを生成し、前記プレディケート命令の前記出力を予測することは、前記分岐命令内に符号化された情報に基づき、前記命令ブロックは、前記複数のプロセッサコアのうちのどのプロセッサコアが前記分岐命令を実行するのに割り当てられるかを決定するブロックアドレスを含み、前記分岐命令内に符号化された前記情報は、出口コードを表し、
前記少なくとも1つのプレディケート予測器が、予測が正しく連続的に行われた数を示す信頼性予測情報を保持し、前記信頼性予測情報に基づいて、対応するプレディケート命令の出力を予測すべきかを決定し、
前記少なくとも1つのプレディケート予測器が、基本予測器およびグローバル履歴レジスタを備え、前記予測は、前記基本予測器および前記グローバル履歴レジスタにさらに基づき、
前記グローバル履歴レジスタが、コアローカルプレディケート履歴レジスタを備え、前記コアローカルプレディケート履歴レジスタは、前記対応するプロセッサコアの前記プレディケート予測器に関するデータを記憶するように構成される、
コンピュータによってアクセス可能な媒体。
【請求項11】
複数のプロセッサコアを含むマルチコアプロセッサを備えるコンピューティングシステムであって、
前記複数のプロセッサコアの少なくともいくつかがプレディケート予測器を備え、
少なくとも1つのプレディケート予測器が、前記複数のプロセッサコアのうちの対応するプロセッサコアにマッピングされたプレディケート命令の出力を予測するように構成され、
前記少なくとも1つのプレディケート予測器が、基本予測器およびグローバル履歴レジスタを備え、
前記グローバル履歴レジスタが、前記対応するプロセッサコアの前記プレディケート予測器に関するデータを記憶するように構成されるコアローカルプレディケート履歴レジスタと、複数の命令ブロックに関する複数のエントリを記憶するように構成されるグローバルブロック履歴レジスタとを備え、
前記複数のエントリの少なくともいくつかは、関連する分岐命令に対応する予測された出口コードを含み、
コンパイラが、分岐命令とプレディケート命令が混在した命令ブロックを生成し、
前記予測は、前記分岐命令内に符号化された情報に基づき、
前記予測は、前記基本予測器および前記グローバル履歴レジスタにさらに基づき、
前記情報は、出口コードを表し、
前記少なくとも1つのプレディケート予測器が、予測が正しく連続的に行われた数を示す信頼性予測情報を保持し、前記信頼性予測情報に基づいて、対応するプレディケート命令の出力を予測すべきかを決定するように構成される、
コンピューティングシステム。
【請求項12】
マルチコアプロセッサ内の複数のプロセッサコアの少なくともいくつかに対してプレディケート予測器を使用することと、
前記複数のプロセッサコアのうちの対応するプロセッサコアにマッピングされたプレディケート命令の出力を予測することと、
を含み、
コンパイラが、分岐命令とプレディケート命令が混在した命令ブロックを生成し、前記命令ブロックは、前記複数のプロセッサコアのうちのどのプロセッサコアが前記分岐命令を実行するのに割り当てられるかを決定するブロックアドレスを含み、前記プレディケート命令の前記出力を予測することは、前記分岐命令内に符号化された情報に基づき、前記分岐命令内に符号化された前記情報は、出口コードを表し、
前記プレディケート予測器が、前記予測が正しく連続的に行われた数を示す信頼性予測情報を保持し、前記信頼性予測情報に基づいて、対応するプレディケート命令の出力を予測すべきかを決定し、
前記プレディケート予測器が、基本予測器およびグローバル履歴レジスタを備え、前記予測は、前記基本予測器および前記グローバル履歴レジスタにさらに基づき、
前記グローバル履歴レジスタが、コアローカルプレディケート履歴レジスタを備え、前記コアローカルプレディケート履歴レジスタは、前記対応するプロセッサコアの前記プレディケート予測器に関するデータを記憶するように構成される、
マルチコアプロセッサ内でプレディケート予測を提供する方法。
【発明の詳細な説明】
【背景技術】
【0001】
政府支援の研究に関する陳述
本発明は、米国空軍によって与えられたF33615−03−C−4106の下での政府支援によりなされた。米国政府は、本発明の一定の権利を有する。
【0002】
分散型の、ウィンドウの大きなプロセッサでは、プレディケーションは、プログラムの制御フローにおいて頻繁に変化を生じさせる分岐を、命令を保護することができるデータ値に変換するために使用される技術であり、このデータ値により、どの命令を実行しどの命令を実行しないかを決定することができる。プレディケーションによって制御フローを直線化することができ、分岐がとり得る可能な両経路に提供される命令が折り畳まれる(to be collapsed)のを容易にし、全ての命令をフェッチし、プレディケートに応じて命令の一部のみを実行する。このモデルは、大きなコードブロックを生成して多くの実行ユニット全体に広めるには効果的であり得るが、プレディケートを用いないアーキテクチャでは分岐であったはずのプレディケートが、実行時に評価され得るという問題が生じ得る(フェッチされてからすぐに予測される分岐とは異なる)。プレディケートの評価のこの遅延により、性能が大幅に低下し得る。
【0003】
現在の技術では、2つの、おそらくは望ましくない選択肢のうちの1つを採用する。1つ目のそのような技術は、プレディケーションを回避することを選び、これは、あらゆる制御判断を分岐として残し得るとともに、大規模な分散型プロセッサ全体に命令を分散させることを不可能にし得る。2つ目の選択肢は、命令をプレディケートする一方、フェッチおよびプレディケート予測を単一のユニットに集中させることであり得るが、フェッチの帯域幅が狭くなり、大規模な分散型マルチコアプロセッサ全体に命令を分散させることはやはり不可能になる。
【0004】
EDGE(エクスプリジット・データ・グラフ・エグゼキューション:Explicit Data Graph Execution)アーキテクチャのようなハイブリッドなデータフローのアーキテクチャでは、制御フローには分岐とプレディケートとが混在していることがある。どの分岐がプレディケートにif変換(if-convert)され得るかを決定することは、複雑な問題になり得る。予測の難しい分岐がプレディケートされるのを好ましいものとすることができ、制御フローを十分に直線化するのに役立つ分岐がプリディケートされる。残りの制御ポイントは、分岐として残され得る。そのような区分によって、予測スキームは全ての分岐と最も予測可能なプレディケートを予測することができ、予測の難しいプレディケートの評価は遅らせて実行時に選択する。
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし、分散型のデータフローのマシンでは、完全に制御の履歴を管理して正確なプレディケート予測を容易にすることは難しいことがある。この分野における従来の試みでは、通常、予測の難しい分岐に“if変換”を適用するコンパイラ、および、ランタイム情報の不足によりコンパイラが誤りを犯した場合の、回復するための特定のマイクロアーキテクチャ機構に依存してきた。その結果、現在知られているほとんどのデータフローマシンは、商業用途で効果的であり得る方式では、プレディケート予測を利用していない。
【課題を解決するための手段】
【0006】
システム、方法、およびコンピュータによってアクセス可能な媒体の例が、分散型マルチコアアーキテクチャにおいてプレディケート予測を生成するために提供される。そのようなシステム、方法、およびコンピュータによってアクセス可能な媒体を用いることで、分岐命令についての概略プレディケート経路情報(approximate predicate path information)をインテリジェントに符号化することができる。この静的に生成された情報を用いることで、分散型プレディケート予測器は、信頼性の高いプレディケートの正確な予測に役立ち得る、動的なプレディケート履歴を生成することができ、同時にコア間の通信を最小にする。
【0007】
一実施例では、コンピューティングシステムが提供される。コンピューティングシステムは、複数のプロセッサコアを有するマルチコアプロセッサを含んでもよい。コアの各々は、プレディケート予測器を含んでもよい。プレディケート予測器は、プレディケート予測を生成するように構成され得る。
【0008】
別の実施例では、マルチコアプロセッサにおいてプレディケート予測を提供するための方法が提供される。その方法は、マルチコアプロセッサにおいて複数のプロセッサコアの各々に、プレディケート予測器を提供することと、プレディケート予測器を用いて、複数の分岐命令からプレディケート予測を生成することとを含んでもよい。
【0009】
さらに別の実施例では、マルチコアプロセッサコンピューティングシステム内でプレディケート予測を提供するためのコンピュータ実行可能命令を記憶した、コンピュータによってアクセス可能な媒体が提供される。処理構成(processing arrangement)が命令を実行するときに処理手順を実行するように構成され得る。処理手順は、マルチコアプロセッサ内の複数のプロセッサコアの各々にプレディケート予測器を提供することであって、プロセッサコアの各々が少なくとも1つのプレディケート予測器を含む、ことと、プレディケート予測器を用いてプレディケート予測を生成することとを含んでもよい。
【0010】
複数の実施例が開示されるが、さらに別の実施例が、以下の発明を実施するための形態から当業者には明らかになろう。明らかとなるように、システム、方法、およびコンピュータによってアクセス可能な媒体は、全て本明細書の教示の趣旨および範囲から逸脱することなく、様々な明らかな態様の修正が可能である。したがって、発明を実施するための形態は、限定的ではなく実際には例示的であるものとして見なされるべきである。
【0011】
本開示の前述および別の特徴が、添付の図面とともに、以下の記述および添付の特許請求の範囲から、より完全に明らかになろう。これらの図面は本開示によるいくつかの実施形態のみを示し、したがって、本開示の範囲を限定するものと考えるべきではないことを理解して、本開示が、添付の図面を用いてさらに具体的かつ詳細に説明される。
【図面の簡単な説明】
【0012】
【
図1】一実施例による、代表的なコンピューティングシステムのブロック図である。
【
図2】一実施例による、プレディケート予測システムのブロック図および流れ図である。
【
図3】別の実施例による、プレディケート予測システムのブロック図および流れ図である。
【
図4】一実施例による、幾何履歴長予測器(geometric history length predictor)のブロック図および流れ図である。
【
図5】一実施例による、プレディケート予測に適した方法のブロック図および流れ図である。
【
図6a】いくつかの実施例による、グローバル履歴レジスタの構成のブロック図および流れ図である。
【
図6b】いくつかの実施例による、グローバル履歴レジスタの構成のブロック図および流れ図である。
【発明を実施するための形態】
【0013】
以下の発明を実施するための形態では、本明細書の一部を形成する添付の図面が参照される。図面においては、状況によって別段指定されない限り、同様の記号は通常同様の構成要素を識別する。発明を実施するための形態、図面、および特許請求の範囲に記載される説明のための例は、限定的であることを意図しない。本明細書で提示される主題の趣旨または範囲から逸脱することなく、別の例を利用することができ、別の変更を行うことができる。本開示の態様は、本明細書で一般的に説明され図面に示される通り、様々な異なる構成に配置され、置換され、結合され、分離され、かつ設計されることが可能であり、これらの全てが本明細書で明示されずに考慮されることが、容易に理解されよう。
【0014】
本開示は、分岐予測に関連する方法、装置、コンピュータプログラム、およびシステムに向けて描かれる。1つのそのようなシステムのある好適な実施形態が、図面において示され、以下で説明される。多くの別の実施形態も可能であるが、時間とスペースの制約のため、そうした実施形態の網羅的なリストを1つの文書に収めることはしない。したがって、特許請求の範囲内にある別の実施形態は、本特許の教示から当業者には明らかになろう。
【0015】
図は、図面において示される例の例示的な構成要素を指定するための番号を含む。その例示的な構成要素は、コンピュータシステム100、プロセッサ101、システムバス102、オペレーティングシステム103、アプリケーション104、読み取り専用メモリ105、ランダムアクセスメモリ106、ディスクアダプタ107、ディスクユニット108、通信アダプタ109、ユーザーインターフェースアダプタ110、ディスプレイアダプタ111、キーボード112、マウス113、スピーカー114、ディスプレイモニタ115、コンピューティング環境201、アプリケーションプログラム202、命令データフロー203、コンパイラ204、分岐命令205、概略プレディケート経路情報206、第2の命令データフロー207、プロセッサ210、プロセッサコア211〜213、プレディケート予測器214〜216、プレディケート予測220、ブロック命令301〜303、ブロック開始アドレス304〜306、幾何履歴長予測器400、コアローカル履歴レジスタ401、グローバル履歴レジスタ402、加算ブロック404、予測符号405、グローバル予測テーブル406〜409、信頼性予測テーブル410、カウンタ411、コアローカル予測テーブル412、コアローカルプレディケート履歴レジスタ601〜603、およびグローバル履歴レジスタ605を含む。
【0016】
図1は、いくつかの実施例により構成された、コンピューティングシステム100のブロック図の概略図である。コンピュータシステム100も、本開示の一実施例のためのハードウェア環境を代表するものである。例えば、コンピュータシステム100は、システムバス102によって様々な別の構成要素に結合されるプロセッサ101を有してもよい。プロセッサ101は、本明細書の実施例によって構成された複数のプレディケート予測器214〜216を有する、ヘテロジニアス・マルチコアプロセッサであってよい。プロセッサ101のより詳細な説明は、
図2に示される実施例の説明と関連して以下で与えられる。
図1を参照すると、オペレーティングシステム103はプロセッサ101上で実行することができ、
図1の様々な構成要素の機能を制御および調整する。本開示の実施例の原理によるアプリケーション104は、オペレーティングシステム103とともに実行して、オペレーティングシステム103に呼び出しおよび/または命令を提供することができ、呼び出し/命令は、アプリケーション104により実行される様々な機能またはサービスを実施する。
【0017】
図1を参照すると、読み取り専用メモリ(ROM)105はシステムバス102に結合されてもよく、コンピュータ機器100のある基本的な機能を制御できる基本入出力システム(BIOS)を含んでもよい。ランダムアクセスメモリ(RAM)106およびディスクアダプタ107も、システムバス102に結合されてよい。オペレーティングシステム103およびアプリケーション104を含むソフトウェア構成要素は、RAM106内にロードされてもよく、RAM106は、実行のためのコンピュータシステム100のメインメモリであってよいことに、留意されたい。ディスクアダプタ107が提供されてもよく、ディスクアダプタ107は、IDE(integrated drive electronics)またはPATA(parallel advanced technology attachment)アダプタ、SATA(serial advanced technology attachement)アダプタ、SCSI(small computer system interface)アダプタ、ユニバーサルシリアルバス(USB)アダプタ、IEEE 1394アダプタ、またはディスクドライブなどのディスクユニット108と通信する任意の他の適切なアダプタであってよい。
【0018】
図1を参照すると、コンピュータシステム100は、バス102に結合された通信アダプタ109をさらに含んでもよい。通信アダプタ109は、バス102を外部ネットワーク(図示せず)と相互接続してもよく、それにより、コンピュータシステム100が別の同様のおよび/または異なる機器と通信するのを容易にする。
【0019】
入力/出力(I/O)機器も、ユーザーインターフェースアダプタ110およびディスプレイアダプタ111を介して、コンピュータシステム100に接続されてよい。例えば、キーボード112、マウス113、およびスピーカー114が、ユーザーインターフェースアダプタ110を通じて、バス102に相互接続されてもよい。これらの例示的な機器のいずれかを通じて、データがコンピュータシステム100に提供され得る。ディスプレイモニタ115は、ディスプレイアダプタ111によってシステムバス102に接続されてもよい。この例示的な方式では、ユーザーはキーボード112および/またはマウス113を通じて、データまたは別の情報をコンピュータシステム100に提供することができ、ディスプレイ115および/またはスピーカー114を介してコンピュータシステム100から出力を得ることができる。
【0020】
本明細書で説明される本開示の実施例の様々な態様、特徴、実施形態または実装形態は、単独で、または様々な組合せで使用され得る。本開示の方法の実施例は、ソフトウェア、ハードウェア、またはハードウェアとソフトウェアの組合せ(例えば、コンピュータによってアクセス可能な媒体に記憶されるソフトウェア)によって実装され得る。
【0021】
本明細書で説明されるのは、分散型マルチコアマイクロアーキテクチャのためのプレディケート予測スキームの例であり、これはプロセッサ101上で実装することができ、例えば、EDGE(explicit data graph execution)マイクロアーキテクチャとともに使用されるようになされ得る。分散型スキームの例は、分岐命令において概略プレディケート経路情報をインテリジェントに符号化するコンパイラに依存し得る。この静的に生成された情報を用いて、分散型プレディケート予測器は、信頼性の高いプレディケートの正確な予測を容易にしつつコア間の通信を低減する、動的なプレディケート履歴を生成することができる。正確かつ効率的な分散型プレディケート予測スキームの例により、コンパイラが、例えばオーバーヘッド計算を軽減するプレディケート予測器によって、コードを積極的にプレディケートすることが容易になる。
【0022】
したがって、
図2に示されるように、コンピューティング環境201がコンピュータシステム100に設けられてよく、ソフトウェアアプリケーションプログラム202およびコンパイラ204を含んでもよい。アプリケーションプログラム202は命令データフロー203を生成することができ、命令データフロー203の一部または多くは、分岐命令であってよい。コンパイラ204は、概略プレディケート経路情報206によって、分岐命令205を符号化することができる。結果として得られる命令データ207は、実行のためにプロセッサ101、210に流れ得る。プロセッサ210は複数のプロセッサコア(簡単にするために、例えば3つのプロセッサコアがコア211〜213として図示される)を含んでもよく、複数のプロセッサコアの各々はプレディケート予測器214〜216の1つをそれぞれ含んでもよい。そして、これらの予測器214〜216は、コンパイラで符号化されたプレディケート経路情報206を用いて、信頼性の高いプレディケートの正確な予測を容易にする(ブロック220)。
【0023】
以下では、EDGE命令セットアーキテクチャ(ISA)のさらなる説明が与えられる。しかし、本発明の実施例は別のISAとともに同様に使用され得ることを、理解されたい。EDGE ISAは、2つの例示的な特徴、例えば、ブロックアトミック(block-atomic)実行(ブロックの命令の全てが実行を完了しコミットするか、ブロック命令のいずれもが実行を完了せずコミットしないかのいずれか)、および直接的な命令の伝達(ISAは命令中のブロック内の依存関係を符号化することができる)がある。この例示的なモデルを用いると、命令データフローのブロック、例えば命令データフロー203は、命令データフローが一貫性のある出力のセットを生成する場合に、その動作を完了することができる。例えば、実行の各期間について、ブロックは同じ数のレジスタにデータを書き込み、または提供することができ、ちょうど1つの分岐の出力を生成するのに加えて、同じ数の記憶されたデータを、ブロックヘッダ内で静的に符号化されたものとして生成することができる。命令は、レジスタおよびメモリ105、106を通じて、ブロック間で伝わり得る。
【0024】
命令は、命令のブロック内のインデックスに基づき、1つのプロセッサ101、210として収集された一部または全てのコアにわたって、インターリーブされ得る。プロセッサコアの構成が変化するとき、例えば、コアが別個の処理ユニットとして動作しているとき、それに応じてインターリーブ手順は変化することができ、これによりコアの1つまたは複数においてプロセッサがブロックを実行することが容易になり得る。各命令ブロックはプレディケートオペランドを有してもよく、これによりEDGE ISAを完全にプレディケートすることができる。データフロー実行モデル(例えば直接的なオペランドの伝達)を用いると、命令ブロックは、自身の全てのオペランドを受け取るときに実行されることが可能であり、命令ブロックがプレディケートされる場合は、対応するものがプレディケートする。
【0025】
一実施例によるアーキテクチャでは、命令の各ブロックは、接続されるまたは加わるコアを調整してそのようなブロックの実行を容易にする、特定のコア(例えば所有者コア(owner core))を有してもよい。例えば、所有者コアは、従来のアーキテクチャのプログラムカウンタと同様にまたは同等に、ブロック開始アドレスにより識別され得る。
図3を見ると、命令の複数のブロック(例えば、簡単にするためにブロック301〜303として示されている3つのブロック)が提供され、各ブロックは、ブロック開始アドレス304〜306の1つをそれぞれ含む。そのようなアドレス304〜306は、適切な所有者コア211〜213を識別するために使用され得る。
図3に示されるように、ブロック301は自身のアドレス304を通じてコア211と関連して(例えば、コア211に所有されて)もよく、ブロック302は自身のアドレス305を通じてコア213と関連してもよく、ブロック303は自身のアドレス306を通じてコア212と関連してもよい。それぞれの所有者コア211〜213は、フェッチ命令を送信し、次のブロックアドレスを予測して所有者であることを示すトークンを次のブロックアドレスに渡し、完了情報(例えばレジスタの書き込み、記憶、
出口/分岐アドレスなどを含む)を集め、コミットを送信または(1つまたは複数の)コマンドをフラッシュし、最終的にコミットの肯定応答を得るという役割を担い得る。
【0026】
さらに、それぞれの所有者コア211〜213のうちの1つまたは複数は、次のブロックアドレスを予測しやすくすることができる。コア211〜213のそれぞれは、完全な機能ブロック予測器214〜216の1つをそれぞれ含んでもよく、予測器は複数のコアについて同一であっても、互いに異なっていてもよい。ブロック予測器214〜216の次の1つは、どの分岐が
テイクされてブロック
の外に出るかを予測できる
出口予測器と、予測される
出口目標に基づいてブロック214〜216の次の1つのアドレスを予測できる、予測器214〜216のうち、関連する目標となる予測器とを含んでもよい。
図4を参照すると、予測器214〜216の
出口予測器は、2レベルのローカル予測器、グローバル予測器、および/または選択予測器を含んでもよく、これらは、ローカル
出口履歴401およびグローバル
出口履歴402を使用できる。
出口履歴401、402は、それぞれのブロックの各分岐命令に対して静的に割り当てられた、概略プレディケート経路情報206を用いて、コア211〜213から生成され得る。概略プレディケート経路情報206は、分岐命令に符号化されることが可能であり、特定のブロックの具体的な分岐を識別することができる。コンパイラ204は、最初は、それぞれのブロックの分岐命令の順序に基づいて、概略プレディケーション経路情報206を割り当ててもよい。コア211〜213は、
出口を用いて、(従来のアーキテクチャで使用され得るような)
テイクされた/
テイクされなかったという情報の代わりに、関連する予測器の中でローカル履歴およびグローバル履歴を生成することができる。
【0027】
コア211〜213の各々は、コアにマッピングされたプレディケート命令の出力を予測することができるプレディケート予測構成によって増強され得る。基本予測器とグローバル履歴レジスタとを含み得る、グローバル履歴に基づく予測器が、各コアで使用され得る。そのようなグローバル履歴予測器は、コア211〜213の各々の中で更新されるグローバル履歴情報を維持し、同時にコア211〜213の間での通信を減らそうとしてもよい。まず
図4を参照すると、一実施例では、幾何履歴長(GEHL:geometric history length)予測器400は、分散型プレディケート予測を実行するための基本予測器として使用され得る。GEHL予測器400は、グローバル分岐履歴レジスタ402および分岐アドレス(例えばコアローカル履歴レジスタ401)の独立の機能によってインデックスを与えられる、いくつかの予測テーブル406〜409を含んでもよい。予測は、テーブル406〜409から取り出された値、ならびにコアローカル履歴レジスタ401に関連するコアローカル予測テーブル412からの値にわたる加算404の符号405に基づいてよい。本実施例では、記憶の大部分が、最近の分岐履歴の相互関係を得るために使用され得るが、依然として、一定の古い分岐との相互関係を得ることも容易にする。
【0028】
ここでグローバルプレディケート履歴情報を見ると、いくつかの適切な実施例が与えられ得る。ある実施例は高い正確性を実現することができ、同時にコア211〜213の間の通信を低減する。
図6aを参照すると、そのような実施例の1つでは、コアローカルプレディケート履歴レジスタ(CLPHR)600が使用され得る。したがって、例えば、予測器は、別のコアと何ら情報を通信することなく、コア内のみで使用可能な情報を用いるだけで、提供され得る。本実施例では、コア211〜213の各々は、そのようなコアにマッピングされるプレディケート命令を追跡できる、自身に固有の唯一のグローバル履歴レジスタ601〜603を有してよい。そして、コンパイラ204は、従属命令をそのコアにマッピングしようとしてもよい。その結果、従属プレディケート命令は同一のコアにマッピングされることが可能であり、これにより、CLPHR600がそれらの命令の間の相互関係を利用しやすくなり得る。
【0029】
図6bを参照すると、別の実施例では、グローバルブロック履歴レジスタ(GBHR)605が提供され得る。分散型の
出口予測器がブロックの
出口コードを予測すると、そのような
出口予測器は、
出口予測番号またはコードを連結させることもでき、したがってGBHR605を生成する。本実施例では、コンパイラ204は、各ブロック内の分岐命令に、プログラム内での分岐命令の順序にしたがって、3ビットの
出口コードを割り当てることができる。したがって、GBHR605は、グローバル履歴情報として使用され得る。ブロック内のプレディケートからの情報を何ら使用することなく、
出口予測器とプレディケート予測器の両方が同一の履歴情報を共有することができ、これにより、追加の通信機構の必要性を減らす、またはなくすことができる。
【0030】
CLPHR600およびGBHR605の実施例は、任意の適切な方式で組み合わせることができる。例えば、GBHR605は、メインのグローバル履歴レジスタではなく、CLPHRによってインデックスが与えられ得る別のテーブルを追加することによって、増強され得る。このテーブルから取り出される予測は、加算器ツリーによって、GEHLテーブルから取り出される予測と結合され得る。
【0031】
図4を再び参照すると、いくつかの実施例では、プレディケート予測の正確性を推定するように構成され得る、信頼性予測テーブル410が提供され得る。したがって、信頼性推定テーブル410は、予測器が、予測の難しいプレディケート(例えば信頼性の低いプレディケート)を「除去する」ことを容易にし得る。信頼性予測テーブル410のエントリはカウンタ、例えばカウンタ411をリセットしていてもよく、カウンタは、分岐における正しい連続的な予測の数を計数することができる。例えば、誤った予測が発生すると、カウンタ411は0にリセットされ得る。プレディケートは、対応するカウンタの値がある閾値よりも高い場合、予測されるように選択され得る。いくつかの実施例では、信頼性テーブルのエントリ(例えばカウンタ411)は、より少数のコアで構成するために信頼性の高い閾値をサポートすることができる、3ビットのリセットカウンタであってよい。
【0032】
本発明の方法の実施例が
図5として示されている。コンピュータシステム100はプロセッサ101を含んでもよく、プロセッサ101は実行されると、以下の手順を実行するように構成され得る。具体的には、プロセッサ101は、コンパイラ204に、概略プレディケート経路情報を用いて分岐命令を符号化させることができる(手順501)。次に、結果として得られる命令データが、実行のためにプロセッサ101に提供され得る(手順502)。次いで、各プロセッサコアと関連するこれらの予測器は、コンパイラで符号化された経路情報を使用して、信頼性の高いプレディケートの正確な予測を容易にすることができる(手順503)。
【0033】
いくつかの実施例に開示されているのは、複数のプロセッサコアを含むマルチコアプロセッサを含むコンピューティングシステムであり、コアの各々は少なくとも1つのプレディケート予測器を含み、プレディケート予測器はプレディケート予測を生成する。いくつかの実施例では、コンピューティングシステムは、符号化されたプレディケート経路情報を有する1つまたは複数の分岐命令を含む、アプリケーションプログラムをさらに含んでもよい。別の実施例では、プレディケート経路情報を符号化することは、コンパイラによって実現される。別の様々な実施例においては、1つまたは複数の分岐命令の各々のブロックアドレスによって、マルチコアプロセッサのどのプロセッサコアがそれぞれの分岐命令を実行するのかが決定される。他の実施例では、マルチコアプロセッサは、エクスプリジット・データ・グラフ・エグゼキューション・マイクロアーキテクチャを含む。さらに他の実施例では、1つまたは複数のプレディケート予測器は、基本予測器およびグローバル履歴レジスタを含む。別の実施例では、基本予測器は、幾何履歴長予測器である。一方いくつかの実施例では、グローバル履歴レジスタは、コアローカルプレディケート履歴レジスタである。他の実施例では、グローバル履歴レジスタは、グローバブロック履歴レジスタである。さらに他の実施例では、グローバル履歴レジスタは、コアローカルプレディケート履歴レジスタおよびグローバルブロック履歴レジスタを含む。さらに別の実施例では、コンピューティングシステムは、信頼性予測テーブルをさらに含む。
【0034】
他の実施例で開示されているのは、マルチコアプロセッサの複数のプロセッサコアを介して1つまたは複数の分岐命令を提供することを含む、マルチコアプロセッサ内でプレディケート予測を提供し、プレディケート予測器を用いてプレディケート予測を生成するための方法であって、プロセッサコアの各々は少なくとも1つのプレディケート予測器を含む。いくつかの実施例では、方法は、1つまたは複数の分岐命令内の概略プレディケート経路情報を符号化することを、さらに含んでもよい。別の例では、プレディケート経路情報の符号化は、コンパイラによって実行される。さらなる実施例では、方法は、どのプロセッサコアが1つまたは複数の分岐命令の各々のブロックアドレスを用いて分岐命令を実行するかを決定することを、さらに含む。一方別の実施例では、1つまたは複数のプレディケート予測器は、基本予測器およびグローバル履歴レジスタを含む。さらに別の実施例では、基本予測器は、幾何履歴長予測器である。さらに別の実施例では、グローバル履歴レジスタは、コアローカルプレディケート履歴レジスタである。様々な別の実施例では、グローバル履歴レジスタは、グローバルブロック履歴レジスタである。
【0035】
さらに別の実施例で開示されているのは、マルチコアプロセッサコンピューティングシステム内でプレディケート予測を提供するためのコンピュータ実行可能命令が記憶されている、コンピュータによってアクセス可能な媒体であって、処理構成が、命令を実行するときに、1つまたは複数の分岐命令内の概略プレディケート経路情報を符号化することを含む手順を実行するように構成され、マルチコアプロセッサの1つまたは複数のプロセッサコア上の1つまたは複数の分岐命令を実行し、1つまたは複数のプロセッサコアの各々は、1つまたは複数のプレディケート予測器を含み、処理構成はさらに、1つまたは複数のプレディケート予測器を用いてプレディケート予測を生成する。
【0036】
本開示は、本出願で説明される特定の実施例に関して限定されるべきではなく、実施例は様々な態様の例示であることを意図している。当業者には明らかなように、多くの修正および実施例が、本発明の趣旨および範囲から逸脱することなくなされ得る。本開示の範囲内にある機能的に等価な方法および装置が、本明細書で列挙されたものに加えて、前述の説明から当業者には明らかになろう。そのような修正および実施例は、添付の特許請求の範囲内となることが意図される。本開示は、添付の特許請求の範囲とともに、そのような請求が権利を有する等価物の完全な範囲に関してのみ限定されるべきである。本開示は、特定の方法、試薬、化合物組成、または生体システムに限定されず、これらは当然変化し得ることを理解されたい。本明細書で使用される用語は、特定の実施例を説明するためだけのものであり、限定することを意図していないことも理解されたい。
【0037】
本明細書における実質的にあらゆる複数形および/または単数形の用語の使用に関して、当業者は、状況および/または用途に適切となるように、複数形から単数形に、かつ/または単数形から複数形に変換することができる。本明細書では、明瞭さのために、様々な単数形/複数形の置換が明示的に行われることがある。
【0038】
全般的に、本明細書、特に添付の特許請求の範囲(例えば添付の特許請求の範囲の主部)で使用される用語は、一般に「オープン」な用語(例えば、用語「含んでいる(including)」は「含んでいるが限定されない」と解釈されるべきであり、用語「有している(having)」は「少なくとも有している」と解釈されるべきであり、用語「含む(includes)」は「含むが限定されない」と解釈されるべきであるなど)であることが意図されることを、当業者は理解するであろう。導入される請求項の記述において具体的な数が意図される場合、そのような意図は請求項中に明確に記載され、そのような記載がない場合は、そのような意図も存在しないことが当業者にはさらに理解されるであろう。例えば、理解を促すために、以下の添付の特許請求の範囲では、導入句「少なくとも1つの」および「1つまたは複数の」を使用し、請求項の記述を導入することがある。しかし、そのような句の使用は、たとえ同一の請求項中に導入句「1つ以上の」または「少なくとも1つの」および「a」または「an」のような不定冠詞が含まれる場合でも、不定冠詞「a」または「an」による請求項の記述の導入が、そのように導入された請求項の記述を含む任意の特定の請求項を、そのような記述を1つのみ含む例に限定するということを示唆するものと解釈されるべきではない(例えば、「a」および/または「an」は、「少なくとも1つの」または「1つまたは複数の」を意味すると解釈されるべきである)。定冠詞を使用して請求項の記述を導入する場合にも同様のことが当てはまる。さらに、導入された請求項の記述において具体的な数が明示的に記載されている場合であっても、そのような記載は、最小でも記載された数であるという意味で解釈されるべきであることを、当業者は理解するであろう(例えば、他に修飾語のない、単なる「2つの記載事項」という記載は、少なくとも2つの記載事項、または2つ以上の記載事項を意味する)。さらに、「A、BおよびCなどのうち少なくとも1つ」に類する表記が使用される場合、一般的に、そのような構造は、当業者がその表記を理解するであろう意味を意図している(例えば、「A、BおよびCのうち少なくとも1つを有するシステム」は、Aのみ、Bのみ、Cのみ、AとBの両方、AとCの両方、BとCの両方、および/またはAとBとCの全て、などを有するシステムを含むがこれらには限定されない)。「A、BまたはCなどのうち少なくとも1つ」に類する表記が使用される場合、一般的に、そのような構造は、当業者がその表記を理解するであろう意味を意図している(例えば、「A、BまたはCのうち少なくとも1つを有するシステム」は、Aのみ、Bのみ、Cのみ、AとBの両方、AとCの両方、BとCの両方、および/またはAとBとCの全て、などを有するシステムを含むがこれらには限定されない)。さらに、2つ以上の選択可能な用語を表す実質的にあらゆる離接語および/または離接句は、説明文内、特許請求の範囲内、または図面内のどこであっても、用語のうちの1つ、用語のうちのいずれか、または用語の両方を含む可能性を考慮すると理解されるべきであることが、当業者には理解されるであろう。例えば、「AまたはB」という句は、「AまたはB」または「AおよびB」の可能性を含むことが理解されよう。
【0039】
さらに、本開示の特徴または態様がマーカッシュグループに関して記述される場合、その結果として、本開示を、任意の個別の要素またはマーカッシュグループの要素のサブグループに関して記述することもできることを、当業者は理解するであろう。
【0040】
当業者によって理解されるように、あらゆる全ての目的のために、例えば書面による説明を提供するために、本明細書で開示される全ての範囲は、全ての可能な部分的な範囲および部分的な範囲の組合せも網羅する。あらゆる記載された範囲は、少なくとも2等分、3等分、4等分、5等分、10等分などされた同じ範囲を十分に説明し、可能にするものと容易に理解され得る。非限定的な例として、本明細書で議論される各範囲は、下側3分の1、真中3分の1、上側3分の1などに容易に分割され得る。当業者によってやはり理解されるように、「まで」、「少なくとも」、「より大きい」、「より少ない」などのような全ての表現は、記載された数を含み、続いて上記の部分的な範囲に分割され得る範囲を指す。最後に、当業者によって理解されるように、範囲は各々の個別の要素を含む。したがって、例えば、1〜3個のセルまたはコアを有するグループは、1個、2個、または3個のセルもしくはコアを有するグループを指す。同様に、1〜5個のセルまたはコアを有するグループは、1個、2個、3個、4個、または5個のセルもしくはコアを有するグループを指し、他も同様である。
【0041】
様々な態様および実施例が本明細書で開示されてきたが、当業者には別の態様および実施例が明らかになろう。本明細書で開示される様々な態様および実施例は、例示のみを目的としており、限定することを意図しておらず、真の範囲および趣旨は以下の特許請求の範囲で示される。