TWI641993B - 用以反轉與置換在一遮罩暫存器內的位元之設備及方法(二) - Google Patents
用以反轉與置換在一遮罩暫存器內的位元之設備及方法(二) Download PDFInfo
- Publication number
- TWI641993B TWI641993B TW105143906A TW105143906A TWI641993B TW I641993 B TWI641993 B TW I641993B TW 105143906 A TW105143906 A TW 105143906A TW 105143906 A TW105143906 A TW 105143906A TW I641993 B TWI641993 B TW I641993B
- Authority
- TW
- Taiwan
- Prior art keywords
- mask
- processor
- bits
- register
- coupled
- Prior art date
Links
- 238000000034 method Methods 0.000 title abstract description 12
- 230000015654 memory Effects 0.000 claims description 75
- 238000003860 storage Methods 0.000 claims description 19
- 238000004891 communication Methods 0.000 claims description 13
- 238000012545 processing Methods 0.000 claims description 11
- 239000000872 buffer Substances 0.000 claims description 9
- 230000002093 peripheral effect Effects 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 18
- 238000005516 engineering process Methods 0.000 description 9
- 239000003795 chemical substances by application Substances 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 230000006835 compression Effects 0.000 description 6
- 238000007906 compression Methods 0.000 description 6
- 238000007667 floating Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 238000000605 extraction Methods 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000007480 spreading Effects 0.000 description 2
- 238000003892 spreading Methods 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 101100365087 Arabidopsis thaliana SCRA gene Proteins 0.000 description 1
- 101000668165 Homo sapiens RNA-binding motif, single-stranded-interacting protein 1 Proteins 0.000 description 1
- 102100039692 RNA-binding motif, single-stranded-interacting protein 1 Human genes 0.000 description 1
- 101150105073 SCR1 gene Proteins 0.000 description 1
- 101100134054 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) NTG1 gene Proteins 0.000 description 1
- 101100285899 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SSE2 gene Proteins 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
- 230000006837 decompression Effects 0.000 description 1
- 230000004907 flux Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000014759 maintenance of location 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
- 239000004065 semiconductor Substances 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000007704 transition 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/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/30098—Register arrangements
Abstract
描述用以在遮罩值上執行一位元反轉與置換之設備及方法。舉例言之,描述一處理器以執行一指令而從事下列該等操作:讀取儲存於一來源遮罩暫存器內之多個遮罩位元,該等遮罩位元係與一向量暫存器之向量資料元件相關聯;及從事一位元反轉操作以將各個遮罩位元從一來源遮罩暫存器複製至一目的地遮罩暫存器,其中該位元反轉操作造成來自該來源遮罩暫存器之位元在該目的地遮罩暫存器內部被反轉,而導致該原始位元配置之一對稱鏡像。
Description
本發明之實施例大致上係有關於電腦系統領域。更明確言之,本發明之實施例大致上係有關於用以反轉與置換在一遮罩暫存器內的位元之設備及方法。
一指令集或指令集架構(ISA)乃與程式規劃相關的電腦架構部分,包括本機資料型別、指令、暫存器架構、定位模式、記憶體架構、中斷及例外處理、及外部輸入及輸出(I/O)。須注意指令一詞於此處通常係指巨集指令亦即提供給處理器用於執行的指令,與微指令或微操作相反其係為一處理器的解碼器解碼巨集指令的結果。
指令集架構係與微架構區別,其係用以具現該指令集的處理器設計技術之集合。具有不同微架構的處理器可分享一共用指令集。舉例言之,英特爾奔騰4處理器、英特爾核心TM處理器、及得自加州善尼維爾超微公司(AMD)之處理器具現幾乎相同的x86指令集版本(較新版本已經增
加某些擴延)但有不同的內部設計。舉例言之,使用眾所周知之技術於不同微架構可以不同方式具現ISA之相同暫存器架構,包括專用實體暫存器、使用暫存器重新命名機制的一或多個動態配置實體暫存器(例如美國專利案第5,446,912號所述使用暫存器混疊表(RAT)、重新排序緩衝器(ROB)及報廢暫存器檔案;美國專利案第5,207,132號所述使用多個對映圖及暫存器之一儲存庫)等。除非另行載明,否則片語暫存器架構、暫存器檔案、及暫存器用於此處指稱為軟體/程式規劃器所可見者及其中指令載明暫存器之方式。當要求區別時,形容的邏輯、架構、或可見軟體將用以指示暫存器架構內之暫存器/檔案,而不同形容詞將用以標示一給定微架構(例如實體暫存器、重新排序緩衝器、報廢暫存器、暫存器儲存庫)中之暫存器。
一指令集包括一或多個指令格式。一給定指令格式界定載明欲執行的操作之各種欄位(位元數目、位元位置)及其上欲執行操作之運算元等。有些指令格式透過指令樣板(或子格式)的定義而進一步分解。舉例言之,一給定指令格式的該等指令樣板可經定義而具有指令格式的欄位之不同子集(含括的欄位典型地係呈相同順序,但至少部分具有不同位元位置,原因在於含括較少欄位故)及/或定義而具有一給定欄位作不同解譯。一給定指令係使用一給定指令格式表示(及若定義時,以該指令格式之指令樣板中之一給定者表示)及載明該操作及運算元。一指令串流為一特定指令順序,於該處於該順序中之各個指令為於一指令格式之指
令的出現(及若定義時,以該指令格式之指令樣板中之一給定者出現)。
科學、財務、自向量化通用、RMS(辨識、探勘、及合成)、及視覺及多媒體應用程式(例如2D/3D圖形、影像處理、視訊壓縮/解壓縮、語音辨識演算法及音訊操弄)經常要求在大量資料項進行相同操作(稱作「資料並列化」)。單指令多資料(SIMD)係指一型指令其造成一處理器在多個資料項上進行操作。SIMD技術尤其適合邏輯上可將一暫存器中的該等位元劃分成多個固定大小資料元件,各自表示一分開值的處理器。例如,於一64-位元暫存器中之位元可載明為欲作為四個分開16-位元資料元件操作的一來源運算元,其各自表示一分開16-位元值。此型資料稱作為封包資料型別或向量資料型別,及此資料型別之運算元稱作為封包資料運算元或向量運算元。換言之,一封包資料項或向量係指一串列之封包資料元件;及一封包資料運算元或一向量運算元為一SIMD指令之一來源或目的地運算元(又稱封包資料指令或一向量指令)。
舉例言之,一型SIMD指令載明欲以垂直方式在兩個來源向量運算元上執行的單一向量操作,以產生具有相等大小,具有等數資料元件,及呈相同資料元件順序的一目的地向量運算元(也稱結果向量運算元)。在該等來源向量運算元中之資料元件稱作來源資料元件,而在該等目的地向量運算元中之資料元件稱作目的地或結果資料元件。此等來源向量運算元具有相同大小且含有等寬的資料元
件,及因而含有等數資料元件。在該等兩個來源向量運算元中之相同位元位置的來源資料元件形成成對資料元件(也稱相對應資料元件)。藉該SIMD指令載明的操作係在此等成對來源資料元件中之各者上分開執行以生成匹配數目之結果資料元件,及因而各對來源資料元件具有一相對應結果資料元件。因該操作為垂直,且因該結果向量運算元為相同大小,具有等數資料元件,及該等結果向量運算元係以來源向量運算元之相同資料元件順序儲存,該等結果資料元件係在該結果向量運算元之相對應成對來減資料元件在該等來源向量運算元中之相同位元位置。除了此種範例型別之SIMD指令之外,有多種其它型別之SIMD指令(例如只有一個或有多於兩個來源向量運算元;以水平方式操作;生成一結果向量運算元,其具有不同大小,具有不同大小的資料元件,及/或具有不同資料元件順序)。須瞭解該項目的地向量運算元(或目的地運算元)係定義為執行由一指令載明的操作之直接結果,包括該目的地運算元儲存於一位置(設為暫存器,或在由該指令載明的記憶體位址),故可由另一指令存取為一來源運算元(藉該另一指令載明該相同位置)。
SIMD技術諸如英特爾核心TM處理器具有含x86、MMXTM、串流SIMD擴延(SSE)、SSE2、SSE3、SSE4.1、及SSE4.2指令所採用者,已經獲得應用程式效能的顯著改良(核心TM及MMXTM為加州聖塔卡拉英特爾公司之註冊商標或商標)。已經公開稱作為進階向量擴延(AVX)及使用
VEX編碼方案之未來SIMD擴延之一額外集合。
依據本發明之一實施例,係特地提出一種處理器以執行一指令而從事下列該等操作:讀取儲存於一來源遮罩暫存器內之多個遮罩位元,該等遮罩位元係與一向量暫存器之向量資料元件相關聯;及從事一位元反轉操作以將各個遮罩位元從一來源遮罩暫存器複製至一目的地遮罩暫存器,其中該位元反轉操作造成來自該來源遮罩暫存器之位元在該目的地遮罩暫存器內部被反轉而導致該原始位元配置之一對稱鏡像。
100‧‧‧處理器管線
102‧‧‧提取階段
104‧‧‧長度解碼階段
106‧‧‧解碼階段
108‧‧‧配置階段
110‧‧‧重新命名階段
112‧‧‧排程階段
114‧‧‧暫存器讀取/記憶體讀取階段
116‧‧‧執行階段
118‧‧‧回寫/記憶體寫入階段
122‧‧‧例外處理階段
124‧‧‧委付階段
130‧‧‧前端單元
132‧‧‧分支預測單元
134‧‧‧指令快取單元
136‧‧‧指令轉譯後備緩衝器(TLB)單元
138‧‧‧提取單元
140‧‧‧解碼單元
150‧‧‧執行引擎單元
152‧‧‧重新命名/配置器單元
154‧‧‧報廢單元
156‧‧‧排程器單元
158‧‧‧實體暫存器檔案單元
160‧‧‧執行叢集
162‧‧‧執行單元
164‧‧‧記憶體存取單元
170‧‧‧記憶體單元
172‧‧‧資料TLB單元
174‧‧‧資料快取單元
176‧‧‧第二層級(L2)快取單元
190‧‧‧處理器核心
200、310、315、415、470、480、
1000‧‧‧處理器
202A-N、502A-N‧‧‧核心
204A-N、504A-N‧‧‧快取單元
206、506‧‧‧分享快取單元
208‧‧‧整合式圖形邏輯、特用邏輯
210、510‧‧‧系統代理器單元
212‧‧‧環、以環為基之互連單元
214、514‧‧‧集積式記憶體控制器單元
216、516‧‧‧匯流排控制器單元
300、400、500‧‧‧系統
320‧‧‧控制器中樞器
340、432、434‧‧‧記憶體
345、438、620‧‧‧共處理器
350‧‧‧輸入/輸出中樞器(IOH)
360、414、514‧‧‧I/O裝置
390‧‧‧圖形記憶體控制中樞器(GMCH)
395‧‧‧連結
416、420‧‧‧匯流排
418‧‧‧匯流排橋接器
422‧‧‧鍵盤/滑鼠
424‧‧‧音訊I/O
427‧‧‧通訊裝置
428‧‧‧儲存單元、資料儲存裝置
430‧‧‧指令/碼及資料
439‧‧‧高效能介面
450、452、454‧‧‧點對點(P-P)互連、P-P介面
472、482‧‧‧控制邏輯(CL)、集積式記憶體控制器(IMC)單元
476、478、486、488、494、498‧‧‧P-P介面電路
490‧‧‧晶片組
496‧‧‧介面
515‧‧‧舊式I/O裝置
600‧‧‧單晶片系統(SOC)
602‧‧‧互連單元
610‧‧‧應用程式處理器
630‧‧‧靜態隨機存取記憶體(SRAM)單元
632‧‧‧直接記憶體存取(DMA)單元
640‧‧‧顯示單元
702‧‧‧於高階語言之程式
704‧‧‧x86編譯器
706‧‧‧x86二進制碼
708‧‧‧其它指令集編譯器
710‧‧‧其它指令集二進制碼
712‧‧‧指令轉換器
714‧‧‧不含一x86指令集核心之處理器
716‧‧‧具有至少一個x86指令集核心之處理器
802、902‧‧‧來源(SRC2)暫存器
804、904‧‧‧目的地(DST)暫存器
805‧‧‧位元反轉邏輯
901‧‧‧遮罩置換控制暫存器(SRC1)
905‧‧‧置換邏輯
1004A‧‧‧遮罩位元反轉指令
1004B‧‧‧遮罩置換指令
1005‧‧‧架構可見暫存器、架構暫存器檔案
1006‧‧‧封裝資料暫存器
1007‧‧‧封包資料操作遮罩暫存器
1008‧‧‧執行邏輯
1101-1105、1201-1205‧‧‧方塊
B0-31、P0-31‧‧‧位元位置
圖1A為一方塊圖例示依據本發明之實施例一有序管線之一實施例及一暫存器重新命名失序簽發/執行管線之一實施例兩者;圖1B為一方塊圖例示依據本發明之實施例欲含括於一處理器內的一有序架構核心之一具體實施例及一暫存器重新命名,失序簽發/執行架構核心之一具體實施例兩者;圖2為依據本發明之實施例具有集積式記憶體控制器及圖形之一單核心處理器及一多核心處理器之一方塊圖;圖3例示依據本發明之一個實施例一系統之一方塊圖;圖4例示依據本發明之一實施例一第二系統之一
方塊圖;圖5例示依據本發明之一實施例一第三系統之一方塊圖;圖6例示依據本發明之一實施例一單晶片系統(SoC)之一方塊圖;圖7例示一方塊圖對比依據本發明之實施例使用一軟體指令轉換器以將於一來源指令集中之二進制指令轉換成於一目標指令集中之二進制指令;圖8例示依據本發明之一個實施例用以執行一遮罩位元反轉操作之一設備;圖9例示依據本發明之另一實施例用以執行一遮罩位元置換操作之一設備;圖10例示一處理器架構包括封包資料暫存器及封包資料操作遮罩暫存器;圖11例示依據本發明之一個實施例用以執行一遮罩位元反轉操作之一方法;圖12例示依據本發明之另一實施例用以執行一遮罩位元置換操作之一方法。
圖1A為一方塊圖例示依據本發明之實施例一有序管線之一實施例及一暫存器重新命名失序簽發/執行管線之一實施例兩者。圖1B為一方塊圖例示依據本發明之實
施例欲含括於一處理器內的一有序架構核心之一具體實施例及一暫存器重新命名,失序簽發/執行架構核心之一具體實施例兩者。圖1A-B之實心線框例示有序管線及有序核心,而虛線框之選擇性添加例示暫存器重新命名,失序簽發/執行管線及核心。給定有序面向為失序面向之一子集,將描述該失序面向。
於圖1A中,一處理器管線100包括一提取階段102、一長度解碼階段104、一解碼階段106、一配置階段108、一重新命名階段110、一排程(又稱調度或簽發)階段112、一暫存器讀取/記憶體讀取階段114、一執行階段116、一回寫/記憶體寫入階段118、一例外處理階段122、及一委付階段124。
圖1B顯示處理器核心190包括耦接至一執行引擎單元150的一前端單元130,及兩者耦接至一記憶體單元170。核心190可為一精簡指令集電腦(RISC)核心、一複雜指令集電腦(CISC)核心、一極長指令字(VLIW)核心、或一混合或交錯核心型。至於又另一選項,核心190可為特用核心諸如,網路或通訊核心、壓縮引擎、共處理器核心、通用計算圖形處理單元(GPGPU)核心、圖形核心等。
前端單元130包括一分支預測單元132耦接至一指令快取單元134,其係耦接至一指令轉譯後備緩衝器(TLB)136,其係耦接至一指令提取單元138,其係耦接至一解碼單元140。該解碼單元140(或解碼器)可解碼指令,及產生一或多個微操作、微碼載入點、微指令、其它指令、或
其它控制信號作為輸出,其係從原始指令解碼,或以其它方式反映,或從其中導出。解碼單元140可使用各種不同機制具現。合宜機制之實施例包括,但非限制性,詢查表、硬體具現、可規劃邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等。於一實施例中,核心190包括一微碼ROM或其它媒體其儲存針對某些巨集指令(例如於解碼單元140中或否則於前端單元130內部)的微碼。解碼單元140係耦接至執行引擎單元150中的一重新命名/配置器單元152。
該執行引擎單元150包括耦接至一報廢單元154的該重新命名/配置器單元152及一或多個排程器單元156之一集合。排程器單元156表示任何數目的不同排程器,包括保留站、中心指令窗等。排程器單元156耦接至實體暫存器檔案單元158。該等實體暫存器檔案單元158各自表示一或多個實體暫存器檔案,其中之不同者儲存一或多個不同資料型別,諸如純量整數、純量浮點、堆積整數、堆積浮點、向量整數、向量浮點、狀態(例如一指示指標器其為欲執行的下個指令位址)等。於一個實施例中,該實體暫存器檔案單元158包含一向量暫存器單元、一寫遮罩暫存器單元、及一純量暫存器單元。此等暫存器單元可提供架構向量暫存器、向量遮罩暫存器、及通用暫存器。該實體暫存器檔案單元158上覆有報廢單元154以例示其中可具現暫存器重新命名及失序執行的各種方式(例如使用一重新排序緩衝器及一報廢暫存器檔案;使用一未來檔案一過去史檔案、及一報廢暫存器檔案;使用一暫存器對映圖及一暫存
器儲存庫;等)。該報廢單元154及該實體暫存器檔案單元158係耦接至該(等)執行叢集160。該(等)執行叢集160包括一集合之一或多個執行單元162及一集合之一或多個記憶體存取單元164。該執行單元162可執行各種操作(例如移位、加、減、乘)及在各型資料上(例如純量浮點、堆積整數、堆積浮點、向量整數、向量浮點)。雖然有些實施例可包括特定功能或功能之集合專用的多個執行單元,但其它實施例可包括只有一個執行單元或多個執行單元其全部執行全部功能。排程器單元156、實體暫存器檔案單元158、及執行叢集160顯示可能為多數,原因在於某些實施例針對某些型別的資料/操作產生分開管線(例如一純量整數管線、一純量浮點/堆積整數/堆積浮點/向量整數/向量浮點管線、及/或一記憶體存取管線,其各自有其本身的排程器單元、實體暫存器檔案單元、及/或執行叢集-及以分開記憶體存取管線為例,具現某些實施例其中只有此種管線的執行叢集具有記憶體存取單元164)。也須瞭解當使用分開管線時,此等管線中之一或多者可為失序簽發/執行,及其餘者為有序。
該集合之記憶體存取單元164係耦接至記憶體單元170,其包括一資料TLB單元172耦接至一資料快取單元174耦接至第二層級(L2)快取單元176。於一個具體實施例中,該記憶體存取單元164可包括一載入單元、一儲存位址單元、及一儲存資料單元,其各自係耦接至記憶體單元170中之該資料TLB單元172。該指令快取單元134係進一步耦
接至該記憶體單元170中之第二層級(L2)快取單元176。該L2快取單元176係耦接至快取記憶體的一或多個其它層級及最終耦接至一主記憶體。
舉例言之,暫存器重新命名,失序簽發/執行核心架構之實施例可具現管線100如下:1)指令提取138執行提取及長度解碼階段102及104;2)解碼單元140執行解碼階段106;3)重新命名/配置器單元152執行配置階段108及重新命名階段110;4)排程器單元156執行排程階段112;5)實體暫存器檔案單元158及記憶體單元170執行暫存器讀取/記憶體讀取階段114;執行叢集160從事執行階段116;6)記憶體單元170及實體暫存器檔案單元158執行回寫/記憶體寫入階段118;7)各種單元可涉及例外處理階段122;及8)報廢單元154及實體暫存器檔案單元158執行委付階段124。
核心190可支援一或多個指令集(例如x86指令集(有些擴延已經添加更新版本);加州善尼維爾MIPS技術公司之MIPS指令集;加州善尼維爾ARM控股公司之ARM指令集(帶有選擇性額外擴延,諸如NEON)),包括此處描述之指令。於一個實施例中,該核心190包括支援封包資料指令集擴延之邏輯(例如AVX1、AVX2、及/或某種形式之通用向量友善指令格式(U=0及/或U=1),容後詳述),藉此允許使用封包資料進行許多多媒體應用。
須瞭解該核心可支援多執行緒(執行二或多個並列集合之操作或執行緒),且可以多種方式執行,包括時間截割多執行緒、同時多執行緒(於該處單一實體核心提供一
邏輯核心給該等執行緒中之各者使得實體核心為同時多執行緒)、或其組合(例如時間截割提取及解碼及隨後同時多執行緒,諸如英特爾超執行緒技術)。
雖然暫存器重新命名係以失序執行之脈絡描述,但須瞭解暫存器重新命名可用於有序架構。雖然處理器之例示實施例也包括分開指令及資料快取單元134/174及一分享L2快取單元176,但其它實施例針對指令及資料兩者可具有單一內部快取,諸如第一層級(L1)內部快取,或多層級之內部快取。於若干實施例中,該系統可包括一內部快取與一外部快取的組合,其係在該核心及/或處理器外部。另外,全部快取記憶體可在該核心及/或處理器外部。
圖2為依據本發明之實施例一處理器200之一方塊圖,其可具有多於一個核心,可具有一集積式記憶體控制器,及可具有整合式圖形。圖2中之實線框例示一處理器200具有單一核心202A、一系統代理器210、一集合之一或多個匯流排控制器單元216,而選擇性增加的虛線框例示一替代處理器200具有多個核心202A-N,於在系統代理器單元210中之一集合之一或多個記憶體控制器單元214,及特用邏輯208。
因此,處理器200之不同具現可包括:1)一CPU具有特用邏輯208係為整合式圖形及/或科學(通量)邏輯(可包括一或多個核心),及該等核心202A-N為一或多個通用核心(例如通用有序核心、通用失序核心、兩者的組合);2)一共處理器具有核心202A-N其係為大量特用核心意圖主要
用於圖形及/或科學(通量);及3)一共處理器具有核心202A-N其係為大量通用有序核心。如此,該處理器200可為一通用處理器、共處理器、或特用處理器,諸如網路或通訊處理器、壓縮引擎、圖形處理器、通用圖形處理單元(GPGPU)、一高通量多整合式核心(MIC)共處理器(含30或以上核心)、內嵌式處理器等。該處理器可具現於一或多個晶片上。該處理器200可使用多項製程技術諸如BiCMOS、CMOS、或NMOS中之任一者成為一或多個基體之一部分及/或可具現於一或多個基體上。
記憶體階層包括在核心內部之一或多個層級的快取、一集合或一或多個分享快取單元206、及耦接至該集合之集積式記憶體控制器單元214之外部記憶體(圖中未顯示)。該集合之分享快取單元206可包括一或多個中間層級快取,諸如層級2(L2)、層級3(L3)、層級4(L4)、或其它層級快取、一最末層級快取(LLC)、及/或其組合。雖然於一個實施例中,一以環為基的互連單元212互連該整合式圖形邏輯208、該集合之分享快取單元206、及該系統代理器單元210/集積式記憶體控制器單元214,但替代實施例可使用用以互連此等單元之任何數目的眾所周知技術。於一個實施例中,在一或多個快取單元206與核心202A-N間維持同調。
於若干實施例中,核心202A-N中之一或多者能夠執行多執行緒。系統代理器210包括協力及操作核心202A-N的該等組件。系統代理器單元210可包括例如一電力
控制單元(PCU)及一顯示單元。該PCU可為或可包括調節核心202A-N及整合式圖形邏輯208需要的邏輯及組件。該顯示單元係用以驅動一或多個外部連結顯示器。
就架構指令集而言,核心202A-N可為同質或非同質;換言之,核心202A-N中之二或多者能夠執行相同指令集,而其它者能夠只執行該指令集之一子集或一不同指令集。
圖3-6為電腦架構實施例之方塊圖。也適合技藝界已知用於膝上型電腦、桌上型電腦、手持式PC、個人數位助理器、工程工作站、伺服器、網路裝置、網路中樞器、交換器、內嵌式處理器、數位信號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、手機、可攜式媒體播放器、手持式裝置、及各種其它電子裝置的其它系統設計及組態。概略言之,通常適合大量多種如此處揭示的能夠結合處理器及/或其它執行邏輯的系統或電子裝置。
現在參考圖3,顯示依據本發明之一個實施例一系統300之一方塊圖。該系統300可包括一或多個處理器310、315,其係耦接至一控制器中樞器320。於一個實施例中,控制器中樞器320包括一圖形記憶體控制中樞器(GMCH)390及一輸入/輸出中樞器(IOH)350(其可在分開晶片上);GMCH 390包括記憶體及圖形控制器,其耦接記憶體340及一共處理器345;該IOH 350耦合輸入/輸出(I/O)裝置360至GMCH 390。另外,記憶體及圖形控制器中之一或二者係整合於處理器內部(如此處描述),該記憶體340及共
處理器345係直接耦合在具有IOH 350的單一晶片內的處理器310及控制器中樞器320。
額外處理器315之選擇性本質於圖3中標示以虛線。各個處理器310、315可包括此處描述的處理核心中之一或多者,且可為處理器200之某個版本。
記憶體340可為例如動態隨機存取記憶體(DRAM)、相變記憶體(PCM)、或兩者的組合。針對至少一個實施例,控制器中樞器320透過一多點匯流排而與處理器310、315通訊,諸如前端匯流排(FSB)、點對點介面諸如快速路徑互連結構(QPI)、或類似的連結395。
於一個實施例中,該共處理器345為一特用處理器,諸如高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、內嵌式處理器等。於一個實施例中,控制器中樞器320可包括一整合式圖形加速器。
就優值尺規範圍而言,實體資源310、315間可有多種差異,包括架構、微架構、熱、電力耗用特性等。
於一個實施例中,處理器310執行指令其控制通用型別的資料處理操作。內嵌於指令內部者可為共處理器指令。處理器310認知此等共處理器指令為可藉附接的共處理器345執行的一型。據此,處理器310在一共處理器匯流排或其它互連結構上簽發此等共處理器指令(或表示共處理器指令之控制信號)給共處理器345。共處理器345接受與執行所接收的共處理器指令。
現在參考圖4,顯示依據本發明之一實施例第一
更特定系統400實施例之一方塊圖。如圖4顯示,多處理器系統400乃一點對點互連系統,及包括透過一點對點互連結構450耦接的一第一處理器470及一第二處理器480。處理器470及480各自可為處理器200之某個版本。於本發明之一個實施例中,處理器470及480分別為處理器310及315,而共處理器438為共處理器345。於另一個實施例中,處理器470及480分別為處理器310及共處理器345。
處理器470及480顯示為分別包括集積式記憶體控制器(IMC)單元472及482。處理器470也包括點對點(P-P)介面476及478作為其匯流排控制器單元之一部分;同理,第二處理器480包括P-P介面486及488。處理器470、480可使用P-P介面電路478、488,透過點對點(P-P)介面450交換資訊。如圖4顯示,IMC 472及482耦合處理器至個別記憶體,亦即記憶體432及記憶體434,其可為本地附接至個別處理器的主記憶體之一部分。
處理器470、480可使用點對點介面電路476、494、486、498,透過個別P-P介面452、454而各自與一晶片組490交換資訊。晶片組490可透過一高效能介面439而與共處理器438選擇性地交換資訊。於一個實施例中,共處理器438為特用處理器,諸如高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、內嵌式處理器等。
一分享快取記憶體(圖中未顯示)可含括於任一處理器內或在兩個處理器外部,但仍透過P-P互連結構而與
處理器連結,使得若一處理器置於低電力模式,則處理器的本地快取資訊中之任一者或兩者可儲存於分享快取記憶體。
晶片組490可透過一介面496而耦接至一第一匯流排416。於一個實施例中,第一匯流排416可為週邊組件互連(PCI)匯流排,或一匯流排諸如PCI快速匯流排或另一第三代I/O互連匯流排,但本發明之範圍並非受此所限。
如圖4所示,各種I/O裝置414可耦接至第一匯流排416,連同一匯流排橋接器418其耦接第一匯流排416至一第二匯流排420。於一個實施例中,一或多個額外處理器415諸如,共處理器、高通量MIC處理器、GPGPU、加速器(例如圖形加速器或數位信號處理器(DSP)單元)、可現場程式規劃閘陣列或任何其它處理器係耦接至第一匯流排416。於一個實施例中,第二匯流排420可為低接腳數目(LPC)匯流排。各種裝置可耦接至一第二匯流排420包括,於一個實施例中例如,鍵盤及/或滑鼠422、通訊裝置427及儲存單元428,諸如碟片機或可包括指令/碼及資料430的其它大容量儲存裝置。注意其它架構亦屬可能。更進一步,一音訊I/O424可耦接至該第二匯流排420。注意其他架構是可能的。舉例言之,替代圖4之點對點架構,一系統可具現多點匯流排或其它此種架構。
現在參考圖5,顯示依據本發明之一實施例第二更特定系統500之實施例之一方塊圖。圖4及5中之類似元件載有相似的元件符號,及圖4之某些面向已從圖5中刪除以
避免遮掩圖5之面向。
圖5例示處理器470、480分別可包括整合式記憶體及I/O控制邏輯(「CL」)472及482。如此,CL 472、482包括集積式記憶體控制器單元及包括I/O控制邏輯。圖5例示不僅記憶體432、434耦接至CL 472、482,同時I/O裝置514也耦接至CL 472、482。舊式I/O裝置515係耦接至晶片組490。
現在參考圖6,顯示依據本發明之一實施例SoC 600之一方塊圖。圖2中之相似元件載明相似的元件符號。又,虛線框為更先進SoC上的選擇性特性件。於圖6中,一互連單元602係耦接至:一應用處理器610其包括一集合之一或多個核心202A-N及分享快取單元206;一系統代理器單元210;一匯流排控制器單元216;一集積式記憶體控制器單元214;一集合或一或多個共處理器620其可包括整合式圖形邏輯、一影像處理器、一音訊處理器、及一視訊處理器;一靜態隨機存取記憶體(SRAM)單元630;一直接記憶體存取(DMA)單元632;及用以耦接至一或多個外部顯示器的一顯示單元640。於一個實施例中,該(等)共處理器620包括一特用處理器諸如,網路或通訊處理器、壓縮引擎、GPGPU、高通量MIC處理器、內嵌式處理器等。
此處揭示之機制之實施例可於硬體、軟體、韌體或此等具現辦法之一組合中具現。本發明之實施例可具現為在可規劃系統上執行的電腦程式或程式碼,該系統包含至少一個處理器、一儲存系統(含依電性及非依電性記憶體
及/或儲存元件)、至少一個輸入裝置、及至少一個輸出裝置。
程式碼諸如圖4例示之碼430可施加至輸入指令以執行此處描述之功能,及產生輸出資訊。輸出資訊可以已知方式施加至一或多個輸出裝置。為了達成本案目的,一處理系統包括具有一處理器的任何系統,諸如:數位信號處理器(DSP)、微控制器、特定應用積體電路(ASIC)、或微處理器。
程式碼可於高階程序或目的導向程式語言中具現以與一處理系統通訊。若有所需,程式碼也可於組合語言或機器語言具現。實際上,此處描述之機制之範圍絕非限於任何特定程式語言。總而言之,該語言可為編譯語言或解譯語言。
至少一個實施例之一或多個面向可藉儲存於機器可讀取媒體上的代表性指令具現,該指令表示在該處理器內部之各種邏輯,其當由機器讀取時使得該機器製造邏輯以從事此處描述之技術。此等表示型態稱作為「IP碼」可儲存於有形機器可讀取媒體上及供給各種客戶或製造工廠以載入實際上製造該邏輯或處理器的製造機器。
此等機器可讀取儲存媒體可包括,但非限制性,藉機器或裝置製造的或形成的非過渡有形物件配置結構,包括儲存媒體諸如硬碟、任何其它型別的碟片包括軟碟、光碟、光碟-唯讀記憶體(CD-ROM)、可覆寫式光碟(CD-RW)、及磁光碟、半導體裝置諸如唯讀記憶體(ROM)、隨機存取記憶體(RAM)諸如動態隨機存取記憶體
(DRAM)、靜態隨機存取記憶體(SRAM)、可抹除可規劃唯讀記憶體(EPROM)、快閃記憶體、可電氣抹除可規劃唯讀記憶體(EEPROM)、相變記憶體(PCM)、磁卡或光卡、或適用以儲存電子指令的任何其它型別媒體。
據此,本發明之實施例也包括非過渡、有形機器可讀取媒體含有指令或含有設計資料,諸如硬體描述語言(HDL),其界定此處描述的結構、電路、設備、處理器及/或系統特性件。此等實施例也稱程式產品。
於某些情況下,一指令轉換器可用以將得自一來源指令集的指令轉換成一目標指令集。舉例言之,該指令轉換器可轉譯(例如使用靜態二進制轉譯、動態二進制轉譯含動態編譯)、形變、仿真、或以其它方式將一指令轉換成欲藉核心處理的一或多個其它指令。該指令轉換器可具現於軟體、硬體、韌體、或其組合。該指令轉換器可在處理器上,在處理器外,或部分在而部分非在處理器上。
圖7為一方塊圖對比依據本發明之實施例使用一軟體指令轉換器以將於一來源指令集中之二進制指令轉換成於一目標指令集中之二進制指令。於該具體實施例中,該指令轉換器為一軟體指令轉換器,但另外,該指令轉換器可於軟體、韌體、硬體或其各種組合具現。圖7顯示於高階語言之程式702可使用x86編譯器704編譯以產生可由具有至少一個x86指令集核心之處理器716本機執行的x86二進制碼706。具有至少一個x86指令集核心之該處理器716表示任何處理器其藉可相容性地執行或以其它方式處理下列
而能夠執行與具有至少一個x86指令集核心之英特爾處理器之實質上相同功能:(1)英特爾x86指令集核心之該指令集的一實質部分;或(2)靶定以在具有至少一個x86指令集核心之一英特爾處理器上跑的應用程式之目的碼版本或其它軟體,以便達成與具有至少一個x86指令集核心之一英特爾處理器之實質上相同結果。該x86編譯器704表示一編譯器,其係可操作以產生x86二進制碼706(或目的碼)該碼可有或無額外鏈接處理而在具有至少一個x86指令集核心之處理器716上執行。同理,圖7顯示於高階語言之程式702可使用其它指令集編譯器708編譯以產生可由不含至少一個x86指令集核心之處理器714(例如一處理器具有核心其執行加州善尼維爾MIPS技術公司之MIPS指令集及/或執行加州善尼維爾ARM控股公司之ARM指令集)本機執行的其它指令集二進制碼710。指令轉換器712係用以將x86二進制碼706轉換成可由不含一x86指令集核心之處理器714本機執行的碼。此種轉換碼不可能與其它指令集二進制碼710相同,原因在於有此能力的指令轉換器難以製作;但轉換碼將完成通用操作,及從其它指令集組成指令。如此,指令轉換器712主示軟體、韌體、硬體、或其組合,其經由仿真、模擬、或任何其它處理程序許可不含一x86指令集處理器或核心的處理器或其它電子裝置執行x86二進制碼706。
用以反轉與置換在一遮罩暫存器內的位元之實施例
如此處使用之遮罩暫存器有效地含有位元,其係相對應於一向量暫存器內之元件,及追蹤須執行操作的元
件。因此理由故,需有常見操作其可複製彷彿向量暫存器的相似表現於此等遮罩位元上,通常允許調整在遮罩暫存器內部的此等遮罩位元。
本發明之一個實施例包括指令,該等指令取決於遮罩大小,藉在對稱位置的位元置換在位置n的位元而反轉在遮罩暫存器內部的此等位元。因各個遮罩位元相對應於單一向量元件,故在一遮罩暫存器中之主動位元之數目係取決於向量暫存器大小(以位元表示)及元件大小兩者。因此針對不同型資料的不同形式可資採用,包括舉例言之但非限制性,位元組(8-位元)、字元(16-位元)、雙字元(32-位元)、及四字元(64-位元)大小。一個遮罩暫存器可用作為來源,結果寫至一第二遮罩暫存器。
以下為針對雙字元形式所提示指令之一個可能具現的一虛擬碼。當然此種指令可具現用於其它資料型別(位元組、字元及四字元)。
圖8例示採用於一個實施例中之架構組件包括用以執行該遮罩反轉位元指令的位元反轉邏輯805。應答之,
得自SRC2 802內之遮罩之位元值被轉移至如所例示目的地804內部的對稱位置。舉例言之,該位元反轉邏輯805將於來源802之位置0的該位元移轉至目的地804中之位元位置31;於來源802之位置1的該位元移轉至目的地804中之位元位置30,等等直到全部位元已經從來源移轉至目的地為止,結果導致原始位元配置之對稱性「鏡像」。儲存於目的地804的所得遮罩然後可用於隨後向量操作。
本發明之另一實施例包括指令,其置換來自一第一遮罩運算元(目的地)及一第三運算元(第二來源)之值,及將其插入在由第二運算元(第一來源)中之指數指示位置的該目的地運算元中。注意此等插入允許來自來源的一個位元值被拷貝至目的地運算元中之多於一個位置。由於各個遮罩位元相對應於單一向量元件,故在一遮罩暫存器中之主動位元之數目係取決於向量暫存器大小(以位元表示)及元件大小兩者。因此此種置換操作具有針對不同型資料位元組(8-位元)、字元(16-位元)、雙字元(32-位元)、及四字元(64-位元)大小的形式。
該指令之一個實施例具有兩個來源:欲置換之一遮罩暫存器及含有該置換控制之一向量暫存器。結果係寫至一第二遮罩暫存器。
以下為針對雙字元形式所提示指令之一個可能具現。當然此種指令可具現用於其它資料型別(位元組、字元及四字元)。
圖9例示於一個實施例中採用的架構組件包括用以執行該遮罩置換指令之置換邏輯905。應答於讀取自遮罩置換控制暫存器901(於該實施例中為SRC1)的該等指數,得自於SRC2暫存器902中載明的位元位置B0-B31之位元經置換至該目的地暫存器DST 904(標示以變數j)的不同位元位置P0-P31。運用於該置換控制暫存器中之不同指數,來自SRC2 902的任何位元可被複製至DST 904中之任何位元位置。
圖10為一處理器(處理器核心)1000以執行一或多個遮罩位元反轉指令1004A(例如KREVERSEBITSD)及/或遮罩置換指令1004B(例如KPEMD)之一具體實施例之一方塊圖。於若干實施例中,該處理器可為通用處理器(例如用於桌上型電腦、膝上型電腦、伺服器等電腦之該型別)。
另外,該處理器可為特用處理器。合宜特用處理器之實施例包括,但非限制性,網路處理器、通訊處理器、密碼學處理器、圖形處理器、共處理器、內嵌式處理器、數位信號處理器(DSP)、及控制器,只舉出少數實施例。該處理器可為各種複雜指令集電腦(CISC)處理器、各種精簡指令集電腦(RISC)處理器、各種極長指令字(VLIW)處理器、其各種混合、或全然其它類別之處理器中之任一者。
該處理器1000包括架構可見暫存器(例如架構暫存器檔案)1005。架構暫存器此處也簡稱暫存器。除非另行載明或顯見,架構暫存器、暫存器檔案、及暫存器等術語於此處使用係指為軟體及/或程式規劃器為可見的暫存器,及/或由巨集指令或組合語言指令載明以識別運算元的暫存器。此等暫存器與給定微架構中的其它非架構或非架構可見暫存器(例如由指令使用的過渡暫存器、重新排序緩衝器、報廢暫存器等)成對比。暫存器通常表示晶粒上處理器儲存位置。
例示之架構暫存器可包括可操作以儲存封包資料或向量資料的封包資料暫存器1006。例示之架構暫存器也可包括封包資料操作遮罩暫存器1007。封包資料操作遮罩暫存器各自可操作以儲存一封包資料操作遮罩。於本詳細說明部分中此等暫存器可稱作為寫遮罩暫存器。封包資料運算元可儲存於封包資料暫存器1007。
處理器也包括執行邏輯1008其可操作以執行或處理遮罩位元反轉指令1004A及/或遮罩置換指令1004B中
之一或多者。於若干實施例中,執行邏輯可包括特定邏輯(例如潛在地組合韌體之特定電路或硬體)以執行此等指令。
圖11例示於一處理器中KREVERSEBITS指令之執行之一實施例。具有一第一來源暫存器運算元及一目的地暫存器運算元之一KREVERSEBITS指令,及一操作碼係於1101提取。
於1102,該KREVERSEBITS指令係藉解碼邏輯解碼。
於1103,該等來源運算元值係經取回/讀取。例如,來源暫存器係經讀取。
於1104,解碼KREVERSEBITS指令(或包含此種指令之操作,諸如微操作)係藉執行資源執行,諸如一或多個功能單元以於該來源遮罩暫存器中以於一瓶稱位置的一位元置換於位置n之各個位元。於1105,新近決定的遮罩值係儲存於目的地暫存器運算元。於若干實施例中,計算值係儲存於封包資料暫存器的資料元件中。雖然1104及1105已經分開例示,但於若干實施例中,其係一起執行為指令執行的一部分。
圖12例示於一處理器中KPERM指令之執行之一實施例。具有一第一來源暫存器運算元及一目的地暫存器運算元之一KPERM指令,及一操作碼係於1201提取。
於1202,該KPERM指令係藉解碼邏輯解碼。
於1203,該等來源運算元值係經取回/讀取。例如,控制位元係讀取自一個來源暫存器以決定如何置換該
等位元(例如圖9中之SRC1 901)及欲置換位元係讀取自其它來源暫存器(例如SCR2 902)。
於1204,已解碼KPERM指令(或包含此種指令之操作諸如微操作)係藉執行資源諸如一或多個功能單元執行以將位元從一來源遮罩暫存器(SRC2)置換入一目的地遮罩暫存器(DEST)。於1205,新決定的遮罩值係儲存於目的地暫存器運算元。於若干實施例中,計算值係儲存於封包資料暫存器的資料元件中。雖然1204及1205已經分開例示,但於若干實施例中,其係一起執行為指令執行的一部分。
本發明之實施例可包括前文已經描述之各種步驟。該等步驟可於機器可執行指令中實施,該等指令可用以使得一通用處理器或一特定處理器執行該等步驟。另外,此等步驟可藉含有執行該等步驟之有線邏輯之特定硬體組件執行,或藉規劃電腦組件與客製化硬體組件之任一項組合執行。
如此處描述,指令可指稱硬體之特定組態,諸如特定應用積體電路(ASIC)經組配以執行某些操作,或具有預定功能或軟體指令儲存於在非過渡電腦可讀取媒體實施的記憶體內。如此,附圖顯示之技術可使用於一或多個電子裝置(例如終端站台、網路元件等)上儲存與執行的碼及資料具現。此等電子裝置使用電腦機器可讀取媒體,諸如非過渡電腦機器可讀取儲存媒體(例如磁碟;光碟;隨機存取記憶體;唯讀記憶體;快閃記憶體裝置;相變記憶體)及過
渡電腦機器可讀取儲存媒體(例如電氣、光學、聲學或其它形式之傳播信號-諸如載波、紅外線信號、數位信號等)儲存及通訊(內部及/或具有其它電子裝置透過網路)碼及資料。此外,此外,此等電子裝置典型地包括耦接至一或多個其它組件的一集合之一或多個處理器,該等組件諸如一或多個儲存裝置(例如鍵盤、觸控螢幕、及/或顯示器)、及網路連結。該集合之處理器與其它組件之耦合典型地係經由一或多個匯流排及橋接器(又稱匯流排控制器)。該儲存裝置及攜載網路資料流之信號分別表示一或多個機器可讀取儲存媒體及機器可讀取通訊媒體。如此,一給定電子裝置之儲存裝置典型地儲存用以在該電子裝置之一或多個處理器之該集合上執行的碼及/或資料。當然,本發明之實施例之一或多個部分可使用軟體、韌體及/或硬體之不同組合具現。本詳細說明部分之全文中,為了用於解釋,陳述無數特定細節以供徹底瞭解本發明。但對熟諳技藝人士而言顯然易知可無此等特定細節而實施本發明。某些情況下,眾所周知之結構及功能並不以細節描述以免遮掩本發明之主旨。據此本發明之範圍及精髓須就如下申請專利範圍各項判定。
Claims (47)
- 一種處理器,其包含:複數個向量暫存器;複數個通用暫存器;複數個遮罩暫存器,包括一來源遮罩暫存器和一目的地遮罩暫存器,該來源遮罩暫存器用以儲存一遮罩,該遮罩包括複數個以一第一遮罩位元配置之遮罩位元,該等複數個遮罩位元要與一向量暫存器之複數個資料元件相關聯,並且用以指出一向量操作要針對該等相關聯資料元件的何者而被進行;一解碼器,其用以解碼一指令,該指令指定該來源遮罩暫存器和該目的地遮罩暫存器;以及一執行單元,其耦接至該解碼器和該等複數個遮罩暫存器,該執行單元回應於該經解碼指令的執行,用以:進行一遮罩位元反轉操作以反轉該等複數個遮罩位元之該第一遮罩位元配置,而致使該等複數個遮罩位元具有一第二遮罩位元配置;並且將以該第二遮罩位元配置之該等複數個遮罩位元儲存於該目的地遮罩暫存器中。
- 如請求項1的處理器,其中,該等複數個遮罩位元之各者對應至該向量暫存器之一8位元(位元組)資料元件。
- 如請求項1的處理器,其中,該目的地遮罩暫存器可儲存該等複數個遮罩位元之外的額外位元,且其中該等額外位元全部具有為零的值。
- 如請求項1的處理器,其中,該等複數個遮罩位元之數目取決於該向量暫存器的大小和該資料元件的大小。
- 如請求項1的處理器,其中,該等複數個遮罩位元可包含64位元。
- 如請求項1的處理器,其中,該等複數個遮罩位元之該第二遮罩位元配置可為該等複數個遮罩位元之該第一遮罩位元配置的一鏡像(mirror image)。
- 如請求項1的處理器,其中,該解碼器和該執行單元被包括在一失序核心(out-of-order core)中,且其中該失序核心包含一重新排序緩衝器(ROB)。
- 如請求項1的處理器,進一步包含:一層級1(L1)快取;以及一層級2(L2)快取。
- 如請求項1的處理器,其中,該處理器為一精簡指令集計算(RISC)處理器。
- 一種晶片,其包含:一集積式記憶體控制器單元;以及一處理器,其耦接至該集積式記憶體控制器單元,該處理器包含:複數個向量暫存器;複數個通用暫存器;複數個遮罩暫存器,包括一來源遮罩暫存器和一目的地遮罩暫存器,該來源遮罩暫存器用以儲存一遮罩,該遮罩包括以一第一遮罩位元配置之複數個遮罩位元,該等複數個遮罩位元要與一向量暫存器之複數個資料元件相關聯,並且用以指出一向量操作要針對該等相關聯資料元件的何者而被進行;一解碼器,其用以解碼一指令,該指令指定該來源遮罩暫存器和該目的地遮罩暫存器;以及一執行單元,其耦接至該解碼器和該等複數個遮罩暫存器,該執行單元回應於該經解碼指令的執行,用以:進行一遮罩位元反轉操作以反轉該等複數個遮罩位元之該第一遮罩位元配置,而致使該等複數個遮罩位元具有一第二遮罩位元配置;並且將以該第二遮罩位元配置之該等複數個遮罩位元儲存於該目的地遮罩暫存器中。
- 如請求項10的晶片,其中,該等複數個遮罩位元之各者對應至該向量暫存器之一8位元(位元組)資料元件。
- 如請求項10的晶片,其中,該目的地遮罩暫存器可儲存該等複數個遮罩位元之外的額外位元,且其中該等額外位元全部具有為零的值。
- 如請求項10的晶片,其中,該等複數個遮罩位元之數目取決於該向量暫存器的大小和該資料元件的大小。
- 如請求項10的晶片,其中,該等複數個遮罩位元可包含64位元。
- 如請求項10的晶片,其中,該等複數個遮罩位元之該第二遮罩位元配置可為該等複數個遮罩位元之該第一遮罩位元配置的一鏡像。
- 如請求項10的晶片,其中,該解碼器和該執行單元被包括在一失序核心中,且其中該失序核心包含一重新排序緩衝器(ROB)。
- 如請求項10的晶片,其中該處理器進一步包含:一層級1(L1)快取;以及一層級2(L2)快取。
- 如請求項10的晶片,進一步包含與該處理器耦接之一層級3(L3)快取。
- 如請求項10的晶片,其中,該處理器為一精簡指令集計算(RISC)處理器。
- 如請求項10的晶片,進一步包含將該處理器耦接至該集積式記憶體控制器單元之一環狀互連體單元。
- 如請求項10的晶片,進一步包含與該處理器耦接之複數個共處理器。
- 如請求項10的晶片,進一步包含與該處理器耦接之一通用圖形處理單元(GPGPU)。
- 如請求項10的晶片,進一步包含與該處理器耦接之一網路處理器。
- 如請求項10的晶片,進一步包含與該處理器耦接之一網路通訊介面,該網路通訊介面可通訊的將該系統耦接至一網路。
- 如請求項10的晶片,進一步包含與該處理器耦接之一通訊處理器。
- 如請求項10的晶片,進一步包含藉由至少一互連體與該處理器耦接之一直接記憶體存取(DMA)單元。
- 如請求項10的晶片,進一步包含藉由至少一互連體與該處理器耦接之一音訊處理器。
- 如請求項10的晶片,進一步包含藉由至少一互連體與該處理器耦接之一影像處理器。
- 如請求項10的晶片,進一步包含與該處理器耦接之一顯示單元,該顯示單元耦接至一或多個顯示器。
- 一種系統,其包含:一系統記憶體;以及一處理器,其耦接至該系統記憶體,該處理器包含:複數個向量暫存器;複數個通用暫存器;複數個遮罩暫存器,包括一來源遮罩暫存器和一目的地遮罩暫存器,該來源遮罩暫存器用以儲存一遮罩,該遮罩包括以一第一遮罩位元配置之複數個遮罩位元,該等複數個遮罩位元要與一向量暫存器之複數個資料元件相關聯,並且用以指出一向量操作要針對該等相關聯資料元件的何者而被進行;一解碼器,其用以解碼一指令,該指令指定該來源遮罩暫存器和該目的地遮罩暫存器;以及一執行單元,其耦接至該解碼器和該等複數個遮罩暫存器,該執行單元回應於該經解碼指令的執行,用以:進行一遮罩位元反轉操作以反轉該等複數個遮罩位元之該第一遮罩位元配置,而致使該等複數個遮罩位元具有一第二遮罩位元配置;並且將以該第二遮罩位元配置之該等複數個遮罩位元儲存於該目的地遮罩暫存器中。
- 如請求項30的系統,其中,該等複數個遮罩位元之各者對應至該向量暫存器之一8位元(位元組)資料元件。
- 如請求項30的系統,其中,該目的地遮罩暫存器可儲存該等複數個遮罩位元之外的額外位元,且其中該等額外位元全部具有為零的值。
- 如請求項30的系統,其中,該等複數個遮罩位元之數目取決於該向量暫存器的大小和該資料元件的大小。
- 如請求項30的系統,其中,該等複數個遮罩位元可包含64位元。
- 如請求項30的系統,其中,該等複數個遮罩位元之該第二遮罩位元配置可為該等複數個遮罩位元之該第一遮罩位元配置的一鏡像。
- 如請求項30的系統,其中,該解碼器和該執行單元被包括在一失序核心中,且其中該失序核心包含一重新排序緩衝器(ROB)。
- 如請求項30的系統,其中該處理器進一步包含:一層級1(L1)快取;以及一層級2(L2)快取。
- 如請求項30的系統,其中,該處理器為一精簡指令集計算(RISC)處理器。
- 如請求項30之系統,進一步包含耦接至該處理器之一大容量儲存裝置。
- 如請求項30之系統,進一步包含耦接至該處理器之一硬碟驅動器。
- 如請求項30之系統,進一步包含耦接至該處理器之一I/O裝置。
- 如請求項30之系統,進一步包含耦接至該處理器之一通訊裝置。
- 如請求項30之系統,進一步包含耦接至該處理器之一第二處理器。
- 如請求項30之系統,進一步包含耦接至該處理器之一周邊組件互連體(PCI)快速匯流排。
- 如請求項30之系統,進一步包含耦接至該處理器之音訊I/O。
- 如請求項30之系統,其中該系統記憶體包含一動態隨機存取記憶體(DRAM)。
- 如請求項30之系統,其中該系統記憶體包含指令,該等指令當藉由該系統實行時可致使該系統使用指令來進行該遮罩位元反轉操作,以複製要針對該向量暫存器的該等複數個資料元件而被進行的一相似操作。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/929,563 | 2013-06-27 | ||
US13/929,563 US9645820B2 (en) | 2013-06-27 | 2013-06-27 | Apparatus and method to reserve and permute bits in a mask register |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201737063A TW201737063A (zh) | 2017-10-16 |
TWI641993B true TWI641993B (zh) | 2018-11-21 |
Family
ID=52116842
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW103121591A TWI575447B (zh) | 2013-06-27 | 2014-06-23 | 用以反轉與置換在一遮罩暫存器內的位元之設備及方法 |
TW105143906A TWI641993B (zh) | 2013-06-27 | 2014-06-23 | 用以反轉與置換在一遮罩暫存器內的位元之設備及方法(二) |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW103121591A TWI575447B (zh) | 2013-06-27 | 2014-06-23 | 用以反轉與置換在一遮罩暫存器內的位元之設備及方法 |
Country Status (8)
Country | Link |
---|---|
US (4) | US9645820B2 (zh) |
EP (1) | EP3014417A4 (zh) |
KR (2) | KR101966713B1 (zh) |
CN (2) | CN105247474B (zh) |
BR (1) | BR112015029810A8 (zh) |
RU (1) | RU2636669C2 (zh) |
TW (2) | TWI575447B (zh) |
WO (1) | WO2014209685A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8515052B2 (en) | 2007-12-17 | 2013-08-20 | Wai Wu | Parallel signal processing system and method |
US9645820B2 (en) | 2013-06-27 | 2017-05-09 | Intel Corporation | Apparatus and method to reserve and permute bits in a mask register |
US10152321B2 (en) * | 2015-12-18 | 2018-12-11 | Intel Corporation | Instructions and logic for blend and permute operation sequences |
US9946541B2 (en) * | 2015-12-18 | 2018-04-17 | Intel Corporation | Systems, apparatuses, and method for strided access |
US10296416B2 (en) * | 2016-07-02 | 2019-05-21 | Intel Corporation | Read from memory instructions, processors, methods, and systems, that do not take exception on defective data |
US10235170B2 (en) * | 2016-09-30 | 2019-03-19 | International Business Machines Corporation | Decimal load immediate instruction |
KR102503176B1 (ko) * | 2018-03-13 | 2023-02-24 | 삼성디스플레이 주식회사 | 데이터 전송 시스템, 상기 데이터 전송 시스템을 포함하는 표시 장치 및 이를 이용한 데이터 전송 방법 |
US20200371793A1 (en) * | 2019-05-24 | 2020-11-26 | Texas Instruments Incorporated | Vector store using bit-reversed order |
CN112181877B (zh) * | 2020-10-28 | 2022-06-21 | 瑞芯微电子股份有限公司 | 一种显示变频方法和系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200606717A (en) * | 2004-06-29 | 2006-02-16 | Intel Corp | Conditional instruction for a single instruction, multiple data execution engine |
US7174014B2 (en) * | 2000-05-05 | 2007-02-06 | Teleputers, Llc | Method and system for performing permutations with bit permutation instructions |
Family Cites Families (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0337715A (ja) | 1989-07-05 | 1991-02-19 | Fujitsu Ltd | ビット順反転回路 |
US5553309A (en) | 1991-11-08 | 1996-09-03 | Japan Atomic Energy Research Institute | Device for high speed evaluation of logical expressions and high speed vector operations |
JP2665111B2 (ja) * | 1992-06-18 | 1997-10-22 | 日本電気株式会社 | ベクトル処理装置 |
US5832288A (en) | 1996-10-18 | 1998-11-03 | Samsung Electronics Co., Ltd. | Element-select mechanism for a vector processor |
WO1998044409A1 (fr) | 1997-04-03 | 1998-10-08 | Seiko Epson Corporation | Micro-ordinateur, dispositif electronique et procede de traitement d'information |
KR20000013327A (ko) | 1998-08-07 | 2000-03-06 | 윤종용 | 인쇄기의 전사유니트 |
US6321687B1 (en) * | 1999-07-28 | 2001-11-27 | Whiteshire/Hamroc Llc | Individual room duct and ventilation system for livestock production building |
US6557096B1 (en) * | 1999-10-25 | 2003-04-29 | Intel Corporation | Processors with data typer and aligner selectively coupling data bits of data buses to adder and multiplier functional blocks to execute instructions with flexible data types |
US6643280B1 (en) * | 1999-10-27 | 2003-11-04 | Lucent Technologies Inc. | Method and apparatus for generation of CDMA long codes |
US6622242B1 (en) | 2000-04-07 | 2003-09-16 | Sun Microsystems, Inc. | System and method for performing generalized operations in connection with bits units of a data word |
US7237097B2 (en) * | 2001-02-21 | 2007-06-26 | Mips Technologies, Inc. | Partial bitwise permutations |
US7017032B2 (en) | 2001-06-11 | 2006-03-21 | Broadcom Corporation | Setting execution conditions |
US7017028B2 (en) | 2003-03-14 | 2006-03-21 | International Business Machines Corporation | Apparatus and method for updating pointers for indirect and parallel register access |
US7610466B2 (en) | 2003-09-05 | 2009-10-27 | Freescale Semiconductor, Inc. | Data processing system using independent memory and register operand size specifiers and method thereof |
KR100925911B1 (ko) * | 2004-07-29 | 2009-11-09 | 콸콤 인코포레이티드 | 다이버시티 인터리빙을 위한 시스템 및 방법 |
TWI265455B (en) | 2005-04-21 | 2006-11-01 | King Billion Electronics Co Lt | Integrated data processor |
US8205334B2 (en) * | 2005-07-15 | 2012-06-26 | United Technologies Corporation | Method for repairing a gas turbine engine component |
US9436468B2 (en) * | 2005-11-22 | 2016-09-06 | Intel Corporation | Technique for setting a vector mask |
US20070143579A1 (en) | 2005-12-19 | 2007-06-21 | King Billion Electronics Co. Ltd. | Integrated data processor |
US20080013389A1 (en) * | 2006-07-11 | 2008-01-17 | Jaehee Kim | Random access memory including test circuit |
US7676647B2 (en) | 2006-08-18 | 2010-03-09 | Qualcomm Incorporated | System and method of processing data using scalar/vector instructions |
JP4228241B2 (ja) * | 2006-12-13 | 2009-02-25 | ソニー株式会社 | 演算処理装置 |
US20090172348A1 (en) | 2007-12-26 | 2009-07-02 | Robert Cavin | Methods, apparatus, and instructions for processing vector data |
US9529592B2 (en) | 2007-12-27 | 2016-12-27 | Intel Corporation | Vector mask memory access instructions to perform individual and sequential memory access operations if an exception occurs during a full width memory access operation |
US8433747B2 (en) | 2008-02-01 | 2013-04-30 | Microsoft Corporation | Graphics remoting architecture |
US8295941B2 (en) * | 2008-09-15 | 2012-10-23 | The Invention Science Fund I, Llc | Systems configured to power at least one device disposed in a living subject, and related apparatuses and methods |
US9354944B2 (en) * | 2009-07-27 | 2016-05-31 | Advanced Micro Devices, Inc. | Mapping processing logic having data-parallel threads across processors |
RU2439662C2 (ru) * | 2009-12-22 | 2012-01-10 | Государственное образовательное учреждение высшего профессионального образования "Саратовский государственный университет им. Н.Г. Чернышевского" | Устройство управляемой перестановки битов бинарной строки |
US8682621B2 (en) * | 2010-07-16 | 2014-03-25 | Micron Technology, Inc. | Simulating the transmission of asymmetric signals in a computer system |
US20120166511A1 (en) | 2010-12-22 | 2012-06-28 | Hiremath Chetan D | System, apparatus, and method for improved efficiency of execution in signal processing algorithms |
ES2943248T3 (es) | 2011-04-01 | 2023-06-12 | Intel Corp | Formato de instrucción compatible con vectores y ejecución del mismo |
CN103988173B (zh) * | 2011-11-25 | 2017-04-05 | 英特尔公司 | 用于提供掩码寄存器与通用寄存器或存储器之间的转换的指令和逻辑 |
US20130151822A1 (en) | 2011-12-09 | 2013-06-13 | International Business Machines Corporation | Efficient Enqueuing of Values in SIMD Engines with Permute Unit |
CN104011670B (zh) | 2011-12-22 | 2016-12-28 | 英特尔公司 | 用于基于向量写掩码的内容而在通用寄存器中存储两个标量常数之一的指令 |
US9703558B2 (en) | 2011-12-23 | 2017-07-11 | Intel Corporation | Systems, apparatuses, and methods for setting an output mask in a destination writemask register from a source write mask register using an input writemask and immediate |
US9639503B2 (en) * | 2013-03-15 | 2017-05-02 | Qualcomm Incorporated | Vector indirect element vertical addressing mode with horizontal permute |
US9645820B2 (en) * | 2013-06-27 | 2017-05-09 | Intel Corporation | Apparatus and method to reserve and permute bits in a mask register |
-
2013
- 2013-06-27 US US13/929,563 patent/US9645820B2/en active Active
-
2014
- 2014-06-17 EP EP14817656.3A patent/EP3014417A4/en not_active Ceased
- 2014-06-17 RU RU2015151187A patent/RU2636669C2/ru not_active IP Right Cessation
- 2014-06-17 CN CN201480030625.0A patent/CN105247474B/zh active Active
- 2014-06-17 WO PCT/US2014/042789 patent/WO2014209685A1/en active Application Filing
- 2014-06-17 CN CN201810006909.6A patent/CN108052349B/zh active Active
- 2014-06-17 BR BR112015029810A patent/BR112015029810A8/pt not_active Application Discontinuation
- 2014-06-17 KR KR1020177005908A patent/KR101966713B1/ko active IP Right Grant
- 2014-06-17 KR KR1020157031234A patent/KR101713841B1/ko active IP Right Grant
- 2014-06-23 TW TW103121591A patent/TWI575447B/zh not_active IP Right Cessation
- 2014-06-23 TW TW105143906A patent/TWI641993B/zh active
-
2017
- 2017-04-13 US US15/487,080 patent/US10209988B2/en active Active
- 2017-10-16 US US15/785,016 patent/US10387148B2/en active Active
- 2017-10-16 US US15/785,030 patent/US10387149B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7174014B2 (en) * | 2000-05-05 | 2007-02-06 | Teleputers, Llc | Method and system for performing permutations with bit permutation instructions |
TW200606717A (en) * | 2004-06-29 | 2006-02-16 | Intel Corp | Conditional instruction for a single instruction, multiple data execution engine |
Also Published As
Publication number | Publication date |
---|---|
CN105247474A (zh) | 2016-01-13 |
US10209988B2 (en) | 2019-02-19 |
TW201510862A (zh) | 2015-03-16 |
RU2015151187A (ru) | 2017-06-01 |
WO2014209685A1 (en) | 2014-12-31 |
US20180052686A1 (en) | 2018-02-22 |
CN108052349B (zh) | 2022-06-10 |
CN108052349A (zh) | 2018-05-18 |
KR101966713B1 (ko) | 2019-04-09 |
EP3014417A4 (en) | 2017-06-21 |
US20170220350A1 (en) | 2017-08-03 |
US10387148B2 (en) | 2019-08-20 |
KR20150138319A (ko) | 2015-12-09 |
TWI575447B (zh) | 2017-03-21 |
US20150006847A1 (en) | 2015-01-01 |
TW201737063A (zh) | 2017-10-16 |
US20180039497A1 (en) | 2018-02-08 |
EP3014417A1 (en) | 2016-05-04 |
US9645820B2 (en) | 2017-05-09 |
CN105247474B (zh) | 2019-06-18 |
BR112015029810A8 (pt) | 2019-12-24 |
KR20170027883A (ko) | 2017-03-10 |
KR101713841B1 (ko) | 2017-03-09 |
RU2636669C2 (ru) | 2017-11-27 |
US10387149B2 (en) | 2019-08-20 |
BR112015029810A2 (pt) | 2017-07-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI641993B (zh) | 用以反轉與置換在一遮罩暫存器內的位元之設備及方法(二) | |
CN107729048B (zh) | 提供向量压缩和旋转功能的指令和逻辑 | |
JP5795787B2 (ja) | 条件付きループをベクトル化する命令及び論理 | |
JP6466388B2 (ja) | 方法及び装置 | |
CN109062608B (zh) | 用于独立数据上递归计算的向量化的读和写掩码更新指令 | |
TWI476682B (zh) | 用以偵測向量暫存器內相等元素之裝置及方法 | |
US9268626B2 (en) | Apparatus and method for vectorization with speculation support | |
TW201732570A (zh) | 用於聚合集中及跨步的系統、裝置及方法 | |
TW201519087A (zh) | 用以提供向量子位元解壓縮功能之方法、設備、指令及邏輯 | |
JP5806748B2 (ja) | 書き込みマスク・レジスタの末尾の最下位マスキング・ビットを判定するためのシステム、装置、および方法 | |
JP2018506096A (ja) | ベクトルビットシャッフルを実行するための方法および装置 | |
JP2017539013A (ja) | 競合検出を実行するための方法および装置 | |
US10545757B2 (en) | Instruction for determining equality of all packed data elements in a source operand | |
TW201712530A (zh) | 用於改善狀態相依計算效能的系統、方法和設備 | |
JP5753603B2 (ja) | データ要素内のビットをゼロ化するためのシステム、装置、および方法 |