CN115867899A - 在处理的同时选择性地写回脏高速缓存行 - Google Patents
在处理的同时选择性地写回脏高速缓存行 Download PDFInfo
- Publication number
- CN115867899A CN115867899A CN202180048261.9A CN202180048261A CN115867899A CN 115867899 A CN115867899 A CN 115867899A CN 202180048261 A CN202180048261 A CN 202180048261A CN 115867899 A CN115867899 A CN 115867899A
- Authority
- CN
- China
- Prior art keywords
- cache line
- memory
- data
- dirty cache
- frame
- Prior art date
- Legal status (The legal status 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 status listed.)
- Pending
Links
Images
Classifications
-
- 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
- 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/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- 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
-
- 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/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0855—Overlapped cache accessing, e.g. pipeline
- G06F12/0857—Overlapped cache accessing, e.g. pipeline by multiple requestors
-
- 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/0888—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
-
- 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/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- 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
- 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
- G06F2212/1024—Latency reduction
-
- 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
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G2360/00—Aspects of the architecture of display systems
- G09G2360/12—Frame memory handling
- G09G2360/121—Frame memory handling using a cache memory
-
- G—PHYSICS
- G09—EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
- G09G—ARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
- G09G5/00—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
- G09G5/36—Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
- G09G5/39—Control of the bit-mapped memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Image Generation (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Image Processing (AREA)
Abstract
本发明涉及一种图形流水线(200),其包括具有高速缓存行(310至313)的高速缓存(207,305),这些高速缓存行被配置为存储在该图形流水线中处理帧所用的数据。该图形流水线使用处理器(115)来实现,该处理器使用存储在该高速缓存中的数据为该图形流水线处理帧。该处理器处理第一帧并且在处理该第一帧的同时将脏高速缓存行从该高速缓存写回到存储器(105)。该脏高速缓存行保留在该高速缓存中,并且在被写回该存储器之后被标记为干净。在一些情况下,该处理器生成指示基于系统存储器控制器处的读取命令占用率来写回该脏高速缓存行的优先级的提示(335)。
Description
背景技术
包括图形处理单元(GPU)的处理系统实现了高速缓存层级结构(或多级高速缓存),该高速缓存层级结构使用不同速度的高速缓存层级结构来存储被频繁访问的数据。被更加频繁请求的数据通常被高速缓存在相对高速的高速缓存(诸如L1高速缓存)中,该高速缓存在物理上(或逻辑上)更靠近处理器核心或计算单元部署。较高级别的高速缓存(诸如L2高速缓存、L3高速缓存等)存储较不频繁请求的数据。最后一级高速缓存(LLC)是最高级别(和最低访问速度)的高速缓存,并且LLC直接从系统存储器读取数据并直接将数据写入到系统存储器。高速缓存与存储器不同,因为它们响应于需要写入到高速缓存行的新数据而实现高速缓存替换策略以替换高速缓存行中的数据。例如,最近最少使用(LRU)策略通过驱逐LRU高速缓存行中的数据并且将新数据写入LRU高速缓存行来替换在最长时间间隔内未被访问的高速缓存行中的数据。GPU逐帧地处理数据,例如,GPU中的图形流水线一次渲染一帧。因此,用于高速缓存图形流水线的数据的高速缓存层级结构在一帧结束时并且在后续帧开始之前从高速缓存中驱逐脏数据。驱逐脏数据需要将脏高速缓存行写回到系统存储器,这消耗大量的带宽并且导致高速缓存分级结构和系统存储器之间的流量出现瓶颈。由于用于将新数据读取到干净高速缓存行中并且将脏高速缓存行写回到系统存储器的带宽受限,这些瓶颈在后续帧开始时对GPU的性能产生重大影响。
发明内容
根据一些实施方案,一种装置包括高速缓存,该高速缓存包括被配置为存储在图形流水线中处理帧所用的数据的高速缓存行。该装置还包括实现图形流水线的处理器,其中该处理器被配置为处理第一帧并且在处理第一帧的同时将脏高速缓存行从高速缓存写回到存储器,其中脏高速缓存行中的数据保留在高速缓存中并且在被写回到存储器之后被标记为干净。该装置还可以具有以下方面中的一个或任何组合:该处理器被配置为基于系统存储器控制器(SMC)处的读取命令占用率将脏高速缓存行选择性地写回到存储器;该处理器被配置为响应于读取命令占用率小于第一阈值而将脏高速缓存行中的数据传输到SMC,其中该SMC被配置为将从处理器接收的数据写回到存储器;该处理器被配置为响应于读取命令占用率大于第一阈值且小于第二阈值而将脏高速缓存行中的数据以指示将数据写回到存储器是低优先级的提示传输到SMC;该SMC被配置为响应于接收到提示而在将数据写回到存储器之前提供未决的读取请求;该处理器被配置为响应于读取命令占用率大于第二阈值而绕过将脏高速缓存行中的数据传输到SMC。该装置还可以包括以下方面中的一个或任何组合:处理器被配置为响应于脏高速缓存行被标记为干净而在从第一帧到第二帧的转换期间绕过将脏高速缓存行写回到存储器;并且该处理器被配置为响应于完成第一帧的处理并发起第二帧的处理而写回未被标记为干净的脏高速缓存行中的数据。
根据一些实施方案,一种方法包括使用存储在与图形流水线相关联的高速缓存的高速缓存行中的数据在图形流水线中处理第一帧。该方法还包括在处理第一帧的同时将脏高速缓存行从高速缓存写回到存储器,并且将脏高速缓存行中的数据保留在高速缓存中。该方法还包括在脏高速缓存行被写回到存储器之后将脏高速缓存行标记为干净。该方法还可以具有以下方面中的一个或任何组合:其中写回脏高速缓存行包括基于系统存储器控制器(SMC)处的读取命令占用率将脏高速缓存行选择性地写回到存储器;其中写回脏高速缓存行包括响应于读取命令占用率小于第一阈值,将脏高速缓存行中的数据传输到SMC;该方法还包括将从SMC接收的数据写回到存储器;写回脏高速缓存行包括响应于读取命令占用率大于第一阈值且小于第二阈值而将脏高速缓存行中的数据以指示将数据写回到存储器是低优先级的提示传输到SMC;该方法还包括响应于接收到该提示而在将数据写回到存储器之前在SMC处提供未决的读取请求;其中选择性地将脏高速缓存行写回到存储器包括响应于读取命令占用率大于第二阈值而绕过将脏高速缓存行中的数据传输到SMC;该方法还包括响应于脏高速缓存行被标记为干净而在从第一帧到第二帧的转换期间绕过将脏高速缓存行写回到存储器;或该方法还包括响应于完成第一帧的处理并且发起第二帧的处理而写回未被标记为干净的脏高速缓存行中的数据。
根据一些实施方案,一种装置包括被配置为实现图形流水线的一组计算单元,并且还包括在与该组计算单元相关联的高速缓存层级结构中的最后一级高速缓存(LLC),其中计算单元被配置为在基于存储在脏高速缓存行中的数据处理第一帧的同时将脏高速缓存行从LLC写回到存储器,并且其中脏高速缓存行在被写回到存储器之后被标记为干净。装置还可以具有以下方面中的一个或任何组合:计算单元被配置为基于系统存储器控制器(SMC)的读取命令占用率来确定将脏高速缓存行从LLC写回到存储器的优先级;或者计算单元被配置为响应于脏高速缓存行被标记为干净而在从第一帧到第二帧的转换期间绕过将脏高速缓存行写回到存储器,并且其中计算单元被配置为响应于完成第一帧的处理并且发起第二帧的处理而写回未标记为干净的脏高速缓存行中的数据。
附图说明
通过参考附图,本公开被更好地理解,并且其许多特征和优点对于本领域技术人员是显而易见的。在不同附图中使用相同的附图标记表示类似或相同的项目。
图1是根据一些实施方案的在处理的同时选择性地写回脏高速缓存行的处理系统的框图。
图2描绘了根据一些实施方案的被配置为处理高阶几何图元以便以预先确定的分辨率生成三维(3D)场景的光栅化图像的图形流水线。
图3是根据一些实施方案的存储器系统的一部分的框图。
图4是根据一些实施方案的在使用高速缓存中的数据处理帧的同时选择性地写回脏高速缓存行的方法的流程图。
具体实施方式
图1至图4公开了用于在图形处理单元(GPU)中的帧转换期间通过以下方法减少最后一级高速缓存(LLC)和系统存储器之间的可用带宽瓶颈的系统和技术:基于指示系统存储器的未决的读取命令的数量的读取命令占用率选择性地写回LLC的脏高速缓存行中的数据。写回到系统存储器的数据被保留在脏高速缓存行中,这些脏高速缓存行被标记为指示所标记的高速缓存行中的数据已经被写回到系统存储器,因此例如在从第一帧到第二帧的过渡期间,所标记的高速缓存行可被视为干净的高速缓存行。在一些实施方案中,通过将读取命令占用率与一个或多个阈值进行比较而将脏高速缓存行选择性地写回到系统存储器。例如,如果读取命令占用率小于第一阈值,则将脏高速缓存行中的数据传输到将数据写回到系统存储器的系统存储器控制器(SMC)。如果读取命令占用率大于第二阈值(第二阈值大于第一阈值),则以指示将数据写回到系统存储器是低优先级的提示向SMC发送将脏高速缓存行写回到系统存储器的请求。因此,SMC在执行对系统存储器的低优先级写入之前提供未决的读取请求。如果读取命令占用率大于第三阈值(其大于第二阈值),则不向SMC传输将脏高速缓存行写回到系统存储器的请求。
图1是根据一些实施方案的在处理的同时选择性地生成写回脏高速缓存行的处理系统100的框图。处理系统100包括或可访问使用非暂态计算机可读介质诸如动态随机存取存储器(DRAM)实现的存储器105或其他存储部件。然而,在一些情况下,存储器105使用其他类型的存储器(包括静态随机存取存储器(SRAM)、非易失性RAM等)来实现。存储器105被称为外部存储器,因为它是在处理系统100中实现的处理单元的外部实现的。处理系统100还包括总线110以支持处理系统100诸如存储器105中实现的实体之间的通信。处理系统100的一些实施方案包括其他总线、桥接件、交换机、路由器等,其在清楚的情况下未在图1中示出。
在不同的实施方案中,本文中描述的技术用于多种并行处理器(例如,向量处理器、图形处理单元(GPU)、通用GPU(GPGPU)、非标量处理器、高度并行处理器、人工智能(AI)处理器、推理引擎、机器学习处理器、其他多线程处理单元等)中的任一种处理器。图1示出了根据一些实施方案的并行处理器,特别是图形处理单元(GPU)115的示例。图形处理单元(GPU)115渲染用于在显示器120上呈现的图像。例如,GPU115渲染对象以产生提供给显示器120的像素值,该显示器使用像素值来显示表示所渲染对象的图像。GPU 115实现并发或并行地执行指令的多个计算单元(CU)121、122、123(本文中统称为“计算单元121至123”)。在一些实施方案中,计算单元121至123包括一个或多个单指令多数据(SIMD)单元并且计算单元121至123被聚集到工作组处理器、着色器阵列、着色器引擎等中。在GPU 115中实现的计算单元121至123的数量是设计选择的问题,并且GPU 115的一些实施方案包括比图1所示更多或更少的计算单元。计算单元121至123可用于实现图形流水线,如本文所讨论的。GPU115的一些实施方案用于通用计算。GPU 115执行指令(诸如存储在存储器105中的程序代码125),并且GPU 115将信息(诸如所执行指令的结果)存储在存储器105中。
处理系统100还包括连接到总线110的中央处理单元(CPU)130,并且因此经由总线110与GPU 115和存储器105通信。CPU 130实现并发或并行地执行指令的多个处理器核心131、132、133(本文统称为“处理器核心131至133”)。在CPU 130中实现的处理器核心131至133的数量是设计选择的问题,并且一些实施方案包括比图1所示更多或更少的处理器核心。处理器核心131至133执行指令(诸如存储在存储器105中的程序代码135),并且CPU 130将信息(诸如所执行指令的结果)存储在存储器105中。CPU 130还能够通过向GPU 115发出绘制调用来发起图形处理。CPU 130的一些实施方案实现同时或并行地执行指令的多个处理器核心(为了清楚起见图1中未示出)。
输入/输出(I/O)引擎145处理与显示器120以及处理系统100的其他元件(诸如,键盘、鼠标、打印机、外部盘等)相关联的输入或输出操作。I/O引擎145被耦接到总线110,使得I/O引擎145与存储器105、GPU115或CPU 130通信。在例示的实施方案中,I/O引擎145读取存储在外部存储部件150上的信息,该外部存储部件使用非暂态计算机可读介质,诸如光盘(CD)、数字视频盘(DVD)等来实现。I/O引擎145还能够将信息写入外部存储部件150,诸如GPU 115或CPU 130的处理结果。
在例示的实施方案中,GPU 115中的计算单元121至123包括(或关联于)一个或多个高速缓存151、152、153,该一个或多个高速缓存在本文中统称为“高速缓存151至153”。高速缓存151至153可以包括L1高速缓存、L2高速缓存、L3高速缓存或高速缓存层级结构中的其他高速缓存。高速缓存151至153的部分用于实现在计算单元121至123上执行的图形流水线的纹理高速缓存。在例示的实施方案中,高速缓存151至153是(或包括)最后一级高速缓存(LLC),它们是高速缓存分级结构中的最高级高速缓存。因此,数据被直接从存储器105读取到高速缓存151至153中,并且数据被直接从高速缓存151至153读回到存储器105中。
处理系统100还包括从处理系统中的实体接收存储器访问请求的系统存储器控制器(SMC)155。SMC 155使用存储在存储器105中的数据来提供存储器访问请求。在例示的实施方案中,计算单元121至123在图形流水线中处理帧。帧的处理包括将数据写入高速缓存151至153中的一个或多个高速缓存中的高速缓存行。包括由计算单元121至123写入但尚未写回到存储器105的数据的高速缓存行被称为“脏”高速缓存行。在由计算机121至123处理的帧之间的转换期间,将脏高速缓存行从高速缓存151至153中驱逐。驱逐该脏高速缓存行包括将脏高速缓存行中的数据写回到存储器105。然而,驱逐高速缓存151至153中的所有脏高速缓存行所需的带宽和处理功率可显著降低可用于开始为新帧将数据提取到高速缓存151至153中并且处理数据的带宽和处理功率。
为了解决这个问题,计算单元121至123在处理对应的帧的同时将一个或多个脏高速缓存行从高速缓存151至153写回到存储器105。已经写回到存储器105的脏高速缓存行也被保留在高速缓存151至153中,使得脏高速缓存行中的数据可供当前帧的处理使用。然而,脏高速缓存行在被写回到存储器之后被标记为干净,使得脏高速缓存行在帧之间的转换期间不必被写回到存储器,从而在转换期间节省存储器带宽和处理功率。在一些情况下,计算单元121至123生成指示基于SMC 155处的读取命令占用率来写回脏高速缓存行的优先级的提示。
图2描绘了根据一些实施方案的被配置为处理高阶几何图元以便以预先确定的分辨率生成三维(3D)场景的光栅化图像的图形流水线200。图形流水线200是在图1所示的处理系统100的一些实施方案中实现的。图形流水线200的所示出的实施方案根据DX11规范来实现。图形流水线200的其他实施方案根据其他应用程序编程接口(API)诸如Vulkan、Metal、DX12等来实现。图形流水线200被细分成包括图形流水线200在光栅化之前的部分的几何部分201和包括图形流水线200在光栅化之后的部分的像素处理部分202。
图形流水线200可访问存储资源205,诸如用于实现缓冲器并且存储顶点数据、纹理数据等的一个或多个存储器或高速缓存存储器的层级结构。在例示的实施方案中,存储资源205包括用于存储数据的本地数据存储(LDS)206电路和用于在图形流水线200渲染期间高速缓存频繁使用的数据的高速缓存207。使用图1所示的系统存储器105的一些实施方案来实现存储资源205。如本文所讨论的,在使用脏高速缓存行中的数据处理帧来节省图形流水线200中的存储器带宽的同时,高速缓存207中的脏高速缓存行被选择性地写回到系统存储器。
输入汇编程序210从存储资源205访问用于定义表示场景的模型的部分的对象的信息。图元的示例在图2中被示出为三角形211,但在图形流水线200的一些实施方案中处理其他类型的图元。三角形203包括由一个或多个边214连接的一个或多个顶点212(为了清楚起见,在图2中仅示出了每个边中的一个边)。顶点212在图形流水线200的几何处理部分201期间被着色。
在例示的实施方案中以软件实现的顶点着色器215在逻辑上接收图元的单个顶点212作为输入并且输出单个顶点。着色器诸如顶点着色器215的一些实施方案实现大规模单指令多数据(SIMD)处理,使得同时处理多个顶点。图形流水线200实现统一着色器模型,使得图形流水线200中所包括的所有着色器在共享大规模SIMD计算单元上具有相同的执行平台。因此,包括顶点着色器215的着色器因此使用本文称为统一着色器池216的公共资源集来实现。
外壳着色器218对用于定义输入补丁的输入高阶补丁或控制点进行操作。外壳着色器218输出镶嵌因子和其他补丁数据。在一些实施方案中,由外壳着色器218生成的图元被提供给镶嵌器220。镶嵌器220从外壳着色器218接收对象(诸如补丁),并且例如通过基于由外壳着色器218提供给镶嵌器220的镶嵌因子来镶嵌输入对象来生成标识对应于输入对象的图元的信息。镶嵌将输入的高阶图元(诸如补丁)细分为一组低阶输出图元,该组低阶输出图元表示更精细的细节级别,例如,如指定由镶嵌过程产生的图元粒度的镶嵌因子所指示的那样。因此,场景的模型由较少数量的较高阶图元表示(以节省存储器或带宽),并且通过对较高阶图元进行镶嵌来添加附加的细节。
域着色器224输入域位置和(任选地)其他补丁数据。域着色器224对所提供的信息进行操作,并且基于输入域位置和其他信息生成用于输出的单个顶点。在例示的实施方案中,域着色器224基于三角形211和镶嵌因子生成图元222。几何着色器226接收输入图元并且输出由几何着色器226基于输入图元生成的多达四个图元。在例示的实施方案中,几何着色器226基于镶嵌式图元222生成输出图元228。
一个图元流被提供给一个或多个扫描转换器230,并且在一些实施方案中,多达四个图元流被级联到存储资源205中的缓冲器。扫描转换器230执行着色操作和其他操作,诸如裁剪、透视划分、剪切和视口选择等。扫描转换器230生成一组232像素,该组像素随后在图形流水线200的像素处理部分202中被处理。
在例示的实施方案中,像素着色器234输入像素流(例如,包括像素组232)并且响应于输入像素流而输出零或另一像素流。输出合并块236对从像素着色器234接收的像素执行混合、深度、模板或其他操作。
图形流水线200中的一些或所有着色器使用存储在存储资源205中的纹理数据执行纹理映射。例如,像素着色器234可以从存储资源205读取纹理数据并且使用纹理数据来对一个或多个像素进行着色。然后将着色的像素提供给显示器以呈现给用户。如本文所讨论的,图形流水线200中的着色器所使用的纹理数据是使用高速缓存207来高速缓存的。在使用高速缓存207中的数据处理图形流水线200中的帧的同时写回高速缓存207中的脏高速缓存行。
图3是根据一些实施方案的存储器系统300的一部分的框图。存储器系统300是在图1所示的处理系统100和图2所示的图形流水线200的一些实施方案中实现的。存储器系统300包括高速缓存305,该高速缓存包括高速缓存行310、311、312、313,这些高速缓存行在本文中统称为“高速缓存行310至313”。使用向SMC 330发送请求325的读取/写入电路320将图形流水线所使用的数据提取到高速缓存行310至313中的一个或多个高速缓存行中。SMC330通过从对应的存储器获取所请求的数据并且将所请求的数据提供给读取/写入电路320来提供请求325,该读取/写入电路系统将所请求的数据写入到高速缓存行310至313中的一个高速缓存行。
在图形流水线中正在处理的帧之间的转换期间,读取/写入电路320经由SMC 330将脏高速缓存行310至313中的数据写回到存储器。读取/写入电路320还在使用高速缓存305中的数据处理帧的同时经由SMC 330将脏高速缓存行310至313中的一些脏高速缓存行中的数据写回到存储器。脏高速缓存行310至313中的数据被保留在高速缓存305中,并且脏高速缓存行310至313被标记以指示数据已被写回。因此,脏高速缓存行310至313被视为在帧之间的转换期间不需要写回到存储器的干净的高速缓存行。在例示的实施方案中,高速缓存305包括与高速缓存行310至313相关联的状态标记335。状态标记335指示高速缓存行310和313是干净的(即,高速缓存行310和313中的数据在处理期间未被修改,并且因此对应于当前存储在存储器中相关联的地址的数据),并且高速缓存行311是脏的(即,高速缓存行311中的数据在处理期间已被修改但尚未写回到存储器)。状态标记335还指示高速缓存行312处于干净/写回(干净/WB)状态,这指示高速缓存行312是脏的,但高速缓存行312中的数据已被写回到存储器,因此在帧转换期间它可以被视为干净的高速缓存行。
在一些实施方案中,读取/写入电路320包括带有请求325的提示以指示与从脏高速缓存行写回数据的请求相关联的优先级。该提示是基于读取命令占用率,即,SMC 330中的包括尚未由SMC 330提供的未决的读取命令的队列或缓冲器的占用率来确定的。如果读取命令占用率相对较低,则提示指示应尽可能快地提供将数据从脏高速缓存行写入回到存储器的请求325。然而,如果读取命令占用率相对较高,则提示指示请求325具有相对较低的优先级。因此,SMC 330提供未决的读取命令(而不是低优先级写入请求325),直到读取命令占用率下降到阈值以下。如果读取命令占用率高于最大阈值,则读取/写入电路320绕过请求325的传输以写回脏高速缓存行310至313中的信息。
图4是根据一些实施方案的在使用高速缓存中的数据处理帧的同时选择性地写回脏高速缓存行的方法400的流程图。方法400是在图1所示的处理系统100、图2所示的图形流水线200和图3所示的存储器系统300的一些实施方案中实现的。
在框405处,读取/写入电路确定在包括高速缓存的存储器子系统中的SMC处的读取命令占用率。读取命令占用率指示用于在SMC处保持未决的读取命令的队列或缓冲器已满。
在决策框410处,读取/写入电路确定读取命令占用率是否小于第一阈值。如果是,则方法400前进至框415,并且读取/写入电路发送对高速缓存中的一个或多个脏高速缓存行中的SMC写回数据的请求。如果读取命令占用率大于第一阈值,则方法400前进至决策框420。
在决策框420处,读取/写入电路确定读取命令占用率是否大于第一阈值且小于第二阈值,第二阈值大于第一阈值。如果是,则方法400前进至框425并且读取/写入电路请求SMC写回高速缓存中的一个或多个脏高速缓存行中的数据。这些请求包括提示,该提示指示写回数据的请求的优先级低于继续处理读取命令队列或缓冲器中的请求的优先级。如果读取命令占用率大于第二阈值,则方法400前进至框430,并且读取/写入电路绕过向SMC传输写回脏高速缓存行的请求(即,绕过写回脏高速缓存行)。
计算机可读存储介质可以包括在使用期间可由计算机系统访问以向计算机系统提供指令和/或数据的任何非暂态存储介质或非暂态存储介质的组合。此类存储介质可以包括但不限于光学介质(例如,光盘(CD)、数字通用光盘(DVD)、蓝光光盘)、磁性介质(例如,软盘、磁带或磁性硬盘驱动器)、易失性存储器(例如,随机存取存储器(RAM)或高速缓冲存储器)、非易失性存储器(例如,只读存储器(ROM)或闪存存储器)、或基于微机电系统(MEMS)的存储介质。计算机可读存储介质可以嵌入计算系统(例如,系统RAM或ROM)中,固定地附接到计算系统(例如,磁性硬盘驱动器),可移除地附接到计算系统(例如,光盘或基于通用串行总线(USB)的闪存存储器),或者经由有线或无线网络(例如,网络可访问存储装置(NAS))耦接到计算机系统。
在一些实施方案中,上述技术的某些方面可以由执行软件的处理系统的一个或多个处理器实现。软件包括可执行指令的一个或多个集合,该可执行指令存储在或以其他方式有形地体现在非暂态计算机可读存储介质上。软件可包括指令和某些数据,这些指令和数据在由一个或多个处理器执行时操纵一个或多个处理器以执行上述技术的一个或多个方面。非暂态计算机可读存储介质可包括例如磁盘或光盘存储设备、固态存储设备诸如闪存存储器、高速缓冲存储器、随机存取存储器(RAM)或其他一个或多个非易失性存储器设备等。存储在非暂态计算机可读存储介质上的可执行指令可以是源代码、汇编语言代码、目标代码、或者被一个或多个处理器解释或以其他方式执行的其他指令格式。
应当注意,并非以上在一般描述中描述的所有活动或元件都是必需的,特定活动或设备的一部分可能不是必需的,并且可以执行一个或多个另外的活动,或者除了所描述的那些之外还包括元件。更进一步地,列出活动的顺序不一定是执行它们的顺序。另外,已经参考具体实施方案描述了这些概念。然而,本领域普通技术人员理解,在不脱离如以下权利要求中阐述的本公开的范围的情况下,可以进行各种修改和改变。因此,说明书和附图被认为是说明性的而非限制性的,并且所有此类修改旨在被包括在本公开的范围内。
上文已经关于具体实施方案描述了益处、其他优点和问题的解决方案。然而,益处、优点、问题的解决方案以及可以导致任何益处、优点或解决方案出现或变得更显著的任何特征不应被解释为任何或所有权利要求的关键的、必需的或基本的特征。此外,上文公开的特定实施方案仅是说明性的,因为所公开的主题可以以受益于本文中的教导内容的本领域的技术人员显而易见的不同但等效的方式来修改和实践。除了以下权利要求书中所描述的之外,不旨在对本文所示的构造或设计的细节进行限制。因此,显而易见的是,可以改变或修改上文公开的特定实施方案,并且所有此类变化被认为是在所公开的主题的范围内。因此,本文寻求的保护如以下权利要求中所阐述。
Claims (20)
1.一种设备,包括:
高速缓存,所述高速缓存包括被配置为存储在图形流水线中处理帧所用的数据的高速缓存行;以及
处理器,所述处理器实现所述图形流水线,其中所述处理器被配置为处理第一帧并且在处理所述第一帧的同时将脏高速缓存行从所述高速缓存写回到存储器,其中所述脏高速缓存行中的数据被保留在所述高速缓存中并且在被写回到所述存储器之后被标记为干净。
2.根据权利要求1所述的装置,其中所述处理器被配置为基于系统存储器控制器(SMC)处的读取命令占用率来选择性地将所述脏高速缓存行写回到所述存储器。
3.根据权利要求2所述的装置,其中所述处理器被配置为响应于所述读取命令占用率小于第一阈值而将所述脏高速缓存行中的数据传输到所述SMC,其中所述SMC被配置为将从所述处理器接收的所述数据写回到所述存储器。
4.根据权利要求3所述的装置,其中所述处理器被配置为响应于所述读取命令占用率大于所述第一阈值且小于第二阈值而将所述脏高速缓存行中的所述数据以指示将所述数据写回到所述存储器是低优先级的提示传输到所述SMC。
5.根据权利要求4所述的装置,其中所述SMC被配置为响应于接收到所述提示而在将所述数据写回到所述存储器之前提供未决的读取请求。
6.根据权利要求5所述的装置,其中所述处理器被配置为响应于所述读取命令占用率大于所述第二阈值而绕过将所述脏高速缓存行中的所述数据传输到所述SMC。
7.根据权利要求1所述的装置,其中所述处理器被配置为响应于所述脏高速缓存行被标记为干净而在从所述第一帧到第二帧的转换期间绕过将所述脏高速缓存行写回到所述存储器。
8.根据权利要求7所述的装置,其中所述处理器被配置为响应于完成所述第一帧的处理并且发起第二帧的处理而写回未被标记为干净的脏高速缓存行中的数据。
9.一种方法,包括:
使用存储在与图形流水线相关联的高速缓存的高速缓存行中的数据在所述图形流水线中处理第一帧;
在处理所述第一帧的同时将脏高速缓存行从所述高速缓存写回到存储器;
将所述脏高速缓存行中的所述数据保留在所述高速缓存中;以及
在所述脏高速缓存行被写回到所述存储器之后将所述脏高速缓存行标记为干净。
10.根据权利要求9所述的方法,其中写回所述脏高速缓存行包括基于系统存储器控制器(SMC)处的读取命令占用率将所述脏高速缓存行选择性地写回到所述存储器。
11.根据权利要求10所述的方法,其中写回所述脏高速缓存行包括响应于所述读取命令占用率小于第一阈值,将所述脏高速缓存行中的数据传输到所述SMC。
12.根据权利要求11所述的方法,还包括:
将从所述SMC接收的所述数据写回到所述存储器。
13.根据权利要求11或权利要求12所述的方法,其中写回所述脏高速缓存行包括响应于所述读取命令占用率大于所述第一阈值且小于第二阈值而将所述脏高速缓存行中的所述数据以指示将所述数据写回到所述存储器是低优先级的提示传输到所述SMC。
14.根据权利要求13所述的方法,还包括:
响应于接收到所述提示,在将所述数据写回到所述存储器之前在所述SMC处提供未决的读取请求。
15.根据权利要求14所述的方法,其中选择性地将所述脏高速缓存行写回到所述存储器包括响应于所述读取命令占用率大于所述第二阈值而绕过将所述脏高速缓存行中的所述数据传输到所述SMC。
16.根据权利要求9的方法,还包括:
响应于所述脏高速缓存行被标记为干净而在从所述第一帧到第二帧的转换期间绕过将所述脏高速缓存行写回到所述存储器。
17.根据权利要求16所述的方法,还包括:
响应于完成所述第一帧的处理并且发起第二帧的处理而写回未被标记为干净的脏高速缓存行中的数据。
18.一种设备,包括:
一组计算单元,所述一组计算单元被配置为实现图形流水线;以及
在与所述一组计算单元相关联的高速缓存层级结构中的最后一级高速缓存(LLC),其中所述计算单元被配置为在基于存储在所述脏高速缓存行中的数据处理第一帧的同时将脏高速缓存行从所述LLC写回到存储器,并且其中所述脏高速缓存行在被写回到所述存储器之后被标记为干净。
19.根据权利要求18所述的装置,其中所述计算单元被配置为基于系统存储器控制器(SMC)的读取命令占用率来确定将所述脏高速缓存行从所述LLC写回到所述存储器的优先级。
20.根据权利要求18所述的装置,其中所述计算单元被配置为响应于所述脏高速缓存行被标记为干净而在从所述第一帧到第二帧的转换期间绕过将脏高速缓存行写回到所述存储器,并且其中所述计算单元被配置为响应于完成所述第一帧的处理并且发起第二帧的处理而写回未标记为干净的脏高速缓存行中的数据。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063041337P | 2020-06-19 | 2020-06-19 | |
US63/041,337 | 2020-06-19 | ||
US17/128,388 | 2020-12-21 | ||
US17/128,388 US11562459B2 (en) | 2020-06-19 | 2020-12-21 | Selectively writing back dirty cache lines concurrently with processing |
PCT/US2021/037363 WO2021257524A1 (en) | 2020-06-19 | 2021-06-15 | Selectively writing back dirty cache lines concurrently with processing |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115867899A true CN115867899A (zh) | 2023-03-28 |
Family
ID=79023750
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180048261.9A Pending CN115867899A (zh) | 2020-06-19 | 2021-06-15 | 在处理的同时选择性地写回脏高速缓存行 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11562459B2 (zh) |
EP (1) | EP4168898A1 (zh) |
JP (1) | JP2023530428A (zh) |
KR (1) | KR20230035326A (zh) |
CN (1) | CN115867899A (zh) |
WO (1) | WO2021257524A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9912957B1 (en) * | 2017-04-01 | 2018-03-06 | Intel Corporation | Lossless compression for multisample render targets alongside fragment compression |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6553460B1 (en) * | 1999-10-01 | 2003-04-22 | Hitachi, Ltd. | Microprocessor having improved memory management unit and cache memory |
US20130346699A1 (en) * | 2012-06-26 | 2013-12-26 | William L. Walker | Concurrent access to cache dirty bits |
US8627007B1 (en) * | 2009-10-28 | 2014-01-07 | Juniper Networks, Inc. | Use of cache to reduce memory bandwidth pressure with processing pipeline |
US20140122809A1 (en) * | 2012-10-30 | 2014-05-01 | Nvidia Corporation | Control mechanism for fine-tuned cache to backing-store synchronization |
US20170018247A1 (en) * | 2015-07-15 | 2017-01-19 | Apple Inc. | Idle frame compression without writeback |
US20170150159A1 (en) * | 2015-11-20 | 2017-05-25 | Intel Corporation | Method and system of reference frame caching for video coding |
US20190243780A1 (en) * | 2019-04-10 | 2019-08-08 | Vinodh Gopal | Scalable application-customized memory compression |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105786717B (zh) | 2016-03-22 | 2018-11-16 | 华中科技大学 | 软硬件协同管理的dram-nvm层次化异构内存访问方法及系统 |
US10599578B2 (en) | 2016-12-13 | 2020-03-24 | Advanced Micro Devices, Inc. | Dynamic cache bypassing |
US20190102324A1 (en) | 2017-09-29 | 2019-04-04 | Intel Corporation | Cache behavior for secure memory repartitioning systems |
US10713165B2 (en) | 2018-02-12 | 2020-07-14 | Wisconsin Alumni Research Foundation | Adaptive computer cache architecture |
-
2020
- 2020-12-21 US US17/128,388 patent/US11562459B2/en active Active
-
2021
- 2021-06-15 CN CN202180048261.9A patent/CN115867899A/zh active Pending
- 2021-06-15 EP EP21826998.3A patent/EP4168898A1/en active Pending
- 2021-06-15 JP JP2022576399A patent/JP2023530428A/ja active Pending
- 2021-06-15 WO PCT/US2021/037363 patent/WO2021257524A1/en unknown
- 2021-06-15 KR KR1020237002424A patent/KR20230035326A/ko unknown
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6553460B1 (en) * | 1999-10-01 | 2003-04-22 | Hitachi, Ltd. | Microprocessor having improved memory management unit and cache memory |
US8627007B1 (en) * | 2009-10-28 | 2014-01-07 | Juniper Networks, Inc. | Use of cache to reduce memory bandwidth pressure with processing pipeline |
US20130346699A1 (en) * | 2012-06-26 | 2013-12-26 | William L. Walker | Concurrent access to cache dirty bits |
US20140122809A1 (en) * | 2012-10-30 | 2014-05-01 | Nvidia Corporation | Control mechanism for fine-tuned cache to backing-store synchronization |
US20170018247A1 (en) * | 2015-07-15 | 2017-01-19 | Apple Inc. | Idle frame compression without writeback |
US20170150159A1 (en) * | 2015-11-20 | 2017-05-25 | Intel Corporation | Method and system of reference frame caching for video coding |
US20190243780A1 (en) * | 2019-04-10 | 2019-08-08 | Vinodh Gopal | Scalable application-customized memory compression |
Also Published As
Publication number | Publication date |
---|---|
EP4168898A1 (en) | 2023-04-26 |
JP2023530428A (ja) | 2023-07-18 |
WO2021257524A1 (en) | 2021-12-23 |
KR20230035326A (ko) | 2023-03-13 |
US20210398242A1 (en) | 2021-12-23 |
US11562459B2 (en) | 2023-01-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101121487B1 (ko) | 멀티-클래스 데이터 캐시 정책들 | |
US8704826B1 (en) | Primitive re-ordering between world-space and screen-space pipelines with buffer limited processing | |
US6891543B2 (en) | Method and system for optimally sharing memory between a host processor and graphics processor | |
US20180024938A1 (en) | Allocating physical pages to sparse data sets in virtual memory without page faulting | |
US8131931B1 (en) | Configurable cache occupancy policy | |
US8504773B1 (en) | Storing dynamically sized buffers within a cache | |
US11720499B2 (en) | Selective generation of miss requests for cache lines | |
CN111052172A (zh) | 使用压缩元数据的纹理驻留检查 | |
US20230169728A1 (en) | Throttling hull shaders based on tessellation factors in a graphics pipeline | |
US11562459B2 (en) | Selectively writing back dirty cache lines concurrently with processing | |
US11295507B2 (en) | Spatial partitioning in a multi-tenancy graphics processing unit | |
US10956338B2 (en) | Low latency dirty RAM for cache invalidation speed improvement | |
US20230195639A1 (en) | Stochastic optimization of surface cacheability in parallel processing units | |
US8874844B1 (en) | Padding buffer requests to avoid reads of invalid data | |
US11710207B2 (en) | Wave throttling based on a parameter buffer | |
US20230206380A1 (en) | Optimizing partial writes to compressed blocks | |
JP2023554314A (ja) | グラフィックスパイプラインにおけるリソース使用量に基づくシェーダのスロットリング |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |