JP6708335B2 - User-level branch and join processor, method, system, and instructions - Google Patents
User-level branch and join processor, method, system, and instructions Download PDFInfo
- Publication number
- JP6708335B2 JP6708335B2 JP2017539015A JP2017539015A JP6708335B2 JP 6708335 B2 JP6708335 B2 JP 6708335B2 JP 2017539015 A JP2017539015 A JP 2017539015A JP 2017539015 A JP2017539015 A JP 2017539015A JP 6708335 B2 JP6708335 B2 JP 6708335B2
- Authority
- JP
- Japan
- Prior art keywords
- user
- processor
- instruction
- level
- instructions
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims description 53
- 230000015654 memory Effects 0.000 claims description 89
- 230000004888 barrier function Effects 0.000 claims description 39
- 230000004044 response Effects 0.000 claims description 29
- 238000004891 communication Methods 0.000 claims description 11
- 238000012546 transfer Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 39
- 238000012545 processing Methods 0.000 description 29
- 230000007246 mechanism Effects 0.000 description 22
- 230000006870 function Effects 0.000 description 14
- 238000007667 floating Methods 0.000 description 13
- ORQBXQOJMQIAOY-UHFFFAOYSA-N nobelium Chemical compound [No] ORQBXQOJMQIAOY-UHFFFAOYSA-N 0.000 description 12
- 238000010168 coupling process Methods 0.000 description 9
- 238000005859 coupling reaction Methods 0.000 description 9
- 230000001360 synchronised effect Effects 0.000 description 9
- 239000000872 buffer Substances 0.000 description 8
- 230000008878 coupling Effects 0.000 description 8
- 239000003795 chemical substances by application Substances 0.000 description 7
- 238000013461 design Methods 0.000 description 7
- 238000004519 manufacturing process Methods 0.000 description 6
- 230000003068 static effect Effects 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 5
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 238000013500 data storage Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 239000000758 substrate Substances 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000010076 replication Effects 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000011232 storage material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/30087—Synchronisation or serialisation instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/3009—Thread control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/3822—Parallel decoding, e.g. parallel decode units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3888—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/28—Using a specific disk cache architecture
- G06F2212/283—Plural cache memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/452—Instruction code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6028—Prefetching based on hints or prefetch instructions
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Description
本明細書で説明される実施形態は、概してプロセッサに関する。具体的には、本明細書で説明される実施形態は、概してプロセッサ内の並列処理に関する。 The embodiments described herein relate generally to processors. Specifically, the embodiments described herein relate generally to parallel processing within a processor.
1つ又は複数のプロセッサを有するコンピュータシステム及び他の電子デバイスの性能を向上させるのに用いられている手法の1つが、並列処理である。並列処理は一般に、1つより多くのハードウェアスレッド、コア、中央処理装置、プロセッサ、あるいはプログラム又は複数のスレッドを実行する他のプロセッサ要素を同時に使用することを意味する。並列処理は、プログラムを並列に実行するそのようなプロセッサ要素がより多く存在するので、プログラムをより速く実行することを可能にするのに役立つことができる。 One of the techniques used to improve the performance of computer systems and other electronic devices having one or more processors is parallel processing. Parallel processing generally means using more than one hardware thread, core, central processing unit, processor, or other processor element executing a program or multiple threads simultaneously. Parallel processing can help to enable a program to run faster because there are more such processor elements that execute the program in parallel.
本発明は、以下の説明と、実施形態を示すのに用いられる添付図面とを参照することで、最も良く理解され得る。その図面は以下の通りである。
ユーザレベルの分岐命令(例えば、ユーザレベルの分岐命令、ユーザレベルの分岐及び同期結合命令)、ユーザレベルの同期及び終了命令、ユーザレベルの同期及び終了命令、これらの命令を実行又は遂行するプロセッサ、これらの命令を実行又は遂行するときにプロセッサにより実行される方法、及び、これらの命令を実行又は遂行する1つ又は複数のプロセッサを組み込むシステムが、本明細書に開示される。以下の説明では、多くの具体的な詳細が明記される(例えば、具体的な命令オペレーション、プロセッサ構成、マイクロアーキテクチャの詳細、オペレーションの順序など)。しかし、これらの具体的な詳細を用いずに、実施形態は実施されてよい。他の例では、よく知られた回路、構造、及び手法は、本明細書の理解をあいまいにしないように、詳細に示されてはいない。 User-level branch instructions (eg, user-level branch instructions, user-level branch and sync join instructions), user-level synchronization and termination instructions, user-level synchronization and termination instructions, processors that execute or perform these instructions, Disclosed herein are methods executed by a processor when executing or performing these instructions, and systems incorporating one or more processors that execute or perform these instructions. In the following description, many specific details are specified (eg, specific instruction operations, processor configurations, microarchitectural details, order of operations, etc.). However, embodiments may be practiced without these specific details. In other instances, well-known circuits, structures, and techniques have not been shown in detail so as not to obscure the understanding herein.
図1は、プロセッサ100の実施形態のブロック図である。いくつかの実施形態では、プロセッサは、汎用プロセッサ(例えば、デスクトップ、ラップトップ、スマートフォン、又は他のコンピュータに用いられるタイプの汎用マイクロプロセッサ又は中央処理装置(CPU))であってよい。あるいは、プロセッサは専用プロセッサであってもよい。好適な専用プロセッサの例には、限定されないが、グラフィックスプロセッサ、コプロセッサ、ネットワークプロセッサ、通信プロセッサ、暗号プロセッサ、組み込みプロセッサ、デジタル信号プロセッサ(DSP)、及びコントローラ(例えば、マイクロコントローラ)が含まれる。プロセッサは、様々な複合命令セット計算(CISC)アーキテクチャ、縮小命令セット計算(RISC)アーキテクチャ、超長命令語(VLIW)アーキテクチャ、ハイブリッドアーキテクチャ、他のタイプのアーキテクチャのいずれかを有することができ、あるいは異なるアーキテクチャの組み合わせを有することもできる。
FIG. 1 is a block diagram of an embodiment of a
プロセッサは、第1のプロセッサ要素102と、複数の追加のプロセッサ要素114とを有する。第1のプロセッサ要素及び追加のプロセッサ要素は、1つ又は複数のバス又は他の相互接続112(例えば、1つ又は複数のリング、トーラス、メッシュなど)により共に接続されてよく、又はそうでなければ結合されてよい。示されるように、複数の追加のプロセッサ要素は、第1の追加のプロセッサ要素114−1から第Nの追加のプロセッサ要素114−Nまでを含むことができる。追加のプロセッサ要素の数は、特定の実装に適切な任意の必要な数を表すことができる。例として、追加のプロセッサ要素の数は、2個から数百個程度の範囲、又はいくつかの場合では10個から約200個の範囲、又はいくつかの場合では20個から約200個の範囲、又はいくつかの場合では10個より多く、20個より多く、又は30個より多くてよいが、本発明の範囲はそのように限定されてはいない。1つの例として、約40個から約200個の範囲であってよいが、これは必須ではない。いくつかの実施形態では、第1のプロセッサ要素102、及び追加のプロセッサ要素114のそれぞれは、単一の集積回路ダイ又は他の半導体基板上に全て配置されてよい。あるいは、追加のプロセッサ要素114のうちのいくつか又は全ては、第1のプロセッサ要素とは異なるダイ又は他の半導体基板上に任意に配置されてもよく、第1のプロセッサ要素と同じ集積回路パッケージ内に任意に含まれてもよい。いくつかの実施形態では、追加のプロセッサ要素114は、一般にドライバ、ミドルウェアなどを通してのみアクセスされ得るグラフィックスカード、GPGPU、又は他のそのような別個のデバイスを表さなくてよい。
The processor has a first processor element 102 and a plurality of
第1のプロセッサ要素102と追加のプロセッサ要素114のそれぞれとに好適なプロセッサ要素の例には、限定されないが、コア、ハードウェアスレッド、スレッドユニット、スレッドスロット、コンテキスト又はアーキテクチャ状態及びプログラムカウンタ(当技術分野において命令ポインタとも呼ばれる)を格納するよう動作するロジック、状態を格納しコードに別個に関連付けられるよう動作するロジック、及び他の論理プロセッサが含まれる。コアという用語は、集積回路上に位置し、独立したアーキテクチャ状態(例えば実行状態)を維持することができるロジックを指すのに用いられることが多く、ロジック内でアーキテクチャ状態が専用の実行リソース及び特定の他のリソースに関連付けられる。これに対して、ハードウェアスレッドという用語は、集積回路上に位置し、独立したアーキテクチャ状態を維持することができるロジックを指すのに用いられることが多く、ロジック内でアーキテクチャ状態が実行リソース又は特定の他のリソースへのアクセスを共有する。いくつかの実行リソース又は特定の他のリソースが、2つ又はそれより多くのアーキテクチャ状態に共有され、他の実行リソース又は特定の他のリソースが、1つのアーキテクチャ状態に特化されている場合、コアという用語及びハードウェアスレッドという用語のそのような用法の間の境界線はあいまいな場合がある。それにもかかわらず、コア、ハードウェアスレッド、及び他のプロセッサ要素は、ソフトウェアによって、個々の論理プロセッサ又はプロセッサ要素とみなされることが多い。概して、スレッド、プロセッサ、又はワークロードは、コア、ハードウェアスレッド、又は他のプロセッサ要素のそれぞれにスケジューリングされてよく、またコア、ハードウェアスレッド、又は他のプロセッサ要素のそれぞれに別個に関連付けられてよい。
Examples of processor elements suitable for the first processor element 102 and each of the
第1のプロセッサ要素102は命令セット104を有する。複数の追加のプロセッサ要素114のそれぞれも、対応する命令セット116を有する。第1のプロセッサ要素の命令セット104は、追加のプロセッサ要素それぞれの命令セット116と同じであってよく、又はそれとは異なってもよい(例えば、いくつかの重複する命令及びいくつかの重複しない命令を有することができる)。命令セットは、それぞれのプロセッサ要素の命令セットアーキテクチャ(ISA)の一部であり、プロセッサ要素が実行するよう動作するネイティブな命令を含む。命令セットの命令は、マクロ命令、機械レベルの命令、又はアセンブリ言語命令を表すことがある。
The first processor element 102 has an instruction set 104. Each of the plurality of
第1のプロセッサ要素の命令セット104には、ユーザレベルの分岐命令106が含まれる。いくつかの実施形態では、ユーザレベルの分岐命令106は、同期及び結合機能を省くことができる(例えば、同期及び結合機能は、別個のユーザレベルの同期及び結合命令、又はそのような機能を実装する複数の他の命令により提供されてよい)。他の実施形態では、命令106は、同期及び結合機能を組み込むユーザレベルの分岐及び同期結合命令であってよい。追加のプロセッサ要素それぞれの命令セット116には、ユーザレベルの同期及び終了命令118が含まれる。ユーザレベルの分岐命令及びユーザレベルの同期及び終了命令は、非特権レベル又はユーザレベルの実行で実行されてよいユーザレベルの命令である。命令セットのそれぞれには、1つ又は複数の非ユーザレベルの命令又は特権命令(不図示)も任意に含まれてよく、これらの命令は、非特権レベル又はユーザレベルの実行で実行されなくてよい。むしろ、非ユーザレベルの命令又は特権命令は、非ユーザレベル又は少なくとも部分的に特権レベルの実行(例えばリング0)でのみ実行されてよく、これらの命令は、オペレーティングシステム、ハイパーバイザ、仮想マシンマネージャ、あるいは他の特権エンティティ又は管理エンティティに確保されてよい。 The first processor element instruction set 104 includes a user-level branch instruction 106. In some embodiments, the user-level branch instructions 106 may omit the sync and join functions (eg, the sync and join functions may implement separate user-level sync and join instructions, or such functionality). May be provided by multiple other instructions). In other embodiments, the instructions 106 may be user-level branch and sync join instructions that incorporate sync and join functionality. The instruction set 116 of each additional processor element includes user-level synchronization and termination instructions 118. User-level branch instructions and user-level synchronization and termination instructions are user-level instructions that may be executed in unprivileged or user-level execution. Each of the instruction sets may also optionally include one or more non-user level instructions or privileged instructions (not shown) that are not executed in unprivileged or user level execution. Good. Rather, non-user-level instructions or privileged instructions may only be executed in non-user-level or at least partially privileged-level execution (eg, ring 0), where these instructions are operating system, hypervisor, virtual machine manager. , Or other privileged or managed entity.
いくつかの実施形態では、ユーザレベルの分岐命令106及びユーザレベルの同期及び終了命令118は、ユーザが分岐及び結合の論理構成をユーザレベルのアプリケーション又はソフトウェアに実装することを可能にしてよい。分岐及び結合の論理構成では、ソフトウェアの所与の部分(例えば、所与のソフトウェアスレッド)の実行は、ソフトウェアの複数の並列実行(例えば、複数のデータ並列ワークロード又は並列ソフトウェアスレッド)に分岐(ブランチ又はフォーク)することができ、続いて、これらの複数の並列実行は終了又はイールド(yield)してマージ又は結合することができ、その後、ソフトウェアの所与の部分(例えば、所与のソフトウェアスレッド)の実行は再開することができる。いくつかの実施形態では、ユーザレベルの分岐命令106は、複数の追加のプロセッサ要素114のそれぞれで並列に実行されるソフトウェアの部分の開始場所を指定する、区別する、又はそうでなければ示すよう動作することができ、ユーザレベルの同期及び終了命令118は、ソフトウェアの部分の終了場所を指定する、区別する、又はそうでなければ示すよう動作することができる。
In some embodiments, the user-level branch instruction 106 and the user-level sync and terminate instruction 118 may allow a user to implement the branch and join logical configuration in a user-level application or software. In a branch and join logical configuration, the execution of a given piece of software (eg, a given software thread) branches into multiple parallel executions of the software (eg, multiple data parallel workloads or parallel software threads). Branch or fork), and then these multiple parallel executions can be terminated or yielded, merged or combined, and then given parts of the software (eg, given software). Thread) can be resumed. In some embodiments, the user-level branch instruction 106 specifies, distinguishes, or otherwise indicates where to begin portions of software that execute in parallel on each of the plurality of
第1のプロセッサ要素は、第1の復号ユニット108を有することができる。ユーザレベルの分岐命令は、第1の復号ユニット108に提供されてよい。第1の復号ユニットは、ユーザレベルの分岐命令を復号するよう動作することができる。いくつかの実施形態では、ユーザレベルの分岐命令は、少なくとも1つの命令アドレスを明示的に指定する、又はそうでなければ示すことができる。いくつかの実施形態では、命令は、追加のプロセッサ要素のそれぞれで並列に実行されるコードの部分の最初の命令又は開始命令を表す単一の命令アドレスを指定する、又はそうでなければ示すことができ、その命令部分で、追加のプロセッサ要素のそれぞれは開始する。他の実施形態では、命令は、複数の潜在的に/任意に異なる命令アドレスを指定することができ(例えば、それぞれが命令アドレスのベクトル値を有する1つ又は複数のベクトルレジスタを指定することができる)、その命令アドレスは、追加のプロセッサ要素のうちの別々の1つにより、それぞれ用いられ得る(例えば、各プロセッサ要素は異なる命令アドレスにおいて、データ並列ワークロードの異なる部分で並列に働き始めることができる)。第1のプロセッサ要素は、復号ユニットに結合されるユーザレベルのスレッド分岐モジュール110も有することができる。ユーザレベルのスレッド分岐モジュールは、ユーザレベルの分岐命令を実行又は実装する1つ又は複数の実行ユニット又は他の実行ロジックを表すことができる。いくつかの実施形態では、ユーザレベルのスレッド分岐モジュール110は、プログラム制御フローに分岐(ブランチ又はフォーク)を生じさせるユーザレベルの分岐命令106に応答することができる(例えば、ユーザレベルの分岐命令が復号されたことに応答する、及び/又は、ユーザレベルの分岐命令から復号されるか、そうでなければユーザレベルの分岐命令から生成される1つ又は複数の制御信号に応答する)。いくつかの実施形態では、ユーザレベルのスレッド分岐モジュール110は、ユーザレベルの分岐命令に応答して、複数の追加のプロセッサ要素114のそれぞれを、命令のセット又はソフトウェアの一部を並列に実行するように構成するよう動作することができるか、そうでなければ、複数の追加のプロセッサ要素114のそれぞれにそうさせるよう動作することができる。いくつかの実施形態では、追加のプロセッサ要素のそれぞれは、ユーザレベルの分岐命令106により示される少なくとも1つの命令アドレスの1つにおいて、実行を開始するよう構成されてよく、そうでなければ、実行を開始するようにさせられてよい。前述したように、いくつかの実施形態では、命令は単一のアドレスを示すことができ、他の実施形態では、複数の潜在的に/任意に異なるアドレス(例えば、1つ又は複数のベクトル値のアドレス)を示すことができる。いくつかの実施形態では、ユーザレベルの分岐命令は、固定(static or fixed)数の追加のプロセッサ要素を暗黙に示すことができる(例えば、利用可能な追加のプロセッサ要素の全てが用いられてよい)。あるいは、ユーザレベルの分岐命令は、自由に選択できる数の追加のプロセッサ要素を明示的に指定するか、そうでなければ示すことができ、その数は動的に割り当てられてよい(例えば、追加のプロセッサ要素の総数のうち1つ又は複数は、並列ソフトウェアを実行するのに用いられなくてよい)。
The first processor element may have a first decoding unit 108. User-level branch instructions may be provided to the first decoding unit 108. The first decoding unit is operable to decode a user level branch instruction. In some embodiments, the user-level branch instruction may explicitly specify or otherwise indicate at least one instruction address. In some embodiments, the instruction specifies, or otherwise indicates, a single instruction address that represents the first or starting instruction of the portion of code to be executed in parallel on each of the additional processor elements. And in that instruction part, each of the additional processor elements starts. In other embodiments, an instruction may specify multiple potentially/arbitrarily different instruction addresses (eg, one or more vector registers, each having a vector value of the instruction address). Yes, that instruction address can each be used by a separate one of the additional processor elements (eg, each processor element can begin working in parallel on a different instruction address at a different portion of the data parallel workload). Can be done). The first processor element may also have a user level thread branching module 110 coupled to the decoding unit. A user-level thread branch module may represent one or more execution units or other execution logic that implements or implements user-level branch instructions. In some embodiments, the user-level thread branch module 110 may respond to a user-level branch instruction 106 that causes a branch (branch or fork) in program control flow (eg, a user-level branch instruction In response to being decoded and/or in response to one or more control signals decoded from a user-level branch instruction or otherwise generated from a user-level branch instruction). In some embodiments, the user-level thread branch module 110 executes each of the plurality of
複数の追加のプロセッサ要素114のそれぞれは、ユーザレベルの同期及び終了命令118を実行するよう動作することができる。いくつかの実施形態では、追加のプロセッサ要素のそれぞれは、ユーザレベルの同期及び終了命令を復号する対応した復号ユニット120を有することができる。いくつかの実施形態では、追加のプロセッサ要素114のそれぞれは、対応する復号ユニット120に結合した対応するユーザレベルの同期スレッド終了モジュール122を有することができる。ユーザレベルの各同期スレッド終了モジュール122は、ユーザレベルの同期及び終了命令118を実行又は実装する1つ又は複数の実行ユニット又は他の実行ロジックを表すことができる。いくつかの実施形態では、ユーザレベルの各同期スレッド終了モジュール122は、ユーザレベルの同期及び終了命令118に応答して(例えば、命令が復号されたことに応答して、及び/又は、命令から復号されるか、そうでなければ命令から生成される1つ又は複数の制御信号に応答して)、プログラム制御フローの同期結合又は同期マージに備えて、対応するプロセッサ要素(当該モジュールはそこに含まれる)を、対応するスレッド又は実行の同期終了を実行するように構成するよう動作することができるか、そうでなければ、対応するプロセッサ要素にそうさせるよう動作することができる。いくつかの実施形態では、各プロセッサ要素114は、ユーザレベルの同期及び終了命令118を実行する場合、第1のプロセッサ要素上で実行されるソフトウェアスレッド又はソフトウェアの他の部分に戻る同期制御フロー及び同期バリアの両方を実装することができる。いくつかの実施形態では、各プロセッサ要素114は、ユーザレベルの同期及び終了命令を実行する場合、追加命令の実行を中止して、他の追加のプロセッサ要素114のそれぞれが対応するユーザレベルの同期及び終了命令を実行する(例えば、同期バリアに到達する)まで、(例えば、同期バリアにおいて)待機することができる。次に、いくつかの実施形態では、追加のプロセッサ要素の全てが、その対応するユーザレベルの同期及び終了命令を実行した場合、プログラム制御フローの結合又はマージが実行されてよく、また制御フローは、第1のプロセッサ要素102上で実行されるソフトウェアの部分にある適切な命令に戻ることができる。1つの態様では、追加のプロセッサ要素上の並列実行は全て終えることができ、実行は第1のプロセッサ要素上でだけ継続することができる。
Each of the plurality of
有利には、ユーザレベルの分岐命令、並びにユーザレベルの同期及び終了命令は、ユーザ、プログラマ、又はコンパイラが、分岐及び結合の論理構成又はユーザレベルのアプリケーションのセマンティックスを明示的にプログラムする又は実装することを可能にできるユーザレベルのアーキテクチャメカニズムを表すことができる。分岐及び結合の論理構成は、オペレーティングシステム(又は他の管理上のシステムソフトウェア)に管理されたスレッドへのシステムコールを含むソフトウェアの実行時間で定義される必要はなく、このことは、一般に、(例えば、メッセージングなどに起因する)高いオーバーヘッドを有する傾向があり、その結果、一般に、比較的大きいワークロード、又は並列に実行されているコードの部分(例えば、粗粒度の並列処理)に実際には限定される傾向がある。むしろ、これらのユーザレベルの分岐命令並びにユーザレベルの同期及び終了命令を用いることで、分岐及び結合を実行するために、オペレーティングシステム又は他の管理上のシステムソフトウェアが介入する必要性はなくてよく、及び/又はそれに従う必要性はなくてよい。 Advantageously, user-level branch instructions, as well as user-level synchronization and termination instructions, are explicitly programmed or implemented by a user, programmer, or compiler into branch and join logical constructs or user-level application semantics. It can represent a user-level architectural mechanism that can enable that. The logical configuration of branches and joins need not be defined by the execution time of software, including system calls to threads managed by the operating system (or other administrative system software), which generally Tend to have high overhead (due to, for example, messaging, etc.), and as a result, generally do not actually scale to relatively large workloads or portions of code that are executing in parallel (eg, coarse-grained parallelism). Tends to be limited. Rather, by using these user-level branch instructions and user-level sync and terminate instructions, there is no need for intervention by the operating system or other administrative system software to perform the branches and joins. , And/or need not be followed.
さらに、いくつかの実施形態では、追加のプロセッサ要素上で実行される並列実行(例えば、並列ソフトウェアスレッド)は、オペレーティングシステム又は他の管理上のシステムソフトウェアによって直接管理されなくてもよい。1つの態様では、追加のプロセッサ要素上で実行される並列実行(例えば、並列ソフトウェアスレッド)は、オペレーティングシステム又は他の管理上のシステムソフトウェアには任意に見えなくてよく、又は少なくとも実質的に見えなくてもよい(例えば、これらの並列実行が追加のプロセッサ要素上で実行されていることを、OSは認識しなくてもよい)。それに対し、いくつかの実施形態では、第1のプロセッサ要素上で実行される、ユーザレベルの分岐命令106を有したスレッド又はソフトウェアの部分は、管理上のシステムソフトウェア(例えば、オペレーティングシステムのスレッドスケジューラモジュール)によって、第1のプロセッサ要素102上にスケジューリングされた可能性があり、管理上のシステムソフトウェアには見えてよく、管理上のシステムソフトウェアによって管理されてよい。結果として、ユーザレベルの分岐命令並びにユーザレベルの同期及び終了命令は、そのような並列実行に一般に予想されるオーバーヘッドの量を削減するのに役立つことができる。1つの態様では、ユーザレベルの分岐命令及びユーザレベルの同期及び終了命令は、代わりにオペレーティングシステム(又は他の管理上のシステムソフトウェア)へのコールによるソフトウェア実行時間を介して、スレッドがスケジューリングされて管理されるならば、概して有用であろうと考えられるよりも小さいワークロード又はコードの部分を並列で効率的に実行する(例えば、より細かい粒度の並列処理)のに、任意に/潜在的に用いられてよい。 Moreover, in some embodiments, parallel execution (eg, parallel software threads) running on additional processor elements may not be directly managed by the operating system or other administrative system software. In one aspect, parallel execution (eg, parallel software threads) executing on additional processor elements may not, or at least substantially, be visible to the operating system or other administrative system software. It may be absent (eg, the OS may not be aware that these parallel executions are executing on additional processor elements). In contrast, in some embodiments, the portion of the thread or software having the user-level branch instruction 106 that executes on the first processor element is managed by system software (eg, the operating system thread scheduler). Module) may have been scheduled on the first processor element 102 and may be visible to and managed by administrative system software. As a result, user-level branch instructions and user-level synchronization and termination instructions can help reduce the amount of overhead typically expected for such parallel execution. In one aspect, user-level branch instructions and user-level synchronization and termination instructions are instead thread scheduled through software execution time due to calls to the operating system (or other administrative system software). Used optionally/potentially to efficiently execute in parallel a smaller workload or piece of code than would be useful if managed (eg, finer grain parallelism). You may be taken.
プロセッサ100の詳細な例示的な実施形態が示され説明されたが、様々な代替的な実施形態も考えられる。いくつかの実施形態では、プロセッサは、ユーザレベルの分岐命令を実行することができるが、ユーザレベルの同期及び終了命令を任意に実装しなくてもよい。例えば、プロセッサは、ユーザレベルの分岐命令106を含む命令セットを有する第1のプロセッサ要素102を任意に有してよいが、追加のプロセッサ要素114は、説明されたユーザレベルの同期及び終了命令118を省いた命令セットを有してよい。他の実施形態では、プロセッサは、ユーザレベルの同期及び終了命令を実装してよいが、ユーザレベルの分岐命令を任意に実装しなくてもよい。例えば、プロセッサは、説明されたユーザレベルの同期及び終了命令118を含む命令セットを有する追加のプロセッサ要素114を任意に有してよいが、第1のプロセッサ要素102は、説明されたユーザレベルの分岐命令106を任意に省いた命令セットを有してよい。いくつかの実施形態では、ユーザレベルの同期及び終了命令の代わりに、ユーザレベルの終了命令が、同期機能又は能力を用いずに任意に実装されてよい。例えば、別個の(例えば、異なるオペコードを有する)命令が同期機能を実装するのに用いられてよく、また同期能力を省いたユーザレベルの終了命令と組み合わせて用いられてよい。他の変形形態が、本開示の利益を得る当業者には明らかであろう。
While a detailed exemplary embodiment of
説明をあいまいにしないために、簡略化されたプロセッサ100が示され説明された。しかし、プロセッサは他のコンポーネントを任意に含むことができる。例えば、様々な異なる実施形態が、図9A〜図11のいずれかについて示され説明されるコンポーネントの様々な異なる組み合わせ及び構成を含むことができる。プロセッサのコンポーネントの全てが、動作することを可能にするために、共に接続又は結合されてよい。
In order not to obscure the description, a
図2は、ユーザレベルの分岐命令206の実施形態、及びユーザレベルの複数の同期及び終了命令218の実施形態を用いて実装される分岐結合の論理構成230に関する例を示す図である。分岐結合の論理構成はマスターソフトウェアスレッド232を含み、これは、第1のプロセッサ要素(例えば、第1のプロセッサ要素102)上で実行されてよい。マスターソフトウェアスレッドは、ユーザレベルの分岐命令206を含む。いくつかの実施形態では、ユーザレベルの分岐命令は、少なくとも1つのアドレス(例えば、命令のセットの開始命令のアドレスであり、これは、複数の追加のプロセッサ要素のそれぞれにおいて並列に実行される)を明示的に指定することができる、又はそうでなければ示すことができる。例えば、様々な実施形態では、ユーザレベルの分岐命令は、少なくとも1つのアドレスを明示的に指定する、又はそうでなければ示す(例えば、少なくとも1つのオフセットを当該アドレスに提供する、又はそうでなければ当該アドレスを示す)少なくとも1つの値を有するレジスタ(例えば、アーキテクチャ上の汎用レジスタ)を明示的に指定するフィールドを有してよく、少なくとも1つのアドレスを明示的に指定する、又はそうでなければ示す少なくとも1つの値を有するメモリ位置を明示的に指定し、少なくとも1つのアドレスを明示的に指定する、又はそうでなければ示す少なくとも1つの値を有するレジスタを暗黙に示すフィールドを有してよく、あるいは、少なくとも1つのアドレスを明示的に指定する、又はそうでなければ示す少なくとも1つの値を提供する即値を有する。
FIG. 2 is a diagram illustrating an example of a branch-join logical configuration 230 implemented using an embodiment of a user-
ユーザレベルの分岐命令206は(例えば、第1のプロセッサ要素により)実行された場合、第1のプロセッサ要素に、複数の追加のプロセッサ要素(例えば、追加のプロセッサ要素114)のうちの別々の1つのそれぞれで、複数のヘルパーソフトウェアスレッド236の実行を並列に開始できるプログラム制御フローに分岐(ブランチ又はフォーク)234を生成させ、スケジューリングさせ、そうでなければ構成させることができ、又はそうでなければ分岐234を生じさせることができる。
複数のヘルパーソフトウェアスレッドは、第1のヘルパーソフトウェアスレッド236−1から第Nのヘルパーソフトウェアスレッド236−Nまでを含むことができ、ヘルパーソフトウェアスレッドの数は、特定の実装に適切な任意の必要な数であってよい(例えば、2個から約100個の場合がある)。例として、ヘルパーソフトウェアスレッドは、多くの異なるタイプのプロシージャ又はワークロード、例えば、グラフィックス、オーディオ、信号処理、科学計算、トランザクション、データベース処理、あるいは様々な他のプロシージャ又はワークロードなどを表すことができる。いくつかの実施形態では、ヘルパーソフトウェアスレッドのそれぞれは、ユーザレベルの分岐命令により示される単一の命令アドレスにおいて、同じ命令235の異なる対応するインスタンスを実行することで開始することができる。例えば、ユーザレベルの分岐命令は、対応するヘルパーソフトウェアスレッド236を実行するのに用いられている複数の追加のプロセッサ要素のうちの別々の1つにそれぞれ対応することができる複数のプログラムカウンタ(例えばレジスタ)のそれぞれに、同じ命令アドレスが格納されるようにさせることができる。プログラムカウンタは、当技術分野において、命令ポインタとしても知られている。あるいは、異なる命令アドレスは命令により示されてよく、異なる命令アドレスはプログラムカウンタに格納されてよく、異なる対応する命令は異なるプロセッサ要素により最初に実行されてよい。各ヘルパーソフトウェアスレッドが、その対応する開始命令235を実行した後に、これらのヘルパーソフトウェアスレッドは、異なる順序の命令を任意に/潜在的に実行することができる(例えば、異なる分岐を取ることができる、異なるようにジャンプする又は動き回ることができる、異なるプロシージャコールを行うことができるなど)。有利には、これらの並列ヘルパーソフトウェアスレッドは、データスループット及び/又は性能を高めるのに役立つことができる。例えば、並列ヘルパーソフトウェアスレッドのそれぞれは、並列化可能又はスレッド化可能なワークロード、例えば、グラフィックスワークロード、科学計算ワークロードなどの異なる部分を処理することができる。ワークロード全体に関連した全てのタスクを順に実行する必要があるマスタースレッドではなく、並列ヘルパーソフトウェアスレッドが、ワークロード全体の異なる部分を少なくとも部分的に並列に実行することができる。
The user-
The plurality of helper software threads can include a first helper software thread 236-1 through an Nth helper software thread 236-N, where the number of helper software threads is any required number appropriate to a particular implementation. It may be a number (eg, it may be 2 to about 100). By way of example, a helper software thread may represent many different types of procedures or workloads, such as graphics, audio, signal processing, scientific computing, transactions, database processing, or various other procedures or workloads. it can. In some embodiments, each of the helper software threads may start by executing different corresponding instances of the
ある時点で、ヘルパーソフトウェアスレッド236のうち1つを並列に実行している各プロセッサ要素は、ユーザレベルの同期及び終了命令218の対応するインスタンスを実行することができる。例えば、第1のヘルパーソフトウェアスレッドは、第1のユーザレベルの同期及び終了命令218−1を含むことができ、第Nのヘルパーソフトウェアスレッドは、第Nのユーザレベルの同期及び終了命令218−Nを含むことができる。これらのユーザレベルの同期及び終了命令は、異なるヘルパーソフトウェアスレッドが実行される様々な方法(例えば、分岐、ジャンプなど)に部分的に依存して、異なる時間に実行されてよい。いくつかの実施形態では、ユーザレベルの同期及び終了命令218は、同期バリア238を構成するよう動作してよく、そうでなければ同期バリア238を生じさせるよう動作してよい。いくつかの実施形態では、プロセッサ要素のそれぞれは、対応するユーザレベルの同期及び終了命令218の実行に応答して、対応するヘルパーソフトウェアスレッド236のさらなる命令実行を中止することができ、またヘルパーソフトウェアスレッド236を実行するのに用いられているその他のプロセッサ要素の全てが、その対応するユーザレベルの同期及び終了命令218を実行するまで、同期バリア238で待機することができる(例えば、対応するプログラムカウンタは進まなくてよい)。次に、その他のプロセッサ要素の全てが、その対応するユーザレベルの同期及び終了命令218を実行した場合、最後に実行されたユーザレベルの同期及び終了命令218は、制御フローにおいて、並列ヘルパーソフトウェアスレッド236の実行を終わらせ、マスタースレッド232の適切な結合アドレスにおいて命令242を継続して実行させることができる同期マージ又は同期結合240を生じさせることができる。
At some point, each processor element executing one of the
図3は、実行を中止し、暗黙の同期バリア338で待機するようマスタースレッド332を構成するよう動作する、又はそうでなければマスタースレッド332にそうさせるよう動作するユーザレベルの分岐及び同期結合命令306の実施形態を含む分岐結合コード330のブロック図である。マスタースレッド332は、第1のプロセッサ要素(例えば、プロセッサ要素102)上で動作することができる。マスタースレッドは、ユーザレベルの分岐及び同期結合命令306を含む。ユーザレベルの分岐及び同期結合命令は、実行されると、複数の並列ヘルパーソフトウェアスレッド336がそれぞれ、複数の追加のプロセッサ要素(例えば、追加のプロセッサ要素114)のうちの別々の1つで動作するよう開始され得る制御フローに分岐(ブランチ又はフォーク)334を構成することができ、又はそうでなければ分岐(ブランチ又はフォーク)334を生じさせることができる。この実施形態では、ユーザレベルの分岐及び同期結合命令はまた、実行されると、マスターソフトウェアスレッド332を実行するプロセッサ要素を、マスターソフトウェアスレッド332のさらなる命令の実行を中止し、暗黙の同期バリア338での待機をさらに実行し、その後、プロセッサ要素ユーザレベルの分岐及び同期結合命令(例えば、元のプログラム順序で、ユーザレベルの分岐及び同期結合命令306の直後に続く命令350)により決定される命令アドレスで結合を行うよう構成することができ、又は、そうでなければマスターソフトウェアスレッド332を実行するプロセッサ要素にそうさせることができる。
FIG. 3 illustrates a user-level branch and sync join instruction that operates to abort execution and configure the
いくつかの実施形態では、ユーザレベルの分岐及び同期結合命令は単一の命令アドレスを示すことができ、並列ヘルパーソフトウェアスレッド336のそれぞれは、同じ命令335の対応するインスタンスで実行を開始することができ、その対応するインスタンスは、ユーザレベルの分岐命令306により指定されるか、そうでなければ示される単一の命令アドレスに位置する。並列ヘルパーソフトウェアスレッドのそれぞれは、次に、(例えば、異なる分岐、ジャンプ、プロシージャコールなどに起因して)潜在的に異なるさらなる命令のセットを実行することができる。あるいは、ユーザレベルの分岐命令は、複数の潜在的に/任意に異なる命令アドレスを示すことができ、並列ヘルパーソフトウェアスレッドのそれぞれは、任意に/潜在的に異なる命令アドレスで実行を開始することができる。最終的に、並列ヘルパーソフトウェアスレッドのそれぞれは、通常異なる時間で、ユーザレベルの同期及び終了命令318の対応するインスタンスを実行することができる。プロセッサ要素のそれぞれは、対応するユーザレベルの同期及び終了命令を実行する場合、対応するヘルパーソフトウェアスレッドのさらなる命令の実行を中止することができ、さらなる実行は、マスターソフトウェアスレッド332により監視されている同じ暗黙の同期バリア338で待機することができる。その他の並列ヘルパーソフトウェアスレッドのそれぞれが全て、その対応するユーザレベルの同期及び終了命令を実行した場合、その対応するユーザレベルの同期及び終了命令を実行する最後のプロセッサ要素は、適切な結合アドレス(例えば、ユーザレベルの分岐及び同期結合命令により決定される結合命令アドレス)に戻る制御フローにマージ又は結合340を構成することができる、又はそうでなければそれを生じさせることができる。並列ヘルパーソフトウェアスレッドのそれぞれの実行は、終了することができる。再開されるマスターソフトウェアスレッド332*の実行は、マスタースレッドのユーザレベルの分岐及び同期結合命令の直後に続く命令350を用いて継続することができる。この実施形態において、暗黙という用語は、暗黙の同期バリアに用いられるが、それは、当該同期バリアが、明示的な同期バリアを作成するのに用いられている別個の命令の代わりに、ユーザレベルの分岐及び同期結合命令にとっては暗黙であるか、又は本来備わっているからである。
In some embodiments, the user-level branch and sync join instructions may point to a single instruction address, and each of the parallel
図4は、ユーザレベルの分岐命令406と、マスタースレッド432を、実行を中止し、明示的な同期バリア438で待機するよう構成すべく動作する、又はそうでなければマスタースレッド432にそうさせるよう動作する、別個のユーザレベルの同期及び結合命令452との実施形態を含む分岐結合コード430のブロック図である。
4 operates to configure the user-
マスタースレッド432は、第1のプロセッサ要素(例えば、プロセッサ要素102)上で動作することができる。マスタースレッドは、ユーザレベルの分岐命令406を含む。ユーザレベルの分岐命令は、実行されると、複数の並列ヘルパーソフトウェアスレッド436がそれぞれ、複数の追加のプロセッサ要素(例えば、追加のプロセッサ要素114)のうちの別々の1つで動作するよう開始され得る制御フローに分岐(ブランチ又はフォーク)434を構成することができる、又はそうでなければ分岐(ブランチ又はフォーク)434を生じさせることができる。この実施形態では、ユーザレベルの分岐命令406は、実行されると、マスターソフトウェアスレッド432を実行しているプロセッサ要素にさらなる命令の実行を中止させることも、同期バリアで待機させることもしない。むしろ、プロセッサ要素は、マスタースレッドにおいて元のプログラム順序でユーザレベルの分岐命令406の直後にある命令450を含むマスターソフトウェアスレッドの1つ又は複数のさらなる命令を継続して実行することができる。
マスターソフトウェアスレッドは、ユーザレベルの同期及び結合命令452も含むことができる。ユーザレベルの同期及び結合命令は、実行されると、マスターソフトウェアスレッドを実行するプロセッサ要素を、マスターソフトウェアスレッドのさらなる命令の実行を中止し、再開される実行のために、明示的な同期バリア438で待機するよう構成すべく動作することができる、又はそうでなければマスターソフトウェアスレッドを実行するプロセッサ要素にそうさせるよう動作することができる。いくつかの実施形態では、ユーザレベルの同期及び結合命令452は、ユーザレベルの分岐命令406と異なるオペコードを有することができる。いくつかの実施形態では、ユーザレベルの同期及び結合命令452は、ユーザレベルの同期及び終了命令418と同じオペコードを有することができる。他の実施形態では、ユーザレベルの同期及び結合命令452は、ユーザレベルの同期及び終了命令418と異なるオペコードを有することができる。
The master software thread may also include user-level synchronization and
いくつかの実施形態では、ユーザレベルの分岐命令は、単一の命令アドレスを任意に示すことができ、並列ヘルパーソフトウェアスレッド436のそれぞれは、同じ命令435の対応するインスタンスで実行を開始することができ、その対応するインスタンスは、ユーザレベルの分岐命令406により指定されるか、そうでなければ示される単一の命令アドレスに位置する。並列ヘルパーソフトウェアスレッドのそれぞれは、次に、(例えば、異なる分岐、ジャンプ、プロシージャコールなどに起因して)潜在的に異なるさらなる命令のセットを実行することができる。あるいは、ユーザレベルの分岐命令は、複数の潜在的に/任意に異なる命令アドレスを示すことができ、並列ヘルパーソフトウェアスレッドのそれぞれは、任意に/潜在的に異なる命令アドレスで実行を開始することができる。最終的に、並列ヘルパーソフトウェアスレッドのそれぞれは、通常異なる時間で、ユーザレベルの同期及び終了命令418の対応するインスタンスを実行することができる。プロセッサ要素のそれぞれは、対応するユーザレベルの同期及び終了命令を実行する場合、対応するヘルパーソフトウェアスレッドのさらなる命令の実行を中止することができ、さらなる実行は、ユーザレベルの同期及び結合命令452に起因して、マスターソフトウェアスレッド432により監視されている同じ明示的な同期バリア438で待機することができる。その他の並列ヘルパーソフトウェアスレッドのそれぞれが全て、その対応するユーザレベルの同期及び終了命令を実行した場合、その対応するユーザレベルの同期及び終了命令を実行する最後のプロセッサ要素は、制御フローに同期マージ又は同期結合440を構成することができる、又はそうでなければそれを生じさせることができる。並列ヘルパーソフトウェアスレッドのそれぞれの実行は、終了することができる。再開されるマスターソフトウェアスレッド432*の実行は、例えば、マスタースレッドにおいて元のプログラム順序でユーザレベルの同期及び結合命令452の直後に続く命令454など、ユーザレベルの同期及び結合命令により決定される適切な結合アドレスにおいて命令を継続することができる。
In some embodiments, a user-level branch instruction may optionally point to a single instruction address, and each of the parallel
前述したように、第1のプロセッサ要素(例えば、第1のプロセッサ要素102)は、ユーザレベルの分岐命令(例えば、ユーザレベルの分岐命令106)の実施形態を実行することができ、複数の追加のプロセッサ要素(例えば、追加のプロセッサ要素114)のそれぞれは、ユーザレベルの同期及び終了命令(例えば、ユーザレベルの同期及び終了命令118)の実施形態を実行することができる。いくつかの実施形態では、同種のプロセッサ要素が、第1のプロセッサ要素と、追加のプロセッサ要素のそれぞれとに用いられてよい。他の実施形態では、第1のプロセッサ要素は、追加のプロセッサ要素のそれぞれと比べて、異種又は異なる設計を有することができる。 As mentioned above, the first processor element (eg, the first processor element 102) can execute an embodiment of a user-level branch instruction (eg, the user-level branch instruction 106), with multiple additions. Of each processor element (eg, additional processor element 114) may execute an embodiment of a user-level synchronization and termination instruction (eg, user-level synchronization and termination instruction 118). In some embodiments, similar processor elements may be used for the first processor element and each of the additional processor elements. In other embodiments, the first processor element can have a heterogeneous or different design as compared to each of the additional processor elements.
図5は、ユーザレベルの分岐命令を含むシリアルスレッドを実行するのに適した第1のプロセッサ要素502と、ユーザレベルの同期及び終了命令を含む複数の並列スレッドのうちの1つを実行するのに適した追加のプロセッサ要素514とを含む、一対の同種のプロセッサ要素560に関する例示的な実施形態のブロック図である。一対の同種のプロセッサ要素は、実質的に同一であってよい。例えば、同種のプロセッサ要素のそれぞれは、同一の設計を用いたコア、ハードウェア、スレッドなどであってよい。いくつかの実施形態では、第1のプロセッサ要素及び追加のプロセッサ要素の両方は、同じ命令セット504を有することができ、第1のプロセッサ要素及び追加のプロセッサ要素の両方は、アーキテクチャ機能562(例えば、アーキテクチャレジスタ、データタイプなど)の同じセットを有することができ、また第1のプロセッサ要素及び追加のプロセッサ要素の両方は、同じマイクロアーキテクチャ564を有することができる。
FIG. 5 illustrates a first processor element 502 suitable for executing a serial thread containing a user-level branch instruction and executing one of a plurality of parallel threads containing user-level synchronization and termination instructions. FIG. 6 is a block diagram of an exemplary embodiment of a pair of like processor elements 560, including additional processor elements 514 suitable for. A pair of like processor elements may be substantially identical. For example, each of the same type of processor elements may be cores, hardware, threads, etc. using the same design. In some embodiments, both the first processor element and the additional processor element can have the
あるいは、同種のプロセッサ要素を用いるのではなく、異種のプロセッサ要素を用いることに利点がある場合がある。例えば、シリアルスレッドを実行するプロセッサ要素とは異なるように、並列スレッドを実行するプロセッサ要素を設計又は最適化することが有利である場合がある。図6は、ユーザレベルの分岐命令を含むシリアルスレッドを実行するのに適した第1のプロセッサ要素602と、ユーザレベルの同期及び終了命令を含む複数の並列スレッドのうちの1つを実行するのに適した追加のプロセッサ要素614とを含む、一対の異種のプロセッサ要素668に関する例示的な実施形態のブロック図である。
Alternatively, it may be advantageous to use different types of processor elements rather than the same type of processor elements. For example, it may be advantageous to design or optimize processor elements that execute parallel threads differently than processor elements that execute serial threads. FIG. 6 illustrates a first processor element 602 suitable for executing a serial thread that includes a user-level branch instruction, and one of a plurality of parallel threads that include a user-level synchronization and termination instruction. 2 is a block diagram of an exemplary embodiment of a pair of
異種のプロセッサ要素は、異なる実施形態の様々な点で異なっていてよい。示されるように、いくつかの実施形態では、第1のプロセッサ要素の命令セット604は、追加のプロセッサ要素の命令セット616と任意に異なっていてよい。例えば、両方の命令セットは重複する命令670のセットを含むことができるが、第1のプロセッサ要素の命令セットは、追加のプロセッサ要素の命令セット616に含まれていない1つ又は複数の重複しない命令671を任意に含むことができる、及び/又は、追加のプロセッサ要素の命令セットは、第1のプロセッサ要素の命令セット604に含まれていない1つ又は複数の重複しない命令672のセットを任意に含むことができる。1つの例として、いくつかの実施形態では、追加のプロセッサ要素614(すなわち、並列スレッド及びユーザレベルの同期及び終了命令を実行するもの)は任意に、ユーザレベル又は非特権レベルの実行特権のみに専用であってよい。そのような実施形態では、追加のプロセッサ要素は、第1のプロセッサ要素の命令セットに含まれる全ての特権レベル又は非ユーザレベルの命令を任意に省くことができる。他の実施形態では、命令セットは、様々な点で異なっていてよい。例えば、並列スレッドを対象とした所与のタイプのコードを実行するのに必要ではない命令はいずれも、追加のプロセッサ要素の命令セットから任意に省かれてよい。
Heterogeneous processor elements may differ in various respects of different embodiments. As shown, in some embodiments, the
示されるように、いくつかの実施形態では、第1のプロセッサ要素のマイクロアーキテクチャ664は、追加のプロセッサ要素のマイクロアーキテクチャ674と任意に異なっていてよい。例えば、いくつかの実施形態では、第1のプロセッサ要素のマイクロアーキテクチャは、命令実行レイテンシの削減を重視するよう任意に設計されてよく、追加のプロセッサ要素のマイクロアーキテクチャは、実行レイテンシの削減をあまり重視せず、むしろスループットの増加を重視するよう任意に設計されてよい。例えば、レイテンシを削減するために、アウトオブオーダ実行及び/又は他の精巧なメカニズムが任意に利用されてよい。しかし、アウトオブオーダ実行リソース及び他のそのような精巧なリソースは、最大並列スループットを実現するプロセッサを設計する能力と競合しやすい場合がある。例えば、各コアが、アウトオブオーダ及び/又は他の精巧なリソースを収容するには比較的大きい場合、そのようなリソースを省いたより小さいコアの数と比較して、これらのより大きいコアのより少数が、同じサイズのダイ上に合致することができる場合がある。代わりに、より小さいコアのより多くがダイ上に含まれていた場合、より多くのスレッドを実行することで、これらのスレッドのそれぞれがより高いレイテンシを有していても、より高いスループットが実現される場合がある。そのようなスレッドが多く存在する場合、スレッドを実行状態にしておくことが、個々のスレッドのレイテンシを削減させるよりも重要になる。また、アウトオブオーダ実行リソースは、同じスループットに対してより多くの電力を消費しやすい場合がある。 As shown, in some embodiments, the first processor element microarchitecture 664 may optionally be different from the additional processor element microarchitecture 674. For example, in some embodiments, the micro-architecture of the first processor element may be arbitrarily designed to focus on reducing instruction execution latency, and the micro-architecture of the additional processor element may reduce execution latency less. It may be arbitrarily designed so as not to emphasize, but rather to increase throughput. For example, out-of-order execution and/or other sophisticated mechanisms may optionally be utilized to reduce latency. However, out-of-order execution resources and other such sophisticated resources may be susceptible to competing with the ability to design a processor that achieves maximum parallel throughput. For example, if each core is relatively large to accommodate out-of-order and/or other delicate resources, these larger cores may be compared to the number of smaller cores that omit such resources. Fewer may be able to fit on the same size die. Instead, if more of the smaller cores were included on the die, then running more threads would result in higher throughput, even though each of these threads would have higher latency. May be done. When there are many such threads, keeping the threads in a running state is more important than reducing the latency of individual threads. Also, out-of-order execution resources may tend to consume more power for the same throughput.
したがって、いくつかの実施形態では、第1のプロセッサ要素のマイクロアーキテクチャは任意に、アウトオブオーダ実行のマイクロアーキテクチャであってよく、追加のプロセッサ要素のマイクロアーキテクチャは任意に、インオーダのマイクロアーキテクチャ、実質的にインオーダのマイクロアーキテクチャ、又は少なくとも第1のプロセッサ要素のマイクロアーキテクチャより著しくインオーダのマイクロアーキテクチャであってよい。いくつかの実施形態では、第1のプロセッサ要素のマイクロアーキテクチャは、1つ又は複数のアウトオブオーダ実行リソース675を含むことができ、追加のプロセッサ要素のマイクロアーキテクチャは、そのようなアウトオブオーダ実行リソースを任意に省く(677)ことができる。そのようなアウトオブオーダリソースの例には、限定されないが、リザベーションステーション、命令バッファ、又は、命令をその入力オペランドが利用可能になるまで格納する他の命令キュー、命令を実行ユニットにアウトオブオーダで発行するアウトオブオーダ発行ユニット、命令を並べ替えてその結果を元のプログラム順序に戻すリオーダバッファ又は他の命令バッファ又はキュー、及びアウトオブオーダで実行された命令の結果を元のプログラム順序のアーキテクチャ状態にコミットするコミットユニットが含まれる。様々な実施形態では、第1のプロセッサ要素(すなわち、ユーザレベルの分岐命令を実行するもの)はコミットユニットを有することができるが、追加のプロセッサ要素(すなわち、ユーザレベルの同期及び終了命令を実行するもの)はそれを有していなくてもよく、及び/又は、第1のプロセッサ要素はリオーダバッファを有することができるが、追加のプロセッサ要素はそれを有していなくてもよく、及び/又は、第1のプロセッサ要素はリザベーションステーションを有することができるが、追加のプロセッサ要素はそれを有していなくてもよい。いくつかの実施形態では、第1のプロセッサ要素は比較的低い平均命令実行レイテンシを有することができ、追加のプロセッサ要素は比較的高い平均命令実行レイテンシを有することができる。 Thus, in some embodiments, the first processor element microarchitecture may optionally be an out-of-order execution microarchitecture, and the additional processor element microarchitecture may optionally be an in-order microarchitecture, substantially. In particular, it may be an in-order micro-architecture, or at least significantly an in-order micro-architecture than the micro-architecture of the first processor element. In some embodiments, the first processor element micro-architecture may include one or more out-of-order execution resources 675, and the additional processor element micro-architecture may include such out-of-order execution resources. Resources can be optionally omitted (677). Examples of such out-of-order resources include, but are not limited to, reservation stations, instruction buffers, or other instruction queues that store instructions until their input operands are available, instructions out-of-order to an execution unit. The out-of-order issue unit, the reorder buffer or other instruction buffer or queue that reorders the instructions and returns the results to the original program order, and the results of the instructions executed out-of-order in the original program order. Contains a commit unit that commits to architectural state. In various embodiments, the first processor element (ie, the one executing a user-level branch instruction) may have a commit unit, but the additional processor element (ie, executing a user-level synchronization and termination instruction). Which does not have it, and/or the first processor element may have a reorder buffer, but the additional processor element may not have it, and/or Alternatively, the first processor element may have a reservation station, but the additional processor element may not. In some embodiments, the first processor element may have a relatively low average instruction execution latency and the additional processor element may have a relatively high average instruction execution latency.
別の例として、いくつかの実施形態では、ユーザレベルの分岐命令(例えば、マスタースレッド)を有する1つのタイプのコードを実行するのに必要とされる、又はそうするのに比較的役立つが、ユーザレベルの同期及び終了命令(例えば、並列ヘルパースレッドのうちの1つ)を有する別のタイプのコードを実行するのに必要とされず、そうするのにそれほど役立つものでもない、1つ又は複数のマイクロアーキテクチャリソースは、第1のプロセッサ要素602に任意に含まれてよいが、追加のプロセッサ要素614から任意に省かれてよい。いくつかの実施形態では、異なるタイプのコード又はオブジェクトは、第1のプロセッサ要素を対象としてよく、それに応じて追加のプロセッサ要素及びそのマイクロアーキテクチャは異なってよい。いくつかの実施形態では、追加のプロセッサ要素のマイクロアーキテクチャは、簡略化されたスレッド相互依存及び/又は順序化リソース678を任意に含むことができ、これは第1のプロセッサ要素のマイクロアーキテクチャのスレッド相互依存及び/又は順序化リソース676に対して任意に簡略化されてよい。1つの態様では、第1のプロセッサ要素及び追加のプロセッサ要素の両方は、共有メモリにアクセスすることに関連した順序化ルールに従う必要があり得るが、追加のプロセッサ要素はインオーダであるか、アウトオブオーダの第1のプロセッサ要素より少なくともインオーダであり得るので、そのような共有メモリアクセスの順序化ルールを実施する追加のプロセッサ要素内のメカニズムは、簡略化されてよい。換言すれば、アウトオブオーダの第1のプロセッサ要素で必要となることが多い複雑性は、インオーダ又はよりインオーダの追加のプロセッサ要素から任意に省かれてよい。例えば、メモリアクセスフェンス命令(例えば、ストアフェンス命令、ロードフェンス命令、メモリフェンス命令など)を実装するメカニズムは、追加のプロセッサ要素では、第1のプロセッサ要素のメカニズムに対して任意に簡略化されてよい。他の実施形態では、第1のプロセッサ要素のマイクロアーキテクチャに含まれる他のマイクロアーキテクチャリソースは、並列コード(例えば、並列ヘルパースレッド)がこれらのリソースを必要としない、又はこれらのリソースを有することでそれほど大きな利益を得ない場合、追加のプロセッサ要素のマイクロアーキテクチャから任意に省かれてよい。
As another example, in some embodiments, required or relatively helpful to execute one type of code having a user-level branch instruction (eg, master thread), One or more that are not required to execute another type of code that has user-level synchronization and termination instructions (eg, one of the parallel helper threads) and are not very helpful in doing so The micro-architecture resources of may be optionally included in the first processor element 602, but may be optionally omitted from the
別の例として、いくつかの実施形態では、追加のプロセッサ要素(例えば、追加のプロセッサ要素614を含む)は、第1のプロセッサ要素602により共有されないリソースを共有することができ、及び/又は追加のプロセッサ要素(例えば、追加のプロセッサ要素614を含む)は、第1のプロセッサ要素602より大きな程度でリソースを共有することができる。1つの例として、いくつかの実施形態では、より多数の追加のプロセッサ要素614がデコーダを共有することができ、より少数の第1のプロセッサ要素602がデコーダを共有することができる。例えば、様々な実施形態では、1個から約10個、又は1個から約5個の第1のプロセッサ要素602がデコーダを共有することができ、10個から300個、又は20個から300個、又は50個から300個の追加のプロセッサ要素614がデコーダを共有することができる。いくつかの実施形態では、追加のプロセッサ要素614は復号された命令のキャッシュを利用することができ、通常、追加のプロセッサ要素がほとんどの場合に同じ又は類似の命令を実行することができるので、復号された命令はキャッシュにすでに存在することがあり、そのため、より異種のコードを実行する第1のプロセッサ要素に概して有用であろうと考えられるよりも多数の追加のプロセッサ要素によってデコーダが利用されてよい。
As another example, in some embodiments, additional processor elements (eg, including additional processor element 614) may share resources that are not shared by first processor element 602, and/or additional Processor elements of (eg, including additional processor element 614) may share resources to a greater extent than the first processor element 602. As one example, in some embodiments, a larger number of
別の例として、いくつかの実施形態では、より多数の追加のプロセッサ要素614が最下位レベルのキャッシュ又はレベル1(L1)キャッシュを共有することができ、このキャッシュは、最下位レベルのキャッシュ又はレベル1(L1)キャッシュを共有する複数の第1のプロセッサ要素又は要素602と比較して、実行ユニットに最も近い。例えば、様々な実施形態では、1個から8個、又は1個から4個の第1のプロセッサ要素602がL1キャッシュを共有することができ、10個を超える、又は20個を超える追加のプロセッサ要素がL1キャッシュを共有することができる。
As another example, in some embodiments, a larger number of
図7は、ユーザレベルの分岐命令706の実施形態を実行するプロセッサ700に関する、例示的な実施形態のブロック図である。プロセッサは,第1のプロセッサ要素702と、第1の追加のプロセッサ要素714−1から第Nの追加のプロセッサ要素714−Nまでを含む複数の追加のプロセッサ要素714とを含む。第1のプロセッサ要素は、命令フェッチユニット781を有する。フェッチユニットは、第1のプロセッサ要素のプログラムカウンタ783からの、フェッチする次の命令のインジケーションに基づいて、例えばメモリからユーザレベルの分岐命令をフェッチすることができる。ユーザレベルの分岐命令は、マクロ命令、アセンブリ言語命令、機械語命令、あるいは第1のプロセッサ要素の命令セットの他の命令又は制御信号を表すことができる。いくつかの実施形態では、ユーザレベルの分岐命令は、少なくとも1つの命令アドレスを(例えば、1つ又は複数のフィールド、又は一連のビットによって)明示的に指定する、又はそうでなければ示す(例えば、暗黙に示す)ことができる。前述した命令アドレスを示す様々な方法が好適である。
FIG. 7 is a block diagram of an exemplary embodiment of a
フェッチユニットは、ユーザレベルの分岐命令を復号ユニット708に提供することができる。復号ユニットは、ユーザレベルの分岐命令を復号することができる。復号ユニットは、1つ又は複数の比較的低水準の命令又は制御信号(例えば、1つ又は複数のマイクロ命令、マイクロオペレーション、マイクロコードエントリポイント、復号された命令又は制御信号など)を出力することができ、それらが、比較的高水準のユーザレベルの分岐命令を反映する、表す、及び/又は比較的高水準のユーザレベルの分岐命令から得られる。いくつかの実施形態では、復号ユニットは、ユーザレベルの分岐命令を受信する1つ又は複数の入力機構(例えば、ポート、相互接続、インタフェース)と、そこに結合され、ユーザレベルの分岐命令を認識して復号する命令認識及び復号ロジックと、そこに結合され、低水準の命令又は制御信号を出力する1つ又は複数の出力機構(例えば、ポート、相互接続、インタフェース)とを含むことができる。復号ユニットは、様々な異なるメカニズムを用いて実装されてよく、それらのメカニズムには、限定されないが、マイクロコードリードオンリメモリ(ROM)、ルックアップテーブル、ハードウェア実装、プログラマブルロジックアレイ(PLA)、及び復号ユニットを実装するのに適した他のメカニズムが含まれる。
The fetch unit may provide a user level branch instruction to the
ユーザレベルのスレッド分岐モジュール710が、復号ユニット708に結合される。ユーザレベルのスレッド分岐モジュールは、ユーザレベルの分岐命令を実行又は実装する1つ又は複数の実行ユニットを表すことができる。ユーザレベルのスレッド分岐モジュールは、ユーザレベルの分岐命令を表す、及び/又はユーザレベルの分岐命令から得られる、1つ又は複数の復号された命令、あるいはそうでなければ変換された命令又は制御信号を受信することができる。ユーザレベルのスレッド分岐モジュール及び/又はプロセッサは、(例えば、ユーザレベルの分岐命令から復号された1つ又は複数の命令又は制御信号に応答して)ユーザレベルの分岐命令を実行するよう動作する具体的なロジック又は特定のロジック(例えば、トランジスタ、集積回路、あるいはファームウェア(例えば、不揮発性メモリに格納された命令)及び/又はソフトウェアと組み合わされる可能性のある他のハードウェア)を含むことができる。ユーザレベルのスレッド分岐モジュールは、ユーザレベルの分岐命令に応答して、及び/又はその結果として(例えば、命令から復号された1つ又は複数の命令又は制御信号に応答して)、複数の追加のプロセッサ要素714のそれぞれを、ユーザレベルの分岐命令により示される1つ又は複数の命令アドレスから始めて、命令を並列に実行するよう構成すべく動作してよい。
User level
いくつかの実施形態では、命令に応答するユーザレベルのスレッド分岐モジュールは、第1のプロセッサ要素、及び追加のプロセッサ要素それぞれの両方にアクセス可能な1つ又は複数の記憶位置785に、1つ又は複数の命令アドレス786を格納することができる。示されるように、いくつかの実施形態では、命令アドレス786−1から786−Nは、並列処理に用いられる追加のプロセッサ要素714−1から714−Nのそれぞれのために任意に格納されてよい。前述したように、いくつかの実施形態では、同じ単一のアドレスが追加のプロセッサ要素それぞれのために格納されてよく、他の実施形態では、潜在的に/任意に異なる命令アドレス(例えば、ベクトルレジスタの異なるデータ要素からのもの)が追加のプロセッサ要素それぞれのために格納されてよい。追加のプロセッサ要素のそれぞれは、1つ又は複数の命令アドレス786にアクセスして、その命令アドレスから並列処理を始めることができる。いくつかの実施形態では、追加のプロセッサ要素のそれぞれは、この命令アドレスを、対応するプログラムカウンタ又は命令ポインタにコピー又は格納することができる。あるいは、ユーザレベルのスレッド分岐モジュールは、ユーザレベルの分岐命令に応答して、このアドレスを直接、プログラムカウンタ又は命令ポインタのそれぞれに格納するよう動作することができる。
In some embodiments, the user-level thread branching module responsive to the instructions may include one or
第1のプロセッサ要素は、アーキテクチャ状態784も有する。いくつかの実施形態では、アーキテクチャ状態784は、1つ又は複数のアーキテクチャレジスタ、例えば、汎用レジスタ、パックドデータレジスタ、浮動小数点レジスタ、ステータスレジスタなどのコンテンツ又は値を、可能性として第1のプロセッサ要素の他のアーキテクチャ状態と共に含むことができる。いくつかの実施形態では、命令に応答するユーザレベルのスレッド分岐モジュールは、アーキテクチャ状態784の一部又は全ての1つ又は複数のコピーを、アーキテクチャ状態787として、1つ又は複数の記憶位置785に格納することができる。1つの実施形態では、アーキテクチャ状態は、前述したように、プロセッサのアーキテクチャレジスタの1つ又は複数のセットの値又はコンテンツを含むことができる。示されるように、いくつかの実施形態では、アーキテクチャ状態787−1から787−Nの異なる対応したコピーが、並列処理に用いられる追加のプロセッサ要素714−1から714−Nのそれぞれのために任意に格納されてよい。続いて、追加のプロセッサ要素のそれぞれは、アーキテクチャ状態の1つ又は複数のセットにアクセスして、そのアーキテクチャ状態を並列処理に用いることができる。いくつかの実施形態では、追加のプロセッサ要素のそれぞれは、このアーキテクチャ状態を、追加のプロセッサ要素のそれぞれに対応するローカルストレージ、例えば、アーキテクチャレジスタの複製セット、1つ又は複数のキャッシュ(例えば、レジスタキャッシュ)、あるいは他のローカルストレージデバイスなどに、任意にコピー又は格納することができる。
The first processor element also has an architectural state 784. In some embodiments, the architectural state 784 includes the content or value of one or more architectural registers, eg, general purpose registers, packed data registers, floating point registers, status registers, and possibly the first processor element. Can be included with other architectural states of the. In some embodiments, the user-level thread branching module responsive to the instruction may place one or more copies of some or all of architectural state 784 into architectural state 787 in one or
別の実施形態には、別のタイプの記憶位置785が好適である。好適な記憶位置の例には、限定されないが、第1のプロセッサ要素の1つ又は複数のレジスタ、追加のプロセッサ要素の1つ又は複数のレジスタ、第1のプロセッサ要素と追加のプロセッサ要素のそれぞれとによって共有されるメモリのメモリ位置など、及びこれらの組み合わせが含まれる。いくつかの実施形態では、記憶位置は、第1のプロセッサ要素と追加のプロセッサ要素のそれぞれとによって共有され、並列処理制御データ構造体を実装するのに用いられる、ユーザがアドレス可能なメモリ空間の1つ又は複数のメモリ位置を表すことができる。いくつかの実施形態では、この並列処理制御データ構造体は、オペレーティングシステムにより用いられるプロシージャコールスタックから分かれている。いくつかの実施形態では、この並列処理制御データ構造体は、第1のプロセッサ要素、及び追加のプロセッサ要素それぞれの両方にアクセス可能であってよく、第1のプロセッサ要素と追加のプロセッサ要素のそれぞれとの間で、特定の実装に必要な様々な異なるタイプの制御及びデータを受け渡すのに用いられてよい。あるいは、様々な他のタイプの記憶位置が、代わりに任意に用いられてもよい。
Other types of
いくつかの実施形態では、1つ又は複数の命令アドレス、及びアーキテクチャ状態の1つ又は複数のセットが格納された後に、ユーザレベルのスレッド分岐モジュールが、命令に応答して、追加のプロセッサ要素のそれぞれを起動(activate or initiate)し、並列処理を始めるために1つ又は複数の制御信号を送信することができる。あるいは、他の実施形態では、この追加のオペレーションは、他の基準(例えば、プログラムカウンタ又は記憶位置785にプログラムされている値、記憶位置785にプログラムされているアーキテクチャ状態など)に基づいて推測され得るので、任意に省かれてもよい。いくつかの実施形態では、これらの追加のプロセッサ要素を起動して並列処理を実行するために、オペレーティングシステムからの創出を必要としなくてよく、またオペレーティングシステムに従う必要もなくてよい。
In some embodiments, the user-level thread branching module is responsive to the instruction to store additional processor elements after the one or more instruction addresses and the one or more sets of architectural states are stored. Each can be activated or initiated and one or more control signals can be sent to initiate parallel processing. Alternatively, in other embodiments, this additional operation is inferred based on other criteria (eg, a program counter or a value programmed into
いくつかの実施形態では、ユーザレベルの分岐命令は任意に、スレッドに同期バリアを課してもよく、又は第1のプロセッサ要素に他のコード実行を課してもよいが、これは必須ではない(例えば、別個のユーザレベルの同期及び結合命令が任意に用いられてよい)。示されるように、そのような実施形態では、第1のプロセッサ要素は、同期結合モジュール782を任意に含むことができる。同期結合モジュールは、復号ユニットに結合されてよい。いくつかの実施形態では、ユーザレベルの分岐命令に応答して、同期結合モジュールは、プログラムカウンタ783をフリーズする、又はそうでなければプログラムカウンタにインクリメントを中止させるよう動作することができる。これにより、スレッド及び/又は第1のプロセッサ要素によるさらなる命令の実行を中止させることができる。示されるように、同期結合モジュールは、同期バリア機構788に結合されてよい。複数の追加のプロセッサ要素もそれぞれ、同期バリア機構に結合されてよい。追加のプロセッサ要素のそれぞれは、ユーザレベルの同期及び終了命令を実行する場合、同期バリア機構内の対応する状態を更新することができる。1つの例として、同期バリア機構は、追加のプロセッサ要素のうちの1つが、そのユーザレベルの同期及び終了命令を実行するたびに、インクリメントされるかデクリメントされるカウンタであってよい。別の例として、同期バリア機構は、追加のプロセッサ要素のそれぞれに対して対応する異なるビットを有するレジスタを含むことができ、対応するビットは、追加のプロセッサ要素のそれぞれがそのユーザレベルの同期及び終了命令を実行する場合、特定の実装に必要なようにセットされるかクリアされてよい。同期結合モジュール782は、同期バリア機構内の状態を監視することができ、追加のプロセッサ要素の全てがその対応するユーザレベルの同期及び終了命令を実行したことを状態が示す場合、プログラムカウンタ783にインクリメントを再開させることができる。次にフェッチユニットはさらなる命令をフェッチすることができ、この命令は、スレッド、又はコードの他の部分が第1のプロセッサ要素により継続して実行されるので、復号され実行されてよい。
In some embodiments, the user-level branch instruction may optionally impose a synchronization barrier on the thread or other code execution on the first processor element, although this is not required. (Eg, separate user-level sync and join instructions may optionally be used). As shown, in such an embodiment, the first processor element may optionally include a
図8は、ユーザレベルの同期及び終了命令818の実施形態を実行するプロセッサ800に関する、例示的な実施形態のブロック図である。プロセッサは、ユーザレベルの同期及び終了命令を実行する追加のプロセッサ要素814を含む。プロセッサは、(例えば、限定されるものではないが、ユーザレベルの同期及び終了命令(例えば、命令706)を先に実行した可能性がある)第1のプロセッサ要素802も含む。追加のプロセッサ要素は、追加のプロセッサ要素のプログラムカウンタ883からの、フェッチする次の命令のインジケーションに基づいて、(例えば、メモリから)ユーザレベルの同期及び終了命令をフェッチすることができる命令フェッチユニット881を有する。ユーザレベルの同期及び終了命令は、マクロ命令、アセンブリ言語命令、機械語命令、あるいは追加のプロセッサ要素の命令セットの他の命令又は制御信号を表すことができる。
FIG. 8 is a block diagram of an exemplary embodiment of a processor 800 executing an embodiment of user-level synchronization and termination instructions 818. The processor includes an
フェッチユニットは、ユーザレベルの同期及び終了命令を復号ユニット808に提供することができる。復号ユニットは、ユーザレベルの同期及び終了命令818を復号することができる。復号ユニットは、1つ又は複数の比較的低水準の命令又は制御信号(例えば、1つ又は複数のマイクロ命令、マイクロオペレーション、マイクロコードエントリポイント、復号された命令又は制御信号など)を出力することができ、それらが、比較的高水準のユーザレベルの同期及び終了命令を反映する、表す、及び/又は比較的高水準のユーザレベルの分岐命令から得られる。復号ユニットは、本明細書で説明される他のデコーダと同じ手法を用いて実装されてよい。 The fetch unit may provide user level synchronization and termination instructions to the decoding unit 808. The decryption unit is capable of decrypting the user level synchronization and termination instruction 818. The decoding unit outputs one or more relatively low level instruction or control signals (eg, one or more microinstructions, microoperations, microcode entry points, decoded instruction or control signals, etc.). , Which reflect, represent, and/or derive from relatively higher levels of user-level branch instructions. The decoding unit may be implemented using the same techniques as other decoders described herein.
ユーザレベルの同期スレッド終了ユニット、つまりモジュール890が、復号ユニット808の出力に結合される。ユーザレベルの同期スレッド終了モジュールは、ユーザレベルの同期及び終了命令を実行又は実装する1つ又は複数の実行ユニットを表すことができる。ユーザレベルの同期スレッド終了モジュールは、ユーザレベルの同期及び終了命令を表す、及び/又はユーザレベルの同期及び終了命令から得られる、1つ又は複数の復号された命令、あるいはそうでなければ変換された命令又は制御信号を受信することができる。ユーザレベルの同期スレッド終了モジュール及び/又はプロセッサは、(例えば、ユーザレベルの同期及び終了命令から復号された1つ又は複数の命令又は制御信号に応答して)ユーザレベルの同期及び終了命令を実行するよう動作する具体的なロジック又は特定のロジック(例えば、トランジスタ、集積回路、あるいはファームウェア(例えば、不揮発性メモリに格納された命令)及び/又はソフトウェアと組み合わされる可能性のある他のハードウェア)を含むことができる。ユーザレベルの同期スレッド終了モジュールは、ユーザレベルの同期及び終了命令に応答して及び/又はその結果として(例えば、命令から復号された1つ又は複数の命令又は制御信号に応答して)、さらなる命令の実行を中止し、また他の全ての追加のプロセッサ要素(例えば、同じユーザレベルの分岐命令によって開始されたもの)が、その対応するユーザレベルの同期及び終了命令を実行するまで、及び/又は同期バリアに到達するまで、同期バリアにおいて待機する追加のプロセッサ要素を構成する、それを生じさせる、又はそうでなければそれをもたらすよう動作することができる。いくつかの実施形態では、これは、さらなる命令がフェッチされることも処理されることもないように、プログラムカウンタをフリーズ又は停止させるために、信号891をプログラムカウンタ883に送信する、又はそうでなければ提供する同期スレッド終了モジュールを含むことができる。いくつかの実施形態では、これは、追加のプロセッサ要素がそのユーザレベルの同期及び結合命令を実行していること、及び/又は同期バリアに到達したことを示すために、信号892を任意の同期バリア機構888に送信する、又はそうでなければ提供する同期スレッド終了モジュールを含むことができる。前述したように、バリア機構を実装する異なる方法が可能であり、その方法には、例えば、追加のプロセッサ要素の異なるいくつかに異なるビットを有するレジスタ、インクリメント又はデクリメントするカウンタなどがある。
A user level sync thread termination unit,
いくつかの実施形態では、追加のプロセッサ要素が、所与のユーザレベルの分岐命令により起動された、同期バリアに到達する全ての追加のプロセッサ要素のうちの最後である場合、ユーザレベルの同期スレッド終了モジュールは、追加のプロセッサ要素のそれぞれが対応するユーザレベルの同期及び終了命令を実行した後に、第1のプロセッサ要素上のスレッドに制御を戻すよう動作することができる。例えば、いくつかの実施形態では、バリアに到達する最後の追加のプロセッサ要素の同期スレッド終了モジュールは、追加のプロセッサ要素の全てがバリアに到達したこと、結合が完了し、第1のプロセッサ要素上のスレッド実行が再開することを示すために、信号893を第1のプロセッサ要素に任意に送信する、又はそうでなければ提供することができる。他の実施形態では、第1のプロセッサ要素は任意に、同期バリア内の状態を監視することができる、又は起動された追加のプロセッサ要素の全てが同期バリアに到達したときに、同期バリアから信号を受信することができる。
In some embodiments, a user-level synchronization thread is the case where the additional processor element is the last of all additional processor elements that reach the synchronization barrier initiated by a given user-level branch instruction. The termination module is operable to return control to the thread on the first processor element after each of the additional processor elements executes the corresponding user-level synchronization and termination instructions. For example, in some embodiments, the synchronization thread termination module of the last additional processor element that reaches the barrier indicates that all of the additional processor elements have reached the barrier, the binding is complete, and the
追加のプロセッサ要素は、アーキテクチャ状態884を有することができる。アーキテクチャ状態は、前述したアーキテクチャ状態のタイプ、例えば、汎用レジスタ、パックドデータレジスタ、浮動小数点レジスタ、ステータスレジスタ、命令ポインタなどを含むことができる。示されるように、いくつかの実施形態では、アーキテクチャ状態は、1つ又は複数のいわゆるスティッキーフラグ(例えば、スティッキーエラーフラグ)894を含むことができる。例として、これらのスティッキーフラグは、スティッキー浮動小数点状態フラグ、又は、例えば、ゼロ除算フラグ、無効演算フラグ、デノーマルフラグなどのエラーフラグを含むことができる。1つの具体例として、スティッキーフラグは、x86プロセッサのMXCSRレジスタ内にスティッキー浮動小数点エラーフラグを含むことができる。これらのフラグは、セットされると、可能性のあるエラー状態が十分に調査され、適切であれば解決されるまで、一般にクリアされることはないという、比較的スティッキーな意味である。スティッキーフラグは、キャリーフラグ、オーバーフローフラグ、ゼロフラグ、及び他の算術フラグのような非スティッキーフラグと対比される。
The additional processor element can have an
いくつかの実施形態では、ユーザレベルの同期スレッド終了モジュールは、ユーザレベルの同期及び終了命令に応答して、エラー状態情報、及び/又は追加のプロセッサ要素が直面した1つ又は複数のエラー状態のインジケーションを第1のプロセッサ要素に伝達するよう動作することができる。いくつかの実施形態では、エラー状態情報は、スティッキーフラグ894のうちの1つ又は複数に関連付けられてよく、及び/又はそれらのフラグを含むか又は示してもよい。そのようなスティッキーフラグ又はエラー状態情報を第1のプロセッサ要素に伝達すること、又は示すことは、第1のプロセッサ要素がスティッキーフラグ又は他のエラー状態情報を解析し、必要に応じて適切な対応を取ることを可能にするのに役立つことができる。このエラー状態情報は、異なる実施形態では異なる方法で伝達されてよく、また示されてもよい。いくつかの実施形態では、追加のプロセッサ要素のそれぞれは、そのような情報の別個のセットを第1のプロセッサ要素に伝達することができる。他の実施形態では、そのような情報をマージしたセット又は組み合わせたセットが、第1のプロセッサ要素に伝達されてよい。1つの例として、追加のプロセッサ要素のそれぞれがその同期及び終了命令を実行するとき、追加のプロセッサ要素のそれぞれは、このエラー状態情報を第1のプロセッサ要素に直接伝達できる。典型的には、第1のプロセッサ要素は、その対応するアーキテクチャレジスタにエラー状態情報を取り込み、次に当該情報を適宜処理することができる。 In some embodiments, the user-level synchronization thread termination module is responsive to the user-level synchronization and termination instructions for error status information and/or one or more error conditions encountered by additional processor elements. It is operable to communicate the indication to the first processor element. In some embodiments, error status information may be associated with and/or include or indicate one or more of sticky flags 894. Communicating or indicating such sticky flag or error status information to the first processor element causes the first processor element to parse the sticky flag or other error status information and take appropriate action as appropriate. Can help to take. This error status information may be communicated and indicated differently in different embodiments. In some embodiments, each additional processor element may communicate a separate set of such information to the first processor element. In other embodiments, a merged or combined set of such information may be communicated to the first processor element. As one example, each of the additional processor elements can communicate this error status information directly to the first processor element as each of the additional processor elements executes its synchronization and termination instructions. Typically, the first processor element can capture error status information in its corresponding architectural register and then process the information accordingly.
別の例として、追加のプロセッサ要素のそれぞれがその同期及び終了命令を実行すると、追加のプロセッサ要素のそれぞれは、追加のプロセッサ要素及び第1のプロセッサ要素にアクセス可能な記憶位置885に、このエラー状態情報を信号897で知らせる、又はそうでなければ伝達することができる。異なるタイプの記憶位置が異なる実施形態に好適である。好適な記憶位置の例には、限定されないが、追加のプロセッサ要素の1つ又は複数のレジスタ、第1のプロセッサ要素の1つ又は複数のレジスタ、第1のプロセッサ要素と追加のプロセッサ要素とによって共有されるメモリの1つ又は複数のメモリ位置など、及びこれらの組み合わせが含まれる。いくつかの実施形態では、記憶位置は、第1のプロセッサ要素と追加のプロセッサ要素のそれぞれとによって共有され、並列処理制御データ構造体を実装するのに用いられる、ユーザがアドレス可能なメモリ空間の1つ又は複数のメモリ位置を表すことができる。いくつかの実施形態では、この並列処理制御データ構造体は、オペレーティングシステムにより用いられるプロシージャコールスタックから分かれていてよい。いくつかの実施形態では、この並列処理制御データ構造体は、第1のプロセッサ要素、及び追加のプロセッサ要素それぞれの両方にアクセス可能であってよく、第1のプロセッサ要素と追加のプロセッサ要素のそれぞれとの間で、特定の実装に必要な様々な異なるタイプの制御及びデータを受け渡すのに用いられてよい。あるいは、様々な他のタイプの記憶位置が、代わりに任意に用いられてもよい。
As another example, when each of the additional processor elements executes their synchronization and termination instructions, each of the additional processor elements may receive this error at
このエラー状態情報の別個のセットが追加のプロセッサ要素それぞれの記憶位置885に格納されてよく、あるいは、このエラー状態情報を組み合わせた又はマージした単一のセットが記憶位置に保持され格納されてもよい。例えば、エラー状態情報をマージした又は組み合わせたセットは、所与のスティッキーエラー状態フラグが追加のプロセッサ要素のいずれかにセットされた場合、所与のスティッキーエラー状態フラグをセットすることができる。換言すれば、累積エラー状態情報の単一のセットが、追加のプロセッサ要素のいずれかの任意のエラー状態を表しながら保持されてよく、この累積エラー状態情報の単一のセットは、第1のプロセッサ要素に伝達されてよい。これらは、ほんのいくつかの説明のための実例である。エラー状態情報を伝達する他の方法も考えられる。いくつかの実施形態では、ユーザレベルの同期及び結合命令に応答する追加のプロセッサ要素は、記憶位置885、例えば、共有のユーザメモリ空間などに実行の結果896を保存又は格納することもできる。
[例示的なコアアーキテクチャ、プロセッサ、及びコンピュータアーキテクチャ]
A separate set of this error status information may be stored in the
[Exemplary Core Architecture, Processor, and Computer Architecture]
プロセッサコアは、異なる方法で、異なる目的のために、異なるプロセッサに実装されてよい。例えば、そのようなコアの実装は、1)汎用計算を対象とした汎用インオーダコア、2)汎用計算を対象とした高性能汎用アウトオブオーダコア、3)グラフィックス及び/又は科学(スループット)計算を主に対象とした専用コアを含んでよい。異なるプロセッサの実装には、1)汎用計算を対象とした1つ又は複数の汎用インオーダコア、及び/又は、汎用計算を対象とした1つ又は複数の汎用アウトオブオーダコアを含むCPU、並びに2)グラフィックス及び/又は科学(スループット)を主に対象とした1つ又は複数の専用コアを含むコプロセッサが含まれてよい。そのような異なるプロセッサによって異なるコンピュータシステムアーキテクチャがもたらされ、そこには次のものが含まれる。つまり、1)CPUとは別個のチップに搭載されたコプロセッサ、2)CPUと同じパッケージ内の別個のダイに搭載されたコプロセッサ、3)CPUと同じダイに搭載されたコプロセッサ(この場合、そのようなコプロセッサは統合グラフィックスロジック及び/又は科学(スループット)ロジックなどの専用ロジック、又は専用コアと呼ばれることがある)、及び4)説明されたCPU(アプリケーションコア又はアプリケーションプロセッサと呼ばれることがある)、上述のコプロセッサ、及び追加機能を同じダイ上に含み得るシステムオンチップである。例示的なコアアーキテクチャが次に説明され、その後に、例示的なプロセッサ及びコンピュータアーキテクチャの説明が続く。
[例示的なコアアーキテクチャ]
[インオーダコア及びアウトオブオーダコアのブロック図]
The processor cores may be implemented in different processors in different ways and for different purposes. For example, implementations of such cores include 1) general purpose in-order cores for general purpose calculations, 2) high performance general purpose out of order cores for general purpose calculations, 3) graphics and/or scientific (throughput) calculations. It may include a dedicated core that is primarily targeted. For implementation of different processors, 1) one or more general-purpose in-order cores for general-purpose calculation and/or a CPU including one or more general-purpose out-of-order cores for general-purpose calculation, and 2) A coprocessor may be included that includes one or more dedicated cores primarily for graphics and/or science (throughput). Such different processors result in different computer system architectures, including: That is, 1) a coprocessor mounted on a chip separate from the CPU, 2) a coprocessor mounted on a separate die in the same package as the CPU, 3) a coprocessor mounted on the same die as the CPU (in this case, , Such coprocessor may be referred to as dedicated logic, such as integrated graphics logic and/or scientific (throughput) logic, or dedicated core), and 4) the described CPU (also referred to as application core or application processor). ,), and a system-on-chip that may include the above-described coprocessor and additional functionality on the same die. An exemplary core architecture is described next, followed by a description of the exemplary processor and computer architecture.
[Exemplary core architecture]
[Block diagram of in-order core and out-of-order core]
図9Aは、本発明の実施形態に従い、例示的なインオーダパイプライン及び例示的なレジスタリネーミング・アウトオブオーダ発行/実行パイプラインの両方を示すブロック図である。図9Bは、本発明の実施形態に従い、プロセッサに含まれるインオーダアーキテクチャコアの例示的な実施形態と、例示的なレジスタリネーミング・アウトオブオーダ発行/実行アーキテクチャコアとの両方を示すブロック図である。図9A〜図9Bの実線枠は、インオーダパイプライン及びインオーダコアを示し、任意追加の破線枠は、レジスタリネーミング・アウトオブオーダ発行/実行パイプライン及びコアを示す。インオーダ態様はアウトオブオーダ態様のサブセットであると仮定して、アウトオブオーダ態様が説明される。 FIG. 9A is a block diagram illustrating both an exemplary in-order pipeline and an exemplary register renaming out-of-order issue/execution pipeline according to embodiments of the invention. FIG. 9B is a block diagram illustrating both an exemplary embodiment of an in-order architecture core included in a processor and an exemplary register renaming out-of-order issue/execution architecture core in accordance with an embodiment of the invention. is there. The solid lines in FIGS. 9A-9B indicate the in-order pipeline and the in-order core, and the optional dashed lines indicate the register renaming out-of-order issue/execution pipeline and the core. Out-of-order aspects are described assuming that in-order aspects are a subset of out-of-order aspects.
図9Aにおいて、プロセッサパイプライン900は、フェッチステージ902、レングス復号ステージ904、復号ステージ906、割り当てステージ908、リネーミングステージ910、スケジューリング(ディスパッチ又は発行としても知られる)ステージ912、レジスタ読み出し/メモリ読み出しステージ914、実行ステージ916、ライトバック/メモリ書き込みステージ918、例外処理ステージ922、及びコミットステージ924を含む。
In FIG. 9A, processor pipeline 900 includes fetch
図9Bは、実行エンジンユニット950に結合されたフロントエンドユニット930を含むプロセッサコア990を示し、両方ともメモリユニット970に結合されている。コア990は、縮小命令セット計算(RISC)コア、複合命令セット計算(CISC)コア、超長命令語(VLIW)コア、あるいはハイブリッド又は代替的なコアタイプであってよい。さらに別の選択肢として、コア990は、例えば、ネットワーク又は通信コア、圧縮エンジン、コプロセッサコア、汎用計算グラフィックス処理ユニット(GPGPU)コア、グラフィックスコアなどの専用コアであってもよい。 FIG. 9B shows a processor core 990 including a front end unit 930 coupled to an execution engine unit 950, both coupled to a memory unit 970. The core 990 may be a reduced instruction set computation (RISC) core, a complex instruction set computation (CISC) core, a very long instruction word (VLIW) core, or a hybrid or alternative core type. As yet another option, the core 990 may be a dedicated core such as, for example, a network or communication core, compression engine, coprocessor core, general purpose computational graphics processing unit (GPGPU) core, graphics score, or the like.
フロントエンドユニット930は、命令キャッシュユニット934に結合された分岐予測ユニット932を含み、命令キャッシュユニット934は命令トランスレーションルックアサイドバッファ(TLB)936に結合され、命令トランスレーションルックアサイドバッファ(TLB)936は命令フェッチユニット938に結合され、命令フェッチユニット938は復号ユニット940に結合されている。復号ユニット940(又はデコーダ)は、複数の命令を復号し、1つ又は複数のマイクロオペレーション、マイクロコードエントリポイント、マイクロ命令、他の命令、又は他の制御信号を出力として生成し得る。これらは、元の命令から復号され、又は別の方法で元の命令を反映し、又は元の命令から導出される。復号ユニット940は、様々な異なるメカニズムを用いて実装されてよい。好適なメカニズムの例には、限定されないが、ルックアップテーブル、ハードウェア実装、プログラマブルロジックアレイ(PLA)、マイクロコードリードオンリメモリ(ROM)などが含まれる。1つの実施形態では、コア990は、特定のマクロ命令用のマイクロコードを(例えば、復号ユニット940の中に、そうでなければフロントエンドユニット930内に)格納するマイクロコードROM又は他の媒体を含む。復号ユニット940は、実行エンジンユニット950内のリネーム/アロケータユニット952に結合されている。
The front end unit 930 includes a branch prediction unit 932 coupled to an instruction cache unit 934, which is coupled to an instruction translation lookaside buffer (TLB) 936, which is an instruction translation lookaside buffer (TLB) 936. Are coupled to an instruction fetch unit 938, which is coupled to a decoding unit 940. Decoding unit 940 (or decoder) may decode the instructions and generate one or more microoperations, microcode entry points, microinstructions, other instructions, or other control signals as outputs. They are decoded from the original instruction, or otherwise reflect or are derived from the original instruction. Decoding unit 940 may be implemented using a variety of different mechanisms. Examples of suitable mechanisms include, but are not limited to, look-up tables, hardware implementations, programmable logic arrays (PLA), microcode read only memory (ROM), and the like. In one embodiment, core 990 is a microcode ROM or other medium that stores microcode for a particular macroinstruction (eg, in decoding unit 940, or otherwise in front end unit 930). Including. Decryption unit 940 is coupled to rename/
実行エンジンユニット950は、リタイアメントユニット954と、1つ又は複数のスケジューラユニット956のセットとに結合されたリネーム/アロケータユニット952を含む。スケジューラユニット956は、リザベーションステーション、中央命令ウィンドウなどを含む任意の数の異なるスケジューラを表す。スケジューラユニット956は、物理レジスタファイルユニット958に結合されている。物理レジスタファイルユニット958のそれぞれは、1つ又は複数の物理レジスタファイルを表し、そのそれぞれ異なる物理レジスタファイルは、スカラ整数、スカラ浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点、ステータス(例えば、実行される次の命令のアドレスである命令ポインタ)など、1つ又は複数の異なるデータタイプを格納する。1つの実施形態では、物理レジスタファイルユニット958は、ベクトルレジスタユニット、書き込みマスクレジスタユニット、及びスカラレジスタユニットを含む。これらのレジスタユニットは、アーキテクチャ上のベクトルレジスタ、ベクトルマスクレジスタ、及び汎用レジスタを提供し得る。物理レジスタファイルユニット958は、リタイアメントユニット954が重ねられており、レジスタリネーミング及びアウトオブオーダ実行が(例えば、リオーダバッファ及びリタイアメントレジスタファイルを用いる、フューチャファイル、履歴バッファ、及びリタイアメントレジスタファイルを用いる、並びにレジスタマップ及びレジスタのプールを用いるなどして)実装され得る様々な方法を示す。リタイアメントユニット954及び物理レジスタファイルユニット958は、実行クラスタ960に結合されている。実行クラスタ960は、1つ又は複数の実行ユニット962のセットと、1つ又は複数のメモリアクセスユニット964のセットとを含む。実行ユニット962は、様々な演算(例えば、シフト、加算、減算、乗算)を様々なタイプのデータ(例えば、スカラ浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点)に実行してよい。いくつかの実施形態は、特定の機能又は機能のセットに専用の複数の実行ユニットを含んでよく、他の実施形態は、1つのみの実行ユニット、又は全ての機能を全てが実行する複数の実行ユニットを含んでもよい。特定の実施形態は、特定のタイプのデータ/オペレーションに対して別個のパイプラインを形成するので、スケジューラユニット956、物理レジスタファイルユニット958、及び実行クラスタ960は、可能性として複数であると示されている(例えば、スカラ整数パイプライン、スカラ浮動小数点/パックド整数/パックド浮動小数点/ベクトル整数/ベクトル浮動小数点パイプライン、及び/又はメモリアクセスパイプラインはそれぞれ、独自のスケジューラユニット、物理レジスタファイルユニット、及び/又は実行クラスタを有し、別個のメモリアクセスパイプラインの場合には、このパイプラインの実行クラスタのみがメモリアクセスユニット964を有する特定の実施形態が実装される)。別個のパイプラインが用いられる場合、これらのパイプラインのうち1つ又は複数がアウトオブオーダ発行/実行であってよく、残りがインオーダであってもよいことも理解されるべきである。
The execution engine unit 950 includes a rename/
メモリアクセスユニット964のセットがメモリユニット970に結合され、メモリユニット970は、レベル2(L2)キャッシュユニット976に結合されたデータキャッシュユニット974に結合されたデータTLBユニット972を含む。1つの例示的な実施形態において、メモリアクセスユニット964は、ロードユニット、ストアアドレスユニット、及びストアデータユニットを含んでよく、これらのそれぞれはメモリユニット970内のデータTLBユニット972に結合されている。命令キャッシュユニット934は、メモリユニット970内のレベル2(L2)キャッシュユニット976にさらに結合される。L2キャッシュユニット976は、1つ又は複数の他のレベルのキャッシュに結合され、最終的にはメインメモリに結合される。
A set of memory access units 964 is coupled to memory unit 970, which includes data TLB unit 972 coupled to data cache unit 974 coupled to level 2 (L2)
例として、例示的なレジスタリネーミング・アウトオブオーダ発行/実行コアアーキテクチャは、パイプライン900を以下のように実装してよい。すなわち、1)命令フェッチ938がフェッチステージ902及びレングス復号ステージ904を実行する。2)復号ユニット940が復号ステージ906を実行する。3)リネーム/アロケータユニット952が割り当てステージ908及びリネーミングステージ910を実行する。4)スケジューラユニット956がスケジュールステージ912を実行する。5)物理レジスタファイルユニット958及びメモリユニット970がレジスタ読み出し/メモリ読み出しステージ914を実行する。実行クラスタ960が実行ステージ916を実行する。6)メモリユニット970及び物理レジスタファイルユニット958がライトバック/メモリ書き込みステージ918を実行する。7)様々なユニットが例外処理ステージ922に関与し得る。8)リタイアメントユニット954及び物理レジスタファイルユニット958がコミットステージ924を実行する。
By way of example, an exemplary register renaming out-of-order issue/execution core architecture may implement pipeline 900 as follows. That is, 1) the instruction fetch 938 executes the fetch
コア990は、本明細書で説明される命令を含む1つ又は複数の命令セット(例えば、x86命令セット(より新しいバージョンに追加された、いくつかの拡張を有する)、MIPS Technologies(カリフォルニア州、サニーベール)のMIPS命令セット、ARM Holdings(カリフォルニア州、サニーベール)のARM命令セット(NEONなどの任意の追加拡張を有する))をサポートしてよい。1つの実施形態では、コア990はパックドデータ命令セット拡張(例えば、AVX1、AVX2)をサポートするロジックを含み、これにより、多くのマルチメディアアプリケーションにより用いられるオペレーションがパックドデータを用いて実行されることを可能にする。 Core 990 may include one or more instruction sets including the instructions described herein (eg, x86 instruction set (with some extensions added to newer versions), MIPS Technologies, CA, Sunnyvale's) MIPS instruction set, ARM Holdings (Sunnyvale, Calif.) ARM instruction set (with any additional extensions such as NEON)). In one embodiment, the core 990 includes logic that supports packed data instruction set extensions (eg, AVX1, AVX2) so that operations used by many multimedia applications can be performed using packed data. To enable.
コアはマルチスレッディング(オペレーション又はスレッドからなる2つ又はそれより多くの並列セットを実行)をサポートしてよく、タイムスライスマルチスレッディング、同時マルチスレッディング(物理コアが同時にマルチスレッディングしているスレッドのそれぞれに対して、単一の物理コアが論理コアを提供する)、又はこれらの組み合わせ(例えば、タイムスライスフェッチ及び復号、並びにそれ以降のIntel(登録商標)ハイパースレッディング・テクノロジーなどの同時マルチスレッディング)を含む様々な方法でサポートしてよいことが理解されるべきである。 The core may support multi-threading (performing two or more parallel sets of operations or threads), time-slice multi-threading, simultaneous multi-threading (one for each thread that the physical core is multi-threading at the same time). Supported in a variety of ways, including one physical core providing the logical cores), or a combination of these (eg, simultaneous multithreading, such as time slice fetch and decode, and subsequent Intel® Hyperthreading technology). It should be understood that you may.
レジスタリネーミングがアウトオブオーダ実行との関連で説明されるが、レジスタリネーミングはインオーダアーキテクチャで用いられてよいことが理解されるべきである。示されたプロセッサの実施形態はまた、別々の命令キャッシュユニット934とデータキャッシュユニット974、並びに共有L2キャッシュユニット976を含むが、代替的な実施形態は、命令及びデータの両方に対して、例えばレベル1(L1)内部キャッシュ又は複数のレベルの内部キャッシュなど、単一の内部キャッシュを有してもよい。いくつかの実施形態では、システムは、内部キャッシュ及び外部キャッシュの組み合わせを含んでよく、外部キャッシュはコア及び/又はプロセッサの外部に存在する。あるいは、全てのキャッシュが、コア及び/又はプロセッサの外部にあってもよい。
[具体的な例示的インオーダコアアーキテクチャ]
Although register renaming is described in the context of out-of-order execution, it should be understood that register renaming may be used in in-order architecture. Although the illustrated processor embodiment also includes a separate instruction cache unit 934 and data cache unit 974, as well as a shared
[Specific exemplary in-order core architecture]
図10A〜図10Bは、より具体的な例示的インオーダコアアーキテクチャのブロック図を示し、ここで、コアは、チップ内のいくつかの論理ブロック(同じタイプ及び/又は異なるタイプの他のコアを含む)の1つになるであろう。論理ブロックは、用途に応じて、高帯域幅の相互接続ネットワーク(例えば、リングネットワーク)を通じて、何らかの固定機能ロジック、メモリI/Oインタフェース、及び他の必要なI/Oロジックと通信する。 10A-10B show block diagrams of more specific exemplary in-order core architectures, where the cores are composed of several logical blocks within a chip (other cores of the same type and/or different types). Will be included). Depending on the application, the logic blocks communicate with some fixed function logic, memory I/O interfaces, and other necessary I/O logic through a high bandwidth interconnect network (eg, ring network).
図10Aは、本発明の実施形態による、オンダイ相互接続ネットワーク1002への接続に加え、レベル2(L2)キャッシュのローカルサブセット1004を有する単一のプロセッサコアのブロック図である。1つの実施形態では、命令デコーダ1000はパックドデータ命令セット拡張を用いてx86命令セットをサポートする。L1キャッシュ1006によって、キャッシュメモリからスカラユニット及びベクトルユニットへの低レイテンシアクセスが可能となる。1つの実施形態では、(設計を簡略化するために)スカラユニット1008及びベクトルユニット1010が、別々のレジスタセット(それぞれ、複数のスカラレジスタ1012及び複数のベクトルレジスタ1014)を用い、これらの間で転送されるデータはメモリに書き込まれ、その後、レベル1(L1)キャッシュ1006から読み戻されるが、本発明の代替的な実施形態は、異なる手法を用いてよい(例えば、単一のレジスタセットを用いる、又は書き込み及び読み戻しを行うことなく、2つのレジスタファイル間でのデータ転送を可能にする通信経路を含む)。
FIG. 10A is a block diagram of a single processor core having a
L2キャッシュのローカルサブセット1004は、別個のローカルサブセットに分割されるグローバルL2キャッシュの一部であり、プロセッサコアごとに1つである。各プロセッサコアは、独自のL2キャッシュのローカルサブセット1004に直接アクセスする経路を有する。プロセッサコアにより読み出されたデータは、L2キャッシュのサブセット1004に格納され、他のプロセッサコアが独自のローカルL2キャッシュのサブセットにアクセスするのと並行して、高速にアクセスされ得る。プロセッサコアにより書き込まれたデータは、独自のL2キャッシュのサブセット1004に格納され、必要に応じて他のサブセットからフラッシュされる。リングネットワークは、共有データのコヒーレンシを保証する。リングネットワークは双方向性であり、プロセッサコア、L2キャッシュ、及び他の論理ブロックなどのエージェントが、チップ内で互いに通信することを可能にする。各リングデータ経路は、一方向当たり1012ビット幅である。
The L2 cache
図10Bは、本発明の実施形態による図10Aのプロセッサコアの一部に関する拡大図である。図10Bは、L1キャッシュ1004の一部であるL1データキャッシュ1006Aと、ベクトルユニット1010及びベクトルレジスタ1014に関するより詳細とを含む。具体的には、ベクトルユニット1010は16幅のベクトル処理ユニット(VPU)(16幅のALU1028を参照)であり、整数命令、単精度浮動小数点命令、及び倍精度浮動小数点命令のうち1つ又は複数を実行する。VPUは、スウィズルユニット1020を用いたレジスタ入力のスウィズル処理、数値変換ユニット1022A〜1022Bを用いた数値変換、並びに複製ユニット1024を用いたメモリ入力の複製をサポートする。書き込みマスクレジスタ1026は、結果として生じるベクトル書き込みをプレディケートする(predicating)ことを可能にする。
[統合メモリコントローラ及びグラフィックスを有するプロセッサ]
10B is an enlarged view of a portion of the processor core of FIG. 10A according to an embodiment of the present invention. FIG. 10B includes
[Processor with integrated memory controller and graphics]
図11は、本発明の実施形態に従って、1つより多くのコアを有することができ、統合メモリコントローラを有することができ、統合グラフィックスを有することができるプロセッサ1100のブロック図である。図11の実線枠は、単一のコア1102A、システムエージェント1110、1つ又は複数のバスコントローラユニット1116のセットを有するプロセッサ1100を示し、任意追加の破線枠は、複数のコア1102A〜1102N、システムエージェントユニット1110内にある1つ又は複数の統合メモリコントローラユニット1114のセット、及び専用ロジック1108を有する代替のプロセッサ1100を示す。
FIG. 11 is a block diagram of a processor 1100 that may have more than one core, may have an integrated memory controller, and may have integrated graphics, according to an embodiment of the invention. The solid box in FIG. 11 shows a processor 1100 having a single core 1102A, a system agent 1110, a set of one or more
したがって、プロセッサ1100の異なる実装は、1)専用ロジック1108が統合グラフィックス及び/又は科学(スループット)ロジック(1つ又は複数のコアを含んでよい)であり、コア1102A〜1102Nが1つ又は複数の汎用コア(例えば、汎用インオーダコア、汎用アウトオブオーダコア、その2つの組み合わせ)であるCPU、2)コア1102A〜1102Nが、グラフィックス及び/又は科学(スループット)を主に対象とした多数の専用コアであるコプロセッサ、並びに3)コア1102A〜1102Nが多数の汎用インオーダコアであるコプロセッサを含んでよい。したがって、プロセッサ1100は汎用プロセッサ、コプロセッサであってよく、あるいは専用プロセッサ、例えばネットワークプロセッサ又は通信プロセッサ、圧縮エンジン、グラフィックスプロセッサ、GPGPU(汎用グラフィックス処理ユニット)、高スループットの多数統合コア(MIC)コプロセッサ(30個又はそれより多くのコアを含む)、組み込みプロセッサなどであってもよい。プロセッサは、1つ又は複数のチップ上に実装されてよい。プロセッサ1100は、例えば、BiCMOS、CMOS、又はNMOSなどの多数のプロセス技術のいずれかを用いる1つ又は複数の基板の一部であってよく、及び/又は当該基板上に実装されてもよい。
Accordingly, different implementations of the processor 1100 include: 1)
メモリ階層は、コア内にある1つ又は複数のレベルのキャッシュと、共有キャッシュユニット1106のセットあるいは1つ又は複数の共有キャッシュユニット1106と、統合メモリコントローラユニット1114のセットに結合された外部メモリ(不図示)とを含む。共有キャッシュユニット1106のセットは、レベル2(L2)、レベル3(L3)、レベル4(L4)、又は他のレベルのキャッシュなど、1つ又は複数の中間レベルのキャッシュ、又は他のレベルのキャッシュ、ラストレベルキャッシュ(LLC)、及び/又はこれらの組み合わせを含んでよい。1つの実施形態では、リングベースの相互接続ユニット1112が、統合グラフィックスロジック1108、共有キャッシュユニット1106のセット、及びシステムエージェントユニット1110/統合メモリコントローラユニット1114を相互接続するが、代替的な実施形態は、このようなユニットを相互接続するのに任意の数の周知手法を用いてよい。1つの実施形態では、1つ又は複数のキャッシュユニット1106と、コア1102A〜1102Nとの間でコヒーレンシが維持される。
The memory hierarchy includes one or more levels of cache in the core, a set of shared cache units 1106 or one or more shared cache units 1106, and an external memory coupled to a set of integrated memory controller units 1114 ( (Not shown). The set of shared cache units 1106 may be one or more intermediate level caches, such as level 2 (L2), level 3 (L3), level 4 (L4), or other level caches, or other level caches. , Last level cache (LLC), and/or combinations thereof. In one embodiment, a ring-based interconnect unit 1112 interconnects the
いくつかの実施形態では、コア1102A〜1102Nのうち1つ又は複数がマルチスレッディング可能である。システムエージェント1110は、コア1102A〜1102Nを調整し動作させるこうしたコンポーネントを含む。システムエージェントユニット1110は、例えば、電力制御ユニット(PCU)及びディスプレイユニットを含んでよい。PCUは、コア1102A〜1102N及び統合グラフィックスロジック1108の電力状態を管理するのに必要なロジック及びコンポーネントであってよく、又は当該ロジック及び当該コンポーネントを含んでもよい。ディスプレイユニットは、外部接続された1つ又は複数のディスプレイを駆動するためのものである。
In some embodiments, one or more of cores 1102A-1102N are multi-threadable. System agent 1110 includes such components that coordinate and operate cores 1102A-1102N. The system agent unit 1110 may include, for example, a power control unit (PCU) and a display unit. The PCU may be or include the logic and components necessary to manage the power states of the cores 1102A-1102N and the
コア1102A〜1102Nは、アーキテクチャ命令セットに関して同種でも異種でもよい。すなわち、コア1102A〜1102Nのうち2つ又はそれより多くは同じ命令セットを実行することが可能であってよいが、他のものはその命令セットのサブセット又は別の命令セットだけを実行することが可能であってもよい。
[例示的なコンピュータアーキテクチャ]
The cores 1102A-1102N may be homogenous or heterogeneous with respect to the architectural instruction set. That is, two or more of the cores 1102A-1102N may be capable of executing the same instruction set, while others may only execute a subset of that instruction set or another instruction set. It may be possible.
[Exemplary Computer Architecture]
図12〜図15は、例示的なコンピュータアーキテクチャのブロック図である。ラップトップ型PC、デスクトップ型PC、ハンドヘルド型PC、携帯情報端末、エンジニアリングワークステーション、サーバ、ネットワークデバイス、ネットワークハブ、スイッチ、組み込みプロセッサ、デジタル信号プロセッサ(DSP)、グラフィックスデバイス、ビデオゲームデバイス、セットトップボックス、マイクロコントローラ、携帯電話、携帯型メディアプレーヤ、ハンドヘルド型デバイス、及び様々な他の電子デバイス向けの当技術分野において知られる他のシステム設計及び構成も適している。概して、本明細書に開示されるプロセッサ及び/又は他の実行ロジックを組み込むことが可能である多様なシステム又は電子デバイスが一般に適している。 12-15 are block diagrams of exemplary computer architectures. Laptop PC, desktop PC, handheld PC, personal digital assistant, engineering workstation, server, network device, network hub, switch, embedded processor, digital signal processor (DSP), graphics device, video game device, set Other system designs and configurations known in the art for top boxes, microcontrollers, cell phones, portable media players, handheld devices, and various other electronic devices are also suitable. In general, a wide variety of systems or electronic devices capable of incorporating the processors and/or other execution logic disclosed herein are generally suitable.
ここで図12を参照すると、本発明の1つの実施形態によるシステム1200のブロック図が示されている。システム1200は、1つ又は複数のプロセッサ1210、1215を含んでよく、これらはコントローラハブ1220に結合されている。1つの実施形態では、コントローラハブ1220は、グラフィックスメモリコントローラハブ(GMCH)1290と、入力/出力ハブ(IOH)1250(これは別個のチップ上にあってよい)とを含む。GMCH1290は、メモリ及びグラフィックスコントローラを含み、これらにメモリ1240及びコプロセッサ1245が結合されている。IOH1250は入力/出力(I/O)デバイス1260をGMCH1290に結合する。あるいは、メモリ及びグラフィックスコントローラの一方又は両方が、(本明細書で説明されるように)プロセッサ内に統合され、メモリ1240及びコプロセッサ1245は、プロセッサ1210と、IOH1250と共に単一チップに入ったコントローラハブ1220とに直接結合される。
Referring now to FIG. 12, shown is a block diagram of a
任意的な性質の追加のプロセッサ1215は、図12に破線で示されている。各プロセッサ1210、1215は、本明細書で説明される処理コアのうち1つ又は複数を含んでよく、何らかのバージョンのプロセッサ1100であってよい。
An
メモリ1240は、例えば、ダイナミックランダムアクセスメモリ(DRAM)、相変化メモリ(PCM)、又はこの2つの組み合わせであってよい。少なくとも1つの実施形態では、コントローラハブ1220は、フロントサイドバス(FSB)などのマルチドロップバス、QuickPath相互接続(QPI)などのポイントツーポイントインタフェース、又は同種の接続1295を介してプロセッサ1210、1215と通信する。
1つの実施形態では、コプロセッサ1245は、例えば、ハイスループットMICプロセッサ、ネットワークプロセッサ又は通信プロセッサ、圧縮エンジン、グラフィックスプロセッサ、GPGPU、組み込みプロセッサなどの専用プロセッサである。1つの実施形態では、コントローラハブ1220は統合グラフィックスアクセラレータを含んでよい。
In one embodiment, the coprocessor 1245 is a dedicated processor such as, for example, a high throughput MIC processor, network processor or communications processor, compression engine, graphics processor, GPGPU, embedded processor, or the like. In one embodiment,
物理リソース1210と1215との間には、アーキテクチャ特性、マイクロアーキテクチャ特性、熱的特性、電力消費特性などを含む広範な価値基準に関して、様々な差異が存在し得る。
Various differences may exist between
1つの実施形態では、プロセッサ1210は、一般的タイプのデータ処理オペレーションを制御する命令を実行する。この命令内にコプロセッサ命令が組み込まれてもよい。プロセッサ1210は、これらのコプロセッサ命令を、付属のコプロセッサ1245が実行すべきタイプの命令であると認識する。したがって、プロセッサ1210は、これらのコプロセッサ命令(又はコプロセッサ命令を表す制御信号)をコプロセッサバス又は他の相互接続を使ってコプロセッサ1245に発行する。コプロセッサ1245は、受信したコプロセッサ命令を受け付けて実行する。
In one embodiment,
ここで図13を参照すると、本発明の実施形態による、より詳細な第1の例示的なシステム1300のブロック図が示されている。図13に示されるように、マルチプロセッサシステム1300はポイントツーポイント相互接続システムであり、ポイントツーポイント相互接続1350を介して結合される第1のプロセッサ1370と、第2のプロセッサ1380とを含む。プロセッサ1370及び1380のそれぞれは、何らかのバージョンのプロセッサ1100であってよい。本発明の1つの実施形態では、プロセッサ1370及び1380はそれぞれ、プロセッサ1210及び1215であり、コプロセッサ1338はコプロセッサ1245である。別の実施形態では、プロセッサ1370及び1380はそれぞれ、プロセッサ1210及びコプロセッサ1245である。
Referring now to FIG. 13, a block diagram of a more detailed first
プロセッサ1370及び1380は、統合メモリコントローラ(IMC)ユニット1372及び1382をそれぞれ含んで示されている。プロセッサ1370はまた、そのバスコントローラユニットの一部として、ポイントツーポイント(P−P)インタフェース1376及び1378を含み、同様に第2のプロセッサ1380はP−Pインタフェース1386及び1388を含む。プロセッサ1370、1380は、ポイントツーポイント(P−P)インタフェース1350を介し、P−Pインタフェース回路1378、1388を用いて情報を交換してよい。図13に示されるように、IMC1372及び1382は、プロセッサをそれぞれのメモリ、すなわちメモリ1332及びメモリ1334に結合する。これらのメモリは、それぞれのプロセッサにローカルに取り付けられたメインメモリの一部であってよい。
プロセッサ1370、1380はそれぞれ、個々のP−Pインタフェース1352、1354を介し、ポイントツーポイントインタフェース回路1376、1394、1386、1398を用いてチップセット1390と情報を交換してよい。チップセット1390は、高性能インタフェース1339を介してコプロセッサ1338と任意に情報を交換してよい。1つの実施形態では、コプロセッサ1338は、例えば、ハイスループットMICプロセッサ、ネットワークプロセッサ又は通信プロセッサ、圧縮エンジン、グラフィックスプロセッサ、GPGPU、組み込みプロセッサなどの専用プロセッサである。
共有キャッシュ(不図示)がどちらかのプロセッサに含まれても、又は両方のプロセッサの外部に含まれてもよく、さらにP−P相互接続を介してこれらのプロセッサに接続されてもよい。これにより、プロセッサが低電力モードに入っている場合に、どちらかのプロセッサ又は両方のプロセッサのローカルキャッシュ情報が共有キャッシュに格納され得る。 A shared cache (not shown) may be included in either processor, or external to both processors, and may be connected to these processors via a PP interconnect. This allows the local cache information for either processor or both processors to be stored in the shared cache when the processor is in a low power mode.
チップセット1390は、インタフェース1396を介して第1のバス1316に結合されてよい。1つの実施形態では、第1のバス1316は、ペリフェラル・コンポーネント・インターコネクト(PCI)バス、あるいはPCIエクスプレスバス又は別の第3世代I/O相互接続バスなどのバスであってよいが、本発明の範囲はそのように限定されてはいない。
図13に示されるように、第1のバス1316を第2のバス1320に結合するバスブリッジ1318と共に、様々なI/Oデバイス1314が第1のバス1316に結合されてよい。1つの実施形態では、1つ又は複数の追加のプロセッサ1315が第1のバス1316に結合される。追加のプロセッサとは、コプロセッサ、ハイスループットMICプロセッサ、GPGPUのアクセラレータ(例えば、グラフィックスアクセラレータ、又はデジタル信号処理(DSP)ユニットなど)、フィールドプログラマブルゲートアレイ、又はその他のプロセッサなどである。1つの実施形態では、第2のバス1320はローピンカウント(LPC)バスであってよい。様々なデバイスが第2のバス1320に結合されてよく、1つの実施形態では、そのようなデバイスには例えば、キーボード及び/又はマウス1322、通信デバイス1327、及びストレージユニット1328が含まれ、ストレージユニットには、命令/コード及びデータ1330を含み得るディスクドライブ又は他の大容量ストレージデバイスなどがある。さらに、オーディオI/O1324が第2のバス1320に結合されてよい。他のアーキテクチャも可能であることに留意されたい。例えば、図13のポイントツーポイントアーキテクチャの代わりに、システムがマルチドロップバスアーキテクチャ又は他のそのようなアーキテクチャを実装してよい。
Various I/
ここで図14を参照すると、本発明の実施形態による、より詳細な第2の例示的なシステム1400のブロック図が示されている。図13及び図14内の同様の要素は同様の参照番号を有しており、図13の特定の態様が、図14の他の態様をあいまいにしないように、図14から省略されている。
Referring now to FIG. 14, there is shown a block diagram of a more detailed second
図14は、プロセッサ1370、1380が、統合メモリを含み、またI/O制御ロジック(「CL」)1372及び1382をそれぞれ含んでよいことを示す。したがって、CL1372、1382は統合メモリコントローラユニットを含み、且つI/O制御ロジックを含む。図14は、メモリ1332、1334だけがCL1372、1382に結合されているのでなく、I/Oデバイス1414もまた、制御ロジック1372、1382に結合されていることを示している。レガシI/Oデバイス1415がチップセット1390に結合されている。
FIG. 14 shows that the
ここで図15を参照すると、本発明の実施形態によるSoC1500のブロック図が示されている。図11の同種の要素は、同様の参照番号を有している。また、破線枠は、より高度なSoCにおける任意の機能である。図15において、相互接続ユニット1502が、1つ又は複数のコア1102A〜1102N及び共有キャッシュユニット1106のセットを含むアプリケーションプロセッサ1510と、システムエージェントユニット1110と、バスコントローラユニット1116と、統合メモリコントローラユニット1114と、統合グラフィックスロジック、画像プロセッサ、オーディオプロセッサ、及び映像プロセッサを含み得るコプロセッサ1520のセットあるいは1つ又は複数のコプロセッサ1520と、スタティックランダムアクセスメモリ(SRAM)ユニット1530と、ダイレクトメモリアクセス(DMA)ユニット1532と、1つ又は複数の外部ディスプレイに結合するためのディスプレイユニット1540とに結合されている。1つの実施形態では、コプロセッサ1520は専用プロセッサを含み、例えば、ネットワークプロセッサ又は通信プロセッサ、圧縮エンジン、GPGPU、ハイスループットMICプロセッサ、組み込みプロセッサなどがある。
Referring now to FIG. 15, a block diagram of a
本明細書に開示されるメカニズムの実施形態は、ハードウェア、ソフトウェア、ファームウェア、又はそのような実装手法の組み合わせで実装されてよい。本発明の実施形態は、少なくとも1つのプロセッサと、ストレージシステム(揮発性メモリ及び不揮発性メモリ、及び/又は記憶素子を含む)と、少なくとも1つの入力デバイスと、少なくとも1つの出力デバイスとを有するプログラマブルシステム上で実行されるコンピュータプログラム又はプログラムコードとして実装されてよい。 Embodiments of the mechanisms disclosed herein may be implemented in hardware, software, firmware, or a combination of such implementation techniques. Embodiments of the present invention are programmable with at least one processor, a storage system (including volatile memory and non-volatile memory, and/or storage elements), at least one input device, and at least one output device. It may be implemented as a computer program or program code running on the system.
図13に示されるコード1330などのプログラムコードは、本明細書で説明される機能を実行し、出力情報を生成する命令を入力するのに適用されてよい。出力情報は、1つ又は複数の出力デバイスに既知の方法で適用されてよい。本願の目的のために、処理システムは、例えば、デジタル信号プロセッサ(DSP)、マイクロコントローラ、特定用途向け集積回路(ASIC)、又はマイクロプロセッサなどのプロセッサを有する任意のシステムを含む。 Program code, such as code 1330 shown in FIG. 13, may be applied to input instructions that perform the functions described herein and generate output information. The output information may be applied to one or more output devices in a known manner. For purposes of this application, a processing system includes any system having a processor such as, for example, a digital signal processor (DSP), a microcontroller, an application specific integrated circuit (ASIC), or a microprocessor.
プログラムコードは、処理システムと通信すべく、高水準の手続き型又はオブジェクト指向型プログラミング言語で実装されてよい。プログラムコードはまた、必要に応じて、アセンブリ言語又は機械語で実装されてよい。実際には、本明細書で説明されるメカニズムは、いかなる特定のプログラミング言語にも範囲を限定されない。どのような場合でも、言語はコンパイラ型言語又はインタプリタ型言語であってよい。 The program code may be implemented in a high level procedural or object oriented programming language to communicate with a processing system. The program code may also be implemented in assembly or machine language, if desired. Indeed, the mechanisms described herein are not limited in scope to any particular programming language. In any case, the language may be a compiled or interpreted language.
少なくとも1つの実施形態の1つ又は複数の態様は、プロセッサ内の様々なロジックを表す機械可読媒体に格納された典型的な命令により実装されてよく、当該命令は、機械により読み出された場合、本明細書で説明される手法を実行すべく機械にロジックを作成させる。「IPコア」として知られるそのような表現は、有形の機械可読媒体(「テープ」)に格納され、ロジック又はプロセッサを実際に作成する製造装置にロードすべく、様々な顧客又は製造施設に供給されてよい。 One or more aspects of at least one embodiment may be implemented by exemplary instructions stored on a machine-readable medium representing various logic within a processor, where the instructions are read by a machine. , Causes the machine to create logic to perform the techniques described herein. Such an expression, known as an "IP core," is stored on a tangible machine-readable medium ("tape") and provided to various customers or manufacturing facilities for loading into a manufacturing device that actually creates the logic or processor. May be done.
そのような機械可読記憶媒体は、限定されることなく、機械又は装置により製造される又は形成される非一時的な有形の構成の物品を含んでよく、そのような物品には、ハードディスクや、フロッピー(登録商標)ディスク、光ディスク、コンパクトディスク・リードオンリメモリ(CD−ROM)、コンパクトディスク・リライタブル(CD−RW)、及び光磁気ディスクを含むその他のタイプのディスク、半導体デバイスとして、例えば、リードオンリメモリ(ROM)、ダイナミックランダムアクセスメモリ(DRAM)やスタティックランダムアクセスメモリ(SRAM)などのランダムアクセスメモリ(RAM)、消去可能プログラマブルリードオンリメモリ(EPROM)、フラッシュメモリ、電気的消去可能プログラマブルリードオンリメモリ(EEPROM)、相変化メモリ(PCM)など、磁気カード又は光カード、又は電子命令を格納するのに適したその他のタイプの媒体などの記憶媒体を含む。 Such machine-readable storage media may include, without limitation, an article of non-transitory tangible construction made or formed by a machine or device, such as a hard disk, Floppy disks, optical disks, compact disk read-only memory (CD-ROM), compact disk rewritable (CD-RW), and other types of disks including magneto-optical disks, as semiconductor devices, for example, read. Only memory (ROM), random access memory (RAM) such as dynamic random access memory (DRAM) and static random access memory (SRAM), erasable programmable read only memory (EPROM), flash memory, electrically erasable programmable read only Included are storage media such as memory (EEPROM), phase change memory (PCM), magnetic or optical cards, or other types of media suitable for storing electronic instructions.
したがって、本発明の実施形態はまた、命令を含んだ、又はハードウェア記述言語(HDL)などの設計データを含んだ非一時的な有形の機械可読媒体を含む。HDLは、本明細書で説明される構造、回路、装置、プロセッサ、及び/又はシステム機能を定義する。そのような実施形態はまた、プログラム製品と呼ばれ得る。
[エミュレーション(バイナリ変換、コードモーフィングなどを含む)]
Thus, embodiments of the present invention also include a non-transitory tangible, machine-readable medium containing instructions or design data, such as a hardware description language (HDL). HDL defines the structures, circuits, devices, processors, and/or system functions described herein. Such embodiments may also be referred to as program products.
[Emulation (including binary conversion, code morphing, etc.)]
いくつかの場合では、命令をソース命令セットからターゲット命令セットに変換するのに命令変換器が用いられてよい。例えば命令変換器は、ある命令を、コアによって処理される1つ又は複数の他の命令に翻訳(例えば、静的バイナリ変換、動的コンパイルを含む動的バイナリ変換を用いる)、モーフィング、エミュレーション、又は別の方法で変換してよい。命令変換器は、ソフトウェア、ハードウェア、ファームウェア、又はこれらの組み合わせで実装されてよい。命令変換器は、プロセッサ上にあっても、プロセッサ外にあっても、又は一部がプロセッサ上にあり且つ一部がプロセッサ外にあってもよい。 In some cases, an instruction translator may be used to translate the instructions from the source instruction set to the target instruction set. For example, an instruction translator translates an instruction into one or more other instructions processed by the core (eg, using a static binary translation, a dynamic binary translation including dynamic compilation), morphing, emulation, Alternatively, it may be converted by another method. The instruction converter may be implemented in software, hardware, firmware, or a combination thereof. The instruction translator may be on-processor, off-processor, or partially on-processor and partially-off-processor.
図16は、本発明の実施形態に従って、ソース命令セットのバイナリ命令をターゲット命令セットのバイナリ命令に変換するソフトウェア命令変換器の使用を対比するブロック図である。図示された実施形態では、命令変換器はソフトウェア命令変換器であるが、代わりに命令変換器は、ソフトウェア、ファームウェア、ハードウェア、又はこれらの様々な組み合わせで実装されてもよい。図16は、高水準言語1602のプログラムがx86コンパイラ1604を用いてコンパイルされ、少なくとも1つのx86命令セットコアを搭載するプロセッサ1616によってネイティブに実行され得るx86バイナリコード1606を生成し得ることを示す。少なくとも1つのx86命令セットコアを搭載するプロセッサ1616は、少なくとも1つのx86命令セットコアを搭載するIntel(登録商標)プロセッサと実質的に同じ結果を実現するために、(1)Intel(登録商標)x86命令セットコアの命令セットの大部分、又は(2)少なくとも1つのx86命令セットコアを搭載するIntel(登録商標)プロセッサ上で動作することを目的としたオブジェクトコード形式のアプリケーション又は他のソフトウェアを、互換的に実行する、又は別の方法で処理することで、少なくとも1つのx86命令セットコアを搭載するIntel(登録商標)プロセッサと実質的に同じ機能を実行し得る任意のプロセッサを表す。x86コンパイラ1604は、追加のリンケージ処理をしてもしなくても、少なくとも1つのx86命令セットコアを搭載するプロセッサ1616上で実行され得るx86バイナリコード1606(例えば、オブジェクトコード)を生成するよう動作可能なコンパイラを表す。同様に、図16は、高水準言語1602のプログラムが、別の命令セットコンパイラ1608を用いてコンパイルされ、少なくとも1つのx86命令セットコアを搭載しないプロセッサ1614(例えば、MIPS Technologies(カリフォルニア州、サニーベール)のMIPS命令セットを実行するコア、及び/又は、ARM Holdings(カリフォルニア州、サニーベール)のARM命令セットを実行するコアを搭載したプロセッサ)によりネイティブに実行され得る別の命令セットバイナリコード1610を生成し得ることを示す。命令変換器1612は、x86バイナリコード1606を、x86命令セットコアを搭載しないプロセッサ1614によりネイティブに実行され得るコードに変換するのに用いられる。この変換されたコードは、別の命令セットバイナリコード1610と同じになる可能性は低い。なぜなら、これが実現できる命令変換器を作るのは難しいからである。しかし、変換されたコードは一般的なオペレーションを実現し、別の命令セットの命令で構成される。したがって、命令変換器1612は、エミュレーション、シミュレーション、又はその他の処理を通じて、x86命令セットプロセッサ又はコアを持たないプロセッサ又は他の電子デバイスがx86バイナリコード1606を実行することを可能にするソフトウェア、ファームウェア、ハードウェア、又はこれらの組み合わせを表す。 FIG. 16 is a block diagram contrasting the use of a software instruction converter to convert source instruction set binary instructions to target instruction set binary instructions in accordance with an embodiment of the present invention. In the illustrated embodiment, the instruction translator is a software instruction translator, but alternatively the instruction translator may be implemented in software, firmware, hardware, or various combinations thereof. FIG. 16 illustrates that a high level language 1602 program may be compiled using an x86 compiler 1604 to produce x86 binary code 1606 that may be natively executed by a processor 1616 that includes at least one x86 instruction set core. The processor 1616 with at least one x86 instruction set core has (1) Intel® to achieve substantially the same result as an Intel® processor with at least one x86 instruction set core. Most of the instruction set of the x86 instruction set core, or (2) an application in object code format or other software intended to run on an Intel processor equipped with at least one x86 instruction set core. , Interchangeably, or otherwise processed to represent substantially any processor capable of performing substantially the same function as an Intel® processor with at least one x86 instruction set core. The x86 compiler 1604 is operable to generate x86 binary code 1606 (eg, object code) that can be executed on a processor 1616 with at least one x86 instruction set core with or without additional linkage processing. Represents a compiler. Similarly, FIG. 16 illustrates a high level language 1602 program compiled with another instruction set compiler 1608 and not having at least one x86 instruction set core 1614 (eg, MIPS Technologies (Sunnyvale, Calif.). ) And/or another instruction set binary code 1610 that may be natively executed by a processor equipped with a core executing the ARM instruction sets of ARM Holdings (Sunnyvale, CA). It can be generated. The instruction translator 1612 is used to translate the x86 binary code 1606 into code that can be natively executed by a processor 1614 that does not have an x86 instruction set core. This translated code is unlikely to be the same as another instruction set binary code 1610. This is because it is difficult to make an instruction converter that can realize this. However, the converted code implements common operations and is composed of instructions from another instruction set. Accordingly, the instruction translator 1612, through emulation, simulation, or other processing, software, firmware, that enables a processor or other electronic device without an x86 instruction set processor or core to execute the x86 binary code 1606. Represents hardware or a combination thereof.
図2〜図6のいずれかについて説明された構成要素、機能、及び詳細は、図1、図7、及び図8のいずれにも任意に適用されてよい。さらに、装置のいずれかについて説明された構成要素、機能、及び詳細は、方法のいずれにも任意に適用されてよく、これらの構成要素、機能、及び詳細は、実施形態において、そのような装置により実行されてよく、及び/又はそのような装置を用いて実行されてよい。本明細書で説明されたプロセッサのいずれも、本明細書で開示されたコンピュータシステム(例えば、図12〜図15)のいずれかに含まれてよい。いくつかの実施形態では、コンピュータシステムは、相互接続、相互接続に結合されたプロセッサ、及び相互接続に結合されたダイナミックランダムアクセスメモリ(DRAM)を含むことができる。あるいは、DRAMの代わりに、リフレッシュされる必要がない他のタイプの揮発性メモリが用いられてよく、又はフラッシュメモリが用いられてよい。 The components, functions, and details described with respect to any of FIGS. 2-6 may be optionally applied to any of FIGS. 1, 7, and 8. Further, the components, functions, and details described for any of the devices may be optionally applied to any of the methods, and these components, functions, and details may, in embodiments, be such devices. And/or may be performed using such a device. Any of the processors described herein may be included in any of the computer systems disclosed herein (eg, FIGS. 12-15). In some embodiments, a computer system can include an interconnect, a processor coupled to the interconnect, and a dynamic random access memory (DRAM) coupled to the interconnect. Alternatively, instead of DRAM, other types of volatile memory that need not be refreshed may be used, or flash memory may be used.
本明細書及び特許請求の範囲において、「結合」及び/又は「接続」という用語が、それらの派生語と共に、用いられたことがある。これらの用語は、互いの同義語であるとは意図されていない。むしろ、実施形態において、「接続」は、2つ又はそれより多くの要素が、互いに直接に物理的接触及び/又は電気的接触していることを示すのに用いられてよい。「結合」は、2つ又はそれより多くの要素が、互いに直接に物理的接触及び/又は電気的接触をしていることを意味することができる。しかし、「結合」は、2つ又はそれより多くの要素が互いに直接に接触していないが、それでもまだ互いに協同している、又は相互作用していることも意味することができる。例えば、復号ユニットは、スレッドスケジューラモジュール及び/又は同期モジュールと、間にある1つ又は複数のユニット、モジュール、又は他の構成要素を介して結合されてよい。図において、矢印は、接続及び結合を示すのに用いられている。 In this specification and in the claims, the terms "couple" and/or "connect" are sometimes used with their derivatives. These terms are not intended as synonyms for each other. Rather, in an embodiment, "connection" may be used to indicate that two or more elements are in direct physical and/or electrical contact with each other. "Coupled" may mean that two or more elements are in direct physical and/or electrical contact with each other. However, "coupled" can also mean that two or more elements are not in direct contact with each other, but are still cooperating or interacting with each other. For example, the decoding unit may be coupled to the thread scheduler module and/or the synchronization module via one or more units, modules, or other components in between. In the figures, arrows are used to indicate connections and connections.
明細書及び/又は特許請求の範囲において、「ロジック」、「ユニット」、「モジュール」、又は「コンポーネント」という用語が用いられたことがある。これらの用語のそれぞれは、ハードウェア、ファームウェア、ソフトウェア、又はこれらの様々な組み合わせを指すのに用いられてよい。例示的な実施形態において、これらの用語のそれぞれは、集積回路、特定用途向け集積回路、アナログ回路、デジタル回路、プログラム式論理デバイス、命令を含んだメモリデバイスなど、及びこれらの様々な組み合わせを指すことができる。いくつかの実施形態では、これらは、少なくともいくつかのハードウェア(例えば、トランジスタ、ゲート、他の回路コンポーネントなど)を含むことができる。 The terms “logic,” “unit,” “module,” or “component” have been used throughout the specification and/or claims. Each of these terms may be used to refer to hardware, firmware, software, or various combinations thereof. In the exemplary embodiment, each of these terms refers to an integrated circuit, an application specific integrated circuit, an analog circuit, a digital circuit, a programmed logic device, a memory device containing instructions, etc., and various combinations thereof. be able to. In some embodiments, these may include at least some hardware (eg, transistors, gates, other circuit components, etc.).
「及び/又は」という用語が用いられたことがある。本明細書で用いられる場合、「及び/又は」という用語は、一方又は他方、あるいは両方を意味する(例えば、A及び/又はBは、A又はB、あるいはA及びBの両方を意味する)。 The term "and/or" has been used. As used herein, the term "and/or" means one or the other, or both (eg, A and/or B means A or B, or both A and B). ..
上記の説明では、実施形態の完全な理解を提供するために、具体的な詳細が明記された。しかし、これらの具体的な詳細のいくつかを用いずに、他の実施形態が実施されてよい。本発明の範囲は、上述した具体例によって決定されるのではなく、以下の特許請求の範囲のみによって決定される。他の例では、よく知られた回路、構造、デバイス、及びオペレーションは、本明細書の理解をあいまいにしないために、ブロック図の形態で、及び/又は詳細を用いずに示されている。適切とみなされる場合、参照番号又は参照番号の末尾部分が、図の間で、対応する要素又は類似の要素を示すために繰り返されており、これらの要素は、別に明記される場合、又は別の方法ではっきりと明らかである場合を除いて、類似の特徴又は同じ特徴を任意に有することができる。 In the above description, specific details are set forth in order to provide a thorough understanding of the embodiments. However, other embodiments may be practiced without some of these specific details. The scope of the invention is not determined by the embodiments described above, but only by the claims below. In other instances, well-known circuits, structures, devices, and operations are shown in block diagram form and/or without details in order not to obscure the understanding herein. Where considered appropriate, reference numerals or trailing portions of reference numerals have been repeated among the figures to indicate corresponding or similar elements, which if otherwise stated or otherwise. It may optionally have similar or the same features, except where it is clearly evident in the above method.
特定のオペレーションがハードウェア要素により実行されてよく、あるいは機械実行可能命令又は回路実行可能命令で具現化されてよく、これらは、オペレーションを実行する命令でプログラムされた機械、回路、又はハードウェア要素(例えば、プロセッサ、プロセッサの一部、回路など)を生じさせる、及び/又はもたらすのに用いられてよい。これらのオペレーションは、ハードウェアとソフトウェアとの組み合わせでも、任意に実行されてよい。プロセッサ、機械、回路、又はハードウェアは、特定の回路又は特殊な回路を含むことができ、あるいは他のロジック(例えば、ファームウェア及び/又はソフトウェアと組み合わされる可能性のあるハードウェア)が、命令を実行及び/又は処理し、命令に応答して結果を格納するよう動作する。 Particular operations may be performed by hardware elements or may be embodied in machine-executable instructions or circuit-executable instructions, which are machine, circuit, or hardware elements programmed with instructions to perform the operations. May be used to cause and/or effect (eg, a processor, part of a processor, circuitry, etc.). These operations may optionally be performed with a combination of hardware and software. A processor, machine, circuit, or hardware may include specific or specialized circuitry, or other logic (eg, hardware that may be combined with firmware and/or software) directs instructions. Operates to execute and/or process and store results in response to instructions.
いくつかの実施形態は、機械可読媒体を含む製造品(例えば、コンピュータプログラム製品)を含む。この媒体は、機械が可読な形態で情報を提供する、例えば格納するメカニズムを含むことができる。機械可読媒体は、機械により実行された場合、及び/又は機械により実行されたとき、本明細書に開示される1つ又は複数のオペレーション、方法、又は手法を実行する機械を、機械に実行させる及び/又はもたらすようにさせるよう動作する命令又は一連の命令を提供してよく、又は機械可読媒体上に格納させてよい。 Some embodiments include an article of manufacture (eg, a computer program product) that includes a machine-readable medium. The medium may include any mechanism for providing, eg, storing, information in a machine-readable form. A machine-readable medium causes a machine to perform, when and/or when executed by the machine, one or more operations, methods, or techniques disclosed herein. And/or the instructions or series of instructions operative to cause the results may be provided or may be stored on a machine-readable medium.
いくつかの実施形態では、機械可読媒体は、非一時的機械可読記憶媒体を含むことができる。例えば、非一時的機械可読記憶媒体には、フロッピー(登録商標)ディスケット、光記憶媒体、光ディスク、光データストレージデバイス、CD−ROM、磁気ディスク、光磁気ディスク、リードオンリメモリ(ROM)、プログラマブルROM(PROM)、消去可能プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、ランダムアクセスメモリ(RAM)、スタティックRAM(SRAM)、ダイナミックRAM(DRAM)、フラッシュメモリ、相変化メモリ、相変化データストレージ材料、不揮発性メモリ、不揮発性データストレージデバイス、非一時的メモリ、非一時的データストレージデバイスなどが含まれてよい。非一時的機械可読記憶媒体は、一時的に伝搬される信号から構成されない。いくつかの実施形態では、記憶媒体は、固形物を含む有形の媒体を含むことができる。 In some embodiments, machine-readable media may include non-transitory machine-readable storage media. For example, non-transitory machine-readable storage media include floppy diskettes, optical storage media, optical disks, optical data storage devices, CD-ROMs, magnetic disks, magneto-optical disks, read-only memory (ROM), programmable ROM. (PROM), erasable programmable ROM (EPROM), electrically erasable programmable ROM (EEPROM), random access memory (RAM), static RAM (SRAM), dynamic RAM (DRAM), flash memory, phase change memory, phase change Data storage materials, non-volatile memory, non-volatile data storage devices, non-transitory memory, non-transitory data storage devices, etc. may be included. A non-transitory machine-readable storage medium does not consist of signals that are temporarily propagated. In some embodiments, a storage medium can include a tangible medium that includes solids.
好適な機械の例には、限定されないが、汎用プロセッサ、専用プロセッサ、デジタル論理回路、集積回路などが含まれる。好適な機械のさらに他の例には、プロセッサ、デジタル論理回路、又は集積回路を含んだ、コンピュータシステム又は他の電子デバイスが含まれる。そのようなコンピュータシステム又は電子デバイスの例には、限定されないが、デスクトップコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、タブレットコンピュータ、ネットブック、スマートフォン、携帯電話、サーバ、ネットワークデバイス(例えば、ルータ及びスイッチ)、モバイルインターネットデバイス(MID)、メディアプレーヤ、スマートテレビ、ネットトップ、セットトップボックス、及びビデオゲームコントローラが含まれる。 Examples of suitable machines include, but are not limited to, general purpose processors, special purpose processors, digital logic circuits, integrated circuits, and the like. Still other examples of suitable machines include computer systems or other electronic devices, including processors, digital logic circuits, or integrated circuits. Examples of such computer systems or electronic devices include, but are not limited to, desktop computers, laptop computers, notebook computers, tablet computers, netbooks, smartphones, mobile phones, servers, network devices (eg routers and switches). , Mobile internet devices (MIDs), media players, smart TVs, nettops, set-top boxes, and video game controllers.
本明細書全体にわたる、例えば「1つの実施形態」、「ある実施形態」、「1つ又は複数の実施形態」、「いくつかの実施形態」への言及は、特定の特徴が本発明の実施に含まれてよいが、必ずしも含まれる必要がないことを示している。同様に、本明細書では、本開示を簡素化する目的及び様々な発明的側面の理解を助ける目的で、様々な特徴が、単一の実施形態、図、又はそれらの説明に共にグループ化されることがある。しかし、開示される本方法は、本発明が各請求項に明確に記載されるよりも多くの特徴を必要とするという意図を反映していると解釈されるべきではない。むしろ、以下の特許請求の範囲が反映するように、発明的側面は、開示された単一の実施形態の全ての特徴より少なくなっている。したがって、詳細な説明に続く特許請求の範囲は、本明細書により、この詳細な説明に明確に組み込まれており、各請求項は、本発明の別個の実施形態として独立している。
[例示的な実施形態]
References to, for example, "one embodiment,""oneembodiment,""one or more embodiments,""someembodiments," throughout this specification may refer to certain features as implementing the invention. Indicates that it may be included, but is not necessarily included. Similarly, various features are grouped together in a single embodiment, figure, or their description for the purpose of streamlining the disclosure and helping to understand various inventive aspects. Sometimes. However, the disclosed methods should not be construed to reflect the intention that the invention requires more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive aspects lie in less than all features of a single disclosed embodiment. Thus, the claims following the detailed description are hereby expressly incorporated into this detailed description, with each claim standing on its own as a separate embodiment of this invention.
[Exemplary Embodiment]
以下の例は、さらなる実施形態に関する。これらの例の詳細は、1つ又は複数の実施形態のどこでも用いられてよい。 The following examples relate to further embodiments. The details of these examples may be used anywhere in one or more embodiments.
例1は、複数のプロセッサ要素と、ソフトウェアスレッドのユーザレベルの分岐命令を実行する第1のプロセッサ要素とを含む、プロセッサ又は他の装置である。第1のプロセッサ要素は、ユーザレベルの分岐命令を復号するデコーダを含む。ユーザレベルの分岐命令は、少なくとも1つの命令アドレスを示す。第1のプロセッサ要素は、ユーザレベルの分岐命令が復号されたことに応答して、複数のプロセッサ要素のそれぞれを、命令を並列に実行するよう構成するユーザレベルのスレッド分岐モジュールも含む。 Example 1 is a processor or other device that includes a plurality of processor elements and a first processor element that executes a user-level branch instruction of a software thread. The first processor element includes a decoder that decodes user level branch instructions. The user level branch instruction indicates at least one instruction address. The first processor element also includes a user level thread branch module that configures each of the plurality of processor elements to execute the instruction in parallel in response to the user level branch instruction being decoded.
例2は例1に記載のプロセッサを含み、ここで、デコーダは、単一の命令アドレスを任意に示すユーザレベルの分岐命令を復号し、ユーザレベルのスレッド分岐モジュールは、ユーザレベルの分岐命令が復号されたことに応答して、複数のプロセッサ要素のうちの別々の1つにそれぞれ対応する複数のプログラムカウンタのそれぞれに、任意の単一の命令アドレスを格納する。 Example 2 includes the processor described in Example 1, in which the decoder decodes a user-level branch instruction that optionally indicates a single instruction address, and the user-level thread branch module includes a user-level branch instruction. In response to being decoded, an arbitrary single instruction address is stored in each of the plurality of program counters, each of which corresponds to a different one of the plurality of processor elements.
例3は例1に記載のプロセッサを含み、ここで、デコーダは、複数の異なる命令アドレスを任意に示すユーザレベルの分岐命令を復号し、ユーザレベルのスレッド分岐モジュールは、ユーザレベルの分岐命令が復号されたことに応答して、複数のプロセッサ要素のうちの別々の1つにそれぞれ対応する複数のプログラムカウンタのそれぞれに、複数の異なる命令アドレスのうちの別々の1つを任意に格納する。 Example 3 includes the processor described in Example 1, in which the decoder decodes a user-level branch instruction that optionally indicates a plurality of different instruction addresses, and the user-level thread branch module includes a user-level branch instruction. Responsive to being decoded, optionally storing different ones of the different instruction addresses in respective program counters respectively corresponding to different ones of the plurality of processor elements.
例4は、例1から3のいずれか1つに記載のプロセッサを含み、ここで、ユーザレベルのスレッド分岐モジュールは、ユーザレベルの分岐命令が復号されたことに応答して、第1のプロセッサ要素のアーキテクチャ状態のコピーを複数のプロセッサ要素のそれぞれに任意に提供する。 Example 4 includes the processor according to any one of Examples 1 to 3, wherein the user-level thread branch module is responsive to the user-level branch instruction being decoded. Optionally provide a copy of the architectural state of the element to each of the plurality of processor elements.
例5は例4に記載のプロセッサを含み、ここで、アーキテクチャ状態のコピーを複数のプロセッサ要素のそれぞれに提供することは、複数のプロセッサ要素のうちの別々の1つにそれぞれ対応する複数のメモリ位置のそれぞれに、アーキテクチャ状態のコピーを格納することを任意に含む。 Example 5 includes the processor described in Example 4, wherein providing a copy of the architectural state to each of the plurality of processor elements includes a plurality of memories each corresponding to a separate one of the plurality of processor elements. Optionally, storing a copy of the architectural state at each of the locations.
例6は、例1から5のいずれか1つに記載のプロセッサを含み、ここで、ユーザレベルのスレッド分岐モジュールは、ユーザレベルの分岐命令が復号されたことに応答して、複数のプロセッサ要素のそれぞれを、管理上のシステムソフトウェアから任意に介入されることなく、命令を並列に実行するよう構成する。 Example 6 includes the processor as described in any one of Examples 1-5, wherein the user-level thread branch module is responsive to a user-level branch instruction being decoded to provide a plurality of processor elements. Are configured to execute instructions in parallel without any intervention from administrative system software.
例7は、例1から6のいずれか1つに記載のプロセッサを含み、ここで、ユーザレベルのスレッド分岐モジュールは、ユーザレベルの分岐命令が復号されたことに応答して、第1のプロセッサ要素に任意に、ソフトウェアスレッドの命令の実行を中止させ、同期バリアにおいて任意に待機させる。 Example 7 includes the processor according to any one of Examples 1 to 6, wherein the user-level thread branch module is responsive to the user-level branch instruction being decoded by the first processor. The element optionally causes the software thread to stop executing instructions and optionally waits at the synchronization barrier.
例8は、例1から6のいずれか1つに記載のプロセッサを含み、ここで、ユーザレベルのスレッド分岐モジュールは任意に、ユーザレベルの分岐命令が復号されたことに応答して、第1のプロセッサ要素に、ソフトウェアスレッドの命令の実行を中止させることはない。 Example 8 includes the processor as described in any one of Examples 1-6, wherein the user-level thread branch module optionally responds to the decoding of the user-level branch instruction with a first Does not cause the processor element to stop executing the instructions of the software thread.
例9は、例1から8のいずれか1つに記載のプロセッサを含み、ここで、複数のプロセッサ要素のそれぞれは対応するユーザレベルの同期及び終了命令を実行し、複数のプロセッサ要素のそれぞれは、対応するユーザレベルの同期及び終了命令を復号するデコーダを含み、ユーザレベルの同期スレッド終了モジュールは、対応するユーザレベルの同期及び終了命令が復号されたことに応答して、ユーザレベルの同期スレッド終了モジュールが中に含まれる、対応するプロセッサ要素に、さらなる命令の実行を中止させ、複数のプロセッサ要素のそれぞれが対応するユーザレベルの同期及び終了命令を実行するまで待機させ、複数のプロセッサ要素のそれぞれが対応するユーザレベルの同期及び終了命令を実行した後に、第1のプロセッサ要素上で実行されるソフトウェアスレッドの第2の命令へ制御を移行させる。 Example 9 includes the processor as described in any one of Examples 1-8, wherein each of the plurality of processor elements executes a corresponding user-level synchronization and termination instruction and each of the plurality of processor elements , A decoder for decoding the corresponding user level synchronization and termination instructions, wherein the user level synchronization thread termination module is responsive to the decoding of the corresponding user level synchronization and termination instructions. A termination module includes a corresponding processor element that suspends execution of further instructions and waits until each of the plurality of processor elements executes a corresponding user-level synchronization and termination instruction. Transfer control to the second instruction of the software thread executing on the first processor element after each executing corresponding user level synchronization and termination instructions.
例10は例9に記載のプロセッサを含み、ここで、それぞれのユーザレベルの同期スレッド終了モジュールは、対応するユーザレベルの同期及び終了命令が復号されたことに応答して、1つ又は複数のフラグに関連付けられた1つ又は複数のエラー状態のインジケーションを第1のプロセッサ要素に任意に伝達する。 Example 10 includes the processor described in Example 9, wherein each user-level synchronization thread termination module is responsive to one or more corresponding user-level synchronization and termination instructions being decoded. Optionally communicating an indication of one or more error conditions associated with the flag to the first processor element.
例11は、例1から10のいずれか1つに記載のプロセッサを含み、ここで、第1のプロセッサ要素は、複数のプロセッサ要素それぞれの命令セットにも含まれる命令を含む命令セットを任意に有する。 Example 11 includes the processor according to any one of Examples 1-10, wherein the first processor element optionally includes an instruction set that also includes an instruction set included in each of the plurality of processor elements. Have.
例12は、例1から11のいずれか1つに記載のプロセッサを含み、ここで、第1のプロセッサ要素は、複数のプロセッサ要素のそれぞれよりも低い平均命令実行レイテンシを任意に有する。 Example 12 includes the processor according to any one of Examples 1-11, wherein the first processor element optionally has a lower average instruction execution latency than each of the plurality of processor elements.
例13は、例1から11のいずれか1つに記載のプロセッサを含み、ここで、第1のプロセッサ要素は、複数のプロセッサ要素それぞれのマイクロアーキテクチャと比べて、命令実行がよりアウトオブオーダであるマイクロアーキテクチャを任意に有する。 Example 13 includes the processor as described in any one of Examples 1-11, wherein the first processor element is more out-of-order in instruction execution than the microarchitecture of each of the plurality of processor elements. It optionally has some microarchitecture.
例14は、例1から11のいずれか1つに記載のプロセッサを含み、ここで、第1のプロセッサ要素は、元のプログラム順序のアーキテクチャ状態に対してアウトオブオーダで実行されたはずの命令の結果をコミットするコミットユニットを任意に有し、複数のプロセッサ要素のそれぞれはコミットユニットを有していない。 Example 14 includes the processor according to any one of Examples 1 to 11, wherein the first processor element is an instruction that would have been executed out of order with respect to the original program order architectural state. Optionally has a commit unit for committing the result of the, and each of the plurality of processor elements does not have a commit unit.
例15は、例1から11のいずれか1つに記載のプロセッサを含み、ここで、ユーザレベルのスレッド分岐モジュールは、ユーザレベルの分岐命令が復号されたことに応答して、複数のプロセッサ要素のうちの任意で少なくとも20個のそれぞれに、命令を並列に実行するよう構成し、複数のプロセッサ要素の少なくとも20個は全て、単一のデコーダを共有する。 Example 15 includes the processor according to any one of Examples 1-11, wherein the user-level thread branch module is responsive to a user-level branch instruction being decoded to provide a plurality of processor elements. Optionally, each of at least 20 of the plurality of processor elements are configured to execute instructions in parallel, and at least 20 of the plurality of processor elements all share a single decoder.
例16は、例1から11のいずれか1つに記載のプロセッサを含み、分岐を予測する分岐予測ユニットと、分岐予測ユニットに結合され、ユーザレベルの分岐命令を含む命令をプリフェッチする命令プリフェッチユニットと、命令プリフェッチユニットに結合され、命令を格納するレベル1(L1)命令キャッシュと、データを格納するL1データキャッシュと、データ及び命令を格納するレベル2(L2)キャッシュと、復号ユニット、L1命令キャッシュ、及びL2キャッシュに結合され、ユーザレベルの分岐命令をL1命令キャッシュ及びL2キャッシュのうちの1つからフェッチし、ユーザレベルの分岐命令を復号ユニットに提供する命令フェッチユニットと、レジスタをリネームするレジスタリネームユニットと、実行のためにユーザレベルの分岐命令から復号された1つ又は複数のオペレーションをスケジューリングするスケジューラと、コミットユニットとをさらに含む。 Example 16 includes the processor according to any one of Examples 1 to 11, a branch prediction unit that predicts a branch, and an instruction prefetch unit that is coupled to the branch prediction unit and that prefetches an instruction that includes a user-level branch instruction. A level 1 (L1) instruction cache for storing instructions, an L1 data cache for storing data, a level 2 (L2) cache for storing data and instructions, a decoding unit, and an L1 instruction An instruction fetch unit coupled to the cache and the L2 cache for fetching user level branch instructions from one of the L1 instruction cache and the L2 cache and providing the user level branch instructions to the decoding unit; and renaming registers. It further includes a register rename unit, a scheduler that schedules one or more operations decoded from a user-level branch instruction for execution, and a commit unit.
例17は、第1のプロセッサ要素において、ソフトウェアスレッドのユーザレベルの分岐命令を受信する段階を含む、プロセッサにおける方法である。ユーザレベルの分岐命令は、少なくとも1つの命令アドレスを示す。本方法は、ユーザレベルの分岐命令に応答して、第1のプロセッサ要素を用いて、複数の追加のプロセッサ要素のそれぞれを、命令を並列に実行するよう構成する段階も含む。複数の追加のプロセッサ要素のそれぞれは、ユーザレベルの分岐命令により示された少なくとも1つの命令アドレスのうちのある命令アドレスにおいて、命令を実行し始める。 Example 17 is a method in a processor that includes receiving a user level branch instruction of a software thread in a first processor element. The user level branch instruction indicates at least one instruction address. The method also includes, in response to the user level branch instruction, using the first processor element to configure each of the plurality of additional processor elements to execute the instruction in parallel. Each of the plurality of additional processor elements begins executing instructions at an instruction address of at least one instruction address indicated by the user-level branch instruction.
例18は例17に記載の方法を含み、ここで、受信する段階は、単一の命令アドレスを示すユーザレベルの分岐命令を受信する段階を含み、構成する段階は、複数の追加のプロセッサ要素のうちの別々の1つにそれぞれ対応する複数のプログラムカウンタのそれぞれに、単一の命令アドレスを格納する段階を含む。 Example 18 includes the method as described in example 17, wherein the receiving step includes receiving a user-level branch instruction indicating a single instruction address, and the configuring step includes a plurality of additional processor elements. Storing a single instruction address in each of a plurality of program counters, each corresponding to a different one of them.
例19は例17に記載の方法を含み、ここで、受信する段階は、複数の命令アドレスを示すユーザレベルの分岐命令を受信する段階を含み、構成する段階は、複数の追加のプロセッサ要素のうちの別々の1つにそれぞれ対応する複数のプログラムカウンタのうちの別々の1つに、複数の命令アドレスのそれぞれを格納する段階を含む。 Example 19 includes the method described in Example 17, wherein the receiving step includes receiving a user-level branch instruction indicating a plurality of instruction addresses, and the configuring step includes a plurality of additional processor elements. Storing each of the plurality of instruction addresses in a different one of the plurality of program counters that respectively correspond to a different one of them.
例20は、例17から19のいずれか1つに記載の方法を含み、ここで、構成する段階は、複数の追加のプロセッサ要素それぞれのために、第1のプロセッサ要素のアーキテクチャ状態のコピーを格納する段階を含む。 Example 20 includes the method as described in any one of Examples 17-19, wherein the configuring step includes, for each of the plurality of additional processor elements, a copy of the architectural state of the first processor element. Including the step of storing.
例21は、例17から20のいずれか1つに記載の方法を含み、ここで、構成する段階は、複数の追加のプロセッサ要素のそれぞれを、管理上のシステムソフトウェアから介入されることなく、命令を並列に実行するよう構成する第1のプロセッサ要素を含む。 Example 21 includes the method as described in any one of Examples 17-20, wherein the configuring step comprises configuring each of the plurality of additional processor elements without intervention from administrative system software. A first processor element configured to execute the instructions in parallel is included.
例22は、例17から21のいずれか1つに記載の方法を含み、第1のプロセッサ要素が、ユーザレベルの分岐命令の実行に応答して、ソフトウェアスレッドの命令実行を中止し、同期バリアにおいて待機する段階をさらに含む。 Example 22 includes the method as described in any one of Examples 17-21, wherein the first processor element suspends instruction execution of a software thread in response to execution of a user-level branch instruction and a synchronization barrier. Further comprising waiting at.
例23は、例17から22のいずれか1つに記載の方法を含み、複数の追加のプロセッサ要素のそれぞれが、対応するユーザレベルの同期及び終了命令の実行に応答して、さらなる命令の実行を中止する段階と、複数の追加のプロセッサ要素のそれぞれが対応するユーザレベルの同期及び終了命令を実行するまで待機する段階と、複数の追加のプロセッサ要素のそれぞれが対応するユーザレベルの同期及び終了命令を実行した後に、ソフトウェアスレッドの第2の命令へ制御を移行する段階とをさらに含む。 Example 23 includes the method as described in any one of Examples 17-22, wherein each of the plurality of additional processor elements executes a further instruction in response to execution of a corresponding user level synchronization and termination instruction. And waiting until each of the plurality of additional processor elements executes corresponding user-level synchronization and termination instructions, and each of the plurality of additional processor elements corresponds to corresponding user-level synchronization and termination. After executing the instruction, transferring control to a second instruction of the software thread.
例24は例23に記載の方法を含み、複数の追加のプロセッサ要素のそれぞれが、対応するユーザレベルの同期及び終了命令の実行に応答して、エラー状態情報を第1のプロセッサ要素に伝達する段階をさらに含む。 Example 24 includes the method described in Example 23, wherein each of the plurality of additional processor elements communicates error status information to the first processor element in response to execution of a corresponding user-level synchronization and termination instruction. Further includes steps.
例25は、例17から24のいずれか1つに記載の方法を含み、複数の追加のプロセッサ要素のそれぞれが、第1のプロセッサ要素の命令セットに含まれる命令を復号する段階をさらに含む。 Example 25 includes the method as described in any one of Examples 17-24, further including the step of each of the plurality of additional processor elements decoding instructions included in the instruction set of the first processor element.
例26は、例17から25のいずれか1つに記載の方法を含み、第1のプロセッサ要素において命令をアウトオブオーダで実行する段階と、複数の追加のプロセッサ要素のそれぞれにおいて命令を順番に実行する段階とをさらに含む。 Example 26 includes the method as described in any one of Examples 17 to 25, including executing instructions out-of-order in a first processor element, and sequentially executing instructions in each of a plurality of additional processor elements. And the step of performing.
例27は、相互接続と相互接続に結合されたプロセッサとを含んだ、命令を処理するコンピュータシステム又は他のシステムであり、プロセッサは、複数のプロセッサ要素と、ソフトウェアスレッドのユーザレベルの分岐命令を実行する第1のプロセッサ要素とを含み、ユーザレベルの分岐命令は少なくとも1つの命令アドレスを示し、第1のプロセッサ要素は、ユーザレベルの分岐命令に応答して、複数のプロセッサ要素のそれぞれを、命令を並列に実行するよう構成し、ダイナミックランダムアクセスメモリ(DRAM)は相互接続に結合され、少なくとも1つのユーザレベルの分岐命令を含むコードを格納する。 Example 27 is a computer system or other system for processing instructions that includes an interconnect and a processor coupled to the interconnect, the processor including multiple processor elements and user-level branch instructions for a software thread. A first processor element for executing, wherein the user-level branch instruction indicates at least one instruction address, and the first processor element responds to the user-level branch instruction by instructing each of the plurality of processor elements to: Configured to execute instructions in parallel, a dynamic random access memory (DRAM) is coupled to the interconnect and stores code including at least one user level branch instruction.
例28は例27に記載のシステムを含み、ここで、第1のプロセッサ要素は、複数のプロセッサ要素それぞれのマイクロアーキテクチャに比べて、命令実行がよりアウトオブオーダであるマイクロアーキテクチャを有し、第1のプロセッサ要素は、ユーザレベルの分岐命令が復号されたことに応答して、複数のプロセッサ要素のうちの少なくとも20個のそれぞれを、命令を並列に実行するよう構成する。 Example 28 includes the system described in Example 27, wherein the first processor element has a microarchitecture in which instruction execution is more out of order than the microarchitecture of each of the plurality of processor elements, and The one processor element is configured to execute each of the at least 20 of the plurality of processor elements in parallel in response to the user-level branch instruction being decoded.
例29は、非一時的機械可読記憶媒体を含む製造品であり、非一時的機械可読記憶媒体はユーザレベルの分岐命令を格納し、ユーザレベルの分岐命令は少なくとも1つの命令アドレスを示し、ユーザレベルの分岐命令は、プロセッサの第1のプロセッサ要素により実行された場合、ユーザレベルの分岐命令に応答して、プロセッサの複数の追加のプロセッサ要素のそれぞれを、命令を並列に実行するよう構成することを含むオペレーションを第1のプロセッサ要素に実行させ、複数の追加のプロセッサ要素のそれぞれは、ユーザレベルの分岐命令により示された少なくとも1つの命令アドレスのうちのある命令アドレスにおいて命令を実行し始め、複数の追加のプロセッサ要素のそれぞれは、第1のプロセッサ要素のアウトオブオーダ命令実行パイプラインよりも多くのインオーダ命令実行パイプラインを有する。 Example 29 is an article of manufacture that includes a non-transitory machine-readable storage medium, the non-transitory machine-readable storage medium stores a user-level branch instruction, the user-level branch instruction indicating at least one instruction address, and The level branch instruction, when executed by the first processor element of the processor, is configured to, in response to the user level branch instruction, each of the plurality of additional processor elements of the processor execute the instruction in parallel. And causing each of the plurality of additional processor elements to begin executing instructions at an instruction address of at least one instruction address indicated by the user-level branch instruction. , Each of the plurality of additional processor elements has more in-order instruction execution pipelines than the out-of-order instruction execution pipelines of the first processor element.
例30は例29に記載の製造品を含み、実行された場合に、複数の追加のプロセッサ要素のうちのある追加のプロセッサ要素が、さらなる命令の実行を中止すること、及び複数の追加のプロセッサ要素のそれぞれが同期バリアに到達するまで、同期バリアにおいて待機することを含むオペレーションを、追加のプロセッサ要素に実行させるという、ユーザレベルの同期及び終了命令をさらに含む。 Example 30 includes the article of manufacture described in Example 29, wherein when executed, an additional processor element of the plurality of additional processor elements suspends execution of further instructions, and the plurality of additional processor elements. It further includes user-level synchronization and termination instructions that cause additional processor elements to perform operations that include waiting in the synchronization barrier until each of them reaches the synchronization barrier.
例31は、例17から26のいずれか1つに記載の方法を実行するよう働く又は動作するプロセッサ又は他の装置である。 Example 31 is a processor or other device that acts or operates to carry out the method described in any one of Examples 17-26.
例32は、例17から26のいずれか1つに記載の方法を実行するための手段を含むプロセッサ又は他の装置である。 Example 32 is a processor or other device that includes means for performing the method described in any one of Examples 17-26.
例33は、例17から26のいずれか1つに記載の方法を実行するためのモジュール、及び/又はユニット、及び/又はロジック、及び/又は回路、及び/又は手段の任意の組み合わせを含むプロセッサである。 Example 33 is a processor including modules and/or units, and/or logic, and/or circuits and/or any combination of means for performing the method according to any one of Examples 17-26. Is.
例34は、任意の非一時的機械可読媒体を含む製造品であり、当該非一時的機械可読媒体は、プロセッサ、コンピュータシステム、電子デバイス、又は他の機械により実行された場合、及び/又は実行された時、例17から21のいずれか1つに記載の方法を機械に実行させるよう動作する命令を任意に格納する、又はそうでなければ提供する。 Example 34 is an article of manufacture that includes any non-transitory machine-readable medium, where the non-transitory machine-readable medium executes and/or is executed by a processor, computer system, electronic device, or other machine. Instructions are optionally stored or otherwise provided to operate a machine to perform the method described in any one of Examples 17-21.
例35は、バス又は他の相互接続を含むコンピュータシステム又は他の電子デバイスであり、例1から16のいずれか1つに記載のプロセッサは相互接続に結合され、任意のダイナミックランダムアクセスメモリ(DRAM)、任意のスタティックRAM、任意のフラッシュメモリ、任意のグラフィックスコントローラ又はチップ、任意のビデオカード、任意の無線通信チップ、任意の無線送受信機、任意の移動体通信用グローバルシステム(GSM(登録商標))アンテナ、任意のコプロセッサ(例えば、CISCコプロセッサ)、任意のオーディオデバイス、任意のオーディオ入力デバイス、任意のオーディオ出力デバイス、任意のビデオ入力デバイス(例えば、ビデオカメラ)、任意のネットワークインタフェース、任意の通信インタフェース、任意の永続性メモリ(例えば、任意の相変化メモリ、メモリスタなど)、及びこれらの組み合わせから選択される1つ又は複数のコンポーネントが相互接続に結合される。 Example 35 is a computer system or other electronic device that includes a bus or other interconnect, and the processor described in any one of Examples 1 to 16 is coupled to the interconnect and any dynamic random access memory (DRAM). ), any static RAM, any flash memory, any graphics controller or chip, any video card, any wireless communication chip, any wireless transceiver, any global system for mobile communication (GSM® )) Antenna, any coprocessor (eg CISC coprocessor), any audio device, any audio input device, any audio output device, any video input device (eg video camera), any network interface, One or more components selected from any communication interface, any persistent memory (eg, any phase change memory, memristor, etc.), and combinations thereof are coupled to the interconnect.
例36は、実質的に本明細書で説明されたような任意のユーザレベルの分岐命令を実行する(例えば、当該命令を実行するコンポーネントを有する、又は当該命令を実行するよう動作する)プロセッサ又は他の装置である。 Example 36 is a processor or a processor that executes (eg, has a component that executes, or operates to execute) a user-level branch instruction substantially as described herein. Another device.
例37は、実質的に本明細書に説明されたような任意のユーザレベルの同期及び終了命令を実行する(例えば、当該命令を実行するコンポーネントを有する、又は当該命令を実行するよう動作する)プロセッサ又は他の装置である。 Example 37 executes virtually any user-level synchronization and termination instruction as described herein (eg, has a component that executes the instruction or operates to execute the instruction). A processor or other device.
例38は、第1の命令セットの命令を復号する復号ユニットを有するプロセッサを含む、コンピュータシステム又は他の電子デバイスである。プロセッサは、1つ又は複数の実行ユニットも有する。電子デバイスは、プロセッサに結合されたストレージデバイスも含む。ストレージデバイスは第1の命令を格納し、第1の命令は、実質的に本明細書に開示された命令(例えば、ユーザレベルの分岐命令、又はユーザレベルの同期及び結合命令)のいずれであってもよく、第2の命令セットからのものでもよい。ストレージデバイスは、第1の命令を第1の命令セットの1つ又は複数の命令に変換する命令も格納する。第1の命令セットの1つ又は複数の命令は、プロセッサにより実行された場合、第1の命令により指定されたオペレーションをプロセッサに実行させる。 Example 38 is a computer system or other electronic device that includes a processor having a decoding unit that decodes instructions of a first instruction set. The processor also has one or more execution units. The electronic device also includes a storage device coupled to the processor. The storage device stores a first instruction, the first instruction being substantially any of the instructions disclosed herein (eg, a user-level branch instruction, or a user-level synchronization and join instruction). Or from the second instruction set. The storage device also stores instructions that translate the first instruction into one or more instructions of a first instruction set. The one or more instructions of the first instruction set, when executed by the processor, cause the processor to perform the operation specified by the first instruction.
例39は、実質的に本明細書で説明されたプロセッサ又は他の装置である。 Example 39 is a processor or other device substantially as described herein.
例40は、実質的に本明細書で説明された任意の方法を実行するよう動作するプロセッサ又は他の装置である。 Example 40 is a processor or other device that operates to perform substantially any of the methods described herein.
Claims (26)
ソフトウェアスレッドのユーザレベルの分岐命令を実行する第1のプロセッサ要素と
を備え、前記第1のプロセッサ要素は、
前記ユーザレベルの分岐命令を復号するデコーダであって、前記ユーザレベルの分岐命令は、少なくとも1つの命令アドレスを示す、デコーダと、
前記ユーザレベルの分岐命令が復号されたことに応答して、前記複数のプロセッサ要素のそれぞれを、命令を並列に実行するよう構成するユーザレベルのスレッド分岐モジュールと
を含み、
前記複数のプロセッサ要素のそれぞれは、対応するユーザレベルの同期及び終了命令を実行し、前記複数のプロセッサ要素のそれぞれは、
前記対応するユーザレベルの同期及び終了命令を復号するデコーダと、
前記対応するユーザレベルの同期及び終了命令が復号されたことに応答して、ユーザレベルの同期スレッド終了モジュールが中に含まれる、前記対応するプロセッサ要素に、
さらなる命令の実行を中止させ、
前記複数のプロセッサ要素のそれぞれが前記対応するユーザレベルの同期及び終了命令を実行するまで待機させ、
前記複数のプロセッサ要素のそれぞれが前記対応するユーザレベルの同期及び終了命令を実行した後に、前記第1のプロセッサ要素上で実行される前記ソフトウェアスレッドの第2の命令へ制御を移行させる
ユーザレベルの同期スレッド終了モジュールと
を含む、
プロセッサ。 Multiple processor elements,
A first processor element for executing a user-level branch instruction of a software thread, the first processor element comprising:
A decoder for decoding the user level branch instruction, wherein the user level branch instruction indicates at least one instruction address;
In response to the branch instruction of the user level is decoded, each of the plurality of processors elements, viewed contains a user-level threads branch module be configured to execute instructions in parallel,
Each of the plurality of processor elements executes corresponding user-level synchronization and termination instructions, and each of the plurality of processor elements
A decoder for decoding the corresponding user level synchronization and termination instructions,
In response to the corresponding user-level synchronization and termination instructions being decoded, the corresponding processor element having a user-level synchronization thread termination module included therein.
Abort execution of further instructions,
Waiting until each of the plurality of processor elements executes the corresponding user level synchronization and termination instructions,
Transfer control to a second instruction of the software thread executing on the first processor element after each of the plurality of processor elements executes the corresponding user-level synchronization and termination instructions.
User-level sync thread termination module
including,
Processor.
請求項1に記載のプロセッサ。 Each user-level synchronization thread termination module is responsive to the corresponding user-level synchronization and termination instruction being decoded to indicate one or more error condition indicators associated with one or more flags. Communication to the first processor element,
The processor according to claim 1 .
ソフトウェアスレッドのユーザレベルの分岐命令を実行する第1のプロセッサ要素と
を備え、前記第1のプロセッサ要素は、
前記ユーザレベルの分岐命令を復号するデコーダであって、前記ユーザレベルの分岐命令は、少なくとも1つの命令アドレスを示す、デコーダと、
前記ユーザレベルの分岐命令が復号されたことに応答して、前記複数のプロセッサ要素のそれぞれを、命令を並列に実行するよう構成するユーザレベルのスレッド分岐モジュールと
を含み、
前記第1のプロセッサ要素は、元のプログラム順序のアーキテクチャ状態に対してアウトオブオーダに実行されたはずの命令の結果をコミットするコミットユニットを有し、前記複数のプロセッサ要素のそれぞれはコミットユニットを有していない、
プロセッサ。 Multiple processor elements,
A first processor element executing a user level branch instruction of a software thread;
And the first processor element comprises:
A decoder for decoding the user level branch instruction, wherein the user level branch instruction indicates at least one instruction address;
A user-level thread branch module configured to, in response to the user-level branch instruction being decoded, configure each of the plurality of processor elements to execute the instruction in parallel;
Including,
The first processor element has a commit unit that commits a result of an instruction that would have been executed out-of-order with respect to the original program order architectural state, each of the plurality of processor elements having a commit unit. Do not have,
Processor.
請求項1から3の何れか一項に記載のプロセッサ。 The decoder decodes the user-level branch instruction indicating a single instruction address, and the user-level thread branch module is responsive to the user-level branch instruction being decoded for the plurality of processors. Storing the single instruction address in each of a plurality of program counters, each of which corresponds to a separate one of the elements,
The processor according to any one of claims 1 to 3 .
請求項1から3の何れか一項に記載のプロセッサ。 The decoder decodes the user level branch instruction indicating a plurality of different instruction addresses, and the user level thread branch module is responsive to the user level branch instruction being decoded. Storing different ones of the different instruction addresses in respective program counters respectively corresponding to different ones of the elements,
The processor according to any one of claims 1 to 3 .
請求項1から5の何れか一項に記載のプロセッサ。 The user-level thread branch module provides to each of the plurality of processor elements a copy of the architectural state of the first processor element in response to decoding the user-level branch instruction.
The processor according to any one of claims 1 to 5 .
請求項6に記載のプロセッサ。 Providing the copy of the architectural state to each of the plurality of processor elements includes providing a copy of the architectural state to each of a plurality of memory locations that respectively correspond to different ones of the plurality of processor elements. Including storing,
The processor according to claim 6 .
請求項1から7の何れか一項に記載のプロセッサ。 The user-level thread branch module is responsive to the user-level branch instruction being decoded to execute the instructions in parallel without intervention from administrative system software. Each of the
The processor according to any one of claims 1 to 7 .
前記ソフトウェアスレッドの命令実行を中止させ、
同期バリアで待機させる、
請求項1から8の何れか一項に記載のプロセッサ。 The user-level thread branch module is responsive to the user-level branch instruction being decoded to cause the first processor element to:
Stop the instruction execution of the software thread,
Wait at the sync barrier,
The processor according to any one of claims 1 to 8 .
請求項3に記載のプロセッサ。
The user-level thread branch module does not cause the first processor element to suspend instruction execution of the software thread in response to decoding the user-level branch instruction.
The processor according to claim 3 .
請求項1から10のいずれか一項に記載のプロセッサ。 The first processor element has a lower average instruction execution latency than each of the plurality of processor elements,
The processor according to any one of claims 1 to 10.
請求項1から11のいずれか一項に記載のプロセッサ。 The first processor element has a microarchitecture in which instruction execution is more out of order than the microarchitecture of each of the plurality of processor elements;
The processor according to any one of claims 1 to 11.
請求項1から12のいずれか一項に記載のプロセッサ。 The user-level thread branch module is configured to execute each of the at least 20 processor elements in parallel in response to the user-level branch instruction being decoded. , All of the at least 20 of the plurality of processor elements share a single decoder,
The processor according to any one of claims 1 1 2.
第1のプロセッサ要素において、ソフトウェアスレッドのユーザレベルの分岐命令を受信する段階であって、前記ユーザレベルの分岐命令は少なくとも1つの命令アドレスを示す、段階と、
前記ユーザレベルの分岐命令に応答して、前記第1のプロセッサ要素を用いて、複数の追加のプロセッサ要素のそれぞれを、命令を並列に実行するよう構成する段階であって、前記複数の追加のプロセッサ要素のそれぞれは、前記ユーザレベルの分岐命令により示された前記少なくとも1つの命令アドレスのうちのある命令アドレスにおいて命令を実行し始める、段階と、
前記複数の追加のプロセッサ要素のそれぞれが、対応するユーザレベルの同期及び終了命令の実行に応答して、
さらなる命令の実行を中止する段階と、
前記複数の追加のプロセッサ要素のそれぞれが前記対応するユーザレベルの同期及び終了命令を実行するまで待機する段階と、
前記複数の追加のプロセッサ要素のそれぞれが前記対応するユーザレベルの同期及び終了命令を実行した後に、前記ソフトウェアスレッドの第2の命令へ制御を移行する段階と
を備える
方法。 A method in a processor,
Receiving a user level branch instruction of a software thread at the first processor element, the user level branch instruction indicating at least one instruction address;
Responsive to the user-level branch instruction, using the first processor element, configuring each of the plurality of additional processor elements to execute instructions in parallel. Each of the processor elements begins executing instructions at an instruction address of the at least one instruction address indicated by the user level branch instruction ;
Each of the plurality of additional processor elements is responsive to execution of a corresponding user-level synchronization and termination instruction,
Stopping the execution of further instructions,
Waiting until each of the plurality of additional processor elements executes the corresponding user-level synchronization and termination instructions,
Transferring control to a second instruction of the software thread after each of the plurality of additional processor elements executes the corresponding user-level synchronization and termination instruction .
第1のプロセッサ要素において、ソフトウェアスレッドのユーザレベルの分岐命令を受信する段階であって、前記ユーザレベルの分岐命令は少なくとも1つの命令アドレスを示す、段階と、
前記ユーザレベルの分岐命令に応答して、前記第1のプロセッサ要素を用いて、複数の追加のプロセッサ要素のそれぞれを、命令を並列に実行するよう構成する段階であって、前記複数の追加のプロセッサ要素のそれぞれは、前記ユーザレベルの分岐命令により示された前記少なくとも1つの命令アドレスのうちのある命令アドレスにおいて命令を実行し始める、段階と
を備え、
前記第1のプロセッサ要素は、元のプログラム順序のアーキテクチャ状態に対してアウトオブオーダに実行されたはずの命令の結果をコミットするコミットユニットを有し、前記複数の追加のプロセッサ要素のそれぞれはコミットユニットを有していない
方法。 A method in a processor,
Receiving a user level branch instruction of a software thread at the first processor element, the user level branch instruction indicating at least one instruction address;
Responsive to the user-level branch instruction, using the first processor element, configuring each of the plurality of additional processor elements to execute instructions in parallel. Each of the processor elements begins executing an instruction at an instruction address of the at least one instruction address indicated by the user-level branch instruction ,
The first processor element has a commit unit that commits a result of an instruction that would have been executed out-of-order with respect to the original program order architectural state, each of the plurality of additional processor elements committing. A method that does not have a unit .
請求項14または15に記載の方法。 The step of receiving includes the step of receiving the user-level branch instruction indicating a single instruction address, and the step of configuring comprises a plurality of instructions each corresponding to a separate one of the plurality of additional processor elements. Storing the single instruction address in each of the program counters,
The method according to claim 14 or 15.
請求項14または15に記載の方法。 The step of receiving includes the step of receiving the user-level branch instruction indicating a plurality of instruction addresses, and the step of configuring comprises a plurality of programs each corresponding to a different one of the plurality of additional processor elements. Storing each of the plurality of instruction addresses in a separate one of the counters,
The method according to claim 14 or 15.
請求項14から17の何れか一項に記載の方法。 The configuring step includes storing a copy of the architectural state of the first processor element for each of the plurality of additional processor elements.
The method according to any one of claims 14 to 17 .
前記第1のプロセッサ要素において、命令をアウトオブオーダで実行する段階と、
前記複数の追加のプロセッサ要素のそれぞれにおいて、命令を順番に実行する段階と
を含む、
請求項14から18の何れか一項に記載の方法。 The step of configuring includes the step of the first processor element configuring each of the plurality of additional processor elements to execute the instructions in parallel without intervention from administrative system software. ,
Executing instructions out-of-order in the first processor element;
Executing instructions in sequence at each of the plurality of additional processor elements.
The method according to any one of claims 14 to 18 .
プロセッサ。 Operates to carry out the method according to any one of claims 14 to 19.
Processor .
プロセッサ。 A means for carrying out the method according to any one of claims 14 to 19 is provided.
Processor .
プログラム。 A program that causes a processor to execute the method according to any one of claims 14 to 19 .
電子デバイス。 Comprises an interconnect, a processor according to any one of the interconnect claim 1 coupled to 1 3, and a dynamic random access memory (DRAM) coupled to the interconnect,
Electronic device.
ソフトウェアスレッドのユーザレベルの分岐命令を実行する第1のプロセッサ要素と
を備え、前記第1のプロセッサ要素は、
前記ユーザレベルの分岐命令を復号するための手段であって、前記ユーザレベルの分岐命令は少なくとも1つの命令アドレスを示す、手段と、
前記ユーザレベルの分岐命令が復号されたことに応答して、前記複数のプロセッサ要素のそれぞれを、命令を並列に実行するよう構成する手段と
を含み、
前記複数のプロセッサ要素のそれぞれは、対応するユーザレベルの同期及び終了命令を実行し、前記複数のプロセッサ要素のそれぞれは、
前記対応するユーザレベルの同期及び終了命令を復号する手段と、
前記対応するユーザレベルの同期及び終了命令が復号されたことに応答して、ユーザレベルの同期スレッド終了のための手段が中に含まれる、前記対応するプロセッサ要素に、
さらなる命令の実行を中止させ、
前記複数のプロセッサ要素のそれぞれが前記対応するユーザレベルの同期及び終了命令を実行するまで待機させ、
前記複数のプロセッサ要素のそれぞれが前記対応するユーザレベルの同期及び終了命令を実行した後に、前記第1のプロセッサ要素上で実行される前記ソフトウェアスレッドの第2の命令へ制御を移行させる
ユーザレベルの同期スレッド終了のための手段と
を含む、
プロセッサ。 Multiple processor elements,
A first processor element for executing a user-level branch instruction of a software thread, the first processor element comprising:
Means for decoding the user-level branch instruction, the user-level branch instruction indicating at least one instruction address;
Wherein in response to a user-level branch instruction is decoded, each of the plurality of processors elements, look-containing and means configured to execute instructions in parallel,
Each of the plurality of processor elements executes corresponding user-level synchronization and termination instructions, and each of the plurality of processor elements
Means for decoding said corresponding user level synchronization and termination instructions;
Responsive to the corresponding user level synchronization and termination instructions being decoded, said corresponding processor element including means for user level synchronization thread termination.
Abort execution of further instructions,
Waiting until each of the plurality of processor elements executes the corresponding user level synchronization and termination instructions,
Transfer control to a second instruction of the software thread executing on the first processor element after each of the plurality of processor elements executes the corresponding user-level synchronization and termination instructions.
Means for user-level synchronization thread termination
The including,
Processor.
ソフトウェアスレッドのユーザレベルの分岐命令を実行する第1のプロセッサ要素と
を備え、前記第1のプロセッサ要素は、
前記ユーザレベルの分岐命令を復号するための手段であって、前記ユーザレベルの分岐命令は少なくとも1つの命令アドレスを示す、手段と、
前記ユーザレベルの分岐命令が復号されたことに応答して、前記複数のプロセッサ要素のそれぞれを、命令を並列に実行するよう構成する手段と
を含み、
前記第1のプロセッサ要素は、元のプログラム順序のアーキテクチャ状態に対してアウトオブオーダに実行されたはずの命令の結果をコミットするコミットユニットを有し、前記複数のプロセッサ要素のそれぞれはコミットユニットを有していない、
プロセッサ。 Multiple processor elements,
A first processor element for executing a user-level branch instruction of a software thread, the first processor element comprising:
Means for decoding the user-level branch instruction, the user-level branch instruction indicating at least one instruction address;
Wherein in response to a user-level branch instruction is decoded, each of the plurality of processors elements, look-containing and means configured to execute instructions in parallel,
The first processor element has a commit unit that commits a result of an instruction that would have been executed out-of-order with respect to the original program order architectural state, each of the plurality of processor elements having a commit unit. Do not have,
Processor.
コンピュータ可読記憶媒体。 Storing a program according to claim 2 2,
Computer readable storage medium.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/671,475 US9747108B2 (en) | 2015-03-27 | 2015-03-27 | User-level fork and join processors, methods, systems, and instructions |
US14/671,475 | 2015-03-27 | ||
PCT/US2016/016700 WO2016160125A1 (en) | 2015-03-27 | 2016-02-05 | User-level fork and join processors, methods, systems, and instructions |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2018509687A JP2018509687A (en) | 2018-04-05 |
JP6708335B2 true JP6708335B2 (en) | 2020-06-10 |
Family
ID=56975369
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017539015A Active JP6708335B2 (en) | 2015-03-27 | 2016-02-05 | User-level branch and join processor, method, system, and instructions |
Country Status (7)
Country | Link |
---|---|
US (1) | US9747108B2 (en) |
EP (1) | EP3274816B1 (en) |
JP (1) | JP6708335B2 (en) |
KR (2) | KR20230020590A (en) |
CN (1) | CN107408036B (en) |
TW (1) | TWI628594B (en) |
WO (1) | WO2016160125A1 (en) |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9965185B2 (en) | 2015-01-20 | 2018-05-08 | Ultrata, Llc | Utilization of a distributed index to provide object memory fabric coherency |
US11086521B2 (en) | 2015-01-20 | 2021-08-10 | Ultrata, Llc | Object memory data flow instruction execution |
US10698628B2 (en) | 2015-06-09 | 2020-06-30 | Ultrata, Llc | Infinite memory fabric hardware implementation with memory |
US9886210B2 (en) | 2015-06-09 | 2018-02-06 | Ultrata, Llc | Infinite memory fabric hardware implementation with router |
US9971542B2 (en) | 2015-06-09 | 2018-05-15 | Ultrata, Llc | Infinite memory fabric streams and APIs |
US10248337B2 (en) | 2015-12-08 | 2019-04-02 | Ultrata, Llc | Object memory interfaces across shared links |
EP3387548B1 (en) | 2015-12-08 | 2023-08-02 | Ultrata LLC | Memory fabric operations and coherency using fault tolerant objects |
US10241676B2 (en) | 2015-12-08 | 2019-03-26 | Ultrata, Llc | Memory fabric software implementation |
CA3006773A1 (en) | 2015-12-08 | 2017-06-15 | Ultrata, Llc | Memory fabric software implementation |
US10387154B2 (en) * | 2016-03-14 | 2019-08-20 | International Business Machines Corporation | Thread migration using a microcode engine of a multi-slice processor |
US10318356B2 (en) * | 2016-03-31 | 2019-06-11 | International Business Machines Corporation | Operation of a multi-slice processor implementing a hardware level transfer of an execution thread |
US10387152B2 (en) * | 2017-07-06 | 2019-08-20 | Arm Limited | Selecting branch instruction execution paths based on previous branch path performance |
GB2569273B (en) | 2017-10-20 | 2020-01-01 | Graphcore Ltd | Synchronization in a multi-tile processing arrangement |
GB2569269B (en) * | 2017-10-20 | 2020-07-15 | Graphcore Ltd | Synchronization in a multi-tile processing arrangement |
GB2569274B (en) | 2017-10-20 | 2020-07-15 | Graphcore Ltd | Synchronization amongst processor tiles |
CN109117260B (en) * | 2018-08-30 | 2021-01-01 | 百度在线网络技术(北京)有限公司 | Task scheduling method, device, equipment and medium |
EP3674939A1 (en) * | 2018-12-31 | 2020-07-01 | SafeNet, Inc. | Method, system and device for managing an execution of a program relating to part or all of a first application |
US11157283B2 (en) * | 2019-01-09 | 2021-10-26 | Intel Corporation | Instruction prefetch based on thread dispatch commands |
KR20210003370A (en) | 2019-07-02 | 2021-01-12 | 삼성전자주식회사 | Storage device with reduced communication overhead using hardware logic |
GB2595303B (en) * | 2020-05-22 | 2024-04-17 | Advanced Risc Mach Ltd | Profiling of sampled operations processed by processing circuitry |
FR3121249B1 (en) * | 2021-03-29 | 2024-03-08 | Vitesco Technologies | Method for implementing a software module defined by a non-cyclic non-nested directed graph in a multi-core environment |
US11704860B2 (en) | 2021-05-14 | 2023-07-18 | Nvidia Corporation | Accelerated processing via a physically based rendering engine |
US11875444B2 (en) | 2021-05-14 | 2024-01-16 | Nvidia Corporation | Accelerated processing via a physically based rendering engine |
US11853764B2 (en) | 2021-05-14 | 2023-12-26 | Nvidia Corporation | Accelerated processing via a physically based rendering engine |
US11830123B2 (en) | 2021-05-14 | 2023-11-28 | Nvidia Corporation | Accelerated processing via a physically based rendering engine |
US11908064B2 (en) * | 2021-05-14 | 2024-02-20 | Nvidia Corporation | Accelerated processing via a physically based rendering engine |
US20220391264A1 (en) * | 2021-06-03 | 2022-12-08 | Nvidia Corporation | Techniques for efficiently synchronizing multiple program threads |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1990014629A2 (en) * | 1989-05-26 | 1990-11-29 | Massachusetts Institute Of Technology | Parallel multithreaded data processing system |
US5812811A (en) * | 1995-02-03 | 1998-09-22 | International Business Machines Corporation | Executing speculative parallel instructions threads with forking and inter-thread communication |
JP2000305795A (en) | 1999-04-20 | 2000-11-02 | Nec Corp | Parallel processor |
US6651163B1 (en) * | 2000-03-08 | 2003-11-18 | Advanced Micro Devices, Inc. | Exception handling with reduced overhead in a multithreaded multiprocessing system |
JP3702814B2 (en) * | 2001-07-12 | 2005-10-05 | 日本電気株式会社 | Multi-thread execution method and parallel processor system |
CN1842770A (en) * | 2003-08-28 | 2006-10-04 | 美普思科技有限公司 | Integrated mechanism for suspension and deallocation of computational threads of execution in a processor |
EP1658563B1 (en) | 2003-08-28 | 2013-06-05 | MIPS Technologies, Inc. | Apparatus, and method for initiation of concurrent instruction streams in a multithreading microprocessor |
US9189230B2 (en) * | 2004-03-31 | 2015-11-17 | Intel Corporation | Method and system to provide concurrent user-level, non-privileged shared resource thread creation and execution |
US8719819B2 (en) * | 2005-06-30 | 2014-05-06 | Intel Corporation | Mechanism for instruction set based thread execution on a plurality of instruction sequencers |
US8359513B2 (en) | 2005-01-19 | 2013-01-22 | Intel Corporation | Data communications methods and apparatus |
CN101546255A (en) * | 2005-04-12 | 2009-09-30 | 松下电器产业株式会社 | Processor |
US8010969B2 (en) | 2005-06-13 | 2011-08-30 | Intel Corporation | Mechanism for monitoring instruction set based thread execution on a plurality of instruction sequencers |
DE102007025397B4 (en) * | 2007-05-31 | 2010-07-15 | Advanced Micro Devices, Inc., Sunnyvale | Multi-processor system and method of operation |
CN101344843B (en) * | 2007-07-10 | 2012-11-21 | 北京简约纳电子有限公司 | Instruction level parallel processing method |
US8769207B2 (en) * | 2008-01-16 | 2014-07-01 | Via Technologies, Inc. | Caching method and apparatus for a vertex shader and geometry shader |
JP5462259B2 (en) * | 2008-07-16 | 2014-04-02 | シズベル インターナショナル エス.アー. | Method and apparatus for track and track subset grouping |
JP2011090592A (en) * | 2009-10-26 | 2011-05-06 | Sony Corp | Information processing apparatus and instruction decoder for the same |
US8667253B2 (en) * | 2010-08-04 | 2014-03-04 | International Business Machines Corporation | Initiating assist thread upon asynchronous event for processing simultaneously with controlling thread and updating its running status in status register |
US8561070B2 (en) * | 2010-12-02 | 2013-10-15 | International Business Machines Corporation | Creating a thread of execution in a computer processor without operating system intervention |
EP2662771A4 (en) * | 2011-01-07 | 2014-05-21 | Fujitsu Ltd | Scheduling method, and multi-core processor system |
US9213551B2 (en) * | 2011-03-11 | 2015-12-15 | Oracle International Corporation | Return address prediction in multithreaded processors |
US9582287B2 (en) | 2012-09-27 | 2017-02-28 | Intel Corporation | Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions |
US20140189333A1 (en) | 2012-12-28 | 2014-07-03 | Oren Ben-Kiki | Apparatus and method for task-switchable synchronous hardware accelerators |
US9417873B2 (en) | 2012-12-28 | 2016-08-16 | Intel Corporation | Apparatus and method for a hybrid latency-throughput processor |
US9053025B2 (en) | 2012-12-28 | 2015-06-09 | Intel Corporation | Apparatus and method for fast failure handling of instructions |
US10140129B2 (en) | 2012-12-28 | 2018-11-27 | Intel Corporation | Processing core having shared front end unit |
US9542193B2 (en) * | 2012-12-28 | 2017-01-10 | Intel Corporation | Memory address collision detection of ordered parallel threads with bloom filters |
US9361116B2 (en) | 2012-12-28 | 2016-06-07 | Intel Corporation | Apparatus and method for low-latency invocation of accelerators |
US10346195B2 (en) | 2012-12-29 | 2019-07-09 | Intel Corporation | Apparatus and method for invocation of a multi threaded accelerator |
US9430369B2 (en) * | 2013-05-24 | 2016-08-30 | Coherent Logix, Incorporated | Memory-network processor with programmable optimizations |
US20150007196A1 (en) | 2013-06-28 | 2015-01-01 | Intel Corporation | Processors having heterogeneous cores with different instructions and/or architecural features that are presented to software as homogeneous virtual cores |
-
2015
- 2015-03-27 US US14/671,475 patent/US9747108B2/en active Active
-
2016
- 2016-02-05 EP EP16773615.6A patent/EP3274816B1/en active Active
- 2016-02-05 KR KR1020237003774A patent/KR20230020590A/en not_active Application Discontinuation
- 2016-02-05 CN CN201680012362.XA patent/CN107408036B/en not_active Expired - Fee Related
- 2016-02-05 KR KR1020177023685A patent/KR102496402B1/en active IP Right Grant
- 2016-02-05 WO PCT/US2016/016700 patent/WO2016160125A1/en active Application Filing
- 2016-02-05 JP JP2017539015A patent/JP6708335B2/en active Active
- 2016-02-24 TW TW105105508A patent/TWI628594B/en active
Also Published As
Publication number | Publication date |
---|---|
EP3274816A1 (en) | 2018-01-31 |
JP2018509687A (en) | 2018-04-05 |
KR20230020590A (en) | 2023-02-10 |
CN107408036A (en) | 2017-11-28 |
EP3274816B1 (en) | 2020-03-25 |
CN107408036B (en) | 2021-08-31 |
TWI628594B (en) | 2018-07-01 |
EP3274816A4 (en) | 2018-11-07 |
US9747108B2 (en) | 2017-08-29 |
US20160283245A1 (en) | 2016-09-29 |
KR102496402B1 (en) | 2023-02-06 |
TW201702866A (en) | 2017-01-16 |
KR20170130383A (en) | 2017-11-28 |
WO2016160125A1 (en) | 2016-10-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6708335B2 (en) | User-level branch and join processor, method, system, and instructions | |
US11494194B2 (en) | Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions | |
JP6526609B2 (en) | Processor | |
JP6143872B2 (en) | Apparatus, method, and system | |
CN108885586B (en) | Processor, method, system, and instruction for fetching data to an indicated cache level with guaranteed completion | |
US10127039B2 (en) | Extension of CPU context-state management for micro-architecture state | |
CN108701101B (en) | Arbiter-based serialization of processor system management interrupt events | |
US9323535B2 (en) | Instruction order enforcement pairs of instructions, processors, methods, and systems | |
KR20200002606A (en) | Apparatus and method for coherent, accelerated conversion between data representations | |
JP2024527169A (en) | Instructions and logic for identifying multiple instructions that can be retired in a multi-stranded out-of-order processor - Patents.com | |
US20160378471A1 (en) | Instruction and logic for execution context groups for parallel processing |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20171003 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20190131 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20191217 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20200107 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20200407 |
|
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: 20200421 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20200512 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6708335 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 |