TWI742132B - 用以將多個資料元件載入到非緊縮資料暫存器的目的地儲存位置的處理器、方法、系統及指令 - Google Patents
用以將多個資料元件載入到非緊縮資料暫存器的目的地儲存位置的處理器、方法、系統及指令 Download PDFInfo
- Publication number
- TWI742132B TWI742132B TW106126951A TW106126951A TWI742132B TW I742132 B TWI742132 B TW I742132B TW 106126951 A TW106126951 A TW 106126951A TW 106126951 A TW106126951 A TW 106126951A TW I742132 B TWI742132 B TW I742132B
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- processor
- cache
- instruction
- data
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30032—Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3824—Operand accessing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0886—Variable-length word access
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1054—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently physically addressed
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
- G06F9/30038—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/3013—Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1028—Power efficiency
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
- G06F2212/681—Multi-level TLB, e.g. microTLB and main TLB
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
一態樣的處理器包括複數個緊縮資料暫存器,和用以解碼指令的解碼單元。該指令係用以指示要用以儲存來源緊縮記憶體位址資訊的該複數個緊縮資料暫存器其中之一緊縮資料暫存器。該來源緊縮記憶體位址資訊係用以包括複數個記憶體位址資訊資料元件。執行單元與該解碼單元及該複數個緊縮資料暫存器耦接,反應於該指令,該執行單元係用以從複數個記憶體位址載入複數個資料元件,該複數個記憶體位址各者用以對應至該複數個記憶體位址資訊資料元件之不同者,並且該執行單元用以儲存該複數個載入資料元件於目的地儲存位置中。該目的地儲存位置不包括該複數個緊縮資料暫存器中之一暫存器。
Description
政府利益之陳述
此發明在由防衛部門頒發的第H98230-13-D-0124號合約下以政府支援作成。在此發明中政府具有某些權利。
於此說明的實施例一般係關於處理器。特別是,於此說明的實施例一般係關於處理器的記憶體存取性能。
處理器通常進行用以存取記憶體的指令。例如,處理器可執行載入指令來從記憶體讀取或載入資料及/或執行儲存指令來寫入或儲存資料到記憶體。
對於至少一些應用和使用,用以快速地從記 憶體載入資料可顯著地影響效能。例如,此可通常是用於各種不同類型的記憶體存取集中應用的情形。
100‧‧‧處理器
102‧‧‧索引載入指令
104‧‧‧解碼單元
106‧‧‧執行單元
108‧‧‧緊縮資料暫存器
110‧‧‧來源緊縮記憶體位址資訊
112‧‧‧目的地緊縮資料暫存器
114‧‧‧純量暫存器
116‧‧‧記憶體位址產生資訊
118‧‧‧目的地記憶體位址資訊
120‧‧‧記憶體
122‧‧‧非相連儲存位置
124‧‧‧目的地儲存位置
126‧‧‧結果緊縮資料
128‧‧‧相連方塊
300‧‧‧處理器
302‧‧‧索引載入指令
304‧‧‧解碼單元
306‧‧‧執行單元
310‧‧‧來源緊縮記憶體位址資訊
316‧‧‧記憶體位址產生資訊
318‧‧‧目的地記憶體位址資訊
319‧‧‧目的地記憶體位址
320‧‧‧記憶體
324‧‧‧快取線
326‧‧‧結果緊縮資料
336‧‧‧快取階層
338‧‧‧L1快取
340‧‧‧L2快取
341‧‧‧非時序載入運算
343‧‧‧時序儲存運算
406‧‧‧執行單元
410‧‧‧來源緊縮記憶體位址資訊
416‧‧‧基底位址
446‧‧‧加法器
447‧‧‧暫時位址暫存器
448‧‧‧位址選擇器單元
449‧‧‧存取位址單元
451‧‧‧遮罩暫存器
452‧‧‧遮罩元件選擇器
453‧‧‧選定的邏輯記憶體位址
553-1~553-N‧‧‧邏輯記憶體位址
555‧‧‧分庫轉譯旁視緩衝器
556-1~556-N‧‧‧轉譯旁視緩衝器庫
557-1~557-M‧‧‧項目
558-1~558-M‧‧‧項目
559-1~559-N‧‧‧實體位址
560‧‧‧命中事件
561‧‧‧未命中事件
562‧‧‧記憶體管理單元
563‧‧‧頁表
599‧‧‧互連
620‧‧‧記憶體
624‧‧‧目的地儲存位置
659-1~659-N‧‧‧實體位址
664‧‧‧並行載入運算調度單元
665‧‧‧目的地儲存位置
667-1~667-N‧‧‧載入運算
668-1~668-N‧‧‧寫入
770‧‧‧儲存佇列
771‧‧‧延伸儲存佇列
772‧‧‧頭指標
773‧‧‧尾指標
900‧‧‧處理器
902‧‧‧索引載入指令
904‧‧‧解碼單元
906‧‧‧執行單元
908‧‧‧緊縮資料暫存器
924‧‧‧目的地快取線
938‧‧‧L1快取
940‧‧‧L2快取
953‧‧‧邏輯位址
955‧‧‧級2轉譯旁視緩衝器
959‧‧‧實體位址
964‧‧‧載入運算調度單元
967‧‧‧組件載入運算
970‧‧‧儲存佇列
971‧‧‧延伸儲存佇列
984-1‧‧‧核心
984-2‧‧‧核心
987‧‧‧記憶體請求佇列
988‧‧‧計數器
989‧‧‧標籤目錄
990‧‧‧互連
991‧‧‧記憶體控制器
998‧‧‧載入資料元件
1002‧‧‧VEX前置
1005‧‧‧模數R/M位元組
1015‧‧‧SIB位元組
1020‧‧‧VEX前置
1025‧‧‧前置編碼欄位
1030‧‧‧真實運算碼欄位
1040‧‧‧欄位
1042‧‧‧欄位
1044‧‧‧欄位
1046‧‧‧欄位
1050‧‧‧比例欄位
1052‧‧‧欄位內容
1054‧‧‧欄位內容
1056‧‧‧欄位內容
1062‧‧‧位移欄位
1064‧‧‧欄位
1068‧‧‧欄位
1072‧‧‧立即值欄位
1074‧‧‧全運算碼欄位
1100‧‧‧一般性向量親和指令格式
1105‧‧‧指令模板
1110‧‧‧指令模板
1112‧‧‧指令模板
1115‧‧‧指令模板
1117‧‧‧指令模板
1120‧‧‧指令模板
1125‧‧‧指令模板
1127‧‧‧指令模板
1130‧‧‧指令模板
1140‧‧‧格式欄位
1142‧‧‧基底運算欄位
1144‧‧‧暫存器索引欄位
1146‧‧‧修飾符欄位
1150‧‧‧擴充運算欄位
1152‧‧‧阿爾發欄位
1152A‧‧‧欄位
1152A.1‧‧‧欄位
1152A.2‧‧‧欄位
1152B‧‧‧收回提示欄位
1152B.1‧‧‧欄位
1152B.2‧‧‧欄位
1152C‧‧‧寫入遮罩控制欄位
1154‧‧‧欄位
1154A‧‧‧捨入控制欄位
1154B‧‧‧資料變換欄位
1154C‧‧‧資料操控欄位
1156‧‧‧浮點異常欄位
1157A‧‧‧欄位
1157A.1‧‧‧欄位
1157A.2‧‧‧欄位
1157B‧‧‧廣播欄位
1158‧‧‧捨入運算控制欄位
1159A‧‧‧捨入運算控制欄位
1159B‧‧‧向量長度欄位
1160‧‧‧比例欄位
1162A‧‧‧位移欄位
1162B‧‧‧位移因子欄位
1164‧‧‧資料元件寬度欄位
1168‧‧‧級別欄位
1168A‧‧‧欄位
1168B‧‧‧欄位
1170‧‧‧寫入遮罩欄位
1172‧‧‧立即值欄位
1174‧‧‧全運算碼欄位
1200‧‧‧特定向量親和指令格式
1202‧‧‧前置
1205‧‧‧欄位
1210‧‧‧欄位
1215‧‧‧運算碼映射欄位
1220‧‧‧欄位
1225‧‧‧前置編碼欄位
1230‧‧‧真實運算碼欄位
1240‧‧‧欄位
1242‧‧‧欄位
1244‧‧‧欄位
1246‧‧‧欄位
1250‧‧‧比例、索引、基底(SIB)位元組
1252‧‧‧欄位
1254‧‧‧欄位
1256‧‧‧欄位
1300‧‧‧暫存器架構
1310‧‧‧向量暫存器
1315‧‧‧寫入遮罩暫存器
1325‧‧‧通用暫存器
1345‧‧‧純量浮點堆疊暫存器檔案
1350‧‧‧MMX緊縮整數平面暫存器檔案
1400‧‧‧處理器管線
1402‧‧‧提取級
1404‧‧‧長度解碼級
1406‧‧‧解碼級
1408‧‧‧分配級
1410‧‧‧更名級
1412‧‧‧排程級
1414‧‧‧暫存器讀取/記憶體讀取級
1416‧‧‧執行級
1418‧‧‧寫回/記憶體寫入級
1422‧‧‧執行處置級
1424‧‧‧提交級
1430‧‧‧前端單元
1432‧‧‧分支預測單元
1434‧‧‧指令快取單元
1436‧‧‧轉譯後備緩衝器
1438‧‧‧指令提取單元
1440‧‧‧解碼單元
1450‧‧‧執行引擎單元
1452‧‧‧更名/分配器單元
1454‧‧‧引退單元
1456‧‧‧排程器
1458‧‧‧實體暫存器檔案單元
1460‧‧‧執行叢集
1462‧‧‧執行單元
1464‧‧‧記憶體存取單元
1470‧‧‧記憶體單元
1472‧‧‧資料後備緩衝器(TLB)單元
1474‧‧‧資料快取單元
1476‧‧‧級2快取單元
1490‧‧‧核心
1500‧‧‧指令解碼器
1502‧‧‧環狀網路
1504‧‧‧級2(L2)快取的區域子集
1506‧‧‧級1(L1)快取
1508‧‧‧純量單元
1510‧‧‧向量單元
1512‧‧‧純量暫存器
1514‧‧‧向量暫存器
1506A‧‧‧級1(L1)資料快取
1522A‧‧‧數值轉換單元
1522B‧‧‧數值轉換單元
1520‧‧‧拌和單元
1524‧‧‧複製單元
1526‧‧‧寫入遮罩暫存器
1528‧‧‧16寬算術邏輯單元(ALU)
1600‧‧‧處理器
1602A~N‧‧‧核心
1604A~N‧‧‧快取
1606‧‧‧共用快取單元
1608‧‧‧積體圖形邏輯
1610‧‧‧系統代理單元
1612‧‧‧環狀的互連單元
1614‧‧‧積體記憶體控制器單元
1616‧‧‧匯流排控制器單元
1700‧‧‧系統
1710‧‧‧處理器
1715‧‧‧處理器
1720‧‧‧控制器集線器
1740‧‧‧記憶體
1745‧‧‧共處理器
1750‧‧‧輸入/輸出集線器
1760‧‧‧輸入/輸出(I/O)裝置
1790‧‧‧圖形記憶體控制器集線器
1795‧‧‧連接
1800‧‧‧系統
1814‧‧‧輸入/輸出(I/O)裝置
1815‧‧‧處理器
1816‧‧‧第一匯流排
1818‧‧‧匯流排橋
1820‧‧‧第二匯流排
1896‧‧‧鍵盤及/或滑鼠
1824‧‧‧音訊輸入/輸出(I/O)
1827‧‧‧通訊裝置
1828‧‧‧儲存單元
1830‧‧‧指令/碼及資料
1832‧‧‧記憶體
1834‧‧‧記憶體
1838‧‧‧共處理器
1850‧‧‧點對點互連
1852‧‧‧點對點(P-P)介面
1854‧‧‧點對點(P-P)介面
1870‧‧‧處理器
1872‧‧‧積體記憶體控制器邏輯
1876‧‧‧點對點介面電路
1878‧‧‧點對點介面電路
1880‧‧‧處理器
1882‧‧‧積體記憶體控制器邏輯
1886‧‧‧點對點介面電路
1888‧‧‧點對點介面電路
1890‧‧‧晶片組
1892‧‧‧高效能介面
1894‧‧‧點對點介面電路
1896‧‧‧介面
1898‧‧‧點對點介面電路
1900‧‧‧系統
1914‧‧‧輸入/輸出(I/O)裝置
1915‧‧‧舊有的輸入/輸出(I/O)裝置
2000‧‧‧晶片上系統
2002‧‧‧互連單元
2010‧‧‧應用處理器
2020‧‧‧共處理器
2030‧‧‧靜態專機存取記憶體(SRAM)單元
2032‧‧‧直接記憶體存取(DMA)單元
2040‧‧‧顯示單元
2102‧‧‧高階語言
2104‧‧‧x86編譯器
2106‧‧‧x86二進位碼
2108‧‧‧指令集編譯器
2110‧‧‧指令集二進位碼
2112‧‧‧指令轉換器
2114‧‧‧處理器
2116‧‧‧處理器
本發明可藉由參照下列說明及使用來闡述實施例之附隨的圖式來進行最佳了解。在圖式中:
圖1為處理器之實施例的方塊圖,其操作以進行具有非在成組緊縮資料暫存器中的目的地儲存位置的索引載入指令之實施例。
圖2為進行具有非為緊縮資料暫存器的目的地儲存位置的索引載入指令之實施例的方法之實施例的方塊流程圖。
圖3為處理器之實施例的方塊圖,其操作以進行具有繞過快取的非時序載入運算的索引載入指令之實施例。
圖4為用以執行索引載入指令之合適的執行單元的範例實施例的方塊圖。
圖5為合適的分庫轉譯旁視緩衝器(TLB)之範例實施例的方塊圖。
圖6為合適的並行載入運算調度單元之範例實施例的方塊圖。
圖7A為範例儲存佇列之方塊圖以及合適的延伸儲存佇列之範例實施例。
圖7B繪示圖7A的範例之運算可以之被提交的次序。
圖8為闡述範例實施例合適的記憶體排序語意的指令之範例序列的方塊流程圖。
圖9為操作以進行索引載入指令之實施例的處理器之詳細範例實施例的方塊圖。
圖10A~10C為依據本發明之實施例闡述一般性向量親和指令格式和其指令模板的方塊圖。
圖11A~B為依據本發明之實施例闡述示範性特定向量親和指令格式和運算碼欄位的方塊圖。
圖12A~D為依據本發明之實施例闡述示範性特定向量親和指令格式及其欄位的方塊圖。
圖13為暫存器架構之實施例的方塊圖。
圖14A為闡述示範性循序管線之實施例和暫存器更名亂序發出/執行管線之實施例的方塊圖。
圖14B為處理器核心之實施例的方塊圖,其包括耦接至執行引擎單元的前端單元且兩者耦接至記憶體單元。
圖15A為單一處理器核心連同其對晶粒上互連網路的連接和連同其級2(L2)快取之區域子集之實施例的方塊圖。
圖15B為圖15A的處理器核心之部分的展開視圖之實施例的方塊圖。
圖16為可具有多於一個核心、可具有積體記憶體控制器以及可具有積體圖形的處理器之實施例的方塊圖。
圖17為電腦架構之第一實施例的方塊圖。
圖18為電腦架構之第二實施例的方塊圖。
圖19為電腦架構之第三實施例的方塊圖。
圖20為電腦架構之第四實施例的方塊圖。
圖21為依據本發明之實施例用以將在來源指令集中的二進位指令轉換成在目標指令集中的二進位指令的軟體指令轉換器的使用之方塊圖。
於此所揭示的為指令之實施例、用以進行指令的處理器之實施例、當進行指令時由處理器進行的方法之實施例、包含用以進行指令之一或多個處理器的系統之實施例以及提供指令之程式或機器可讀媒體之實施例。在一些實施例中,處理器可具有用以進行指令的邏輯(例如,用以解碼指令的解碼單元、其它單元或其它邏輯,以及用以執行或進行指令的記憶體存取單元、其它執行單元、其它單元或其它邏輯)。在下列說明中,提出了眾多的特定細節(例如,特定指令運算、運算之序列、記憶體排序語意(memory ordering semantics)、處理器組態、微架構細節等)。然而,可不以這些特定細節來實施實施例。在其它實例中,周知的電路、結構及技術已被詳細地繪示以為了避免模糊本發明說明的了解。
圖1為處理器100之實施例的方塊圖,其操作以進行具有非架構暫存器的目的地儲存位置124的索引載入指令102之實施例。在一些實施例中,處理器可為通用處理器(例如,在桌上型、膝上型、伺服器及其它電腦 系統中使用之類型的通用微處理器或中央處理單元(CPU))。或者,處理器可為專用處理器。合適的專用處理器之範例包括(但不限於)網路處理器、通訊處理器、密碼處理器、圖形處理器、共處理器、嵌入式處理器以及數位信號處理器(DSP;digital signal processor)。處理器可具有各種複雜指令集計算(CISC)架構、精簡指令集計算(RISC)架構、超長指令字(VLIW)架構、混合架構、其它類型的架構之任一者,或具有不同架構之結合(例如,不同核心可具有不同架構)。在一些實施例中,處理器可配置於至少一積體電路或半導體晶粒上。在一些實施例中,處理器可包括至少一些硬體(例如,電晶體、電路、儲存微碼的非揮發性記憶體或類似者)。
在操作期間,處理器100可提取或另以接收索引載入指令102。索引載入指令之一範例為收集指令(gather instruction)。此指令可代表巨集指令、機器語言指令或處理器之指令集的其它指令或控制信號。
在一些實施例中,索引載入指令102可顯式明定(例如,透過一或多個欄位或成組的位元),或另以指令(例如,隱含地指示)來源緊縮記憶體位址資訊110。如所繪示,在一些實施例中,來源緊縮記憶體位址資訊可選擇地包括複數個緊縮記憶體索引(例如,I0、I1、I2以及I3)。類似地,在一些實施例中,索引載入指令可選擇地顯式明定或另以指示可選的額外記憶體位址產生資訊116,其要與記憶體索引結合或另以連同記憶體索 引使用來產生全或有效的邏輯記憶體位址。在其它實施例中,來源緊縮記憶體位址資訊110可選擇地包括來源緊縮邏輯記憶體位址(例如,全或有效邏輯記憶體位址),在其情形中,可選的額外記憶體位址產生資訊116可選擇地被省略。為了明確性,指令102稱為「索引載入指令」,由於索引常被使用,雖然並沒有需求使用索引。相同的,在一些實施例中,索引載入指令可選擇地顯式明定或另以指令可選的目的地記憶體位址資訊118(例如,目的地記憶體索引或目的地邏輯記憶體位址)。可選的目的地記憶體位址資訊可當目的地儲存位置124(其中結果緊縮資料126要在當進行指令時被儲存)可選地為記憶體位置(或快取的記憶體位置)時被使用,雖然這並不是必需。在一些情形中,指令可具有一或多個來源及/或目的地運算元規格欄位,用以明定暫存器、記憶體位置或其它儲存位置來提供這些運算元之一或多者。在其它情形中,這些運算元之一或多者可選擇地被儲存在暫存器、記憶體位置或隱含於指令的其它儲存位置(例如,隱含於指令之運算碼)。亦可選擇地使用這類方式之結合。
不同類型之可選的額外記憶體位址產生資訊116係合適於不同實施例,其取決於特定記憶體定址模式。藉由範例的方式,可選的額外記憶體位址產生資訊可代表資訊,其當與來源緊縮記憶體索引及/或可選目的地記憶體索引118之各者結合時,可操作以產生全或有效虛擬、線性或其它邏輯記憶體位址。完成此之精確的方式可 取決於特定架構以及被採用的記憶體定址機制。合適的記憶體位址產生資訊之範例包括(但不限於)比例因子(scale factor)、基底(base)及其各種結合。
如在闡述的實施例中所繪示,來源緊縮記憶體位址資訊110可儲存在成組的緊縮資料暫存器108中。可選的額外記憶體位址產生資訊116和可選的目的地記憶體位址資訊118可選擇地儲存在成組的比例暫存器114(例如,成組的通用暫存器、專用記憶體定址暫存器等)中。或者,其它儲存位置可選擇地使用於這些運算元之一或多者。緊縮資料暫存器及純量暫存器之各者可代表晶粒上及/或可操作以儲存資料的積體電路儲存位置上。緊縮資料暫存器可操作以儲存緊縮資料、向量資料或單指令、多資料(SIMD;single instruction,multiple data)的資料。緊縮資料暫存器及純量暫存器可代表架構可見(architecturally-visible)或架構暫存器,其對軟體及/或程式設計器(programmer)來說是可見的,及/或可代表由用以識別運算元的處理器之指令集的指令所指示的暫存器。這些架構暫存器在給定微架構上相反於其它非架構暫存器(例如,暫時暫存器、重排序緩衝器、退役暫存器等)。緊縮資料暫存器可以不同的方式在不同的微架構中來實施,並且不限於任何特定類型的設計。合適類型的暫存器之範例可包括(但不限於)專屬實體暫存器、使用更名的動態分配實體暫存器以及其結合。合適的緊縮資料暫存器與純量暫存器之特定範例包括(但不限於)圖13之緊縮 資料暫存器1310和純量暫存器1325。
請再參照圖1,處理器包括解碼單元或解碼器104。解碼單元可被耦合來接收,且可操作以解碼索引載入指令102。解碼單元可輸出一或多個相對低階指令或控制信號(例如,一或多個微指令、微運算、微碼進入點、解碼的指令或控制信號等),其反映、代表及/或衍生自相對高階的索引載入指令。在一些實施例中,解碼單元可包括至少一輸出結構(例如,埠、互連或介面),用以接收索引載入指令、指令辨識(instruction recognition)以及與其耦合以辨識及解碼索引載入指令的解碼邏輯,並且包括與其耦合的至少一輸出結構(例如,埠、互連或介面),用以輸出一或多個低階指令或控制信號。解碼單元可使用各種不同的機制來實施,包括(但不限於)微碼唯讀記憶體(ROM;read only memory)、查找表(look-up table)、硬體實施、可編程邏輯陣列(PLA;programmable logic array)以及合適來實施解碼單元的其它機制。在一些實施例中,解碼單元可被包括在晶粒上(例如,在具有執行單元106的晶粒上)。在一些實施例中,解碼單元可包括至少一些硬體(例如,電晶體、積體電路或晶粒上韌體等)。
在一些實施例中,替代索引載入指令102被直接提供給解碼單元104的是,可選擇地使用指令仿真器(emulator)、轉譯器(translator)、變形修改器(morpher)、解譯器(interpreter)或其它指令轉換模組(未繪示)。各 種類型的指令轉換模組可以軟體、硬體、韌體或其結合來實施。在一些實施例中,指令轉換模組可座落於處理器外側,例如像是分開的晶粒上及/或在記憶體中(例如,靜態、動態或運行時間仿真模組)。藉由範例的方式,指令轉換模組可接收索引載入指令,其可由第一指令集組成,並且可仿真、轉譯、變形修改、解譯或另以轉換索引載入指令成為一或多個對應的中間指令或控制信號,其可由第二不同的指令進組成。可提供第二指令進之一或多個中間指令或控制信號給解碼單元(例如,解碼單元104),其可將他們解碼成由處理器之原生硬體(例如,一或多個執行單元)可執行的一或多個低階指令或控制信號。
請再參照圖1,執行單元106係與解碼單元104、緊縮資料暫存器108以及純量暫存器114耦接。在一些實施例中,執行單元可在晶粒或積體電路上(例如,在具有解碼單元的晶粒或積體電路上)。執行單元可接收一或多個解碼或另以轉換的指令或控制信號,其代表及/或衍生自索引載入指令。亦可耦接執行單元來接收來源緊縮記憶體位址資訊110、可選的額外記憶體位址產生資訊116以及可選的目的地記憶體位址資訊118。執行單元可操作反應於及/或由於索引載入指令之結果(例如,反應於一或多個指令或從指令解碼的控制信號及/或反應於指令被解碼及/或反應於提供指令給解碼器)以執行或另以進行索引載入指令之運算。
在一些實施例中,執行單元106及/或處理器 100可操作反應於及/或由於索引載入指令102的結果來收集、另以讀取或另以從記憶體120載入多個資料元件(例如,A、B、C及D)。處理器可操作以當在電腦系統中布署在一起時與記憶體耦接,或是若兩者在相同晶片上系統(SoC)上配置的話與記憶體耦接。處理器及記憶體可藉由各種耦接機制來耦接,例如像是一或多個匯流排或其它互連、集線器(hub)、記憶體控制器、晶片組的組件以及其各種結合。在此範例中,資料元件為記憶體(例如,主或主要記憶體),雖然資料元件亦或替代可選地從次要或備份記憶體(backing memory)、大量儲存裝置、連接到儲存器的區域網路(local area network)、寬域網路、網際網路或類似者來收集。
在闡述的實施例中,四個資料元件(例如,A、B、C及D)係基於及/或使用(可選地以額外的定址資訊116)來源緊縮記憶體位址資訊110(例如,四個記憶體索引I0、I1、I2及I3)從記憶體120載入。例如,第一資料元件A可基於及/或使用及/或對應於第一索引I0從實體記憶體位址或位置來載入、第二資料元件B可從實體記憶體位址或具有第二索引I1的位置載入、第三資料元件C可從實體記憶體位址或具有第三索引I2的位置載入以及第四資料元件D可從實體記憶體位址或具有第四索引I3的位置載入。
如所繪示的,資料元件(例如,A、B、C及D)可通常從在記憶體中非相連(non-contiguous)儲存位置 122載入。在一些情形中,非相連儲存位置可相對廣泛散佈的或是稀疏的。有各種不同類型的應用及/或演算法,其通常存取相對廣泛散佈的或稀疏的資料。例如,此可為當處理稀疏的矩陣或其它稀疏的資料結構(例如,稀疏矩陣向量乘法(matrix-vector multiplication))時的情形。如另一範例,此可為當對在大及/或多維度表或其它資料結構中的資料進行大跨步存取時的情形。如又另一範例,可為在代數多重網格(AMG;algebraic multigrid)演算法中的情形。各種其它範例亦特別地在大資料及/或高效能計算應用中找到。在這類應用及/或演算法中,用以從非相連、廣泛散佈的、或稀疏記憶體位置快速存取資料的能力可趨向於顯著地影響效能。希望且相信的是,於此揭露的方法可幫助改善許多這類應用及/或演算法之效能,雖然本發明之範圍並不如此限制。
在一些實施例中,被載入的資料元件之各者可選擇地以小於資料之全快取線量(full cache line amount)來一起載入(例如,不多於資料之一半快取線量),雖然此並非必需的。例如,在一些實施例中,被載入的資料元件之各者可選擇地不具有任何額外的資料由其本身載入。例如,載入分別載入8位元、16位元、32位元或64位元資料元件可包含僅載入資料之8位元、16位元、32位元或64位元,取代載入包含資料元件的全快取線(例如,512位元快取線)。有益地,此可幫助更有效地利用可用的互連頻寬及/或記憶體存取頻寬。此外,由於較少位元 需要在互連或其它結構上傳達及/或儲存,此亦可幫助降低功率消耗,同時被上移記憶體階層。
請再參照圖1,在一些實施例中,執行單元106及/或處理器100可操作以反應於及/或由於索引載入指令102的結果以將多個載入資料元件儲存為在目的地儲存位置124中的結果緊縮資料126。在一些實施例中,多個載入資料元件可被儲存為在目的地記憶體位置中的資料元件(例如,A、B、C及D)之相連128方塊。在目的地儲存位置中的結果緊縮資料可具有在順序、毗連或另以相連的資料元件定位中或儲存位置中的資料元件。有益地,相連資料元件可提供緊密及有效格式以用於進一步處理。藉由範例的方式,此緊密格式可幫助允許資料元件之所有被儲存於單一快取線中及/或幫助允許資料元件之所有藉由單一後續向量暫存器載入指令被載入到緊縮資料暫存器中。
不同目的地儲存位置可選擇地在不同的實施例中使用。在各種實施例中,目的地儲存位置124可選擇地為在記憶體120中的目的地記憶體位置、在被使用來快取目的地記憶體位址或位置的快取中的快取線、或是不是快取的非架構晶粒上儲存位置(例如,晶粒上專屬暫用記憶體(scratchpad memory)、串流緩衝器或其它晶粒上微架構儲存)。這類非架構晶粒上儲存位置可與快取不同,在於他們可不使用快取一致性協定(cache coherency protocol)、可不具有自動或自律快取線替換演算法等。在 一些實施例中,目的地儲存位置124可不座落在緊縮資料暫存器108內。如由在圖解中的「X」所繪示,指令可不為作為目的地儲存位置124的目的地緊縮資料暫存器112。通常有相對少的緊縮資料暫存器。例如,取決於處理器可有約8、16、32。通常緊縮資料暫存器代表相對準確的資源。不對於目的地儲存位置使用緊縮資料暫存器的一個可能的益處為其可不在當資料元件正被載入的同時潛在地被綁住一段相對長的期間,並且可免於為了其它目的而被使用。一般有顯著較大數目的記憶體位置或快取位置,使得他們不會如要用以消耗的珍貴的資源。也同樣,若想要的話,具有較大數目的目的地儲存位置可選擇地允許相對大數目的索引載入指令來並行地進行。或者,在其它實施例中,若想要的話,目的地儲存位置可選擇地為目的地緊縮資料暫存器。
執行單元106及/或處理器100可包括特定或特別邏輯(例如,電晶體、積體電路或潛地在與韌體(例如,儲存在非揮發性記憶體中的指令)結合的其它硬體及或/軟體),其操作以進行索引載入指令102及/或載入索引資料元件(例如,A、B、C、D)並且反應於及/或由於索引載入指令的結果(例如,反應於從索引載入指令解碼的一或多個指令或控制信號)儲存結果緊縮資料126。藉由範例的方式,執行單元可包括載入儲存單元、收集單元、記憶體存取單元、執行引擎單元或類似者。在一些實施例中,執行單元可包括用以接收來源運算元的至少一輸 入結構(例如,埠、互連或介面)、包括用以接收及處理來源運算元且從記憶體載入資料元件的電路或與其耦接的其它邏輯以及包括與其耦接用以輸出結果緊縮資料的至少一輸出結構(例如,埠、互連或介面)。在一些實施例中,執行單元可選擇地類似於或與圖4之執行單元406相同,雖然本發明之範圍並不如此限制。
為了避免模糊本發明說明,已繪示及說明相對簡單的處理器100。然而,處理器可選擇地包括其它處理器組件。例如,各種不同的實施例可包括針對圖14B、15A、15B、16之任一者所繪示及說明的組件之各種不同結合及組態。處理器之所有組件可被耦接在一起以允許他們如打算的來運算。藉由範例的方式,考量圖14B,指令快取單元1434可快取指令、指令提取單元1438可提取指令、解碼單元1440可解碼指令、排程器單元1456可排程關聯的運算、記憶體存取單元1464及/或執行引擎單元1450可進行指令、退役單元1454可將指令引退等。
圖2為進行具有非為緊縮資料暫存器的目的地儲存位置的索引載入指令之實施例的方法230之實施例的方塊流程圖。在各種實施例中,可由處理器、指令處理設備、數位邏輯裝置或積體電路來進行方法。在一些實施例中,方法230可藉由及/或以圖1之處理器100及/或使用圖1之指令102來進行。於此針對處理器100及/或指令102說明的組件、特徵及特定可選的細節亦可選地應用到方法230。或者,方法230可藉由及/或在類似的或不同 的處理器或設備內及/或使用類似的或不同的指令來進行。再者,處理器100可進行相同於、類似於或不同於方法230的方法。
方法包括在方塊231處接收索引載入指令。在各種態樣中,指令可在處理器或其部分處被接收(例如,指令提取單元、解碼單元、匯流排介面單元等)。在各種態樣中,指令可從處理器外(off-processor)及/或晶粒外(off-die)來源(例如,從記憶體、互連等)或是從處理器上及/或晶粒上來源(例如,從指令快取、指令佇列等)被接收。指令可明定或另以指示儲存來源緊縮記憶體位址資訊的緊縮資料暫存器。來源緊縮記憶體位址資訊可包括複數個記憶體位址資訊資料元件。
方法亦包括,在方塊232處,反應於及/或由於索引載入指令之結果,從複數個記憶體位址載入複數個資料元件,該複數個記憶體位址之各者對應該複數個記憶體位址資訊資料元件之不同者。
在方塊233處,方法亦包括,反應於及/或由於索引載入指令之結果,在目的地儲存位置中儲存複數個載入資料元件。在一些實施例中,目的地儲存位置並不包括緊縮資料暫存器。
闡述的方法230包含架構的運算(例如,從軟體透視可見的該些者)。在一些實施例中,方法可選擇地包括一或多個微架構運算。藉由範例的方式,可提取、解碼、亂序排程指令,可存取來源運算元,執行單元可進 行微架構運算來實施指令,等等。在一些實施例中,用以實施指令的微架構運算可選擇地包括相對於來源記憶體位址進行非時序及/或未快取的載入,用以載入資料元件(例如,為了幫助降低快取污染(cache pollution)),雖然這不是必需。在一些實施例中,用以實施指令的微架構運算可選擇地包括將結果緊縮資料之相連的資料元件寫入或儲存到給定快取級(例如,明定的或隱含的快取級,其可選擇地為第二級或級2(L2)快取),雖然這並不是必需。在一些實施例中,用以實施指令的微架構運算可選擇地包括下面進一步針對圖3~7及9繪示及說明的該些者之任一者,雖然本發明的範圍並不如此限制。
圖3為處理器300之實施例的方塊圖,其操作以進行具有繞過快取338,340的非時序載入運算341的索引載入指令302之實施例。再者,處理器300可進行相同於、類似於或不同於圖1的處理器100。處理器300包括解碼單元304以及執行單元306,其利用來源緊縮記憶體位址資訊310、目的地記憶體位址資訊318以及可選額外的記憶體位址產生資訊316。這些組件可選擇地類似於或相同於(例如,具有相同於或類似於的任何一或多個特性)圖1之對應命名的組件,包括對於其所提的所有變化及替代。為了避免模糊本發明說明,下面將主要說明圖3之實施例之不同及/或額外特性。
在運算期間,解碼單元304可接收及解碼索引載入指令302。在一些實施例中,索引載入指令可顯式 明定(例如,透過一或多個欄位或成組的位元),或另以指令(例如,隱含地指示)來源緊縮記憶體位址資訊310(例如,緊縮記憶體索引I0、I1、I2及I3)。在一些實施例中,索引載入指令可選擇地顯式明定或另以指令可選的目的地記憶體位址資訊318(例如,目的地記憶體索引或目的地邏輯記憶體位址),其中結果緊縮資料326是要被儲存。在一些實施例中,索引載入指令可選擇地顯式明定或另以指示可選額外的記憶體位址產生資訊316,用來以來源緊縮記憶體索引進行使用及/或目的地記憶體索引,用以產生記憶體位址。
執行單元306係與解碼單元304耦接。執行單元可接收一或多個解碼或另以轉換的指令或控制信號,其被解碼自及/或代表及/或衍生自索引載入指令302。亦可耦接執行單元來接收來源緊縮記憶體位址資訊310、目的地記憶體位址資訊318以及可選額外的記憶體位址產生資訊316。執行單元可操作反應於及/或由於索引載入指令302之結果(例如,反應於一或多個指令或從指令解碼的控制信號及/或反應於指令被解碼及/或反應於提供指令給解碼器)以進行索引載入指令。
在一些實施例中,執行單元306及/或處理器300可操作以反應於及/或由於索引載入指令302之結果來基於及/或使用對應的記憶體位址資訊(例如,記憶體索引I0、I1、I2及I3以及可選額外的記憶體位址產生資訊316)從記憶體320載入多個資料元件(例如,A、B、C 及D)。如先前所述,資料元件可經常從潛在非相連記憶體位置載入。在一些實施例中,少於資料之全快取線量可選擇地被載入以用於資料元件之各者及/或資料元件之各者可選擇地在沒有任何額外相鄰資料元件下由本身載入。有益地,如先前所述,此可幫助較佳利用互連及/或記憶體存取頻寬及/或降低功率消耗。
在一些實施例中,資料元件(例如,A、B、C、D)可選擇地由非時序或未快取的(uncached)載入運算341來載入。處理器可具有至少一快取338或可選地具有快取階層336,其包括在二或多個快取層級的二或多個快取。在特定闡述的實施例中,快取階層包括第一級或級1(L1)快取338以及包括第二級或級2(L2)快取340。其它實施例可選擇地具有較少或較多其一者的快取層級。快取層級可在他們對執行單元306及/或對執行單元被包括於其中的核心的相對接近上有所不同。L1快取可最接近於執行單元或核心,然而L2快取可以是下一個最接近執行單元或核心。在另一實施例中,可選地有額外的第三級或級3(L3)快取(未繪示),其仍離執行單元或核心更遠。快取之各者可專屬於對應的核心或由兩個或多個核心共用其一者。通常,最低快取層級之一或多者(例如,L1快取和在一些情形中的L2快取)可專屬於核心,然而最高快取層級之一或多者(例如,L3快取和在一些情形中的L2快取)可由(例如,使用來快取資料以用於)二或多個核心共用,雖然此並非必需。
L1快取338和L2快取340可代表相對小、快速存取、區域的儲存,其比記憶體320相對較近於執行單元306及或執行單元被包括於其中的核心。在運算期間,可使用快取來從記憶體高速緩存(快取)或另以儲存已被載入到處理器中的資料之部分。隨後,當處理器想要從記憶體載入資料或寫入資料到記憶體中時,可首先檢查快取來看是否資料之複本已儲存在快取中。若資料已儲存在快取中,則接著可從快取快速存取資料,其可幫助避免從記憶體對資料較慢的存取。一般而言,對在較低快取層級的快取中的資料存取快於對在較高快取層級的快取中的資料存取。通常,在較低快取層級的快取小於在較高快取層級的快取。據此,快取且特別是在最低快取層級的快取,可提供值儲存空間,其若有效的利用可幫助改善效能。
為了對於快取338、340為最有效的,通常重要的是,將他們保持填充有相關的資料,其可能在不久的未來再一次的被需要。典型地使用快取線替換演算法及政策來隨時間以具有新的資料的新的快取線替換快取線。快取線替換演算法及政策通常至少部分基於資料之時效(age)及/或其最近如何被使用決定用於收回(eviction)的候選快取線。對於此的一個理由是,對在記憶體中資料的存取經常展現已知為「時間局部性(temporal locality)」,其中已被使用的資料通常在相對短的時間之周期內會被再使用。此外,全部或整體資料之快取線傳統一般地從記憶體載入且儲存在快取中,取代只是特定個別資料元件或立即需要 的快取線之部分。對於此的一個理由是,對在記憶體中資料的存取經常展現已知為「空間局部性(spatial locality)」,其中附近於或相鄰需要的給定資料之片段的資料在相對短的時間之周期內亦將經常被需要。
快取338、340亦可實施快取一致性機制或協定來幫助確保在快取中的資料被一致性地管理且在適當的時間寫回至系統記憶體。此可幫助確保在系統中所有核心、處理器或其它實體一致性地觀看到資料之正確版本。合適的快取同步性協定之範例包括(但不限於)MESI、MOSI、MOESI以及類似者。MESI協定包括四個狀態,即修改(M;modified)、排斥(E;exclusive)、共享(S;shared)以及無效(I;invalid),其由兩個MESI位元指示。MOSI協定利用自身擁有(O;owned)狀態取代排斥(E)狀態。MOESI協定利用排斥(E)和自身擁有(O)狀態兩者。修改狀態指明髒的快取線。
請再參照圖3,在一些實施例中,資料元件(例如,A、B、C、D)可選擇地藉由非時序或未快取的(uncached)載入運算341來從記憶體載入到處理器中。非時序或未快取的載入運算可使得快取線未被分配用於在快取階層336之快取338、340之任一者中載入的資料元件,並且該載入的資料元件可不被儲存在用於來源記憶體位址的快取之任一者中(例如,源自來源緊縮記憶體位址資訊310)。亦即,在一些實施例中,就顧慮來源記憶體位址而言,這些載入可繞過快取。
若載入運算未層被進行為非時序或未快取的,在一些情形中,載入資料元件(例如,A、B、C及D)之各者可潛在地常駐在記憶體中的不同快取線中,特別是當資料元件被廣泛散佈、或為稀疏的。在這樣的情形中,載入這些資料元件之各者可引起不同快取線從快取階層被收回來對於具有載入的資料元件的快取線騰出空間。再者,通常L1快取(其典型地為最小及最快的存取快取)可被使用於載入的資料元件。如所繪示,若未曾使用非時序載入運算341,則四個不同的快取線可以潛在地儲存在用於四個資料元件A、B、C及D的L1快取中。其它索引載入或收集指令可甚至載入更多資料元件,例如像是八個、十六個或甚至更多的資料元件,其可以導致甚至更多快取線被收回以用於為載入的資料元件騰出空間。特別當載入的資料元件具有相對低的空間及/或時間局部性(例如,當資料元件被廣泛散佈、或為稀疏的時)時,此可趨向於減少快取之效益。在這樣的情形中,可收回具有相對更多空間及/或時間局部性的資料之快取線(例如,其相對更可能在不久的未來被再使用)以為具有相對低空間及/或時間局部性的資料之快取線(例如,其相對不太可能在不久的未來被再使用)騰出空間。此可有效地代表具有較低相關資料的快取之污染。然而,如由在圖解中的「x」所繪示,就顧慮來源記憶體位址而言,非時序或未快取的載入運算341可能不會引起快取線被分配用於載入的資料元件。
非時序或未快取的載入運算341亦可幫助降低需要來為了實施索引載入指令302的資源(例如,微架構資源)之數目。一個隨著實施傳統收集指令(例如,其並不使用非時序載入運算341)的挑戰是,他們典型地需要使用相當數量的微架構資源。再者,隨著這類傳統收集指令,這些資源可趨向於被綁住一段相對長的期間,同時從記憶體收集資料元件。對於需要實施傳統收集指令的相對大數目的資源的一個促使的理由是,微架構資源一般需要被使用來保持追蹤快取一致性,簿記用於來自資源記憶體位址之各者的載入之各者的資訊。藉由範例的方式,可需要不同載入緩衝器項目、在突顯的記憶體請求佇列(outstanding memory request queue)中不同項目及類似者以用於來自來源記憶體位址之各者的這些載入之各者。特別是當各個這類傳統收集指令收集多個資料元件(例如,四個、八個、十六個或更多)時,此可趨向於綁住相當數目的微架構資源,其可輪流地趨向於限制自特定時間的核心可以為突顯的收集指令之數目。
然而,在一些實施例中,藉由進行非時序或未快取的載入運算341,處理器可不需要使用許多資源(例如,使用於簿記資訊的快取一致性之微架構資源)。舉例來說,在一些實施例中,由於非時序地或未快取的進行載入,一些資源可不需要被使用來保持追蹤來自來源記憶體位址之各者的載入之各者,而相反的僅追蹤載入的資料要被儲存到哪裡(例如,單一目的地儲存位置取代四 個、八個或十六個多重資源儲存位置)。有益地,此可幫助降低在微架構資源上的壓力及/或可幫助允許更多(或可選地甚至更多的多)索引載入指令同時並行地為突顯的,而不需要顯著地增加處理器之微架構資源之數目。在一個可能的使用中,此可允許節電,由於單核心或核心之小子集可被使用來載入所有需要使記憶體存取頻寬全飽和的資料,其可允許一或多個其它核心選擇地被斷電(例如,取代亦需要運行以為了使記憶體存取頻寬飽和的該些核心)。
在一些實施例中,就顧慮來源記憶體位址而言,指令可顯式明定(例如,具有一或多個位元或欄位來顯式明定)資料元件要被非時序地或未快取的載入(例如,藉由非時序或未快取的載入運算341)。例如,指令之一或多個位元或欄位可組態成第一值(例如,單一位元可被設定成二進制的1),用以指示資料元件要被非時序地載入,或組態成第二不同的值(例如,單一位元可被清成二進制的0),用以指示資料元件要被時序地載入。在其它實施例中,就顧慮來源記憶體位址而言,可選擇地隱含到指令(例如,隱含到運算碼)的是,資料元件要被非時序地或未快取的載入(例如,藉由非時序或未快取的載入運算341)。仍在其它實施例中,可選擇地支援兩個不同的運算碼,並且對於該運算碼之其中一者來說,可隱含的是,資料元件要被非時序地載入,然而對於其餘運算碼而言,其可隱含的是,資料元件要被時序地載入。具有進 行時序地或非時序地載入任一者的性能可允許程式設計器、編譯器、動態二進位轉譯器或類似者來較佳的管理快取(例如,基於資料之估計的或感知的空間及/或時間局部性)。
在一些實施例中,被載入的資料元件之各者可選擇地以小於資料之全快取線量(full cache line amount)來載入(例如,不多於資料之一半快取線量),雖然此並非必需的。例如,在一些實施例中,被載入的資料元件之各者可選擇地不具有任何額外的資料由其本身載入。有益地,此可幫助更有效地利用可用的互連頻寬及/或記憶體存取頻寬及/或可幫助降低功耗(power consumption)。
請再參照圖3,在一些實施例中,執行單元306及/或處理器300可操作以反應於及/或由於索引載入指令302的結果以將多個載入資料元件儲存為目的地記憶體位址或在記憶體320中的位置319之快取線324複本中的結果緊縮資料326。在一些實施例中,此可透過時序儲存運算343來達成。在一些實施例中,載入資料元件可在相連的、順序的或毗連的資料元件定位中儲存,其可允許資料元件之所有被儲存於單一快取線中。在闡述的範例實施例中,快取線324係在L2快取340中,雖然此並非必需的。對於使用L2快取(或替代的L3快取)取代L1快取的一個可能的理由是,L2快取(和L3快取)一般相對較大且一般較慢的存取,使得其可在綁住在L2快取(或L3快取)一段索引載入指令之期間的效能上相較於L1快 取具有相對較低的衝擊。另一個可能的理由是,L2和L3快取相對較遠的從核心的定時約束(timing constraint)移除。或者,若想要的話,L1快取可選擇地使用。在一些實施例中,在當正進行載入且直到他們完成時,快取線324可選擇地組態為不可讀的及不可收回的。
在一些實施例中,可選擇地隱含到指令(例如,隱含到其運算碼)以使用給定快取或快取層級(例如,在一些實施例中其可能不是L1快取)來將結果緊縮資料進行快取。在一些實施例中,不同索引載入指令(例如,不同的運算碼)可選擇地具有不同隱含快取層級(例如,第一運算碼可隱含地指示L1快取,第二不同的運算碼可隱含地指示L2快取,第三仍不同的運算碼可隱含地指示L3快取以及第四仍不同的運算碼可隱含地指示記憶體(例如用於在非時序或未快取儲存中使用))。
在其它實施例中,索引載入指令102可選擇地具有成組的一或多個位元或欄位(例如,快取層級指示欄位)以指示給定的快取或快取層級,其中該結果緊縮資料係用以被進行快取。如於此使用的,術語「欄位」指的是一或多個位元,其不需要必然為相連的(例如,實體分開的位元可邏輯地代表欄位)。值可依據各種可能的約定(convention)任意地映射或賦給到不同的快取或快取層級。如一範例,「00」之2位元欄位值可指示L1快取,「01」之值可指示L2快取,「10」之值可指示L3快取以及「11」之值可指示記憶體(例如,用於在非時序或未快 取的儲存中使用)。如另一範例,「0」之1位元欄位值可指示L2快取以及「1」之值可指示記憶體(例如,用於在非時序或未快取的儲存中使用)。此可允許編譯器或程式設計器調整快取層級(例如,基於資料之感知的空間及/或時間局部性)。
圖4為用以執行索引載入指令之合適的執行單元406的範例實施例的方塊圖。執行單元具有輸入,其耦接以接收來源緊縮記憶體位址資訊410和基底位址416。在此範例中,來源緊縮記憶體位址資訊具有8個緊縮記憶體索引I0到I7。執行單元包括成組的8個位址,其各者被耦接來接收記憶體索引和基底位址之不同者。8個位址之各者操作以將其對應的記憶體索引應用至基底位址來產生對應的虛擬或其它邏輯記憶體位址(LA;logical memory address)。8個索引I0到I7被轉換成8個對應的邏輯記憶體位址LA0到LA7。執行單元包括暫時位址暫存器447以儲存邏輯記憶體位址。
執行單元亦可選地包括遮罩暫存器451以儲存遮罩。遮罩包括一遮罩元件,在此情形中為單一位元,用於記憶體索引之各者。舉此範例,有8個遮罩位元。初始地,依據一可能的實施例,遮罩位元之所有被設定成二進位1。遮罩元件選擇器452係與遮罩暫存器耦接。遮罩元件選擇器可順序地選擇遮罩元件。例如,遮罩元件選擇器可在對應至最低有效記憶體索引的遮罩暫存器之一端開始,並且順序地朝庶罩暫存器之其另一端作用。位址選擇 器單元448係與遮罩元件選擇器耦接。位址選擇器可操作以從對應至自遮罩暫存器選定的遮罩元件之位址暫時暫存器來選擇一或多個(例如,一、二、三、四、五、六、七及八)邏輯記憶體位址。位址選擇器可將選定的邏輯記憶體位址(從一到八)輸出到存取位址單元449。存取位址單元可在其輸出(例如,至一或多個TLB)輸出或提供一或多個(例如,一、二、三、四、五、六、七及八)邏輯記憶體位址。執行單元406被設計成順序地輸出個別邏輯記憶體位址。在其它實施例中,執行單元可操作以並行地輸出二或多個邏輯記憶體位址,或可選地並行地輸出等值邏輯記憶體位址的全部來源緊縮記憶體位址資訊。
圖5為合適的分庫轉譯旁視緩衝器(TLB)555之範例實施例的方塊圖。至少二虛擬、線性或其它邏輯記憶體位址553可為對分庫的TLB 555。在闡述的範例中,第一邏輯記憶體位址553-1到第N邏輯記憶體位址553-N為輸入。在各種實施例中,二、四、八或十六個邏輯記憶體位址可選擇地被並行地輸入。在一些實施例中,索引載入指令(例如,四、八、十六或三十二)之邏輯記憶體位址可選擇地被並行地輸入,雖然此並非必需。
分庫的TLB包括第一TLB庫556-1到第NTLB庫556-N,其中庫(N)之數目至少為二。在各種實施例中,可選擇地有二、三、四、五、六、七、八、多於八或十六個TLB庫,雖然本發明之範圍並不如此限制。在一些實施例中,可選擇地有與索引載入指令之邏輯記憶體 位址之數目相同的TLB庫之數目,雖然此並非必需。並沒有使用與邏輯記憶體位址輸入之數目相同的TLB庫之數目之需求。
邏輯記憶體位址可需要被轉換至對應的實體記憶體位址,以為了識別在記憶體中適當的實體頁面。TLB庫之各者在使用期間可操作以將進行的邏輯記憶體位址快取到實體記憶體位址轉譯。例如,在已進行頁表走訪(page table walk)來將邏輯位址轉譯成實體位址之後,位址轉譯可在分庫的TLB中被快取。在夠短的時間之周期內,若再需要位址轉譯,則接著位址轉譯可快速地從分庫的TLB檢索,取代需要再進行較慢的頁表走訪。典型地,各個TLB庫可具有不同的項目(entry)以儲存不同的位址轉譯。如所繪示的,第一TLB庫可具有第一項目557-1(例如,將第一邏輯位址儲存到實體位址對映)到第M項目557-M。類似地,第N TLB庫可具有第一項目558-1(例如,將邏輯位址儲存到實體位址對映)到第M項目558-M。
在一些實施例中,TLB庫之各者可對應至不同(例如,互斥(mutually exclusive))組的轉譯。例如,在一些實施例中,不同的TLB庫之位址可彼此位址交插(address interleaved)。可決定映射或賦給至對應的邏輯位址的適當的TLB庫,且其可快取尋求的轉譯。如所繪示的,在一些實施例中,可提供邏輯位址給交叉開關(cross-bar)或其它互連599,其可被使用來將邏輯位址選路/路由 至適當的TLB庫。
尋求的位址轉譯將或將不會儲存在對應的TLB庫中其一者。「命中(hit)」可發生在當適當的位址轉譯儲存在對應的TLB庫中時。相反的,「未命中(miss)」可發生在當適當的位址轉譯儲存在對應的TLB庫中時。在命中560的事件中,位址轉譯可從TLB項目檢索,並且對應的實體記憶體位址可被輸出且更被使用來存取在記憶體中的頁面。未命中561可關於記憶體管理單元(MMU;memory management unit)562或其頁面未命中處置器。MMU可操作以進行頁表走訪以決定分譯。例如,MMU可存取成組的頁表563,其一般代表階層調頁結構(hierarchical paging structure)。MMU可操作以「走訪」或透過頁表推進以定位位址轉譯。決定的位址轉譯可被使用且儲存在分庫的TLB。
在一些情形中,多個邏輯位址可映射至相同的TLB庫,並且在給定的週期中,沒有邏輯位址可映射至給定的TLB庫。在先前的情形中,可連續地處理邏輯位址。在之後的情形中,給定的TLB庫在該週期上為閒置的。然而,只要至少二邏輯位址被映射至且由至少二不同對應的TLB庫服務的話,可發生在進行位址轉譯中至少一些並行性(concurrency)或平行性(parallelism)。有益地,此可幫助增加進行索引載入指令之處理量(throughput)或效能。然而,使用分庫的TLB 555是可選的而非必需的。
圖6為合適的並行載入運算調度單元664之範例實施例的方塊圖。並行的載入運算調度單元可被耦接以接收第一實體記憶體位址659-1到第N實體記憶體位址659-N,其中實體記憶體位址(N)之數目至少為二。在各種實施例中,實體記憶體位址之數目可選擇地為二、三、四、至少四、五、六、七、八、至少八、十六或三十二,雖然本發明之範圍並不如此限制。在一些實施例中,可選擇地有與用於索引載入指令的來源記憶體位址之數目相同的實體記憶體位址之數目(例如,四、八、十六或三十二),雖然此並非必需。
並行的載入運算調度單元664亦可被耦接來接收指示索引載入指令之目的地儲存位置的資訊665。在一些實施例中,在目的地儲存位置在快取中的快取線中的情形中,資訊可包括具有快取的若干個核心(core#)以及用於快取線的集合(set)及路線(way)。其它目的地儲存位置可選擇地被不同地指示。例如,在晶粒上專屬暫用記憶體中不同的儲存位置可由不同的儲存位置索引、位址或其它數目指示。
在一些實施例中,並行的載入運算調度單元664可操作來並行地及/或平行地啟動或調度多個載入運算667。在一些實施例中,並行載入運算調度單元可操作以並行地及/或平行地針對接收的實體記憶體位址之各者及/或針對索引載入指令之不同來源記憶體位址啟動或調度不同載入運算。在一些實施例中,這些載入運算可選擇地為 非時序載入,接著寫入運算(NTLW),雖然本發明之範圍並不如此限制。如先前連同圖3所述,就顧慮來源記憶體位址而言,NTLW可繞過快取(例如,用以幫助降低快取污染及/或幫助降低快取一致性簿記或其它微架構資源之數目來從來源記憶體位址追蹤載入)。
如在闡述的實施例中所繪示,可調度具有第一實體記憶體位址659-1(PA_1)的第一NTLW 667-1作為其來源記憶體位址,其指示目的地儲存位置(例如,core#、集合及路線)以及指示其對應的線道(lane_1)(例如,結果緊縮資料及/或目的地儲存位置的,其中其引起被載入的資料元件要被儲存)。類似地,可並行地及/或平行地調度具有第N實體記憶體位址659-N(PA_N)的第N個NTLW 667-N作為其來源記憶體位址,其指示相同目的地儲存位置(例如,core#、集合及路線)以及指示其對應的線道(lane_N)(例如,結果緊縮資料及/或目的地儲存位置的,其中其引起被載入的資料元件要被儲存)。藉由範例的方式,對應至來源緊縮記憶體位址資訊的最低有效記憶體索引可指示最低有效線道,對應至下一個最低有效記憶體索引的載入運算可指示下一個最低有效線道等等。如所繪示,對應至PA_1及lane_1的載入運算可載入資料元件A並且進行第一寫入668-1以將其儲存到目的地儲存位置之lane_1。相似地,對應至PA_N及lane_N的載入運算可載入資料元件D並且進行第N寫入668-N以將其儲存到目的地儲存位置之lane_N。
有益地,並行運算調度單元664可幫助改善索引載入指令之調度組件載入運算的速度或並行性,其可幫助增加進行索引載入指令之處理量或效能。進一步而言,在一些實施例中,可選擇地有多個這類並行的載入運算調度單元。例如,在一些多核心及/或多區塊(multi-tile)的實施例中,可選擇地為用於各個核心及/或各個區塊的並行載入運算調度單元。藉由範例的方式,並行載入運算調度單元可選擇地被定位及/或接近用於核心及/或區塊之對應的標籤目錄而被耦接。使用於索引載入指令的並行載入運算調度單元可基於索引載入目的地之目的地實體位址來決定。僅一核心及/或區塊和其關聯的並行載入運算調度單元可將實體位止「歸位(home)」。在一些實施例中,用於不同核心及/或區塊之不同的並行載入運算調度單元各者可當下的調度用於不同對應索引載入指令的載入運算,其可更幫助增加並行性及/或平行性的量。
圖7A為範例儲存佇列770之方塊圖以及合適的延伸儲存佇列771之範例實施例。闡述的儲存佇列具有16個項目。儲存運算之號碼(例如,S1、S2、S4、S5、S6、S8、S9、S11、S12、S13、S14、S15)係在項目中佇列。在闡述的實施例中,頭指標(head pointer)772正指到朝向儲存佇列之頂部的項目,用以指示要退役之來自儲存佇列的下一個儲存運算。尾指標(tail pointer)773正指到朝向儲存佇列之底部的項目,用以指示佇列的最後儲存運算。
一般而言,在儲存佇列中的項目之數目可趨向於被限制。沒有更多儲存佇列的一個促使的理由是,他們經常以相對大的面積及/或大的功率消耗結構來實施。例如,此可趨向於特別當儲存佇列之項目以內容可定址記憶體(CAM;content-addressable memory)來實施、另以操作以支援儲存來載入將在儲存佇列之項目中的儲存運算轉傳至隨後的載入運算或類似者來實施時的情形。在這樣的情形中,其可能不會是想要的是在儲存佇列中包括額外的項目,以為了避免增加儲存佇列之面積及/或功率消耗。結果是,對於許多應用來說,特別是記憶體存取密集的應用,可能不如所想要地般在儲存佇中有許多項目。
在一些實施例中,如於此所揭示,延伸的儲存佇列771可被使用來將對應於索引載入指令的索引載入運算排隊。在一些實施例中,延伸儲存佇列可從儲存佇列卸載索引載入運算,使得他們不需要消耗在儲存佇列中的任何項目。如在闡述的範例中所繪示,32個索引載入運算(各者對應至不同的對應索引載入指令之目的地儲存位置)在延伸儲存佇列中排隊,雖然此僅為一個闡述的範例。這些32個索引載入運算被分群成三個不同的群組,具有在最頂群組(G3)中的13個、在中間群組(G7)中的7個以及在最底群組(G10)中的12個,雖然此僅為一闡述的範例。
在一些實施例中,索引載入運算可相對彼此按序地以及相對於在儲存佇列中的儲存運算按序地被退役 或另以從延伸儲存佇列提交。在提交運算之前,可搜尋或檢查儲存佇列和延伸儲存佇列兩者以判定哪一個目前排隊著更資深的運算,且接著在儲存佇列或延伸儲存佇列其一者中該更資深的運算可被提交。由於索引載入指令可將多個載入資料元件收集成一個相連的目的地位置(例如,一個快取線),故延伸儲存佇列可利用的是,多個儲存運算是到相同相連的目的地儲存位置,並且將整個組代表為在伸延儲存佇列中的一個定位,其相對於從儲存佇列被處理的儲存來排序。
圖7B繪示圖7A的範例之運算可以之被提交的次序。首先,儲存運算S1及S2可順序地一次一個地從儲存佇列被提交,接著儲存運算S2可從儲存佇列被提交,且接著在控制被回傳到儲存佇列之前,索引載入運算之最頂群組(G3)可順序地一次一個從延伸儲存佇列被提交。接下來,儲存運算S4、S5及S6可順序地一次一個從儲存佇列被提交,接著在控制被回傳到儲存佇列之前,索引載入運算之中間群組(G7)可順序地一次一個從延伸儲存佇列被提交。接下來,儲存運算S8及S9可順序地一次一個從儲存佇列被提交,接著在控制被回傳到儲存佇列之前,索引載入運算之最底群組(G10)可順序地一次一個從延伸儲存佇列被提交,且接著最後,儲存運算S11、S12、S13、S14以及S15順序地一次一個從儲存佇列被提父。
因為可僅需要在延伸儲存佇列中一項目用於 各個索引載入指令,故更多索引載入指令可並行地對於在延伸儲存佇列中給定數目的項目為突顯的。此外,因為索引儲存佇列之項目可選擇地在面積及/或功率消耗上相對低成本的進行實施(例如,可能不支援用以載入轉傳的儲存),故延伸儲存佇列可潛在地具有比通常會對於儲存佇列可實行的更多或甚至多更多的項目。延伸儲存佇列可幫助解除在儲存佇列上的壓力及/或允許更多索引載入指令在相同時間為突顯的。然而,使用延伸儲存佇列是可選的而非必需的。
圖8為用以闡述範例實施例合適的記憶體排序語意的指令874之範例序列的方塊流程圖。指令之序列係以原始程式次序來繪示(例如,在任何亂序執行或重排序之前),在頂部具有最早/最老的指令且在底部具有最新/最年輕的指令。此序列包括自記憶體先前載入的指令875以及對記憶體先前儲存的指令876,其在第一索引載入指令877、第二索引載入指令878、第三索引載入指令879以及第四索引載入指令881之方塊884之前。該序列亦包括自記憶體隨後載入的指令882以及對記憶體隨後儲存的指令883,其在方塊884之後。對記憶體指令880的間竭儲存係配置在方塊884之索引載入指令內。
在一些實施例中,第一記憶體排序規則或語意(其可選擇地被使用於索引載入指令)為:在相連組的一或多個索引載入指令退役之前或另以在任何相連組之索引載入指令發出之前提交的載入指令。藉由範例的方式, 從記憶體指令875(其在相連的第一、第二以及第三索引載入指令877、878、879之前)的先前載入可在任何索引載入指令877、878、879發出之前提交。
在一些實施例中,第二記憶體排序規則或語意(其可選擇地被使用於索引載入指令)為:索引載入指令被實施為在提交後續載入指令之前將在標籤目錄(tag directory)處排序的組件載入運算(例如,非時序載入運算)。藉由範例的方式,第一索引載入指令877可被實施為組件NTLW 1到NTLW N,其在從記憶體指令882提交後續載入之前將在標籤目錄處排序。
在一些實施例中,第三記憶體排序規則或語意(其可選擇地被使用於索引載入指令)為:索引載入指令相對於彼此以及其它儲存指令依序被儲存。藉由範例的方式,第一索引載入指令877可在第二索引載入指令878之前被儲存,第二索引載入指令878可在第三索引載入指令879之前被儲存,以及第三索引載入指令879可在第四索引載入指令881之前被儲存。也同樣,第一索引載入指令877可在對記憶體指令876的先前儲存之後被儲存,並且對記憶體指令880的間竭儲存可在第三及第四索引載入指令879、881之間被儲存。
在一些實施例中,第四記憶體排序規則或語意(其可選擇地被使用於索引載入指令)為:將用於相連組的一或多個索引載入指令載入的組件載入運算(例如,非時序載入運算)被准許以任何次序開始(例如,仿佛平 行地發出所有的組件載入運算)。藉由範例的方式,用於第一索引載入指令877的組件運算NTLW1到NTLW N、用於第二索引載入指令878的組件運算NTLW(N+1)到NTLW 2N、用於第三索引載入指令879的組件運算NTLW(2N+1)到NTLW 3N可皆被准許相對於彼此以任何次序開始。
藉由範例的方式,維護這類記憶體一致性規則的一個可能的益處可被理解於在其中給定執行緒收集用於幾個客端執行緒(client thread)的資料的範例配合使用的情形。給定的執行緒可發出索引載入指令之相連的序列並且當資料已可用時會想要對客端執行緒警報。若索引載入指令未曾依序提交,則接著給定執行緒可需要讀取各個目的地來確定他們全已完成,由於他們僅在一當他們已完成時可變為可讀取的。若索引載入指令曾依序提交但未曾相對於其它儲存指令依序提交的話,則接著給定的執行緒可想要發出記憶體圍籬(memory fence)來幫助確保進行以指示資料之可用性(availability)的後續儲存指令不會趕上被進行來蒐集資料的實際索引載入指令。然而,隨著上述的記憶體一致性語意,給定執行緒可僅發出索引載入指令之序列,並且接著進行後續儲存指令以指示資料之可用性(例如,藉由更新旗標)。儲存佇列可幫助確保用以指示資料之可用性的儲存運算(例如,對旗標的改變)在已提交所有的先前索引載入指令之後將僅為可觀察的。
在一些實施例中,這些記憶體排序規則或語 意之一或多者可選擇地被實施為索引載入指令的架構態樣或架構實施,雖然此並非必需。在這樣的實施例中,該一或多個記憶體排序規則或語意可對索引載入指令來說為隱含的或固有的,並且處理器可具有用以當進行索引載入指令時施行該一或多個記憶體排序規則或語意的邏輯。在其它實施例中,這些記憶體排序規則或語意之一或多者可選擇地不被實施為索引載入指令的架構態樣或架構實施。在這樣的實施例中,可使用額外的指令來施行該一或多個記憶體排序規則或語意。例如,圍籬及/或屏障指令(例如,載入圍籬指令、儲存圍籬指令、載入及儲存圍籬指令等)可選擇地被插入於記憶體存取指令中以施行記憶體排序規則或語意。
圖9為操作以進行索引載入指令902之實施例的處理器900之詳細範例實施例的方塊圖。處理器包括至少第一核心984-1並且可選擇地包括一或多個其它核心984-2。處理器亦包括至少一記憶體控制器991用以對至少一對應的記憶體裝置耦接。互連990(例如,全網格互連(full mesh interconnect)、一或多個環狀互連等)將第一核心(可選地為一或多個其它核心)與至少一記憶體控制器耦接在一起。
第一核心984-1包括解碼單元904,用以解碼索引載入指令902。解碼單元可提供指令或控制信號以實施索引載入指令。在一些實施例中,載入佇列可初始地被排空所有先前發出的載入。此可對於相連索引載入指令之 序列僅發生一次。
執行單元906係與解碼單元耦接。執行單元可啟動索引載入指令之進行。執行單元係與一組緊縮資料暫存器908和一組純量暫存器914耦接。在一些實施例中,索引載入指令之來源緊縮記憶體位址資訊運算元可被儲存於且接收自緊縮資料暫存器,並且索引載入指令之目的地記憶體位址可被儲存於且接收自純量暫存器。
第一級或級1(L1)TLB 986係與執行單元耦接。L1 TLB係與第二級或級2(L2)TLB 955耦接。可使用L1 TLB及/或L2 TLB來將邏輯或邏輯記憶體位址轉譯(其源自來源緊縮記憶體位址資訊和目的地記憶體位址資訊)到對應的實體記憶體位址。在一些實施例中,可選地將L2 TLB 955分庫。在一些實施例中,可選地分庫的L2 TLB可類似於或相同於圖5之分庫的TLB,雖然此並非必需。在一些實施例中,分庫的L2 TLB可並行地將至少二或可選地所有邏輯位址953(其源自來源緊縮記憶體位址資訊)轉譯到至少二或可選地所有對應的實體記憶體位址959。
L1快取938亦與執行單元耦接。L2快取940與L1快取耦接。在一些實施例中,目的地快取線924可選擇地針對源自目的地記憶體位址資訊的目的地實體記憶體位址在L2快取中分配。或者,其它目的地儲存位置可選擇地如於此它處所述般地使用。在一些實施例中,目的地快取線可被組態為不可讀取的且不可收回的。讓快取線 不可收回可幫助在快取中鎖住快取線以防止其從快取被收回,直到已完成所有關聯的載入運算之後。讓快取線不可讀取可幫助確保其它項目不會讀取快取線,直到已完成所有關聯的載入運算之後,使得未讀取部分更新的資料。若想要,可選擇地准許用於相同目的地實體記憶體位址的分開有效的快取線副本在此時保留在L2快取中,直到所有載入運算完成且目的地快取線被組態為可讀取的,雖然此並非必需。
記憶體請求佇列987與L2快取耦接。記憶體請求佇列可操作以佇列擱置的記憶體存取請求。在一些實施例中,至少一計數器988可與記憶體請求佇列987耦接。在一些情形中,可選地有用於第一核心984-1之一或多個硬體執行緒之各者的對應計數器。在一些實施例中,至少一計數器可操作以計數或追蹤突顯的索引載入指令之數目,該突顯的索引載入指令的組件載入運算還未在標籤目錄989處排序。標籤目錄可操作以排序用於索引載入指令的組件載入運算。在一些實施例中,可提供對應於來源緊縮記憶體位址資訊的實體記憶體位址(例如,並行地產生的實體記憶體位址959)給與目的地記憶體位址關聯的標籤目錄。
載入運算調度單元964係與標籤目錄和記憶體請求佇列耦接。在一些實施例中,載入運算調度單元可選擇地為並行的載入運算調度單元。並行的載入運算調度單元可選擇地類似於或相同於圖6的載入運算調度單元。 並行的載入運算調度單元可操作以並行地調度用於至少二關聯的輸入實體記憶體位址959的至少二組件載入運算967。在一些實施例中,可選擇地對於在索引載入指令之來源緊縮記憶體位址資訊運算元中的不同組記憶體位址資訊並行地及/或平行地啟動或調度組件載入運算。在一些實施例中,載入運算之各者可選擇地為非時序載入接著寫入(NTLW;non-temporal load then write)運算,其可繞過相對來源記憶體位址的所有快取(例如,L1快取和L2快取)。此可幫助降低在被載入的資料具有低空間及/或時間局部性之情形中的快取污染。在一些實施例中,載入運算之各者可指示目的地儲存位置(例如,指示作為目的地核心的核心984-1且指示目的地快取線924的集合及路線)。在一些實施例中,載入運算之各者亦指示結果緊縮資料之線道及/或載入的資料元件要被儲存於其中的目的地快取線。
當標籤目錄989從與各個載入運算關聯的其它分佈的標籤目錄接收應答(acknowledgment)時,其可將應答發送回起源核心。當起源核心接收此應答時,其可減量或另以減少其具有迄今未排序的載入運算之突顯的索引載入指令之計數。在一態樣中,可預期具有迄今未排序的載入運算之突顯的索引載入指令之計數在退役載入指令之前變為零。如另一選擇,在另一實施例中,所有的載入(非時序載入)可從在記憶體請求佇列中的項目被發出且瓦解到用於接收結果的一項目中,並且從那裡進入到用以 被放置在目的地快取中的一回應。此提供對使用並行載入運算調度單元的替代(例如,載入鄰近標籤目錄)。
在一些實施例中,可回傳載入的資料元件998以用於載入運算967。可使用以載入運算967傳達的目的地儲存位置資訊來回傳這些載入的資料元件。這些載入的資料元件可被儲存在他們的目的地快取線924之對應索引線道。
處理器亦包括儲存佇列970。在一些實施例中,處理器亦可選擇地包括延伸的儲存佇列971。在一態樣中,這些可與執行單元906耦接。延伸儲存佇列可類似於或相同於在圖7中所繪示者,雖然此並非必需。可使用延伸儲存佇列以將索引載入指令排隊。在一些實施例中,索引載入指令可由在延伸儲存佇列中的項目所代表,但不會消耗在儲存佇列中的任何項目。在一些實施例中,延伸儲存佇列可具有比儲存佇列每項目相對少的邏輯。在一些實施例中,當索引載入指令變為最資深的儲存時,在儲存佇列和延伸儲存佇列中,其可等待直到其組件載入運算之所有已被寫入到目的地快取線924中為止。接著,記憶體請求佇列987可對於目的地記憶體位址發出命令,例如像是對於所有權(ownership)的請求、無資料、全區塊寫入命令。此可讓快取線可讀取。接著,目的地快取線924可被提交到記憶體,在一些情形中,潛在地銷毀在相同組中現存的副本。
在上面的說明中,已說明具有多個來源記憶 體位址的緊縮、向量或索引載入指令。在其它實施例中,於此揭示的技術可選擇地在具有僅單一純量來源記憶體位址的純量載入指令上使用。例如,此可包含資料之非時序載入和該資料之寫入或儲存至目的地位置。
指令集包括一或多個指令格式。給定的指令格式界定各種欄位(若干個位元、位元之區位)以明定用以被進行的運算(運算碼)以及該運算要在其上被進行的運算元之類的。一些指令格式更透過定義指令模板(或子格式)來分解。例如,給定的指令格式之指令模板可被定義以具有指令格式的欄位之不同的子集(包括的欄位典型地在相同的次序中,但至少一些具有不同位元位置,因為有較少包括的欄位)及/或被定義以具有不同解譯的給定欄位。因此,ISA之各個指令係使用給定指令格式來表達(且若經定義,在該指令格式之指令模板的給定者中)且包括用於明定該運算及該運算元的欄位。例如,示範性ADD(加法)指令具有特定的運算碼和指令格式,其包括運算碼欄位以明定該運算碼和運算元欄位來選擇運算元(來源1(source1)/目的地及來源2(source2));以及在指令串流中的ADD指令的發生將在選擇特定運算元的運算元欄位中具有特定內容。已釋出及/或公開參照至進階向量延伸(AVX;Advanced Vector Extension)(AVX1和AVX2)且使用向量延伸(VEX;Vector Extension)寫碼方案的一組SIMD延伸(例如,請見2011年10月英特爾64(Intel®64)和IA-32架構軟體開發的手冊;及2011年6月英特爾 (Intel®)進階向量延伸程式參考)。
示範性指令格式
於此說明的指令之實施例可以不同的格式來體現。此外,下面詳述示範性系統、架構以及管線。指令之實施例可在這類系統、架構及管線上執行,但不限於詳述之該些者。
VEX指令格式
VEX編碼允許指令具有多於二個運算元,且允許SIMD向量暫存器比128位元還長。VEX之使用提供用於三運算元(或更多)語法。例如,先前二運算元指令已進行的運算,像是A=A+B,其覆寫來源運算元。VEX前置之使用使運算元能進行非破壞性的運算,像是A=B+C。
圖10A闡述示範性AVX指令,包括VEX前置1002、真實運算碼欄位1030、模數(Mod)R/M位元組1040、SIB位元組1050、位移欄位1062以及IMM81072。圖10B闡述來自圖10A的哪一個欄位構成全運算碼欄位1074和基底運算欄位1042。圖10C闡述來自圖10A的哪一個欄位構成暫存器索引欄位1044。
VEX前置(位元組0~2)1002在三位元組形式上編碼。第一位元組為格式欄位1040(VEX位元組0,位元[7:0]),其包含顯式的C4位元組值(使用於辨別C4 指令格式的唯一值)。第二~第三位元組(VEX位元組1~2)包括提供特定性能的若干個位元欄位。具體而言,REX欄位1005(VEX位元組1,位元[7-5])由VEX.R位元欄位(VEX位元組1,位元[7]-R)、VEX.X位元欄位(VEX位元組1,位元[6]-X)以及VEX.B位元欄位(VEX位元組1,位元[5]-B)所組成。指令之其它欄位將暫存器索引之較低三位元編碼為在本領域已知(rrr、xxx和bbb),使得Rrrr、Xxxx以及Bbbb可由加上VEX.R、VEX.X與VEX.B來形成。運算碼映射欄位1015(VEX位元組1,位元[4:0]-mmmmm)-包括用以編碼隱示的前導運算碼位元組(leading opcode byte)。W欄位1064(VEX位元組2,位元[7]-W)-由符號VEX.W表示,並且取決於指令提供不同的功能。VEX.vvvv1020之角色(VEX位元組2,位元[6:3]-vvvv)-可包括下列:1)VEX.vvvv編碼第一來源暫存器運算元,其以倒置(1的補數)形式來明定且對於具有2或更多來源運算元的指令是有效的;2)VEX.vvvv編碼目的地暫存器運算元,其以1的補數的形式來明定以用於某些向量移位;或3)VEX.vvvv不編碼任何運算元,該欄位為保留的且應包含1011b。若VEX.L 1068尺寸欄位(VEX位元組2,位元[2]-L)=0,則其指示128位元向量,若VEX.L=1,則其指示256位元向量。前置編碼欄位1025(VEX位元組2,位元[1:0]-pp)提供額外的位元以用於基底運算欄位。
真實運算碼欄位1030(位元組3)亦已知為運算碼位元組。部分的運算碼在此欄位中被明定。
MOD R/M欄位1040(位元組4)包括MOD欄位1042(位元[7-6]),Reg欄位1044(位元[5-3])以及R/M欄位1046(位元[2-0])。Reg欄位1044之角色可包括下列:編碼目的地暫存器運算元或來源暫存器運算元(Rrrr中之rrr)其一者,或視為運算碼延伸且不使用來編碼任何指令運算碼。R/M欄位1046之角色可包括下列:編碼參考記憶體位址的指令運算元,或者編碼目的地暫存器運算元或來源暫存器運算元其一者。
比例、索引、基底(SIB;Scale,Index,Base)-比例欄位1050(位元組5)之內容包括SS1052(位元[7-6]),其被使用於記憶體位址產生。SIB.xxx 1054(位元[5-3])和SIB.bbb 1056(位元[2-0])之內容已先前參照至關於暫存器索引Xxxx和Bbbb。
位移欄位1062和立即值欄位(IMM8)1072包含位址資料。
一般性向量親和指令格式
向量親和指令格式為合適於向量指令的指令格式(例如,有某些特定於向量運算的欄位)。在當說明其中向量及純量兩者的運算皆透過向量親和指令格式來支援的實施例的同時,替代的實施例僅使用向量運算的該向量親和指令格式。
圖11A~11B為依據本發明之實施例闡述一般性向量親和指令格式和其指令模板的方塊圖。圖11A為依 據本發明之實施例闡述一般性向量親和指令格式及其級別A指令模板的方塊圖;同時圖11B為依本發明之實施例闡述一般性向量親和指令格式及其級別B指令模板的方塊圖。具體而言,一般性向量親和指令格式1100,針對其而定義有級別A和級別B指令模板,其之兩者包括沒有記憶體存取1105指令模板和記憶體存取1120指令模板。在向量親和指令格式之上下文中的術語「一般性」指的是未被綁定到任何特定指令集的指令格式。
當本發明之實施例將說明以其中向量親和指令格式支援下列時:64位元組向量運算元長度(或大小),具有32位元(4位元組)或64位元(8位元組)資料元件寬度(或大小)(因而64位元組向量由16個雙倍字大小元件或替代地由8個四倍字大小元件組成);64位元組向量運算元長度(或大小),具有16位元(2位元組)或8位元(1位元組)資料元件寬度(或大小);32位元組向量運算元長度(或大小),具有32位元(4位元組)、64位元(8位元組)、16位元(2位元組)或8位元(1位元組)資料元件寬度(或大小);以及16位元組向量運算元長度(或大小),具有32位元(4位元組)、64位元(8位元組)、16位元(2位元組)或8位元(1位元組)資料元件寬度(或大小);替代的實施例可支援更多、更少及/或不同的向量運算元大小(例如,256位元組向量運算元),具有更多、更少或不同的資料元件寬度(例如,128位元(16位元組)資料元件寬 度)。
在圖11A中的級別A指令模板包括:1)在沒有記憶體存取1105指令模板內,有繪示著沒有記憶體存取、全捨入控制類型運算(full round control type operation)1110指令模板,和沒有記憶體存取、資料變換類型運算1115指令模板;以及2)在記憶體存取1120指令模板內,有繪示著記憶體存取、時序1125指令模板,和記憶體存取、非時序1130指令模板。在圖11B中的級別B指令模板包括:1)在沒有記憶體存取1105指令模板內,有繪示著沒有記憶體存取、寫入遮罩控制、部分捨入控制類型運算1112指令模板和沒有記憶體存取、寫入遮罩控制、vsize類型運算1117指令模板;以及2)在記憶體存取1120指令模板內,有繪示著記憶體存取、寫入遮罩控制1127指令模板。
一般性向量親和指令格式1100包括以在圖11A~11B中闡述的次序列示的下列欄位。
格式欄位1140-在此欄位中的特定值(指令格式識別符值)獨一地識別向量親和指令格式,因而以向量親和指令格式的指令發生在指令串流中。如此,此欄位在其不需要具有僅一般性向量親和指令格式的指令集之含意上是可選的。
基底運算欄位1142-其內容辨別不同的基底運算。
暫存器索引欄位1144-其內容係直接或透過位 址產生來明定來源及目的地運算元的區位,無論他們是否在暫存器或在記憶體中。這些包括充分數目的位元以從PxQ(例如,32x512、16x128、32x1024、64x1024)暫存器檔案選擇N個暫存器。在當於一實施例中N可多達三個來源和一個目的地暫存器的同時,替代的實施例可支援更多或更少的來源及目的地暫存器(例如,可支援多達兩個來源其中該些來源之一者亦作動為目的地、可支援多達三個來源其中這些來源之一者亦可作動為目的地、可支援多達兩個來源和一個目的地)。
修飾符欄位1146-其內容辨別以一般性向量指令格式的指令發生從未進行的該些者明定記憶體存取;亦即,在沒有記憶體存取1105指令模板與記憶體存取1120指令模板之間。記憶體存取運算讀取及/或寫入至記憶體階層(在一些情形中使用在暫存器中的值明定來源及/或目的地定址),同時非記憶體存取運算並未進行(例如,來源及目的地運算元為暫存器)。在當於一實施例中此欄位亦以三個不同的方式之間選擇以進行記憶體位址計算的同時,替代的實施例可支援更多、更少或不同的方式來進行記憶體位址計算。
擴充運算欄位1150-其內容判別除了基底運算以外各種不同運算中的何者用來被進行。此欄位為上下文特定(context specific)。在本發明之一實施例中,此欄位被分成級別欄位1168、阿爾發欄位(alpha field)1152以及貝他欄位(beta field)1154。擴充運算欄位1150允許運算 之共同群組在單一指令中進行而非在2、3或4個指令中。
比例(scale)欄位1160-其內容允許定比索引欄位的內容以用於記憶體位址產生(例如,用於使用2scale*index+base的位址產生)。
位移(displacement)欄位1162A-其內容被使用為部分的記憶體位址產生(例如,用於使用2scale*index+base+displacement之位址產生)。
位移因子欄位1162B(注意,位移欄位1162A直接在位移因子欄位1162B之上並置指示一者或其餘者被使用)-其內容被使用為部分的位址產生;其明定用以由記憶體存取(N)之大小來定比的位移因子-其中N為在記憶體存取中的位元組之數目(例如,用於使用2scale*index+base+scaled displacement(經定比的位移)的位址產生)。忽略冗餘低階位元,因而位移因子欄位的內容乘以記憶體運算元總大小(N)以為了產生要被使用以計算有效位址中的最終位移。N之值係基於全運算碼欄位1174(之後於此說明)和資料操控欄位1154C在運行時間上由處理器硬體來決定。位移欄位1162A和位移因子欄位1162B在他們不被使用於沒有記憶體存取1105指令模板及/或不同實施例可實施兩者中之僅一或沒有的含義上為可選的。
資料元件寬度欄位1164-其內容辨別若干個資料元件寬度之何者要被使用(在一些實施例中用於所有指 頁;在一其它實施例中用於僅指令中之一些者)。此欄位在若支援僅一資料元件寬度及/或使用運算碼之某種態樣支援該些資料元件寬度的話則不需要的含意上是可選的。
寫入遮罩欄位1170-在每資料元件定位基礎上,其內容控制在目的地向量運算元中該資料元件定位是否反映基底運算和擴充運算之結果。級別A指令樣本支援併入寫入遮蔽,同時級別B指令樣本支援併入及歸零寫入遮蔽。當併入時,向量遮罩允許在目的地中的任何組的元件被保護以避免在執行任何運算期間更新(由基底運算和擴充運算所明定);在其它一實施例中,目的地之各個元件的舊的值,其中對應的遮罩位元具有0。相對的,當歸零向量遮罩允許在目的地中任何組的元件在執行任何運算期間被歸零時(由基底運算和擴充運算所明定);在一實施例中,當對應的遮罩位元具有0值時,目的地之元件被設定到0。此功能性的子集為控制被進行的運算之向量長度的能力(亦即,元件之張拓/跨距(span)從第一被修改到最後一者);然而,被修改成連序的元件是不必要的。因此,寫入的遮罩欄位1170允許部分向量運算,包括載入、儲存、算術、邏輯等。在當本發明之實施例以其中寫入遮罩欄位1170的內容選擇若干包含要被使用的寫入遮罩之寫入遮罩暫存器其中一者來說明的同時(因而寫入的遮罩欄位1170的內容間接識別要被進行的揭蔽),替代的實施例取代或額外地允許寫入遮罩欄位1170的內容直接明定要被進行的掩蔽。
立即值欄位1172-其內容允許立即值的規範。在未出現於未支援立即值的一般性向量親和格式之實施中且未出現於不使用立即值的指令中的含意下此欄位為可選的。
級別欄位1168-其內容在指令之不同的級別之間進行辨別。參考圖11A~B,此欄位之內容在級別A與級別B指令之間進行選擇。在圖11A~B,圓角的方形被使用來指示特定值出現在欄位中(例如,分別在圖11A~B中用於級別欄位1168的級別A 1168A和級別B 1168B)。
級別A之指令模板
在級別A之非記憶體存取1105指令模板的情形中,阿爾發欄位1152被解譯為RS欄位1152A,其內容辨別不同擴充運算類型之何者要被進行(例如,捨入1152A.1和資料變換1152A.2係分別對於沒有記憶體存、捨入類型運算1110以及沒有記憶體存取、資料變換類型運算1115指令模板來明定),同時貝他欄位1154辨別明定的類型之運算的何者要被進行。在沒有記憶體存取1105指令模板中,比例欄位1160、位移欄位1162A以及位移比例欄位1162B不存在。
沒有記憶體存取指令模板-全捨入控制類型運算
在沒有記憶體存取全捨入控制類型運算1110 指令模板中,貝他欄位1154被解譯為捨入控制欄位1154A,其內容提供態樣捨入(static rounding)。在當於本發明所述的實施例中捨入控制欄位1154A包括抑制所有浮點異常(SAE;floating point exception)欄位1156和捨入運算控制欄位1158的同時,替代的實施例可支援可將這些概念編碼到相同欄位中或僅具有這些概念/欄位之一者或其餘者(例如,可具有僅捨入運算控制欄位1158)。
SAE欄位1156-其內容辨別是否要禁能異常事件報告;當SAE欄位1156的內容指示禁能抑制時,給定的指令不會報告任何種類的浮點異常旗標且不會引發任何浮點異常處置器。
捨入運算控制欄位1158-其內容辨別捨入運算之群組的何者要進行(例如,捨進(Round-up)、捨去(Round-down)、向零捨入(Round-towards-zero)以及捨入至最近者(Round-to-nearest))。因此,捨入運算控制欄位1158允許在每指令基礎上改變捨入模式。在其中處理器包括控制暫存器以用於明定捨入模式之本發明的一實施例中,捨入運算控制欄位1150的內容置換該暫存器值。
沒有記憶體存取指令模板-資料變換類型運算
在沒有記憶體存取資料變換類型運算1115指令模板中,貝他欄位1154被解譯為資料變換欄位1154B,其內容辨別若干個資料變換之何者要被進行(例如,沒有資料變換、拌和、廣播)。
在級別A之記憶體存取1120指令模板的形情中,阿爾發欄位1152被解譯為收回提示(eviction hint)欄位1152B,其內容辨別收回提示之何者要被使用(在圖11A、時序1152B.1和非時序1152B.2分別針對記憶體存、時序1125指令模板,和記憶體存取、非時序1130指令模板來明定),同時貝他欄位1154被解譯為資料操控欄位1154C,其內容辨別若干個資料操控運算(亦已知為基元(primitive))之何者要被進行(例如,沒有操控;廣播;來源之上轉換(up conversion);以及目的地之下轉換)。沒有記憶體存取1120指令模板包括比例欄位1160且可選地包括位移欄位1162A或位移比例欄位1162B。
向量記憶體指令以轉換支援從記憶體進行向量載入且進行向量儲存到記憶體中。至於正規向量指令,向量記憶體指令以逐元件(element-wise)方式自記憶體轉移資料/轉移資料到記憶體,具有由選定為寫入遮罩的向量遮罩之內容所指定(dictate)之實際轉移的元件。
記憶體存取指令模板-時序
時序資料為傾向於夠快的再用以自快取受益的資料。然而,此為提示,且不同的處理器可以不同的方式實施它,包括整個忽略提示。
記憶體存取指令模板-非時序
非時序資料為傾向於在第級1快取中夠快的 再使用以自快取受益且應對於收回給予優先權。然而,此為提示,且不同的處理器可以不同的方式實施它,包括整個忽略提示。
級別B之指令模板
在級別B之指令模板的情形中,阿爾發欄位1152被解譯為寫入遮罩控制(Z)欄位1152C,其內容辨別由寫入遮罩欄位1170所控制的寫入遮蔽是否應正進行併入或歸零。
在級別B之非記憶體存取1105指令模板的情形中,部分的貝他欄位1154被解譯為RL欄位1157A,其內容辨別不同擴充運算類型之何者要被進行(例如,捨入1157A.1和向量長度(VSIZE)1157A.2係分別對於沒有記憶體存、寫入遮罩控制、部分捨入控制類型運算1112指令模板,以及沒有記憶體存取、寫入遮罩控制、VSIZE類型運算1117指令模板來明定),同時貝他欄位1154之剩餘者辨別明定的類型之運算的何者要被進行。在沒有記憶體存取1105指令模板中,比例欄位1160、位移欄位1162A以及位移比例欄位1162B不存在。
在沒有記憶體存取、寫入遮罩控制、部分捨入控制類型運算1110指令模板中,貝他欄位1154之剩餘者被解譯為捨入運算欄位1159A且禁能異常事件報告(給定的指令不會報告任何種類的浮點異常旗標且不會引發任何浮點異常處置器)。
捨入運算控制欄位1159A-恰如捨入運算控制欄位1158,其內容辨別捨入運算之群組的何者要進行(例如,捨進(Round-up)、捨去(Round-down)、向零捨入(Round-towards-zero)以及捨入至最近者(Round-to-nearest))。因此,捨入運算控制欄位1159A允許在每指令基礎上改變捨入模式。在其中處理器包括控制暫存器以用於明定捨入模式之本發明的一實施例中,捨入運算控制欄位1150的內容置換該暫存器值。
在沒有記憶體存取、寫入遮罩控制、VSIZE類型運算1117指令模板中,貝他欄位1154之其餘者被解譯為向量長度欄位1159B,其內容辨別若干個資料向量長度之何者要在其上被進行(例如,128、256或512位元組)。
在級別B之記憶體存取1120指令模板的情形中,部分的貝他欄位1154被解譯為廣播欄位1157B,其內容辨別廣播類型資料操控運算是否要被進行,同時貝他欄位1154之其餘者被解譯向量長度欄位1159B。沒有記憶體存取1120指令模板包括比例欄位1160且可選地包括位移欄位1162A或位移比例欄位1162B。
關於一般性向量親和指令格式1100,全運算碼欄位1174繪示包括格式欄位1140、基底運算欄位1142以及資料元件寬度欄位1164。在一實施例顯示其中全運算碼欄位1174包括所有的這些欄位的同時,在未支援他們之所有的實施例中,全運算碼欄位1174包括少於所有 的這些欄位。全運算碼欄位1174提供運算碼(opcode)。
擴充運算欄位1150、資料元件寬度欄位1164以及寫入遮罩欄位1170允許這些特徵在一般性向量親和指令格式中於每指令基礎上被明定。
寫入遮罩欄位與資料元件寬度欄位之結合以他們允許遮罩基於不同資料元件寬度來應用上創建類型指令(typed instruction)。
在級別A和級別B內找到的各種指令模板在不同的情況下是有益的。在本發明之一些實施例中,在處理器內不同的處理器或不同的核心可支援僅級別A、僅級別B或兩級別。舉例而言,打算用於通用計算的高效能通用亂序核心可支援僅級別B,打算主要用於圖形及/或科學(處理量)計算的核心可支援僅級別A,並且打算用於兩者的核心可支援兩者(當然,具有自兩級別的模板和指令之某種混合但非所有模板和指令來自兩級別的核心在本發明的範圍內)。也同樣的,單處理器可包括多核心、其之所有支援相同級別或者其中不同的核心支援不同的級別。舉例而言,在具有分開的圖形及通用核心的處理器中,打算主要用於圖形及/或科學計算的圖形核心之一者可支援僅級別A,同時通用核心之一或多者可為具有打算用於支援級別B之通用計算的亂序執行及暫存器更名的高效能通用核心。不具有分開的圖形核心之另一處理器可包括支援級別A和級別B兩者的一、多個通用循序或亂序核心。當然,來自一級別的特徵亦可在本發明之不同實施 例中於其它級別中實施。以高階語言撰寫的程式會被放(例如,即時編譯或靜態編譯)到各種不同可執行形式中,包括:1)具有僅由用於執行的目標處理器所支援的級別之指令的形式;或2)具有使用所有級別之指令的不同結合來撰寫的替代常式和具有選擇常式以基於由目前執行代碼的處理器所支援的指令來執行的控制流程碼的形式。
示範性特定向量親和指令格式
圖12為依據本發明之實施例闡述示範性特定向量親和指令格式的方塊圖。圖12繪示特定向量親和指令格式1200,該特定向量親和指令格式在其明定區域、大小、解譯以及欄位之次序以及該些欄位中之一些者的值的含意下為特定的。可使用特定向量親和指令格式1200來延伸x86指令集,因而欄位之一些者類似於或相同於在現存x86指令集及其延伸(例如,AVX)中使用的該些者。此格式維持與具有延伸之現存的x86指令集的前置編碼欄位、真實運算碼位元組欄位、MOD R/M欄位、SIB欄位、位移欄位以及立即值欄位一致。闡述了來自圖12的欄位對之映射的來自圖11的欄位。
應了解的是,雖然為了闡述的目的,本發明之實施例參考在一般性向量親和指令格式1100之上下文中的特定向量親和指令格式1200來說明,但除所請求者外,本發明不限於特定向量親和指令格式1200。例如,一般性向量親和指令格式1100思量用於各種欄位的各種 可能大小,同時特定向量親和指令格式1200顯示為具有特定大小之欄位。藉由特定範例的方式,在當資料元件寬度欄位1164闡述為在特定向量親和指令格式1200中的一位元欄位的同時,本發明並不如此限制(亦即,一般性向量親和指令格式1100思量資料元件寬度欄位1164之其它大小)。
一般性向量親和指令格式1100包括以在圖12A中闡述的次序列示的下列欄位。
EVEX前置(位元組0~3)1202-在四位元組形式上編碼。
格式欄位1140(EVEX位元組0,位元[7:0])-第一位元組(EVEX位元組0)為格式欄位1140且其包含0x62(該獨一值使用於辨別在本發明之一實施例中的向量親和指令格式)。
第二~第四位元組(EVEX位元組1~3)包括提供特定性能的若干個位元欄位。
REX欄位1205(EVEX位元組1,位元[7-5])-由EVEX.R位元欄位(EVEX位元組1,位元[7]-R),EVEX.X位元欄位(EVEX位元組1,位元[6]-X),以及1157BEX位元組1,位元[5]-B)所組成。EVEX.R、EVEX.X及EVEX.B位元欄位提供與對應的VEX位元欄位相同的功能性,並且使用1的補數形式來編碼,亦即ZMM0被編碼為1011B,ZMM15被編碼為0000B。指令之其它欄位將暫存器索引之較低三位元編碼為在本領域已知(rrr、xxx和 bbb),使得Rrrr、Xxxx以及Bbbb可由加上EVEX.R、EVEX.X與EVEX.B來形成。
REX’欄位1110-此為REX’欄位1110之第一部分且為EVEX.R’位元欄位(EVEX位元組1,位元[4]-R’),其被使用來編碼延伸32暫存器組之上16或下16其一者。在本發明之一實施例中,連同如下所指示的其它者,儲存於位元反向格式,用以區別(在周知的x86 32位元模式中)於邊界(BOUND)指令,其真實運算碼位元組為62,但在MOD R/M欄位(下面說明)中不接受在MOD欄位中的11之值;本發明之替代的實施例並不儲存此以及下面倒置格式中其它指示的位元。使用1之值來編碼較低16暫存器。換言之,R’Rrrr係藉由結合EVEX.R’、EVEX.R和來自其它欄位的其它RRR來形成。
運算碼映射欄位1215(EVEX位元組1,位元[3:0]-mmmm)-其內容編碼隱示的前導運算碼位元組(0F,0F 38或0F 3)。
資料元件寬度欄位1164(EVEX位元組2,位元[7]-W)-由符號EVEX.W來代表。使用EVEX.W來定義資料類型(32位元資料元件或64位元資料元件其一者)之粒度(granularity)(大小)。
EVEX.vvvv 1220(EVEX位元組2,位元[6:3]-vvvv)-EVEX.vvvv之角色可包括下列:1)EVEX.vvvv編碼第一來源暫存器運算元,其以倒置(1的補數)形式來明 定且對於具有2或更多來源運算元的指令是有效的;2)EVEX.vvvv編碼目的地暫存器運算元,其以1的補數的形式來明定以用於某些向量移位;或3)EVEX.vvvv不編碼任何運算元,該欄位為保留的且應包含1011b。因此,EVEX.vvvv欄位1220編碼以倒置(1的補數)形式儲存的第一來源暫存器說明符(specifier)之4個低階位元。取決於指令,使用額外不同的EVEX位元欄位來將明定符大小延伸到32個暫存器。
EVEX.U 1168級別欄位(EVEX位元組2,位元[2]-U)-若EVEX.U=0,其指示級別A或EVEX.U0;若EVEX.U=1,其指示級別B或EVEX.U1。
前置編碼欄位1225(EVEX位元組2,位元[1:0]-pp)-提供額外的位元以用於基底運算欄位。除了對於在EVEX前置格式中舊有的SSE指令提供支援以外,此亦具有壓縮SIMD前置的益處(而不需要位元組來表達SIMD前置,EVEX前置僅需要2位元)。在一實施例中,為了支援使用在舊有格式和在EVEX前置格式兩者中的SIMD前置(66H,F2H,F3H)的舊有SSE指令,這些舊有SIMD前置被編碼成SIMD前置編碼欄位;並且在運行時間上於被提供到解碼器的PLA之前被擴充成舊有的SIMD前置(所以PLA在不修改下能執行這些舊有指令的舊有及EVEX格式兩者)。雖然較新的指令可以將EVEX前置編碼欄位的內容直接使用為運算碼延伸,某些實施例以類似的方式擴充以用於一致性(consistency)但允許用以由這 些舊有SIMD前置所明定的不同義意。替代的實施例可再設計PLA來支援2位元SIMD前置編碼,因而需要擴充。
阿爾發欄位1152(EVEX位元組3,位元[7]-EH;亦已知為EVEX.EH,EVEX.rs、EVEX.RL、EVEX.寫入遮罩控制以及EVEX.N;亦以α來闡述)-如先前所述,此欄位為內容特定的。
貝他欄位1154(EVEX位元組3,位元[6:4]-SSS,亦已知為EVEX.s2-0、EVEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB;亦以βββ來闡述)-如先前所述,此欄位為內容特定的。
REX’欄位1110-此為REX’欄位之剩餘者且為EVEX.V’位元欄位(EVEX位元組3,位元[3]-V’),其被使用來編碼延伸32暫存器組之上16或下16其一者。此位元以位元倒置格式來儲存。使用1之值來編碼較低16暫存器。換言之,V’VVVV係藉由結合EVEX.V’、EVEX.vvvv來形成。
寫入遮罩欄位1170(EVEX位元組3,位元[2:0]-kkk)-如先前所述,其內容明定在寫入遮罩暫存器中暫存器之索引。在本發明之一實施例中,特定值EVEX.kkk=000具有特別行為,其隱示沒有寫入遮罩被使用於特定指令(此可以各種方式來實施,包括使用硬連線至所有者或繞過掩蔽硬體之硬體的寫入遮罩)。
真實運算碼欄位1230(位元組4)亦已知為運算碼位元組。部分的運算碼在此欄位中被明定。
MOD R/M欄位1240(位元組5)包括MOD欄位1242,Reg欄位1244以及R/M欄位1246。如先前所述,MOD欄位1242的內容在記憶體存取和非記憶體存取運算之間進行辨別。Reg欄位1244之角色能總結為兩個情況:編碼目的地暫存器運算元或來源暫存器運算元其一者,或視為運算碼延伸且不使用來編碼任何指令運算碼。R/M欄位1246之角色可包括下列:編碼參考記憶體位址的指令運算元,或者編碼目的地暫存器運算元或來源暫存器運算元其一者。
比例、索引、基底(SIB;Scale,Index,Base)(位元6)-如先前所述,比例欄位1150的內容係使用於記憶體位址產生。SIB.xxx 1254和SIB.bbb 1256-這些欄位之內容先前已參照至關於暫存器索引Xxxx和Bbbb。
位移欄位1162A(位元組7~10)-當MOD欄位1242包含10時,位元組7~10為位移欄位1162A,並且其與舊有的32位元位移(disp32)一樣的工作且在位元組粒度上工作。
位移因子欄位1162B(位元組7)-當MOD欄位1242包含01時,位元組7為位移因子欄位1162B。此欄位之區位為與舊有x86指令集8位元位移(disp8)的相同的之者,其在位元組粒度上工作。由於disp8為正負號(sign)延伸,其能僅在-128和117位元組偏移之間定址;按照64位元組快取線,disp8使用能被設定至僅四個真正有用的值-128、-64、0以及64的8位元;由於常需要較 大範圍;故使用disp32;然而,disp32需要4個位元組。相對於disp8和disp32,位移因子欄位1162B為disp8之再詮釋(reinterpretation);當使用位移因子欄位1162B時,實際位移係由位移因子欄位的內容乘以記憶體運算元存取(N)的大小來決定。此類型的位移稱為disp8*N。此降低平均指令長度(使用於位移但具有大的多的範圍之單一位元組)。這樣的壓縮位移係基於有效位移為記憶體存取之粒度的倍數的假設,因而位址偏移之冗餘低階位元並不需要被編碼。換言之,位移因子欄位1162B取代舊有x86指令集8位元位移。因此,位移因子欄位1162B與x86指令集8位元位移相同方式來編碼(所以在ModRM/SIB編碼規則中沒有改變),僅具有例外的是disp8對disp8*N是超載的。換言之,在編碼規則或編碼長度中沒有改變,但僅在藉由硬體的位移值之解譯中有改變(其需要藉由記憶體運算元之大小來定比位移以獲得位元方面的位址偏移)。
立即值欄位1172如先前所述的運算。
全運算碼欄位
圖12B為依據本發明之一實施例闡述組成全運算碼欄位1174的特定向量親和指令格式1200之欄位的方塊圖。具體而言,全運算碼欄位1174包括格式欄位1140、基底運算欄位1142以及資料元件寬度(W)欄位1164。基低運算欄位1142包括前置編碼欄位1225、運算 碼映射欄位1215以及真實運算碼欄位1230。
暫存器索引欄位
圖12C為依據本發明之一實施例闡述組成暫存器索引欄位1144的特定向量親和指令格式1200之欄位的方塊圖。具體而言,暫存器索引欄位1144包括REX欄位1205、REX’欄位1210、MODR/M.reg欄位1244、MODR/M.r/m欄位1246、VVVV欄位1220、xxx欄位1254以及bbb欄位1256。
擴充運算欄位
圖12D為依據本發明之一實施例闡述構成擴充運算欄位1150的特定向量親和指令格式1200之欄位的方塊圖。當級別(U)欄位1168包含0時,其意指EVEX.U0(級別A 1168A);當其包含1時,其意指EVEX.U1(級別B 1168B)。當U=0且MOD欄位1242包含11(意指沒有記憶體存取運算)時,阿爾發欄位1152(EVEX位元組3,位元[7]-EH)被解譯為rs欄位1152A。當rs欄位1152A包含1(捨入1152A.1)時,貝他欄位1154(EVEX位元組3,位元[6:4]-SSS)被解譯為捨入控制欄位1154A。捨入控制欄位1154A包括一位元SAE欄位1156和兩位元捨入運算欄位1158。當rs欄位1152A包含0(資料變換1152A.2)時,貝他欄位1154(EVEX位元組3,位元[6:4]-SSS)被解譯為三位元資料變換欄位1154B。當U=0且MOD欄位1242 包含00、01或10(意指記憶體存取運算)時,阿爾發欄位1152(EVEX位元組3,位元[7]-EH)被解譯為收回提示(EH)欄位1152B且貝他欄位1154(EVEX位元組3,位元[6:4]-SSS)被解譯為三位元資料調處欄位1154C。
當U=1時,阿爾發欄位1152(EVEX位元組3,位元[7]-EH)被解譯為寫入遮罩控制(Z)欄位1152C。當U=1且MOD欄位1242包含11(意指沒有記憶體存取運算)時,部分的貝他欄位1154(EVEX位元組3,位元[4]-S0)被解譯為RL欄位1157A;當其包含1(捨入1157A.1)時,貝他欄位1154之其餘者(EVEX位元組3,位元[6-5]-S2-1)被解譯為捨入運算欄位1159A,同時當RL欄位1157A包含0(VSIZE 1157.A2)貝他欄位1154之其餘者(EVEX位元組3,位元[6-5]-S2-1)被解譯為向量長度欄位1159B(EVEX位元組3,位元[6-5]-L1-0)。當U=1且MOD欄位1242包含00、01或10(意指記憶體存取運算)時,貝他欄位1154(EVEX位元組3,位元[6:4]-SSS)被解譯為向量長度欄位1159B(EVEX位元組3,位元[6-5]-L1-0)以及廣播欄位1157B(EVEX位元組3,位元[4]-B)。
示範性暫存器架構
圖13為依據本發明之一實施例的暫存器架構1300之方塊圖。在闡述的實施例中,有32個向量暫存器1310,其為512位元寬;這些暫存器參考為zmm0到zmm31。低16zmm暫存器之低階256位元覆蓋在暫存器 ymm0~16上。低16zmm暫存器之低階128位元(ymm暫存器之低階128位元)覆蓋在暫存器xmm0~15上。如下表中闡述的,特定向量親和指令格式1200在這些覆蓋的暫存器檔案上運算。
換言之,向量長度欄位1159B在最大長度和一或多個其它較短長度之間選擇,其中各個這類的長度為先前長度的一半長度;以及沒有向量長度欄位1159B的指令模板在最大向量長度上運算。進一步,在一實施例中,特定向量親和指令格式1200之級別B指令模板在緊縮或純量單/雙精度浮點資料和緊縮或純量整數資料上運算。純量運算為在zmm/ymm/xmm暫存器中最低階資料元件位置上進行的運算;取決於實施例,較高階資料元件定位為與他們之前在指令前相同的左側或歸零其一者。
寫入遮罩暫存器1315-在闡述的實施例中,有8個寫入遮罩暫存器(k0到k7),各者在大小上為64位元。在選替的實施例中,寫入遮罩暫存器1315在大小上 為16位元。如先前所述,在本發明之一實施例中,向量遮罩暫存器k0不能被使用為寫入遮罩;當會正常指示k0的編碼被使用於寫入遮罩時,其選擇0xFFFF之硬連線的寫入遮罩,有效地禁能對該指令的遮蔽。
通用暫存器1325-在闡述的實施例中,有十六個64位元通用暫存器,其連同用以定址記憶體運算元的現存x86定址模式來使用。這些暫存器參考以名稱RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP以及R8到R15。
純量浮點堆疊暫存器檔案(x87堆疊)1345,在其上別名以MMX緊縮整數平面暫存器檔案1350-在闡述的實施例中,x87堆疊為8元件堆疊,用以使用x87指令集延伸在32/64/80位元浮點資料上進行純量浮點運算;同時MMX暫存器被使用來在64位元緊縮整數資料上進行運算,以及用以對於在MMX與XMM暫存器之間進行的一些運算來持定運算元。
本發明之替代的實施例可使用較寬或較窄的暫存器。此外,本發明之替代的實施例可使用更多、更少或不同的暫存器檔案及暫存器。
示範性核心架構、處理器以及電腦架構
處理器核心可以不同的方式、為了不同的目的且在不同的處理器中實施。舉例而言,這類核心的實施可包括:1)打算用於通用計算的通用循序核心;2)打算用 於通用計算的高效能通用亂序核心;3)主要打算用於圖形及/或科學(處理量)計算的專用(special purpose)核心。不同處理器之實施包括:1)包括打算用於通用計算的一或多個通用循序核心及/或打算用於通用計算的一或多個通用亂序核心的CPU;以及2)包括主要打算用於圖形及/或科學(處理量)的一或多個專用核心的共處理器(coprocessor)。這類不同的處理器導致不同電腦系統架構,其可包括:1)來自CPU之在分開的晶片上的共處理器;2)在與CPU相同的封裝中分開的晶粒上的共處理器;3)在與CPU相同的晶粒上的共處理器(在其情形中,這樣的共處理器有時稱為專用邏輯,像是積體圖形及/或科學(處理量)邏輯或專用核心);以及4)可在相同晶粒上包括所述的CPU(有時稱為應用核心或應用處理器)、上述共處理器以及額外的功能特性的晶片上系統。在示範性處理器及電腦架構之說明之後,接著說明示範性核心架構。
示範性核心架構
循序及亂序核心方塊圖
圖14A為依據本發明之實施例闡述示範性循序管線和示範性暫存器更名、亂序發出/執行管線兩者的方塊圖。圖14B為依據本發明之實施例闡述用以被包括在處理器中的示範性循序架構核心和示範性暫存器更名、亂序發出/執行架構核心兩者的方塊圖。在圖14A~B中的實 心線框闡述循序管線和循序核心,同時可選的添加虛線框闡述暫存器更名、亂序發出/執行管線及核心。給定循序態樣為亂序態樣的子集,將說明亂序態樣。
在圖14A中,處理器管線1400包括提取級1402、長度解碼級1404、解碼級1406、分配級1408、更名級1410、排程(亦已知為調度或發出)級1412、暫存器讀取/記憶體讀取級1414、執行級1416、寫回/記憶體寫入級1418、執行處置級1422以及提交級1424。
圖14B繪示處理器核心1490,包括耦接至執行引擎單元1450的前端單元1430且兩者皆耦接至記憶體單元1470。核心1490可為精簡指令集計算(RISC;reduced instruction set computing)核心、複雜指令集計算(CISC;complex instruction set computing)核心、超長指令字(VLIW;very long instruction word)核心或混合或替代的核心類型。如又另一選項,核心1490可為專用核心、例如像是網路或通訊核心、壓縮引擎、共處理器核心、通用計算圖形處理器單元(GPGPU;general purpose computing graphics processing unit)核心、圖形核心或類似者。
前端單元1430包括耦接至指令快取單元1434的分支預測單元1432,其耦接至轉譯後旁視衝器(TLB;translation lookaside buffer)1436,該轉譯旁視緩衝器耦接至指令提取單元1438,該指令提取單元耦接至解碼單元1440。解碼單元1440(或解碼器)可解碼指令,並且產生為輸出一或多個微運算、微碼進入點(micro-code entry point)、微指令、其它指令或其它控制信號,其自原始指令解碼、或其另以反映原始指令或衍生自原始指令。解碼單元1440可使用各種不同的機制來實施。合適的機制之範例包括(但不限於)查找表、硬體實施、可編程邏輯陣列(PLA;programmable logic array)、微碼唯讀記憶體(ROM;read only memory)等。在一實施例中,核心1490包括微碼ROM或儲存用於某種巨集指令之微碼的其它媒體(例如,在解碼單元1440中或另以在前端單元1430內)。解碼單元1440耦接至在執行引擎單元1450中的更名/分配器單元1452。
執行引擎單元1450包括耦接至退役單元1454的更名/分配器單元1452和成組的一或多個排程器單元1456。排程器1456代表任何數目不同的排程器,包括保留站(reservations station)、中央指令窗等。排程器單元1456耦接至實體暫存器檔案單元1458。實體暫存器檔案單元1458之各者代表一或多個實體暫存器檔案、其之不同者儲存一或多個不同的資料類型,像是純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、狀態(例如作為要被執行之下一指令之位址的指令指標)等。在一實施例中,實體暫存器檔案單元1458包含向量暫存器檔案、寫入遮罩暫存器單元以及純量暫存器單元。這些暫存器單元可提供架構向量暫存器、向量遮罩暫存器以及通用暫存器。實體暫存器檔案單元1458由退役單元1454所重疊,用以闡述更名及亂序執行可以其實施的各種方式 (例如,使用重排序緩衝器以及退役暫存器檔案;使用未來檔案、歷史緩衝器以及退役暫存器檔案;使用暫存器映射以及暫存器之池等)。退役單元1454和實體暫存器檔案單元1458耦接至執行叢集1460。執行叢集1460包括成組的一或多個執行單元1462和成組的一或多個記憶體存取單元1464。執行單元1462可進行各種運算(例如,移位、加法、減法、乘法)以及各種類型的資料(例如,純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)。在當一些實施例可包括專屬於特定功能或成組的功能的若干個執行單元的同時,其它實施例可包括僅一執行單元或多個執行單元,其所有者進行所有功能。排程器單元1456、實體暫存器檔案單元1458以及執行叢集1460係顯示為可能的複數,因為某些實施例創建分開的管線以用於某類型的資料/運算(例如,純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線及/或記憶體存取管線,其各者具有他們自己的排程器單元、實體暫存器檔案單元及/或執行叢集-並且在分開的記憶體存取管線的情形中,實施某些實施例,其中僅此管線之執行叢集具有記憶體存取單元1464)。亦應了解的是,在當使用分開的管線下,這些管線之一或多者可為亂序發出/執行且其餘者為循序的。
該組記憶體存取單元1464耦接至記憶體單元1470,其包括資料TLB單元1472,該資料TLB單元耦接至資料快取單元1474,該資料快取單元耦接至級2(L2)快 取單元1476。在一示範性實施例中,記憶體存取單元1464可包括載入單元、儲存位址單元以及儲存資料單元,其各者耦接至在記憶體單元1470中的資料TLB單元1472。指令快取單元1434更耦接至在記憶體單元1470中的級2(L2)快取單元1476。L2快取單元1476耦接至快取之一或多個其它層級且最終耦接至主記憶體。
藉由範例的方式,示範性暫存器更名、亂序發出/執行核心架構可實施管線1400如下:1)指令提取1438進行提取和長度解碼級1402及1404;2)解碼單元1440進行解碼級1406;3)更名/分配器單元1452進行分配級1408和更名級1410;4)排程器單元1456進行排程級1412;5)實體暫存器檔案單元1458和記憶體單元1470進行暫存器讀取/記憶體讀取級1414;執行叢集1460進行執行級1416;6)記憶體單元1470和實體暫存器檔案單元1458進行寫回/記憶體寫入級1418;7)各種單元可被包含在異常處置級1422;以及8)引退單元1454和實體暫存器檔案單元1458進行提交級1424。
核心1490可支援一或多個指令集(例如,x86指令集(具有一些延伸,其已被添加以較新的版本);加州桑尼維爾的MIPS技術之MIPS指令集;加州桑尼維爾的ARM控股之ARM指令集(具有可選額外的延伸,像是NEON),包括於此說明的指令。在一實施例中,核心1490包括用以支援緊縮資料指令集延伸(例如,AVX1、AVX2)的邏輯,從而允許由許多多媒體應用 所使用的運算以使用緊縮資料來進行。
應了解,核心可支援多緒執行(multithreading)(執行二或多個平行組的運算或執行緒),並且可以各式個樣的方式來如此做,包括時間分片多緒執行(其中單一實體核心提供邏輯核心以用於實體核心同時多緒執行的執行緒之各者),或其結合(例如,時間分片提取及解碼和其之後同時多緒執行,像是在英特爾超執行緒技術(Intel® Hyperthreading technology)中)。
在當暫存器更名在亂序執行之內文中說明的同時,應了解暫存器更名可在順序架構中使用。在當闡述的處理器之實施例亦包括分開的指令及資料快取單元1434/1474和共用的L2快取單元1476的同時,替代的實施例可具有用於指令及資料兩者的單一內部快取,例如像是級1(L1)內部快取或多個層級的內部快取。在一些實施例中,系統可包括內部快取和外部於核心及/或處理器的外部快取之結合。或者,快取之所有者可外部於核心及/或處理器。
特定示範性循序核心架構
圖15A~B闡述更特定的示範性循序核心架構之方塊圖,其核心會為在晶片中幾個邏輯方塊之其中一者(包括相同類型及/或不同類型的其它核心)。取決於應用,邏輯方塊透過具有一些固定功能邏輯、記憶體I/O介面及其它需要的I/O邏輯的高頻寬互連網路(例如,環狀 網路)來通訊。
圖15A為依據本發明之實施例的單一處理器核心連同其對晶粒上互連網路1502的連接和連同其級2(L2)快取1504之區域子集。在一實施例中,指令解碼器1500支援具有緊縮資料指令集延伸的x86指令集。L1快取1506允許快取記憶體到純量及向量單元中的低延遲存取。在當於一實施例中(為了簡化設計),純量單元1508及向量單元1510使用分開的暫存器組(分別是純量暫存器11512和向量暫存器1514)且在他們之間傳輸的資料被寫入至記憶體以及接著在級1(L1)快取1506中自其讀回的同時,本發明之替代的實施例可使用不同的方法(例如,使用單一暫存器組或包括允許資料在兩個暫存器檔案而不被寫入或讀回的通訊路徑)。
L2快取1504之區域子集為部分的全域L2快取,其被分成分開的區域子集,每處理器核心一個。各個處理器核心具有到其自己的L2快取1504之區域子集的直接存取路徑。由處理器核心的資料讀取儲存在其L2快取子集1504中且能被快速地存取,與其它處理器核心存取他們自己的區域L2快取子集併行。由處理器核心的資料寫入儲存在其自己的L2快取子集1504且若需要的話,從其它子集清除(flush)。環狀網路確保共用的資料之一致性(coherency)。環狀網路為雙向以允許像是處理器核心、L2快取及其它邏輯方塊的代理器在晶片內彼此通訊。各個環狀資料路徑為每方向1012位元寬。
圖15B為依據本發明之實施例在圖15A中之部分的處理器核心之展開圖。圖15B包括L1資料快取1506A、部分的L1快取1504以及關於向量單元1510和向量暫存器1514的更多細節。具體而言,向量單元1510為16寬的向量處理單元(VPU;vector processing unit)(請見16寬ALU 1528),其執行整數、單精度浮點以及雙精度浮點指令之一或多者。VPU支援以拌和單元1520拌和暫存器輸入、以數值轉換單元1522A~B數值轉換以及在記憶體輸入上以複製單元1524複制。寫入遮罩暫存器1526允許預測導致向量寫入。
具有積體記憶體控制器及圖形的處理器
圖16為依據本發明之實施例可具有多於一個核心、可具有積體記憶體控制器以及可具有積體圖形的處理器1600之方塊圖。在圖16中的實線框闡述具有單一核心1602A的處理器1600、系統代理器1610、成組的一或多個匯流排控制器單元1616,同時可選添加的虛線框闡述具有多個核心1602A~N的替代的處理器1600、在系統代理單元1610中成組的一或多個積體記憶體控制器單元1614以及專用邏輯1608。
因此,處理器1600之不同的實施可包括:1)具有作為積體圖形及/或科學(處理量)邏輯(其可包括一或多個核心)的專用邏輯1608的CPU,以及作為一或多個通用核心(例如,通用循序核心、通用亂序核心、兩 者的結合)的核心1602A~N;2)具有為打算主要用於圖形及/或科學(處理量)的大數目的專用核心之核心1602A~N的共處理器;以及3)具有為大數目的通用順序核心的核心1602A~N的共處理器。因此,處理器1600可為通用處理器、共處理器或專用處理器,例如像是網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、高處理量許多積體核心(MIC;many integrated core)共處理器(包括30或更多核心)、嵌入式處理器或類似者。處理器可在一或多個晶片上實施。處理器1600可使用若干個處理技術之任一者(例如像是,BiCMOS、CMOS或NMOS)而為基板之部分及/或在一或多個基板上實施。
記憶體階層(hierarchy)包括在核心內快取的一或多個層級、成組的或一或多個共用快取單元1606以及耦接至該組積體記憶體控制器單元1614的外部記憶體(未繪示)。該組共用快取單元1606可包括一或多個中級快取,像是級2(L2)、級3(L3)、級4(L4)或快取的其它層級、最終級快取(LLC;last level cache)及/或其結合。在於一實施例中基於環狀的互連單元1612將積體圖形邏輯1608、該組共用快取單元1606以及系統代理單元1610/積體記憶體控制器1614互連的同時,替代的實施例可使用任何數目已知的技術以用於互連這類單元。在一實施例中,一致性係在一或多個快取單元1606與核心1602-A~N之間維持。
在一些實施例中,核心1602A~N之一或多者能夠多緒執行。系統代理器1610包括協調及運算核心1602A~N的該算組件。系統代理單元1610可例如包括功率控制單元(PCU;power control unit)和顯示單元。PCU可為或包括需要用於調節核心1602A~N及積體圖形邏輯1608之功率狀態的邏輯和組件。顯示單元係用於驅動一或多個外部連接的顯示器。
核心1602A~N按照架構指令集而言可為同質的或異質的,亦即,核心1602A~N之二或多者可能夠執行相同指令集,同時其它者可能夠執行僅該指令集或不同指令集的子集。
示範性電腦架構
圖17~21為示範性電腦架構之方塊圖。在膝上型電腦、桌上型電腦、手持PC、個人數位助理、工程站(engineering workstation)、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、蜂巢式電話、可攜媒體播放器、手持裝置以及各種其它電子裝置領域中已知的其它系統及組態亦為合適的。一般而言,能夠包含於此揭示的處理器及/或其它執行邏輯龐大的各種系統或電子裝置一般為合適的。
現請參照圖17,依據本發明之一實施例繪示了系統1700的方塊圖。系統1700可包括一或多個處理器 1710、1715,其耦接至控制器集線器1720。在一實施例中,控制器集線器1720包括圖形記憶體控制器集線器(GMCH;graphics memory controller hub)1790和輸入/輸出集線器(IOH;Input/Output Hub)1750(其可在分開的晶片上);GMCH 1790包括記憶體1740和共處理器1745所對其耦接的記憶體及圖形控制器;IOH 1750將輸入/輸出(I/O)裝置1760耦接至GMCH 1790。或者,記憶體及圖形控制器之一或兩者被整合在處理器內(如於此所述的),記憶體1740及共處理器1745直接耦接至處理器1710,且控制器集線器1720與IOH 1750在單一晶片中。
額外的處理器1715之可選的性質係以虛線在圖17中標誌。各個處理器1710、1715可包括於此說明的處理核心之一或多者且可為處理器1600之某種版本。
記憶體1740可例如為動態隨機存取記憶體(DRAM;dynamic random access memory)、相變記憶體(PCM;phase change memory)或兩者的結合。對於至少一實施例,控制器集線器1720經由多點下傳匯流排(multi-drop bus)與處理器1710、1715通訊,該多點下傳匯流排諸如前端匯流排(FSB;frontside bus)、像是快速通道互連(QPI;QuickPath Interconnect)的點對點介面或類似的連接1795。
在一實施例中,共處理器1745為專用處理器,例如像是高處理量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器或類 似者。在一實施例中,控制器集線器1720可包括積體圖形加速器。
就包括架構的、微架構的、熱、功率消耗特性及類似者之指標的度量譜而言,在實體資源1710、1715之間能有各種差異。
在一實施例中,處理器1710執行控制一般類型之資料處理運算的指令。在指令內嵌入的可為共處理器指令。處理器1710辨識這些共處理器指令為應由附接的共處理器1745執行之類型的。據此,處理器1710在共處理器匯流排或其它互連上發出這些共處理器指令(或代表共處理器指令的控制信號)給共處理器1745。共處理器1745接受且執行接收的共處理器指令。
現請參照圖18,依據本發明之實施例繪示了第一更特定示範性系統1800的方塊圖。如圖18所繪示,多處理器系統1800為點對點互連系統且包括經由點對點互連1850耦接的第一處理器1870和第二處理器1880。處理器1870及1880之各者可為處理器1600之某種版本。在本發明之一實施例中,處理器1870及1880分別為處理器1710及1715,同時共處理器1838為共處理器1745。在另一實施例中,處理器1870及1880分別為處理器1710、共處理器1745。
處理器1870及1880繪示分別包括積體記憶體控制器(IMC;integrated memory controller)單元1872及1882。處理器1870亦包括作為其匯流排控制器單元之部 分,點對點(P-P)介面1876及1878;類似地,第二處理器1880包括P-P介面1886及1888。處理器1870、1880可經由點對點(P-P)介面1850使用P-P介面電路1878、1888來交換資訊。如在圖18中所繪示,IMC 1872及1882將處理器耦接至分別的記憶體,即記憶體1832和記憶體1834,其可為區域地附接至分別處理器的主記憶體之部分。
處理器1870、1880各者可使用點對點介面電路1876、1894、1886、1898經由個別P-P介面1852、1854來與晶片組1890交換資訊。晶片組1890可經由高效能介面1839可選地與共處理器1838交換資訊。在一實施例中,共處理器1838為專用處理器,例如像是高處理量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器或類似者。
共用快取(未繪示)可被包括在處理器其一者中或在兩處理器外側,又經由P-P互連與處理器連接,使得若處理器被放到低功率模式中時,其一或兩處理器的區域快取資訊可儲存在共用快取中。
晶片組1890可經由介面1896耦接至第一匯流排1816。在一實施例中,第一匯流排1816可為周邊組件互連(PCI;Peripheral Component Interconnect)匯流排或像是快速PCI(PCI Express)或另一個第三代I/O互連匯流排的匯流排,雖然本發明的範圍不如此限制。
如在圖18中所繪示,各種I/O裝置1814可 耦接至第一匯流排1816,連同將第一匯流排1816耦接至第二匯流排1820的匯流排橋1818。在一實施例中,一或多個額外的處理器1815,像是共處理器、高處理量MIC處理器、GPGPU的加速器(例如像是圖形加速器或數位信號處理(DSP單元)、場可編程閘陣列或任何其它處理器係耦接至第一匯流排1816。在一實施例中,第二匯流排1820可為低腳位數(LPC;low pin count)匯流排。在一實施例中,各種裝置可耦接至第二匯流排1820,例如包括鍵盤及/或滑鼠1822、通訊裝置1827以及像是碟驅動或其它大量儲存裝置的儲存單元1828,其可包括指令/碼及資料1830。進一步,音訊I/O 1824可耦接至第二匯流排1820。要注意的是,其它架構為可能的。例如,取代圖18的點對點架構的是,系統可實施多點下傳匯流排或其它這樣的架構。
現請參照圖19,依據本發明之實施例繪示了第二更特定示範性系統1900的方塊圖。在圖18及19中相似的元件承接相似的參考數字,並且圖18的某些態樣已自圖19省略,以為了避免模糊圖19的其它態樣。
圖19闡述處理器1870、1880可分別包括積體記憶體及I/O控制邏輯(「CL」)1872及1882。因此,CL 1872、1882包括積體記憶體控制器單元且包括I/O控制邏輯。圖19不僅闡述記憶體1832、1834耦接至CL 1872、1882,亦闡述I/O裝置1914亦耦接至控制器邏輯1872、1882。舊有的I/O裝置1915耦接至晶片組1890。
現請參照圖20,依據本發明之一實施例繪示了SoC 2000的方塊圖。在圖16中類似的元件承接相似的參考數字。也同樣的,虛線框為在更進階SoC上之可選的特徵。在圖20中,互連單元2002係耦接至:包括成組的一或多個核心192A~N和共用的快取單元1606的應用處理器2010;系統代理器單元1610;匯流排控制器單元1616;積體記憶體控制器單元1614;可包括積體圖形邏輯、影像處理器、音訊處理器及視訊處理器的成組的一或多個協同處理器2020;靜態隨機存取記憶體(SRAM;static random access memory)單元2030;直接記憶體存取(DMA;direct memory access)單元2032;以及用於耦接至一或多個外部顯示器的顯示單元2040。在一實施例中,共處理器2020包括專用處理器,例如像是網路或通訊處理器、壓縮引擎、GPGPU、高處理量MIC處理器、嵌入式處理器或類似者。
於此揭示的機制之實施例可以硬體、軟體、韌體或以這類實施方法之結合來實施。本發明之實施例可實施為在可編程系統上執行的電腦程式或程式碼,該可編程系統包含至少一處理器、儲存系統(包括揮發性和非揮發性記憶體及/或儲存元件)、至少一輸入裝置以及至少一輸出裝置。
程式碼,像是在圖18中闡述的碼1830,可應用到輸入指令以進行於此說明的功能且產生輸出資訊。輸出資訊可以已知的方式應用到一或多個輸出裝置。為了此 應用的目的,處理系統包括具有處理器的任何系統,該處理器例如像是數位信號處理器(DSP)、微控制器、特定應用積體電路(ASIC)或微處理器。
程式碼可以高階程序或物件導向程式語言來實施以與處理系統通訊。若需要,程式碼亦可以組合或機器語言來實施。事實上,於此所述的機制並不限於任何特定程式語言的範圍。在任何情形中,可編譯語言或解譯語言。
至少一實施例的一或多個態樣可由儲存在機器可讀媒體上的代表性指令實施,其代表在處理器內的各種邏輯,其當由機器讀取時引起機器製造用以進行於此說明的技術之邏輯。這類代表,已知為「IP核心」,可儲存在有形、機器可讀媒體上且被提供到各種消費者或製造設施以載入到實際作成邏輯或處理器的製造機器。
這類機器可讀儲存媒體可包括(沒有限定)由機器或裝置製造或形成的物件之非暫態、有形安排,包括像是硬碟的儲存媒體,任何其它類型的碟片包括軟碟、光碟、光碟唯讀記憶體(CD-ROM;compact disk read-only memory)、可複寫光碟(CD-RW;compact disk rewritable)以及磁光碟,該安排包括半導體裝置,像是唯讀記憶體(ROM;read-only memory)的、隨機存取記憶體(RAM),隨機存取記憶體像是動態存機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可抹除可編程唯讀記憶體(EPROM)、快閃記憶體、電可抹除可編程唯讀記憶體 (EEPROM)、相變記憶體(PCM)、磁或光卡或合適於儲存電子指令的任何其它類型的媒體。
據此,本發明之實施例亦包括非暫態、有形的機器可讀媒體,其包含指令或包含設計資料,像是硬體描述語言(HDL;Hardware Description Language),其界定於此說明的結構、電路、設備、處理器及/或系統特徵。這類的實施例亦可稱為程式產品。
仿真(包括二進位轉譯、碼變形等)
在一些情形中,指令轉換器可被使用來將指令從來源指令集轉換到目標指令集。例如,指令轉換器可轉譯(例如,使用二進位轉譯、包括動態編譯的動態轉譯)、變形、仿真或另以轉換指令到一或多個其它指令,用以由核心來處理。指令轉換器可以軟體、硬體、韌體或其結合來實施。指令轉換器可在處理器上、處理器外或部分在處理器上且部分在處理器外。
圖21為依據本發明之實施例對比用以將在來源指令集中的二進位指令變換成在目標指令集中的二進位指令的軟體指令變換器的使用之方塊圖。雖然指令轉換器可替代地以軟體、韌體、硬體或其各種結合來實施,在闡述的實施例中,指令轉換器為軟體指令轉換器。圖21繪示了在高階語言2102中的程式可使用x86編譯器2104來編譯,用以產生可由具有至少一x86指令集核心的處理器2116所原生地執行的x86二進位碼2106。具有至少一 x86指令集核心的處理器2116代表能進行與具有至少一x86指令集核心的英特爾處理器實質相同功能的處理器,其係藉由相同地執行或另以處理(1)英特爾x86指令集核心之指令集的相當部分或(2)針對在具有至少一x86指令集核心的英特爾處理器上運行的應用或其它軟體之目標碼(object code)版本,用以達成與具有至少一x86指令集核心的英特爾處理器實質相同的結果。該x86編譯器2104代表可操作以產生x86二進位碼2106(例如,目標碼)的編譯器,其在有或沒有聯結處理下能在具有至少一x86指令集核心的處理器2116上執行。同樣的,圖21繪示在高階語言2102中的程式可使用替代的指令集編譯器2108來編譯,以產生可由不具有至少一x86指令集核心的處理器2114原生地執行之替代的指令集二進位碼2110(例如,具有執行加州桑尼維爾之MIPS科技之MIPS指令集及/或執行加州桑尼維爾之ARM控股之ARM指令集的核心的處理器)。指令轉換器2112係用以將x86二進位碼2106轉換成可由不具有x86指令集核心的處理器2114原生地執行的碼。此轉換的碼並不傾向於與替代的指令集二進位碼2110相同,因為能夠進行此的指令轉換器是難以作成的;然而,轉換的碼將完成一般運算且由來自替代的指令集的指令組成。因此,指令轉換器2112代表軟體、韌體、硬體或其結合,而透過仿真、模擬或任何其它處理允許不具有x86指令集處理器或核心的處理器或其它電子裝置執行x86二進位碼2106。
對於圖3~7及9之任一者說明的組件、特徵及細節亦可選擇地應用到圖1~2之任一者。對於於此揭露的處理器之任一者說明的組件、特徵及細節可選擇地應用到於此揭露的方法之任一者,其在實施例中可選擇地由及/或以這類處理器來進行。在實施例中於此說明的處理器之任一者可選擇地被包括在於此揭露的系統之任一者(例如,圖17~20之系統之任一者)。此外,在一些實施例中於此揭露的指令之任一者可選擇地具有於此繪示的指令格式之特徵或細節之任一者(例如,對於圖10~12說明的格式)。
於此揭露的處理器組件可被表明及/或請求為操作、可操作、能、能夠、組態適應的或另外方式以進行運算。例如,解碼器可被表明及/或請求以解碼指令,執行單元可被表明及/或請求以儲存結果,或類似者。如於此所使用的,當在關電(powered-off)狀態中時這些表式參照組件之特性、性質或屬性,並且沒有暗示他們被包括於其中的組件或裝置或設備目前通電(powered on)或正在操作。為了闡明,要被了解的是,於此所請求的處理器及設備並不被請求為有電的(powered)或正運行。
在本發明說明和申請專利範圍中,可已使用術語「耦接」及/或「連接」連同他們的衍生。這些術語並不打算彼此為同義詞。相反地,在實施例中,「連接」可被使用來指示兩個或多個元件彼此直接實體及/或電接觸。「耦接」可意味兩個或多個元件彼此直接實體及/或 電接觸。然而,「耦接」亦可意味兩個或多個元件並未彼此直接接觸,然而仍彼此合作或互動。例如,執行單元可透過一或多個介入組件與暫存器及/或解碼單元耦接。在圖中,使用箭頭來繪示連接和耦接。
可已使用術語「及/或」。如於此所使用的,術語「及/或」意味一或其餘者或兩者(例如,A及/或B意味A或B或A及B兩者)。
在上述說明中,已提出特定的細節以為了提供實施例之全面的了解。然而,可不以這些特定細節中的一些來實施其它實施例。本發明的範圍並不是要由上述提供的特定範例來決定,而是僅由下面的申請專利範圍決定。在其它實例中,周知的電路、結構、裝置及運算已以方塊圖形式及/或不以細節來繪示,以為了避免模糊本發明說明的了解。在已適當考慮下,參考號碼或參考號碼的終端部分已在圖之間被重複,用以指示對應的或相類似的元件,其可選擇地具有類似或相同的特性,除非另以明定或明白顯見的。
某些運算可由硬體組件來進行,或可被體現於機器可讀或電路可執行指令中,其可被使用來引起及/或造成機器、電路或硬體組件(例如,處理器、處理器之部分、電路等)以進行運算的指令來編程。亦可選擇地由硬體和軟體之結合來進行運算。處理器、機器、電路或硬體可包括特定或特別的電路,或者其它邏輯(例如,潛在地與韌體及/或軟體結合的硬體)可操作以反應於指令而 執行及/或處理指令且儲存結果。
一些實施例包括製造之物件(例如,電腦程式產品),其包括機器可讀媒體。媒體可包括以由機器可讀的形式來提供(例如,儲存)資訊的機制。機器可讀媒體可提供或具有儲存於其上的指令或指令之序列,而若及/或當由機器執行時,操作以引起機器進行及/或導致機器進行一或多個於此揭露的運算、方法或技術。
在一些實施例中,機器可讀媒體可包括有形及/或非暫態機器可讀儲存媒體。例如,非暫態機器可讀儲存媒體可包括軟式磁碟片(floppy diskette)、光學儲存媒體、光碟、光學資料儲存裝置、CD-ROM、磁碟、磁光碟(magneto-optical disk)、唯讀記憶體(ROM)、可編程ROM(PROM)、可抹除及可編程ROM(EPROM)、電可抹除可編程ROM(EEPROM)、隨機存取記憶體(RAM)、靜態RAM(SRAM)、動態RAM(DRAM)、快閃記憶體、相變記憶體、相變資料儲存材料、非揮發性記憶體、非揮發性資料儲存裝置、非暫態記憶體、非暫態資料儲存裝置或類似者。非暫態機器可讀儲存媒體並非由暫態傳播信號組成。在一些實施例中,儲存媒體可包括有形媒體,其包括固態物質或材料,例如像是半導體材料、相變材料、磁性固體材料、固體資料儲存材料等。或者,可選擇地使用非有形暫態電腦可讀傳輸媒體,例如像是電、光、聲或其它傳播信號的形式-像是載波(carrier wave)、紅外線信號以及數位信號。
合適的機器之範例包括(但不限於)通用處理器、專用處理器、數位邏輯電路、積體電路或類似者。仍然合適的機器之其它範例包括電腦系統或其它電子裝置,其包括處理器、數位邏輯電路、積體電路。這類電腦系統或電子裝置之範例包括(但不限於)桌上型電腦、膝上型電腦、筆記型電腦、平板電腦、易網機(netbook)、智慧電話、蜂巢式電話、伺服器、網路裝置(例如,路由器和交換器)、行動網際網路裝置(MID;Mobile Internet device)、媒體播放器、智慧電視、桌上型易網機(nettop)、機上盒以及電視遊戲控制器。
貫穿此說明書參考至例如「一實施例」、「實施例」、「一或多個實施例」、「一些實施例」指示特別特徵可被包括在本發明之實作中,但不必然需要這樣。類似的,在發明說明中,各種特徵有時在其單一實施例、圖或說明中分群在一起,以為了精簡本揭露且在各種進步的態樣之了解中進行輔助。然而此揭露之說明並不是要被解譯為反映發明需要比明示記載於申請專利範圍中的更多的特徵的意向。相反的,如下列申請專利範圍所反映的是,進步的態樣在於少於單一揭露的實施例之所有特徵。因此,在詳細發明說明之後的申請專利範圍係以各自獨立的請求項作為分開的實施例特此明示地併入詳細的發明說明中。
範例實施例
下列範例屬於進一步的實施例。可在一或多個實施例中任何處使用在範例中的特異性。
範例1為一種處理器,其包括複數個緊縮資料暫存器和用以解碼指令的解碼單元。該指令係用以指示要用以儲存來源緊縮記憶體位址資訊的該複數個緊縮資料暫存器其中之一緊縮資料暫存器。該來源緊縮記憶體位址資訊係用以包括複數個記憶體位址資訊資料元件。該處理器亦包括與該解碼單元及該複數個緊縮資料暫存器耦接的執行單元。反應於該指令,該執行單元係用以從複數個記憶體位址載入複數個資料元件,該複數個記憶體位址各者用以對應至該複數個記憶體位址資訊資料元件之不同者,並且該執行單元用以儲存該複數個載入資料元件於目的地儲存位置中。該目的地儲存位置不包括該複數個緊縮資料暫存器中之一暫存器。
範例2包括範例1之處理器,更包括快取,且其中反應於該指令,該執行單元用以非時序地載入該複數個資料元件,包括用以在會對應至來自其中該複數個資料元件自其中載入的該複數個記憶體位址的任何快取線中不儲存該載入資料元件。
範例3包括範例1至2之任一者的處理器,其中該解碼單元用以解碼該指令,該指令用以指示目的地記憶體位址資訊,該目的地記憶體位址資訊用以對應至該目的地儲存位置。
範例4包括範例1至3之任一者的處理器, 更包括快取,且其中反應於該指令,該執行單元用以在該目的地儲存位置中儲存該複數個載入資料元件,該目的地儲存位置用以作為在該快取中的快取線。
範例5包括範例4之處理器,更包括級1(L1)快取,其中該解碼單元用以解碼用來隱含地指示該快取的該指令,且其中該快取並非該L1快取。
範例6包括範例4之處理器,其中該解碼單元用以解碼該指令,其用以具有顯式明定該快取的欄位。
範例7包括範例1至6之任一者的處理器,其中反應於該指令,該執行單元用以將該快取線組態為不可讀取的及不可收回的,直到該複數個資料元件已被載入為止。
範例8包括範例1之處理器,其中反應於該指令,該執行單元用以在該目的地儲存位置中儲存該複數個載入資料元件,該目的地儲存位置用以作為在記憶體中的記憶體位置。
範例9包括範例1至8之任一者的處理器,其中反應於該指令,該執行單元用以在沒有任何額外相鄰資料元件被載入下從記憶體載入該複數個資料元件之各者作為個別的資料元件。
範例10包括範例1至9之任一者的處理器,更包括並行載入運算調度單元,該並行載入運算調度單元用以針對該複數個資料元件中之至少二個並行地調度至少二載入運算。
範例11包括範例10之處理器,其中該處理器包括複數個核心,其中並行載入運算調度單元對應至複數個核心之第一核心,且更包括用於該複數個核心之各者不同的並行載入運算調度單元。
範例12包括範例1至11之任一者的處理器,更包括分庫的轉譯旁視緩衝器(TLB)。該分庫的TLB具有複數個TLB庫,該複數個TLB庫用以並行地將複數個邏輯位址轉譯成複數個實體位址。
範例13包括範例12之處理器,其中該TLB庫之各者用以被映射至不同組的邏輯位址。
範例14包括範例1至13之任一者的處理器,更包括儲存佇列,用以將運算排隊,且包括延伸儲存佇列,用以將包括用來對應該指令的運算的運算進行排隊,且其中用以在該延伸儲存佇列中排隊的運算係用以相對於用來在該儲存佇列中排隊的該運算按序地提交。
範例15包括範例14之處理器,其中該儲存佇列用以支援用以載入轉傳的儲存,且其中該延伸儲存佇列未用以支援用以載入轉傳的儲存。
範例16為由處理器進行的方法,其包括在處理器接收指令。該指令指示儲存來源緊縮記憶體位址資訊的緊縮資料暫存器。該來源緊縮記憶體位址資訊包括複數個記憶體位址資訊資料元件。該方法包括,反應於該指令,從複數個記憶體位址載入複數個資料元件,該複數個記憶體位址各者對應至該複數個記憶體位址資訊資料元件 之不同者,並且反應於該指令,儲存該複數個載入資料元件於目的地儲存位置中。該目的地儲存位置不包括緊縮資料暫存器。
範例17包括範例16之方法,其中該載入的步驟包括,非時序地載入該複數個資料元件,包括在會對應至來自其中該複數個資料元件自其中載入的該複數個記憶體位址任的何快取線中不儲存該載入資料元件。
範例18包括範例16至17之任一者的方法,其中該接收的步驟包括接收指示對應至該目的地儲存位置的目的地記憶體位址資訊的指令。
範例19包括範例16至18之任一者的方法,其中該儲存的步驟包括在該目的地儲存位置中儲存該複數個載入資料元件,該目的地儲存位置為在快取中的快取線。
範例20包括範例19的方法,其中該接收的步驟包括接收隱含地指示非L1快取的該快取的指令。
範例21為用以處理指令的系統,其包括匯流排或其它互連,以及與該互連耦接的處理器。該處理器係用以接收指令。該指令用以指示用來儲存來源緊縮記憶體位址資訊的緊縮資料暫存器。該來源緊縮記憶體位址資訊係用以包括複數個記憶體位址資訊資料元件。反應於該指令,該處理器用以從複數個記憶體位址載入複數個資料元件,該複數個記憶體位址各者用以對應至該複數個記憶體位址資訊資料元件之不同者,並且該處理器用以儲存該複 數個載入資料元件於目的地儲存位置中。該目的地儲存位置不包括該複數個緊縮資料暫存器中之一暫存器和與該互連耦接的記憶體。
範例22包括範例21之處理器,其中該處理器包括快取,且其中反應於該指令,該處理器用以非時序地載入該複數個資料元件,包括用以在會對應至其中該複數個資料元件自其中載入的該複數個記憶體位址的任何快取線中不儲存該載入資料元件。
範例23為製造的物件,包括非暫態機器可讀儲存媒體。儲存複數個指令的該非暫態機器可讀儲存媒體包括一指令。若由機器執行,則該指令用以引起該機器進行運算,包括從要以由該指令指示的緊縮資料暫存器存取來源緊縮記憶體位址資訊。該來源緊縮記憶體位址資訊用以包括複數個記憶體位址資訊資料元件。該運算亦包括,從複數個記憶體位址載入複數個資料元件,該複數個記憶體位址各者用以對應至該複數個記憶體位址資訊資料元件之不同者。該運算亦包括,用以儲存該複數個載入資料元件於目的地儲存位置中。該目的地儲存位置不包括緊縮資料暫存器。
範例24包括範例23之製造的物件,其中若由該機器進行,則該指令用以引起該機器進行運算,包括非時序地載入該複數個資料元件,包括用以在會對應至其中該複數個資料元件自其中載入的該複數個記憶體位址的任何快取線中不儲存該載入資料元件。
範例25為一種處理器,其包括至少一快取、複數個緊縮資料暫存器和用以解碼指令的解碼單元。該指令用以指示來源記憶體位址資訊。該處理器包括與該解碼單元耦接的執行單元。反應於該指令,該執行單元用以非時序地從對應至該記憶體位址資訊的來源記憶體位址載入資料元件,包括在會對應至該資料元件已自其中載入的該來源記憶體位址的至少一快取之任何快取線中不儲存該載入資料元件,且在該至少一快取中儲存該載入資料元件於目的地快取線中。
範例26包括範例1至15及25之任一者的處理器,更包括可選的分支預測單元用以預測分支,且包括可選的指令提取單元,與該分支預測單元耦接,該指令提取單元用以提取包括該指令的多個指令。處理器亦可選擇地包括可選的級1(L1)指令快取,其與該指令提取單元耦接,該L1指令快取用以儲存包括該指令的多個指令,可選的L1資料快取用以儲存資料,並且可選的級2(L2)快取用以儲存資料及指令。該處理器亦可選擇地包括與該解碼單元、該L1指令快取以及該L2快取耦接的指令提取單元,用以提取該指令,在一些情形中從該L1指令快取和該L2快取其中一者提取,且用以提供該指令給該解碼單元。該處理器亦可選擇地包括暫存器更名單元,用以將暫存器更名,且包括可選的提交單元,用以提交該指令。
範例27包括了包括至少一互連的晶片上系統、與該至少一互連耦接的範例1至15及25之任一者的 該處理器、與該至少一互連耦接的可選的圖形處理單元(GPU)、與該至少一互連耦接的可選的數位信號處理器(DSP)、與該至少一互連耦接的可選的顯示控制器、與該至少一互連耦接的可選的記憶體控制器、與該至少一互連耦接的可選的無線數據機、與該至少一互連耦接的可選的影像信號處理器、與該至少一互連耦接的可選的通用串列匯流排(USB)3.0相容控制器、與該至少一互連耦接的可選的藍牙4.1相同控制器以及與該至少一互連耦接的可選的無線收發器控制器。
範例28為處理器或其它設備,操作以進行範例16至19之任一者的方法。
範例29為處理器或其它設備,其包括用於進行範例16至19之任一者的方法的機構。
範例30為可選非時序的及/或有形的機器可讀媒體,其可選地儲存或另以提供包括第一指令的指令,若及/或當由處理器、電腦系統、電子裝置或其它機器執行時,該第一指令操作以引起該機器進行範例16至19之任一者的方法。
範例31為實質地於此說明的處理器或其它設備。
範例32為操作以進行實質地於此說明的任何方法的處理器或其它設備。
範例33為操作以進行實質地於此說明的任何載入指令的處理器或其它設備。
範例34為一種處理器,其包括用於儲存緊縮資料的機構和用於解碼指令的機構。該指令係用以指示要用以儲存來源緊縮記憶體位址資訊的該複數個緊縮資料暫存器其中之一緊縮資料暫存器。該來源緊縮記憶體位址資訊用以包括複數個記憶體位址資訊資料元件。該處理器亦包括,反應於該指令用於從複數個記憶體位址載入複數個資料元件的機構,該複數個記憶體位址各者用以對應至該複數個記憶體位址資訊資料元件之不同者。該處理器亦包括,反應於該指令,用於儲存該複數個載入資料元件於目的地儲存位置中的機構。該目的地儲存位置不包括該複數個緊縮資料暫存器中之一暫存器。
230‧‧‧方法
Claims (23)
- 一種處理器,包含:複數個緊縮資料暫存器;解碼單元,用以解碼指令,該指令用以指示用以儲存來源緊縮記憶體位址資訊的該複數個緊縮資料暫存器之一緊縮資料暫存器,該來源緊縮記憶體位址資訊用以包括複數個記憶體位址資訊資料元件,並且該指令用以指示單一目的地記憶體位址;以及執行單元,與該解碼單元耦接並且與該複數個緊縮資料暫存器耦接,該執行單元反應於解碼該指令,用以:從複數個記憶體位址載入複數個資料元件,該複數個記憶體位址各者用以對應至該複數個記憶體位址資訊資料元件之不同者;以及在對應於該單一目的地記憶體位址的目的地儲存位置中相連地儲存該複數個載入資料元件。
- 如申請專利範圍第1項的處理器,更包含快取,且其中反應於該指令,該執行單元用以非時序地載入該複數個資料元件,在其中非時序地載入的該資料元件並不用以在對應至該複數個記憶體位址資訊資料元件的任何快取線中被快取。
- 如申請專利範圍第1項的處理器,更包含給定快取, 且其中反應於該指令,該執行單元用以在該目的地儲存位置中儲存該複數個載入資料元件,該目的地儲存位置用以作為在對應於該單一目的地記憶體位址的該給定快取中的快取線。
- 如申請專利範圍第3項的處理器,更包含級1(L1)快取,其中該解碼單元用以解碼用來隱含地指示該給定快取的該指令,且其中該給定快取並非該L1快取。
- 如申請專利範圍第3項的處理器,其中該解碼單元用以解碼該指令,其用以具有顯式明定該給定快取的欄位。
- 如申請專利範圍第3項的處理器,其中反應於該指令,該執行單元用以將該快取線組態為不可讀取的及不可收回的,直到該複數個資料元件已被載入為止。
- 如申請專利範圍第1項的的處理器,其中反應於該指令,該執行單元用以在沒有任何額外相鄰資料元件被載入下從記憶體載入該複數個資料元件之各者作為個別的資料元件。
- 如申請專利範圍第1項的的處理器,更包含並行載入運算調度單元,該並行載入運算調度單元用以針對該複數個資料元件中之至少二個並行地調度至少二載入運算。
- 如申請專利範圍第8項的處理器,其中該處理器包含複數個核心,其中該並行載入運算調度單元對應至該複數個核心之第一核心,且更包含用於該複數個核心之各者不同的並行載入運算調度單元。
- 如申請專利範圍第1項的處理器,更包含分庫的轉譯旁視緩衝器(TLB),該分庫的TLB具有複數個TLB庫,該複數個TLB庫用以並行地將複數個邏輯位址轉譯成複數個實體位址。
- 如申請專利範圍第10項的處理器,其中該TLB庫之各者用以被映射至不同組的邏輯位址。
- 如申請專利範圍第1項的處理器,更包含:儲存佇列,用以將運算排隊;以及延伸儲存佇列,用以將包括用來對應該指令的運算的運算排隊,且其中用以在該延伸儲存佇列中排隊的該運算係用以相對於用來在該儲存佇列中排隊的該運算按序地提交。
- 如申請專利範圍第12項的處理器,其中該儲存佇列用以支援用以載入轉傳的儲存,且其中該延伸儲存佇列未用以支援用以載入轉傳的儲存。
- 一種由處理器進行的方法,包含:在該處理器接收指令,該指令指示儲存來源緊縮記憶體位址資訊的緊縮資料暫存器,該來源緊縮記憶體位址資訊包括複數個記憶體位址資訊資料元件,並且該指令指示單一目的地記憶體位址;反應於該指令,從複數個記憶體位址載入複數個資料元件,該複數個記憶體位址各者用以對應至該複數個記憶體位址資訊資料元件之不同者;以及反應於該指令,相連地儲存該複數個載入資料元件於目的地儲存位置中,其對應於該單一目的地記憶體位址。
- 如申請專利範圍第14項的方法,其中該載入的步驟包含:非時序地載入該複數個資料元件,在其中非時序地載入的該資料元件並不在對應至該複數個記憶體位址資訊資料元件的任何快取線中被快取。
- 如申請專利範圍第14項的方法,其中該接收的步驟包含接收指示對應至該單一目的地記憶體位址的單一目的地記憶體位址資訊的指令。
- 如申請專利範圍第14項的方法,其中該儲存的步驟包含在該目的地儲存位置中儲存該複數個載入資料元件,該目的地儲存位置為在快取中的快取線。
- 如申請專利範圍第17項的方法,其中該接收的步驟包含接收隱含地指示非L1快取的該快取的指令。
- 一種用以處理命令的系統,包含:互連;與該互連耦接的處理器,該處理器用以接收指令,該指令用以指示用來儲存來源緊縮記憶體位址資訊的緊縮資料暫存器,該來源緊縮記憶體位址資訊用以包括複數個記憶體位址資訊資料元件,並且該指令用以指示要用以儲存單一目的地記憶體位址資訊的純量暫存器,反應於該指令,該處理器用以從複數個記憶體位址載入複數個資料元件,該複數個記憶體位址各者用以對應至該複數個記憶體位址資訊資料元件之不同者,且相連地儲存該複數個載入資料元件於目的地儲存位置中,其中該目的地儲存位置不包括緊縮資料暫存器,且其中該目的地儲存位置對應於該單一目的地記憶體位址資訊;以及與該互連耦接的記憶體。
- 如申請專利範圍第19項的系統,其中該處理器包含快取,且其中反應於該指令,該處理器用以非時序地載入該複數個資料元件,在其中在會對應至其中該複數個資料元件自其中載入的該複數個記憶體位址的任何快取線中不用以對該非時序地載入的該資料元件進行快取。
- 一種製造的物件,包含非暫態機器可讀儲存媒體,該非暫態機器可讀儲存媒體儲存包括一指令的複數個指令,若由機器進行,該指令則用以引起該機器進行運算,包含:從用以由該指令指示的緊縮資料暫存器存取來源緊縮記憶體位址資訊,該來源緊縮記憶體位址資訊用以包括複數個記憶體位址資訊資料元件;自用以從要由該指令所指示的通用暫存器存取的單一目的地記憶體位址資訊產生單一目的地記憶體位址;從複數個記憶體位址載入複數個資料元件,該複數個記憶體位址各者用以對應至該複數個記憶體位址資訊資料元件之不同者;以及相連地儲存該複數個載入資料元件於目的地儲存位置中,其對應於該單一目的地記憶體位址。
- 如申請專利範圍第21項的製造的物件,其中若由該機器進行,該指令則用以引起該機器進行運算,包含:非時序地載入該複數個資料元件,在其中在會對應至其中該複數個資料元件自其中載入的該複數個記憶體位址的任何快取線中不用以對非時序地載入的該資料元件進行快取。
- 一種處理器,包含: 至少一快取;複數個緊縮資料暫存器;解碼單元,用以解碼指令,該指令用以指示來源記憶體位址資訊,並且該指令用以指示目的地記憶體位址資訊;以及執行單元,與該解碼單元耦接,該執行單元反應於該指令用以:非時序地從對應至該記憶體位址資訊的來源記憶體位址載入資料元件,在其中在對應至用於該資料元件的該來源記憶體位址的至少一快取之任何快取線中不用以對載入資料元件進行快取;以及在該至少一快取中將該載入資料元件於快取線中進行快取,其中該快取線對應於該目的地記憶體位址資訊。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US15/283,259 US10379855B2 (en) | 2016-09-30 | 2016-09-30 | Processors, methods, systems, and instructions to load multiple data elements to destination storage locations other than packed data registers |
| US15/283,259 | 2016-09-30 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| TW201820123A TW201820123A (zh) | 2018-06-01 |
| TWI742132B true TWI742132B (zh) | 2021-10-11 |
Family
ID=61758099
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| TW106126951A TWI742132B (zh) | 2016-09-30 | 2017-08-09 | 用以將多個資料元件載入到非緊縮資料暫存器的目的地儲存位置的處理器、方法、系統及指令 |
Country Status (5)
| Country | Link |
|---|---|
| US (2) | US10379855B2 (zh) |
| EP (1) | EP3519948A4 (zh) |
| CN (1) | CN109791487B (zh) |
| TW (1) | TWI742132B (zh) |
| WO (1) | WO2018093439A2 (zh) |
Families Citing this family (23)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10379855B2 (en) * | 2016-09-30 | 2019-08-13 | Intel Corporation | Processors, methods, systems, and instructions to load multiple data elements to destination storage locations other than packed data registers |
| US11106609B2 (en) | 2019-02-28 | 2021-08-31 | Micron Technology, Inc. | Priority scheduling in queues to access cache data in a memory sub-system |
| US10970222B2 (en) | 2019-02-28 | 2021-04-06 | Micron Technology, Inc. | Eviction of a cache line based on a modification of a sector of the cache line |
| US10908821B2 (en) * | 2019-02-28 | 2021-02-02 | Micron Technology, Inc. | Use of outstanding command queues for separate read-only cache and write-read cache in a memory sub-system |
| US11288199B2 (en) | 2019-02-28 | 2022-03-29 | Micron Technology, Inc. | Separate read-only cache and write-read cache in a memory sub-system |
| CN112395000B (zh) * | 2019-08-13 | 2023-05-26 | 杭州中天微系统有限公司 | 一种数据预加载方法和指令处理装置 |
| US11847463B2 (en) * | 2019-09-27 | 2023-12-19 | Advanced Micro Devices, Inc. | Masked multi-lane instruction memory fault handling using fast and slow execution paths |
| US12066944B2 (en) * | 2019-12-20 | 2024-08-20 | Advanced Micro Devices, Inc. | Zero value memory compression |
| CN113157631B (zh) * | 2020-01-22 | 2024-06-21 | 瑞昱半导体股份有限公司 | 处理器电路以及数据处理方法 |
| CN113918883B (zh) * | 2021-11-03 | 2022-05-27 | 海光信息技术股份有限公司 | 数据处理方法、装置以及设备和计算机可读存储介质 |
| GB2617551B (en) * | 2022-04-07 | 2024-08-28 | Advanced Risc Mach Ltd | Technique for handling ordering constrained access operations |
| CN114546488B (zh) * | 2022-04-25 | 2022-07-29 | 超验信息科技(长沙)有限公司 | 一种向量跨步指令的实现方法、装置、设备及存储介质 |
| US12436712B2 (en) * | 2022-08-30 | 2025-10-07 | Micron Technology, Inc. | Access request reordering across a multiple-channel interface for memory-based communication queues |
| US12436714B2 (en) | 2022-08-30 | 2025-10-07 | Micron Technology, Inc. | Access request reordering for memory-based communication queues |
| US12066940B2 (en) * | 2022-09-29 | 2024-08-20 | Advanced Micro Devices, Inc. | Data reuse cache |
| WO2024130636A1 (en) * | 2022-12-22 | 2024-06-27 | Intel Corporation | Techniques to implement a data-aware cache replacement policy |
| US12182037B2 (en) | 2023-02-23 | 2024-12-31 | Apple Inc. | Cache control to preserve register data |
| CN116126252B (zh) * | 2023-04-11 | 2023-08-08 | 南京砺算科技有限公司 | 数据加载方法及图形处理器、计算机可读存储介质 |
| US20250117472A1 (en) * | 2023-10-09 | 2025-04-10 | Ati Technologies Ulc | Methods and systems for synchronizing trusted operating systems |
| CN117312182B (zh) * | 2023-11-29 | 2024-02-20 | 中国人民解放军国防科技大学 | 基于便签式存储的向量数据分散方法、装置及计算机设备 |
| CN119629262A (zh) * | 2025-02-10 | 2025-03-14 | 英特尔(中国)研究中心有限公司 | 分组处理装置、分组处理方法以及计算机可读存储介质 |
| CN120596144B (zh) * | 2025-08-07 | 2025-10-21 | 睿思芯科(深圳)技术有限公司 | 向量移位方法、系统及存储介质 |
| CN120929142B (zh) * | 2025-10-16 | 2026-01-23 | 摩尔线程智能科技(北京)股份有限公司 | 数据处理装置及方法、处理器和芯片 |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6275904B1 (en) * | 1998-03-31 | 2001-08-14 | Intel Corporation | Cache pollution avoidance instructions |
| US20140181482A1 (en) * | 2012-12-20 | 2014-06-26 | Advanced Micro Devices, Inc. | Store-to-load forwarding |
| US20150095623A1 (en) * | 2013-09-27 | 2015-04-02 | Intel Corporation | Vector indexed memory access plus arithmetic and/or logical operation processors, methods, systems, and instructions |
| TW201617890A (zh) * | 2014-07-18 | 2016-05-16 | 英特爾股份有限公司 | 無區域性提示向量記憶體存取之處理器、方法、系統與指令 |
Family Cites Families (10)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2008513903A (ja) * | 2004-09-21 | 2008-05-01 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | シャッフル演算のためのマイクロプロセッサデバイス及び方法 |
| US20070118726A1 (en) * | 2005-11-22 | 2007-05-24 | International Business Machines Corporation | System and method for dynamically selecting storage instruction performance scheme |
| US7793080B2 (en) | 2007-12-31 | 2010-09-07 | Globalfoundries Inc. | Processing pipeline having parallel dispatch and method thereof |
| US9727471B2 (en) | 2010-11-29 | 2017-08-08 | Intel Corporation | Method and apparatus for stream buffer management instructions |
| WO2013188460A2 (en) * | 2012-06-15 | 2013-12-19 | Soft Machines, Inc. | A virtual load store queue having a dynamic dispatch window with a distributed structure |
| US9842046B2 (en) | 2012-09-28 | 2017-12-12 | Intel Corporation | Processing memory access instructions that have duplicate memory indices |
| US9003225B2 (en) * | 2012-10-17 | 2015-04-07 | Advanced Micro Devices, Inc. | Confirming store-to-load forwards |
| US9734092B2 (en) | 2014-03-19 | 2017-08-15 | Facebook, Inc. | Secure support for I/O in software cryptoprocessor |
| US9971686B2 (en) | 2015-02-23 | 2018-05-15 | Intel Corporation | Vector cache line write back processors, methods, systems, and instructions |
| US10379855B2 (en) * | 2016-09-30 | 2019-08-13 | Intel Corporation | Processors, methods, systems, and instructions to load multiple data elements to destination storage locations other than packed data registers |
-
2016
- 2016-09-30 US US15/283,259 patent/US10379855B2/en active Active
-
2017
- 2017-08-09 TW TW106126951A patent/TWI742132B/zh not_active IP Right Cessation
- 2017-08-30 EP EP17870996.0A patent/EP3519948A4/en not_active Withdrawn
- 2017-08-30 WO PCT/US2017/049328 patent/WO2018093439A2/en not_active Ceased
- 2017-08-30 CN CN201780058647.1A patent/CN109791487B/zh active Active
-
2019
- 2019-08-09 US US16/537,318 patent/US11068264B2/en active Active
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6275904B1 (en) * | 1998-03-31 | 2001-08-14 | Intel Corporation | Cache pollution avoidance instructions |
| US20140181482A1 (en) * | 2012-12-20 | 2014-06-26 | Advanced Micro Devices, Inc. | Store-to-load forwarding |
| US20150095623A1 (en) * | 2013-09-27 | 2015-04-02 | Intel Corporation | Vector indexed memory access plus arithmetic and/or logical operation processors, methods, systems, and instructions |
| TW201617890A (zh) * | 2014-07-18 | 2016-05-16 | 英特爾股份有限公司 | 無區域性提示向量記憶體存取之處理器、方法、系統與指令 |
Non-Patent Citations (1)
| Title |
|---|
| TODD M.AUSTIN et al. 'High-Bandwidth Address Translation for Multiple-Issue Processors' In: Proceedings of the 23rd Annual International Symposium on Computer Architecture, 22-24 May1996. |
Also Published As
| Publication number | Publication date |
|---|---|
| WO2018093439A3 (en) | 2018-07-05 |
| CN109791487A (zh) | 2019-05-21 |
| WO2018093439A2 (en) | 2018-05-24 |
| US20190384601A1 (en) | 2019-12-19 |
| US10379855B2 (en) | 2019-08-13 |
| EP3519948A4 (en) | 2020-08-19 |
| CN109791487B (zh) | 2023-10-20 |
| US11068264B2 (en) | 2021-07-20 |
| TW201820123A (zh) | 2018-06-01 |
| EP3519948A2 (en) | 2019-08-07 |
| US20180095756A1 (en) | 2018-04-05 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| TWI742132B (zh) | 用以將多個資料元件載入到非緊縮資料暫存器的目的地儲存位置的處理器、方法、系統及指令 | |
| US10782969B2 (en) | Vector cache line write back processors, methods, systems, and instructions | |
| KR102829600B1 (ko) | 텐서 순열 엔진을 위한 장치 및 방법 | |
| CN108595348B (zh) | 无局部性提示的向量存储器访问处理器、方法、系统和指令 | |
| TWI743058B (zh) | 硬體處理器、用於融合指令之方法及非暫時性機器可讀媒體 | |
| US9842046B2 (en) | Processing memory access instructions that have duplicate memory indices | |
| TWI617978B (zh) | 用於向量索引載入和儲存之方法和設備 | |
| KR20190082079A (ko) | 원격 원자 연산들의 공간적 및 시간적 병합 | |
| TWI737651B (zh) | 用於加速圖形分析的處理器、方法及系統 | |
| CN107077329A (zh) | 用于通过无序硬件软件协同设计处理器中的栈同步指令来实现和维持判定值的栈的方法和设备 | |
| JP6696674B2 (ja) | 3次元モートン座標変換プロセッサ、方法、システム、及び命令 | |
| JP7626527B2 (ja) | グラフアプリケーション内の圧縮されたリストに効率的にアクセスするための間接参照のロード及びストアへのisaサポートのシステム及び方法 | |
| CN117546152A (zh) | 用于加速流送数据变换操作的电路和方法 | |
| JP2018500630A (ja) | 4次元モートン座標変換プロセッサ、方法、システム、及び命令 | |
| US10754782B1 (en) | Apparatuses, methods, and systems to accelerate store processing | |
| CN110554887A (zh) | 间接存储器提取器 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| MM4A | Annulment or lapse of patent due to non-payment of fees |