TW201602904A - 排序加速度處理器,方法,系統,及指令 - Google Patents
排序加速度處理器,方法,系統,及指令 Download PDFInfo
- Publication number
- TW201602904A TW201602904A TW104105067A TW104105067A TW201602904A TW 201602904 A TW201602904 A TW 201602904A TW 104105067 A TW104105067 A TW 104105067A TW 104105067 A TW104105067 A TW 104105067A TW 201602904 A TW201602904 A TW 201602904A
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- instruction
- source
- deflation
- processor
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 56
- 230000001133 acceleration Effects 0.000 title description 14
- 230000004044 response Effects 0.000 claims abstract description 47
- 239000000463 material Substances 0.000 claims description 91
- 235000009854 Cucurbita moschata Nutrition 0.000 claims description 27
- 240000001980 Cucurbita pepo Species 0.000 claims description 27
- 235000009852 Cucurbita pepo Nutrition 0.000 claims description 27
- 235000020354 squash Nutrition 0.000 claims description 27
- 238000012545 processing Methods 0.000 claims description 25
- 238000005056 compaction Methods 0.000 claims description 16
- 238000004519 manufacturing process Methods 0.000 claims description 8
- 230000008878 coupling Effects 0.000 claims description 3
- 238000010168 coupling process Methods 0.000 claims description 3
- 238000005859 coupling reaction Methods 0.000 claims description 3
- 230000015654 memory Effects 0.000 description 153
- 239000013598 vector Substances 0.000 description 98
- 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 73
- 238000010586 diagram Methods 0.000 description 65
- 238000006073 displacement reaction Methods 0.000 description 41
- 238000009419 refurbishment Methods 0.000 description 25
- 238000006243 chemical reaction Methods 0.000 description 21
- 238000007667 floating Methods 0.000 description 20
- 230000003247 decreasing effect Effects 0.000 description 13
- 239000000872 buffer Substances 0.000 description 11
- 238000004891 communication Methods 0.000 description 11
- 230000003416 augmentation Effects 0.000 description 10
- 230000008859 change Effects 0.000 description 10
- 230000007246 mechanism Effects 0.000 description 9
- 235000012431 wafers Nutrition 0.000 description 9
- 238000009418 renovation Methods 0.000 description 8
- 239000003795 chemical substances by application Substances 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 6
- 230000036961 partial effect Effects 0.000 description 6
- 230000003068 static effect Effects 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
- 230000008569 process Effects 0.000 description 5
- 230000002441 reversible effect Effects 0.000 description 5
- 238000012163 sequencing technique Methods 0.000 description 5
- 238000007792 addition Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 230000000295 complement effect Effects 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 238000013507 mapping Methods 0.000 description 4
- 230000001419 dependent effect Effects 0.000 description 3
- 238000002156 mixing Methods 0.000 description 3
- 238000004088 simulation Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000000873 masking effect Effects 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000001629 suppression Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000003321 amplification Effects 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000009396 hybridization Methods 0.000 description 1
- 238000010348 incorporation Methods 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000011068 loading method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 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
- 238000003199 nucleic acid amplification method Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 102000054765 polymorphisms of proteins Human genes 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 230000006641 stabilisation Effects 0.000 description 1
- 238000011105 stabilization Methods 0.000 description 1
- 239000011232 storage material Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000009466 transformation Effects 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
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/06—Arrangements for sorting, selecting, merging, or comparing data on individual record carriers
- G06F7/08—Sorting, i.e. grouping record carriers in numerical or other ordered sequence according to the classification of at least some of the information they carry
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/22—Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
- G06F7/24—Sorting, i.e. extracting data from one or more carriers, rearranging the data in numerical or other ordered sequence, and rerecording the sorted data on the original carrier or on a different carrier or set of carriers sorting methods in general
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/22—Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
- G06F7/36—Combined merging and sorting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30021—Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/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/30098—Register arrangements
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30196—Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
Abstract
一種處理器態樣包含緊縮資料暫存器、及解碼單元以將指令解碼。指令標示要包含第一組至少四資料元件的第一源緊縮資料、標示要包含第二組至少四資料元件的第二源緊縮資料、及標示目的地儲存位置。執行單元與緊縮資料暫存器及解碼單元耦合。執行單元將結果緊縮資料儲存在目的地儲存位置中以回應指令。結果緊縮資料包含至少四索引,索引可識別第一及第二源緊縮資料中對應的資料元件位置。索引是儲存在結果緊縮資料中的位置中,位置是代表第一及第二源緊縮資料中對應的資料元件之排序次序。
Description
此處所述的實施例大致上關於處理器。特別地,此處所述的實施例大致上關於在處理器中排序資料。
在電腦、伺服器、資料中心、排序網路、等等中,廣泛使用資料排序作業。舉例而言,排序作業通常用於試算表、資料庫、結構化查詢語言(SQL)資料庫或伺服器、資料中心、高性能計算(HPC)、阿帕契海度普(Apache Hadoop)軟體架構、影像處理(例如用於中值濾波器、姿勢辨識、等等)、以及神經網路,上述僅列出一些例子。特別是當排序大量資料集時,排序作業在計算上是加強的且趨向於影響整體表現。
100‧‧‧處理器
104‧‧‧解碼單元
106‧‧‧執行單元
108‧‧‧緊縮資料暫存器
1700‧‧‧暫存器架構
1890‧‧‧核心
2000‧‧‧處理器
2100‧‧‧系統
2200‧‧‧系統
2300‧‧‧系統
2400‧‧‧系統晶片
參考用以顯示實施例之說明及附圖,可最佳地瞭解本發明。在圖式中:圖1是可操作以執行排序加速度指令的實施例之處理
器的實施例之方塊圖。
圖2是執行單一源排序索引指令的實施例之方法的實施例之方塊流程圖。
圖3是單一源排序索引作業的實施例之方塊圖。
圖4是單一源排序索引及資料元件作業的實施例之方塊圖。
圖5是執行二源排序索引指令的實施例之方法的實施例之方塊流程圖。
圖6是用於最小的一半資料元件作業的二源排序索引的實施例之方塊圖。
圖7是用於最大的一半資料元件作業的二源排序索引的一實施例之方塊圖。
圖8是用於最小的一半資料元件作業的二未排序源排序索引的實施例之方塊圖。
圖9是用於最小的一半資料元件作業的二源排序索引及資料的實施例之方塊圖。
圖10是用於最小的一半資料元件作業的具有遮罩之二源排序索引的實施例之方塊圖。
圖11是用於最大的一半資料元件作業的具有遮罩之二源排序索引的實施例之方塊圖。
圖12是用於最小的一半資料元件作業的具有遮罩之二未排序源排序索引的實施例之方塊圖。
圖13是用於最小的一半資料元件作業的具有遮罩的二源排序索引及排序資料實施例之方塊圖。
圖14是適合的緊縮資料暫存器組的實施例之方塊圖。
圖15A-15B是方塊圖,顯示根據本發明的實施例之同屬向量友善指令格式及其指令樣板。
圖16A是方塊圖,顯示根據本發明的實施例之舉例說明的特定向量友善指令格式。
圖16B是方塊圖,顯示根據本發明的一實施例之構成全運算碼欄位之特定向量友善指令格式的欄位。
圖16C是方塊圖,顯示根據本發明的一實施例之構成暫存器索引欄位之特定向量友善指令格式的欄位。
圖16D是方塊圖,顯示根據本發明的一實施例之構成擴增運算欄位之特定向量友善指令格式的欄位。
圖17是根據暫存器架構的實施例之方塊圖。
圖18A是方塊圖,顯示有序管線的實施例及重新命名亂序發佈/執行管線的暫存器之實施例。
圖18B是包含耦合至執行引擎單元的前端單元之處理器核心的實施例的方塊圖,引擎單元及前端單元都耦合至記憶體單元。
圖19A是單一處理器核心伴隨其對一晶粒互連網路的連接及其本地子集合等級2(L2)快取記憶體的實施例之方塊圖。
圖19B是圖19A的處理器核心的部份之展開視圖的實施例的方塊圖。
圖20是具有一個以上的核心之處理器、具有整合記
憶體控制器、及具有整合的圖形之處理器的方塊圖。
圖21是電腦架構的第一實施例的方塊圖。
圖22是電腦架構的第二實施例的方塊圖。
圖23是電腦架構的第三實施例的方塊圖。
圖24是電腦架構的第四實施例的方塊圖。
圖25是根據本發明的實施例之使用軟體指令轉換器以將源指令集中的二進位指令轉換成標的指令集中的二進位指令之方塊圖。
於此揭示排序加速度指令、執行指令的處理器、當處理或執行指令時由處理器執行的方法、及含有一或更多處理器以處理或執行指令的系統。在下述說明中,揭示眾多特定細節(例如,特定指令操作、緊縮資料格式、處理器配置、微架構細節、操作序列、等等)。但是,沒有這些特定細節,仍可實施實施例。在其它情形中,習知的電路、結構及技術未詳細顯示以免有礙本說明的瞭解。
圖1是可操作以執行排序加速度指令102的實施例之處理器100的實施例的方塊圖。在某些實施例中,處理器可為一般用途處理器(例如,通常用於桌上型、膝上型、或其它型式的電腦中的處理器)。或者,處理器可為特別用途處理器。適合的特定用途處理器包含但不限於網路處理器、通訊處理器、圖形處理器、加密處理器、共處理器、嵌入式處理器、數位訊號處理器(DPS)、及控制器
(例如微控制器)。處理器可為各種複雜指令集計算(CISC)處理器、精簡指令集計算(RISC)處理器、超長指令字(VLIW)處理器、其混合、其它型式、或是具有這些不同處理器的組合(例如在不同的核心中)中的任一。
在操作期間,處理器100接收排序加速度指令102的實施例。舉例而言,從指令提取單元、指令佇列、等等接收指令。排序加速度指令代表巨集指令、組合語言指令、機器碼指令、或是處理器的指令集的指含或控制訊號。在某些實施例中,排序加速度指令可明確地指明(例如,經由一或更多欄位或位元集)、或以其它方式標示(例如,暗示地標示、等等)源緊縮資料110,以及指明或以其它方式標示結果的緊縮資料114要被儲存之目的地(例如,目的地儲存位置)。在某些實施例中,指令可選擇地指明或以其它方式標示第二源緊縮資料112,以及,在某些實施例中,可選擇地指明或以其它方式標示第二結果的緊縮資料116要被儲存之第二目的地(例如,目的地儲存位置)。
再參考圖1,處理器包含解碼單元或解碼器104。解碼單元將排序加速度指令解碼。解碼單元輸出一或更多微指令、微作業、微碼登入點、已解碼指令或是控制訊號、或是反應、代表、及/或導自排序加速度指令之其它相對較低階的指令或控制訊號。一或更多較低階指令或控制訊號可經由一或更多較低階(例如,電路級或硬體級)作業
來實施更高階的指令。在某些實施例中,解碼單元包含接收指令之一或更多輸入結構(例如埠、互連、介面)、將指令解碼之與輸入結構耦合的指令辨認及解碼邏輯、以及輸出一或更多對應的較低階指令或控制訊號之與指令辨認及解碼邏輯相耦合的一或更多輸出結構(例如,埠、互連、介面)。使用包含但不限於微碼唯讀記憶體(ROM)、查詢表、硬體實施、可編程邏輯陣列(PLA)、及用以實施此技藝者習知的解碼單元之其它機構等各式各樣的不同機構,來實施解碼單元。
在某些實施例中,取代直接提供給解碼單元的排序加速度指令,可以可選擇地使用指令仿真器、翻譯器、解譯器、或其它指令轉換模組。各種式型的指令轉換模組是此技藝者中熟知的且可以以軟體、硬體、韌體、或其組合來實施。在某些實施例中,指令轉換模組位於處理器外部,例如,在分開的晶粒上及/或在記憶體中(例如,靜態、動態、或運行時間仿真模組)。舉例而言,指令轉換模組接收屬於第一指令集的排序加速度指令以及模擬、翻譯、變體、解譯、或以其它方式轉換排序加速度指令成為一或更多對應的或導出的屬於第二不同指令集之中間指令或控制訊號。第二指令集的一或更多中間指令或控制訊號提供給解碼單元,解碼單元將它們解碼成為可由處理器原有的硬體(例如一或多更執行單元)執行之一或更多較低階指令或控制訊號。
處理器100也包含緊縮資料暫存器108的組。各緊縮
資料暫存器代表可操作以儲存緊縮資料、向量資料、或SIMD資料之晶粒上的儲存位置。緊縮資料暫存器代表架構上可看見的暫存器(例如,架構暫存器檔案)。架構上可看見的或架構上的暫存器是軟體及/或程式人員可看見的以及/或由處理器的指令集的指令所標示的暫存器,以辨識運算元。這些架構暫存器與給定的微架構中非架構上可看見的或非架構的暫存器(例如,暫時暫存器、重排序緩衝器、退役暫存器、等等)是對比的。緊縮資料暫存器可以利用習知的技術而於不同的微架構中以不同的方式實施且不限於任何特定型式的電路。適當型式的暫存器之實例包含但不限於專用的實體暫存器、使用暫存器重命令的動態分配的實體暫存器、及其組合。
如同所示,在一些實施例中,第一源緊縮資料110、選加的第二源緊縮資料112、第一結果緊縮資料114、及選加的第二結果緊縮資料116均可以可選擇地儲存於緊縮資料暫存器中。替代地,記憶體位置、或其它儲存位置可用於這些運算元中之一或更多。此外,雖然它們於說明中顯示為分開的,但是,在某些實施例中,用於源緊縮資料的緊縮資料暫存器可再使用作為目的地儲存位置(例如,結果緊縮資料可寫於源緊縮資料上)。
再參考圖1,執行單元106與解碼單元104及緊縮資料暫存器108耦合。執行單元接收代表及/或導自排序加速度指令之一或更多已解碼或以其它方式轉換的指令或控制訊號。執行單元也接收第一源緊縮資料110,以及,在
某些實施例中為第二源緊縮資料。為了回應及/或因排序加速度指令的結果(例如,回應從指令解碼之一或更多指令或控制訊號),執行單元可操作或配置成以將第一結果緊縮資料114儲存在指令所標示的第一目的地中,以及,在某些實施例中,將第二結果緊縮資料116儲存在指令所標示的第二目的地中。在某些實施例中,執行單元也可選擇地儲存結果遮罩120(例如,在選加的遮罩暫存器118的組中)。在不同的實施例中,結果緊縮資料及/或結果遮罩可為圖3-4或6-13中之任一者。
執行單元及/或處理器包含特定或特別邏輯(例如,電晶體、積體電路、或是其它可能與韌體結合的硬體(例如儲存在非依電性記憶體中的指令)及/或軟體),其可操作以執行排序加速度指令、以及/或者為了回應及/或因指令的結果而儲存結果。舉例而言,執行單元包含算術邏輯單元、邏輯單元、資料重配置單元、等等。在某些實施例中,執行單元包含一或更多輸入結構(例如,埠、互連、介面)以接收源運算元、與輸入結構耦合的排序電路或邏輯107以接收及處理源緊縮資料和產生結果緊縮資料、以及與排序電路或邏輯107相耦合的一或更多輸出結構(例如,埠、互連、介面)以輸出結果緊縮資料。舉例而言,排序電路或邏輯包含比較及交換鏈、值為基礎的選取或路由階層、或其它排序電路或邏輯。
圖2是執行單一源排序索引指令的實施例之方法225的實施例之方塊流程圖。在各式各樣的實施例中,方法可
由處理器(例如圖1的處理器)、指令處理設備、或積體電路執行。此處對圖1的處理器說明之組件、特點、及特定選加的細節也可選擇地應用至圖2的方法及/或作業。
在區塊226,方法包含接收單一源排序索引指令。在處理器或其部份處(例如指令提取單元、解碼單元、匯流排介面單元)接收指令。在各種態樣中,可從晶粒外的源(例如,從記憶體、互連、等等)、或是從晶粒上的源(例如,從指令快取記憶體、指令佇列)接收指令。指令可以指明或以其它方式標示源緊縮資料,所述源緊縮資料包含未依排序次序的至少四資料元件(例如在緊縮資料中未以漸增或漸減的量值排序)。指令也可指明或以其它方式標示目的地儲存位置。
在方塊227,為回應及/或因指令結果,將結果緊縮資料儲存在目的地儲存位置。代表地,執行單元或處理器可以執行指令及儲存結果。結果緊縮資料包含至少四索引。在某些實施例中,索引可以辨識源緊縮資料中對應的資料元件。在某些實施例中,索引可以儲存在代表源緊縮資料的對應資料元件之排序的次序之結果緊縮資料中的位置中。亦即,索引可以依排序的次序而儲存,其中,它們不是根據索引本身的值而是根據它們在源緊縮資料中對應的資料元件的值來排序。在某些實施例中,結果緊縮資料包含對應於源緊縮資料中的所有資料元件之索引。
圖3是方塊圖,顯示為回應單一源排序索引指令的實施例而執行之單一源排序索引作業330的實施例。單一源
排序索引指令可以指明或以其它方式標示具有至少四資料元件的源緊縮資料310。源緊縮資料可儲存於緊縮資料暫存器、記憶體位置、或其它儲存位置中。共同地,在源緊縮資料中資料元件的數目可以等於源緊縮資料的位元尺寸或寬度除以各資料元件的位元尺寸或寬度。在各式各樣的實施例中,源緊縮資料的寬度可為64位元、128位元、256位元、512位元、或1024位元。在各式各樣的實施例中,各資料元件的寬度可為8位元、16位元、32位元、或64位元。在一特定的非限定實例中,源緊縮資料可為512位元寬及具有十六個32位元資料元或八個64位元資料元件。資料元件可具有整數、定點、或浮點格式。
在特別顯示實例中,源緊縮資料具有八個資料元件。八個資料元件從右方最低效或最低次序位元位置至左方最高效或最高次序位元位置具有值-4、1、8、12、43、55、1、及12。這些值未依排序次序(舉例而言,在緊縮資料中未依漸增或漸減次序排序)。
為回應單一源排序索引指令,產生(例如由執行單元106產生)結果緊縮資料314並將其儲存在目的地儲存位置中。目的地儲存位置可由指令指明或以其它方式標示。在各式各樣的實施例中,目的地儲存位置可為緊縮資料暫存器、記憶體位置、或其它儲存位置。目的地儲存位置可以是用於源緊縮資料之相同的儲存位置、或是不同的儲存位置。
在某些實施例中,結果緊縮資料包含至少四索引。在
特別顯示的實例中,結果緊縮資料具有八個索引。各索引指向、識別、或是相關連至源緊縮資料中單一對應的資料元件。各資料元件具有位於對應的索引所標示的源緊縮資料內的位置。索引代表運算元內的資料元件的相對位置或偏移。舉例而言,根據用於說明之一可能的方式,0至7的索引值代表從最低至最高效位元位置(如同所示從右至左)經過緊縮資料的第一至第八位置中的八個資料元件。為了進一步說明,具有值-4的資料元件具有0的索引,具有值8的資料元件具有2的索引,具有值43的資料元件具有4的索引,等等。替代地,可以使用不同的其它現有方式(例如,從1而非0開始,從7至0向後索引,任意對映方式,等等)。索引具有足以代表被索引的位置之位元數目(例如,在顯示的實例中為3位元)。
在某些實施例中,索引可以儲存在要代表源緊縮資料中對應的資料元件之排序次序的結果緊縮資料中的位置中。在所示的實例中,排序次序是漸增次序,從最低效至最高效位元位置,但是,可以替代地選擇漸減次序。對於在所示實例中的值,漸增的排序次序為-4、1、1、8、12、12、43、及55。結果,對應於具有-4的值之資料元件的0索引值儲存在結果緊縮資料中的第一或最低次序位置中,對應於具有1的值之最右資料元件的1索引值儲存在第二或次低次序位置中,等等。在顯示中,使用箭頭以顯示索引與資料元件之間的對應性。
注意,結果緊縮資料儲存排序索引而不是排序源資料
元件。在某些實施例中,排序索引可選擇地由不同的指令接續地使用,以將源資料元件排序。舉例而言,在某些實施例中,排列指令、混洗指令、等等可以使用索引以將源資料元件排序。舉例而言,排列或混洗指令可以將具有索引的結果緊縮資料314標示為第一源運算元以及將源緊縮資料310標示為第二源運算元,以及,儲存具有根據索引控制而排序的資料元件之結果緊縮資料。適當指令的一特定實例是VPERMD指令,其說明於可從位於美國加州Santa Clara的Intel公司取得之2013年發行的Intel架構指令集擴充編程參考(Intel® Architecture Instruction Set Entensions Programming Reference)319433-017中。
但是,在某些實施例中,有利的是儲存索引以取代排序的資料元件。舉例而言,在源緊縮資料310的源資料元件之外或取代它,使用排序索引以將其它資料排序。舉例而言,這可為在各種不同資料結構中的情形,其中,源資料元件作為排序鑰及均與多個資料元件相關連。為更進一步說明,考慮以行及列配置的表格(例如試算表)的簡單實例。一行列出發明人名字,而另一行列出發明人的識別號碼。名稱及識別號碼需要一起被儲存且彼此一致。舉例而言,排序可以根據名字作為排序鑰,以及,將排序的索引作為結果儲存。接著使用排序的索引以將名字及識別號碼都排序。因此,在某些實施中,相較於儲存排序的資料元件,儲存排序的索引可以提供例如排序其它相關連的資料之彈性及能力等優點。
在某些實施例中,排序可以依穩定次序(例如遞減次序)完成。穩定係意指假使二元件具有相等的搜尋鑰,則它們之間相對的次序不會改變。舉例而言,假使你有二列相同的發明人名字,但不同的識別號碼,以及你根據名字來排序表格時,則識別號碼的次序不會改變。這與不穩定次序是成對比的,在不穩定次序中,不保證相對次序,且具有相等鑰的元件會被混洗。
圖4是方塊圖,顯示為回應單一源排序索引及資料元件指令而執行之單一源排序索引及資料元件作業432的實施例。圖4的作業與圖3的作業有某些相似性。為了避免模糊說明,主要將說明用於圖4的作業之不同及/或增加的特徵,而不重複與圖3的作業有關之所有可選擇地類似的或共同的特徵及細節。但是,除非另外說明或清楚表示,否則,先前說明的圖3的作業之特徵及細節也可選擇地應用至圖4的作業。
單一源排序索引及資料元件指令可以指明或以其它方式標示具有四資料元件的源緊縮資料410。源緊縮資料及資料元件如本文它處中所述般(例如如圖3所示般)。
產生第一結果緊縮資料414(例如由執行單元106產生)及將其儲存在第一目的地儲存位置,以回應指令。第一結果緊縮資料414具有至少四索引。第一結果緊縮資料可如本文中它處所述般(例如,如圖3所示般)。
在本實施例中,也產生第二結果緊縮資料416及將其儲存在第二目的地儲存位置,以回應指令。第二目的地儲
存位置可由指令指明或以其它方式標示,以及可為緊縮資料暫存器、記憶體位置、或其它儲存位置。第二結果緊縮資料可包含對應的資料元件,對應的資料元件對應於儲存在第一結果緊縮資料414中的索引、儲存在反應排序次序之第二結果緊縮資料416的位置中之索引。舉例而言,依漸增排序次序,第二結果緊縮資料儲存從顯示的右方至左方之值-4,1,1,8,12,12,43及55。在另一實施例中,使用漸減次序取代索引及資料元件。
將排序的索引儲存為圖3中的結果。將排序的索引及排序的資料元件儲存為圖4中的結果。在另一實施例中,可選擇地儲存排序資料元件但不是索引,以回應指令。
圖5是執行二源排序索引指令的實施例之方法535的實施例之方塊流程圖。在各式各樣的實施例中,由處理器(例如圖1的處理器)、指令處理設備、數位邏輯裝置、或積體電路,執行方法。此處對於圖1的處理所述的組件、特點、及特定選加的詳細也可選擇地應用至圖5的作業及/或方法。
在方塊536,方法包含接收二源排序索引指令。在各種態樣中,在處理器或其部份在處理器或其部份處(例如指令提取單元、解碼單元、匯流排介面單元)接收指令。在各種態樣中,可從晶粒外的源(例如,自記憶體、互連、等等)、或是從晶粒上的源(例如,從指令快取記憶體、指令佇列)接收指令。二源排序索引指令可以指明或以其它方式標示包含第一組至少四資料元件的第一源緊縮
資料,以及指明或以其它方式標示包含第二組至少四資料元件的第二源緊縮資料。指令也可指明或以其它方式標示目的地儲存位置。
再參考圖5,在方塊537,為回應及/或因二源排序索引指令的結果,將結果緊縮資料儲存在目的地儲存位置。代表地,執行單元或處理器可以執行指令及儲存結果。結果緊縮資料包含至少四索引。在某些實施例中,索引可以識別第一及第二源緊縮資料中對應的資料元件位置。在某些實施例中,索引可以真正地識別在第一及第二源緊縮資料中之一中單一對應的資料元件(請參見例如圖6-9)。或者,索引僅識別各第一及第二源緊縮資料中對應的資料元件位置,以及,使用另一位元以標示第一及第二源緊縮資料中之一,藉以標示單一對應的資料元件(請參見例如圖10-13)。索引可儲存在代表第一及第二源緊縮資料中對應的資料元件之排序次序的結果緊縮資料中的位置中。結果可以代表合併排序,合併排序係儲存對應於二源中的任一源中的資料元件之排序索引。
圖6是方塊圖,顯示為回應用於最小的一半資料元件指令的二源排序索引的實施例而執行之用於最小的一半資料元件作業640的二源排序索引的實施例。指令可以指明或以其它方式標示具有第一組至少四資料元件的第一源緊縮資料610,以及指明或以其它方式標示具有第二組至少四資料元件的第二源緊縮資料612。第一及第二源緊縮資料均彼此獨立地儲存在緊縮資料暫存器、記憶體位置、或
其它儲存位置中。第一及第二源緊縮資料具有本文中任意處揭示的尺寸、資料元件的數目、資料元件的尺寸、資料元件的型式。
在特別顯示的實例中,第一源緊縮資料及第二源緊縮資料均具有八資料元件。第一源緊縮資料具有從右方最低效位置至左方最高效位置的值-4,1,1,8,12,12,43及55。第二源緊縮資料從右方最低效位置至左方最高效位置具有值-14,-12,0,10,16,18,24及60。在本實施例中,在第一源緊縮資料中的值、及在第二源緊縮資料中的值均從最低效至最高效位元位置以漸增次序排序。在某些實施例中,假定(例如為指令而暗示地假定)或要求各第一及第二源緊縮資料內的資料元件在分別的緊縮資料運算元內依造排序次序(例如為了指令正確操作)。在其它實施例中,未假定或未要求各第一及第二源緊縮資料內的資料元件依造排序次序(例如,當元件是依未排序的次序時指令正確操作)。
產生結果緊縮資料614(例如由執行單元106產生)並將其儲存在目的地儲存位置中,以回應指令。在各式各樣的實施例中,目的地儲存位置可為緊縮資料暫存器、記憶體位置、或其它儲存位置。目的地儲存位置可以是與用於第一及第二源緊縮資料中之一相同的儲存位置、或是不同的儲存位置。
在某些實施例中,結果緊縮資料包含至少四索引。在某些實施例中,結果緊縮資料包含與源緊縮資料中之一的
資料元件的數目相同數目的索引,但是,這並非強制的。在特別顯示的實例中,結果緊縮資料具有八個索引。各索引指向、識別、或是相關連至第一及第二源緊縮資料中對應的資料元件位置。在某些實施例中,索引真正地識別第一及第二源緊縮資料中之一中單一對應的資料元件。各資料元件具有在第一及第二源緊縮資料內的索引位置。索引代表第一及第二源緊縮資料內的資料元件的相對位置或偏移。舉例而言,根據顯示的實例中使用之一可能的方式,當從最低至最高效位元位置(如同所示從右至左)經過第一源緊縮資料610時,0至7的索引值將八個資料元件列入索引,當從最低至最高效位元位置(如同所示從右至左)經過第二源緊縮資料612時,8至15的索引值將八個資料元件列入索引。在所示的實施例中,使用箭頭以顯示索引與資料元件之間的對應性。如同所示,具有值-14的資料元件具有8的索引,具有值-12的資料元件具有9的索引,等等。或者,可以選擇地使用各種其它索引方式以用於特定實施(例如,從1而非0的索引開始,向後索引,任意對映索引方式、等等)。
索引可儲存在要代表第一及第二源緊縮資料中對應的資料元件之排序次序的結果緊縮資料中的位置。在某些實施例中,僅為第一及第二源緊縮資料中所有的資料元件之有序的子集合,儲存索引。在某些實施例中,有序的子集合可為所有資料元件的有序最小子集合(例如,最小的一半)。在所示的實例中,八個最小值是-14,-12,-4,0,1,1,8,
及10。在所示的實施例中,八個索引儲存在代表第一及第二源緊縮資料中對應的八個最小資料元件的排序的漸增次序(從最低至最高效位元位置)之結果緊縮資料中的位置。如同所示,對應於具有值-14的資料元件之索引8儲存在結果緊縮資料中最低次序位置中,對應於具有值-12的資料元件之索引9儲存在次最低次序位置中,對應於具有值-4的資料元件之索引0儲存在第三最低次序位置中,等等。在其它實施例中,可以選擇使用漸減反向次序。排序作業將用於第一及第二源緊縮資料之經過排序的索引合併。
圖7是方塊圖,顯示為回應用於最大的一半資料元件指令的二源排序索引的實施例而執行之用於最大的一半資料元件作業742的二源排序索引的實施例。指令可以指明或以其它方式標示具有第一組至少四資料元件的第一源緊縮資料710,以及指明或以其它方式標示具有第二組至少四資料元件的第二源緊縮資料712。第一及第二源緊縮資料具有本文中任意處揭示的特徵及變異。在所示的實施例中,在第一源緊縮資料中的值、及在第二源緊縮資料中的值以漸增次序排序,但是,在其它實施例中或是對其它指令而言,這不是必要的。
產生結果緊縮資料714(例如由執行單元106產生)並將其儲存在目的地儲存位置中,以回應指令。在某些實施例中,結果緊縮資料包含至少四索引。在某些實施例中,索引識別第一及第二源緊縮資料中之一中單一對應的
資料元件。在某些實施例中,索引可以儲存在要代表第一及第二源緊縮資料中對應的資料元件之排序次序的結果緊縮資料中的位置中。
在圖7的實施例中,取代最小子集合之有序子集合,有序子集合可為第一及第二源緊縮資料中所有資料元件之有序的最大子集合,例如最大的一半。舉例而言,八個索引可以儲存在要代表第一及第二源緊縮資料中對應的八個最大資料元件之排序次序的結果緊縮資料中的位置中。考慮說明所示之資料元件的舉例說明的值,八個最大的資料元件是那些具有值12、12、16、18、24、43、55、及60之資料元件。在所示的實施例中,八個索引儲存在要代表第一及第二源緊縮資料中對應的八個最大資料元件之排序的漸增次序(從最低至最高效位元位置增加)的結果緊縮資料中的位置中。如同所示,具有值12之對應於最右方資料元件的索引4儲存在最低次序位置,具有值12之對應於最左方資料元件的索引5儲存在次最低次序位置,具有值16之對應於資料元件的索引12儲存在第三最低次序位置,等等。在其它實施例中,可以選擇使用漸減次序替代。
圖6-7顯示僅用於最小或最大一半的索引被儲存之實施例。在其它實施例中,用於最小及最大的一半之索引可以儲存在與源運算元相同尺寸的結果中。舉例而言,假使索引比對應的資料元件足夠小(例如,一半大小或更小),則這是可能的。在某些實施中,此方式可以提供優
點。或者,用於最小及最大的一半之索引可以保持分開以便於使用對應的混洗指令、盲指令、等等。
圖8是方塊圖,顯示為回應用於最小的一半資料元件指令的二未排序的源排序索引的實施例而執行之用於最小的一半資料元件作業844的二未排序之源排序索引的實施例。指令可以指明或以其它方式標示具有第一組至少四資料元件的第一源緊縮資料810,以及指明或以其它方式標示具有第二組至少四資料元件的第二源緊縮資料812。在特別顯示的實例中,第一源緊縮資料及第二源緊縮資料均具有八資料元件。第一源緊縮資料具有從右方最低效位置至左方最高效位置的值-4,1,8,12,43,55,1及12。在本實施例中,在第一源緊縮資料中的值不是依排序次序。類似地,在第二源緊縮資料中的值不是依排序次序。在此實施例中,未假定或要求各第一及第二源緊縮資料內的資料元件依造排序次序(例如當元件是未排序的次序時指令正確操作)。
產生結果緊縮資料814(例如由執行單元106產生)並將其儲存在目的地儲存位置中,以回應指令。在某些實施例中,結果緊縮資料包含至少四索引。在某些實施例中,索引識別第一及第二源緊縮資料中之一中單一對應的資料元件。在某些實施例中,索引儲存在要代表第一及第二源緊縮資料中對應的資料元件之排序的次序的結果緊縮資料中的位置中。在所示的實施例中,結果緊縮資料具有對應於第一及第二源緊縮資料中所有資料元件的最小子集
合(在此情形中,為最小的一半)的索引。在另一實施例中,結果緊縮資料具有對應於第一及第二源緊縮資料中所有資料元件的最大子集合(在此情形中,為最大的一半)之索引。
圖9是方塊圖,顯示為回應用於最小的一半資料元件指令的二源排序索引及資料的實施例而執行之用於最小的一半資料元件作業946的二源排序索引及資料的實施例。指令可以指明或以其它方式標示具有第一組至少四資料元件的第一源緊縮資料910,以及指明或以其它方式標示具有第二組至少四資料元件的第二源緊縮資料912。第一及第二源緊縮資料具有本文中任意處揭示的尺寸、資料元件的數目、資料元件的尺寸、及資料元件的型式。在所示的實施例中,假定(例如為指令而暗示地假定)或要求各第一及第二源緊縮資料內的資料元件在分別的緊縮資料運算元內依造排序次序。在其它實施例中,未假定或未要求各第一源緊縮資料及第二源緊縮資料內的資料元件在各別的分及運算元內依造排序次序。
產生第一結果緊縮資料914(例如由執行單元106產生)並將其儲存在第一目的地儲存位置中,以回應指令。第一結果緊縮資料及索引可以具有與先前對圖6所述類似或共同的特徵及詳節。在所示的實施例,結果緊縮資料具有對應於第一及第二源緊縮資料中所有資料元件的最小子集合(在此情形中,為最小的一半)的索引。在另一實施例中,結果緊縮資料具有對應於第一及第二源緊縮資料中
所有資料元件的最大子集合(舉例而言,最大的一半)之索引。
在本實施例中,也產生結果緊縮資料916並將其儲存在第二目的地儲存位置中,以回應指令。第二目的地儲存位置可由指令指明或以其它方式標示,且可為緊縮資料暫存器、記憶體位置、或其它儲存位置。第二目地的地儲存位置可以是與用於第一或第二源緊縮資料中之一的相同儲存位置、或是不同的儲存位置。第二結果緊縮資料包含對應的資料元件,對應的資料元件對應於儲存在第一結果緊縮資料中、儲存在反應排序的次序之第二結果緊縮資料的位置中之索引。在所示的實施例,第二結果緊縮資料具有第一及第二源緊縮資料中所有資料元件的排序之最小子集合(在此情形中,為排序的最小的一半)。具體而言,第二結果緊縮資料從右至左儲存資料元件-14,-12,-4,0,1,1,8,及10。在另一實施例中,第二結果緊縮資料取代地具有第一及第二源緊縮資料中所有資料元件的排序之最大子集合(舉例而言,為排序的最大的一半)。
排序的索引儲存在圖6中作為結果。排序的索引及排序的資料元件都儲存為圖9中的結果。在另一實施例中,排序資料元件而不是索引可以被選擇地儲存以回應指令。
圖7-9顯示與圖6的作業具有某些類似性之作業。為了避免模糊說明,主要說明用於圖7-9的作業之不同及/或增加的特徵,而不重複與圖6的作業有關之所有可選擇的類似或共同的特徵及細節。但是,除非另外說明或清楚
表示,否則,先前說明的圖6的作業之特徵及細節也可選擇地應用至圖7-9的任何作業。
圖10是方塊圖,顯示為回應用於最小的一半資料元件指令的二具有遮罩之源排序索引的實施例而執行之用於最小的一半資料元件作業1048的二源排序索引的實施例。指令可以指明或以其它方式標示具有第一組至少四資料元件的第一源緊縮資料1010,以及指明或以其它方式標示具有第二組至少四資料元件的第二源緊縮資料1012。第一及第二源緊縮資料具有本文中任意處揭示的尺寸、資料元件的數目、資料元件的尺寸、及資料元件的型式。
在顯示的實例中,各第一源緊縮資料及第二源緊縮資料中的值依序排序,但這不是必要的。在某些實施例中,假定(例如為指令而暗示地假定)或要求源資料元件在分別的緊縮資料內依造排序次序。在顯示的實例中,使用運算元中具有漸增的位元重要性之漸增次序,但是,在另一實施例中,可以選擇使用漸減的次序。在其它實施例中,未假定或未要求各第一及第二源緊縮資料內的資料元件在分別的緊縮資料內依造排序次序(例如,當元件是依未排序的次序時指令正確操作)。
產生結果緊縮資料1014(例如由執行單元106產生)並將其儲存在目的地儲存位置中,以回應指令。在某些實施例中,結果緊縮資料包含至少四索引。在某些實施例中,各索引指向、識別、或是相關連至第一及第二源緊
縮資料中成對之對應的資料元件位置。索引本身未真正地識別單一對應的資料元件,但不識別第一及第二緊縮資料中之成對的對應資料元件位置,而不用標示真正對應的資料元件是否位於第一及第二源緊縮資料中。舉例而言,根據顯示的實例中使用之一可能的方式,當從最低至最高效位元位置(如同所示從右至左)經過第一源緊縮資料時,0至7的索引值代表八個資料元件位置,以及,當從最低至最高效位元位置經過第二源緊縮資料時,相同的0至7的索引值代表八個資料元件位置。舉例而言,具有值43的資料元件及具有值24的資料元件都具有相同的6的索引。如同先前所述般,可以選擇地使用各種其它索引方式(例如,從1而非0的索引開始,向後或減量索引,任意對映索引方式、等等)作為替代。在這些實施例中,單獨只有索引不足以識別單一對應的資料元件。
在某些實施例中,索引儲存在要代表對應的資料元件之排序的次序之結果緊縮資料中的位置。在所示的實施例中,索引儲存在要代表對應的資料元件之排序的漸增次序之結果緊縮資料中的位置。在其它實施例中,可以選擇使用漸減次序。此外,在所示的實施例中,僅為所有資料元件之有序的最小子集合(舉例而言,最小的一半),儲存索引。或者,可以使用例如最大子集合(例如最大的一半)等另一子集合、或是中度子集合。替代地,可選擇地儲存用於源緊縮資料中所有資料元件的索引。
再參考圖10,產生結果遮罩1020並將其儲存在第二
目的地儲存位置中,以回應指令。在某些實施例中,第二目的地儲存位置可由指令指明或以其它方式標示。在某些實施例中,第二目的地儲存位置可為遮罩暫存器(例如遮罩暫存器118中之一)。或者,結果遮罩可以儲存在一般用途的暫存器中、記憶體位置、或其它儲存位置。
在某些實施例中,結果遮罩包含至少四遮罩元件。在某些實施例中,結果遮罩包含與結果緊縮資料中的索引數目相同數目的遮罩元件。各遮罩元件對應於結果緊縮資料中眾多索引中之不同的對應的一索引。各遮罩元件標示在對應的索引所標示的資料元件位置處單一對應的資料元件是否位於第一源緊縮資料或是替代地位於第二源緊縮資料。亦即,各遮罩元件識別或選取第一及第二源緊縮資料中之一,藉以識別在經過識別或選取的源緊縮資料中索引位置處對應的單一資料元件。
在某些實施例中,各遮罩元件可為單一位元,但是,可替代地選擇使用二或更多位元(例如,多位元資料元件的最高或最低效位元)。根據所示的實例中使用之一可能的方式,設定於一(亦即1)的二進位值之單一位元標示資料元件位於第一源緊縮資料1010中,而被清除至零(亦即0)的二進位值之位元係標示資料元件位於第二源緊縮資料1012中。或者,可以選擇使用相反的方式。進一步而言,具有值-14的資料元件由結果緊縮資料的最右位置中對應的索引0以及結果遮罩中最右位置中遮罩元件值0識別,(以標示第二源緊縮資料)。類似地,具有值
-4的資料元件由從結果緊縮資料的右方啟算之第3位置中對應的索引0以及從結果遮罩的最右啟算之第3位置中遮罩元件值1識別(以標示第一源緊縮資料)。
在某些實施例中,採用一方式,假使在不同的源緊縮資料中二運算元間資料元件具有相等值時,則來自源緊縮資料之一的元件可以被解譯為宛如具有較小的值,但是這並非必要。在某些實施例中,採用一方式,假使在相同的源緊縮資料中二運算元間資料元件具有相等值時,則最低效資料元件可以被解譯為宛如具有較小的值,但是這並非必要。
在某些實施例中,在結果遮罩中包含額外的緊縮資料運算元選取位元(例如遮罩元件)以取代將它們併入索引中(以如圖6-9中所示的方式),可以提供優點。舉例而言,這可以是當處理器能夠使用結果遮罩作為預測運算元以遮罩或預測緊縮資料作業之情形。在某些實施例中,遮罩或預測可以是依每一資料元件粒度,以致於在不同對的對應資料元件上的操作可以分別地或彼此獨立地被預測或有條件地受控。在結果遮罩中的遮罩元件代表預測元件或條件式控制元件。在一態樣中,以與對應的源資料元件及/或對應的結果資料元件一對一的對應性,包含遮罩元件。舉例而言,各遮罩元件或位元的值可以控制對應的作業是否要被執行及/或對應的結果資料元件是否要被儲存。各遮罩元件或位元可以具有第一值以允許對成對之對應的源資料元件執行作業以及允許對應的結果資料元件被
儲存在目的地中,或是具有第二不同值而不允許對成對之對應的源資料元件執行作業以及不允許對應的結果資料元件被儲存在目的地中。根據一可能的方式,被清除至二進位零(亦即0)之遮罩位元代表被遮蔽的作業,而被設定於二進位1(亦即1)之遮罩位元代表未被遮蔽的作業。
在某些實施例中,除了產生結果遮罩之指令之外,指令集也包含第二指令、第二指令能夠標示或接取結果遮罩作為源預測運算元或條件式控制運算元,用以預測、有條件地控制、或是遮罩對應的作業是否要被執行及/或對應的結果是否要被儲存。在某些實施例中將結果遮罩標示為源預測運算元之指令的一特定實例是VMOVDQA32指令,此指令說明於可2013年發行的Intel架構指令集擴充編程參考(Intel® Architecture Instruction Set Entensions Programming Reference)319433-017中。以源寫入遮罩用於預測,VMOVDQA32指令能夠將對齊的緊縮雙字整數值從源緊縮資料運算元移至結果緊縮資料運算元。結果遮罩由VMOVDQA32指令標示為源寫入遮罩。在某些實施中及/或對於某些演繹法而言,從整體演繹觀點而言,結果遮罩可由此類預測指令使而提供某些性能及/或功效優點。在某些實施例中,即使結果緊縮資料1014具有其可替代地將額外位元整合於索引中之足夠位元時,仍可使用結果遮罩。
圖11是方塊圖,顯示為回應用於最大的一半資料元件指令的二具有遮罩之源排序索引的實施例而執行之用於
最大的一半資料元件作業1150的二源排序索引的實例。指令可以指明或以其它方式標示具有第一組至少四資料元件的第一源緊縮資料1110,以及指明或以其它方式標示具有第二組至少四資料元件的第二源緊縮資料1112。在顯示的實例中,各第一源緊縮資料及第二源緊縮資料中的值依序排序,但這不是必要的。在某些實施例中,假定(例如為指令而暗示地假定)或要求源資料元件在分別的緊縮資料內依造排序次序。在顯示的實例中,使用運算元中具有漸增的位元重要性之漸增次序,但是,在另一實施例中,可以選擇使用漸減的次序。在其它實施例中,未假定或未要求各第一源緊縮資料及第二源緊縮資料內的資料元件在分別的緊縮資料內依造排序次序(例如,當元件是依未排序的次序時指令正確操作)。
產生結果緊縮資料1114(例如由執行單元106產生)並將其儲存在目的地儲存位置中,以回應指令。在某些實施例中,結果緊縮資料包含至少四索引。在某些實施例中,各索引指向、識別、或是相關連至第一及第二源緊縮資料中成對之對應的資料元件位置。類似地,儲存結果遮罩1120以回應指令。結果遮罩具有對應於索引的遮罩元件。
在圖11的實施例中,索引對應於第一及第二源緊縮資料中所有資料元件之有序的最大子集合(舉例而言,在所示的實施例中為最大的一半)。舉例而言,八個索引可以儲存在要代表第一及第二源緊縮資料中對應的八個最大
資料元件之排序次序的結果緊縮資料中的位置中(例如,12、12、16、18、24、43、55、及60)。類似地,結果遮罩的遮罩元件對應於第一及第二源緊縮資料中所有資料元件之有序的最大子集合(舉例而言,在所示的實施例中為最大的一半)。
在所示的實施例中,八個索引儲存在要代表第一及第二源緊縮資料中對應的八個最大資料元件之排序的漸增次序的結果緊縮資料中的位置中。在其它實施例中,可以選擇使用漸減次序替代。
圖12是方塊圖,顯示為回應用於最小的一半資料元件指令的二具有遮罩之未排序的源排序索引的實施例而執行之用於最小的一半資料元件作業1252的二具有遮罩之未排序的源排序索引的實例。指令可以指明或以其它方式標示具有第一組至少四資料元件的第一源緊縮資料1210,以及指明或以其它方式標示具有第二組至少四資料元件的第二源緊縮資料1212。在圖12的作業中,在第一源緊縮資料運算元中的資料元件是未依排序次序。類似地,第二源緊縮資料運算元中的資料元件是未依排序次序。未假定或未要求在各第一源緊縮資料及第二源緊縮資料內的資料元件在分別的緊縮資料運算元內依造排序次序(例如,當元件在源緊縮資料運算元中是依未排序的次序時指令正確操作)。
產生結果緊縮資料1214(例如由執行單元106產生)並將其儲存在目的地儲存位置中,以回應指令。在某
些實施例中,結果緊縮資料包含至少四索引。在某些實施例中,各索引指向、識別、或是相關連至第一及第二源緊縮資料中成對之對應的資料元件位置。類似地,儲存結果遮罩1220以回應指令。結果遮罩具有對應於索引的遮罩元件。
在所示的實施例中,索引及遮罩元件對應於第一及第二源緊縮資料中所有資料元件之最小子集合(在此情形中為最小的一半)。在另一實施例中,索引及遮罩元件對應於第一及第二源緊縮資料中所有資料元件之最大子集合(舉例而言,最大的一半)。
在所示的實施例中,八個索引儲存在要代表第一及第二源緊縮資料中對應的八個最大資料元件之排序的漸增次序的結果緊縮資料中的位置中。在其它實施例中,可以選擇使用漸減或相反的次序。
圖13是方塊圖,顯示為回應用於最小的一半資料元件指令的二具有遮罩的源排序索引及排序資料之實施例而執行之用於最小的一半資料元件作業1354的二具有遮罩的源排序索引及排序資料之實施例。指令可以指明或以其它方式標示具有第一組至少四資料元件的第一源緊縮資料1310,以及指明或以其它方式標示具有第二組至少四資料元件的第二源緊縮資料1312。在所示的實施例中,在各第一源緊縮資料及第二源緊縮資料中的值是依序排序,但這不是必要的。在某些實施例中,假定(例如為指令而暗示地假定)或要求源資料元件在分別的緊縮資料內是依造
排序次序。在顯示的實例中,使用運算元中具有漸增的位元重要性之漸增次序,但是,在另一實施例中,可以選擇使用漸減的次序。在其它實施例中,未假定或未要求各第一源緊縮資料及第二源緊縮資料內的資料元件在分別的緊縮資料內依造排序次序(例如,當元件是依未排序的次序時指令正確操作)。
產生第一結果緊縮資料1314(例如由執行單元106產生)並將其儲存在目的地儲存位置中,以回應指令。在某些實施例中,結果緊縮資料包含至少四索引。在某些實施例中,各索引指向、識別、或是相關連至第一及第二源緊縮資料中成對之對應的資料元件位置。類似地,儲存結果遮罩1320以回應指令。結果遮罩具有對應於索引的遮罩元件。
在本實施例中,也產生第二結果緊縮資料1316並將其儲存在目的地儲存位置中,以回應指令。第二目的地儲存位置可由指令指明或以其它方式標示,以及可為緊縮資料暫存器、記憶體位置、或其它儲存位置。第二目的地儲存位置可為用於第一或第二源緊縮資料中之一的相同的儲存位置,或是不同的儲存位置。第二結果緊縮資料包含對應的資料元件,對應的資料元件對應於儲存在反應排序的次序之第二結果緊縮資料的位置中之儲存的索引及遮罩元件。
在所示的實施例中,排序的資料元件、索引、及遮罩元件對應於第一及第二源緊縮資料中所有資料元件之最小
子集合(舉例而言,在此情形中為最小的一半)。在另一實施例中,排序的資料元件、索引、及遮罩元件對應於第一及第二源緊縮資料中所有資料元件之最大子集合(舉例而言,最大的一半)。
在所示的實施例中,排序的資料元件、索引、及遮罩元件儲存在位置中以代表漸增次序。在其它實施例中,可以選擇使用漸減或相反次序。
將排序的索引儲存為圖10中的結果。將排序的索引及排序的資料元件儲存為圖13中的結果。在另一實施例中,可選擇地儲存排序資料元件但不是索引,以回應指令。
圖11-13的作業與圖10的作業具有某些類似性。為了避免模糊說明,主要說明用於圖11-13的作業之不同及/或增加的特徵,而不重複與圖10的作業有關之所有選擇的類似或共同的特徵及細節。但是,須瞭解,除非另外說明或清楚表示,否則,先前說明的圖10的作業之特徵及細節也可選擇地應用至圖11-13的任何作業。
指令集包含一或更多此處揭示的指令。舉例而言,在某些實施例中,指令集可選擇地包含能夠產生排序的結果之第一指令(例如,如圖3-4中之一有關的顯示或說明)以及假定或需要排序的源緊縮資料之第二指令(例如,如圖6、7、9、10、11、及13中之一有關的顯示或說明)。另舉例而言,在某些實施例中,指令集選擇地包含用於所有源資料元件的最小一半之排序的第一指令(例
如,如圖6及10中之一有關的顯示或說明)以及用於所有源資料元件的最大一半之排序的第二指令(例如,如圖7及11中之一有關的顯示或說明)。替代地,指令集僅包含如此處所顯及所述的多個指令中的一個指令。
下述碼片斷代表舉例說明之使用此處所述的指令實例以排序32個整數之演繹法實施例。以類似於圖3中所示的作業,sortassistd指令以下降次序排序雙字元件。sortedmergedassistl及sortedmergedassisth指令是二源指令,類似於圖10-11的作業,此二源指令將用於已排序的元件之已排序的索引儲存在第一及第二源緊縮資料。
在某些實施例中,指令格式包含作業碼或運算碼。運算碼代表可操作以識別指令及或要執行的作業(例如,排序索引作業)之一或更多欄位或眾多位元。取決於特別的指令,指令格式也可選擇地包含一或更多源及/或目的地
說明符。舉例而言,這些說明符中的各說明符包含位元或一或更多欄位以指明暫存器的位址、記憶體位置、或其它儲存位置。替代地,取代此明確的說明符,一或更多源及/或目的地可以選擇地為對指令是暗示的而非被明確指定的。此外,要再作為目的地之源可以選擇為暗示的。此外,指令格式可選擇增加額外的欄位、可重疊某些欄位、等等。欄位無需包含連續的位元序列,而不是由非連續的或分開的位元構成。在某些實施例中,指令格式依循VEX或EVEX編碼或指令格式,但是,本發明的範圍並非侷限於此。
圖14是緊縮資料暫存器1408的適當組的舉例說明的實施例之方塊圖。緊縮資料暫存器包含32個512位元的緊縮資料暫存器,標示為ZMM0至ZMM31。在所示的實施例中,下十六個暫存器的低階256位元,亦即ZMM0-ZMM15,混疊於或是覆蓋於YMM0-YMM15標示之分別的256位元緊縮資料暫存器上,但這不是必要的。類似地,在所示的實施例中,暫存器YMM0-YMM15的低階128位元混疊於為或是覆蓋於XMM0-XMM15標示之分別的128位元緊縮資料暫存器上,但這也不是必要的。512位元暫存器ZMM0至ZMM31是可操作以固持512位元緊縮資料、256位元緊縮資料、或128位元緊縮資料。256位元暫存器YMM0-YMM15可操作以固持256位元緊縮資料或是128位元緊縮資料。128位元暫存器XMM0-XMM15可操作以固持128位元緊縮資料。在某些實施例中,各暫存
器可用以儲存緊縮的浮點資料或緊縮的整數資料。不同的資料元件大小受支援,包含至少8位元的位元組資料、16位元的字資料、32位元的雙字、32位元的單精度浮點資料、64位元的四倍字、及64位元的雙精度浮點資料。在替代的實施例中,可以使用不同數目的暫存器及/或不同大小的暫存器。在又其它實施例中,暫存器可使用或不使用較大暫存器於較小暫存器上混疊及/或被用以或不被用以儲存浮點資料。
指令集包含一或更多指令格式。給定的指令格式界定各式各樣的欄位(位元數目、位元位置)以特別指定要執行的作業及該作業要於其上執行的作業碼。某些指令格式又分裂成指令樣板的定義(或子格式)。舉例而言,給定的指令格式之指令樣板可以被定義為具有不同子集合的指令格式欄位(包含的欄位典型上依相同次序,但是,由於有較少的欄位被包含,所以,至少某些具有不同的位元位置)及/或被界定為具有不同地解譯之給定的欄位。因此,使用給定的指令格式,說明ISA的各指令(以及,假使被界定時,在指令格式的指令樣板中之一給定的樣板中)以及包含用於指明作業及運算元之欄位。舉例而言,舉例說明的ADD指令具有特定的運算碼及指令格式,指令格式包含運算碼欄位以指明該運算碼及運算元欄位以選取運算元(源1/目的地2);以及,在指令串流中此ADD指令的發生將在選取特定運算元的運算元欄位中具有特定的內容。稱為進階向量擴充(AVX)(AVX1及AVX2)
且使用向量擴充(VEX)碼化設計之SIMD擴充集已被釋出及/或公開(例如,請參考2011年10月之Intel® 64和IA-32架構軟體開發手冊(Intel® 64 and IA-32 Architectures Software Developers Manual),2011年6月之Intel®進階向量擴充程式參考(Intel® Advanced Vector Extensions Programming Reference)。
此處所述的指令的實施例可以以不同的格式具體實施。此外,舉例說明的系統、架構、及管線詳述於下。可在這些系統、架構、及管線等等之上,執行指令的實施例,但不限於那些細節。
向量友善指令格式是適用於向量指令的指令格式(例如,有某些向量作業特有的領域)。雖然說明向量及純量作業是由向量友善指令格式支援的實施例,但是,替代實施例可僅使用向量友善指令格式的向量作業。
圖15A-15B是方塊圖,顯示根據發明的實施例之同屬向量友善指令格式及其指令樣板。圖15A是方塊圖,顯示根據發明的實施例之同屬向量友善指令格式及其等級A指令樣板;而圖15B是方塊圖,顯示根據發明的實施例之同屬向量友善指令格式及其等級B指令樣板。具體而言,等級A及等級B指令樣板定義之同屬向量友善指令格式
1500都包含無記憶體存取1505指令樣板及記憶體存取1520指令樣板。向量友善指令格式的背景中之同屬一詞意指未被繫結至任何特定指令集的指令格式。
雖然將說明向量友善指令格支援下述的發明實施例:具有32位元(4位元組)或64位元(8位元組)資料元件寬度(或大小)的64位元組向量運算元長度(或大小)(因此,16個雙字大小元件或者8個四字大小元件組成的64位元組向量);具有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位元組向量運算元)。
圖15A中的等級A指令樣板包含:1)在無記憶體存取1505指令樣板之內,有顯示無記憶體存取、全修整控制型作業1510指令樣板以及無記憶體存取、資料轉換型作業1515指令樣板;以及2)在記憶體存取1520指令樣板之內,有顯示記憶體存取、暫時1525指令樣板以及記
憶體存取、非暫時1530指令樣板。圖15B中的等級B指令樣板包含:1)在無記憶體存取1505指令樣板之內,有顯示無記憶體存取、寫入遮罩控制、部份修整控制型作業1512指令樣板以及無記憶體存取、寫入遮罩控制、vsize型作業1517指令樣板;以及2)在記憶體存取1520指令樣板之內,有顯示記憶體存取、寫入遮罩控制1527指令樣板。
同屬向量友善指令格式1500包含圖15A-15B中依序顯示的下述列出之欄位。
格式欄位1540-此欄位中的特定值(指令格式識別值)獨特地識別向量友善指令格式,因此,在指令串中向量友善指令格式的指令發生。如此,在對於僅具有同屬向量友善指令格式的指令集而言是不需要的情形中,此欄位是選加的。
基礎作業欄位1542-其內容區別不同的基礎作業。
暫存器索引欄1544-其內容直接或經由位址產生而指明源和目的地運算元的位置在暫存器或記憶體中。這些包含足夠數目的位元以從PxQ(例如32 x 512、16 x 128、32 x 1204、64 x 1204)暫存器檔案中選取N個暫存器。雖然在一實施例中,N可以高達三個源及一個目的地暫存器,但是,替代實施例可以支援更多或更少的源以及目的地暫存器(例如,可以支援高達二個源,這些源中之一也作為目的地,可以支援高達三個源,這些源中之一也作為目的地,可以支援高達二個源及一目的地)。
修改符欄位1546-其內容區別指定與未指定記體存取的同屬向量指令格式的指令之發生;亦即,在無記憶體存取1505指令樣板與記憶體存取1520指令樣板之間區別。記憶體存取作業讀取及/或寫至記憶體層級結構(在某些情形中使用暫存器中的值以指定源及/或目的地位址),而非記憶體存取作業未如此作(例如,源及目的地是暫存器)。雖然在一實施例中,此欄位也在三個不同方式中之間選取以執行記憶體位址計算,但是,替代實施例可以支援更多、更少、或不同的方式以執行記憶體位址計算。
擴增作業欄1550-其內容區別各種不同作業中那一作業是基礎作業之外也是要被執行的。此欄位是內容特定的。在發明的一實施例中,此欄位被分成等級欄位1568、阿爾發欄位1552、貝他欄位1554。擴增作業欄位1550允許共同組的作業在單一指令中而不是在2、3或4指令中被執行。
比例欄位1560-其內容允許用於記憶體位址產生的索引欄位的內容比例化(例如,用於使用2scale*index+base的位址產生)。
位移欄位1562A-其內容作為部份記憶體位址產生(例如,用於使用2scale*index+base+displacement的位址產生)。
位移因數欄位1562B(注意,位移欄位1562A直接在位移因數欄位1562B上標示一或另一者被使用)-其內容
作為部份位址產生;其指定要依記憶體存取(N)的大小而比例化的位移因數-其中,N是記憶體存取中的位元組數目(例如,用於使用2scale*index+base+scaled displacementv的位址產生)。冗餘低階位元被忽略,因此,位移因數欄位的內容乘以記憶體運算元全部尺寸(N)以產生計算有效位址時使用的最後位移。根據全運算碼欄位1574(稍後說明)及資料操縱欄位1554C,在運行時間,由處理器硬體決定N的值。在位移欄位1562A及位移因數欄位1562B不用於無記憶體存取1505指令樣板及/或不同實施例僅實施二者中之一或不實施二者的情形中,位移欄位1562A及位移因數欄位1562B是選加的。
資料元件寬度欄位1564-其內容區別一些資料元件寬度中的那一寬度是要被使用(在某些實施例中用於所有指令;在其它實施例中僅用於某些指令)。在假使使用運算碼的某些態樣而僅有一資料元件寬度被支援及/或資料元件寬度被支援時不需要此欄位的情形中,此欄位是選加的。
寫入遮罩欄位1570-以每一資料元件位置為基礎,其內容控制目的地向量運算元中的資料元件位置是否反應基礎作業及擴增作業。等級A指令樣板支援合併寫入遮罩,而等級B指令樣板支撐合併及零化寫入遮罩。當合併時,向量遮罩允許目的地中任何組的元件在任何作業的執行期間受保護(由基礎作業及擴增作業指定)而免於更新;在
其它的一實施例中,保留對應的遮罩位元具有0之目的地的每一元件的舊值。相反地,當零化向量遮罩允許目的地中的任何組的元件在任何作業(由基礎作業及擴增作業指定)執行期間零化時;在一實施例中,當對應的遮罩位元具有0值時,目的地的元件被設定為0。此功能的子集合是控制被執行的作業的向量長度之能力(亦即,被修改的元件的跨幅,從第一至最後一個);但是,被修改的元件不一定是連續的。如此,寫入遮罩欄1570允許部份向量作業,包含載入、儲存、算術、邏輯、等等。雖然說明寫入遮罩欄位1570的內容選取一些含有要被使用的寫入遮罩之寫入遮罩暫存器中之一(因此,寫入遮罩欄位1570的內容間接地識別要被執行的遮罩)的發明實施例,但是,替代實施例取代地或增加地允許遮罩寫入欄位1570的內容直接指定遮罩被執行。
立即欄位1572-其內容允許立即性的規格。在此欄位未出現在未支援立即性的同屬向量友善格式實施中以及其未出現在未使用立即性的指令中之情形中,此欄位是選加的。
等級欄位1568-其內容區別不同等級的指令。參考圖15A-B,此欄位的內容在等級A與等級B指令之間選取。在圖15A-B中,經過整修的角落方形被用以標示特定值存在於欄位中(例如,分別在圖15A-B中用於等級欄位1568的等級A 1568A及等級B 1568B)。
在等級A的非記憶體存取1505指令樣板的情形中,阿爾發欄位1552被解譯為RS欄位1552A,其內容區別不同的擴增操作型式中那一型式是要被執行(例如,整修1552A.1及資料轉換1552A.2分別被指定用於無記憶體存取、整修型式作業1510及無記憶體存取、資料轉換型式作業1515指令樣板),而貝他欄位1554區別被指定的型式的作業中那些作業是要被執行。在無記憶體存取1505指令樣板中,比例欄位1560、位移欄位1562A及位移比例欄位1562B不存在。
在無記憶體存取完全整修控制型作業1510指令樣板中,貝他欄位1554被解譯為整修控制欄位1554A,其內容提供靜態整修。雖然在上述的發明實施例中,整修控制欄位1554A包含抑制所有浮點例外(SAE)欄位1556及整修作業控制欄位1558,但是,替代實施例可以支援將這二概念編碼成相同欄位或是僅具有這些概念/欄位中之一或其它(例如,可以僅具有整修作業控制欄位1558)。
SAE欄位1556-其內容區別是否將例外事件報告禁能;當SAE欄位的1556內容標示抑制被賦能時,給定的指令不報告任何種類的浮點例外旗標及不引起任何浮點例外處理器。
整修作業控制欄位1558-其內容區別整修作業組中哪一作業要執行(例如,向上整修、向下整修、朝向零整修及整修至最近)。因此,整修操作控制欄位1558允許根據每一指令之整修模式的改變。在處理器包含用於指明整修模式的控制暫存器之發明的一實施例中,整修作業控制欄位1550的內容凌駕該暫存器值。
在無記憶體存取資料轉換型式操作1515指令樣板中,貝他欄位1554被解譯為資料轉換欄位1554B,其內容區別多個資料轉換中何者要被執行(例如,無資料轉換、拌和、廣播)。
在等級A的記憶體存取1520指令樣板的情形中,阿爾發欄位1552被解譯為逐出暗示欄位1552B,其內容區別逐出暗示中之一是要被使用(在圖15A中,暫時1552B.1及非暫時1552B.2分別被指定用於記憶體存取、暫時1525指令樣板以及記憶體存取、非暫時1530指令樣板),而貝他欄位1554被解譯為資料操縱欄位1554C,其內容區別多個資料操縱操作(也稱為原始)中何者是要被執行(例如,無操縱;廣播;源的上轉;及目的地的下轉)。記憶體存取1520指令樣板包含比例欄位1560,且選加地包含位移欄位1562A或位移比例欄位1562B。
藉由轉換支援,向量記憶體指令對記憶體執行向量載入及向量儲存。與正常的向量指令一般,向量記憶體指令
以資料元件方式對記憶體傳輸資料,而真正被傳送的元件是由被選為寫入遮罩的向量遮罩的內容所標示。
暫時資料是能夠足夠快再被使用而從快取獲利之資料。但是,這是暗示,以及,不同的處理器可以以不同方式實施它,包含完全忽略暗示。
非暫時資料是不太可能足夠快再被使用以從第一層快取記憶體中的快取獲利之資料,且應被授予逐出優先權。但是,這是暗示,以及,不同的處理器可以以不同方式實施它,包含完全忽略暗示。
在等級B的指令樣板的情形中,阿爾發欄位1552被解譯為寫入遮罩控制(Z)欄位1552C,其內容區別由寫入遮罩欄位1570控制的寫入遮罩是否應為合併或零化。
在等級B的非記憶體存取1505指令樣板的情形中,部份貝他欄位1554是被解譯為RL欄位1557A,其內容區別不同的擴增作業型式中何者是要被執行(例如,整修1557A.1以及向量長度(VSIZE)1557A.2分別被指定用於無記憶體存取、寫入遮罩控制、部份整修控制型作業1512指令樣板以及無記憶體存取、寫入遮罩控制、VSIZE
型作業1517指令樣板),而貝他欄位1554的其餘部份區別那一指定型式的作業是要被執行。在無記憶體存取1505指令樣板中,比例欄位1560、位移欄位1562A、及位移比例欄位1562B不存在。
在無記憶體存取中,寫入遮罩控制、部份整修控制型作業1510指令樣板、貝他欄位1554的其它部份被解譯為整修作業欄位1559A且例外事件報告被禁能(給定的指令不報告任何種類的浮點例外旗標及不引起任何浮點例外處理器)。
整修操作控制欄位1559A-正如同整修作業控制欄位1558般,其內容區別整修作業組中何者要執行(例如,向上整修、向下整修、朝向零整修及整修至最近)。因此,整修作業控制欄位1559允許根據每一指令來改變整修模式。在處理器包含用於指定整修模式的控制暫存器之發明的一實施例中,整修操作控制欄位1550的內容淩駕該暫存器值。
在無記憶體存取、寫入遮罩控制,VSIZE型作業1517指令樣板中,貝他欄位1554的其餘部份被解譯為向量長度欄位1559B,其內容區別要多個資料向量長度中何者要被執行(例如,128、256、或512位元組)。
在等級B的記憶體存取1520指令樣板的情形中,部份貝它欄位1554被解譯為廣播欄位1557B,其內容區別廣播型資料操縱作業是否要被執行,而貝它欄位1554中的其它部份被解譯為向量長度欄位1559B。記憶體存取
1520指令樣板包含比例欄位1560,以及,選加地包含位移欄位1562A或是位移比例欄位1562B。
關於同屬向量友善指令格式1500,完全運算碼欄位1574顯示為包含格式欄位1540、基礎作業欄位1542、及資料元件寬度欄位1564。雖然顯示完全運算碼欄位1574包含所有這些欄位的一實施例,但是,在未支援所有它們的實施例中,完全運算碼欄位1574包含小於所有這些欄位的欄位。完全運算碼1574提供作業碼(運算碼)。
擴增作業欄位1550、資料元件寬度欄位1564、及寫入遮罩欄位1570允許根據每一同屬向量友善指令格式的指令來指定這些特點。
因為寫入遮罩欄位及資料元件寬度欄位的結合允許根據不同的資料元件寬度來施加遮罩,所以,它們會產生型式化的指令。
等級A及等級B之內發現的各種指令樣板在不同的情形中是有利的。在本發明的某些實施例中,不同的處理器或在處理器內不同的核心僅支援等級A、僅支援等級B、或此二等級。舉例而言,要用於一般用途的計算之高性能一般用途亂序核心可以僅支援等級B,主要用於圖形及/或科學(輸貫量)計算之核心可以僅支援等級A,以及,主要用於二者的核心可以支援這二等級(當然,具有來自二等級的樣板及指令但不是來自二等級的所有樣板及指令之某些混合的核心是在本發明的範圍之內)。而且,單一處理器包含多核心,而所有這些核心支援相同的等級
或是不等的核心支援不同的核心。舉例而言,在具有分別的圖形及一般用途的核心之處理器中,主要用於圖形成及/或科學計算之多個圖形核心中之一僅支援等級A,而多個一般用途的核心中之一或更多可以是具有用於僅支援等級B之一般用途計算的暫存器再命名及亂序執行的高性能一般用途核心。未具有分別的圖形核心之另一處理器包含支援等級A及等級B等二等級之一或更多一般用途的有序或亂序核心。當然,在本發明的不同實施例中,來自一等級的特點也可在其它等級中實施。以高階語言撰寫的程式將被置於(例如,剛好即時被編譯或靜態地被編譯)各式各樣不同的可執行形式,包含:1)僅具有由用於執行的標的處理器所支援的等級之指令;或者,2)具有使用所有等級的指令之不同的組合而撰寫的替代常式以及具有根據由目前正執行碼的處理器支援的指令而選取要執行的常式之控制流動碼的形式。
圖16是方塊圖,顯示根據本發明的實施例之舉例說明的特定向量友善指令格式。圖16顯示特定向量友善指令格式1600,特定向量友善指令格式1600在其指定欄位的位置、大小、解譯、及次序、以及用於那些欄位中的某些欄位之值的情形中是特定的。特定向量友善指令格式1600可以被用以延伸x86指令集,因而某些欄位類似於或同於現有的x86指令集中使用的欄位以及其延伸(例
如,AVX)。此格式維持與具有延伸的現存x86指令集的前置編碼欄位、真實運算碼位元組欄位、MOD R/M欄位、SIB欄位、位移欄位、及立即欄位一致。顯示來自圖16的欄位映射之來自圖15的欄位。
應瞭解,雖然在同屬向量友善指令格式1500的內容中為了說明而參考特定向量友善指令格式1600,以說明發明的實施例,但是,除非特別申明,否則本發明不侷限於特定向量友善指令格式1600。舉例而言,同屬向量友善指令格式1500慮及用於各種欄位的各種可能大小,而特定向量友善指令格式1600顯示為具有特定大小的欄位。具體舉例而言,雖然資料元件寬度欄位1564在特定向量友善指令格式1600中顯示為一位元欄位,但是,本發明不限於此(亦即,同屬向量友善指令格式1500慮及資料元件寬度欄位1564的其它大小)。
同屬向量友善指令格式1500包含依圖16A中所示的次序而於下列出的下述欄位。
EVEX Prefix(位元組0-3)1602-以四位元組形式編碼。
格式欄位1540(EVEX位元組0,位元[7:0])-第一位元組(EVEX位元組0)是格式欄位1540以及其含有0x62(用於區別發明的一實施例中向量友善指令格式的獨特值)。
第二-第四位元組(EVEX位元組1-3)包含提供特定能力的多個位元欄位。
REX欄位1605(EVEX位元組1,位元[7-5])-由EVEX.R位元欄位(EVEX位元組1,位元[7]-R)、EVEX.X位元欄位(EVEX位元組1,位元[6]-X)、及1557BEX位元組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’欄位1510-這是REX’欄位1510的第一部份且是用以將延伸的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。
運算碼映射欄位1615(EVEX位元組1,位元[3:0]-mmmm)-它的內容將暗指的領先運算碼位元組(0F,0F 38,或0F 3)編碼。
資料元件寬度欄位1564(EVER位元組2,位元[7]-W)-由記號EVEX.W表示。EVEX.W用以界定資料型式(32位元資料元件或64位元資料元件)的粒度(大小)。
EVEX.vvvv 1620(EVEX位元組2,位元[6:3]-vvvv)-EVEX.vvvv的角色可以包含下述:1)EVEX.vvvv將以反轉(1s互補)形式指定的第一源暫存器運算元編碼,且對於具有2或更多源運算元的指令是有效的;2)EVEX.vvvv將對某些向量偏移以1s互補形式指定的目的地暫存器運算元編碼;或者3)EVEX.vvvv未將任何運算元編碼,欄位被保留且應含有1111b。因此,EVEX.vvvv欄位1620將依反轉(1s互補)形式儲存的第一源暫存器說明符的4下階位元編碼。取決於指令,額外的不同EVEX位元欄位被用以延伸說明符大小至32暫存器。
EVEX.U 1568等級欄位(EVEX位元組2,位元[2]-U)-假使EVEX.U=0,則其標示等級A或EVEX.U0;假使EVEX.U=1,則其標示等級B或EVEX.U1。
前置編碼欄位1625(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前置編碼,因而不要求擴展。
阿爾發欄位1552(EVEX位元組3,位元[7]-EH;也稱為EVEX.EH、EXEX.rs、EVEX.RL、EVEX.寫入遮罩控制、及EVEX.N;也以α顯示),如以往所述般,此欄位是內容特定的。
貝他欄位1554(EVEX位元組3,位元[6:4])-SSS;也稱為EVEX.s2-0、EXEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB;也以β β β顯示)-如先前所述般,此欄位是內容特定的。
REX’欄位1510-這是REX’欄位的餘部且是可被用以將延伸的32暫存器組中的上16或下16編碼之EVEX.V’位元欄位(EVEX位元組3,位元[3]-V’)。此位元以位元反轉格式儲存。1的值被用以將下16暫存器編碼。換言之,藉由結合EVEX.V’、EVEX.vvvv以形成V’VVVV。
寫入遮罩欄位1570(EVEX位元組3,位元[2:0]-kkk)-如同先前所述般,其內容指定寫入遮罩暫存器中的暫存器索引。在發明的一實施例中,特定值
EVEX.kkk=000具有特別的表現,暗指無寫入遮罩用於特定的指令(這可以以各種方式實施,包含使用實體接線至繞過遮罩硬體的所有或硬體之寫入遮罩)。
真實運算碼欄位1630(位元組4)也稱為運算碼位元組。在此欄位中指定運算碼的一部份。
MOD R/M欄位1640(位元組5)包含MOD欄位1642、Reg欄位1644、及R/M欄位1646。如同先前所述般,MOD欄位1642的內容區別記憶體存取與非記憶體存取作業。Reg欄位1644的角色可以總合為二情形:將目的地暫存器運算元或源暫存器運算元編碼,或是被當作運算元延伸且不被用以將任何指令運算元編碼。R/M欄位1646的角色可以包含下述:將指引記憶體位址的指令運算元編碼,或者,將目的地暫存器運算元或源暫存器運算元編碼。
比例、索引、基礎(SIB)位元組(位元組6)-如同先前所述般,比例欄位1550的內容是用於記憶體位址產生。SIB.xxx 1654及SIB.bbb 1656-這些欄位的內容先前已被指稱與暫存器索引Xxxx及Bbbb有關。
位移欄位1562A(位元組7-10)-當MOD欄位1642含有10時,位元組7-10是位移欄位1562A,且其工作與舊制32位元位移(disp32)相同並以位元組粒度工作。
位移因數欄位1562B(位元組7)-當MOD欄位1642含有01時,位元組7是位移因數欄位1562B。此欄位的位置與以位元組粒度工作的舊制x86指令組8位元位移
(disp8)的位置相同。由於disp8是正負號延伸,所以,其僅可以在-128與127位元組偏移之間定址;以64位元組快取線的觀點而言,disp8使用可以被設定為僅四個真正有用的值-128、-64、0、及64之8位元;由於通常需要更大的範圍,所以,使用disp32;但是,disp32要求4位元組。與disp8和disp32相反,位移因數欄位1562B是disp8的再解譯;當使用位移因數欄位1562B時,真實的位移由位移因數欄位的內容乘以記憶體運算元存取(N)所決定。此型式的位移被稱為disp8*N。這降低平均的指令長度(用於位移但是具有更大範圍的單一位元組)。此被壓縮的位移是根據有效的位移是記憶體存取的粒度之倍數的假設,因此,位址偏移的冗餘低階位元不需被編碼。換言之,位移因數欄位1562B替代舊制x86指令集8位元位移。因此,位移因數欄位1562B以同於x86指令集8位元位移的方式編碼(以致於ModRM/SIB編碼規則不變),僅有的例外是disp8被超載至disp8*。換言之,編碼規則或編碼長度沒有變化,但是僅有硬體對位移值的解譯有變化(這需要將位移依記憶體運算元的大小來比例化以取得位元組方式的位址偏移)。
立即欄位1572如先前所述地操作。
圖16B是方塊圖,顯示根據本發明的一實施例之構成完全運算碼欄位1574之特定同屬向量友善指令格式1600
的欄位。具體而言,完全運算碼欄位1574包含格式欄位1540、基礎作業欄位1542、及資料元件寬度(W)欄位1564。基礎作業欄位1542包含前置編碼欄位1625、運算碼映射欄位1615、及真實運算碼欄位1630。
圖16C是方塊圖,顯示根據本發明的一實施例之構成暫存器索引欄位1554之特定同屬向量友善指令格式1600的欄位。具體而言,暫存器索引欄位1554包含REX欄位1605、REX’欄位1610、MODR/M.reg欄位1644,MODR/M.r/m欄位1646、VVVV欄位1620、xxx欄位1654、及bbb欄位1656。
圖16D是方塊圖,顯示根據本發明的一實施例之構成擴增作業欄位1550之特定同屬向量友善指令格式1600的欄位。當等級(U)欄位1568含有0時,則其標示EVEX.U0(等級A 1568A);當其含有1時,則其標示EVEX.U1(等級B 1568B)。當U=0及MOD欄位1642含有11(標示無記憶體存取作業)時,阿爾發欄位1552(EVEX位元組3,位元[7]-EH)被解譯為rs欄位1552A。當rs欄位1552A含有1(整修1552A.1)時,貝他欄位1554(EVEX位元組3,位元[6:4]-SSS)被解譯為整修控制欄位1554A。整修控制欄位1554A包含一位元
SAE欄位1556及二位整修作業欄位1558。當rs欄位1552A含有0(資料轉換1552A.2)時,貝他欄位1554(EVEX位元組3,位元[6:4]-SSS)被解譯為三位元資料轉換欄位1554B。當U=0及MOD欄位1642含有00、01、或10(標示記憶體存取作業)時,阿爾發欄位1552(EVEX位元組3,位元[6:4]-SSS)被解譯為三位元資料操作欄位1554C。
當U=1時,阿爾發欄位1552(EVEX位元組3,位元[7]-EH)被解譯為寫入遮罩控制(Z)欄位1552C。當U=1及MOD欄位1642含有11(標示無記憶體存取作業)時,部份貝他欄位1554(EVEX位元組3,位元[4]-S0)被解譯為RL欄位1557A;當其含有1(整修1557A.1)時,貝他欄位1554的其餘部份(EVEX位元組3,位元[6-5]-S2-1)被解譯為整修作業欄位1559A,而當RL欄位1557 A含有0(VSIZE 1557.A2)時,貝他欄位1554的其餘部份(EVEX位元組3,位元[6-5]-S2-1)被解譯為向量長度欄位1559B(EVEX位元組3,位元[6-5]-L1-0)。當U=1及MOD欄位1642含有00、01、或10(標示記憶體存取作業)時,貝他欄位1554(EVEX位元組3,位元[6:4]-SSS)被解譯為向量長度欄位1559B(EVEX位元組3,位元[6-5]-L1-0)及廣播欄位1557B(EVEX位元組3,位元[4]-B)。
圖17是根據本發明的一實施例之暫存器架構1700的方塊圖。在所示的實施例中,有512位元寬的32個向量暫存器1710;這些暫存器稱為zmm0至zmm31。較低的16zmm暫存器的低階256位元被覆蓋於暫存器0-16之上。較低的16-zmm暫存器的低階128位元(ymm暫存器的低階128位元)被覆蓋於暫存器xmm0-15之上。特定向量友善指令格式1600如下述表格中所示般對這些被覆蓋的暫存器檔案作業。
換言之,向量長度欄位1559B在最大長度與一或更多其它較短的長度之間選取,其中,每一此較短長度是先前長度的長度之一半;以及,不具向量長度欄位1559B的指令樣板對最大向量長度操作。此外,在一實施例中,特定向量友善指令格式1600的等級B指令樣板對緊縮的或純量的單/雙精度浮點資料及緊縮的或純量的整數資料作業。純量作業是對zmm/ymm/xmm暫存器中最低階資料元
件位置執行的作業;更高階的資料元件位置視實施例而留在它們在指令之前的相同位置或者被零化。
寫入遮罩暫存器1715-在所示的實施例中,有8個寫入遮罩暫存器(k0至k7),每一寫入暫存器大小為64位元。在替代實施例中,寫入遮罩暫存器1715大小為16位元。如同先前所述般,在本發明的一實施例中,向量遮罩暫存器k0無法作為寫入遮罩;當正常標示k0的編碼用於寫入遮罩時,其選取0xFFFF的實體接線的寫入遮罩,有效地使用於該指令的寫入遮罩禁能。
一般用途暫存器1725-在所示的實施例中,有十六個64位元的一般用途暫存器,它們與現存的x86定址模式一起作用以將記憶體運算元定址。這些暫存器以名稱RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、及R8至R15表示。
純量浮點堆疊暫存器檔案(x87堆疊)1745,MMX緊縮整數平坦暫存器檔案1750混疊於其上-在所示的實施例中,x87堆疊是八元件堆疊,用以使用x87指令集延伸,對32/64/80位元浮點資料執行純量浮點作業;而MMX暫存器被用以對64位元緊縮的暫存器資料執行作業,以及為了某些在MMX及XMM暫存器之間執行的作業而固持運算元。
本發明的替代實施例可以使用更寬或更窄的暫存器。此外,本發明的替代實施例可以使用更多、更少、或不同的暫存器檔案及暫存器。
處理器核心可以以不同方式實施、用於不同目的、及在不同處理器中。舉例而言,些些核心的實施包含:1)用於一般用途的計算之一般用途的有序核心;2)用於一般用途的計算之高性能的一般用途的亂序核心;3)主要用於圖形及/或科學(輸貫量)計算之特別用途的核心。不同處理器的實施包含:1)CPU,包含用於一般用途的計算之一或更多一般用途的有序核心及/或用於一般用途的計算之一或更多一般用途的亂序核心;以及,2)共處理器,包含一或更多主要用於圖形及/或科學(輸貫量)計算之特別用途的核心。這些不同的處理器導致不同的電腦系統架構,包含:1)共處理器與CPU在不同的晶片上;2)共處理器在與CPU相同封裝中的不同晶片上;3)共處理器與CPU在相同晶粒上(在此情形中,此共處理器有時稱為特別用途邏輯,例如集成的圖形及/或科學(輸貫量)邏輯、或是特別用途的核心);以及,4)系統晶片,在相同晶粒上包含所述CPU(有時稱為應用核心或是應用處理器)、上述共處理器、及其它功能。在說明舉例說明的處理器及電腦架構之後,接著說明舉例說明的核心架構。
圖18A是方塊圖,顯示根據本發明的實施例之舉例說明的有序管線及舉例說明的暫存器重命名、亂序發佈/執行管線。圖18B是方塊圖,顯示根據本發明的實施例之要包含於處理器中之舉例說明的有序架構核心及舉例說明的暫存器重命名、亂序發佈/執行架構核心。圖18A-B中的實線框顯示有線管線及有序核心,而選加的虛線框顯示暫存器重命名、亂序發佈/執行管線及核心。假定有多態樣是亂序態樣的子集合,將說明亂序態樣。
在圖18A中,處理器管線1800包含提取級1802、長度解碼級1804、解碼級1806、分配級1808、重命名級1810、排程(也稱為發送或發佈)級1812、暫存器讀取/記憶體級1814、執行級1816、例外處理級1822、及確定級1824。
圖18B顯示處理器核心1890,其包含耦合至執行引擎單元1850的前端單元1830,引擎單元1850及前端單元1830都耦合至記憶體單元1870。核心1890可為精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、超長指令字(VLIW)核心、或是混合或替代核心型式。又另一選項,核心1890可為特別用途核心,例如,網路或通訊核心、壓縮引擎、共處理器核心、一般用途計算圖形處理單元(GPGPU)核心、圖心核心、等等。
前端單元1830包含耦合至指令快取單元1834的分枝預測單元1832,指令快取單元1834耦合至指令轉譯旁看緩衝器(TLB)1836,指令轉譯旁看緩衝器(TLB)1836
耦合至指令提取單元1838,指令提取單元1838耦合至解碼單元1840。解碼單元1840(或解碼器)將指令解碼,以及產生從原始指令解碼、或是以其它方式反應原始指令、或是從原始指令導出之一或更多微作業、微碼進入點、微指令、其它指令、或其它控制訊號,以作為輸出。可以使用各種不同的機構以實施解碼單元1840。適當機構的實例包含但不限於查詢表、硬體實施、可編程邏輯陣列(PLA)、微碼微讀記憶體(ROM)、等等。在一實施例中,核心1890包含微碼ROM或儲存微碼以用於某些巨集指令的微碼(例如,在解碼單元1840或者是前端單元1830內)。解碼單元1840耦合至執行引擎單元1850中的重命名/分配器單元1852。
執行引擎單元1850包含耦合至退出單元1854及一或更多排程器單元1856的集合的重命名/分配器單元1852。排程器單元1856代表任何數目的不同排程器、包含保留站、中央指令窗、等等。排程器單元1856耦合至實體暫存器檔案單元1858。各實體暫存器檔案單元1858代表一或更多實體暫存器檔案,不同的實體暫存器檔案儲存一或更多不同的資料型式,例如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、狀態(例如指令指標器,指令指標器是要被執行的下一指令之位置)、等等。在一實施例中,實體暫存器檔案單元1858包括向量暫存器單元、寫入遮罩暫存器單元、及純量暫存器單元。這些暫存器單元可以提供架構向量暫存器、向量
遮罩暫存器、及一般用途暫存器。實體暫存器檔案單元1858由退出單元1854重疊以顯示實施暫存器重命名及亂序執行的各種方式(例如,使用再排序緩衝器和退出暫存器檔案;使用未來檔案、歷史緩衝器、及退出暫存器檔案;使用暫存器映射及暫存器庫;等等)。退出單元1854及實體暫存器檔案單元1858耦合至執行簇1860。執行簇1860包含一或更多執行單元1862及一或更多記憶體存取單元1864的集合。執行單元1862執行多種作業(例如,偏移、加法、減法、乘法)及對各種型式的資料(例如純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)執行。雖然某些實施例包含多個專用於特定指令或功能集的執行單元,但是,其它實施例可以僅包含都執行所有功能之多個執行單元或是一執行單元。由於某些實施例產生用於某些型式的資料/作業之分別的管線(例如,純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線、及/或記憶體存取管線,這些管線均具有它們自已的排程器單元、實體暫存器單元、及/或執行簇-以及,在分別的記憶體存取管線的情形中,實施某些實施例,其中,僅有此管線的執行簇具有記憶體存取單元1864),所以,排程器單元1856、實體暫存器檔案單元1858、及執行簇1860顯示為可能是複數的。也應瞭解,在使用分別的管線之情形中,這些管線中之一或更多可以是亂序發佈/執行而其餘的為有序。
記憶體單元1864的組包含耦合至記憶體單元1870,
記憶體單元1870包含資料轉譯旁看緩衝器(TLB)單元1872,資料TLB單元1872耦合至資料快取單元1874,資料快取單元1874耦合至等級2(L2)快取單元1876。在一舉例說明的實施例中,記憶體存取單元1864包含載入單元、儲存位址單元、及儲存資料單元,各單元均耦合至記憶體單元1870中的資料TLB單元1872。指令快取單元1834又耦合至記憶體單元1807中的等級2(L2)快取單元1876。L2快取單元1876耦合至一或更多其它等級的快取記憶體以及最後耦合至主記憶體。
舉例而言,舉例說明的暫存器重命名、亂序發佈/執行核心架構可以實施如下所述的管線1800:1)指令提取1838執行提取及長度解碼級1802和1804;2)解碼單元1840執行解碼級1806;3)重命名/分配器單元1852執行分配級及重命名級;4)排程器單元1856執行排程級1812;5)實體暫存器檔案單元1858及記憶體單元1870執行暫存器讀取/記憶體讀取級1814;執行簇1860執行執行級1816;6)記憶體單元1870及實體暫存器檔案單元1858執行寫回/記憶體寫入級1818;7)牽涉例外處理級1822的多種單元;及8)退出單元1854及實體暫存器單元1858執行確定級1824。
核心1890支援一或更多指令集(例如,x86指令集(具有添加更新的版本之某些延伸);加州Sunvale的MIPS Technologies公司之MIPS指令集;加州Sunvale的ARM Holdings公司的ARM指令集(具有例如NEON等選
加的延伸)),包含此處所述的指令。在一實施例中,核心1890包含邏輯以支援緊縮資料指令集延伸(例如,AVX1、AVX2),藉以允許由很多多媒體應用使用的作業使用緊縮資料來執行。
應瞭解,核心可支援多緒化(執行二或更多平行組的作業或緒),以及以包含時間切片多緒化、同時多緒化(其中,單一實體核心提供用於各緒之邏輯核心,實體核心是同時多緒的)等的各種式方、或者其組合,如此執行(例如,在Intel®的混合緒化技術中之時間切片提取及解碼和之後的同時多緒化)。
雖然在亂序執行的背景下說明暫存器重命多,但是,應瞭解,在有序架構中可使用暫存器重命名。雖然所示的處理器之實施例也包含分別的指令及資料快取單元1834/1874以及共用的L2快取單元1876,但是,替代的實施例可以具有用於指令及資料之單一內部快取記憶體,例如等級1(L1)內部快取記憶體、或多等級內部快取記憶體。在某些實施例中,系統包含內部快取記憶體及核心和/或處理器之外部的外部快取記憶體。替代地,所有快取記憶體可以是在核心及/或處理器的外部。
圖19A-B是方塊圖,顯示更特定舉例說明的有序核心架構,其中,核心是晶片中數個邏輯區塊(包含相同型式及/或不同型式的其它核心)中之一。邏輯區塊視應用而
經由高頻寬互連網路(例如環式網路)與某些固定的功能邏輯、記憶體I/O介面、及其它必要的I/O邏輯通訊。
圖19A是根據本發明的實施例之單一處理器核心、以及其對晶粒上互連網路1902的連接及其區域子集合的等級2(L2)快取記憶體1904之方塊圖。在一實施例中,指令解碼器1900支援具有緊縮資料指令集延伸的x86指令集。L1快取記憶體1906允許對快取記憶體的低潛候期存取進入純量及向量單元。雖然在一實施例中(為簡化設計),純量單元1908及向量單元1910使用分別的暫存器組(分別地,純量暫存器1912及向量暫存器1914)以及在它們之間傳輸的資料被寫至記憶體並接著從等級1(L1)快取記憶體1906讀回,但是,本發明的替代實施例可以使用不同的方式(例如,使用單一暫存器集合或是包含允許資料在二暫存器檔案之間傳輸而不用被寫入及讀回的通訊路徑)。
L2快取記憶體的區域子集合1904是全區L2快取記憶體的部份,全區L2快取記憶體是被分割成分別的區域子集合,每一處理器核心一區域子集合。各處理器核心對其自己的區域子集合L2快取記憶體1904具有直接存取路徑。由處理器核心讀取的資料儲存在其L2快取基底1904中,以及,可以與其它存取它們自己的區域L2快取子集合之處理器核心平行地被快速存取。由處理器核心寫入的資料儲存在它自己的L2快取子集合1904中及於需要時從其它子集合湧入。環式網路確保用於共用資料的相干性。
環式網路是雙向的,以允許例如處理器核心、L2快取記憶體及其它邏輯區塊等代理器在晶片內彼此通訊。各環式資料路徑是每一方向1012位元寬。
圖19B是根據本發明的實施例之圖19A中的處理器核心之部份擴充視圖。圖19B包含L1快取記憶體1904之L1資料快取記憶體1906A部份、以及與向量單元1910及向量暫存器1910有關的更多詳節。具體而言,向量單元1910是16位元寬的向量處理單元(VPU)(請參見16寬的ALU 1928),其執行整數、單精度浮動、及雙精度浮動指令中之一或更多。VPU以拌和單元1920支援拌和暫存器輸入、以數值轉換單元1922A-B支援數值轉換、以及以記憶體輸入上的複製單元1924支援複製。寫入遮罩暫器1926允許預測結果向量寫入。
圖20是根據本發明的實施例之具有一個以上的核心、具有整合記憶體控制器及具有整合的圖形之處理器2000的方塊圖。圖20中的粗線框顯示具有單核心2002A的處理器2000、系統代理器2010、一或更多匯流排控制器單元2016,而選加的虛線框顯示具有多核心2002A-N的替代處理器2000、系統代理器單元2010中的一或更多整合的記憶體控制器元2014的組、以及特別用途的邏輯2008。
因此,處理器2000的不同實施包含:1)具有與圖形
及/或科學(輸貫量)邏輯(包含一或更多核心)整合之特定用途的邏輯之CPU,以及,核心2002A-N是一或更多一般用途核心(例如,一般用途的有序核心、一般用途的亂序核心、二者的組合);2)設有核心2002A-N的共處理器是大數目的主要用於圖形及/或科學(輸貫量)之特定用途核心;以及,3)設有核心2002A-N的共處理器是大數目的之一般用途的有序核心。因此,處理器2000可為一般用途的處理器、共處理器或特定用途的處理器,舉例而言,網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(一般用途的圖形處理單元)、高輸貫量多整合核心(MIC)處理器(包含30或更多的核心)、嵌入式處理器、等等。處理可以實施於一或更多晶片中。使用例如BiCMOS、CMOS、或NMOS等多種製程技術中的任一技術,處理器2000可以是部份及/或實施在一或更多基底上。
記憶體階層包含在核心內的一或更多等級的快取、一或更多共用快取單元2006、及耦合至整合記憶體控制器單元2014組之外部記憶體(未顯示)。共用快取單元2006組可以包含例如等級2(L2)、等級3(L3)、等級4(L4)、或其它等級快取等一或更多中級快取、最後等級快取(LLC)、及/或其組合。雖然在一實施例中,環式互連單元2012將整合圖形邏輯2008、共用快取單元2006的組、及系統代理單元2010/整合的記憶體控制器單元2014互連,但是,替代實施例可以使用任何數目的已
知技術來互連這些單元。在一實施例中,在一或更多快取單元2006與核心2002-A-N之間維持相干性。
在某些實施例中,一或更多核心2002A-N能夠多緒化。系統代理器2010包含那些元件協調及作業核心2002A-N。系統代理器單元2010可以包含例如電力控制單元(PCU)及顯示單元。PCU可以是或包含調節核心2002A-N及整合圖形邏輯2008的電力狀態所需的邏輯及元件。顯示單元是用於驅動一或更多外部連接的顯示器。
以架構指令集的觀點而言,核心2002A-N可以是同質的或異質的;亦即,核心2002A-N中的二或更多核心能夠執行相同的指令集,而其它核心能夠僅執行指令集的子集合或不同的指令集。
圖21-24是舉例說明的電腦架構的方塊圖。用於膝上型電腦、桌上型電腦、手持PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位訊號處理器(DSP)、圖形裝置、電動遊戲裝置、機上盒、微控制器、行動電話、可攜式媒體播放器、手持裝置、及各式各樣的其它電子裝置等領域中熟知的其它系統設計及配置也是適合的。一般而言,能夠併有此處所揭示的處理器及/或其它執行邏輯的眾多種類的系統或電子裝置通常是適合的。
現在參考圖21,其顯示根據本發明的一實施例之系
統2100的方塊圖。系統2100可以包含耦合至控制器集線器2120之一或更多處理器。在一實施例中,控制器集線器2120包含圖形記憶體控制器集線器(GMCH)2190及輸入/輸出集線器(IOH)2150(可以在分開的晶片上);GMCH 2190包含記憶體及圖形控制器,記憶體2140及共處理器2145耦合至記憶體及圖形控制器;IOH 2150將輸入/輸出(I/O)裝置2160耦合至GMCH 2190。替代地,記憶體及圖形控制器中之一或二者整合於處理器之內(如此處所述般),記憶體2140及共處理器2145直接耦合至處理器2110,以及,控制器集線器2120與IOH 2150在單一晶片中。
在圖21中以虛線顯示選加本質之增加的處理器2115。各處理器2110、2115包含此處所述的處理核心中之一或更多且可為處理器2000的某版本。
舉例而言,記憶體2140可以是動態隨機存取記憶體(DRAM)、相變記憶體(PCM)、或是二者的組合。對於至少一實施例而言,控制器集線器2120經由例如前側匯流排(FSB)1695等多點匯流排、例如快速路徑互連(QPI)等點對點介面、或是類似連接2195而與處理器2110、2115通訊。
在一實施例中,共處理器2145是特別用途的處理器,例如高輸貫量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器、等等。在一實施例中,控制器集線器2120包含整合圖形加速器。
以包含架構、微架構、熱、耗電特徵、等等度量計量光譜的觀點而言,實體源2110、2115之間有各種差異。
在一實施例中,處理器2110執行控制一般型式的資料處理作業的指令。嵌入於指令內的可為共處理器指令。處理器2110將這些共處理器指令視為應用附接的共處理器2145執行的型式。因此,處理器2110在共處理器匯流排或是其它互連上發佈這些共處理器指令(或是代表共處理器的控制訊號)給共處理器2145。共處理器2145接受及執行收到的共處理器指令。
現在參考圖22,其為根據本發明的實施例之第一更特定的舉例說明的系統2200的方塊圖。如圖22中所示般,多處理器系統2200是點對點互連系統,以及包含經由點對點互連2250耦合的第一處理器2270和第二處理器2280。各處理器2270及2280可以是某版本的處理器2000。在本發明的一實施例中,處理器2270和2280分別是處理器2110和2115,而共處理器2238是共處理器2145。在另一實施例中,處理器2270及2280分別是處理器2110和共處理器2145。
處理器2270和2280顯示為分別包含整合記憶體控制器(IMC)單元2272和2282。處理器2270也包含點對點介面2276和2278作為其匯流排控制器單元的一部份;類似地,第二處理器2280包含P-P介面2286和2288。處理器2270、2280使用P-P介面電路2278、2288而經由點對點(P-P)介面2250交換資訊。如圖22所示,IMC
2272及2282將處理器耦合至各別記憶體,亦即記憶體2232和記憶體2234,它們可以是本地附著至各別處理器的記憶體的部份。
處理器2270、2280使用點對點介面電路2276、2294、2286、2298,經由個別的P-P介面2252、2254而均可以與晶片組2290交換資訊。晶片組2290經由高性能圖形介面2239,可選擇地與共處理器2238交換資訊。在一實施例中,共處理器2238是特定用途處理器,例如高輸貫量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、CPGPU、嵌入式處理器、等等。
共用的快取記憶體(未顯示)可以包含任一處理器中或二處理器的外部、但尚未經由P-P互連與處理器連接,以致於假使處理器處於低電力模式中時,任一或二處理器的本地快取資訊可以儲存在共用的快取記憶體中。
晶片組2290可以經由介面2296而耦合至第一匯流排2216。在一實施例中,第一匯流排2216可以是週邊元件互連(PCI)匯流排,或是例如PCI快速匯流排或其它第三代I/O互匯流排等匯流排,但是,本發明的範圍不侷限於此。
如圖22中所示般,各式各樣的I/O裝置2214與匯流排橋接器2218耦合至第一匯流排2216,匯流排橋接器2218耦合第一匯流排2216至第二匯流排2220。在一實施例中,例如處理器、高輸貫量MIC處理器、GPGPU、加速器(例如圖形加速器或是數位訊號處理(DSP)單
元)、現場可編程閘陣列、或是任何其它處理器等一或更多增加的處理器2215耦合至第一匯流排2216。在一實施例中,第二匯流排2220可以是低接腳數(LPC)匯流排。在一實施例中,各種裝置可以耦合至第二匯流排2220,舉例而言,包含鍵盤及/或滑鼠2222、通訊裝置2227及例如碟片驅動器或其它大量儲存裝置等包含指令/碼及資料2230的儲存單元2228。此外,音訊I/O 2224可以耦合至第二匯流排2220。注意,其它架構是可能的。舉例而言,取代圖22的點對點架構,系統可以實施多點匯流排或其它此類架構。
現在參考圖23,其顯示根據本發明的實施例之第二更特定舉例說明的系統2300之方塊圖。圖22及23中類似的元件帶有類似的代號,以及,圖22的某些態樣在圖23中被省略,以免模糊圖23的其它態樣。
圖23顯示處理元件2270、2280分別包含整合的記憶體及I/O控制邏輯(CL)2272和2282。因此,CL 2272、2282包含整合記憶體控制器單元及包含I/O控制邏輯。圖23顯示不僅記憶體2232、2234耦合至CL 2272、2282,I/O裝置2314也耦合至控制邏輯2272、2282。舊制I/O裝置2315耦合至晶片組2290。
現在參考圖24,其顯示根據本發明的實施例之SoC 2400的方塊圖。圖20中類似的元件帶有類似的代號。而且,虛線框是關於更多進階的SoCs的選加特點。在圖24中,互連單元2402耦合至:應用處理器2410,包含一或
更多核心2002A-N及共用快取單元2006的集合;系統代理器單元2010;匯流排控制器單元2016;整合記憶體控制器單元2014;包含整合圖形邏輯、影像處理器、音訊處理器、以及視訊處理器之一或更多共處理器2420的組;靜態隨機存取記憶體(SRAM)單元2430;直接記憶體存取(DMA)單元2432;以及用於耦合至一或更多外部顯示器的顯示單元2440。在一實施例中,共處理器2420包含特定用途的處理器,例如網路或通訊處理器、壓縮引擎、GPGPU、高輸貫量MIC處理器、嵌入式處理器、等等。
此處揭示的機構實施例可以以硬體、軟體、韌體或這些實施方式的結合來實施。本發明的實施例可以實施成在可編程系統上執行的電腦程式或程式碼,可編程系統包括至少一處理器、儲存系統(包含依電性及非依電性記憶體及/或儲存元件)、至少一輸入裝置、及至少一輸出裝置。
例如圖22中所示的碼2230等程式碼可以應用至輸入資訊以執行此處所述的功能和產生輸出資訊。輸出資訊可以以已知方式應用至一或更多輸出裝置。為了此應用,處理系統包含具有例如數位訊號處理器(DSP)、微控制器、特定應用積體電路(ASIC)、或微處理器等處理器之任何系統。
程式碼可以以高階程式或物件導向的程式語言實施,以與處理系統通訊。假使需要時,程式碼也可以以組合或
機器語言來實施。事實上,此處所述的機構在範圍上不侷限於任何特定的程式語言。在任何情形中,語言可以是編譯或解譯的語言。
至少一實施例的一或更多態樣可以由儲存在機器可讀取的媒體上之代表指令實施,代表指令代表處理器內各種邏輯,代表指令由機器讀取時促使機器製造邏輯以執行此處所述的技術。稱為「IP核心」的這些代表可以儲存在實體的、機器可讀取的媒體並供應至各式各樣的客戶或製造設施,而載入至真正地製造邏輯的製造機器或處理器。
此機器可讀取的媒體包含但不限於由機器或裝置製造或形成的物件之非暫時性、實體配置,包括例如硬碟等儲存媒體、包含軟碟、光碟、光碟唯讀記憶體(CD-ROM)、可重寫光碟(CD-RW)、及磁光碟等任何其它型式的碟片、例如唯讀記憶體(ROM)、例如動態隨機存取記憶體、靜態隨機存取記憶體等隨機存取記憶體(RAM)、可抹拭可編程唯讀記憶體(EPPROM)、快閃記憶體、電可抹拭可編程唯讀記憶體(EEPROM)等半導體裝置、相變記憶體(PCM)、磁性或光學卡、或適用於儲存電子指令的任何其它型式的媒體。
因此,本發明的實施例也包含含有指令或含有設計資料之非暫時的、實體的機器可讀取的媒體,所述設計資料是例如硬體說明語言(HDL),其界定此處所述的結構、電路、裝置、處理器及/或系統特徵。這些實施例也意指程式產品。
仿真(包含二進位轉譯、碼變形、等等)
在某些情形中,指令轉換器可以用以將指令從源指令集轉換至標的指令集。舉例而言,指令轉換器可以將指令轉譯(例如,使用靜態二進位轉譯、包含動態編譯的動態二進位轉譯)、變形、模仿、或其它方式轉換至由核心處理的一或更多其它指令。指令轉換器可以以軟體、硬體、韌體、或其結合來實施。指令轉換器可以是在處理器上、不在處理器上、或部份在處理器上及部份不在處理器上。
圖25是方塊圖,根據本發明的實施例之比較使用軟體指令轉換器以將源指令集中的二進位指令轉換成標的指令集中的二進位指令。在顯示的實施例中,指令轉換器是軟體指令轉換器,但是,指令轉換器可以替代地以軟體、硬體、或其各種結合來實施。圖25顯示高階語言2502的程式,其可以由X86編譯器2104編譯以產生X86二進位碼2106,二進位碼2106可以由具有至少一X86指令集核心2516的處理器原地執行。具有至少一X86指令集核心2516的處理器代表藉由共容地執行或其它方式地處理下述,而能夠與具有至少一x86指令集核心的英特爾處理器執行實質上相同功能的任何處理器:(1)英特爾x86指令集核心的指令集的實質部份,或是(2)以在具有至少一x86指令集核心的Intel處理器上執行為目的之應用程式或其它軟體的物件碼版本,以便取得與具有至少一x86指令集核心的英特爾處理器實質上相同的結果。X86編譯
器2504代表可以操作以產生x86二進位碼2506(例如,物件碼)之編譯器,x86二進位碼2506藉由或不藉由增加的鏈結處理,都可以在具有至少一x86指令集核心2516的處理器上執行。類似地,圖25顯示高階語言2502的程式,使用替代指令集編譯器2508,可以將其編譯以產生替代指令集二進位碼2510,替代指令集二進位碼2510可以由不具有至少一x86指令集核心2514的處理器(例如,具有執行例如加州Sunnyvale的MIPS Technologies公司的MIPS指令集及/或加州Sunnyvale的ARM Holdings公司的ARM指令集之核心的處理器)原地執行。指令轉換器2512用以將x86二進位碼2506轉換成可以由不具有x86指令集核心2514的處理器原地執行的碼。由於能夠如此執行的指令轉換器難以製造,所以,此轉換的碼不太可能與替代指令集二進位碼2510相同;但是,所述轉換的碼將完成一般操作及由來自替代指令集的指令組成。因此,指令轉換器2512代表軟體、韌體、硬體或其組合,其經由仿真、模擬或任何其它處理而允許不具有x86指令集處理器或核心的處理器或其它電子裝置執行x86二進位碼2506。
圖3-4中任一圖說明的組件、特點、及細節也可選擇地用於圖1-2中的任一圖中。圖6-13中任一圖說明的組件、特點、及細節也可選擇地用於圖1或5中的任一圖中。此外,用於此處所述的任何裝置之此處所述的組件、特點、及細節也可選擇地用於及/或應用至在實施例中由
及/或與此裝置執行的此處所述的任何方法。此處所述的任何處理器可以包含在此處揭示之任何電腦系統或其它系統中。在某些實施例中,指令具有此處揭示的指令格式之特點或細節,但這並非必要。
在說明及申請專利範圍中,使用「連接」及/或「耦合」等詞與它們的衍生。這些詞並非要作為彼此的同義字。相反地,在實施例中,「連接」可用以表示二或更多元件是彼此直接實體及/或電接觸。「耦合」意指二或更多元件是彼此直接及/或間接接觸。但是,「耦合」也意指二或更多元件彼此未直接接觸但仍然彼此協力或互動。舉例而言,執行單元可以經由一或更多介入的組件而與暫存器及/或解碼單元相耦合。
使用「及/或」等詞。如同此處所使用般,「及/或」意謂一或另一或是二者(例如,A及/或B意指A或B或是A及B)。
在上述實施例中,揭示眾多特定細節,以助於完整瞭解本發明的實施例。但是,不用這些特定細節中的某些細節,仍可實施其它實施例。本發明的範圍並非由上述特定實例決定而是僅由下述申請專利範圍決定。在其它情形中,以方塊圖形式及/或無細節,顯示習知的電路、結構、裝置、及作業,以免模糊說明之瞭解。在被視為適當時,在多個圖中,除非另外指明,否則,重複代號、或代號的尾部,以標示選加地具有類似的或是相同的特徵之對應的或類似的元件。
作業可以由硬體組件執行以及可以以機器可執行的或電路可執行的指令具體實施,這些指令被用以促使及/或造成依指令編程的機器、電路或硬體組件(例如處理器、處理器的部份、電路、等等)可電路或其它硬體元件執行作業。作業可以由硬體及軟體的結合選加地執行。處理器、機器、電路、或硬體包含特定的或特定別的電路或其它邏輯(例如,可能與韌體及/或軟體相結合之硬體),可操作以執行及/或處理機器指令及儲存結果以回應指令。
某些實施例包含製品(例如,電腦程式產品),製品包含機器可讀取的媒體。媒體包含機構,機構提供、儲存可由機器讀取的形式之資訊。機器可讀取的媒體提供及於其上儲存指令或指令序列,假使及/或由機器執行時,這些指令或指令序列可操作以促使機器執行及/或造成機器執行此處所述的一或更多作業、方法、或技術。機器可讀取的媒體儲存或以其它方式提供此處揭示的指令之一或更多實施例。
在某些實施例中,機器可讀取的媒體包含實體的及/或非暫時的機器可讀取的儲存媒體。舉例而言,實體的及/或非暫時的機器可讀取的儲存媒體包含軟碟、光學儲存媒體、光碟、光學資料儲存裝置、CD-ROM、磁碟、磁光碟、唯讀記憶體、可編程ROM(PROM)、可抹拭及可編程ROM(EPROM)、電可抹拭及可編程ROM(EEPROM)、隨機存取記憶體(RAM)、靜態RAM
(SRAM)、動態RAM、快閃記憶體、相變記憶體、相變資料儲存材料、非依電性記憶體、非依電性資料儲存裝置、非暫時記憶體、非暫時資料儲存裝置、等等。非暫時機器可讀取的儲存媒體未由暫時傳播的訊號組成。
適當的機器實例包含但不限於一般用途處理器、特別用途處理器、指令處理裝置、數位邏輯電路、積體電路、等等。適當的機器之又其它實例包含計算裝置或是包含處理器、指令處理裝置、數位邏輯電路、或積體電路之其它電子裝置。這些計算裝置及電子裝置的實例包含但不限於桌上型電腦、膝上型電腦、筆記型電腦、平板電腦、筆記電腦、智慧型電話、行動電話、伺服器、網路裝置(例如路由器及交換機)。行動網際網路裝置(MID)、媒體播放器、智慧型電視、桌上型易網機、機上盒、及電動玩具控制器。或其它型式的電腦中的處理器)。或者,處理器可為特別用途處理器。適合的特定用途
舉例而言,在本說明書中述及的「一實施例」、「實施例」、「一或更多實施例」、「某些實施例」係表示特定特點包含在本發明的實施中但非必要。類似地,在說明中,為了使揭示流暢及助於瞭解各式各樣的發明態樣,各式各樣的特點群聚於單一實施例、圖式、或其說明中。但是,本揭示的方法不應被解釋成反應本發明要求比各申請專利範圍項中載述的特點還多的特點。相反地,如後述申請專利範圍所反應般,發明的態樣少於單一揭示的實施例之所有特點。因此,跟隨在詳細說明之後的申請專利範圍
於此併入實施方式一節中,以各項述申請專利範圍依據它自己作為本發明的分別實施例。
下述實例關於其它實施例。在一或更多實施例中的任意處可以使用實例中的特點。
實例1是處理器,包含眾多緊縮資料暫存器、及解碼單元以解碼指令。指令是標示要包含第一組至少四資料元件的第一源緊縮資料、是標示要包含第二組至少四資料元件的第二源緊縮資料、及是標示目的地儲存位置。執行單元與緊縮資料暫存器及解碼單元耦合。執行單元會將結果緊縮資料儲存在目的地儲存位置中以回應指令。結果緊縮資料是要包含至少四索引。索引是要識別第一及第二源緊縮資料中對應的資料元件位置。索引是要儲存在結果緊縮資料中的位置中,所述位置是代表第一及第二源緊縮資料中對應的資料元件之排序次序。
實例2包含實例1的處理器,其中,執行單元是要儲存結果緊縮資料,在結果緊縮資料中,各索引是要識別在各第一及第二源緊縮資料中對應的資料元件位置。而且,執行單元儲存會具有至少四遮罩元件的結果遮罩以回應指令,其中,各遮罩元件是要對應多個索引中的不同的一索引。而且,各遮罩元件是要標示用於對應於索引的資料元件位置是否在第一源緊縮資料或是第二源緊縮資料中。
實例3包含實例2的處理器,又包含遮罩暫存器以儲
存結果遮罩。指令包含於指令集中,指令集包含第二指令,第二指令能夠將結果遮罩標示為預測運算元以預測緊縮資料作業。
實例4包含實例1的處理器,其中,執行單元是要儲存結果緊縮資料,在結果緊縮資料中,各索引是要識別第一及第二源緊縮資料中之一的對應的單一資料元件。
實例5包含實例1至4中任一的處理器,其中,執行單元會將第二結果緊縮資料儲存在會由指令標示之第二目的地儲存器中,以回應指令。第二結果緊縮資料是要包含來自第一及第二源緊縮資料的資料元件,所述資料元件對應於儲存在反應排序次序的第二結果緊縮資料的位置中之索引。
實例6包含實例1至4中任一的處理器,其中,解碼單元將指令解碼,所述指令是要標示具有被假定依排序次序用於指令之至少四資料元件的第一源緊縮資料,以及,所述指令是要標示具有被假定依排序次序用於指令之至少四資料元件的第二源緊縮資料。
實例7包含實例1至4中任一的處理器,其中,解碼單元將指令解碼,所述指令是要標示具有未被假定依排序次序用於指令之至少四資料元件的第一源緊縮資料,以及,所述指令是要標示具有未被假定依排序次序用於指令之至少四資料元件的第二源緊縮資料。
實例8包含實例1至4中任一的處理器,其中,執行單元是要儲存結果緊縮資料,其中,索引是要儲存於要代
表對應的資料元件之排序次序的位置中,所述對應的資料元件是要包含第一及第二源緊縮資料的所有資料元件之最小的一半。
實例9包含實例1至4中任一的處理器,其中,執行單元是要儲存結果緊縮資料,其中,索引是要儲存於要代表對應的資料元件之排序次序的位置中,所述對應的資料元件是要包含第一及第二源緊縮資料的所有資料元件之最大的一半。
實例10包含實例1至4中任一的處理器,其中,解碼單元是要將指令解碼,所述指令是要標示第一源緊縮資料,第一源緊縮資料是要包含八資料元件,八資料元件中的各資料元件具有32位元及64位元中之一。
實例11是包含接收指令之處理器中的方法。指令標示包含第一組至少四資料元件的第一源緊縮資料、標示包含第二組至少四資料元件的第二源緊縮資料、及標示目的地儲存位置。將結果緊縮資料儲存在目的地儲存位置中以回應指令。結果緊縮資料是包含至少四索引。索引識別第一及第二源緊縮資料中對應的資料元件位置。索引儲存在結果緊縮資料中的位置中,所述位置代表第一及第二源緊縮資料中對應的資料元件之排序次序。
實例12包含實例11的方法,其中,接收包含接收標示具有依排序次的至少四資料元件的第一源緊縮資料的指令。
實例13包含實例11至12中任一的方法,其中,儲
存結果緊縮資料包含儲存各索引是識別在第一及第二源緊縮資料中之一中的對應的單一資料元件之結果緊縮資料。
實例14是處理器,包含眾多緊縮資料暫存器、及解碼單元以解碼指令。指令是標示要包含未依排序次序之至少四資料元件的源緊縮資料、以及標示目的地儲存位置。執行單元與緊縮資料暫存器及解碼單元耦合。執行單元會將結果緊縮資料儲存在目的地儲存位置中以回應指令。結果緊縮資料是要包含至少四索引。索引是要識別源緊縮資料中對應的資料元件。索引是要儲存在結果緊縮資料中的位置中,所述位置是代表源緊縮資料中對應的資料元件之排序次序。
實例15包含實例14的處理器,其中,執行單元是要儲存第二結果緊縮資料於要由指令標示之第二目的地儲存位置中,以回應指令,第二結果緊縮資料是包含儲存在反應排序次序的第二結果緊縮資料之位置中的對應的資料元件。
實例16包含實例14至15中任一的處理器,其中,結果緊縮資料是要包含對應於源緊縮資料中所有的資料元件之索引。
實例17包含實例14至15的處理器,其中,解碼單元是要將指令解碼,所述指令是要標示源緊縮資料,所述源緊縮資料是要包含均具有32位元及64位元中之一的至少八資料元件。
實例18是包含接收指令之處理器中的方法,指令標
示包含未依排序次序之至少四資料元件的源緊縮資料、以及標示目的地儲存位置。將結果緊縮資料儲存在目的地儲存位置中以回應指令。結果緊縮資料包含至少四索引。索引識別源緊縮資料中對應的資料元件。索引儲存在結果緊縮資料中的位置中,所述位置代表源緊縮資料中對應的資料元件之排序次序。
實例19包含實例18的方法,又包含儲存第二結果緊縮資料於指令標示的第二目的地儲存位置中,第二結果緊縮資料包含儲存在反應排序次序的位置中之對應的資料元件。
實例20包含實例18至19中任一的方法,其中,接收包含接收標示具有至少八資料元件的源緊縮資料的指令,所述至少八資料元件均具有32位元及64位元中之一,以及,其中,儲存包含儲存包括對應於源緊縮資料中所有的資料元件之的索引之結果緊縮資料。
實例21是處理指令的系統,包含互連、及與互連耦合的處理器。處理器會接收指令,指令標示要包含第一組至少四資料元件的第一源緊縮資料、標示要包含第二組至少四資料元件的第二源緊縮資料、以及標示目的地暫存器。處理器將結果緊縮資料儲存在目的地暫存器中以回應指令。結果緊縮資料是包含至少四索引。索引是要識別在第一及第二源緊縮資料中對應的資料元件位置。索引儲存在結果緊縮資料中的位置中,所述位置是代表第一及第二源緊縮資料中對應的資料元件之排序次序。動態隨機存取
記憶體(DRAM)與互連耦合。DRAM選擇地儲存演繹法以使用結果緊縮資料的索引來排序資料。
實例22包含實例21的系統,其中,處理器是要儲存結果緊縮資料,在結果緊縮資料中,各索引是識別在第一及第二源緊縮資料中之一中的對應的單一資料元件。
實例23是製品,包含非暫時的機器可讀取的儲存媒體,非暫時的機器可讀取的儲存媒體儲存指令。指令是標示要包含第一組至少四資料元件的第一源緊縮資料、是標示要包含第二組至少四資料元件的第二源緊縮資料、及是標示目的地儲存位置。假使由機器執行時,指令會使機器執行包含將結果緊縮資料儲存在目的地儲存位置中以回應指令之作業。結果緊縮資料包含至少四索引。索引識別第一及第二源緊縮資料中對應的資料元件位置。索引儲存在結果緊縮資料中的位置中,所述位置是代表第一及第二源緊縮資料中對應的資料元件之排序次序。
實例24包含實例23的製品,其中,指令標示具有依排序次序的至少四資料元件的第一源緊縮資料。
實例25是處理器或其它裝置,包含用於執行如實例11-13中任一實例的方法之機構。
實例26是處理器或其它裝置,包含用於執行如實例11-13中任一實例的方法之模組、單元、邏輯、電路、機構、或其任何組合。
實例27是製品,包含機器可讀取的儲存媒體,機器可讀取的儲存媒體可選擇為非暫時的機器可讀取的儲存媒
體,提供指令,假使及/或當由處理器、電腦系統、或其它機器執行時,所述指令可操作以促使機器執行如實例11-13中任一實例的方法。
實例28是電腦系統或其它電子裝置,包含互連;與互連耦合的處理器;及與互連耦合的至少一組件,所述至少一元件係選自動態隨機存取記憶體(DRAM)、圖形晶片、無線通訊晶片、相位改變記憶體、及攝影機,電腦系統或其它電子裝置可操作以執行如實例11-13中任一實例的方法。
實例29是處理器或其它裝置,包含用於執行如實例18-20中任一實例的方法之機構。
實例30是處理器或其它裝置,包含模組、單元、邏輯、電路、機構、或其任何組合以執行如實例18-20中任一實例的方法。
實例31是製品,包含機器可讀取的儲存媒體,機器可讀取的儲存媒體可選擇為非暫時的機器可讀取的儲存媒體,提供指令,假使及/或當由處理器、電腦系統、或其它機器執行時,所述指令可操作以促使機器執行如實例18-20中任一實例的方法。
實例32是電腦系統或其它電子裝置,包含互連;與互連耦合的處理器;及與互連耦合的至少一組件,所述至少一元件係選自動態隨機存取記憶體(DRAM)、圖形晶片、無線通訊晶片、相位改變記憶體、及攝影機,電腦系統或其它電子裝置可操作以執行如實例18-20中任一實例
的方法。
實例33是處理器或其它裝置,可操作以執行實質上如此處所述的一或更多作業或任何方法。
實例34是處理器或其它裝置,包含用於執行實質上如此處所述的一或更多作業或任何方法。
實例35是處理器或其它裝置,用以執行實質上如此處所述的任何指令。
實例36是處理器或其它裝置,包含用於執行實質上如此處所述的任何指令。
實例37包含方法,所述方法包含將第一指令轉換成第二指令集中的一或更多指令,第一指令可為實質上如此處所述的任何指令,及屬於第一指令集。方法也包含在處理器上解碼及執行第二指令集的一或更多指令。執行包含儲存結果於目的地中。結果包含實質上如此處揭示之用於第一指令的任何結果。
實例38包含處理器或其它裝置,包含解碼單元,解碼單元可操作以將第一指令集的指令解碼。解碼單元是要接收仿真第一指令之一或更多指令,第一指令可為實質上如此處揭示的任何指令,以及要屬於第二指令集。處理器或其它裝置也包含與解碼單元耦合的一或更多執行單元以執行第一指令集的一或更多指令。一或更多執行單元可操作以將結果儲存在目的地,以回應第一指令集的一或更多指令。結果包含實質上如此處揭示之用於第一指令的任何結果。
實例39包含電腦系統或其它電子裝置,電腦系統或其它電子裝置包含具有解碼單元及具有一或更多執行單元的處理器,解碼單元可操作以將第一指令集的指令解碼。電腦系統也包含耦合至處理器的儲存裝置。儲存裝置是要儲存第一指令,第一指令可為實質上如此處揭示的任何指令,以及要屬於第二指令集。儲存裝置也是要儲存指令以將第一指令轉換成第一指令集的一或更多指令。第一指令集的一或更多指令當由處理器執行時,可操作以促使處理器將結果儲存在目的地中。結果包含實質上如此處揭示用於第一指令的任何結果。
100‧‧‧處理器
104‧‧‧解碼單元
106‧‧‧執行單元
108‧‧‧緊縮資料暫存器
Claims (25)
- 一種處理器,包括:複數緊縮資料暫存器;解碼單元,用以將指令解碼,該指令標示用以包含第一組至少四資料元件的第一源緊縮資料、標示用以包含第二組至少四資料元件的第二源緊縮資料、及標示目的地儲存位置;執行單元,與該緊縮資料暫存器及該解碼單元耦合,該執行單元將結果緊縮資料儲存在該目的地儲存位置中以回應該指令,該結果緊縮資料包含至少四索引,該多個索引用以識別該第一及該第二源緊縮資料中對應的資料元件位置,以及該多個索引用以儲存在該結果緊縮資料中的位置中,該位置是代表該第一及第二源緊縮資料中對應的資料元件之排序次序。
- 如申請專利範圍第1項的處理器,其中,該執行單元用以儲存該結果緊縮資料,在該結果緊縮資料中,該多個索引中的各索引用以識別在各該第一及該第二源緊縮資料中對應的資料元件位置,以及,其中,該執行單元儲存會具有至少四遮罩元件的結果遮罩以回應該指令,其中,各遮罩元件用以對應該多個索引中的不同的一索引,以及,其中,各遮罩元件用以標示用於該對應的索引的該資料元件位置是否在該第一源緊縮資料或是該第二源緊縮資料中。
- 如申請專利範圍第2項的處理器,又包括遮罩暫存器以儲存該結果遮罩,以及,其中,該指令包含於指令集中,該指令集包含第二指令,該第二指令能夠將該結果遮罩標示為預測運算元以預測緊縮資料作業。
- 如申請專利範圍第1項的處理器,其中,該執行單元用以儲存該結果緊縮資料,在該結果緊縮資料中,該多個索引中的各索引用以識別該第一及該第二源緊縮資料中之一的該對應的單一資料元件。
- 如申請專利範圍第1至4項中任一項的處理器,其中,該執行單元會將第二結果緊縮資料儲存在會由該指令標示之第二目的地儲存器中,以回應該指令,該第二結果緊縮資料包含來自該第一及該第二源緊縮資料的資料元件,來自該第一及該第二源緊縮資料的該資料元件對應於儲存在反應該排序次序的該第二結果緊縮資料的位置中之該索引。
- 如申請專利範圍第1至4項中任一項的處理器,其中,該解碼單元用以將該指令解碼,該指令用以標示具有被假定依排序次序用於該指令之至少四資料元件的該第一源緊縮資料、以及用以標示具有被假定依排序次序用於指令之該至少四資料元件的該第二源緊縮資料。
- 如申請專利範圍第1至4項中任一項的處理器,其中,該解碼單元用以將該指令解碼,該指令用以標示具有未被假定依排序次序用於該指令之至少四資料元件的該第一源緊縮資料、以及該指令用以標示具有未被假定依排 序次序用於指令之至少四資料元件的該第二源緊縮資料。
- 如申請專利範圍第1至4項中任一項的處理器,其中,該執行單元用以儲存該結果緊縮資料,在該結果緊縮資料中,該多個索引用以儲存於要代表該對應的資料元件之該排序次序的位置中,該對應的資料元件用以包含該第一及該第二源緊縮資料的所有資料元件之最小的一半。
- 如申請專利範圍第1至4項中任一項的處理器,其中,該執行單元用以儲存該結果緊縮資料,在該結果緊縮資料中,該多個索引用以儲存於要代表該對應的資料元件之排序次序的該位置中,該對應的資料元件是要包含該第一及該第二源緊縮資料的所有資料元件之最大的一半。
- 如申請專利範圍第1至4項中任一項的處理器,其中,該解碼單元用以將該指令解碼,該指令用以標示該第一源緊縮資料,該第一源緊縮資料用以包含至少八資料元件,該至少八資料元件中的各資料元件具有32位元及64位元中之一。
- 一種處理器中的方法,包括:接收指令,該指令標示包含第一組至少四資料元件的第一源緊縮資料、標示包含第二組至少四資料元件的第二源緊縮資料、及標示目的地儲存位置;以及將結果緊縮資料儲存在該目的地儲存位置中以回應該指令,該結果緊縮資料包含至少四索引,該多個索引識別該第一及該第二源緊縮資料中對應的資料元件位置,以及,該多個索引儲存在代表該第一及該第二源緊縮資料中 對應的資料元件之排序次序的該結果緊縮資料中的位置中。
- 如申請專利範圍第11項的方法,其中,該接收包括接收標示具有依排序次的該至少四資料元件的該第一源緊縮資料的該指令。
- 一種處理器,包括:複數緊縮資料暫存器;解碼單元,用以將指令解碼,該指令標示要包含未依排序次序之至少四資料元件的源緊縮資料、以及標示目的地儲存位置;執行單元,與該緊縮資料暫存器及該解碼單元耦合,該執行單元會將結果緊縮資料儲存在該目的地儲存位置中以回應該指令,該結果緊縮資料包含至少四索引,該多個索引識別該源緊縮資料中對應的資料元件,以及,該多個索引是要儲存在代表該源緊縮資料中對應的資料元件之排序次序的結果緊縮資料中的位置中。
- 如申請專利範圍第13項之處理器,其中,該執行單元用以儲存第二結果緊縮資料於要由該指令標示之第二目的地儲存位置中,以回應該指令,該第二結果緊縮資料包含儲存在反應該排序次序的該第二結果緊縮資料之位置中的對應的資料元件。
- 如申請專利範圍第13至14項中任一項之處理器,其中,該結果緊縮資料用以包含對應於該源緊縮資料中所有的資料元件之索引。
- 如申請專利範圍第13至14項中任一項之處理器,其中,該解碼單元用以將該指令解碼,該指令用以標示源緊縮資料,該源緊縮資料用以包含均具有32位元及64位元中之一的至少八資料元件。
- 一種處理器中的方法,包括:接收指令,該指令標示包含未依排序次序之至少四資料元件的源緊縮資料、以及標示目的地儲存位置;以及將結果緊縮資料儲存在該目的地儲存位置中以回應該指令,該結果緊縮資料包含至少四索引,該多個索引識別該源緊縮資料中對應的資料元件,以及,該多個索引儲存在代表該源緊縮資料中對應的資料元件之該排序次序的該結果緊縮資料中的位置中。
- 如申請專利範圍第17項之方法,又包括儲存第二結果緊縮資料於該指令標示的第二目的地儲存位置中,該第二結果緊縮資料包含儲存在反應該排序次序的位置中之對應的資料元件。
- 一種處理指令的系統,包括:互連;與該互連耦合的處理器,該處理器用以接收指令,該指令標示用以包含第一組至少四資料元件的第一源緊縮資料、標示用以包含第二組至少四資料元件的第二源緊縮資料、以及標示目的地暫存器,該處理器將結果緊縮資料儲存在該目的地暫存器中以回應該指令,該結果緊縮資料用以包含至少四索引,該多個索引識別在該第一及該第二源 緊縮資料中對應的資料元件位置,以及,該索引是儲存在代表該第一及該第二源緊縮資料中對應的資料元件之排序次序的該結果緊縮資料中的位置中;以及動態隨機存取記憶體(DRAM),與該互連耦合,該DRAM儲存演繹法以使用該結果緊縮資料的索引來排序資料。
- 如申請專利範圍第19項之方法,其中,該處理器用以儲存該結果緊縮資料,在該結果緊縮資料中,各索引用以識別在該第一及該第二源緊縮資料中之一中對應的單一資料元件。
- 一種製品,包括非暫時的機器可讀取的儲存媒體,該非暫時的機器可讀取的儲存媒體儲存指令,該指令用以標示要包含第一組至少四資料元件的第一源緊縮資料、用以標示要包含第二組至少四資料元件的第二源緊縮資料、以及用以標示目的地儲存位置,以及,假使該指令由機器執行時,該指令使該機器執行包括下述的作業:將結果緊縮資料儲存在該目的地儲存位置中以回應該指令,該結果緊縮資料包含至少四索引,該多個索引識別該第一及該第二源緊縮資料中對應的資料元件位置,以及,該多個索引儲存在代表該第一及該第二源緊縮資料中對應的資料元件之排序次序的該結果緊縮資料中的位置中。
- 如申請專利範圍第21項之製品,該指令標示具有依排序次序的至少四資料元件的該第一源緊縮資料。
- 一種處理器,包括執行單元,用於執行如申請專利範圍第11-12項中任一項的方法。
- 一種製品,包括非暫時的機器可讀取的儲存媒體,該非暫時的機器可讀取的儲存媒體提供指令,假使由機器執行時,該指令可操作以促使該機器執行如申請專利範圍第11-12項中任一項的方法。
- 一種處理器,包括執行單元,用於執行如申請專利範圍第17-18項中任一項的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/229,811 US9766888B2 (en) | 2014-03-28 | 2014-03-28 | Processor instruction to store indexes of source data elements in positions representing a sorted order of the source data elements |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201602904A true TW201602904A (zh) | 2016-01-16 |
TWI587215B TWI587215B (zh) | 2017-06-11 |
Family
ID=52630788
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104105067A TWI587215B (zh) | 2014-03-28 | 2015-02-13 | 排序加速度處理器,方法,系統,及指令 |
Country Status (7)
Country | Link |
---|---|
US (2) | US9766888B2 (zh) |
JP (2) | JP6163171B2 (zh) |
KR (1) | KR101787819B1 (zh) |
CN (2) | CN104951401B (zh) |
DE (1) | DE102015002215A1 (zh) |
GB (1) | GB2524617B (zh) |
TW (1) | TWI587215B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI746530B (zh) * | 2016-03-23 | 2021-11-21 | 英商Arm股份有限公司 | 向量預測指令 |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11461096B2 (en) * | 2019-05-24 | 2022-10-04 | Texas Instruments Incorporated | Method and apparatus for vector sorting using vector permutation logic |
US10198264B2 (en) * | 2015-12-15 | 2019-02-05 | Intel Corporation | Sorting data and merging sorted data in an instruction set architecture |
US10007519B2 (en) * | 2015-12-22 | 2018-06-26 | Intel IP Corporation | Instructions and logic for vector bit field compression and expansion |
US9996361B2 (en) * | 2015-12-23 | 2018-06-12 | Intel Corporation | Byte and nibble sort instructions that produce sorted destination register and destination index mapping |
US11204764B2 (en) * | 2016-03-31 | 2021-12-21 | Intel Corporation | Processors, methods, systems, and instructions to Partition a source packed data into lanes |
CN109716290B (zh) | 2016-10-20 | 2023-12-19 | 英特尔公司 | 用于经融合的乘加的系统、装置和方法 |
EP3757754B1 (en) * | 2016-11-14 | 2023-01-04 | Google LLC | Sorting for data-parallel computing devices |
US10515302B2 (en) * | 2016-12-08 | 2019-12-24 | Via Alliance Semiconductor Co., Ltd. | Neural network unit with mixed data and weight size computation capability |
US11176084B2 (en) * | 2017-11-09 | 2021-11-16 | International Business Machines Corporation | SIMD instruction sorting pre-sorted source register's data elements into a first ascending order destination register and a second descending destination register |
CN111160541B (zh) * | 2017-12-14 | 2023-05-19 | 中科寒武纪科技股份有限公司 | 集成电路芯片装置及相关产品 |
WO2019114842A1 (zh) | 2017-12-14 | 2019-06-20 | 北京中科寒武纪科技有限公司 | 一种集成电路芯片装置 |
US10534881B2 (en) * | 2018-04-10 | 2020-01-14 | Advanced Micro Devices, Inc. | Method of debugging a processor |
US20200050452A1 (en) * | 2018-08-11 | 2020-02-13 | Intel Corporation | Systems, apparatuses, and methods for generating an index by sort order and reordering elements based on sort order |
US10691412B2 (en) | 2018-08-31 | 2020-06-23 | International Business Machines Corporation | Parallel sort accelerator sharing first level processor cache |
US10579332B1 (en) | 2018-08-31 | 2020-03-03 | International Business Machines Corporation | Hardware sort accelerator sharing first level processor cache |
US10725738B2 (en) | 2018-08-31 | 2020-07-28 | International Business Machines Corporation | Adaptive sort accelerator sharing first level processor cache |
US10922080B2 (en) * | 2018-09-29 | 2021-02-16 | Intel Corporation | Systems and methods for performing vector max/min instructions that also generate index values |
US11163564B1 (en) * | 2018-10-08 | 2021-11-02 | Verisilicon Microelectronics (Shanghai) Co., Ltd. | Vector compare and store instruction that stores index values to memory |
US10831502B2 (en) | 2018-11-06 | 2020-11-10 | International Business Machines Corporation | Migration of partially completed instructions |
US10831478B2 (en) * | 2018-11-06 | 2020-11-10 | International Business Machines Corporation | Sort and merge instruction for a general-purpose processor |
US10831503B2 (en) | 2018-11-06 | 2020-11-10 | International Business Machines Corporation | Saving and restoring machine state between multiple executions of an instruction |
CN111240682A (zh) * | 2018-11-28 | 2020-06-05 | 深圳市中兴微电子技术有限公司 | 一种指令数据的处理方法及装置、设备、存储介质 |
US11593106B1 (en) | 2021-09-24 | 2023-02-28 | Apple Inc. | Circuits and methods for vector sorting in a microprocessor |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0731588B2 (ja) | 1984-12-12 | 1995-04-10 | 株式会社日立製作所 | ベクトル処理装置 |
US5907842A (en) | 1995-12-20 | 1999-05-25 | Intel Corporation | Method of sorting numbers to obtain maxima/minima values with ordering |
US6036350A (en) | 1995-12-20 | 2000-03-14 | Intel Corporation | Method of sorting signed numbers and solving absolute differences using packed instructions |
US6041404A (en) | 1998-03-31 | 2000-03-21 | Intel Corporation | Dual function system and method for shuffling packed data elements |
US6636167B1 (en) | 2000-10-31 | 2003-10-21 | Intel Corporation | Method of generating Huffman code length information |
US7155601B2 (en) | 2001-02-14 | 2006-12-26 | Intel Corporation | Multi-element operand sub-portion shuffle instruction execution |
US7725678B2 (en) | 2005-02-17 | 2010-05-25 | Texas Instruments Incorporated | Method and apparatus for producing an index vector for use in performing a vector permute operation |
US7933405B2 (en) * | 2005-04-08 | 2011-04-26 | Icera Inc. | Data access and permute unit |
US7536532B2 (en) * | 2006-09-27 | 2009-05-19 | International Business Machines Corporation | Merge operations of data arrays based on SIMD instructions |
US20080104374A1 (en) | 2006-10-31 | 2008-05-01 | Motorola, Inc. | Hardware sorter |
US7908283B2 (en) | 2007-08-29 | 2011-03-15 | Red Hat, Inc. | Finding superlatives in an unordered list |
US7962718B2 (en) * | 2007-10-12 | 2011-06-14 | Freescale Semiconductor, Inc. | Methods for performing extended table lookups using SIMD vector permutation instructions that support out-of-range index values |
US20130212354A1 (en) * | 2009-09-20 | 2013-08-15 | Tibet MIMAR | Method for efficient data array sorting in a programmable processor |
DE102009047389A1 (de) | 2009-12-02 | 2011-06-09 | Robert Bosch Gmbh | Verbindung zwischen einem ersten Bauteil und einem zweiten Bauteil |
KR101662769B1 (ko) | 2010-03-09 | 2016-10-05 | 삼성전자주식회사 | 고속 정렬 장치 및 방법 |
US8838935B2 (en) | 2010-09-24 | 2014-09-16 | Intel Corporation | Apparatus, method, and system for implementing micro page tables |
US8812516B2 (en) | 2011-10-18 | 2014-08-19 | Qualcomm Incorporated | Determining top N or bottom N data values and positions |
WO2013095564A1 (en) | 2011-12-22 | 2013-06-27 | Intel Corporation | Processors, methods, systems, and instructions to generate sequences of integers in numerical order that differ by a constant stride |
CN107220029B (zh) * | 2011-12-23 | 2020-10-27 | 英特尔公司 | 掩码置换指令的装置和方法 |
-
2014
- 2014-03-28 US US14/229,811 patent/US9766888B2/en active Active
-
2015
- 2015-01-15 JP JP2015005737A patent/JP6163171B2/ja not_active Expired - Fee Related
- 2015-01-19 GB GB1500857.6A patent/GB2524617B/en active Active
- 2015-02-13 TW TW104105067A patent/TWI587215B/zh active
- 2015-02-20 DE DE102015002215.6A patent/DE102015002215A1/de active Pending
- 2015-02-27 KR KR1020150028036A patent/KR101787819B1/ko active IP Right Grant
- 2015-02-28 CN CN201510090544.6A patent/CN104951401B/zh active Active
- 2015-02-28 CN CN201810724407.7A patent/CN109240744A/zh not_active Withdrawn
-
2017
- 2017-06-15 JP JP2017117859A patent/JP2017157244A/ja active Pending
- 2017-09-18 US US15/707,633 patent/US20180004520A1/en not_active Abandoned
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI746530B (zh) * | 2016-03-23 | 2021-11-21 | 英商Arm股份有限公司 | 向量預測指令 |
Also Published As
Publication number | Publication date |
---|---|
GB2524617A (en) | 2015-09-30 |
KR20150112781A (ko) | 2015-10-07 |
CN104951401A (zh) | 2015-09-30 |
KR101787819B1 (ko) | 2017-10-18 |
US20180004520A1 (en) | 2018-01-04 |
GB201500857D0 (en) | 2015-03-04 |
CN109240744A (zh) | 2019-01-18 |
CN104951401B (zh) | 2018-08-03 |
US9766888B2 (en) | 2017-09-19 |
JP6163171B2 (ja) | 2017-07-12 |
TWI587215B (zh) | 2017-06-11 |
DE102015002215A1 (de) | 2015-10-01 |
JP2017157244A (ja) | 2017-09-07 |
US20150277912A1 (en) | 2015-10-01 |
JP2015191659A (ja) | 2015-11-02 |
GB2524617B (en) | 2017-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI587215B (zh) | 排序加速度處理器,方法,系統,及指令 | |
TWI502499B (zh) | 執行將寫入罩暫存器轉換成向量暫存器中的索引值列表的系統、裝置及方法 | |
TWI567556B (zh) | 無區域性提示向量記憶體存取之處理器、方法、系統與指令 | |
KR102449616B1 (ko) | 벡터 요소 세트에 대해 축소 연산을 수행하기 위한 방법 및 장치 | |
TWI751164B (zh) | 用於向量的元素排序的設備、方法及系統 | |
TWI617978B (zh) | 用於向量索引載入和儲存之方法和設備 | |
CN104011647B (zh) | 浮点舍入处理器、方法、系统和指令 | |
TWI517042B (zh) | 用以將萬國碼字元之可變長度編碼點轉碼之處理器、方法、系統及製品 | |
TWI578230B (zh) | 用於執行複數個乘法運算的方法和設備 | |
CN104049954B (zh) | 多数据元素与多数据元素比较处理器、方法、系统和指令 | |
TWI715618B (zh) | 資料元件比較處理器、方法、系統及指令 | |
CN106030514B (zh) | 用于执行采用传播的被屏蔽源元素存储指令的处理器及其方法 | |
TWI455024B (zh) | 唯一封裝資料元件識別處理器,方法,系統,及指令 | |
TWI486872B (zh) | 向量緊縮壓縮及重複之實施系統、設備和方法 | |
TW202326409A (zh) | 用於融合乘加運算的系統、裝置及方法 | |
TWI760341B (zh) | 用於跨步載入的系統、設備及方法 | |
TWI747881B (zh) | 將來源緊縮資料劃分為巷道的處理器、方法、系統及指令 | |
TW201738733A (zh) | 執行指令以排列遮罩的系統及方法 | |
CN107193537B (zh) | 经改进的插入指令的装置和方法 | |
TW201732568A (zh) | 用於巷道為主的跨類收集的系統、設備與方法 | |
TWI818894B (zh) | 毗連資料元素成對調換處理器、方法、系統、及指令 | |
TWI539374B (zh) | 映射源運算元至不同範圍的系統及其處理器 | |
TW201732574A (zh) | 用於改善向量通量的系統、方法及設備 | |
TW201732573A (zh) | 用於跨步載入(stride load)的系統、設備及方法 | |
TW201810034A (zh) | 用於累和的系統、設備及方法 |