针对高速缓存行的未命中请求的选择性生成的制作方法

未命名 09-17 阅读:86 评论:0

针对高速缓存行的未命中请求的选择性生成


背景技术:

1.图形处理单元(gpu)使用由一系列可编程着色器和固定功能硬件块形成的图形流水线来处理三维(3-d)图形。例如,在帧中可见的对象的3-d模型可由一组三角形、其他多边形或补丁来表示,该组三角形、其他多边形或补丁在图形流水线中处理,以产生用于显示给用户的像素值。三角形、其他多边形或补丁被统称为图元。渲染过程包括将纹理映射到图元,以并入具有比图元的分辨率高的分辨率的视觉细节。gpu包括专用存储器,该专用存储器用于存储纹理值,以使得纹理值可用于映射到正在图形流水线中处理的图元。纹理可以被存储在磁盘上,或者在图形流水线需要纹理时以程序的方式生成这些纹理。通过从磁盘加载纹理或者以程序的方式生成数据来填充存储在专用gpu存储器中的纹理数据。频繁使用的纹理数据被高速缓存在由着色器或固定功能硬件块存取的一个或多个纹理高速缓存中。
附图说明
2.通过参考附图,本公开被更好地理解,并且其许多特征和优点对于本领域技术人员是显而易见的。在不同附图中使用相同的附图标记表示类似或相同的项目。
3.图1是根据一些实施方案的选择性地生成对高速缓存行的部分的未命中请求的处理系统的框图。
4.图2描绘了根据一些实施方案的被配置为处理高阶几何图元以便以预先确定的分辨率生成三维(3d)场景的光栅化图像的图形流水线。
5.图3是根据一些实施方案的高速缓存行的框图,该高速缓存行具有在第一读取循环中分布在多个扇区上的请求和在第二读取循环中被限制到单个扇区的请求。
6.图4是根据一些实施方案的高速缓存行的框图,该高速缓存行具有在第一读取循环和第二读取循环期间不表现出高度的时间局部性的请求。
7.图5是根据一些实施方案的选择性地生成对高速缓存行的部分的未命中请求的方法的流程图。
具体实施方式
8.纹理高速缓存中的高速缓存行通常被配置为保持大量数据,例如,纹理高速缓存行的宽度可为大约128字节或1024(1k)位。宽高速缓存行有助于高速缓存作为图形处理特征的大的和/或可变大小的数据块。纹理数据被存储在图块中,诸如具有4
×
4像素覆盖区或8
×
8像素覆盖区的图块。图块的大小还取决于纹理格式,该纹理格式指示用于表示每个像素的位的数量,诸如8位格式、32位格式、128位格式等。因此,根据纹理格式,具有8
×
8像素覆盖区的图块可以由526位、2048位、8192位或其他数量的位来表示。在操作中,纹理高速缓存每循环接收多达n个存储器存取请求(例如,读取请求或写入请求),其中n为向量的大小(例如,向量大小可以为64、32或16),并且每个高速缓存未命中生成从更高级别的高速缓存或存储器检索高速缓存行的请求。给定高速缓存行大小为大,如果所请求的数据跨多个高
速缓存行分散,则高速缓存未命中请求消耗大量的存储器带宽,而不管原始存取请求中的数据量如何。此外,通过停用高速缓存的不需要存储正在由图形流水线使用的数据的部分,针对所有请求循环启用完整高速缓存行限制了功率节省的机会。
9.图1至图5公开了用于通过以下方式节省纹理高速缓存与系统存储器(或更高级别的高速缓存)之间的存储器带宽同时可能降低功率消耗的系统和技术:响应于对与纹理高速缓存中的高速缓存行的子集相关联的地址的存储器存取请求的高速缓存未命中,而选择性地生成对高速缓存行的子集的未命中请求。在一些实施方案中,高速缓存行被划分成两个或更多个扇区。响应于例如基于存储器存取请求中的地址映射到高速缓存行中所有扇区的存储器存取请求(诸如读取请求)的高速缓存未命中,生成对完整高速缓存行的未命中请求。如果存储器存取请求映射到高速缓存行的单个扇区,则基于纹理数据的一个或多个启发法或特性的评估而针对完整高速缓存行或高速缓存行的扇区中的一个扇区选择性地生成未命中请求。例如,如果针对纹理数据启用色彩压缩或深度压缩,则针对完整高速缓存行生成未命中请求。如果未针对纹理数据启用压缩,则仅针对由存储器存取请求指示的高速缓存行的扇区生成未命中请求。还基于存储器存取请求的时间局部性针对高速缓存行的子集选择性地生成未命中请求。例如,如果预期存储器存取请求序列存取高速缓存行的不同扇区,则响应于扇区中的一个扇区中的高速缓存未命中而针对完整高速缓存行生成未命中请求。还基于存储器存取请求的空间局部性针对高速缓存行的子集选择性地生成未命中请求。例如,如果预期存储器存取请求序列存取相邻的、接近的或附近的地址,则响应于扇区中的一个扇区中的未命中而针对完整高速缓存行生成未命中请求。相反,如果存储器存取请求的地址被分散并且具有低空间局部性,则仅针对高速缓存行的包括高速缓存未命中的扇区生成未命中请求。
10.图1是根据一些实施方案的选择性地生成对高速缓存行的部分的未命中请求的处理系统100的框图。处理系统100包括或可访问使用非暂态计算机可读介质,诸如动态随机存取存储器(dram)实现的存储器105或其他存储部件。然而,在一些情况下,存储器105使用其他类型的存储器(包括静态随机存取存储器(sram)、非易失性ram等)来实现。存储器105被称为外部存储器,因为它是在处理系统100中实现的处理单元的外部实现的。处理系统100还包括总线110以支持处理系统100诸如存储器105中实现的实体之间的通信。处理系统100的一些实施方案包括其他总线、桥接件、交换机、路由器等,其在清楚的情况下未在图1中示出。
11.在不同的实施方案中,本文中描述的技术用于多种并行处理器(例如,向量处理器、图形处理单元(gpu)、通用gpu(gpgpu)、非标量处理器、高度并行处理器、人工智能(ai)处理器、推理引擎、机器学习处理器、其他多线程处理单元等)中的任一种处理器。图1示出了根据一些实施方案的并行处理器,特别是图形处理单元(gpu)115的示例。图形处理单元(gpu)115渲染用于在显示器120上呈现的图像。例如,gpu 115渲染对象以产生提供给显示器120的像素值,该显示器使用像素值来显示表示所渲染对象的图像。gpu 115实现并发或并行地执行指令的多个计算单元(cu)121、122、123(本文中统称为“计算单元121至123”)。在一些实施方案中,计算单元121至123包括一个或多个单指令多数据(simd)单元并且计算单元121至123被聚集到工作组处理器、着色器阵列、着色器引擎等中。在gpu 115中实现的计算单元121至123的数量是设计选择的问题,并且gpu 115的一些实施方案包括比图1所示
更多或更少的计算单元。计算单元121至123可用于实现图形流水线,如本文所讨论的。gpu 115的一些实施方案用于通用计算。gpu 115执行指令,诸如存储在存储器105中的程序代码125,并且gpu 115将信息诸如所执行指令的结果存储在存储器105中。
12.处理系统100还包括中央处理单元(cpu)130,其连接到总线110并且因此经由总线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中未示出)。
13.输入/输出(i/o)引擎145处理与显示器120以及处理系统100的其他元件(诸如,键盘、鼠标、打印机、外部盘等)相关联的输入或输出操作。i/o引擎145被耦接到总线110,使得i/o引擎145与存储器105、gpu 115或cpu 130通信。在例示的实施方案中,i/o引擎145读取存储在外部存储部件150上的信息,该外部存储部件使用非暂态计算机可读介质,诸如光盘(cd)、数字视频盘(dvd)等来实现。i/o引擎145还能够将信息写入外部存储部件150,诸如gpu 115或cpu 130的处理结果。
14.在例示的实施方案中,gpu 115中的计算单元121至123包括(或关联于)一个或多个高速缓存151、152、153,该一个或多个高速缓存在本文中统称为“高速缓存151至153”。高速缓存151至153可以包括l1高速缓存、l2高速缓存、l3高速缓存或高速缓存层级结构中的其他高速缓存。高速缓存151至153的部分用于实现在计算单元121至123上执行的图形流水线的纹理高速缓存。高速缓存151至153中的高速缓存行被划分成子集,诸如高速缓存行的一个或多个扇区。图形流水线响应于对与纹理高速缓存中的高速缓存行的子集相关联的地址的存储器存取请求的高速缓存未命中,而选择性地生成对高速缓存行的子集的未命中请求。在一些实施方案中,这些高速缓存行被划分成第一扇区和第二扇区。如本文所讨论的,响应于在请求循环期间接收的存储器存取请求的高速缓存未命中在第一扇区中(排他地或主要地),对第一扇区生成未命中请求,并且绕过生成对第二扇区的未命中请求。
15.图2描绘了根据一些实施方案的被配置为处理高阶几何图元以便以预先确定的分辨率生成三维(3d)场景的光栅化图像的图形流水线200。图形流水线200是在图1所示的处理系统100的一些实施方案中实现的。图形流水线200的所示出的实施方案根据dx11规范来实现。图形流水线200的其他实施方案根据其他应用程序编程接口(api)诸如vulkan、metal、dx12等来实现。图形流水线200被细分成包括图形流水线200在光栅化之前的部分的几何部分201和包括图形流水线200在光栅化之后的部分的像素处理部分202。
16.图形流水线200可访问存储资源205,诸如用于实现缓冲器并且存储顶点数据、纹理数据等的一个或多个存储器或高速缓存存储器的层级结构。在例示的实施方案中,存储资源205包括用于存储数据的本地数据存储(lds)206电路和用于在图形流水线200渲染期间高速缓存频繁使用的数据的高速缓存207。使用图1所示的系统存储器105的一些实施方案来实现存储资源205。
17.输入汇编器210从存储资源205访问用于定义表示场景的模型的部分的对象的信
息。图元的示例在图2中被示出为三角形211,但在图形流水线200的一些实施方案中处理其他类型的图元。三角形211包括由一个或多个边214连接的一个或多个顶点212(为了清楚起见,在图2中仅示出了每个边中的一个边)。顶点212在图形流水线200的几何处理部分201期间被着色。
18.在例示的实施方案中以软件实现的顶点着色器215在逻辑上接收图元的单个顶点212作为输入并且输出单个顶点。着色器诸如顶点着色器215的一些实施方案实现大规模单指令多数据(simd)处理,使得同时处理多个顶点。图形流水线200实现统一着色器模型,使得图形流水线200中所包括的所有着色器在共享大规模simd计算单元上具有相同的执行平台。因此,包括顶点着色器215的着色器使用本文称为统一着色器池216的公共资源集来实现。
19.外壳着色器218对用于定义输入补丁的输入高阶补丁或控制点进行操作。外壳着色器218输出镶嵌因子和其他补丁数据。在一些实施方案中,由外壳着色器218生成的图元被提供给镶嵌器220。镶嵌器220从外壳着色器218接收对象(诸如补丁),并且例如通过基于由外壳着色器218提供给镶嵌器220的镶嵌因子来镶嵌输入对象来生成标识对应于输入对象的图元的信息。镶嵌将输入的高阶图元(诸如补丁)细分为一组低阶输出图元,该组低阶输出图元表示更精细的细节级别,例如,如指定由镶嵌过程产生的图元粒度的镶嵌因子所指示的那样。因此,场景的模型由较少数量的较高阶图元表示(以节省存储器或带宽),并且通过对较高阶图元进行镶嵌来添加附加的细节。
20.域着色器224输入域位置和(可选地)其他补丁数据。域着色器224对所提供的信息进行操作,并且基于输入域位置和其他信息生成用于输出的单个顶点。在例示的实施方案中,域着色器224基于三角形211和镶嵌因子生成图元222。几何着色器226接收输入图元并且输出由几何着色器226基于输入图元生成的多达四个图元。在例示的实施方案中,几何着色器226基于镶嵌式图元222生成输出图元228。
21.一个图元流被提供给一个或多个扫描转换器230,并且在一些实施方案中,多达四个图元流被级联到存储资源205中的缓冲器。扫描转换器230执行着色操作和其他操作,诸如裁剪、透视划分、剪切和视口选择等。扫描转换器230生成一组232像素,该组像素随后在图形流水线200的像素处理部分202中被处理。
22.在例示的实施方案中,像素着色器234输入像素流(例如,包括像素组232)并且响应于输入像素流而输出零或另一像素流。输出合并器块236对从像素着色器234接收的像素执行混合、深度、模板或其他操作。
23.图形流水线200中的一些或所有着色器使用存储在存储资源205中的纹理数据执行纹理映射。例如,像素着色器234可以从存储资源205读取纹理数据并且使用纹理数据来对一个或多个像素进行着色。然后将着色的像素提供给显示器以呈现给用户。如本文所讨论的,图形流水线200中的着色器所使用的纹理数据是使用高速缓存207来高速缓存的。响应于高速缓存207中的高速缓存未命中,例如基于高速缓存207的高速缓存行的部分中的地址的位置、请求或数据的启发法或特性、时间局部性、空间局部性等来选择性地生成未命中请求。
24.图3是根据一些实施方案的高速缓存行的框图,这些高速缓存行具有在第一读取循环301中分布在多个扇区上的请求和在第二读取循环302中被限制到单个扇区的请求。高
速缓存行300、305表示在图1所示的高速缓存151至153的一些实施方案和图2所示的高速缓存207的一些实施方案中的高速缓存行。高速缓存行300、305用于存储用于图形处理的纹理,并且高速缓存行因此相对较大。例如,高速缓存行300、305可各自存储128字节(即,1k位)的数据以供对应的计算单元或其他处理器、处理器核心、处理元件等进行存取。在例示的实施方案中,高速缓存行300、305被划分成两个扇区。然而,在一些实施方案中,高速缓存行300、305被划分成多于两个扇区。
25.在第一读取循环301期间,高速缓存行300接收对地址的读取请求,该地址指示保持由高速缓存行300存储的字节的子集的位置310。位置310在高速缓存行300的第一扇区311中。高速缓存行300还接收对地址的读取请求,这些地址指示保持由高速缓存行300存储的字节的另一子集的位置315。位置315在高速缓存行300的第二扇区312中。在例示的实施方案中,对位置315和位置310的读取请求在高速缓存行300中未命中。
26.在第二读取循环302期间,高速缓存行305接收对地址的读取请求,这些地址指示保持由高速缓存行305存储的字节的子集的位置320。位置320在高速缓存行305的第一扇区321中,并且位置320中无一者在高速缓存行305的第二扇区322中。在例示的实施方案中,对位置320的读取请求在高速缓存行305中未命中。
27.基于高速缓存行300、305中的高速缓存未命中的位置而针对第一扇区311、321、第二扇区312、322或扇区311、312、321、322(例如,完整高速缓存行300和305)选择性地生成未命中请求。在一些实施方案中,还使用高速缓存未命中的其他启发法或特性来确定是否针对第一扇区311、321、第二扇区312、322或两扇区311、312、321、322生成未命中请求,如本文所讨论的。例如,可以使用高速缓存未命中的所测量的、所预期的或所预测的空间局部性或时间局部性来确定如何生成未命中请求。在例示的实施方案中,响应于包括第一扇区311中的位置310和第二扇区312中的位置315的第一读取循环301中的高速缓存未命中而针对完整高速缓存行300(例如,扇区311和扇区312)生成未命中请求。在第二读取循环302期间,响应于第二读取循环302中的高速缓存未命中针对仅在第一扇区321中的位置320,仅针对第一扇区321生成未命中请求(并且绕过生成对第二扇区322的未命中请求)。
28.图4是根据一些实施方案的高速缓存行400的框图,该高速缓存行具有在第一读取循环401和第二读取循环402中不表现出高度的时间局部性的请求。高速缓存行400表示在图1所示的高速缓存151至153的一些实施方案和图2所示的高速缓存207的一些实施方案中的高速缓存行。高速缓存行400用于存储用于图形处理的纹理,并且高速缓存行因此相对较大,例如128字节的数据。在例示的实施方案中,高速缓存行400被划分成扇区411、412。然而,在一些实施方案中,高速缓存行400被划分成多于两个扇区。
29.在第一读取循环401期间,高速缓存行400接收对地址的读取请求,这些地址指示保持由高速缓存行400存储的字节的子集的位置415。位置415全部在第一扇区411内。在第二读取循环402期间,高速缓存行400接收对地址的读取请求,这些地址指示保持由高速缓存行400存储的字节的子集的位置420。位置420全部在高速缓存行400的第二扇区412中。在例示的实施方案中,至少部分地基于高速缓存未命中的实际或所预测的时间局部性而针对第一扇区411或第二扇区412选择性地生成未命中请求。因为连续读取循环(例如,第一读取循环401和第二读取循环402)中的高速缓存未命中分布在第一扇区411和第二扇区412上,所以针对完整高速缓存行(例如,第一扇区411和第二扇区412)生成未命中请求。相反,如果
对高速缓存行400的读取请求表现出高度的时间局部性,例如多个循环期间的读取请求被预期或预测为针对地址仅位于扇区411、412中的仅一者,则仅针对对应的扇区生成未命中请求。
30.还基于读取请求的所预测的空间局部性而针对高速缓存行400的不同部分生成未命中请求。例如,如果像素着色器正在跨屏幕扫描,则读取请求序列可能是针对与相邻或接近的像素位置相关联的局部地址。因此,即使在当前读取循环期间的高速缓存未命中仅(或主要)在单个扇区内,因为后续读取请求可能针对附近的地址(附近的地址可能在高速缓存行的其他扇区中),如果所预测的空间局部性高(例如,高于阈值),则存储器存取系统的效率和性能也可能通过提取完整高速缓存行而得到提高。相反,如果所预测的空间局部性低(例如,低于阈值),则如果在当前读取循环期间的高速缓存未命中是针对单个扇区中的位置,则可仅针对单个扇区生成未命中请求。在一些实施方案中,针对迟滞窗口保持与读取请求或未命中请求相关联的信息,并且使用迟滞窗口中的信息来确定或预测读取请求或未命中请求的时间局部性或空间局部性。
31.图5是根据一些实施方案的选择性地生成对高速缓存行的部分的未命中请求的方法500的流程图。方法500在图1所示的处理系统100和图2所示的图形流水线200中的一些实施方案中实现。高速缓存行包括两个扇区(或部分或一半),但在一些实施方案中高速缓存行包括更多的扇区。
32.在框505处,高速缓存在请求循环期间接收从线程到高速缓存行的读取请求。读取请求包括指示高速缓存行和对应的存储器内的位置的地址。在例示的实施方案中,读取请求在高速缓存行中未命中,这触发了选择性地生成未命中请求,以从后备存储器或更高级别的高速缓存提取所请求的数据。
33.在决策框510处,高速缓存确定在当前请求循环期间生成高速缓存未命中的线程是否映射到高速缓存行的两个扇区中的位置。如果是,则方法500前进至框520。否则,方法500前进至框515。
34.在决策框515处,高速缓存基于某些启发法来确定空间局部性或时间局部性的可能性。在一些实施方案中,基于是否存在与固定或可编程启发法的匹配来确定空间局部性或时间局部性的可能性。例如,是使用色彩压缩还是深度压缩来生成高速缓存行中的信息,这指示相关联的数据具有高度的空间局部性并且后续读取请求可能包括高速缓存行的两个扇区中的地址。因此,如果预期信息具有高度的局部性,则方法500前进至框520。否则,方法500前进至框525。
35.在框520处,高速缓存生成对完整高速缓存行的未命中请求,即,高速缓存生成包括高速缓存行的所有扇区的未命中请求。在框525处,高速缓存生成对高速缓存行的扇区(或部分或一半)的未命中请求,该扇区包括对应于在请求循环期间线程的高速缓存未命中中的地址的位置。
36.如本文所公开的,在一些实施方案中,一种装置包括:纹理高速缓存,该纹理高速缓存包括被划分成多个子集的高速缓存行;以及图形流水线中的至少一个计算单元,其中处理器被配置为响应于对与纹理高速缓存中的高速缓存行的多个子集中的第一子集相关联的地址的存储器存取请求的高速缓存未命中,而选择性地生成对高速缓存行的第一子集的未命中请求。在一个方面,该至少一个计算单元被配置为确定与存储器存取请求相关联
的高速缓存未命中是仅映射到多个子集中的第一子集,还是映射到除多个子集中的第一子集之外或不同于第一子集的一个或多个子集。在另一方面,该至少一个计算单元被配置为响应于高速缓存未命中映射到除多个子集中的第一子集之外或不同于第一子集的子集而生成对完整高速缓存行的未命中请求。在又一方面,该至少一个计算单元被配置为响应于存储器存取请求仅映射到第一子集而确定是否针对纹理数据启用色彩压缩和深度压缩中的至少一者。
37.在一个方面,该至少一个计算单元被配置为响应于针对纹理数据启用色彩压缩和深度压缩中的至少一者而生成对完整高速缓存行的未命中请求。在另一方面,该至少一个计算单元被配置为响应于未针对纹理数据启用色彩压缩和深度压缩中的至少一者而生成对高速缓存行的第一子集的未命中请求。在又一方面,该至少一个计算单元被配置为基于存储器存取请求的时间局部性和空间局部性中的至少一者而选择性地生成对第一子集或多个子集的未命中请求。
38.在一个方面,该至少一个计算单元被配置为响应于预期存取多个子集的存储器存取请求序列,响应于第一子集中的高速缓存未命中而生成对多个子集的未命中请求。在另一方面,该至少一个计算单元被配置为响应于第一子集中的高速缓存未命中并且响应于具有高于阈值的空间局部性的存储器存取请求序列而生成对多个子集的未命中请求。在又一方面,该至少一个计算单元被配置为响应于具有低于阈值的空间局部性的存储器存取请求而生成对第一子集的未命中请求。
39.在一些实施方案中,一种方法包括:检测对纹理高速缓存中的高速缓存行的未命中请求,该纹理高速缓存包括被划分成多个子集的高速缓存行;以及响应于对与纹理高速缓存中的高速缓存行的多个子集中的第一子集相关联的地址的高速缓存未命中,而选择性地生成对高速缓存行的第一子集的未命中请求。在一个方面,方法包括:确定与存储器存取请求相关联的高速缓存未命中是仅映射到多个子集中的第一子集还是映射到除多个子集中的第一子集之外或不同于第一子集的一个或多个子集。在另一方面,方法包括:响应于高速缓存未命中映射到多个子集而生成对完整高速缓存行的未命中请求。在又一方面,方法包括:确定是否针对纹理数据启用色彩压缩和深度压缩中的至少一者。
40.在一个方面,选择性地生成未命中请求包括响应于针对纹理数据启用色彩压缩和深度压缩中的至少一者而生成对多个子集的未命中请求。在另一方面,选择性地生成未命中请求包括响应于未针对纹理数据启用色彩压缩和深度压缩中的至少一者而生成对高速缓存行的第一子集的未命中请求。在另一方面,选择性地生成未命中请求包括响应于第一子集中的高速缓存未命中并且响应于预期存取高速缓存行的不同扇区的存储器存取请求序列而生成对多个子集的未命中请求。
41.在一个方面,选择性地生成未命中请求包括响应于第一子集中的高速缓存未命中并且响应于具有高于阈值的空间局部性的存储器存取请求序列而生成对多个子集的未命中请求。在另一方面,选择性地生成未命中请求包括响应于具有低于阈值的空间局部性的存储器存取请求而生成对第一子集的未命中请求。
42.在一些实施方案中,一种装置包括:纹理高速缓存,该纹理高速缓存包括被划分成第一扇区和第二扇区的高速缓存行;以及图形流水线中的至少一个计算单元,其中该至少一个计算单元被配置为响应于在请求循环期间接收的存储器存取请求的高速缓存未命中
处于第一扇区中而生成对第一扇区的未命中请求,并且绕过生成对第二扇区的未命中请求。在一个方面,该至少一个计算单元被配置为响应于在请求循环期间接收的存储器存取请求的高速缓存未命中处于第一扇区和第二扇区中而生成对第一扇区和第二扇区的未命中请求。
43.计算机可读存储介质包括在使用期间可由计算机系统访问以向计算机系统提供指令和/或数据的任何非暂态存储介质或非暂态存储介质的组合。此类存储介质可以包括但不限于光学介质(例如,光盘(cd)、数字通用光盘(dvd)、蓝光光盘)、磁性介质(例如,软盘、磁带或磁性硬盘驱动器)、易失性存储器(例如,随机存取存储器(ram)或高速缓存)、非易失性存储器(例如,只读存储器(rom)或闪存存储器)、或基于微机电系统(mems)的存储介质。计算机可读存储介质可以嵌入计算系统(例如,系统ram或rom)中,固定地附接到计算系统(例如,磁性硬盘驱动器),可移除地附接到计算系统(例如,光盘或基于通用串行总线(usb)的闪存存储器),或者经由有线或无线网络(例如,网络可访问存储装置(nas))耦接到计算机系统。
44.在一些实施方案中,上述技术的某些方面可以由执行软件的处理系统的一个或多个处理器实现。软件包括可执行指令的一个或多个集合,该可执行指令存储在或以其他方式有形地体现在非暂态计算机可读存储介质上。软件可包括指令和某些数据,这些指令和数据在由一个或多个处理器执行时操纵一个或多个处理器以执行上述技术的一个或多个方面。非暂态计算机可读存储介质可包括例如磁盘或光盘存储设备、固态存储设备诸如闪存存储器、高速缓存、随机存取存储器(ram)或其他一个或多个非易失性存储器设备等。存储在非暂态计算机可读存储介质上的可执行指令可以是源代码、汇编语言代码、目标代码、或者被一个或多个处理器解释或以其他方式执行的其他指令格式。
45.应当注意,并非以上在一般描述中描述的所有活动或元件都是必需的,特定活动或设备的一部分可能不是必需的,并且可以执行一个或多个另外的活动,或者除了所描述的那些之外还包括元件。更进一步地,列出活动的顺序不一定是执行它们的顺序。另外,已经参考具体实施方案描述了这些概念。然而,本领域普通技术人员理解,在不脱离如以下权利要求中阐述的本公开的范围的情况下,可以进行各种修改和改变。因此,说明书和附图被认为是说明性的而非限制性的,并且所有此类修改旨在被包括在本公开的范围内。
46.上文已经关于具体实施方案描述了益处、其他优点和问题的解决方案。然而,益处、优点、问题的解决方案以及可以导致任何益处、优点或解决方案出现或变得更显著的任何特征不应被解释为任何或所有权利要求的关键的、必需的或基本的特征。此外,上文公开的特定实施方案仅是说明性的,因为所公开的主题可以以受益于本文中的教导内容的本领域的技术人员显而易见的不同但等效的方式来修改和实践。除了以下权利要求书中所描述的之外,不旨在对本文所示的构造或设计的细节进行限制。因此,显而易见的是,可以改变或修改上文公开的特定实施方案,并且所有此类变化被认为是在所公开的主题的范围内。因此,本文寻求的保护如以下权利要求中所阐述。

技术特征:
1.一种装置,包括:纹理高速缓存,所述纹理高速缓存包括被划分成多个子集的高速缓存行;和图形流水线中的至少一个计算单元,其中处理器被配置为响应于对与所述纹理高速缓存中的高速缓存行的所述多个子集中的第一子集相关联的地址的存储器存取请求的高速缓存未命中,而选择性地生成对所述高速缓存行的所述第一子集的未命中请求。2.根据权利要求1所述的装置,其中所述至少一个计算单元被配置为确定与存储器存取请求相关联的所述高速缓存未命中是仅映射到所述多个子集中的所述第一子集还是映射到除所述多个子集中的所述第一子集之外或不同于所述第一子集的一个或多个子集。3.根据权利要求2所述的装置,其中所述至少一个计算单元被配置为响应于所述高速缓存未命中映射到除所述多个子集中的所述第一子集之外或不同于所述第一子集的子集而生成对完整高速缓存行的未命中请求。4.根据权利要求3所述的装置,其中所述至少一个计算单元被配置为响应于所述存储器存取请求仅映射到所述第一子集而确定是否针对纹理数据启用色彩压缩和深度压缩中的至少一者。5.根据权利要求4所述的装置,其中所述至少一个计算单元被配置为响应于针对所述纹理数据启用色彩压缩和深度压缩中的所述至少一者而生成对所述完整高速缓存行的未命中请求。6.根据权利要求4或权利要求5所述的装置,其中所述至少一个计算单元被配置为响应于未针对所述纹理数据启用色彩压缩和深度压缩中的所述至少一者而生成对所述高速缓存行的所述第一子集的未命中请求。7.根据任一前述权利要求所述的装置,其中所述至少一个计算单元被配置为基于所述存储器存取请求的时间局部性和空间局部性中的至少一者而选择性地生成对所述第一子集或所述多个子集的所述未命中请求。8.根据权利要求7所述的装置,其中所述至少一个计算单元被配置为响应于预期存取所述多个子集的存储器存取请求序列,响应于所述第一子集中的高速缓存未命中而生成对所述多个子集的未命中请求。9.根据权利要求7或权利要求8所述的装置,其中所述至少一个计算单元被配置为响应于所述第一子集中的高速缓存未命中并且响应于具有高于阈值的空间局部性的存储器存取请求序列而生成对所述多个子集的未命中请求。10.根据权利要求9所述的装置,其中所述至少一个计算单元被配置为响应于具有低于所述阈值的空间局部性的所述存储器存取请求而生成对所述第一子集的未命中请求。11.一种方法,包括:检测对纹理高速缓存中的高速缓存行的未命中请求,所述纹理高速缓存包括被划分成多个子集的高速缓存行;以及响应于对与所述纹理高速缓存中的高速缓存行的所述多个子集中的第一子集相关联的地址的高速缓存未命中,而选择性地生成对所述高速缓存行的所述第一子集的未命中请求。12.根据权利要求11所述的方法,还包括:确定与存储器存取请求相关联的所述高速缓存未命中是仅映射到所述多个子集中的所述第一子集还是映射到除所述多个子集中的所
述第一子集之外或不同于所述第一子集的一个或多个子集。13.根据权利要求12所述的方法,还包括:响应于所述高速缓存未命中映射到所述多个子集而生成对完整高速缓存行的未命中请求。14.根据权利要求13所述的方法,还包括:确定是否针对纹理数据启用色彩压缩和深度压缩中的至少一者。15.根据权利要求14所述的方法,其中选择性地生成所述未命中请求包括响应于针对所述纹理数据启用色彩压缩和深度压缩中的所述至少一者而生成对所述多个子集的未命中请求。16.根据权利要求14或权利要求15所述的方法,其中选择性地生成所述未命中请求包括响应于未针对所述纹理数据启用色彩压缩和深度压缩中的所述至少一者而生成对所述高速缓存行的所述第一子集的所述未命中请求。17.根据任一前述权利要求所述的方法,其中选择性地生成所述未命中请求包括响应于所述第一子集中的高速缓存未命中并且响应于预期存取所述高速缓存行的不同扇区的存储器存取请求序列而生成对所述多个子集的未命中请求。18.根据任一前述权利要求所述的方法,其中选择性地生成所述未命中请求包括响应于所述第一子集中的高速缓存未命中并且响应于具有高于阈值的空间局部性的存储器存取请求序列而生成对所述多个子集的未命中请求。19.根据权利要求18所述的方法,其中选择性地生成所述未命中请求包括响应于具有低于所述阈值的空间局部性的所述存储器存取请求而生成对所述第一子集的未命中请求。20.一种装置,包括:纹理高速缓存,所述纹理高速缓存包括被划分成第一扇区和第二扇区的高速缓存行;和图形流水线中的至少一个计算单元,其中所述至少一个计算单元被配置为响应于在请求循环期间接收的存储器存取请求的高速缓存未命中处于所述第一扇区中而生成对所述第一扇区的未命中请求,并且绕过生成对所述第二扇区的未命中请求。21.根据权利要求20所述的装置,其中所述至少一个计算单元被配置为响应于在所述请求循环期间接收的所述存储器存取请求的高速缓存未命中处于所述第一扇区和所述第二扇区中而生成对所述第一扇区和所述第二扇区的未命中请求。

技术总结
一种图形流水线[200]包括纹理高速缓存[207],该纹理高速缓存具有被划分成多个子集的高速缓存行[300,305]。该图形流水线还包括一个或多个计算单元[121,122,123],该一个或多个计算单元响应于对与该纹理高速缓存中的高速缓存行的该多个子集中的第一子集相关联的地址的存储器存取请求的高速缓存未命中,而选择性地生成对该高速缓存行的该第一子集的未命中请求。在一些实施方案中,这些高速缓存行被划分成第一扇区和第二扇区。响应于在请求循环期间接收的存储器存取请求的高速缓存未命中在该第一扇区中,这些计算单元生成对该第一扇区的未命中请求,并且绕过生成对该第二扇区的未命中请求。区的未命中请求。区的未命中请求。


技术研发人员:法塔内
受保护的技术使用者:三星电子株式会社
技术研发日:2021.12.22
技术公布日:2023/9/14
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐