JP2018500657A - 融合された単一のサイクルのインクリメント−比較−ジャンプを実施するための命令及びロジック - Google Patents
融合された単一のサイクルのインクリメント−比較−ジャンプを実施するための命令及びロジック Download PDFInfo
- Publication number
- JP2018500657A JP2018500657A JP2017527588A JP2017527588A JP2018500657A JP 2018500657 A JP2018500657 A JP 2018500657A JP 2017527588 A JP2017527588 A JP 2017527588A JP 2017527588 A JP2017527588 A JP 2017527588A JP 2018500657 A JP2018500657 A JP 2018500657A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- processor
- jump
- field
- operand
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000012545 processing Methods 0.000 claims abstract description 33
- 238000000034 method Methods 0.000 claims description 24
- 230000004927 fusion Effects 0.000 claims description 11
- 239000012634 fragment Substances 0.000 claims description 4
- 230000008569 process Effects 0.000 claims description 4
- 238000013519 translation Methods 0.000 abstract description 24
- 230000015654 memory Effects 0.000 description 140
- VOXZDWNPVJITMN-ZBRFXRBCSA-N 17β-estradiol Chemical compound OC1=CC=C2[C@H]3CC[C@](C)([C@H](CC4)O)[C@@H]4[C@@H]3CCC2=C1 VOXZDWNPVJITMN-ZBRFXRBCSA-N 0.000 description 72
- 238000010586 diagram Methods 0.000 description 50
- 238000006073 displacement reaction Methods 0.000 description 40
- 238000007667 floating Methods 0.000 description 31
- 230000009471 action Effects 0.000 description 23
- 238000006243 chemical reaction Methods 0.000 description 15
- 238000003860 storage Methods 0.000 description 15
- 239000000872 buffer Substances 0.000 description 11
- 238000004891 communication Methods 0.000 description 8
- 239000003795 chemical substances by application Substances 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 230000000873 masking effect Effects 0.000 description 7
- 230000003068 static effect Effects 0.000 description 7
- 230000002123 temporal effect Effects 0.000 description 7
- 230000008859 change Effects 0.000 description 6
- 230000003190 augmentative effect Effects 0.000 description 5
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 235000019580 granularity Nutrition 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 230000006399 behavior Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 230000000295 complement effect Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000001419 dependent effect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000010076 replication Effects 0.000 description 2
- 230000001629 suppression Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000003607 modifier Substances 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
- 238000005192 partition Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/02—Comparing digital values
-
- 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/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic 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/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30021—Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
-
- 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/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- 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/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- 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/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30058—Conditional branch 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/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- 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/3017—Runtime instruction translation, e.g. macros
-
- 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/30181—Instruction operation extension or modification
-
- 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/3824—Operand accessing
- G06F9/383—Operand prefetching
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
- G06F9/45525—Optimisation or modification within the same instruction set architecture, e.g. HP Dynamo
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
Description
[インオーダ及びアウトオブオーダコアのブロック図]
図1Aは、或る実施形態に従う、例示的なインオーダパイプラインと、例示的なレジスタリネーミングアウトオブオーダ発行/実行パイプラインとの両方を図解するブロック図である。図1Bは、或る実施形態に従う、プロセッサに含まれることになる、インオーダアーキテクチャコアの例示的な実施形態と、例示的なレジスタリネーミング、アウトオブオーダ発行/実行アーキテクチャコアとの両方を図解するブロック図である。図1A〜1Bの実線の囲みは、インオーダパイプライン及びインオーダコアを図解する一方で、破線の囲みの任意的な追加は、レジスタリネーミング、アウトオブオーダ発行/実行パイプライン及びコアを図解する。インオーダの態様がアウトオブオーダの態様のサブセットであると想定して、アウトオブオーダの態様が記載されている。
図2A〜2Bは、より具体的な例示的なインオーダコアアーキテクチャのブロック図であり、そのコアは、チップ内のいくつかのロジックブロックのうち1つ(同一タイプ及び/または異なるタイプの他のコアを含む)となるであろう。ロジックブロックは、アプリケーションに依存して、何らかの固定関数ロジック、メモリI/Oインターフェース、及び他の必要なI/Oロジックと、高帯域の相互接続ネットワーク(例えば、リングネットワーク)を通して通信する。
図3は、或る実施形態に従う、2つ以上のコアを有し得、集積メモリコントローラを有し得、かつ集積グラフィックスを有し得るプロセッサ300のブロック図である。図3中の実線の囲みは、シングルコア302A、システムエージェント310、1または複数のバスコントローラユニット316のセットを有するプロセッサ300を図解する一方で、破線の囲みの任意的な追加は、複数のコア302A〜N、システムエージェントユニット310内の1または複数の集積メモリコントローラユニット(複数可)314のセット、及び特定目的ロジック308を有する代替のプロセッサ300を図解する。
図4〜7は、例示的なコンピュータアーキテクチャのブロック図である。ラップトップ、デスクトップ、ハンドヘルドPC、パーソナルデジタルアシスタント、エンジニアリングワークステーション、サーバ、ネットワークデバイス、ネットワークハブ、スイッチ、埋め込みプロセッサ、デジタル信号プロセッサ(DSP:digital signal processor)、グラフィックスデバイス、ビデオゲームデバイス、セットトップボックス、マイクロコントローラ、携帯電話、ポータブルメディアプレーヤ、ハンドヘルドデバイス、及び様々な他の電子デバイスのための当該技術分野において知られている他のシステム設計及び構成もまた好適である。一般的に、本明細書に開示されるようなプロセッサ及び/もしくは他の実行ロジックを組み込むことができる多様なシステムまたは電子デバイスが、概して好適である。
本明細書に記載される単一の命令セットの最適化に加えて、命令転換は、ソース命令セットからターゲット命令セットへ命令を転換するために使用され得る。例えば、命令転換器は、コアによって処理されることになる1または複数の他の命令に命令をトランスレート(例えば、静的バイナリトランスレーション、動的コンパイルを含む動的バイナリトランスレーションを使用して)、モーフィング、エミュレート、そうでなければ転換し得る。命令転換器は、ソフトウェア、ハードウェア、ファームウェア、またはこれらの組み合わせにおいて実装され得る。命令転換器は、オンプロセッサ、オフプロセッサ、または一部オンプロセッサ及び一部オフプロセッサであり得る。
DBTシステムは、融合可能な命令シーケンスを発見して、複数の命令を単一の命令へと融合することによりそれらの命令シーケンスを最適化することができる最適化動的バイナリトランスレーションシステムとして構成され得る。図9A〜9Bは、融合された命令へと複数の命令を融合することを含むランタイムバイナリ最適化を実施するための例示的なバイナリトランスレーションシステム及びロジックを図解する。図9Aは、或る実施形態に従う、動的バイナリトランスレーションのために構成されるコンピューティングシステムのブロック図である。図9Bは、単一の融合命令へとソースコードブロックにおける命令を融合するためのロジックの流れ図である。
図10A〜10Bは、インクリメント_比較_ジャンプ動作の例示的なプロセッサ実装を図解するブロック図である。いくつかの実施形態では、実装するプロセッサは、命令を実装するためのいくつかのアーキテクチャの特徴を含む。図10Aは、或る実施形態に従う、動作を実施するためのロジックを含むプロセッサコアのブロック図である。図10Bは、或る実施形態に従う、インクリメント_比較_ジャンプ動作を実装するための例示的な具体的なマイクロアーキテクチャのブロック図である。
本明細書に記載される命令(複数可)の実施形態は、ベクトルフレンドリー命令フォーマットを含む異なるフォーマットにおいて具現され得る。ベクトルフレンドリー命令フォーマットは、ベクトル命令に適した命令フォーマットである(例えば、ベクトル動作に特有である、或る特定のフィールドが存在する)。ベクトルとスカラ動作との両方がベクトルフレンドリー命令フォーマットを通してサポートされる実施形態が記載される一方で、代替の実施形態は、ベクトル動作ベクトルフレンドリー命令フォーマットのみを使用する。
クラスAの非メモリアクセス1305命令テンプレートの場合、アルファフィールド1352は、RSフィールド1352Aとして解釈され、その内容は、異なる増大動作タイプのうちどの1つが、実施されることになるのか(例えば、丸め1352A.1及びデータ変換1352A.2は、それぞれ、メモリアクセス無し、丸めタイプ動作1310及びメモリアクセス無し、データ変換タイプ動作1315命令テンプレートのために指定される)を区別する一方で、ベータフィールド1354は、指定されたタイプのどの動作が実施されることになるのかを区別する。メモリアクセス無し1305命令テンプレートにおいて、スケールフィールド1360、変位フィールド1362A、及び変位スケールフィールド1362Bは存在しない。
メモリアクセス無しフル丸め制御タイプ動作1310命令テンプレートにおいて、ベータフィールド1354は、丸め制御フィールド1354Aとして解釈され、その内容(複数可)は静的丸めを提供する。記載された実施形態では、丸め制御フィールド1354Aは、全浮動小数点例外抑制(SAE:suppress all floating point exceptions)フィールド1356及び丸め動作制御フィールド1358を含む一方で、代替の実施形態は、これらの概念の両方を同じフィールドへとエンコードすること、またはこれらの概念/フィールドのうち一方もしくは他方のみを有することをサポートし得る(例えば、丸め動作制御フィールド1358のみを有し得る)。
メモリアクセス無しデータ変換タイプ動作1315命令テンプレートにおいて、ベータフィールド1354は、データ変換フィールド1354Bとして解釈され、その内容は、いくらかのデータ変換のうちどの1つが実施されることになるのか(例えば、データ変換無し、スウィズル、ブロードキャスト)を区別する。
時間的データは、キャッシュすることから裨益するのに十分早く再使用される可能性が高いデータである。しかしながら、これはヒントであり、異なるプロセッサは、該ヒントを完全に無視することを含め、それを異なる手段で実装し得る。
非時間的データは、第一レベルのキャッシュにキャッシュすることから裨益するのに十分早く再使用される可能性が高くないデータであり、放逐のために優先されるべきである。しかしながら、これはヒントであり、異なるプロセッサは、該ヒントを完全に無視することを含め、これを異なる手段で実装され得る。
クラスBの命令テンプレートの場合、アルファフィールド1352は、書き込みマスク制御(Z)フィールド1352Cとして解釈され、その内容は、書き込みマスクフィールド1370によって制御される書き込みマスキングが併合またはゼロ化のどちらであるべきかを区別する。
図14は、本発明の或る実施形態に従う、例示的な固有ベクトルフレンドリー命令フォーマットを図解するブロック図である。図14は、それが、フィールドの位置、サイズ、解釈、及びオーダ、ならびにそれらのフィールドのいくつかのための値を指定するという意味で固有の、固有ベクトルフレンドリー命令フォーマット1400を示す。固有ベクトルフレンドリー命令フォーマット1400は、x86命令セットを拡張するために使用され得、したがって、フィールドのいくつかは、既存のx86命令セット及びその拡張(例えば、AVX)において使用されるものと類似しているか同じである。このフォーマットは、拡張を有する既存のx86命令セットのプレフィックスエンコーディングフィールド、真のオペコードバイトフィールド、MOD R/Mフィールド、SIBフィールド、変位フィールド、及び即値フィールドと整合するままである。図14のマップからのフィールドがマッピングする図13からのフィールドが図解される。
図14Bは、一実施形態に従うフルオペコードフィールド1374を作り上げる固有ベクトルフレンドリー命令フォーマット1400のフィールドを図解するブロック図である。具体的には、フルオペコードフィールド1374は、フォーマットフィールド1340、ベース動作フィールド1342、及びデータ要素幅(W)フィールド1364を含む。ベース動作フィールド1342は、プレフィックスエンコーディングフィールド1425、オペコードマップフィールド1415、及び真のオペコードフィールド1430を含む。
図14Cは、一実施形態に従うレジスタインデックスフィールド1344を作り上げる固有ベクトルフレンドリー命令フォーマット1400のフィールドを図解するブロック図である。具体的には、レジスタインデックスフィールド1344は、REXフィールド1405、REX'フィールド1410、MODR/M.regフィールド1444、MODR/M.r/mフィールド1446、VVVVフィールド1420、xxxフィールド1454、及びbbbフィールド1456を含む。
図14Dは、一実施形態に従う増大動作フィールド1350を作り上げる固有ベクトルフレンドリー命令フォーマットの1400のフィールドを図解するブロック図である。クラス(U)フィールド1368が0を含む場合、それはEVEX.U0(クラスA1368A)を意味し、それが1を含む場合、それはEVEX.U1(クラスB1368B)を意味する。U=0、かつMODフィールド1442が11(メモリアクセス無し動作を意味する)を含む場合、アルファフィールド1352(EVEXバイト3、ビット[7]−EH)は、rsフィールド1352Aとして解釈される。rsフィールド1352Aが、1(丸め1352A.1)を含む場合、ベータフィールド1354(EVEXバイト3、ビット[6:4]−SSS)は、丸め制御フィールド1354Aとして解釈される。丸め制御フィールド1354Aは、1ビットSAEフィールド1356及び2ビット丸め動作フィールド1358を含む。rsフィールド1352Aは、0(データ変換1352A.2)を含む場合、ベータフィールド1354(EVEXバイト3、ビット[6:4]−SSS)は、3ビットデータ変換フィールド1354Bとして解釈される。U=0、かつMODフィールド1442が、00、01、または10(メモリアクセス動作を意味する)を含む場合、アルファフィールド1352(EVEXバイト3、ビット[7]−EH)は、放逐ヒント(EH)フィールド1352Bとして解釈され、ベータフィールド1354(EVEXバイト3、ビット[6:4]−SSS)は、3ビットデータ操作フィールド1354Cとして解釈される。
図15は、一実施形態に従う、レジスタアーキテクチャ1500のブロック図である。図解された実施形態では、512ビット幅である32ベクトルレジスタ1510が存在し、これらのレジスタは、zmm0〜zmm31として参照される。下位16zmmレジスタの下位オーダ256ビットは、レジスタymm0−16上でオーバーレイされる。下位16zmmレジスタの下位オーダ128ビット(ymmレジスタの下位オーダ128ビット)は、レジスタxmm0−15上でオーバーレイされる。固有ベクトルフレンドリー命令フォーマット1400は、下の表5に図解されるように、これらのオーバーレイされたレジスタ上で動作する。
Claims (24)
- 第1のオペランド及び第2のオペランドを含むデコードされた融合命令へと融合命令をデコードするためのデコードロジックと、
前記デコードされた融合命令を実行して、単一の機械レベルマクロ命令として、インクリメント動作、比較動作、及びジャンプ動作を実施するための実行ユニットと、を備える、処理装置。 - 前記融合命令をフェッチするための命令フェッチユニットと、
前記第1のオペランドまたは前記第2のオペランドによって指定されたレジスタに、前記インクリメント動作の結果をコミットするためのレジスタファイルユニットと、をさらに備える、請求項1に記載の処理装置。 - 前記実行ユニットが、
前記インクリメント動作及び前記比較動作を実施するための算術ロジックユニット(ALU:arithmetic logic unit)と、
前記ジャンプ動作を実施するためのジャンプ実行ユニットと、を備える、請求項1に記載の処理装置。 - 前記第1のオペランド及び前記第2のオペランドが、前記比較動作と関連付けられ、前記第1のオペランドまたは前記第2のオペランドのうち1つが、前記インクリメント動作と関連付けられる、請求項1に記載の処理装置。
- 前記デコードされた融合命令が、前記ジャンプ動作と関連付けられたジャンプターゲットオペランドを追加として含む、請求項4に記載の処理装置。
- 前記実行ユニットがさらに、単一のサイクルにおいて、前記インクリメント動作、前記比較動作、及び前記ジャンプ動作を実行する、請求項5に記載の処理装置。
- 前記ジャンプ動作が、前記比較動作を条件にする、請求項5に記載の処理装置。
- 前記ジャンプ動作が、前記比較動作によって設定されたゼロフラグを条件にする、請求項7に記載の処理装置。
- 前記ジャンプ動作が、前記比較動作によって設定された桁上げフラグを条件にする、請求項7に記載の処理装置。
- 前記ジャンプ動作が、前記比較動作によって設定されたオーバーフローフラグを条件にする、請求項7に記載の処理装置。
- 前記ジャンプ動作が、前記比較動作によって設定された符号フラグを条件にする、請求項7に記載の処理装置。
- 単一のマクロ命令へと複数のマクロ命令を融合するための方法であって、
インクリメント命令、比較命令、及びジャンプ命令を含む命令シーケンスについて、第1のソースコードブロックをスキャンすることと、
前記命令シーケンスを検出した後に、データ依存性について前記命令シーケンスをスキャンすることと、
前記命令シーケンスにおいてコード断片を順序変更することと、
インクリメント命令、比較命令、及びジャンプ命令のセットを、プロセッサによって実行される場合に、前記プロセッサに、インクリメント動作、比較動作、及びジャンプ動作を実施させるという単一の融合命令と置き換えることと、を含む、方法。 - 前記プロセッサが、単一のプロセッサパイプライン実行サイクルにおいて、前記融合命令を実行する、請求項12に記載の方法。
- 前記プロセッサが、算術ロジックユニット(ALU)を使用して前記インクリメント命令及び前記比較命令と関連付けられた第1のオペランド及び第2のオペランドの比較動作を実施する一方で、前記ALUへの桁上げ入力をアサートすることにより前記第1のオペランドまたは前記第2のオペランドをインクリメントすることによって、前記サイクルにおいて前記融合命令を実施する、請求項13に記載の方法。
- 前記プロセッサ内でジャンプ実行ユニットを使用して前記比較動作によって前記ALUから出力されたフラグを評価して、前記ジャンプ動作が実施されることになるかどうかを判定することをさらに含む、請求項14に記載の方法。
- 前記プロセッサが、分岐予測プロセッサであり、
前記ジャンプ命令と関連付けられた分岐が実行されることになることを予測することと、
前記融合命令の前記ジャンプ動作が実行されるかどうかを判定することと、
前記ジャンプ命令について予測された前記分岐を解決することと、をさらに含む、請求項15に記載の方法。 - 請求項12〜16のいずれか1項に記載の方法を実施するための手段を備えるシステム。
- 命令を記憶する非一時的機械可読媒体であって、1または複数のプロセッサによって実行される場合に、前記1または複数のプロセッサに、請求項12〜16のいずれか1項に記載の方法を含む動作を実施させる、非一時的機械可読媒体。
- 融合されたマクロ命令の実施方法であって、
第1のオペランド及び第2のオペランドを含むデコードされた融合命令へと融合命令をデコードすることと、
前記デコードされた融合命令を実行して、単一の機械レベルマクロ命令として、インクリメント動作、比較動作、及びジャンプ動作を実施することと、を含む、方法。 - 単一の実行サイクルにおいて、前記デコードされた融合命令を実行することをさらに含む、請求項19に記載の方法。
- 前記動作の結果に基づいて、次の命令ポインタを更新することをさらに含む、請求項19に記載の方法。
- 前記第1のオペランドまたは前記第2のオペランドによって指示されたレジスタに、前記インクリメント動作の結果をコミットすることをさらに含む、請求項19に記載の方法。
- 前記ジャンプ動作の結果に基づいて、分岐予測を解決することをさらに含む、請求項19に記載の方法。
- データが記憶された機械可読媒体であって、少なくとも1つの機械によって実施される場合に、前記少なくとも1つの機械に、請求項19〜23のいずれか1項に記載の方法を含む動作を実施する少なくとも1つの集積回路をファブリケートさせる、機械可読媒体。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/582,053 US20160179542A1 (en) | 2014-12-23 | 2014-12-23 | Instruction and logic to perform a fused single cycle increment-compare-jump |
US14/582,053 | 2014-12-23 | ||
PCT/US2015/062098 WO2016105767A1 (en) | 2014-12-23 | 2015-11-23 | Instruction and logic to perform a fused single cycle increment-compare-jump |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2018500657A true JP2018500657A (ja) | 2018-01-11 |
JP2018500657A5 JP2018500657A5 (ja) | 2018-03-08 |
JP6849274B2 JP6849274B2 (ja) | 2021-03-24 |
Family
ID=56129480
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017527588A Active JP6849274B2 (ja) | 2014-12-23 | 2015-11-23 | 融合された単一のサイクルのインクリメント−比較−ジャンプを実施するための命令及びロジック |
Country Status (7)
Country | Link |
---|---|
US (1) | US20160179542A1 (ja) |
EP (1) | EP3238046A4 (ja) |
JP (1) | JP6849274B2 (ja) |
KR (1) | KR102451950B1 (ja) |
CN (1) | CN107077321B (ja) |
TW (1) | TWI691897B (ja) |
WO (1) | WO2016105767A1 (ja) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7958181B2 (en) * | 2006-09-21 | 2011-06-07 | Intel Corporation | Method and apparatus for performing logical compare operations |
US10275217B2 (en) | 2017-03-14 | 2019-04-30 | Samsung Electronics Co., Ltd. | Memory load and arithmetic load unit (ALU) fusing |
US10360034B2 (en) * | 2017-04-18 | 2019-07-23 | Samsung Electronics Co., Ltd. | System and method for maintaining data in a low-power structure |
US11150908B2 (en) * | 2017-08-18 | 2021-10-19 | International Business Machines Corporation | Dynamic fusion of derived value creation and prediction of derived values in a subroutine branch sequence |
US11256509B2 (en) | 2017-12-07 | 2022-02-22 | International Business Machines Corporation | Instruction fusion after register rename |
US11157280B2 (en) * | 2017-12-07 | 2021-10-26 | International Business Machines Corporation | Dynamic fusion based on operand size |
US11475951B2 (en) | 2017-12-24 | 2022-10-18 | Micron Technology, Inc. | Material implication operations in memory |
US10424376B2 (en) * | 2017-12-24 | 2019-09-24 | Micron Technology, Inc. | Material implication operations in memory |
US11194578B2 (en) | 2018-05-23 | 2021-12-07 | International Business Machines Corporation | Fused overloaded register file read to enable 2-cycle move from condition register instruction in a microprocessor |
CN111209044B (zh) * | 2018-11-21 | 2022-11-25 | 展讯通信(上海)有限公司 | 指令压缩方法及装置 |
US10996952B2 (en) * | 2018-12-10 | 2021-05-04 | SiFive, Inc. | Macro-op fusion |
US10831496B2 (en) | 2019-02-28 | 2020-11-10 | International Business Machines Corporation | Method to execute successive dependent instructions from an instruction stream in a processor |
KR20210012335A (ko) | 2019-07-24 | 2021-02-03 | 에스케이하이닉스 주식회사 | 반도체장치 |
US11216278B2 (en) * | 2019-08-12 | 2022-01-04 | Advanced New Technologies Co., Ltd. | Multi-thread processing |
US11537323B2 (en) | 2020-01-07 | 2022-12-27 | SK Hynix Inc. | Processing-in-memory (PIM) device |
US11422803B2 (en) | 2020-01-07 | 2022-08-23 | SK Hynix Inc. | Processing-in-memory (PIM) device |
US12008369B1 (en) * | 2021-08-31 | 2024-06-11 | Apple Inc. | Load instruction fusion |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS623336A (ja) * | 1985-06-28 | 1987-01-09 | Yokogawa Hewlett Packard Ltd | 条件付きブランチ方式 |
JPH0573309A (ja) * | 1990-04-04 | 1993-03-26 | Internatl Business Mach Corp <Ibm> | 複数スカラ命令の並列実行支援装置 |
JPH09265400A (ja) * | 1996-03-28 | 1997-10-07 | Hitachi Ltd | コンパイル最適化方式 |
JPH09288564A (ja) * | 1996-06-17 | 1997-11-04 | Takeshi Sakamura | データ処理装置 |
US20070038844A1 (en) * | 2005-08-09 | 2007-02-15 | Robert Valentine | Technique to combine instructions |
JP2010504595A (ja) * | 2006-09-21 | 2010-02-12 | インテル コーポレイション | 論理比較動作を実行するための方法と装置 |
US20110264891A1 (en) * | 2010-04-27 | 2011-10-27 | Via Technologies, Inc. | Microprocessor that fuses mov/alu/jcc instructions |
JP2012507794A (ja) * | 2008-10-30 | 2012-03-29 | インテル コーポレイション | 有効な命令ヒュージョンを進展させる技術 |
JP2014194755A (ja) * | 2013-03-15 | 2014-10-09 | Intel Corp | 複数の試験ソースに対するor試験及びand試験機能を提供するために命令をフュージングする方法及び装置 |
JP2014194753A (ja) * | 2013-03-15 | 2014-10-09 | Intel Corp | 複数のテストソースを用いた論理和テストおよび論理積テスト機能を実現する融合可能な命令と論理 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5717910A (en) * | 1996-03-29 | 1998-02-10 | Integrated Device Technology, Inc. | Operand compare/release apparatus and method for microinstrution sequences in a pipeline processor |
US6675376B2 (en) * | 2000-12-29 | 2004-01-06 | Intel Corporation | System and method for fusing instructions |
US6857063B2 (en) * | 2001-02-09 | 2005-02-15 | Freescale Semiconductor, Inc. | Data processor and method of operation |
US6931517B1 (en) * | 2001-10-23 | 2005-08-16 | Ip-First, Llc | Pop-compare micro instruction for repeat string operations |
US7051190B2 (en) * | 2002-06-25 | 2006-05-23 | Intel Corporation | Intra-instruction fusion |
US7451294B2 (en) * | 2003-07-30 | 2008-11-11 | Intel Corporation | Apparatus and method for two micro-operation flow using source override |
GB2414308B (en) * | 2004-05-17 | 2007-08-15 | Advanced Risc Mach Ltd | Program instruction compression |
GB2424727B (en) * | 2005-03-30 | 2007-08-01 | Transitive Ltd | Preparing instruction groups for a processor having a multiple issue ports |
US7797517B1 (en) * | 2005-11-18 | 2010-09-14 | Oracle America, Inc. | Trace optimization via fusing operations of a target architecture operation set |
US7596681B2 (en) * | 2006-03-24 | 2009-09-29 | Cirrus Logic, Inc. | Processor and processing method for reusing arbitrary sections of program code |
US20100312991A1 (en) | 2008-05-08 | 2010-12-09 | Mips Technologies, Inc. | Microprocessor with Compact Instruction Set Architecture |
US8856496B2 (en) * | 2010-04-27 | 2014-10-07 | Via Technologies, Inc. | Microprocessor that fuses load-alu-store and JCC macroinstructions |
CN102163139B (zh) * | 2010-04-27 | 2014-04-02 | 威盛电子股份有限公司 | 微处理器融合载入算术/逻辑运算及跳跃宏指令 |
-
2014
- 2014-12-23 US US14/582,053 patent/US20160179542A1/en not_active Abandoned
-
2015
- 2015-11-23 EP EP15873974.8A patent/EP3238046A4/en not_active Withdrawn
- 2015-11-23 JP JP2017527588A patent/JP6849274B2/ja active Active
- 2015-11-23 WO PCT/US2015/062098 patent/WO2016105767A1/en active Application Filing
- 2015-11-23 TW TW104138808A patent/TWI691897B/zh not_active IP Right Cessation
- 2015-11-23 CN CN201580063903.7A patent/CN107077321B/zh active Active
- 2015-11-23 KR KR1020177013959A patent/KR102451950B1/ko active IP Right Grant
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS623336A (ja) * | 1985-06-28 | 1987-01-09 | Yokogawa Hewlett Packard Ltd | 条件付きブランチ方式 |
JPH0573309A (ja) * | 1990-04-04 | 1993-03-26 | Internatl Business Mach Corp <Ibm> | 複数スカラ命令の並列実行支援装置 |
JPH09265400A (ja) * | 1996-03-28 | 1997-10-07 | Hitachi Ltd | コンパイル最適化方式 |
JPH09288564A (ja) * | 1996-06-17 | 1997-11-04 | Takeshi Sakamura | データ処理装置 |
US20070038844A1 (en) * | 2005-08-09 | 2007-02-15 | Robert Valentine | Technique to combine instructions |
JP2010504595A (ja) * | 2006-09-21 | 2010-02-12 | インテル コーポレイション | 論理比較動作を実行するための方法と装置 |
JP2012507794A (ja) * | 2008-10-30 | 2012-03-29 | インテル コーポレイション | 有効な命令ヒュージョンを進展させる技術 |
US20110264891A1 (en) * | 2010-04-27 | 2011-10-27 | Via Technologies, Inc. | Microprocessor that fuses mov/alu/jcc instructions |
US20110264896A1 (en) * | 2010-04-27 | 2011-10-27 | Via Technologies, Inc. | Microprocessor that fuses mov/alu instructions |
JP2014194755A (ja) * | 2013-03-15 | 2014-10-09 | Intel Corp | 複数の試験ソースに対するor試験及びand試験機能を提供するために命令をフュージングする方法及び装置 |
JP2014194753A (ja) * | 2013-03-15 | 2014-10-09 | Intel Corp | 複数のテストソースを用いた論理和テストおよび論理積テスト機能を実現する融合可能な命令と論理 |
Non-Patent Citations (2)
Title |
---|
SHILIANG HU, JAMES E. SMITH: "Using Dynamic Binary Translation to Fuse Dependent Instructions", PROCEEDINGS OF THE INTERNATIONAL SYMPOSIUM ON CODE GENERATION AND OPTIMIZATION 2004 (CGO2004), JPN6019047089, 20 March 2004 (2004-03-20), pages 12, ISSN: 0004315196 * |
後藤弘茂: "インテルはCISCのアプローチをアーキテクチャに持ち込む", ASCII, vol. 第30巻,第5号,(通巻347号), JPN6019047094, 1 May 2006 (2006-05-01), JP, pages 114 - 119, ISSN: 0004315197 * |
Also Published As
Publication number | Publication date |
---|---|
KR20170097633A (ko) | 2017-08-28 |
JP6849274B2 (ja) | 2021-03-24 |
EP3238046A1 (en) | 2017-11-01 |
WO2016105767A1 (en) | 2016-06-30 |
KR102451950B1 (ko) | 2022-10-11 |
CN107077321B (zh) | 2021-08-17 |
US20160179542A1 (en) | 2016-06-23 |
EP3238046A4 (en) | 2018-07-18 |
TW201643706A (zh) | 2016-12-16 |
CN107077321A (zh) | 2017-08-18 |
TWI691897B (zh) | 2020-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6849274B2 (ja) | 融合された単一のサイクルのインクリメント−比較−ジャンプを実施するための命令及びロジック | |
JP6351682B2 (ja) | 装置および方法 | |
JP6238497B2 (ja) | プロセッサ、方法、及びシステム | |
JP6340097B2 (ja) | リードマスク及びライトマスクにより制御されるベクトル移動命令 | |
KR101679111B1 (ko) | 연산 마스크들의 마스킹되지 않는 요소들을 통합하기 위한 프로세서들, 방법들, 시스템들, 및 명령어들 | |
KR102478874B1 (ko) | 비순차적 하드웨어 소프트웨어 공동 설계된 프로세서에서 스택 동기화 명령어를 갖는 술어 값의 스택을 구현하고 유지하기 위한 방법 및 장치 | |
KR101597774B1 (ko) | 마스킹된 전체 레지스터 액세스들을 이용한 부분적 레지스터 액세스들을 구현하기 위한 프로세서들, 방법들 및 시스템들 | |
JP6711480B2 (ja) | ベクトルインデックスロードおよびストアのための方法および装置 | |
JP2018500653A (ja) | ベクトルブロードキャストおよびxorand論理命令のための装置および方法 | |
JP6673574B2 (ja) | ベクトルビットシャッフルを実行するための方法および装置 | |
EP3547119B1 (en) | Apparatus and method for speculative conditional move operation | |
KR20170099869A (ko) | 인덱스 및 즉치로 벡터 치환을 수행하기 위한 방법 및 장치 | |
KR20170099855A (ko) | 마스크 및 벡터 레지스터들 사이의 가변 확장을 위한 방법 및 장치 | |
TWI603261B (zh) | 用以執行離心操作的指令及邏輯 | |
JP6835436B2 (ja) | マスクをマスク値のベクトルに拡張するための方法および装置 | |
JP2018507453A (ja) | 命令フローを最適化するチェックを実行するための装置および方法 | |
US11243766B2 (en) | Flexible instruction set disabling | |
TWI628595B (zh) | 用以執行反離心操作之處理設備和非暫態機器可讀取媒體 | |
KR20170098806A (ko) | 벡터 비트 수집을 수행하기 위한 방법 및 장치 | |
KR20170099864A (ko) | 마스크 값을 압축하기 위한 방법 및 장치 | |
JP2018503162A (ja) | スピンループジャンプを実行するための装置および方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20170725 |
|
A524 | Written submission of copy of amendment under article 19 pct |
Free format text: JAPANESE INTERMEDIATE CODE: A524 Effective date: 20180119 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20181115 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20191016 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20191210 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20200310 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20200804 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20201013 |
|
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: 20210202 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20210301 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6849274 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |