TWI546735B - 用以提供在遮罩暫存器與通用暫存器或記憶體間的轉換之指令及邏輯 - Google Patents

用以提供在遮罩暫存器與通用暫存器或記憶體間的轉換之指令及邏輯 Download PDF

Info

Publication number
TWI546735B
TWI546735B TW101143925A TW101143925A TWI546735B TW I546735 B TWI546735 B TW I546735B TW 101143925 A TW101143925 A TW 101143925A TW 101143925 A TW101143925 A TW 101143925A TW I546735 B TWI546735 B TW I546735B
Authority
TW
Taiwan
Prior art keywords
instruction
register
processor
mask
data
Prior art date
Application number
TW101143925A
Other languages
English (en)
Other versions
TW201337746A (zh
Inventor
艾哈邁德 瓦爾 艾爾穆斯塔法 烏爾德
傑瑟斯 科貝爾
羅伯特 華倫泰
布瑞特L 托爾
馬克J 查尼
Original Assignee
英特爾公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 英特爾公司 filed Critical 英特爾公司
Publication of TW201337746A publication Critical patent/TW201337746A/zh
Application granted granted Critical
Publication of TWI546735B publication Critical patent/TWI546735B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30185Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor

Description

用以提供在遮罩暫存器與通用暫存器或記憶體間的轉換之指令及邏輯 發明領域
本文揭示係有關於處理邏輯、微處理器、及相聯結的指令集架構領域,其當由處理器或其它處理邏輯執行時執行邏輯、數學、或其它函數運算。更明確言之,本文揭示係有關於用以提供在遮罩暫存器與通用暫存器或記憶體間的轉換之指令及邏輯。
發明背景
先進處理器經常包括指令以提供運算密集的操作,但提供使用各種資料儲存裝置諸如,單一指令多重資料(SIMD)向量暫存器透過有效體現而探索高階資料平行性。
過去有些向量處理器曾經使用兩型特定控制暫存器,亦即一遮罩暫存器,以選擇性地去能或遮罩針對該等向量暫存器中的特定向量元素的操作;及一向量長度暫存器,以指示儲存於一向量暫存器中的向量元素的數目。也曾提供指令以從向量比較結果提設定遮罩暫存器。由此等有限的遮罩操作方法典型地採用管線化向量比較之執 行,可能無法完整實現使用遮罩暫存器潛在的效能優點。此外,有些體現利用遮罩暫存器之管線化測試以選擇性地去能或遮罩針對特定向量元素的操作;及於若干體現中,唯有遮罩操作的結果之寫入被去能,而遮罩操作仍然於管線中執行,因而抵銷了使用遮罩暫存器潛在的效能優點。此等體現可能限制了否則從例如寬的或大型寬度向量架構所可能預期的效能優勢。
至今為止,尚未能充分探討此種效能限制議題及瓶頸的潛在解決方案。
依據本發明之一實施例,係特地提出一種處理器包含一遮罩暫存器包含一第一多個資料欄位以儲存指示經遮罩的向量元素之值,及指示未經遮罩的向量元素之值;一解碼級以解碼載明一目的地運算元、相對應於該等第一多個資料欄位之一部分的一遮罩長度、及一來源運算元的一第一指令;及一執行單元回應於該已解碼的第一指令而從於該來源運算元中的資料欄位讀取多個值,該數目係相對應於由該第一指令所載明的該遮罩長度,儲存該等多個值至在由該第一指令所載明之該目的地運算元中之相對應資料欄位,及儲存指示被遮罩的向量元素之值至該目的地運算元中相對應於由該第一指令所載明的該遮罩長度之該等第一多個資料欄位之該部分以外的任何資料欄位。
100、600、700、800‧‧‧系統
102、200、500、610、615、770、780、1000、1215‧‧‧處理器
104、167‧‧‧快取記憶體
106、145、164‧‧‧暫存器檔案
108、142、162、462‧‧‧執行單元
109、143‧‧‧緊縮指令集
110‧‧‧處理器匯流排
112‧‧‧繪圖卡/視訊卡、圖形控制器
114‧‧‧加速圖形埠(AGP)互連體
116‧‧‧記憶體控制器中樞器(MCH)、系統邏輯晶片
118‧‧‧記憶體介面
120、640、832、834、1140‧‧‧記憶體
122‧‧‧系統I/O、專有中樞器介面匯流排
124‧‧‧資料儲存裝置
126‧‧‧無線收發器
128‧‧‧快閃記憶體BIOS、韌體中樞器
130‧‧‧輸入/輸出(I/O)控制中樞器(ICH)
134‧‧‧網路控制器
140、160‧‧‧資料處理系統
141‧‧‧匯流排
144、165、165B‧‧‧解碼器
146‧‧‧SDRAM控制
147‧‧‧靜態隨機存取記憶體(SRAM)控制
148‧‧‧叢發快閃記憶體介面
149‧‧‧PCMCIA/CF卡控制
150‧‧‧液晶顯示器(LCD)控制
151‧‧‧DMA控制器
152‧‧‧其它匯流排主機介面
153‧‧‧I/O匯流排
154‧‧‧I/O橋接器
155‧‧‧通用異步接收器/發射器(UART)
156‧‧‧通用串列匯流排(USB)
157‧‧‧無線UART
158‧‧‧I/O擴充介面
159、170‧‧‧處理核心
161‧‧‧SIMD共處理器
163‧‧‧指令集之指令
166‧‧‧主處理器
168‧‧‧輸入/輸出系統
169‧‧‧無線介面
171‧‧‧共處理器匯流排
201‧‧‧前端
202‧‧‧快排程器
203‧‧‧失序執行單元
204‧‧‧慢/通用浮點(FP)排程器
206‧‧‧簡單FP排程器
208‧‧‧整數暫存器檔案/旁通網路
210‧‧‧FP暫存器檔案/旁通網路
211‧‧‧執行區塊
212、214‧‧‧位址產生單元(AGU)
216、218‧‧‧快ALU
220‧‧‧慢ALU
222‧‧‧浮點單元ALU
224‧‧‧浮點移動單元
226‧‧‧指令預提取器
228‧‧‧指令解碼器
230‧‧‧軌跡快取記憶體
232‧‧‧微碼ROM
234‧‧‧微操作佇列
310‧‧‧緊縮位元組
320‧‧‧緊縮字組
330‧‧‧緊縮雙字組
341‧‧‧緊縮對半
342‧‧‧緊縮單一
343‧‧‧緊縮雙重
344‧‧‧無符號緊縮位元組表示型態
345‧‧‧有符號緊縮位元組表示型態
346‧‧‧無符號緊縮字組表示型態
347‧‧‧有符號緊縮字組表示型態
348‧‧‧無符號緊縮雙字組表示型態
349‧‧‧有符號緊縮雙字組表示型態
360、370、380、397、398‧‧‧操作碼格式
361、362、371、372‧‧‧欄位
363、373‧‧‧MOD欄位
364、365、374、375、385、390‧‧‧來源運算元識別符
366、376、386‧‧‧目的地運算元識別符
378‧‧‧前綴位元組
381‧‧‧條件欄位
382、387、388、389‧‧‧CDP操作碼欄位
383‧‧‧大小欄位
384‧‧‧飽和欄位
391‧‧‧VEX前綴位元組
393‧‧‧選擇性規度-指數-基數(SIB)識別符
394‧‧‧選擇性置換識別符
395‧‧‧選擇性即刻位元組
396‧‧‧EVEX前綴位元組
397‧‧‧VEX格式、操作碼格式
398‧‧‧EVEX格式、操作碼格式
400‧‧‧管線
402-424‧‧‧級、步驟
402‧‧‧提取級
404‧‧‧長度解碼級
406‧‧‧解碼級
408‧‧‧配置級
410‧‧‧重新命名級
412‧‧‧排程級
414‧‧‧暫存器讀取/記憶體讀取級
416‧‧‧執行級
418‧‧‧回寫/記憶體寫入級
422‧‧‧例外處理級
424‧‧‧委付級
430‧‧‧前端單元
432‧‧‧分支預測單元
434‧‧‧指令快取單元
436‧‧‧指令轉譯後備緩衝器(TLB)
438‧‧‧指令提取單元
440‧‧‧解碼單元
450‧‧‧執行引擎單元
452‧‧‧重新命名/配置器單元
454‧‧‧報廢單元
456‧‧‧排程器單元
458‧‧‧實體暫存器檔案單元
460‧‧‧執行叢集
464‧‧‧記憶體存取單元
470‧‧‧記憶體單元
472‧‧‧資料TLB單元
474‧‧‧資料快取單元
476‧‧‧層級2(L2)快取單元
490‧‧‧核心、處理器核心
502A-N‧‧‧核心
504A-N‧‧‧快取單元
506‧‧‧分享快取單元
508‧‧‧集積式圖形邏輯
510‧‧‧系統代理者
512‧‧‧基於環式的互連體單元
514‧‧‧集積式記憶體控制器單元之集合
516‧‧‧匯流排控制器單元
620‧‧‧圖形記憶體控制器中樞器(GMCH)
645‧‧‧顯示器
650‧‧‧輸入/輸出(I/O)控制中樞器(ICH)
660‧‧‧外部圖形裝置
670‧‧‧周邊裝置
695‧‧‧前端匯流排(FSB)
714、814‧‧‧I/O裝置
716‧‧‧第一匯流排
718‧‧‧匯流排橋接器
720‧‧‧第二匯流排
722‧‧‧鍵盤/滑鼠
724‧‧‧音訊I/O
726‧‧‧通訊裝置
728‧‧‧資料儲存單元
730‧‧‧代碼
738‧‧‧高效能圖形電路
739‧‧‧高效能圖形介面
750‧‧‧點對點(P-P、PtP)互連體
752、754、786、788‧‧‧點對點介面
772、782‧‧‧積體記憶體控制器單元(IMC)
776、778、786、788、794、798‧‧‧點對點介面電路
790‧‧‧晶片組
796‧‧‧介面
815‧‧‧舊式I/O裝置
872、882‧‧‧集積式記憶體及I/O控制邏輯(CL)
890‧‧‧晶片
900‧‧‧單晶片系統(SoC)
902‧‧‧互連體單元
910‧‧‧應用程式處理器
920‧‧‧媒體處理器
924、1015‧‧‧影像處理器
926‧‧‧音訊處理器
928、1020‧‧‧視訊處理器
930‧‧‧靜態隨機存取記憶體(SRAM)單元
932‧‧‧直接記憶體存取(DMA)單元
940‧‧‧顯示單元
1005‧‧‧CPU
1010‧‧‧GPU
1025‧‧‧USB控制器
1030‧‧‧UART控制器
1035‧‧‧SPI/SDIO控制器
1040‧‧‧顯示裝置
1045‧‧‧高畫質多媒體介面(HDMI)控制器
1050‧‧‧MIPI控制器
1055‧‧‧快閃記憶體控制器
1060‧‧‧雙倍資料率(DDR)控制器
1065‧‧‧安全引擎
1070‧‧‧I2S/I2C(積體晶片間聲音/積體電路間)介面
1110‧‧‧硬體模型
1120‧‧‧模擬軟體
1130‧‧‧儲存裝置
1150‧‧‧有線連結
1160‧‧‧無線連結
1205‧‧‧程式
1210‧‧‧仿真邏輯
1302‧‧‧高階語言
1304‧‧‧x86編譯器
1306‧‧‧x86二進制碼
1308‧‧‧另一指令集編譯器
1310‧‧‧另一指令集二進制碼
1312‧‧‧指令轉換器
1314‧‧‧不具x86指令集核心之處理器
1316‧‧‧具有至少一個x86指令集核心之處理器
1401、1501、1601‧‧‧處理
1410-1470、1510-1570、1610-1670‧‧‧處理方塊
本發明係於附圖之圖式中舉例說明但非限制性。
圖1A為執行指令以提供在遮罩暫存器與通用暫存器或記憶體間的轉換之一系統之一個實施例之方塊圖。
圖1B為執行指令以提供在遮罩暫存器與通用暫存器或記憶體間的轉換之一系統之另一個實施例之方塊圖。
圖1C為執行指令以提供在遮罩暫存器與通用暫存器或記憶體間的轉換之一系統之另一個實施例之方塊圖。
圖2為執行指令以提供在遮罩暫存器與通用暫存器或記憶體間的轉換之一處理器之一個實施例之方塊圖。
圖3A例示說明依據一個實施例的緊縮資料型別。
圖3B例示說明依據一個實施例的緊縮資料型別。
圖3C例示說明依據一個實施例的緊縮資料型別。
圖3D例示說明依據一個實施例編碼以提供在遮罩暫存器與通用暫存器或記憶體間的轉換之一指令。
圖3E例示說明依據另一個實施例編碼以提供在遮罩暫存器與通用暫存器或記憶體間的轉換之一指令。
圖3F例示說明依據另一個實施例編碼以提供在遮罩暫存器與通用暫存器或記憶體間的轉換之一指令。
圖3G例示說明依據另一個實施例編碼以提供在遮罩暫存器與通用暫存器或記憶體間的轉換之一指令。
圖3H例示說明依據另一個實施例編碼以提供在遮罩暫存器與通用暫存器或記憶體間的轉換之一指令。
圖4A例示說明一處理器微架構以執行指令而提供在遮罩暫存器與通用暫存器或記憶體間的轉換之一個實施例的元件。
圖4B例示說明一處理器微架構以執行指令而提供在遮罩暫存器與通用暫存器或記憶體間的轉換之另一個實施例的元件。
圖5例示說明一處理器以執行指令而提供在遮罩暫存器與通用暫存器或記憶體間的轉換之一個實施例之方塊圖。
圖6例示說明一電腦系統以執行指令而提供在遮罩暫存器與通用暫存器或記憶體間的轉換之一個實施例之方塊圖。
圖7例示說明一電腦系統以執行指令而提供在遮罩暫存器與通用暫存器或記憶體間的轉換之另一個實施例之方塊圖。
圖8例示說明一電腦系統以執行指令而提供在遮罩暫存器與通用暫存器或記憶體間的轉換之另一個實施例之方塊圖。
圖9例示說明一單晶片系統以執行指令而提供在遮罩暫存器與通用暫存器或記憶體間的轉換之一個實施例之方塊圖。
圖10例示說明一處理器以執行指令而提供在遮罩暫存器與通用暫存器或記憶體間的轉換之一個實施例之方塊圖。
圖11例示說明一IP核心發展系統以提供在遮罩暫存器與通用暫存器或記憶體間的轉換之一個實施例之方塊圖。
圖12例示說明提供在遮罩暫存器與通用暫存器或記憶體間的轉換之一架構仿真系統之一個實施例。
圖13例示說明轉譯指令以提供在遮罩暫存器與通用暫存器或記憶體間的轉換之一系統之一個實施例。
圖14例示說明一種提供在遮罩暫存器與通用暫存器或記憶體間的轉換之方法的一個實施例之流程圖。
圖15例示說明一種提供從遮罩暫存器至通用暫存器或記憶體目的地的轉換之方法的一個實施例之流程圖。
圖16例示說明一種提供從通用暫存器或記憶體至遮罩暫存器的轉換之方法的一個實施例之流程圖。
較佳實施例之詳細說明
後文詳細說明部分揭示指令及處理邏輯以提供在一處理器、電腦系統、或其它處理裝置內部或相聯結的在遮罩暫存器與通用暫存器或記憶體間的轉換。
指令及邏輯提供在遮罩暫存器與通用暫存器或記憶體間的轉換。於若干實施例中,回應於一指令載明:目的地運算元、相對應於遮罩資料欄位數目的遮罩長度、及來源運算元;在該來源運算元中,從相對應於所載明的遮罩長度的資料欄位讀取值,及儲存至由該指令所載明的在該目的地運算元中之相對應資料欄位,其中該來源運算元或目的地運算元中之一者為一遮罩暫存器。指示被遮罩的向量元素之值也可儲存至該目的地運算元中,相對應於所載明的遮罩長度之資料欄位數目以外的任何資料欄位。針對有些實施例,該來源運算元或目的地運算元中之另一者可為通用暫存器或記憶體位置。針對有些實施例,該來源運算元或目的地運算元中之另一者也可為另一個遮罩暫存器。
如此可使用可用的一完整指令集建構、修正與操 作遮罩以在通用暫存器上執行操作。此外,於一指令中載明相對應於遮罩資料欄位數目的遮罩長度,及儲存指示被遮罩的向量元素之值至相對應於所載明的遮罩長度之該等資料欄位以外的任何資料欄位,提供額外效益而免除向量長度暫存器以指示儲存在向量暫存器中的向量元素數目之需要。
於後文詳細說明部分中,陳述無數特定細節,諸如處理邏輯、處理器型別、微架構條件、事件、致能機構等,以供更徹底瞭解本發明之實施例。但熟諳技藝人士須瞭解可無此等特定細節以實施本發明。此外,若干眾所周知的結構、電路等並不以細節顯示以免不必要地遮掩本發明之實施例。
雖然後文實施例係參考處理器做說明,但其它實施例可適用於其它型別的積體電路及邏輯裝置。本發明之實施例的類似技術與教示可應用至虱夠從較高的管線資料通量與改良效能獲益的其它型別之電路或半導體裝置。本發明之實施例之教示適用於執行資料操作的任何處理器或機器。但本發明並不限於執行512位元、256位元、128位元、64位元、32位元、或16位元操作的處理器或機器,而可應用於其中執行資料的操作或管理之任何處理器或機器。此外,後文詳細說明部分提供實例,及附圖顯示用於例示說明的各個實例。但此等實例不應解譯為限制性意義,原因在於其僅意圖提供本發明之實施例之舉例而非提供本發明之實施例的全部可能體現之排它列表。
雖然下述實例描述於執行單元及邏輯電路之脈絡的指令處理及分配,但其它本發明之實施例可藉儲存在機器可讀取有形媒體上之資料或指令完成,該等資料或指令當由一機器執行時使得該機器發揮符合至少一個本發明之實施例的功能。於一個實施例中,與本發明之實施例相聯結的功能係以機器可執行的指令實施。該等指令可用以使得使用該等指令規劃的一通用或特用處理器執行本發明之步驟。本發明之實施例可提供作為電腦程式產品或軟體,其可包括一機器或電腦可讀取媒體其上已經儲存指令而該等指令可用以規劃一電腦(或其它電子裝置)以執行依據本發明之實施例的一或多項操作。另外,本發明之實施例的步驟可藉含有固定功能邏輯用以執行該等步驟的特定硬體組件執行,或藉規劃電腦組件與固定功能硬體組件之任一項組合執行。
規劃邏輯以執行本發明之實施例的指令可儲存在系統的記憶體內,諸如DRAM、快取記憶體、快閃記憶體、或其它儲存裝置。又復,指令可透過網路分配或藉由其它電腦可讀取媒體分配。如此,機器可讀取媒體可包括任何機制用以以機器(例如電腦)可讀取形式而儲存或傳輸資訊,但非僅限於軟碟、光碟、光碟-唯讀記憶體(CD-ROM)、及磁光碟、唯讀記憶體(ROM)、隨機存取記憶體(RAM)、可抹除可規劃唯讀記憶體(EPROM)、可電氣抹除可規劃唯讀記憶體(EEPROM)、磁卡或光卡、快閃記憶體、或用以透過網際網路藉由電氣、光、聲、或其它傳播 信號形式(例如載波、紅外線信號、數位信號等)而用以傳輸資訊的具體有形機器可讀取媒體。據此,電腦可讀取媒體包括適用以以機器(例如電腦)可讀取形式而儲存或傳輸資訊的任何型別的具體有形機器可讀取媒體。
設計須通過多個不同階段,從創意至模擬至製造。代表一項設計的資料可以多種方式來表示該項設計。首先,如同於模擬中為有用的,硬體可使用硬體描述語言或其它功能描述語言表示。此外,可在設計過程的某些階段產生具有邏輯閘及/或電晶體閘的電路層級模型。又復,大部分設計在某個階段到達資料表示在硬體模型中各項裝置的實體配置的程度。於使用習知半導體製造技術之情況下,表示硬體模型的資料可為下述資料,載明在用以製造積體電路遮罩的不同遮罩層上是否存在有各個特徵結構的資料。於設計的任何表示型態中,資料可以機器可讀取媒體的任一種形式儲存。記憶體或磁性或光學儲存裝置諸如碟片可為機器可讀取媒體以儲存資訊,該資訊係透過經調變或以其它方式產生的光波或電波以傳輸此等資訊的光波或電波而傳輸。當傳輸指示或載有代碼或設計的電載波時,至執行電氣信號的拷貝、緩衝、或重新傳輸之程度製作新拷貝。如此,通訊提供者或網路提供者可在有形機器可讀取媒體上至少暫時地儲存具體實施例本發明之實施例的教示之一物品,諸如編碼於載波的資訊。
於新穎處理器中,多個不同的執行單元用以處理與執行多種不同代碼及指令。並非全部指令皆係同時產 生,原因在於有些較快完成,而另外其它則耗用多個時間週期才能完成。指令之資料通量愈快,則處理器的總體效能愈佳。因此較佳係有許多指令能夠儘可能快速地執行。但有某些指令之複雜度較高,就執行時間及處理器資源而言的要求更高。舉例言之,有浮點指令、載入/儲存操作、資料移動等。
隨著有更多電腦系統被用在網際網路、文字、及多媒體應用,隨著時間已經導入額外的處理器支援。於一個實施例中,指令集可與一或多個電腦架構相聯結,包括資料型別、指令、暫存器架構、定址模式、記憶體架構、中斷及例外處理、及外部輸入及輸出(I/O)。
於一個實施例中,指令集架構(ISA)可藉一或多個微架構體現,包括用以體現一或多個指令集方處理邏輯及電路。據此,具有不同微架構的處理器可分享至少部分共用指令集。舉例言之,英特爾(Intel®)奔騰(Pentium)4處理器、英特爾核心(CORETM)處理器、及得自美國加州昇陽谷的超微公司(Advanced Micro Devices,Inc.)之處理器體現x86指令集的接近相同版本(但較新版本已經增加若干擴延),但具有不同的內部設計。同理,由其它處理器發展公司諸如ARM控制公司、MIPS、或其被授權者或採用者所設計的處理器可分享至少部分一共用指令集,但可包括不同的處理器設計。舉例言之,ISA的相同暫存器架構可使用新的或眾所周知的技術在不同微架構中以不同方式體現,包括專用實體暫存器、使用暫存器重新命名機制的一或多個 動態配置實體暫存器(例如暫存器混疊表(RAT)、重新排序緩衝器(ROB)及報廢暫存器檔案)。於一個實施例中,暫存器可包括一或多個暫存器、暫存器架構、暫存器檔案或可由或不可由軟體程式設計師所定址的其它暫存器集合。
於一個實施例中,指令可包括一或多個指令格式。於一個實施例中,指令格式可指示各個欄位(位元數目、位元位置等)以載明包括欲執行的操作及欲執行操作的運算元。有些指令格式可藉指令樣板(或亞格式)進一步分解定義。舉例言之,一給定指令格式的指令樣板可定義為具有指令格式之欄位的不同子集,及/或定義為差異解譯之一給定欄位。於一個實施例中,指令係使用一指令格式表示(及若定義時,以該指令格式的指令樣板之給定者定義),及載明或指示該操作及欲執行操作的運算元。
科學、財務金融、自動向量化通用目的、RMS(認知、探勘、及合成)、及視覺及多媒體應用(例如2D/3D圖形、影像處理、視訊壓縮/解壓縮、語音辨識演算法及音訊操弄)可要求對大量資料項目進行相同操作。於一個實施例中,單一指令多重資料(SIMD)係指一型指令,其使得一處理器對多個資料元素進行操作。SIMD技術可用於處理器,該處理器可將一暫存器內的位元邏輯分割為多個固定大小的或可變大小的資料元素,其各自表示一個分開值。舉例言之,於一個實施例中,在64-位元暫存器中的位元可組織成為一來源運算元,含有四個分開的16-位元資料元素,其各自表示一個分開16-位元值。此一資料型別可稱作為「緊縮」資 料型別或「向量」資料型別,及此一資料型別的運算元稱作為緊縮資料運算元或向量運算元。於一個實施例中,一緊縮資料項目或向量可為儲存在單一暫存器內部的一序列緊縮資料元素,及一緊縮資料運算元或向量運算元可為SIMD指令的來源運算元或目的地運算元(或「緊縮資料指令」或「向量指令」)。於一個實施例中,SIMD指令載明單一向量運算欲在兩個來源向量運算元上執行以產生具相同或相異大小、具相同或相異資料元素數目、或於相同或相異資料元素順序的一目的地向量運算元(又稱結果向量運算元)。
SIMD技術諸如英特爾核心處理器採用者具有一指令集,包括x86、MMX®、串流化SIMD擴延(SSE)、SSE2、SSE3、SSE4.1及SSE4.2指令;ARM處理器諸如ARM皮質(Cortex®)家族處理器採用者具有一指令集,包括向量浮點(VFP)及/或NEON指令;及MIPS處理器,諸如由中國科學院電腦計術研究所(ICT)發展的龍森(Loongson)家族處理器已經獲得應用效能的顯著改良(核心及MMX乃美國加州聖塔卡拉的英特爾公司(Intel Corporation)之註冊商標或商標)。
於一個實施例中,目的地及來減暫存器/資料為俗名以表示相對應資料或操作的來源及目的地。於若干實施例中,其可由具有與圖中闡釋者不同名稱或功能的其它暫存器、記憶體或其它儲存區體現。舉例言之,於一個實施例中,「DEST1」可為暫時儲存暫存器或其它儲存區,而 「SRC1」及「SRC2」可為暫時儲存暫存器或其它儲存區等。於其它實施例中,SRC及DEST儲存區中之二或多者可相對應於在相同儲存區(例如SIMD暫存器)內部的不同資料儲存元件。於一個實施例中,來源暫存器中之一者也可用作為目的地暫存器,例如將在第一及第二來源資料上執行的操作結果回寫至兩個來源暫存器中之一者用作為目的地暫存器。
圖1A為依據本發明之一實施例使用一處理器形成的電腦系統實例之方塊圖,包括執行單元以執行一指令。依據本發明,諸如於此處描述之實施例中,系統100包括一組件,諸如處理器102以採用執行單元包括邏輯以執行處理資料的演算法。系統100乃基於得自美國加州聖塔卡拉的英特爾公司的奔騰III、奔騰4、席翁(Xeon®)、伊塔寧(Itanium®)、X級(XScale®)及/或強臂(StrongARM®)微處理器的處理系統之表示型態,但也可使用其它系統(包括具有其它微處理器的個人電腦、工程工作站、機上盒等)。於一個實施例中,樣本系統100可執行得自美國華盛頓州里德蒙微軟公司(Microsoft Corporation)的視窗(WINDOWS®)作業系統之一個版本,但也可使用其它作業系統(例如UNIX及Linux)、嵌入式軟體、及/或圖形使用者介面。如此,本發明之實施例並非限於硬體電路及軟體的任何特定組合。
實施例並非限於電腦系統。本發明之替代實施例可用於其它裝置,諸如手持式裝置及嵌入式應用。手持式裝置之若干實例包括小區式電話、網際網路協定裝置、數位相機、個人數位助理器(PDA)、及手持式個人電腦。嵌入 式應用可包括微控制器、數位信號處理器(DSP)、單晶片系統、網路電腦(NetPC)、機上盒、網路中樞器、廣域網路(WAN)交換器、或依據至少一個實施例可執行一或多個指令的任何其它系統。
圖1A為依據本發明之一實施例使用一處理器102其包括一或多個執行單元108以執行一演算法來執行至少一個指令所形成的一電腦系統100之方塊圖。一個實施例可就單一處理器桌上型電腦或伺服器系統作說明,但替代實施例能含括於多處理器系統。系統100為「中樞器」系統架構之實例。電腦系統100包括一處理器102以處理資料信號。處理器102可為複雜指令集電腦(CISC)微處理器、精簡指令集電腦(RISC)微處理器、極長指令字組(VLIW)微處理器、體現指令集之組合的處理器、或任何其它處理器裝置,諸如數位信號處理器。處理器102可耦接至一處理器匯流排110,其可在處理器102與系統100的其它組件間傳輸資料信號。系統100的元件執行熟諳技藝人士眾所周知的其習知功能。
於一個實施例中,處理器102包括層級1(L1)內部快取記憶體104。取決於架構,處理器102可具有單一內部快取記憶體或多個層級的內部快取記憶體。另外,於另一個實施例中,快取記憶體可駐在處理器102外部。其它實施例也可包括內部快取記憶體及外部快取記憶體二者的組合,取決於特定體現及需求。暫存器檔案106能儲存不同型別的資料於各個暫存器,包括整數暫存器、浮點暫存器、狀態暫存器、及指令指標器暫存器。
包括執行整數運算及浮點運算的執行單元108也係駐在處理器102內。處理器102也包括微碼(ucode)ROM,其針對某些巨集指令儲存微碼。針對一個實施例,執行單元108包括處理一緊縮指令集109的邏輯。藉由含括緊縮指令集109於一通用處理器102的指令集連同執行指令的相聯結的電路,由許多多媒體應用所使用的操作可使用緊縮資料於一通用處理器102執行。如此,藉由使用一處理器的資料匯流排的全寬度以在緊縮資料上執行操作,可加速及可更有效執行許多多媒體應用。如此可免除橫跨處理器的資料匯流排移轉更小型資料單位以一次一個資料元素執行一或多項操作的需要。
執行單元108的替代實施例也可用在微控制器、嵌入式處理器、圖形裝置、DSP、及其它型別的邏輯電路。系統100包括一記憶體120。記憶體120可為動態隨機存取記憶體(DRAM)裝置、靜態隨機存取記憶體(SRAM)裝置、快閃記憶體裝置、或其它記憶體裝置。記憶體120可儲存由可藉處理器102執行的資料信號表示的指令及/或資料。
系統邏輯晶片116可耦接至處理器匯流排110及記憶體120。於該具體實施例中的系統邏輯晶片116為記憶體控制器中樞器(MCH)。處理器102可透過處理器匯流排110而通訊至MCH 116。MCH 116提供高頻寬記憶體路徑118給記憶體120用於指令及資料儲存且用於圖形指令、資料及紋理結構的儲存。MCH 116係用以在處理器102、記憶體120及系統100的其它組件間導向資料信號,及在處理器 匯流排110、記憶體120、與系統I/O 122間橋接資料信號。於若干實施例中,系統邏輯晶片116可提供圖形埠用以耦接至一圖形控制器112。MCH 116係透過記憶體介面118耦接至記憶體120。繪圖卡112係透過加速圖形埠(AGP)互連體114而耦接至MCH 116。
系統100使用一專有中樞器介面匯流排122以耦接MCH 116至輸入/輸出(I/O)控制中樞器(ICH)130。ICH 130提供透過本地I/O匯流排直接連結至某些I/O裝置。本地I/O匯流排為用以連結周邊裝置至記憶體120、晶片組、及處理器102的高速I/O匯流排。若干實例為音訊控制器、韌體中樞器(快閃記憶體BIOS)128、無線收發器126、資料儲存裝置124、含有使用者介面及鍵盤介面的舊式I/O控制器、串列擴充埠諸如通用串列匯流排(USB)、及網路控制器134。資料儲存裝置124可包含硬碟機、軟碟機、CD-ROM裝置、快閃記憶體裝置、或其它大容量儲存裝置。
針對系統之另一個實施例,依據一個實施例的指令可用於單晶片系統。單晶片系統的一個實施例包含一處理器及一記憶體。一個此種系統的記憶體為快閃記憶體。快閃記憶體可位在處理器及其它系統組件的相同晶粒上。此外,其它邏輯區塊諸如記憶體控制器或圖形控制器也可位在一單晶片系統上。
圖1B例示說明體現本發明之一個實施例的原理之資料處理系統140。熟諳技藝人士容易瞭解此處描述的實施例可未悖離本發明之實施例之範圍而用於其它處理系統。
電腦系統140包含可執行依據一個實施例至少一個指令的一處理核心159。針對一個實施例,處理核心159表示任何架構型別的處理單元,包括但非僅限於CISC、RISC或VLIW型別架構。處理核心159也可適用以一或多個處理技術製造且以充分細節表示在機器可讀取媒體上,適用以輔助製造。
處理核心159包含一執行單元142、一暫存器檔案145集合、及一解碼器144。處理核心159也包括額外電路(圖中未顯示),其並非瞭解本發明所必需。執行單元142係用以執行由處理核心159所接收的指令。除了執行典型處理器指令之外,執行單元142可執行於緊縮指令集143的指令用以在緊縮資料格式執行操作。緊縮指令集143包括執行本發明之實施例之指令及其它緊縮指令。執行單元142係藉一內部匯流排而耦接至暫存器檔案145。暫存器檔案145表示在處理核心159上用以儲存資訊包括資料的一儲存區。如前述,須瞭解用以儲存緊縮資料的儲存區並非必要。執行單元142係耦接至解碼器144。解碼器144係用以將由處理核心159所接收的指令解碼成控制信號及/或微碼進入點。回應於此等控制信號及/或微碼進入點,執行單元142執行適當操作。於一個實施例中,解碼器係用以解譯該指令的操作碼,將指令哪個操作須在該指令內部指示的相對應資料上執行。
處理核心159係耦接匯流排141用以與各個其它系統裝置通訊,該等系統裝置可包括但非僅限於例如,同步動態隨機存取記憶體(SDRAM)控制器146、靜態隨機存取 記憶體(SRAM)控制器147、叢發快閃記憶體介面148、個人電腦記憶卡國際協會(PCMCIA)/緊壓快閃記憶體(CF)卡控制器149、液晶顯示器(LCD)控制器150、直接記憶體存取(DMA)控制器151、及其它匯流排主機介面152。於一個實施例中,資料處理系統140也可包含用以透過一I/O匯流排153而與各個I/O裝置通訊。此等I/O裝置可包括但非僅限於例如通用異步接收器/發射器(UART)155、通用串列匯流排(USB)156、藍牙無線UART 157及I/O擴充介面158。
資料處理系統140的一個實施例提供用於行動、網路及/或無線通訊之一處理核心159,能夠執行SIMD操作包括遮罩暫存器與通用暫存器或記憶體間的轉換。處理核心159可以各個音訊、視訊、成像及通訊演算法規劃,包括離散變換諸如華許-哈拉馬(Walsh-Hadamard)變換、快速傅利葉變換(FFT)、離散餘弦變換(DCT)、及其個別的反變換;壓縮/解壓縮技術諸如色彩空間變換、視訊編碼運動估算或視訊解碼運動補償;及調變/解調(MODEM)函數諸如脈衝編碼調變(PCM)。
圖1C例示說明能夠執行指令以提供在遮罩暫存器與通用暫存器或記憶體間的轉換之資料處理系統之另一個替代實施例。依據另一個替代實施例,資料處理系統160可包括一主處理器166、一SIMD共處理器161、一快取記憶體167、及一輸入/輸出系統168。該輸入/輸出系統168可選擇性地耦接至一無線介面169。SIMD共處理器161能夠執行包括依據一個實施例之指令的操作。處理核心170適用以一 或多個處理技術製造,且在機器可讀取媒體上以充分細節表示,適用以輔助包括處理核心170的資料處理系統160之全部或部分的製造。
針對一個實施例,SIMD共處理器161包含一執行單元162及一暫存器檔案集合164。主處理器166的一個實施例包含一解碼器165以辨識包括依據一個實施例用以由執行單元162執行的指令之指令集指令163。針對替代實施例,SIMD共處理器161也包含至少部分解碼器165B以解碼指令集之指令163。處理核心170也包括額外電路(圖中未顯示),其並非瞭解本發明之實施例所必需。
於操作中,主處理器166執行資料處理指令之一串流,其控制通用型別的資料處理操作,包括與快取記憶體167及輸入/輸出系統168的互動。嵌置於資料處理指令串流內部者為SIMD共處理器指令。主處理器166之解碼器165辨識此等SIMD共處理器指令乃應藉附接的SIMD共處理器161執行的型別。據此,主處理器166在共處理器匯流排171上簽發此等SIMD共處理器指令(或表示SIMD共處理器指令的控制信號),該等指令從該處可藉任何附接的SIMD共處理器接收。於此種情況下,SIMD共處理器161將接受且執行任何意圖提供給該共處理器的任何所接收的SIMD共處理器指令。
資料可透過無線介面169接收用以由SIMD共處理器指令處理。針對一個實例,語音通訊可以數位信號形式接收,可藉SIMD共處理器指令處理以再生表示該語音通 訊的數位音訊樣本。至於另一個實例,壓縮音訊及/或視訊可以數位位元串流形式接收,可藉SIMD共處理器指令處理以再生表示數位音訊樣本及/或運動視訊框。至於處理核心170的一個實施例,主處理器166及SIMD共處理器161係整合成為單一處理核心170,包含一執行單元162、暫存器檔案集合164、及一解碼器165以辨識包括依據一個實施例之指令的指令集之指令163。
圖2為處理器200之微架構之一方塊圖,包括邏輯電路以執行依據本發明之一個實施例的指令。於若干實施例中,依據一個實施例之指令可體現以在具有位元組、字組、雙字組四字組等大小的資料元素以及資料型別,諸如單一及雙重精度整數及浮點資料型別上操作。於一個實施例中,有序前端201乃處理器200之部件,其提取欲執行的指令,且準備後來用在處理器管線。前端201可包括數個單元。於一個實施例中,指令預提取器226從記憶體提取指令及饋至一指令解碼器228,其轉而解碼或解譯該等指令。舉例言之,於一個實施例中,解碼器將所接收的指令解碼成為機器能夠執行的一或多個操作,稱作為「微指令」或「微操作」(又稱微op或uops)。於其它實施例中,解碼器將該指令剖析為操作碼及相對應於資料及控制欄位,其係由微架構用以執行依據一個實施例之操作。於一個實施例中,軌跡快取記憶體230取已解碼的微操作且組裝成為在微操作佇列234中的經程式規劃有序的序列或軌跡以供執行。當軌跡快取記憶體230遭逢複雜指令時,微碼ROM 232提供完成 操作需要的微操作。
有些指令被轉換成單一微操作,而其它指令需要數個微操作來完成整個操作。於一個實施例中,若需要多於四個微操作來完成一個指令,則指令解碼器228存取微碼ROM 232以解碼指令。針對一個實施例,一指令能被解碼成少數微操作用以在指令解碼器228處理。於另一個實施例中,當需要多個微操作來完成整個操作時,一指令可儲存於微碼ROM 232內部。軌跡快取記憶體230係指進入點可規劃邏輯陣列(PLA)以決定正確微指令指標器用以從微碼ROM 232讀取微碼序列以完成依據一個實施例之一或多個指令。在微碼ROM 232完成一指令的微操作之排序後,機器前端201恢復從該軌跡快取記憶體230提取微操作。
失序執行引擎203乃指令準備用於執行之處。失序執行邏輯具有多個緩衝器以平滑化且重新排序指令流而當於管線前進且獲得執行排程時獲得最佳化效能。配置器邏輯配置各個微操作執行所需的機器緩衝器及資源。暫存器重新命名邏輯重新命名邏輯暫存器至一暫存器檔案的分錄上。配置器也對各個微操作配置一個分錄於指令排程器前端的兩個微操作佇列中之一者,二佇列中之一者用於記憶體操作,及一者用於非記憶體操作:記憶體排程器、快排程器202、慢/通用浮點排程器204、及簡單浮點排程器206。微操作排程器202、204、206基於排程器的相依性輸入暫存器運算元來源的就緒及微操作須完成其操作的執行資源之可利用性而決定何時微操作係就緒執行。一個實施 例的快排程器202可在主時鐘週期之各半上排程,而其它排程器在每個主處理器時鐘週期只排程一次。排程器仲裁調度埠以排程微操作用於執行。
暫存器檔案208、210坐落在執行區塊211的排程器202、204、206與執行單元212、214、216、218、220、222、224間。針對整數操作及浮點操作有一分開的暫存器檔案208、210。一個實施例的各個暫存器檔案208、210也包括一旁通網路,其能夠旁通或前傳剛完成的但尚未寫入暫存器檔案的結果至新的相依性微操作。整數暫存器檔案208及浮點暫存器檔案210也能與另一者通訊資料。針對一個實施例,整數暫存器檔案208係分裂成兩個分開暫存器檔案,一個暫存器檔案用於低排序32位元資料,及第二暫存器檔案用於高排序32位元資料。一個實施例的浮點暫存器檔案210具有128位元寬分錄,原因在於浮點指令典型地具有64至128位元寬度的運算元。
執行區塊含有執行單元212、214、216、218、220、222、224,於該處實際上執行指令。此一區段包括暫存器檔案208、210其儲存微指令須執行的整數及浮點資料運算元值。一個實施例的處理器200係由多個執行單元組成:位址產生單元(AGU)212、AGU 214、快ALU216、快ALU218、慢ALU220、浮點單元ALU 222、浮點移動單元224。針對一個實施例,浮點執行區塊222、224執行浮點、MMX、SIMD、及SSE或其它操作。一個實施例的浮點單元ALU 222包括一64位元x64位元浮點除法器以執行除法、平方根、及 餘數微操作。針對本發明之實施例,涉及浮點值的指令可以浮點硬體處理。於一個實施例中,ALU操作前傳至高速ALU執行單元216、218。一個實施例的快ALU 216、218可執行快速操作具有半時鐘週期的有效延遲。針對一個實施例,最複雜的整數操作前傳至慢ALU 220,原因在於慢ALU 220包括長延遲操作型別的整數執行硬體,諸如乘法器、移位、旗標邏輯、及分支處理。記憶體載入/儲存操作係藉AGU 212、214執行。針對一個實施例,整數ALU 216、218、220係以在64位元資料運算元上執行整數操作的脈絡描述。於替代實施例中,可體現整數ALU 216、218、220以支援多個資料位元包括16、32、128、256等。同理,可體現浮點單元222、224以支援某個範圍之具有各個寬度位元之運算元。針對一個實施例,浮點單元222、224可結合SIMD及多媒體指令而在128位元寬緊縮資料運算元上操作。
於一個實施例中,微操作排程器202、204、206在親代載入已經完成執行之前調度相依性操作。因微操作係在處理器200推論地排程與執行,故處理器200也包括處理記憶體遺漏的邏輯。若在資料快取記憶體遺漏一資料載入,則於該管線在行進間可有相依性操作,讓排程器具有暫時不正確資料。重新播放機構追蹤與重新執行使用不正確資料的指令。只有相依性操作需要重新播放,獨立的操作許可完成。處理器的一個實施例之排程器及重播機構也設計來捕捉提供遮罩暫存器與通用暫存器間之轉換的指令。
「暫存器」一詞可指稱板上處理器儲存位置,用 作為識別運算元的指令部分。換言之,暫存器可為從處理器外部(從程式設計師的觀點)為有用的暫存器。但該實施例的暫存器不應限於特定電路型別之意義。反而,一實施例的暫存器能夠儲存與提供資料,及執行此處描述的功能。此處描述的暫存器可藉一處理器內部的電路使用任何多種不同技術體現,諸如專用實體暫存器、使用暫存器重新命名的、專用與動態配置實體暫存器之組合等。於一個實施例中,整數暫存器儲存32位元整數資料。一個實施例的暫存器檔案也含有用於緊縮資料的8多媒體SIMD暫存器。用於後文討論,須瞭解暫存器為設計以保有緊縮資料的資料暫存器,諸如於以得自美國加州聖塔卡拉的英特爾公司的MMX技術致能的微處理器中之64位元寬MMX暫存器(於某些情況下又稱「mm」暫存器)。此等MMX暫存器可以整數及浮點形式取得,可以伴有SIMD及SSE指令的緊縮資料元素操作。同理,相關SSE2、SSE3、SSE4或以上(通稱為「SSEx」)技術的128位元寬MMX暫存器也可用以保有此等緊縮資料運算元。於一個實施例中,於儲存緊縮資料及整數資料中,暫存器無需區別兩個資料型別。於一個實施例中,整數及浮點係含在相同暫存器檔案或相異暫存器檔案。此外,於一個實施例中,浮點及整數資料可儲存於不同暫存器或相同暫存器。
於下列各圖之實例中,描述多個資料運算元。圖3A例示說明依據本發明之一個實施例於多媒體暫存器中的各個緊縮資料型別表示型態。圖3A例示說明用於128位元寬運算元的緊縮位元組310、緊縮字組320、及緊縮雙字組 (dword)330之資料型別。本實例的緊縮位元組格式310為128位元長,且含有16緊縮位元組資料元素。此處一位元組係定義為8資料位元。針對各個位元組資料元素的資訊係針對位元0儲存於位元7至位元0,針對位元1儲存於位元15至位元8,針對位元2儲存於位元23至位元16,及最後針對位元15儲存於位元120至位元127。如此,全部可用位元皆係用在暫存器。此種儲存配置提高處理器的儲存效率。又,存取16資料元素,可並列對16資料元素執行一項操作。
概略言之,一資料元素乃與具有相等長度的其它資料元素一起儲存在單一暫存器或記憶體位置的個別資料塊。於SSEx技術相關的緊縮資料序列中,儲存在XMM暫存器的資料元素數目為128位元除以個別資料元素的以位元表示之長度。同理,於MMX及SSE技術相關的緊縮資料序列中,儲存在XMM暫存器的資料元素數目為64位元除以個別資料元素的以位元表示之長度。雖然圖3A例示說明的資料型別為128位元長,但本發明之實施例也可以64位元寬、256位元寬、512位元寬、或其它尺寸的運算元操作。本實例之緊縮字組格式320為128位元長,含有8緊縮字組資料元素。各個緊縮字組含有16位元資訊。圖3A之緊縮雙字組格式330為128位元長,且含四個緊縮雙字組資料元素。各個緊縮雙字組資料元素含有32位元資訊。緊縮雙字組為128位元長且含有兩個緊縮雙字組資料元素。
圖3B例示說明於暫存器中資料儲存格式之替代例。各個緊縮資料可包括多於一個獨立資料元素。例示說 明三種緊縮資料格式;緊縮對半341、緊縮單一342、及緊縮雙重343。緊縮對半341、緊縮單一342、及緊縮雙重343之一個實施例含有固定點資料元素。至於替代實施例,緊縮對半341、緊縮單一342、及緊縮雙重343中之一或多者可含有浮點資料元素。緊縮對半341的一個替代實施例為含有八個16-位元資料元素之128位元長。緊縮單一342的一個替代實施例為128位元長且含有四個32-位元資料元素。緊縮雙重343的一個替代實施例為128位元長且含有兩個64-位元資料元素。須瞭解此種緊縮資料格式可進一步延伸至其它暫存器長度,例如延伸至96-位元、160-位元、192-位元、224-位元、256-位元、512-位元或以上。
圖3C例示說明依據本發明之一個實施例於多媒體暫存器中各種有符號及無符號緊縮資料型別表示型態。無符號緊縮位元組表示型態344例示說明無符號緊縮位元組之儲存於SIMD暫存器。各個位元組資料元素之資訊係針對位元0儲存於位元7至位元0,針對位元1儲存於位元15至位元8,針對位元2儲存於位元23至位元16,及最後針對位元15儲存於位元120至位元127。如此,全部可用位元皆係用在暫存器。此種儲存配置提高處理器的儲存效率。又,存取16資料元素,可並列對16資料元素執行一項操作。有符號緊縮位元組表示型態345例示說明有符號緊縮位元組之儲存。注意每個位元組資料元素的第八位元為符號指標。無符號緊縮字組表示型態346例示說明字組7至字組0如何儲存於一SIMD暫存器。有符號緊縮字組表示型態347係 類似無符號緊縮字組表示型態346。注意每個字組資料元素的第16位元為符號指標。無符號緊縮雙字組表示型態348例示說明如何儲存雙字組於一暫存器。有符號緊縮雙字組表示型態349係類似無符號緊縮雙字組表示型態348。注意需要的符號位元為各個雙字組資料元素的第32位元。
圖3D闡釋操作編碼(操作碼)格式360之一個實施例,具有32或以上位元,及暫存器/記憶體運算元定址模型相對應於「英特爾®64及IA-32英特爾架構軟體發展器手冊組合卷2A及2B:指令集參考A-Z」中所述的操作碼格式型別,其係得自美國加州聖塔卡拉的英特爾公司於全球資訊網(WWW)於intel.com/products/processor/manuals/。於一個實施例中,指令可藉欄位361及362中之一或多者編碼。可識別每個指令有至多兩個運算元位置,包括至多兩個來源運算元識別符364及365。針對一個實施例,目的地運算元識別符366係同來源運算元識別符364,而於其它實施例中則為相異。針對一個替代實施例,目的地運算元識別符366係同來源運算元識別符365,而於其它實施例中則為相異。於一個實施例中,由來源運算元識別符364及365識別的來源運算元中之一者係藉該指令的結果覆寫,而於其它實施例中,識別符364係相對應於來源暫存器元素及識別符365係相對應於一目的地暫存器元素。針對一個實施例,來源運算元識別符364及365可用以識別32-位元或64-位元來源運算元及目的地運算元。
圖3E為具有40或更多位元的另一個替代操作編 碼(操作碼)格式370。操作碼格式370係相對應於操作碼格式360,及包含一選擇性前綴位元組378。依據一個實施例一指令可藉欄位378、371、及372中之一或多者編碼。每個指令至多兩個運算元位置可藉來源運算元識別符374及375及藉前綴位元組378識別。針對一個實施例,前綴位元組378可用以識別32-位元或64-位元來源運算元及目的地運算元。針對一個實施例,目的地運算元識別符376係同來源運算元識別符374,而於其它實施例中,其為相異。針對另一個替代實施例,目的地運算元識別符376係同來源運算元識別符375,而於其它實施例中,其為相異。於一個實施例中,一指令係在以運算元識別符374及375識別的運算元中之一或多者上操作,一或多個以運算元識別符374及375識別的運算元係藉該指令的結果覆寫,而於其它實施例中,以識別符374及375識別的運算元係寫至另一個暫存器中的另一個資料元素。操作碼格式360及370許可藉MOD欄位363及373及藉選擇性規度-指數-基數及位移位元組而部分載明的暫存器對暫存器、記憶體對暫存器、暫存器對記憶體、逐一暫存器、即刻暫存器、暫存器對記憶體定址。
其次參考圖3F,於若干替代實施例中,64-位元(或128-位元、或256-位元、或512-位元或以上)單一指令多重資料(SIMD)算術操作可透過共處理器資料處理(CDP)指令執行。操作編碼(操作碼)格式380闡釋具有CDP操作碼欄位382及389的此種CDP指令。針對替代實施例,CDP指令操作型別可藉欄位383、384、387及388中之一或多者編碼。 每個指令可識別至多三個運算元位置,包括至多兩個來源運算元識別符385及390及一個目的地運算元識別符386。共處理器的一個實施例可基於8、16、32、及64位元值操作。針對一個實施例,一指令係在整數資料元素上執行。於若干實施例中,使用條件欄位381,一指令可條件式執行。針對若干實施例,來源資料大小可藉欄位383編碼。於若干實施例中,能夠在SIMD欄位上完成零(Z)、負(N)、進位(C)、及溢位(V)檢測。針對有些指令,飽和型別可藉欄位384編碼。
其次轉向圖3G,乃另一替代操作編碼(操作碼)格式397的闡釋,以依據另一個實施例提供在遮罩暫存器與通用暫存器或記憶體間的轉換,相對應於「英特爾®6進階向量擬延規劃參考」中所述的操作碼格式型別,其係得自美國加州聖塔卡拉的英特爾公司於全球資訊網(WWW)於intel.com/products/processor/manuals/。
原先x86指令集提供1-位元組操作碼,具有各種位址字節及即刻運算元含在額外位元組,其存在係從第一「操作碼」位元組為已知。此外,有某些位元組值保留作為操作碼的修改符(稱作為前綴,原因在於其必須置於指令前方)。當256操作碼位元組(包括特殊前綴值)的原先調色盤耗盡時,單一位元組專用作為256操作碼的新集合的逃逸。當向量指令(例如SIMD)被加上時,產生更多操作碼的需要,「二位元組」操作碼映射表也不足,即便透過前綴的使用而擴延時亦復如此。為了達成此項目的,新指令加入額外映射表,其使用2位元組加一選擇性前綴作為一識別符。
此外,為了輔助64-位元模型中的額外暫存器,在前綴與操作碼(及任何決定該操作碼需要的任何逃逸位元組)間可使用額外前綴(稱作「REX」)。於一個實施例中,REX可具有4個「酬載」位元以指示64-位元模型額外暫存器的使用。於其它實施例中,可具有少於或多於4位元。至少一個指令集(通常相當於格式360及格式370)的一般格式通用地例示說明如下:[prefixes][rex]escape[escape2]opcode modrm等
操作碼格式397係相對應於操作碼格式370,及包含VEX前綴位元組391(於一個實施例中始於C4 hex或C5 hex)以置換大部分其它常用舊式指令前綴位元組及逃逸碼。舉例言之,後文例示說明一個實施例使用二欄位編碼一指令,可用在當第二逃逸碼係不存在於原先指令時。於如下例示說明之實施例中,舊式逃逸係以新逃逸值表示舊式前綴完整壓縮作為「酬載」位元組的一部分,舊式前綴被回收供未來使用,及加上新特徵(例如加長的向量長度及額外來源暫存器載明符)。
當第二逃逸碼係存在於原先指令時,或當需使用額外位元(例如XB欄位及W欄位)於REX欄位時。於後文例示說明的替代實施例中,類似前文說明,第一舊式逃逸及 舊式前綴經壓縮,第二逃逸碼係於「映射」欄位壓縮,有未來映射或特徵空間為可用,再度加上新特徵(例如加長的向量長度及額外來源暫存器載明符)。
依據一個實施例之指令可藉欄位391及392中之一或多者編碼。每個指令高達四個運算元位置可藉欄位391組合來源運算元識別符374及375,及組合一選擇性規度-指數-基數(SIB)識別符393、一選擇性置換識別符394、及一選擇性即刻位元組395而予識別。針對一個實施例,VEX前綴位元組391可用以識別32-位元或64-位元來源運算元及目的地運算元及/或128-位元或256-位元SIMD暫存器運算元或記憶體運算元。針對一個實施例,由操作碼格式397提供的功能可與操作碼格式370冗餘,但於其它實施例中二者可相異。操作碼格式370及397許可暫存器對暫存器、記憶體對暫存器、暫存器對記憶體、逐一暫存器、即刻暫存器、暫存器對記憶體定址部分藉MOD欄位373及藉選擇性(SIB)識別符393、選擇性置換識別符394又選擇性即刻位元組395而載明。
其次轉向圖3H,該圖為另一個替代操作編碼(操作碼)格式398的闡釋,以依據另一個實施例之指令提供在遮罩暫存器與通用暫存器或記憶體間的轉換。操作碼格式398係相對應於操作碼格式370及397,且包含選擇性EVEX 前綴位元組396(於一個實施例中始於62 hex)以置換大部分其它常用舊式指令前綴位元組及逃逸碼,及提供額外功能。依據一個實施例的指令可藉欄位396及392中之一或多者編碼。每個指令高達四個運算元位置及一遮罩可藉欄位396組合來源運算元識別符374及375,及組合一選擇性規度-指數-基數(SIB)識別符393、一選擇性置換識別符394、及一選擇性即刻位元組395而予識別。針對一個實施例,EVEX前綴位元組396可用以識別32-位元或64-位元來源運算元及目的地運算元及/或128-位元、256-位元或512-位元SIMD暫存器運算元或記憶體運算元。針對一個實施例,由操作碼格式398提供的功能可與操作碼格式370或397冗餘,但於其它實施例中二者可相異。操作碼格式398許可暫存器對暫存器、記憶體對暫存器、暫存器對記憶體、逐一暫存器、即刻暫存器、暫存器對記憶體定址部分藉MOD欄位373及藉選擇性(SIB)識別符393、選擇性置換識別符394又選擇性即刻位元組395而載明。至少一個指令集的通用格式(大致上相對應於格式360及/或370)大致係例示說明如下:evex1 RXBmmmmm WvvvLpp evex4 opcode modrm[sib][disp][imm].
針對一個實施例,依據EVEX格式398編碼之一指令可具有額外「酬載」位元,其可用以提供在遮罩暫存器與通用暫存器間的轉換,有額外新穎特徵諸如,舉例言之,使用者可組配遮罩暫存器或額外運算元,或從128-位元、256-位元或512-位元向量暫存器之選擇,或更多暫存器從其中做選擇等。
舉例言之,VEX格式397或EVEX格式398可用以提供在遮罩暫存器與通用暫存器或記憶體間的轉換。此外,VEX格式397或EVEX格式398可用以提供針對128-位元、256-位元、512-位元或更大型(或更小型)向量暫存器的在遮罩暫存器與通用暫存器或記憶體間的轉換。
提供在遮罩暫存器與通用暫存器或記憶體間的轉換之指令實例係藉下列實例例示說明:
圖4A為方塊圖例示說明依據本發明之一個實施例的有序管線及暫存器重新命名級、失序簽發/執行管線。圖4B為方塊圖例示說明依據本發明之至少一個實施例欲含括一處理器的有序架構核心及暫存器重新命名邏輯、失序簽發/執行邏輯。圖4A的實線框例示說明有序管線,而虛線框例示說明暫存器重新命名、失序簽發/執行管線。同理,圖4B的實線框例示說明有序架構邏輯,而虛線框例示說明重新命名邏輯及失序簽發/執行邏輯。
於圖4A中,一處理器管線400包括一提取級402、一長度解碼級404、一解碼級406、一配置級408、一重新命名級410、一排程(又稱為調度或簽發)級412、一暫存器讀取/記憶體讀取級414、一執行級416、一回寫/記憶體寫入級418、一例外處理級422、及一委付級424。
於圖4B中,箭頭表示二或多個單元的耦合,箭頭方向指示該等單元間的資料流向。圖4B顯示處理器核心490包括一前端單元430耦接至一執行引擎單元450,二者係耦接至一記憶體單元470。
核心490可為精簡指令集電腦(RISC)核心、複雜指令集電腦(CISC)核心、極長指令字組(VLIW)核心、或一混成體或其它核心型別。至於又另一選項,核心490可為通用核心,諸如網路或通訊核心、壓縮引擎、圖形核心等。
前端單元430包括一分支預測單元432耦接至一指令快取單元434,其係耦接至指令轉譯後備緩衝器 (TLB)436,其係耦接至一指令提取單元438,其係耦接至一解碼單元440。解碼單元或解碼器可解碼指令,產生一或多個微操作作為輸出,微碼進入點、微指令、其它指令、或其它控制信號,其係從原先指令解碼,或以其它方式反映、或推衍。解碼器可使用多種不同機構體現。適當機構的實例包括但非僅限於詢查表、硬體體現、可規劃邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等。指令快取單元434更進一步耦接至記憶體單元470中的層級2(L2)快取單元476。解碼單元440係耦接至執行引擎單元450內部的重新命名/配置器單元452。
執行引擎單元450包括重新命名/配置器單元452,耦接至一報廢單元454及一或多個程器單元456之一集合。排程器單元456表示任何數目的不同排程器,包括保留站、中央指令窗等。排程器單元456係耦接至實體暫存器檔案單元458。實體暫存器檔案單元458各自表示一或多個實體暫存器檔案,其中之不同者儲存一或多個不同資料型別,諸如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點等狀態(例如一指令指標器其為欲執行的下個指令的位址)等。實體暫存器檔案單元458被報廢單元454重疊以例示說明可體現暫存器重新命名與失序執行的多種方式(例如使用重新排序緩衝器及報廢暫存器檔案,使用未來檔案、歷史緩衝器及報廢暫存器檔案;使用暫存器映射表及一匯集物之暫存器等)。概略言之,架構暫存器係從處理器外部或從程式設計師的觀點為可見。暫存器並不 限於任何已知之特定型別的電路。多個不同型別的暫存器皆適合,只要其能夠儲存且提供此處描述的資料即可。適當暫存器之實例包括但非僅限於專用實體暫存器、使用暫存器重新命名的動態配置實體暫存器、專用與動態配置實體暫存器的組合等。報廢單元454及實體暫存器檔案單元458係耦接至執行叢集460。執行叢集460包括一或多個執行單元462之一集合及一或多個記憶體存取單元464之一集合。執行單元462可對各型資料(例如純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)執行各項操作(例如移位、加法、減法、乘法)。雖然有些實施例可包括專用於特定功能或功能集合的多個執行單元,但其它實施例可只包括一個執行單元或多個執行單元,其全部一起執行全部功能。排程器單元456、實體暫存器檔案單元458、及執行叢集460顯示為可能為多數,原因在於某些實施例產生針對某些型別的資料/操作的分開管線(例如純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線、及/或記憶體存取管線各自具有其本身的排程器單元、實體暫存器檔案單元、及/或執行叢集且於分開記憶體存取管線之情況下,體現某些實施例其中只有此一管線的執行叢集具有記憶體存取單元)。也須瞭解使用分開管線時,此等管線中之一或多者可為失序簽發/執行及有序靜止。
記憶體存取單元之集合464係耦接至記憶體單元470,其包括一資料TLB單元472耦接至與層級2(L2)快取單元476的一資料快取單元474。於一個具體實施例中,記憶 體存取單元464可包括一載入單元、一儲存位址單元、及一儲存資料單元,各單元係耦接至記憶體單元470中的資料TLB單元472。L2快取單元476係耦接至一或多個其它層級的快取記憶體,及最終耦接至一主記憶體。
舉例言之,暫存器重新命名失序簽發/執行核心架構之實例可體現管線400,如下:1)指令提取438執行提取及長度解碼級402及404;2)解碼單元440執行解碼級406;3)重新命名/配置器單元452執行配置級408及重新命名級410;4)排程器單元456執行排程級412;5)實體暫存器檔案單元458及記憶體單元470執行暫存器讀取/記憶體讀取級414;執行叢集460進行該執行級416;6)記憶體單元470及實體暫存器檔案單元458執行回寫/記憶體寫入級418;7)可能涉及處理級422的例外之各個單元;及8)報廢單元454及實體暫存器檔案單元458執行委付級424。
核心490可支援一或多個指令集(例如x86指令集(有些擴延已經增加較新版本);加州昇陽谷的MIPS技術公司之MIPS指令集;加州昇陽谷的ARM控股公司的ARM指令集(具有選擇性額外擴延,諸如霓虹(NEON))。
須瞭解該核心可支援多執行緒(執行二或多個並列的操作或執行緒集合),且可以多種不同方式進行,包括時間截割多執行緒、同時多執行緒(於該處單一實體核心提供一個邏輯核心,針對各個執行緒,該實體核心為同時多執行緒)、或其組合(例如時間截割提取與解碼,及隨後同時 多執行緒,諸如於英特爾超執行緒技術)。
雖然暫存器重新命名係就失序執行之脈絡描述,須瞭解暫存器重新命名可用於有序架構。雖然處理器之具體實施例也包括一分開指令及資料快取單元434/474及一分享L2快取單元476,替代實施例對指令及資料二者可具有單一內部快取記憶體,例如層級1(L1)內部快取記憶體、或多個層級內部快取記憶體。於若干實施例中,系統可包括一內部快取記憶體及在核心及/或處理器外部的一外部快取記憶體之組合。另外,全部快取記憶體可在核心及/或處理器外部。
圖5為依據本發明之一個實施例具有集積式記憶體控制器及圖形的單核心處理器及多核心處理器500之方塊圖。圖5中的實線框例示說明一處理器500具有單一核心502A、一系統代理者510、一或多個匯流排控制器單元516之一集合;而選擇性增加虛線框例示說明另一處理器500具有多個核心502A-N、在系統代理者510內一或多個集積式記憶體控制器單元514之一集合,及一集積式圖形邏輯508。
記憶體階層關係包括在核心內部的一或多個快取記憶體層級、一或多個分享快取單元506之一集合、及耦接至該集積式記憶體控制器單元之集合514的外部記憶體(圖中未顯示)。分享快取單元506之集合可包括一或多個中間層級快取記憶體,諸如層級2(L2)、層級3(L3)、層級4(L4)、或其它層級的快取記憶體、最末層級快取記憶體(LLC)及/或其組合。雖然於一個實施例中,基於環式的互 連體單元512互連集積式圖形邏輯508、分享快取單元之集合506、及系統代理者單元510,但其它實施例可使用任一種眾所周知之技術以互連此等單元。
於若干實施例中,核心502A-N中之一或多者能夠執行多執行緒。系統代理者510包括協調與操作核心502A-N的該等組件。系統代理者單元510例如可包括一電力控制單元(PCU)及一顯示單元。該PCU可包括調節核心502A-N及集積式圖形邏輯508的電力態需要的邏輯及組件。顯示單元係用以驅動一或多個外部連結的顯示器。
以架構及/或指令集表示,核心502A-N可為同質或異質。舉例言之,部分核心502A-N可為有序,而其它為失序。至於另一個實例,核心502A-N中之二者或多者能夠執行相同指令集,而其它只能夠執行該指令集之一子集或不同指令集。
處理器可為通用處理器,諸如核心(Core®)i3、i5、i7、雙重及四重、席翁(Xeon)、伊塔寧(Itanium)、叉級(XScale®)處理器或強臂(StrongARM®)處理器,係得自美國加州聖塔卡拉的英特爾公司。另外,處理器可得自另一家公司,諸如ARM控股公司、MIPS等。處理器可為特用處理器,諸如網路或通訊處理器、壓縮引擎、圖形處理器、共處理器、嵌入式處理器等。該處理器可體現在一或多個晶片上。處理器500可為使用多項處理技術諸如BiCMOS、CMOS、或NMOS的多項處理技術中之任一者在一或多個基體的一部分及/或可在基體上體現。
圖6至圖8為適合含括處理器500的系統實例,而圖9為可包括核心502中之一或多者的單晶片系統(SoC)實例。技藝界已知之針對膝上型電腦、桌上型電腦、手持式個人電腦、個人數位助理器、工程工作站、伺服器、網路裝置、網路中樞器、交換器、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、小區式電話、可攜式媒體播放器、手持式裝置及其它多種電子裝置的其它系統設計及組態也屬適宜。概略言之,能夠結合一處理器及/或其它此處揭示的執行邏輯的大量多種系統及電子裝置大致上為適宜。
現在參考圖6,圖6顯示依據本發明之一個實施例一種系統600之方塊圖。系統600可包括一或多個處理器610、615,耦接至圖形記憶體控制器中樞器(GMCH)620。額外處理器615的選擇性性質係於圖6以虛線標示。
各個處理器610、615可為處理器500的某個版本。但須注意積體圖形邏輯與積體記憶體控制單元不可能存在於處理器610、615。圖6例示說明GMCH 620可耦接至記憶體640,例如可為動態隨機存取記憶體(DRAM)。針對至少一個實施例,DRAM可與非依電性快取記憶體相聯結。
GMCH 620可為晶片組或為晶片組的一部分。GMCH 620可與處理器610、615通訊,且控制處理器610、615與記憶體640間的互動。GMCH 620也可用作為處理器610、615與系統600的其它元件間的加速匯流排介面。於至少一個實施例中,GMCH 620透過一多插匯流排,諸如前端 匯流排(FSB)695而與處理器610、615通訊。
又復,GMCH 620係耦接至一顯示器645(諸如平板顯示器)。GMCH 620可包括一積體圖形加速器。GMCH 620進一步耦接至一輸入/輸出(I/O)控制中樞器(ICH)650,其可用以耦接多個周邊裝置至系統600。例如於圖6之實施例中顯示一外部圖形裝置660,連同另一個周邊裝置670可為耦接至ICH 650的分立圖形裝置。
另外,額外的或不同的處理器也可存在於系統600。舉例言之,額外處理器615可包括與處理器610相同的額外處理器、與處理器610異質的或不對稱的額外處理器、加速器(例如圖形加速器或數位信號處理(DSP)單元)、可現場程式規劃閘陣列、或任何其它處理器。就一範圍的優劣量表包括架構、微架構、熱、功耗特性等而言,實體資源610、615間有多項差異。此等差異可有效地表現本身為處理器610、615間的不對稱性及異質性。於至少一個實施例中,多個處理器610、615可駐在同一個晶粒封裝體。
現在參考圖7,顯示依據本發明之一實施例第二系統700之一方塊圖。如圖7所示,微處理器系統700為點對點互連體系統,包括透過點對點互連體750而耦接的第一處理器770及第二處理器780。如圖7所示,處理器770及780各自可為處理器500的某個版本作為處理器610、615中之一或多者。
雖然只顯示兩個處理器770、780,但須瞭解本發明之範圍並非囿限於此。於其它實施例中,一給定處理器 內可存在有一或多個額外處理器。
處理器770及780係顯示為分別包括積體記憶體控制器單元772及782。處理器770也包括點對點(P-P)介面776及778作為其匯流排控制器單元之一部分;同理,第二處理器780可包括P-P介面786及788。處理器770、780可使用PtP介面電路778、788透過點對點(P-P)介面750交換資訊。如圖7所示,IMC 772及782耦接該等處理器至個別記憶體,亦即記憶體732及記憶體734,其可為本地附接至個別處理器的主記憶體的一部分。
處理器770、780可使用點對點介面電路776、794、786、798透過點對點(P-P)介面752、754而各自與一晶片組790交換資訊。晶片組790也可透過一高效能圖形介面739而與高效能圖形電路738交換資訊。
一分享快取記憶體(圖中未顯示)可含括於任一處理器內或二處理器外部,但仍然透過P-P互連體而與處理器連結,使得當一處理器被置於低功率模式時,任一處理器的或二處理器的本地快取記憶體資訊可被儲存於該分享快取記憶體。
晶片組790可透過一介面796而耦接至一第一匯流排716。於一個實施例中,第一匯流排716可為周邊組件互連體(PCI)匯流排,或諸如PCI快速匯流排或其它第三代I/O互連體匯流排之一匯流排,但本發明之範圍並非受此所限。
如圖7所示,多個I/O裝置714可連同一匯流排橋接器718而耦接至第一匯流排716,該匯流排橋接器718係耦 接第一匯流排716至第二匯流排720。於一個實施例中,第二匯流排720可為低接腳數目(LPC)匯流排。於一個實施例中,多個裝置可耦接至第二匯流排720,包括例如鍵盤/滑鼠722、通訊裝置727及資料儲存單元728,諸如磁碟機或其它大容量儲存裝置,可包括代碼730。又復,音訊I/O 724可耦接至第二匯流排720。注意其它架構係屬可能。舉例言之,替代圖7之點對點架構,一系統可體現多插匯流排或其它此種架構。
現在參考圖8,顯示依據本發明之一實施例第三系統800之一方塊圖。圖7與圖8中相似的元件具有相似的元件符號,及圖7的某些面向已經從圖8刪除以免不必要地遮掩圖8的其它面向。
圖8例示說明處理器870、880分別地可包括集積式記憶體及I/O控制邏輯(「CL」)872及882。於至少一個實施例中,CL 872、882可包括記憶體控制器中樞器邏輯(IMC),諸如前文關聯圖5及7所述者。此外,CL 872、882可包括I/O控制邏輯。圖8例示說明不僅記憶體832、834耦接至CL 872、882,I/O裝置814也耦接至控制邏輯872、882。舊式I/O裝置815係耦接至晶片組890。
現在參考圖9,顯示依據本發明之一個實施例,一個SoC 900之方塊圖。圖5中的相似元件具有類似的元件符號。又虛線框乃更為先進SoC上的選擇性特徵。於圖9中,一互連體單元902係耦接至:一應用程式處理器910其包括一或多個核心502A-N與分享快取單元506之一集合;一系統 代理器單元510;一匯流排控制器單元516;一積體記憶體控制器單元514;一或多個媒體處理器920之一集合其可包括積體圖形邏輯508、用以提供靜像及/或視訊相機功能的一影像處理器924、用以提供硬體音訊加速的一音訊處理器926、及用以提供視訊編碼/解碼加速的一視訊處理器928;一靜態隨機存取記憶體(SRAM)單元930;一直接記憶體存取(DMA)單元932;及用以耦接至一或多個外部顯示器的一顯示單元940。
圖10例示說明含有一中央處理單元(CPU)及一圖形處理單元(GPU)的處理器,可執行依據一個實施例的至少一個指令。於一個實施例中,依據一個實施例之執行操作的指令須藉CPU執行。於另一個實施例中,指令可藉GPU執行。於又另一個實施例中,指令可透過藉GPU與CPU所執行的操作組合而執行指令。舉例言之,於一個實施例中,依據一個實施例之指令可經接收與解碼用在GPU上執行。但在解碼指令內部的一或多個操作可藉CPU執行,及結果回送至GPU用於指令的最終報廢。相反地,於若干實施例中,CPU可作為主要處理器及GPU作為共處理器。
於若干實施例中,可從高度並行資料產出量的處理器獲益之指令可由GPU執行,而可從深度管線化架構獲益的處理器之效能而獲益的指令可藉CPU執行。舉例言之,圖形、科學應用、財務應用及其它平行工作負荷可從GPU的效能獲益及據此執行,而更為循序串列的應用,諸如作業系統核心或應用碼可更適合CPU。
於圖10中,處理器1000包括CPU 1005、GPU 1010、影像處理器1015、視訊處理器1020、USB控制器1025、UART控制器1030、SPI/SDIO控制器1035、顯示裝置1040、高畫質多媒體介面(HDMI)控制器1045、MIPI控制器1050、快閃記憶體控制器1055、雙倍資料率(DDR)控制器1060、安全引擎1065、及I2S/I2C(積體晶片間聲音/積體電路間)介面1070。其它邏輯及電路可含括於第10圖之處理器,包括更多CPU或GPU及其它周邊介面控制器。
至少一個實施例的一或多個面向可藉儲存在機器可讀取媒體上的代表性資料體現,表示在處理器內部的各個邏輯,該等資料當由一機器讀取時使得該機器製造邏輯以執行此處描述的技術。此種表示型態稱作「IP核心」可儲存於有形機器可讀取媒體(「磁帶」)上,及供給各個客戶或製造廠以載入實際上製造該邏輯或處理器的製造機器。舉例言之,IP核心諸如ARM控股公司開發的皮質(Cortex)家族處理器及中國科學院電腦計術研究所(ICT)發展的龍森(Loongson)IP核心可授權或出售給各個客戶或被授權者,諸如德儀公司(Texas Instruments)、高通(Qualcomm)、蘋果(Apple)或三星(Samsung),而體現在由此等客戶或被授權者所製造的處理器。
圖11顯示一方塊圖例示說明依據本發明之一個實施例IP核心之發展。儲存裝置1130包括模擬軟體1120及/或硬體或軟體模型1110。於一個實施例中,表示IP核心設計的資料可透過記憶體1140(例如硬碟)、有線連結(例如網 際網路)1150或無線連結1160提供給儲存裝置1130。由模擬工具及模型所產生的IP核心資訊然後可發送至一製造廠,於該處可由第三方製造以執行依據至少一個實施例的至少一個指令。
於若干實施例中,一或多個指令可相對應於第一型別或架構(例如x86)及在不同型別架構(例如ARM)的處理器上轉譯或仿真。依據一個實施例,一指令可在任何處理器或處理器型別上執行,包括ARM、x86、MIPS、GPU、或其它處理器型別或架構。
圖12例示說明依據一個實施例,一第一型別的指令如何可藉不同型別的處理器仿真。於圖12中,程式1205含有某些指令,依據一個實施例可執行相同或實質上相同功能。但程式1205可指令可為與處理器1215相異或不可相容的型別及/或格式,表示於程式1205的型別指令可能無法藉處理器1215本機執行。但借助於仿真邏輯1210,程式1205的指令係被轉譯成可藉處理器1215本機執行的指令。於一個實施例中,仿真邏輯係在硬體實施。於另一個實施例中,仿真邏輯係在含軟體的有形機器可讀取媒體實施以將程式1205中的該型指令轉譯成藉處理器1215本機執行的指令。於其它實施例中,仿真邏輯為固定函數或可規劃硬體與儲存在有形機器可讀取媒體上的程式的組合。於一個實施例中,處理器含有該仿真邏輯,而於其它實施例中,仿真邏輯存在於處理器外部且由第三方提供。於一個實施例中,處理器能夠載入在有形機器可讀取媒體實施的仿真邏輯, 含有可藉執行含在或關聯處理器的微碼或韌體。
圖13為方塊圖依據本發明之實施例,對比一軟體指令用以將來源指令集中的二進制指令轉換成目標指令集中的二進制指令。於該具體實施例中,指令轉換器為軟體指令轉換器,但另外,指令轉換器可於軟體、韌體、硬體、或其各項組合體現。圖13顯示可使用x86編譯器1304編譯以產生x86二進制碼1306的高階語言1302,該x86二進制碼1306可由具有至少一個x86指令集核心之處理器1316本機執行。具有至少一個x86指令集核心1316之處理器表示藉相容式執行或以其它方式處理(1)英特爾x86指令集核心的該指令集之一相當大部分或(2)靶定以在具至少一個x86指令集核心的一英特爾處理器跑的應用程式或其它軟體之目標碼版本而執行與具至少一個x86指令集核心的一英特爾處理器實質上相同功能以達成與具至少一個x86指令集核心的一英特爾處理器實質上相同結果。x86編譯器1304表示可操作而產生x86二進制碼1306(例如目標碼)的一編碼器,該等x86二進制碼1306有或無額外鏈結處理可在具至少一個x86指令集核心的該處理器1316上執行。同理,圖13顯示於高階語言1302的該程式可使用另一指令集編譯器1308編譯以產生另一指令集二進制碼1310,可藉不具至少一個x86指令集核心的一處理器1314本機執行(例如具有執行加州昇陽谷的MIPS技術公司之MIPS指令集及/或執行加州昇陽谷的ARM控股公司的ARM指令集之核心的一處理器)。指令轉換器1312係用以將x86二進制碼1306轉換成可由不具一x86 指令集核心的該處理器1314本機執行的代碼。此種轉換碼不可能與另一指令集二進制碼1310相同,原因在於難以製造可達成此項目的的一指令轉換器;但轉換碼將達成一般操作且係由得自該另一指令集的指令組成。如此,指令轉換器1312表示軟體、韌體、硬體或其組合其透過仿真、模擬或任何其它處理許可不具至少一個x86指令集處理器或核心的一處理器或其它電子裝置執行該x86二進制碼1306。
圖14例示說明處理1401之一個實施例的流程圖以提供在遮罩暫存器與通用暫存器或記憶體間的轉換。處理1401及此處揭示的其它處理係藉處理方塊執行,該處理方塊可包含可藉通用機器或藉特用機器或藉二者的組合可執行的硬體或軟體或韌體碼。
於處理1401的處理方塊1410,開始執行指令以提供在遮罩暫存器與通用暫存器或記憶體間的轉換。於處理方塊1420,下個來源遮罩欄位係讀取自於一來源暫存器或記憶體來源運算元中由該指令所載明的多個遮罩欄位之各自欄位。須瞭解處理1401係例示說明為迭代重複,但可能時係較佳平行執行許多操作。於處理方塊1430,來自下個來源遮罩欄位之值係儲存至於一目的地暫存器或記憶體目的地運算元中由該指令所載明的相對應的下個目的地遮罩欄位。於處理方塊1440中,決定是否已經達到由該指令所載明的遮罩長度。若否,則於處理方塊1420開始重新迭代重複直至由該指令載明的長度已經達到為止。
否則,於處理方塊1450進行處理,於該處決定是 否已經達到目的地暫存器或記憶體目的地的結束。若否,則處理於處理方塊1460進行,於該處儲存一被遮罩值至下個目的地遮罩欄位直至已經達到目的地暫存器或記憶體目的地的結束。
最後,當已經達到目的地暫存器或記憶體目的地的結束時,處理從處理方塊1450前進至處理方塊1470,於該處執行一指令以提供在遮罩暫存器與通用暫存器或記憶體間的轉換結束。
須瞭解於一個實施例中,遮罩長度可由指令編碼載明。於另一個實施例中,遮罩長度可由指令運算元例如即刻運算元載明。
圖15例示說明處理1501之另一實施例的流程圖以提供從遮罩暫存器至通用暫存器或記憶體間的轉換。於處理1401的處理方塊1510,執行一指令以提供從遮罩暫存器至通用暫存器或記憶體間的轉換開始。於處理方塊1520,從一遮罩暫存器中之多個遮罩欄位的由該指令所載明的各個欄位讀取下個來源遮罩欄位。於處理方塊1530,得自下個來源遮罩欄位之該值係儲存至在一目的地暫存器或記憶體目的地運算元中之多個遮罩欄位中由該指令所載明的相對應下個目的地遮罩欄位。於處理方塊1540,決定是否已經達到由該指令所載明的遮罩長度。若否,則重新迭代重複始於處理方塊1520直至已經達到由該指令所載明的遮罩長度。
否則,處理於處理方塊1550進行,於該處決定是 否已經達到目的地暫存器或記憶體目的地的結束。若否,則處理於處理方塊1560進行,於該處一被遮罩值係儲存至下個目的地遮罩欄位,始於處理方塊1550重新開始迭代重複直至已經達到目的地暫存器或記憶體目的地的結束。
最後,當已經達到目的地暫存器或記憶體目的地的結束時,處理從處理方塊1550前進至處理方塊1570,於該處結束執行提供在遮罩暫存器與通用暫存器或記憶體間的轉換的指令之執行。
再度,雖然處理1501係例示說明為迭代重複,但可能時許多操作係平行執行。
圖16例示說明一種處理1601提供從通用暫存器或記憶體至遮罩暫存器的轉換之一個實施例之流程圖。
於處理1601之處理方塊1610,開始執行一指令以提供從通用暫存器或記憶體至遮罩暫存器的轉換。於處理方塊1620,下個來源資料欄位位置係讀取自來源暫存器內多個遮罩欄位中的各個欄位或由該指令載明的記憶體來源運算元。須瞭解雖然處理1601係例示說明為迭代重複,但可能時較佳係平行執行多項操作。於處理方塊1630,得自下個來源資料欄位的值係儲存至由該指令所載明的於目的地遮罩暫存器中的多個遮罩資料欄位中的一相對應下個目的地遮罩資料欄位。於處理方塊1640,決定是否已經達到由該指令所載明的遮罩長度。若否,則處理始於處理方塊1620迭代重複直至已經達到由該指令所載明的遮罩長度。
否則,於處理方塊1650進行處理,於該處決定是 否已經達到目的地遮罩暫存器的結束。若否,則處理於處理方塊1660進行,於該處一被遮罩值係儲存於目的地遮罩暫存器中的多個遮罩資料欄位中的下個目的地遮罩資料欄位位置,及處理始於處理方塊1650重新開始迭代重複直至已經達到目的地遮罩暫存器的結束。針對若干實施例,達到目的地遮罩暫存器的結束表示儲存一值至目的地遮罩暫存器中的多個遮罩資料欄位中的最高有效目的地遮罩資料欄位位置。
最後,當已經達到目的地暫存器的結束時,處理從處理方塊1650前進至處理方塊1670,於該處執行指令以提供從通用暫存器或記憶體至遮罩暫存器的轉換結束。
須瞭解於處理1601以及於其它處理,諸如處理1401及處理1501,雖然舉例說明提供在遮罩暫存器與通用暫存器或記憶體間的轉換之該指令的執行,但也可進行其它步驟或級,例如管線400之級402-414及/或級418-424中之一或多者以便完整地輔助或回應於指令以提供在遮罩暫存器與通用暫存器或記憶體間的轉換。
也可提供其它組態。於一個實施例中,遮罩長度可載明為藉於指令編碼中之一或多個編碼欄位或藉一指令運算元所擇定的2的次冪。於另一個實施例中,遮罩長度可藉一指令運算元,例如一即刻運算元載明為零與一遮罩暫存器之最大全長間的一任意長度值。於又另一個實施例中,遮罩長度可藉一指令運算元載明為大於一遮罩暫存器之最大全長的一長度值以便將多個連續遮罩及相對應的向 量暫存器及/或通用暫存器連鎖在一起,及回應於此一指令,一被遮罩值可儲存至最末目的地暫存器的最高有效目的地遮罩資料欄位位置。
本發明之實施例涉及一指令以提供在遮罩暫存器與通用暫存器或記憶體間的轉換,於該處遮罩可使用可用以在通用暫存器上執行操作的可用的一完整指令集而建構、修改及操作,或在編譯時建構為常數且於運轉時間儲存於記憶體。此外,相對應於遮罩資料欄位的一遮罩長度係載明於一指令,及儲存指示被遮罩的向量元素之值至相對應於載明的遮罩長度之該等資料欄位以外的任何資料欄位,提供免除需要有向量長度暫存器以指示儲存於向量暫存器中的向量元素數目的需要之額外效益。
此處揭示之機制的實施例可於硬體、軟體、韌體、或此等體現辦法之組合體現。本發明之實施例可體現為電腦程式或在包含至少一個處理器、一儲存系統(包括依電性及非依電性記憶體及/或儲存元件)、至少一個輸入裝置、及至少一個輸出裝置的可規劃系統上執行的程式碼。
程式碼可應用於輸入資料以執行此處描述的功能與產生輸出資訊。輸出資訊可以已知方式應用於一或多個輸出裝置。用於本案之目的,處理系統包括具有處理器的任何系統,諸如數位信號處理器(DSP)、微控制器、特定應用積體電路(ASIC)、或微處理器。
程式碼可於高階程序取向的或目標取向的程式語言以與一處理系統通訊。若有所需,程式碼也可於組合 語言或機器語言體現。實際上,此處描述的機制之範圍並非限於任何特定程式語言。總而言之,語言可為編譯語言或解譯語言。
至少一個實施例的一或多個面向可藉儲存在一機器可讀取媒體上的代表性指令體現,該等指令表示在該處理器內部的個別邏輯,該等指令當由一機器讀取時使得該機器製造邏輯以執行此處描述的技術。此種表示型態稱作為「IP核心」可儲存在一具體有形的機器可讀取媒體上且供給各個客戶或製造廠,以載入該等製造機器內而實際上製造該邏輯或處理器。
此種機器可讀取儲存媒體可包括但非僅限於由機器或裝置所製造或製成的非過渡具體有形的物品配置,包括儲存媒體諸如硬碟;任何其它型別的碟片包括軟碟、光碟、光碟-唯讀記憶體(CD-ROM)、光碟可覆寫式(CD-RW)、及磁光碟;半導體裝置諸如唯讀記憶體(ROM)、隨機存取記憶體(RAM)諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可抹除可規劃唯讀記憶體(EPROM)、快閃記憶體、可電氣抹除可規劃唯讀記憶體(EEPROM)、磁卡或光卡;或適用以儲存電子指令的任何其它型別的媒體。
據此,本發明之實施例也包括非過渡具體有形的機器可讀取媒體含有向量友善的指令格式之指令或含有設計資料,諸如硬體描述語言(HDL)其定義此處描述的結構、電路、裝置、處理器及/或系統特徵。此等實施例也可稱作 為程式產品。
於某些情況下,指令轉換器可用以將指令從來源指令集轉換成目標指令集。舉例言之,指令轉換器可將一指令轉譯(例如使用靜態二進制轉譯、含動態編譯的動態二進制轉譯)、變形、仿真或以其它方式轉換成欲藉核心處理的一或多個其它指令。指令轉換器可於軟體、硬體、韌體或其組合體現。指令轉換器可在處理器上、不在處理器上、或部分在及部分不在處理器上。
如此揭示用以執行依據至少一個實施例的一或多個指令之技術。雖然已經於附圖中描述及顯示若干具體實施例,但須瞭解此等實施例僅供舉例說明而非限制廣義發明,及本發明並非囿限於所顯示的及所描述的特定建構及配置,原因在於熟諳技藝人士當研究本文揭示時多項其它修改將為顯然自明。於諸如此種技術領域中於該處成長快速且進一步發展不容易預測,藉著使得技術進展不悖離於隨附之申請專利範圍及其相當範圍以內之本發明原理,熟諳技藝人士將可就配置及細節上修改本發明。
1401‧‧‧處理
1410-1470‧‧‧處理方塊

Claims (31)

  1. 一種處理器,其係包含:一遮罩暫存器,包含一第一複數個資料欄位以儲存指示經遮罩的向量元素之值,及指示未經遮罩的向量元素之值;一解碼級,用以解碼載明一目的地運算元、相對應於該等第一複數個資料欄位之一部分的一遮罩長度、與一來源運算元的一第一指令;以及一執行單元,其係回應於該已解碼的第一指令而:從於該來源運算元中的資料欄位讀取多個值,該數目係相對應於由該第一指令所載明的該遮罩長度;儲存該等多個值至在由該第一指令所載明之該目的地運算元中之相對應資料欄位;以及儲存指示經遮罩的向量元素之值至該目的地運算元中相對應於由該第一指令所載明的該遮罩長度之該等第一複數個資料欄位之該部分以外的任何資料欄位。
  2. 如申請專利範圍第1項之處理器,其中該被載明的目的地運算元係為該遮罩暫存器。
  3. 如申請專利範圍第2項之處理器,其中該被載明的來源運算元係為一通用暫存器。
  4. 如申請專利範圍第2項之處理器,其中該被載明的來源 運算元係為一記憶體位置。
  5. 如申請專利範圍第1項之處理器,其中該被載明的來源運算元係為該遮罩暫存器。
  6. 如申請專利範圍第5項之處理器,其中該被載明的目的地運算元係為一通用暫存器。
  7. 如申請專利範圍第5項之處理器,其中該被載明的目的地運算元係為一記憶體位置。
  8. 一種用以記錄包括一第一可執行指令的功能描述材料之機器可讀取媒體,該第一可執行指令若由一機器執行使得該機器進行下列動作:從一第一複數個資料欄位之一部分讀取多個值以將指示經遮罩的向量元素之值,及指示未經遮罩的向量元素之值儲存於由該第一可執行指令所載明的產來源運算元中,該數目係相對應於由該第一可執行指令所載明的一遮罩長度;儲存該等多個值至在由該第一可執行指令所載明之一目的地運算元中之相對應資料欄位;以及儲存指示經遮罩的向量元素之值至該目的地運算元中相對應於由該第一指令所載明的該遮罩長度之該等多個資料欄位以外的任何資料欄位。
  9. 如申請專利範圍第8項之機器可讀取媒體,其中該第一可執行指令若由該機器執行進一步使得該機器:儲存該等多個值至一遮罩暫存器中相對應於由該第一可執行指令所載明之該目的地運算元的相對應資 料欄位。
  10. 如申請專利範圍第9項之機器可讀取媒體,其中該第一可執行指令若由該機器執行進一步使得該機器:從在一通用暫存器中相對應於由該第一可執行指令所載明之該來源運算元的資料欄位讀取多個值。
  11. 如申請專利範圍第9項之機器可讀取媒體,其中該第一可執行指令若由該機器執行進一步使得該機器:從在一記憶體位置中相對應於由該第一可執行指令所載明之該來源運算元的資料欄位讀取多個值。
  12. 如申請專利範圍第8項之機器可讀取媒體,其中該第一可執行指令若由該機器執行進一步使得該機器:從在一遮罩暫存器中相對應於由該第一可執行指令所載明之該來源運算元的資料欄位讀取多個值。
  13. 如申請專利範圍第12項之機器可讀取媒體,其中該第一可執行指令若由該機器執行進一步使得該機器:儲存該等多個值至一通用暫存器中相對應於由該第一可執行指令所載明之該目的地運算元的相對應資料欄位。
  14. 如申請專利範圍第12項之機器可讀取媒體,其中該第一可執行指令若由該機器執行進一步使得該機器:儲存該等多個值至一記憶體位置中相對應於由該第一可執行指令所載明之該目的地運算元的相對應資料欄位。
  15. 一種處理器,其係包含: 一遮罩暫存器,包含一第一複數個資料欄位以儲存指示經遮罩的向量元素之值,及指示未經遮罩的向量元素之值;一通用暫存器;一解碼級,用以解碼載明一目的地運算元、相對應於該等第一複數個資料欄位之一部分的一遮罩長度、與一來源運算元的一第一指令;以及一執行單元,回應於由該已解碼的第一指令所載明的該目的地運算元係為該通用暫存器,從於該遮罩暫存器來源運算元中的資料欄位讀取多個值,該數目係相對應於由該第一指令所載明的該遮罩長度,儲存該等多個值至在由該第一指令所載明之該通用暫存器目的地運算元中之相對應資料欄位,及儲存指示經遮罩的向量元素之值至該通用暫存器目的地運算元中相對應於由該第一指令所載明的該遮罩長度之該等多個資料欄位以外的任何資料欄位;該執行單元,回應於由該已解碼的第一指令所載明的該來源運算元係為該通用暫存器,從於由該第一指令所載明的該通用暫存器來源運算元中的資料欄位讀取多個值,該數目係相對應於由該第一指令所載明的該遮罩長度,儲存該等多個值至在由該第一指令所載明之該遮罩暫存器目的運算元中之相對應資料欄位,及儲存指示經遮罩的向量元素之值至該遮罩暫存器目的地運算元中相對應於由該第一指令所載明的該遮罩長度之該 等多個資料欄位以外的任何資料欄位。
  16. 如申請專利範圍第15項之處理器,其中該通用暫存器係為一32-位元暫存器。
  17. 如申請專利範圍第15項之處理器,其中該通用暫存器係為一64-位元暫存器。
  18. 如申請專利範圍第15項之處理器,其中該遮罩長度係相對應於由該等第一複數個資料欄位中之8者所組成之一部分。
  19. 如申請專利範圍第15項之處理器,其中該遮罩長度係相對應於由該等第一複數個資料欄位中之16者所組成之一部分。
  20. 如申請專利範圍第15項之處理器,其中該遮罩長度係相對應於由該等第一複數個資料欄位中之32者所組成之一部分。
  21. 如申請專利範圍第15項之處理器,其中該遮罩長度係相對應於由該等第一複數個資料欄位中之64者所組成之一部分。
  22. 一種處理系統,其係包含:一記憶體;以及一第一複數個處理器,該等第一複數個處理器各自係包含:複數個遮罩暫存器中之一遮罩暫存器,各自包含一第二複數個資料欄位以儲存指示經遮罩的向量元素之值,及指示未經遮罩的向量元素之值; 複數個通用暫存器中之一通用暫存器;一解碼級,用以解碼載明一目的地運算元、相對應於該等第二複數個資料欄位之一部分的一遮罩長度、與一來源運算元的一第一指令;以及與該遮罩暫存器及該通用暫存器耦接的一執行單元,該執行單元係回應於該已解碼的第一指令而進行下列動作:從於該來源運算元中的資料欄位讀取多個值,該數目係相對應於由該第一指令所載明的該遮罩長度;儲存該等多個值至在由該第一指令所載明之該目的地運算元中之相對應資料欄位;以及儲存指示經遮罩的向量元素之值至該目的地運算元中相對應於由該第一指令所載明的該遮罩長度之該等多個資料欄位以外的任何資料欄位。
  23. 如申請專利範圍第22項之處理系統,其中該通用暫存器係為一32-位元暫存器。
  24. 如申請專利範圍第22項之處理系統,其中該遮罩暫存器係為一64-位元暫存器。
  25. 如申請專利範圍第24項之處理系統,其中該通用暫存器係為一64-位元暫存器。
  26. 如申請專利範圍第24項之處理系統,其中該遮罩長度係相對應於由該等第二複數個資料欄位中之8者所組成之 一部分。
  27. 如申請專利範圍第24項之處理系統,其中該遮罩長度係相對應於由該等第二複數個資料欄位中之16者所組成之一部分。
  28. 如申請專利範圍第24項之處理系統,其中該遮罩長度係相對應於由該等第二複數個資料欄位中之32者所組成之一部分。
  29. 如申請專利範圍第24項之處理系統,其中該遮罩長度係相對應於由該等第二複數個資料欄位中之64者所組成之一部分。
  30. 如申請專利範圍第22項之處理系統,其中由該第一指令所載明的該目的地運算元係選自於由下列所組成之一組群:該遮罩暫存器、該通用暫存器、及該記憶體中之一儲存位置。
  31. 如申請專利範圍第30項之處理系統,其中由該第一指令所載明的該目的地運算元或該來源運算元中之一者係為該遮罩暫存器。
TW101143925A 2011-11-25 2012-11-23 用以提供在遮罩暫存器與通用暫存器或記憶體間的轉換之指令及邏輯 TWI546735B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/062160 WO2013077884A1 (en) 2011-11-25 2011-11-25 Instruction and logic to provide conversions between a mask register and a general purpose register or memory

Publications (2)

Publication Number Publication Date
TW201337746A TW201337746A (zh) 2013-09-16
TWI546735B true TWI546735B (zh) 2016-08-21

Family

ID=48470180

Family Applications (2)

Application Number Title Priority Date Filing Date
TW101143925A TWI546735B (zh) 2011-11-25 2012-11-23 用以提供在遮罩暫存器與通用暫存器或記憶體間的轉換之指令及邏輯
TW105116712A TWI595413B (zh) 2011-11-25 2012-11-23 用以提供在遮罩暫存器與通用暫存器或記憶體間的轉換之指令及邏輯(二)

Family Applications After (1)

Application Number Title Priority Date Filing Date
TW105116712A TWI595413B (zh) 2011-11-25 2012-11-23 用以提供在遮罩暫存器與通用暫存器或記憶體間的轉換之指令及邏輯(二)

Country Status (4)

Country Link
US (1) US10203954B2 (zh)
CN (1) CN103988173B (zh)
TW (2) TWI546735B (zh)
WO (1) WO2013077884A1 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9645820B2 (en) * 2013-06-27 2017-05-09 Intel Corporation Apparatus and method to reserve and permute bits in a mask register
US20160283242A1 (en) * 2014-12-23 2016-09-29 Intel Corporation Apparatus and method for vector horizontal logical instruction
US20170192780A1 (en) * 2015-12-30 2017-07-06 Robert Valentine Systems, Apparatuses, and Methods for Getting Even and Odd Data Elements
US10261790B2 (en) * 2016-03-31 2019-04-16 Intel Corporation Memory copy instructions, processors, methods, and systems
US10209959B2 (en) * 2016-11-03 2019-02-19 Samsung Electronics Co., Ltd. High radix 16 square root estimate
US9965278B1 (en) * 2016-12-20 2018-05-08 Texas Instruments Incorporated Streaming engine with compressed encoding for loop circular buffer sizes
CN110109657B (zh) * 2019-03-29 2023-06-20 南京佑驾科技有限公司 一种gpu微指令探测方法
TWI773106B (zh) * 2021-01-28 2022-08-01 華邦電子股份有限公司 具有運算功能的記憶體裝置及其操作方法

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4521846A (en) * 1981-02-20 1985-06-04 International Business Machines Corporation Mechanism for accessing multiple virtual address spaces
JPS58214963A (ja) * 1982-06-09 1983-12-14 Hitachi Ltd ベクトル処理装置
JPS59208672A (ja) * 1983-05-13 1984-11-27 Nec Corp ベクトル処理装置
US4873630A (en) * 1985-07-31 1989-10-10 Unisys Corporation Scientific processor to support a host processor referencing common memory
JPS6266377A (ja) * 1985-09-19 1987-03-25 Fujitsu Ltd マスクパタ−ン生成方式
US5440715A (en) * 1990-06-27 1995-08-08 Advanced Micro Devices, Inc. Method and apparatus for expanding the width of a content addressable memory using a continuation bit
AU4804493A (en) * 1992-08-07 1994-03-03 Thinking Machines Corporation Massively parallel computer including auxiliary vector processor
US5487159A (en) * 1993-12-23 1996-01-23 Unisys Corporation System for processing shift, mask, and merge operations in one instruction
US5742826A (en) * 1994-11-09 1998-04-21 International Business Machines Corporation Object encapsulation protection apparatus
US6587476B1 (en) * 1999-05-26 2003-07-01 3 Com Corporation Ethernet frame encapsulation over VDSL using HDLC
US6484255B1 (en) * 1999-09-20 2002-11-19 Intel Corporation Selective writing of data elements from packed data based upon a mask using predication
US20030105945A1 (en) * 2001-11-01 2003-06-05 Bops, Inc. Methods and apparatus for a bit rake instruction
FR2823339A1 (fr) * 2001-04-04 2002-10-11 St Microelectronics Sa Circuit integre sans contact comprenant un circuit anticollision a logique cablee
US7181600B1 (en) * 2001-08-02 2007-02-20 Mips Technologies, Inc. Read-only access to CPO registers
US7076639B2 (en) * 2001-10-23 2006-07-11 Ip-First, Llc Apparatus and method for masked move to and from flags register in a processor
US6745359B2 (en) * 2002-06-06 2004-06-01 Logicvision, Inc. Method of masking corrupt bits during signature analysis and circuit for use therewith
GB2409059B (en) * 2003-12-09 2006-09-27 Advanced Risc Mach Ltd A data processing apparatus and method for moving data between registers and memory
US20050289329A1 (en) * 2004-06-29 2005-12-29 Dwyer Michael K Conditional instruction for a single instruction, multiple data execution engine
US20060256854A1 (en) * 2005-05-16 2006-11-16 Hong Jiang Parallel execution of media encoding using multi-threaded single instruction multiple data processing
US7353369B1 (en) * 2005-07-13 2008-04-01 Nvidia Corporation System and method for managing divergent threads in a SIMD architecture
US7921263B2 (en) * 2006-12-22 2011-04-05 Broadcom Corporation System and method for performing masked store operations in a processor
KR101292670B1 (ko) * 2009-10-29 2013-08-02 한국전자통신연구원 벡터 프로세싱 장치 및 방법

Also Published As

Publication number Publication date
WO2013077884A1 (en) 2013-05-30
TW201631469A (zh) 2016-09-01
TW201337746A (zh) 2013-09-16
US10203954B2 (en) 2019-02-12
TWI595413B (zh) 2017-08-11
CN103988173B (zh) 2017-04-05
CN103988173A (zh) 2014-08-13
US20150113246A1 (en) 2015-04-23

Similar Documents

Publication Publication Date Title
JP6207095B2 (ja) 条件付きループをベクトル化する命令及び論理
TWI550509B (zh) 提供向量混合與置換功能的指令與邏輯
KR101767025B1 (ko) 벡터 어드레스 충돌 검출 기능을 제공하기 위한 방법, 장치, 명령어들 및 로직
JP5933725B2 (ja) ベクトル散乱演算機能及びベクトル収集演算機能を提供する命令及びロジック
KR101555412B1 (ko) 벡터 압축 및 회전 기능 제공 명령어 및 로직
TWI476695B (zh) 提供向量水平比較功能之指令與邏輯
JP5933011B2 (ja) ストライド機能を有するベクトルロード演算/ストア演算を提供する命令及びロジック
TWI578155B (zh) 用於條件式記憶體錯誤輔助抑制的處理器、處理系統及方法
TWI546735B (zh) 用以提供在遮罩暫存器與通用暫存器或記憶體間的轉換之指令及邏輯
JP5930558B2 (ja) ストライド機能及びマスク機能を有するベクトルロード及びベクトルストアを提供する命令及びロジック
TWI539373B (zh) 用以提供向量子位元解壓縮功能之方法、機器可讀取媒體、處理器及 處理系統
TWI610233B (zh) 用於提供向量分組元組交叉比較功能的方法、處理器和處理系統
TWI483126B (zh) 提供向量線性內插功能之指令與邏輯
TW201732564A (zh) 用於使用monitor及mwait架構之使用者層級執行緒同步的方法及裝置
TW201339964A (zh) 使用控制操作來進行單一指令多重資料(simd)可變移位與旋轉之技術
TW201732560A (zh) 用於位元欄位位址和插入之指令及邏輯
JP6231155B2 (ja) ベクトル散乱演算機能及びベクトル収集演算機能を提供する命令及びロジック
JP6222859B2 (ja) ストライド機能及びマスク機能を有するベクトルロード及びベクトルストアを提供する命令及びロジック

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees