TWI721021B - 用於致能旗標操作的移除及重建之處理器、非暫時性機器可讀取媒體及計算系統 - Google Patents
用於致能旗標操作的移除及重建之處理器、非暫時性機器可讀取媒體及計算系統 Download PDFInfo
- Publication number
- TWI721021B TWI721021B TW105131648A TW105131648A TWI721021B TW I721021 B TWI721021 B TW I721021B TW 105131648 A TW105131648 A TW 105131648A TW 105131648 A TW105131648 A TW 105131648A TW I721021 B TWI721021 B TW I721021B
- Authority
- TW
- Taiwan
- Prior art keywords
- instruction
- processor
- flag
- logic
- immediate
- Prior art date
Links
- 239000000872 buffer Substances 0.000 claims abstract description 58
- 238000000034 method Methods 0.000 claims description 37
- 230000004044 response Effects 0.000 claims description 12
- 238000004519 manufacturing process Methods 0.000 claims description 11
- 238000009825 accumulation Methods 0.000 claims description 6
- 238000000605 extraction Methods 0.000 claims description 6
- 230000009471 action Effects 0.000 claims description 4
- 238000004364 calculation method Methods 0.000 claims description 4
- 230000008569 process Effects 0.000 claims description 4
- 230000015654 memory Effects 0.000 description 164
- 238000012545 processing Methods 0.000 description 72
- 238000010586 diagram Methods 0.000 description 41
- 238000003860 storage Methods 0.000 description 35
- 238000007667 floating Methods 0.000 description 25
- 238000004891 communication Methods 0.000 description 19
- 238000005516 engineering process Methods 0.000 description 17
- 239000003795 chemical substances by application Substances 0.000 description 15
- 230000006870 function Effects 0.000 description 12
- 230000007246 mechanism Effects 0.000 description 10
- 230000002093 peripheral effect Effects 0.000 description 10
- 229910003460 diamond Inorganic materials 0.000 description 8
- 239000010432 diamond Substances 0.000 description 8
- 230000003068 static effect Effects 0.000 description 7
- 238000013500 data storage Methods 0.000 description 5
- 230000006835 compression Effects 0.000 description 4
- 238000007906 compression Methods 0.000 description 4
- 239000004973 liquid crystal related substance Substances 0.000 description 4
- 230000001360 synchronised effect Effects 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000009977 dual effect Effects 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000036961 partial effect Effects 0.000 description 3
- 230000002829 reductive effect Effects 0.000 description 3
- 238000004088 simulation Methods 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 230000001413 cellular effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 101100285899 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SSE2 gene Proteins 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
Images
Classifications
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
-
- 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
- G06F9/3832—Value prediction for operands; operand history buffers
-
- 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/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic 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/30094—Condition code generation, e.g. Carry, Zero flag
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- 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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
-
- 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/3861—Recovery, e.g. branch miss-prediction, exception handling
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
於一個實施例中,一處理器包括用以提取指令的一提取邏輯,用以解碼該等經提取的指令的一解碼邏輯,及用以執行至少部分的該等指令之一執行邏輯。該解碼邏輯可判定欲被收合的一第一指令的一旗標部分是否欲被進行,及若否,則累加該第一指令之一第一立即值連同得自一立即緩衝器的一分錄的一收合立即值。其它實施例係經描述及請求專利。
Description
本文揭示係有關於處理邏輯、微處理器、及相關聯的指令集架構之領域其當由處理器或其它處理邏輯執行時進行邏輯、數學、或其它功能操作。
於當今處理器指令集架構(ISA)中,許多整數加法運算在整數暫存器及立即值上運算,該立即值為提供有一指令之值。此等指令可使用在寬廣多種情況。於某些情況下,藉由涵括此等指令而產生相依性。此等相依性可能對處理器性能造成不良影響。有些指令也包括旗標操作來提供有關指令執行的狀態資訊。旗標操作的執行也能影響處理器性能。
依據本發明之一實施例,係特地提出一種處理器,包含:用以提取指令的一提取邏輯,用以解碼該等經提取的指令的一解碼邏輯,及用以執行至少部分的該等指令之一執行邏輯,其中該解碼邏輯係用以判定是否要進行欲被收合的一第一指令的一旗標部分,及若為否,則累加該第一指令之一第一立即值連同得自一立即緩衝器的一分錄的一收合立即值。
100:電腦系統
102、200、500、610、615、770、780、1000、1215、1710、2100:處理器
104:L1內部快取記憶體
106:暫存器檔案
108、142、162、212-224、462、2150:執行單元
109:壓縮指令集
110:處理器匯流排
112:圖形控制器
114:加速圖形埠(AGP)互連
116:記憶體控制器中樞器(MCH)
118:記憶體介面、高頻寬記憶體路徑
120、640、732、734、1140:記憶體
122:系統I/O、專用中樞器介面匯流排
124:資料儲存裝置
126:無線收發器
128:韌體中樞器(快閃BIOS)
130:I/O控制器中樞器
134:網路控制器
140、160:資料處理系統
141:匯流排
143:壓縮指令集
144:解碼器
145、164:暫存器檔案
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:指令集
165:解碼器
166:主處理器
167:快取記憶體、共處理器匯流排
168:輸入/輸出系統
169:無線介面
201、570:前端
202:快速排程器
203:亂序執行引擎
204:緩慢/一般浮點排程器
206:簡單浮點排程器
208:整數暫存器檔案
210:浮點暫存器檔案
212、214:位址產生單元(AGU)
216、218:快速算術邏輯單元(ALU)
220:緩慢ALU
222:浮點ALU
224:浮點移動單元
226:指令預提取器
228:指令解碼器
230:追蹤快取
232:微代碼ROM
234:uop佇列
310:壓縮位元組
320:壓縮字
330:壓縮雙字組(dword)
341:壓縮半
342:壓縮單
343:壓縮雙
344:無符號的壓縮位元組表示型態
345:有符號的壓縮位元組表示型態
346:無符號的壓縮字表示型態
347:有符號的壓縮字表示型態
348:無符號的壓縮雙字組表示型態
349:有符號的壓縮雙字組表示型態
360、370、380:操作編碼(opcode)格式
361、362、371、372、381、383、384、387、388:欄位
363、373:MOD欄位
364、365、374、375、385、390:來源運算元識別符
366、376、386:目的地運算元識別符
382、389:CDP opcode欄位
400:處理器管線
402:提取階段
404:長度解碼階段
406:解碼階段
408:配置階段
410:重新命名階段
412:排程階段
414:暫存器讀取/記憶體讀取階段
416:執行階段
418:回寫/記憶體寫入階段
422:例外處理階段
424:委付階段
430:前端單元
432:分支預測單元
434:指令快取單元
436:指令轉譯旁視緩衝器(TLB)
438:指令提取單元
440:解碼單元
450:執行引擎單元
452:重新命名/配置器單元
454、2160:報廢單元
456:排程器單元
458:實體暫存器檔案單元
460:執行叢集
464:記憶體存取單元
470:記憶體單元
472:資料TLB單元
474:資料快取單元
476:層級2(L2)快取單元
490:處理器核心
502、502A-N、530、530A-N、1407、1408:核心
503:快取階層
504A-N:快取單元
506:分享快取單元
506:快取記憶體
508:以環為基礎的互連單元
510:系統代理器
512:顯示引擎
514:介面、PCI快速圖形(PEG)
516:直接媒體介面(DMI)
518:PCIe橋接器
520:記憶體控制器
522:同調邏輯
540、540A-N、595:最末層級快取記憶體(LLC)
552:記憶體控制單元
560:圖形模組
565:媒體引擎
572、574:快取記憶體
576:無核心模組
580:亂序執行引擎
582:配置模組
584:資源排程器
586:資源
588:整序緩衝器
599:RAM
600:系統
620:圖形記憶體控制中樞器(GMCH)
645:顯示器
650:I/O控制器中樞器(ICH)
660:外部圖形裝置
670:周邊裝置
700、800:多處理器系統
714、814:I/O裝置
716:第一匯流排
718:匯流排橋接器
720:第二匯流排
722:鍵盤及/或滑鼠
724:音訊I/O
727:通訊裝置
728:儲存單元
730:指令/代碼及資料
738:高性能圖形電路
739:高性能圖形介面
750:點對點(P-P)互連
752、754:P-P介面
772、782:整合式記憶體控制器(IMC)、整合式記憶體及I/O控制邏輯(CL)
776、778、786、788、794、798:P-P介面電路
790:晶片組
792、796:介面(I/F)
815:舊式I/O裝置
900:單晶片系統(SoC)
902:互連單元
908:整合式圖形邏輯
910:應用處理器
912:系統代理器單元
914:整合式記憶體控制器單元
916:匯流排控制器單元
920:媒體處理器
924、1015:影像處理器
926:音訊處理器
928、1020:視訊處理器
930:靜態隨機存取記憶體(SRAM)單元
932:直接記憶體存取(DMA)單元
940:顯示單元
1005:中央處理單元(CPU)
1010、1415:圖形處理單元(GPU)
1025:USB控制器
1030:UART控制器
1035:SPI/SDIO控制器
1040:顯示裝置
1045:記憶體介面控制器
1050:行動工業處理器介面(MIPI)控制器
1055:快閃記憶體控制器
1060:雙倍資料率(DDR)控制器
1065:安全引擎
1070:I2S/I2C控制器
1100、1130:儲存媒體、儲存裝置
1110:硬體或軟體模型
1120:模擬軟體
1150:有線連結
1160:無線連結
1165:製造
1205:程式
1210:模擬邏輯
1302:高階語言
1304:x86編譯器
1306:x86二進制碼
1308:指令集編譯器
1310、1311:指令集二進制碼
1312:指令轉換器
1314:沒有x86指令集核心的處理器
1316:具有至少一個x86指令集核心的處理器
1400:指令集架構
1408:L2快取控制
1409:匯流排介面單元
1410:L2快取
1420:視訊編解碼器
1425:液晶顯示器(LCD)視訊介面
1430:用戶身分模組(SIM)介面
1435:啟動ROM介面
1440:同步動態隨機存取記憶體(SDRAM)控制器
1445:閃存控制器
1450:串列周邊介面(SPI)匯流排主單元
1455:電源控制
1460:DRAM
1465:快閃記憶體
1470:藍牙模組
1475:高速3G數據機
1480:全球定位系統模組
1485:無線模組
1490:MIPI
1495:高畫質多媒體介面(HDMI)
1500:指令集架構、指令架構
1510:L2快取控制/匯流排介面單元
1511:中斷控制及分配單元
1512:窺探控制單元
1514:窺探過濾器
1515:計時器
1516:AC埠
1520:匯流排介面單元
1521:一次主機
1525:L2統一快取記憶體
1530:指令預提取階段、負載儲存單元
1531、1561:快速回路模式
1532:指令快取記憶體
1535:分支預測單元
1536:通用歷史
1537:目標位址
1538:回送堆疊
1540:記憶體系統
1542:資料快取記憶體
1543:預提取器
1544:記憶體管理單元(MMU)
1545:指令轉譯旁視緩衝器(TLB)
1550:雙指令預解碼階段
1555:暫存器重新命名階段
1556:暫存器集合
1557:分支
1560:簽發階段
1561:指令佇列
1565:處理實體
1566:ALU/乘法單元(MUL)
1567:ALU
1568:浮點單元(FPU)
1569:位址
1570:回寫階段
1575:追蹤單元
1580:已執行指令指標
1582:報廢指標
1600:執行管線
1605-1680:步驟或操作
1700:電子裝置
1715:LPDDR記憶體單元
1720:固態驅動裝置(SSD)或硬碟驅動裝置(HDD)
1722:BIOS/韌體/快閃記憶體
1724:顯示器
1725:觸控螢幕
1730:觸控板
1735:快速晶片組(EC)
1736:鍵盤
1737:風扇
1738:信賴平台模組(TPM)
1739、1746:溫度感測器
1740:感測器中樞器
1741:加速器
1742:周圍光感測器(ALS)
1743:羅盤
1744:迴轉儀
1745:近場通信(NFC)單元
1750:無線本地區域網路(WLAN)單元
1752:藍牙單元
1754:攝影機
1755:全球定位系統(GPS)
1756:無線廣域網路(WWAN)單元
1757:用戶身分模組(SIM)卡
1760:數位信號處理器(DSP)
1762:音訊單元
1763:揚聲器
1764:耳機
1765:麥克風
1810-1840:代碼方塊
1900:電路
1905、2120:暫存器重新命名別名表(RAT)
19100-1910n、19300-1930n:分錄
19120-1912n:邏輯識別符欄位
19140-1914n:實體識別符欄位
1920:收合立即緩衝器
19320-1932n:有效欄位
19340-1934n:第二欄位
19361、19362:第三欄位
1940、19400-19404、2010、2015、2020:累加器
2000:算術邏輯單元(ALU)
2110:配置邏輯
2125:第一旁通路徑
2130:保留站
2140:實體暫存器檔案(PRF)
2155:第二旁通路徑
2200、2300、2400:方法
2210、2220-2230、2240-2280、2310、2330、2340、2360、2410-2440:方塊
2215、2235、2320、2350:菱形
圖1A為依據本文揭示之實施例,使用一處理器其可包括用以執行一指令的執行單元所形成的電腦系統實例之方塊圖。
圖1B例示依據本文揭示之實施例的一資料處理系統。
圖1C例示依據本文揭示之實施例用以進行操作的一資料處理系統之另一個實施例。
圖2為依據本文揭示之實施例,針對一處理器其可包括用以進行指令的邏輯電路的微架構之方塊圖。
圖3A例示依據本文揭示之實施例於多媒體暫存器中之各種壓縮資料類型表示型態。
圖3B例示依據本文揭示之實施例可能的暫存器內資料儲存格式。
圖3C例示依據本文揭示之實施例於多媒體暫存器中之各種有符號的及無符號的壓縮資料類型表示型態。
圖3D例示一操作編碼格式的一實施例。
圖3E例示依據本文揭示之實施例具有40個或以上位元的另一個可能的操作編碼格式。
圖3F例示依據本文揭示之實施例又另一個可能的操作編碼格式。
圖4A為方塊圖例示依據本文揭示之實施例的有序管線及暫存器重新命名階段、亂序簽發/執行管線。
圖4B為方塊圖例示依據本文揭示之實施例欲涵括於處理器的有序架構核心及暫存器重新命名邏輯、亂序簽發/執行邏輯。
圖5A為依據本文揭示之實施例一處理器的一方塊圖。
圖5B為依據本文揭示之實施例一核心的一具體實施例之方塊圖。
圖6為依據本文揭示之實施例一系統的一方塊圖。
圖7為依據本文揭示之實施例一第二系統的一方塊圖。
圖8為依據本文揭示之實施例一第三系統的一方塊圖。
圖9為依據本文揭示之實施例一單晶片系統的一方塊圖。
圖10例示依據本文揭示之實施例,包含其可進行至少一個指令的一中央處理單元及一圖形處理單元的一處理器。
圖11為一方塊圖例示依據本文揭示之實施例IP核心的發展。
圖12例示依據本文揭示之實施例,第一類型的指令如何可藉不同類型的處理器模擬。
圖13為依據本發明之實施例,對比使用一軟體指令轉換器來將於一來源指令集中之二進制指令轉換成於一目標指令集中之二進制指令的方塊圖。
圖14為依據本文揭示之實施例一處理器的一指令集架構之方塊圖。
圖15為依據本文揭示之實施例一處理器的一指令集架構之更加細節的方塊圖。
圖16為依據本文揭示之實施例用於一處理器的一指令集架構的一執行管線之方塊圖。
圖17為依據本文揭示之實施例用於運用一處理器的一電子裝置之方塊圖。
圖18A為具有以回路為基礎的操作之代碼的一排列。
圖18B為依據本文揭示之實施例具有以回路為基礎的操作之代碼的一排列。
圖19為依據一實施例一暫存器重新命名別名表及相關結構的方塊圖。
圖20為依據一實施例與一收合立即緩衝器相關聯的額外邏輯之方塊圖。
圖21為依據一實施例一算術邏輯單元(ALU)的方塊圖。
圖22為依據一實施例一處理器的一部分之方塊圖。
圖23為依據本發明之實施例一方法的流程圖。
圖24為依據一實施例用於進行旗標操作的方法之流程圖。
圖25為依據一實施例用於重建旗標資訊的方法之流程圖。
實施例進一步許可移除與指令相關聯的旗標操作。此種旗標操作的收合可用於被收合的指令。又復,於某些情況下,此種旗標移除也可針對在管線的執行邏輯中執行的指令而予實現,於該處,能識別此等指令的旗標結果不欲被耗用。
以自故障或其它錯誤中復原為例,例如,收合指令的旗標結果可能需被耗用。因此,實施例進一步提供旗標重建技術使得即便旗標操作未以習知方式進行時,仍維持潛在資訊使得後來能夠重建旗標結果。
於某些指令集架構(ISA)諸如x86 ISA中,眾多整數操作產生罕見由任何其它操作耗用的旗標。實施例可判定何時此等旗標操作能被移除而提高性能(例如,增加的IPC)。於收合指令之情況下,為了自處理器管線完全地移除與此等指令相關聯的uops,此等操作的旗標結果也可被移除。用於旗標移除的其它情況可包括常數值,例如全壹語法。若指令的狀態欲被解析,及旗標係由無聲操作表示,實施例提供一技術使得旗標值欲被重建。雖然本文描述的一項技術為以微代碼為基礎的技術,但須瞭解實施例並非限於此面向。
為了實現旗標收合,指令及相關聯的旗標產生及旗標消費者操作可經界定。於旗標未被耗用之情況下,其能被無聲地壓扁且由旗標狀態欲被回復的情況下能被回復的表示型態置換。藉由只在需要時計算旗標,而非每次操作計算旗標,可達成增高的IPC。
圖1A為依據本文揭示之實施例,使用一處理器其可包括用以執行一指令的執行單元所形成的電腦系統實例之方塊圖。依據本文揭示之實施例,諸如於本文描述之實施例中,系統100可包括一組件,諸如處理器102用以採用包括邏輯的執行單元來進行針對處理資料的演算法。系統100可以是基於得自加州聖塔克萊拉的英特爾公司(Intel Corporation)的奔騰TM III、奔騰4、至強(XeonTM)、安騰(ItaniumTM)、X尺規(XScaleTM)及/或強臂(StrongARMTM)微處理器的處理系統之表示型態,但也可使用其它系統(包括具有其它微處理器的PC、工程工作站、機上盒等)。於一個實施例中,樣本系統100可執行得自華盛頓州雷德蒙的微軟公司(Microsoft Corporation)的視窗(WINDOWStm)作業系統版本,但也可使用其它作業系統(例如,UNIX及Linux)、嵌入式軟體、及/或圖形使用者介面。因此,本文揭示之實施例並不受限於硬體電路與軟體的任何特定組合。
實施例並不受限於電腦系統。本文揭示之實施例可使用在其它裝置,諸如手持式裝置及嵌入式應用。手持式裝置之若干實例包括細胞式電話、網際網路協定裝置、數位相機、個人數位助理器(PDA)、及手持式PC。依據至少一個實施例,嵌入式應用可包括微控制器、數位信號處理器(DSP)、單晶片系統、網路電腦(NetPC)、機上盒、網路中樞器、廣域網路(WAN)交換器、或可進行一或多個指令的任何其它系統。
依據本文揭示之一個實施例,電腦系統100可包括處理器102,其可包括一或多個執行單元108來從事演算法而進行至少一個指令。一個實施例可以單一處理器桌上型電腦或伺服器系統的情境描述,但其它實施例可涵括於多處理器系統。系統100可以是「中樞器」系統架構實例。系統100可包括用於處理資料信號的處理器102。處理器102可包括複雜指令集電腦(CISC)微處理器、精簡指令集電腦(RISC)微處理器、極長指令字(VLIW)微處理器、實施指令集的組合之處理器、或任何其它處理器裝置,諸如數位信號處理器。於一個實施例中,處理
器102可耦合至處理器匯流排110,其可在處理器102與系統100中之其它組件間發射資料信號。系統100的元件可進行熟諳技藝人士眾所周知的習知功能。
於一個實施例中,處理器102可包括層級1(L1)內部快取記憶體104。取決於架構,處理器102可具有單一內部快取或多個內部快取層級。於另一個實施例中,快取記憶體可駐在處理器102外部。取決於特定實施及需要,其它實施例也可包括內部與外部快取兩者的組合。暫存器檔案106可將不同類型的資料儲存於各種暫存器,包括整數暫存器、浮點暫存器、狀態暫存器、及指令指標暫存器。
執行單元108,包括進行整數及浮點運算的邏輯,也駐在處理器102內。處理器102也可包括針對某些巨集指令儲存微代碼的微代碼(ucode)ROM。於一個實施例中,執行單元108可包括處理壓縮指令集109的邏輯。藉將壓縮指令集109涵括於通用處理器102的指令集,連同相關聯的電路來執行該等指令,由大量多媒體應用程式使用的操作可於通用處理器102使用壓縮資料進行。因此,藉由使用處理器的資料匯流排之全寬用於在壓縮資料上進行操作,大量多媒體應用程式可被加速及更有效地執行。如此免除了需要傳送較小型資料單元橫過處理器的資料匯流排以每次一個資料元件進行一或多個操作。
執行單元108之實施例也可使用在微控制器、嵌入式處理器、圖形裝置、DSP、及其它類型的邏輯電路。系統100可包括記憶體120。記憶體120可實施為動態隨機存取記憶體(DRAM)裝置、靜態隨機存取記憶體(SRAM)裝置、快閃記憶體裝置、或其它記憶體裝置。記憶體120可儲存可由處理器102執行的資料信號表示的指令及/或資料。
系統邏輯晶片116可耦合至處理器匯流排110及記憶體120。系統邏輯晶片116可包括記憶體控制器中樞器(MCH)。處理器102可透過處理器匯流排110而與MCH 116通訊。MCH 116可提供到記憶體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)、及其個別反變換;壓縮/解壓縮技術諸如色彩空間變換、視訊編碼運動估計、或視訊解碼運動補償;及調變/解調(MODEM)功能諸如脈衝編碼調變(PCM)。
圖1C例示依據本文揭示之實施例用以進行操作的資料處理系統的另一個實施例。於一個實施例中,資料處理系統160可包括主處理器166、SIMD共處理器161、快取記憶體167及輸入/輸出系統168。輸入/輸出系統168可選擇性地耦合至無線介面169。SIMD共處理器161可進行包括依據一個實施例的指令之操作。於一個實施例中,處理核心170可適合用於以一或多個製程技術製造,及藉由以充分細節在機器可讀取媒體上表示,可適合輔助資料處理系統160的全部或部分包括處理核心170的製造。
於一個實施例中,SIMD共處理器161包含執行單元162及一集合之暫存器檔案164。主處理器165之一個實施例包含解碼器165用以辨識指令集163的指令,包括依據一個實施例由執行單元162執行的指令。於其它實施例中,SIMD共處理器161也包含解碼器165的至少部分用以解碼指令集163的指令。處理核心170也可包括額外電路(未顯示於圖中),其可能為瞭解本文揭示之實施例所不必要者。
於操作中,主處理器166執行控制通用類型的資料處理操作的一串流之資料處理指令,包括與快取記憶體167及輸入/輸出系統168的互動。嵌入該串流之資料處理指令內部者可以是SIMD共處理器指令。主處理器166的解碼器165辨識此等SIMD共處理器指令為屬於須由附接的SIMD共處理器161執行的類型。因此,主處理器166在共處理器匯流排166上簽發此等SIMD共處理器指令(或表示SIMD共處理器指令的控制信號)。自共處理器匯流排166,此等指令可由附接的SIMD共處理器接收。於此種情況下,SIMD共處理器161可接收及執行意圖給它的任何所接收的SIMD共處理器指令。
資料可透過無線介面169接收用於由該等SIMD共處理器指令處理。至於一個實例,語音通訊可以數位信號形式接收,其可
由SIMD共處理器指令處理而再生表示語音通訊的數位音訊樣本。至於另一個實例,壓縮音訊及/或視訊可以數位位元串流形式接收,其可由SIMD共處理器指令處理而再生數位音訊樣本及/或運動視訊框。於處理核心170的一個實施例中,主處理器166及SIMD共處理器161可整合成包含執行單元162、一集合之暫存器檔案164、及解碼器165的單一處理核心170來辨識包括依據一個實施例的指令之指令集163的指令。
圖2為依據本文揭示之實施例用於可包括用以進行指令的邏輯電路的處理器200的微架構之方塊圖。於若干實施例中,依據一個實施例指令可經實施用以在具有位元組、字、雙字組、四倍字等大小,以及資料類型諸如單及雙精度整數及浮點資料類型的資料元件上操作。於一個實施例中,有序前端201可實施處理器200的一部分,其可提取欲執行的指令及準備該等指令後來用在處理器管線。前端201可包括數個單元。於一個實施例中,指令預提取器226自記憶體提取指令且將指令饋進指令解碼器228,其轉而解碼或解譯該等指令。舉例言之,於一個實施例中,解碼器將所接收的指令解碼成機器可執行的一或多個操作,稱作「微指令」或「微操作」(又稱微op或uops)。於其它實施例中,解碼器將指令剖析成依據一個實施例可由微架構使用來進行操作的操作代碼及對應資料及控制欄位。於一個實施例中,追蹤快取230可將已解碼的uops組裝成於uop佇列234中的程式排序序列或蹤跡用於執行。當追蹤快取230遭遇複雜指令時,微代碼ROM 232提供完成操作需要的uops。
有些指令可被轉換成單一微操作,而其它指令則需要數個微操作來完成整個操作。於一個實施例中,若需要多於四個微操作來完成指令,則解碼器228可存取微代碼ROM 232用以進行該指令。於一個實施例中,一指令可被解碼成少數微操作用來於指令解碼器228處理。於另一個實施例中,若需要多個微操作來完成操作,則指令可儲存於微代碼ROM 232內部。追蹤快取230係指進入點可規劃邏輯陣列
(PLA)用以判定正確的微指令指標器用來從微代碼ROM 232將微代碼序列讀取而完成依據一個實施例的一或多個指令。微代碼ROM 232完成針對一指令的微代碼的排序之後,機器前端201可回復自追蹤快取230提取微操作。
亂序執行引擎203可準備用於執行的指令。亂序執行邏輯具有多個緩衝器來平順化及重新排序指令流,用以當指令順管線前進且獲得執行排程時優化性能。配置器邏輯配置各個uop執行需要的機器緩衝器及資源。暫存器重新命名邏輯將邏輯暫存器重新命名至暫存器檔案中的分錄上。配置器也將針對各個uop的分錄配置於在指令排程器前方:記憶體排程器、快速排程器202、緩慢/一般浮點排程器204、及簡單浮點排程器206的兩個uop佇列中之一者,一者用於記憶體操作及一者用於非記憶體操作。Uop排程器202、204、206根據其相依性輸入暫存器運算元來源的就緒狀況及該等uops完成其操作需要的執行資源之可利用性而判定何時uop就緒準備執行。一個實施例的快速排程器202可在主時鐘週期的各半排程,而其它排程器只能每個主處理器時鐘週期排程一次。排程器仲裁該等調度埠用以排程uops以供執行。
暫存器檔案208、210可排列在排程器202、204、206與執行區塊211中的執行單元212、214、216、218、220、222、224間。暫存器檔案208、210各自分別地進行整數及浮點運算。各個暫存器檔案208、210可包括一旁路網路,其可旁通或前傳剛完成的但尚未被寫入暫存器檔案中的結果到新的相依性uops。整數暫存器檔案208及浮點暫存器檔案210可彼此通訊資料。於一個實施例中,整數暫存器檔案208可分裂成兩個分開的暫存器檔案,用於低階32位元資料的一個暫存器檔案及用於高階32位元資料的第二暫存器檔案。浮點暫存器檔案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可經實施以支援各種資料位元大小,包括16、32、128、256等。同理,浮點單元222、224可經實施以支援具有各種寬度之位元的一定範圍之運算元。於一個實施例中,浮點單元222、224可結合SIMD及多媒體指令而在128-位元寬的壓縮資料運算元上操作。
於一個實施例中,在親代負載已經完成執行之前,uop排程器202、204、206調度相依性操作。因uop可在處理器200中推論地排程與執行,故處理器200也可包括處理記憶體失誤(miss)的邏輯。若在資料快取中有資料負載失誤,則在該管線中的飛行中的相依性操作給排程器留下暫時性不正確資料。重播機構追蹤及重新執行使用不正確資料的指令。只有相依性操作須被重播,獨立的操作可允許完成。處理器的一個實施例之排程器及重播機構也可經設計來提取用於文字串比較操作的指令序列。
術語「暫存器」可指可用作為識別運算元之指令部分的板上處理器儲存位置。換言之,暫存器可以是從處理器外部(從程式師觀點)為可使用者。然而,於若干實施例中,暫存器可不限於特定類型的電路。反而,暫存器可儲存資料,提供資料,及進行本文描述的功能。本文描述的暫存器可使用任何數目的不同技術藉處理器內部的電路實施,諸如專用實體暫存器、使用暫存器重新命名的動態配置的實體暫存器、專用與動態配置的實體暫存器之組合等。於一個實施例中,整數暫存器儲存32-位元整數資料。一個實施例的暫存器檔案也含有用於壓縮資料的八個多媒體SIMD暫存器。至於後文討論,須瞭解暫存器為經設計來保有壓縮資料的資料暫存器,諸如於使用得自加州聖塔克萊拉的英特爾公司之MMX技術啟用的微處理器中的64-位元寬MMXtm暫存器(於某些情況下又稱「mm」暫存器)。以整數及浮點兩種形式可得的此等MMX暫存器可使用伴隨SIMD及SSE指令的壓縮資料元件操作。同理,SSE2、SSE3、SSE4、或其後(通稱為「SSEx」)技術相關的128-位元寬XMM暫存器可保有此等壓縮資料運算元。於一個實施例中,於儲存壓縮資料及整數資料中,暫存器無需區別兩種資料類型。於一個實施例中,整數及浮點可包含於相同的暫存器檔案或不同的暫存器檔案。又復,於一個實施例中,浮點及整數資料可儲存於不同暫存器或相同暫存器。
於下列圖式之實例中,可描述多個資料運算元。圖3A例示依據本文揭示之實施例於多媒體暫存器中之各種壓縮資料類型表示型態。圖3A例示針對128-位元寬運算元的壓縮位元組310、壓縮字320、及壓縮雙字組(dword)330的資料類型。此實例的壓縮位元組格式310可以長128位元及含有16個壓縮位元組資料元件。一位元組例如可定義為8位元之資料。針對各個位元組資料元件的資訊可針對位元組0儲存於位元7至位元0,針對位元組1儲存於位元15至位元8,針對位元組2儲存於位元23至位元16,及最後針對位元組15儲存於位元120至位元127。因此,暫存器中全部可用的位元皆可被使用。此種
儲存配置提高了處理器的儲存效率。同時,存取16個資料元件,現在一次操作可在16個資料元件上並列進行。
通常,一資料元件可包括與等長的其它資料元件一起儲存於單一暫存器或記憶體位置的個別資料塊。於SSEx技術有關的壓縮資料序列中,儲存於XMM暫存器中之資料元件數目可以是128位元除以個別資料元件的位元長度。同理,於MMX及SSE技術有關的壓縮資料序列中,儲存於XMM暫存器中之資料元件數目可以是64位元除以個別資料元件的位元長度。雖然圖3A中例示的資料類型可以是長128位元,但本文揭示之實施例也可以64-位元寬或其它大小運算元操作。此實例的壓縮字格式320可以長128位元及含有8個壓縮字資料元件。各個壓縮字含有16位元之資訊。圖3A之壓縮雙字組格式330可以長128位元及含有4個壓縮雙字組資料元件。各個壓縮雙字組資料元件含有32位元之資訊。壓縮四倍字可以長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。因此,全部可用的位元皆可被使用。此種儲存配置提高了處理器的儲存效率。同時,存取16個資料元件,現在一次操作可在16個資料元件上以並列方式進行。有符號的壓縮位元組表示型態345例示有符號的壓縮位元組之儲存。注意每個位元組資料元件的第八個位元可以是符號指示符。無符號的壓縮字表示型態346例示字7至字0如何能儲存於SIMD暫存器。有符號的壓縮字表示型態347可類似無符號的壓縮字表示型態346。注意每個字資料元件的第十六個位元可以是符號指示符。無符號的壓縮雙字組表示型態348顯示如何儲存雙字組資料元件。有符號的壓縮雙字組表示型態349可類似無符號的壓縮雙字組暫存器中表示型態348。注意所需符號位元可以是各個雙字組資料元件的第32位元。
圖3D例示操作編碼(opcode)的一實施例。又復,格式360可包括暫存器/記憶體運算元定址模式,對應於在全球資訊網(www)上intel.com/design/litcentr得自加州聖塔克萊拉的英特爾公司的「IA-32英特爾架構軟體發展者手冊第2輯:指令集參考」中描述的操作編碼格式類型。於一個實施例中,指令可藉欄位361及362中之一或多者編碼。每個指令至多識別兩個運算元位置,包括至多兩個來源運算元識別符364及365。於一個實施例中,目的地運算元識別符366可與來源運算元識別符364相同,而於其它實施例中可能不同。於另一個實施例中,目的地運算元識別符366可與來源運算元識別符365相同,而於其它實施例中可能不同。於一個實施例中,由來源運算元識別符364及365識別的來源運算元中之一者可被文字串比較操作的結果覆寫,而於其它實施例中識別符364對應於來源暫存器元件及識別符365對應於目的地暫存器元件。於一個實施例中,運算元識別符364及365可識別32-位元或64-位元來源及目的地運算元。
圖3E例示依據本文揭示之實施例具有40個或以上位
元的另一個可能的操作編碼(opcode)格式370。opcode格式370對應opcode格式360及包含選擇性前綴位元組378。依據一個實施例指令可由欄位378、371、及372中之一或多者編碼。每個指令至多兩個運算元位置可由來源運算元識別符374及375識別及可由前綴位元組378識別。於一個實施例中,前綴位元組378可使用來識別32-位元或64-位元來源及目的地運算元。於一個實施例中,目的地運算元識別符376可與來源運算元識別符374相同,而於其它實施例中可能不同。至於另一個實施例,目的地運算元識別符376可與來源運算元識別符375相同,而於其它實施例中可能不同。於一個實施例中,一指令在由來源運算元識別符374及375識別的來源運算元中之一者上操作及由來源運算元識別符374及375識別的來源運算元中之一者可藉該指令的結果覆寫,而於其它實施例中由識別符374及375識別的運算元可寫到另一個暫存器中之另一個資料元件。opcode格式360及370允許部分由MOD欄位363及373及由選擇性標度-指數-基數及位移位元組載明的暫存器對暫存器、記憶體對暫存器、暫存器藉記憶體、暫存器藉暫存器、暫存器藉中間、暫存器對記憶體定址。
圖3F例示依據本文揭示之實施例又另一個可能的操作編碼(opcode)格式。64-位元單指令多資料(SIMD)算術運算可透過共處理器資料處理(CDP)指令進行。操作編碼(opcode)格式380描繪具有CDP opcode欄位382 an0064 389的一個此種CDP指令。至於另一個實施例,CDP指令操作的類型可藉欄位383、384、387、及388中之一或多者編碼。每個指令至多可識別三個運算元位置,包括至多兩個來源運算元識別符385及390及一個目的地運算元識別符386。共處理器的一個實施例可在8-、16-、32-、及64-位元值上操作。於一個實施例中,一指令可在整數資料元件上進行。於若干實施例中,一指令可使用條件欄位381條件式執行。至於若干實施例,來源資料大小可藉欄位383編碼。於若干實施例中,零(Z)、負(N)、進位(C)、及溢位(V)檢測可於SOMD欄位上完成。至於若干實施例,飽和類型可藉欄位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的重新命名/配置器單元452及一集合的一或多個排程器單元456。排程器單元456表示任何數目的不同排程器,包括保留站、中心指令窗等。排程器單元456可耦合至實體暫存器檔案單元458。實體暫存器檔案單元458中之各者表示一或多個實體暫存器檔案,其中之不同者儲存一或多個不同資料類型,諸如純量整數、純量浮點、壓縮整數、壓縮浮點、向量整數、向量浮點等狀態(例如,指令指標其乃欲被執行的次一指令的位址)等。實體暫存器檔案單元458可被報廢單元154重疊用以例示其中暫存器重新命名及亂序執行可被實施的各種方式(例如,使用一或多個整序緩衝器及一或多個報廢暫存器檔案;使用一或多個未來檔案、一或多個歷史緩衝器、及一或多個報廢暫存器檔案;使用暫存器對映圖及一集合之暫存器;等)。通常,從處理器外部或從程式師觀點,架構暫存器為可見。暫存器可能不限於任何已知之特定類型的電路。各種不同類型的暫存器可能適合,只要其儲存且提供如本文揭示描述的資料即可。合宜暫存器之實例包括,但非限制性,專用實體暫存器、使用暫存器重新命名的動態配置的實體暫存器、專用與動態配置的實體暫存器之組合等。報廢單元454及實體暫存器檔案單元458可耦合至執行叢集460。執行叢集460可包括一集合之一或多個執行單元162及一集合之一或多個記憶體存取單元464。執行單元462可執行各項操作(例如,移位、加、減、乘)及在各種類型之資料上(例如,純量浮點、壓縮整數、壓縮浮點、向量整數、向量浮點)。雖然有些實施例可包括專用於特定功能或功能集合的多個執行單元,但其它實施例可包括全部執行全部功能的只有一個執行單元或多個執行單元。排程器單元456、實體暫存器檔案單元458、及執行叢集460係顯示為可能為多數,原因在於某些實施例針對某些類型的資料/運算產生分開的管線(例如,純量整數管
線、純量浮點/壓縮整數/壓縮浮點/向量整數/向量浮點管線、及/或記憶體存取管線其各自具有其本身的排程器單元、實體暫存器檔案單元、及/或執行叢集-及於分開的記憶體存取管線之情況下,可實施某些實施例其中只有此管線的執行叢集具有記憶體存取單元464)。也須瞭解當使用分開的管線時,此等管線中之一或多者可以是亂序簽發/執行,及其餘者可以是有序。
記憶體存取單元464之集合可耦合至記憶體單元470,其可包括資料TLB單元472耦合至資料快取單元474耦合至層級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技術(MIPS Technologies)的MIPS指令集;加州善尼維爾的ARM控股(ARM Holdings)的ARM指令集(有選擇性額外延伸諸如NEON))。
須瞭解核心可以多種方式支援多執行緒(執行二或多個並列操作或執行緒集合)。多執行緒支援可藉,例如,包括時間分割多執行緒、同時多執行緒(其中針對實體核心為同時多執行緒的該等執行
緒中之各者,單一實體核心提供邏輯核心)、或其組合進行。此種組合可包括,例如,時間分割提取及解碼及其後同時多執行緒,諸如於英特爾®超執行緒(Hyperthreading)技術。
雖然暫存器重新命名可以亂序執行的情境描述,但須瞭解暫存器重新命名可以使用於有序架構。雖然處理器的例示實施例也可包括分開的指令及資料快取單元434/474及共享L2快取單元476,但其它實施例針對指令及資料兩者可具有單一內部快取,諸如,層級1(L1)內部快取或多個層級的內部快取。於若干實施例中,系統可包括內部快取及可在核心及/或處理器外部的外部快取的組合。於其它實施例中,全部快取可在核心及/或處理器外部。
圖5A為依據本文揭示之實施例處理器500之方塊圖。於一個實施例中,處理器500可包括多核心處理器。處理器500可包括通訊式耦合至一或多個核心502的系統代理器510。又復,核心502及系統代理器510可通訊式耦合至一或多個快取記憶體506。核心502、系統代理器510、及快取記憶體506可透過一或多個記憶體控制單元552通訊式耦合。再者,核心502、系統代理器510、及快取記憶體506可透過一或多個記憶體控制單元552通訊式耦合至圖形模組560。
處理器500可包括用於互連核心502、系統代理器510、及快取記憶體506、及圖形模組560的任何合宜機構。於一個實施例中,處理器500可包括以環為基礎的互連單元508用以互連核心502、系統代理器510、及快取記憶體506、及圖形模組560。於其它實施例中,處理器500可包括用於互連此等單元的任何數目之眾所周知的技術。以環為基礎的互連單元508可運用記憶體控制單元552來輔助互連。
處理器500可包括記憶體階層包含在核心內部一或多個層級的快取、一或多個共享快取單元諸如快取記憶體506、或耦合至該集合之整合式記憶體控制單元552的外部記憶體(未顯示於圖中)。快取記憶體506可包括任何合宜快取記憶體。於一個實施例中,快取記憶
體506可包括一或多個中間-層級快取,諸如層級2(L2)、層級3(L3)、層級4(L4)、或其它層級的快取、最末層級快取記憶體(LLC)、及/或其組合。
於各種實施例中,核心502中之一或多者可進行多執行緒。系統代理器510可包括用來協調及操作核心502的組件。系統代理器單元510可包括例如電力控制單元(PCU)。PCU可以是或可包括用來調節核心502的功率狀態需要的邏輯及組件。系統代理器510可包括用來驅動一或多個外部連結的顯示器或圖形模組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可包括通用處理器,諸如核心(CoreTM)i3、i5、i7、2雙核心(Duo)及四核心(Quad)、至強TM、安騰TM、X尺規TM或強臂TM處理器,其可得自加州聖塔克萊拉的英特爾公司。處理器500可從其它公司提供,諸如ARM控股公司、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可於排程器進行配置,諸如記憶體排程器、快速排程器、或浮點排程器。此等排程器可藉資源排程器584而於圖5B中表示。配置模組582可完全地或部分地藉連結圖2描述的配置邏輯實施。資源排程器584可根據一給定資源來源的就緒狀況及執行指令需要的執行資源之可利用性而判定何時指令就緒準備執行。資源排程器584例如可藉如前文討論之排程器202、204、206實施。資源排程器584可排程指令在一或多個資源上的執行。於一個實施例中,此等資源可在核心502內部,且例如可
以資源586例示。於另一個實施例中,此等資源可在核心502外部,且例如可由快取階層503存取。資源可包括例如,記憶體、快取記憶體、暫存器檔案、或暫存器。在核心502內部的資源可由圖5B中的資源586表示。視需要,寫至或讀取自資源586之值例如可經由快取階層503而與處理器500的其它部分協調。當指令為被分配的資源時,指令可被放置於整序緩衝器588內。當指令被執行時整序緩衝器588可追蹤指令,且可基於處理器500的任何合宜標準而選擇性地重新排序其執行。於一個實施例中,整序緩衝器588可識別可獨立地執行的指令或一串列指令。此等指令或一串列指令可與其它此等指令並列地執行。於核心502中的並列執行可藉任何合宜數目的分開執行區塊或虛擬處理器進行。於一個實施例中,分享資源-諸如記憶體、暫存器、及快取記憶體-可由一給定核心502內部的多個虛擬處理器存取。於其它實施例中,分享資源可被處理器500內部的多個處理實體存取。
快取階層503可以任何合宜方式實施。舉例言之,快取階層503可包括一或多個低層級或中間層級快取,諸如快取572、574。於一個實施例中,快取階層503可包括通訊式耦合至快取572、574的LLC 595。於另一個實施例中,LLC 595可於處理器500的全部處理實體所能接取的模組590中實施。於進一步實施例中,模組590可於得自英特爾公司的處理器之非核心模組中實施。模組590可包括核心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可包括一或多個處理器610、615,其可耦合至圖形記憶體控制中樞器(GMCH)620。額外處理器615的選擇性本質係以虛線標示於圖6中。
各個處理器610、615可以是處理器500的某個版本。然而,須注意整合式圖形邏輯及整合式記憶體控制單元可能不存在於處理器610、615中。圖6例示GMCH 620可耦合至記憶體640,其例如可以是動態隨機存取記憶體(DRAM)。針對至少一個實施例,DRAM可結合非依電性快取記憶體。
GMCH 620可以是晶片組或晶片組的部分。GMCH 620可與處理器610、615通訊及控制處理器610、615與記憶體640間之互動。GMCH 620也可作為處理器610、615與系統600的其它元件間之加速匯流排介面。於一個實施例中,GMCH 620透過多點匯流排諸如前端匯流排(FSB)695而與處理器610、615通訊。
又復,GMCH 620可耦合至顯示器645(諸如平板顯示器)。於一個實施例中,GMCH 620可包括整合式圖形加速器。GMCH 620可進一步耦合至輸入/輸出(I/O)控制器中樞器(ICH)650,其可使用來耦合各種周邊裝置到系統600。外部圖形裝置660可包括連同另一個周邊裝置670耦合至ICH 650的分開圖形裝置。
於其它實施例中,額外的或不同的處理器也可存在於系統600中。舉例言之,額外處理器610、615可包括與處理器610相同的額外處理器、與處理器610相異或非對稱的額外處理器、加速器(例
如,圖形加速器或數位信號處理器(DSP)單元)、現場可程式閘陣列、或任何其它處理器。就優劣量表範圍而言,包括架構、微架構、熱、功耗特性等,實體資源610、615間可有多種差異。此等差異本身可有效地表現為處理器610、615間之非對稱性及異質性。至於至少一個實施例,各種處理器610、615可駐在相同的晶粒封裝內。
圖7例示依據本文揭示之實施例第二系統700之方塊圖。如於圖7中顯示,多處理器系統700可包括點對點互連系統,及可包括透過點對點互連750耦合的第一處理器770及第二處理器780。如同處理器610、615中之一或多者,處理器770及780中之各者可以是處理器500的某個版本。
雖然圖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,其於一個實施例中可以是主記憶體局部附接至個別處理器的部分。
使用點對點介面電路776、794、786、798,處理器770、780可透過個別P-P介面752、754而與晶片組790各自交換資訊。於一個實施例中,晶片組790也可透過高性能圖形介面739與高性能圖形電路738交換資訊。
分享快取記憶體(未顯示於圖中)可涵括於任一個處理器中或兩個處理器外部,但又透過P-P互連而與處理器連結,使得當處理器置於低功率模式時任一個或兩個處理器的本地快取資訊可儲存於分享快取記憶體中。
晶片組790可透過介面796耦合至第一匯流排716。於一個實施例中,第一匯流排716可以是周邊組件互連(PCI)匯流排,或匯流排諸如PCI快速匯流排或其它第三代I/O互連匯流排,但本揭示之範圍並非受此所限。
如於圖7中顯示,各種I/O裝置714可耦合至第一匯流排716,連同匯流排橋接器718其將第一匯流排716耦合至第二匯流排720。於一個實施例中,第二匯流排720可以是低接腳數目(LPC)匯流排。於一個實施例中,各種裝置可耦合至第二匯流排720,包括例如鍵盤及/或滑鼠722、通訊裝置727及儲存單元728諸如碟片驅動裝置或可包括指令/代碼及資料730的其它大容量儲存裝置。又,音訊I/O 724可耦合至第二匯流排720。注意其它架構亦屬可能。舉例言之,替代圖7的點對點架構,系統可實施多點匯流排或其它此種架構。
圖8例示依據本文揭示之實施例第三系統700的方塊圖。圖7及8中的相似元件具有相似的元件符號,圖7的某些面向已從圖8刪除以免遮掩了圖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-N及分享快取單元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核心」可儲存於具體有形的機器可讀取媒體(「膠帶(tape)」)上及供給各種顧客或製造廠而載入製造機器內來實際上製造邏
輯或處理器。舉例言之,IP核心諸如由ARM控股公司發展的皮質處理器家族及由中國科學院計算技術研究所(ICT)發展的龍芯IP核心可被授權或出售給各個顧客或被授權方,諸如德州儀器(Texas Instruments)、高通(Qualcomm)、蘋果(Apple)、或三星(Samsung),及於此等顧客或被授權方生產的處理器中實施。
圖11例示方塊圖,例示依據本文揭示之實施例IP核心的發展。儲存裝置1130可包括模擬軟體1120及/或硬體或軟體模型1110。於一個實施例中,表示IP核心設計的資料可透過記憶體1140(例如,硬碟)、有線連結(例如,網際網路)1150、或無線連結1160提供給儲存裝置1130。由模擬工具及模型產生的IP核心資訊然後可傳輸給製造廠,於該處,其可由第三方製造用以進行依據至少一個實施例的至少一個指令。
於若干實施例中,一或多個指令可對應第一類型或架構(例如,x86)及在不同類型或架構(例如,ARM)的處理器上轉譯或模擬。因此,依據一個實施例的指令可在任何處理器或處理器類型包括ARM、x86、MIPS、GPU、或其它處理器類型或架構上進行。
圖12例示依據本文揭示之實施例,第一類型的指令如何可藉不同類型的處理器模擬。於圖12中,程式1205含有可進行與依據一個實施例的指令相同的或實質上相同的功能之若干指令。但程式1205的指令可以屬於與處理器1215不同的或不相容的類型及/或格式,表示程式1205中的該類型指令本來可能無法藉處理器1215執行。然而,借助於模擬邏輯1210,程式1205的指令可被轉譯成本質上可由處理器1215執行的指令。於一個實施例中,模擬邏輯可於硬體具體化。於另一個實施例中,模擬邏輯可於含軟體的具體有形機器可讀取媒體中具體化,用以將程式1205中的該類型指令轉譯成本質上可由處理器1215執行的類型。於其它實施例中,模擬邏輯可以是固定功能硬體或可規劃硬體與儲存於具體有形機器可讀取媒體上的程式的組合。於一個實施例中,處理器含有模擬邏輯,而於其它實施例中,模擬邏輯存在
於處理器外部且可由第三方提供。於一個實施例中,處理器可藉由執行含在或與處理器相關聯的微代碼或韌體而載入於含軟體的具體有形機器可讀取媒體中具體化的模擬邏輯。
圖13為依據本發明之實施例對比使用軟體指令轉換器來將於來源指令集中之二進制指令轉換成於目標指令集中之二進制指令的方塊圖。於該具體實施例中,該指令轉換器為軟體指令轉換器,但另外地,指令轉換器可於軟體、韌體、硬體、或其各種組合中實施。圖13顯示於高階語言1302的程式可使用x86編譯器1304以產生x86二進制碼1306,其本質上可由具有至少一個x86指令集核心的處理器1316執行。具有至少一個x86指令集核心的處理器1316表示藉由可相容地執行或以其它方式處理下列的能夠進行與具有至少一個x86指令集核心的英特爾處理器實質上相同功能的任何處理器:(1)英特爾x86指令集核心的指令集之實質部分或(2)靶定於在具有至少一個x86指令集核心的英特爾處理器上跑的應用程式或其它軟體的目標碼版本,以便達成與具有至少一個x86指令集核心的英特爾處理器的實質上相同結果。x86編譯器1304表示可操作來產生x86二進制碼1306(例如,目標碼)的編譯器,其有或無額外鏈路處理,能在具有至少一個x86指令集核心的處理器1316上執行。同理,圖13顯示高階語言1302中的程式可使用其它指令集編譯器1308編譯用以產生其它指令集二進制碼1310,其本質上可由沒有至少一個x86指令集核心的處理器1314(例如,具有執行加州善尼維爾MIPS技術公司的MIPS指令集及/或加州善尼維爾ARM控股公司的ARM指令集之核心的處理器)執行。
指令轉換器1312係用來將x86二進制碼1306轉換成其它指令集二進制碼1311,其本質上可由沒有至少一個x86指令集核心的處理器1314執行。此種經轉換的代碼可以或可非與從其它指令集編譯器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可提供存取至或自通訊模組,諸如藍牙模組1470、高速3G數據機1475、全球定位系統模組1480、或實施通訊標準諸如802.11的無線模組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進行。浮點操作可要求多個時鐘週期來執行諸如2至10個週期。於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)實施。
於各種實施例中,處理器包括邏輯或其它電路來判定何時指令可藉由所謂立即收合而收合或自管線的執行部分移除。更特別
地,如本文揭示描述,實施例可識別某些輸入指令,例如,特定以整數為基礎的指令,及以提高性能(例如,藉由每週期指令(IPC)增加)及減低相依性連鎖的方式提供用於此等指令的以非執行單元為基礎的處理。此等以整數為基礎的指令可包括所謂立即值,其為被提供以指令欲用作為指令執行的額外來源之數值。因此,收合某些操作的立即值使得具有零時鐘延遲的此等操作能夠執行,及無於執行邏輯中之執行。如此,藉由減低關聯相依性連鎖實施例提高了性能(包括IPC)。
至於實例,藉由將配置時的小立即值累加(收合)成更寬廣的累加器收合立即值(FIMM)及將該收合立即值儲存於立即緩衝器,如本文揭示描述的立即收合能夠移除整數暫存器與立即值間之額外/接續操作。一旦已收合,此整數暫存器可由其實體暫存器檔案(PRF)分錄(在由RAT狀態指示的其PRF分錄)及FIMM值(儲存於立即緩衝器)及運算(例如,ADD/SUB、移位或其它運算)表示。當整數值不再維持收合時,轉而,該值解除收合進入目標暫存器的目的地暫存器。解除收合操作可被進行作為造成解除收合的操作的一部分。
雖然本發明之範圍並不受限於此一面向,但如本文揭示描述的立即收合可連合涉及單一來源及立即(注意來源及立即中之一者或二者可以是明確的或暗示的)的全部加法及減法操作。實施例也可用於POP及PUSH操作,其包括ESP暫存器的暗示性增加或減少。
於一實施例中,解碼邏輯可檢測立即收合機會,諸如整數暫存器與立即值間之ADD/SUB操作。替代在管線的執行期期間透過執行邏輯的算術邏輯執行此等操作,立即值係在配置期累加入專用收合立即(FIMM)緩衝器。藉此方式,立即收合以小型立即切割重複操作的長相依性。針對給定代碼,此種收合可移除顯著數目的操作,及藉由更佳地運用可用的ALU資源而允許駐在關鍵路徑上的其它操作運作更快速。
於一個實施例中,指令可屬於擇定類型以使其能收合。於一實施例中,此等指令可屬具有立即值的類型ADD、SUB、MOVE。
於實施中,立即值可限於某個大小,例如小於臨界寬度。此等指令的實例包括下列指令語義:
為了實施如本文揭示描述的指令收合,收合立即(FIMM)緩衝器可設在處理器內部,其可與暫存器重新命名別名表(RAT)相關聯。當特定指令經識別用於立即收合時,此緩衝器中的分錄可於配置期期間插入。
現在參考圖18A,顯示具有以回路為基礎的操作之代碼排列。更明確言之,如於圖18中顯示,代碼方塊1810提供指令回路其中每個回路迭代累加值經更新(例如,藉由遞增指令(INC)來遞增累加器暫存器(EAX)之值)。其後,此累加器暫存器之值被用作為自記憶體指令的移動之記憶體位置,在其自記憶體讀取之後係儲存於給定架構暫存器(例如,於圖18A中顯示的不同回路中的XMM4及XMM5)。當然其後,額外指令例如用來進行各種計算者可在該等回路中進行。
如於圖18A中例示,沒有如本文揭示描述的立即收合,出現如於代碼方塊1820中例示迭代間的同調,使得第二回路迭代的指令無法進行直到出現第一回路迭代的指令為止(使得EAX的適當遞增值可供第二移動操作利用)。換言之,在各個回路迭代之始遞增的EAX值後來用來存取記憶體位置。加法運算延遲了記憶體存取,及不同的迭代有耗用在等候該值的不等量時間。
相反地,使用具有立即收合啟用的本發明之實施例,增量(作為操作實例)可在處理器的執行邏輯外部執行(例如,於RAT或類似結構內部)及且可以零延遲配置執行。因此,各個回路並不依賴先前回路操作的結果,及因此,多個回路可並列執行而改良IPC。
因此如於圖18B中例示,使用如本文揭示描述的立即收合,原先代碼節段1830(其可對應原先代碼節段1810)可移除回路的迭代間之同調。又復,如於代碼節段1840中例示,其表示自解碼器或其它邏輯提供的已解碼指令用以識別如本文揭示描述的用於立即收合的機會,增量指令(於一實施例中,其各自可呈微操作(uop)實施)可從排程入處理器的執行邏輯中移除。又更,針對此等操作的實體暫存器檔案(PRF)分錄無需經配置。取而代之,當配置入RAT時,可進行立即增量操作,及所得收合立即資料可儲存於收合立即緩衝器的對應分錄內,容後詳述。
現在參考圖19,顯示依據一個實施例暫存器重新命名別名表及相關結構的方塊圖。如於圖19中顯示,電路1900可以是處理器的部件,諸如給定多核心處理器或其它SoC。如圖可知,電路1900包括RAT 1905及收合立即緩衝器1920。雖然於圖19之實施例中顯示為分開結構,但於若干實施例中,緩衝器1900可實施為RAT 1905內部的額外欄位。此種額外RAT狀態可包括,每個整數暫存器:用以指示針對該值儲存收合立即的有效指示符(VIF);及可以是給定量位元的收合立即欄位(FIMM)。注意在RAT中表示的各個旗標組也可與用在旗標重建事件中的額外欄位相關聯:(LastIMM)最末立即值,亦即與收合指令相關聯的立即值(換言之,最末立即值加到收合立即值)。
首先參考RAT 1905,提供多個分錄19100-1910n。如圖可知,各個分錄包括多個欄位,包括邏輯識別符欄位19120-1912n及對應實體識別符欄位19140-1914n。於一個實施例中,針對處理器的各個架構暫存器可有一對應分錄。此等暫存器可包括多種眾所周知的架構暫存器,諸如累加器暫存器(EAX)、堆疊指標暫存器(ESP)、通用暫存器(例如,R1-R7)、及旗標暫存器。特別如於圖19中顯示,分錄1910n-1可與進位旗標暫存器(C)相關聯,及分錄1910n可與OSPAZ旗標暫存器相關聯,其提供各項旗標資訊於一個實施例中,包括溢位(O)旗標、符號旗標(S)、同位旗標(P)、輔助旗標(A)及零位旗標(Z)。如圖進一步例示,
各個分錄1910進一步包括一對應實體識別符欄位19140-1914n。各個此種欄位可對與對應架構暫存器相關聯的實體暫存器儲存一個識別符號其它指標,其可儲存於處理器的PRF。
仍然參考圖19,收合立即緩衝器1920包括對應分錄19300-1930n。各個此種分錄1930係於RAT 1905中的一對應分錄1910相關聯。如前文討論,於若干實施例中,收合立即緩衝器1920可實施為RAT 1905內部的額外欄位。於所顯示實施例中,各個分錄1930包括儲存資訊用的各種欄位。有效欄位19320-1932n係用來儲存有效指示符而指示針對對應值儲存有效收合立即。第二欄位19340-1934n係經組配以儲存對應收合立即值(FIMM)的收合立即欄位。於一個實施例中,第二欄位1934的最大寬度可以是13位元。容後詳述,針對與旗標暫存器相關聯的分錄1930n-1及1930n設有第三欄位19361及19362,使其能儲存最末立即值(LastIMM),其對應於最末立即值,亦即,累加入FIMM及產生旗標欄位中之一者的最未收合指令的立即值。
使用存在於收合立即值緩衝器1920中之資訊,旗標值可被重建,即便對應指令(產生資料及旗標部分兩者)經收合及因而不在處理器的執行邏輯內部執行亦復如此。瞭解同時以此高層級顯示於圖19之實施例,許多變化及替代皆屬可能。
現在參考圖20,顯示依據一個實施例與收合立即緩衝器相關聯的額外邏輯之方塊圖。如於圖20中例示,設置收合立即緩衝器1920,及可包括多個分錄,如前文討論。如於圖20中進一步顯示,多個累加器19400-19404係與收合立即緩衝器1920相關聯。注意此等累加器係為分離且與處理器管線的執行邏輯分開。舉例言之,此等累加器可於RAT/收合立即緩衝器結構本身內部實施使得其不在關鍵路徑上。當分錄被配置入收合立即緩衝器1920內部時,此等累加器1940可發揮槓桿作用來進行立即值累加。須瞭解然於圖20的特定例示中顯示五個累加器,但累加器的數目可各異,例如取決於處理器的uop配置寬度。
於一實施例中,各個收合指令或uop具有一FIMM及一uop的目前IMM。若配置窗口的第一個uop被收合,則第一加法器19400將產生該uop的目的地之FIMM。若配置窗口的第二個uop被收合,則其目前IMM值被加到其來源的FIMM。若第一個uop的目的地被用作為第二uop的來源,則第二uop的FIMM為兩個uop的暫存器之FIMM與目前IMM之累加值。如此若,EAX FIMM=6;uop 0 EAX=INC EAX EAX.FIMM=6+1;uop 1 EAX=INC EAX EAX.FIMM=6+1+1;及等等。
如於圖20中例示,當全部uop具有相同的目的地/來源時,累加器1940耦合而接收前一個累加器的輸出作為來源。否則各個累加器1940分開且自陣列讀取FIMM值。通常,各個uop可從其前方的各個uop或從陣列讀取累加資料。
於收合uop的配置,將讀取每個來源運算元儲存於RAT FIMM陣列的FIMM。然後,與目的地相關聯的每個uop IMM值經累加及儲存於目的地暫存器的RAT分錄。如於圖20中例示,各個累加器1940係經組配以從收合立即緩衝器1920(或上游累加器)接收一對應來源立即值(其可對應累加收合立即值)及連同欲收合的uop之輸入立即值進行累加。轉而,各個累加器1940係經組配以輸出一累加收合立即值,其可提供給與欲收合的接續uop相關聯的下游累加器(及進一步儲存於與收合uop的目的地相關聯的收合立即緩衝器1920的對應分錄中)。
為了例示性目的,參考累加器19400,其係經組配用以自收合立即緩衝器1920接收第一來源收合立即值(S1 FIMM),及將該值連同欲收合的第一uop的立即值(Uop 0 imm)累加。及轉而,累加器19400輸出與收合指令之目的地相關聯的累加收合立即值(dest Uop 0 FIMM)。注意收合立即資料可由各個經配置的uop用作為來源或可被解除收合。換言之,收合IMM資料可由各個經配置的uop用作為來源或可被解除收合。當不再可能收合時進行解除收合。此點可出現在
FIMM的大小超過儲存於FIMM緩衝器中的最大值時,或出現在收合值係由無法被收合的操作耗用時。無法被收合的操作實例包括兩個暫存器的非ADD/SUB操作或ADD/SUB操作。
如前文討論,當一給定指令無法被收合時,諸如欲在兩個來源值上進行算術運算時,可進行解除收合。現在參考圖21,顯示依據一個實施例算術邏輯單元(ALU)2000的方塊圖。注意於某些情況下,ALU 2000可以是獨立單元,例如,與RAT/收合立即緩衝器相關聯,因此當進行解除收合時,可不在關鍵路徑上進行,及與ALU或處理器管線的執行邏輯之其它邏輯電路分開執行。
如於圖21中例示,為了啟用針對兩個來源值的解除收合操作,提供第一對累加器2010及2015。各個此種累加器接收對應來源值(亦即,未收合指令的來源值,此處顯示為來源值S1及S2),及與此二來源值相關聯的收合立即值(分別為S1.FIMM及S2.FIMM),及產生部分和值。於累加器2010及2015中累加之後,此等部分和值提供給另一個累加器2020,其累加該等值因而產生指令之和,其可提供給一給定消費者(及例如儲存於PRF或其它臨時處理器儲存裝置中)。須瞭解雖然於圖21中顯示於高層級,但許多變化及替代皆屬可能。當然須瞭解ALU及其它執行邏輯結構的每個操作及每個時限可產生其它解除收合方案。如此,實施例提供在一給定時框內部的操作性能提升及操作數目增加。
現在參考圖22,顯示依據本發明之一實施例處理器的部分之方塊圖。如圖22中繪示,所顯示的處理器2100的部分對應各種前端及執行單元,其轉而耦合至一或多個後端單元。注意術語「單元」、「邏輯」、及「電路」於本文中可互換使用來描述適用於進行特定任務的硬體電路。於圖22中,解碼指令提供給配置邏輯2110。於指令的配置期中,配置邏輯2110可經組配以配置一分錄用於RAT 2120中的目的地運算元(而指示PRF中的實體暫存器),及重新命名存在RAT 2120的分錄內部的一或多個來源運算元。
仍然參考圖22,保留站2130耦合至一或多個實體暫存器檔案2140。於各種實施例中,保留站2130提供自RAT 2120的實體暫存器識別符來排程該給定指令用來於一或多個執行單元2150中之一給定者內執行。仍然參考圖22,執行單元2150耦合至報廢單元2160,其適用於在執行單元2150內部執行之後報廢此等指令。
仍然參考圖22,注意可有多個旁通網路。特別如於圖22中顯示,第一旁通路徑2125可耦合於RAT 2120與PRF 2140間。使用此種旁通路徑,以收合指令為例,某些值諸如目的地值可從RAT直接提供給PRF。更明確言之,此種旁通路徑表示透過保留站2130發送給ALU的FIMM值;也須注意被發送的IMM值可於飛行中進行若干計算且可考慮隱藏旁通層級。此外,例如針對分支的情況,來自RAT 2120之值可透過第二旁通路徑2155進一步直接提供給報廢單元2160。須瞭解雖然於圖22之實施例中顯示於高層級,但許多變化及替代皆屬可能。
現在參考圖23,顯示依據本發明之一實施例一種方法的流程圖。更明確言之,圖23中顯示之方法2200可藉處理器的各種硬體進行,包括解碼邏輯,其可由硬體電路、韌體及/或軟體的組合實施來識別可能接受收合的指令,及提供此等已收合(及未收合)指令於RAT及相關結構內部的適當處理。
如圖顯示,方法2200始於擇定類型的整數指令(方塊2210)。至於一實例,此種指令可以是算術運算,諸如將立即值加到單一來源運算元及提供結果給目的地運算元的指令。須瞭解雖然於圖23中描述為以指令為基礎,但於許多情況下,操作可以uop為基礎進行。於菱形2215,判定該指令是否可收合。於一實施例中,此種判定可基於指令的格式,包括立即值比較臨界值及/或比較累加收合立即值的寬度來判定累加收合立即值是否將溢位。若經識別指令可經收合,則控制傳給方塊2220於該處,於配置期,指令的立即值可連同收合立即值累加。此項結果儲存於與指令之目的地相關聯的收合立即緩衝器分錄內。
然後於方塊2225,指令不發送到保留站,及取而代之可提取下一個指令進行處理。因此,沒有此種收合指令在處理器管線內部的排程或執行。
注意於方塊2225,當一指令欲被收合時,無需重新命名來源或配置一PRF分錄給目的地,原因在於指令係不被執行。取而代之,當立即值在每個暫存器累加器的RAT中累加時,可使用原先PRF分錄。
於一個實施例中,唯有當立即值可能在累加器內表示而無溢位時uop才可被收合。否則,指令係以習知方式執行(及一或多個來源可被解除收合(視是否適合而定))。仍然參考圖23,取而代之,若於菱形2215判定指令不可被收合,則控制傳給方塊2230於該處於配置期中,目的地暫存器可於RAT內部配置,一或多個來源暫存器可被重新命名。針對該目的地暫存器,其係藉RAT配置使得實體暫存器配置給PRF。針對該(等)來源暫存器,藉將邏輯暫存器對映入PRF中之實體暫存器位置,可進行藉RAT的重新命名。
仍然參考圖23,其次判定該指令的任何來源是否欲被解除收合(菱形2235)。注意於菱形2235可能出現此項判定,原因在於即便uop未被收合,其來源中之一或多者可能需被解除收合。若否,則控制傳給方塊2240於該處當其來源就緒準備執行時,操作可發送給欲被調度的保留站。於方塊2245,目的地值可得自PRF或旁通網路。其後於方塊2250,在來源暫存器值間可進行給定數學運算,及結果提供給一給定消費者(方塊2280)。注意此種消費者可直接接收該值,例如,透過旁通路徑接收。此外,結果可儲存於PRF中的適當目的地位置。
仍然參考圖23,取而代之若判定一或多個來源欲被解除收合,則控制自菱形2235傳給方塊2260。於該處可準備各個來源的收合立即值。此外,如前文討論,當來源就緒時發送操作給欲被調度的保留站。其次於方塊2265,目的地值可得自實體暫存器檔案或旁通網路。此外,相關聯的收合立即值可得自收合立即緩衝器。其後於方塊
2270,在來源暫存器值及其相關聯的收合立即值間可進行給定數學運算,及如前文討論,於方塊2280結果提供給消費者。須瞭解雖然於圖23之實施例中顯示於高層級,但許多變化及替代皆屬可能。
x86 ISA界定產生全部旗標的操作(例如,ADD操作設定全部旗標,包括C旗標及全部OSPAZ旗標);產生旗標的部分集合操作(例如,INC只設定OSPAZ旗標);及不產生旗標的操作(例如,MOVE或LES)。x86 ISA也界定消耗旗標的不同集合的指令(例如,加法帶有進位(ADC)指令只消耗C旗標,而跳躍條件代碼(JCC)或條件式移動(CMOV)指令能使用各種旗標組合)。
於許多使用情況下,罕見使用由大部分旗標產生操作所產生的旗標。出現此點原因在於大部分旗標消費者諸如JCC操作係巨集融合旗標產生操作(例如,ADD及JCC),及其產生的旗標或係不由JCC以外的任何其它指令消耗,或係由下一個旗標產生操作所超越。實施例提供旗標組的表示型態方案,使得當不需要時潛在旗標操作能被移除,及後來視需要加以回復。針對暗示旗標產生的各個收合指令,可判定是否欲簽發只有旗標產生操作。實施例也使得旗標值回復來允許當故障時的狀態復原。
為了於RAT中重建旗標分錄(其包括指向旗標的PRF值之PRF分錄),潛在收合指令係以一集合之數值及操作置換。此等數值包括累加IMM值及加至該累加IMM值的最末IMM值。
為了產生旗標,可進行下列操作,於一個實施例中:新累加IMM:=累加IMM值-最末IMM值[Eq.1];(於該處累加IMM值係儲存於FIMM(及最末IMM值為欲從其中重建旗標的收合指令的立即));新暫存器:=暫存器+新累加IMM[Eq.2];(於該處暫存器為指向收合指令的來源之PRF分錄之指標);及旗標:=(新暫存器+最末IMM值).旗標-加法的旗標[Eq.3]。
前兩個操作將暫存器復原至當第三操作重建旗標值(無聲收合指令的旗標值其為此等旗標的最末旗標產生操作)時被移除的操作前之值。
旗標產生uop可匹配旗標的未來消費者。於配置窗口期間,每當由第一操作所產生的旗標被第二旗標產生操作超越時,則由第一操作進行的旗標產生可被忽略。若操作的資料及旗標兩部分可被去除(因語法或藉IMM收合故),則可移除完整操作。否則若操作的資料部分可被移除,但旗標不被未來消費者移除,則為了旗標消費者操作可簽發操作來只產生旗標。
於各種實施例中,旗標移除程序可維持於單一配置窗口內部或跨數個配置窗口加以檢查。於任一種情況下,受測集合的最末旗標產生uop可經控制成進行來確保當繼續配置時,所得旗標無償提供給任何未來消費者。移除操作的資料部分去除了其操作對目的地資料暫存器的資料相依性而允許IPC增加。旗標部分可被執行而性能有極小或無減低。
現在參考表1,顯示依據一實施例一集合之指令及針對該等指令的旗標產生控制實例。
於表1之實例中,分支指令(若溢位即跳躍(JO))要求旗標,及因此第一INC指令用以產生旗標,但無需其資料結果(其能被收合)。第二INC指令能被完全地移除,而第三INC指令可產生用於下一個配置窗口的潛在旗標消費者之旗標。
現在參考表2,顯示依據一實施例一集合之指令及旗標產生的另一個實例。
於表2之實例中,全部收合uops無需產生旗標,原因在於巨集分支(Add_JO)將產生全部旗標,及其乃於配置窗口中的最末旗標產生uop(注意根據x86語義學,LEA不產生任何旗標),確保未來旗標消費者可接收其旗標值。
於一個實施例中,旗標方程式可由RAT結構維持,使得若下一個操作故障,則於故障處理開始前包括暫存器值及旗標的架構狀態能被重建且置放PRF中。於各種實施例中,重建邏輯可被提供來使用針對該項任務調整的專用集合之操作而重建該等旗標。於一個此種情況下,重建邏輯可被實施為微代碼。
於非微代碼流動期間,旗標為旗標消費者uops為可資利用。重建邏輯可經組配以確保其可在例外處理上重建旗標。若在不進行旗標產生的uop上在窗口內部發生故障,則正確旗標值經收合而無法就此被消耗(例如,由ADC uop消耗)。實施例例如可透過重建請求而觸發重建邏輯來於例外處理的準備期間重建旗標。藉由減少簽發給處理器管線的旗標產生uop之數目,IPC可提高而功耗可減低。
現在參考圖24,顯示依據一實施例用於進行旗標操作的方法之流程圖。如圖可知,方法2300始於識別欲被移除的指令(方塊2310)。此種指令例如可以是單一來源運算元與立即值間之基於整數的算術操作,使得該指令能被收合或移除。當然瞭解其它類型的指令也能被移除。
其次,於菱形2320,判定是否欲進行指令的旗標操作。換言之,針對至少某些指令,操作包括欲在指令的來源資訊上進行的資料部分操作,及旗標部分操作兩者,後者基於例如潛在資料部分的結果而產生旗標結果。
可考慮各種標準及分析以判定是否欲進行指令的旗標部分。可以這麼說,若旗標結果將由另一個指令所消耗,則將進行旗標部分。於該種情況下,控制傳給方塊2330,於該處,可進行一或多個旗標部分以獲得旗標結果。此種旗標結果(或多個結果,原因在於某些指令可針對多個旗標暫存器產生旗標結果)可被儲存於PRF中的位置。更明確言之,於PRF中的這個位置係由RAT中的對應旗標分錄識別,其指向PRF內部的實體目的地。因此,此時旗標結果係儲存於RAT中的對應位置,及完成針對此一指令的旗標操作。注意若執行操作,旗標係儲存於64-位元資料的6-位元延伸。資料及旗標兩者皆係儲存於相同的PRF分錄。旗標產生偶爾係與ALU操作並列進行,類似ADD操作的零旗標產生,或在該操作之後進行,類似AND操作的零旗標產生。
仍然參考圖24,取而代之,若判定不進行指令的旗標部分,則控制傳給方塊2340。此處,配置時收合指令的立即值可連同收合立即值累加。此種所得和能儲存於與收合指令的目的地及旗標分錄兩者相關聯的收合立即緩衝器分錄中。此外,最末立即值本身能儲存於旗標分錄的最末立即欄位。又,最末立即值(其於一實施例中可以是收合指令的立即值本身)係儲存於收合立即緩衝器的一或多個旗標分錄的最末立即值欄位內。
仍然參考圖24,其次,判定指令的此種收合旗標部分的旗標狀態是否欲被重建(如於菱形2350判定)。基於接收到重建信號可判定出現此種重建,此種重建信號例如係因其中欲回復旗標狀態的故障或其它錯誤而產生。若欲出現此種重建,則控制傳給方塊2360於該處可執行微代碼處理器。更明確言之,微代碼可經執行來使用存在於收合立即緩衝器中的資訊而重建旗標狀態,容後詳述。須瞭解雖然於圖
24之實施例中顯示於此種高層級,但許多變化及替代皆屬可能。舉例言之,須瞭解旗標操作的收合也可針對其中進行資料部分的指令進行。
現在參考圖25,顯示依據一實施例用於重建旗標資訊的方法之流程圖。於各種實施例中,方法2400可由處理器內部的硬體邏輯進行,諸如給定邏輯電路及/或硬體、軟體、及/或韌體的組合。於一特定實施例中,方法2400可由微代碼處理器進行以執行重建。如圖可知,方法2400始於方塊2410,基於累加立即值及最末立即值而產生新累加立即值。注意累加立即值乃末次操作之後(在旗標欲被重建之前)的收合累加立即值。及最末立即值可以是最末立即值加到收合累加立即值(亦即被收合的該操作的立即值)。因此,方塊2410係經組配以決定末次操作前的收合立即值。
其次,於方塊2420,基於目前暫存器值及此種新累加立即值可產生新暫存器值。注意此目前暫存器值為儲存於由RAT內部的一分錄指向的一PRF中之值。因此,方塊2420係經組配以決定對應於收合指令的來源的新暫存器值。於有些情況下,操作可並列地進行,及因而並未實際儲存新暫存器值。其後,於方塊2430,基於此新暫存器值及最末立即值可重建一或多個旗標值,若該指令已被進行則其產生收合指令的結果(資料部分)。於有些情況下,針對全部旗標或針對各個分開的旗標欄位,旗標重建可並列地進行。因此,基於如上推衍的新暫存器值可重建旗標結果。最後,於方塊2440,(多)旗標值可提供給給定消費者。舉個實例,此旗標值可提供用於儲存於旗標暫存器(如由RAT的旗標分錄內部的指標識別)。又復,於有些情況下,旗標結果中之一或多者可直接提供例如給例外處理器用於解析故障或其它錯誤。須瞭解雖然於圖25之實施例中顯示於此種高層級,但許多變化及替代皆屬可能。
於一個實例中,一處理器包含用以提取指令的一提取邏輯,用以解碼該等經提取的指令的一解碼邏輯,及用以執行至少部分的該等指令之一執行邏輯。該解碼邏輯可判定欲被收合的一第一指令的
一旗標部分是否欲被進行,及若否,則累加該第一指令之一第一立即值連同得自一立即緩衝器的一分錄的一收合立即值。
於一實例中,該處理器進一步包含重建邏輯用以,當該解碼邏輯判定該第一指令的該旗標部分係不被進行時,進行該第一指令的該旗標部分用以重建該第一指令的一旗標結果。
於一實例中,該重建邏輯係用以回應於一重建請求而進行該旗標部分,該重建請求回應於一故障。
於一實例中,該重建邏輯包含微代碼。
於一實例中,該重建邏輯係用以:基於該第一立即值與該第一立即值與該收合立即值的該累加間之一操作而計算一第一值;及基於該第一值與該第一指令的一來源值間之操作而計算一第二值。
於一實例中,該重建邏輯係用以至少部分地基於該第二值與該第一立即值間之一操作而決定該旗標結果。
於一實例中,該解碼邏輯係用以判定當一後續指令係用以消耗該第一指令的一旗標結果的至少一部分時該旗標部分係將被進行。
於一實例中,該解碼邏輯係用以判定當該第一指令為一指令集的一最末指令時該旗標部分係將被進行。
於一實例中,該解碼邏輯係用以判定當在該第一指令後方的一第二指令係將超越該第一指令的一旗標結果時該旗標部分係將不被進行。
於一實例中,該解碼邏輯係用以判定一第二指令的一旗標部分係將被進行,但該第二指令的一資料部分係將不被進行。
於一實例中,該立即緩衝器包含多個分錄,其各自與在一暫存器重新命名別名表(RAT)中之一對應分錄的一指令的一運算元相關聯,及包括用以儲存一收合立即值的一第一欄位及用以儲存一有效指示符的一第二欄位用以指示儲存於該第一欄位的該收合立即值是
否有效,於該處一累加邏輯係用以累加儲存於該立即緩衝器的一第一分錄中的該收合立即值連同一或多個指令的一或多個立即值。
注意前述處理器能使用各種手段實施。
於一實例中,該處理器包含結合於一用戶設備觸摸啟用裝置中的一SoC。
於另一個實例中,一系統包含一顯示器及一記憶體,及包括如上實例中之一或多者的該處理器。
於另一個實例中,一方法包含:於一處理器的一第一邏輯中,判定具有一第一立即值的一第一指令是否能被收合;回應於判定該第一指令能被收合,累加該第一立即值與儲存於該處理器之一立即緩衝器的一第一分錄中的一收合立即值,用以獲得一累加第一立即值;判定該第一指令的一旗標部分是否能被收合;回應於判定該旗標部分能被收合,儲存該第一立即值於該立即緩衝器的至少一個旗標分錄的一欄位中;及阻擋該第一指令給予該處理器的一執行邏輯。
於一實例中,該方法進一步包含當一後續指令係用以消耗該第一指令的一旗標結果的至少一部分時判定該旗標部分不能被收合。
於一實例中,該方法進一步包含當該第一指令為一指令集的一最末指令時判定該旗標部分不能被收合。
於一實例中,該方法進一步包含回應於一重建請求而重建該第一指令之一旗標結果,該重建請求回應於一故障。
於一實例中,重建該旗標結果包含:基於該第一立即值與該第一立即值與該收合立即值的該累加間之一操作而計算一第一值;基於該第一值與該第一指令的一來源值間之操作而計算一第二值;及至少部分地基於該第二值與該第一立即值間之一操作而決定該旗標結果。
於另一個實例中,包括指令的一電腦可讀取媒體係用以進行如上實例中之任一者的方法。
於另一個實例中,包括資料的一電腦可讀取媒體係由至少一個機器使用來製造至少一個積體電路來進行如上實例中之任一者的方法。
於另一個實例中,一設備包含用來進行如上實例中之任一者的方法的構件。
於另一個實例中,一系統包含具有一執行邏輯及耦合至該執行邏輯的第一邏輯的一處理器。該第一邏輯可防止一第一指令的一資料部分及一旗標部分於該執行邏輯中執行。該第一指令規定一單一來源運算元與一第一立即值間之一算術運算。該第一邏輯可累加該第一立即值連同該第一指令的該單一來源運算元相關聯的一收合立即值及儲存該第一立即值於與一旗標暫存器相關聯的一立即緩衝器的至少一個分錄中。該系統可進一步包括耦合至該處理器的一動態隨機存取記憶體。
於一實例中,該處理器進一步包含重建邏輯用以進行該第一指令的該旗標部分,回應於一重建請求,重建該第一指令之一旗標結果。
於一實例中,該重建邏輯係用以:基於該第一立即值與該第一立即值與該收合立即值的該累加間之一操作而計算一第一值;及基於該第一值與該第一指令的一來源值間之操作而計算一第二值。
於一實例中,該重建邏輯係用以基於該第二值及該第一立即值而產生該旗標結果。
須瞭解如上實例之各種組合皆屬可能。
實施例可使用於許多不同類型的系統中。舉例言之,於一個實施例中,可安排一通訊裝置來進行本文描述的各種方法及技術。當然,本發明之範圍並不限於通訊裝置,及取而代之,其它實施例可被指引到用於處理指令的其它類型的設備,或包括指令的一或多個機器可讀取媒體其回應於在一計算裝置上被執行,使得該裝置進行本文描述的方法及技術中之一或多者。
實施例可以代碼實施且可儲存於其上已經儲存有指令的一非暫態儲存媒體上,其可被用來規劃一系統用以進行該等指令。實施例也可以資料實施且可儲存於一非暫態儲存媒體上,其若由至少一個機器使用,則將使得該至少一個機器製造至少一個積體電路來進行一或多個操作。更進一步實施例可以包括資訊的一電腦可讀取儲存媒體實施,其當製造成SoC或其它處理器時,係用以組配該SoC或其它處理器進行一或多個操作。儲存媒體可包括,但非限制性,任何類型的碟片包括軟碟、光碟、固態驅動裝置(SSD)、光碟-唯讀記憶體(CD-ROM)、可覆寫式光碟(CD-RW)、及磁光碟、半導體裝置諸如唯讀記憶體(ROM)、隨機存取記憶體(RAM)諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可抹除可規劃唯讀記憶體(EPROM)、快閃記憶體、電氣可抹除可規劃唯讀記憶體(EEPROM)、磁卡或光卡、或適合用來儲存電子指令的任何其它類型的媒體。
雖然已經就有限數目的實施例描述本發明,但熟諳技藝人士將瞭解自其中的無數修改及變化。意圖隨附之申請專利範圍涵蓋落入於本發明之精髓及範圍內的全部此等修改及變化。
2300:方法
2310-2360:方塊
Claims (18)
- 一種處理器,其包含:用以提取指令的一提取邏輯,用以解碼經提取之該等指令的一解碼邏輯,及用以執行至少部分的該等指令之一執行邏輯,其中該解碼邏輯係用以:識別要從該執行邏輯被移除之一第一指令,該第一指令包括一旗標部分和一資料部分,其中作為包括在該第一指令中之該旗標部分係可執行來產生一旗標結果,且其中作為包括在該第一指令中之該資料部分係可執行來產生一資料結果;判定該第一指令之該旗標結果是否要被另一指令所使用;以及回應於該第一指令之該旗標部分不要被另一指令所使用之一判定,而進行下列動作:不執行該第一指令之該旗標部分;將該第一指令之一第一立即值與儲存於一立即緩衝器的一收合立即值欄位中之一收合立即值累加;及將該第一立即值儲存於該立即緩衝器之一最終立即值欄位中。
- 如請求項1之處理器,其進一步包含重建邏輯,其用以進行該第一指令的該旗標部分以重建該第一指令的該旗標結果。
- 如請求項2之處理器,其中該重建邏輯係用以回應於一重建請求而進行該旗標部分,該重建請求回應於一失誤。
- 如請求項2之處理器,其中該重建邏輯包含微代碼。
- 如請求項2之處理器,其中該重建邏輯係用以:基於儲存於該收合立即值欄位與該最終立即值欄位的該等值之間的一運算而計算一新累加立即值;及基於該新累加立即值與該第一指令的一目前暫存值之間的一運算而計算一新暫存值。
- 如請求項5之處理器,其中該重建邏輯係用以至少部分地基於該新暫存值與儲存於該最終立即值欄位的該值之間的一運算而計算該旗標結果。
- 如請求項1之處理器,其中該解碼邏輯係用以回應於該第一指令為一指令集的一最終指令之一判定而執行該旗標部分。
- 如請求項1之處理器,其中該解碼邏輯係用以回應於該第一指令之後的一第二指令係超越該第一指令的一旗標結果之一判定而不執行該旗標部分。
- 如請求項1之處理器,其中該解碼邏輯係用以判定一第二指令的一第二旗標部分要被進行,但該第二指令的一第二資料部分不被進行。
- 如請求項1之處理器,其中該立即緩衝器包含複數個分錄,其各自與具有在一暫存器重新命名別名表(RAT)中之一對應分錄的一指令之一運算元相關聯,且包括用以儲存一收合立即值的一第一欄位及用以儲存一有效指示符的一第二欄位以指示儲存於該第一欄位的該收合立即值是否有效,其中一累加邏輯係用以將儲存於該立即緩衝器的一第一分錄中的該收合立即值與一或多個指令之一或多個立即值累加。
- 一種其上儲存有資料的非暫時性機器可讀取媒體,該資料若由至少一個機器使用,則將使得該至少一個機器製造至少一個積體電路來進行一方法,該方法包含:於一處理器的一解碼邏輯中,識別一第一指令係要從該處理器之該執行邏輯被移除,該第一指令包括一旗標部分和一資料部分,其中作為包括在該第一指令中之該旗標部分係可執行來產生一旗標結果,且其中作為包括在該第一指令中之該資料部分係可執行來產生一資料結果;判定該第一指令之該旗標結果是否要被另一指令所使用;以及回應於判定該第一指令之該旗標部分不要被另一指令所使用,而進行下列動作:不執行該第一指令之該旗標部分; 將該第一指令之一第一立即值與儲存於該處理器之一立即緩衝器的一收合立即值欄位中之一收合立即值累加,以獲得一累加第一立即值;及將該第一立即值儲存於該立即緩衝器的至少一個旗標分錄之一最終立即值欄位中。
- 如請求項11之非暫時性機器可讀取媒體,其中該方法進一步包含:藉由該處理器之重建邏輯,執行該第一指令之該旗標部分以重建該第一指令的該旗標部分之一旗標結果。
- 如請求項12之非暫時性機器可讀取媒體,其中該方法進一步包含回應於一重建請求而重建該第一指令的該旗標部分之該旗標結果,該重建請求回應於一失誤。
- 如請求項13之非暫時性機器可讀取媒體,其中重建該旗標結果包含:基於儲存於該收合立即值欄位與該最終立即值欄位的該等值之間的一運算而計算一新累加立即值;基於該新累加立即值與該第一指令的一目前暫存值之間的一運算而計算一新暫存值;及至少部分地基於該新暫存值與儲存於該最終立即值欄位的該值之間的一運算而決定該旗標結果。
- 一種計算系統,其包含:具有一執行邏輯及耦合至該執行邏輯的第一邏輯之一處理器,該第一邏輯用以識別要從該執行邏輯中之執行被移除的一第一指令,其中該第一指令規定一單一來源運算元與一第一立即值之間的一算術運算,其中該第一指令之一旗標部分係可執行來產生一旗標結果,其中該第一指令之一資料部分係可執行來產生一資料結果,其中該第一邏輯係用以回應於判定該第一指令之該旗標結果係不要被另一指令所使用,而進行下列動作:不執行該第一指令之該旗標部分,將該第一立即值與儲存於該處理器之一立即緩衝器的一收合 立即值欄位中之一收合立即值累加,其中該收合立即值係與該第一指令的該單一來源運算元相關聯,及將該第一立即值儲存於與一旗標暫存器相關聯的該立即緩衝器之至少一個分錄中的一最終立即值欄位;以及耦合至該處理器的一動態隨機存取記憶體。
- 如請求項15之計算系統,其中該處理器進一步包含重建邏輯,其用以回應於一重建請求來進行該第一指令的該旗標部分以重建該第一指令之一旗標結果。
- 如請求項16之計算系統,其中該重建邏輯係用以:基於儲存於該收合立即值欄位與該最終立即值欄位的該等值之間的一運算而計算一新累加立即值;及基於該新累加立即值與該第一指令的一目前暫存值之間的一運算而計算一新暫存值。
- 如請求項17之計算系統,其中該重建邏輯係用以基於該新暫存值及儲存於該最終立即值欄位的該值而產生該旗標結果。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/930,848 | 2015-11-03 | ||
US14/930,848 US11036509B2 (en) | 2015-11-03 | 2015-11-03 | Enabling removal and reconstruction of flag operations in a processor |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201729074A TW201729074A (zh) | 2017-08-16 |
TWI721021B true TWI721021B (zh) | 2021-03-11 |
Family
ID=58634689
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105131648A TWI721021B (zh) | 2015-11-03 | 2016-09-30 | 用於致能旗標操作的移除及重建之處理器、非暫時性機器可讀取媒體及計算系統 |
Country Status (3)
Country | Link |
---|---|
US (2) | US11036509B2 (zh) |
TW (1) | TWI721021B (zh) |
WO (1) | WO2017078882A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11036509B2 (en) * | 2015-11-03 | 2021-06-15 | Intel Corporation | Enabling removal and reconstruction of flag operations in a processor |
US10474600B2 (en) | 2017-09-14 | 2019-11-12 | Samsung Electronics Co., Ltd. | Heterogeneous accelerator for highly efficient learning systems |
RU180783U1 (ru) * | 2017-11-07 | 2018-06-22 | Акционерное общество "Т-Платформы" (АО "Т-Платформы") | Электронно-вычислительная машина |
US11604972B2 (en) | 2019-06-28 | 2023-03-14 | Microsoft Technology Licensing, Llc | Increased precision neural processing element |
US10896041B1 (en) | 2019-09-25 | 2021-01-19 | Microsoft Technology Licensing, Llc | Enabling early execution of move-immediate instructions having variable immediate value sizes in processor-based devices |
CN111045954B (zh) * | 2019-11-29 | 2023-08-08 | 北京航空航天大学青岛研究院 | 基于nand-spin的存内计算加速方法 |
US20210303309A1 (en) * | 2020-03-27 | 2021-09-30 | Intel Corporation | Reconstruction of flags and data for immediate folding |
TWI782569B (zh) * | 2021-06-09 | 2022-11-01 | 大陸商北京集創北方科技股份有限公司 | 復位源監測電路、觸控晶片及資訊處理裝置 |
CN114996078B (zh) * | 2021-12-07 | 2023-05-09 | 荣耀终端有限公司 | dex文件的编译控制方法及装置 |
US11907723B2 (en) | 2022-03-21 | 2024-02-20 | Arm Limited | Operation elimination |
CN116610362B (zh) * | 2023-04-27 | 2024-02-23 | 合芯科技(苏州)有限公司 | 一种处理器指令集译码方法、系统、设备和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7043626B1 (en) * | 2003-10-01 | 2006-05-09 | Advanced Micro Devices, Inc. | Retaining flag value associated with dead result data in freed rename physical register with an indicator to select set-aside register instead for renaming |
US7694110B1 (en) * | 2003-07-08 | 2010-04-06 | Globalfoundries Inc. | System and method of implementing microcode operations as subroutines |
TW201346720A (zh) * | 2011-12-28 | 2013-11-16 | Intel Corp | 浮點定比處理器、方法、系統及指令 |
TW201504943A (zh) * | 2013-03-15 | 2015-02-01 | Soft Machines Inc | 在微處理器實現減縮尺寸寄存器觀點資料結構的方法 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2776841B2 (ja) * | 1988-09-28 | 1998-07-16 | 株式会社日立製作所 | ディスク制御装置におけるディスクアクセス制御方法 |
US5577259A (en) * | 1991-09-19 | 1996-11-19 | Unisys Corporation | Instruction processor control system using separate hardware and microcode control signals to control the pipelined execution of multiple classes of machine instructions |
US6026485A (en) | 1996-01-24 | 2000-02-15 | Sun Microsystems, Inc. | Instruction folding for a stack-based machine |
US5838941A (en) * | 1996-12-30 | 1998-11-17 | Intel Corporation | Out-of-order superscalar microprocessor with a renaming device that maps instructions from memory to registers |
US6889315B2 (en) * | 1999-12-17 | 2005-05-03 | Fujitsu Limited | Processor and method of controlling the same |
US6775765B1 (en) | 2000-02-07 | 2004-08-10 | Freescale Semiconductor, Inc. | Data processing system having instruction folding and method thereof |
US6675376B2 (en) * | 2000-12-29 | 2004-01-06 | Intel Corporation | System and method for fusing instructions |
US6832307B2 (en) * | 2001-07-19 | 2004-12-14 | Stmicroelectronics, Inc. | Instruction fetch buffer stack fold decoder for generating foldable instruction status information |
US7003629B1 (en) | 2003-07-08 | 2006-02-21 | Advanced Micro Devices, Inc. | System and method of identifying liveness groups within traces stored in a trace cache |
US7849292B1 (en) | 2005-09-28 | 2010-12-07 | Oracle America, Inc. | Flag optimization of a trace |
US8298914B2 (en) * | 2008-08-19 | 2012-10-30 | International Business Machines Corporation | 3D integrated circuit device fabrication using interface wafer as permanent carrier |
US8250346B2 (en) * | 2009-06-04 | 2012-08-21 | Arm Limited | Register renaming of a partially updated data granule |
US9043580B2 (en) * | 2011-04-07 | 2015-05-26 | Via Technologies, Inc. | Accessing model specific registers (MSR) with different sets of distinct microinstructions for instructions of different instruction set architecture (ISA) |
US20120284488A1 (en) * | 2011-05-03 | 2012-11-08 | Qualcomm Incorporated | Methods and Apparatus for Constant Extension in a Processor |
JP5770534B2 (ja) * | 2011-06-01 | 2015-08-26 | 富士通株式会社 | プロセッサ、圧縮プログラム、圧縮装置、および圧縮方法 |
US9477476B2 (en) * | 2012-11-27 | 2016-10-25 | Qualcomm Incorporated | Fusing immediate value, write-based instructions in instruction processing circuits, and related processor systems, methods, and computer-readable media |
KR20150107138A (ko) | 2014-03-13 | 2015-09-23 | 주식회사 에이디칩스 | 마이크로프로세서에서의 명령어 디코딩 방법 |
US9417941B2 (en) * | 2014-05-21 | 2016-08-16 | Freescale Semiconductor, Inc. | Processing device and method of executing an instruction sequence |
US10705964B2 (en) | 2015-04-28 | 2020-07-07 | Intel Corporation | Controlling displacement in a co-operative and adaptive multiple-level memory system |
US20170123799A1 (en) | 2015-11-03 | 2017-05-04 | Intel Corporation | Performing folding of immediate data in a processor |
US11036509B2 (en) * | 2015-11-03 | 2021-06-15 | Intel Corporation | Enabling removal and reconstruction of flag operations in a processor |
US10915320B2 (en) * | 2018-12-21 | 2021-02-09 | Intel Corporation | Shift-folding for efficient load coalescing in a binary translation based processor |
-
2015
- 2015-11-03 US US14/930,848 patent/US11036509B2/en active Active
-
2016
- 2016-09-30 TW TW105131648A patent/TWI721021B/zh not_active IP Right Cessation
- 2016-10-06 WO PCT/US2016/055612 patent/WO2017078882A1/en active Application Filing
-
2021
- 2021-06-01 US US17/335,284 patent/US11709678B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7694110B1 (en) * | 2003-07-08 | 2010-04-06 | Globalfoundries Inc. | System and method of implementing microcode operations as subroutines |
US7043626B1 (en) * | 2003-10-01 | 2006-05-09 | Advanced Micro Devices, Inc. | Retaining flag value associated with dead result data in freed rename physical register with an indicator to select set-aside register instead for renaming |
TW201346720A (zh) * | 2011-12-28 | 2013-11-16 | Intel Corp | 浮點定比處理器、方法、系統及指令 |
TW201504943A (zh) * | 2013-03-15 | 2015-02-01 | Soft Machines Inc | 在微處理器實現減縮尺寸寄存器觀點資料結構的方法 |
Also Published As
Publication number | Publication date |
---|---|
US11709678B2 (en) | 2023-07-25 |
US11036509B2 (en) | 2021-06-15 |
US20210357216A1 (en) | 2021-11-18 |
TW201729074A (zh) | 2017-08-16 |
WO2017078882A1 (en) | 2017-05-11 |
US20170123793A1 (en) | 2017-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI721021B (zh) | 用於致能旗標操作的移除及重建之處理器、非暫時性機器可讀取媒體及計算系統 | |
TWI739772B (zh) | 處理器、用於安全指令執行管線之方法、及運算系統 | |
CN107003921B (zh) | 具有有限状态机控制的可重配置测试访问端口 | |
TWI733710B (zh) | 用於重複發生相鄰聚集的處理器、方法和單元 | |
TWI775105B (zh) | 用於使用monitor及mwait架構之使用者層級執行緒同步的方法及裝置 | |
TWI588740B (zh) | 包括用於移位和(shift-sum)乘法器之指令及邏輯的處理器及系統,以及用於移位和乘法的方法 | |
TWI715681B (zh) | 用於位元欄位位址和插入之指令及邏輯 | |
TW201732581A (zh) | 用於載入索引與集中操作的指令及邏輯 | |
TW201723856A (zh) | 用於亂序處理器中依序處置之指令與邏輯 | |
US20180004526A1 (en) | System and Method for Tracing Data Addresses | |
TW201732550A (zh) | 用於載入索引和散佈運算之指令和邏輯 | |
WO2017172122A1 (en) | Auxiliary cache for reducing instruction fetch and decode bandwidth requirements | |
TWI630480B (zh) | 用於分頁表走查位元交換之指令和邏輯 | |
TWI723075B (zh) | 用於向量置換的方法和處理器以及向量置換單元 | |
TWI729029B (zh) | 用於向量位元欄壓縮及擴展的指令及邏輯 | |
TWI738681B (zh) | 處理器、用於檢測消抵效應之方法及消抵效應檢測單元 | |
KR101898791B1 (ko) | 멀티 스트랜드 비순차 프로세서에서 회수를 위한 명령어들을 식별하는 명령어 및 로직 | |
TWI773652B (zh) | 在處理器中進行立即資料的收合之技術 | |
WO2018005718A1 (en) | System and method for out-of-order clustered decoding | |
US10795681B2 (en) | Instruction length decoding | |
TW201732549A (zh) | 用於壓縮與旋轉的指令和邏輯 | |
US20210303309A1 (en) | Reconstruction of flags and data for immediate folding | |
TWI773654B (zh) | 處理器、運算系統及用於執行以向量為基礎的位元操控之方法 | |
CN107408035B (zh) | 用于缕程间通信的装置和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |