正在阅读:你知道吗?NV开普勒35亿晶体管下的秘密你知道吗?NV开普勒35亿晶体管下的秘密

2012-06-08 13:42 出处:PConline原创 作者:DIY 责任编辑:fanjunhui
1前言:GPU的峰值算数性能功耗比更高回顶部

  开普勒的出现,很多测试都表明了GTX680有强悍的性能。比HD7970的性能更加优异同时,功耗却出奇地低!!!这个秘密可以从GTX680的晶体管数量说起,另外开普勒相对fermi的架构也发生了很大变化。下面说说我对开普勒架构修改的一些见解,希望大家多多交流。虽然我不是N粉或A粉,不过我用的N卡的时间确实比较多。所以对N卡的一些变化也比较敏感。

kaipule

 

各CPU核心的参数对比
GPU
GT220 (Tesla)GF110 (Fremi)GK104 (Kepler)
晶体管数
14亿30亿35.4亿
流处理器数量2405121536
核心频率648MHz772MHz1006MHz
着色器频率1476MHz1544MHzn/a
Gflops106315813090
纹理单元8064128
纹理填充率(GT/s)51.849.4128.8
显存频率(MHz)248440086008
显存带宽(GB/s)159192.4192.26
设计热功耗(W)183224195
显卡代表作GTX280GTX580GTX680

  从N卡历代架构的变化看来,可以看到了GK104相对GF110有一个奇特的改变。就是32亿晶体管增加到35.4亿晶体管。两代产品如此接近,十分罕见,另外GTX680相对于GTX580性能不但有很大提升,而且功耗更加低了。其实从我以前对GPU观察来说,芯片的性能增加了1倍,往往需要1倍甚至更多的晶体管数量为代价。那么开普勒需要提升了8.5%的晶体管,却带来了23-40%的性能提升?

kaipule
GPU和CPU架构区别

  为何开普勒高效,可以先从GPU和CPU架构区别来很好说明。可以看到CPU真正产生算数运算的部件只有很少一部分,绿色部分。而其余大部分都让控制单元以及高速缓存占据了。因此,CPU的架构在峰值算数性能会远远低于同期的GPU芯片。加上高速缓存也占据了巨大的晶体管数量,因此发热量会更大。也说明了GPU的峰值算数性能功耗比会更高。

kaipule
峰值吞吐量的比较

microphoto

  这是Westmere 架构CPU的芯片。可以看出处理器是6核,且两个对称的3核组成。不过芯片中真正作运算的单元不多。大多数用在内存管理器,各种IO控制器以及高级3级缓存,2级,1级缓存,指令控制器等。

3amd
AMD APU llano芯片,4个圈出是核心单元

kaipule
AMD的巴塞罗那处理器

  AMD的巴塞罗那处理器,同样可以看出大面积晶体管在高速缓存以及控制单元的设计当中。

kaipule
Intel的SNB处理器

  Intel的SNB处理器,共享3级缓存,各种IO控制器等,只剩下少量的晶体管是真正用于算数性能的设计。

2NVIDIA GPU历来的架构揭秘回顶部

  在NV的GPU设计上。NV不断地改进架构,优化了图形处理器中的控制单元以及高速缓存等。同时,据我了解,GPU里面的寄存器比CPU的更多,因此更加适合多线程执行的上下文切换效率。

kaipule

  Sp是真正的执行单元,从G80到GT200的进化可以看出浮点,整型执行单元暂居的比例越来越高。

kaipule

  GF100到GF104的进化可以看出,CUDA CORE在芯片的比例数量逐步增加。也成就了GF104的高效的表现。GF100的每个SM有32个核心升级为每SM有48个核心。

kaipule

  到GTX680更激进地提升了192个CORE核心。SM也更名为SMxtreme了。可以看到GF100是2个warp调度器来协调32个CUDA,GF104是2个warp协调48个CUDA。到了GK104就是4个warp调度器协调192个CUDA核心,比GF100的比例提高到了3倍。也就是说,控制单元优化后,用来设计控制单元的晶体管少了,因此可以设计更多真正的执行单元。这里顺便说说SFU单元,对于这个单元很多文章都没详细说明。它也出现在AMD之前5VLIW架构里面,所谓的比较大块的一个执行单元。SFU直接翻译是超越函数单元。就是专门用来硬件执行例如COS,SIN,log(x)这些超越函数运算。懂得应用可以节省很多其他资源的额外输出。譬如一个cox可以用SFU在一个到数个时钟周期完成,如果变成软指令,则需要编译器翻译成多个普通CUDA核心的浮点运算来组合,可能会花费几百上千个时钟周期。

kaipule
费米的执行单元示意图

8a
开普勒的执行单元示意图

  很明显开普勒的执行单元比例相对于费米来有了增加。

kaipule

  为了优化效能,开普勒大刀阔斧对smx进行调整。其中最重要是对warp调度器的硬件优化。开普勒的smx里面的4个warp调度器。Warp在nv说来是一个执行线程的宽度,一个warp包含32个线程。warp调度器的作用就是把指令高效地发放到CUDA核心,Sfu,LD单元执行,它的发射宽度是32,其中前16个和后16个是串行执行,因此允许线程私有编号是0-15和16-31实现分支。一个warp指令的调度,需要一些列复杂的硬件单元。其中核心部分是用来标记高延时操作指令的寄存器,warp硬件排序,线程块级别的调度(线程块可以包含1或多个warp块,是共享share memory等资源的基本线程级别)。开普勒相对于费米最大的改进是修正了多通道寄存器队列和多通道寄存器标记优先级的硬件部分。开普勒直接从指令编译端进行排序,因此避免了费米大量的硬件开支。

kaipule

  开普勒芯片的另外一个提高效能的理念是以空间为代价,降低异步频率带来的功耗增加。当然在28纳米的工艺下芯片的面积可以更小,抵消了3倍CUDA核心带来的代价。Fermi的2倍异步频率增加了2倍硬件流水线,因此可以带来4倍的功耗提升。开普勒则增加了3倍执行单元拟补频率的降低,同时功耗每个执行单元的功耗降低了1倍数。

kaipule

  可以看到经过几方位精准的优化后,开普勒的效能是fermi1.5-2倍左右。当然,从架构的一下了解里面可以相信GK104GF104的升级版本。通过分析,GK104在高速缓存高速缓存和寄存器模块没有重点提及。因此相信GK100nv的一个隐藏的神秘物种。

为您推荐

加载更多
加载更多
加载更多
加载更多
加载更多
加载更多
加载更多
加载更多
加载更多
热门排行

DIY论坛帖子排行

最高点击 最高回复 最新
最新资讯离线随时看 聊天吐槽赢奖品