TWI738674B - 與快取控制操作有關的處理器、系統及非暫時性機器可讀媒體 - Google Patents
與快取控制操作有關的處理器、系統及非暫時性機器可讀媒體 Download PDFInfo
- Publication number
- TWI738674B TWI738674B TW105132739A TW105132739A TWI738674B TW I738674 B TWI738674 B TW I738674B TW 105132739 A TW105132739 A TW 105132739A TW 105132739 A TW105132739 A TW 105132739A TW I738674 B TWI738674 B TW I738674B
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- cache
- processor
- access request
- data
- Prior art date
Links
- 230000015654 memory Effects 0.000 claims abstract description 454
- 238000012545 processing Methods 0.000 claims description 76
- 238000000034 method Methods 0.000 claims description 38
- 230000004044 response Effects 0.000 claims description 8
- 238000000605 extraction Methods 0.000 claims description 7
- 238000003860 storage Methods 0.000 description 45
- 238000010586 diagram Methods 0.000 description 40
- 239000003795 chemical substances by application Substances 0.000 description 29
- 238000007667 floating Methods 0.000 description 26
- 238000005516 engineering process Methods 0.000 description 24
- 238000004891 communication Methods 0.000 description 22
- 239000000872 buffer Substances 0.000 description 16
- 230000006870 function Effects 0.000 description 16
- 230000007246 mechanism Effects 0.000 description 16
- 238000004088 simulation Methods 0.000 description 13
- 238000004519 manufacturing process Methods 0.000 description 12
- 230000002093 peripheral effect Effects 0.000 description 11
- 238000013461 design Methods 0.000 description 10
- 230000009977 dual effect Effects 0.000 description 10
- 238000001914 filtration Methods 0.000 description 9
- 230000003287 optical effect Effects 0.000 description 8
- 230000008901 benefit Effects 0.000 description 6
- 238000013500 data storage Methods 0.000 description 6
- 239000010432 diamond Substances 0.000 description 6
- 230000003068 static effect Effects 0.000 description 6
- 238000013519 translation Methods 0.000 description 6
- 230000001419 dependent effect Effects 0.000 description 5
- 229910003460 diamond Inorganic materials 0.000 description 5
- 238000009826 distribution Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 239000004065 semiconductor Substances 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 230000006835 compression Effects 0.000 description 4
- 238000007906 compression Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 4
- 238000010168 coupling process Methods 0.000 description 4
- 238000005859 coupling reaction Methods 0.000 description 4
- 239000004973 liquid crystal related substance Substances 0.000 description 4
- 230000033001 locomotion Effects 0.000 description 4
- 230000005291 magnetic effect Effects 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000002085 persistent effect Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 101100285899 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SSE2 gene Proteins 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 230000000052 comparative effect Effects 0.000 description 2
- 230000006837 decompression Effects 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 229910052754 neon Inorganic materials 0.000 description 2
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 101000912503 Homo sapiens Tyrosine-protein kinase Fgr Proteins 0.000 description 1
- 102000001332 SRC Human genes 0.000 description 1
- 108060006706 SRC Proteins 0.000 description 1
- 102100026150 Tyrosine-protein kinase Fgr Human genes 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 235000019580 granularity Nutrition 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 239000012782 phase change material Substances 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 230000008521 reorganization Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 235000019587 texture Nutrition 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/0875—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/30047—Prefetch instructions; cache control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
- G06F9/383—Operand prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/1021—Hit rate improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Executing Machine-Instructions (AREA)
Abstract
在一個實施例中,一種處理器包括:一提取邏輯,其用以提取指令;一解碼邏輯,其用以解碼該等指令;一快取記憶體;以及一控制邏輯,其用以接收一快取過濾器指令且回應於該快取過濾器指令使得僅一記憶體位址空間之一選定部分能夠有資格在該快取記憶體中快取。該快取過濾器指令可指示該記憶體位址空間之該選定部分。描述且主張其他實施例。
Description
發明領域
本發明係關於處理邏輯、微處理器及在由處理器或其他處理邏輯執行時執行邏輯、數學或其他函數運算之相關聯指令集架構的領域。
發明背景
快取記憶體係處理器及電腦系統中之常用組件。現代處理器可包括多個層級之快取記憶體。此等快取記憶體經調適以儲存近來使用及/或頻繁使用之資訊,以使得可避免在自系統儲存器階層(包括系統記憶體、大容量儲存器等)之另外部分獲得資料時引發的潛時。視在系統中執行之工作負荷之類型而定,快取記憶體使用可不改良效能。舉例而言,當應用程式之工作集超過快取記憶體之大小時,儲存於快取記憶體中之工作集之任何資料可能在其被再使用之前已由新資料收回。
在諸如串流存取流行之特定工作負荷情形
中,前進經過大量時間階躍的外部迴圈可不受益於快取記憶體之使用,此係因為對一或多個內部迴圈之串流資料存取使得資料在其用於外部迴圈之下一個迭代之前被收回,從而影響效能。
依據本發明之一實施例,係特地提出一種處理器,其包含:一提取邏輯,用以提取指令;一解碼邏輯,用以解碼該等指令;一快取記憶體;以及一控制邏輯,用以接收一快取過濾器指令且回應於該快取過濾器指令使得僅一記憶體位址空間之一選定部分能夠有資格在該快取記憶體中快取,該快取過濾器指令用以指示該記憶體位址空間之選定部分。
100、600、2000、2300:系統
102、200、500、610、615、770、780、1000、1215、2304:處理器
104:1級(L1)內部快取記憶體
106、145、164、208、210:暫存器檔案
108、142、162、212、214、216、218、220、222、224、462:執行單元
109、143:封裝指令集
110:處理器匯流排
112:圖形卡
114:加速圖形埠(AGP)互連件
116:系統邏輯晶片
118:高頻寬記憶體路徑
120、640、732、734、1140:記憶體
122:系統I/O/專屬集線器介面匯流排
124、728:資料儲存器
126:無線收發器
128:韌體集線器
130:I/O控制器集線器
134:網路控制器
140、160:資料處理系統
141:匯流排
144、165:解碼器
146:同步動態隨機存取記憶體(SDRAM)控制件
147:靜態隨機存取記憶體(SRAM)控制件
148:叢發快閃記憶體介面
149:個人電腦記憶卡國際協會(PCMCIA)/緊密快閃記憶
體(CF)卡控制件
150:液晶顯示器(LCD)控制件
151:直接記憶體存取(DMA)控制器
152:替代匯流排主控介面
153:I/O匯流排
154:I/O橋接器
155:通用非同步接收器/傳輸器(UART)
156:通用串列匯流排(USB)
157:藍芽無線UART
158:I/O擴充介面
159、170:處理核心
161:SIMD共處理器
163:指令集之指令
166:主處理器
167、504A、504N、506、572、574、1525、2145、2200:快取記憶體
168:輸入/輸出系統
169:無線介面
201:有序前端
202:快排程器
203:無序執行引擎
204:慢/一般排程器
206:簡單浮點排程器
211:執行區塊
226:指令預取器
228:指令解碼器
230:追蹤快取
232:微碼ROM
234:微操作佇列
310:封裝位元組
320:封裝字
330:封裝雙字
341:封裝半
342:封裝單
343:封裝雙
344:無正負號封裝位元組表示
345:有正負號封裝位元組表示
346:無正負號封裝字表示
347:有正負號封裝字表示
348:無正負號封裝雙字表示
349:有正負號封裝雙字表示
360:格式
361、362、363、371、372、373、378、381、382、383、384、387、388、389:欄位
364、365、374、375、385、390:源運算元識別符
366、376、386:目的地運算元識別符
370、380:操作編碼(作業碼)格式
400:處理器管線
402:提取階段
404:長度解碼階段
406:解碼階段
408:分配階段
410:重命名階段
412:排程階段
414:暫存器讀取/記憶體讀取階段
416:執行階段
418:寫回/記憶體寫入階段
422:例外狀況處置階段
424:提交階段
430:前端單元
432、1535:分支預測單元
434:指令快取單元
436:指令轉譯後援緩衝器(TLB)單元
438:指令提取單元
440:解碼單元
450:執行引擎單元
452:重命名/分配器單元
454:引退單元
456:排程器單元
458:實體暫存器檔案單元
460:執行叢集
464:記憶體存取單元
470:記憶體單元
472:資料TLB單元
474:資料快取單元
476:2階(L2)快取單元
490:處理器核心
502、502A、502N、530、1406、1407、21420、21421:核心
503:快取階層
508:基於環之互連單元
510:系統代理
512:顯示引擎
516:直接媒體介面(DMI)
540A:末階快取
552:記憶體控制單元
560:圖形模組
565:媒體引擎
570:前端
580:無序引擎
582:分配模組
584:資源排程器
586:資源
588:重排序緩衝器
590:模組
595:LLC
599:RAM
620:圖像記憶體控制器集線器(GMCH)
645、1724:顯示器
695:前側匯流排(FSB)
650:輸入/輸出(I/O)控制器集線器(ICH)
660:外部圖形裝置
670:周邊裝置
700:第二系統/多處理器系統
714、814:I/O裝置
716:第一匯流排
718:匯流排橋接器
722:鍵盤/滑鼠
724:音訊I/O
727:通訊裝置
730:指令/程式碼及資料
738:高效能圖形電路
739:高效能圖形介面
750:點對點互連件
776、778、786、788、794、798:點對點(P-P)介面
772、782、914:整合式記憶體控制器單元
790:晶片組
796、1214、20280、20281:介面
872、882:整合式記憶體及I/O控制邏輯
815:舊式I/O裝置
900:系統單晶片
902:互連單元
908:整合式圖形邏輯
910:應用程式處理器
912:系統代理單元
916:匯流排控制器單元
920:媒體處理器
924、1015:影像處理器
926:音訊處理器
928、1020:視訊處理器
930:靜態隨機存取記憶體(SRAM)單元
932:直接記憶體存取(DMA)單元
940:顯示單元
1005、1010:GPU
1025:USB控制器
1030:UART控制器
1035:SPI/SDIO控制器
1040:顯示裝置
1045:記憶體介面控制器
1050:MIPI控制器
1055、1445:快閃記憶體控制器
1060:雙資料速率(DDR)控制器
1065:安全引擎
1070:I2S/I2C控制器
1110:硬體或軟體模型
1120:模擬軟體
1130:儲存媒體
1150:有線連接
1160:無線連接
1205:程式
1210:仿真邏輯
1218:PCIe橋接器
1220:記憶體控制器
1222:一致性邏輯
1302:高階語言
1304:X86編譯器
1306:x86二進位碼
1308:替代指令集編譯器
1310:替代指令集二進位碼
1312:指令轉換器
1314:不具至少一個x86指令集核心之處理器
1316:具有至少一個x86指令集核心之處理器
1408:L2快取控制
1409、1520:匯流排介面單元
1410:L2快取記憶體
1410:互連件
1415:圖形處理單元
1420:視訊程式碼
1425:液晶顯示器(LCD)視訊介面
1430:用戶介面模組(SIM)介面
1435:啟動ROM介面
1440:同步動態隨機存取記憶體(SDRAM)控制器
1450:串列周邊介面(SPI)主控單元
1470:藍芽模組
1475:高速3G數據機
1480:全球定位系統模組
1485:無線模組
1490:行動產業處理器介面(MIPI)
1495:高清晰度多媒體介面(HDMI)
1500:指令集架構
1510:單元
1511:中斷控制及分配單元
1512:窺探控制單元
1514:窺探過濾器
1515:計時器
1516:AC埠
1530:指令預提取階段
1530:載入儲存單元
1532:指令快取記憶體
1536:全域歷史
1537:目標位址
1538:傳回堆疊
1540:記憶體系統
1543:預提取器
1544:記憶體管理單元
1545:轉譯後援緩衝器
1550:雙指令解碼階段
1555:暫存器重命名階段
1556:暫存器集區
1557:分支
1560:發出階段
1561:指令佇列
1564、1565:執行實體
1566:乘法單元
1567:ALU
1568:浮點單元
1569:給定位址
1570:寫回階段
1575:追蹤單元
1582:引退指標
1600:執行管線
1700:電子裝置
1715:低功率雙資料速率(LPDDR)記憶體單元
1720:磁碟機
1722:BIOS/韌體/快閃記憶體
1725:觸控螢幕
1730:觸控板
1735:快速晶片組
1736:鍵盤
1737:風扇
1738:受信任平台模組
1739、1746:熱感測器
1740:感測器集線器
1741:加速度計
1742:環境光感測器
1743:羅盤
1744:迴轉儀
1745:近場通訊單元
1750:無線區域網路(WLAN)單元
1752:藍芽單元
1754:攝影機
1756:無線廣域網路(WWAN)單元
1757:SIM卡
1760:數位信號處理器
1763:揚聲器
1764:音訊單元
1765:麥克風
1800、1900:方法
1810、1820、1830、1840、1850、1910、1920、1930、1940、1950、1960、1970:區塊
2020:系統單晶片(SoC)或其他處理器
2022:半導體晶粒
20240、20241:整合式記憶體控制器
20250至2025n:內部封裝記憶體
20260至2026n:封裝上輸入/輸出(OPIO)電路
20301、20302:平台記憶體
2140:塊
21440、21441:向量處理單元
2148:集線器
2210:快取控制器
2212:控制暫存器
2214:控制邏輯
2216:算術邏輯單元
2230:標籤陣列
2240:資料陣列
2342:第一記憶體層/系統記憶體
2350:第二記憶體層/較慢系統記憶體組
圖1A為根據本發明之實施例的例示性電腦系統之方塊圖,該電腦系統經形成有可包括用以執行指令之執行單元的處理器。
圖1B說明根據本發明之實施例的資料處理系統。
圖1C說明根據本發明之實施例的用以執行操作之資料處理系統之另一實施例。
圖2為根據本發明之實施例的用於可包括用以執行指令之邏輯電路之處理器的微架構之方塊圖。
圖3A說明根據本發明之實施例的多媒體暫存器中之各種封裝資料類型表示。
圖3B說明根據本發明之實施例的可能暫存器內資料儲存格式。
圖3C說明根據本發明之實施例的多媒體暫存器中之各種有正負號及無正負號的封裝資料類型表示。
圖3D說明操作編碼格式之一實施例。
圖3E說明根據本發明之實施例的具有四十或更多位元之另一可能操作編碼格式。
圖3F說明根據本發明之實施例的又一可能操作編碼格式。
圖4A為根據本發明之實施例的說明有序管線及暫存器重命名級、無序發出/執行管線之方塊圖。
圖4B為根據本發明之實施例的說明將包括於處理器中的有序架構核心及暫存器重命名邏輯(無序發出/執行邏輯)之方塊圖。
圖5A為根據本發明之實施例的處理器之方塊圖。
圖5B為根據本發明之實施例的核心之一實例實施之方塊圖。
圖6為根據本發明之實施例的系統之方塊圖。
圖7為根據本發明之實施例的第二系統之方塊圖。
圖8為根據本發明之實施例的第三系統之方塊圖。
圖9為根據本發明之實施例的系統單晶片之方塊圖。
圖10說明根據本發明之實施例的含有中央處理單元及圖形處理單元之處理器,其可執行至少一個指令。
圖11係說明根據本發明之實施例的IP核心之開發之方塊圖。
圖12說明根據本發明之實施例的第一類型之指令可如何由不同類型之處理器進行仿真。
圖13說明根據本發明之實施例的對比軟體指令轉換器之使用之方塊圖,該軟體指令轉換器用以將源指令集中之二進位指令轉換成目標指令集中之二進位指令。
圖14為根據本發明之實施例的處理器之指令集架構之方塊圖。
圖15為根據本發明之實施例的處理器之指令集架構之更詳細方塊圖。
圖16為根據本發明之實施例的用於處理器之指令集架構之執行管線之方塊圖。
圖17為根據本發明之實施例的用於利用處理器之電子裝置之方塊圖。
圖18係根據本發明之一實施例的方法之流程圖。
圖19係根據本發明之另一實施例的方法之
方塊圖。
圖20係根據本發明之一實施例的系統之一部分之方塊圖。
圖21係根據一實施例之代表性方塊。
圖22係根據本發明之一實施例的快取記憶體之方塊圖。
圖23係根據一實施例的系統之方塊圖。
較佳實施例之詳細說明
以下描述描述用於快取待由處理器、虛擬處理器、套件、電腦系統或其他處理設備執行之過濾操作的指令及處理邏輯。在以下描述中,闡述諸如處理邏輯、處理器類型、微架構條件、事件、啟用機制及其類似物之大量特定細節,以便提供對本發明之實施例之更透徹理解。然而,熟習此項技術者應瞭解,可在無此等特定細節之情況下實踐實施例。另外,未詳細展示一些熟知結構、電路及其類似者以避免不必要地混淆本發明之實施例。
在各種實施例中,可提供指令集架構(instruction set architecture,ISA)之指令以控制包括於處理器中與處理器相關聯之一或多個快取記憶體之組配,以使得僅有限量之資料有資格儲存於快取記憶體中。更具體言之,實施例提供過濾技術以使得僅記憶體位址空間之特定部分能夠在給定快取記憶體中快取。使用此指令,快取記憶體可經組配以使得僅應用程式之工作集(位址空間)
之一子集可被快取。工作集之剩餘部分並不儲存於給定快取記憶體中,且因而,對非快取位址空間之記憶體存取請求係自記憶體階層之另外部分(諸如可使用動態隨機存取記憶體(DRAM)來實施之系統記憶體)存取。
使用本發明之一實施例,若給定應用程式之工作集之已快取子集小於快取記憶體之大小,則此子集在應用程式之整個執行中將持續。在可在給定伺服器上執行長時段之高效能計算(HPC)應用程式之情況下此工作集可持續以改良效能。
注意,在將快取過濾用於作為軟體組配快取之高頻寬記憶體側快取的特定實施例中,實現易於規劃。亦即,使用一實施例,程式設計師不必明確地分配此記憶體區域中之結構,從而避免大量結構及/或原始程式碼將需要之大量的程式設計師工作及修改。因而,實施例實現記憶體側快取之自動使用而對源程式或二進位碼無任何改變。
假定記憶體側快取或其他快取並不足夠大以容納具有很大工作集之串流HPC應用程式之情形。舉例而言,假定16GB記憶體側快取及下表1中所示的以下形式之計算。
在不使用本發明之一實施例的情況下,表1中所示之程式碼之執行導致16GB記憶體側快取中之所有遺漏。情況如此,此係因為在每一時間階躍中,40GB之資料被串流傳輸至快取記憶體中,從而導致每個串流存取產生快取遺漏。再此外,應理解,在特定平台設計中,預提取可能不會有用,此係因為記憶體階層之另外部分(諸如用DRAM實施之系統記憶體)具有與記憶體側快取之頻寬相比的較低頻寬。
請注意,在表1中,外部迴圈經歷大量時間階躍。在每一時間階躍中,大量資料(大於記憶體側快取之大小)串流傳輸進入。在此情況下,記憶體側快取並不有效,因為幾乎每次存取將為快取遺漏。若在時間階躍T中使資料項目X到達快取記憶體,則當在下一個時間階躍T+1中再次存取X時,歸因於40GB之新資料將同時被存取之事實,X已經被其他資料替代。
因此,在根據以上實例組配之平台中,如以上表1中的工作負荷之執行可導致此記憶體側快取中之所有遺漏(即使利用預提取)。給定此實例平台之參數,至多40%(16/40)之存取可使用來自記憶體側快取之快取行來服務。在此實例中使用本發明之一實施例來如本文中所描述地用快取過濾指令組配一或多個快取記憶體可產生40%之效能改良。
使用根據一實施例之指令,過濾出可分配在系統之一或多個特定快取記憶體中的可定址記憶體位址空
間之部分。藉由使位址空間之某些部分(例如,快取行)不可用於快取分配,可保留工作集之一子集以用於應用程式之整體執行。舉例而言,對於表1中給出之實例,若每隔五個快取行將被啟用以用於快取記憶體儲存(例如,藉由僅允許5*64可除盡的位址(假定64B快取行大小)),則可保留快取行之一子集以用於整體執行。
在一個實施例中,ISA之快取過濾器指令可呈如下形式:FilterBy BitMask
其中BitMask係N位元(例如,8位元)遮罩,其用以指示記憶體存取請求之位址中的哪些位元將為預定值(例如,1)以供記憶體存取請求被認為在給定快取記憶體階層中之快取(諸如記憶體側快取)。若給定記憶體位址在藉由儲存於BitMask中之對應值指示之彼等位元位置中之任一者中具有預定值(例如,1),則該給定記憶體位址有資格進行快取。否則,該記憶體位址不可用於儲存於快取記憶體層級中。請注意,在一些情況下,位元遮罩可編碼於指令之即時欄位中。
儘管上文關於特定指令編碼進行展示,但應理解,本發明之範疇就此而言不受限制,且在其他實施例中,多種不同指令編碼可用以呈現快取過濾器指令。此外,如下文進一步描述,額外欄位可包括於此指令中以提供額外編碼資訊。
下文在表2及表3中描述快取過濾器指令配
置之若干實例,其中可控制量之記憶體位址空間(例如,整個可定址記憶體位址空間之給定百分比)經組配為有資格分配在快取記憶體中。
在表2之實例中,忽略最後6個最低有效位元(LSB),此係因為該等位元指示快取行內之位置。下一個LSB為1,其指示一位址應將此位元設定為1以使得該位址在快取中被認為用於快取之候選者。關於表2中所示之實例,此指令之執行導致50%之位址有資格用於快取。
表3表示用於如下形式(FilterBy 0xc0)之第二快取過濾器指令之位址位元。現參看表3,展示了根據一實施例的快取過濾器指令之另一實例。
使用表3之此遮罩(1100 0000)允許每隔一行(0100 0000)、兩行(1100 0000)及三行(1000 0000)被認為用於快取。此導致75%之位址被快取。
應理解,在一些實施中,如本文中所描述之快取過濾器指令可呈各種形式,且可包括可選引數。舉例而言,在一些情況下,可提供額外以作為指令編碼之部分,從而實現如本文中所描述的對一或多個快取記憶體之額外控制及組配。
更特定而言,在一個實施例中,可提供過濾器值欄位,在一實施例中,該過濾器值欄位可為1位元欄位,其用以指示在設定後,對應於過濾器遮罩之給定位址位元將為零值(而非1),從而被認為用於快取。在此或另一實施例中,可提供快取層級欄位,在一實施例中,該快取層級欄位可為M位元欄位(例如,2位元欄位),其用以指示此過濾將應用至的快取層級(例如,處理器之內部快取記憶體、記憶體側快取記憶體及/或組配為用於包括大型持續記憶體儲存器之兩層級記憶體實施之快取記憶體的外部DRAM之一或多個層級,如本文中進一步描述)。
在此等或其他實施例中,快取過濾器指令可進一步包括遮罩大小欄位,其可為用以指示可經組配以在判定快取儲存合格性時使用的位址位元之數目的N位元欄位(例如,3位元欄位)。舉例而言,在表3中,假定組配2個位元(展示於表3之中間行中)。為了使3個位元能夠被組配(例如,為了提供遮罩011),可在此遮罩大小欄位中規定位元之數目。請注意,藉由提供3個位元供遮罩使用,如本文中所描述之操作提供階躍的12.5%之增加(例如,替代表3中之25%)。替代地,可組配之位元之數目可為給定架
構之性質。
儘管本發明之範疇就此而言不受限制,但在一些情況下,ISA之快取過濾器指令可作為環0特權指令(以供OS或其他監督器軟體執行)來提供。在此情況下,為了組配快取記憶體以執行本文中所描述之過濾,此指令可在驅動程式(或setuid公用程式)內執行。為實現針對應用程式(諸如,將在生產應用程式將執行數小時/數天之HPC系統上執行之HPC應用程式)對快取記憶體組配,可執行此特權指令以在初始化及執行此應用程式之前對快取組配。在一些情況下,為提供一致性,在執行如本文中所描述之快取過濾器指令之前,可首先清空所牽涉之快取記憶體,以允許重組配。
在一實施例中,當快取過濾器指令由快取控制器之邏輯控制執行時,可將包括於該指令中與該指令相關聯之遮罩值寫入至對應快取記憶體之控制暫存器。在一實施例中,僅在指令之遮罩值部分(其可為指令之資料部分)中設定為一值的位元係在此控制暫存器中(在對應位元位置)設定。將此暫存器中之所有其他位元設定為零(此指示不關心)。
接著,在一般程式執行中之記憶體操作期間,在於快取記憶體中執行記憶體存取請求(例如,藉由在(負載/儲存器上之)快取記憶體中執行查找操作)之前,將負載/儲存器位址之對應位元(例如,表3實例中之位元6至7)與控制暫存器中之遮罩值進行邏輯及。若此邏輯運算之
所得值為全零(所有位元為零),則不考慮將記憶體存取請求及對應快取行用於在彼快取中進行快取。因而,避免任何此查找之執行延遲,且記憶體存取請求可直接發送至記憶體階層之另一部分。
請注意,當組配快取記憶體以使用記憶體位址之特定位元作為索引位元時,在控制暫存器中具有邏輯1的過濾器遮罩之任何位元位置並不用作快取索引之部分。實情為,此等位址位元可作為快取標籤之部分而包括。相反地,使用記憶體位址之LSB(其在一些快取記憶體實施中提供快取標籤)作為快取索引之部分。因此,快取標籤及快取索引之長度不改變。然而,用於快取標籤或快取索引之位元可改變。
請注意,基於如本文中所描述的快取過濾器指令之編碼,視需要,實施例可應用於處理器內之多種不同快取層級(諸如LLC/L2/L3)。在一些情況下,為了限制遮罩中之位元之數目,可禁止最低有效位元(例如,對於快取行內之給定位元組位置,表2及表3之6個LSB)成為位元遮罩之部分。請進一步注意,使用少量位元,此位元遮罩可提供寬靈活性。舉例而言,利用少至3個位元,可提供根據快取大小之12.5%(1/23)之階躍的可組配性。遮罩位元之數目可取決於架構或可規定為指令之運算元。
請理解,在提供基於目錄之快取一致性協定之實施例中,控制哪些快取行被被提供至哪些快取代理的分散式目錄部分(例如,快取本籍代理)可考察相同位元遮
罩,以避免首先將無資格位址發送至記憶體側快取,使得記憶體側快取不接收對無資格位址之請求。再此外,此目錄操作亦可避免發送快取一致性訊息(諸如對可定址記憶體空間之此等非快取部分之窺探請求),從而進一步改良記憶體定址之效率,此係因為關於無資格位址之請求可無需快取查找及/或一致性操作而直接發送至DRAM。
儘管以下實施例係參考處理器來描述,但其他實施例適用於其他類型之積體電路及邏輯裝置。本發明之實施例的類似技術及教示可應用於可受益於較高管線輸送量及經改良效能的其他類型之電路或半導體裝置。本發明之實施例之教示適用於執行資料調處之任何處理器或機器。然而,該等實施例不限於執行512位元、256位元、128位元、64位元、32位元或16位元資料操作之處理器或機器,且可應用於其中可執行對資料之調處或管理的任何處理器及機器。另外,以下描述提供實例,且隨附圖式出於說明目的而展示各種實例。然而,不應在限制意義上解釋此等實例,此係因為該等實例僅意欲提供本發明之實施例的實例而非提供本發明之實施例的所有可能實施之詳盡清單。
儘管以下實例描述執行單元及邏輯電路之情況下的指令處置及分佈,但本發明之其他實施例可藉助於儲存於機器可讀有形媒體上之資料或指令而實現,資料或指令在由機器執行時使機器執行與揭露內容之至少一個實施例一致的功能。在一個實施例中,與本發明之實施例
相關聯的功能體現於機器可執行指令中。該等指令可用以使藉由該等指令規劃之通用或專用處理器執行本發明之步驟。本發明之實施例可提供為電腦程式產品或軟體,其可包括機器或電腦可讀媒體,該媒體於其上儲存有指令,該等指令可用以規劃電腦(或其他電子裝置)以執行根據本發明之實施例的一或多個操作。此外,本發明之實施例的步驟可藉由含有用於執行該等步驟之固定功能邏輯的特定硬體組件或藉由規劃電腦組件與固定功能硬體組件之任何組合來執行。
用以將邏輯規劃以執行本發明之實施例的指令可儲存於系統中之記憶體內,諸如DRAM、快取、快閃記憶體或其他儲存器。此外,該等指令可經由網路或藉助於其他電腦可讀媒體來分佈。因此,機器可讀媒體可包括用於以可由機器(例如,電腦)讀取之形式儲存或傳輸資訊的任何機構,但不限於軟碟、光碟、緊密光碟、唯讀記憶體(CD-ROM)及磁光碟、唯讀記憶體(ROM)、隨機存取記憶體(RAM)、可抹除可規劃唯讀記憶體(EPROM)、電可抹除可規劃唯讀記憶體(EEPROM)、磁卡或光學卡、快閃記憶體或用於資訊在網際網路上經由電、光學、聲學或其他形式之傳播信號(例如,載波、紅外線信號、數位信號等)之傳輸中的有形機器可讀儲存器。因此,電腦可讀媒體可包括適合於以可由機器(例如,電腦)讀取之形式儲存或傳輸電子指令或資訊的任何類型之有形機器可讀媒體。
設計可經歷各種階段,自創建至模擬至製
造。表示設計之資料可用多種方式來表示設計。首先,如在模擬中有用的,可使用硬體描述語言或另一功能描述語言來表示硬體。另外,可在設計製程之一些階段生成具有邏輯及/或電晶體閘之電路層級模型。此外,在一些階段,設計可達到表示各種裝置在硬體模型中之實體置放的資料之層級。在使用某些半導體製造技術之情況下,表示硬體模型之資料可為指定各種特徵在用於用以產生積體電路之遮罩的不同遮罩層上之存在或不存在的資料。在設計之任何表示中,資料可儲存於任何形式之機器可讀媒體中。記憶體或磁性或光學儲存器(諸如光碟)可為用以儲存資訊之機器可讀媒體,該資訊經由經調變或以其他方式產生以傳輸此資訊之光波或電波傳輸。當傳輸指示或攜載程式碼或設計之電載波時,就執行電信號之複製、緩衝或重新傳輸而言,產生新副本。因此,通訊提供者或網路提供者可至少臨時地將體現本發明之實施例之技術的物件(諸如,編碼成載波之資訊)儲存於有形機器可讀媒體上。
在現代處理器中,數個不同執行單元可用以處理及執行多種程式碼及指令。某些指令可更快地完成,而其他指令可耗費數個時脈循環才完成。指令之輸送量愈快,則處理器之整體效能愈好。因此,使許多指令儘可能快地執行將為有利的。然而,可存在具有較大複雜度且就執行時間及處理器資源而言需要更多的特定指令,諸如浮點指令、載入/儲存操作、資料移動等。
由於較多電腦系統用於網際網路、文字及多
媒體應用程式中,因此額外處理器支援已隨時間推移而被引入。在一個實施例中,指令集可與一或多個電腦架構相關聯,該一或多個電腦架構包括資料類型、指令、暫存器架構、定址模式、記憶體架構、中斷及例外狀況處置以及外部輸入及輸出(I/O)。
在一個實施例中,指令集架構(ISA)可藉由包括用以實施一或多個指令集之處理器邏輯及電路的一或多個微架構來實施。因此,具有不同微架構之處理器可共用共同指令集之至少一部分。舉例而言,Intel® Pentium 4處理器、Intel® CoreTM處理器及來自Advanced Micro Devices,Inc.(Sunnyvale,CA)之處理器實施x86指令集之幾乎相同的版本(其中已隨較新版本添加一些擴充),但具有不同內部設計。類似地,由其他處理器開發公司(諸如,ARM Holdings,Ltd.)設計之處理器、MIPS或其使用權或採用者可共用至少一部分共同指令集,但可包括不同處理器設計。舉例而言,可藉由使用新技術或熟知技術之不同微架構以不同方式實施ISA之相同暫存器架構,包括專用實體暫存器、使用暫存器重命名機制(例如,使用暫存器別名表(RAT)、重排序緩衝器(ROB)及引退暫存器檔案的一或多個動態分配之實體暫存器。在一個實施例中,暫存器可包括一或多個暫存器、暫存器架構、暫存器檔案,或可為或可不為可由軟體程式設計師定址之其他暫存器集合。
指令可包括一或多個指令格式。在一個實施
例中,指令格式可指示用以規定其中待執行之操作及將被執行操作之運算元的各種欄位(位元之數目、位元之位置等)。在又一實施例中,某些指令格式可另外由指令範本(或子格式)定義。舉例而言,給定指令格式之指令範本可經定義而具有指令格式欄位之不同子集及/或經定義而具有不同地解譯之給定欄位。在一個實施例中,使用指令格式(且若經定義,則以彼指令格式之指令範本中的給定者)表達指令,且該指令規定或指示運算及運算元(該運算將對該等運算元進行運算)。
科學、金融、自動向量化通用、RMS(辨識、採擷及合成)以及視覺及多媒體應用(例如,2D/3D圖形、影像處理、視訊壓縮/解壓縮、語音辨識演算法及音訊操縱)可需要對大量資料項目執行同一運算。在一個實施例中,單一指令多重資料(SIMD)係指使處理器對多個資料元素執行操作的類型之指令。SIMD技術可用於可在邏輯上將暫存器中之位元分成數個固定大小或可變大小之資料元素的處理器中,該等資料元素中之每一者表示單獨值。舉例而言,在一個實施例中,64位元暫存器中之位元可組織為含有四個單獨16位元資料元素之源運算元,該等資料元素中之每一者表示單獨16位元值。此類型之資料可被稱作「封裝」資料類型或「向量」資料類型,且此資料類型之運算元被稱作封裝資料運算元或向量運算元。在一個實施例中,封裝資料項目或向量可為儲存於單一暫存器內之一連串封裝資料元素,且封裝資料運算元或向量運算元可為
SIMD指令(或「封裝資料指令」或「向量指令」)之源或目的地運算元。在一個實施例中,SIMD指令規定將對兩個源向量運算元執行的單一向量運算以產生具有相同或不同大小、具有相同或不同數目個資料元素且呈相同或不同資料元素次序之目的地向量運算元(亦被稱作結果向量運算元)。
諸如由以下處理器使用之技術的SIMD技術已實現應用程式效能之顯著改良:Intel® CoreTM處理器,其具有包括x86、MMXTM、串流SIMD擴充(SSE)、SSE2、SSE3、SSE4.1及SSE4.2指令之指令集;ARM處理器,諸如ARM Cortex®系列處理器,其具有包括向量浮點(VFP)及/或NEON指令之指令集;及MIPS處理器,諸如由中國科學院之計算技術研究所開發之Loongson系列處理器(CoreTM及MMXTM為Intel Corporation(Santa Clara,Calif.)之註冊商標或商標)。
在一個實施例中,目的地及源暫存器/資料可為表示對應資料或操作之來源及目的地。在一些實施例中,其可由暫存器、記憶體或具有與所描繪之彼等名稱或功能不同的名稱或功能的其他儲存區域實施。舉例而言,在一個實施例中,「DEST1」可為臨時儲存暫存器或其他儲存區域,而「SRC1」及「SRC2」可為第一及第二源儲存暫存器或其他儲存器區域,等等。在其他實施例中,SRC及DEST儲存區域中之兩者或多於兩者可對應於同一儲存區域(例如,SIMD暫存器)內之不同資料儲存元件。在一個
實施例中,源暫存器中之一者亦可藉由(例如)將對第一及第二源資料執行之運算之結果寫回至充當目的地暫存器之兩個源暫存器中之一者來充當目的地暫存器。
圖1A為根據本發明之實施例的例示性電腦系統之方塊圖,該電腦系統經形成有可包括用以執行指令之執行單元的處理器。根據本發明,諸如在本文中所描述之實施例中,系統100包括組件,諸如使用執行單元之處理器102,該等執行單元包括用以執行用於處理資料之演算法的邏輯。系統100可表示基於可購自Intel Corporation(Santa Clara,California)的以下各者之處理系統:PENTIUMTM III、PENTIUMTM 4、XeonTM、ItaniumTM、XScaleTM及/或StrongARMTM微處理器,但亦可使用其他系統(包括具有其他微處理器、工程化工作站、機上盒及類似物之PC)。在一個實施例中,樣本系統100可執行可購自Microsoft公司(Redmond,Washington)之WINDOWStm作業系統的版本,但亦可使用其他作用系統(例如,UNIX及Linux)、嵌入式軟體及/或圖形使用者介面。因此,本發明之實施例不限於硬體電路與軟體之任何特定組合。
實施例不限於電腦系統。本發明之實施例可用於諸如手持型裝置之其他裝置及嵌入式應用程式中。手持型裝置之一些實例包括蜂巢式電話、網際網路協定裝置、數位攝影機、個人數位助理(PDA)及手持型PC。根據至少一個實施例,嵌入式應用程式可包括微控制器、數位
信號處理器(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中之封裝資料來執行由許多多媒體應用程式使用之操作。因此,藉由將處理器之資料匯流排的全寬度用於對封裝資料執行操作,可使許多多媒體應用程式加速且更有效地執行。此可消除對跨越處理器之資料匯流排傳送較小資料單元以同時對一個資料元素執行一或多個操作的需要。
亦可在微控制器、嵌入式處理器、圖形裝置、DSP及其他類型之邏輯電路中使用執行單元108之實施例。系統100可包含記憶體120。記憶體120可被實施為動態隨機存取記憶體(DRAM)裝置、靜態隨機存取記憶體(SRAM)裝置、快閃記憶體裝置或其他記憶體裝置。記憶體120可儲存指令及/或由可由處理器102執行之資料信號表示的資料。
系統邏輯晶片116可耦接至處理器匯流排110及記憶體120。系統邏輯晶片116可包括記憶體控制器集線器(MCH)。處理器102可經由處理器匯流排110與MCH 116通訊。MCH 116可提供至記憶體120之高頻寬記
憶體路徑118以用於指令及資料儲存且用於圖形命令、資料及紋理之儲存。MCH 116可在處理器102、記憶體120及系統100中的其他組件之間引導資料信號且在處理器匯流排110、記憶體120及系統I/O 122之間橋接資料信號。在一些實施例中,系統邏輯晶片116可提供用於耦接至圖形控制器112之圖形埠。MCH 116可經由記憶體介面118耦接至記憶體120。圖形卡112可經由加速圖形埠(AGP)互連114而耦接至MCH 116。
系統100可使用專屬集線器介面匯流排122將MCH 116耦接至I/O控制器集線器(ICH)130。在一個實施例中,ICH 130可經由區域I/O匯流排來提供至某些I/O裝置之直接連接。區域I/O匯流排可包括用於將周邊裝置連接至記憶體120、晶片組及處理器102之高速I/O匯流排。實例可包括音訊控制器、韌體集線器(快閃BIOS)128、無線收發器126、資料儲存器124、含有使用者輸入及鍵盤介面之舊式I/O控制器、諸如通用串列匯流排(USB)之串列擴充埠,及網路控制器134。資料儲存裝置124可包含硬碟機、軟碟機、CD-ROM裝置、快閃記憶體裝置或其他大容量儲存裝置。
對於系統之另一實施例,根據一個實施例之指令可供系統單晶片使用。系統單晶片之一個實施例包含處理器及記憶體。用於一個此系統之記憶體可包括快閃記憶體。快閃記憶體可與處理器及其他系統組件位於同一晶粒上。另外,諸如記憶體控制器或圖形控制器之其他邏輯
區塊亦可位於系統單晶片上。
圖1B說明實施本發明之實施例之原理的資料處理系統140。熟習此項技術者將容易理解,在不脫離本發明之實施例之範疇的情況下,本文中所描述之實施例可供替代處理系統使用。
根據一個實施例,電腦系統140包含用於執行至少一個指令之處理核心159。在一個實施例中,處理核心159表示具有任何類型之架構的處理單元,架構包括(但不限於)CISC、RISC或VLIW類型架構。處理核心159亦可適合於用一或多種製程技術來製造,且藉由以足夠細節在機器可讀媒體上表示,可適合於促進該製造。
處理核心159包含執行單元142、一組暫存器檔案145及解碼器144。處理核心159亦可包括額外電路(未圖示),額外電路對於理解本發明之實施例而言可並非必要的。執行單元142可執行由處理核心159接收之指令。除執行典型處理器指令外,執行單元142亦可執行用於對封裝資料格式執行操作的封裝指令集143中之指令。封裝指令集143可包括用於執行本發明之實施例之指令及其他封裝指令。執行單元142可藉由內部匯流排而耦接至暫存器檔案145。暫存器檔案145可表示處理核心159上的用於儲存資訊(包括資料)之儲存區域。如先前所提及,應理解,儲存區域可儲存可能非關鍵之封裝資料。執行單元142可耦接至解碼器144。解碼器144可將由處理核心159接收之指令解碼成控制信號及/或微碼入口點。回應於此等控制信號
及/或微碼入口點,執行單元142執行適當操作。在一個實施例中,解碼器可解譯指令之作業碼,其將指示應對指令內所指示之對應資料執行何操作。
處理核心159可與匯流排141耦接以用於與各種其他系統裝置通訊,該等系統裝置可包括(但不限於)例如同步動態隨機存取記憶體(SDRAM)控制件146、靜態隨機存取記憶體(SRAM)控制件147、叢發快閃記憶體介面148、個人電腦記憶卡國際協會(PCMCIA)/緊密快閃記憶體(CF)卡控制件149、液晶顯示器(LCD)控制件150、直接記憶體存取(DMA)控制器151及替代匯流排主控介面152。在一個實施例中,資料處理系統140亦可包含用於經由I/O匯流排153與各種I/O裝置通訊之I/O橋接器154。此等I/O裝置可包括(但不限於)例如通用非同步接收器/傳輸器(UART)155、通用串列匯流排(USB)156、藍芽無線UART 157及I/O擴充介面158。
資料處理系統140之一個實施例提供行動、網路及/或無線通訊,及可執行包括文字串比較操作之SIMD操作之處理核心159。處理核心159可藉由以下各者規劃:各種音訊、視訊、成像及通訊演算法,包括離散變換,諸如沃爾什-哈達瑪(Walsh-Hadamard)變換、快速傅立葉變換(FFT)、離散餘弦變換(DCT)及其各別反變換;壓縮/解壓縮技術,諸如色彩空間變換、視訊編碼運動估計或視訊解碼運動補償;及調變/解調變(數據機)功能,諸如脈碼調變(PCM)。
圖1C說明根據本發明之實施例的用以執行操作之資料處理系統之另一實施例。在一個實施例中,資料處理系統160可包括主處理器166、SIMD共處理器161、快取記憶體167及輸入/輸出系統168。輸入/輸出系統168可視情況耦接至無線介面169。SIMD共處理器161可執行包括根據一個實施例之指令之操作。在一個實施例中,處理核心170可適合於用一或多種製程技術來製造,且藉由足夠詳細地在機器可讀媒體上表示,可適合於促進包括處理核心170之資料處理系統160的全部或部分之製造。
在一個實施例中,SIMD共處理器161包含執行單元162及一組暫存器檔案164。主處理器165之一個實施例包含解碼器165,其用以辨識包括根據一個實施例之指令的指令集163之指令以供由執行單元162執行。在其他實施例中,SIMD共處理器161亦包含解碼器165B之至少部分以解碼指令集163之指令。處理核心170亦可包括額外電路(未圖示),額外電路對於理解本發明之實施例而言可並非必要的。
在操作中,主處理器166執行資料處理指令之串流,該等資料處理指令控制一般類型之資料處理操作,包括與快取記憶體167及輸入/輸出系統168之互動。在資料處理指令之串流內嵌入了SIMD共處理器指令。主處理器166之解碼器165將此等SIMD共處理器指令辨識為應由所附接SIMD共處理器161執行之類型。相應地,主處
理器166在共處理器匯流排166上發出此等SIMD共處理器指令(或表示SIMD共處理器指令之控制信號)。此等指令可由任何所附接SIMD共處理器自共處理器匯流排166接收。在此情況下,SIMD共處理器161可接受並執行意欲用於其的任何接收之SIMD共處理器指令。
可經由無線介面169接收資料以供由SIMD共處理器指令進行處理。對於一個實例,可按數位信號之形式來接收語音通訊,數位信號可由SIMD共處理器指令處理以再生表示語音通訊之數位音訊樣本。對於另一實例,可按數位位元串流之形式接收壓縮音訊及/或視訊,數位位元串流可由SIMD共處理器指令處理以再生數位音訊樣本及/或運動視訊圖框。在處理核心170之一個實施例中,主處理器166及SIMD共處理器161可整合至單一處理核心170中,該單一處理核心包含執行單元162、一組暫存器檔案164及用以辨識包括根據一個實施例之指令的指令集163之指令的解碼器165。
圖2為根據本發明之實施例的用於可包括用以執行指令之邏輯電路之處理器200的微架構之方塊圖。在一些實施例中,可實施根據一個實施例之指令,以對具有位元組、字、雙字、四倍字等之大小以及資料類型(諸如單精度及雙精度整數及浮點資料類型)的資料元素進行操作。在一個實施例中,有序前端201可處理器200之一部分(其可提取待執行之指令)且使該等指令準備好稍後在處理器管線中使用。前端201可包括若干單元。在一個實施例
中,指令預取器226自記憶體提取指令且將該等指令饋送至隨後解碼或解譯該等指令之指令解碼器228。舉例而言,在一個實施例中,解碼器將所接收指令解碼成機器可執行之一或多個操作,其被稱為「微指令」或「微操作(micro-operation)」(亦稱為微操作(micro op)或微操作(uop))。在其他實施例中,解碼器將指令剖析成作業碼及可由微架構使用以執行根據一個實施例之操作的對應資料及控制欄位。在一個實施例中,追蹤快取230可將經解碼微操作組譯成微操作234中之程式有序序列或追蹤。當追蹤快取230遇到複雜指令時,微碼ROM 232提供完成操作所需之微操作。
一些指令可轉換成單一微操作,而其他指令需要若干微操作來完成全部操作。在一個實施例中,若完成一指令需要多於四個微操作,則解碼器228可存取微碼ROM 232以執行該指令。在一個實施例中,可在指令解碼器228將指令解碼成少數微操作以供處理。在另一實施例中,若完成操作需要數個微操作,則可將指令儲存於微碼ROM 232內。追蹤快取230參考入口點可規劃邏輯陣列(PLA)以判定用於自微碼ROM 232讀取微碼序列以完成根據一個實施例之一或多個指令的正確微指令指標。在微碼ROM 232結束對用於指令之微操作定序之後,機器的前端201可重新繼續自追蹤快取230提取微操作。
無序執行引擎203可使指令準備好供執行。無序執行邏輯具有數個緩衝器,用以在指令流通過管線且
經排程以供執行時使指令流平滑且將其重新排序以最佳化效能。分配器邏輯分配每一微操作需要以便執行之機器緩衝器及資源。暫存器重命名邏輯將邏輯暫存器重命名至暫存器檔案中之輸入項上。分配器亦在以下指令排程器之前針對兩個微操作佇列(一個用於記憶體操作且一個用於非記憶體操作)中之一者中的每一微操作分配輸入項:記憶體排程器、快排程器202、慢/通用浮點排程器204及簡單浮點排程器206。微操作排程器202、204、206基於其相依的輸入暫存器運算元來源之就緒及微操作完成其操作所需之執行資源之可用性而判定微操作何時準備好執行。一個實施例之快排程器202可以每半個主時脈循環進行排程,而其他排程器在每個主處理器時脈循環中僅排程一次。該等排程器對分派埠仲裁以排程微操作以供執行。
暫存器檔案208、210可配置在排程器202、204、206與執行區塊211中之執行單元212、214、216、218、220、222、224之間。暫存器檔案208、210中之每一者分別執行整數及浮點運算。每一暫存器檔案208、210可包括旁通網路,其可繞過尚未寫入至暫存器檔案中的剛剛完成之結果或將該等結果轉送至新的相依微操作。整數暫存器檔案208及浮點暫存器檔案210可與另一者傳送資料。在一個實施例中,可將整數暫存器檔案208分裂成兩個單獨暫存器檔案,一個暫存器檔案用於資料之低階的三十二個位元且第二暫存器檔案用於資料之高階的三十二個位元。浮點暫存器檔案210可包括128位元寬之輸入項,此
係因為浮點指令通常具有寬度為64位元至128位元之運算元。
執行區塊211可含有執行單元212、214、216、218、220、222、224。執行單元212、214、216、218、220、222、224可執行指令。執行區塊211可包括儲存微指令需要執行之整數及浮點資料運算元值的暫存器檔案208、210。在一個實施例中,處理器200可包含數個執行單元:位址產生單元(AGU)212、AGU 214、快ALU 216、快ALU 218、慢ALU 220、浮點ALU 222、浮點移動單元224。在另一實施例中,浮點執行區塊222、224可執行浮點、MMX、SIMD及SSE或其他操作。在又一實施例中,浮點ALU 222可包括64位元乘64位元之浮點除法器以執行除法、平方根及餘數微操作。在各種實施例中,可用浮點硬體來處置涉及浮點值之指令。在一個實施例中,可將ALU操作傳遞至高速ALU執行單元216、218。高速ALU 216、218可執行具有半個時脈循環之有效潛時的快速操作。在一個實施例中,大部分複雜的整數操作轉至慢ALU 220,此係因為ALU 220可包括用於長潛時類型之操作的整數執行硬體,諸如乘法器、移位、旗標邏輯及分支處理。記憶體載入/儲存操作可由AGU 212、214執行。在一個實施例中,整數ALU 216、218、220可對64位元資料運算元執行整數操作。在其他實施例中,可實施ALU 216、218、220以支援多種資料位元大小,包括十六、三十二、128、256等。類似地,可實施浮點單元222、224
以支援具有各種寬度之位元的一系列運算元。在一個實施例中,浮點單元222、224可結合SIMD及多媒體指令對128位元寬之封裝資料運算元進行操作。
在一個實施例中,微操作排程器202、204、206在親代載入(parent load)已完成執行之前分派相依操作。當在處理器200中推測地排程及執行微操作時,處理器200亦包括用以處置記憶體遺漏之邏輯。若資料載入在資料快取中遺漏,則管線中可存在使排程器具有臨時不正確資料的運作中之相依操作。重新執行機制追蹤且重新執行使用不正確資料之指令。可僅需要重新執行相依操作且可允許獨立操作完成。處理器之一個實施例的排程器及重新執行機制亦可經設計以捕獲指令序列用於文字串比較操作。
「暫存器」一詞可指可被用作用以識別運算元之指令之部分的機載處理器儲存位置。換言之,暫存器可為可自處理器外部(自程式設計師之視角)使用的彼等暫存器。然而,在一些實施例中,暫存器可不限於特定類型之電路。實情為,暫存器可儲存資料、提供資料以及執行本文中所描述之功能。可藉由處理器內之電路使用任何數目種不同技術來實施本文中所描述之暫存器,諸如專用實體暫存器、使用暫存器重命名的動態分配之實體暫存器、專用實體暫存器與動態分配之實體暫存器之組合等。在一個實施例中,整數暫存器儲存32位元整數資料。一個實施例之暫存器檔案亦含有用於封裝資料之八個多媒體SIMD
暫存器。對於下文之論述,可將暫存器理解為經設計以保存封裝資料之資料暫存器,諸如具備來自Intel公司(Santa Clara,California)之MMX技術能力的微處理器中之64位元寬MMXtm暫存器(在一些情況下,亦被稱作「mm」暫存器)。以整數及浮點形式兩者可用之此等MMX暫存器可對伴隨SIMD及SSE指令之封裝資料元素操作。類似地,與SSE2、SSE3、SSE4或更高(一般被稱作「SSEx」)技術相關的128位元寬XMM暫存器可保持此等封裝資料運算元。在一個實施例中,在儲存封裝資料及整數資料時,暫存器並不需要區分兩個資料類型。在一個實施例中,整數及浮點可含於同一暫存器檔案或不同暫存器檔案中。此外,在一個實施例中,浮點及整數資料可儲存於不同暫存器或同一暫存器中。
在以下諸圖之實例中,可描述數個資料運算元。圖3A說明根據本發明之實施例的多媒體暫存器中之各種封裝資料類型表示。圖3A說明用於128位元寬運算元之封裝位元組310、封裝字320及封裝雙字(dword)330之資料類型。此實例之封裝位元組格式310可長128位元且含有十六個封裝位元組資料元素。舉例而言,可將位元組定義為八個位元之資料。每一位元組資料元素之資訊可儲存於位元組0之位元7至位元0、位元組1之位元15至位元8、位元組2之位元23至位元16以及最後位元組15之位元120至位元127中。因此,可使用暫存器中之所有可用位元。此儲存配置增加處理器之儲存效率。同樣,在存取十六個資
料元素之情況下,現在可平行地對十六個資料元素執行一個操作。
一般而言,資料元素可包括與具有相同長度之其他資料元素一起儲存於單一暫存器或記憶體位置中的個別資料段。在與SSEx技術相關之封裝資料序列中,儲存於XMM暫存器中之資料元素的數目可為128個位元除以個別資料元素之位元長度。類似地,在與MMX及SSE技術相關之封裝資料序列中,儲存於MMX暫存器中之資料元素的數目可為64個位元除以個別資料元素之位元長度。儘管圖3A中所說明之資料類型可長128個位元,但本發明之實施例亦可對64位元寬或其他大小之運算元操作。此實例之封裝字格式320可長128位元且含有八個封裝字資料元素。每一封裝字含有十六個位元之資訊。圖3A之封裝雙字格式330可長128位元且含有四個封裝雙字資料元素。每一封裝雙字資料元素含有三十二個位元之資訊。封裝四倍字可長128位元且含有兩個封裝四倍字資料元素。
圖3B說明根據本發明之實施例的可能暫存器內資料儲存格式。每一封裝資料可包括超過一個的獨立資料元素。說明三個封裝資料格式:封裝半341、封裝單342及封裝雙343。封裝半341、封裝單342及封裝雙343之一個實施例含有定點資料元素。對於另一實施例,封裝半341、封裝單342及封裝雙343中之一或多者可含有浮點資料元素。封裝半341之一個實施例可長128位元、含有八個16位元資料元素。封裝單342之一個實施例可長128位元
且含有四個32位元資料元素。封裝雙343之一個實施例可長128位元且含有兩個64位元資料元素。應瞭解,此等封裝資料格式可進一步擴展至其他暫存器長度,例如,擴展至96位元、160位元、192位元、224位元、256位元或更多位元。
圖3C說明根據本發明之實施例的多媒體暫存器中之各種有正負號及無正負號的封裝資料類型表示。無正負號封裝位元組表示344說明無正負號封裝位元組在SIMD暫存器中之儲存。每一位元組資料元素之資訊可儲存於位元組0之位元7至位元0、位元組1之位元15至位元8、位元組2之位元23至位元16以及最後位元組15之位元120至位元127中。因此,可使用暫存器中之所有可用位元。此儲存配置可增加處理器之儲存效率。同樣,在存取十六個資料元素之情況下,現在可以平行方式對十六個資料元素執行一個操作。有正負號封裝位元組表示345說明有正負號封裝位元組之儲存。應注意,每一位元組資料元素之第八位元可為正負號指示符。無正負號封裝字表示346說明字七至字零可如何儲存於SIMD暫存器中。有正負號封裝字表示347可類似於無正負號封裝字暫存器內表示346。應注意,每一字資料元素之第十六位元可為正負號指示符。無正負號封裝雙字表示348展示如何儲存雙字資料元素。有正負號封裝雙字表示349可類似於無正負號封裝雙字暫存器內表示348。應注意,必要的正負號位元可為每一雙字資料元素之第三十二位元。
圖3D說明操作編碼(作業碼)之一實施例。此外,格式360可包括暫存器/記憶體運算元定址模式,其與「IA-32 Intel Architecture Software Developer's Manual Volume 2:Instruction Set Reference」中所描述的一類之opcode格式對應,其可在全球資訊網(www)上以intel.com/design/litcentr自Intel公司(Santa Clara,CA)獲得。在一個實施例中,且指令可藉由欄位361及362中之一或多者編碼。可每指令識別多達兩個運算元位置,包括多達兩個來源運算元識別符364及365。在一個實施例中,目的地運算元識別符366可與來源運算元識別符364相同。在另一實施例中,目的地運算元識別符366可與來源運算元識別符365相同,而在其他實施例中,該兩者可不同。在一個實施例中,藉由來源運算元識別符364及365識別的來源運算元中之一者可被文字串比較操作之結果覆寫,而在其他實施例中,識別符364對應於來源暫存器元素且識別符365對應於目的地暫存器元素。在一個實施例中,運算元識別符364及365可識別32位元或64位元之來源運算元及目的地運算元。
圖3E說明根據本發明之實施例的具有四十或大於更多位元之另一可能操作編碼(作業碼)格式370。作業碼格式370與作業碼格式360對應且包含可選首碼位元組378。根據一個實施例之指令可由欄位378、371及372中之一或多者編碼。可藉由來源運算元識別符374及375且藉由首碼位元組378來識別每個指令多達兩個運算元位
置。在一個實施例中,首碼位元組378可用以識別32位元或64位元之來源運算元及目的地運算元。在一個實施例中,目的地運算元識別符376可與來源運算元識別符374相同,而在其他實施例中,該兩者可不同。對於另一實施例,目的地運算元識別符376可與來源運算元識別符375相同,而在其他實施例中,該兩者可不同。在一個實施例中,指令對由運算元識別符374及375識別之運算元中之一或多者操作,且由運算元識別符374及375識別之一或多個運算元可被指令結果覆寫,而在其他實施例中,由識別符374及375識別之運算元可被寫入至另一暫存器中之另一資料元素。作業碼格式360及370允許藉由模數欄位363及373且藉由可選的比例-索引-基址及位移位元組部分地規定的暫存器至暫存器定址、記憶體至暫存器定址、藉由記憶體之暫存器定址、藉由暫存器之暫存器定址、立即暫存器定址、暫存器至記憶體定址。
圖3F說明根據本發明之實施例的又一可能操作編碼(作業碼)格式。64位元之單一指令多重資料(SIMD)算術運算可經由共處理器資料處理(CDP)指令來執行。操作編碼(作業碼)格式380描繪具有CDP作業碼欄位382及0064 389的一個此CDP指令。用於另一實施例的CDP指令之類型,操作可由欄位383、384、387及388中之一或多者編碼。每指令可識別至多三個運算元位置,包括至多兩個來源運算元識別符385及390以及一個目的地運算元識別符386。共處理器之一個實施例可對八個、十
六、三十二及64位元之值進行操作。在一個實施例中,可對整數資料元素執行指令。在一些實施例中,可使用條件欄位381有條件地執行指令。對於一些實施例,原始資料大小可藉由欄位383編碼。在一些實施例中,可對SIMD欄位進行零(Z)、負數(N)、進位(C)及溢位(V)偵測。對於一些指令,飽和類型可藉由欄位384編碼。
圖4A為根據本發明之實施例的說明有序管線及暫存器重命名級、無序發出/執行管線之方塊圖。圖4B為根據本發明之實施例的說明將包括於處理器中的有序架構核心及暫存器重命名邏輯(無序發出/執行邏輯)之方塊圖。圖4A中之實線框說明有序管線,而虛線框說明暫存器重命名、無序發出/執行管線。類似地,圖4B中之實線框說明有序架構邏輯,而虛線框說明暫存器重命名邏輯及無序發出/執行邏輯。
在圖4A中,處理器管線400可包括提取級402、長度解碼級404、解碼級406、分配級408、重命名級410、排程(亦稱為分派或發出)級412、暫存器讀取/記憶體讀取級414、執行級416、寫回/記憶體寫入級418、例外狀況處置級422及提交級424。
在圖4B中,箭頭表示兩個或更多單元之間的耦接,且箭頭之方向指示彼等單元之間的資料流之方向。圖4B展示處理器核心490,其包括耦接至執行引擎單元450的前端單元430且該兩者可耦接至記憶體單元470。
核心490可為精簡指令集計算(RISC)核心、
複雜指令集計算(CISC)核心、超長指令字(VLIW)核心,或混合型或替代性核心類型。在一個實施例中,核心490可為專用核心,諸如網路或通訊核心、壓縮引擎、圖形核心或類似者。
前端單元430可包括耦接至指令快取單元434之分支預測單元432。指令快取單元434可耦接至指令轉譯後援緩衝器(TLB)436。TLB 436可耦接至指令提取單元438,該指令提取單元耦接至解碼單元440。解碼單元440可解碼指令,且產生作為輸出的一或多個微操作、微碼入口點、微指令、其他指令或其他控制信號,前述各者可自原始指令解碼,或另外反映原始指令,或可自原始指令導出。可使用各種不同機制來實施解碼器。合適機制之實例包括(但不限於)查找表、硬體實施、可規劃邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等。在一個實施例中,指令快取單元434可進一步耦接至記憶體單元470中之2階(L2)快取單元476。解碼單元440可耦接至執行引擎單元450中之重命名/分配器單元452。
執行引擎單元450可包括耦接至引退單元454及一或多個排程器單元456之集合的重命名/分配器單元452。排程器單元456表示任何數目個不同排程器,包括保留站、中央指令窗等。排程器單元456可耦接至實體暫存器檔案單元458。實體暫存器檔案單元458中之每一者表示一或多個實體暫存器檔案,其中之不同實體暫存器檔案儲存一或多個不同資料類型,諸如純量整數、純量浮點、
緊縮整數、緊縮浮點、向量整數、向量浮點等,狀態(例如,作為待執行之下一個指令之位址的指令指標)等。實體暫存器檔案單元458可藉由引退單元154重疊,以說明可用來事實暫存器重命名及無序執行的各種方法(例如,使用一或多個重排序緩衝器及一或多個引退暫存器檔案,使用一或多個未來檔案,一或多個歷史緩衝器及一或多個引退暫存器檔案;使用暫存器映射及暫存器集區;等)。一般而言,架構暫存器可自處理器外部或自程式設計師之視角可見。暫存器可不限於任何已知特定類型之電路。各種不同類型之暫存器可為合適的,只要該等暫存器如本文中所描述地儲存且提供資料。合適暫存器之實例包括(但可不限於)專用實體暫存器、使用暫存器重命名的動態分配之實體暫存器、專用實體暫存器與動態分配之實體暫存器之組合等。引退單元454及實體暫存器檔案單元458可耦接至執行叢集460。執行叢集460可包括一或多個執行單元162之集合及一或多個記憶體存取單元464之集合。執行單元462可執行各種運算(例如,移位、加法、減法、乘法)且對各種類型之資料(例如,純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)執行各種運算。雖然一些實施例可包括專用於特定功能或功能集合之數個執行單元,但其他實施例可包括僅一個執行單元或全部執行所有功能之多個執行單元。排程器單元456、實體暫存器檔案單元458及執行叢集460經展示為可能多個,此係因為某些實施例產生用於某些類型之資料/操作之單獨管線(例如,各自具有其自身排
程器單元、實體暫存器檔案單元及/或執行叢集的純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線及/或記憶體存取管線,且在單獨記憶體存取管線之情況下,實施僅此管線之執行叢集具有記憶體存取單元464之某些實施例)。亦應理解,當使用單獨管線時,此等管線中之一或多者可為無序發出/執行,且剩餘部分係有序的。
記憶體存取單元464之集合可耦接至記憶體單元470,該記憶體單元可包括耦接至資料快取單元474之資料TLB單元472,該資料快取單元耦接至2階(L2)快取單元476。在一個例示性實施例中,記憶體存取單元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 Technologies(Sunnyvale,CA)之MIPS指令集;ARM Holdings(Sunnyvale,CA)之ARM指令集(具有可選額外擴充,諸如NEON))。
應理解,核心可以多種方式支援多執行緒(執行操作或執行緒之兩個或更多個平行集合)。多執行緒支援可藉由(例如)包括時間分片多執行緒、同時多執行緒(其中單一實體核心為實體核心同時進行多執行緒處理的執行緒中之每一者提供邏輯核心)或其一組合來執行。此組合可包括(例如)時間分片提取及解碼,及此後的同時多執行緒處理,諸如在Intel®超執行緒技術中。
雖然可在無序執行之上下文中描述暫存器重命名,但應理解,暫存器重命名可用於有序架構中。雖然處理器之所說明實施例亦可包括單獨指令及資料快取單元434/474以及共用L2快取單元476,但其他實施例可具有用於指令及資料兩者之單一內部快取記憶體,諸如1階(L1)內部快取記憶體或多個層級之內部快取記憶體。在一些實施例中,系統可包括內部快取記憶體與可在核心及/或處理器外部的外部快取記憶體之組合。在其他實施例中,所有快取記憶體可在核心及/或處理器外部。
圖5A為根據本發明之實施例的處理器500之方塊圖。在一個實施例中,處理器500可包括多核心處
理器。處理器500可包括以通訊方式耦接至一或多個核心502之系統代理510。此外,核心502及系統代理510可以通訊方式耦接至一或多個快取記憶體506。核心502、系統代理510及快取記憶體506可經由一或多個記憶體控制單元552以通訊方式耦接。此外,核心502、系統代理510及快取記憶體506可經由記憶體控制單元552以通訊方式耦接至圖形模組560。
處理器500可包括用於互連核心502、系統代理510及快取記憶體506與圖形模組560之任何合適機構。在一個實施例中,處理器500可包括基於環之互連單元508,以將核心502、系統代理510及快取記憶體506與圖形模組560互連。在其他實施例中,處理器500可包括用於互連此等單元的任意數目個熟知技術。基於環之互連單元508可利用記憶體控制單元552來促進互連。
處理器500可包括一記憶體階層,其包含核心內的一或多個層級之快取記憶體、一或多個共用快取單元(諸如快取記憶體506)或耦接至整合式記憶體控制器單元552之集合的外部記憶體(未圖示)。快取記憶體506可包括任何合適的快取記憶體。在一個實施例中,快取記憶體506可包括一或多個中間層級快取記憶體,諸如2階(L2)、3階(L3)、4階(L4)或其他層級之快取記憶體、末級快取記憶體(LLC)及/或其組合。
在各種實施例中,核心502中之一或多者可執行多執行緒處理。系統代理510可包括用於協調及操作
核心502之組件。系統代理單元510可包括(例如)電力控制單元(PCU)。PCU可為或可包括調節核心502之電力狀態所需的邏輯及組件。系統代理510可包括用於驅動一或多個從外部連接之顯示器或圖形模組560之顯示引擎512。系統代理510可包括介面1214以用於針對圖形之通訊匯流排。在一個實施例中,介面1214可藉由快速PCI(PCIe)實施。在又一實施例中,介面1214可藉由快速圖形PCI(PEG)實施。系統代理510可包括直接媒體介面(DMI)516。DMI 516可提供電腦系統之主機板或其他部分上之不同橋接器之間的連結。系統代理510可包括用於提供至計算系統之其他元件之PCIe連結之PCIe橋接器1218。PCIe橋接器1218可使用記憶體控制器1220及一致性邏輯1222來實施。
核心502可以任何合適方式實施。就架構及/或指令集而言,核心502可為均質或異質的。在一個實施例中,核心502中之一些核心可為有序的,而其他核心可為無序的。在另一實施例中,核心502中之兩個或更多個核心可執行同一指令集,而其他核心可僅執行彼指令集之一子集或一不同指令集。
處理器500可包括通用處理器,諸如可購自Intel公司(Santa Clara,Calif)之CoreTM i3、i5、i7、2 Duo及Quad、XeonTM、ItaniumTM、XScaleTM或StrongARMTM處理器。處理器500可提供自另一公司,諸如ARM Holdings,Ltd、MIPS等。處理器500可為專用處理器,
諸如網路或通訊處理器、壓縮引擎、圖形處理器、共處理器、嵌入式處理器或其類似者。處理器500可實施於一或多個晶片上。處理器500可為一或多個基板之一部分及/或可使用數種製程技術中之任一者(諸如,BiCMOS、CMOS或NMOS)而實施於該一或多個基板上。
在一個實施例中,快取記憶體506中之給定者可由核心502中之多個核心共用。在另一實施例中,快取記憶體506中之給定者可專用於核心502中之一者。快取記憶體506至核心502之指派可藉由快取控制器或其他合適機構進行處置。藉由實施給定快取記憶體506之時間配量,快取記憶體506中之給定者可由兩個或更多個核心502共用。
圖形模組560可實施整合式圖形處理子系統。在一個實施例中,圖形模組560可包括圖形處理器。此外,圖形模組560可包括媒體引擎565。媒體引擎565可提供媒體編碼及視訊解碼。
圖5B為根據本發明之實施例的核心502之一實例實施之方塊圖。核心502可包括以通訊方式耦接至無序引擎580的前端570。核心502可經由快取階層503而以通訊方式耦接至處理器500之其他部分。
前端570可以任何合適方式實施,諸如完全地或部分地藉由如上所述的前端201實施。在一個實施例中,前端570可經由快取階層503與處理器500之其他部分通訊。在又一實施例中,前端570可自處理器500之部分提
取指令且使該等指令準備好稍後在該等指令被傳遞至無序執行引擎580時在處理器管線中使用。
無序執行引擎580可以任何合適方式實施,諸如完全地或部分地藉由如上所述的無序執行引擎203實施。無序執行引擎580使接收自前端570之指令準備好用於執行。無序執行引擎580可包括分配模組582。在一個實施例中,分配模組582可對處理器500之資源或其他資源(諸如暫存器或緩衝器)進行分配以執行給定指令。分配模組582可在排程器(諸如記憶體排程器、快排程器或浮點排程器)中進行分配。此等排程器在圖5B中可由資源排程器584來表示。分配模組582可藉由結合圖2所描述之分配邏輯來完全地或部分地實施。資源排程器584可基於給定資源之來源之就緒而判定指令何時準備好執行,及執行指令所需的執行資源之可獲得性。資源排程器584可藉由(例如)如上文所論述之排程器202、204、206來實施。資源排程器584可根據一或多個資源來排程指令之執行。在一個實施例中,此等資源可在核心502內部,且可說明為(例如)資源586。在另一實施例中,此等資源可在核心502外部且可藉由(例如)快取階層503可存取。舉例而言,資源可包括記憶體、快取記憶體、暫存器檔案或暫存器。在核心502內部之資源可由圖5B中之資源586來表示。視需要,可經由例如快取階層503來協調寫入至資源586或自其讀取之值與處理器500之其他部分。當指令經指派資源時,該等指令可置放於重排序緩衝器588中。重排序緩衝器588可在指令
執行時追蹤該等指令,且基於處理器500之任何合適準則而選擇性重排序該等指令之執行。在一個實施例中,重排序緩衝器588可識別可獨立地執行的數個指令或一系列指令。此等指令或一系列指令可與其他此等指令平行地執行。核心502中之平行執行可藉由任何合適數目個單獨執行區塊或虛擬處理器來執行。在一個實施例中,共用資源(諸如記憶體、暫存器及快取記憶體)可供給定核心502內之多個虛擬處理器可存取。在其他實施例中,共用資源可供處理器500內之多個處理實體可存取。
快取階層503可以任何合適方式實施。舉例而言,快取階層503可包括一或多個較低或中間層級快取記憶體,諸如快取記憶體572、574。在一個實施例中,快取階層503可包括以通訊方式耦接至快取記憶體572、574之LLC 595。在另一實施例中,LLC 595可實施於供處理器500之所有處理實體可存取之模組590中。在又一實施例中,模組590可實施於來自Intel公司之處理器之非核心模組中。模組590可包括核心502之執行必需的處理器500之部分或子系統,但可不實施於核心502內。除LLC 595外,模組590亦可包括(例如)硬體介面、記憶體一致性協調器、處理器間互連件、指令管線或記憶體控制器。對處理器500可用之RAM 599之存取可經由模組590且更具體言之LLC 595來進行。此外,核心502之其他執行個體可類似地存取模組590。核心502之執行個體之協調可部分地經由模組590促進。
圖6至圖8可說明適合於包括處理器500之例示性系統,而圖9可說明可包括核心502中之一或多者的例示性系統單晶片(SoC)。技術中已知的用於以下各者之其他系統設計及實施亦可為合適的:膝上型電腦、桌上型電腦、手持型PC、個人數位助理、工程化工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位信號處理器(DSP)、圖形裝置視訊遊戲裝置、機上盒、微控制器、蜂巢式電話、可攜式媒體播放器、手持型裝置以及各種其他電子裝置。一般而言,很多種併有如本文所揭示之處理器及/或其他執行邏輯之系統或電子裝置可為大體上合適的。
圖6說明根據本發明之實施例之系統600之方塊圖。系統600可包括可耦接至圖形記憶體控制器集線器(GMCH)620之一或多個處理器610、615。在圖6中用虛線表示額外處理器615之可選性質。
每一處理器610、615可為處理器500之某一版本。然而,應注意,整合式圖形邏輯及整合式記憶體控制單元可不存在於處理器610、615中。圖6說明GMCH 620可耦接至可為(例如)動態隨機存取記憶體(DRAM)之記憶體640。對於至少一個實施例,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可進一步耦接至可用以將各種周邊裝置耦接至系統600之輸入/輸出(I/O)控制器集線器(ICH)650。外部圖形裝置660可包括與另一周邊裝置670一起耦接至ICH 650之離散圖形裝置。
在其他實施例中,額外或不同的處理器亦可存在於系統600中。舉例而言,額外處理器610、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介面電路778、788經由點對點(P-P)介面750交換資訊。如圖7中所示,IMC 772及782可將該等處理器耦接至各別記憶體(即,記憶體732及記憶體734),該等記憶體在一個實施例中可為本端附接至各別處理器之主記憶體之部分。
處理器770、780可各自使用點對點介面電路776、794、786、798經由個別P-P介面752、754與晶片組790交換資訊。在一個實施例中,晶片組790亦可經由高效能圖形介面739而與高效能圖形電路738交換資訊。
共用快取記憶體(未圖示)可包括於兩個處理器中之任一處理器中或在兩個處理器外部,但經由P-P互連件與該等處理器連接,從而使得可將任一處理器或兩個處理器之本端快取記憶體資訊儲存於共用快取記憶體中(若處理器置於低功率模式)。
晶片組790可經由介面796耦接至第一匯流排716。在一個實施例中,第一匯流排716可為周邊組件互
連(PCI)匯流排,或諸如PCI高速匯流排或另一第三代I/O互連件匯流排之匯流排,但本發明之範疇不限於此。
如圖7中所示,各種I/O裝置714可與匯流排橋接器718一起耦接至第一匯流排716,該匯流排橋接器將第一匯流排716耦接至第二匯流排720。在一個實施例中,第二匯流排720可為低接腳計數(LPC)匯流排。在一個實施例中,各種裝置可耦接至第二匯流排720,包括(例如)鍵盤及/或滑鼠722、通訊裝置727及儲存單元728(諸如,可包括指令/程式碼及資料730之磁碟機或其他大容量儲存裝置)。另外,音訊I/O 724可耦接至第二匯流排720。應注意,其他架構可為可能的。舉例而言,替代圖7之點對點架構,系統可實施多點匯流排或其他此架構。
圖8說明根據本發明之實施例之第三系統700之方塊圖。圖7及圖8中之類似元件帶有類似參考數字,且已自圖8省略圖7之特定態樣,以便避免混淆圖8之其他態樣。
圖8說明處理器770、780可分別包括整合式記憶體及I/O控制邏輯(「CL」)772及782。對於至少一個實施例,CL 772、782可包括整合式記憶體控制器單元,諸如上文關於圖5及圖7所描述之整合式記憶體控制器單元。另外。CL 772、782亦可包括I/O邏輯控制。圖8說明不僅記憶體732、734可耦接至CL 872、882,而且I/O裝置814亦可耦接至邏輯控制772、782。舊式I/O裝置815可耦接至晶片組790。
圖9說明根據本發明之實施例之SoC 900之方塊圖。圖5中之類似元件帶有類似參考數字。又,虛線框可表示更高階SoC上之可選特徵。互連單元902可耦接至:應用處理器910,其可包括一或多個核心502A至502N之集合及共用快取單元506;系統代理單元912;匯流排控制器單元916;整合式記憶體控制器單元914;一或多個媒體處理器920之集合,其可包括整合式圖形邏輯908、用於提供靜態及/或視訊攝影機功能性之影像處理器924、用於提供硬體音訊加速之音訊處理器926及用於提供視訊編碼/解碼加速之視訊處理器928;靜態隨機存取記憶體(SRAM)單元930;直接記憶體存取(DMA)單元932;及用於耦接至一或多個外部顯示器之顯示單元940。
圖10說明根據本發明之實施例的含有中央處理單元(CPU)及圖形處理單元(GPU)之處理器,其可執行至少一個指令。在一個實施例中,用以執行根據至少一個實施例之操作的指令可由CPU執行。在另一實施例中,該指令可由GPU執行。在又一實施例中,該指令可經由藉由GPU及CPU執行之操作的組合執行。舉例而言,在一個實施例中,可接收及解碼根據一個實施例之指令以供在GPU上執行。然而,經解碼指令內之一或多個操作可由CPU執行,且將結果傳回至GPU以用於該指令之最終引退。相反,在一些實施例中,CPU可充當主要處理器且GPU充當共處理器。
在一些實施例中,受益於高度平行輸送量處
理器之指令可由GPU執行,而受益於處理器效能(受益於深度管線化架構)之指令可由CPU執行。舉例而言,圖形、科學應用程式、金融應用程式及其他平行工作負載可受益於GPU之效能且因此經執行,而較有序應用程式(諸如,作業系統核心程式或應用程式碼)可更適合於CPU。
在圖10中,處理器1000包括CPU 1005、GPU 1010、影像處理器1015、視訊處理器1020、USB控制器1025、UART控制器1030、SPI/SDIO控制器1035、顯示裝置1040、記憶體介面控制器1045、MIPI控制器1050、快閃記憶體控制器1055、雙資料速率(DDR)控制器1060、安全引擎1065及I2S/I2C控制器1070。圖10之處理器中可包括其他邏輯及電路,包括更多CPU或GPU及其他周邊介面控制器。
至少一個實施例之一或多個態樣可藉由儲存於機器可讀媒體上之代表性資料實施,該資料表示處理器內的在藉由機器讀取時使機器製造用以執行本文中所描述之技術的邏輯的各種邏輯。稱為「IP核心」之此等表示可儲存於有形機器可讀媒體(「磁帶」)上,且將其供應至各種消費者或製造設備以載入至實際上製造邏輯或處理器之製造機器中。舉例而言,IP核心(諸如,由ARM Holdings,Ltd.開發之CortexTM系列處理器及由中國科學院之計算技術研究所(ICT)開發之Loongson IP核心)可經授權或出售給各種消費者或使用人(諸如,Texas Instruments、Qualcomm、Apple或Samsung)且實施於由此等消費者或
使用人生產之處理器中。
圖11為說明根據本發明之實施例的IP核心之開發之方塊圖。儲存器1130可包括模擬軟體1120及/或硬體或軟體模型1110。在一個實施例中,可經由記憶體1140(例如,硬碟)、有線連接(例如,網際網路)1150或無線連接1160將表示IP核心設計之資料提供至儲存器1130。可接著將由模擬工具及模型產生之IP核心資訊傳輸至製造設施,在該製造設施處,可藉由第3方製造IP核心以執行根據至少一個實施例之至少一個指令。
在一些實施例中,一或多個指令可對應於第一類型或架構(例如,x86)且在不同類型或架構(例如,ARM)之處理器上進行轉譯或仿真。根據一個實施例之指令因此可在包括ARM、x86、MIPS、GPU或其他處理器類型或架構的任何處理器或處理器類型上執行。
圖12說明根據本發明之實施例的第一類型之指令可如何由不同類型之處理器進行仿真。在圖12中,程式1205含有可執行與根據一個實施例之指令相同或實質上相同之功能的一些指令。然而,程式1205之指令可為與處理器1215不同或不相容之類型及/或格式,此意謂程式1205中之類型的指令可不能夠由處理器1215原生地執行。然而,藉助於仿真邏輯1210,程式1205之指令可轉換成本身可藉由處理器1215執行之指令。在一個實施例中,可以硬體體現仿真邏輯。在另一實施例中,可以有形機器可讀媒體體現仿真邏輯,有形機器可讀媒體含有用以將程
式1205中之類型的指令轉譯成本身可由處理器1215執行之類型。在其他實施例中,仿真邏輯可為固定功能或可規劃硬體與儲存於有形機器可讀媒體上之程式之組合。在一個實施例中,處理器含有仿真邏輯,而在其他實施例中,仿真邏輯存在於處理器外且可由第三方提供。在一個實施例中,處理器可藉由執行含於處理器中或與處理器相關聯之微碼或韌體來載入體現於含有軟體之有形機器可讀媒體中的仿真邏輯。
圖13為根據本發明之實施例的對比軟體指令轉換器之使用的方塊圖,該軟體指令轉換器用以將源指令集中之二進位指令轉換成目標指令集中之二進位指令。在所說明實施例中,指令轉換器為軟體指令轉換器,但替代地,指令轉換器可以軟體、韌體、硬體或其各種組合來實施。圖13展示,可使用x86編譯器1304來編譯以高階語言1302撰寫之程式以產生x86二進位碼1306,該二進位碼本身可由具有至少一個x86指令集核心1316之處理器執行。具有至少一個x86指令集核心之處理器1316表示藉由相容地執行或以其他方式處理以下各者以便達成與具有至少一個x86指令集核心之Intel處理器實質上相同的結果而可執行與具有至少一個x86指令集核心之Intel處理器實質上相同的功能的任何處理器:(1)Intel x86指令集核心之指令集的實質部分,或(2)目標為執行於具有至少一個x86指令集核心之Intel處理器上的應用程式或其他軟體之目標程式碼版本。x86編譯器1304表示可操作以產生x86二
進位碼1306(例如,目標碼)之編譯器,該二進位碼可在具有或不具有額外連結處理之情況下在具有至少一個x86指令集核心之處理器1316上執行。類似地,圖13展示,可使用替代指令集編譯器1308來編譯以高階語言1302撰寫之程式以產生替代指令集二進位碼1310,該二進位碼本身可由不具有至少一個x86指令集核心之處理器1314(例如,具有執行MIPS Technologies(Sunnyvale,CA)之MIPS指令集及/或執行ARM Holdings(Sunnyvale,CA)之ARM指令集的核心的處理器)執行。
指令轉換器1312用以將x86二進位碼1306轉換成本身可由不具有x86指令集核心之處理器1314執行的替代指令集二進位碼1311。此經轉換程式碼可能與由替代指令集編譯器1308產生之替代指令集二進位碼1310相同或不同;然而,該經轉換程式碼將實現相同的一般操作且由來自替代指令集之指令構成。因此,指令轉換器1312表示經由仿真、模擬或任何其他程序而允許不具有x86指令集處理器或核心之處理器或其他電子裝置執行x86二進位碼1306的軟體、韌體、硬體或其組合。
圖14為根據本發明之實施例的處理器之指令集架構1400之方塊圖。指令集架構1400可包括任何合適數目或種類之組件。
舉例而言,指令集架構1400可包括處理實體,諸如一或多個核心1406、1407及圖形處理單元1415。核心1406、1407可經由任何合適機構(諸如經由匯流排或
快取記憶體)而以通訊方式耦接至指令集架構1400之其餘部分。在一個實施例中,核心1406、1407可經由L2快取控制1408(其可包括匯流排介面單元1409及L2快取記憶體1410)以通訊方式耦接。核心1406、1407及圖形處理單元1415可經由互連件1410以通訊方式耦接至彼此及指令集架構1400之剩餘部分。在一個實施例中,圖形處理單元1415可使用定義特定視訊信號藉以編碼及解碼以供輸出之方式的視訊程式碼1420。
指令集架構1400亦可包括用於與電子裝置或系統之其他部分介接或通訊的任何數目或種類之介面、控制器或其他機構。此等機構可促進與(例如)周邊裝置、通訊裝置、其他處理器或記憶體之互動。在圖14之實例中,指令集架構1400可包括液晶顯示器(LCD)視訊介面1425、用戶介面模組(SIM)介面1430、啟動ROM介面1435、同步動態隨機存取記憶體(SDRAM)控制器1440、快閃控制器1445及串列周邊介面(SPI)主控單元1450。LCD視訊介面1425可將視訊信號之輸出自(例如)GPU 1415且經由(例如)行動產業處理器介面(MIPI)1490或高清晰度多媒體介面(HDMI)1495而提供至顯示器。舉例而言,此顯示器可包括LCD。SIM介面1430可提供至或自SIM卡或裝置的存取。SDRAM控制器1440可提供至或自記憶體(諸如SDRAM晶片或模組)的存取。快閃控制器1445可提供至或自記憶體(諸如快閃記憶體或RAM之其他執行個體)的存取。SPI主控單元1450可提供至或自通訊模
組(諸如,實施諸如802.11之通訊標準的藍芽模組1470、高速3G數據機1475、全球定位系統模組1480或無線模組1485)的存取。
圖15為根據本發明之實施例的處理器之指令集架構1500之更詳細方塊圖。指令架構1500可實施指令集架構1400之一或多個態樣。此外,指令集架構1500可說明供指令在處理器內執行之模組及機制。
指令架構1500可包括以通訊方式耦接至一或多個執行實體1565之記憶體系統1540。此外,指令架構1500可包括以通訊方式耦接至執行實體1565及記憶體系統1540之快取及匯流排介面單元,諸如單元1510。在一個實施例中,指令至執行實體1564中之載入可藉由一或多個執行級來執行。舉例而言,此等級可包括指令預取級1530、雙指令解碼級1550、暫存器重命名級155、發出級1560及寫回級1570。
在另一實施例中,記憶體系統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統一快取記憶體,諸如零、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來進行,該分支預測單元可存取全域歷史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、磁碟機1720(諸如固態磁碟(SSD)或硬碟機(HDD))、無線區域網路(WLAN)單元1750、藍芽單元1752、無線廣域網路(WWAN)單元1756、全球定位系統(GPS)、攝影機1754(諸如USB 3.0攝影機)或以(例如)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)實施。
在一些情況下,使用根據一實施例之指令之軟體公用程式可具有不同於位元遮罩之應用程式設計介面(API)。舉例而言,彼公用程式可僅接受百分比且使用正確位元遮罩作為此指令之引數。
現參看圖18,展示可根據本發明之一實施例之方法之流程圖。更具體言之,圖18中所示之方法1800可藉由記憶體階層中之一或多個快取記憶體的快取控制器之控制邏輯來執行。在不同實施例中,此快取控制器可實施為硬體電路、軟體及/或韌體之組合。除各種表及其他控制邏輯之外,快取控制器之此控制邏輯亦可包括控制暫存器、計算邏輯(諸如一或多個算術邏輯單元)、通訊電路系統及記憶體存取電路。儘管本文中在快取控制器之情況下進行描述,但應理解,經組配以執行方法1800之控制邏輯亦可存在於與目錄結構相關聯之一或多個代理中,目錄結構諸如(例如)至少部分地藉由與處理器之各種核心或其他處理單元相關聯之快取本籍代理、快取代理及/或本籍代理實施的分散式目錄。更應注意,如本文中所描述,快取記憶體可為任何層級之記憶體階層,包括實施於具有形成多晶粒/多核心處理器之一或多個其他晶粒之處理器封裝體中的記憶體側快取記憶體。
如圖18中所示,方法1800藉由在快取控制器
中接收快取過濾器指令(區塊1810)開始。作為一實例,此指令可在特許模式下(例如)自OS或其他監控軟體接收,以對給定快取記憶體組配以執行本文中所描述之快取過濾。出於論述之目的假定,此快取過濾器指令係在初始化將在處理器上執行的具有巨大工作集(例如,至少和快取記憶體之大小一樣大且可能比快取記憶體之大小大得多)之應用程式之前接收。
接下來,控制傳遞至菱形1820,在該菱形中,判定快取過濾器指令是否針對當前快取層級。在一實施例中,此判定可基於指令之快取欄位,該快取欄位可提供編碼以指示指令所指向之快取層級。在其他情況下,此欄位係可選的,且菱形1820之判定將類似地為可選的。
仍然參看圖18,假定快取過濾器指令係針對當前快取層級,則控制傳遞至區塊1830,在該區塊中,可確定將應用的過濾器遮罩之位元之數目。此判定可基於指令之另一欄位,其用以指示為進行過濾將應用的位元之數目。作為一實例,三位元欄位可編碼過濾之8個粒度(例如,自12.5%至100%)。接下來,在區塊1840,可將位元的經判定之數目儲存於快取控制器之控制暫存器中。更具體言之,指令之資料欄位提供用以指示記憶體位址之哪些位元將具有用以實現快取合格性之預定值(例如,值一)的過濾器值。應注意,在其他情況下,可使用邏輯0來編碼將用以判定快取合格性的記憶體位址之位元。最後,控制傳遞至區塊1850,在該區塊中,快取控制器可選擇將被用作快
取標籤及快取索引之位址部分。在一個實例實施例中,假定過濾器位元係位址之位元6至8,且位元0至5(LSB)對應於快取行內之位元組位置。在此實施中,高於6之位元(在過濾器分析中不考慮該等位元)可充當快取索引位元,且其他位元(包括過濾器位元)可被用作快取標籤位元。應理解,儘管在圖18之實施例中以此高階進行展示,但許多變化及替代方案係可能的。
現參看圖19,展示了根據本發明之另一實施例之方法之方塊圖。更具體言之,圖19中所示之方法1900可藉由記憶體階層中之一或多個快取記憶體的快取控制器之控制邏輯來執行。
如所說明,方法1900藉由在快取控制器中接收記憶體存取請求(菱形1910)開始。作為實例,此記憶體存取請求可為讀取或寫入請求,其分別回應載入或儲存指令。接下來,在區塊1920,執行邏輯運算。更具體言之,此邏輯運算(其在一實施例中可為邏輯AND)出現在記憶體存取請求之位址之一部分與儲存於控制暫存器中之過濾器遮罩之間。應注意,記憶體存取請求之此位址可為實體位址,此係因為虛擬位址至實體位址之任何轉譯已發生。在其他實施例中,另一類型之邏輯運算(諸如邏輯或、互斥或操作)、表查找等可替代地出現。
仍參看圖19,接下來,在菱形1930,判定此邏輯運算之結果是否滿足快取準則。儘管不同類型之快取準則可存在於各種實施例中,但在邏輯運算為及運算且位
元遮罩具有邏輯1值以指示將允許進行快取之位址位元的一實例中,此快取準則可為邏輯運算之非零結果。在邏輯運算之結果滿足快取準則的情況下,控制傳遞至區塊1940,在該區塊中,可針對記憶體存取請求在快取記憶體中執行快取查找操作。因此,在菱形1950判定記憶體存取請求之位址在快取中是否命中。若命中,則可執行所請求之操作至命中位置(區塊1960)。因此,針對讀取請求,可存取儲存於所請求之位置中的資料且將該資料提供至請求方。在寫入操作之情況下,可將所請求之資料寫入至快取記憶體中之對應位置。
應注意,在菱形1930及1950兩者,若判定係否定的,則控制傳遞至區塊1970。此處,可將記憶體存取請求發送至記憶體階層之另外部分以進行處置。應注意,可避免在記憶體存取請求之位址係自快取儲存器經過濾之此等情形中在快取記憶體中執行查找操作的計算及電力費用。應理解,儘管在圖19之實施例中以此高階進行展示,但許多變化及替代方案係可能的。
包括根據一實施例之處理器之平台可包括多個獨特類型的記憶體,包括高頻寬記憶體(在本文中亦被稱作多通道記憶體(MCDRAM))、記憶體側快取記憶體或封裝內記憶體)及塊體或封裝外記憶體(在本文中被稱作主要或平台記憶體,在一實施例中,其可用雙資料速率(DDR)DRAM來實施)。藉由提供如本文中所描述之快取過濾器指令,程式設計師不必向軟體暴露MCDRAM及
DDR為一般記憶體,從而減小此記憶體配置之複雜度及組配。
現參看圖20,展示了根據本發明之一實施例的系統之一部分之方塊圖。如圖20中所示,系統2000可為在攜帶型計算裝置(諸如智慧型電話、平板電腦、膝上型電腦等)至個人電腦伺服器電腦等範圍內的給定計算裝置之部分。在圖20中所示的系統之部分中,系統單晶片(SoC)或其他處理器2020耦接至平台記憶體20301至20302,在一實施例中,平坦記憶體可由DRAM(例如,DDR DRAM)形成。在圖20之實施例中,SoC 2020可實施於單一封裝內且可包括半導體晶粒2022(其包括多個核心及其他處理邏輯)連同內部封裝記憶體20250至2025n。在一實施例中,封裝內記憶體2025可實施為由(例如)DRAM形成之一或多個單獨晶粒。儘管展示了8個此等封裝內記憶體,但在給定實施中可存在更多或更少封裝內記憶體。此封裝內記憶體在本文中亦被稱作記憶體側快取或多通道DRAM(MCDRAM),而平台記憶體2030在本文中亦可被稱作DDR DRAM。在一個實施例中,與平台記憶體2030相比,封裝內記憶體2025可提供高得多的頻寬(例如,500GB/s對100GB/s)。另外,此封裝內記憶體可具有按絕對值計算相對較大之容量(例如,16GB)。
仍參看圖20,晶粒2022進一步包括經組配以與平台記憶體2030之對應部分介接的不同類型之記憶體控制器電路,包括整合式記憶體控制器(IMC)20240及
20241。另外,封裝上輸入/輸出(OPIO)電路20260至2026n可包括額外記憶體控制器電路(在本文中亦被稱作嵌入式DRAM控制器(EDC))或與其相關聯,從而與封裝內記憶體2025介接。在一實施例中,基於目錄之快取一致性協定可部分地經由包括記憶體控制器之快取本籍代理(CHA)之分散式目錄系統來實施,分散式目錄系統可包括經組配以提供在同一位址空間中存取兩個不同類型之記憶體之能力的系統位址解碼器及本籍代理(HA)。因而,處理器可進一步包括兩個不同類型之本籍代理,以促進將請求發送至不同記憶體類型。每一快取本籍代理擁有記憶體位址之集合。在一實施例中,使用雜湊函數來判定哪個位址由哪個快取本籍代理擁有。對記憶體位址之所有存取轉至擁有彼位址之快取本籍代理,其中該位址視需要相對於同一位址之其他存取被串列化,例如,用於快取一致性及記憶體一致性目的。與快取本籍代理相關聯之系統位址解碼器檢查傳至快取本籍代理之記憶體存取之位址且判定哪些位址在MCDRAM中及哪些位址在DDR中。相應地,其引導對MCDRAM或DDR之記憶體存取。另外,此電路可經組配以執行本文中所描述的基於位址之快取過濾,以減少快取污染,改良潛時以及減少非快取位置之一致性通訊。應理解,在其他實施例中,可以其他方式實施目錄結構。
如進一步說明,晶粒2022亦包括多個介面20280至20281以與晶片外電路介接。作為實例,介面2028可包括一或多個快速周邊組件互連(PCIe)介面及一或多
個直接媒體介面(DMI),儘管其他類型之介面電路係可能的。
如上所述,晶粒2022包括多個核心及其他邏輯電路。更具體言之,在一實施例中,此等核心可配置成包括各種處理電路、快取記憶體、介面電路等之塊。圖21中說明了根據一實施例之代表性塊。在圖21之實施例中,塊2140經展示為包括多個核心21420至21421,及多個向量處理單元21440至21441。另外,塊2140進一步包括快取記憶體2145及集線器2148,該集線器充當塊2140內之電路與處理器之其他電路之間的介面。在一實施例中,核心2142可為經調適以執行多執行緒處理且實施給定指令集架構之無序執行核心。在其他實施例中,可存在不對稱核心,包括無序執行核心及有序執行核心兩者。應理解,每一核心及向量處理單元可包括內部快取記憶體,且快取記憶體2145可為給定塊內之各種處理電路之間所共用的2階快取記憶體。在一實施例中,集線器2148可與處理器之互連結構(在一個實例中,其可為基於環之互連件)介接。
現參看圖22,展示了根據本發明之實施例之快取記憶體之方塊圖。在所說明實例中,假定快取記憶體2200為被實施為多通道DRAM(MCDRAM)之記憶體側快取記憶體。當然,在其他實例中,快取記憶體2200可為核心之內部快取記憶體之SRAM、處理器晶粒上之共用快取記憶體等。
資料係儲存於資料陣列2240中。在各種實施
例中,資料陣列2240可配置成多個組或其他部分,其中之每一者可包括多個快取行,每一者用以儲存各種資訊,包括後設資料及對應資料。為存取資料陣列2240內之給定快取行,可將傳入記憶體位址請求之記憶體位址之一部分提供至標籤陣列2230以判定針對查找操作命中是否出現。若出現,則可自資料陣列2240之給定快取行讀取對應資料,或可將傳入資料寫入至給定快取行。
如進一步說明,快取記憶體2200包括快取控制器2210。除處置各種快取管理問題(包括對讀取、寫入、查找、收回及其他操作進行控制)外,快取控制器2210亦可經進一步組配以接收如本文中所描述之一或多個快取過濾器指令且執行適當的快取組配。此後,快取控制器2210可實施藉由快取過濾器指令識別之快取過濾策略,以使得僅僅記憶體位址空間之位址之一部分有資格儲存於快取記憶體2200中。
如所說明,快取控制器2210包括控制邏輯2214。如所見,控制邏輯2214經組配以接收快取過濾器指令。回應於此指令,控制邏輯2214可使與該指令相關聯之過濾器遮罩儲存於控制暫存器2212中。此後,控制邏輯2214可對傳入記憶體位址請求進行過濾以回應此快取過濾器指令。更具體言之,控制邏輯2214可將接收之記憶體存取請求之位址之對應位址位元與自控制暫存器2212獲得之過濾器遮罩一起提供至算術邏輯單元(ALU)2216。視此等值之間的邏輯運算(例如,及(AND)運算)之結果而
定,控制邏輯2214可將傳入記憶體請求經由查找路徑導引至快取記憶體本身,或經由直接連結導引至下一個記憶體(其可為記憶體階層之更遠部分)。應理解,儘管在圖22之實施例中以此高階進行展示,但許多變化及替代方案係可能的。
現參看圖23,展示可根據一實施例之系統之方塊圖。如圖23中所示,系統2300係以高階說明為具有兩層級記憶體(2LM)階層,其中處理器2304(例如,多核心處理器或其他SoC)耦接至第一記憶體層2342,及容積更大但較慢之第二系統記憶體層2350。在各種實施例中,大容積記憶體2350可為位元組可定址且直接可定址之大容量(例如,多個太位元組(terabyte))記憶體層,其使用相變材料、憶阻器或替代性記憶體技術由更緻密的儲存器類別記憶體技術產生。在不同實施例中,持續性儲存媒體可包括(但不限於)將持續記憶體實質化之一或多個NVDIMM解決方案,諸如NVDIMM-F、NVDIMM-N、電阻性隨機存取記憶體、Intel®基於3DXPointTM之記憶體及/或其他解決方案。在兩層級操作模式中,記憶體2350之多個太位元組可由數量級相比而言大致較小、對軟體透明之系統記憶體2342(例如,DRAM)進行硬體存取。此透明快取使得應用程式能夠認識到此記憶體之更高容量,但保護該等應用程式免於藉由大容積記憶體2350呈現的較長且不均勻之記憶體潛時。為簡潔起見,本文中使用「M2」指代大容積記憶體1850,且使用「M1」指代緩衝記憶體2342,其
對於軟體可能不可見或透明,但由硬體使用作為對M2之快取。在各種實施例中,如本文中所描述之快取過濾器指令可應用於圖23中所示的記憶體階層之各種層級。除處理器內部快取記憶體及記憶體側快取(若存在)之外,實施例亦可將快取過濾器指令進一步應用於第一記憶體層2342。
以下實例係關於另外實施例。
在一個實例中,一種處理器包含:一提取邏輯,其用以提取指令;一解碼邏輯,其用以解碼該等指令;一快取記憶體;以及一控制邏輯,其用以接收一快取過濾器指令且回應於該快取過濾器指令使得僅一記憶體位址空間之一選定部分能夠有資格在該快取記憶體中快取,該快取過濾器指令用以指示該記憶體位址空間之該選定部分。
在一實例中,該處理器進一步包含一控制暫存器,該控制暫存器用以儲存一過濾器遮罩,該過濾器遮罩至少部分地基於該快取過濾器指令之一資料部分。
在一實例中,該處理器進一步包含一算術邏輯單元,該算術邏輯單元用以接收一記憶體存取請求之一記憶體位址之一部分且執行該記憶體位址之該部分與該過濾器遮罩之間的一邏輯運算。
在一實例中,該控制邏輯用以:在該邏輯運算之一結果為一第一值時,在該快取記憶體中執行一查找操作,且在該邏輯運算之該結果並非該第一值時,阻止該快取記憶體中之該查找操作。
在一實例中,當該邏輯運算之該結果並非該
第一值時,該控制邏輯用以將該記憶體存取請求轉送至一記憶體階層之另一部分而不在該存取記憶體中執行該查找操作。
在一實例中,該控制邏輯與一目錄相關聯且用以:在該邏輯運算之一結果並非一第一值時,向該處理器之一或多個快取記憶體發出一一致性請求;以及另外將該記憶體存取請求發送至耦接至一系統記憶體之一記憶體控制器,而不發出該一致性請求。
在一實例中,該控制邏輯用以使得一記憶體存取請求之一記憶體位址之一最低有效部分能夠為一標籤值且使得該記憶體存取請求之該記憶體位址的對應於該過濾器遮罩之一第二部分能夠至少為一索引值之部分。
在一實例中,該快取過濾器指令包含:一第一欄位,其用以指示該快取過濾器指令所指向的一快取記憶體層級;以及一第二欄位,其用以指示該過濾器遮罩之一寬度。
在一實例中,該快取過濾器指令包含一特權指令,該特權指令將在具有一大小大於該快取記憶體之一大小的一工作集之一應用程式起始之前執行。
在一實例中,該快取記憶體包含適配在包含該處理器之一處理器封裝之一第一晶粒上的一記憶體,該處理器封裝進一步包含包括多個核心及一或多個其他快取記憶體之一第二晶粒。
請注意,以上處理器可使用各種手段來實
施。
在一實例中,該處理器包含併入於一具備使用者設備觸摸功能之裝置中之一SoC。
在另一實例中,一種系統一顯示器及一記憶體,且包括以上實例中之一或多者之處理器。
在另一實例中,一種方法包含:在與一快取記憶體相關聯之一快取控制器中接收一記憶體存取請求;執行該記憶體存取請求之一記憶體位址之一部分與由一快取過濾器指令提供之一過濾器遮罩之間的一邏輯運算;在該邏輯運算之一結果滿足一快取準則之情況下,針對該記憶體存取請求在該快取記憶體中執行一查找操作;以及在該邏輯運算之該結果不滿足該快取準則之情況下,將該記憶體存取請求發送至一記憶體階層之另一部分,而不在該快取記憶體中執行該查找操作。
在一實例中,該方法進一步包含,在該邏輯運算之該結果滿足該快取準則之情況下,若該記憶體存取請求在該快取記憶體中未命中,則將該記憶體存取請求發送至一記憶體階層之另一部分。
在一實例中,該方法進一步包含:在接收該記憶體存取請求之前,在該快取控制器中接收該快取過濾器指令;以及將自該快取過濾器指令獲得之一過濾器遮罩儲存於該快取控制器之一控制暫存器中。
在一實例中,該方法進一步包含:基於該快取過濾器指令之一第一欄位來判定該快取過濾器指令是否
指向該快取記憶體之一快取層級;以及基於該快取過濾器指令之一第二欄位來判定儲存於該快取控制器之該控制暫存器中的該過濾器遮罩之位元之數目。
在一實例中,該方法進一步包含選擇該記憶體存取請求之該記憶體位址之位元的對應於該過濾器遮罩之至少一部分以供一快取標籤使用。
在一實例中,該方法進一步包含回應於該快取過濾器指令之執行而在一應用程式之一執行期間中將一工作集之一部分維持在該快取記憶體中。
在另一實例中,一種包括指令之電腦可讀媒體用以執行以上實例中之任一者之方法。
在另一實例中,一種包括資料之電腦可讀媒體將由至少一個機器使用以製造至少一個積體電路以執行以上實例中之任一者之方法。
在另一實例中,一種設備包含用於執行以上實例中之任一者之方法的構件。
在另一實例中,一種系統包括:一處理器,其包含:包括一第一核心及一第二核心之一第一晶粒;以及包括一封裝內記憶體之至少一部分之一第二晶粒。該封裝內記憶體可包含一第一快取記憶體及一快取控制器,回應於一快取過濾器指令以使得:僅一記憶體位址空間之一選定部分能夠在該第一快取記憶體中快取,該快取過濾器指令包括用以指示該記憶體位址空間之該選定部分之一過濾器遮罩;以及能夠至少部分地基於一記憶體位址請求之
一位址之一部分來判定該記憶體位址請求是否有資格儲存於該第一快取記憶體中。該系統可進一步包括耦接至該處理器之一平台記憶體。
在一實例中,該系統進一步包含一算術邏輯單元,該算術邏輯單元用以接收該記憶體存取請求之該記憶體位址該部分且執行該記憶體位址之該部分與該過濾器遮罩之間的一邏輯運算。
在一實例中,該快取控制器用以在該邏輯運算之一結果為一第一值時,在該第一快取記憶體中執行一查找操作,且在該邏輯運算之該結果並非該第一值時,阻止該第一快取記憶體中之該查找操作且將該記憶體存取請求轉送至一記憶體階層之另一部分。
在一實例中,該快取控制器用以在具有大於該第一快取記憶體之一大小之一工作集大小的一非特權應用程式起始之前,自一特權資源接收該快取過濾器指令。
應理解,上文實例之各種組合係可能的。
實施例可用於許多不同類型之系統中。舉例而言,在一個實施例中,通訊裝置可經配置以執行本文中所描述之各種方法及技術。當然,本發明之範疇並不限於通訊裝置,且實情為,其他實施例可係針對用於處理指令的其他類型之設備,或包括回應於在計算裝置上執行而使得裝置進行本文中所描述之方法及技術中之一或多者的指令之一或多個機器可讀媒體。
實施例可以程式碼實施,且可儲存於其上已
儲存有指令的非暫時性儲存媒體上,該等指令可用以規劃系統以執行指令。實施例亦可以資料實施且可儲存於非暫時性儲存媒體上,該資料在由至少一個機器使用之情況下使該至少一個機器製造至少一個積體電路以執行一或多個操作。另外其他實施例可實施於包括資訊之電腦可讀儲存媒體中,電腦可讀儲存媒體在製造成SoC或其他處理器時將對SoC或其他處理器進行組配以執行一或多個操作。儲存媒體可包括(但不限於)任何類型之磁碟,包括軟碟、光碟、固態硬碟(SSD)、光碟唯讀記憶體(CD-ROM)、可重寫光碟(CD-RW)及磁光碟;諸如唯讀記憶體(ROM)之半導體裝置;隨機存取記憶體(RAM),諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可抹除可規劃唯讀記憶體(EPROM)、快閃記憶體、電可抹除可規劃唯讀記憶體(EEPROM);磁性或光學卡;或適於儲存電子指令的任何其他類型之媒體。
雖然已關於有限數目個實施例描述了本發明,但一般熟習此項技術者將瞭解自本發明的眾多修改及變化。意欲隨附申請專利範圍涵蓋如在本發明之真實精神及範疇內的所有此等修改及變化。
200:處理器
201:有序前端
202:快排程器
203:無序執行引擎
204:慢/一般浮點排程器
206:簡單浮點排程器
208、210:暫存器檔案
211:執行區塊
212:執行單元/位址產生單元(AGU)
214:執行單元/AGU
216、218:執行單元/快ALU
220:執行單元/慢ALU
222:執行單元/浮點ALU
224:執行單元/浮點移動單元
226:指令預先提取器
228:指令解碼器
230:追蹤快取
232:微碼ROM
234:微操作佇列
Claims (17)
- 一種處理器,包含:一提取邏輯,用以提取指令;一解碼邏輯,用以解碼該等指令;一快取記憶體;一控制邏輯,用以接收一指令集架構之一快取過濾器指令,並回應於該快取過濾器指令而組配該快取記憶體,以使得只有由在該處理器外部之一或多個記憶體所組成的一記憶體階層的記憶體位址空間之一選定部分受允許能作快取分配以在該快取記憶體中被快取,該快取過濾器指令具有含有一過濾器遮罩的一資料部分,用以指示一記憶體存取請求之一記憶體位址之要具有一預定值以使得該記憶體存取請求之資料能被允許作快取分配的一或多個位元;以及一控制暫存器,用以儲存該過濾器遮罩,其中,該快取過濾器指令含有:一第一欄位,用以指示該快取過濾器指令所指向的一快取記憶體層級;及一第二欄位,用以指示該過濾器遮罩之寬度。
- 如請求項1之處理器,進一步包含:一算術邏輯單元,用以接收針對該記憶體階層的一第一記憶體存取請求之一記憶體位址之一部分,並進行在該記憶體位址之該部分與該過濾器遮罩之間的一邏輯運算。
- 如請求項2之處理器,其中,該控制邏輯 可進行以下作業:在該邏輯運算之結果為第一值時,進行在該快取記憶體中的一查找操作,並在該邏輯運算之結果不為該第一值時,避免在該快取記憶體中作該查找操作。
- 如請求項3之處理器,其中,當該邏輯運算之結果不為該第一值時,該控制邏輯會將該第一記憶體存取請求轉送至該記憶體階層,而不在該快取記憶體中進行該查找操作。
- 如請求項1之處理器,其中,該控制邏輯可進行以下作業:使一第一記憶體存取請求之一記憶體位址之一最低有效部分能夠為一標籤值、並使該第一記憶體存取請求之該記憶體位址之對應於該過濾器遮罩的一第二部分能夠為一索引值之至少一部分。
- 如請求項1之處理器,其中,該快取過濾器指令包含一監督代理的一特權指令,該特權指令係要在具有大小比該快取記憶體更大的工作集的一非特權應用程式起始之前先被執行。
- 如請求項1之處理器,其中,當該記憶體存取請求之該記憶體位址之該一或多個位元並不具有該預定值時,該記憶體存取請求之該資料不被允許作快取分配。
- 一種儲存有資料在內的非暫時性機器可讀媒體,該資料在由至少一個機器使用時可使該至少一個機器造作出可執行一方法的至少一個積體電路,該方法包含:在與一快取記憶體相關聯的一快取控制器中接收一 快取過濾器指令,該快取過濾器指令含有一過濾器遮罩,用以指示一記憶體存取請求之一記憶體位址之要具有一預定值以使得該記憶體存取請求之資料能被允許在該快取記憶體中被快取的一或多個位元;將由該快取過濾器指令所提供的該過濾器遮罩之至少一部份儲存在該快取控制器的一控制暫存器中;接著,在該快取控制器中接收一第一記憶體存取請求;執行在該第一記憶體存取請求之一記憶體位址之一部分與該過濾器遮罩之間的一邏輯運算,其中,該快取過濾器指令屬於一指令集架構,且可指出一記憶體階層的記憶體位址空間之受允許能在該快取記憶體中被快取的一部分,該記憶體位址空間之其他部分不被允許在該快取記憶體中被快取;當該邏輯運算之結果符合一快取準則時,在該快取記憶體中進行針對該第一記憶體存取請求的一查找操作;以及當該邏輯運算之結果不符合該快取準則時,將該第一記憶體存取請求發送至該記憶體階層之另一部分,而不在該快取記憶體中進行該查找操作。
- 如請求項8之非暫時性機器可讀媒體,該方法進一步包含:當該邏輯運算之結果符合該快取準則時,若該記憶體存取請求在該快取記憶體中未命中,則將該記憶體存取請求發送至該記憶體階層之該另一部分。
- 如請求項9之非暫時性機器可讀媒體,該方法進一步包含:根據該快取過濾器指令之一第一欄位,判定該快取過濾器指令是否指向該快取記憶體之一快取層級;以及根據該快取過濾器指令之一第二欄位,判定該過濾器遮罩之要儲存在該快取控制器之該控制暫存器中的位元數目。
- 如請求項9之非暫時性機器可讀媒體,該方法進一步包含:選擇該第一記憶體存取請求之該記憶體位址之對應於該過濾器遮罩的至少一部分位元,以供用於一快取標籤。
- 如請求項8之非暫時性機器可讀媒體,該方法進一步包含:回應於對該快取過濾器指令的執行,而在一應用程式之執行期間內在該快取記憶體中維持一工作集之一部分。
- 一種系統,其包含:一處理器,其包含:一第一晶粒,其含有一第一核心及一第二核心;及一第二晶粒,其含有一封裝內記憶體之至少一部分,該封裝內記憶體包含一第一快取記憶體及一快取控制器,該快取控制器可回應於一快取過濾器指令而進行下列作業:組配該第一快取記憶體,以使得只有在該處 理器外部的一平台記憶體之記憶體位址空間的一選定部分能在該第一快取記憶體中被快取,該快取過濾器指令含有一過濾器遮罩,用以指示一記憶體存取請求之一記憶體位址之要具有一預定值以讓該記憶體存取請求之資料能在該第一快取記憶體中被快取的一或多個位元,及至少部分根據該記憶體存取請求之該記憶體位址之該一或多個位元,判定該記憶體存取請求是否被允許作在該第一快取記憶體中的儲存;以及耦接至該處理器的該平台記憶體。
- 如請求項13之系統,進一步包含:一算術邏輯單元,用以接收該記憶體存取請求之該記憶體位址之該部分,並進行在該記憶體位址之該一或多個位元與該過濾器遮罩之間的一邏輯運算。
- 如請求項14之系統,其中,該快取控制器可進行以下作業:在該邏輯運算之結果為第一值時,進行在該第一快取記憶體中的一查找操作,以及在該邏輯運算之結果不為該第一值時,避免在該第一快取記憶體中作該查找操作,並將該記憶體存取請求轉送至該平台記憶體。
- 如請求項13之系統,其中,該快取控制器可進行以下作業:在具有大小比該第一快取記憶體更大的工作集的一非特權應用程式起始之前,接收來自一特權資源的該快取過濾器指令。
- 如請求項13之系統,其中,當該記憶體存取請求之該記憶體位址之該一或多個位元並不具有該預定值時,該記憶體存取請求之資料不能夠在該第一快取記憶體中被快取。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/948,830 | 2015-11-23 | ||
US14/948,830 US10152421B2 (en) | 2015-11-23 | 2015-11-23 | Instruction and logic for cache control operations |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201723855A TW201723855A (zh) | 2017-07-01 |
TWI738674B true TWI738674B (zh) | 2021-09-11 |
Family
ID=58720237
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105132739A TWI738674B (zh) | 2015-11-23 | 2016-10-11 | 與快取控制操作有關的處理器、系統及非暫時性機器可讀媒體 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10152421B2 (zh) |
EP (1) | EP3380943B1 (zh) |
CN (1) | CN108351835B (zh) |
TW (1) | TWI738674B (zh) |
WO (1) | WO2017091293A1 (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20120016980A (ko) | 2010-08-17 | 2012-02-27 | 한국전자통신연구원 | 영상 부호화 방법 및 장치, 그리고 복호화 방법 및 장치 |
US9720827B2 (en) * | 2014-11-14 | 2017-08-01 | Intel Corporation | Providing multiple memory modes for a processor including internal memory |
US10048868B2 (en) * | 2016-09-29 | 2018-08-14 | Intel Corporation | Replacement of a block with a compressed block to increase capacity of a memory-side cache |
US10437482B2 (en) * | 2017-07-25 | 2019-10-08 | Samsung Electronics Co., Ltd. | Coordinated near-far memory controller for process-in-HBM |
US11231931B1 (en) | 2018-12-20 | 2022-01-25 | Advanced Micro Devices, Inc. | Mechanism for mitigating information leak via cache side channels during speculative execution |
US11150902B2 (en) | 2019-02-11 | 2021-10-19 | International Business Machines Corporation | Processor pipeline management during cache misses using next-best ticket identifier for sleep and wakeup |
US11126537B2 (en) | 2019-05-02 | 2021-09-21 | Microsoft Technology Licensing, Llc | Coprocessor-based logging for time travel debugging |
US11768779B2 (en) * | 2019-12-16 | 2023-09-26 | Advanced Micro Devices, Inc. | Cache management based on access type priority |
US20200125495A1 (en) * | 2019-12-19 | 2020-04-23 | Intel Corporation | Multi-level memory with improved memory side cache implementation |
CN112433961B (zh) * | 2020-12-02 | 2022-07-08 | 海光信息技术股份有限公司 | 复合缓存目录系统及其管理方法 |
US11847055B2 (en) * | 2021-06-30 | 2023-12-19 | Advanced Micro Devices, Inc. | Approach for reducing side effects of computation offload to memory |
CN113722244B (zh) * | 2021-11-02 | 2022-02-22 | 北京微核芯科技有限公司 | 一种高速缓存结构、访问方法和电子设备 |
CN114721726B (zh) * | 2022-06-10 | 2022-08-12 | 成都登临科技有限公司 | 一种多线程组并行获取指令的方法、处理器及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050044325A1 (en) * | 2000-08-07 | 2005-02-24 | Rowlands Joseph B. | Programmably disabling one or more cache entries |
CN101329911A (zh) * | 2001-12-28 | 2008-12-24 | 莫塞德技术公司 | 低功耗内容可定址记忆体架构 |
TW201535118A (zh) * | 2010-03-29 | 2015-09-16 | Via Tech Inc | 預取單元、資料預取方法、電腦程式產品以及微處理器 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5075848A (en) * | 1989-12-22 | 1991-12-24 | Intel Corporation | Object lifetime control in an object-oriented memory protection mechanism |
US5742831A (en) * | 1994-06-30 | 1998-04-21 | Intel Corporation | Methods and apparatus for maintaining cache coherency during copendency of load and store operations |
US5835929A (en) | 1996-05-20 | 1998-11-10 | Integrated Device Technology, Inc. | Method and apparatus for sub cache line access and storage allowing access to sub cache lines before completion of a line fill |
JP3857661B2 (ja) * | 2003-03-13 | 2006-12-13 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 情報処理装置、プログラム、及び記録媒体 |
US7934054B1 (en) * | 2005-11-15 | 2011-04-26 | Oracle America, Inc. | Re-fetching cache memory enabling alternative operational modes |
US7707396B2 (en) * | 2006-11-17 | 2010-04-27 | International Business Machines Corporation | Data processing system, processor and method of data processing having improved branch target address cache |
EP2441005A2 (en) * | 2009-06-09 | 2012-04-18 | Martin Vorbach | System and method for a cache in a multi-core processor |
JP2011028736A (ja) * | 2009-07-02 | 2011-02-10 | Fujitsu Ltd | キャッシュメモリ装置、演算処理装置及びキャッシュメモリ装置の制御方法 |
DE102011075257B4 (de) | 2011-05-04 | 2013-11-21 | Vodafone Holding Gmbh | Beantwortung von Anfragen mittels des Kommunikationsendgeräts eines Nutzers |
US8868843B2 (en) | 2011-11-30 | 2014-10-21 | Advanced Micro Devices, Inc. | Hardware filter for tracking block presence in large caches |
KR101571991B1 (ko) | 2011-12-20 | 2015-11-25 | 인텔 코포레이션 | 2-레벨 메모리 계층구조에서 메모리측 캐쉬의 동적인 부분적 전원 차단 |
US9600522B2 (en) * | 2012-08-20 | 2017-03-21 | Oracle International Corporation | Hardware implementation of the aggregation/group by operation: filter method |
US9448942B2 (en) * | 2012-08-20 | 2016-09-20 | Freescale Semiconductor, Inc. | Random access of a cache portion using an access module |
US9069690B2 (en) * | 2012-09-13 | 2015-06-30 | Intel Corporation | Concurrent page table walker control for TLB miss handling |
US10049061B2 (en) * | 2012-11-12 | 2018-08-14 | International Business Machines Corporation | Active memory device gather, scatter, and filter |
US9563425B2 (en) * | 2012-11-28 | 2017-02-07 | Intel Corporation | Instruction and logic to provide pushing buffer copy and store functionality |
US9235517B2 (en) | 2013-08-12 | 2016-01-12 | Globalfoundries Inc. | Implementing dynamic cache enabling and disabling based upon workload |
US9356602B1 (en) * | 2015-05-14 | 2016-05-31 | Xilinx, Inc. | Management of memory resources in a programmable integrated circuit |
-
2015
- 2015-11-23 US US14/948,830 patent/US10152421B2/en active Active
-
2016
- 2016-09-28 CN CN201680063732.2A patent/CN108351835B/zh active Active
- 2016-09-28 WO PCT/US2016/054070 patent/WO2017091293A1/en unknown
- 2016-09-28 EP EP16869033.7A patent/EP3380943B1/en active Active
- 2016-10-11 TW TW105132739A patent/TWI738674B/zh active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050044325A1 (en) * | 2000-08-07 | 2005-02-24 | Rowlands Joseph B. | Programmably disabling one or more cache entries |
CN101329911A (zh) * | 2001-12-28 | 2008-12-24 | 莫塞德技术公司 | 低功耗内容可定址记忆体架构 |
TW201535118A (zh) * | 2010-03-29 | 2015-09-16 | Via Tech Inc | 預取單元、資料預取方法、電腦程式產品以及微處理器 |
Also Published As
Publication number | Publication date |
---|---|
CN108351835A (zh) | 2018-07-31 |
WO2017091293A1 (en) | 2017-06-01 |
EP3380943A1 (en) | 2018-10-03 |
US10152421B2 (en) | 2018-12-11 |
TW201723855A (zh) | 2017-07-01 |
CN108351835B (zh) | 2022-10-04 |
US20170147496A1 (en) | 2017-05-25 |
EP3380943A4 (en) | 2019-07-17 |
EP3380943B1 (en) | 2020-07-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI738674B (zh) | 與快取控制操作有關的處理器、系統及非暫時性機器可讀媒體 | |
TWI739772B (zh) | 處理器、用於安全指令執行管線之方法、及運算系統 | |
US9823925B2 (en) | Instruction and logic for a logical move in an out-of-order processor | |
TWI738682B (zh) | 用於載入索引和散佈元件的處理器、方法及系統 | |
TWI743064B (zh) | 用於取得多重向量元素操作之指令及邏輯 | |
US20170177363A1 (en) | Instructions and Logic for Load-Indices-and-Gather Operations | |
US10175986B2 (en) | Stateless capture of data linear addresses during precise event based sampling | |
US10705845B2 (en) | Instructions and logic for vector bit field compression and expansion | |
US20170168819A1 (en) | Instruction and logic for partial reduction operations | |
TWI723075B (zh) | 用於向量置換的方法和處理器以及向量置換單元 | |
US9851976B2 (en) | Instruction and logic for a matrix scheduler | |
TWI738681B (zh) | 處理器、用於檢測消抵效應之方法及消抵效應檢測單元 | |
US20160371089A1 (en) | Instruction and logic for filtering of software prefetching instructions | |
US20160364237A1 (en) | Processor logic and method for dispatching instructions from multiple strands | |
US20210096866A1 (en) | Instruction length decoding | |
US20160179540A1 (en) | Instruction and logic for hardware support for execution of calculations | |
US10884735B2 (en) | Instruction and logic for predication and implicit destination | |
US20170177348A1 (en) | Instruction and Logic for Compression and Rotation | |
US10990395B2 (en) | System and method for communication using a register management array circuit | |
EP3391197A1 (en) | Instruction and logic for getting a column of data | |
US20180285119A1 (en) | Apparatus and method for inter-strand communication |