TWI588740B - 包括用於移位和(shift-sum)乘法器之指令及邏輯的處理器及系統,以及用於移位和乘法的方法 - Google Patents
包括用於移位和(shift-sum)乘法器之指令及邏輯的處理器及系統,以及用於移位和乘法的方法 Download PDFInfo
- Publication number
- TWI588740B TWI588740B TW104138326A TW104138326A TWI588740B TW I588740 B TWI588740 B TW I588740B TW 104138326 A TW104138326 A TW 104138326A TW 104138326 A TW104138326 A TW 104138326A TW I588740 B TWI588740 B TW I588740B
- Authority
- TW
- Taiwan
- Prior art keywords
- shift
- processor
- instruction
- parameter
- parameters
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims description 41
- 230000036961 partial effect Effects 0.000 claims description 83
- 230000015654 memory Effects 0.000 description 224
- 238000012545 processing Methods 0.000 description 72
- 238000007667 floating Methods 0.000 description 45
- 238000010586 diagram Methods 0.000 description 35
- 238000003860 storage Methods 0.000 description 34
- 230000006870 function Effects 0.000 description 31
- 230000007246 mechanism Effects 0.000 description 22
- 239000000872 buffer Substances 0.000 description 18
- 238000004891 communication Methods 0.000 description 18
- 238000005516 engineering process Methods 0.000 description 14
- 239000003795 chemical substances by application Substances 0.000 description 13
- 239000000463 material Substances 0.000 description 13
- 230000002093 peripheral effect Effects 0.000 description 12
- 238000004519 manufacturing process Methods 0.000 description 11
- 230000003287 optical effect Effects 0.000 description 11
- 238000013461 design Methods 0.000 description 10
- 238000006243 chemical reaction Methods 0.000 description 8
- 238000007726 management method Methods 0.000 description 8
- 238000010606 normalization Methods 0.000 description 8
- 238000013500 data storage Methods 0.000 description 7
- 238000001514 detection method Methods 0.000 description 7
- 230000009977 dual effect Effects 0.000 description 6
- 230000003068 static effect Effects 0.000 description 6
- 235000012431 wafers Nutrition 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 238000009825 accumulation Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000004364 calculation method 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
- 238000000605 extraction Methods 0.000 description 4
- 230000005291 magnetic effect Effects 0.000 description 4
- 238000004088 simulation Methods 0.000 description 4
- 230000001133 acceleration Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 230000000295 complement effect Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000018109 developmental process Effects 0.000 description 3
- 230000033001 locomotion Effects 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 101100285899 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) SSE2 gene Proteins 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000006837 decompression Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 235000019800 disodium phosphate Nutrition 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 125000001475 halogen functional group Chemical group 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 239000004973 liquid crystal related substance Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 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
- 238000007781 pre-processing Methods 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 238000012827 research and development Methods 0.000 description 2
- 239000007787 solid Substances 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
- 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
- 238000010276 construction Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 230000004907 flux Effects 0.000 description 1
- 238000003384 imaging method Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 239000005022 packaging material Substances 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
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/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
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
- G06F7/527—Multiplying only in serial-parallel fashion, i.e. one operand being entered serially and the other in parallel
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
- G06F7/53—Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel
- G06F7/5306—Multiplying only in parallel-parallel fashion, i.e. both operands being entered in parallel with row wise addition of partial products
-
- 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/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- 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
-
- 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/3017—Runtime instruction translation, e.g. macros
-
- 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/3818—Decoding for concurrent execution
- G06F9/3822—Parallel decoding, e.g. parallel decode units
-
- 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/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- 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/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
-
- 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/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3887—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
- G06F9/4552—Involving translation to a different instruction set architecture, e.g. just-in-time translation in a JVM
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Physics (AREA)
- Multimedia (AREA)
- Computing Systems (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Description
本揭示發明相關於處理邏輯、微處理器、及當由該處理器或其他處理邏輯執行時,實施邏輯、數學、或其他函數運算之關聯指令集架構的領域。
多處理器系統正變得越來越常見。多處理器系統的應用包括動態區域分割,直到桌上型計算。為有利利用多處理器系統,待執行碼可被分割成由各種處理實體執行的多個執行緒。各執行緒可彼此平行地執行。再者,為增加處理實體的使用率,可使用無序執行。當指令的輸入可用時,無序執行可執行此等指令。因此,在碼序列中稍後出現的指令可在碼序列中較早出現的指令之前執行。
100、600、1800‧‧‧系統
102、200、500、610、615、870、880、1000、1215、1710、1802‧‧‧處理器
104‧‧‧一級(L1)內部快取記憶體
106、145、164‧‧‧暫存器檔案
108、142、162、462、1814‧‧‧執行單元
109、143‧‧‧封裝指令集
110‧‧‧處理器匯流排
112‧‧‧圖形控制器
114‧‧‧加速圖形埠(APG)互連
116‧‧‧系統邏輯晶片
118‧‧‧高帶寬記憶體路徑
120、640、732、734、832、834、1140‧‧‧記憶體
122‧‧‧系統I/O
124‧‧‧資料儲存器
126‧‧‧無線收發器
128‧‧‧韌體匯流排(快閃記憶體BIOS)
130‧‧‧I/O控制器匯流排(ICH)
134‧‧‧網路控制器
140、160‧‧‧資料處理系統
141‧‧‧匯流排
144、165、1808‧‧‧解碼器
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‧‧‧快取記憶體
168‧‧‧輸入/輸出系統
169‧‧‧無線介面
201‧‧‧有序前端
202‧‧‧快速排程器
203‧‧‧無序執行引擎
204‧‧‧慢速/通用浮點排程器
206‧‧‧簡單浮點排程器
208‧‧‧整數暫存器檔案
210‧‧‧浮點暫存器檔案
211‧‧‧執行區塊
212、214‧‧‧位址產生單元(AGU)
216、218‧‧‧快速算術邏輯單元(ALU)
220‧‧‧慢速ALU
222‧‧‧浮點ALU
224‧‧‧浮點移動單元
226‧‧‧指令預提取器
228‧‧‧指令解碼器
230‧‧‧追蹤快取記憶體
232‧‧‧微碼ROM
234‧‧‧微運算佇列
310‧‧‧封裝位元組
320‧‧‧封裝字組
330‧‧‧封裝雙字組(dword)
341‧‧‧封裝半格式
342‧‧‧封裝單格式
343‧‧‧封裝倍格式
344‧‧‧無正負號封裝位元組表示
345‧‧‧有正負號封裝位元組表示
346‧‧‧無正負號封裝字組表示
347‧‧‧有正負號封裝字組表示
348‧‧‧無正負號封裝雙字組表示
349‧‧‧有正負號封裝雙字組表示
360‧‧‧格式
361、362、371、372、383、384、387、388‧‧‧欄位
363、373‧‧‧MOD欄位
364、365、374、375、385、390‧‧‧來源運算元識別符
366、376、386‧‧‧目的地運算元識別符
370‧‧‧運算碼格式
378‧‧‧選擇性前置位元組
380‧‧‧運算編碼(運算碼)格式
381‧‧‧條件欄位
382、389‧‧‧CDP運算碼欄位
400‧‧‧處理器管線
402‧‧‧提取級
404‧‧‧長度解碼級
406‧‧‧解碼級
408‧‧‧配置級
410‧‧‧更名級
412‧‧‧排程級
414‧‧‧暫存器讀取/記憶體讀取級
416‧‧‧執行級
418‧‧‧寫回/記憶體寫入級
422‧‧‧異常管理級
424‧‧‧提交級
430‧‧‧前端單元
432‧‧‧分支預測單元
434‧‧‧指令快取記憶體單元
436‧‧‧指令轉換後備緩衝器(TLB)
438‧‧‧指令提取單元
440‧‧‧解碼單元
450‧‧‧執行引擎單元
452‧‧‧更名/配置器單元
454、1820‧‧‧引退單元
456‧‧‧排程器單元
458‧‧‧實體暫存器檔案單元
460‧‧‧執行叢集
464‧‧‧記憶體存取單元
470‧‧‧記憶體單元
472‧‧‧資料TLB單元
474‧‧‧資料快取記憶體單元
476‧‧‧2級(L2)快取記憶體單元
490‧‧‧處理器核心
502、902A-N、1406、1407、1812‧‧‧核心
503‧‧‧快取記憶體階層
506、572、574、1525‧‧‧快取記憶體
508‧‧‧環形為基的互連單元
510‧‧‧系統代理器
512‧‧‧顯示引擎
514、796‧‧‧介面
516‧‧‧直接媒體介面(DMI)
518‧‧‧PCIe橋接器
520‧‧‧記憶體控制器
522‧‧‧一致性邏輯
552‧‧‧記憶體控制單元
560‧‧‧圖形模組
565‧‧‧媒體引擎
570、1806‧‧‧前端
580‧‧‧無序引擎
582‧‧‧配置模組
584‧‧‧排程器
586‧‧‧資源
588‧‧‧重排序緩衝器
590‧‧‧模組
595‧‧‧LLC
599‧‧‧RAM
620‧‧‧圖形記憶體控制器集線器(GMCH)
645、1724‧‧‧顯示器
650‧‧‧輸入/輸出(I/O)控制器集線器(ICH)
660‧‧‧外部圖形裝置
670‧‧‧周邊裝置
695‧‧‧前側匯流排(FSB)
700‧‧‧第二系統
714、814‧‧‧I/O裝置
716‧‧‧第一匯流排
718‧‧‧匯流排橋接器
720‧‧‧第二匯流排
722‧‧‧鍵盤及/或滑鼠
724‧‧‧音訊I/O
727‧‧‧通訊裝置
728‧‧‧儲存單元
730‧‧‧指令/碼及資料
738‧‧‧高效能圖形電路
739‧‧‧高效能圖形介面
750‧‧‧點對點互連
752、754‧‧‧P-P介面
770‧‧‧第一處理器
772、782、914‧‧‧積集記憶體控制器單元
776、778、786、788‧‧‧點對點(P-P)介面
780‧‧‧第二處理器
790、890‧‧‧晶片組
794、798‧‧‧點對點介面電路
800‧‧‧第三系統
815‧‧‧傳統I/O裝置
872、882‧‧‧積集記憶體及I/O控制邏輯(「CL」)
900‧‧‧SoC
902‧‧‧互連單元
906‧‧‧共享快取記憶體單元
908‧‧‧積集圖形邏輯
910‧‧‧應用處理器
916‧‧‧匯流排控制器單元
920‧‧‧媒體處理器
924、1015‧‧‧影像處理器
926‧‧‧音訊處理器
928、1020‧‧‧視訊處理器
930‧‧‧SRAM單元
932‧‧‧DMA單元
940‧‧‧顯示單元
1005‧‧‧CPU
1010‧‧‧GPU
1025‧‧‧USB控制器
1030‧‧‧UART控制器
1035‧‧‧SPI/SDIO控制器
1040‧‧‧顯示裝置
1045‧‧‧記憶體介面控制器
1050‧‧‧MIPI控制器
1055‧‧‧快閃記憶體控制器
1060‧‧‧雙倍資料速率(DDR)控制器
1065‧‧‧安全引擎
1070‧‧‧I2S/I2C控制器
1110‧‧‧硬體或軟體模型
1120‧‧‧模擬軟體
1150‧‧‧有線連接
1160‧‧‧無線連接
1205‧‧‧程式
1210‧‧‧模仿邏輯
1302‧‧‧高階語言
1304‧‧‧x86編譯器
1306‧‧‧x86二進位碼
1308‧‧‧替代指令集編譯器
1310‧‧‧替代指令集二進位碼
1312‧‧‧指令變換器
1314‧‧‧不具有至少一個x86指令集核心的處理器
1316‧‧‧具有至少一個x86指令集核心的處理器
1400、1500‧‧‧指令集架構
1408‧‧‧L2快取記憶體控制
1409、1520‧‧‧匯流排介面單元
1410‧‧‧L2快取記憶體
1415‧‧‧圖形處理單元
1420‧‧‧視訊碼
1425‧‧‧LCD視訊介面
1430‧‧‧用戶介面模組(SIM)介面
1435‧‧‧開機ROM介面
1440‧‧‧SDRAM控制器
1445‧‧‧快閃記憶體控制器
1450‧‧‧串列周邊介面(SPI)主單元
1470‧‧‧藍牙模組
1475‧‧‧高速3G數據機
1480‧‧‧全球定位系統模組
1485‧‧‧無線模組
1490‧‧‧行動產業處理器介面(MIPI)
1495‧‧‧高解析多媒體介面(HDMI)
1510‧‧‧單元
1511‧‧‧中斷控制及散佈單元
1512‧‧‧偵測控制單元
1514‧‧‧偵測濾波器
1515‧‧‧計時器
1516‧‧‧AC埠
1530‧‧‧指令預提取級
1531‧‧‧快速迴路模式
1532‧‧‧指令快取記憶體
1535‧‧‧分支預測單元
1536‧‧‧全域歷史
1537‧‧‧目標位址
1538‧‧‧返回堆疊
1540‧‧‧記憶體系統
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‧‧‧執行管線
1700‧‧‧電子裝置
1715‧‧‧低功率雙倍資料速率(LPDDR)記憶體單元
1720‧‧‧磁碟驅動
1722‧‧‧BIOS/韌體/快閃記憶體
1725‧‧‧觸控螢幕
1730‧‧‧觸控板
1735‧‧‧高速晶片組(EC)
1736‧‧‧鍵盤
1737‧‧‧風扇
1738‧‧‧可信賴平台模組(TPM)
1739、1746‧‧‧熱感測器
1740‧‧‧感測器集線器
1741‧‧‧加速度計
1742‧‧‧周邊光感測器(ALS)
1743‧‧‧羅盤
1744‧‧‧迴轉儀
1745‧‧‧近場通訊(NFC)單元
1750‧‧‧無線區域網路(WLAN)單元
1752‧‧‧藍牙單元
1754‧‧‧照相機
1756‧‧‧無線廣域網路(WWAN)單元
1757‧‧‧SIM卡
1760‧‧‧DSP
1762‧‧‧音訊單元
1763‧‧‧揚聲器
1764‧‧‧耳機
1765‧‧‧麥克風
1804‧‧‧指令串流
1810‧‧‧調度
1811‧‧‧配置器
1816、1900‧‧‧SSM模組
1818‧‧‧記憶體次系統
1902‧‧‧控制邏輯
1904A、1904B‧‧‧查找表(LUT)
1906、1908‧‧‧SSM
1910A、1910B、1910D‧‧‧移位器
1912A、1912D‧‧‧指數模組
1914A、1914D‧‧‧乘法器
1916A、1916B‧‧‧加法器
2100‧‧‧方法
實施例係經由例示而非限制方式在隨附圖式的圖中說明:圖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係根據本揭示發明的實施例之具有用於移位和乘法器(SSM)之硬體的系統之部分的方塊圖;圖19係根據本揭示發明的實施例之具有特定被乘數值範圍之移位和乘法器的圖示;圖20係根據本揭示發明的實施例之具有其他特定被乘數值範圍之移位和乘法器的圖示;且圖21係根據本揭示發明之實施例用於移位和乘法的方法之實施例的流程圖。
以下說明描述用於硬體支援處理器、虛擬處理器、封裝、電腦系統、或其他處理設備內或與彼等關聯之移位和乘法器的指令及處理邏輯。另外,移位和乘法器的使用可使用量化、最近相鄰者查找表產生。在以下描述中,陳述許多具體細節,諸如,處理邏輯、處理器種類、微架構條件、事件、及致能機制等,以提供對本揭示發明之實施例的更徹底瞭解。然而,熟悉本發明之人士將領會可實踐該等實施例而無需此種具體細節。另外,部分已為人所熟知的結構、及電路等並未詳細地顯示,以避免不必要地混淆本揭示發明的實施例。
雖然以下實施例係參考處理器而描述,其他實施例可應用至其他種類的積體電路及邏輯裝置。相似技術及本揭
示發明之實施例的教示可應用至可從更高管線處理量及改善效能獲利的其他種類的電路或半導體裝置。本揭示發明之實施例的教示可應用於實施資料操控的任何處理器或機器。然而,實施例並未受限於實施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.的處理器實作幾乎完全相同版本的x86指令集(具有已隨較新版本加入的部分延伸),但具有不同的內部設計。相似地,由其他處理器研發公司,諸如,ARM Holdings,Ltd.、MIPS、或彼等的授權方或採納方,設計的處理器可共享至少一部分的常見指令集,但可包括不同的處理器設計。例如,ISA的相同暫存器架構可能使用新的或已為人熟知的技術以不同方式實作在不同微架構中,包括專屬實體暫存器、使用暫存器更名機制(例如,使用暫存器化名表(RAT)、重排序緩衝器(ROB)、及引退暫存器檔案)的一或多個動態配置實體暫存器等。在一實施例中,暫存器可包括可或不可由軟體程式設計師定址的一或多個暫存器、暫存器架構、暫存器檔案、或其他暫存器組。
指令可包括一或多種指令格式。在一實施例中,指令格式可指示各種欄位(位元數、位元的位置等),以,連同其他事物,指定待實施的運算及將於其上實施運算的運算元。在另一實施例中,部分指令格式可更藉由指令樣板(或次格式)界定。例如,指定指令格式的指令樣本可界定成具有指令格式欄位的不同次組及/或界定成具有受不同解譯的指定欄位。在一實施例中,指令可使用指令格式表示(且若已界定,以該指令格式之指令樣本的指定一者表示)並指定或指示該運算及該運算將於其上運算的運算
元。
科學、金融、通用自動向量化、RMS(辨識、探掘、及合成)、及視覺及多媒體應用(例如,2D/3D圖形、影像處理、視訊壓縮/解壓縮、語音辨識演算法、及音訊操控)可需要在大量資料項上實施相同操作。在一實施例中,單指令多資料(SIMD)係指導致處理器在多個資料元件上實施運算的指令種類。SIMD技術可使用在可將暫存器中的位元邏輯地分割為許多固定尺寸或可變尺寸之資料元件的處理器中,該等元件各者代表個別值。例如,在一實施例中,64位元暫存器中的位元可組織為包含四個分離的16位元資料元件的來源運算元,彼等各者代表分離的16位元值。此種資料可稱為「封裝」資料種類或「向量」資料種類,且此資料種類的運算元可稱為封裝資料運算元或向量運算元。在一實施例中,封裝資料項或向量可係儲存在單一暫存器內的一系列封裝資料元件,且封裝資料運算元或向量運算元可係SIMD指令(或「封裝資料指令」或「向量指令」)的來源或目的地運算元。在一實施例中,SIMD指令指定待於二來源向量運算元上實施的單一向量運算,以產生相同或不同尺寸、具有相同或不同數量之資料元件、及相同或不同之資料元件次序的目標向量運算元(也稱為結果向量運算元)。
SIMD技術,諸如,由具有包括x86、MMXTM、串流SIMD延伸(SSE)、SSE2、SSE3、SSE4.1、及SSE4.2指令之指令集的Intel® CoreTM處理器、ARM處理器,諸如,
具有包括向量浮點(VFP)及/或NEON指令之指令集的ARM Cortex®處理器家族、及MIPS處理器,諸如,由中國科學院之計算技術研究所(ICT)發展的Loongson處理器家族使用的技術,已致能應用效能上的顯著改善(CoreTM及MMXTM係加州聖克拉拉的英特爾公司的註冊商標或商標)。
在一實施例中,目標及來源暫存器/資料可係通用術語,以代表對應資料或運算的來源及目標。在部分實施例中,彼等可藉由具有與所描寫之名稱或功能以外的名稱或功能的暫存器、記憶體、或其他儲存區實作。例如,在一實施例中,「DEST1」可係暫時儲存暫存器或其他儲存區,然而「SRC1」及「SRC2」可係第一及第二來源儲存暫存器或其他儲存區,並依此類推。在其他實施例中,SRC及DEST儲存區的二或多者可對應於相同儲存區(例如,SIMD暫存器)內的不同資料儲存元件。在一實施例中,來源暫存器的一者也可藉由,例如,將在第一及第二來源資料上實施之運算的結果寫回至使用為目標暫存器之二來源暫存器之一者,作用為目標暫存器。
圖1A係根據本揭示發明之實施例使用可包括執行單元以執行指令的處理器形成之示例性的電腦系統的方塊圖。根據本揭示發明,諸如,在本文描述的實施例中,系統100可包括組件,諸如,處理器102,以利用包括邏輯的執行單元實施用於處理資料的演算法。系統100可代表基於由加州聖克拉拉英特爾公司銷售之PENTIUM® III、
PENTIUM® 4、XeonTM、Itanium®、XScaleTM、及/或StrongARMTM微處理器的處理系統,雖然也可使用其他系統(包括具有其他微處理器的PC、工程工作站、及機上盒等)。在一實施例中,範例系統100可執行由華盛頓州雷蒙德的微軟公司銷售之WINDOWSTM作業系統的版本,雖然也可使用其他作業系統(例如,UNIX及Linux)、嵌入式軟體、及/或圖形使用者介面。因此,本揭示發明的實施例並未受限於硬體電路及軟體之任何具體組合。
實施例並未受限於電腦系統。本揭示發明的實施例可使用在其他裝置中,諸如,手持裝置及嵌入式應用。手持裝置的部分範例包括行動電話、網際網路協定裝置、數位相機、個人數位助理(PDA)、及手持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可針對指令及資料儲存及針對圖形命令、資料、及紋理的儲存提供高帶寬記憶體路徑118至記憶體120。MCH 116可在處理器102、記憶體120、及系統100中的其他組件之間引導資料信號,並在處理器匯流排110、記憶體120、及系統I/O 122之間橋接資料信號。在部分實施例中,系統邏輯晶片116可提供用於耦接至圖形控制器112的圖形埠。MCH 116可經由記憶體介面118耦接至記憶體120。圖形卡112可經由加速圖形埠(APG)互連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提供。可用各種音訊、視訊、成像、及通訊演算法,包括離散轉換,諸如,華須-哈德瑪(Walsh-Hadamard轉換、快速傅立葉轉換(FFT)、離散餘弦轉換(DCT)、及彼等個別的反轉換;壓縮/解壓縮技術,諸如,顏色空間轉換、視訊編碼動作估計、或視訊解碼動作補償;及調變/解調變(MODEM)功能,諸如,脈衝編碼調變(PCM),而將處理核心159程式化。
圖1C描繪實施SIMD文字字串比較運算之資料處理系統的其他實施例。在一實施例中,資料處理系統160可包括主處理器166、SIMD共處理器161、快取記憶體167、及輸入/輸出系統168。輸入/輸出系統168可選擇性地耦接至無線介面169。SIMD共處理器161可實施包括根據一實施例之指令的運算。在一實施例中,處理核心170可適於以一或多種處理技術製造並藉由以充份細節表示在機器可讀媒體上而可適於促進包括處理核心170之全部或一部分資料處理系統160的製造。
在一實施例中,SIMD共處理器161包含執行單元162及一組暫存器檔案164。主處理器166的一實施例包含解碼器165以辨識包括根據一實施例用於由執行單元162執行的指令之指令集163的指令。在其他實施例中,
SIMD共處理器161也包含至少部分的解碼器165以解碼指令集163的指令。處理核心170也可包括對理解本揭示發明之實施例可係非必要的額外電路(未圖示)。
在運算時,主處理器166執行資料處理指令的串流,該等指令控制包括與快取記憶體167、及輸入/輸出系統168之互動的通用型資料處理運算。可將SIMD共處理器指令嵌入在資料處理指令的串流內。主處理器166的解碼器165將此等SIMD共處理器指令辨識為係應由附接的SIMD共處理器161執行之種類的指令。因此,主處理器166在共處理器匯流排上發佈此等SIMD共處理器指令(或控制代表SIMD共處理器指令的信號)。此等指令可藉由任何附接的SIMD共處理器從共處理器匯流排接收。在此情形中,SIMD共處理器161可接受及執行企圖用於其之任何已接收的SIMD共處理器指令。
用於藉由SIMD共處理器指令處理的資料可經由無線介面169接收。例如,語音通訊可以數位信號的形式接收、其可由SIMD共處理器指令處理以重新產生代表語音通訊的數位音訊樣本。例如,壓縮音訊及/或視訊可用數位位元串流的形式接收,其可由SIMD共處理器指令處理以重新產生數位音訊樣本及/或動作視訊框。在處理核心170的一實施例中,主處理器166及SIMD共處理器161可積集至包含執行單元162、一組暫存器檔案164、及解碼器165的單一處理核心170中,以辨識包括根據一實施例的指令之指令集163的指令。
圖2係根據本揭示發明之實施例用於可包括邏輯電路以實施指令的處理器200之微架構的方塊圖。在部分實施例中,可實作根據一實施例的指令以在具有位元組、字組、雙字組、四字組等的尺寸,以及資料類別,諸如,單及倍精準整數及浮點資料類別,的資料元件上運算。在一實施例中,有序前端201可實作一部分的處理器200,其可提取待執行指令並備妥該等指令以待稍後在處理器管線中使用。前端201可包括數個單元。在一實施例中,指令預提取器226從記憶體提取指令並將該等指令饋送至依次解碼或解譯該等指令的指令解碼器228。例如,在一實施例中,解碼器將已接收指令解碼為機器可執行之稱為「微指令」或「微運算」(也稱為微運算(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在目前負載已完成執行之前調度相關運算。當微運算可臆測地排程並在處理器200中執行時,處理器200也可包括邏輯以處理記憶體錯失。若資料負載在資料快取記憶體中錯失,可有相關運算在已將具有暫時不正確資料之排程器丟棄的管線中飛行。重播機制追蹤並重新執行使用不正確資料的指令。可僅需重播相關運算並容許無關運算完成。也可針對文字字串比較運算將處理器之一實施例的排程器及重播機制設計成快取指令序列。
術語「暫存器」可指可使用為指令的一部分以識別運算元的處理器內建儲存位置。換言之,暫存器可係可從處理器外側使用的暫存器(從程式設計師的觀點)。然而,在
部分實施例中,暫存器可不受限於特定種類的電路。更確切地說,暫存器可儲存資料、提供資料、及實施本文描述的功能。本文描述的暫存器可藉由使用任何數量的不同技術之處理器內的電路實作,諸如,專屬實體暫存器、使用暫存器更名的動態配實體暫存器、專屬及動態配置實體暫存器的組合等。在一實施例中,整數暫存器儲存32位元整數資料。一實施例的暫存器檔案也包含用於封裝資料的八個多媒體SIMD暫存器。針對以下討論,可將暫存器理解為設計成保持封裝資料的資料暫存器,諸如,在使用來自加州聖克拉拉英特爾公司之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的位元127至位元120中。因此,可使用暫存器中的所有可用位元。此儲存配置增加處理器的儲存效率。又,具有受存取的十六個資料元件,一個運算現在可在十六個資料元件上平行地實施。
通常,資料元件可包括儲存在單一暫存器或具有相同長度的其他資料元件之記憶體位置中的獨立資料段。在與SSEx技術有關的封裝資料序列中,儲存在XMM暫存器中的資料元件數可係128位元除以以獨立資料元件之位元計算的長度。相似地,在與MMX及SSE技術有關的封裝資料序列中,儲存在MMX暫存器中的資料元件數可係64位元除以以獨立資料元件之位元計算的長度。雖然描繪於圖3A中的資料種類可係128位元長,本揭示發明的實施例也可使用64位元寬或其他尺寸的運算元運算。此範例的封裝字組格式320可係128位元長並包含八個封裝字組資料元件。各封裝字組包含十六位元的資訊。圖3A的封裝雙字組格式330可係128位元長並包含四個封裝雙字組資料元件。各封裝雙字組資料元件包含三十二位元的資訊。封裝四字組可係128位元長並包含二個封裝四字組資料元件。
圖3B根據本揭示發明之實施例描繪可能的暫存器中資料儲存格式。各封裝資料可包括一個以上的獨立資料元件。描繪三種封裝資料格式;封裝半格式(packed half)341、封裝單格式(packed single)342、及封裝倍格式(packed double)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的位元127至位元120中。因此,可使用暫存器中的所有可用位元。此儲存配置可增加處理器的儲存效率。又,具有受存取的十六個資料元件,一個運算現在可用平行的方式
在十六個資料元件上實施。有正負號封裝位元組表示345描繪有正負號封裝位元組的儲存。須注意每個位元組資料元件的第八個位元可係正負號指示器。無正負號封裝字組表示346描繪如何可將字組七至字組零儲存在SIMD暫存器中。有正負號封裝字組表示347可相似於無正負號封裝字組表示346。須注意每個字組資料元件的第十六個位元可係正負號指示器。無正負號封裝雙字組表示348顯示如何儲存雙字組資料元件。有正負號封裝雙字組表示349可相似於無正負號封裝雙字組表示348。須注意必要的正負號位元可係各雙字組資料位元的第三十二位元。
圖3D描繪運算編碼(運算碼)的實施例。另外,格式360可包括與描述在「IA-32 Intel架構軟體開發人員手冊,卷2:指令集參考」中的運算碼格式之種類對應的暫存器/記憶體運算元定址模式,其由加州聖克拉拉的英特爾公司在全球資訊網(WWW)上的intel.com/design/litcentr提供。在一實施例中,及指令可由欄位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允許部分藉由MOD欄位363及373及藉由選擇性的比例-索引-基底及位移位元組指定的暫存器對暫存器、記憶體對暫存器、暫存器藉由記憶體、暫存器藉由暫存器、暫存器藉由立即值、暫存器對記憶體定址。
圖3F根據本揭示發明之實施例描繪另一可能的運算
編碼(運算碼)格式。64位元單指令多資料(SIMD)算術運算可經由共處理器資料處理(CDP)指令實施。運算編碼(運算碼)格式380描畫具有CDP運算碼欄位382及389的一個此種CDP指令。針對另一實施例,CDP指令種類的運算可由欄位383、384、387、及388的一或多者編碼。每個指令可識別多達三個運算元位置,包括多達二個來源運算元識別符385及390及一個目的地運算元識別符386。該共處理器的一實施例可在八、十六、三十二、及64位元值上運算。在一實施例中,指令可在整數資料元件上實施。在部分實施例中,指令可使用條件欄位381有條件地執行。針對部分實施例,來源資料尺寸可藉由欄位383編碼。在部分實施例中,零(Z)、負(N)、進位(C)、及溢位(V)偵測可在SIMD欄位上完成。針對部分指令,飽合的種類可藉由欄位384編碼。
圖4A係根據本揭示發明之實施例描繪有序管線及暫存器更名級、無序發佈/執行管線的方塊圖。圖4B係根據本揭示發明之實施例描繪包括在處理器中的有序架構核心及暫存器更名邏輯、無序發佈/執行邏輯的方塊圖。圖4A中的實線方塊描繪有序管線,同時虛線方塊描繪暫存器更名、無序發佈/執行管線。相似地,圖4B中的實線方塊描繪有序架構邏輯,同時虛線方塊描繪暫存器更名邏輯及無序發佈/執行邏輯。
在圖4A中,處理器管線400包括提取級402、長度解碼級404、解碼級406、配置級408、更名級410、排程
(也稱為調度或發佈)級412、暫存器讀取/記憶體讀取級414、執行級416、寫回/記憶體寫入級418、異常管理級422、及提交級424。
在圖4B中,箭號指示二或多個單元之間的耦接,且箭號的方向指示資料流在該等單元之間的方向。圖4B顯示包括耦接至執行引擎單元450之前端單元430的處理器核心490,且二者可均耦接至記憶體單元470。
核心490可係精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、極長指令(VLIW)核心、或混合或替代核心類型。在一實施例中,核心490可係特殊用途核心,諸如,網路或通訊核心、壓縮引擎、或圖形核心等。
前端單元430可包括耦接至指令快取記憶體單元434的分支預測單元432。指令快取記憶體單元434可耦接至指令轉換後備緩衝器(TLB)436。TLB 436可耦接至指令提取單元438,其耦接至解碼單元440。解碼單元440可解碼指令,並產生作為輸出之可解碼自、或另外反映、或可導自原始指令之一或多個微運算、微碼進入點、微指令、其他指令、或其他控制信號。該解碼器可使用各種不同機制實作。合適機制的範例包括,但未受限於,查找表、硬體實作、可程式化邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等。在一實施例中,指令快取記憶體單元434可更耦接至記憶體單元470中的2級(L2)快取記憶體單元476。解碼單元440可耦接至執行引擎單元450中的更名/配置器單元452。
執行引擎單元450可包括耦接至引退單元454及一組一或多個排程器單元456的更名/配置器單元452。排程器單元456代表任何數量的不同排程器,包括保留站、中央指令窗等。排程器單元456可耦接至實體暫存器檔案458。實體暫存器檔案單元458各者代表一或多個實體暫存器檔案,彼等的不同者儲存一或多個不同資料型別,諸如,純量整數、純量浮點、封裝整數、封裝浮點、向量整數、向量浮點等、狀態(例如,係待執行的次一指令之位址的指令指標)等。實體暫存器檔案單元458可由引退單元454覆蓋以描繪可將暫存器更名及無序執行實作於其中的各種方式(例如,使用一或多個重排序緩衝器及一或多個引退暫存器檔案、使用一或多個未來檔案、一或多個歷史緩衝器、及一或多個引退暫存器檔案;使用暫存器映射及暫存器池;等)。通常,該等架構暫存器可從處理器的外側看見或從程式設師的觀點係可見的。該等暫存器可不受限於任何已知明確類型的電路。只要各種不同種類的暫存器如本文描述地儲存及提供資料,彼等可係適當的。適當暫存器的範例包括,但可不限於,專用實體暫存器、使用暫存器改名之動態配置實體暫存器、專用及動態配置實體暫存器的組合等。引退單元454及實體暫存器檔案單元458可耦接至執行叢集460。執行叢集460可包括一組一或多個執行單元462及一組一或多個記憶體存取單元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;6)執行叢集460實施執行級416;7)記憶體單元470及實體暫存器檔案單元458實施寫回/記憶體寫入級418;8)各種單元可包含在異常管理級422中;及9)引退單元454及實體暫存器檔案單元458實施提交級424。
核心490可支援一或多個指令集(例如,x86指令集(具有已加有較新版本的特定延伸);加州桑尼維爾的MIPS Technologies的MIPS指令集;加州桑尼維爾的ARM Holdings的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可包括用於驅動一或多個外部連接顯示器的顯示引擎512或圖形模組560。系統代理器510可包括用於圖形之通訊匯流排的介面514。在一實施例中,介面514可藉由快速PCI(PCIe)實作。在一實施例中,介面514可藉由快速PCI圖形(PEG)實作。系統代理器510可包括直接媒體介面(DMI)516。DMI 516可在主機板上的不同橋接器或電腦系統的其他部分之間提供鏈接。系統代理器510可包括用於提供PCIe鏈接至計算系統之其他組件的PCIe橋接器518。PCIe橋接器518可使用記憶體控制器520及一致性邏輯522實作。
核心502可用任何適當方式實作。依據架構及/或指令集,核心502可係同質或異質的。在一實施例中,核心502的一部分可係有序的,而其他核心可係無序的。在另一實施例中,核心502的二或多者可執行相同指令集,而
其他核心可僅執行該指令集的子集或不同指令集。
處理器500可係通用處理器,諸如,CoreTM i3、i5、i7、2 Duo及Quad、XeonTM、ItaniumTM、XScaIeTM、或StrongARMTM處理器,彼等由加州聖克拉拉的IntelTM公司銷售。處理器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表示。當需要時,寫至或讀自資源586的值可經由,例如,快取記憶體階層503與處理器500的其他部分協調。當將資源指派給指令時,可將彼等置入重排序緩衝器588中。當指令執行時,重排序緩衝器588可追蹤彼等並可基於處理器500的任何適當準則選擇性地重排序彼等的執行。在一實施例中,重排序緩衝器588可識別指令或可獨立地執行的一系列指令。此種指令或一系列指令可與其他此種指令平行地執行。核心502中的平行執行可藉由任何適當數量的分離執行區塊或虛擬處理器實施。在一實施例中,共享資源,諸如,記憶體、暫存器、及快取記憶體,可為指定核心502內的多個虛擬處理器所存取。在其他實施例中,共享資源可為處理器500內的多個處理實體所存取。
快取記憶體階層503可用任何適當方式實作。例如,快取記憶體階層503可包括一或多個低或中階快取記憶體,諸如,快取記憶體572、574。在一實施例中,快取記憶體階層503可包括通訊地耦接至快取記憶體572、574的LLC 595。在另一實施例中,LLC 595可實作在可為處理器500之所有處理實體存取的模組590中。在另一實施例中,模組590可實作在來自Intel公司之處理器的單核心模組中。模組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。在圖6中以虛線標示額外處理器615的選擇性性質。
各處理器610、615可係處理器500的某版本。然而,應注意到積集圖形邏輯及積集記憶體控制單元可不存在於處理器610、615中。圖6描繪可耦接至可係,例如,動態隨機存取記憶體(DRAM),之記憶體640的GMCH 620。針對至少一實施例,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。連同另一周邊裝置670耦接至ICH 650的外部圖形裝置660可包括離散圖形裝置。
在其他實施例中,額外或不同的處理器也可存在於系統600中。例如,額外處理器610、615可包括可與處理器610相同的額外處理器、可與處理器610異質或非對稱的額外處理器、加速器(諸如,圖形加速器或數位訊號處理(DSP)單元)、場可程式閘極陣列、或任何其他處理器。依據包括架構、微架構、熱、及電力消耗特徵等之優點的度量頻譜,在實體資源610、615之間可有多種不同差異。此等不同可有效地將自身表現為處理器610、615之中的非對稱性及異質性。針對至少一實施例,各種處理器610、615可位於相同晶粒封裝中。
圖7根據本揭示發明的實施例描繪第二系統700的方
塊圖。如圖7所示,多處理器系統700可包括點對點互連系統,並可包括經由點對點互連750耦接的第一處理器770及第二處理器780。處理器770及780各者可係如處理器610、615的一或多者之處理器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,彼等在一實施例中可係本地附接至個別處理器之主記憶體的部分。
處理器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可連同將第一匯流排716耦接至第二匯流排720的匯流排橋接器718耦接至第一匯流排716。在一實施例中,第二匯流排720可係低插腳數(LPC)匯流排。在一實施例中,可將各種裝置耦接至第二匯流排720,包括,例如,鍵盤及/或滑鼠722、通訊裝置727、以及儲存單元728,諸如,可包括指令/碼及資料730的硬碟驅動器或其他大量儲存裝置。另外,可將音訊I/O 724耦接至第二匯流排720。須注意其他架構可係可能的。例如,取代圖7的點對點架構,系統可實作多分支匯流排或其他此種架構。
圖8根據本揭示發明的實施例描繪第三系統800的方塊圖。圖7及8中的相似元件有相似參考數字,且圖7的特定樣態已從圖8省略,以避免混淆圖8的其他樣態。
圖8描繪處理器870、880可分別包括積集記憶體及I/O控制邏輯(「CL」)872及882。針對至少一個實施例,CL 872、882可包括,諸如,結合圖5及7於上文描述的積集記憶體控制器單元。此外,CL 872、882也可包括I/O控制邏輯。圖8描繪不僅可將記憶體832、834耦接至CL 872、882,也可將I/O裝置814耦接至控制邏輯872、
882。傳統I/O裝置815可耦接至晶片組890。
圖9根據本揭示發明的實施例描繪SoC 900的方塊圖。圖9中的相似元件有相似的參考數字。又,虛線方塊可代表更先進SoC上的選擇性特性。互連單元902可耦接至:可包括一或多個核心902A-N及共享快取記憶體單元906的應用處理器911;系統代理單元910;匯流排控制器單元916;積集記憶體控制器單元914、可包括積集圖形邏輯908的一組或一或多個媒體處理器920;用於提供靜態及/或視訊攝影機功能的影像處理器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。在一實施例中,代表IP核心設計的資料可經由記憶體1140(例如,硬碟)、有線連接(例如,網際網路)1150或無線連接1160提供至儲存器1130。然後由模擬工具及模型產生的IP核心資訊可傳輸至製造設施,於該製造設施中該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指令集核心的處理器1316原生地執行的x86二進位碼1306。具有至少一x86指令集核心的處理器1316代表可藉由相容地執行或另外處理(1)Intel x86指令集核心的實質指令集部分,或(2)目標為在具有至少一x86指令集核心的Intel處理器上運行之應用程式或其他軟體的物件碼版本,實施與具有至少一x86指令集核心之Intel處理器實質相同之功能的任何處理器,以實現與具有至少一x86指令集核心之Intel處理器實質相同的結果。x86編譯器1304代表可運算以產生可使用或不使用額外聯結處理以在具有至少一x86指令集核心的處理器1316上執行之x86二進位碼1306(例如,物件碼)的編譯
器。相似地,圖13顯示可使用替代指令集編譯器1308編譯以高階語言1302撰寫的程式,以產生可為不具有至少一x86指令集核心的處理器1314(例如,具有執行加州桑尼維爾的MIPS Technologies的MIPS指令集及/或執行加州桑尼維爾的ARM Holdings的ARM指令集之核心的處理器)原生地執行的替代指令集二進位碼1310。指令變換器1312可用於將x86二進位碼1306變換為可為不具有x86指令集核心的處理器1314原生地執行的碼。此已變換碼可不與替代指令集二進位碼1310相同;然而,該已變換碼將完成通用運算並以來自替代指令集的指令構成。因此,指令變換器1312代表經由模仿、模擬、或任何其他處理容許不具有x86指令集處理器或核心的處理器或其他電子裝置執行x86二進位碼1306的軟體、韌體、硬體、或彼等的組合。
圖14係根據本揭示發明之實施例的處理器之指令集架構1400的方塊圖。指令集架構1400可包括任何適當數量或種類的組件。
例如,指令集架構1400可包括處理實體,諸如,一或多個核心1406、1407及圖形處理單元1415。核心1406、1407可經由任何適當機制,諸如,經由匯流排或快取記憶體,通訊地耦接至指令集架構1400的其餘部分。在一實施例中,核心1406、1407可經由可包括匯流排介面單元1409及L2快取記憶體1410的L2快取記憶體控制1408通訊地耦接。核心1406、1407及圖形處理單元
1415可通訊地彼此耦接並經由互連1490耦接至指令集架構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。在一實施例中,將指令載入至執行實體1565可由一或多個執行級實施。此種級可包括,例如,指令預提取級1530、雙指令解碼級1550、暫存器更名級1555、發佈級1560、及寫回級1570。
在一實施例中,記憶體系統1540可包括已執行指令指標器1580。已執行指令指標器1580可儲存識別指令批次內之最舊的未調度指令的值。該最舊指令可對應於最低的程式次序(PO)值。PO可包括指令的獨特數。此種指令可係在藉由多串列表示之執行緒內的單一指令。PO可使用在有序指令中以確保碼的正確執行語意。PO可藉由諸如估算編碼在指令中之PO的增量而非絕對值的機制重構。此種重構PO可稱為「RPO」。雖然在本文中參考PO,此種PO可與RPO互換地使用。串列可包括其係彼此相依之資料的一系列指令。串列可在編譯時藉由二進位轉譯器配置。執行串列的硬體可用根據各種指令之PO的次序執行指定串列的指令。執行緒可包括多個串列,使得不同串列的指令可彼此相依。指定串列的PO可係該串列
中尚未從發佈級調度至執行之最舊指令的PO。因此,指定多個串列的執行緒,各串列包括由PO排序的指令,已執行指令指標器1580可儲存執行緒中的最舊PO,其藉由該最低數值顯示。
在另一實施例中,記憶體系統1540可包括引退指標器1582。引退指標器1582可儲存識別最後引退指令之PO的值。引退指標器1582可藉由,例如,引退單元454設定。若指令尚未引退,引退指標器1582可包括零值。
執行實體1565可包括處理器可藉由其執行指令之任何適當數量及種類的機制。在圖15的範例中,執行實體1565可包括ALU/乘法單元(MUL)1566、ALU 1567、及浮點單元(FPU)1568。在一實施例中,此種實體可使用包含在指定位址1569內的資訊。執行實體1565與級1530、1550、1555、1560、1570結合可共同地形成執行單元。
單元1510可用任何適當方式實作。在一實施例中,單元1510可實施快取記憶體控制。在此種實施例中,單元1510可因此包括快取記憶體1525。在另一實施例中,快取記憶體1525可實作為具有任何適當尺寸的L2統一快取記憶體,諸如,零、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之處理需要的資訊之任何適當數量及種類的機制。在一實施例中,記憶體系統1540可包括用於儲存資訊的載入儲存單元1590,諸如,寫至記憶體或暫存器或自其讀回的緩衝器。在另一實施例中,記憶體系統1540可包括提供實體及虛擬位址之間的位址值之查找的轉換後備緩衝器(TLB)1545。在另一實施例中,匯流排介面單元1520可包
括用於促進對虛擬記憶體之存取的記憶體管理單元(MMU)1544。在另一實施例中,記憶體系統1540可包括用於在實際需要執行指令之前向記憶體請求此種指令的預提取器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、DSP 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、鍵盤1736、及觸控板1730可通訊地耦接至EC 1735。揚聲器1763、耳機1764、及麥克風1765可通訊地耦接至音訊單元1762,其可依次通訊地耦接至DSP 1760。音訊單元1762可包括,音訊編碼解碼器及D類放大器。SIM卡1757可通訊地耦接至WWAN單元1756。組件,諸如,WLAN單元1750及藍牙單元1752,以及WWAN單元1756可用次世代形狀因子(NGFF)實作。
圖18係根據本揭示發明的實施例之具有用於移位和乘法器(SSM)之硬體的系統1800之部分的方塊圖。在一實施例中,此種SSM的運算可使用查找表產生。在另一實施例中,此種查找表可包括量化的最近相鄰者查找表。系統1800可執行將二或多個數相乘的指令。在一實施例中,該等指令可藉由SSM模組1816的使用而執行。在另一實施例中,用於乘法的指令可具體地指定由SSM,諸如,SSM模組1816,執行。在另一實施例中,用於乘法的指令可由SSM模組1816實施而不由指令具體地指定(與其他乘法邏輯、電路、或執行單元相反)。在另一實施例中,用於乘法的指令可解碼為、解譯為指定由SSM模組1816執行的指令、或為其所取代。
SSM模組1816可實作在系統1800的任何適當部分中。再者,系統1800可包括任何適當數量及種類之SSM模組1816的實作。在一實施例中,SSM模組1816可實作在處理器1802中。在另一實施例中,SSM模組1816可實作在核心1812中。在另一實施例中,SSM模組1816可實作在執行單元1814中。SSM模組1816可用任何適當方式實作。SSM模組1816可藉由邏輯、類比電路、或數位電路的任何適當組合實作以實施本文描述的功能。SSM模組1816可實作為模組。SSM模組1816之實作的範例實施例將關聯於圖19於下文更詳細地討論。
處理器1802可部分地藉由圖1-17之元件的任何適當組合實作。處理器1802可包括前端1806,其可接收並使用解碼器1808解碼來自指令串流1804的指令。已解碼指令可解碼為一或多個微運算。微運算可藉由調度1810針對執行調度或排程並藉由配置器1811配置至特定核心1812或執行單元1814。在執行後,指令可藉由引退單元1820引退。雖然在本文中將各種運算描述為藉由處理器1802的特定組件實施,該功能可藉由處理器1802的任何適當部分實施。
使用SSM模組1816的乘法指令可由任何適當來源引起。乘法指令可由處理器1802從指令串流1804接收。另外,在未具體地識別為乘法指令前,指令串流1804中的指令可增加或導致乘法指令的執行。在此種情形中,實施乘法指令可藉由,例如,解碼器1808從在處理器1802接
收的指令產生。另外,解碼器1808可從未具體地指定由SSM執行的乘法指令產生指定由SSM執行的乘法指令。解碼器1808也可將指定由SSM執行之指令解碼為用於格式化因子及執行乘法運算二者的一系列已解碼指令。任何適當形式的指令可用於指定由SSM執行。例如,標示為「MULT-SSM」的指令可係正常乘法指令的變化,其中該「MULT-SSM」指令指定執行待由SSM實施。在另一範例中,正常乘法指令,諸如「MULT」,可包括參數、遮罩、旗標、或待由SSM執行的其他指定。在另一範例中,解碼器1808可基於乘法可藉由,例如,SSM模組1816實施的辨識而將正常乘法解碼為用於「MULT-SSM」的指令(或等效指令)。在另一實施例中,解碼器1808可將「MULT-SSM」指令解碼為格式化指令及指令以由SSM實施乘法。在一實施例中,此種格式化指令可包括將乘法因子縮放至適於SSM模組1816運算的範圍。在另一實施例中,此種格式化指令可包括signoid函數的應用以近似範圍中的期望值。可產生二或多個「MULT-SSM」指令以將三或多個因子相乘。
假定待由SSM模組1816執行的乘法指令包括二因子,乘數「X」及被乘數「w」,SSM模組1816的運算可指定為「X*w」。X可包括實數。在各種實施例中,可將w的值限制在指定範圍。在一實施例中,w可界定為在範圍[0...1]中之數的集合。在另一實施例中,w可界定為在範圍[0...k]中之數的集合。在此種實施例中,SSM模組
1816可藉由首先將X與k相乘,然後藉由相關於於k將w正規化而將其處理為在範圍[0...1]內的數而執行該乘法運算。因此,SSM模組1816可將w與X*k的乘積結果相乘以實現期望結果。在各種其他實施例中,w可從signoid函數的應用產生以近似w之範圍中的期望值。
在一實施例中,當w在範圍[0...1]內時,SSM模組1816的運算可僅使用移位運算及加法實作以將X與w相乘。在另一實施例中,此種移位運算可僅包括右移位運算。在另一實施例中,此種加法可包括負數,等於減法。當w在範圍[0...k]內時,為實作X乘w的乘法,SSM模組1816可首先乘X*k,然後將結果與現在在範圍[0...1]內的已正規化w值相乘。因此,其中X*k的結果與範圍[0...1]中之w相乘的此最後步驟可僅使用移位運算及加法實施。若k係二的整數對數,則與k的乘法及正規化可使用尺寸為log2k的移位實施。
在一實施例中,可將w界定為在範圍[-b...b]中之數的集合,其中b等於二。在另一實施例中,w可界定為在範圍[-b*k...b*k]中之數的集合。在此種實施例中,SSM模組1816可藉由首先將X與k相乘,然後將w處理為在範圍[-b...b]內的數而執行該乘法運算。因此,SSM模組1816可將w與X*k的乘積結果相乘以實現期望結果。
在一實施例中,當w在範圍[-b...b]內時,SSM模組1816的運算可僅使用移位運算及加法實作以將X與w相乘。在另一實施例中,此種移位運算可僅包括右移位運
算。在另一實施例中,此種加法可包括負數,等於減法。當w在範圍[-b*k...b*k]內時,為實作X乘w的乘法,SSM模組1816可首先乘X*k,然後將結果與現在在範圍[-b...b]內的已正規化w值相乘。因此,其中X*k的結果與範圍[b...b]中之w相乘的此最後步驟可僅使用移位運算及加法實施。若k係二的整數對數,則與k的乘法及正規化可使用尺寸為log2k的移位實施。
在各種實施例中,將X與w相乘可藉由產生加在一起的部分乘積實施。各部分乘積可藉由將X向右移位指定次數而產生,其中該指定數可在部分乘積之間變化。另外,各部分和可藉由保持部分和為正或使其為負而產生。SSM模組1816的精準度可取決於所產生之部分和的數量。在一實施例中,部分乘積的數量、部分乘積將移位的次數、及部分乘積是否將係正或負的可藉由查找表提供。查找表可包括在SSM模組1816中或在可為SSM模組1816存取之處理器1802的區域中。查找表可藉由w的值索引。該結果可包括因子S1、S2、S3等的規格,指示指定部分乘積將,例如,向右移位多少次。該結果也可包括因子F1、F2、F3等的規格,指示指定部分乘積是否將係正或負的。在部分實施例中,第一部分乘積可假設係正的。在一實施例中,查找表可包括w的量化可能值,且該表可實作成將其係最接近乘法指令(最近相鄰者)之w的量化可能值傳回。
SSM模組1816可將部分乘積加在一起以提供X*w的
估算值。SSM模組1816可將該和輸出至記憶體、暫存器、快取記憶體、或系統1800的任何其他適當部分,諸如,記憶體次系統1818。
在一實施例中,其中SSM模組1816可實作成計算乘積Y=X*w,其中w係[0...1](或從[0...k]正規化),可將SSM模組1816的運算指定為
其中d係待用於計算X*w之部分乘積的數量。c的值可係(d-1)。「>>」運算代表移位運算,以將輸入(諸如,X)向右移位指定次數(諸如,Sx)。各部分乘積可藉由F的個別值是否係偶數或奇數而指定為係正或負的。此運算的數學等效方程式可給定為:
如上文討論的,SSM模組1816可基於w的指定值從查找表得到移位參數及旗標參數。SSM模組1816可實作任何適當數量的部分乘積。增加部分乘積的數量可增加計算之估算的精確性,越來越小的部分乘積可有助於更精細的粒度。部分乘積之數量上的增加可需要更大的查找表以產生大量可變數量的移位及旗標參數。再者,增加部分乘積的數量可需要增加實施該計算所需之邏輯的量、移位器
的數量、加法器的數量、及區域的尺寸。若使用二個移位器(且因此產生二個部分乘積),w在查找表中的近似可具有少於或等於八分之一的誤差。與正常乘法電路相反,實作使用二個移位器的14x14位元乘法器可將所需閘極數從約970個閘極降低至70個閘極。若使用三個移位器,w在查找表中的近似可具有少於或等於三十二分之一的誤差。與正常乘法電路相反,實作使用三個移位器的14x14位元乘法器可將所需閘極數降低約85%。因此,當SSM 1816基於精確度及空間節省之間的取捨產生時,可決定用於實作SSM 1816的移位器數。
在另一實施例中,其中SSM模組1816可實作成計算乘積Y=X*w,其中w係[-b...b](或從[-b*k...b*k]正規化),可將SSM模組1816的運算指定為
其中c係待用於計算X*w之部分乘積的數量。此運算的數學等效方程式可給定為:
圖19係根據本揭示發明的實施例之SSM模組1900的圖示,其中w在(或從[0...k]正規化至)範圍[0...1]內。在部分情形中,signoid函數可用於近似w之範圍中的期
望值。signoid函數及其參數可取代w傳送。SSM模組1900可完全或部分地實作SSM模組1816。
SSM模組1900可包括控制邏輯1902以決定是否需要實施任何預處理,諸如,X與k相乘或將w相關於k正規化。控制邏輯1902可藉由,例如,將X或w的值向右或左移位(log2w)的次數而實施此種乘法或正規化。另外,控制邏輯1902可在查找表(LUT)1904A中查找w的值。LUT 1904A在下文更詳細地討論。LUT 1904A可藉由任何適當的資料結構、光暈過濾器、或用於有效地傳回值的其他機制實作。可傳回不同的S及F參數的值。S及F參數的數量可取決於SSM模組1900在估算X*w之乘積時將使用的部分乘積數。各個S可係正整數。各個F可係零或一。
控制邏輯1902可將X及S與F參數路由至SSM 1906。SSM 1906可用任何適當方式實作。在一實施例中,SSM 1906的實作可取決於w是否在範圍[0...1]或另一範圍,諸如,[-b...b]內。在另一實施例中,SSM 1906的實作可取決於SSM 1906待計算多少個部分乘積。若提供少於最大數量的F及S參數,SSM 1906可將自身的部分致能或除能。除能可包括預設將未對其提供F或S參數之未使用的部分乘積設定為零值。致能可包括計算部分乘積,其中依需要提供S及F以計算部分乘積。
第一部分乘積可藉由將X的位元邏輯地向右移位由S1指定之次數的移位器1910A產生。此可具有將X除以(2^S1)的效果。移位器1910A(及其他移位器)可用任何適
當方式實作以將X邏輯地向右移位指定的次數(諸如,S1)。例如,多個移位機制可包括在移位器1910A中,並可將指定之S1個此種機制致能。次一部分乘積可藉由將X向右移位由S1指定之次數的移位器1910B;藉由引起負一之F1乘冪的指數模組1912A;及使用乘法器1914A將該二個結果相乘而產生。指數模組1912A(及其他指數模組)可用任何適當方式實作以,若F1係奇數,產生負一,且若F1係偶數,產生正一。在部分實施例中,指數模組1912A及乘法器1914A可藉由邏輯控制實作,以若F1係奇數,實施逐位元NOT或補數運算以導致移位器1910B的輸出變為負的。若F1係偶數,則移位器1910B的輸出可不改變地路由至加法器1916A。後續部分乘積可藉由相似組合計算。各部分乘積可路由至其可將該等部分乘積相加的加法器1916A。加法器1916A的輸出可係該乘法計算之結果的估算乘積。
圖20係根據本揭示發明的實施例之SSM模組1900的圖示,其中w在(或從[-b*k...b*k]正規化至)範圍[-b...b]內。SSM模組1900可完全或部分地實作SSM模組1816。
SSM模組1900可包括控制邏輯1902以決定是否需要實施任何預處理,諸如,X與k相乘或將w相關於k正規化。控制邏輯1902可藉由,例如,將X或w的值向右或左移位(log2w)的次數而實施此種乘法或正規化。另外,控制邏輯1902可在LUT 1904B中查找w的值。LUT 1904B
可藉由任何適當的資料結構、光暈過濾器、或用於有效地傳回值的其他機制實作。LUT 1904A的特定值可與LUT 1904B的值不同。另外,SSM 1908可與SSM 1906不同地實作。因此,控制邏輯1902可估算w的範圍並存取LUT及SSM的合適者。可傳回不同的S及F參數的值。S及F參數的數量可取決於SSM模組1900在估算X*w之乘積時將使用的部分乘積數。各個S可係正整數。各個F可係零或一。在一實施例中,S及F參數的數量可相等。
控制邏輯1902可將X及S與F參數路由至SSM 1908。SSM 1908可用任何適當方式實作。在一實施例中,SSM 1908的實作可取決於w是否在範圍[0...1]或另一範圍,諸如,[-b...b]內。在圖20的範例中,將範圍假定為[-b...b]。在另一實施例中,SSM 1908的實作可取決於SSM 1906待計算多少個部分乘積。若提供少於最大數量的F及S參數,SSM 1908可將自身的部分致能或除能。除能可包括預設將未對其提供F或S參數之未使用的部分乘積設定為零值。致能可包括計算部分乘積,其中依需要提供S及F以計算部分乘積。
第一部分乘積可藉由將X的位元邏輯地向右移位由S1指定之次數的移位器1910D;藉由引起負一之F1乘冪的指數模組1912D;及使用乘法器1914D將該二個結果相乘而產生。其他部分乘積可使用個別移位器、指數模組、及乘法器以相似方式產生。各部分乘積可路由至其可將該等部分乘積相加的加法器1916B。加法器1916B的輸出可
係該乘法計算之結果的估算乘積。
LUT的內容可根據待由指定SSM使用之部分乘積的數量決定。LUT的內容可儲存在記憶體中。在各種實施例中,在圖19的情形中,LUT可對函數空間G:N-->[0,1]提供逐段常數近似,而在圖20的情形中,對G:N-->[-b,b](或[-2,2])提供。[-2...2]的範圍可從圖20所顯示的架構產生。指定函數空間G的值,或指定對應於w之分數輸出的值,可將移位及旗標參數傳回。
指定LUT的值可用任何適當方式決定。例如,給定於上文顯示所產生之使用移位及旗標參數的計算的數學方程式,可計算從各S參數及各F參數的不同值之排列集合產生的值。例如,設定X為一,Y的不同值可針對SSM 1906或SSM 1908的任一者計算。該等不同值可因此代表w的分數值。可排序該等結果。所有S及F參數的所有可能值的完整排列集合可具有冗餘結果,意謂著S及F的二個不同組合可導致相同的分數輸出。限制可用於消除LUT的可能冗餘值。例如,在二移位SSM中,可施用限制S1<S2以消除S及F的部分排列。在另一範例中,若S1=S2,可施用F1必須等於一的限制以消除S及F的部分排列。
以下係代表用於在範圍[0...1]中的w之LUT的範例實施例的表,遵循上述步驟計算。為了將完整的表顯示於本文中,假設係二移位SSM。
因此,例如,若w等於0.54,控制邏輯1902可存取LUT 1904A,發現0.54的最近相鄰者係編號三十五的項,並傳回S1=1、S2=5、及F1=0。此等值可提供至SSM 1906,其可產生係X*0.54之近似的輸出。
另外,w可係函數的結果。例如,w可係函數「f(n)」,其中n係無正負號整數且f(n)係將該無正負號整數映射至區間[0...1]中之實數的signoid函數。例如,可將f(n)給定為
其中a及b係常數。當n從0變化至1000時,f可形成從零至一的s-形圖。LUT可映射n的值及f的結果值。例如:
若已映射,此等資料點會描繪函數f(N)的量化梯形函數表示。此等輸出值可取決於該特別的LUT及SSM依次與合適的移位及旗標參數關聯。例如,基於具有[0...1]之期望w範圍的SSM,採用下列三移位及二旗標的LUT:
給定表3中的上述範例LUT值,考慮其中X係725且N係305的範例。該表中的最接近值可包括針對300的項。為計算X*F(N),LUT可針對N使用305的關聯值查詢。LUT可自此產生參數,諸如,S1係三、S2係六、S3係九、F1係1、且F2係零。此恰對應於0.11的值,其係f(300)的近似值。當SSM對數725實施合適移位及正負號變換時,結果可係82。因此,在各種實施例中,LUT可使用signoid函數存取以近似w之範圍中的期望值。
圖21係根據本揭示發明之實施例用於移位和乘法的方法2100之實施例的流程圖。方法2100可在任何適當點開始並可用任何適當順序執行。在一實施例中,方法2100可在2105開始。在各種實施例中,方法2100可在
處理器,諸如,處理器1802,或SSM,諸如,SSM 1906或SSM 1908的執行期間實施。再者,方法2100可藉由處理器1802之元件或其他元件的任何適當組合實施。
在2105,可接收或解碼用於執行的指令。在2110,可決定指令係適於由SSM執行的乘法指令。乘法可包括,或可轉換為,X及w的乘法。在2115,指令及針對該指令配置的資源可調度至用於執行的SSM。
在2120,為調度指令至正確的SSM(或正確地致能SSM),可決定w的範圍是否係[0...k]或[-b*k...b*k]。若w的範圍係[0...k],方法2100可前進至2125。若w的範圍係[-b*k...b*k],方法2100可前進至2150。
在2125,若k不係值一,則k可使用,例如,移位器以與X相乘。再者,w可相關於k正規化,使得w的範圍係[0...1]。在2130,w的結果值可在LUT中查找。LUT可根據待由SSM使用之部分乘積的數量並藉由w的範圍設定。移位及旗標參數的合適數量可從LUT取得。
在2135,在SSM中,從2125產生之X的值可針對部分乘積向右移位S1次,其中S1係由LUT所指定。在2140,從2125產生之X的值可向右移位S2次,其中S2係由LUT所指定。此種移位的結果可與(-1^F1)相乘,其中F1係由LUT指定;此可使用逐位元互補函數實施。此可導致另一部分乘積。在2145,額外的部分乘積可用與描述於2140中的相同方式計算,但使用後續的S及F參數。方法2100可前進至2170。
在2150,b可係二,且若k不係值一,則k可使用,例如,移位器與X相乘。再者,w可相關於k正規化,使得w的範圍係[-b…b](或[-2…2])。在2155,w的結果值可在LUT中查找。LUT可根據待由SSM使用之部分乘積的數量並藉由w的範圍設定。移位及旗標參數的合適數量可從LUT取得。
在2160,在SSM中,從2150產生之X的值可向右移位S1次,其中S1係由LUT所指定。此種移位的結果可與(-1^F1)相乘,其中F1係由LUT指定;此可使用逐位元互補函數實施。此可導致一部分乘積。在2165,額外的部分乘積可用與描述於2160中的相同方式計算,但使用後續的S及F參數。方法2100可前進至2170。
在2170,可將部分乘積相加,且在2175,將結果傳回為X*w的估算乘積。方法2100可選擇性地重複或終止。
方法2100可藉由任何適當準被啟動。另外,雖然方法2100描述特定元件的運算,方法2100可藉由任何適當的元件組合或種類實施。例如,方法2100可藉由描繪於圖1-20中的元件或可操作以實作方法2100的任何其他系統實作。因此,方法2100的較佳啟始點及包含方法2100之元件的次序可取決於所選擇的實作。在部分實施例中,部分元件可選擇性省略、重組、重複、或組合。
本文揭示之機制的實施例可實作的硬體、軟體、韌體、或此種實作方式的組合之中。本揭示發明的實施例可
實作為在可程式化系統上執行的電腦程式或程式碼,該系統包含至少一處理器、儲存系統(包括揮發性及非揮發性記憶體及/或儲存元件)、至少一輸入裝置、及至少一輸出裝置。
可將程式碼施用至輸入指令,以實施本文描述的函數並產生輸出資訊。可用已知方式將輸出資訊施用至一或多個輸出裝置。針對此申請案的用途,處理系統可包括具有處理器,諸如;數位訊號處理器(DSP)、微控制器、特定應用積體電路(ASIC)、或微處理器,的任何系統。
程式碼可用高階程序或物件導向程式語言實作,以與處理系統通訊。若有需要,程式碼也可用組合或機器語言實作。實際上,本文描述的機制在範圍上並未受限於任何特定程式語言。在任何情形中,語言可係編譯或解譯語言。
至少一實施例的一或多個樣態可藉由儲存在機器可讀媒體上之代表處理器內的各種邏輯的代表性指令實作,當其由機器讀取時,導致機器製造邏輯以實施本文描述的技術。可將稱為「IP核心」的此種代表儲存在實體機器可讀媒體中,並供應至各種客戶或製造設施,以載入至實際產生邏輯或處理器的製造機器中。
此種機器可讀儲存媒體可不受限制地包括藉由機器或裝置製造或形成的非暫態實體製品配置,包括儲存媒體,諸如,硬碟、任何其他種類的碟片,包括軟碟、光碟、光碟唯讀記憶體(CD-ROM)、可重寫光碟(CD-RW)、以及磁
光碟、半導體裝置,諸如,唯讀記憶體(ROM)、隨機存取記憶體(RAM),諸如,動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可抹除可程式化唯讀記憶體(EPROM)、快閃記憶體、電可抹除可程式化唯讀記憶體(EEPROM)、磁或光學卡、或適於儲存電子指令之任何其他種類的媒體。
因此,本揭示發明的實施例也可包括包含指令或包含設計資料,諸如,界定本文描述之結構、電路、設備、處理器、及/或系統特性的硬體描述語言(HDL),的非暫態實體機器可讀媒體。此種實施例也可稱為程式產品。
在部分情形中,指令變換器可用於將指令從來源指令集變換為目標指令集。例如,指令變換器可將指令轉換(例如,使用靜態二進位轉換、包括動態編譯的動態二進位轉換)、變形、模仿、或另外變換為待由核心處理的一或多個其他指令。指令變換器可實作於軟體、硬體、韌體、或彼等的組合之中。指令變換器可在處理器上、在處理器外、或部分在處理器上且部分在處理器外。
因此,揭示用於實施根據至少一實施例之一或多個指令的技術。在特定示例性的實施例已描述並顯示在隨附圖式中的同時,待理解此種實施例僅係其他實施例的說明而非限制,且此種實施例未受限於所顯示及描述的具體構造及配置,因為可對研讀此揭示之熟悉本技術的人士想出各種其他修改。在成長速度快且不容易預見進一步發展之諸如此技術的領域中,所揭示的實施例可藉由致能技術發展
促成易於在配置及細節上修改而不脫離本揭示發明的原理或隨附之申請專利範圍的範圍。
1800‧‧‧硬體的系統
1802‧‧‧處理器
1804‧‧‧指令串流
1806‧‧‧前端
1808‧‧‧解碼器
1810‧‧‧調度
1811‧‧‧配置器
1812‧‧‧核心
1814‧‧‧執行單元
1816‧‧‧SSM模組
1818‧‧‧記憶體次系統
1820‧‧‧引退單元
Claims (20)
- 一種用於移位和(shift-sum)乘法的處理器,包含:前端,包括解碼器,該解碼器包括用以識別乘法指令而將第一數及第二數相乘的電路,執行單元,用於執行該乘法指令,其包括:用以基於該指令存取查找表而決定複數個移位參數及一或多個旗標參數的電路,該存取係依據該第二數;及移位和乘法器(SSM),包括電路用以:使用該等移位參數移位該第一數而決定複數個部分乘積,及使用該等旗標參數決定該等部分乘積的正負號;及總和該等部分乘積以產生該乘法指令的結果;及引退單元,包括用以引退該指令的電路。
- 如申請專利範圍第1項之處理器,其中:該等移位參數及旗標參數包括第一移位參數、第二移位參數、及第一旗標參數;且為了決定該複數個部分乘積及該等部分乘積的正負號,該SSM包括電路用以:將該第一數逐位元向右移位等於該第一移位參數的次數以產生第一部分乘積;將該第一數逐位元向右移位等於該第二移位參數的次數以產生第二部分乘積;及基於該第一旗標參數將該第二部分乘積的正負號 設定為正或負的。
- 如申請專利範圍第2項的處理器,其中為了決定該複數個移位參數及該一或多個旗標參數,該執行單元包括用以基於包括該第二數的值範圍從該查找表取得該第一移位參數、第二移位參數、及第一旗標參數的電路,該值範圍係從零至一。
- 如申請專利範圍第1項之處理器,其中:該複數個移位參數之各者與該一或多個旗標參數之其中一者相關聯;且為了決定該複數個部分乘積及該等部分乘積的正負號,該SSM包括電路用以:將該第一數逐位元向右移位等於一給定的移位參數的次數以產生一給定的部分乘積;及基於與該給定的移位參數相關聯的該旗標參數將該給定的部分乘積的正負號設定為正或負的。
- 如申請專利範圍第4項的處理器,其中為了決定該複數個移位參數及該一或多個旗標參數,該執行單元包括用以基於包括該第二數的值範圍從該查找表取得該等相關聯的移位參數及旗標參數的電路,該值範圍係從負二至二。
- 如申請專利範圍第1項的處理器,其中為了存取該查找表,該執行單元包括用以針對被決定為最接近該第二數的值存取該表中的項的電路。
- 如申請專利範圍第1項的處理器,其中該查找表 針對該第二數的給定值界定:該第一數將被向右移位的次數,以產生該乘法指令之一相關聯的部分乘積;及該相關聯的部分乘積的正負號。
- 一種用於移位和乘法的方法,包含在處理器內:識別及解碼乘法指令,用以將第一數及第二數相乘;執行該指令,包括:基於該指令,存取查找表以決定複數個移位參數及一或多個旗標參數,該存取係依據該第二數;由該處理器內的移位和乘法器(SSM)使用該等移位參數移位該第一數而決定複數個部分乘積,及使用該等旗標參數決定該等部分乘積的正負號;及由該SSM總和該等部分乘積以產生該乘法指令的結果;及引退該指令。
- 如申請專利範圍第8項之方法,其中:該等移位參數及旗標參數包括第一移位參數、第二移位參數、及第一旗標參數;且決定該複數個部分乘積及該等部分乘積的正負號包含:將該第一數逐位元向右移位對應於該第一移位參數的次數以產生第一部分乘積;將該第一數逐位元向右移位對應於該第二移位參數的次數以產生第二部分乘積;及 基於該第一旗標參數將該第二部分乘積的正負號設定為正或負的。
- 如申請專利範圍第9項的方法,其中決定該複數個移位參數及該一或多個旗標參數包含:基於包括該第二數的值範圍從該查找表取得該第一移位參數、第二移位參數、及第一旗標參數,該值範圍係從零至一。
- 如申請專利範圍第8項之方法,其中:該複數個移位參數之各者與該一或多個旗標參數之其中一者相關聯;且決定該複數個部分乘積及該等部分乘積的正負號包含:將該第一數逐位元向右移位對應於一給定的移位參數的次數以產生給定的部分乘積;及基於與該給定的移位參數相關聯的該旗標參數將該給定的部分乘積的正負號設定為正或負的。
- 如申請專利範圍第11項的方法,其中決定該複數個移位參數及該一或多個旗標參數包含:基於包括該第二數的值範圍從該查找表取得該等相關聯的移位參數及旗標參數,該值範圍係從負二至二。
- 如申請專利範圍第8項的方法,其中存取該查找表包含針對最接近該第二數的值決定該表中的項。
- 一種用於移位和乘法的系統,包含:前端,包括解碼器,該解碼器包括用以識別乘法指令 而將第一數及第二數相乘的電路,執行單元,用於執行該乘法指令,其包括:用以基於該指令存取查找表而決定複數個移位參數及一或多個旗標參數的電路,該存取係依據該第二數;及移位和乘法器(SSM),包括電路用以:使用該等移位參數移位該第一數而決定複數個部分乘積,及使用該等旗標參數決定該等部分乘積的正負號;及總和該等部分乘積以產生該乘法指令的結果;及引退單元,包括用以引退該指令的電路。
- 如申請專利範圍第14項之系統,其中:該等移位參數及旗標參數包括第一移位參數、第二移位參數、及第一旗標參數;且為了決定該複數個部分乘積及該等部分乘積的正負號,該SSM包括電路用以:將該第一數逐位元向右移位等於該第一移位參數的次數以產生第一部分乘積;將該第一數逐位元向右移位等於該第二移位參數的次數以產生第二部分乘積;及基於該第一旗標參數將該第二部分乘積的正負號設定為正或負的。
- 如申請專利範圍第15項的系統,其中為了決定該複數個移位參數及該一或多個旗標參數,該執行單元包 括用以基於包括該第二數的值範圍從該查找表取得該第一移位參數、第二移位參數、及第一旗標參數的電路,該值範圍係從零至一。
- 如申請專利範圍第14項之系統,其中:該複數個移位參數之各者與該一或多個旗標參數之其中一者相關聯;且為了決定該複數個部分乘積及該等部分乘積的正負號,該SSM包括電路用以:將該第一數逐位元向右移位等於一給定的移位參數的次數以產生給定的部分乘積;及基於與該給定的移位參數相關聯的該旗標參數將該給定的部分乘積的正負號設定為正或負的。
- 如申請專利範圍第17項的系統,其中為了決定該複數個移位參數及該一或多個旗標參數,該執行單元包括用以基於包括該第二數的值範圍從該查找表取得該等相關聯的移位參數及旗標參數的電路,該值範圍係從負二至二。
- 如申請專利範圍第14項的系統,其中為了存取該查找表,該執行單元包括用以針對被決定為最接近該第二數的值存取該表中的項的電路。
- 如申請專利範圍第14項的系統,其中該查找表針對該第二數的給定值界定:該第一數將被向右移位的次數,以產生該乘法指令之一相關聯的部分乘積;及 該相關聯的部分乘積的正負號。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/578,605 US9678749B2 (en) | 2014-12-22 | 2014-12-22 | Instruction and logic for shift-sum multiplier |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201643694A TW201643694A (zh) | 2016-12-16 |
TWI588740B true TWI588740B (zh) | 2017-06-21 |
Family
ID=56129458
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW104138326A TWI588740B (zh) | 2014-12-22 | 2015-11-19 | 包括用於移位和(shift-sum)乘法器之指令及邏輯的處理器及系統,以及用於移位和乘法的方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9678749B2 (zh) |
EP (1) | EP3238023A4 (zh) |
CN (1) | CN107003839B (zh) |
TW (1) | TWI588740B (zh) |
WO (1) | WO2016105713A1 (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9678749B2 (en) * | 2014-12-22 | 2017-06-13 | Intel Corporation | Instruction and logic for shift-sum multiplier |
US10606587B2 (en) * | 2016-08-24 | 2020-03-31 | Micron Technology, Inc. | Apparatus and methods related to microcode instructions indicating instruction types |
US10162633B2 (en) * | 2017-04-24 | 2018-12-25 | Arm Limited | Shift instruction |
CN109284827A (zh) | 2017-07-19 | 2019-01-29 | 阿里巴巴集团控股有限公司 | 神经网络计算方法、设备、处理器及计算机可读存储介质 |
CN109961134B (zh) * | 2017-12-14 | 2020-06-23 | 中科寒武纪科技股份有限公司 | 集成电路芯片装置及相关产品 |
JP2022544854A (ja) * | 2019-08-23 | 2022-10-21 | グーグル エルエルシー | 符号付きマルチワード乗算器 |
CN111913686B (zh) * | 2020-05-29 | 2021-12-07 | 无锡市优利康电气有限公司 | 一种定点cpu的快速开平方计算的方法 |
CN112181354B (zh) * | 2020-10-12 | 2021-08-10 | 上海芯旺微电子技术有限公司 | 一种移位饱和同步处理的方法及其应用 |
US20220197595A1 (en) * | 2020-12-21 | 2022-06-23 | Intel Corporation | Efficient multiply and accumulate instruction when an operand is equal to or near a power of two |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050228845A1 (en) * | 2004-04-12 | 2005-10-13 | Mathstar, Inc. | Shift and recode multiplier |
US20110106868A1 (en) * | 2009-11-03 | 2011-05-05 | Arm Limited | Floating point multiplier with partial product shifting circuitry for result alignment |
US20120078992A1 (en) * | 2010-09-24 | 2012-03-29 | Jeff Wiedemeier | Functional unit for vector integer multiply add instruction |
TW201411481A (zh) * | 2012-05-18 | 2014-03-16 | Nvidia Corp | 具有在硬體中的分支計數表的指令最佳化處理器 |
TW201419145A (zh) * | 2009-08-07 | 2014-05-16 | Via Tech Inc | 微處理器以及預取資料至微處理器的方法 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5446651A (en) * | 1993-11-30 | 1995-08-29 | Texas Instruments Incorporated | Split multiply operation |
US5509129A (en) * | 1993-11-30 | 1996-04-16 | Guttag; Karl M. | Long instruction word controlling plural independent processor operations |
US5646877A (en) * | 1995-05-25 | 1997-07-08 | Texas Instruments Incorporated | High radix multiplier architecture |
US6298369B1 (en) | 1998-09-30 | 2001-10-02 | Stmicroelectronics, Inc. | High speed multiplier |
CA2294554A1 (en) * | 1999-12-30 | 2001-06-30 | Mosaid Technologies Incorporated | Method and circuit for multiplication using booth encoding and iterative addition techniques |
US6912557B1 (en) * | 2000-06-09 | 2005-06-28 | Cirrus Logic, Inc. | Math coprocessor |
US6651079B1 (en) * | 2000-07-18 | 2003-11-18 | Agere Systems Inc. | High speed pipeline multiplier with virtual shift |
US6941446B2 (en) | 2002-01-21 | 2005-09-06 | Analog Devices, Inc. | Single instruction multiple data array cell |
US8346902B2 (en) * | 2003-07-31 | 2013-01-01 | International Business Machines Corporation | Performing device configuration rediscovery |
US7680872B2 (en) * | 2005-01-11 | 2010-03-16 | Via Telecom Co., Ltd. | Canonical signed digit (CSD) coefficient multiplier with optimization |
EP1866741B1 (en) * | 2005-03-31 | 2009-07-15 | Nxp B.V. | Canonical signed digit multiplier |
US7430560B1 (en) * | 2005-07-22 | 2008-09-30 | X-Engines, Inc. | Multi-level compressed lock-up tables formed by logical operations to compress selected index bits |
JP4988627B2 (ja) * | 2008-03-05 | 2012-08-01 | ルネサスエレクトロニクス株式会社 | フィルタ演算器及び動き補償装置 |
KR20120027827A (ko) * | 2010-09-13 | 2012-03-22 | 한국전자통신연구원 | 디바이더 및 그것의 동작 방법 |
CN103268214A (zh) * | 2013-04-19 | 2013-08-28 | 荣成市鼎通电子信息科技有限公司 | 基于查找表的深空通信中准循环矩阵高速乘法器 |
US9678749B2 (en) * | 2014-12-22 | 2017-06-13 | Intel Corporation | Instruction and logic for shift-sum multiplier |
-
2014
- 2014-12-22 US US14/578,605 patent/US9678749B2/en not_active Expired - Fee Related
-
2015
- 2015-11-19 EP EP15873931.8A patent/EP3238023A4/en not_active Withdrawn
- 2015-11-19 WO PCT/US2015/061584 patent/WO2016105713A1/en active Application Filing
- 2015-11-19 CN CN201580063499.3A patent/CN107003839B/zh not_active Expired - Fee Related
- 2015-11-19 TW TW104138326A patent/TWI588740B/zh not_active IP Right Cessation
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050228845A1 (en) * | 2004-04-12 | 2005-10-13 | Mathstar, Inc. | Shift and recode multiplier |
TW201419145A (zh) * | 2009-08-07 | 2014-05-16 | Via Tech Inc | 微處理器以及預取資料至微處理器的方法 |
US20110106868A1 (en) * | 2009-11-03 | 2011-05-05 | Arm Limited | Floating point multiplier with partial product shifting circuitry for result alignment |
US20120078992A1 (en) * | 2010-09-24 | 2012-03-29 | Jeff Wiedemeier | Functional unit for vector integer multiply add instruction |
TW201411481A (zh) * | 2012-05-18 | 2014-03-16 | Nvidia Corp | 具有在硬體中的分支計數表的指令最佳化處理器 |
Also Published As
Publication number | Publication date |
---|---|
TW201643694A (zh) | 2016-12-16 |
US20160179514A1 (en) | 2016-06-23 |
US9678749B2 (en) | 2017-06-13 |
WO2016105713A1 (en) | 2016-06-30 |
EP3238023A4 (en) | 2018-05-30 |
CN107003839A (zh) | 2017-08-01 |
EP3238023A1 (en) | 2017-11-01 |
CN107003839B (zh) | 2020-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI588740B (zh) | 包括用於移位和(shift-sum)乘法器之指令及邏輯的處理器及系統,以及用於移位和乘法的方法 | |
TWI733710B (zh) | 用於重複發生相鄰聚集的處理器、方法和單元 | |
TWI721021B (zh) | 用於致能旗標操作的移除及重建之處理器、非暫時性機器可讀取媒體及計算系統 | |
TWI775105B (zh) | 用於使用monitor及mwait架構之使用者層級執行緒同步的方法及裝置 | |
TW201725509A (zh) | 用於安全指令執行管線之指令及邏輯 | |
TW201732581A (zh) | 用於載入索引與集中操作的指令及邏輯 | |
TWI556118B (zh) | 用於處理計算的向量格式的指令及邏輯 | |
TW201723856A (zh) | 用於亂序處理器中依序處置之指令與邏輯 | |
TW201723817A (zh) | 用於取得多重向量元素操作之指令及邏輯 | |
US20180004526A1 (en) | System and Method for Tracing Data Addresses | |
US20170168819A1 (en) | Instruction and logic for partial reduction operations | |
TW201732556A (zh) | 用於集合運算之加速的硬體內容關聯之資料結構 | |
TWI723075B (zh) | 用於向量置換的方法和處理器以及向量置換單元 | |
US20170286117A1 (en) | Instruction and Logic for Configurable Arithmetic Logic Unit Pipeline | |
TW201732555A (zh) | 用於向量位元欄壓縮及擴展的指令及邏輯 | |
TW201729079A (zh) | 用於檢測浮點消除效應之指令及邏輯 | |
US20210096866A1 (en) | Instruction length decoding | |
US9928066B2 (en) | Instruction and logic for encoded word instruction compression | |
US20170123799A1 (en) | Performing folding of immediate data in a processor | |
US20210303309A1 (en) | Reconstruction of flags and data for immediate folding | |
US20170177358A1 (en) | Instruction and Logic for Getting a Column of Data | |
TW201729081A (zh) | 用於以向量為基礎的位元操控之指令及邏輯 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |