TWI659356B - 用以提供向量水平式多數決投票功能之指令與邏輯(二) - Google Patents

用以提供向量水平式多數決投票功能之指令與邏輯(二) Download PDF

Info

Publication number
TWI659356B
TWI659356B TW105130334A TW105130334A TWI659356B TW I659356 B TWI659356 B TW I659356B TW 105130334 A TW105130334 A TW 105130334A TW 105130334 A TW105130334 A TW 105130334A TW I659356 B TWI659356 B TW I659356B
Authority
TW
Taiwan
Prior art keywords
instruction
processor
values
majority
data
Prior art date
Application number
TW105130334A
Other languages
English (en)
Other versions
TW201704989A (zh
Inventor
艾哈邁德 瓦爾 艾爾穆斯塔法 烏爾德
克許提杰A 杜許
蘇萊曼 賽爾
查理斯R 楊特
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 TW201704989A publication Critical patent/TW201704989A/zh
Application granted granted Critical
Publication of TWI659356B publication Critical patent/TWI659356B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/22Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
    • 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
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • 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/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • 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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1048Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using arrangements adapted for a specific error detection or correction feature
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking

Abstract

提供向量水平式多數決投票功能的指令以及邏輯。一些實施例,回應於一指令而明確指定下列事項:一目的運算元、該等向量元素之一尺度、一來源運算元、以及對應至該來源運算元中之該等向量元素資料欄之一部份的一遮罩;從該來源運算元中明確指定尺度之資料欄而讀取一些數值,對應至利用該指令所明確指定的遮罩並且儲存一結果數值至該目的運算元中的該些對應資料欄,該結果數值從讀取自該來源運算元之該些資料欄的數值之多數決而受計算。

Description

用以提供向量水平式多數決投票功能之指令與邏輯(二) 發明領域
本揭示係關於處理邏輯、微處理器以及相關指令集結構領域,當該等指令集利用處理器或其他處理邏輯被執行時,則進行邏輯的、數學的或其他的功能運算。尤其是,本揭示係有關用以提供向量水平式多數決投票功能之指令與邏輯。
發明背景
現代處理器通常包含指令以提供計算上加強的運算,但也使用各種資料儲存裝置,例如,單指令多資料(SIMD)向量暫存器而提供可經由有效實作而被利用之高階資料平行處理。
對於一些演算法,上述之高階資料平行處理不能被利用,並且因此該等向量資源較少被利用。
另一方面,因為實作成本超出利益,所以故障容限以及故障檢測特點一般不被應用至資料轉換單元上,例如,高產量處理器中之算術邏輯單元(ALU)。但是,減低封裝中之尺度以及增加電晶體數量,雖然使得裝置更快且更 有效率,但卻由於阿爾法粒子以及其他導致的因素而增加故障之可能性。
另外地,有一些極端環境,於其中故障容限是電腦系統高度需要的特點。例如,由海軍研究學校之空間系統學院團隊使用場式可程控閘陣列(FPGA)所開發的一可組態故障容限處理器(CFTP)。其接著被部署作為美國海軍學院(USNA)之MidSTAR-1衛星上的一試驗酬載。一第二CFTP系統,CFTP-2,被部署作為一完全以地面為基礎之系統並且使用在達維斯的加州大學之粒子迴旋加速器於質子束中被試驗。
此類之FPGA實作例可能限制性能優點,其可能是另外可供用於,例如,非常大尺度積體(VLSI)並且它們的實作可另外地更大及/或更重,並且可能需要更高的供應電壓。
迄今,對於此類性能以及效率受限議題之可能解決辦法仍未適當地被探索。
發明概要
依據本發明之一實施例,係特地提出一種處理器,其包含:一向量暫存器,其包含用以儲存向量元素的數值之複數個資料欄;一解碼級,其用以解碼一第一指令,該第一指令明確指定:一目的運算元、該等向量元素之一尺度、該等資料欄之一部份、及一來源運算元;以及一執行單元,其回應於該解碼的第一指令,用以:自該來源運 算元中之該等向量元素之該尺度的資料欄讀取一些數值;以及儲存一結果數值於藉由該第一指令所明確指定之該目的運算元中,其中該結果數值是從讀取自該來源運算元的該等資料欄之該些數值之最常見數值而被計算。
100‧‧‧電腦系統
102‧‧‧處理器
104‧‧‧內部快取記憶體
106‧‧‧暫存器檔案
108‧‧‧執行單元
109‧‧‧封裝指令集
110‧‧‧處理器匯流排
112‧‧‧圖形控制器
114‧‧‧加速圖形埠(AGP)互連
116‧‧‧記憶體控制中樞
118‧‧‧記憶體界面
120‧‧‧記憶體
122‧‧‧系統I/O匯流排
124‧‧‧資料儲存裝置
126‧‧‧無線收發器
128‧‧‧韌體中樞(快閃BIOS)
130‧‧‧I/O控制器中樞(ICH)
134‧‧‧網路控制器
140‧‧‧資料處理系統
141‧‧‧匯流排
142‧‧‧執行單元
143‧‧‧封裝指令集
144‧‧‧解碼器
145‧‧‧暫存器檔案
146‧‧‧同步動態隨機存取記憶體(SDRAM)控制
147‧‧‧靜態隨機存取記憶體(SRAM)控制
148‧‧‧叢發快閃記憶體界面
149‧‧‧PCMCIA/小型快閃卡
150‧‧‧液晶顯示器(LCD)控制
151‧‧‧直接記憶體存取(DMA)控制器
152‧‧‧不同匯流排主界面
153‧‧‧I/O匯流排
154‧‧‧I/O橋接
155‧‧‧通用非同步接收器/發送器(UART)
156‧‧‧通用序列匯流排(USB)
157‧‧‧藍芽無線UART
158‧‧‧I/O擴充界面
159‧‧‧處理核心
160‧‧‧資料處理系統
161‧‧‧SIMD輔助處理器
162‧‧‧執行單元
163‧‧‧指令集
164‧‧‧暫存器檔案
165‧‧‧解碼器
165B‧‧‧解碼器
166‧‧‧主處理器
167‧‧‧快取記憶體
168‧‧‧輸入/輸出系統
169‧‧‧無線界面
170‧‧‧處理核心
171‧‧‧輔助處理器匯流排
200‧‧‧邏輯電路處理器
201‧‧‧有序前端點
202‧‧‧快速排程器
203‧‧‧無序引擎
204‧‧‧慢速/一般浮點排程器
206‧‧‧簡單浮點排程器
208‧‧‧暫存器檔案
210‧‧‧暫存器檔案
211‧‧‧執行區塊
212‧‧‧位址產生單元(AGU)
214‧‧‧位址產生單元(AGU)
216‧‧‧快速ALU
218‧‧‧快速ALU
220‧‧‧慢速ALU
222‧‧‧浮點ALU
224‧‧‧浮點移動單元
226‧‧‧指令預擷取器
228‧‧‧指令解碼器
230‧‧‧追蹤快取
232‧‧‧微碼ROM
234‧‧‧微運算(uop)佇列
310‧‧‧封裝位元組
320‧‧‧封裝字組
330‧‧‧封裝雙字組
341‧‧‧半封裝
342‧‧‧單一封裝
343‧‧‧封裝雙字組
344‧‧‧不帶符號封裝位元組表示
345‧‧‧帶符號封裝位元組表示
346‧‧‧不帶符號封裝字組表示
347‧‧‧帶符號封裝字組表示
348‧‧‧不帶符號封裝雙字組表示
349‧‧‧帶符號封裝雙字組表示
360‧‧‧運算編碼格式
361、362‧‧‧多數決投票編碼欄
363‧‧‧模式編碼欄
364、365‧‧‧來源運算元識別符
366‧‧‧目的運算元識別符
370‧‧‧運算編碼格式
371、372‧‧‧多數決投票編碼欄
373‧‧‧模式編碼欄
374、375‧‧‧來源運算元識別符
376‧‧‧目的運算元識別符
378‧‧‧字首位元組(PREFIX)
380‧‧‧運算編碼格式
381‧‧‧條件編碼欄
382‧‧‧運算編碼欄
383‧‧‧尺度編碼欄
384‧‧‧運算編碼欄
385‧‧‧來源運算元識別符
386‧‧‧目的運算元識別符
387、388、389‧‧‧運算編碼欄
390‧‧‧來源運算元識別符
391‧‧‧VEX字首位元組
392‧‧‧運算欄
393‧‧‧尺度指數為基礎識別符
394‧‧‧位移識別符
395‧‧‧即時位元組
396‧‧‧EVEX字首位元組
397‧‧‧運算碼格式
398‧‧‧運算碼格式
400‧‧‧管線
402‧‧‧擷取級
404‧‧‧長度解碼級
406‧‧‧解碼級
408‧‧‧分配級
410‧‧‧換名級
412‧‧‧排程級
414‧‧‧暫存器讀取/記憶體讀取級
416‧‧‧執行級
418‧‧‧回寫/記憶體寫入級
422‧‧‧例外處理級
424‧‧‧提交級
430‧‧‧前端點單元
432‧‧‧支流預報單元
434‧‧‧指令快取單元
436‧‧‧指令轉發後備緩衝器
438‧‧‧指令擷取單元
440‧‧‧解碼單元
450‧‧‧執行引擎單元
452‧‧‧換名/分配器單元
454‧‧‧除役單元
456‧‧‧排程器單元
458‧‧‧實體暫存器檔案單元
460‧‧‧執行群集
462‧‧‧執行單元
464‧‧‧記憶體存取單元
470‧‧‧記憶體單元
472‧‧‧資料TLB單元
474‧‧‧資料快取單元
476‧‧‧位準2快取單元
490‧‧‧處理器核心
500‧‧‧處理器
502A-N‧‧‧核心
504A-N‧‧‧快取單元
506‧‧‧共用快取單元
508‧‧‧整合圖形
510‧‧‧系統媒介單元
512‧‧‧互連環單元
514‧‧‧整合記憶體控制器單元
516‧‧‧匯流排控制器單元
600‧‧‧系統
610、615‧‧‧處理器
620‧‧‧圖形記憶體控制器中樞(GMCH)
640‧‧‧記憶體
645‧‧‧顯示器
650‧‧‧輸入/輸出控制器中樞
660‧‧‧外部圖形裝置
670‧‧‧週邊裝置
695‧‧‧正面匯流排(FSB)
700‧‧‧多處理器系統
714‧‧‧I/O裝置
716‧‧‧第一匯流排
718‧‧‧匯流排橋
720‧‧‧第二匯流排
722‧‧‧鍵盤及/或滑鼠
724‧‧‧音訊I/O
727‧‧‧通訊裝置
728‧‧‧資料儲存單元
730‧‧‧指令/數碼及資料
732、734‧‧‧記憶體
738‧‧‧高性能圖形電路
739‧‧‧高性能圖形界面
750、752、754‧‧‧點對點互連
770‧‧‧處理器
772‧‧‧整合記憶體控制器單元
776、778‧‧‧點對點(P-P)界面
780‧‧‧第二處理器
782‧‧‧整合記憶體控制器單元
786、788‧‧‧點對點界面電路
790‧‧‧晶片組
794、798‧‧‧點對點界面電路
796‧‧‧界面
800‧‧‧系統
814‧‧‧I/O裝置
815‧‧‧遺留I/O裝置
832、834‧‧‧記憶體
870、880‧‧‧處理器
872、882‧‧‧控制邏輯(CL)
890‧‧‧晶片組
900‧‧‧系統單晶片(SoC)
902‧‧‧互連單元
910‧‧‧應用處理器
920‧‧‧媒體處理器
924‧‧‧影像處理器
926‧‧‧音訊處理器
928‧‧‧視訊處理器
930‧‧‧靜態隨機存取記憶體(SRAM)單元
932‧‧‧直接記憶體存取(DMA)單元
940‧‧‧顯示單元
1000‧‧‧處理器
1005‧‧‧中央處理單元(CPU)
1010‧‧‧圖形處理單元(GPU)
1015‧‧‧影像處理器
1020‧‧‧視訊處理器
1025‧‧‧USB控制器
1030‧‧‧UART控制器
1035‧‧‧SPI/SDIO控制器
1040‧‧‧顯示裝置
1045‧‧‧高清晰多媒體界面 (HDMI)控制器
1050‧‧‧MIPI控制器
1055‧‧‧快閃記憶體控制器
1060‧‧‧雙重資料率控制器
1065‧‧‧安全引擎
1070‧‧‧I2S/I2C(整合晶片間聲音/積體電路間)界面
1110‧‧‧硬體或軟體模式
1120‧‧‧模擬軟體
1130‧‧‧儲存裝置
1130‧‧‧儲存媒體
1140‧‧‧記憶體
1150‧‧‧有線連接
1160‧‧‧無線連接
1165‧‧‧製造
1205‧‧‧程式
1210‧‧‧仿效邏輯
1215‧‧‧處理器
1302‧‧‧高階語言
1304‧‧‧x86編譯器
1306‧‧‧x86二進制數碼
1308‧‧‧不同指令集編譯器
1310‧‧‧指令集二進制數碼
1312‧‧‧指令變換器
1314‧‧‧x86指令集核心
1316‧‧‧x86指令集核心
1401‧‧‧向量水平式多數決投票功能裝置
1402‧‧‧向量水平式多數決投票功能裝置
1403‧‧‧比較邏輯
1405‧‧‧輸出
1410‧‧‧部份排序網路
1415‧‧‧部份排序網路
1420‧‧‧輸入
1425‧‧‧4-多數決(MAJ)功能
1430-1435‧‧‧多工器
1440-1445‧‧‧多工器
1450-1455‧‧‧多工器
1460‧‧‧多工器
1470‧‧‧8-MAJ1
1475‧‧‧8-MAJ2
1480‧‧‧8-MAJ77
1485‧‧‧8-MAJ8
1501‧‧‧向量水平式多數決投票功能處理程序流程圖
1510-1590‧‧‧向量水平式多數決投票功能處理步驟
1601‧‧‧向量水平式多數決投票功能處理程序流程圖
1610-1690‧‧‧向量水平式多數決投票功能處理步驟
1701‧‧‧向量水平式多數決投票功能處理程序流程圖
1710-1790‧‧‧向量水平式多數決投票功能處理步驟
本發明經由範例圖解被說明並且不受限定於附圖。
第1A圖是執行用以提供向量水平式多數決投票功能之指令的系統之一實施例方塊圖。
第1B圖是執行用以提供向量水平式多數決投票功能之指令的系統之另一實施例方塊圖。
第1C圖是執行用以提供向量水平式多數決投票功能之指令的系統之另一實施例方塊圖。
第2圖是執行用以提供向量水平式多數決投票功能之指令的處理器之一實施例方塊圖。
第3A圖是圖解說明依據一實施例之封裝資料型式。
第3B圖是圖解說明依據一實施例之封裝資料型式。
第3C圖是圖解說明依據一實施例之封裝資料型式。
第3D圖是圖解說明依據一實施例之編碼以提供向量水平式多數決投票功能的一指令。
第3E圖是圖解說明依據另一實施例之編碼以提供向量水平式多數決投票功能的一指令。
第3F圖是圖解說明依據另一實施例之編碼以提供向量水平式多數決投票功能的一指令。
第3G圖是圖解說明依據另一實施例之編碼以提供向量水平式多數決投票功能的一指令。
第3H圖是圖解說明依據另一實施例之編碼以提供向量水平式多數決投票功能的一指令。
第4A圖是圖解說明用於執行提供向量水平式多數決投票功能之指令的處理器微結構之一實施例的元件。
第4B圖是圖解說明用於執行提供向量水平式多數決投票功能之指令的處理器微結構之另一實施例的元件。
第5圖是用於執行提供向量水平式多數決投票功能之指令的一處理器實施例之方塊圖。
第6圖是用於執行提供向量水平式多數決投票功能之指令的電腦系統之一實施例之方塊圖。
第7圖用於執行提供向量水平式多數決投票功能之指令的電腦系統之另一實施例之方塊圖。
第8圖是用於執行提供向量水平式多數決投票功能之指令的電腦系統之另一實施例之方塊圖。
第9圖是用於執行提供向量水平式多數決投票功能之指令的系統單晶片之一實施例之方塊圖。
第10圖是用於執行提供向量水平式多數決投票功能之指令的一處理器實施例之方塊圖。
第11圖是提供向量水平式多數決投票功能之IP核心發展系統的一實施例之方塊圖。
第12圖是圖解說明提供向量水平式多數決投票功能之一結構模擬系統的一實施例。
第13圖是圖解說明轉譯提供向量水平式多數決投票功能之指令的一系統實施例。
第14A圖是圖解說明用以提供向量水平式多數決投票功能之裝置的一實施例。
第14B圖是圖解說明用以提供向量水平式多數決投票功能之裝置的另一實施例。
第15圖是圖解說明用以提供向量水平式多數決投票功能之一實施例的處理程序流程圖。
第16圖是圖解說明用以提供向量水平式多數決投票功能之一不同實施例的處理程序流程圖。
第17圖是圖解說明用以提供向量水平式多數決投票功能之另一不同實施例的處理程序流程圖。
較佳實施例之詳細說明
下面的說明揭示用以對處理器、電腦系統或其他處理裝置內或其關聯者提供向量水平式多數決投票功能之指令以及處理邏輯。
此處所揭示者是用以提供向量水平式多數決投票功能之指令以及邏輯。於一些實施例中,回應至一指令而明確指定下列事項:一目的運算元、該等向量元素之一尺度、一來源運算元、以及對應至該來源運算元中之該等向量元素資料欄的一部份之一遮罩;一些數值從該來源運算元中明確指定尺度之資料欄被讀取,對應至利用該指令所明確指定的遮罩並且一結果數值被儲存至該目的運算元 中之該些對應資料欄,該結果數值從讀取自該來源運算元之該些資料欄的數值之多數決被計算。於一些實施例中,該結果數值代表讀取自該來源運算元之該些資料欄的數值之位元式多數決。於一些實施例中,該結果數值代表讀取自該來源運算元之該些資料欄的匹配數值之多數決數值。
向量水平式多數決投票功能可提供故障容限以及故障檢測特點,其一般是不可得自於無顯著實作成本之高量產處理器中。此等特點漸增地有所需求的,因為於封裝中減低尺度以及增加電晶體數量將由於阿爾法粒子以及其他導致因素而增加故障之可能性。
於一些極端環境中,其中故障容限是電腦系統高度所需求的特點,具有向量水平式多數決投票功能之商業用處理器可提供故障容限以及故障檢測,以及來自高階整合之可得優點,而是較小以及較輕,並且比其他另外者,例如,FPGA技術,具有較佳的功率效能。
於下面說明中,許多特定細節,例如,處理邏輯、處理器型式、微建構條件、事件、賦能機構以及其類似者先前被設定,以便對本發明實施例提供更完全的了解。但是,熟習本技術者應了解,本發明可以不必此等特定細節而被實施。另外地,一些已知的結構、電路、以及其類似者不詳細地被展示以避免非必要地混淆本發明之實施例。
雖然下面的實施例參考一處理器被說明,但其他實施例是可應用至其他型式的積體電路以及邏輯裝置。本 發明實施例之相似技術以及教示可被應用至可得益於較高管線產能以及改進性能之其他型式的電路或半導體裝置。本發明實施例之教示是可應用至進行資料操作之任何處理器或機器。但是,本發明是不限定於進行512位元、256位元、128位元、64位元、32位元、或16位元資料運算之處理器或機器,並且可被應用至資料操作或管理於其中被進行之任何處理器以及機器。此外,下面的說明提供範例,並且為了圖解說明之目的,附圖展示各種範例。但是,這些範例不應被理解為限定意思,由於它們是僅有意地用以提供本發明實施例範例而不是用以提供本發明實施例所有可能的實作例之詳盡表列。
雖然下面範例說明執行單元脈絡中之指令處理與分配以及邏輯電路,本發明其他實施例可藉由被儲存於機器可讀取的有形媒體上之資料或指令被達成,該等資料或指令當利用一機器被進行時將導致該機器進行與本發明至少一實施例一致之功能。於一實施例中,關聯於本發明實施例之功能以機器可執行指令被實施。該等指令可被使用以導致藉由指令被程式化之一般用途或特殊用途處理器進行本發明步驟。本發明實施例可被提供作為一電腦程式規劃產品或軟體,其可包含具有被儲存於其上之指令的機器或電腦可讀取媒體,該等指令可被使用以程式化一電腦(或其他電子式裝置)而依據本發明實施例進行一個或多個操作。另外地,本發明實施例步驟可藉由包含用以進行該等步驟之固定功能邏輯的特定硬體構件被進行,或藉由程 式化之電腦構件以及固定功能硬體構件之任何組合被進行。
被使用以程式化邏輯而進行本發明實施例之指令可被儲存在系統中的記憶體之內,例如,DRAM、快取記憶體、快閃記憶體、或其他儲存裝置。更進一步地,該等指令可經由網路或經由其他電腦可讀取媒體被散佈。因此機器可讀取媒體可包含用於以機器(例如,電腦)可讀取形式而儲存或發送資訊之任何機構,但是不限定於,軟式磁碟片、光碟、小型碟片、唯讀記憶體(CD-ROM)、以及磁式光碟、唯讀記憶體(ROM)、隨機存取記憶體(RAM)、可消除可程控唯讀記憶體(EPROM)、電氣可消除可程控唯讀記憶體(EEPROM)、磁學或光學卡、快閃記憶體或有形的機器可讀取儲存裝置,其等可被使用以經由電氣、光學、音訊或其他形式的傳輸信號(例如,載波、紅外線信號、數位信號等等)而作為在網際網路上之資訊發送。因此,電腦可讀取媒體包含適用於以機器(例如,電腦)可讀取形式而儲存或發送電子式指令或資訊的任何型式之有形的機器可讀取媒體。
一設計可經歷各種步驟,從創作至模擬至製造。代表一設計之資料可以一些方式代表該設計。首先,當是有用於模擬時,硬體可使用硬體說明語言或另一功能性說明語言被表示。另外地,具有邏輯及/或電晶體閘之一電路位準模式可在設計處理程序的一些階段中被產生。更進一步地,多數設計,在一些階段,達到表示在硬體模式中之 各種裝置的實際配置之資料位準。於習見的半導體製造技術被使用之情況中,表示硬體模式之資料可以是明確指定各種特點之存在或不存在之資料,該等特點是在供使用以產生積體電路之遮罩的不同遮罩層上。在設計之任何表示中,資料可以任何機器可讀取媒體形式被儲存。一記憶體或一磁式或光學儲存裝置,例如,一光碟,可以是機器可讀取媒體,以儲存經由光學或電氣波形被調變的發送資訊或以其他產生之方式而發送此資訊。當指示或攜帶數碼或設計之電氣載波被發送至電氣信號之複製、緩衝儲存、或重新發送被進行的範圍時,一新的複製被產生。因此,通訊提供者或網路提供者可將一物件(例如,被編碼於載波之資訊,實施本發明實施例之技術),至少暫時地,儲存在有形的機器可讀取媒體上。
於現代之處理器中,一些不同的執行單元被使用以處理以及執行多種數碼以及指令。不是所有的指令被同等設計,因一些較快速完成,而其他的可能需要一些時脈週期以完成。指令產能越快,則處理器的整體性能將越好。因此具有許多指令可儘快速執行將是有利。但是,有某些指令具有較大的複雜性並且因而需要更多的執行時間以及處理器資源。例如,有浮點指令、負載/儲存操作、資料移動等等。
由於更多電腦系統被使用於網際網路、文本、以及多媒體應用中,另外的處理器支援通常被引介。於一實施例中,一指令集可以是關聯於一個或多個電腦內部結 構,包含資料型式、指令、暫存器結構、定址模式、記憶體結構、中斷與例外處理以及外部輸入與輸出(I/O)。
於一實施例中,指令集結構(ISA)可利用一個或多個微結構被實作,該等微結構包含被使用以實作一個或多個指令集之處理器邏輯以及電路。因此,具有不同微結構之處理器可共用共同指令集的至少一部份。例如,英特爾奔騰4(Intel® Pentium4)處理器、英特爾核心(Intel® CoreTM)處理器、以及來自美國加州森尼維耳市(Sunnyvale)之先進微裝置公司之處理器,其實作幾乎相同於x86指令集的版本(較新版本已被添加一些延伸),但是具有不同的內部設計。同樣地,藉由其他處理器發展公司所設計的處理器,例如,ARM股份有限公司,MIPS,或它們的許可者或採用者,可共用一共同指令集的至少一部份,但是可包含不同的處理器設計。例如,ISA之相同暫存器結構可使用新的或習知的技術於不同的微結構中而以不同方式被實作,該等微結構包含專用實際暫存器,使用暫存器換名機構之一個或多個動態分配實際暫存器(例如,使用暫存器混疊目錄(RAT)、重新安排緩衝器(ROB)以及退役暫存器檔案)。於一實施例中,暫存器可包含一個或多個暫存器、暫存器結構、暫存器檔案、或其他暫存器組,其等可以或可能不由軟體程式規劃者所提供。
於一實施例中,一指令可包含一個或多個指令格式。於一實施例中,一指令格式可指示各種欄(位元數、位元位置等等)以明確指定被進行之運算以及運算將在其上 被進行之運算元。利用指令型板(或子格式)被界定的一些指令格式可進一步被分解。例如,一所給的指令格式之指令型板可被定義以具有不同子集之指令格式欄及/或被定義以具有不同地被詮譯之一所給的欄。於一實施例中,一指令使用一指令格式被表示(並且,如果被定義的話,以一所給予的指令格式的指令型板之一者)並且明確指定或指示運算以及該運算將在其上運算之運算元。
科學上、金融上、自動向量化一般用途、RMS(辨識、探勘以及合成)、以及視覺與多媒體應用(例如,2D/3D圖形、影像處理、視訊壓縮/解壓縮、聲音辨識演算法以及音訊運用)將可能需要進行大量資料項目上的相同運算。於一實施例中,單指令多資料(SIMD)指示於一指令型式,其導致一處理器進行複數個資料元素上之運算。SIMD技術可被使用於可邏輯地分割暫存器中之位元成為一些固定尺度或可變尺度的資料元素之處理器中,該等尺度的資料元素各代表一分別數值。例如,於一實施例中,64-位元暫存器中之位元可被安排作為包含四個分別的16-位元資料元素之一來源運算元,各個資料元素代表一分別的16-位元數值。這資料型式可被稱為‘封裝’資料型式或‘向量’資料型式,並且這資料型式之運算元被稱為封裝資料運算元或向量運算元。於一實施例中,一封裝資料項目或向量可以是被儲存在單一暫存器內之一序列的封裝資料元素,並且一封裝資料運算元或一向量運算元可以是SIMD指令(或‘封裝資料指令’或‘向量指令’)之一來源或目的運算元。於一實施 例中,一SIMD指令明確指定將在二個來源向量運算元上被進行的一單一向量運算以產生具有相同或不同尺度的資料元素,具相同或不同數目的資料元素,以及相同或不同的順序之一目的向量運算元(同時也被稱為一結果向量運算元)。
SIMD技術,例如,被採用於,如具有包含x86、MMXTM、流動SIMD延伸(SSE)、SSE2、SSE3、SSE4.1以及SSE4.2指令之一指令集的英特爾核心(Intel® CoreTM)處理器,ARM處理器,例如,具有包含向量浮點(VFP)及/或NEON指令之一指令集的ARM處理器Cortex®家族,以及MIPS處理器,例如,由中國科技學院計算技術(ICT)學會發展的處理器龍芯(Loongson)家族,其使得應用性能能夠有顯著的改進(CoreTM以及MMXTM是美國加州聖克拉拉英特爾公司之註冊商標)。
於一實施例中,目的地以及來源暫存器/資料是用以代表對應的資料或運算之來源以及目的地之通稱名稱。於一些實施例中,它們可利用暫存器、記憶體或具有除了那些展示之外的其他名稱或功能之其他儲存區域而被實作。例如,於一實施例中,“DEST1”可以是一臨時儲存暫存器或其他儲存區域,而“SRC1”以及“SRC2”可以是一第一以及第二來源儲存暫存器或其他儲存區域,等等。於其他實施例中,二個或更多個SRC以及DEST儲存區域可對應至在相同儲存區域內之不同的資料儲存元件(例如,SIMD暫存器)。於一實施例中,來源暫存器之一者也可作用如同 一目的地暫存器,例如,藉由將在第一以及第二來源資料上進行的運算結果回寫至被視為一目的地暫存器的二個來源暫存器之一者。
第1A圖是依據本發明一實施例而藉由包含執行指令之執行單元的一處理器所形成之電腦系統範例的方塊圖。依據本發明,例如,於此處所說明之實施例中的系統100包含一構件,例如,一處理器102,其採用包含邏輯之執行單元而進行用於處理資料之演算法。系統100是代表可得自美國加州聖克拉拉英特爾公司之PENTIUM® III、PENTIUM® 4、XeonTM、Itanium®、XScaleTM及/或StrongARMTM微處理器的處理系統,雖然其他系統(包含具有其他微處理器、工程工作站、機上盒以及其類似者的個人電腦)也可被使用。於一實施例中,樣本系統100可執行來自美國華盛頓,雷德曼德的微軟公司(Microsoft)之可用的WINDOWSTM操作系統之版本,雖然其他操作系統(例如,UNIX以及Linux)、嵌入式軟體、及/或圖形使用者界面,也可被使用。因此,本發明實施例是不限定於硬體電路以及軟體之任何特定組合。
實施例是不限定於電腦系統。本發明的另外實施例可被使用於其他裝置中,例如,手持裝置以及嵌入式應用。手持裝置之一些範例包含行動電話、網際網路協定裝置、數位攝影機、個人數位助理(PDA)、以及手持PC。嵌入式應用可包含一微控制器、一數位信號處理器(DSP)、系統單晶片、網路電腦(NetPC)、機上盒、網路中樞、廣域網 路(WAN)交換機或可依據至少一實施例進行一個或多個指令的任何其他系統。
第1A圖是依據本發明一實施例藉由一處理器102被形成的電腦系統100之方塊圖,該處理器102包含進行一演算法以進行至少一指令之一個或多個執行單元108。一實施例可被說明於單一處理器桌上型或伺服器系統脈絡中,但是不同的實施例可被包含於一多處理器系統中。系統100是一‘中樞’系統結構之範例。電腦系統100包含處理資料信號之一處理器102。處理器102可以是一複雜指令集電腦(CISC)微處理器、一簡化指令集電腦(RISC)微處理器、一非常長指令字組(VLIW)微處理器、一實作指令集組合的處理器,或例如,任何其他處理器裝置,例如,數位信號處理器。處理器102耦合至可在系統100中之處理器102以及其他構件間傳送資料信號的處理器匯流排110。系統100元件進行那些熟習本技術者所熟知的習見功能。
於一實施例中,處理器102包含一位準1(L1)內部快取記憶體104。取決於結構,處理器102可具有一單一內部快取或複數個內部快取位準。另外地,於另一實施例中,該快取記憶體可在處理器102外部。取決於特定實作以及需要,其他實施例也可包含內部以及外部快取記憶體兩者之組合。暫存器檔案106可儲存不同型式的資料於各種暫存器中,如包含整數暫存器、浮點暫存器、狀態暫存器以及指令指示器暫存器。
執行單元108,其包含進行整數以及浮點運算之 邏輯,同時也存在於該處理器102中。該處理器102也包含儲存用於某些巨指令之微碼的一微碼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是用以引導在系統100 中的處理器102、記憶體120以及其他構件之間的資料信號以及橋接在處理器匯流排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橋接154。此等I/O裝置可包含但是不限定於,例如,通用非同步接收器/發送器(UART)155、通用串列匯流排(USB)156、藍芽無線UART 157以及I/O擴充界面158。
資料處理系統140之一實施例提供移動式、網路及/或無線通訊並且處理核心159能夠進行包含向量水平式多數決投票功能之SIMD運算。處理核心159可藉由各種音訊、視訊、影像以及通訊演算法被規劃,如包含離散轉換,例如,沃爾斯-哈達馬德(Walsh-Hadamard)轉換、快速傅立葉轉換(FFT)、離散餘弦轉換(DCT)以及它們分別的反向轉換;壓縮/解壓縮技術,例如,色彩空間轉換、視訊編碼移動評估或視訊解碼移動補償;以及調變/解調變(數據機)功能,例如,脈波編碼調變(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同時也至少包括將指令集163之指令解碼的解碼器165B之部份。處理核心170同時也包含另外的電路(未被展示出),其不是對本發明實施例之了解所必需的。
於操作時,主要處理器166執行資料處理指令流,該等資料處理指令流控制包含與快取記憶體167以及輸入/輸出系統168互動之一般型式的資料處理操作。被嵌入在資料處理指令流之內的有SIMD輔助處理器指令。主要處理器166之解碼器165確認這些SIMD輔助處理器指令,是為將利用一附帶SIMD輔助處理器161被執行之型式。因此,主要處理器166在輔助處理器匯流排171上發出這些SIMD輔助處理器指令(或代表SIMD輔助處理器指令之控制信號),這些SIMD輔助處理器指令利用任何附帶SIMD輔助處 理器從該輔助處理器匯流排171被接收。於此情況中,該SIMD輔助處理器161將接受以及執行任何所接收的SIMD輔助處理器指令。
資料可經由無線界面169被接收以供利用SIMD輔助處理器指令之處理。對於一範例,聲音通訊可以數位信號形式被接收,其可利用SIMD輔助處理器指令被處理以再產生表示聲音通訊之數位音訊樣本。對於另一範例,被壓縮音訊及/或視訊可以數位位元流形式被接收,其可利用SIMD輔助處理器指令被處理以再產生數位音訊樣本及/或移動視訊框。對於處理核心170之一實施例,主要處理器166以及SIMD輔助處理器161被整合於包括一執行單元162、一組暫存器檔案164以及一解碼器165之一單一處理核心170,以依據一實施例辨識包含指令之指令集163的指令。
第2圖是依據本發明一實施例之包含進行指令之邏輯電路的處理器200之微結構方塊圖。於一些實施例中,依據一實施例之指令可被實作以在具有位元組、字組、雙字組、四字組等等的尺度以及資料型式(例如,單一與雙重精確性整數以及浮點資料型式)之資料元素上運算。於一實施例中,有序前端點201是處理器200之部份,其擷取將被執行之指令並且備妥它們以供稍後於處理器管線中被使用。該前端點201可包含許多單元。於一實施例中,指令預擷取器226從記憶體擷取指令並且饋送它們至一指令解碼器228,其接著解碼或詮譯它們。例如,於一實施例中,解碼器將一接收的指令解碼成為機器可執行之一個或多個被 稱為“微指令”或“微操作”(同時也被稱為微op或uop)的操作。於其他實施例中,解碼器剖析該指令成為一操作碼、對應資料以及控制欄,其被微結構所使用以依據一實施例進行操作。於一實施例中,追蹤快取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,位於排程器202、204、206、以及執行區塊211中的執行單元212、214、216、218、220、222、224之間。有一分別的暫存器檔案208、210,分別地供用於整數以及浮點運算。一實施例之各暫存器檔案208、210,同時也包含一旁通網路,其可旁通或傳送剛好被完成而尚未被寫入暫存器檔案的結果至新相依之微操作上。整數暫存器檔案208以及浮點暫存器檔案210也是可與另一者通訊資料。對於一實施例,整數暫存器檔案208被分割成為二個分別的暫存器檔案,一個是供用於低階32位元資料之暫存器檔案以及另一個是用於高階32位元資料的第二暫存器檔案。一實施例之浮點暫存器檔案210具有128位元寬度入口,因為浮點指令一般具有從64至128位元寬度之運算元。
執行區塊211包含執行單元212、214、216、218、220、222、224,其中指令實際地被執行。這部份包含暫存器檔案208、210,其儲存微指令需要執行之整數以及浮點資料運算元數值。一實施例之處理器200是包括一些執行單元:位址產生單元(AGU)212、AGU 214、快速ALU 216、快速ALU 218、慢速ALU 220、浮點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位元整數資料。一實施例之暫存器檔案同時也包含供用於封裝資料之八個多媒體SIMD暫存器。對於下面之討論,暫存器被理解為被設計以保持封裝資料之資料暫存器,例如,在藉由來自美國加州聖克拉拉之英特爾公司之MMX技術被引 動的微處理器中之64位元寬MMXTM暫存器(於一些實例中也被稱為‘mm’暫存器)。這些MMX暫存器,可供用於整數以及浮點兩形式中,可運算於伴隨SIMD以及SSE指令之封裝資料元素。同樣地,關於SSE2、SSE3、SSE4、或以上(通常被稱為“SSEx”)技術之128位元寬XMM暫存器也可被使用以保持此等封裝資料運算元。於一實施例中,在儲存封裝資料以及整數資料中,暫存器不需要在二資料型式之間區別。於一實施例中,整數以及浮點被包含於相同暫存器檔案或不同暫存器檔案中。更進一步地,於一實施例中,浮點以及整數資料可被儲存於不同暫存器或相同暫存器中。
於下面的圖形範例中,一些資料運算元被說明。第3A圖圖解地說明依據本發明一實施例之多媒體暫存器中的各種封裝資料型式表示。第3A圖圖解地說明供用於128位元寬運算元之封裝位元組310、封裝字組320以及封裝雙字組(dword)330之資料型式。這範例之封裝位元組格式310是128位元長並且包含十六個封裝位元組資料元素。此處一位元組被定義作為8資料位元。對於各位元組資料元素之資訊被儲存於位元組0之位元7至位元0中、位元組1之位元15至位元8中、位元組2之位元23至位元16、以及最後是位元組15之位元127至位元120。因此,所有可用的位元被使用於暫存器中。這儲存配置增加處理器之儲存效能。同樣地,藉由十六資料元素之存取,一運算接著可於十六資料元素上平行地被進行。
通常,一資料元素是一分別的資料片段,其與其他相同長度的資料元素被儲存於單一暫存器或記憶體位置中。於關於SSEx技術之封裝資料序列中,被儲存於XMM暫存器中之資料元素數目是128位元被除以一分別資料元素之位元長度。同樣地,於關於MMX以及SSE技術之封裝資料序列中,被儲存於一MMX暫存器中之資料元素數目是64位元除以一分別資料元素位元之長度。雖然於第3A圖中圖解地被說明之資料型式是128位元長,本發明實施例也可依64位元寬度、256位元寬度、512位元寬度或其他尺度的運算元而運算。這範例之封裝字組格式320是128位元長並且包含八個封裝字組資料元素。各封裝字組包含十六個資訊位元。第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暫存器中之不帶符號封裝位元組的儲存。對於各位元組資料元素之資訊被儲存於位元7至位元0中作為位元組0、位元15至位元8中作為位元組1、位元23至位元16中作為位元組2等等,以及最後位元120至位元127中作為位元組15。因此,所有可用的位元被使用於暫存器中。這儲存配置可增加處理器之儲存效能。同樣地,藉由十六資料元素被存取,一運算接著也可以平行形式在十六資料元素上被進行。帶符號封裝位元組表示345圖解地說明一帶符號封裝位元組之儲存。注意到,每一個位元組資料元素的第八位元是符號指示符。不帶符號封裝字組表示346圖解地說明字組7至字組0如何被儲存於SIMD暫存器中。帶符號封裝字組表示347是相似於不帶符號封裝字組暫存器內表示346。注意到,各字組資料元素之第十六位元是符號指示符。不帶符號封裝雙字組表示348展示雙字組資料元素如何被儲存。帶符號封裝雙字組表示349是相似於不帶符號封裝雙字組暫存器內表示348。注意到,必須的符號位元是各雙字組資料元素之第32位元。
第3D圖是操作編碼(操作碼)格式360之實施例的展示,其具有32或更多位元,以及對應至一操作碼格式型式的暫存器/記憶體運算元定址模式,其中該操作碼格式型式被說明於“Intel® 64以及IA-32英特爾結構軟體開發者之手冊組合第2A以及2B冊中:指令集參考A-Z”,其是可從美國加州聖克拉拉英特爾公司之網際網路intel.com/products/processor/manuals/上得到。於一實施例中,並且指令可利用一個或多個欄361以及362被編碼。每個指令之高至二個運算元位置可被辨識,包含高至二個來源運算元識別符364以及365。對於一實施例,目的運算元識別符366是相同於來源運算元識別符364,而於其他實施例中,它們是不同的。對於一不同實施例,目的運算元識別符366是相同於來源運算元識別符365,而於其他實施例中,它們是不同的。於一實施例中,利用來源運算元識別符364以及365被辨識的來源運算元之一者藉由指令結果被重疊寫入,而於其他實施例中,識別符364對應至來源暫存器元素並且識別符365對應至目的地暫存器元素。對於一實施例,運算元識別符364以及365可被使用以辨識32-位元或64-位元來源以及目的運算元。
第3E圖是另一不同的操作編碼(操作碼)格式370之展示圖,該操作編碼格式370具有40或更多位元。操作碼格式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指令,其具有CDP操作碼欄382以及389。CDP指令之型式,對於不同的實施例,操作可藉由一個或多個欄383、384、387、以及388被編碼。每指令之高至三個運算元位置可被辨識,包含高至二個來源運算元識別符385與390以及一個 目的運算元識別符386。輔助處理器之一實施例可於8、16、32、以及64位元數值上運算。對於一實施例,一指令在整數資料元素上被進行。於一些實施例中,一指令可使用條件欄381條件性地被執行。對於一些實施例,來源資料尺度可利用欄383被編碼。於一些實施例中,零(Z)、負(N)、進位(C),和溢位(V)檢測可於SIMD欄上被完成。對於一些指令,飽和型式可利用欄384被編碼。
接著轉至第3G圖,其是依據另一實施例用以提供向量水平式多數決投票功能的另一不同操作編碼(操作碼)格式397的展示圖,該操作碼格式型式對應於“Intel®先進向量延伸程式化參考”中被說明之操作碼格式型式,其是可從美國加州聖克拉拉英特爾公司之網際網路intel.com/products/processor/manuals/上得到。
被提供於1-位元組操作碼而具有各種格式的位址節段以及即時運算元之原始x86指令包含額外位元組,其存在性知曉於第一“操作碼”位元組中。另外地,某些位元組數值被保留作為對於操作碼之修改值(被稱為字首,由於它們必須被安置在指令之前)。當256操作碼位元組之原始獨特色彩(包含這些特殊字首數值)被用盡時,一單一位元組被專用作為脫離至新的256操作碼集合。當向量指令(例如,SIMD)被添加時,需要更多的操作碼被產生,並且即使當經由字首之使用而被擴展時,“2位元組”操作碼映圖也是不足的。為這目的,新的指令被添加在額外的映圖中,其使用2位元組加上一選擇字首作為一識別符。
另外地,為了便利於64-位元模式中的另外暫存器,一另外的字首可被使用(被稱為“REX”)在字首以及操作碼之間(以及決定操作碼所需的任何脫離位元組)。於一實施例中,REX可具有4個"酬載"位元以指示於64-位元模式中之另外暫存器的使用。於其他實施例中,其可具有少於或多於4位元。至少一指令集之一般格式(其對應通常具有格式360及/或格式370者)通常如下所示地被展示:[prefixes][rex]escape[escape2]opcode modrm(etc.)
操作碼格式397對應於操作碼格式370並且包括選擇性VEX字首位元組391(於一實施例中,以C4 hex或C5 hex開始)以取代多數其他通常被使用之遺留指令字首位元組以及脫離數碼。例如,下面說明使用2個欄以編碼一指令的實施例,當第二脫離數碼不出現於原始指令中時,其可以被使用。於下面說明之實施例中,遺留脫離利用一新的脫離數值被表示,遺留字首完全地被壓縮為“酬載”位元組之部份,遺留字首被改過並且可供用於未來之擴展,而且新的特點被添加(例如,增加的向量長度以及一另外來源暫存器指定符)。
當第二脫離數碼呈現於原始指令中時,或當REX欄中之額外位元(例如,XB以及W欄)需要被使用時,在下 面被說明之不同實施例中,第一遺留脫離以及遺留字首相似於上面地被壓縮,並且第二脫離數碼被壓縮在一"映圖"欄中,而具有可用的未來映圖或特點空間,並且再次地,新的特點被添加(例如,增加之向量長度以及一另外的來源暫存器指定符)。
依據一實施例之一指令可藉由一個或多個欄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-位元或較大的(或較小的)向量暫存器之向量水平式多數決投票功能。
提供向量水平式多數決投票功能之指令範例利用下面的範例被說明:
對於涉及元素之數值數目的一完全數值比較之 向量水平式多數決投票指令的一些實施例,當沒有多數決(或較小於k)匹配數值被發現時,一原定行為(例如,導致一套取)可能產生。對於包含一位元式多數決數值之向量水平式多數決投票指令的一些實施例,當未遮罩元素數目是偶數時,一(1)或零(0)之一原定偏移數值可被使用於相等情況中。對於一些實施例,此一偏移數值可能是使用者控制,例如,藉由一指令參數。同樣地,於正好導致元素之一半的數值數目匹配之多數決完全數值比較的情況中,一些實施例可提供一原定行為,例如,返回匹配數值,或導致一套取,或設定一旗標,或返回一原定值(例如,不是一數目,(NaN))等等。雖然用以提供向量水平式多數決投票功能之指令於此處參考一遮罩以及參考未遮罩向量元素,等等被說明,一遮罩以及被遮罩或未遮罩向量元素對於此等指令之一些實施例之實用性不是主要的並且本發明可不需使用此等特點而被實施。同樣地,於一些實施例中,一多數決數值可被傳播至利用指令而不考慮一遮罩被明確指定的目的運算元中之所有目的地元件。另外地,多數決數值可僅被儲存於目的運算元中之一目的地元件或一個也沒。於一些實施例中,多數決元件計數也可被儲存於目的運算元件中,或以不同方式被報告至使用者,例如,為一遮罩。向量水平式多數決投票指令之一些實施例也可提供被明確指定的一尺度,例如,藉由一即時參數,或被編碼成為指令操作碼。於一些實施例中,該尺度也可被明確指定以包含複數個資料元素,例如,128位元,其中一向量水平式多數 決投票指令可被進行,例如,於512-位元向量上以提供,例如,遺留向量演算法上之故障檢測及/或修改,例如,遺留SSE數碼。
第4A圖是依據本發明至少一實施例圖解地說明一有序管線以及一暫存器換名級、無序發行/執行管線之方塊圖。第4B圖是依據本發明至少一實施例圖解說明被包含於處理器中之一有序結構核心以及暫存器換名邏輯、無序發行/執行邏輯之方塊圖。第4A圖中之實線區塊圖解地說明有序管線,而虛線區塊圖解地說明暫存器換名、無序發行/執行管線。同樣地,第4B圖中之實線區塊圖解地說明有序結構邏輯,而虛線區塊圖解地說明暫存器換名邏輯以及無序發行/執行邏輯。
於第4A圖中,一處理器管線400包含一擷取級402、一長度解碼級404、一解碼級406、一分配級408、一換名級410、一排程(同時也習知為一派遣或發行)級412、一暫存器讀取/記憶體讀取級414、一執行級416、一回寫/記憶體寫入級418、一例外處理級422以及一提交級424。
第4B圖中,箭號表示在二個或更多個單元之間的耦合並且箭號方向指示在那些單元之間的資料流程方向。第4B圖展示之處理器核心490包含被耦合至一執行引擎單元450的前端點單元430,且兩者耦合至記憶體單元470。
該核心490可以是一簡化指令集計算(RISC)核心、一複雜指令集計算(CISC)核心、一非常長指令字組(VLIW)核心或一混合或另外的核心型式。然而如另一選 擇,例如,核心490可以是一特殊用途核心,例如,網路或通訊核心、壓縮引擎、圖形核心或其類似者。
前端點單元430包含耦合至指令快取單元434之一分支預測單元432,其被耦合至一指令轉發後備緩衝器(TLB)436,其被耦合至一指令擷取單元438,其被耦合至一解碼單元440。解碼單元或解碼器可解碼指令,並且產生如一個或多個微操作、微指令碼入口點、微指令、其他指令或其他控制信號之輸出,其自原始指令被解碼,或其以不同方式反映原始指令,或自原始指令被導出。解碼器可使用各種不同機構被實作。適當機構之範例包含,但是不限定於,查詢表、硬體實作、可程控邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等等。指令快取單元434進一步耦合至記憶體單元470中之一位準2(L2)快取單元476。解碼單元440被耦合至執行引擎單元450中之一換名/分配器單元452。
執行引擎單元450包含耦合至退役單元454之換名/分配器單元452以及一組之一個或多個排程器單元456。排程器單元456代表任何數目的不同排程器,其包含保留站、中央指令窗口,等等。排程器單元456耦合至實體暫存器檔案單元458。各個實體暫存器檔案單元458代表一個或多個實體暫存器檔案,其不同的一者儲存一個或多個不同資料型式(例如,純量整數、純量浮動點、封裝整數、封裝浮動點、向量整數、向量浮動點等等),及狀態(例如,一指令指示器,其是將被執行的下一個指令之位址)等等。該實體暫存器檔案單元458與退役單元454重疊以圖解地說 明各種方式,於其中暫存器換名以及無序執行可被實作(例如,使用一重新排序緩衝器以及退役暫存器檔案,使用一未來性檔案、一歷史緩衝器以及一退役暫存器檔案;使用一暫存器映圖以及一暫存器池;等等)。通常,建構暫存器是從處理器外面或自一程式規劃者之觀點可見的。暫存器是不限定於任何習知的特定型式的電路。各種不同型式的暫存器,只要它們是可如此處所說明地儲存以及提供資料則是適當的。適當暫存器的範例包含,但是不限定於,專用實體暫存器、使用暫存器換名之動態分配實體暫存器、專用以及動態分配實體暫存器之組合,等等。該退役單元454以及實體暫存器檔案單元458耦合至執行群集460。執行群集460包含一組之一個或多個執行單元462以及一組的一個或多個記憶體存取單元464。執行單元462可進行各種運算(例如,移位、加法、減法、乘法)並且在各種資料型式之上(例如,純量浮動點、封裝整數、封裝浮動點、向量整數、向量浮動點)。雖然一些實施例可包含專用於特定功能或功能組之一些執行單元,其他實施例也僅可包含全進行所有功能之一執行單元或複數個執行單元。排程器單元456、實體暫存器檔案單元458以及執行群集460被展示為可能是多數的,因為某些實施例產生分別的管線供用於某些型式之資料/運算(例如,純量整數管線、純量浮動點/封裝整數/封裝浮動點/向量整數/向量浮動點管線、及/或各具有它們獨有的排程器單元之記憶體存取管線、實體暫存器檔案單元、及/或執行群集,並且於一分別之記憶體存取管線的此 情況中,某些實施例被實作,於其中僅這管線的執行群集具有記憶體存取單元464)。同時也應了解,其中分別的管線被使用者,一個或多個這些管線可以是無序發行/執行以及其餘的則是有序者。
記憶體存取單元464集合被耦合至記憶體單元470,其包含耦合至一資料快取單元474(其耦合至一位準2(L2)之快取單元476)的一資料TLB單元472。於一實施範例中,記憶體存取單元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))。
應了解,核心可支援多線程(執行二個或更多個操作或線程之平行集合),並且可因此以多種方式進行,該等多種方式包含分時多線程、同步多線程(其中一單一實體核心提供一邏輯核心以供用於同步多線程之各個線程實體核心),或其之組合(例如,分時擷取與解碼以及隨後的同步多線程,例如,以Intel®超線程技術)。
雖然暫存器換名於無序執行脈絡中被說明,應了解,暫存器換名可被使用於有序結構中。雖然被說明之處理器實施例也包含一分別指令以及資料快取單元434/474與一共用L2快取單元476,不同實施例也可以,例如,具有供用於指令以及資料兩者之一單一內部快取,例如,位準1(L1)內部快取,或複數個位準之內部快取。於一些實施例中,系統可包含一內部快取以及於核心及/或處理器外部之一外部快取的組合。另外地,所有的快取可以是在核心及/或處理器之外部。
第5圖是依據本發明實施例之一單一核心處理器以及具有整合記憶體控制器與圖形的一多核心處理器500之方塊圖。第5圖中之實線方塊展示一處理器500,該處理器500具有單一核心502A、一系統媒介510、一組之一個或多個匯流排控制器單元516,而選擇性添加的虛線方塊展示一不同的處理器500,該處理器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可以是能夠執行相同指令集,而其他的則可以是僅能夠執行指令集之一子集或一不同的指令集。
處理器可以是一般用途處理器,例如,一CoreTMi3、i5、i7、2之二重組以及四重組、ItaniumTM、XScaleTM或StrongARMTM處理器,其等是可得自美國加州聖克拉拉 英特爾公司。另外地,處理器可以是來自另一公司,例如,ARM持股公司,MIPS等等。處理器可以是,例如,特殊用途處理器,例如,一網路或通訊處理器、壓縮引擎、圖形處理器、共同處理器、嵌入式處理器或其類似者。處理器可被實作在一個或多個晶片上。處理器500可以是一個或多個基片之一部份及/或可被實作在一個或多個基片上,例如,使用任何一些處理技術,例如,BiCMOS、CMOS、或NMOS。
第6-8圖是適用於包含處理器500的系統範例,而第9圖是可包含一個或多個核心502之系統單晶片(SoC)的範例。供用於膝上型電腦、桌上型電腦、手持個人電腦、個人數位助理、工程工作站、伺服器、網路裝置、網路中樞、交換機、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、手機、輕便媒體播放機、手持裝置、以及各種其他電子式裝置之習知技術的其他系統設計以及組態也是適合的。大體上,可包含如此處揭示之處理器及/或其他執行邏輯之非常多種系統或電子式裝置通常也是適合的。
接著參看至第6圖,其所展示的是依據本發明一實施例之系統600的方塊圖。系統600可包含一個或多個處理器610、615,其耦合至圖形記憶體控制器中樞(GMCH)620。另外處理器615的選擇性質是第6圖中以虛線表示者。
各個處理器610、615可以是處理器500的一些形 式。但是,應注意到,其不太可能是將整合圖形邏輯以及整合記憶體控制單元存在於處理器610、615中。第6圖說明可耦合至記憶體640之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。各個處理器770以及780可以是如一個或多個處理器610、615之處理器500的一些形式。
雖然僅以二個處理器770、780被展示,應了解,本發明之範疇是不因此受限定。於其他實施例中,一個或多個另外的處理器可出現於一所給的處理器中。
處理器770以及780被展示而分別地包含整合記憶體控制器單元772以及782。處理器770也包含點對點(P-P)界面776以及778作為其之匯流排控制器單元之部份;同樣地,第二處理器780包含P-P界面786以及788。處理器770、780可使用P-P界面電路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可包含整合記憶體控制器單元,例如,如上面配合第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持股公司所發展之CortexTM家族處理器以及中國科技學院電腦技術(ICT)大學所發展的Loongson IP核心可被特許或被出售至各種顧客或獲得許可者,例如,美國德州儀器公司、高通公司(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圖展示高階語言1302之一程式,其可使用一x86編譯器1304被編譯以產生x86二進制數碼1306,該x86二進制數碼1306可自然地藉由具有至少一個x86指令集核心1316之處理器而被執行。具有至少一個x86指令集核心1316之處理器代表可實值進行具有至少一個x86指令集核心之一英特爾處理器之相同功能之任何處理器,其相容地執行或以不同方式處理(1)英特爾x86指令集核心之指令集的一主要部份,或(2)應用或其他軟體之目的碼版本,而在具有至少一個x86指令集核心之一英特爾處理器上進行,以便實質地達成如具有至少一個x86指令集核心之一英特爾處理器的相同結果。該x86編譯器1304代表可操作以產生x86二進制數碼1306(例如,目的碼)之一編譯器,該x86二進制數碼1306可具有或不具有另外的連結處理,而被執行於具有至少一個x86指令集核心1316之處理器上。同樣地,第13圖展示高階語言1302之程式,其可使用一不同的指令集編譯器1308被編譯以產生不同的指令集二進制數碼1310,該指令集二進制數碼1310可藉由不具有至少一個x86指令集核心1314之處理器自然地被執行(例如,一處理器,其具有核心可執行美國加州森尼維耳市之MIPS技術的MIPS指令集及/或執行美國加州森尼維耳市ARM持股公司之ARM指令集)。指令轉換器1312被使用以轉換該x86二進制數碼1306成為可藉由不具有一x86指令集核心1314之處理器自然地被執行的一數碼。這轉換的數碼是不太可能相同於另外的指令集二進制數碼1310,因為這 樣一指令轉換器可能是不容易構成;但是,該轉換之數碼將達成一般操作並且可自不同指令集的指令被構成。因此,該指令轉換器1312代表軟體、韌體、硬體、或其組合,其經由仿效、模擬或任何其他處理程序,而允許一處理器或其他不具有一x86指令集處理器或核心的電子式裝置執行該x86二進制數碼1306。
第14A圖是展示提供向量水平式多數決投票功能之裝置1401的實施例。如果輸入之多數決是等於一(1),則一多數決功能(同時也被稱為媒體運算器)計算一個1(1),並且如果輸入之多數決是等於零(0)則計算一個零(0)。當輸入之一半或更多是假性(零)時,該運算之原定數值可能是假性(零),但是於相等情況中,運算也可藉由朝向真性(1)之一偏移值被界定。對於三個輸入,x、y以及z,三個的多數決功能(3-MAJ)可使用布爾(Boolean)邏輯結合以及分離被表示如下:xy+yz+zx。
對於四個輸入,w、x、y以及z,具有朝向假性(零)之一偏移值的4-輸入多數決函數(4-MAJ)可使用布爾邏輯結合以及分離被表示如下:xyz+wyz+wxz+wxy。
於一實施例中,裝置1401邏輯可使用此4-輸入多數決功能邏輯,4-MAJ 1425以及一部份排序網路1410被實作,以進行八個輸入之一多數決功能。部份的排序網路1410將低數值(零)排序至左方並且將高數值(1)排序至右方。應 了解,數值不需要完全地被分類以提供輸入至4-輸入多數決功能邏輯,4-MAJ 1425。如果四個中間信號之至少三者攜帶高數值(1)的話,則該4-輸入多數決功能邏輯,4-MAJ 1425,可在輸出1405產生一高數值(1)作為一輸出信號。選擇性地,一偏移數值,B,可被使用,例如,作為至部份的排序網路1415之一輸入1420,以提供具有對於一(當B=1時)或對於零(當B=0時)之一可選擇偏移值的8-輸入多數決功能。另外地,5-輸入多數決功能邏輯可被使用於具有輸入之一者連結於可選擇的偏移數值B的情況。
應了解,各種尺度之多數決功能1425以及部份的排序網路1410可被使用。進一步地,藉由迫使一高數值(1)經由多工器1460作為至部份排序網路1410以及4-MAJ 1425之一輸入,則裝置1401邏輯可被簡化以進行7個輸入之一多數決功能。另外地,接著藉由迫使一低數值(零)經由多工器1455作為至部份的排序網路1410以及4-MAJ 1425之一輸入,則裝置1401邏輯可被簡化以進行六個輸入之一多數決功能。
因此應了解,例如,裝置1401邏輯可由於選擇地使用一高數值(以及一低數值)被簡化以進行:當所有的引動信號E2-帶條至E8-帶條被確定(低位)以分別地控制多工器1430至1460時,八個輸入之一多數決功能;當僅引動信號E2-帶條至E7-帶條被確定(低位)以分別地控制多工器1430至1455時,七個輸入之一多數決功能;當僅引動信號,E2-帶條至E6-帶條被確定(低位)以分別地控制多工器1430至 1450時,六個輸入之一多數決功能;當僅引動信號E2-帶條至E5-帶條被確定(低位)以分別地控制多工器1430至1445時,5個輸入之一多數決功能;當僅引動信號E2-帶條至E4-帶條被確定(低位)以分別地控制多工器1430至1440時,四個輸入之一多數決功能;當僅引動信號E2-帶條以及E3-帶條被確定(低位)以分別地控制多工器1430以及1435時,三個輸入之一多數決功能;當僅引動信號E2-帶條被確定(低位)以控制多工器1430時,則二個輸入之一多數決功能;並且當沒有引動信號被確定(低位)以控制任何多工器時,一個輸入之一多數決功能,並且除了一輸入(數碼1)外是藉由選擇地使用一高數值以及一低數值而有效地不被引動。同時也應了解,相似技術可被使用以構成或實作任何預定及/或選擇所需的輸入數目之一多數決功能邏輯。
同時也應了解,因為當八個輸入之至少五個是1時,8-輸入多數決功能裝置1401邏輯通常將產生一個1,裝置1401邏輯也可能被簡化以經由多工器1460藉由迫使第八個輸入為零(非所展示之1)而進行7個輸入之一個5-路的多數決。同樣地,藉由擴展排序網路1410以處理另外的輸入,例如,裝置1401邏輯可被延伸至12個輸入信號,其將提供用以在八個輸入上進行高至7路多數決之k路多數決能力。
第14B圖展示提供向量水平式多數決投票功能之裝置1402的一不同實施例。裝置1402包括比較邏輯1403以比較輸入元素1-8之數值之相等性。對於一些實施例,元素1-8可以是供用於相等性比較之位元組、字組、雙字組、 單-精確性浮動-點數值、雙精確性浮動-點數值或任何其他的資料型式。應了解,於一些實施例中,此等用於相等性之比較可藉由較少於所展示之相等性比較數目以及無關於元素資料型式而被完成。
比較邏輯1403之相等性比較後,對於對應的相等性比較之真性(例如,1)或假性(例如,零)數值被提供為一輸入而至多數決功能邏輯,8-MAJ1 1470、8-MAJ2 1475、...8-MAJ77 1480以及8-MAJ8 1485。應了解,多數決功能邏輯8-MAJ1 1470、8-MAJ2 1475、...8-MAJ7 1480以及8-MAJ8 1485之一些實施例可包括相似於裝置1401邏輯之多數決功能邏輯。多數決功能邏輯8-MAJ1 1470、8-MAJ2 1475、...8-MAJ7 1480以及8-MAJ8 1485之分別的輸出M1、M2、...M7、以及M8可被使用以決定輸入元素1-8之那個數值將匹配輸入元素1-8之多數決中。同時也應了解,如果一k-路多數決是所需的,則條件可容易地從輸出M1、M2、...M7、以及M8之數目被決定,其是真性(例如,1)。因此裝置1402可使用輸入元件數值之全部數值比較而提供向量水平式多數決投票功能。
第15圖展示對於用以提供向量水平式多數決投票功能之處理程序1501實施例的流程圖。此處揭示之處理程序1501以及其他處理程序,藉由處理方塊而被進行,其可包括利用一般用途機器或利用特殊用途機器或利用二者之組合而可執行的專用硬體或軟體或韌體操作數碼。
於處理程序1501之處理方塊1510中,用以提供向 量水平式多數決投票功能之一指令的執行開始。於處理方塊1520中,位元位置被啟始化至零(0)以供用於第一位元式多數決投票。應了解,雖然程序1501被展示為反覆的(亦即,每一次一個位元位置),當可能時,許多操作可更佳而平行地被進行。於處理方塊1530中,對於越過利用指令被明確指定的來源運算元中之所有未遮罩來源元件之目前位元位置,對於一位元式多數決之數值M被計算。於一些實施例中,當對於越過所有未遮罩來源元件之目前位元位置的一半或更多輸入是零(0)時,這操作之數值M可能是零(0),但是於一些其他實施例中,於相等情況中,操作也可藉由一(1)之偏移值被界定。於處理方塊1560中,對於位元式多數決之被計算的數值M,被儲存於利用指令被明確指定之目的運算元中所有未遮罩目的地元件之目前位元位置。於處理方塊1570中,目前位元位置被增量以開始下一個位元式多數決計算。接著,於處理方塊1580中,目前位元位置之數值對照於利用指令被明確指定的元件尺度被檢查,以決定是否所有位元位置已被完成。如果否,則開始於處理方塊1530中之處理程序反覆做,直至對於利用指令被明確指定的尺度之元件的所有位元位置之一位元式多數決計算已被完成為止。
此外,當目前位元位置達到利用指令被明確指定的元件尺度時,則處理程序自處理方塊1580前進至處理方塊1590,其中用以提供向量水平式多數決投票功能之一指令的執行結束。
應了解,於一些實施例中,於相等情況中接近零(0)或一(1)之一偏移值可被預先決定及/或接線決定,例如,於一裝置中,如上所述之裝置1401邏輯,但是於一些其他實施例中,此一偏移值可以可程規化地被選擇,例如,作為一指令型式或一指令參數。
第16圖展示用以提供向量水平式多數決投票功能之處理程序1601的另一實施例之流程圖。於處理程序1601之處理方塊1610中,用以提供向量水平式多數決投票功能的一指令之執行開始。於處理方塊1615中,多數決數值K被決定。於一些實施例中,K數值可被決定作為未遮罩來源元件的數目之一函數,例如,作為利用未遮罩來源元件之媒體數值所佔據的位置數量。於一些其他實施例中,K可以是可程規地被選擇,例如,作為一指令參數,而將至少是未遮罩來源元素的一半數目。於處理方塊1620中,位元位置被啟始化至零(0)以供用於第一位元式多數決投票。於處理方塊1630中,於目前位元位置中那些被設定為等於一(1)以及被設定為等於零(0)的數值之數目的一計數,其跨越利用指令被明確指定的來源運算元中之所有未遮罩來源元素。接著,於處理方塊1635中,零(0)計數被比較至多數決數值K,以查看其是否至少如K一般地大。如果是,則於處理方塊1640中,對於一位元式多數決之數值M被設定為等於零(0)。此外,於處理方塊1645中,一(1)計數被比較至多數決數值K,以查看其是否至少如K一般地大。如果是,則於處理方塊1650中,對於M之數值被設定為等於一(1)。 否則,於處理方塊1655中,一套取被採用。
如果至少K個零或至少K個1的多數決被發現,則處理程序前進至處理方塊1660,其中對於位元式多數決之數值M,被儲存於利用指令被明確指定的目的運算元之目前位元位置中。於一些實施例中,位元式多數決M,被儲存於目的運算元中所有未遮罩之目的地元件的目前位元位置中。於處理方塊1670中,目前位元位置被增量以開始下一個位元式多數決計算。接著,於處理方塊1680中,目前位元位置之數值對照於利用指令被明確指定的元件尺度而被檢查,以決定所有位元位置是否已被完成。如果否,則開始於處理方塊1630中之處理程序反覆做,直至一位元式多數決計算對於利用指令被明確指定的尺度之所有元件之位元位置被完成為止。
當目前位元位置達到利用指令被明確指定的元件尺度時,處理自處理方塊1680前進至處理方塊1690,其中用以提供向量水平式多數決投票功能之一指令的執行結束。
再次,雖然處理程序1601被說明為反覆的,當可能時,許多操作可平行地被進行。
第17圖是圖解說明用以提供向量水平式多數決投票功能之另一實施例的處理程序1701之流程圖。於處理程序1701之處理方塊1710中,用以提供向量水平式多數決投票功能之指令的執行開始。於處理方塊1715中,一多數決數值K被決定。如上所述,於一些實施例中,K數值可作 為未遮罩來源元素數目之一函數被決定,或於一些其他實施例中,K是可程規地被選擇,例如,作為一指令參數,而將至少是未遮罩來源元素數目的一半,以便計算至少一K-路多數決功能。於處理方塊1720中,一套取旗標被啟始化至一(1),一最大的多數決元素計數,ME,被啟始化至一(1),並且一多數決數值,MV,被啟始化至零(0)以供用於該多數決投票。於處理方塊1725中,下一個未遮罩來源元素之數值被讀取進入一變量V。應了解,雖然處理程序1701圖解地被說明為反覆的,當可能時,其可最好平行地進行許多操作。於處理方塊1730中,那些元件數值等於V之元件數目E的一計數,跨越利用指令被明確指定的來源運算元中之所有未遮罩來源元素而被進行。接著,於處理方塊1735中,計數E,被比較至最大的多數決元素計數,ME,以查看E是否較大於ME。如果是,對於最大多數決元素計數之數值,ME,被設定為等於處理方塊1740中之計數E,並且於處理方塊1745中,多數決數值MV,被設定為等於目前元件數值V。否則,處理程序簡單地前進處理方塊1750,其中計數E,被比較至多數決數值K,以查看E是否是至少如K一般地大。如果是,則於處理方塊1755中,套取旗標被設定為零(0)以指示一實際之多數決數值已被發現。處理程序接著前進至處理方塊1760,其中一檢查被進行以決定是否所有未遮罩來源元素已被讀取並且處理程序已達到遮罩終點。如果否,則開始於處理方塊1730中之處理程序反覆進行,直至對於利用指令被明確指定的來源運算元中之所有 未遮罩來源元素的一多數決數值計算被完成為止。
否則,處理程序前進至處理方塊1770,其中套取旗標被檢查以查看是否已被設定為零(0),以指示一實際之多數決數值已被發現。如果否,則於處理方塊1775中,一套取被採用。
否則,處理程序前進至處理方塊1780,其中對於多數決數值,MV之數值,被儲存至利用指令被明確指定之目的運算元中的所有未遮罩目的地元件。接著處理程序自處理方塊1780前進至處理方塊1790,其中用以提供向量水平式多數決投票功能之一指令的執行結束。
應了解,於處理程序1701中,以及於其他處理程序中,例如,處理程序1501以及處理程序1601,雖然用以提供向量水平式多數決投票功能之指令的執行被說明,其他步驟或級也可能發生,例如,管線400之一個或多個級402-414及/或級418-424,以便完全地便利,或回應於指令以提供向量水平式多數決投票功能。雖然用以提供向量水平式多數決投票功能之指令已在上面參考遮罩以及未遮罩向量元素被說明,對於此等指令之一些實施例的實用性,一遮罩以及被遮罩或未遮罩向量元素不是主要的,並且本發明可被實施而不必使用此等特點。同樣地,於一些實施例中,多數決數值,MV,可不考慮一遮罩,而被儲存於利用指令被明確指定之目的運算元中的所有目的地元件。另外地,多數決數值,MV,可僅被儲存於目的運算元中之目的地元件上,或不儲存。於一些實施例中,最大多數決元 件計數,ME,也可被儲存於目的運算元中,或另外被報告至使用者,例如,作為一遮罩。
同時也應了解,支援向量水平式多數決投票功能的一些實施例,不主要地增加實作成本,可以提供於高生產量處理器中之故障容限及/或故障檢測特點。於其中故障容限是電腦系統高度地所需特點的極端環境中,具有向量水平式多數決投票功能之商用處理器可提供故障容限及/或故障檢測,而具高階整合之優點,其是較小且較輕的,且比其他不同者,例如,FPGA技術,具有較佳的功率效能。此等特點是逐漸地有需求,因為由於α粒子以及其他的因數使得減低尺度並且增加封裝中之電晶體數目將增加故障之可能性。
此處揭示之機構實施例可以硬體、軟體、韌體、或此等實作方法之組合被實作。本發明實施例可被實作為在可程控系統上執行之電腦程式或程式碼,該可程控系統包括至少一處理器、一儲存系統(包含依電性以及非依電性記憶體及/或儲存元件)、至少一輸入裝置以及至少一輸出裝置。
程式碼可被應用至輸入指令以進行此處所說明之功能並且產生輸出資訊。該輸出資訊可以習知的形式被應用至一個或多個輸出裝置。為這應用目的,一處理系統包含,例如,具有一處理器之任何系統,例如,一數位信號處理器(DSP)、一微控制器、一特定應用積體電路(ASIC)、或一微處理機。
該程式碼可以被實作為一高階程序或目的導向之程式語言,以通訊於一處理系統。如果需要的話,該程式碼也可以被實作為組合或機器語言。實際上,此處所說明之機構是不限定於任何特定程式語言的範疇中。於任何情況中,該語言可以是一編譯或詮譯語言。
至少一實施例之一個或多個觀點可利用被儲存於機器可讀取媒體上之代表在處理器內之各種邏輯的表示指令被實作,該等指令當利用一機器讀取時,導致該機器製造邏輯以進行此處所說明之技術。此等表示,習知為“IP核心”,可被儲存於一有形的機器可讀取媒體上並且被供應至各種顧客或製造設施以裝載進入實際上構成邏輯或處理器之製造機器。
此類機器可讀取儲存媒體可包含,但不限定於,利用一機器或裝置被製造或被形成的物件之非暫態、有形的配置,而包含儲存媒體,例如,硬碟、任何其他型式的碟片,如包含軟式磁碟片、光碟、小型碟片唯讀記憶體(CD-ROM)、可重寫之小型碟片(CD-RW)以及磁-光碟片、半導體裝置,例如,唯讀記憶體(ROM)、隨機存取記憶體(RAM),例如,動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可消除可程控唯讀記憶體(EPROM)、快閃記憶體、電氣地可消除可程控唯讀記憶體(EEPROM)、磁式或光學卡、或任何適用於儲存電子式指令之其他型式的媒體。
因此,本發明實施例同時也包含非暫態、有形的 機器可讀取媒體,其包含指令或包含設計資料,例如,硬體描述語言(HDL),其界定此處所說明之結構、電路、裝置、處理器及/或系統特點。此等實施例也可被稱為程式產品。
於一些情況中,一指令轉換器可被使用以將一指令自一來源指令集轉換至一目標指令集。例如,該指令轉換器可轉譯(例如,使用靜態二進制轉譯、包含動態編輯之動態二進制轉譯)、變形、模擬或其他以不同的方式轉換一指令至一個或多個將利用核心被處理的其他指令。指令轉換器可以軟體、硬體、韌體或其組合被實作。該指令轉換器可以是在處理器上、在處理器外、或部份在處理器上以及部份在處理器外。
因此,依據至少一實施例用以進行一個或多個指令之技術被揭示。雖然某些實施範例已被說明並且被展示於附圖中,應了解,此等實施例僅僅是說明用途並且不廣義地限定本發明,並且熟習本技術者應明白,本發明是不受限定於被展示以及被說明之特定構造以及配置,因為當研究本揭示時,各種其他修改是可發生的。例如,於這技術領域中,其發展是快速並且進一步的進展是不容易預知的,所揭示實施例之配置以及細節中,由於藉由引動技術進展而便利於容易地修改而不脫離本揭示之原理或附加申請專利範圍之範疇。

Claims (21)

  1. 一種處理器,其包含:一向量暫存器,其包含用以儲存向量元素的數值之複數個資料欄;一解碼級,其用以解碼一第一指令,該第一指令明確指定:一目的運算元、該等向量元素之一尺度、該等複數個資料欄之一部份、及一來源運算元;以及一執行單元,其回應於該解碼的第一指令,用以:自該來源運算元中的第二資料欄讀取一些該等向量元素之該尺度之數值,該等第二資料欄對應至該等複數個資料欄之該部分;以及儲存一結果數值於藉由該第一指令所明確指定之該目的運算元中,其中該結果數值是從讀取自該來源運算元的該等第二資料欄之該些數值之最常見數值而被計算。
  2. 如請求項1之處理器,其中該執行單元,回應於該解碼的第一指令,用以將該結果數值儲存至藉由該第一指令所明確指定之該目的運算元中的對應第三資料欄。
  3. 如請求項1之處理器,其中該第一指令明確指定辨識該等複數個資料欄的該部份之一遮罩,且其中讀取自該來源運算元之該等第二資料欄的該些數值,對應至未藉由該第一指令所明確指定的遮罩所遮罩之該來源運算元中的向量元素。
  4. 如請求項3之處理器,其中該結果數值是從讀取自該來源運算元之該等未遮罩向量元素之該等第二資料欄的該等數值而被計算,以作為一位元式多數決數值。
  5. 如請求項3之處理器,其中該結果數值是從讀取自該來源運算元之該等未遮罩向量元素之該等第二資料欄的該等數值中的至少k個數值而被計算,以作為一位元式多數決數值,且其中k是藉由該第一指令被明確指定。
  6. 如請求項3之處理器,其中該結果數值是從讀取自該來源運算元之該等未遮罩向量元素之該等第二資料欄的該等數值的匹配數值而被計算,以作為一多數決數值。
  7. 如請求項3之處理器,其中該結果數值是從讀取自該來源運算元之該等未遮罩向量元素之該等第二資料欄的該等數值中的至少k個匹配數值而被計算,以作為一多數決數值,且其中k是藉由該第一指令被明確指定。
  8. 如請求項1之處理器,其中該結果數值是從讀取自該來源運算元之該等第二資料欄的該等數值而被計算,以作為一位元式多數決數值。
  9. 如請求項8之處理器,其中該位元式多數決數值於相等情況下具有為一或零之一偏移值。
  10. 如請求項9之處理器,其中該位元式多數決數值是可組態以於該相等情況下具有為一或零之該偏移值。
  11. 一種非暫態機器可讀取媒體,其具有一第一可執行指令儲存其中,當該等指令藉由一機器執行時,導致該機器用以:於藉由該第一可執行指令所明確指定的一來源運算元中之複數個資料欄之一部份讀取一些數值,其中該等複數個資料欄儲存遮罩及未遮罩向量元素之數值,且其中該些數值的數目對應至依據藉由該第一可執行指令所明確指定的一遮罩之該等未遮罩向量元素的相同數目;計算一結果數值以代表讀取自該來源運算元中之該等複數個資料欄之該部分的該些數值之一多數決;以及儲存該結果數值於藉由該第一可執行指令所明確指定之一目的運算元中。
  12. 如請求項11之非暫態機器可讀取媒體,其中儲存該結果數值於該目的運算元中,包含儲存該結果數值至藉由該第一可執行指令所明確指定的該目的運算元中之對應的資料欄。
  13. 如請求項11之非暫態機器可讀取媒體,其中該結果數值是從讀取自該來源運算元之該等未遮罩向量元素之該等資料欄的該等數值而被計算,以作為一位元式多數決數值。
  14. 如請求項11之非暫態機器可讀取媒體,其中該結果數值是從讀取自該來源運算元之該等未遮罩向量元素之該等資料欄的該等數值中的至少k個數值而被計算,以作為一位元式多數決數值,且其中k是藉由該第一可執行指令被明確指定。
  15. 如請求項11之非暫態機器可讀取媒體,其中該結果數值是從讀取自該來源運算元之該等未遮罩向量元素之該等資料欄的該等數值的匹配數值而被計算,以作為一多數決數值。
  16. 如請求項15之非暫態機器可讀取媒體,其中該結果數值是從讀取自該來源運算元之該等未遮罩向量元素之該等資料欄的該等數值中的至少k個匹配數值而被計算,以作為一多數決數值,且其中k是藉由該第一可執行指令被明確指定。
  17. 如請求項11之非暫態機器可讀取媒體,其中該結果數值是從讀取自該來源運算元之該等資料欄的該等數值而被計算,以作為一位元式多數決數值。
  18. 如請求項17之非暫態機器可讀取媒體,其中該位元式多數決數值於相等情況下具有為一或零之一偏移值。
  19. 如請求項18之非暫態機器可讀取媒體,其中該位元式多數決數值是可組態以於該相等情況下具有為一或零之該偏移值。
  20. 一種處理系統,其包含:一記憶體;以及複數個處理器,其中該等複數個處理器之每一者包含:一向量暫存器,其包含用以儲存向量元素的數值之複數個資料欄;一解碼級,其用以解碼一第一指令,該第一指令明確指定:一目的運算元、該等向量元素之一尺度、該等複數個資料欄之一部份、及一來源運算元;以及一執行單元,其回應於該解碼的第一指令,用以:自該來源運算元中的第二資料欄讀取一些該等向量元素之該尺度之數值,該等第二資料欄對應至該等複數個資料欄之該部分;以及儲存一結果數值於藉由該第一指令所明確指定之該目的運算元中,其中該結果數值是從讀取自該來源運算元的該等第二資料欄之該些數值之最常見數值而被計算。
  21. 一種用以執行一運算操作之方法,其包含:於藉由一第一可執行指令所明確指定的一來源運算元中之複數個資料欄之一部份讀取一些數值,其中該等資料欄儲存遮罩及未遮罩向量元素之數值,且其中該些數值的數目對應至依據藉由該第一可執行指令所明確指定的一遮罩之該等未遮罩向量元素的相同數目;計算一結果數值以代表所讀取之該些數值之一多數決;以及儲存該結果數值於藉由該第一可執行指令所明確指定之一目的運算元中。
TW105130334A 2011-11-30 2012-11-16 用以提供向量水平式多數決投票功能之指令與邏輯(二) TWI659356B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
??PCT/US11/62487 2011-11-30
PCT/US2011/062487 WO2013081587A1 (en) 2011-11-30 2011-11-30 Instruction and logic to provide vector horizontal majority voting functionality

Publications (2)

Publication Number Publication Date
TW201704989A TW201704989A (zh) 2017-02-01
TWI659356B true TWI659356B (zh) 2019-05-11

Family

ID=48535886

Family Applications (2)

Application Number Title Priority Date Filing Date
TW105130334A TWI659356B (zh) 2011-11-30 2012-11-16 用以提供向量水平式多數決投票功能之指令與邏輯(二)
TW101142822A TWI562060B (en) 2011-11-30 2012-11-16 Instruction and logic to provide vector horizontal majority voting functionality

Family Applications After (1)

Application Number Title Priority Date Filing Date
TW101142822A TWI562060B (en) 2011-11-30 2012-11-16 Instruction and logic to provide vector horizontal majority voting functionality

Country Status (4)

Country Link
US (2) US9448794B2 (zh)
CN (2) CN106502624B (zh)
TW (2) TWI659356B (zh)
WO (1) WO2013081587A1 (zh)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013081587A1 (en) * 2011-11-30 2013-06-06 Intel Corporation Instruction and logic to provide vector horizontal majority voting functionality
US20140095845A1 (en) * 2012-09-28 2014-04-03 Vinodh Gopal Apparatus and method for efficiently executing boolean functions
US9372692B2 (en) * 2012-12-29 2016-06-21 Intel Corporation Methods, apparatus, instructions, and logic to provide permute controls with leading zero count functionality
US9778932B2 (en) 2013-01-23 2017-10-03 International Business Machines Corporation Vector generate mask instruction
US9823924B2 (en) 2013-01-23 2017-11-21 International Business Machines Corporation Vector element rotate and insert under mask instruction
US9471308B2 (en) * 2013-01-23 2016-10-18 International Business Machines Corporation Vector floating point test data class immediate instruction
US9715385B2 (en) 2013-01-23 2017-07-25 International Business Machines Corporation Vector exception code
US9513906B2 (en) 2013-01-23 2016-12-06 International Business Machines Corporation Vector checksum instruction
US9804840B2 (en) 2013-01-23 2017-10-31 International Business Machines Corporation Vector Galois Field Multiply Sum and Accumulate instruction
US20160179523A1 (en) * 2014-12-23 2016-06-23 Intel Corporation Apparatus and method for vector broadcast and xorand logical instruction
US9875213B2 (en) * 2015-06-26 2018-01-23 Intel Corporation Methods, apparatus, instructions and logic to provide vector packed histogram functionality
KR20170131797A (ko) * 2016-05-20 2017-11-30 삼성전자주식회사 메모리 모듈, 그것을 포함하는 컴퓨팅 시스템, 및 그것의 태그 에러 테스트 방법
US10248422B2 (en) * 2016-07-02 2019-04-02 Intel Corporation Systems, apparatuses, and methods for snooping persistent memory store addresses
US20180343414A1 (en) * 2017-05-23 2018-11-29 Qualcomm Incorporated Frame buffering technology for camera-inclusive devices
US11436010B2 (en) 2017-06-30 2022-09-06 Intel Corporation Method and apparatus for vectorizing indirect update loops
CN111047021B (zh) * 2018-10-12 2023-11-24 中科寒武纪科技股份有限公司 一种计算装置及相关产品
TWI722574B (zh) * 2019-09-18 2021-03-21 新唐科技股份有限公司 音訊資料同步裝置及其方法
CN112181355B (zh) * 2020-10-12 2021-08-06 上海芯旺微电子技术有限公司 一种移位饱和处理方法及其应用

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5542089A (en) * 1994-07-26 1996-07-30 International Business Machines Corporation Method and apparatus for estimating the number of occurrences of frequent values in a data set
US20030167275A1 (en) * 2002-03-01 2003-09-04 Walid Rjaibi Computation of frequent data values
TWI242128B (en) * 2000-09-12 2005-10-21 Hitachi Ltd Data processing system and data processing method
TW201120899A (en) * 2009-12-08 2011-06-16 Silicon Motion Inc Method for reducing uncorrectable errors, and associated memory device and controller thereof

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5968197A (en) 1996-04-01 1999-10-19 Ericsson Inc. Method and apparatus for data recovery
US5903717A (en) * 1997-04-02 1999-05-11 General Dynamics Information Systems, Inc. Fault tolerant computer system
US6694421B2 (en) 1999-12-29 2004-02-17 Intel Corporation Cache memory bank access prediction
TW578114B (en) 2001-07-30 2004-03-01 Ecchandes Inc Visual device, interlocking counter, and image sensor
US7237148B2 (en) * 2002-09-05 2007-06-26 David Czajkowski Functional interrupt mitigation for fault tolerant computer
FR2898706B1 (fr) 2006-03-17 2008-06-13 Alstom Transport Sa Dispositif de commande securise a diversification d'un systeme ferroviaire
US20090031195A1 (en) 2007-07-25 2009-01-29 Digital Prospect Sdn.Bhd. Method and apparatus for encoding and decoding Reed-Muller codes
CN101251816B (zh) * 2008-03-13 2010-06-09 中国科学院计算技术研究所 一种用于可编程器件的冗余系统及其冗余实现方法
US7877627B1 (en) * 2008-12-18 2011-01-25 Supercon, L.L.C. Multiple redundant computer system combining fault diagnostics and majority voting with dissimilar redundancy technology
CN101944053A (zh) * 2009-07-07 2011-01-12 华东理工大学 一种三重指令同步执行的实现方法
WO2013081587A1 (en) * 2011-11-30 2013-06-06 Intel Corporation Instruction and logic to provide vector horizontal majority voting functionality

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5542089A (en) * 1994-07-26 1996-07-30 International Business Machines Corporation Method and apparatus for estimating the number of occurrences of frequent values in a data set
TWI242128B (en) * 2000-09-12 2005-10-21 Hitachi Ltd Data processing system and data processing method
US20030167275A1 (en) * 2002-03-01 2003-09-04 Walid Rjaibi Computation of frequent data values
TW201120899A (en) * 2009-12-08 2011-06-16 Silicon Motion Inc Method for reducing uncorrectable errors, and associated memory device and controller thereof

Also Published As

Publication number Publication date
CN103959236B (zh) 2016-12-07
US9928063B2 (en) 2018-03-27
CN106502624B (zh) 2019-10-18
CN106502624A (zh) 2017-03-15
WO2013081587A1 (en) 2013-06-06
US20140289494A1 (en) 2014-09-25
TW201704989A (zh) 2017-02-01
US9448794B2 (en) 2016-09-20
CN103959236A (zh) 2014-07-30
US20170003962A1 (en) 2017-01-05
TW201337738A (zh) 2013-09-16
TWI562060B (en) 2016-12-11

Similar Documents

Publication Publication Date Title
TWI659356B (zh) 用以提供向量水平式多數決投票功能之指令與邏輯(二)
JP6207095B2 (ja) 条件付きループをベクトル化する命令及び論理
TWI476695B (zh) 提供向量水平比較功能之指令與邏輯
KR101767025B1 (ko) 벡터 어드레스 충돌 검출 기능을 제공하기 위한 방법, 장치, 명령어들 및 로직
CN107092465B (zh) 用于提供向量混合和置换功能的指令和逻辑
CN107729048B (zh) 提供向量压缩和旋转功能的指令和逻辑
JP5933725B2 (ja) ベクトル散乱演算機能及びベクトル収集演算機能を提供する命令及びロジック
TWI689866B (zh) 使用控制操作來進行單一指令多重資料(simd)可變移位與旋轉之技術
TWI706323B (zh) 用於使用monitor及mwait架構之使用者層級執行緒同步的方法及裝置
JP2019050039A (ja) ゲノム配列決定および配列比較のためのポピュレーションカウント機能性を提供する方法、装置、命令、およびロジック
TWI610233B (zh) 用於提供向量分組元組交叉比較功能的方法、處理器和處理系統
CN107690618B (zh) 用于提供向量紧缩直方图功能的方法、处理器和处理系统
JP2014526758A (ja) ストライド機能を有するベクトルロード演算/ストア演算を提供する命令及びロジック
TWI715681B (zh) 用於位元欄位位址和插入之指令及邏輯
JP2018512631A (ja) アトミックな範囲演算を提供する命令及びロジック
TW201738758A (zh) 用以提供基底暫存器交換狀態驗證功能之指令及邏輯
TWI738679B (zh) 處理器、運算系統及用以執行運算操作之方法
CN108292271B (zh) 用于向量置换的指令和逻辑
TWI729029B (zh) 用於向量位元欄壓縮及擴展的指令及邏輯
JP6231155B2 (ja) ベクトル散乱演算機能及びベクトル収集演算機能を提供する命令及びロジック