是GPU领导未来,还是高并行处理器改变世界

时间:2022-08-19 01:05:10

是GPU领导未来,还是高并行处理器改变世界

因为GPU架构非常适用于需要高并行量的计算任务(也就是所谓的流计算),所以它在执行金融分析、气象预报、数据库分析及人工智能等计算任务时具有远高于通用处理器的优势,似乎图形市场将面临新的发展机遇。不过,看准这个市场的还有英特尔,它的Larrabee高并行处理器被广泛认为是一款具有革命意义但又存在一定争议的产品。Larrabee究竟有何神奇?为什么它对GPU存在威胁?

英特尔Larrabee

1 计算能力出众,但功能单一的高并行处理器

Larrabee能够完成高质量的图形渲染,但它与传统意义上的GPU完全不同。或者说,Larrabee是一种全新概念的特殊处理器。Larrabee的特殊之处体现在以下几个方面。

a Larrabee能够同时进行大量的计算任务,而CPU不具备这样的能力。CPU多任务的能力取决于其线程的数量,例如英特尔、AMD的四核处理器同时只能处理4个计算任务,而Larrabee可以同时进行数十个独立计算(这取决于计算内核的数量)。

b Larrabee带来了一套基于x86开发的指令系统,开发者只要对该指令系统进行编程,就能够实现程序与硬件的广泛兼容。由此看来,英特尔是希望借助Larrabee成为高并行计算领域的统治者,再获当年4004在x86指令集上的辉煌。

但是请记住,Larrabee的开发者是英特尔的处理器部门而非图形部门,这一点足以说明Larrabee更像一个专事于并行计算的协处理器。早在2005年,英特尔就在IDF信息技术峰会上对外公开了一种名为Many Core的未来处理器架构,该架构的特点就是处理器由数量庞大的微内核构成,通过微内核的协同来完成高负荷的计算任务,而Many Core架构结出的第一个成果便是Larrabee(图1)。

根据英特尔的规划,将于2009年上市的Larrabee处理器包括32个微内核,同时还将衍生出24个微内核的版本。到2010年,Larrabee的微内核数量将提升至48个,计算性能也将提升一个等级。

与常规CPU的核心不同,Larrabee的内核属于微内核体系。所谓微内核,指的是设计精简、任务单一的处理核心(现行CPU属于巨内核体系,它的每个核心都可以执行完整的任务,且支持程序的乱序执行)。Larrabee只能执行顺序指令,而无法执行跳转指令。这使得Larrabee非常适用于纯粹的数据计算,加之顺序架构在硬件实现上非常高效,每个微内核只需要使用很少的晶体管,核心频率就能够达到较高水平。

根据英特尔透露,Larrabee的工作频率将在1.7~2.5GHz之间,每个核心每周期能完成8~16个双精度浮点运算任务,这样Larrabee的单内核双精度浮点性能便达到14~40GFLOPS,拥有32个微内核的Larrabee处理器的浮点性能便可超过万亿次每秒(1TFLOPS)!若用于执行高并行度计算任务,Larrabee的性能可比常规CPU高出数十倍。

另外,Larrabee拥有自己的内存控制系统,它的内存总线采用环形设计,位宽可达到512bit,可以搭配高规格的内存系统。但这并不意味着Larrabee自身就能够单独建立一套完整的计算机系统,它仍然需要CPU的配合。CPU负责指令执行及任务的分派,Larrabee则完成CPU指定的高并行计算任务。因此,Larrabee在计算机系统中的角色相当于高性能的协处理器。英特尔的计划也是将Larrabee定位于工作站和超级计算机市场,在这些领域,Larrabee将与安腾构成一套完整的平台,并将对IBM及SUN等传统势力带来新的挑战。

2 广泛兼容的标准指令集,让API的硬件升级成为过去

除了运算能力出类拔萃以外,Larrabee还有一个优势是它创建了一套基于x86的标准指令集。x86指令集大家已经很熟悉,它为程序员提供了一套标准化的开发平台,任何x86程序都可以在任何x86处理器上运行,反之也成立。但在图形领域没有这样的通用语言;如果API版本不同,3D程序与GPU就会出现兼容问题,而图形APl3L是频频变动。虽然,NVIDIA与AMD都有GPU用于高并行计算,但问题在于两者都需要特殊的开发环境,NVIDIA平台编写的程序不能够得到AMD GPU的支持,反之亦然。

因此,英特尔决定在x86指令系统基础上为Larrabee开发出标准化的指令集,让程序与Larrabee处理器实现广泛的兼容。毫无疑问,这一平台的推出会获得软件业者的欢迎。在没有竞争对手的情况,英特尔为Larrabee创建的指令系统会迅速成为高并行计算领域的标准,从而克隆当年在x86领域的成功。至于主推GPU流计算的NVIDIA与AMD,将被迫向英特尔低头,选择兼容Larrabee指令集的道路。为此,Larrabee必须具备相当关键的3D图形渲染能力。

与NVIDIA、AMD的GPU流计算方案恰好相反,Larrabee是将高并行处理器用于3D渲染。我们知道,3D程序与GPU拥有共同的指令基础,也就是我们熟知的图形API(例如DirectX和OpenGL)。图形API又是一系列功能函数的集合。图形厂商在开发GPU时对这些函数提供支持,3D程序开发者则利用这些函数来构建三维场景,那么通过API这个媒介,3D程序就能够为GPU所执行。但问题在于,图形API一直都在频频变动。新版本为了创造出更好的效果,总是引入更强大的功能函数,这使得3D程序与GPU都必须重新设计。Larrabee的标准指令集让这一切成为历史。那时,图形厂商可以直接采用Larrabee指令系统来开发3D程序,不管未来程序如何升级、增加多少视觉效果,它们都能够被任何属于Larrabee体系的硬件平台不打折扣地渲染出来。那时,DirectX与OpenGL的魔力将成为历史,API则蜕化为3D程序开发的辅助工具;而用户通过软件升级的方式就能够实现类似于从DirectX 9到DirectX 10的API升级,再不必为了升级DirectX 10而更换一块显卡。

不过,我们暂时还无法得知Larrabee在图形渲染方面的天赋,只知道它的浮点性能可以同顶尖的GPU媲美。但问题在于它能否获得软件资源的支持。现行的3D程序要直接运行于Larrabee平台上恐有难度,除非DirectX与OpenGL能够衍生出针对Larrabee指令系统的版本,但这样的可能性显然不高。既然如此,Larrabee在图形渲染方面的能力就很难被首先用于3D游戏领域,专业图形市场才可能是它发挥威力的舞台。

微软DiffectX 10.1/NVIDIA CUDA提升GPU流计算能力

微软DifeclX 10.1

面对Larrabee标准指令集的挑战,微软DirectX与OpenGL必须重新进行考量。由于OpenGL属于开放的图形API,未来若与Larrabee指令集合作不会让人感到意外,但作为DirectX的发展者,微软显然不会愿意放弃自己在图形技术领域的控制权。微软在DirectX 10.1技术纲要中就明确提出将对GPGPU(通用GPU,即让GPU负责流计算等通用任务)与流计算提供支持,这包括硬件上的四个方面:

1 更具弹性的处理单元,其结构类似于DirectX 9之前GPU的顶点渲染单元。它采用的也是类似于Larrabee核心的顺序执行架构,同时增强处理单元的双精度浮点计算能力。

2 每个单元可提供4路独立的输出流,并允许输出流在多个路径间自由选择。

3 非定长数据流的传输路径将被加快。

4 允许搭载更大的缓存,使之满足高并行计算所需的海量数据存储要求。

在软件层面上,DirectX 10.1将引入开发高并行计算程序所需的功能函数,降低开发难度。由于DirectX体系为所有GPU共同遵循,若未来DirectX能够为高并行计算提供理想的支持,软件开发者当然会乐意采用DirectX API来编制程序。这就意味着在高并行计算领域,支持DirectX的微软、NVIDIA与AMD将与Larrabee指令集展开一场正面的竞争。鉴于GPU通用计算已经获得业界的广泛认可,商业化应用也已开始,微软阵营将拥有更高的胜算。倘若DirectX体系能够尽快创建出完善的GPU高并行计算平台,那么英特尔借Larrabee指令集统一高并行计算市场的图谋将难以实现。

NVIDIA CUDA

但DirectX高并行计算毕竟是未来之物,NVIDIA与AMD现在必须面对一个问题。NVIDIA认为,在传统API基础上实施通用计算是非常愚蠢的主意,因为传统的图形API仅仅提供了图形操作的功能,没有提供类似于CPU那样通用计算的接口,编制针对GPU平台的高并行计算程序将异常麻烦。为此,NVIDIA CUDA平台出现了。

CUDA在传统API基础上进行拓展,重点在于驱动程序和函数库的内容扩充,该平台有一个专门针对NVIDIA GPU设计的C编译器(NVCC)。借助CUDA平台,开发者可以编制出能够为GPU执行的高并行运算程序,负责编译的NVCC编译器则是一个预处理器和编译器的混合体:当遇到CUDA代码的时候,它能够自动生成调用CUDA Driver的代码,而如果是标准C++代码,它则调用自己的C++编译器。至于代码的执行工作则由CPU来完成。对开发者而言,CUDA事实上已经提供非常完整的开发环境,高并行计算程序的设计者现在不需要考虑GPU硬件的问题,而只要调用CUDA提供的函数库即可编制出想要的程序,这些程序所涉及的计算任务都可以为GPU高效执行。但它同样存在不足,就是采用CUDA环境开发的程序只能在NVIDIA GPU的硬件平台上运作,而无法惠及AMD的图形平台。而且,NVIDIA已经决定带来以CUDA为基础的Tesla产品线。Tesla专门针对高并行计算市场,拥有单GPU、双GPU和四GPU的多个型号。通过Tesla平台,科学工作者构建廉价而强大的个人超级计算机(图2)成为了可能。

此外,AMD是GPU流计算概念的另一个支持者,事实上ATI是最早推出GPU流计算产品的厂商,但ATI并没有拿出相应的开发环境,到AMD时代这种局面也没有根本性改观。AMD提供的CTM硬件接口,允许开发者直接访问GPU的原生指令集和存储器,但CTM仍然属于硬件接口之列,开发者要么是通过了解硬件来开发出相应的程序,要么是通过传统的图形API进行。无论哪一种方式,编程工作都相当困难,这也是为什么AMD的流计算产品并未获得多少科研机构接纳的原因之一。暂时,AMD并没有独自开发类似NVIDIA CUDASF台的打算,看来微软未来的DirectX将是AMD的希望所在,但问题是完善支持GPU高并行计算的DirectX显然不会太快推出,在这之前AMD的流计算平台没有多少竞争力。NVIDIA的Tesla则可以借机攻城略地,获得许多高并行计算程序的支持。

NVIDIA与AMD的新一代GPU

在图形领域,Larrabee与GPU的厮杀同样激烈。但可以肯定的是,GPU在图形渲染方面的效率会比Larrabee来得优越。后者的特长在于可实现完美的软件兼容性,游戏开发者不需再为图形API的版本伤脑筋。因此,Larrabee短时间内不可能在图形领域对GPU带来什么大威胁,暂时这一领域仍然是NVIDIA与AMD的舞台。

G92核心是NVIDIA未来一年的主力军,它的核心架构完全基于G80,但改用了65nm工艺进行制造,同时增加对PCI Express 2.0接口的支持。新工艺有效减小了芯片的尺寸,也让进一步提升频率成为可能。AMD的做法与NVIDIA类似,它将在未来几个月推出55nm的RV670(图3)。RV670在R600基础上进行改进,新核心增加了对Shader Model4.1和DirectX 10.1的支持。抗锯齿性能、各向异性过滤质量都获得显著的提升,同时存储带宽的需求与晶体管的数量都被削减;此外RV670也加入PCIExpress 2.0接口支持,这些改进在提升图形性能的同时还将降低芯片功耗及制造成本,有助于将高阶产品带入主流。

在G92之后,NVIDIA下一步工作重点是G100的开发。G100的基本架构继承于G80与G92,但它将支持DirectX 10.1 API,内建数量更多、更高效的流处理器。另外,G100也将内建新的VP3视频处理器,可独立负责视频和HD高清晰度内容的硬件加速。AMD与之对抗的R700GPU则相当有趣,它将提供改进的多GPU交火技术、进而构建多芯片单卡图形系统。R700很可能只是一个基本版的GPU,AMD将通过多GPU联合的做法来构建高中低端产品线,这种做法最大的好处是可以迅速完成产品线的构建,而且多芯片设计意味着单枚GPU的复杂度降低,生产良率将由此提升,这样新一代产品就能更快速地推向市场了。

最后

Larrabee的到来引发了图形领域的变革,高并行处理器与传统的GPU将发生一场正面碰撞。可以肯定的是:在未来的超级计算系统中,高并行处理器将是不可或缺的角色,这对于IBM、SUN等传统厂商提出了新的要求。而图形工业显然发现了一个新的大金矿:GPU除了渲染3D游戏外、还能够成为计算的中枢,相信不需要太长时间,NVIDIA与AMD都会成为超级计算机巨头竟相拉拢的对象。至于图形工业本身,也将会逐渐遭遇英特尔Larrabee的挑战,但在缺乏游戏支持的情况下,设计思想前卫的Larrabee未必有能力同传统的图形势力对抗。

上一篇:Toshiba HD-A2HD-DVD播放机等(8) 下一篇:节能型办公平台新选择