JP2014142969A - 分散型プレディケート予測を実現するための方法、システム、およびコンピュータによってアクセス可能な媒体 - Google Patents

分散型プレディケート予測を実現するための方法、システム、およびコンピュータによってアクセス可能な媒体 Download PDF

Info

Publication number
JP2014142969A
JP2014142969A JP2014095690A JP2014095690A JP2014142969A JP 2014142969 A JP2014142969 A JP 2014142969A JP 2014095690 A JP2014095690 A JP 2014095690A JP 2014095690 A JP2014095690 A JP 2014095690A JP 2014142969 A JP2014142969 A JP 2014142969A
Authority
JP
Japan
Prior art keywords
predicate
predictor
prediction
computing system
cores
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2014095690A
Other languages
English (en)
Other versions
JP5747104B2 (ja
JP2014142969A5 (ja
Inventor
Burger Doug
バーガー,ダグ
W Keckler Stephen
ケックラー,ステファン,ダブリュー.
Esmaeilzadeh Hadi
エスマエイルザデー,ハーディ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
University of Texas System
Original Assignee
University of Texas System
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by University of Texas System filed Critical University of Texas System
Publication of JP2014142969A publication Critical patent/JP2014142969A/ja
Publication of JP2014142969A5 publication Critical patent/JP2014142969A5/ja
Application granted granted Critical
Publication of JP5747104B2 publication Critical patent/JP5747104B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/445Exploiting fine grain parallelism, i.e. parallelism at instruction level
    • G06F8/4451Avoiding pipeline stalls
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

【課題】分散型プレディケート予測を実現する。
【解決手段】分散型のマルチコアアーキテクチャにおいてプレディケート予測を生成するための、システム、方法、およびコンピュータによってアクセス可能な媒体の実施例が提供される。そのようなシステム、方法、およびコンピュータによってアクセス可能な媒体を用いると、分岐命令についての概略プレディケート経路情報をインテリジェントに符号化することが可能になる。この静的に生成された情報を用いて、分散型のプレディケート予測器は、信頼性の高いプレディケートの正確な予測を容易にし得る動的なプレディケート履歴を生成することができ、同時に、コア間の通信を最小化する。
【選択図】図4

Description

政府支援の研究に関する陳述
本発明は、米国空軍によって与えられたF33615−03−C−4106の下での政府支援によりなされた。米国政府は、本発明の一定の権利を有する。
分散型の、ウィンドウの大きなプロセッサでは、プレディケーションは、プログラムの制御フローにおいて頻繁に変化を生じさせる分岐を、命令を保護することができるデータ値に変換するために使用される技術であり、このデータ値により、どの命令を実行しどの命令を実行しないかを決定することができる。プレディケーションによって制御フローを直線化することができ、分岐がとり得る可能な両経路に提供される命令が折り畳まれる(to be collapsed)のを容易にし、全ての命令をフェッチし、プレディケートに応じて命令の一部のみを実行する。このモデルは、大きなコードブロックを生成して多くの実行ユニット全体に広めるには効果的であり得るが、プレディケートを用いないアーキテクチャでは分岐であったはずのプレディケートが、実行時に評価され得るという問題が生じ得る(フェッチされてからすぐに予測される分岐とは異なる)。プレディケートの評価のこの遅延により、性能が大幅に低下し得る。
現在の技術では、2つの、おそらくは望ましくない選択肢のうちの1つを採用する。1つ目のそのような技術は、プレディケーションを回避することを選び、これは、あらゆる制御判断を分岐として残し得るとともに、大規模な分散型プロセッサ全体に命令を分散させることを不可能にし得る。2つ目の選択肢は、命令をプレディケートする一方、フェッチおよびプレディケート予測を単一のユニットに集中させることであり得るが、フェッチの帯域幅が狭くなり、大規模な分散型マルチコアプロセッサ全体に命令を分散させることはやはり不可能になる。
EDGE(エクスプリジット・データ・グラフ・エグゼキューション:Explicit Data Graph Execution)アーキテクチャのようなハイブリッドなデータフローのアーキテクチャでは、制御フローには分岐とプレディケートとが混在していることがある。どの分岐がプレディケートにif変換(if-convert)され得るかを決定することは、複雑な問題になり得る。予測の難しい分岐がプレディケートされるのを好ましいものとすることができ、制御フローを十分に直線化するのに役立つ分岐がプリディケートされる。残りの制御ポイントは、分岐として残され得る。そのような区分によって、予測スキームは全ての分岐と最も予測可能なプレディケートを予測することができ、予測の難しいプレディケートの評価は遅らせて実行時に選択する。
しかし、分散型のデータフローのマシンでは、完全に制御の履歴を管理して正確なプレディケート予測を容易にすることは難しいことがある。この分野における従来の試みでは、通常、予測の難しい分岐に“if変換”を適用するコンパイラ、および、ランタイム情報の不足によりコンパイラが誤りを犯した場合の、回復するための特定のマイクロアーキテクチャ機構に依存してきた。その結果、現在知られているほとんどのデータフローマシンは、商業用途で効果的であり得る方式では、プレディケート予測を利用していない。
システム、方法、およびコンピュータによってアクセス可能な媒体の例が、分散型マルチコアアーキテクチャにおいてプレディケート予測を生成するために提供される。そのようなシステム、方法、およびコンピュータによってアクセス可能な媒体を用いることで、分岐命令についての概略プレディケート経路情報(approximate predicate path information)をインテリジェントに符号化することができる。この静的に生成された情報を用いることで、分散型プレディケート予測器は、信頼性の高いプレディケートの正確な予測に役立ち得る、動的なプレディケート履歴を生成することができ、同時にコア間の通信を最小にする。
一実施例では、コンピューティングシステムが提供される。コンピューティングシステムは、複数のプロセッサコアを有するマルチコアプロセッサを含んでもよい。コアの各々は、プレディケート予測器を含んでもよい。プレディケート予測器は、プレディケート予測を生成するように構成され得る。
別の実施例では、マルチコアプロセッサにおいてプレディケート予測を提供するための方法が提供される。その方法は、マルチコアプロセッサにおいて複数のプロセッサコアの各々に、プレディケート予測器を提供することと、プレディケート予測器を用いて、複数の分岐命令からプレディケート予測を生成することとを含んでもよい。
さらに別の実施例では、マルチコアプロセッサコンピューティングシステム内でプレディケート予測を提供するためのコンピュータ実行可能命令を記憶した、コンピュータによってアクセス可能な媒体が提供される。処理構成(processing arrangement)が命令を実行するときに処理手順を実行するように構成され得る。処理手順は、マルチコアプロセッサ内の複数のプロセッサコアの各々にプレディケート予測器を提供することであって、プロセッサコアの各々が少なくとも1つのプレディケート予測器を含む、ことと、プレディケート予測器を用いてプレディケート予測を生成することとを含んでもよい。
複数の実施例が開示されるが、さらに別の実施例が、以下の発明を実施するための形態から当業者には明らかになろう。明らかとなるように、システム、方法、およびコンピュータによってアクセス可能な媒体は、全て本明細書の教示の趣旨および範囲から逸脱することなく、様々な明らかな態様の修正が可能である。したがって、発明を実施するための形態は、限定的ではなく実際には例示的であるものとして見なされるべきである。
本開示の前述および別の特徴が、添付の図面とともに、以下の記述および添付の特許請求の範囲から、より完全に明らかになろう。これらの図面は本開示によるいくつかの実施形態のみを示し、したがって、本開示の範囲を限定するものと考えるべきではないことを理解して、本開示が、添付の図面を用いてさらに具体的かつ詳細に説明される。
一実施例による、代表的なコンピューティングシステムのブロック図である。 一実施例による、プレディケート予測システムのブロック図および流れ図である。 別の実施例による、プレディケート予測システムのブロック図および流れ図である。 一実施例による、幾何履歴長予測器(geometric history length predictor)のブロック図および流れ図である。 一実施例による、プレディケート予測に適した方法のブロック図および流れ図である。 いくつかの実施例による、グローバル履歴レジスタの構成のブロック図および流れ図である。 いくつかの実施例による、グローバル履歴レジスタの構成のブロック図および流れ図である。
以下の発明を実施するための形態では、本明細書の一部を形成する添付の図面が参照される。図面においては、状況によって別段指定されない限り、同様の記号は通常同様の構成要素を識別する。発明を実施するための形態、図面、および特許請求の範囲に記載される説明のための例は、限定的であることを意図しない。本明細書で提示される主題の趣旨または範囲から逸脱することなく、別の例を利用することができ、別の変更を行うことができる。本開示の態様は、本明細書で一般的に説明され図面に示される通り、様々な異なる構成に配置され、置換され、結合され、分離され、かつ設計されることが可能であり、これらの全てが本明細書で明示されずに考慮されることが、容易に理解されよう。
本開示は、分岐予測に関連する方法、装置、コンピュータプログラム、およびシステムに向けて描かれる。1つのそのようなシステムのある好適な実施形態が、図面において示され、以下で説明される。多くの別の実施形態も可能であるが、時間とスペースの制約のため、そうした実施形態の網羅的なリストを1つの文書に収めることはしない。したがって、特許請求の範囲内にある別の実施形態は、本特許の教示から当業者には明らかになろう。
図は、図面において示される例の例示的な構成要素を指定するための番号を含む。その例示的な構成要素は、コンピュータシステム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を含む。
図1は、いくつかの実施例により構成された、コンピューティングシステム100のブロック図の概略図である。コンピュータシステム100も、本開示の一実施例のためのハードウェア環境を代表するものである。例えば、コンピュータシステム100は、システムバス102によって様々な別の構成要素に結合されるプロセッサ101を有してもよい。プロセッサ101は、本明細書の実施例によって構成された複数のプレディケート予測器214〜216を有する、ヘテロジニアス・マルチコアプロセッサであってよい。プロセッサ101のより詳細な説明は、図2に示される実施例の説明と関連して以下で与えられる。図1を参照すると、オペレーティングシステム103はプロセッサ101上で実行することができ、図1の様々な構成要素の機能を制御および調整する。本開示の実施例の原理によるアプリケーション104は、オペレーティングシステム103とともに実行して、オペレーティングシステム103に呼び出しおよび/または命令を提供することができ、呼び出し/命令は、アプリケーション104により実行される様々な機能またはサービスを実施する。
図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と通信する任意の他の適切なアダプタであってよい。
図1を参照すると、コンピュータシステム100は、バス102に結合された通信アダプタ109をさらに含んでもよい。通信アダプタ109は、バス102を外部ネットワーク(図示せず)と相互接続してもよく、それにより、コンピュータシステム100が別の同様のおよび/または異なる機器と通信するのを容易にする。
入力/出力(I/O)機器も、ユーザーインターフェースアダプタ110およびディスプレイアダプタ111を介して、コンピュータシステム100に接続されてよい。例えば、キーボード112、マウス113、およびスピーカー114が、ユーザーインターフェースアダプタ110を通じて、バス102に相互接続されてもよい。これらの例示的な機器のいずれかを通じて、データがコンピュータシステム100に提供され得る。ディスプレイモニタ115は、ディスプレイアダプタ111によってシステムバス102に接続されてもよい。この例示的な方式では、ユーザーはキーボード112および/またはマウス113を通じて、データまたは別の情報をコンピュータシステム100に提供することができ、ディスプレイ115および/またはスピーカー114を介してコンピュータシステム100から出力を得ることができる。
本明細書で説明される本開示の実施例の様々な態様、特徴、実施形態または実装形態は、単独で、または様々な組合せで使用され得る。本開示の方法の実施例は、ソフトウェア、ハードウェア、またはハードウェアとソフトウェアの組合せ(例えば、コンピュータによってアクセス可能な媒体に記憶されるソフトウェア)によって実装され得る。
本明細書で説明されるのは、分散型マルチコアマイクロアーキテクチャのためのプレディケート予測スキームの例であり、これはプロセッサ101上で実装することができ、例えば、EDGE(explicit data graph execution)マイクロアーキテクチャとともに使用されるようになされ得る。分散型スキームの例は、分岐命令において概略プレディケート経路情報をインテリジェントに符号化するコンパイラに依存し得る。この静的に生成された情報を用いて、分散型プレディケート予測器は、信頼性の高いプレディケートの正確な予測を容易にしつつコア間の通信を低減する、動的なプレディケート履歴を生成することができる。正確かつ効率的な分散型プレディケート予測スキームの例により、コンパイラが、例えばオーバーヘッド計算を軽減するプレディケート予測器によって、コードを積極的にプレディケートすることが容易になる。
したがって、図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)。
以下では、EDGE命令セットアーキテクチャ(ISA)のさらなる説明が与えられる。しかし、本発明の実施例は別のISAとともに同様に使用され得ることを、理解されたい。EDGE ISAは、2つの例示的な特徴、例えば、ブロックアトミック(block-atomic)実行(ブロックの命令の全てが実行を完了しコミットするか、ブロック命令のいずれもが実行を完了せずコミットしないかのいずれか)、および直接的な命令の伝達(ISAは命令中のブロック内の依存関係を符号化することができる)がある。この例示的なモデルを用いると、命令データフローのブロック、例えば命令データフロー203は、命令データフローが一貫性のある出力のセットを生成する場合に、その動作を完了することができる。例えば、実行の各期間について、ブロックは同じ数のレジスタにデータを書き込み、または提供することができ、ちょうど1つの分岐の出力を生成するのに加えて、同じ数の記憶されたデータを、ブロックヘッダ内で静的に符号化されたものとして生成することができる。命令は、レジスタおよびメモリ105、106を通じて、ブロック間で伝わり得る。
命令は、命令のブロック内のインデックスに基づき、1つのプロセッサ101、210として収集された一部または全てのコアにわたって、インターリーブされ得る。プロセッサコアの構成が変化するとき、例えば、コアが別個の処理ユニットとして動作しているとき、それに応じてインターリーブ手順は変化することができ、これによりコアの1つまたは複数においてプロセッサがブロックを実行することが容易になり得る。各命令ブロックはプレディケートオペランドを有してもよく、これによりEDGE ISAを完全にプレディケートすることができる。データフロー実行モデル(例えば直接的なオペランドの伝達)を用いると、命令ブロックは、自身の全てのオペランドを受け取るときに実行されることが可能であり、命令ブロックがプレディケートされる場合は、対応するものがプレディケートする。
一実施例によるアーキテクチャでは、命令の各ブロックは、接続されるまたは加わるコアを調整してそのようなブロックの実行を容易にする、特定のコア(例えば所有者コア(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つまたは複数の)コマンドをフラッシュし、最終的にコミットの肯定応答を得るという役割を担い得る。
さらに、それぞれの所有者コア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は、終了を用いて、(従来のアーキテクチャで使用され得るような)取得された/取得されていない情報の代わりに、関連する予測器の中でローカル履歴およびグローバル履歴を生成することができる。
コア211〜213の各々は、コアにマッピングされたプレディケート命令の出力を予測することができるプレディケート予測構成によって増強され得る。基本予測器とグローバル履歴レジスタとを含み得る、グローバル履歴に基づく予測器が、各コアで使用され得る。そのようなグローバル履歴予測器は、コア211〜213の各々の中で更新されるグローバル履歴情報を維持し、同時にコア211〜213の間での通信を減らそうとしてもよい。まず図4を参照すると、一実施例では、幾何履歴長(GEHL:geometric history length)予測器400は、分散型プレディケート予測を実行するための基本予測器として使用され得る。GEHL予測器400は、グローバル分岐履歴レジスタ402および分岐アドレス(例えばコアローカル履歴レジスタ401)の独立の機能によってインデックスを与えられる、いくつかの予測テーブル406〜409を含んでもよい。予測は、テーブル406〜409から取り出された値、ならびにコアローカル履歴レジスタ401に関連するコアローカル予測テーブル412からの値にわたる加算404の符号405に基づいてよい。本実施例では、記憶の大部分が、最近の分岐履歴の相互関係を得るために使用され得るが、依然として、一定の古い分岐との相互関係を得ることも容易にする。
ここでグローバルプレディケート履歴情報を見ると、いくつかの適切な実施例が与えられ得る。ある実施例は高い正確性を実現することができ、同時にコア211〜213の間の通信を低減する。図6aを参照すると、そのような実施例の1つでは、コアローカルプレディケート履歴レジスタ(CLPHR)600が使用され得る。したがって、例えば、予測器は、別のコアと何ら情報を通信することなく、コア内のみで使用可能な情報を用いるだけで、提供され得る。本実施例では、コア211〜213の各々は、そのようなコアにマッピングされるプレディケート命令を追跡できる、自身に固有の唯一のグローバル履歴レジスタ601〜603を有してよい。そして、コンパイラ204は、従属命令をそのコアにマッピングしようとしてもよい。その結果、従属プレディケート命令は同一のコアにマッピングされることが可能であり、これにより、CLPHR600がそれらの命令の間の相互関係を利用しやすくなり得る。
図6bを参照すると、別の実施例では、グローバルブロック履歴レジスタ(GBHR)605が提供され得る。分散型の終了予測器がブロックの終了コードを予測すると、そのような終了予測器は、終了予測番号またはコードを連結させることもでき、したがってGBHR605を生成する。本実施例では、コンパイラ204は、各ブロック内の分岐命令に、プログラム内での分岐命令の順序にしたがって、3ビットの終了コードを割り当てることができる。したがって、GBHR605は、グローバル履歴情報として使用され得る。ブロック内のプレディケートからの情報を何ら使用することなく、終了予測器とプレディケート予測器の両方が同一の履歴情報を共有することができ、これにより、追加の通信機構の必要性を減らす、またはなくすことができる。
CLPHR600およびGBHR605の実施例は、任意の適切な方式で組み合わせることができる。例えば、GBHR605は、メインのグローバル履歴レジスタではなく、CLPHRによってインデックスが与えられ得る別のテーブルを追加することによって、増強され得る。このテーブルから取り出される予測は、加算器ツリーによって、GEHLテーブルから取り出される予測と結合され得る。
図4を再び参照すると、いくつかの実施例では、プレディケート予測の正確性を推定するように構成され得る、信頼性予測テーブル410が提供され得る。したがって、信頼性推定テーブル410は、予測器が、予測の難しいプレディケート(例えば信頼性の低いプレディケート)を「除去する」ことを容易にし得る。信頼性予測テーブル410のエントリはカウンタ、例えばカウンタ411をリセットしていてもよく、カウンタは、分岐における正しい連続的な予測の数を計数することができる。例えば、誤った予測が発生すると、カウンタ411は0にリセットされ得る。プレディケートは、対応するカウンタの値がある閾値よりも高い場合、予測されるように選択され得る。いくつかの実施例では、信頼性テーブルのエントリ(例えばカウンタ411)は、より少数のコアで構成するために信頼性の高い閾値をサポートすることができる、3ビットのリセットカウンタであってよい。
本発明の方法の実施例が図5として示されている。コンピュータシステム100はプロセッサ101を含んでもよく、プロセッサ101は実行されると、以下の手順を実行するように構成され得る。具体的には、プロセッサ101は、コンパイラ204に、概略プレディケート経路情報を用いて分岐命令を符号化させることができる(手順501)。次に、結果として得られる命令データが、実行のためにプロセッサ101に提供され得る(手順502)。次いで、各プロセッサコアと関連するこれらの予測器は、コンパイラで符号化された経路情報を使用して、信頼性の高いプレディケートの正確な予測を容易にすることができる(手順503)。
いくつかの実施例に開示されているのは、複数のプロセッサコアを含むマルチコアプロセッサを含むコンピューティングシステムであり、コアの各々は少なくとも1つのプレディケート予測器を含み、プレディケート予測器はプレディケート予測を生成する。いくつかの実施例では、コンピューティングシステムは、符号化されたプレディケート経路情報を有する1つまたは複数の分岐命令を含む、アプリケーションプログラムをさらに含んでもよい。別の実施例では、プレディケート経路情報を符号化することは、コンパイラによって実現される。別の様々な実施例においては、1つまたは複数の分岐命令の各々のブロックアドレスによって、マルチコアプロセッサのどのプロセッサコアがそれぞれの分岐命令を実行するのかが決定される。他の実施例では、マルチコアプロセッサは、エクスプリジット・データ・グラフ・エグゼキューション・マイクロアーキテクチャを含む。さらに他の実施例では、1つまたは複数のプレディケート予測器は、基本予測器およびグローバル履歴レジスタを含む。別の実施例では、基本予測器は、幾何履歴長予測器である。一方いくつかの実施例では、グローバル履歴レジスタは、コアローカルプレディケート履歴レジスタである。他の実施例では、グローバル履歴レジスタは、グローバブロック履歴レジスタである。さらに他の実施例では、グローバル履歴レジスタは、コアローカルプレディケート履歴レジスタおよびグローバルブロック履歴レジスタを含む。さらに別の実施例では、コンピューティングシステムは、信頼性予測テーブルをさらに含む。
他の実施例で開示されているのは、マルチコアプロセッサの複数のプロセッサコアを介して1つまたは複数の分岐命令を提供することを含む、マルチコアプロセッサ内でプレディケート予測を提供し、プレディケート予測器を用いてプレディケート予測を生成するための方法であって、プロセッサコアの各々は少なくとも1つのプレディケート予測器を含む。いくつかの実施例では、方法は、1つまたは複数の分岐命令内の概略プレディケート経路情報を符号化することを、さらに含んでもよい。別の例では、プレディケート経路情報の符号化は、コンパイラによって実行される。さらなる実施例では、方法は、どのプロセッサコアが1つまたは複数の分岐命令の各々のブロックアドレスを用いて分岐命令を実行するかを決定することを、さらに含む。一方別の実施例では、1つまたは複数のプレディケート予測器は、基本予測器およびグローバル履歴レジスタを含む。さらに別の実施例では、基本予測器は、幾何履歴長予測器である。さらに別の実施例では、グローバル履歴レジスタは、コアローカルプレディケート履歴レジスタである。様々な別の実施例では、グローバル履歴レジスタは、グローバルブロック履歴レジスタである。
さらに別の実施例で開示されているのは、マルチコアプロセッサコンピューティングシステム内でプレディケート予測を提供するためのコンピュータ実行可能命令が記憶されている、コンピュータによってアクセス可能な媒体であって、処理構成が、命令を実行するときに、1つまたは複数の分岐命令内の概略プレディケート経路情報を符号化することを含む手順を実行するように構成され、マルチコアプロセッサの1つまたは複数のプロセッサコア上の1つまたは複数の分岐命令を実行し、1つまたは複数のプロセッサコアの各々は、1つまたは複数のプレディケート予測器を含み、処理構成はさらに、1つまたは複数のプレディケート予測器を用いてプレディケート予測を生成する。
本開示は、本出願で説明される特定の実施例に関して限定されるべきではなく、実施例は様々な態様の例示であることを意図している。当業者には明らかなように、多くの修正および実施例が、本発明の趣旨および範囲から逸脱することなくなされ得る。本開示の範囲内にある機能的に等価な方法および装置が、本明細書で列挙されたものに加えて、前述の説明から当業者には明らかになろう。そのような修正および実施例は、添付の特許請求の範囲内となることが意図される。本開示は、添付の特許請求の範囲とともに、そのような請求が権利を有する等価物の完全な範囲に関してのみ限定されるべきである。本開示は、特定の方法、試薬、化合物組成、または生体システムに限定されず、これらは当然変化し得ることを理解されたい。本明細書で使用される用語は、特定の実施例を説明するためだけのものであり、限定することを意図していないことも理解されたい。
本明細書における実質的にあらゆる複数形および/または単数形の用語の使用に関して、当業者は、状況および/または用途に適切となるように、複数形から単数形に、かつ/または単数形から複数形に変換することができる。本明細書では、明瞭さのために、様々な単数形/複数形の置換が明示的に行われることがある。
全般的に、本明細書、特に添付の特許請求の範囲(例えば添付の特許請求の範囲の主部)で使用される用語は、一般に「オープン」な用語(例えば、用語「含んでいる(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」の可能性を含むことが理解されよう。
さらに、本開示の特徴または態様がマーカッシュグループに関して記述される場合、その結果として、本開示を、任意の個別の要素またはマーカッシュグループの要素のサブグループに関して記述することもできることを、当業者は理解するであろう。
当業者によって理解されるように、あらゆる全ての目的のために、例えば書面による説明を提供するために、本明細書で開示される全ての範囲は、全ての可能な部分的な範囲および部分的な範囲の組合せも網羅する。あらゆる記載された範囲は、少なくとも2等分、3等分、4等分、5等分、10等分などされた同じ範囲を十分に説明し、可能にするものと容易に理解され得る。非限定的な例として、本明細書で議論される各範囲は、下側3分の1、真中3分の1、上側3分の1などに容易に分割され得る。当業者によってやはり理解されるように、「まで」、「少なくとも」、「より大きい」、「より少ない」などのような全ての表現は、記載された数を含み、続いて上記の部分的な範囲に分割され得る範囲を指す。最後に、当業者によって理解されるように、範囲は各々の個別の要素を含む。したがって、例えば、1〜3個のセルまたはコアを有するグループは、1個、2個、または3個のセルもしくはコアを有するグループを指す。同様に、1〜5個のセルまたはコアを有するグループは、1個、2個、3個、4個、または5個のセルもしくはコアを有するグループを指し、他も同様である。
様々な態様および実施例が本明細書で開示されてきたが、当業者には別の態様および実施例が明らかになろう。本明細書で開示される様々な態様および実施例は、例示のみを目的としており、限定することを意図しておらず、真の範囲および趣旨は以下の特許請求の範囲で示される。

Claims (20)

  1. 複数のプロセッサコアを含むマルチコアプロセッサを備えるコンピューティングシステムであって、前記コアの各々がプレディケート予測器を備え、前記プレディケート予測器が、プレディケート予測を生成するように構成される、コンピューティングシステム。
  2. 前記コアの少なくとも1つが、符号化されたプレディケート経路情報を有する分岐命令を備えるアプリケーションプログラムを実行し、前記プレディケート予測器が、前記プレディケート経路情報に基づいて前記プレディケート予測を生成するように構成される、請求項1に記載のコンピューティングシステム。
  3. 前記コアの少なくとも1つが、前記分岐命令に基づいて前記プレディケート経路情報を符号化するように構成されるコンパイラである、請求項2に記載のコンピューティングシステム。
  4. 前記マルチコアプロセッサのうちのどの前記コアが前記分岐命令を実行するのに割り当てられるかを決定するブロックアドレスを、前記分岐命令が有する、請求項2に記載のコンピューティングシステム。
  5. 前記マルチコアプロセッサが、エクスプリジット・データ・グラフ・エグゼキューション(explicit data graph execution)マイクロアーキテクチャを備える、請求項1に記載のコンピューティングシステム。
  6. 前記プレディケート予測器が、基本予測器およびグローバル履歴レジスタを備える、請求項1に記載のコンピューティングシステム。
  7. 前記基本予測器が、幾何履歴長予測器を備える、請求項6に記載のコンピューティングシステム。
  8. 前記グローバル履歴レジスタが、コアローカルプレディケート履歴レジスタを備える、請求項6に記載のコンピューティングシステム。
  9. 前記グローバル履歴レジスタが、グローバルブロック履歴レジスタを備える、請求項6に記載のコンピューティングシステム。
  10. 前記グローバル履歴レジスタが、コアローカルプレディケート履歴レジスタおよびグローバルブロック履歴レジスタを備える、請求項6に記載のコンピューティングシステム。
  11. 前記プレディケート予測器が、複数のプレディケート予測を生成するように構成され、前記コアの少なくとも1つが、前記プレディケート予測の正確さを示す信頼性予測を得て、前記信頼性予測に基づいて、どのプレディケートが次に予測されるべきかを決定するように構成される、請求項1に記載のコンピューティングシステム。
  12. マルチコアプロセッサ内の複数のプロセッサコアの各々に対してプレディケート予測器を提供すること、
    前記プレディケート予測器を用いて、複数の分岐命令からプレディケート予測を生成すること含む、マルチコアプロセッサ内でプレディケート予測を提供する方法。
  13. 前記コアの少なくとも1つによってアプリケーションプログラムを実行することをさらに含み、前記プログラムが、符号化されたプレディケート経路情報を有する複数の分岐命令の1つを含む、請求項12に記載の方法。
  14. コンパイラを用いて、前記分岐命令についての前記プレディケート経路情報を符号化することをさらに含む、請求項13に記載の方法。
  15. 前記プログラムが複数の分岐命令を備える請求項13に記載の方法であって、前記分岐命令の各々のブロックアドレスを用いて、どのプロセッサコアが前記分岐命令を実行するかを決定することをさらに含む、方法。
  16. 前記少なくとも1つのプレディケート予測器が、基本予測器およびグローバル履歴レジスタを含む、請求項12に記載の方法。
  17. 前記基本予測器が幾何履歴長予測器である、請求項16に記載の方法。
  18. 前記グローバル履歴レジスタがコアローカルプレディケート履歴レジスタである、請求項16に記載の方法。
  19. 前記グローバル履歴レジスタがグローバルブロック履歴レジスタである、請求項16に記載の方法。
  20. マルチコアプロセッサコンピューティングシステム内でプレディケート予測を提供するためのコンピュータ実行可能命令が記憶された、コンピュータによってアクセス可能な媒体であって、処理構成が前記命令を実行するときに処理手順を実行するように構成され、前記処理手順が、
    前記マルチコアプロセッサの複数のプロセッサコアの各々に対してプレディケート予測器を提供することであって、前記プロセッサコアの各々が少なくとも1つのプレディケート予測器を備える、提供することと、
    前記プレディケート予測器を用いて、前記プレディケート予測を生成することとを含む、コンピュータによってアクセス可能な媒体。
JP2014095690A 2009-09-09 2014-05-07 分散型プレディケート予測を実現するための方法、システム、およびコンピュータによってアクセス可能な媒体 Active JP5747104B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/556,440 US8433885B2 (en) 2009-09-09 2009-09-09 Method, system and computer-accessible medium for providing a distributed predicate prediction
US12/556,440 2009-09-09

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2012522834A Division JP2013500539A (ja) 2009-09-09 2010-06-11 分散型プレディケート予測を実現するための方法、システム、およびコンピュータによってアクセス可能な媒体

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2015096238A Division JP2015164068A (ja) 2009-09-09 2015-05-11 分散型プレディケート予測を実現するための方法、システム、およびコンピュータによってアクセス可能な媒体

Publications (3)

Publication Number Publication Date
JP2014142969A true JP2014142969A (ja) 2014-08-07
JP2014142969A5 JP2014142969A5 (ja) 2015-05-14
JP5747104B2 JP5747104B2 (ja) 2015-07-08

Family

ID=43648555

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2012522834A Pending JP2013500539A (ja) 2009-09-09 2010-06-11 分散型プレディケート予測を実現するための方法、システム、およびコンピュータによってアクセス可能な媒体
JP2014095690A Active JP5747104B2 (ja) 2009-09-09 2014-05-07 分散型プレディケート予測を実現するための方法、システム、およびコンピュータによってアクセス可能な媒体
JP2015096238A Pending JP2015164068A (ja) 2009-09-09 2015-05-11 分散型プレディケート予測を実現するための方法、システム、およびコンピュータによってアクセス可能な媒体

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2012522834A Pending JP2013500539A (ja) 2009-09-09 2010-06-11 分散型プレディケート予測を実現するための方法、システム、およびコンピュータによってアクセス可能な媒体

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2015096238A Pending JP2015164068A (ja) 2009-09-09 2015-05-11 分散型プレディケート予測を実現するための方法、システム、およびコンピュータによってアクセス可能な媒体

Country Status (6)

Country Link
US (1) US8433885B2 (ja)
JP (3) JP2013500539A (ja)
KR (1) KR101364314B1 (ja)
CN (2) CN102473086B (ja)
DE (1) DE112010003595B4 (ja)
WO (1) WO2011031361A1 (ja)

Families Citing this family (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10698859B2 (en) 2009-09-18 2020-06-30 The Board Of Regents Of The University Of Texas System Data multicasting with router replication and target instruction identification in a distributed multi-core processing architecture
WO2011159309A1 (en) * 2010-06-18 2011-12-22 The Board Of Regents Of The University Of Texas System Combined branch target and predicate prediction
EP2645254A4 (en) * 2010-11-25 2014-01-15 Toyota Motor Co Ltd PROCESSOR, ELECTRONIC CONTROL DEVICE, CREATION PROGRAM
WO2012127589A1 (ja) * 2011-03-18 2012-09-27 富士通株式会社 マルチコアプロセッサシステム、および分岐予測方法
US9182991B2 (en) 2012-02-06 2015-11-10 International Business Machines Corporation Multi-threaded processor instruction balancing through instruction uncertainty
US9268569B2 (en) 2012-02-24 2016-02-23 Apple Inc. Branch misprediction behavior suppression on zero predicate branch mispredict
US9792252B2 (en) 2013-05-31 2017-10-17 Microsoft Technology Licensing, Llc Incorporating a spatial array into one or more programmable processor cores
US9507594B2 (en) * 2013-07-02 2016-11-29 Intel Corporation Method and system of compiling program code into predicated instructions for execution on a processor without a program counter
US20160232346A1 (en) * 2015-02-05 2016-08-11 Qualcomm Incorporated Mechanism for tracking tainted data
US9946549B2 (en) 2015-03-04 2018-04-17 Qualcomm Incorporated Register renaming in block-based instruction set architecture
US9916164B2 (en) * 2015-06-11 2018-03-13 Intel Corporation Methods and apparatus to optimize instructions for execution by a processor
US9940136B2 (en) 2015-06-26 2018-04-10 Microsoft Technology Licensing, Llc Reuse of decoded instructions
US10409599B2 (en) 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Decoding information about a group of instructions including a size of the group of instructions
US10346168B2 (en) 2015-06-26 2019-07-09 Microsoft Technology Licensing, Llc Decoupled processor instruction window and operand buffer
US10409606B2 (en) 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Verifying branch targets
US10175988B2 (en) 2015-06-26 2019-01-08 Microsoft Technology Licensing, Llc Explicit instruction scheduler state information for a processor
US11755484B2 (en) 2015-06-26 2023-09-12 Microsoft Technology Licensing, Llc Instruction block allocation
US9720693B2 (en) 2015-06-26 2017-08-01 Microsoft Technology Licensing, Llc Bulk allocation of instruction blocks to a processor instruction window
US10191747B2 (en) 2015-06-26 2019-01-29 Microsoft Technology Licensing, Llc Locking operand values for groups of instructions executed atomically
US20160378491A1 (en) * 2015-06-26 2016-12-29 Microsoft Technology Licensing, Llc Determination of target location for transfer of processor control
US10169044B2 (en) 2015-06-26 2019-01-01 Microsoft Technology Licensing, Llc Processing an encoding format field to interpret header information regarding a group of instructions
US9946548B2 (en) 2015-06-26 2018-04-17 Microsoft Technology Licensing, Llc Age-based management of instruction blocks in a processor instruction window
US9952867B2 (en) 2015-06-26 2018-04-24 Microsoft Technology Licensing, Llc Mapping instruction blocks based on block size
US20170083319A1 (en) * 2015-09-19 2017-03-23 Microsoft Technology Licensing, Llc Generation and use of block branch metadata
US10936316B2 (en) 2015-09-19 2021-03-02 Microsoft Technology Licensing, Llc Dense read encoding for dataflow ISA
US11681531B2 (en) 2015-09-19 2023-06-20 Microsoft Technology Licensing, Llc Generation and use of memory access instruction order encodings
US10776115B2 (en) 2015-09-19 2020-09-15 Microsoft Technology Licensing, Llc Debug support for block-based processor
US10198263B2 (en) 2015-09-19 2019-02-05 Microsoft Technology Licensing, Llc Write nullification
US10095519B2 (en) 2015-09-19 2018-10-09 Microsoft Technology Licensing, Llc Instruction block address register
US10061584B2 (en) 2015-09-19 2018-08-28 Microsoft Technology Licensing, Llc Store nullification in the target field
US10678544B2 (en) 2015-09-19 2020-06-09 Microsoft Technology Licensing, Llc Initiating instruction block execution using a register access instruction
US10719321B2 (en) 2015-09-19 2020-07-21 Microsoft Technology Licensing, Llc Prefetching instruction blocks
US10180840B2 (en) 2015-09-19 2019-01-15 Microsoft Technology Licensing, Llc Dynamic generation of null instructions
US10871967B2 (en) 2015-09-19 2020-12-22 Microsoft Technology Licensing, Llc Register read/write ordering
US10768936B2 (en) 2015-09-19 2020-09-08 Microsoft Technology Licensing, Llc Block-based processor including topology and control registers to indicate resource sharing and size of logical processor
US11126433B2 (en) 2015-09-19 2021-09-21 Microsoft Technology Licensing, Llc Block-based processor core composition register
US11016770B2 (en) 2015-09-19 2021-05-25 Microsoft Technology Licensing, Llc Distinct system registers for logical processors
US20170083341A1 (en) * 2015-09-19 2017-03-23 Microsoft Technology Licensing, Llc Segmented instruction block
US10452399B2 (en) 2015-09-19 2019-10-22 Microsoft Technology Licensing, Llc Broadcast channel architectures for block-based processors
US10031756B2 (en) 2015-09-19 2018-07-24 Microsoft Technology Licensing, Llc Multi-nullification
US11977891B2 (en) 2015-09-19 2024-05-07 Microsoft Technology Licensing, Llc Implicit program order
US11106467B2 (en) 2016-04-28 2021-08-31 Microsoft Technology Licensing, Llc Incremental scheduler for out-of-order block ISA processors
US20180081690A1 (en) * 2016-09-21 2018-03-22 Qualcomm Incorporated Performing distributed branch prediction using fused processor cores in processor-based systems
US11531552B2 (en) 2017-02-06 2022-12-20 Microsoft Technology Licensing, Llc Executing multiple programs simultaneously on a processor core
US10963379B2 (en) 2018-01-30 2021-03-30 Microsoft Technology Licensing, Llc Coupling wide memory interface to wide write back paths
US10824429B2 (en) 2018-09-19 2020-11-03 Microsoft Technology Licensing, Llc Commit logic and precise exceptions in explicit dataflow graph execution architectures

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010032308A1 (en) * 1998-08-04 2001-10-18 Grochowski Edward T. Method and apparatus for performing predicate prediction
US20020174326A1 (en) * 1998-08-04 2002-11-21 Kling Ralph M. Method and apparatus for performing predicate prediction
US20050216714A1 (en) * 2004-03-25 2005-09-29 Intel Corporation Method and apparatus for predicting confidence and value

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3499252B2 (ja) * 1993-03-19 2004-02-23 株式会社ルネサステクノロジ コンパイル装置及びデータ処理装置
US6178498B1 (en) * 1997-12-18 2001-01-23 Idea Corporation Storing predicted branch target address in different storage according to importance hint in branch prediction instruction
US6367004B1 (en) * 1998-12-31 2002-04-02 Intel Corporation Method and apparatus for predicting a predicate based on historical information and the least significant bits of operands to be compared
US6513109B1 (en) * 1999-08-31 2003-01-28 International Business Machines Corporation Method and apparatus for implementing execution predicates in a computer processing system
US6662294B1 (en) * 2000-09-28 2003-12-09 International Business Machines Corporation Converting short branches to predicated instructions
US20030023959A1 (en) * 2001-02-07 2003-01-30 Park Joseph C.H. General and efficient method for transforming predicated execution to static speculation
US7114059B2 (en) * 2001-11-05 2006-09-26 Intel Corporation System and method to bypass execution of instructions involving unreliable data during speculative execution
KR100528479B1 (ko) * 2003-09-24 2005-11-15 삼성전자주식회사 전력 소모를 감소시키기 위한 분기 예측기 및 구현방법
US8607209B2 (en) * 2004-02-04 2013-12-10 Bluerisc Inc. Energy-focused compiler-assisted branch prediction
CN100552622C (zh) * 2005-03-31 2009-10-21 松下电器产业株式会社 运算处理装置
US8904155B2 (en) * 2006-03-17 2014-12-02 Qualcomm Incorporated Representing loop branches in a branch history register with multiple bits
US7487340B2 (en) * 2006-06-08 2009-02-03 International Business Machines Corporation Local and global branch prediction information storage
US20070288733A1 (en) * 2006-06-08 2007-12-13 Luick David A Early Conditional Branch Resolution
US9946550B2 (en) * 2007-09-17 2018-04-17 International Business Machines Corporation Techniques for predicated execution in an out-of-order processor
US7870371B2 (en) * 2007-12-17 2011-01-11 Microsoft Corporation Target-frequency based indirect jump prediction for high-performance processors
US7818551B2 (en) * 2007-12-31 2010-10-19 Microsoft Corporation Feedback mechanism for dynamic predication of indirect jumps

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010032308A1 (en) * 1998-08-04 2001-10-18 Grochowski Edward T. Method and apparatus for performing predicate prediction
US20020174326A1 (en) * 1998-08-04 2002-11-21 Kling Ralph M. Method and apparatus for performing predicate prediction
US20050216714A1 (en) * 2004-03-25 2005-09-29 Intel Corporation Method and apparatus for predicting confidence and value

Non-Patent Citations (7)

* Cited by examiner, † Cited by third party
Title
CSNG200000966016; 古関 聰 他: '「拡張VLIWプロセッサGIFTにおけるブランチハンドリング機構」' 情報処理学会論文誌 第38巻 第12号, 19971215, 2576頁〜2587頁, 社団法人情報処理学会 *
JPN6015005367; Nitya RANGANATHAN et al.: '"Analysis of the TRIPS Prototype Block Predictor"' ISPASS 2009. IEEE International Symposium on Performance Analysis of Systems and Software, 2009. , 20090428, Pages:195-206, IEEE *
JPN6015005370; Doug BURGER et al.: '"Scaling to the End ofSilicon with EDGE Architectures"' Computer Volume:37,Issue:7, 200407, Pages:44-55, IEEE *
JPN6015005374; Karthkeyan SANKARALINGAM et al.: '"Distributed Microarchitectural Protocols in the TRIPS Prototype Processor"' MICRO-39. 39th Annual IEEE/ACM International Symposium on Microarchitecture, 2006. , 20061213, Pages:480-491, IEEE *
JPN6015005378; 古関 聰 他: '「拡張VLIWプロセッサGIFTにおけるブランチハンドリング機構」' 情報処理学会論文誌 第38巻 第12号, 19971215, 2576頁〜2587頁, 社団法人情報処理学会 *
JPN6015005380; Aaron SMITH et al.: '"Compiling for EDGE Architectures"' CGO 2006. International Symposium on Code Generation and Optimization, 2006. , 20060329, pages:1-11, IEEE *
JPN6015005382; Aaron SMITH et al.: '"Dataflow Predication"' MICRO-39. 39th Annual IEEE/ACM International Symposium on Microarchitecture, 2006. , 200612, Pages:89-102, IEEE *

Also Published As

Publication number Publication date
JP5747104B2 (ja) 2015-07-08
KR101364314B1 (ko) 2014-02-18
JP2015164068A (ja) 2015-09-10
CN105183449A (zh) 2015-12-23
DE112010003595T5 (de) 2012-11-22
CN102473086B (zh) 2015-08-19
DE112010003595B4 (de) 2024-06-06
US20110060889A1 (en) 2011-03-10
CN105183449B (zh) 2018-12-18
CN102473086A (zh) 2012-05-23
US8433885B2 (en) 2013-04-30
JP2013500539A (ja) 2013-01-07
WO2011031361A1 (en) 2011-03-17
KR20120068855A (ko) 2012-06-27

Similar Documents

Publication Publication Date Title
JP5747104B2 (ja) 分散型プレディケート予測を実現するための方法、システム、およびコンピュータによってアクセス可能な媒体
US9965274B2 (en) Computer processor employing bypass network using result tags for routing result operands
JP5894120B2 (ja) ゼロサイクルロード
CN107111550B (zh) 用于隐藏程序提取的页遗漏转换时延的方法和装置
JP2018060491A (ja) ローカル分岐デコーダを有するマルチ発行マイクロコードユニットを備えたパイプラインプロセッサ
JP2014142969A5 (ja)
Calder et al. A comparative survey of load speculation architectures
RU2663362C1 (ru) Команда и логическая схема для сортировки и выгрузки команд сохранения
US10831505B2 (en) Architecture and method for data parallel single program multiple data (SPMD) execution
US10915328B2 (en) Apparatus and method for a high throughput parallel co-processor and interconnect with low offload latency
JP6457200B2 (ja) プロセッシング装置
US11537397B2 (en) Compiler-assisted inter-SIMD-group register sharing
KR20140131472A (ko) 상수 저장 레지스터를 구비하는 재구성 가능 프로세서
KR20190033084A (ko) 로드 스토어 유닛들을 바이패싱하여 스토어 및 로드 추적
CN111752616A (zh) 用于符号存储地址生成的系统、装置和方法
Wang et al. Decoupled affine computation for SIMT GPUs
US20190079771A1 (en) Lookahead out-of-order instruction fetch apparatus for microprocessors
Mittal A survey of value prediction techniques for leveraging value locality
JP7046087B2 (ja) キャッシュ・ミス・スレッド・バランシング
US11567771B2 (en) Method and apparatus for back end gather/scatter memory coalescing
US20150007153A1 (en) Partial commits in dynamic binary translation based systems
Sazeides Modeling value speculation
US9342303B2 (en) Modified execution using context sensitive auxiliary code
US11567767B2 (en) Method and apparatus for front end gather/scatter memory coalescing
CN114691597A (zh) 自适应远程原子操作

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140507

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140507

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150212

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20150326

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150413

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150511

R150 Certificate of patent or registration of utility model

Ref document number: 5747104

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250