从G80开始,NVIDIA就潜心构建自己的GPU架构体系,到Kepler为止,以CUDA Core、SMX、GPC这样多层级组成的GPU内部体系已经基本成型。在Max well上,NVIDIA基本继承了自Kepler以来的GPU体系结构,也分出了诸如GPC、SMX(SMM)这样的单元。从NVIDIA官方给出的架构图来看,Maxwell在内部结构上的变化是极为显著的。
我们先来看之前Kepler的设计结构。在Kepler上的一个SMX中,CUDA Core一定程度上是作为一个整体存在的,资源的使用方式比较粗放。从Kepler的架构得知,整个Kepler的SMX中,只有一个逻辑控制单元。这个庞大的逻辑控制单元上承接指令调度、下则将所有的任务分派被CUDACore、LD/ST、SFU等单元。举个例子来说,有一个大工业区,里面包含了192家企业,为了满足这192家企业的物料进出需求,工业区设计了一个庞大而复杂的进出口中转站,所有的物料收发都由这个庞大的中转站进行排序、处理。
Kepler这样的设计,在当时看来是非常先进的。指令从GPC层级下放后,还需要经过SMX逻辑单元的处理,再交由计算单元,层层递进关系相当有序。不过问题也同样明显,多达192个CUDA Core以及其余的计算单元都需要逻辑部分来设计、调配计算任务——在计算压力极大的情况下,出现任务繁重、效率较低的问题就不奇怪了。那么应该怎么办呢?
在Max well上,NVIDIA重新设计了SMX单元,现在,新的被称作SMM(Maxwell Streaming Multiprocessor,麦克斯韦流式多引擎单元,其简称应该是MSM,但NVIDIA官方称其为SMM)的单元被使用在Maxwell架构的GPU中。相比SMX,SMM大的特点在于为每一个SMM继续进行了层级分配,SMM将之前只有独一份、较大的逻辑控制、指令分派单元并行设计为四个较小的单元,每个单元仅仅控制32个CUDA Core以及相关配套计算单元。从数据上来看,之前SMX上的Register File容量为65536×32bit。在SMM中,每个Register File的容量被缩减到16384×32bit,相当于只有之前的1/4,但一共设计了4个。
从总量来看,4个SMM的Register File与之前1个SMX的Register File容量相当。但需要注意的是,SMX的Register File需要面对192个CUDA Core和相关配套单元。在之前的SMX上,每个CUDA core可以拥有的Register File的资源参考值仅有341(65536/192,仅为数学估计,无单位,也没有相对应的架构意义),而SMM中每个CUDA Core可以拥有的资源参考值为512(16384/32)。没错,SMM的每个CUDA Core所能使用到的Register File资源相比SMX要多了近50%。可以这样理解这种改变,SMM的逻辑指令单元面对的是更少的计算核心,因此控制效率更高。
还是之前那个例子来说明,之前的Kepler为整个厂区192个工厂配置了65536个运输员,平均一个工厂只有341个运输员帮助运货。现在的Maxwell先把128个工厂分成4组,每组32个工厂,每组工厂有16384个运输员。这些运输员都可以并行工作,仅仅从数量来看,每个工厂就分配到了512个运输员,还不考虑四组运输员一起出动的情况。从这一点来看,SMM的效率得到了大幅度提升。对于这一点,NVIDIA宣称Maxwell在核心效能方面提升了35%,每瓦特效能方面提升了一倍。
Maxwell在每个SMM中降低计算部分流处理器数量并提升逻辑控制单元的数量,肯定预先经过极为复杂的模拟和计算。不难猜想,NVIDIA在观察Kepler的核心工作过程中发现了可能由于逻辑控制单元的不足,导致部分晶体管工作效率不高,白白浪费电的情况,因此才主动减少了部分计算单元。在节约电能的同时提高计算效率,不得不说这是一个双赢的设计。
GM107完整版本共拥有5个SMM,每个SMM中有128个CUDA Core,每个SMM又将CUDA Core分成4组,每组32个,总计640个CUDA Core。由于芯片太小,GM107只有一个GPC。
从Fermi开始,NVIDIA就开始着手建立GPU内部的缓存架构体系,以应对越来越复杂的计算需求,尤其是通用计算的需求。在Maxwell上,NVIDIA再次大幅度增加了内部缓存的容量。GM107集成了2MB的L2缓存,这是迄今为止所有GPU上为庞大的缓存,甚至超过了前代专门为通用计算设计的GPU GK110(1.5MB)。
不过GM107是小核心,再加上NVIDIA没有更多地公布Maxwell的缓存资料,因此对Maxwell有关缓存的设计情况还不是很清楚。不过根据现有的信息,Maxwell对缓存做出了如下改进。
首先是Maxwell将之前Kepler上L1和共享存储共同使用64KB缓存的设计做出了彻底改变。Maxwell的一级缓存结构变成独立的纹理/L1缓存搭配独立的64KB共享存储的设计。之前的Kepler上的共享缓存设计方法可以节约不少的晶体管空间,但是L1的只读状态会严重影响到数据存储效率,并且自适应的空间变更(L1和共享存储两部分可以根据需求自动划分为16KB、32KB或者64KB)也会影响到L1缓存在使用中本身的命中率。Maxwell干脆彻底分开,不再要求L1缓存具备多样的功能,大幅度提高了数据命中率并且提升了SMM的工作效率。
其次是Maxwell的缓存容量大幅度增加。GM107都使用了高达2MB的缓存,不难猜想如果更大的Maxwell核心缓存容量肯定还会大幅度提升,甚至有可能超越8MB,达到目前高端CPU的缓存容量水平。更大的缓存显著地提升了GPU自身数据缓冲的能力,大幅提升了显存、缓存存储体系的工作效率。
其他方面,Maxwell改进了GPU内部NVENC的模块,使得GPU在处理诸如H.264实时编码时速度更快,效率更高。
NVIDIA宣称新的NVENC编码模块在编码H.264文件时效率达到了之前Kepler的1.5~2倍,是传统CPU编码速度的6~8倍。
Maxwell有关架构的内容基本已表述在上文中了。不过这还是没有能回答一些关键性的问题,比如Maxwell的内部结构究竟发生了什么变化?为什么增加了如此多的计算单元和缓存,核心面积才增加了25%?CUDA Core是否有新的改进?当然,NVIDIA不公布数据,谁也不知道芯片内部的“黑科技”是什么。但有心的人还是可以通过一些简单的手段来判断芯片内部发生变化的情况,下面本文就和大家一起来简单探询其中的秘密。当然,这些都是初步估计,可能和未来NVIDIA公布的详细架构图有所不同。
首先来看GM107的晶体管密度情况。这一点其实并不用说太多。因为从NVIDIA公布的晶体管数据和芯片面积来看,GM107相比GK107的晶体管密度又有了大幅度提升。GM107是18.5亿晶体管,核心面积是148平方毫米,折合每平方毫米1250万晶体管;GK107是13亿晶体管,核心面积是118平方毫米,折合每平方毫米1100万个晶体管。简单计算可知,GM107的晶体管密度提高了大约14%——作为早期28nm和目前极其成熟的28nm工艺而言,这样的提升幅度是完全可能的。
其次是流处理器的提升情况,这就有点令人费解了。GM107对比GK107,晶体管数量增加了5.5亿个,大约42%,可流处理器数量(也就是CUDA Core数量)也从之前的384个大幅度增加了67%到640个。但是别忘记GM107还拥有2MB L2缓存。对L2这样的高速缓存来说,每1bit信息存储至少需要6个晶体管,2MB就是(2×1024×1024×8)16777216bit,总计需要使用1亿个晶体管。此外,GM107的L1部分也从之前的只读存储变成可读写的SRAM。这样一来,GM107的缓存部分耗费晶体管的数量大约在1.5亿左右。折算后,GM107真正用在非缓存部分的晶体管数量相比GK107增加了30%,但流处理器却增加了67%。
这说明什么呢?如果GM107在CUDA Core以及核心结构部分沿用了GK107的设计的话,这样的变化是不可能达到的。这就好比你花100元买到了一个价值200元的东西。从GK107以及GK106的情况来看,在开普勒架构下需要做到这一点,至少需要花费20亿晶体管。
NVIDI A到底是怎么做到的呢?经过仔细查找,发现NVIDIA在GM107的白皮书中的一句话非常重要:“Overall,with this new design, each “SM” issignificantly smaller while delivering about 90% of the per formance of a Kepler SM, and the smaller area enables us to implement many more SMs per GPU.”
NVIDIA在白皮书中的这句话的意思是:全新设计的Maxwell的SM核心能以更小的面积达到90% Kepler核心的性能,从而能让NVIDIA在GPU中从容布置更多的SM核心。
这里一个很明确的信息是:NVIDIA几乎彻底重新设计了SMM底层的结构,而不是像之前传言的那样Maxwell只是一个Kepler的翻新版本。否则无论从晶体管数量还是功耗表现来看,Maxwell都是一个不可能完成的任务。SMM的重新设计,使得Maxwell相比Kepler取得了压倒性的每瓦特性能和每平方毫米性能优势。不过问题又来了:NVIDIA的新SMM到底是什么样的呢?从白皮书以及其他的消息来源,没有找到太多的信息。不过我们可以大胆估计如下:
首先,NVIDIA新的SMM核心必须充分小,这样才能在如此有限的面积内塞入更多的CUDA Core。至于NVIDIA是如何做小的,目前没有消息,暂时无法了解。
其次,新的SMM相比上代,有多小呢?从前文NVIDIA的表述来看,新的SMM的绝对体积(除去晶体管工艺提升带来的密度增加)应该至少比SMX的90%要显著的小,这是因为NVIDIA提到每个新的SMM只能达到SMX 90%的性能。如果体积也保持在90%的话,那显然没有什么收益了。不过通过上述几个数据,可以粗略地估计SMM相对SMX的体积。
假设GK107使用GM107的工艺重新流片的话(暂且认为晶体管密度的提高来源于芯片的重新设计和工艺进步),那么它的核心面积大概只有118×0.86(晶体管密度提高了14%)=101平方毫米左右,取整数100平方毫米。这样GM107比这个“新”的GK107大了约50%,但是SMM的数量高达5个,“新”GK107的SMX数量只有2个。由于只是粗略估计,暂不考虑芯片内其余部分的体积,简单计算可知,每个SMM的体积应该在30平方毫米以内,每个SMX的体积应该在50平方毫米左右。这就意味着,NVIDIA重新设计的SMM只有SMX 60%的体积,如果考虑到其余部分也需要占据一些体积,那么扩大范围的话,SMM在理想的情况下,只有SMX 60%的体积,在差的情况下,也只有SMX 70%的体积。
新的SMM大概体积是SMX的60%~70%,但是性能却达到了后者的90%,这是一个非常了不起的成就。这就意味着,只要使用更多的SMM,就可以获得比之前SMX强得多的性能,并且SMM数量越多,超越SMX的幅度就越大。光从这一点上,NVIDIA就可以轻松获得高1.5倍的能耗比。考虑到超大容量的L2缓存以及晶体管利用效率、能源控制效率的提升,Maxwell达到Kepler两倍的每瓦特性能就不是什么难以企及的事情了。当然,现在缺少信息,NVIDIA也没有公布有关SMM设计的核心内容,至于CUDA Core底层的消息,更是从Kepler开始就悄无声息了。
尽管Maxwell目前还有很多关于底层架构的信息没有公布,但结合现在的信息来看,它确实称得上足够优秀。那么这种足够优秀究竟优秀到什么程度呢?接下来的部分,我们将在以Core i7 4960X处理器为主的测试平台上用实际的测试来验证这个问题。
GTX 750 Ti、GTX 750这对亲兄弟长得实在是非常相似,甚至核心频率都是一致的,主要的区别就是前者的流处理器单元、纹理单元的数量更多,前者拥有公版设计,后者首发就彻底开放非公版授权,甚至NVIDIA连公版产品都懒得推出。因此首发的GTX 750全部是非公版,这就使得它们的频率超过了NVIDIA对GTX 750的官方建议频率,例如本文的索泰GTX 750霹雳版其核心频率、显存频率分别为1072MHz和5200MHz。这在一定程度上提升了GTX 750的性能,抵消了部分GTX 750Ti由核心规格带来的性能增幅。我们对两者的测试结果总结就是,它们完全具备在1920×1080、高画质下流畅运行3D游戏大作的实力,而在开启了反锯齿后,除了在《孤岛惊魂3》中有些吃力以外,在其他游戏中依然能够保持较为流畅的速度。这种整体表现完全有别于过去千元内的主流显卡给我们的印象,以GTX 650为例,不要说在开启反锯齿的情况下流畅运行游戏,即使在关闭反锯齿的情况下依然在很多游戏中无法流畅运行。不得不说,这是Maxwell的巨大成功。
至于两款显卡之间的性能比较,GTX 750 Ti大约领先GTX 750 9%左右,例如在《战地3》、《尘埃3》的1920×1080、高画质设置下,GTX 750Ti分别领先GTX 750 8%和10%。不过我们也注意到1个有趣的现象,那就是在新3DMark Fire Strike Extreme测试中,GTX 750Ti领先GTX
750的幅度高达68%。原因非常简单,在Extreme模式下,该软件对显卡的显存位宽和显存容量的需求非常高。虽然两者的显存位宽都是128bit,但GTX 750Ti的显存容量达到了2MB,而GTX 750则只有1MB,出现这样一边倒的测试结果也就在情理之中了。
在看了GTX 750 Ti对比GTX 650Ti的测试结果后,我们不得不再次感叹,Maxwell的游戏性能和执行效率确实太强大了,强大到令人惊讶的地步,甚至违背了晶体管定律。因为GTX 650 Ti无论在晶体管数量、流处理器数量、核心面积、纹理单元等主要规格上都全面领先GTX 750 Ti,后者仅仅是核心频率稍高(但这绝对不足以弥补规格上的巨大劣势),而且两者还在图形架构有传承性和相似性,双方都采用的是28nm工艺,但实际的测试结果却是GTX 750Ti的游戏性能领先GTX 650Ti高达20%以上!
解释只有一个,那就是正如前文所分析的那样,Maxwell确实拥有特殊设计。它的全貌我们不得而知,但这个测试结果也验证了前文我们的推测。那就是NVIDIA几乎彻底重新设计了Maxwell的SMM底层的结构,它的SMM体积远小于Kepler的SMX, 但是性能却达到了后者的90%,效率高得令人可怕,可以轻松获得高1.5倍的能耗比,说一句秒杀Kepler并不过分。
两者的性能对比又是一边倒的局面,但仔细分析又大不一样。GTX 750 Ti较GTX 650 Ti在规格上全面落后,但性能却大幅领先。而GTX 750较GTX 650,在晶体管数量、流处理器数量上还是占有绝对的优势的,在加上前者超高的执行效率,因此双方的差距被拉大到一个可怕的程度,没错就是可怕:前者领先后者的幅度高达90%左右,例如在新3DMark Fire Strike Extreme测试中领先后者619%。这种变态的优势完全颠覆了过去我们对新一代显卡较上一代显卡的领先幅度(同级别)的认知,在过去这种领先幅度一般也就15%左右,如果在架构区别不大的情况下甚至还不足15%。好吧,我承认即使GTX750越级挑战GTX 650Ti也丝毫不惧,依旧可以取得10%以上的领先水平,完爆Kepler。
在和同价位、同级别的AMD RadeonR7 260X对决中,这两款Maxwell小将依旧可以取得大约10%左右的领先幅度,表现不俗。这个领先幅度尽管并不大,但如果考虑到这些优势是Max well在功耗、核心面积、晶体管数量等表现上都不如对方的情况下获得的,那么就很值得一提了。这再一次体现了Maxwell超高的能耗比。
参测的GTX 750 Ti(公版)和GTX 750(索泰GTX 750霹雳版)
Max well的功耗、温度表现再次表明了它的强大和可怕之处,首先来看看公版GTX 750Ti这款只装有一个简陋的、不带热管、主要以体积小得可怜的铝鳍片进行散热的显卡。它的待机核心温度、满载核心温度分别只有25℃、69℃,待机系统功耗、满载系统功耗也不过分别为84W和186W,而GTX 650Ti 的待机系统功耗、满载系统功耗却分别达到了109W和230W——GTX 750Ti又赢了,晶体管数量、流处理器数量更少,性能却更强,同时功耗还更低。同样的,GTX750也拥有不错的功耗表现,只是由于是非公版显卡,频率更高,因此满载系统功耗达到了193W,反而超出了定位更高一些的GTX 750Ti。
从NVIDIA发布Tegra,走向移动计算的那一刻开始,NVIDIA就认为未来的计算将无处不在,而快速发展的移动计算将是NVIDIA下一个增长点。因此,NVIDIA开始布局移动计算市场,并期望将NVIDIA强大的视觉计算技术用在移动SOC产品上(曾经使用的中文名称“图睿”就是明证)。不过当时GeForce桌面产品无论是GT200系列还是后来的Fermi,都算不上拥有优秀的性能功耗比。因此在Tegra产品上,NVIDIA不得不使用老旧的NV4X架构,在技术支持和实际性能表现上都不敌竞争对手。
从Kepler开始,NVIDIA将GPU设计的重心从高性能转向追求性能功耗比,设计的出发点从桌面端转向移动端。实际上这是一个更高的要求,也是NVIDIA发展中必然的转变。如果单纯追求高性能,NVIDIA完全可以在允许范围内尽可能提高芯片的频率、电压和功耗,终制造出高功耗但是高性能的热力巨兽,就像GTX 480那样,虽然强,但并不让人满意。转向性能功耗比的思路后,在设计芯片时要求设计人员尽可能多地使用较少的能源输出更为强大的性能,每瓦特能量都必须使用在合理的地方。终的产品能够以较低的功耗取得强大的性能——这样的优势,不但能体现在桌面GPU上,还能在移动产品尤其是目前火热的移动计算设备上带来明显的产品和市场优势。
在Maxwell上,NVIDIA继续在高性能功耗比的道路上迈进,Maxwell通过彻底革新的架构设计,带来了超越Kepler一倍之多的、目前所有GPU产品中高的性能功耗比。现在的Maxwell还仅有一款GM107,可想而知在GM106等更为强大的芯片发布后,能带给市场多么巨大的震撼!这几乎彻底改变了人们对GPU性能和功耗的看法。尤其是在GM100这样的大核心上如果都有GM107这样优秀的能耗比的话,有可能GM100的高性能甚至能接近目前强悍的GTX Titan SLI的水平,至少都会达到Titan Black Edition版本150%的性能幅度。特别是Maxwell架构的移动GPU上市后,笔记本电脑中那些号称低功耗高性能的产品可能要“集体失业”。
Maxwell是NVIDIA以移动产品为目标设计的,这才是它的第一代产品形态。在第二代产品形态(新的DirectX?还是全新的工艺?)出现后,我们才能真正看到Maxwell的真面目。