TW202209249A - 處理工作量的方法及設備、以及記憶體子系統 - Google Patents
處理工作量的方法及設備、以及記憶體子系統 Download PDFInfo
- Publication number
- TW202209249A TW202209249A TW110119921A TW110119921A TW202209249A TW 202209249 A TW202209249 A TW 202209249A TW 110119921 A TW110119921 A TW 110119921A TW 110119921 A TW110119921 A TW 110119921A TW 202209249 A TW202209249 A TW 202209249A
- Authority
- TW
- Taiwan
- Prior art keywords
- work item
- caching mechanism
- cache
- work
- logic
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3024—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3495—Performance evaluation by tracing or monitoring for systems
-
- 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
-
- 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/0877—Cache access modes
-
- 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/0893—Caches characterised by their organisation or structure
- G06F12/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
- G06F12/127—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning using additional replacement algorithms
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the 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
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/88—Monitoring involving counting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/885—Monitoring specific for caches
-
- 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- 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/30—Providing cache or TLB in specific location of a processing system
- G06F2212/302—In image processor or graphics adapter
-
- 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/45—Caching of specific data in cache memory
- G06F2212/455—Image or video data
-
- 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/50—Control mechanisms for virtual memory, cache or TLB
- G06F2212/502—Control mechanisms for virtual memory, cache or TLB using adaptive policy
-
- 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
-
- 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/608—Details relating to cache mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2200/00—Indexing scheme for image data processing or generation, in general
- G06T2200/28—Indexing scheme for image data processing or generation, in general involving image processing hardware
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Computer Hardware Design (AREA)
- Computer Graphics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Debugging And Monitoring (AREA)
Abstract
本發明提供一種處理圖像處理單元(GPU)中的工作量的方法,方法可包含:偵測GPU中的工作量的工作項;判定用於工作項的快取機制;以及基於快取機制針對工作項的至少一部分操作GPU中的快取記憶體階層的至少一部分。可基於自應用程式接收到的資訊且/或藉由驅動器及/或硬體偵測邏輯監視一或多個效能指標來偵測工作項。方法可更包含監視一或多個效能指標,其中可基於一或多個效能指標判定及/或改變用於工作項的快取機制。可基於運行時間學習模型選擇用於工作項的快取機制。
Description
本揭露大體上是關於圖像處理,且更特定而言,是關於於圖像處理單元實現快取機制之方法以及設備。
GPU中的記憶體子系統可結構化為具有主記憶體及各種層級快取的階層。可將快取機制應用於階層以指定快取分配機制、替換機制及/或類似者。
此背景技術部分中揭露的以上資訊僅用於增強對本發明的背景技術的理解,且因此,其可含有不構成先前技術的資訊。
一種處理圖像處理單元(graphics processing unit;GPU)中的工作量的方法可包含:偵測GPU中的工作量的工作項;判定用於工作項的快取機制;以及基於快取機制針對工作項的至少一部分操作GPU中的快取記憶體階層的至少一部分。可基於自應用程式接收到的資訊偵測工作項。可基於監視一或多個效能指標偵測工作項。一或多個效能指標中的至少一者可藉由驅動器監視。一或多個效能指標中的至少一者可藉由硬體偵測邏輯監視。可基於來自用戶端的記憶體請求判定快取機制。記憶體請求可包含工作項識別符(identifier;ID)。用於工作項的快取機制可包含靜態快取機制。用於工作項的快取機制可包含動態快取機制。可基於工作項的身分標識判定用於工作項的快取機制。工作項的身分標識可映射至快取機制。方法可更包含監視一或多個效能指標,其中可基於一或多個效能指標判定用於工作項的快取機制。用於工作項的快取機制可映射至一或多個效能指標。方法可更包含監視一或多個效能指標,其中可基於工作項的身分標識與一或多個效能指標的組合判定用於工作項的快取機制。方法可更包含監視一或多個效能指標,以及基於一或多個效能指標改變用於工作項的快取機制。快取機制可包含第一快取機制,方法可更包含基於一或多個效能指標判定用於工作項的第二快取機制,以及選擇用於工作項的第一快取機制或第二快取機制中的一者。可基於運行時間學習模型選擇用於工作項的快取機制。
一種設備可包含:圖像處理管線,包括一或多個用戶端;快取記憶體階層,經組態以處理來自一或多個用戶端的記憶體請求;以及機制選擇邏輯,經組態以判定用於一或多個用戶端中的至少一者的工作項的快取機制且針對工作項的至少一部分將快取機制應用於快取記憶體階層的至少一部分。設備可更包含經組態以偵測工作項的偵測邏輯。機制選擇邏輯的至少一部分可安置於中央邏輯單元中。機制選擇邏輯的至少一部分可安置於一或多個用戶端中的至少一者中。機制選擇邏輯的至少一部分可安置於快取記憶體階層中。
一種記憶體子系統可包含:記憶體介面;快取記憶體階層,經組態以經由記憶體介面處理來自一或多個用戶端的記憶體請求;以及機制選擇邏輯,經組態以判定用於一或多個用戶端中的至少一者的工作項的快取機制且針對工作項的至少一部分將快取機制應用於快取記憶體階層的至少一部分。記憶體子系統可更包含經組態以偵測工作項的偵測邏輯。
概述
本揭露的原理中的一些是關於針對GPU工作量中的不同工作項使用不同快取機制。藉由基於不同工作項的流量型樣應用不同快取機制,一些實施例可例如藉由增大快取命中率、增大有效快取容量及/或減少各種快取層級及/或主記憶體之間的資料移動來提高效能及/或降低功耗。
本揭露的一些原理是關於用於偵測工作項及/或在不同工作項之間的邊界的各種方法及設備。舉例而言,在一些實施例中,可藉由經由應用程式設計介面(application programming interface;API)自應用程式及/或程式設計師接收一或多個提示來偵測工作項。作為額外實例,在各種實施例中,可在驅動器層級及/或硬體層級處藉由監視一或多個效能指標及識別一或多個效能指標中的改變來偵測工作項或連續工作項之間的邊界,此等改變可指示流量行為的改變,所述流量行為諸如繪圖中的頂點或基元的數目、使用中的呈現標靶物的數目、記憶體單元的分配、管線狀態、使用中的資源的數目及/或類型、使用中的資料格式及/或元資料、繪圖中的頂點與基元的比率、色彩及/或深度資料存取與紋理存取的比率、經存取的資料區、快取清空及/或同步,及/或類似者。
本揭露的一些原理是關於用於實現用於不同工作項的各種快取機制的方法及設備。一些實施例可實現靜態機制、動態機制及/或機制的混合組合。舉例而言,可基於識別工作項及/或其特性來針對工作項實現靜態快取機制。可例如使用各種工作項的流量型樣的離線學習及將工作項映射至針對特定工作項最佳化的快取機制來判定靜態機制。
作為另一實例,可使用運行時間學習演算法來實現動態機制。舉例而言,可將各種快取機制在運行時間應用於工作項,且可監視所產生的效能以提供關於每一機制的有效性的回饋。可接著選擇有效的或最佳的機制且在工作項的持續時間內應用。替代地,可繼續監視選定的機制的效能,且可基於機制的有效性中的偵測到的改變修改所述機制。
作為另一實例,可基於離線學習與效能指標的混合組合來實現動態機制,所述效能指標諸如每秒框數(frames per second;FPS)、命中率及/或類似者。舉例而言,離線學習可用於判定用於工作項的多個快取機制,其中每一快取機制對於不同效能指標集可為有效的或最佳的。在運行時間,可基於工作項的身分標識與當前效能指標的組合選擇快取機制。
本文中所揭露的原理具有獨立效用且可單獨地實施,且並非每一實施例皆可利用每一原理。此外,原理亦可實施於各種組合中,所述各種組合中的一些可以協作方式擴增個別原理的益處。
工作量及快取機制
GPU可包含具有諸如命令處理器、光柵處理器(rasterizer)、著色器、紋理單元及/或類似者的不同組件或級的管線。為執行其功能,此等組件可存取記憶體子系統,所述記憶體子系統可包含例如主記憶體及具有一或多個層級的快取記憶體階層。GPU工作量可包含穿過組件中的一或多者的各種子通道以執行圖像處理操作。不同子通道可具有針對不同類型的資料(諸如色彩、深度、紋理及/或類似者)的不同運行時間流量型樣(亦稱作流量行為)。此等流量型樣可在不同呈現子通道之間改變,所述不同呈現子通道中的每一者可在呈現管線中執行不同任務,諸如產生幾何構型及/或發光、應用後處理效果及/或類似者。
最佳快取機制可取決於存取快取階層的子通道的流量型樣。然而,由於個別呈現子通道的流量型樣可實質上彼此不同,因此可針對一個子通道較佳工作的快取機制對於其他子通道可能有害。由於GPU工作量可包含具有不同流量型樣的多個子通道,因此GPU可實現作出折衷以針對總體工作量提供最佳總體效能的快取機制。然而,此可能致使子通道中的一些的效能顯著降低。
工作項感知快取機制
圖1示出根據本揭露的可實現工作項感知快取機制的系統的實施例。圖1中所示的系統可包含圖像處理管線102
、記憶體子系統104
以及流量控制邏輯106
。管線102
可包含可經由記憶體請求110
存取記憶體子系統104
的任意類型及/或數目的用戶端108
。用戶端108
的實例可包含命令處理器、幾何單元、光柵處理器、著色器、紋理單元、呈現緩衝器(例如色彩緩衝器、深度緩衝器及/或類似者)、屬性收件器(fetcher)及/或任何其他管線子塊及/或類似者。在一些實施例中,用戶端可包含可存取記憶體子系統104
的任意實體,包含用戶端內的資源。
記憶體子系統104
可包含一或多個主記憶體118
及一或多個快取記憶體階層(亦稱作快取階層)120
,所述快取記憶體階層120
中的每一者可包含任意類型及/或數目的快取記憶體。舉例而言,在一些實施例中,記憶體子系統104
可包含具有單一快取的快取階層,而在其他實施例中,快取階層可具有一或多個一階(Level 1;L1)快取、二階(Level 2;L2)快取及/或三階(Level 3;L3)快取。在一些實施例中,可將一或多個主記憶體視為快取記憶體階層的一部分。
流量控制邏輯106
可包含用以開拓快取流量型樣中的空間及/或時間局部性以針對藉由管線102
執行的不同工作項實現不同快取機制(例如分配機制、替換機制、可共享性及/或類似者)的功能性。工作項的實例可包含通道、子通道、階段及/或類似者,及/或其任何部分。在一些實施例中,工作項可包含具有可獲益於特定快取機制的記憶體流量特性的時間及/或處理的任意描繪。
在一些實施例中,控制邏輯106
可包含工作項偵測邏輯112
、機制選擇邏輯114
及/或學習邏輯116
。工作項偵測邏輯112
可包含用以偵測工作項及/或不同工作項之間的邊界的功能性。(在一些實施例中,偵測工作項及/或偵測不同工作項之間的邊界可統稱為偵測工作項。)工作項偵測邏輯112
可在API層級、驅動器層級、硬體層級及/或其任何組合處操作。
機制選擇邏輯114
可包含用以針對管線102
中的一或多個用戶端以及記憶體子系統104
中的一或多個快取階層或其部分選擇及/或實現一或多個快取機制的功能性。在一些實施例中,快取機制可為靜態、動態及/或其任何組合。在一些實施例中,可基於用戶端資訊及/或特性、工作項資訊及/或特性、效能指標、學習特性及/或其行為及/或其任何組合實現快取機制。
學習邏輯116
可包含用以在某些狀況下基於所應用快取機制監視及/或學習(其可包含的開環及/或閉環監視)工作項及/或其效能的特性、流量型樣及/或類似者的功能性。可線上、離線及/或其任何組合實現學習演算法。
在一些實施例中,流量控制功能性可以集中式方式實現,例如主要或完全在流量控制邏輯106
內。在其他實施例中,流量控制邏輯106
中的一些或全部可以分佈式方式實現,包含遍及以虛線繪示為分別位於管線102
(及/或其組件)及/或記憶體子系統104
(及/或其組件)中的流量控制邏輯106A
及流量控制邏輯106B
的一或多個其他組件分佈。因此,工作項偵測邏輯112
、機制選擇邏輯114
及/或學習邏輯116
中的一些或全部亦可遍及所述系統分佈,包含遍及系統的其他組件分佈。
可藉由硬體、軟體或其任何組合實現流量控制邏輯106
。舉例而言,在可藉由硬體至少部分地實現的一些實施例中,控制邏輯可包含電路,諸如組合邏輯、順序邏輯、一或多個計時器、計數器、暫存器、狀態機、諸如動態隨機存取記憶體(dynamic random access memory;DRAM)及/或靜態動態存取記憶體(static dynamic access memory;SRAM)的揮發性記憶體、諸如快閃記憶體的非揮發性記憶體、複合可程式化邏輯裝置(complex programmable logic device;CPLD)、場可程式化閘陣列(field programmable gate array;FPGA)、特殊應用積體電路(application specific integrated circuit;ASIC)、執行指令的複雜指令集電腦(complex instruction set computer;CISC)處理器及/或精簡指令集電腦(reduced instruction set computer;RISC)處理器及/或類似者,以執行其各別功能。雖然示出為個別組件,但在一些實施例中,工作項偵測邏輯112
、機制選擇邏輯114
及/或學習邏輯116
可整合至單一組件中,及/或繪示為單一組件的一些組件可藉由多個組件實現。舉例而言,在一些實施例中,學習邏輯116
可整合至機制選擇邏輯114
中。
出於說明本揭露的原理的目的,可在某些具體實施細節的上下文中如下描述一些實例實施例。然而,本發明的原理不限於此等實例細節。
貫穿本揭露,為方便起見,工作項可指全部工作項及/或工作項的一部分。同樣地,工作項可指工作項及/或工作項之間的邊界。此外,為方便起見,階層可指全部階層及/或階層的一部分。
圖2示出根據本揭露的可實現工作項感知快取機制的系統的實例實施例。圖2中所示的系統可包含圖像處理管線202
、記憶體子系統204
以及流量控制邏輯206
。出於說明的目的,管線202
示出為具有一連串呈子塊形式的用戶端,包含可經由記憶體請求210
存取記憶體子系統204
的命令處理器218
、幾何單元220
、光柵處理器222
、一或多個著色器224
以及紋理單元226
,但其他實施例可具有任何其他數目及/或類型的用戶端。
亦出於說明的目的,記憶體子系統204
示出為具有L1快取228 、
L2快取230
以及L3快取232
的快取階層以及主記憶體234
及記憶體介面236
,但其他實施例可具有任何其他數目及/或類型的組件。在一些實施例中,記憶體介面可包含一或多個匯流排、仲裁器及/或類似者。用於記憶體請求210
的記憶體可位於主記憶體234
及/或L1快取、L2快取及/或L3快取中,且可使用資料、位址類型及/或其他資訊238
來存取。
在一些實施例中,流量控制邏輯206
可包含工作項偵測邏輯、機制選擇邏輯及/或學習邏輯。在一些實施例中,流量控制邏輯206
可以如2圖中所示的集中式方式實現,但在其他實施例中,流量控制邏輯206
中的一些或全部可遍及所述系統分佈。舉例而言,在一些實施例中,工作項感知流量邏輯可在子塊中的一或多者中實現,以使得子塊能夠做出其自身的機制決策。在此實施例中,子塊可選擇快取機制並將其連同記憶體請求發送至記憶體子系統204
。記憶體請求可更包含工作項識別符(identifier;ID),所述工作項識別符可由記憶體子系統204
使用以設定用於工作項或其部分的機制。作為另一實例,在一些實施例中,工作項感知流量邏輯可例如作為局部狀態機在L1快取、L2快取及/或L3快取中的一或多者中實現。
軟體驅動器可向管線202
提供諸如命令、繪圖、頂點、基元及/或類似者的輸入240
。驅動器亦可向流量控制邏輯206
提供工作項資訊242
。在一些實施例中,工作項資訊可包含工作項ID、工作項的記憶體特性(例如可指示工作項預期的流量行為的特性)及/或類似者。
流量控制邏輯206
亦可接收及監視效能指標244
,所述效能指標244
可例如在軟體驅動器及/或硬體層級處實現。流量控制邏輯206
可自L1快取、L2快取及/或L3快取及/或主記憶體234
中的任一者或全部接收及監視額外效能指標248
,諸如命中率、流量型樣及/或類似者。諸如用戶端資訊、工作項資訊及/或類似者的額外資訊246
可經由記憶體介面236
傳遞至流量控制邏輯206
。
流量控制邏輯206
可例如藉由將一或多個分配層級、替換機制、可共享性機制及/或類似者發送至L1快取、L2快取及/或L3快取及/或主記憶體234
來針對一或多個工作項及/或其部分將一或多個快取機制250
應用於快取階層。
在一些實施例中,圖1及圖2中所示的系統可使得工作項感知機制能夠實現,所述工作項感知機制的實現可例如藉由增大快取命中率及/或有效快取容量且/或藉由減少快取階層的各種層級以及主記憶體之間的資料移動來提高效能及/或降低功耗。視實施細節而定,GPU核心記憶體階層以及記憶體互連件及/或主記憶體及相關聯快取中的功耗可降低。在一些實施方案中,功率減少可擴展至最低(或末)級快取(Lowest (或Last)Level Cache;LLC),其可為例如在GPU及/或諸如多媒體塊的其他組件上的一個層級。在一些實施例中,本文中所揭露的系統及/或方法中的一或多者可在對應用程式及/或驅動器進行很少修改或沒有修改的情況下實現。
流量控制邏輯206
可藉由如上文關於圖1及圖2中所示的實施例描述的硬體、軟體或其任何組合實現。
關於圖2中所示的實施例以及本文中所描述的任何其他實施例描述的操作、組件、連接件、資料流及/或類似者為實例操作、組件、連接件、資料流及/或類似者。在一些實施例中,可省略此等元件中的一些且/或可包含其他元件。在一些實施例中,操作、組件、連接件、資料流及/或類似者的時間及/或空間次序可變化。此外,在一些實施例中,多個操作、組件、連接件、資料流及/或類似者可合併成單一元件,且/或單一操作、組件、連接件、資料流及/或類似者可分佈於多個元件當中。
運行時間操作
圖3示出根據本揭露的用於實現工作項感知快取機制的方法的實例實施例。圖3中所示的方法可例如使用諸如圖1及圖2中所示的系統的系統來實現,但圖3中所示的方法並不限於圖1及圖2中所描述的任何具體細節。
可在API偵測操作302
、軟體驅動器偵測操作304 、
硬體偵測操作306
及/或其組合處偵測新工作項及/或邊界(其可統稱為工作項)。若並未在操作308
處偵測到新工作項,則快取階層可在操作310
處繼續使用當前工作項感知快取機制。
若在操作308
處偵測到新工作項,則所採用的路徑可取決於偵測到工作項的方式。舉例而言,若藉由API操作302
偵測到新工作項,則方法可前進至操作312
,其中API可向軟體驅動器告知新工作項且前進至操作314
。若藉由軟體驅動器操作304
偵測到新工作項,則方法可跳過操作312
且前進至操作314
,其中驅動器可向一或多個用戶端(例如紋理單元、著色器、光柵處理器及/或類似者)告知新工作項且前進至操作316
。若藉由硬體操作306
偵測到新工作項,則方法可跳過操作312
及操作314
且前進至操作316
,其中一或多個用戶端可更新工作項資訊,諸如工作項ID、工作項的記憶體特性及/或類似者。
方法可接著前進至操作318
,其中工作項所涉及的一或多個用戶端可將可能包含工作項資訊的一或多個記憶體請求發送至記憶體子系統。在操作320
處,工作項感知機制選擇邏輯可截取某些或全部記憶體請求,例如與新工作項所涉及的用戶端相關的彼等記憶體請求。在操作322
處,用於新工作項的經更新快取機制可應用於一或多個用戶端及一或多個快取,例如涉及新工作項的彼等用戶端及快取。
在一些實施例中,方法可接著前進至操作310
,其中快取階層可在工作項的持續時間內繼續使用當前工作項感知快取機制。在一些其他實施例中,方法可經由操作324
循環,其中可監視一或多個效能指標。可接著基於效能指標更新當前快取機制。在一些實施例中,方法可經由操作324
循環有限數目次,例如直至判定工作項的流量型樣為止,且適當快取機制應用於快取階層。在其他實施例中,方法可在工作項的持續時間內繼續經由操作324
循環,以基於藉由監視效能指標而判定的改變的流量型樣來不斷調整快取機制。
關於圖3中所示的實施例以及本文中所描述的任何其他實施例描述的操作、組件、連接件、資料流及/或類似者為實例操作、組件、連接件、資料流及/或類似者。在一些實施例中,可省略此等元件中的一些且/或可包含其他元件。在一些實施例中,操作、組件、連接件、資料流及/或類似者的時間及/或空間次序可變化。此外,在一些實施例中,多個操作、組件、連接件、資料流及/或類似者可合併成單一元件,且/或單一操作、組件、連接件、資料流及/或類似者可分佈於多個元件當中。
工作項偵測
可根據本揭露偵測不同域中的工作項,所述域包含API域、驅動器域、硬體域及/或類似域,或其組合。可例如藉由圖1至圖3中所示的系統及/或方法中的任一者實現本文中所描述的工作項偵測技術,但所述技術不限於圖1至圖3中所描述的任何具體細節。
在應用程式層級,根據本揭露的各種技術可用於使得程式設計師或應用程式能夠直接及/或間接向流量控制邏輯告知新工作項。舉例而言,在一些實施例中,API可包含及/或實現一或多個擴展,以提供用以向流量控制邏輯明確告知工作項的功能性以及提供可使得流量控制邏輯能夠選擇及/或維持適合於工作項的快取機制的資訊。在一些實施方案中,此資訊可經由驅動器傳遞至流量控制邏輯。
作為另一實例,程式設計師或應用程式可藉由提供提示來向流量控制邏輯間接告知工作項。舉例而言,一些API可提供開放記憶體系統,其可使得硬體供應商能夠實現可基於利用率提供最佳記憶體位置的不同記憶體類型。因此,程式設計師可藉由每一工作項分配不同記憶體類型來區分開工作項。在一些實施例中,此可使得記憶體異動及/或相關聯快取機制能夠基於工作項的類型及/或性質而調諧以改良效能。
在一些實施例中,且視實施細節而定,就改良工作項的效能而言,識別API功能域中的工作項可為程式設計師或應用程式提供更多透通性及/或靈活性。此外,在API層級處識別工作項可提高精確性,此是因為識別可藉由程式設計師執行,而非藉由試圖推斷工作項的行為的二階效應的機器及/或演算法執行。
在驅動器層級處,根據本揭露的各種技術(例如試探法)可用於例如藉由監視一或多個效能指標來偵測新工作項,所述效能指標諸如管線的狀態、維度的數目及/或類型、經處理的繪圖的數目、繪圖中的頂點及/或基元的數目、使用中的呈現標靶物的數目、使用中的資源的數目及/或類型(例如記憶體單元或「二進位大型物件(blob)」的分配)、資源轉換、使用中的資料格式、著色器元資料及/或類似者。
舉例而言,在一些實施例中,一旦潛在工作項及/或工作項內的記憶體單元已經識別為用於工作項感知快取機制的候選項,則GPU驅動器可試圖設定用於流量控制邏輯的適當提示。在一些實施例中,GPU驅動器可能夠判定記憶體單元何時可用作可呈遞的影像。此偵測可在創建此影像時進行,且因此,GPU驅動器可有機會設定適當記憶體類型以指示新工作項。舉例而言,可在GPU驅動器導入外部分配的記憶體(例如取得所述外部分配的記憶體的所有權)時設定此記憶體類型。記憶體的所分配區可藉由記憶體類型映射,所述記憶體類型可向硬體告知驅動器預期處置特定記憶體區的具體方式。
在硬體層級處,根據本揭露的各種技術(例如試探法)可用於例如藉由監視一或多個效能指標來偵測新工作項,所述效能指標諸如快取清空及/或快取同步、使用中的呈現標靶物的數目、頂點與基元的比率、色彩及/或深度資料存取與紋理存取的比率、經存取的資料區、至尚未用於當前工作項的區的流量及/或類似者。此等及/或其他參數可在各種時刻使用以推斷工作項及/或連續工作項之間的邊界的存在及/或身分標識。
在一些實施例中,且視實施細節而定,識別硬體域中的工作項可很少或沒有涉及軟體支持。
在一些實施例中,偵測工作項的目的可為容許流量控制邏輯尋找一或多個工作項的起始點(且隨後,終點)。在一些實施例中,工作項的實際身分標識及/或類型(諸如幾何緩衝器子通道、發光子通道及/或類似者)可能不是判定用於新工作項的快取機制中的主要因素。舉例而言,在一些實施方案中,快取機制可基於針對工作項學習記憶體流量行為而判定,而非知曉工作項的身分標識。然而,在其他實施例中,用於新工作項的快取機制可部分或完全基於身分標識或類型。
在工作項的特性跨工作量保持不變的狀況下,靜態機制可應用於所述工作項。舉例而言,可更明確地最佳化對顯示框緩衝器的傳輸。
在一些實施例中,在一或多個工作項已經識別之後,可向一或多個用戶端(諸如GPU子塊及/或快取階層元件)告知何時在藉由GPU執行的工作項中存在改變。此告知可藉由可基於工作項識別機制變化的機制來實現。此外,在向一或多個用戶端及/或快取階層元件告知藉由GPU執行的新工作項之後,所述用戶端及/或快取階層元件可重新評估其各別快取機制以估計其是否可使用用於新工作項的更佳機制。舉例而言,若向L2快取告知工作項中的改變,則L2快取中的工作項感知機制邏輯可估計用於前述工作項的快取替換機制對於新工作項是否為可接受的或最佳的。同樣,若發現用於前述工作項的機制對於新工作項為可接受的或最佳的,則L2快取不會採取任何動作。然而,若L2快取中的工作項感知機制邏輯識別用於新工作項的更佳替換機制,則L2快取可應用新替換機制以更佳地滿足新工作項。
在一些實施例中,工作項感知機制邏輯可使用不同估計機制以識別根據本揭露的用於工作項的可接受的或最佳的機制,包含以下所描述的實例中的任一者。
學習流量行為
在根據本揭露的一些實施例中,用於工作項的快取記憶體流量行為的學習可實現於包含驅動器層級、硬體層級及/或其任何組合的任意域中。可例如藉由圖1至圖3中所示的系統及/或方法中的任一者實現本文中所描述的流量行為學習技術,但所述技術不限於圖1至圖3中所描述的任何具體細節。
在一些實施例中,可使用離線分析學習流量行為,所述離線分析可使得流量控制邏輯能夠應用對於特定工作項可有益或最佳的機制。舉例而言,在顯示框緩衝器最佳化的情況下,可離線分析以下特性及/或效能指標中的一或多者:跨用戶端(在用戶端之間)及/或在用戶端內的產生器(資料寫入器)及/或用戶(資料讀取器)關係的再用;無分配線路;每一用戶端讀取及/或寫入流量;部分寫入;記憶體類型;及/或類似者。
在一些實施例中,可藉由可例如在硬體、一或多個軟體驅動器及/或類似者中實現的效能指標監視此等特性中的一或多者。此外,效能指標的監視可以用於工作項偵測。
在一些情況中,諸如框內子通道的工作項的總數目可保持恆定。一些實施例可實現對此情況的一或多個檢查,此是因為其可用於偵測最終子框寫入。在偵測子通道的數目已經改變後,根據本揭露的學習演算法可例如在返回至前述行為後潛在地重新啟動及/或抹除所有先前學習或儲存先前學習以供後續使用。
在一些實施例中,用於工作項的流量行為的學習可在框的一部分、整個框及/或多個框上發生。可追蹤框內每一工作項的特性,且一旦已經學習工作項的一或多個特性,則習得的特性可在未來框的相同工作項上用於判定及應用諸如分配機制、替換機制及/或類似者的經改良或最佳快取機制。
工作項感知流量控制器
圖4示出根據本揭露的工作項感知流量控制器的實例實施例。舉例而言,可使用圖4中所示的控制器以實現本文中所揭露的流量控制邏輯中的任一者,包含圖1及圖2中所示的流量控制邏輯。控制器402
可包含分配層級邏輯404 、
替換機制邏輯406
以及機制選擇邏輯408
。機制選擇邏輯408
可回應於來自任何廣泛多種源的輸入410
而使用本文中所揭露的任何機制選擇技術來選擇一或多個快取機制。舉例而言,輸入410
可包含如圖4中所繪示的用戶端資訊及/或工作項資訊且其可自例如記憶體、驅動器、API及/或類似者接收。另外或替代地,輸入410
可包含含有諸如命中率、每秒框數及/或類似者的效能指標的任何其他資訊。
藉由機制選擇邏輯408
選定的一或多個快取機制412
可傳達至分配層級邏輯404
及/或替換機制邏輯406
以供實現。分配層級邏輯404
可回應於輸入410
中的一或多者及藉由機制選擇邏輯408
選定的一或多個快取機制412
提供分配機制414
。圖4中所示的實施例可包含替換機制邏輯406
的三個個例以提供快取階層中的每一快取層級獨立替換機制,但其他實施例可包含替換機制邏輯406
的唯一一個或任何其他數目個個例。類似地,其他實施例可包含分配層級邏輯404
的任何數目的個例。
替換機制邏輯406
可回應於藉由機制選擇邏輯408
選定的一或多個快取機制412
及來自分配層級邏輯404
的輸出416
提供替換機制418
,其可包含例如分配機制414
及/或輸入410
中的一或多者。
在一些實施例中,流量控制器402
可截取例如來自記憶體介面的記憶體請求中的一些或全部,且使用來自每一請求的諸如用戶端識別符(用戶端ID(client identifier;client ID))、工作項ID、讀取及/或寫入指示符及/或類似者的一或多個性質以例如針對每一請求指定一或多個快取機制,其亦可針對快取階層中的每一層級實現。針對每一層級指定的快取機制的元件的實例包含請求是可快取還是不可快取、保留期、替換機制及/或類似者。在一些實施例中,流量控制器402
可將工作項ID符記及/或其他請求性質映射至選定的快取機制並向請求指定機制。
機制選擇邏輯
各種方法可用於選擇及/或應用根據本揭露的用於工作項的一或多個快取機制。方法的實例包含基於離線學習的每一工作項的靜態機制選擇、基於運行時間條件及離線學習的動態機制選擇及/或基於運行時間條件及運行時間學習的動態機制選擇。在一些實施例中,一或多個快取機制可經最佳化以用於不同輸出特性。舉例而言,一或多個機制可經最佳化以使FPS達到最大、降低記憶體流量及/或類似者。在一些實施例中,若機制可為可能與其可應用的具體工作項有關的一或多個參數提供最佳或幾乎最佳結果,則可視其為最佳的。在一些實施例中,若快取機制在其可應用的工作項或其部分的持續時間內不改變,則可視其為靜態,而若快取機制在其可應用的工作項或其部分的持續時間內改變或能夠改變,則可視其為動態。此等僅為實例技術,且可根據本揭露的原理實現其他技術及/或其組合。可例如藉由圖1至圖3中所示的系統及/或方法中的任一者實現本文中所描述的機制選擇技術,但所述技術不限於彼等圖式中所描述的任何具體細節。如上所述,貫穿本揭露,為方便起見,工作項可指全部工作項及/或工作項的一部分,工作項可指工作項及/或工作項之間的邊界,且階層可指全部階層及/或階層的一部分。同樣地,最佳可指可低於最佳但仍有效、有益、經改良及/或類似者的某物。
圖5示出根據本揭露的可基於離線學習實現靜態機制選擇的工作項感知流量控制器502
的實例實施例。控制器502
可包含可與圖4中所示的實施例中的分配層級邏輯及替換機制邏輯類似的分配層級邏輯504
及替換機制邏輯506
。機制選擇邏輯可作為可執行對應用程式及/或工作項行為的解析及/或分析的離線學習靜態機制邏輯508
而實現。每一工作項的一或多個最佳機制可離線識別且可在硬體中經硬編碼,及/或實現於驅動器或可應用一或多個機制至快取階層的任何其他配置中。舉例而言,可在運行時間偵測工作項,且其身分標識可傳達至可涉及執行工作項的用戶端(例如硬體子塊)中的一或多者。在一些實施例中,用戶端中的一或多者、流量控制邏輯、快取階層及/或類似者可映射工作項身分標識至一或多個對應最佳機制。
在一些實施例中且視實施細節而定,此機制可涉及硬體的極少改變,且因此可相對易於實現。
圖6示出根據本揭露的可基於效能指標及離線學習實現動態機制選擇的工作項感知流量控制器602
的實例實施例。控制器602
可包含可與圖4中所示的實施例中的分配層級邏輯及替換機制邏輯類似的分配層級邏輯604
及替換機制邏輯606
。如同圖5的實施例,機制選擇邏輯可作為可實現對應用程式及/或工作項行為的離線解析及/或分析的離線學習靜態機制邏輯608 而
實現。然而,離線學習靜態機制邏輯608
可基於諸如FPS、命中率及/或類似者的效能指標620
識別每一工作項的多個最佳機制,所述效能指標620
可經由選擇器622
藉由離線學習靜態機制邏輯608
監視及/或經由選擇器622
輸入至離線學習靜態機制邏輯608
。最佳機制可離線識別且可在硬體中經硬編碼,及/或實現於驅動器或可應用一或多個機制至快取階層的任何其他配置中。
在一些實施例中,離線學習靜態機制邏輯608
可在工作項的起始處識別及應用最佳快取機制,且可在工作項的持續時間內應用所述機制。在一些其他實施例中,離線學習靜態機制邏輯608
可繼續監視效能指標,且回應於一或多個改變的效能指標而在工作項執行期間改變快取機制。
在一些實施例中,一或多個學習演算法可相對複雜,此是因為其可離線執行且因此不涉及諸多資源限制。基於此離線學習,邏輯可經硬編碼至工作項感知機制硬體中,其可接收輸入610
,諸如用戶端ID、工作項ID及/或類似者,以及各種效能指標,諸如FPS、各種快取的命中率及/或類似者。基於此等輸入,離線學習靜態機制邏輯608
可選擇可傳達至分配層級邏輯604
及替換機制邏輯606
以供實現的一或多個快取機制612
。在一些實施例中,在運行時間偵測到的工作項及其身分標識可藉由一或多個用戶端(例如子塊)連同一或多個記憶體請求一起傳達至流量控制器。
在一些實施例中,且視實施細節而定,此機制可基於特定工作項的運行時間行為提供更精細的及/或微調的機制選擇。
圖7示出根據本揭露的可基於效能指標及線上學習實現動態機制選擇的工作項感知流量控制器702
的實例實施例。控制器702
可包含可與圖4中所示的實施例中的分配層級邏輯及替換機制邏輯類似的分配層級邏輯704
及替換機制邏輯706
。然而,機制選擇邏輯可藉由一或多個運行時間學習模型708
及運行時間邏輯724
實現。因此,機制選擇邏輯可很少或沒有執行對應用程式及/或工作項行為的離線解析及分析。替代地,一或多個運行時間學習模型708
及運行時間邏輯724
可藉由依序應用多個可用的快取機制以及使用回饋機制以估計每一機制的有效性且藉此學習每一工作項的一或多個最佳機制來識別在運行時間的每一工作項的最佳機制。在一些實施例中,一旦習得用於工作項的最佳機制,則可在工作項的持續時間內使用所述最佳機制。替代地,一或多個運行時間學習模型708
及運行時間邏輯724
可繼續監視所應用機制的有效性且回應於一或多個改變的效能指標而改變機制。在一些實施例中,一或多個運行時間學習模型708
可藉由回歸分析、模糊邏輯、機器學習及/或類似者來實現。
在一些實施例中,可例如在硬體中的一或多個表中、在驅動層級處及/或類似者保存一或多個習得機制,因此具有類似行為的對應工作項的任何未來出現可利用在過去學習期間識別的一或多個最佳機制。
在一些實施例中,且視實施細節而定,此方法可在運行時間學習特定機制的有效性。
儘管流量控制器402
、流量控制器502
、流量控制器602
以及流量控制器702
可示出為單一單元,但其功能性可分佈於如上文關於圖1及圖2中所示的實施例所描述的不同組件當中。此外,流量控制器的功能性中的任一者可藉由如上文關於圖1及圖2中所示的實施例描述的硬體、軟體及/或其組合來實現。
關於圖4至圖7中所示的實施例以及本文中所描述的任何其他實施例描述的操作、組件、連接件、資料流及/或類似者為實例操作、組件、連接件、資料流及/或類似者。在一些實施例中,可省略此等元件中的一些且/或可包含其他元件。在一些實施例中,操作、組件、連接件、資料流及/或類似者的時間及/或空間次序可變化。此外,在一些實施例中,多個操作、組件、連接件、資料流及/或類似者可合併成單一元件,且/或單一操作、組件、連接件、資料流及/或類似者可分佈於多個元件當中。
顯示寫入期間的快取分配
在一些實施例中,顯示框緩衝器的寫入可分配LLC中的快取線,其可導致可由後續讀取使用的線的收回。因此,LLC中的讀取未命中可導致較高潛時及/或增大的DRAM流量。作為本文中所揭露的技術的實例實施方案,驅動器可識別用於此等工作量的最終工作項且在最終工作項正在執行時告知GPU硬體。作為特定最佳化,GPU硬體繼而可選擇不分配LLC中的顯示框緩衝器寫入,其可藉此減小DRAM流量、用於讀取的存取潛時以及呈現最終子框所需的週期。選擇性非分配的此技術可例如在基於圖案塊的架構以及即時模式呈現器中實現,在即時模式呈現器中,來自本地(GPU上)呈現標靶物的I/O可能更難以歸類。
工作項感知快取機制方法
圖8示出根據本揭露的處理GPU中的工作量的方法的實施例。方法可在操作802
處開始。在操作804
處,方法可偵測GPU中的工作量的工作項。在操作806
處,方法可判定用於工作項的快取機制。在操作808
處,方法可基於快取機制針對工作項的至少一部分操作GPU中的快取記憶體階層的至少一部分。方法可在操作810
處終止。
關於圖8中所示的實施例以及本文中所描述的任何其他實施例描述的操作及/或組件為實例操作及/或組件。在一些實施例中,可省略一些操作及/或組件,且/或可包含其他操作及/或組件。此外,在一些實施例中,操作及/或組件的時間及/或空間次序可變化。
儘管已在GPU的上下文中描述一些實施例,但本發明原理亦可應用於其他類型的處理系統。
圖9示出可與本揭露中所描述的方法或設備中的任一者整合的影像顯示裝置904
的實施例。顯示裝置904
可具有任何外觀尺寸,諸如PC的面板顯示器、膝上型電腦、行動裝置等、投射器、VR護目鏡等,且可基於任何成像技術以用於顯示具有像素的光柵化影像906
,所述成像技術諸如陰極射線管(cathode ray tube;CRT)、數位燈投射器(digital light projector;DLP)、發光二極體(light emitting diode;LED)、液晶顯示器(liquid crystal display;LCD)、有機LED(organic LED;OLED)、量子點等。
諸如圖像處理單元(GPU)的影像處理器910
及/或驅動器電路912
可處理影像及/或將影像轉換成可顯示於成像裝置904
上或經由成像裝置904
顯示的形式。影像906
的一部分經放大示出,因此像素908
可見。本揭露中所描述的方法或設備中的任一者可整合至成像裝置904
、處理器910
及/或顯示驅動器電路912
中以產生圖9中所示的像素908
及/或其群組。在一些實施例中,影像處理器910
可包含管線、快取階層及/或流量控制邏輯,所述管線、快取階層及/或流量控制邏輯可實現例如在積體電路911
上實現的一或多個工作項感知快取機制及本文中所描述的其他發明原理中的任一者。在一些實施例中,積體電路911
亦可包含驅動器電路912
及/或可實現顯示裝置904
的任何其他功能性的任何其他組件。
圖10示出根據本揭露的包含可實現工作項感知快取機制的GPU的系統單晶片(SOC)裝置的實施例。SOC1002
可包含中央處理單元1004 、
主記憶體1006 、
GPU1008
以及顯示驅動器1010
。GPU1008
可包含流量控制邏輯1012 、
管線1014
以及記憶體子系統1016
,其可例如以與上文關於圖1至圖2及圖4至圖7所描述的方式類似的方式實現,且其可實現本文中所揭露的工作項感知快取機制中的任一者,包含例如上文關於圖3及圖8所描述的彼等工作項感知快取機制。圖10中所示的SOC1002
可例如整合至諸如圖9中所示的實施例的影像顯示裝置中。
上文所揭露的實施例已在各種實施細節的上下文中加以描述,但本揭露的原理不限於此等或任何其他具體細節。舉例而言,一些功能性已描述為藉由某些組件實現,但在其他實施例中,所述功能性可分佈於不同位置中的不同系統及組件之間且具有各種使用者介面。某些實施例已經描述為具有特定過程、步驟等,但此等術語亦涵蓋其中特定過程、步驟等可藉由多個過程、步驟等實現或其中多個過程、步驟等可整合至單一過程、步驟等中的實施例。對組件或元件的提及可僅指組件或元件的一部分。在一些實施例中,判定亦可指至少部分地判定,偵測到可指至少部分地偵測到,且基於可指至少部分地基於。
在本揭露及申請專利範圍中,諸如「第一」及「第二」的術語的使用可僅出於區分其修飾的事物的目的,且除非自上下文另外顯而易見,否則可並不指示任何空間或時間次序。對第一事物的提及可能不暗示存在第二事物。為方便起見,可提供各種組織輔助手段,諸如章節標題及類似物,但根據此等輔助手段配置的主題及本揭露的原理不受此等組織輔助手段限制。
上文所描述的各種細節及實施例可經組合以產生根據此專利揭露內容的發明原理的額外實施例。由於可在不脫離本發明概念的情況下修改此專利揭露內容的發明原理的配置及細節,故將此等改變及修改視為落入以下申請專利範圍的範疇內。
102、202:圖像處理管線
104、204、1016:記憶體子系統
106、106A、106B、206、1012:流量控制邏輯
108:用戶端
110、210:記憶體請求
112:工作項偵測邏輯
114、408:機制選擇邏輯
116:學習邏輯
118、234、1006:主記憶體
120:快取記憶體階層
218:命令處理器
220:幾何單元
222:光柵處理器
224:著色器
226:紋理單元
228:L1快取
230:L2快取
232:L3快取
236:記憶體介面
238:其他資訊
240、410、610:輸入
242:工作項資訊
244、620:效能指標
246:額外資訊
248:額外效能指標
250:快取機制
302:API偵測操作
304:軟體驅動器偵測操作
306:硬體偵測操作
308、310、312、314、316、318、320、322、324、802、804、806、808、810:操作
402:流量控制器
404、504、604、704:分配層級邏輯
406、506、606、706:替換機制邏輯
412、612:快取機制
414:分配機制
416:輸出
418:替換機制
502、602、702:工作項感知流量控制器
508、608:離線學習靜態機制邏輯
622:選擇器
708:運行時間學習模型
724:運行時間邏輯
904:影像顯示裝置
906:光柵化影像
908:像素
910:影像處理器
911:積體電路
912:驅動器電路
1002:系統單晶片
1004:中央處理單元
1008:GPU
1010:顯示驅動器
1014:管線
圖式未必按比例繪製,且在整個圖式中,出於說明性目的,類似結構或功能的元件通常由相似附圖標號或其部分表示。圖式僅意欲促進對本文中所揭露的各種實施例的描述。圖式並不描述本文中所揭露的教示的每一態樣且並不限制申請專利範圍的範疇。附圖連同本說明書一起示出本揭露的實例實施例,且連同描述一起用以解釋本揭露的原理。
圖1示出根據本揭露的可實現工作項感知快取機制的系統的實施例。
圖2示出根據本揭露的可實現工作項感知快取機制的系統的實例實施例。
圖3示出根據本揭露的用於實現工作項感知快取機制的方法的實例實施例。
圖4示出根據本揭露的工作項感知流量控制器的實例實施例。
圖5示出根據本揭露的可基於離線學習實現靜態機制選擇的工作項感知流量控制器的實例實施例。
圖6示出根據本揭露的可基於效能指標及離線學習實現動態機制選擇的工作項感知流量控制器的實例實施例。
圖7示出根據本揭露的可基於效能指標及線上學習實現動態機制選擇的工作項感知流量控制器的實例實施例。
圖8示出根據本揭露的處理GPU中的工作量的方法的實施例。
圖9示出可與本揭露中所描述的方法或設備中的任一者整合的影像顯示裝置的實施例。
圖10示出根據本揭露的包含可實現工作項感知快取機制的GPU的系統單晶片(system-on-chip;SOC)裝置的實施例。
802、804、806、808、810:操作
Claims (20)
- 一種處理圖像處理單元(GPU)中的工作量的方法,所述方法包括: 偵測所述圖像處理單元中的所述工作量的工作項; 判定用於所述工作項的快取機制;以及 基於所述快取機制針對所述工作項的至少一部分操作所述圖像處理單元中的快取記憶體階層的至少一部分。
- 如請求項1所述的方法,其中基於自應用程式接收到的資訊偵測所述工作項。
- 如請求項1所述的方法,其中基於監視一或多個效能指標偵測所述工作項。
- 如請求項3所述的方法,其中所述一或多個效能指標中的至少一者藉由驅動器監視。
- 如請求項3所述的方法,其中所述一或多個效能指標中的至少一者藉由硬體偵測邏輯監視。
- 如請求項1所述的方法,其中基於來自用戶端的記憶體請求判定所述快取機制。
- 如請求項6所述的方法,其中所述記憶體請求包括工作項識別符(ID)。
- 如請求項1所述的方法,其中用於所述工作項的所述快取機制包括靜態快取機制。
- 如請求項1所述的方法,其中用於所述工作項的所述快取機制包括動態快取機制。
- 如請求項1所述的方法,其中基於所述工作項的身分標識判定用於所述工作項的所述快取機制。
- 如請求項10所述的方法,其中所述工作項的所述身分標識映射至所述快取機制。
- 如請求項1所述的方法,更包括: 監視一或多個效能指標; 其中基於所述一或多個效能指標判定用於所述工作項的所述快取機制。
- 如請求項12所述的方法,其中用於所述工作項的所述快取機制映射至所述一或多個效能指標。
- 如請求項1所述的方法,更包括: 監視一或多個效能指標; 其中基於所述工作項的身分標識與所述一或多個效能指標的組合判定用於所述工作項的所述快取機制。
- 如請求項1所述的方法,更包括: 監視一或多個效能指標;以及 基於所述一或多個效能指標改變用於所述工作項的所述快取機制。
- 如請求項12所述的方法,其中所述快取機制包括第一快取機制,所述方法更包括: 基於所述一或多個效能指標判定用於所述工作項的第二快取機制;以及 選擇用於所述工作項的所述第一快取機制或所述第二快取機制中的一者。
- 如請求項16所述的方法,其中基於運行時間學習模型選擇用於所述工作項的所述快取機制。
- 一種設備,包括: 圖像處理管線,包括一或多個用戶端; 快取記憶體階層,經組態以處理來自所述一或多個用戶端的記憶體請求;以及 機制選擇邏輯,經組態以: 判定用於所述一或多個用戶端中的至少一者的工作項的快取機制;以及 針對所述工作項的至少一部分將所述快取機制應用於所述快取記憶體階層的至少一部分。
- 如請求項18所述的設備,更包括經組態以偵測所述工作項的偵測邏輯。
- 一種記憶體子系統,包括: 記憶體介面; 快取記憶體階層,經組態以經由所述記憶體介面處理來自一或多個用戶端的記憶體請求;以及 機制選擇邏輯,經組態以: 判定用於所述一或多個用戶端中的至少一者的工作項的快取機制;以及 針對所述工作項的至少一部分將所述快取機制應用於所述快取記憶體階層的至少一部分。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063070254P | 2020-08-25 | 2020-08-25 | |
US63/070,254 | 2020-08-25 | ||
US17/146,491 US11610281B2 (en) | 2020-08-25 | 2021-01-11 | Methods and apparatus for implementing cache policies in a graphics processing unit |
US17/146,491 | 2021-01-11 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW202209249A true TW202209249A (zh) | 2022-03-01 |
Family
ID=80358752
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110119921A TW202209249A (zh) | 2020-08-25 | 2021-06-02 | 處理工作量的方法及設備、以及記憶體子系統 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11610281B2 (zh) |
KR (1) | KR20220026481A (zh) |
CN (1) | CN114119337A (zh) |
TW (1) | TW202209249A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI845409B (zh) * | 2023-09-07 | 2024-06-11 | 先智雲端數據股份有限公司 | 優化圖形處理單元利用率的方法和系統 |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7567252B2 (en) | 2003-12-09 | 2009-07-28 | Microsoft Corporation | Optimizing performance of a graphics processing unit for efficient execution of general matrix operations |
US7856530B1 (en) * | 2007-10-31 | 2010-12-21 | Network Appliance, Inc. | System and method for implementing a dynamic cache for a data storage system |
US9952977B2 (en) * | 2009-09-25 | 2018-04-24 | Nvidia Corporation | Cache operations and policies for a multi-threaded client |
US9330007B2 (en) * | 2012-11-30 | 2016-05-03 | Dell Products, Lp | Systems and methods for dynamic optimization of flash cache in storage devices |
US10757214B2 (en) * | 2013-12-20 | 2020-08-25 | Intel Corporation | Crowd sourced online application cache management |
US9275429B2 (en) * | 2014-02-17 | 2016-03-01 | Qualcomm Incorporated | Device hang detection and recovery |
US10067813B2 (en) * | 2014-11-21 | 2018-09-04 | Samsung Electronics Co., Ltd. | Method of analyzing a fault of an electronic system |
WO2016191569A1 (en) * | 2015-05-27 | 2016-12-01 | Google Inc. | Memory system architecture |
US10990409B2 (en) * | 2017-04-21 | 2021-04-27 | Intel Corporation | Control flow mechanism for execution of graphics processor instructions using active channel packing |
US10776699B2 (en) | 2017-05-05 | 2020-09-15 | Intel Corporation | Optimized compute hardware for machine learning operations |
US10482017B2 (en) * | 2017-09-29 | 2019-11-19 | Intel Corporation | Processor, method, and system for cache partitioning and control for accurate performance monitoring and optimization |
US10699369B2 (en) | 2017-12-27 | 2020-06-30 | Intel Corporation | Intelligent memory DVFS scheme exploiting graphics inter-frame level correlation |
US10360717B1 (en) | 2017-12-29 | 2019-07-23 | Intel Corporation | Method and apparatus for subdividing shader workloads in a graphics processor for efficient machine configuration |
US10580209B2 (en) | 2018-03-06 | 2020-03-03 | Qualcomm Incorporated | Removal of degenerated sub-primitives in tessellation |
US11151769B2 (en) | 2018-08-10 | 2021-10-19 | Intel Corporation | Graphics architecture including a neural network pipeline |
US10970816B2 (en) | 2018-08-13 | 2021-04-06 | Nvidia Corporation | Motion blur and depth of field reconstruction through temporally stable neural networks |
US10628910B2 (en) | 2018-09-24 | 2020-04-21 | Intel Corporation | Vertex shader with primitive replication |
US10748323B2 (en) | 2018-12-04 | 2020-08-18 | Intel Corporation | GPU based shader constant folding |
US10699475B1 (en) | 2018-12-28 | 2020-06-30 | Intel Corporation | Multi-pass apparatus and method for early termination of graphics shading |
US10839595B2 (en) | 2019-02-13 | 2020-11-17 | Intel Corporation | Apparatus and method for optimizing a hierarchical depth buffer |
-
2021
- 2021-01-11 US US17/146,491 patent/US11610281B2/en active Active
- 2021-06-02 TW TW110119921A patent/TW202209249A/zh unknown
- 2021-07-19 KR KR1020210094218A patent/KR20220026481A/ko active Search and Examination
- 2021-07-20 CN CN202110817038.8A patent/CN114119337A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20220067876A1 (en) | 2022-03-03 |
CN114119337A (zh) | 2022-03-01 |
US11610281B2 (en) | 2023-03-21 |
KR20220026481A (ko) | 2022-03-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8144149B2 (en) | System and method for dynamically load balancing multiple shader stages in a shared pool of processing units | |
US20160350154A1 (en) | Memory allocation in distributed memories for multiprocessing | |
US20070091088A1 (en) | System and method for managing the computation of graphics shading operations | |
US20090128575A1 (en) | Systems and Methods for Managing Texture Descriptors in a Shared Texture Engine | |
US7876328B2 (en) | Managing multiple contexts in a decentralized graphics processing unit | |
US8131931B1 (en) | Configurable cache occupancy policy | |
JP2013047950A (ja) | アプリケーションが決定したスケジューリングによる効率的なキャッシュの再利用 | |
US11714559B2 (en) | Efficient memory-semantic networking using scoped memory models | |
US20210026686A1 (en) | Chiplet-integrated machine learning accelerators | |
KR20240068738A (ko) | 플랫폼 리소스의 동적 할당 | |
KR20230127291A (ko) | 캐시 라인에 대한 누락 요청의 선택적 생성 | |
TW202209249A (zh) | 處理工作量的方法及設備、以及記憶體子系統 | |
US12067640B2 (en) | Dynamically reconfigurable register file | |
JP7308197B2 (ja) | アクセラレーテッド処理デバイスの帯域幅を増加させるための並列データ転送 | |
US11321241B2 (en) | Techniques to improve translation lookaside buffer reach by leveraging idle resources | |
US20230024130A1 (en) | Workload aware virtual processing units | |
KR20240063163A (ko) | 업스케일러 작업을 위한 플랫폼 리소스 선택 | |
CN112988364B (zh) | 一种动态的任务调度方法、装置及存储介质 | |
CN116762091A (zh) | 用于计算工作负载的栅格化的方法和装置 | |
CN115867899A (zh) | 在处理的同时选择性地写回脏高速缓存行 | |
US20240202862A1 (en) | Graphics and compute api extension for cache auto tiling | |
US20230418744A1 (en) | Live profile-driven cache aging policies | |
US12117939B2 (en) | Stochastic optimization of surface cacheability in parallel processing units | |
US20220197649A1 (en) | General purpose register hierarchy system and method | |
US20240202003A1 (en) | Inclusion of Dedicated Accelerators in Graph Nodes |