TW201732549A - 用於壓縮與旋轉的指令和邏輯 - Google Patents

用於壓縮與旋轉的指令和邏輯 Download PDF

Info

Publication number
TW201732549A
TW201732549A TW105137674A TW105137674A TW201732549A TW 201732549 A TW201732549 A TW 201732549A TW 105137674 A TW105137674 A TW 105137674A TW 105137674 A TW105137674 A TW 105137674A TW 201732549 A TW201732549 A TW 201732549A
Authority
TW
Taiwan
Prior art keywords
vector
instruction
processor
destination
logic
Prior art date
Application number
TW105137674A
Other languages
English (en)
Inventor
艾蒙斯特阿法 歐德亞麥德維爾
羅柏 瓦倫泰
泰 伍利
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 TW201732549A publication Critical patent/TW201732549A/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/30029Logical and Boolean instructions, e.g. XOR, NOT
    • 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/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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

處理器包含用以執行指令的執行單元。執行單元包含邏輯,用以將來自來源向量的複數個屏蔽元件壓縮到目的地向量。該執行單元也包含邏輯,用以將該屏蔽元件放入在該目的地向量之內的可旋轉索引的該目的地向量。該可旋轉索引用以指示由先前進入該目的地向量的元件建立的偏移。該執行單元進一步包含邏輯,用以確定該複數個屏蔽元件的壓縮是否會導致該可旋轉索引超過該目的地向量的大小。該執行單元也包含邏輯,用以將關於該目的地向量的開頭的該可旋轉索引重置以相對於該目的地向量的該開頭來壓縮該複數個屏蔽元件中的至少一個。

Description

用於壓縮與旋轉的指令和邏輯
本發明係關於處理邏輯、微處理器、及相關聯的指令集架構之領域,當其由處理器或其他處理邏輯執行時會執行邏輯的、數學的、或其他功能的操作。
多處理器系統變得越來越普遍。多處理器系統的應用包含動態領域切割到桌上型電腦計算。為了利用多處理器系統的優點,待執行的碼可被分成多個執行緒(thread)以供各種處理實體執行。各執行緒可互相平行地執行。再者,為了增加處理實體之利用性,亂序執行(out-of-order execution)可被使用。當指令所需輸入為可用時,亂序執行可執行指令。因此,於碼序列較晚出現的指令可在於碼序列較早出現的指令之前被執行。
100‧‧‧系統
102‧‧‧處理器
104‧‧‧快取記憶體
106‧‧‧暫存器檔案
108‧‧‧執行單元
109‧‧‧緊縮指令集
110‧‧‧處理器匯流排
112‧‧‧圖形控制器
114‧‧‧加速圖形埠互連
116‧‧‧系統邏輯晶片
118‧‧‧記憶體路徑
120‧‧‧記憶體
122‧‧‧系統I/O
124‧‧‧資料儲存器
126‧‧‧無線收發器
128‧‧‧韌體集線器
130‧‧‧I/O控制器集線器
134‧‧‧網路控制器
140‧‧‧資料處理系統
141‧‧‧匯流排
142‧‧‧執行單元
143‧‧‧緊縮指令集
144‧‧‧解碼器
145‧‧‧暫存器檔案
146‧‧‧同步動態隨機存取記憶體(SDRAM)控制
147‧‧‧靜態隨機存取記憶體(SRAM)控制
148‧‧‧突發快閃記憶體介面
149‧‧‧個人電腦記憶卡國際協會(PCMCIA)/緊湊型快閃記憶(CF)卡控制
150‧‧‧液晶顯示器(LCD)控制
151‧‧‧直接記憶體存取(DMA)控制器
152‧‧‧匯流排主介面
153‧‧‧I/O匯流排
154‧‧‧I/O橋接器
155‧‧‧通用異步接收器/傳送器
156‧‧‧通用序列匯流排
157‧‧‧藍牙無線UART
158‧‧‧I/O擴充介面
159‧‧‧處理核心
160‧‧‧資料處理系統
161‧‧‧SIMD協同處理器
162‧‧‧執行單元
163‧‧‧指令集
164‧‧‧暫存器檔案
165‧‧‧解碼器
166‧‧‧主處理器
166‧‧‧協同處理器匯流排
167‧‧‧快取記憶體
168‧‧‧輸入/輸出系統
169‧‧‧無線介面
170‧‧‧處理核心
200‧‧‧處理器
201‧‧‧循序前端
202‧‧‧快速排程器
203‧‧‧亂序執行引擎
204‧‧‧慢/一般浮點排程器
206‧‧‧簡單浮點排程器
208‧‧‧暫存器檔案
210‧‧‧暫存器檔案
211‧‧‧執行區塊
212‧‧‧執行單元
214‧‧‧執行單元
216‧‧‧執行單元
218‧‧‧執行單元
220‧‧‧執行單元
222‧‧‧執行單元
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‧‧‧欄位
380‧‧‧操作編碼(操作碼)格式
381‧‧‧條件欄位
382‧‧‧操作碼欄
383‧‧‧操作碼欄
384‧‧‧操作碼欄
385‧‧‧操作碼欄
386‧‧‧操作碼欄
387‧‧‧操作碼欄
388‧‧‧操作碼欄
389‧‧‧操作碼欄
390‧‧‧來源運算元識別符
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階(L2)快取單元
490‧‧‧處理器核心
500‧‧‧處理器
502‧‧‧核心
503‧‧‧快取階層
506‧‧‧快取
508‧‧‧環式互連單元
510‧‧‧系統代理
512‧‧‧顯示引擎
514‧‧‧介面
516‧‧‧直接媒體介面
518‧‧‧PCIe橋接器
520‧‧‧記憶體控制器
522‧‧‧一致邏輯
552‧‧‧記憶體控制單元
560‧‧‧圖形模組
565‧‧‧媒體引擎
570‧‧‧前端
572‧‧‧快取
574‧‧‧快取
580‧‧‧亂序引擎
582‧‧‧分配模組
584‧‧‧資源排程器
586‧‧‧資源
588‧‧‧重排序緩衝器
590‧‧‧模組
595‧‧‧LLC
599‧‧‧RAM
600‧‧‧系統
610‧‧‧處理器
615‧‧‧處理器
620‧‧‧圖形記憶體控制器集線器
640‧‧‧記憶體
645‧‧‧顯示器
650‧‧‧輸入/輸出(I/O)控制器集線器
660‧‧‧外部圖形裝置
670‧‧‧週邊裝置
695‧‧‧前側匯流排
700‧‧‧第二系統
714‧‧‧I/O裝置
716‧‧‧第一匯流排
718‧‧‧匯流排橋接器
720‧‧‧第二匯流排
722‧‧‧鍵盤和/或滑鼠
724‧‧‧音訊I/O
727‧‧‧通訊裝置
728‧‧‧儲存單元
730‧‧‧碼及資料
732‧‧‧記憶體
734‧‧‧記憶體
738‧‧‧高效能圖形電路
739‧‧‧高效能圖形介面
750‧‧‧點對點互連
752‧‧‧P-P介面
754‧‧‧P-P介面
770‧‧‧第一處理器
772‧‧‧積體記憶體控制器單元
776‧‧‧點對點(P-P)介面
778‧‧‧點對點(P-P)介面
780‧‧‧第二處理器
782‧‧‧積體記憶體控制器單元
786‧‧‧P-P介面
788‧‧‧P-P介面
790‧‧‧晶片組
792‧‧‧介面
794‧‧‧點對點介面電路
796‧‧‧介面
798‧‧‧點對點介面電路
800‧‧‧第三系統
814‧‧‧I/O裝置
815‧‧‧傳統I/O裝置
832‧‧‧記憶體
834‧‧‧記憶體
870‧‧‧處理器
872‧‧‧控制邏輯
880‧‧‧處理器
882‧‧‧控制邏輯
890‧‧‧晶片組
900‧‧‧SoC
902‧‧‧互連單元
902A‧‧‧核心
902N‧‧‧核心
906‧‧‧共用快取單元
908‧‧‧積體圖形邏輯
910‧‧‧系統代理單元
914‧‧‧積體記憶體控制器單元
916‧‧‧匯流排控制器單元
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‧‧‧記憶體介面控制器
1050‧‧‧MIPI控制器
1055‧‧‧快閃記憶體控制器
1060‧‧‧雙資料率(DDR)控制器
1065‧‧‧安全引擎
1070‧‧‧I2S/I2C控制器
1100‧‧‧儲存器
1110‧‧‧硬體或軟體模型
1120‧‧‧模擬軟體
1140‧‧‧記憶體
1150‧‧‧有線連接
1160‧‧‧無線連接
1165‧‧‧製造設備
1205‧‧‧程式
1210‧‧‧仿真邏輯
1215‧‧‧處理器
1302‧‧‧高階語言
1304‧‧‧x86編譯器
1306‧‧‧x86二進制碼
1308‧‧‧替代指令集編譯器
1310‧‧‧替代指令集二進制碼
1312‧‧‧指令轉譯器
1314‧‧‧x86指令集核心的處理器
1316‧‧‧x86指令集核心的處理器
1400‧‧‧指令集架構
1406‧‧‧核心
1407‧‧‧核心
1408‧‧‧L2快取控制
1409‧‧‧匯流排介面單元
1410‧‧‧L2快取
1410‧‧‧互連
1415‧‧‧圖形處理單元
1420‧‧‧視訊編解碼器
1425‧‧‧液晶顯示器(LCD)視訊介面
1430‧‧‧用戶介面模組(SIM)介面
1435‧‧‧啟動ROM介面
1440‧‧‧同步動態隨機存取記憶體(SDRAM)控制器
1445‧‧‧快閃控制器
1450‧‧‧串列週邊介面(SPI)主單元
1455‧‧‧電源控制
1460‧‧‧SDRAM晶片或模組
1465‧‧‧FLASH
1470‧‧‧藍牙模組
1475‧‧‧高速3G數據機
1480‧‧‧全球定位系統模組
1485‧‧‧無線模組
1490‧‧‧行動產業處理器介面
1495‧‧‧高解析度多媒體介面
1500‧‧‧指令架構
1510‧‧‧單元
1511‧‧‧中斷控制及分配單元
1512‧‧‧窺探控制單元
1513‧‧‧快取至快取傳送
1514‧‧‧窺探過濾器
1515‧‧‧計時器
1516‧‧‧AC埠
1520‧‧‧匯流排介面單元
1521‧‧‧主要主
1522‧‧‧次要主
1525‧‧‧快取
1530‧‧‧指令預提取階段
1530‧‧‧載入儲存單元
1531‧‧‧快速迴圈模式
1532‧‧‧指令快取
1535‧‧‧分支預測單元
1536‧‧‧全域歷程
1537‧‧‧目標位址
1538‧‧‧返回堆疊
1540‧‧‧記憶體系統
1542‧‧‧資料快取
1543‧‧‧預提取器
1544‧‧‧記憶體管理單元
1545‧‧‧轉譯後備緩衝器
1550‧‧‧雙指令解碼階段
1555‧‧‧暫存器更名階段
1556‧‧‧暫存器池
1557‧‧‧分支
1560‧‧‧發出階段
1561‧‧‧指令佇列
1565‧‧‧執行個體
1566‧‧‧ALU/乘法單元(MUL)
1567‧‧‧ALU
1568‧‧‧浮點單元(FPU)
1569‧‧‧位址
1570‧‧‧寫回階段
1575‧‧‧追蹤單元
1580‧‧‧指令指標
1582‧‧‧失效指標
1600‧‧‧執行管線
1605‧‧‧步驟
1610‧‧‧步驟
1615‧‧‧步驟
1620‧‧‧步驟
1625‧‧‧步驟
1630‧‧‧步驟
1635‧‧‧步驟
1640‧‧‧步驟
1645‧‧‧步驟
1650‧‧‧步驟
1655‧‧‧步驟
1660‧‧‧步驟
1665‧‧‧步驟
1670‧‧‧步驟
1675‧‧‧步驟
1680‧‧‧步驟
1700‧‧‧電子裝置
1710‧‧‧處理器
1715‧‧‧低電源雙資料率(LPDDR)記憶體單元
1720‧‧‧碟機
1722‧‧‧BIOS/韌體/快閃記憶體
1724‧‧‧顯示器
1725‧‧‧觸控螢幕
1730‧‧‧觸控板
1735‧‧‧快速晶片組(EC)
1736‧‧‧鍵盤
1737‧‧‧風扇
1738‧‧‧信任平台模組(TPM)
1739‧‧‧熱感測器
1740‧‧‧感測器集線器
1741‧‧‧加速計
1742‧‧‧周圍光感測器
1743‧‧‧羅盤
1744‧‧‧陀螺儀
1745‧‧‧近場通訊(NFC)單元
1746‧‧‧熱感測器
1750‧‧‧無線區域網路(WLAN)單元
1752‧‧‧藍牙單元
1754‧‧‧相機
1755‧‧‧全球定位系統(GPS)
1756‧‧‧無線廣域網路(WWAN)單元
1757‧‧‧SIM卡
1760‧‧‧數位訊號處理器
1762‧‧‧音訊單元
1763‧‧‧揚聲器
1764‧‧‧頭戴式耳機
1765‧‧‧麥克風
1800‧‧‧系統
1802‧‧‧指令流
1804‧‧‧編譯器
1806‧‧‧處理器
1808‧‧‧前端
1810‧‧‧提取器
1812‧‧‧解碼器
1814‧‧‧二進制轉譯器
1818‧‧‧排程/分配單元
1820‧‧‧排程器
1822‧‧‧執行單元
1824‧‧‧失效單元
1826‧‧‧核心
1828‧‧‧記憶體子系統
1902‧‧‧向量a
1904‧‧‧向量b
1906‧‧‧掩模
1910‧‧‧向量c
1912‧‧‧向量d
2000‧‧‧方法
2005‧‧‧步驟
2010‧‧‧步驟
2015‧‧‧步驟
2020‧‧‧步驟
2025‧‧‧步驟
2030‧‧‧步驟
2035‧‧‧步驟
2040‧‧‧步驟
2045‧‧‧步驟
2050‧‧‧步驟
2055‧‧‧步驟
2060‧‧‧步驟
2065‧‧‧步驟
實施例係藉由後附圖式中之圖以範例而非限制的方式來說明: 第1A圖為根據本發明之實施例以可包含執行單元用以執行指令之處理器形成的例示電腦系統之方塊圖;第1B圖顯示根據本發明之實施例的資料處理系統;第1C圖顯示用以執行文字串比較操作之資料處理系統的其他實施例;第2圖為根據本發明之實施例對於可包含邏輯電路用以執行指令之處理器的微架構之方塊圖;第3A圖顯示根據本發明之實施例於多媒體暫存器中之各種緊縮資料類型表示;第3B圖顯示根據本發明之實施例的可能的暫存器中資料儲存格式(in-register data storage format);第3C圖顯示根據本發明之實施例於多媒體暫存器中之帶符號的(signed)與未帶符號的(unsigned)緊縮資料類型表示;第3D圖顯示操作編碼格式之實施例;第3E圖顯示根據本發明之實施例具有四十或更多個位元的另一可能的操作編碼格式;第3F圖顯示根據本發明之實施例另一可能的操作編碼格式;第4A圖為顯示根據本發明之實施例的循序管線(in-order pipeline)及暫存器更名階段(register renaming stage)、亂序發出/執行管線(out-of-order issue/execution pipeline)之方塊圖;第4B圖為顯示根據本發明之實施例的被包含於一處 理器中的循序架構核心及暫存器更名邏輯、亂序發出/執行邏輯之方塊圖;第5A圖為顯示根據本發明之實施例的處理器之方塊圖;第5B圖為顯示根據本發明之實施例的核心之範例實現的方塊圖;第6圖為顯示根據本發明之實施例的系統之方塊圖;第7圖為顯示根據本發明之實施例的第二系統之方塊圖;第8圖為顯示根據本發明之實施例的第三系統之方塊圖;第9圖為顯示根據本發明之實施例的系統單晶片之方塊圖;第10圖顯示根據本發明之實施例包含可執行至少一指令的中央處理單元及圖形處理單元之處理器;第11圖為顯示根據本發明之實施例的IP核心之發展的方塊圖;第12圖顯示根據本發明之實施例第一類型的指令如何被不同類型的處理器模擬;第13圖顯示根據本發明之實施例對比軟體指令轉譯器將於來源指令集中之二進制指令轉換至於目標指令集中之二進制指令之使用之方塊圖;第14圖為顯示根據本發明之實施例的處理器之指令集架構的方塊圖; 第15圖為顯示根據本發明之實施例的處理器之指令集架構的更詳細方塊圖;第16圖為顯示根據本發明之實施例的處理器之指令集架構的執行管線的方塊圖;第17圖為顯示根據本發明之實施例用於利用處理器之電子裝置的方塊圖;第18圖為顯示根據本發明之實施例用以執行用於壓縮和旋轉的指令之系統的方塊圖;第19圖為顯示根據本發明之實施例用以執行用於壓縮和旋轉的指令之系統的操作的圖示;以及第20圖為顯示根據本發明之實施例用以執行用於壓縮和旋轉的指令之方法的流程圖。
【發明內容及實施方式】
以下說明描述了用於在處理裝置上壓縮和旋轉的指令和處理邏輯。這種旋轉和壓縮可以作為用於將結果累積在向量暫存器中的向量指令來執行。在下面的說明中,闡述了許多具體細節,諸如處理邏輯、處理器類型、微架構條件、事件、啟用機制等,以便提供對本發明的實施例的更透徹理解。然而,本領域技術人員將理解,可以在沒有這些具體細節的情況下實施該些實施例。另外,沒有詳細顯示一些眾所皆知的結構、電路等,以避免不必要地模糊本發明的實施例。
雖然以下實施例係參照處理器來說明,其他 實施例可應用其他類型的積體電路及邏輯裝置。本發明之實施例之類似的技術及教示可被應用至有助於較佳管線產出量及改良的效能之其他類型的電路或半導體裝置。本發明之實施例的教示可應用至執行資料處理之任何處理器或機器。然而,實施例並未受限於執行512位元、256位元、128位元、64位元、32位元或16位元資料操作之處理器或機器且可被應用至可於其中執行資料之處理或管理的任何處理器及機器。此外,以下說明提供範例,而所附圖式顯示各種範例以供說明之用。然而,這些範例不應被解釋為限制之含義,而係僅提供本發明之實施例的範例,而非提供本發明之實施例的所有可能實現之窮盡列表。
雖然以下範例於執行單元與邏輯電路之情境中說明指令處理及分配,本發明之其他實施例可藉由儲存於機器可讀的有形媒體上之資料或指令(當其由機器執行時造成機器用以執行與本發明之至少一實施例一致的功能)來實現。在一個實施例中,與本發明之實施例相關聯的功能係被實現於機器可執行的指令中。該指令可被使用以造成以指令進行程式化之一般目的或特殊目的處理器執行本發明之步驟。本發明之實施例可被提供為電腦程式產品或軟體,其可包含根據本發明之實施例具有指令(其可被使用以程式化一電腦(或其他電子裝置)用以執行一或多個操作)儲存於其上之機器或電腦可讀取媒體。再者,本發明之實施例的步驟可被含有用以執行該等步驟的固定功能式(fixed-function)邏輯之特定硬體組件或藉由程式化的 電腦組件及固定功能式硬體組件之任何組合來執行。
用於對邏輯進行程式化以執行本發明之實施例的指令可被儲存於系統中之記憶體內,例如DRAM、快取、快閃記憶體、或其他儲存器。再者,指令可經由網路或藉由其他電腦可讀取媒體來散佈。因此,機器可讀取媒體可包含用於以機器(例如電腦)可讀的形式儲存或傳送資訊之任何機制,但不限於軟碟、光碟、光碟唯讀記憶體(CD-ROM)、及磁光碟、唯讀記憶體(ROM)、隨機存取記憶體(RAM)、可抹除可程式化唯讀記憶體(EPROM)、電氣可抹除可程式化唯讀記憶體(EEPROM)、磁或光卡、快閃記憶體、或使用於透過網際網路經由電的、光的、聽覺的或其他形式的傳播訊號(例如載波、紅外線訊號、數位訊號等等)之資訊的傳送之有形的機器可讀取儲存器。因此,電腦可讀取媒體可包含適用於以機器(例如電腦)可讀取的形式儲存或傳送電子指令或資訊的任何類型之有形的機器可讀取媒體。
設計可歷經各種階段,從創作到模擬到製造。表示一設計之資料可以數種方式表示該設計。首先,在模擬中有用的是,硬體可使用硬體描述語言或另一功能描述語言而被表示。此外,具有邏輯和/或電晶體閘極之電路級模型可在設計流程之某些階段中被產生。再者,在某些階段,設計可達到表示硬體模型中各種裝置的實體佈局之資料級。在使用某些半導體製造技術的情形中,表示硬體模型的資料可為指明對於被使用以產生積體電路的於 不同遮罩層之許多特徵的存在或不存在之資料。於該設計的任何表示中,該資料可被儲存於任何形式的機器可讀取媒體中。記憶體或磁性的或光學的儲存器(例如碟)可為機器可讀取媒體用以儲存經由經調變的或被產生以傳送此資訊的光或電波傳送之資料。當表示或攜帶碼或設計之電載波係被傳送至複製、緩衝、或電訊號之再傳送係被執行的程度時,新的副本可被做出。因此,通訊提供者或網路提供者可將一物件(例如編碼成載波之資訊)至少暫時地儲存於有形的機器可讀取媒體,以體現本發明之實施例的技術。
於現今的處理器中,一些不同的執行單元可被使用以處理及執行多樣的碼及指令。某些指令可較快完成,而其他指令則需要數個時脈週期來完成。指令的產出量越快,則處理器的整體效能越好。因此,具有許多盡可能快地執行的指令將有優勢。然而,也可有具有較大複雜度且需要較多執行時間與處理器資源之特定指令,例如浮點指令、載入/儲存操作、資料移動等等。
當較多電腦系統被使用於網際網路、文書、及多媒體應用時,額外的處理器支援已隨著時間被引入。在一個實施例中,指令集可與一或多個電腦架構相關聯,包含資料類型、指令、暫存器架構、定址模式、記憶體架構、中斷及異常處理、及外部輸入及輸出(I/O)。
在一個實施例中,指令集架構(instruction set architecture;ISA)可藉由一或多個微架構(其可包含被使 用以實現一或多個指令集之處理器邏輯及電路)來實現。因此,具有不同微架構之處理器可共用至少一部分的共同指令集。舉例來說,Intel® Pentium 4處理器、Intel® CoreTM處理器、及來自美國加州森尼韋爾之Advanced Micro Devices,Inc.的處理器實現近乎相同的版本的x86指令集(較新的版本有加入一些擴充),但具有不同內部設計。同樣地,由其他處理器開發公司(例如ARM Holdings,Ltd.、MIPS、或其被授權者(licensee)或採用者(adopter)所設計的處理器可共用至少一部分的共同指令集,但可包含不同的處理器設計。舉例來說,ISA之相同的暫存器架構可使用新的或已知的技術以不同方式於不同微架構被實現,包含專屬實體暫存器、使用暫存器更名機制(例如暫存器別名表(Register Alias Table;RAT)、重排序緩衝器(Reorder Buffer;ROB)及失效暫存器檔案)之一或多個動態分配實體暫存器。在一個實施例中,暫存器可包含一或多個暫存器、暫存器架構、暫存器檔案、或可或可不由軟體程式設計師(software programmer)所定址之其他暫存器組。
指令可包含一或多個指令格式。在一個實施例中,除了別的以外,指令格式可表示各種欄位(位元的數量、位元的位置等等)用以指明待被執行的操作及操作將被執行的運算元。在另一實施例中,一些指令格式可被進一步藉由指令範本(或次格式)來界定。舉例來說,給定指令格式之指令範本可被界定以具有指令格式的欄位之不 同的子集和/或被界定以具有被不同地解譯之給定的欄位。在一個實施例中,指令可被使用指令格式(且,若被界定,於該指令格式之指令範本之其中一者中)來表示且指明或表示操作及操作將於其上執行之運算元。
科學的、金融的、自動向量化通用的、RMS(辨別(recognition)、資料挖掘(mining)、及分析合成(synthesis))、及視覺及多媒體應用(例如2D/3D圖形、影像處理、視訊壓縮/解壓縮、聲音辨別演算法及音訊處理)會需要相同的操作待被執行於大量的資料項目。在一個實施例中,單一指令多重資料(Single Instruction Multiple Data;SIMD)表示造成處理器執行一操作於多資料元之一類型的指令。SIMD技術可被使用於處理器,其可邏輯地將位元於暫存器中分成數個固定大小的或可變大小的資料元,各資料元表示一單獨的值。舉例來說,在一個實施例中,於64位元暫存器中之位元可被組織成含有四個單獨的16位元資料元之來源運算元,各資料元表示一單獨的16位元值。此類型的資料可稱為「緊縮(packed)」資料類型或「向量(vector)」資料類型,且此資料類型之運算元可稱為緊縮資料運算元或向量運算元。在一個實施例中,緊縮資料項目或向量可為儲存於單一暫存器內之一序列的緊縮資料元,而緊縮資料運算元或向量運算元可為SIMD指令(或「緊縮資料指令」或「向量指令」)之來源或目的地運算元。在一個實施例中,SIMD指令指明待被執行於兩個來源向量運算元之單一向量操作用以產生相同或不同 大小之目的向量運算元(亦稱為結果向量運算元),以相同或不同數量的資料元,且以相同或不同的資料元次序。
SIMD技術(例如由具有包含x86之Intel® CoreTM處理器所採用的指令集)、MMXTM、Streaming SIMD Extensions(SSE)、SSE2、SSE3、SSE4.1、及SSE4.2指令、ARM處理器(例如具有包含向量浮點(Vector Floating Point;VFP)和/或NEON指令之指令集的處理器之ARM Cortex®家族)、及MIPS處理器(例如中國科學院計算技術研究所開發的處理器之龍芯(Loongson)家族)已有明顯的改善於應用效能(CoreTM及MMXTM是美國Intel Corporation of Santa Clara,Calif.的註冊商標或商標)。
在一個實施例中,目的及來源暫存器/資料可為通用術語用以表示對應資料或操作之來源及目的。於某些實施例中,其可藉由暫存器、記憶體、或具有所顯示者以外的其他名稱或功能之其他儲存區所實現。舉例來說,在一個實施例中,「DEST1」可為暫時儲存暫存器或其他儲存區域,而「SRC1」與「SRC2」可為第一及第二來源儲存暫存器或其他儲存區域等等。於其他實施例中,二或多個SRC及DEST儲存區域可對應至相同儲存區域內(例如SIMD暫存器)之不同的資料儲存元件。在一個實施例中,來源暫存器之其中一者亦可作為目的暫存器,藉由例如將於該第一及第二來源資料所執行的操作之結果寫回作為目的暫存器之兩個來源暫存器之其中一者。
第1A圖為根據本發明之實施例以可包含執行 單元用以執行指令之處理器形成的例示電腦系統之方塊圖。根據本發明,例如此處所述之實施例中,系統100可包含一組件,例如處理器102,用以利用包含邏輯之執行單元來對處理資料執行演算法。系統100可表示基於美國加州聖塔克拉拉的Intel Corporation所販售的PENTIUM® III、PENTIUM® 4、XeonTM、Itanium®、XScaleTM和/或StrongARMTM微處理器之處理系統,雖然其他系統(包含具有其他微處理器之PC、工程工作站、機上盒等等)亦可被使用。在一個實施例中,樣品系統100可執行美國華盛頓雷德蒙德的Microsoft Corporation所販售之WINDOWSTM作業系統的一版本,雖然其他作業系統(例如UNIX及Linux)、嵌入式軟體、和/或圖形使用者介面亦可被使用。因此,本發明之實施例並不限於硬體電路及軟體之任何特定組合。
實施例並不限於電腦系統。本發明之實施例可被使用於其他裝置,例如手持裝置及嵌入式應用。手持裝置之一些範例包含蜂窩式電話、網際網路協定裝置、數位照相機、個人數位助理(PDA)、及手持PC。根據至少一實施例,嵌入式應用可包含微控制器、數位訊號處理器(DSP)、系統單晶片、網路電腦(NetPC)、機上盒、網路集線器、廣域網路(WAN)交換器、或可執行一或多個指令之任何其他系統。
根據本發明之一實施例,電腦系統100可包含處理器102,其可包含一或多個執行單元108,用以執 行一演算法以執行至少一指令。一實施例可說明於單一處理器桌上型電腦或伺服器系統,但其他實施例可包含於多處理器系統中。系統100可為「集線式(hub)」系統架構之範例。系統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匯流排可包含高速I/O匯流排以將週邊連接至記憶體120、晶片組、及處理器102。範例可包含音訊控制器、韌體集線器(快閃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橋接器154,用於經由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圖顯示用以執行SIMD文字串比較操作之資料處理系統的其他實施例。在一個實施例中,資料處理系統160可包含主處理器166、SIMD協同處理器161、快取記憶體167、及輸入/輸出系統168。輸入/輸出系統168可選項地被耦接至無線介面169。根據一實施例, SIMD協同處理器161可執行包含指令之操作。在一個實施例中,處理核心170可適於製造於一或多個處理技術且藉由於機器可讀取媒體上以充足的細節來表現,可適於促進包含處理核心170之資料處理系統160的所有或部份之所述製造。
在一個實施例中,SIMD協同處理器161包含執行單元162及一組暫存器檔案164。主處理器166之一實施例包含解碼器165用以識別包含根據一實施例之由執行單元162所執行之指令的指令集163之指令。於其他實施例中,SIMD協同處理器161亦包含至少部份的解碼器165用以解碼指令集163之指令。處理核心170亦可包含額外的電路(未圖示),其對於本發明之實施例的了解是不必要的。
操作上,主處理器166執行一串流的資料處理指令,其控制一般類型之資料處理操作,包含與快取記憶體167、及輸入/輸出系統168的互動。嵌入該串流的資料處理指令內者可為SIMD協同處理器指令。主處理器166之解碼器165識別這些SIMD協同處理器指令作為應由附接的SIMD協同處理器161所執行的類型。因此,主處理器166發出這些SIMD協同處理器指令(或表示SIMD協同處理器指令之控制訊號)於協同處理器匯流排166上。來自協同處理器匯流排166,這些指令可被任何附接的SIMD協同處理器所接收。於此情形中,SIMD協同處理器161可接受及執行欲如此之任何接收的SIMD協同處 理器指令。
資料可經由無線介面169被接收以供SIMD協同處理器指令來處理。於一範例,聲音通訊可以數位訊號的形式被接收,其可被SIMD協同處理器指令所處理用以再產生(regenerate)代表聲音通訊之數位音訊取樣。於另一範例,經壓縮的音訊和/或視訊可以數位位元串流的形式被接收,其可被SIMD協同處理器指令所處理用以再產生數位音訊取樣和/或動作視訊框。於處理核心170之一實施例中,主處理器166、及SIMD協同處理器161可被整合至單一處理核心170,包含執行單元162、一組暫存器檔案164、及解碼器165,用以包含根據一實施例之指令的指令集163之指令。
第2圖為根據本發明之實施例對於可包含邏輯電路用以執行指令之處理器200的微架構之方塊圖。在一些實施例中,根據一實施例之指令可被實現用以操作於具有位元組、字組、雙字組、四字組等大小以及資料類型(例如單及雙精確度整數及浮點資料類型)之資料元上。在一個實施例中,循序前端201可實現可取得待執行的指令並準備稍後於處理器管線中被使用的指令之處理器200的一部分。前端201可包含數個單元。在一個實施例中,指令預提取器226自記憶體取得指令並饋送指令至依次解碼或解譯指令之指令解碼器228。舉例來說,在一個實施例中,解碼器將接收的指令解碼成稱為「微指令(micro-instruction)」或「微操作(micro-operation)」(亦稱為 micro op或uop)之機器可執行的一或多個操作。於其他實施例中,解碼器將指令解析(parse)成操作碼及對應的資料與控制欄,其可根據一實施例被微架構使用以執行操作。在一個實施例中,追蹤快取(trace cache)230可將解碼的uop組合成程式序列(program ordered sequence)或uop佇列234中的追跡(trace)以供執行。當追蹤快取230遭遇複雜指令時,微碼ROM 232提供所需uop以完成操作。
某些指令可被轉換成單一微操作,而其他指令需要數個微操作以完成全部操作。在一個實施例中,若需要操作四個微操作以完成指令,則解碼器228可存取微碼ROM 232以執行指令。在一個實施例中,指令可被解碼成少量的微操作以執行於指令解碼器228。在另一實施例中,指令可被儲存於微碼ROM 232內,數個微操作應被需要以完成操作。追蹤快取230參照轉移點可程式化邏輯陣列(PLA)以決定正確的微指令指標以供根據一實施例從微碼ROM 232讀取微碼序列用以完成一或多個指令。在微碼ROM 232完成指令之微操作排序之後,機器之前端210可恢復從追蹤快取230取得微操作。
亂序執行引擎203可準備指令以供執行。亂序執行邏輯具有數個緩衝器用以將指令的流程變平順及再排序,用以最佳化當其於管線中前進及排程以供執行時之效能。分配器邏輯分配機器緩衝器及各uop執行所需資源。暫存器更名邏輯將暫存器檔案中條目(entry)上之邏輯暫存器更名。分配器亦對兩個uop佇列之其中一者中之各 uop分配條目,一個用於記憶體操作而一個用於非記憶體操作,在指令排程器之前:記憶體排程器、快速排程器202、慢/一般浮點排程器204、及簡單浮點排程器206。Uop排程器202、204、206基於其相關輸入暫存器運算元來源的準備狀態及uop完成其操作所需之執行資源的可用性來決定uop何時準備好來執行。一實施例之快速排程器202可於主時脈週期之各半中排程,而其他排程器僅可在每個處理器時脈週期排程一次。排程器仲裁配送埠用以排程供執行之uop。
暫存器檔案208、210可被安排於排程器202、204、206、及執行區塊211中之執行單元212、214、216、218、220、222、224之間。暫存器檔案208、210分別執行整數及浮點操作。各暫存器檔案208、210可包含旁通網路,其可將剛完成的尚未被寫入暫存器檔案之結果旁通或轉送至新的相關uop。整數暫存器檔案208與浮點暫存器檔案210可彼此通訊資料。在一個實施例中,整數暫存器檔案208可被分成兩個獨立的暫存器檔案,一個暫存器檔案用於資料之低階的三十二個位元而第二暫存器檔案用於資料之高階的三十二個位元。浮點暫存器檔案210可包含128位元寬的條目,因為浮點指令典型具有寬度上從64至128位元的運算元。
執行區塊211可包含執行單元212、214、216、218、220、222、224。執行單元212、214、216、218、220、222、224可執行指令。執行區塊211可包含 儲存微指令執行所需之整數及浮點資料運算元值之暫存器檔案208、210。在一個實施例中,處理器200可包含數個執行單元:位址產生單元(AGU)212、AGU 214、快速ALU 216、快速ALU 218、慢速ALU 220、浮點ALU 222、浮點移動單元224。在另一實施例中,浮點執行區塊222、224可執行浮點、MMX、SIMD、及SSE、或其他操作。在另一實施例中,浮點ALU 222可包含64位元-64位元(64-bit by 64-bit)的浮點除法器,用以執行除法、平方根、及餘數微操作。於各種實施例中,涉及浮點值的指令可以浮點硬體來處理。在一個實施例中,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位元寬的緊縮資料運算元。
在一個實施例中,uop排程器202、204、206 在父載入(parent load)完成執行之前配送相關操作。當uop在處理器200中被推測地排程及執行時,處理器200亦可包含用以處理記憶體未命中之邏輯。若資料載入在資料快取中未命中,則在留給排程器暫時不正確的資料之管線中會有相關的操作。重播機制追蹤及再執行使用不正確資料的指令。僅相關的操作會需要被重播而不相關的操作則被允許完成。處理器之一實施例的排程器及重播機制亦可被設計用以取得指令序列以供文字串比較操作。
用語「暫存器(register)」可參照板上處理器儲存位置,其可被使用作為用以識別運算元之指令的一部分。換句話說,暫存器可為那些可自處理器外部(從程式設計師的角度)被使用者使用的暫存器。然而,在一些實施例中,暫存器可不限於特定類型的電路。取而代之的是,暫存器可儲存資料、提供資料、及執行此處所述之功能。此處所述之暫存器可使用任何數量的不同技術藉由處理器內之電路而被實現,例如專屬實體暫存器、使用暫存器更名之動態分配實體暫存器、專屬及動態分配實體暫存器之結合等等。在一個實施例中,整數暫存器儲存32位元的整數資料。一實施例之暫存器檔案亦包含八個多媒體SIMD暫存器以用於緊縮資料。關於以下說明,暫存器可被了解為設計用以保持緊縮資料之資料暫存器,例如美國加州聖塔克拉拉的Intel Corporation之MMX技術,於微處理器中之64位元寬的MMXTM暫存器(某些範例中亦被稱為「mm」暫存器)。這些MMX暫存器(整數及浮點形式 兩種都可買到)可操作伴隨SIMD及SSE指令之緊縮資料元。同樣地,有關SSE2、SSE3、SSE4、或較新者(一般稱為「SSEx」)技術之128位元寬的XMM暫存器可保持此緊縮資料運算元。在一個實施例中,在儲存緊縮資料及整數資料時,暫存器不需要區分兩個資料類型。在一個實施例中,整數與浮點可被包含於相同的暫存器檔案或不同的暫存器檔案中。再者,在一個實施例中,浮點與整數資料可被儲存於不同的或相同的暫存器中。
於以下圖式之範例中,數個資料運算元可被說明。第3A圖顯示根據本發明之實施例於多媒體暫存器中之各種緊縮資料類型表示。第3A圖顯示128位元寬的運算元之緊縮位元組310、緊縮字組320、及緊縮雙字組(dword)330之資料類型。此範例之緊縮位元組格式310可為128位元長且包含十六個緊縮位元組資料元。位元組可被界定例如八個位元的資料。各位元組資料元之資訊可被儲存於位元組0之位元7至位元0、位元組1之位元15至位元8、位元組2之位元23至位元16、及最後的位元組15之位元120至位元127。因此,所有可用的位元可被使用於暫存器中。此儲存配置增加處理器的儲存效率。同樣的,利用存取十六個資料元,一個操作現在可被平行執行於十六個資料元。
通常,資料元可包含與相同長度之其他資料元被儲存於單一暫存器或記憶體位置的資料之個別片段。於有關SSEx技術之緊縮資料序列中,儲存於XMM暫存 器中之資料元的數量可為128位元除以個別資料元之位元的長度。同樣地,於有關MMX及SSE技術之緊縮資料序列中,儲存於MMX暫存器中之資料元的數量可為64位元除以個別資料元之位元的長度。雖然第3A圖中所示之資料類型可為128位元長,本發明之實施例亦可操作於64位元寬或其他大小的運算元。此範例之緊縮字組格式320可為128位元長且包含八個緊縮字組資料元。各緊縮字組包含十六位元的資訊。第3A圖之緊縮雙字組格式330可為128位元長且包含四個緊縮雙字組資料元。各緊縮雙字組資料元包含三十二位元的資訊。緊縮四字組可為128位元長且包含兩個緊縮四字組資料元。
第3B圖顯示根據本發明之實施例的可能的暫存器中資料儲存格式(in-register data storage format)。各緊縮資料可包含多於一個獨立的資料元。三個緊縮資料格式係被顯示:半緊縮341、單緊縮342、及雙緊縮343。半緊縮341、單緊縮342、及雙緊縮343之一實施例包含定點(fixed-point)資料元。半緊縮341、單緊縮342、及雙緊縮343之另一實施例包含浮點資料元。半緊縮341之一實施例可為128位元長,含有八個16位元資料元。單緊縮342之一實施例可為128位元長,含有四個32位元資料元。雙緊縮343之一實施例可為128位元長,含有兩個64位元資料元。應了解的是,此緊縮資料格式可進一步延伸至其他暫存器長度,例如96位元、160位元、192位元、224位元、256位元或更多。
第3C圖顯示根據本發明之實施例於多媒體暫存器中之帶符號的(signed)與未帶符號的(unsigned)緊縮資料類型表示。未帶符號的緊縮位元組表示法344說明於SIMD暫存器中未帶符號的緊縮位元組之儲存。各位元組資料元之資訊可被儲存於位元組0之位元7至位元0、位元組1之位元15至位元8、位元組2之位元23至位元16、及最後的位元組15之位元120至位元127。因此,所有可用的位元可被使用於暫存器中。此儲存配置可增加處理器的儲存效率。同樣的,利用存取十六個資料元,一個操作現在可被平行執行於十六個資料元。帶符號的緊縮位元組表示法345說明帶符號的緊縮位元組之儲存。應注意的是,每個位元組資料元之八個位元可為符號指標。未帶符號的緊縮字組表示法346顯示從字組7至字組0可如何被儲存於SIMD暫存器中。帶符號的緊縮字組表示法347可類似於未帶符號的緊縮字組暫存器中表示法346。應注意的是,各字組資料元之十六個位元可為符號指標。未帶符號的緊縮雙字組表示法348顯示雙字組資料元如何被儲存。帶符號的緊縮雙字組表示法349可類似於未帶符號的緊縮雙字組暫存器中表示法348。應注意的是,必要符號位元可為各雙字組資料元之第32個位元。
第3D圖顯示操作編碼(操作碼)之實施例。再者,格式360可包含對應於「IA-32 Intel架構軟體開發者手冊第二冊:指令集參考書」中所述之操作碼格式的類型之暫存器/記憶體運算元定址模式,其可於美國加州聖塔 克拉拉的Intel Corporation的網頁intel.com/design/litcentr找到。在一個實施例中,指令可藉由一或多個欄位361及362來編碼。每個指令最多有兩個運算元位置可被識別,包含最多兩個來源運算元識別符364及365。在一個實施例中,目的地運算元識別符366可與來源運算元識別符364相同,但於其他實施例中其可為不同。在另一實施例中,目的地運算元識別符366可與來源運算元識別符365相同,但於其他實施例中其可為不同。在一個實施例中,由來源運算元識別符364及365所識別的來源運算元之其中一者可被文字串比較操作的結果覆寫,而在另一實施例中,識別符364對應至來源暫存器元件(source register element)而識別符365對應至目的暫存器元件(destination register element)。在一個實施例中,運算元識別符364及365可識別32位元或64位元來源及目的地運算元。
第3E圖顯示根據本發明之實施例具有四十或更多個位元的另一可能的操作編碼(操作碼)格式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與藉由選項的縮放-索引-基底(scale-index-base)及位移位元組所指明之暫存器至暫存器(register to register)、記憶體至暫存器(memory to register)、藉由記憶體之暫存器(register by memory)、藉由暫存器之暫存器(register by register)、立即暫存器(register by immediate)、暫存器至記憶體(register to memory)定址。
第3F圖顯示根據本發明之實施例另一可能的操作編碼(操作碼)格式。64位元單一指令多重資料(SIMD)算術運算可透過協同處理器資料處理(CDP)指令來執行。操作編碼(操作碼)格式380顯示具有CDP操作碼欄位382及389之一個如此之CDP指令。根據另一實施例CDP指令之類型,可藉由一或多個欄位383、384、387及388來編碼。每個指令最多有三個運算元位置可被識別,包含最多兩個來源運算元識別符385及390與一個目的地運算元識別符386。協同處理器之一實施例可操作於8、16、32、及64位元值。在一個實施例中,指令可被執行於整 數資料元。在一些實施例中,指令可使用條件欄位381而被條件地執行。於某些實施例,來源資料大小可藉由欄位383來編碼。在一些實施例中,零(Zero:Z)、負(negative;N)、進位(carry;C)、及溢位(overflow;V)偵測可於SIMD欄位完成。於某些實施例,飽和(saturation)的類型可藉由欄位384來編碼。
第4A圖為顯示根據本發明之實施例的循序管線(in-order pipeline)及暫存器更名階段(register renaming stage)、亂序發出/執行管線(out-of-order issue/execution pipeline)之方塊圖。第4B圖為顯示根據本發明之實施例的循序架構核心及暫存器更名邏輯、亂序發出/執行邏輯被包含於一處理器中之方塊圖。第4A圖中實線方塊顯示循序管線,而虛線方塊顯示暫存器更名、亂序發出/執行管線。同樣地,第4B圖中實線方塊顯示循序算術邏輯,而虛線方塊顯示暫存器更名邏輯及亂序發出/執行邏輯。
於第4A圖中,處理器管線400可包含提取階段402、長度解碼階段404、解碼階段406、分配階段408、更名階段410、排程階段(亦稱為配送或發出)412、暫存器讀取/記憶體讀取階段414、執行階段416、寫回/記憶體寫入階段418、例外處理階段422、及提交階段424。
於第4B圖中,箭頭表示二或多個單元間的耦接且箭頭的方向表示那些單元間之資料流。第4B圖顯示包含耦接至執行引擎單元450的前端單元430之處理器核 心490,且兩者皆可耦接至記憶體單元470。
核心490可為精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、極長指令字(VLIW)核心、或混合或替代核心類型。在一個實施例中,核心490可為特殊目的核心,例如網路或通訊核心、壓縮引擎、圖形核心等等。
前端單元430可包含耦接至指令快取單元434之分支預測單元432。指令快取單元434可被耦接至指令轉譯後備緩衝器(TLB)436。TLB 436可被耦接至指令提取單元438,其係耦接至解碼單元440。解碼單元440可解碼指令,且產生一或多個微操作、微碼轉移點、微指令、其他指令、或其他控制訊號作為輸出,其可從原始指令解碼或反射、或可從原始指令導出。解碼器可使用各種不同機制來實現。合適的機制之範例包含(但不限於)查找表、硬體實現、可程式化邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等。在一個實施例中,指令快取單元434可被進一步耦接至記憶體單元470中之2階(L2)快取單元476。解碼單元440可被耦接至執行引擎單元450中之更名/分配器單元452。
執行引擎單元450可包含耦接至失效單元454及一組一或多個排程器單元456之更名/分配器單元452。排程器單元456表示任何數量的不同排程器,包含保留站、中央指令窗等等。排程器單元456可被耦接至實體暫存器檔案單元458。各實體暫存器檔案單元458表示一或 多個實體暫存器檔案(不同的實體暫存器檔案儲存一或多個不同的資料類型,例如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點等)、狀態(例如待執行的下個指令之位址之指令指標)等。實體暫存器檔案單元458可被失效單元454重疊以顯示暫存器更名及亂序執行可被實現之多種方式(例如使用一或多個重排序緩衝器及一或多個失效暫存器檔案、使用一或多個未來檔案、一或多個歷史緩衝器、及一或多個失效暫存器檔案;使用暫存器圖及暫存器池;等)。通常,架構的暫存器可從處理器的外部或從程式設計師的角度看見。暫存器可不限於任何已知特定類型的電路。各種不同類型的暫存器都是適合的,只要其儲存及提供如此處所述之資料。適合的暫存器之範例包含但不限於專屬實體暫存器、使用暫存器更名之動態分配實體暫存器、專屬與動態分配實體暫存器之結合等。失效單元454及實體暫存器檔案單元458可被耦接至執行叢集460。執行叢集460可包含一組一或多個執行單元462及一組一或多個記憶體存取單元464。執行單元462可執行各種運算(例如移位、加、減、乘)及各種類型的資料(純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)。雖然某些實施例可包含專門用於特定功能或功能組之數個執行單元,其他實施例可包含全部執行所有功能之僅一個執行單元或多個執行單元。排程器單元456、實體暫存器檔案單元458、與執行叢集460係被顯示為複數,這是因為特定實施例對於特定類型的資料/操作(例如 純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線、和/或記憶體存取管線,其各具有其自己的排程器單元、實體暫存器檔案單元、和/或執行叢集--且於分開的記憶體存取管線之情形中,特定實施例可被實現為僅此管線之執行叢集具有記憶體存取單元464)建立分開的管線。應了解的是,當分開的管線被使用,這些管線之其中一或多者可為亂序發出/執行而其他為循序的。
記憶體存取單元464之組可被耦接至記憶體單元470,其可包含耦接至耦接至2階(L2)快取單元476之資料快取單元474的資料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指令集(較新的版本有加入一些擴充);美國加州森尼韋爾的MLPS Technologies之MIPS指令集;美國加州森尼韋爾的ARM Holdings之ARM指令集(有加入選項的額外擴充,例如NEON))。
應了解的是,核心可以許多方式支援多執行緒(平行執行二或更多的操作或執行緒之集)。多執行緒支援可藉由例如時間切割多執行緒、同時多執行緒(其中,單一實體核心對各執行緒提供邏輯核心,實體核心係同時地執行多執行緒)、或其結合包含來執行。此結合可包含例如時間切割提取與解碼且在其後同時執行多執行緒,例如Intel® Hyperthreading技術。
雖然暫存器更名被說明於亂序執行之文中,應了解的是,暫存器更名可被使用於循序架構中。雖然所示的處理器之實施例亦可包含分開的指令及資料快取單元434/474與共用的L2快取單元476,其他實施例可對指令及資料兩者具有單一內部快取,例如1階(L1)內部快取、或多階內部快取。在一些實施例中,系統可包含內部快取及外部快取(其可在核心和/或處理器外部)的結合。於其他實施例中,所有的快取可在核心和/或處理器外部。
第5A圖為顯示根據本發明之實施例的處理器500之方塊圖。在一個實施例中,處理器500可包含多核心處理器。處理器500可包含通訊地耦接至一或多個核心 502之系統代理510。再者,核心502與系統代理510可被通訊地耦接至一或多個快取506。核心502、系統代理510、及快取506可經由一或多個記憶體控制單元552被通訊地耦接。再者,核心502、系統代理510、及快取506可經由記憶體控制單元552被通訊地耦接至圖形模組560。
處理器500可包含用於互連核心502、系統代理510、及快取506、及圖形模組560之任何適合的機制。在一個實施例中,處理器500可包含環式互連單元508,用以互連核心502、系統代理510、及快取506、及圖形模組560。於其他實施例中,處理器500可包含任何數量的已知技術以互連這些單元。環式互連單元508可利用記憶體控制單元552以幫助互連。
處理器500可包含記憶體階層,包含核心內之一或多階的快取、一或多個共用快取單元(例如快取506)、或耦接至積體記憶體控制器單元552之組的外部記憶體(未圖示)。快取506可包含任何適合的快取。在一個實施例中,快取506可包含一或多個中階快取(例如2階(L2)、3階(L3)、4階(L4)、或其他階的快取)、最終階快取(LLC)、和/或其組合。
於許多實施例中,一或多個核心502可執行多執行緒。系統代理510可包含用以協調及操作核心502之組件。系統代理單元510可包含例如電源控制單元(PCU)。PCU可為或包含用以調節核心502之電源狀態的 邏輯與組件。系統代理510可包含顯示引擎512,用以驅動外部連接的一或多個顯示器或圖形模組560。系統代理510可包含用以對圖形模組之匯流排通訊的介面514。在一個實施例中,介面514可由PCI Express(PCIe)實現。在另一實施例中,介面514可由PCI Express Graphics(PEG)實現。系統代理510可包含直接媒體介面(DMI)516。DMI 516可提供主機板或電腦系統之其他部份的不同橋接間之連結。系統代理510可包含PCIe橋接器518,用以提供PCIe連結至電腦系統之其他元件。PCIe橋接器518可使用記憶體控制器520及一致邏輯522而被實現。
核心502可以任何適合的方式被實現。核心502的架構和/或指令集可為同質或異質。在一個實施例中,某些核心502可為循序而其他可為亂序。在另一實施例中,二或更多核心502可執行相同的指令集,而其他的核心可執行該指令集或不同指令集之子集。
處理器500可包含通用處理器,例如美國加州聖塔克拉拉的Intel Corporation所販售的CoreTM i3、i5、i7、2 Duo(雙核)及Quad(四核)、XeonTM、ItaniumTM、XScaleTM或StrongARMTM處理器。處理器500可由其他公司提供,例如ARM Holdings,Ltd,MIPS等。處理器500可為特殊目的處理器,例如網路或通訊處理器、壓縮引擎、圖形處理器、協同處理器、嵌入式處理器等等。處理器500可被實現於一或多個晶片上。藉由使用任何的處理技術(例如BiCMOS、CMOS、或NMOS),處 理器500可為一或多個基板的一部分和/或可被實現於一或多個基板上。
在一個實施例中,給定的一個快取506可被多個核心502共用。在另一實施例中,給定的一個快取506可被一個核心502專用。將快取506指定至核心502可藉由快取控制器或其他適合的機制來處理。藉由實現給定快取506之時間切割,給定的一個快取506可被二或多個核心502共用。
圖形模組560可實現積體圖形處理子系統。在一個實施例中,圖形模組560可包含圖形處理器。再者,圖形模組560可包含媒體引擎565。媒體引擎565可提供媒體編碼與視訊解碼。
第5B圖為顯示根據本發明之實施例的核心502之範例實現的方塊圖。核心502可包含通訊地耦接至亂序引擎580之前端570。核心502可經由快取階層503被通訊地耦接至處理器500之其他部份。
前端570可以任何適合方式實現,例如全部或部份之如上所述前端201。在一個實施例中,前端570可經由快取階層503而通訊地耦接至處理器500之其他部份。於另一實施例中,前端570可從處理器500之部份提取指令並當其通過亂序執行引擎580時準備稍後將於處理器管線中使用的指令。
亂序執行引擎580可以任何適合方式實現,例如全部或部份之如上所述亂序執行引擎203。亂序執行 引擎580可準備從前端570接收的指令以供執行。亂序執行引擎580可包含分配模組582。在一個實施例中,分配模組582可分配處理器500之資源或其他資源(例如暫存器或緩衝器)用以執行給定指令。分配模組582可在排程器(例如記憶體排程器、快速排程器、或浮點排程器)中分配。此排程器可以第5B圖之資源排程器584來表示。分配模組582可由全部或部份之如參照第2圖所述的分配邏輯來實現。資源排程器584可基於給定資源的來源的準備狀態及執行操作所需之執行資源的可用性來決定指令何時準備好來執行。資源排程器584可藉由例如如上所述排程器202、204、206來實現。資源排程器584可排程於一或多個資源之指令的執行。在一個實施例中,此資源可在核心502之內部,且可被顯示為例如資源586。在另一實施例中,此資源可在核心502之外部,且可由例如快取階層503來存取。資源可包含例如記憶體、快取、暫存器檔案、或暫存器。核心502內部之資源可由第5B圖中之資源586來表示。如有需要,寫入資源586或從資源586讀取的值可透過例如快取階層503與處理器500之其他部份協調。當指令被指定資源時,其可被置於重排序緩衝器588中。重排序緩衝器588可追蹤指令(當其被執行時)且可基於處理器500之任何適合的標準來選擇地重排序其執行。在一個實施例中,重排序緩衝器588可識別指令或可被獨立地執行之一串列指令。此等指令或一串列指令可從其他此等指令被平行執行。於核心502中之平行執行可藉 由任何適合的數量之分開的執行區塊或虛擬處理器來執行。在一個實施例中,共用的資源(例如記憶體、暫存器、及快取)可於給定核心502內之多個虛擬處理器被存取。於其他實施例中,共用的資源可於處理器500內的多個處理實體被存取。
快取階層503可以任何適合的方式被實現。舉例來說,快取階層503可包含一或多個較低或中階快取,例如快取572、574。在一個實施例中,快取階層503可包含通訊地耦接至快取572、574之LLC 595。在另一實施例中,LLC 595可被實現於可存取處理器500的所有處理實體之模組590中。在另一實施例中,模組590可被實現於來自Intel,Inc的處理器之非核心模組中。模組590可包含用於核心502之執行但不在核心502內實現的處理器500之部份或子系統。除了LLC 595外,模組590可包含例如硬體介面、記憶體一致協調器、處理器內互連、指令管線、或記憶體控制器。處理器500可透過模組590(具體言之,LLC 595)存取RAM 599。再者,核心502之其他範例可類似地存取模組590。核心502之範例的協調可部份透過模組590而受益。
第6~8圖可顯示適於包含處理器500之範例系統,而第9圖可顯示可包含一或多個核心502之系統單晶片(SoC)上之範例系統。對於膝上型電腦、桌上型電腦、手持PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位訊號 處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、行動電話、可攜式媒體播放器、手持裝置、及各種其他電子裝置,該領域中已知的其他系統設計與實現亦可為適合的。通常,如此處所述結合處理器和/或其他執行邏輯之許多系統或電子裝置通常可為適合的。
第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。外部圖形裝置660可包含與另一週邊裝置670耦接至ICH 650之分開的圖形裝置。
於其他實施例中,額外的或不同的處理器亦可存在於系統600中。舉例來說,額外的處理器610、615可包含與處理器610相同之額外的處理器、與處理器610異質或不對稱之額外的處理器、加速器(例如圖形加速器或數位訊號處理(DSP)單元)、場可程式閘極陣列、或任何其他處理器。實體資源610、615間可有各式各樣之差異,按照包含架構的、微架構的、熱的、能源消耗特性、及類似者之價值的度量之頻譜。這些差異可有效地出現為不對稱及異質於處理器610、615間。於至少一實施例,各種處理器610、615可存在於相同的晶粒封裝中。
第7圖顯示根據本發明之實施例的第二系統700之方塊圖。如第7圖所示,多處理器系統700可包含點對點互連系統,且可包含第一處理器770及經由點對點互連750耦接之第二處理器780。各處理器770與780可為處理器500之某些版本,如同一或多個處理器610、615。
雖然第7圖顯示兩個處理器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 Express匯流排或另一第三代I/O互連匯流排之匯流排,雖然本發明之範疇不限於此。
如第7圖所示,各種I/O裝置714可被耦接至第一匯流排716,而匯流排橋接器718將第一匯流排716耦接至第二匯流排720。在一個實施例中,第二匯流 排720可為低接腳數(low pin count;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圖顯示不只記憶體732、734可被耦接至CL 872、882,連I/O裝置814亦可可被耦接至控制邏輯872、882。傳統I/O裝置815可被耦接至晶片組790。
第9圖顯示根據本發明之實施例的SoC 900之方塊圖。第5圖中類似元件以類似元件符號表示。同樣的,虛線框可表示選項的特徵於更先進的SoC。互連單元902可被耦接至:應用處理器910,其可包含一組一或多個核心502A-N及共用快取單元506;系統代理單元 510;匯流排控制器單元916;積體記憶體控制器單元914;一組一或多個媒體處理器920,其可包含積體圖形邏輯908、影像處理器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、記憶體介面控制器1045、MIPI控制器1050、快閃記憶體控制器1055、雙資料率(DDR)控制器1060、安全引擎1065、及I2S/I2C控制器1070。其他邏輯與電路可被包含於第10圖之處理器中,包含更多CPU或GPU與其他週邊介面控制器。
至少一實施例之一或多個態樣可被儲存於機器可讀取媒體上之表示處理器內的各種邏輯的代表資料來實現,當由機器讀取時,造成機器製造邏輯用以執行此處所述之技術。此代表(已知為「IP核心」)可被儲存於有形的機器可讀取媒體(「帶(tape)」)且供應至各種顧客或製造設備用以載入實際做出邏輯或處理器之製造機器內。舉例來說,IP核心(例如由ARM Holdings,Ltd.所開發的CortexTM家族之處理器及中國科學院計算技術研究所開發的龍芯(Loongson)IP核心)可被授權或販賣至各種顧客或被授權者(例如Texas Instruments、Qualcomm、Apple、或Samsung)及實現於由這些顧客或被授權者所製造的處理器。
第11圖顯示根據本發明之實施例的IP核心之發展的方塊圖。儲存器1100可包含模擬軟體1120和/或硬體或軟體模型1110。在一個實施例中,代表IP核心設計之資料可經由記憶體1140(例如硬碟)、有線連接(例 如網際網路)1150或無線連接1160而被提供至儲存器1100。由模擬工作及模型所產生的IP核心資訊可接著被傳送至製造設備1165,於該製造設備中其可被第三方製造用以執行根據至少一實施例之至少一指令。
在一些實施例中,一或多個指令可對應至第一類型或架構(例如x86)且被轉譯或模擬於不同類型或架構(例如ARM)之處理器上。根據一實施例,指令可因此被執行於任何處理器或處理器類型,包含ARM、x86、MIPS、GPU、或其他處理器類型或架構。
第12圖顯示根據本發明之實施例第一類型的指令如何被不同類型的處理器模擬。於第12圖中,程式1205包含可執行根據一實施例之相同或實質相同的功能作為指令之一些指令。然而,程式1205之指令可為不同於處理器1215或與處理器1215不相容的類型和/或格式,其表示程式1205中之該類型的指令可能無法由處理器1215原生地(natively)執行。然而,藉由仿真邏輯1210的幫助,程式1205之指令可被轉譯成可由處理器1215原生地執行的指令。在一個實施例中,仿真邏輯可被體現於硬體。在另一實施例中,仿真邏輯可被體現於有形的機器可讀取媒體,其含有軟體用以將程式1205中之類型的指令轉譯成可由處理器1215原生地執行的指令。於其他實施例中,仿真邏輯可為固定功能或可程式化硬體與儲存於有形的機器可讀取媒體上之程式的結合。在一個實施例中,處理器包含仿真邏輯,而於其他實施例中,仿真邏輯 存在處理器外部且可由第三方提供。在一個實施例中,藉由執行處理器中或與處理器相關聯的微碼或韌體,處理器可載入體現於含有軟體之有形的機器可讀取媒體中之仿真邏輯。
第13圖顯示根據本發明之實施例對比軟體指令轉譯器將於來源指令集中之二進制指令轉換至於目標指令集中之二進制指令之使用之方塊圖。於所示實施例中,指令轉譯器可為軟體指令轉譯器,雖然指令轉譯器可被實現於軟體、韌體、硬體、或各種其組合。第13圖顯示高階語言1302之程式可使用x86編譯器1304被編譯用以產生x86二進制碼1306,其可被處理器以至少一x86指令集核心1316原生地執行。具有至少一x86指令集核心1316之處理器代表可實質地執行與具有至少一x86指令集核心之Intel處理器相同功能之任何處理器,藉由相容地執行或處理(1)Intel x86指令集核心之指令集的實質部份或(2)目標要運行於具有至少一x86指令集核心之Intel處理器的應用程式或其他軟體之物件碼版本,用以達成與具有至少一x86指令集核心之Intel處理器實質相同的結果。x86編譯器1304表示可被操作以產生x86二進制碼1306(例如物件碼)之編譯器,其可(無論有沒有額外的連結處理(linkage processing))被執行於具有至少一x86指令集核心1316之處理器。同樣地,第13圖顯示高階語言1302之程式可使用替代指令集編譯器1308被編譯用以產生替代指令集二進制碼1310,其可被沒有至少一x86指 令集核心1314之處理器(例如具有執行加州森尼韋爾的MIPS Technologies之MIPS指令集之核心和/或執行加州森尼韋爾的ARM Holdings之ARM指令集的處理器)原生地執行。指令轉譯器1312可被使用以將x86二進制碼1306轉換成可由沒有至少一x86指令集核心1314之處理器原生地執行之碼。此經轉換的碼可能與替代指令集二進制碼1310不完全相同;然而,經轉換的碼將完成一般操作且彌補來自替代指令集之指令。因此,指令轉譯器1312表示軟體、韌體、硬體、或其結合,其透過倣真、模擬、或任何其他處理,允許不具有x86指令集處理器或核心之處理器或其他電子裝置來執行x86二進制碼1306。
第14圖為顯示根據本發明之實施例的處理器之指令集架構1400的方塊圖。指令集架構1400可包含任何適合的數量或種類的組件。
舉例來說,指令集架構1400可包含例如一或多個核心1406、1407與圖形處理單元1415之處理實體。核心1406、1407可透過任何適合的機制(例如透過匯流排或快取)而通訊地耦接至其餘的指令集架構1400。在一個實施例中,核心1406、1407可透過L2快取控制1408(其可包含匯流排介面單元1409及L2快取1410)而通訊地耦接。核心1406、1407及圖形處理單元1415可被通訊地耦接彼此且透過互連1410耦接至指令集架構1400之其餘者。在一個實施例中,圖形處理單元1415可使用視訊編 解碼器1420,其界定特定視訊訊號對於輸出進行編碼與解碼之方式。
指令集架構1400亦可包含任何數量或類型的介面、控制器、或用以與電子裝置或系統之其他部份介接或通訊之其他機制。此機制有助於與例如週邊、通訊裝置、其他處理器、或記憶體互動。於第14圖之範例中,指令集架構1400可包含液晶顯示器(LCD)視訊介面1425、用戶介面模組(SIM)介面1430、啟動ROM介面1435、同步動態隨機存取記憶體(SDRAM)控制器1440、快閃控制器1445、及串列週邊介面(SPI)主單元1450。LCD視訊介面1425可提供來自例如GPU 1415的視訊訊號之輸出及透過行動產業處理器介面(MIPI)1490或高解析度多媒體介面(HDMI)1495至顯示器。此顯示器可包含例如LCD。SIM介面1430可提供存取至或從SIM卡或裝置。SDRAM控制器1440可提供存取至或從記憶體(例如SDRAM晶片或模組1460)。快閃控制器1445可提供存取至或從記憶體(例如快閃記憶體1465或RAM之其他例子)。SPI主單元1450可提供存取至或從通訊模組,例如藍牙模組1470、高速3G數據機1475、全球定位系統模組1480、或實現例如802.11通訊標準之無線模組1485。
第15圖為顯示根據本發明之實施例實現指令集架構的處理器之指令架構1500的更詳細方塊圖。指令架構1500可為微架構。指令架構1500可實現指令集架構1400之一或多個態樣。再者,指令架構1500可顯示用於 在處理器內之指令的執行之模組及機制。
指令架構1500可包含通訊地耦接至一或多個執行實體1565之記憶體系統1540。再者,指令架構1500可包含快取及匯流排介面單元,例如通訊地耦接至執行實體1565及記憶體系統1540之單元1510。在一個實施例中,指令至執行實體1565之載入可被執行之一或多個階段所執行。此階段可包含例如指令預提取階段1530、雙指令解碼階段1550、暫存器更名階段1555、發出階段1560、及寫回階段1570。
在一個實施例中,記憶體系統1540可包含經執行的指令指標1580。經執行的指令指標1580可儲存識別在一批次的指令內最早的、未被配送的指令之值。最早的指令可對應至最低程式排序(PO)值。PO可包含指令之唯一的數字。此種指令可為由多個股(multiple strand)表示執行緒內的單一指令。PO可被使用以對指令排序用以確保碼之語義(semantics)正確執行。PO可藉由例如評估PO於指令中編碼的增值(而非絕對值)之機制被重建。此經重建的PO可已知為「RPO」。雖然PO可於此參照,此PO可與RPO交換地被使用。股可包含彼此資料相依(data dependent)之一序列的指令。股可藉由二進制轉譯器在編譯時被設置。執行股之硬體可根據各種指令的PO而循序執行給定股之指令。執行緒可包含多個股使得不同股之指令可彼此相依。給定股之PO可為股中之最早的指令之PO,其自發出階段未被配送至執行。因此,給定多個股 之執行緒(各股包含由PO排序的指令),經執行的指令指標1580可儲存於執行緒中最早的(以最小數字表示)PO。
在另一實施例中,記憶體系統1540可包含失效指標1582。失效指標1582可儲存識別最後的失效指令的PO之值。失效指標1582可被例如失效單元454設定。若還沒有指令被失效,則失效指標1582可包含空(null)值。
執行實體1565可包含處理器可藉其執行指令之任何適合的數量與類型的機制。於第15圖之範例中,執行實體1565可包含ALU/乘法單元(MUL)1566、ALU 1567、及浮點單元(FPU)1568。在一個實施例中,此實體可利用包含於給定位址1569內之資訊。與階段1530、1550、1555、1560、1570結合之執行實體1565可一起形成執行單元。
單元1510可以任何適合的方式被實現。在一個實施例中,單元1510可執行快取控制。於此實施例中,單元1510可因此包含快取1525。在另一實施例中,快取1525可被實現為任何適合的大小之L2統一快取,例如零、128k、256k、512k、1M、或2M位元組之記憶體。於另一實施例中,快取1525可被實現於錯誤更正碼記憶體中。在另一實施例中,單元1510可執行匯流排介接至處理器或電子裝置之其他部份。於此實施例中,單元1510可因此包含匯流排介面單元1520以供透過互連、處理器內匯流排、處理器間匯流排、或其他通訊匯流排、 埠、線路來通訊。匯流排介面單元1520可提供介接用以對於執行實體1565與系統在指令架構1500外部的部份之間的傳送來執行例如記憶體與輸入/輸出位址的產生。
為了進一步幫助其功能,匯流排介面單元1520可包含中斷控制及分配單元1511,用以產生中斷及其他通訊至處理器或電子裝置之其他部份。在一個實施例中,匯流排介面單元1520可包含窺探控制單元1512,其處理快取存取及與多處理核心的一致性。在另一實施例中,為了提供此功能,窺探控制單元1512可包含快取至快取轉換單元,其處理不同快取間之資料交換。在另一實施例中,窺探控制單元1512可包含一或多個窺探過濾器1514(其監視其他快取(未圖示)的一致性)使得快取控制器(例如單元1510)不需要直接執行此監視。單元1510可包含任何適合的數量之計時器1515以供指令架構1500之動作的同步。同樣的,單元1510可包含AC埠1516。
記憶體系統1540可包含任何適合的數量及類型的機制以對於指令架構1500處理之需求來儲存資訊。在一個實施例中,記憶體系統1540可包含載入儲存單元1530以供儲存與寫入至記憶體或暫存器或從記憶體或暫存器讀回有關的資訊。在另一實施例中,記憶體系統1540可包含轉譯後備緩衝器(TLB)1545,其提供實體與虛擬位址間之位址值的查詢。在另一實施例中,記憶體系統1540可包含記憶體管理單元(MMU)1544以幫助與虛擬記憶體之存取。在另一實施例中,記憶體系統1540可包含 預提取器1543以在指令真的需要被執行之前請求來自記憶體之指令,用以降低等待時間。
用以執行指令的指令架構1500之操作可透過不同階段來執行。舉例來說,使用單元1510,指令預提取階段1530可透過預提取器1543存取指令。所提取的指令可被儲存於指令快取1532中。預提取階段1530可致使用於快速迴圈模式之選項1531,其中形成足夠小而適配於給定快取中的迴圈之一序列的指令係被執行。在一個實施例中,此執行可不需要從例如指令快取1532來存取額外的指令而被執行。決定預提取哪個指令可由例如分支預測單元1535(其可存取全域歷程(global history)1536中之執行的指示、目標位址1537之指示、或返回堆疊1538之用以決定哪個碼之分支1557將下一個被執行的內容)完成。結果,此分支可被可能地預提取。分支1557可透過如下所述之其他階段的操作而被產生。指令預提取階段1530可提供指令以及有關未來指令之任何預測至雙指令解碼階段1550。
雙指令解碼階段1550可將接收的指令轉譯成可被執行之微碼式指令。雙指令解碼階段1550可在每個時脈週期同時地解碼兩個指令。再者,雙指令解碼階段1550可將其結果傳至暫存器更名階段1555。此外,雙指令解碼階段1550可從其解碼及微碼之最終執行來決定任何所得分支。此結果可被輸入至分支1557中。
暫存器更名階段1555可將虛擬暫存器或其他 資源之參考轉譯成實體暫存器或資源之參考。暫存器更名階段1555可包含於暫存器池1556中之對映的指示。暫存器更名階段1555可當接收時改變指令並將結果傳送至發出階段1560。
發出階段1560可發出或配送命令至執行實體1565。此發出可以亂序方式完成。在一個實施例中,多個指令可在被執行之前於發出階段1560被保持。發出階段1560可包含指令佇列1561以供保持該等多個指令。指令可由發出階段1560發出至特定處理實體1565基於任何適合的標準,例如對於給定指令之執行的資源可用性或適用性。在一個實施例中,發出階段1560可重排序於指令佇列1561內之指令,使得接收的第一個指令不會是第一個被執行的指令。基於指令佇列1561之排序,額外的分支資訊可被提供至分支1557。發出階段1560可將指令傳至執行實體1565以供執行。
於執行時,寫回階段1570可將資料寫入至暫存器、佇列、或用以通訊給定命令的完成之指令架構1500的其他結構。基於在發出階段1560中設置的指令之次序,寫回階段1570之操作可致使將被執行之額外的指令。指令架構1500之效能可藉由追蹤單元1575被監視或除錯。
第16圖為顯示根據本發明之實施例的處理器的指令集架構之執行管線1600的方塊圖。執行管線1600可說明例如第15圖之指令架構1500之操作。
執行管線1600可包含步驟或操作之任何適合的組合。於步驟1605,下一個被執行的分支的預測可被完成。在一個實施例中,此預測可基於指令之先前的執行及其結果。於步驟1610,對應至執行之預測分支的指令可被載入至指令快取中。於步驟1615,於指令快取中之一或多個指令可被提取以供執行。於步驟1620,已被提取的指令可被解碼成微碼或更特定的機器語言。在一個實施例中,多個指令可被同時地解碼。於步驟1625,於解碼的指令內之對暫存器或其他資源的參考可被再指定(reassign)。舉例來說,對虛擬暫存器的參考可被對應的實體暫存器的參考取代。於步驟1630,指令可被配送至佇列以供執行。於步驟1640,指令可被執行。此執行可以任何適合的方式被執行。於步驟1650,指令可被發出至適合的執行實體。指令被執行的方式可基於執行該指令的特定實體。舉例來說,於步驟1655,ALU可執行算術運算。ALU可對其運算利用單一時脈週期以及兩個移位器。在一個實施例中,兩個ALU可被利用,且因此兩個指令可在步驟1655被執行。於步驟1660,結果分支之決定可被完成。程式計數器可被使用以指出分支將被完成之目的地。步驟1660可被執行於單一時脈週期內。於步驟1665,浮點算術可藉由一或多個FPU被執行。浮點操作可需要多個時脈週期用以執行,例如兩個至十個週期。於步驟1670,乘法與除法操作可被執行。此操作可被執行於多個時脈週期,例如四個時脈週期。於步驟1675,載 入及儲存至暫存器或管線1600之其他部份的操作可被執行。該操作可包含載入及儲存位址。此操作可被執行於四個時脈週期。於步驟1680,寫回操作可被執行,其為步驟1655~1675之操作所需。
第17圖為顯示根據本發明之實施例用於利用處理器1710之電子裝置1700的方塊圖。電子裝置1700可包含例如筆記型電腦、超輕薄筆電、電腦、塔型伺服器(tower server)、機架伺服器(rack server)、刀鋒型伺服器(blade server)、膝上型電腦、桌上型電腦、平板電腦、行動裝置、電話、嵌入式電腦、或任何其他適合的電子裝置。
電子裝置1700可包含通訊地耦接至任何適合的數量或類型之組件、週邊、模組、或裝置之處理器1710。此耦接可被任何適合的類型之匯流排或介面實現,例如I2C匯流排、系統管理匯流排(SMBus)、低接腳數(LPC)匯流排、SPI、高解析度音訊(HDA)匯流排、串列先進技術附接(Serial Advance Technology Attachment;SATA)匯流排、USB匯流排(版本1、2、3)、或通用異步接收器/傳送器(UART)匯流排。
此組件可包含例如顯示器1724、觸控螢幕1725、觸控板1730、近場通訊(NFC)單元1745、感測器集線器1740、熱感測器1746、快速晶片組(EC)1735、信任平台模組(TPM)1738、BIOS/韌體/快閃記憶體1722、數位訊號處理器1760、碟機1720(例如固態硬碟(SSD)或硬碟 機(HDD))、無線區域網路(WLAN)單元1750、藍牙單元1752、無線廣域網路(WWAN)單元1756、全球定位系統(GPS)1755、相機1754(例如USB 3.0相機)、或實現於例如LPDDR3標準之低電源雙資料率(LPDDR)記憶體單元1715。這些組件各可以任何適合的方式被實現。
再者,於許多實施例中,其他組件可透過上述組件被通訊至耦接至處理器1710。舉例來說,加速計1741、環境光感測器(ALS)1742、羅盤1743、及陀螺儀1744可被通訊地耦接至感測器集線器1740。熱感測器1739、風扇1737、鍵盤1736、及觸控板1730可被通訊地耦接至EC 1735。揚聲器1763、頭戴式耳機1764、及麥克風1765可被通訊地耦接至音訊單元1762,其可依次被通訊地耦接至DSP 1760。音訊單元1762可包含例如音訊編解碼器及D類放大器。SIM卡1757可被通訊地耦接至WWAN單元1756。例如WLAN單元1750及藍牙單元1752以及WWAN單元1756可用下一代形式因素(next generation form factor:NGFF)被實現。
第18圖為根據本發明之實施例用以實現用於壓縮和旋轉的指令和/或邏輯之系統的圖示。在一個實施例中,該指令可以是向量指令。在另一實施例中,該指令可以促進在向量暫存器的結果的累積。在又一實施例中,因為迴圈執行是有條件的,該指令可以允許沒有另外被向量化的指令的向量化。在仍然另一實施例中,指令可以壓縮稀疏的資料到記憶體的緊縮區域中。在其他實施例中, 當指令被連續多次呼叫時,指令將附加壓縮的資料到先前壓縮的資料的末尾。該資料可以經由資料的末尾的索引的旋轉被附加到先前壓縮的資料的末尾。來源資料可以連續地駐留在該來源向量中,但被選擇性地複製到目的地的來源資料被複製之後可能不連續連續地駐留在目的地中。
系統1800可處理和執行具有可能被向量化的迴圈操作的指令。可被向量化的迴圈操作可以被改變或修改,以包含用於壓縮和旋轉的向量指令。這些改變或修改可能在提供給系統1800的指令流1802內完成,或藉由編譯器1804並插回到指令流1802,或藉由處理器1802之內的二進制轉譯器、動態轉譯器、即時轉譯器並插回到指令流1802。無論指令的來源,其可以藉由處理器1802中的執行管線來執行。
用於壓縮和旋轉的指令可以用任何合適的方式來表示。例如,指令可稱為“VCOMPRESSROTATE”。在一個實施例中,可建立用於不同資料類型的指令的多個變體。例如,該指令的變體可存在於雙或單精確度浮點數、整數、二進制值、字組、雙字組整數或四字組整數。在另一個實施例中,該指令可以包含任何適當數量或種類的旗標或參數。該旗標可以指定資料類型。可使用任何適當數量或種類的旗標或參數。一些旗標或參數可被省略,並且該表示的設置可以是固有的或硬編碼到該指令的執行。某些旗標或參數可以是可選的,而且該表示的設置可預設地來設置。
在一個實施例中,旗標或參數可指定一或多個向量目的地(“VDst”),其中將被壓縮的資料將被儲存。向量目的地可以是,例如,暫存器或記憶體位置。在進一步的實施例中,目的地可以包含未對齊的記憶體。
在另一個實施例中,旗標或參數可以指定在該壓縮可以開始的向量目的地之內的位置(“RotateValue”)。該位置可能是索引。該位置可從指令的先前迭代中指定。如果指令的後續迭代導致記憶體位置或暫存器填滿,該位置可以相對於該記憶體位置或暫存器的索引和長度被標準化。
在又一實施例中,旗標或參數可以指定來源(“VSrc”),其利用旋轉被壓縮。該來源可包含資料的向量。此外,該來源可以包含資料的向量,每一個具有定義的長度。定義的長度可被用於將整體資料壓縮到目的地。
在又一實施例中,旗標或參數可指定掩模“{mask}”以指定來源的元件中的哪一個將被選擇性地壓縮到目的地。例如,在對應於在來源中的相同位置中的元件的掩模的位置中的“1”會導致在相同位置的元件將被壓縮並加入到目的地。在位置中的“0”將導致元件被省略。
該指令可由處理器1806執行,其可以用任何合適的方式來實現,包含部分藉由在第1~17圖中描述的元件。例如,處理器1806可以包含用於執行管線的各種組件。處理器1806可以包含多個核心1826、引擎和亂序處理。處理器1806可以包含前端1808以從包含指令流 1804的記憶體接收或提取指令。前端1808可包含提取器1810以有效地以有可能要執行的指令填充管線。前端1808可包含解碼器1812以解碼指令成操作碼來執行、決定其意義、取得副作用、所需的資料、消耗的資料和待產生的資料。二進制轉譯器1814可用於最佳化代碼。用於壓縮和旋轉的指令可以駐留在如由編譯器1804產生的,或可藉由二進制轉譯器1814建立的指令流1802。資訊可被傳遞給在執行管線中的亂序或依序執行引擎。執行管線可包含用於亂序執行的更名指令的更名和分配單元1818,其在與失效單元1824共延的重排序緩衝區(ROB)中儲存這些更名常規,以便指令可將依他們收到的順序失效。更名和分配單元1818進一步可以分配用於並行指令執行的資源。排程器1820可以將指令排程以當有輸入時在執行單元1822上執行。執行單元1822的輸出可以在ROB中佇列。前端1808可嘗試預測將防止在序列流執行指令,並可以提取可能執行的指令流的任何行為。例如,當有誤預測時,ROB可轉而通知前端和一組可能被執行的不同指令。前端1808可儲存資料,如用於分支預測的元資料。指令和參數可以從包含多層快取的記憶體子系統1828被拉動,並且結果可以被寫入到該記憶體子系統1828。這些可能包含RotateValue、VSrc、Mask或VDst。
在一個實施例中,VCOMPRESSROTATE指令可提供用於壓縮在VSrc中的元件和累積在VDst中的結 果。在另一個實施例中,在VSrc中的元件的壓縮可以選擇性地根據在Mask中的指定來進行。在又一實施例中,該累積可能開始於如由RotateValue指定的VDst之內索引來進行。在進一步的實施例中,如果RotateValue超過VDst的大小,累積將藉由VDst的大小開始於對應於RotateValue的MOD操作的VDst中的索引。在另一個進一步的實施例中,RotateValue可以根據從VSrc累積元件的數量被增加。RotateValue可以持續VCOMPRESSROTATE的下一個操作。對於VCOMPRESSROTATE的第一個操作,RotateValue可以被初始化為零。
VCOMPRESSROTATE的範例操作可以由以下的偽代碼來說明。注意,以下的偽代碼僅用於範例的目的被提供,並且可以包含更多或更少的陳述或適合於實現執行的變化。
在一個實施例中,VCOMPRESSROTATE可以利用以上所示的參數的子集被呼叫。在這樣的實施例中,其他參數可以被預設設置、可以是固有的或可以是可選的。例如,VCOMPRESSROTATE可以利用VSrc被呼叫,但RotateValue、mask和VDst可以被設置到特定的暫存器或記憶體位置。在另一範例中,VCOMPRESSROTATE可以利用VSrc和mask被呼叫,但RotateValue、mask和VDst可以被設置到特定的暫存器或記憶體位置。例如,如果沒有指定,RotateValue和VDst可預設為特定暫存器。
VCOMPRESSROTATE可以藉由將計數器“j”設置為零來初始化。接著,VCOMPRESSROTATE可以確定VDst是否將被清除。這樣的確定可以根據,例如, VCOMPRESSROTATE的特定變體是否被呼叫,其清除或不清除VDst被呼叫的,或VCOMPRESSROTATE的旗標或參數是否被設定以指示VDst是否將被清除來完成。如果VDst將被清除,那麼VDst的陣列中的值可被設置為零。
VCOMPRESSROTATE可能進入迴圈。迴圈操作可以被向量化。該迴圈操作可以被執行與VSrc的大小相匹配的次數。在一個實施例中,該迴圈也可以被執行與VSrc中的元件的數量相匹配的次數。該迴圈可以根據迴圈計數器“i”被索引,其可在每次迭代遞增。
在每一個迴圈迭代中,對於掩模陣列中的對應條目,VCOMPRESSROTATE可以確定該條目是否被設置。這樣的一組條目可指示對應於VSrc中的索引的元件是被選擇性地壓縮。如果該條目未被設置,VCOMPRESSROTATE可以繼續操作。如果RotateValue不使用時,如果該條目被設置,在VDst陣列中的“j”位置的條目可以被設置到VSrc陣列的“i”位置的值。在一個實施例中,在VDst陣列中的等於“j”加RotateValue的位置的條目可以被設置為VSrc陣列的“i”位置的值。在另一個實施例中,VDst陣列中的位置可以被標準化,以防RotateValue和“j”的總和長得太大,以適應VDst的可能索引值的範圍內。這樣的標準化可以被進行,例如,藉由施加到RotateValue和“j”的總和的MOD函數,其中該總和是藉由在VSrc中的元件數量的大小劃分。藉由選擇性地 消除來自VSrc的可能元件,結果可能會被壓縮到VDst。對於被壓縮至VDst的VSrc的每個元件,計數器“j”可以被遞增。
在迴圈的執行之後,RotateValue的值可以藉由增加的元件數量遞增。這樣的元件數量可包含,例如,在Mask中所有正位元的總和。RotateValue的值可以持續直到VCOMPRESSROTATE的另一個實例被呼叫。因此,已知用以儲存RotateValue的暫存器可保留到執行預測確定它不再需要。
可以從VCOMPRESSROTATE的執行受益的代碼的範例以偽代碼如下所示。
在此代碼段中,對於從零到N的範圍索引,確定在給定索引處的陣列b中的條目是否是小於定義的常數topVal。如果在給定索引處的b中的條目係小於topVal,則來自給定索引處的另一個陣列a的元件被附加到由去關聯呼叫建立的另一個陣列dst。這個迴圈不能使 用現有的指令被向量化,因為在迴圈呼叫之內有條件的操作。
然而,使用VCOMPRESSROTATE,代碼可以被重寫,以便被向量化。代碼可以藉由使用編譯器、解釋器、最佳化器被自動改寫或由程式設計師改寫。向量化的比較可以在topVal和陣列b的元件之間進行。結果可能是對應到應該添加到dsta的位置的“零”和“一”值的陣列。因此,在對於VCOMPRESSROTATE的向量化執行的呼叫中,“零”和“一”值的陣列的這個結果可以被設置為Mask、設置為VSrc的a,和設置為VDst的dst。例如,使用VCOMPRESSROTATE轉換或重寫的代碼可能會出現在如下偽代碼中:int a[];float b[];const float topVal;int dst[];rotatevalue=0;mask=vCompareGreater(topVal,b);VCOMPRESSROTATE(dst,mask,a,RotateValue);
第19圖顯示根據本發明實施例的系統1800的範例操作。給定向量a 1902和向量b 1904,用以壓縮和旋轉的指令可以利用旋轉操作或考量從向量b 1904選擇性地壓縮元件為向量a 1902。如果來自連續壓縮操作的元件數目超過了向量a 1902的大小,額外的元件可被重寫到先前寫入到向量a 1902的第一元件。
在壓縮和旋轉指令的第一範例操作中,如示 於第19圖,旋轉值(RotateValue)可以被設置為零值。此外,目的地暫存器或向量,如向量a 1902可被清除並設置為零。在其它範例中,向量a 1902已經部分充滿,旋轉值可以根據在向量a 1902中已填充的值的非零的數目來設置。在又其它實施例中,另一目的地暫存器或不同於向量a 1902的向量係為指令的目的地,旋轉值可以根據在這樣的目的地中已填充的值的非零的數目來設置。指令的目的地,如果已經被填充,可以被緊縮或壓縮,使得在這樣的目的地中設定的所有值可以從目的地的開始索引或位置是連續的。此外,向量b 1904的內容可用在第19圖中顯示的範例值進行設定。向量的長度可以如第19圖的範例中顯示的為十六。
該指令的掩模可根據任何合適的標準來設置。該標準可以取決於指令的特殊應用或使用。例如,掩模1906可以被設定以使只有小於所定義值的來源的值被壓縮和轉動。所定義的值可以被指定為在第19圖的範例中的“TopVal”。掩模1906可能會在其它範例中被定義,例如,根據在來源向量中的值是否符合變數或函數的標準,在來源向量中與其他值的關係,或與其他常數比較。掩模1906可利用向量化的比較或其它功能來設定。在第19圖的範例中,在(1),如果向量b 1904的相應元件不到1000,掩模1906可以包含設定值。
在(2),壓縮和迴圈指令的第一實例可以被呼叫。範例參數以對於VCOMPRESSROTATE的呼叫來顯 示。然而,某些參數可以是固有的、可選的,或不特定用於呼叫VCOMPRESSROTATE。目的地向量(VDst)可以被指定為向量a 1902、來源向量(VSrc)可以被指定為向量b 1904、掩模可以被指定為掩模1906,並且RotateValue可以被指定。
說明VCOMPRESSROTATE的執行的範例迭代的表被顯示。雖然迭代被顯示為線性執行,VCOMPRESSROTATE實際上可以向量化的方式執行,其中顯示的執行的迭代係同時執行。迭代可以包含用於來源向量b 1904的每一個元件的迭代。每個這樣的迭代可以根據索引,如i被追蹤。另一個索引j可被用來確定在VCOMPRESSROTATE的實例的執行期間從來源被壓縮和旋轉到目的地的元件數目。索引j可以初始地設置為零。
對於來源向量b 1904中的每個元件,掩模1906的值可被檢查。如果在其中的值沒有被設置,沒有行動將被採取,並且i對於後續迭代(儘管這可能以向量化的方式進行)遞增。如果在其中的值被設置,則來自來源向量b 1904的對應值可用壓縮和旋轉的方式被添加到目的地向量a 1902。
為了添加來自來源向量b 1904可用壓縮和旋轉的方式被添加到目的地向量a 1902的值,第一目的地索引可以被確定。在一個實施例中,目的地索引可以根據索引j被設置,定義在VCOMPRESSROTATE的執行的實例期間,多少數值已經從來源被添加到目的地。在進一步 的實施例中,目的地索引可以根據j加上RotateValue被設置,其中VCOMPRESSROTATE的先前實例可能已建立初始偏移量。因此,先前的壓縮的努力可以被追蹤,並且目的地暫存器可以被正確填充在這些先前的努力的端部的目的地暫存器中的位置。在又進一步的實施例中,目的地索引可以根據j加上RotateValue被設置,並進一步將j加上RotateValue的可能性考慮在內將導致超出目的地暫存器的邊界的寫入。例如,當VCOMPRESSROTATE的先前實例已經從來源寫入到目的地暫存器許多次,並且在VCOMPRESSROTATE的當前實例期間,數個元件已經從來源寫入到目的暫存器時,可能會發生這樣的狀況。這可能是類似於資料溢位。目的地索引可以藉由執行對於總和的MOD操作,採取j加上RotateValue超出目的地暫存器的邊界的可能性來設置。MOD操作可以被應用到該總和,並且可以使用目的地向量的長度作為其運算元。例如,在第19圖中,j和RotateValue的總和可以是MOD除以16,向量a 1902的長度。
如果在給定的迭代索引中的掩模被設置,在相同的迭代索引中來自向量b 1904的相應值可以被寫入到如上所述確定的目的地索引處的目的地向量a 1902。此外,計數器j顯示從來源寫入到目的地的元件數量可以被增加,使得目的地向量a 1902的正確索引可以對於隨後壓縮和旋轉迭代正確地追蹤。
例如,第19圖中所示的圖表中,在(2), 迭代1~2、4、12-13和16,其可以確定在掩模1906中的對應值是清除位元的來源向量b 1904。因此,在來源向量b 1904中的值將不會被壓縮到目的地暫存器。然而,在其他迭代中,在掩模1906中的值被設定並且因此它們的值將被壓縮和旋轉到目的暫存器。例如,在第三迭代中,掩模1906可能會設置在兩個索引值,並且因此向量a 1902的零位置可用來自向量b 1904的兩個索引的元件被填充。被添加到VCOMPRESSROTATE的實例中的向量a 1902的元件數量j可以被遞增。類似的操作可以在其它迭代中的每一個發生。
在(2)中,在VCOMPRESSROTATE的執行的結尾,向量a 1902可導致如第19圖中所示的向量。來自向量b 1904的十個元件可能已經被添加到向量a 1902中的前十個位置。
在(3)中,用於將對於相同的目的地(向量a 1902)被執行VCOMPRESSROTATE的後續實例的準備工作可被完成。該來源可以是任何合適的來源,包含向量c 1910。
RotateValue可以從VCOMPRESSROTATE的先前執行來確定。如在(2)執行的先前實例導致十個元件被添加到向量a 1902,RotateValue可以被設置為十。掩模1906可基於新的輸入(向量c 1910)被重新確定。掩模1906可根據上述相同標準來計算,其中該輸入向量c 1910的每個值係相比於TopVal,並且如果元件比 TopVal低,則掩模1906的對應值可以被設置為1。掩模計算可利用向量比較被向量化。
在(4),VCOMPRESSROTATE可以利用向量c 1910作為來源、向量a 1902作為目的地、掩模1906的確定的元件,以及來自儲存在RotateValue的先前VCOMPRESSROTATE的結果來執行。
VCOMPRESSROTATE的迭代被顯示。在除了第三和第十五的所有迭代中,掩模1906的位元可以被清除。在第三迭代中,目的地暫存器(向量a 1902)可以在等於j(0)加上RotateValue(10)的位置被設置為來自該來源向量b 1904的第二位置的值(121)。當元件已經從來源被添加到目的地向量,該j計數器可以被遞增。在第十五迭代中,目的地暫存器向量a 1902可在等於j(1)加上RotateValue(10)的位置被設置為來自該來源向量b 1904的第十四位置的值(667)。
在執行之後,向量a 1902可包含從來源向量c 1910壓縮的額外的兩個元件。RotateValue可基於壓縮到向量a 1902的元件的總數被更新到十二。
在(5),VCOMPRESSROTATE可利用向量d 1912作為來源、向量a 1902作為目的地、基於向量d 1912的新計算的掩模1906和來自儲存在RotateValue的先前VCOMPRESSROTATE的結果來執行。向量d 1912可能包含低於TopVal的值的五個元件,從而VCOMPRESSROTATE可以添加這些五個元件到向量a 1902。在VCOMPRESSROTATE的執行期間,額外的五個元件被添加到開始於對應於RotateValue(12)的位置的向量a 1902,否則可能會造成在位置十七的嘗試寫入,這將超過向量的大小。因此,將要從向量d 1912(值342)添加到向量a 1902的第五元件被添加到在位置零的向量a 1902。這個位置是藉由採取j(4)和RotateValue(12)的總和與藉由向量a 1902(16)的大小施加MOD函數(導致零)的操作來確定。
第20圖為根據本發明實施例處理用於壓縮和旋轉的指令的方法2000的流程圖。
方法2000可以藉由任何合適的準則來啟動。此外,儘管方法2000描述了特定元件的操作,方法2000可藉由任何合適的元件的組合或類型進行。例如,方法2000可以由在第1~19圖中顯示的元件或可操作以實現方法2000的任何其它系統來實現。因此,方法2000的較佳的初始化點和包含方法2000的元件的順序可以取決於所選擇的實現。在一些實施例中,某些元件可以選擇性地省略、重組、重複或組合。此外,方法2000的部分可以在本身之內平行執行。
在步驟2005,指令可被提取。該指令可以是用以用向量化的方式將資訊的向量壓縮和旋轉。該指令可以用以將來源向量(VSrc)壓縮和旋轉到目的地向量(VDst)。在步驟2010,該指令可被解碼。在步驟2015,該指令可以被分配和排程以執行。
在步驟2020,用以選擇性地從來源向量壓縮到目的地向量的資料的掩模可以被確定。該掩模可以是特定於指令的應用和使用情境。該掩模可識別哪些來源向量的元件將要壓縮。此外,該掩模係與來源向量具有相同長度,並且包含用於該來源向量的每個索引值的位元,以識別該值是否將被壓縮到目標向量。掩模的確定可以用向量化的操作來執行諸如,例如,向量比較操作。如果指令正在針對目的地第一次執行,表示先前壓縮到給定目的地的元件數目的RotateValue可以被初始化為零。此外,用於目前的壓縮元件的數目的計數器可被初始化。
在步驟2025,壓縮和旋轉可以開始。步驟2025至2055可以經由向量化操作並行地多次進行。在一個實施例中,可以根據掩模向量來確定在來源向量中的給定元件是否被屏蔽來選擇性壓縮和旋轉。如果在來源向量中的給定的元件沒有被屏蔽,則方法2000可進行到步驟2050。否則,如果在來源向量中的給定的元件被屏蔽,則方法2000可進行到步驟2030。
在步驟2030,在一個實施例中,可確定被壓縮到目的地的該元件是否會導致目的地的溢位。例如,這樣的確定可以藉由確定壓縮到目的地元件數目(在指令的目前實例,和在指令的過去實例)是否超過了目的地的大小。這樣的計算可藉由確定RotateValue和當前壓縮元件的數目是否超過了目的地向量大小來進行。目前的壓縮元件的數目可以利用在步驟2020初始化的計數器被追蹤。 如果未超過目的地向量大小,則方法2000可進行到步驟2040。如果目的地向量大小超過,則方法2000可進行到步驟2035。
在步驟2035,RotateValue與壓縮元件的目前數量的總和可以被取目的地向量的大小的模數(MOD)。結果可以是用於目的地向量的索引。方法2000可以繼續到步驟2045。
在步驟2040,用於目的地向量的索引可被設置為RotateValue與壓縮元件的目前數量的總和。
在步驟2045,來源向量的元件可以被添加到目的地向量和所確定的索引。壓縮元件的目前數量的計數可被遞增。
在步驟2050,可以確定來源向量的所有元件是否已經被評估。如果不是,則方法2000可以在步驟2025重複,否則,在步驟2055,RotateValue可以利用在向量目的地中的設定值的數量進行更新。RotateValue可相對於相同的向量目的地持續指令的未來執行。
在步驟2060,該指令可被失效。在步驟2065,可確定方法2000是否會在步驟2005可選擇性地重複或終止。
此處所揭露的機制之實施例可用硬體、軟體、韌體、或此實現方式之組合來實現。本發明之實施例可被實現為執行於可程式化系統(包含至少一處理器、儲存系統(包含揮發性及非揮發性記憶體和/或儲存元件)、至 少一輸入裝置、及至少一輸出裝置)之電腦程式或程式碼。
程式碼可被應用至輸入指令用以執行此處所述之功能及產生輸出資訊。輸出資訊可用已知方式被應用至一或多個輸出裝置。出於此應用的目的,處理系統可包含任何具有處理器(例如數位訊號處理器(DSP)、微控制器、特殊應用積體電路(ASIC)、或微處理器)之系統。
程式碼可被實現於高階程序或物件導向程式語言以與處理系統進行通訊。程式碼亦可被實現於組合或機械語言,若有需要。事實上,此處所述之機制並不限於任何特定程式語言之範疇。於任何情形中,語言可為編譯或解譯語言。
至少一實施例之一或多個態樣可被儲存於機器可讀取媒體上之表示處理器內的各種邏輯的代表指令來實現,當由機器讀取時,造成機器製造邏輯用以執行此處所述之技術。此代表(已知為「IP核心」)可被儲存於有形的機器可讀取媒體且供應至各種顧客或製造設備用以載入實際做出邏輯或處理器之製造機器內。
此機器可讀取媒體可包含(但不限於)由包含儲存媒體(例如硬碟、任何其他類型的碟機包含軟碟、光碟、光碟唯讀記憶體(CD-ROM)、可覆寫光碟(CD-RW)、及磁光碟、諸如唯讀記憶體(ROM)、隨機存取記憶體(RAM)(例如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM))、可抹除可程式化唯讀記憶體(EPROM)、 快閃記憶體、電氣可抹除可程式化唯讀記憶體(EEPROM)、磁或光卡、或適合用於儲存電子指令之任何其他類型的媒體之半導體元件)之機器或裝置所製造或形成的物件之非暫態的有形的配置。
因此,本發明之實施例亦可包含含有指令或含有設計資料之非暫態的有形的機器可讀取媒體,例如硬體描述語言(HDL),其界定此處所述之結構、電路、裝置、處理器和/或系統特徵。此實施例亦可參照為程式產品。
於某些情形中,指令轉譯器可被使用以將指令從來源指令集轉換成目標指令集。舉例來說,指令轉譯器可轉譯(例如使用靜態二進制轉譯、包含動態編譯之動態二進制轉譯)、變形、仿真、或轉換指令成待由核心處理之一或多個其他指令。指令轉譯器可以軟體、硬體、韌體、或其組合來實現。指令轉譯器可為處理器上、處理器外、或部份在處理器上與部份在處理器外。
因此,根據至少一實施例用以執行一或多個指令之技術係被揭露。雖然特定例示實施例已被說明及顯示於圖式中,應了解的是,此實施例僅為說明用而非用以限制其他實施例,且實施例並未被限制於特定所顯示與說明之解釋與配置,因為各種其他修改對於研究此揭露之所屬技術領域中具有通常知識者而言係可發生。於如本發明之技術領域中,成長快速且進一步進展不容易預見,所揭露之實施例在配置及細節上可藉由致使技術進展而不超出 本發明之原理或所附申請專利範圍之範疇而被容易地修改。
在一些實施例中,一種處理器可以包含前端,用以接收指令以將資訊的來源向量壓縮和分配到目的地向量、解碼器,用以解碼該指令、排程器,用以排程執行單元中的該指令、核心,以及失效單元,用以使該指令失效。在任何上述實施例的組合中,核心可以包含執行單元。在任何上述實施例的組合中,該處理器可以包含邏輯以執行指令。該邏輯可以在該核心或該執行單元中。在任何上述實施例的組合中,該處理器可以包含邏輯,用以將來自該來源向量的複數個屏蔽元件壓縮到該目的地向量。在任何上述實施例的組合中,該處理器可以包含邏輯,用以將該屏蔽元件放入在該目的地向量之內的可旋轉索引的該目的地向量。在任何上述實施例的組合中,該可旋轉索引用以指示由先前進入該目的地向量的元件建立的偏移。在任何上述實施例的組合中,該處理器可以包含邏輯,用以確定該複數個屏蔽元件的壓縮是否會導致該可旋轉索引超過該目的地向量的大小。在任何上述實施例的組合中,該處理器可以包含邏輯,用以基於確定該複數個屏蔽元件的壓縮將導致該可旋轉索引超過該目的地向量的該大小,將關於該目的地向量的開頭的該可旋轉索引重置以相對於該目的地向量的該開頭來壓縮該複數個屏蔽元件中的至少一個。在任何上述實施例的組合中,該處理器可以包含邏輯,用以將來自該來源向量的該屏蔽元件複製到該目的地 向量,並省略來自該來源向量的未屏蔽元件以壓縮該複數個屏蔽元件。在任何上述實施例的組合中,該屏蔽元件可以在壓縮之前,非連續地駐留在該來源向量中,並且用以在壓縮之後,連續地駐留在該目的地向量中。在任何上述實施例的組合中,該處理器可以包含邏輯,用以在該來源向量中同時執行每個元件的壓縮。在任何上述實施例的組合中,該處理器可以包含邏輯,用以執行基於向量的比較以產生用以識別該來源向量之內的該屏蔽元件的掩模。在任何上述實施例的組合中,該處理器可以包含邏輯,用以儲存壓縮元件的計數。在任何上述實施例的組合中,該處理器可以包含邏輯,用以使用餘數函數來確定該複數個屏蔽元件的壓縮將導致該可旋轉索引超過該目的地向量的該大小,並且用以重置關於該目的地向量的該開頭的該可旋轉索引。
在一些實施例中,一種系統可以包含前端,用以接收指令以將資訊的來源向量壓縮和分配到目的地向量、解碼器,用以解碼該指令、排程器,用以排程執行單元中的該指令、核心,以及失效單元,用以使該指令失效。在任何上述實施例的組合中,核心可以包含執行單元。在任何上述實施例的組合中,該系統可包含邏輯以執行指令。該邏輯可以在該核心或該執行單元中。在任何上述實施例的組合中,該系統可包含邏輯,用以將來自該來源向量的複數個屏蔽元件壓縮到該目的地向量。在任何上述實施例的組合中,該系統可包含邏輯,用以將該屏蔽元 件放入在該目的地向量之內的可旋轉索引的該目的地向量。在任何上述實施例的組合中,該可旋轉索引可以是用以指示由先前進入該目的地向量的元件建立的偏移。在任何上述實施例的組合中,該系統可包含邏輯,用以確定該複數個屏蔽元件的壓縮是否會導致該可旋轉索引超過該目的地向量的大小。在任何上述實施例的組合中,該系統可以包含邏輯,用以基於確定該複數個屏蔽元件的壓縮將導致該可旋轉索引超過該目的地向量的該大小,將關於該目的地向量的開頭的該可旋轉索引重置以相對於該目的地向量的該開頭來壓縮該複數個屏蔽元件中的至少一個。在任何上述實施例的組合中,該系統可包含邏輯,用以將來自該來源向量的該屏蔽元件複製到該目的地向量,並省略來自該來源向量的未屏蔽元件以壓縮該複數個屏蔽元件。在任何上述實施例的組合中,該屏蔽元件可以在壓縮之前,非連續地駐留在該來源向量中,並且用以在壓縮之後,連續地駐留在該目的地向量中。在任何上述實施例的組合中,該系統可包含邏輯,用以在該來源向量中同時執行每個元件的壓縮。在任何上述實施例的組合中,該系統可包含邏輯,用以執行基於向量的比較以產生用以識別該來源向量之內的該屏蔽元件的掩模。在任何上述實施例的組合中,該系統可包含邏輯,用以儲存壓縮元件的計數。在任何上述實施例的組合中,該系統可包含邏輯,用以使用餘數函數來確定該複數個屏蔽元件的壓縮將導致該可旋轉索引超過該目的地向量的該大小,並且用以重置關於該目的 地向量的該開頭的該可旋轉索引。
在一些實施例中,一種方法可以包含:在處理器上,接收指令以將資訊的來源向量壓縮和分配到目的地向量、解碼該指令、排程執行單元中的該指令,以及執行該指令。在任何上述實施例的組合中,該方法可以進一步包含藉由將來自該來源向量的複數個屏蔽元件壓縮到該目的地向量來執行該指令。在任何上述實施例的組合中,該方法可以進一步包含將該屏蔽元件放入在該目的地向量之內的可旋轉索引的該目的地向量來執行該指令。該可旋轉索引可以是用以指示由先前進入該目的地向量的元件建立的偏移。在任何上述實施例的組合中,該方法可以進一步包含藉由確定該複數個屏蔽元件的壓縮是否會導致該可旋轉索引超過該目的地向量的大小來執行該指令。在任何上述實施例的組合中,該方法可以進一步包含基於確定該複數個屏蔽元件的壓縮將導致該可旋轉索引超過該目的地向量的該大小,將關於該目的地向量的開頭的該可旋轉索引重置以相對於該目的地向量的該開頭來壓縮該複數個屏蔽元件中的至少一個來執行該指令。在任何上述實施例的組合中,該方法可以進一步包含藉由將來自該來源向量的該屏蔽元件複製到該目的地向量,並省略來自該來源向量的未屏蔽元件以壓縮該複數個屏蔽元件來執行該指令。在任何上述實施例的組合中,該屏蔽元件可以在壓縮之前,非連續地駐留在該來源向量中,並且用以在壓縮之後,連續地駐留在該目的地向量中。在任何上述實施例的組合 中,該方法可以進一步包含在該來源向量中同時執行每個元件的壓縮。在任何上述實施例的組合中,該方法可以進一步包含執行基於向量的比較以產生用以識別該來源向量之內的該屏蔽元件的掩模。在任何上述實施例的組合中,該方法可以進一步包含使用餘數函數來確定該複數個屏蔽元件的壓縮將導致該可旋轉索引超過該目的地向量的該大小,並且用以重置關於該目的地向量的該開頭的該可旋轉索引。
在一些實施例中,一種裝置可以包含用於接收指令以將資訊的來源向量壓縮和分配到目的地向量、解碼該指令、排程執行單元中的該指令,以及執行該指令的機制。在任何上述實施例的組合中,該裝置可進一步包含藉由將來自該來源向量的複數個屏蔽元件壓縮到該目的地向量來執行該指令的機制。在任何上述實施例的組合中,該裝置可以進一步包含將該屏蔽元件放入在該目的地向量之內的可旋轉索引的該目的地向量來執行該指令的機制。該可旋轉索引可以是用以指示由先前進入該目的地向量的元件建立的偏移。在任何上述實施例的組合中,該裝置進一步可以包含用於藉由確定該複數個屏蔽元件的壓縮是否會導致該可旋轉索引超過該目的地向量的大小來執行該指令的機制。在任何上述實施例的組合中,該裝置可以進一步包含用於基於確定該複數個屏蔽元件的壓縮將導致該可旋轉索引超過該目的地向量的該大小,將關於該目的地向量的開頭的該可旋轉索引重置以相對於該目的地向量的該 開頭來壓縮該複數個屏蔽元件中的至少一個來執行該指令的機制。在任何上述實施例的組合中,該裝置進一步可以包含用於藉由將來自該來源向量的該屏蔽元件複製到該目的地向量,並省略來自該來源向量的未屏蔽元件以壓縮該複數個屏蔽元件的機制。在任何上述實施例的組合中,該屏蔽元件可以在壓縮之前,非連續地駐留在該來源向量中,並且用以在壓縮之後,連續地駐留在該目的地向量中。在任何上述實施例的組合中,該裝置可進一步包含用於在該來源向量中同時執行每個元件的壓縮的機制。在任何上述實施例的組合中,該裝置可進一步包含用於執行基於向量的比較以產生用以識別該來源向量之內的該屏蔽元件的掩模的機制。在任何上述實施例的組合中,該裝置進一步可以包含用於使用餘數函數來確定該複數個屏蔽元件的壓縮將導致該可旋轉索引超過該目的地向量的該大小,並且用以重置關於該目的地向量的該開頭的該可旋轉索引的機制。
200‧‧‧處理器
201‧‧‧循序前端
202‧‧‧快速排程器
203‧‧‧亂序執行引擎
204‧‧‧慢/一般浮點排程器
206‧‧‧簡單浮點排程器
208‧‧‧暫存器檔案
210‧‧‧暫存器檔案
211‧‧‧執行區塊
212‧‧‧執行單元
214‧‧‧執行單元
216‧‧‧執行單元
218‧‧‧執行單元
220‧‧‧執行單元
222‧‧‧執行單元
224‧‧‧執行單元
226‧‧‧指令預提取器
228‧‧‧指令解碼器
230‧‧‧追蹤快取
232‧‧‧微碼ROM
234‧‧‧uop佇列

Claims (20)

  1. 一種處理器,包含:前端,用以接收指令以將資訊的來源向量壓縮和分配到目的地向量;解碼器,用以解碼該指令;排程器,用以排程執行單元中的該指令;核心,包含該執行單元;以及失效單元,用以使該指令失效;其中該執行單元包含下列各者,用以執行該指令:第一邏輯,用以將來自該來源向量的複數個屏蔽元件壓縮到該目的地向量;第二邏輯,用以將該屏蔽元件放入在該目的地向量之內的可旋轉索引的該目的地向量,該可旋轉索引用以指示由先前進入該目的地向量的元件建立的偏移;第三邏輯,用以確定該複數個屏蔽元件的壓縮是否會導致該可旋轉索引超過該目的地向量的大小;以及第四邏輯,用以基於確定該複數個屏蔽元件的壓縮將導致該可旋轉索引超過該目的地向量的該大小,將關於該目的地向量的開頭的該可旋轉索引重置以相對於該目的地向量的該開頭來壓縮該複數個屏蔽元件中的至少一個。
  2. 如申請專利範圍第1項的處理器,其中該執行單元進一步包含第五邏輯,用以將來自該來源向量的該屏蔽元件複製到該目的地向量,並省略來自該來源向量的未屏蔽 元件以壓縮該複數個屏蔽元件,以執行該指令。
  3. 如申請專利範圍第1項的處理器,其中該屏蔽元件用以在壓縮之前,非連續地駐留在該來源向量中,並且用以在壓縮之後,連續地駐留在該目的地向量中。
  4. 如申請專利範圍第1項的處理器,其中該執行單元進一步包含第五邏輯,用以在該來源向量中同時執行每個元件的壓縮,以執行該指令。
  5. 如申請專利範圍第1項的處理器,其中該執行單元進一步包含第五邏輯,用以執行基於向量的比較以產生用以識別該來源向量之內的該屏蔽元件的掩模。
  6. 如申請專利範圍第1項的處理器,其中該執行單元進一步包含第五邏輯,用以儲存壓縮元件的計數。
  7. 如申請專利範圍第1項的處理器,其中該執行單元進一步包含第五邏輯,用以使用餘數函數來確定該複數個屏蔽元件的壓縮將導致該可旋轉索引超過該目的地向量的該大小,並且用以重置關於該目的地向量的該開頭的該可旋轉索引。
  8. 一種方法,包含:接收指令以將資訊的來源向量壓縮和分配到目的地向量;解碼該指令;排程執行單元中的該指令;以及執行該指令,包含:將來自該來源向量的複數個屏蔽元件壓縮到該目 的地向量;將該屏蔽元件放入在該目的地向量之內的可旋轉索引的該目的地向量,該可旋轉索引用以指示由先前進入該目的地向量的元件建立的偏移;確定該複數個屏蔽元件的壓縮是否會導致該可旋轉索引超過該目的地向量的大小;以及基於確定該複數個屏蔽元件的壓縮將導致該可旋轉索引超過該目的地向量的該大小,將關於該目的地向量的開頭的該可旋轉索引重置以相對於該目的地向量的該開頭來壓縮該複數個屏蔽元件中的至少一個。
  9. 如申請專利範圍第8項的方法,進一步包含將來自該來源向量的該屏蔽元件複製到該目的地向量,並省略來自該來源向量的未屏蔽元件以壓縮該複數個屏蔽元件。
  10. 如申請專利範圍第8項的方法,其中該屏蔽元件用以在壓縮之前,非連續地駐留在該來源向量中,並且用以在壓縮之後,連續地駐留在該目的地向量中。
  11. 如申請專利範圍第8項的方法,進一步在該來源向量中同時執行每個元件的壓縮。
  12. 如申請專利範圍第8項的方法,進一步包含執行基於向量的比較以產生用以識別該來源向量之內的該屏蔽元件的掩模。
  13. 如申請專利範圍第8項的方法,進一步包含使用餘數函數來確定該複數個屏蔽元件的壓縮將導致該可旋轉索引超過該目的地向量的該大小,並且用以重置關於該目 的地向量的該開頭的該可旋轉索引。
  14. 一種系統,包含:前端,用以接收指令以將資訊的來源向量壓縮和分配到目的地向量;解碼器,用以解碼該指令;排程器,用以排程執行單元中的該指令;核心,包含該執行單元;以及失效單元,用以使該指令失效;其中該執行單元包含下列各者,用以執行該指令:第一邏輯,用以將來自該來源向量的複數個屏蔽元件壓縮到該目的地向量;第二邏輯,用以將該屏蔽元件放入在該目的地向量之內的可旋轉索引的該目的地向量,該可旋轉索引用以指示由先前進入該目的地向量的元件建立的偏移;第三邏輯,用以確定該複數個屏蔽元件的壓縮是否會導致該可旋轉索引超過該目的地向量的大小;以及第四邏輯,用以基於確定該複數個屏蔽元件的壓縮將導致該可旋轉索引超過該目的地向量的該大小,將關於該目的地向量的開頭的該可旋轉索引重置以相對於該目的地向量的該開頭來壓縮該複數個屏蔽元件中的至少一個。
  15. 如申請專利範圍第14項的系統,其中該執行單元進一步包含第五邏輯,用以將來自該來源向量的該屏蔽元件複製到該目的地向量,並省略來自該來源向量的未屏蔽 元件以壓縮該複數個屏蔽元件,以執行該指令。
  16. 如申請專利範圍第14項的系統,其中該屏蔽元件用以在壓縮之前,非連續地駐留在該來源向量中,並且用以在壓縮之後,連續地駐留在該目的地向量中。
  17. 如申請專利範圍第14項的系統,其中該執行單元進一步包含第五邏輯,用以在該來源向量中同時執行每個元件的壓縮,以執行該指令。
  18. 如申請專利範圍第14項的系統,其中該執行單元進一步包含第五邏輯,用以執行基於向量的比較以產生用以識別該來源向量之內的該屏蔽元件的掩模。
  19. 如申請專利範圍第14項的系統,其中該執行單元進一步包含第五邏輯,用以儲存壓縮元件的計數。
  20. 如申請專利範圍第14項的系統,其中該執行單元進一步包含第五邏輯,用以使用餘數函數來確定該複數個屏蔽元件的壓縮將導致該可旋轉索引超過該目的地向量的該大小,並且用以重置關於該目的地向量的該開頭的該可旋轉索引。
TW105137674A 2015-12-21 2016-11-17 用於壓縮與旋轉的指令和邏輯 TW201732549A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/977,293 US20170177348A1 (en) 2015-12-21 2015-12-21 Instruction and Logic for Compression and Rotation

Publications (1)

Publication Number Publication Date
TW201732549A true TW201732549A (zh) 2017-09-16

Family

ID=59065117

Family Applications (1)

Application Number Title Priority Date Filing Date
TW105137674A TW201732549A (zh) 2015-12-21 2016-11-17 用於壓縮與旋轉的指令和邏輯

Country Status (5)

Country Link
US (1) US20170177348A1 (zh)
EP (1) EP3394721A4 (zh)
CN (1) CN108292216A (zh)
TW (1) TW201732549A (zh)
WO (1) WO2017112172A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107895191B (zh) 2017-10-30 2022-02-22 上海寒武纪信息科技有限公司 一种信息处理方法及相关产品
US20210133854A1 (en) 2018-09-13 2021-05-06 Shanghai Cambricon Information Technology Co., Ltd. Information processing method and terminal device

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7590830B2 (en) * 2004-05-28 2009-09-15 Sun Microsystems, Inc. Method and structure for concurrent branch prediction in a processor
US20120254592A1 (en) * 2011-04-01 2012-10-04 Jesus Corbal San Adrian Systems, apparatuses, and methods for expanding a memory source into a destination register and compressing a source register into a destination memory location
WO2013095604A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Systems, apparatuses, and methods for performing mask bit compression
US10474463B2 (en) * 2011-12-23 2019-11-12 Intel Corporation Apparatus and method for down conversion of data types
US10241792B2 (en) * 2011-12-30 2019-03-26 Intel Corporation Vector frequency expand instruction
CN107729018A (zh) * 2012-09-28 2018-02-23 英特尔公司 循环向量化方法和设备
US9606961B2 (en) * 2012-10-30 2017-03-28 Intel Corporation Instruction and logic to provide vector compress and rotate functionality
US9189236B2 (en) * 2012-12-21 2015-11-17 Intel Corporation Speculative non-faulting loads and gathers
US9501276B2 (en) * 2012-12-31 2016-11-22 Intel Corporation Instructions and logic to vectorize conditional loops
US9823924B2 (en) * 2013-01-23 2017-11-21 International Business Machines Corporation Vector element rotate and insert under mask instruction
US20150186136A1 (en) * 2013-12-27 2015-07-02 Tal Uliel Systems, apparatuses, and methods for expand and compress

Also Published As

Publication number Publication date
EP3394721A1 (en) 2018-10-31
EP3394721A4 (en) 2019-11-13
CN108292216A (zh) 2018-07-17
US20170177348A1 (en) 2017-06-22
WO2017112172A1 (en) 2017-06-29

Similar Documents

Publication Publication Date Title
TWI731893B (zh) 具有載入索引和預提取聚集操作之處理器、方法及系統
TWI730016B (zh) 用於跨步分散運算的指令與邏輯的處理器、方法及系統
CN108369516B (zh) 用于加载-索引和预取-分散操作的指令和逻辑
TWI738682B (zh) 用於載入索引和散佈元件的處理器、方法及系統
CN108351835B (zh) 用于高速缓存控制操作的指令和逻辑
US10346170B2 (en) Performing partial register write operations in a processor
TW201723814A (zh) 用於可程式化組構層級與快取之指令及邏輯
US10338920B2 (en) Instructions and logic for get-multiple-vector-elements operations
JP6351722B2 (ja) クラスタ化されたワイド実行機械におけるメモリアクセス用の命令およびロジック
TW201727493A (zh) 從持續記憶體預取資訊的指令及邏輯
US20170177363A1 (en) Instructions and Logic for Load-Indices-and-Gather Operations
TW201732546A (zh) 用於重複發生相鄰聚集的指令和邏輯
US20170286110A1 (en) Auxiliary Cache for Reducing Instruction Fetch and Decode Bandwidth Requirements
TWI630480B (zh) 用於分頁表走查位元交換之指令和邏輯
TWI590079B (zh) 用於處理計算的向量格式的指令及邏輯
TW201732619A (zh) 仿真的訊息通知中斷(msi)中斷處置
US20170168819A1 (en) Instruction and logic for partial reduction operations
TW201732548A (zh) 用於向量置換的指令和邏輯
TWI729029B (zh) 用於向量位元欄壓縮及擴展的指令及邏輯
US10102215B2 (en) Apparatus for hardware implementation of lossless data compression
US20210096866A1 (en) Instruction length decoding
US9928066B2 (en) Instruction and logic for encoded word instruction compression
US20170123799A1 (en) Performing folding of immediate data in a processor
US20160179540A1 (en) Instruction and logic for hardware support for execution of calculations
TW201732549A (zh) 用於壓縮與旋轉的指令和邏輯