TWI493448B - 緊縮資料操作遮罩暫存器算術組合處理器、方法、系統、及指令 - Google Patents
緊縮資料操作遮罩暫存器算術組合處理器、方法、系統、及指令 Download PDFInfo
- Publication number
- TWI493448B TWI493448B TW101146626A TW101146626A TWI493448B TW I493448 B TWI493448 B TW I493448B TW 101146626 A TW101146626 A TW 101146626A TW 101146626 A TW101146626 A TW 101146626A TW I493448 B TWI493448 B TW I493448B
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- instruction
- bit
- mask register
- deflation
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 42
- 230000015654 memory Effects 0.000 claims description 83
- 238000003860 storage Methods 0.000 claims description 62
- 239000000463 material Substances 0.000 claims description 17
- 230000004044 response Effects 0.000 claims description 8
- 238000004519 manufacturing process Methods 0.000 claims description 6
- 230000009467 reduction Effects 0.000 claims description 3
- 239000011343 solid material Substances 0.000 claims description 3
- 238000012545 processing Methods 0.000 description 51
- 238000010586 diagram Methods 0.000 description 44
- 238000007792 addition Methods 0.000 description 32
- 238000007667 floating Methods 0.000 description 15
- 239000000872 buffer Substances 0.000 description 11
- 235000012431 wafers Nutrition 0.000 description 11
- 238000006243 chemical reaction Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 9
- 230000000873 masking effect Effects 0.000 description 9
- 235000009854 Cucurbita moschata Nutrition 0.000 description 8
- 240000001980 Cucurbita pepo Species 0.000 description 8
- 235000009852 Cucurbita pepo Nutrition 0.000 description 8
- 235000020354 squash Nutrition 0.000 description 8
- 238000004422 calculation algorithm Methods 0.000 description 7
- 239000003795 chemical substances by application Substances 0.000 description 7
- 238000013519 translation Methods 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 6
- 238000007906 compression Methods 0.000 description 5
- 230000006835 compression Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000004907 flux Effects 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 238000000605 extraction Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 101000912503 Homo sapiens Tyrosine-protein kinase Fgr Proteins 0.000 description 3
- 102100026150 Tyrosine-protein kinase Fgr Human genes 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000006073 displacement reaction Methods 0.000 description 3
- 238000002156 mixing Methods 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000005056 compaction 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
- -1 for example Substances 0.000 description 1
- 238000005304 joining Methods 0.000 description 1
- 210000003127 knee Anatomy 0.000 description 1
- 239000000696 magnetic material Substances 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 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
- 230000036961 partial effect Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000012782 phase change material Substances 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 238000012546 transfer 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/3001—Arithmetic 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/3001—Arithmetic instructions
- G06F9/30014—Arithmetic instructions with variable precision
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/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/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
Description
實施例係有關處理器。特別地,實施例係有關處理器回應於緊縮資料操作遮罩暫存器算術組合指令以算術地組合緊縮資料操作遮罩暫存器之至少部分。
許多處理器具有單一指令、多重資料(SIMD)架構。SIMD架構通常有助於顯著地增進處理速度。於SIMD架構中,取代在僅一資料元件或資料元件對上操作之純量指令,緊縮資料指令、向量指令、或SIMD指令可同時地或平行地操作在多重資料元件或多重資料元件對上。處理器可具有回應於緊縮資料指令之平行執行硬體,以同時地或平行地履行多重操作。
於SIMD架構中,可將多個資料元件緊縮於一暫存器或記憶體位置內而成為緊縮資料或向量資料。於緊縮資料中,暫存器或其他儲存位置之位元可被邏輯地劃分為多個固定大小資料元件之序列。每一資料元件可代表其被儲存於暫存器或儲存位置中之資料的個別件,連同其他通常具有相同大小之資料元件。例如,256位元寬的暫存器可具有四個64位元寬的緊縮資料元件、八個32位元寬的緊縮資料元件、十六個16位元寬的緊縮資料元件、或三十二個8位元寬的緊縮資料元件。每一緊縮資料元件可代表其可被分離地或獨立地操作之資料(例如,像素之顏色,等
等)的分離個別件。
代表性地,一種緊縮資料指令、向量指令、或SIMD指令(例如,緊縮加入指令)可指明其單一緊縮資料操作(例如,加入)以垂直方式被履行於來自兩來源緊縮資料運算元之所有相應的資料元件對上,以產生目的地或結果緊縮資料。來源緊縮資料運算元可為相同大小,可含有相同寬度之資料元件,而因此可各含有相同的資料元件數。於兩來源緊縮資料運算元中之相同位元位置中的來源資料元件可代表相應資料元件對。緊縮資料操作可被分離地或獨立地履行在每一這些相應來源資料元件對上,以產生結果資料元件之匹配數目,而因此各相應來源資料元件對可具有相應結果資料元件。通常,此一指令之結果資料元件係依相同順序且其經常具有相同大小。
除了緊縮資料指令之此範例類型以外,有多種其他類型的緊縮資料指令。例如,有:那些具有僅一(或多於二)來源緊縮資料運算元者、那些操作以水平方式來取代垂直方式者、那些產生不同大小之結果緊縮資料運算元者、那些產生不同大小之結果緊縮資料運算元者、那些具有不同大小的資料元件者、及/或那些具有不同資料元件順序者。
文中揭露緊縮資料操作遮罩暫存器算術組合指令、用以執行緊縮資料操作遮罩暫存器算術組合指令之處理器、
當處理或執行緊縮資料操作遮罩暫存器算術組合指令時由該些處理器所履行之方法、及結合一或更多處理器以處理或執行緊縮資料操作遮罩暫存器算術組合指令之系統。於下列描述中,提出各種特定細節。然而,應理解:本發明之實施例可被實行而無這些特定細節。於其他例子中,眾所皆知的電路、結構及技術尚未被詳細地顯示以免混淆此描述之瞭解。
圖1為一處理器100之範例實施例的方塊圖,該處理器100具有包括一或更多緊縮資料操作遮罩暫存器算術組合指令105之指令集。處理器可為所有各種複雜指令集計算(CISC)處理器、各種精簡指令集計算(RISC)處理器、各種極長指令字元(VLIW)處理器、各種其混和、或完全其他類型處理器之任一者。於一或更多實施例中,處理器可為通用處理器(例如,用於桌上型、膝上型等電腦中之類型的通用微處理器),雖然此並非必要。替代地,指令處理設備可為特殊用途處理器。適當的特殊用途處理器之範例包括(但不限於)網路處理器、通訊處理器、密碼處理器、圖形處理器、共同處理器、嵌入處理器、數位信號處理器(DSP)、及控制器(例如,微控制器),僅列出一些範例。
處理器具有指令集架構(ISA)101。ISA代表關於編程之處理器的架構之部分。ISA通常包括本機(native)指令、架構暫存器、資料類型、定址模式、記憶體架構、中斷和例外處置、及處理器之外部輸入和輸出(I/O)。
ISA不同於微架構,其通常代表選來實施指令集架構之特定的處理器設計技術。具有不同微架構之處理器可共用一共同指令集架構。
ISA包括架構暫存器(例如,架構暫存器檔案)106。例示之架構暫存器包括緊縮資料暫存器107。每一緊縮資料暫存器可操作以儲存緊縮資料、向量資料、或SIMD資料。例示之架構暫存器亦包括緊縮資料操作遮罩暫存器108。每一緊縮資料操作遮罩暫存器可操作以儲存緊縮資料操作遮罩。
架構暫存器代表板上處理器儲存位置。架構暫存器亦可於文中被簡稱為暫存器。除非另有指明或為清楚明白,術語架構暫存器、暫存器檔案、及暫存器於文中被用以指稱軟體及/或編程器可見的(例如,軟體可見的)及/或由微指令所指明以識別運算元的暫存器。這些暫存器被對比與一既定微架構中之其他非架構暫存器(例如,暫時暫存器、重排序緩衝器、收回(retirement)暫存器,等等)。
圖示之ISA亦包括由處理器所支援之指令集102。指令集包括數種不同類型的指令。指令集之這些指令代表微指令(例如,提供給處理器以供執行之指令),相對於微指令或微操作(例如,從處理器的解碼器解碼微指令所得者)。
指令集包括一或更多遮蔽的緊縮資料指令103。遮蔽的緊縮資料指令可類似於先前技術中所述之緊縮資料指令,具有一些顯著的差異。類似於前述的緊縮資料指令,每
一遮蔽的緊縮資料指令可操作以造成或導致處理器履行緊縮資料操作於一或更多由緊縮資料指令所指示之緊縮資料運算元的資料元件上。緊縮資料運算元可被儲存於緊縮資料暫存器107中。然而,每一遮蔽的緊縮資料指令可使用一或更多緊縮資料操作遮罩暫存器108及/或緊縮資料操作遮罩,以遮蔽、闡述、或有條件地控制緊縮資料處理。緊縮資料操作遮罩及/或遮罩暫存器可代表遮罩運算元、述詞(predicate)運算元、或條件操作控制運算元。
緊縮資料操作遮罩及/或遮罩暫存器可操作而遮蔽或有條件地控制緊縮資料處理以每資料元件粒度。例如,緊縮資料操作遮罩可操作以遮蔽其在來自單一來源緊縮資料運算元之個別資料元件或來自兩來源緊縮資料運算元之相應資料元件的個別對上所履行之遮蔽的緊縮資料指令之結果是否將儲存於緊縮資料結果中。遮蔽的緊縮資料指令可容許各資料元件或相應資料元件對之緊縮資料處理分離地或獨立於資料元件地被闡述(predicated)或有條件地控制。遮蔽的緊縮資料指令、操作、及遮罩可提供某些優點,諸如(例如)增加的碼密度及/或較高的指令通量。
再次參考圖1,指令集亦包括一或更多緊縮資料操作遮罩及/或遮罩暫存器調處(manipulation)指令104。每一緊縮資料操作遮罩及/或遮罩暫存器調處指令可操作以造成或導致處理器調處或操作於一或更多緊縮資料操作遮罩暫存器108及/或遮罩上。如圖所示,緊縮資料操作遮罩及/或遮罩暫存器調處指令可包括一或更多緊縮資料操
作遮罩暫存器算術組合指令105。每一緊縮資料操作遮罩暫存器算術組合指令105可操作以造成或導致處理器算術地結合二或更多緊縮資料操作遮罩暫存器108之至少部分。緊縮資料操作遮罩暫存器算術組合指令之各種不同實施例將被進一步描述於下。
處理器亦包括執行邏輯109。執行邏輯可操作以執行或處理指令集之指令(例如,遮蔽的緊縮資料指令及緊縮資料操作遮罩算術組合指令)。執行邏輯可包括執行單元、功能單元、算術單元、加法器、算術邏輯單元,等等。
為了進一步說明緊縮資料操作遮罩,可有助於考量其使用之代表性範例。圖2A為一方塊圖,其說明具有合併之遮蔽緊縮資料操作203A的第一代表性範例實施例。遮蔽的緊縮資料操作可被履行以回應於(或者由於)遮蔽的緊縮資料指令(例如,圖1的遮蔽的緊縮資料指令103之一)。
用於圖示之遮蔽的緊縮資料操作之指令係指示第一來源緊縮資料210-1及第二來源緊縮資料210-2。其他遮蔽的緊縮資料指令可指示僅單一來源緊縮資料、或者兩個以上來源緊縮資料。於圖示中,第一與第二來源緊縮資料為相同大小、含有相同寬度之資料元件、且因此各含有相同數目的資料元件。於圖示中,每一第一和第二來源緊縮資料具有十六個資料元件。舉例而言,第一和第二來源緊縮資料可各為512位元寬且可各包括十六個32位元的雙字元資料元件。於兩個來源緊縮資料中之相同位元位置中的
來源資料元件(例如,於相同的垂直位置)代表相應資料元件對。每一資料元件具有一顯示於代表資料元件之區塊內的數值。例如,第一來源緊縮資料之最低階資料元件(於右側)具有3之值,第一來源緊縮資料之次低階資料元件具有7之值,第一來源緊縮資料之最高階資料元件(於左側)具有12之值,等等。
遮蔽的緊縮資料操作之指令亦指示緊縮資料操作遮罩211。緊縮資料操作遮罩包括多個遮罩元件、述詞元件、條件控制元件、或旗標。元件或旗標可被包括在與一或更多相應來源資料元件之一對一對應中。例如,如圖示中所示,可有針對各相應來源資料元件對之一此類元件或旗標,於涉及兩來源緊縮資料運算元之操作的情況下。緊縮資料操作遮罩之各元件或旗標可操作以遮蔽對於一或更多相應來源緊縮資料元件之分離的緊縮資料操作。例如,於此範例中,各元件或旗標可遮蔽對於相應來源緊縮資料元件對之分離的緊縮資料操作。
如圖示中所示,通常各元件或旗標可為單一位元。單一位元可容許指明兩不同可能性之任一者(例如,履行該操作相對於不履行該操作、儲存該操作之結果相對於不儲存該操作之結果,等等)。替代地,假如介於兩不同選項間之選擇是想要的,則兩或更多位元可被用於各旗標或元件。於圖示中,緊縮資料操作遮罩包括十六個位元(亦即,0011100001101011)。十六個位元之每一者具有針對第一和第二緊縮資料的十六個相應資料元件對之一的依序對
應。例如,遮罩之最低階位元係相應於第一和第二緊縮資料的該相應最低階資料元件對;遮罩之最高階位元係相應於該相應最高階資料元件對,等等。於替代實施例中,其中來源緊縮資料具有較少或較多的資料元件,緊縮資料操作遮罩可類似地具有較少或較多的資料元件。
特別例示之遮蔽的緊縮資料操作為遮蔽的緊縮資料加入操作,其可操作以有條件地將來自第一和第二來源緊縮資料210-1、210-2之相應資料元件對的總和儲存於緊縮資料結果212中,依據由緊縮資料操作遮罩211之相應位元所提供之條件操作控制或闡述。此特別之遮蔽的緊縮資料加入操作係指明其單一操作(於此情況下為加入)將以垂直方式被有條件地履行在各相應資料元件對上,分離地或獨立於其他對地。目的地運算元或緊縮資料結果係與來源緊縮資料有相同大小,且具有如來源緊縮資料之相同的資料元件數目。因此,各相應來源資料元件對具有相應結果資料元件,在如來源緊縮資料中之其相應的來源資料元件對之緊縮資料結果的相同位元位置中。
再次參考緊縮資料操作遮罩211。緊縮資料操作遮罩之十六位元的每一者被設定(亦即,具有1之二元值)或被清除(亦即,具有0之二元值)。依據圖示之規範(convention),各位元個別被設定(亦即,1)或被清除(亦即,0),以容許或不容許緊縮資料操作(在第一和第二來源緊縮資料之相應資料元件對上所履行)被儲存於緊縮資料結果之相應資料元件中。例如,緊縮資料操作遮罩
中之次低階位元被設定(亦即,1),而代表在該相應次低階資料元件對上所履行之緊縮資料加入操作(亦即,7+1)的結果之總和(亦即,8)被儲存於緊縮資料結果之相應次低階資料元件中。於圖示中,總和被加底線標示。
相反地,當既定位元被清除時(亦即,0),則針對相應資料元件對之緊縮資料操作的結果不容許被儲存於緊縮資料結果的相應資料元件中。反之,另一值可被儲存於結果資料元件中。例如,如圖示中所示,來自第二來源緊縮資料之相應資料元件的值可被儲存於緊縮資料結果之相應資料元件中。例如,緊縮資料操作遮罩中之最高階位元被清除(亦即,0),且來自第二來源緊縮資料之最高階資料元件的數值(亦即,15)被儲存於緊縮資料結果之最高階資料元件中。此被稱為合併-遮蔽。針對該例示之相反的規範亦是可能的,其中位元被清除(亦即,0)以容許結果被儲存;或位元被設定(亦即,1)以不容許結果被儲存。
於某些實施例中,緊縮資料操作可選擇性地被履行在第一和第二來源緊縮資料之所有相應的資料元件對上,而不論緊縮資料操作遮罩之相應位元是被設定或是被清除,但緊縮資料操作之結果係根據緊縮資料操作遮罩之相應位元被設定或清除而可或不可被儲存於緊縮資料結果中。替代地,於另一實施例中,假如緊縮資料操作遮罩之相應位元指明其該操作之結果不被儲存於緊縮資料結果操作中,則緊縮資料操作可選擇性地被省略(亦即,不履行)。於
某些實施例中,例外(例如,例外旗標)或違反可藉由對於遮蔽掉元件之緊縮資料操作而選擇性地被抑制或不提出。於某些實施例中,針對具有記憶體運算元之遮蔽的緊縮資料指令,記憶體故障(faults)可針對遮蔽掉資料元件而選擇性地被抑制。此特徵可有助於實施控制流程闡述,因為遮罩可效果上提供合併行為緊縮資料暫存器,但並非必要的。
圖2B為一方塊圖,其說明具有歸零之遮蔽緊縮資料操作203B的第二代表性範例實施例。具有歸零之遮蔽緊縮資料操作係類似於前述具有合併之遮蔽緊縮資料操作。為了避免混淆其描述,類似處將不再重複數,而相反地,主要將提及其差異。一個顯著的差異在於:取代將來源緊縮資料(例如,圖2A中之第二來源緊縮資料210-2)之資料元件的值合併或儲存於緊縮資料結果的相應資料元件中,當緊縮資料結果之相應位元被遮蔽掉(例如,清除至0)時,則緊縮資料結果之相應資料元件可被歸零。例如,雙字元結果緊縮資料元件之所有32位元可具有零之值。此被稱為歸零-遮蔽。替代地,亦可選擇性地使用零之外的其他預定值。
這些僅為遮蔽的緊縮資料操作之少數說明性範例。應理解:處理器可支援多種不同類型之遮蔽的緊縮資料操作。例如,這些可包括:那些僅具有一個(或兩個以上)緊縮資料者、那些產生不同大小之結果緊縮資料者、那些具有不同大小之資料元件者、及/或那些具有不同結果資料
元件順序者、以及其組合。
圖3為製造物件(例如,電腦程式產品)313之方塊圖,該製造物件313包括一儲存緊縮資料操作遮罩暫存器算術組合指令305之機器可讀取儲存媒體314。於某些實施例中,機器可讀取儲存媒體可為有形的及/或非暫態的機器可讀取儲存媒體。於各種範例實施例中,機器可讀取儲存媒體314可包括軟碟、光碟、CD-ROM、磁碟、磁光碟、唯讀記憶體(ROM)、可編程ROM(PROM)、可抹除可編程ROM(EPROM)、電氣可抹除可編程ROM(EEPROM)、隨機存取記憶體(RAM)、靜態RAM(SRAM)、動態RAM(DRAM)、快閃記憶體、相位改變記憶體、半導體記憶體、其他類型的記憶體、或者其組合。於某些實施例中,媒體可包括一或更多固態材料,諸如(例如)半導體材料、相位改變材料、磁性材料、透光固態材料,等等。
緊縮資料操作遮罩暫存器算術組合指令305可操作以:指明或者指示一第一緊縮資料操作遮罩暫存器、指明或者指示一第二緊縮資料操作遮罩暫存器、及指明或者指示目的地儲存位置。於某些實施例中,指令可操作以明確地指明第一緊縮資料操作遮罩暫存器、第二緊縮資料操作遮罩暫存器、及目的地儲存位置(其,於某些形態中,亦可為緊縮資料操作遮罩暫存器)之每一者。指令可具有由指令格式或指令之編碼所界定的位元或者一或更多欄位,以明確地指明暫存器或儲存位置。於某些實施例中,指令可
遵循VEX編碼系統,雖然此非必要。雖然對於本說明書之理解並非必要,假如需要的話,VEX編碼系統之進一步細節可見於下列文件:The Intel® 64 and IA-32 Architectures Software Developer's Manual,Order Number:253666-039US,May 2011,by Intel Corporation,of Santa Clara,California。替代地,指令可暗示地指示暫存器或儲存位置之一或更多者。於某些實施例中,目的地儲存位置可不同於第一和第二來源緊縮資料操作遮罩暫存器。於其他實施例中,第一與第二緊縮資料操作遮罩暫存器之一可被使用為目的地儲存位置(例如,可被算術組合至少部分地覆寫)。
假如由機器(例如,處理器或指令處理設備)所執行的話,緊縮資料操作遮罩暫存器算術組合指令可操作以致使機器將第一緊縮資料操作遮罩暫存器之位元的至少一部分與第二緊縮資料操作遮罩暫存器之位元的至少一相應部分之算術組合儲存於目的地儲存位置中。應理解:如文中所揭露用以履行一或更多操作或方法之其他指令或指令之序列(例如,使用緊縮資料操作遮罩暫存器算術組合指令之常式或演算法)亦可被儲存於儲存媒體上。
不同類型的機器之範例包括(但不限定於)指令處理設備、指令執行設備、處理器(例如,通用處理器和特殊用途處理器)、及各種具有一或更多指令處理設備、指令執行設備、及/或處理器之電子裝置。此類電子裝置之代表性範例包括(但不限定於)電腦系統、桌上型電腦、膝
上型電腦、筆記型電腦、伺服器、網路路由器、網路開關、桌上型易網機(nettop)、機上盒、行動電話、遊戲機控制器,等等。
圖4為指令處理設備415之範例實施例的方塊圖,該指令處理設備415具有一可操作以執行包括緊縮資料操作遮罩暫存器算術組合指令405之範例實施例的指令之執行單元417。於某些實施例中,指令處理設備可為處理器及/或可被包括於處理器中。例如,於某些實施例中,指令處理設備可為(或可被包括於)圖1之處理器100(或一類似者)。替代地,指令處理設備可被包括於不同的處理器、或電子系統中。
指令處理設備415可接收緊縮資料操作遮罩暫存器算術組合指令405。緊縮資料操作遮罩暫存器算術組合指令可代表由指令處理設備所辨識之機器指令、微指令、或控制信號。指令處理設備可具有特定的或特別的電路或其他邏輯(例如,與硬體及/或韌體結合之軟體),其可操作以回應於指令(或由於指令之結果)來處理指令及/或儲存結果。
指令處理設備之例示實施例包括指令解碼器416。解碼器可接收並解碼較高階的機器指令或微指令,諸如已接收之緊縮資料操作遮罩暫存器算術組合指令。解碼器可產生並輸出一或更多較低階微操作、微碼進入點、微指令、或者其他較低階的指令或控制信號,其反射及/或被衍生自原始較高階指令。一或更多較低階指令或控制信號可透
過一或更多較低階(例如,電路階或硬體階)操作以實施較高階指令之操作。解碼器可使用各種不同機制而被實施。適當機制之範例包括(但不限定於)微碼唯讀記憶體(ROM)、查找表、硬體實施、可編程邏輯陣列(PLA)、其他用以實施本技術中已知的解碼器之機制,等等。
替代地,取代具有指令解碼器416,於一或更多其他實施例中,設備可另具有指令仿真器(emulator)、翻譯器、編輯器(morpher)、解譯器、或其他指令轉換邏輯。各種不同類型的指令轉換邏輯是本技術中所已知的,且可被實施以軟體、硬體、韌體、或其組合。指令轉換邏輯可接收緊縮資料操作遮罩暫存器算術組合指令、仿真、翻譯、編輯、解譯、或者將其轉換為一或更多相應的衍生指令或控制信號。於又其他實施例中,指令處理設備可具有解碼器及額外的指令轉換邏輯。例如,指令處理設備可具有:指令轉換邏輯,用以將緊縮資料操作遮罩暫存器算術組合指令轉換為第二指令、及解碼器,用以將第二指令解碼成可由指令處理設備之本機硬體所執行的一或更多較低階指令或控制信號。部分或所有指令轉換邏輯可被置於離開指令處理設備之剩餘者的晶粒外,諸如於分離的晶粒上或者於晶粒外記憶體中。
再次參考圖4,指令處理設備亦包括第一緊縮資料操作遮罩暫存器408-1及第二緊縮資料操作遮罩暫存器408-2。如先前所述,指令可明確地指明(例如,透過一或更多欄位)或另外指示第一緊縮資料操作遮罩暫存器、第二
緊縮資料操作遮罩暫存器、及目的地儲存位置419。於某些實施例中,目的地儲存位置可為第三緊縮資料操作遮罩暫存器408-3。替代地,目的地儲存位置可為另一暫存器或記憶體位置。於某些實施例中,第一、第二、及第三緊縮資料操作遮罩暫存器可於一組緊縮資料操作遮罩暫存器(例如,暫存器檔案)408之間。
緊縮資料操作遮罩暫存器可各代表一板上處理器儲存位置。緊縮資料操作遮罩暫存器可代表架構暫存器。緊縮資料操作遮罩暫存器可為軟體及/或編程器可見的(例如,軟體可見的)及/或可為由微指令(例如,緊縮資料操作遮罩算術組合指令)所指示或指明以識別運算元的暫存器。緊縮資料操作遮罩暫存器可被實施以不同方式於不同微架構中,使用眾所周知的技術且不限於任何已知特定類型的電路。各種不同類型的暫存器均為適合的,只要其能夠儲存及提供如文中所述之資料。適當類型的暫存器之範例包括(但不限定於)專屬實體暫存器、使用暫存器重新命名之動態配置的實體暫存器、及其組合。
指令處理設備亦包括執行單元417。執行單元係耦合與第一、第二、和第三緊縮資料操作遮罩暫存器。執行單元亦耦合與解碼器。執行單元可從解碼器接收一或更多微操作、微碼進入點、微指令、其他指令、或其他控制信號,其係反射(或者被衍生自)緊縮資料操作遮罩暫存器算術組合指令。
執行單元可操作以回應於及/或由於緊縮資料操作遮
罩暫存器算術組合指令而將第一緊縮資料操作遮罩暫存器之位元的至少一部分與第二緊縮資料操作遮罩暫存器之位元的至少一相應部分之算術組合儲存於目的地儲存位置中。舉例而言,執行單元可包括算術單元、算術邏輯單元、相加單元、加法器電路、相減單元、減法器電路、功能性單元,等等。執行單元可包括算術組合邏輯(例如,積體電路)418,其可操作以履行算術組合。執行單元及/或算術組合邏輯可包括電路或其他執行邏輯(例如,軟體、韌體、硬體、或組合),其可操作以實施指令之操作(例如,執行一或更多微指令)。
於某些實施例中,指令405可為緊縮資料操作遮罩暫存器相加指令,而執行單元可操作以將第一和第二遮罩暫存器之位元的至少相應部分相加及/或加總。於其他實施例中,指令405可為緊縮資料操作遮罩暫存器相減指令,而執行單元可操作以將第一和第二遮罩暫存器之位元的至少相應部分相減及/或區別。於此應注意:可利用負/反操作而由相減指令履行相加,且可利用負/反操作而由相加指令履行相減。
於某些實施例中,第一和第二遮罩暫存器之位元的相應部分可為相同大小的部分,且各者之大小可為8位元、16位元、32位元、或64位元,取決於緊縮資料資料寬度及與相同大小部分關聯的資料元件寬度(例如,一部分中之每一位元可相應於不同的緊縮資料元件)。於某些情況下,指令處理設備之指令集可包括用於這些不同8位元、
16位元、32位元、或64位元大小的部分之每一者之不同指令且該等部分的大小可為暗示之指令(例如,暗示指令之運算碼),雖然此並非必要。緊縮資料操作遮罩暫存器可至少如已支援之緊縮資料操作遮罩的最大大小一般大、或者選擇性地更大。於一範例中,緊縮資料操作遮罩暫存器可為64位元寬,雖然此並非必要。
於某些實施例中,執行單元417可操作以將第一與第二緊縮資料操作暫存器之位元的相應最低階(或最低有效)部分之和或差儲存於目的地儲存位置之位元的相應最低階(或最低有效)部分中,且執行單元可操作以將目的地儲存位置之位元的最高階(或最高有效)部分歸零(或替代地將位元的最高階部分設為其他預定值)。操作之部分可代表暫存器中之有效位元、已利用位元、或有意義位元,而暫存器之剩餘的最高階位元可代表非有效位元、未利用位元、非有意義位元、或無關位元。替代地,和及/或差可被取於最高階部分上,而目的地儲存位置之位元的最低階部分可被歸零。
為了避免混淆此描述,已顯示並描述一種相當簡單的指令處理設備。於其他實施例中,指令處理設備或處理器可選擇性地包括其他眾所周知的組件,諸如(例如)指令提取單元、指令排程單元、分支預測單元、指令和資料快取、指令和資料翻譯旁看緩衝器、預提取緩衝器、微指令佇列(queues)、微指令排序器(sequencer)、匯流排介面單元、第二或更高階快取、收回單元、暫存器重新命名
單元、或其各種不同組合。再者,其他實施例可具有多個不同類型的執行單元,而這些執行單元之至少一者係回應於如文中所揭露之指令的實施例。又其他實施例可具有多個核心、邏輯處理器、或執行引擎。一可操作以執行如文中所揭露之指令的實施例之執行單元可被包括於核心、邏輯處理器、或執行引擎之至少一者、至少兩者、大部分、或所有內。確實有此類組件之多種不同的可能組合及架構於處理器及指令處理設備中。本發明之範圍不限於任何已知的此類組合或架構。
圖5為一處理緊縮資料操作遮罩暫存器算術組合指令之範例實施例的方法520之範例實施例之方塊流程圖。於各個實施例中,此方法可由通用處理器、特殊用途處理器(例如,圖形處理器或數位信號處理器)、或其他類型的數位邏輯裝置或指令處理設備來履行。於某些實施例中,方法520可由圖1之處理器100、或圖4之指令處理設備415、或類似的處理器或指令處理設備所履行。替代地,方法520可由處理器或指令處理設備之不同實施例所履行。再者,圖1之處理器100、及圖4之指令處理設備415可履行操作和方法之實施例,無論是相同於、類似於、或不同於圖5之方法520的那些方法。
此方法包括接收緊縮資料操作遮罩暫存器算術組合指令,於方塊521。緊縮資料操作遮罩暫存器算術組合指令係指明或指示第一緊縮資料操作遮罩暫存器、指明或指示第二緊縮資料操作遮罩暫存器、及指明或指示目的地儲存
位置。於某些實施例中,指令格式或指令之編碼可具有位元或者一或更多欄位以明確地指明這些運算元。於各種形態中,指令可被接收於一處理器、一指令處理設備、或者其一部分(例如,解碼器、指令轉換器,等等)。於各種形態中,指令可被接收自處理器外來源(例如,自主記憶體、碟片、或者匯流排或網際網路)、或者接收自處理器上來源(例如,自指令快取)。
接著,第一緊縮資料操作遮罩暫存器之位元的至少一部分、及第二緊縮資料操作遮罩暫存器之位元的至少一相應部分的算術組合被儲存於目的地儲存位置中,回應於緊縮資料操作遮罩暫存器算術組合指令,於方塊522。此結果包括其已由位元之位移計數所位移的緊縮資料操作遮罩之位元的序列。舉例而言,執行單元、指令處理設備、或處理器可產生或計算算術組合。
於某些實施例中,所接收的指令可為緊縮資料操作遮罩暫存器相加指令,而算術組合可為第一和第二遮蔽暫存器之位元的至少相應部分之加總及/或相加。於其他實施例中,所接收的指令可為緊縮資料操作遮罩暫存器相減指令,而算術組合可為第一和第二遮蔽暫存器之位元的至少相應部分之區別及/或相減。
於某些實施例中,第一和第二遮罩暫存器之位元的相應部分可為相同大小的部分,且各者之大小可為8位元、16位元、32位元、或64位元,取決於緊縮資料寬度及與相同大小部分關聯的資料元件寬度(例如,一部分中之每
一位元可相應於不同的緊縮資料元件)。於某些情況下,指令處理設備之指令集可包括用於這些不同8位元、16位元、32位元、或64位元大小的部分之每一者之不同指令且該等部分的大小可為暗示之指令(例如,暗示指令之運算碼),雖然此並非必要。緊縮資料操作遮罩暫存器可至少如已支援之緊縮資料操作遮罩的最大大小一般大、或者選擇性地更大。於一範例中,緊縮資料操作遮罩暫存器可為64位元寬,雖然此並非必要。
於某些實施例中,方法可包括將第一與第二緊縮資料操作遮罩暫存器之位元的相應最低階(或最低有效)部分之和或差儲存於目的地儲存位置之位元的相應最低階(或最低有效)部分中,及將目的地儲存位置之位元的最高階(或最高有效)部分歸零(或替代地將位元的最高階部分設為其他預定值)。替代地,和及/或差可被取於最高階部分上,而目的地儲存位置之位元的最低階部分可被歸零(或設為其他預定值)。
例示之方法包括處理器或指令處理設備從外部可見之操作(例如,從軟體之觀點)。於其他實施例中,此方法可選擇性地包括一或更多其他操作(例如,一或更多發生於處理器或指令處理設備之內部的操作)。舉例而言,在指令被接收之後,指令可被解碼、翻譯、仿真、或者被轉換為一或更多其他的指令或控制信號。第一和第二緊縮資料操作遮罩可被存取及/或接收。執行單元可被致能以依據該指令而產生或計算算術組合,並可產生或計算算術組
合。
此外,此方法亦可配合其他操作及/或方法而使用。例如,如以下所將進一步討論者,此方法可選擇性地為用以相加大數(例如,大整數)之指令的演算法或序列之部分,且與該序列之其他指令關聯的操作可選擇性地被加至該方法。例如,另一指令可儲存第一緊縮資料操作遮罩暫存器之位元的部分,且這些位元可代表執行與兩緊縮資料運算元之相應緊縮資料元件的相加關聯的資訊,如以下將進一步解釋。
圖6為緊縮資料暫存器607之適當集合的範例實施例之方塊圖。例示的緊縮資料暫存器包括三十二個512位元寬的緊縮資料或向量暫存器。這些三十二個512位元寬的暫存器被標示以ZMM0至ZMM31。於例示的實施例中,這些暫存器之較低的十六個之較低階256位元(亦即,ZMM0至ZMM15)被混疊(aliased)或覆蓋在標示為YMM0至YMM15之個別256位元寬的緊縮資料或向量暫存器上,雖然此非必要。類似地,於例示的實施例中,YMM0至YMM15之較低階128位元被混疊或覆蓋在標示為XMM0至XMM1之個別128位元寬的緊縮資料或向量暫存器上,雖然此非必要。512位元寬的暫存器ZMM0至ZMM31可操作以保持512位元緊縮資料、256位元緊縮資料、或128位元緊縮資料。256位元寬的暫存器YMM0至YMM15可操作以保持256位元緊縮資料、或128位元緊縮資料。128位元寬的暫存器XMM0至XMM1可操作以保
持128位元緊縮資料。每一暫存器可被用以儲存緊縮浮點資料或緊縮整數資料。支援不同的資料元件大小,包括至少8位元位元組資料、16位元字元資料、32位元雙字元或單精確浮點資料、及64位元四字元或雙精確浮點資料。緊縮資料暫存器之替代實施例可包括不同數目的暫存器、不同大小的暫存器、且可或不可在較小暫存器上混疊較大的暫存器。
圖7為一方塊圖,其說明適當緊縮資料資料格式之數個範例實施例。256位元緊縮字元格式710-1為256位元寬且包括十六個16位元字元資料元件。十六個16位元字元資料元件被標示於圖形中,從最低至最高有效位元位置為WORD0至WORD15。256位元緊縮雙字元格式710-2為256位元寬且包括八個32位元雙字元(dword)資料元件。八個32位元雙字元資料元件被標示於圖形中,從最低至最高有效位元位置為DWORD0至DWORD7。256位元緊縮四字元格式710-3為256位元寬且包括四個64位元四字元資料元件。四個64位元四字元資料元件被標示於圖形中,從最低至最高有效位元位置為QWORD0至QWORD3。
其他的緊縮資料格式亦為適合的。例如,其他適合的256位元緊縮資料格式包括256位元緊縮8位元位元組格式、256位元緊縮32位元單精確浮點格式、及256位元緊縮64位元雙精確浮點格式。單和雙精確浮點格式可個別地出現類似於圖示之雙字元格式710-2和四字元格式
710-3,雖然資料元件內之位元的意義/解讀可以不同。再者,大於及/或小於256位元之緊縮資料格式亦為適合的。例如,前述資料類型之512位元(或更大)緊縮資料格式及/或128位元(或更小)緊縮資料格式亦為適合的。一般而言,512位元緊縮資料格式可具有針對相同資料類型之256位元緊縮資料格式兩倍多的資料元件,而128位元緊縮資料格式可具有針對相同資料類型之256位元緊縮資料格式一半多的資料元件。通常,緊縮資料元件之數目係等於緊縮資料之位元的大小除以緊縮資料元件之位元的大小。
圖8為一表格,其說明緊縮資料操作遮罩位元之數目823係取決於緊縮資料寬度及緊縮資料元件寬度。顯示128位元、256位元、及512位元之緊縮資料寬度,雖然其他寬度亦為可能的。考量8位元位元組、16位元字元、32位元雙字元(dwords)或單精確浮點、及64位元四字元(Qwords)或雙精確浮點之緊縮資料元件寬度,雖然其他寬度亦為可能的。
如圖所示,當緊縮資料寬度為128位元時,16位元可被用於遮蔽當緊縮資料元件寬度為8位元時;8位元可被用於遮蔽當緊縮資料元件寬度為16位元時;4位元可被用於遮蔽當緊縮資料元件寬度為32位元時;及2位元可被用於遮蔽當緊縮資料元件寬度為64位元時。當緊縮資料寬度為256位元時,32位元可被用於遮蔽當緊縮資料元件寬度為8位元時;16位元可被用於遮蔽當緊縮資
料元件寬度為16位元時;8位元可被用於遮蔽當緊縮資料元件寬度為32位元時;及4位元可被用於遮蔽當緊縮資料元件寬度為64位元時。當緊縮資料寬度為512位元時,64位元可被用於遮蔽當緊縮資料元件寬度為8位元時;32位元可被用於遮蔽當緊縮資料元件寬度為16位元時;16位元可被用於遮蔽當緊縮資料元件寬度為32位元時;及8位元可被用於遮蔽當緊縮資料元件寬度為64位元時。
圖9為緊縮資料操作遮罩暫存器908之適當集合的範例實施例之方塊圖。每一緊縮資料操作遮罩暫存器可被用以儲存緊縮資料操作遮罩。於例示之實施例中,該集合包括標示為k0至k7之八個緊縮資料操作遮罩暫存器。替代實施例可包括少於八(例如,二、四、六,等等)或多於八(例如,十六、二十、三十二,等等)個緊縮資料操作遮罩暫存器。於例示之實施例中,每一緊縮資料操作遮罩暫存器為64位元寬。於替代實施例中,緊縮資料操作遮罩暫存器之寬度可寬於64位元(例如,80位元、128位元,等等)或窄於64位元(例如,8位元、16位元、32位元,等等)。緊縮資料操作遮罩暫存器可被以不同方法實施以使用眾所周知之技術的方式且不限於任何已知特定類型之電路。各種不同類型的暫存器均為適合的,只要其能夠如文中所述般儲存及提供資料。適合暫存器之範例包括(但不限定於)專屬實體暫存器、使用暫存器重新命名之動態配置的實體暫存器、及其組合。
於某些實施例中,緊縮資料操作遮罩暫存器908可為架構暫存器之分離的、專屬的集合。於某些實施例中,指令可以其用來編碼或指明其他類型暫存器(例如,圖1之緊縮資料暫存器108)之位元或欄位組合之外的指令格式之不同位元或者一或更多不同欄位組合來編碼或指明緊縮資料操作遮罩暫存器。舉例而言,遮蔽的緊縮資料指令可使用三個位元(例如,3位元欄位)來編碼或指明k0至k7的八個緊縮資料操作遮罩暫存器之任一者。於替代實施例中,當有較少或較多緊縮資料操作遮罩暫存器時可個別地使用較少或較多的位元。於一特定實施例中,僅有緊縮資料操作遮罩暫存器k1至k7(但非k0)可被定址為一用以闡述遮蔽的緊縮資料操作之述詞運算元。暫存器k0可被使用為一般來源或目的地,但無法被編碼為述詞運算元(例如,假如k0被指明其具有全為壹或「無遮罩」編碼)。於其他實施例中,所有或者僅有部分暫存器可被編碼為述詞運算元。
圖10為一圖形,其說明緊縮資料操作遮罩暫存器1008的範例實施例並顯示其被使用為緊縮資料操作遮罩及/或用於遮蔽之位元數係取決於緊縮資料寬度及資料元件寬度。緊縮資料操作遮罩暫存器之例示範例實施例為64位元寬,雖然此並非必要。根據緊縮資料寬度及資料元件寬度之組合,所有64位元(或者僅有64位元之子集)可被使用為用以遮蔽之緊縮資料操作遮罩。一般地,當單一的、每元件的遮蔽控制位元被使用時,其被用於遮蔽
之緊縮資料操作遮罩暫存器中的位元數係等於位元為單位之緊縮資料寬度除以位元為單位之緊縮資料元件寬度。
數個說明性範例被顯示。亦即,當緊縮資料寬度為512位元且緊縮資料元件寬度為64位元時,則僅有暫存器之最低階8位元被使用為緊縮資料操作遮罩。當緊縮資料寬度為512位元且緊縮資料元件寬度為32位元時,則僅有暫存器之最低階16位元被使用為緊縮資料操作遮罩。當緊縮資料寬度為512位元且緊縮資料元件寬度為16位元時,則僅有暫存器之最低階32位元被使用為緊縮資料操作遮罩。當緊縮資料寬度為512位元且緊縮資料元件寬度為8位元時,則暫存器之所有64位元均被使用為緊縮資料操作遮罩。依據例示之實施例,遮蔽的緊縮資料指令可僅存取及/或利用其用於緊縮資料操作遮罩之暫存器的最低階或最低有效位元的數目,根據與緊縮資料寬度及資料元件寬度關聯的指令。
於例示之實施例中,暫存器之最低階子集或部分被用於遮蔽,雖然此並非必要。於替代實施例中,最高階子集(或某其他子集)可選擇性地被使用。再者,於例示之實施例中,僅考量了512位元之緊縮資料寬度,然而,相同的原理適用於其他的緊縮資料寬度,諸如(例如)256位元及128位元寬度。如先前所提,64位元緊縮資料操作遮罩暫存器之使用並非必要。
圖11A-11D說明緊縮資料操作遮罩暫存器相加指令及其操作之各種特定範例實施例。於這些實施例中,
SRC1為第一來源;SRC2為第二來源;DEST為目的地;MAX_KL代表DEST之位元數;而符號←代表儲存。於某些實施例中,SRC1、SRC2及DEST各為緊縮資料操作遮罩暫存器,以及於某些實施例中,MAX_KL為64位元,雖然此並非必要。於其他實施例中,除了DEST之最高階部分被歸零以外,其可被給定另一預定值(例如,所有者或者保留或合併來自SRC1或SRC2之一的值)。又其他實施例包括緊縮資料操作遮罩暫存器相減指令,除了以相減操作取代相加操作之外其係相同於例示的指令。
文中所揭露之緊縮資料操作遮罩暫存器算術組合指令具有一般利用性。例如,其可被用以相加、相減、或算術地組合緊縮資料操作遮罩及/或遮罩暫存器,以其可用於且適用於特定的應用、演算法、碼、或實施之方式。那些熟悉本項技術人士將以不同演算法下之多種不同方式來使用這些通用指令(例如,以組合遮罩)。
於某些實施例中,緊縮資料操作遮罩暫存器算術組合指令可被用以履行位元調處於遮罩暫存器中之遮罩(例如,配合其他指令使用以產生具有某些屬性之遮罩暫存器)。當作一特定範例,指令可被使用為一種演算法之部分,以找出第一遮罩中之最低有效集位元的位置;以及產生一具有從該找出的位置向下直到最低有效位元之所有位元集(亦即,1)的第二遮罩,並清除在該找出位置以上之所有位元(亦即,0)。於一形態中,亦可使用排他或XOR型的操作。
於其他實施例中,文中所揭露之緊縮資料操作遮罩暫存器算術組合指令及/或操作可被用於配合履行大整數相加及/或相減,其可用於各種不同應用。大整數相加及/或相減可涉及二或更多大整數(例如,具有至少128位元、至少256位元、或至少512位元之整數)之相加或相減。處理器經常不支援諸如128位元或256位元等此一大尺寸的資料元件,但反之經常支援具有(例如)64位元、或32位元之較小最大尺寸的資料元件。大整數之每一者可涵蓋一緊縮資料暫存器內之數個較小資料元件(例如,32位元或64位元資料元件)。例如,兩個512位元整數之每一者可涵蓋512位元緊縮資料或暫存器中之十六個32位元資料元件或八個64位元資料元件。
為了進一步說明某些觀念,考量透過十六個分離的32位元相加之兩個512位元整數的相加。一開始,緊縮資料相加指令/操作可被履行於包括大整數(其各涵蓋十六個32位元資料元件)之兩個緊縮資料上。緊縮資料相加指令可將相應位置中之相應對的32位元資料元件之每一者相加,並將總和儲存於目的地中。相應對的32位元資料元件之各相加可潛在地(取決於被相加之32位元資料元件的值)涉及攜出(carry-out)。攜出可發生在當總和之量太大而無法被表示於結果資料元件(例如,32位元)可用的位元數之內時。來自這些十六個相加之任何攜出均可喪失。
接下來,可判定相加之何者涉及喪失的攜出。此可被
完成以各種方式。舉例而言,可使用緊縮資料比較指令以履行比較,來判定相加之何者涉及攜出。緊縮資料比較指令可將總和之每一者的大小與一或更多被相加之來源的相應資料元件的大小進行比較。當相加無符號的整數時,假如總和小於來源之任一者,則可推斷有一攜出。當總和之大小小於來源之任一者的相應資料元件之大小時,相加可被判定為涉及攜出。反之,當總和之大小大於或等於來源之任一者的相應資料元件之大小時,相加可被判定為不涉及攜出。當相加被判定為涉及攜出時則第一緊縮資料操作遮罩(亦即,稱之為K1)之緊縮資料操作遮罩位元可被設定(亦即,1);或者當相加被判定為不涉及攜出時被清除(亦即,0)。於第一緊縮資料操作遮罩(K1)中所設定之各位元代表攜出資訊,其指示相應對的32位元資料元件之相應相加導致攜出,而K1中所清除的各位元指示相應對的32位元資料元件之相應相加不導致攜出。
有可能一相應於一對相鄰較低階資料元件之和的攜出之攜入(carry-in)可引發進一步攜出為較高階資料元件。因為攜入僅為二元的壹,所以引發的攜出應僅發生在當該攜入所被最初加入之和具有所有二元1之值時(亦即,11...11)。當一攜入被加至一具有全為二元壹之元件時,則引發的攜出可發生。因此,在將攜入加至較高階總和之前,可首先履行檢查以察看該些攜入是否將引發攜出。此可被履行以不同方式。於一範例中,可進行總和與包括所有二元1(亦即,11...11)之另一來源的緊縮比較。第二
緊縮資料操作遮罩(稱之為K2)中之位元可根據此第二比較之結果而被設定或清除。特別地,第二緊縮資料操作遮罩(K2)之位元可被設定(亦即,1)在當任何總和等於所有二元1時,或者否則被清除(亦即,0)。因此,K2指示哪些攜入將引發額外攜出。
接著,第一緊縮資料操作遮罩(K1)之位元可被位移以致已設定的攜出位元被移動至其所將被加入為攜入之總和/資料元件(例如,位移至左側一位元)。K1中之設定的位元現在代表其準備好被加入至總和之攜入。
接下來,如文中所揭露之緊縮資料操作遮罩暫存器相加指令及/或操作可被用以將已位移的第一緊縮資料操作遮罩暫存器(K1)與第二緊縮資料操作遮罩暫存器(K2)相加。例如,此操作可由Kaddw k1,k1,k2所表示。此可協助考量引發的攜出。所得的緊縮資料操作遮罩暫存器K1現在含有來自與引發的攜載組合之原始相加的攜入。此可協助調整喪失之中間攜載的大整數和。
接下來,可履行XOR以進行數個調整及/或校正。首先,XOR可協助校正其中可能曾有次要攜載但並無攜入之情況。假如一元件為原始總和後全為二元1,但並無攜入,則那些攜載可被移除。XOR可僅容許次要攜載,假如其確實將具有相應的攜入。這些係因為K1和K2均具有1而被移除。其次,XOR係校正其中次要攜載之相加會提高原始攜載之情況,而留下不正確的「0」於中間元件中。這些中間元件將利用此XOR而使其值設回「1」,
確保其相應的資料元件將具有正確的攜載調整。K1現在具有均為正確的攜載,以完整地校正其被劃分為32位元元件/分段之原始相加。
接者,已調整之第一緊縮資料操作遮罩(K1)中所反映的已調整攜入可被加至總和以產生最終所欲的大整數相加總和。緊縮資料相加指令/操作可被履行,其中攜載被相加在當由第一緊縮資料操作遮罩(K1)所闡述時。
此僅為一說明性範例。較大或較小整數相加亦可被履行為大整數相減。此一演算法之多次重複可被用以履行較大相加。當指令不可得於其中演算法被實施以操作在緊縮資料操作遮罩暫存器上之既定ISA中時,則遮罩可被移動至通用暫存器並於該處調處,且接著被移回至Kadd指令之緊縮資料操作遮罩暫存器。
指令集包括一或更多指令格式。既定的指令格式係界定各種欄位(位元之數目、位元之位置),以指明(除了別的以外)將履行之操作(運算碼)及該操作所將履行之運算元。某些指令格式係透過指令模板(template)(或子格式)之定義而被進一步分解。例如,一既定指令格式之指令模板可被界定以具有指令格式之欄位的不同子集(所包括之欄位通常為相同順序,但至少某些具有不同的位元位置,因為有較少的欄位包括在內)及/或被界定以具有不同地解讀之既定欄位。因此,ISA之各指令係使用既定指令格式(及,假如已界定的話,以該指令格式之指令模板的一既定者)來表達,並包括用以指明操作及運算元
之欄位。例如,一範例ADD指令具有一特定運算碼及一指令格式,其包括用以指明該運算碼之運算碼欄位及用以選擇運算元之運算元欄位(來源1/目的地及來源2);而一指令流中之此ADD指令的出現將具有特定內容於其選擇特定運算元之運算元欄位中。已釋出及/或公開了一組SIMD擴充,其被稱為先進向量擴充(AVX)(AVX1及AVX2)並使用向量擴充(VEX)編碼技術(例如,參見Intel® 64及IA-32架構軟體開發者手冊,2011年十月;亦參見Intel®先進向量擴充編程參考,2011年六月)。
文中所述之指令的實施例可被實施以不同格式。此外,範例系統、架構、及管線被詳述於下。指令之實施例可被執行於此等系統、架構、及管線之上,但不限定於那些詳述者。
VEX編碼容許指令具有多於二運算元,並容許SIMD向量暫存器長於128位元。VEX前綴之使用提供三運算元(或更多)語法。例如,先前的二運算元指令係履行諸如A=A+B(其覆寫來源運算元)等操作。VEX前綴之使用致能運算元履行諸如A=B+C等非破壞性操作。
圖12A說明包括VEX前綴1202、真實運算碼欄位1230、Mod R/M位元組1240、SIB位元組1250、置換欄
位1262、及IMM8 1272之範例AVX指令格式。圖12B說明來自圖12A之哪些欄位組成完整運算碼欄位1274及基礎操作欄位1242。圖12C說明來自圖12A之哪些欄位組成暫存器指標欄位1244。
VEX前綴(位元組0-2)1202被編碼以三位元組形式。第一位元組為格式欄位1240(VEX位元組0,位元[7:0]),其含有明確C4位元組值(用於分辨C4指令格式之獨特值)。第二-第三位元組(VEX位元組1-2)包括提供特定能力之數個位元欄位。明確地,REX欄位1205(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相加而形成。運算元映圖欄位1215(VEX位元組1,位元[4:0]-mmmmm)包括用以編碼暗示的領先運算元位元組之內容。W欄位1264(VEX位元組2,位元[7]-W)係由標號VEX.W所表示,並根據指令而提供不同功能。VEX.vvvv 1220(VEX位元組2,位元[6:3]-vvvv)之角色可包括以下:1)VEX.vvvv編碼第一來源暫存器運算元、以反相(1s補數)形式指明並可用於具有2或更多來源運算元之指令;2)VEX.vvvv編碼目的地暫存器運算元、針對某些向量位移以1s補數形式
指明;或3)VEX.vvvv不編碼任何運算元、該欄位被保留並應含有1111b。假如VEX.L 1268大小欄位(VEX位元組2,位元[2]-L)=0,則指示128位元向量;假如VEX.L=1,則指示256位元向量。前綴編碼欄位1225(VEX位元組2,位元[1:0]-pp)提供額外位元給基礎操作欄位。
真實運算碼欄位1230(位元組3)亦已知為運算碼位元組。運算碼之部分被指明於此欄位中。
Mod R/M位元組1240(位元組4)包括MOD欄位1242(位元[7-6])、Reg欄位1244(位元[5-3])、及R/M欄位1246(位元[2-0])。Reg欄位1244之角色可包括下列:編碼目的地暫存器運算元或來源暫存器運算元之任一者(Rrrr之rrr)、或者被視為運算碼擴充且不被用於編碼任何指令運算元。R/M欄位1246之角色可包括下列:編碼其參照記憶體位址之指令運算元、或者編碼目的地暫存器運算元或來源暫存器運算元之任一者。
比率、指標、基礎(SIB)-比率欄位1250(位元組5)之內容包括SS1252(位元[7-6]),其被用於記憶體位址產生。SIB.xxx 1254(位元[5-3])及SIB.bbb 1256(位元[2-0])之內容先前已針對暫存器指標Xxxx及Bbbb而被提及。
置換欄位1262及即刻欄位(IMM8)1272含有位址資料。
圖13為依據本發明之一實施例的暫存器架構1300之方塊圖。於所示之實施例中,有32個512位元寬之向量暫存器1310;這些暫存器被稱為zmm0至zmm31。較低的16個zmm暫存器之較低階256位元被疊置在暫存器ymm0-16之上。較低的16個zmm暫存器之較低階128位元(ymm暫存器之較低階128位元)被疊置在暫存器xmm0-15之上。
寫入遮罩暫存器1315-於所示之實施例中,有8個寫入遮罩暫存器(k0至k7),大小各為64位元。於一替代實施例中,寫入遮罩暫存器1315之大小為16位元。如先前所述,於本發明之實施例中,向量遮罩暫存器k0無法被使用為寫入遮罩;當其通常將指示k0之編碼被用於寫入遮罩時,其選擇0xFFFF之固線式(hardwired)寫入遮罩,有效地除能該指令之寫入遮蔽。
通用暫存器1325-於所示之實施例中,有十六個64位元的通用暫存器,其係配合現有的x86定址模式而使用以定址記憶體運算元。這些暫存器被稱為下列名稱:RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP、及R8至R15。
純量(scalar)浮點堆疊暫存器檔案(x87堆疊)1345,於其上係混疊MMX緊縮整數平坦暫存器檔案1350-於所示之實施例中,x87堆疊為八元件的堆疊,用以對其使用x87指令集擴充之32/64/80位元的浮點資料履行
純量浮點操作;而MMX暫存器被用以對64位元的緊縮整數資料履行操作,以及保留運算元給某些於MMX與XMM暫存器之間所履行的操作。
本發明之替代實施例可使用較寬的或較窄的暫存器。此外,本發明之替代實施例可使用更多的、更少的、或不同的暫存器檔案及暫存器。
處理器核心可被實施以不同方式、用於不同目的、以及於不同處理器中。例如,此類核心之實施可包括:1)用於通用計算之通用依序核心;2)用於通用計算之通用失序核心;3)主要用於圖形及/或科學(通量)計算之特殊用途核心。不同處理器之實施可包括:1)包括一或更多用於通用計算之通用依序核心及/或一或更多用於通用計算之通用失序核心的CPU;及2)包括一或更多主要用於圖形及/或科學(通量)之特殊用途核心之共處理器。此類不同處理器導致不同的電腦系統架構,其可包括:1)與CPU分離之晶片上的共處理器;2)與CPU相同之封裝中之分離晶粒上的共處理器;3)與CPU相同之晶粒上的共處理器(於此情況下,此一共處理器有時稱為特殊用途邏輯,諸如集成圖形及/或科學(通量)邏輯、或稱為特殊用途核心);及4)可包括在相同晶粒上之上述CPU(有時稱為應用核心或應用處理器)、上述共處理器、及額外功能之晶片上的系統。接下來描述範例核心架構,而
接著描述範例處理器及電腦架構。
圖14A為一方塊圖,其說明依據本發明之實施例的範例依序的管線及範例暫存器重新命名的、失序的發出/執行管線兩者。圖14B為一方塊圖,其說明包括於一依據本發明之實施例的處理器中之依序架構核心之範例實施例及範例暫存器重新命名的、失序的發出/執行架構核心兩者。圖14A-B中之實線方塊係說明依序管線及依序核心,而虛線方塊之選配性加入則說明暫存器重新命名的、失序的發出/執行管線及核心。假設依序形態為失序形態之子集,則將描述失序形態。
於圖14A中,處理器管線1400包括提取級1402、長度解碼級1404、解碼級1406、配置級1408、重新命名級1410、排程(亦已知為調度(dispatch)或發出)級1412、暫存器讀取/記憶體讀取級1414、執行級1416、寫回/記憶體寫入級1418、異常處置級1422、及確定(commit)級1424。
圖14B顯示處理器核心1490,其包括耦合至執行引擎單元1450之前端單元1430,兩者均耦合至記憶體單元1470。核心1490可為精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、極長指令字元(VLIW)核心、或者混合或替代核心型。當作又另一選項,核心
1490可為特殊用途核心,諸如(例如)網路或通訊核心、壓縮引擎、共處理器核心、通用計算圖形處理單元(GPGPU)核心、圖形核心,等等。
前端單元1430包括一耦合至指令快取單元1434之分支預測單元1432,指令快取單元1434係耦合至指令翻譯旁看緩衝器(TLB)1436,指令翻譯旁看緩衝器(TLB)1436係耦合至指令提取單元1438,指令提取單元1438係耦合至解碼單元1440。解碼單元1440(或解碼器)可解碼指令,並產生下列之一者或更多者以當作輸出:微操作、微碼進入點、微指令、其他指令、或其他控制信號,其係解碼(或者反射、或被衍生)自原始指令。解碼單元1440可使用各種不同機制而被實施。適當機制之範例包括(但不限定於)查找表、硬體實施、可編程邏輯陣列(PLA)、微碼唯讀記憶體(ROM),等等。於一實施例中,核心1490包括微碼ROM或其他媒體,其係儲存某些微指令之微碼(例如,於解碼單元1440中或者另外於前端單元1430內)。解碼單元1440係耦合至執行引擎單元1450中之重新命名/配置器單元1452。
執行引擎單元1450包括重新命名/配置器單元1452,其係耦合至收回單元1454及一組一或更多排程器單元1456。排程器單元1456代表任何數目的不同排程器,包括保留站、中央指令視窗,等等。排程器單元1456被耦合至實體暫存器檔案單元1458。實體暫存器檔案單元1458之每一者代表一或更多實體暫存器檔案,其各不同
者係儲存一或更多不同的資料類型,諸如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、狀態(例如,其為待執行之下一指令的位址之指令指針),等等。於一實施例中,實體暫存器檔案單元1458包含向量暫存器單元、寫入遮罩暫存器單元、及純量暫存器單元。這些暫存器單元可提供架構向量暫存器、向量遮罩暫存器、及通用暫存器。實體暫存器檔案單元1458被收回單元1454疊置以說明各種方式,其中暫存器重新命名及失序執行可被實施(例如,使用記錄器緩衝器及收回暫存器檔案;使用未來檔案、歷史緩衝器、及收回暫存器檔案;使用暫存器映圖及一群暫存器,等等)收回單元1454及實體暫存器檔案單元1458被耦合至執行叢集1460。執行叢集1460包括一組一或更多執行單元1462及一組一或更多記憶體存取單元1464。執行單元1462可履行各種操作(例如,位移、相加、相減、相乘)並針對各種類型的資料(例如,純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)。雖然某些實施例可包括專用於特別功能或功能集的整個執行單元,而其他實施例可包括僅有一個執行單元或者多個均履行所有功能之執行單元。排程器單元1456、實體暫存器檔案單元1458、執行叢集1460被顯示為可能多數的,因位某些實施例係產生分離的管線給某些類型的資料/操作(例如,純量整數管線;純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線;及/或各具有其本身的排程器單元、實體暫存器檔案單元、及/或執行叢
集的記憶體存取管線一而於分離記憶體存取管線之情況下,實施某些實施例,其中僅有此管線之執行叢集具有記憶體存取單元1464)。亦應理解其中使用分離管線時,一或更多這些管線可為失序發出/執行而其他的為依序。
該組記憶體存取單元1464被耦合至記憶體單元1470,其包括資料TLB單元1472,其耦合至資料快取單元1474,其耦合至第二階(L2)快取單元1476。於一範例實施例中,記憶體存取單元1464可包括載入單元、儲存位址單元、及儲存資料單元,其每一者係耦合至記憶體單元1470中之資料TLB單元1472。指令快取單元1434被進一步耦合至記憶體單元1470中之第二階(L2)快取單元1476。L2快取單元1476被耦合至一或更多其他階的快取且最終耦合至主記憶體。
舉例而言,範例暫存器重新命名、失序發出/執行核心架構可實施管線1400如下:1)指令提取1438履行提取和長度解碼級1402和1404;2)解碼單元1440履行解碼級1406;3)重新命名/配置器單元1452履行配置級1408和重新命名級1410;4)排程器單元1456履行排程級1412;5)實體暫存器檔案單元1458和記憶體單元1470履行暫存器讀取/記憶體讀取級1414;執行叢集1460履行執行級1416;6)記憶體單元1470和實體暫存器檔案單元1458履行寫回/記憶體寫入級1418;7)各種單元可被關聯於異常處置級1422;及8)收回單元1454和實體暫存器檔案單元1458履行確定級1424。
核心1490可支援一或更多指令集(例如,x86指令集(具有某些已隨著較新版本而加入之擴充);MIPS Technologies of Sunnyvale,CA之MIPS指令集;ARM Holdings of Sunnyvale,CA之ARM指令集(具有諸如NEON等選擇性額外擴充)),包括文中所述之指令。於一實施例中,核心1490包括邏輯以支援緊縮資料指令集擴充(例如,AVX1、AVX2),藉此容許由許多多媒體應用程式所使用之操作得以使用緊縮資料來履行。
應理解其核心可支援多執行緒(multi-threading)(執行二或更多組的操作或執行緒),及可用包括時間切割多執行緒、同時多執行緒(其中單一實體核心提供邏輯核心給其實體核心正在同時多執行緒之每一線程)、或其組合之各種方式來進行(例如,時間切割的提取和解碼以及之後的同時多執行緒,諸如於Intel的超執行緒技術)。
雖然暫存器重新命名被描述於失序執行之情境,應理解其暫存器重新命名可被使用於依序架構。雖然處理器之例示實施例亦包括分離指令和資料快取單元1434/1474以及共用的第二階(L2)快取單元1476,但替代實施例可具有用於指令和資料之單一內部快取,諸如(例如)第一階(L1)內部快取、或多階的內部快取。於某些實施例中,系統可包括內部快取與核心及/或處理器外之外部快取的組合。替代地,所有快取可於核心及/或處理器之外。
圖15A-B說明更特定的範例依序核心架構之方塊圖,該核心將為一晶片中之數個邏輯區塊(包括相同類型及/或不同類型的其他核心)之一。邏輯區塊透過高頻寬互連網路(例如,環狀網路)而通連與某固定功能邏輯、記憶體I/O介面、及其他必要的I/O邏輯,根據應用而定。
圖15A為依據本發明之實施例的單一處理器核心之方塊圖,連同其連接至晶粒上互連網路1502且具有其第二階(L2)快取之局部子集1504。於一實施例中,指令解碼器1500支援具有緊縮資料指令集擴充之x86指令集。L1快取1506容許針對快取記憶體之低潛時存取進入純量及向量單元。雖然於一實施例中(為了簡化設計),純量單元1508和向量單元1510係使用分離的暫存器組(個別地,純量暫存器1512和向量暫存器1514)且於其間轉移之資料被寫入至記憶體並從第一階(L1)快取1506讀回,但本發明之替代實施例亦可使用不同的方式(例如,使用單一暫存器組或包括一通訊路徑,其容許資料被轉移於兩暫存器檔案之間而不被寫入或讀回)。
L2快取之局部子集1504為劃分為分離之局部子集(每一處理器核心一個)的總體L2快取之部分。各處理器核心具有通至L2快取1504之其本身局部子集的直接存取路徑。由處理器核心所讀取之資料被儲存於其L2快取子集1504中並可被快速地存取,平行與存取其本身局部L2快取子集之其他處理器核心。由處理器核心所寫入之資料被儲存於其本身的L2快取子集1504且被清除自其他子集
(假如需要的話)。環狀網路確保共用資料之相干(coherency)。環狀網路為雙向的,以容許諸如處理器核心、L2快取及其他邏輯區塊等代理器於晶片內彼此通連。各環狀資料路徑為1012位元寬於每方向。
圖15B為依據本發明之實施例的圖15A中之處理器核心的部分之擴充視圖。圖15B包括L1快取1504之L1資料快取1506A部分,以及有關向量單元1510及向量暫存器1514之更多細節。明確地,向量單元1510為16寬的向量處理單元(VPU)(參見16寬的ALU 1528),其執行整數、單一精確浮點與雙精確浮點指令之一或更多者。VPU支援:利用拌和單元1520以拌和暫存器輸入、利用數字轉換單元1522A-B之數字轉換、及利用記憶體輸入上之複製單元1524的複製。寫入遮罩暫存器1526容許闡述所得的向量寫入。
圖16為依據本發明之實施例的處理器1600之方塊圖,該處理器可具一個以上的核心、可具有一集成記憶體控制器、且可具有集成圖形。圖16中之實線方塊係說明一具有單一核心1602A、系統代理器1610、一組一或更多匯流排控制器單元1616之處理器1600,而虛線方塊之額外加入則說明一具有多個核心1602A-N、系統代理器1610中之一組一或更多集成記憶體控制器單元1614、及特殊用途邏輯1608之處理器1600。
因此,處理器1600之不同實施方式可包括:1)具有特殊用途邏輯1608之CPU為集成圖形及/或科學(通量)邏輯(其可包括一或更多核心),而核心1602A-N為一或更多通用核心(例如,通用依序核心、通用失序核心、兩者之組合);2)具有核心1602A-N之共處理器為主要用於圖形及/或科學(通量)之大量特殊用途核心;及3)具有核心1602A-N之共處理器為大量通用依序核心。因此,處理器1600可為通用處理器、共處理器或特殊用途處理器,諸如(例如)網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、高通量多集成核心(MIC)共處理器(包括30或更多核心)嵌入處理器,等等。處理器可被實施於一或更多晶片上。處理器1600可為一或更多基底之一部分及/或可被實施於一或更多基底上,使用數種製程科技之任一種,諸如(例如)BiCMOS、CMOS、或NMOS。
記憶體階層包括核心內之一或更多階的快取、一組或者一或更多共用快取單元1606、及耦合至該組集成記憶體控制器單元1614之外部記憶體(未顯示)。該組共用快取單元1606可包括一或更多中階快取,諸如第二階(L2)、第三階(L3)、第四階(L4)、或其他階的快取、最後階快取(LLC)、及/或其組合。雖然於一實施例中,一種環狀為基的互連單元1612係互連集成圖形邏輯1608、該組共用快取單元1606、以及系統代理器單元1610/集成記憶體控制器單元1614,但替代實施例可使用任何眾
所周知的技術來互連此等單元。於一實施例中,相干性被維持於一或更多共用快取單元1606與核心1602A-N之間。
於某些實施例中,一或更多核心1602A-N能夠進行多執行緒。系統代理器1610包括那些協調及操作核心1602A-N之組件。系統代理器單元1610可包括(例如)電力控制單元(PCU)及顯示單元。PCU可為或者可包括用以調節核心1602A-N和集成圖形邏輯1608之電力狀態所需的邏輯和組件。顯示單元係用以驅動一或更多外部連接的顯示。
就架構指令集而言,核心1602A-N可為同質的或異質的;亦即,二或更多核心1602A-N能夠執行相同的指令集,而其他者能夠執行該指令集之僅僅一子集或者一不同指令集。
圖17-20為範例電腦架構之方塊圖。用於筆記型電腦、桌上型電腦、手持式PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、開關、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視頻遊戲裝置、機上盒、微處理器、行動電話、可攜式媒體播放器、手持式裝置、及各種其他電子裝置之習知技術中已知的其他系統設計和組態亦為適當的。一般而言,能夠結合處理器及/或其他執行邏輯之多種系統或電子裝置(如文中所揭示者)通常為適當的。
現在參考圖17,其顯示依據本發明之一實施例的系統1700之方塊圖。系統1700可包括一或更多處理器1710、1715,其被耦合至控制器集線器1720。於一實施例中,控制器集線器1720包括一圖形記憶體控制器集線器(GMCH)1790及一輸入/輸出集線器(IOH)1750(其可於分離的晶片上);GMCH 1790包括記憶體和圖形控制器,其係耦合記憶體1740和共處理器1745;IOH 1750將輸入/輸出(I/O)裝置1760耦合至GMCH 1790。替代地,記憶體和圖形控制器之一或兩者被集成於處理器內(如文中所述者),記憶體1740和共處理器1745被直接耦合至處理器1710、以及一具有IOH 1750之單一晶片中的控制器集線器1720。
額外處理器1715之選擇性本質係以虛線被標示於圖17中。各處理器1710、1715可包括文中所述之一或更多處理核心並可為某版本的處理器1600。
記憶體1740可為(例如)動態隨機存取記憶體(DRAM)、相位改變記憶體(PCM)、或兩者之組合。針對至少一實施例,控制器集線器1720通連與處理器1710、1715,經由諸如前側匯流排(FSB)等多點(multi-drop)匯流排、諸如快速路徑互連(QPI)等點對點介面、或類似連接1795。
於一實施例中,共處理器1745為特殊用途處理器,諸如(例如)高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入處理器,等等。於
一實施例中,控制器集線器1720可包括一集成圖形加速器。
有多種差異於實體資源1710、1715之間,關於包括架構、微架構、熱、電力耗損特性等等重要量度之波譜。
於一實施例中,處理器1710執行其控制一般類型之資料處理操作的指令。共處理器指令可嵌入指令之內。處理器1710識別這些共處理器指令為應由附加共處理器1745所執行之類型。因此,處理器1710將共處理器匯流排或其他互連上之這些共處理器指令(或代表共處理器指令之控制信號)發出至共處理器1745。共處理器1745接受並執行所接收的共處理器指令。
現在參考圖18,其顯示依據本發明之一實施例的第一更特定範例系統1800之方塊圖。如圖18中所示,多處理器系統1800為點對點互連系統,並包括經由點對點互連1850而耦合之第一處理器1870和第二處理器1880。處理器1870與1880之每一者可為相同版本的處理器1600。於本發明之一實施例中,處理器1870和1880個別為處理器1710和1715,而共處理器1838為共處理器1745。於另一實施例中,處理器1870和1880個別為處理器1710和共處理器1745。
處理器1870和1880被顯示為個別地包括集成記憶體控制器(IMC)單元1872和1882。處理器1870亦包括點對點(P-P)介面1876和1878為其匯流排控制器單元之部分;類似地,第二處理器1880包括P-P介面1886和
1888。處理器1870、1880可使用P-P介面電路1878、1888而經由點對點(P-P)介面1850以交換資訊。如圖18中所示,IMC 1872和1882將處理器耦合至個別記憶體,亦即記憶體1832和記憶體1834,其可為局部地裝附至個別處理器之主記憶體的部分。
處理器1870、1880可各使用點對點介面電路1876、1894、1886、1898而經由個別P-P介面1852、1854與晶片組1890交換資訊。晶片組1890可選擇性地經由高性能介面1839而與共處理器1838交換資訊。於一實施例中,共處理器1838為特殊用途處理器,諸如(例如)高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入處理器,等等。
共用快取(未顯示)可被包括於任一處理器中或者於兩處理器之外部,而經由P-P互連與處理器連接,以致處理器之局部快取資訊的任一者或兩者可被儲存於共用快取中,假如處理器被置於低電力模式下的話。
晶片組1890可經由介面1896而被耦合至第一匯流排1816。於一實施例中,第一匯流排1816可為周邊組件互連(PCI)匯流排,或者諸如PCI Express匯流排或另一第三代I/O互連匯流排,雖然本發明之範圍不因此受限。
如圖18中所示,各種I/O裝置1814可被耦合至第一匯流排1816,連同一將第一匯流排1816耦合至第二匯流排1820之匯流排橋1818。於一實施例中,諸如共處理器、高通量MIC處理器、GPGPU、加速器(諸如,例如,
圖形加速器或數位信號處理(DSP)單元)、場可編程閘極陣列、或任何其他處理器等一或更多額外處理器1815被耦合至第一匯流排1816。於一實施例中,第二匯流排1820為低接腳數(LPC)匯流排。各種裝置可被耦合至第二匯流排1820,包括(例如)鍵盤及/或滑鼠1822、通訊裝置1827及儲存單元1828,諸如碟片驅動器或其他大量儲存裝置,可包括指令/碼及資料1830,於一實施例中。再者,聲頻I/O 1824可被耦合至第二匯流排1820。注意:其他架構是可能的。例如,取代圖18之點對點架構,系統可實施多點匯流排其他此類架構。
現在參考圖19,其顯示依據本發明之一實施例的第二更特定範例系統1900之方塊圖。圖18和19中之類似元件係使用類似的參考數字,且圖19已省略了圖18之某些形態以避免混淆圖19之其他形態。
圖19顯示其處理器1870、1880可個別地包括集成記憶體和I/O控制邏輯(「CL」)1872和1882。因此,CL 1872、1882包括集成記憶體控制器單元並包括I/O控制邏輯。圖19顯示其不僅記憶體1832、1834耦合至CL 1872、1882,同時I/O裝置1914亦耦合至控制邏輯1872、1882。傳統I/O裝置1915被耦合至晶片組1890。
現在參考圖20,其顯示依據本發明之一實施例的SoC 2000之方塊圖。與圖16類似的元件係使用類似參考數字。同時,虛線方塊為更先進的SoC上之選擇性特徵。於圖20中,互連單元2002被耦合至:應用程式處理器
2010,其包括一組一或更多核心202A-N及共用快取單元1606;系統代理器單元1610;匯流排控制器單元1616;集成記憶體控制器單元1614;一組一或更多共處理器2020,其可包括集成圖形邏輯、影像處理器、聲頻處理器、和視頻處理器;靜態隨機存取記憶體(SRAM)單元2030;直接記憶體存取(DMA)單元2032;及顯示單元2040,用以耦合至一或更多外部顯示。於一實施例中,共處理器2020包括特殊用途處理器,諸如(例如)網路或通訊處理器、壓縮引擎、GPGPU、高通量MIC處理器、嵌入處理器,等等。
文中所揭露之機構的實施例可被實施以硬體、軟體、韌體、或此類實施方式之組合。本發明之實施例可被實施為電腦程式或程式碼,其係執行在包括至少一處理器、儲存系統(包括揮發性和非揮發性記憶體及/或儲存元件)、至少一輸入裝置、及至少一輸出裝置之可編程系統上。
程式碼(諸如圖18中所示之碼1830)可被應用於輸出指令,以履行文中所述之功能並產生輸入資訊。輸出資訊可被以已知方式應用於一或更多輸出裝置。為了本申請案,處理系統包括任何系統,其具有一處理器,諸如(例如)數位信號處理器(DSP)、微控制器、特殊應用積體電路(ASIC)、或微處理器。
程式碼可被實施以高階程序或物件導向的編程語言來與處理系統通連。程式碼亦可被實施以組合或機械語言(假如需要的話)。事實上,文中所描述之機構對於任何特
定編程語言並無範圍上之限制。於任何情況下,該語言可為編譯的或解讀的語言。
至少一實施例之一或更多形態可由機器可讀取媒體上所儲存之代表性指令來實施,該媒體代表處理器內之各種邏輯,當由機器所讀取時其致使機器製造用以履行文中所述之技術的邏輯。此類表示(已知為「IP核心」可被儲存於有形的、機器可讀取的媒體上且被供應至各個消費者或製造商,以供載入其實際上製造該邏輯或處理器之製造機器內。
此類機器可讀取儲存媒體可包括(無限制地)由機器或裝置所製造或形成之物件之非暫態的、有形的配置,包括:諸如硬碟、包括軟碟、光碟、微型碟片唯讀記憶體(CD-ROM)、微型碟片可寫入(CD-RW)和磁光碟之任何類型碟片等儲存媒體;諸如唯讀記憶體(ROM)、隨機存取記憶體(RAM),諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可抹除可編程唯讀記憶體(EPROM)、快閃記憶體、電可抹除可編程唯讀記憶體(EEPROM)、相位改變記憶體(PCM)等半導體裝置;磁或光學卡;或者適於儲存電子指令之任何其他類型的媒體。
因此,本發明之實施例亦包括非暫態的、有形的機器可讀取媒體,其含有指令或含有設計資料,諸如硬體描述語言(HDL),其定義文中所述之結構、電路、設備、處理器及/或系統特徵。此類實施例亦可被稱為程式產品。
於某些情況下,指令轉換器可被用以將來自來源指令集之指令轉換為目標指令集。例如,指令轉換器可將指令翻譯(例如,使用靜態二元翻譯、包括動態編譯之動態二元翻譯)、編輯、仿真、或者轉換為一或更多其他指令以供由核心所處理。指令轉換器可被實施以軟體、硬體、韌體、或其組合。指令轉換器可位於處理器上、處理器外、或部分於處理器上部分於處理器外。
圖21為方塊圖,其對比軟體指令轉換器之使用,以將來源指令集中之二元指令轉換為目標指令集中之二元指令,依據本發明之實施例。於例示之實施例中,指令轉換器為軟體指令轉換器,雖然替代地該指令轉換器可被實施以軟體、韌體、硬體、或其各種組合。圖21顯示高階語言2102之程式可使用x86編譯器2104來編譯以產生x86二元碼2106,其可由一具有至少一x86指令集核心之處理器2116所本機地執行。具有至少一x86指令集核心之處理器2116代表任何可履行如具有至少一x86指令集核心之Intel處理器的實質上相同功能之處理器,藉由相容地執行或者處理(1)Intel x86指令集核心之指令集的基本部分或(2)用來運行於具有至少一x86指令集核心之Intel處理器上的應用程式或其他軟體的物件碼版本,以便達成如具有至少一x86指令集核心之Intel處理器的實質上相同結果。x86編譯器2104代表一種能夠產生x86二元碼2106(例如,物件碼)之編譯器,x86二元碼
2106可(具有或不具有額外鏈路處理)被執行於具有至少一x86指令集核心之處理器2116上。類似地,圖21顯示高階語言2102之程式可使用替代指令集編譯器2108而被編譯以產生替代的指令集二元碼2110,其可由一不具有至少一x86指令集核心之處理器2114所本機地執行(例如,具有執行MIPS Technologies of Sunnyvale,CA之MIPS指令集及/或ARM Holdings of Sunnyvale,CA之ARM指令集的核心之處理器)。指令轉換器2112被用以將x86二元碼2106轉換為可由不具有一x86指令集核心之處理器2114所本地執行的碼。此轉換的碼不太可能相同於替代的指令集二元碼2110,因為能夠執行此操作之指令轉換器是難以製造的;然而,該轉換的碼將完成一般操作並由來自替代指令集之指令所組成。因此,指令轉換器2112代表軟體、韌體、硬體、或其組合,其(透過仿真、模擬或任何其他程序)容許不具有x86指令集處理器或核心之處理器或其他電子裝置來執行x86二元碼2106。
於說明書和申請專利範圍中,可使用術語「耦合」和「連接」,連同其衍生詞。應理解這些術語並非當作彼此的同義詞。反之,於特定實施例中,「連接」可被用以指示其二或更多元件彼此直接地實體或電接觸。「耦合」可表示二或更多元件係直接實體或電接觸。然而,「耦合」亦可表示二或更多元件並未彼此直接接觸,而仍彼此共同操作或互動。例如,執行單元可透過一或更多中間組件而
耦合與一暫存器。
於以上描述中,為了解釋之目的,已提出諸多特定細節以提供本發明之實施例的透徹瞭解。然而,熟悉本項技術人士應理解一或更多實施例可被實行而無須這些特定細節的部分。所述之特定實施例並非被提供來限制本發明而是來說明之。本發明之範圍並非由以上所提供之特定範例來決定而僅由之後的申請專利範圍來決定。於其他例子中,眾所周知的電路、結構、裝置、及操作已被顯示以方塊圖形式或者非詳盡地,以避免混淆對本說明書之瞭解。
熟悉本項技術人士亦應理解:可對文中所揭露之實施例進行修改,諸如(例如)對實施例之組件的架構、形式、功能及操作和使用之方式。對於那些圖形中所顯示者以及說明書中所描述者之所有同等的關係均涵蓋於本發明之實施例中。為了說明之簡化及清楚,圖形中所示之元件不一定依比例繪製。例如,某些元件之尺寸已相對於其他元件被誇大,以利清楚瞭解。於圖形中,箭號係用以顯示耦合。
已描述了各種操作及方法。某些方法已被描述以流程圖中之基本形式,但操作可被加入及/或移除自該些方法。此外,操作之特定順序可能已依據範例實施例而被描述,但應理解該特定順序僅為範例。替代實施例可依不同順序以選擇性地履行操作、結合某些操作、重疊某些操作,等等。可對上述方法進行許多修改及調適,並且已被考量。
某些操作可由硬體組件所履行;或者可實施於機器可執行或電路可執行指令,其可被用以致使(或至少導致)以該些指令所編程之電路或硬體來履行該些操作。電路可包括通用或特殊用途處理器、或邏輯電路,僅舉出少數範例。操作亦可選擇性地藉由硬體和軟體之組合來履行。執行單元及/或處理器可包括特定的或特別的電路或其他邏輯,回應於指令、微指令、或者一或更多從機器指令導出以履行某些操作之控制信號。
亦應理解:遍及本說明書針對「一實施例」、「實施例」、或「一或更多實施例」之參考(舉例而言)表示特定特徵可被包括於本發明之實行中。類似地,應理解:於說明書中,各種特徵有時候被群集在一起於單一實施例、圖形、或其描述中,以便簡化其說明並協助各種發明型態之瞭解。然而,此揭露之方法不應被解讀為反映出本發明需要各申請專利範圍中所明確闡述者以外的更多特徵之意圖。反之,如以下申請專利範圍所反映者,發明形態可展現於較單一揭露實施例之所有特徵更少者。因此,接續於發明說明之申請專利範圍藉此明確地併入此發明說明中,以各申請專利範圍獨立成為本發明之個別實施例。
100‧‧‧處理器
101‧‧‧指令集架構(ISA)
102‧‧‧指令集
103‧‧‧遮蔽的緊縮資料指令
104‧‧‧緊縮資料操作遮罩及/或遮罩暫存器調處指令
105‧‧‧緊縮資料操作遮罩位移指令
106‧‧‧架構暫存器
107‧‧‧緊縮資料暫存器
108‧‧‧緊縮資料操作遮罩暫存器
109‧‧‧執行邏輯
203A‧‧‧具有合併之遮蔽緊縮資料操作
203B‧‧‧具有歸零之遮蔽緊縮資料操作
210-1‧‧‧第一來源緊縮資料
210-2‧‧‧第二來源緊縮資料
211‧‧‧緊縮資料操作遮罩
212‧‧‧緊縮資料結果
305‧‧‧緊縮資料操作遮罩暫存器算術組合指令
313‧‧‧製造物件
314‧‧‧機器可讀取儲存媒體
405‧‧‧緊縮資料操作遮罩暫存器算術組合指令
408‧‧‧緊縮資料操作遮罩暫存器
408-1‧‧‧第一緊縮資料操作遮罩暫存器
408-2‧‧‧第二緊縮資料操作遮罩暫存器
408-3‧‧‧第三緊縮資料操作遮罩暫存器
415‧‧‧指令處理設備
416‧‧‧指令解碼器
417‧‧‧執行單元
418‧‧‧算術組合邏輯
419‧‧‧目的地儲存位置
607‧‧‧緊縮資料暫存器
710-1‧‧‧256位元緊縮字元格式
710-2‧‧‧256位元雙字元格式
710-3‧‧‧256位元緊縮四字元格式
823‧‧‧緊縮資料操作遮罩位元之數目
908‧‧‧緊縮資料操作遮罩暫存器
1008‧‧‧緊縮資料操作遮罩暫存器
1202‧‧‧VEX前綴
1215‧‧‧運算元映圖欄位
1220‧‧‧VEX.vvvv
1225‧‧‧前綴編碼欄位
1230‧‧‧真實運算碼欄位
1240‧‧‧Mod R/M位元組
1242‧‧‧基礎操作欄位
1244‧‧‧暫存器指標欄位
1246‧‧‧R/M欄位
1250‧‧‧SIB位元組
1250‧‧‧比率欄位
1252‧‧‧SS
1254‧‧‧SIB.xxx
1256‧‧‧SIB.bbb
1262‧‧‧置換欄位
1264‧‧‧W欄位
1268‧‧‧大小欄位
1272‧‧‧IMM8
1274‧‧‧完整運算碼欄位
1300‧‧‧暫存器架構
1310‧‧‧向量暫存器
1315‧‧‧寫入遮罩暫存器
1325‧‧‧通用暫存器
1345‧‧‧純量浮點堆疊暫存器檔案
1350‧‧‧MMX緊縮整數平坦暫存器檔案
1400‧‧‧處理器管線
1402‧‧‧提取級
1404‧‧‧長度解碼級
1406‧‧‧解碼級
1408‧‧‧配置級
1410‧‧‧重新命名級
1412‧‧‧排程級
1414‧‧‧暫存器讀取/記憶體讀取級
1416‧‧‧執行級
1418‧‧‧寫回/記憶體寫入級
1422‧‧‧異常處置級
1424‧‧‧確定級
1430‧‧‧前端單元
1432‧‧‧分支預測單元
1434‧‧‧指令快取單元
1436‧‧‧指令翻譯旁看緩衝器(TLB)
1438‧‧‧指令提取單元
1440‧‧‧解碼單元
1450‧‧‧執行引擎單元
1450‧‧‧執行引擎單元
1452‧‧‧重新命名/配置器單元
1454‧‧‧收回單元
1456‧‧‧排程器單元
1458‧‧‧實體暫存器檔案單元
1460‧‧‧執行叢集
1462‧‧‧執行單元
1464‧‧‧記憶體存取單元
1470‧‧‧記憶體單元
1470‧‧‧記憶體單元
1472‧‧‧資料TLB單元
1474‧‧‧資料快取單元
1476‧‧‧第二階(L2)快取單元
1490‧‧‧處理器核心
1500‧‧‧指令解碼器
1502‧‧‧晶粒上互連網路
1504‧‧‧第二階(L2)快取之局部子集
1506‧‧‧L1快取
1506A‧‧‧L1資料快取
1508‧‧‧純量單元
1510‧‧‧向量單元
1512‧‧‧純量暫存器
1514‧‧‧向量暫存器
1520‧‧‧拌和單元
1522A-B‧‧‧數字轉換單元
1524‧‧‧複製單元
1526‧‧‧寫入遮罩暫存器
1528‧‧‧16寬的ALU
1600‧‧‧處理器
1602A-N‧‧‧核心
1606‧‧‧共用快取單元
1608‧‧‧特殊用途邏輯
1610‧‧‧系統代理器
1612‧‧‧環狀為基的互連單元
1614‧‧‧集成記憶體控制器單元
1616‧‧‧匯流排控制器單元
1700‧‧‧系統
1710,1715‧‧‧處理器
1720‧‧‧控制器集線器
1740‧‧‧記憶體
1745‧‧‧共處理器
1750‧‧‧輸入/輸出集線器(IOH)
1760‧‧‧輸入/輸出(I/O)裝置
1790‧‧‧圖形記憶體控制器集線器(GMCH)
1795‧‧‧連接
1800‧‧‧多處理器系統
1814‧‧‧I/O裝置
1815‧‧‧額外處理器
1816‧‧‧第一匯流排
1818‧‧‧匯流排橋
1820‧‧‧第二匯流排
1822‧‧‧鍵盤及/或滑鼠
1824‧‧‧聲頻I/O
1827‧‧‧通訊裝置
1828‧‧‧儲存單元
1830‧‧‧指令/碼及資料
1832‧‧‧記憶體
1834‧‧‧記憶體
1838‧‧‧共處理器
1838‧‧‧共處理器
1839‧‧‧高性能介面
1850‧‧‧點對點互連
1852,1854‧‧‧P-P介面
1870‧‧‧第一處理器
1872,1882‧‧‧集成記憶體控制器(IMC)單元
1876,1878‧‧‧點對點(P-P)介面
1880‧‧‧第二處理器
1886,1888‧‧‧P-P介面
1890‧‧‧晶片組
1894,1898‧‧‧點對點介面電路
1896‧‧‧介面
1900‧‧‧系統
1914‧‧‧I/O裝置
1915‧‧‧傳統I/O裝置
2000‧‧‧SoC
2002‧‧‧互連單元
2010‧‧‧應用程式處理器
2020‧‧‧共處理器
2030‧‧‧靜態隨機存取記憶體(SRAM)單元
2032‧‧‧直接記憶體存取(DMA)單元
2040‧‧‧顯示單元
2102‧‧‧高階語言
2104‧‧‧x86編譯器
2106‧‧‧x86二元碼
2108‧‧‧指令集編譯器
2110‧‧‧指令集二元碼
2112‧‧‧指令轉換器
2114‧‧‧不具有至少一x86指令集核心之處理器
2116‧‧‧具有至少一x86指令集核心之處理器
本發明可藉由參考其用來說明本發明之實施例的後續描述及後附圖形而被最佳地瞭解。於圖形中:圖1為一處理器之範例實施例的方塊圖,該處理器具
有包括一或更多緊縮資料操作遮罩暫存器算術組合指令之指令集。
圖2A為一方塊圖,其說明具有合併之遮蔽緊縮資料操作的第一代表性範例實施例。
圖2B為一方塊圖,其說明具有歸零之遮蔽緊縮資料操作的第二代表性範例實施例。
圖3為製造物件(例如,電腦程式產品)之方塊圖,該製造物件包括一儲存緊縮資料操作遮罩暫存器算術組合指令之機器可讀取儲存媒體。
圖4為指令處理設備之範例實施例的方塊圖,該指令處理設備具有一可操作以執行包括緊縮資料操作遮罩暫存器算術組合指令之範例實施例的指令之執行單元。
圖5為一處理緊縮資料操作遮罩暫存器算術組合指令之範例實施例的方法之範例實施例之方塊流程圖。
圖6為緊縮資料暫存器之適當集合的範例實施例之方塊圖。
圖7為一方塊圖,其說明適當緊縮資料資料格式之數個範例實施例。
圖8為一表格,其說明緊縮資料操作遮罩位元之數目係取決於緊縮資料寬度及緊縮資料元件寬度。
圖9為緊縮資料操作遮罩暫存器之適當集合的範例實施例之方塊圖。
圖10為一圖形,其說明被使用為緊縮資料操作遮罩或者用於遮蔽之緊縮資料操作遮罩暫存器的範例實施例中
之位元數係取決於緊縮資料寬度及資料元件寬度。
圖11A-11D說明緊縮資料操作遮罩暫存器相加指令及其操作之各種特定範例實施例。
圖12A說明包括VEX前綴(prefix)、真實運算碼欄位、Mod R/M位元組、SIB位元組、置換(displacement )欄位、及IMM8之範例AVX指令格式。
圖12B說明來自圖12A之哪些欄位組成完整運算碼欄位及基礎操作欄位。
圖12C說明來自圖12A之哪些欄位組成暫存器指標欄位。
圖13為依據本發明之一實施例的暫存器架構之方塊圖。
圖14A為一方塊圖,其說明依據本發明之實施例的範例依序的管線及範例暫存器重新命名的、失序的發出/執行管線兩者。
圖14B顯示處理器核心,其包括耦合至執行引擎單元之前端單元,且上述兩者均耦合至記憶體單元。
圖15A為依據本發明之實施例的單一處理器核心之方塊圖,連同其連接至晶粒上互連網路且具有第二階(L2)快取之其局部子集。
圖15B為依據本發明之實施例的圖15A中之處理器核心的部分之擴充視圖。
圖16為依據本發明之實施例的處理器之方塊圖,該處理器可具一個以上的核心、可具有一集成記憶體控制器
、且可具有集成圖形。
圖17顯示依據本發明之一實施例的系統之方塊圖。
圖18顯示依據本發明之一實施例的第一更特定範例系統之方塊圖。
圖19顯示依據本發明之一實施例的第二更特定範例系統之方塊圖。
圖20顯示依據本發明之一實施例的SoC之方塊圖。
圖21為方塊圖,其對比軟體指令轉換器之使用,以將來源指令集中之二元指令轉換為目標指令集中之二元指令,依據本發明之實施例。
Claims (25)
- 一種方法,包含:接收緊縮資料操作遮罩暫存器算術組合指令,該緊縮資料操作遮罩暫存器算術組合指令係指示一第一緊縮資料操作遮罩暫存器、指示一第二緊縮資料操作遮罩暫存器、及指示目的地儲存位置;以及回應於該緊縮資料操作遮罩暫存器算術組合指令以將該第一緊縮資料操作遮罩暫存器之位元的至少一部分與該第二緊縮資料操作遮罩暫存器之位元的至少一相應部分之算術組合儲存於該目的地儲存位置中。
- 如申請專利範圍第1項之方法,其中接收該指令包含接收緊縮資料操作遮罩暫存器相加指令,及其中儲存該算術組合包含儲存該第一與第二緊縮資料操作遮罩暫存器之該些位元的至少該些相應部分之總和。
- 如申請專利範圍第1項之方法,其中接收該指令包含接收緊縮資料操作遮罩暫存器相減指令,及其中儲存該算術組合包含儲存該第一與第二緊縮資料操作遮罩暫存器之位元的至少該些相應部分之差。
- 如申請專利範圍第1項之方法,其中儲存該算術組合包含將該第一與第二緊縮資料操作遮罩暫存器之該些位元的相應最低階部分之總和儲存在該目的地儲存位置之位元的相應最低階部分中,該目的地儲存位置為緊縮資料操作遮罩暫存器,以及將該目的地儲存位置之該些位元的最高階部分歸零。
- 如申請專利範圍第1項之方法,其中儲存該算術組合包含儲存該第一與第二緊縮資料操作遮罩暫存器之該些位元的相應相同大小部分之算術組合,及其中該些相同大小部分係選自8位元、16位元、32位元、及64位元。
- 如申請專利範圍第1項之方法,其中該第一緊縮資料操作遮罩暫存器之該些位元的該部分之各位元係相應於第一緊縮資料之至少一不同資料元件。
- 如申請專利範圍第1項之方法,其中該第一緊縮資料操作遮罩暫存器之該些位元的該部分之各位元包含進位攜出資訊以指示是否已由於第一緊縮資料與第二緊縮資料之資料元件的不同相應對之相加而發生進位攜出。
- 如申請專利範圍第1項之方法,進一步包含接收第二指令,其係指示一緊縮資料暫存器及該第一緊縮資料操作遮罩暫存器為用以闡述該第二指令之操作的遮罩。
- 如申請專利範圍第1項之方法,其中該算術組合包含總和,且進一步包含使用該總和以將其各為128位元或更寬的大整數相加。
- 一種設備,包含:一第一緊縮資料操作遮罩暫存器;一第二緊縮資料操作遮罩暫存器;及一與該第一和第二緊縮資料操作遮罩暫存器耦合之執行單元,該執行單元可操作以回應於一指示該第一緊縮資料操作遮罩暫存器、指示該第二緊縮資料操作遮罩暫存器、及指示一目的地儲存位置之緊縮資料操作遮罩暫存器 算術組合指令而將該第一緊縮資料操作遮罩暫存器之位元的至少一部分與該第二緊縮資料操作遮罩暫存器之位元的至少一相應部分之算術組合儲存於該目的地儲存位置中。
- 如申請專利範圍第10項之設備,其中該指令包含緊縮資料操作遮罩暫存器相加指令,及其中該執行單元可操作以由於該指令而將該第一與第二緊縮資料操作遮罩暫存器之該些位元的至少該些相應部分之總和儲存於該目的地儲存位置中。
- 如申請專利範圍第10項之設備,其中該指令包含緊縮資料操作遮罩暫存器相減指令,及其中該執行單元可操作以由於該指令而將該第一與第二緊縮資料操作遮罩暫存器之該些位元的至少該些相應部分之差儲存於該目的地儲存位置中。
- 如申請專利範圍第10項之設備,其中該執行單元可操作以由於該指令而將該第一與第二緊縮資料操作遮罩暫存器之該些位元的相應最低階部分之總和儲存在該目的地儲存位置之位元的相應最低階部分中,該目的地儲存位置為緊縮資料操作遮罩暫存器,以及將該目的地儲存位置之該些位元的最高階部分歸零。
- 如申請專利範圍第10項之設備,其中該執行單元可操作以由於該指令而儲存該第一與第二緊縮資料操作遮罩暫存器之該些位元的相應相同大小部分之算術組合,及其中該些相同大小部分係選自8位元、16位元、32位元、及64位元。
- 如申請專利範圍第10項之設備,其中該第一緊縮資料操作遮罩暫存器之該些位元的該部分之各位元係相應於第一緊縮資料之至少一不同資料元件。
- 如申請專利範圍第10項之設備,其中該第一緊縮資料操作遮罩暫存器之該些位元的該部分之各位元包含進位攜出資訊以指示是否已由於第一緊縮資料與第二緊縮資料之資料元件的不同相應對之相加而發生進位攜出。
- 如申請專利範圍第10項之設備,其中該緊縮資料操作遮罩暫存器算術組合指令可操作以明確地指明該第一緊縮資料操作遮罩暫存器;可操作以明確地指明該第二緊縮資料操作遮罩暫存器;及可操作以明確地指明其亦為緊縮資料操作遮罩暫存器之該目的地儲存位置。
- 如申請專利範圍第10項之設備,其中該第一與第二緊縮資料操作遮罩暫存器各為64位元暫存器,且其中該第一與第二緊縮資料操作遮罩暫存器之該些位元的該些相應部分為選自8位元、16位元、32位元、及64位元之相同大小部分。
- 如申請專利範圍第10項之設備,進一步包含一具有該第一與第二緊縮資料操作遮罩暫存器之緊縮資料操作遮罩暫存器檔案。
- 一種系統,包含:互連;與該互連耦合之處理器,該處理器包括第一緊縮資料操作遮罩暫存器、及第二緊縮資料操作遮罩暫存器,且該 處理器可操作以回應於一指示該第一緊縮資料操作遮罩暫存器、指示該第二緊縮資料操作遮罩暫存器、及指示一目的地儲存位置之緊縮資料操作遮罩暫存器算術組合指令而將該第一緊縮資料操作遮罩暫存器之位元的至少一部分與該第二緊縮資料操作遮罩暫存器之位元的至少一相應部分之算術組合儲存於該目的地儲存位置中;及與該互連耦合之動態隨機存取記憶體(DRAM)。
- 如申請專利範圍第20項之系統,其中該第一緊縮資料操作遮罩暫存器之該些位元的該部分之各位元係相應於第一緊縮資料之至少一不同資料元件。
- 如申請專利範圍第20項之系統,其中該指令包含緊縮資料操作遮罩暫存器相加指令,其中該處理器可操作以回應於該指令而將該第一與第二緊縮資料操作遮罩暫存器之該些位元的相應相同大小、最低階部分之總和儲存於該目的地儲存位置之位元的相應相同大小、最低階部分中;及其中該些相同大小部分係選自8位元、16位元、32位元、及64位元。
- 一種製造物件,包含:包括一或更多固體材料之機器可讀取儲存媒體,該機器可讀取儲存媒體係儲存緊縮資料操作遮罩暫存器算術組合指令,該緊縮資料操作遮罩暫存器算術組合指令係指示一第一緊縮資料操作遮罩暫存器、指示一第二緊縮資料操作遮罩暫存器、及指示目的地儲存位置;以及假如由機器執行 時該緊縮資料操作遮罩暫存器算術組合指令可操作以致使該機器履行包含以下之操作:將該第一緊縮資料操作遮罩暫存器之位元的至少一部分與該第二緊縮資料操作遮罩暫存器之位元的至少一相應部分之算術組合儲存於該目的地儲存位置中。
- 如申請專利範圍第23項之製造物件,其中該第一緊縮資料操作遮罩暫存器之該些位元的該部分之各位元係相應於第一緊縮資料之至少一不同資料元件。
- 如申請專利範圍第23項之製造物件,其中該指令包含緊縮資料操作遮罩暫存器相加指令,其中該執行單元可操作以由於該指令而將該第一與第二緊縮資料操作遮罩暫存器之該些位元的相應相同大小、最低階部分之總和儲存於該目的地儲存位置之位元的相應相同大小、最低階部分中;及其中該些相同大小部分係選自8位元、16位元、32位元、及64位元。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2011/066875 WO2013095515A1 (en) | 2011-12-22 | 2011-12-22 | Packed data operation mask register arithmetic combination processors, methods, systems, and instructions |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201342206A TW201342206A (zh) | 2013-10-16 |
TWI493448B true TWI493448B (zh) | 2015-07-21 |
Family
ID=48669156
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW101146626A TWI493448B (zh) | 2011-12-22 | 2012-12-11 | 緊縮資料操作遮罩暫存器算術組合處理器、方法、系統、及指令 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9760371B2 (zh) |
CN (1) | CN104126170B (zh) |
TW (1) | TWI493448B (zh) |
WO (1) | WO2013095515A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103460178B (zh) * | 2011-03-30 | 2017-05-31 | 英特尔公司 | 包括掩码上的数学操作的simd整数加法 |
WO2013095515A1 (en) | 2011-12-22 | 2013-06-27 | Intel Corporation | Packed data operation mask register arithmetic combination processors, methods, systems, and instructions |
US9323715B2 (en) | 2013-11-14 | 2016-04-26 | Cavium, Inc. | Method and apparatus to represent a processor context with fewer bits |
FR3021428B1 (fr) * | 2014-05-23 | 2017-10-13 | Kalray | Multiplication de matrices de bits utilisant des registres explicites |
US9804842B2 (en) * | 2014-12-23 | 2017-10-31 | Intel Corporation | Method and apparatus for efficiently managing architectural register state of a processor |
US10297001B2 (en) * | 2014-12-26 | 2019-05-21 | Intel Corporation | Reduced power implementation of computer instructions |
US10423411B2 (en) * | 2015-09-26 | 2019-09-24 | Intel Corporation | Data element comparison processors, methods, systems, and instructions |
WO2017107124A1 (en) * | 2015-12-24 | 2017-06-29 | Intel Corporation | Scatter reduction instruction |
US10296338B2 (en) * | 2016-12-09 | 2019-05-21 | Intel Corporation | System, apparatus and method for low overhead control transfer to alternate address space in a processor |
US11036510B2 (en) * | 2018-10-11 | 2021-06-15 | Arm Limited | Processing merging predicated instruction with timing permitting previous value of destination register to be unavailable when the merging predicated instruction is at a given pipeline stage at which a processing result is determined |
US11126439B2 (en) * | 2019-11-15 | 2021-09-21 | Apple Inc. | SIMD operand permutation with selection from among multiple registers |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200636571A (en) * | 2005-02-09 | 2006-10-16 | Advanced Micro Devices Inc | Data processor adapted for efficient digital signal processing and method therefor |
US20090172365A1 (en) * | 2007-12-27 | 2009-07-02 | Doron Orenstien | Instructions and logic to perform mask load and store operations |
US20090265409A1 (en) * | 1995-08-31 | 2009-10-22 | Peleg Alexander D | Processor for performing multiply-add operations on packed data |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2601960B2 (ja) * | 1990-11-15 | 1997-04-23 | インターナショナル・ビジネス・マシーンズ・コーポレイション | データ処理方法及びその装置 |
US5509129A (en) * | 1993-11-30 | 1996-04-16 | Guttag; Karl M. | Long instruction word controlling plural independent processor operations |
KR100329338B1 (ko) * | 1994-12-02 | 2002-07-18 | 피터 엔. 데트킨 | 복합피연산자의팩연산을수행하는마이크로프로세서 |
GB9514684D0 (en) * | 1995-07-18 | 1995-09-13 | Sgs Thomson Microelectronics | An arithmetic unit |
US5835782A (en) * | 1996-03-04 | 1998-11-10 | Intel Corporation | Packed/add and packed subtract operations |
US6317872B1 (en) * | 1997-07-11 | 2001-11-13 | Rockwell Collins, Inc. | Real time processor optimized for executing JAVA programs |
US7395302B2 (en) * | 1998-03-31 | 2008-07-01 | Intel Corporation | Method and apparatus for performing horizontal addition and subtraction |
US6272512B1 (en) * | 1998-10-12 | 2001-08-07 | Intel Corporation | Data manipulation instruction for enhancing value and efficiency of complex arithmetic |
US7395294B1 (en) * | 2003-01-10 | 2008-07-01 | Altera Corporation | Arithmetic logic unit |
US20090172348A1 (en) * | 2007-12-26 | 2009-07-02 | Robert Cavin | Methods, apparatus, and instructions for processing vector data |
US8549264B2 (en) * | 2009-12-22 | 2013-10-01 | Intel Corporation | Add instructions to add three source operands |
WO2013095515A1 (en) | 2011-12-22 | 2013-06-27 | Intel Corporation | Packed data operation mask register arithmetic combination processors, methods, systems, and instructions |
-
2011
- 2011-12-22 WO PCT/US2011/066875 patent/WO2013095515A1/en active Application Filing
- 2011-12-22 US US13/976,885 patent/US9760371B2/en active Active
- 2011-12-22 CN CN201180076445.2A patent/CN104126170B/zh active Active
-
2012
- 2012-12-11 TW TW101146626A patent/TWI493448B/zh active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090265409A1 (en) * | 1995-08-31 | 2009-10-22 | Peleg Alexander D | Processor for performing multiply-add operations on packed data |
TW200636571A (en) * | 2005-02-09 | 2006-10-16 | Advanced Micro Devices Inc | Data processor adapted for efficient digital signal processing and method therefor |
US20090172365A1 (en) * | 2007-12-27 | 2009-07-02 | Doron Orenstien | Instructions and logic to perform mask load and store operations |
Also Published As
Publication number | Publication date |
---|---|
WO2013095515A1 (en) | 2013-06-27 |
CN104126170B (zh) | 2018-05-18 |
CN104126170A (zh) | 2014-10-29 |
US20130275728A1 (en) | 2013-10-17 |
TW201342206A (zh) | 2013-10-16 |
US9760371B2 (en) | 2017-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI493448B (zh) | 緊縮資料操作遮罩暫存器算術組合處理器、方法、系統、及指令 | |
CN107094369B (zh) | 用于提供simd sm3密码散列函数的指令和逻辑 | |
TWI575448B (zh) | 三個來源運算元浮點加法處理器、方法、系統及指令 | |
TWI511040B (zh) | 緊縮資料操作遮罩位移處理器、方法、系統、及指令 | |
TWI512616B (zh) | 用於緊縮資料運算遮罩之序連的方法、設備、系統及製品 | |
KR101692914B1 (ko) | Sha256 알고리즘의 메시지 스케줄링을 위한 명령어 세트 | |
TWI524266B (zh) | 用以偵測向量暫存器內相等元素之裝置及方法 | |
TWI483183B (zh) | 混洗浮點或整數值的裝置與方法 | |
TWI517039B (zh) | 用以對緊縮資料執行差異解碼之系統,設備,及方法 | |
CN107918546B (zh) | 利用经掩码的全寄存器访问实现部分寄存器访问的处理器、方法和系统 | |
TWI489381B (zh) | 多暫存器散布指令 | |
TWI474258B (zh) | 用於執行浮點捨入量決定指令之方法、裝置、系統及機器可讀取儲存媒體 | |
TWI610233B (zh) | 用於提供向量分組元組交叉比較功能的方法、處理器和處理系統 | |
TWI515650B (zh) | 用於遮罩暫存器擴充操作之設備及方法 | |
CN106030514B (zh) | 用于执行采用传播的被屏蔽源元素存储指令的处理器及其方法 | |
TWI564795B (zh) | 四維摩頓座標轉換處理器、方法、系統及指令 | |
JP6741006B2 (ja) | マスクレジスタとベクトルレジスタとの間で可変に拡張するための方法および装置 | |
TW201339964A (zh) | 使用控制操作來進行單一指令多重資料(simd)可變移位與旋轉之技術 | |
TW201344562A (zh) | 緊縮資料運算遮罩比較處理器、方法、系統及指令 | |
TW201717052A (zh) | 用以提供向量包裝之直方圖功能的方法,裝置,指令及邏輯 | |
JP2018506094A (ja) | 多倍長整数(big integer)の算術演算を実行するための方法および装置 | |
KR102307105B1 (ko) | Simd sm3 암호화 해싱 기능을 제공하기 위한 명령어 및 로직 | |
TWI603261B (zh) | 用以執行離心操作的指令及邏輯 | |
TW201732553A (zh) | 用於保留位元的強制執行的裝置及方法 | |
TWI733718B (zh) | 用於獲得偶數和奇數資料元素的系統、裝置及方法 |