TWI475480B - 向量頻率壓縮指令 - Google Patents
向量頻率壓縮指令 Download PDFInfo
- Publication number
- TWI475480B TWI475480B TW101148744A TW101148744A TWI475480B TW I475480 B TWI475480 B TW I475480B TW 101148744 A TW101148744 A TW 101148744A TW 101148744 A TW101148744 A TW 101148744A TW I475480 B TWI475480 B TW I475480B
- Authority
- TW
- Taiwan
- Prior art keywords
- vector
- field
- value
- destination
- instruction
- Prior art date
Links
- 239000013598 vector Substances 0.000 title claims description 239
- 238000007906 compression Methods 0.000 claims description 71
- 230000006835 compression Effects 0.000 claims description 71
- 238000000034 method Methods 0.000 claims description 14
- 238000003860 storage Methods 0.000 claims description 11
- 238000004519 manufacturing process Methods 0.000 claims description 8
- 239000000463 material Substances 0.000 claims description 6
- 230000015654 memory Effects 0.000 description 133
- 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 77
- 238000010586 diagram Methods 0.000 description 38
- 238000007667 floating Methods 0.000 description 17
- 238000012545 processing Methods 0.000 description 15
- 238000006243 chemical reaction Methods 0.000 description 10
- 235000012431 wafers Nutrition 0.000 description 10
- 230000006870 function Effects 0.000 description 9
- 239000003795 chemical substances by application Substances 0.000 description 8
- 238000004891 communication Methods 0.000 description 8
- 238000000605 extraction Methods 0.000 description 8
- 230000007704 transition Effects 0.000 description 8
- 230000008859 change Effects 0.000 description 7
- 230000036961 partial effect Effects 0.000 description 7
- 230000003321 amplification Effects 0.000 description 6
- 230000003416 augmentation Effects 0.000 description 6
- 230000000295 complement effect Effects 0.000 description 6
- 230000004907 flux Effects 0.000 description 6
- 238000003199 nucleic acid amplification method Methods 0.000 description 6
- 238000013519 translation Methods 0.000 description 6
- 238000013461 design Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 230000006837 decompression Effects 0.000 description 3
- 238000006073 displacement reaction Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000002156 mixing Methods 0.000 description 3
- 230000002441 reversible effect Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000001052 transient effect Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000000873 masking effect Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 239000003607 modifier Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 230000001629 suppression Effects 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 230000001066 destructive effect Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000013507 mapping 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
- 230000008520 organization Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002829 reductive effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000001568 sexual effect Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 230000000007 visual 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/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/30025—Format conversion instructions, e.g. Floating-Point to Integer, decimal conversion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/46—Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6005—Decoder aspects
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)
- Advance Control (AREA)
- Complex Calculations (AREA)
Description
本發明之領域一般係有關電腦處理器架構,而更明確地,係有關向量頻率壓縮指令。
指令集,或指令集架構(ISA),為關於編程之電腦架構的部分,並可包括本機資料類型、指令、暫存器架構、定址模式、記憶體架構、中斷和例外處置、及外部輸入和輸出(I/O)。應注意術語「指令」一般於文中指的是巨集指令-其為提供給處理器以供執行-相對於微指令或微操作(micro-ops)-其係得自處理器之解碼器解碼巨集指令。指令集架構係不同於微架構,其為實施ISA之處理器的內部設計。具有不同微架構之處理器可共用一共同指令集。
指令集包括一或更多指令格式。既定的指令格式係界定各種欄位(位元之數目、位元之位置),以指明(除了別的以外)將履行之操作及該操作所將履行之運算元。既定指令係使用既定指令格式來表達並指明操作及運算元。指令流為指令之一特定序列,其中該序列中之各指令為一指令格式之指令的發生。
科學的、金融的、自動向量化的一般用途,RMS(識別、探勘、及合成),及視覺和多媒體應用(例如,2D/3D圖形、影像處理、視頻壓縮/解壓縮、聲音識別演算
法及音頻調處)經常需要對大量資料項目履行相同的操作(稱之為「資料平行化」)。單一指令多重資料(SIMD)指的是一種致使處理器對多重資料項目履行操作之指令的類型。SIMD技術特別適於其可將暫存器中之位元邏輯地劃分為數個固定大小的資料元件之處理器,每一資料元件代表分離的值。例如,64位元暫存器中之位元可被指明為來源運算元以便操作為四個分離的16位元資料元件,其每個代表一分離的16位元值。舉另一例,256位元暫存器中之位元可被指明為來源運算元以便操作為四個分離的64位元緊縮資料元件(四字元(Q)大小資料元件)、八個分離的32位元緊縮資料元件(雙字元(D)大小資料元件)、十六個分離的16位元緊縮資料元件(字元(W)大小資料元件)、或三十二個分離的8位元緊縮資料元件(位元組(B)大小資料元件)。此資料之類型被稱為緊縮資料類型或向量資料類型,而此資料類型之運算元被稱為緊縮資料運算元或向量運算元。換言之,緊縮資料項目或向量指的是緊縮資料元件之序列,而緊縮資料運算元或向量運算元為SIMD指令之來源或目的地運算元(亦稱為緊縮資料指令或向量指令)。
舉例而言,SIMD指令之一類型係指明單一向量操作以供用垂直方式履行於兩來源向量運算元來產生相同大小的目的地向量運算元(亦稱為結果向量運算元),具有相同的資料元件數,且依相同的資料元件順序。來源向量運算元中之資料元件被稱為來源資料元件,而目的地向量運
算元中之資料元件被稱為目的地或結果資料元件。這些來源向量運算元為相同大小且含有相同寬度的資料元件,而因此其含有相同的資料元件數。兩來源向量運算元中之相同位元位置中的來源資料元件形成資料元件對(亦稱為相應的資料元件;亦即,各來源運算元之資料元件位置0中的資料元件相應、各來源運算元之資料元件位置1中的資料元件相應,依此類推)。由SIMD指令所指明之操作被分離地履行於這些來源資料元件對之每一者,以產生匹配的結果資料元件數,而因此各來源資料元件對具有一相應的結果資料元件。因為操作是垂直的且因為結果向量運算元為相同的大小、具有相同的資料元件數、且結果資料元件依相同的資料元件順序被儲存為來源向量運算元,所以結果資料元件係位於如來源向量運算元中之其相應的來源資料元件對之結果向量運算元的相同位元位置中。除了SIMD指令之此範例類型外,有多種SIMD指令之其他類型(例如,僅具有一個或具有大於二個來源向量運算元者、以水平方式操作者、產生其為不同大小的結果向量運算元者、具有不同大小的資料元件者、及/或具有不同的資料元件順序者)。應理解術語「目的地向量運算元」(或目的地運算元)被定義為履行由指令所指明之操作的直接結果,包括將該目的地運算元儲存於某一位置(可為一暫存器或者於該指令所指明之記憶體位址上)以致其可由另一指令存取為來源運算元(藉由另一指令之該相同位置的指明)。
某些指令集架構容許多個向量及純量操作平行地完成,並更新指令集架構暫存器集。這些指令集架構可被制衡以實施壓縮/解壓縮指令及演算法,諸如基於運作長度編碼(RLE)之指令。
RLE是一種無損的資料壓縮形式,其中資料流中之資料的序列被壓縮在當那些序列含有一或更多組連續資料值時。取代將各資料元件儲存於該組連續資料值中,具有該值之單一元件被儲存,接續以一具有連續元件之計數的元件。此壓縮之形式在含有許多此類運行之資料上是最有用的。
例如,零為基的壓縮/解壓縮利用資料流中之經常發生的零。於某些資料類型中,特別是與圖形處理相關的資料,常有資料之顯著部分含有零之值,而(因此)有許多零之運行。基於零之RLE常被稱為零為基的壓縮。雖然其他的RLE技術可基於零以外的值,假如選擇其他RLE值將使壓縮受益的話。
於下列描述中,提出各種特定的細節。然而,應理解本發明之實施例可被實行而無需這些特定細節。於其他例子中,眾所周知的電路、結構及技術未被詳細地顯示以免混淆本描述之理解。
說明書中對於「一實施例」、「實施例」、「範例實施例」等參考係指示所描述之實施例可包括特定的特徵、
結構、或特性,但每一實施例可不一定包括該特定的特徵、結構、或特性。再者,此類用詞不一定指稱相同的實施例。此外,當配合一實施例而描述特定的特徵、結構、或特性時,認定其係落入熟悉本項技術人士之知識內,以影響配合其他實施例之此類特徵、結構、或特性(無論是否明確地描述)。
圖1顯示依據一實施例之向量頻率壓縮指令的範例執行。向量頻率壓縮指令係實施RLE以致一組來源資料元件係根據該組來源資料元件中所發生之預定值的順序出現而被壓縮。例如,在該組來源資料元件中之一列七個零可被編碼為零接著七以指示零之數目。
向量頻率壓縮指令100包括目的地運算元105及來源運算元115。向量頻率壓縮指令100屬於指令集架構,且一指令流內之指令100的每次「發生」將包括目的地運算元105及來源運算元115內之值。於此範例中,目的地運算元105和來源運算元115兩者為向量暫存器(諸如128、256、512位元暫存器)。向量暫存器可為具有16個32位元資料元件之zmm暫存器,然而,亦可使用其他的資料元件及暫存器大小,諸如xmm或ymm暫存器及16或64位元資料元件。因此,來源運算元115及目的地運算元105被顯示以16個資料元件,針對第一元件標示為ele[0],使用0指標標示法,其中第一元件位於0位置。各運算元之最後元件則被標示為ele[15]。
由來源運算元所指明之來源向量暫存器的內容包括多
個來源資料元件。如圖1中所示,於指標0上之來源資料元件含有值54。於指標1-7上之來源資料元件含有值0。於指標8-10上之來源資料元件含有值35。於指標11上之來源資料元件含有值12,於指標12上之來源資料元件含有值0,於指標13上之來源資料元件含有值15,及於指標14和15上之來源資料元件含有值0。
向量頻率壓縮指令100被顯示以壓縮含有值0之資料元件的發生。然而,可選擇地,向量頻率壓縮指令100可被實施以壓縮含有其他值之資料元件的發生。有選擇性運算元120顯示為即刻值,其可被編碼以應被壓縮之值。因此,120將代表應被壓縮之值。再者,向量頻率壓縮指令100被編碼以向量遮罩MASK 110,其指明哪些資料元件吻合應被壓縮之值以及哪些資料元件不吻合應被壓縮之值。MASK 110根據指令之操作而含有零或者一。於所示之實施例中,MASK 110含有一個一在相應於其不吻合應被壓縮之值的來源資料元件之元件中、及一個零在那些吻合應被壓縮之值(如該狀況可為零)的元件中。因此,MASK 110含有一個零於遮罩元件1-7、12、14及15中。
向量頻率壓縮指令100之操作可被描述以下列方式。當在MASK 110中遭遇一連串的零時,表示一列吻合值出現在來源資料元件中,則指令便計算MASK 110中之連續零的數目並將零之值插入其接續著下個位置中之計數的目的地105向量之當前位置中。在MASK 110中具有相應的一之來源運算元115中的值被複製入目的地105向量之當
前位置。
如圖1中所示,假如來源115包含資料元件15至0,含有下列值:0,0,15,0,12,35,35,35,0,0,0,0,0,0,0,54,則目的地105向量暫存器將包含下列值於資料元件11至0中:2,0,15,1,0,12,35,35,35,7,0,54。從元件0至元件15,來源115向量暫存器之第一元件將遭遇有一個1於MASK 110中,且54將被複製入目的地105向量暫存器之當前位置。接著一列七個零將被計算且值0至7將被複製入目的地105向量暫存器之下兩個位置。之後,值35,35,35,及12將被複製入目的地105向量暫存器之接下來位置。現在一列單0被遭遇以致0之壓縮實際上需要2元件以儲存僅一個單0。因此,一個0及1之計數被儲存於目的地105向量暫存器之接下來資料元件中。最後,一個15接著一個0及一個2被儲存於目的地105向量暫存器之接下來位置中,代表來源115向量暫存器之該15及最後兩個零。使用範例來源115向量暫存器,零為基的RLE將向量從16資料元件壓縮為12資料元件,其產生百分之25的節省。
本發明之實施例輸出目的地105向量暫存器之哪些元件被用於來源115向量暫存器的指示。於一實施例中,此包括設定一已使用的元件控制遮罩125中之值。目的地105向量暫存器中之各已使用的元件係符合已使用的元件控制遮罩125中之一個1。已使用的元件控制遮罩125可為變更用途的遮罩暫存器或特殊包括的遮罩暫存器。指令
100之進一步實施例容許已使用的元件控制遮罩125被選擇並編碼為指令之發生。於圖1中,元件11-0被設定以一個1於已使用的元件控制遮罩125中,以指示目的地105向量暫存器中之哪些元件被使用。於另一實施例中,一已使用的元件計數130被設定以指示目的地105向量暫存器中之已使用元件的數目,於此例中係以值12。如同已使用的元件控制遮罩125,已使用的元件計數130可被設定於特殊暫存器中或者於變更用途的一般暫存器中。再者,指令100之實施例容許目的地、記憶體或暫存器被編碼於已使用的元件計數130。雖然顯示為計算已使用的資料元件,其相反方式亦可被使用於指令之其他實施例中。明確地,明確地,已使用的元件控制遮罩及已使用的元件計數可為未使用的元件控制遮罩及未使用的元件計數。
圖2顯示依據一實施例之向量頻率壓縮指令的範例執行。向量頻率壓縮指令200被顯示為壓縮零以外的值。如上所述,一實施例包括一被編碼入指令200之即刻值220,用以指示應被壓縮之值。指令之另一實施例使用MASK 210以判斷一值,其將藉由讀取相應於一或更多具有一0之MASK 210的來源215向量暫存器中所儲存之值而被壓縮。藉由設計,來源215向量暫存器之值可被判定且MASK 210被計算以符合針對一既定輸入之最有效率的編碼。於圖2中,值35被壓縮,因為其將產生最長的列以便使來源215向量暫存器之壓縮最佳化。來源215向量暫存器之資料元件15至0含有下列值:0,0,15,0,12,
35,35,35,0,7,0,98,44,0,0,及54。這些值係使用值35之RLE而被壓縮於目的地205向量暫存器中而成為資料元件14-0如下列值:0,0,15,0,12,3,35,0,7,0,98,44,0,0,及54。如圖2中所示,3個35之列被壓縮為35接續於3在目的地205向量暫存器中。於圖2中,已使用的元件控制遮罩225之資料元件14-0被設為1而已使用的元件計數230被設為15,以指示目的地205向量暫存器之哪些元件包含已壓縮的來源215向量暫存器。
存在有其無法由指令所完整地處置之輸入來源向量暫存器的情況。例如,可能有一些情況,其中來源向量暫存器含有某些值以致已壓縮的目的地向量暫存器將大於來源向量暫存器。諸如當來源含有應被壓縮之值的一或更多單一發生時,因為各單一值被翻譯為目的地之兩資料元件:值和計數。此情況可藉由計算應被壓縮之值的發生次數及計算該已計算的控制遮罩中之零的數目而由軟體所輕易地檢測。軟體可接著將壓縮劃分為兩個循環以考量此情境或嘗試使用不同的RLE技術以使該輸入最佳化。此輸入情境之另一選擇是使該指令在每當此情況發生時提出一特殊例外並容許軟體被觸發以處置該情況。
圖3為一流程圖,其顯示依據一實施例藉由執行處理器中之向量頻率壓縮指令以將來自來源向量暫存器之值壓縮至目的地向量暫存器的範例操作。於操作310,向量頻率壓縮指令係由處理器所提取(例如,藉由處理器之提取單元)。向量頻率壓縮指令包括(至少)來源運算元及目
的地運算元。來源運算元指明一組應被壓縮入目的地運算元之資料元件(例如,xmm,ymm或zmm暫存器)。於該指令之至少一次發生中,來源運算元包含其將被RLE處理成一值之一或更多列的值及該值的計數。
流程從操作310移至操作315,其中處理器解碼向量頻率壓縮指令。例如,於某些實施例中,處理器包括硬體解碼單元,其被提供指令(亦即,藉由處理器之提取單元)。多種不同之眾所周知的解碼單元可被用於該解碼單元。例如,解碼單元可將該向量頻率壓縮指令解碼為單一寬微指令。如另一範例,解碼單元可將該向量頻率壓縮指令解碼為多個寬微指令。如特別適於失序處理器管線之另一範例,解碼單元可將該向量頻率壓縮指令解碼為一或更多微操作,其中每一微操作可被失序地發送及執行。同時,可被實施與一或更多解碼器,且各解碼器可被實施為可編程邏輯陣列(PLA),如本技術中眾所周知者。舉例而言,一既定的解碼單元可:1)具有引導邏輯以將不同的微指令指引至不同的解碼器;2)第一解碼器,其可解碼指令集之一子集(其較第二、第三、及第四解碼器更多)並同時地產生兩個微操作;3)第二、第三、及第四解碼器,其可各解碼整個指令集之僅一子集並同時地產生僅一微操作;4)微排程器ROM,其可解碼整個指令集之僅一子集並同時地產生四個微操作;及5)多工邏輯,其係由該些解碼器及該微排程器ROM所饋送以判斷何者之輸出被提供至一微操作佇列。解碼單元之其他實施例可具
有更多或更少解碼器,其解碼更多或更少指令及指令子集。例如,一實施例可具有第二、第三、及第四解碼器,其可各同時地產生兩個微操作;並可包括一微排程器ROM,其同時地產生八個微操作。
流程接著移至操作320,其中處理器執行向量頻率壓縮指令,針對每一來源資料元件致使一值被複製入目的地暫存器以指示該來源資料元件之值。來源資料運算元之至少一子集被編碼入目的地向量暫存器而成為一值及計數,藉此將來源資料元件壓縮入較少的目的地資料元件。
文中所述之指令的實施例可被實施以不同格式。此外,範例系統、架構、及管線被詳述於下。指令之實施例可被執行於此等系統、架構、及管線之上,但不限定於那些詳述者。
VEX編碼容許指令具有多於二運算元,並容許SIMD向量暫存器長於128位元。VEX前綴之使用提供三運算元(或更多)語法。例如,先前的二運算元指令係履行諸如A=A+B(其覆寫來源運算元)等操作。VEX前綴之使用致能運算元履行諸如A=B+C等非破壞性操作。
圖4A說明包括VEX前綴402、真實運算碼欄位430、Mod R/M位元組440、SIB位元組450、置換欄位
462、及IMM8 472之範例AVX指令格式。圖4B說明來自圖4A之哪些欄位組成全運算碼欄位474及基礎操作欄位442。圖4C說明來自圖4A之哪些欄位組成暫存器指標欄位444。
VEX前綴(位元組0-2)402被編碼以三位元組形式。第一位元組為格式欄位440(VEX位元組0,位元[7:0]),其含有明確C4位元組值(用於分辨C4指令格式之獨特值)。第二-第三位元組(VEX位元組1-2)包括提供特定能力之數個位元欄位。明確地,REX欄位405(VEX位元組1,位元[7-5])包括VEX.R位元欄位(VEX位元組1,位元[7]-R)、VEX.X位元欄位(VEX位元組1,位元[6]-X)、及VEX.B位元欄位(VEX位元組1,位元[5]-B)。指令之其他欄位係編碼暫存器指標之較低三個位元,如本技術中已知者(rrr、xxx、及bbb),以致Rrrr、Xxxx、及Bbbb可藉由將VEX.R、VEX.X、及VEX.B相加而形成。運算元映圖欄位415(VEX位元組1,位元[4:0]-mmmmm)包括用以編碼暗示的領先運算元位元組之內容。W欄位464(VEX位元組2,位元[7]-W)係由標號VEX.W所表示,並根據指令而提供不同功能。VEX.vvvv 420(VEX位元組2,位元[6:3]-vvvv)之角色可包括以下:1)VEX.vvvv編碼第一來源暫存器運算元、以反相(1s補數)形式指明並可用於具有2或更多來源運算元之指令;2)VEX.vvvv編碼目的地暫存器運算元、針對某些向量位移以1s補數形式指明;或3)VEX.vvvv不
編碼任何運算元、該欄位被保留並應含有1111b。假如VEX.L 468大小欄位(VEX位元組2,位元[2]-L)=0,則指示128位元向量;假如VEX.L=1,則指示256位元向量。前綴編碼欄位425(VEX位元組2,位元[1:0]-pp)提供額外位元給基礎操作欄位。
真實運算碼欄位430(位元組3)亦已知為運算碼位元組。運算碼之部分被指明於此欄位中。
Mod R/M欄位440(位元組4)包括MOD欄位442(位元[7-6])、Reg欄位444(位元[5-3])、及R/M欄位446(位元[2-0])。Reg欄位444之角色可包括下列:編碼目的地暫存器運算元或來源暫存器運算元之任一者(Rrrr之rrr)、或者被視為運算碼擴充且不被用於編碼任何指令運算元。R/M欄位446之角色可包括下列:編碼其參照記憶體位址之指令運算元、或者編碼目的地暫存器運算元或來源暫存器運算元之任一者。
比率、指標、基礎(SIB)-比率欄位450(位元組5)之內容包括SS452(位元[7-6]),其被用於記憶體位址產生。SIB.xxx 454(位元[5-3])及SIB.bbb 456(位元[2-0])之內容先前已針對暫存器指標Xxxx及Bbbb而被提及。
置換欄位462及即刻欄位(IMM8)472含有位址資料。
向量友善指令格式是一種適於向量指令之指令格式(例如,有專屬於向量操作之某些欄位)。雖然描述了其中向量和純量操作兩者均透過向量友善指令格式而被支援的實施例,但其他實施例僅使用向量操作於向量友善指令格式。
圖5A-5B為方塊圖,其說明依據本發明之實施例的一般性向量友善指令格式及其指令模板。圖5A為說明依據本發明之實施例的一般性向量友善指令格式及其類別A指令模板之方塊圖;而圖5B為說明依據本發明之實施例的一般性向量友善指令格式及其類別B指令模板之方塊圖。明確地,一般性向量友善指令格式500係定義類別A及類別B指令模板,其兩者包括無記憶體存取505指令模板和記憶體存取520指令模板。在向量友善指令格式之背景下的術語「一般性」指的是未連結任何特定指令集之指令格式。
雖然本發明之實施例將描述其中該向量友善指令格式支援下列:具有32位元(4位元組)或64位元(8位元組)資料元件寬度(或大小)之64位元組向量運算元長度(或大小)(而因此,64位元組係由16個雙字元大小的元件或替代地8個四字元大小的元件所構成);具有16位元(2位元組)或8位元(1位元組)資料元件寬度(或大小)之64位元組向量運算元長度(或大小);具有32位元(4位元組)、64位元(8位元組)、16位元
(2位元組)、或8位元(1位元組)資料元件寬度(或大小)之32位元組向量運算元長度(或大小);及具有32位元(4位元組)、64位元(8位元組)、16位元(2位元組)、或8位元(1位元組)資料元件寬度(或大小)之16位元組向量運算元長度(或大小);但是替代實施例可支援具有更多、更少、或不同資料元件寬度(例如,128位元(16位元組)資料元件寬度)之更多、更少及/或不同向量運算元大小(例如,256位元組向量運算元)。
圖5A中之類別A指令模板包括:1)於無記憶體存取505指令模板內顯示有無記憶體存取、全捨入(full round)控制類型操作510指令模板及無記憶體存取、資料轉變類型操作515指令模板;以及2)於記憶體存取520指令模板內顯示有記憶體存取、暫時525指令模板及記憶體存取、非暫時530指令模板。圖5B中之類別B指令模板包括:1)於無記憶體存取505指令模板內顯示有無記憶體存取、寫入遮罩控制、部分捨入控制類型操作512指令模板及無記憶體存取、寫入遮罩控制、vsize類型操作517指令模板;以及2)於記憶體存取520指令模板內顯示有記憶體存取、寫入遮罩控制527指令模板。
一般性向量友善指令格式500包括依圖5A-5B中所示之順序所列出於下的如下欄位。
格式欄位540-此欄位中之特定值(指令格式識別符值)獨特地識別向量友善指令格式,而因此識別指令流中
之向量友善指令格式的指令之發生。如此一來,此欄位是選擇性的,因為其對於僅具有一般性向量友善指令格式之指令集是不需要的。
基礎操作欄位542-其內容係分辨不同的基礎操作。
暫存器指標欄位544-其內容(直接地或透過位址產生)指明來源及目的地運算元之位置,任其於暫存器中或記憶體中。這些包括足夠的位元數以從PxQ(例如,32x512、16x128、32x1024、64x1024)暫存器檔案選擇N暫存器。雖然於一實施例中,N可高達三個來源及一個目的地暫存器,但替代實施例可支援更多或更少來源及目的地暫存器(例如,可支援高達兩個來源,其中這些來源之一亦作用為目的地;可支援高達三個來源,其中這些來源之一亦作用為目的地;可支援高達兩個來源及一個目的地)。
修飾符欄位546-其內容係從那些不指明記憶體存取者分辨其指明記憶體存取之一般性向量指令格式中的指令之發生;亦即,介於無記憶體存取505指令模板與記憶體存取520指令模板之間。記憶體存取操作係讀取及/或寫入至記憶體階層(於某些情況下使用暫存器中之值以指明來源及/或目的地位址),而無記憶體存取操作則不(例如,來源及目的地為暫存器)。雖然於一實施例中,此欄位亦於三個不同方式之間選擇以履行記憶體位址計算,但替代實施例可支援更多、更少、或不同方式以履行記憶體位址計算。
擴增(augmentation)操作欄位550-其內容係分辨除了基礎操作之外的多種不同操作之何者應被履行。此欄位是背景特定的。於本發明之一實施例中,此欄位被劃分為類別欄位568、阿爾發欄位552、及貝他欄位554。擴增操作欄位550容許共同族群的操作被履行於單一指令而非2、3或4個指令。
比率欄位560-其內容容許指標欄位之內容的定標(scaling)以供記憶體位址產生(例如,用於使用2scale
*index+base之位址產生)。
置換欄位562A-其內容被使用為記憶體位址產生之部分(例如,用於使用2scale
*index+base+displacement之位址產生)。
置換因數欄位562B(注意其直接於置換因數欄位562B上方的置換欄位562A之並列指示一者或另一者被使用)-其內容被使用為位址產生之部分;其指明將由記憶體存取之大小(N)所定標的置換因數-其中N為記憶體存取中之位元組數(例如,用於使用2scale
*index+base+scaled displacement之位址產生)。多餘的低階位元被忽略,因此,置換因數欄位之內容被乘以記憶體運算元總大小(N)以產生最終置換來被用於計算有效位址。N之值係根據全運算碼欄位574(文中稍後所描述)及資料調處欄位554C而由處理器硬體判定於運行時間。置換欄位562A及置換因數欄位562B是選擇性的,因為其並未用於無記憶體存取505指令模板及/或不同的實施例可僅實施
兩者之一或無。
資料元件寬度欄位564-其內容係分辨數個資料元件寬度之何者應被使用(於某些實施例用於所有指令;於其他實施例中僅用於部分指令)。此欄位是選擇性的,因為其是不需要的假如僅有一資料元件寬度被支援及/或資料元件寬度係使用運算碼之某形態而被支援。
寫入遮罩欄位570-其內容控制,以每資料元件位置為基,目的地向量運算元中之資料元件位置是否反應基礎操作及擴增操作之結果。類別A指令模板支援合併-寫入遮蔽,而類別B指令模板支援合併-和歸零-寫入遮蔽兩者。當合併時,向量遮罩容許目的地中之任一組元件被保護不被更新於任何操作之執行期間(由基礎操作及擴增操作所指明);於另一實施例中,保存目的地之各元件的舊值,其中相應的遮罩位元具有0。反之,當歸零時,向量遮罩容許目的地中之任一組元件被歸零於任何操作之執行期間(由基礎操作及擴增操作所指明);於另一實施例中,當相應的遮罩位元具有0值時目的地之一元件被設為0。此功能之一子集為控制其正履行中之操作的向量長度之能力(亦即,元件之跨距被修改,從第一至最後者);然而,當被修改之元件為連續時則其為不需要的。因此,寫入遮罩欄位570容許部分向量操作,包括載入、儲存、算術、邏輯,等等。雖然本發明之實施例係描述其中寫入遮罩欄位570之內容選擇含有待使用之寫入遮罩的數個寫入遮罩暫存器之一(而因此寫入遮罩欄位570之內容間接地識別
其應履行之遮蔽),但替代實施例取代地或額外地容許寫入遮罩欄位570之內容直接地指明應履行之遮蔽。
即刻欄位572-其內容容許一即刻之指明。此欄位是選擇性的,因為在不支援即刻之一般性向量友善指令格式的實施中其並不存在以及在不使用即刻之指令中其並不存在。
類別欄位568-其內容係分辨於不同類別的指令之間。參考圖5A-B,此欄位之內容係選擇於類別A與類別B指令之間。於圖5A-B中,圓角的方塊係用以指示一特定值出現在一欄位中(例如,個別於圖5A-B中的類別欄位568之類別A 568A及類別B 568B)。
於類別A之無記憶體存取505指令模板的情況下,阿爾發欄位552被解讀為RS欄位552A,其內容係分辨不同擴增操作類型之何者應被履行(例如,捨入552A.1及資料轉變552A.2被個別地指明給無記憶體存取、捨入類型操作510及無記憶體存取、資料轉變類型操作515指令模板),而貝他欄位554係分辨已指明類型之操作的何者應被履行。於無記憶體存取505指令模板中,比率欄位560、置換欄位562A、及置換比率欄位562B並未出現。
於無記憶體存取全捨入控制類型操作510指令模板
中,貝他欄位554被解讀為捨入控制欄位554A,其內容提供靜態捨入。雖然於本發明之已描述實施例中捨入控制欄位554A包括一抑制所有浮點例外(SAE)欄位556及一捨入操作控制欄位558,但替代實施例可支援將這些觀念編碼入相同欄位中或者僅具有這些觀念/欄位之一或另一(例如,可僅具有捨入操作控制欄位558)。
SAE欄位556-其內容係分辨是否使例外事件報告失效;當SAE欄位556之內容指示抑制啟用時,則一既定指令不會報告任何種類的浮點例外旗標且不會提出任何浮點例外處置器。
捨入操作控制欄位558-其內容係分辨捨入操作之族群的何者應履行(例如,捨進、捨去、朝零捨入及捨入至最接近)。因此,捨入操作控制欄位558容許以每指令為基之捨入模式的改變。於其中處理器包括一用以指明捨入模式之控制暫存器的本發明之一實施例中,捨入操作控制欄位550之內容係置換該暫存器值。
於無記憶體存取資料轉變類型操作515指令模板中,貝他欄位554被解讀為資料轉變欄位554B,其內容係分辨數個資料轉變之何者應被履行(例如,無資料轉變、拌和、廣播)。
於類別A之記憶體存取520指令模板的情況下,阿爾發欄位552被解讀為逐出(eviction)暗示欄位552B,其
內容係分辨逐出暗示之何者應被使用(於圖5A中,暫時552B.1及非暫時552B.2被個別地指明給記憶體存取、暫時525指令模板及記憶體存取、非暫時530指令模板),而貝他欄位554被解讀為資料調處欄位554C,其內容係分辨數個資料調處操作(亦已知為基元)之何者應被履行(例如,無調處;廣播;來源之上轉換;及目的地之下轉換)。記憶體存取520指令模板包括比率欄位560、及選擇性地置換欄位562A或置換比率欄位562B。
向量記憶體指令履行向量載入自及向量儲存至記憶體,具有轉換支援。如同普通向量指令,向量記憶體指令以資料元件式方式將資料轉移自/至記憶體,其中被實際地轉移之元件係由其被選擇為寫入遮罩之向量遮罩的內容所支配。
暫時資料為可能夠快地被再使用而受益自快取的資料。然而,此為暗示,且不同處理器可用不同方式來實施之,包括完全忽略暗示。
非暫時資料為不太可能夠快地被再使用而受益自第一階快取中之快取且應被給定逐出之優先權的資料。然而,此為暗示,且不同處理器可用不同方式來實施之,包括完全忽略暗示。
於類別B之指令模板的情況下,阿爾發欄位552被解讀為寫入遮罩控制(Z)欄位552C,其內容係分辨其由寫入遮罩欄位570所控制之寫入遮蔽是否應為合併或歸零。
於類別B之無記憶體存取505指令模板的情況下,貝他欄位554之部分被解讀為RL欄位557A,其內容係分辨不同擴增操作類型之何者應被履行(例如,捨入557A.1及向量長度(VSIZE)557A.2被個別地指明給無記憶體存取、寫入遮罩控制、部分捨入控制類型操作512指令模板及無記憶體存取、寫入遮罩控制、VSIZE類型操作517指令模板),而貝他欄位554之剩餘者係分辨已指明類型之操作的何者應被履行。於無記憶體存取505指令模板中,比率欄位560、置換欄位562A、及置換比率欄位562B並未出現。
於無記憶體存取、寫入遮罩控制、部分捨入控制類型操作510指令模板中,貝他欄位554之剩餘者被解讀為捨入操作欄位559A並使例外事件報告失效(一既定指令不會報告任何種類的浮點例外旗標且不會提出任何浮點例外處置器)。
捨入操作控制欄位559A-正如同捨入操作控制欄位558,其內容係分辨捨入操作之族群的何者應履行(例如,捨進、捨去、朝零捨入及捨入至最接近)。因此,捨入操作控制欄位559A容許以每指令為基之捨入模式的改
變。於其中處理器包括一用以指明捨入模式之控制暫存器的本發明之一實施例中,捨入操作控制欄位550之內容係置換該暫存器值。
於無記憶體存取、寫入遮罩控制、VSIZE類型操作517指令模板中,貝他欄位554被解讀為向量長度欄位559B,其內容係分辨數個資料向量長度之何者應被履行(例如,128、256、或512位元組)。
於類別B之記憶體存取520指令模板的情況下,貝他欄位554之部分被解讀為廣播欄位557B,其內容係分辨廣播類型資料調處操作是否應被履行,而貝他欄位554之剩餘者被解讀為向量長度欄位559B。記憶體存取520指令模板包括比率欄位560、及選擇性的置換欄位562A、或置換比率欄位562B。
針對一般性向量友善指令格式500,一全運算碼欄位574顯示為包括格式欄位540、基礎操作欄位542、及資料元件寬度欄位564。雖然一實施例係顯示全運算碼欄位574包括所有這些欄位,但於其不支援這些所有的實施例中全運算碼欄位574可包括少於所有這些欄位。全運算碼欄位574提供運算碼(opcode)。
擴增操作欄位550、資料元件寬度欄位564、及寫入遮罩欄位570容許這些特徵以每指令為基被指明於一般性向量友善指令格式中。
寫入遮罩欄位與資料元件寬度欄位之組合產生定型的指令,由於其容許遮罩根據不同資料元件寬度而被應用。
於類別A和類別B中所發現的各種指令模板於不同情況下是有利的。於本發明之某些實施例中,不同處理器或一處理器內之不同核心可支援唯獨類別A、唯獨類別B、或兩個類別。例如,用於通用計算之高性能通用失序核心可支援唯獨類別B;主要用於圖形及/或科學(通量)計算之核心可支援唯獨類別A;而用於上述兩者之核心可支援兩類別(當然,具有來自兩類別之模板與指令的某種混合但非來自兩類別之所有模板和指令的核心仍於本發明之範圍內)。同時,單一處理器可包括多個核心,其所有均支援相同類別或者其中不同核心支援不同類別。例如,於具有分離的圖形和通用核心之處理器中,主要用於圖形及/或科學計算的圖形核心之一可支援唯獨類別A,而通用核心之一或更多可為高性能通用核心,其具有用於支援唯獨類別B之通用計算的失序執行和暫存器重新命名。不具有分離圖形核心之另一處理器可包括其支援類別A與類別B兩者之一或更多通用依序或失序核心。當然,來自一類別之特徵亦可被實施於本發明之不同實施例中的其他類別中。以高階語言所寫的程式將被輸入(例如,僅於時間編譯或靜態編譯)多種不同的可執行形式,包括:1)僅具有由用於執行之目標處理器所支援之類別的指令;或2)具有使用所有類別之指令的不同組合所寫的替代常式並具有其根據由目前正執行碼之處理器所支援的指令以選擇供執行之常式的控制流程碼的形式。
圖6A為方塊圖,其說明依據本發明之實施例的範例特定向量友善指令格式。圖6A顯示一特定向量友善指令格式600,其係由於指明欄位之位置、大小、解讀、和順序、以及那些欄位之部分的值而為特定的。特定向量友善指令格式600可用以擴充x86指令集,而因此某些欄位係類似於或相同於現有的x86指令集及其擴充(例如,AVX)中所使用的那些欄位。此格式保持為與具有擴充之現有的x86指令集之前綴編碼欄位、真實運算碼位元組欄位、MOD R/M欄位、SIB欄位、置換欄位、及即刻欄位一致。映射入來自圖6A之欄位的來自圖5之欄位被顯示。
應理解:雖然本發明係參考於一般性向量友善指令格式500之背景下的特定向量友善指令格式600來描述以利說明之目的,但本發明除了所請求的範圍之外並不限於特定向量友善指令格式600。例如,一般性向量友善指令格式500係考量針對各種欄位之多種可能的大小,而特定向量友善指令格式600則顯示為具有特定大小的欄位。藉由特定範例,雖然資料元件寬度欄位564被顯示為特定向量友善指令格式600中之一位元欄位,但本發明並未如此受限(亦即,一般性向量友善指令格式500係考量資料元件寬度欄位564之其他大小)。
一般性向量友善指令格式500包括依圖6A所示之順序的如下欄位。
EVEX前綴(位元組0-3)602-被編碼以四位元組之形
式。
格式欄位540(EVEX位元組0,位元[7:0])-第一位元組(EVEX位元組0)為格式欄位540且其含有0x62(用於分辨本發明之一實施例中的向量友善指令格式之獨特值)。
第二-第四位元組(EVEX位元組1-3)包括提供特定能力之數個位元欄位。
REX欄位605(EVEX位元組1,位元[7-5])-由EVEX.R位元欄位(EVEX位元組1,位元[7]-R)、EVEX.X位元欄位(EVEX位元組1,位元[6]-X)、及557BEX位元組1,位元[5]-B所組成。EVEX.R、EVEX.X及EVEX.B位元欄位係提供如相應VEX位元欄位之相同的功能,且係使用1補數形式來編碼,亦即,ZMM0被編碼為1111B;ZMM15被編碼為0000B。指令之其他欄位將暫存器指標之較低三個位元編碼,如本技術中所已知者(rrr,xxx及bbb),以致Rrrr、Xxxx、及Bbbb可藉由加入EVEX.R、EVEX.X及EVEX.B而形成。
REX’欄位510-此為REX’欄位510之第一部分且為用以將擴充的32暫存器集之上16或下16個編碼的EVEX.R’位元欄位(EVEX位元組1,位元[4]-R’)。於本發明之一實施例中,此位元(連同以下所指出之其他位元)被儲存以位元反轉格式來分辨(以眾所周知的x86 32位元模式)自BOUND指令,其真實運算碼位元組為62,但於MOD R/M欄位(如下所述)中並未接受MOD欄位中
之11的值;本發明之替代實施例並未以反轉格式儲存此及以下所指示的位元。1之值被用以編碼下16暫存器。換言之,R’Rrrr係藉由組合EVEX.R’、EVEX.R、及來自其他欄位之其他RRR而形成。
運算碼映圖欄位615(EVEX位元組1,位元[3:0]-mmmm)-其內容係編碼一隱含的前導(leading)運算碼位元組(0F、0F 38或0F 3)。
資料元件寬度欄位564(EVEX位元組2,位元[7]-W)-係由記法EVEX.W所表示。EVEX.W係用以定義資料位元組(32位元資料元件或64位元資料元件)之粒度(大小)。
EVEX.vvvv 620(EVEX位元組2,位元[6:3]-vvvv)-EVEX.vvvv之角色可包括下列:1)EVEX.vvvv編碼第一來源暫存器運算元,以反轉(1補數)形式指明且針對具有二或更多來源運算元之指令是有效的;2)EVEX.vvvv編碼目的地暫存器運算元,以1補數形式指明於某些向量位移;或3)EVEX.vvvv未編碼任何運算元,該欄位被保留且應含有1111b。因此,EVEX.vvvv 620編碼其以反轉(1補數)形式所儲存之第一來源暫存器指明符的4個低階位元。根據該指令,一額外的不同EVEX位元欄位被用以擴充指明符大小至32暫存器。
EVEX.U 568類別欄位(EVEX位元組2,位元[2]-U)-假如EVEX.U=0,其指示類別A或EVEX.U0;假如EVEX.U=1,其指示類別B或EVEX.U1。
前綴編碼欄位625(EVEX位元組2,位元[1:0]-pp)-提供基礎操作欄位之額外位元。除了提供EVEX前綴格式之傳統SSE指令的支援以外,此亦具有壓縮SIMD前綴之優點(取代需要一位元組來表達SIMD前綴,EVEX前綴僅需要2位元)。於一實施例中,為了支援其使用SIMD前綴(66H,F2H,F3H)之傳統SSE指令於傳統格式和EVEX前綴格式兩者,這些傳統SIMD前綴被編碼入SIMD前綴編碼欄位;且於運行時間被擴充為傳統SIMD前綴,在被提供至解碼器之PLA以前(因此PLA可執行這些傳統指令之傳統和EVEX格式而無修改)。雖然較新的指令可使用EVEX前綴編碼欄位之內容為運算碼擴充,但某些實施例以類似方式擴充一致性而容許由這些傳統SIMD前綴指明不同意義。一替代實施例可重新設計PLA以支援2位元SIMD前綴編碼,而因此不需要擴充。
阿爾發欄位552(EVEX位元組3,位元[7]-EH;亦已知為EVEX.EH、EVEX.rs、EVEX.RL、EVEX.寫入遮罩控制、及EVEX.N;亦以α顯示)-如先前所述,此欄位為背景特定的。
貝他欄位554(EVEX位元組3,位元[6:4]-SSS,亦已知為EVEX.s2-0
、EVEX.r2-0
、EVEX.rr1、EVEX.LL0、EVEX.LLB;亦以β β β顯示)-如先前所述,此欄位為背景特定的。
REX’欄位510-此為REX’欄位之剩餘者且為可用以將擴充的32暫存器集之上16或下16個編碼的EVEX.V’位
元欄位(EVEX位元組3,位元[3]-V’)。此位元被儲存以位元反轉格式。1之值被用以編碼下16暫存器。換言之,V’VVVV係藉由組合EVEX.V’、EVEX.vvvv而形成。
寫入遮罩欄位570(EVEX位元組3,位元[2:0]-kkk)-其內容係指明寫入遮罩暫存器中之暫存器的指標,如先前所述者。於本發明之一實施例中,特定值EVEX.kkk=000具有一特殊行為,其隱含無寫入遮罩被用於特定指令(此可被實施於多種方式,包括使用固線至所有電路之寫入遮罩或者其旁通遮蔽硬體之硬體)。
真實運算碼欄位630(位元組4)亦已知為運算碼位元組。運算碼之部分被指明於此欄位中。
MOD R/M欄位640(位元組5)包括MOD欄位642、Reg欄位644、及R/M欄位646。如先前所述,MOD欄位642之內容係分辨於記憶體存取與非記憶體存取操作之間。Reg欄位644之角色可被概述為兩種情況:編碼目的地暫存器運算元或來源暫存器運算元之任一者、或者被視為運算碼擴充且不被用於編碼任何指令運算元。R/M欄位646之角色可包括下列:編碼其參照記憶體位址之指令運算元、或者編碼目的地暫存器運算元或來源暫存器運算元之任一者。
比率、指標、基礎(SIB)位元組(位元組6)-如先前所述,比率欄位550之內容被用於記憶體位址產生。SIB.xxx 654及SIB.bbb 656-這些欄位之內容先前已針對暫存器指標Xxxx及Bbbb而被提及。
置換欄位562A(位元組7-10)-當MOD欄位642含有10時,位元組7-10為置換欄位562A,且其工作相同於傳統32位元置換(disp32)且工作於位元組粒度。
置換因數欄位562B(位元組7)-當MOD欄位642含有01時,位元組7為置換因數欄位562B。此欄位之位置係相同於傳統x86指令集8位元置換(disp8),工作於位元組粒度。因為disp8為符號擴充,所以其僅可定址於-128與127位元組偏移之間;針對64位元組快取線,disp8使用其僅可被設為四個實際有用值-128、-64、0、及64之8個位元;因為常需要較大的範圍,所以disp32被使用;然而,disp32需要4個位元組。相反於disp8及disp32,置換因數欄位562B為disp8之再解讀;當使用置換因數欄位562B時,實際置換係由置換因數欄位乘以記憶體運算元存取之大小(N)的內容所決定。此類型的置換被稱為disp8*N。此係減少平均指令長度(用於置換但具有大得多的範圍之單一位元組)。此壓縮的置換係基於假設其有效置換為記憶體存取之粒度的倍數,而因此,位址偏移之多餘的低階位元無須被編碼。換言之,置換因數欄位562B取代傳統x86指令集8位元置換。因此,置換因數欄位562B被編碼以如x86指令集8位元置換之相同方式(因此ModRM/SIB編碼規則並無改變),唯一例外為disp8被超載至disp8*N。換言之,編碼規則或編碼長度並無改變,而僅於藉由硬體之置換值的解讀(其需由記憶體運算元之大小定標該置換以獲得位元組式的位址偏
移)。
即刻欄位572係操作如先前所述。
圖6B為方塊圖,其說明組成全運算碼欄位574之特定向量友善指令格式600的欄位,依據本發明之一實施例。明確地,全運算碼欄位574包括格式欄位540、基礎操作欄位542、及資料元件寬度(W)欄位564。基礎操作欄位542包括前綴編碼欄位625、運算碼映圖欄位615、及真實運算碼欄位630。
圖6C為方塊圖,其說明組成暫存器指標欄位544之特定向量友善指令格式600的欄位,依據本發明之一實施例。明確地,暫存器指標欄位544包括REX欄位605、REX’欄位610、MODR/M.reg欄位644、MODR/M.r/m欄位646、VVVV欄位620、xxx欄位654、及bbb欄位656。
圖6D為方塊圖,其說明組成擴增操作欄位550之特定向量友善指令格式600的欄位,依據本發明之一實施例。當類別(U)欄位568含有0時,其表示EVEX.U0(類別A 568A);當其含有1時,其表示EVEX.U1(類別B 568B)。當U=0且MOD欄位642含有11(表示無
記憶體存取操作)時,阿爾發欄位552(EVEX位元組3,位元[7]-EH)被解讀為rs欄位552A。當rs欄位552A含有一個1(捨入552A.1)時,貝他欄位554(EVEX位元組3,位元[6:4]-SSS)被解讀為捨入控制欄位554A。捨入控制欄位554A包括一位元SAE欄位556及二位元捨入操作欄位558。當rs欄位552A含有0(資料轉變552A.2)時,貝他欄位554(EVEX位元組3,位元[6:4]-SSS)被解讀為三位元資料轉變欄位554B。當U=0且MOD欄位642含有00、01、或10(表示記憶體存取操作)時,阿爾發欄位552(EVEX位元組3,位元[7]-EH)被解讀為逐出暗示(EH)欄位552B而貝他欄位554(EVEX位元組3,位元[6:4]-SSS)被解讀為三位元資料調處欄位554C。
當U=1時,阿爾發欄位552(EVEX位元組3,位元[7]-EH)被解讀為寫入遮罩控制(Z)欄位552C。當U=1且MOD欄位642含有11(表示無記憶體存取操作)時,貝他欄位554之部分(EVEX位元組3,位元[4]-S0
)被解讀為RL欄位557A;當其含有1(捨入557A.1)時,貝他欄位554之剩餘者(EVEX位元組3,位元[6-5]-S2-1
)被解讀為捨入操作欄位559A;而當RL欄位557A含有0(VSIZE 557.A2)時,貝他欄位554之剩餘者(EVEX位元組3,位元[6-5]-S2-1
)被解讀為向量長度欄位559B(EVEX位元組3,位元[6-5]-L1-0
)。當U=1且MOD欄位642含有00、01、或10(表示記憶體存取操作)時,貝他欄位554(EVEX位元組3,位元[6:4]-SSS)被解讀為向量
長度欄位559B(EVEX位元組3,位元[6-5]-L1-0
)及廣播欄位557B(EVEX位元組3,位元[4]-B)。
圖7為依據本發明之一實施例的暫存器架構700之方塊圖。於所示之實施例中,有32個512位元寬之向量暫存器710;這些暫存器被稱為zmm0至zmm31。較低的16個zmm暫存器之較低階256位元被疊置在暫存器ymm0-16之上。較低的16個zmm暫存器之較低階128位元(ymm暫存器之較低階128位元)被疊置在暫存器xmm0-15之上。特定向量友善指令格式600係操作於這些疊置的暫存器檔案上,如下表所示。
換言之,向量長度欄位559B選擇於最大長度與一或更多其他較短長度之間,其中每一此較短長度為先前長度之長度的一半;而無向量長度欄位559B之指令模板係操作於最大向量長度上。此外,於一實施例中,特定向量友
善指令格式600之類別B指令模板係操作於緊縮或純量單/雙精確浮點資料上以及緊縮或純量整數資料上。純量操作為履行在zmm/ymm/xmm暫存器中之較低階資料元件位置上的操作;較高階資料元件位置係根據實施例而被保留如執行前之相同者或被歸零。
寫入遮罩暫存器715-於所示之實施例中,有8個寫入遮罩暫存器(k0至k7),大小各為64位元。於一替代實施例中,寫入遮罩暫存器715之大小為16位元。如先前所述,於本發明之一實施例中,向量遮罩暫存器k0無法被使用為寫入遮罩;當其通常將指示k0之編碼被用於寫入遮罩時,其選擇0xFFFF之固線式(hardwired)寫入遮罩,有效地除能該指令之寫入遮蔽。
通用暫存器725-於所示之實施例中,有十六個64位元的通用暫存器,其係配合現有的x86定址模式而使用以定址記憶體運算元。這些暫存器被稱為下列名稱:RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、及R8至R15。
純量(scalar)浮點堆疊暫存器檔案(x87堆疊)745,於其上係混疊MMX緊縮整數平坦暫存器檔案750-於所示之實施例中,x87堆疊為八元件的堆疊,用以對其使用x87指令集擴充之32/64/80位元的浮點資料履行純量浮點操作;而MMX暫存器被用以對64位元的緊縮整數資料履行操作,以及保留運算元給某些於MMX與XMM暫存器之間所履行的操作。
本發明之替代實施例可使用較寬的或較窄的暫存器。此外,本發明之替代實施例可使用更多的、更少的、或不同的暫存器檔案及暫存器。
處理器核心可被實施以不同方式、用於不同目的、以及於不同處理器中。例如,此類核心之實施可包括:1)用於通用計算之通用依序核心;2)用於通用計算之高性能通用失序核心;3)主要用於圖形及/或科學(通量)計算之特殊用途核心。不同處理器之實施可包括:1)包括一或更多用於通用計算之通用依序核心及/或一或更多用於通用計算之通用失序核心的CPU;及2)包括一或更多主要用於圖形及/或科學(通量)之特殊用途核心。此類不同處理器導致不同的電腦系統架構,其可包括:1)與CPU分離之晶片上的共處理器;2)與CPU相同之封裝中之分離晶粒上的共處理器;3)與CPU相同之晶粒上的共處理器(於此情況下,此一共處理器有時稱為特殊用途邏輯,諸如集成圖形及/或科學(通量)邏輯、或稱為特殊用途核心);及4)可包括在相同晶粒上之上述CPU(有時稱為應用核心或應用處理器)、上述共處理器、及額外功能之晶片上的系統。接下來描述範例核心架構,而接著描述範例處理器及電腦架構。
圖8A為一方塊圖,其說明依據本發明之實施例的範例依序的管線及範例暫存器重新命名的、失序的發出/執行管線兩者。圖8B為一方塊圖,其說明包括於一依據本發明之實施例的處理器中之依序架構核心之範例實施例及範例暫存器重新命名的、失序的發出/執行架構核心兩者。圖8A-B中之實線方塊係說明依序管線及依序核心,而虛線方塊之選配性加入則說明暫存器重新命名的、失序的發出/執行管線及核心。假設依序形態為失序形態之子集,則將描述失序形態。
於圖8A中,處理器管線800包括提取級802、長度解碼級804、解碼級806、配置級808、重新命名級810、排程(亦已知為調度(dispatch)或發出)級812、暫存器讀取/記憶體讀取級814、執行級816、寫回/記憶體寫入級818、異常處置級822、及確定(commit)級824。
圖8B顯示處理器核心890,其包括耦合至執行引擎單元850之前端單元830,兩者均耦合至記憶體單元870。核心890可為精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、極長指令字元(VLIW)核心、或者混合或替代核心型。當作又另一選項,核心890可為特殊用途核心,諸如(例如)網路或通訊核心、、壓縮引擎、共處理器核心、通用計算圖形處理單元(GPGPU)核心、圖形核心,等等。
前端單元830包括一耦合至指令快取單元834之分支
預測單元832,指令快取單元834係耦合至指令翻譯旁看緩衝器(TLB)836,指令翻譯旁看緩衝器(TLB)836係耦合至指令提取單元838,指令提取單元838係耦合至解碼單元840。解碼單元840(或解碼器)可解碼指令,並產生下列之一者或更多者以當作輸出:微操作、微碼進入點、微指令、其他指令、或其他控制信號,其係解碼(或者反射、或被衍生)自原始指令。解碼單元840可使用各種不同機制而被實施。適當機制之範例包括(但不限定於)查找表、硬體實施、可編程邏輯陣列(PLA)、微碼唯讀記憶體(ROM),等等。於一實施例中,核心890包括微碼ROM或其他媒體,其係儲存某些微指令之微碼(例如,於解碼單元840中或者另外於前端單元830內)。解碼單元840係耦合至執行引擎單元850中之重新命名/配置器單元852。
執行引擎單元850包括重新命名/配置器單元852,其係耦合至收回單元854及一組一或更多排程器單元856。排程器單元856代表任何數目的不同排程器,包括保留站、中央指令視窗,等等。排程器單元856被耦合至實體暫存器檔案單元858。實體暫存器檔案單元858之每一者代表一或更多實體暫存器檔案,其各不同者係儲存一或更多不同的資料類型,諸如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、狀態(例如,其為待執行之下一指令的位址之指令指針),等等。於一實施例中,實體暫存器檔案單元858包含向量暫存器單元、寫
入遮罩暫存器單元、及純量暫存器單元。這些暫存器單元可提供架構向量暫存器、向量遮罩暫存器、及通用暫存器。實體暫存器檔案單元858被收回單元854疊置以說明各種方式,其中暫存器重新命名及失序執行可被實施(例如,使用重排序緩衝器及收回暫存器檔案;使用未來檔案、歷史緩衝器、及收回暫存器檔案;使用暫存器映圖及一群暫存器,等等)收回單元854及實體暫存器檔案單元858被耦合至執行叢集860。執行叢集860包括一組一或更多執行單元862及一組一或更多記憶體存取單元864。執行單元862可履行各種操作(例如,位移、相加、相減、相乘)並針對各種類型的資料(例如,純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)。雖然某些實施例可包括專用於特別功能或功能集的數個執行單元,而其他實施例可包括僅有一個執行單元或者多個均履行所有功能之執行單元。排程器單元856、實體暫存器檔案單元858、執行叢集860被顯示為可能多數的,因位某些實施例係產生分離的管線給某些類型的資料/操作(例如,純量整數管線;純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線;及/或各具有其本身的排程器單元、實體暫存器檔案單元、及/或執行叢集的記憶體存取管線一而於分離記憶體存取管線之情況下,實施某些實施例,其中僅有此管線之執行叢集具有記憶體存取單元8864)。亦應理解其中使用分離管線時,一或更多這些管線可為失序發出/執行而其他的為依序。
該組記憶體存取單元864被耦合至記憶體單元870,其包括資料TLB單元872,其耦合至資料快取單元874,其耦合至第二階(L2)快取單元876。於一範例實施例中,記憶體存取單元864可包括載入單元、儲存位址單元、及儲存資料單元,其每一者係耦合至記憶體單元870中之資料TLB單元872。指令快取單元834被進一步耦合至記憶體單元870中之第二階(L2)快取單元876。L2快取單元876被耦合至一或更多其他階的快取且最終耦合至主記憶體。
舉例而言,範例暫存器重新命名、失序發出/執行核心架構可實施管線800如下:1)指令提取838履行提取和長度解碼級802和804;2)解碼單元840履行解碼級806;3)重新命名/配置器單元852履行配置級808和重新命名級810;4)排程器單元856履行排程級812;5)實體暫存器檔案單元858和記憶體單元870履行暫存器讀取/記憶體讀取級814;執行叢集860履行執行級816;6)記憶體單元870和實體暫存器檔案單元858履行寫回/記憶體寫入級818;7)各種單元可被關聯於異常處置級822;及8)收回單元854和實體暫存器檔案單元858履行確定級824。
核心890可支援一或更多指令集(例如,x86指令集(具有某些已隨著較新版本而加入之擴充);MIPS Technologies of Sunnyvale,CA之MIPS指令集;ARM Holdings of Sunnyvale,CA之ARM指令集(具有諸如
NEON等選擇性額外擴充)),包括文中所述之指令。於一實施例中,核心890包括邏輯以支援緊縮資料指令集擴充(例如,AVX1、AVX2,及/或一般性向量友善指令格式(U=0及/或U=1)之某形式,如先前所描述),藉此容許由許多多媒體應用程式所使用之操作得以使用緊縮資料來履行。
應理解其核心可支援多執行緒(multi-threading)(指令二或更多組的操作或執行緒),及可用包括時間切割多執行緒、同時多執行緒(其中單一實體核心提供邏輯核心給其實體核心正在同時多執行緒之每一線程)、或其組合之各種方式來進行(例如,時間切割的提取和解碼以及之後的同時多執行緒,諸如於Intel的超執行緒技術)。
雖然暫存器重新命名被描述於失序執行之情境,應理解其暫存器重新命名可被使用於依序架構。雖然處理器之例示實施例亦包括分離指令和資料快取單元834/874以及共用的第二階(L2)快取單元876,但替代實施例可具有用於指令和資料之單一內部快取,諸如(例如)第一階(L1)內部快取、或多階的內部快取。於某些實施例中,系統可包括內部快取與核心及/或處理器外之外部快取的組合。替代地,所有快取可於核心及/或處理器之外。
圖9A-B說明更特定的範例依序核心架構之方塊圖,
該核心將為一晶片中之數個邏輯區塊(包括相同類型及/或不同類型的其他核心)之一。邏輯區塊透過高頻寬互連網路(例如,環狀網路)而通連與某固定功能邏輯、記憶體I/O介面、及其他必要的I/O邏輯,根據應用而定。
圖9A為依據本發明之實施例的單一處理器核心之方塊圖,連同其連接至晶粒上互連網路902且具有其第二階(L2)快取之局部子集904。於一實施例中,指令解碼器900支援具有緊縮資料指令集擴充之x86指令集。L1快取906容許針對快取記憶體之低潛時存取進入純量及向量單元。雖然於一實施例中(為了簡化設計),純量單元908和向量單元910係使用分離的暫存器組(個別地,純量暫存器912和向量暫存器914)且於其間轉移之資料被寫入至記憶體並從第一階(L1)快取906讀回,但本發明之替代實施例亦可使用不同的方式(例如,使用單一暫存器組或包括一通訊路徑,其容許資料被轉移於兩暫存器檔案之間而不被寫入或讀回)。
L2快取之局部子集904為劃分為分離之局部子集(每一處理器核心一個)的總體L2快取之部分。各處理器核心具有通至L2快取904之其本身局部子集的直接存取路徑。由處理器核心所讀取之資料被儲存於其L2快取子集904中並可被快速地存取,平行與存取其本身局部L2快取子集之其他處理器核心。由處理器核心所寫入之資料被儲存於其本身的L2快取子集904且被清除自其他子集(假如需要的話)。環狀網路確保共用資料之相干
(coherency)。環狀網路為雙向的,以容許諸如處理器核心、L2快取及其他邏輯區塊等代理器於晶片內彼此通連。各環狀資料路徑為1012位元寬於每方向。
圖9B為依據本發明之實施例的圖9A中之處理器核心的部分之擴充視圖。圖9B包括L1快取904之L1資料快取906A部分,以及有關向量單元910及向量暫存器914之更多細節。明確地,向量單元910為16寬的向量處理單元(VPU)(參見16寬的ALU 928),其執行整數、單一精確浮點與雙精確浮點指令之一或更多者。VPU支援:利用拌和單元920以拌和暫存器輸入、利用數字轉換單元922A-B之數字轉換、及利用記憶體輸入上之複製單元924的複製。寫入遮罩暫存器926容許闡述所得的向量寫入。
圖10為依據本發明之實施例的處理器1000之方塊圖,該處理器可具一個以上的核心、可具有一集成記憶體控制器、且可具有集成圖形。圖10中之實線方塊係說明一具有單一核心1002A、系統代理器1010、一組一或更多匯流排控制器單元1016之處理器1000,而虛線方塊之額外加入則說明一具有多個核心1002A-N、系統代理器1010中之一組一或更多集成記憶體控制器單元1014、及特殊用途邏輯1008之替代處理器1000。
因此,處理器1000之不同實施方式可包括:1)具有
特殊用途邏輯1008之CPU為集成圖形及/或科學(通量)邏輯(其可包括一或更多核心),而核心1002A-N為一或更多通用核心(例如,通用依序核心、通用失序核心、兩者之組合);2)具有核心1002A-N之共處理器為主要用於圖形及/或科學(通量)之大量特殊用途核心;及3)具有核心1002A-N之共處理器為大量通用依序核心。因此,處理器1000可為通用處理器、共處理器或特殊用途處理器,諸如(例如)網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、高通量多集成核心(MIC)共處理器(包括30或更多核心)嵌入處理器,等等。處理器可被實施於一或更多晶片上。處理器1000可為一或更多基底之一部分及/或可被實施於一或更多基底上,使用數種製程科技之任一種,諸如(例如)BiCMOS、CMOS、或NMOS。
記憶體階層包括核心內之一或更多階的快取、一組或者一或更多共用快取單元1006、及耦合至該組集成記憶體控制器單元1014之外部記憶體(未顯示)。該組共用快取單元1006可包括一或更多中階快取,諸如第二階(L2)、第三階(L3)、第四階(L4)、或其他階的快取、最後階快取(LLC)、及/或其組合。雖然於一實施例中,一種環狀為基的互連單元1012係互連集成圖形邏輯1008、該組共用快取單元1006、以及系統代理器單元1010/集成記憶體控制器單元1014,但替代實施例可使用任何眾所周知的技術來互連此等單元。於一實施例中,相
干性被維持於一或更多快取單元1006與核心1002A-N之間。
於某些實施例中,一或更多核心1002A-N能夠進行多執行緒。系統代理器1010包括那些協調及操作核心1002A-N之組件。系統代理器單元1010可包括(例如)電力控制單元(PCU)及顯示單元。PCU可為或者可包括用以調節核心1002A-N和集成圖形邏輯1008之電力狀態所需的邏輯和組件。顯示單元係用以驅動一或更多外部連接的顯示。
就架構指令集而言,核心1002A-N可為同質的或異質的;亦即,二或更多核心1002A-N能夠執行相同的指令集,而其他者能夠執行該指令集之僅僅一子集或者一不同指令集。
圖11-14為範例電腦架構之方塊圖。用於筆記型電腦、桌上型電腦、手持式PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、開關、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視頻遊戲裝置、機上盒、微處理器、行動電話、可攜式媒體播放器、手持式裝置、及各種其他電子裝置之習知技術中已知的其他系統設計和組態亦為適當的。一般而言,能夠結合處理器及/或其他執行邏輯之多種系統或電子裝置(如文中所揭示者)通常為適當的。
現在參考圖11,其顯示依據本發明之一實施例的系統1100之方塊圖。系統1100可包括一或更多處理器1110、1115,其被耦合至控制器集線器1120。於一實施例中,控制器集線器1120包括一圖形記憶體控制器集線器(GMCH)1190及一輸入/輸出集線器(IOH)1150(其可於分離的晶片上);GMCH 1190包括記憶體和圖形控制器,其係耦合記憶體1140和共處理器1145;IOH 1150將輸入/輸出(I/O)裝置1160耦合至GMCH 1190。替代地,記憶體和圖形控制器之一或兩者被集成於處理器內(如文中所述者),記憶體1140和共處理器1145被直接耦合至處理器1110、以及一具有IOH 1150之單一晶片中的控制器集線器1120。
額外處理器1115之選擇性本質係以虛線被標示於圖11中。各處理器1110、1115可包括文中所述之一或更多處理核心並可為某版本的處理器1000。
記憶體1140可為(例如)動態隨機存取記憶體(DRAM)、相位改變記憶體(PCM)、或兩者之組合。針對至少一實施例,控制器集線器1120通連與處理器1110、1115,經由諸如前側匯流排(FSB)等多點(multi-drop)匯流排、諸如快速路徑互連(QPI)等點對點介面、或類似連接1195。
於一實施例中,共處理器1145為特殊用途處理器,諸如(例如)高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入處理器,等等。於一
實施例中,控制器集線器1120可包括一集成圖形加速器。
有多種差異於實體資源1110、1115之間,關於包括架構、微架構、熱、電力耗損特性等等重要量度之波譜。
於一實施例中,處理器1110執行其控制一般類型之資料處理操作的指令。共處理器指令可嵌入指令之內。處理器1110識別這些共處理器指令為應由附加共處理器1145所執行之類型。因此,處理器1110將共處理器匯流排或其他互連上之這些共處理器指令(或代表共處理器指令之控制信號)發出至共處理器1145。共處理器1145接受並執行所接收的共處理器指令。
現在參考圖12,其顯示依據本發明之一實施例的第一更特定範例系統1200之方塊圖。如圖12中所示,多處理器系統1200為點對點互連系統,並包括經由點對點互連1250而耦合之第一處理器1270和第二處理器1280。處理器1270與1280之每一者可為相同版本的處理器1000。於本發明之一實施例中,處理器1270和1280個別為處理器1110和1115,而共處理器1238為共處理器1145。於另一實施例中,處理器1270和1280個別為處理器1110和共處理器1145。
處理器1270和1280被顯示為個別地包括集成記憶體控制器(IMC)單元1272和1282。處理器1270亦包括點對點(P-P)介面1276和1278為其匯流排控制器單元之部分;類似地,第二處理器1280包括P-P介面1286和
1288。處理器1270、1280可使用P-P介面電路1278、1288而經由點對點(P-P)介面1250以交換資訊。如圖12中所示,IMC 1272和1282將處理器耦合至個別記憶體,亦即記憶體1232和記憶體1234,其可為局部地裝附至個別處理器之主記憶體的部分。
處理器1270、1280可各使用點對點介面電路1276、1294、1286、1298而經由個別P-P介面1252、1254與晶片組1290交換資訊。晶片組1290可選擇性地經由高性能介面1239而與共處理器1238交換資訊。於一實施例中,共處理器1238為特殊用途處理器,諸如(例如)高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入處理器,等等。
共用快取(未顯示)可被包括於任一處理器中或者於兩處理器之外部,而經由P-P互連與處理器連接,以致處理器之局部快取資訊的任一者或兩者可被儲存於共用快取中,假如處理器被置於低電力模式下的話。
晶片組1290可經由介面1296而被耦合至第一匯流排1216。於一實施例中,第一匯流排1216可為周邊組件互連(PCI)匯流排,或者諸如PCI Express匯流排或另一第三代I/O互連匯流排之匯流排,雖然本發明之範圍不因此受限。
如圖12中所示,各種I/O裝置1214可被耦合至第一匯流排1216,連同一將第一匯流排1216耦合至第二匯流排1220之匯流排橋1218。於一實施例中,諸如共處理
器、高通量MIC處理器、GPGPU、加速器(諸如,例如,圖形加速器或數位信號處理(DSP)單元)、場可編程閘極陣列、或任何其他處理器等一或更多額外處理器1215被耦合至第一匯流排1216。於一實施例中,第二匯流排1220為低接腳數(LPC)匯流排。各種裝置可被耦合至第二匯流排1220,包括(例如)鍵盤及/或滑鼠1222、通訊裝置1227及儲存單元1228,諸如碟片驅動器或其他大量儲存裝置,可包括指令/碼及資料1230,於一實施例中。再者,聲頻I/O 1224可被耦合至第二匯流排1220。注意:其他架構是可能的。例如,取代圖12之點對點架構,系統可實施多點匯流排其他此類架構。
現在參考圖13,其顯示依據本發明之一實施例的第二更特定範例系統1300之方塊圖。圖12和13中之類似元件係使用類似的參考數字,且圖13已省略了圖12之某些形態以避免混淆圖13之其他形態。
圖13顯示其處理器1270、1280可個別地包括集成記憶體和I/O控制邏輯(「CL」)1272和1282。因此,CL 1272、1282包括集成記憶體控制器單元並包括I/O控制邏輯。圖13顯示其不僅記憶體1232、1234耦合至CL 1272、1282,同時I/O裝置1314亦耦合至控制邏輯1272、1282。傳統I/O裝置1315被耦合至晶片組1290。
現在參考圖14,其顯示依據本發明之一實施例的SoC 1400之方塊圖。與圖10類似的元件係使用類似參考數字。同時,虛線方塊為更先進的SoC上之選擇性特徵。於
圖14中,互連單元1402被耦合至:應用程式處理器1410,其包括一組一或更多核心202A-N及共用快取單元1006;系統代理器單元1010;匯流排控制器單元1016;集成記憶體控制器單元1014;一組一或更多共處理器1420,其可包括集成圖形邏輯、影像處理器、聲頻處理器、和視頻處理器;靜態隨機存取記憶體(SRAM)單元1430;直接記憶體存取(DMA)單元1432;及顯示單元1440,用以耦合至一或更多外部顯示。於一實施例中,共處理器1420包括特殊用途處理器,諸如(例如)網路或通訊處理器、壓縮引擎、GPGPU、高通量MIC處理器、嵌入處理器,等等。
文中所揭露之機構的實施例可被實施以硬體、軟體、韌體、或此類實施方式之組合。本發明之實施例可被實施為電腦程式或程式碼,其係執行在包括至少一處理器、儲存系統(包括揮發性和非揮發性記憶體及/或儲存元件)、至少一輸入裝置、及至少一輸出裝置之可編程系統上。
程式碼(諸如圖12中所示之碼1230)可被應用於輸入指令,以履行文中所述之功能並產生輸出資訊。輸出資訊可被以已知方式應用於一或更多輸出裝置。為了本申請案,處理系統包括任何系統,其具有一處理器,諸如(例如)數位信號處理器(DSP)、微控制器、特殊應用積體電路(ASIC)、或微處理器。
程式碼可被實施以高階程序或物件導向的編程語言來
與處理系統通連。程式碼亦可被實施以組合或機械語言(假如需要的話)。事實上,文中所描述之機構對於任何特定編程語言並無範圍上之限制。於任何情況下,該語言可為編譯的或解讀的語言。
至少一實施例之一或更多形態可由機器可讀取媒體上所儲存之代表性指令來實施,該媒體代表處理器內之各種邏輯,當由機器所讀取時其致使機器製造用以履行文中所述之技術的邏輯。此類表示(已知為「IP核心」可被儲存於有形的、機器可讀取的媒體上且被供應至各個消費者或製造商,以供載入其實際上製造該邏輯或處理器之製造機器內。
此類機器可讀取儲存媒體可包括(無限制地)由機器或裝置所製造或形成之物件之非暫態的、有形的配置,包括:諸如硬碟、包括軟碟、光碟、微型碟片唯讀記憶體(CD-ROM)、微型碟片可寫入(CD-RW)和磁光碟之任何類型碟片等儲存媒體;諸如唯讀記憶體(ROM)、隨機存取記憶體(RAM),諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可抹除可編程唯讀記憶體(EPROM)、快閃記憶體、電可抹除可編程唯讀記憶體(EEPROM)、相位改變記憶體(PCM)等半導體裝置;磁或光學卡;或者適於儲存電子指令之任何其他類型的媒體。
因此,本發明之實施例亦包括非暫態的、有形的機器可讀取媒體,其含有指令或含有設計資料,諸如硬體描述
語言(HDL),其定義文中所述之結構、電路、設備、處理器及/或系統特徵。此類實施例亦可被稱為程式產品。
於某些情況下,指令轉換器可被用以將來自來源指令集之指令轉換為目標指令集。例如,指令轉換器可將指令翻譯(例如,使用靜態二元翻譯、包括動態編譯之動態二元翻譯)、編輯、仿真、或者轉換為一或更多其他指令以供由核心所處理。指令轉換器可被實施以軟體、硬體、韌體、或其組合。指令轉換器可位於處理器上、處理器外、或部分於處理器上部分於處理器外。
圖15為方塊圖,其對比軟體指令轉換器之使用,以將來源指令集中之二元指令轉換為目標指令集中之二元指令,依據本發明之實施例。於例示之實施例中,指令轉換器為軟體指令轉換器,雖然替代地該指令轉換器可被實施以軟體、韌體、硬體、或其各種組合。圖15顯示高階語言1502之程式可使用x86編譯器1504來編譯以產生x86二元碼1506,其可由一具有至少一x86指令集核心之處理器1516所本機地執行。具有至少一x86指令集核心之處理器1516代表任何可履行如具有至少一x86指令集核心之Intel處理器的實質上相同功能之處理器,藉由相容地執行或者處理(1)Intel x86指令集核心之指令集的基本部分或(2)用來運行於具有至少一x86指令集核心之Intel處理器上的應用程式或其他軟體的物件碼版本,以
便達成如具有至少一x86指令集核心之Intel處理器的實質上相同結果。x86編譯器1504代表一種能夠產生x86二元碼1506(例如,物件碼)之編譯器,x86二元碼1506可(具有或不具有額外鏈路處理)被執行於具有至少一x86指令集核心之處理器1516上。類似地,圖15顯示高階語言1502之程式可使用替代指令集編譯器1508而被編譯以產生替代的指令集二元碼1510,其可由一不具有至少一x86指令集核心之處理器1514所本機地執行(例如,具有執行MIPS Technologies of Sunnyvale,CA之MIPS指令集及/或ARM Holdings of Sunnyvale,CA之ARM指令集的核心之處理器)。指令轉換器1512被用以將x86二元碼1506轉換為可由不具有至少一x86指令集核心之處理器1514所本地執行的碼。此轉換的碼不太可能相同於替代的指令集二元碼1510,因為能夠執行此操作之指令轉換器是難以製造的;然而,該轉換的碼將完成一般操作並由來自替代指令集之指令所組成。因此,指令轉換器1512代表軟體、韌體、硬體、或其組合,其(透過仿真、模擬或任何其他程序)容許不具有x86指令集處理器或核心之處理器或其他電子裝置來執行x86二元碼1506。
雖然圖形中之流程圖顯示由本發明之某些實施例所履行的操作之特定順序,但應理解此順序為範例性的(例如,替代實施例可以不同順序履行該些操作、結合某些操作、重疊某些操作,等等)。
雖然本發明已依數個實施例而描述,但那些熟悉本項
技術人士將理解本發明不限於所述之實施例,可於後附申請專利範圍之精神及範圍內被實行以修飾及更改。此描述因而被視為說明性而非限制性。
100‧‧‧向量頻率壓縮指令
105‧‧‧目的地運算元
110‧‧‧向量遮罩MASK
115‧‧‧來源運算元
120‧‧‧選擇性運算元
125‧‧‧已使用的元件控制遮罩
130‧‧‧已使用的元件計數
200‧‧‧向量頻率壓縮指令
205‧‧‧目的地
210‧‧‧MASK
215‧‧‧來源
220‧‧‧即刻值
225‧‧‧已使用的元件控制遮罩
230‧‧‧已使用的元件計數
402‧‧‧VEX前綴
405‧‧‧REX欄位
415‧‧‧運算元映圖欄位
420‧‧‧VEX.vvvv欄位
425‧‧‧前綴編碼欄位
430‧‧‧真實運算碼欄位
440‧‧‧Mod R/M欄位
442‧‧‧MOD欄位
444‧‧‧Reg欄位
446‧‧‧R/M欄位
450‧‧‧SIB位元組
452‧‧‧SS
454‧‧‧SIB.xxx
456‧‧‧SIB.bbb
462‧‧‧置換欄位
464‧‧‧W欄位
468‧‧‧VEX.L大小欄位
472‧‧‧即刻欄位(IMM8)
474‧‧‧全運算碼欄位
500‧‧‧一般性向量友善指令格式
505‧‧‧無記憶體存取
510‧‧‧無記憶體存取、全捨入控制類型操作
512‧‧‧無記憶體存取、寫入遮罩控制、部分捨入控制類型操作
515‧‧‧無記憶體存取、資料轉變類型操作
517‧‧‧無記憶體存取、寫入遮罩控制、vsize類型操作
520‧‧‧記憶體存取
527‧‧‧記憶體存取、寫入遮罩控制
540‧‧‧格式欄位
542‧‧‧基礎操作欄位
544‧‧‧暫存器指標欄位
546‧‧‧修飾符欄位
550‧‧‧擴增操作欄位
552‧‧‧阿爾發欄位
552A‧‧‧RS欄位
552A.1‧‧‧捨入
552A.2‧‧‧資料轉變
552B‧‧‧逐出暗示欄位
552B.1‧‧‧暫時
552B.2‧‧‧非暫時
554‧‧‧貝他欄位
554A‧‧‧捨入控制欄位
554B‧‧‧資料轉變欄位
554C‧‧‧資料調處欄位
556‧‧‧SAE欄位
557A‧‧‧RL欄位
557A.1‧‧‧捨入
557A.2‧‧‧向量長度(VSIZE)
557B‧‧‧廣播欄位
558‧‧‧捨入操作控制欄位
559A‧‧‧捨入操作欄位
559B‧‧‧向量長度欄位
560‧‧‧比率欄位
562A‧‧‧置換欄位
562B‧‧‧置換因數欄位
564‧‧‧資料元件寬度欄位
568‧‧‧類別欄位
568A‧‧‧類別A
568B‧‧‧類別B
570‧‧‧寫入遮罩欄位
572‧‧‧即刻欄位
574‧‧‧全運算碼欄位
600‧‧‧特定向量友善指令格式
602‧‧‧EVEX前綴
605‧‧‧REX欄位
610‧‧‧REX’欄位
615‧‧‧運算碼映圖欄位
620‧‧‧VVVV欄位
625‧‧‧前綴編碼欄位
630‧‧‧真實運算碼欄位
640‧‧‧Mod R/M欄位
642‧‧‧MOD欄位
644‧‧‧Reg欄位
646‧‧‧R/M欄位
654‧‧‧SIB.xxx
656‧‧‧SIB.bbb
700‧‧‧暫存器架構
710‧‧‧向量暫存器
715‧‧‧寫入遮罩暫存器
725‧‧‧通用暫存器
745‧‧‧純量浮點堆疊暫存器檔案
750‧‧‧MMX緊縮整數平坦暫存器檔案
800‧‧‧處理器管線
802‧‧‧提取級
804‧‧‧長度解碼級
806‧‧‧解碼級
808‧‧‧配置級
810‧‧‧重新命名級
812‧‧‧排程級
814‧‧‧暫存器讀取/記憶體讀取級
816‧‧‧執行級
818‧‧‧寫回/記憶體寫入級
822‧‧‧異常處置級
824‧‧‧確定級
830‧‧‧前端單元
832‧‧‧分支預測單元
834‧‧‧指令快取單元
836‧‧‧指令翻譯旁看緩衝器(TLB)
838‧‧‧指令提取單元
840‧‧‧解碼單元
850‧‧‧執行引擎單元
852‧‧‧重新命名/配置器單元
854‧‧‧收回單元
856‧‧‧排程器單元
858‧‧‧實體暫存器檔案單元
860‧‧‧執行叢集
862‧‧‧執行單元
864‧‧‧記憶體存取單元
870‧‧‧記憶體單元
872‧‧‧資料TLB單元
874‧‧‧資料快取單元
876‧‧‧第二階(L2)快取單元
890‧‧‧處理器核心
900‧‧‧指令解碼器
902‧‧‧晶粒上互連網路
904‧‧‧第二階(L2)快取之局部子集
906‧‧‧L1快取
906A‧‧‧L1資料快取
908‧‧‧純量單元
910‧‧‧向量單元
912‧‧‧純量暫存器
914‧‧‧向量暫存器
920‧‧‧拌和單元
922A-B‧‧‧數字轉換單元
924‧‧‧複製單元
926‧‧‧寫入遮罩暫存器
928‧‧‧16寬的ALU
1000‧‧‧處理器
1002A-N‧‧‧核心
1006‧‧‧共用快取單元
1008‧‧‧特殊用途邏輯
1010‧‧‧系統代理器
1012‧‧‧環狀為基的互連單元
1014‧‧‧集成記憶體控制器單元
1016‧‧‧匯流排控制器單元
1100‧‧‧系統
1110,1115‧‧‧處理器
1120‧‧‧控制器集線器
1140‧‧‧記憶體
1145‧‧‧共處理器
1150‧‧‧輸入/輸出集線器(IOH)
1160‧‧‧輸入/輸出(I/O)裝置
1190‧‧‧圖形記憶體控制器集線器(GMCH)
1195‧‧‧連接
1200‧‧‧多處理器系統
1214‧‧‧I/O裝置
1215‧‧‧額外處理器
1216‧‧‧第一匯流排
1218‧‧‧匯流排橋
1220‧‧‧第二匯流排
1222‧‧‧鍵盤及/或滑鼠
1224‧‧‧聲頻I/O
1227‧‧‧通訊裝置
1228‧‧‧儲存單元
1230‧‧‧指令/碼及資料
1232‧‧‧記憶體
1234‧‧‧記憶體
1238‧‧‧共處理器
1239‧‧‧高性能介面
1250‧‧‧點對點互連
1252,1254‧‧‧P-P介面
1270‧‧‧第一處理器
1272,1282‧‧‧集成記憶體控制器(IMC)單元
1276,1278‧‧‧點對點(P-P)介面
1280‧‧‧第二處理器
1286,1288‧‧‧P-P介面
1290‧‧‧晶片組
1294,1298‧‧‧點對點介面電路
1296‧‧‧介面
1300‧‧‧系統
1314‧‧‧I/O裝置
1315‧‧‧傳統I/O裝置
1400‧‧‧SoC
1402‧‧‧互連單元
1410‧‧‧應用程式處理器
1420‧‧‧共處理器
1430‧‧‧靜態隨機存取記憶體(SRAM)單元
1432‧‧‧直接記憶體存取(DMA)單元
1440‧‧‧顯示單元
1502‧‧‧高階語言
1504‧‧‧x86編譯器
1506‧‧‧x86二元碼
1508‧‧‧指令集編譯器
1510‧‧‧指令集二元碼
1512‧‧‧指令轉換器
1514‧‧‧不具有至少一x86指令集核心之處理器
1516‧‧‧具有至少一x86指令集核心之處理器
本發明可藉由參考下列描述及後附圖式而被最佳地瞭解,該些圖式被用以說明本發明之實施例。於圖式中:圖1顯示依據一實施例之向量頻率壓縮指令的範例執行;圖2顯示依據一實施例之向量頻率壓縮指令的範例執行;圖3為一流程圖,其顯示依據一實施例藉由執行處理器中之向量頻率壓縮指令以將來自來源向量暫存器之值壓縮至目的地向量暫存器的範例操作;圖4A顯示一範例AVX指令格式,其包括VEX前綴、真實運算碼欄位、Mod R/M位元組、SIB位元組、置換欄位、及IMM8,依據一實施例;圖4B顯示來自圖4A之哪些欄位組成全運算碼欄位及基礎操作欄位,依據一實施例;圖4C顯示來自圖4A之哪些欄位組成暫存器指標欄位,依據一實施例;圖5A為方塊圖,其說明依據本發明之實施例的一般性向量友善指令格式及其類別A指令模板;圖5B為方塊圖,其說明依據本發明之實施例的一般
性向量友善指令格式及其類別B指令模板;圖6A為方塊圖,其說明依據本發明之實施例的範例特定向量友善指令格式;圖6B為方塊圖,其說明組成全運算碼欄位之特定向量友善指令格式的欄位,依據本發明之一實施例;圖6C為方塊圖,其說明組成暫存器指標欄位之特定向量友善指令格式的欄位,依據本發明之一實施例;圖6D為方塊圖,其說明組成擴增操作欄位之特定向量友善指令格式的欄位,依據本發明之一實施例;圖7為依據本發明之一實施例的暫存器架構之方塊圖;圖8A為一方塊圖,其說明依據本發明之實施例的範例依序的管線及範例暫存器重新命名的、失序的發出/執行管線兩者;圖8B為一方塊圖,其說明依據本發明之實施例的處理器中所包括的依序架構核心之範例實施例及範例暫存器重新命名的、失序的發出/執行架構核心兩者;圖9A為依據本發明之實施例的單一處理器核心之方塊圖,連同其連接至晶粒上互連網路且具有其第二階(L2)快取之局部子集;圖9B為依據本發明之實施例的圖9A中之處理器核心的部分之擴充視圖;圖10為依據本發明之實施例的一可具有一個以上核心、可具有集成記憶體控制器、及可具有集成圖形之處理
器的方塊圖;圖11為依據本發明之一實施例的系統之方塊圖;圖12為依據本發明之一實施例的第一更特定範例系統之方塊圖;圖13為依據本發明之一實施例的第二更特定範例系統之方塊圖;圖14為依據本發明之一實施例的晶片上系統(SoC)之方塊圖;及圖15為方塊圖,其對比軟體指令轉換器之使用,以將來源指令集中之二元指令轉換為目標指令集中之二元指令,依據本發明之實施例。
100‧‧‧向量頻率壓縮指令
105‧‧‧目的地運算元
110‧‧‧向量遮罩MASK
115‧‧‧來源運算元
120‧‧‧選擇性運算元
125‧‧‧已使用的元件控制遮罩
130‧‧‧已使用的元件計數
Claims (20)
- 一種履行電腦處理器中之向量頻率壓縮指令的方法,包含:提取包括來源運算元和目的地運算元之該向量頻率壓縮指令,其中該來源運算元指明一包括複數來源資料元件之來源向量暫存器,該些來源資料元件包括一或更多列相同的資料元件,其中該目的地運算元識別目的地向量暫存器且其中該些一或更多列相同值之每一者將被壓縮於該目的地向量暫存器中而成為一值與列長度對;解碼該提取的向量頻率壓縮指令;及執行該解碼的向量頻率壓縮指令,其針對各來源資料元件致使一值被複製入該目的地向量暫存器以指示該來源資料元件之值,其中等於一壓縮值之一或更多列的一或更多來源資料元件被編碼於該目的地向量暫存器中而成為該預定壓縮值,接續以該列之列長度。
- 如申請專利範圍第1項之方法,其中該提取的向量頻率壓縮指令進一步包含其被編碼至一值與列長度對之該壓縮值。
- 如申請專利範圍第1項之方法,其中當因為該些來源資料元件不含其針對列長度編碼而被最佳化之值而使該些來源資料元件無法被壓縮入該目的地向量暫存器時,該執行該向量頻率壓縮指令進一步致使一例外被提出。
- 如申請專利範圍第1項之方法,其中該執行該解碼的向量頻率壓縮指令進一步致使一值被寫入一已使用元件 指示器,以指示該目的地向量暫存器中之哪些元件在壓縮期間被寫入。
- 如申請專利範圍第4項之方法,其中該提取的向量頻率壓縮指令進一步包含一已使用元件指示器目的地,以指示該已使用元件指示器應被寫入何處。
- 如申請專利範圍第1項之方法,其中該提取的向量頻率壓縮指令進一步包含一控制遮罩,其指示將被複製至該目的地向量暫存器之來自該些來源資料元件的一或更多值。
- 如申請專利範圍第6項之方法,其中該執行該解碼的向量頻率壓縮指令進一步致使藉由讀取該控制遮罩以判斷該壓縮值。
- 一種處理器核心,包含:一硬體解碼單元,用以解碼向量頻率壓縮指令,其中該向量頻率壓縮指令包括來源運算元和目的地運算元,其中該來源運算元指明一包括複數來源資料元件之來源向量暫存器,該些來源資料元件包括一或更多列相同的資料元件,其中該目的地運算元識別目的地向量暫存器且其中該些一或更多列相同值之每一者將被壓縮於該目的地向量暫存器中而成為一值與列長度對;及執行引擎單元,用以執行該解碼的向量頻率壓縮指令,其針對各來源資料元件致使一值被複製入該目的地向量暫存器以指示該來源資料元件之值,其中等於一壓縮值之一或更多列的一或更多來源資料元件被編碼於該目的地 向量暫存器中而成為該預定壓縮值,接續以該列之列長度。
- 如申請專利範圍第8項之處理器核心,其中該向量頻率壓縮指令進一步包含其被編碼至一值與列長度對之該壓縮值。
- 如申請專利範圍第8項之處理器核心,該執行單元進一步致使一例外被提出,當因為該些來源資料元件不含其針對列長度編碼而被最佳化之值而使該些來源資料元件無法被壓縮入該目的地向量暫存器時。
- 如申請專利範圍第8項之處理器核心,其中該執行單元進一步致使一值被寫入一已使用元件指示器,以指示該目的地向量暫存器中之哪些元件在壓縮期間被寫入。
- 如申請專利範圍第11項之處理器核心,其中該向量頻率壓縮指令進一步包含一已使用元件指示器目的地,以指示該已使用元件指示器應被寫入何處。
- 如申請專利範圍第8項之處理器核心,其中該向量頻率壓縮指令進一步包含一控制遮罩,其指示將被複製至該目的地向量暫存器之來自該些來源資料元件的一或更多值。
- 如申請專利範圍第13項之處理器核心,該執行單元進一步致使藉由讀取該控制遮罩以判斷該壓縮值。
- 一種製造物件,包含:一有形機器可讀取儲存媒體,其上儲存有向量頻率壓縮指令,其中該向量頻率壓縮指令包括來源運算元和目的 地運算元,其中該來源運算元指明一包括複數來源資料元件之來源向量暫存器,該些來源資料元件包括一或更多列相同的資料元件,其中該目的地運算元識別目的地向量暫存器且其中該些一或更多列相同值之每一者將被壓縮於該目的地向量暫存器中而成為一值與列長度對;及其中該向量頻率壓縮指令包括一運算碼,其指示機器執行該指令,該指令針對各來源資料元件致使一值被複製入該目的地向量暫存器以指示該來源資料元件之值,其中等於一壓縮值之一或更多列的一或更多來源資料元件被編碼於該目的地向量暫存器中而成為該預定壓縮值,接續以該列之列長度。
- 如申請專利範圍第15項之製造物件,其中該向量頻率壓縮指令進一步包含其被編碼至一值與列長度對之該壓縮值。
- 如申請專利範圍第15項之製造物件,其中當因為該些來源資料元件不含其針對列長度編碼而被最佳化之值而使該些來源資料元件無法被壓縮入該目的地向量暫存器時,該向量頻率壓縮指令進一步致使該機器提出一例外。
- 如申請專利範圍第15項之製造物件,其中該向量頻率壓縮指令進一步致使該機器將一值寫入一已使用元件指示器,以指示該目的地向量暫存器中之哪些元件在壓縮期間被寫入。
- 如申請專利範圍第18項之製造物件,其中該向量頻率壓縮指令進一步包含一已使用元件指示器目的地,以 指示該已使用元件指示器應被寫入何處。
- 如申請專利範圍第15項之製造物件,其中該向量頻率壓縮指令進一步包含一控制遮罩,其指示將被複製至該目的地向量暫存器之來自該些來源資料元件的一或更多值。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2011/068230 WO2013101227A1 (en) | 2011-12-30 | 2011-12-30 | Vector frequency compress instruction |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201346740A TW201346740A (zh) | 2013-11-16 |
TWI475480B true TWI475480B (zh) | 2015-03-01 |
Family
ID=48698459
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101148744A TWI475480B (zh) | 2011-12-30 | 2012-12-20 | 向量頻率壓縮指令 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9459866B2 (zh) |
EP (1) | EP2798480B1 (zh) |
CN (1) | CN104011673B (zh) |
TW (1) | TWI475480B (zh) |
WO (1) | WO2013101227A1 (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9405539B2 (en) * | 2013-07-31 | 2016-08-02 | Intel Corporation | Providing vector sub-byte decompression functionality |
US9495155B2 (en) * | 2013-08-06 | 2016-11-15 | Intel Corporation | Methods, apparatus, instructions and logic to provide population count functionality for genome sequencing and alignment |
US9904548B2 (en) | 2014-12-22 | 2018-02-27 | Intel Corporation | Instruction and logic to perform a centrifuge operation |
US20160188333A1 (en) * | 2014-12-27 | 2016-06-30 | Intel Coporation | Method and apparatus for compressing a mask value |
US10503502B2 (en) | 2015-09-25 | 2019-12-10 | Intel Corporation | Data element rearrangement, processors, methods, systems, and instructions |
US10007519B2 (en) | 2015-12-22 | 2018-06-26 | Intel IP Corporation | Instructions and logic for vector bit field compression and expansion |
US10592466B2 (en) * | 2016-05-12 | 2020-03-17 | Wisconsin Alumni Research Foundation | Graphic processor unit providing reduced storage costs for similar operands |
US10908898B2 (en) | 2017-02-17 | 2021-02-02 | Intel Corporation | Vector instruction for accumulating and compressing values based on input mask |
WO2019005165A1 (en) * | 2017-06-30 | 2019-01-03 | Intel Corporation | METHOD AND APPARATUS FOR VECTORIZING INDIRECT UPDATING BUCKLES |
US10719323B2 (en) | 2018-09-27 | 2020-07-21 | Intel Corporation | Systems and methods for performing matrix compress and decompress instructions |
CN111381874B (zh) * | 2018-12-28 | 2022-12-02 | 上海寒武纪信息科技有限公司 | Compress指令译码方法、数据处理方法、译码器及数据处理装置 |
CN111381877B (zh) * | 2018-12-28 | 2022-12-02 | 上海寒武纪信息科技有限公司 | Decompress指令译码方法、数据处理方法、译码器及数据处理装置 |
US11379420B2 (en) * | 2019-03-08 | 2022-07-05 | Nvidia Corporation | Decompression techniques for processing compressed data suitable for artificial neural networks |
CN110572160A (zh) * | 2019-08-01 | 2019-12-13 | 浙江大学 | 一种指令集模拟器译码模块代码的压缩方法 |
CN111159515B (zh) * | 2019-11-15 | 2024-05-28 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置及电子设备 |
US20220197643A1 (en) * | 2020-12-23 | 2022-06-23 | Intel Corporation | Speculative decompression within processor core caches |
US12028094B2 (en) | 2020-12-23 | 2024-07-02 | Intel Corporation | Application programming interface for fine grained low latency decompression within processor core |
CN114296798B (zh) * | 2021-12-10 | 2024-08-13 | 龙芯中科技术股份有限公司 | 向量移位方法、处理器及电子设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020002666A1 (en) * | 1998-10-12 | 2002-01-03 | Carole Dulong | Conditional operand selection using mask operations |
US6781528B1 (en) * | 2002-10-24 | 2004-08-24 | Apple Computer, Inc. | Vector handling capable processor and run length encoding |
TWI254260B (en) * | 2002-12-30 | 2006-05-01 | Intel Corp | Match MSB digital image compression |
US20070208792A1 (en) * | 2004-09-13 | 2007-09-06 | Expway | Method for compressing and decompressing a sequence of numbers |
CN101482810A (zh) * | 2007-12-26 | 2009-07-15 | 英特尔公司 | 用于处理矢量数据的方法、设备和指令 |
TW200935304A (en) * | 2008-01-22 | 2009-08-16 | Advanced Risc Mach Ltd | Apparatus and method for performing permutation operations on data |
TWI352512B (en) * | 2006-09-20 | 2011-11-11 | Intel Corp | Data-modifying run length encoder to avoid data ex |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5109523A (en) * | 1987-01-23 | 1992-04-28 | Hitachi, Ltd. | Method for determining whether data signals of a first set are related to data signal of a second set |
CA2096584A1 (en) * | 1992-05-28 | 1993-11-29 | Frank H. Liao | Variable length code decoder for video decompression operations |
NL1000489C2 (nl) * | 1995-06-02 | 1996-12-03 | Oce Nederland Bv | Werkwijze en inrichting voor comprimeren en decomprimeren van digitale beeldsignalen. |
GB9727398D0 (en) * | 1997-12-29 | 1998-02-25 | Sgs Thomson Microelectronics | Run-length encoding |
US6331826B1 (en) * | 2000-01-04 | 2001-12-18 | International Business Machines Corporation | Method for providing an improved run-length encoding algorithm for data compression |
US20030182414A1 (en) * | 2003-05-13 | 2003-09-25 | O'neill Patrick J. | System and method for updating and distributing information |
US6919825B2 (en) * | 2003-09-25 | 2005-07-19 | Peerless Systems Corporation | Split runlength encoding method and apparatus |
US7565024B2 (en) * | 2003-12-19 | 2009-07-21 | Intel Corporation | Run length coding and decoding |
US7599840B2 (en) | 2005-07-15 | 2009-10-06 | Microsoft Corporation | Selectively using multiple entropy models in adaptive coding and decoding |
US8233545B2 (en) * | 2006-08-21 | 2012-07-31 | Texas Instruments Incorporated | Run length encoding in VLIW architecture |
US8194977B2 (en) * | 2008-12-09 | 2012-06-05 | Microsoft Corporation | Remote desktop protocol compression acceleration using single instruction, multiple dispatch instructions |
CN102073479B (zh) * | 2010-11-25 | 2013-03-27 | 中国人民解放军国防科学技术大学 | 基于数据粒度的混洗开关矩阵压缩方法 |
-
2011
- 2011-12-30 EP EP11879023.7A patent/EP2798480B1/en active Active
- 2011-12-30 US US13/993,058 patent/US9459866B2/en active Active
- 2011-12-30 WO PCT/US2011/068230 patent/WO2013101227A1/en active Application Filing
- 2011-12-30 CN CN201180075999.0A patent/CN104011673B/zh active Active
-
2012
- 2012-12-20 TW TW101148744A patent/TWI475480B/zh not_active IP Right Cessation
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020002666A1 (en) * | 1998-10-12 | 2002-01-03 | Carole Dulong | Conditional operand selection using mask operations |
US6781528B1 (en) * | 2002-10-24 | 2004-08-24 | Apple Computer, Inc. | Vector handling capable processor and run length encoding |
TWI254260B (en) * | 2002-12-30 | 2006-05-01 | Intel Corp | Match MSB digital image compression |
US20070208792A1 (en) * | 2004-09-13 | 2007-09-06 | Expway | Method for compressing and decompressing a sequence of numbers |
TWI352512B (en) * | 2006-09-20 | 2011-11-11 | Intel Corp | Data-modifying run length encoder to avoid data ex |
CN101482810A (zh) * | 2007-12-26 | 2009-07-15 | 英特尔公司 | 用于处理矢量数据的方法、设备和指令 |
TW200935304A (en) * | 2008-01-22 | 2009-08-16 | Advanced Risc Mach Ltd | Apparatus and method for performing permutation operations on data |
Also Published As
Publication number | Publication date |
---|---|
US9459866B2 (en) | 2016-10-04 |
EP2798480A4 (en) | 2016-06-29 |
EP2798480A1 (en) | 2014-11-05 |
CN104011673B (zh) | 2016-12-07 |
TW201346740A (zh) | 2013-11-16 |
CN104011673A (zh) | 2014-08-27 |
WO2013101227A1 (en) | 2013-07-04 |
US20140317377A1 (en) | 2014-10-23 |
EP2798480B1 (en) | 2018-09-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI475480B (zh) | 向量頻率壓縮指令 | |
TWI706255B (zh) | 用於緊耦合異質計算的硬體處理器及方法 | |
TWI517039B (zh) | 用以對緊縮資料執行差異解碼之系統,設備,及方法 | |
TWI483183B (zh) | 混洗浮點或整數值的裝置與方法 | |
TWI517041B (zh) | 有條件的傳播在單一指令多重資料/向量執行中之評估值的裝置與方法 | |
TWI582690B (zh) | 用於滑動視窗資料存取之設備及方法 | |
TWI489382B (zh) | 改良的萃取指令背景之設備及方法 | |
TWI517042B (zh) | 用以將萬國碼字元之可變長度編碼點轉碼之處理器、方法、系統及製品 | |
TWI489383B (zh) | 遮蔽排列指令的裝置及方法 | |
TWI524266B (zh) | 用以偵測向量暫存器內相等元素之裝置及方法 | |
TWI617976B (zh) | 用以處理位元流之處理器為基的設備及方法 | |
TWI515650B (zh) | 用於遮罩暫存器擴充操作之設備及方法 | |
TW201730746A (zh) | 用以融合指令之硬體設備及方法 | |
TWI473015B (zh) | 執行向量頻率擴展指令之方法、處理器核心以及製品 | |
TWI462007B (zh) | 用以執行將遮罩暫存器轉換為向量暫存器的系統、裝置及方法 | |
TWI498815B (zh) | 用以響應於單一指令而執行橫向部分和之系統、裝置及方法 | |
TWI663545B (zh) | 執行置換運算的處理器 | |
TWI564795B (zh) | 四維摩頓座標轉換處理器、方法、系統及指令 | |
TWI493449B (zh) | 用於使用遮罩以執行向量緊縮一元解碼的系統、裝置及方法 | |
TW201738733A (zh) | 執行指令以排列遮罩的系統及方法 | |
TWI637317B (zh) | 用於將遮罩擴充為遮罩值之向量的處理器、方法、系統及裝置 | |
TW201346747A (zh) | 用於密碼應用程式之不升起算數旗標的三輸入運算元向量加法指令 | |
TW201810034A (zh) | 用於累和的系統、設備及方法 | |
TWI470541B (zh) | 用於滑動視窗資料收集之設備及方法 | |
TW201732574A (zh) | 用於改善向量通量的系統、方法及設備 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |