NV30+GDDRII=一个刻骨铭心的教训
这世界上存在很多看上去毫无根据,但却又确实正确的现象,显存的更迭发展就是其中之一。自从伴随着NV30一起到来的失败的GDDR2显存之后,双数代显存性能及功耗表现差劲同时不受欢迎的魔咒就再也没有被打破过。尽管GDDR2和后来R600所采用的GDDR4都努力提升了带宽,但糟糕的功耗表现以及难以提升的频率不仅让第一代采用者大受其苦,也严重影响了自身的普及。GDDR2和GDDR4这两页历史不仅黯淡,而且很快速的就被人们翻过去了。
赌赢了GDDR5的HD4870 与之相对应的,由NV36发端并在NV40上发扬光大的GDDR3,以及在RV770上让AMD一赌翻身并由此名留史册的GDDR5,则成了显存发展历史上光辉灿烂的一页。GDDR3的出现不仅最终让SG-RAM这一更加符合显存体系操作特点的存储颗粒彻底取代了SD-RAM,更让人类首次正式踏入了GHz频率的存储时代。从GDDR3开始,显
存的运行频率和带宽开始大幅度地甩开系统内存。而GDDR5不仅以优异的性能让AMD转危为安,其极高的运行频率所带来的带宽也让显存第一次能够在真正意义上成为“寄存器溢出缓冲”,从而将整个缓冲体系联系在了一起。
GDDR4未能拯救R600
从NV10开始算起,显存见证了GPU史上所有的创新和发展,NV10(DDR)、NV20(4 MC)、NV30(GDDR2)、NV36/40(GDDR3)、R600(GDDR4)、RV770(GDDR5),这些成功和失败的背后几乎都有显存及显存体系发展变化的影响。那么,显存究竟是如何影响到GPU乃至整个显卡的表现的呢?
产品:GeForce GTX560Ti nVIDIA 显示芯片 好仓库不能没有管理员
● 好仓库不能没有管理员
显存的发展就好像一个大仓库的改造工程。随着需求的增长,仓库的厂房越来越大(容量提升);不断增大的厂房让货物的进出口矛盾得以凸显,所以厂房进出口以及能够同时进出的货物也就跟着增加了
(DDR-GDDR3-GDDR5);同时随着技术的进步,进出货的单位速度也越来越快(频率提升);这一切都让仓库的货物进出效率变得越来越高。但这一切都必须建立在一个基础之上,那就是仓库拥有称职的能够充分并合理的进行调度的管理员。这个管理员,就是显存控制器(memory controller)。
memory controller结构
尽管显存的样式不断翻新,速度和带宽也越来越夸张,但显存体系的基本结构在本质上却与最初的原始形态以及作为本源的内存管理形态没有什么分别。显存的读写直接由显存控制器进行,它与内存部分的MC几乎完全一样。双方最大的区别,在于显存控制器的并联度要远远大于内存控制器。
LMA结构示意(图片来自网络)
首次在显存控制器上引入大并行度概念的GPU是NV20,在NV20中NVIDIA采用了LMA(Lightspeed Memory Architecture )显存管理体系,不同于以往传统的单通道显存控制体系,LMA将4个32bit显存控制器以crossbar与所有显存进行直连,这让每一个显存控制器都具备了访问所有显存单元的能力,因此LMA获得了4通道并联128bit的显存管理效果。LMA的出现不仅在不改变单颗显存频率及位宽的基础上大幅提升了GPU的可用显存带宽,同时也为今天的显存管理体系创造了规则。时至今日,市售的所有显卡依旧采用多个64bit显存控制器并联的显存管理方式。
已具备现代MC雏形的R300显存控制体系
显存的最初目的,甚至是目前为止最主要的目的,在于为GPU提供材质、采样操作及帧数据的缓冲场所。作为材质的最大需求者,TMU首当其冲的从显存中获得了好处。在前面章节中关于TMU的故事里我们已经知道,当程序载入并发出材质需求时,材质便被从程序在硬盘的材质库中被load到了显存里。以显存来充当TMU读写这些材质的快速缓冲,明显比让其直接从硬盘上直接读取要快速的多。材质在显存中拥有一组内存地址(Address),当TMU需要某个材质时,它只需要让TA单元(Texture Address)扫描显存,从中找出该材质对应的地址,便可以快速的完成后续的材质拾取动作。因此从操作手法上来说,显存在GPU缓冲体系中的地位与普通内存体系为CPU进行缓冲的机制是一样的。
512bit恐怖带宽的GT200结构(点击放大) 内存体系拥有多级cache机制来提高存储系统的效率,与内存/CPU体系类似的显存/GPU体系有没有类似机制呢?有,答案依旧从材质中来,它就是Texture cache。
产品:GeForce GTX560Ti nVIDIA 显示芯片 从无到有的Texture cache
● 从无到有的Texture cache
和显存不同,由于显卡最初的工作并不涉及材质工作,所以纹理缓存的历史远没有显存来的悠久。甚至直到显卡开始具备材质处理能力时,由于要求相对较低,纹理缓存也没有在第一时间出现。
第一代出现“实体”Texture cache的产品——RIVA TNT 纹理缓存在刚出现时并不受人重视,其处境甚至可以说有些凄凉。由于需求不大,最初的纹理缓存甚至连属于自己的实体都没有得到,人们只是显存中划分的一小块独立区域,这片区域通常被分配在显存前端方便读写,TMU将需要快速缓冲的材质数据有限存放在这一小片区域中。这个甚至只能称得上是buffer的小区域,就是最初的纹理缓存。
Generating Lightmaps特性