GPU大百科全书第六章 谁也离不开的缓冲 - 图文(3)

2019-03-28 23:06

随着需求的不断增加,图形需求带来的纹理尺寸增长是非常迅速的,与此同时,诸如mip-mapping以及Generating Lightmaps之类的复杂纹理和操作也被更多的使用在了图形效果的表达过程中。这些要求让TMU获得一套更加快速有效的缓冲系统的愿望变的迫切起来,于是,第一代“实体化”的纹理缓存便出现了。

RIVA TNT白皮书中明确了Texture cache的存在

第一次透露出拥有独立纹理缓存信息的GPU是NV3,也就是我们所熟悉的RIVA TNT。遗憾的是由于公开信息的不足,我们已经无从得知出现在NV3中Texture cache的确切数量了,我们甚至不能确定他究竟是独立ram还是共享DRAM,这从侧面也反映出了当时对纹理缓存重视度的严重不足。其后NVIDIA曾经再次在NV15时代宣称其拥有独立于VRAM之外的纹理缓存,但具体信息依旧不明。到NV20时代,纹理缓存的存在渐渐被大众所接受和关注,但依旧同NV15一样确切数量无从考证,人们只能通过对NV2A的研究,将NV2X的Texture cache数量推定在了128K。其后的诸多GPU构架中都曾多次提到Texture cache,但对大小问题始终焉语不详。截止到NV40为止,整个GPU体系的纹理缓存一直处于半神秘状态,而且仅有一级,我们可以将其称为L1 Texture cache。

Texture cache对材质存储体系非常重要

相对于L1,L2 Texture cache的出现则要高调的多。伴随着DirectX 9.0C的出现,Vertex Texture的出现对L2 Texture cache提出了实际的需求,在VertexShader单元外围布置L2 Texture cache成了显卡完整支持DirectX 9.0C的重要标志之一。NVIDIA在NV40中首次引入了L2 Texture cache,大小为128K,到G70时增加至288K。ATI则在R520中加入了完整的L2 Texture cache,并在R600中将其提升至256K。

引入L2 Texture cache的G70

别看纹理缓存的作用表面跟CPU的多级cache相当,都是数据的临时告诉缓冲空间,甚至也分L1/L2两级,它最初的实际功能与操作方式却和原教旨的多级cache存在极大的区别,甚至可以说完全不同的。可以说最初的纹理缓存,只能用一片混乱来形容。

产品:GeForce GTX560Ti nVIDIA 显示芯片 最初的杂乱无章和第一次统一

● 最初的杂乱无章和第一次统一

CPU的多级cache体系,或者说原教旨意义上的cache体系的最大特点,在于通过预测以及多级高速大带宽sram对较慢的系统主存进行预取,从一般意义上来讲,L1的命中率一定会比作为扩展出现的L2更高。无论包含式cache还是排斥式,CPU的cache系统都是面向整个核心开放且功能是统一的。纹理缓冲与之最大的不同,在于L1可以被视作只为整个TMU单元提供服务,而L2则既要为充当L1的扩展缓冲,又要为Vertex Texture Fetch拾取并进行顶点纹理相关操作提供帮助。

Vertex Texture操作效果

在最初的DirectX 9.0C出现的时候,Vertex shader单元具备在TMU单元进行材质操作之前即通过Vertex Texture和Vertex Lighting按照程序要求提前访问材质库的能力,这样做可以为整个模型附上最基本的带光照信息的底层纹理,方便对Vertex shader单元对几何外形进行调节。但这一步骤的调整使得TMU之外出现了第二个需要缓冲材质的单元,因此为其开辟第二组临时缓冲区域以及由此带来的凌乱的缓冲区域及功能划分,就成了DirectX 9.0C不得不背负的负担。

Vertex Texture特效

实际上不仅仅是DirectX 9.0C的问题,纵观GPU乃至整个显示核心的发展史,缓冲区域及功能杂乱无章以及各自为政始终是图形处理器最大的“特色”。因为最初的功能分化,几乎每一种硬件管线功能都要求对应且独立的buffer,而buffer渐渐地就演变成了cache。除了我们在这里面对的Texture cache之外,ATI研发的几乎所有GPU构架都具有回写缓冲,ROP里也有Z-cache和Stencil-cache,甚至还有各种shader cache,就连output buffer曾经也可以被看做是一种cache……各自为战不仅让设计难度随着单元和功能需求的增多而不断放大,更让希望使用更好硬件资源的程序员们苦不堪言。

AMD GPU的每一个角落都能看到\

随着DirectX 10的出现,Vertex Shader和Pixel Shader单元通过ALU的形式被统一成了Unified Shader。传统的Vertex Texture Fetch的功能被全新的统一单元所替代并实现,这让两组先前纹理缓冲作用不一服务单元不同的情况得到了好转。因为不再需要对不同单元负责,现在L2 Texture cache终于可以作为L1 Texture cache的扩展缓冲而安心工作了。


GPU大百科全书第六章 谁也离不开的缓冲 - 图文(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:贵州省贵阳十二中2010届高三下学期第三次模拟考试(理综)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: