AMD向左NVIDIA向右?从Fermi架构看GPU发展
  • 紫竹
  • 2009年12月30日 10:33
  • 0
[13.GigaThread线程调度 多任务并行处理]

Fermi架构中每组SM单元的可执行线程数提高到了1024条,总线程执行能力则达到了24576条,如此多的线程数如何调度分配成了一大难题,为此NVIDIA引入了新的两级分配式(Two-level Distributed Thread Scheduler)线程调度机制。

第一级是芯片级的,有个全局分配引擎负责将线程块(Thread Blocks)分配到每个SM单元中,这一过程较为简单。第二级的线程调度则是SM内部,需要将32条并行线程分配到具体执行单元中去,这一过程比较复杂,因此NVIDIA引入了Dual Warp Scheduler调度机制。

AMD向左NVIDIA向右? 从Fermi架构看GPU发展 Dual Warp Scheduler双线程调度器示意图

SM单元的调度器由32条并行线程组成,NVIDIA称之为“Warp”。每组SM中都包含两条warp 调度器和两个指令发送单元(保证两个warp调度器都可以同时发送和执行指令)。由于调度器各自独立运行,每个调度器都可以发送指令到16个CUDA核心、16个Load/Store单元以及4个SFU单元中去(正好是SM单元的一半),两个调度器互不依赖因此一个周期内即可发送一个warp,而G80/G200架构中需要两个周期才能完成一个warp,相比之下Fermi执行效率大幅提升。

Dual Warp Scheduler的困难是双精度运算不支持这样的双向调度方式,好消息则是大多数指令如整数指令、浮点指令、整/浮混合指令、load(载入)、Store(存储)以及SFU指令都支持Dual Warp Scheduler,只要这两条指令是相同的。

Fermi同时支持多任务处理,那么如何在不同人物之间快速切换也变得很重要。Fermi架构支持Context Swithing(前后关联切换)可以在25微秒内切换两种不同的应用,10倍于前代架构。举例来说,当前时刻显卡在进行纹理处理,下一时刻就要进行物理加速计算,Fermi架构就可以在25微秒内保证物理加速计算所需的资源,下一时刻或许又会从物理加速计算转向别的应用,期间的切换时间越短越好。

AMD向左NVIDIA向右? 从Fermi架构看GPU发展 Fermi支持Concurrent Kernel Execution并行计算

上一段讲的不同程序之间的切换,Fermi并行处理的另外一个好处则是支持并发核心执行(Concurrent Kernel Execution),同一应用程序中不同但相关的核心可以同时运行,这样可以最大化利用GPU能力。举例来说,物理加速运算中可能需要请求流体以及刚体计算,这两者属于同一程序内的不同核心,以往的串行执行方式会是执行完流体运算后再进行刚体计算,而Fermi则可以同时进行流体与刚体计算。


文章纠错

  • 好文点赞
  • 水文反对

此文章为快科技原创文章,快科技网站保留文章图片及文字内容版权,如需转载此文章请注明出处:快科技

观点发布 网站评论、账号管理说明
热门评论
查看全部评论
相关报道

最热文章排行查看排行详情

邮件订阅

评论0 | 点赞0| 分享0 | 收藏0