CN110050294A - 对压缩资源的着色器写入 - Google Patents

对压缩资源的着色器写入 Download PDF

Info

Publication number
CN110050294A
CN110050294A CN201780075623.7A CN201780075623A CN110050294A CN 110050294 A CN110050294 A CN 110050294A CN 201780075623 A CN201780075623 A CN 201780075623A CN 110050294 A CN110050294 A CN 110050294A
Authority
CN
China
Prior art keywords
piece
data
write
write request
cache
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
Application number
CN201780075623.7A
Other languages
English (en)
Inventor
吉姆谢德·米尔扎
克里斯多夫·J·布伦南
安东尼·陈
利昂·赖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ATI Technologies ULC
Advanced Micro Devices Inc
Original Assignee
ATI Technologies ULC
Advanced Micro Devices Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ATI Technologies ULC, Advanced Micro Devices Inc filed Critical ATI Technologies ULC
Publication of CN110050294A publication Critical patent/CN110050294A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/302In image processor or graphics adapter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • Multimedia (AREA)
  • General Engineering & Computer Science (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Image Generation (AREA)

Abstract

公开了用于对压缩表面执行着色器写入的系统、设备及方法。在一个实施方案中,处理器包括至少一个存储器和一个或多个着色器单元。在一个实施方案中,所述处理器的着色器单元被配置为接收针对压缩表面的写入请求。所述着色器单元被配置为识别所述写入请求所针对的所述压缩表面的第一块。响应于确定所述写入请求的数据针对小于所述第一块的整体,第一着色器单元从高速缓存中读取所述第一块并解压缩所述第一块。接下来,所述第一着色器单元合并所述写入请求的所述数据与解压缩的第一块。然后,所述着色器单元压缩合并数据并将所述合并数据写入所述高速缓存。

Description

对压缩资源的着色器写入
背景技术
相关技术描述
图形处理单元(GPU)是被配置为执行图形处理任务的复杂集成电路。例如,GPU可以执行最终用户应用程序(诸如视频游戏应用程序)所需的图形处理任务。GPU可以是分立装置,或者可以与另一个处理器(诸如中央处理单元(CPU))包括在同一装置中。GPU在被称为渲染的过程中产生从其组成部分的较高级描述构成图像的像素。GPU通常通过使用计算元件处理像素、纹理和几何数据来利用连续渲染的概念。计算元件可以执行光栅化程序、设置引擎、色彩混合器、隐藏表面移除、纹理映射等功能。这些计算元件通常被称为着色器、着色器处理器、着色器阵列、着色器单元、着色器引擎等,其中“着色器”是计算机图形学中的术语,是指图形资源用于执行渲染效果的软件指令集或程序。“着色器”还可以指代用于执行软件指令的实际硬件部件或处理器。着色器处理器或程序可以读取和呈现数据并执行任何类型的数据处理。
在生成复杂图形场景中所涉及的许多处理涉及纹理数据。纹理可以是各种类型的数据中的任何一种,诸如色彩、透明度、查找表或其他数据。在一些实施方案中,纹理可以是被绘制到几何形状上以添加视觉细节的数字化图像。可以在渲染模型以创建目标图像时将大量细节通过使用纹理映射到图形模型的表面。纹理映射的目的是在对象的表面上提供逼真的外观。纹理可以指定许多属性,包括色彩、表面属性,如呈法线贴图或凹凸贴图的形式的镜面反射或精细表面细节。纹理也可以是图像数据、色彩或透明度数据、粗糙度/平滑度数据、反射率数据等。
在3D计算机图形中,通常通过使用纹理添加关于对象的表面细节。例如,可以使用纹理映射将砖壁的2D位图图像应用于表示建筑物的3D模型的一组多边形以使该对象的3D渲染具有由砖块构成的外观。提供逼真的计算机图形通常需要许多高质量的、详细的纹理。纹理的使用可能消耗大量的存储空间和带宽,并且因此纹理通常可以被压缩以减少存储空间和带宽利用率。
压缩纹理和表面可以减少图形系统上的存储和带宽成本,同时尽可能多地保持初始纹理和表面的质量。图形处理的一项挑战是存储器或高速缓存带宽限制了GPU完全发挥其作用。可以利用压缩来减少从存储器或高速缓存中获取以供GPU处理的数据量。当GPU生成输出图像或深度/模板表面时,GPU可以压缩这些表面以减少存储器/高速缓存带宽和利用率。软件应用程序可以在将最终图像发送到显示器之前对这些表面进行后处理。通常,软件应用程序将在更新输出图像的任何部分之前解压缩整个输出图像。然而,在由GPU渲染的场景中,有时仅当场景随时间变化时才需要更新场景的一部分。例如,在视频游戏应用程序中,用户可以在墙上射击,在墙上产生弹孔。为了更新表示墙的表面,只需要更新墙的一小部分。然而,用于更新压缩资源的部分的过程可能是低效的。因此,需要用于管理压缩资源的改进技术。
附图说明
通过结合附图参考以下描述,可以更好地理解本文所述的方法和机制的优点,在附图中:
图1是计算系统的一个实施方案的框图。
图2是GPU的一个实施方案的框图。
图3是高速缓存仲裁器和高速缓存的一个实施方案的框图。
图4是压缩器模块的一个实施方案的框图。
图5是示出用于对压缩表面执行写入的方法的一个实施方案的概括流程图。
图6是示出用于处理对表面的压缩块的写入请求的方法的一个实施方案的概括流程图。
图7是示出用于处理对表面的未压缩块的写入请求的方法的一个实施方案的概括流程图。
图8是示出用于对压缩表面执行写入的方法的另一个实施方案的概括流程图。
具体实施方式
在以下描述中,阐述许多特定细节以便提供对本文呈现的方法和机制的透彻理解。然而,所属领域一般技术人员应认识到,可以在没有这些特定细节的情况下实践各种实施方案。在一些情况下,未详细示出公知结构、部件、信号、计算机程序指令和技术以免混淆本文所述的方法。应当明白,为了使图示简单和清楚起见,图中所示的元件不一定按比例绘制。例如,一些元件的尺寸可能相对于其他元件被夸大。
公开了用于对压缩资源执行着色器写入的各种系统、设备、方法及计算机可读介质。在一个实施方案中,处理器包括至少一个高速缓存和一个或多个着色器单元。在一个实施方案中,所述处理器的第一着色器单元被配置为接收针对压缩表面的写入请求。所述第一着色器单元被配置为识别所述写入请求所针对的所述压缩表面的第一块。所述第一着色器还被配置为确定所述写入请求的数据是否针对小于所述第一块的整体。如果所述第一着色器单元确定所述写入请求的所述数据针对小于所述第一块的整体,则所述第一着色器单元从所述高速缓存中读取所述第一块并解压缩所述第一块。接下来,所述第一着色器单元合并所述写入请求的所述数据与解压缩的第一块。然后,所述着色器单元压缩合并数据并将所述合并数据写入所述高速缓存。在一个实施方案中,如果所述第一着色器单元确定所述写入请求的所述数据更新所述第一块的整体,则所述第一着色器单元压缩所述写入请求的所述数据,然后用压缩数据覆盖所述高速缓存中的所述第一块。
在一个实施方案中,所述第一着色器单元被配置为访问与所述第一块相关联的元数据,其中所述元数据包括指定用于压缩所述第一块的压缩类型的信息。在一个实施方案中,所述元数据存储在元数据高速缓存中。所述第一着色器单元被配置为利用所述信息来解压缩所述第一块。在一个实施方案中,所述第一着色器单元被配置为确定所述第一块是否被设定为恒定值。如果所述第一块被设定为恒定值,则所述第一着色器单元可以跳过从所述高速缓存中读取所述第一块。相反,所述第一着色器单元合并所述写入请求的所述数据与所述恒定值的数据。然后,所述第一着色器单元压缩所述合并数据并将其写入所述高速缓存。
现在参考图1,示出了计算系统100的一个实施方案的框图。在一个实施方案中,计算系统100包括耦合到存储器150的片上系统(SoC)105。SoC 105也可以被称为集成电路(IC)。在一个实施方案中,SoC 105包括处理单元115A至115N、输入/输出(I/O)接口110、共享高速缓存120A至120B、组构(fabric)125、图形处理单元130和一个或多个存储器控制器140。SoC 105还可以包括图1中未示出以免混淆附图的其他部件。处理单元115A至115N表示任何数量和类型的处理单元。在一个实施方案中,处理单元115A至115N是中央处理单元(CPU)核心。在另一个实施方案中,处理单元115A至115N中的一者或多者是其他类型的处理单元(例如,专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP))。处理单元115A至115N耦合到共享高速缓存120A至120B和组构125。
在一个实施方案中,处理单元115A至115N被配置为执行特定指令集架构(ISA)的指令。每个处理单元115A至115N都包括一个或多个执行单元、高速缓存、调度器、分支预测电路等。在一个实施方案中,处理单元115A至115N被配置为执行系统100的主控制软件,诸如操作系统。通常,在使用期间由处理单元115A至115N执行的软件可以控制系统100的其他部件以实现系统100的期望功能性。处理单元115A至115N还可以执行其他软件,诸如应用程序。
GPU 130包括压缩器模块135、一个或多个高速缓存138和计算单元145A至145N,所述计算单元145A至145N表示用于图形处理或通用处理的任何数量和类型的计算单元。GPU130耦合到共享高速缓存120A至120B和组构125。在一个实施方案中,GPU 130被配置为执行图形管线操作,诸如绘制命令、像素操作、几何计算以及用于将图像渲染到显示器的其他操作。在另一个实施方案中,GPU 130被配置为执行与图形无关的操作。在另一实施方案中,GPU 130被配置为执行图形操作和非图形相关操作两者。
在一个实施方案中,GPU 130被配置为对存储在高速缓存138中的压缩表面执行写入操作。在一个实施方案中,对于对压缩表面的块的一部分的写入请求,GPU 130被配置为合并写入请求的数据与块的其他部分。然后,GPU 130使用压缩器模块135来压缩合并数据,然后GPU 130将压缩数据写入高速缓存138。在一个实施方案中,响应于接收到写入请求,GPU 130被配置为确定写入请求是否针对表面的压缩块。如果写入请求针对表面的未压缩块,则GPU 130跳过解压缩步骤并合并写入请求的数据与未压缩块。每个块的大小可以根据实施方案而变化。
I/O接口110耦合到组构125,并且I/O接口110表示任何数量和类型的接口(例如,外围部件互连(PCI)总线、PCI扩展(PCI-X)、PCIE(PCI Express)总线、千兆以太网(GBE)总线、通用串行总线(USB))。各种类型的外围装置可以耦合到I/O接口110。此类外围装置包括(但不限于)显示器、键盘、鼠标、打印机、扫描仪、操纵杆或其他类型的游戏控制器、媒体录制装置、外部存储装置、网络接口卡等等。
SoC 105耦合到存储器150,所述存储器包括一个或多个存储器模块。每个存储器模块都包括安装在其上的一个或多个存储器装置。在一些实施方案中,存储器150包括安装在母板上或安装在上面也安装了SoC 105的其他载体上的一个或多个存储器装置。在一个实施方案中,存储器150用于实施随机存取存储器(RAM)以在操作期间与SoC 105一起使用。所实施的RAM可以是静态RAM(SRAM)、动态RAM(DRAM)、电阻RAM(ReRAM)、相变RAM(PCRAM)或任何其他易失性或非易失性RAM。用于实施存储器150的DRAM的类型包括(但不限于)双倍数据速率(DDR)DRAM、DDR2DRAM、DDR3DRAM等。尽管未在图1中明确示出,但是SoC 105还可以包括在处理单元115A至115N和/或计算单元145A至145N内部的一个或多个高速缓存存储器。在一些实施方案中,SoC 105包括由处理单元115A至115N和计算单元145A至145N利用的共享高速缓存120A至120B。在一个实施方案中,高速缓存120A至120B是包括高速缓存控制器的高速缓存子系统的一部分。
在各种实施方案中,计算系统100可以是计算机、膝上型计算机、移动装置、服务器或各种其他类型的计算系统或装置中的任何一种。应注意,计算系统100和/或SoC 105的部件的数量可以根据实施方案而变化。每个部件/子部件可以比图1中所示的数量更多或更少。例如,在另一个实施方案中,SoC 105可以包括耦合到多个存储器的多个存储器控制器。还应注意,计算系统100和/或SoC 105可以包括图1中未示出的其他部件。另外,在其他实施方案中,计算系统100和SoC 105可以通过除图1中所示的方式之外的其他方式来构造。
现在转向图2,示出了图形处理单元(GPU)200的一个实施方案的框图。在一个实施方案中,GPU 200的逻辑包括在(图1的)GPU 130中。在一个实施方案中,GPU 200包括至少着色器阵列215A至215D、命令中心站(command center hub)220、组构225和高速缓存230。应注意,GPU 200还包括图2中未示出以免混淆附图的其他逻辑和/或其他部件。还应注意,GPU200的结构仅是在一个实施方案中使用的结构的一个示例。在其他实施方案中,GPU 200可以通过其他方式组织。
着色器阵列215A至215D表示包括在GPU 200中的任何数量和类型的着色器计算资源。着色器阵列215A至215D也可以被称为“着色器单元”。每个着色器阵列215A至215D都包括用于执行几何、顶点、像素和/或其他着色操作以渲染图形的各种计算资源。在各种实施方案中,计算资源包括用于获取和解码指令的部件、用于执行算术计算的一个或多个算术逻辑单元“ALU”,以及其他资源。尽管未在图2中示出,但是每个着色器阵列215A至215D都可以包括一级(L1)高速缓存。着色器阵列215A至215D经由组构225耦合到高速缓存230。在一个实施方案中,高速缓存230是二级(L2)高速缓存。取决于实施方案,高速缓存230耦合到存储器(未示出)或另一级高速缓存(未示出)。命令中心站220表示任何数量和类型的命令处理器、调度器和其他命令处理资源。
在一个实施方案中,压缩器模块235位于高速缓存230内。在另一个实施方案中,压缩器模块235位于组构225内。在一个实施方案中,当GPU 200处理对表面的写入请求时,压缩器模块230被配置为合并写入请求的数据与表面的目标块的未压缩数据。然后,压缩合并数据并将其写回高速缓存230。
现在参考图3,示出了高速缓存仲裁器302和高速缓存304的一个实施方案的框图。在一个实施方案中,高速缓存仲裁器302耦合到高速缓存304的接口块306。对于针对存储在高速缓存304中的数据的请求,高速缓存仲裁器302被配置为向接口块306传送读取和写入请求。接口块306向标签阵列312传送针对未压缩表面的请求并请求压缩表面针对压缩器模块308。未压缩的写入数据被传送到源先进先出模块(FIFO)310。
压缩器模块308对元数据高速缓存314执行查找以确定是否以及如何压缩目标表面的给定块。压缩器模块308从数据阵列316接收数据,然后压缩器模块308对压缩数据进行解压缩。在一个实施方案中,压缩器模块308合并写入数据与来自给定表面块的已被解压缩的数据。然后,压缩器模块308重新压缩合并数据并将重新压缩的合并数据发送到源FIFO310。应注意,在其他实施方案中,用于管理对表面的压缩块的写入、解压缩数据、合并数据和压缩数据的逻辑可以通过其他方式组织在高速缓存304内。
现在转向图4,示出了压缩器模块402的一个实施方案的框图。在一个实施方案中,压缩器模块402的部件包括在(图3的)压缩器模块308中。针对压缩表面的请求被传送到虚拟FIFO 404,而针对未压缩表面的请求被传送到标签阵列(未示出)。虚拟FIFO 404维持相对于彼此排序的请求的地址。在一个实施方案中,利用链表结构来维持虚拟FIFO 404中的请求相对于彼此的顺序。虚拟FIFO 404还允许针对仅针对表面的块的一部分的写入请求而预取读取请求。例如,如果虚拟FIFO 404中的请求在解压缩和合并路径上需要读取-修改-写入,则当请求在虚拟FIFO 404中等待时,为请求生成预取请求。在一个实施方案中,给定数量的预取请求在任何给定时间都可以是未解决的,给定数量因实施方案的不同而变化。当预取请求恢复时,数据被合并并且对压缩器434进行仲裁。如果存储在虚拟FIFO 404中的写入请求将完全覆盖整个目标块,则从高速缓存中预取块的读取请求不会在处理它之前生成。请求从虚拟FIFO 404流入物理FIFO 406。在一个实施方案中,物理FIFO 406是基于触发器的FIFO。
如果写入请求将覆盖表面的整个块,则不生成预取请求,并且写入请求对其中一个压缩器434进行仲裁。然后,从源数据RAM 424中取出源数据,所述请求最初将所述元数据写入了源数据RAM 424。然后,源数据被写出到通向高速缓存的路径上。对于仅针对目标块的一部分的写入请求,生成预取读请求,所述预取读请求从高速缓存读取目标块的其他部分。回读数据被传送到返回控制逻辑438,然后被传送到读取数据RAM 426和触发器432。
请求物理FIFO 406耦合到突发写入控制408和多路复用器(或mux)412、414、428和430。读取控制逻辑418和无操作写入控制逻辑420分别为多路复用器428和430提供选择信号。合并控制逻辑416为多路复用器412和414提供选择信号。对于具有仅覆盖目标块的一部分的数据的写入请求,合并控制逻辑416被配置为合并写入数据与目标块的其他未受影响的部分。合并控制逻辑416耦合到请求队列状态410、多路复用器412和414、触发器432和压缩控制逻辑422。合并数据在被写入高速缓存之前耦合到压缩控制逻辑422,然后耦合到压缩器434以进行压缩。压缩器434还耦合到写入控制逻辑436,所述写入控制逻辑耦合到多路复用器440,其中多路复用器440的输出耦合到元数据高速缓存(未示出)。
应注意,在本文中显示在各种结构旁边的字母“N”表示一般地指示该结构的任何数量的元件(例如,请求虚拟FIFO 404中的任何数量的存储元件,包括一个存储元件)。另外,图4中使用字母“N”的不同附图标记(例如,虚拟FIFO 404和请求队列状态410)并不意图指示提供相同数量的不同元件(例如,请求虚拟FIFO 404中的存储元件的数量可以不同于请求队列状态410的存储元件的数量)。
现在参考图5,示出了用于对压缩表面执行写入的方法500的一个实施方案。出于讨论目的,该实施方案中的步骤以及图6至图8中的那些步骤按顺序示出。然而,应注意在所述方法的各种实施方案中,所描述的一个或多个元件同时、以不同于所示顺序的顺序执行或者完全被省略。也可以根据需要执行其他附加元件。本文所述的各种系统或设备中的任一者都被配置为实施方法500。
处理器的着色器单元接收针对压缩表面的写入请求(框505)。取决于实施方案,处理器包括任何数量的着色器单元。接下来,着色器单元识别写入请求所针对的压缩表面的第一块(框510)。在一个实施方案中,所述表面被分成多个块,其中每个块都独立于其他块被压缩。应注意,表面的“块”在本文也可以被称为表面的一“部分”。
然后,着色器单元确定写入请求的数据是否针对小于第一块的整体(条件框515)。如果写入请求的数据针对小于第一块的整体(条件块515,“是”支路),则着色器单元从高速缓存中读取第一块并解压缩第一块(框520)。在另一个实施方案中,着色器单元从存储器中读取第一块。接下来,着色器单元合并写入请求的数据与解压缩的第一块(框525)。然后,着色器单元压缩合并数据并将其写入高速缓存(框530)。在另一个实施方案中,着色器单元将合并数据写入存储器。
如果写入请求的数据针对第一块的整体(条件框515,“否”支路),则着色器单元压缩写入请求的数据(框535)。在这种情况下,着色器单元跳过从高速缓存中获取第一块并解压缩第一块的步骤。接下来,第一着色器用写入请求的压缩数据覆盖高速缓存中的第一块(框540)。在框530和540之后,方法500结束。
现在转向图6,示出了用于处理对表面的压缩块的写入请求的方法600的一个实施方案。处理器的着色器单元接收针对表面的压缩块的写入请求(框605)。响应于接收到写入请求,着色器单元访问与压缩块相关联的元数据(框610)。在一个实施方案中,元数据包括指定用于压缩第一块的压缩类型的信息。在一个实施方案中,增量色彩压缩(delta colorcompression)(DCC)是用于压缩第一块的压缩类型。在一个实施方案中,所述元数据存储在元数据高速缓存中。
接下来,着色器单元根据元数据确定压缩块的数据是否被设定为单个值(条件框615)。在一个实施方案中,当使用DCC压缩所述压缩块时,空白设置指示压缩块被设定为单个值(例如,0.0、1.0)。出于本讨论的目的,假设写入请求的数据不会覆盖压缩块的整体。如果压缩块被设定为单个值(条件框615,“是”支路),则着色器单元合并写入请求的数据与单个值的数据(框620)。接下来,着色器单元压缩合并数据并将其写入高速缓存(框625)。如果压缩块未被设定为单个值(条件框615,“否”支路),则着色器单元获取并解压缩所述压缩块(框630)。接下来,着色器单元合并写入请求的数据与解压缩块的数据(框635)。然后,着色器单元压缩合并数据并将其写入高速缓存(框625)。在框625之后,方法600结束。
现在参考图7,示出了用于处理对表面的未压缩块的写入的方法700的一个实施方案。处理器的着色器单元接收针对表面的未压缩块的写入请求(框705)。接下来,着色器单元从高速缓存中读取未压缩块(框710)。然后,着色器单元合并写入请求的数据与未压缩块(框715)。出于本讨论的目的,假设写入请求的数据不会覆盖压缩块的整体。然而,如果写入请求的数据覆盖压缩块的整体,则可以跳过框710和715。接下来,着色器单元将合并数据写回高速缓存(框720)。在一些情况下,着色器单元可以压缩合并数据,然后将压缩后的合并数据写回高速缓存。在框720之后,方法700结束。
现在转向图8,示出了用于对压缩表面执行写入的方法800的另一个实施方案。着色器单元接收针对压缩表面的写入请求(框805)。着色器单元识别写入请求所针对的压缩表面的第一块(框810)。接下来,着色器单元确定是否激活用于获取和解压缩第一块的逻辑(框815)。在一个实施方案中,是否激活用于获取和解压缩第一块的逻辑的确定是基于对一个或多个条件的检测。
如果着色器单元检测到第一条件(条件框820,“是”支路),则着色器单元防止用于获取和解压缩第一块的逻辑被激活(框825)。在一个实施方案中,第一条件是确定第一块的所有数据都被设定为单个值。在一个实施方案中,着色器单元通过检索与第一块相关联的元数据来确定第一块的所有数据都被设定为单个值。单个值可以是0.0、1.0或其间的另一个值。如果元数据指示第一块的数据是空白的,则这指示第一块被设定为单个值。在另一个实施方案中,第一条件是确定写入请求的数据更新第一块的整体。在其他实施方案中,第一条件可以包括其他事件和/或指示。
在框825之后,着色器单元压缩写入请求的数据以形成新的第一块(框830)。在一个实施方案中,写入请求的数据也可以被称为“像素数据”或“像素”。接下来,着色器单元将新的第一块写入高速缓存(块835)。取决于实施方案,着色器单元可以在将新的第一块写入高速缓存之前压缩或不压缩新的第一块。
如果着色器单元未检测到第一条件(条件框820,“否”支路),则着色器单元确定是否检测到第二条件(条件框840)。在一个实施方案中,第二条件是确定写入请求的数据针对小于第一块的整体。在其他实施方案中,第二条件可以包括其他事件和/或指示。如果检测到第二条件(条件框840,“是”支路),则着色器单元激活用于获取和解压缩第一块的逻辑(框845)。接下来,着色器单元合并写入请求的数据与解压缩的第一块以形成新的第一块(框850)。然后,着色器单元压缩新的第一块并将其写入高速缓存(框855)。
如果未检测到第二条件(条件框840,“否”支路),则着色器单元防止用于获取和解压缩第一块的逻辑被激活(框860)。在一个实施方案中,如果未检测到第二条件,则这指示写入请求的数据针对第一块的整体。在框860之后,着色器单元压缩写入请求的数据以形成新的第一块(框865)。然后,着色器单元用新的第一块覆盖高速缓存中的第一块(框870)。在框835、855和870之后,方法800结束。
在各种实施方案中,使用软件应用的程序指令来实施先前描述的方法和/或机制。所述程序指令以诸如C等高级编程语言描述硬件的行为。可选地,使用硬件设计语言(HDL),诸如Verilog。所述程序指令被存储在非暂时性计算机可读存储介质上。许多类型的存储介质是可用的。所述存储介质在使用期间可由计算系统访问以向计算系统提供程序指令和随附数据以进行程序执行。所述计算系统包括至少一个或多个存储器和被配置为执行程序指令的一个或多个处理器。
应强调,上述实施方案仅是实现方式的非限制性示例。一旦完全理解了上述公开内容,许多变化和修改对于所属领域技术人员来说就会将变得明显。期望将随附权利要求解释为涵盖所有此类变化和修改。

Claims (20)

1.一种处理器,其包括:
高速缓存;以及
一个或多个着色器单元,所述一个或多个着色器单元耦合到所述高速缓存;
其中响应于针对压缩表面的写入请求,所述一个或多个着色器单元中的着色器单元被配置为:
识别所述写入请求所针对的所述压缩表面的第一块;
确定是否激活用于获取和解压缩所述第一块的逻辑;
响应于检测到第一条件:
防止用于获取和解压缩所述第一块的逻辑被激活;
压缩所述写入请求的数据以形成新的第一块;以及
将所述新的第一块写入所述高速缓存。
2.如权利要求1所述的处理器,其中所述第一条件是确定所述第一块的数据被设定为单个值,并且其中所述着色器单元被配置为合并所述写入请求的数据与所述单个值的数据,然后压缩所合并数据并形成所述新的第一块。
3.如权利要求1所述的处理器,其中所述第一条件是确定所述写入请求的数据更新所述第一块的整体,并且其中所述着色器单元还被配置为用所述新的第一块覆盖所述高速缓存中的所述第一块。
4.如权利要求1所述的处理器,其中响应于检测到第二条件,所述着色器单元被配置为:
激活用于获取和解压缩所述第一块的逻辑;
合并所述写入请求的所述数据与解压缩的第一块以形成新的第一块;以及
压缩所述新的第一块并将其写入所述高速缓存。
5.如权利要求4所述的处理器,其中所述第二条件是确定所述写入请求的数据针对小于所述第一块的整体。
6.如权利要求5所述的处理器,其中所述着色器单元还被配置为访问与所述第一块相关联的元数据,其中所述元数据包括指定用于压缩所述第一块的压缩类型的信息。
7.如权利要求6所述的处理器,其中所述着色器单元还被配置为利用所述信息来解压缩所述第一块。
8.一种用于计算装置的方法,所述方法包括:
接收针对压缩表面的第一写入请求;
着色器单元识别所述第一写入请求所针对的所述压缩表面的第一块;
所述着色器单元确定是否激活用于获取和解压缩所述第一块的逻辑;
响应于确定所述第一块被设定为恒定值,所述着色器单元:
防止用于获取和解压缩所述第一块的逻辑被激活;
压缩所述写入请求的数据以形成新的第一块;以及
将所述新的第一块写入高速缓存。
9.如权利要求8所述的方法,其中所述第一条件是确定所述第一块的数据被设定为单个值,并且其中所述方法还包括合并所述写入请求的数据与所述单个值的数据,然后压缩所合并数据并形成所述新的第一块。
10.如权利要求8所述的方法,其中所述第一条件是确定所述写入请求的数据更新所述第一块的整体,并且其中所述方法还包括用所述新的第一块覆盖所述高速缓存中的所述第一块。
11.如权利要求8所述的方法,其中响应于检测到第二条件,所述方法还包括:
激活用于获取和解压缩所述第一块的逻辑;
合并所述写入请求的所述数据与解压缩的第一块以形成新的第一块;以及
压缩所述新的第一块并将其写入所述高速缓存。
12.如权利要求11所述的方法,其中所述第二条件是确定所述写入请求的数据针对小于所述第一块的整体。
13.如权利要求12所述的方法,其还包括访问与所述第一块相关联的元数据,其中所述元数据包括指定用于压缩所述第一块的压缩类型的信息。
14.如权利要求11所述的方法,其还包括利用所述信息解压缩所述第一块。
15.一种系统,其包括:
存储器;以及
处理器,所述处理器耦合到所述存储器,其中所述处理器包括一个或多个着色器单元;
其中响应于针对压缩表面的写入请求,所述一个或多个着色器单元中的着色器单元被配置为:
识别所述写入请求所针对的所述压缩表面的第一块;
确定是否激活用于获取和解压缩所述第一块的逻辑;
响应于检测到第一条件:
防止用于获取和解压缩所述第一块的逻辑被激活;
压缩所述写入请求的数据以形成新的第一块;以及
将所述新的第一块写入所述高速缓存。
16.如权利要求15所述的系统,其中所述第一条件是确定所述第一块的数据被设定为单个值,并且其中所述着色器单元被配置为合并所述写入请求的数据与所述单个值的数据,然后压缩所合并数据并形成所述新的第一块。
17.如权利要求15所述的系统,其中所述第一条件是确定所述写入请求的数据更新所述第一块的整体,并且其中所述着色器单元还被配置为用所述新的第一块覆盖所述高速缓存中的所述第一块。
18.如权利要求15所述的系统,其中响应于检测到第二条件,所述着色器单元被配置为:
激活用于获取和解压缩所述第一块的逻辑;
合并所述写入请求的所述数据与解压缩的第一块以形成新的第一块;以及
压缩所述新的第一块并将其写入所述高速缓存。
19.如权利要求15所述的系统,其中所述第二条件是确定所述写入请求的数据针对小于所述第一块的整体。
20.如权利要求19所述的系统,其中所述着色器单元还被配置为访问与所述第一块相关联的元数据,其中所述元数据包括指定用于压缩所述第一块的压缩类型的信息。
CN201780075623.7A 2016-12-22 2017-12-20 对压缩资源的着色器写入 Pending CN110050294A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/389,075 US10535178B2 (en) 2016-12-22 2016-12-22 Shader writes to compressed resources
US15/389,075 2016-12-22
PCT/US2017/067697 WO2018119131A1 (en) 2016-12-22 2017-12-20 Shader writes to compressed resources

Publications (1)

Publication Number Publication Date
CN110050294A true CN110050294A (zh) 2019-07-23

Family

ID=57708524

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780075623.7A Pending CN110050294A (zh) 2016-12-22 2017-12-20 对压缩资源的着色器写入

Country Status (6)

Country Link
US (1) US10535178B2 (zh)
EP (1) EP3340176B1 (zh)
JP (1) JP7078628B2 (zh)
KR (1) KR102474237B1 (zh)
CN (1) CN110050294A (zh)
WO (1) WO2018119131A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9378560B2 (en) * 2011-06-17 2016-06-28 Advanced Micro Devices, Inc. Real time on-chip texture decompression using shader processors
CN108804219B (zh) 2017-04-28 2024-01-12 超威半导体公司 多计算核中的灵活着色器导出设计
US11212537B2 (en) 2019-03-28 2021-12-28 Advanced Micro Devices, Inc. Side information for video data transmission
US20230206380A1 (en) * 2021-12-28 2023-06-29 Advanced Micro Devices, Inc. Optimizing partial writes to compressed blocks
CN116467227B (zh) * 2023-06-19 2023-08-25 深流微智能科技(深圳)有限公司 Tmu系统和tmu系统的运算优化方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6108460A (en) * 1996-01-02 2000-08-22 Pixelfusion Limited Load balanced image generation
CN103608848A (zh) * 2011-06-17 2014-02-26 超威半导体公司 使用着色器处理器的实时片上纹理解压缩
US20140257310A1 (en) * 2013-03-07 2014-09-11 Zimmer, Inc. Tibial resection systems and methods for cruciate ligament retainment
US20150070380A1 (en) * 2013-09-11 2015-03-12 Nvidia Corporation System, method, and computer program product for using compression with programmable sample locations

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6243081B1 (en) 1998-07-31 2001-06-05 Hewlett-Packard Company Data structure for efficient retrieval of compressed texture data from a memory system
US6452602B1 (en) 1999-12-13 2002-09-17 Ati International Srl Method and apparatus for storing compressed data
US6959110B1 (en) 2000-08-17 2005-10-25 Nvidia Corporation Multi-mode texture compression algorithm
JP4186561B2 (ja) * 2002-04-25 2008-11-26 ソニー株式会社 画像処理装置およびその方法
KR100510131B1 (ko) 2003-01-29 2005-08-26 삼성전자주식회사 픽셀 캐쉬 및 이를 이용한 3차원 그래픽 가속 장치 및 방법
US7239322B2 (en) 2003-09-29 2007-07-03 Ati Technologies Inc Multi-thread graphic processing system
US8643659B1 (en) * 2003-12-31 2014-02-04 3Dlabs Inc., Ltd. Shader with global and instruction caches
US7719540B2 (en) 2004-03-31 2010-05-18 Intel Corporation Render-cache controller for multithreading, multi-core graphics processor
US20070011432A1 (en) 2005-07-06 2007-01-11 Advanced Micro Devices, Inc. Address generation unit with operand recycling
US9648325B2 (en) * 2007-06-30 2017-05-09 Microsoft Technology Licensing, Llc Video decoding implementations for a graphics processing unit
US8040351B1 (en) * 2007-07-31 2011-10-18 Nvidia Corporation Using a geometry shader to perform a hough transform
US8174534B2 (en) 2007-12-06 2012-05-08 Via Technologies, Inc. Shader processing systems and methods
US8295621B1 (en) * 2007-12-13 2012-10-23 Nvidia Corporation Data decompression using a geometry shading unit
US9214007B2 (en) * 2008-01-25 2015-12-15 Via Technologies, Inc. Graphics processor having unified cache system
BR112013012721A2 (pt) * 2010-12-14 2016-09-06 Ericsson Telefon Ab L M codificação e decodificação de tile
US9459876B2 (en) * 2013-07-18 2016-10-04 Nvidia Corporation System, method, and computer program product for managing divergences and synchronization points during thread block execution by using a double sided queue for token storage
US9230363B2 (en) * 2013-09-11 2016-01-05 Nvidia Corporation System, method, and computer program product for using compression with programmable sample locations
US10181176B2 (en) * 2016-03-04 2019-01-15 Samsung Electronics Co., Ltd. Efficient low-power texture cache architecture
US10453169B2 (en) * 2016-03-28 2019-10-22 Intel Corporation Method and apparatus for multi format lossless compression
US10186076B2 (en) * 2016-03-29 2019-01-22 Intel Corporation Per-sample MSAA rendering using comprehension data
US10719447B2 (en) * 2016-09-26 2020-07-21 Intel Corporation Cache and compression interoperability in a graphics processor pipeline
CN108804219B (zh) 2017-04-28 2024-01-12 超威半导体公司 多计算核中的灵活着色器导出设计

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6108460A (en) * 1996-01-02 2000-08-22 Pixelfusion Limited Load balanced image generation
CN103608848A (zh) * 2011-06-17 2014-02-26 超威半导体公司 使用着色器处理器的实时片上纹理解压缩
US20140257310A1 (en) * 2013-03-07 2014-09-11 Zimmer, Inc. Tibial resection systems and methods for cruciate ligament retainment
US20150070380A1 (en) * 2013-09-11 2015-03-12 Nvidia Corporation System, method, and computer program product for using compression with programmable sample locations

Also Published As

Publication number Publication date
WO2018119131A1 (en) 2018-06-28
US10535178B2 (en) 2020-01-14
EP3340176A1 (en) 2018-06-27
US20180182155A1 (en) 2018-06-28
EP3340176B1 (en) 2019-06-26
KR102474237B1 (ko) 2022-12-05
KR20190109396A (ko) 2019-09-25
JP7078628B2 (ja) 2022-05-31
JP2020518876A (ja) 2020-06-25

Similar Documents

Publication Publication Date Title
EP3274841B1 (en) Compaction for memory hierarchies
CN110050294A (zh) 对压缩资源的着色器写入
US10134102B2 (en) Graphics processing hardware for using compute shaders as front end for vertex shaders
US10929950B2 (en) Method and apparatus for multi format lossless compression
US8760460B1 (en) Hardware-managed virtual buffers using a shared memory for load distribution
CN103608848B (zh) 使用着色器处理器的实时片上纹理解压缩
US8022958B2 (en) Indexes of graphics processing objects in graphics processing unit commands
US20140152652A1 (en) Order-preserving distributed rasterizer
US8135926B1 (en) Cache-based control of atomic operations in conjunction with an external ALU block
GB2526598A (en) Allocation of primitives to primitive blocks
KR102480787B1 (ko) 순서에 관계 없는 캐시 리턴
US10002455B2 (en) Optimized depth buffer cache apparatus and method
US20080192063A1 (en) Managing Multiple Contexts in a Decentralized Graphics Processing Unit
JP7169284B2 (ja) ビデオへのデルタカラー圧縮の適用
US10297002B2 (en) Virtual touch pad method and apparatus for controlling an external display
US10026142B2 (en) Supporting multi-level nesting of command buffers in graphics command streams at computing devices
CN108804219B (zh) 多计算核中的灵活着色器导出设计
US8704835B1 (en) Distributed clip, cull, viewport transform and perspective correction
US10395424B2 (en) Method and apparatus of copying data to remote memory
US20230206380A1 (en) Optimizing partial writes to compressed blocks
US20090073163A1 (en) Apparatus for and method of processing vertex
WO2022084666A1 (en) Graphics processing systems

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