TW201734758A - 使用硬體佇列裝置的多核心通訊加速 - Google Patents
使用硬體佇列裝置的多核心通訊加速 Download PDFInfo
- Publication number
- TW201734758A TW201734758A TW105139954A TW105139954A TW201734758A TW 201734758 A TW201734758 A TW 201734758A TW 105139954 A TW105139954 A TW 105139954A TW 105139954 A TW105139954 A TW 105139954A TW 201734758 A TW201734758 A TW 201734758A
- Authority
- TW
- Taiwan
- Prior art keywords
- hardware
- queue
- core
- data
- request
- Prior art date
Links
- 238000004891 communication Methods 0.000 title abstract description 20
- 230000001133 acceleration Effects 0.000 title description 3
- 230000015654 memory Effects 0.000 claims description 98
- 239000000872 buffer Substances 0.000 claims description 38
- 238000003860 storage Methods 0.000 claims description 38
- 238000012545 processing Methods 0.000 claims description 17
- 238000007493 shaping process Methods 0.000 claims description 2
- 241001522296 Erithacus rubecula Species 0.000 claims 1
- 230000008685 targeting Effects 0.000 claims 1
- 238000000034 method Methods 0.000 abstract description 20
- 230000008569 process Effects 0.000 abstract description 5
- 238000010586 diagram Methods 0.000 description 30
- 238000007726 management method Methods 0.000 description 26
- 230000006870 function Effects 0.000 description 15
- 238000007667 floating Methods 0.000 description 7
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 235000012431 wafers Nutrition 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000000605 extraction Methods 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 238000004519 manufacturing process Methods 0.000 description 4
- 239000000463 material Substances 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000005457 optimization Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000003863 physical function Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004883 computer application Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000005669 field effect Effects 0.000 description 1
- 230000004907 flux Effects 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/36—Handling requests for interconnection or transfer for access to common bus or bus system
- G06F13/368—Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control
- G06F13/37—Handling requests for interconnection or transfer for access to common bus or bus system with decentralised access control using a physical-position-dependent priority, e.g. daisy chain, round robin or token passing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1642—Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/04—Addressing variable-length words or parts of words
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/28—Using a specific disk cache architecture
- G06F2212/283—Plural cache memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/6042—Allocation of cache space to multiple users or processors
- G06F2212/6046—Using a specific cache allocation policy other than replacement policy
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Advance Control (AREA)
- Multi Processors (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
設備與方法,實施用以藉由卸載來自CPU核心的請求管理及資料一致性任務來減少核心間(inter-core)資料傳送負擔的硬體佇列管理裝置。該設備包括多核心處理器、共享L3或末階快取記憶體(「LLC」)、以及硬體佇列管理裝置,該硬體佇列管理裝置用以接收、儲存、及處理核心間資料傳送請求。該硬體佇列管理裝置進一步包含用以控制速率的資源管理系統,其中,該等核心可提交用以減少核心停頓的請求及丟棄的請求。此外,引入軟體指令用以最佳化該等核心與該硬體佇列管理裝置之間的通訊。
Description
本揭露關於使用硬體佇列裝置的多核心通訊加速。
核心對核心(「C2C」)通訊在今日的許多諸如封包處理、高效能運算、機器學習、以及資料中心/雲端工作負載的電腦應用中至關重要。在晶片多處理器(「CMP」)架構中,隨著核心的數目增加,C2C通訊常常成為工作負載分享資料時的性能定標的限制因素。在通用型平台上,核心間的共享記憶體空間通常被用來實現有效率的C2C通訊。然而,由軟體謹慎管理共享記憶體空間的需求,連同硬體一致性流量的增加,往往帶來顯著的負擔。因此,分享一致的快取記憶體的CPU核心及晶片網路(「NoC」)設計典型經歷大體上較長的潛時和較高的流量,同時花費相當的資源來進行通訊相關的任務。此讓CPU核心及NoC無法進行他們預期的資料處理任務。
一般而言,諸如典型Lamport演算法的軟體
佇列一般用於CMP平台以致能C2C通訊。有兩種類型的負擔產生於傳統軟體佇列中。第一類型由佇列結構維護及同步化、以及由共享記憶體的流量控制和管理所消耗的循環所組成。此類型的負擔稱為控制平面負擔(control plane overhead)。第二類型的負擔由資料從一核心移到另一核心所花的循環所組成。此類型的負擔稱為資料平面負擔(data plane overhead)。控制平面和資料平面負擔的和構成將資料傳送過諸核心所需的總負擔。有軟體及硬體最佳化可用來減緩此等負擔。來自DPDK庫(軟體最佳化)的RTE-ring碼及使用Freescale的DPAA技術(硬體最佳化)的硬體加速佇列為現今存在之最佳化技術的例子。然而,此等現存的最佳化在減少核心對核心通訊負擔方面沒有一個是理想的。談到同時減少控制平面負擔和資料平面負擔二者時特別是如此。
100‧‧‧佇列管理裝置(QMD)
102‧‧‧環形
104‧‧‧L3快取記憶體
106、108、110、112‧‧‧CPU核心
114‧‧‧緩衝器
116‧‧‧排程器
118‧‧‧進入佇列引擎
120‧‧‧退出佇列引擎
122‧‧‧額度集區控制器
124‧‧‧內部儲存單元
200‧‧‧內部儲存單元
202‧‧‧佇列
212、214、222、224‧‧‧佇列
502‧‧‧全域額度集區
504‧‧‧額度控制系統
506‧‧‧區域額度集區
602-634‧‧‧步驟
700‧‧‧QMD
702‧‧‧軟體執行緒
704‧‧‧共享或專用互連
706‧‧‧OMD的輸入佇列
708‧‧‧仲裁/排程邏輯
710‧‧‧內部儲存器
712‧‧‧QMD的輸出佇列
714‧‧‧共享或專用互連
716‧‧‧消費者軟體
722‧‧‧生產者裝置
724‧‧‧共享或專用互連
726‧‧‧QMD的輸入佇列
728‧‧‧仲裁/排程邏輯
730‧‧‧內部儲存器
732‧‧‧QMD的輸出佇列
734‧‧‧共享或專用互連
736‧‧‧消費者裝置
902‧‧‧QMD
904‧‧‧內部儲存器
906‧‧‧仲裁/排程邏輯
908‧‧‧QMD的實體功能
910‧‧‧VMM/超管理器
912、914‧‧‧QMD虛擬功能
916、920‧‧‧QMD輸入佇列
918、922‧‧‧OMD輸出佇列
924、926‧‧‧客作業系統
928、932‧‧‧生產者軟體
930、934‧‧‧消費者軟體
1000‧‧‧處理器管線
1002‧‧‧提取級
1004‧‧‧長度解碼級
1006‧‧‧解碼級
1008‧‧‧配置級
1010‧‧‧更名級
1012‧‧‧排程級
1014‧‧‧暫存器讀取/記憶體讀取級
1016‧‧‧執行級
1018‧‧‧寫回/記憶體寫入級
1022‧‧‧異常管理級
1024‧‧‧提交級
1030‧‧‧前端硬體
1032‧‧‧分支預測硬體
1034‧‧‧指令快取硬體
1036‧‧‧指令轉換後備緩衝器(TLB)
1038‧‧‧指令提取硬體
1040‧‧‧解碼硬體
1050‧‧‧執行引擎硬體
1052‧‧‧更名/配置器硬體
1054‧‧‧引退硬體
1056‧‧‧排程器硬體
1058‧‧‧實體暫存器檔案(等)硬體
1060‧‧‧執行叢集
1062‧‧‧執行硬體
1064‧‧‧記憶體存取硬體
1070‧‧‧記憶體硬體
1072‧‧‧資料TLB硬體
1074‧‧‧資料快取硬體
1076‧‧‧2階(L2)快取記憶體硬體
1090、1102A、1102N‧‧‧核心
1104A、1104N‧‧‧快取記憶體硬體
1100、1210、1215、1315‧‧‧處理器
1106‧‧‧共享快取記憶體硬體
1108‧‧‧特殊用途邏輯
1110‧‧‧系統助理硬體
1112‧‧‧環形為基的互連硬體
1114‧‧‧積體記憶體控制器硬體
1116‧‧‧匯流排控制器硬體
1200、1300、1400‧‧‧系統
1220‧‧‧控制器集線器
1240、1332、1334‧‧‧記憶體
1245、1338、1520‧‧‧共處理器
1250‧‧‧輸入/輸出集線器(IOH)
1260‧‧‧輸入/輸出(I/O)裝置
1290‧‧‧圖形記憶體控制器集線器(GMCH)
1295‧‧‧連接
1314、1414‧‧‧I/O裝置
1316‧‧‧第一匯流排
1318‧‧‧匯流排橋接器
1320‧‧‧第二匯流排
1322‧‧‧鍵盤及/或滑鼠
1324‧‧‧音訊I/O
1327‧‧‧通訊裝置
1328‧‧‧儲存硬體
1330‧‧‧指令/碼及資料
1339‧‧‧高效能介面
1350‧‧‧點-對-點互連
1352、1354‧‧‧P-P介面
1370‧‧‧第一處理器
1372、1382‧‧‧積體記憶體及I/O控制邏輯(「CL」)
1376、1378、1386、1388‧‧‧點對點(P-P)介面
1380‧‧‧第二處理器
1390‧‧‧晶片組
1394、1398‧‧‧點對點介面電路
1396‧‧‧介面
1415‧‧‧傳統I/O裝置
1500‧‧‧系統單晶片(SoC)
1502‧‧‧互連硬體
1510‧‧‧系統助理硬體
1520‧‧‧共處理器
1530‧‧‧靜態隨機存取記憶體(SRAM)硬體
1532‧‧‧直接記憶體存取(DMA)硬體
1540‧‧‧顯示硬體
1602‧‧‧高階語言
1604‧‧‧x86編譯器
1606‧‧‧x86二進位碼
1608‧‧‧替代指令集編譯器
1610‧‧‧替代指令集二進位碼
1612‧‧‧指令變換器
1614‧‧‧不具有至少一個x86指令集核心的處理器
1616‧‧‧具有至少一個x86指令集核心的處理器
本發明的上述態樣及許多伴隨的優點將因參照以下結合附圖的詳細說明而變得更好瞭解而變得更易體認,除非有特別指明,附圖中各個圖式中同樣的標號意指同樣的元件:圖1係繪示包含各種硬體組件的範例佇列管理裝置的示意圖;圖2繪示用以組態佇列管理裝置裡面的內部儲存單元的範例方法;
圖3繪示以佇列管理裝置來結構佇列登錄的範例方法;圖4繪示佇列管理裝置中的佇列登錄的範例元資料欄位;圖5係繪示範例額度控制系統的示意圖;圖6係繪示額度管理系統的額度分配及補給程序的流程圖;圖7A係繪示生產者/消費者軟體與佇列管理裝置之間的互動的方塊圖;圖7B係繪示硬體生產者/消費者裝置與佇列管理裝置之間的互動的方塊圖;圖8係顯示使用集中式佇列管理裝置來管理管線級之間的佇列的範例核心網路的圖;圖9係繪示虛擬化佇列管理裝置來支援多虛擬機器的方塊圖;圖10A係繪示根據本發明的實施例之範例有序管線、及範例暫存器更名、無序發佈/執行管線二者的方塊圖;圖10B係根據本發明的實施例之繪示包括在處理器中的範圍實施例之有序架構核心及範例暫存器更名、無序發佈/執行架構核心二者的方塊圖;圖11係根據本發明的實施例之具有整合式記憶體控制器及圖形處理器的單核心處理器及多核心處理器的方塊圖;
圖12繪示根據本發明的一實施例之系統的方塊圖;圖13繪示根據本發明的實施例之第二系統的方塊圖;圖14繪示根據本發明的實施例之第三系統的方塊圖;圖15繪示根據本發明的實施例之系統單晶片(SoC)的方塊圖;圖16繪示根據本發明的實施例之對照將來源指令集中的二進位指令變換為目標指令集中之二進位指令的軟體指令變換器之使用的方塊圖。
本文描述實施用以減少核心對核心通訊負擔的硬體佇列管理裝置。在以下描述中,陳述許多具體細節以提供對本發明的實施例的徹底瞭解。然而,熟悉相關技術之人士將體認到可實現本發明而無需一或多個此等具體細節、或以其他方法、組件、材料等。在其他實例中,已為人熟知的結構、材料、或操作並不詳細顯示或描述,以避免模糊本發明之態樣。
本說明書通篇對「一個實施例」或「一實施例」之指涉意指與該實施例有關的一特定特徵、結構或特性係含括於至少一個實施例中。因而,「於一實施例中」或「於一個實施例中」片語出現於說明書中各處未必全部
係指同一個實施例。此外,特定特徵、結構或特性可在一或多個實施例中以任何合適之方式組合。為清楚起見,本文圖式中個別組件可參照他們在圖式中的標號,而不是特定的參考編號。
圖1係顯示包含根據一實施例使用佇列管理裝置(QMD)的範例硬體系統的示意圖。QMD 100附接至高速或晶片網路(「NoC」)互連。環形102於圖式中顯示為此互連,但亦可使用諸如網(mesh)狀的其他網路形成。高速互連將CPU核心106-112及L3快取記憶體104與QMD 100連接。雖未繪示於圖中,但有額外的CPU核心、L3快取記憶體、及/或連接到該高速互連的其他裝置。CPU核心106-112、L3快取記憶體104及QMD 100之間的連接可為一特別專用的互連或是現存的共享互連。CPU核心送出的進入佇列(enqueue)及退出佇列(dequeue)請求將被路由到QMD。在一個需要確認(acknowledgement)的實施例中,QMD會在每一成功的進入佇列或退出佇列操作之後將回饋送回到請求核心以便確認該請求的完成。在另一個不需要確認的實施例中,只要提供或保留有充分的請求資源,請求核心與QMD之間的路徑允許請求被提交而不需將確認返回到該請求核心。同樣顯示於圖1的是QMD 100的各種組件。QMD 100包含一或多個緩衝器(共同標為114)、排程器116、進入佇列引擎118、退出佇列引擎120、額度集區控制器122及內部儲存單元124。
從請求的CPU核心發送的進入佇列和退出佇列首先被QMD 100接收並儲存進其中一個緩衝器114。緩衝器114暫時儲存進來的請求,因為在他們被接收的那一刻,QMD 100可能沒有足夠的資源或頻寬來服務所有進來的請求。緩衝器是先進先出(FIFO)佇列,其中,先進入緩衝器的請求會是先出緩衝器的請求。在一實施例中,緩衝器的子集被配置只儲存進入佇列請求而另一子集只保留給退出佇列請求。亦可使用其他用以配置緩衝器的方法,諸如以核心、以執行緒、以請求類型等等方法。可對所有的緩衝器指派單一優先序等級以簡化實施並使通量最大化。或者,可實施多優先序等級以支援細粒度(fine-grained)服務品質(QoS)特性。舉例來說,給定n優先序,每一進入佇列和退出佇列緩衝器對可被分配一不同的優先序,使得n個緩衝器針對進入佇列請求被配置而n個緩衝器針對退出佇列請求被配置。每一進來的請求具有不是由請求核心/執行緒預先指派就是於被QMD接收之際由該QMD指派的優先序。每一請求接著被儲存於對應於該請求的優先序(1-n)及/或類型(進入佇列或退出佇列)的緩衝器中。
排程器116選取一緩衝器並從該緩衝器的頭選擇一或多個請求。該緩衝器根據排程政策而被選取。可實施各種排程政策,諸如循環(Round Robin)、加權循環(Weighted Round Robin)、搶先優先序(preemptive priority)政策、以及此等及其他政策的組合。在循環政
策中,舉例來說,該等緩衝器僅僅是相繼被選取,亦即,最低到最高緩衝器ID,反之亦然。倘若一被選取的緩衝器是空的,則排程器116從一不同的緩衝器選擇。在加權循環政策中,排程器116根據緩衝器他們關聯的優先序相繼選取並服務每一緩衝器。控制要服務緩衝器的順序的能力稱為請求等級流量控制。在選取一緩衝器並從該被選取的緩衝器的頭選擇一或多個請求之後,排程器116根據該請求類型,針對被進入佇列引擎118或退出佇列引擎120二者任一的執行,排程每一被選擇的請求。
進入佇列引擎電路118和退出佇列引擎電路120經由專用的埠讀取並寫入QMD的內部儲存單元124。由進入佇列引擎118執行的進入佇列請求致使一個資料項目***到內部儲存單元124中。由退出佇列引擎120執行的退出佇列請求致使一個資料項目從內部儲存單元124被擷取及送到輸出佇列。倘若一請求無法被進入佇列或退出佇列引擎所執行,則其可***回到該緩衝器的尾以便稍後處理。此減少請求核心或裝置鎖死(deadlocking)的機會。
內部儲存單元124被用來儲存佇列和佇列登錄。其可由靜態隨機存取記憶體(「SRAM」)、動態隨機存取記憶體(「DRAM」)、或任何適合的記憶體技術所組成。內部儲存單元124係可組態用以支援任何數目的佇列以及不同的佇列大小。圖2繪示一些方法的實施例,內部儲存單元可經組態用以支援不同的佇列及資料大小。
在一實施例中,內部儲存單元200為10KB SRAM區塊,其全部被配置到單一佇列202,其包含640個各為16B的佇列登錄。當然,可使用其他有別於10KB的大小。在另一實施例中,10KB SRAM區塊在兩個佇列212和214之中平均地分開,使得每一佇列包含320個各為16B的登錄。或者,10KB SRAM區塊可經組態用以支援兩個不同的大小的佇列,其中一個包含150個各為64B的登錄以及另一個包含40個各為16B的登錄。要注意的是,此等範例於此呈現僅用於闡明之目的且不在於限制。任何佇列數量及登錄大小的組合於此可被替代以滿足資料儲存需求。
圖3提供闡明用以支援不同長度及大小的佇列登錄的有彈性的佇列登錄格式。雖然顯示大小16B到64B的佇列登錄,但同樣可以使用其他佇列登錄大小。每一佇列登錄由兩部分所組成,即元資料和「不透明資料(opaque data)」。元資料包含有關該佇列登錄本身,諸如佇列ID、優先序、格式、及長度,的資訊。包含於每一佇列登錄的元資料中的資訊被該QMD用來對該登錄執行和進入佇列和退出佇列有關的操作。不透明資料部分包含將與消費者核心、執行緒、裝置等等透過退出佇列請求分享的實際資料、或是到實際資料的指標。不透明資料部分一般被QMD忽略且不被碰觸。
圖4詳細繪示根據一實施例之範例佇列登錄的元資料。佇列登錄的元資料部分包含描述佇列登錄如何應由QMD處置的參數。此等參數提供記錄需求、不可分
割性(atomicity)、負載平衡(load-balancing)、片斷(fragmenttion)、定序(sequencing)等等的資訊。記錄資訊被用來指出當登錄被發送到輸出佇列時是否需要基於該序號的記錄。不可分割性資訊描述是否每次提交一登錄到一單核心。負載平衡資訊指出整個多輸出佇列的負載平衡是否可被採用。片斷欄位被用於當決定是否要分解用於流量成形(traffic shaping)之資料。要注意的是,每一實施例中每一參數的實際定義及功能可能與此處所述及者有所不同。亦可在大小及配置方面與圖式所示者不同的參數欄位也一樣。新的參數或欄位可加到元資料,用以實施QMD可對該等佇列登錄進行的額外的功能。
在一些實施例中,額度管理系統操作額度集區控制器122以管理及追蹤數個額度集區。經由控制每一額度集區中的額度,額度管理系統可以調整進來的請求被請求核心及執行緒發送的速率及頻率。其防止進來的請求溢位(overflow),其可能造成核心停頓或請求丟棄。此依次改善請求核及執行緒兩者、以及QMD的效率。
當核心或執行緒希望發送進入佇列或退出佇列請求到QMD 100時,其首先自額度集區控制器122取得適當的額度。被QMD接收而無適當額度的請求會被QMD拒絕接受及/或丟棄。在一實施例中,額度集區控制器122維持全域進入佇列額度集區及全域退出佇列額度集區。此等全域額度集區的大小分別對應於用以處置進來的進入佇列及退出佇列請求之QMD的總容量。額度集區控
制器122亦維持一對的區域進入佇列及退出佇列額度集區給每一核心或執行緒。每一對的區域進入佇列及退出佇列額度集區的大小對應於配置給該特定核心或執行緒QMD的容量的量。區域額度集區可被每一核心或執行緒所維持、或者被額度集區控制器122中央追蹤。藉著控制每一區域額度集區的大小及他們被補給的速率,額度集區控制器122對由每一核心或執行緒所發送之進入佇列/退出佇列請求的數目具有細的粒度控制。舉例來說,額度集區控制器122可實施諸如循環或加權循環的額度補給政策,以決定何時以及補給多少給每一區域額度集區。額度集區控制器122亦可保留額度以便匱乏所有的區域額度集區且因而減慢核心/執行緒發送請求的速率,以幫助QMD趕上擱置的操作。圖5係繪示額度控制系統504的概念的高階圖。額度控制系統504將來自全域額度集區502的額度分配給一或多個區域額度集區506。每一核心/執行緒可具有自己的區域額度集區或可與其他核心/執行緒分享區域額度集區。額度控制系統504根據額度補給政策使用可取得的額度補給每一區域額度集區。
圖6係繪示根據一實施例之範例額度分配及補給程序的流程圖。一開始,所有可取得的進入佇列和退出佇列額度被輸入全域額度集區。在步驟602,額度集區控制器122決定在全域額度集區中可取得的總進入佇列和退出佇列額度,接著,在604,根據額度分配政策將來自區域額度集區的進入佇列/退出佇列額度分配到每一區域
進入佇列/退出佇列額度集區。額度分配政策決定分配及補給每一區域額度集區的率及頻率。額度分配政策可以是循環、加權循環等等。
從這裡,倘若核心或執行緒希望發送進入佇列請求到QMD,首先必須要請求來自額度集區控制器的進入佇列額度,如步驟606。在步驟608,額度集區控制器決定在區域進入佇列額度集區中是否有可用之對應於該請求的核心/執行緒的進入佇列額度。倘若沒有可取得的進入佇列額度,則該請求的核心或執行緒必須等待直到其區域進入佇列額度集區被補給。其可藉由重新發送一進入佇列額度請求而如此作。另一方面,倘若區域進入佇列額度集區中有可取得的進入佇列額度,則在步驟610,進入佇列從額度集區控制器發送到請求核心/執行緒。在區域進入佇列額度集區中的額度計數接著減少一。核心或執行緒每次可請求它希望發送請求的單一額度。或者,核心或執行緒可立即請求數個額度並將他們存起來供稍後使用。
在接收來自額度控制器的必要的進入佇列額度之後,在步驟612,核心/執行緒將該進入佇列請求與該進入佇列額度一起提交到QMD。在步驟614,QMD檢查看看是否進來的進入佇列請求伴隨著適當的進入佇列額度。倘若發送該進入佇列請求而無必要的進入佇列額度,則該請求被QMD丟棄。在一實施例中,除了丟棄該請求以外,QMD亦會返回一訊息到該請求核心/執行緒以便通知它的進入佇列請求沒有被處理。另一方面,倘若在步驟
614QMD決定進來的進入佇列請求與適當的進入佇列額度被提交,則在步驟616進入佇列引擎會處理該請求。接下來,會從進入佇列引擎發送一通知到額度集區控制器以便補給全域退出佇列額度集區一個額度。
在退出佇列請求的情形中,類似的程序適用。啟始於步驟622,請求核心/執行緒首先從額度集區控制器請求退出佇列額度。在步驟624,額度集區控制器決定在適當的區域退出佇列額度集區中是否有可取得的對應於請求核心/執行緒的退出佇列額度。倘若沒有可取得的退出佇列額度,則請求核心/執行緒在發另一額度請求到額度集區控制器之前會等待一特定時間。另一方面,倘若在區域額度集區中有可取得的退出佇列額度,則該退出佇列額度請求被實踐。在步驟626,額度集區控制器將該請求的退出佇列額度發送到請求核心/執行緒且因而接著減少區域退出佇列額度集區中的額度計數。在步驟628,核心/執行緒將退出佇列請求和退出佇列額度一起發送到QMD。在步驟630,QMD檢查進來的退出佇列請求是否和必要的退出佇列額度一起提交。倘若沒有找到必要的退出佇列額度,則進來的退出佇列請求被丟棄。惟倘若找到適當的退出佇列額度,則在步驟632由QMD的退出佇列引擎處理該請求。在處理之後,退出佇列引擎通知該額度集區控制器補給該全域進入佇列額度集區一個額度。要注意的是,當退出佇列操作完成時進入佇列額度集區被補給,且在發生進入佇列操作之後退出佇列額度集區被補
給。藉透過額度補給政策控制額度補給速度,額度管理系統能夠根據他們的優先序等級調變及影響每一執行緒/核心的速度。
在一實施例中,額度管理系統被去能。當該系統被去能時,對於可被每一請求核心或執行緒可發送的進入佇列和退出佇列請求的數目沒有限制。因此,每一請求核心/執行緒可發送儘可能多的請求,直到QMD到達其最大容量且開始丟棄後續的請求。此造成背壓(backpressure)且可使核心/執行緒停頓,因為他們等待接收來自QMD的請求的資料。在時間方面,當QMD趕上處理及反應請求時,核心/執行緒會反停頓(un-stall)自己。因此,對軟體應用而言不需要追蹤QMD的可用資源。當額度管理系統失能時,QMD能獲得最多通量但卻失去控制每一核心/執行緒或維持穩定通量的能力。
為使請求核心/執行緒與QMD之間的通訊更有效率,在一些實施例中,使用了三個指今的其中一個指令。此等指令可幫助加速退出佇列、進入佇列、及資料移動操作。此等指令為:
enquene[reg][addr]:在此指令中,reg是64位元的運算元/暫存器,其含有要進入佇列的資料。該addr是用來識別一特定佇列或緩衝器的QMD的內部位址。
dequeue[reg][addr]:在此指令中,reg是用以保持自QMD返回的返回值的目的地暫存器。該addr是用來識別一特定佇列或緩衝器的QMD的內部位址。
enqueue_opt[reg][addr]:此指令表現如上述新的進入佇列指令,但具有將暫存器中的資料副本推向LLC的額外步驟(即透過CLDEMOTE指令將資料從L1/L2快取記憶體移動到最末階快記憶體)。
該enqueue、dequeue、及enqueue_opt指令由CPU核心執行以與QMD通訊。此等指令經過一儲存佇列但將被非臆測地(non-speculatively)執行。在儲存佇列中時,其他儲存指令可被記錄用以在較早的進入佇列或退出佇列指令之前執行。因而,後面的儲存不需要等待一較早的進入佇列或退出佇列指令完成而可「插隊」。當此等指令到達頭儲存佇列時被送出且當一回應自QMD返回時自該儲存佇列引退。相較於一般儲存指令,退出佇列指令的執行包括用以將資料寫回目的地暫存器的寫回級。
再者,在執行enqueue_opt指令時,除了實施進入佇列操作以外,該執行亦會產生記憶體請求,即「預推(prepush)」,其行為像是反的預取(prefetch)請求。沒有從較低階快取記憶體到較高階快取記憶體提取一快取記憶體區塊,該額外的記憶體請求會將一快取記憶體區塊推到全域共享的快取記憶體以及使在其私用快取記憶體中的該副本無效。因此,當另一核心情求要讀取或寫入此快取記憶體區塊時,該請求核心能從全域共享的快取記憶體讀取而不是觸發資料向前或失效請求。此省下大量循環及NoC頻寬。被推的快取記憶體區塊會使用與寫回區塊相同的路徑。要注意的是,該區塊的位址由reg運算元
所指定。因此,reg的內容必須是有效的指標且在執行級由MMU翻譯。預推在一些實施例中亦為獨立指令,允許其如同軟體預取指令般被個別呼叫。
根據一實施例之軟體執行緒與QMD之間的互動的簡化圖係顯示於圖7A。箭頭指示共享資料的流動。在圖7A中,生產者軟體執行緒702提交含有資料項目的進入佇列請求到QMD。該請求路由經一共享或專用互連704。OMD的輸入佇列或緩衝器706的其中一者接收並暫時儲存進來的請求。該請求接著由仲裁/排程邏輯708處理,而伴隨的資料項目儲存在內部儲存器710。隨後來自消費者軟體執行緒716的退出佇列請求由仲裁/排程邏輯708處理,造成該資料項目從內部儲存器710被擷取並置入QMD的輸出佇列712的其中一者。該資料項目接著路由經過共享/專用互連714到消費者軟體716。共享/專用互連704及714可以是相同的互連或可以是不同的互連。
繪示生產者/消費者硬體裝置與QMD之間的互動的類似的圖係顯示於圖7B。生產者裝置722經由共享或專用互連724提交含有資料項目的進入佇列請求到該QMD。該請求被接收及儲存於QMD的輸入佇列726。仲裁/排程邏輯728從輸入佇列選擇該請求、處理它、且接著儲存伴隨資料項目於內部儲存器730。隨後,消費者對QMD的退出佇列請求造成資料項目從內部儲存單元730被擷取並置入QMD的輸出佇列732的其中一者。該請求接著被共享或專用互連734路由到消費者裝置736。共享/
專用互連724和734可以是或可以不是相同的互連。此外要注意的是,雖然繪示於此等圖式中的是使用QMD的軟體對軟體及裝置對裝置資料通訊,但QMD並不侷限於此等應用。舉例來說,QMD可以被用來管理其他類型的通訊,諸如核心對核心、核心對裝置、執行緒對執行緒、執行緒對裝置等。
圖8繪示QMD的先進用途,QMD作為根據一實施例之用以管理網路封包處理管線中各相鄰步驟之間的佇列集中式高效能裝置。網路封包在通過管線中每一級之後,在被擷取並發送到下一級之前暫時被儲存於由QMD所維護的佇列中。舉例來說,在核心對消費者(下游)管線中,QMD作為NIC與接收核心、接收核心與路由核心、路由核心與流量管理核心、流量管理核心與傳送核心、以及最後,傳送核心與接收NIC之間的中介步驟。藉由將封包的管理從傳統軟體佇列移到像是QMD的硬體加速器,管理該等網路封包的流量所需的軟體負擔係大幅減少。而且,隨著管線處理級的數目增加,卸載佇列管理任務對於QMD的益處更加擴大。
圖9提供根據一實施例的一範例,透過施加單根I/O虛擬化(「SR-IOV」)式技術對客作業系統虛擬化該QMD。雖然此處描述的是SR-IOV,但亦可使用其他的虛擬化方法及技術。設置虛擬機器監視器(「VMM」)或超管理器(hypervisor)910介面以便除了實體QMD 902以外還操作多個虛擬QMD。VMM/超管
理器910管理並分割QMD的實體功能(即資源)908成n組虛擬功能(912和914),且將一組虛擬功能配置到每一客作業系統(924和926)。對於客OS而言,每一組虛擬功能如同自己的QMD般操作。運行於希望發送資料到消費者軟體930的客作業系統924的生產者軟體928會首先發送一含有該資料的進入佇列請求到虛擬QMD的輸入佇列916。QMD虛擬功能接著經由該超管理器,使用該QMD的實體功能908處理該進入佇列請求。該進入佇列請求接著被仲裁/排程邏輯906排程及處理,仲裁/排程邏輯906使資料儲存於內部儲存器904中。接下來,從運行於客作業系統924的消費者軟體930發送的退出佇列請求被送到虛擬QMD的輸入佇列916的其中一者。該退出佇列請求接著由QMD虛擬功能912使用QMD實體功能908處理。仲裁/排程邏輯906執行該退出佇列請求並使該資料從內部儲存器904擷取並送到輸出佇列918。該資料接著路由到客作業系統924上的消費者軟體930。
圖10A係根據本發明的實施例繪示範例有序管線及範例暫存器更名、無序發佈/執行管線二者的方塊圖。圖10B係根據本發明的實施例繪示包括在處理器中的有序架構核心之範例實施例及範例暫存器更名、無序發佈/執行架構核心二者的方塊圖。圖10A-B中的實線方塊繪示有序管線及有序核心,而選擇性加入的點虛線方塊繪示暫存器更名、無序發佈/執行管線及核心。因為有序樣態係無序樣態的子集,將描述無序樣態。
在圖10A中,處理器管線1000包括提取級1002、長度解碼級1004、解碼級1006、配置級1008、更名級1010、排程(亦稱為調度或發佈)級1012、暫存器讀取/記憶體讀取級1014、執行級1016、寫回/記憶體寫入級1018、異常管理級1022、及提交級1024。
圖10B顯示包括耦接至執行引擎硬體1050之前端硬體1030的處理器核心1090,且二者皆耦接至記憶體硬體1070。核心1090可係精簡指令集計算(RISC)核心、複雜指令集計算(CISC)核心、極長指令字(VLIW)核心、或混合或其他核心類型。作為另一選項,核心1090可係特殊用途核心,諸如,網路或通訊核心、壓縮引擎、共處理器核心、通用計算圖形處理單元(GPGPU)核心、或圖形核心等。
前端硬體1030包括耦接至指令快取硬體1034的分支預測硬體1032,其耦接至指令轉譯後備緩衝器(TLB)1036,其耦接至指令提取硬體1038,其耦接至解碼硬體1040。解碼硬體1040(或解碼器)可解碼指令,並產生作為輸出之解碼自、或另外反映、或導自原始指令之一或多個微運算、微碼進入點、微指令、其他指令、或其他控制信號。解碼硬體1040可使用各種不同的機制實作。合適機制的範例包括,但未受限於,查找表、硬體實作、可程式化邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等。在一實施例中,核心1090包括微碼ROM或儲存用於特定巨集指令之微碼的其他媒體(例如,在解
碼硬體1040中或另外在前端硬體1030內)。將解碼硬體1040耦接至執行引擎硬體1050中的更名/配置器硬體1052。
執行引擎硬體1050包括耦接至引退硬體1054及一組一或多個排程器硬體1056的更名/配置器硬體1052。排程器硬體1056代表任何數量的不同排程器,包括保留站、中央指令窗等。將排程器硬體(等)1056耦接至實體暫存器檔案(等)硬體1058。實體暫存器檔案(等)硬體1058各者代表一或多個實體暫存器檔案,該等的不同者儲存一或多種不同的資料型別,諸如,純量整數、純量浮點、封裝整數、封裝浮點、向量整數、向量浮點、狀態(例如,係待執行的次一指令之位址的指令指標器)等。在一實施例中,實體暫存器檔案(等)硬體1058包含向量暫存器硬體、寫入遮罩暫存器硬體、及純量暫存器硬體。此等暫存器硬體可提供架構向量暫存器、向量遮罩暫存器、及通用暫存器。實體暫存器檔案(等)硬體1058與引退硬體1054重疊,以說明可能實作暫存器更名及無序執行的各種方式(例如,使用重排序緩衝器(等)及引退暫存器檔案(等);使用未來檔案(等)、歷史緩衝器(等)、及引退暫存器檔案(等);使用暫存器映射及暫存器池;等)。將引退硬體1054及實體暫存器檔案(等)硬體1058耦接至執行叢集(等)1060。執行叢集(等)1060包括一組一或多個執行硬體1062及一組一或多個記憶體存取硬體1064。執行硬體1062可在各
種資料型別(例如,純量浮點、封裝整數、封裝浮點、向量整數、向量浮點)上進行各種運算(例如,移位、加法、減法、乘法)。雖然部分實施例可包括專用於特定功能或功能集的許多執行硬體,但其他實施例可僅包括一執行硬體或全部進行所有功能的多個執行硬體。將排程器硬體1056、實體暫存器檔案(等)硬體1058、及執行叢集(等)1060顯示為可能係複數個,因為特定實施例針對特定種類的資料/運算建立個別管線(例如,各者具有自有之排程器硬體、實體暫存器檔案(等)硬體、及/或執行叢集的純量整數管線、純量浮點/封裝整數/封裝浮點/向量整數/向量浮點管線、及/或記憶體存取管線-且在分離式記憶體存取管線的情形中,實作在其中僅有此管線的執行叢集具有記憶體存取硬體1064的特定實施例)。也應理解當使用分離式管線時,此等管線的一或多者係無序發佈/執行的而其餘係有序的。
將該組記憶體存取硬體1064耦接至記憶體硬體1070,其包括耦接至資料快取硬體1074的資料TLB硬體1072,該資料快取硬體1074耦接至2階(L2)快取硬體1076。在一範例實施例中,記憶體存取硬體1064可包括載入硬體、儲存位址硬體、及儲存資料硬體,該等各者耦接至記憶體硬體1070中的資料TLB硬體1072。將指令快取硬體1034另外耦接至記憶體硬體1070中的2階(L2)快取硬體1076。L2快取硬體1076耦接至一或多個其他階快取記憶體且最終耦接至主記憶體。
藉由範例,範例暫存器更名、無序發佈/執行核心架構可將管線1000實作如下:1)指令提取1038進行提取及長度解碼級1002及1004;2)解碼硬體1040進行解碼級1006;3)更名/配置器硬體1052進行配置級1008及更名級1010;4)排程硬體1056進行排程級1012;5)實體暫存器檔案(等)硬體1058及記憶體硬體1070進行暫存器讀取/記憶體讀取級1014;執行叢集1060執行執行級1016;6)記憶體硬體1070及實體暫存器檔案(等)硬體1058進行寫回/記憶體寫入級1018;7)各種硬體可能包含在異常管理級1022中;且8)引退硬體1054及實體暫存器檔案(等)硬體1058進行提交級1024。
核心1090可支援包括本文描述之指令(等)的一或多個指令集(例如,x86指令集(具有已加有較新版本的特定延伸);加州桑尼維爾的MIPS Technologies的MIPS指令集;加州桑尼維爾的ARM Holdings的ARM指令集(具有選擇性的額外延伸,諸如NEON))。在一實施例中,核心1090包括用以支援封裝資料延伸指令集(例如,AVX1、AVX2及/或某些形式之一般向量友善指令格式(U=0及/或U=1),如下所述)的邏輯,從而容許由許多多媒體應用程式使用的運算使用封裝資料進行。
應瞭解該核心可支援多執行緒(執行二或多個平行運算或執行緒集),並可用包括時間切片多執行緒、同步多執行緒(其中單一實體核心為實體核心同步多緒的每個執行緒提供邏輯核心)、或彼等之組合(例如,
下文的時間切片提取及解碼及同步多執行緒,諸如,在Intel®超執行緒技術(Hyperthreading technology)中)的各種方式進行。
雖然暫存器更名係在無序執行的背景中描述,應理解暫存器更名可使用在有序架構中。雖然處理器的說明實施例也包括分離式指令及資料快取硬體1034/1074及共享L2快取硬體1076,其他實施例可具有用於指令及資料二者的單一內部快取記憶體,諸如,1階(L1)內部快取記憶體、或多階內部快取記憶體。在部分實施例中,該系統可包括內部快取記憶體及在核心及/或處理器外部之外部快取記憶體的組合。或者,所有快取記憶體可均在核心及/或處理器外部。
圖11係根據本發明的實施例之可具有多於一核心、可具有整合式記憶體控制器、並可具有整合式圖形處理器之處理器1100的方塊圖。圖11中的實線方塊繪示具有單核心1102A、系統助理1110、一組一或多個匯流排控制器硬體1116的處理器1100,而點虛線方塊繪示選擇性加入之具有多核心1102A-N、在系統助理硬體1110中的一組一或多個整合記憶體控制器硬體1114、及特殊用途邏輯1108的其他處理器1100。
因此,處理器1100的不同實作可包括:1)具有係整合式圖形及/或科學(通量)邏輯之特殊用途邏輯1108的CPU(其可包括一或多個核心),且核心1102A-N係一或多個通用核心(例如,通用有序核心、通用無序
核心、該等二者的組合);2)具有係主要意圖用於圖形及/或科學(通量)之大量特殊用途核心之核心1102A-N的共處理器;及3)具有係大量通用有序核心之核心1102A-N的共處理器。因此,處理器1100可係通用處理器、共處理器、或特殊用途處理器,諸如,網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、高通量多整合式核心(MIC)共處理器(包括30個或更多核心)、或嵌入式處理器等。該處理器可實作在一或多個晶片上。處理器1100可係使用任何數量的處理技術,例如,BiCMOS、CMOS、或NMOS,之一或多個基材的一部分及/或實作在該等基材上。
記憶體階層包括在核心內的一或多階快取記憶體、一組或一或多個共享快取記憶體硬體1106、及耦接至該組整合式記憶體控制器硬體1114的外部記憶體(未示)。該組共享快取記憶體硬體1106可包括一或多個中階快取記憶體,諸如,2階(L2)、3階(L3)、4階(L4)、或其他階快取記憶體、末階快取記憶體(LLC)、及/或該等的組合。雖然在一實施例中,環形為基的互連硬體1112互連整合式圖形邏輯1108、該組共享快取記憶體硬體1106、及系統助理硬體1110/整合式記憶體控制器硬體1114,其他實施例可使用用於互連此種硬體之任何數量的已為人熟知的技術。在一實施例中,在一或多個快取記憶體硬體1106及核心1102A-N之間維持一致性。
在一些實施例中,一或多個核心1102A-N有多執行緒的能力。系統助理1110包括協調及運算核心1102A-N的此等組件。系統助理硬體1110可包括,例如,電源控制單元(PCU)及顯示硬體。PCU可係或包括調節核心1102A-N及整合式圖型邏輯1108之電源狀態所需要的邏輯及組件。顯示硬體用於驅動一或多個外部連接的顯示器。
核心1102A-N可依據架構指令集係同質或異質的;亦即,二或多個核心1102A-N可有執行相同指令集的能力,而其他核心可有僅能執行該指令集的子集或不同指令集的能力。在一實施例中,核心1102A-N係異質且包括下述的「小」核心及「大」核心。
圖12-15係範例電腦架構的方塊圖。在本技術中為人所知之用於膝上型、桌上型、手持PC、個人數位助理、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位訊號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、行動電話、可攜式媒體播放器、手持裝置、及各種其他電子裝置的其他系統設計及組態也係合適的。通常,能合併如本文揭示之處理器及/或其他執行邏輯之種類繁多的系統或電子裝置通常係合適的。
現在參考至圖12,顯示係根據本發明的一實施例之系統1200的方塊圖。系統1200可包括一或多個處理器1210、1215,該等耦接至控制器集線器1220。在一
實施例中,控制器集線器1220包括圖形記憶體控制器集線器(GMCH)1290及輸入/輸出集線器(IOH)1250(其等可在不同晶片上);GMCH 1290包括將記憶體1240及共處理器1245耦接至其的記憶體及圖形控制器;IOH 1250將輸入/輸出(I/O)裝置1260耦接至GMCH 1290。或者,將記憶體及圖形控制器之一或二者整合在處理器內(如本文所描述者)、將記憶體1240及共處理器1245直接耦接至處理器1210、且控制器集線器1220在具有IOH 1250的單一晶片中。
在圖12中以虛線標示額外處理器1215的選擇性性質。各處理器1210、1215可包括本文描述的一或多個處理核心並可係某個版本的處理器1100。
記憶體1240可係,例如,動態隨機存取記憶體(DRAM)、相變記憶體(PCM)、或二者的組合。針對至少一實施例,控制器集線器1220經由多分支匯流排,諸如,前側匯流排(FSB),點對點介面,或相似連接1295與處理器(等)1210、1215通訊。
在一實施例中,共處理器1245係特殊用途處理器,例如,像是高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、或嵌入式處理器等。在一實施例中,控制器集線器1220可包括整合式圖形加速器。
就包括架構、微架構、熱、及電力消耗特徵等之優點的度量頻譜而言,在實體資源1210、1215之間
能有多種差異。
在一實施例中,處理器1210執行控制一般種類的資料處理運算的指令。共處理器指令可嵌入於該等指令內。處理器1210將此等共處理器指令識別為應由附接之共處理器1245執行的種類。因此,處理器1210在共處理器匯流排或至共處理器1245的其他互連上發佈此等共處理器指令(或代表共處理器指令的控制訊號)。共處理器(等)1245接受並執行已接收的共處理器指令。
現在參考至圖13,顯示根據本發明的實施例之第一更具體模範系統1300的方塊圖。如圖13所示,多處理器系統1300係點對點互連系統,並包括經由點對點互連1350耦接的第一處理器1370及第二處理器1380。各處理器1370及1380可係某種版本的處理器1100。在本發明的一實施例中,處理器1370及1380分別係處理器1210及1215,而共處理器1338係共處理器1245。在另一實施例中,處理器1370及1380分別係處理器1210及共處理器1245。
將處理器1370及1380顯示成分別包括整合式記憶體控制器(IMC)硬體1372及1382。處理器1370也包括作為其匯流排控制器硬體之一部分的點對點(P-P)介面1376及1378;類似地,第二處理器1380包括P-P介面1386及1388。處理器1370、1380可經由使用P-P介面電路1378、1388的點對點(P-P)介面1350交換資訊。如圖13所示,IMC 1372及1382將處理器耦接至個
別記憶體,亦即,記憶體1332及1334,該等可係區域地附接至個別處理器之主記憶體的部分。
處理器1370、1380可各經由使用點對點介面電路1376、1394、1386、1398的個別P-P介面1352、1354與晶片組1390交換資訊。晶片組1390可選擇性地經由高效能介面1339與共處理器1338交換資訊。在一實施例中,共處理器1338係特殊用途處理器,例如,高通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、或嵌入式處理器等。
可將共享快取記憶體(未示)包括在處理器中或二處理器外側,仍經由P-P互連與處理器連接,使得若處理器置於低電源模式中,可將任一個或二個處理器的區域快取資訊儲存在共享快取記憶體中。
可經由介面1396將晶片組1390耦接至第一匯流排1316。雖然本發明的範圍未侷限於此,但在一實施例中,第一匯流排1316可係週邊組件互連(PCI)匯流排、或係諸如PCI快速匯流排或其他第三代I/O互連匯流排的匯流排。
如圖13所示,各種I/O裝置1314可連同將第一匯流排1316耦接至第二匯流排1320的匯流排橋接器1318耦接至第一匯流排1316。在一實施例中,將一或多個額外處理器(等)1315,諸如,共處理器、高通量MIC處理器、GPGPU、加速器(諸如,圖形加速器或數位訊號處理器(DSP)硬體)、場效可規劃閘極陣列、或任何其
他處理器,耦合至第一匯流排1316。在一實施例中,第二匯流排1320可係低插腳數(LPC)匯流排。在一實施例中,可將各種裝置耦接至第二匯流排1320,包括,例如,鍵盤及/或滑鼠1322、通訊裝置1327、以及儲存硬體1328,諸如,硬碟驅動器,或可包括指令/碼及資料1330的其他大量儲存裝置。另外,可能將音訊I/O 1324耦接至第二匯流排1320。須注意其他架構也係可能的。例如,取代圖13的點對點架構,系統可實作多分支匯流排或其他此種架構。
現在參考至圖14,顯示根據本發明的實施例之第二更具體例示性系統1400的方塊圖。圖13及14中的相似元件有相似參考數字,且圖13的特定態樣已從圖14省略,以避免混淆圖14的其他態樣。
圖14繪示處理器1370、1380可分別包括整合式記憶體及I/O控制邏輯(「CL」)1372及1382。因此,CL 1372、1382包括整合式記憶體控制器硬體並包括I/O控制邏輯。圖14繪示不僅將記憶體1332、1334耦接至CL 1372、1382,也將I/O裝置1414耦接至控制邏輯1372、1382。將傳統I/O裝置1415耦接至晶片組1390。
現在參考至圖15,顯示係根據本發明的實施例之SoC 1500的方塊圖。圖15中的相似元件有相似的參考數字。又,虛線方塊係在更先進SoC上的選擇性特性。在圖15中,將互連硬體1502耦接至:應用處理器1510,其包括一組一或多個核心1102A-N及共享快取記
憶體硬體1106;系統助理硬體1110;匯流排控制器硬體1116;整合式記憶體控制器硬體1114;一組一或多個共處理器1520,該等可包括整合式圖形邏輯、影像處理器、音訊處理器、及視訊處理器;靜態隨機存取記憶體(SRAM)硬體1530;直接記憶體存取(DMA)硬體1532;用於耦接至一或多個外部顯示器的顯示硬體1540。在一實施例中,共處理器1520包括特殊用途處理器,諸如,網路或通訊處理器、壓縮引擎、GPGPU、高通量MIC處理器、或嵌入式處理器等。
本文揭示之機制的實施例可用硬體、軟體、韌體、或此種實作方式的組合實作。本發明的實施例可實作為在可程式化系統上執行的電腦程式或程式碼,該系統包含至少一處理器、儲存系統(包括揮發性及非揮發性記憶體及/或儲存元件)、至少一輸入裝置、及至少一輸出裝置。
可能將程式碼,諸如繪示於圖13中的碼1330,施用至輸入指令,以進行本文描述的功能並產生輸出資訊。可用已知方式將輸出資訊施用至一或多個輸出裝置。針對此申請案的用途,處理系統包括具有處理器,諸如;數位訊號處理器(DSP)、微控制器、特定應用積體電路(ASIC)、或微處理器,的任何系統。
程式碼可用高階程序或物件導向程式語言實作,以與處理系統通訊。若有需要,程式碼也可用組合或機器語言實作。事實上,本文描述的機制並未受限在任何
特定程式語言範圍中。在任何情形中,語言可係編譯或解譯語言。
至少一實施例的一或多個態樣可藉由儲存在機器可讀媒體上之代表處理器內的各種邏輯的代表性指令實作,當其由機器讀取時,導致機器製造邏輯以進行本文描述的技術。可將稱為「IP核心」的此種代表儲存在實體機器可讀媒體中,並供應至各種客戶或製造設施,以載入至實際產生邏輯或處理器的製造機器中。
此種機器可讀儲存媒體可不受限制地包括藉由機器或裝置製造或形成的非暫態實體製品配置,包括儲存媒體,諸如,硬碟、任何其他種類的碟片,包括軟碟、光碟、光碟唯讀記憶體(CD-ROM)、可重寫光碟(CD-RW)、以及磁光碟、半導體裝置,諸如,唯讀記憶體(ROM)、隨機存取記憶體(RAM),諸如,動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可抹除可程式化唯讀記憶體(EPROM)、快閃記憶體、電可抹除可程式化唯讀記憶體(EEPROM)、相變記憶體(PCM)、磁或光學卡、或適合儲存電子指令之任何其他種類的媒體。
因此,本發明的實施例也包括包含指令或包含設計資料,諸如,硬體描述語言(HDL),其界定本文描述之結構、電路、設備、處理器、及/或系統特性的非暫態實體機器可讀媒體。此種實施例也可稱為程式產品。
在某些情況下,指令變換器可用於將指令從
來源指令集變換為目標指令集。例如,指令變換器可將指令轉換(例如,使用靜態二進位轉換、包括動態編譯的動態二進位轉換)、變形、模仿、或另外變換為待由核心處理的一或多個其他指令。指令變換器可用軟體、硬體、韌體、或該等的組合實作。指令變換器可在處理器上、在處理器外、或部分在處理器上且部分在處理器外。
圖16係根據本發明的實施例之使用軟體指令變換器將來源指令集中的二進位指令變換為目標指令集中之二進位指令的對照方塊圖。在說明實施例中,雖然指令變換器可替代地以軟體、韌體、硬體、或該等的各種組合實作,指令變換器係軟體指令變換器。圖16顯示可使用x86編譯器1604編譯以高階語言1602撰寫的程式,以產生可由具有至少一x86指令集核心的處理器1616原生地執行的x86二進位碼1606。具有至少一x86指令集核心的處理器1616代表能藉由相容地執行或另外處理(1)Intel x86指令集核心的實質指令集部分,或(2)目標為在具有至少一x86指令集核心的Intel處理器上運行之應用程式或其他軟體的目的碼版本,進行與具有至少一x86指令集核心之Intel處理器實質相同之功能的任何處理器,以實現與具有至少一x86指令集核心之Intel處理器實質相同的結果。x86編譯器1604代表可運算以使用或不使用額外聯結處理以產生能在具有至少一x86指令集核心的處理器1616上執行之x86二進位碼1606(例如,目的碼)的編譯器。相似地,圖16顯示可使用替代指令集編譯器1608
編譯以高階語言1602撰寫的程式,以產生可為不具有至少一x86指令集核心的處理器1614(例如,具有執行加州桑尼維爾的MIPS Technologies的MIPS指令集及/或加州桑尼維爾的ARM Holdings的ARM指令集之核心的處理器)原生地執行的替代指令集二進位碼1610。指令變換器1612用於將x86二進位碼1606變換為可為不具有x86指令集核心的處理器1614原生地執行的碼。此已變換碼不太可能與替代指令集二進位碼1610相同,因為難以產生能作到此的指令變換器;然而,已變換碼將完成一般運算且係由來自替代指令集的指令構成。因此,指令變換器1612代表經由模仿、模擬、或任何其他處理容許不具有x86指令集處理器或核心的處理器或核心執行x86二進位碼1606的軟體、韌體、硬體、或該等的組合。
需注意的是,雖然參考特定實施來說明一些實施例,但是根據一些實施例可有其他實施。此外,圖式中所繪示及/或在此所說明之電路元件或其他特徵的配置及/或順序不一定以所繪示及所說明之特定方式來排列。根據一些實施例可有許多其他配置。
在圖式中所示之各個系統中,一些情況中的元件可各具有相同參考號碼或不同參考號碼,來建議所代表的元件可能不同及/或類似。然而,元件能夠足夠彈性,以與在此所示或說明之一些或所有系統具有不同實施及工作。圖式中所示之各種元件可相同或不同。哪一個被稱作第一元件及哪一個被稱作第二元件是隨意的。
在下面的說明及申請專利範圍中,可使用術語「被耦接」及「被連接」,以及其衍生詞。應該瞭解的是,這些術語彼此不意謂為同義字。更確切而言,在特定實施例中,「被連接」可被使用來表示兩個或更多個元件係直接實體或電氣的接觸。「被耦接」可意謂兩個或更多個元件係直接實體或電氣的接觸。然而,「被耦接」也可意謂兩個或更多個元件不是彼此直接接觸,但是又仍然彼此共同合作或互動。
實施例為實施或範例。此說明書中之提及「實施例」、「一個實施例」、「某些實施例」、或「其他實施例」意謂結合實施例所述之特定的特性、結構、或特徵被包括在至少某些實施例中,但是不必然在本發明的所有實施例中。「實施例」、「一個實施例」、或「某些實施例」的各種出現不必然皆參考相同實施例。
在此所述及繪示的所有組件、特性、結構、特徵等不需要被包括在特定的一個或多個實施例中。若此說明書陳述例如「可(may)」、「可(might)」、「可(can)」、或「可(could)」包括組件、特性、結構、或特徵,則不需包括特定的組件、特性、結構、或特徵。若此說明書或申請專利範圍指稱「一(a)」或「一(an)」元件,則不意謂僅有一個元件。若此說明書或申請專利範圍指稱「額外」元件,則不排除有超過一個額外元件。
所繪示之本發明的實施例的上述描述,包括
摘要的敘述在內,並不是耗盡式的也不是要用來將本發明侷限在所揭露之特定的形式上。雖然本發明的特定實施例及例子為了示範的目的被描述於本文中,但熟習此技藝者將可瞭解的是,在本發明的範圍內可以有各種等效的修改。
在上文詳細的描述下,可以對本發明作出此等修改。使用於以下的申請專利範圍中的用語不應被解讀為將本發明侷限在揭露於說明書及申請專利範圍中的特定實施例。相反地,本發明的範圍完全是由以下的申請專利範圍來界定,其應依據申請專利範圍解譯的原理來解讀。
100‧‧‧佇列管理裝置(QMD)
102‧‧‧環形
104‧‧‧L3快取記憶體
106、108、110、112‧‧‧CPU核心
114‧‧‧緩衝器
116‧‧‧排程器
118‧‧‧進入佇列引擎
120‧‧‧退出佇列引擎
122‧‧‧額度集區控制器
124‧‧‧內部儲存單元
Claims (19)
- 一種設備,包含:一或多個硬體記憶體緩衝器,用以接收及儲存由一或多數請求者所提交的多數進來的請求,其中,該多數進來的請求包含進入佇列及退出佇列請求;排程器硬體電路,用以根據排程政策從儲存於該一或多個硬體記憶體緩衝器中之該多數進來的請求選擇請求;佇列硬體電路,用以處理所選擇的請求,其中,該佇列硬體電路包含進入佇列硬體電路及退出佇列硬體電路,該進入佇列硬體電路用以將資料插到內部儲存單元中,該退出佇列硬體電路用以從該內部儲存單元擷取資料並發送所擷取的資料至該一或多個請求者。
- 如申請專利範圍第1項之設備,其中,該一或多個硬體記憶體緩衝器係先進先出(FIFO)緩衝器。
- 如申請專利範圍第1項之設備,其中,該排程政策係循環(Round Robin)政策。
- 如申請專利範圍第1項之設備,其中,該排程政策係加權循環(Weighted Round Robin)政策。
- 如申請專利範圍第1項之設備,其中,該排程政策係搶先優先序(preemptive priority)政策。
- 如申請專利範圍第1項之設備,其中,該內部儲存單元係可組態用以支援不同長度及大小的資料。
- 如申請專利範圍第1項之設備,進一步包含:資源管理硬體電路,用以根據資源政策針對該一或多 個請求者的每一者對可由該一或多個請求者的每一者所提交之進來的請求設定一或多個限制。
- 如申請專利範圍第7項之設備,其中,該資源政策包括全域資源集區及多數區域資源集區,該全域資源集區用以基於額度補給政策提供將被分散於該多數區域資源集區之中的資源額度。
- 如申請專利範圍第8項之設備,其中,該多數區域資源集區的每一者用以對應於該一或多個請求者的其中一者,且在給定區域資源集區中的該資源額度決定可被該區域資源集區的對應請求者所提交之請求的數目。
- 如申請專利範圍第9項之設備,其中,該等資源額度包括進入佇列額度及退出佇列額度,該等進入佇列額度用以允許該一或多個請求者提交進入佇列請求,該等退出佇列額度用以允許該一或多個請求者提交退出佇列請求。
- 如申請專利範圍第8項之設備,其中,該額度補給政策係循環(Round Robin)政策。
- 如申請專利範圍第8項之設備,其中,該額度補給政策係加權循環(Weighted Round Robin)政策。
- 如申請專利範圍第8項之設備,其中,該額度補給政策係搶先優先序(preemptive priority)政策。
- 如申請專利範圍第1項之設備,其中,將***到該內部儲存單元中的資料的每一區塊係與一元資料標籤結合以指示該資料應該如何由該進入佇列硬體電路及該退出 佇列硬體電路處置。
- 如申請專利範圍第14項之設備,其中,該元資料標籤包括不可分割的參數,其用以指示該擷取的資料是否應該一次只發送到一個請求者。
- 如申請專利範圍第14項之設備,其中,該元資料標籤包括負載平衡參數,其用以指示該擷取的資料是否應該為整個多數輸出佇列的負載平衡。
- 如申請專利範圍第14項之設備,其中,該元資料標籤包括記錄參數,其用以指示在該擷取的資料被發送到該一或多個請求者之前該擷取的資料是否應基於一序號被記錄。
- 如申請專利範圍第14項之設備,其中,該元資料標籤包括片斷參數,其用以指示在該擷取的資料被發送到該一或多個請求者之前該擷取的資料是否能被劃分成用於流量成形的較小區塊。
- 如申請專利範圍第1項之設備,其中,該擷取的資料係與降級指令結合,使得該一或多個請求者的該降級指令的執行致使將從該內部儲存單元移到快取記憶體,該快取記憶體通訊耦合到該一或多個請求者且被該一或多個請求者共享。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/987,676 US10445271B2 (en) | 2016-01-04 | 2016-01-04 | Multi-core communication acceleration using hardware queue device |
US14/987,676 | 2016-01-04 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201734758A true TW201734758A (zh) | 2017-10-01 |
TWI731908B TWI731908B (zh) | 2021-07-01 |
Family
ID=59235536
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105139954A TWI731908B (zh) | 2016-01-04 | 2016-12-02 | 使用硬體佇列裝置的多核心通訊加速的設備 |
TW110123845A TW202141260A (zh) | 2016-01-04 | 2016-12-02 | 使用硬體佇列裝置的多核心通訊加速的設備 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110123845A TW202141260A (zh) | 2016-01-04 | 2016-12-02 | 使用硬體佇列裝置的多核心通訊加速的設備 |
Country Status (5)
Country | Link |
---|---|
US (2) | US10445271B2 (zh) |
CN (1) | CN108292239A (zh) |
DE (1) | DE112016006154T5 (zh) |
TW (2) | TWI731908B (zh) |
WO (1) | WO2017119980A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI743736B (zh) * | 2020-04-08 | 2021-10-21 | 瑞昱半導體股份有限公司 | 資料傳輸系統、電路與方法 |
US11934826B2 (en) | 2020-02-26 | 2024-03-19 | Google Llc | Vector reductions using shared scratchpad memory |
Families Citing this family (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2015044719A1 (en) * | 2013-09-27 | 2015-04-02 | Freescale Semiconductor, Inc. | Apparatus for optimising a configuration of a communications network device |
US20180150256A1 (en) * | 2016-11-29 | 2018-05-31 | Intel Corporation | Technologies for data deduplication in disaggregated architectures |
CN108228337B (zh) * | 2016-12-22 | 2021-08-27 | 财团法人工业技术研究院 | 中央处理单元的配置方法及适用此方法的服务器 |
US11256623B2 (en) * | 2017-02-08 | 2022-02-22 | Arm Limited | Cache content management |
US10686729B2 (en) | 2017-03-29 | 2020-06-16 | Fungible, Inc. | Non-blocking any-to-any data center network with packet spraying over multiple alternate data paths |
CN110892380B (zh) * | 2017-07-10 | 2023-08-11 | 芬基波尔有限责任公司 | 用于流处理的数据处理单元 |
US10659254B2 (en) | 2017-07-10 | 2020-05-19 | Fungible, Inc. | Access node integrated circuit for data centers which includes a networking unit, a plurality of host units, processing clusters, a data network fabric, and a control network fabric |
US11372554B1 (en) * | 2017-07-27 | 2022-06-28 | EMC IP Holding Company, LLC | Cache management system and method |
US11469953B2 (en) | 2017-09-27 | 2022-10-11 | Intel Corporation | Interworking of legacy appliances in virtualized networks |
CN111133417A (zh) * | 2017-10-24 | 2020-05-08 | 英特尔公司 | 硬件辅助的虚拟交换机 |
US10540288B2 (en) | 2018-02-02 | 2020-01-21 | Fungible, Inc. | Efficient work unit processing in a multicore system |
CN110611690B (zh) * | 2018-06-15 | 2022-05-10 | 上海诺基亚贝尔股份有限公司 | 主核心设备重选的方法、远程设备和计算机可读介质 |
US11138009B2 (en) * | 2018-08-10 | 2021-10-05 | Nvidia Corporation | Robust, efficient multiprocessor-coprocessor interface |
US10963299B2 (en) * | 2018-09-18 | 2021-03-30 | Advanced Micro Devices, Inc. | Hardware accelerated dynamic work creation on a graphics processing unit |
CN109445944B (zh) * | 2018-10-25 | 2021-07-23 | 武汉虹旭信息技术有限责任公司 | 一种基于dpdk的网络数据采集处理***及其方法 |
US10802882B2 (en) | 2018-12-13 | 2020-10-13 | International Business Machines Corporation | Accelerating memory access in a network using thread progress based arbitration |
US10810343B2 (en) * | 2019-01-14 | 2020-10-20 | Microsoft Technology Licensing, Llc | Mapping software constructs to synchronous digital circuits that do not deadlock |
US11144286B2 (en) | 2019-01-14 | 2021-10-12 | Microsoft Technology Licensing, Llc | Generating synchronous digital circuits from source code constructs that map to circuit implementations |
US11275568B2 (en) | 2019-01-14 | 2022-03-15 | Microsoft Technology Licensing, Llc | Generating a synchronous digital circuit from a source code construct defining a function call |
US11093682B2 (en) | 2019-01-14 | 2021-08-17 | Microsoft Technology Licensing, Llc | Language and compiler that generate synchronous digital circuits that maintain thread execution order |
US11113176B2 (en) | 2019-01-14 | 2021-09-07 | Microsoft Technology Licensing, Llc | Generating a debugging network for a synchronous digital circuit during compilation of program source code |
US11106437B2 (en) | 2019-01-14 | 2021-08-31 | Microsoft Technology Licensing, Llc | Lookup table optimization for programming languages that target synchronous digital circuits |
US11675715B2 (en) * | 2019-03-27 | 2023-06-13 | Intel Corporation | Low pin-count architecture with prioritized message arbitration and delivery |
CN110058931B (zh) * | 2019-04-19 | 2022-03-22 | 上海兆芯集成电路有限公司 | 用以任务调度的处理***及其加速方法 |
CN110032453B (zh) | 2019-04-19 | 2022-05-03 | 上海兆芯集成电路有限公司 | 用以任务调度与分配的处理***及其加速方法 |
CN110083388B (zh) * | 2019-04-19 | 2021-11-12 | 上海兆芯集成电路有限公司 | 用于调度的处理***及其访存方法 |
CN110046053B (zh) * | 2019-04-19 | 2021-11-12 | 上海兆芯集成电路有限公司 | 用以分配任务的处理***及其访存方法 |
CN110083387B (zh) | 2019-04-19 | 2021-11-12 | 上海兆芯集成电路有限公司 | 使用轮询机制的处理***及其访存方法 |
CN110032452B (zh) | 2019-04-19 | 2021-08-24 | 上海兆芯集成电路有限公司 | 处理***与异构处理器加速方法 |
CN111984550A (zh) * | 2019-05-21 | 2020-11-24 | 国际商业机器公司 | 通过使用机器学习模块管理全局队列与多个本地队列之间的高速缓存段的分配和迁移 |
US11210216B2 (en) * | 2019-06-25 | 2021-12-28 | Intel Corporation | Techniques to facilitate a hardware based table lookup |
US11294715B2 (en) * | 2019-08-28 | 2022-04-05 | Marvell Asia Pte, Ltd. | System and method for queuing work within a virtualized scheduler based on in-unit accounting of in-unit entries |
US11178694B2 (en) * | 2019-09-09 | 2021-11-16 | Sony Group Corporation | RTA queue management in wireless local area network (WLAN) stations |
CN114303138A (zh) * | 2019-09-11 | 2022-04-08 | 英特尔公司 | 用于多核计算环境的硬件队列调度 |
CN111447155B (zh) * | 2020-03-24 | 2023-09-19 | 广州市百果园信息技术有限公司 | 数据传输方法、装置、设备及存储介质 |
US20210389979A1 (en) * | 2020-06-15 | 2021-12-16 | Andes Technology Corporation | Microprocessor with functional unit having an execution queue with priority scheduling |
EP4195060A4 (en) * | 2020-08-28 | 2024-02-21 | Huawei Technologies Co., Ltd. | DATA TRANSMISSION METHOD AND SYSTEM |
US11775307B2 (en) * | 2021-09-24 | 2023-10-03 | Apple Inc. | Systems and methods for synchronizing data processing in a cellular modem |
US11616596B1 (en) * | 2021-09-24 | 2023-03-28 | Apple Inc. | Instruction-based multi-thread multi-mode PDSCH decoder for cellular data device |
US11966739B2 (en) | 2022-09-09 | 2024-04-23 | Arm Limited | Processing of issued instructions |
US20240086201A1 (en) * | 2022-09-09 | 2024-03-14 | Arm Limited | Input channel processing for triggered-instruction processing element |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6295598B1 (en) * | 1998-06-30 | 2001-09-25 | Src Computers, Inc. | Split directory-based cache coherency technique for a multi-processor computer system |
US7290056B1 (en) * | 1999-09-09 | 2007-10-30 | Oracle International Corporation | Monitoring latency of a network to manage termination of distributed transactions |
US7180887B1 (en) * | 2002-01-04 | 2007-02-20 | Radisys Patent Properties | Routing and forwarding table management for network processor architectures |
US7433364B2 (en) | 2003-12-24 | 2008-10-07 | Intel Corporation | Method for optimizing queuing performance |
US7916638B2 (en) | 2003-12-24 | 2011-03-29 | Alcatel Lucent | Time-independent deficit round robin method and system |
US7856537B2 (en) * | 2004-09-30 | 2010-12-21 | Intel Corporation | Hybrid hardware and software implementation of transactional memory access |
US7668857B2 (en) | 2005-11-07 | 2010-02-23 | International Business Machines Corporation | Meta-data tags used to describe data behaviors |
US8761188B1 (en) * | 2007-05-01 | 2014-06-24 | Altera Corporation | Multi-threaded software-programmable framework for high-performance scalable and modular datapath designs |
US8880696B1 (en) * | 2009-01-16 | 2014-11-04 | F5 Networks, Inc. | Methods for sharing bandwidth across a packetized bus and systems thereof |
US8719831B2 (en) * | 2009-06-18 | 2014-05-06 | Microsoft Corporation | Dynamically change allocation of resources to schedulers based on feedback and policies from the schedulers and availability of the resources |
US7970963B2 (en) * | 2009-06-29 | 2011-06-28 | Oracle America, Inc. | Efficient buffer management in a multi-threaded network interface |
US8844051B2 (en) * | 2009-09-09 | 2014-09-23 | Nokia Corporation | Method and apparatus for media relaying and mixing in social networks |
US8897134B2 (en) * | 2010-06-25 | 2014-11-25 | Telefonaktiebolaget L M Ericsson (Publ) | Notifying a controller of a change to a packet forwarding configuration of a network element over a communication channel |
CN102521049B (zh) * | 2011-11-18 | 2013-07-10 | 清华大学 | 多核间内存调度方法 |
US9703647B2 (en) * | 2011-12-30 | 2017-07-11 | Veritas Technologies Llc | Automated policy management in a virtual machine environment |
EP2801907A4 (en) | 2012-02-01 | 2014-12-03 | Huawei Tech Co Ltd | MULTICOVER PROCESSOR SYSTEM |
US9128754B2 (en) * | 2012-05-31 | 2015-09-08 | Hewlett-Packard Development Company, L.P. | Resource starvation management in a computer system |
US9438537B2 (en) * | 2012-07-03 | 2016-09-06 | Freescale Semiconductor, Inc. | Method for cut through forwarding data packets between electronic communication devices |
US20140201416A1 (en) * | 2013-01-17 | 2014-07-17 | Xockets IP, LLC | Offload processor modules for connection to system memory, and corresponding methods and systems |
JP2016521936A (ja) | 2013-06-29 | 2016-07-25 | インテル コーポレイション | クレジットに基づく調停のためのサービスレート再分配 |
US20150127927A1 (en) * | 2013-11-01 | 2015-05-07 | Qualcomm Incorporated | Efficient hardware dispatching of concurrent functions in multicore processors, and related processor systems, methods, and computer-readable media |
US9600277B2 (en) * | 2014-02-21 | 2017-03-21 | International Business Machines Corporation | Asynchronous cleanup after a peer-to-peer remote copy (PPRC) terminate relationship operation |
-
2016
- 2016-01-04 US US14/987,676 patent/US10445271B2/en active Active
- 2016-12-02 TW TW105139954A patent/TWI731908B/zh active
- 2016-12-02 TW TW110123845A patent/TW202141260A/zh unknown
- 2016-12-06 DE DE112016006154.4T patent/DE112016006154T5/de active Pending
- 2016-12-06 CN CN201680071000.8A patent/CN108292239A/zh active Pending
- 2016-12-06 WO PCT/US2016/065170 patent/WO2017119980A1/en active Application Filing
-
2019
- 2019-10-14 US US16/601,137 patent/US10929323B2/en active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11934826B2 (en) | 2020-02-26 | 2024-03-19 | Google Llc | Vector reductions using shared scratchpad memory |
TWI743736B (zh) * | 2020-04-08 | 2021-10-21 | 瑞昱半導體股份有限公司 | 資料傳輸系統、電路與方法 |
Also Published As
Publication number | Publication date |
---|---|
DE112016006154T5 (de) | 2018-09-20 |
TW202141260A (zh) | 2021-11-01 |
US10929323B2 (en) | 2021-02-23 |
WO2017119980A1 (en) | 2017-07-13 |
US20170192921A1 (en) | 2017-07-06 |
US20200042479A1 (en) | 2020-02-06 |
CN108292239A (zh) | 2018-07-17 |
TWI731908B (zh) | 2021-07-01 |
US10445271B2 (en) | 2019-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10929323B2 (en) | Multi-core communication acceleration using hardware queue device | |
US11093277B2 (en) | Systems, methods, and apparatuses for heterogeneous computing | |
TWI628594B (zh) | 用戶等級分叉及會合處理器、方法、系統及指令 | |
US10212092B2 (en) | Architectures and methods for processing data in parallel using offload processing modules insertable into servers | |
CN108027804B (zh) | 片上原子事务引擎 | |
JP5774707B2 (ja) | 異種マルチプロセッサコンピューティングプラットフォームにおけるアプリケーションのスケジューリング | |
TWI537831B (zh) | 多核心處理器、用於執行處理程序切換之方法、用於保全一記憶體區塊之方法、用於致能使用一多核心裝置之異動處理之設備、以及用於執行記憶體異動處理之方法 | |
TWI751222B (zh) | 處理器及其處理器架構 | |
US20160210167A1 (en) | Virtualization of hardware accelerator | |
US11061742B2 (en) | System, apparatus and method for barrier synchronization in a multi-threaded processor | |
CN108885586B (zh) | 用于以有保证的完成将数据取出到所指示的高速缓存层级的处理器、方法、***和指令 | |
US20210374848A1 (en) | Systems, Apparatuses, and Methods for Resource Bandwidth Enforcement | |
US10866902B2 (en) | Memory aware reordered source | |
US7395411B2 (en) | Methods and apparatus for improving processing performance by controlling latch points | |
US10771554B2 (en) | Cloud scaling with non-blocking non-spinning cross-domain event synchronization and data communication | |
US9418024B2 (en) | Apparatus and method for efficient handling of critical chunks | |
Zou et al. | DirectNVM: Hardware-accelerated NVMe SSDs for high-performance embedded computing | |
US20220308791A1 (en) | System, apparatus, and method for scheduling metadata requests | |
US11886910B2 (en) | Dynamic prioritization of system-on-chip interconnect traffic using information from an operating system and hardware | |
US20240004808A1 (en) | Optimized prioritization of memory accesses | |
US20220147393A1 (en) | User timer directly programmed by application |