TWI733710B - 用於重複發生相鄰聚集的處理器、方法和單元 - Google Patents

用於重複發生相鄰聚集的處理器、方法和單元 Download PDF

Info

Publication number
TWI733710B
TWI733710B TW105137282A TW105137282A TWI733710B TW I733710 B TWI733710 B TW I733710B TW 105137282 A TW105137282 A TW 105137282A TW 105137282 A TW105137282 A TW 105137282A TW I733710 B TWI733710 B TW I733710B
Authority
TW
Taiwan
Prior art keywords
cache
processor
memory
logic
data
Prior art date
Application number
TW105137282A
Other languages
English (en)
Other versions
TW201732546A (zh
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 TW201732546A publication Critical patent/TW201732546A/zh
Application granted granted Critical
Publication of TWI733710B publication Critical patent/TWI733710B/zh

Links

Images

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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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/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/30098Register arrangements
    • 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
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • G06F9/3455Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (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

用於重複發生相鄰聚集的處理器、方法和單元
本發明與處理邏輯、微處理器和相關聯的指令集結構的領域相關聯,當相關的指令由處理器或其它處理邏輯執行時,執行邏輯、數學或其他功能的運算。
多處理器系統將變得越來越普遍。多處理器系統的應用包括向量的平行處理。多處理器系統的應用包括動態域名劃分一路至桌上型電腦計算。為了利用多處理器系統,將要執行的碼可藉由各種處理實體被分成用於執行的多個執行緒。每個執行緒可以彼此平行執行。在處理器上接收到的指令可能被解碼為術語或是本體的、或多個本體的指令字,用於在處理器上執行。處理器可以一晶片上系統來實現。向量處理可以在多媒體應用中使用。這些應用可能包括圖像和音頻。
100‧‧‧系統
102‧‧‧處理器
104‧‧‧快取
106‧‧‧暫存器檔
108‧‧‧執行單元
109‧‧‧緊縮指令集
110‧‧‧處理器匯流排
112‧‧‧圖形控制器
114‧‧‧互連
116‧‧‧記憶體控制器集線器
118‧‧‧高頻寬記憶體路徑
119‧‧‧指令
120‧‧‧記憶體
121‧‧‧資料
122‧‧‧系統I/O
123‧‧‧傳統的I/O控制器
124‧‧‧資料儲存
125‧‧‧使用者輸入介面
126‧‧‧無線收發器
127‧‧‧序列擴展埠
128‧‧‧韌體集線器(快閃BIOS)
129‧‧‧音頻控制器
130‧‧‧I/O控制器集線器(ICH)
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‧‧‧通用異步接收器/傳輸器(UART)
156‧‧‧通用序列匯流排(USB)
157‧‧‧藍牙無線UART
158‧‧‧I/O擴充介面
159‧‧‧處理核心
160‧‧‧資料處理系統
161‧‧‧SIMD協同處理器
162‧‧‧執行單元
163‧‧‧指令集
164‧‧‧暫存器檔
165‧‧‧解碼器
166‧‧‧主要處理器
167‧‧‧快取記憶體
168‧‧‧輸入/輸出系統
169‧‧‧無線介面
170‧‧‧處理核心
200‧‧‧處理器
201‧‧‧前端
202‧‧‧快速排程器
203‧‧‧亂序執行引擎
204‧‧‧慢速/通用浮點排程器
205‧‧‧整數/浮點微運算佇列
206‧‧‧簡單浮點排程器
207‧‧‧記憶體微運算佇列
208‧‧‧整數暫存器檔
209‧‧‧記憶體排程器
210‧‧‧浮點暫存器檔
211‧‧‧執行方塊
212‧‧‧位址產生單元(AGU)
214‧‧‧AGU
216‧‧‧快速算術邏輯單元(ALU)
218‧‧‧快速ALU
220‧‧‧緩慢ALU
222‧‧‧浮點ALU
224‧‧‧浮點移動單元
226‧‧‧指令預取器
228‧‧‧指令解碼器
230‧‧‧跡線快取
232‧‧‧微碼ROM
234‧‧‧微運算佇列
310‧‧‧緊縮位元組
320‧‧‧緊縮字
330‧‧‧緊縮雙字(dword)
341‧‧‧緊縮半
342‧‧‧緊縮單
343‧‧‧緊縮雙
344‧‧‧無號緊縮位元組表示法
345‧‧‧有號緊縮位元組表示法
346‧‧‧無號緊縮字表示法
347‧‧‧有號緊縮字表示法
348‧‧‧無號緊縮雙字表示法
349‧‧‧有號緊縮雙元表示法
360‧‧‧格式
361,362‧‧‧欄位
363,373‧‧‧MOD欄位
364,365‧‧‧來源運算元識別符
366‧‧‧目的地運算元識別符
370‧‧‧格式
371,372,378‧‧‧欄位
374,375‧‧‧來源運算元識別符
376‧‧‧目的地運算元識別符
380‧‧‧格式
381‧‧‧條件欄位
382,389‧‧‧CDP運算碼欄位
383,384,387,388‧‧‧欄位
385,390‧‧‧來源運算元識別符
386‧‧‧目的地運算元識別符
400‧‧‧處理器管線
402‧‧‧擷取階段
404‧‧‧長度解碼階段
406‧‧‧解碼階段
408‧‧‧分配階段
410‧‧‧重新命名階段
412‧‧‧排程階段
414‧‧‧暫存器讀取/記憶體讀取階段
416‧‧‧執行階段
418‧‧‧寫回/記憶體寫入階段
422‧‧‧異常處理階段
424‧‧‧提交階段
430‧‧‧前端單元
432‧‧‧分支預測單元
434‧‧‧指令快取單元
436‧‧‧指令轉譯後備緩衝區(TLB)
438‧‧‧指令擷取單元
440‧‧‧解碼單元
450‧‧‧執行引擎單元
452‧‧‧重新命名/分配器單元
454‧‧‧退役單元
456‧‧‧排程器單元
458‧‧‧實體暫存器檔單元
460‧‧‧執行叢集
462‧‧‧執行單元
464‧‧‧記憶體存取單元
470‧‧‧記憶體單元
472‧‧‧資料TLB單元
474‧‧‧資料快取單元
476‧‧‧2階(L2)快取單元
490‧‧‧處理器核心
500‧‧‧處理器
502‧‧‧核心
506‧‧‧快取
508‧‧‧環式互連單元
510‧‧‧系統代理
512‧‧‧顯示引擎
514‧‧‧介面
516‧‧‧直接媒體介面(DMI)
518‧‧‧PICe橋
520‧‧‧記憶體控制器
522‧‧‧一致性邏輯
552‧‧‧記憶體控制單元
560‧‧‧圖形模組
565‧‧‧媒體引擎
570‧‧‧前端
572,574‧‧‧快取
580‧‧‧無序引擎
582‧‧‧分配模組
584‧‧‧資源排程器
586‧‧‧資源
588‧‧‧排序緩衝器
590‧‧‧模組
595‧‧‧LLC
599‧‧‧RAM
600‧‧‧系統
610,615‧‧‧處理器
620‧‧‧圖形記憶體控制器集線器(GMCH)
640‧‧‧記憶體
645‧‧‧顯示器
650‧‧‧輸入/輸出(I/O)控制器集線器(ICH)
660‧‧‧外部圖形裝置
670‧‧‧周邊裝置
700‧‧‧多處理器系統
714‧‧‧I/O裝置
716‧‧‧第一匯流排
718‧‧‧匯流排橋
720‧‧‧第二匯流排
722‧‧‧鍵盤及/或滑鼠
724‧‧‧音頻I/O
727‧‧‧通信裝置
728‧‧‧儲存單元
730‧‧‧指令/碼和資料
732‧‧‧記憶體
734‧‧‧記憶體
738‧‧‧高效能圖形電路
739‧‧‧高效能圖形介面
750‧‧‧點對點互連
752,754‧‧‧P-P介面
770,780‧‧‧處理器
772,782‧‧‧整合式記憶體控制器單元
776,778‧‧‧點對點(P-P)介面
786,788‧‧‧P-P介面
790‧‧‧晶片組
794,798‧‧‧點對點介面電路
796‧‧‧介面
800‧‧‧第三系統
814‧‧‧I/O裝置
815‧‧‧傳統I/O裝置
872,882‧‧‧控制邏輯
900‧‧‧SoC
902‧‧‧互連單元
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‧‧‧互連
1415‧‧‧圖形處理單元
1420‧‧‧視頻代碼
1425‧‧‧LCD視頻介面
1430‧‧‧訂戶介面模組(SIM)介面
1435‧‧‧開機ROM介面
1440‧‧‧同步動態隨機存取記憶體(SDRAM)控制器
1445‧‧‧快閃記憶體控制器
1450‧‧‧序列周邊介面(SPI)主單元
1460‧‧‧SDRAM晶片或模組
1465‧‧‧快閃記憶體
1470‧‧‧藍牙模組
1475‧‧‧高速3G數據機
1480‧‧‧全球定位系統模組
1485‧‧‧無線模組
1500‧‧‧指令集架構
1510‧‧‧單元
1511‧‧‧中斷控制和分配單元
1512‧‧‧偵聽控制單元
1513‧‧‧快取至快取轉移單元
1514‧‧‧偵聽器
1515‧‧‧定時器
1516‧‧‧AC埠
1520‧‧‧匯流排介面單元
1525‧‧‧快取
1530‧‧‧指令預取階段
1531‧‧‧選項
1532‧‧‧指令快取
1535‧‧‧分支預測單元
1536‧‧‧全域歷史
1537‧‧‧目標位址
1538‧‧‧返回堆疊
1540‧‧‧記憶體系統
1543‧‧‧預取器
1544‧‧‧記憶體管理單元(MMU)
1545‧‧‧轉譯後備緩衝器(TLB)
1546‧‧‧載入儲存單元
1550‧‧‧雙指令解碼階段
1555‧‧‧暫存器重新命名階段
1556‧‧‧暫存器池
1557‧‧‧分支
1560‧‧‧發行階段
1561‧‧‧指令佇列
1565‧‧‧執行實體
1566‧‧‧ALU/乘法單元(MUL)
1567‧‧‧ALU
1568‧‧‧浮點單位(FPU)
1569‧‧‧給定位址
1570‧‧‧寫回階段
1575‧‧‧追蹤單元
1580‧‧‧執行的指令指標
1582‧‧‧退役指標
1700‧‧‧電子裝置
1710‧‧‧處理器
1715‧‧‧記憶體單元
1720‧‧‧驅動器
1722‧‧‧BIOS/韌體/快閃記憶體
1724‧‧‧顯示器
1725‧‧‧觸控螢幕
1730‧‧‧觸控墊
1735‧‧‧高速晶片組(EC)
1736‧‧‧鍵盤
1737‧‧‧風扇
1738‧‧‧可信任平台模組(TPM)
1739‧‧‧熱感測器
1740‧‧‧感應器集線器
1741‧‧‧加速計
1742‧‧‧環境光感測器(ALS)
1743‧‧‧羅盤
1744‧‧‧陀螺儀
1745‧‧‧近場通訊(NFC)單元
1746‧‧‧熱感測器
1750‧‧‧無線區域網路(WLAN)單元
1752‧‧‧藍牙單元
1754‧‧‧照相機
1756‧‧‧無線廣域網路(WWAN)單元
1757‧‧‧SIM卡
1760‧‧‧數位信號處理器
1763‧‧‧揚聲器
1764‧‧‧耳機
1765‧‧‧麥克風
1800‧‧‧系統
1802‧‧‧處理器
1804A‧‧‧指令串流
1804B‧‧‧指令串流
1806‧‧‧前端
1808‧‧‧二進制轉譯器
1810‧‧‧指令解碼器
1812‧‧‧擷取器
1814‧‧‧核心
1816‧‧‧執行管線
1818‧‧‧重新命名/分配單元
1820‧‧‧排程器
1822‧‧‧執行單元
1824‧‧‧退役單元/重新排序緩衝器
1826‧‧‧重複發生相鄰聚集單元
1828‧‧‧智慧財產(IP)核心
1830‧‧‧指令
1902‧‧‧向量
1904,1906‧‧‧聚集指令
1908,1910‧‧‧目的地暫存器
1912,1914,1916,1920‧‧‧快取線
1922,1924,1926,1928,1930,1932,1934,1936‧‧‧位址
實施例是藉由示例的方式示出而並不限制在 附圖的圖式中:
圖1A是根據本發明的實施例形成有處理器之示例性計算機系統的方框圖,其可包括執行單元用以執行指令;圖1B根據本發明的實施例示出資料處理系統;圖1C示出用於執行字串比較操作的資料處理系統的其它實施例;圖2是根據本發明的實施例之用於處理器的微架構方框圖,其可包括用以執行指令的邏輯電路;圖3A根據本發明的實施例示出在多媒體暫存器中的各種緊縮資料類型表示;圖3B根據本發明的實施例示出可能的暫存器內資料儲存格式;圖3C根據本發明的實施例示出在多媒體暫存器中的各種有號及無號的緊縮資料類型表示;圖3D示出運算編碼格式的實施例;圖3E根據本發明的實施例示出具有40或更多位元的另一種可能的運算編碼格式;圖3F根據本發明的實施例示出另一種可能的運算編碼格式;圖4A是根據本發明的實施例示出有序管線和暫存器重新命名階段、無序問題/執行管線的方框圖。
圖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位元資料運算的處理器或機器,並且可以被應用於其中資料的操作或管理可被執行的任何處理器及機器。此外,下面的說明書內容提供了示例,並且附圖示出用於說明的目的的各種示例。然而,這些示例不應該被以限制性的意義解釋,因為它們僅旨在提供本發明內容的實施例的示例,而不是以提供對本發明的實施例的所有可能的實施的詳盡的清單。
雖然以下示例描述在執行單元和邏輯電路的內文中指令處理和分配,本發明的其它實施例可以藉由儲存在機器可讀有形介質中的資料或指令來實現,當其藉由機器執行執行時,使機器執行與本發明的至少一個實施例一致的功能。在一個實施例中,與本發明的實施例相關聯的功能被體現在機器可執行指令中。此種指令可用於使可與指令編程之通用或專用處理器用以執行本發明的步驟。本發明內容的實施例可被提供作為電腦程式產品或軟體,其可以包括其上儲存有可用於編程電腦(或其它電子裝置)的指令之機器或電腦可讀介質,該些指令用以根據本 發明的實施例來執行一或多個運算。此外,本發明實施例的步驟可以由包含用於執行步驟之固定功能邏輯的特定硬體組件所執行,或由編程的電腦組件和固定功能之硬體組件的任何組合所執行。
用以執行本發明的實施例的用於編程邏輯的指令可以被儲存在系統中的記憶體內,例如DRAM、快取、快閃記憶體或其他儲存器。此外,指令可以經由網路或其他電腦可讀介質的方式進行分配。因此,機器可讀介質可包括用於以可由機器(例如電腦)讀取的形式儲存或傳送資訊的任何機構,但不限於,軟碟、光碟(optical disks)、唯讀記憶體光碟(CD-ROMs)、和磁光碟、唯讀記憶體(ROM)、隨機存取記憶體(RAM)、可擦除可編程唯讀記憶體(EPROM)、電可擦除可編程唯讀記憶體(EEPROM)、磁卡或光卡、快閃記憶體、或經由電、光、聲或其它形式的傳播信號(例如,載波、紅外線信號、數位信號等)在網際網路上的資訊傳送中使用的有形的、機器可讀的儲存器。因此,電腦可讀介質可包括適用於可由機器(例如電腦)可讀的形式儲存或傳送電子指令或資訊的任何類型的有形的機器可讀介質。
一個設計可能會經歷不同級,從創造到模擬到製造。表示設計的資料可以以多種方式表示該設計。首先,如可能在模擬中有用的,硬體可使用硬體描述語言或另一種功能描述語言來表示。此外,具有邏輯及/或電晶體閘的電路級別模型可在設計過程的某些級產生。此外, 在某些階段,設計可達到表示硬體模型中的各種裝置的物理置放的資料的級別。在一些半導體製造技術被使用的情況下,表示硬體模型的資料可以是指定被用於生產積體電路的遮罩的不同遮罩層上的各種特徵之存在或不存在的資料。在設計的任何表示中,資料可以以任何機器可讀介質的形式被儲存。如碟片的記憶體或者磁或光學的儲存器可以是用以儲存經由光或電波調變傳送的資訊或以其他方式被產生以傳送這樣的資訊。當指示或攜帶代碼或設計的電載波被傳輸以複製、緩衝或進行電信號的重發的程度,可以做出新的複製。因此,通訊提供商或網路提供商可以儲存在有形的、機器可讀介質上,至少是暫時的一種物品,像是編碼成載波、體現本發明的實施例的技術之資訊。
在現代的處理器中,可以使用多個不同的執行單元以處理和執行各種代碼和指令。有些指令可能會更快完成,有些可能需要一些時脈週期來完成。指令的通量越快,該處理器的整體校能越好。因此,越可能快速執行越多指令是有利的。然而,可能存在具有更大的複雜性且需要更多的執行時間和處理器資源的某些指令,諸如浮點指令、載入/儲存運算、資料移動等等。
隨著越來越多的電腦系統被用於網際網路、文字和多媒體應用,已經採用額外的處理器支持一段時間。在一個實施例中,指令集可與一或多個電腦架構相關,其包括資料類型、指令、暫存器架構、定址模式、記憶體架構、中斷和異常處理以及外部輸入和輸出 (I/O)。
在一個實施例中,指令集架構(ISA)可以由一或多個微架構實施,其可包括用於實現一或多個指令集的處理器邏輯和電路。因此,具有不同的微架構的處理器可以共享共同指令集的至少一部分。例如,Intel® Pentium 4處理器、Intel® CoreTM處理器、以及來自加州的桑尼維爾的進階微裝置(Advanced Micro Devices)的處理器,實施幾乎相同的版本的x86指令集(已經加入新版本的一些擴展),但有不同的內部設計。同樣地,由其它處理器發展公司,如ARM控股有限公司、MIPS或他們的被授權者或採用者,所設計的處理器可以共享至少一部分共同指令集,但可包括不同的處理器設計。例如,ISA之相同的暫存器架構可以使用新的或習知技術以不同的微架構、不同的方式來實施,包括專用的實體暫存器、使用暫存器重新命名機制的一或多個動態分配實體暫存器(例如,使用暫存器別名表(Register Alias Table,RAT)、重新排序緩衝器(Reorder Buffer,ROB)和退役暫存器檔)。在一個實施例中,暫存器可以包括一或多個暫存器、暫存器架構、暫存器檔、或者其他的暫存器集中,其可能或可能不是可由軟體程式設計師定址的。
指令可包括一或多個指令格式。在一個實施例中,指令格式可指示各種欄位(位元數、位元位置等)以在其他事項之間指定將要被執行的運算和將要被執行的運算上的運算元。在進一步的實施例中,一些指令格式可 進一步藉由指令模板(或子格式)所定義。例如,給定的指令格式的指令模板可以被定義為具有指令格式的欄位的不同子集及/或定義為具有不同解譯的給定欄位。在一個實施例中,指令可使用指令格式(以及如果被定義,在該指令格式的指令模板中給定的一者之中)來表達,並指定或指示運算和將操作的運算之運算元。
科學、金融、自動向量通用、RMS(識別、挖掘和合成)以及視覺和多媒體應用(如2D/3D圖形、圖像處理、視頻壓縮/解壓縮、語音識別演算法和音頻處理)可能需要要對大量的資料項執行相同的運算。在一個實施例中,單指令多資料(SIMD)指一種類型的指令,其使處理器對多個資料元件執行運算。SIMD技術可在處理器中使用,其可邏輯地將在暫存器中的位元劃分為多個固定大小或可變大小的資料元件,其每一個代表一個單獨的值。例如,在一個實施例中,64位元暫存器中的位元可被組織為包含四個獨立的16位元資料元件的來源運算元,其每一個代表一個單獨的16位元值。這種類型的資料可以被稱為“緊縮”資料類型或“向量”資料類型,且這種資料類型的運算元可以被稱為緊縮資料運算元或向量運算元。在一個實施例中,緊縮的資料項或向量可以是儲存在單一暫存器中的緊縮資料元件序列,且緊縮資料運算元或向量運算元可為SIMD指令的來源或目的地運算元(或“緊縮資料指令”或“向量指令”)。在一個實施例中,SIMD指令指定將在兩個來源向量運算元上執行的單一向 量運算,用以利用相同或不同的資料元件,以及相同或不同的資料元件順序,產生相同或不同大小的目的地向量運算元(也可被稱為結果向量運算元)。
如由具有包括x86、MMXTM、串流SIMD擴展(SSE)、SSE2、SSE3、SSE4.1和SSE4.2指令的Intel®CoreTM處理器、如具有包括向量浮點(VFP)及/或NEON指令的指令集ARM Cortex®系列的ARM處理器、和如由中國科學研究院的計算技術研組織(ICT)開發的Loongson系列處理器的MIPS處理器所採用之SIMD技術,已使應用效能顯著改善(CoreTM和MMXTM是加利福尼亞州聖克拉拉的英特爾公司的註冊商標或商標)。
在一個實施例中,目的地和來源暫存器/資料可以是通用術語,用以表示對應的資料或運算的來源和目的地。在一些實施例中,它們可藉由暫存器、記憶體或具有除了所描繪之外的其他名稱或功能的其他儲存區域實作。例如,在一個實施例中,“DEST1”可以是暫時的儲存暫存器或其他儲存區域,而“SRC1”和“SRC2”可以是第一和第二來源儲存暫存器或其他儲存區域等等。在其他實施例中,兩個或更多的SRC和DEST儲存區域可對應於相同儲存區域內的不同資料儲存元件(例如SIMD暫存器)。在一個實施例中,來源暫存器中的一者也可作為目的地暫存器,其藉由例如寫回在第一和第二來源資料上執行的運算的結果至作為目的地暫存器的兩個來源暫存器的一者。
圖1A是根據本發明的實施例形成有處理器之 示例性計算機系統的方框圖,其可包括執行單元用以執行指令。根據本發明實施例,像是此說明書中所描述的,系統100可包括組件,像是處理器102用以採用包括邏輯以執行用於處理資料之演算法的邏輯的執行單元。系統100可基於來自加利福尼亞州聖克拉拉的英特爾公司的PENTIUM® III、PENTIUM® 4、XeonTM、Itanium®、XScaleTM及/或StrongARMTM微處理器的處理系統的代表,即使其他系統(包括具有其他微處理器、工程工作站、機上盒等的PC)也可被使用。在一個實施例中,樣本系統100可執行來自華盛頓州雷蒙德市的微軟公司的WINDOWSTM作業系統的版本,即使其他作業系統(例如UNIX和Linux)、嵌入式軟體及/或圖形使用者介面也可被使用。因此,本發明的實施例可不受限於硬體電路和軟體的任何特定組合。
實施例不限於電腦系統。本發明的實施例可以在其他裝置中使用,如手持設備和嵌入式應用。手持裝置的一些示例包括蜂窩電話、網路協議裝置、數位相機、個人數位助理(PDA)、和手持式個人電腦。根據至少一個實施例,嵌入式應用可以包括微控制器、數位信號處理器(DSP)、晶片上系統、網路電腦(NetPC)、機上盒、網路集線器、廣域網路(WAN)交換機、或者可以執行一個或多個指令的任何其他的系統。
根據本發明的一個實施例,電腦系統100可包括處理器102,其可包括一或多個執行單元108用以執 行演算法,用以執行至少一指令。一個實施例可以在單一處理器桌上型電腦或伺服器系統的上下文中描述,但多處理器系統也可以包括其它實施例。系統100可以是"集線器"系統架構的示例。系統100可包括用於處理資料信號的處理器102。例如,處理器102可包括一個複雜指令集計算機(CISC)微處理器、精簡指令集計算(RISC)微處理器、超長指令字(VLIW)微處理器、實現指令集組合的處理器、或任何其它處理器裝置,如作為數位信號處理器。在一個實施例中,處理器102可以被耦合到處理器匯流排110,其可以在系統100中的處理器102和其他組件之間傳送資料信號。系統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可提供用於指令和資料儲存和用於圖形、資料和紋理之儲存的至記憶體120的高頻寬記憶體路徑118。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匯流排可包括高速I/O匯流排用於連接周邊設備至記憶體120、晶片組和處理器102。示例可以包括音頻控制器、韌體集線器(快閃BIOS)128、無線收發機126、資料儲存124、包含使用者輸入和鍵盤介面的舊有I/O控制器、像是通用序列匯流排(USB)的序列擴展埠和網路控制器134。資料儲存裝置124可包括硬碟驅動器、軟碟驅動器、CD-ROM裝置、快閃記憶體裝置、或其它大容量儲存裝置。
用於系統的另一個實施例,根據一個實施例的指令可以以晶片上系統使用。晶片上系統的一個實施例包括處理器和記憶體。對於這樣的一個系統中的記憶體可以包括快閃記憶體。快閃記憶體可以與處理器和其他系統組件位於相同晶片上。此外,其他的邏輯區塊,例如記憶體控制器或圖形控制器也可以位於晶片上系統上。
圖1B示出實施本發明的實施例準則的資料處理系統140。本發明領域的通常知識者可以容易地理解本發明的實施例可用替代的處理系統操作,而不背離本發明的實施例的範圍。
根據一個實施例,計算機系統140包括用於執行至少一個指令的處理核心159。在一個實施例中,處理核心159代表任意類型架構的處理單元,包括但不限於CISC、RIS或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)變換、快速傅立葉變換(fast Fourier transform,FFT)、離散餘弦變換(discrete cosine transform,DCT)、和它們各自的逆變換的各種離散變換之演算法來進行編程;例如色空間變換、視頻編碼的動態估計或視頻解碼的動態補償之壓縮/解壓縮技術;及例如脈衝編碼調變(PCM)之調變/解調變(MODEM)的功能。
圖1C示出執行SIMD字串比較運算的資料處理系統的其它實施例。在一個實施例中,資料處理系統 160可包括主要處理器166、SIMD協同處理器161、快取記憶體167和輸入/輸出系統168。輸入/輸出系統168可選地被耦接至無線介面169。根據一個實施例,SIMD協同處理器161可執行包括指令的運算。在一實施例中,處理核心170適合以一或多種處理技術且藉由表示於機器可讀取媒體上的充分細節來製造,這些細節適合有助於製造包括處理核心170之所有或部分的資料處理系統160。
在一個實施例中,SIMD協同處理器161包含執行單元162與一組暫存器檔164。主處理器165的一實施例包含解碼器165,用以辨識指令集163之指令,其包括供執行單元162執行之按照一實施例的指令。在其他實施例中,SIMD協同處理器161也包含解碼器165的至少部分,用以解碼指令集163的指令。處理核心170也可包括額外電路(未示出)其對於本發明實施例的理解可能是不必要的。
運算時,主處理器166執行資料處理指令的串流,其控制一般類型的資料處理運算,包括與快取記憶體167、及輸入/輸出系統168的互動。SIMD協同處理器指令可被嵌入在資料處理指令的串流中。主處理器166的解碼器165辨識出這些SIMD協同處理器指令係應由附加的SIMD協同處理器161來執行的類型。因此,主處理器166在協同處理器匯流排171上發出這些SIMD協同處理器指令(或代表SIMD協同處理器指令的控制信號)。從協同處理器匯流排166,這些指令可以藉由任何附接的 SIMD協同處理器接收。在此情況,SIMD協同處理器161將接受並執行任何所接收之供其使用的SIMD協同處理器指令。
可經由無線介面169接收資料以供SIMD協同處理器指令處理。例如,以數位信號之形式接收語音通訊,其可由SIMD協同處理器指令處理,以再生表示語音通訊的數位音訊樣本。關於另一示例,接收數位位元串流形式之經壓縮的音訊及/或視訊,其可由SIMD協同處理器指令處理,以再生數位音訊樣本及/或移動的視訊框。關於處理核心170、主處理器166、及SIMD協同處理器161的一個實施例被整合成單一處理核心170,其包含執行單元162、一組暫存器檔164、及用以辨識指令集163之指令的解碼器165,指令集163包括按照一實施例的指令。
圖2是根據本發明的實施例之用於處理器200的微架構方框圖,其可包括用以執行指令的邏輯電路。在一些實施例中,按照一個實施例的指令可被實施來運算具有位元組、單字、雙字、四字等大小及諸如單或雙精度整數與浮點資料類型之資料類型的資料元素。在一個實施例中,有序前端201實施處理器200的一部分,其擷取要被執行的指令,並準備這些指令,以便稍後在處理器管線中使用。前端201可包括幾個單元。在一個實施例中,指令預取器226從記憶體擷取指令,並將其饋送至指令解碼器228,其依次解碼或解譯這些指令。例如,在一個實施例 中,解碼器將所接收的指令解碼成機器可執行的一或多個運算,稱為“微指令”或“微運算”(也稱為micro op或uops)。在其他實施例中,解碼器將指令剖析成運算碼及對應的資料與控制欄位,其被微架構使用來按照一實施例執行運算。在一個實施例中,跡線快取230將經解碼的微運算組合到微運算佇列234中的程式有序序列或跡線內供執行。當跡線快取230遇到複雜的指令時,微碼ROM 232提供完成運算所需的微運算。
一些指令被轉換成單個微運算,然而其它的指令需要數個微運算來完成整個運算。在一個實施例中,如果需要4個以上的微運算來完成指令,則解碼器228存取微碼ROM 232來完成該指令。在一個實施例中,指令可在指令解碼器228處被解碼成少量的微運算供處理。在另一實施例中,可被儲存在微碼ROM 232內的指令應需要若干個微運算來完成運算。跡線快取230參考登錄點可程式邏輯陣列(PLA)來決定一正確的微指令指標以從微碼ROM 232讀取微碼序列,用來完成按照一實施例的一或多個指令。在微碼ROM 232為指令完成微運算的排序之後,機器的前端201可恢復從跡線快取230擷取微運算。
指令在亂序執行引擎203處被準備供執行。亂序執行邏輯具有若干緩衝器用以平滑及重排序指令流,以當這些指令下到管線並被排程用於執行時性能最佳化。配置器邏輯為每一個微運算配置為了執行所需的機器緩衝 器與資源。暫存器重新命名邏輯將邏輯暫存器重新命名到暫存器檔中的登錄上。配置器還對在兩個微運算佇列之一者中的每一個微運算分配一登錄,一個用於記憶體運算和一個用於非記憶體運算,在指令排程器之前:記憶體排程器、快速排程器202、慢速/通用浮點排程器204、以及簡單浮點排程器206。微運算排程器202、204、206根據它們的相依輸入暫存器運算元來源的就緒度,以及微運算完成它們之運算所需之執行資源的可用度,來決定微運算何時準備好執行。一個實施例的快速排程器202可在每半個主時脈周期上排程,而其它排程器能僅每個主處理器時脈周期排程一次。排程器對調度埠(dispatch port)進行仲裁,以便排程微運算供執行。
暫存器檔208、210可被配置於排程器202、204、206與執行方塊211中的執行單元212、214、216、218、220、222、224之間。暫存器檔208、210之各者係為獨立的,分別用於執行整數與浮點運算。各個暫存器檔208、210可包括旁通網路,其可將剛完成尚未寫入暫存器檔中的結果旁通或向前轉送給新的相依微運算。整數暫存器檔208和浮點暫存器檔210也有能力和另一者通訊資料。在一個實施例中,整數暫存器檔208可被分割成兩個獨立的暫存器檔,一個暫存器檔用於資料的低位32位元,第二個暫存器檔用於資料的高位32位元。由於浮點指令的運算元典型上具有64至128位元的寬度,因此,浮點暫存器檔210可具有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位元的浮點除法器,用於執行除、平方根、及餘數微運算。在各種實施例中,包括浮點值的指令可利用浮點硬體來處理。在一個實施例中,ALU運算被傳遞至高速ALU執行單元216、218。高速ALU216、218可用半個時脈周期之有效的潛時執行快速運算。在一個實施例中,如慢速ALU 220可包括諸如乘法器、移位、旗標邏輯、及分支處理的用於長潛時類型運算之整數執行硬體,最複雜的整數運算前進至慢速ALU 220。記憶體載入/儲存運算係由AGU 212、214來執行。在一個實施例中,整數ALU 216、218、220可在64位元資料運算元上實施整數運算的環境中。在其他實施例中,ALU 216、218、220可實施以支援各種不同的資料位元大小,包括16、32、128、256等。同樣地,浮點單元222、224可被實施以支援一範圍之具有各種不同位元寬 度的運算元。在一個實施例中,浮點單元222、224可結合SIMD與多媒體指令對128位元寬的緊縮資料運算元運算。
在一個實施例中,在先前的載入完成執行之前,微運算排程器202、204、206執行調度相依的運算。當微運算在處理器200中被推測地排程與執行時,處理器200也包括邏輯用來處置記憶體未命中。如果在資料快取中資料載入未命中,則有相關的運算以暫時的錯誤資料留置排程器在管線中運行。一重播機制追蹤並再執行使用錯誤資料的指令。僅相關的運算需要被重播且允許無關的運算完成。處理器之一實施例的排程器與重播機制也可被設計來捕捉用於文字字串比較運算的指令序列。
術語“暫存器”可意指機板上處理器的儲存位置,其被當成指令的一部分使用,用以識別運算元。換言之,暫存器是可從處理器外部使用的那些儲存位置(從程式設計師的觀點)。然而,在一些實施例中,暫存器不限於特定類型的電路。反之,暫存器可儲存資料、提供資料並實施本文所描述之功能。本文所描述的暫存器可藉由使用多種任何不同技術之處理器內的電路來實施,諸如專用的實體暫存器、使用暫存器重新命名之動態配置的實體暫存器、專用與動態配置之實體暫存器的組合等。在一實施例中,整數暫存器儲存32位元的整數資料。一實施例的暫存器檔也包含用於緊縮資料的8個多媒體SIMD暫存器。關於以下的討論,須瞭解暫存器係資料暫存器,設計 用來保存緊縮資料,諸如微處理器中之64位元寬的MMXTM暫存器(在一些例中也稱為‘mm’暫存器),以來自加州Santa Clara之英代爾公司的MMX技術致能。在整數與浮點兩種形式中均可用的這些MMX暫存器可利用伴隨SIMD與SSE指令的緊縮資料元件來運算。同樣地,與SSE2、SSE3、SSE4或以上(一般為“SSEx”)技術有關之128位元寬的XMM暫存器,也被用來保存這種緊縮資料運算元。在一個實施例中,在儲存緊縮資料與整數資料方面,暫存器不需要區分此兩資料類型。在一個實施例中,整數與浮點數可包含在相同的暫存器檔中或不同的暫存器檔中。此外,在一個實施例中,浮點與整數資料可儲存在不同的暫存器中或相同的暫存器中。
在以下各圖的示例中描述若干資料運算元。圖3A根據本發明的實施例示出在多媒體暫存器中的各種緊縮資料類型表示。圖3A說明用於128位元寬之運算元的緊縮位元組310、緊縮字320、及緊縮雙字330的資料類型。本示例之緊縮位元組格式310為128位元長,且包含16個緊縮位元組資料元件。在此舉例而言,位元組的定義為8位元的資料。每一位元組資料元件的資訊係儲存在位元組0的位元7至位元0、位元組1的位元15至位元8、位元組2的位元23至位元16、及最後位元組15的位元120至位元127。因此,暫存器中所有可用的位元都被使用。此儲存配置增加了處理器的儲存效率。同樣地,隨著16個資料元件被存取,一個運算現在可於16個資料 元件上平行實施。
一般來說,資料元件包括資料的個別件,其與長度相同的其它資料元件儲存在單一暫存器或記憶體位置中。在與SSEx技術相關的緊縮資料序列中,儲存在XMM暫存器中之資料元件的數量係128位元除以個別資料元件之位元長度。類似地,在與MMX及SSE技術相關的緊縮資料序列中,儲存在MMX暫存器中之資料元件的數量係64位元除以個別資料元件之位元長度。雖然圖3A中所說明之資料類型為128位元長,但本發明之實施例也可運算64位元寬、或其它大小的運算元。本示例之緊縮字格式320係128位元長,且包含8個緊縮字資料元件。每一個緊縮字包含16位元的資訊。圖3A之緊縮雙字格式330係128位元長,且包含4個緊縮雙字資料元件。每一個緊縮雙字資料元件包含32位元的資訊。緊縮四字係128位元長,且包含2個緊縮四字資料元件。
圖3B根據本發明的實施例示出可能的暫存器內資料儲存格式。每一個緊縮資料可包括一個以上的獨立資料元件。在此說明3種緊縮的資料格式:緊縮半(packed half)341、緊縮單(packed single)342、及緊縮雙(packed double)343。緊縮半341、緊縮單342、及緊縮雙343的一實施例包含固定點資料元件。一或多個緊縮半341、緊縮單342、及緊縮雙343的另一實施例可包含浮點資料元件。緊縮半341的一個實施例係128位元長,包含8個16位元的資料元件。緊縮單342的一個實 施例係128位元長且包含4個32位元的資料元件。緊縮雙343的一實施例係128位元長且包含2個64位元的資料元件。可以理解的是,此緊縮資料格式可進一步擴展到其它的暫存器長度,例如,96位元、160位元、192位元、224位元、256位元、512位元或更多。
圖3C根據本發明的實施例示出在多媒體暫存器中的各種有號及無號的緊縮資料類型表示。無號緊縮位元組表示法344說明無號緊縮位元組在SIMD暫存器中的儲存。每一個位元組資料元件的資訊係儲存在位元組0的位元7至位元0、位元組1的位元15至位元8、位元組2的位元23至位元16、及最後位元組15的位元120至位元127。因此,暫存器中所有可用的位元都被使用。此儲存配置可增加處理器的儲存效率。同樣地,隨著16個資料元件被存取,一個運算現在可用平行的方式對16個資料元件實施。有號緊縮位元組表示法345說明有號緊縮位元組的儲存。須注意,每個位元組資料元件的第8個位元為正負號指示元。無號緊縮字表示法346說明字7到字0如何被儲存在SIMD暫存器中。有號緊縮字表示法347與無號緊縮字暫存器內表示法346類似。須注意,每一個字資料元件的第16個位元係正負號指示元。無號緊縮雙字表示法348顯示雙字資料元件如何儲存。有號緊縮雙字表示法349可與無號緊縮雙字暫存器內表示法348類似。須注意,每一個雙字資料元件所需的正負號位元係第32個位元。
圖3D示出運算編碼(運算碼)的實施例。此外,格式360包括暫存器/記憶體運算元定址模式,其對應於「IA-32英特爾架構軟體開發者手冊2A:指令集參考(IA-32 Intel Architecture Software Developer’s Manual Volume 2A:Instruction Set Reference)」中所描述之運算碼格式的類型,其可從全球通訊網(www)上之加州Santa Clara之英代爾公司的intel.com/design/litcentr處獲得。在一個實施例中,指令係由一或多個欄位361與362來編碼。每個指令多達兩個運算元位置可被識別,包括多達兩個來源運算元識別符364與365。在一個實施例中,目的地運算元識別符366與來源運算元識別符364相同,然而在其它實施例中它們則不相同。在另一個施例中,目的地運算元識別符366與來源運算元識別符365相同,然而在其它實施例中它們則不相同。在一個實施例中,被來源運算元識別符364與365識別的其中一個來源運算元可被文字串流比較運算的結果覆寫,然而,在其他實施例中,識別符364對應於來源暫存器元件,及識別符365對應於目的地暫存器元件。在一個實施例中,運算元識別符364與365可用來識別32位元或64位元的來源與目的地運算元。
圖3E根據本發明的實施例示出具有40或更多位元的另一種可能的運算編碼(運算碼,opcode)格式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)與位移位元組所指定。
圖3F根據本發明的實施例示出另一種可能的運算編碼(opcode)格式。64位元單指令多資料(SIMD)算術運算可透過協同處理器資料處理(coprocessor data processing;CDP)指令來實施。運算編碼(運算碼)格式380描繪一個諸如具有CDP運算碼欄位382與389的CDP指令。對於另一個實施例,CDP指令之類型的運算,可由一或多個欄位383、384、387、 及388來編碼。每指令多達3個運算元位置被識別,包括多達兩個來源運算元識別符385與390及一個目的地運算元識別符386。協同處理器的一實施例可對8、16、32、及64位元值運算。在一個實施例中,指令可對整數元件執行。在一些實施例中,可使用條件欄位381有條件地執行指令。對於一些實施例,來源資料大小可由欄位383來編碼。在一些實施例中,零(Z)、負(N)、進位(C)、及溢位(V)檢測可在SIMD欄位完成。對於一些指令,飽合的類型可藉由欄位384來編碼。
圖4A是根據本發明的實施例示出有序管線和暫存器重新命名階段、無序問題/執行管線的方框圖。圖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包括重新命名/配置單元452耦接至退役單元454及一組一或多個排程器單元 456。排程器單元456代表任何數量之不同的排程器,包括保留站、中央指令視窗等。排程器單元456可被耦接至實體暫存器檔單元458。每個實體暫存器檔單元458代表一或多個實體暫存器檔,其不同的各者儲存一或多個不同的資料類型,如純量整數、純量浮點、分包整數、分包浮點、向量整數、向量浮點、狀態(例如,是下一個指令將被執行的位址的指令指標)等。實體暫存器檔單元458被退役單元154重疊用以說明可用來實施暫存器重新命名與亂序執行的各種不同的方法(例如,使用一或多重新排序緩衝區與一或多退役暫存器檔;使用一或多未來檔、一或多歷史緩衝區、及一或多退役暫存器檔;使用暫存器映圖與暫存器池;等)。通常,從處理器之外部或從程式設計師的觀點可以看到架構暫存器。暫存器並不限於任何習知的特定類型的電路。各種不同類型的暫存器都可適用,只要它們能夠按本文之描述儲存與提供資料。適用之暫存器的示例包括但不限於專用的實體暫存器、使用暫存器重新命名的動態配置實體暫存器、專用與動態配置之實體暫存器的組合等。退役單元454與實體暫存器檔單元458被耦接至執行叢集460。執行叢集460包括一組一或多個執行單元162與一組一或多個記憶體存取單元464。執行單元462可對各種類型的資料(例如,純量浮點、緊縮的整數、緊縮的浮點、向量整數、向量浮點)實施各種的運算(例如,移位、加、減、乘)。雖然一些實施例可以包括多個專用於特定功能或一組功能的執行單元的,其他實施 例可僅包括一個執行單元或多個執行單元,其全部執行所有功能。排程器單元456、實體暫存器檔單元458和執行叢集460示出為可能複數,因為某些實施例中創建用於特定類型的數據/運算的獨立管線(例如,純量整數管線、純量浮點/分包整數/分包浮點/向量的整數/向量浮點管線,及/或記憶體存取管線,其每個都具有自己的排程器單元、實體暫存器檔單元及/或執行叢集-和在一個單獨的記憶體存取管線的情況下,某些實施例可被實現,其中只有該管線的執行叢集具有記憶體存取單元464)。還應該理解的是,其中,使用單獨的管線時,這些管線中的一或多個可以是無序問題/執行,其餘的係有序。
該組記憶體存取單元464可被耦接到記憶體單元470,它包括耦合到資料快取單元474的資料TLB單元472,該資料快取單元474耦合到2階(L2)快取單元474。在一個示例實施例中,記憶體存取單元464可以包括載入單元、儲存位址單元、及儲存資料單元,其中的每一個耦可被耦接到在記憶體單元470中的資料TLB單元472。L2快取單元476可被耦接到快取的一或更多其他階以及最終耦接到主要記憶體。
以舉例的方式,示例性暫存器重新命名、無序問題/執行核心架構可實施管線400如下:1)指令擷取438實施擷取與長度解碼階段402、404;2)解碼單元440可實施解碼階段406;3)重新命名/配置器單元452可實施配置階段408與重新命名階段410;4)排程器單 元456可實施排程階段412;5)實體暫存器檔單元458與記憶體單元470可實施暫存器讀取/記憶體讀取階段414;執行叢集460可實施執行階段416;6)記憶體單元470與實體暫存器檔單元458可實施寫回/記憶體寫入階段418;7)異常處置階段422之效能中包括各種不同的單元;以及8)退役單元454與實體暫存器檔單元458可實施提交階段424。
核心490可以支持一或多個指令集(例如,x86指令集(與已經添加較新的版本的一些擴展);加州桑尼維爾MIPS科技的MIPS指令集;加州桑尼維爾ARM控股的ARM指令集(具有可選的額外擴展像是NEON))。
須瞭解,核心可以各種方法支援多執行緒(執行兩或多個平行組的運算或執行緒)。多執行緒支援可藉由例如包括分時多執行緒、同時多執行緒(其中,單個實體核心提供邏輯核心給每一個執行緒,該實體核心係同時多執行緒)、或此兩者的組合來實施。這種組合可包括,例如,分時擷取與解碼,並於之後同時多執行緒,諸如Intel®的混合執行緒技術。
而暫存器重新命名可為描述在無序執行的上下文中,但是應該理解的是,暫存器重新命名可以在有序結構中被使用。儘管所描述的處理器的實施例還包括分開的指令和資料快取單元443/474和共享的L2快取476,其他的實施例可具有用於指令和資料兩者的單一內部快取, 像是,例如,1階(Level 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可以包括用於驅動一或多個外部連接至顯示器或圖形模組560的顯示引擎512。系統代理510可以包括用於圖形之通訊匯流排的介面。在一個實施方案中,介面可藉由快速周邊組件互連(PCI Express,PCIe)來實現。在另一個實施方案中,介面可藉由快速周邊組件互連圖形(PCI Express Graphics,PEG)514來實現。系統代理510可以包括直接媒體介面(DMI)516。DMI 516可提供計算機系統的機板或其它部分上不同的橋之間的聯繫。系統代理510可包括用於提供到計算系統的其它元件的PCIe鏈接之PCIe橋518。PCIe橋518可以使用記憶體控制器520和一致性邏輯522來實施。
核心502可以以任何合適的方式來實現。核心502可以對結構及/或指令集而言為同質或異質。在一個實施例中,一些核心502可以是按順序的,而其他可以是無序的。在另一個實施例中,兩個或多個核心502可以執行相同的指令集,而其他者可能僅執行該指令集或不同 的指令集的一個子集。
處理器500可以是通用處理器,諸如可獲自加州Santa Clara之英代爾公司的CoreTM i3、i5、i7、2 Duo與Quad、XeonTM、ItaniumTM、XScaleTM、或StrongARMTM處理器。處理器500可被提供自其它公司,諸如ARM Holdings公司、MIPS等。處理器500可以是特殊用途處理器,例如,諸如網路或通訊處理器、壓縮引擎、圖形處理器、協同處理器、內嵌式處理器、或類似處理器。處理器500可以在一或多個晶片上實施。處理器500可以是一部分的及/或可以使用任意數量的製程技術而在一或多個基板上實施,像是,例如,BiCMOS、CMOS或NMOS。
在一個實施例中,快取506的給定的一者可由核心502的多者共享。在另一個實施例中,快取506的給定的一者可專用於核心502的一者。快取506對核心502的分配可以由快取控制器或其它合適的機構來處理。快取506的給定的一者可由兩個或多個核心502藉由實施一個給定的快取506的時間切割來共享。
圖形模組560可以實現一個整合的圖形處理子系統。在一個實施例中,圖形560可包括圖形處理器。此外,圖形模組560可以包括媒體引擎565。媒體引擎565可提供媒體編碼和視頻解碼。
圖5B是根據本發明的實施例的核心502的示例實施的方框圖。核心502可以包括前端570,其通訊地 耦接到無序的引擎580。核心502可以透過快取階層503通訊地耦接到處理器500的其它部分。
前端570可以以任何合適的方式來實現,如上所述的前端201之部分地或全部地。在一個實施例中,前端570可以透過快取503與處理器500的其它部分進行通訊。在進一步的實施例中,前端570可以擷取來自處理器500的部分的指令並且當它們被傳遞到無序執行引擎580時,準備稍後將在處理器管線中所使用的指令。
無序執行引擎580可以以任何合適的方式來實現,如上所述的無序執行引擎203之部分地或全部地。無序執行引擎580可準備從前端570所接收之指令以供執行。無序執行引擎580可包括分配模組1282。在一個實施例中,分配模組1282可分配處理器500之資源或其它資源,例如,由暫存器或緩衝器,用以執行一個給定的指令。分配模組1282可以在排程器中,比如記憶體排程器、快速排程器或浮點排程器分配。這樣的排程器可以藉由資源排程器584在圖5B中表示。分配模組1282可以完全或部分藉由結合圖2所述的分配邏輯來實現。資源排程器584可基於給定的資源之來源準備就緒和執行所需資源的可用性來決定指令何時準備好執行。資源排程器584可以藉由,例如,上述之排程器202、204、206來實現。資源排程器584可以依據一個或多個資源排程指令的執行。在一個實施例中,這種資源對於核心502為內部的,且可被說明,例如,作為資源586。在一個實施例中,這種資 源對於核心502為內部的,且可為,例如快取階層503所存取。資源可以包括,例如,記憶體、快取、暫存器檔、或暫存器。對核心502的內部資源可由圖5B中的資源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可以從英特爾公司的處理器的非核模組中實現。模組590可以包括處理器500的子系統或部分,為核心502的 執行所必須,但可能不在核心502內被實施。此外,LLC 595、模組590可以包括,例如,硬體介面、記憶體一致性協調器、處理器間互連、指令管線、或記憶體控制器。對處理器500可用之RAM 599的存取可透過模組590以及,更具體地,LLC 595來達成。此外,核心502的其他實例可類似地存取模組590。核心502的實例的協調可部分透過模組590來促進。
圖6至8可示出適於包括處理器500的示例性系統,而圖9可示出一晶片上系統(SoC),其可以包括一或多個核心502。其他系統的設計和實施在本領域中習知為用於筆記型電腦、桌上型電腦、手持個人電腦、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位信號處理器(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中也可存在額外或不同的處理器。例如,額外的處理器615可包括與處理器610相同的額外處理器、與處理器610異質或不對稱的額外處理器、加速器(諸如,例如,圖形加速器或數位信號處理(DSP)單元)、現場可程式閘陣列、或任何其它的處理器。在特徵之指標的範圍方面,實體資源610、615之間有許多差異,包括架構、微架構、熱、電源消耗特性、或類似物。在處理器610、615之間,這些差異可 有效地明白表示出它們的不對稱與異質性。關於至少一實施例,不同的處理器610、615可存在於同一晶粒封裝中。
圖7示出根據本發明的實施例的系統700的方框圖。如圖7所示,多處理器系統700可包括點對點互連系統,且可包括經由點對點互連750來耦接的第一處理器770與第二處理器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)介面750使用P-P介面電路778和788來交換資訊。如圖7所示,IMC 772與782將處理器耦接至各自的記憶體,即記憶體732與記憶體734,其在一實施例中可以是主記憶體之本地附接到各自處理器的一部分。
處理器770和780可各經由各別P-P介面752、754使用點對點介面電路776、794、786和798與晶片組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中具有相似的附圖標記的元件, 以及為了避免模糊圖8的其他方面而使圖7的某些方面已經從圖8中刪去。
圖8示出了處理器870、880可分別包括整合記憶體及I/O控制邏輯(“CL”)872和882。關於至少一實施例,CL872與882可包括整合式記憶體控制器單元,諸如以上與圖5及7有關的描述。此外,CL 872與882也可包括I/O控制邏輯。圖8中所說明的不僅是記憶體832、834耦接至CL 872與882,而且I/O裝置814也耦接至CL 872與882。傳統I/O裝置815可耦接至晶片組890。
圖9示出根據本發明的實施例的SoC 900的方框圖。與圖5中類似的元件具有類似的參考數字。此外,虛線方塊可表示更先進之SoC上選用的特徵。互連單元902可被耦接至:包括一組一或多個核心902A-N與共用快取單元906的應用處理器910;系統代理單元910;匯流排控制器單元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、快閃記憶體(FLASH)控制器1055、雙資料率(DDR)控制器1060、安全引擎1065、及整合晶片間聲音/內部積體電路(Integrated Interchip Sound/Inter- Integrated Circuit;I2S/I2C)控制器1070。圖10的處理器內可包括其它的邏輯與電路,包括更多的CPU或GPU及其它的周邊介面控制器。
至少一個實施例的一或多個方面可以由儲存在機器可讀介質上代表的資料來實施,其表示處理器內的各種邏輯,當其由機器讀取時使機器製造邏輯以執行本發明所述的技術。此種表示法為習知的“IP核心”,可儲存在實體的機器可讀取的媒體(“磁帶”)上,並供應給各不同的客戶或製造工廠,用以載入到實際製造邏輯或處理器的製造機具內。例如,諸如由ARM Holdings公司所開發的CortexTM系列處理器、以及中國科學院之計算技術研究所(ICT)所開發的龍芯(Loongson)IP核心,這些IP核心可授權或販售給各不同的客戶或被授權者,諸如德州儀器、高通、蘋果、或三星,並在這些客戶或被授權者所生產的處理器中實施。
圖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指令集核心的處理器1316執行。具有至少一個x86指令集核心的處理器1316表示可以執行與具有至少一個x86指令集核心的Intel處理器的實質上相同功能的任何處理器,其藉由相容地執行或甚至處理(1)Intel x86指令集核心的指令集的實質部分或(2)目標在具有至少一個x86指令集核心的Intel處理器上運行的應用程式的物件碼版本或其他軟體,以實現實質上與具有至少一個x86指令集核心的Intel處理器相同的結果。x86編譯器1304表示編譯器,其可操作以產生x86的二進制碼1306(例如,物件碼),其可利用或不利用額外連結處理而在具有至少一個x86指令集核心的處理器1316上執行。類似地,圖13示出在高階語言1302中的程式可以使用替代的指令集編譯器1308來編譯,以產生替代的指令集編譯的二進制碼1310,其可以由不含至少一個x86指令集核心的處理器1314本身執行(例如,具有執行加州桑尼維爾的MIPS科技的MIPS指令集及/或其執行加州桑尼維爾的ARM控股的ARM指令集的核心之處理器)。指令轉換器1312可被用於轉換x86二進制碼1306成可由不具有 x86指令集核心的處理器1314本地執行的碼。此經轉換的碼可能不與替代的指令集二進制碼1310相同;不過,經轉換的碼將可完成一般的運算,並由來自替代的指令集之指令組成指令。因此,指令轉換器1312代表軟體、韌體、硬體、或其組合,透過仿真、模擬或任何其他製程,允許不具有x86指令集處理器或核心的處理器或其他電子裝置來執行x86二進制代碼1306。
圖14是根據本發明的實施例的處理器之指令集架構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卡或裝置或從SIM卡或裝置存取。SDRAM控制器1440可提供存取至SDRAM晶片或模組或從SDRAM晶片或模組存取。快取控制器1445可提供存取至像是快閃記憶體的記憶體或RAM的其他實例或從快閃記憶體的記憶體或RAM的其他實例存取。SPI主單元1450可以提供至通訊模組的存取或從通訊模組存取,像是藍牙模組1470、高速3G數據機1475、全球定位系統模組1480或實現通信標準如802.11的無線模組1485。
圖15是根據本發明的實施例的處理器之指令集架構1500的方框圖。指令集架構1500可以執行指令集架構1400的一或多個方面。此外,指令集架構1500可以示出用於處理器內之指令的執行的模組和機制。
指令架構1500可包括通訊地耦接至一或多個執行實體1565的記憶體系統1540。此外,指令架構1500 可以包括快取和匯流排介面單元,像是單元1510通訊地耦合到執行實體1565和記憶體系統1540。在一個實施例中,可以由一或多個執行之階段來進行將指令載入執行實體1564中。這樣的階段可以包括例如指令預取階段1530、雙指令解碼階段1550、暫存器重新命名階段155、發行階段1560、及寫回階段1570。
在一個實施例中,記憶體系統1540可以包括執行的指令指標1580。執行的指令指標1580可以儲存識別一批指令中最久、未分派指令的值。最久的指令可對應於最低的程式順序(Program Order,PO)值。PO可包括指令的唯一編號。這樣的指令可以是由多鏈表示的執行緒內的單一指令。PO可被用於排序指令以確保代碼的正確執行語義。PO可由像是評估對編碼在指令而非絕對值中的PO增量的機構來重建。這樣重建PO可以被稱為“RPO”。雖然PO可在本發明說明書中引用,例如PO可以與PRO交互地使用。鏈可以包括依賴於彼此之資料的指令序列。鏈可藉由在編譯時的二進制轉換來配置。執行鏈的硬體可以根據各種指令的PO,來依序執行一給定鏈的指令。一執行緒可以包括多鏈,使得不同鏈的指令可以彼此相依。一給定鏈的PO可以是鏈中最久的指令的PO,其還未從發行階段被分配執行。因此,多鏈的給定執行緒,包括由PO排序之指令的每個鏈,執行的指令指標1580可儲存最久由最低數所示之PO於執行緒中。
在另一個實施例中,記憶體系統1540可以包 括退役指標1582。退役指標1582可以儲存識別最後退役之指令的PO。退役指標1582可藉由例如退役單元454來設定。如果還沒有指令退役,則退役指標1582可包含空值。
執行實體1565可包任何合適的數量和種類的機制,藉由此,處理器可執行指令。在圖15的示例中,執行實體1565可以包括ALU/乘法單元(MUL)1566、ALU 1567、和浮點單元(FPU)1568。在一個實施例中,這樣的實體可利用包含在一給定位址1569內的資訊。執行實體1565與階段1530、1550、1555、1560、1570組合可能會共同形成一執行單元。
單元1510可以以任何合適的方式來實現。在一個實施例中,單元1510可以執行快取控制。在這樣的實施例中,單元1510可因此包括快取1525。快取1525可以被實現在進一步的實例中作為具有任何合適尺寸的L2統一快取,像是0、128K、256K、512K、1M、或2M位元組的記憶體。在另一個進一步的實施例中,快取1525可在錯誤校正碼記憶體中來實現。在另一個實施例中,單元1510可以執行匯流排介面到處理器或電子裝置的其它部分。在這樣的實施例中,單元1510可因此包括用於透過互連、處理器內匯流排、處理器匯流排或其他通訊匯流排、埠或線上通訊的匯流排介面單元1520。匯流排介面單元1520可以提供介面,以為了執行例如用於在執行實體1565和指令架構1500外部的系統的部分之間的 資料之傳送的記憶體及輸入/輸出位址之產生。
為了進一步促進它的功能,匯流排介面單元1520可包括用於產生中斷和對處理器或電子裝置的其它部分之通訊的中斷控制和分配單元1511。在一個實施例中,匯流排介面單元1520可以包括處理用於多個處理核心的快取存取和一致性的偵聽控制單元1512。在進一步的實施例中,提供這樣的功能,偵聽控制單元1512可以包括用於處理不同的快取之間的資訊交換的快取對快取傳送單元。在另一個進一步的實施例中,偵聽控制單元1512可包括一或多個偵聽器1514,其監視其它快取的一致性(未示出),使得快取控制器,像是單元1510,不必直接執行這種監視。單元1510可以包括用於同步指令架構1500的動作的任何合適的數量的定時器1515。此外,單元1510可以包括AC埠1516。
記憶體系統1540可以包括用於儲存指令架構1500的處理需求的資訊之任何合適的數量和種類之機制。在一個實施例中,記憶體系統1504可以包括用於儲存資訊的載入儲存單元1530,像是寫入記憶體或暫存器或從記憶體或暫存器讀回之緩衝器。在另一個實施例中,記憶體系統1504可以包括轉譯後備緩衝器(TLB)1545,其提供實體和虛擬位址之間的位址值的查找。在又一個實施例中,匯流排介面單元1520可包括記憶體管理單元(MMU)1544用於方便存取虛擬記憶體。在仍然另一個實施例中,記憶體系統1504可以包括用於在指令確 實需要被執行之前從記憶體請求此類指令的預取器1543,以減少延遲。
透過不同的階段,可進行用以執行指令的指令架構1500之運算。例如,使用單元1510指令預取階段1530可以透過預取器1543存取指令。取出的指令可被儲存在指令快取1532中。預取階段1530可致能用於快速迴圈模式的選項1531,其中足夠小以適合給定的快取內之形成迴圈的一系列指令被執行。在一個實施方案中,可以進行這樣的執行而無需存取來自例如指令快取1532的額外指令。將預取何種指令之決定可藉由例如分支預測單元1535來做成,分支預測單元1535可存取在全域歷史1536中執行的指示、目標位址1537的指示、或返回堆疊1538的內容來決定代碼的哪些分支1557將下一個被執行。這樣的分支可能可被預取作為一個結果。分支1557可透過如下所述之運算的其他階段來製造。指令預取階段1530可提供指令以及關於未來指令的任何預測至雙指令解碼階段。
雙指令解碼階段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中,解碼指令內的暫存器或其他資源的參考可被重新分配。例如,虛擬暫存器之參考可被對應的實體暫存器的參考取代。在1630中,指令可被分配到佇列以供執行。在1640中,指令可以被執行。這種執行可以以任何合適的方式來進行。在1650中,指令可被發行到合適的執行實體。在其中執行指令的方式可以取決於執行所述指令的特定實體。例如,在1655中,一個ALU可以執行算術函數。ALU可以利用單一時脈週期用於其運算,以及兩個位移器。在一個實施例中,可以採用兩個ALU,且因此兩個指令可在1655被執行。在1660,結果分支的決定可以做成。程式計數器可被用於指定目的地給將要被做成的分支。1660可在單一時脈週期內執行。在1665,浮點運算可藉由一或更多的FPU執行。浮點運算可需要多個時脈週期來執行,例如兩個至十個週期。在1670,乘法和除法運算可被執行。這種運算可以在四個時脈週期中執行。 在1675,可以執行對暫存器或管線1600的其它部分的載入和儲存運算。運算可以包括載入和儲存位址。這種運算可以在四個時脈週期中執行。在1680,如1655至1675的結果運算所需,可以執行寫回運算。
圖17是根據本發明的實施例的用於利用處理器1710之電子裝置1700的方框圖。電子裝置1700可以包括,例如,筆記型電腦、超薄電腦、電腦、塔式伺服器、機架式伺服器、刀鋒型伺服器、膝上型電腦、桌上型電腦、平板電腦、行動裝置、電話、嵌入式計算機或任何其它合適的電子裝置。
電子裝置1700可以包括處理器1710通信地耦合到任何合適數量或種類之組件、周邊設備、模組或裝置。這種耦合可藉由任何合適種類的匯流排或介面完成,像是I2C匯流排、系統管理匯流排(SMBus)、低針數(LPC)匯流排、SPI、高解析度音頻(HDA)匯流排、序列先進技術附接(SATA)匯流排、USB匯流排(版本1、2、3)、或通用異步接收器/發送器(UART)匯流排。
這樣的組件可以包括,例如,顯示器1724、觸控螢幕1725、觸控墊1730、近場通訊(NFC)單元1745、感測器集線器1740、熱感測器1746、高速晶片組(EC)1735、可信任平台模組(TPM)1738、BIOS/韌體/快閃記憶體1722、數位信號處理器1760、像是固態硬碟(SSD)或硬碟驅動器(HDD)的驅動器1720、無線區域 網路(WLAN)單元1750、藍牙單元1752、無線廣域網路(WWAN)單元1756、全球定位系統(GPS)、像是USB 3.0相機的照相機1754、或以像是LPDDR3標準實現的低功率雙倍資料速率(LPDDR)記憶體單元1715。這些組件每一個可以以任何合適的方式來實現。
此外,在各種實施例中的其他組件可透過以上討論的組件被通訊地耦合到處理器1710。例如,加速計1741、環境光感測器(ALS)1742、羅盤1743、和陀螺儀1744可被通訊地耦接到感測器集線器1740。一台熱感測器1739、風扇1737、鍵盤1746和觸控板1730可被通訊地耦接到EC 1735。揚聲器1763、耳機1764、和麥克風1765可被通訊地耦接到音頻單元1764,其又可以通訊地被耦接到DSP 1760。音頻單元1764可以包括,例如,音頻編解碼器和D類放大器。SIM卡1757可被通訊地耦接到WWAN單元1756。像是WLAN單元1750和藍牙單元1752的組件,以及WWAN單元1756可以以下一代形狀因子(NGFF)來實現。
本發明的實施例係關於用於重複發生相鄰聚集的指令和處理邏輯。圖18是用於重複發生相鄰聚集的指令和邏輯之系統1800的示例實施例的圖式。系統1800可包括處理器、SoC、積體電路、或其它機構。例如,系統1800可包括處理器1802。雖然處理器1802被示出且描述為圖18的一個示例,但任何合適的機構可以被使用。處理器1802可以包括用於重複發生相鄰聚集的任何 合適的機制。在一個實施例中,這種機構可以硬體來實現。處理器1802可以完全或部分藉由圖1至17中所述的元件來實現。
在一個實施例中,系統1800可以包括重複發生相鄰聚集單元1826用以聚集向量資料到目的地暫存器中。系統1800可以包括重複發生相鄰聚集單元1826在系統1800的任何合適的部分上。例如,重複發生相鄰聚集單元1826可以被實施為有序或無序執行管線1816內的執行單元1822。在另一示例中,重複發生相鄰聚集單元1826可以被實施在智慧財產(IP)核心(多個)1828內與處理器1802的主核心(多個)1814分開。重複發生相鄰聚集單元1826可以由處理器的電路或硬體計算邏輯的任何適當組合來實現。
重複發生相鄰聚集可在高效能計算(HPC)和其他應用中使用,包括行動和桌上型電腦計算,藉由在向量化程序中提取資料平行來加速執行。使用SIMD能力,資料的多個部分可以以相同的方式進行處理。這種能力可在SIMD暫存器內被壓縮成連續位元組包的資料元件上或被放置在隨機記憶體位置的資料元件上運作。在各種不同的實施例中,重複發生相鄰聚集單元1826可以聚集放置在該相鄰或鄰近彼此的隨機記憶體位置的資料元件。
放置在隨機記憶體位置的資料元件之聚集可能計算量很大。基於軟體的解決方案,其中,用於載入和排列資料元件的代碼是簡單地在典型的執行單元所執行, 如在處理器上1802解碼通常是緩慢的、功耗大、或對於許多重要的應用之瓶頸,包括但不限於向量基本數學函數。重複發生相鄰聚集單元1826可以實施聚集指令以聚集重複發生的相鄰向量資料。重複發生相鄰聚集單元1826可認識到,隱喻或透過解碼和特定指令的執行,這些重複發生相鄰聚集將被執行。在這樣的情況下,重複發生相鄰向量資料的聚集可被卸載到重複發生相鄰聚集單元1826。在一個實施例中,重複發生相鄰聚集單元1826可藉由在指令串流1804中將被執行的具體指令而被指定為目標。這些具體的指令可以由例如編譯器或可以藉由在指令串流1804中產生的代碼之描圖器來指定。該指令可被包括在用於處理器1802或重複發生相鄰聚集單元1826之執行所定義的庫中。在另一個實施例中,重複發生相鄰聚集單元1826可以由處理器1802的部分指定為目標,其中,處理器1802識別出在指令串流1804中的嘗試以對相鄰向量資料執行多個聚集。
指令1830可以使用重複發生相鄰聚集單元1826。在一個實施例中,重複發生相鄰聚集單元1826可決定相鄰聚集指令,其具有目的地暫存器D、要聚集的資料類型的大小Size、記憶體中的基底位址A、以及偏移的索引向量B。在另一個實施例中,重複發生相鄰聚集單元1826可以以類似的聚集指令被指定為目標,其包括上述的參數,還包括提示參數,對應於預期的相鄰聚集之數量。這些參數,D、Size、A、B、和提示,可以為任何適 當的形式,包括用於排列指令的參數旗標、顯性參數、所需的參數、具有假定默認值的可選參數、儲存在暫存器中的固有參數或其它已知的不需要傳遞資訊作為顯性參數的地點。
在一個實施例中,重複發生相鄰聚集可以包括用以從記憶體聚集資料到暫存器中的邏輯。所述邏輯可以用下面來描述:Gather(D,Size,A,B)
FOR(i=0 to(Size of D/Size)-1)
D[i]=load(A+Size * B[i])
指令可以從指令串流1804所接收,其可以駐留在系統1800的記憶體子系統內。指令串流1804可被包括在系統1800的處理器1802的任何合適的部分上。在一個實施例中,指令串流1804A可被包括在系統晶片、系統或、其它機構中。在另一個實施例中,指令串流1804B可被包括在處理器、積體電路、或其它機構中。處理器1802可包括前端1806,其可使用解碼管線階段從指令串流1804接收和解碼指令。解碼的指令可由執行管線1816的分配單元1818和排程器1820來調度、分配和排程用於執行,以及被分配給特定的執行單元1822。執行後,指令可藉由寫回階段或在退役單元1824中的退役階段退役。如果處理器1802無序地執行指令,則分配單元1818可以重新命名指令且指令可以被輸入到與退役單元關聯的重新排序緩衝器1824中。指令可以被退役,如果他們按 順序被執行的話。這種執行管線的各部分可以由一或多個核心1814來執行。
重複發生相鄰聚集單元1826可以以任何合適的方式來實現。在一個實施例中,重複發生相鄰聚集單元1826可藉由包括載入單元的電路來實現。在另一個實施例中,重複發生相鄰聚集單元1826可以使用與具有提示的聚集指令相關聯的執行單元來實施。在另外的實施例中,重複發生相鄰聚集單元1826可以使用與不具有提示的聚集指令相關聯的執行單元來實施。
在一個實施例中,重複發生相鄰聚集單元1826可以包括電路或邏輯用以計算要收集的元件數量。在另一個實施例中,重複發生相鄰聚集單元1826可接收要收集作為輸入的元件之數量。
重複發生相鄰向量資料可藉由將每個元件從記憶體以向量資料載入目的地SIMD暫存器來執行。向量資料可以位於鄰近於其它向量資料和位於偏移記憶體中的基底基址的索引。一組索引可被儲存在索引向量中。索引向量可以為重複發生相鄰聚集單元的輸入。跨距可以定義不同組資料之間的偏移。一個小的跨距可以代表相鄰組的資料向量其駐留在足夠接近的記憶體中以被載入於相同的快取線擷取運算上。相鄰且藉由小的跨距分開的向量資料可在一個運算中從記憶體載入到快取中,由於來源資料被載入到快取,使得向量資料的後續聚集更快速地執行。在一些實施例中,它可能無法保證相鄰向量資料已經被載入 到快取中。然而,充分靠近的相鄰向量資料可以被載入,以減少載入時間。
向量資料可以是任何合適的資料類型,包括但不限於位元組、字、雙字、四字、單精度浮點或雙精度浮點。記憶體定址支持可包括任何合適的類型,包括但不限於32位元和64位元定址。索引向量可以由聚集指令指定作為任何合適的來源,包括記憶體、SIMD暫存器、或從記憶體位置載入的向量。
在一個實施例中,處理器1802可以檢測指向具有固定排列圖案的記憶體的一組聚集指令。排列圖案可由索引向量來定義。因此,固定排列圖案可指示相同的索引向量或相同的索引向量加上小跨距或常數偏移。在一個實施例中,該組指令可指定相鄰記憶體位置,由一個小的跨距分開。一個小的跨距可以對應於相鄰的向量資料的附近,使得此資料可從記憶體擷取於相同快取線或同一組快取線上。此跨距可由數個位元組、數個元件,或任何其它已知的增量來定義。快取線可以對應於處理器1802的快取線的大小、處理器1802的快取線的大小的兩倍、或基於處理器1802的快取線大小之快取線的任何倍數。基於處理器1802的檢測,重複發生相鄰聚集單元1826可從記憶體將整組資料載入至快取中以加速存取。
在另一個實施例中,代碼的編譯器或描圖器可提供具有提示的一組聚集指令。提示將指示對於相同的排列圖案保持為真(true)的重新命名的聚集的數量。因 此,該提示將跨指令遞減。該組中的每個聚集可以藉由記憶體中的小的跨距來分開。跨距可以足夠小到保持相鄰的向量資料在相同快取線或同組快取線上。此跨距可由數個位元組、或數個元件、或任何其它已知的增量來定義。快取線可以對應於處理器1802的快取線的大小、處理器1802的快取線的大小的兩倍、或基於處理器1802的快取線大小之快取線的任何倍數。基於提示,重複發生相鄰聚集單元1826可從記憶體將整組資料載入至快取中以加速存取。
在又進一步的實施例中,記憶體中的向量資料可以被儲存為結構陣列(AOS)。在將AOS載入至快取後,重複發生相鄰聚集單元1826可以將AOS置換成陣列結構(SOA)以加速存取。SOA的某些部分可以每個聚集指令被儲存到目的地SIMD暫存器中。
儘管如由處理器1802的特定組件執行的各種運算都是在本發明中所描述的,其功能可以由處理器1802的任何合適的部分來執行。
圖19示出系統1800的示例運算和各部分的實施,根據本發明的實施例。
在一個實施例中,向量資料可以隨機地存在。向量資料可以被載入記憶體中。向量資料可動態地、靜態地、連續地、或任何其它合適的方式存在於記憶體中。向量資料可展示出對應於元件的相對位置的排列圖案。
記憶體可為藉由向量1902所索引的來源記憶體,它可以是任何類型的揮發性或非揮發性電腦可讀介質。向量資料元件的位址可藉由計算基底位址A和來自索引向量B的索引之總和來計算。向量B的元件可以對應於目的地暫存器1908或1910內的元件。向量B的每個元件可對應於快取線1912、1914、1916和1920。在一個實施例中,快取線在元件之間可以是相同的。在另一個實施例中,快取線在元件之間可以是不同的。來源記憶體A、向量B、和快取線1912、1914、1916、和1920可以是適用於系統1800的任何數量的位元。
向量資料可以從記憶體反復收集。向量資料聚集可以共享共同排列圖案,由小的跨距偏移。在一個實施例中,所述偏移可以修改來源記憶體的基底位址A。在另一個實施例中,所述偏移可修改索引向量。跨距可以是適合於系統1800的任何大小。跨距也可以小於系統1800能夠擷取的快取線的最大數量。跨距可以是使在向量暫存器中為相鄰之記憶體中的元件分開的任何距離。
系統1800可以首先聚集向量資料到目的地暫存器1908或目的地暫存器1910。例如,D10,為目的地暫存器1908的第一元件,可具有其來源資料在記憶體中其位址被定義為基底位址(A)和向量B(B0)的索引的總和。來源資料可能存在於快取線1914上。系統1800可以擷取對應於位址A+B0 1922的快取線1914,然後將位址1922的資料載入到D10(目的地暫存器1908的第一元 件)中。
向量資料的第一聚集可使用聚集指令1904填充目的地暫存器1908。目的地暫存器1908的元件對應於位在位址1922、1924、1926和1928的資料,其中,位址1922可對應於目的地暫存器1908中的第一元件以及位址1928可對應於目的地暫存器1908的最後一個元件。在一個實施例中,位址1928可以存在於記憶體中高於位址1922的位址。在另一個實施例中(未示出),位址1928可以存在於記憶體中低於位址1922的位址。目的地暫存器1908可包含任意數量的適合於系統1800的元件。例如,目的地暫存器1908可以是具有8位元的元件之512位元的暫存器,而有總共64個元件在暫存器中。在一個實施例中,元素的數量對應於SIMD暫存器的暫存器寬度。
在之後的某個時間點,系統1800可接著聚集向量資料到另一個目的地暫存器中。在第一和第二聚集之間的持續時間可以是可變的。例如,D20,為目的地暫存器1910的第一元件,可具有其來源資料在記憶體中其位址被定義為基底位址(A)、由小跨距(SS)的偏移、和索引向量B(B0)的總和。小跨距可能是正值或負值。小跨距可以定義基底位址A或索引向量B的偏移。小跨距(SS)可以被定義,使得所述來源資料可能存在於或靠近快取線1914。來源資料可能是遠離快取線1914的一些快取線,但仍然由向量資料的第一聚集所擷取,這是由於處 理器檢測到共同排列圖案。在一個實施例中,小跨距(SS)可以藉由數個位元組所定義,其中,來源資料具有用於任何合適的目的的非單位跨距,包括填充資料以將其與一個字的長度或快取線對齊。在另一個實施例中,小跨距可以藉由數個元件定義,其中來源資料具有單位跨距且連續地駐留在記憶體中。
在一個實施例中,系統1800可能在第一聚集期間已經擷取快取線並迫使它保留在快取中而不被逐出。在另一個實施例(未示出),系統1800可能最近已經擷取快取線,如來自對應於重複發生相鄰聚集單元1826之指令的提示所指示。系統1800可據此已經擷取對應於位址(A+SS)+B0 1930的快取線1914,以及可以直接將位址1930的資料載入到D20(目的地暫存器1910的第一元件)中而不直接存取記憶體。
在進一步的實施例中,重複發生相鄰聚集單元1826可檢測來源資料被儲存在結構陣列(AOS)中。重複發生相鄰聚集單元1826可在將其載入到快取中以加速存取之後,將來源資料轉置到陣列結構(SOA)中。
圖20示出根據本發明的實施例的用於重複發生相鄰聚集之示例方法2000的方框圖。方法2000可以由圖1至19所述的任何元件所實現。方法2000可以藉由任何合適的標準來啟動,並且可以在任何合適的點開始運算。在一個實施例中,方法2000可在2005開始運算。方法2000可以包括比示出的那些更多或更少的步驟。此 外,方法2000可以與下面所描述不同的順序執行其步驟。方法2000可在任何合適的步驟終止。此外,方法2000可以以任何適當的步驟重複運算。方法2000可以平行於方法2000的其他步驟或其它方法來執行其任何步驟。方法2000可與其他資料元件平行在任何資料元件上執行任何其步驟,使得方法2000以向量化方式來運算。
在2005,在一個實施例中,一或多個指令可以被接收,其是用於聚集向量資料。指令可被接收、解碼、分配、和執行。指令可以具體指定由重複發生相鄰聚集單元處理,或者它可以被決定該指令可以由重複發生相鄰聚集單元來處理。有關收集向量資料的輸入可被切換到用於處理的重複發生相鄰聚集單元。2005可以藉由例如前端、核心、執行單元、或其它合適的元件來執行。
在2010,在一個實施例中,一或多個指令可被分析,以決定它們是否提供關於將在記憶體中具有相同的排列圖案的連續聚集的數量的提示。排列圖案可以描述在記憶體中向量資料元件的相對隨機位置。在2015,在一個實施例中,它可以被決定排列圖案是否可能存在用於一或多個指令。在2020,在一個實施例中,它可以被決定,用於聚集向量資料的先前指令可能已經識別在執行期間的已知排列圖案。
在2025,在一個實施例中,它可以被決定先前已知的圖案是否可能存在,其可被應用於一或多個指令。如果存有一個先前已知的圖案,則方法2000可進行 到2050。否則,方法2000可進行到2030。
在2030,在一個實施例中,將聚集的元件數量可被計算。元件數量可以等於由目的地暫存器的大小除以目的地暫存器內的個別元件大小。該大小可以以位元或位元組來表示。
在2035,在一個實施例中,向量資料的位址可被計算用於每個要聚集的元件。向量資料的位址可以等於基底位址和索引的總和,其位在索引向量中。索引向量可以含有多個元件用於向量資料的每個元件。
在2040,在一個實施例中,至少一個快取線可以被擷取。快取線可對應於向量資料的位址。快取線數量可以是適用於方法2000的任何數量。
在2045,在一個實施例中,結構陣列(AOS)可基於向量資料被儲存為在記憶體中的AOS的檢測而被轉置為陣列結構(SOA)。AOS可以對應於所擷取的快取線或線。
在2050,向量資料元件被載入到適合向量處理的至少一個目的地暫存器。資料元件可以從所擷取的快取線或從記憶體本身被載入。
在2055,一或多個指令可以藉由例如退役單元來退役。方法2000可以選擇性地重複或終止。
本文公開的機制的實施例可以以硬體、軟體、韌體或這些實施方式的組合來實現。本發明的實施例可以被實施為在可編程系統上執行的電腦程式或程式碼, 該系統包含至少一個處理器、儲存系統(包括揮發性和非揮發性記憶體及/或儲存元件)、至少一輸入裝置、以及至少一輸出裝置。
程式碼可應用於輸入指令以執行本文描述的功能和產生輸出資訊。輸出資訊可以以習知的方式被應用於一或多個輸出裝置。對於本申請的目的,處理系統可包括任何具有處理器之系統,該處理器像是,例如:數位信號處理器(DSP)、微控制器、應用特定積體電路(ASIC)、或微處理器。
程式碼可以以高階程序或物件導向編程語言實作以與處理系統進行通信。如果需要的話,程式碼還可以以組合或機器語言來實現。事實上,本文描述的機制並不限於任何特定的程式語言的範圍。在任何情況下,語言可以是編譯或解譯語言。
至少一個實施例的一或多個方面可以由儲存在機器可讀介質上代表的指令來實施,其表示處理器內的各種邏輯,其當由機器讀取時使機器製造邏輯以執行本文描述的技術。這樣的表示,習知為“IP核心”可以被儲存在有形的、機器可讀介質上和被供給到各種客戶或生產設施以載入到其實際上製造邏輯或處理器之製造機器中。
這樣的機器可讀儲存介質可以包括,但不受限於,藉由機器或裝置所形成或製造的非暫態、實體配置的物體,其包括儲存媒體,例如硬碟或其他包括軟碟、光碟、唯讀光碟記憶體(CD-ROM)、可重寫光碟(CD- RW)和磁光碟的其他類型的硬碟、像是唯讀記憶體(ROM)的半導體裝置、像是動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)的隨機存取記憶體(RAM)、可擦除可編程唯讀記憶體(EPROM)、快閃記憶體、電可擦除可編程唯讀記憶體(EEPROM)、磁或光卡、或適用於儲存電子指令的任何其它類型的媒體
因此,本發明的實施例還可包括非暫態的、包含指令或包含設計資料的有形機器可讀取媒體,像是硬體描述語言(HDL)的設計資料,其定義本文所描述的結構、電路、設備、處理器及/或系統功能。這樣的實施例也可以被稱為程式產品。
在某些情況下,指令轉換器可用於將指令從源指令集轉換到目標指令集。例如,指令轉換器可轉譯(例如,使用靜態二進制轉譯、包括動態編譯的動態二進制轉譯)、變形、模擬、或以其他方式使指令轉換成一或多個由核心所處理之指令。指令轉換器可以以軟體、硬體、韌體,或其組合來實現。指令轉換器可能是在處理器上、在處理器外、或部分在處理器上及部分在處理器外。
因此,根據至少一個實施例執行一或多個指令的技術被公開。雖然某些示例性實施例已被描述並在附圖中示出,但應該理解的是,這樣的實施例僅僅是說明性的而不是受限於其他實施例,並且這些實施例不局限於所示出和描述的特定的構造和配置,因為研究這揭示的通常 知識者可能發生各種其他修改。在如本發明的技術領域中,其發展速度快並且不易預見更進一步的進步,因此在不脫離本發明內容或隨附申請專利範圍之範圍內所揭示的實施例可以在排列和細節上輕易修改以促進技術進步。
在本發明的一些實施例中,處理器可包含用以解碼指令的前端、具有複數個快取線的快取、執行單元、以及分配器或其他機構用以分配該指令至該執行單元以執行該指令的分配器。指令可用以將散佈的資料從記憶體聚集至目的地暫存器中。在上述實施例的任何組合中,在一個實施例中,該執行單元包括具有第一邏輯的元件計數,由用以在該目的地暫存器中聚集的元件數量所定義。在任何上述實施例的組合中,在一個實施例中,該執行單元可包括第二邏輯,其可以是用以計算用於該目的地暫存器中的至少一元件在該記憶體中的位址。在任何上述實施例的組合中,在一個實施例中,該執行單元可包括第三邏輯,其可以是用以基於該至少一快取線未駐留在該快取中的決定,擷取至少一快取線至該快取中用於該位址。在任何上述實施例的組合中,在一個實施例中,該執行單元可包括第四邏輯,其可以是用以從該快取線載入該目的地暫存器的該元件。
在任何上述實施例的組合中,在一個實施例中,該執行單元進一步包括第五邏輯,其可以是用以從先前指令檢測匹配排列圖案以聚集散佈的資料,以及第六邏輯,其可以是用以基於該匹配排列圖案的該檢測直接地從 該快取載入該目的地暫存器。在任何上述實施例的組合中,在一個實施例中,該執行單元可包括第五邏輯,其可以是用以基於至少一提示決定用以擷取的快取線數量,該提示指示具有排列圖案的隨後聚集的數量,其中該排列圖案係用以在該些隨後的聚集和該指令之間共享。在任何上述實施例的組合中,在一個實施例中,該執行單元可包括第五邏輯,其可以是用以將對應於所擷取的該快取線之結構陣列轉置成陣列結構用於載入至該目的地暫存器。在任何上述實施例的組合中,在一個實施例中,該執行單元可包括第六邏輯,其可以是用以基於該計算的位址和具有該排列圖案之先前聚集的先前計算的位址之間在記憶體中的距離來決定一跨距。該第五邏輯可以基於該跨距決定要擷取的該快取線數量。在任何上述實施例的組合中,在一個實施例中,位於該記憶體中的該位址的該散佈的資料可具有相同的該基底位址用於在該目的地暫存器中要聚集的該元件數量。在任何上述實施例的組合中,在一個實施例中,位於該記憶體中的該位址的該散佈的資料可具有相同的索引用於在該目的地暫存器中要聚集的該元件數量。
在一些本發發明實施例中,一種方法可以包括決定要聚集的目的地暫存器的元件數量。在任何上述實施例的組合中,在一個實施例中,該方法可包括計算用於至少一元件的記憶體中的位址。在任何上述實施例的組合中,在一個實施例中,該方法可包括決定該位址是否駐留在快取中。在任何上述實施例的組合中,在一個實施例 中,該方法可包括基於該位址不駐留在該快取中的該決定,擷取至少一快取線至該快取中用於該位址。在任何上述實施例的組合中,在一個實施例中,該方法可包括從該快取線載入該目的地暫存器的至少一元件。
在任何上述實施例的組合中,在一個實施例中,該方法可包括從一先前聚集檢測匹配的排列圖案。在任何上述實施例的組合中,在一個實施例中,該方法可包括基於該匹配排列圖案的該檢測直接地從該快取載入該目的地暫存器。在任何上述實施例的組合中,在一個實施例中,該方法可包括基於至少一提示決定要擷取的快取線的數量,該至少一提示指示具有與用於該位址的該資料的排列圖案相同的排列圖案之隨後聚集的數量。在任何上述實施例的組合中,在一個實施例中,該方法可包括將所擷取的該快取線從結構陣列轉置成陣列結構用於載入至該目的地暫存器中。在任何上述實施例的組合中,在一個實施例中,該方法可包括基於所計算的該位址和具有該排列圖案之先前聚集的先前計算的位址之間在記憶體中的距離決定一跨距,可基於該跨距決定要擷取的該快取線數量。在任何上述實施例的組合中,在一個實施例中,方法可包括基於至少一小跨距,決定要擷取的該快取線數量。在任何上述實施例的組合中,在一個實施例中,該方法包括決定該位址之該資料具有與在該目的地暫存器中要聚集的元件數量相同索引。
在本發明的一些實施例中,系統可包含用以 解碼指令的前端、具有複數個快取線的快取、執行單元、以及分配器或其他機構用以分配該指令至該執行單元以執行該指令的分配器。指令可用以將散佈的資料從記憶體聚集至目的地暫存器中。在上述實施例的任何組合中,在一個實施例中,該執行單元包括具有第一邏輯的元件計數,由用以在該目的地暫存器中聚集的元件數量所定義。在任何上述實施例的組合中,在一個實施例中,該執行單元可包括第二邏輯,其可以是用以計算用於該目的地暫存器中的至少一元件在該記憶體中的位址。在任何上述實施例的組合中,在一個實施例中,該執行單元可包括第三邏輯,其可以是用以基於該至少一快取線未駐留在該快取中的決定,擷取至少一快取線至該快取中用於該位址。在任何上述實施例的組合中,在一個實施例中,該執行單元可包括第四邏輯,其可以是用以從該快取線載入該目的地暫存器的該元件。
在任何上述實施例的組合中,在一個實施例中,該執行單元可包括第五邏輯,其可以是用以從先前指令檢測匹配排列圖案以聚集散佈的資料,以及第六邏輯,其可以是用以基於該匹配排列圖案的該檢測直接地從該快取載入該目的地暫存器。在任何上述實施例的組合中,在一個實施例中,該執行單元可包括第五邏輯,其可以是用以基於至少一提示決定用以擷取的快取線數量,該提示指示具有排列圖案的隨後聚集的數量,其中該排列圖案係用以在該些隨後的聚集和該指令之間共享。在任何上述實施 例的組合中,在一個實施例中,該執行單元可包括第五邏輯,其可以是用以將對應於所擷取的該快取線之結構陣列轉置成陣列結構用於載入至該目的地暫存器。在任何上述實施例的組合中,在一個實施例中,該執行單元可包括第六邏輯,其可以是用以基於該計算的位址和具有該排列圖案之先前聚集的先前計算的位址之間在記憶體中的距離來決定一跨距。該第五邏輯可以基於該跨距決定要擷取的該快取線數量。在任何上述實施例的組合中,在一個實施例中,位於該記憶體中的該位址的該散佈的資料可具有相同的該基底位址用於在該目的地暫存器中要聚集的該元件數量。在任何上述實施例的組合中,在一個實施例中,位於該記憶體中的該位址的該散佈的資料可具有相同的索引用於在該目的地暫存器中要聚集的該元件數量。
在一些本發明的實施例中,一種重複發生相鄰聚集單元可包含快取。在任何上述實施例的組合中,在一個實施例中,該快取可具有複數個快取線。在任何上述實施例的組合中,在一個實施例中,重複發生相鄰聚集單元可以包括要聚集的目的地暫存器的元件數量。在任何上述實施例的組合中,在一個實施例中,重複發生相鄰聚集單元可以包括第一邏輯,其可以是用以計算用於該目的地暫存器中的元件在記憶體中的位址。在任何上述實施例的組合中,在一個實施例中,重複發生相鄰聚集單元可以包括第二邏輯,其可以是用以基於該快取線未駐留在該快取中的決定,擷取至少一快取線至該快取中用於該位址。在 任何上述實施例的組合中,在一個實施例中,重複發生相鄰聚集單元可以包括第三邏輯,其可以是用以從該快取線載入該目的地暫存器的至少一元件。
在任何上述實施例的組合中,在一個實施例中,重複發生相鄰聚集單元可以包括第四邏輯,其可以是用以從先前指令檢測匹配排列圖案以聚集散佈的資料,以及第五邏輯,其可以是用以基於該匹配排列圖案的該檢測直接地從該快取載入該目的地暫存器。在任何上述實施例的組合中,在一個實施例中,重複發生相鄰聚集單元可以包括第四邏輯,其可以是用以基於至少一提示決定要擷取的快取線的數量。在任何上述實施例的組合中,在一個實施例中,重複發生相鄰聚集單元可以包括提示,該提示指示具有與用於該位址的資料之排列圖案相同的排列圖案之隨後聚集的數量。在任何上述實施例的組合中,在一個實施例中,重複發生相鄰聚集單元可以包括第四邏輯,其可以是用以將對應於所擷取的該快取線之結構陣列轉置成陣列結構用於載入該目的地暫存器。在任何上述實施例的組合中,在一個實施例中,重複發生相鄰聚集單元可以包括第五邏輯,其可以是用以基於該計算的位址和具有該排列圖案之先前聚集的先前計算的位址之間在記憶體中的距離來決定一跨距。在任何上述實施例的組合中,在一個實施例中,該快取線數量是基於至少一跨距。在任何上述實施例的組合中,在一個實施例中,位於該記憶體中的該位址的該散佈的資料可具有相同的該基底位址用於在該目的地 暫存器的該元件數量。在任何上述實施例的組合中,在一個實施例中,位於該記憶體中的該位址的該散佈的資料可具有相同的索引用於在該目的地暫存器的該元件數量。
在本發明的一些實施例中,設備可包括用於快取資料的機構。在任何上述實施例的組合中,在一個實施例中,該用於快取資料的機構可具有複數個快取線。在任何上述實施例的組合中,在一個實施例中,該設備可以包括要聚集的目的地機構的元件數量。在任何上述實施例的組合中,在一個實施例中,該設備可包括用於計算對應於該目的地暫存器的元件在記憶體中的位址的機構。在任何上述實施例的組合中,在一個實施例中,該設備可包括基於該快取線不駐留在用於快取資料的機構中的該決定,用於擷取至少一快取線至該機構中用於快取資料給該位址的機構。在任何上述實施例的組合中,在一個實施例中,該設備可包括用於從該快取線載入該目的地機構的至少一元件的機構。
在任何上述實施例的組合中,在一個實施例中,該設備單元進一步包括用以從先前指令檢測匹配排列圖案以聚集散佈的資料的機構,以及用以基於該匹配排列圖案的該檢測直接地從用於快取資料的機構載入該目的地機構。在任何上述實施例的組合中,在一個實施例中,重複發生相鄰聚集單元可以包括用以基於至少一提示決定要擷取的快取線的數量的機構。在任何上述實施例的組合中,在一個實施例中,該設備可以包括提示,該提示指示 具有與用於該位址的資料之排列圖案相同的排列圖案之的隨後聚集的數量。在任何上述實施例的組合中,在一個實施例中,該設備單元可包括用以將對應於所擷取的該快取線之結構陣列轉置成陣列結構用於載入該目的地暫存器的機構。在任何上述實施例的組合中,在一個實施例中,該設備可包括用以基於該計算的位址和具有該排列圖案之先前聚集的先前計算的位址之間在記憶體中的距離來決定一跨距的機構。在任何上述實施例的組合中,在一個實施例中,要擷取的該快取線數量是基於至少一跨距。在任何上述實施例的組合中,在一個實施例中,位於該記憶體中的該位址的該散佈的資料可具有相同的該基底位址用於在該目的地機構的該元件數量。在任何上述實施例的組合中,在一個實施例中,位於該記憶體中的該位址的該散佈的資料可具有相同的索引用於在該目的地機構的該元件數量。
1800:系統
1802:處理器
1804A:指令串流
1804B:指令串流
1806:前端
1808:二進制轉譯器
1810:指令解碼器
1812:擷取器
1814:核心
1816:執行管線
1818:重新命名/分配單元
1820:排程器
1822:執行單元
1824:退役單元/重新排序緩衝器
1826:重複發生相鄰聚集單元
1828:智慧財產(IP)核心
1830:指令

Claims (14)

  1. 一種用於重複發生相鄰聚集的處理器,包含:前端,用以解碼指令,該指令用以將散佈的資料從記憶體聚集至目的地暫存器中;具有複數個快取線的快取;執行單元;以及分配器,用以將該指令分配給該執行單元以執行該指令;其中該執行單元包括:包括第一邏輯的元件計數,由用以在該目的地暫存器中聚集的元件數量所定義;第二邏輯,用以計算用於該目的地暫存器中的元件在該記憶體中的位址;第三邏輯,用以基於該快取線未駐留在該快取中的決定,擷取至少一快取線至該快取中用於該位址;第四邏輯,用以從該快取線載入該目的地暫存器的該元件;第五邏輯,用以基於至少一提示決定用以擷取的快取線數量,該提示指示具有排列圖案的隨後聚集的數量,其中該排列圖案係用以在該些隨後的聚集和該指令之間共享;以及第六邏輯,用以基於所計算的該位址和具有該排列圖案之先前聚集的先前計算的位址之間在記憶體中的距離來決定一跨距,其中該第五邏輯用以決定要擷取的該快 取線數量是進一步基於該跨距。
  2. 如申請專利範圍第1項的處理器,其中該執行單元進一步包括:第五邏輯,用以從先前指令檢測匹配排列圖案以聚集散佈的資料;以及第六邏輯,用以基於該匹配排列圖案的該檢測直接地從該快取載入該目的地暫存器。
  3. 如申請專利範圍第1項的處理器,其中該執行單元更包括第五邏輯,用以將對應於所擷取的該快取線之結構陣列轉置成陣列結構,以用於載入至該目的地暫存器。
  4. 如申請專利範圍第1項的處理器,其中位於該記憶體中的該位址的該散佈的資料具有用於在該目的地暫存器中要聚集的該元件數量之相同的該基底位址。
  5. 如申請專利範圍第1項的處理器,其中位於該記憶體中的該位址的該散佈的資料具有用於在該目的地暫存器中要聚集的該元件數量之相同的索引。
  6. 一種用於重複發生相鄰聚集的方法,包含:決定要聚集的目的地暫存器的元件數量;計算用於至少一元件的記憶體中的位址;決定該位址是否駐留在快取中;基於該位址不駐留在該快取中的該決定,擷取用於該位址之至少一快取線至該快取中;從該快取線載入該目的地暫存器的至少一元件;基於至少一提示,決定要擷取的快取線的數量,該至 少一提示指示具有與用於該位址的該資料的排列圖案相同之隨後排列圖案的隨後聚集的數量;以及基於所計算的該位址和具有該排列圖案之先前聚集的先前計算的位址之間在記憶體中的距離決定一跨距,其中決定要擷取的該快取線數量是進一步基於該跨距。
  7. 如申請專利範圍第6項的方法,進一步包含:從先前的聚集檢測匹配的排列圖案;以及基於該匹配排列圖案的該檢測直接地從該快取載入該目的地暫存器。
  8. 如申請專利範圍第6項的方法,更包含將所擷取的該快取線從結構陣列轉置成陣列結構,以用於載入至該目的地暫存器。
  9. 如申請專利範圍第6項的方法,更包含決定該位址的該資料具有用於在該目的地暫存器中要聚集的該元件數量之相同的索引。
  10. 一種重複發生相鄰聚集單元,包含具有複數個快取線的快取;要聚集的目的地暫存器的元件數量;第一邏輯,用以計算用於該目的地暫存器中的元件在記憶體中的位址;第二邏輯,用以基於該快取線未駐留在該快取中的決定,擷取至少一快取線至用於該位址之該快取中;第三邏輯,用以從該快取線載入該目的地暫存器的至少一元件; 第四邏輯,用以基於至少一提示,決定要擷取的快取線的數量,該至少一提示指示具有與用於該位址的該資料排列圖案相同之隨後排列圖案的隨後聚集的數量;以及第五邏輯,用以基於所計算的該位址和具有該排列圖案之先前聚集的先前計算的位址之間在記憶體中的距離來決定一跨距,其中該第四邏輯用以決定要擷取的該快取線數量是進一步基於該跨距。
  11. 如申請專利範圍第10項所述的重複發生相鄰聚集單元,更包含:第四邏輯,用以從先前指令檢測匹配排列圖案以聚集散佈的資料;以及第五邏輯,用以基於該匹配排列圖案的該檢測直接從該快取載入該目的地暫存器。
  12. 如申請專利範圍第10項的重複發生相鄰聚集單元,更包含第四邏輯,用以將對應於所擷取的該快取線之結構陣列轉置成陣列結構,以用於載入該目的地暫存器。
  13. 如申請專利範圍第10項的重複發生相鄰聚集單元,其中位於該記憶體中的該位址的該散佈的資料具有用於該目的地暫存器中的該元件數量之相同的該基底位址。
  14. 如申請專利範圍第10項的重複發生相鄰聚集單元,其中位於該記憶體中的該位址的該散佈的資料具有用於該目的地暫存器中的該元件數量之相同的索引。
TW105137282A 2015-12-20 2016-11-15 用於重複發生相鄰聚集的處理器、方法和單元 TWI733710B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/975,803 US20170177364A1 (en) 2015-12-20 2015-12-20 Instruction and Logic for Reoccurring Adjacent Gathers
US14/975,803 2015-12-20

Publications (2)

Publication Number Publication Date
TW201732546A TW201732546A (zh) 2017-09-16
TWI733710B true TWI733710B (zh) 2021-07-21

Family

ID=59066306

Family Applications (1)

Application Number Title Priority Date Filing Date
TW105137282A TWI733710B (zh) 2015-12-20 2016-11-15 用於重複發生相鄰聚集的處理器、方法和單元

Country Status (6)

Country Link
US (1) US20170177364A1 (zh)
EP (1) EP3391204A4 (zh)
CN (1) CN108292229B (zh)
DE (1) DE202016009016U1 (zh)
TW (1) TWI733710B (zh)
WO (1) WO2017112193A1 (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10621097B2 (en) * 2017-06-30 2020-04-14 Intel Corporation Application and processor guided memory prefetching
US10496437B2 (en) 2017-11-14 2019-12-03 International Business Machines Corporation Context switch by changing memory pointers
US10642757B2 (en) 2017-11-14 2020-05-05 International Business Machines Corporation Single call to perform pin and unpin operations
US10761751B2 (en) * 2017-11-14 2020-09-01 International Business Machines Corporation Configuration state registers grouped based on functional affinity
US10552070B2 (en) 2017-11-14 2020-02-04 International Business Machines Corporation Separation of memory-based configuration state registers based on groups
US10592164B2 (en) 2017-11-14 2020-03-17 International Business Machines Corporation Portions of configuration state registers in-memory
US10664181B2 (en) 2017-11-14 2020-05-26 International Business Machines Corporation Protecting in-memory configuration state registers
US10635602B2 (en) 2017-11-14 2020-04-28 International Business Machines Corporation Address translation prior to receiving a storage reference using the address to be translated
US10901738B2 (en) 2017-11-14 2021-01-26 International Business Machines Corporation Bulk store and load operations of configuration state registers
US10698686B2 (en) 2017-11-14 2020-06-30 International Business Machines Corporation Configurable architectural placement control
US10558366B2 (en) 2017-11-14 2020-02-11 International Business Machines Corporation Automatic pinning of units of memory
US10761983B2 (en) 2017-11-14 2020-09-01 International Business Machines Corporation Memory based configuration state registers
CN110321296A (zh) * 2018-03-31 2019-10-11 深圳忆联信息系统有限公司 数据写入方法及固态硬盘
CN113626082A (zh) * 2020-05-08 2021-11-09 安徽寒武纪信息科技有限公司 数据处理方法及装置以及相关产品

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050268075A1 (en) * 2004-05-28 2005-12-01 Sun Microsystems, Inc. Multiple branch predictions
US20090172364A1 (en) * 2007-12-31 2009-07-02 Eric Sprangle Device, system, and method for gathering elements from memory
US20140331032A1 (en) * 2013-05-03 2014-11-06 Ashraf Ahmed Streaming memory transpose operations

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4817029A (en) * 1987-05-11 1989-03-28 United Technologies Corporation Multiple-precision Booth's recode multiplier
US8495301B1 (en) * 2007-11-23 2013-07-23 Pmc-Sierra Us, Inc. System and method for scatter gather cache processing
US10387151B2 (en) * 2007-12-31 2019-08-20 Intel Corporation Processor and method for tracking progress of gathering/scattering data element pairs in different cache memory banks
US10175990B2 (en) * 2009-12-22 2019-01-08 Intel Corporation Gathering and scattering multiple data elements
US8904153B2 (en) * 2010-09-07 2014-12-02 International Business Machines Corporation Vector loads with multiple vector elements from a same cache line in a scattered load operation
US8635431B2 (en) * 2010-12-08 2014-01-21 International Business Machines Corporation Vector gather buffer for multiple address vector loads
GB2508533B (en) * 2011-09-26 2020-01-01 Intel Corp Instruction and logic to provide vector scatter-op and gather-op functionality
CN104040489B (zh) * 2011-12-23 2016-11-23 英特尔公司 多寄存器收集指令
EP2798475A4 (en) * 2011-12-30 2016-07-13 Intel Corp TRANSPOSED INSTRUCTION
US9785436B2 (en) * 2012-09-28 2017-10-10 Intel Corporation Apparatus and method for efficient gather and scatter operations
US10049061B2 (en) * 2012-11-12 2018-08-14 International Business Machines Corporation Active memory device gather, scatter, and filter
US9348601B2 (en) * 2012-12-26 2016-05-24 Intel Corporation Coalescing adjacent gather/scatter operations
US9372692B2 (en) * 2012-12-29 2016-06-21 Intel Corporation Methods, apparatus, instructions, and logic to provide permute controls with leading zero count functionality

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050268075A1 (en) * 2004-05-28 2005-12-01 Sun Microsystems, Inc. Multiple branch predictions
US20090172364A1 (en) * 2007-12-31 2009-07-02 Eric Sprangle Device, system, and method for gathering elements from memory
US20140331032A1 (en) * 2013-05-03 2014-11-06 Ashraf Ahmed Streaming memory transpose operations

Also Published As

Publication number Publication date
CN108292229A (zh) 2018-07-17
CN108292229B (zh) 2024-01-23
US20170177364A1 (en) 2017-06-22
DE202016009016U1 (de) 2021-06-22
EP3391204A4 (en) 2019-12-11
TW201732546A (zh) 2017-09-16
WO2017112193A1 (en) 2017-06-29
EP3391204A1 (en) 2018-10-24

Similar Documents

Publication Publication Date Title
TWI733710B (zh) 用於重複發生相鄰聚集的處理器、方法和單元
TWI739772B (zh) 處理器、用於安全指令執行管線之方法、及運算系統
TWI731893B (zh) 具有載入索引和預提取聚集操作之處理器、方法及系統
TWI730016B (zh) 用於跨步分散運算的指令與邏輯的處理器、方法及系統
TWI725073B (zh) 用於載入索引及預取散佈運算的邏輯和指令
TWI731892B (zh) 用於以通道為基礎的跨步儲存操作之指令及邏輯
CN107003921B (zh) 具有有限状态机控制的可重配置测试访问端口
TWI738682B (zh) 用於載入索引和散佈元件的處理器、方法及系統
TWI743064B (zh) 用於取得多重向量元素操作之指令及邏輯
TWI715669B (zh) 仿真的訊息通知中斷(msi)中斷處置
TWI720056B (zh) 用於設置多重向量元素操作之指令及邏輯
TWI715681B (zh) 用於位元欄位位址和插入之指令及邏輯
TW201732581A (zh) 用於載入索引與集中操作的指令及邏輯
US10331454B2 (en) System and method for load balancing in out-of-order clustered decoding
US20180004526A1 (en) System and Method for Tracing Data Addresses
TWI723075B (zh) 用於向量置換的方法和處理器以及向量置換單元
US20170168819A1 (en) Instruction and logic for partial reduction operations
TW201723815A (zh) 用於偶數與奇數向量取得操作之指令及邏輯
TWI729029B (zh) 用於向量位元欄壓縮及擴展的指令及邏輯
TWI738681B (zh) 處理器、用於檢測消抵效應之方法及消抵效應檢測單元
US20210096866A1 (en) Instruction length decoding
WO2018005718A1 (en) System and method for out-of-order clustered decoding
TW201730754A (zh) 用以取得資料行的指令和邏輯
CN107408035B (zh) 用于缕程间通信的装置和方法
TW201729081A (zh) 用於以向量為基礎的位元操控之指令及邏輯

Legal Events

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