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

2012-06-08 13:42 出处:PConline原创 作者:DIY 责任编辑:fanjunhui

  在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论坛帖子排行

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