显卡缓存从小到大,到底经历了什么?

admin 最新科技 2024-08-12 15 0

这两天后台收到一个读者朋友的留言很有意思,他说注意到几年前的Vega64显卡才16MB缓存呢,如今巨大到128MB水平了,到底是为了什么?

显卡基本架构定型已经16年

今天的显卡,就其内部结构和功能而言,架构体系形成于 2007 年。当时,英伟达和 ATI 都发布了统一着色器显卡,标志着两大显卡巨头都采用了同一个思路做显卡。

2012 年,AMD(当时已收购 ATI)发布了他们的 Graphics Core Next(GCN)架构。这种设计一直沿用至今,不过它经历了重大修改,并演变成 RDNA 和 CDNA 等形式。我们将参考 GCN 来阐明 CPU 和 GPU 之间的缓存差异,因为它提供了一个清晰的例子。

几年后,AMD还发布了这位读者说得Vega64显卡。这款显卡的GPU芯片面积是 Ryzen CPU的两倍。然而,它的缓存所占空间却明显小于 CPU。为什么与 CPU 相比,该 GPU 的缓存(尤其是二级缓存)保持在最低水平呢?

与 Ryzen 芯片相比,GPU 的 "内核"数量要高得多,因此人们可能会认为,由于 GPU 拥有 4096 个数学运算单元,因此需要大量的缓存来保持稳定的数据供应。然而,CPU 和 GPU 的工作负载有着本质的区别。

Ryzen 芯片可以同时管理多达 16 个线程,处理 16 个不同的指令,而 Vega GPU可以处理更多的线程,但其 CU 通常执行相同的指令。

此外,每个 CU 内的数学单元在一个周期内同步执行相同的计算。这种一致性将它们归类为 SIMT(单指令、多线程)设备。GPU 按顺序运行,很少偏离其他处理路线。

为了进行并行处理,CPU 会在确保数据一致性的同时处理各种不同指令。相反,GPU 重复执行类似的任务,不需要数据一致性,并不断重新启动其操作。因此,理论上不需要太大缓存。

由于渲染 3D 图形的任务主要由重复的数学运算组成,因此 GPU 不需要像 CPU 那样复杂。相反,GPU 被设计为大规模并行处理,可同时处理数千个数据点。这就是为什么与中央处理器相比,GPU 的缓存更小,但内核却更多的原因。

但是,为什么突然这两年来,显卡突然增大了缓存容量呢?

因为光追需要大数据

在过去,显卡走大显存路线,是因为光栅渲染机制下,渲染计算不算复杂,游戏的高频使用3D渲染材质体积大,放到显存中就可以了。

但是光追技术的出现改变了这一切。

在最新3A游戏中使用的光线追踪技术,是一种看似非常简单的算法:从三维世界中摄像机的位置开始画一条线模拟光线,穿过画面中的一个像素,并追踪其在空间中的轨迹。当它与一个物体互动时,检查它是什么,是否可见,并由此计算出该像素的颜色。虽然实际渲染中还有更多的工作要做,但这就是基本过程。

光线追踪之所以要求如此之高,其中一个方面就是对象检查。找出光线所到达物体的所有细节是一项艰巨的任务,因此为了加快工作进度,使用了一种叫做边界体积层次结构(简称 BVH)的东西。

可以把它想象成一个大型数据库,其中包含三维场景中使用的所有对象,每个条目不仅提供了有关结构的信息,还提供了它与其他对象之间的关系。以上面图中的例子为例,层次结构的顶层从图层A 开始,其他所有对象都包含在图层A 中,但请注意图层E 位于图层C 之外,而图层C 本身又包含图层D和图层F。

然而,BVH 的排列方式就像一棵树,遍历只需要沿着检查结果为命中的分支进行。因此可以立即剔除E,因为它不属于射线明显会经过的C。当然,在现代游戏中,BVH 的实际情况要复杂得多。

现在,我们截取一张《赛博朋克 2077》的场景,用DirectX开发工具来暂停游戏的中帧渲染,向你展示任何一个场景都是如何通过层层递增的多边形构建起来的。

现在,请试着想象一下,从你的眼睛描画一条线,穿过显示器中的一个像素,然后尝试确定到底是哪个(些)三角形与光线相交。这就是为什么BVH的使用如此重要,它大大加快了整个过程。

在这款特殊的游戏中,与许多采用光线追踪技术来照亮整个场景的游戏一样,BVH 包括两种类型的多个数据库:顶点加速结构(TLAS)和底层加速结构(BLAS)。

前者基本上是整个世界的一个大概览,而不仅仅是我们正在查看的这一小部分。在使用 NVIDIA显卡的电脑上,它看起来是这样的:

游戏只使用了两个 TLAS 结构(第二个要小得多),但总共有数千个 BLAS。

在上面的《赛博朋克 2077》截图中,总共使用了 11360 个 BLAS,占用的内存远远超过 TLAS。

这也就要求显卡必须拥有大量的大量缓存,将BLAS存储在缓存而不是显存中,来加快光线追踪的速度。

GPU 中的 BVH、数千个内核和专用光线追踪单元让这一切成为可能,而巨大的缓存则为这一切提供了急需的助力。

显卡成为缓存大户

当 GPU 架构再发展几代之后,拥有大量 L2 或 L3 高速缓存的图形芯片将成为常态,而不是新设计的独特卖点。GPU 将继续应用于广泛的通用场景,光线追踪技术将在游戏中越来越普遍,而用于显存的DRAM技术仍将落后于处理器技术的发展。

由于显卡的庞大体积,以及chiplet架构的采用,虽然缓存的SRAM 越来越难缩小,导致CPU的大容量缓存必须用3D V-Cache的形式才能塞进小小的CPU,但显卡却能用独立模块形式来构建大容量缓存。

20 年前,GPU中的缓存很少,只有几 kB 的 SRAM。而现在,你只需花不到3000元,就能买到缓存非常大的显卡,甚至可以把最早的《毁灭战士》的全部内容都装进去,而且还是两次以上!

分享:

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

标签列表