TW201732556A - 用於集合運算之加速的硬體內容關聯之資料結構 - Google Patents

用於集合運算之加速的硬體內容關聯之資料結構 Download PDF

Info

Publication number
TW201732556A
TW201732556A TW105137912A TW105137912A TW201732556A TW 201732556 A TW201732556 A TW 201732556A TW 105137912 A TW105137912 A TW 105137912A TW 105137912 A TW105137912 A TW 105137912A TW 201732556 A TW201732556 A TW 201732556A
Authority
TW
Taiwan
Prior art keywords
key
instruction
value
value pairs
logic
Prior art date
Application number
TW105137912A
Other languages
English (en)
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 TW201732556A publication Critical patent/TW201732556A/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/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
    • 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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9014Indexing; Data structures therefor; Storage structures hash tables
    • 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
    • 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/30018Bit or string 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/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • 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/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • 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 or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Algebra (AREA)
  • Pure & Applied Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Abstract

一種處理器包括:前端,用於接收指令;解碼器,用於解碼指令;集合運算邏輯單元(SOLU),用於執行指令;及止用單元,用於止用指令。SOLU包括邏輯,用於儲存第一組鍵值對在內容關聯資料記憶體中,接收第二組鍵值對,及識別具有匹配鍵之兩組中之鍵值對。SOLU包括邏輯,用於將第二組鍵值對加到第一組鍵值對,以便產生輸出組,及使用運算於具有匹配鍵之鍵值對之值,產生用於匹配鍵之單一值。SOLU包括邏輯,用於產生輸出組,輸出組包括來自具有匹配鍵之第一組之鍵值對,及廢除來自具有唯一鍵之第一組之鍵值對。

Description

用於集合運算之加速的硬體內容關聯之資料結構
本發明關於處理邏輯、微處理器、及相關聯指令集架構之領域,當其以處理器或其他處理邏輯實施時,即執行邏輯、數學、或其他功能操作。
多處理器系統日漸普遍。多處理器系統之應用包括動態計算域切割一路往下到桌面計算。為了利用多處理器系統,待執行之碼可以分開成多數個執行緒,供許多處理實體執行。各執行緒可以彼此並行地執行。在一處理器上所接收到的指令被解碼成原生、或較為原生之術語或指令字,供於處理器上執行。處理器可以在一系統晶片上執行。圖形處理為大數據分析應用之骨幹。有些圖形處理框架即基於集合運算,包括聯集運算及交集運算。
100‧‧‧系統
102‧‧‧處理器
104‧‧‧第一階內部快取記憶體
106‧‧‧暫存器檔
108‧‧‧執行單元
109‧‧‧緊縮指令集
110‧‧‧處理器匯流排
112‧‧‧圖形卡
114‧‧‧加速圖形埠互連
116‧‧‧記憶體控制器集線器
118‧‧‧高頻寬記憶體路徑
119‧‧‧指令
120‧‧‧記憶體
121‧‧‧資料
122‧‧‧周邊集線器介面匯流排
123‧‧‧舊有輸入/輸出控制器
124‧‧‧資料儲存裝置
125‧‧‧使用者輸入介面
126‧‧‧無線收發器
127‧‧‧序列擴充埠
128‧‧‧韌體集線器(快閃基本輸入輸出系統)
129‧‧‧音頻控制器
130‧‧‧輸入/輸出控制器集線器
134‧‧‧網路控制器
140‧‧‧資料處理系統
141‧‧‧匯流排
142‧‧‧執行單元
143‧‧‧緊縮指令集
144‧‧‧解碼器
145‧‧‧暫存器檔
146‧‧‧同步動態隨機存取記憶體控制
147‧‧‧靜態隨機存取記憶體控制
148‧‧‧突發快閃記憶體介面
149‧‧‧個人電腦記憶卡國際協會/緊湊型快閃記憶卡控制
150‧‧‧液晶顯示器控制
151‧‧‧直接記憶體存取
152‧‧‧匯流排主介面
153‧‧‧輸入/輸出匯流排
154‧‧‧輸入/輸出橋接器
155‧‧‧通用非同步接收器/發送器
156‧‧‧通用序列匯流排
157‧‧‧藍牙無線通用非同步接收器/發送器
158‧‧‧輸入/輸出擴充介面
159‧‧‧處理核芯
160‧‧‧資料處理系統
161‧‧‧單指令多資料共處理器
162‧‧‧執行單元
163‧‧‧指令集
164‧‧‧暫存器檔
165‧‧‧解碼器
165B‧‧‧解碼器
166‧‧‧主處理器
167‧‧‧快取記憶體
168‧‧‧輸入/輸出系統
169‧‧‧無線介面
170‧‧‧處理核芯
171‧‧‧共處理器匯流排
200‧‧‧處理器
201‧‧‧前端
202‧‧‧快速排程器
203‧‧‧亂序執行引擎
204‧‧‧慢速/一般浮點排程器
205‧‧‧整數/浮點微操作佇列
206‧‧‧簡單浮點排程器
207‧‧‧記憶體微操作佇列
208‧‧‧暫存器檔
209‧‧‧記憶體排程器
210‧‧‧暫存器檔
211‧‧‧執行區塊
212‧‧‧位址產生單元
214‧‧‧位址產生單元
215‧‧‧配置器/暫存器重新命名器
216‧‧‧快速算術邏輯單元
218‧‧‧快速算術邏輯單元
220‧‧‧慢速算術邏輯單元
222‧‧‧浮點算術邏輯單元
224‧‧‧浮點移動單元
226‧‧‧指令預取器
228‧‧‧指令解碼器
230‧‧‧跡線快取
232‧‧‧微碼隨機存取記憶體
234‧‧‧微操作佇列
310‧‧‧緊縮位元組
320‧‧‧緊縮字
330‧‧‧緊縮雙字
341‧‧‧緊縮半
342‧‧‧緊縮單
343‧‧‧緊縮雙
344‧‧‧無符號緊縮位元組代表
345‧‧‧有符號緊縮位元組代表
346‧‧‧無符號緊縮字暫存器中代表
347‧‧‧有符號緊縮字代表
348‧‧‧無符號緊縮雙字暫存器中代表
349‧‧‧有符號緊縮雙字代表
360‧‧‧格式
361‧‧‧欄位
362‧‧‧欄位
363‧‧‧MOD欄位
364‧‧‧來源運算元識別符
365‧‧‧來源運算元識別符
366‧‧‧目的地運算元識別符
370‧‧‧運算碼格式
371‧‧‧欄位
372‧‧‧欄位
373‧‧‧MOD欄位
374‧‧‧來源運算元識別符
375‧‧‧來源運算元識別符
376‧‧‧目的地運算元識別符
378‧‧‧前置位元組
380‧‧‧運算編碼格式
381‧‧‧條件欄位
382‧‧‧共處理器資料處理運算碼欄位
383‧‧‧欄位
384‧‧‧欄位
385‧‧‧來源運算元識別符
386‧‧‧目的地運算元識別符
387‧‧‧欄位
388‧‧‧欄位
389‧‧‧共處理器資料處理運算碼欄位
390‧‧‧來源運算元識別符
400‧‧‧處理器管線
402‧‧‧擷取階段
404‧‧‧長度解碼階段
406‧‧‧解碼階段
408‧‧‧配置階段
410‧‧‧重新命名階段
412‧‧‧排程階段
414‧‧‧暫存器讀取/記憶體讀取階段
416‧‧‧執行階段
418‧‧‧寫回記憶體寫入階段
422‧‧‧異常處置階段
424‧‧‧確認階段
430‧‧‧前端單元
432‧‧‧指令擷取單元
434‧‧‧分支預測單元
436‧‧‧指令快取單元
438‧‧‧指令轉譯後備緩衝器
440‧‧‧解碼單元
450‧‧‧執行引擎單元
452‧‧‧重新命名/配置器單元
454‧‧‧止用單元
456‧‧‧排程器單元
458‧‧‧實體暫存器檔單元
460‧‧‧執行叢集
462‧‧‧執行單元
464‧‧‧記憶體存取單元
470‧‧‧記憶體單元
472‧‧‧資料轉譯後備緩衝器單元
474‧‧‧資料快取單元
476‧‧‧L2快取單元
490‧‧‧處理器核芯
500‧‧‧處理器
502‧‧‧核芯
503‧‧‧快取階層
506‧‧‧快取
508‧‧‧環狀互連單元
510‧‧‧系統代理
512‧‧‧顯示引擎
514‧‧‧介面
516‧‧‧直接媒體介面
518‧‧‧周邊組件互連高速橋接器
520‧‧‧記憶體控制器
522‧‧‧連貫性邏輯
552‧‧‧記憶體控制單元
560‧‧‧圖形模組
565‧‧‧媒體引擎
570‧‧‧前端
572‧‧‧快取
574‧‧‧快取
576‧‧‧快取
580‧‧‧亂序引擎
582‧‧‧配置模組
584‧‧‧資源排程器
586‧‧‧資源
588‧‧‧重排序緩衝器
590‧‧‧模組
595‧‧‧最後級快取
599‧‧‧隨機存取記憶體
600‧‧‧系統
610‧‧‧處理器
615‧‧‧處理器
620‧‧‧圖形記憶體控制器集線器
640‧‧‧記憶體
645‧‧‧顯示器
650‧‧‧輸入/輸出控制器集線器
660‧‧‧外部圖形裝置
670‧‧‧周邊裝置
695‧‧‧前端匯流排
700‧‧‧多處理器系統
714‧‧‧輸入/輸出裝置
716‧‧‧第一匯流排
718‧‧‧匯流排橋接器
720‧‧‧第二匯流排
722‧‧‧鍵盤/滑鼠
724‧‧‧音頻輸入/輸出裝置
727‧‧‧通信裝置
728‧‧‧儲存器單元
730‧‧‧指令/碼及資料
732‧‧‧記憶體
734‧‧‧記憶體
738‧‧‧高性能圖形電路
739‧‧‧高性能介面
750‧‧‧點對點介面
752‧‧‧點對點介面
754‧‧‧點對點介面
770‧‧‧處理器
772‧‧‧控制邏輯
776‧‧‧點對點介面
778‧‧‧點對點介面
780‧‧‧處理器
782‧‧‧控制邏輯
786‧‧‧點對點介面
788‧‧‧點對點介面
790‧‧‧晶片組
794‧‧‧點對點介面電路
792、796‧‧‧介面
798‧‧‧點對點介面電路
800‧‧‧系統
814‧‧‧輸入/輸出裝置
815‧‧‧舊輸入/輸出裝置
872‧‧‧控制邏輯
882‧‧‧控制邏輯
900‧‧‧系統晶片
902‧‧‧互連單元
908‧‧‧整合式圖形邏輯
910‧‧‧應用處理器
914‧‧‧整合式記憶體控制器單元
916‧‧‧匯流排控制器單元
920‧‧‧媒體處理器
924‧‧‧影像處理器
926‧‧‧音頻處理器
928‧‧‧視頻處理器
930‧‧‧靜態隨機存取記憶體單元
932‧‧‧直接記憶體存取單元
940‧‧‧顯示器單元
1000‧‧‧處理器
1005‧‧‧中央處理單元
1010‧‧‧圖形處理單元
1015‧‧‧影像處理器
1020‧‧‧視頻處理器
1025‧‧‧通用序列匯流排控制器
1030‧‧‧通用非同步接收器/發送器控制器
1035‧‧‧序列周邊匯流排/安全數字輸入輸出控制器
1040‧‧‧顯示裝置
1045‧‧‧記憶體介面控制器
1050‧‧‧行動產業處理器介面控制器
1055‧‧‧快閃記憶體控制器
1060‧‧‧雙資料率控制器
1065‧‧‧安全引擎
1070‧‧‧積體電路連線聲音控制器
1100‧‧‧儲存器
1110‧‧‧硬體模型
1120‧‧‧模擬軟體
1140‧‧‧記憶體
1150‧‧‧有線連接
1160‧‧‧無線連接
1165‧‧‧製造設施
1205‧‧‧程式指令
1210‧‧‧仿真邏輯
1215‧‧‧處理器
1302‧‧‧高階語言
1304‧‧‧x86編譯器
1306‧‧‧x86二進制碼
1308‧‧‧替代指令集編譯器
1310‧‧‧替代指令集二進制碼
1312‧‧‧指令轉換器
1314‧‧‧處理器
1316‧‧‧處理器
1400‧‧‧指令集架構
1405‧‧‧處理實體
1406‧‧‧核芯
1407‧‧‧核芯
1408‧‧‧L2快取控制
1409‧‧‧匯流排介面單元
1410‧‧‧互連
1411‧‧‧L2快取
1415‧‧‧圖形處理單元
1420‧‧‧視頻編解碼器
1425‧‧‧液晶顯示器視頻介面
1430‧‧‧用戶介面模組介面
1435‧‧‧開機唯讀記憶體介面
1440‧‧‧同步動態隨機存取記憶體控制器
1445‧‧‧快閃控制器
1450‧‧‧序列周邊介面主機單元
1455‧‧‧電力控制
1460‧‧‧模組
1465‧‧‧快閃記憶體
1470‧‧‧藍牙模組
1475‧‧‧高速3G數據機
1480‧‧‧全球定位系統模組
1485‧‧‧無線模組
1490‧‧‧行動產業處理器介面控制器
1495‧‧‧高清晰度多媒體介面
1500‧‧‧指令集架構
1510‧‧‧快取與匯流排介面單元
1511‧‧‧中斷控制與分配單元
1512‧‧‧監聽控制單元
1513‧‧‧快取至快取轉移
1514‧‧‧監聽過濾器
1515‧‧‧計時器
1516‧‧‧AC埠
1520‧‧‧匯流排介面單元
1521‧‧‧主要主介面
1522‧‧‧次要主介面
1525‧‧‧快取
1530‧‧‧指令預取階段
1531‧‧‧快速迴路模式
1532‧‧‧指令快取
1535‧‧‧分支預測單元
1536‧‧‧全域歷史
1537‧‧‧目標位址
1538‧‧‧返回堆疊
1540‧‧‧記憶體系統
1542‧‧‧資料快取
1543‧‧‧預取器
1544‧‧‧記憶體管理單元
1545‧‧‧轉譯後備緩衝器
1546‧‧‧載入儲存單元
1550‧‧‧雙指令解碼階段
1555‧‧‧暫存器重新命名階段
1556‧‧‧暫存器庫
1557‧‧‧分支
1560‧‧‧發送階段
1561‧‧‧指令佇列
1565‧‧‧執行實體
1566‧‧‧算術邏輯單元/乘法單元
1567‧‧‧算術邏輯單元
1568‧‧‧浮點單元
1569‧‧‧位址
1570‧‧‧寫回階段
1575‧‧‧追蹤單元
1580‧‧‧執行指令指標
1582‧‧‧止用指標
1600‧‧‧執行引擎
1700‧‧‧電子裝置
1710‧‧‧處理器
1715‧‧‧低功率雙資料率記憶體單元
1720‧‧‧磁碟機
1722‧‧‧基本輸入輸出系統/韌體/快閃記憶體
1724‧‧‧顯示器
1725‧‧‧觸控螢幕
1730‧‧‧觸控板
1735‧‧‧高速晶片組
1736‧‧‧鍵盤
1737‧‧‧風扇
1738‧‧‧可信平台模組
1739‧‧‧熱感測器
1740‧‧‧感測器集線器
1741‧‧‧加速度計
1742‧‧‧環境光感測器
1743‧‧‧羅盤
1744‧‧‧陀螺儀
1745‧‧‧近場通信單元
1746‧‧‧熱感測器
1750‧‧‧無線區域網路單元
1752‧‧‧藍牙單元
1754‧‧‧照相機
1755‧‧‧全球定位系統
1756‧‧‧無線廣域網路單元
1757‧‧‧SIM卡
1760‧‧‧數位信號處理器
1762‧‧‧音頻單元
1763‧‧‧喇叭
1764‧‧‧頭戴式耳機
1765‧‧‧麥克風
1800‧‧‧系統
1802‧‧‧指令流
1804‧‧‧處理器
1806‧‧‧前端
1808‧‧‧指令擷取單元
1810‧‧‧解碼單元
1812‧‧‧核芯
1814‧‧‧配置器
1816‧‧‧執行單元
1818‧‧‧止用單元
1820A‧‧‧集合運算邏輯單元
1820B‧‧‧集合運算邏輯單元
1820C‧‧‧集合運算邏輯單元
1822‧‧‧CAM控制邏輯
1824‧‧‧CAM資料結構
1826‧‧‧記憶體子系統
1827‧‧‧L1快取
1828‧‧‧L2快取
1830‧‧‧記憶體系統
1900‧‧‧系統
1922A‧‧‧CAM控制邏輯
1922B‧‧‧CAM控制邏輯
1924A‧‧‧CAM資料結構
1924B‧‧‧CAM資料結構
2010‧‧‧集合運算邏輯單元
2020‧‧‧CAM控制邏輯
2025‧‧‧集合運算執行單元
2030‧‧‧CAM資料結構
2031‧‧‧元件
2032‧‧‧元件
2033‧‧‧元件
2034‧‧‧元件
2035‧‧‧元件
2036‧‧‧元件
2102‧‧‧鍵輸入陣列
2104‧‧‧值輸入陣列
2302‧‧‧鍵輸入陣列
2304‧‧‧值輸入陣列
2306‧‧‧鍵輸出陣列
2308‧‧‧值輸出陣列
2902‧‧‧鍵輸出陣列
2904‧‧‧值輸出陣列
實施例係藉由舉例說明揭示且不限於附圖: 圖1A係根據本發明實施例由處理器形成之示範性電腦系統之方塊圖,處理器包括執行單元,用於執行指令;圖1B揭示根據本發明實施例之資料處理系統;圖1C揭示供執行文字串比較操作之資料處理系統之另一實施例;圖2係根據本發明實施例之用於處理器之微架構之方塊圖,處理器包括邏輯電路,用於執行指令;圖3A揭示根據本發明實施例之多媒體暫存器中之許多緊縮資料類型代表;圖3B揭示根據本發明實施例之可行暫存器中資料儲存格式;圖3C揭示根據本發明實施例之多媒體暫存器中之許多有符號與無符號之緊縮資料類型代表;圖3D揭示操作編碼格式之實施例;圖3E揭示根據本發明實施例之具有40個以上位元之可行操作編碼格式;圖3F揭示根據本發明實施例之又一可行操作編碼格式;圖4A係方塊圖,揭示根據本發明實施例之有序管線及暫存器重新命名、亂序發送/執行管線;圖4B係方塊圖,揭示根據本發明實施例之包括在一處理器中的有序架構核芯及暫存器重新命名邏輯、亂序發送/執行邏輯;圖5A係根據本發明實施例之處理器之方塊圖; 圖5B係根據本發明實施例之核芯之範例實施方式之方塊圖;圖6係根據本發明實施例之系統之方塊圖;圖7係根據本發明實施例之第二系統之方塊圖;圖8係根據本發明實施例之第三系統之方塊圖;圖9係根據本發明實施例之系統晶片之方塊圖;圖10揭示根據本發明實施例之處理器含有中央處理單元及可執行至少一指令的圖形處理單元;圖11係方塊圖,揭示根據本發明實施例之IP核芯之展開圖;圖12揭示根據本發明實施例之第一類型指令如何由不同類型處理器仿真;圖13揭示方塊圖,根據本發明實施例對比使用軟體指令轉換器將來源指令集中之二進制指令轉換成目標指令集中之二進制指令;圖14係根據本發明實施例之處理器之指令集架構之方塊圖;圖15係根據本發明實施例之處理器之指令集架構之詳細方塊圖;圖16係根據本發明實施例之用於處理器之指令集架構的執行管線之方塊圖;圖17係根據本發明實施例之供使用處理器之電子裝置之方塊圖;圖18係根據本發明實施例之用於加速集合運算執行 之範例系統說明;圖19係根據本發明實施例之用於加速集合運算執行之另一範例系統說明;圖20係方塊圖,揭示根據本發明實施例之集合運算邏輯單元;圖21係根據本發明實施例之將一組鍵值對加到硬體內容關聯資料結構之操作之說明;圖22係根據本發明實施例之將一組鍵值對加到硬體內容關聯(CAM)資料結構之內容的方法之說明;圖23係根據本發明實施例之操作判定輸入組鍵值對中之任意鍵是否匹配於目前儲存在硬體內容關聯(CAM)資料結構中之鍵值對之鍵之說明;圖24係根據本發明實施例之判定輸入組鍵值對中之任意鍵是否匹配於目前儲存在硬體內容關聯(CAM)資料結構中之鍵值對之鍵的方法之說明;圖25係根據本發明實施例用於判定硬體內容關聯(CAM)資料結構之目前長度的操作之說明;圖26係根據本發明實施例用於判定硬體內容關聯(CAM)資料結構之目前長度的方法之說明;圖27係根據本發明實施例用於重置硬體內容關聯(CAM)資料結構之內容的操作之說明;圖28係根據本發明實施例用於重置硬體內容關聯(CAM)資料結構之內容的方法之說明;圖29係根據本發明實施例用於移動硬體內容關聯 (CAM)資料結構之內容至記憶體的操作之說明;圖30係根據本發明實施例用於移動硬體內容關聯(CAM)資料結構之內容至記憶體的方法之說明;圖31係根據本發明實施例使用硬體內容關聯(CAM)資料結構選擇性執行一集合運算的方法之說明。
【發明內容及實施方式】
文後說明揭述用於加速在一處理設備上之集合運算之執行的指令及處理邏輯。此一處理設備包括亂序處理器。在文後說明中陳述許多特定細節像是處理邏輯、處理器類型、微架構狀況、事件、致能機制、及類似者,以便提供對本發明實施例之徹底瞭解。惟,習於此技者可以瞭解的是諸實施例可以在沒有這些特定細節下實施。此外,一些習知結構、電路、及類似者並未詳細揭示,以免不必要地模糊本發明之實施例。
儘管文後之實施例揭述參考於一處理器,其他實施例可應用在其他類型積體電路及邏輯裝置。本發明實施例之類似技術及教義可應用在受益於較高管線流通量及改善性能的其他類型電路或半導體裝置。本發明實施例之教義可應用在執行資料調處的任意處理器或機器。惟,諸實施例並不限於執行512位元、256位元、128位元、64位元、32位元、或16位元資料操作的處理器或機器,並且應用在可執行資料調處或管理的任意處理器或機器。此外,文後說明提供範例,且附圖揭示許多範例以供說明。惟,這 些範例不應該以限制意味解讀,因為其僅為了提供本發明實施例之範例,而非排除本發明實施例之所有可行的實施方式。
儘管以下之範例在執行單元及邏輯電路之上下文中揭述指令操作及分配,本發明之其他實施例可以藉由儲存於一機器可讀取、實體媒體上的資料或指令來完成,當資料或指令由一機器執行時促使機器執行和本發明之至少一實施例一致的功能。在一實施例中,和本發明實施例相關聯之功能係以機器可執行之指令的形式具體實施。指令可用於促使一使用指令編程之一般用途或特殊用途處理器執行本發明之步驟。本發明實施例可以提供作為一電腦程式產品或軟體,其包括一有指令儲存於其上的機器或電腦可讀媒體,指令可用於編程一電腦(或其他電子裝置)以便執行根據本發明實施例之一或多項操作。再者,本發明實施例之步驟可由特定硬體組件執行,其含有固定功能邏輯,供執行步驟,或者藉由編程電腦組件與固定功能硬體組件之任意組合執行。
用於編程邏輯以執行本發明實施例的指令可以儲存於系統中之一記憶體內,像是動態隨機存取記憶體(DRAM)、快取、快閃記憶體、或其他儲存裝置。再者,指令可以經由一網路或藉由其他電腦可讀媒體分配。所以一機器可讀媒體可包括用於儲存或傳送一機器(例如,電腦)可讀形式資訊的任意機制,但是不限於軟碟、光碟、光碟唯讀記憶體(CD-ROM)、及磁光碟、唯讀記 憶體(ROM)、隨機存取記憶體(RAM)、可抹除可編程唯讀記憶體(EPROM)、電可抹除可編程唯讀記憶體(EEPROM)、磁性或光學卡、快閃記憶體、或一用於經由電氣性、光學性、音響性或其他傳播信號形式(例如,載波、紅外線信號、數位信號、等等)傳送資訊於網際網路上的實體機器可讀儲存裝置。據此,電腦可讀媒體可包括任意類型之實體機器可讀媒體,適用於儲存或傳送一機器(例如,電腦)可讀形式電子指令或資訊。
一設計從產生到模擬到製造可經過許多階段。代表一設計的資料可以用許多方式來代表設計。首先,有助於模擬的是,硬體可以使用一硬體描述語言或另一功能性描述語言代表。此外,一具有邏輯及/或電晶體閘極之電路級模型可以在設計過程的一些階段產生。再者,設計可在一些階段達到代表硬體模型中之許多裝置之實體設置的資料等級。若是其中使用到一些半導體製造技術時,代表硬體模型的資料可以是指定許多特性在不同遮罩層上存在與否的資料,該特性係供產生積體電路用之遮罩。在設計之任意代表中,資料可用機器可讀媒體之任意形式儲存。一記憶體或一磁性或光學性儲存裝置像是碟片可以是機器可讀媒體,以經由調制或產生用於傳送資訊之光或電波所傳送的此資訊來儲存。當指示或載有碼或設計的電載波傳送,到達可執行電信號之複製、緩衝、或再傳送的程度時,新約複本即完成。因此,一通信供應商或網路供應商可以至少暫時將一實體機器可讀媒體儲存在一具體實施本發明實 施例之技術的物件上,像是編碼到一載波約資訊。
在現代處理器中,許多不同執行單元可用以處理及執行多類型之碼及指令。一些指令可能較快完成,而其他則需要大量時脈週期來完成。指令流通量越快,處理器之整體性能越佳。所以有利的是有許多指令執越快越好。惟,某些指令較為複雜,並且在執行時間及處理器來源上要求更多,像是浮點指令、載入/儲存操作、資料移動、等等。
由於較多電腦系統使用在網際網路、電文、及多媒體應用,附加之處理器支援已長時間使用。在一實施例中,一指令集相關聯於一或多個電腦架構,其包括資料類型、指令、暫存器架構、定址模式、記憶體架構、中斷與異常處置、及外部輸入/輸出(I/O)。
在一實施例中,指令集架構(ISA)可由一或多個微架構實施,微架構可包括處理器邏輯及電路,用於實施一或多個指令集。據此,具有不同微架構之處理器可以共用一共同指令集的至少部分。例如,Intel® Pentium 4處理器、Intel® CoreTM處理器、及取自加州桑尼維爾市Advanced Micro Devices,Inc.之處理器皆執行x86指令集之幾乎相同版本(有些延伸已經加上較新版本),但是有不同內部設計。同樣地,由其他處理器研發公司(例如,ARM Holdings,Ltd.MIPS、或其被授權人或用戶)設計之處理器可以共用一共同指令集的至少部分,但是可包括不同處理器設計。例如,ISA之相同暫存器架構可以在使用 新的或習知技術的不同微架構中以不同方式實施,包括專屬實體暫存器、一或多個使用暫存器重新命名機制的動態配置實體暫存器(例如,使用暫存器別名表(RAT)、重排序緩衝器(ROB)及止用暫存器檔)。在一實施例中,暫存器可包括一或多個暫存器、暫存器架構、暫存器檔、或可由或不由軟體程式設計師定址之其他暫存器組。
一指令集包括一或多個指令格式。在一實施例中,一給定指令格式指示多個欄位(位元數、位元位置、等等),以便在其他事項之外指定欲執行之操作及供操作在其上執行之運算元。在另一實施例中,一些指令格式藉由指令樣板之界定而進一步細分(或子格式)。例如,一給定指令格式之指令樣板可以界定成具有指令格式欄位之不同子集及/或界定成具有一不同解讀之給定欄位。在一實施例中,一指令可使用指令格式表示(且若界定時是在該指令格式之指令樣板之一給定者內)並且指定或指示出操作及可供操作執行之運算元。
科學上、金融上、自動向量化之一般用途、RMS(辨識、採礦、及合成)、及視覺與多媒體應用(例如,2D/3D圖形、影像處理、視訊壓縮/解壓縮、語音辨識演算法及音訊調處)需要在大量資料項目上執行相同之操作。在一實施例中,單指令多資料(SIMD)即關於一指令類型,其促使一處理器在多數個資料項目上執行一操作。SIMD技術可用在將一暫存器中之位元邏輯式區分成多數個固定大小或可變大小之資料元件的處理器中,每一 資料元件代表各別值。例如,在一實施例中,在64位元暫存器中之位元可被組織成一含有4個各別16位元資料元件之來源運算元,各資料元件代表各別之16位元值。此資料類型稱為「緊縮」資料類型或「向量」資料類型,且此資料類型之運算元稱為緊縮資料運算元或向量運算元。在一實施例中,一緊縮資料項目或向量稱為儲存於一單一暫存器內的緊縮資料元件的一序列,且一緊縮資料運算元或向量運算元為一SIMD指令之來源或目的地運算元(或「緊縮資料指令」或「向量指令」)。在一實施例中,一SIMD指令指定在兩來源向量運算元上執行一單一向量運算,以產生具有相同或不同資料元件數量、且相同或不同資料元件順序之相同或不同大小的目的地向量運算元(亦稱為一生成向量運算元)。
SIMD技術,像是具有指令集包括x86、MMXTM、資料流SIMD延伸(SSE)、SSE2、SSE3、SSE4.1、及SSE4.2指令的Intel® CoreTM處理器,ARM處理器,像是具有指令集包括向量浮點(VFP)及/或NEON指令的ARM Cortex®系列處理器,及MIPS處理器,像是Institute of Computing Technology(ICT)of the Chinese Academy of Sciences研發的Loongson系列處理器所用者,其已在應用性能上達成重大改善(CoreTM及MMXTM為加州聖塔克拉拉郡之Intel Corporation的註冊商標)。
在一實施例中,目的地及來源暫存器/資料可以是同屬項目,代表相對應資料或操作之來源及目的地。在一實 施例中,其可由暫存器、記憶體、或具有上述以外名稱或功能之其他儲存區域實施。例如,在一實施例中,「DEST1」可以是一暫時性儲存暫存器或其他儲存區域,而「SRC1」及「SRC2」可以是第及第二來源儲存暫存器或其他儲存區域,等等。在其他實施例中,二個以上之SRC及DEST儲存區域係對應於同一儲存區域(例如,一SIMD暫存器)內之不同資料儲存元件。在一實施例中,其中一來源暫存器也作為目的地暫存器,例如藉由將在第一及第二來源資料上執行之一操作之結果寫回到使用作為一目的地暫存器的兩來源暫存器的其中之一。
圖1A係根據本發明實施例由一處理器形成之一示範性電腦系統之方塊圖,處理器包括執行單元,用於執行一指令。系統100可包括一組件,像是根據本發明實施例之一處理器102,其使用包括有邏輯之執行單元,以執行程序資料用之演算,如本文內所述之實施例者。系統100可以代表取自加州聖塔克拉拉郡Intel Corporation之PENTIUM® III、PENTIUM® 4、XeonTM、Itanium®、XScaleTM及/或StrongARMTM微處理器的處理系統,儘管其他系統也可以使用(包括具有其他微處理器、工程工作站、機上盒及類似者的PC)。在一實施例中,樣品系統100可執行取自華盛頓州雷德蒙德市之WINDOWSTM操作系統的一版本,儘管其他操作系統(例如,UNIX及Linux)、嵌入式軟體、及/或圖形使用者介面也可以使用。因此,本發明之實施例不限於硬體電路及軟體之任意 特定組合。
實施例不限於電腦系統。本發明之實施例可用在其他裝置中,像是手持式裝置及嵌入式應用。手持式裝置之一些範例包括行動電話、網際網路協定裝置、數位相機、個人數位助理(PDA)、及手持式PC。嵌入式應用可包括微控制器、數位信號處理器(DSP)、系統晶片、網路電腦(NetPC)、機上盆、網路集線器、廣域網路(WAN)開關、或者可根據至少一實施例執行一或多個指令的任意其他系統。
電腦系統100可包括一處理器102,處理器可包括一或多個執行單元108,用於執行演算,以執行根據本發明實施例之至少一指令。一實施例揭述於單一處理器桌上型電腦或伺服器系統之上下文內,但是其他實施例可以包括在一多處理器系統內。系統100可以是一「集線器」系統架構之範例。系統100可包括一處理器102,用於處理資料信號。處理器102可包括一複雜指令集電腦(CISC)微處理器、精簡指令集電腦(RISC)微處理器、超長指令字(VLIW)微處理器、一實施指令集組合之處理器、或任意其他處理器裝置,例如像是數位信號處理器。在一實施例中,處理器102可耦合於一處理器匯流排110,處理器匯流排傳送資料信號於處理器102與系統100中之其他組件之間。系統100之元件可執行習於此技者所熟知的一般功能。
在一實施例中,處理器102可包括第一階(L1)內部 快取記憶體104。依據架構,處理器102具有一單一內部快取或多階之內部快取。在其他實施例中,快取記憶體可設於處理器102外。其他實施例也可以依據特殊實施方式及需要而兼具內部與外部快取。暫存器檔106可將不同類型資料儲存於許多暫存器中,包括整數暫存器、浮點暫存器、狀態暫存器、及指令指標暫存器。
執行單元108(包括用於執行整數與浮點運算之邏輯)也設在處理器102內。處理器102也可以包括一微碼(ucode)ROM,儲存特定巨指令用之微碼。在一實施例中,執行單元108可包括邏輯,以操縱一緊縮指令集109。藉由涵括緊縮指令集109於一般用途處理器102之指令集中,伴隨著用於執行指令的相關聯電路,許多多媒體應用所使用之操作可以使用一般用途處理器102中之緊縮資料來執行。因此,許多多媒體應用藉由使用一處理器資料匯流排之全寬來執行操作於緊縮資料上而得以加速且較有效率執行。此可消除將資料之較小單元轉移通過處理器資料匯流排的必要性,以利於一次執行一資料元件一或多次操作。
一執行單元108之實施例也可以使用在微控制器、嵌入式處理器、圖形裝置、DSP、及其他類型邏輯電路。系統100可包括一記憶體120。記憶體120可以實施作為動態隨機存取記憶體(DRAM)裝置、靜態隨機存取記憶體(SRAM)裝置、快閃記憶體裝置、或其他記憶體裝置。記憶體120可以儲存由記憶體120執行之資料信號所代表 的指令119及/或資料121。
一系統邏輯晶片116可耦合於處理器匯流排110及記憶體120。系統邏輯晶片116可包括一記憶體控制器集線器(MCH)。處理器102可以經由處理器匯流排110來和MCH 116通信。MCH 116提供一高頻寬記憶體路徑118於記憶體120,用於指令119與資料121之儲存以及用於圖形命令、資料與紋理之儲存。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耦合於輸入/輸出控制器集線器(ICH)130。在一實施例中,ICH 130可以經由一本地I/O匯流排提供直接連接至一些I/O裝置。本地I/O匯流排可包括一高速I/O匯流排,用於連接周邊裝置至記憶體120、晶片組、及處理器102。範例可包括音頻控制器129、韌體集線器(快閃基本輸入輸出系統(BIOS))128、無線收發器126、資料儲存裝置124、含有使用者輸入介面125(可包括一鍵盤介面)的舊有I/O控制器123、序列擴充埠127(像是通用序列匯流排(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變換、快速傅立葉變換(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(以165B揭示),以便解碼指令集163之指令。處理核芯170亦可包括附加之電路(圖中未示),俚是其對於本發明實施例之瞭解並非必要。
操作時,主處理器166執行一資料處理指令串流,以控制一般類型之控制資料處理操作,包括和快取記憶體167及輸入/輸出系統168的互動。嵌入於資料處理指令串流內的可以是SIMD共處理器指令。主處理器166之解碼器165將這些SIMD共處理器指令辨識成一應該由一附接SIMD共處理器161執行之類型。據此,主處理器166發送這些SIMD共處理器指令於共處理器匯流排171上。來自共處理器匯流排171的這些指令則由任何附接之SIMD共處理器接收。在此情況下,SIMD共處理器161接收並執行任何接收到的預期SIMD共處理器指令。
資料可以經由無線介面169接收,以供SIMD共處理器指令處理。舉例而言,語音通信可以用數位信號形式接收,數位信號由SIMD共處理器指令處理,以再生語音通信之數位音頻樣本代表。舉另例而言,壓縮之音頻及/或視頻可以用數位位元流形式接收,數位位元流由SIMD共處理器指令處理,以再生數位音頻樣本及/或運動視訊框。在處理核芯170之一實施例中,主處理器171及SIMD共處理器161可以整合於單一處理核芯170中,處理核芯包含一執行單元162、一組暫存器檔164、及一解碼器165,用於辨識包括一實施例之指令在內的指令集163之指令。
圖2係根據本發明實施例之用於一處理器200之微架構之方塊圖,處理器包括邏輯電路,用於執行指令。在一些實施例中,根據一實施例之指令可以實施成在具有位元 組、字元、雙字、四字、等等大小,以及資料類型(例如,單及雙精度整數及浮點資料類型)的資料元件上操作。在一實施例中,有序前端201可實施處理器200的一部分,處理器擷取待執行之指令並且準備稍後在處理器管線中待使用之指令。前端201包括多數個單元。在一實施例中,指令預取器226從記憶體擷取指令並將指令饋送到一指令解碼器228,依序解碼或解譯指令。例如,在一實施例中,解碼器將一接收到的指令解碼成一或多個稱為「微指令」或「微操作」(亦稱為微op或uop)之操作,可供機器執行。在其他實施例中,解碼器將指令剖析成一運算碼及對應之資料與控制欄位,可供微架構使用,以根據一實施例執行操作。在一實施例中,跡線快取230將解碼之uop組裝成程式序列或uop佇列234中之跡線,以供執行。當跡線快取230遭遇到一複雜指令時,微碼ROM 232即提供所需之uop以完成操作。
有些指令可以轉換成單一uop,而其他的則需要多個uop來完成全部操作。在一實施例中,若需要四個以上的uop來完成一指令,解碼器228可存取微碼ROM 232以執行指令。在一實施例中,一指令可解碼成少量uop,以供在指令解碼器228處理。在另一實施例中,如果需要多個uop來完成操作,一指令可儲存於微碼ROM 232內。跡線快取230參考於一登錄點可編程邏輯陣列(PLA),以判定一供讀取微碼序列之正確微指令點,而從微碼ROM 232完成根據一實施例之一或多個指令。在微碼ROM 232針 對一指令而完成uop之排序後,機器之前端201可以恢復從跡線快取230擷取uop。
亂序執行引擎203可備便指令以供執行。亂序執行邏輯具有多數緩衝器,用於使指令流順暢且重新排序,在其來到管線且經排程以作執行時可使性能最佳化。在配置器/暫存器重新命名器215中之配置邏輯則配置各uop需要的機器緩衝器及資源以便執行。在配置器/暫存器重新命名器215中之暫存器重新命名邏輯將邏輯暫存器重新命名於一暫存器檔中之登錄點上。配置器215亦針對兩uop佇列的其中之一內的各uop配置一登錄點於指令排程器前,一佇列用於記憶體操作(記憶體uop佇列207)且一佇列用於非記憶體操作(整數/浮點微操作佇列205),排程器即:記憶體排程器209、快速排程器202、慢速/一般浮點排程器204、及簡單浮點排程器206。uop排程器202、204、206基於其相依性輸入暫存器運算元來源之準備度及uop需要完成其操作之執行資源可用性來判定一uop何時準備執行。一實施例之快速排程器202可以每半個主時脈週期排程一次,而其他排程器則是每一主處理器時脈週期僅排程一次。排程器針對配送埠仲裁,以便排程uop供作執行。
暫存器檔208、210可配置於排程器202、204、206與執行區塊211中的執行單元212、214、216、218、220、222、224之間。暫存器檔208、210各別執行整數與浮點操作。各暫存器檔208、210包括一旁路網路,可 以將尚未寫入暫存器檔之剛完成結果略過或轉送到新的相依性uop。整數暫存器檔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位元浮點除法器,以執行除法、平方根、及其餘uop。在許多實施例中,關於一浮點值之指令可由浮點硬體處理。在一實施例中,ALU操作可傳送至高速ALU執行單元216、218。高速ALU 216、218使用半時脈週期之有效潛時執行快速操作。在一實施例中,最複雜的整數操作則到慢速ALU 220,因為慢速ALU 220可包括整數執行硬體,用於長潛時之操作類型,像是多工器、移位、旗標邏 輯、及分支處理。記憶體載入/儲存操作可由AGU 212、214執行。在一實施例中,整數ALU 216、218、220在64位元資料運算元上執行整數操作。在一實施例中,ALU 216、218、220可以實施成支援許多資料位元大小,包括16、32、128、256、等等。同樣地,浮點單元222、224可以實施成支援某範圍之具有不同寬度位元的運算元。在一實施例中,浮點單元222、224可以在和SIMD及多媒體指令相關的128位元寬之緊縮資料運算元上操作。
在一實施例中,uop排程器202、204、206是在母負載已經完成執行前先配送相依性操作。由於可以在處理器200中推測式地排程及執行,處理器200也包括用於處理記憶體遺央之邏輯。若一資料負載遺失於資料快取中,則在留給排程器暫時性不正確資料的管線中會有相依性操作。一重新進行機制追蹤並且重新執行使用不正確資料的指令。只有相依性操作可能需要重新進行且無關者可以容許完成。一處理器之一實施例之排程器及重新進行機制也可以設計成捕捉指令列,以供文字串比較操作。
術語「暫存器」是指機載處理器儲存位置,可以使用作為指令的一部分,以識別運算元。換句話說,暫存器可以從處理器外部使用(從程式設計師觀點來看)。惟,在一些實施例中,暫存器不限於特定電路類型。反而,暫存器可儲存資料、提供資料、及執行本文內所述之功能。本文內所述之暫存器可由一使用任意數量不同技術之處理器內的電路來實施,像是專用實體暫存器、使用暫存器重新 命名之動態配置實體暫存器、專用與動態配置實體暫存器之組合、等等。在一實施例中,整數暫存器儲存32位元之整數資料。一實施例之暫存器檔亦含有8個多媒體SIMD暫存器,供緊縮資料使用。針對文後之探討,暫存器可以瞭解為被設計用來保留緊縮資料之資料暫存器,像是加州聖塔克拉拉郡Intel Corporation之以MMX科技致能之微處理器中的64位元寬MMXTM暫存器(在某些情況中亦稱之為「mm」暫存器)。這些可兼具整數與浮點形式之MMX暫存器可以使用伴隨有SIMD及SSE指令的緊縮資料元件操作。同樣地,相關於SSE2、SSE3、SSE4、或在此之外者(概括稱之為「SSEx」)技術的128位元寬MMX暫存器可保留這些緊縮資料運算元。在一實施例中,儲存緊縮資料及整數資料時,暫存器不需要在兩資料類型之間差異化。在一實施例中,整數與浮點資料可包含在相同或不同暫存器檔中。再者,在一實施例中,浮點與整數資料可儲存在不同或相同暫存器中。
在以下圖式之範例中揭述多數個資料運算元。圖3A揭示根據本發明實施例之多媒體暫存器中之許多緊縮資料類型代表。圖3A揭示之資料類型是用於緊縮位元組310、緊縮字320、及用於128位元寬運算元之緊縮雙字(dword)330。本範例之緊縮位元組格式310可以是128位元長並含有16緊縮位元組資料元件。一位元組例如可以界定為8位元的資料。用於各位元組資料元件之資訊可供位元組0儲存於位元7至位元0,供位元組1儲存於位 元15至位元8,供位元組2儲存於位元23至位元16,及最後供位元組15儲存於位元120至位元127。因此,所有可取得之位元皆用在暫存器中。此儲存配置方式增加了處理器之儲存效率。以及,藉由16資料元件存取,一操作現在即可在16資料元件上並行地執行。
通常,一資料元件包括一和相同長度之其他資料元件儲存在單一暫存器或記憶體位置中的各別資料件。在相關於SSEx技術之緊縮資料列中,儲存在一MMX暫存器中之資料元件數可以是128位元除以各別資料元件之位元長度。同樣地,在相關於MMX及SSE技術之緊縮資料列中,儲存在一MMX暫存器中之資料元件數可以是64位元除以各別資料元件之位元長度。儘管圖3A中所示之資料類型為128位元長,本發明實施例也可以用64位元寬或其他大小之運算元操作。本範例之緊縮字格式320可以是128位元長並且含有8緊縮字資料元件。各緊縮字含有16位元的資訊。圖3A之緊縮雙字格式330可以是128位元長並且含有4緊縮雙字資料元件。各緊縮雙字資料元件含有32位元的資訊。一緊縮四字可以是128位元長並且含有2緊縮四字資料元件。
圖3B揭示根據本發明實施例之可行暫存器中資料儲存格式。各緊縮資料可包括一個以上之獨立資料元件。圖中揭示三個緊縮資料格式,即緊縮半341、緊縮單342、及緊縮雙343。緊縮半341、緊縮單342、及緊縮雙343之一實施例含有固定點資料元件。針對另一實施例,緊縮 半341、緊縮單342、及緊縮雙343之一或多個可以含有浮點資料元件。緊縮半341之一實施例可以是含有8個16位元資料元件之128位元長。緊縮單342之一實施例可以是含有4個32位元資料元件之128位元長。緊縮雙343之一實施例可以是含有2個64位元資料元件之128位元長。應該瞭解的是這些緊縮資料格式可以進一步延伸到其他暫存器長度,例如96位元、160位元、192位元、224位元、256位元或以上。
圖3C揭示根據本發明實施例之多媒體暫存器中之許多有符號與無符號之緊縮資料類型代表。無符號緊縮位元組代表344揭示一無符號緊縮位元組在一SIMD暫存器中之儲存。用於各位元組資料元件的資訊可供位元組0儲存於位元7至位元0,供位元組1儲存於位元15至位元8,供位元組2儲存於位元23至位元16,及最後供位元組15儲存於位元120至位元127。因此,所有可取得之位元皆用在暫存器中。此儲存配置方式增加了處理器之儲存效率。以及,藉由16資料元件存取,一操作現在即可在16資料元件上以並行方式執行。有符號緊縮位元組代表345揭示一有符號緊縮位元組之儲存。請注意每一位元組資料元件之第8位元可以是符號指示元。無符號緊縮字暫存器中代表346揭示字元7至字元0如何儲存在一SIMD暫存器中。有符號緊縮字代表347相似於無符號緊縮字暫存器中代表346。請注意每一字元資料元件之第16位元可以是符號指示元。無符號緊縮雙字暫存器中代表348揭示雙 字資料元件如何儲存。有符號緊縮雙字代表349相似於無符號緊縮雙字暫存器中代表348。請注意所需之符號位元可以是每一雙字元資料元件之第32位元。
圖3D揭示一操作編碼(運算碼)之實施例。再者,格式360可包括暫存器/記憶體運算元定址模式,其對應於「IA-32 Intel Architecture Software Developer’s Manual Volume 2:Instruction Set Reference」中所述之運算元格式類型,該文獻是出自加州聖塔克拉拉郡Intel Corporation之全球資訊網(www)的intel.com/design/litcentr。在一實施例中,一指令可由欄位361、362之一或多個來編碼。每個指令可識別多達兩運算元位置,包括多達兩來源運算元識別符364、365。在一實施例中,目的地運算元識別符366可以和來源運算元識別符364相同,而在其他實施例中則其為相異。在另一實施例中,目的地運算元識別符366可以和來源運算元識別符365相同,而在其他實施例中則其為相異。在一實施例中,經由來源運算元識別符364、365識別之其中一來源運算元可以藉由文字串比較操作的結果來重寫,而在其他實施例中識別符364對應於一來源暫存器元件且識別符365對應於一目的地暫存器元件。在一實施例中,運算元識別符364、365可以識別32位元或64位元的來源及目的地運算元。
圖3E揭示根據本發明實施例之具有40個以上位元之另一可行操作編碼(運算碼)格式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。共處理器之一實施例可在8、16、32、及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包括一前端單元430耦合於一執行引擎單元450,且兩者皆耦合於一記憶體單元470。
核芯490可以是一精簡指令集計算(RISC)核芯、複雜指令集計算(CISC)核芯、超長指令字(VLIW)核芯、或混合式或替代式核芯類型。在一實施例中,核芯490可以是一特殊用途核芯,例如像是一網路或通信核芯、壓縮引擎、圖形核芯、或類似者。
前端單元430包括一分支預測單元432耦合於一指令快取單元434。指令快取單元434耦合於一指令轉譯後備緩衝器(TLB)436。TLB 436則耦合於一指令擷取單元438,指令擷取單元耦合於一解碼單元440。解碼單元440可解碼指令,且產生作為輸出一或多個微操作、微碼輸入點、微指令、其他指令、或其他控制信號,其係從原始指令解碼、或反映、或導出。解碼器可以使用許多不同機構實施。適合之機構範例包括但是不限定的有查詢表、硬體實施方式、可編程邏輯陣列(PLA)、微碼唯讀記憶體(ROM)、等等。在一實施例中,指令快取單元434進一步耦合於記憶體單元470中之第二階(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,記憶體單元包括一資料TLB單元472,資料TLB單元耦合於一資料快取單元474,資料快取單元耦合於一第二階(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® Hyperthreading技術。
儘管暫存器重新命名揭述於亂序執行之內文中,應該瞭解的是暫存器重新命名可用在有序架構。儘管處理器之揭示實施例亦包括個別指令與資料快取單元434/474及一共用L2快取單元476,替代實施例可具有一同時用於指令與資料之單一內部快取,例如第一階(L1)內部快取,或多階內部快取。在一些實施例中,系統可包括一內部快取與一設於核芯及/或處理器外之外部快取的組合。在另一實施例中,所有快取皆在核芯及/或處理器外。
圖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包括一或多個中階快取,像是第二階(L2)、第三階(L3)、第四階(L4)、或其他階快取、最末階快取(LLC)、及/或其組合。
在許多實施例中,一或多個核芯502可執行多執行緒。系統代理510可包括用於協調與操作核芯502的組 件。系統代理510例如包括一電力控制單元(PCU)。PCU可以是或包括用於調節核芯502之電力狀態所需的邏輯及組件。系統代理510包括一顯示引擎512,用於驅動一或多個外接顯示器或圖形模組560。系統代理510包括一介面514,作為圖形用之通信匯流排。在一實施例中,介面514是由周邊組件互連高速(PCIe)標準實施。在又一實施例中,介面514可由周邊組件互連高速圖形(PEG)標準實施。系統代理510包括一直接媒體介面(DMI)516。DMI 516提供一電腦系統之母板或其他部位上的不同橋接器之間的鏈接。系統代理510包括一PCIe橋接器518,用於提供PCIe鏈接至一電腦系統之其他元件。PCIe橋接器518可以使用一記憶體控制器520及連貫性邏輯522實施。
核芯502可依任意適當方式實施。核芯502在架構及/或指令集上可以是同質性或異質性。在一實施例中,有些核芯502可以是有序而其他是亂序。在另一實施例中,二個以上的核芯502執行相同指令集,而其他僅執行該指令集之一子集或一不同指令集。
處理器500可包括一般用途處理器,像是取自加州聖塔克拉拉郡Intel Corporation之CoreTM i3、i5、i7、2 Duo and Quad、XeonTM、ItaniumTM、XScaleTM或StrongARMTM處理器。處理器500可由另一公司提供,像是ARM Holdings,Ltd、MIPS、等等。處理器500可以是特殊用途處理器,例如像是網路或通信處理器、壓縮引擎、圖形處 理器、共處理器、嵌入式處理器、或類似者。處理器500可在一或多個晶片上實施。處理器500可以是一或多個基板之一部分及/或使用許多製程技科之任一者實施於基板上,例如像是BiCMOS、CMOS、或NMOS。
在一實施例中,給定之快取506可由多數個核芯502共用。在另一實施例中,給定之快取506可專用於核芯502其中之一。快取506對核芯502之指定可以由一快取控制器或其他適當機制處理。給定之快取506可藉由實施給定之快取506的劃分時段而供多數個核芯502共用。
圖形模組560可以實施一整合式圖形處理子系統。在一實施例中,圖形模組560可包括一圖形處理器。再者,圖形模組560可包括一媒體引擎565。媒體引擎565提供媒體編碼及視頻編碼。
圖5B係根據本發明實施例之一核芯502之範例實施方式之方塊圖。核芯502可包括一前端570,係通信耦合於一亂序引擎580。核芯502可以經由快取階層503通信耦合於處理器500之其他部分。
前端570可依任意適當方式實施,像是全部或部分藉由上述前端201。在一實施例中,前端570可以經由快取階層503來和處理器500之其他部分通信。在另一實施例中,前端570可以從處理器500之部分擷取指令並且在指令傳送至亂序執行引擎580時準備稍後欲使用在處理器管線中之指令。
亂序執行引擎580可依任意適當方式實施,像是全部 或部分藉由上述前端203。亂序執行引擎580可以準備從前端570接收到之指令,以供執行。亂序執行引擎580可包括一配置模組582。在一實施例中,配置模組582可配置處理器500之資源或其他資源,以執行一給定之指令。配置模組582可在排程器中配置,像是記憶體排程器、快速排程器、或浮點排程器。諸此排程器可在圖5B中以資源排程器584代表。配置模組582可以全部或部分由圖2相關揭述之配置邏輯實施。資源排程器584基於一給定資源來源之準備度及執行一指令所需之執行資源可用性來判定一指令何時準備執行。資源排程器584例如可以藉由上述排程器202、204、206實施。資源排程器584在一或多個資源上排程指令之執行。在一實施例中,資源可以在核芯502內部,並且例如揭示為資源586。在一實施例中,資源可以在核芯502外部,並且例如可供階層503存取。資源包括記憶體、快取、暫存器檔、或暫存器。在圖5B中,在核芯502內部之資源由資源586代表。寫入或讀取資源586之值有必要使用處理器500之其他部分協調,例如經由階層503。由於資源為指定資源,其可置入一重排序緩衝器588中。重排序緩衝器588在指令執行時追蹤指令並且基於處理器500之任意適當準則將其執行選擇性重排序。在一實施例中,重排序緩衝器588可識別獨立執行之指令或一系列指令。諸此指令或一系列指令可以彼此並行地執行。在核芯502內並行執行可以藉由任意適當數量之個別執行區塊或虛擬處理器執行。在一實施例中,共用 資源-像是記憶體、暫存器、及快取-可存取於一給定核芯502內之多數個虛擬處理器。在一實施例中,共用資源可存取於處理器500內之多數個處理實體。
快取階層503可依任意適當方式實施。例如,快取階層503包括一或多個低或中階快取,像是快取572、574。在一實施例中,快取階層503包括一最後級快取(LLC)595,其通信耦合於快取572、574。在另一實施例中,LLC 595可在一模組590中實施,模組可存取於處理器500之所有處理實體。在又一實施例中,模組590可在Intel,Inc.之處理器之非核芯模組中實施。模組590包括處理器500之部分或子系統,即核芯502之執行上所需者,但是不見得在核芯502內實施。除LLC 595外,模組590例如包括硬體介面、記憶體連貫性協調器、處理器間的互連、指令管線、或記憶體控制器。存取於處理器500之RAM 599可以經由模組590達成,更明確地說是LLC 595。再者,核芯502之其他例子同樣可存取模組590。核芯502之例子之協調有一部分可以經由模組590達成。
圖6-8揭示適用於包括有處理器500之示範系統,而圖9揭示一示範系統晶片(SOC),其可包括一或多個核芯502。用於膝上型、桌上型、掌上型個人電腦、個人數位元化助理、工程工作站、伺服器、網路裝置、網路集線器、開關、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視訊遊戲機、機上盒、微控制器、行動電話、可攜式媒體播放器、掌上型裝置、及許多其他電子裝置之習 知技術之其他系統設計及實施方式也適用。大抵上,可併入本文內所述之一處理器及/或其他執行邏輯的廣泛系統或電子裝置皆大致適用。
圖6揭示根據本發明實施例之一系統600之方塊圖。系統600可包括一或多個處理器610、615,其耦合於一圖形記憶體控制器集線器(GMCH)620。附加處理器615之選項性性質係在圖6中以虛線表示。
各處理器610、615可以是處理器500之某些版本。惟,應該注意的是整合式圖形邏輯與整合式記憶體控制器單元可以不設在處理器610、615內。圖6揭示GMCH 620耦合於一記憶體640,記憶體例如可以是一動態隨機存取記憶體(DRAM)。就至少一實施例而言,DRAM和一非揮發性快取相關聯。
GMCH 620可以是一晶片組、或一晶片組之部分。GMCH 620可以和處理器610、615通信並且控制處理器610、615與記憶體640之間的互動。GMCH 620也可以作為處理器610、615與系統600之其他元件之間的一加速匯流排。在一實施例中,GMCH 620經由多點匯流排(例如,前側匯流排(FSB)695)來和處理器610、615通信。
再者,GMCH 620可耦合於一顯示器645(例如,平板顯示器)。在一實施例中,GMCH 620包括一整合式圖形加速器。GMCH 620進一步耦合於一輸入/輸出(I/O)控制器集線器(ICH)650,用於將許多周邊裝置耦合於系 統600。外部圖形裝置660可包括一分散之圖形裝置,其隨著另一周邊裝置670耦合於ICH 650。
在其他實施例中,附加或不同的處理器也可以設在系統600中。例如,附加之處理器610、615包括和處理器610相同之附加處理器、異質或不對稱於處理器610之附加處理器、加速器(例如像是圖形加速器或數位信號處理(DSP)單元)、場可編程閘極陣列、或任意其他處理器。依據指標量度範圍,包括架構上、微架構上、溫度上、耗電特徵、及類似者,實體資源610、615之間有許多差異。這些差異使其本身有效地在處理器610、615之間呈現出不對稱及異質性。就至少一實施例而言,許多處理器610、615設在相同晶粒封裝內。
圖7揭示根據本發明實施例之第二系統700之方塊圖。如圖7中所示,多處理器系統700包括一點對點互連系統,且包括透過一點對點互連750耦合之第一處理器770及第二處理器780。處理器770、780各為處理器500之某些版本,如同處理器610、615之一或多者。
儘管圖7揭示兩處理器770、780,應該瞭解的是本發明之範疇並非如此限制。在其他實施例中,一或多個附加之處理器可設於一給定之處理器中。
處理器770、780揭示成分別包括整合式記憶體控制器單元772、782。處理器770亦包括點對點(P-P)介面776、778,做為其匯流排控制器單元之一部分;相似地,第二處理器780包括P-P介面786、788。處理器770、 780可以使用P-P介面電路778、788透過一點對點(P-P)介面750交換資訊。如圖7中所示,IMC 772、782將處理器耦合於個別記憶體,亦即一記憶體732及一記憶體734,其可以是區域性附接於個別處理器之主記憶體的部分。
處理器770、780可以使用點對點介面電路776、794、786、798透過個別P-P介面752、754,以和一晶片組790交換資訊。在一實施例中,晶片組790也可以透過一高性能圖形介面739和高性能圖形電路738交換資訊。
一共用快取(圖中未示)可包括在兩處理器之任一者內或在其外,並且透過P-P互連與處理器連接,所以如果一處理器處於低電力模式,則任一或兩處理器之區域快取資訊可儲存於共用快取中。
晶片組790可以透過一介面796耦合於第一匯流排716。在一實施例中,第一匯流排716可以是周邊組件互連(PCI)匯流排,或是一例如PCI高速匯流排或另一第三代I/O互連匯流排,儘管本發明之範疇並非如此限制。
如圖7中所示,許多I/O裝置714可以隨著一匯流排橋接器718耦合於第一匯流排716,匯流排橋接器則將第一匯流排716耦合於第二匯流排720。在一實施例中,第二匯流排720可以是一低針腳數(LPC)匯流排。許多裝置可耦合於第二匯流排720,包括例如鍵盤及/或滑鼠722、通信裝置727及一儲存器單元728,像是磁碟驅動器或其他大容量儲存裝置,其在一實施例中可包括指令/ 碼及資料730。再者,一音頻I/O 724可耦合於第二匯流排720。應該注意的是,其他架構亦可行。例如取代圖7之點對點架構時,一系統可在一多點匯流排或其他這類架構中實施。
圖8揭示根據本發明實施例之第三系統800之方塊圖。圖7及8中之相同元件使用相同參考編號,且圖7之某些態樣已從圖8刪略,以避免模糊圖8之其他態樣。
圖8揭示處理器770、780各別包括整合式記憶體及I/O控制邏輯(CL)872、882。就至少一實施例而言,CL 872、882包括整合式記憶體控制器單元,像是相關於圖5及7中所述者。此外,CL 872、882也包括I/O控制邏輯。圖8揭示不僅記憶體732、734耦合於CL 872、882,I/O裝置814亦耦合於CL 872、882。舊I/O裝置815耦合於晶片組790。
圖9揭示根據本發明實施例之一系統晶片(SoC)900之方塊圖。圖5中之相同元件使用相同參考編號。再者,虛線框為較先進SoC上之選項性特徵。一互連單元902耦合於:一應用處理器910,其包括一組的一或多個核芯502A-N及共用快取單元506;一系統代理單元510;一匯流排控制器單元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、行動產 業處理器介面控制器1050、快閃記憶體控制器1055、雙資料率(DDR)控制器1060、安全引擎1065、及積體電路連線聲音(I2S/I2C)控制器1070。其他邏輯及電路可包括在圖10之處理器中,包括較多的CPU或GPU及其他周邊介面控制器。
至少一實施例之一或多個態樣可由儲存在一機器可讀媒體上之代表資料實施,代表處理器內之許多邏輯,當由一機器讀取時,其促使機器製成邏輯,以執行本文內所述之技術。諸此代表(俗稱為「IP核芯」)可儲存在一實體之機器可讀媒體(「帶」)上且供給至許多客戶或製造設施,以便載入實際製成邏輯或處理器之製造機器內。例如,ARM Holdings,Ltd.研發之CortexTM處理器系列之IP核芯及Institute of Computing Technology(ICT)of the Chinese Academy of Sciences研發之Loongson IP核芯皆獲許可或販售至許多客戶或獲許可者,像是Texas Instruments、Qualcomm、Apple、或Samsung,並且實施於由這些客戶或獲許可者生產之處理器中。
圖11係方塊圖,揭示根據本發明實施例之IP核芯之展開圖。儲存器1100可包括模擬軟體1120及/或硬體或硬體模型1110。在一實施例中,代表IP核芯設計之資料可經由記憶體1140(例如,硬碟)、有線連接(例如,網際網路)1150或無線連接1160提供至儲存器1100。由模擬工具及模型產生之IP核芯資料隨後傳送至一製造設施1165,在此由第三方製造,以便執行根據至少一實施 例之至少一指令。
在一些實施例中,一或多個指令係對應於第一類型或架構(例如,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轉換成原本即由未具有一x86指令集核芯之處理器1314執行的 碼。此轉換碼不易成為替代指令集二進制碼1310,因為可達成此目的之指令轉換器難以製造;惟,轉換碼可完成一般操作及由來自替代指令集之指令組成。因此,指令轉換器1312代表軟體、韌體、硬體、或其組合,其透過仿真、模擬或任意其他程式而容許一處理器或其他電子裝置不具有一x86指令集處理器或核芯,即可執行x86二進制碼1306。
圖14係根據本發明實施例之一處理器之一指令集架構1400之方塊圖。指令集架構1400可包括任意適當數量或類型之組件。
例如,指令集架構1400可包括處理實體,像是一或多個核芯1406、1407及一圖形處理單元1415。核芯1406、1407可以經由任意適當機制(例如,匯流排或快取)通信耦合於指令集架構1400之其餘者。在一實施例中,核芯1406、1407可以經由一L2快取控制1408通信耦合,L2快取控制包括一匯流排介面單元1409及一L2快取1411。核芯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晶片或模組1460。快閃控制器1445提供存取於記憶體,像是快閃記憶體1465或其他RAM實例。SPI主機單元1450提供存取於通信模組,像是一藍牙模組1470、高速3G數據機1475、全球定位系統模組1480、或實施通信標準如802.11之無線模組1485。
圖15係根據本發明實施例之一處理器之一指令集架構1500之詳細方塊圖。指令集架構1500可實施指令集架構1400之一或多個態樣。再者,指令集架構1500揭示用於一處理器內之指令執行的模組及機制。
指令集架構1500包括一記憶體系統1540,係通信耦合於一或多個執行實體1565。再者,指令集架構1500包括一快取與匯流排介面單元,像是通信耦合於執行實體1565與記憶體系統1540之單元1510。在一實施例中,指令載入執行實體1565可以藉由一或多個執行階段來執 行。這些階段例如包括指令預取階段1530、雙指令解碼階段1550、暫存器重新命名階段1555、發送階段1560、及寫回階段1570。
在一實施例中,記憶體系統1540可包括一執行指令指標1580。執行指令指標1580儲存一值,以識別一指令分支內的最老、未配送之指令。最老之指令是對應於最低程序指令(PO)。一PO可包括一指令之唯一號碼。此一指令可以是由多股代表之執行緒內之單一指令。PO可用於排序指令,以確保碼正確執行語意。PO可藉由機制重新建構,像是評估增量於指令中所編碼之PO而非一絕對值。重新建構之PO稱為「RPO」。儘管在本文是指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統一快取,像是0、128k、256k、512k、1M、或2M之記憶體位元組。在另一實施例中,單元1510可以在錯誤-修正碼記憶體中實施。在另一實施例中,快取1525執行和一處理器或電子裝置之其他部分形成介面的匯流排。在此實施例中,單元1510包括一匯流排介面單元1520,可供通信於一互連、處理器內的匯流排、處理器間的匯流排、或其他通信匯流排、埠、或線。匯流排介面單元1520提供介面以利執行例如記憶體及輸入/輸出位址之產生,供執行實體1565與指令集架構1500外部一系統部分之間的資料轉移。
為了進一步增進其功能,匯流排介面單元1520包括一中斷控制與分配單元1511,用於對一處理器或電子裝置之其部分產生中斷與其他通信。在一實施例中,匯流排介面單元1520包括一監聽控制單元1512,用於對多數個 處理核芯操縱怏取存取與連貫性。在又一實施例中,為了提供此功能,監聽控制單元1512包括一怏取至怏取轉移單元,其操縱不同快取之間的資訊交換。在再一實施例中,監聽控制單元1512包括一或多個監聽過濾器1514,其監視其他核芯(圖中未示)之連貫性,使得一快取控制器(例如,單元1510)不必直接執行此監視。單元1510包括任意數量之計時器1515,用以將指令集架構1500之動作同步化。再者,單元1510包括一AC埠1516。
記憶體系統1540包括任意適當數量與類型之機制,用於儲存供指令集架構1500之處理需求的資訊。在一實施例中,記憶體系統1540包括一載入儲存單元1546,用於儲存資訊,像是寫入或讀自記憶體或暫存器的緩衝器。在另一實施例中,記憶體系統1540包括一轉譯後備緩衝器(TLB)1545,其提供實體與虛擬位址之間的位址值查詢。在另一實施例中,記憶體系統1540包括一記憶體管理單元(MMU)1544,用於協助存取於虛擬記憶體。在另一實施例中,記憶體系統1540包括一預取器1543,用於在指令實際需要執行之前,向記憶體請求此指令,以減少延遲。
指令集架構1500執行一指令之操作可以經過不同階段執行。例如,使用單元1510指令預取階段1530可以經過預取器1543存取一指令。取回之指令可儲存於指令快取1532中。預取階段1530致能一用於快速迴路模式之選項1531,其中,執行一系列指令,系列指令形成一小到 足以套裝在一給定快取內的迴路。在一實施例中,此一指令可在不需要從例如指令快取1532中存取附加指令下執行。預取什麼指令的判定例如可由分支預測單元1535達成,分支預測單元存取全域歷史1536中之執行指示、目標位址1537之指示、或一返回堆疊1538之內容,以判定碼之哪一分支1557將在下次執行。這些分支可預取作為結果。分支1557可以經過文後所述之其他操作階段產生。指令預取階段1530提供指令以及有關於未來指令的任何預測給雙指令解碼階段1550。
雙指令解碼階段1550將一接收到的指令轉譯成以微碼為主之可執行指令。雙指令解碼階段1550每一時脈週期同時解碼兩指令。再者,雙指令解碼階段1550將其結果傳送至暫存器重新命名階段1555。此外,雙指令解碼階段1550從其解碼與微碼之最終執行來判定任何生成之分支。此結果可輸入至分支1557。
暫存器重新命名階段1555將虛擬暫存器或其他資源的參考轉譯成實體暫存器或資源的參考。暫存器重新命名階段1555包括在一暫存器庫1556中之此映射指示。暫存器重新命名階段1555將接收到之指令改變且傳送結果至發送階段1560。
發送階段1560發送或配送命令到執行實體1565。發送可以用亂序方式執行。在一實施例中,執行前,多數指令保留在發送階段1560。發送階段1560可包括一指令佇列1561,用於保留此多數命令。指令可以基於任何可接 受的準則,像是用於一給定指令之執行的資源的可用性或適用性,而由發送階段1560發送到一特定處理實體1565。在一實施例中,發送階段1560將指令佇列1561內之指令重新排序,以致使接收到之第一指令不會是執行之第一指令。基於指令佇列1561之排序,附加之分支資訊可提供至分支1557。發送階段1560傳送指令至執行實體1565以供執行。
執行時,寫回階段1570將資料寫入暫存器、佇列、或指令集架構1500之其他結構,以通信一給定命令完成。依據配置於發送階段1560中之指令之順序,寫回階段1570之操作致能附加指令執行。指令集架構1500之性能可由追蹤單元1575監視或除錯。
圖16係根據本發明實施例之一用於處理器之指令集架構的執行管線1600之方塊圖。執行管線1600例如揭示圖15之指令集架構1500之操作。
執行管線1600可包括步驟或操作之任意適當組合。在1605,進行待執行之分支預測。在一實施例中,此預測可以基於指令之先前執行及其結果。在1610,對應於指令預測分支的指令載入至一指令快取。在1615,指令快取中之一或多個諸指令可擷取供執行。在1620,已擷取的指令解碼成微碼或較特定之機器語言。在一實施例中,多數指令可同時解碼。在1625,重新指定解碼指令內之暫存器或其他資源的參考。例如,虛擬暫存器的參考可用對應實體暫存器的參考來取代。在1630,指令配送 至佇列以供執行。在1640,指令執行。此執行可依任意適當方式進行。在1650,指令發送至一適當之執行實體。指令執行之方式可視執行指令之特定實體而定。例如,在1655,ALU可執行算術功能。ALU使用單一時脈週期於其操作,以及兩移位暫存器。在一實施例中,可以使用兩ALU,並在1655執行兩指令。在1660,進行一生成分支之判定。一程式計數器用於指定所進行分支之目的地。1660可在單一時脈週期內執行。在1665,浮點算術由一或多個FPU執行。浮點運算需要多數個時脈週期執行,像是二至十個週期。在1670,進行乘除運算。此運算是以四個週期執行。在1675,進行對於暫存器或管線1600其他部分之載入及儲存。操作包括載入及儲存。此運算是以四個週期執行。在1680,依1655-1675之生成操作要求而進行寫回操作。
圖17係根據本發明實施例之一供使用處理器1710之電子裝置1700之方塊圖。電子裝置1700例如包括一筆記型電腦、超薄型筆電、塔型伺服器、機架型伺服器、刀鋒型伺服器、膝上型電腦、桌上型電腦、平板電腦、行動裝置、電話、嵌入式電腦、或任意其他適當之電子裝置。
電子裝置1700可包括處理器1710,其通信耦合於任意適當數量或類型之組件、周邊裝置、模組、或裝置。此耦合可以藉由任意適當類型之匯流排或介面達成,像是I2C匯流排、系統管理匯流排(SMBus)、低針腳數(LPC)匯流排、SPI、高清晰度音頻(HDA)匯流排、 串列先進技術附接(SATA)匯流排、USB匯流排(版本1、2、3)、或通用非同步接收器/發送器(UART)匯流排。
這些組件例如包括顯示器1724、觸控螢幕1725、觸控板1730、近場通信(NFC)單元1745、感測器集線器1740、熱感測器1746、高速晶片組(EC)1735、可信平台模組(TPM)1738、基本輸入輸出系統(BIOS)/韌體/快閃記憶體1722、數位信號處理器1760、磁碟機1720像是固態磁碟機(SSD)或硬碟機(HDD)、無線區域網路(WLAN)單元1750、藍牙單元1752、無線廣域網路(WWAN)單元1756、全球定位系統(GPS)1755、照相機1754像是USB 3.0照相機、或例如以LPDDR3標準實施之低功率雙資料率(LPDDR)記憶體單元1715。這些組件各以任意適當方式實施。
再者,在許多實施例中,其他組件可以經由上述組件通信耦合於處理器1700。例如,加速度計1741、環境光感測器(ALS)1742、羅盤1743、及陀螺儀1744通信耦合於感測器集線器1740。熱感測器1739、風扇1737、鍵盤1736、及觸控板1730通信耦合於EC 1735。喇叭1763、頭戴式耳機1764、及麥克風1765通信耦合於一音頻單元1762,再由此通信耦合於DSP 1760。音頻單元1762例如包括一音頻編解碼器及一D級放大器。一SIM卡1757通信耦合於WWAN單元1756。組件像是WLAN單元1750、藍牙單元1752以及WWAN單元1756可用下 一代形狀因素(NGFF)實施。
本發明之實施例關於指令、硬體內容關聯之資料結構、及用於加速一或多個常用集合運算之執行的處理邏輯。圖18係根據本發明實施例之一用於加速集合運算執行之系統1800說明。系統1800可包括一處理器、SoC、積體電路、或其他機制。例如,系統1800包括處理器1804。儘管處理器1804係以圖18中之範例揭示及說明,任意適當機制皆可使用。處理器1804包括用於加速一或多個常用集合運算之執行的任意適當機制。在一實施例中,此機制可在硬體中實施。處理器1804可以全部或部分由圖1-17中所述之元件實施。
處理器1804包括一前端1806,前端包括一指令擷取管線階段(例如,指令擷取單元1808)及一解碼管線階段(例如,解碼單元1810)。前端1806使用解碼單元1810從指令流1802接收且解碼指令。解碼之指令可以藉由一管線之一配送階段(例如,配置器1814)配送、配置、及排序,以供執行,並且配置到特定執行單元1816或SOLU 1820。由SOLU 1820執行之一或多個特定指令可包括在一界定供處理器1804或SOLU 1820執行之資料庫內。在另一實施例中,SOLU 1820可由處理器1804之部分靶定,其中處理器1804辨識指令流1802中之一意圖而在軟體中執行一集合運算,並且發送一或多個特定指令到SOLU 1820。
執行期間,存取資料或附加之指令(包括常駐於記憶 體系統1830中之資料或指令)可以透過記憶體子系統1826完成。再者,執行之結果可儲存於記憶體子系統1826中且隨後排除到記憶體系統1830。記憶體子系統1826例如包括記憶體、RAM、或一快取階層,快取階層可包括一或多個第一階(L1)快取1827或第二階(L2)快取1828,其中有些可由多數個核芯1812或處理器1804共用。在由執行單元1816或由SOLU 1820執行之後,指令由止用單元1818中之一寫回階段或止用階段止用。此執行管線之許多部分可由一或多個核芯1812執行。
集合運算,例如聯集與交集運算,其使用在應用領域中,例如圖形處理及資料分析。在排序集合上之聯集與交集運算為此應用領域中之一般作業。較明確說,許多圖形操作包括交集與聯集運算,其靶定含有鍵值對之有序表的集合。在許多情況中,這些輸入組內的元件可由其鍵排序。聯集與交集運算兩者包括找出兩組元件中之匹配索引。例如,一交集運算可識別其鍵匹配的兩不同組中之鍵值對,隨後,一用戶定義之歸約運算可在對應值上執行。交集運算可以忽略(或廢除)兩組中任一組之任一鍵值對,其鍵不匹配於兩組中另一組之任一鍵值對之鍵(例如,具有唯一鍵的兩組中任一組之鍵值對)。一交集運算可以在其鍵匹配的兩不同組中之任一鍵值對之值上執行用戶定義之歸約運算,但是也可以保留(不修改)兩組中任一組之任一鍵值對,其鍵不匹配於兩組中另一組之任一鍵值對之鍵(例如,具有唯一鍵的兩組中任一組之鍵值 對)。在這些運算之任一者中,輸出組可包括一由其鍵排序之鍵值對之列表。
這些聯集與交集運算(以及其他集合運算)在計算上所費不貲。在一些以軟體為主之解決方式中,使用聯集及/或交集運算來識別匹配索引或組合兩組的碼可以單純在一般執行單元上執行,並由處理器1804上之解碼單元1810解碼。這些以軟體為主之解決方式緩慢及/或高耗電。其他方法則嘗試將這些組映射到單指令多資料(SIMD)算術操作,以便探索出指令階層平行性。這些方法依據識別匹配鍵之能力而定,這會引起顯著的快取壓力。另有其他方法包括分散操作與集中操作,其亦增加快取壓力。在一些情況中,這些方法導致較高的分支錯誤預測率,這和SIMD不符。
在本發明之實施例中,系統1800可包括硬體支援,用於加速這些集合運算並加快現代圖形分析的處理。例如,在一實施例中,系統1800可包括一集合運算邏輯單元(SOLU),提供以鍵為主之關聯搜尋功能。如文後所詳述,SOLU包括邏輯及/或電路,用於有效率執行一或多個集合運算。
如圖18中所示,在一實施例中,系統1800包括一集合運算邏輯單元(SOLU)1820,用於執行一或多個集合運算。SOLU 1820可依任意適當方式實施。系統1800包括一設在系統1800之任意適當部位的SOLU 1820。在一實施例中,系統1800包括一SOLU 1820A,其實施作為 處理器1804中之一獨立電路。在另一實施例中,系統1800包括一SOLU 1820B,其實施作為一或多個核芯1812之一組件或作為處理器1804中之一執行管線之另一元件之組件。在又一實施例中,系統1800包括一SOLU 1820C,其實施於系統1800中且通信耦合於處理器1804。在不同實施例中,SOLU 1820可由電路或硬體計算邏輯之任意適當組合實施。在一實施例中,SOLU 1820可從系統1800之其他部分接收輸入並且回傳一或多個集合運算之結果。
在一實施例中,SOLU 1820包括或通信耦合於記憶體元件,以便儲存執行一或多個集合運算所需之資訊。例如,SOLU 1820包括一內容關聯資料結構(CAM資料結構1824),其中可儲存多組鍵值對。在一實施例中,CAM資料結構1824可在SOLU 1820內實施。在另一實施例中,CAM資料結構1824可在系統1800內之任意適當記憶體內實施。在一實施例中,SOLU 1820可由包括有CAM控制邏輯1822之電路實施,CAM控制邏輯控制存取且執行操作於CAM資料結構1824之內容上。例如,在一實施例中,SOLU 1820包括電路,用於將一組鍵值對加到常駐於CAM資料結構1824中之一組鍵值對,並在具有匹配鍵之鍵值對上執行歸約運算。在另一實施例中,SOLU 1820包括電路,用於識別常駐於CAM資料結構1824中之一組鍵值對中之鍵值對,其鍵匹配於一輸入組鍵值對中之鍵值對者。在又一實施例中,SOLU 1820包括 電路,用於判定及回傳CAM資料結構1824之目前長度(例如,常駐於CAM資料結構1824中之有效或現用鍵值對數)。在另一實施例中,SOLU 1820包括電路,用於將CAM資料結構1824之內容重置。重置CAM資料結構1824之內容可包括刪除或廢除常駐於CAM資料結構1824中之任意鍵值對,並將其長度重置到零。在一實施例中,SOLU 1820包括電路,用於將CAM資料結構1824之內容移動到記憶體(例如,移動到記憶體子系統1826及/或記憶體系統1830中之一或多個輸出陣列)。
處理器1804隱含地或者經由特定指令之解碼及執行而識出待執行一集合運算。在此情況下,集合運算之性能可卸載到SOLU 1820。在一實施例中,SOLU 1820可由指令流1802中之一或多個特定指令靶定。該特定指令例如由一編譯器、及時解譯器、或其他適當機制(其可包括或不包括在系統1800中)產生,或由一造成指令流1802之碼之描圖器指定。例如,一編譯器取用應用碼並產生指令流1802形式之可執行碼。指令可由處理器1804從指令流1802接收。指令流1802可用任意適當方式載入至處理器1804。例如,由處理器1804執行之指令可以從儲存裝置、其他機器、或其他記憶體(例如,記憶體系統1830)載入。指令到達及使用在常駐之記憶體中,像是RAM,其中,指令由處理器1804從儲存裝置擷取豈執行。指令例如藉由一預取器或擷取單元(例如,指令擷取單元1808)從常駐之記憶體中擷取。請注意,指令流 1802可包括執行集合運算者以外之指令。
在一實施例中,用於執行將一內容關聯之資料結構(例如,CAM資料結構1824)之內容靶定的集合運算的特定指令可包括一指令,用於將一組鍵值對加到常駐於CAM資料結構1824中之一組鍵值對。在一實施例中,用於執行將CAM資料結構1824之內容靶定的集合運算的特定指令可包括一指令,用於在具有匹配鍵之鍵值對上執行歸約運算。在一實施例中,用於執行將CAM資料結構1824之內容靶定的集合運算的特定指令可包括一指令,用於識別常駐於CAM資料結構1824中之一組鍵值對中之鍵值對,其鍵匹配於一輸入組鍵值對中之鍵值對者。在一實施例中,用於執行將CAM資料結構1824之內容靶定的集合運算的特定指令可包括一指令,用於判定及回傳CAM資料結構1824之目前長度。在另一實施例中,用於執行將CAM資料結構1824之內容靶定的集合運算的特定指令可包括一指令,用於重置CAM資料結構1824之內容。在又一實施例中,用於執行將CAM資料結構1824之內容靶定的集合運算的特定指令可包括一指令,用於刪除或廢除常駐於CAM資料結構1824中之任意鍵值對,或將CAM資料結構1824之長度重置到零。在一實施例中,用於執行將CAM資料結構1824之內容靶定的集合運算的特定指令可包括一指令,用於將CAM資料結構1824之內容移動到記憶體。這些指令例如包括CAMADD、CAMINDMATCH、CAMSIZE、CAMRESET、及/或 CAMMOVE,容後詳述。
在本發明之一實施例中,一集合運算邏輯單元(例如,SOLU 1820)可由專屬電路或邏輯實施成加速被導向一特定處理器1804的集合運算的執行。例如,系統1800可包括一SOLU 1820,用於處理器1804內之多核芯1812。在此例子中,多核芯1812之各執行緒可存取單一硬體內容關聯資料結構(例如,CAM資料結構1824)之不同部分。在另一實施例中,一集合運算邏輯單元(例如,SOLU 1820)可由專屬電路或邏輯實施成加速被導向一處理器1804內之一特定核芯1812的集合運算的執行。例如,系統1800可包括一專屬SOLU 1820,用於一處理器1804內之多核芯1812的每一個。在此例子中,特定核芯1812之各執行緒可存取在執行緒之中共用的單一CAM資料結構1824的不同部分。在又一實施例中,系統1800可包括一專屬SOLU 1820(及對應之CAM資料結構1824),用於一處理器1804內之一核芯1812的多數執行緒的每一個。在一實施例中,可由各處理器1804、核芯1812、或其執行緒存取以便儲存且操作於一組鍵值對上的一共用CAM資料結構1824的部分可具有一固定大小。在另一實施例中,可由各處理器1804、核芯1812、或其執行緒存取以便儲存且操作於一組鍵值對上的一共用CAM資料結構1824的部分的大小可以基於工作量而在操作時動態地組構。
在一實施例中,和一或多個其他執行緒或核芯共用一 CAM資料結構1824的各執行緒或核芯可以存取CAM資料結構1824內之各組鍵值對。在一實施例中,用於一特定處理器1804、核芯1812、或其執行緒的SOLU 1820的CAM控制邏輯1822可包括電路或邏輯,用於追蹤儲存在各執行緒共用之CAM資料結構1824內的組的大小。在一實施例中,CAM控制邏輯1822可包括電路或邏輯,用於產生正確的偏差值於共用之CAM資料結構1824內,以供存取於各執行緒共用之CAM資料結構1824之各部分。在又一實施例中,系統1800可包括共用之CAM控制邏輯1822(例如,一共用之CAM處理引擎),供多數個處理器1804、核芯1812、或其執行緒提出請求而執行集合運算。在此例子中,共用之CAM控制邏輯1822可存取適當之CAM資料結構1824(或其部分),以執行所請求之集合運算於提出請求之處理器、核芯、或執行緒之代表上。
在一實施例中,CAM資料結構1824通信耦合於記憶體子系統1826,且SOLU 1820之集合運算之執行結果可儲存於記憶體子系統1826中。在一實施例中,SOLU 1820直接通信耦合於記憶體子系統1826,以提供SOLU 1820執行之集合運算之結果。例如,SOLU 1820之集合運算之執行結果可以寫到記憶體子系統1826之快取階層內之任意適當快取,像是L1快取1827或L2快取1828。被寫到快取階層之結果隨後排除到記憶體系統1830。
圖19係根據本發明實施例之用於加速集合運算執行之另一範例系統說明。圖18與19中之相同元件使用相同 參考編號。圖19揭示在本發明之另一實施例中,SOLU 1820A包括CAM控制邏輯1922A,其可控制存取及執行操作於由記憶體子系統1826內之電路實施、而非由SOLU 1820A內之電路實施的一CAM資料結構1924A的內容上。在另一實施例中,SOLU 1820C包括CAM控制邏輯1922B,其可控制存取及執行操作於由記憶體系統1830內之電路實施、而非由SOLU 1820C內之電路實施的一CAM資料結構1924B的內容上。儘管圖18與19揭示系統1800、1900內(或其處理器1804內)之SOLU 1820、CAM控制邏輯1822/1922、及CAM資料結構1824/1924之多數個適當位置,這些示範性實施方式僅為說明而不意味著限制於本文內所述加速集合運算的機制的實施方式。
圖20係方塊圖,揭示根據本發明實施例之一集合運算邏輯單元(SOLU)。在此例子中,集合運算邏輯單元(SOLU)2010包括一硬體內容關聯資料結構(CAM資料結構2030)及CAM控制邏輯2020,以便控制存取及執行操作於CAM資料結構2030之內容上。在一實施例中,CAM控制邏輯2020可包括一或多個集合運算執行單元2025,其各包括電路,用於執行將CAM資料結構2030靶定的一或多個集合運算的全部或一部分。例如,一或多個集合運算執行單元2025包括電路,用於將一組鍵值對加到常駐於CAM資料結構2030中之一組鍵值對,並在具有匹配鍵之鍵值對上執行歸約運算,識別常駐於CAM資料 結構2030中之一組鍵值對之鍵值對,其鍵匹配於一輸入組鍵值對之鍵值對之鍵,及回傳CAM資料結構2030之目前長度,重置CAM資料結構2030之內容,刪除或廢除常駐於CAM資料結構2030中之任意鍵值對,並將CAM資料結構2030之長度重置到零,或將CAM資料結構2030之內容移動到記憶體。
在一實施例中,CAM資料結構2030包括多數個元件2031-2036,其各儲存代表一鍵值對的資訊。此各元件可包括n位元,其一子集使用一索引於CAM資料結構2030,以存取該元件,其另一子集含有一使用該索引擷取之值。例如,在圖20中以展開形式揭示之元件2031包括位元(n-1)至(m+1)中之一鍵及位元m至0中之一值。在此例子中,為了擷取儲存於元件2031內之位元m至0中之值,儲存於位元(n-1)至(m+1)中之鍵可以送到硬體內容關聯資料結構(CAM資料結構2030)。在不同實施例中,儲存於CAM資料結構2030中之鍵值對可以用任意適當之鍵值格式編碼。
在本發明之實施例中,包括有一集合運算邏輯單元像是SOLU 1820之系統(例如,系統1800或1900)可支援多數個應用程式介面(API),以執行集合運算。這些集合運算可以在一硬體內容關聯資料結構上存取及操作,像是CAM資料結構1824或CAM資料結構1924。在一些實施例中,由SOLU 1820執行之集合運算可以非同步地進行。在這些實施例中,其他指令可以同時由處理器1804 內之執行單元1816執行。在一實施例中,這些API各在硬體中實施作為處理器1804之指令集架構(ISA)中的指令。在一實施例中,各集合運算是由包括在一程式中之機器語言或組合語言指令調用。在另一實施例中,各集合運算可以藉由呼叫一界定在高階程序或面向對象編程語言中之功能或方法來調用。在不同實施例中,編程語言可以是編譯或解譯語言。
在一實施例中,界定一集合運算之API各可由處理器1804執行之一或多個微指令或微操作實施。例如,解碼單元1810收到一指令,代表一由其中一API界定之集合運算。解碼單元1810將接收到之指令解碼成一或多個微指令或微操作,各由其中一執行單元1816或由SOLU 1820執行。配置器1814從解碼單元1810接收微指令或微操作,並將其各導向適當之執行單元1816或SOLU 1820,以便執行所請求之集合運算。在一實施例中,SOLU 1820可包括電路或邏輯,用於執行一微指令或微操作,以載入資料至CAM資料結構1824/1924。在另一實施例中,SOLU 1820包括電路或邏輯,用於執行一微指令或微操作,以利在多數組鍵值對中之鍵值對之鍵上進行索引匹配操作。這些及其他微指令或微操作可在許多組合中執行,以進行由API界定之集合運算。在一實施例中,兩個以上的集合運算可由共用單一運算碼之組合語言指令執行。例如,運算碼指示出指令被導向SOLU 1820(並由其執行)。在此例子中,這些組合語言指令包括多數個控制 欄位,其各值界定待執行之指定集合運算。其中一控制欄位指示出當執行指令時所進行之疊代數。例如,若指令是將一組鍵值對加到CAM資料結構1824/1924,其中一控制欄位即指示出輸入組中之鍵值對數。
在一實施例中,SOLU 1820包括電路與邏輯,用於執行由一「camadd」API界定之集合運算。此API界定一指令,以便將一組鍵值對插入一硬體內容關聯資料結構之內容中,像是CAM資料結構1824或CAM資料結構1924。在一實施例中,camadd指令從一程式內調用出來,如下列虛擬碼所示:
在此例子中,輸入組鍵值對之來源為一結構,其包括一含有用於輸入組鍵值對之鍵的陣列(鍵輸入陣列)及另一含有用於輸入組鍵值對之值的陣列(值輸入陣列)。在一實施例中,由一camadd API界定之指令可以在輸入組鍵值對之鍵與對應值被排序且以相同順序儲存於兩來源陣列中的假設情況下操作。例如,指令可以在儲存於鍵輸入陣列中之第一位置的鍵為其值儲存於值輸入陣列中之第一位置之值的鍵值對的鍵、儲存於鍵輸入陣列中之第二位置的鍵為其值儲存於值輸入陣列中之第二位置之值的鍵值對 的鍵、等等之假設情況下操作。在一實施例中,被加到CAM資料結構1824/1924之指定鍵值對數可以和儲存於來源陣列中之鍵值對數相同,在此情況下,儲存於來源陣列中之全部輸入組鍵值對可以加到CAM資料結構1824/1924。在另一實施例中,被加到CAM資料結構1824/1924之指定鍵值對數可以小於儲存於來源陣列中之鍵值對數,在此情況下,儲存於來源陣列中之輸入組鍵值對之一子集可以加到CAM資料結構1824/1924。
在本發明之實施例中,一由camadd API界定之指令可用於執行一聯集運算,其取一輸入組鍵值對並將其加到一組常駐於CAM資料結構1824/1924中之鍵值對。在一實施例中,加上輸入組鍵值對時,指令進行一索引匹配操作。例如,指令經過來源陣列及CAM資料結構1824/1924,搜尋CAM資料結構1824/1924中之現有登錄點,其鍵匹配於輸入組鍵值對之鍵值對者。若在CAM資料結構1824/1924中找到一具有匹配鍵之登錄點,指令將指定之集合運算使用於CAM資料結構1824/1924中之登錄點之值及具有相同鍵之輸入組鍵值對之值。在一些實施例中,指定之歸約運算可以是算術運算。在其他實施例中,指定之歸約運算可識別一最小值或最大值。在其他實施例中,包括用戶定義之歸約運算在內的較複雜歸約運算可以指定用於camadd指令。在該實施例中,指令可將CAM資料結構1824/1924中之鍵值對之值以歸約運算的結果來替代。在一實施例中,在CAM資料結構1824/1924 中發現無一登錄點具有匹配鍵的輸入組中的任意鍵值對(例如,具有唯一鍵之任意鍵值對)則可加到CAM資料結構1824/1924之內容,作為新的登錄點,因此增加了CAM資料結構1824/1924之使用容量(此可視為其「長度」)。
圖21係根據本發明實施例之將一組鍵值對加到硬體內容關聯資料結構之操作之說明。在一實施例中,系統1800執行一指令,將一組鍵值對加到常駐於CAM資料結構1824中之一組鍵值對,並且在具有匹配鍵的鍵值對上進行歸約運算。例如,可以執行一「CAMADD」指令。此指令包括任意適當數量或類型之運算元、位元、旗標、參數、或其他元件。在一實施例中,一CAMADD呼叫係關於第一指標,其識別出被加到CAM資料結構1824之該組鍵值對之鍵儲存於何處。一CAMADD呼叫係關於第二指標,其識別出被加到CAM資料結構1824之該組鍵值對之值儲存於何處。在另一實施例中,一CAMADD呼叫關於一整數,其指定被加到CAM資料結構1824之鍵值對數。在一實施例中,被加到CAM資料結構1824之鍵值對數可以等於已儲存在識別來源陣列中之鍵值對數。在另一實施例中,被加到CAM資料結構1824之鍵值對數可以小於已儲存在識別來源陣列中之鍵值對數。
在一實施例中,一CAMADD呼叫可包括一參數,當被加到CAM資料結構1824之其中一鍵值對和已儲存在CAM資料結構1824中之其中一鍵值對具有同一鍵時,該 參數即識別一待執行之歸約運算。歸約運算可以是算術或總合運算。例如,此參數可指定一具有共同鍵的單一鍵值對以及一代表具有同一鍵之兩鍵值對之值之總和的值應該儲存於輸出組中。在另一例子中,此參數可指定一具有共同鍵的單一鍵值對以及一代表具有同一鍵之兩鍵值對之值之間的有符號或無符號差異的值應該儲存於輸出組中。在又一例子中,此參數可指定一具有共同鍵的單一鍵值對以及一代表具有同一鍵之兩鍵值對之值之最小值的值應該儲存於輸出組中。在再一例子中,此參數可指定一具有共同鍵的單一鍵值對以及一代表具有同一鍵之兩鍵值對之值之最大值的值應該儲存於輸出組中。在其他實施例中,其他歸約運算可以在匹配鍵被識別時指定及進行。
在圖21所示之示範實施例中,在(1),CAMADD指令及其參數(包括上述兩指標的任一者或全部,整數指定待加之鍵值對數,及/或指標指定歸約運算)可以由CAM控制邏輯1822從其中一核芯1812接收。例如,在一實施例中,CAMADD指令可以由核芯1812內之一配置器1814(圖21中未示)發送到一集合運算邏輯單元1820(圖21中未示)內之CAM控制邏輯1822。CAMADD在邏輯上可由CAM控制邏輯1822執行。
如本例中所示,被加到CAM資料結構1824之該組鍵值對可以儲存在記憶體系統1830內之兩輸入陣列。例如,鍵輸入陣列2102儲存被加到CAM資料結構1824之該組鍵值用的鍵。該鍵可依據許多排序演算法的任一者而 排序並依其順序儲存於鍵輸入陣列2102中。值輸入陣列2104儲存被加到CAM資料結構1824之該組鍵值用的值。該值可依據和其對應之儲存鍵相同的順序儲存。例如,值輸入陣列2104中之第一登錄點儲存其鍵儲存在鍵輸入陣列2102中之第一登錄點的一鍵值對之值、值輸入陣列2104中之第二登錄點儲存其鍵儲存在鍵輸入陣列2102中之第二登錄點的一鍵值對之值、等等。
CAM控制邏輯1822執行CAMADD包括在(2)從一由參考於指令呼叫之第一指標識別的位置讀取一輸入鍵。例如,第一指標可識別鍵輸入陣列2102作為被加到CAM資料結構1824之該組鍵值對之鍵的來源,且CAM控制邏輯1822從鍵輸入陣列2102中之第一登錄點讀取一鍵。CAM控制邏輯1822執行CAMADD包括在(3)從一由參考於指令呼叫之第二指標識別的位置讀取一輸入值。例如,第二指標可識別值輸入陣列2104作為被加到CAM資料結構1824之該組鍵值對之值的來源,且CAM控制邏輯1822從值輸入陣列2104中之第一登錄點讀取一值。
在(4),CAM控制邏輯1822搜尋CAM資料結構1824,以判定一儲存於CAM資料結構1824中之鍵值對是否具有和在(2)從鍵輸入陣列2102讀取者相同之鍵。若是,則含有匹配鍵之登錄點可回傳到CAM控制邏輯1822。在一實施例中,此可包括回傳儲存於CAM資料結構1824中並具有匹配鍵之鍵值對之值。
若在(4)找到一匹配鍵且回傳儲存於CAM資料結構 1824中並具有匹配鍵之鍵值對之值,則在(5),CAM控制邏輯1822使用指定之歸約運算於共用共同鍵之鍵值對。在此情況中,在(6),CAM控制邏輯1822以包括有匹配鍵之新鍵值對、及一依據歸約運算結果之值替換儲存於CAM資料結構1824中並具有匹配鍵之鍵值對。例如,在不同實施例中,該值代表共用共同鍵之兩鍵值對之值的總和、共用共同鍵之兩鍵值對之值之間的差、共用共同鍵之兩鍵值對之值之最小值、或共用共同鍵之兩鍵值對之值之最大值。因為鍵值對是藉由其在CAM資料結構1824中之鍵的順序來儲存,所以新的鍵值對儲存於CAM資料結構1824中之位置即具有匹配鍵之鍵值對先前儲存於CAM資料結構1824中之處。
若在(4)沒有在CAM資料結構1824中找到具有一匹配鍵的登錄點,則在(5)所示之歸約運算即可省略。在此情況,在(6),CAM控制邏輯1822儲存從鍵輸入陣列2102取得之鍵及從值輸入陣列2104取得之值,作為CAM資料結構1824中之一新鍵值對登錄點。新鍵值對係以由其鍵決定之位置儲存於CAM資料結構1824中,即根據將儲存於CAM資料結構1824中之該組鍵值對中之所有鍵值對排序且儲存所用之排序演算法。
在一實施例中,CAMADD指令之執行包括針對被加到CAM資料結構1824之該組鍵值對中之每一鍵值對,重覆圖21中所示之任意或所有操作步驟。例如,若CAMADD之呼叫包括一整數n,指定被加到CAM資料結 構1824之鍵值對數,則步驟(2)-(6)可以(適當地)執行n次(一次是針對被加到CAM資料結構1824之每一鍵值對)。在此例子中,針對每一疊代,在(2)及(3),CAM控制邏輯1822分別從鍵輸入陣列2102中之下一登錄點讀取一鍵及從值輸入陣列2104中之下一登錄點讀取一值。CAM控制邏輯1822接著針對該輸入鍵值對執行步驟(4)、步驟(5)(若適當的話)、及步驟(6),隨後,CAMADD指令即止用(圖中未示)。
圖22係根據本發明實施例之將一組鍵值對加到一硬體內容關聯(CAM)資料結構之內容的示範方法2200之說明。方法2200可以藉由圖1-21中所示之任意元件實施。方法2200可藉由任意適當之準則開始並可在任意適當點開始操作。在一實施例中,方法2200可在2205開始操作。方法2200可包括比所示者多或少之步驟。再者,方法2200可依不同於文後所示順序執行其步驟。方法2200可在任意適當步驟終止操作。再者,方法2200可在任意適當步驟重覆操作。方法2200可以和方法2200之其他步驟、或其他方法之步驟平行地進行其任意步驟。再者,方法2200可執行多次,以便將多組鍵值對加到硬體內容關聯資料結構之內容。
在2205,在一實施例中,接收並解碼一將一組鍵值對加到一CAM資料結構的指令。在2210,含有鍵值對及一或多個指令參數之輸入流可導向一集合運算邏輯單元(SOLU)以供執行。在一實施例中,指令參數包括用於 一鍵輸入陣列及一值輸入陣列之各別指標,其總體儲存被加到CAM資料結構的輸入組鍵值對。在此例子中,輸入流可以從由這些輸入參數識別之兩來源陣列取得。在一實施例中,指令參數包括一整數值,指示被加到CAM資料結構的輸入組中之鍵值對數。在另一實施例中,指令參數包括一歸約運算,識別符,其應用於具有匹配鍵之鍵值對之值。
在2215,針對輸入流中之一給定鍵值對,判定目前儲存於CAM資料結構中之一組鍵值對是否包括一具有同一鍵之鍵值對。在步驟2220,若判定目前儲存於CAM資料結構中之一組鍵值對包括一具有同一鍵之鍵值對,則在步驟2225,指令中所指定之一操作可使用於具有同一鍵之鍵值對。在2230,操作結果即儲存作為CAM資料結構中之一鍵值對,且此鍵值對可由共同鍵在CAM資料結構中索引。
在步驟2220,若判定目前儲存於CAM資料結構中之一組鍵值對不包括一具有同一鍵之鍵值對,則在步驟2235,輸入流中之給定鍵值對即儲存於CAM資料結構中,且此鍵值對可由其鍵索引。當輸入流中有較多鍵值對時(在2240判定),方法2200可在2215針對輸入流中之其他各鍵值對重覆開始。一旦輸入流中之沒有其他各鍵值對,指令可在2245止用。例如,一旦指令之一輸入參數所指定的鍵值對數已加到CAM資料結構,指令即止用。
在一實施例中,SOLU 1820包括電路及邏輯,用於執行由一「camindmatch」API界定之集合運算。此API界定一指令,以便於一輸入組鍵值上及CAM資料結構1824/1924之內容上執行一索引匹配操作。在一實施例中,camindmatch指令從一程式內調用出來,如下列虛擬碼所示:
在此例子中,輸入組鍵值對之來源為一結構,其包括一含有用於輸入組鍵值對之鍵的陣列(鍵輸入陣列)及另一含有用於輸入組鍵值對之值的陣列(值輸入陣列)。在一實施例中,由一camindmatch API界定之指令可以在輸入組鍵值對之鍵與對應值被排序且以相同順序儲存於兩來源陣列中的假設情況下操作。例如,指令可以在儲存於鍵輸入陣列中之第一位置的鍵為其值儲存於值輸入陣列中之第一位置之值的鍵值對的鍵、儲存於鍵輸入陣列中之第二位置的鍵為其值儲存於值輸入陣列中之第二位置之值的鍵值對的鍵、等等之假設情況下操作。在一實施例中,其鍵 被比較於常駐在CAM資料結構1824/1924中之鍵值對之鍵的鍵值對的指定數可以和儲存於來源陣列中之鍵值對數相同,在此情況下,儲存於來源陣列中之全部輸入組鍵值對可以比較於CAM資料結構1824/1924之內容中之鍵。在另一實施例中,其鍵被比較於常駐在CAM資料結構1824/1924中之鍵值對之鍵的鍵值對的指定數可以小於儲存於來源陣列中之鍵值對數,在此情況下,儲存於來源陣列中之輸入組鍵值對之一子集可以比較於CAM資料結構1824/1924之內容中之鍵。
在本發明之實施例中,一由camindmatch API界定之指令可用於執行一交集運算,其取一輸入組鍵值對並將其比較於一組常駐於CAM資料結構1824/1924中之鍵值對。在一實施例中,當調用指令時,指令可以在CAM資料結構儲存一組鍵值對的假設情況下操作。在一實施例中,將輸入組鍵值對比較於儲存在CAM資料結構1824/1924中之鍵值對時,指令進行一索引匹配操作。例如,指令經過來源陣列及CAM資料結構1824/1924,搜尋CAM資料結構1824/1924中之現有登錄點,其鍵匹配於輸入組鍵值對之鍵值對者。在一實施例中,若在CAM資料結構1824/1924中找到一具有匹配鍵之登錄點,以用於輸入組中之一給定鍵值對,則指令將匹配鍵加到在指令中被指定用於儲存匹配鍵的輸出陣列。在另一實施例中,若在CAM資料結構1824/1924中找到一具有匹配鍵之登錄點,以用於輸入組中之一給定鍵值對,則指令將輸入組中之給 定鍵值對之值加到在指令中被指定用於儲存具有匹配鍵之鍵值對之值的輸出陣列。在又一實施例中,若在CAM資料結構1824/1924中找到一具有匹配鍵之登錄點,以用於輸入組中之一給定鍵值對,則指令將指令所輸出之值增加,該值係指示已找到的匹配鍵數。在一實施例中,若在CAM資料結構1824/1924中沒找到一具有匹配鍵之登錄點,以用於輸入組中之一給定鍵值對(例如,若該給定鍵值對具有唯一之匹配鍵),則指令將廢除或不計該給定鍵值對。
在一實施例中,當其鍵匹配於CAM資料結構1824/1924中之一鍵值對之鍵的輸入組中的各鍵值對被識別出來時,匹配鍵可寫入至一鍵輸出陣列且隨後串流出至快取階層。例如,鍵可從CAM資料結構1824/1924串流到記憶體子系統1826中之一L1快取1827或一L2快取1828。在另一實施例中,當其鍵匹配於CAM資料結構1824/1924中之一鍵值對之鍵的輸入組中的各鍵值對被識別出來時,具有匹配鍵之輸入組鍵值對之值可寫入至一值輸出陣列且隨後串流出至快取階層。例如,值可從CAM資料結構1824/1924串流到記憶體子系統1826中之一L1快取1827或一L2快取1828。在一實施例中,輸出組之各登錄點代表一隨後插入CAM資料結構1824/1924中之鍵值對。例如,在camindmatch指令執行之後,可以調用camadd指令將camindmatch指令所產生之輸出組中之鍵值對加到CAM資料結構1824/1924。
圖23係根據本發明實施例之操作判定一輸入組鍵值對中之任意鍵是否匹配於目前儲存在硬體內容關聯(CAM)資料結構中之鍵值對之鍵之說明。在一實施例中,系統1800執行一指令,用於識別常駐於CAM資料結構1824中之一組鍵值對之鍵值對,其鍵匹配於一輸入組鍵值對中之鍵值對者。例如,可以執行一「CAMINDMATCH」指令。此指令包括任意適當數量或類型之運算元、位元、旗標、參數、或其他元件。在一實施例中,一CAMINDMATCH呼叫係關於第一指標,其識別出輸入組鍵值對之鍵儲存於何處。一CAMINDMATCH呼叫係關於第二指標,其識別出輸入組鍵值對之值儲存於何處。
在一些實施例中,一CAMINDMATCH呼叫係關於第三指標,其識別出其鍵匹配於CAM資料結構1824中所儲存之鍵值對鍵的輸入組鍵值對中之任意鍵值對之鍵儲存於何處。一CAMINDMATCH呼叫也關於第四指標,其識別出其鍵匹配於CAM資料結構1824中所儲存之鍵值對鍵的輸入組鍵值對中之任意鍵值對之值儲存於何處。在一實施例中,一CAMINDMATCH呼叫係關於一整數,其指定輸入組鍵值對中之鍵值對數。在另一實施例中,回傳一整數,其值指示出其鍵被找到匹配於CAM資料結構1824中所儲存之鍵值對鍵之鍵的輸入組鍵值對中的鍵值對數。在又一實施例中,一CAMINDMATCH呼叫係關於一結果參數,其值可在CAMINDMATCH指令執行後指示出其鍵被 找到匹配於CAM資料結構1824中所儲存之鍵值對鍵之鍵的輸入組鍵值對中的鍵值對數。
在圖23所示之示範實施例中,在(1),CAMINDMATCH指令及其參數(包括上述四指標的任一者或全部,及/或指定輸入組鍵值對中之鍵值對數的整數)可以由CAM控制邏輯1822從其中一核芯1812接收。例如,在一實施例中,CAMINDMATCH指令可以由核芯1812內之一配置器1814(圖23中未示)發送到一集合運算邏輯單元1820(圖23中未示)內之CAM控制邏輯1822。CAMINDMATCH在邏輯上可由CAM控制邏輯1822執行。
如本例中所示,輸入組鍵值對可以儲存在記憶體系統1830內之兩輸入陣列。例如,鍵輸入陣列2302儲存輸入組鍵值對用的鍵。該鍵可依據許多排序演算法的任一者而排序並依其順序儲存於鍵輸入陣列2302中。值輸入陣列2304儲存輸入組鍵值對用的值。該值可依據和其對應之儲存鍵相同的順序儲存。例如,值輸入陣列2304中之第一登錄點儲存其鍵儲存在鍵輸入陣列2302中之第一登錄點的一鍵值對之值、值輸入陣列2304中之第二登錄點儲存其鍵儲存在鍵輸入陣列2302中之第二登錄點的一鍵值對之值、等等。
CAM控制邏輯1822執行CAMINDMATCH包括在(2)從一由指令呼叫所參考之第一指標識別的位置讀取一輸入鍵。例如,第一指標可識別鍵輸入陣列2302作為 輸入組鍵值對之鍵之來源,且CAM控制邏輯1822從鍵輸入陣列2302中之第一登錄點讀取一鍵。CAM控制邏輯1822執行CAMINDMATCH包括在(3)從一由指令呼叫所參考之第二指標識別的位置讀取一輸入值。例如,第二指標可識別值輸入陣列2304作為輸入組鍵值對之值之來源,且CAM控制邏輯1822從值輸入陣列2304中之第一登錄點讀取一值。
在(4),CAM控制邏輯1822搜尋CAM資料結構1824,以判定一儲存於CAM資料結構1824中之鍵值對是否具有和在(2)從鍵輸入陣列2302讀取者相同之鍵。若是,則含有匹配鍵之登錄點可回傳到CAM控制邏輯1822。在一實施例中,此可包括回傳儲存於CAM資料結構1824中並具有匹配鍵之鍵值對之值。
若在(4)找到一匹配鍵且回傳儲存於CAM資料結構1824中並具有匹配鍵之鍵值對之值,則在(5),CAM控制邏輯1822增量一計數器,該計數器指示其鍵被找到匹配於儲存在CAM資料結構1824中之鍵值對之鍵的輸入組鍵值對中之鍵值對數。例如,在一實施例中,CAM控制邏輯1822增量一維持在CAM控制邏輯1822內之計數器。在另一實施例中,CAM控制邏輯1822增量一維持在CAM資料結構1824內之計數器。在又一實施例中,CAM控制邏輯1822增量一維持在記憶體子系統1826內之計數器。隨後,在(6),CAM控制邏輯1822將匹配鍵儲存在一由參考於指令呼叫中之第三指標識別的位置。例如, 第三指標識別鍵輸出陣列2306作為匹配鍵之儲存位置,且CAM控制邏輯1822將從鍵輸入陣列2302讀取之輸入鍵儲存於鍵輸出陣列2306。在一實施例中,在(7),CAM控制邏輯1822也將具有匹配鍵之輸入鍵值對之值儲存在一由參考於指令呼叫中之第四指標識別的位置。例如,第四指標識別值輸出陣列2308作為其值對應於匹配鍵之儲存位置,且CAM控制邏輯1822將從值輸入陣列2304讀取之輸入值儲存於值輸出陣列2308。若在(4)沒有在CAM資料結構1824中找到具有一匹配鍵的登錄點,則在圖23中所示之步驟(6)及(7)即可省略。
在一實施例中,CAMINDMATCH指令之執行包括針對輸入組鍵值對中之每一鍵值對,重覆圖23中所示之任意或所有操作步驟。例如,例如,若CAMINDMATCH之呼叫包括一整數n,指定輸入組鍵值對中之鍵值對數,則步驟(2)-(7)可以(適當地)執行n次(一次是針對輸入組鍵值對中之每一鍵值對)。在此例子中,針對每一疊代,在(2)及(3),CAM控制邏輯1822分別從鍵輸入陣列2302中之下一登錄點讀取一鍵及從值輸入陣列2304中之下一登錄點讀取一值。CAM控制邏輯1822接著針對該輸入鍵值對執行步驟(4)、(5)、(6)、及步驟(7)(若適當的話)。一旦這些操作已針對輸入組鍵值對中之每一鍵值對執行,在(8),CAM控制邏輯1822回傳一值到CAMINDMATCH指令之呼叫程式(例如,回傳到接收指令的其中一核芯1812),該值指示其鍵匹配 於儲存在CAM資料結構1824中之鍵值對之鍵的輸入組鍵值對中之鍵值對數,隨後,CAMINDMATCH指令即止用(圖中未示)。例如,在一實施例中,CAM控制邏輯1822將儲存在一維持於CAM控制邏輯1822內之計數器中之值回傳。在另一實施例中,CAM控制邏輯1822將儲存在一維持於CAM資料結構1824內之計數器中之值回傳。在又一實施例中,CAM控制邏輯1822將儲存在一維持於記憶體子系統1826內之計數器中之值回傳。在再一實施例中,CAM控制邏輯1822寫入一值到一由指令參數指定之位置,該值指示具有匹配鍵之鍵值對數。
圖24係根據本發明實施例之判定一輸入組鍵值對中之任意鍵是否匹配於目前儲存在硬體內容關聯(CAM)資料結構中之鍵值對之鍵的示範方法2400之說明。方法2400可以藉由圖1-23中所示之任意元件實施。方法2400可藉由任意適當之準則開始並可在任意適當點開始操作。在一實施例中,方法2400可在2405開始操作。方法2400可包括比所示者多或少之步驟。再者,方法2400可依不同於文後所示順序執行其步驟。方法2400可在任意適當步驟終止操作。再者,方法2400可在任意適當步驟重覆操作。方法2400可以和方法2400之其他步驟、或其他方法之步驟平行地進行其任意步驟。再者,方法2400可執行多次,以便判定任意其他輸入組鍵值對中之任意鍵是否匹配於目前儲存在硬體內容關聯資料結構中之鍵值對之鍵。
在2405,在一實施例中,接收並解碼一指令,指令用於識別CAM資料結構中之鍵值對,其鍵匹配於一輸入流中之鍵值對之鍵。在2410,含有鍵值對及一或多個指令參數之輸入流可導向一集合運算邏輯單元(SOLU)以供執行。在一實施例中,指令參數包括用於一鍵輸入陣列及一值輸入陣列之各別指標,其總體儲存輸入組鍵值對。在此例子中,輸入流可以從由這些輸入參數識別之兩來源陣列取得。在一實施例中,指令參數包括一整數值,整數值指示被比較於常駐在CAM資料結構中之鍵值對的輸入組鍵值對數。在一實施例中,指令參數包括用於一鍵輸出陣列及一值輸出陣列之各別指標,用於儲存輸入組中之輸出組鍵值對,其鍵被發現匹配於常駐在CAM資料結構中之鍵值對者。在另一實施例中,指令參數包括一輸出參數識別符,其值指示被發現匹配於常駐在CAM資料結構中之鍵值對者的輸入組鍵值對數。在又一實施例中,指令參數包括一位置識別符,其一值係由指令寫入,該值指示其鍵被發現匹配於常駐在CAM資料結構中之鍵值對者的輸入組鍵值對數。
在2415,針對輸入流中之一給定鍵值對,判定目前儲存於CAM資料結構中之一組鍵值對是否包括一具有同一鍵之鍵值對。在步驟2420,若判定目前儲存於CAM資料結構中之一組鍵值對包括一具有同一鍵之鍵值對,則在步驟2425,來自給定鍵值對之鍵即儲存於其位置是由其中一指令參數指定的輸出陣列匹配鍵。在2430,來自給 定鍵值對之值即儲存於第二輸出陣列,其位置是由其中一指令參數指定。此外,在2435,增量匹配鍵之一計數器。例如,在一實施例中,計數器維持在CAM控制邏輯內且其值反映出可增量之匹配鍵數。在另一實施例中,計數器維持在CAM資料結構中且其值反映出可增量之匹配鍵數。在又一實施例中,可增量匹配鍵之一計數器,計數器維持在記憶體子系統內且其值反映出可增量之匹配鍵數。
在步驟2420,若判定目前儲存於CAM資料結構中之該組鍵值對不包括一具有同一鍵之鍵值對,則在步驟2440,即不對給定之鍵值對採取動作。當輸入流中有較多鍵值對時(在2445判定),方法2400可在2415針對輸入流中之其他各鍵值對重覆開始。一旦輸入流中之沒有其他各鍵值對,指令可在2450止用。例如,一旦指令之一輸入參數所指定的輸入組鍵值對數已比較於常駐在CAM資料結構中之鍵值對之鍵,指令即止用。儘管在此例子中並未揭示,但是在一些實施例中,指令執行後,所找到的匹配鍵數可回傳到呼叫程式。
在一實施例中,SOLU 1820包括電路及邏輯,用於執行由一「camsize」API界定之集合運算。此API界定一指令,以便取得CAM資料結構1824/1924之目前長度。在一實施例中,camsize指令從一程式內調用出來,如下列虛擬碼所示:camsize()
在一實施例中,camsize指令可回傳一值給呼叫程式,該值指示目前儲存於CAM資料結構中之鍵值對數。在另一實施例中,camsize指令可寫入一值到一由指令參數指定之位置,該值指示目前儲存於CAM資料結構中之鍵值對數。
圖25係根據本發明實施例之操作判定硬體內容關聯(CAM)資料結構之目前長度之說明。在一實施例中,系統1800執行一指令,以判定及回傳CAM資料結構1824之目前長度。例如,可以執行一「CAMSIZE」指令。此指令包括任意適當數量或類型之運算元、位元、旗標、參數、或其他元件。在一實施例中,一CAMSIZE呼叫並不包括任何輸入參數,並可回傳一整數,指示目前儲存於CAM資料結構1824中之有效或現用鍵值對數。在另一實施例中,一CAMSIZE呼叫包括一參數,指示在CAMSIZE指令執行後(圖中未示),目前儲存於CAM資料結構1824中之有效或現用鍵值對數的值應該儲存的一位置。
在圖25所示之示範實施例中,在(1),CAMSIZE指令及任意指令參數可以由CAM控制邏輯1822從其中一核芯1812接收。例如,在一實施例中,CAMSIZE指令可以由核芯1812內之一配置器1814(圖25中未示)發送到一集合運算邏輯單元1820(圖25中未示)內之CAM控制邏輯1822。CAMSIZE在邏輯上可由CAM控制邏輯1822執行。
CAM控制邏輯1822執行CAMSIZE指令包括在(2) 存取CAM資料結構1824以判定其目前長度。例如,在一實施例中,CAM控制邏輯1822查詢一維持在CAM資料結構1824內之計數器,其值反映出目前儲存於CAM資料結構1824中之鍵值對數。在另一實施例中,CAM控制邏輯1822維持一本地計數器(在CAM控制邏輯1822內),其值反映出目前儲存於CAM資料結構1824中之鍵值對數。在一實施例中,CAM控制邏輯1822將一或多個指標維持於CAM資料結構1824中,由此計算CAM資料結構1824之長度。例如,CAM控制邏輯1822維持一指標,其識別儲存於CAM資料結構1824中之第一現用或有效鍵值對之位置,及維持另一指標,其識別儲存於CAM資料結構1824中之最後現用或有效鍵值對之位置。CAM控制邏輯1822將CAM資料結構1824之長度判定成由這些指標識別之位址之間的差異。在一實施例中,CAM控制邏輯1822維持一指標於CAM資料結構1824中之下一可用的空置或未使用登錄點。CAM控制邏輯1822基於由該指標識別之位址來判定CAM資料結構1824之長度。
一旦CAM資料結構1824之目前長度已判定,在(3),CAM控制邏輯1822將CAM資料結構1824之目前長度回傳到呼叫程式(例如,回傳到接收指令的其中一核芯1812),隨後可止用CAMSIZE指令(圖中未示)。
圖26係根據本發明實施例之一示範方法2600,用於判定硬體內容關聯(CAM)資料結構之目前長度。方法2600可以藉由圖1-25中所示之任意元件實施。方法2600 可藉由任意適當之準則開始並可在任意適當點開始操作。在一實施例中,方法2600可在2605開始操作。方法2600可包括比所示者多或少之步驟。再者,方法2600可依不同於文後所示順序執行其步驟。方法2600可在任意適當步驟終止操作。再者,方法2600可在任意適當步驟重覆操作。方法2600可以和方法2600之其他步驟、或其他方法之步驟平行地進行其任意步驟。再者,方法2600可執行多次,以便在不同時間點判定硬體內容關聯資料結構之目前長度。
在2605,在一實施例中,接收並解碼一指令,以便回傳CAM資料結構之目前長度。在2610,此指令可導向一集合運算邏輯單元(SOLU)以供執行。在2615,將目前儲存於CAM資料結構中之鍵值對數回傳。在一實施例中,CAM控制邏輯可從一維持於CAM控制邏輯內之計數器取得目前儲存於CAM資料結構中之鍵值對數。在另一實施例中,CAM控制邏輯可從一維持於CAM控制邏輯內之計數器取得一值,該值指示目前儲存於CAM資料結構中之鍵值對數。在另一實施例中,CAM控制邏輯可以基於由一或多個指標識別於CAM資料結構中之位址來計算目前儲存於CAM資料結構中之鍵值對數。在2620,指令即止用。
在一實施例中,SOLU 1820包括電路及邏輯,用於執行由一「camreset」API界定之集合運算。此API界定一指令,以便重置CAM資料結構1824/1924中之內容。在 一實施例中,camreset指令從一程式內調用出來,如下列虛擬碼所示:camreset()
在一實施例中,camreset指令可用於刪除(或廢除)CAM資料結構中之目前內容並將其長度重置到零。在一實施例中,camreset指令之執行可以清除CAM資料結構中之內容。例如,在一實施例中,camreset指令可將代表儲存於CAM資料結構中之各現用、有效鍵值對的資料替換成代表一NULL登錄點的資料,例如全部為零。在另一實施例中,camreset指令不修改儲存於CAM資料結構中之資料。在一實施例中,camreset指令之執行可將一指標重置到下一可用(空置或未使用)之登錄點,使其可識別CAM資料結構內之第一登錄點為一空置或未使用之登錄點。用於使CAM資料結構之目前內容失效的任意其他適當機制皆可用在其他實施例。
在一實施例中,維持於CAM資料結構1824內之一計數器之值反映出目前儲存於CAM資料結構1824中之鍵值對數,且camreset指令將此計數器之值重置到零。在另一實施例中,CAM控制邏輯1822維持一本地計數器,其值反映出目前儲存於CAM資料結構1824中之鍵值對數,且camreset指令將此計數器之值重置為零。在另一實施例中,CAM控制邏輯1822維持一或多個指標於CAM資料結構1824,由此計算CAM資料結構1824之長度,且camreset指令修改一或多個這些指標,以致使CAM資料 結構1824之計算長度為零。例如,藉由將CAM資料結構1824中可用之空置或未使用登錄點之一指標重置成CAM資料結構1824之第一登錄點,CAM控制邏輯1822可以將CAM資料結構1824之長度有效重置為零。
圖27係根據本發明實施例重置硬體內容關聯(CAM)資料結構之內容的一操作之說明。在一實施例中,系統1800執行一指令,以刪除或廢除常駐於CAM資料結構1824中之鍵值對並將CAM資料結構1824之長度重置為零。例如,可以執行一「CAMRESET」指令。此指令包括任意適當數量或類型之運算元、位元、旗標、參數、或其他元件。在一實施例中,一CAMRESET呼叫並不包括任何輸入參數,也不回傳任何資料到CAMRESET指令之呼叫程式。在另一實施例中,一CAMRESET呼叫包括一參數,指示一在CAMRESET指令執行後(圖中未示),指示出操作狀態之值(例如,一指示在CAMRESET指令執行後操作成功或失敗之值,或一反映CAM資料結構1824長度之值)應該儲存的位置。
在圖27所示之示範實施例中,在(1),CAMRESET指令及任意指令參數可以由CAM控制邏輯1822從其中一核芯1812接收。例如,在一實施例中,CAMRESET指令可以由核芯1812內之一配置器1814(圖27中未示)發送到一集合運算邏輯單元1820(圖27中未示)內之CAM控制邏輯1822。CAMRESET在邏輯上可由CAM控制邏輯1822執行。
CAM控制邏輯1822執行CAMRESET指令包括在(2)存取CAM資料結構1824以清除或廢除其內容。例如,在一實施例中,CAM控制邏輯1822可將代表儲存於CAM資料結構1824中之各現用、有效鍵值對的資料替換成代表一NULL登錄點的資料,例如全部為零。在另一實施例中,CAM控制邏輯1822可將一指標重置到下一可用(空置或未使用)之登錄點,使其可識別CAM資料結構內之第一登錄點為一空置或未使用之登錄點。CAMRESET指令之執行也包括在(3)存取CAM資料結構1824以重置CAM資料結構1824之目前長度之指示為零。例如,在一實施例中,CAM控制邏輯1822可重置一計數器之值為零,計數器維持於CAM資料結構1824內且其值反映出現用、有效之鍵值對數。在另一實施例中,CAM控制邏輯1822修改CAM資料結構1824之一或多個指標之值,以將CAM資料結構1824之長度有效重置為零。
一旦CAM資料結構1824之內容已清除或廢除且CAM資料結構1824之目前長度之指示已重置為零,CAMRESET指令即可止用(圖中未示)。
圖28係根據本發明實施例用於重置硬體內容關聯(CAM)資料結構之內容的示範方法2800之說明。方法2800可以藉由圖1-27中所示之任意元件實施。方法2800可藉由任意適當之準則開始並可在任意適當點開始操作。在一實施例中,方法2800可在2805開始操作。方法2800可包括比所示者多或少之步驟。再者,方法2800可 依不同於文後所示順序執行其步驟。方法2800可在任意適當步驟終止操作。再者,方法2800可在任意適當步驟重覆操作。方法2800可以和方法2800之其他步驟、或其他方法之步驟平行地進行其任意步驟。再者,方法2800可執行多次,以便在不同時間點重置硬體內容關聯資料結構之內容。
在2805,在一實施例中,接收並解碼一指令,以便重置CAM資料結構之內容。在2810,此指令可導向一集合運算邏輯單元(SOLU)以供執行。在2815,清除或廢除CAM資料結構之目前內容。例如,在一實施例中,CAM控制邏輯可將代表儲存於CAM資料結構中之各現用、有效鍵值對的資料替換成代表一NULL登錄點的資料,例如全部為零。在另一實施例中,CAM控制邏輯可將一指標重置到下一可用(空置或未使用)之登錄點,使其可識別CAM資料結構內之第一登錄點為一空置或未使用之登錄點。
在2820,CAM資料結構之長度之一指示可重置為零。例如,在一實施例中,CAM控制邏輯可重置一計數器之值為零,計數器維持於CAM資料結構內且其值反映出現用、有效之鍵值對數。在另一實施例中,CAM控制邏輯可重置一計數器之值為零,計數器維持於CAM資料結構本地內且其值反映出現用、有效之鍵值對數。在又一實施例中,CAM控制邏輯修改CAM資料結構之一或多個指標之值。在此例子中,一代表CAM資料結構之長度的 值可以是零,CAM資料結構之長度隨後基於指標值而計算。在2825,指令即可止用。
在一實施例中,SOLU 1820包括電路及邏輯,用於執行由一「cammove」API界定之集合運算。此API界定一指令,以便重置CAM資料結構1824/1924中之內容。在一實施例中,cammove指令從一程式內調用出來,如下列虛擬碼所示:
在一實施例中,cammove指令可複製CAM資料結構1824/1924之目前內容到由指令參數指定之記憶體中的位置。在一實施例中,目前儲存於記憶體中之鍵值對之鍵可寫出至一用於鍵之目的地陣列,其位置是藉由第一指標在指令參數中識別。目前儲存於記憶體中之鍵值對之值可寫出至一用於值之目的地陣列,其位置是藉由第二指標在指令參數中識別。在一實施例中,cammove指令可經過CAM資料結構1824/1924之登錄點、儲存各鍵值對之構成元件於兩目的地陣列中。在一實施例中,由cammove API界定之指令可操作成將目前儲存在CAM資料結構1824/1924中之鍵值對之鍵與對應值依相同順序儲存於兩目的地陣列中。例如,儲存在鍵輸出陣列中之第一位置之鍵可以是其值儲存在值輸出陣列中之第一位置的一鍵值對之鍵、儲存在鍵輸出陣列中之第二位置之鍵可以是其值儲存在值輸出陣列中之第二位置的一鍵值對之鍵、等等。
在一實施例中,cammove指令可複製CAM資料結構之整個內容到記憶體,無關於儲存在CAM資料結構中之現用、有效鍵值對數。在另一實施例中,cammove指令可以僅複製儲存在CAM資料結構中之現用、有效鍵值對到記憶體。例如,CAM控制邏輯可以基於維持在CAM資料結構中之一或多個指標之值來判定CAM資料結構中之最後現用、有效登錄點,並可在複製最後現用、有效之鍵值對到記憶體後,中止從CAM資料結構1824/1924複製鍵值對到記憶體。在另一例子中,CAM控制邏輯可以基於維持在CAM控制邏輯1822本地中之一或多個指標之值來判定CAM資料結構1824/1924中之最後現用、有效登錄點,並可在複製最後現用、有效之鍵值對到記憶體後,中止從CAM資料結構1824/1924複製鍵值對到記憶體。在一實施例中,CAM控制邏輯1822可以判定CAM資料結構1824/1924中之現用、有效登錄點數,並可在複製鍵值對數到記憶體後,中止從CAM資料結構1824/1924複製鍵值對到記憶體。例如,CAM控制邏輯1822可以存取一計數器,計數器維持在CAM資料結構1824/1924內且其值反映現用、有效之鍵值對數。在另一實施例中,CAM控制邏輯1822可以本地維持一計數器(於CAM控制邏輯1822內),計數器值反映現用、有效之鍵值對數。在一些實施例中,程式設計師的責任在於確定指定用於從CAM資料結構1824複製之鍵值對的目的陣列應該大到足以容置欲從CAM資料結構1824複製之鍵值對。
圖29係根據本發明實施例用於移動硬體內容關聯(CAM)資料結構之內容至記憶體的一操作之說明。在一實施例中,系統1800執行一指令,以移動CAM資料結構1824之內容到記憶體系統1830中之位置。例如,可以執行一「CAMMOVE」指令。此指令包括任意適當數量或類型之運算元、位元、旗標、參數、或其他元件。在一實施例中,一CAMMOVE呼叫可參考於第一指標,其在記憶體中識別一供CAM資料結構1824之該組鍵值對之鍵儲存的位置。一CAMMOVE呼叫亦可參考於第二指標,其在記憶體中識別一供CAM資料結構1824之該組鍵值對之值儲存的位置。
在圖29所示之示範實施例中,在(1),CAMMOVE指令及其參數(包括上述兩指標)可以由CAM控制邏輯1822從其中一核芯1812接收。例如,在一實施例中,CAMMOVE指令可以由核芯1812內之一配置器1814(圖29中未示)發送到一集合運算邏輯單元1820(圖29中未示)內之CAM控制邏輯1822。CAMMOVE在邏輯上可由CAM控制邏輯1822執行。
在一實施例中,該組鍵值對中之各鍵值對可以儲存在CAM資料結構1824中,作為一包括有一鍵及一值的登錄點。鍵值對可基於根據任意排序演算法之鍵來排序並且依其排序而儲存於CAM資料結構1824中。
CAM控制邏輯1822執行CAMMOVE指令包括在(2)從CAM資料結構1824擷取包括有一給定鍵之第一 鍵值對。CAMMOVE指令之執行包括在(3)CAM控制邏輯1822將給定鍵儲存於一由指令呼叫中所參考的第一指標識別的位置。例如,第一指標可識別鍵輸出陣列2902作為供CAM資料結構1824中之該組鍵值對之鍵儲存的位置,且CAM控制邏輯1822將給定鍵儲存於鍵輸出陣列2902中之第一登錄點。CAM控制邏輯1822執行CAMMOVE包括在(4)將第一鍵值對之值(含有給定鍵的鍵值對的值)儲存於一由指令呼叫中所參考的第二指標識別的位置。例如,第二指標可識別值輸出陣列2904作為供CAM資料結構1824中之該組鍵值對之值儲存的位置,且CAM控制邏輯1822將含有給定鍵的鍵值對的值儲存於值輸出陣列2904中之第一登錄點。
在一實施例中,CAMMOVE指令之執行包括針對CAM資料結構1824中之每一鍵值對,重覆圖29中所示之任意或所有操作步驟。例如,例如,若CAM資料結構1824具有一長度n,則步驟(3)及(4)可以(適當地)執行n次(一次是針對CAM資料結構1824中之每一鍵值對)。在此例子中,針對每一疊代,在(2),CAM控制邏輯1822從CAM資料結構1824中之下一登錄點擷取一鍵值對。CAM控制邏輯1822接著執行步驟及(3)及(4),以儲存該鍵值對於記憶體系統1830內之鍵輸出陣列2902與值輸出陣列2904中之連續登錄點中。一旦這些操作已針對CAM資料結構1824中之該組鍵值對之每一鍵值對執行過,CAMMOVE指令即可止用(圖中未示)。在 一實施例中,CAMMOVE指令之執行包括判定儲存於CAM資料結構1824內且被移動到記憶體系統1830中之指定目的地陣列的現用、有效鍵值對數。儲存於CAM資料結構1824內且被移動到記憶體系統1830中之指定目的地陣列的現用、有效鍵值對數可以使用任意適當方法判定,包括但是不限定於上述者。
在一實施例中,CAMMOVE指令在兩目的地陣列中以相同順序儲存目前儲存於CAM資料結構1824中之鍵值對之鍵與對應值。例如,儲存於鍵輸出陣列2902中之第一位置的鍵可以是其值儲存於值輸出陣列2904中之第一位置的一鍵值對的鍵、儲存於鍵輸出陣列2902中之第二位置的鍵可以是其值儲存於值輸出陣列2904中之第二位置的一鍵值對的鍵、等等。
圖30係根據本發明實施例用於移動硬體內容關聯(CAM)資料結構之內容至記憶體的一示範方法3000之說明。方法3000可以藉由圖1-29中所示之任意元件實施。方法3000可藉由任意適當之準則開始並可在任意適當點開始操作。在一實施例中,方法3000可在3005開始操作。方法3000可包括比所示者多或少之步驟。再者,方法3000可依不同於文後所示順序執行其步驟。方法3000可在任意適當步驟終止操作。再者,方法3000可在任意適當步驟重覆操作。方法3000可以和方法3000之其他步驟、或其他方法之步驟平行地進行其任意步驟。再者,方法3000可執行多次,以便在不同時間點重置硬體 內容關聯資料結構之內容。
在3005,在一實施例中,接收並解碼一指令,指令用於移動CAM資料結構之內容到記憶體中之多數個輸出陣列。在3010,指令及指令之一或多個參數可導向一集合運算邏輯單元(SOLU)以供執行。在一實施例中,指令參數包括一鍵輸出陣列及一值輸出陣列之各別指標,輸出陣列用於儲存從CAM資料結構移動到記憶體之輸出組鍵值對。
在3015,針對CAM資料結構中之一給定鍵值對,來自給定鍵值對之鍵可以儲存到第一輸出陣列。其位置可指定於指令參數中之第一輸出陣列可以儲存已儲存在CAM資料結構中之鍵值對之鍵。同樣地,在3020,針對CAM資料結構中之給定鍵值對,來自給定鍵值對之值可以儲存到第二輸出陣列。其位置可指定於指令參數中之第二輸出陣列可以儲存已儲存在CAM資料結構中之鍵值對之值。當有較多目前儲存於CAM資料結構中之鍵值對時(在3025判定),方法3000可針對欲移動到記憶體之CAM資料結構中之其他各鍵值對在3015重覆開始。一旦CAM資料結構中沒有其他鍵值對時,指令即在3030止用。
在一實施例中,SOLU 1820包括電路及邏輯,用於執行一附加之集合運算,附加之集合運算具有和cammove操作效果相反之效果。例如,在一實施例中,SOLU 1820包括電路及邏輯,用於執行一由「camload」API界定之集合運算。此API界定一將儲存於兩來源陣列中之輸入組 鍵值對載入至一空CAM資料結構1824/1924中的指令。在一實施例中,用於此指令之指令參數包括用於一鍵輸入陣列之指標及用於一值輸入陣列之指標,其總體儲存一組鍵值對。在一實施例中,由camload API界定之指令可以在輸入組鍵值對之鍵與對應值被排序且以相同順序儲存於兩中所儲存中的假設情況下操作。例如,指令可以在儲存於鍵輸入陣列中之第一位置的鍵為其值儲存於值輸入陣列中之第一位置的鍵值對的鍵、儲存於值輸入陣列中之第二位置的鍵為其值儲存於值輸入陣列中之第二位置的鍵值對的鍵、等等之假設情況下操作。在一實施例中,指令可以在CAM資料結構1824/1924空置之假設情況下操作(亦即,其不含任意之現用、有效鍵值對)。指令可以重寫CAM資料結構1824/1924中所儲存之任意資料。指令可以重置CAM資料結構1824/1924之長度成為等於從來源陣列被載入至CAM資料結構1824/1924的鍵值對數。
指令參數也可包括一從指定來源陣列被載入至CAM資料結構1824/1924的鍵值對數的指示。在一實施例中,被加到CAM資料結構1824/1924的指定鍵值對數可以相同於儲存在來源陣列中之鍵值對數,在此情況中,儲存在來源陣列中之全部輸入組鍵值對可以加到CAM資料結構1824/1924。在另一實施例中,被加到CAM資料結構1824/1924的指定鍵值對數可以少於儲存在來源陣列中之鍵值對數,在此情況中,儲存在來源陣列中之輸入組鍵值對之一子集可以加到CAM資料結構1824/1924。在一實施 例中,camload指令可以經過兩來源陣列之登錄點,以取得各鍵值對之構成元件。camload指令可以將從兩來源陣列中之對應登錄點取得的鍵與值儲存作為CAM資料結構1824/1924中之一鍵值對。
在一實施例中,上述camload指令之功能性可以使用前述camreset與camadd指令之組合實施。例如,可叫出camreset指令以重置CAM資料結構1824/1924之內容,隨後可叫出camadd指令將一輸入組鍵值對加到(現在空置的)CAM資料結構1824/1924。在此例子中,輸入組鍵值對加到CAM資料結構1824/1924之前,CAM資料結構已重置,所以在CAM資料結構1824/1924中找不到匹配鍵。因此,輸入組之所有鍵值對可插入CAM資料結構1824/1924中,不必修改,而且這些鍵值對將是camadd指令執行後儲存於CAM資料結構1824/1924中之唯一鍵值對。在另一例子中,若已知CAM資料結構1824/1924空置,一輸入組鍵值對可以使用camadd指令載入至CAM資料結構1824/1924,不必先執行camreset指令。例如,CAM資料結構之一初始載入可以使用camadd指令執行。
用於加速集合運算之執行的本文內所述指令與處理邏輯可用於改善一系統1800在執行許多大數據分析應用時之性能(包括但是不限定於圖形處理應用),相較於不包括一集合運算邏輯單元(SOLU)之系統下。用於加速集合運算之執行的本文內所述指令與處理邏輯之使用上也簡化了執行集合運算之程式,相較於不包括一集合運算邏輯 單元(SOLU)之系統下。例如,一用於實施許多圖形演算法的稀疏矩陣-稀疏向量乘法常式通常包括交集和聯集運算,可以使用本文內所述之集合運算邏輯單元(SOLU)加速。此與其他圖形處理常式一般在一組資料結構上操作,相似於下列虛擬碼中所示者: 在具有此組結構之排序輸入組上操作的一聯集常式範例可調用如下:C[i,:]=Union(A[i,:],B[k,:],‘+’);在此例子中,聯集常式採用參數如下:第一輸入組結構、第二輸入組結構、一輸出組結構、及一使用者界定之歸約函數,用於判定輸出組中之登錄點值,作為用於具有匹配鍵之任意登錄點的兩輸入組中的登錄點值的函數。在一不包括集合運算邏輯單元之系統中用於聯集常式之碼之一範例係藉由以下之虛擬碼說明:
在一範例中,為了在一不包括集合運算邏輯單元(SOLU)之系統中執行一聯集數列,這在一些圖形處理應用中很普遍,上述聯集常式可以重覆叫出如下:
在此範例中,聯集運算執行之前,結構組C含有其中一輸入組以供運算。聯集運算執行之後,結構組C含有輸出組,即兩輸入組C與B之聯集。
在本發明之實施例中,一類似聯集運算數列之執行可 依下列示範虛擬碼所示調用: 在一不包括集合運算邏輯單元之系統中用於交集常式之碼之一範例係藉由以下之虛擬碼說明:
在此範例中,交集常式採用參數如下:第一輸入組結構、第二輸入組結構、一輸出組結構、及一使用者界定之歸約函數,用於判定輸出組中之登錄點值,作為用於具有匹配鍵之的兩輸入組中的登錄點值的函數。
在本發明之實施例中(例如,在一包括集合運算邏輯單元或SOLU之系統中),一交集運算之執行可依下列示 範虛擬碼所示調用:
在此範例中,虛擬碼包括在基本處理器架構之SIMD寬度(揭示為「simdw」)上的相依性。
在本發明之實施例中,CAM資料結構之大小可影響SOLU內之CAM控制邏輯之複雜性及/或調用出由SOLU支援之加速集合運算的一應用之複雜性。例如,若CAM資料結構之大小不足以容納被輸入至一聯集運算之所有組鍵值對、或多數組鍵值對之一有效子集,則該應用可將多組分隔成比若被輸入至一聯集運算之所有組鍵值對、或多組鍵值對之一有效子集可容納於CAM資料結構中時更細粒化。同樣地,若CAM資料結構之大小不足以容納被輸入至一交集運算之其中一組鍵值對、或多組鍵值對之一有效子集,則該應用可將多組分隔成比若被輸入至一交集運算之任一組鍵值對、或多組鍵值對之一有效子集可容納於CAM資料結構中時更細粒化。聚集多組以產生一單一輸 出列輸出組之圖形處理應用可以在CAM資料結構大小上特別設置強力要求。針對這些應用類型,一可容納至少一整個輸出列輸出組之CAM資料結構大小即足以達成該應用之加速。
在本發明之實施例中,CAM資料結構其大小被設計成容納一特殊之大數據分析應用或一特殊等級之大數據分析應用。在一實施例中,一可容納數千鍵值對並且支援每兩週期一元件存取率之CAM資料結構即足夠用於加速廣泛圖形處理應用之集合運算。在其他實施例中,一容納較多或較少鍵值對之CAM資料結構則足夠用於加速其他類型或等級之大數據分析應用之集合運算。
在一實施例中,在大數據分析應用之執行期間,系統依據輸入及/或輸出組之一可效子集是否可由系統中之特定CAM資料結構容納,判定是否將SOLU支援之集合運算導向SOLU以作執行。在一實施例中,系統可在運行時評估一給定集合運算之CAM資料結構規定(CAM資料結構上之大小要求),並可將集合運算選擇性導向SOLU或一般執行單元,用於依據評估之規定而執行。
圖31係根據本發明實施例使用硬體內容關聯(CAM)資料結構選擇性執行一集合運算的示範方法3100之說明。方法3100可以藉由圖1-30中所示之任意元件實施。方法3100可藉由任意適當之準則開始並可在任意適當點開始操作。在一實施例中,方法3100可在3105開始操作。方法3100可包括比所示者多或少之步驟。再 者,方法3100可依不同於文後所示順序執行其步驟。方法3100可在任意適當步驟終止操作。再者,方法3100可在任意適當步驟重覆操作。方法3100可以和方法3100之其他步驟、或其他方法之步驟平行地進行其任意步驟。再者,方法3100可執行多次,以便在不同時間點重置硬體內容關聯資料結構之內容。
在3105,在一實施例中,接收並解碼一指令,以便使用CAM資料結構選擇性執行一集合運算。在3105,開始執行一包括有一或多個集合運算之指令流。在3110,針對一給定之集合運算,評估集合運算用之輸出組的大小規定。在3115,若評估結果指示輸出組之一或多個可用子集適合CAM資料結構,則在3125,可將一CAM指定指令(及其參數)導向集合運算邏輯單元以作集合運算之執行。在一實施例中,唯若評估為整個輸出組可立即容納於CAM資料結構中,CAM指定指令才導向集合運算邏輯單元。在另一實施例中,若評估為一整列輸出組可容納於CAM資料結構中,CAM指定指令即導向集合運算邏輯單元。產生後,一整列輸出組立即清除至快取階層中之其中一快取,以提供空間給下一整列輸出組在CAM資料結構中組合。
惟,在3115,若評估結果指示輸出組並無可用子集適合CAM資料結構,則在3120,可將或多個指令及其各別參數導向一般執行單元以作集合運算之執行。在任一情況中,在3130,若判定下一操作為集合運算,方法3100 可以針對下一操作而重覆。當指令流中有較多指令時(在步驟3135判定),方法3100可以針對在指令流中遇到的其他各集合運算而重覆在3110開始。一旦指令流中沒有其他指令時(在步驟3135判定),方法即終止。
在本發明之實施例中,本文內所述硬體內容關聯資料結構之使用可以免除在現有系統中執行大數據分析應用時原有的資料與控制實質費用。本文內所述硬體內容關聯資料結構之使用也可以減低在現有系統中執行大數據分析應用時原有的快取壓力。例如,當比較於在不包括這些硬體內容關聯資料結構之系統中執行最佳化的實施方式時,即使每次存取有0.5週期的CAM資料結構存取率,圖形分析應用時仍發現有1.5X至3.2X之間的性能增益。
本文內所述之機制實施例可以實施於硬體、軟體、韌體、或諸實施方式之組合中。本發明之實施例可以實施成在可編程系統上執行之電腦系統或程式碼,可編程系統包含至少一處理器、一儲存系統(包括揮發性與非揮發性記憶體及/或儲存元件)、至少一輸入裝置、及至少一輸出裝置。
程式碼可使用於輸入指令,以執行本文內所述之功能並產生輸出資訊。輸出資訊可依習知方式使用於一或多個輸出裝置。針對本案,一處理系統可包括具有一處理器之任意系統,例如像是一數位信號處理器(DSP)、一微控制器、一專用積體電路(ASIC)、或一微處理器。
程式碼可用高階程序或面向對象編程語言實施,以便 與一處理系統通信。若有需要,程式碼也可用組合或機器語言實施。事實上,本文內所述之機制在範疇上並不限於任意特定編程語言。在任何情況下,語言可以是編譯或解譯語言。
至少一實施例之一或多個態樣可以藉由儲存在一機器可讀媒體上之代表指令實施,其代表處理器內之許多邏輯,當其由一機器讀取時,可促使機器製成邏輯,以便執行本文內所述之技術。習稱為「IP核芯」之此代表可以儲存在一實體機器可讀媒體上並且供給至許多客戶或製造設施,以便載入實際製成邏輯或處理器之製造機器內。
此機器可讀媒體可包括但是不限定的有由機器或裝置製造或形成之物件之非暫態、實體配置,包括儲存媒體,像是硬碟、任意其他類型之磁碟,包括軟碟、光碟、光碟唯讀記憶體(CD-ROM)、光碟可重寫(CD-RW)、及磁光碟,半導體裝置,像是唯讀記憶體(ROM)、隨機存取記憶體(RAM),像是動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可抹除可編程唯讀記憶體(EPROM)、快閃記憶體、電可抹除可編程唯讀記憶體(EEPROM)、磁性或光學卡、或適用於儲存電子指令之任意其他類型媒體。
據此,本發明之實施例也包括含有指令或含有設計資料之非暫態、實體機器可讀媒體,像是硬體描述語言(HDL),其界定本文內所述之結構、電路、裝置、處理器及/或系統特性。諸實施例亦稱為程式產品。
在一些例子中,一指令轉換器可用於將一來自來源指令之指令轉換成一目標指令集。例如,指令轉換器可以翻譯(例如,使用靜態二進制翻譯、包括有動態編譯之動態二進制翻譯)、轉譯、仿真、或者轉換一指令成一或多個欲供核芯處理之其他指令。指令轉換器可實施於軟體、硬體、韌體、或其組合中。指令轉換器可以在處理器上、處理器外、或部分在處理器上且部分在處理器外。
因此,本文揭露用於根據至少一實施例執行一或多個指令的技術。儘管特定之示範實施例已揭述及揭示於附圖中,應該瞭解的是諸實施例僅為說明而不是拘限其他實施例,且諸實施例不限於所示及所述之特定構造與配置,因為習於此技者在審讀本文後可達成許多其他變化。在似此之技術領域中,成長快速且不易預見未來發展,在不悖離本發明原理或文後申請專利範圍之範疇下,揭露之實施例可以藉由使用技術演進而達成配置及細部上之變化。
本發明之一些實施例包括一種處理器。在至少一些的諸實施例中,該處理器包括:前端,用於解碼至少一指令;配置器,用於傳送該指令至集合運算邏輯單元,以便執行該指令;及止用單元,用於止用該指令。欲執行該指令時,該集合運算邏輯單元包括:內容關聯記憶體;第一邏輯,用於儲存第一組鍵值對在該內容關聯記憶體中;第二邏輯,用於從該指令中所識別之一或多個輸入位置取得輸入,以便代表第二組鍵值對;及第三邏輯,用於識別該第二組鍵值對之鍵值對中,其鍵匹配於該第一組鍵值對之 鍵值對中之鍵。在上述任一實施例中,該第二組鍵值對可以是有序之鍵值對,其中該鍵值對是依據其各別鍵而排序。在上述任一實施例中,用於該第二組鍵值對之鍵可儲存在該指令中所識別之第一輸入位置,用於該第二組鍵值對之值可儲存在該指令中所識別之第二輸入位置。在和上述任一實施例組合時,該集合運算邏輯單元包括第四邏輯,用於接收輸入,以該第二組鍵值對代表來自該第一輸入位置與該第二輸入位置之串流輸入。在和上述任一實施例組合時,該集合運算邏輯單元包括:第四邏輯,用於因為該識別的結果而將其鍵匹配於該第一組鍵值對之鍵值對中之鍵的該第二組鍵值對之鍵值對之鍵儲存在該指令中所識別之第一輸出位置,及第五邏輯,用於因為該識別的結果而將其鍵匹配於該第一組鍵值對之鍵值對中之鍵的該第二組鍵值對之鍵值對之鍵儲存在該指令中所識別之第二輸出位置。在和上述任一實施例組合時,該集合運算邏輯單元包括第四邏輯,用於因為該識別的結果而將代表其鍵匹配於該第一組鍵值對之鍵值對中之鍵的該第二組鍵值對之多數鍵值對之鍵之資料儲存在該指令中所識別之輸出位置。在和上述任一實施例組合時,該集合運算邏輯單元包括第四邏輯,用於接收由該集合運算邏輯單元執行之該指令。在和上述任一實施例組合時,該集合運算邏輯單元包括第五邏輯,用於產生該識別的結果。該結果包括:匹配鍵的集合、用於具有匹配鍵之該第二組鍵值對之鍵值對的值的集合、或多數匹配鍵之指示。在和上述任一實施例組 合時,該集合運算邏輯單元包括第四邏輯,用於使用該指令中所指定之算術或集合運算於:其鍵匹配於該第一組鍵值對之鍵值對中之鍵的該第二組鍵值對之各鍵值對中之值;及具有該匹配鍵的該第一組鍵值對之鍵值對中之值,以取得用於該匹配鍵的結果值。在和上述任一實施例組合時,該集合運算邏輯單元包括:第五邏輯,用於產生第三組鍵值對,該第三組鍵值對包含用於各該匹配鍵的各別鍵值對,其含有用於該匹配鍵的該結果值;及用於該第一組鍵值對之各鍵值對與該第二組鍵值對之各鍵值對的各別鍵值對,其具有唯一鍵;及第六邏輯,用於儲存該第三組鍵值對在該內容關聯記憶體中。在和上述任一實施例組合時,該集合運算邏輯單元包括:第四邏輯,用於判定該內容關聯記憶體之長度,其中,該長度代表儲存於該內容關聯記憶體中之該鍵值對數;及第五邏輯,用於回傳該內容關聯記憶體之該長度之指示。在和上述任一實施例組合時,該集合運算邏輯單元包括:第四邏輯,用於將該內容關聯記憶體之內容刪除或作廢;及第五邏輯,用於將該內容關聯記憶體之該長度之指示符重置到零,其中,該長度代表儲存於該內容關聯記憶體中之該鍵值對數。在和上述任一實施例組合時,該集合運算邏輯單元包括:第四邏輯,用於將儲存於該內容關聯記憶體中之該鍵值對之鍵移動到該指令中所指定之第一輸出位置;及第五邏輯,用於將儲存於該內容關聯記憶體中之該鍵值對之值移動到該指令中所指定之第二輸出位置。在上述任一實施例中,該集 合運算邏輯單元可以是處理器中之複數個集合運算邏輯單元的其中之一,且該集合運算邏輯單元包括第六邏輯,用於從處理器之複數個處理器核芯中的特定者接收由該集合運算邏輯單元執行之指令。在和上述任一實施例組合時,該集合運算邏輯單元包括第六邏輯,用於從複數個處理器核芯或處理器之硬體執行緒中接收由該集合運算邏輯單元執行之指令。
本發明之一些實施例包括一種方法。在至少一些的諸實施例中,該方法包括:接收第一指令;解碼該第一指令;傳送該第一指令至集合運算邏輯單元,以便執行該第一指令;及止用該第一指令。執行該第一指令包括:存取儲存於內容關聯記憶體中之第一組鍵值對;從該第一指令中所識別之一或多個輸入位置接收第二組鍵值對;判定該第二組鍵值對之各鍵值對中是否其鍵匹配於該第一組鍵值對之鍵值對中之鍵;及儲存該判定之結果於該第一指令中所識別之輸出位置。在上述任一實施例中,該判定之結果包括:該第二組鍵值對之該鍵值對中之該鍵被判定為匹配於該第一組鍵值對之鍵值對中之鍵;該第二組鍵值對之該鍵值對中之該值,其鍵被判定為匹配於該第一組鍵值對之鍵值對中之鍵;或該第二組鍵值對之該鍵值對中之該鍵數,其鍵被判定為匹配於該第一組鍵值對之鍵值對中之鍵。在和上述任一實施例組合時,該方法包括:因為該識別的結果而將其鍵匹配於該第一組鍵值對之鍵值對中之鍵的該第二組鍵值對之鍵值對之鍵儲存在該第一指令中所識 別之第一輸出位置,及因為該識別的結果而將其鍵匹配於該第一組鍵值對之鍵值對中之鍵的該第二組鍵值對之鍵值對之鍵儲存在該第一指令中所識別之第二輸出位置。在和上述任一實施例組合時,該方法包括因為該識別的結果而將代表其鍵匹配於該第一組鍵值對之鍵值對中之鍵的該第二組鍵值對之鍵值對數之資料儲存在該第一指令中所識別之輸出位置。在上述任一實施例中,執行該第一指令進一步包括:將該第一指令中所指定之運算使用於:其鍵匹配於該第一組鍵值對之鍵值對中之鍵的該第二組鍵值對之各鍵值對中之值;及具有該匹配鍵的該第一組鍵值對之鍵值對中之值,以取得用於各該匹配鍵的結果值;產生第三組鍵值對,該第三組鍵值對包括:用於各該匹配鍵的各別鍵值對,其含有用於該匹配鍵的該結果值;及用於該第一組鍵值對之各鍵值對與該第二組鍵值對之各鍵值對的各別鍵值對,其具有唯一鍵;及儲存該第三組鍵值對在該內容關聯記憶體中。在上述任一實施例中,該第二組鍵值對可以是有序之鍵值對,其中該鍵值對是依據其各別鍵而排序。在上述任一實施例中,用於該第二組鍵值對之鍵可儲存在該指令中所識別之第一輸入位置,用於該第二組鍵值對之值可儲存在該指令中所識別之第二輸入位置,及該方法包括接收輸入,以該第二組鍵值對代表來自該第一輸入位置與該第二輸入位置之串流輸入。在和上述任一實施例組合時,該方法包括:接收第二指令;解碼該第二指令;傳送該第二指令至該集合運算邏輯單元,以便執行該第二指 令;及止用該第二指令。執行該第二指令包括:判定該內容關聯記憶體之長度,其中,該長度代表儲存於該內容關聯記憶體中之該鍵值對數;及回傳該內容關聯記憶體之該長度之指示。在和上述任一實施例組合時,該方法包括:接收第二指令;解碼該第二指令;傳送該第二指令至該集合運算邏輯單元,以便執行該第二指令;及止用該第二指令。執行該第二指令包括:將該內容關聯記憶體之內容刪除或作廢;及將該內容關聯記憶體之該長度之指示符重置到零,其中,該長度代表儲存於該內容關聯記憶體中之該鍵值對數。在和上述任一實施例組合時,該方法包括:接收第二指令;解碼該第二指令;傳送該第二指令至該集合運算邏輯單元,以便執行該第二指令;及止用該第二指令。執行該第二指令包括:將儲存於該內容關聯記憶體中之該鍵值對之鍵儲存到該第二指令中所指定之第一輸出位置;及將儲存於該內容關聯記憶體中之該鍵值對之值儲存到該第二指令中所指定之第二輸出位置。在和上述任一實施例組合時,執行該第一指令包括識別其鍵匹配於該第一組鍵值對之鍵值對中之鍵的該第二組鍵值對之鍵值對。在和上述任一實施例組合時,該方法包括產生該識別的結果。該識別的結果包括:匹配鍵的集合、用於具有匹配鍵之該第二組鍵值對之鍵值對的值的集合、或多數匹配鍵之指示。在上述任一實施例中,執行該第一指令可由集合運算邏輯單元實施。該集合運算邏輯單元可以是處理器中之多數個集合運算邏輯單元的其中之一。在和上述任一實施 例組合時,該方法包括從處理器之多數個處理器核芯的其中之一接收該第一指令。在和上述任一實施例組合時,該方法包括從處理器之多數個硬體執行緒的其中之一接收該第一指令。
本發明之一些實施例包括一種集合運算邏輯單元。在至少一些的諸實施例中,該集合運算邏輯單元包括:內容關聯記憶體;第一邏輯,用於儲存第一組鍵值對在該內容關聯記憶體中;第二邏輯,用於從該指令中所識別之一或多個輸入位置取得輸入,以便代表第二組鍵值對;及第三邏輯,用於識別該第二組鍵值對之鍵值對中,其鍵匹配於該第一組鍵值對之鍵值對中之鍵。在上述任一實施例中,該第二組鍵值對可以是有序之鍵值對,其中該鍵值對是依據其各別鍵而排序。在上述任一實施例中,用於該第二組鍵值對之鍵可儲存在該指令中所識別之第一輸入位置,用於該第二組鍵值對之值可儲存在該指令中所識別之第二輸入位置。在和上述任一實施例組合時,該集合運算邏輯單元包括第四邏輯,用於接收輸入,以該第二組鍵值對代表來自該第一輸入位置與該第二輸入位置之串流輸入。在和上述任一實施例組合時,該集合運算邏輯單元包括:第四邏輯,用於因為該識別的結果而將其鍵匹配於該第一組鍵值對之鍵值對中之鍵的該第二組鍵值對之鍵值對之鍵儲存在該指令中所識別之第一輸出位置,及第五邏輯,用於因為該識別的結果而將其鍵匹配於該第一組鍵值對之鍵值對中之鍵的該第二組鍵值對之鍵值對之鍵儲存在該指令中所 識別之第二輸出位置。在和上述任一實施例組合時,該集合運算邏輯單元包括第四邏輯,用於因為該識別的結果而將代表其鍵匹配於該第一組鍵值對之鍵值對中之鍵的該第二組鍵值對之多數鍵值對之鍵之資料儲存在該指令中所識別之輸出位置。在和上述任一實施例組合時,該集合運算邏輯單元包括第四邏輯,用於接收由該集合運算邏輯單元執行之該指令。在和上述任一實施例組合時,該集合運算邏輯單元包括第五邏輯,用於產生該識別的結果。該結果包括:匹配鍵的集合、用於具有匹配鍵之該第二組鍵值對之鍵值對的值的集合、或多數匹配鍵之指示。在和上述任一實施例組合時,該集合運算邏輯單元包括第四邏輯,用於使用該指令中所指定之算術或集合運算於:其鍵匹配於該第一組鍵值對之鍵值對中之鍵的該第二組鍵值對之各鍵值對中之值;及具有該匹配鍵的該第一組鍵值對之鍵值對中之值,以取得用於該匹配鍵的結果值。在和上述任一實施例組合時,該集合運算邏輯單元包括:第五邏輯,用於產生第三組鍵值對,該第三組鍵值對包含用於各該匹配鍵的各別鍵值對,其含有用於該匹配鍵的該結果值;及用於該第一組鍵值對之各鍵值對與該第二組鍵值對之各鍵值對的各別鍵值對,其具有唯一鍵;及第六邏輯,用於儲存該第三組鍵值對在該內容關聯記憶體中。在和上述任一實施例組合時,該集合運算邏輯單元包括:第四邏輯,用於判定該內容關聯記憶體之長度,其中,該長度代表儲存於該內容關聯記憶體中之該鍵值對數;及第五邏輯,用於回傳 該內容關聯記憶體之該長度之指示。在和上述任一實施例組合時,該集合運算邏輯單元包括:第四邏輯,用於將該內容關聯記憶體之內容刪除或作廢;及第五邏輯,用於將該內容關聯記憶體之該長度之指示符重置到零,其中,該長度代表儲存於該內容關聯記憶體中之該鍵值對數。在和上述任一實施例組合時,該集合運算邏輯單元包括:第四邏輯,用於將儲存於該內容關聯記憶體中之該鍵值對之鍵移動到該指令中所指定之第一輸出位置;及第五邏輯,用於將儲存於該內容關聯記憶體中之該鍵值對之值移動到該指令中所指定之第二輸出位置。在上述任一實施例中,該集合運算邏輯單元可以是處理器中之複數個集合運算邏輯單元的其中之一,且該集合運算邏輯單元包括第六邏輯,用於從處理器之複數個處理器核芯中的特定者接收由該集合運算邏輯單元執行之指令。在和上述任一實施例組合時,該集合運算邏輯單元包括第六邏輯,用於從複數個處理器核芯或處理器之硬體執行緒中接收由該集合運算邏輯單元執行之指令。
本發明之一些實施例包括一種系統。在至少一些的諸實施例中,該系統包括:內容關聯記憶體;第一邏輯,用於儲存第一組鍵值對在該內容關聯記憶體中;第二邏輯,用於從該指令中所識別之一或多個輸入位置取得輸入,以便代表第二組鍵值對;及第三邏輯,用於識別該第二組鍵值對之鍵值對中,其鍵匹配於該第一組鍵值對之鍵值對中之鍵。在上述任一實施例中,該第二組鍵值對可以是有序 之鍵值對,其中該鍵值對是依據其各別鍵而排序。在上述任一實施例中,用於該第二組鍵值對之鍵可儲存在該指令中所識別之第一輸入位置,用於該第二組鍵值對之值可儲存在該指令中所識別之第二輸入位置。在和上述任一實施例組合時,該系統包括第四邏輯,用於接收輸入,以該第二組鍵值對代表來自該第一輸入位置與該第二輸入位置之串流輸入。在和上述任一實施例組合時,該系統包括:第四邏輯,用於因為該識別的結果而將其鍵匹配於該第一組鍵值對之鍵值對中之鍵的該第二組鍵值對之鍵值對之鍵儲存在該指令中所識別之第一輸出位置,及第五邏輯,用於因為該識別的結果而將其鍵匹配於該第一組鍵值對之鍵值對中之鍵的該第二組鍵值對之鍵值對之鍵儲存在該指令中所識別之第二輸出位置。在和上述任一實施例組合時,該系統包括第四邏輯,用於因為該識別的結果而將代表其鍵匹配於該第一組鍵值對之鍵值對中之鍵的該第二組鍵值對之多數鍵值對之鍵之資料儲存在該指令中所識別之輸出位置。在和上述任一實施例組合時,該系統包括第四邏輯,用於接收由該系統執行之該指令。在和上述任一實施例組合時,該系統包括第五邏輯,用於產生該識別的結果。該結果包括:匹配鍵的集合、用於具有匹配鍵之該第二組鍵值對之鍵值對的值的集合、或多數匹配鍵之指示。在和上述任一實施例組合時,該系統包括第四邏輯,用於使用該指令中所指定之算術或集合運算於:其鍵匹配於該第一組鍵值對之鍵值對中之鍵的該第二組鍵值對之各鍵值對中之 值;及具有該匹配鍵的該第一組鍵值對之鍵值對中之值,以取得用於該匹配鍵的結果值。在和上述任一實施例組合時,該系統包括:第五邏輯,用於產生第三組鍵值對,該第三組鍵值對包含用於各該匹配鍵的各別鍵值對,其含有用於該匹配鍵的該結果值;及用於該第一組鍵值對之各鍵值對與該第二組鍵值對之各鍵值對的各別鍵值對,其具有唯一鍵;及第六邏輯,用於儲存該第三組鍵值對在該內容關聯記憶體中。在和上述任一實施例組合時,該系統包括:第四邏輯,用於判定該內容關聯記憶體之長度,其中,該長度代表儲存於該內容關聯記憶體中之該鍵值對數;及第五邏輯,用於回傳該內容關聯記憶體之該長度之指示。在和上述任一實施例組合時,該系統包括:第四邏輯,用於將該內容關聯記憶體之內容刪除或作廢;及第五邏輯,用於將該內容關聯記憶體之該長度之指示符重置到零,其中,該長度代表儲存於該內容關聯記憶體中之該鍵值對數。在和上述任一實施例組合時,該系統包括:第四邏輯,用於將儲存於該內容關聯記憶體中之該鍵值對之鍵移動到該指令中所指定之第一輸出位置;及第五邏輯,用於將儲存於該內容關聯記憶體中之該鍵值對之值移動到該指令中所指定之第二輸出位置。在上述任一實施例中,該系統包括第六邏輯,用於從處理器之複數個處理器核芯中的特定者接收欲執行之指令。在和上述任一實施例組合時,該系統包括第六邏輯,用於從處理器之複數個硬體執行緒中接收欲執行之指令。
本發明之一些實施例包括一種執行指令之系統。在至少一些的諸實施例中,該系統包括:裝置,用於接收第一指令、解碼該第一指令、執行該第一指令、及止用該第一指令。該用於執行該第一指令之裝置包括:裝置,用於存取儲存於內容關聯記憶體中之第一組鍵值對;裝置,用於從該第一指令中所識別之一或多個輸入位置接收第二組鍵值對;裝置,用於針對該第二組鍵值對之各鍵值對判定其鍵是否匹配於該第一組鍵值對之各鍵值對中之鍵;及裝置,儲存該判定之結果於該第一指令中所識別之輸出位置。在上述任一實施例中,該判定之結果包括:該第二組鍵值對之該鍵值對中之該鍵被判定為匹配於該第一組鍵值對之鍵值對中之鍵;該第二組鍵值對之該鍵值對中之該值,其鍵被判定為匹配於該第一組鍵值對之鍵值對中之鍵;或該第二組鍵值對之該鍵值對中之該鍵數,其鍵被判定為匹配於該第一組鍵值對之鍵值對中之鍵。在和上述任一實施例組合時,該系統包括:裝置,用於因為該識別的結果而將其鍵匹配於該第一組鍵值對之鍵值對中之鍵的該第二組鍵值對之鍵值對之鍵儲存在該第一指令中所識別之第一輸出位置,及裝置,用於因為該識別的結果而將其鍵匹配於該第一組鍵值對之鍵值對中之鍵的該第二組鍵值對之鍵值對之鍵儲存在該第一指令中所識別之第二輸出位置。在和上述任一實施例組合時,該系統包括:裝置,用於因為該識別的結果而將代表其鍵匹配於該第一組鍵值對之鍵值對中之鍵的該第二組鍵值對之鍵值對數之資料儲存 在該第一指令中所識別之輸出位置。在上述任一實施例中,該用於執行該第一指令之裝置包括:裝置,用於將該第一指令中所指定之運算使用於:其鍵匹配於該第一組鍵值對之鍵值對中之鍵的該第二組鍵值對之各鍵值對中之值;及具有該匹配鍵的該第一組鍵值對之鍵值對中之值,以取得用於各該匹配鍵的結果值;裝置,用於產生第三組鍵值對,該第三組鍵值對包括:用於各該匹配鍵的各別鍵值對,其含有用於該匹配鍵的該結果值;及用於該第一組鍵值對之各鍵值對與該第二組鍵值對之各鍵值對的各別鍵值對,其具有唯一鍵;及裝置,用於儲存該第三組鍵值對在該內容關聯記憶體中。在上述任一實施例中,該第二組鍵值對可以是有序之鍵值對,其中該鍵值對是依據其各別鍵而排序。在上述任一實施例中,用於該第二組鍵值對之鍵可儲存在該第一指令中所識別之第一輸入位置,用於該第二組鍵值對之值可儲存在該第一指令中所識別之第二輸入位置,及該系統包括裝置,用於接收輸入,以該第二組鍵值對代表來自該第一輸入位置與該第二輸入位置之串流輸入。在和上述任一實施例組合時,該系統包括:裝置,用於接收第二指令、解碼該第二指令、執行該第二指令、及止用該第二指令。在上述任一實施例中,該執行該第二指令之裝置包括:裝置,用於判定該內容關聯記憶體之長度,其中,該長度代表儲存於該內容關聯記憶體中之該鍵值對數;及裝置,用於回傳該內容關聯記憶體之該長度之指示。在上述任一實施例中,該執行該第二指令之裝置包 括:裝置,用於將該內容關聯記憶體之內容刪除或作廢;及裝置,用於將該內容關聯記憶體之該長度之指示符重置到零,其中,該長度代表儲存於該內容關聯記憶體中之該鍵值對數。在上述任一實施例中,該執行該第二指令之裝置包括:裝置,用於將儲存於該內容關聯記憶體中之該鍵值對之鍵儲存到該第二指令中所指定之第一輸出位置;及將儲存於該內容關聯記憶體中之該鍵值對之值儲存到該第二指令中所指定之第二輸出位置。在上述任一實施例中,該執行該第一指令之裝置包括:裝置,用於識別其鍵匹配於該第一組鍵值對之鍵值對中之鍵的該第二組鍵值對之鍵值對。在上述任一實施例中,該系統包括產生該識別的結果。該識別的結果包括:匹配鍵的集合、用於具有匹配鍵之該第二組鍵值對之鍵值對的值的集合、或多數匹配鍵之指示。在上述任一實施例中,該執行該第一指令之裝置包括集合運算邏輯單元。在和上述任一實施例組合時,該系統包括裝置,用於從處理器之多數個處理器核芯的其中之一接收該第一指令。在和上述任一實施例組合時,該系統包括裝置,用於從處理器之多數個硬體執行緒的其中之一接收該第一指令。
140‧‧‧資料處理系統
141‧‧‧匯流排
142‧‧‧執行單元
143‧‧‧緊縮指令集
144‧‧‧解碼器
145‧‧‧暫存器檔
146‧‧‧同步動態隨機存取記憶體控制
147‧‧‧靜態隨機存取記憶體控制
148‧‧‧突發快閃記憶體介面
149‧‧‧個人電腦記憶卡國際協會/緊湊型快閃記憶卡控制
150‧‧‧液晶顯示器控制
151‧‧‧直接記憶體存取
152‧‧‧匯流排主介面
153‧‧‧輸入/輸出匯流排
154‧‧‧輸入/輸出橋接器
155‧‧‧通用非同步接收器/發送器
156‧‧‧通用序列匯流排
157‧‧‧藍牙無線通用非同步接收器/發送器
158‧‧‧輸入/輸出擴充介面
159‧‧‧處理核芯

Claims (20)

  1. 一種處理器,包含:前端,用於解碼至少一指令;配置器,用於傳送該指令至集合運算邏輯單元,以執行該指令,該集合運算邏輯單元包括:內容關聯記憶體;第一邏輯,用於儲存第一組鍵值對在該內容關聯記憶體中;第二邏輯,用於從該指令中所識別之一或多個輸入位置取得輸入,以代表第二組鍵值對;及第三邏輯,用於識別該第二組鍵值對之鍵值對中,其鍵匹配於該第一組鍵值對之鍵值對中之鍵;及止用單元,用於止用該指令。
  2. 如申請專利範圍第1項之處理器,其中,該集合運算邏輯單元進一步包括:第四邏輯,用於因為該識別的結果而將其鍵匹配於該第一組鍵值對之鍵值對中之鍵的該第二組鍵值對中之鍵值對之鍵儲存在該指令中所識別之第一輸出位置;及第五邏輯,用於因為該識別的結果而將其鍵匹配於該第一組鍵值對中之鍵值對中之鍵的該第二組鍵值對之鍵值對之值儲存在該指令中所識別之第二輸出位置。
  3. 如申請專利範圍第1項之處理器,其中,該集合運算邏輯單元進一步包括第四邏輯,用於因為該識別的結果而將代表其鍵匹配於該第一組鍵值對中之鍵值對中之鍵的 該第二組鍵值對之多數鍵值對之鍵之資料儲存在該指令中所識別之輸出位置。
  4. 如申請專利範圍第1項之處理器,其中,該集合運算邏輯單元進一步包括:第四邏輯,用於使用該指令中所指定之算術或集合運算於:其鍵匹配於該第一組鍵值對中之鍵值對中之鍵的該第二組鍵值對中之各鍵值對中之值;及具有該匹配鍵的該第一組鍵值對之鍵值對中之值,以取得用於該匹配鍵的結果值;第五邏輯,用於產生第三組鍵值對,該第三組鍵值對包含:用於各匹配鍵的各別鍵值對,其含有用於該匹配鍵的該結果值;及用於該第一組鍵值對中之各鍵值對與該第二組鍵值對中之各鍵值對的各別鍵值對,其具有唯一鍵(unique keys);及第六邏輯,用於儲存該第三組鍵值對在該內容關聯記憶體中。
  5. 如申請專利範圍第1項之處理器,其中,該集合運算邏輯單元進一步包括:第四邏輯,用於判定該內容關聯記憶體之長度,其中,該長度代表儲存於該內容關聯記憶體中之該鍵值對數;及 第五邏輯,用於回傳該內容關聯記憶體之該長度之指示。
  6. 如申請專利範圍第1項之處理器,其中,該集合運算邏輯單元進一步包括:第四邏輯,用於將該內容關聯記憶體之內容刪除或作廢;及第五邏輯,用於將該內容關聯記憶體之該長度之指示符重置到零,其中,該長度代表儲存於該內容關聯記憶體中之該鍵值對數。
  7. 如申請專利範圍第1項之處理器,其中,該集合運算邏輯單元進一步包括:第四邏輯,用於將儲存於該內容關聯記憶體中之該鍵值對之鍵移動到該指令中所指定之第一輸出位置;及第五邏輯,用於將儲存於該內容關聯記憶體中之該鍵值對之值移動到該指令中所指定之第二輸出位置。
  8. 一種方法,包含:接收第一指令;解碼該第一指令;傳送該第一指令至集合運算邏輯單元,以執行該第一指令;藉由該集合運算邏輯單元執行該第一指令,包括:存取儲存於內容關聯記憶體中之第一組鍵值對;從該第一指令中所識別之一或多個輸入位置接收第二組鍵值對; 判定該第二組鍵值對中之各鍵值對是否其鍵匹配於該第一組鍵值對中之鍵值對中之鍵;儲存該判定之結果於該第一指令中所識別之輸出位置;及止用該第一指令。
  9. 如申請專利範圍第8項之方法,其中,該判定之結果包含:該第二組鍵值對中之該鍵值對中之該鍵被判定為匹配於該第一組鍵值對中之鍵值對中之鍵;該第二組鍵值對中之該鍵值對中之該值,其鍵被判定為匹配於該第一組鍵值對中之鍵值對中之鍵;或該第二組鍵值對中之該鍵值對中之該鍵數,其鍵被判定為匹配於該第一組鍵值對中之鍵值對中之鍵。
  10. 如申請專利範圍第8項之方法,其中,執行該第一指令進一步包括:將該第一指令中所指定之運算使用於:其鍵匹配於該第一組鍵值對中之鍵值對中之鍵的該第二組鍵值對中之各鍵值對中之值;及具有該匹配鍵的該第一組鍵值對中之鍵值對中之值,以取得用於各匹配鍵的結果值;產生第三組鍵值對,該第三組鍵值對包含:用於各該匹配鍵的各別鍵值對,其含有用於該匹配鍵的該結果值;及用於該第一組鍵值對中之各鍵值對與該第二組鍵 值對中之各鍵值對的各別鍵值對,其具有唯一鍵;及儲存該第三組鍵值對在該內容關聯記憶體中。
  11. 如申請專利範圍第8項之方法,進一步包含:接收第二指令;解碼該第二指令;傳送該第二指令至該集合運算邏輯單元,以執行該第二指令;藉由該集合運算邏輯單元執行該第二指令,包括:判定該內容關聯記憶體之長度,其中,該長度代表儲存於該內容關聯記憶體中之該鍵值對數;及回傳該內容關聯記憶體之該長度之指示;及止用該第二指令。
  12. 如申請專利範圍第8項之方法,進一步包含:接收第二指令;解碼該第二指令;傳送該第二指令至該集合運算邏輯單元,以執行該第二指令;藉由該集合運算邏輯單元執行該第二指令,包括:將該內容關聯記憶體之內容刪除或作廢;及將該內容關聯記憶體之該長度之指示符重置到零,其中,該長度代表儲存於該內容關聯記憶體中之該鍵值對數;及止用該第二指令。
  13. 如申請專利範圍第8項之方法,進一步包含: 接收第二指令;解碼該第二指令;傳送該第二指令至該集合運算邏輯單元,以執行該第二指令;藉由該集合運算邏輯單元執行該第二指令,包括:將儲存於該內容關聯記憶體中之該鍵值對之鍵儲存到該第二指令中所指定之第一輸出位置;及將儲存於該內容關聯記憶體中之該鍵值對之值儲存到該第二指令中所指定之第二輸出位置;及止用該第二指令。
  14. 一種集合運算邏輯單元,包含:內容關聯記憶體;第一邏輯,用於接收由該集合運算邏輯單元執行之指令;第二邏輯,用於儲存第一組鍵值對在該內容關聯記憶體中;第三邏輯,用於從該指令中所識別之一或多個輸入位置取得輸入,以代表第二組鍵值對;及第四邏輯,用於識別該第二組鍵值對之鍵值對中,其鍵匹配於該第一組鍵值對中之鍵值對中之鍵。
  15. 如申請專利範圍第14項之集合運算邏輯單元,其中:該集合運算邏輯單元進一步包含第五邏輯,用於產生該識別之結果;及 該結果包含匹配鍵的集合、用於具有匹配鍵之該第二組鍵值對中之鍵值對的值的集合、或多數匹配鍵之指示。
  16. 如申請專利範圍第14項之集合運算邏輯單元,進一步包含:第五邏輯,用於使用該指令中所指定之算術或集合運算於:其鍵匹配於該第一組鍵值對中之鍵值對中之鍵的該第二組鍵值對中之各鍵值對中之值;及具有該匹配鍵的該第一組鍵值對中之鍵值對中之值,以取得用於該匹配鍵的結果值;第六邏輯,用於產生第三組鍵值對,該第三組鍵值對包含:用於各匹配鍵的各別鍵值對,其含有用於該匹配鍵的該結果值;及用於該第一組鍵值對之各鍵值對與該第二組鍵值對中之各鍵值對的各別鍵值對,其具有唯一鍵;及第七邏輯,用於儲存該第三組鍵值對在該內容關聯記憶體中。
  17. 如申請專利範圍第16項之集合運算邏輯單元,進一步包含:第五邏輯,用於判定該內容關聯記憶體之長度,其中,該長度代表儲存於該內容關聯記憶體中之該鍵值對數;及第六邏輯,用於回傳該內容關聯記憶體之該長度之指 示。
  18. 如申請專利範圍第16項之集合運算邏輯單元,進一步包含:第五邏輯,用於將該內容關聯記憶體之內容刪除或作廢;及第六邏輯,用於將該內容關聯記憶體之該長度之指示符重置到零,其中,該長度代表儲存於該內容關聯記憶體中之該鍵值對數。
  19. 如申請專利範圍第16項之集合運算邏輯單元,進一步包含:第五邏輯,用於將儲存於該內容關聯記憶體中之該鍵值對之鍵複製到該指令中所指定之第一輸出位置;及第六邏輯,用於將儲存於該內容關聯記憶體中之該鍵值對之值複製到該指令中所指定之第二輸出位置。
  20. 如申請專利範圍第16項之集合運算邏輯單元,進一步包含:第五邏輯,用於從複數個處理器核芯或處理器之硬體執行緒接收由該集合運算邏輯單元執行之指令。
TW105137912A 2015-12-23 2016-11-18 用於集合運算之加速的硬體內容關聯之資料結構 TW201732556A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14/757,776 US20170185403A1 (en) 2015-12-23 2015-12-23 Hardware content-associative data structure for acceleration of set operations

Publications (1)

Publication Number Publication Date
TW201732556A true TW201732556A (zh) 2017-09-16

Family

ID=59087222

Family Applications (1)

Application Number Title Priority Date Filing Date
TW105137912A TW201732556A (zh) 2015-12-23 2016-11-18 用於集合運算之加速的硬體內容關聯之資料結構

Country Status (5)

Country Link
US (1) US20170185403A1 (zh)
CN (1) CN108431770A (zh)
DE (1) DE112016006028T5 (zh)
TW (1) TW201732556A (zh)
WO (1) WO2017112249A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI671684B (zh) * 2018-12-14 2019-09-11 National Pingtung University Of Science & Technology 影像監視方法及系統
TWI846980B (zh) * 2019-11-15 2024-07-01 美商英特爾股份有限公司 用於稀疏資料之脈動式算術的計算裝置、方法、圖形處理系統、非暫時性機器可讀取媒體及圖形處理器

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10191744B2 (en) * 2016-07-01 2019-01-29 Intel Corporation Apparatuses, methods, and systems for element sorting of vectors
US10289752B2 (en) * 2016-12-12 2019-05-14 Intel Corporation Accelerator for gather-update-scatter operations including a content-addressable memory (CAM) and CAM controller
CN111819546A (zh) * 2018-01-11 2020-10-23 诺基亚技术有限公司 无线网络中的频率域调度器的硬件加速
EP4009183A1 (en) 2018-10-18 2022-06-08 Shanghai Cambricon Information Technology Co., Ltd Network-on-chip data processing method and device
CN111079908B (zh) * 2018-10-18 2024-02-13 上海寒武纪信息科技有限公司 片上网络数据处理方法、存储介质、计算机设备和装置
CN112491857B (zh) * 2020-11-20 2023-05-02 北京人大金仓信息技术股份有限公司 集合类型数据的传输方法、装置和设备

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5640526A (en) * 1994-12-21 1997-06-17 International Business Machines Corporation Superscaler instruction pipeline having boundary indentification logic for variable length instructions
US6226710B1 (en) * 1997-11-14 2001-05-01 Utmc Microelectronic Systems Inc. Content addressable memory (CAM) engine
US10558705B2 (en) * 2010-10-20 2020-02-11 Microsoft Technology Licensing, Llc Low RAM space, high-throughput persistent key-value store using secondary memory
JP5762878B2 (ja) * 2011-08-08 2015-08-12 株式会社東芝 key−valueストアを有するメモリシステム
DE112011105664T5 (de) * 2011-09-26 2014-08-21 Intel Corporation Instruktion und Logik zum Bereitstellen einer Vektorstreuungs-Op- und -Hol-Op-Funktionalität
CN103365883A (zh) * 2012-03-30 2013-10-23 华为技术有限公司 数据的索引查询方法、装置及系统
US9098403B2 (en) * 2012-11-09 2015-08-04 Sandisk Technologies Inc. NAND flash based content addressable memory
US9336334B2 (en) * 2013-05-17 2016-05-10 Bigobject, Inc. Key-value pairs data processing apparatus and method

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI671684B (zh) * 2018-12-14 2019-09-11 National Pingtung University Of Science & Technology 影像監視方法及系統
TWI846980B (zh) * 2019-11-15 2024-07-01 美商英特爾股份有限公司 用於稀疏資料之脈動式算術的計算裝置、方法、圖形處理系統、非暫時性機器可讀取媒體及圖形處理器

Also Published As

Publication number Publication date
CN108431770A (zh) 2018-08-21
DE112016006028T5 (de) 2018-09-13
WO2017112249A1 (en) 2017-06-29
US20170185403A1 (en) 2017-06-29

Similar Documents

Publication Publication Date Title
CN108292215B (zh) 用于加载-索引和预取-聚集操作的指令和逻辑
TWI733710B (zh) 用於重複發生相鄰聚集的處理器、方法和單元
TWI738682B (zh) 用於載入索引和散佈元件的處理器、方法及系統
US20160378465A1 (en) Efficient sparse array handling in a processor
TW201729078A (zh) 用於以通道為基礎的跨步儲存操作之指令及邏輯
TW201723814A (zh) 用於可程式化組構層級與快取之指令及邏輯
TW201732556A (zh) 用於集合運算之加速的硬體內容關聯之資料結構
TW201725509A (zh) 用於安全指令執行管線之指令及邏輯
US10514927B2 (en) Instruction and logic for sorting and retiring stores
TW201727493A (zh) 從持續記憶體預取資訊的指令及邏輯
RU2662394C2 (ru) Инструкция и логика для доступа к памяти в кластерной машине широкого исполнения
TWI588740B (zh) 包括用於移位和(shift-sum)乘法器之指令及邏輯的處理器及系統,以及用於移位和乘法的方法
TWI715681B (zh) 用於位元欄位位址和插入之指令及邏輯
TW201732581A (zh) 用於載入索引與集中操作的指令及邏輯
TWI715669B (zh) 仿真的訊息通知中斷(msi)中斷處置
TWI590079B (zh) 用於處理計算的向量格式的指令及邏輯
TW201723856A (zh) 用於亂序處理器中依序處置之指令與邏輯
TW201723817A (zh) 用於取得多重向量元素操作之指令及邏輯
US20180004526A1 (en) System and Method for Tracing Data Addresses
TW201729077A (zh) 用於設置多重向量元素操作之指令及邏輯
TWI729029B (zh) 用於向量位元欄壓縮及擴展的指令及邏輯
TW201723815A (zh) 用於偶數與奇數向量取得操作之指令及邏輯
TW201732548A (zh) 用於向量置換的指令和邏輯
TW201729079A (zh) 用於檢測浮點消除效應之指令及邏輯
RU2644528C2 (ru) Инструкция и логика для идентификации инструкций для удаления в многопоточном процессоре с изменением последовательности