TW201643695A - 用於執行向量位元反轉和交叉的方法和設備 - Google Patents
用於執行向量位元反轉和交叉的方法和設備 Download PDFInfo
- Publication number
- TW201643695A TW201643695A TW104138336A TW104138336A TW201643695A TW 201643695 A TW201643695 A TW 201643695A TW 104138336 A TW104138336 A TW 104138336A TW 104138336 A TW104138336 A TW 104138336A TW 201643695 A TW201643695 A TW 201643695A
- Authority
- TW
- Taiwan
- Prior art keywords
- bit
- group
- vector
- bits
- processor
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 33
- 230000002441 reversible effect Effects 0.000 claims abstract description 10
- 230000015654 memory Effects 0.000 claims description 156
- 238000012545 processing Methods 0.000 claims description 15
- 230000006870 function Effects 0.000 claims description 14
- 230000004044 response Effects 0.000 claims description 6
- 230000008569 process Effects 0.000 claims description 5
- 230000002829 reductive effect Effects 0.000 claims description 2
- 230000017105 transposition Effects 0.000 claims description 2
- 230000003247 decreasing effect Effects 0.000 claims 1
- 238000007620 mathematical function Methods 0.000 claims 1
- 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 76
- 238000006073 displacement reaction Methods 0.000 description 40
- 238000010586 diagram Methods 0.000 description 31
- 238000007667 floating Methods 0.000 description 19
- 101000974356 Homo sapiens Nuclear receptor coactivator 3 Proteins 0.000 description 14
- 102100022883 Nuclear receptor coactivator 3 Human genes 0.000 description 14
- 238000003860 storage Methods 0.000 description 14
- 238000006243 chemical reaction Methods 0.000 description 13
- 238000004891 communication Methods 0.000 description 11
- 101000912503 Homo sapiens Tyrosine-protein kinase Fgr Proteins 0.000 description 10
- 102100037226 Nuclear receptor coactivator 2 Human genes 0.000 description 10
- 239000000872 buffer Substances 0.000 description 9
- 238000004364 calculation method Methods 0.000 description 8
- 235000012431 wafers Nutrition 0.000 description 8
- 230000003416 augmentation Effects 0.000 description 7
- 238000000605 extraction Methods 0.000 description 7
- 230000008859 change Effects 0.000 description 6
- 239000003795 chemical substances by application Substances 0.000 description 6
- 238000013461 design Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 238000013519 translation Methods 0.000 description 6
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 230000000295 complement effect Effects 0.000 description 4
- 239000000463 material Substances 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000036961 partial effect Effects 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 230000003321 amplification Effects 0.000 description 3
- 230000004907 flux Effects 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 238000003199 nucleic acid amplification method Methods 0.000 description 3
- 230000001629 suppression Effects 0.000 description 3
- 238000007792 addition Methods 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
- 239000000203 mixture Substances 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 101000668165 Homo sapiens RNA-binding motif, single-stranded-interacting protein 1 Proteins 0.000 description 1
- 102100039692 RNA-binding motif, single-stranded-interacting protein 1 Human genes 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 238000011065 in-situ storage Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 239000003607 modifier Substances 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000002093 peripheral 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
- 238000001228 spectrum Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000001052 transient 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/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/30018—Bit or string 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/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
- Complex Calculations (AREA)
Abstract
揭示用於執行向量位元反轉指令及交叉的設備及方法。舉例而言,處理器的一實施例包括:第一源向量暫存器,用以儲存第一複數個源位元群組,其中,用於位元群組的大小將於指令的立即值中被指定;第二源向量,用以儲存第二複數個源位元群組;向量位元反轉及交叉邏輯,用以從立即值決定位元群組大小以及用以回應地反轉第一源向量暫存器內鄰接的位元群組的位置,以產生一組反轉的位元群組,其中,向量位元反轉及交叉邏輯又將該組反轉的位元群組與第二複數個位元群組交錯;以及,目的地向量暫存器,用以儲存與第一複數個位元群組交錯之反轉的位元群組。
Description
本發明通常係關於電腦處理器領域。更特別地,本發明關於用於執行向量位元反轉和交叉的方法和設備。
指令集、或是指令集架構(ISA)是電腦架構的一部份,所述電腦架構的一部份是與程式化有關、包含本體資料型式、指令、暫存器架構、定址模式、記憶體架構、中斷及例外處理、以及外部輸入及輸出(I/O)。應注意,指令一詞於此大致上意指巨集指令,其是提供給處理器用於執行的指令,巨集指令係與微指令或微運算(micro-op)相反的,微指令或微運算是將巨集指令解碼之處理器的解碼器的結果。微指令或微運算可以配置成指令處理器上的執行單元執行運算以實施與巨集指令相關的邏輯。
ISA與用以實施指令集的處理器的處理器設計技術集之微架構有所區別。設有不同微架構的處理器共用共同的指令集。舉例而言,Intel® Pentium 4處理器、Intel® CoreTM處理器、及來自加州太陽谷的超微公司的處理器實
施幾乎相同版本的x86指令集(某些程度上增加更新的版本),但具有不同的內部設計。舉例而言,在使用習知的技術之不同微架構中,以不同方式實施相同的ISA暫存器架構,其包含專用的實體暫存器、使用暫存器重命名機制(例如使用暫存器別名表(RAT)、重排序緩衝器(ROB)及退出暫存器檔案。除非另外指明,否則,此處使用暫存器架構、暫存器檔案、及暫存器之文句以表示軟體/程式人員可看到者、及指令指明暫存器的方式。在需要明確性的情形中,將使用形容詞「邏輯的」、「架構的」、或「軟體可看見的」來表示暫存器架構中的暫存器/檔案,而不同的形容詞會被用以指明給定的微架構中的目的地暫存器(例如,實體暫存器、重排序緩衝器、退出暫存器、暫存器池)。
指令集包含一或更多指令格式。給定的指令格式界定不同的欄位(位元數目、位元位置)以特別指明要被執行的運算(運算碼)以及運算要於其上執行的運算元。某些指令格式可以經由指令樣板(或副子令格式)的界定而進一步分解。舉例而言,給定的指令格式的指令樣板可以被界定為具有不同子集合的指令格式欄位(所包含的多個欄位典型上是相同次序,但是,因為有較少的欄位被包含,所以,至少某些欄位具有不同的位元位置)及/或被界定為具有被不同解譯的給定欄位。使用給定的指令格式(以及,假使被界定時,在該指令格式的多個指令樣板中的給定之一中)以表示給定的指令,以及,指明運算及運算
元。指令串是特定的指令序列,其中,在序列中的各指令是依指令格式的指令之存在(以及,假使被界定時,是該指令格式的多個指令樣板中的給定之一)。
300‧‧‧暫存器架構
310‧‧‧向量暫存器
315‧‧‧寫入遮罩暫存器
325‧‧‧一般用途暫存器
345‧‧‧純量浮點堆疊暫存器檔案
350‧‧‧MMX緊縮整數平坦暫存器檔案
400‧‧‧管線
490‧‧‧核心
600‧‧‧處理器
700‧‧‧系統
800‧‧‧系統
900‧‧‧系統
1000‧‧‧系統晶片
1200‧‧‧主記憶體
1231‧‧‧向量位元反轉解碼邏輯
1241‧‧‧向量位元反轉執行邏輯
1255‧‧‧處理器
1300‧‧‧向量位元反轉邏輯
2131‧‧‧向量位元反轉及交叉解碼邏輯
2141‧‧‧向量位元反轉及交叉執行邏輯
從配合下述附圖的詳細說明,將可以更佳地瞭解本發明。
圖1A及1B是方塊圖,顯示根據本發明的實施例之泛型向量友善指令格式及其指令樣板;圖2A-D是方塊圖,顯示根據本發明的實施例之舉例說明的特定向量友善指令格式;圖3是根據本發明的一實施例之暫存器架構的方塊圖;圖4A是方塊圖,顯示根據本發明的實施例之舉例說明的有序提取、解碼、退出管線及舉例說明的暫存器重命名、亂序議題/執行管線;圖4B是方塊圖,顯示根據本發明的實施例之包含在處理器中的有序提取、解碼、退出核心及舉例說明的暫存器重命名、亂序議題/執行架構核心;圖5A是方塊圖,顯示單一核心、與其與晶粒上互連網路的連接;圖5B顯示根據本發明的實施例之圖5A的部份處理器核心的放大視圖;圖6是方塊圖,顯示根據本發明的實施例之單核心處
理器及具有集成的圖形和記憶體控制器之多核心處理器;圖7顯示根據本發明的一實施例之系統的方塊圖;圖8顯示根據本發明的實施例之第二系統的方塊圖;圖9顯示根據本發明的實施例之第三系統的方塊圖;圖10顯示根據本發明的實施例之系統晶片的方塊圖;圖11是方塊圖,對比根據本發明的實施例之將源指令集中的二進位指令轉換成目標指令集中的二進位指令之軟體指令轉換器的使用;圖12顯示本發明的實施例實施於其上的舉例說明的處理器;圖13-18顯示使用不同的立即值之根據本發明的一實施例之向量位元反轉邏輯;圖19顯示根據本發明的一實施例之方法;圖20顯示位元反轉運算集,被執行以反轉暫存器中的位元次序;圖21顯示本發明的一實施例實施於其上的舉例說明的處理器;圖22-24顯示本發明的一實施例中使用的向量位元反轉及交叉技術;圖25顯示舉例說明的使用向量位元反轉及交叉技術而執行的轉置運算;圖26A-B顯示舉例說明的使用向量位元反轉及交叉技術而執行的傾斜原始運算;及
圖27顯示根據本發明的一實施例之方法。
在下述說明中,為了說明之目的,揭示保留特定細節以助於更完整瞭解下述的本發明的實施例。但是,習於此技藝者顯然清楚知道,沒有這些特定細節中的某些細節,仍可實施本發明的實施例。在其它情形中,未詳細顯示習知的結構及裝置,以免模糊本發明的實施例之基本原理。
指令集包含一或更多指令格式。給定的指令格式界定不同的欄位(位元數目、位元位置)以特別指明要被執行的運算(運算碼)以及運算要對其執行的運算元。某些指令格式可以經由指令樣板(或副子令格式)的界定而進一步分解。舉例而言,給定的指令格式的指令樣板可以被界定為具有不同子集合的指令格式欄位(所包含的多個欄位典型上是相同次序,但是,因為有較少的欄位被包含,所以,至少某些欄位具有不同的位元位置)及/或被界定為具有被不同解譯的給定欄位。因此,使用給定的指令格式(以及,假使被界定時,在該指令格式的多個指令樣板中的給定之一中)以表示ISA的各指令,以及,包含用於指明運算及運算元。舉例而言,舉例說明的ADD指令具有特定運算碼及指令格式,指令格式包含運算碼欄位以指定該運算碼及運算元欄位以選取運算元的運算元(源1/目
的地及源2);以及,在指令串中此ADD指令的存在將在選取特定運算元的運算元欄位中具有特定內容。稱為進階向量擴充(AVX)(AVX1及AVX2)以及使用向量擴充(VEX)碼化設計的SIMD擴充集已經發行及/或公開(舉例而言,請參照2011年10月之Intel®64和IA-32架構軟體開發者手冊;以及,2011年6月之Intel®進階向量擴充程式參考)。
此處所述的指令實施例可以以不同格式具體實施。此外,於下詳述舉例說明的系統、架構、及管線。在些系統、架構、及管線上執行指令的實施例,但是不限於詳述的實施例。
向量友善指令格式是適用於向量指令的指令格式(例如,有某些欄位特定用於向量運算)。雖然說明經由向量友善指令格式而支援向量及純量運算之實施例,但是,替代的實施例可以僅使用向量友善指令格式向量運算。
圖1A-1B是方塊圖,顯示根據本發明的實施例之泛型向量友善指令格式及其指令樣板。圖1A是方塊圖,顯示根據本發明的實施例之泛型向量友善指令格式及其等級A指令樣板;而圖1B是方塊圖,顯示根據本發明的實施例之泛型向量友善指令格式及其等級B指令樣板。具體而
言,等級A及等級B指令樣板被界定用於泛型向量友善指令格式100,等級A及等級B指令樣板都未包含記憶體存取105指令樣板及記憶體存取120指令樣板。在向量友善指令格式的內容中泛型一詞係指指令格式未被束縛於任何特定的指令集。
將說明本發明的實施例,其中,向量友善指令格式支援下述:具有32位元(4位元組)或是64位元(8位元組)資料元件寬度(或大小)之64位元組向量運算元長度(或大小)(因此,64位元組向量由16個雙倍字大小元或是替代地由8個四倍字大小元組成);具有16位元(2位元組)或是8位元(1位元組)資料元件寬度(或大小)之64位元組向量運算元長度(或大小);具有32位元(4位元組)、64位元(8位元組)、16位元(2位元組)或是8位元(1位元組)資料元件寬度(或大小)之32位元組向量運算元長度(或大小);以及,具有32位元(4位元組)、64位元(8位元組)、16位元(2位元組)或是8位元(1位元組)資料元件寬度(或大小)之16位元組向量運算元長度(或大小);替代實施例以更多、更少或是不同的資料元件寬度(例如,128位元(16位元組)資料元件寬度)來支援更多、更少及/或不同的向量運算元大小(例如,256位元組向量運算元)。
在圖1A中的等級A指令樣板包含:1)在無記憶體存取105指令樣板之內,顯示無記憶體存取、完全捨入控制型運算110指令樣板及無記憶體存取、資料轉換型式運算
115指令樣板;以及,2)在記憶體存取120指令樣板之內,有顯示記憶體存取、暫時125指令樣板及記憶體存取、非暫時130指令樣板。圖1B中的等級B指令樣板包含:1)在無記憶體存取105指令樣板之內,顯示無記憶體存取、寫入遮罩控制、部份捨入控制型運算112指令樣板及無記憶體存取、寫入遮罩控制、向量長度型式運算117指令樣板;以及,2)在記憶體存取120指令樣板之內,顯示有記憶體存取、寫入遮罩控制127指令樣板。
泛型向量友善指令格式100包含以圖1A-1B中所示的次序列出的下述欄位。
格式欄位140-在此欄位中的特定值(指令格式識別符值)獨特地識別向量友善指令格式,並因而識別指令串中向量友善指令格式的指令發生。確切而言,以此欄位對於僅有泛型向量友善指令格式之指令集並非所需的觀點而言,此欄位是選加的。
基礎運算欄位142-其內容區別不同的基礎運算。
暫存器索引欄位144-其內容直接或是經由位址產生而指明源及目的地運算元在暫存器或在記憶體中的位置。這些包含足夠數目的位元以從PxQ(例如32x512、16x128、32x1024、64x1024)暫存器檔案中選取N個暫存器。雖然在一實施例中,N可以高達三個源及一個目的地暫存器,但是,替代實施例可以支援更多或是更少的源及目的地暫存器(例如,可以支援高達二個源,其中,這些源中之一也作為目的地,可以支援高達三個源,其中,這
些源中之一也作為目的地,可以支援高達二個源及一個目的地)。
修飾符欄位146-其內容區別指定及未指定記憶體存取的泛型向量指令格式中指令的發生;亦即,在無記憶體存取105指令樣板與記憶體存取120指令樣板之間作區分。記憶體存取運算對記憶體層級結構讀取及/或寫入(在某些情形中,使用暫存器中的值指定源及/或目的地位址),而非記憶體存取運算未如此作(例如,源及目的地是暫存器)。雖然在一實施例中,此欄位也在三不同方式之間選取以執行記憶體位址計算,但是,替代的實施例可以支援更多、更少、或是不同的方式以執行記憶體位址計算。
擴增運算欄位150-其內容區別多種不同運算中那一運算要加上基礎運算被執行。此欄位是內容特定的。在本發明的一實施例中,此欄位分成等級欄位168、阿爾發欄位152、貝它欄位154。擴增運算欄位150允許共同的運算組以單一指令而非2、3或4指令執行。
比例欄位160-其內容允許索引欄位的內容的比例用於記憶體位址產生(例如,用於使用2scale *索引+基礎之位址產生)。
位移欄位162A-其內容作為記憶體位址產生的一部份(例如,用於使用2scale *索引+基礎+位移之位址產生)。
位移因數欄位162B(注意,位移欄位162A直接在位
移因數欄位162B上方並列係表示一或另一者被使用)-其內容作為位址產生的一部份;其指明要依記憶體存取(N)的大小而比例化之位移因數,其中,N是記憶體存取中的位元組數目(例如,用於使用2scale*索引+基礎+比例化位移的位址產生)。冗餘的低階位元被忽略,因此,位移因數欄的內容乘以記憶體運算元全部大小(N)以產生計算有效位址時使用的最後位移。根據全運算碼欄位174(稍後說明)及資料操縱欄位154C,在運行時間時由處理器硬體決定N的值。在位移欄位162A及位移因數欄位162B不用於無記憶體存取105指令樣板及/或不同實施例僅實施二者中之一或不實施二者的情形中,它們是選加的。
資料元件寬度欄位164-其內容區別一些資料元件寬度中的那一寬度是要被使用(在某些實施例中對所有指令;在其它實施例中僅對某些指令)。在假使使用運算碼的某些態樣而僅有一資料元件寬度被支援及/或資料元件寬度被支援時不需要此欄位的情形中,此欄位是選加的。
寫入遮罩欄位170-其內容以每一資料元件位置為基礎而控制目的地向量運算元中的資料元件位置是否反應基礎運算及擴增運算的結果。等級A指令樣板支援合併寫入遮罩,而等級B指令樣板支援合併及零化寫入遮罩。當合併時,向量遮罩允許目的地中任何組的元在任何運算的執行期間受保護(由基礎運算及擴增運算指明)而免於更新;在其它的一實施例中,保留對應的遮罩位元具有0之
目的地的各元的舊值。相反地,當零化向量遮罩時允許目的地中的任何組的元在任何運算(由基礎運算及擴增運算指定)執行期間被零化;在一實施例中,當對應的遮罩位元具有0值時,目的地的元被設定為0。此功能的子集合是控制執行的運算的向量長度之能力(亦即,被修改的元的展幅,從第一至最後一個);但是,被修改的元不必是連續的。如此,寫入遮罩欄位170允許部份向量運算,包含載入、儲存、算術、邏輯、等等。雖然說明本發明的實施例,其中,寫入遮罩欄位170的內容選取一些含有要被使用的寫入遮罩之寫入遮罩暫存器中之一(因此,寫入遮罩欄位170的內容間接地識別要被執行的遮罩),但是,替代實施例取代地或增加地允許遮罩寫入欄位170的內容直接指定要被執行的遮罩。
立即欄位172-其內容允許立即性的規格。在此欄位未出現在未支援立即性的泛型向量友善格式實施中以及其未出現在未使用立即性的指令中之情形中,此欄位是選加的。
等級欄位168-其內容區別不同等級的指令。參考圖1A-B,此欄位的內容在等級A與等級B指令之間選取。在圖1A-B中,四角圓化的方形被用以標示特定值存在於欄位中(例如,分別在圖1A-B中用於等級欄位168的等級A168A及等級B168B)。
在等級A的非記憶體存取105指令樣板的情形中,阿爾發欄位152被解譯為RS欄位152A,其內容區別不同的擴增運算型式中那一型式是要被執行(例如,捨入152A.1及資料轉換152A.2分別被指定用於無記憶體存取、捨入型式運算110及無記憶體存取、資料轉換型式運算115指令樣板),而貝他欄位154區別被指定的型式的運算中那一運算是要被執行。在無記憶體存取105指令樣板中,比例欄位160、位移比例欄位162A、及位移比例欄位162B未出現。
在無記憶體存取完全捨入控制型運算110指令樣板中,貝他欄位154被解譯為捨入控制欄位154A,其內容提供靜態捨入。雖然在上述的發明實施例中,捨入控制欄位154A包含抑制所有浮點例外(SAE)欄位156及捨入運算控制欄位158,但是,替代實施例可以支援將這二概念編碼成相同欄位或是僅具有這些概念/欄位中之一或另一者(例如,可以僅具有捨入運算控制欄位158)。
SAE欄位156-其內容區別是否將例外事件報告禁能;當SAE欄位的156內容標示抑制被賦能時,給定的指令不報告任何種類的浮點例外旗標及不喚起任何浮點例外處理器。
捨入運算控制欄位158-其內容區別捨入運算組中何者要執行(例如,捨進、捨去、捨入至零、及捨入至最接
近的)。因此,捨入運算控制欄位158允許以每一指令為基礎之捨入模式的改變。在處理器包含用於指明捨入模式的控制暫存器之發明的一實施例中,捨入運算控制欄位150的內容置換該暫存器值。
在無記憶體存取資料轉換型式運算115指令樣板中,貝他欄位154被解譯為資料轉換欄位154B,其內容區別多個資料轉換中何者要被執行(例如,無資料轉換、調和、廣播)。
在等級A的記憶體存取120指令樣板的情形中,阿爾發欄位152被解譯為逐出暗示欄位152B,其內容區別逐出暗示中那一者是要被使用(在圖1A中,暫時152B.1及非暫時152B.2分別被指定用於記憶體存取、暫時125指令樣板以及記憶體存取、非暫時130指令樣板),而貝他欄位154被解譯為資料操縱欄位154C,其內容區別多個資料操縱運算(也稱為基元)中何者是要被執行(例如,無操縱;廣播;源的上轉;及目的地的下轉)。記憶體存取120指令樣板包含比例欄位160,且選加地包含位移欄位162A或位移比例欄位162B。
藉由轉換支援,向量記憶體指令對記憶體執行向量載入及向量儲存。如正常的向量指令般,向量記憶體指令以像資料元件方式對記憶體傳輸資料,而真正被傳送的元是由被選為寫入遮罩的向量遮罩的內容所指定。
暫時資料是很可能足夠快再被使用而從快取獲利之資料。但是,這是暗示,以及,不同的處理器可以以不同方式實施它,包含完全忽略暗示。
非暫時資料是不太可能足夠快再被使用以從第一層快取記憶體中的快取獲利之資料,且應被授予逐出優先權。但是,這是暗示,以及,不同的處理器可以以不同方式實施它,包含完全忽略暗示。
在等級B的指令樣板的情形中,阿爾發欄位152被解譯為寫入遮罩控制(Z)欄位152C,其內容區別由寫入遮罩欄位170控制的寫入遮罩是否應為合併或零化。
在等級B的非記憶體存取105指令樣板的情形中,貝他欄位154的部份是被解譯為RL欄位157A,其內容區別不同的擴增運算型式中那一運算型式是要被執行(例如,拾入157A.1以及向量長度(VSIZE)157A.2分別被指定用於無記憶體存取、寫入遮罩控制、部份捨入控制型運算112指令樣板以及無記憶體存取、寫入遮罩控制、VSIZE型式運算117指令樣板),而貝他欄位154的其餘部份區別具有指定型式的運算中何者是要被執行。在無記憶體存
取105指令樣板中,比例欄位160、位移欄位162A、及位移比例欄位162B不存在。
在無記憶體存取中,寫入遮罩控制、部份捨入控制型運算110指令樣板、貝他欄位154的其它部份被解譯為捨入運算欄位159A且例外事件報告被禁能(被給定的指令不報告任何種類的浮點例外旗標及不喚起任何浮點例外處理器)。
捨入運算控制欄位159A-正如同捨入運算控制欄位158般,其內容區別捨入運算組中何者要執行(例如,捨進、捨去、捨入至零、及捨入至最接近的)。因此,捨入運算控制欄位159A允許以每一指令為基礎之捨入模式的改變。在處理器包含用於指明捨入模式的控制暫存器之發明的一實施例中,捨入運算控制欄150的內容置換該暫存器值。
在無記憶體存取、寫入遮罩控制,VSIZE型式運算117指令樣板中,貝他欄位154的其餘部份被解譯為向量長度欄位159B,其內容區別要對多個資料向量長度中的那一資料向量長度執行(例如,128、256、或512位元組)。
在等級B的記憶體存取120指令樣板的情形中,貝它欄位154的一部份被解譯為廣播欄位157B,其內容區別廣播型資料操縱運算是否要被執行,而貝它欄位154中的其它部份被解譯為向量長度欄位159B。記憶體存取120指令樣板包含比例欄位160,以及,選加地包含位移欄位
162A或是位移比例欄位162B。
關於泛型向量友善指令格式100,完全運算碼欄位174顯示為包含格式欄位140、基礎運算欄位142、及資料元件件寬度欄位164。雖然顯示完全運算碼欄位174包含所有這些欄位的一實施例,但是,在未支援它們全部的實施例中,完全運算碼欄位174包含小於所有這些欄位的欄位。完全運算碼欄位174提供運算碼(opcode)。
擴增運算欄位150、資料元件寬度欄位164、及寫入遮罩欄位170允許以泛型向量友善指令格式的指令為基礎來指明這些特點。
寫入遮罩欄位及資料元件寬度欄位的結合會產生型式化的指令,其中,它們允許根據不同的資料元件寬度來施加遮罩。
等級A及等級B之內發現的各種指令樣板在不同的情形中是有利的。在本發明的某些實施例中,不同的處理器或是處理器之內不同的核心可以僅支援等級A、僅支援等級B、或支援這二等級。舉例而言,要用於一般目的之計算的高性能目的之亂序核心僅支援等級B,主要用於圖形及/或科學(通量)計算的核心僅支援等級A,以及用於支援二等級的核心可以支援二等級(當然,具有來自二等級的樣板及指令的某些混合,但非來自二等級的所有樣板及指令是在本發明的範圍之內)。而且,單一處理器包含多核心,所有這些核心支援相同等級,或者,其中,不同的核心支援不同的等級。舉例而言,在設有分別的圖形
及一般用途核心的處理器中,主要用於圖形及/或科學計算的複數個圖形核心中之一僅支援等級A,而一或更多一般用途核心可為具有用於僅支援等級B的一般用途計算之亂序執行及暫存器重命名之高性能一般用途核心。不具有分別的圖形核心之另一處理器可以包含支援等級A和等級B的一或更多一般用途有序或亂序核心。當然,在本發明的不同實施例中,來自一等級的特點也可在其它等級中實施。以高階語言撰寫的程式將被置於(舉例而言,僅即時被編譯或是靜態地被編譯成)各式各樣之不同的可執行形式中,包含:1)僅具有由用於執行的標的處理器所支援的等級的指令之形式;或是,2)具有使用所有等級的指令之不同組合撰寫的替代常式以及具有控制流程碼之形式,控制流程碼係根據由目前正執行碼的處理器所支援的指令而選取要執行的常式。
圖2是方塊圖,顯示根據本發明的實施例之舉例說明的特定向量友善指令格式。圖2顯示特定向量友善指令格式200,其在指定欄位的位置、大小、解譯、及次序、以及用於那些欄位中的某些欄位之值的情形中是特定的。特定向量友善指令格式200可以被用以擴充x86指令集,因而某些欄位類似於或同於現有的x86指令集中使用的欄位以及其擴充(例如,AVX)。此格式維持與具有延伸的現有x86指令集的前置編碼欄位、實數運算碼位元組欄位、
MOD R/M欄位、SIB欄位、位移欄位、及立即欄位一致。顯示來自圖2的欄位映射至來自圖1的欄位。
應瞭解,雖然為了說明而在泛型向量友善指令格式100的脈絡中參考特定向量友善指令格式200,以說明本發明的實施例,但是,除非特別申明,否則本發明不侷限於特定向量友善指令格式200。舉例而言,泛型向量友善指令格式100慮及用於各種欄位的各種可能大小,而特定向量友善指令格式200顯示為具有特定大小的欄位。具體舉例而言,雖然資料元件寬度欄位164顯示為特定向量友善指令格式200中的一位元欄位,但是,本發明不限於此(亦即,泛型向量友善指令格式100慮及資料元件寬度欄位164的其它大小)。
泛型向量友善指令格式100包含依圖2A中所示的次序而於下列出的下述欄位。
EVEX前置(位元組0-3)202-以四位元組形式編碼。
格式欄位140(EVEX位元組0,位元[7:0])-第一位元組(EVEX位元組0)是格式欄位140以及其含有0x62(用於區別發明的一實施例中向量友善指令格式的獨特值)。
第二-第四位元組(EVEX位元組1-3)包含提供特定能力的一些位元欄位。
REX欄位205(EVEX位元組1,位元[7-5])由EVEX.R位元欄位(EVEX位元組1,位元[7]-R)、EVEX.X位元欄位(EVEX位元組1,位元[6]-X)、及157BEX位元組1,位
元[5]-B)組成。EVEX.R、EVEX.X及EVEX.B位元欄位提供與對應的VEX位元欄位相同的功能性,且使用1s互補形式來編碼,亦即,ZMMO被編碼為1111B,ZMM15被編碼為0000B。如同此技藝中所知般,指令的其它欄位將暫存器索引的較低的三個位元編碼(rrr,xxx,及bbb),以致於藉由加上EVEX.R、EVEX.X、及EVEX.B,可以形成Rrrr、Xxxx、及Bbbb。
REX’欄位110-這是REX’欄位110的第一部份且是用以將擴充的32暫存器組的上16或下16編碼之EVEX.R’位元欄位(EVEX位元組1,位元[4]-R’)。在本發明的一實施例中,此位元與如下標示的其它位元以位元反轉格式儲存,以與BOUND指令區別(在已知的x8632位元模式中),BOUND指令的實數運算碼位元組是62,但是,在MOD R/M欄位(下述)中未接受MOD欄位中11的值;本發明的替代實施例未以反轉格式儲存此位元及下述其它標示的位元。1的值用以將下16暫存器編碼。換言之,藉由結合來自其它欄位的EVEX.R'、EVEX.R、及其它RRR以形成R'Rrrr。
運算碼映射欄位215(EVEX位元組1,位元[3:0]-mmmm)-它的內容將暗指的領先運算碼位元組(0F,0F 38,或0F 3)編碼。
資料元件寬度欄位164(EVEX位元組2,位元[7]-W)-由記號EVEX.W表示。EVEX.W用以界定資料型式的粒度(大小)(32位元資料元件或64位元資料元
件)。
EVEX.vvvv 220(EVEX位元組2,位元[6:3]-vvvv)-EVEX.vvvv的角色可以包含下述:1)EVEX.vvvv將以反轉(1s互補)形式指定的第一源暫存器運算元編碼,且對於具有2或更多源運算元的指令是有效的;2)EVEX.vvvv將對某些向量偏移以1s互補形式指定的目的地暫存器運算元編碼;或者3)EVEX.vvvv未將任何運算元編碼,欄位被保留且應含有1111b。因此,EVEX.vvvv欄位220將依反轉(1s互補)形式儲存的第一源暫存器指定符的4低階位元編碼。取決於指令,額外的不同EVEX位元欄位被用以擴充指定符大小至32暫存器。
EVEX.U 168等級欄位(EVEX位元組2,位元[2]-U)-假使EVEX.U=0,則其標示等級A或EVEX.U0;假使EVEX.U=1,則其標示等級B或EVEX.U1。
前置編碼欄位225(EVEX位元組2,位元[1:0]-pp)-提供額外的位元用於基礎運算欄位。除了提供支援給EVEX前置格式的舊有SSE指令,這也具有使SIMD前置小巧化(而非要求位元組來表示SIMD前置,EVEX前置僅要求2位元)的優點。在一實施例中,為了支援以舊有格式及EVEX前置格式等二各式使用SIMD前置(66H、F2H、F3H)之舊有SSE指令,這些舊有SIMD前置被編碼成SIMD前置編碼欄位;以及,在被提供給解碼器的PLA(以致於PLA可以執行這些舊有指令的舊有及EVEX等二格式而不用修改)之前,在運行時間時被擴展成舊有
SIMD前置。雖然較新的指令可以直接使用EVEX前置編碼欄位的內容作為運算碼擴充,但是,某些實施例為了一致性而以類似方式擴展但允許不同的意義由這些舊有SIMD前置規定。替代實施例可以重新設計PLA以支援2位元SIMD前置編碼,因而不要求擴展。
阿爾發欄位152(EVEX位元組3,位元[7]-EH;也稱為EVEX.EH、EXEX.rs、EVEX.RL、EVEX.寫入遮罩控制、及EVEX.N;也以α顯示)-如以往所述般,此欄位是內容特定的。
貝他欄位154(EVEX位元組3,位元[6:4]-SSS;也稱為EVEX.s2-0、EVEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB;也以βββ顯示)-如以往所述般,此欄位是內容特定的。
REX’欄位110-這是REX’欄位的餘部且是可被用以將擴充的32暫存器組的上16或下16編碼之EVEX.V’位元欄位(EVEX位元組3,位元[3]-V’)。此位元以位元反轉格式儲存。1的值被用以將下16暫存器編碼。換言之,藉由結合EVEX.V'、EVEX.vvvv以形成V'VVVV。
寫入遮罩欄位170(EVEX位元組3,位元[2:0]-kkk)-如同先前所述般,其內容指定寫入遮罩暫存器中的暫存器索引。在發明的一實施例中,特定值EVEX.kkk=000具有特別的表現,暗指無寫入遮罩用於特定的指令(這可以以各種方式實施,包含使用實體接線至所有或硬體之寫入遮罩,所述硬體是繞過遮罩硬體)。
實數運算碼欄位230(位元組4)也稱為運算碼位元組。在此欄位中指定運算碼的一部份。
MOD R/M欄位240(位元組5)包含MOD欄位242、Reg欄位244、及R/M欄位246。如同先前所述般,MOD欄位242的內容區別記憶體存取與非記憶體存取運算。Reg欄位244的角色可以總合為二情形:將目的地暫存器運算元或源暫存器運算元編碼,或是被當作運算碼擴充來處理且不被用以將任何指令運算元編碼。R/M欄位246的角色可以包含下述:將參考記憶體位址的指令運算元編碼,或者,將目的地暫存器運算元或源暫存器運算元編碼。
比例、索引、基礎(SIB)位元組(位元組6)-如同先前所述般,比例欄位150的內容是用於記憶體位址產生。SIB.xxx 254及SIB.bbb 256-這些欄位的內容先前已被述及與暫存器索引Xxxx及Bbbb有關。
位移欄位162A(位元組7-10)-當MOD欄位242含有10時,位元組7-10是位移欄位162A,且其與舊有32位元位移(disp32)相同工作並以位元組粒度工作。
位移因數欄位162B(位元組7)-當MOD欄位242含有01時,位元組7是位移因數欄位162B。此欄位的位置與以位元組粒度工作的舊有x86指令集8位元位移(disp8)的位置相同。由於disp8是正負號擴充,所以,其僅可以在-128與127位元組差距之間定址;以64位元組快取線的觀點而言,disp8使用可以被設定為僅四個真
正有用的值-128、-64、0、及64之8位元;由於通常需要更大的範圍,所以,使用disp32;但是,disp32要求4位元組。與disp8和disp32相反,位移因數欄位162B是disp8的再解譯;當使用位移因數欄位162B時,真實的位移由位移因數欄位的內容乘以記憶體運算元存取(N)所決定。此型式的位移被稱為disp8*N。這降低平均的指令長度(用於位移但是具有更大範圍的單一位元組)。此被壓縮的位移是根據有效的位移是記憶體存取的粒度之倍數的假設,因此,位址差距的冗餘低階位元不需被編碼。換言之,位移因數欄位162B替代舊有x86指令集8位元位移。因此,位移因數欄位162B以同於x86指令集8位元位移的方式編碼(以致於ModRM/SIM編碼規則不變),僅有的例外是disp8被過載至disp8*。換言之,編碼規則或編碼長度沒有變化,但是僅有硬體對位移值的解譯有變化(這需要將位移依記憶體運算元的大小來比例化以取得位元組方式的位址差距)。
立即欄位172如先前所述地操作。
圖2B是方塊圖,顯示根據本發明的一實施例之構成完全運算碼欄位174之特定的向量友善指令格式200的欄位。具體而言,完全運算碼欄位174包含格式欄位140、基礎運算欄位142、及資料元件寬度(W)欄位164。基礎運算欄位142包含前置編碼欄位225、運算碼映射欄位
215、及實數運算碼欄位230。
圖2C是方塊圖,顯示根據本發明的一實施例之構成暫存器索引欄位144之特定的向量友善指令格式200的欄位。具體而言,暫存器索引欄位144包含REX欄位205、REX’欄位210、MODR/M.reg欄位244、MODR/M.r/m欄位246、VVVV欄位220、xxx欄位254、及bbb欄位256。
圖2D是方塊圖,顯示根據本發明的一實施例之構成擴增運算欄位150之特定向量友善指令格式200的欄位。當等級(U)欄位168含有0時,其意謂EVEX.U0(等級A168A);當其含有1時,其表示EVEX.U1(等級B 168B)。當U=0及MOD欄位242含有11時(表示無記憶體存取運算),阿爾發欄位152(EVEX位元組3,位元[7]-EH)被解譯為rs欄位152A。當rs欄位152A含有1(捨入152A.1)時,貝它欄位154(EVEX位元組3,位元[6:4]-SSS)被解譯為捨入控制欄位154A。捨入控制欄位154A包含一位元SAE欄位156及二位元捨入運算欄位158。當rs欄位152A含有0(資料轉換152A.2)時,貝它欄位154(EVEX位元組3,位元[6:4]-SSS)被解譯為三位元資料轉換欄位154B。當U=0及MOD欄位242含有00、
01、或10(表示記憶體存取運算)時,阿爾發欄位152(EVEX位元組3,位元[7]-EH)被解譯為逐出暗示(EH)欄位152B及貝它欄位154(EVEX位元組3,位元[6:4]-SSS)被解譯為三位元資料操縱欄位154C。
當U=1時,阿爾發欄位152(EVEX位元組3,位元[7]-EH)被解譯為寫入遮罩控制(Z)欄位152C。當U=1及MOD欄位242含有11(表示無記憶體存取運算)時,貝它欄位154的一部份(EVEX位元組3,位元[4]-S0)被解譯為RL欄位157A;當其含有1(捨入157A.1)時,貝它欄位154的其餘部份(EVEX位元組3,位元[6-5]-S2-1)被解譯為捨入運算欄位159A,而當RL欄位157A含有0(VSIZE 157.A2)時,貝它欄位154的其餘部份(EVEX位元組3,位元[6-5]-S2-1)被解譯為向量長度欄位159B(EVEX位元組3,位元[6-5]-L1-0)。當U=1及MOD欄位242含有00、01或10(表示記憶體存取運算)時,貝它欄位154(EVEX位元組3,位元[6:4]-SSS)被解譯為向量長度欄位159B(EVEX位元組3,位元[6-5]-L1-0)及廣播欄位157B(EVEX位元組3,位元[4]-B)。
圖3是根據本發明的一實施例之暫存器架構300的方塊圖。在所示的實施例中,有512位元寬的32個向量暫存器310;這些暫存器稱為zmm0至zmm31。較低的16zmm暫存器的低階256位元覆蓋於暫存器ymm0-16之
上。較低的16-zmm暫存器的低階128位元(ymm暫存器的低階128位元)覆蓋於暫存器xmm0-15之上。如下述表格中所示般,特定向量友善指令格式200對這些被覆蓋的暫存器檔案操作。
換言之,向量長度欄位159B在最大長度與一或更多其它較短的長度之間選取,其中,每一此較短長度是先前長度的長度之一半;以及,不具向量長度欄位159B的指令樣板對最大向量長度運算。此外,在一實施例中,特定向量友善指令格式200的等級B指令樣板對緊縮的或純量的單一/雙倍精度浮點資料及緊縮的或純量的整數資料運算。純量運算是對zmm/ymm/xmm暫存器中最低階資料元件位置執行的運算;更高階的資料元件位置視實施例而保留成與它們在指令之前相同或者零化。
寫入遮罩暫存器315-在所示的實施例中,有8個大小均為64位元之寫入遮罩暫存器(k0至k7)。在替代實
施例中,寫入遮罩暫存器315大小為16位元。如同先前所述般,在本發明的一實施例中,向量罩暫存器k0無法作為寫入遮罩;當正常標示k0的編碼用於寫入遮罩時,其選取0xFFFF的實體接線的寫入遮罩,有效地使用於該指令的寫入遮罩禁能。
一般用途暫存器325-在所示的實施例中,有十六個64位元一般用途暫存器,它們與現有的x86定址模式一起用以將記憶體運算元定址。這些暫存器以名稱RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、及R8至R15表示。
純量浮點堆疊暫存器檔案(x87堆疊)345,MMX緊縮整數平坦暫存器檔案350疊於其上-在所示的實施例中,x87堆疊是八元堆疊,用以使用x87指令集延伸,對32/64/80位元浮點資料執行純量浮點運算;而MMX暫存器被用以對64位元緊縮暫存器資料執行運算,以及為了某些在MMX及XMM暫存器之間執行的運算而固持運算元。
本發明的替代實施例可以使用更寬或更窄的暫存器。此外,本發明的替代實施例可以使用更多、更少、或不同的暫存器檔案及暫存器。
為了不同目的而以不同方式、及在不同處理器中,實施處理器核心。舉例而言,這些核心的實施包含:1)要用
於一般用途計算的一般用途有序核心;2)要用於一般用途計算的高性能一般用途亂序核心;3)主要用於圖形及/或科學(輸貫量)計算的特定用途的核心。不同處理器的實施包含:1)CPU,包含要用於一般用途計算的一或更多一般用途有序核心及/或要用於一般用途計算的一或更多一般用途亂序核心;及2)副處理器,包含主要用於圖形及/或科學(輸貫量)計算的一或更多特定用途核心。這些不同的處理器導致不同的電腦系統架構,包含:1)在與CPU分別的晶片上的副處理器;2)在與CPU相同的封裝中在分別的晶粒上的副處理器;3)在與CPU相同的晶粒上的副處理器(在此情形中,此副處理器有時被稱為特定用途邏輯,例如集成的圖形及/或科學(輸貫量)邏輯,或是作為特定用途核心);及4)系統晶片,在相同晶粒上包含所述CPU(有時稱為應用核心或應用處理器)、上述副處理器、及其它功能。於下說明舉例說明的核心架構,接著是舉例說明的處理器及電腦架構的說明。
圖4A是方塊圖,顯示根據本發明的實施例之舉例說明的有序管線及舉例說明的暫存器重命名、亂序議題/執行管線。圖4B是方塊圖,顯示根據本發明的實施例之要包含於處理器中之舉例說明的暫存器重命名、亂序議題/執行架構核心以及有序架構核心之舉例說明的實施例。圖4A-B中的實線方塊顯示有序管線及有序核心,而選加的虛線方塊顯示暫存器重命名、亂序議題/執行管線及核心。在有序態樣是亂序態樣的子集合之假設下,說明亂序
態樣。
在圖4A中,處理器管線400包含提取級402、長度解碼級404、解碼級406、分配級408、重命名級410、排程(也稱為派遣或核發)級412、暫存器讀取/記憶體讀取級414、執行級416、寫回/記憶體寫入級418、例外處理級422、及提交級424。
圖4B顯示處理器核心490,處理器核心490包含耦合至執行引擎單元450之前端單元430,引擎單元450及前端單元430都耦合至記憶體單元470。核心490可為精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、很長指令字(VLIW)核心、或是混合或替代核心型式。關於又另一選項,核心490可為特別用途的核心,舉例而言,例如網路或通訊核心、壓縮引擎、副處理器核心、一般用途計算圖形處理單元(GPGPU)核心、圖形核心、等等。
前端單元430包含分支預測單元432,分支預測單元432耦合至指令快取單元434,指令快取單元434耦合至指令轉譯旁看緩衝器(TLB)436,指令轉譯旁看緩衝器(TLB)436耦合至指令提取單元438,指令提取單元438耦合至解碼單元440。解碼單元440(或解碼器)將指令解碼,以及產生微碼進入點、微指令、其它指令、或是從原始指令解碼、或是從原始指令以其它方式反應、或是從原始指令導出的其它控制訊號,以作為輸出的一或更多微運算。使用各種不同的機構,以實施解碼單元440。適當的
機構實例包含但不限於查詢表、硬體實施、可編程邏輯陣列(PLA)、微碼唯讀記憶體(ROM)、等等。在一實施例中,核心490包含儲存用於某些巨集指令的微碼(例如,在解碼單元440中或是在前端單元430之內)之微碼ROM或是其它媒體。解碼單元440耦合至執行引擎單元450中的重命名/分配器單元452。
執行引擎單元450包含重命名/分配器單元452,命名/分配器單元452耦合至退出單元454及一或更多排程器單元456的集合。排程器單元456代表任何數目的不同排程器,包含保留站、中央指令窗、等等。排程器單元456耦合至實體暫存器檔案單元458。各實體暫存器檔案單元458代表一或更多實體暫存器檔案,不同的實體暫存器檔案儲存例如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、等等一或更多不同的資料型式、狀態(例如,指令指標,指令指標是要被執行的下一指令的位址)、等等。在一實施例中,實體暫存器檔案單元458包括向量暫存器單元、寫入遮罩暫存器單元、及純量暫存器單元。這些暫存器單元提供架構向量暫存器、向量罩暫存器、及一般用途暫存器。實體暫存器檔案單元458由退出單元454重疊,以顯示實施暫存器重命名及失序執行的各種方式(例如,使用重排序緩衝器及退出暫存器檔案;使用未來檔案、歷史緩衝器、及退出暫存器檔案;使用暫存器映射及暫存器池;等等)。退出單元454及實體暫存器檔案單元458耦合至執行叢集460。執行叢集460包含
一或更多執行單元462的集合以及一或更多記憶體存取單元464的集合。執行單元462執行不同的運算(例如,偏移、加法、減法、乘法)以及對不同型式的資料(例如,純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)執行運算。雖然某些實施例包含專用於特定功能或功能集的一些執行單元,但是,其它實施例可以僅包含一執行單元或是多個都執行所有功能的執行單元。由於某些實施例產生用於某些型式的資料/運算之分別的管線,所以,排程器單元456、實體暫存器檔案458、及執行叢集460顯示為可能為複數的(例如,均具有它們自己的排程器單元、實體暫存器檔案單元、及/或執行叢集的純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線及/或記憶體存取管理,以及,在分別的記憶體存取管線的情形中,實施某些實施例,其中,僅有此管線的執行叢集具有記憶體存取單元464)。也應瞭解,在使用分別的管線時,這些管線中之一或更多可以是亂序核發/執行,而其它是有序的。
記憶體存取單元464的集合耦合至記憶體單元470,記憶體單元470包含耦合至資料快取單元474的資料TLB單元472,資料快取單元474耦合至階層2(L2)快取單元476。在一舉例說明的實施例中,記憶體存取單元464包含載入單元、儲存位址單元、及儲存資料單元,各單元耦合至記憶體單元470中的資料TLB單元472。指令快取單元434又耦合至記憶體單元470中的階層2(L2)快取單
元476。L2快取單元476耦合至一或更多其它階層的快取記憶體以及最後耦合至主記憶體。
舉例而言,舉例說明的暫存器重命名、亂序核發/執行核心架構如下所述地實施管線400:1)指令提取438執行提取及長度解碼級402和404;2)解碼單元440執行解碼級406;3)重命名/分配器單元452執行分配級408及重命名級410;4)排程器單元456執行排程級412;5)實體暫存器檔案單元458及記憶體單元470執行暫存器讀取/記憶體讀取級414;執行叢集460執行執行級416;6)記憶體單元470及實體暫存器檔案單元458執行寫回/記憶體寫入級418;7)各種單元涉及例外處理級422;以及,8)退出單元454及實體暫存器檔案單元458執行提交級424。
核心490支援一或更多指令集(例如,x86指令集(增加較新版本的某些擴充);加州太陽谷的MIPS Technologies的MIPS指令集;加州太陽谷的ARM Holdings的ARM指令集(加上選加的例如NEON等增加擴充)),包含此處所述的指令。在一實施例中,核心490包含邏輯以支援緊縮資料指令集擴充(例如AVX1、AVX2),藉以允許由很多多媒體應用所使用的運算使用緊縮資料而執行。
應瞭解,核心支援多緒(執行二或更多平行的運算或緒組),以及,以各種方式如此執行,這些方式包含時間切割多緒、同時多緒(其中,單一實體核心提供用於實體
核心同時正多緒化的多個緒中的各緒之邏輯核心)、或是其組合(例如,時間切割提取及解碼以及其後的同時多緒,例如Intel® Hyperthreading技術中所示)。
雖然在亂序執行的環境中說明暫存器重命名,但是,應瞭解,暫存器重命名可用於有序架構中。雖然所示的處理器的實施例也包含分別的指令及資料快取單元434/474以及共用的L2快取單元476,但是,替代實施例具有用於指令及資料之單一內部快取,例如階層1(L1)內部快取、或是多階層的內部快取。在某些實施例中,系統包含內部快取及外部快取的組合,外部快取是核心及/或處理器的外部。替代地,所有的快取可以是核心及/或處理器的外部。
圖5A-B顯示更特定之舉例說明的有序核心架構的方塊圖,其中,核心是晶片中數個邏輯區塊(包含相同型式及/或不同型式的其它核心)中之一。這些邏輯區塊視應用而經由設有某些固定功能邏輯之高頻寬互連網路(例如,環式網路)、記憶體I/O介面、及其它所需I/O邏輯而通訊。
圖5A是根據本發明的實施例之單一處理器核心、以及其對晶粒上互連網路502的連接及其本地子集合的階級2(L2)快取記憶體504之方塊圖。在一實施例中,指令解碼器500支援設有緊縮資料指令集擴充的x86指令集。L1快取記憶體506允許對快取記憶體低潛時存取至純量及向量單元。雖然在一實施例中(為了簡化設計),純量單元
508和向量單元510使用分開的暫存器集(分別為純量暫存器512和向量暫存器514)及在它們之間傳送的資料被寫至記憶體,然後從階層1(L1)快取記憶體506讀回,但是,本發明的替代實施例可以使用不同的方式(例如,使用單一暫存器集或是包含通訊路徑,允許資料在二暫存器檔案之間傳送而不用寫入及讀回)。
L2快取記憶體504的本地子集合是被分割成多個分別的本地子集合之通用L2快取的部份,每一處理器核心有一分別的本地子集合。各處理器核心對於它自己的L2快取記憶體504的本地子集合具有直接存取路徑。與存取它們自己的本地L2快取記憶體子集合之其它處理器核心相平行地,由處理器核心讀取的資料被儲存在L2快取子集合504中且可以被快速地存取。由處理器核心寫入的資料儲存在它自己的L2快取子集合504中,且假使需要時從其它子集合湧入。環式網路確保共用資料的同調性。環式網路是雙向的以允許例如處理器核心、L2快取記憶體及其它邏輯區塊以在晶片之內彼此通訊。各環式資料路徑是每一方向1012位元寬。
圖5B是根據本發明的實施例的圖5A中的處理器核心的部份之放大視圖。圖5B包含L1快取記憶體504的L1資料快取記憶體506A部份、以及關於向量單元510和向量暫存器514的更多細節。具體而言,向量單元510是16-寬的向量處理單元(VPU)(請參見16-寬的ALU 528),其執行整數、單精準浮點、及雙倍精準浮點指令
中之一或更多。VPU以調和單元520支援調和暫存器輸入、以數字轉換單元522A-B支援數字轉換、以及以記憶體輸入上的複製單元524支援複製。寫入遮罩暫存器526允許預測造成的向量寫入。
圖6是根據本發明的實施例之具有一個以上的核心、具有集成的記憶體控制器、及具有集成的圖形的處理器600的方塊圖。圖6中的粗線框顯示具有單核心602A、系統代理器610、一或更多匯流排控制器單元616的組之處理器600,而選加的虛線框顯示設有多核心602A-N、系統代理器單元610中一或更多整合的記憶體控制器元614的組、以及特定用途邏輯608的替代處理器600。
因此,處理器600的不同實施包含:1)CPU,設有特定用途邏輯608及核心602A-N,特定用途邏輯608是集成的圖形及/或科學(通量)邏輯(包含一或更多核心),核心602A-N是一或更多一般用途核心(例如,一般用途有序核心、一般用途亂序核心、二者之組合);2)副處理器,設有核心602A-N,核心602A-N是大量主要用於圖形及/或科學(通量)的特定用途核心;以及,3)副處理器,設有核心602A-N,核心1202A-N是大量一般用途的有序核心。因此,處理器600可為一般用途處理器、副處理器或特定用途處理,舉例而言,網路或通訊處理器、壓縮引擎、圖形處理器GPGPU(一般用途圖形處理單元),高通量多集成核心(MIC)副處理器(包含30或更多核心)、嵌入式處理器、等等。處理器可以實施在一或更多晶片
上。使用例如BiCMOS、CMOS、或NMOS等多種製程技術,處理器600可以實施在一或更多基底上及/或其一部份。
記憶體階層架構包含在核心內的一或更多階層的快取記憶體、一組或一或更多共用快取單元606、及耦合至集成的記憶體控制器單元614組之外部記憶體(未顯示)。共用快取單元606組可以包含例如階層2(L2)、階層3(L3)、階層4(L4)、或其它階層快取記憶體等一或更多中級快取、最後階層快取記憶體(LLC)、及/或其組合。雖然在一實施例中,環式基礎互連單元612將整合圖形邏輯608、共用快取單元606的組、及系統代理器單元610/集成的記憶體控制器單元614互連,但是,替代實施例可以使用任何數目的已知技術來互連這些單元。在一實施例中,在一或更多快取單元606與核心602-A-N之間維持同調性。
在某些實施例中,核心602A-N中之一或更多核心能夠多緒化。系統代理器610包含協調及操作核心602A-N之那些組件。系統代理器單元610可以包含例如電力控制單元(PCU)及顯示單元。PCU可以是或包含調節核心602A-N及集成的圖形邏輯608的電力狀態所需的邏輯及組件。顯示單元是用於驅動一或更多外部連接的顯示器。
以架構指令集的觀點而言,核心602A-N可以是同質的或異質的;亦即,核心602A-N中之二或更多能夠執行相同的指令集,而其它核心能夠僅執行該指令集的子集合
或不同的指令集。
圖7-10是舉例說明的電腦架構的方塊圖。用於膝上型電腦、桌上型電腦、手持PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位訊號處理器(DSP)、圖形裝置、電動遊戲裝置、機上盒、微控制器、行動電話、可攜式媒體播放器、手持裝置、及各式各樣的其它電子裝置之此領域中熟知的其它系統設計及配置也是適合的。一般而言,能夠併有此處所揭示的處理器及/或其它執行邏輯的複數個種類的系統或電子裝置通常是適合的。
現在參考圖7,其顯示根據本發明的一實施例之系統700的方塊圖。系統700可以包含耦合至控制器集線器720之一或更多處理器710、715。在一實施例中,控制器集線器720包含圖形記憶體控制器集線器(GMCH)790及輸入/輸出集線器(IOH)750(可以在分別的晶片上);GMCH 790包含記憶體及圖形控制器,記憶體740及副處理器745耦合至記憶體及圖形控制器;IOH 750將輸入/輸出(I/O)裝置760耦合至GMCH 790。替代地,記憶體及圖形控制器中之一或二者集成於處理器之內(如上所述),記憶體740及副處理器745直接耦合至處理器710、及設有IOH 750之單晶片中的控制器集線器720。
在圖7中以虛線標示額外的處理器715的選加本質。每一處理器710、715包含此處所述的一或更多處理核心以及可以是某些版本的處理器600。
舉例而言,記憶體740可以是動態隨機存取記憶體(DRAM)、相位改變記憶體(PCM)、或是二者的組合。對於至少一實施例,控制器集線器720經由多接點匯流排而與處理器710、715通訊,多接匯流排為例如前側匯流排(FSB)、例如快速路徑互連(QPI)等點對點介面、或是類似連接795。
在一實施例中,副處理器745是特定用途處理器,例如高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器、等等。在一實施例中,控制器集線器720包含集成的圖形加速器。
以包含架構、微架構、熱、耗電特徵、等等準則計量光譜的觀點而言,實體資源710、715之間有各種差異。
在一實施例中,處理器710執行控制一般型式的資料處理運算之指令。處理器指令可以嵌入在指令之內。處理器710將這些副處理器指令視為應由附加的副處理器745執行的型式。因此,處理器710在副處理器匯流排上或其它互連上核發這些副處理器指令(或是代表副處理器指令的控制訊號)給副處理器745。副處理器745接受及執行收到的處理器指令。
現在參考圖8,其顯示根據本發明的實施例之第一更特定舉例說明的系統800的方塊圖。如圖8中所示般,多處理器系統800是點對點互連系統,以及包含經由點對點互連850耦合的第一處理器870和第二處理器880。各處理器870及880可以是某版本的處理器600。在本發明的
一實施例中,處理器870和880分別是處理器710和715,而副處理器838是副處理器745。在另一實施例中,處理器870及880分別是處理器710和副處理器745。
處理器870及880顯示為分別包含集成的記憶體控制器(IMC)單元872和882。處理器870也包含點對點(P-P)介面876和878作為它的匯流排控制器單元的一部份;類似地,第二處理器880包含P-P介面886和888。處理器870、880可以使用P-P介面電路878、888而經由點對點(P-P)介面850來交換資訊。如同圖8中所示般,IMC 872和882將處理器耦合至各別記憶體,亦即記憶體832和記憶體834,它們可以是本地附著至各別處理器的主記憶體的部份。
處理器870、880使用點對點介面電路876、894、886、898,經由個別的P-P介面852、854而均可以與晶片組890交換資訊。晶片組890經由高性能介面839,而與副處理器838選加地交換資訊。在一實施例中,副處理器838是特別用途處理器,例如高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器、等等。
共用的快取記憶體(未顯示)可以包含在任一處理器中或是二處理器的外部,未經由P-P互連與處理器連接,以致於假使處理器置於低電力模式中時,任一或二處理器的本地快取資訊可以儲存在共用的快取記憶體中。
晶片組890可以經由介面896而耦合至第一匯流排816。在一實施例中,第一匯流排816可以是週邊元件互連(PCI)匯流排,或是例如PCI快速匯流排或其它第三代I/O互匯流排等匯流排,但是,本發明的範圍不侷限於此。
如圖8中所示般,各式各樣的I/O裝置814與匯流排橋接器818耦合至第一匯流排816,匯流排橋接器818耦合第一匯流排816至第二匯流排820。在一實施例中,例如副處理器、高通量MIC處理器、GPGPU、加速器(例如,圖形加速器或是數位訊號處理(DSP)單元)、現場可編程閘陣列、或是任何其它處理器等一或更多額外的處理器815耦合至第一匯流排816。在一實施例中,第二匯流排820可以是低接腳數(LPC)匯流排。在一實施例中,各種裝置可以耦合至第二匯流排820,舉例而言,包含鍵盤及/或滑鼠822、通訊裝置827及例如包含指令/碼及資料830的碟片驅動器或其它大量儲存裝置的儲存單元828。此外,音頻I/O 824可以耦合至第二匯流排820。注意,其它架構是可能的。舉例而言,取代圖8的點對點架構,系統可以實施多接點匯流排或其它此類架構。
現在參考圖9,其顯示根據本發明的實施例之第二更特定的舉例說明的系統900之方塊圖。圖8及9中類似的元件帶有類似的代號,以及,圖8的某些態樣在圖9中被省略,以免模糊圖9的其它態樣。
圖9顯示處理器870、880分別包含集成的記憶體及
I/O控制邏輯(CL)872和882。因此,CL 872、882包含集成的記憶體控制器單元及包含I/O控制邏輯。圖9顯示不僅記憶體832、834耦合至CL 872、882,I/O裝置914也耦合至控制邏輯872、882。舊有I/O裝置915耦合至晶片組890。
現在參考圖10,其顯示根據本發明的實施例之系統晶片(SoC)1000的方塊圖。圖6中類似的元件帶有類似的代號。而且,虛線框關於更多先進的SoC的選加特點。在圖10中,互連單元1002耦合至:應用處理器1010,包含一或更多核心202A-N的集合及共用快取單元606;系統代理器單元610;匯流排控制器單元616;整合記憶體控制器單元614;一組或一或更多副處理器1020,包含集成的圖形邏輯、影像處理器、音頻處理器、以及視頻處理器;靜態隨機存取記憶體(SRAM)單元1030;直接記憶體存取(DMA)單元1032;以及用於耦合至一或更多外部顯示器的顯示單元1040。在一實施例中,副處理器1020包含特定用途處理器,舉例而言,例如網路或通訊處理器、壓縮引擎、GPGPU、高通量MIC處理器、嵌入式處理器、等等。
此處揭示的機制實施例可以以硬體、軟體、韌體或這些實施方式的結合來實施。本發明的實施例可以實施成在可編程系統上執行的電腦程式或程式碼,可編程系統包括至少一處理器、儲存系統(包含依電性及非依電性記憶體及/或儲存元件)、至少一輸入裝置、及至少一輸出裝
置。
例如圖8中所示的程式碼830可以應用至輸入指令以執行此處所述的功能和產生輸出資訊。輸出資訊可以以已知方式應用至一或更多輸出裝置。為了此應用,處理系統包含具有例如數位訊號處理器(DSP)、微控制器、特定應用積體電路(ASIC)、或微處理器等處理器之任何系統。
程式碼可以以高階程序或物件導向的程式語言實施,以與處理系統通訊。假使需要時,程式碼也可以以組合或機器語言來實施。事實上,此處所述的機制在範圍上不侷限於任何特定的程式語言。在任何情形中,語言可以是經過編譯或解譯的語言。
至少一實施例的一或更多態樣可以由儲存在機器可讀取的媒體上之代表指令實施,代表指令代表處理器內各種邏輯,代表指令由機器讀取時促使機器製造邏輯以執行此處所述的技術。稱為「IP核心」的這些代表可以儲存在實體的、機器可讀取的媒體並供應至各式各樣的客戶或製造設施,而載入至真正地產生邏輯的製造機器或處理器。
此機器可讀取的媒體包含但不限於由機器或裝置製造或形成的物件之非暫時、實體配置,包括例如硬碟等儲存媒體、包含軟碟、光碟、光碟唯讀記憶體(CD-ROM)、光碟可重寫記憶體(CD-RW)、及磁光碟等任何其它型式的碟片、例如唯讀記憶體(ROM)、例如動態隨機存取記憶體、靜態隨機存取記憶體等隨機存取記憶體(RAM)、可抹拭可編程唯讀記憶體(EPPROM)、快閃記憶體、電可抹拭可
編程唯讀記憶體(EEPROM)等半導體裝置、相位改變記憶體(PCM)、磁性或光學卡、或適用於儲存電子指令的任何其它型式的媒體。
因此,本發明的實施例也包含含有指令或含有設計資料之非暫時、實體的機器可讀取的媒體,所述設計資料是例如硬體說明語言(HDL),其界定此處所述的結構、電路、裝置、處理器及/或系統特點。這些實施例也意指程式產品。
在某些情形中,指令轉換器可以用以將指令從源指令集轉換至標的指令集。舉例而言,指令轉換器可以將指令轉譯(例如,使用靜態二進位轉譯、包含動態編譯的動態二進位轉譯)、變體、模仿、或以其它方式轉換至由核心處理的一或更多其它指令。指令轉換器可以以軟體、硬體、韌體、或其結合來實施。指令轉換器可以是在處理器上、不在處理器上、或部份在處理器上及部份離開處理器。
圖11是方塊圖,將根據本發明的實施例之使用軟體指令轉換器以將源指令集中的二進位指令轉換成標的指令集中的二進位指令作對比。在顯示的實施例中,指令轉換器是軟體指令轉換器,但是,指令轉換器可以替代地以軟體、韌體、硬體、或其各種結合來實施。圖11顯示高階語言1102的程式,可以由x86編譯器1104編譯以產生x86二進位碼1106,二進位碼1106可以由具有至少一x86指令集核心1116的處理器原地執行。具有至少一x86
指令集核心1116的處理器代表藉由共容地執行或其它方式地處理下述,而能夠執行與具有至少一x86指令集核心的英特爾處理器實質上相同功能的任何處理器:(1)英特爾x86指令集核心的指令集的實質部份,或是(2)以在具有至少一x86指令集核心的英特爾處理器上執行為目標之應用程式或其它軟體的物件碼版本,以便取得與具有至少一x86指令集核心的英特爾處理器實質上相同的結果。x86編譯器1104代表可以操作以產生x86二進位碼1106(例如,物件碼)之編譯器,x86二進位碼1106藉由或不藉由額外的鏈結處理,都可以在具有至少一x86指令集核心1116的處理器上執行。類似地,圖11顯示高階語言1102的程式,使用替代指令集編譯器1108,可以將其編譯以產生替代指令集二進位碼1110,替代指令集二進位碼1110可以由不具有至少一x86指令集核心1114的處理器(例如,具有執行例如加州Sunnyvale的MIPS Technologies公司的MIPS指令集及/或加州Sunnyvale的ARM Holdings公司的ARM指令集之核心的處理器)原地執行。指令轉換器1112用以將x86二進位碼1106轉換成可以由不具有x86指令集核心1114的處理器原地執行的碼。由於能夠如此執行的指令轉換器難以製作,所以,此轉換的碼不易與替代指令集二進位碼1110相同;但是,所述轉換的碼將完成一般運算及由來自替代指令集的指令組成。因此,指令轉換器1112代表軟體、韌體、硬體或其組合,其經由模仿、模擬或任何其它處理而允許
不具有x86指令集處理器或核心的處理器或其它電子裝置執行x86二進位碼1106。
需要向量位元反轉運算以有效率地實施多個位元操縱常式。本發明的一實施例包含向量位元反轉指令,所述向量位元反轉指令會交換儲存在源暫存器中的鄰接位或位元群組之位置。特別地,向量位元反轉指令的一實施例是由立即值控制,立即值係指明要被反轉/交換的位元群組的大小。舉例而言,在一實施例中,1的立即值表示個別位元要被反轉,2的立即值表示位元對要被反轉;4的立即值表示4位元組(4位元)要被反轉;8的立即值表示位元組要被反轉;16的立即值表示字要被反轉;32的立即值表示雙倍字要被反轉。位元反轉指令的結果儲存在目的地暫存器中。此外,模式可以以立即值的3位元編碼,舉例而言,000用於1位元;001用於2位元;010用於4位元;011用於8位元;100用於16位元;及101用於32位元。此外,除了使用立即值之外,資訊可以直接編碼在指令本身中,以及具有用於每一位元大小的數個指令版本(例如,vrevcross1、vrevcross2、vrevcross4、等等)。
如圖12所示,顯示舉例說明的處理器1255,本發明的實施例可以於其上實施,處理器1255包含用於將向量位元反轉指令解碼之設有向量位元反轉解碼邏輯1231之
解碼器1230、以及用於執行已解碼的位元反轉指令之設有位元反轉執行邏輯1241的執行邏輯1240。
現在將說明舉例說明的處理器之其它細節。但是,應注意,本發明的基本原理不侷限於任何特定型式的處理器架構。
顯示的處理器架構包含一般用途暫存器(GRP)1205的組、向量暫存器1206的組、遮罩暫存器1207的組。在一實施例中,多個向量資料元件緊縮於各向量暫存器1206中,其具有512位元寬,用於儲存二個256位元值、四個128位元值、八個64位元值、十六個32位元值、等等。但是,本發明的基本原理不侷限於任何特定大小/型式的向量資料。在一實施例中,遮罩暫存器1207包含八個64位元運算元遮罩暫存器,用於對儲存在向量暫存器1206(例如,實施成上述遮罩暫存器k0-k7)中的值執行位元遮罩運算。但是,本發明的基本原理不侷限於任何特定遮罩大小/型式。
為了簡明起見,於圖12中顯示單一處理器核心(「核心0」)的細節。但是,將瞭解,圖12中所示的各核心可以具有與核心0相同的邏輯集。舉例而言,各核心包含專用等級1(L1)快取記憶體1212及等級2(L2)快取記憶體1211,用於根據指定的快取管理政策而快取指令及資料。L1快取記憶體1212包含用於儲存指令之分別的指令快取記憶體1220、以及用於儲存資料之分別的資料快取記憶體1221。以可為固定大小(例如長度64、128、
512位元組)之快取線的粒度,管理儲存於各式各樣的處理器快取記憶體內的指令及資料。本舉例說明的實施例之各核心具有:指令提取單元1210,用於從主記憶體1200及/或共用等級3(L3)快取記憶體1216提取指令;解碼單元1220,用於將指令解碼(例如,將程式指令解碼成微運算或是「μop」);執行單元1240,用於執行指令;以及,寫回單元1250,用於使指令退出及將結果寫回。
指令提取單元1210包含各式各樣習知的組件,包含:下一指令指標器1203,用於儲存要從記憶體1200(或是快取記憶體中之一)提取的下一指令之位址;指令轉譯旁看緩衝器(ITLB)1204,用於儲存最近使用的虛擬對實體指令位址對映,以增進位址轉譯速度;分支預測單元1202,用於推測地預測指令分支位址;以及,分支標的緩衝器(BTB)1201,用於儲存分支位址及標的位址。一旦被提取時,指令接著被串流至包含解碼單元1230、執行單元1240、及寫回單元1250之指令管線的其餘級。這些單元中的各單元之結構及功能是具有此技藝中的一般技術者所熟知的,且於此將不會詳述,以免模糊本發明的不同實施例之有關態樣。
如上所述,在一實施例中,向量位元反轉指令會在立即值的控制之下,交換儲存在源暫存器中的位元群組或是鄰接位元的位置並將結果儲存在目的地暫存器中,立即值係指明要被反轉/交換的的位元群組的大小。在一實施例中,僅允許2位元群組大小的冪次以致於所有位元群組具
有要交換的對。
圖13顯示舉例說明的實施例,其包含用於儲存要交換的位元群組或是位元之第一源暫存器SRC1 1301、以及用於儲存向量位元反轉指令的結果之目的地暫存器DST 1302。在一實施例中,SRC1及DST包括緊縮於512位元中向量暫存器(例如ZMM0、XMM1、等等)之64位元的資料。但是,如先前所述,本發明的基本原理不侷限於任何特定大小/型式的運算元或暫存器。注意,為了簡明起見,圖13僅顯示儲存於SRC1 1301及DST 1302中的資料之一部份。
在操作時,根據立即值1303中提供的控制值,向量位元反轉邏輯1300(如上所述,包含處理器管線中的解碼及執行級中的邏輯)將位元或位元群組從源暫存器SRC1 1301交換至目的地暫存器DST 1302。在圖13中所示的特定實例中,立即值1303設定於1,標示個別位元要被交換。結果,位元1及0的位置交換,位元2及3、4及5、6及7、8及9、等等也如此交換,直到位元62及63被交換。在一實施例中,向量位元反轉邏輯1300包括一或更多多工器的集合,以在立即值的控制之下,將位元群組從源暫存器SRC1 1301反轉至目的地暫存器DST 1302。
圖14顯示立即值1303具有標示成對位元要被交換之2的值之實施例。因此,如同所示,向量位元反轉邏輯1300將位元對0-1與位元對2-3交換;位元對4-5與位元
對6-7交換;位元對8-9與位元對10-11交換、等等,直到位元對60-61與位元對62-63交換。
圖15顯示立即值1303具有標示4位元組(4位元的群組)要被交換之4的值之實施例。因此,如同所示,向量位元反轉邏輯1300將位元0-3與位元4-7交換;位元8-11與位元12-15交換;位元16-19與位元20-23交換、等等,直到位元56-59與位元60-63交換。
圖16顯示立即值1303具有標示位元組要被交換之8的值之實施例。因此,如同所示,向量位元反轉邏輯1300將位元組0-7與位元組8-15交換;位元組16-23與位元組24-31交換;等等,直到位元組48-55與位元組56-63交換。
圖17顯示立即值1303具有標示字要被交換之16的值之實施例。因此,如同所示,向量位元反轉邏輯1300將字0-15與字16-31交換;字32-47與字48-63交換。
最後,圖18顯示立即值1303具有標示雙倍字要被交換之32的值之實施例。因此,如同所示,向量位元反轉邏輯1300將雙倍字0-31與雙倍字32-63交換。
圖19顯示根據本發明的一實施例之方法。可以在上述架構的環境內執行所述方法,但不侷限於任何特定箹統架構。
在1901,從系統記憶體提取或是從快取記憶體(例如L1、L2、或L3快取記憶體)讀取向量位元反轉指令。在1902,為回應向量位元反轉指令的解碼/執行,要反轉/
交換的輸入向量資料會儲存於源暫存器中。如同所述,在一實施例中,源暫存器是512位元向量暫存器以及要反轉/交換的向量資料包括緊縮於向量暫存器(例如64位元)內的一或更多資料元件。在1903,從指令的立即值提供執行向量位元反轉所需的控制資料。在1904,根據立即值而反轉位元群組或是個別位元。如上所述,在一實施例中,1的立即值標示個別位元要被反轉;2的立即值表示位元對要被反轉;4的立即值表示4位元組(4位元)要被反轉;8的立即值表示位元組要被反轉;16的立即值表示字要被反轉;32的立即值表示雙倍字要被反轉。在1905,包括反轉的位元或位元群組的資料儲存於目的地暫存器中,如上所述,目的地暫存器可為另一512位元的向量暫存器。反轉的位元或位元群組接著作為用於一或更多額外的指令之源。
舉例而言但非限定,可以執行位元反轉指令的序列以完全地反轉向量資料元件的所有位元。舉例而言,假使使用32、16、8、4、2、及1的立即值、使用目的地結果作為用於各後續指令的源,對64位元值執行向量位元反轉指令的序列,然後,在最後的目的地暫存器中反轉64位元值的所有位元。圖20顯示此運算的一部份,其顯示在源暫存器2001依7-0排序的初始位元組。如同所示,以4的立即值,執行第一向量位元反轉指令以將目的地暫存器2002中的位元3-0與7-4反轉,然後作為用於第二向量位元反轉指令的源暫存器。第二位元反轉指令具有2的立即
值,將位元3-2與1-0反轉以及位元7-6與5-4反轉,以及將結果儲存在目的地暫存器2003中。最後,以1的立即值,使用來自暫存器2003的資料,執行第三位元反轉指令,將位元1與0、位元3與2、位元5與4、及位元7與6反轉,以達成與初始集(76543210)完全反轉的位元集(01234567)。
在一實施例中,對於EVEV編碼實施,第一源運算元、第二源運算元、及目的地運算元都是ZMM暫存器。在一實施例中,向量位元反轉指令採取下述形式,其中,DEST是目的地以及SRC1包括含有要被反轉/交換的源:VPREVSTEPQ DEST,SRC1,IMM8
此外,下述偽碼提供根據本發明的一實施例執行的運算之表示:
因此,假定KL=8及VL=512,則使用FOR迴路(根據j)以選取位元群組要被辨識之不同的64位元四倍字中的各四倍字。具有「EVEX.b AND SRC3 *is memory*」之IF陳述表示假使「b」位元設定於EVEX位元欄中(典型上用於源廣播、捨入控制(與L’L相結合),或是抑制例外)以及假使正從系統記憶體讀取源資料時,則使用單一的64位元源值(亦即,j=0)。否則,根據j的目前值,選取要使用的資料元件。涉及h之IF及ELSE陳述指明要根據立即值(h:=IMM8[5:0])反轉的資料元件的大小以
及設定識別要被反轉的特定位元欄之b的值。
本發明的一實施例執行如上所述的向量位元反轉,但是也提供結合反轉的位元或位元群組與來自第二源的資料之能力。特別地,在一實施例中,使用向量位元反轉及交叉指令,執行來自第一源的元件內的分組位元之反轉以及藉由選取替代樣式的立元群組而將它們與第二源結合。指令的運算由立即值控制:位元5-0控制位元群組的大小,而位元6賦能或禁能二源的結合。此外,結合的次序由位元7控制。
在操作時,位元群組可如上所述地配對,形成大小在1與32位元之間的位元區塊。僅有2位元群組大小的冪次會被允許,以致於所有的群組具有對。各群組會與其鄰居成對並與其互換(交換)。在替換之後且假使立即位元6被設定時,藉由從一源或以替代方式從另一源選取位元的群,將運算的結果與其它源運算元相結合。在一實施例中,要被選取的第一運算元由位元7控制(例如0=首先從SRC2選取以及1=首先從SRC3選取)。
如圖21所示,顯示舉例說明的處理器1255,本發明的實施例可以於其上實施,處理器1255包含用於將向量位元反轉及交叉指令解碼之設有向量位元反轉及交叉解碼邏輯2131之解碼器1230、以及用於執行已解碼的位元反轉及交叉指令之設有位元反轉及交叉執行邏輯2141的執
行邏輯1240。在參考圖12的上述中提供說明舉例說明的處理器1255之其它細節。但是,應注意,本發明的基本原理不侷限於任何特定型式的處理器架構。
圖22顯示舉例說明的實施例,其包含第一源暫存器SRC3 2201及第二源暫存器SCR2 2202以用於儲存由向量位元反轉及交叉邏輯2200處理過的源位元或位元群組。也顯示目的地暫存器DST 2204,其用於儲存向量位元反轉及交叉邏輯2200執行的向量位元反轉及交叉運算的結果。在一實施例中,SRC2 2202、SRC3 2201、及DST 2204包括緊縮於512位元向量暫存器(例如ZMM0、ZMM1、等等)中的資料之64位元。但是,如先前所述般,本發明的基本原理不侷限於任何特定大小/型式的運算元或暫存器。
在操作時,在立即值2203的控制之下,向量位元反轉及交叉邏輯2200(如上述,包含處理器管線的解碼及執行級中的邏輯)執行例如上述所述的反轉運算。在圖22中所示的特定實例中,立即值的位元0-5標示反轉運算是要對資料的16位元群組(亦即字)執行。因此,在所示的實例中在SRC3 2201中的元A0-A3中的各元及在SRC2 2200中的元B0-B3中的各元之長度為16位元。如同所示,為回應立即值,向量位元反轉及交叉邏輯2200對第一源暫存器SRC3 2201中的資料執行反轉(將A3與A2交換以及將A1與A0交換)。在一實施例中,向量位元反轉及交叉邏輯2200包括一或更多多工器的集合,而在
立即值的控制之下,將來自源暫存器SRC1 1301的位元群組反轉以及將資料元件交錯,而在目的地暫存器DST 1302中產生結果。
此外,在一實施例中,立即值的位元6標示向量位元反轉及交叉邏輯2200是否應將來自第一源暫存器SRC3 2201的經過反轉的位元群組與第二源暫存器B0-B3中的資料元件交錯。舉例而言,在位元6中1的值表示交錯應發生。如此,除了執行來自第一源暫存器SRC3 2201的位元群組之反轉之外,向量位元反轉及交叉邏輯2200選取來自不同源暫存器的其它資料元件。在所示的實例中,選取資料元件A2(已被施加反轉運算)並將其置於目的地的最左方資料元件位置中,來自SRC2的B2置於下一資料元件位置,來自SRC3的A0接續於後,接著是來自SRC2的B0。在一實施例中,立即值的位元7標示資料元件交錯的次序。舉例而言,在圖22中,位元7設定於0,意指反轉的資料元件A2被置於最左方資料元件位置。
但是,如圖23所示,假使位元7被設定於1,則將來自SRC2的資料元件B3置於DST的最左方位置,接著是來自SRC3的A3,接著是來自SRC2的B1、接著是來自SRC3的A1。換言之,位元7標示來自SRC3的資料是否應佔據DST 2204中的偶數或奇數資料元件位置(以來自SRC2的資料佔據未由來自SRC3的資料佔據的其它位置)。總結,位元6標示是否應執行與第二源暫存器SRC2的交錯,以及,位元7標示執行交錯的次序。應注
意,向量位元反轉及交叉邏輯2200可以執行其運算以及將所有資料元件同時填充目的地暫存器DST 2204(例如在單一循環中)。
圖24顯示立即值的位元6設定於0的實例。如此,關閉與來自第二源暫存器SRC2 2202的資料元件交錯。結果,在本實施例中,向量位元反轉及交叉邏輯2200對第一源暫存器SRC3 2201內的位元群組執行反轉運算以及將結果儲存在目的地暫存器DST 2204中(如參考圖14-18之上述所述般)。
此處所述的向量位元反轉及交叉技術可以用以有效率地執行各式各樣不同的功能。舉例而言,圖25顯示當執行一般轉置演繹法時如何應用這些技術。源暫存器2501包含資料元件a0-a3,源暫存器2502包含資料元件b0-b3,源暫存器2503包含資料元件c0-c3,以及源暫存器2504包含資料元件d0-d3。在一實施例中,來自暫存器2501的元被反轉及與來自暫存器2502的元交錯以填充暫存器2512。因此,暫存器2512包含(從左至右)元a2、b2、a0、b0。此外,來自暫存器2502的元被反轉及與來自暫存器2501的元交錯以填充暫存器2511,造成元a3、b3、a1、b1。在一實施例中,對源暫存器2503及2504執行相同運算以填充暫存器2513及2514(亦即,將2503的元反轉及與2504交錯以填充2514及將2504的元反轉及與2503交錯以填充2513)。
在下一級中,在暫存器2511中的元a3-b3與元a1-b1
反轉(亦即,立即值增加以涵蓋第一級中使用的位元群組的二倍的位元群組)且將結果與暫存器2513中的資料元件交錯(再度地,使用較大的位元群組大小)。因此,如同所示,暫存器2523含有元序列:a1、b1、c1、d1(a1-b1從暫存器2511反轉以及c1-d1從暫存器2513插入)。類似地,在暫存器2513中的元c3-d3與元c1-d1相反轉且結果與暫存器2511中的(未反轉)資料元件交錯。因此,暫存器2521含有元序列:a3、b3、c3、d3。根據相同原理但以不同的源暫存器2512及2514,填充其餘的目的地暫存器2522及2524。
如同所示,上述運算序列的結束結果是含於源暫存器2501-2504中的矩陣被轉置於目的地暫存器2521-2524中。
圖26A及26B顯示本發明的實施例如何用以執行傾斜原始運算之另一實例。特別地,在圖26A中,源暫存器2601含有資料元件3、2、1、及0,以及,源暫存器2602含有資料元件3’、2’、1’、及0’。在級1中,資料元件3’與2’交換及資料元件1’與0’交換,造成暫存器2603中所示的序列(亦即,2’、3’、0’、1’)。如同所示,在級2中,暫存器2603中的結果與暫存器2601中的資料交錯,造成序列3,3’,1,1’。
圖26B顯示類似的處理(與圖26A中的處理同時地執行)但是源暫存器反轉。特別地,源暫存器2611含有3’、2’、1’、及0’及源暫存器2612含有3、2、1、及0資
料元件。在級1中,資料元件3與2交換及資料元件1與0交換,造成暫存器2603中所示的序列(亦即,2、3、0、1)。如同所示,在級2中,暫存器2603中的結果與暫存器2601中的資料交錯,造成序列2,2’,0,0’。
雖然為了說明目的而提供上述實例,但是,本發明的基本原理不侷限於任何特定功能。可以在各式各樣的不同功能之環境內,實施上述向量位元反轉及交錯技術。
圖27顯示根據本發明的一實施例之方法。所述方法可以實施於上述架構的環境內,但不侷限於任何特定架構。
在2701,從系統記憶體提取或是從快取記憶體(例如L1、L2、或L3快取記憶體)讀取向量位元反轉及交叉指令。在2702,為回應向量位元反轉指令的解碼/執行,將第一輸入向量資料儲存於第一源暫存器中以及將第二輸入向量資料儲存於第二源暫存器中。如同所述,在一實施例中,源暫存器是512位元向量暫存器以及要反轉/交換的向量資料包括緊縮於向量暫存器(例如64位元)內的一或更多資料元件。在2703,從指令的立即值(或者,更具體而言,從例如上述的位元0-5等立即值的一部份)提供執行向量位元反轉所需的控制資料。在2704,識別要反轉之來自第一源暫存器的位元群組或個別位元以及將位元群組反轉。
假使立即交錯位元被設定時,在2705判定時,則在2706,來自第一源暫存器的反轉的位元群組與來自第二源
暫存器的位元群組交錯。如上所述,位元群組交錯的次序也取決於立即值(舉例而言,例如上述的立即值的位元7的值)。假使立即交錯位元未被設定時,則在2707,將來自第一源的反轉的位元群組儲存在目的地暫存器中(例如忽略第二源暫存器中的資料)。
在一實施例中,對於EVEV編碼實施,第一源運算元是向量暫存器,及第二源運算元是向量暫存器或記憶體位置。目的地運算元是向量暫存器。如同所述,控制來自立即位元組:
如此,假定KL=8及VL=512,使用FOR迴路(根據
j)以選取位元群組要被辨識之不同的64位元四倍字中的各四倍字。涉及k的第一組IF/ELSE陳述從第一源暫存器旋轉及選取位元群組,以及,根據立即值(例如,假使IMM8[6]設定於1時),涉及k’的第二組IF/ELSE陳述從第二源暫存器選取(亦即交錯)位元群組。
在前述說明書中,參考本發明的特定舉例說明的實施例,說明本發明的實施例。但是,顯然可知,在不悖離後附的申請專利範圍中揭示的本發明的廣義精神及範圍之下,可以作各種修改及變化。因此,說明書及圖式被視為是說明性的而非限制性的。
本發明的實施例包含上述說明之各式各樣的步驟。步驟可以以機器可執行的指令具體實施,這些指令可用以促使一般用途或特定用途的處理器執行這些步驟。替代地,這些步驟可以由含有用於執行步驟之實體接線的邏輯之特定硬體組件、或是程式化的電腦組件及客製化硬體組件的任何組合所執行。
如同此處所述般,指令意指例如特定應用積體電路(ASIC)等硬體的特定配置,ASIC係配置成執行具有預定功能的某些運算或儲存在記憶體中的軟體指令,記憶體係以非暫時的電腦可讀取媒體具體實施。如此,使用儲存於及執行於一或更多電子裝置(例如終端站台、網路元件、等等)上的碼及資料,可以實施圖式中所示的技術。這些電子裝置使用電腦可讀取的媒體以儲存及通訊(內部地及/或經由網路而與其它電子裝置通訊)碼及資料,電
腦可讀取的媒體可為例如非暫時的電腦機器-可讀取的儲存媒體(例如磁碟;光碟;隨機存取記憶體;唯讀記憶體;快閃記憶體裝置;相變記憶體)以及暫時的電腦可讀取通訊媒體(例如電的、光學的、聲的或其它形式的傳播訊號-例如載波、紅外線訊號、數位訊號、等等)。此外,這些電子裝置典型地包含一或更多耦合至一或更多其它組件的處理器,一或更多其它組件可為例如一或更多儲存裝置(非暫時的機器可讀取的儲存媒體)、使用者輸入/輸出裝置(例如鍵盤、觸控螢幕、及/或顯示器)、及網路連接。處理器組及其它組件的耦合典型上經由一或更多匯流排及橋接器(也稱為匯流排控制器)。載送網路交通之儲存裝置及訊號分別代表一或更多機器可讀取的儲存媒體以及機器可讀取的通訊媒體。因此,給定的電子裝置之儲存裝置典型地儲存用於在該電子裝置的一或更多處理器的組上執行之碼及/或資料。當然,可以使用軟體、韌體、及/或硬體的不同組合,實施本發明的實施例之一或更多部份。在此詳細說明中,為了說明之目的,揭示複數個特定細節以助於完整瞭解本發明。但是,習於此技藝者將清楚,不用這些特定細節中的某些細節,仍可實施本發明。在某些情形中,未特別詳細地說明熟知的結構及功能,以免模糊本發明的標的。因此,本發明的範圍及精神應以後附的申請專利範圍之觀點來判斷。
1200‧‧‧主記憶體
1220‧‧‧I快取
1221‧‧‧資料快取
1201‧‧‧BTB
1202‧‧‧分支預測
1203‧‧‧下一IP
1204‧‧‧ITLB
1210‧‧‧指令提取
1230‧‧‧解碼
1231‧‧‧向量位元反轉解碼邏輯
1240‧‧‧執行
1241‧‧‧向量位元反轉執行邏輯
1250‧‧‧寫回/退出
1205‧‧‧一般用途暫存器
1206‧‧‧向量暫存器
1207‧‧‧遮罩暫存器
1255‧‧‧處理器
1211‧‧‧L1快取記憶體
1212‧‧‧L2快取記憶體
1216‧‧‧L3快取記憶體
Claims (25)
- 一種處理器,包括:第一源向量暫存器,用以儲存第一複數個源位元群組,其中,用於該些位元群組的大小會於指令的立即值中指定;第二源向量,用以儲存第二複數個源位元群組;向量位元反轉及交叉邏輯,用以從該立即值決定位元群組大小以及用以回應地反轉該第一源向量暫存器內鄰接的位元群組的位置,以產生一組反轉的位元群組,其中,該向量位元反轉及交叉邏輯是用以額外地將該組反轉的位元群組與該第二複數個位元群組交錯;以及目的地向量暫存器,用以儲存與該第一複數個位元群組交錯之該些反轉的位元群組。
- 如申請專利範圍第1項之處理器,其中,由於該交錯的結果,該些反轉的位元群組中的一半被選取而儲存在該目的地中,以及,該第二複數個位元群組中的一半被選取而儲存在該目的地中。
- 如申請專利範圍第2項之處理器,其中,該些反轉的位元群組的該被選取的一半將根據該立即值而插入於該目的地向量暫存器內的偶數位置或奇數位置,以及,其中,該第二複數個位元群組的該被選取的一半將被儲存在相對於該些反轉的位元群組的該些位置之交錯位置內。
- 如申請專利範圍第1項之處理器,其中,該向量位元反轉及交叉邏輯包括一或更多多工器以將來自該源向 量暫存器的該些位元群組反轉以及根據該立即值而在該目的地向量暫存器中將該些反轉的位元群組與來自該第二複數個位元群組的位元群組交錯。
- 如申請專利範圍第1項之處理器,其中,該些位元群組的該大小是選自1位元、2位元、4位元、8位元、16位元、及32位元組成的族群。
- 如申請專利範圍第1項之處理器,其中,該源向量暫存器及該目的地向量暫存器包括複數個512位元向量暫存器,各該512位元向量暫存器具有64位元資料元件,以及,其中,各位元群組包含在該64位元資料元件中之一者內。
- 如申請專利範圍第6項之處理器,其中,該向量位元反轉及交叉邏輯係用以從該立即值決定位元群組大小以及用以回應地反轉用於該源向量暫存器的多個64位元資料元件的鄰接位元群組的位置。
- 如申請專利範圍第1項之處理器,其中,該向量位元反轉及交叉邏輯係用以藉由首先反轉在最高等級的粒度的資料元件內鄰接的位元群組的位置,以及接著連續地降低該粒度直到該位元群組大小包括單一位元為止,而執行該資料元件內的所有位元的反轉。
- 如申請專利範圍第8項之處理器,其中,該資料元件是64位元,以及,其中,用於反轉鄰接位元群組的位置之該最高等級的粒度包括32位元的位元群組大小,用於反轉鄰接位元群組的位置之下一被選取的位元群組大 小包括16位元,用於反轉鄰接位元群組的位置之下一被選取的位元群組大小包括8位元,用於反轉鄰接位元群組的位置之下一被選取的位元群組大小包括4位元,用於反轉鄰接位元群組的位置之下一被選取的位元群組大小包括2位元,以及,用於反轉鄰接位元群組的位置之最後被選取的位元群組大小包括1位元。
- 如申請專利範圍第1項之處理器,又包括:指令提取單元,用以從記憶體或快取記憶體提取向量位元反轉指令,該位元反轉指令具有與其相關連的立即值,該向量位元反轉及交叉邏輯用以處理該向量位元反轉指令以從該立即值決定該位元群組大小、以及用以回應地反轉該源向量暫存器內鄰接的位元群組的位置而產生一組反轉的位元群組。
- 如申請專利範圍第10項之處理器,其中,該向量位元反轉及交叉邏輯包括向量位元反轉解碼組件用以將該向量位元反轉指令解碼而產生解碼的向量位元反轉指令、以及向量位元反轉執行組件用以執行該解碼的向量位元反轉指令。
- 如申請專利範圍第11項之處理器,其中,該解碼的向量位元反轉指令包括複數個微運算。
- 如申請專利範圍第1項之處理器,其中,該向量位元反轉及交叉邏輯是用以藉由產生多組反轉的位元群組及將該多組反轉的位元群組與包含來自該第二複數個位元群組的位元群組之額外的多組位元群組交錯,而執行數學 函數。
- 如申請專利範圍第13項之處理器,其中,該額外的多組位元群組中的至少一些包括複數位元群組,該些反轉的位元群組是從該複數位元群組產生的,該複數位元群組包括來自該第二複數個位元群組的位元群組。
- 如申請專利範圍第13項之處理器,其中,該數學函數包括轉置運算或是傾斜原始運算。
- 一種方法,包括:將第一複數個源位元群組儲存在第一源向量暫存器中,其中,用於該些位元群組的大小會於指令的立即值中指定;將第二複數個源位元群組儲存在第二源向量中;從該立即值決定位元群組大小以及回應地反轉該第一源向量暫存器內鄰接的位元群組的位置,以產生一組反轉的位元群組;將該組反轉的位元群組與該第二複數個位元群組交錯;以及將與該第一複數個位元群組交錯之該些反轉的位元群組儲存在目的地向量暫存器內。
- 如申請專利範圍第16項之方法,其中,由於該交錯的結果,該些反轉的位元群組中的一半被選取而儲存在該目的地中,以及,該第二複數個位元群組中的一半被選取而儲存在該目的地中。
- 如申請專利範圍第17項之方法,其中,該些反 轉的位元群組的該被選取的一半會根據該立即值而插入於該目的地向量暫存器內的偶數位置或奇數位置,以及,其中,該第二複數個位元群組的該被選取的一半將被儲存在相對於該些反轉的位元群組的該些位置之交錯位置內。
- 如申請專利範圍第16項之方法,其中,該向量位元反轉及交叉邏輯包括一或更多多工器以將來自該源向量暫存器的該些位元群組反轉以及根據該立即值而在該目的地向量暫存器中將該些反轉的位元群組與來自該第二複數個位元群組的位元群組交錯。
- 如申請專利範圍第16項之方法,其中,該些位元群組的該大小是選自1位元、2位元、4位元、8位元、16位元、及32位元組成的族群。
- 如申請專利範圍第16項之方法,其中,該源向量暫存器及該目的地向量暫存器包括複數個512位元向量暫存器,各該512位元向量暫存器具有64位元資料元件,以及,其中,各位元群組包含在該64位元資料元件中之一者內。
- 如申請專利範圍第21項之方法,又包括:從該立即值決定位元群組大小以及用以回應地反轉用於該源向量暫存器的多個64位元資料元件的鄰接位元群組的位置。
- 如申請專利範圍第16項之方法,又包括:藉由首先反轉在最高等級的粒度的資料元件內鄰接的位元群組的位置、然後連續地降低該粒度直到該位元群組大小包括 單一位元為止,以執行該資料元件內的所有位元的反轉。
- 如申請專利範圍第23項之方法,其中,該資料元件是64位元,以及,其中,用於反轉鄰接位元群組的位置之該最高等級的粒度包括32位元的位元群組大小,用於反轉鄰接位元群組的位置之下一被選取的位元群組大小包括16位元,用於反轉鄰接位元群組的位置之下一被選取的位元群組大小包括8位元,用於反轉鄰接位元群組的位置之下一被選取的位元群組大小包括4位元,用於反轉鄰接位元群組的位置之下一被選取的位元群組大小包括2位元,以及,用於反轉鄰接位元群組的位置之最後被選取的位元群組大小包括1位元。
- 一種系統,包括:記憶體,用以儲存程式碼及資料;快取階層,包括多個快取階層以根據指定的快取管理策略而快取該程式碼及資料;輸入裝置,用以從使用者接收輸入;處理器,用以執行該程式碼及處理該資料以回應來自該使用者的輸入,該處理器包括:第一源向量暫存器,用以儲存第一複數個源位元群組,其中,用於該些位元群組的大小將於指令的立即值中被指定;第二源向量,用以儲存第二複數個源位元群組;向量位元反轉及交叉邏輯,用以從該立即值決定位元群組大小以及用以回應地反轉該第一源向量暫存器內 鄰接的位元群組的位置,以產生一組反轉的位元群組,其中,該向量位元反轉及交叉邏輯是用以額外地將該組反轉的位元群組與該第二複數個位元群組交錯;以及目的地向量暫存器,用以儲存與該第一複數個位元群組交錯之該些反轉的位元群組。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/581,738 | 2014-12-23 | ||
US14/581,738 US9785437B2 (en) | 2014-12-23 | 2014-12-23 | Method and apparatus for performing a vector bit reversal and crossing |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201643695A true TW201643695A (zh) | 2016-12-16 |
TWI610228B TWI610228B (zh) | 2018-01-01 |
Family
ID=56129470
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104138336A TWI610228B (zh) | 2014-12-23 | 2015-11-19 | 用於執行向量位元反轉和交叉的方法和設備 |
Country Status (7)
Country | Link |
---|---|
US (2) | US9785437B2 (zh) |
EP (1) | EP3238029B1 (zh) |
JP (1) | JP6635438B2 (zh) |
KR (1) | KR20170097011A (zh) |
CN (1) | CN107077330B (zh) |
TW (1) | TWI610228B (zh) |
WO (1) | WO2016105759A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110914801A (zh) * | 2017-07-20 | 2020-03-24 | Arm有限公司 | 在数据处理设备中的向量交叉 |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9619214B2 (en) | 2014-08-13 | 2017-04-11 | International Business Machines Corporation | Compiler optimizations for vector instructions |
US9588746B2 (en) | 2014-12-19 | 2017-03-07 | International Business Machines Corporation | Compiler method for generating instructions for vector operations on a multi-endian processor |
US10169014B2 (en) | 2014-12-19 | 2019-01-01 | International Business Machines Corporation | Compiler method for generating instructions for vector operations in a multi-endian instruction set |
US10013253B2 (en) * | 2014-12-23 | 2018-07-03 | Intel Corporation | Method and apparatus for performing a vector bit reversal |
US9569190B1 (en) * | 2015-08-04 | 2017-02-14 | International Business Machines Corporation | Compiling source code to reduce run-time execution of vector element reverse operations |
US9880821B2 (en) | 2015-08-17 | 2018-01-30 | International Business Machines Corporation | Compiler optimizations for vector operations that are reformatting-resistant |
US11288067B2 (en) * | 2019-05-24 | 2022-03-29 | Texas Instruments Incorporated | Vector reverse |
US11042372B2 (en) * | 2019-05-24 | 2021-06-22 | Texas Instruments Incorporated | Vector bit transpose |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7197625B1 (en) | 1997-10-09 | 2007-03-27 | Mips Technologies, Inc. | Alignment and ordering of vector elements for single instruction multiple data processing |
WO2001026235A1 (fr) * | 1999-10-07 | 2001-04-12 | Matsushita Electric Industrial Co., Ltd. | Dispositif et procede de generation d'adresses d'entrelacement |
US6665790B1 (en) * | 2000-02-29 | 2003-12-16 | International Business Machines Corporation | Vector register file with arbitrary vector addressing |
US7822955B2 (en) * | 2003-01-21 | 2010-10-26 | Arm Limited | Data processing apparatus and method for utilizing endianess independent data values |
US7017028B2 (en) * | 2003-03-14 | 2006-03-21 | International Business Machines Corporation | Apparatus and method for updating pointers for indirect and parallel register access |
GB2411975B (en) * | 2003-12-09 | 2006-10-04 | Advanced Risc Mach Ltd | Data processing apparatus and method for performing arithmetic operations in SIMD data processing |
US9557994B2 (en) * | 2004-07-13 | 2017-01-31 | Arm Limited | Data processing apparatus and method for performing N-way interleaving and de-interleaving operations where N is an odd plural number |
US7933405B2 (en) | 2005-04-08 | 2011-04-26 | Icera Inc. | Data access and permute unit |
GB2456775B (en) * | 2008-01-22 | 2012-10-31 | Advanced Risc Mach Ltd | Apparatus and method for performing permutation operations on data |
US20090254736A1 (en) | 2008-04-07 | 2009-10-08 | Arm Limited | Data processing system for performing data rearrangement operations |
US9086872B2 (en) * | 2009-06-30 | 2015-07-21 | Intel Corporation | Unpacking packed data in multiple lanes |
CN102053816B (zh) * | 2010-11-25 | 2014-02-12 | 中国人民解放军国防科学技术大学 | 具有开关矩阵存储器的数据混洗单元及其混洗方法 |
US20120278591A1 (en) * | 2011-04-27 | 2012-11-01 | Advanced Micro Devices, Inc. | Crossbar switch module having data movement instruction processor module and methods for implementing the same |
US9176927B2 (en) * | 2011-11-08 | 2015-11-03 | The Royal Institution For The Advancement Of Learning/Mcgill University | Methods and systems for decoding polar codes |
EP2798504A4 (en) * | 2011-12-29 | 2016-07-27 | Intel Corp | PROCESSORS HAVING FULLY CONNECTED INTERCONNECTIONS SHARED BY VECTORIAL CONFLICT INSTRUCTIONS AND PERMUTATION INSTRUCTIONS |
US8959275B2 (en) * | 2012-10-08 | 2015-02-17 | International Business Machines Corporation | Byte selection and steering logic for combined byte shift and byte permute vector unit |
US9639356B2 (en) * | 2013-03-15 | 2017-05-02 | Qualcomm Incorporated | Arbitrary size table lookup and permutes with crossbar |
US9520906B2 (en) * | 2014-06-25 | 2016-12-13 | Qualcomm Incorporated | Switched capacitor transmitter circuits and methods |
US10193578B2 (en) * | 2014-07-10 | 2019-01-29 | The Royal Institution For The Advancement Of Learning / Mcgill University | Flexible polar encoders and decoders |
US10013253B2 (en) * | 2014-12-23 | 2018-07-03 | Intel Corporation | Method and apparatus for performing a vector bit reversal |
-
2014
- 2014-12-23 US US14/581,738 patent/US9785437B2/en active Active
-
2015
- 2015-11-19 TW TW104138336A patent/TWI610228B/zh not_active IP Right Cessation
- 2015-11-23 KR KR1020177013656A patent/KR20170097011A/ko active IP Right Grant
- 2015-11-23 EP EP15873966.4A patent/EP3238029B1/en active Active
- 2015-11-23 CN CN201580063801.5A patent/CN107077330B/zh active Active
- 2015-11-23 JP JP2017527685A patent/JP6635438B2/ja not_active Expired - Fee Related
- 2015-11-23 WO PCT/US2015/062064 patent/WO2016105759A1/en active Application Filing
-
2017
- 2017-10-10 US US15/729,566 patent/US10691452B2/en active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110914801A (zh) * | 2017-07-20 | 2020-03-24 | Arm有限公司 | 在数据处理设备中的向量交叉 |
CN110914801B (zh) * | 2017-07-20 | 2023-10-24 | Arm有限公司 | 在数据处理设备中的向量交叉 |
Also Published As
Publication number | Publication date |
---|---|
CN107077330B (zh) | 2021-06-04 |
US9785437B2 (en) | 2017-10-10 |
TWI610228B (zh) | 2018-01-01 |
JP2017539014A (ja) | 2017-12-28 |
EP3238029B1 (en) | 2019-08-21 |
US20160179529A1 (en) | 2016-06-23 |
WO2016105759A1 (en) | 2016-06-30 |
EP3238029A1 (en) | 2017-11-01 |
US20180032334A1 (en) | 2018-02-01 |
US10691452B2 (en) | 2020-06-23 |
JP6635438B2 (ja) | 2020-01-22 |
KR20170097011A (ko) | 2017-08-25 |
CN107077330A (zh) | 2017-08-18 |
EP3238029A4 (en) | 2018-08-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109791488B (zh) | 用于执行用于复数的融合乘-加指令的系统和方法 | |
TWI502499B (zh) | 執行將寫入罩暫存器轉換成向量暫存器中的索引值列表的系統、裝置及方法 | |
TWI506546B (zh) | 向量親合的指令格式及其執行 | |
TWI617978B (zh) | 用於向量索引載入和儲存之方法和設備 | |
TWI610228B (zh) | 用於執行向量位元反轉和交叉的方法和設備 | |
CN107220029B (zh) | 掩码置换指令的装置和方法 | |
CN114791795A (zh) | 用于复数乘法的装置和方法 | |
TWI663545B (zh) | 執行置換運算的處理器 | |
CN107003852B (zh) | 用于执行向量位混洗的方法和装置 | |
TWI486872B (zh) | 向量緊縮壓縮及重複之實施系統、設備和方法 | |
TWI628593B (zh) | 用以履行向量位元反轉之方法及設備 | |
CN117707622A (zh) | 用于具有可变精度输入操作数的融合乘-加操作的指令 | |
CN107391086B (zh) | 改进置换指令的装置和方法 | |
TW201810070A (zh) | 利用索引和立即數執行向量排列的方法和設備 | |
CN107193537B (zh) | 经改进的插入指令的装置和方法 | |
CN109643235B (zh) | 用于多源混合操作的装置、方法和系统 | |
TWI464676B (zh) | 映射源運算元至不同範圍的系統、設備及方法 | |
TW201732574A (zh) | 用於改善向量通量的系統、方法及設備 | |
TWI657372B (zh) | 用於執行向量位元聚集的方法、處理器和系統 | |
CN107003841B (zh) | 用于融合加法-加法指令的装置和方法 | |
TWI599953B (zh) | 用以執行大整數算數運算之方法及裝置 | |
CN118132146A (zh) | 用于下转换以及交错多个浮点值的装置和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |