TW202333048A - 轉換指令 - Google Patents
轉換指令 Download PDFInfo
- Publication number
- TW202333048A TW202333048A TW111138063A TW111138063A TW202333048A TW 202333048 A TW202333048 A TW 202333048A TW 111138063 A TW111138063 A TW 111138063A TW 111138063 A TW111138063 A TW 111138063A TW 202333048 A TW202333048 A TW 202333048A
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction
- values
- register
- operand
- examples
- Prior art date
Links
- 238000006243 chemical reaction Methods 0.000 title abstract description 24
- 238000007667 floating Methods 0.000 claims abstract description 58
- 238000012545 processing Methods 0.000 claims abstract description 34
- 238000000034 method Methods 0.000 claims abstract description 33
- 230000015654 memory Effects 0.000 claims description 128
- 238000003860 storage Methods 0.000 description 25
- 230000001343 mnemonic effect Effects 0.000 description 24
- 238000006073 displacement reaction Methods 0.000 description 14
- 238000013519 translation Methods 0.000 description 14
- 238000010586 diagram Methods 0.000 description 11
- 230000000295 complement effect Effects 0.000 description 8
- 239000003795 chemical substances by application Substances 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 238000007792 addition Methods 0.000 description 5
- 239000000872 buffer Substances 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000012549 training Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000001066 destructive effect Effects 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 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 1
- 238000009825 accumulation Methods 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000003416 augmentation Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012544 monitoring process 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
- 230000006855 networking Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 230000000717 retained effect Effects 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
- 230000001131 transforming 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
- 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/30025—Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
-
- 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/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/30098—Register arrangements
- G06F9/30105—Register structure
- G06F9/30112—Register structure comprising data of variable length
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biophysics (AREA)
- Biomedical Technology (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Pure & Applied Mathematics (AREA)
- Neurology (AREA)
- Executing Machine-Instructions (AREA)
Abstract
說明用於經由指令之資料類型轉換的技術。一範例性指令係用以包括用於一運算碼、一來源運算元之一識別及目的地運算元之一識別的欄位,其中該運算碼係用以指示指令處理電路系統係要把來自經識別之該來源運算元之奇數16位元浮點值轉換成32位元浮點值,且將該等32位元浮點值儲存於經識別之該目的地運算元的資料元素位置中。
Description
本發明係有關於轉換指令。
發明背景
近年來,具有較低精確度乘法及較高精確度累積的融合乘加(FMA)單元已證明在機器學習/人工智慧應用中係有用的,最顯著的是在訓練深度神經網路中,因為其極端運算強度。相較於經典的IEEE-754 32位元(FP32)及64位元(FP64)算術,此降低之精確度的算術不成比例於其縮短之寬度而可自然地加速。
依據本發明之一實施例,係特地提出一種設備,其包含:解碼器電路系統,其用以解碼一單指令,該單指令用以包括用於一運算碼、一來源運算元之一識別及目的地運算元之一識別的欄位,其中該運算碼係用以指示指令處理電路系統係要將來自經識別之該來源運算元之奇數16位元浮點值轉換成32位元浮點值,且將該等32位元浮點值儲存於經識別之該目的地運算元的資料元素位置中;及指令處理電路系統,其用以根據該運算碼來執行經解碼之該指令。
本揭露內容係有關用於資料元素轉換之方法、設備、系統及非暫時性電腦可讀儲存媒體。
圖1例示不同的浮點表示格式。在此例示中,該等格式呈小在前排列格式,但是,在一些範例中,使用一大在前排列格式。FP32格式101具有一正負號位元(S)、一8位元指數及一23位元分數(使用一隱式位元的一24位元尾數)。FP16格式103具有一正負號位元(S)、一5位元指數及一10位元分數。BF16格式105具有一正負號位元(S)、一8位元指數及一7位元分數。
與IEEE 754標準化16位元(FP16)變體對比,BF16與FP32比較時不折損範圍。FP32數字具有8位元之指數及24位元之尾數(包括一隱式者)。BF16從24位元FP32尾數削除16位元以生成16位元浮點資料類型。對比而言,FP16大致減半FP32尾數至10顯式位元且將指數減小至5位元以相合於16位元資料類型包封。
儘管BF16提供的精確度低於FP16,但其一般較佳合適於支援深度學習任務。由於FP16的有限範圍,所以它的範圍不足以立即可用地來完成深度學習訓練。BF16不受此問題困擾,且此有限的精確度實際上可幫助在神經網路訓練任務中一般化已學習的權重。換言之,可將較低精確度視為提供一內建正則化性質。
並非所有處理器都支援所有資料類型。舉例而言,在一些範例中,下文詳細說明之執行電路系統不具有FP16及/或BF16執行支援。換言之,該執行電路系統不能原生地配合這些格式工作,而轉換至FP32允許該執行電路系統能處置先前未支援的資料類型。如此,無需建構佔據面積且可能消耗更多電力之對FP16及/或BF16之支援。本文中所詳細說明者係指令之範例及其支援,該等指令將一來源之奇數BF16或FP16資料元素轉換成一FP32資料元素,且將該FP32資料元素儲存進一目的地之一或多個資料元素位置中。本文中所詳細說明者係指令之範例及其支援,該等指令將一來源之偶數BF16或FP16資料元素轉換成一FP32資料元素,且將該FP32資料元素儲存進一目的地之一或多個資料元素位置中。
圖2(A)例示單個經解碼之指令的範例性執行,該指令係用以將儲存於來自一來源之偶數資料元素位置中的BF16值轉換成FP32值,且將該等FP32值儲存進一目的地之資料元素位置。應注意的是,在一些範例中,一第一指令集架構之此單指令被轉換成一第二、不同指令集架構之一或多個指令,然而,結果將相同。
用於將儲存於來自一來源之偶數資料元素位置中的BF16值轉換成FP32值,且將該等FP32值儲存進一目的地之資料元素位置的指令之一格式的一範例為VCVTNEEBF162PS DESTINATION、SOURCE。在一些範例中,VCVTNEEBF162PS係該指令的運算碼助憶符。DESTINATION係用於指示一包封資料目的地暫存器運算元的一或多個欄位。SOURCE係用於指示一第一來源的一或多個欄位,諸如包封資料暫存器及/或記憶體位置。應注意的是,運算碼助憶符中之PS表示單精確度或FP32。此外,應注意的是,可使用不同的助憶符,但在此論述中使用VCVTNEEBF162PS作為捷徑。在一些範例中,來源位置係使用至少R/M欄位2546(且在一些範例中,使用MOD欄位2542)來提供,且目的地暫存器係使用暫存器欄位2544來提供。
如所示,一經解碼之VCVTNEEBF162PS指令之執行致使儲存於來自來源201之偶數資料元素位置中的BF16值藉由執行電路系統213或記憶體存取電路系統215之轉換電路系統211至FP32值的一轉換,以及該等FP32值至一目的地231之資料元件位置中的儲存。應注意的是,此例示在來源201中顯示個別BF16值,且目的地231的注記顯示FP32值係從自哪個BF16資料元素轉換的。舉例而言,SRC1[FP32[2]]指示BF16[2]值被轉換。在一些範例中,至FP32之轉換係將16個尾隨的零附加至BF16值。
在一些範例中,此指令之該執行使用一捨入至最接近(偶數)捨入模式。在一些範例中,輸出反正規值總是被清除為零,且輸入反正規值總是被視為零。
圖2(B)例示單個經解碼之指令的範例性執行,該指令係用以將儲存於來自一來源之偶數資料元素位置中的BF16值轉換成FP32值,且將該等FP32值儲存進一目的地之資料元素位置。在此範例中,BF16值係儲存於32位元資料元素之下部16位元中,且來源之32位元資料元素位置係要儲存經轉換之FP32值的資料元素位置。應注意的是,在一些範例中,一第一指令集架構之此單指令被轉換成一第二、不同指令集架構之一或多個指令,然而,結果將相同。
用於將儲存於來自一來源之偶數資料元素位置中的BF16值轉換成FP32值,且將該等FP32值儲存進一目的地之資料元素位置的指令之一格式的一範例為VCVTNEEBF162PS DESTINATION、SOURCE。在一些範例中,VCVTNEEBF162PS係該指令的運算碼助憶符。DESTINATION係用於指示一包封資料目的地暫存器運算元的一或多個欄位。SOURCE係用於指示一第一來源的一或多個欄位,諸如包封資料暫存器及/或記憶體位置。應注意的是,運算碼助憶符中之PS表示單精確度或FP32。此外,應注意的是,可使用不同的助憶符,但在此論述中使用VCVTNEEBF162PS作為捷徑。在一些範例中,來源位置係使用至少R/M欄位2546(且在一些範例中,使用MOD欄位2542)來提供,且目的地暫存器係使用暫存器欄位2544來提供。
如所示,一經解碼之VCVTNEEBF162PS指令之執行致使儲存於來自來源201之偶數資料元素位置中的BF16值藉由執行電路系統213或記憶體存取電路系統215之轉換電路系統211至FP32值的一轉換,以及該等FP32值至一目的地231之資料元件位置中的儲存。應注意的是,此例示在來源201中顯示個別BF16值,且目的地231的注記顯示FP32值係從自哪個BF16資料元素轉換的。在一些範例中,至FP32之轉換係將16個尾隨的零附加至BF16值。
在一些範例中,此指令之該執行使用一捨入至最接近(偶數)捨入模式。在一些範例中,輸出反正規值總是被清除為零,且輸入反正規值總是被視為零。
圖3例示用以處理一VCVTNEEBF162PS指令之方法的範例。在一些範例中,如圖21(B)中所示之一處理器核心、如下文所詳細說明之一管線等施行此方法。在一些範例中,一處理器核心配合一仿真層工作,或包括一個二進位轉譯電路以執行一第二、不同指令集架構(ISA)之一或多個指令以施行VCVTNEEBF162PS指令之操作。
在步驟301處,一單指令具有用於一運算碼、一來源運算元之一識別及目的地運算元之一識別的欄位,其中該運算碼係用以指示執行電路系統及/或記憶體存取電路系統係要把來自經識別之該來源運算元之偶數BF16值轉換成FP32值,且將該等FP32值儲存於經識別之該目的地運算元的資料元素位置中。運算元之識別可針對於一暫存器及/或一記憶體位置。
在一些範例中,在步驟302處,第一指令集的所提取之指令被轉譯成一第二指令集架構的一或多個指令。
在步驟303處,第二指令集之一或多個經轉譯指令被解碼。在一些範例中,轉譯及解碼被合併。
在步驟305處,關聯於經解碼之指令之來源運算元的資料值被擷取且經解碼之指令被排程。舉例而言,當該來源運算元係一記憶體運算元時,來自所指示之記憶體位置的資料被擷取。
在步驟307處,第二指令集的經解碼之指令或經解碼之多個指令係由諸如本文中所詳細說明之執行電路系統(硬體)執行。對於該等VCVTNEEBF162PS指令,此執行將致使執行電路系統根據該等VCVTNEEBF162PS指令之運算碼,把來自經識別之該來源運算元之偶數BF16值轉換成FP32值,且將該等FP32值儲存於經識別之該目的地運算元的資料元素位置中。
在一些範例中,在步驟309處,指令被提交或引退。
圖4例示用於VCVTNEEBF162PS指令之指令編碼的範例。
圖5例示用於VCVTNEEBF162PS指令之指令虛擬碼的範例。
圖6(A)例示單個經解碼之指令的範例性執行,該指令係用以將儲存於來自一來源之奇數資料元素位置中的BF16值轉換成FP32值,且將該等FP32值儲存進一目的地之資料元素位置。應注意的是,在一些範例中,一第一指令集架構之此單指令被轉換成一第二、不同指令集架構之一或多個指令,然而,結果將相同。
用於將儲存於來自一來源之奇數資料元素位置中的BF16值轉換成FP32值,且將該等FP32值儲存進一目的地之資料元素位置的指令之一格式的一範例為VCVTNEOBF162PS DESTINATION、SOURCE。在一些範例中,VCVTNEOBF162PS係該指令的運算碼助憶符。DESTINATION係用於指示一包封資料目的地暫存器運算元的一或多個欄位。SOURCE係用於指示一第一來源的一或多個欄位,諸如包封資料暫存器及/或記憶體位置。應注意的是,運算碼助憶符中之PS表示單精確度或FP32。此外,應注意的是,可使用不同的助憶符,但在此論述中使用VCVTNEOBF162PS作為捷徑。在一些範例中,來源位置係使用至少R/M欄位2546(且在一些範例中,使用MOD欄位2542)來提供,且目的地暫存器係使用暫存器欄位2544來提供。
如所示,一經解碼之VCVTNEOBF162PS指令之執行致使儲存於來自來源601之奇數資料元素位置中的BF16值藉由執行電路系統613或記憶體存取電路系統615之轉換電路系統611至FP32值的一轉換,以及該等FP32值至一目的地631之資料元件位置中的儲存。應注意的是,此例示在來源601中顯示個別BF16值,且目的地631的注記顯示FP32值係從自哪個BF16資料元素轉換的。舉例而言,SRC1[FP32[3]]指示BF16[3]值被轉換。在一些範例中,至FP32之轉換係將16個尾隨的零附加至BF16值。
在一些範例中,此指令之該執行使用一捨入至最接近(奇數)捨入模式。在一些範例中,輸出反正規值總是被清除為零,且輸入反正規值總是被視為零。
圖6(B)例示單個經解碼之指令的範例性執行,該指令係用以將儲存於來自一來源之奇數資料元素位置中的BF16值轉換成FP32值,且將該等FP32值儲存進一目的地之資料元素位置。在此範例中,BF16值係儲存於32位元資料元素之上部16位元中,且來源之32位元資料元素位置係要儲存經轉換之FP32值的資料元素位置。應注意的是,在一些範例中,一第一指令集架構之此單指令被轉換成一第二、不同指令集架構之一或多個指令,然而,結果將相同。
用於將儲存於來自一來源之奇數資料元素位置中的BF16值轉換成FP32值,且將該等FP32值儲存進一目的地之資料元素位置的指令之一格式的一範例為VCVTNEOBF162PS DESTINATION、SOURCE。在一些範例中,VCVTNEOBF162PS係該指令的運算碼助憶符。DESTINATION係用於指示一包封資料目的地暫存器運算元的一或多個欄位。SOURCE係用於指示一第一來源的一或多個欄位,諸如包封資料暫存器及/或記憶體位置。應注意的是,運算碼助憶符中之PS表示單精確度或FP32。此外,應注意的是,可使用不同的助憶符,但在此論述中使用VCVTNEOBF162PS作為捷徑。在一些範例中,來源位置係使用至少R/M欄位2546(且在一些範例中,使用MOD欄位2542)來提供,且目的地暫存器係使用暫存器欄位2544來提供。
如所示,一經解碼之VCVTNEOBF162PS指令之執行致使儲存於來自來源601之奇數資料元素位置中的BF16值藉由執行電路系統613或記憶體存取電路系統615之轉換電路系統611至FP32值的一轉換,以及該等FP32值至一目的地631之資料元件位置中的儲存。應注意的是,此例示在來源601中顯示個別BF16值,且目的地631的注記顯示FP32值係從自哪個BF16資料元素轉換的。舉例而言,SRC1[FP32[3]]指示BF16[3]值被轉換。在一些範例中,至FP32之轉換係將16個尾隨的零附加至BF16值。
在一些範例中,此指令之該執行使用一捨入至最接近(奇數)捨入模式。在一些範例中,輸出反正規值總是被清除為零,且輸入反正規值總是被視為零。
圖7例示用以處理一VCVTNEOBF162PS指令之方法的範例。在一些範例中,如圖21(B)中所示之一處理器核心、如下文所詳細說明之一管線等施行此方法。在一些範例中,一處理器核心配合一仿真層工作,或包括一個二進位轉譯電路以執行一第二、不同指令集架構(ISA)之一或多個指令以施行VCVTNEOBF162PS指令之操作。
在步驟701處,一單指令具有用於一運算碼、一來源運算元之一識別及目的地運算元之一識別的欄位,其中該運算碼係用以指示執行電路系統及/或記憶體存取電路系統係要把來自經識別之該來源運算元之奇數BF16值轉換成FP32值,且將該等FP32值儲存於經識別之該目的地運算元的資料元素位置中。運算元之識別可針對於一暫存器及/或一記憶體位置。
在一些範例中,在步驟702處,第一指令集的所提取之指令被轉譯成一第二指令集架構的一或多個指令。
在步驟703處,第二指令集之一或多個經轉譯指令被解碼。在一些範例中,轉譯及解碼被合併。
在步驟705處,關聯於經解碼之指令之來源運算元的資料值被擷取且經解碼之指令被排程。舉例而言,當該來源運算元係一記憶體運算元時,來自所指示之記憶體位置的資料被擷取。
在步驟707處,第二指令集的經解碼之指令或經解碼之多個指令係由諸如本文中所詳細說明之執行電路系統(硬體)執行。對於該等VCVTNEOBF162PS指令,此執行將致使執行電路系統根據該等VCVTNEOBF162PS指令之運算碼,把來自經識別之該來源運算元之奇數BF16值轉換成FP32值,且將該等FP32值儲存於經識別之該目的地運算元的資料元素位置中。
在一些範例中,在步驟709處,指令被提交或引退。
圖8例示用於VCVTNEOBF162PS指令之指令編碼的範例。
圖9例示用於VCVTNEOBF162PS指令之指令虛擬碼的範例。
圖10(A)例示單個經解碼之指令的範例性執行,該指令係用以將儲存於來自一來源之偶數資料元素位置中的FP16值轉換成FP32值,且將該等FP32值儲存進一目的地之資料元素位置。應注意的是,在一些範例中,一第一指令集架構之此單指令被轉換成一第二、不同指令集架構之一或多個指令,然而,結果將相同。
用於將儲存於來自一來源之偶數資料元素位置中的FP16值轉換成FP32值,且將該等FP32值儲存進一目的地之資料元素位置的指令之一格式的一範例為VCVTNEEPH2PS DESTINATION、SOURCE。在一些範例中,VCVTNEEPH2PS係該指令的運算碼助憶符。DESTINATION係用於指示一包封資料目的地暫存器運算元的一或多個欄位。SOURCE係用於指示一第一來源的一或多個欄位,諸如包封資料暫存器及/或記憶體位置。應注意的是,運算碼助憶符中之PS表示單精確度或FP32。此外,應注意的是,可使用不同的助憶符,但在此論述中使用VCVTNEEPH2PS作為捷徑。在一些範例中,來源位置係使用至少R/M欄位2546(且在一些範例中,使用MOD欄位2542)來提供,且目的地暫存器係使用暫存器欄位2544來提供。
如所示,一經解碼之VCVTNEEPH2PS指令之執行致使儲存於來自來源1001之偶數資料元素位置中的FP16值藉由執行電路系統1013或記憶體存取電路系統1015之轉換電路系統1011至FP32值的一轉換,以及該等FP32值至一目的地1031之資料元件位置中的儲存。應注意的是,此例示在來源1001中顯示個別FP16值,且目的地1031的注記顯示FP32值係從自哪個FP16資料元素轉換的。舉例而言,SRC1[FP32[2]]指示FP16[2]值被轉換。在一些範例中,至FP32之轉換係將16個尾隨的零附加至FP16值。
在一些範例中,此指令之該執行使用一捨入至最接近(偶數)捨入模式。在一些範例中,輸出反正規值總是被清除為零,且輸入反正規值總是被視為零。
圖10(B)例示單個經解碼之指令的範例性執行,該指令係用以將儲存於來自一來源之偶數資料元素位置中的FP16值轉換成FP32值,且將該等FP32值儲存進一目的地之資料元素位置。在此範例中,FP16值係儲存於32位元資料元素之下部16位元中,且來源之32位元資料元素位置係要儲存經轉換之FP32值的資料元素位置。應注意的是,在一些範例中,一第一指令集架構之此單指令被轉換成一第二、不同指令集架構之一或多個指令,然而,結果將相同。
用於將儲存於來自一來源之偶數資料元素位置中的FP16值轉換成FP32值,且將該等FP32值儲存進一目的地之資料元素位置的指令之一格式的一範例為VCVTNEEPH2PS DESTINATION、SOURCE。在一些範例中,VCVTNEEPH2PS係該指令的運算碼助憶符。DESTINATION係用於指示一包封資料目的地暫存器運算元的一或多個欄位。SOURCE係用於指示一第一來源的一或多個欄位,諸如包封資料暫存器及/或記憶體位置。應注意的是,運算碼助憶符中之PS表示單精確度或FP32。此外,應注意的是,可使用不同的助憶符,但在此論述中使用VCVTNEEPH2PS作為捷徑。在一些範例中,來源位置係使用至少R/M欄位2546(且在一些範例中,使用MOD欄位2542)來提供,且目的地暫存器係使用暫存器欄位2544來提供。
如所示,一經解碼之VCVTNEEPH2PS指令之執行致使儲存於來自來源1001之偶數資料元素位置中的FP16值藉由執行電路系統1013或記憶體存取電路系統1015之轉換電路系統1011至FP32值的一轉換,以及該等FP32值至一目的地1031之資料元件位置中的儲存。應注意的是,此例示在來源1001中顯示個別FP16值,且目的地1031的注記顯示FP32值係從自哪個FP16資料元素轉換的。舉例而言,SRC1[FP32[2]]指示FP16[2]值被轉換。在一些範例中,至FP32之轉換係將16個尾隨的零附加至FP16值。
在一些範例中,此指令之該執行使用一捨入至最接近(偶數)捨入模式。在一些範例中,輸出反正規值總是被清除為零,且輸入反正規值總是被視為零。
圖11例示用以處理一VCVTNEEPH2PS指令之方法的範例。在一些範例中,如圖21(B)中所示之一處理器核心、如下文所詳細說明之一管線等施行此方法。在一些範例中,一處理器核心配合一仿真層工作,或包括一個二進位轉譯電路以執行一第二、不同指令集架構(ISA)之一或多個指令以施行VCVTNEEPH2PS指令之操作。
在步驟1101處,一單指令具有用於一運算碼、一來源運算元之一識別及目的地運算元之一識別的欄位,其中該運算碼係用以指示執行電路系統及/或記憶體存取電路系統係要把來自經識別之該來源運算元之偶數FP16值轉換成FP32值,且將該等FP32值儲存於經識別之該目的地運算元的資料元素位置中。運算元之識別可針對於一暫存器及/或一記憶體位置。
在一些範例中,在步驟1102處,第一指令集的所提取之指令被轉譯成一第二指令集架構的一或多個指令。
在步驟1103處,第二指令集之一或多個經轉譯指令被解碼。在一些範例中,轉譯及解碼被合併。
在步驟1105處,關聯於經解碼之指令之來源運算元的資料值被擷取且經解碼之指令被排程。舉例而言,當該來源運算元係一記憶體運算元時,來自所指示之記憶體位置的資料被擷取。
在步驟1107處,第二指令集的經解碼之指令或經解碼之多個指令係由諸如本文中所詳細說明之執行電路系統(硬體)執行。對於該等VCVTNEEPH2PS指令,此執行將致使執行電路系統根據該等VCVTNEEPH2PS指令之運算碼,把來自經識別之該來源運算元之偶數FP16值轉換成FP32值,且將該等FP32值儲存於經識別之該目的地運算元的資料元素位置中。
在一些範例中,在步驟1109處,指令被提交或引退。
圖12例示用於VCVTNEEPH2PS指令之指令編碼的範例。
圖13例示用於VCVTNEEPH2PS指令之指令虛擬碼的範例。
圖14(A)例示單個經解碼之指令的範例性執行,該指令係用以將儲存於來自一來源之奇數資料元素位置中的FP16值轉換成FP32值,且將該等FP32值儲存進一目的地之資料元素位置。應注意的是,在一些範例中,一第一指令集架構之此單指令被轉換成一第二、不同指令集架構之一或多個指令,然而,結果將相同。
用於將儲存於來自一來源之奇數資料元素位置中的FP16值轉換成FP32值,且將該等FP32值儲存進一目的地之資料元素位置的指令之一格式的一範例為VCVTNEOPH2PS DESTINATION、SOURCE。在一些範例中,VCVTNEOPH2PS係該指令的運算碼助憶符。DESTINATION係用於指示一包封資料目的地暫存器運算元的一或多個欄位。SOURCE係用於指示一第一來源的一或多個欄位,諸如包封資料暫存器及/或記憶體位置。應注意的是,運算碼助憶符中之PS表示單精確度或FP32。此外,應注意的是,可使用不同的助憶符,但在此論述中使用VCVTNEOPH2PS作為捷徑。在一些範例中,來源位置係使用至少R/M欄位2546(且在一些範例中,使用MOD欄位2542)來提供,且目的地暫存器係使用暫存器欄位2544來提供。
如所示,一經解碼之VCVTNEOPH2PS指令之執行致使儲存於來自來源1401之奇數資料元素位置中的FP16值藉由執行電路系統1413或記憶體存取電路系統1415之轉換電路系統1411至FP32值的一轉換,以及該等FP32值至一目的地1431之資料元件位置中的儲存。應注意的是,此例示在來源1401中顯示個別FP16值,且目的地1431的注記顯示FP32值係從自哪個FP16資料元素轉換的。舉例而言,SRC1[FP32[3]]指示FP16[3]值被轉換。
在一些範例中,此指令之該執行使用一捨入至最接近(奇數)捨入模式。在一些範例中,輸出反正規值總是被清除為零,且輸入反正規值總是被視為零。
圖14(B)例示單個經解碼之指令的範例性執行,該指令係用以將儲存於來自一來源之奇數資料元素位置中的FP16值轉換成FP32值,且將該等FP32值儲存進一目的地之資料元素位置。在此範例中,FP16值係儲存於32位元資料元素之上部16位元中,且來源之32位元資料元素位置係要儲存經轉換之FP32值的資料元素位置。應注意的是,在一些範例中,一第一指令集架構之此單指令被轉換成一第二、不同指令集架構之一或多個指令,然而,結果將相同。
用於將儲存於來自一來源之奇數資料元素位置中的FP16值轉換成FP32值,且將該等FP16值儲存進一目的地之資料元素位置的指令之一格式的一範例為VCVTNEOPH2PS DESTINATION、SOURCE。在一些範例中,VCVTNEOPH2PS係該指令的運算碼助憶符。DESTINATION係用於指示一包封資料目的地暫存器運算元的一或多個欄位。SOURCE係用於指示一第一來源的一或多個欄位,諸如包封資料暫存器及/或記憶體位置。應注意的是,運算碼助憶符中之PS表示單精確度或FP32。此外,應注意的是,可使用不同的助憶符,但在此論述中使用VCVTNEOPH2PS作為捷徑。在一些範例中,來源位置係使用至少R/M欄位2546(且在一些範例中,使用MOD欄位2542)來提供,且目的地暫存器係使用暫存器欄位2544來提供。
如所示,一經解碼之VCVTNEOPH2PS指令之執行致使儲存於來自來源1401之奇數資料元素位置中的FP16值藉由執行電路系統1413或記憶體存取電路系統1415之轉換電路系統1411至FP32值的一轉換,以及該等FP32值至一目的地1431之資料元件位置中的儲存。應注意的是,此例示在來源1401中顯示個別FP16值,且目的地1431的注記顯示FP32值係從自哪個FP16資料元素轉換的。
在一些範例中,此指令之該執行使用一捨入至最接近(奇數)捨入模式。在一些範例中,輸出反正規值總是被清除為零,且輸入反正規值總是被視為零。
圖15例示用以處理一VCVTNEOPH2PS指令之方法的範例。在一些範例中,如圖21(B)中所示之一處理器核心、如下文所詳細說明之一管線等施行此方法。在一些範例中,一處理器核心配合一仿真層工作,或包括一個二進位轉譯電路以執行一第二、不同指令集架構(ISA)之一或多個指令以施行VCVTNEOPH2PS指令之操作。
在步驟1501處,一單指令具有用於一運算碼、一來源運算元之一識別及目的地運算元之一識別的欄位,其中該運算碼係用以指示執行電路系統及/或記憶體存取電路系統係要把來自經識別之該來源運算元之奇數FP16值轉換成FP32值,且將該等FP32值儲存於經識別之該目的地運算元的資料元素位置中。運算元之識別可針對於一暫存器及/或一記憶體位置。
在一些範例中,在步驟1502處,第一指令集的所提取之指令被轉譯成一第二指令集架構的一或多個指令。
在步驟1503處,第二指令集之一或多個經轉譯指令被解碼。在一些範例中,轉譯及解碼被合併。
在步驟1505處,關聯於經解碼之指令之來源運算元的資料值被擷取且經解碼之指令被排程。舉例而言,當該來源運算元係一記憶體運算元時,來自所指示之記憶體位置的資料被擷取。
在步驟1507處,第二指令集的經解碼之指令或經解碼之多個指令係由諸如本文中所詳細說明之執行電路系統(硬體)執行。對於該等VCVTNEOPH2PS指令,此執行將致使執行電路系統根據該等VCVTNEOPH2PS指令之運算碼,把來自經識別之該來源運算元之奇數FP16值轉換成FP32值,且將該等FP32值儲存於經識別之該目的地運算元的資料元素位置中。
在一些範例中,在步驟1509處,指令被提交或引退。
圖16例示用於VCVTNEOPH2PS指令之指令編碼的範例。
圖17例示用於VCVTNEOPH2PS指令之指令虛擬碼的範例。
圖18例示用以處理諸如上文詳細說明之指令中之任一者之一指令之硬體的範例。如所例示,儲存器1803儲存將被執行之上文詳細說明之指令中之一或多者。
指令1801係由解碼電路系統1805所接收。舉例而言,解碼電路系統1805係從提取邏輯/電路系統接收此指令。指令包括用於一運算碼、第一及/或第二來源及一目的地的欄位。在一些範例中,來源及目的地為暫存器,而在其他範例中,一或多者為記憶體位置。
至少一種指令格式之更詳細範例將於稍後詳細說明。解碼電路系統1805將該指令解碼成一或多個運算。在一些範例中,此解碼包括產生將由執行電路系統(諸如,執行電路系統1809)施行之複數個微運算。解碼電路系統1805亦解碼指令首碼。
在一些範例中,暫存器重命名、暫存器分配、及/或排程電路系統1807提供以下之一或多者之功能性:1)將邏輯運算元值重命名成實體運算元值(例如,一些範例中之一暫存器別名表),2)分配狀態位元及旗標至經解碼之該指令,以及3)排程出自一指令池以供在執行電路系統上執行的經解碼之該指令(例如,在一些範例中使用一保留站)。
暫存器(暫存器檔案夾)及/或記憶體1808將資料儲存為將受執行電路系統1809操作之指令之運算元。範例性暫存器類型包括包封資料暫存器、通用暫存器及浮點暫存器。
執行電路系統1809根據該運算碼來執行經解碼之該指令。圖2、18、21等中顯示範例性詳細執行電路系統。
在一些範例中,引退/回寫電路系統1811架構性地提交目的地暫存器至暫存器或記憶體1808中,並且使指令引退。
下文詳細說明者係電腦架構、系統、核心、指令格式等之範例,其支援上文詳細說明之一或多個範例。
範例性電腦架構
下文詳細說明者係範例性電腦架構之說明。用於膝上型電腦、桌上型電腦及手持式PC之業界所知的其他系統設計及組配、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、行動電話、可攜式媒體播放器、手持式裝置及各種其他電子裝置亦係合適的。通常而言,能夠併入如本文所揭露之一處理器及/或其他執行邏輯之種類繁多的系統或電子裝置通常係合適的。
圖19例示一範例性系統的範例。多處理器系統1900係一點對點互連系統且包括經由一點對點互連件1950耦接之複數個處理器,包括一第一處理器1970及一第二處理器1980。在一些範例中,第一處理器1970及第二處理器1980係同質的。在一些範例中,第一處理器1970及第二處理器1980係異質的。
處理器1970及1980顯示為分別包括整合式記憶體控制器(IMC)單元電路系統1972及1982。處理器1970亦包括點對點(P-P)介面1976及1978作為其互連控制器單元之部分;相似地,第二處理器1980包括P-P介面1986及1988。處理器1970、1980可使用P-P介面電路1978、1988經由點對點(P-P)互連件1950交換資訊。IMC 1972及1982將處理器1970、1980耦接至個別記憶體,亦即記憶體1932及記憶體1934,其可為區域地附接至個別處理器之主記憶體的部分。
處理器1970、1980各自可使用點對點介面電路1976、1994、1986、1998經由個別P-P互連件1952、1954與一晶片組1990交換資訊。晶片組1990可任擇地經由一高效能介面1992與一共處理器1938交換資訊。在一些範例中,共處理器1938為特定用途處理器,舉例而言,諸如高處理量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器或類似者。
一共享快取記憶體(未示出)可被包括於處理器1970、1980中或位在兩個處理器的外部,再經由P-P互連件與處理器連接,以使得當處理器係處於低功率模式中時,處理器之本地快取記憶體資訊任一者或兩者可被儲存於共享快取記憶體中。
晶片組1990可經由一介面1996耦接至一第一互連件1916。在一些範例中,第一互連件1916可係一周邊組件互連(PCI)互連件,或諸如一快速PCI互連件或另一I/O互連件的一互連件。在一些範例中,該等互連件中之一者係耦接至電源控制單元(PCU)1917,其可包括電路系統、軟體及/或韌體以施行有關於處理器1970、1980及/或共處理器1938之電源管理操作。PCU 1917將控制資訊提供至一電壓調節器以致使該電壓調節器產生適當經調節之電壓。PCU 1917亦提供控制資訊以控制所產生之操作電壓。在各種範例中,PCU 1917可包括用以施行硬體式電源管理的多種電源管理邏輯單元(電路系統)。此種電源管理可完全由處理器所控制(例如,由各種處理器硬體控制,且其可由工作負載及/或功率、熱或其他處理器制約所觸發)及/或電源管理可響應於外部來源(諸如,一平台或電源管理源或系統軟體)而施行。
PCU 1917被例示為與處理器1970及/或處理器1980分開的邏輯而存在。在其他狀況下,PCU 1917可在處理器1970或1980之核心(未示出)中給定之一或多者上執行。在一些狀況下,PCU 1917可實行為一微控制器(專用或通用)或其他組配來執行其自身之專用電源管理碼的控制邏輯,有時被稱作P代碼。而在又其他範例中,將由PCU 1917施行之電源管理操作可在處理器外部實行,諸如用作一單獨的電源管理積體電路(PMIC)或在處理器外部之另一組件。而在又其他範例中,將由PCU 1917施行之電源管理操作可在BIOS或其他系統軟體內部實行。
各種I/O裝置1914可耦接至第一互連件1916,連帶耦接至互連件(匯流排)橋接器1918,此互連件(匯流排)橋接器1918將第一互連件1916耦接至第二互連件1920。在一些範例中,一或多個額外處理器1915,諸如共處理器、高處理量MIC處理器、GPGPU、加速器(諸如例如圖形加速器或數位信號處理(DSP)單元)、現場可程式化閘陣列(FPGA)或任何其他的處理器係被耦接至第一互連件1916。在一些範例中,第二互連件1920可係一低接腳計數(LPC)互連件。各種裝置可被耦接至第二互連件1920,包括例如鍵盤及/或滑鼠1922、通訊裝置1927及儲存單元電路系統1928。在一些範例中,儲存單元電路系統1928係磁碟機或可包括指令/程式碼及資料1930之其他大容量儲存裝置。另外,音訊I/O 1924可被耦接至第二互連件1920。應注意的是,不同於上文說明之點對點架構的其他架構係可能的。舉例而言,取代點對點架構,諸如多處理器系統1900的系統可實行多點互連件或其他此種架構。
範例性核心架構、處理器以及電腦架構
處理器核心可出於不同目的而以不同方式被實行,且可位在不同處理器中。舉例來說,此等核心之實行方式可包括:1)意欲用於通用運算的通用有序核心;2)意欲用於通用運算的高效能通用無序核心;3)主要意欲用於圖形及/或科學(處理量)運算的特定用途核心。不同處理器之實行方式可包括:1)一CPU,其包括意欲用於通用運算的一或多個通用有序核心及/或意欲用於通用運算的一或多個通用無序核心;以及2)一共處理器,其包括主要意欲用於圖形及/或科學(處理量)的一或多個特定用途核心。此等不同的處理器導致不同的電腦系統架構,其可包括:1)在與CPU分開之晶片上的共處理器;2)在與CPU相同之封裝中之分開晶粒上的共處理器;3)在與CPU相同之晶粒上的共處理器(在此狀況下,此一共處理器有時被稱為專用邏輯,諸如整合式圖形及/或科學(處理量)邏輯,或作為專用核心);及4)系統單晶片,其在如所描述的CPU(有時被稱為應用程式核心或應用程式處理器)之相同的晶粒上可包括前文所述之共處理器及額外的功能性。接下來說明範例性核心架構,接著為範例性處理器及電腦架構之說明。
圖20例示可具有多於一核心、可具有一整合式記憶體控制器且可具有整合式圖形之一處理器2000之範例的方塊圖。實線框例示具有單個核心2002A、系統代理2010、及一組一或多個互連控制器單元電路系統2016的處理器2000,而任擇的虛線框之添加例示出具有多個核心2002(A)-(N)、系統代理單元電路系統2010中之一組一或多個整合式記憶體控制器單元電路系統2014及特定用途邏輯2008、以及一組一或多個互連控制器單元電路系統2016之替代的處理器2000。應注意的是,處理器2000可為圖19之處理器1970或1980、或共處理器1938或1915中之一者。
因此,處理器2000之不同實行方式可包括:1)一CPU,其具有為整合式圖形及/或科學(處理量)邏輯(其可包括一或多個核心,未示出)的特定用途邏輯2008,以及為一或多個通用核心(例如,通用有序核心、通用無序核心、或兩者之一組合)的核心2002(A)-(N);2)一共處理器,其具有為主要意欲用於圖形及/或科學(處理量)之大量特定用途核心的核心2002(A)-(N);及3)一共處理器,其具有為大量通用有序核心的核心2002(A)-(N)。因此,處理器2000可為一通用處理器、共處理器或特定用途處理器,舉例而言諸如一網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元電路系統)、一高處理量多整合式核心(MIC)共處理器(包括30或更多個核心)、嵌入式處理器、或類似者。該處理器可被實行於一或多個晶片上。處理器2000可為使用數種製程技術中之任一者而為一或多個基體之部分及/或可在一或多個基體上被實行,例如,此多種製程技術諸如BiCMOS、CMOS或NMOS。
一記憶體階層包括在核心2002(A)-(N)內部之一或多個快取記憶體單元電路系統2004(A)-(N)層級、一組一或多個共享快取記憶體單元電路系統2006、及耦接至該組整合式記憶體控制器單元電路系統2014的外部記憶體(未示出)。該組一或多個共享快取記憶體單元電路系統2006可包括一或多個中間層級快取記憶體,諸如層級2(L2)、層級3(L3)、層級4(L4)、或諸如一最末級快取記憶體(LLC)之其他層級之快取記憶體、及/或其之組合。儘管在一些範例中,以環形為基之互連網路電路系統2012互連特定用途邏輯2008(例如,整合式圖形邏輯)、該組共享快取記憶體單元電路系統2006及系統代理單元電路系統2010,替代範例使用任何數目之熟知技術用於互連此等單元。在一些範例中,在共享快取記憶體單元電路系統2006及核心2002(A)-(N)中之一或多者之間維持一致性。
在一些範例中,核心2002(A)-(N)中之一或多者能夠有多執行緒。系統代理單元電路系統2010包括那些協調及操作核心2002(A)-(N)之組件。系統代理單元電路系統2010可包括例如電源控制單元(PCU)電路系統及/或顯示單元電路系統(未示出)。PCU可為或可包括用於調節核心2002(A)-(N)及/或特定用途邏輯2008(例如,整合式圖形邏輯)之電力狀態所需的邏輯及組件。該顯示器單元電路系統係用於驅動一或多個外部連接之顯示器。
核心2002(A)-(N)就架構指令集而言可係同質或異質的;亦即,核心2002(A)-(N)中之二或更多者可能能夠執行相同指令集,而其他核心可能能夠僅執行該指令集或一不同指令集的一子集。
範例性核心架構 有序及無序核心方塊圖
圖21(A)為根據範例例示一範例性有序管線及一範例性暫存器重命名、無序發布/執行管線兩者的方塊圖。圖21(B)為根據範例例示將被包括在一處理器中的一有序架構核心之一範例性範例及一範例性暫存器重命名、無序發布/執行架構核心兩者的方塊圖。圖21(A)-(B)中之實線框例示有序管線及有序核心,而任擇的虛線框之添加例示暫存器重命名、無序發布/執行管線及核心。考慮到有序態樣為無序態樣之子集,無序態樣將被說明。
在圖21(A)中,一處理器管線2100包括一提取級2102、一任擇的長度解碼級2104、一解碼級2106、一任擇的分配級2108、一任擇的重命名級2110、一排程(亦被稱為一分派或發布)級2112、一任擇的暫存器讀取/記憶體讀取級2114、一執行級2116、一回寫/記憶體寫入級2118、一任擇的例外處置級2122及一任擇的提交級2124。可在這些處理器管線級之每一者中施行一或多個操作。舉例而言,在提取級2102期間,一或多個指令從指令記憶體被提取,在解碼級2106期間,該等一或多個所提取指令可被解碼、使用轉遞暫存器埠之位址(例如,負載儲存單元(LSU)位址)可被產生、以及分支轉遞(例如,立即偏移或一鏈結暫存器(LR))可被施行。在一範例中,解碼級2106及暫存器讀取/記憶體讀取級2114可被組合至一個管線級中。在一範例中,在執行級2116期間,經解碼之指令可被執行、管線送至進階微控制器匯流排(AHB)介面中之LSU位址/資料可被施行、乘法及加法運算可被施行、具有分支結果之算術運算可被施行等。
舉例來說,範例性暫存器重命名、無序發布/執行核心架構可如下來實行管線2100:1)指令提取2138施行提取及長度解碼級2102與2104;2)解碼單元電路系統2140施行解碼級2106;3)重命名/分配器單元電路系統2152施行分配級2108及重命名級2110;4)排程器單元電路系統2156施行排程級2112;5)實體暫存器檔案夾單元電路系統2158及記憶體單元電路系統2170施行暫存器讀取/記憶體讀取級2114;執行叢集2160施行執行級2116;6)記憶體單元電路系統2170及實體暫存器檔案夾單元電路系統2158施行回寫/記憶體寫入級2118;7)各種單元(單元電路系統)可涉及例外處置級2122;以及8)引退單元電路系統2154及實體暫存器檔案夾單元電路系統2158施行提交級2124。
圖21(B)顯示處理器核心2190,其包括耦接至一執行引擎單元電路系統2150的前端單元電路系統2130,且兩者皆被耦接至一記憶體單元電路系統2170。核心2190可為精簡指令集運算(RISC)核心、複雜指令集運算(CISC)核心、極長指令字(VLIW)核心、或混合式或替代式核心類型。而作為又另一選項,核心2190可為特定用途核心,舉例而言,諸如網路或通訊核心、壓縮引擎、共處理器核心、通用運算圖形處理單元(GPGPU)核心、圖形核心或類似者。
前端單元電路系統2130可包括耦接至指令快取記憶體單元電路系統2134之分支預測單元電路系統2132,指令快取記憶體單元電路系統2134被耦接至指令轉譯後備緩衝器(TLB)2136,指令轉譯後備緩衝器2136被耦接至指令提取單元電路系統2138,指令提取單元電路系統2138被耦接至解碼單元電路系統2140。在一範例中,指令快取記憶體單元電路系統2134被包括在記憶體單元電路系統2170中,而非在前端單元電路系統2130中。解碼單元電路系統2140(或解碼器)可解碼指令,並產生一或多個微運算、微碼進入點、微指令、其他指令、或其他控制信號作為輸出,其等係從原始指令解碼、或以其他方式反映或導自原始指令。解碼單元電路系統2140可進一步包括位址產生單元電路系統(AGU,未示出)。在一範例中,該AGU使用轉遞之暫存器埠產生LSU位址,並且可進一步施行分支轉遞(例如,立即偏移分支轉遞、LR暫存器分支轉遞等)。解碼單元電路系統2140可使用各種不同的機制來實行。合適機制之範例包括但不限於查找表、硬體實行方式、可程式化邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等。在一範例中,核心2190包括儲存用於特定微指令(例如,在解碼單元電路系統2140中或以其他方式在前端單元電路系統2130內部)之微碼的微碼ROM(未示出)或其他的媒體。在一範例中,解碼單元電路系統2140包括用以保持/快取在處理器管線2100之解碼或其他級期間所產生之經解碼的運算、微標籤或微運算之一微運算(micro-op)或運算快取記憶體(未示出)。解碼單元電路系統2140可被耦接至執行引擎單元電路系統2150中之重命名/分配器單元電路系統2152。
執行引擎電路系統2150包括耦接至引退單元電路系統2154及一組一或多個排程器電路系統2156的重命名/分配器單元電路系統2152。排程器電路系統2156代表任何數目的不同排程器,包括保留站、中央指令窗等。在一些範例中,排程器電路系統2156可包括算術邏輯單元(ALU)排程器/排程電路系統、ALU佇列、算術產生單元(AGU)排程器/排程電路系統、AGU佇列等。排程器電路系統2156係耦接至實體暫存器檔案夾電路系統2158。實體暫存器檔案夾電路系統2158中之每一者代表一或多個實體暫存器檔案夾,其中不同的實體暫存器檔案夾儲存一或多個不同資料類型,諸如純量整數、純量浮點、包封整數、包封浮點、向量整數、向量浮點、狀態(例如,將被執行之下一指令的位址之一指令指標)等。在一範例中,實體暫存器檔案夾單元電路系統2158包括向量暫存器單元電路系統、寫入遮罩暫存器單元電路系統及純量暫存器單元電路系統。這些暫存器單元可提供架構向量暫存器、向量遮罩暫存器、通用暫存器等。實體暫存器檔案夾單元電路系統2158係被引退單元電路系統2154(亦被稱為一退出佇列或一引退佇列)所重疊,以例示暫存器重命名及無序執行可被實行之各種方式(例如,使用重排序緩衝器(ROB)及引退暫存器檔案夾;使用未來檔案、歷史緩衝器及引退暫存器檔案夾;使用暫存器映像及暫存器池;等)。引退單元電路系統2154及實體暫存器檔案夾電路系統2158係耦接至執行叢集2160。執行叢集2160包括一組一或多個執行單元電路系統2162及一組一或多個記憶體存取電路系統2164。執行單元電路系統2162可施行各種算術、邏輯、浮點或其他類型之操作(例如,移位、加法、減法、乘法)且針對各種類型之資料(例如,純量浮點、包封整數、包封浮點、向量整數、向量浮點)施行。儘管一些範例可包括專用於特定功能或功能集合之數個執行單元或執行單元電路系統,但其他範例可包括僅一個執行單元電路系統或皆施行所有功能之多個執行單元/執行單元電路系統。排程器電路系統2156、實體暫存器檔案夾單元電路系統2158及執行叢集2160被顯示為可能係複數個,因為某些範例生成用於某些類型之資料/運算之單獨管線(例如,各自具有其自身排程器電路系統、實體暫存器檔案夾單元電路系統及/或執行叢集的純量整數管線、純量浮點/包封整數/包封浮點/向量整數/向量浮點管線及/或記憶體存取管線──且在一單獨記憶體存取管線之狀況下,可實行僅此管線之執行叢集具有記憶體存取單元電路系統2164之某些範例)。亦應理解,在使用單獨管線之情況下,這些管線中之一或多者可為無序發布/執行且其餘部分為有序的。
在一些範例中,執行引擎單元電路系統2150可施行載入儲存單元(LSU)位址/資料管線至進階微控制器匯流排(AHB)介面(未示出),及施行位址相位及回寫、資料相位載入、儲存及分支。
該組記憶體存取電路系統2164係耦接至記憶體單元電路系統2170,記憶體單元電路系統2170包括耦接至資料快取記憶體電路系統2174之資料TLB單元電路系統2172,資料快取記憶體電路系統2174耦接至層級2(L2)快取記憶體電路系統2176。在一範例性範例中,記憶體存取單元電路系統2164可包括載入單元電路系統、儲存位址單元電路及儲存資料單元電路系統,其中之每一者係耦接至記憶體單元電路系統2170中之資料TLB電路系統2172。指令快取記憶體電路系統2134係進一步耦接至記憶體單元電路系統2170中之層級2(L2)快取記憶體單元電路系統2176。在一範例中,指令快取記憶體2134及資料快取記憶體2174被組合至L2快取記憶體單元電路系統2176中之單指令及資料快取記憶體(未示出)、層級3(L3)快取記憶體單元電路系統(未示出),及/或主記憶體。L2快取記憶體單元電路系統2176係耦接至一或多個其他層級之快取記憶體且最終耦接至主記憶體。
核心2190可支援包括本文所說明的指令之一或多個指令集(例如,x86指令集(具有已新增有較新版本之一些延伸);MIPS指令集;ARM指令集(具有諸如NEON之任擇額外延伸))。在一範例中,核心2190包括用以支援包封資料指令集延伸(例如,AVX1、AVX2)的邏輯,藉此允許由許多多媒體應用程式所使用的操作將使用包封資料來被施行。
範例性執行單元電路系統
圖22例示執行單元電路系統的範例,諸如圖21(B)之執行單元電路系統2162。如所例示,執行單元電路2162可包括一或多個ALU電路2201、向量/SIMD單元電路2203、載入/儲存單元電路2205及/或分支/跳轉單元電路2207。ALU電路2201施行整數算術及/或布林運算。向量/SIMD單元電路2203對包封資料(諸如SIMD/向量暫存器)施行向量/SIMD運算。載入/儲存單元電路2205執行載入及儲存指令以將來自記憶體的資料載入進暫存器中或從暫存器儲存至記憶體。載入/儲存單元電路2205亦可產生位址。分支/跳轉單元電路2207取決於該指令而造成分支或跳轉至一記憶體位址。浮點單元(FPU)電路2209施行浮點算術。執行單元電路系統2162之寬度取決於範例而變化且可在16位元至1,024位元之範圍內。在一些範例中,二或更多個較小執行單元被邏輯式組合以形成一較大執行單元(例如,二個128位元執行單元係經邏輯式組合以形成一256位元執行單元)。
範例性暫存器架構
圖23為根據一些範例之一暫存器架構2300的方塊圖。如所例示,存在有從128位元變化至1,024位元寬度的向量/SIMD暫存器2310。在一些範例中,向量/SIMD暫存器2310係實體上512位元,且取決於映射,僅一些較低位元被使用。舉例而言,在一些範例中,向量/SIMD暫存器2310為ZMM暫存器,其為512個位元:較低之256位元係用於YMM暫存器,且較低之128位元係用於XMM暫存器。如此,有一暫存器之疊覆。在一些範例中,向量長度欄位在最大長度與一或多個其他較短長度之間選擇,其中每一此類較短長度為先前長度之長度的一半。純量運算為在ZMM/YMM/XMM暫存器中之最低階資料元素位置上施行之運算;取決於範例,該較高階資料元素位置係保持與其在指令之前相同或是歸零。
在一些範例中,暫存器架構2300包括寫入遮罩/述語暫存器2315。舉例而言,在一些範例中,存在各自係16位元、32位元、64位元或128位元大小之8個寫入遮罩/述語暫存器(有時被稱為k0至k7)。寫入遮罩/述語暫存器2315可允許合併(例如,允許目的地中之任何元素集合在任何運算執行期間被保護以免更新)及/或歸零(例如,歸零向量遮罩允許目的地中之任何元素集合在任何運算執行期間被歸零)。在一些範例中,在一給定寫入遮罩/述語暫存器2315中的每一資料元素位置對應於目的地的一資料元素位置。在其他範例中,寫入遮罩/述語暫存器2315係可縮放的,且由用於一給定向量元素之一設定數目的致能位元(例如,每64位元向量元素之8個致能位元)所組成。
暫存器架構2300包括複數個通用暫存器2325。這些暫存器可為16位元、32位元、64位元等,且可被使用於純量運算。在一些範例中,這些暫存器係藉由名稱RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP及R8至R15來參照。
在一些範例中,暫存器架構2300包括純量浮點暫存器2345,其係用於使用x87指令集延伸對32/64/80位元浮點資料施行純量浮點運算或作為MMX暫存器以對64位元包封整數資料施行運算,以及用以保持用於在MMX與XMM暫存器之間施行的一些運算之運算元。
一或多個旗標暫存器2340(例如,EFLAGS、RFLAGS等)儲存用於算術、比較及系統運算之狀態及控制資訊。舉例而言,一或多個旗標暫存器2340可儲存條件碼資訊,諸如進位、奇偶、輔助進位、零、正負號及溢位。在一些範例中,一或多個旗標暫存器2340被稱作程式狀態及控制暫存器。
區段暫存器2320含有使用於存取記憶體之區段點。在一些範例中,這些暫存器係藉由名稱CS、DS、SS、ES、FS及GS來參照。
機器特定暫存器(MSR)2335控制及報告處理器效能。大部分MSR 2335處理系統相關功能,且不可由應用程式存取。機器檢查暫存器2360由被使用來偵測及報告硬體錯誤之控制、狀態及錯誤報告MSR所組成。
一或多個指令指標暫存器2330儲存指令指標值。控制暫存器2355(例如,CR0-CR4)判定處理器(例如,處理器1970、1980、1938、1915及/或2000)之操作模式及目前執行任務之特性。除錯暫存器2350控制且允許監測處理器或核心之除錯操作。
記憶體管理暫存器2365指定用於受保護模式記憶體管理中之資料結構的位置。這些暫存器可包括GDTR、IDRT、任務暫存器以及LDTR暫存器。
替代範例可使用較寬或較窄的暫存器。此外,替代範例可使用更多、更少或不同暫存器檔案夾及暫存器。
指令集
指令集架構(ISA)可包括一或多個指令格式。給定指令格式可定義各種欄位(例如位元數目、位元位置),除了其他方面外,用以指定要施行之運算(例如,運算碼)及將被施行之此運算的運算元,及/或其他資料欄位(例如,遮罩)。一些指令格式係進一步經由指令範本(或子格式)之定義被分解。舉例而言,給定指令格式之指令範本可被定義以具有指令格式之欄位的不同子集(所包括欄位一般呈相同次序,但至少一些具有不同位元位置,因為包括較少之欄位)及/或被定義以具有不同解譯之給定欄位。因此,ISA之每一指令係使用給定指令格式(且在被界定的情況下,以彼指令格式之指令範本中之給定者)來表達,且包括用於指定運算及運算元之欄位。舉例而言,範例性ADD指令具有特定運算碼及指令格式,該指令格式包括用以指定彼運算碼之運算碼欄位及用以選擇運算元(來源1/目的地及來源2)之運算元欄位;且於指令串流中之此ADD指令的出現將具有在運算元欄位中之選擇特定運算元的特定內容。
範例性指令格式
本文中所描述的指令之範例可以不同的格式被體現。此外,範例性系統、架構及管線在下文詳細說明。指令之範例可在此等系統、架構及管線上被執行,但不限於彼等經詳細說明者。
圖24例示一指令格式的範例。如所例示,一指令可包括多個組件,該等組件包括但不限於用於下列之一或多個欄位:一或多個首碼2401、一運算碼2403、定址資訊2405(例如,暫存器識別符、記憶體定址資訊等)、一位移值2407及/或一立即2409。應注意的是,一些指令利用一些或所有的格式之欄位,然而其他指令可僅使用運算碼2403之欄位。在一些範例中,所例示之次序係以這些欄位將被編碼的次序,然而,應瞭解的是在其他範例中,這些欄位可以不同次序被編碼、被組合等。
首碼欄位2401在使用時會修改指令。在一些範例中,一或多個首碼係用以重複串列指令(例如,0xF0、0xF2、0xF3等),以提供區段覆設(例如,0x2E、0x36、0x3E、0x26、0x64、0x65、0x2E、0x3E等),以施行匯流排鎖定操作,及/或改變運算元(例如,0x66)及位址大小(例如,0x67)。某些指令需要一強制的首碼(例如,0x66、0xF2、0xF3等)。此等首碼中之某些可被視為「舊有」首碼。其他首碼(本文中所詳細說明之一或多個範例)指示及/或提供進一步的能力,諸如指定特定暫存器等。該等其他首碼一般接續該等「舊有」首碼。
運算碼欄位2403係用以至少部分地定義要在指令之解碼後要去施行的運算。在一些範例中,經編碼於運算碼欄位2403中之一主運算碼的長度係1、2或3位元組。在其他範例中,主運算碼可為不同長度。額外的3位元運算碼欄位有時被編碼於另一欄位中。
定址欄位2405係用以定址指令之一或多個運算元,諸如記憶體中之位置或一或多個暫存器。圖25例示定址欄位2405的範例。在此例示中,一任擇ModR/M位元組2502及一任擇尺度、索引、基址(SIB)位元組2504被顯示。ModR/M位元組2502及SIB位元組2504係用於編碼指令之高達兩個運算元,其中每一者係為直接暫存器或有效記憶體位址。應注意的是,這些欄位中之每一者係任擇的,此係因為並非所有指令均包括一或多個這些欄位。MOD R/M位元組2502包括一MOD欄位2542、一暫存器欄位2544及R/M欄位2546。
MOD欄位2542之內容區分記憶體存取與非記憶體存取模式。在一些範例中,當MOD欄位2542具有值b11時,利用暫存器直接定址模式,且否則使用暫存器間接定址。
暫存器欄位2544可對目的地暫存器運算元或來源暫存器運算元進行編碼,或可對一運算碼延伸進行編碼而不被使用來編碼任何指令運算元。暫存器索引欄位2544之內容直接或透過位址產生來指定來源或目的地運算元之位置(在暫存器或在記憶體中)。在一些範例中,暫存器欄位2544係以來自首碼(例如,首碼2401)之額外位元進行補充以允許較大的定址。
R/M欄位2546可被使用來對參考記憶體位址之指令運算元進行編碼,或可被使用來對目的地暫存器運算元或來源暫存器運算元進行編碼。應注意的是,在一些範例中,R/M欄位2546可被與MOD欄位2542組合以指定一定址模式。
SIB位元組2504包括一尺度欄位2552、索引欄位2554及基址欄位2556以被使用於位址的產生。尺度欄位2552指示尺度因子。索引欄位2554指定要使用之索引暫存器。在一些範例中,索引欄位2554係以來自首碼(例如,首碼2401)之額外位元進行補充以允許較大的定址。基址欄位2556指定要使用之基址暫存器。在一些範例中,基址欄位2556係以來自首碼(例如,首碼2401)之額外位元進行補充以允許較大的定址。實際上,尺度欄位2552之內容允許縮放索引欄位2554之內容以用於記憶體位址產生(例如,用於使用2
尺度* 索引 + 基址的位址產生)。
一些定址形式利用一位移值以產生一記憶體位址。舉例而言,記憶體位址可依據2
尺度* 索引 + 基址 + 位移、索引 * 尺度 + 位移、r/m + 位移、指令指標(RIP/EIP) + 位移、暫存器 + 位移等而被產生。位移可為1位元組、2位元組、4位元組等值。在一些範例中,位移欄位2407提供此值。此外,在一些範例中,位移因子使用係被編碼於定址欄位2405之MOD欄位中,定址欄位2405指示壓縮位移方案,其係用於藉由將disp8與基於向量長度、b位元值及指令之輸入元素大小所判定的尺度因子N相乘來計算位移值。位移值係儲存於位移欄位2407中。
在一些範例中,立即欄位2409指定用於指令之立即。立即可被編碼為1位元組值、2位元組值、4位元組值等。
圖26例示一第一首碼2401(A)之範例。在一些範例中,第一首碼2401(A)係REX首碼的範例。使用此首碼之指令可指定通用暫存器、64位元包封資料暫存器(例如,單指令多資料(SIMD)暫存器或向量暫存器)及/或控制暫存器及除錯暫存器(例如,CR8-CR15及DR8-DR15)。
使用第一首碼2401(A)之指令可取決於格式而使用3位元欄位指定高達三個暫存器:1)使用Mod R/M位元組2502之暫存器欄位2544及R/M欄位2546;2)使用Mod R/M位元組2502與SIB位元組2504,其包括使用暫存器欄位2544及基址欄位2556及索引欄位2554;或3)使用一運算碼之暫存器欄位。
在第一首碼2401(A)中,位元位置7:4被設定為0100。位元位置3(W)可被使用來判定運算元大小,但可不僅判定運算元寬度。如此一來,當W=0時,運算元大小係藉由程式碼區段描述符(CS.D)來判定,且當W=1時,運算元大小為64位元。
應注意的是,另一位元之添加允許16(2
4)暫存器被定址,而MOD R/M暫存器欄位2544及MOD R/M R/M欄位2546單獨可各自僅定址8個暫存器。
在第一首碼2401(A)中,位元位置2(R)可為MOD R/M暫存器欄位2544之延伸,且可被使用來在該欄位編碼一通用暫存器、一64位元包封資料暫存器(例如,SSE暫存器)或一控制或除錯暫存器時,修改ModR/M暫存器欄位2544。當Mod R/M位元組2502指定其他暫存器或定義延伸運算碼時,R被忽略。
位元位置1 (X) X位元可修改SIB位元組索引欄位2554。
位元位置B (B) B可修改Mod R/M R/M欄位2546或SIB位元組基址欄位2556中之基址;或其可修改用於存取通用暫存器(例如,通用暫存器2325)之運算碼暫存器欄位。
圖27(A)-(D)例示如何使用第一首碼2401(A)之R、X及B欄位的範例。圖27(A)例示來自第一首碼2401(A)的R及B,其被使用來在SIB位元組2504未被使用於記憶體定址時,去延伸MOD R/M位元組2502之暫存器欄位2544及R/M欄位2546。圖27(B)例示來自第一首碼2401(A)的R及B,其被使用來在SIB位元組2504未被使用(暫存器對暫存器定址)時,去延伸MOD R/M位元組2502之暫存器欄位2544及R/M欄位2546。圖27(C)例示來自第一首碼2401(A)的R、X及B,其被使用來在SIB位元組2504被使用於記憶體定址時,去延伸MOD R/M位元組2502之暫存器欄位2544及索引欄位2554及基址欄位2556。圖27(D)例示來自第一首碼2401(A)的B,其被使用來在暫存器被編碼於運算碼2403中時,去延伸MOD R/M位元組2502之暫存器欄位2544。
圖28(A)-(B)例示一第二首碼2401(B)的範例。在一些範例中,第二首碼2401(B)係VEX首碼的範例。第二首碼2401(B)編碼允許指令具有多於兩個運算元,且允許SIMD向量暫存器(例如,向量/SIMD暫存器2310)比64位元長(例如,128位元及256位元)。第二首碼2401(B)之使用提供三運算元(或更多)語法。舉例而言,先前二個運算元指令施行諸如A = A + B之運算,其覆寫一來源運算元。第二首碼2401(B)的使用使運算元能夠施行非破壞性運算,諸如A = B + C。
在一些範例中,第二首碼2401(B)呈兩種形式──二位元組形式及三位元組形式。二位元組第二首碼2401(B)係主要使用於128位元、純量及一些256位元指令;而三位元組第二首碼2401(B)提供第一首碼2401(A)及3位元組運算碼指令之緊湊替換。
圖28(A)例示第二首碼2401(B)之二位元組形式的範例。在一範例中,格式欄位2801(位元組0 2803)含有值C5H。在一範例中,位元組1 2805包括位元[7]中之「R」值。此值為第一首碼2401(A)之相同值的補數。位元[2]被使用來指定向量之長度(L)(其中值0為純量或128位元向量且值1為256位元向量)。位元[1:0]提供等效於一些舊有首碼之運算碼延伸性(例如,00 = 無首碼,01 = 66H,10 = F3H,且11 = F2H)。顯示為vvvv之位元[6:3]可被使用來:1)對第一來源暫存器運算元進行編碼,其以反置(1補數)形式指定且針對具有2或更多個來源運算元之指令有效;2)對目的地暫存器運算元進行編碼,其以用於特定向量移位之1補數形式指定;或3)不對任何運算元進行編碼,該欄位被保留且應含有諸如1111b之一特定值。
使用此首碼之指令可使用Mod R/M R/M欄位2546以對參考記憶體位址的指令運算元進行編碼,或對目的地暫存器運算元或來源暫存器運算元進行編碼。
使用此首碼之指令可使用Mod R/M暫存器欄位2544以對目的地暫存器運算元或來源暫存器運算元進行編碼,被視為運算碼延伸且不使用來對任何指令運算元進行編碼。
針對支援四個運算元vvvv之指令語法,Mod R/M R/M欄位2546及Mod R/M暫存器欄位2544對四個運算元中之三個進行編碼。立即2409之位元[7:4]接著被使用來對第三來源暫存器運算元進行編碼。
圖28(B)例示第二首碼2401(B)之三位元組形式的範例。在一範例中,格式欄位2811(位元組0 2813)含有值C4H。位元組1 2815在位元[7:5]中包括「R」、「X」以及「B」,其係第一首碼2401(A)之相同值的補數。位元組1 2815之位元[4:0](顯示為mmmmm)包括用以按需要對一或多個隱含前導運算碼位元組進行編碼之內容。舉例而言,00001隱含0FH前導運算碼、00010隱含0F38H前導運算碼、00011隱含0F3AH前導運算碼等。
位元組2 2817之位元[7]係相似於第一首碼2401(A)之W被使用,包括幫助判定可推廣之運算元大小。位元[2]被使用來指定向量之長度(L)(其中值0為純量或128位元向量且值1為256位元向量)。位元[1:0]提供等效於一些舊有首碼之運算碼延伸性(例如,00 = 無首碼,01 = 66H,10 = F3H,且11 = F2H)。顯示為vvvv之位元[6:3]可被使用來:1)對第一來源暫存器運算元進行編碼,其以反置(1補數)形式指定且針對具有2或更多個來源運算元之指令有效;2)對目的地暫存器運算元進行編碼,其以用於特定向量移位之1補數形式指定;或3)不對任何運算元進行編碼,該欄位被保留且應含有諸如1111b之一特定值。
使用此首碼之指令可使用Mod R/M R/M欄位2546以對參考記憶體位址的指令運算元進行編碼,或對目的地暫存器運算元或來源暫存器運算元進行編碼。
使用此首碼之指令可使用Mod R/M暫存器欄位2544以對目的地暫存器運算元或來源暫存器運算元進行編碼,被視為運算碼延伸且不使用來對任何指令運算元進行編碼。
針對支援四個運算元vvvv之指令語法,Mod R/M R/M欄位2546及Mod R/M暫存器欄位2544對四個運算元中之三個進行編碼。立即2409之位元[7:4]接著被使用來對第三來源暫存器運算元進行編碼。
圖29例示一第三首碼2401(C)的範例。在一些範例中,第一首碼2401(A)係EVEX首碼的範例。第三首碼2401(C)係四位元組首碼。
第三首碼2401(C)可以64位元模式編碼32個向量暫存器(例如,128位元、256位元及512位元暫存器)。在一些範例中,利用寫入遮罩/運算遮罩之指令(參看先前圖式中之暫存器的論述,諸如圖23)或述語利用此首碼。運算遮罩暫存器允許條件處理或選擇控制。來源/目的地運算元為運算遮罩暫存器且將運算遮罩暫存器之內容視為單個值之運算遮罩指令係使用第二首碼2401(B)被編碼。
第三首碼2401(C)可對特定於指令類別之功能性進行編碼(例如,具有「載入+運算」語義之一包封指令可支援嵌入式廣播功能性、具有捨入語義之一浮點指令可支援靜態捨入功能性、具有非捨入算術語義之浮點指令可支援「抑制所有例外異常」功能性等)。
第三首碼2401(C)之第一位元組係一格式欄位2911,格式欄位2911具有在一範例中為62H之值。後續位元組被稱為酬載位元組2915-2919且共同地形成一24位元值P[23:0],其以一或多個欄位(本文中所詳細說明)之形式提供特定能力。
在一些範例中,酬載位元組2919之P[1:0]係與低的兩個mmmmm位元相同。在一些範例中,P[3:2]被保留。位元P[4] (R')允許在與P[7]及ModR/M暫存器欄位2544組合時對高的16個向量暫存器集合之存取。當不需要SIB類型定址時,P[6]亦可提供對高的16個向量暫存器之存取。P[7:5]由用於向量暫存器、通用暫存器、記憶體定址之運算元說明符修飾符位元的R、X及B所組成,且在與ModR/M暫存器欄位2544及ModR/M R/M欄位2546組合時允許對超過低的8個暫存器的下一組8個暫存器存取。P[9:8]提供等效於一些舊有首碼之運算碼延伸性(例如,00 = 無首碼,01 = 66H,10 = F3H,且11 = F2H)。在一些範例中,P[10]為固定值1。顯示為vvvv之P[14:11]可被使用來:1)對第一來源暫存器運算元進行編碼,其以反置(1補數)形式指定且針對具有2或更多個來源運算元之指令有效;2)對目的地暫存器運算元進行編碼,其以用於特定向量移位之1補數形式指定;或3)不對任何運算元進行編碼,該欄位被保留且應含有諸如1111b之一特定值。
P[15]係相似於第一首碼2401(A)及第二首碼2411(B)之W,且可充當為運算碼延伸位元或運算元大小提升。
P[18:16]指定在運算遮罩(寫入遮罩)暫存器(例如,寫入遮罩/述語暫存器2315)中之暫存器的索引。在一範例中,特定值aaa = 000具有暗示沒有運算遮罩被使用於特定指令之特殊行為(此可通過多種方式實行,包括使用硬連線至所有者之運算遮罩或繞過遮罩硬體之硬體)。當合併時,向量遮罩允許目的地中之任何元素集合在任何運算(由基址運算及擴增運算所指定)之執行期間受保護而不被更新;在其他範例中,當對應遮罩位元具有一0值時,保持目的地之每一元素之舊值。對比而言,當歸零時,向量遮罩允許目的地中之任何元素集合在任何運算(由基址運算及擴增運算所指定)之執行期間被歸零;在一範例中,當對應遮罩位元具有一0值時,將目的地之一元素設定為0。此功能性之子集係用以控制正施行之運算的向量長度之能力(亦即,元素之跨距自第一者至最後一者被修改);然而,被修改之元素並不需要為連續的。因此,運算遮罩欄位允許部分向量運算,包括載入、儲存、算術、邏輯等。雖然說明了運算遮罩欄位之內容選擇含有將被使用之運算遮罩的數個運算遮罩暫存器中之一者(且因此運算遮罩欄位之內容間接識別將被施行之遮罩)的範例,但替代的或其他的不同範例允許遮罩寫入欄位之內容以直接指定將被施行之遮罩。
P[19]可與P[14:11]組合以使用一非破壞性來源語法來對第二來源向量暫存器進行編碼,其可使用P[19]來存取上部的16個向量暫存器。P[20]編碼多個功能性,該等功能性在不同類別之指令中有所不同且可影響向量長度/捨入控制說明符欄位(P[22:21])之含義。P[23]指示對合併-寫入遮罩之支援(例如,當設定為0時)或對歸零及合併-寫入遮罩之支援(例如,當設定為1時)。
使用第三首碼2401(C)之指令中暫存器之編碼的範例性範例在下表中詳係說明。
表2 :以32位元模式編碼暫存器說明符
表3 :運算遮罩暫存器說明符編碼
4 | 3 | [2:0] | 暫存器類型 | 通常使用 | ||||
暫存器 | R’ | R | ModR/M暫存器 | GPR、向量 | 來源或目的地 | |||
VVVV | V’ | vvvv | GPR、向量 | 第二來源或目的地 | ||||
RM | X | B | ModR/M R/M | GPR、向量 | 第一來源或目的地 | |||
基址 | 0 | B | ModR/M R/M | GPR | 記憶體定址 | |||
索引 | 0 | X | SIB.index | GPR | 記憶體定址 | |||
VIDX | V’ | X | SIB.index | 向量 | VSIB記憶體定址 | |||
表1 :以64位元模式支援的32-暫存器 | ||||||||
[2:0] | 暫存器類型 | 通常使用 | ||||||
暫存器 | ModR/M暫存器 | GPR、向量 | 來源或目的地 | |||||
VVVV | vvvv | GPR、向量 | 第二來源或目的地 | |||||
RM | ModR/M R/M | GPR、向量 | 第一來源或目的地 | |||||
基址 | ModR/M R/M | GPR | 記憶體定址 | |||||
索引 | SIB.index | GPR | 記憶體定址 | |||||
VIDX | SIB.index | 向量 | VSIB記憶體定址 | |||||
[2:0] | 暫存器類型 | 通常使用 | |
暫存器 | ModR/M暫存器 | k0-k7 | 來源 |
VVVV | vvvv | k0-k7 | 第二來源 |
RM | ModR/M R/M | k0-7 | 第一來源 |
{k1] | aaa | k0 1-k7 | 運算遮罩 |
程式碼可被應用於輸入指令以施行本文所說明之功能並產生輸出資訊。以已知方式,輸出資訊可被應用於一或多個輸出裝置。為了本申請案之目的,處理系統包括具有處理器之任何系統,該處理器諸如,例如,數位信號處理器(DSP)、微控制器、特定應用積體電路(ASIC)或微處理器。
程式碼可被以高階程序或物件導向式程式設計語言來實行以與處理系統通訊。若需要,程式碼亦可用組合語言或機器語言來實行。事實上,本文中所說明之機制在範圍上並不限於任何特定程式設計語言。在任何情況下,該語言可以是編譯語言或解譯語言。
本文中所揭露之機制的範例可以硬體、軟體、韌體、或此等實行作法之一組合來被實行。範例可被實行為在包含至少一個處理器、一儲存系統(包括依電性及非依電性記憶體及/或儲存元件)、至少一個輸入裝置、及至少一個輸出裝置之可程式化系統上執行之電腦程式或程式碼。
至少一範例之一或多個態樣可藉由儲存於機器可讀媒體上的表示處理器內之各種邏輯之代表性指令來被實行,該等代表性指令當由機器讀取時致使該機器建構用以施行本文中所說明之技術的邏輯。被稱為「IP核心」之此等表示可被儲存於有形機器可讀媒體上,並且供應至各種消費者或製造設施,以載入至實際上構成該邏輯或處理器之建構機器中。
此等機器可讀儲存媒體可包括但不限於由一機器或裝置製造或形成之物品的非暫時性有形布置,包括儲存媒體,諸如硬碟、包括軟碟之任何其他類型之磁碟、光碟、光碟唯讀記憶體(CD-ROM)、可重寫光碟(CD-RW)及磁光碟、諸如唯讀記憶體(ROM)之半導體裝置、諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)之隨機存取記憶體(RAM)、可抹除可程式化唯讀記憶體(EPROM)、快閃記憶體、電可抹除可程式化唯讀記憶體(EEPROM)、相變記憶體(PCM)、磁卡或光學卡,或合適於儲存電子指令的任何其他類型之媒體。
據此,範例亦可包括含有指令或含有設計資料之非暫時性有形機器可讀媒體,諸如硬體描述語言(HDL),其界定本文中所說明之結構、電路、設備、處理器及/或系統特徵。此等範例亦可被稱作程式產品。
仿真(包括二進位轉譯、代碼編程等)
在一些情況下,指令轉換器可被使用來將指令自來源指令集轉換至目標指令集。舉例而言,指令轉換器可將指令轉譯(例如,使用靜態二進位轉譯、包括動態編譯之動態二進位轉譯)、轉化、仿真或以其他方式轉換成將由核心所處理之一或多個其他指令。指令轉換器可以軟體、硬體、韌體或其組合予以實行。指令轉換器可在處理器上、在處理器外,或部分地在處理器上且部分地在處理器外。
圖30例示根據範例的對比使用一軟體指令轉換器以將一來源指令集中之二進位指令轉換為一目標指令集中之二進位指令的方塊圖。在所例示的範例中,指令轉換器為軟體指令轉換器,但替代地,指令轉換器可以軟體、韌體、硬體或其各種組合予以實行。圖30顯示可使用第一ISA編譯器3004來編譯呈高階語言3002之程式以產生第一ISA二進位碼3006,其可原生地由具有至少一個第一指令集核心之處理器3016所執行。具有至少一第一ISA指令集核心之處理器3016代表可藉由相容地執行或以其他方式處理以下各者以便達成與具有至少一第一ISA指令集核心之處理器實質上相同的結果而施行與具有至少一第一ISA指令集核心之Intel®處理器實質上相同的功能的任一處理器:(1)第一ISA指令集核心之指令集的實質部分,或(2)目標為在具有至少一第一ISA指令集核心之Intel處理器上運行的應用程式或其他軟體之目的碼版本。第一ISA編譯器3004代表可操作以產生第一ISA二進位碼3006(例如,目的碼)的編譯器,第一ISA二進位碼3006可在具有或不具有額外鏈結處理的情況下,在具有至少一第一ISA指令集核心之處理器3016上執行。相似地,圖30顯示可使用替代性指令集編譯器3008來編譯呈高階語言3002之程式以產生替代性指令集二進位碼3010,其可原生地由不具有第一ISA指令集核心之處理器3014所執行。指令轉換器3012係用以將第一ISA二進位碼3006轉換成可原生地由不具有第一ISA指令集核心之處理器3014所執行的程式碼。此經轉換之程式碼可不太可能與替代性指令集二進位碼3010相同,因為能夠做到此的指令集轉換器係難以製作的;然而,該經轉換之程式碼將完成一般操作且由來自替代性指令集之指令所構成。因此,指令轉換器3012代表透過仿真、模擬或任何其他程序而允許不具有第一ISA指令集處理器或核心的處理器或其他電子裝置去執行第一ISA二進位碼3006的軟體、韌體、硬體或其組合。
對「一個範例」、「一範例」等之參考等指示了所說明之範例可包括一特定特徵、結構或特性,但每一範例可能未必包括該特定特徵、結構或特性。此外,此等短語未必係指相同範例。另外,當關連於一範例來說明一特定特徵、結構或特性時,要主張的是,無論是否明確地說明,去對與其他範例相關之此等特徵、結構或特性作改變時都是在熟習此藝者之知識範圍內。
範例包括、但不限於:
1.一種設備,其包含:
解碼器電路系統,其用以解碼一單指令,該單指令用以包括用於一運算碼、一來源運算元之一識別及目的地運算元之一識別的欄位,其中該運算碼係用以指示指令處理電路系統係要將來自經識別之該來源運算元之奇數16位元浮點值轉換成32位元浮點值,且將該等32位元浮點值儲存於經識別之該目的地運算元的資料元素位置中;及
指令處理電路系統,其用以根據該運算碼來執行經解碼之該指令。
2.如範例1之設備,其中用於該第一來源運算元之該識別符的該欄位係用以識別一向量暫存器。
3.如範例1之設備,其中用於該第一來源運算元之該識別符的該欄位係用以識別一記憶體位置。
4.如範例1至3中任一者之設備,其中該等16位元浮點值為BF16值。
5.如範例4之設備,其中指令處理電路系統係要藉由附加十六個零至該等BF16值中之各者來將該等BF16值轉換成32位元浮點值。
6.如範例1至3中任一者之設備,其中該等16位元浮點值為FP16值。
7.一種方法,其包含:
將一第一指令集之一單指令轉譯成一第二指令集之一或多個指令,該單指令用以包括用於一運算碼、一來源運算元之一識別及目的地運算元之一識別的欄位,其中該運算碼係用以指示指令處理電路系統係要將來自經識別之該來源運算元之奇數16位元浮點值轉換成32位元浮點值,且將該等32位元浮點值儲存於經識別之該目的地運算元的資料元素位置中;
解碼該第二集之一或多個指令;及
根據該第一指令集之該單指令的該運算碼來執行該第二集的經解碼之該等一或多個指令。
8.如範例7之方法,其中用於該第一來源運算元之該識別符的該欄位係用以識別一向量暫存器。
9.如範例7之方法,其中用於該第一來源運算元之該識別符的該欄位係用以識別一記憶體位置。
10.如範例7至9中任一者之方法,其中該等16位元浮點值為BF16值。
11.如範例10之方法,其中將該等BF16值轉換成32位元浮點值包含附加十六個零至該等BF16值中之各者。
12.如範例7至9中任一者之方法,其中該等16位元浮點值為FP16值。
13.一種系統,其包含:
記憶體,其用以儲存一單指令的一實例,該單指令用以包括用於一運算碼、一來源運算元之一識別及目的地運算元之一識別的欄位,其中該運算碼係用以指示指令處理電路系統係要將來自經識別之該來源運算元之奇數16位元浮點值轉換成32位元浮點值,且將該等32位元浮點值儲存於經識別之該目的地運算元的資料元素位置中;
解碼器電路系統,其用以解碼該單指令之實例;及
指令處理電路系統,其用以根據該運算碼來執行該單指令之經解碼之該實例。
14.如範例13之系統,其中用於該第一來源運算元之該識別符的該欄位係用以識別一向量暫存器。
15.如範例13之系統,其中用於該第一來源運算元之該識別符的該欄位係用以識別一記憶體位置。
16.如範例13至15中任一者之系統,其中該等16位元浮點值為BF16值。
17.如範例16之系統,其中指令處理電路系統係要藉由附加十六個零至該等BF16值中之各者來將該等BF16值轉換成32位元浮點值。
18.如範例13至15中任一者之系統,其中該等16位元浮點值為FP16值。
此外,在如上所說明之各種範例中,除非另外明確指出,否則諸如短語「A、B或C中之至少一者」之分離性語言意欲被理解為意謂A、B或C,或其等之任何組合(例如,A、B及/或C)。如此,分離性語言不意欲且不應理解為暗示一給定範例要求A中之至少一者、B中之至少一者、或C中之至少一者要每一者皆存在。
本說明書及圖式因此應被視為例示性而非限制性概念。然而,將顯而易見的是,可以對其進行各種修改及改變,而不脫離如在申請專利範圍中所闡述之本揭露內容更廣泛的精神及範圍。
101:FP32格式
103:FP16格式
105:BF16格式
201,601,1001,1401:來源
211,611,1011,1411:轉換電路系統
213,613,1013,1413,1809:執行電路系統
215,615,1015,1415:記憶體存取電路系統
231,631,1031,1431:目的地
301,302,303,305,307,309,701,702,703,705,707,709:步驟
1101,1102,1103,1105,1107,1109,1501,1502,1503,1505,1507,1509:步驟
1801:指令
1803:儲存器
1805:解碼電路系統
1807:排程電路系統
1808:暫存器(暫存器檔案夾)及/或記憶體
1811:引退/回寫電路系統
1900:多處理器系統
1914:I/O裝置
1915,1938:(共)處理器
1916:第一互連件
1917:電源控制單元(PCU)
1918:互連件(匯流排)橋接器
1920:第二互連件
1922:鍵盤及/或滑鼠
1924:音訊I/O
1927:通訊裝置
1928:儲存單元電路系統
1930:程式碼及資料
1932,1934:記憶體
1950:點對點(P-P)互連件
1952,1954:P-P互連件
1970:(第一)處理器
1972:整合式記憶體控制器(IMC)單元電路系統
1976:點對點介面電路,點對點(P-P)介面
1978:P-P介面電路,點對點(P-P)介面
1980:(第二)處理器
1986:點對點介面電路,P-P介面
1988:P-P介面(電路)
1990:晶片組
1992:高效能介面
1994,1998:點對點介面電路
1996:介面
2000:處理器
2002A,2002(A),2002(N):核心
2004(A),2004(N):快取記憶體單元電路系統
2006:共享快取記憶體單元電路系統
2008:特定用途邏輯
2010:系統代理(單元電路系統)
2012:以環形為基之互連網路電路系統
2014:整合式記憶體控制器單元電路系統
2016:互連控制器單元電路系統
2100:(處理器)管線
2102:提取級
2104:長度解碼級
2106:解碼級
2108:分配級
2110:重命名級
2112:排程級
2114:暫存器讀取/記憶體讀取級
2115,2217,2119:酬載位元組
2116:執行級
2118:回寫/記憶體寫入級
2122:例外處置級
2124:提交級
2130:前端單元電路系統
2132:分支預測單元電路系統
2134:指令快取記憶體(單元電路系統)
2136:指令轉譯後備緩衝器(TLB)
2138:指令提取(單元電路系統)
2140:解碼單元電路系統
2150:引擎(單元)電路系統
2152:重命名/分配器單元電路系統
2154:引退單元電路系統
2156:排程器(單元)電路系統
2158:實體暫存器檔案夾(單元)電路系統
2160:執行叢集
2162:執行單元電路(系統)
2164:記憶體存取(單元)電路系統
2170:記憶體單元電路系統
2172:資料TLB(單元)電路系統
2174:資料快取記憶體(電路系統)
2176:層級2(L2)快取記憶體(單元)電路系統
2190:(處理器)核心
2201:ALU電路
2203:向量/SIMD單元電路
2205:載入/儲存單元電路
2207:分支/跳轉單元電路
2209:浮點單元(FPU)電路
2300:暫存器架構
2310:向量/SIMD暫存器
2315:寫入遮罩/述語暫存器
2320:區段暫存器
2325:通用暫存器
2330:指令指標暫存器
2335:機器特定暫存器(MSR)
2340:旗標暫存器
2345:純量浮點暫存器
2350:除錯暫存器
2355:控制暫存器
2360:機器檢查暫存器
2365:記憶體管理暫存器
2401:首碼(欄位)
2401(A):第一首碼
2401(B):第二首碼
2401(C):第三首碼
2403:運算碼(欄位)
2405:定址資訊,定址欄位
2407:位移欄位,位移值
2409:立即(欄位)
2502:MOD R/M位元組,Mod R/M位元組,ModR/M位元組
2504:基址(SIB)位元組
2542:MOD欄位
2544:暫存器(索引)欄位,MOD R/M暫存器欄位,Mod R/M位元組,ModR/M暫存器欄位
2546:(Mod R/M )R/M欄位, (MOD R/M )R/M欄位,(ModR/M )R/M欄位
2552:尺度欄位
2554:(SIB位元組)索引欄位
2556:(SIB位元組)基址欄位
2801,2811,2911:格式欄位
3002:高階語言
3004:第一ISA編譯器
3006:第一ISA二進位碼
3008:替代性指令集編譯器
3010:替代性指令集二進位碼
3012:指令轉換器
3014:不具有第一ISA指令集核心之處理器
3016:具有至少一個第一指令集核心之處理器
將參看圖式來說明根據本揭露內容之各種範例,其中:
圖1例示不同的浮點表示格式。
圖2(A)例示單個經解碼之指令的範例性執行,該指令係用以將儲存於來自一來源之偶數資料元素位置中的BF16值轉換成FP32值,且將該等FP32值儲存進一目的地之資料元素位置。
圖2(B)例示單個經解碼之指令的範例性執行,該指令係用以將儲存於來自一來源之偶數資料元素位置中的BF16值轉換成FP32值,且將該等FP32值儲存進一目的地之資料元素位置。
圖3例示用以處理一VCVTNEEBF162PS指令之方法的範例。
圖4例示用於VCVTNEEBF162PS指令之指令編碼的範例。
圖5例示用於VCVTNEEBF162PS指令之指令虛擬碼的範例。
圖6(A)例示單個經解碼之指令的範例性執行,該指令係用以將儲存於來自一來源之奇數資料元素位置中的BF16值轉換成FP32值,且將該等FP32值儲存進一目的地之資料元素位置。
圖6(B)例示單個經解碼之指令的範例性執行,該指令係用以將儲存於來自一來源之奇數資料元素位置中的BF16值轉換成FP32值,且將該等FP32值儲存進一目的地之資料元素位置。
圖7例示用以處理一VCVTNEOBF162PS指令之方法的範例。
圖8例示用於VCVTNEOBF162PS指令之指令編碼的範例。
圖9例示用於VCVTNEOBF162PS指令之指令虛擬碼的範例。
圖10(A)例示單個經解碼之指令的範例性執行,該指令係用以將儲存於來自一來源之偶數資料元素位置中的FP16值轉換成FP32值,且將該等FP32值儲存進一目的地之資料元素位置。
圖10(B)例示單個經解碼之指令的範例性執行,該指令係用以將儲存於來自一來源之偶數資料元素位置中的FP16值轉換成FP32值,且將該等FP32值儲存進一目的地之資料元素位置。
圖11例示用以處理一VCVTNEEPH2PS指令之方法的範例。
圖12例示用於VCVTNEEPH2PS指令之指令編碼的範例。
圖13例示用於VCVTNEEPH2PS指令之指令虛擬碼的範例。
圖14(A)例示單個經解碼之指令的範例性執行,該指令係用以將儲存於來自一來源之奇數資料元素位置中的FP16值轉換成FP32值,且將該等FP32值儲存進一目的地之資料元素位置。
圖14(B)例示單個經解碼之指令的範例性執行,該指令係用以將儲存於來自一來源之奇數資料元素位置中的FP16值轉換成FP32值,且將該等FP32值儲存進一目的地之資料元素位置。
圖15例示用以處理一VCVTNEOPH2PS指令之方法的範例。
圖16例示用於VCVTNEOPH2PS指令之指令編碼的範例。
圖17例示用於VCVTNEOPH2PS指令之指令虛擬碼的範例。
圖18例示用以處理諸如上文詳細說明之指令中之任一者之一指令之硬體的範例。
圖19例示一範例性系統的範例。
圖20例示可具有多於一核心、可具有一整合式記憶體控制器且可具有整合式圖形之一處理器之範例的方塊圖。
圖21(A)為根據範例例示一範例性有序管線及一範例性暫存器重命名、無序發布/執行管線兩者的方塊圖。
圖21(B)為根據範例例示將被包括在一處理器中的一有序架構核心之一範例性範例及一範例性暫存器重命名、無序發布/執行架構核心兩者的方塊圖。
圖22例示執行單元電路系統的範例,諸如圖21(B)之執行單元電路系統。
圖23為根據一些範例之一暫存器架構的方塊圖。
圖24例示一指令格式的範例。
圖25例示一定址欄位的範例。
圖26例示一第一首碼的範例。
圖27(A)-(D)例示如何使用第一首碼2401(A)之R、X及B欄位的範例。
圖28(A)-(B)例示一第二首碼的範例。
圖29例示一第三首碼的範例。
圖30例示根據範例的對比使用一軟體指令轉換器以將一來源指令集中之二進位指令轉換為一目標指令集中之二進位指令的方塊圖。
301,302,303,305,307,309:步驟
Claims (18)
- 一種設備,其包含: 解碼器電路系統,其用以解碼一單指令,該單指令用以包括用於一運算碼、一來源運算元之一識別及目的地運算元之一識別的欄位,其中該運算碼係用以指示指令處理電路系統係要將來自經識別之該來源運算元之奇數16位元浮點值轉換成32位元浮點值,且將該等32位元浮點值儲存於經識別之該目的地運算元的資料元素位置中;及 指令處理電路系統,其用以根據該運算碼來執行經解碼之該指令。
- 如請求項1之設備,其中用於該第一來源運算元之該識別符的該欄位係用以識別一向量暫存器。
- 如請求項1之設備,其中用於該第一來源運算元之該識別符的該欄位係用以識別一記憶體位置。
- 如請求項1至3中任一項之設備,其中該等16位元浮點值為BF16值。
- 如請求項4之設備,其中指令處理電路系統係要藉由附加十六個零至該等BF16值中之各者來將該等BF16值轉換成32位元浮點值。
- 如請求項1至3中任一項之設備,其中該等16位元浮點值為FP16值。
- 一種方法,其包含: 將一第一指令集之一單指令轉譯成一第二指令集之一或多個指令,該單指令用以包括用於一運算碼、一來源運算元之一識別及目的地運算元之一識別的欄位,其中該運算碼係用以指示指令處理電路系統係要將來自經識別之該來源運算元之奇數16位元浮點值轉換成32位元浮點值,且將該等32位元浮點值儲存於經識別之該目的地運算元的資料元素位置中; 解碼該第二集之一或多個指令;及 根據該第一指令集之該單指令的該運算碼來執行該第二集的經解碼之該等一或多個指令。
- 如請求項7之方法,其中用於該第一來源運算元之該識別符的該欄位係用以識別一向量暫存器。
- 如請求項7之方法,其中用於該第一來源運算元之該識別符的該欄位係用以識別一記憶體位置。
- 如請求項7至9中任一項之方法,其中該等16位元浮點值為BF16值。
- 如請求項10之方法,其中將該等BF16值轉換成32位元浮點值包含附加十六個零至該等BF16值中之各者。
- 如請求項7至9中任一項之方法,其中該等16位元浮點值為FP16值。
- 一種系統,其包含: 記憶體,其用以儲存一單指令的一實例,該單指令用以包括用於一運算碼、一來源運算元之一識別及目的地運算元之一識別的欄位,其中該運算碼係用以指示指令處理電路系統係要將來自經識別之該來源運算元之奇數16位元浮點值轉換成32位元浮點值,且將該等32位元浮點值儲存於經識別之該目的地運算元的資料元素位置中; 解碼器電路系統,其用以解碼該單指令之實例;及 指令處理電路系統,其用以根據該運算碼來執行該單指令之經解碼之該實例。
- 如請求項13之系統,其中用於該第一來源運算元之該識別符的該欄位係用以識別一向量暫存器。
- 如請求項13之系統,其中用於該第一來源運算元之該識別符的該欄位係用以識別一記憶體位置。
- 如請求項13至14中任一項之系統,其中該等16位元浮點值為BF16值。
- 如請求項16之系統,其中指令處理電路系統係要藉由附加十六個零至該等BF16值中之各者來將該等BF16值轉換成32位元浮點值。
- 如請求項13至14中任一項之系統,其中該等16位元浮點值為FP16值。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/560,557 US20230205522A1 (en) | 2021-12-23 | 2021-12-23 | Conversion instructions |
US17/560,557 | 2021-12-23 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202333048A true TW202333048A (zh) | 2023-08-16 |
Family
ID=84387681
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW111138063A TW202333048A (zh) | 2021-12-23 | 2022-10-06 | 轉換指令 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230205522A1 (zh) |
EP (1) | EP4202660A1 (zh) |
CN (1) | CN116382777A (zh) |
TW (1) | TW202333048A (zh) |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5933650A (en) * | 1997-10-09 | 1999-08-03 | Mips Technologies, Inc. | Alignment and ordering of vector elements for single instruction multiple data processing |
US9965275B2 (en) * | 2015-07-31 | 2018-05-08 | Arm Limited | Element size increasing instruction |
-
2021
- 2021-12-23 US US17/560,557 patent/US20230205522A1/en active Pending
-
2022
- 2022-10-06 TW TW111138063A patent/TW202333048A/zh unknown
- 2022-12-02 EP EP22210981.1A patent/EP4202660A1/en active Pending
- 2022-12-21 CN CN202211655453.9A patent/CN116382777A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4202660A1 (en) | 2023-06-28 |
US20230205522A1 (en) | 2023-06-29 |
CN116382777A (zh) | 2023-07-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP4020184A1 (en) | Instructions to convert from fp16 to bf8 | |
US20220206743A1 (en) | Instructions to convert from fp16 to bf8 | |
US20240045684A1 (en) | Instructions to convert from fp16 to fp8 | |
EP4202660A1 (en) | Conversion instructions | |
EP4202659A1 (en) | Conversion instructions | |
US20230205527A1 (en) | Conversion instructions | |
EP4141655B1 (en) | Bfloat16 comparison instructions | |
US20220413861A1 (en) | Dual sum of quadword 16x16 multiply and accumulate | |
US20230060146A1 (en) | Bfloat16 classification and manipulation instructions | |
US20240103865A1 (en) | Vector multiply-add/subtract with intermediate rounding | |
EP4141656A1 (en) | Bfloat16 scale and/or reduce instructions | |
US20240103872A1 (en) | Truncation floating-point conversion to integer with saturation | |
EP4202657A1 (en) | Memory controller with arithmetic logic unit and/or floating point unit | |
EP4141657A1 (en) | Bfloat16 square root and/or reciprocal square root instructions | |
EP4141659A1 (en) | Bfloat16 arithmetic instructions | |
EP4202658A1 (en) | Zero cycle memory initialization | |
US20220197634A1 (en) | Efficient divide and accumulate instruction when an operand is equal to or near a power of two | |
US20240004662A1 (en) | Instructions and support for horizontal reductions | |
EP4307111A1 (en) | Vector unpack based on selection information | |
TW202405646A (zh) | 16位腦浮點(bfloat16)算術指令 | |
CN115525252A (zh) | 四字16×16乘法和累加的双求和 | |
CN115729617A (zh) | Bfloat16融合乘法指令 |