TW201723814A - 用於可程式化組構層級與快取之指令及邏輯 - Google Patents

用於可程式化組構層級與快取之指令及邏輯 Download PDF

Info

Publication number
TW201723814A
TW201723814A TW105133058A TW105133058A TW201723814A TW 201723814 A TW201723814 A TW 201723814A TW 105133058 A TW105133058 A TW 105133058A TW 105133058 A TW105133058 A TW 105133058A TW 201723814 A TW201723814 A TW 201723814A
Authority
TW
Taiwan
Prior art keywords
programmable
instruction
fabric
unit
processor
Prior art date
Application number
TW105133058A
Other languages
English (en)
Inventor
里歐A 林斯基
Original Assignee
英特爾公司
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 英特爾公司 filed Critical 英特爾公司
Publication of TW201723814A publication Critical patent/TW201723814A/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7807System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30029Logical and Boolean instructions, e.g. XOR, NOT
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
    • G06F9/3897Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

在一實施例中,一種處理器包含:用於執行指令之第一核心;及可程式化組構,該可程式化組構具有層級佈置,該層級佈置包括第一層可程式化組構及第二層可程式化組構。該可程式化組構可包括組構介面控制器,其用於:接收來自該第一核心之第一可程式化組構控制指令;並且對其作出回應,導致該第一層可程式化組構之第一可程式化組構單元對於第一輸入資料執行操作。本發明描述且主張其他實施例。

Description

用於可程式化組構層級與快取之指令及邏輯
發明領域
本揭示係有關於在由處理器或其他處理邏輯執行時執行邏輯運算、數學運算或其他函數運算之處理邏輯、微處理器及相關指令集架構的領域。
發明背景
多處理器系統正變得越來越常見。多處理器系統之應用包括細分一直到桌面計算之動態領域。為了利用多處理器系統,要執行之代碼可以被分成多個線程以供各種處理實體執行。每個線程可以彼此並行地執行。此外,為了增加處理實體之效用,可以採用亂序執行。當此等指令之輸入可用時,亂序執行可以執行指令。因此,在代碼序列中稍後出現之指令可以在代碼序列中較早出現之指令之前執行。處理器系統可以與外部共處理器、數位信號處理器以及諸如圖形處理單元及現場可程式化閘陣列之專用處理單元通訊。處理器系統可以通過外部匯流排與此等元件通訊。
依據本發明之一實施例,係特地提出一種處 理器,包含:用以執行指令之一第一核心,該第一核心形成於一第一晶粒上;以及具有一層級佈置之一可程式化組構,該層級佈置包括形成於該第一晶粒上之一第一層可程式化組構及形成於該第一晶粒上之一第二層可程式化組構,該可程式化組構包括一組構介面控制器用以:接收來自該第一核心之一第一可程式化組構控制指令;以及對其回應,導致該第一層可程式化組構之一第一可程式化組構單元對第一輸入資料執行一操作。
100‧‧‧電腦系統
102、200、500、610、615、870、880、1000、1215、1710‧‧‧處理器
104‧‧‧1階(L1)內部快取記憶體
106、145、164‧‧‧暫存器檔案
108、142、162、462‧‧‧執行單元
109、143‧‧‧緊縮指令集
110‧‧‧處理器匯流排
112‧‧‧圖形卡
114‧‧‧加速圖形埠(AGP)互連
116‧‧‧系統邏輯晶片/記憶體控制器集線器
118‧‧‧記憶體介面
120、640、732、734、832、834、1140、1814、2016‧‧‧記憶體
122‧‧‧系統I/O/集線器介面匯流排
124‧‧‧資料儲存器
126‧‧‧無線收發器
128‧‧‧韌體集線器
130‧‧‧I/O控制器集線器
134‧‧‧網路控制器
140、160‧‧‧資料處理系統
141‧‧‧匯流排
144、165‧‧‧解碼器
146‧‧‧同步動態隨機存取記憶體(SDRAM)控制
147‧‧‧靜態隨機存取記憶體(SRAM)控制
148‧‧‧高載快閃記憶體介面
149‧‧‧個人電腦記憶卡國際協會(PCMCIA)/緊密快閃(CF)卡控制
150‧‧‧液晶顯示器(LCD)控制
151‧‧‧直接記憶體存取(DMA)控制器
152‧‧‧替代性匯流排主控介面
153‧‧‧I/O匯流排
154‧‧‧I/O橋接器
155‧‧‧通用非同步接收器/發射器(UART)
156‧‧‧通用串列匯流排(USB)
157‧‧‧藍牙無線UART
158‧‧‧I/O擴展介面
159、170‧‧‧處理核心
161‧‧‧SIMD共處理器
163‧‧‧指令集
166‧‧‧主處理器
167‧‧‧快取記憶體
168‧‧‧輸入/輸出系統
169‧‧‧無線介面
201‧‧‧循序前端
202‧‧‧快速排程器
203‧‧‧亂序執行引擎
204‧‧‧緩慢/一般浮點排程器
206‧‧‧簡單浮點排程器
208‧‧‧整數暫存器檔案
210‧‧‧浮點暫存器檔案
211‧‧‧執行區塊
212、214‧‧‧執行單元/位址產生單元
216‧‧‧執行單元/快速算術邏輯單元
218‧‧‧執行單元/快速ALU
220‧‧‧執行單元/緩慢ALU
222‧‧‧執行單元/浮點ALU
224‧‧‧執行單元/浮點移動單元
226‧‧‧指令預擷取器
228‧‧‧指令解碼器
230‧‧‧追蹤快取
232‧‧‧微碼ROM
234‧‧‧微操作佇列
310‧‧‧緊縮位元組
320‧‧‧緊縮字
330、343‧‧‧緊縮雙字
341‧‧‧緊縮半字
342‧‧‧緊縮單字
344‧‧‧不帶正負號的緊縮位元組表示
345‧‧‧帶正負號的緊縮位元組表示
346‧‧‧不帶正負號的緊縮字表示
347‧‧‧帶正負號的緊縮字表示
348‧‧‧不帶正負號的緊縮雙字表示
349‧‧‧帶正負號的緊縮雙字表示
360、370‧‧‧運算碼格式
361、362、371、372、383、384、387、388‧‧‧欄位
363、373‧‧‧MOD欄位
364、365、374、375、385、390‧‧‧來源運算元識別符
366、376、386‧‧‧目的地運算元識別符
378‧‧‧前綴位元組
380‧‧‧操作編碼(運算碼)格式
381‧‧‧條件欄位
382、389‧‧‧CDP運算碼欄位
400‧‧‧處理器管線
402‧‧‧擷取階段
404‧‧‧長度解碼階段
406‧‧‧解碼階段
408‧‧‧分配階段
410‧‧‧重新命名階段
412‧‧‧排程(亦稱為分派或發出)階段
414‧‧‧暫存器讀取/記憶體讀取階段
416‧‧‧執行階段
418‧‧‧寫回/記憶體寫入階段
422‧‧‧異常處置階段
424‧‧‧確認階段
430‧‧‧前端單元
432、1535‧‧‧分支預測單元
434‧‧‧指令快取單元
436‧‧‧指令轉換旁看緩衝器
438‧‧‧指令擷取單元
440‧‧‧解碼單元
450‧‧‧執行引擎單元
452‧‧‧重新命名/分配器單元
454‧‧‧引退單元
456‧‧‧排程器單元
458‧‧‧實體暫存器檔案單元
460‧‧‧執行叢集
464‧‧‧記憶體存取單元
470‧‧‧記憶體單元
472‧‧‧資料TLB單元
474‧‧‧資料快取單元
476‧‧‧2階(L2)快取單元
490‧‧‧處理器核心
502、902A-N、1406、1407‧‧‧核心
503‧‧‧快取層級
506、572、574、1525‧‧‧快取
508‧‧‧基於環之互連單元
510‧‧‧系統代理
512‧‧‧顯示器引擎
516‧‧‧直接媒體介面
552、1544‧‧‧記憶體控制單元
560‧‧‧圖形模組
565‧‧‧媒體引擎
570‧‧‧前端
580‧‧‧亂序引擎
584‧‧‧資源排程器
586‧‧‧資源
588‧‧‧重新排序緩衝器
590‧‧‧模組
595‧‧‧LLC
599‧‧‧RAM
600、1800‧‧‧系統
620‧‧‧圖形記憶體控制器集線器
645、1724‧‧‧顯示器
650‧‧‧輸入/輸出(I/O)控制器集線器
670‧‧‧周邊裝置
695‧‧‧前端匯流排
700‧‧‧多處理器系統
714、814‧‧‧I/O裝置
716‧‧‧第一匯流排
718‧‧‧匯流排橋接器
720‧‧‧第二匯流排
722‧‧‧鍵盤及/或滑鼠
724‧‧‧音訊I/O
727‧‧‧通訊裝置
728‧‧‧儲存單元
730‧‧‧指令/碼及資料
738‧‧‧高效能圖形電路
739‧‧‧高效能圖形介面
750‧‧‧點對點互連
752、754、786、788‧‧‧P-P介面
770、780‧‧‧第一處理器
772、782、914‧‧‧整合型記憶體控制器單元
776、778‧‧‧點對點(P-P)介面
790、890‧‧‧晶片組
794、796‧‧‧點對點介面電路
800‧‧‧第三系統
815‧‧‧舊式I/O裝置
872、882‧‧‧整合型記憶體及I/O控制邏輯
900、1802‧‧‧SoC
902‧‧‧互連單元
906‧‧‧共享快取單元
908‧‧‧整合圖形邏輯
910‧‧‧應用處理器
916‧‧‧匯流排控制器單元
920‧‧‧媒體處理器
924、1015‧‧‧影像處理器
926‧‧‧音訊處理器
928、1020‧‧‧視訊處理器
930‧‧‧SRAM單元
932‧‧‧DMA單元
940‧‧‧顯示單元
1005、1804‧‧‧CPU
1010‧‧‧GPU
1025‧‧‧USB控制器
1030‧‧‧UART控制器
1035‧‧‧SPI/SDIO控制器
1040‧‧‧顯示裝置
1045‧‧‧記憶體介面控制器
1050‧‧‧MIPI控制器
1055‧‧‧快閃記憶體控制器
1060‧‧‧雙資料速率(DDR)控制器
1065‧‧‧安全引擎
1070‧‧‧I2S/I2C控制器
1110‧‧‧硬體或軟體模型
1120‧‧‧模擬軟體
1130‧‧‧儲存器
1150‧‧‧有線連接
1160‧‧‧無線連接
1205‧‧‧程式
1210‧‧‧仿真邏輯
1214‧‧‧介面
1218‧‧‧PCIe橋接器
1220‧‧‧記憶體控制器
1222‧‧‧相干性邏輯
1282‧‧‧分配模組
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‧‧‧行動行業處理器介面
1495‧‧‧高清晰度多媒體介面
1504、1540‧‧‧記憶體系統
1510‧‧‧快取及匯流排介面單元
1511‧‧‧中斷控制及分佈單元
1512‧‧‧監聽控制單元
1514‧‧‧監聽過濾器
1515‧‧‧計時器
1516‧‧‧AC埠
1530‧‧‧指令預擷取階段
1531‧‧‧選項
1532‧‧‧指令快取
1536‧‧‧全域歷史
1537‧‧‧目標位址
1538‧‧‧返回堆疊
1543‧‧‧預擷取器
1545‧‧‧轉換旁看緩衝器
1550‧‧‧雙重指令解碼階段
1555‧‧‧暫存器重新命名階段
1556‧‧‧暫存器池
1557‧‧‧分支
1560‧‧‧發出階段
1561‧‧‧指令佇列
1564、1565‧‧‧執行實體
1566‧‧‧ALU/乘法單元
1567‧‧‧ALU
1568‧‧‧浮點單元
1569‧‧‧給定位址
1570‧‧‧寫回階段
1575‧‧‧追蹤單元
1580‧‧‧執行指令指標
1582‧‧‧引退指標
1600‧‧‧執行管線
1605、1610、1615、1620、1625、1630、1640、1650、1655、1660、1665、1670、1675、1680、2405、2410、2415、2420、2425、2430、2435、2440、2445、2450、2455、2460‧‧‧步驟
1700‧‧‧電子裝置
1715‧‧‧低功率雙倍資料速率(LPDDR)記憶體單元
1720‧‧‧驅動機
1725‧‧‧觸控螢幕
1722‧‧‧BIOS/韌體/快閃記憶體
1730‧‧‧觸控墊
1735‧‧‧快速晶片組
1737‧‧‧風扇
1738‧‧‧可信平台模組
1739、1746‧‧‧熱感測器
1740‧‧‧感測器集線器
1741‧‧‧加速計
1742‧‧‧環境光感測器
1743‧‧‧羅盤
1744‧‧‧回轉儀
1745‧‧‧近場通訊(NFC)單元
1750‧‧‧無線局域網路(WLAN)單元
1752‧‧‧藍牙單元
1754‧‧‧攝影機
1756‧‧‧無線廣域網路(WWAN)單元
1757‧‧‧SIM卡
1760‧‧‧DSP
1763‧‧‧揚聲器
1764‧‧‧耳機
1765‧‧‧麥克風
1806‧‧‧快取子系統
1808‧‧‧晶片I/O
1810‧‧‧系統可程式化組構
1812‧‧‧匯流排
1816‧‧‧L1可程式化組構
1818‧‧‧L2可程式化組構
1820‧‧‧L1組構快取
1822‧‧‧L2組構快取
1826‧‧‧可程式化組構區域
1902‧‧‧組構介面控制器
1902A、1902B、2202、2302‧‧‧FIC
1904‧‧‧組態記憶體控制器
1904A、1904B、2304‧‧‧CMC
1906‧‧‧組態快取
1906A、1906B‧‧‧cCache LN
1908‧‧‧可程式化組構陣列
1908A、1908B‧‧‧陣列
1910‧‧‧指令分派單元
1912‧‧‧資料快取LN
1914、1930‧‧‧cCache-快取
1920、1922‧‧‧組構器組
2002‧‧‧L1組構器組
2004‧‧‧L1 cCache-快取
2006‧‧‧L3系統快取
2008‧‧‧L2組構器組
2010‧‧‧L2 cCache-快取
2012‧‧‧L3可程式化組構
2014‧‧‧L3快取及控制器
2102‧‧‧L1 cCache
2104、2104N‧‧‧組態
2106‧‧‧組構0
2108‧‧‧邏輯區塊
2204‧‧‧輸出移位暫存器
2206‧‧‧邏輯區域
2208‧‧‧輸入移位暫存器
2306‧‧‧輸入-輸出組構通訊通道
2308‧‧‧指令埠
2310‧‧‧控制邏輯
2312‧‧‧埠
2314‧‧‧cCache相干性控制邏輯
2316‧‧‧計數器組
2318‧‧‧輸出
2400、2500、2600‧‧‧方法
2510、2530、2540、2550、2560、2580、2610、2620、2630、2650‧‧‧區塊
2520、2570、2640‧‧‧菱形
圖1A為由處理器形成的示範性電腦系統之方塊圖,該處理器可包括用以執行根據本發明之實施例的指令之執行單元;圖1B例示根據本發明之實施例的資料處理系統;圖1C例示用於執行正文字串比較運算之資料處理系統之其他實施例;圖2為處理器之微架構之方塊圖,該處理器可包括執行根據本發明之實施例之指令的邏輯電路;圖3A例示根據本發明之實施例之多媒體暫存器中的各種緊縮資料類型表示;圖3B例示根據本發明之實施例的可能暫存器中資料儲存格式;圖3C例示根據本發明之實施例之多媒體暫存器中的各種帶正負號(signed)及不帶正負號(unsigned)的緊縮資料類型表示; 圖3D例示操作編碼格式之實施例;圖3E例示根據本發明之實施例的具有四十或更多個位元之另一個可能操作編碼格式;圖3F例示根據本發明之實施例的另一個可能操作編碼格式;圖4A為例示根據本發明之實施例之循序管線,以及暫存器重新命名階段、亂序發出/執行管線的方塊圖;圖4B為例示循序架構核心,以及暫存器重新命名邏輯、亂序發出/執行邏輯之方塊圖,上述各者將包括於根據本發明之至少實施例的處理器中;圖5A為根據本發明之實施例之處理器的方塊圖;圖5B係根據本發明之實施例的核心之示例性實行方案之方塊圖;圖6係根據本發明之實施例之系統之方塊圖;圖7係根據本發明之實施例之第二系統的方塊圖;圖8係根據本發明之實施例之第三系統的方塊圖;圖9係根據本發明之實施例之系統單晶片的方塊圖;圖10例示含有中央處理單元及圖形處理單元之處理器,其可執行根據本發明之實施例之至少一個指令;圖11係例示根據本發明之實施例之IP核心之開發的方塊圖;圖12例示根據本發明之實施例的第一類型之指令可如何藉由不同類型之處理器來仿真;圖13例示對照根據本發明之實施例之軟體指令轉換器 的用途之方塊圖,該轉換器係用以將來源指令集中之二進位指令轉換成目標指令集中之二進位指令;圖14為根據本發明之實施例之處理器的指令集架構之方塊圖;圖15係根據本發明之實施例之處理器之指令集架構之更詳細方塊圖;圖16係根據本發明之實施例之處理器之指令集架構之執行管線之方塊圖;圖17為利用根據本發明之實施例之處理器的電子裝置之方塊圖;圖18係實施根據本發明之實施例的可程式化組構之邏輯及指令之系統的方塊圖;圖19係實施根據本發明之實施例之可程式化組構之邏輯及指令之系統之元件的更詳細說明;圖20係根據本發明之實施例之組態快取層級之方塊圖;圖21係根據本發明之實施例之組態快取及其操作之方塊圖及說明;圖22係根據本發明之實施例的組構介面控制器可如何與可程式化組構介接之方塊圖;圖23係根據本發明之實施例的示例性組構介面控制器及示例性組態記憶體控制器之方塊圖;及圖24係根據本發明之實施例的管理可程式化組構及快取之方法的流程圖。
圖25為根據本發明之一實施例之指令處置方法的流程圖。
圖26為根據本發明之另一實施例之指令處置方法的流程圖。
較佳實施例之詳細說明
以下說明描述指令及處理邏輯、在處理器內或與其相關聯之可程式化組構之層級及快取、虛擬處理器、封裝、電腦系統或其他處理設備。在一實施例中,此設備可包括亂序處理器。在另一實施例中,此設備可包括系統單晶片。
在以下描述中,闡述了眾多特定細節,諸如處理邏輯、處理器類型、微架構條件、事件、啟用機構及類似者,以便提供對本發明之實施例之更透徹理解。然而,熟習此項技術者應瞭解,可在無此等特定細節的情況下實踐本發明。此外,一些熟知結構、電路及其相似物未詳細展示以避免不必要地混淆本發明之實施例。
雖然參考處理器來描述以下實施例,但其他實施例適用於其他類型之積體電路及邏輯裝置。本發明之實施例之類似技術及教示可應用於其他類型之電路或半導體裝置,該等電路或半導體裝置受益於較高管線通量及改良的效能。本發明之實施例之教示適用於執行資料調處的任何處理器或機器。然而,本發明不限於執行512位元、256位元、128位元、64位元、32位元或16位元的資料運算之處理器或機器,且可應用於執行資料之調處或管理的 任何處理器或機器。另外,以下描述提供實例,且隨附圖式展示各種實例來達成例示目的。然而,此等實例不應在限制性意義上來理解,因為其僅僅意欲提供本發明之實施例之實例,而非提供本發明之實施例之所有可能的實行方案之詳盡清單。
雖然以下實例在執行單元及邏輯電路之情況下描述指令處置及散佈,但本發明之其他實施例可藉由儲存於機器可讀的有形媒體上之資料或指令來實現,該等資料或指令在由機器執行時導致機器執行與本發明之至少一實施例一致的功能。在一實施例中,與本發明之實施例相關聯的功能體現於機器可執行指令中。指令可用來使由該等指令規劃的通用或專用處理器執行本發明之步驟。本發明之實施例可提供為電腦程式產品或軟體,其可包括上面儲存有指令之機器或電腦可讀媒體,該等指令可用來規劃電腦(或電子裝置)來執行根據本發明之實施例的一或多個運算。或者,本發明之實施例之步驟可由特定硬體組件來執行,該等特定硬體組件含有用於執行該等步驟的固定功能邏輯;或由已規劃電腦組件與固定功能硬體組件之任何組合來執行。
用以規劃邏輯來執行本發明之實施例的指令可儲存於系統中之記憶體內,諸如DRAM、快取、快閃記憶體或其他儲存器。此外,可經由網路或藉由其他電腦可讀媒體來散佈該等指令。從而,一種機器可讀媒體可包含用於以機器(如,電腦)可讀之形式儲存或傳送資訊之任 何機構,而不限於軟碟、光碟片、緊密光碟片-唯讀記憶體(CD-ROM)及磁光碟片、唯讀記憶體(ROM)、隨機存取記憶體(RAM)、可抹除可程式化唯讀記憶體(EPROM)、電可抹除可程式化唯讀記憶體(EEPROM)、磁卡或光卡、快閃記憶體或用於經由電、光、聲或其他形式之傳播的信號(如,載波、紅外信號、數位信號等)在網際網路上傳送資訊之有形機器可讀儲存體。因此,電腦可讀媒體可包括適於以機器(例如,電腦)可讀的形式儲存或傳輸電子指令或資訊之任何類型之有形的機器可讀媒體。
設計可經歷自產生至模擬至製造之各種階段。表示設計之資料可以數種方式來表示設計。首先,如在模擬中為有用的,硬體可使用硬體描述語言或另一功能描述語言來表示。另外,具有邏輯及/或電晶體閘之電路層級模型可在設計處理程序之一些階段產生。此外,設計在一些階段達到表示各種裝置在硬體模型中之實體佈局之資料的層級。在使用一些半導體製造技術之狀況下,表示硬體模型之資料可為指定各種特徵在用於遮罩之不同遮罩層上是否存在的資料,該等遮罩用以產生積體電路。在設計之任何表示中,資料可儲存於任何形式的機器可讀媒體中。記憶體或者磁性或光學儲存體(諸如碟片)可為儲存經由光波或電波傳輸之資訊的機器可讀媒體,該光波或電波經調變或以其他方式產生來傳輸此資訊。當指示或攜載程式碼或設計之電載波經傳輸,達到執行電信號之複製、緩衝或重新傳輸的程度時,新的複本得以製作。因此,通訊 提供者或網路提供者可在有形的機器可讀媒體上至少暫時儲存體現本揭示案之實施例之技術的物件,諸如編碼至載波中的資訊。
在現代處理器中,使用許多不同的執行單元來處理且執行多種碼與指令。一些指令可更快地完成,而其他指令可耗費多個時鐘週期來完成。指令的通量愈快,處理器的整體效能愈好。因此,使盡可能多的指令盡可能快地執行係有利的。然而,存在某些指令,該等指令較複雜及需要更多執行時間及處理器資源,例如,浮點指令、載入/儲存操作或資料移動等。
隨著更多的電腦系統用於網際網路、文字及多媒體應用中,隨時間推移已引入額外的處理器支援。在一實施例中,指令集可與一或多個電腦架構相關聯,該一或多個電腦架構包括資料類型、指令、暫存器架構、定址模式、記憶體架構、中斷與異常處置,以及外部輸入及輸出(I/O)。
在一實施例中,指令集架構(ISA)可由一或多個微架構來實行,該一或多個微架構包括用來實行一或多個指令集的處理器邏輯及電路。因此,具有不同微架構的處理器可共享共同指令集之至少一部分。例如,Intel® Pentium 4處理器、Intel® CoreTM處理器及來自Advanced Micro Devices公司(Sunnyvale CA)的處理器實行幾乎相同的x86指令集版本(以及一些擴展,較新版本已新增該等擴展),但具有不同的內部設計。類似地,由其他處理器開 發公司(諸如ARM Holdings公司、MIPS,或其被授權者或採用者)設計的處理器可共享共同指令集之至少一部分,但可包括不同的處理器設計。例如,ISA之相同暫存器架構可在不同微架構中使用新的或熟知的技術以不同方式實行,其中包括:專用實體暫存器、一或多個使用暫存器重新命名機構(例如,使用暫存器別名表(RAT)、重新排序緩衝器(ROB)及引退暫存器檔案)的動態分配實體暫存器。在一實施例中,暫存器可包括一或多個暫存器、暫存器架構、暫存器檔案,或可由或不可由軟體程式設計師定址的其他暫存器集。
指令包括一或多個指令格式。在一實施例中,指令格式可指示各種欄位(位元之數目、位元之位置等)來指定:將要執行之運算,及運算元(將對其執行操作),以及其他。在另一實施例中,一些指令格式可進一步由指令模板(或子格式)定義。例如,給定指令格式之指令模板可定義成具有該指令格式之欄位的不同子集,及/或定義成具有以不同方式解譯的給定欄位。在一實施例中,使用指令格式(且在已定義的情況下,以該指令格式之指令模板中之一給定指令模板)來表達指令,且指令指定或指示了運算及運算元(將對其執行操作)。
科學、金融、自動向量化通用RMS(辨識、採擷與合成)以及視覺及多媒體應用(例如,2D/3D圖形、影像處理、視訊壓縮/解壓縮、語音辨識演算法及音訊調處)可能需要對大量資料項目執行同一操作。在一實施例中, 單指令多重資料(SIMD)代表使處理器對多個資料元件執行操作的指令類型。SIMD技術可用於可將暫存器中的位元以邏輯方式分成許多固定大小或可變大小的資料元件之處理器,該等資料元件中每一者表示獨立值。例如,在一實施例中,64位元暫存器中之位元可被組織為含有4個獨立的16位元資料元件之來源運算元,該等資料元件中每一者表示獨立的16位元值。此資料類型可被稱為「緊縮」資料類型或「向量」資料類型,且為此資料類型的運算元被稱為緊縮資料運算元或向量運算元。在一實施例中,緊縮資料項目或向量可為儲存在單個暫存器內之緊縮資料元件之序列,且緊縮資料運算元或向量運算元可為SIMD指令(或「緊縮資料指令」或「向量指令」)之來源運算元或目的地運算元。在一實施例中,SIMD指令指定將對兩個來源向量運算元執行,來產生目的地向量運算元(亦稱為結果向量運算元)的單個向量運算,該目的地向量運算元具有相同或不同大小、具有相同或不同數目個資料元件,且按相同或不同的資料元件次序。
SIMD技術(諸如以下處理器所使用的技術:Intel® CoreTM處理器,其具有包括x86、MMXTM、串流SIMD擴展(SSE)、SSE2、SSE3、SSE4.1及SSE4.2指令的指令集;ARM處理器,諸如ARM Cortex®系列處理器,其具有包括向量浮點(VFP)及/或NEON指令的指令集;以及MIPS處理器,諸如由中國科學院的計算技術研究所(ICT)開發出的Loongson系列處理器)已使應用程式 效能的顯著改良成為可能(CoreTM及MMXTM係Intel公司(Santa Clara,Calif)的註冊商標或商標)。
在一實施例中,目的地及來源暫存器/資料係表示對應資料或操作之來源或目的地之一般用詞。在一些實施例中,其可由暫存器、記憶體或具有除所述名稱或功能之外的其他名稱或功能之其他儲存區域來實行。例如,在一實施例中,「DEST1」可為暫時儲存暫存器或其他儲存區域,而「SRC1」及「SRC2」可為第一及第二來源儲存暫存器或其他儲存區域,以此類推。在其他實施例中,SRC及DEST儲存區域中之兩者或兩者以上可對應於同一儲存區域(例如,SIMD暫存器)內的不同資料儲存元件。在一實施例中,來源暫存器之一亦可充當目的地暫存器,例如,藉由將對第一及第二來源資料執行的操作之結果寫回至該等兩個來源暫存器中之一者,該一者充當目的地暫存器。
圖1A為由處理器形成的示範性電腦系統之方塊圖,該處理器包括用以執行根據本發明之實施例的指令之執行單元。根據本發明,諸如在本文中描述之實施例中,系統100包括諸如處理器102之組件,來使用執行單元,該等執行單元包括用以執行用於處理資料的演算法之邏輯。系統100表示基於PENTIUM® III、PENTIUM® 4、XeonTM、Itanium®、XScaleTM及/或StrongARMTM微處理器(可自Intel公司(Santa Clara,California)獲得)的處理系統,但亦可使用其他系統(包括具有其他微處理器之 PC、工程工作站、機上盒(set-top box)及類似者)。在一實施例中,範例系統100可執行WINDOWSTM作業系統(可自Microsoft公司(Redmond,Washington)獲得)之一版本,但亦可使用其他作業系統(例如,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之邏輯。藉由在通用處理器102之指令集中包括緊縮指令集109,連同執行指令的相關聯電路,可使用通用處理器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可經由加速圖形埠(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橋接器154,以便經由I/O匯流排153與各種I/O裝置通訊。此等I/O裝置可包括但不限於,例如,通用非同步接收器/發射器(UART)155、通用串列匯流排(USB)156、藍牙無線UART 157及I/O擴 展介面158。
資料處理系統140之一實施例提供行動通訊、網路通訊及/或無線通訊以及能夠執行包括正文字串比較運算之SIMD運算的處理核心159。處理核心159可由各種音訊、視訊、成像及通訊演算法規劃,該等演算法包括:離散變換,諸如沃爾什哈達馬德變換(Walsh-Hadamard transform)、快速傅立葉變換(FFT)、離散餘弦變換(DCT)及其個別逆變換;壓縮/解壓縮技術,諸如色彩空間變換、視訊編碼運動估計或視訊解碼運動補償;以及調變/解調變(MODEM)功能,諸如脈衝編碼調變(PCM)。
圖1C例示執行SIMD正文字串比較運算之資料處理系統之其他實施例。在一實施例中,資料處理系統160可包括主處理器166、SIMD共處理器161、快取記憶體167及輸入/輸出系統168。輸入/輸出系統168可任擇地耦接至無線介面169。SIMD共處理器161能夠執行操作,包括根據一實施例之指令。處理核心170可適合於以一或多個處理技術來製造,且藉由在機器可讀媒體上足夠詳細地表示,可適合於促進包括處理核心170之資料處理系統160的全部或部分之製造。
在一實施例中,SIMD共處理器161包含執行單元162及暫存器檔案164之集合。主處理器165之一實施例包含解碼器165,用來辨識指令集163之指令(包括根據一實施例之指令)以便由執行單元162執行。在其他實施例中,SIMD共處理器161亦可包含解碼器165之至少一部 分,用來解碼指令集163之指令。處理核心170亦可包括額外電路(圖中未示),其並非理解本發明之實施例所必需的。
在操作中,主處理器166執行資料處理指令之串流,該等資料處理指令控制一般類型之資料處理操作,包括與快取記憶體167及輸入/輸出系統168之互動。SIMD共處理器指令嵌入於資料處理指令之串流內。主處理器166之解碼器165辨識出此等SIMD共處理器指令係附接之SIMD共處理器161應執行之類型。因此,主處理器166在共處理器匯流排166上發出此等SIMD共處理器指令(或表示SIMD共處理器指令之控制信號)。來自共處理器匯流排166之此等指令可該等任何附接SIMD共處理器接收。在此狀況下,SIMD共處理器161將接受且執行發給該SIMD共處理器的任何所接收SIMD共處理器指令。
可經由無線介面169接收資料,以便由SIMD共處理器指令處理。對於一實例,可接收呈數位信號形式的語音通訊,其可由SIMD共處理器指令處理來重新產生表示語音通訊的數位音訊樣本。對於另一實例,可接收呈數位位元串流形式的壓縮音訊及/或視訊,其可由SIMD共處理器指令處理來重新產生數位音訊樣本及/或運動視訊圖框。在處理核心170之一實施例中,主處理器166及SIMD共處理器161係整合成單個處理核心170,其包含執行單元162、暫存器檔案164之集合及解碼器165,該解碼器用來辨識指令集163之指令(包括根據一實施例之指令)。
圖2為處理器200之微架構之方塊圖,該處理 器包括執行根據本發明之實施例之指令的邏輯電路。在一些實施例中,可實行根據一實施例之指令來對資料元件進行操作,該等資料元件具有位元組、字、雙字、四字等大小,以及諸如單精度及雙精度整數及浮點資料類型之資料類型。在一實施例中,循序前端201可實行處理器200之部分,其擷取將要執行之指令且使該等指令準備好稍後在處理器管線中使用。前端201可包括若干單元。在一實施例中,指令預擷取器226自記憶體擷取指令且將該等指令饋入至指令解碼器228,該指令解碼器又解碼或解譯該等指令。例如,在一實施例中,解碼器將所接收指令解碼成機器可執行之一或多個操作,稱為「微指令」或「微操作」(亦稱為micro op或uop)。在其他實施例中,解碼器將指令剖析成運算碼及對應的資料與控制欄位,上述各者可由微架構用來執行根據一實施例之操作。在一實施例中,追蹤快取230可將經解碼的微操作組裝成將要執行之微操作佇列234中的程式定序序列或蹤跡。當追蹤快取230遇到複雜指令時,微碼ROM 232提供完成操作所需要的微操作。
一些指令可被轉換成單個微操作(micro-op),而其他指令需要若干微操作來完成完整的操作。在一實施例中,若需要超過4個微操作來完成指令,則解碼器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可包括繞過(bypass)網路,該繞過網路可繞過尚未寫入至暫存器檔案中之剛剛完成的結果或將該等剛剛完成的結果轉送至新的相依性微操作。整數暫存器檔案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。高速ALU216、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個位元之整數資料。一實施例之暫存器檔案亦含有用於緊縮資料的8個多媒體SIMD暫存器。對於以下論述,可理解暫存器係經設計來保存緊縮資料的資料暫存器,諸如具備MMX技術的功能之微處理器(來自Intel公司(Santa Clara,California))中的64個位元寬的MMXTM暫存器(在一些情況下亦稱為「mm」暫存器)。此等MMX暫存器(整數與浮點形式均可獲得)可對伴隨著SIMD及SSE指令的緊縮資料元件進行操作。類似地,與SSE2、SSE3、SSE4或更先進(一般稱為「SSEx」)技術有關的128個位元寬的XMM暫存器亦可用來保存此等緊縮資料運算元。在一實施例中,在儲存緊縮資料及整數資料時,暫存器不需要在兩個資料類型之間區分。在一實施例中,整數及浮點可含於相同暫存器檔案或不同暫存器檔案中。此外,在一實施例中,浮點及整數資料可儲存於不同暫存器或相同暫存器中。
在下圖之實例中,可描述多個資料運算元。圖3A例示根據本發明之實施例之多媒體暫存器中的各種緊縮資料類型表示。圖3A例示128個位元寬的運算元之緊縮位元組310、緊縮字320及緊縮雙字(dword)330之資料 類型。此實例之緊縮位元組格式310可為128個位元長且含有16個緊縮位元組資料元件。位元組可定義為例如八個位元之資料。每一位元組資料元件之資訊可儲存於位元組0的位元7至位元0中、位元組1的位元15至位元8中、位元組2的位元23至位元16中,且最後儲存於位元組15的位元120至位元127中。因此,在暫存器中可使用所有可利用的位元。此儲存佈置增加了處理器之儲存效率。同樣,在存取了16個資料元件後,現在可平行地對16個資料元件執行一操作。
通常,資料元件可包括單獨的資料片段,其與具有相同長度的其他資料元件一起儲存於單個暫存器或記憶體位置中。在與SSEx技術有關的緊縮資料序列中,儲存於XMM暫存器中的資料元件之數目為128個位元除以單獨資料元件之位元長度。類似地,在與MMX及SSE技術有關的緊縮資料序列中,儲存於MMX暫存器中的資料元件之數目為64個位元除以單獨資料元件之位元長度。雖然圖3A例示之資料類型可為128個位元長,但是本發明之實施例亦可對於64個位元寬或其他大小的運算元進行操作。此實例之緊縮字格式320可為128個位元長且含有8個緊縮字資料元件。每一緊縮字含有16個位元的資訊。圖3A之緊縮雙字格式330可為128個位元長且含有4個緊縮雙字資料元件。每一緊縮雙字資料元件含有32個位元的資訊。緊縮四倍字可為128個位元長且含有2個緊縮四倍字資料元件。
圖3B例示根據本發明之實施例的可能暫存器中資料儲存格式。每一緊縮資料可包括一個以上的獨立資料元件。例示三個緊縮資料格式:緊縮半字(packed half)341、緊縮單字(packed single)342及緊縮雙字(packed double)343。緊縮半字341、緊縮單字342及緊縮雙字343之一實施例含有定點資料元件。對於另一實施例,緊縮半字341、緊縮單字342及緊縮雙字343中一或多者可含有浮點資料元件。緊縮半字341之一個實施例可為128個位元長,含有八個16位元資料元件。緊縮單字342之一實施例可為128個位元長,且含有4個32位元的資料元件。緊縮雙字343之一實施例係128個位元長,且含有2個64位元的資料元件。將瞭解到,此等緊縮資料格式可經進一步擴充至其他暫存器長度,例如,擴充至96位元、160位元、192位元、224位元、256位元或更長。
圖3C例示根據本發明之實施例之多媒體暫存器中的各種帶正負號(signed)及不帶正負號(unsigned)的緊縮資料類型表示。不帶正負號的緊縮位元組表示344例示不帶正負號的緊縮位元組在SIMD暫存器中的儲存。每一位元組資料元件之資訊儲存於位元組0的位元7至位元0中、位元組1的位元15至位元8中、位元組2的位元32至位元16中,且最後儲存於位元組15的位元120至位元127中。因此,在暫存器中可使用所有可利用的位元。此儲存佈置可增加處理器之儲存效率。同樣,在存取了16個資料元件後,現在可平行地對16個資料元件執行一操作。 帶正負號的緊縮位元組表示345例示帶正負號的緊縮位元組之儲存。注意,每個位元組資料元件之第8個位元可為正負號指示符。不帶正負號的緊縮字表示346例示在SIMD暫存器中可如何儲存字7至字0。帶正負號的緊縮字表示347可類似於不帶正負號的緊縮字暫存器中表示346。注意,每個字資料元件之第16個位元可為正負號指示符。不帶正負號的緊縮雙字表示348展示如何儲存雙字資料元件。帶正負號的緊縮雙字表示349可類似於不帶正負號的緊縮雙字暫存器中表示348。注意,必需的正負號位元可為每一雙字資料元件之第32個位元。
圖3D例示操作編碼(運算碼)之實施例。此外,格式360可包括暫存器/記憶體運算元定址模式,該等模式對應於在「IA-32 Intel Architecture Software Developer’s Manual Volume 2:Instruction Set Reference」中所描述之運算碼格式之類型,該文獻可在全球資訊網(www)之intel.com/design/litcentr上從Intel公司(Santa Clara,CA)獲得。在一實施例中,且指令可由欄位361及362中之一或多者來編碼。可識別每個指令的至多兩個運算元位置,包括至多兩個來源運算元識別符364及365。在一實施例中,目的地運算元識別符366可與來源運算元識別符364相同,而在其他實施例中,該等識別符可不同。在一實施例中,目的地運算元識別符366可與來源運算元識別符365相同,而在其他實施例中,該等識別符可不同。在一實施例中,正文字串比較操作之結果覆寫 由來源運算元識別符364及365識別的來源運算元之一,而在其他實施例中,識別符364對應於來源暫存器元件且識別符365對應於目的地暫存器元件。在一實施例中,運算元識別符364及365可用來識別32位元或64位元的來源及目的地運算元。
圖3E例示根據本發明之實施例的具有四十或更多個位元之另一個可能操作編碼(運算碼)格式370。運算碼格式370與運算碼格式360相對應且包含可選擇的前綴位元組378。根據一實施例之指令可由欄位378、371及372中之一或多者來編碼。藉由來源運算元識別符374及375且藉由前綴位元組378,可識別每個指令的至多兩個運算元位置。在一實施例中,前綴位元組378可用來識別32位元或64位元的來源及目的地運算元。在一實施例中,目的地運算元識別符376可與來源運算元識別符374相同,而在其他實施例中,該等識別符可不同。在一實施例中,目的地運算元識別符376可與來源運算元識別符375相同,而在其他實施例中,該等識別符可不同。在一實施例中,指令對由運算元識別符374及375識別的運算元中之一或多者進行操作,且指令之結果可覆寫由運算元識別符374及375識別的一或多個運算元,而在其他實施例中,由識別符374及375識別的運算元可被寫入至另一暫存器中的另一資料元件。運算碼格式360及370允許暫存器至暫存器定址、記憶體至暫存器定址、暫存器靠記憶體定址、暫存器靠暫存器定址、暫存器靠立即定址、暫存器至記憶體定址, 該定址係部分由MOD欄位363及373且由可選擇的比例-索引-基址及位移位元組來指定。
圖3F例示根據本發明之實施例的另一個可能操作編碼(運算碼)格式。64位元單指令多重資料(SIMD)算術操作可經由共處理器資料處理(CDP)指令來執行。操作編碼(運算碼)格式380描述一此種CDP指令,其具有CDP運算碼欄位382及389。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示出處理器核心490,其包括耦接至執行引擎單元450之前端單元430,且執行引擎單元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可包括重新命名/分配器單元452,該重新命名/分配器單元耦接至引退(retirement)單元454及一或多個排程器單元456之集合。排程器單元456表示任何數目個不同排程器,其中包括保留站、中央指令視窗等。排程器單元456可耦接至實體暫存器檔案單元458。實體暫存器檔案單元458中之每一者表示一或多個實體暫存器檔案,其中不同的實體暫存器檔案單元儲存一或多個不同的資料類型,諸如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點、狀態(例如,指令指標器,即下一個待執行指令的位址)等。實體暫存器檔案單元458可藉由引退單元154重疊以便例示可實行暫存器重新命名及亂序執行之各種方法(例如,使用一或多個重新排序緩衝器及一或多個引退暫存器檔案,使用一或多個未來檔案,一或多個歷史緩衝器,及一或多個引退暫存器檔案;使用暫存器映射及暫存器池等)。通常,架構暫存器自處理器外部或自程式設計師的角度可見。暫存器不限於任何已知特定類型之電路。各種不同類型之暫存器可為合適的,只要其如本文描述來儲存並提供資料。合適 暫存器之實例包括但是可不限於專用實體暫存器、使用暫存器重新命名之動態分配實體暫存器、專用及動態分配實體暫存器之組合等。引退單元454及實體暫存器檔案單元458可耦接至執行叢集460。執行叢集460包括一或多個執行單元162之集合及一或多個記憶體存取單元464之集合。執行單元462可執行各種運算(例如,移位、加法、減法、乘法)且對各種類型之資料(例如,純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)進行執行。雖然一些實施例可包括專門針對特定功能或功能集合之許多執行單元,但其他實施例可包括僅一個執行單元或多個執行單元,該等執行單元均執行所有功能。排程器單元456、實體暫存器檔案單元458及執行叢集460被展示為可能係多個,因為某些實施例針對某些類型之資料/運算產生獨立的管線(例如,純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線,及/或記憶體存取管線,其中每一管線具有其自有之排程器單元、實體暫存器檔案單元及/或執行叢集;且在獨立的記憶體存取管線的狀況下,所實行的某些實施例中,唯有此管線之執行叢集具有記憶體存取單元464)。亦應理解,在使用獨立的管線之情況下,此等管線中之一或多者可為亂序發出/執行而其餘管線可為循序的。
記憶體存取單元464之集合耦接至記憶體單元470,該記憶體單元包括耦接至資料快取單元474的資料TLB單元472,該資料快取單元耦接至2階(L2)快取單元 476。在一示範性實施例中,記憶體存取單元464可包括載入單元、儲存位址單元及儲存資料單元,其中每一者耦接至記憶體單元470中的資料TLB單元472。L2快取單元476耦接至一或多個其他階快取且最終耦接至主記憶體。
舉例而言,示範性暫存器重新命名、亂序發出/執行核心架構可實行管線400如下:1)指令擷取438可執行擷取及長度解碼階段402及404;2)解碼單元440可執行解碼階段406;3)重新命名/分配器單元452可執行分配階段408及重新命名階段410;4)排程器單元456可執行排程階段412;5)實體暫存器檔案單元458及記憶體單元470可執行暫存器讀取/記憶體讀取階段414;執行群集460可執行執行階段416;6)記憶體單元470及實體暫存器檔案單元458可執行寫回/記憶體寫入階段418;7)各種單元可涉及異常處置階段422之執行;並且8)引退單元454及實體暫存器檔案單元458可執行確認階段424。
核心490可支援一或多個指令集(例如,x86指令集(以及一些擴展,較新版本已新增該等擴展);MIPS Technologie公司(Sunnyvale,CA)的MIPS指令集;ARM Holdings公司(Sunnyvale,CA)的ARM指令集(以及可選擇的額外擴展,諸如NEON))。
應瞭解核心可以各種方式來支援多執行緒處理(執行操作或線程之兩個或兩個以上平行集合)。多執行緒處理支援可例如藉由包括時間分片多執行緒處理、同時多執行緒處理(其中單一實體核心對於實體核心同時進 行多執行緒處理之線程中之每一者提供邏輯核心)或其組合來執行。此組合可包括例如時間分片擷取及解碼及其後之同時多執行緒處理諸如Intel®超執行緒技術。
雖然在亂序執行的情況下描述暫存器重新命名,但應理解,暫存器重新命名可用於循序架構中。雖然處理器之所例示實施例亦包括獨立的指令與資料快取單元434/474以及共享的L2快取單元476,但替代性實施例可具有用於指令與資料兩者的單個內部快取,諸如1階(L1)內部快取或多階內部快取。在一些實施例中,系統可包括內部快取與外部快取之組合,該外部快取在核心及/或處理器外部。或者,所有快取可在核心及/或處理器外部。
圖5A為根據本發明之實施例之處理器500的方塊圖。在一實施例中,處理器500可包括多核心處理器。處理器500可包括可通訊地耦接至一或多個核心502之系統代理510。此外,核心502及系統代理510可通訊地耦接至一或多個快取506。核心502、系統代理510及快取506經由一或多個記憶體控制單元552來可通訊地耦接。此外,核心502、系統代理510及快取506經由記憶體控制單元552來可通訊地耦接至圖形模組560。
處理器500可包括用於將核心502、系統代理510及快取506及圖形模組560互連之任何合適機構。在一實施例中,處理器500可包括用於將核心502、系統代理510及快取506及圖形模組560互連的基於環之互連單元508。在其他實施例中,處理器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、XeonTM、ItaniumTM、XScaleTM或StrongARMTM處理器(可自Intel公司(Santa Clara,Calif.)獲得)。處理器500可從另一個公司諸如ARM Holdings公司、MIPS等提供。處理器500可為專用處理器,例如像,網路或通訊處理器、壓縮引擎、圖形處理器、共處理器、嵌入處理器等。處理器500可實行於一或多個晶片上。處理器500可為一或多個基板之部分且/或可使用許多處理技術(例如BiCMOS、CMOS或NMOS)中之任一者將處理器500實行於一或多個基板上。
在一實施例中,給定一個快取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可包括分配模組1282。在一實施例中,分配模組1282可分配處理器500之資源或其他資源,諸如暫存器或緩衝器,以便執行給定指令。分配模組1282可在排程器,諸如記憶體排程器、快速排程器或浮點排程器中進行分配。此等排程器可在圖5B中藉由資源排程器584來表示。分配模組1282可完全或部分地藉由結合圖2所描述之分配邏輯來實行。資源排程器584可判定指令何時準備執行,此判定係基於:給定資源之來源是否準備就緒及執行指令所需要的執行資源的可用性。資源排程器584可藉由例如如以上論述之排程器202、204、206來實行。資源排程器584可將指令在一或多個資源上之執行予 以排程。在一實施例中,此等資源可在核心502內部,並且可例示為例如資源586。在另一實施例中,此等資源可在核心502外部並且可藉由例如快取層級503來存取。資源可包括例如記憶體、快取、暫存器檔案或暫存器。核心502內部之資源可藉由圖5B中之資源586來表示。必要時,寫入資源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例示GMCH 620 可耦接至記憶體640,該記憶體可為例如動態隨機存取記憶體(DRAM)。對於至少一實施例,DRAM可與非依電性快取相關聯。
GMCH 620可為晶片組或晶片組之一部分。GMCH 620可與處理器610、615通訊並且控制處理器610、615與記憶體640之間之相互作用。GMCH 620亦可充當處理器610、615與系統600之其他元件之間的加速匯流排介面。對於至少一實施例,GMCH 620經由多分支匯流排(multi-drop bus),諸如前端匯流排(FSB)695,與處理器610、615通訊。
此外,GMCH 620耦接至顯示器645(諸如平板顯示器)。在一實施例中,GMCH 620可包括整合型圖形加速器。GMCH 620進一步耦接至輸入/輸出(I/O)控制器集線器(ICH)650,該ICH可用來將各種周邊裝置耦接至系統600。外部圖形裝置660可包括與另一個周邊裝置670一起耦接至ICH 650的離散圖形裝置。
在其他實施例中,額外或不同處理器亦可存在於系統600中。例如,額外處理器610、615可包括:與處理器610相同的額外處理器;與處理器610異質或不對稱的額外處理器;加速器(諸如,圖形加速器或數位信號處理(DSP)單元);現場可程式化閘陣列;或任何其他處理器。就優點量度範圍而言,實體資源610與615之間可能有各種差異,其中包括架構特性、微架構特性、熱特性、功率消耗特性等。此等差異可有效表明其本身在處理器610與615 之間的不對稱性及異質性。對於至少一實施例,各種處理器610、615可駐留在同一晶粒封裝中。
圖7例示根據本發明之實施例之第二系統700的方塊圖。如圖7中所示,多處理器系統700係點對點互連系統,且包括第一處理器770及第二處理器780,該等處理器經由點對點互連750予以耦接。如同處理器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,該等記憶體可為局部地附接至個別處理器之主記憶體的部分。
處理器770、780各自可使用點對點介面電路776、794、786、798經由個別P-P介面752、754與晶片組790交換資訊。在一實施例中,晶片組790亦可經由高效能圖形介面739與高效能圖形電路738交換資訊。
在任一處理器中或兩個處理器外部,可包括共享快取(圖中未示),而該共享快取經由P-P互連與該等處理器連接,使得當處理器被置於低功率模式中時,可將任一處理器或兩個處理器之區域快取資訊儲存在該共享快取中。
晶片組790可經由介面796耦接至第一匯流排716。在一實施例中,第一匯流排716可為周邊組件互連(PCI)匯流排,或者諸如高速PCI匯流排或另一第三代I/O互連匯流排之匯流排,但本發明之範疇不限於此。
如圖7中所示,各種I/O裝置714以及匯流排橋接器718可耦接至第一匯流排716,該匯流排橋接器將第一匯流排716耦接至第二匯流排720。在一實施例中,第二匯流排720可為低針腳數(LPC)匯流排。各種裝置可耦接至第二匯流排720,其中包括,例如,鍵盤及/或滑鼠722、通訊裝置727,及儲存單元728,諸如磁碟機或其他大容量儲存裝置,在一實施例中,該儲存單元可包括指令/碼及資料730。此外,音訊I/O 724可耦接至第二匯流排720。請注意,其他架構係可能的。例如,代替圖7之點對點架構,系統可實行多分支匯流排或其他此種架構。
圖8例示根據本發明之實施例之第三系統800的方塊圖。圖7及圖8中的相似元件帶有相似參考數字,且圖8已省略圖7之某些態樣以避免混淆圖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的方塊圖。圖5中的類似元件帶有相似參考數字。此外,虛線方框係更先進SoC上之可選擇的特徵。互連單元902可耦接至:應用處理器910,其可包括一或多個核心902A-N之集合及共享快取單元906;系統代理單元910;匯流排控制器單元916;整合型記憶體控制器單元914;一組或一或多個媒體處理器920,其可包括整合圖形邏輯908、用於提供靜止及/或視訊攝影機功能之影像處理器924、用於提供硬體音訊加速之音訊處理器926及用於提供視訊編碼/解碼加速之視訊處理器928;SRAM單元930;DMA單元932;及用於耦接至一或多個外部顯示器之顯示單元940。
圖10例示含有中央處理單元(CPU)及圖形處理單元(GPU)之處理器,其可執行根據本發明之實施例之至少一個指令。在一實施例中,執行根據至少一實施例之操作的指令可由CPU執行。在另一實施例中,該指令可由GPU執行。在又一實施例中,該指令可經由GPU與CPU所執行之操作之組合來執行。例如,在一實施例中,可接收並解碼根據一實施例之指令以便在GPU上執行。然而, 在經解碼後指令內之一或多個操作可由CPU執行,且結果被傳回至GPU以便該指令最終引退。相反,在一些實施例中,CPU可充當主處理器而GPU充當共處理器。
在一些實施例中,受益於高度平行的通量處理器之指令可由GPU執行,而受益於如下處理器的執行之指令可由CPU執行,該等處理器受益於深度管線化的架構。例如,圖形、科學應用、金融應用及其他平行工作負載可受益於GPU的執行且相應地被執行,而更為依序的應用諸如作業系統核心或應用程式碼可能更適合於CPU。
在圖10中,處理器1000包括CPU 1005、GPU 1010、影像處理器1015、視訊處理器1020、USB控制器1025、UART控制器1030、SPI/SDIO控制器1035、顯示裝置1040、記憶體介面控制器1045、MIPI控制器1050、快閃記憶體控制器1055、雙資料速率(DDR)控制器1060、安全引擎1065及I2S/I2C控制器1070。圖10之處理器中可包括其他邏輯與電路,其中包括更多的CPU或GPU及其他周邊介面控制器。
至少一實施例之一或多個態樣可由儲存於機器可讀媒體上的代表性資料來實行,此資料表示處理器內的各種邏輯,此資料在由機器讀取時使機器製造邏輯來執行本文中描述之技術。此類表示(稱為「IP核心」)可儲存於有形的機器可讀媒體(「磁帶」)上且可供應給各種顧客或製造設施來載入至實際上製造該邏輯或處理器的製造機中。例如,IP核心(諸如由ARM Holdings公司開發出的 CortexTM系列處理器,以及由中國科學院的計算技術研究所(ICT)開發出的Loongson IP核心)可被授權給或賣給各種顧客或被授權者,諸如Texas Instruments、Qualcomm、Apple或Samsung,並且實行於由此等顧客或被授權者生產的處理器中。
圖11係例示根據本發明之實施例之IP核心之開發的方塊圖。儲存器1130包括模擬軟體1120及/或硬體或軟體模型1110。在一實施例中,可經由記憶體1140(例如,硬碟)、有線連接(例如,網際網路)1150或無線連接1160將表示IP核心設計之資料提供至儲存器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二進位碼1306,其可由具有至少一個x86指令集核心之處理器1316原型地執行。具有至少一個x86指令集核心之處理器1316表示可執行與具有至少一個x86指令集核心之Intel處理器大體相同的功能之任何處理器,上述執行係藉由相容地執行或以其他方式處理以下各者:(1)Intel x86指令集核心之指令集的大部分或(2)旨 在在具有至少一個x86指令集核心之Intel處理器上運行的應用程式或其他軟體之目標碼版本,以便達成與具有至少一個x86指令集核心之Intel處理器大體相同的結果。x86編譯器1304表示可操作以產生x86二進位碼1306(例如,目標碼)之編譯器,其中該x86二進位碼在經額外連結處理或未經額外連結處理的情況下可在具有至少一x86指令集核心之處理器1316上執行。類似地,圖13展示,可使用替代性指令集編譯器1308來編譯用高階語言1302撰寫的程式以產生替代性指令集二進位碼1310,該替代性指令集二進位碼可由不具有至少一x86指令集核心之處理器1314(例如,具有多個核心的處理器,該等核心執行MIPS Technologie公司(Sunnyvale,CA)之MIPS指令集,及/或該等核心執行ARM Holdings公司(Sunnyvale,CA)之ARM指令集)原型地執行。使用指令轉換器1312將x86二進位碼1306轉換成可由不具有一個x86指令集核心之處理器1314原型地執行的碼。此轉換程式碼可能與替代指令集二進位碼1310不相同;然而,轉換程式碼完成一般操作並且由來自替代指令集之指令組成。因此,指令轉換器1312表示經由仿真、模擬或任何其他過程來允許不具有x86指令集處理器或核心的處理器或其他電子裝置執行x86二進位碼1306的軟體、韌體、硬體或上述各者之組合。
圖14為根據本發明之實施例之處理器的指令集架構1400之方塊圖。指令集架構1400可包括任何合適數目或種類之組件。
舉例而言,指令集架構1400可包括處理實體諸如一或多個核心1406、1407及圖形處理單元1415。核心1406、1407經由任何合適機構,諸如經由匯流排或快取來可通訊地耦接至指令集架構1400之其餘部分。在一實施例中,核心1406、1407經由L2快取控制1408來可通訊地耦接,該L2快取控制可包括匯流排介面單元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可包括執行指令指標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可包括任何合適數目之計時器1515,其用於將指令架構1500之操作同步化。另外,單元1510可包括AC埠1516。
記憶體系統1540可包括用於儲存有利於指令架構1500之處理需要的資訊的任何合適數目及種類之機構。在一實施例中,記憶體系統1504可包括用於儲存資訊之載入儲存單元1530,諸如寫入或從記憶體或暫存器讀 回之緩衝器。在另一實施例中,記憶體系統1504可包括轉換旁看緩衝器(TLB)1545,其提供實體與虛擬位址之間之位址值的查找。在另一實施例中,匯流排介面單元1520可包括用於促進虛擬記憶體之存取的記憶體控制單元(MMU)1544。在另一個實施例中,記憶體系統1504可包括預擷取器1543,其用於在實際上需要執行此等指令之前請求來自記憶體之指令,以便減少延時。
指令架構1500執行指令之操作可經由不同階段來執行。舉例而言,使用單元1510指令預擷取階段1530可經由預擷取器1543來存取指令。所擷取的指令可儲存於指令快取1532中。預擷取階段1530可實現快速迴圈模式之選項1531,其中執行形成足夠小以便適合於給定快取內之迴圈的一系列指令。在一實施例中,此執行可在不需要存取來自例如指令快取1532之額外指令的情況下進行。預擷取哪些指令之判定可藉由例如分支預測單元1535來進行,其可存取全域歷史1536中之執行之指示,目標位址1537之指示,或返回堆疊1538之內容以判定隨後執行程式碼之哪些分支1557。因此可預擷取此等分支。分支1557可經由如下所述之其他操作階段來產生。指令預擷取階段1530可向雙重指令解碼階段提供指令以及關於未來指令之任何預測。
雙重指令解碼階段1550可將所接收的指令翻譯成可執行的基於微碼之指令。雙重指令解碼階段1550每個時鐘週期可同時解碼兩個指令。此外,雙重指令解碼 階段1550可將其結果傳遞至暫存器重新命名階段1555。另外,雙重指令解碼階段1550可從其對於微碼之解碼及最終執行來判定任何所得分支。此等結果可輸入分支1557中。
暫存器重新命名階段1555可將虛擬暫存器或其他資源之引用翻譯成實體暫存器或資源之引用。暫存器重新命名階段1555可將此映射之指示包括在暫存器池1556中。暫存器重新命名階段1555可改變所接收的指令並且將結果發送至發出階段1560。
發出階段1560可發出或分派命令至執行實體1565。此發出可以亂序方式來執行。在一實施例中,多個指令可在執行之前保持在發出階段1560處。發出階段1560可包括用於保持此等多個命令之指令佇列1561。基於任何可接受標準,諸如用於執行給定指令之資源之可用性或適合性,指令可藉由發出階段1560發出至特定處理實體1565。在一實施例中,發出階段1560可將指令佇列1561內之指令重新排序以使得所接收的第一指令可能並非所執行的第一指令。基於指令佇列1561之排序,額外分支資訊可提供至分支1557。發出階段1560可將指令傳遞至執行實體1565以供執行。
在執行後,寫回階段1570可將資料寫入暫存器、佇列或指令集架構1500之其他結構進行傳達給定命令之完成。取決於在發出階段1560中佈置之指令之順序,寫回階段1570之操作可使得能夠執行額外指令。指令集架構1500之執行可藉由追蹤單元1575來監測或調試。
圖16係根據本發明之實施例之處理器之指令集架構之執行管線1600之方塊圖。執行管線1600可示出例如圖15之指令架構1500之操作。
執行管線1600可包括步驟或操作之任何合適組合。在1605中,可進行隨後待執行之分支之預測。在一實施例中,此等預測可基於先前執行指令及其結果。在1610中,對應於預測執行分支之指令可載入指令快取中。在1615中,可擷取指令快取中之一或多個此等指令以供執行。在1620中,已經擷取之指令可解碼成微碼或更特定機器語言。在一實施例中,多個指令可同時解碼。在1625中,暫存器或所解碼指令內之其他資源之引用可重新指派。舉例而言,虛擬暫存器之引用可置換為對應實體暫存器之引用。在1630中,指令可分派至佇列以供執行。在1640中,可執行指令。此執行可以任何合適方式來執行。在1650中,指令可發出至合適執行實體。指令執行之方式可取決於執行指令之特定實體。舉例而言,在1655中,ALU可執行算術功能。ALU可利用用於其操作之單一時鐘週期,以及兩個移位器。在一實施例中,可使用兩個ALU,並且由此可在1655處執行兩個指令。在1660處,可進行所得分支之判定。程式計數器可用於指定所產生分支之目的地。1660可在單一時鐘週期內執行。在1665處,浮點運算可藉由一或多個FPU來執行。浮點操作可需要多個時鐘週期來執行,諸如兩個至十個週期。在1670處,可執行乘法及除法操作。此等操作可在四個時鐘週期中執行。在1675處, 可執行發至暫存器或管線1600之其他部分之載入及儲存操作。操作可包括載入及儲存位址。此等操作可在四個時鐘週期中執行。在1680處,寫回操作可根據1655-1675之所得操作需要來執行。
圖17為利用根據本發明之實施例之處理器1710的電子裝置1700之方塊圖。電子裝置1700可包括例如筆記型電腦、超極緻筆電、電腦、塔式伺服器、機架式伺服器、刀鋒型伺服器、膝上型電腦、桌上型電腦、平板電腦、移動裝置、電話、嵌入式電腦或任何其他合適電子裝置。
電子裝置1700可包括可通訊地耦接至任何合適數目或種類之組件、周邊設備、模組或裝置的處理器1710。此耦接可藉由任何合適種類之匯流排或介面來完成,諸如I2C匯流排、系統管理匯流排(SMBus)、低引腳數(LPC)匯流排、SPI、高清晰度音訊(HDA)匯流排、序列先進技術附接(SATA)匯流排、USB匯流排(版本1、2、3)或通用非同步接收器/發射器(UART)匯流排。
此等組件可包括例如顯示器1724、觸控螢幕1725、觸控墊1730、近場通訊(NFC)單元1745、感測器集線器1740、熱感測器1746、快速晶片組(EC)1735、可信平台模組(TPM)1738、BIOS/韌體/快閃記憶體1722、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、鍵盤1746及觸控墊1730可通訊地耦接至EC 1735。揚聲器1763、耳機1764及麥克風1765可通訊地耦接至音訊單元1764,該音訊單元可進而可通訊地耦接至DSP 1760。音訊單元1764可包括例如音訊編解碼器及D類放大器。SIM卡1757可通訊地耦接至WWAN單元1756。組件諸如WLAN單元1750及藍牙單元1752以及WWAN單元1756可以下一代形狀因子(NGFF)來實行。
圖18係實施根據本發明之實施例的可程式化組構之邏輯及指令之系統1800的方塊圖。系統1800可包括用於可程式化組構之層級及快取。
系統1800中之可程式化組構可用於動態實行專用計算結構。系統1800可包括藉由可程式化組構諸如現場可程式化閘極陣列(FPGA)、現場可程式化神經陣列(FPNA)或現場可程式化類比陣列(FPAA)建置的計算結構。可程式化組構之操作可藉由另一個處理器、核心或CPU來控制。
在一實施例中,本發明之可程式化組構可定 位於與管理可程式化組構之處理器、核心或CPU相同的晶片、晶粒上,或相同封裝內。舉例而言,系統1800可包括L1可程式化組構1816及L2可程式化組構1818,但是可使用根據本發明之教示的任何合適數目及種類之組構。此等組構定位於與管理該等組構之使用的處理器諸如CPU 1804相同的SoC 1802上。雖然CPU 1804描述為處理器,但是其可以在處理器層次以下的組件,諸如處理器核心、管線或其他執行實體來實行。
在另一實施例中,系統1800可包括用於可程式化組構之快取,其定位於與管理可程式化組構之處理器、核心或CPU相同的晶片、晶粒上,或相同封裝內。舉例而言,系統1800可包括L1組構快取1820、L2組構快取1822,及未在圖18中展示但是在以下進一步詳細論述的其他快取。
在另一實施例中,系統1800可包括可程式化組構之層級,其定位於與管理可程式化組構之處理器、核心或CPU相同的晶片、晶粒上,或相同封裝內。層級亦可包括相關聯快取,其中一些快取未在圖18中展示但是在以下進一步詳細論述。舉例而言,L1可程式化組構1816及L2可程式化組構1818可被佈置成使得L1可程式化組構1816比L2可程式化組構1818更接近於CPU 1804定位。系統1800可包括可程式化組構之層級、組態可程式化組構之快取,及指令及資料之快取。
CPU 1804可藉由例如循序處理器管線及亂 序處理器管線、處理器核心或其他合適機構來實行。可包括支援CPU 1804及SoC 1802之執行之其他元件,在圖18中未展示。CPU 1804及SoC 1812可以任何合適方式實行,包括部分地藉由如與圖1-17相關聯所描述之元件。SoC 1802之其他部分,諸如可程式化組構或組構快取,可與構成CPU 1804或SoC 1802之組件一起在與圖1-17相關聯所描述之元件中實行。CPU 1804可以處理器管線之實施例來執行指令。CPU 1804可包括多個核心、引擎及亂序處理。CPU 1804可包括前端,其用於接收或擷取來自記憶體或快取,諸如快取子系統1806或記憶體1814之指令。前端可包括有效地用待執行之可能指令填充管線的擷取器。前端可包括解碼器,其用於將指令解碼成用於執行之操作碼,判定其含義,獲得副作用、所需要之資料、所消耗之資料及所產生之資料。二進位翻譯器可用於優化程式碼。指令可駐留於如由編譯器產生之指令流中,或可藉由二進位翻譯器來建置。資訊可傳遞至執行管線中之亂序或循序執行引擎以便藉由CPU 1804執行。執行管線可包括重新命名及分配單元,其用於重新命名指令以供亂序執行,將此等重新命名約定儲存於與引退單元同延的重新排序緩衝器(ROB)中以使得指令可看來似乎以其接收之順序引退。重新命名及分配單元可進一步分配資源以便平行執行指令。排程器可排程指令以便在輸入可利用時對於執行單元執行,或在可程式化組構1816、1818上執行。執行單元或可程式化組構1816、1818之輸出可在ROB中佇列。前端 可試圖預測阻止指令在順序流中執行的任何行為並且可擷取可能執行之指令流。當存在例如誤預測時,ROB可通知前端並且可替代地執行不同指令組。
如以上論述,組構1816、1818可包括FPGA、FPNA或FPAA。在一實施例中,組構1816、1818可各自可通訊地耦接至用於控制及控制相應組構之一或多個實體,諸如快取1820、1822。此外,組構1816、1818可通訊地耦接至在圖18中未例示但是在下文進一步詳細描述的組構或記憶體控制器。快取1820、1822及相應組構及記憶體控制器可與彼此、CPU 1804及晶片I/O 1808通訊。晶片I/O可處置與例如記憶體1814或系統1800中之其他目的地之通訊。
在圖18之實例中,組構1816、1818可各自包括快取、控制器及可程式化組構陣列之組合之多個實例。此等之組合可被稱為組構器組。給定層次之組構器組可指定此給定層次之所有可程式化組構及相關快取及控制器。可程式化組構陣列可本身包括經定義、離散數目之可程式化組構區域1826。個別可程式化組構區域1826可被組配成專用執行區塊,諸如執行單元,其可處置專門任務以便滿足CPU 1804之執行指令。每個區域1826可包括合適數目之可組配區塊,當向區域1826載入組態檔案或其他規範時,該等組配區塊各自被規劃以使得區域1826作為指定執行單元來操作。對於給定組構或器組而言,區域1826可代表以下單元,此單元可被組配成具有特定身份以便履行 代表SoC 1802及CPU 1804來執行指令的任務。
CPU 1804可經由快取子系統1806提取來自記憶體1814之指令。基於待執行之特定指令,一些任務可經由可程式化組構,諸如組構1816、1818來更有效地執行。系統1800之任何合適部分可判定是否經由區域1826來執行給定任務。在一實施例中,由編譯器產生之指令或在指令流中提供之可指令具體指定組構1820、1822中之區域1826用於實行指定執行任務。在另一實施例中,SoC 1802之部分可判定組構1820、1822中之區域1826用於實行指定執行任務。使組構1820、1822中之區域實行指定執行任務之決定可基於組構1820、1822有效地執行任務之能力來作出。此外,決定可基於給定組態適用於組構1820、1822之區域之可用性來作出。舉例而言,若特定組態可利用或適合於組構1820、1822之區域,則可選擇組態,載入相應區域中,執行一次或多次,並且將結果返回CPU 1804。決定可進一步基於是否所組配區域將執行足夠數目之執行。舉例而言,一次執行可能不足以勝任組配區域1826之管理負擔。然而,若執行發生幾千次,並且區域1826可比CPU 1804中之正常執行單元更有效地執行任務,則增加之執行效率可勝任管理負擔。
在組構1816與組構1818之間,區域1826可能在大小方面有所不同。舉例而言,與組構1816中之區域相比,組構1818中之區域可具有四倍晶粒空間,以及由此四倍閘極,及實行功能之四倍可利用空間。然而,組構1816 可比組構1818更接近於CPU 1804定位。因此,與組構1818中之彼等相比,組構1816可用於更頻繁執行之較小執行任務。此外,如區域1826係可能唯一地被識別來執行CPU 1804之任務的給定組構之最小部分,從CPU 1804觀點來看作為一種「黑箱」,給定區域1826內之未使用空間可能不可被相同組構內之其他區域利用。因此,待載入區域1826中來執行任務之組態可施加至組態適合的最小可利用區域1826中。另一個組構1818可實行比組構1820更複雜的執行單元,但是使用發至CPU 1804之更小通訊速度。
系統1800可包括另一個系統可程式化組構1810,其可包括由例如FPGA實行的可重新組配邏輯區塊。組構1810可由CPU 1804控制。然而,因為組構1810在SoC 1802及CPU 1804晶片外,所以在組構1810與CPU 1804,以及SoC 1802內的支援CPU 1804之操作的組件之間可存在低通訊帶寬。通訊帶寬可受系統匯流排1812之帶寬限制,其可低於SoC 1802內之匯流排或跡線。組構1810之效用可限於諸如其中大量計算可沒有與CPU 1804之很多通訊的情況下進行的應用。此可阻止組構1810有效地實施許多更普通、低階執行區塊。SoC 1800可將太大而不適合組構1816、1818之區域中的組態指派給組構1810。然而,此等可經歷帶寬問題。
圖19係根據本發明之實施例之系統1800之元件之更詳細說明。
在一實施例中,系統1800可包括個別可程 式化組構陣列1908。此等可完全或部分地藉由圖18之組構1816、1818來實行。可存在任何合適數目之陣列1908,諸如M個陣列。陣列1908可對應於組構層級之給定層次。如示出,陣列1908可為此層級之層次N。
陣列1908可以任何合適方式介接至系統1800之其餘部分。在一實施例中,陣列1908可使用組構介面控制器(FIC)1902來介接至系統1800之其餘部分。在另一實施例中,陣列1908可使用組態記憶體控制器(CMC)1904來介接至系統1800之其餘部分。在另一實施例中,系統1800可包括給定陣列1908之組態快取(cCache)1906。
FIC 1902可以任何合適方式實行,包括使用邏輯或電路。FIC 1902之不同實施例在以下進一步額外詳細地描述。FIC 1902可實行用於藉由SoC 1802執行之指令,其定址至組構及陣列1908之組態。舉例而言,FIC 1902可翻譯並執行控制命令以及載入、操作及啟動發至及來自組構之記憶體交易。控制可臨時委派給FIC 1902以在操作期間啟動其自己的記憶體交易。
CMC 1904可以任何合適方式實行,包括使用邏輯或電路。CMC 1904之不同實施例在以下進一步額外詳細地描述。CMC 1904可將通往cCache 1906或陣列1908之輸入及輸出路徑映射至記憶體或暫存器。此等輸入及輸出路徑可在FIC 1902中,由FIC 1902產生,或由FIC 1902建立。另外,CMC 1904可根據CPU 1804之控制來 緩衝輸入及輸出。
可實行CCache 1906來儲存指定如何規劃陣列1908之給定區域的組態。組態之結果可包括陣列1908之區域之閘極或其他區塊的特定佈局。組態可包括組態檔案,其具有直接組配組構區域之互連及區塊的經編譯、低階位元流。組態可儲存於cCache 1906中以使得,在給出特定任務之請求時,組態可快速地載入陣列1908之區域上並且可用於執行。不同組態可快速地交換及載入。CCache 1906可指定為組構層級中之層次N下之快取。
如以上論述,可存在多個陣列1908,諸如給定層級層次下之M個不同陣列。此等在圖19中展示為陣列1908A至1908B。此等陣列1908之組合可被稱為組構器組1920。組構器組1920可涉及其給定層級層次,LN。此外,陣列1908獨有的任何相關元件,不論個別地或全體地,可被視為給定組構器組1920之一部分。舉例而言,FIC 1902A至1902B、CMC 1904A至1904B,及cCache LN 1906A至1906B可被視為組構器組1920之一部分。層級之其他層可包括其自己的相應組構器組1920。舉例而言,可存在層次N之組構器組1920,並且可存在層次N+1之不同組構器組1922。
組構器組1920、1922可以任何合適方式來互連至SoC 1802之其他部分。舉例而言,執行管線之指令分派單元1910可連接至組構器組1920之給定FIC 1902。指令分派單元1910可提供待由陣列1908之區域執行之指 令,或可將此等區域之組態指定至不同執行佈置中。資料快取,諸如SoC 1802之資料快取LN 1912可包括資料位址,其可用於藉由執行單元及可重新組配組構之讀取或寫入操作。輸入資料或輸出資料可經由快取1912從CMC 1904發送。
在一實施例中,SoC 1802可包括組態快取之多個層。舉例而言,層級之給定層之所有cCache 1906可路由至cCache-快取1914,其指定為層級之更高層,諸如N+1。cCache-快取1914可以此方式指定,因為其為其他cCache之快取,並且本身可為cCache。CCache-快取(N+1)1914可經由例如CMC 1904連接至cCache(N)1906。CCache-快取1914可儲存組態檔案,其可在陣列1908之特定層次(N)上運作。相應地並且例如,伺服L1組構陣列及其相關聯L1 cCache之L2 cCache-快取可被設計成保持L2 cCache與L2組構陣列相關聯之不同資料。然而,此限制條件可能並非絕對的。此外,在L2陣列區域中可獲得用於組態之空間,其另外保留於用於L1陣列區域之L1 cCache中(因為例如,L1陣列區域小於L2陣列區域)。然而,取決於所使用實行方案,cCache-快取之給定層次LN+1可優化或專門實行以便伺服層次LN組態。
必要時,不同層次之cCache-快取1914、1930可在一起運作,尤其當例如層次LN組態可在層次LN+1陣列1906上執行時。在此情況下,cCache-快取1914、1930可平衡工作負載並且若空間無法在更小較低層 次快取中獲得,則組態可替代地儲存於更大較高層次快取中。CCache-快取1914、1930亦可獲得來自任何合適層次之系統快取,諸如系統快取1924的額外資訊。此系統快取1924可包括來自例如層次LN+2之指令或資料快取資訊。可使用其他合適層次。CCache-快取1914、1930可將晶片I/O 1810定址至例如SoC 1802外部的存取記憶體或其他元件。
圖20係根據本發明之實施例之組態快取層級之方塊圖。圖20例示三個層次層級之不同層次之示例性佈置,然而所呈現佈置可適當地產生變化。
在一實施例中,L1組構器組2002可經由L1 cCache-快取2004連接至L3系統快取2006。L3系統快取2006可進而連接至記憶體2016。在另一實施例中,L2組構器組2008可經由L2 cCache-快取2010連接至記憶體2016。在另一實施例中,L3可程式化組構2012,包括大於組構器組2002、2008中之彼等的陣列,可經由其L3快取及控制器2014連接至記憶體2016。在此實施例中,單一陣列可用於L3可程式化組構,並且因此在本質上係單一陣列之組構器組。因此,cCache-快取可不安置於陣列與記憶體2016之間。
在一實施例中,僅L1組構可啟動直接與處理器暫存器之記憶體交易。在另一實施例中,任何更高層可限於經由其相應CMC之DMA類型記憶體交易。
圖21係根據本發明之實施例之組態快取及 其操作之方塊圖及說明。cCache,諸如L1 cCache 2102,可接收其從其組態中載入指定組態N的指令。在一實施例中,指令可指定將組態載入組構陣列之哪一個區域中。在另一實施例中,cCache可判定將組態載入組構陣列之哪一個區域中。在其他實施例中,FIC可作出此判定並且作為待發送至cCache之指令之一部分來發出此判定。在其他實施例中,由FIC接收之指令可指定此判定,其可進而被中繼至cCache。雖然CCache可包括用於任何合適數目之組態之空間,但是在圖21之實例中,cCache 2102可包括用於四個組態2104之空間。CCache 2102可使得能夠快速地推出、交換、清除、保存或重設新組態。在一實施例中,cCache 2102可對於預載入指令作出回應,該指令開始將來自另一個來源(諸如較高階快取或記憶體)之組態載入cCache 2102中以使得減少延時。
在一實施例中,cCache 2102可識別來自儲存於其中之一或多個組態檔案2104的組態2104N。CCache 2102可儲存有限數目之組態檔案2104。在另一實施例中,若給定組態檔案2104無法獲得,其可從較高階cCache-快取獲得。在另一實施例中,若較高階cCache-快取不具有可獲得之組態檔案,其可從例如記憶體或甚至較高階cCache-快取獲得。因此,cCache及cCache-快取可在彼此之間保持相干性。此外,此等可保持與其他SoC快取,諸如dCache或iCache之相干性。相干性可部分地產生,例如,使用修改擁有排他共享無效(MOESI)協定。在 一實施例中,此等快取之相干性可偏離MOESI協定或可使用之其他協定。在此實施例中,快取組態管線可在操作期間鎖定。鎖定可藉由例如ISA指令來指定。因此,所執行之操作可變得不可分割。
CCache 2102,一旦發現或獲得組態2104N,可將組態載入實際組構區域,諸如組構0 2106。個別邏輯區塊2108可根據組態2104N來規劃。
組態2104可被設計成使得每個可編程序邏輯區塊2108及互連之預設狀態係關閉、無動力的或斷開的。因此,若程式設計師不需要整個組構陣列,則可僅使用用於指定計算之輸入與輸出通道之間之必需行來載入較小組態。相應地,可定義區域。編譯器可組合可程式化組構之給定陣列內之組態以組合組態來最大程度地利用組構。給定類型之SoC 1802可經由可利用指令來定義組構區域之預設大小及此等區域如何可互換使用。
圖22係根據本發明之實施例的組構介面控制器可如何與可程式化組構介接之方塊圖。FIC 2202可包括引腳、埠或用於輸入、輸出及控制之通道。控制埠可路由至cCache以導致邏輯區域2206被組配成特定執行區塊。在一實施例中,輸入埠可路由至輸入移位暫存器2208。在另一實施例中,輸出埠可路由至輸出移位暫存器2204。
與組構器組內之相應FIC或CMC單元之通訊可需要使用規定協定來發送並接收位元。在一實施例 中,協定可提供間接地經由緩衝移位暫存器,諸如移位暫存器2204、2208之通訊。
在一實施例中,cCache 2102可允許組態保存或重設至原始組態。此等可包括駐留於組構區域2206上之組態實際變化之情況。此等情況可包括例如狀態機或將組構區域用於記憶體之功能。保存或重設可回應於指定此等操作之指令來執行。經由移位暫存器2204之輸出可在特權執行模式期間允許確認及批准非同步記憶體交易。此可例如在安全應用中執行。
圖23係根據本發明之實施例的示例性組構介面控制器及示例性組態記憶體控制器之方塊圖。FIC 2302可包括用於組配可程式化組構的任何合適數目及種類之組件。舉例而言,FIC 2302可包括用於追蹤操作碼、輸入及輸出的計數器組2316。此等可用於保持追蹤輸入及輸出記錄以便在例如無特權執行模式中出現意外組構行為時提出異常。此外,FIC 2302可包括與組構或cCache通訊之埠2312,諸如時鐘信號、輸入埠、輸出埠,以及發送讀取及寫入請求並且發送讀取及寫入授權之埠。此等埠可介接組構或其cCache。
在一實施例中,FIC 2302可包括cCache相干性控制邏輯2314,其用於判定是否組態可在cCache中獲得,或是否此等組態必須從較高階快取或記憶體獲得。
在另一實施例中,FIC 2302可包括指令埠2308。經由指令埠2308接收之指令可藉由編譯器或程式碼 或藉由其他部分SoC 1802來產生,並且可指定相對於組構來執行之操作。操作可包括藉由組構執行之操作以及藉由FIC 2302或CMC 2304執行的用於組配組構之操作。可接收任何合適指令,諸如指定由組構執行之指令之運算碼或類型定義、輸入大小、輸出大小、輸入位址、輸出位址或劃分時鐘信號的彼等。在另一實施例中,FIC 2302可包括用於控制組構或CMC 2304之操作的控制邏輯2310。控制邏輯2310可實行組態指令之執行。舉例而言,FIC 2302可將載入特定組態之命令發送至cCache。FIC 2302可介導CPU 1804、SoC 1802與組構之間之通訊。FIC 2302可向CMC 2304發出控制。
在另一實施例中,指令可藉由CMC 2304執行以便建立通往記憶體或其他快取之輸入及輸出路徑。根據組構之組態、待執行之任務、任何輸入資料之來源及任何輸出資料之目的地,CMC 2304可在組構與合適輸出2318之間建立輸入-輸出組構通訊通道2306。輸出2318可包括例如記憶體或暫存器。
FIC 2302及CMC 2304可將組構之一部分與SoC 1802之其餘部分分離並且可負責對於處理器指令諸如LOAD或RUN作出反應。
任何合適指令可用於具體靶向可程式化組構及其組態。輸入及輸出位置可根據記憶體位址或暫存器來定義。轉移單元可以例如、字、半字、四分之一字或位元組來定義,該等位元組可為例如64個位元。「組構單元」 可對應於例如個別L1 FPGA或FPNA。
待由如本文描述之可程式化組構利用之組構指令可包括組構預載入指令,PRELOAD,其指定組構單元及相關組態檔案之來源記憶體位址。在一實施例中,組構預載入指令可呈以下形式:PRELOAD<fabric unit>、<src config mem address>。它可用於例如將相對較大組態檔案載入cCache中。通常使用組態及最快待使用者可在程式執行開始時預載入以利用背景記憶體轉移。PRELOAD可導致將組態檔案載入與組構單元相關之cCache中,即使其尚未直接載入組構中。
組構指令可包括組構載入指令,LOAD,其指定組構單元及相關組態檔案之來源記憶體位址。在一實施例中,組構載入指令可呈以下形式:LOAD<fabric unit>、<src config mem address>。LOAD可導致將組態實際轉移至指定陣列由。若組構單元中之現有陣列組態被修改並且不保存,則將其丟棄,並且組態檔案之狀態保持為其最初載入之狀態。注意在一些實施例中,可選擇組態快取之置換策略,諸如最近最不頻繁使用(LRU)或神經學習模式。
組構指令可包括組構保存指令,SAVE,其指定組構單元及待保存之相關組態檔案之目的地位址。在一實施例中,組構保存指令可呈以下形式:SAVE<fabric unit>、<dest config mem address>。SAVE操作可立即或至少在組態從陣列中移除之前執行。
組構指令可包括組構重設指令,RESET,其指定可恢復原始組態檔案資訊的組構單元。在一實施例中,組構重設指令可呈以下形式:RESET<fabric unit>。例如當執行區塊之操作導致執行區塊變化時,可採用RESET。在隨後操作之前,可能需要恢復原始組態。在一實施例中,此原始組態可從L1 cCache獲得。
組構指令可包括組構清除指令,FLUSH,其指定組構單元。在一實施例中,組構清除指令可呈以下形式:FLUSH<fabric unit>、<config mem address>。FLUSH可將組態資訊從組構單元清除而不保存。此可例如在預期組構不使用一段時間並且不必向其中之邏輯區塊提供電力時使用。此可節省電力。
組構指令可包括組構運作指令,RUN,其指定組構單元、週期之數目、輸入記憶體位址、輸入大小、輸出記憶體位址及輸出大小。在一實施例中,組構運作指令可呈以下形式:RUN<fabric unit>、<cycles>、<input mem address>、<input size>、<output mem address>、<output mem size>。此可實際上操作經組配的可程式化組構。指令可指定待操作之時鐘週期之數目(可在組構單元之預定時鐘頻率或處理器時鐘頻率方面來指定,若組態係非同步的)及I/O參數。在一些模式中,經組配之可程式化組構可設定為連續地運作,例如,在特權執行模式中自由運作。
組構指令可包括組構停止指令,STOP,其 指定組構單元。在一實施例中,組構預載入指令可呈以下形式:STOP<fabric unit>。此可將同步組構在其當前執行訊框中暫停。此可例如在上下文交換或調試期間使用。類似地,組構恢復指令,RESUME,可導致執行之恢復。在一實施例中,組構預載入指令可呈以下形式:RESUME<fabric unit>
注意如本文例示之組構指令可作為給定ISA諸如x86架構之擴展來提供,以允許可重新組配組構無縫整合至基本上任何軟體中。在實施例中,此等組構指令可支援任何晶片上可重新組配組構,但是在一實施例中,僅第一層次層級可直接定址暫存器;可重新組配邏輯硬體之其他層次可限於直接記憶體存取(DMA)類型記憶體交易。應理解在各種實施例中,可擴展此等指令以便亦支援晶片外組構之操作。如本文描述之ISA擴展可使得複雜計算更快、更功率有效並且完全平行於其他CPU操作,從而增強高端及低功率裝置之能力及效率。
如以上所見,此等組構指令精確地指定載入/操作哪一個可程式化組構(在可程式化組構層級之每個層次上,可存在許多可程式化組構)。程式設計師或編譯器適當地使用此等組構指令可利用包括快取的可程式化組構佈置,該等快取具有可在其之間循環而具有極少懲罰的多個組態,同時亦執行PRELOAD,以避免等待載入先前未快取之組態。
可在鑒於圖20來考慮圖23的同時產生示例 性操作。應用可在系統1800上運作,其中器組2002、2008各自每個器組包括三個FPGA及一個FPNA。器組2002可使用其FPNA來識別來自點陣影像之數值字符並且將特殊格式表示輸出至查找表,該查找表藉由亦在器組2002中之FPGA來實行。此FPGA可將輸出映射至整數格式並且將資料儲存在記憶體中。
在應用開始時,此FPGA及FPNA之組態檔案可使用PRELOAD來預載入。此PRELOAD可大致上在給定應用內實際使用之前執行。PRELOAD命令可指定相應組態檔案位置(R1,R2)及目的地組構(FPGA1_1,FPNA1_1)。
PRELOAD FPGA1_1,(R1)
PRELOAD FPNA1_1,(R2)
在實際計算時,組態已經可預載入器組2002之cCache中。此等可使用LOAD命令即時從cCache載入實際組構中。
LOAD FPGA1_1,(R1)
LOAD FPNA1_1,(R2)
各自25個位元組之儲存數字影像可在由R3指定之位址處,並且輸出檔案可開始於由R4指定之位址處。若指令集架構允許代替記憶體存取來使用暫存器範圍,則一個範圍作為FPNA之中間輸出來用於R5。R8可包括計數器。可導致FPNA運作四個時鐘週期來建置輸出。在此情況下,以下偽碼迴圈可在點陣影像之整個集合上重 複並且將其輸出至整數格式:LOOP:RUN FPNA1_1,4,(R3),25,R5,1
SUB R8,R8,#1
RUN FPGA1_1,2,R5,1,(R4),4
ADD R4,R4,#4
BNEQ R8,LOOP
可程式化組構可平行於CPU 1802之執行來運作,因此在迴圈等待FPNA或FPGA之任何執行時,可平行地進行額外計算。
注意在以上迴圈中,除了RUN指令以外的指令可在CPU之給定部分(例如,ALU、執行單元等)中執行。RUN指令轉而導致例如CPU之排程及/或發出邏輯啟用組構介面控制器之控制信號。此組構介面控制器進而啟始對於指定組構之一些操作。然而,應理解迴圈之所有指令,包括RUN指令,最初從相同程式資料擷取並且藉由CPU之解碼階段解碼,產生合適控制信號,以供指令執行。為此目的,編譯器或亂序執行單元可導致在RUN FPGA1指令之後執行SUB指令以避免不必要的停止。
雖然此影像處理實例用於例示如何任務可從CPU 1804中卸載至可程式化組構,任何合適任務可從CPU 1804中卸載至可有效地產生可程式化組構之組態的可程式化組構。例如,此等可包括數學函數諸如平方根,指數函數、冪函數、非線性函數、三角函數、矩陣運算、偽隨機數生成、線性規劃、加密/解密、檔案壓縮或解壓縮、 數位信號處理、FIR濾波器、IIR濾波器、有限狀態機、馬爾可夫鏈、程式控制邏輯、模擬、誤差校正/偵測、圖像處理、路由演算法、蒙特卡羅模擬、天氣模型、混沌系統、生物測定分析、手寫識別、臉孔識別、指紋識別、語音處理、語音至文本轉換、電腦視覺啟發法、內容可定址搜索優化、散列函數和神經網絡模型。
圖24係根據本發明之實施例的管理可程式化組構及快取之方法2400的流程圖。方法2400可藉由任何合適標準來啟始。此外,雖然方法2400描述特定元件之操作,但是方法2400可藉由任何合適組合或類型之元件來執行。舉例而言,方法2400可藉由圖1-23例示之元件或可操作來實行方法2400之任何其他系統來實行。因此,方法2400之較佳初始化點及構成方法2400之元件之順序可取決於所選擇的實行方案。在一些實施例中,一些元件可選擇性地省略、重組、重複或合併。此外,方法2400之部分可在本身內平行地執行。
在2405處,在一實施例中,可載入待執行之應用。SoC可將來自記憶體之部分或所有指令載入快取中。基於組構區域諸如FGPA之預期執行,可預載入FPGA區域之組態檔案。此等可預載入cCache中。當產生組態檔案之請求時,快取相干性可相對於此等cCache之內容來定址。
在2410處,在一實施例中,可判定可使用SoC上之組構區域來完全或部分地執行給定指令。組構區 域可包括例如FPGA區域。在2415處,基於在組構區域上執行指令之判定,可判定用於執行之合適組構區域。可選擇組構之合適層,其中更複雜計算區塊可在組構之較高層中實行,或較簡單計算區塊可在組構之較低層中實行。此外,需要SoC之主處理器之更多通量或帶寬的計算區塊可選擇在更接近於處理器的組構之較低層中執行。
在2420處,在一實施例中,可識別其中執行指令之具體組構區域。可判定此區域之合適組構組態。在一實施例中,在2425處,對應於計算區塊之組態可載入此區域中。在此過程中,可執行快取相干性,其中可存取快取或記憶體之較高階以獲得組態。組態可儲存在被限於組構區域的cCache中。可建立從組構區域至記憶體、暫存器或資料快取系統之記憶體路徑。可建立發至及來自組構區域之輸入及輸出參數。
在2430處,可執行組構區域。在2435處,在一實施例中,若組構區域發生變化,則可保存變化。在另一實施例中,若組構區域發生變化,可清除變化並且恢復原始組態。
在2440處,可判定是否再次執行組構區域。若如此,方法2400可在2430處重複。否則,方法2400可進行至2445。在2445處,可判定是否很快再次需要組構區域。若不需要,在2450處,在一實施例中,可清除組構區域並且將功率關斷。否則,方法2400可進行至2455。
在2455處,可判定是否存在在應用中待執行 之額外指令。若如此,方法2400可在2410處重複。否則,在2460處,方法2400可選擇性地重複或終止。
如上所述,可提供基於組構之指令以利用在處理器內可獲得之可程式化組構。更具體而言,此等指令可提供於程式內,例如藉由程式設計師編碼及/或藉由編譯器插入,以便流經通用處理器諸如給定核心之管線。在管線處置期間,例如,在發出或排程階段處,針對可程式化組構之此等指令,為了便於論述在本文中稱為「組構指令」,可轉移或另外被引導至層級可程式化組構以便實現對於可程式化組構之控制及執行,如本文描述。
因此在較高層次上,如本文描述之組構指令與應用之常規指令一起經由處理器執行,至少在此等指令解碼、分配並被引導以供排程的範圍內。然後可發生不同操作。更具體而言,此等指令可被輸送至可程式化組構之控制邏輯,包括FIC及CMC,以導致此等單元執行各種操作,包括組態及控制操作,以便控制在給定一或多個可程式化組構單元中之特定執行功能性的執行。為此目的,可程式化組構中之此邏輯或電路可包括硬體電路、軟體及/或韌體之組合,包括被組配來接收並處置此等組構指令之狀態機。
現參考圖25,展示根據本發明之實施例之方法的流程圖。更具體而言,圖25之方法2500可藉由硬體電路、軟體及/或韌體,包括CPU之排程邏輯的組合來執行。如所見,方法2500開始於將指令區塊接收於排程器中(區 塊2510)。此等指令可包括給定應用之各種指令,包括在通用電路上執行之指令,諸如習知x86指令或給定ISA之其他習知指令,及執行可程式化組構內之組態及控制操作的基於組構之指令。
在菱形2520處,判定是否任何可程式化組構指令存在於所接收的指令區塊內,其可對應於應用之指令排程窗口。在一實施例中,可提供指示符諸如組構指示符(例如,位元),若設定該指示符,則其指示對應指令係組構指令。若不存在此等指令,則各種CPU指令可排程並發送至CPU之一或多個不同執行單元(區塊2530)。
否則,若判定在區塊中存在可程式化組構指令,則控制傳遞至區塊2540,其中此等指令之排序可相對於CPU指令來判定。亦即,可考慮相依性。舉例而言,假定給定CPU指令係對於在可程式化組構中執行之計算結果執行算術運算。為了實現正確執行,首先執行此可程式化功能計算以使得所需結果(對應於來自可程式化組構之輸出資料)可作為與相依CPU指令有關來使用之適當輸入資料來提供。
仍然參照圖25,在區塊2550處,可程式化組構指令可發送至可程式化組構以供處置。更具體而言,在一實施例中,此等一或多個指令可被轉移或被引導至可程式化組構之FIC。其後,控制傳遞至區塊2560,其中可排程獨立CPU指令以供執行。亦即,在排程窗口內可存在在CPU內執行的額外指令,其不取決於在可程式化組構中執 行之任何計算之結果。因此,此等指令可在CPU之給定執行單元上排程並執行,而無需等待可程式化組構計算之任何結果。
仍然參照圖25,隨後判定是否接收來自可程式化組構之結果(菱形2570)。在一些實施例中,可程式化組構計算之結果可直接發送至給定CPU之暫存器檔案。在其他情況下,結果可提供至記憶體層級,並且完成或從可程式化組構發送至CPU排程邏輯(及/或引退單元)之其他信號指示所請求計算完成。若未接收此等結果,控制可回送至區塊2560。否則當接收此等結果時,控制傳遞至區塊2580,其中可排程一或多個相依CPU指令以便在CPU處執行。因此,假定給定CPU指令係對於從可程式化組構計算獲得之結果資料執行操作,則發生正確的執行。應理解雖然在圖25之實施例中在此較高層次上示出,但是許多變化及替代方案係可能的。
現在參看圖26,示出根據本發明之另一實施例之方法之流程圖。圖26示出用於控制可程式化組構中之執行的實施例,如本文描述。在一實施例中,方法2600可至少部分地藉由此可程式化組構之組構介面控制器來執行。當然在其他情況下,方法2600可藉由硬體電路、軟體及/或韌體之其他組合來執行。方法2600開始於接收用於第一可程式化組構控制指令之控制資訊(區塊2610)。出於論述目的,假定此可程式化組構控制指令係運作指令,其先前在CPU管線內接收並解碼。如藉由此解碼邏輯來解碼 之指令之各種欄位可提供至組構介面控制器。
回應於此指令,組構介面控制器可開始在第一可程式化組構單元上之執行(區塊2620)。更具體而言,此第一可程式化組構單元可藉由指令之可程式化組構指示符來指示。應理解執行啟動可包括將來自組構介面控制器及/或快取控制器之各種控制信號提供至給定可程式化組構單元。此等控制信號導致單元開始對於由指令識別之輸入資料執行一或多個操作,以產生可提供至如由指令指示之給定目的地之輸出資料。在一實施例中,此輸出資料可經由藉助於如本文描述之可組配記憶體控制器來組配之互連來發送。
如進一步例示,控制隨後傳遞至區塊2630,其中可接收第二可程式化組構控制指令之控制資訊。注意此指令取決於第一可程式化組構指令。舉例而言,假定此第二可程式化組構控制指令係另一個運作指令,例如,其與第一可程式化組構控制指令相比係針對不同可程式化組構單元。此外假定此指令係對於資料,包括回應於第一可程式化組構指令所產生的結果資料執行操作。因此,存在指令相依性。
由於此指令相依性,在菱形2640處,可判定是否第一可程式化組構控制指令之執行完成。注意此判定可以各種方式來實行。舉例而言,第一可程式化組構單元可向組構介面控制器提供完成信號以指示其執行已經完成。或,可設定與輸出資料之目的地位置(並且其可同樣為 第二可程式化組構控制指令之輸入資料之來源位置)相關聯之有效指示符以便指示其中之資訊係有效的。
假定第一可程式化組構控制指令之執行被判定為完成,者控制傳遞至區塊2650。在區塊2650處,組構介面控制器可開始對於此第二可程式化組構單元執行以便執行第二可程式化組構控制指令之操作。應理解雖然在圖26之實施例中在此較高層次上示出,但是許多變化及替代方案係可能的。
以下實例係關於進一步實施例。
在一實例中,一處理器包含:用於執行指令之一第一核心,該第一核心形成於一第一晶粒上;及一可程式化組構,該可程式化組構具有一層級佈置,該層級佈置包括形成於該第一晶粒上之一第一層可程式化組構及形成於該第一晶粒上之一第二層可程式化組構。該可程式化組構可包括一組構介面控制器,其用於:接收來自該第一核心之一第一可程式化組構控制指令;並且對其作出回應,導致該第一層可程式化組構之一第一可程式化組構單元對於第一輸入資料執行一操作。
在一實例中,該第一核心包含:一解碼邏輯,該解碼邏輯用於解碼包含一ISA指令之該第一可程式化組構控制指令;及一發出邏輯,該發出邏輯將該解碼第一可程式化組構控制指令引導至該組構介面控制器。
在一實例中,該第一核心進一步包含排程邏輯,該排程邏輯用於在將對於該第一輸入資料執行操作之 一結果儲存於一目的地儲存器中之後,排程取決於該第一可程式化組構控制指令之一第二指令以便在該第一核心之一第一執行邏輯上執行。
在一實例中,該排程邏輯係用於將在程式順序上在該第二指令之後之至少一第三指令排程以便在該第二指令之前在該第一執行邏輯上執行。
在一實例中,該第一可程式化組構控制指令包含:識別該第一可程式化組構單元之一第一欄位;識別該第一可程式化組構單元執行之週期數目之一第二欄位;指示該第一輸入資料之一大小之一第三欄位;及指示由該第一可程式化組構單元輸出之第一輸出資料之一大小的一第四欄位。
在一實例中,該組構介面控制器係用於回應於該第一可程式化組構控制指令,發出一控制信號來導致該第一可程式化組構單元執行該操作。
在一實例中,該第一可程式化組構控制指令進一步包含指示該第一輸出資料之一目的地儲存器的一目的地欄位。
在一實例中,該可程式化組構包含一或多個現場可程式化閘陣列及一或多個現場可程式化神經陣列。
請注意,以上處理器可使用各種構件來實行。
在一實例中,該處理器包含併入一使用者設備觸摸允用裝置中之SoC。
在另一實例中,一系統包含一顯示器及一記憶體,且包括以上實例中之一或多個實例之處理器。
在另一實例中,一方法包含:在一處理器之一可程式化組構之一組構介面控制器中接收來自該處理器之一第一核心之一管線的一第一可程式化組構指令,該處理器包含至少一個核心但是該可程式化組構包括可程式化組構之多個層,該第一可程式化組構指令包含一組構預載入指令;判定該等多個層之一第一層之一第一組構單元與該第一可程式化組構指令相關聯;並且回應於判定該第一組構單元,導致該第一組構單元之一組態儲存於該等多個層之該第一層之一第一組態快取中。
在一實例中,該方法進一步包含:在該組構介面控制器中接收一第二可程式化組構指令,該第二可程式化組構指令包含一組構載入指令;並且回應於該第二組構指令,將來自該第一組態快取之該組態載入該第一組構單元中。
在一實例中,該方法進一步包含:在該組構介面控制器中接收一第三可程式化組構指令,該第三可程式化組構指令包含一組構保存指令;並且回應於該第三可程式化組構指令,在將來自該第一組態快取之該組態載入該第一組構單元之前,將該第一組構單元之一當前組態保存至該第一組態快取。
在一實例中,該方法進一步包含:接收一第四可程式化組構指令,該第四可程式化組構指令包含一組 構恢復指令;並且回應於該第四可程式化組構指令,恢復該第一組構單元之一第一組態,其中該第一組構單元之先前執行導致該第一組構單元之該組態之一或多個變化。
在一實例中,該方法進一步包含:接收一第五可程式化組構指令,該第五可程式化組構指令包含一組構清除指令;回應於第五可程式化組構指令,移除該第一組構單元之一當前組態;並且其後將發至該第一組構單元之功率解除設置(deasserting)。
在一實例中,該方法進一步包含在該第一核心之一解碼邏輯中將該第一可程式化組構指令解碼,並且經由該第一核心之一發出邏輯,將該解碼第一可程式化組構指令引導至該組構介面控制器。
在一實例中,該方法進一步包含:在該組構介面控制器中接收一第一可程式化組構控制指令;並且回應於該第一可程式化組構控制指令,導致該第一組構單元對於第一輸入資料執行一操作以產生第一結果資料。
在一實例中,該方法進一步包含:在該組構介面控制器中接收一第二可程式化組構控制指令;並且回應於該第二可程式化組構控制指令及該第一結果資料之可用性,導致該可程式化組構之一第二組構單元對於該第一結果資料執行一操作。
在另一實例中,包括指令之一電腦可讀媒體係用於執行以上實例中任一實例之方法。
在另一實例中,包括資料之一電腦可讀媒體 係藉由至少一個機器用於製造至少一個積體電路來執行以上實例中任一實例之方法。
在另一實例中,一種設備包含用以執行以上實例中任一實例之方法的構件。
在另一實例中,一系統包含:一處理器,其具有多個核心、多個快取記憶體,及一可程式化組構,該可程式化組構具有一層級佈置,該層級佈置包括可程式化組構之多個層。該可程式化組構可包括一組構介面控制器,其係用於:接收來自該等多個核心之一第一核心的一第一可程式化組構控制指令,該第一可程式化組構控制指令具有識別該可程式化組構之一第一可程式化組構單元的一第一欄位,識別該第一可程式化組構單元執行之週期數目之一第二欄位,指示供執行之第一輸入資料之一大小之一第三欄位,及指示由該第一可程式化組構單元輸出之第一輸出資料之一大小的一第四欄位;並且對其作出回應,導致該第一可程式化組構單元對於該第一輸入資料進行操作。該系統可進一步包括耦接至該處理器之一系統記憶體。
在一實例中,該組構介面控制器係用於:接收一組構預載入指令;並且回應於該組構預載入指令,導致該第一可程式化組構單元之一組態儲存於與該第一可程式化組構單元相關聯之一第一組態快取中。
在一實例中,該組構介面控制器係用於:接收一組構載入指令;並且回應於該組構載入指令,導致來自該第一組態快取的該第一可程式化組構單元之一組態載 入該第一可程式化組構單元。
在一實例中,該組構介面控制器係用於:接收一第二可程式化組構控制指令;並且回應於該第二可程式化組構控制指令及該第一輸出資料之可用性,導致該可程式化組構之一第二組構單元對於該第一輸出資料執行一操作。
在另一實例中,一設備包含:用於在一處理器之一可程式化組構之一組構介面控制器中接收來自該處理器之一第一核心之一管線的一第一可程式化組構指令的構件,該處理器包含至少一個核心並且該可程式化組構包括可程式化組構之多個層,該第一可程式化組構指令包含一組構預載入指令;用於判定該等多個層之一第一層之一第一組構單元與該第一可程式化組構指令相關聯的構件;以及導致該第一組構單元之一組態儲存於該等多個層之該第一層之一第一組態快取中的構件。
在一實例中,該設備進一步包含:用於在該組構介面控制器中接收一第二可程式化組構指令的構件,該第二可程式化組構指令包含一組構載入指令;以及將來自該第一組態快取之該組態載入該第一組構單元中的構件。
在一實例中,該設備進一步包含:用於在該組構介面控制器中接收一第三可程式化組構指令的構件,該第三可程式化組構指令包含一組構保存指令;以及在將來自該第一組態快取之該組態載入該第一組構單元之前, 將該第一組構單元之一當前組態保存至該第一組態快取的構件。
在一實例中,該設備進一步包含:用於接收一第四可程式化組構指令的構件,該第四可程式化組構指令包含一組構恢復指令;以及用於恢復該第一組構單元之一第一組態的構件,其中該第一組構單元之先前執行導致該第一組構單元之該組態之一或多個變化。
應理解,以上實例之各種組合係可能的。
實施例可用於許多不同類型之系統中。例如,在一實施例中,通訊裝置可經佈置來執行本文所描述之各種方法及技術。當然,本發明之範疇不限於通訊裝置,且替代地其他實施例可針對用於處理指令之其他類型之設備或包括指令的一或多個機器可讀媒體,該等指令回應於在計算裝置上執行而引起該裝置實行本文所描述之方法及技術中之一或多者。
實施例可以碼來實行,且可儲存在非暫時儲存媒體上,該非暫時媒體上儲存有指令,該等指令可用以程式設計系統以執行指令。實施例亦可在資料中實行並且可儲存於一非暫時性儲存媒體中,其在由至少一個機器使用時,導致該至少一個機器製造至少一個積體電路來執行一或多個操作。更進一步實施例可在包括資訊之一電腦可讀儲存媒體中實行,其在製造成一SoC或其他處理器時,組配該SoC或其他處理器來執行一或多個操作。儲存媒體可包括但不限於:任何類型之碟片,包括軟碟片、光碟片、 固態驅動機(SSD)、光碟唯讀記憶體(CD-ROM)、可重寫光碟(CD-RW)及磁光碟;半導體元件,諸如唯讀記憶體(ROM)、隨機存取記憶體(RAM),諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可抹除可程式化唯讀記憶體(EPROM)、快閃記憶體、電氣可抹除可程式化唯讀記憶體(EEPROM);磁卡或光卡,或適合於儲存電子指令之任何其他類型之媒體。
雖然已就有限數目之實施例描述本發明,但是熟習此項技術者將瞭解基於該等實施例之許多修改及變化。隨附申請專利範圍意欲涵蓋如屬於本發明之真實精神及範疇內之所有此等修改及變化。
1800‧‧‧系統
1802‧‧‧SoC
1804‧‧‧CPU
1806‧‧‧快取子系統
1808‧‧‧晶片I/O
1810‧‧‧系統可程式化組構
1812‧‧‧匯流排
1814‧‧‧記憶體
1816‧‧‧L1可程式化組構
1818‧‧‧L2可程式化組構
1820‧‧‧L1組構快取
1822‧‧‧L2組構快取
1826‧‧‧可程式化組構區域

Claims (20)

  1. 一種處理器,包含:用以執行指令之一第一核心,該第一核心形成於一第一晶粒上;以及具有一層級佈置之一可程式化組構,該層級佈置包括形成於該第一晶粒上之一第一層可程式化組構及形成於該第一晶粒上之一第二層可程式化組構,該可程式化組構包括一組構介面控制器用以:接收來自該第一核心之一第一可程式化組構控制指令;以及對其回應,導致該第一層可程式化組構之一第一可程式化組構單元對第一輸入資料執行一操作。
  2. 如請求項1之處理器,其中該第一核心包含:一解碼邏輯,用以解碼包含一指令集架構(ISA)指令之該第一可程式化組構控制指令;及一發出邏輯,用以將該解碼之第一可程式化組構控制指令引導至該組構介面控制器。
  3. 如請求項2之處理器,其中該第一核心進一步包含排程邏輯,用以在對該第一輸入資料執行操作之一結果被儲存於一目的地儲存器中之後,排程取決於該第一可程式化組構控制指令之一第二指令以在該第一核心之一第一執行邏輯上執行。
  4. 如請求項3之處理器,其中該排程邏輯係 用以將在程式順序中的該第二指令之後之至少一第三指令排程,以在該第二指令之前於該第一執行邏輯上執行。
  5. 如請求項1之處理器,其中該第一可程式化組構控制指令包含:用以識別該第一可程式化組構單元之一第一欄位;用以識別該第一可程式化組構單元執行之週期數目之一第二欄位;用以指示該第一輸入資料之大小之一第三欄位;及用以指示要由該第一可程式化組構單元所輸出之第一輸出資料之大小的一第四欄位。
  6. 如請求項5之處理器,其中該組構介面控制器係用以回應於該第一可程式化組構控制指令而發出一控制信號來導致該第一可程式化組構單元執行該操作。
  7. 如請求項5之處理器,其中該第一可程式化組構控制指令進一步包含用以指示該第一輸出資料之一目的地儲存器之一目的地欄位。
  8. 如請求項1之處理器,其中該可程式化組構包含一或多個現場可程式化閘陣列及一或多個現場可程式化神經陣列。
  9. 一種具有資料儲存其上之機器可讀媒體,該等資料若由至少一個機器所使用則導致該至少一個機器製造至少一個積體電路來執行一方法,包含:在一處理器之一可程式化組構之一組構介面控制器中接收來自該處理器之一第一核心之一管線的一第一可程 式化組構指令,該處理器包含至少一個核心並且該可程式化組構包括可程式化組構之多個層,該第一可程式化組構指令包含一組構預載入指令;判定該等多個層之一第一層之一第一組構單元與該第一可程式化組構指令相關聯;以及回應於判定該第一組構單元,導致該第一組構單元之一組態要被儲存於該等多個層之該第一層之一第一組態快取中。
  10. 如請求項9之機器可讀媒體,其中該方法進一步包含:在該組構介面控制器中接收一第二可程式化組構指令,該第二可程式化組構指令包含一組構載入指令;並且回應於該第二組構指令,將來自該第一組態快取之該組態載入至該第一組構單元中。
  11. 如請求項10之機器可讀媒體,其中該方法進一步包含:在該組構介面控制器中接收一第三可程式化組構指令,該第三可程式化組構指令包含一組構保存指令;並且回應於該第三可程式化組構指令,在將來自該第一組態快取之該組態載入至該第一組構單元之前,將該第一組構單元之一當前組態保存至該第一組態快取。
  12. 如請求項10之機器可讀媒體,其中該方法進一步包含:接收一第四可程式化組構指令,該第四可程式化組構 指令包含一組構恢復指令;並且回應於該第四可程式化組構指令,恢復該第一組構單元之一第一組態,其中該第一組構單元之先前執行導致該第一組構單元之該組態之一或多個變化。
  13. 如請求項10之機器可讀媒體,其中該方法進一步包含:接收一第五可程式化組構指令,該第五可程式化組構指令包含一組構清除指令;回應於第五可程式化組構指令,移除該第一組構單元之一當前組態;並且其後將發至該第一組構單元之功率解除設置。
  14. 如請求項10之機器可讀媒體,其中該方法進一步包含在該第一核心之一解碼邏輯中將該第一可程式化組構指令解碼,並且經由該第一核心之一發出邏輯,將該解碼之第一可程式化組構指令引導至該組構介面控制器。
  15. 如請求項10之機器可讀媒體,其中該方法進一步包含:在該組構介面控制器中接收一第一可程式化組構控制指令;並且回應於該第一可程式化組構控制指令,導致該第一組構單元對第一輸入資料執行一操作以產生第一結果資料。
  16. 如請求項15之機器可讀媒體,其中該方法進一步包含: 在該組構介面控制器中接收一第二可程式化組構控制指令;並且回應於該第二可程式化組構控制指令及該第一結果資料之可用性,導致該可程式化組構之一第二組構單元對該第一結果資料執行一操作。
  17. 一種系統,包含:一處理器,其具有多個核心、多個快取記憶體、及一可程式化組構,該可程式化組構具有一包括可程式化組構之多個層的層級佈置,該可程式化組構包括一組構介面控制器用以:接收來自該等多個核心之一第一核心的一第一可程式化組構控制指令,該第一可程式化組構控制指令具有用以識別該可程式化組構之一第一可程式化組構單元的一第一欄位、用以識別該第一可程式化組構單元執行之週期數目之一第二欄位、用以指示供執行之第一輸入資料之大小之一第三欄位、及用以指示要由該第一可程式化組構單元所輸出之第一輸出資料之大小的一第四欄位;以及對其回應,導致該第一可程式化組構單元對該第一輸入資料進行操作;以及耦合至該處理器之一系統記憶體。
  18. 如請求項17之系統,其中該組構介面控制器係用以:接收一組構預載入指令;並且回應於該組構預載入指令,導致該第一可程式化組構 單元之一組態要被儲存於與該第一可程式化組構單元相關聯之一第一組態快取中。
  19. 如請求項18之系統,其中該組構介面控制器係用以:接收一組構載入指令;並且回應於該組構載入指令,導致來自該第一組態快取的該第一可程式化組構單元之該組態要被載入至該第一可程式化組構單元。
  20. 如請求項17之系統,其中該組構介面控制器係用以:接收一第二可程式化組構控制指令;並且回應於該第二可程式化組構控制指令及該第一輸出資料之可用性,導致該可程式化組構之一第二組構單元對該第一輸出資料執行一操作。
TW105133058A 2015-11-30 2016-10-13 用於可程式化組構層級與快取之指令及邏輯 TW201723814A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/953,529 US20170153892A1 (en) 2015-11-30 2015-11-30 Instruction And Logic For Programmable Fabric Hierarchy And Cache

Publications (1)

Publication Number Publication Date
TW201723814A true TW201723814A (zh) 2017-07-01

Family

ID=58777923

Family Applications (1)

Application Number Title Priority Date Filing Date
TW105133058A TW201723814A (zh) 2015-11-30 2016-10-13 用於可程式化組構層級與快取之指令及邏輯

Country Status (5)

Country Link
US (1) US20170153892A1 (zh)
EP (1) EP3384400B1 (zh)
CN (1) CN108351863B (zh)
TW (1) TW201723814A (zh)
WO (1) WO2017095511A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI781439B (zh) * 2019-09-17 2022-10-21 美商美光科技公司 映射未經分類之記憶體存取至經分類之記憶體存取

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2514618B (en) * 2013-05-31 2020-11-11 Advanced Risc Mach Ltd Data processing systems
US10664751B2 (en) 2016-12-01 2020-05-26 Via Alliance Semiconductor Co., Ltd. Processor with memory array operable as either cache memory or neural network unit memory
US11226840B2 (en) 2015-10-08 2022-01-18 Shanghai Zhaoxin Semiconductor Co., Ltd. Neural network unit that interrupts processing core upon condition
US11216720B2 (en) 2015-10-08 2022-01-04 Shanghai Zhaoxin Semiconductor Co., Ltd. Neural network unit that manages power consumption based on memory accesses per period
US10725934B2 (en) 2015-10-08 2020-07-28 Shanghai Zhaoxin Semiconductor Co., Ltd. Processor with selective data storage (of accelerator) operable as either victim cache data storage or accelerator memory and having victim cache tags in lower level cache wherein evicted cache line is stored in said data storage when said data storage is in a first mode and said cache line is stored in system memory rather then said data store when said data storage is in a second mode
US11029949B2 (en) 2015-10-08 2021-06-08 Shanghai Zhaoxin Semiconductor Co., Ltd. Neural network unit
US11221872B2 (en) 2015-10-08 2022-01-11 Shanghai Zhaoxin Semiconductor Co., Ltd. Neural network unit that interrupts processing core upon condition
US10671564B2 (en) * 2015-10-08 2020-06-02 Via Alliance Semiconductor Co., Ltd. Neural network unit that performs convolutions using collective shift register among array of neural processing units
US10389839B2 (en) * 2016-06-01 2019-08-20 Intel Corporation Method and apparatus for generating data prefetches specifying various sizes to prefetch data from a remote computing node
US10573598B2 (en) * 2017-09-28 2020-02-25 Xilinx, Inc. Integration of a programmable device and a processing system in an integrated circuit package
CN108874702B (zh) * 2018-06-15 2020-11-17 中国电子科技集团公司第五十二研究所 基于axi总线的多路对称加解密ip核并行处理装置和方法
CN108777155A (zh) * 2018-08-02 2018-11-09 北京知存科技有限公司 闪存芯片
CN110287384B (zh) * 2019-06-10 2021-08-31 北京百度网讯科技有限公司 智能服务方法、装置及设备
US11494311B2 (en) 2019-09-17 2022-11-08 Micron Technology, Inc. Page table hooks to memory types
US10963396B1 (en) 2019-09-17 2021-03-30 Micron Technology, Inc. Memory system for binding data to a memory namespace
US11650742B2 (en) 2019-09-17 2023-05-16 Micron Technology, Inc. Accessing stored metadata to identify memory devices in which data is stored
KR20210080009A (ko) * 2019-12-20 2021-06-30 삼성전자주식회사 가속기, 가속기의 동작 방법 및 가속기를 포함한 디바이스
US11387863B1 (en) * 2021-04-05 2022-07-12 Rockwell Collins, Inc. Cognitively adaptable front-end with FPNA enabled integrated network executive
CN114785660B (zh) * 2022-03-15 2023-08-29 桂林电子科技大学 一种NoC高速数据采集拓扑结构及其同步方法

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5737631A (en) * 1995-04-05 1998-04-07 Xilinx Inc Reprogrammable instruction set accelerator
US6732263B1 (en) * 2000-06-12 2004-05-04 Altera Corporation Configuring both a programmable logic device and its embedded logic with a single serialized configuration bit stream
US7299339B2 (en) * 2004-08-30 2007-11-20 The Boeing Company Super-reconfigurable fabric architecture (SURFA): a multi-FPGA parallel processing architecture for COTS hybrid computing framework
US7647475B2 (en) * 2006-09-06 2010-01-12 Mips Technologies, Inc. System for synchronizing an in-order co-processor with an out-of-order processor using a co-processor interface store data queue
GB2471067B (en) * 2009-06-12 2011-11-30 Graeme Roy Smith Shared resource multi-thread array processor
US8972707B2 (en) * 2010-12-22 2015-03-03 Via Technologies, Inc. Multi-core processor with core selectively disabled by kill instruction of system software and resettable only via external pin
US8635476B2 (en) * 2010-12-22 2014-01-21 Via Technologies, Inc. Decentralized power management distributed among multiple processor cores
CN102289424B (zh) * 2011-08-09 2013-12-11 清华大学 一种动态可重构阵列处理器的构令流工作方法
WO2013025338A1 (en) * 2011-08-17 2013-02-21 Rambus Inc. Multi-chip package and interposer with signal line compression
KR101762779B1 (ko) * 2011-08-22 2017-07-28 인텔 코포레이션 동적으로 선택 가능한 중복 공유된 링크 물리적 경로들을 사용하여 개방형 코어 프로토콜 기반 상호 접속 네트워크들에서 데이터 처리량 개선을 위한 방법
US8643168B1 (en) * 2012-10-16 2014-02-04 Lattice Semiconductor Corporation Integrated circuit package with input capacitance compensation
US9065722B2 (en) * 2012-12-23 2015-06-23 Advanced Micro Devices, Inc. Die-stacked device with partitioned multi-hop network
US9785444B2 (en) * 2013-08-16 2017-10-10 Analog Devices Global Hardware accelerator configuration by a translation of configuration data
WO2015096001A1 (en) * 2013-12-23 2015-07-02 Intel Corporation System-on-a-chip (soc) including hybrid processor cores
US10083395B2 (en) * 2015-05-21 2018-09-25 Google Llc Batch processing in a neural network processor
US9698790B2 (en) * 2015-06-26 2017-07-04 Advanced Micro Devices, Inc. Computer architecture using rapidly reconfigurable circuits and high-bandwidth memory interfaces

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI781439B (zh) * 2019-09-17 2022-10-21 美商美光科技公司 映射未經分類之記憶體存取至經分類之記憶體存取

Also Published As

Publication number Publication date
EP3384400A4 (en) 2019-08-21
CN108351863B (zh) 2022-12-13
CN108351863A (zh) 2018-07-31
EP3384400B1 (en) 2021-07-14
US20170153892A1 (en) 2017-06-01
EP3384400A1 (en) 2018-10-10
WO2017095511A1 (en) 2017-06-08

Similar Documents

Publication Publication Date Title
EP3384400B1 (en) Instruction and logic for programmable fabric hierarchy and cache
US10310868B2 (en) Instruction and logic for programmable fabric heirarchy and cache
CN108292215B (zh) 用于加载-索引和预取-聚集操作的指令和逻辑
TWI739772B (zh) 處理器、用於安全指令執行管線之方法、及運算系統
CN107003921B (zh) 具有有限状态机控制的可重配置测试访问端口
TWI738682B (zh) 用於載入索引和散佈元件的處理器、方法及系統
TWI743064B (zh) 用於取得多重向量元素操作之指令及邏輯
US10346170B2 (en) Performing partial register write operations in a processor
TWI720056B (zh) 用於設置多重向量元素操作之指令及邏輯
TW201729078A (zh) 用於以通道為基礎的跨步儲存操作之指令及邏輯
TW201732546A (zh) 用於重複發生相鄰聚集的指令和邏輯
TW201732581A (zh) 用於載入索引與集中操作的指令及邏輯
US20160179549A1 (en) Instruction and Logic for Loop Stream Detection
TW201732619A (zh) 仿真的訊息通知中斷(msi)中斷處置
US20170177351A1 (en) Instructions and Logic for Even and Odd Vector Get Operations
TW201723810A (zh) 用於部分縮減操作之指令及邏輯
TW201732548A (zh) 用於向量置換的指令和邏輯
US10007519B2 (en) Instructions and logic for vector bit field compression and expansion
US10133582B2 (en) Instruction and logic for identifying instructions for retirement in a multi-strand out-of-order processor
US9928066B2 (en) Instruction and logic for encoded word instruction compression
US10795681B2 (en) Instruction length decoding
US10990395B2 (en) System and method for communication using a register management array circuit
TW201732549A (zh) 用於壓縮與旋轉的指令和邏輯
TW201729081A (zh) 用於以向量為基礎的位元操控之指令及邏輯