TWI598747B - 資料元件選擇及整合處理器、方法、系統及指令 - Google Patents
資料元件選擇及整合處理器、方法、系統及指令 Download PDFInfo
- Publication number
- TWI598747B TWI598747B TW104126393A TW104126393A TWI598747B TW I598747 B TWI598747 B TW I598747B TW 104126393 A TW104126393 A TW 104126393A TW 104126393 A TW104126393 A TW 104126393A TW I598747 B TWI598747 B TW I598747B
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- source
- operand
- instruction
- mask
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 53
- 238000007596 consolidation process Methods 0.000 title description 2
- 230000015654 memory Effects 0.000 claims description 100
- 230000010354 integration Effects 0.000 claims description 91
- 238000003860 storage Methods 0.000 claims description 65
- 238000012545 processing Methods 0.000 claims description 33
- 235000009854 Cucurbita moschata Nutrition 0.000 claims description 31
- 240000001980 Cucurbita pepo Species 0.000 claims description 31
- 235000009852 Cucurbita pepo Nutrition 0.000 claims description 31
- 235000020354 squash Nutrition 0.000 claims description 31
- 230000004044 response Effects 0.000 claims description 21
- 239000000872 buffer Substances 0.000 claims description 19
- 238000007906 compression Methods 0.000 claims description 11
- 230000006835 compression Effects 0.000 claims description 11
- 239000000463 material Substances 0.000 claims description 11
- 238000005056 compaction Methods 0.000 claims description 10
- 238000004364 calculation method Methods 0.000 claims description 7
- 238000004519 manufacturing process Methods 0.000 claims description 7
- 230000008602 contraction Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 44
- 238000007667 floating Methods 0.000 description 14
- 230000000873 masking effect Effects 0.000 description 11
- 238000004891 communication Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 9
- 235000012431 wafers Nutrition 0.000 description 9
- 238000013519 translation Methods 0.000 description 8
- 238000006243 chemical reaction Methods 0.000 description 6
- 230000008878 coupling Effects 0.000 description 6
- 238000010168 coupling process Methods 0.000 description 6
- 238000005859 coupling reaction Methods 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 239000003795 chemical substances by application Substances 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 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 4
- 238000013500 data storage Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000006855 networking Effects 0.000 description 3
- 238000004088 simulation Methods 0.000 description 3
- 238000006467 substitution reaction Methods 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000011065 in-situ storage Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 239000011232 storage material Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000012795 verification Methods 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/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
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)
Description
此處所述的實施例大致上關於處理器。特別地,此處所述的實施例大致上關於在處理器中處理緊縮資料元件。
很多處理器具有單一指令多資料(SIMD)架構。在SIMD架構中,多資料元件緊縮於一暫存器或記憶體位置內作為緊縮資料或向量資料。在緊縮資料中,暫存器或其它儲存位置的位元可以邏輯上分割成多個資料元件的序列。舉例而言,128位元寬的緊縮資料暫存器可能具有二個64位元的資料元件、四個32位元的資料元件、八個16位元的資料元件、或是十六個8位元的資料元件。各資料元件代表彼此分開地或獨立地操作之分別的個別件資料(例如像素顏色、複數的分量等等)。
在SIMD架構中,緊縮資料指令、向量指令、或SIMD指令可以對緊縮資料運算元的多個資料元件或是二個緊縮資料運算元中的多對資料元件同時地及/或平行地
運算。處理器具有負責緊縮資料指令的平行執行硬體,以同時地或平行地執行多個運算。
在技術領域中已知各種不同型式的緊縮資料指令。一類緊縮資料指令是混洗(shuffle)指令。透過將相應的混洗控制位元用於被混洗的各資料元件,混洗指令可被用來將源緊縮資料運算元的資料元件混洗至結果緊縮資料運算元中的不同位置。但是,將這些混洗指令用於某些應用的一缺點是被混洗的各資料元件需要多個混洗控制位元。這傾向於增加此混洗控制所需的位元數目增加超過某些應用的極限(例如,超過可適配指令之立即數的位元數目)。此外,會耗費額外的時間產生或創造混洗控制位元。
100‧‧‧處理器
104‧‧‧解碼單元
106‧‧‧執行單元
108‧‧‧緊縮資料暫存器
600‧‧‧處理器
606‧‧‧解碼單元
608‧‧‧執行單元
610‧‧‧緊縮資料暫存器
662‧‧‧協定解碼器
1190‧‧‧核心
1300‧‧‧處理器
1400‧‧‧系統
1500‧‧‧系統
1600‧‧‧系統
1700‧‧‧系統晶片
參考用以顯示實施例之下述說明及附圖,可最佳地瞭解本發明。在圖式中:圖1是可操作以執行資料元件選擇及整合指令的實施例之處理器的實施例之方塊圖。
圖2是執行資料元件選擇及整合指令的實施例之處理器中的方法的實施例之方塊流程圖。
圖3是資料元件選取及整合運算的實施例之方塊圖。
圖4是具有位元遮罩的位元組選取及整合運算的特定例示性實施例之方塊圖。
圖5是具有位元組遮罩的位元組選取及整合運算的特定例例示性實施例之方塊圖。
圖6是方塊圖,顯示在某些實施例中如何使用資料元件選擇及整合指令來處理網路封包的資料元件。
圖7A-7C是資料元件選擇及整合指令的數個實施例之方塊圖。
圖8是適合的緊縮資料暫存器組的例示性實施例之方塊圖。
圖9是適合的緊縮資料運算遮罩暫存器組的例示性實施例之方塊圖。
圖10是緊縮資料運算遮罩暫存器的例示性實施例之方塊圖以及顯示作為緊縮資料運算遮罩及/或用於遮罩之位元數目取決於緊縮資料寬度和資料元件寬度。
圖11A是方塊圖,顯示根據有序管線的實施例及暫存器重命名亂序發佈/執行管線的實施例。
圖11B是包含耦合至執行引擎單元的前端單元之處理器核心的實施例的方塊圖,引擎單元及前端單元都耦合至記憶體單元。
圖12A是單處理器核心連同其與一晶粒上(on-die)互連網路的連接及其第二階(L2)快取的本地子集的實施例之方塊圖。
圖12B是圖12A的處理器核心的部份之展開視圖的實施例的方塊圖。
圖13是處理器的實施例之方塊圖,該處理器可具有一個以上的核心、可具有整合記憶體控制器、及可具有整合圖形。
圖14是電腦架構的第一實施例的方塊圖。
圖15是電腦架構的第二實施例的方塊圖。
圖16是電腦架構的第三實施例的方塊圖。
圖17是系統晶片架構的實施例的方塊圖。
圖18是根據本發明的實施例之使用軟體指令轉換器以將源指令集中的二進位指令轉換成目標指令集中的二進位指令之方塊圖。
於此揭示資料元件選擇及整合(consolidation)指令、執行指令的處理器、當處理或執行指令時由處理器執行的方法、及含有一或更多處理器以處理或執行指令的系統。在下述說明中,揭示多數特定細節(例如,特定指令操作、資料格式、處理器配置、微架構細節、操作序列等等)。但是,沒有這些特定細節,仍可實施實施例。在其它情形中,習知的電路、結構及技術未詳細顯示以免模糊本說明的瞭解。
圖1是可操作以執行資料元件選擇及整合指令102的實施例之處理器100的實施例的方塊圖。在某些實施例中,處理器可為一般用途處理器(例如,通常用於桌上型、膝上型、或其它型式的電腦中的一般用途處理器或中央處理單元(CPU))。在一態樣中,處理器可代表整合網路及/或封包有關的處理之系統晶片的一般用途核心。在一態樣中,資料元件選擇及整合指令允許一般用途處理器或
核心更有效率地執行網路及/或封包處理。或者,處理器可為特別用途處理器。適合的特定用途處理器的實例包含但不限於網路處理器、通訊處理器、封包處理器、嵌入式封包處理引擎、交換晶片、資料平面處理器、密碼處理器、圖形處理器、共處理器、嵌入式處理器、數位訊號處理器(DPS)、及控制器(例如微控制器)。處理器可具有各種複雜指令集計算(CISC)架構、精簡指令集計算(RISC)架構、超長指令字(VLIW)架構、混合架構、其它型式的架構、或是具有不同架構的組合(例如不同的核心具有不同的架構)中的任一。
在操作期間,處理器100接收資料元件選擇及整合指令102。舉例而言,從互連上的記憶體接收指令。指令代表巨集指令、組合語言指令、機器碼指令、或是處理器的指令集的指令或控制訊號。在某些實施例中,資料元件選擇及整合指令可明確地指明(例如,經由一或更多欄位或位元集)、或以其它方式標示(例如,隱含地標示)、或是以其它方式具有第一源緊縮資料運算元112,其係具有多數資料元件的。在某些實施例中,資料元件選擇及整合指令明確地指明(例如,經由一或更多欄位或位元集)、或以其它方式標示(例如,隱含地標示)、或是以其它方式具有(例如具有作為立即數)第二源運算元104,其係具有對應的多數遮罩元件。在所示的實施例中,第二源運算元104包括指令的立即數,舉例而言,4位元立即數(imm4)、8位元立即數(imm8)、16位元立即數(imm16)、或32位元立即
數(imm32),這些僅為一些實例。立即數可以具有遮罩位元作為遮罩元件。各未被遮蔽的遮罩位元可以具有第一值(例如根據一可能的慣例為二進位1),而各被遮蔽的遮罩位元可以具有第二不同值(例如根據一可能的慣例為二進位0)。在其它實施例中,第二源運算元104可以選擇性地為源緊縮資料運算遮罩116,其可選擇性地儲存在一組緊縮資料運算遮罩暫存器118中。在又其它實施例中,第二源運算元104可以選擇性地儲存於一組一般用途暫存器119中。在仍然其它實施例中,第二源運算元104可以選擇性地為第二源緊縮資料運算元,其選擇性地儲存在一組緊縮資料暫存器110中。指令也可明確地指明或以其它方式標示結果的緊縮資料運算元114要被儲存之目的地儲存位置。舉例而言,指令可以具有源及/或目的地運算元指明欄位以指明用於運算元之暫存器、記憶體位置、或是其它儲存位置。替代地,這些運算元中之一或更多可以選擇性對指令是隱含的(例如,對指令的運算碼是隱含的)。
再參考圖1,處理器包含解碼單元或解碼器106。解碼單元接收及解碼資料元件選擇及整合指令。解碼單元輸出一或更多相對較低階的指令或控制訊號(例如一或更多微指令、微操作、微碼入口點、已解碼指令或是控制訊號等等),相對較低階的指令或控制訊號是反應、代表、及/或導自相對較高階的資料元件選擇及整合指令。在某些實施例中,解碼單元包含用以接收資料元件選擇及整合指令之一或更多輸入結構(例如埠、互連、介面)、耦合之用以
辨識及解碼資料元件選擇及整合指令之指令辨認及解碼邏輯、以及耦合之用以輸出較低階指令或控制訊號的一或更多輸出結構(例如,埠、互連、介面)。使用包含但不限於微碼唯讀記憶體(ROM)、查詢表、硬體實施、可編程邏輯陣列(PLA)、及用以實施此技藝者習知的解碼單元之其它機構等各式各樣的不同機構,來實施解碼單元。
在某些實施例中,取代直接提供給解碼單元的資料元件選擇及整合指令,可以選擇性地使用指令仿真器、翻譯器、變體器、解譯器、或其它指令轉換模組。各種型式的指令轉換模組是此技藝者中熟知的且可以以軟體、硬體、韌體、或其組合來實施。在某些實施例中,指令轉換模組可位於處理器外部,例如,在分開的晶粒上及/或在記憶體中(例如,靜態、動態、或運行時間仿真模組)。舉例而言,指令轉換模組接收第一指令集的資料元件選擇及整合指令以及模擬、翻譯、變體、解譯、或以其它方式轉換資料元件選擇及整合指令成為一或更多對應的或導出的第二不同指令集之中間指令或控制訊號。第二指令集的一或更多中間指令或控制訊號可提供給解碼單元(例如解碼單元106),解碼單元將它們解碼成為可由處理器原有的硬體(例如一或多更執行單元)執行之一或更多較低階指令或控制訊號。
再參考圖1,處理器100也包含一組緊縮資料暫存器110。在某些實施例中,處理器包含一組一般用途暫存器119。在某些實施例中,處理器也包含一組緊縮資料運算
遮罩暫存器118。這些暫存器中的各暫存器代表可操作以儲存資料之晶粒上的儲存位置。舉例而言,各緊縮資料暫存器可儲存緊縮資料、向量資料、或單指令多資料(SIMD)。這些暫存器代表架構上可看見的或是架構暫存器,架構上可看見的或架構上的暫存器是軟體及/或程式人員可看見的以及/或由處理器的指令集的指令所標示的暫存器,以辨識運算元。這些架構暫存器與給定的微架構中其它非架構的暫存器(例如,暫時暫存器、重排序緩衝器、退出暫存器等等)是對比的。這些暫存器可以利用習知的技術而於不同的微架構中以不同的方式實施,但不限於任何特定型式的電路。適當型式的暫存器之實例包含但不限於專用的實體暫存器、使用暫存器重命名的動態分配的實體暫存器、及其組合。
在某些實施例中,第一源緊縮資料運算元112可以選擇性地儲存於緊縮資料暫存器、及目的地儲存位置中,結果緊縮資料運算元114可以選擇性地儲存於相同或不同的緊縮資料暫存器中。替代地,記憶體位置、或其它儲存位置可選擇性地用於這些運算元中之一或更多。在某些實施例中,用於源緊縮資料運算元(例如第一源緊縮資料運算元112)的緊縮資料暫存器可選擇性地再作為結果緊縮資料運算元114之目的地儲存位置。舉例而言,單一源/目的地暫存器可以被明確地或隱含地視為用於源及結果緊縮資料運算元等二運算元。
再參考圖1,執行單元108與解碼單元106及緊縮資
料暫存器110耦合。執行單元接收代表及/或導自資料元件選擇及整合指令之一或更多已解碼或以其它方式轉換的指令或控制訊號。執行單元也接收具有多數遮罩元件的第二源運算元104(例如立即數104)及第一源緊縮資料運算元112。為了回應及/或因資料元件選擇及整合指令的作用(例如,回應從指令解碼之一或更多指令或控制訊號),執行單元可操作或配置成將結果緊縮資料運算元114儲存在指令所標示的目的地儲存位置中。在某些實施例中,結果緊縮資料運算元114包含第一源緊縮資料運算元112的所有資料元件,這些資料元件對應於整合於結果緊縮資料運算元114的一部份中之立即數104或其它第二源運算元104的未被遮罩的遮罩元件。在某些實施例中,結果緊縮資料運算元可以省略對應於未被遮蔽掉的第二源運算元之遮罩元件之第一源緊縮資料運算元的所有資料元件。在某些實施例中,第一源緊縮資料運算元的未被遮蔽的資料元件可以一起整合於結果緊縮資料運算元的最低有效部份中。在其它實施例中,第一源緊縮資料運算元的未被遮蔽的資料元件可以一起整合於結果緊縮資料運算元的最高有效部份中。在某些實施例中,結果緊縮資料運算元可為圖3-5中之任一,但是,本發明的範圍不侷限於此。
在某些實施例中,在結果緊縮資料運算元中未被遮蔽的資料元件之整合對於指令(例如指令的運算碼)可以是隱含的及/或固定的,而取代被明確指明及/或對指令是彈性的。舉例而言,指令可以具有標示或指明未被遮蔽的資料
元件是要被整合於結果緊縮資料運算元中之運算碼。亦即,運算碼及/或指令可以特別專用於未被遮蔽的資料元件在結果緊縮資料運算元中整合。以此專用的及/或固定的及/或隱含的特點用於運算碼及/或指令有助於避免需要產生及使用要與彈性指令(例如完全混洗或是排列指令)一起使用之隱含控制(例如隱含控制欄位)。在一態樣中,不管在第一源緊縮資料運算元中的資料元件的任何特定配置、以及不管在第二源緊縮資料運算元中的遮罩元件的任何特定配置,未被遮蔽的資料元件都可以整合在結果緊縮資料運算元中。
有利地,資料元件選擇及整合指令/運算允許資料元件的子集合被選取及一起壓緊於單一指令的執行之約束內。在僅有被選取的源資料元件的子集合需要用於未來處理之實施例中,壓緊運算是有利的。舉例而言,在初始封包解碼之後,僅有特定流量(flow)位元組(例如界定源和目的地位置及源和目的地埠之四元組)可以被選取及一起被整合以用於後續的封包,使得可以執行快速檢查來確認這些封包屬於相同的流。關於另一實例,僅有相對更多的熵源資料元件(例如封包的)之子集合可以被選取及整合在一起,以致於可對這些相對更多熵的位元組執行散列、核對和、或其它密碼功能。依此方式,對於未被選取的相對較少熵的資料元件,不需要執行密碼功能。另一可能的用途將是圖形資料的次取樣。對於從本揭示獲利之習於此技藝者將清楚其它用途。也能夠使用一指令來選取所需的源資
料元件及增加的指令,以將選取的源資料元件整合在一起(例如,藉由移位整個運算元的一或更多指令、執行被遮罩的邏輯運算之一或更多指令、等等)。但是,特別是在大數目的資料元件之情形中,單一的資料元件選取及整合指令有助於增進涉及多個或潛在的很多指令之此軟體實施的性能。
執行單元及/或處理器包含特定或特別邏輯(例如,電晶體、積體電路、或是其它可能與韌體結合的硬體(例如儲存在非依電性記憶體中的指令)及/或軟體),其可操作以執行資料元件選擇及整合指令、以及/或者為了回應及/或因資料元件選擇及整合指令的結果而儲存結果(例如為回應從資料元件選擇及整合指令解碼的一或更多指令或控制訊號)。舉例而言,執行單元包含算術邏輯單元、邏輯單元、等等。在某些實施例中,執行單元包含耦合的用以接收源運算元的一或更多輸入結構(例如,埠、互連、介面)、耦合的用以接收及處理源運算元和產生結果運算元之電路或邏輯、以及耦合的用以輸出結果運算元之一或更多輸出結構(例如,埠、互連、介面)。在某些實施例中,處理源運算元及產生結果運算元的電路或邏輯可以選擇性地包含資料元件選取及路由邏輯。舉例而言,選擇資料元件及互連以安排選取的資料元件的路由之多工器。
為了避免模糊說明,顯示及說明相對簡單的處理器。但是,處理器可以選擇性地包含其它習知的處理器組件。這些組件的可能實例包含但不限於一般用途暫存器、狀態
暫存器(有時稱為旗標暫存器)、系統控制暫存器、指令提取單元、預提取緩衝器、一或更多層級的快取記憶體(例如第一階指令快取記憶體、L1資料快取記憶體、及L2資料/指令快取記憶體)、指令轉譯旁看緩衝器(TLB)、資料TLB、分支預測單元、亂序執行單元(例如指令排程單元、暫存器重命名及/或分配單元、指令派送單元、重排序緩衝器(ROB)、保留站、記憶體次序緩衝器、退出單元等等)、匯流排介面單元、位址產生單元、除錯單元、性能監視單元、功率管理單元、其它包含在處理器中的組件、以及其各式各樣的組合。這些組件可以以此技藝中熟知之各式各樣的不同的適當結合及/或配置而耦合在一起。實施例不侷限於任何習知的此類結合或配置。此外,實施例可以包含於具有多個核心的處理器中,多個處理器中至少之一可操作以執行資料元件選擇及整合指令。
圖2是執行資料元件選擇及整合指令的實施例之處理器中的方法220的實施例之方塊流程圖。在某些實施例中,方法220可由圖1的處理器100執行及/或在其中執行。此處對處理器100說明之組件、特點、及特定選加的細節也可選擇性地應用至方法220。或者,方法220可以由類似或不同的處理器或其它設備執行及/或在其內執行。此外,處理器100可以執行與方法220相同的、類似的、或不同的方法。
在區塊221,方法包含接收資料元件選擇及整合指令。在各種態樣中,可以在處理器或其一部份處(例如指
令提取單元、解碼單元、匯流排介面單元等等)接收指令。在各種態樣中,可從處理器外及/或晶粒外的源(例如,從記憶體、互連、等等)、或是從處理器上及/或晶粒上的源(例如,從指令快取記憶體、指令佇列等等)接收指令。資料元件選擇及整合指令可以指明或以其它方式標示、或是有具有多數資料元件的第一源緊縮資料運算元,以及,指明或以其它方式標示、或是有具有多數遮罩元件的第二源運算元。第二源運算元的各遮罩元件可以對應於第一源緊縮資料運算元的不同資料元件(例如在運算元內相同的相對位置、相同的位元位置等等)。
在方塊222,為回應及/或因資料元件選擇及整合指令結果,將結果緊縮資料運算元儲存在目的地儲存位置中。目的地儲存位置可以由資料元件選擇及整合指令指明或以其它方式標示。在某些實施例中,結果緊縮資料運算元包含一起整合於結果緊縮資料運算元的一部份中之對應於第二源運算元的未被遮罩之遮罩元件的第一源緊縮資料運算元的所有資料元件。
所示的方法涉及架構運算(例如,從軟體的觀點可看見的運算)。在其它實施例中,方法選擇性地包含一或更多微架構運算。舉例而言,指令可以被提取、解碼、亂序排程,源運算元可以被存取,執行單元可以執行微架構運算以實施指令,等等。在某些實施例中,要實施指令的微架構運算可以選擇性地擴充位元遮罩的各位元至與第一源緊縮資料運算元的資料元件相同的尺寸,以及對擴充的資
料元件遮罩及第一源緊縮資料運算元執行邏輯運算(例如邏輯AND),但這並非必要。
圖3是方塊圖,顯示為回應資料元件選擇及整合指令的實施例而執行之資料元件選擇及整合運算330的實施例。指令可明確地指明(例如,經由一或更多欄位或位元集)、或以其它方式標示(例如,隱含地標示)、或是以其它方式具有第一源緊縮資料運算元312,其係有多數資料元件E0-EN。
在第一源緊縮資料運算元312中資料元件E0-EN的數目可以變化。通常,資料元件E0-EN的數目可以等於第一源緊縮資料運算元的位元尺寸除以單一資料元件(例如E0)的位元尺寸。在各式各樣的實施例中,第一源緊縮資料運算元的尺寸或寬度可為64位元、128位元、256位元、512位元、或1024位元,但是,本發明的範圍不侷限於此。在各式各樣的實施例中,各資料元件(例如E0)的尺寸或位元寬度可為8位元、16位元、32位元、或64位元,但是,本發明的範圍不侷限於此。作為一些代表性的範例,128位元緊縮的8位元位元組格式包含16個8位元位元組資料元件,128位元緊縮的16位元資料元件格式包含8個16位元資料元件,256位元緊縮的位元組格式包含32個8位元位元組資料元件,256位元緊縮的16位元資料元件格式包含16個16位元資料元件,256位元緊縮的32位元資料元件格式包含8個32位元資料元件,這些僅是舉例而言。在各式各樣的實施例中,為了以資料
元件選擇及整合指令取得最大效率的強化,在第一源緊縮資料運算元中有至少八個、至少十六個、或是多於十六個(例如32、64等等)資料元件E0-EN。
在某些實施例中,指令可以具有一或更多欄位或位元集以標示第一源緊縮資料運算元的資料元件的尺寸或位元寬度。舉例而言,2位元欄位可以具有四個不同的值以標示四個不同的資料元件尺寸(例如,00表示8位元,01表示16位元,10表示32位元,11表示64位元)。在其它實施例中,第一源緊縮資料運算元的資料元件的尺寸或位元寬度可以選擇性地被指明或標示於暫存器中(例如模式暫存器)。舉例而言,在模式暫存器中的第一值可以表示緊縮資料暫存器的資料元件是要被解譯為8位元位元組元件,而在模式暫存器中的第二值可以表示緊縮資料暫存器的資料元件是要被解譯為16位元資料元件。
指令也可明確地指明(例如,經由一或更多欄位或位元集)、或以其它方式標示(例如,隱含地標示)、或是以其它方式具有(例如有作為立即數)第二源緊縮資料運算元304,其係具有對應的多數遮罩元件M0至MN。第二源運算元可以具有不同的遮罩元件(M)用於各別對應的第一源緊縮資料運算元的不同資料元件(E)。在第二源運算元中的各遮罩元件(M)對應於第一源緊縮資料運算元中不同的資料元件(E)(例如,在運算元內相同的相對位置及/或相同的位元位置)。舉例而言,E0對應於M0,E1對應於M1等等。通常為了方便起見,對應的資料元件與遮罩元件會在
運算元內對應的相對位置內,但是這並非必須,也可以選擇性地使用其它對應方式。
在某些實施例中,各遮罩元件可以是單一遮罩位元。或者,二或更多位元可以選擇性地用於各遮罩元件。舉例而言,各遮罩元件可以具有與第一源緊縮資料運算元中對應的各資料元件相同的位元數目(例如8位元、16位元、32位元等等)。實際上,可以視包含被視為遮罩位元但包含於資料元件中的的單一位元(例如資料元件的最高有效或最低有效位元)之特定實施所需,而使用任何數目的位元。在某些實施例中,第二源運算元可以代表位元遮罩運算元以及具有遮罩位元作為遮罩元件。在不同的實施例中,可以以不同的方式提供此位元遮罩運算元。在某些實施例中,第二源位元遮罩運算元可以代表指令的立即數。在其它實施例中,第二源位元遮罩運算元可以儲存在緊縮資料運算遮罩暫存器中(例如暫存器118及/或918之其中一者)。在其它實施例中,第二源位元遮罩運算元可以儲存在一般用途暫存器中(例如,暫存器119中之一)。替代地,取代位元遮罩運算元,第二源運算元可以代表封包資料元件遮罩運算元以及具有資料元件作為遮罩元件。舉例而言,第二源緊縮資料元件可以儲存在緊縮資料暫存器中(例如,緊縮資料暫存器110及/或810之其中一者)。
各遮罩元件可以操作以有條件地控制或遮蔽來自第一源緊縮資料運算元之對應的資料元件是否要被選取或配置以出現在結果緊縮資料運算元中。遮罩動作可以是依每一
資料元件粒度,以致於各不同的資料元件分別地及/或彼此獨地立被遮蔽或未被遮蔽。各未被遮蔽的元件具有第一值(例如,根據一可能的方式為一(1)的值)以選取用於包含在整合的或分組的結果緊縮資料運算元314的資料元件集中,而各被遮蔽的遮罩元件可以具有第二不同的值(例如,根據一可能的方式為零(0)的值)以省略來自整合的或分組之結果緊縮資料運算元的資料元件組。說明採用此方式。各式各樣其它的方式也能夠用於從整合中選取或省略對應的資料元件之值。
為回應資料元件選擇及整合指令/運算,產生(例如由執行單元308產生)結果緊縮資料運算元314並將其儲存在目的地儲存位置中。目的地儲存位置可由指令指明或以其它方式標示。在各式各樣的實施例中,目的地儲存位置可為緊縮資料暫存器、記憶體位置、或其它儲存位置。在某些實施例中,結果緊縮資料運算元314包含一起整合於結果緊縮資料運算元314的一部份中之對應於第二源運算元304的未被遮蔽的遮罩元件之第一源緊縮資料運算元312的所有資料元件。根據說明採用之方式,被遮蔽的遮罩元件具有零(0)的值,而未被遮蔽的遮罩元件具有一(1)的值,但是,本發明不侷限於此。在說明的實例中,資料元件E1、E2、E3、及E5對應於未被遮蔽的遮罩元件M1、M2、M3、及M5,而資料元件E0、E4、及EN對應於被遮蔽的遮罩元件M0、M4、及MN。如同所示,在某些實施例中,未被遮蔽或選取的資料元件(例如E1、E2、E3、及E5)
可以一起整合成結果緊縮資料運算元的最低有效部份中整合的被選取或未被遮蔽的資料元件,以及,以與它們出現於或被安排於第一源緊縮資料運算元中的次序相同的次序出現或被安排。或者,未被遮蔽或選取的資料元件可以選擇性地一起整合於結果緊縮資料運算元的最高有效部份中,以及以與它們出現於或被安排於第一源緊縮資料運算元中的次序相同的次序出現或被安排。可以想到各種方式以達成此點,包含路由、移動、重安排、拷貝或者儲存未被遮蔽或選取的資料元件至適當的位置。
在結果緊縮資料運算元中,整合在一起的未被遮蔽之資料元件(例如E1、E2、E3及E5)可以省略所有被遮蔽的資料元件(例如E0、E4、及EN)。亦即,整合的未被遮蔽的資料元件不具有任何配置在它們之間的被遮蔽掉的資料元件。舉例而言,在第一源運算元中,E4配置在E3與E5之間,但是,在結果緊縮資料運算元中,E5及E3一起整合且彼此相鄰而無E4配置在它們之間。因此,可能的非連續之未被遮蔽的資料元件子集合,(具有被遮蔽掉的資料元件散佈於其間)可以一起整合或緊壓於以及儲存於結果運算元的最低序或最高序部份中。在某些實施例中,被遮蔽掉的資料元件(例如E0、E4、及EN)僅被廢棄或刪除且不需被載送至目的地。在這些情形中,以及當整合的未被遮蔽的資料元件儲存在結果運算元的最低有效部份中時,比儲存未被遮蔽的資料元件的總數所需之位元更高效的位元可以選擇性地儲存預定值。舉例而言,如同所示,這些位
元或資料元件在結果緊縮資料運算元中可選擇性地被歸零。作為另一選項,不在這些位元中儲存零,而是現有的位元或資料保留不變。這有助於降低記憶體頻寬存取。處理器知道被整合的資料元件的數目並因而知道結果整合元件之限制。作為又另一選項,在其它實施例中,被遮蔽掉的資料元件(例如E0、E4、及EN)可以選擇性地被路由、移動、拷貝、或者儲存至未被用以儲存整合在一起的未被遮蔽之資料元件之結果緊縮資料運算元的另一部份。
在某些實施例中,回應指令可以選擇性地儲存(例如在一般用途或其它暫存器中)表示被一起整合於結果中的未被遮蔽之資料元件的數目之值。舉例而言,在圖4中,可以選擇性地儲存表示8的值以表示八個未被遮蔽的資料元件已整合於結果中。這有助於僅允許結果中整合的未被遮蔽的資料元件之數目被存取,而不需要分別地計算此數目,但此為選項而非必須。此態樣也可與此處揭示的實施例一起使用(例如圖1-5)。
圖4是方塊圖,顯示為回應使用位元遮罩的位元組選取及整合指令的實施例而執行之使用位元遮罩的位元組選取及整合運算430的特定示範實施例。圖4的運算實例與圖3更廣義的運算有某些相似性。為了避免模糊說明,主要將說明用於圖4的運算實例之不同及/或增加的特徵,而不重複與圖3的更廣義運算有關之所有可選擇地類似的或共同的特徵及細節。但是,須瞭解,除非另外說明或清楚表示(例如,假使它們關於資料元件遮罩而非位元遮
罩),否則,先前說明的圖3的更廣義的運算之特徵及細節也可選擇地應用至圖4的運算實例。
在本例示性實施例中,指令指明、或以其它方式標示、或者具有第一128位元源緊縮位元組運算元412,第一128位元源緊縮位元組運算元412具有16個8位元位元組資料元件B0至B15。這僅為一實例。其它實施例可以具有更窄(例如64位元)或更寬(例如256位元、512位元、1024位元)運算元,以及具有其它大小的資料元件(16位元資料元件、32位元資料元件、64位元資料元件等等)。
在圖4之例示性實施例中,指令指明、或以其它方式標示、或者具有第二16位元源位元遮罩運算元404,第二16位元源位元遮罩運算元404具有16個遮罩位元。這些位元中的各位元對應於運算元內相同的相對位置中第一源緊縮位元組運算元的位元組(例如顯示中垂直對齊的資料元件)。各未被遮蔽的遮罩位元具有第一值(例如根據顯示中採用的一可能方式為二進位1),而各被遮蔽掉的遮罩位元具有第二不同值(例如根據顯示中採用的方式為二進位0)。具體而言,在所示的實例中,這些位元的值是從右方的最低有效端至左方的最高有效端,[0011101010001101]。這僅為一舉例說明的位元值組。根據本實例,位元組B0、B1、B5、B7、B9、B10、B11、及B14是被遮蔽的位元組,而位元組B2、B3、B4、B6、B8、B12、B13、及B15是未被遮罩的位元組。須瞭解,其它的
實施例可以使用更窄或更寬的位元遮罩運算元(例如,用於其它源緊縮資料運算元中的各資料元件之一位元)。
相較於資料元件遮罩(例如,位元組遮罩),位元遮罩的一可能優點是其有助於降低與傳送及/或利用遮罩有關的資源使用/消耗。代表地,可能被降低之資源使用/消耗的可能型式的實例是取決於特定實施而包含但不限於記憶體匯流排、中央處理單元(CPU)、圖形處理單元(GPU)、系統晶片(SoC)互連、網路介面、一般用途輸入及/或輸出(I/O)匯流排、快取埠頻寬、處理器重排序緩衝器、載入緩衝器、記憶體合併緩衝器、快取線、實體及虛擬記憶體、等等相關的資源使用/消耗。
在某些實施例中,第二16位元源位元遮罩運算元404代表指令的立即數。舉例而言,16個遮罩位元可以選擇性地儲存於16位元、20位元、32位元、或其它大小的立即數。在某些實施例中,立即數的遮罩位元可以在運行時期決定(例如,由下述中將進一步說明封包協定解碼器、由運算編譯器、等等決定)。在其它實施例中,第二16位元源位元遮罩運算元可以選擇性地儲存於緊縮資料運算遮罩暫存器中(例如暫存器118及/或918其中一者)。在一態樣中,緊縮資料運算遮罩暫存器可以主要專用於預測。在一態樣中,處理器的指令集的其它指令將緊縮資料運算遮罩暫存器標示為預測運算元,以預測緊縮資料運算(例如緊縮乘法運算、緊縮加法運算、緊縮旋轉運算、緊縮比較運算等等)。在其它實施例中,第二16位元源位元
遮罩運算元可以選擇性地儲存於一般用途暫存器中(例如暫存器119中之一)。
產生結果緊縮資料運算元414(例如由執行單元408產生)及將其儲存在目的地儲存位置,以回應指令/運算。在某些實施例中,結果緊縮資料運算元包含一起整合於結果緊縮資料運算元414的一部份中之對應於第二源位元遮罩運算元404的未被遮蔽的遮罩位元之第一源緊縮位元組運算元412的所有資料元件。如同所示,未被遮蔽的位元組(例如B2、B3、B4、B6、B8、B12、B13、及B15)可以一起整合於結果緊縮資料運算元的最低有效部份中(例如八個最低有效位元組)。不需要儲存所有未被遮蔽的位元組(例如,在八個最高有效位元組的情形中)之結果緊縮資料運算元的最高有效位元組可以選擇性地具有預定值(例如被清除至所有為0)。作為另一選項,不在這些位元中儲存零,而是現有的位元或資料保留未變。這有助於降低記憶體頻寬存取。處理器知道被整合的資料元件的數目並因而知道結果整合元件之限制。或者,未被遮蔽的位元組可以選擇性地一起整合於結果緊縮資料運算元的最高有效部份或其它部份中。在所示的實施例中,從結果緊縮資料運算元省略被遮蔽掉的位元組(例如B0、B1、B5、B7、B9、B10、B11、及B14)。或者,在其它實施例中,被遮蔽掉的位元組可以選擇性地一起整合於及儲存於未被用以儲存未被遮蔽的位元組之結果緊縮資料運算元的另一部份中。
圖5是方塊圖,顯示為回應使用位元遮罩的位元組選
取及整合指令的實施例而執行之使用位元遮罩運算元的位元組選取及整合運算530的特定示範實施例。圖5的運算實例與圖3更廣義的運算有某些相似性。為了避免模糊說明,主要將說明用於圖5的運算實例之不同及/或增加的特徵,而不重複與圖3的更廣義運算有關之所有可選擇地類似的或共同的特徵及細節。但是,須瞭解,除非另外說明或清楚表示(例如,假使它們關於位元遮罩而非位元組遮罩),否則,先前說明的圖3的更廣義的運算之特徵及細節也可選擇地應用至圖5的運算實例。
在本例示性的實施例中,指令指明、或以其它方式標示、或者具有第一128位元源緊縮位元組運算元512,第一128位元源緊縮位元組運算元512具有16個8位元位元組資料元件。如同先前所述,其它實施例可以具有更窄(例如64位元)或更寬(例如256位元、512位元、1024位元)運算元,以及具有其它大小的資料元件(例如16位元資料元件、32位元資料元件、64位元資料元件、等等)。
在本例示性的實施例中,指令指明、或以其它方式標示、或者具有第二128位元源緊縮位元組遮罩運算元504,第二128位元源緊縮位元組遮罩運算元504具有16個遮罩位元組。這些遮罩位元組中的各遮罩位元組對應於運算元內相同的相對位置中第一源緊縮位元組運算元的位元組(例如相同位元位置及顯示之垂直對齊)。各未被遮蔽的遮罩位元組具有第一值(例如根據顯示中採用的一可能方式為全部1[11111111]),而各被遮蔽掉的遮罩位元具有
第二不同值(例如根據顯示中採用的方式為全部0[00000000])。在所示的實例中,第一源緊縮位元組運算元的位元[7:0]中的最低有效位元組及在位元[127:120]中的最高有效位元組是被遮蔽掉的位元組,而在位元[15:8]及[23:16]中的位元組是未被遮蔽的位元組。在某些實施例中,第二128位元源位元組遮罩運算元504可以選擇性地儲存於緊縮資料暫存器中(例如暫存器110及/或810其中一者)。替代地,可以選擇使用記憶體位置或其它儲存位置。
產生結果緊縮資料運算元514(例如由執行單元508產生)及將其儲存在目的地儲存位置,以回應指令/運算。在某些實施例中,結果緊縮資料運算元包含一起整合於結果緊縮資料運算元514的一部份中之對應於第二源位元組遮罩運算元504的未被遮蔽的遮罩位元組之第一源緊縮位元組運算元512的所有資料元件。如同所示,在位元[15:8]及[23:16]中未被遮蔽的位元組可以一起整合於結果緊縮資料運算元的最低有效部份中。不需要儲存所有未被遮蔽的位元組之結果緊縮資料運算元的最高有效位元組可以選擇性地具有預定值(例如被清除至所有為0)。或者,未被遮蔽的位元組可以選擇性地一起整合於結果緊縮資料運算元的最高有效部份或其它部份中。在所示的實施例中,結果緊縮資料運算元可以排除或省略所有被遮蔽掉的位元組。或者,被遮蔽掉的位元組可以選擇性地一起整合於及儲存於未被用以儲存未被遮蔽的位元組之結果緊縮資料運算元
的另一部份中。
此處揭示的資料元件選擇及整合指令是一般用途的指令且可用於各種不同目的。這些指令可以被單獨使用、或是與其它指令組合地使用,以便以用於特定應用、演繹法、或碼的各種不同方式來選取及整合資料元件。這些指令一可能使用為選取及整合網路封包的資料元件。舉例而言,可取出代表資料元件的四元組之封包的流量資料元件,該資料元件的四元組界定用於網路封包的資料流之源及目的地位址以及源及目的地埠。這些流量元件的取出可用於網路中的各種不同的目的,例如用於執行內文查詢。配合封包處理及/或網路之各種其它用途包含但不限於為了標頭核對和、計算部份數位簽章、ARP快取、封包交換或其它遞送、過濾、內容為基礎的負載平衡、封包的散列內容、封包分類、及應用導向網路化封包中之一或更多之目的之各種部份的選取及整合。在另一態樣中,這些指令可以用於網路化或其它應用中,以選擇及整合資料元件(例如相對更多熵的資料元件)以用於輸入至密碼功能(例如散列、核對和、等等)。這些指令的又另一可能的用途是選擇及整合用於圖形次取樣的資料元件。仍然又另一用途是可延伸標示語言(XML)處理、資料庫應用、影像處理、及壓縮。對於得利於本揭示之習於此技藝者將清楚各種其它應用。為了進一步說明某些概念,將提供在處理網路封包中使用資料元件選擇及整合指令602的詳細實例,但是,本發明的範圍不侷限於此。
圖6是處理器600的例示性實施例之方塊圖,以及顯示在某些實施例中資料元件選擇及整合指令602如何被用以處理網路封包的資料元件。處理器包含協定解碼器662。協定解碼器耦合以接收網路封包(例如,來自網路介面)。協定解碼器操作以將這些網路封包的網路協定解碼。以傳統方式可以達成此點。在某些實施例中,協定解碼器可以實施成為軟體模組(例如儲存於處理器外面的記憶體中)。這些協定解碼器模組通常被用以將更廣泛的各種協定彈性地解碼。在其它實施例中,協定解碼器可以以晶粒上及/或處理器上的硬體實施。舉例而言,可以選擇性地包含硬體協定解碼器以用於相對更常被使用的協定。
再參考圖6,協定解碼器可以接收第一封包660-1。協定解碼器可以有力地解碼或決定第一封包的協定。協定解碼的輸出是在所有相關層的協定之決定(例如TCP/IPV4)。根據此點,協定解碼器可以產生遮罩。舉例而言,協定解碼器可以產生及提供立即位元遮罩604(例如類似於立即數104)給解碼單元606。立即位元遮罩或其它遮罩可以操作以選取相同流及/或使用與第一封包相同的網路協定之某些感興趣的封包的資料元件。
接著,相同流或連接之第二封包660-2可以由協定解碼器接收。協定解碼器、或標頭取出組件或其它組件(未顯示)至少可以儲存第二封包的標頭的一部份作為封包資料運算元612。封包資料運算元612可以具有第二封包標頭的多數緊縮資料元件。如同先前所述,運算元可以儲存
在一組緊縮資料暫存器610中。
在解碼單元606,接收標示緊縮資料運算元612之資料元件選擇及整合指令602。解碼單元也接收遮罩(例如立即位元遮罩604)。解碼單元如先前所述地將指令解碼,以及,控制或賦能執行單元608,以執行使用源緊縮資料運算元612及遮罩的資料元件選擇及整合運算,並儲存結果緊縮資料運算元614。結果緊縮資料運算元可以具有第二封包的標頭之整合的被選取的/未被遮蔽的資料元件。
要選取第二封包的標頭的哪些特定資料元件是取決於特定實施。在某些實施例中,可以選取及整合流量位元組或元件。舉例而言,根據協定解碼,協定解碼器能夠知道駐於第二封包的標頭內之流量位元組的位置(例如,TCP/IP源/目的地位址及源/目的地埠數)。協定解碼器可以產生遮罩,以致於這些流量位元組未被遮蔽或選取(例如,用於各流量位元組的未被遮蔽的元件以及用於其它位元的被遮蔽掉的遮罩元件)。這些流量位元組的取出及整合有助於其它運算。舉例而言,另一組件644可以使用這些流量位元組以執行內文查詢、用於RSS散列等等。這有助於加速流量取出,流量取出在封包處理中通常傾向於計算上昂貴的運算。在其它實施例中,可以選取及整合協定位元組或其它元件。這允許快速測試後續封包的協定而不需要經過此有力的協定解碼。在仍然其它實施例中,可以選取及整合第二封包標頭中感趣的的其它位元組或資料元件。舉例而言,可以取出標頭之相當熵的元件,然後,
例如密碼模組等其它組件664可以對相當熵的元件執行散列或其它密碼操作。
圖7A是資料元件選擇及整合指令702A的第一實施例的方塊圖。指令包含操作碼或運算碼740A。運算碼包含可操作以辨識要被執行的指令及/或運算(例如資料元件選擇及整合運算)之多數位元或是一或更多欄位。指令也包含第一源緊縮資料運算元說明符742A以指明第一源緊縮資料運算元。選擇性地包含目的地說明符744A以指明結果緊縮資料運算元要被儲存的目的地儲存位置。舉例而言,這些說明符(742A、744A)中的說明符包含一或更多欄位或位元集,以明確地指明暫存器的位址、記憶體位置、或其它用於相關運算元的儲存位置。替代地,在另一實施例中,這些說明符中之一或更多對於指令可以是選擇性地隱含(例如對運算碼是隱含的),而不是被明確地指明。舉例而言,指令可以具有隱含固定暫存器作為無需被明確地指明之源及/或目的地。作為另一實例,在某些實施例中,取代目的地說明符744A,用於第一源緊縮資料運算元的相同暫存器或其它儲存位置可以選擇性地隱含地作為目的地儲存位置。舉例而言,指令可以以單一源/目的地說明符取代分別的源及目的地說明符742A、744A,所述單一源/目的地說明符會辨識初始要被用於源運算元及後續要被用以儲存結果運算元之暫存器或其它儲存位置。在本實施例中,指令也具有立即數704以提供源位元遮罩運算元。在某些實施例中,指令也具有選加的資料元件尺寸
說明符746A以指明或至少標示第一源緊縮資料運算元的資料元件之尺寸。資料元件尺寸說明符包含一或更多位元或欄位。
圖7B是資料元件選擇及整合指令702B的第二實施例的方塊圖。指令包含操作碼或運算碼740B、第一源緊縮資料運算元說明符742B、選加的目的地說明符744B、及選加的資料元件尺寸說明符746B。這些說明符中的各說明符可以與指令702A的對應稱呼的組件相同或類似,以及,可以具有相同的變異及替代。在本實施例中,取代立即數704,指令702B選擇性地包含緊縮資料運算遮罩說明符748。緊縮資料運算遮罩說明符會指明緊縮資料運算遮罩暫存器。或者,緊縮資料運算遮罩暫存器可以被隱含地標示。
圖7C是資料元件選擇及整合指令702C的第三實施例的方塊圖。指令包含操作碼或運算碼740C、第一源緊縮資料運算元說明符742C、選加的目的地說明符744C、及選加的資料元件尺寸說明符746C。這些說明符中的各說明符可以與指令702A的對應稱呼的組件相同或類似,以及,可以具有相同的變異及替代。在本實施例中,取代立即數704及/或緊縮資料運算遮罩說明符748,指令702C選擇性地包含第二源緊縮資料操作元說明符750。第二源緊縮資料運算元說明符750會明確地指明緊縮資料元件遮罩會被儲存之第二緊縮資料暫存器或其它緊縮資料運算元儲存位置。或者,隱含的儲存位置可以選擇性地用於
緊縮資料元件遮罩。
須瞭解,這些僅是一些適當指令之說明性範例的實施例。替代的實施例包含說明符的子集合、添加額外的說明符或欄位。此外,顯示的欄位之次序/配置並非一定,而是可以以各種方式重配置。此外,欄位無需包含連續的位元序列,而是可包含非連續的或分開的位元等等。某些欄位可能重疊。在某些實施例中,指令格式具有如本文中任何它處所述的指令格式(例如,VEX或EVEX編碼或指令格式),但是,本發明的範圍並非侷限於此。
圖8是一組適合緊縮資料暫存器810的例示性實施例之方塊圖。緊縮資料暫存器包含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位元的雙精度浮點資料。在替代的實施例中,可以使用不同數目的暫存器及/或不同大小的暫存器。在又其它實施例中,暫存器可使用或不使用較大暫存器於較小暫存器上混疊及/或被用以或不被用以儲存浮點資料。
圖9是一組適合的緊縮資料運算遮罩暫存器918之例示性實施例之方塊圖。在所示的實施例中,集合包含八個標示為k0至k7的暫存器。替代實施例可以包含比八個暫存器更少的暫存器(例如2、4、6個等等),或是比八個暫存器更多的暫存器(例如16、32個等等)。這些暫存器中的各暫存器可用以儲存緊縮資料運算遮罩。在所示的實施例中,各暫存器為64位元。在替代實施例中,暫存器的寬度可以比64位元還寬(例如80位元、128位元等等)、或是比64位元還窄(例如8位元、16位元、32位元等等)。暫存器可以使用習知的技術而以不同方式實施,且不侷限於任何習知特定型式的電路。適當的暫存器的實例包含但是不限於專用的實體暫存器、使用暫存器重命名之動態分配的實體暫存器、及其結合。
在某些實施例中,緊縮資料運算遮罩暫存器918可為分別的、專用的架構暫存器組,它們主要專用於預測(例如,以資料元件粒度來預測緊縮資料運算)。在某些實施例中,指令可在不同於用來編碼或指明其它型式的暫存器
(例如緊縮資料暫存器、一般用途暫存器等等)的位元或指令格式之一或多個不同欄位編碼或指明緊縮資料運算遮罩暫存器。舉例而言,指令可以使用三個位元(例如3位元欄位)來編碼或指明八個緊縮資料運算遮罩暫存器k0至k7中之任一個。在替代實施例中,當有更少或更多的緊縮資料運算遮罩暫存器時,可以分別使用更少或更多的位元。在一特定實施中,僅有緊縮資料運算遮罩暫存器k1至k7(但不是k0)可以被定址為預定運算元以預測被遮蔽的緊縮資料運算。暫存器k0可以作為一般的源或目的地,但不會被編碼作為預測運算元(例如,假使k0被指明,則其具有「無遮罩」編碼),但是這並非必要。
圖10顯示緊縮資料運算遮罩暫存器1018的例示性實施例,以及顯示取決於緊縮資料寬度及資料元件寬度之作為緊縮資料運算遮罩及/或用於遮罩的位元數目。顯示之例示性緊縮資料運算遮罩暫存器的實施例是64位元寬,但是這並非必要的。取決於緊縮資料寬度及資料元件寬度的結合,全部64位元、或是僅有64位元的一部份可以作為用於遮罩的緊縮資料運算遮罩。一般而言,當使用單一的、每元件遮罩控制位元時,在緊縮資料運算遮罩暫存器中用於遮罩的位元數目等於以位元計的緊縮資料寬度除以以位元計的緊縮資料元件寬度。在所示的實施例中,暫存器的最低序的子集合或部份用於遮罩,但是,這並非要求。在替代實施例中,可以選擇性地使用最高序的子集合、或某些其它子集合。
處理器核心可以以不同方式實施、用於不同目的、及在不同處理器中。舉例而言,這些核心的實施包含:1)用於一般用途的計算之一般用途的有序核心;2)用於一般用途的計算之高性能的一般用途的亂序核心;3)主要用於圖形及/或科學(輸貫量)計算之特別用途的核心。不同處理器的實施包含:1)CPU,包含用於一般用途的計算之一或更多一般用途的有序核心及/或用於一般用途的計算之一或更多一般用途的亂序核心;以及,2)共處理器,包含一或更多主要用於圖形及/或科學(輸貫量)計算之特別用途的核心。這些不同的處理器導致不同的電腦系統架構,包含:1)共處理器與CPU在不同的晶片上;2)共處理器在與CPU相同封裝中的不同晶片上;3)共處理器與CPU在相同晶粒上(在此情形中,此共處理器有時稱為特別用途邏輯,例如集成的圖形及/或科學(輸貫量)邏輯、或是特別用途的核心);以及,4)系統晶片,在相同晶粒上包含所述CPU(有時稱為應用核心或是應用處理器)、上述共處理器、及其它功能。在說明例示性的處理器及電腦架構之後,接著說明例示性的核心架構。
圖11A是方塊圖,顯示根據本發明的實施例之例示性
的有序管線及例示性的暫存器重命名、亂序發佈/執行管線。圖11B是方塊圖,顯示根據本發明的實施例之要包含於處理器中之例示性的有序架構核心及舉例說明的暫存器重命名、亂序發佈/執行架構核心。圖11A-B中的實線框顯示有線管線及有序核心,而可選的虛線框顯示暫存器重命名、亂序發佈/執行管線及核心。假定有序態樣是亂序態樣的子集合,將說明亂序態樣。
在圖11A中,處理器管線1100包含提取級1102、長度解碼級1104、解碼級1106、分配級1108、重命名級1110、排程(也稱為發送或發佈)級1112、暫存器讀取/記憶體讀取級1114、執行級1116、寫回/記憶體寫入級1118、例外處理級1122、及確定級1124。
圖11B顯示處理器核心1190,其包含耦合至執行引擎單元1150的前端單元1130,引擎單元1150及前端單元1130都耦合至記憶體單元1170。核心1190可為精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、超長指令字(VLIW)核心、或是混合或替代核心型式。又另一選項,核心1190可為特別用途核心,例如,網路或通訊核心、壓縮引擎、共處理器核心、一般用途計算圖形處理單元(GPGPU)核心、圖心核心等等。
前端單元1130包含耦合至指令快取單元1134的分支預測單元1132,指令快取單元1134耦合至指令轉譯旁看緩衝器(TLB)1136,指令轉譯旁看緩衝器(TLB)1136耦合至指令提取單元1138,指令提取單元1138耦合至解碼
單元1140。解碼單元1140(或解碼器)將指令解碼,以及產生從原始指令解碼、或是以其它方式反應原始指令、或是從原始指令導出之一或更多微操作、微碼進入點、微指令、其它指令、或其它控制訊號,以作為輸出。可以使用各種不同的機構以實施解碼單元1140。適當機構的實例包含但不限於查詢表、硬體實施、可編程邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等等。在一實施例中,核心1190包含微碼ROM或儲存微碼以用於某些巨集指令的微碼(例如,在解碼單元1140或者是前端單元1130內)。解碼單元1140耦合至執行引擎單元1150中的重命名/分配器單元1152。
執行引擎單元1150包含耦合至退出單元1154及一或更多排程器單元1156的集合的重命名/分配器單元1152。排程器單元1156代表任何數目的不同排程器、包含保留站、中央指令窗等等。排程器單元1156耦合至實體暫存器檔案單元1158。各實體暫存器檔案單元1158代表一或更多實體暫存器檔案,不同的實體暫存器檔案儲存一或更多不同的資料型式,例如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、狀態(例如指令指標器,指令指標器是要被執行的下一指令之位址)等等。在一實施例中,實體暫存器檔案單元1158包括向量暫存器單元、寫入遮罩暫存器單元、及純量暫存器單元。這些暫存器單元可以提供架構向量暫存器、向量遮罩暫存器、及一般用途暫存器。實體暫存器檔案單元1158由退出單
元1154重疊以顯示實施暫存器重命名及亂序執行的各種方式(例如,使用再排序緩衝器和退出暫存器檔案;使用未來檔案、歷史緩衝器、及退出暫存器檔案;使用暫存器映射及暫存器庫;等等)。退出單元1154及實體暫存器檔案單元1158耦合至執行群集(cluster)1160。執行群集1160包含一或更多執行單元1162及一或更多記憶體存取單元1164的集合。執行單元1162執行多種運算(例如,偏移、加法、減法、乘法)及對各種型式的資料(例如純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)執行。雖然某些實施例包含多個專用於特定指令或功能集的執行單元,但是,其它實施例可以僅包含都執行所有功能之多個執行單元或是一執行單元。由於某些實施例產生用於某些型式的資料/運算之分別的管線(例如,純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線、及/或記憶體存取管線,這些管線均具有它們自已的排程器單元、實體暫存器單元、及/或執行群集-以及,在分別的記憶體存取管線的情形中,實施某些實施例,其中,僅有此管線的執行群集具有記憶體存取單元1164),所以,排程器單元1156、實體暫存器檔案單元1158、及執行群集1160顯示為可能是複數的。也應瞭解,在使用分別的管線之情形中,這些管線中之一或更多可以是亂序發佈/執行而其餘的為有序。
記憶體存取單元1164的集合耦合至記憶體單元1170,記憶體單元1170包含資料轉譯旁看緩衝器(TLB)
單元1172,資料TLB單元1172耦合至資料快取單元1174,資料快取單元1174耦合至第2階(L2)快取單元1176。在一例示性實施例中,記憶體存取單元1164包含載入單元、儲存位址單元、及儲存資料單元,各單元均耦合至記憶體單元1170中的資料TLB單元1172。指令快取單元1134又耦合至記憶體單元1170中的第2階(L2)快取單元1176。L2快取單元1176耦合至一或更多其它階的快取記憶體以及最後耦合至主記憶體。
舉例而言,例示性的暫存器重命名、亂序發佈/執行核心架構可以實施如下所述的管線1100:1)指令提取1138執行提取級及長度解碼級1102和1104;2)解碼單元1140執行解碼級1106;3)重命名/分配器單元1152執行分配級1108及重命名級1110;4)排程器單元1156執行排程級1112;5)實體暫存器檔案單元1158及記憶體單元1170執行暫存器讀取/記憶體讀取級1114;執行群集1160執行執行級1116;6)記憶體單元1170及實體暫存器檔案單元1158執行寫回/記憶體寫入級1118;7)各種單元可涉及例外處理級1122;及8)退出單元1154及實體暫存器單元1158執行確定級1124。
核心1190支援一或更多指令集(例如,x86指令集(具有添加更新的版本之某些延伸);加州Sunvale的MIPS Technologies公司之MIPS指令集;加州Sunvale的ARM Holdings公司的ARM指令集(具有例如NEON等選加的延伸)),包含此處所述的指令。在一實施例中,核心1190
包含邏輯以支援緊縮資料指令集延伸(例如,AVX1、AVX2),藉此允許使用緊縮資料來執行由很多多媒體應用所使用的操作。
應瞭解,核心可支援多執行緒(執行二或更多平行組的運算或執行緒),以及以包含時間切片多執行緒、同時多執行緒(其中,單一實體核心提供用於各執行緒之邏輯核心,實體核心是同時多執行緒的)等等的各種方式、或者其組合(例如,在Intel®的超執行緒(Hyperthreading)技術中之時間切片提取及解碼和之後的同時多執行緒)來支援多執行緒。
雖然在亂序執行的背景下說明暫存器重命名,但是,應瞭解,在有序架構中可使用暫存器重命名。雖然所示的處理器之實施例也包含分別的指令及資料快取單元1134/1174以及共用的L2快取單元1176,但是,替代的實施例可以具有用於指令及資料之單一內部快取記憶體,例如第1階(L1)內部快取記憶體、或多階內部快取記憶體。在某些實施例中,系統包含內部快取記憶體及核心和/或處理器之外部的外部快取記憶體的結合。替代地,所有快取記憶體可以是在核心及/或處理器的外部。
圖12A-B是方塊圖,顯示更特定例示性的有序核心架構,其中,核心是晶片中數個邏輯區塊(包含相同型式及/或不同型式的其它核心)中之一。邏輯區塊視應用而經由
高頻寬互連網路(例如環式網路)與某些固定的功能邏輯、記憶體I/O介面、及其它必要的I/O邏輯通訊。
圖12A是根據本發明的實施例之單一處理器核心、以及其對晶粒上互連網路1202的連接及其區域子集合的第2階(L2)快取記憶體1204之方塊圖。在一實施例中,指令解碼器1200支援具有緊縮資料指令集延伸的x86指令集。L1快取記憶體1206允許對快取記憶體的低潛候期存取進入純量及向量單元。雖然在一實施例中(為了簡化設計),純量單元1208及向量單元1210使用分別的暫存器組(分別地,純量暫存器1212及向量暫存器1214)以及在它們之間傳輸的資料被寫至記憶體並接著從第1階(L1)快取記憶體1906讀回,但是,本發明的替代實施例可以使用不同的方式(例如,使用單一暫存器集合或是包含允許資料在二暫存器檔案之間傳輸而不用被寫入及讀回的通訊路徑)。
L2快取記憶體的區域子集合104是全區L2快取記憶體的部份,全區L2快取記憶體是被分割成分別的區域子集合,每一處理器核心一個區域子集合。各處理器核心對其自己的L2快取記憶體1204的區域子集合具有直接存取路徑。由處理器核心讀取的資料儲存在其L2快取子集合1204中,以及,可以與其它存取它們自己的區域L2快取子集合之處理器核心平行地被快速存取。由處理器核心寫入的資料儲存在它自己的L2快取子集合1204中及於需要時從其它子集合湧入。環式網路確保用於共用資料的相干
性。環式網路是雙向的,以允許例如處理器核心、L2快取記憶體及其它邏輯區塊等代理器在晶片內彼此通訊。各環式資料路徑是每一方向1012位元寬。
圖12B是根據本發明的實施例之圖12A中的處理器核心之部份擴充視圖。圖12B包含L1快取記憶體1206之L1資料快取記憶體1206A部份、以及與向量單元1210及向量暫存器1214有關的更多詳節。具體而言,向量單元1210是16倍寬(16-wide)的向量處理單元(VPU)(請參見16倍寬的ALU 1228),其執行整數、單精度浮動、及雙精度浮動指令中之一或更多。VPU支援以拌和單元1220拌和暫存器輸入、以數值轉換單元1222A-B進行數值轉換、以及以記憶體輸入上的複製單元1224進行複製。寫入遮罩暫器1226允許預測結果向量寫入。
圖13是根據本發明的實施例之具有一個以上的核心、具有整合記憶體控制器及具有整合圖形之處理器1300的方塊圖。圖13中的粗線框顯示具有單核心1302A、系統代理器1310、一或更多匯流排控制器單元1316的處理器1300,而可選的虛線框顯示具有多核心1302A-N、系統代理器單元1310中的一或更多整合記憶體控制器單元1314的集合、以及特別用途的邏輯1308之替代處理器1300。
因此,處理器1300的不同實施包含:1)CPU,具有
特定用途的邏輯1308為整合圖形及/或科學(輸貫量)邏輯(包含一或更多核心),及核心1302A-N為一或更多一般用途核心(例如,一般用途的有序核心、一般用途的亂序核心、二者的組合);2)共處理器,具有核心1302A-N為大量主要用於圖形及/或科學(輸貫量)之特定用途核心;以及,3)共處理器,具有核心1302A-N為大量一般用途的有序核心。因此,處理器1300可為一般用途的處理器、共處理器或特定用途的處理器,舉例而言,網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(一般用途的圖形處理單元)、高輸貫量多整合核心(MIC)共處理器(包含30個或更多的核心)、嵌入式處理器、等等。處理可以實施於一或更多晶片中。使用例如BiCMOS、CMOS、或NMOS等多種製程技術中的任何技術,處理器1300可以是部份及/或實施在一或更多基底上。
記憶體階層包含在核心內的一或更多階的快取、一或更多共用快取單元1306、及耦合至整合記憶體控制器單元1314組之外部記憶體(未顯示)。共用快取單元1306組可以包含例如第2階(L2)、第3階(L3)、第4階(L4)、或其它階快取等一或更多中階快取、末級快取(LLC)、及/或其組合。雖然在一實施例中,環式互連單元1312將整合圖形邏輯1308、共用快取單元1306的集合、及系統代理單元1310/整合記憶體控制器單元1314互連,但是,替代實施例可以使用任何數目的已知技術來互連這些單元。在一實施例中,在一或更多快取單元1306與核心1302A-N
之間維持相干性。
在某些實施例中,一或更多核心1302A-N能夠多執行緒。系統代理器1310包含那些協調及操作核心1302A-N之元件。系統代理器單元1310可以包含例如電力控制單元(PCU)及顯示單元。PCU可以是或包含調節核心1302A-N及整合圖形邏輯1308的電力狀態所需的邏輯及元件。顯示單元是用於驅動一或更多外部連接的顯示器。
以架構指令集的觀點而言,核心1302A-N可以是同質的或異質的;亦即,核心1302A-N中的二或更多核心能夠執行相同的指令集,而其它核心能夠僅執行指令集的子集合或不同的指令集。
圖14-17是例示性電腦架構的方塊圖。用於膝上型電腦、桌上型電腦、手持PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位訊號處理器(DSP)、圖形裝置、電動遊戲裝置、機上盒、微控制器、行動電話、可攜式媒體播放器、手持裝置、及各式各樣的其它電子裝置等領域中熟知的其它系統設計及配置也是適合的。一般而言,能夠包含此處所揭示的處理器及/或其它執行邏輯的多數種類的系統或電子裝置通常是適合的。
現在參考圖14,其顯示根據本發明的一實施例之系統1400的方塊圖。系統1400可以包含耦合至控制器集線
器1420之一或更多處理器1410、1415。在一實施例中,控制器集線器1420包含圖形記憶體控制器集線器(GMCH)1490及輸入/輸出集線器(IOH)1450(可以在分開的晶片上);GMCH 1490包含記憶體及圖形控制器,記憶體1440及共處理器1445耦合至記憶體及圖形控制器;IOH 1450將輸入/輸出(I/O)裝置1460耦合至GMCH 1490。替代地,記憶體及圖形控制器中之一或二者整合於處理器之內(如此處所述般),記憶體1440及共處理器1445直接耦合至處理器1410,以及,控制器集線器1420與IOH 1450在單一晶片中。
在圖14中以虛線顯示額外的處理器1415之可選性質。各處理器1410、1415包含此處所述的處理核心中之一或更多且可為處理器1300的某版本。
舉例而言,記憶體1440可以是動態隨機存取記憶體(DRAM)、相變記憶體(PCM)、或是二者的組合。對於至少一實施例而言,控制器集線器1420經由例如前側匯流排(FSB)等多點匯流排、例如快速路徑互連(QPI)等點對點介面、或是類似連接1495而與處理器1410、1415通訊。
在一實施例中,共處理器1445是特別用途的處理器,例如高輸貫量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器等等。在一實施例中,控制器集線器1420包含整合圖形加速器。
以包含架構、微架構、熱、耗電特徵等等度量計量光譜的觀點而言,實體源1410、1415之間有各種差異。
在一實施例中,處理器1410執行控制一般型式的資料處理運算的指令。嵌入於指令內的可為共處理器指令。處理器1410將這些共處理器指令視為應由附接的共處理器1445執行的型式。因此,處理器1410在共處理器匯流排或是其它互連上發佈這些共處理器指令(或是代表共處理器指令的控制訊號)給共處理器1445。共處理器1445接受及執行收到的共處理器指令。
現在參考圖15,其為根據本發明的實施例之第一更特定的例示性系統1500的方塊圖。如圖15中所示般,多處理器系統1500是點對點互連系統,以及包含經由點對點互連1550耦合的第一處理器1570和第二處理器1580。各處理器1570及1580可以是某版本的處理器1300。在本發明的一實施例中,處理器1570和1580分別是處理器1410和1415,而共處理器1538是共處理器1445。在另一實施例中,處理器1570及1580分別是處理器1410和共處理器1445。
處理器1570和1580顯示為分別包含整合記憶體控制器(IMC)單元1572和1582。處理器1570也包含點對點介面(P-P)1576和1578作為其匯流排控制器單元的一部份;類似地,第二處理器1580包含P-P介面1586和1588。處理器1570、1580使用P-P介面電路1578、1588而經由點對點(P-P)介面1550交換資訊。如圖15所示,IMC 1572及1582將處理器耦合至各別記憶體,亦即記憶體1532和記憶體1534,它們可以是本地附著至各別處理器
的主記憶體的部份。
處理器1570、1580使用點對點介面電路1576、1594、1586、1598,經由個別的P-P介面1552、1554而均可以與晶片組1590交換資訊。晶片組1590經由高性能圖形介面1539,可選擇地與共處理器1538交換資訊。在一實施例中,共處理器1538是特定用途處理器,例如高輸貫量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器等等。
共用的快取記憶體(未顯示)可以包含在任一處理器中或二處理器的外部、但經由P-P互連與處理器連接,以致於假使處理器處於低電力模式中時,任一或二處理器的本地快取資訊可以儲存在共用的快取記憶體中。
晶片組1590可以經由介面1596而耦合至第一匯流排1516。在一實施例中,第一匯流排1516可以是週邊元件互連(PCI)匯流排,或是例如PCI快速匯流排或其它第三代I/O互匯流排等匯流排,但是,本發明的範圍不侷限於此。
如圖15中所示般,各式各樣的I/O裝置1514與匯流排橋接器1518耦合至第一匯流排1516,匯流排橋接器1518耦合第一匯流排1516至第二匯流排1520。在一實施例中,例如處理器、高輸貫量MIC處理器、GPGPU、加速器(例如圖形加速器或是數位訊號處理(DSP)單元)、現場可編程閘陣列、或是任何其它處理器等一或更多增加的處理器1515耦合至第一匯流排1516。在一實施例中,第
二匯流排1520可以是低接腳數(LPC)匯流排。在一實施例中,各種裝置可以耦合至第二匯流排1520,舉例而言,包含鍵盤及/或滑鼠1522、通訊裝置1527及例如碟片驅動器或其它大量儲存裝置等包含指令/碼及資料1530的儲存單元1528。此外,音訊I/O 1524可以耦合至第二匯流排1520。注意,其它架構是可能的。舉例而言,取代圖15的點對點架構,系統可以實施多點匯流排或其它此類架構。
現在參考圖16,其顯示根據本發明的實施例之第二更特定例示性系統1600之方塊圖。圖15及16中類似的元件帶有類似的代號,以及,圖15的某些態樣在圖16中被省略,以免模糊圖16的其它態樣。
圖16顯示處理器1570、1580分別包含整合記憶體及I/O控制邏輯(CL)1572和1582。因此,CL 1572、1582包含整合記憶體控制器單元及包含I/O控制邏輯。圖16顯示不僅記憶體1532、1534耦合至CL 1572、1582,I/O裝置1614也耦合至控制邏輯1572、1582。舊制I/O裝置1615耦合至晶片組1590。
現在參考圖17,其顯示根據本發明的實施例之SoC 1700的方塊圖。圖13中類似的元件帶有類似的代號。而且,虛線框是關於更多進階的SoCs的可選特徵。在圖17中,互連單元1702耦合至:應用處理器1710,包含一或更多核心2002A-N及共用快取單元1306的集合;系統代理器單元1310;匯流排控制器單元1316;整合記憶體控
制器單元1314;包含整合圖形邏輯、影像處理器、音訊處理器、以及視訊處理器之一或更多共處理器1720的集合;靜態隨機存取記憶體(SRAM)單元1730;直接記憶體存取(DMA)單元1732;以及用於耦合至一或更多外部顯示器的顯示單元1740。在一實施例中,共處理器1720包含特定用途的處理器,例如網路或通訊處理器、壓縮引擎、GPGPU、高輸貫量MIC處理器、嵌入式處理器等等。
此處揭示的機構實施例可以以硬體、軟體、韌體或這些實施方式的結合來實施。本發明的實施例可以實施成在可編程系統上執行的電腦程式或程式碼,可編程系統包括至少一處理器、儲存系統(包含依電性及非依電性記憶體及/或儲存元件)、至少一輸入裝置、及至少一輸出裝置。
例如圖15中所示的碼1530等程式碼可以應用至輸入指令以執行此處所述的功能和產生輸出資訊。輸出資訊可以以已知方式應用至一或更多輸出裝置。為了此應用,處理系統包含具有例如數位訊號處理器(DSP)、微控制器、特定應用積體電路(ASIC)、或微處理器等處理器之任何系統。
程式碼可以以高階程式或物件導向的程式語言實施,以與處理系統通訊。假使需要時,程式碼也可以以組合或機器語言來實施。事實上,此處所述的機構在範圍上不侷限於任何特定的程式語言。在任何情形中,語言可以是編譯或解譯的語言。
至少一實施例的一或更多態樣可以由儲存在機器可讀
取的媒體上之代表指令實施,代表指令代表處理器內各種邏輯,代表指令由機器讀取時促使機器製造邏輯以執行此處所述的技術。稱為「IP核心」的這些代表可以儲存在實體的、機器可讀取的媒體並供應至各式各樣的客戶或製造設施,而載入至真正地製造邏輯的製造機器或處理器。
此機器可讀取的儲存媒體包含但不限於由機器或裝置製造或形成的物件之非暫時性、實體配置,包括例如硬碟等儲存媒體、包含軟碟、光碟、光碟唯讀記憶體(CD-ROM)、可後寫光碟(CD-RW)、及磁光碟等任何其它型式的碟片、例如唯讀記憶體(ROM)、例如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)等隨機存取記憶體(RAM)、可抹拭可編程唯讀記憶體(EPROM)、快閃記憶體、電可抹拭可編程唯讀記憶體(EEPROM)等半導體裝置、相位改變記憶體(PCM)、磁性或光學卡、或適用於儲存電子指令的任何其它型式的媒體。
因此,本發明的實施例也包含含有指令或含有設計資料之非暫時的、實體的機器可讀取的媒體,所述設計資料是例如硬體說明語言(HDL),其界定此處所述的結構、電路、裝置、處理器及/或系統特徵。這些實施例也意指程式產品。
在某些情形中,指令轉換器可以用以將指令從源指令集轉換至目標指令集。舉例而言,指令轉換器可以將指令
轉譯(例如,使用靜態二進位轉譯、包含動態編譯的動態二進位轉譯)、變形、模仿、或其它方式轉換至由核心處理的一或更多其它指令。指令轉換器可以以軟體、硬體、韌體、或其結合來實施。指令轉換器可以是在處理器上、不在處理器上、或部份在處理器上及部份不在處理器上。
圖18是方塊圖,根據本發明的實施例,比較使用軟體指令轉換器以將源指令集中的二進位指令轉換成目標指令集中的二進位指令。在顯示的實施例中,指令轉換器是軟體指令轉換器,但是,指令轉換器可以替代地以軟體、硬體、或其各種結合來實施。圖18顯示高階語言1802的程式,其可以使用x86編譯器1804編譯以產生x86二進位碼1806,二進位碼1806可以由具有至少一x86指令集核心1816的處理器原地執行。具有至少一x86指令集核心1816的處理器代表藉由共容地執行或其它方式地處理下述,而能夠與具有至少一x86指令集核心的Intel處理器執行實質上相同功能的任何處理器:(1)Intel x86指令集核心的指令集的實質部份,或是(2)以在具有至少一x86指令集核心的Intel處理器上運行為目的之應用程式或其它軟體的物件碼版本,以便取得與具有至少一x86指令集核心的Intel處理器實質上相同的結果。x86編譯器1804代表可以操作以產生x86二進位碼1806(例如,物件碼)之編譯器,x86二進位碼1806藉由或不藉由增加的鏈結處理,都可以在具有至少一x86指令集核心1816的處理器上執行。類似地,圖18顯示高階語言1802的程式,使用
替代指令集編譯器1808,可以將其編譯以產生替代指令集二進位碼1810,替代指令集二進位碼1810可以由不具有至少一x86指令集核心1814的處理器(例如,具有執行例如加州Sunnyvale的MIPS Technologies公司的MIPS指令集及/或加州Sunnyvale的ARM Holdings公司的ARM指令集之核心的處理器)原地執行。指令轉換器1812用以將x86二進位碼1806轉換成可以由不具有x86指令集核心1814的處理器原地執行的碼。由於能夠如此執行的指令轉換器難以製造,所以,此轉換的碼不太可能與替代指令集二進位碼1810相同;但是,所述轉換的碼將完成一般操作及由來自替代指令集的指令組成。因此,指令轉換器1812代表軟體、韌體、硬體或其組合,其經由仿真、模擬或任何其它處理而允許不具有x86指令集處理器或核心的處理器或其它電子裝置執行x86二進位碼1806。
圖3-10中任一圖說明的組件、特徵、及細節也可選擇地用於圖1-2中的任一圖中。此外,用於此處所述的任何裝置之此處所述的組件、特徵、及細節也可選擇地用於及/或應用至在實施例中由及/或與此裝置執行的此處所述的任何方法。此處所述的任何處理器可以包含在此處揭示之任何電腦系統或其它系統中。在一態樣中,系統可以作為利用此處揭示的指令以用於封包處理相關活動之網路設備,舉例而言,交換機、路由器、其它網路設備(例如防火牆、監控程式等等),但是,本發明的範圍不侷限於此。在某些實施例中,指令具有此處揭示的指令格式之特
點或細節,但這並非必要。
在說明及申請專利範圍中,使用「連接」及/或「耦合」等詞與它們的衍生。這些詞並非要作為彼此的同義字。相反地,在實施例中,「連接」可用以表示二或更多元件是彼此直接實體及/或電接觸。「耦合」意指二或更多元件是彼此直接及/或間接接觸。但是,「耦合」也意指二或更多元件彼此未直接接觸但仍然彼此協力或互動。舉例而言,執行單元可以經由一或更多介入的組件而與暫存器及/或解碼單元相耦合。在圖式中,使用箭頭以顯示連接及耦合。
使用「及/或」等詞。如同此處所使用般,「及/或」意謂一或另一或是二者(例如,A及/或B意指A或B或是A及B)。
在上述說明中,揭示多數特定細節,以助於完整瞭解本發明的實施例。但是,不用這些特定細節中的某些細節,仍可實施其它實施例。本發明的範圍並非由上述特定實例決定而是僅由下述申請專利範圍決定。在其它情形中,以方塊圖形式及/或無細節地,顯示習知的電路、結構、裝置、及運算,以免模糊說明之瞭解。在被視為適當時,在多個圖中,除非另外指明,否則,重複代號、或代號的尾部,以標示選加地具有類似的或是相同的特徵之對應的或類似的元件。
某些運算可以由硬體組件執行以及可以以機器可執行的或電路可執行的指令具體實施,這些指令被用以促使及
/或造成依執行運算的指令編程的機器、電路或硬體組件(例如處理器、處理器的部份、電路等等)。運算也可以由硬體及軟體的結合選擇性地執行。處理器、機器、電路、或硬體包含特定的或特定別的電路或其它邏輯(例如,可能與韌體及/或軟體相結合之硬體),可操作以執行及/或處理機器指令及儲存結果以回應指令。
某些實施例包含製造物品(例如,電腦程式產品),製造物品包含機器可讀取的媒體。媒體包含機構,機構提供、儲存可由機器讀取的形式之資訊。機器可讀取的媒體提供及於其上儲存指令或指令序列,假使及/或由機器執行時,這些指令或指令序列可操作以促使機器執行此處所述的一或更多運算、方法、或技術及/或造成執行此處所述的一或更多運算、方法、或技術的機器。
在某些實施例中,機器可讀取的媒體包含非暫時的機器可讀取的儲存媒體。舉例而言,非暫時的機器可讀取的儲存媒體包含軟碟、光學儲存媒體、光碟、光學資料儲存裝置、CD-ROM、磁碟、磁光碟、唯讀記憶體(ROM)、可編程ROM(PROM)、可抹拭及可編程ROM(EPROM)、電可抹拭及可編程ROM(EEPROM)、隨機存取記憶體(RAM)、靜態RAM(SRAM)、動態RAM(DRAM)、快閃記憶體、相變記憶體、相變資料儲存材料、非依電性記憶體、非依電性資料儲存裝置、非暫時記憶體、非暫時資料儲存裝置、等等。非暫時機器可讀取的儲存媒體未由暫時傳播的訊號組成。在某些實施例中,儲存媒體包含實體媒體,實體媒
體是包含固態物質。
適當的機器實例包含但不限於一般用途處理器、特別用途處理器、數位邏輯電路、積體電路、等等。適當的機器之又其它實例包含電腦系統或是包含處理器、數位邏輯電路、或積體電路之其它電子裝置。這些電腦系統及電子裝置的實例包含但不限於桌上型電腦、膝上型電腦、筆記型電腦、平板電腦、易網機、智慧型電話、行動電話、伺服器、網路裝置(例如路由器及交換機)。行動網際網路裝置(MID)、媒體播放器、智慧型電視、桌上型易網機、機上盒、及電動玩具控制器。
舉例而言,在本說明書中述及的「一實施例」、「實施例」、「一或更多實施例」、「某些實施例」係表示特定特點包含在本發明的實施中但非必要。類似地,在說明中,為了使揭示流暢及助於瞭解各式各樣的發明態樣,各式各樣的特點群聚於單一實施例、圖式、或其說明中。但是,本揭示的方法不應被解釋成反應本發明要求比各申請專利範圍項中載述的特點還多的特點。相反地,如後述申請專利範圍所反應般,發明的態樣少於單一揭示的實施例之所有特點。因此,跟隨在詳細說明之後的申請專利範圍於此併入實施方式一節中,以各項述申請專利範圍依據它自己作為本發明的分別實施例。
下述實例關於其它實施例。在一或更多實施例中的任
意處可以使用實例中的細節。
實例1是處理器,包含多數緊縮資料暫存器、及解碼單元以將資料元件選擇及整合指令解碼。資料元件選擇及整合指令具有第一源緊縮資料運算元以及第二源運算元,第一源緊縮資料運算元會具有多數資料元件,第二源運算元會具有多數遮罩元件。第二源運算元的各遮罩元件會對應於在相同的相對位置中之第一源緊縮資料運算元的不同資料元件。處理器也包含與解碼單元耦合的執行單元。執行單元會將結果緊縮資料運算元儲存在資料元件選擇及整合指令所標示之目的地儲存位置中,以回應資料元件選擇及整合指令。結果緊縮資料運算元會包含對應於一起整合在結果緊縮資料運算元的一部份中的第二源運算元之未被遮罩的遮罩元件之第一源緊縮資料運算元的所有資料元件。
實例2包含實例1的處理器,其中,解碼單元將會具有立即數的指令解碼作為會具有遮罩元件的第二源運算元,其中,遮罩元件是遮罩位元。
實例3包含實例1的處理器,其中,解碼單元會將具有第二源運算元的指令解碼,第二源運算元會是處理器的緊縮資料運算遮罩暫存器組的緊縮資料運算遮罩暫存器。而且,選擇性地,處理器的指令集的多數其它指令指明緊縮資料運算遮罩暫存器組之提供預測運算元的暫存器。
實例4包含實例1的處理器,其中,解碼單元會將具有第二源運算元的指令解碼,第二源運算元的指令會具有
多數遮罩元件,多數遮罩元件是遮罩位元。
實例5包含實例1的處理器,其中,解碼單元會將具有第二源運算元的指令解碼,第二源運算元的指令會是緊縮資料運算元,以及,其中,遮罩元件會是遮罩資料元件。
實例6包含實例1的處理器,其中,執行單元會儲存結果緊縮資料運算元以回應指令,結果緊縮資料運算元會包含一起整合於結果緊縮資料運算元的最低有效部份中且依相同於在第一源緊縮資料運算元中的次序之該所有資料元件。
實例7包含實例1的處理器,其中,執行單元會儲存結果緊縮資料運算元以回應指令,結果緊縮資料運算元會包含一起整合於結果緊縮資料運算元的最高有效部份中且依相同於在第一源緊縮資料運算元中的次序之該所有資料元件。
實例8包含實例1的處理器,其中,執行單元會儲存結果緊縮資料運算元以回應指令,結果緊縮資料運算元會具有整合的資料元件,整合的資料元件會省略對應於第二源運算元的被遮蔽掉的遮罩元件之第一源緊縮資料運算元的所有資料元件。而且,選擇性地,第一源緊縮資料運算元會具有對應於被遮蔽掉的遮罩元件之至少一資料元件於對應於未被遮蔽的遮罩元件的資料元件之間。
實例9包含實例1至8中任一實例的處理器,其中,該解碼單元會將具有一或更多位元以指示第一源緊縮資料
運算元的資料元件的尺寸之指令解碼。
實例10包含實例1至8中任一實例的處理器,其中,解碼單元會將具有第一源緊縮資料運算元的指令解碼,第一源緊縮資料運算元會具有至少128位元的位元寬度以及選擇性地具有選自多數8位元資料元件及多數16位元資料元件之多數資料元件。而且,選擇性地,目的地儲存位置包含處理器的緊縮資料暫存器。
實例11包含實例1至8中任一實例的處理器,其中,解碼單元會將具有運算碼的指令解碼,運算碼是指示不管第一源緊縮資料運算元中的資料元件的任何特定配置、及不管第二源運算元中的遮罩元件的任何特定配置,對應於第二源運算元的未被遮蔽的遮罩元件之第一源緊縮資料運算元的該所有資料元件仍會一起整合於結果緊縮資料運算元的部份中。
實例12包含實例1至8中任一實例的處理器,其中,處理器包含一般用途的處理器。而且,選擇性地,目的地儲存位置包含處理器的緊縮資料暫存器。
實例13是處理器中的方法,包含接收資料元件選擇及整合指令。資料元件選擇及整合指令具有第一源緊縮資料運算元以及第二源運算元,第一源緊縮資料運算元具有多數資料元件,第二源運算元會具有多數遮罩元件。第二源運算元的各遮罩元件會對應於在相同的相對位置中之第一源緊縮資料運算元的不同資料元件。方法也包含將結果緊縮資料運算元儲存在目的地儲存位置中,以回應資料元
件選擇及整合指令。目的地儲存位置由資料元件選擇及整合指令標示。結果緊縮資料運算元包含對應於一起整合在結果緊縮資料運算元的一部份中的第二源運算元之未被遮蔽的遮罩元件之第一源緊縮資料運算元的所有資料元件。
實例14包含實例13的方法,其中,接收包含接收具有立即數的指令作為具有遮罩元件的第二源運算元。
實例15包含實例13的方法,其中,接收包含接收具有第二源運算元的指令,第二源運算元是用於預測的緊縮資料運算遮罩暫存器專用組的緊縮資料運算遮罩暫存器。
實例16包含實例13的方法,又包含存取具有遮罩位元作為遮罩元件之第二源運算元。
實例17包含實例13的方法,其中,接收包含接收具有一或更多位元以指示第一源緊縮資料運算元的資料元件的尺寸之指令。
實例18包含實例13的方法,其中,接收包含接收標示具有至少128位元以及選擇性地包含8位元資料元件及16位元資料元件中之一的資料元件之第一源緊縮資料運算元。而且,選擇性地,儲存包含儲存具有一起整合於結果緊縮資料運算元的最低有效部份中且依相同於在第一源緊縮資料運算元中出現的次序之該所有資料元件之結果緊縮資料運算元。
實例19包含實例13的方法,又包含從網路接收封包,以及將一部份封包儲存作為第一源緊縮資料運算元。方法也選擇性地包含封包的協定,以及根據封包協定的解
碼而選擇性地決定該部份封包中流量位元組的位置。方法也選擇性地包含儲存用於流量位元組中的各位元組之第二源運算元中未被遮蔽的遮罩元件,以及儲存用於該部份的封包中的其它位元組之第二源運算元中被遮蔽掉的元件。
實例20包含實例13的方法,其中,第一源緊縮資料運算元具有來自從網路接收的封包之資料元件。選擇地,方法也包含對結果緊縮資料運算元的整合的資料元件執行密碼操作。
實例21是處理指令的系統,包含互連、及與互連耦合的處理器。處理器會接收資料元件選擇及整合指令,資料元件選擇及整合指令會具有第一源緊縮資料運算元,第一源緊縮資料運算元會具有多數資料元件。指令會具有第二源運算元,第二源運算元會具有多數遮罩元件。第二源運算元的各遮罩元件會對應於在相同的相對位置中之第一源緊縮資料運算元的不同資料元件。指令也指示目的地儲存位置。處理器會將結果緊縮資料運算元儲存在目的地儲存位置中,以回應指令。結果緊縮資料運算元包含對應於一起整合在結果緊縮資料運算元的一部份中的第二源運算元之未被遮蔽的遮罩元件之第一源緊縮資料運算元的所有資料元件。系統也包含與互連耦合之動態隨機存取記憶體(DRAM)。DRAM儲存協定解碼指令集,指令集當由處理器執行時會促使處理器執行包含解碼第一網路封包的協定、及產生第二源運算元以不遮蔽儲存於第一源緊縮資料運算元中的第二網路封包的標頭的至少一部份中的流量元
件及遮蔽非流量元件等運算。
實例22包含實例21的系統21,其中,第二源運算元包含立即數。
實例23是製造的物件,包含非暫時的機器可讀取的儲存媒體。非暫時的機器可讀取的儲存媒體儲存資料元件選擇及整合指令。指令會具有第一源緊縮資料運算元以及第二源運算元,第一源緊縮資料運算元會具有多數資料元件,第二源運算元會具有多數遮罩元件。第二源運算元的各遮罩元件會對應於在相同的相對位置中之第一源緊縮資料運算元的不同資料元件。指令會指示目的地儲存位置。指令假使由機器執行時會促使機器執行包含將結果緊縮資料運算元儲存在目的地儲存位置中等運算。結果緊縮資料運算元會包含對應於一起整合在結果緊縮資料運算元的一部份中的第二源運算元之未被遮蔽的遮罩元件之第一源緊縮資料運算元的所有資料元件。
實例24包含實例23的製造的物件,其中,第二源運算元是用於預測的緊縮資料運算遮罩暫存器專用組的緊縮資料運算遮罩暫存器。
實例25是處理器或其它設備,會操作以執行實例13至20中任一實例的方法。
實例26是處理器或其它設備,包含用於執行實例13至20中任一實例的方法。
實例27是處理器或其它設備,包含用於執行實例13至20中任一實例的方法之模組。
實例28是處理器,包含用於執行實例13至20中任一實例的方法之模組及/或單元及/或邏輯及/或電路及/或機構之任何組合。
實例29是製造的物件,包含選擇地非暫時機器可讀取的媒體,所述媒體選擇地儲存或以其它方式提供指令,所述指令假使及/或當由處理器、電腦系統、電子裝置、或其它機器執行時,會操作以促使機器執行實例13至20中任一實例的方法。
實例30是電腦系統、其它電子裝置、或其它設備,包含匯流排或其它互連、與互連耦合的實例1至12中任一實例的處理器、以及與互連耦合的選自動態隨機存取記憶體(DRAM)、網路介面、圖形晶片、無線通訊晶片、全球行動通訊系統(GSM)天線、相變記憶體、及攝影機之至少一組件。
實例31是實質上如此處所述的處理器或設備。
實例32是會操作以執行實質上如此處所述的任何方法之處理器或其它設備。
實例33是會操作以執行實質上如此處所述的任何資料元件選擇及整合指令之處理器或其它設備。
實例34是處理器或其它設備,包含解碼單元以將第一指令集解碼。解碼單元會接收仿真第一指令之第一指令集的一或更多指令。第一指令可為實質上如此處所述的任何資料元件選擇及整合指令,以及會具有第二不同的指令集。處理器或其它設備也包含與解碼單元耦合的一或更多
執行單元以執行第一指令集的一或更多指令。一或更多執行單元會將結果儲存在目的地中以回應第一指令集的一或更多指令。結果包含實質上如此處所述的資料元件選擇及整合指令之任何結果。
實例35是電腦系統或其它電子裝置,包含處理器,處理器具有解碼單元以將第一指令集的指令解碼。處理器也具有與一或更多執行單元。電子裝置也包含與處理器耦合的儲存裝置。儲存裝置會儲存第一指令,第一指令可為實質上如此處所述的任何資料元件選擇及整合指令,以及會具有第二不同的指令集。儲存裝置也會儲存指令以將第一指令轉換成第一指令集的一或更多指令。第一指令集的一或更多指令當由處理器執行時會促使處理器將結果儲存在目的地中。結果包含實質上如此處所述的資料元件選擇及整合指令之任何結果。
100‧‧‧處理器
102‧‧‧整合指令
104‧‧‧第二源運算元
106‧‧‧解碼單元
108‧‧‧執行單元
110‧‧‧緊縮資料暫存器
112‧‧‧第一源緊縮資料運算元
114‧‧‧緊縮資料運算元
116‧‧‧源緊縮資料運算遮罩
118‧‧‧緊縮資料運算遮罩暫存器
119‧‧‧暫存器
Claims (26)
- 一種處理器,包括:多數緊縮資料暫存器;解碼單元,用以解碼資料元件選擇及整合指令,該資料元件選擇及整合指令具有第一源緊縮資料運算元,該第一源緊縮資料運算元具有多數資料元件,以及該資料元件選擇及整合指令具有第二源運算元,該第二源運算元具有多數遮罩元件,其中,該第二源運算元的各遮罩元件對應於在相同的相對位置中之該第一源緊縮資料運算元的不同資料元件;以及,執行單元,與該解碼單元耦合,該執行單元回應該資料元件選擇及整合指令,將結果緊縮資料運算元儲存在該資料元件選擇及整合指令所指示之目的地儲存位置中,該結果緊縮資料運算元包含對應於一起整合在該結果緊縮資料運算元的最低有效部份中的該第二源運算元之未被遮蔽的遮罩元件之第一源緊縮資料運算元的所有資料元件,其中使用該最低有效部份來儲存該所有資料元件係對該資料元件選擇及整合指令的運算碼是隱含的,且該執行單元回應該資料元件選擇及整合指令,儲存指示該第一源緊縮資料運算元之被所述一起整合的該所有資料元件的數量的值。
- 如申請專利範圍第1項的處理器,其中,該解碼單元用以解碼該指令為令一立即數的該指令解碼作為具有該等遮罩元件的該第二源運算元,且其中,該等遮罩元件 是遮罩位元。
- 如申請專利範圍第1項的處理器,其中,該解碼單元用以解碼該指令為令該第二源運算元為該處理器的緊縮資料運算遮罩暫存器組的緊縮資料運算遮罩暫存器,其中,該處理器的指令集的多數其它指令指明該緊縮資料運算遮罩暫存器組之提供預測運算元的暫存器。
- 如申請專利範圍第1項的處理器,其中,該解碼單元用以解碼具有該第二源運算元的該指令,該第二源運算元的指令具有該多數遮罩元件,該多數遮罩元件是遮罩位元。
- 如申請專利範圍第1項的處理器,其中,該解碼單元係用以解碼具有第二源運算元的指令,該第二源運算元的指令是緊縮資料運算元,以及,其中,該遮罩元件是遮罩資料元件。
- 如申請專利範圍第1項的處理器,其中,該執行單元用以儲存該結果緊縮資料運算元以回應該指令,該結果緊縮資料運算元包含一起整合於該結果緊縮資料運算元的該最低有效部份中且依同於在該第一源緊縮資料運算元中的次序之該所有資料元件。
- 如申請專利範圍第1項的處理器,其中,該執行單元用以儲存該結果緊縮資料運算元以回應該指令,該結果緊縮資料運算元具有整合的資料元件,該整合的資料元件省略對應於該第二源運算元的被遮蔽掉的遮罩元件之該第一源緊縮資料運算元的所有資料元件,以及,其中,該 第一源緊縮資料運算元具有對應於被遮蔽掉的遮罩元件之至少一資料元件於對應於未被遮蔽的遮罩元件的資料元件之間。
- 如申請專利範圍第1項的處理器,其中,該解碼單元會將用以解碼具有一或更多位元以指示該第一源緊縮資料運算元的該等資料元件的尺寸之該指令。
- 如申請專利範圍第1項的處理器,其中,該解碼單元用以解碼具有該第一源緊縮資料運算元的該指令,該第一源緊縮資料運算元具有至少128位元的位元寬度以及具有選自多數8位元資料元件及多數16位元資料元件之多數資料元件,以及,其中,該目的地儲存位置包括該處理器的緊縮資料暫存器。
- 如申請專利範圍第1項的處理器,其中,該解碼單元用以解碼具有該運算碼的該指令,該運算碼指示不管該第一源緊縮資料運算元中的資料元件的任何特定配置、及不管該第二源運算元中的遮罩元件的任何特定配置,對應於該第二源運算元的未被遮蔽的遮罩元件之該第一源緊縮資料運算元的該所有資料元件將被所述一起整合於該結果緊縮資料運算元的該最低有效部份中。
- 如申請專利範圍第1項的處理器,其中,該處理器包括一般用途的處理器,以及,其中,該目的地儲存位置包括該處理器的緊縮資料暫存器。
- 如申請專利範圍第1項的處理器,其中,該執行單元回應該資料元件選擇及整合指令,將指示該數量的該 值儲存於該處理器的通用暫存器中。
- 一種處理器中的方法,包括:接收資料元件選擇及整合指令,該資料元件選擇及整合指令具有第一源緊縮資料運算元,該第一源緊縮資料運算元具有多數資料元件,以及該資料元件選擇及整合指令具有第二源運算元,該第二源運算元具有多數遮罩元件,該第二源運算元的各遮罩元件對應於在相同的相對位置中之該第一源緊縮資料運算元的不同資料元件;以及,將結果緊縮資料運算元儲存在目的地儲存位置中,以回應該資料元件選擇及整合指令,該目的地儲存位置由該資料元件選擇及整合指令指示,該結果緊縮資料運算元包含對應於一起整合在該結果緊縮資料運算元的最低有效部份中的該第二源運算元之未被遮蔽的遮罩元件之該第一源緊縮資料運算元的所有資料元件,其中使用該最低有效部份來儲存該所有資料元件係對該資料元件選擇及整合指令的運算碼是隱含的;且儲存指示該第一源緊縮資料運算元之被所述一起整合的該所有資料元件的數量的值。
- 如申請專利範圍第13項的方法,其中,接收包括接收具有立即數的該指令作為具有該等遮罩元件的該第二源運算元。
- 如申請專利範圍第13項的方法,其中,接收包括接收具有該第二源運算元的該指令,該第二源運算元是用於預測的緊縮資料運算遮罩暫存器專用組的緊縮資料運 算遮罩暫存器。
- 如申請專利範圍第13項的方法,又包括存取具有遮罩位元作為該等遮罩元件之該第二源運算元。
- 如申請專利範圍第13項的方法,其中,接收包括接收具有一或更多位元以指示該第一源緊縮資料運算元的該等資料元件的尺寸之該指令。
- 如申請專利範圍第13項的方法,其中,接收包括接收指示具有至少128位元以及包含8位元資料元件及16位元資料元件中之一的資料元件之該第一源緊縮資料運算元,以及,其中,儲存包括儲存具有一起整合於該結果緊縮資料運算元的最低有效部份中且依同於在該第一源緊縮資料運算元中出現的次序之該所有資料元件之該結果緊縮資料運算元。
- 如申請專利範圍第13項的方法,又包括:從網路接收封包;將該封包的一部份儲存作為該第一源緊縮資料運算元;將該封包的協定解碼;根據該封包的該協定的該解碼,決定該封包的該一部份中流量位元組(flow bytes)的位置;儲存用於該流量位元組中的各位元組之該第二源運算元中未被遮蔽的遮罩元件,以及儲存用於該封包的該一部份中的其它位元組之該第二源運算元中被遮蔽掉的元件。
- 如申請專利範圍第13項的方法,其中,該第一 源緊縮資料運算元具有來自從網路接收的封包之資料元件,且又包括對該結果緊縮資料運算元的該整合的資料元件執行密碼操作。
- 如申請專利範圍第13項的方法,其中,回應該資料元件選擇及整合指令,儲存指示該數量的該值包含將指示該數量的該值儲存於該處理器的通用暫存器中。
- 一種處理指令的系統,包括:互連;處理器,與該互連耦合,該處理器接收資料元件選擇及整合指令,該資料元件選擇及整合指令會具有第一源緊縮資料運算元及第二源運算元,該第一源緊縮資料運算元具有多數資料元件,該第二源運算元具有多數遮罩元件,其中,該第二源運算元的各遮罩元件對應於在相同的相對位置中之該第一源緊縮資料運算元的不同資料元件,以及,該指令指示目的地儲存位置,該處理器將結果緊縮資料運算元儲存在該目的地儲存位置中,以回應指令,該結果緊縮資料運算元包含對應於一起整合在該結果緊縮資料運算元的最低有效部份中的該第二源運算元之未被遮蔽的遮罩元件之該第一源緊縮資料運算元的所有資料元件;以及動態隨機存取記憶體(DRAM),與該互連耦合,該DRAM儲存協定解碼指令集,該指令集當由該處理器執行時會促使該處理器執行包括下述的操作:解碼第一網路封包的協定;以及 產生該第二源運算元以不遮蔽儲存於該第一源緊縮資料運算元中的第二網路封包的標頭的至少一部份中的流量元件以及遮蔽非流量元件。
- 如申請專利範圍第22項的系統,其中,該第二源運算元包括立即數。
- 如申請專利範圍第22項的系統,其中,使用該最低有效部份來儲存該所有資料元件係對該資料元件選擇及整合指令的運算碼是隱含的;且儲存指示該第一源緊縮資料運算元之被所述一起整合的該所有資料元件的數量的值。
- 一種製造的物件,包含非暫時的機器可讀取的儲存媒體,該非暫時的機器可讀取的儲存媒體儲存指令,其包括資料元件選擇及整合指令,該指令具有第一源緊縮資料運算元以及第二源運算元,該第一源緊縮資料運算元具有多數資料元件,該第二源運算元具有多數遮罩元件,該第二源運算元的各遮罩元件對應於在相同的相對位置中之第一源緊縮資料運算元的不同資料元件,以及,該指令指示目的地儲存位置,以及該指令假使由機器執行時會促使機器執行包含下述的操作:將結果緊縮資料運算元儲存在目的地儲存位置,該結果緊縮資料運算元包含對應於一起整合在該結果緊縮資料運算元的一部份中的該第二源運算元之未被遮蔽的遮罩元件之第一源緊縮資料運算元的所有資料元件,其中使用該最低有效部份來儲存該所有資料元件係對該資料元件選擇 及整合指令的運算碼是隱含的;且儲存指示該第一源緊縮資料運算元之被所述一起整合的該所有資料元件的數量的值。
- 如申請專利範圍第25項的製造的物件,其中,該第二源運算元是用於預測的緊縮資料運算遮罩暫存器專用組的緊縮資料運算遮罩暫存器。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/491,548 US10133570B2 (en) | 2014-09-19 | 2014-09-19 | Processors, methods, systems, and instructions to select and consolidate active data elements in a register under mask into a least significant portion of result, and to indicate a number of data elements consolidated |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201629793A TW201629793A (zh) | 2016-08-16 |
TWI598747B true TWI598747B (zh) | 2017-09-11 |
Family
ID=55525804
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104126393A TWI598747B (zh) | 2014-09-19 | 2015-08-13 | 資料元件選擇及整合處理器、方法、系統及指令 |
Country Status (7)
Country | Link |
---|---|
US (1) | US10133570B2 (zh) |
EP (1) | EP3195111B1 (zh) |
JP (1) | JP6465527B2 (zh) |
KR (1) | KR20170035974A (zh) |
CN (1) | CN106575216B (zh) |
TW (1) | TWI598747B (zh) |
WO (1) | WO2016043908A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI806804B (zh) * | 2021-12-23 | 2023-06-21 | 國立陽明交通大學 | 具有自單一puf電路來源所得多重硬體簽章之裝置及相關方法、系統與應用 |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9606961B2 (en) * | 2012-10-30 | 2017-03-28 | Intel Corporation | Instruction and logic to provide vector compress and rotate functionality |
US10133570B2 (en) | 2014-09-19 | 2018-11-20 | Intel Corporation | Processors, methods, systems, and instructions to select and consolidate active data elements in a register under mask into a least significant portion of result, and to indicate a number of data elements consolidated |
US9971686B2 (en) | 2015-02-23 | 2018-05-15 | Intel Corporation | Vector cache line write back processors, methods, systems, and instructions |
US10162752B2 (en) * | 2016-09-22 | 2018-12-25 | Qualcomm Incorporated | Data storage at contiguous memory addresses |
US10891131B2 (en) * | 2016-09-22 | 2021-01-12 | Intel Corporation | Processors, methods, systems, and instructions to consolidate data elements and generate index updates |
US11232347B2 (en) * | 2017-04-17 | 2022-01-25 | Cerebras Systems Inc. | Fabric vectors for deep learning acceleration |
GB2568230B (en) * | 2017-10-20 | 2020-06-03 | Graphcore Ltd | Processing in neural networks |
CN111381876B (zh) * | 2018-12-28 | 2022-12-09 | 上海寒武纪信息科技有限公司 | move指令译码方法、数据移动方法、译码器及数据存取装置 |
US11379420B2 (en) * | 2019-03-08 | 2022-07-05 | Nvidia Corporation | Decompression techniques for processing compressed data suitable for artificial neural networks |
US11720159B2 (en) * | 2019-07-01 | 2023-08-08 | Texas Instruments Incorporated | Unified bus architecture for a voltage regulator |
CN112559037B (zh) * | 2019-09-25 | 2024-04-12 | 阿里巴巴集团控股有限公司 | 一种指令执行方法、单元、装置及系统 |
CN114416180B (zh) * | 2022-03-28 | 2022-07-15 | 腾讯科技(深圳)有限公司 | 向量数据的压缩方法、向量数据的解压方法、装置及设备 |
CN114579583B (zh) * | 2022-05-05 | 2022-08-05 | 杭州太美星程医药科技有限公司 | 表单数据的处理方法、装置和计算机设备 |
CN115098165B (zh) * | 2022-06-13 | 2023-09-08 | 昆仑芯(北京)科技有限公司 | 数据处理方法、装置、芯片、设备及介质 |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6052769A (en) | 1998-03-31 | 2000-04-18 | Intel Corporation | Method and apparatus for moving select non-contiguous bytes of packed data in a single instruction |
US6484255B1 (en) * | 1999-09-20 | 2002-11-19 | Intel Corporation | Selective writing of data elements from packed data based upon a mask using predication |
US6446198B1 (en) * | 1999-09-30 | 2002-09-03 | Apple Computer, Inc. | Vectorized table lookup |
US7370352B2 (en) * | 2001-09-06 | 2008-05-06 | Intel Corporation | Techniques for storing and retrieving security information corresponding to cryptographic operations to support cryptographic processing for multiple network traffic streams |
US20040054877A1 (en) | 2001-10-29 | 2004-03-18 | Macy William W. | Method and apparatus for shuffling data |
US9069547B2 (en) | 2006-09-22 | 2015-06-30 | Intel Corporation | Instruction and logic for processing text strings |
US20120216011A1 (en) | 2011-02-18 | 2012-08-23 | Darryl Gove | Apparatus and method of single-instruction, multiple-data vector operation masking |
US20120254592A1 (en) | 2011-04-01 | 2012-10-04 | Jesus Corbal San Adrian | Systems, apparatuses, and methods for expanding a memory source into a destination register and compressing a source register into a destination memory location |
US20120254589A1 (en) | 2011-04-01 | 2012-10-04 | Jesus Corbal San Adrian | System, apparatus, and method for aligning registers |
US9280342B2 (en) * | 2011-07-20 | 2016-03-08 | Oracle International Corporation | Vector operations for compressing selected vector elements |
US20140208065A1 (en) | 2011-12-22 | 2014-07-24 | Elmoustapha Ould-Ahmed-Vall | Apparatus and method for mask register expand operation |
CN104025024B (zh) * | 2011-12-22 | 2018-07-17 | 英特尔公司 | 打包数据操作掩码移位处理器、方法及系统 |
CN107220027A (zh) | 2011-12-23 | 2017-09-29 | 英特尔公司 | 用于执行掩码位压缩的系统、装置以及方法 |
CN104011649B (zh) | 2011-12-23 | 2018-10-09 | 英特尔公司 | 用于在simd/向量执行中传播有条件估算值的装置和方法 |
US20130326196A1 (en) * | 2011-12-23 | 2013-12-05 | Elmoustapha Ould-Ahmed-Vall | Systems, apparatuses, and methods for performing vector packed unary decoding using masks |
WO2013101124A1 (en) | 2011-12-29 | 2013-07-04 | Intel Corporation | Packed data operation mask comparison processors, methods, systems, and instructions |
CN104011652B (zh) * | 2011-12-30 | 2017-10-27 | 英特尔公司 | 打包选择处理器、方法、系统和指令 |
EP2798476B1 (en) | 2011-12-30 | 2018-09-19 | Intel Corporation | Vector frequency expand instruction |
US20140059271A1 (en) | 2012-08-27 | 2014-02-27 | Apple Inc. | Fast execution of flush commands using adaptive compaction ratio |
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 |
US9606961B2 (en) * | 2012-10-30 | 2017-03-28 | Intel Corporation | Instruction and logic to provide vector compress and rotate functionality |
US9411593B2 (en) | 2013-03-15 | 2016-08-09 | Intel Corporation | Processors, methods, systems, and instructions to consolidate unmasked elements of operation masks |
US9256631B2 (en) * | 2013-07-31 | 2016-02-09 | Oracle International Corporation | Building a hash table using vectorized instructions |
US20150186136A1 (en) | 2013-12-27 | 2015-07-02 | Tal Uliel | Systems, apparatuses, and methods for expand and compress |
US10133570B2 (en) | 2014-09-19 | 2018-11-20 | Intel Corporation | Processors, methods, systems, and instructions to select and consolidate active data elements in a register under mask into a least significant portion of result, and to indicate a number of data elements consolidated |
-
2014
- 2014-09-19 US US14/491,548 patent/US10133570B2/en active Active
-
2015
- 2015-08-13 TW TW104126393A patent/TWI598747B/zh not_active IP Right Cessation
- 2015-08-19 EP EP15841425.0A patent/EP3195111B1/en active Active
- 2015-08-19 CN CN201580044339.4A patent/CN106575216B/zh active Active
- 2015-08-19 JP JP2017506911A patent/JP6465527B2/ja active Active
- 2015-08-19 WO PCT/US2015/045827 patent/WO2016043908A1/en active Application Filing
- 2015-08-19 KR KR1020177004342A patent/KR20170035974A/ko not_active Application Discontinuation
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI806804B (zh) * | 2021-12-23 | 2023-06-21 | 國立陽明交通大學 | 具有自單一puf電路來源所得多重硬體簽章之裝置及相關方法、系統與應用 |
Also Published As
Publication number | Publication date |
---|---|
JP6465527B2 (ja) | 2019-02-06 |
KR20170035974A (ko) | 2017-03-31 |
TW201629793A (zh) | 2016-08-16 |
EP3195111B1 (en) | 2019-09-25 |
JP2017528810A (ja) | 2017-09-28 |
WO2016043908A1 (en) | 2016-03-24 |
US20160085547A1 (en) | 2016-03-24 |
EP3195111A4 (en) | 2018-05-23 |
CN106575216B (zh) | 2019-12-10 |
US10133570B2 (en) | 2018-11-20 |
CN106575216A (zh) | 2017-04-19 |
EP3195111A1 (en) | 2017-07-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI598747B (zh) | 資料元件選擇及整合處理器、方法、系統及指令 | |
CN107094369B (zh) | 用于提供simd sm3密码散列函数的指令和逻辑 | |
CN108351779B (zh) | 用于安全指令执行流水线的指令和逻辑 | |
EP3391195B1 (en) | Instructions and logic for lane-based strided store operations | |
RU2637463C2 (ru) | Команда и логика для обеспечения функциональных возможностей цикла защищенного хеширования с шифром | |
CN104484284B (zh) | 用于为安全飞地页面高速缓存提供高级分页能力的指令和逻辑 | |
CN107092465B (zh) | 用于提供向量混合和置换功能的指令和逻辑 | |
CN108292229B (zh) | 用于重新出现的相邻聚集的指令和逻辑 | |
EP3394723B1 (en) | Instructions and logic for lane-based strided scatter operations | |
CN108228960B (zh) | 用于熔丝验证的基于Simon的散列 | |
TWI610233B (zh) | 用於提供向量分組元組交叉比較功能的方法、處理器和處理系統 | |
EP3391236A1 (en) | Instructions and logic for get-multiple-vector-elements operations | |
EP3391234A1 (en) | Instructions and logic for set-multiple-vector-elements operations | |
US11874776B2 (en) | Cryptographic protection of memory attached over interconnects | |
CN108292271B (zh) | 用于向量置换的指令和逻辑 | |
US20170177351A1 (en) | Instructions and Logic for Even and Odd Vector Get Operations | |
US10705845B2 (en) | Instructions and logic for vector bit field compression and expansion | |
WO2023048875A1 (en) | Circuitry and methods for accelerating streaming data-transformation operations | |
CN117940895A (zh) | 具有可编程直接存储器访问和扩展防护/转储清除操作的指令集架构 | |
CN106293631B (zh) | 用于提供向量分散操作和聚集操作功能的指令和逻辑 | |
US20170177358A1 (en) | Instruction and Logic for Getting a Column of Data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |