当前位置: 首页 > 专利查询>辉达公司专利>正文

用于在渲染图形时预加载纹理的技术制造技术

技术编号:27195390 阅读:34 留言:0更新日期:2021-01-31 11:48
本发明专利技术提供了一种用于在渲染图形时预加载纹理的技术。具体地,描述了用于改进的纹理映射和图形处理的系统和方法。根据示例性实现,纹理块的全部或部分被处理单元预取到中间高速缓存,使得相同的处理单元或另一处理单元随后可以从该中间高速缓存中获得该预取的纹理块。此外,在一些示例性实现中,与中间高速缓存相关联的控制电路可以节流预取请求,以避免存储器系统和/或互连系统接收到过量的预取请求。另外,在一些实现中,可以在中间高速缓存和/或处理单元处执行对预取请求的去重。一些实现还包括用于计算要预取的下一个纹理块的地址的有效技术。地址的有效技术。地址的有效技术。

【技术实现步骤摘要】
用于在渲染图形时预加载纹理的技术
[0001]相关申请的交叉引用
[0002]本申请要求于2019年7月22日提交的美国临时申请号62/876,957的优先权,其全部内容通过引用并入本文。


[0003]本公开涉及计算机图形、纹理映射,并且更具体地,涉及用于从存储器中获取纹理以进行图形处理的系统和方法。

技术介绍

[0004]智能电视,便携式电话和其他智能设备,视频游戏系统,运输用户界面(诸如汽车和飞机平视显示器),智能眼镜和虚拟现实护目镜,以及许多其他设备都具有生成3D计算机图形的能力。用户通常希望他们的计算机图形系统能够实时生成任意复杂场景的逼真图像。降低场景复杂性的一种常用方法是将其建模为附加图像映射到的表面。就像画布上的油画一样,渲染的3D模型可看起来包含许多复杂的元素(例如,巴黎圣母院利用的阴影和灯光,树木的数千片叶子,砖墙中的数百块砖,或会议室桌子的精致木纹),而无需为每个此类元素建模。基本地,将显示这种复杂性的图像虚拟地粘贴或映射到被渲染模型的表面上。附加图像通常被称为“纹理”,而将纹理应用于模型表面的过程称为“纹理映射(texture mapping)”。
[0005]通常,预先捕获或创建纹理并将其存储在存储器中。当图形系统渲染表面时,它会从存储器中获取(fetch)必要的纹理图像数据(纹理元素或“纹理像素”),并使用映射过程将纹理图像应用于该表面,以适当地缩放和过滤图像。由于纹理本身可以是丰富、复杂的图像,因此通常将其压缩以减少存储要求。图形处理“纹理映射器”通常包括在从存储器中获取纹理图像后对其进行解压缩的能力。此外,取决于用途,纹理通常可以以各种不同的格式存储。
[0006]例如,某些先前的图形系统提供了特殊的纹理高速缓存和表面存储器,用于以提供更高效访问的特殊内部格式存储纹理。作为一个示例,根据用于编程某些NVIDIA产品的NVIDIA CUDA编程指南v10.1.105版本,CUDA阵列(针对纹理获取而优化的不透明存储器布局)是一维、二维或三维的,并且由元素组成,每个元素具有1、2或4个分量,它们可以是不同分辨率的有符号或无符号的整数值或浮点值。在某些示例性非限制性NVIDIA图形系统中,CUDA阵列能够由内核通过纹理获取或表面读取和写入来访问。纹理对象或纹理引用(texture reference)根据被获取的一片纹理存储器指定纹理。维度指定纹理是否使用一个纹理坐标作为一维阵列被寻址,使用两个纹理坐标作为二维阵列被寻址,还是使用三个纹理坐标作为三维阵列被寻址。阵列的元素是纹理像素。纹理的宽度、高度和深度是指每个维度中阵列的大小。在这样的实现中,纹理获取本身可以提供线性滤波或“mip贴图”,其可以包括重新采样以将纹理映射到要在其上显示纹理的表面的特定位置。
[0007]以不同格式存储纹理以便更高效地访问也是有利的。参见例如美国专利号7,916,
149,其通过引用并入本文。特别地,所谓的“间距线性(pitch linear)”格式是用于存储纹理的通用格式。在这种“间距线性”格式中,纹理像素被顺序地存储在存储器中,即纹理像素被顺序地存储在矩形纹理区域的给定行(“间距”)中,然后纹理像素被顺序地存储在下一行中,依此类推。以这种格式,每个纹理像素行这样被存储在顺序增加的存储位置中。如果跨每行水平访问纹理像素,则这种“间距线性”布局是很好的。但是,典型的访问模式通常具有2D(或用于3D纹理的3D)空间位置。因此,在时间上紧密间隔的访问可能会沿任何方向(而不仅仅是水平方向)前进到附近的纹理像素。由于通常取决于观察者的视点,因此通常无法预先确定该空间局部性的方向。因此,当观察者四处移动时,相同的纹理将具有不同的空间局部性模式。
[0008]作为替代,纹理像素数据可以以“块线性(block linear)”格式存储在计算机可读介质中。在“块线性”格式中,存储器在逻辑上被组织为多个块,这些块是特定实现的特定页面大小(例如,高速缓存行大小)的函数。纹理像素以xy(z)块顺序存储。在每个块内,纹理像素被顺序地存储在存储器中,即给定块中的纹理像素被顺序地存储,然后下一个块中的纹理像素被顺序地存储,依此类推。以这种格式,每个纹理像素块被这样被存储在顺序增加的存储位置中。在示例性块线性格式中,存储器的页面在32个顺序行中包含8个连续的4字节纹理像素(例如32字节)。块线性格式的存储器访问成本(例如,延迟)与页面边界的总数成比例。
[0009]使用这种“线性块”格式来进一步减少分页惩罚的一种方式是组织或定义这种块为存储器“瓦片(tile)”。瓦片内的所有纹理像素都驻留在相同的物理或虚拟存储器页面中。这种瓦片划分(tiling)可以减少穿越存储器页面的惩罚。参见例如
[0010]https://developer.nvidia.com/gpugems/GPUGems2/gpugems2_chapter12.html电子版的《GPU Gems 2》第12章(NVIDIA 2005)。
[0011]尽管传统和向后兼容性可能是问题,但是上述方法已经受到技术和概念上的进步的显著影响。特别地,图形处理单元(GPU)现在在其结构和操作上是不限于图形处理的更通用的高性能计算设备。由于这些和其他原因,过去的专用纹理高速缓存很少使用和有用。取而代之的是,使用多个高速缓存存储器级别(在某些方面类似于CPU高速缓存存储器体系架构)的更通用的存储器体系架构已越来越多地用于减少高性能GPU的存储器延迟。
[0012]更详细地,随着处理器速度的提高,处理器延迟的其他方面,例如存储器访问延迟和芯片内通信延迟,变得更加显著。并行处理器(诸如现代高性能图形处理单元(GPU))具有多个快速处理核心,因此通常甚至更显著地受存储器访问延迟等的影响。现代GPU朝向越来越显著的存储器访问延迟的趋势可能会损害新的多处理器GPU的性能扩展。例如,在最近发布的GPU中,据估计,整个处理单元的整体计算功率提高了50%,而根据工作负载的不同,性能平均只能提高32-39%。随着更大芯片的制造,处理器的延迟限制在整个系统性能损失中所占的比例预计将继续增加。
[0013]对执行图形处理的GPU的存储器访问要求可与执行典型CPU工作负载的CPU的存储器访问要求显著不同。由于纹理可能非常大,因此上述纹理访问由于存储器延迟而受到的影响最大,并且它们通常还构成典型图形工作负载中的动态随机存取存储器(DRAM)读取流量最大组块。纹理处理单元和/或其他处理器可以从存储器加载纹理(也称为“纹理映射”),从而可以提供采样的纹理值以用于着色器和图像渲染中。由于纹理映射单元中没有足够的
延迟隐藏或纹理映射单元没有其他能力来防止纹理检索延迟引起瓶颈,因此在工作负载中遇到长存储器访问时,处理器可能无法达到其最佳性能。例如,大于1000个时钟周期的存储器延迟异常值并不少见。处理器的这种减慢通常可能导致存储器子系统的利用率不足,并使存储器系统无法获得请求。
[0014]常规系统采用许多技术来减轻由于长存储器访问延迟而导致的性能本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种显示场景的方法,包括:在使用存储的纹理的第一块对场景执行纹理映射的同时,由处理器生成预取请求,以从存储器层次结构的第一级存储器中检索所述存储的纹理的第二块的全部或部分;响应于所述预取请求,从所述第一级存储器中检索所述第二块的所述全部或部分;将所检索到的所述第二块的全部或部分存储在所述存储器层次结构的第二级存储器的区域中,其中所述第二级存储器的所述区域能够由所述处理器和另一处理器访问,并且其中所述第二级存储器是所述存储器层次结构中的所述第一级存储器和第三级存储器之间的中间级存储器;使用所检索到的所述第二块的全部或部分对所述场景执行纹理映射;以及将所述场景渲染到显示设备。2.根据权利要求1所述的方法,其中使用所述第一块的对所述场景的所述纹理映射由所述处理器执行,并且使用所述第二块的对所述场景的所述纹理映射由所述另一处理器执行。3.根据权利要求1所述的方法,其中所述第二块的所述全部或部分的地址由所述处理器基于从所述纹理的标头信息确定的块大小值来动态地计算,并且其中所述块大小值与所指示的用于另一纹理的另一块大小值不同。4.根据权利要求3所述的方法,其中所述第二块的所述全部或部分的所述地址进一步基于所述第一块的地址来确定,并且其中所述预取请求包括所确定的所述第二块的全部或部分的地址,和/或从所述纹理的所述标头信息确定的所述块大小值。5.根据权利要求4所述的方法,其中所述第一块和所述第二块均包括以相同的纹理映射中的块线性布局存储在所述第一级存储器中的整数个纹理像素。6.根据权利要求1所述的方法,其中所述方法还包括:对未完成的预取请求的数量进行计数,并且如果未完成的预取请求的数量小于阈值,则将所述预取请求发送到所述第一级存储器,否则丢弃所述预取请求而不将其发送到所述第一级存储器。7.根据权利要求6所述的方法,其中所述计数、所述发送和所述丢弃是在与所述第二级存储器相关联的电路中执行的。8.根据权利要求1所述的方法,其中所述方法还包括:确定所请求的所述第二块的全部或部分是否存在于所述存储器层次结构的所述第二级中,并且如果确定存在,则丢弃所述预取请求而不将所述预取请求发送到所述第一存储器。9.根据权利要求8所述的方法,其中所述丢弃是在与所述第二级存储器相关联的电路中执行的。10.根据权利要求8所述的方法,其中所述丢弃是在与所述处理器相关联的电路中执行的。11.根据权利要求1所述的方法,其中所述处理器和所述另一处理器相应地访问各自的L1高速缓存中所述第三级中的不同区域。12.根据权利要求1所述的方法,还包括:检测所述纹理映射是全屏绘制的部分,并且响应于所述检测执行所述生成预取请求。13.根据权利要求1所述的方法,其中所述存储包括:将所检索到的所述第二块的全部或部分存储在所述第二级存储器的区域中,而不存储在所述第三级存储器中。
14.根据权利要求13所述的方法,其中响应于来自所述处理器或所述另一处理器的后续提取请求,将存储在所述第二级存储器中的所检索到的所述第二块的全部或部分随后存储在所述第三级存储器中。15.一种用于显示场景的并行处理系统,包括:多个处理器;高速缓存层次结构,其至少包括第一级高速缓存存储器和第二级高速缓存存储器;显示界面;以及存储器接口,其被配置为向所述多个处理器提供对片外存储器的访问,其中所述多个处理器和与所述高速缓存层次结构相关联的控制电路被配置为:在使用存储的纹理的第一块对所述场景执行纹理映射的同时,由来自所述多个处理器的第一处理器生成预取请求,以从包括所述高速缓存层次结构的存...

【专利技术属性】
技术研发人员:P
申请(专利权)人:辉达公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1