TWI590079B - 用於處理計算的向量格式的指令及邏輯 - Google Patents

用於處理計算的向量格式的指令及邏輯 Download PDF

Info

Publication number
TWI590079B
TWI590079B TW105126605A TW105126605A TWI590079B TW I590079 B TWI590079 B TW I590079B TW 105126605 A TW105126605 A TW 105126605A TW 105126605 A TW105126605 A TW 105126605A TW I590079 B TWI590079 B TW I590079B
Authority
TW
Taiwan
Prior art keywords
vector
instruction
processor
data
instructions
Prior art date
Application number
TW105126605A
Other languages
English (en)
Other versions
TW201717056A (zh
Inventor
查爾斯 洋特
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 TW201717056A publication Critical patent/TW201717056A/zh
Application granted granted Critical
Publication of TWI590079B publication Critical patent/TWI590079B/zh

Links

Classifications

    • 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/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • G06F30/23Design optimisation, verification or simulation using finite element methods [FEM] or finite difference methods [FDM]
    • 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/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • 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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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
    • 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
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • 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
    • G06F15/8053Vector processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2115/00Details relating to the type of the circuit
    • G06F2115/10Processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation

Description

用於處理計算的向量格式的指令及邏輯
本揭露關於處理邏輯、微處理器、及相關指令集架構領域,當由處理器或其他處理邏輯執行時,實施邏輯、數學、或其他函數運算。
多處理器系統變得愈來愈普遍。多處理器系統之應用包括一直到桌上計算之動態域分區。為利用多處理器系統,將執行之碼可分為多執行緒供各式處理實體執行。每一執行緒可相互平行執行。此外,為增加處理實體之效用,可採用亂序執行。當至指令之輸入可用時,亂序執行可執行指令。因而,在碼序列中較早出現之指令之前,可執行碼序列中較晚出現之指令。
100、600、1800‧‧‧系統
102、200、500、610、615、870、880、1000、1215、1710、1804‧‧‧處理器
104‧‧‧1級內部快取記憶體
106、145、164、208、210‧‧‧暫存器檔
108、142、162、462、1820‧‧‧執行單元
109、143‧‧‧封裝指令集
110‧‧‧處理器匯流排
112‧‧‧圖形控制器
114‧‧‧加速圖形埠(AGP)互連
116‧‧‧系統邏輯晶片
118‧‧‧高頻寬記憶體路徑
120、640、732、734、832、834、1140、1818‧‧‧記憶體
122‧‧‧系統輸入/輸出(I/O)
124‧‧‧資料儲存裝置
126‧‧‧無線收發器
128‧‧‧韌體集線器(快閃BIOS)
130‧‧‧I/O控制器集線器(ICH)
134‧‧‧網路控制器
140、160‧‧‧資料處理系統
141‧‧‧匯流排
144、165、228、1808‧‧‧解碼器
146‧‧‧同步動態隨機存取記憶體(SDRAM)控制
147‧‧‧靜態隨機存取記憶體(SRAM)控制
148‧‧‧叢發快閃記憶體介面
149‧‧‧個人電腦記憶體卡國際協會(PCMCIA)/緊湊型快 閃(CE)卡控制
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、572、574、1525‧‧‧快取記憶體
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‧‧‧封裝雙字
341‧‧‧半封裝
342‧‧‧單一封裝
343‧‧‧雙重封裝
344‧‧‧未簽署封裝位元組代表
345‧‧‧簽署封裝位元組代表
346‧‧‧未簽署封裝字代表
347‧‧‧簽署封裝字代表
348‧‧‧未簽署封裝雙字代表
349‧‧‧簽署封裝雙字代表
360、370、380‧‧‧運算碼格式
361、362、371、372、383、384、387、388‧‧‧欄位
363、373‧‧‧MOD欄位
364、365、374、375、385、390‧‧‧來源運算元識別符
366、376、386‧‧‧目的運算元識別符
378‧‧‧前綴位元組
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、1816‧‧‧引退單元
456、1812‧‧‧排程器單元
458‧‧‧實體暫存器檔單元
460‧‧‧執行叢集
464‧‧‧記憶體存取單元
470‧‧‧記憶體單元
472‧‧‧資料TLB單元
474‧‧‧資料快取記憶體單元
476‧‧‧2級(L2)快取記憶體單元
490‧‧‧處理器核心
502、902A-N、1406、1407、1814‧‧‧核心
503‧‧‧快取記憶體階層
506‧‧‧快取記憶體
508‧‧‧環狀互連單元
510‧‧‧系統代理器
512‧‧‧顯示引擎
514‧‧‧周邊組件互連高速圖形(PEG)
516‧‧‧直接媒體介面(DMI)
518、1218‧‧‧PCIe橋接器
520、1220‧‧‧記憶體控制器
522、1222‧‧‧連貫性邏輯
552‧‧‧記憶體控制單元
560‧‧‧圖形模組
565‧‧‧媒體引擎
570、1806‧‧‧前端
580‧‧‧亂序引擎
582、1282‧‧‧配置模組
584‧‧‧資源排程器
586‧‧‧資源
588‧‧‧重排序緩衝器
590‧‧‧非核心模組
595‧‧‧最後級快取記憶體
599‧‧‧隨機存取記憶體
620‧‧‧圖形記憶體控制器集線器(GMCH)
645‧‧‧顯示器
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、794、798‧‧‧匯流排控制器單元點對點(P-P)介面
780‧‧‧第二處理器
790、890‧‧‧晶片組
792、796、1214‧‧‧介面
800‧‧‧第三系統
815‧‧‧舊有I/O裝置
872、882‧‧‧I/O控制邏輯
900‧‧‧系統晶片
902‧‧‧互連單元
904A-N‧‧‧快取記憶體單元
906‧‧‧共享快取記憶體單元
908‧‧‧整合圖形邏輯
910‧‧‧應用處理器
910‧‧‧系統代理器單元
914‧‧‧整合記憶體控制器單元
916‧‧‧匯流排控制器單元
920‧‧‧媒體處理器
924、1015‧‧‧影像處理器
926‧‧‧音頻處理器
928、1020‧‧‧視訊處理器
930‧‧‧靜態隨機存取記憶體(SRAM)單元
932‧‧‧直接記憶體存取(DMA)單元
940‧‧‧顯示單元
1005‧‧‧中央處理單元
1010、1415‧‧‧圖形處理單元
1025‧‧‧USB控制器
1030‧‧‧UART控制器
1035‧‧‧SPI/SDIO控制器
1040‧‧‧顯示裝置
1045‧‧‧記憶體介面控制器
1050‧‧‧MIPI控制器
1055‧‧‧快閃記憶體控制器
1060‧‧‧雙資料速率(DDR)控制器
1065‧‧‧安全引擎
1070‧‧‧I2S/I2C控制器
1100‧‧‧儲存媒體
1110‧‧‧硬體或軟體模型
1120‧‧‧模擬軟體
1130‧‧‧儲存裝置
1150‧‧‧有線連接
1160‧‧‧無線連接
1165‧‧‧製造
1205‧‧‧程式
1210‧‧‧仿真邏輯
1302‧‧‧高階語言
1304‧‧‧x86編譯器
1306‧‧‧x86二元碼
1308‧‧‧替代指令集編譯器
1310、1311‧‧‧替代指令集二元碼
1312‧‧‧指令轉換器
1314‧‧‧不具x86指令集核心之處理器
1316‧‧‧具至少一x86指令集核心之處理器
1400‧‧‧指令集架構
1408‧‧‧L2快取記憶體控制
1409‧‧‧匯流排介面單元
1410‧‧‧L2快取記憶體
1410‧‧‧互連
1420‧‧‧視訊碼
1425‧‧‧液晶顯示器(LCD)視訊介面
1430‧‧‧用戶介面模組(SIM)介面
1435‧‧‧開機ROM介面
1440‧‧‧同步動態隨機存取記憶體(SDRAM)控制器
1445‧‧‧快閃控制器
1450‧‧‧串列周邊設備介面(SPI)主單元
1455‧‧‧電力控制
1460‧‧‧動態隨機存取記憶體
1465‧‧‧快閃記憶體
1470‧‧‧藍牙模組
1475‧‧‧高速3G數據機
1480‧‧‧全球定位系統模組
1485‧‧‧無線模組
1490‧‧‧行動產業處理器介面(MIPI)
1495‧‧‧高解析度多媒體介面(HDMI)
1500‧‧‧指令集架構
1510‧‧‧快取記憶體控制/匯流排介面單元
1511‧‧‧中斷控制及分佈單元
1512‧‧‧監聽控制單元
1513‧‧‧快取記憶體-快取記憶體轉換器
1514‧‧‧監聽過濾器
1515‧‧‧計時器
1516‧‧‧AC埠
1520‧‧‧匯流排介面單元
1521‧‧‧主要主介面
1522‧‧‧次要主介面
1530‧‧‧指令預取級
1530‧‧‧負載儲存單元
1531‧‧‧快速迴路模式
1532‧‧‧指令快取記憶體
1535‧‧‧分支預測單元
1536‧‧‧總體歷史
1537‧‧‧目標位址
1538‧‧‧返回堆疊
1540‧‧‧記憶體系統
1542‧‧‧資料快取記憶體
1543‧‧‧預取器
1544‧‧‧記憶體管理單元(MMU)
1545‧‧‧轉譯後備緩衝器(TLB)
1550‧‧‧雙指令解碼級
1555‧‧‧暫存器更名級
1556‧‧‧暫存器庫
1557‧‧‧分支
1560‧‧‧發出級
1561‧‧‧指令佇列
1565‧‧‧執行實體
1566‧‧‧ALU/乘法單元(MUL)
1567‧‧‧算術邏輯單元
1568‧‧‧浮點單元(FPU)
1569‧‧‧特定位址
1570‧‧‧寫回級
1575‧‧‧跡線單元
1580‧‧‧執行指令指標
1582‧‧‧引退指標
1600‧‧‧執行管線
1700‧‧‧電子裝置
1715‧‧‧低功率雙資料率(LPDDR)記憶體單元
1720‧‧‧驅動裝置
1722‧‧‧BIOS/韌體/快閃記憶體
1724‧‧‧顯示裝置
1725‧‧‧觸控螢幕
1730‧‧‧觸控墊
1735‧‧‧高速晶片組(EC)
1736‧‧‧鍵盤
1737‧‧‧風扇
1738‧‧‧信賴平台模組(TPM)
1739、1746‧‧‧熱感測器
1740‧‧‧感測器集線器
1741‧‧‧加速計
1742‧‧‧周圍光感測器(ALS)
1743‧‧‧羅盤
1744‧‧‧陀螺儀
1745‧‧‧近場通訊(NFC)單元
1750‧‧‧無線本機區域網路(WLAN)單元
1752‧‧‧藍牙單元
1754‧‧‧相機
1755‧‧‧全球定位系統(GPS)
1756‧‧‧無線廣域網路(WWAN)單元
1757‧‧‧用戶介面模組(SIM)卡
1760‧‧‧數位信號處理器
1762‧‧‧音頻編解碼器及D級放大器
1763‧‧‧揚聲器
1764‧‧‧頭戴式耳機
1765‧‧‧麥克風
1802、1804‧‧‧指令流
1803‧‧‧有限差分(FD)函數
1810‧‧‧動態二元翻譯器
1822‧‧‧三維原始資料
1902、2006、2106、2206‧‧‧模板
1903‧‧‧特定點
1904‧‧‧公式
2002、2004、2008、2010、2104、2108、2202、2204、2210‧‧‧圖表
2003‧‧‧讀取
2005‧‧‧SIMD向量讀取
2011‧‧‧表狀向量讀取
2102‧‧‧各向異性函數
2206‧‧‧表狀向量布局
2212‧‧‧運算
2300‧‧‧方法
藉由範例描繪實施例且不侷限於附圖之圖。
圖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為依據本揭露之實施例之處理計算之向量格式之系統1800之範例實施例的方塊圖;圖19描繪依據本揭露之實施例之範例有限差分函 數;圖20描繪依據本揭露之實施例之有限差分函數之範例運算;圖21描繪依據本揭露之實施例之各向異性函數之範例運算;圖22描繪依據本揭露之實施例之依據表狀向量讀取實施計算之系統之範例運算;以及圖23為依據本揭露之實施例之施加向量格式用於處理計算之方法之範例實施例的流程圖。
【發明內容及實施方式】
下列描述說明用於處理計算之向量格式的指令及處理邏輯。在一實施例中,該格式可包括表狀格式。在另一實施例中,該等計算可包括有限差分計算。例如,計算可包括微分方程式計算或估計、多維各向同性函數、或各向異性函數。然而,熟悉本技藝之人士將理解可無該等特定細節而實現實施例。此外,未詳細顯示若干熟知結構、電路等,以避免不必要地混淆本揭露之實施例。
儘管參照處理器描述下列實施例,其他實施例可應用於其他類型積體電路及邏輯裝置。本揭露之實施例的類似技術及學說可應用於可獲益自較高管線通量及改進性能之其他類型電路或半導體裝置。本揭露之實施例的學說可應用於實施資料調處之任何處理器或機器。然而,實施例不侷限於實施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有限公司、MIPS、或其被授權者或用戶可共享至少部分共同指令 集,但可包括不同處理器設計。例如,可以使用新或熟知技術之不同微架構的不同方式實施ISA之相同暫存器架構,包括專用實體暫存器、使用暫存器更名機構(例如使用暫存器別名表(RAT)、重排序緩衝器(ROB)及引退暫存器檔)之一或更多動態配置實體暫存器。在一實施例中,暫存器可包括一或更多暫存器、暫存器架構、暫存器檔、或可或不可由軟體規劃器定址之其他暫存器組。
指令可包括一或更多指令格式。在一實施例中,指令格式可標示各式欄位(若干位元、位元位置等)以指明將實施之運算及其上將實施運算之運算元。在進一步實施例中,可由指令範本(或次格式)進一步定義若干指令格式。例如,特定指令格式之指令範本可經定義而具有指令格式之欄位的不同子集及/或經定義而具有不同解譯之特定欄位。在一實施例中,可使用指令格式(及若有定義,指令格式的特定指令範本)表達指令,並指明或標示運算及其上將操作運算之運算元。
科學、金融、自動向量化一般用途、RMS(辨識、探掘、及合成)、及視覺及多媒體應用(例如2D/3D圖形、影像處理、視訊壓縮/解壓縮、語音辨識演算法及音頻調處)可能需要於大量資料項目上實施相同運算。在一實施例中,單指令多資料(SIMD)係指一類型指令,其致使處理器於多資料元件上實施運算。SIMD技術可用於處理器中,可邏輯地將暫存器中之位元劃分為若干固定大小或可變大小資料元件,各代表個別值。例如, 在一實施例中,64位元暫存器中之位元可組織為包含4個個別16位元資料元件之來源運算元,各代表個別16位元值。此類型資料可稱為「封裝」資料類型或「向量」資料類型,此資料類型之運算元可稱為封裝資料運算元或向量運算元。在一實施例中,封裝資料項目或向量可為儲存於單一暫存器內之一系列封裝資料元件,且封裝資料運算元或向量運算元可為SIMD指令(或「封裝資料指令」或「向量指令」)之來源或目的運算元。在一實施例中,SIMD指令詳細說明將於二來源向量運算元上實施之單一向量運算,以產生相同或不同大小之目的向量運算元(亦稱為結果向量運算元),具相同或不同若干資料元件,及相同或不同資料元件順序。
諸如Intel®CoreTM處理器採用之SIMD技術具有包括x86、MMXTM、資料流SIMD延伸(SSE)、SSE2、SSE3、SSE4.1、及SSE4.2指令之指令集;ARM處理器,諸如具有包括向量浮點(VFP)及/或NEON指令之指令集的ARM Cortex®系列處理器;及MIPS處理器,諸如中國科學院計算技術研究所(ICT)開發之龍芯(Loongson)系列處理器,已致能應用性能之顯著改進(CoreTM及MMXTM為加州聖克拉拉Intel公司之註冊商標或商標)。
在一實施例中,目的及來源暫存器/資料可為通用術語,以代表相應資料或運算之來源及目的。在若干實施例中,其可由暫存器、記憶體、或具有不同於所描繪 之其他名稱或功能之其他儲存區域實施。例如,在一實施例中,「DEST1」可為暫時儲存暫存器或其他儲存區域,反之「SRC1」及「SRC2」可為第一及第二來源儲存暫存器或其他儲存區域等。在其他實施例中,二或更多SRC及DEST儲存區域可相應於相同儲存區域(例如SMD暫存器)內之不同資料儲存元件。在一實施例中,例如將第一及第二原始資料上實施之運算結果寫回至做為目的暫存器之二來源暫存器之一,一來源暫存器亦可做為目的暫存器。
圖1A為依據本揭露之實施例之經形成而具處理器之示例電腦系統方塊圖,可包括執行單元以執行指令。系統100可包括組件,諸如處理器102,以採用包括邏輯之執行單元以依據本揭露實施演算法用於處理資料,諸如在文中所描述之實施例中。系統100可代表依據加州聖克拉拉Intel公司之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,可於系統100中處理器102及其他組件之間傳輸資料信號。系統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可指示系統100中處理器102、記憶體120、及其他組件間之資料信號,及於處理器匯流排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匯流排可包括高速I/O匯流排用於連接周邊設備至記憶體120、晶片組、及處理器102。範例可包括音頻控制器、韌體集線器(快閃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之一實施例提供用於行動、網路及/或無線通訊及處理核心159,其可實施SIMD運算,包括文字串比較運算。處理核心159可以各式音頻、視訊、成像及通訊演算法編程,包括離散轉換,諸如沃爾什-哈達瑪轉換、快速傅立葉轉換(FFT)、離散餘弦轉換(DCT)、及其個別反轉換;壓縮/解壓縮技術,諸如顏色空間轉換、視訊編碼運動估計或視訊解碼運動補 償;及調變/解調(MODEM)功能,諸如脈碼調變(PCM)。
圖1C描繪實施SIMD文字串比較運算之資料處理系統的其他實施例。在一實施例中,資料處理系統160可包括主要處理器166、SIMD協處理器161、快取記憶體167、及輸入/輸出系統168。輸入/輸出系統168可選地耦接至無線介面169。SIMD協處理器161可實施運算,包括依據一實施例之指令。在一實施例中,處理核心170可適於一或更多處理技術之製造,藉由充分詳細地代表機器可讀取媒體,可適於促進包括處理核心170之所有或部分資料處理系統160之製造。
在一實施例中,SIMD協處理器161包含執行單元162及一組暫存器檔164。主要處理器166之一實施例包含解碼器165以識別指令集163之指令,包括依據一實施例供執行單元162執行之指令。在其他實施例中,SIMD協處理器161亦包含至少部分解碼器165以解碼指令集163之指令。處理核心170亦可包括其餘電路(未顯示),其對於理解本揭露之實施例是不必要的。
在運算中,主要處理器166執行一連串資料處理指令,其控制一般類型之資料處理運算,包括與快取記憶體167及輸入/輸出系統168互動。嵌入一連串資料處理指令者可為SIMD協處理器指令。主要處理器166之解碼器165將該些SIMD協處理器指令識別為應將由附加SIMD協處理器161執行之類型。因此,主要處理器166 於協處理器匯流排166上發出該些SIMD協處理器指令(或代表SIMD協處理器指令之控制信號)。該些指令可由任何附加SIMD協處理器從協處理器匯流排166接收。在此例,SIMD協處理器161可接受及執行任何接收之給它的SIMD協處理器指令。
資料可經由無線介面169接收供SIMD協處理器指令處理。對一範例而言,可以數位信號的形式接收語音通訊,其可藉由SIMD協處理器指令處理以重新產生語音通訊之數位音頻樣本代表。對另一範例而言,可以數位位元流的形式接收壓縮之音頻及/或視訊,其可藉由SIMD協處理器指令處理以重新產生數位音頻樣本及/或運動視訊框。在處理核心170之一實施例中,主要處理器166及SIMD協處理器161可併入單處理核心170,其包含執行單元162、一組暫存器檔164、及解碼器165以識別包括依據一實施例之指令之指令集163的指令。
圖2為依據本揭露之實施例之處理器200之微架構的方塊圖,可包括邏輯電路以實施指令。在若干實施例中,依據一實施例之指令可經實施而於資料元件上操作,資料元件具有位元組、字、雙字、四倍字等大小,以及諸如單一及雙倍精密度整數及浮點資料類型之資料類型。在一實施例中,循序前端201可實施一部分處理器200,其可提取將執行之指令,及準備之後將在處理器管線中使用之指令。前端201可包括若干單元。在一實施例中,指令預取器226從記憶體提取指令並將指令饋送至指 令解碼器228,其依序解碼或解譯指令。例如,在一實施例中,解碼器將接收之指令解碼為一或更多運算,稱為機器可執行之「微指令(micro-instructions)」或「微運算(micro-operations)」。在其他實施例中,解碼器將指令解析為運算碼及相應資料及控制欄位,可供微架構用以實施依據一實施例之運算。在一實施例中,軌跡快取記憶體230可將解碼之微運算組裝為微運算佇列234中執行之編程有序序列或軌跡。當軌跡快取記憶體230遭遇複雜指令時,微碼ROM 232提供完成運算所需之微運算。
若干指令可轉換為單一微運算,反之其他則需若干微運算以完成完整運算。在一實施例中,若完成指令需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可包括旁通網路,可將不再寫入暫存器檔之完成的結果旁通或運送至新相依微運算。整數暫存器檔208及浮點暫存器檔210可相互傳遞資料。在一實施例中,整數暫存器檔208可分為二個別暫存器檔,一暫存器檔用於低階32位元資料及第二暫存器檔用於高階32位元資料。浮點暫存器檔210可包括128位元寬之條目,因為浮點指令典型地具有寬度從64至128位元之運算元。
執行方塊211可包含執行單元212、214、216、218、220、222、224。執行單元212、214、216、 218、220、222、224可執行指令。執行方塊211可包括暫存器檔208、210,其儲存微指令需執行之整數及浮點資料運算元值。在一實施例中,處理器200可包含若干執行單元:位址產生單元(AGU)212、AGU 214、快速ALU 216、快速ALU 218、緩慢ALU 220、浮點ALU 222、浮點移動單元224。在另一實施例中,浮點執行方塊222、224可執行浮點、MMX、SIMD、及SSE、或其他運算。在再另一實施例中,浮點ALU 222可包括64位元×64位元浮點除法器以執行除法、平方根、及餘數微運算。在各式實施例中,包含浮點值之指令可以浮點硬體處理。在一實施例中,ALU運算可遞送至高速ALU執行單元216、218。高速ALU 216、218可執行快速運算,具一半時脈週期之有效延遲。在一實施例中,大部分複雜整數運算前進至緩慢ALU 220,因為緩慢ALU 220可包括長延遲型運算之整數執行硬體,諸如乘數、移位、旗標邏輯、及分支處理。記憶體負載/儲存運算可由AGU 212、214執行。在一實施例中,整數ALU 216、218、220可於64位元資料運算元上實施整數運算。在其他實施例中,可實施ALU 216、218、220以支援各類資料位元大小,包括16、32、128、256等。類似地,可實施浮點單元222、224以支援具有各式寬度位元之運算元。在一實施例中,浮點單元222、224可於結合SIMD及多媒體指令之128位元寬封裝資料運算元上操作。
在一實施例中,微運算排程器202、204、206 於母負載結束執行之前調度相依運算。因為微運算可於處理器200中不確定地排程及執行,處理器200亦可包括邏輯以處理記憶體漏失。若資料負載於資料快取記憶體中漏失,在留下具暫時不正確資料之排程器的管線中存在相依運算。重播機構追蹤及重新執行使用不正確資料之指令。僅相依運算可能需要重播,且可允許獨立者完成。處理器之一實施例的排程器及重播機構亦可經設計而捕捉文字串比較運算之指令序列。
「暫存器」用詞可指板上處理器儲存位置,可用做部分指令以識別運算元。換言之,暫存器可為處理器外部(從程式員的觀點)可用者。然而,在若干實施例中,暫存器可能不侷限於特定電路類型。而是,暫存器可儲存資料、提供資料、及實施文中所描述之功能。文中所描述之暫存器可由使用任何數量不同技術之處理器內的電路實施,諸如專用實體暫存器、使用暫存器更名之動態配置實體暫存器、專用及動態配置實體暫存器之組合等。在一實施例中,整數暫存器儲存32位元整數資料。一實施例之暫存器檔亦包含八個封裝資料之多媒體SIMD暫存器。為了以下討論,暫存器可理解為資料暫存器,經設計以保持封裝資料,諸如來自加州聖克拉拉Intel公司以MMX技術致能之微處理器中64位元寬MMXTM暫存器(在若干狀況下亦稱為「mm」暫存器)。該些MMX暫存器可為整數及浮點形式,可與伴隨SIMD及SSE指令之封裝資料元件操作。類似地,關於SSE2、SSE3、SSE4、 或更先進者(通常稱為「SSEx」)技術之128位元寬XMM暫存器可保持該等封裝資料運算元。在一實施例中,在儲存封裝資料及整數資料中,暫存器不需於二資料類型之間區分。在一實施例中,整數及浮點可包含於相同暫存器檔或不同暫存器檔中。此外,在一實施例中,浮點及整數資料可儲存於不同暫存器或相同暫存器中。
在下列圖之範例中,可描述若干資料運算元。圖3A描繪依據本揭露之實施例之多媒體暫存器中各式封裝資料類型代表。圖3A描繪128位元寬運算元之封裝位元組310、封裝字320及封裝雙字(dword)330之資料類型。本範例之封裝位元組310格式可為128位元長,並包含16個封裝位元組資料元件。位元組可定義為例如8資料位元。每一位元組資料元件之資訊可儲存於位元組0之位元7至位元0、位元組1之位元15至位元8、位元組2之位元23至位元16、及最後位元組15之位元120至位元127中。因而,所有可用位元可於暫存器中使用。此儲存配置增加處理器之儲存效率。同樣地,,基於所存取之16個資料元件,一運算現在可於16個資料元件上平行實施。
通常,資料元件可包括個別資料項,儲存於單一暫存器或記憶體位置,具相同長度之其他資料元件。在關於SSEx技術之封裝資料序列中,儲存於XMM暫存器中之若干資料元件可為128位元,由個別資料元件之位元長度劃分。類似地,在關於MMX及SSE技術之封裝資 料序列中,儲存於MMX暫存器中之若干資料元件可為64位元,由個別資料元件之位元長度劃分。儘管圖3A中所描繪之資料類型可為128位元長,本揭露之實施例亦可以64位元寬或其他大小運算元操作。本範例之封裝字格式320可為128位元長及包含8個封裝字資料元件。每一封裝字包含16個資訊位元。圖3A之封裝雙字330格式可為128位元長及包含4個封裝雙字資料元件。每一封裝雙字資料元件包含32個資訊位元。封裝四倍字可為128位元長及包含二封裝四倍字資料元件。
圖3B描繪依據本揭露之實施例之可能暫存器中資料儲存格式。每一封裝資料可包括一個以上獨立資料元件。描繪三種封裝資料格式:半封裝341、單一封裝342、及雙重封裝343。半封裝341、單一封裝342、及雙重封裝343之一實施例包含固定點資料元件。對另一實施例而言,半封裝341、單一封裝342、及雙重封裝343之一或更多者可包含浮點資料元件。半封裝341之一實施例可為128位元長,包含8個16位元資料元件。單一封裝342之一實施例可為128位元長,包含4個32位元資料元件。雙重封裝343之一實施例可為128位元長,包含二個64位元資料元件。將理解的是該等封裝資料格式可進一步延伸至其他暫存器長度,例如96位元、160位元、192位元、224位元、256位元或更多。
圖3C描繪依據本揭露之實施例之多媒體暫存器中各式簽署及未簽署封裝資料類型代表。未簽署封裝位 元組代表344描繪SIMD暫存器中未簽署封裝位元組之儲存。每一位元組資料元件之資訊可儲存於位元組0之位元7至位元0、位元組1之位元15至位元8、位元組2之位元23至位元16、及最後位元組15之位元120至位元127。因而,所有可用位元可用於暫存器中。此儲存配置可增加處理器之儲存效率。同樣地,基於所存取之16個資料元件,一運算現在可以平行方式於16個資料元件上實施。簽署封裝位元組代表345描繪簽署封裝位元組之儲存。請注意,每一位元組資料元件之第八位元可為符號指標。未簽署封裝字代表346描繪字7至字0如何可儲存於SIMD暫存器中。簽署封裝字代表347可類似於暫存器中未簽署封裝字代表346。請注意,每一字資料元件之第16位元可為符號指標。未簽署封裝雙字代表348顯示雙字資料元件係如何儲存。簽署封裝雙字代表349可類似於暫存器中未簽署封裝雙字代表348。請注意,必要符號位元可為每一雙字資料元件之第32位元。
圖3D描繪運算編碼(運算碼)之實施例。此外,格式360可包括與來自加州聖克拉拉Intel公司之全球資訊網(www)intel.com/design/litcentr上的「IA-32 Intel架構軟體開發人員手冊卷2:指令集參考」中所描述之運算碼格式類型相應之暫存器/記憶體運算元定址模式。在一實施例中,指令可由欄位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之一或更多者編碼。每一指令可識別多達3個運算元位置,包括多達二個來源運算元識別符385及390及一目的運算元識別符386。協處理器之一實施例可於8個、16個、32個、及64個位元值上操作。在一實施例中,可於整數資料元件上實施指令。在若干實施例中,可有條件地使用條件欄位381執行指令。對若干實施例而言,原始資料大小可由欄位383編碼。在若干實施例中,可於SIMD欄位上實施零(Z)、負(N)、運送(C)、及溢流(V)檢測。對若干指令而言,飽和類型可由欄位384編碼。
圖4A為方塊圖,描繪依據本揭露之實施例之循序管線及暫存器更名級亂序發出/執行管線。圖4B為方塊圖,描繪依據本揭露之實施例之處理器中所包括之循序 架構核心及暫存器更名邏輯、亂序發出/執行邏輯。圖4A中實線方塊描繪循序管線,同時虛線方塊描繪暫存器更名亂序發出/執行管線。類似地,圖4B中實線方塊描繪循序架構邏輯,同時虛線方塊描繪暫存器更名邏輯及亂序發出/執行邏輯。
在圖4A中,處理器管線400可包括提取級402、長度解碼級404、解碼級406、配置級408、更名級410、排程(亦已知為調度或發出)級412、暫存器讀取/記憶體讀取級414、執行級416、寫回/記憶體-寫入級418、異常處理級422、及確認級424。
在圖4B中,箭頭標示二或更多單元間之耦接,箭頭方向標示該些單元間之資料流方向。圖4B顯示處理器核心490,包括耦接至執行引擎單元450之前端單元430,二者可耦接至記憶體單元470。
核心490可為精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、超長指令字(VLIW)核心、或混合或替代核心類型。在一實施例中,核心490可為專用核心,例如網路或通訊核心、壓縮引擎、圖形核心等。
前端單元430可包括耦接至指令快取記憶體單元434之分支預測單元432。指令快取記憶體單元434可耦接至指令轉譯後備緩衝器(TLB)436。TLB 436可耦接至指令提取單元438,其耦接至解碼單元440。解碼單元440可解碼指令並產生做為微運算、微碼登錄點、微指 令、其他指令、或其他控制信號之一或更多者之輸出,其可從原始指令解碼,或反映原始指令,或可源於原始指令。解碼器可使用各式不同機構實施。適當機構之範例包括但不侷限於查找表、硬體實施、可編程邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等。在一實施例中,指令快取記憶體單元434可進一步耦接至記憶體單元470中之2級(L2)快取記憶體單元476。解碼單元440可耦接至執行引擎單元450中之更名/配置器單元452。
執行引擎單元450可包括更名/配置器單元452,耦接至引退單元454及一組一或更多排程器單元456。排程器單元456代表任何數量不同排程器,包括保留站、中央指令視窗等。排程器單元456可耦接至實體暫存器檔單元458。每一實體暫存器檔單元458代表一或更多實體暫存器檔,其不同者儲存一或更多不同資料類型,諸如純量整數、純量浮點、封裝整數、封裝浮點、向量整數、向量浮點等、狀態(例如指令指標,其為將執行之下一指令的位址)等。實體暫存器檔單元458可被引退單元454重疊以描繪各式方式,其中可實施暫存器更名及亂序執行(例如使用一或更多重排序緩衝器及一或更多引退暫存器檔、使用一或更多未來檔、一或更多歷史緩衝器、及一或更多引退暫存器檔;使用暫存器映射及暫存器庫等)。通常,從處理器外側或從程式員觀點可見架構暫存器。暫存器可不侷限於任何已知特定電路類型。各式不同類型暫存器可為適當,只要如文中所描述儲存及提供資料 即可。適當暫存器之範例包括但不侷限於專用實體暫存器、使用暫存器更名之動態配置實體暫存器、專用及動態配置實體暫存器之組合等。引退單元454及實體暫存器檔單元458可耦接至執行叢集460。執行叢集460可包括一組一或更多執行單元462及一組一或更多記憶體存取單元464。執行單元462可實施各式運算(例如移位、加法、減法、乘法)及在各式資料類型上(例如純量浮點、封裝整數、封裝浮點、向量整數、向量浮點)。雖然若干實施例可包括若干執行單元專用於特定功能或功能組,其他實施例可僅包括一執行單元或均實施所有功能的多執行單元。排程器單元456、實體暫存器檔單元458、及執行叢集460顯示為可能複數,因為某實施例為某類型資料/運算創造個別管線(例如純量整數管線、純量浮點/封裝整數/封裝浮點/向量整數/向量浮點管線、及/或記憶體存取管線,各具有其本身排程器單元、實體暫存器檔單元、及/或執行叢集,在個別記憶體存取管線之狀況下,可實施某實施例其中僅此管線之執行叢集具有記憶體存取單元464)。亦應理解的是其中使用個別管線,該些管線之一或更多者可為亂序發出/執行,其餘則為有序。
記憶體存取單元464組可耦接至記憶體單元470,其可包括耦接至資料快取記憶體單元474之資料TLB單元472,資料快取記憶體單元474耦接至2級(L2)快取記憶體單元476。在一示例實施例中,記憶體存取單元464可包括負載單元、儲存位址單元、及儲存資 料單元,每一者可耦接至記憶體單元470中之資料TLB單元472。L2快取記憶體單元476可耦接至一或更多其他級快取記憶體,最終至主要記憶體。
藉由範例,示例暫存器更名亂序發出/執行核心架構可實施管線400如下:1)指令提取438可實施提取及長度解碼級402及404;2)解碼單元440可實施解碼級406;3)更名/配置器單元452可實施配置級408及更名級410;4)排程器單元456可實施排程級412;5)實體暫存器檔單元458及記憶體單元470可實施暫存器讀取/記憶體讀取級414;執行叢集460可實施執行級416;6)記憶體單元470及實體暫存器檔單元458可實施寫回/記憶體-寫入級418;7)各式單元可涉及異常處理級422之性能;及8)引退單元454及實體暫存器檔單元458可實施確認級424。
核心490可支援一或更多指令集(例如x86指令集(具已添加較新版本之若干延伸);加州桑尼維爾之MIPS Technologies的MIPS指令集;加州桑尼維爾之ARM Holdings的ARM指令集(具可選的其餘延伸,諸如NEON))。
應理解的是核心可以各類方式支援多執行緒(執行二或更多平行運算或執行緒組)。例如,包括時間切割多執行緒、同步多執行緒(其中單一實體核心為實體核心為同步多執行緒之每一執行緒提供邏輯核心)、或其組合可實施多執行緒支援。該組合可包括例如時間切割提 取及解碼及同步多執行緒,以下諸如Intel®超執行緒技術。
雖然暫存器更名可於亂序執行之背景中描述,應理解的是暫存器更名可用於循序架構中。雖然描繪之處理器實施例亦可包括個別指令及資料快取記憶體單元434/474及共享之L2快取記憶體單元476,其他實施例可具有用於指令及資料二者之單一內部快取記憶體,例如1級(LI)內部快取記憶體或多級內部快取記憶體。在若干實施例中,系統可包括內部快取記憶體及核心及/或處理器外部之外部快取記憶體的組合。在其他實施例中,所有快取記憶體可為核心及/或處理器外部。
圖5A為依據本揭露之實施例之處理器500的方塊圖。在一實施例中,處理器500可包括多核心處理器。處理器500可包括系統代理器510,通訊地耦接至一或更多核心502。此外,核心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可包括介面1214,用於圖形之通訊匯流排。在一實施例中,介面1214可由周邊組件互連高速(PCIe)實施。在進一步實施例中,介面1214可由周邊組件互連高速圖形(PEG)實施。系統代理器510可包括直接媒體介面(DMI)516。DMI 516可提供母板或電腦系統其他部分上不同橋接器間之鏈路。系統代理器510可包括PCIe橋接器1218用於提供PCIe鏈路至計算系統之其他元件。 PCIe橋接器1218可使用記憶體控制器1220及連貫性邏輯1222實施。
核心502可以任何適當方式實施。在架構及/或指令集方面,核心502可為同質或異質。在一實施例中,若干核心502可為循序,同時其他者可為亂序。在另一實施例中,二或更多核心502可執行相同指令集,同時其他者僅可執行指令集之子集或不同指令集。
處理器500可包括通用處理器,諸如可得自加州聖克拉拉之Intel公司之CoreTM i3、i5、i7、2 Duo及Quad、XeonTM、ItaniumTM、XScaleTM或StrongARMTM處理器。可從另一公司提供處理器500,諸如ARM Holdings有限公司、MIPS等。處理器500可為專用處理器,例如網路或通訊處理器、壓縮引擎、圖形處理器、協處理器、嵌入式處理器等。處理器500可於一或更多晶片上實施。處理器500可為使用任何若干處理技術之一或更多基板的一部分及/或於其上實施,處理技術例如BiCMOS、CMOS、或NMOS。
在一實施例中,快取記憶體506之特定一者可由多個核心502共享。在另一實施例中,快取記憶體506之特定一者可專用於一核心502。快取記憶體506配置至核心502可由快取記憶體控制器或其他適當機構處理。藉由實施特定快取記憶體506之時間分割,快取記憶體506之特定一者可由二或更多核心502共享。
圖形模組560可實施整合圖形處理子系統。 在一實施例中,圖形模組560可包括圖形處理器。此外,圖形模組560可包括媒體引擎565。媒體引擎565可提供媒體編碼及視訊解碼。
圖5B為依據本揭露之實施例之核心502之範例實施的方塊圖。核心502可包括前端570,通訊地耦接至亂序引擎580。核心502可經由快取記憶體階層503而通訊地耦接至處理器500之其他部分。
如以上所描述,可以任何適當方式實施前端570,諸如完全或部分藉由前端201。在一實施例中,前端570可經由快取記憶體階層503與處理器500之其他部分通訊。在進一步實施例中,前端570可從處理器500部分提取指令,及準備指令之後用於處理器管線中而通過亂序執行引擎580。
如以上所描述,可以任何適當方式實施亂序執行引擎580,諸如完全或部分藉由亂序執行引擎203。亂序執行引擎580可準備從前端570接收之指令用於執行。亂序執行引擎580可包括配置模組1282。在一實施例中,配置模組1282可配置處理器500之資源或其他資源,諸如暫存器或緩衝器,以執行特定指令。配置模組1282可於排程器中實施配置,諸如記憶體排程器、快速排程器、或浮點排程器。該等排程器可於圖5B以資源排程器584代表。如以上結合圖2所描述,可完全或部分藉由配置邏輯實施配置模組1282。資源排程器584可依據特定資源來源之預備狀態及執行指令所需執行資源之可用 性,決定何時備妥指令執行。如以上所討論,可藉由例如排程器202、204、206實施資源排程器584。資源排程器584可排程於一或更多資源上執行指令。在一實施例中,該等資源可為核心502內部,並可描繪為例如資源586。在另一實施例中,該等資源可為核心502外部,並可由例如快取記憶體階層503存取。資源可包括例如記憶體、快取記憶體、暫存器檔、或暫存器。核心502內部資源可由圖5B中資源586代表。必要時,寫入至或讀取自資源586之值可經由例如快取記憶體階層503而與處理器500之其他部分整合。由於指令做為簽署資源,可置入重排序緩衝器588。重排序緩衝器588可追蹤指令,因為其係依據處理器500之任何適當標準執行及可選擇地重新整理其執行。在一實施例中,重排序緩衝器588可識別可獨立執行之指令或一連串指令。該等指令或一連串指令可平行於其他該等指令執行。核心502中之平行執行可藉由任何適當數量個別執行方塊或虛擬處理器實施。在一實施例中,共享之資源-諸如記憶體、暫存器、及快取記憶體-可存取至特定核心502內之多個虛擬處理器。在其他實施例中,共享之資源可對處理器500內之多個處理實體存取。
快取記憶體階層503可以任何適當方式實施。例如,快取記憶體階層503可包括一或更多較低或中級快取記憶體,諸如快取記憶體572、574。在一實施例中,快取記憶體階層503可包括LLC 595,通訊地耦接至快取記憶體572、574。在另一實施例中,LLC 595可於可 存取處理器500之所有處理實體的模組590中實施。在進一步實施例中,模組590可於Intel公司之處理器的非核心模組中實施。模組590可包括執行核心502所需之處理器500的部分或子系統,但可不於核心502內實施。除了LLC 595之外,模組590可包括例如硬體介面、記憶體一致性協調器、處理器間互連、指令管線、或記憶體控制器。可用於處理器500之存取RAM 599可經由模組590實施,更具體地,LLC 595。此外,核心502之其他狀況可類似地存取模組590。經由模組590可部分促進核心502之協調狀況。
圖6-8可描繪適於包括處理器500之示例系統,同時圖9可描繪示例系統晶片(SoC),其可包括一或更多核心502。技藝中已知之其他系統設計及實施,用於膝上型電腦、桌上型電腦、手持式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經由諸如前側匯流排(FSB)695之多點匯流排而與處理器610、615通訊。
此外,GMCH 620可耦接至顯示器645(諸如平板顯示器)。在一實施例中,GMCH 620可包括整合圖形加速器。GMCH 620可進一步耦接至輸入/輸出(I/O)控制器集線器(ICH)650,其可用以將各式周邊裝置耦接至系統600。外部圖形裝置660可包括耦接至ICH 650連同另一周邊裝置670之個別圖形裝置。
在其他實施例中,其餘或不同處理器亦可呈現於系統600中。例如,其餘處理器610、615可包括與處理器610相同之其餘處理器;與處理器610異質或不對稱之其餘處理器;加速器(諸如圖形加速器或數位信號處理(DSP)單元);場可編程閘極陣列;或任何其他處理器。在各種度量指標方面,實體資源610、615之間可存 在各類差異,包括架構、微架構、熱、功耗特性等。該些差異可有效地顯示本身如處理器610、615間之不對稱及異質性。對至少一實施例而言,各式處理器610、615可駐於相同晶粒封裝中。
圖7描繪依據本揭露之實施例之第二系統700之方塊圖。如圖7中所示,多處理器系統700可包括點對點互連系統,並可包括經由點對點互連750耦接之第一處理器770及第二處理器780。每一處理器770及780可為處理器500之若干版本,如一或更多處理器610、615。
雖然圖7可描繪二個處理器770、780,將理解的是本揭露之範圍不侷限於此。在其他實施例中,一或更多其餘處理器可呈現於特定處理器中。
顯示處理器770及780分別包括整合記憶體控制器單元772及782。處理器770亦可包括做為其匯流排控制器單元點對點(P-P)介面776及778之一部分;類似地,第二處理器780可包括P-P介面786及788。處理器770、780可經由點對點(P-P)介面750,使用P-P介面電路778、788而交換資訊。如圖7中所示,IMC 772及782可將處理器耦接至個別記憶體,即記憶體732及記憶體734,其在一實施例中可為本機附加至個別處理器之主要記憶體的一部分。
處理器770、780可各經由個別P-P介面752、754,使用點對點介面電路776、794、786、798而與晶片組790交換資訊。在一實施例中,晶片組790亦可 經由高性能圖形介面739而與高性能圖形電路738交換資訊。
共享之快取記憶體(未顯示)可包括於任一處理器中或二個處理器外側,再經由P-P互連而與處理器連接,使得若處理器置於低電力模式,任一或二個處理器之本機快取記憶體資訊可儲存於共享快取記憶體中。
晶片組790可經由介面796而耦接至第一匯流排716。在一實施例中,第一匯流排716可為周邊組件互連(PCI)匯流排,或諸如PCI高速匯流排或另一第三代I/O互連匯流排之匯流排,儘管本揭露之範圍不侷限於此。
如圖7中所示,各式I/O裝置714可耦接至第一匯流排716,連同匯流排橋接器718,其將第一匯流排716耦接至第二匯流排720。在一實施例中,第二匯流排720可為低接腳數(LPC)匯流排。在一實施例中,各式裝置可耦接至第二匯流排720,包括例如鍵盤及/或滑鼠722、通訊裝置727及儲存單元728,諸如磁碟機或其他大量儲存裝置,其可包括指令/碼及資料730。此外,音頻I/O 724可耦接至第二匯流排720。請注意,其他架構亦可。例如,取代圖7之點對點架構,系統可實施多點匯流排或其他該等架構。
圖8描繪依據本揭露之實施例之第三系統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核心,可許可或販售予各式客戶或被授權者,諸如德州儀器、Qualcomm、Apple、或Samsung,並於該些客戶或被授權者生產之處理器中實施。
圖11描繪依據本揭露之實施例之方塊圖,其描繪IP核心之發展。儲存裝置1130可包括模擬軟體1120及/或硬體或軟體模型1110。在一實施例中,代表IP核心設計之資料可經由記憶體1140(例如硬碟)、有線連接(例如網際網路)1150或無線連接1160而提供予儲存裝置1130。模擬工具及模型產生之IP核心資訊接著可傳輸至製造廠,而由第三方製造以實施依據至少一實施例之至少一指令。
在若干實施例中,一或更多指令可相應於第一類型或架構(例如x86)並於不同類型或架構(例如ARM)之處理器上翻譯或仿真。因此,依據一實施例之指令可於任何處理器或處理器類型上實施,包括ARM、x86、MIPS、GPU、或其他處理器類型或架構。
圖12描繪依據本揭露之實施例之第一類型指令如何可由不同類型之處理器仿真。在圖12中,程式1205包含若干指令可實施相同或實質上相同功能,如依據一實施例之指令。然而,程式1205之指令可為與處理器1215不同或不相容之類型及/或格式,意即程式1205 中類型之指令無法由處理器1215直接執行。然而,基於仿真邏輯1210之協助,程式1205之指令可翻譯為可由處理器1215直接執行之指令。在一實施例中,仿真邏輯可以硬體體現。在另一實施例中,仿真邏輯可以實體機器可讀取媒體體現,包含軟體將程式1205中類型之指令翻譯為可由處理器1215直接執行之類型。在其他實施例中,仿真邏輯可為固定功能或可編程硬體及儲存於實體機器可讀取媒體之程式的組合。在一實施例中,處理器包含仿真邏輯,反之,在其他實施例中,仿真邏輯存在於處理器外側,並可由第三方提供。在一實施例中,處理器可負載以實體機器可讀取媒體中體現之仿真邏輯,包含軟體藉由與處理器相關或包含於其中之微碼或韌體執行。
圖13為方塊圖,對照依據本發明之實施例之軟體指令轉換器的使用,將來源指令集之二元指令轉換為目標指令集之二元指令。在所描繪之實施例中,指令轉換器為軟體指令轉換器,儘管指令轉換器可替代地以軟體、韌體、硬體、或其各式組合實施。圖13顯示高階語言1302中之程式可使用x86編譯器1304編譯,以產生x86二元碼1306,可由具至少一x86指令集核心1316之處理器直接執行。具至少一x86指令集核心1316之處理器,代表可藉由相容地執行或處理下列目標,而實施與具至少一x86指令集核心之Intel處理器實質上相同功能的任何處理器:(1)Intel x86指令集核心之指令集的實質部分或(2)目標在具至少一x86指令集核心之Intel處理器上 運行之應用或其他軟體的目標碼版本,以便達成與具至少一x86指令集核心之Intel處理器實質上相同結果。x86編譯器1304代表可操作以產生x86二元碼1306(例如目標碼)之編譯器,具或不具其餘鏈結處理,而在具至少一x86指令集核心1316之處理器上執行。類似地,圖13顯示高階語言1302中之程式可使用替代指令集編譯器1308編譯以產生替代指令集二元碼1310,可由不具至少一x86指令集核心1314之處理器直接執行(例如具執行加州桑尼維爾之MIPS Technologies之MIPS指令集及/或執行加州桑尼維爾之ARM Holdings之ARM指令集之核心的處理器)。
指令轉換器1312用以將x86二元碼1306轉換為替代指令集二元碼1311,可由不具x86指令集核心1314之處理器直接執行。轉換碼可或不可與源自替代指令集編譯器1308之替代指令集二元碼1310相同;然而,轉換碼將完成相同一般運算由來自替代指令集之指令編造。因而,經由仿真、模擬或任何其他處理,指令轉換器1312代表軟體、韌體、硬體、或其組合,允許不具有x86指令集處理器或核心之處理器或其他電子裝置執行x86二元碼1306。
圖14為依據本揭露之實施例之處理器之指令集架構1400的方塊圖。指令集架構1400可包括任何適當數量或種類之組件。
例如,指令集架構1400可包括處理實體,諸 如一或更多核心1406、1407及圖形處理單元1415。核心1406、1407可經由任何適當機構而與指令集架構1400之其餘部分通訊地耦接,諸如經由匯流排或快取記憶體。在一實施例中,核心1406、1407可經由L2快取記憶體控制1408,其可包括匯流排介面單元1409及L2快取記憶體1410,而通訊地耦接。核心1406、1407及圖形處理單元1415可相互通訊地耦接,及經由互連1410而通訊地耦接至指令集架構1400的其餘部分。在一實施例中,圖形處理單元1415可使用視訊碼1420,其定義編碼及解碼特定視訊信號進行輸出之方式。
指令集架構1400亦可包括任何數量或種類之介面、控制器、或其他機構,用於與電子裝置或系統之其他部分介接或通訊。該等機構可促進與例如周邊設備、通訊裝置、其他處理器、或記憶體互動。在圖14之範例中,指令集架構1400可包括液晶顯示器(LCD)視訊介面1425、用戶介面模組(SIM)介面1430、開機ROM介面1435、同步動態隨機存取記憶體(SDRAM)控制器1440、快閃控制器1445、及串列周邊設備介面(SPI)主單元1450。LCD視訊介面1425可提供來自例如GPU 1415及經由例如行動產業處理器介面(MIPI)1490或高解析度多媒體介面(HDMI)1495之視訊信號輸出至顯示裝置。該顯示裝置可包括例如LCD。SIM介面1430可提供至或自SIM卡或裝置之存取。SDRAM控制器1440可提供至或自記憶體之存取,諸如SDRAM晶片或模組。快 閃控制器1445可提供至或自記憶體之存取,諸如快閃記憶體或RAM之其他狀況。SPI主單元1450可提供至或自通訊模組之存取,諸如藍牙模組1470、高速3G數據機1475、全球定位系統模組1480、或實施諸如802.11之通訊標準的無線模組1485。
圖15為依據本揭露之實施例之處理器之指令集架構1500之更詳細方塊圖。指令架構1500可實施指令集架構1400之一或更多方面。此外,指令集架構1500可描繪用於執行處理器內之指令的模組及機構。
指令架構1500可包括記憶體系統1540,通訊地耦接至一或更多執行實體1565。此外,指令架構1500可包括快取記憶體及匯流排介面單元,諸如單元1510,通訊地耦接至執行實體1565及記憶體系統1540。在一實施例中,可藉由一或更多級執行實施指令載入執行實體1565。該些級可包括例如指令預取級1530、雙指令解碼級1550、暫存器更名級1555、發出級1560、及寫回級1570。
在另一實施例中,記憶體系統1540可包括引退指標1582。引退指標1582可儲存識別最後引退指令之程式令(PO)的值。引退指標1582可藉由例如引退單元454設定。若再無指令引退,引退指標1582可包括空值。
執行實體1565可包括任何適當數量及種類機構,藉此處理器可執行指令。在圖15之範例中,執行實 體1565可包括ALU/乘法單元(MUL)1566、ALU 1567、及浮點單元(FPU)1568。在一實施例中,該等實體可利用特定位址1569內包含之資訊。與級1530、1550、1555、1560、1570組合之執行實體1565可共同形成執行單元。
單元1510可以任何適當方式實施。在一實施例中,單元1510可實施快取記憶體控制。在該等實施例中,單元1510可因而包括快取記憶體1525。在進一步實施例中,快取記憶體1525可實施為L2統一快取記憶體,具任何適當大小,諸如0、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所需之資訊。在一實施例中,記憶體系統1540可包括負載儲存單元1530,用於儲存諸如緩衝器寫入至記憶體或暫存器或從記憶體或暫存器讀回之資訊。在另一實施例中,記憶體系統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中該等映射之標示。當接收及發送結果至發出級1560時,暫存器更名級1555可改變指令。
發出級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,可實施乘法及除法運算。該等運算可於4個時脈週期中實施。在1675,可實施至暫存器或管線1600之其他部分之載入及儲存運算。運算可包括載入及儲存位址。該等運算可於4個時脈週期中實施。在1680,可視需要由1655-1675之結果運算實施寫回運算。
圖17為依據本揭露之實施例之利用處理器1710之電子裝置1700的方塊圖。電子裝置1700可包括例如筆記型電腦、超筆電、電腦、塔型伺服器、機架型伺服器、刀鋒型伺服器、膝上型系統、桌上型電腦、平板電腦、行動裝置、電話、嵌入式電腦、或任何其他適當電子裝置。
電子裝置1700可包括處理器1710,通訊地耦接至任何適當數量或種類之組件、周邊設備、模組、或裝置。該等耦接可藉由任何適當種類之匯流排或介面完成,諸如I2C匯流排、系統管理匯流排(SMBus)、低接腳數(LPC)匯流排、SPI、高解析度音頻(HDA)匯流排、 串列先進技術附著(SATA)匯流排、USB匯流排(版本1、2、3)、或通用非同步接收器/傳輸器(UART)匯流排。
該等組件可包括例如顯示裝置1724、觸控螢幕1725、觸控墊1730、近場通訊(NFC)單元1745、感測器集線器1740、熱感測器1746、高速晶片組(EC)1735、信賴平台模組(TPM)1738、BIOS/韌體/快閃記憶體1722、數位信號處理器1760、諸如固態硬碟(SSD)或硬碟機(HDD)之驅動裝置1720、無線本機區域網路(WLAN)單元1750、藍牙單元1752、無線廣域網路(WWAN)單元1756、全球定位系統(GPS)、諸如USB 3.0相機之相機1754、或以例如LPDDR3標準實施之低功率雙資料率(LPDDR)記憶體單元1715。該些組件均可以任何適當方式實施。
此外,在各式實施例中,其他組件可經由以上討論之組件而通訊地耦接至處理器1710。例如,加速計1741、周圍光感測器(ALS)1742、羅盤1743、及陀螺儀1744可通訊地耦接至感測器集線器1740。熱感測器1739、風扇1737、鍵盤1736、及觸控墊1730可通訊地耦接至EC 1735。揚聲器1763、頭戴式耳機1764、及麥克風1765可通訊地耦接至音頻單元1764,其依序可通訊地耦接至DSP 1760。音頻單元1764可包括例如音頻編解碼器及D級放大器。SIM卡1757可通訊地耦接至WWAN單元1756。諸如WLAN單元1750及藍牙單元1752之組件 以及WWAN單元1756可以下一代形狀因素(NGFF)實施。
本揭露之實施例包含用於處理計算之向量格式的指令及邏輯。在一實施例中,該等計算可包括有限差分計算。例如,該等計算可包括多維微分方程式計算或估計、各向同性計算、或各向異性計算。在另一實施例中,該向量格式可包括表狀向量格式。在再另一實施例中,計算可包括需要來自多維數中彼此相鄰之多重疊資料點之輸入的計算。圖18為依據本揭露之實施例之用於處理計算之向量格式之系統1800之範例實施例的方塊圖。計算可由例如處理器1804處理。系統1800可包括任何適當數量及種類之元件以實施文中所描述之功能性。此外,儘管系統1800之特定元件於文中可描述為實施特定功能,系統1800之任何適當部分可實施文中所描述之功能性。
在一實施例中,用於處理計算之向量格式可施加於由處理器1804接收之指令。由處理器1804接收之指令可包括指令流1802中者,其可由編譯器、翻譯器、或其他適當來源產生。指令流1804可包括有限差分(FD)計算或函數之命令,諸如n維各向同性、各向異性、或微分方程式函數。指令流1804可包括針對特定資料點需要來自彼此線性相鄰之多資料點及多維數之輸入之函數的命令。在各式實施例中,「多維數」可代表由原始資料代表之物理實體或問題空間域。當處理器1804內操縱及處理時,多域可視需要平坦為真實資料結構以便實施 電腦運算。命令可稱為FD函數1803。在該實施例中,處理器1804可藉由解碼、解譯實施FD函數1803之執行,或藉由增加向量格式化運算而實施FD函數1803。該等向量格式化運算可藉由處理器1804之任何適當部分實施,諸如藉由前端1806、解碼器1808、或動態二元翻譯器1816,或未顯示之其他元件,諸如即時編譯器或翻譯器、最佳化器、或特殊協處理器或執行單元。在另一實施例中,處理計算之向量格式可於指令抵達處理器1804之前施加於FD函數1803。向量格式化可由編譯器、翻譯器、最佳化器、或其他適當實體應用。
處理器1804可實施FD函數1803、其向量格式化運算、以及其他指令之處理。處理器1804可部分由任何處理器核心、邏輯處理器、處理器、或諸如圖1-17中所描繪之其他處理實體實施。在各式實施例中,處理器1804可包括前端1806,包括提取單元以從快取記憶體、記憶體、或其他來源提取指令,以及解碼器1808以解碼指令。處理器1804亦可包括排程器以決定指令時序、指令順序、及指令至核心1814或執行單元1820之配置。處理器1804亦可包括許多類型及種類之執行單元1820或核心1814以執行指令。該等執行單元可包括例如分支執行單元、整數算術執行單元(例如ALU)、浮點算術執行單元(例如FPU)及記憶體存取執行單元。此外,處理器1804可包括引退單元1816以確認針對例如暫存器、快取記憶體、或記憶體1818之成功執行結果。處理器1804可 包括未顯示之任何其他適當組件,諸如配置單元以保留別名資源。在各式實施例中,處理器1804可利用微碼以執行利用儲存於處理器1804之晶粒內之非揮發性機器可讀取媒體(諸如唯讀記憶體)上的微運算,而使執行單元1820實施指令之所欲運算。
如以上所討論,FD函數1803可包括向量格式化運算以實施指令流1802中之FD函數1803,或做為處理器1804中解譯、解碼、或評估FD函數1803之結果。任何適當向量格式化運算、讀取、或其他指令可增加至指令流1802,或解碼及增加至FD函數1803,因為其將在處理器1804中執行。可進行格式化運算、讀取、或其他指令之特定選擇及順序,以實施特定FD函數1803及其特定參數之執行。在一實施例中,該等格式化運算可包括函數將資料讀入表狀向量。在另一實施例中,該等格式化運算可包括函數以依據特定FD函數1803及其參數之需要,而校準執行之表狀向量。在再另一實施例中,該等格式化運算可包括函數以依據特定FD函數1803及其參數之需要,而置換執行之表狀向量。
在一實施例中,當FD函數1803抵達處理器1804時,可不包括該等格式化運算而具體地實施其執行。在另一實施例中,可編譯FD函數1803,並於其置入指令流1802之前,增加該等格式化運算。
如以上所描述,FD函數1803之函數可包括例如n維FD、各向同性、各向異性、或微分方程式近似 函數。FD函數可包括微分方程式之解的數值方案。在另一實施例中,可使用需要單點計算並從多維數中彼此相鄰之資料點輸入之函數。任何該些函數可用於模擬大資料集。該等函數可用於高性能計算以模擬例如能量探勘中之地質形成,或任何其他適當應用。該些函數之實施可需要極大量浮點計算及高記憶體頻寬。FD函數可需要跨越代表資料之大記憶體空間之數值模板應用。該等資料可包括實際運行資料。因而,FD函數中單點計算可需要存取每一維中多項資料。對每一維的FD函數1803而言,FD函數可包括計算其單點結果必要之輸入值範圍。該等範圍可能並非連續。例如,第16階二維模板可需要33個輸入值,以於單一時間步驟中計算每一新值。整個基於FD之問題的解可能需要計算數十億個點。處理器1804中之SIMD向量化可允許多點平行計算。然而,如以下所示,SIMD向量化未減少需要讀取之資料,且本身可能並未類似地影響必須進行以實施FD函數執行之讀取量。在各式實施例中,施加於FD函數1803之向量格式化可減少匯集資料供FD函數1803執行所需之讀取量。
圖18描繪範例三維原始資料1822。該等資料1822可駐於任何適當地方,包括記憶體中或可由處理器1804存取之另一位置中。資料1822可能過大而無法完整地讀取及儲存於處理器1804之快取記憶體內。FD函數1803可處理資料1822以決定所希望函數之結果。如以上所討論,在特定位置(x0,y0,z0)之FD函數1803的計算 可能需要來自維數x、y、及z之每一者之原始資料1822之範圍(連續或不連續)的輸入。為獲得該等輸入,在(A)來自原始資料1822之每一該值必須讀取。在(B),該等值可用以計算FD函數1803之結果值。在一實施例中,可使用SIMD向量化運算平行計算FD函數1803之多值。
圖19描繪依據本揭露之實施例之範例FD函數。模板1902為特定點1903之範例FD函數代表,需要決定x方向之下4個值及先前4個值、y方向之下4個值及先前4個值、及z方向之下4個值及先前4個值。計算FD函數1803之特定點必要之值的映射可稱為遮罩(mask)或模板(stencil)。圖19中亦指明各向同性函數之範例公式1904。
圖20描繪依據本揭露之實施例之FD函數的範例運算。圖表2002描繪執行FD函數1803可用到之單點(5,5)。單點可僅為FD函數1803計算將用到之數百萬或更多點之一。
圖表2004描繪模板2006,其描繪計算二維第8階各向同性FD函數必須讀取之值。三維函數或更高階(諸如第16階)函數將需較大模板。對圖20中所考量二維第8階各向同性FD函數而言,可考量原始資料中特定點之上4個值、之下4個值、右邊4個值、及左邊4個值,以發現FD函數之結果。
為讀取模板2006之該些值,在(A)中,可 能需進行個別資料點之讀取2003,共需17個讀取以決定計算FD函數之(5,5)所需之值。在(B)中使用SIMD向量讀取2005,可能一次需將一個以上值讀入值之向量。該等SIMD向量可依據處理器1804之架構及部件定義。例如,存在16之長度的SIMD向量讀取,各具x方向之連續指標。讀取之值可相應於指定之位置,以及依循向量方向之15個值。使用SIMD向量讀取2005,原始資料中相應於模板2006之值於11個向量讀取中讀取。若範例FD函數為三維,將為離開頁面(沿z方向)之值進行另4個讀取,以及進入頁面之值進行另4個讀取。此外,藉由該些讀取可匯集更多資料,使得可促進向量平行同步執行。圖表2006中描繪前9個讀取,圖表2008中描繪第10個讀取,及圖表2010中描繪第11個讀取。對第16階各向同性2-D FD函數而言,需要33個輸入資料值。SIMD向量讀取2005之19個不同執行可用以輸入該等資料。因為向量化係以單一方向進行,可沿向量化方向獲得效率(在圖表2006、2008、2010之範例中為x方向),但多個讀取必須以其他方向進行。
儘管SIMD向量讀取2005可包括16個值之可能平行讀取,SIMD向量讀取2005無法一次讀取任何可能的一組16個值。SIMD向量讀取2005可平行讀取於單一快取記憶體線路內校準的16個元件。在圖表2006之範例中,一校準可在第5行,同時下一校準可在第21行。SIMD向量讀取2005可讀取一區塊中之該範圍。因此,圖 表2006中左「臂」之讀取現在可顯示處理器實際採用之完全校準。事實上該讀取可為-11行,並通過第4行。因此,19個不同讀取需充分涵蓋模板。
在一實施例中,向量格式化可施加於執行FD函數之讀取資料,使得資料以一個以上維數被向量化,諸如二維或三維。該等格式化可包括表狀向量讀取2011格式,諸如(C)所示。在另一實施例中,可以一個以上維數施加向量格式化,使得資料以一個以上維數讀取。
表狀向量讀取2011格式可以任何適當方式施加於原始資料及模板2006。在一實施例中,表狀向量讀取2011可施加於特定點,其中,可讀取x方向之下4個值及y方向之下4個值。表狀向量讀取2011之大小可關於處理器1804之SIMD向量讀取2005之可用大小。例如,表狀向量讀取2011可為16個值。若支援64個值之向量讀取,表狀向量讀取2011可包括8 x 8個二維讀取。若支援非完全平方(諸如32個值)之向量讀取,可藉由例如8 x 4個二維讀取實施表狀向量讀取2011。可使用表狀向量讀取2011之任何適當布局。例如,可使用2 x 8個布局取代圖20中所描繪之4 x 4個布局。在另一範例中,16個元件SIMD可用以代表三維讀取中4 x 2 x 2次空間。經選擇以施加於原始資料之布局可取決於執行FD函數所需之原始資料的形狀。
在另一實施例中,表狀向量讀取2011可施加於模板2006(或處理中FD函數之任何其他模板)中之 點,以便最小化讀取數量同時完全讀取模板2006之所有值,提供表狀向量讀取2011之維數。如何施加向量讀取可由例如解碼及翻譯FD函數1803或可包括FD函數1803之處理器1804決定。
例如,圖表2012描繪表狀向量讀取2011應用於代表範例FD函數之模板2006。FD函數之指令可由處理器1804接收,且為實施FD函數之計算,處理器1804可決定必須讀取之模板2006之值。此外,為有效率地讀取模板2006之值,處理器1804可決定必須實施之表狀向量讀取2011的五個狀況。在五個狀況中,可選擇表狀向量讀取2011之參數以便產生圖表2012中所描繪之讀取。例如,可於原始資料中(5,2)、(1,6)、(5,6)、(5,10)、及(9,6)之每一者實施表狀向量讀取2011,以計算(5,6)之FD函數結果。特定數量向量讀取可取決於挑選之特定點、FD函數、FD函數順序、FD函數維數。可實施該等讀取處及可儲存FD函數之該等變化處之間關係之映射,使得可指明特定FD函數、表狀向量讀取2011之特定數量及位置,以便實施特定FD函數之讀取。此外,該等映射可指明表狀向量讀取2011之各式可用布局。
因而,在圖20之範例中,讀取第8階2-D FD函數及其模板2006之所有值需5個讀取。對三維函數而言,z方向超出頁面之值需其餘4個讀取,以及z方向進入頁面之值需其餘4個讀取。在第16階2-D FD函數之狀 況下,表狀向量讀取2011之數量可為9個。因此,在各式實施例中,從線性向量至表狀向量之向量讀取格式化可減少計算FD函數1803所需原始資料之讀取數量。
圖21描繪依據本揭露之實施例之各向異性函數2102之範例運算。儘管各向異性函數2102用於圖22中之範例,可使用任何適當各向異性函數。各向異性函數2102可為二維各向異性函數。
圖表2104描繪可進行各向異性函數2102之執行的單點(5,5)。單點可僅為各向異性函數2102計算將用到之數百萬或更多點之一。圖表2104描繪模板2106,其描繪計算使用各向異性函數2102之特定點之值必須讀取之值。三維函數或更高階(諸如第16階)函數將需較大模板。對圖21中所考量二維第8階各向同性函數而言,可考量原始資料中特定點、特定點之上4個值、之下4個值、右邊4個值、及左邊4個值,以發現特定點之各向異性函數2102之結果。此外,可考量斜上方及右邊4個值、斜上方及左邊4個值、斜下方及右邊4個值、以及斜下方及左邊4個值,以發現特定點之各向異性函數2102之結果。
為讀取模板2106之該些值,若線性SIMD向量讀取(諸如圖20之1x16 SIMD向量讀取2005)用以讀取實施計算之值,可能需實施共27個讀取。此總數可能包括與圖20中所示相同數量,以及4個用於4個對角線區域之每一者。
在一實施例中,向量格式化可施加於執行各向異性函數2102之讀取資料,使得資料以一個以上維數向量化,諸如二維或三維。該等格式化可包括圖20中所示之表狀向量讀取2011格式。在另一實施例中,向量格式化可施加於一個以上維數,使得資料以一個以上維數讀取。
表狀向量讀取2011格式可以任何適當方式施加於原始資料及模板2106。表狀向量讀取2011可施加於模板2106中之點,以便最小化讀取數量同時完全讀取模板2206之所有值。如何施加向量讀取可由例如解碼及翻譯各向異性函數2102或可包括各向異性函數2102之處理器1804決定。
例如,圖表2108描繪相對於代表各向異性函數2102之模板2106之表狀向量讀取2011的應用。在一實施例中,表狀向量讀取2011可施加於點(1,2)、(5,2)、(9,2)、(1,6)、(5,6)、(9,10)、(1,10)、(5,10)、及(9,10),如圖表2108中所示。因此,可實施9個讀取。對三維函數而言,z方向超出頁面之值需其餘4個讀取,以及z方向進入頁面之值需其餘4個讀取。在第16階2-D FD函數之狀況下,表狀向量讀取2011之數量可為9個。因此,在各式實施例中,從線性向量至表狀向量之向量讀取格式化可減少計算FD函數1803所需原始資料之讀取數量。
圖22描繪依據本揭露之實施例之依據表狀向 量讀取實施計算之系統1800之範例運算。執行FD函數1803之計算可使用SIMD向量化平行實施。圖22中向量資料可儲存於例如向量暫存器中。計算之平行化可藉由使用用於圖20中所示讀取之相同表狀向量布局實施計算而予進行。因而,使用圖22中向量計算平行實施之計算數量可與圖20中表狀向量讀取運算之大小相同。再者,使用向量計算平行實施之計算數量可與儲存表狀向量結果之暫存器相同大小,該暫存器儲存表狀向量讀取運算之結果。
然而,使用表狀向量布局之特定點用以讀取資料之考量,可能需要存取於二個不同表狀向量讀取期間擷取之資料。若向量計算與儲存單一表狀向量讀取之資料的暫存器相同大小,則向量計算無法讀取所有表狀向量讀取。在若干實施例中,可施加格式化指令以正確地從多個向量聚集資訊,使得可依據表狀向量布局2206實施計算。布局2206可相應於圖20中所描繪之表狀向量讀取之布局。
例如,圖表2202可描繪從表狀向量讀取產生之資料之第一向量(向量1)及資料之第二向量(向量2)接收的資料。在圖表2204中,為在例如位置(5,5)上實施向量寬計算,其係從模板2006之中心點沿y方向移除之一位置,需存取來自向量1及向量2之資料。因此,資料需格式化,使得可實施位置(5,5)之向量寬計算。尤其,需其餘資訊進行該計算。
在一實施例中,為從多個表狀向量存取資訊,可使用專門向量讀取功能。在圖22之範例中,該功能可標示為VALIGN。在一實施例中,VALIGN可實施為單一指令。VALIGN可使用任何適當參數指明來自二個向量之二個部分應結合。例如,VALIGN可包括指明第一向量、應採用來自第一向量之哪一元件、第二向量、及應採用來自第二向量之哪一元件的參數。VALIGN可以其他適當參數方案實施。在圖表2204之範例中,可呼叫VALIGN以指配向量1之最後4個元件(指定-4)將增加至向量2之前12個元件(指定12):VALIGN(向量1,-4,向量2,12)。在另一範例中,負值可暗示。在另一範例中,可推測向量1及向量2間之關係,且僅標示將使用多少向量1之最後值之單數通過。其餘值可假定來自向量2之第一部分。
在圖表2204之範例中,為完成移位至(5,3)之布局2206的其餘計算(再移一位),可使用VALIGN(向量1,-8,向量2,8)呼叫VALIGN,使得向量1之最後8個值與向量2之前8個值組合。對不是(5,2)之布局2206的其餘計算(另移一位)而言,可使用VALIGN(向量1,-12,向量2,4)呼叫VALIGN,使得向量1之最後12個值與向量2之前4個值組合。然而,對不是(5,1)之布局2206的其餘計算(另移一位)而言,布局2206可直指向量1資料而完成。在此狀況下,可能不需使用VALIGN,且當讀取時可簡單地使用向量1資 料。
在一實施例中,對以向量2以下向量之計算而言,可使用VALIGN之不同參數重複相同步驟,以組合該向量與向量2之元件。共6個VALIGN呼叫可用以實施表狀向量資料之所有計算,如布局2206沿y方向之應用。6個VALIGN呼叫可包括3個用於「頂」臂及「中」向量之混合,及3個用於圖表2202之「底」臂及「中」向量之混合。於向量1之頂存取整個臂可能不需要VALIGN呼叫。存取整個中向量2可能不需要VALIGN呼叫。存取相應於另一向量之整個「底」臂可能不需要VALIGN呼叫。在第16階模板中,可能需要二個其餘輸入向量及再6個VALIGN呼叫。
一旦讀取特定布局,可使用表狀形式之SIMD向量計算平行計算16個結果。
圖表2210描繪在「左」臂之向量3之資料及向量2之資料的結果表狀向量。為如以上沿y方向實施之計算,實施沿x方向之類似計算,布局2206可從向量2沿x方向移位至左邊,並計算其中部分。為從向量3及向量2存取資料,可以類似於以上描述之方式使用VALIGN。在一實施例中,可假定布局2206呈現如表狀向量讀取2011格式中所示之值,實施表狀向量計算及VALIGN。在另一實施例中,可藉由首先置換或轉置布局2206之內容,而實施沿x方向之移位布局2206之位置的計算,使得如同從y方向觀點實施計算及VALIGN運算。 因此,向量3及向量2可置換或轉置。在另一實施例中,可接著施加VALIGN運算以結合向量3及向量2之元件,其上可實施計算。最後結果可需於寫入至記憶體之前轉置。運算2212中可描繪置換運算。
在向量3及向量2置換之後,可實施VALIGN呼叫以結合向量3之最後4個元件與向量2之前12個元件;向量3之最後8個元件與向量2之前8個元件;及向量3之最後12個元件與向量2之前4個元件。存取左臂可能不需VALIGN。基於「右」臂,可重複程序,包括置換其中表狀向量。聚集每一布局中之資料時,可實施SIMD表狀向量計算。
在第8階模板中,需要3個置換運算(沿x方向每一表狀向量用一個)以及共6個VALIGN呼叫以涵蓋臂及中心之混合。對第16階模板而言,需要2個其餘輸入向量,以及再2個置換及再6個VALIGN呼叫。
圖23為依據本揭露之實施例之方法2300之範例實施例之流程圖,用於施加處理計算之向量格式化。方法2300可描繪由例如處理器1804實施之運算。方法2300之若干部分可由例如程式庫、編譯器、或解譯器創作之指令流1802實施。方法2300可於任何適當點展開,並可以任何適當順序執行。在一實施例中,方法2300可始自2305。
在2305,可提取指令於處理器1804上執行。該指令可包括FD指令形式。在2310,可解碼指令。可決 定特定類型FD指令,及其參數。
在一實施例中,在2315,可決定表狀向量格式而施加於FD指令。依據FD指令、其順序、其維數、或其他識別方面,特定形式之輸入資料可用以計算FD指令之特定資料點。依據輸入資料之形式,可選擇表狀向量及支援指令之形式。
在2320,在一實施例中,可決定反映FD指令之計算特定點之輸入資料形式之輸入的模板。該形式可為二或三維。
在2325,表狀向量讀取指令可插入碼以支援FD指令。在一實施例中,表狀向量讀取指令可映射至輸入模板,使得模板受表狀向量讀取指令之範圍涵蓋。在另一實施例中,若干表狀向量讀取可最小化。特定若干表狀向量讀取及其參數(反映模板每一部分之個別涵蓋)可取決於模板及FD指令本身。
在2330,可針對結果表狀向量之每一元件插入計算指令。該等計算指令可為表狀向量執行。在一實施例中,在2335,必要時可插入校準及置換指令以支援特定向量計算。使用來自單一暫存器或表狀向量(源自讀取指令之執行)之資料實施之向量計算可不需要校準。然而,使用來自多個該等暫存器或表狀向量之資料實施之向量計算需要校準以組合來自多個該等向量之元件。可依據從讀取指令返回之資料形式,實施校準指令之特定使用。此外可插入置換指令以實施其餘方向之向量計算(諸如x 方向或z方向)。置換指令可允許計算以與以原始方向實施計算之相同方式沿該些方向前進。可依據從讀取指令返回之資料形式,實施置換指令之特定使用。
在2340,在一實施例中,可調度及執行指令。在一實施例中,可如以上所指明實施表狀向量讀取。在2345,必要時可實施校準及實施向量計算。輸出資料可返回至記憶體、快取記憶體、暫存器、或其他適當位置。在2350,對其他方向而言,必要時可實施置換及校準。可實施向量計算。輸出資料可返回。2350可針對多方向實施。
在2355,可決定其餘資料點是否於FD指令之執行中計算。若然,方法2300可返回至2320。若否,方法2300可前進至2360。
在2360,任何未確認或未寫入之資料可發出至快取記憶體、記憶體、暫存器、或其他位置。在2365,指令可引退。方法2300可選擇地重複或視需要終止。
方法2300可以任何適當標準發起。此外,儘管方法2300描述特定元件之運算,方法2300可由任何適當組合或類型元件實施。例如,方法2300可由圖1-22中所描繪之元件或可操作以實施方法2300的任何其他系統實施。同樣地,方法2300之較佳發起點及包含方法2300之元件順序可取決於實施挑選。在若干實施例中,若干元件可選地省略、重組、重複、或組合。
文中所揭露之機構的實施例可以硬體、軟體、韌體、或該等實施途徑之組合實施。揭露之實施例可實施為電腦程式或程式碼在可編程系統上執行,該系統包含至少一處理器、儲存系統(包括揮發及非揮發性記憶體及/或儲存元件)、至少一輸入裝置、及至少一輸出裝置。
程式碼可施加於輸入指令以實施文中所描述之功能並產生輸出資訊。輸出資訊可以已知方式施加於一或更多輸出裝置。為本申請案之目的,處理系統可包括具有處理器之任何系統,例如數位信號處理器(DSP)、微控制器、專用積體電路(ASIC)、或微處理器。
程式碼可以高階程序或物件導向編程語言實施,而與處理系統通訊。若有需要,程式碼亦可以組合或機器語言實施。事實上,文中所描述之機構不侷限於任何特定編程語言範圍。在任何狀況下,語言可為編譯或解譯語言。
至少一實施例之一或更多方面可儲存於機器可讀取媒體之代表指令實施,其代表處理器內各式邏輯,當由機器讀取時,使機器製造邏輯以實施文中所描述之技術。該等代表,已知為「IP核心」,可儲存於實體機器可讀取媒體上,並供應至各式用戶或製造廠,以載入實際實施邏輯或處理器之製造機器。
該等機器可讀取儲存媒體可包括但不侷限於由機器或裝置製造或形成之物件的非暫態實體配置,包 括:儲存媒體,諸如硬碟;任何其他類型碟片,包括軟碟、光碟、光碟唯讀記憶體(CD-ROM)、可複寫式光碟(CD-RW)、及磁性光碟;半導體裝置,諸如唯讀記憶體(ROM);隨機存取記憶體(RAM),諸如動態隨機存取記憶體(DRAM);靜態隨機存取記憶體(SRAM);可抹除可編程唯讀記憶體(EPROM);快閃記憶體;電可抹除可編程唯讀記憶體(EEPROM);磁性或光學卡;或適於儲存電子指令之任何其他類型媒體。
因此,揭露之實施例亦可包括非暫態實體機器可讀取媒體,包含指令或包含設計資料,諸如硬體描述語言(HDL),其定義結構、電路、設備、處理器及/或文中所描述之系統部件。該等實施例亦可稱為程式產品。
在若干狀況下,指令轉換器可用以將指令從來源指令集轉換為目標指令集。例如,指令轉換器可翻譯(例如使用靜態二元翻譯、包括動態編譯之動態二元翻譯)、變形、仿真、或將指令轉換為將由核心處理之一或更多其他指令。指令轉換器可以軟體、硬體、韌體、或其組合實施。指令轉換器可為開啟處理器、關閉處理器、或部分開啟及部分關閉處理器。
因而,揭露實施依據至少一實施例之一或更多指令的技術。雖然附圖中已描述及顯示某示例實施例,將理解的是該等實施例僅為描繪並未限制其他實施例,且由於對研究本揭露之本技藝中一般技術之人士而言可發生各式其他修改,該等實施例並未侷限於所顯示及描述之特 定構造及配置。在諸如何處生長快速及不易預見進一步進步之技術區域中,所揭露之實施例可藉由啟動技術進步而易於修改配置及細節,而未偏離本揭露之原理或所附申請項之範圍。
100‧‧‧系統
102‧‧‧處理器
104‧‧‧1級內部快取記憶體
106‧‧‧暫存器檔
108‧‧‧執行單元
109‧‧‧封裝指令集
110‧‧‧處理器匯流排
112‧‧‧圖形控制器
114‧‧‧加速圖形埠(AGP)互連
116‧‧‧系統邏輯晶片
118‧‧‧高頻寬記憶體路徑
120‧‧‧記憶體
122‧‧‧系統輸入/輸出(I/O)
124‧‧‧資料儲存裝置
126‧‧‧無線收發器
128‧‧‧韌體集線器(快閃BIOS)
130‧‧‧I/O控制器集線器(ICH)
134‧‧‧網路控制器

Claims (20)

  1. 一種系統,包含:翻譯器,用以:接收解碼之指令,該解碼之指令用以使用來自複數維數中複數相鄰原始資料之輸入來計算資料點;依據該解碼之指令決定複數表狀向量讀取運算來讀取該複數相鄰原始資料;核心,用以執行該解碼之指令,該核心包括電路用以:實施複數表狀向量讀取運算;實施第一表狀向量計算,該表狀向量計算係依據實施該複數表狀向量讀取運算之結果;以及寫入該表狀向量計算之結果。
  2. 如申請專利範圍第1項之系統,其中,該翻譯器進一步用以依據該解碼之指令決定該第一表狀向量計算。
  3. 如申請專利範圍第2項之系統,其中,該翻譯器進一步用以產生指令流,該指令流包含複數表狀向量讀取運算及該第一表狀向量計算。
  4. 如申請專利範圍第3項之系統,其中,該翻譯器進一步用以將下述一或更多者插入該指令流:將第一表狀向量讀取運算之結果轉置入第一向量暫存器的運算;將第二表狀向量讀取之結果轉置入第二向量暫存器的運算;以及 依據該第一向量暫存器及該第二向量暫存器的內容實施第二表狀向量計算的運算,該第二表狀向量計算係在除了實施該第一表狀向量計算的維方向以外的維方向中。
  5. 如申請專利範圍第1項之系統,其中,為決定該複數表狀向量讀取運算,該翻譯器進一步映射充分數量表狀讀取運算以涵蓋資料輸入之模板,該模板為反映該相鄰原始資料之多維形狀。
  6. 如申請專利範圍第1項之系統,其中:該系統進一步包含包括該核心及該翻譯器的處理器;以及該翻譯器包含動態二元翻譯器、最佳化器、或即時編譯器。
  7. 如申請專利範圍第1項之系統,其中,該系統進一步包含:包括該核心的處理器;以及包括該翻譯器的協處理器。
  8. 一種方法,包含在處理器內:接收解碼之指令,該解碼之指令用以使用來自複數維數中複數相鄰原始資料之輸入來計算資料點;依據該解碼之指令決定複數表狀向量讀取運算來讀取該複數相鄰原始資料;執行該解碼之指令,該解碼之指令包括:實施複數表狀向量讀取運算;以及實施第一表狀向量計算,該表狀向量計算係依據 實施該複數表狀向量讀取運算之結果。
  9. 如申請專利範圍第8項之方法,進一步包含:依據該解碼之指令決定該第一表狀向量計算。
  10. 如申請專利範圍第9項之方法,進一步包含:產生指令流,該指令流包含複數表狀向量讀取運算及該第一表狀向量計算。
  11. 如申請專利範圍第10項之方法,進一步包含將下述一或更多者插入該指令流:將第一表狀向量讀取運算之結果轉置入第一向量暫存器的運算;將第二表狀向量讀取之結果轉置入第二向量暫存器的運算;以及依據該第一向量暫存器及該第二向量暫存器的內容實施第二表狀向量計算的運算,該第二表狀向量計算係在除了實施該第一表狀向量計算的維方向以外的維方向中。
  12. 如申請專利範圍第8項之方法,進一步包含:將第一表狀向量讀取運算之結果儲存入第一向量暫存器;將第二表狀向量讀取之結果儲存入第二向量暫存器;以及依據該第一向量暫存器中之結果及該第二向量暫存器之結果實施第二表狀向量計算。
  13. 如申請專利範圍第8項之方法,其中,決定該複數表狀向量讀取運算包含映射充分數量表狀讀取運算以涵 蓋資料輸入之模板,該模板為反映該相鄰原始資料之多維形狀。
  14. 一種用於執行指令的系統,包括:記憶體儲存程式指令,當該等記憶體儲存程式指令被一或更多處理器執行時實施編譯器用以:分析指令,該指令用以使用來自複數維數中複數相鄰原始資料之輸入來計算資料點;依據該指令之分析決定複數表狀向量讀取運算來讀取該複數相鄰原始資料;產生指令流,該指令流包含複數表狀向量讀取運算;核心,用以執行該指令,該核心包括電路用以:接收該指令流;實施複數表狀向量讀取運算;實施第一表狀向量計算,該表狀向量計算係依據實施該複數表狀向量讀取運算之結果;以及寫入該表狀向量計算之結果。
  15. 如申請專利範圍第14項之系統,其中,該編譯器進一步用以依據該指令之分析決定該第一表狀向量計算。
  16. 如申請專利範圍第15項之系統,其中,該編譯器進一步用以將該第一表狀向量計算插入該指令流。
  17. 如申請專利範圍第16項之系統,其中,該編譯器進一步用以將下述一或更多者插入該指令流:將第一表狀向量讀取運算之結果轉置入第一向量暫存 器的運算;將第二表狀向量讀取之結果轉置入第二向量暫存器的運算;以及依據該第一向量暫存器及該第二向量暫存器的內容實施第二表狀向量計算的運算,該第二表狀向量計算係在除了實施該第一表狀向量計算的維方向以外的維方向中。
  18. 如申請專利範圍第14項之系統,其中,為決定該複數表狀向量讀取運算,該編譯器進一步映射充分數量表狀讀取運算以涵蓋資料輸入之模板,該模板為反映該相鄰原始資料之多維形狀。
  19. 如申請專利範圍第14項之系統,進一步包含:將第一表狀向量讀取運算之結果儲存入第一向量暫存器;將第二表狀向量讀取之結果儲存入第二向量暫存器;以及依據該第一向量暫存器中之結果及該第二向量暫存器之結果實施第二表狀向量計算。
  20. 如申請專利範圍第1項之系統,其中:該系統進一步包含:包括該核心的主要處理器;專用協處理器;用以實施該編譯器的該一或更多處理器包括該專用協處理器。
TW105126605A 2014-09-26 2015-08-20 用於處理計算的向量格式的指令及邏輯 TWI590079B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/498,064 US10061746B2 (en) 2014-09-26 2014-09-26 Instruction and logic for a vector format for processing computations

Publications (2)

Publication Number Publication Date
TW201717056A TW201717056A (zh) 2017-05-16
TWI590079B true TWI590079B (zh) 2017-07-01

Family

ID=55581737

Family Applications (2)

Application Number Title Priority Date Filing Date
TW105126605A TWI590079B (zh) 2014-09-26 2015-08-20 用於處理計算的向量格式的指令及邏輯
TW104127170A TWI556118B (zh) 2014-09-26 2015-08-20 用於處理計算的向量格式的指令及邏輯

Family Applications After (1)

Application Number Title Priority Date Filing Date
TW104127170A TWI556118B (zh) 2014-09-26 2015-08-20 用於處理計算的向量格式的指令及邏輯

Country Status (7)

Country Link
US (1) US10061746B2 (zh)
EP (1) EP3198401A4 (zh)
JP (1) JP6415698B2 (zh)
KR (1) KR102296619B1 (zh)
CN (1) CN106575219B (zh)
TW (2) TWI590079B (zh)
WO (1) WO2016048493A1 (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111857820A (zh) * 2016-04-26 2020-10-30 中科寒武纪科技股份有限公司 一种用于执行矩阵加/减运算的装置和方法
US10332407B2 (en) 2017-07-07 2019-06-25 Walmart Apollo, Llc Systems and methods for providing emergency alerts at emergency landing areas of unmanned aerial vehicles
CN109522254B (zh) 2017-10-30 2022-04-12 上海寒武纪信息科技有限公司 运算装置及方法
US10896043B2 (en) 2018-09-28 2021-01-19 Intel Corporation Systems for performing instructions for fast element unpacking into 2-dimensional registers
US11829754B2 (en) * 2018-12-07 2023-11-28 Nec Corporation Compile device, compile method, and non-transitory computer readable medium for increasing a speed of a program
CN115185524A (zh) * 2021-04-01 2022-10-14 北京希姆计算科技有限公司 向量指令的识别方法、装置、电子设备及计算机可读存储介质

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62120574A (ja) 1985-11-20 1987-06-01 Fujitsu Ltd ベクトル処理装置
GB2329043B (en) * 1997-09-05 2000-04-26 Geco As Method of determining the response caused by model alterations in seismic simulations
US6351802B1 (en) 1999-12-03 2002-02-26 Intel Corporation Method and apparatus for constructing a pre-scheduled instruction cache
US20130212353A1 (en) 2002-02-04 2013-08-15 Tibet MIMAR System for implementing vector look-up table operations in a SIMD processor
US7275148B2 (en) 2003-09-08 2007-09-25 Freescale Semiconductor, Inc. Data processing system using multiple addressing modes for SIMD operations and method thereof
US20060111881A1 (en) * 2004-11-23 2006-05-25 Warren Jackson Specialized processor for solving optimization problems
JP5279016B2 (ja) * 2008-11-21 2013-09-04 国立大学法人 東京大学 地球内部を伝播する地震波についての数値解析に用いる演算子生成方法、及び演算子生成装置、並びに地球内部を伝播する地震波についての数値解析を行うシミュレーション装置
US8892412B2 (en) * 2009-03-11 2014-11-18 Exxonmobil Upstream Research Company Adjoint-based conditioning of process-based geologic models
CN102099834A (zh) * 2009-05-21 2011-06-15 松下电器产业株式会社 图形描绘装置、图形描绘方法、图形描绘程序、记录了图形描绘程序的记录介质、图形描绘用集成电路
US8423745B1 (en) * 2009-11-16 2013-04-16 Convey Computer Systems and methods for mapping a neighborhood of data to general registers of a processing element
US20110249744A1 (en) * 2010-04-12 2011-10-13 Neil Bailey Method and System for Video Processing Utilizing N Scalar Cores and a Single Vector Core
US8582909B2 (en) * 2011-05-23 2013-11-12 Intel Corporation Adaptive multi-grid contrast optical flow
KR101804008B1 (ko) * 2011-09-26 2017-12-01 인텔 코포레이션 벡터 산개-op 및 집결-op 기능을 제공하는 명령어 및 로직
US9454366B2 (en) * 2012-03-15 2016-09-27 International Business Machines Corporation Copying character data having a termination character from one memory location to another
US9772854B2 (en) * 2012-06-15 2017-09-26 International Business Machines Corporation Selectively controlling instruction execution in transactional processing
US9361115B2 (en) * 2012-06-15 2016-06-07 International Business Machines Corporation Saving/restoring selected registers in transactional processing
US8924741B2 (en) 2012-12-29 2014-12-30 Intel Corporation Instruction and logic to provide SIMD secure hashing round slice functionality
US9477999B2 (en) * 2013-09-20 2016-10-25 The Board Of Trustees Of The Leland Stanford Junior University Low power programmable image processor
US10528345B2 (en) * 2015-03-27 2020-01-07 Intel Corporation Instructions and logic to provide atomic range modification operations
US9769356B2 (en) * 2015-04-23 2017-09-19 Google Inc. Two dimensional shift array for image processor

Also Published As

Publication number Publication date
WO2016048493A1 (en) 2016-03-31
CN106575219B (zh) 2020-06-09
JP6415698B2 (ja) 2018-10-31
US10061746B2 (en) 2018-08-28
KR20170036036A (ko) 2017-03-31
TW201633182A (zh) 2016-09-16
CN106575219A (zh) 2017-04-19
US20160092400A1 (en) 2016-03-31
EP3198401A4 (en) 2018-05-23
CN106575219A8 (zh) 2017-07-11
KR102296619B1 (ko) 2021-08-31
TW201717056A (zh) 2017-05-16
TWI556118B (zh) 2016-11-01
JP2017532639A (ja) 2017-11-02
EP3198401A1 (en) 2017-08-02

Similar Documents

Publication Publication Date Title
CN108292215B (zh) 用于加载-索引和预取-聚集操作的指令和逻辑
CN108292229B (zh) 用于重新出现的相邻聚集的指令和逻辑
US20170286122A1 (en) Instruction, Circuits, and Logic for Graph Analytics Acceleration
JP6306729B2 (ja) ストアをソート及びリタイアする命令及びロジック
TWI590079B (zh) 用於處理計算的向量格式的指令及邏輯
TW201727493A (zh) 從持續記憶體預取資訊的指令及邏輯
TW201729078A (zh) 用於以通道為基礎的跨步儲存操作之指令及邏輯
TW201732581A (zh) 用於載入索引與集中操作的指令及邏輯
TWI588740B (zh) 包括用於移位和(shift-sum)乘法器之指令及邏輯的處理器及系統,以及用於移位和乘法的方法
US20160328239A1 (en) Performing partial register write operations in a processor
TW201732550A (zh) 用於載入索引和散佈運算之指令和邏輯
TW201723817A (zh) 用於取得多重向量元素操作之指令及邏輯
TW201732619A (zh) 仿真的訊息通知中斷(msi)中斷處置
TW201729077A (zh) 用於設置多重向量元素操作之指令及邏輯
TW201723815A (zh) 用於偶數與奇數向量取得操作之指令及邏輯
TW201732548A (zh) 用於向量置換的指令和邏輯
TW201723812A (zh) 用於以亂序載入來排列之指令及邏輯
US20210096866A1 (en) Instruction length decoding
US9928066B2 (en) Instruction and logic for encoded word instruction compression
TW201729080A (zh) 用於排列序列之指令及邏輯
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