返回资讯中心
外部精选
软件工程
#开发者实时流

开发者回顾Nvidia流多处理器架构演进史

来源标题:A History of Nvidia Stream Multiprocessor (2020)

一位开发者利用周末学习CUDA和SIMT编程,将Business Card Raytracer的运行时间从101秒缩短到150毫秒,提速近700倍。他随后借助Nvidia多年公开的文档,梳理了从2006年Tesla架构到2018年Turing架构的流多处理器演进历程。

Hacker News 最新andsoitis2026/11/1 · 4 天前30 分钟阅读

以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。

上周末我花时间熟悉了CUDA和SIMT编程。这是一段富有成效的时光,最终完成了一个名片光线追踪器,速度提升了近700倍[1],从101秒降至150毫秒。这段愉快的经历为我提供了很好的借口,让我花更多时间研究这个主题,并了解Nvidia架构的演变。得益于绿队多年来发布的大量文档,我得以回溯过去,快速梳理其流多处理器令人着迷的演进历程。

本文涉及: 年份 架构 系列 芯片 工艺 发烧级显卡

2006 Tesla GeForce 8 G80 90 nm 8800 GTX 2010 Fermi GeForce 400 GF100 40 nm GTX 480 2012 Kepler GeForce 600 GK104 28 nm GTX 680 2014 Maxwell GeForce 900 GM204 28 nm GTX 980 Ti 2016 Pascal GeForce 10 GP102 16 nm GTX 1080 Ti 2018 Turing GeForce 20 TU102 12 nm RTX 2080 Ti

直到2006年,Nvidia的GPU设计都与渲染API中的逻辑阶段相关联[2]。由G71芯片驱动的GeForce 7900 GTX由三个部分组成,分别专用于顶点处理(8个单元)、片段生成(24个单元)和片段合并(16个单元)。 G71。注意Z-Cull优化会丢弃无法通过Z测试的片段。 这种关联迫使设计者猜测瓶颈所在位置,以便恰当地平衡每一层。随着DirectX 10中另一个阶段——几何着色器的出现,Nvidia工程师发现自己面临一项艰巨任务:在不知道某个阶段会被采用到什么程度的情况下平衡芯片。是时候改变了。

Nvidia通过2006年发布的“统一”Tesla架构解决了复杂性不断升级的问题。 在G80芯片中,层与层之间不再有区分。流多处理器(SM)取代了之前所有单元,因为它能够无差别地运行顶点、片段和几何“内核”。负载均衡通过根据管线需求交换每个SM运行的内核自动完成。 我们基本上抛弃了NV30/NV40的整个着色器架构,从零开始用新的通用处理器架构(SIMT)构建了新架构,这也引入了新的处理器设计方法。

  • Jonah Alben(接受extremetech.com采访) “着色器单元”不再具备SIMD能力,现在的“核心”每时钟可执行一条整数或一条float32指令。SM以32个为一组接收线程,称为warp。理想情况下,一个warp中的所有线程会在同一时间执行同一条指令,只是数据不同(因此称为SIMT)。多线程指令单元(MT)负责在线程的指令指针(IP)收敛/发散时启用/禁用warp中的线程。 两个SFU单元用于协助复杂数学计算,如平方根倒数、sin、cos、exp和rcp。这些单元每时钟也能执行一条指令,但由于只有两个,warp执行速度会被除以四。硬件不支持float64,它由软件实现,并且会极大影响执行速度。 当SM能够通过始终拥有可调度的warp来隐藏内存延迟,并且warp中的线程不发生发散(控制流使它们保持在同一指令路径上)时,SM将发挥其最大潜力。4KiB寄存器文件(RF)用于存储线程状态。消耗过多栈的线程会减少可同时保持在飞行中的线程数量,并降低性能。

Tesla旗舰芯片是基于90nm的G80,用于GeForce 8800 GTX。两个SM与一个纹理单元和Tex L1缓存一起组成一个纹理处理器集群(TPC)。凭借8个TPC,G80宣称拥有128个核心,可产生345.6 Gflops[3]。8800 GTX显卡在当时极受欢迎,获得了极佳评价,也为买得起的用户所喜爱。它如此强悍,以至于发布十三个月后,它仍然是市场上最快的GPU之一。 G80为8800 GTX提供动力。渲染输出单元(ROP)负责抗锯齿。

与Tesla一同,Nvidia推出了Compute Unified Device Architecture(CUDA)C编程语言,它是C99的超集。这对GPGPU爱好者来说是一种解脱,他们欢迎这样一种替代方案,不再需要用GLSL着色器和纹理来“欺骗”GPU。 尽管本节重点广泛讨论SM,但它只是系统的一半。SM需要由位于GPU内存中的指令和数据来供给。为了避免停顿,GPU不会像CPU那样试图通过大量缓存和推测来避免访存。GPU拥抱延迟,通过饱和内存总线来满足数千个线程的I/O。为此,像G80这样的芯片通过六条双向DRAM内存线实现高内存吞吐。 GPU拥抱内存延迟,而CPU用巨大的缓存和预测逻辑将其隐藏。

Tesla是一次冒险之举,结果却是一件非常好的事。它如此成功,以至于成为Nvidia GPU未来二十年的基础。 尽管自那以后我们确实做出了重大架构变更(Fermi是一次重大的系统架构变更,Maxwell则是处理器设计的另一次大变更),但我们在G80中引入的基本结构在今天[Pascal]仍然大量存在。

  • Jonah Alben(接受extremetech.com采访)

2010年,Nvidia发布了基于全新Fermi架构的GF100。其最新芯片的内部结构在Fermi白皮书中有大量描述[4]。 执行模型仍然围绕调度在SM上的32线程warp展开。仅仅借助40nm工艺,Nvidia就将一切翻倍/四倍化。一个SM现在可以通过两个各含16个CUDA核心的阵列同时调度两个半warp(16线程)。每个核心每时钟执行一条指令,因此一个SM每时钟可完成一条warp指令(是Tesla SM容量的4倍)。

(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →