JP7481069B2 - 連鎖タイル演算を実施するためのシステムおよび方法 - Google Patents
連鎖タイル演算を実施するためのシステムおよび方法 Download PDFInfo
- Publication number
- JP7481069B2 JP7481069B2 JP2019020233A JP2019020233A JP7481069B2 JP 7481069 B2 JP7481069 B2 JP 7481069B2 JP 2019020233 A JP2019020233 A JP 2019020233A JP 2019020233 A JP2019020233 A JP 2019020233A JP 7481069 B2 JP7481069 B2 JP 7481069B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- chain
- instructions
- tile
- decoded
- 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 44
- 230000015654 memory Effects 0.000 claims description 204
- 238000012545 processing Methods 0.000 claims description 83
- 239000000872 buffer Substances 0.000 claims description 23
- 230000004044 response Effects 0.000 claims description 12
- 230000008569 process Effects 0.000 claims description 7
- 239000013598 vector Substances 0.000 description 128
- 239000011159 matrix material Substances 0.000 description 93
- 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 80
- 238000010586 diagram Methods 0.000 description 65
- 238000007667 floating Methods 0.000 description 43
- 238000006073 displacement reaction Methods 0.000 description 40
- 238000003860 storage Methods 0.000 description 32
- 238000007792 addition Methods 0.000 description 29
- 230000006870 function Effects 0.000 description 14
- 230000007246 mechanism Effects 0.000 description 9
- 230000008901 benefit Effects 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 8
- 238000006243 chemical reaction Methods 0.000 description 7
- 239000003795 chemical substances by application Substances 0.000 description 7
- 238000004891 communication Methods 0.000 description 7
- 230000000873 masking effect Effects 0.000 description 7
- 238000005457 optimization Methods 0.000 description 7
- 230000002123 temporal effect Effects 0.000 description 7
- 230000000670 limiting effect Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 230000006835 compression Effects 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 230000000295 complement effect Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 230000036961 partial effect Effects 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 238000013501 data transformation Methods 0.000 description 3
- 229910052754 neon Inorganic materials 0.000 description 3
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 3
- 238000013519 translation Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000001629 suppression Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/80—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
- G06F15/8007—Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- 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/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- 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/30029—Logical and Boolean instructions, e.g. XOR, NOT
-
- 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/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction 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/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/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
- G06F9/3828—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
-
- 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/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- 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
- 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/454—Vector or matrix data
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
- Complex Calculations (AREA)
- Multi Processors (AREA)
Description
中央処理装置(CPU)、グラフィック処理装置(GPU)、およびアクセラレータなどのコンピュータハードウェアにおいて行列演算をサポートするメカニズムが本明細書で説明される。行列演算は、レジスタなどのメモリの1つまたは複数のパックド領域を表す2次元(2-D)データ構造を利用する。この説明全体を通して、これらの2-Dデータ構造はタイルと呼ばれる。行列はタイルよりも小さくてもよく(使用するのはタイル全体より小さい)、複数のタイルを利用してもよい(行列はどのタイルのサイズよりも大きい)ことに留意されたい。説明全体を通して、タイル言語は、行列に影響を与えるタイルを使用して実行される演算を示すために使用され、その行列がどのタイルよりも大きいか否かは、通常、関係がない。
いくつかの実施形態では、タイルパラメータを構成することができる。たとえば、所与のタイルはタイルオプションを提供するように構成されてもよい。例示的なタイルオプションには、タイルの行数、タイルの列数、タイルが有効であるかどうか、およびタイルが等しいサイズのタイルのペアで構成されるかどうかが含まれるが、それらに限定されない。
図2は、行列ストレージのいくつかの例を示す。(A)では、タイルがメモリに記憶されている。図示されたように、各「行」は4つのパックドデータ要素で構成される。次の「行」を得るために、ストライド値が使用される。行はメモリに連続して記憶されてもよいことに留意されたい。ストライドメモリアクセスは、タイルストレージが基礎となるメモリ配列の行幅をマッピングしないときに、1つの行から次の行へのアクセスを可能にする。
[A.例示的なハードウェアサポート]
図3は、行列(タイル)演算アクセラレータを利用するシステムの一実施形態を示す。この図では、ホストプロセッサ/処理システム301は、コマンド311(たとえば、算術演算もしくは行列操作演算、またはロード演算およびストア演算などの行列操作演算)を行列演算アクセラレータ307に伝達する。しかしながら、これは説明の目的でのみこのように示されている。後で詳述されるように、この行列演算アクセラレータ307は処理コアの一部であってもよい。通常、タイル操作演算子命令であるコマンド311は、レジスタ-レジスタ(「reg-reg」)フォーマットまたはレジスタ-メモリ(「reg-mem」)フォーマットとしてタイルを参照する。TILESTORE、TILELOAD、TILECONFIGなどの他のコマンドは、タイルに対してデータ演算を実行しない。コマンドは、行列演算アクセラレータ307が処理するための復号された命令(たとえば、マイクロ演算)またはマクロ命令であってもよい。
この説明全体を通して、データは行優先データレイアウトを使用して表現される。列優先ユーザは、自分の方向性に従って用語を解釈するべきである。図15は、行優先フォーマットおよび列優先フォーマットで表現された行列の一例を示す。図示されたように、行列Aは2×3行列である。この行列が行優先フォーマットで記憶されると、行のデータ要素は連続している。この行列が列優先フォーマットで記憶されると、列のデータ要素は連続している。AT*BT=(BA)Tであることは行列のよく知られた性質であり、上付き文字Tは転置を意味する。列優先データを行優先データとして読み取ると、行列は転置行列のように見える行列をもたらす。
図16は、行列(タイル)の使用に関する一例を示す。この例では、行列C1601は2つのタイルを含み、タイルA1603は1つのタイルを含み、タイルB1605は2つのタイルを含む。この図は、行列乗算を計算するアルゴリズムの内部ループの一例を示している。この例では、行列C1601からの2つの結果タイルtmm0およびtmm1は、中間結果を累積するために使用される。行列A1603からの1つのタイル(tmm2)は、行列B1605からの2つのタイルと乗算されるので、2回再利用される。矢印によって示された方向から新しいAタイルおよび2つの新しいBタイルをロードするポインタ。図示されていない外側のループは、Cタイル用のポインタを調整する。
[A.タイル構成ハードウェアサポート]
図18は、一実施形態による、タイルの使用の構成用のサポートを示す。メモリ1801はサポートされるべき行列(タイル)のタイル記述1803を含む。
図20A~図20Dはレジスタ1819の例を示す。図20Aは複数のレジスタ1819を示す。図示されたように、各タイル(TMM0 2001…TMMN 2003)は別々のレジスタを有し、各レジスタはその特定のタイルの行および列のサイズを記憶する。StartP2011およびStartRow2013は別々のレジスタに記憶される。タイルが使用のために構成されていることを示すために、1つまたは複数のステータスレジスタ2015が設定される(たとえば、TILES_CONFIGURED=1)。
開示された実施形態に従って実装された単一命令複数データ(SIMD)プロセッサコアは、SIMD実行を通して有意のデータ並列性を獲得する。しかしながら、SIMD機能ユニットの数またはSIMD機能ユニットの幅によってスループットが制限されるので、SIMD計算スループットに制限が存在することがある。SIMD機能ユニットは、本明細書では処理エンジン(PE)と呼ばれることがある。開示された実施形態は、SIMD実行において使用するための本明細書で説明されたTILESアーキテクチャを活用し、SIMD機能ユニットの数の増加、および各機能ユニットの幅の増大を可能にする。
図21Aは、最適化可能なタイル命令チェーンの例示的な実行を示すブロックフロー図である。図示されたように、最適化されていない命令チェーン2100は、3つのソースタイルの関数として結果タイルを設定する演算の算術シーケンス、すなわち、結果=((A+B)*3)-C)を指定する。そのような命令チェーンはN回実行される可能性があり、毎回、M行K列の要素を有するタイルの各要素に記憶される結果を生成する。しかしながら、簡単にするために、かつ最適化を説明するために、命令のただ1つのインスタンス、すなわち1つのタイルを生成するループの1回の反復のみが示されている。
本明細書で開示された実施形態によれば、演算加算2160の結果を演算乗算2164に再送することによってフローを最適化するように実行回路をトリガすることができる複数の方法がある。
連鎖タイル演算を実施するために、開示された実施形態は、連鎖数学演算を実行するように処理エンジンを選択する。いくつかの実施形態では、SIMDプロセッサは、処理エンジン(PE)の非対称配列を含む。そのような配列は、様々な異なるタイプの処理エンジンを有し、いくつかは他の処理エンジンよりも高い処理能力を有するが、より多くの電力またはダイ面積を消費する。
図22は、一実施形態による、連鎖タイル命令に応答するプロセッサの実行フローを示すブロックフロー図である。2201において、プロセッサが、フェッチ回路を使用して、各々がそれぞれのソースタイルおよびデスティネーションタイルを指定するソースタイル指定子およびデスティネーションタイル指定子を有する複数の命令をフェッチする。2203において、プロセッサが、フェッチされた複数の命令をメモリにバッファリングする。動作2203は、フェッチされた複数の命令が他の場所にバッファリングされるか、または全くバッファリングされない限り、その破線の境界で示されたようにオプションである。2205において、プロセッサが、復号回路を使用して、フェッチされた複数の命令を復号する。2207において、プロセッサが、復号された複数の命令の実行をスケジュールする。動作2207は、それが異なる時間に行われるか、または全く行われなくてもよい限り、その破線の境界で示されたようにオプションである。2209において、プロセッサが、実行回路を使用して、以下のように復号された複数の命令を実行する。
図24Aは、いくつかの実施形態による、プロセッサによって最適化されるべきSIMDコードループを示す例示的なネイティブコードである。図示されたように、ネイティブモード2402におけるSIMDループは、M×Nタイルのすべての要素に対して実行されるべき関数、すなわち、結果=((B+C)<<2)+kである。
図25Aは、いくつかの実施形態による、チェーンフレンドリ命令用の例示的なフォーマットを示すブロック図である。図示されたように、CHAIN_TILE_OP命令2500は、オペコード2501、チェーン制御2502、デスティネーション2503、およびソース1(2504)を含むチェーンフレンドリ命令である。ソース2(2505)、ソース3(2506)、即値2507、ライトマスク2508、およびサイズ2509を含むいくつかのオプションのパラメータも示されている。
上述された命令を実行するハードウェア、ソフトウェアなどの例が本明細書で詳述される。たとえば、下記で説明されるものは、フェッチ、復号、スケジュール、実行、リタイアなどの様々なパイプライン段階を含む命令実行の態様を詳述する。
命令セットは1つまたは複数の命令フォーマットを含んでもよい。所与の命令フォーマットは、とりわけ、実行されるべき演算(たとえば、オペコード)およびその演算が実行されるべきオペランドを指定する様々なフィールド(たとえば、ビットの数、ビットの位置)、ならびに/または他のデータフィールド(たとえば、マスク)を定義することができる。いくつかの命令フォーマットは、命令テンプレート(またはサブフォーマット)の定義によってさらに分類される。たとえば、所与の命令フォーマットの命令テンプレートは、命令フォーマットのフィールドの異なるサブセットを有するように定義され(含まれるフィールドは通常同じ順序であるが、含まれるフィールドが少ないため少なくともいくつかは異なるビット位置を有する)、かつ/または所与のフィールドが異なって解釈されるように定義されてもよい。したがって、ISAの各命令は、所与の命令フォーマット(および定義されている場合その命令フォーマットの命令テンプレートのうちの所与の1つ)を使用して表現され、演算およびオペランドを指定するためのフィールドを含む。たとえば、例示的なADD命令は、特定のオペコード、ならびにそのオペコードを指定するオペコードフィールドおよびオペランド(ソース1/デスティネーションおよびソース2)を選択するオペランドフィールドを含む命令フォーマットを有し、命令ストリーム内でこのADD命令が出現すると、特定のオペランドを選択するオペランドフィールド内に特定の内容が含まれる。高度ベクトル拡張(AVX)(AVX1およびAVX2)と呼ばれ、ベクトル拡張(VEX)コーディング方式を使用するSIMD拡張機能のセットがリリースおよび/または公開されている(たとえば、Intel(登録商標)64およびIA-32アーキテクチャ開発者マニュアル、2014年9月を参照されたく、インテル(登録商標)高度ベクトル拡張プログラミングリファレンス、2014年10月を参照されたい)。
本明細書で説明された命令の実施形態は、異なるフォーマットで具現化されてもよい。さらに、例示的なシステム、アーキテクチャ、およびパイプラインが下記で詳述される。命令の実施形態は、そのようなシステム、アーキテクチャ、およびパイプライン上で実行されてもよいが、詳述されたものに限定されない。
ベクトルフレンドリ命令フォーマットは、ベクトル命令に適した命令フォーマットである(たとえば、ベクトル演算に固有のいくつかのフィールドが存在する)。ベクトル演算とスカラ演算の両方がベクトルフレンドリ命令フォーマットによってサポートされる実施形態が説明されているが、代替の実施形態は、ベクトルフレンドリ命令フォーマットのベクトル演算のみを使用する。
クラスAの非メモリアクセス2519命令テンプレートの場合、アルファフィールド2552はRSフィールド2552Aとして解釈され、その内容は異なる拡張演算タイプのうちのどの拡張演算タイプが実行されるべきかを識別し(たとえば、丸め2552A.1およびデータ変換2552A.2は、それぞれ、非メモリアクセス、完全丸めタイプ演算2517および非メモリアクセス、データ変換タイプ演算2518の命令テンプレートに対して指定される)、ベータフィールド2554は、指定されたタイプの演算のどれを実行されるべきかを識別する。非メモリアクセス2519命令テンプレートには、スケールフィールド2560、変位フィールド2562A、および変位スケールフィールド2562Bは存在しない。
非メモリアクセス完全丸め制御タイプ演算2517命令テンプレートでは、ベータフィールド2554は、その内容が静的な丸めを提供する丸め制御フィールド2554Aとして解釈される。本発明の説明された実施形態では、丸め制御フィールド2554Aは、全浮動小数点例外抑制(SAE)フィールド2556および丸め演算制御フィールド2558を含むが、代替の実施形態は、これら両方の概念を同じフィールドに符号化するか、またはこれらの概念/フィールドのうちの1つもしくは他のフィールドのみを有することができる(たとえば、丸め演算制御フィールド2558のみを有することができる)。
非メモリアクセスデータ変換タイプ演算2518命令テンプレートでは、ベータフィールド2554はデータ変換フィールド2554Bとして解釈され、その内容は複数のデータ変換(たとえば、データ変換なし、スウィズル、ブロードキャスト)のうちのどのデータ変換が実行されるべきかを識別する。
一時的データは、キャッシングから恩恵を受けるのに十分早く再利用される可能性が高いデータである。しかしながら、これはヒントであり、様々なプロセッサは、ヒントを完全に無視することを含む様々な方法でそれを実施することができる。
非一時的データは、第1レベルキャッシュ内のキャッシングから恩恵を受けるのに十分早く再利用される可能性が低いデータであり、排除が優先されるべきである。しかしながら、これはヒントであり、様々なプロセッサは、ヒントを完全に無視することを含む様々な方法でそれを実施することができる。
クラスBの命令テンプレートの場合、アルファフィールド2552はライトマスク制御(Z)フィールド2552Cとして解釈され、その内容は、ライトマスクフィールド2570によって制御されるライトマスキングがマージングであるべきかゼロイングであるべきかを区別する。
図26Aは、本発明の実施形態による、例示的な特殊ベクトルフレンドリ命令フォーマットを示すブロック図である。図26Aは、フィールドの位置、サイズ、解釈、および順序、ならびにそれらのフィールドのうちのいくつかの値を指定するという意味で特殊である、特殊ベクトルフレンドリ命令フォーマット2600を示す。特殊ベクトルフレンドリ命令フォーマット2600は、x86命令セットを拡張するために使用されてもよく、したがって、いくつかのフィールドは、既存のx86命令セットおよびその拡張(たとえば、AVX)で使用されるフィールドと同様または同じである。このフォーマットは、拡張を有する既存のx86命令セットのプレフィックス符号化フィールド、実オペコードバイトフィールド、MOD R/Mフィールド、SIBフィールド、変位フィールド、および即値フィールドと一致したままである。図26Aのフィールドがマップされる図25C~図25Dのフィールドが示されている。
図26Bは、本発明の1つの実施形態による、フルオペコードフィールド2574を構成する特殊ベクトルフレンドリ命令フォーマット2600のフィールドを示すブロック図である。具体的には、フルオペコードフィールド2574は、フォーマットフィールド2540、基本演算フィールド2542、およびデータ要素幅(W)フィールド2564を含む。基本演算フィールド2542は、プレフィックス符号化フィールド2625、オペコードマップフィールド2615、およびリアルオペコードフィールド2630を含む。
図26Cは、本発明の1つの実施形態による、レジスタインデックスフィールド2544を構成する特殊ベクトルフレンドリ命令フォーマット2600のフィールドを示すブロック図である。具体的には、レジスタインデックスフィールド2544は、REXフィールド2605、REX'フィールド2610、MODR/M.regフィールド2644、MODR/M.r/mフィールド2646、VVVVフィールド2620、xxxフィールド2654、およびbbbフィールド2656を含む。
図26Dは、本発明の1つの実施形態による、拡張演算フィールド2550を構成する特殊ベクトルフレンドリ命令フォーマット2600のフィールドを示すブロック図である。クラス(U)フィールド2568が0を含むとき、それは、EVEX.U0(クラスA 2568A)を意味し、1を含むとき、それはEVEX.U1(クラスB 2568B)を意味する。U=0であり、MODフィールド2642が(非メモリアクセス演算を意味する)11を含むとき、アルファフィールド2552(EVEXバイト3、ビット[7]-EH)はrsフィールド2552Aとして解釈される。rsフィールド2552Aが1(丸め2552A.1)を含むとき、ベータフィールド2554(EVEXバイト3、ビット[6:4]-SSS)は丸め制御フィールド2554Aとして解釈される。丸め制御フィールド2554Aは、1ビットのSAEフィールド2556および2ビットの丸め演算制御フィールド2558を含む。rsフィールド2552Aが0(データ変換2552A.2)を含むとき、ベータフィールド2554(EVEXバイト3、ビット[6:4]-SSS)は3ビットのデータ変換フィールド2554Bとして解釈される。U=0であり、MODフィールド2642が(メモリアクセス演算を意味する)00、01、または10を含むとき、アルファフィールド2552(EVEXバイト3、ビット[7]-EH)は、エビクションヒント(EH)フィールド2552Bとして解釈され、ベータフィールド2554(EVEXバイト3、ビット[6:4]-SSS)は、3ビットのデータ操作フィールド2554Cとして解釈される。
図27は、本発明の1つの実施形態による、レジスタアーキテクチャ2700のブロック図である。図示された実施形態では、512ビット幅の32個のベクトルレジスタ2710が存在し、これらのレジスタはzmm0からzmm31として参照される。下位16個のzmmレジスタの下位256ビットは、レジスタymm0~15と重なる。下位16個のzmmレジスタの下位128ビット(ymmレジスタの下位128ビット)は、レジスタxmm0~15と重なる。下記の表に示されたように、特殊ベクトルフレンドリ命令フォーマット2600は、これらの重なったレジスタファイルを処理する。
プロセッサコアは、異なる方法で、異なる目的のために、かつ異なるプロセッサにおいて実装されてもよい。たとえば、そのようなコアの実装形態には、1)汎用コンピューティング向けの汎用インオーダコア、2)汎用コンピューティング向けの高性能汎用アウトオブオーダコア、3)主としてグラフィックスおよび/または科学(スループット)コンピューティング向けの専用コアが含まれてもよい。様々なプロセッサの実装形態には、1)汎用コンピューティング向けの1つもしくは複数の汎用インオーダコアおよび/または汎用コンピューティング用の1つもしくは複数の汎用アウトオブオーダコアを含むCPU、ならびに2)主としてグラフィックスおよび/または科学(スループット)向けの1つまたは複数の専用コアを含むコプロセッサが含まれてもよい。そのような様々なプロセッサは様々なコンピュータシステムアーキテクチャをもたらし、そのようなコンピュータシステムアーキテクチャには、1)CPUとは別のチップ上のコプロセッサ、2)CPUと同じパッケージ内の別のダイ上のコプロセッサ、3)CPUと同じダイ上のコプロセッサ(この場合、そのようなコプロセッサは、統合グラフィックスおよび/もしくは科学(スループット)ロジックなどの専用ロジック、または専用コアと呼ばれることがある)、ならびに4)同じダイ上に(アプリケーションコアまたはアプリケーションプロセッサと呼ばれることもある)説明されたCPU、上述したコプロセッサ、および追加の機能を含んでもよいシステムオンチップが含まれてもよい。例示的なコアアーキテクチャが次に説明され、例示的なプロセッサおよびコンピュータアーキテクチャの説明が続く。
[インオーダコアおよびアウトオブオーダコアのブロック図]
図28Aは、本発明の実施形態による、例示的なインオーダパイプラインと、例示的なレジスタリネーミング、アウトオブオーダ発行/実行パイプラインの両方を示すブロック図である。図28Bは、本発明の実施形態による、プロセッサに含まれるべきインオーダアーキテクチャコアの例示的な実施形態と、例示的なレジスタリネーミング、アウトオブオーダ発行/実行アーキテクチャコアの両方を示すブロック図である。図28A~図28Bの実線のボックスはインオーダパイプラインおよびインオーダコアを示し、破線のボックスのオプションの追加は、レジスタリネーミング、アウトオブオーダ発行/実行パイプラインおよびコアを示す。インオーダの態様がアウトオブオーダの態様のサブセットであると仮定して、アウトオブオーダの態様を説明する。
図29A~図29Bは、より具体的で例示的なインオーダコアアーキテクチャのブロック図を示し、そのコアはチップ内の(同じタイプおよび/または異なるタイプの他のコアを含む)いくつかのロジックブロックのうちの1つである。ロジックブロックは、用途に応じて、高帯域幅相互接続ネットワーク(たとえば、リングネットワーク)を介していくつかの固定機能ロジック、メモリI/Oインターフェース、および他の必要なI/Oロジックと通信する。
図31~図34は、例示的なコンピュータアーキテクチャのブロック図である。ラップトップ、デスクトップ、ハンドヘルドPC、携帯情報端末、エンジニアリングワークステーション、サーバ、ネットワークデバイス、ネットワークハブ、スイッチ、組込み型プロセッサ、デジタル信号プロセッサ(DSP)、グラフィックスデバイス、ビデオゲームデバイス、セットトップボックス、マイクロコントローラ、携帯電話、携帯型メディアプレーヤ、ハンドヘルドデバイス、および様々な他の電子デバイスのための当該技術分野で知られた他のシステム設計およびシステム構成も適している。一般に、本明細書で開示されたプロセッサおよび/または他の実行ロジックを組み込むことが可能な多様なシステムまたは電子デバイスが一般的に適している。
場合によっては、命令をソース命令セットからターゲット命令セットに変換するために、命令コンバータが使用されてもよい。たとえば、命令コンバータは、命令をコアによって処理されるべき1つまたは複数の他の命令に、(たとえば、静的バイナリ変換、動的コンパイルを含む動的バイナリ変換を使用して)解釈し、変形させ、エミュレートし、または場合によっては変換することができる。命令コンバータは、ソフトウェア、ハードウェア、ファームウェア、またはそれらの組合せに実装されてもよい。命令コンバータは、プロセッサ上にあっても、プロセッサ外にあっても、または部分的にプロセッサ上および部分的にプロセッサ外にあってもよい。
例1は、1組の命令がフェッチされるまで1つまたは複数の命令をフェッチするフェッチ回路であって、各命令がソースおよびデスティネーションタイルオペランドを指定する、フェッチ回路と、フェッチされた1組の命令を復号する復号回路と、復号された1組の命令に応答して、命令チェーンに属する復号された第1および第2の命令を識別することと、復号された第1および第2の命令を実行する第1および第2の処理エンジン(PE)を有するSIMD経路を動的に選択し構成することと、復号された第1の命令の指定されたデスティネーションを破棄し、代わりに、復号された第2の命令を実行するために第2のPEによって使用されるように、第1のPEからの復号された第1の命令の結果を送ることとを行う実行回路とを備える、例示的な単一命令複数データ(SIMD)プロセッサを提供する。
(項目1)
各々がそれぞれのソースタイルおよびデスティネーションタイルを指定するソースタイル指定子およびデスティネーションタイル指定子を有する複数の命令をフェッチするフェッチ回路と、
フェッチされた上記複数の命令を復号する復号回路と、
復号された上記複数の命令に応答して、
命令チェーンに属する復号された第1および第2の命令を識別することと、
復号された上記第1および第2の命令を実行する第1および第2の処理エンジン(PE)を有するSIMD経路を動的に選択し構成することと、
復号された上記第1の命令の上記デスティネーションタイル指定子を破棄し、代わりに、復号された上記第2の命令を実行するために上記第2のPEによって使用されるように、復号された上記第1の命令の結果を上記第1のPEから上記第2のPEに送ることと
を行う実行回路と
を備える、プロセッサ。
(項目2)
上記複数の命令が少なくとも2つの命令を有し、上記命令チェーンの各命令が、上記命令がチェーンの一部であることを上記実行回路に判定させるチェーン制御フィールドをさらに備え、
上記チェーン制御フィールドが、上記チェーン内の最後の命令をマークするために、チェーン開始ヒント、チェーン中央ヒント、およびチェーン終了ヒントのうちの1つを備えるチェーン位置ヒントを示し、上記チェーン制御フィールドが、上記チェーンの存在を判定することと、上記命令チェーンを実行するように上記SIMD経路を動的に選択し構成することと、上記チェーン内の最後を除くすべての命令の上記デスティネーションタイル指定子を破棄することと、代わりに最後を除くすべての命令の結果を上記チェーン内の次の命令を実行する次のPEに送ることとを上記実行回路に行わせる、
項目1に記載のプロセッサ。
(項目3)
復号された上記第1および第2の命令が、異なるオペコードを指定して異なる第1および第2の算術演算を指定し、選択された上記第1および第2の処理エンジンが、それぞれ、上記第1の算術演算および上記第2の算術演算を専門に扱う限定された機能を有する、項目1に記載のプロセッサ。
(項目4)
上記命令チェーンの第1の命令がチェーン制御フィールドをさらに有し、上記チェーン制御フィールドが、上記第1の命令および1つまたは複数の後続の命令を上記命令チェーンの一部であると識別するチェーンヘッダを含む、項目1に記載のプロセッサ。
(項目5)
指定された上記ソースタイルおよびデスティネーションタイルが、各々M行N列の要素を有し、1行のみに有効な要素を含む、項目1に記載のプロセッサ。
(項目6)
上記実行回路がさらに、各命令のデスティネーションタイル指定子を破棄させた命令の記録を保持し、必要に応じて記録された上記命令のうちの1つまたは複数をロールバックし再実行する、項目1に記載のプロセッサ。
(項目7)
上記実行回路がさらに、復号された上記第1の命令の上記デスティネーションタイル指定子を破棄する前に機械状態を保存し、その後、機械状態整合性チェックを実行して、復号された上記第1の命令の上記デスティネーションタイル指定子を破棄することによって生じたあらゆる不整合を検出する、項目1に記載のプロセッサ。
(項目8)
上記複数の命令が少なくとも2つの命令を有し、上記実行回路が、上記複数の命令をバッファリングし、2つ以上の命令の間のデータ依存性を検出して、上記2つ以上の命令が上記チェーンの一部であると判定するバイナリトランスレータをさらに備える、項目1に記載のプロセッサ。
(項目9)
上記フェッチ回路がさらに、上記複数の命令をフェッチする前にチェーン開始命令をフェッチし、上記チェーン開始命令が上記命令チェーン内の複数の命令を指定し、さらに少なくとも復号された上記第1の命令のターゲットを指定し、上記ターゲットが、復号された上記第1の命令の上記結果を送る先の上記命令チェーン内の上記複数の命令のうちの1つである、項目1に記載のプロセッサ。
(項目10)
上記実行回路がさらに、復号された上記第1の命令の上記デスティネーションタイル指定子を破棄するときに上記第1の命令の指定された上記デスティネーションタイルのタイル構成内にダーティビットを設定し、上記ダーティタイルが後続の命令によって読み取られた場合に故障を発生させる、項目1に記載のプロセッサ。
(項目11)
プロセッサによって実行される方法であって、
フェッチ回路を使用して、各々がそれぞれのソースタイルおよびデスティネーションタイルを指定するソースタイル指定子およびデスティネーションタイル指定子を有する複数の命令をフェッチするステップと、
復号回路を使用して、フェッチされた上記複数の命令を復号するステップと、
実行回路を使用して、
命令チェーンに属する復号された第1および第2の命令を識別することと、
復号された上記第1および第2の命令を実行する第1および第2の処理エンジン(PE)を有するSIMD経路を動的に選択し構成することと、
復号された上記第1の命令の上記デスティネーションタイル指定子を破棄し、代わりに、復号された上記第2の命令を実行するために上記第2のPEによって使用されるように、復号された上記第1の命令の結果を上記第1のPEから上記第2のPEに送ることと
を行うように、復号された上記複数の命令を実行するステップと
を備える、方法。
(項目12)
上記複数の命令が少なくとも2つの命令を有し、上記命令チェーンの各命令が、上記命令がチェーンの一部であることを上記実行回路に判定させるチェーン制御フィールドをさらに有し、
上記チェーン制御フィールドが、上記チェーン内の最後の命令をマークするために、チェーン開始ヒント、チェーン中央ヒント、およびチェーン終了ヒントのうちの1つを備えるチェーン位置ヒントを示し、上記チェーン制御フィールドが、上記命令チェーンの存在を判定することと、上記命令チェーンを実行するように上記SIMD経路を動的に選択し構成することと、上記チェーン内の最後を除くすべての命令のデスティネーションタイル指定子を破棄することと、代わりに最後を除くすべての命令の結果を上記チェーン内の次の命令を実行する次のPEに送ることとを上記実行回路に行わせる、
項目11に記載の方法。
(項目13)
復号された上記第1および第2の命令が、異なるオペコードを指定して異なる第1および第2の算術演算を指定し、選択された上記第1および第2の処理エンジンが、それぞれ、上記第1の算術演算および上記第2の算術演算を専門に扱う限定された機能を有する、項目11に記載の方法。
(項目14)
上記命令チェーンの第1の命令がチェーン制御フィールドをさらに有し、上記チェーン制御フィールドが、上記チェーンまたは命令の一部であるように、上記第1の命令および1つまたは複数の後続の命令を識別するチェーンヘッダを含む、項目11に記載の方法。
(項目15)
上記指定されたソースタイルおよびデスティネーションタイルが、各々M行N列の要素を有し、1行のみに有効な要素を含む、項目11に記載の方法。
(項目16)
上記実行回路がさらに、各命令のデスティネーションタイル指定子を破棄した命令の記録を保持し、必要に応じて記録された上記命令をロールバックし再実行する、項目11に記載の方法。
(項目17)
上記実行回路がさらに、復号された上記第1の命令の上記デスティネーションタイル指定子を破棄する前に機械状態を保存し、その後、機械状態整合性チェックを実行して、復号された上記第1の命令の上記デスティネーションタイル指定子を破棄することによって生じたあらゆる不整合を検出する、項目11に記載の方法。
(項目18)
上記複数の命令が少なくとも2つの命令を有し、上記実行回路が、上記複数の命令をバッファリングし、2つ以上の命令の間のデータ依存性を検出して、上記2つ以上の命令が上記チェーンの一部であることを判定するバイナリトランスレータをさらに備える、項目11に記載の方法。
(項目19)
上記複数の命令をフェッチする前にチェーン開始命令をフェッチするステップをさらに備え、上記チェーン開始命令が上記命令チェーン内の複数の命令を指定し、さらに少なくとも復号された上記第1の命令のターゲットを指定し、上記ターゲットが、復号された上記第1の命令の上記結果を送る先の上記命令チェーン内の上記複数の命令のうちの1つである、項目11に記載の方法。
(項目20)
復号された上記第1の命令の上記デスティネーションタイル指定子を破棄するときに上記第1の命令の指定された上記デスティネーションタイルのタイル構成内に上記実行回路によってダーティビットを設定するステップをさらに備え、上記ダーティビットセットを有する指定された上記デスティネーションタイルが後続の命令によって読み取られた場合に故障を発生させる、項目11に記載の方法。
(項目21)
命令チェーンを実行するためのシステムであって、上記システムは、
メモリと、
プロセッサと
を備え、
上記プロセッサは、
各々がそれぞれのソースタイルおよびデスティネーションタイルを指定するソースタイル指定子およびデスティネーションタイル指定子を有する複数の命令をフェッチするフェッチ回路と、
フェッチされた上記複数の命令を復号する復号回路と、
復号された上記複数の命令に応答して、
命令チェーンに属する復号された第1および第2の命令を識別することと、
復号された上記第1および第2の命令を実行する第1および第2の処理エンジン(PE)を有するSIMD経路を動的に選択し構成することと、
復号された上記第1の命令の上記デスティネーションタイル指定子を破棄し、代わりに、復号された上記第2の命令を実行するために上記第2のPEによって使用されるように、復号された上記第1の命令の結果を上記第1のPEから上記第2のPEに送ることとを行う実行回路と
を備える、システム。
(項目22)
上記複数の命令が少なくとも2つの命令を有し、上記命令チェーンの各命令が、上記命令がチェーンの一部であることを上記実行回路に判定させるチェーン制御フィールドをさらに有し、
上記チェーン制御フィールドが、上記チェーン内の最後の命令をマークするために、チェーン開始ヒント、チェーン中央ヒント、およびチェーン終了ヒントのうちの1つを含むチェーン位置ヒントを示し、上記チェーン制御フィールドが、上記チェーンの存在を判定することと、上記命令チェーンを実行するように上記SIMD経路を動的に選択し構成することと、上記チェーン内の最後を除くすべての命令の上記デスティネーションタイル指定子を破棄することと、最後を除くすべての命令の結果を上記チェーン内の次の命令を実行する次のPEに送ることとを上記実行回路に行わせる、
項目21に記載のシステム。
(項目23)
復号された上記第1および第2の命令が、異なるオペコードを指定して異なる第1および第2の算術演算を指定し、選択された上記第1および第2の処理エンジンが、それぞれ、上記第1の算術演算および上記第2の算術演算を専門に扱う限定された機能を有する、項目21に記載のシステム。
(項目24)
上記命令チェーンの第1の命令がチェーン制御フィールドをさらに有し、上記チェーン制御フィールドが、上記チェーンまたは命令の一部であるように、上記第1の命令および1つまたは複数の後続の命令を識別するチェーンヘッダを含む、項目21に記載のシステム。
(項目25)
上記フェッチ回路がさらに、上記複数の命令をフェッチする前にチェーン開始命令をフェッチし、上記チェーン開始命令が上記命令チェーン内の複数の命令を指定し、さらに少なくとも復号された上記第1の命令のターゲットを指定し、上記ターゲットが、復号された上記第1の命令の上記結果を送る先の上記命令チェーン内の上記複数の命令のうちの1つである、項目21に記載のシステム。
Claims (23)
- 各々がそれぞれのソースタイルおよびデスティネーションタイルを指定するソースタイル指定子およびデスティネーションタイル指定子を有する複数の命令をフェッチするフェッチ回路と、
フェッチされた前記複数の命令を復号する復号回路と、
復号された前記複数の命令に応答して、
命令チェーンに属する復号された第1および第2の命令を識別することと、
復号された前記第1および第2の命令を実行する第1および第2の処理エンジン(PE)を有するSIMD経路を動的に選択し構成することと、
復号された前記第1の命令の前記デスティネーションタイル指定子に対応する書き込みを行わないで、前記デスティネーションタイル指定子を使用せず、代わりに、復号された前記第2の命令を実行するために前記第2のPEによって使用されるように、復号された前記第1の命令の結果を前記第1のPEから前記第2のPEに送ることと
を行う実行回路と
を備え、
前記実行回路がさらに、復号された前記第1の命令の前記デスティネーションタイル指定子を使用しない場合に前記第1の命令の指定された前記デスティネーションタイルのタイル構成内にダーティビットを設定し、前記ダーティビットが後続の命令によって読み取られた場合にフォルトを発生させる
プロセッサ。 - 前記複数の命令が少なくとも2つの命令を有し、前記命令チェーンの各命令が、前記命令がチェーンの一部であることを前記実行回路に判定させるチェーン制御フィールドをさらに有し、
前記チェーン制御フィールドが、前記チェーン内の最後の命令をマークするために、チェーン開始ヒント、チェーン中央ヒント、およびチェーン終了ヒントの中から選択されたチェーン位置ヒントを示し、前記チェーン制御フィールドが前記実行回路に、前記チェーンの存在を判定して、前記命令チェーンを実行するように前記SIMD経路を動的に選択し構成することと、前記チェーン内の最後を除くすべての命令の前記デスティネーションタイル指定子を使用しないことと、代わりに最後を除くすべての命令の結果を前記チェーン内の次の命令を実行する次のPEに送ることとを行わせ、
前記チェーン位置ヒントは、前記チェーン内の前記命令の相対位置を示すインデックスを指定する
請求項1に記載のプロセッサ。 - 復号された前記第1および第2の命令が、異なるオペコードを指定して異なる第1および第2の算術演算を指定し、選択された前記第1および第2の処理エンジンが、それぞれ、前記第1の算術演算および前記第2の算術演算を専門に扱う限定された機能を有する、請求項1に記載のプロセッサ。
- 前記命令チェーンの第1の命令がチェーン制御フィールドをさらに有し、前記チェーン制御フィールドが、前記第1の命令および1つまたは複数の後続の命令を前記命令チェーンの一部であると識別するチェーンヘッダを含む、請求項1に記載のプロセッサ。
- 指定された前記ソースタイルおよびデスティネーションタイルが、各々M行N列の要素を有する、請求項1から4のいずれか一項に記載のプロセッサ。
- 前記実行回路がさらに、各命令のデスティネーションタイル指定子を使用しなかった命令の記録を保持し、前記使用しなかったことにより生じる問題が検出された場合に、記録された前記命令のうちの1つまたは複数をロールバックし再実行する、請求項1から4のいずれか一項に記載のプロセッサ。
- 前記実行回路がさらに、復号された前記第1の命令の前記デスティネーションタイル指定子を使用しないことの前に機械状態を保存し、その後、機械状態整合性チェックを実行して、復号された前記第1の命令の前記デスティネーションタイル指定子を使用しないことによって生じたあらゆる不整合を検出する、請求項1から4のいずれか一項に記載のプロセッサ。
- 前記複数の命令が少なくとも2つの命令を有し、前記実行回路が、前記複数の命令をバッファリングし、2つ以上の命令の間のデータ依存性を検出して、前記2つ以上の命令が前記命令チェーンの一部であると判定するバイナリトランスレータをさらに備え、
前記データ依存性は、前記2つ以上の命令の一方の結果が前記2つ以上の命令の他方によって使用されることを示す、請求項1に記載のプロセッサ。 - 前記フェッチ回路がさらに、前記複数の命令をフェッチする前にチェーン開始命令をフェッチし、前記チェーン開始命令が前記命令チェーン内の複数の命令を指定し、さらに少なくとも復号された前記第1の命令のターゲットを指定し、前記ターゲットが、復号された前記第1の命令の前記結果を送る先の前記命令チェーン内の前記複数の命令のうちの1つであり、前記チェーン開始命令は、命令チェーンが続くことを前記プロセッサに通知する、請求項1から4のいずれか一項に記載のプロセッサ。
- プロセッサによって実行される方法であって、前記方法は、
フェッチ回路を使用して、各々がそれぞれのソースタイルおよびデスティネーションタイルを指定するソースタイル指定子およびデスティネーションタイル指定子を有する複数の命令をフェッチするステップと、
復号回路を使用して、フェッチされた前記複数の命令を復号するステップと、
実行回路を使用して、
命令チェーンに属する復号された第1および第2の命令を識別することと、
復号された前記第1および第2の命令を実行する第1および第2の処理エンジン(PE)を有するSIMD経路を動的に選択し構成することと、
復号された前記第1の命令の前記デスティネーションタイル指定子に対応する書き込みを行わないで、前記デスティネーションタイル指定子を使用せず、代わりに、復号された前記第2の命令を実行するために前記第2のPEによって使用されるように、復号された前記第1の命令の結果を前記第1のPEから前記第2のPEに送ることと
を行うように、復号された前記複数の命令を実行するステップと、
復号された前記第1の命令の前記デスティネーションタイル指定子を使用しない場合に前記第1の命令の指定された前記デスティネーションタイルのタイル構成内に前記実行回路によってダーティビットを設定し、前記ダーティビットを有する指定された前記デスティネーションタイルが後続の命令によって読み取られた場合にフォルトを発生させるステップと
を備える、方法。 - 前記複数の命令が少なくとも2つの命令を有し、前記命令チェーンの各命令が、前記命令がチェーンの一部であることを前記実行回路に判定させるチェーン制御フィールドをさらに有し、
前記チェーン制御フィールドが、前記チェーン内の最後の命令をマークするために、チェーン開始ヒント、チェーン中央ヒント、およびチェーン終了ヒントの中から選択されたチェーン位置ヒントを示し、前記チェーン制御フィールドが、前記命令チェーンの存在を判定することと、前記命令チェーンを実行するように前記SIMD経路を動的に選択し構成することと、前記チェーン内の最後を除くすべての命令の宛先デスティネーションタイル指定子を使用しないことと、代わりに最後を除くすべての命令の結果を前記チェーン内の次の命令を実行する次のPEに送ることとを前記実行回路に行わせ、
前記チェーン位置ヒントは、前記チェーン内の前記命令の相対位置を示すインデックスを指定する
請求項10に記載の方法。 - 復号された前記第1および第2の命令が、異なるオペコードを指定して異なる第1および第2の算術演算を指定し、選択された前記第1および第2の処理エンジンが、それぞれ、前記第1の算術演算および前記第2の算術演算を専門に扱う限定された機能を有する、請求項10に記載の方法。
- 前記命令チェーンの第1の命令がチェーン制御フィールドをさらに有し、前記チェーン制御フィールドが、前記第1の命令および1つまたは複数の後続の命令を前記命令チェーンの一部であると識別するチェーンヘッダを含む、請求項10に記載の方法。
- 指定された前記ソースタイルおよびデスティネーションタイルが、各々M行N列の要素を有する、請求項10から13のいずれか一項に記載の方法。
- 前記実行回路がさらに、各命令のデスティネーションタイル指定子を使用しなかった命令の記録を保持し、前記使用しなかったことにより生じる問題が検出された場合に、記録された前記命令をロールバックし再実行する、請求項10から13のいずれか一項に記載の方法。
- 前記実行回路がさらに、復号された前記第1の命令の前記デスティネーションタイル指定子を使用しないことの前に機械状態を保存し、その後、機械状態整合性チェックを実行して、復号された前記第1の命令の前記デスティネーションタイル指定子を使用しないことによって生じたあらゆる不整合を検出する、請求項10から13のいずれか一項に記載の方法。
- 前記複数の命令が少なくとも2つの命令を有し、前記実行回路が、前記複数の命令をバッファリングし、2つ以上の命令の間のデータ依存性を検出して、前記2つ以上の命令が前記命令チェーンの一部であると判定するバイナリトランスレータをさらに備え、
前記データ依存性は、前記2つ以上の命令の一方の結果が前記2つ以上の命令の他方によって使用されることを示す、請求項10に記載の方法。 - 前記複数の命令をフェッチする前にチェーン開始命令をフェッチするステップをさらに備え、前記チェーン開始命令が前記命令チェーン内の複数の命令を指定し、さらに少なくとも復号された前記第1の命令のターゲットを指定し、前記ターゲットが、復号された前記第1の命令の前記結果を送る先の前記命令チェーン内の前記複数の命令のうちの1つであり、前記チェーン開始命令は、命令チェーンが続くことを前記プロセッサに通知する、請求項10から13のいずれか一項に記載の方法。
- 命令チェーンを実行するためのシステムであって、前記システムは、
メモリと、
プロセッサと
を備え、
前記プロセッサは、
各々がそれぞれのソースタイルおよびデスティネーションタイルを指定するソースタイル指定子およびデスティネーションタイル指定子を有する複数の命令をフェッチするフェッチ回路と、
フェッチされた前記複数の命令を復号する復号回路と、
復号された前記複数の命令に応答して、
命令チェーンに属する復号された第1および第2の命令を識別することと、
復号された前記第1および第2の命令を実行する第1および第2の処理エンジン(PE)を有するSIMD経路を動的に選択し構成することと、
復号された前記第1の命令の前記デスティネーションタイル指定子に対応する書き込みを行わないで、前記デスティネーションタイル指定子を使用せず、代わりに、復号された前記第2の命令を実行するために前記第2のPEによって使用されるように、復号された前記第1の命令の結果を前記第1のPEから前記第2のPEに送ることと
を行う実行回路と
を有し、
前記実行回路がさらに、復号された前記第1の命令の前記デスティネーションタイル指定子を使用しない場合に前記第1の命令の指定された前記デスティネーションタイルのタイル構成内にダーティビットを設定し、前記ダーティビットが後続の命令によって読み取られた場合にフォルトを発生させる
システム。 - 前記複数の命令が少なくとも2つの命令を有し、前記命令チェーンの各命令が、前記命令がチェーンの一部であることを前記実行回路に判定させるチェーン制御フィールドをさらに有し、
前記チェーン制御フィールドが、前記チェーン内の最後の命令をマークするために、チェーン開始ヒント、チェーン中央ヒント、およびチェーン終了ヒントのうちの1つを含むチェーン位置ヒントを示し、前記チェーン制御フィールドが、前記チェーンの存在を判定することと、前記命令チェーンを実行するように前記SIMD経路を動的に選択し構成することと、前記チェーン内の最後を除くすべての命令の前記デスティネーションタイル指定子を使用しないことと、最後を除くすべての命令の結果を前記チェーン内の次の命令を実行する次のPEに送ることとを前記実行回路に行わせ、
前記チェーン位置ヒントは、前記チェーン内の前記命令の相対位置を示すインデックスを指定する
請求項19に記載のシステム。 - 復号された前記第1および第2の命令が、異なるオペコードを指定して異なる第1および第2の算術演算を指定し、選択された前記第1および第2の処理エンジンが、それぞれ、前記第1の算術演算および前記第2の算術演算を専門に扱う限定された機能を有する、請求項19に記載のシステム。
- 前記命令チェーンの第1の命令がチェーン制御フィールドをさらに有し、前記チェーン制御フィールドが、前記第1の命令および1つまたは複数の後続の命令を前記命令チェーンの一部であると識別するチェーンヘッダを含む、請求項19に記載のシステム。
- 前記フェッチ回路がさらに、前記複数の命令をフェッチする前にチェーン開始命令をフェッチし、前記チェーン開始命令が前記命令チェーン内の複数の命令を指定し、さらに少なくとも復号された前記第1の命令のターゲットを指定し、前記ターゲットが、復号された前記第1の命令の前記結果を送る先の前記命令チェーン内の前記複数の命令のうちの1つであり、前記チェーン開始命令は、命令チェーンが続くことを前記プロセッサに通知する、請求項19から22のいずれか一項に記載のシステム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2022203407A JP2023051994A (ja) | 2018-03-30 | 2022-12-20 | 連鎖タイル演算を実施するためのシステムおよび方法 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/942,201 US10664287B2 (en) | 2018-03-30 | 2018-03-30 | Systems and methods for implementing chained tile operations |
US15/942,201 | 2018-03-30 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022203407A Division JP2023051994A (ja) | 2018-03-30 | 2022-12-20 | 連鎖タイル演算を実施するためのシステムおよび方法 |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2019197531A JP2019197531A (ja) | 2019-11-14 |
JP2019197531A5 JP2019197531A5 (ja) | 2024-01-10 |
JP7481069B2 true JP7481069B2 (ja) | 2024-05-10 |
Family
ID=65440800
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019020233A Active JP7481069B2 (ja) | 2018-03-30 | 2019-02-07 | 連鎖タイル演算を実施するためのシステムおよび方法 |
JP2022203407A Pending JP2023051994A (ja) | 2018-03-30 | 2022-12-20 | 連鎖タイル演算を実施するためのシステムおよび方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2022203407A Pending JP2023051994A (ja) | 2018-03-30 | 2022-12-20 | 連鎖タイル演算を実施するためのシステムおよび方法 |
Country Status (5)
Country | Link |
---|---|
US (2) | US10664287B2 (ja) |
EP (2) | EP4170486A1 (ja) |
JP (2) | JP7481069B2 (ja) |
KR (2) | KR20190114745A (ja) |
CN (2) | CN110321159A (ja) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11360770B2 (en) | 2017-03-20 | 2022-06-14 | Intel Corporation | Systems, methods, and apparatuses for zeroing a matrix |
US11275588B2 (en) | 2017-07-01 | 2022-03-15 | Intel Corporation | Context save with variable save state size |
US11789729B2 (en) | 2017-12-29 | 2023-10-17 | Intel Corporation | Systems and methods for computing dot products of nibbles in two tile operands |
US11816483B2 (en) * | 2017-12-29 | 2023-11-14 | Intel Corporation | Systems, methods, and apparatuses for matrix operations |
US11809869B2 (en) * | 2017-12-29 | 2023-11-07 | Intel Corporation | Systems and methods to store a tile register pair to memory |
US11119772B2 (en) * | 2019-12-06 | 2021-09-14 | International Business Machines Corporation | Check pointing of accumulator register results in a microprocessor |
US11829439B2 (en) * | 2019-12-30 | 2023-11-28 | Qualcomm Incorporated | Methods and apparatus to perform matrix multiplication in a streaming processor |
US11861369B2 (en) | 2020-01-07 | 2024-01-02 | SK Hynix Inc. | Processing-in-memory (PIM) device |
US11537323B2 (en) | 2020-01-07 | 2022-12-27 | SK Hynix Inc. | Processing-in-memory (PIM) device |
US20210240524A1 (en) * | 2020-01-31 | 2021-08-05 | Qualcomm Incorporated | Methods and apparatus to facilitate tile-based gpu machine learning acceleration |
US11226816B2 (en) * | 2020-02-12 | 2022-01-18 | Samsung Electronics Co., Ltd. | Systems and methods for data placement for in-memory-compute |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020108026A1 (en) | 2000-02-09 | 2002-08-08 | Keith Balmer | Data processing apparatus with register file bypass |
JP2010009102A (ja) | 2008-06-24 | 2010-01-14 | Toshiba Corp | キャッシュメモリ、コンピュータシステム、及びメモリアクセス方法 |
US20110035568A1 (en) | 2008-08-15 | 2011-02-10 | Apple Inc. | Select first and select last instructions for processing vectors |
JP2013532855A (ja) | 2010-07-13 | 2013-08-19 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | グラフィクスプロセッサにおけるsimdユニットの動的な有効化及び無効化 |
US20160179551A1 (en) | 2012-06-26 | 2016-06-23 | International Business Machines Corporation | Pipelining out-of-order instructions |
US20160188483A1 (en) | 2014-12-29 | 2016-06-30 | International Business Machines Corporation | Processing page fault exceptions in supervisory software when accessing strings and similar data structures using normal load instructions |
Family Cites Families (59)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5247632A (en) | 1989-01-23 | 1993-09-21 | Eastman Kodak Company | Virtual memory management arrangement for addressing multi-dimensional arrays in a digital data processing system |
CA2129882A1 (en) * | 1993-08-12 | 1995-02-13 | Soheil Shams | Dynamically reconfigurable interprocessor communication network for simd multiprocessors and apparatus implementing same |
US5475822A (en) | 1993-11-15 | 1995-12-12 | Motorola, Inc. | Data processing system for resuming instruction execution after an interrupt and method therefor |
US5708835A (en) * | 1995-03-27 | 1998-01-13 | Hughes Electronics | Dual-directional parallel processor |
US7301541B2 (en) | 1995-08-16 | 2007-11-27 | Microunity Systems Engineering, Inc. | Programmable processor and method with wide operations |
US5892962A (en) | 1996-11-12 | 1999-04-06 | Lucent Technologies Inc. | FPGA-based processor |
US6161219A (en) | 1997-07-03 | 2000-12-12 | The University Of Iowa Research Foundation | System and method for providing checkpointing with precompile directives and supporting software to produce checkpoints, independent of environment constraints |
US6282634B1 (en) | 1998-05-27 | 2001-08-28 | Arm Limited | Apparatus and method for processing data having a mixed vector/scalar register file |
US6405304B1 (en) * | 1998-08-24 | 2002-06-11 | Compaq Information Technologies Group, L.P. | Method for mapping instructions using a set of valid and invalid logical to physical register assignments indicated by bits of a valid vector together with a logical register list |
US6704925B1 (en) * | 1998-09-10 | 2004-03-09 | Vmware, Inc. | Dynamic binary translator with a system and method for updating and maintaining coherency of a translation cache |
US6205543B1 (en) * | 1998-12-03 | 2001-03-20 | Sun Microsystems, Inc. | Efficient handling of a large register file for context switching |
FR2787233B1 (fr) | 1998-12-11 | 2001-02-16 | St Microelectronics Sa | Procede pour verifier l'integrite des circuits de decodage d'une memoire |
US7844796B2 (en) * | 2001-03-05 | 2010-11-30 | Martin Vorbach | Data processing device and method |
US6901422B1 (en) | 2001-03-21 | 2005-05-31 | Apple Computer, Inc. | Matrix multiplication in a vector processing system |
US7039793B2 (en) * | 2001-10-23 | 2006-05-02 | Ip-First, Llc | Microprocessor apparatus and method for accelerating execution of repeat string instructions |
US7725521B2 (en) | 2001-10-29 | 2010-05-25 | Intel Corporation | Method and apparatus for computing matrix transformations |
US6877020B1 (en) | 2001-12-31 | 2005-04-05 | Apple Computer, Inc. | Method and apparatus for matrix transposition |
US7003542B2 (en) | 2002-01-02 | 2006-02-21 | Intel Corporation | Apparatus and method for inverting a 4×4 matrix |
US7209939B2 (en) | 2002-07-11 | 2007-04-24 | Sun Microsystems, Inc. | Precision improvement method for the Strassen/Winograd matrix multiplication method |
US6944747B2 (en) | 2002-12-09 | 2005-09-13 | Gemtech Systems, Llc | Apparatus and method for matrix data processing |
US7873812B1 (en) | 2004-04-05 | 2011-01-18 | Tibet MIMAR | Method and system for efficient matrix multiplication in a SIMD processor architecture |
US7475222B2 (en) * | 2004-04-07 | 2009-01-06 | Sandbridge Technologies, Inc. | Multi-threaded processor having compound instruction and operation formats |
US20060190517A1 (en) | 2005-02-02 | 2006-08-24 | Guerrero Miguel A | Techniques for transposition of a matrix arranged in a memory as multiple items per word |
US20070186210A1 (en) | 2006-02-06 | 2007-08-09 | Via Technologies, Inc. | Instruction set encoding in a dual-mode computer processing environment |
US8327115B2 (en) * | 2006-04-12 | 2012-12-04 | Soft Machines, Inc. | Plural matrices of execution units for processing matrices of row dependent instructions in single clock cycle in super or separate mode |
US7912889B1 (en) | 2006-06-16 | 2011-03-22 | Nvidia Corporation | Mapping the threads of a CTA to the elements of a tile for efficient matrix multiplication |
US7792895B1 (en) | 2006-06-16 | 2010-09-07 | Nvidia Corporation | Efficient matrix multiplication on a parallel processing device |
US20080071851A1 (en) | 2006-09-20 | 2008-03-20 | Ronen Zohar | Instruction and logic for performing a dot-product operation |
US8122078B2 (en) | 2006-10-06 | 2012-02-21 | Calos Fund, LLC | Processor with enhanced combined-arithmetic capability |
US7797362B2 (en) | 2007-02-23 | 2010-09-14 | Texas Instruments Incorporated | Parallel architecture for matrix transposition |
US8392487B1 (en) | 2007-03-29 | 2013-03-05 | Compass Electro-Optical Systems Ltd | Programmable matrix processor |
US8028015B2 (en) | 2007-08-10 | 2011-09-27 | Inside Contactless S.A. | Method and system for large number multiplication |
US8923510B2 (en) | 2007-12-28 | 2014-12-30 | Intel Corporation | Method and apparatus for efficiently implementing the advanced encryption standard |
US20090210669A1 (en) * | 2008-02-19 | 2009-08-20 | Luick David A | System and Method for Prioritizing Floating-Point Instructions |
US8533251B2 (en) | 2008-05-23 | 2013-09-10 | International Business Machines Corporation | Optimized corner turns for local storage and bandwidth reduction |
US8060730B2 (en) | 2008-05-30 | 2011-11-15 | Freescale Semiconductor, Inc. | Selective MISR data accumulation during exception processing |
US8250130B2 (en) | 2008-05-30 | 2012-08-21 | International Business Machines Corporation | Reducing bandwidth requirements for matrix multiplication |
US20100180100A1 (en) | 2009-01-13 | 2010-07-15 | Mavrix Technology, Inc. | Matrix microprocessor and method of operation |
KR101553648B1 (ko) * | 2009-02-13 | 2015-09-17 | 삼성전자 주식회사 | 재구성 가능한 구조의 프로세서 |
US8539201B2 (en) | 2009-11-04 | 2013-09-17 | International Business Machines Corporation | Transposing array data on SIMD multi-core processor architectures |
US8452946B2 (en) * | 2009-12-17 | 2013-05-28 | Intel Corporation | Methods and apparatuses for efficient load processing using buffers |
US8984043B2 (en) | 2009-12-23 | 2015-03-17 | Intel Corporation | Multiplying and adding matrices |
US8478969B2 (en) | 2010-09-24 | 2013-07-02 | Intel Corporation | Performing a multiply-multiply-accumulate instruction |
US20120113133A1 (en) | 2010-11-04 | 2012-05-10 | Shpigelblat Shai | System, device, and method for multiplying multi-dimensional data arrays |
US9727471B2 (en) | 2010-11-29 | 2017-08-08 | Intel Corporation | Method and apparatus for stream buffer management instructions |
US20120254588A1 (en) | 2011-04-01 | 2012-10-04 | Jesus Corbal San Adrian | Systems, apparatuses, and methods for blending two source operands into a single destination using a writemask |
PL3422178T3 (pl) | 2011-04-01 | 2023-06-26 | Intel Corporation | Przyjazny dla wektorów format instrukcji i jego wykonanie |
US20120314775A1 (en) | 2011-06-08 | 2012-12-13 | Vixs Systems, Inc. | Video decoder with transposing vector processor and methods for use therewith |
US20140149480A1 (en) | 2012-11-28 | 2014-05-29 | Nvidia Corporation | System, method, and computer program product for transposing a matrix |
US9442723B2 (en) | 2012-12-28 | 2016-09-13 | Intel Corporation | Method and apparatus for integral image computation instructions |
US9250916B2 (en) | 2013-03-12 | 2016-02-02 | International Business Machines Corporation | Chaining between exposed vector pipelines |
US9286216B2 (en) | 2014-01-16 | 2016-03-15 | Carnegie Mellon University | 3DIC memory chips including computational logic-in-memory for performing accelerated data processing |
US9766895B2 (en) | 2014-02-06 | 2017-09-19 | Optimum Semiconductor Technologies, Inc. | Opportunity multithreading in a multithreaded processor with instruction chaining capability |
CN106126189B (zh) | 2014-07-02 | 2019-02-15 | 上海兆芯集成电路有限公司 | 微处理器中的方法 |
US20160179523A1 (en) | 2014-12-23 | 2016-06-23 | Intel Corporation | Apparatus and method for vector broadcast and xorand logical instruction |
US10535114B2 (en) | 2015-08-18 | 2020-01-14 | Nvidia Corporation | Controlling multi-pass rendering sequences in a cache tiling architecture |
US10678544B2 (en) * | 2015-09-19 | 2020-06-09 | Microsoft Technology Licensing, Llc | Initiating instruction block execution using a register access instruction |
US10146535B2 (en) | 2016-10-20 | 2018-12-04 | Intel Corporatoin | Systems, apparatuses, and methods for chained fused multiply add |
PL3812900T3 (pl) | 2016-12-31 | 2024-04-08 | Intel Corporation | Systemy, sposoby i aparaty do obliczania heterogenicznego |
-
2018
- 2018-03-30 US US15/942,201 patent/US10664287B2/en active Active
-
2019
- 2019-02-07 JP JP2019020233A patent/JP7481069B2/ja active Active
- 2019-02-13 EP EP22214099.8A patent/EP4170486A1/en active Pending
- 2019-02-13 EP EP19157043.1A patent/EP3547120B1/en active Active
- 2019-02-26 KR KR1020190022370A patent/KR20190114745A/ko not_active Application Discontinuation
- 2019-02-28 CN CN201910151869.9A patent/CN110321159A/zh active Pending
- 2019-02-28 CN CN202211612303.XA patent/CN115686633A/zh active Pending
-
2020
- 2020-04-30 US US16/863,951 patent/US11416260B2/en active Active
-
2022
- 2022-12-20 KR KR1020220179111A patent/KR20230002229A/ko active Application Filing
- 2022-12-20 JP JP2022203407A patent/JP2023051994A/ja active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020108026A1 (en) | 2000-02-09 | 2002-08-08 | Keith Balmer | Data processing apparatus with register file bypass |
JP2010009102A (ja) | 2008-06-24 | 2010-01-14 | Toshiba Corp | キャッシュメモリ、コンピュータシステム、及びメモリアクセス方法 |
US20110035568A1 (en) | 2008-08-15 | 2011-02-10 | Apple Inc. | Select first and select last instructions for processing vectors |
JP2013532855A (ja) | 2010-07-13 | 2013-08-19 | アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド | グラフィクスプロセッサにおけるsimdユニットの動的な有効化及び無効化 |
US20160179551A1 (en) | 2012-06-26 | 2016-06-23 | International Business Machines Corporation | Pipelining out-of-order instructions |
US20160188483A1 (en) | 2014-12-29 | 2016-06-30 | International Business Machines Corporation | Processing page fault exceptions in supervisory software when accessing strings and similar data structures using normal load instructions |
Also Published As
Publication number | Publication date |
---|---|
KR20230002229A (ko) | 2023-01-05 |
EP3547120B1 (en) | 2024-05-29 |
JP2019197531A (ja) | 2019-11-14 |
US10664287B2 (en) | 2020-05-26 |
CN115686633A (zh) | 2023-02-03 |
CN110321159A (zh) | 2019-10-11 |
KR20190114745A (ko) | 2019-10-10 |
US11416260B2 (en) | 2022-08-16 |
JP2023051994A (ja) | 2023-04-11 |
US20190303167A1 (en) | 2019-10-03 |
EP4170486A1 (en) | 2023-04-26 |
US20200387383A1 (en) | 2020-12-10 |
EP3547120A1 (en) | 2019-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7481069B2 (ja) | 連鎖タイル演算を実施するためのシステムおよび方法 | |
US11893389B2 (en) | Systems and methods for performing 16-bit floating-point matrix dot product instructions | |
US11403071B2 (en) | Systems and methods for performing instructions to transpose rectangular tiles | |
US20230229446A1 (en) | Systems and methods to load a tile register pair | |
US10970076B2 (en) | Systems and methods for performing instructions specifying ternary tile logic operations | |
CN110968346A (zh) | 用于执行用于快速元素解包到二维寄存器中的指令的系统 | |
US10922077B2 (en) | Apparatuses, methods, and systems for stencil configuration and computation instructions | |
CN114625423A (zh) | 用于执行将矩阵变换为行交错格式的指令的系统和方法 | |
US20220019438A1 (en) | Systems and methods to zero a tile register pair | |
US20230385059A1 (en) | Systems and methods for computing dot products of nibbles in two tile operands | |
EP4276608A2 (en) | Apparatuses, methods, and systems for 8-bit floating-point matrix dot product instructions | |
US20240143328A1 (en) | Systems and methods to store a tile register pair to memory | |
WO2022066356A1 (en) | Apparatuses, methods, and systems for instructions for 16-bit floating-point matrix dot product instructions | |
US20210406012A1 (en) | Loading and storing matrix data with datatype conversion | |
US20210406016A1 (en) | Matrix data scatter and gather by row | |
CN112149050A (zh) | 用于增强的矩阵乘法器架构的装置、方法和系统 | |
CN110826722A (zh) | 用于通过排序来生成索引并基于排序对元素进行重新排序的系统、装置和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20220131 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20230322 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230621 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20231010 |
|
A524 | Written submission of copy of amendment under article 19 pct |
Free format text: JAPANESE INTERMEDIATE CODE: A524 Effective date: 20231226 |
|
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: 20240326 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20240422 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7481069 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |