MCPLive > 杂志文章 > 从图形渲染到密集计算 通用GPU的崛起

从图形渲染到密集计算 通用GPU的崛起

2010-05-18夜叉鸦《微型计算机》2010年4月下

Fermi处理器,脱离GPU羁绊,专为通用而生

然而,现行的G80/GT200架构虽然具有非常不错的灵活性,但远不足以完成如此重大的使命。NVIDIA的高层作出激进的决策:那就是全部推倒重来—这就是Fermi的出台背景。Fermi被打造成一款高度灵活的处理器,除了图形渲染的基本职能,它还整合了PhysX物理处理器以及光线追踪处理器,同时让每个计算单元都拥有自己的缓存系统,可以高效地完成高负荷的浮点计算任务,比如对视频的实时优化编码,执行“任意妄为”地渲染指令、DNA排序、宇宙探索、质数计算等等,当然还包括物理计算和光线追踪计算—这些过去是CPU的专属应用。

用户也许会发问:“从CPU手中抢到这些任务,对我们会有什么好处么?会不会像那些CPU整合GPU之类的噱头而已?”其实这种好处相当显著:CPU所执行的是X86指令,程序可以任意编写,完全没有使用限制,灵活是它的大优点;另外,CPU是被设计来执行诸如任务处理之类的整数任务,固定式的浮点计算并非其特长,虽然CPU设计者始终不遗余力增强它的浮点性能。与此不同,Fermi采用一种高度并行的计算结构,它拥有多达512个CUDA计算单元,每个单元都有缓存,作为一个基本的计算单位,这些单元可以同时进行浮点计算的处理。并行度远非CPU可比—AMD的GPU虽然有更多的流处理单元,但这些单元并没有缓存系统,只是被动地接受上级数据计算后输出,通用性非常有限,加上AMD并没有提供理想的开发工具,令开发者无从下手。


Fermi的CUDA核心,拥有完整的浮点和整数计算单元,
不再在整数计算方面瘸腿,具有高度自主性。

其次,Fermi的每个CUDA核心,都在浮点计算单元之外加上整数处理单元,可执行完整的32位整数计算任务,而后者在过去只能通过模拟实现,且仅能计算24-bit整数乘法而已;同时Fermi引入了复合乘加运算机制(Fused Multiply-Add,简称FMA),每个周期可执行512单精度浮点或256个双精度浮点数运算,而上一代G200仅能支持单精度的FMA操作。当然,所有这些FMA运算都基于IEEE 754-2008浮点算法,计算结果不会出现差错。此外,Fermi的双精度浮点(FP64)性能也大大提升,峰值执行率可以达到单精度浮点(FP32)的1/2,而过去只有1/8;AMD Cypress/RV870核心的双精度浮点性能也只有单精度浮点的1/5—例如Radeon HD 5870的单精度性能达到2.72TFlops,但双精度处理时仅有544GFlops。

第三,Fermi引入了真正的缓存设计,每32个CUDA核心被配置成一组SM(Streaming Multiprocessor)流处理器,每组SM拥有64KB可配置内存,可以根据任务的性质部署成16KB共享内存加48KB一级缓存,或者48KB共享内存加16KB一级缓存的形式,从而满足不同类型程序的需要。此外,整个芯片还共享768KB的二级缓存,方便SM计算单元的输入输出—这些显然都是为通用计算而准备。


Fermi拥有16组SM流处理器,每组都具有自己的缓存
和内存系统,能够独立地完成各种密集计算应用。

计算核心的大幅增强以及缓存系统的纳入,让Fermi成为一枚高度通用的浮点处理器而非传统的GPU。其实,从数学角度来看,无论是图形渲染的浮点运算,还是物理处理、光线追踪、视频编码处理、DNA排序还是其它的数学计算,在本质上都是相同的单精度浮点或双精度浮点计算,基础的数学计算机制也完全相同,区别仅在于采用不同的算法—如果算法可以用软件方式输入,GPU依照这种算法进行结构部署并处理,那么就可以实现了通用的浮点处理任务。我们可以打个简单的比喻:这个模式相当于将CPU内的浮点计算单元完全搬移出来,作适应性改造之后再放到GPU上面,同时大大增加它的数量—这就是NVIDIA Fermi的设计立意。


复杂的CUDA Core设计和缓存系统大大增加了Fermi的规模,
它的晶体管总量达到史无前例的30亿个,给制造工作带来巨大困难。

Fermi被打造成通用型浮点处理器,加上NVIDIA一向对性能要求极高,Fermi就不可避免地成为又一个巨无霸。在产品展示之时,外界咨询为何Fermi屡屡跳票,几乎创下NVIDIA新的历史。NVIDIA的高管不禁大吐苦水:要设计出这个超大超强的玩意实在是太难了!的确,Fermi需要为每个单元建构缓存系统,要确保如此众多的核心能够高效率地协作和共享,这种难度明显超出常规的多核处理器(目前的多核CPU多只需要应对12核的协作)。NVIDIA高层与它们的科学家都深知Fermi的革命性,虽然产品屡屡因这样那样的问题跳票,但他们几乎不以为意,而对于未来始终充满自信。

分享到:

用户评论

共有评论(2)

  • 2010.06.08 13:35
    2楼

    “我们相信GPU的重要性将越来越高,直到某一天突破临界点成为计算系统的核心”很期待,要是GPU有一天被设计,又因为操作系统图形化程度越来越高,指导连同代码也开始图形化··直接用GPU运行操作系统··

    (1) (0) 回复
  • 2010.05.19 11:45
    1楼

    期待GPU与CPU的科技战!

    (1) (0) 回复

用户名:

密码: