在GPU发展史上,大核心产品通常能代表当时的技术巅峰,比如R580+、G80、GT200、GF100等。这些大核心产品在穷尽工艺极限的同时,带来了无与伦比的强大3D计算能力和人类对终极图形性能的渴求。在“开普勒”家族的发布会上,那个喜欢带来大家伙的NVIDIA却一反常态,并没有推出一颗大核心的产品和AMD的Tahiti抗争,反而发布了一颗更为“小巧精壮”的GK104。那么NVIDIA的“重型武器”在哪里呢?很快,我们看到了这颗强大的GK110,这是才是“开普勒”家族的王者之作。
GK110,对它的期盼和它即将带来的全新技术都几乎令人抓狂。这颗穷极目前晶体管制造工艺的巨兽,如果没有一个令人震撼的表现,那么无论是玩家、厂商还是NVIDIA自己,都肯定会极为不满意。不过借由GK104的强劲表现,GK110只要不出大的纰漏,拿下单核心GPU王座应该不在话下。现在,NVIDIA已经提前公布了GK110的大部分细节,那么这款巨兽究竟有怎样的设计?它的性能表现又如何?
NVIDIA给出的资料已经基本可以清楚地了解GK110的规格,GK110内部集成了71亿个晶体管,这个数字比目前全球人口还要多。举例来说,如果GK110的晶体管可以全部被拆分出来,那么除全球每人可以得到一个晶体管外,剩余的部分大约还可以做成一颗Pentium 4处理器(大约5000万个晶体管)。GK110将采用台积电28nm工艺,功耗很可能控制在300W以内。根据NVIDIA要求开普勒的每瓦特双精度性能达到费米的3~4倍来看,GK110的功耗不高于310W,至少也有230W左右。
从规格来看,GK110设计了15个SMX核心,每个SMX核心拥有192个CUDA Core,共计2880个CUDA Core。此外,在双精度能力上,GK110相比GK104也有大幅度进步。GK110的双精度性能是单精度的1/3(在GK104上这个数据是1/24),相当于每个SMX单元有64个双精度的FMA单元。它的显存位宽为384bit,显存频率未知,但估计不会低于5GHz。GK110的显存和缓存都支持ECC校验功能,对高性能计算用户非常有帮助。
在用户为关注的性能方面,由于目前尚未公布GK110的频率,因此对GK110的浮点计算能力还不是很清楚。但根据NVIDIA公布的资料,可以简单估算一下:GK110正式产品在开启14个SMX核心、782MHz的频率下,应该拥有4.2TFlops的单精度性能和1.4TFlops的双精度性能。如果是1GHz、开启所有的15个SMX核心的话,那么单精度性能将会进一步上升到5.76TFlops,双精度性能更是进一步提升到1.92TFlops—这距离2TFlops的关卡已经不远了。要知道在6年前只有Top500排行内超级计算机才可能拥有超过2TFlops的计算能力。而NVIDIA的主要竞争对手AMD的FirePro W600的单精度计算能力虽然达到4TFlops,双精度计算能力也只有1TFlops,落后NVIDIA一些。英特尔即将推出的Xeon Phi的顶级版本研发目标是单精度能力约为2TFlops,双精度能力也只有1TFlops,相比GK110都有所不如。当然,需要说明的是双精度性能实际上只对小部分需要高精度计算的用户来说很有用,对绝大部分用户包括民用计算领域的用户来说,单精度计算已经足够满足需求。比如目前比较热门的光线追踪、物理应用计算以及大部分工程类计算上,单精度依旧是绝大部分用户选择的计算方式。
除了上述的物理规格外,NVIDIA还公布了GK110的一些技术规格,比如GK110的Compute Capability(计算能力)升级到了3.5代,而之前的GF100被称为2.0,GK104则是3.0。此外在Threads/Warp(线程/波次)上,开普勒和费米系列都维持了32的规格,也就是每周期小数据宽度为32线程。大的多处理能力方面,GK110多拥有64个波次(Warp),线程处理大可以达到2048(64×32),这两个数据都相比费米时代有了重大提升—GK110相比GF100每周期线程数量提升了约33%。
需要特别说明的是,由于此次NVIDIA介绍的GK110主要着重点在计算性能方面,对玩家所关注的图形性能的介绍不多,比如曲面细分能力、多边形生成能力等,基本上没有公开数据予以展示。由于图形性能基本上不受GK110新加入的双精度能力等新特性的影响,因此玩家可以简单将其看作GK104的放大版本,本文也基本不涉及GK110的有关图形方面的性能介绍。事实上,只要频率确定,GK110的性能水平就能够由GK104的同频率性能通过简单的规模放大计算推理得出。
除此之外,GK110其他的提升主要在一些功能方面,比如支持全新的Hyper Q、动态平行分配、栅格管理单元以及GPUDirect等内容。
在之前的费米时代,NVIDIA会给出比较详细的产品资料,包括架构设计、CUDA Core细节等。但是在开普勒特别是GK104发布后,这些内容一概欠奉,或者说没有明确展示。不过这次在GK110上,NVIDIA又给出了比较详细的GK110的晶圆、架构相关的资料。
首先是NVIDIA公布的GK110架构图,这张图的第一眼感觉就是之前存在的对称性设计消失了。在GT200、GF100、GK104等GPU的架构图中,对称性是为明显的特点。但在GK110上,NVIDIA设计了奇数个SMX单元,在架构图中只能以“八上七下”的方式排布。
一般来说,这种展示用的宏观架构图,只能提供很少量的GPU信息。比如GK110架构图除了15个SMX外,围绕在GPU外围的部分还有PCI-E 3.0总线控制器、超级线程控制中心、6组显存控制器(每组64bit,共64bit×6=384bit)。相比外圈信息,里面的内容更为乏善可陈。
不过我们接下来可以进一步分析每个SMX,因为NVIDIA给出了相对比较详细的SMX结构图。从上向下来看,首先是指令缓存(instruction cache),用于存放指令等待操作。接下来是四组Warp Scheduler波次调度器。四个波次调度器能够每周期为4个宽度为32线程的波次进行排序和分发。每个波次调度器配备了两个分发单元(Dispatch),等待操作的指令会进入下方64KB×32bit的寄存器中和更下方的大规模流处理器阵列组合中。
比较GF100的设计来看,GF100的每个SM只配备了2个波次调度器,这样的设计既考虑了GF100每个SM中CUDA Core比较少的原因,也考虑了GF100的CUDA Core本身比较大而复杂,带有一定的指令逻辑能力的因素。由于NVIDIA没有公布开普勒CUDA Core的内部规格,但就目前的资料来看,可能也是类似AMD在底层采用SIMD ALU阵列的方式。
在GK110中,一个SMX中CUDA Core的数量依旧只有192个,和GK104完全相同。但是GK110的SMX额外加入了64个双精度单元,这使得GK110的理论双精度能力提升到单精度能力的1/3。至于为什么不继续提升到1/2,NVIDIA技术人员表示,在开普勒的设计上优先考虑的是每瓦特性能,因此他们认为1/3是很合理的数据。
除了新增的大量双精度单元外,从费米时代就存在的Load/Store单元(LD/ST)以及特殊功能单元(SFU)也被保存了下来。前者主要用于存储缓存或者显存中寻址的数据,以便在需要时迅速找到数据而不用去重新寻址,可以节约一些时间;后者用于执行一些特殊计算,比如正弦、余弦以及插值计算等,这也是计算中不可或缺的部分。GK110的每个SMX中总计有192个单精度CUDA Core、64个双精度单元、32个特殊功能单元和32个load/Store单元。在计算能力规范上,GK110和GK104等开普勒家族的所有产品,都完整支持IEEE 754-2008中规定的双精度和单精度要求。
继续向下看,SMX中还存在一部分称之为interconnect Network的部分,其主要作用应该是保证内部结构互联和数据传输畅通,特别是保证缓存和计算部分的通路链接。在缓存部分,每个SMX中设计了64KB可读写的共享L1缓存(和费米GF100一样),以及48KB的只读数据缓存。另外,每个SMX中还拥有多达16个纹理单元。纹理计算能力在目前的游戏中还是相当重要的,特别对诸如3DMark 11这样的使用大量高精度纹理的测试软件来说,纹理性能往往会成为瓶颈。之前的费米GF110每组SM只配备了4个纹理单元,开普勒(包括GK104等全系列产品)一举增加到16个,彻底解决了之前费米产品中纹理计算不足的问题。
这是笔者参考一些资料,绘制的GK110晶圆架构示意图。其中,15个SMX核心分布在四周。Command Processor应该是类似于总线控制、线程调度的单元。上方的Memory Controllers、ROP Partitions等指的是显存控制器、ROP单元以及一些I/O接口单元,基本上是GPU的外围和后端设备。位于中间的6个Setup模块主要应付以多边形应用为主的图形计算。不过,L2缓存没有在该图中体现出来,很可能是L2缓存分布在每个SMX核心内部。
在缓存部分,由于之前费米架构已经带来了相当先进的缓存体系,因此GK110只是做一些改进而已。从宏观角度来看,开普勒将缓存体系分为共享存储、L1缓存(一共拥有64KB,可以灵活配置,比如46KB用于共享存储、16KB用于L1缓存,或者倒过来L1占用48KB、共享缓存占用16KB,或者干脆各32KB)、L2缓存(1.5MB)、只读存储(48KB)三个部分。其他方面的改进也有一些,比如之前的波次(warp)内的线程数据交换需要在缓存内进行,会占用宝贵的缓存空间,GK110将这种数据交换挪移到寄存器上执行,速度和资源占用情况都要更好一些。
到这里为止,GK110的SMX基本内容都已经介绍完毕。相比之下,NVIDIA在GK110上宣称的3.5代的计算能力与之前的GK104的3.0代计算能力相比,主要是额外加入了大量的双精度计算模块,其余部分则基本维持和GK104相当的水平。总的来看,GK110的架构是一个对通用计算进行了大量优化、效率非常高的强大并行处理架构。
NVIDIA在开普勒家族的产品发布上一反常态,并没有采用之前的首发大核心、次发中端小核心主流产品的方式,而是一开始就将采用小核心设计的GK104推向前台,并将其定位在单核心旗舰产品上,随后紧接着又用双芯产品GeForce GTX 690占据性能王座。这背后是什么原因呢?
回顾费米产品的发布方式可以发现,NVIDIA在费米上延续了之前一直存在的首发大核心芯片的传统。但台积电早期的40nm工艺表现并不成熟,再加上Fermi的大核心产品GF100设计和工艺配合上也存在一些问题,因此GF100直到AMD发布DirectX 11产品后很长一段时间才和用户见面,并且其巨大的发热和高噪音让用户诟病不已。直到真正的中端核心GF104出场后,这样的局面才有一定改善,后期的GF114则为NVIDIA带来相当巨大的市场成功。
此外,从产品角度来看,GF100这颗核心本身架构设计是相当出色的,问题出在它的用户目标群。GF100要做到的是大而全,它要满足专业的HPC用户、Tesla用户、Quadro用户以及大众的GeForce用户的全部需求。可惜专业和大众用户的对功能的要求取向不同,比如GeForce用户不需要双精度、ECC等功能。同时专业功能如双精度本身也需要不少晶体管支持,因此GF100上的部分设计对GeForce用户来说是没用的。
其实只要仔细分析,就可以得出如下结论:
1.大众关注的GPU,必须有很好的游戏性能;专业用户关注的产品,必须要有全面的功能。
2.生产大核心的难度越来越超乎想象,对生产工艺要求很高。
这样一来,NVIDIA的做法就不难理解了。结合上文提到的近年来NVIDIA的命名方式和目前已知的信息,笔者大胆预测,GK110才应该是开普勒6系列家族的单核心旗舰产品,它才应该是GTX 680。但由于NVIDIA在大核心的生产上遇到了一贯都存在的难题,再加上NVIDIA发现GK104的性能已经强大到足以占据单核心性能王座的地步,因此将在原计划中应该被命名为GTX 660Ti或者其他中端型号的GK104,直接命名为GTX 680并以旗舰产品的形式发布。即使GK104性能不济,双核心的GK104×2也能满足争夺卡皇的需要。而GK110自然就被雪藏起来,作为开普勒的第二代旗舰产品发布,型号可能是GTX 780。GK110这种更注重专业用户利益的大核心,有足够时间等待工艺进一步成熟后投产,不需要过于在乎民用市场的性能压力。
NVIDIA在GPU架构研发上的努力有目共睹。从G80开始,NVIDIA就力求给用户一个清晰、有序、模块化的并行计算GPU架构。在特斯拉(GT200)上,NVIDIA完成了并行计算架构宏观设计的一次飞跃,分出了GPC、SM等各层次结构。在接下来的费米(GF100)上,NVIDIA带来了全新的缓存设计、更完善的GPU层级设计、更优秀的并行计算体系以及模块化方案。这些所有的研究成果和经验全部都被容纳到GK110这个史无前例的超级大规模GPU中。在这里,NVIDIA几乎凝聚了它之前所有的研发经验,这颗GPU精致、庞大而充满美感和力度。本期介绍的内容仅限于架构设计方面的内容,在接下来的文章中,你还会看到NVIDIA在GPU的逻辑控制、线程调度以及智能化方面的研发进步。让我们下期再见!
本人是一名CG相关从业者,文章中提到光线追踪是现下渲染普遍采用的方式,并提到单精度计算就能满足这种要求,不知道双精度的加强会不会带来些帮助!还在等着GK110新品的发布!