PC走向GPGPU新时代

来源:互联网 发布:网络测试工程师学什么 编辑:程序博客网 时间:2024/05/14 17:03

在网吧硬件DIY中,最头痛的是CPU和GPU选择。想打造新亮点,就需要选高档次CPU和GPU,但花费太大;低端配置虽然能减低投入,但难留住常客。如此两难之选,往往让网吧老板们举棋不定。不过,新展露头脚的GPGPU(通用处理器),已经为PC核心硬件整合带来了灿烂曙光。或许,不久的一天,CPU和GPU真的就能合二为一,网吧随意选一款就能满足用户需求,大家也就无须为CPU和GPU费尽愁思了。

   GPGPU概念衍生于GPU技术
   GPGPU是以GPU为基础开发的,GPGPU字母组合就明确的昭示了这一信息。其前一个GP表示通用计算(GeneralPurpose),后一个GP则表示图形处理(Graphic Process)。因此有人形象地将GPGPU称为GP2U,即GP的两次方U。从完整的GPGPU定义来讲,它不仅能够进行图形处理,而且能完成CPU的运算工作,更适合高性能计算,并能使用更高级别的编程语言,在性能和通用性上更加强大。从狭义的GPGPU应用来说,GPGPU就是功能强化的GPU,GPU的优势也正是GPGPU的优势。弥补了CPU浮点运算能力的严重不足。和GPU相比,CPU最大的软肋就是浮点运算能力不足。无论是Intel的还是AMD的CPU产品,目前其浮点运算能力大多在10Gflops以下,而GPU的浮点运算能力,在2006年时就已经数倍于主流处理器了。现在的DX10显卡浮点运算能力更达到了惊人的程度,例如HD 3850显卡,浮点运算能力可达到474 Gigaflops(flops表示每秒钟能够完成的浮点运算次数,Gflops代表每秒10亿次浮点运算)。

   巨大的浮点运算能力有了用武之地,GPU和显存之间的带宽是CPU和内存的10倍以上,对巨大的浮点运算,既吃得下,也吐得出。随着多媒体视频的广泛应用,CPU的输入/输出带宽已经不堪重负。如果不能突破CPU输入/输出带宽瓶颈,纵然内部性能再强,也是无法被系统利用起来的。而GPU却可以通过纹理映射功能,解决GPU和显存之间的输入/输出带宽问题,提高场景真实度,从而让巨大的浮点运算能力有了用武之地。

   更适合重复的计算。GPU因为是专门为图形运算而设计的,考虑到了图形运算的特殊性。拿像素着色器(PixelShader)来说,当前批次所有的待处理像素,都会执行相同的像素着色程序,也就是说,相同或类似的运算会在海量的数据上重复运行。这恰恰符合SIMD(单指令多数据)的概念,让GPU非常适合处理SIMD运算,科学计算、数据库分析等高性能计算正是SIMD类型。因此不少在CPU上伤透脑筋的科研人员不得不将目标转向GPU,试图利用GPU的这种优化设计来进行图形之外的通用计算。

   拥有优秀的编程语言,以前程序员在编写着色程序,需要使用汇编语言,难度大、效率低,如今GPU的高级着色语言能够极大地提高程序员的编程效率。微软的HLSL、OpenGL的GLSL、斯坦福大学的RTSL,以及NVIDIA的Cg等高级着色语言都能够隐藏掉底层硬件的技术细节,提高GPU的开发效率。在这一点上,尽管CPU的编程语言走在前列,但GPU也已经逐渐赶了上来,开发和利用GPU比以前容易得多了。

   CPU和GPU群雄豪赌GPGPU
   在电脑产业整合化和微型化大变革时期,谁抢先一步取得GPGPU的技术主导权,谁就能称霸未来的PC芯片市场。毋庸置疑,NVIDIA、Intel和AMD对芯片市场的微妙变化和GPGPU的技术发展前景都极为关注,并展开了激烈的技术竞赛。GPU诞生于1999年,短短几年就从单一的进行三维图形渲染,变为以图形渲染为主、兼顾其他运算、处理能力的芯片。毋庸置疑,如果在此基础上继续完善,完全可以达到GPGPU的技术要求,成为PC的主要计算引擎。不过,站在不同利益角度的Intel和NVIDIA,各有各的如意算盘,而在GPGPU发展理念上也可以说是背道而驰。

   NVIDIA一马当先
   NVIDIA最早提出了GPGPU概念,其目前的主导理念是:CPU没有必要用太好、太贵的,普通CPU搭配中档独立显卡,综合性能比高端CPU搭配整合显卡要高很多。但NVIDIA的解决方案仅仅只是被“内行”们认可,这显然不是NVIDIA的初衷。2007年2月,NVIDIA正式发布了CUDA架构(Compute UnifiedDevice Architecture统一计算设备架构),这也是NVIDIA确定的GPGPU产品的正式名称。

   CUDA是GPGPU产品的一个新的基础架构,一个完整的GPGPU解决方案,它采用C语言作为编程语言提供大量的高性能计算指令开发能力,使开发者能够在GPU的强大计算能力的基础上建立起一种效率更高的密集数据计算解决方案;它提供了硬件的直接访问接口,而不必像传统方式一样必须依赖图形API接口来实现GPU的访问。CUDA是世界上第一个针对GPU的C语言开发环境的GPGPU产品,其工具集的核心是一个C语言编译器,利用它可以最大限度地提升流处理单元浮点运算能力。实际上,NVIDIA在G80显卡开发中,就已经引入了CUDA架构,其内部包含的128或96个流处理单元,达成了通用计算和图形处理两大功能,并提供了足够强大的可编程能力,使GPU性能有了质的提升。据NVIDIA测试,该显卡在CUDA架构中的峰值运算能力可达520GFlops,如果构建SLI双卡系统,可以达到1TFlops(即每秒运算1万亿次)的强大运算能力,在进行科学运算时相当于一个100颗左右CPU的大规模并行处理系统。NVIDIA采用G92核心的G80系列GeForce 8800GT显卡,可以说是CUDA架构的成功尝试,也为业界GPGPU的研发提供了宝贵的借鉴。

   Intel力拔头筹
   虽然Intel的GPGPU技术开发起步并不早,但是在芯片领域拥有长期积聚的雄厚技术基础,完全有希望开发出独具特色的GPGPU,一举超越Nvidia和AMD。

   作为全球最大的CPU供应商,Intel其实早已经敏锐地意识到,GPU通用计算将给PC带来革命性的变化,如果最终NVIDIA主导了GPGPU市场,CPU必然面临灭顶之灾。所以Intel采取了与NVIDIA以GPU为核心的截然不同的研发理念,将GPGPU纳入了CPU的发展轨道,期望继续称霸未来处理器市场。同时,Intel还义无反顾地杀向独立显卡市场。

   最近几个月来,业界普遍对Intel首款Larrabee独立显卡充满了期待。根据规划,Intel将于2008年中期推出包含32个内核、45纳米的第一代Larrabee芯片,并同时搭配大容量缓存,功耗约为150瓦左右。为了满足多元化的需求,还将衍生出24内核的低端版本。大约在2009-2010年,英特尔还将推出具有48个内核、32纳米工艺的第二代Larrabee芯片。Larrabee在硬件设计上,采用微内核设计,内核逻辑采用顺序执行结构(InOrder),可同时执行4个线程。在指令体系上,Larrabee最大的优点就是与IA架构(X86)处理器的互换性,它使用经过调整的X86指令,使现行X86计算程序可以直接被Larrabee运算执行。

   从多方消息来看,Intel这款显卡的应用重点将是通用计算,而不是传统的3D游戏。虽然Intel不擅长图形驱动开发,目前也没有独立显示核心,Larrabee的最终效率可能算不上优秀,但是其多年来的整合图形芯片制造能力并不能令人小视。譬如,Intel将会在Larrabee中引入X86指令,使得编程更加简单,同CPU之间的数据交换可以保持一致性,大大降低图形应用程序的开发周期和难度。再加上其出色的编译器,Larrabee的执行效率将非常出色。业界认为,Intel即将推出的Larrabee,是全球光线追踪性能最强悍的芯片,也将是在面对许多科学运算领域最高速的处理器,它的完全可编程能力将会给全球带来一次震撼。

   在新的CPU研发方面,Intel已经确定开发基于Nehalem构架的GPGPU,并且将会推出Havendale和Auburndale两个版本,两者都将采用两个CPU核心,图形部分将基于G45的衍生版本。因为基于Nehalem构架,Intel这两个版本的GPGPU将支持超线程技术,可同时处理4个线程。同时,Intel这两个版本的GPGPU产品定位也不一样,Havendale主要是面向桌面用户,也就是PC;而Auburndale则主要面对笔记本用户。

   按照英特尔的观点,可编程的显示计算通用架构芯片会在未来应用中占据越来越重要的地位,随着可编程的显示计算通用架构芯片逐步取代GPU的地位,显卡则会慢慢被集成化所取代,作为独立硬件生存下去的空间会越来越小。不过在目前看来,这显然是英特尔的一厢情愿的事。因为,毕竟目前GPU的运算处理能力已经远远超越了CPU。

   AMD当仁不让
   AMD已经计划,在其制程转向45nm的时候,实现CPU和GPU的整合。前不久,AMD提出了以Fusion为研发代号的硅芯片整合计划,声称已经联合部分开发商提供了一整套GPGPU开发套件,GPU的效能在部分科学计算中达到了CPU的20倍。

   早在2006年收购ATI之初,AMD就做出了一个重大举动,这就是它所发布的GPGPU“Stream Processor”(流处理器),率先将GPGPU技术引入普通应用阶段。实际上,Stream Processor相当于建立在R580核心基础上的ATI X1900XTX级别的专业显卡。它的实际用途已经是通用计算(GPGPU),而不仅仅是图像处理。众所周知,ATI X1800系列纹理单元仅仅是16个,而ATI X1900激活的像素单元则增加达到48个(每个内置两个算术逻辑单元ALU、两个标量ALU和一个分支执行单元)翻了三倍。同时AMD还为其配备了1GB GDDR3内存,频率1300MHz,显存控制器也经过调整,以优化流计算应用。它最高可同时执行512线程、512个指令缓存器、128个临时缓存器及256个常规缓存器。

   AMD 将在2008年底或是2009年初,推出与GPGPU技术息息相关的Fusion硅芯片,它不仅能将以单芯片的结构出现,而且还会以多芯片的架构出现。AMD营销技术总监和市场EMEA GiuseppeAmato说,Fusion提供基于融合处理器的GPGPU平台融合,二个Fusion处理器一起连接可以达到并行GPU的关系,更适合CPU的代码将在Fusion处理器当中的CPU部分被执行,而更适合GPU的代码也将在Fusion处理器的GPU部分被执行。

   GPGPU就在我们的身边
   所谓GPGPU (GeneralPurposeComputation on the GPU),其实就是流处理器,它兼有通用计算和图形处理两大功能,能够将图形数据流演绎得淋漓尽致。看上去很遥远,但实际上GPGPU在DirectX 9时代就已经初现雏形,随着DirectX 10时代的到来,GPU与CPU都会相继加入相应的GPGPU技术,这就是我们通常所理解的GPGPU(广义)。

   在DirectX 10时代,将会有越来越多的视频处理可以由G P U来完成,这是目前G P G P U最成熟、最广泛的一种应用。例如,在浮点运算能力上,GeForce 8800 GTX的浮点运算能力达到了520 Gflops,是上一代顶级GPU的3倍以上;在输入/输出带宽方面,上一代GPU只能最多访问4个顶点纹理和16个像素纹理,而DirectX 10时代的GPU可以最多访问128个纹理,纹理尺寸达到8192×8192,对于着色程序来说,这就等于“无限”,让GPU和显存可以实现充分地互访。此外,GPU的通用计算主要是使用其像素着色器,上一代GPU的顶点着色器则毫无用武之地,而从NVIDIA的G80和AMD的R600开始,DirectX 10的GPU都会采用统一着色器,所有的着色器都能用于通用计算,不会造成资源的浪费。

   Shader Model和着色语言的成熟也有力地助推了G P G P U的发展。早期的Shader Model 1.0和Shader Model 2.0不支持动态流控制,只能提供有限的灵活性,阻碍了GPU的通用化,而在ShaderModel 3.0中,动态流控制和着色程序被赋予几乎无限的资源访问能力,从而减少了编程时的限制。在Shader Model4.0中,一个重大变化就是Intel在VertexShader和Pixel Shader之间引入了一个新的可编程图形层--几何着色器(GeometryShader),进一步优化了动态流控制和着色程的资源访问能力,让程序员编程更加得心应手,几乎不用再担心编写程序时有任何限制,这也将让GPGPU在新时代的应用有了更多的可能性。

   早在2004年的SIGGRAPH图形大会上,就有科研人员在G P G P U论坛上预测,六年之内就会出现CPU和GPU整合在一起的产品。当时此语一出,四座哗然。但是不过两年,担当CPU和GPU整合大任的GPGPU姗姗到到来了。这到底是必然还是偶然?那么,GPGPU最终会取代CPU吗?虽然现在断言恐怕为时还过早,但可以肯定的是,在未来计算系统中,高并行处理器将是不可或缺的角色。或许,CPU和GPU两者依然会在不同的应用领域发挥各自的优势或特长,只是两者更密切了协作,最终谁也无法取代谁。

原创粉丝点击