CPU与GPU:谁将主导下一次计算革命?
扫描二维码
随时随地手机看文章
面对CPU厂商染指GPU,NVIDIA也积极备战。NVIDIA在2007年10月从经营不善的处理器新兴企业Stexar挖到多位“武林高手”。 可千万别小瞧了Stexax,这家由原英特尔技术骨干创立的公司拥有多位奔腾Ⅱ、奔腾Ⅲ和奔腾Ⅳ设计团队的骨干,甚至还有奔腾Ⅳ中Netburst架构的首席设计师和超线程的设计者。
3月26日,本报记者独家专访了NVIDIA首席科学家David Kirk。
GPU很强
记者:经过英特尔多年“Intel inside”的市场攻势,人们对CPU已经很熟悉了,但对专注于图形计算的GPU却知之甚少。GPU与CPU有什么不同?
Kirk:长期以来,CPU一直都是单核的。CPU的设计思路是尽可能快地完成一件任务;对于GPU来说,它的任务是在屏幕上合成可以高达数百万像素的图像——也就是说有几百万个任务需要并行处理。因此,GPU被设计成并行处理很多任务,尽可能快地完成所有任务的总和,而不是像CPU那样尽可能快地完成一件任务。设计GPU的体系架构时首先考虑的是并行运算能力,之后再考虑整型运算和I/O吞吐能力。
多核的概念并没有改变CPU的设计理念,也许是尽快地做两件事或四件事,但不是并行处理很多很多任务。
记者:我看到过GPU的浮点性能数百倍于CPU的对比结果,却不知两者之间在整型计算上的比较结果。GPU只有增强其整型能力才能在通用计算中走得更远,请问在整型计算上GPU有没有补救措施呢?
Kirk:CPU的整数计算、分支、逻辑判断和浮点运算分别由不同的运算单元执行,此外还有一个浮点加速器。因此,CPU面对不同类型的计算任务会有不同的性能表现。而GPU是由同一个运算单元执行整数和浮点计算,因此,GPU的整型计算能力与其浮点能力相似。
我想,如果你仔细观察一个串行程序的运行结果,你就会发现与浮点计算能力相比,CPU的整数计算能力与GPU中流处理器的整型计算能力更接近,这是因为CPU的设计更侧重于整数计算能力。
举例来说,一个3GHz的双核CPU每秒能完成60亿条整数指令,比如说G-80 GPU,有128个1.5GHz的流处理器,每个流处理器每个计算周期可以执行两条整数指令,把这些数据相乘的结果大约是每秒3500亿~3750亿条指令,这大概是CPU运算能力的50~100倍。
我再澄清一下,GPU在整型计算方面并没有任何劣势。尽管不如在浮点计算方面优势那么大,但是GPU的整型计算能力几乎是CPU的100倍。
记者:除了计算,CPU的另一大功能是控制。从现有的结构看,GPU的控制性能要比其整型计算性能还要弱,而控制功能最终将决定GPU是否能在计算平台上唱主角。请问GPU在增加和增强控制功能上有何设想?
Kirk:GPU同样可以实现控制和分支功能。如果你有一个单线程的分支程序要运行,你可以在CPU上运行它。但是如果你有100万个线程,每个线程都有分支,那么GPU的性能将远远好于CPU。我对CPU类型的计算任务并不感兴趣。与其他人们想实现的功能相比,这项功能并不重要。与只有一个线程的计算任务相比,我认为执行与控制几百万个线程更为重要。当然,CPU也能承担这样的任务,只不过它要串行地、重复地来进行,性能上远比不上GPU。
记者:能不能只用GPU,而不用CPU,或者说彻底抛弃CPU?
Kirk:你可以这么做,但这可能不是最佳选择。GPU效率不高的地方在于处理单任务、单线程分支。如果你只有一项任务,就不能充分利用GPU。因此,如果你的任务里包含各种类型的计算——任何问题都包含串行部分和并行部分——你可以在CPU上快速运行串行部分,在GPU上运行并行部分。我认为这个问题的关键不在于竞争,而是任务的划分。
我相信未来的计算模式是不同种类处理器的混合体。西方有一条谚语 “样样都会,行行不精”。既然CPU擅长于一种类型的计算,而GPU擅长另外一种类型的计算,那么你把它们结合在一起,相互合作,就能完成更多类型的任务。
记者:在更远的将来,有没有可能制造没有CPU的系统?
Kirk:我想这是可能的——现在就可能——只不过大家不想这么做。如果你想最大限度地发挥现有硬件的功能,你就需要各种专用处理器配合工作。我想这才是最好的解决方案。
直到有一天所有的处理器都足够好了,你不再需要更好的计算机了,你可能选择一个效率低一点但架构更简单的计算机。但是到目前为止,人们还是什么都想要,想要最好的串行处理器——CPU,最好的并行处理器——GPU。我想这种需求在未来很多年都不会发生改变。我认为GPU的并行功能会越来越强大,而CPU也会想方设法改进其执行串行指令的能力。我认为这两项功能未来不会融合。
GPU在设计上有否优势
记者:x86 CPU属于CISC指令集。顾名思义,CISC在工艺实现上也同样复杂。而GPU由于大量并行的流处理器而在工艺实现上整齐划一。随着芯片上晶体管数量的剧增和功能的增加,GPU至少在测试上比CPU更省时,请问在制造过程中是否也具有优势?
Kirk:通常大家都说x86指令集有优势,但我认为有些情况下它是个劣势,因为它的兼容性是个庞大且复杂的问题。一旦你建立起x86系统,你只能继续建立x86系统。
而我们兼容旧系统的压力要小得多——不是因为我们放弃了兼容性,而是我们没有那么长的历史需要兼容——这在效率上带给我们一些优势。
除了你提到的测试,我认为还有一种很重要的考察效率的指标,这就是每平方毫米硅片所贡献的性能。因为GPU拥有更直截了当的指令集,其设计更先进,GPU上每个晶体管的平均性能要比CPU的更高。
记者:5年前我独家专访过英特尔CTO基辛格。在谈论90nm制造工艺时,他告诉我,英特尔真正的核心竞争力是设计与制造这两个阶段的双向优化。如今,半导体制造工艺已经进入45nm?留给各自独立的Fabless(无生产线芯片制造商)和Foundry(标准工艺制造商)之间的工艺冗余度越来越小。未来,你们与合作伙伴台积电如何应对这一挑战?
Kirk:首先我得指出,每个处于帕特·基辛格先生位置的人当然都会像他这么说。他总是把自己的公司说得很好。尽管我们和Foundry不是同一家企业,但我们之间密切合作,彼此之间做了优化。我不认为在这一点上有任何区别。
记者:你们做同样的事?
Kirk:是的,我们必须这么做,否则我们就没有竞争力。
记者:你对未来GPU在制造上有何展望?
Kirk:我认为前景很光明。每跨入新一代设计尺寸当然意味着更复杂的设计和更大的精力投入,但这就是我们的工作,我们必须这么做,就像英特尔一样。
CPU与GPU:融合还是集成
记者:回顾CPU的发展,由于集成了数学协处理器,Intel 80486显著提升了浮点计算的性能,后来由于集成了MMX等多媒体指令集,使得Pentium MMX的多媒体性能得以增强。NVIDIA也在2005年推出单芯片的芯片组+GPU产品C51。这些都是PC平台上SOC趋势的具体表现。请问你是如何评价CPU与GPU集成的?
Kirk:集成只是缩减成本的一种途径,而非提高性能或增强功能的良方。所以,CPU和GPU的集成对于低端或内嵌应用来说比较合理,因为这些领域需要控制成本,便携式设备、手机和笔记本电脑亦然。而对于高端应用或条件要求苛刻的应用来说,计算能力的不足意味着你无须集成,相反,你要做的是分解,通过更多的CPU和GPU来获得更强的计算能力,而不是更小的CPU和GPU。
记者:但SOC是未来趋势?
Kirk:我不这么认为。我们距离最完美的图形还有很长的距离。在准备在高端应用中进行图形集成之前,我们还应做得更好,要走的路还很长。
记者:NVIDIA从Stexar公司挖到了一批前英特尔奔腾4的骨干。在CPU厂商频频染指GPU时,你们不会让这些CPU的顶尖高手改行从事GPU的设计吧?
Kirk:就我们是否会生产CPU这个问题,我并不想做什么预测,实际上,我并不认为CPU有那么的重要。我深信,GPU距离完美还有很长的距离而CPU已接近完美。随着时间的推移,CPU的大小已变得没那么重要了。这样看来,现在或许是CPU实现集成的最佳时机。我想问的是,既然我们实施了在北桥芯片中集成图形功能的策略,又为何不集成CPU呢?这么小的东西集成起来会更方便。
记者:人们往往将PC产业的成就归结于开放的标准和大规模制造带来的经济效益,这的确是通用计算平台的属性;但却往往忽视了通用计算平台的另一个属性,即它同时也是一个开放的开发平台,从而鼓励ISV在其上快捷地开发应用,而众多的应用则促进了PC平台的繁荣。NVIDIA前不久推出的CUDA,也正是GPU从专用平台走向通用平台的一个里程碑事件,请问GPU的下一个里程碑是什么?
Kirk:我认为CUDA已经取得了空前成功,它的接受程度令人吃惊。这也表明了人们希望对整台电脑进行编程的浓厚兴趣。过去人们往往是编写一个C程序来控制CPU,再编写一个图形程序来控制GPU。你一定想通过编写一个程序来控制CPU和GPU。因此我坚信,将来CUDA将变得无处不在。如果要对CPU和GPU进行编程并管理系统中的所有资源,那就没有理由不用CUDA。
记者:您还有什么要总结的吗?
Kirk:我个人认为,GPU正逐渐将并行计算推向主流,并行计算与异构处理器系统的“联姻”将是大势所趋。而主导这场变革的就是GPU。
(以下回答为邮件回复内容)
GPU没有CPU的烦心事
记者:无论是并行计算还是虚拟化,对于在PC平台上的ISV都是新鲜事,这也意味着巨大的挑战。对于GPU而言,并行性是与生俱来的属性,但未来如果GPU唱主角的话,是否也要面对虚拟化的挑战?
Kirk:有趣的是,CPU目前所面临的主要挑战就是多核、虚拟化和大规模并行计算,而这些问题都是GPU早已提出并解决了的。作为操作系统的一部分,GPU在用于各种图形应用时,必须在各种应用需求之间被“分割”成许多时间片,因此,GPU已经成为一种虚拟资源。
记者:我个人认为,AMD的协作平台Torrenza在技术上看来比较合理:依靠开放的总线,Torrenza目前容许GPU和FPGA(现场可编程门阵列)挂在CPU总线上,第二步将把GPU和FPGA封装在一起,最终将集成在一个硅片上。这样,GPU大大提升了CPU的浮点性能,而FPGA的实时系统重构的特性则可以针对要执行的计算任务,把通用的CPU实时优化成“专用”CPU。你认为,这种CPU+GPU+FPGA——当然,你可能会改为GPU+CPU+FPGA这样的顺序——在工艺实现上和软件开发上会有哪些挑战?
Kirk:我认为开放式总线是一种非常好的方式,它让创新者能够互相竞争从而为该平台作更大贡献。这样做是否会导致集成——也就是将CPU+GPU+FPGA集成到一块芯片上,我真的不太清楚,但至少我认为不会。我认为集成是一种战略,并且应该是为某一特定目的而采用的,这些目的通常是降低成本或普及产品。我并没有看到这类集成真的是为了打造更好的系统。但我认为,这是判断开放式总线的最好方法,这样其他供应商就可以为主处理器构建协处理器芯片了。
“视觉就是计算机”
记者:人们经常从CPU厂商那里获得对计算未来的展望,最著名的要算是Sun的“网络就是计算机”;但人们却难得听到GPU厂商对计算未来的见解。即使是NVIDIA CEO黄仁勋多年前提出的“视觉就是计算机”,知道的人也不多。请告诉我们“视觉就是计算机”的内涵。
Kirk:我认为视觉计算对计算来说是至关重要的。视觉是信息输入我们大脑的最快途径。与计算机的每次交互都应该是可视的,这种可视性应该是详细、复杂、丰富多彩并且是完全三维立体的形式!因此视觉计算已经开始并且正在影响着我们的工作、娱乐以及与计算机有关的生活。视觉计算是一个过程。
记者:视觉计算将在多大程度上改变现有的产业格局?
Kirk:视觉计算对于消费者和专业人士来说比一般用途计算更为重要。视觉计算意味着要在视觉上呈现更多的信息,在视觉上实现全新的应用。更佳的视觉计算用户体验是与众不同和更加美妙的。而更高CPU性能的视觉体验很难量化,而且这一点重不重要也不太清楚。实际上,谁需要以多快的速度运行字处理软件?
记者:x86处理器成就了微软,视觉计算会不会成全另一个微软?
Kirk:我希望视觉计算能为包括微软在内的许多软件公司创造机会。GPU的性能提升为软件开发人员提供了增加应用程序互动性和丰富度的工具箱。在科学和工程设计应用以及娱乐领域中,这一点最为明显。其中娱乐领域已经具备了丰富的视觉效果。
半导体技术主管很神奇
记者:我遇到的半导体领域的技术带头人都很神奇:曾任英特尔CTO的基辛格,进入英特尔时还没上过大学;曾任AMD CTO的Fred Weber只拿到了物理学学士学位。而你本科和研究生读的都是机械工程专业,最终却大跨度地拿到了计算机科学的博士学位,现在又做了半导体厂商的首席科学家。
Kirk:实际上,我现在离出发点并不遥远,只是绕了一个圈子。大学时,我学过并行编程。那时候觉得很难也很复杂,因为我们当时使用的计算机大多数不是并行系统,并行编程好像是一种神秘的技术。后来我开始对设计和创造产生兴趣,因此选择了机械工程。机械工程中我最感兴趣的是设计以及设计工具,例如CAD,而CAD最重要的就是计算机图形学。因此,我实际上从未担任过机械工程师,我直接进入了计算机图形软件行业。当我回到学校,读计算机科学学位时,我重点集中在数学、图形学和超大规模集成电路设计上。之后,我进入了图形芯片制造业。
记者:作为半导体领域的CTO,你日常要做哪些工作,对哪些方面比较感兴趣?
Kirk:我会花很多时间来考虑如何不断提高GPU性能。我还会花很多时间来考虑在可视计算和科学计算上的多GPU大规模并行应用。GPU具有将许多应用程序速度提升100倍的潜力,这将不仅改变科学和工程研究,而且也有可能改变消费和商业应用。最后,我还花了大量时间来教授如何利用CUDA进行并行编程。CUDA是一种编程环境,让编程人员能够为CPU和GPU写出并行计算的程序。我坚信CUDA将会带来计算技术的革命。影响这种快速变革的最佳的方法就是改变编程的教学方法,使更多的年轻学生了解这种新技术。
GPU与CPU浮点性能比较
David Kirk,1997年出任NVIDIA首席科学家,领导了NVIDIA图形技术开发,使其成为当今最流行的大众娱乐平台。他曾在视频游戏厂商Crystal Dynamics任首席科学家;在此之前,他在HP 阿波罗工作站部门任工程师。
2002年,SIGGRAPH将计算机图形学成就奖颁给Kirk,以表彰他将高性能计算机图形系统带给大众。2006年,因将高性能图形学带入个人电脑所做的贡献,Kirk当选为美国工程院院士,这是美国工程领域最高专业成就荣誉。Kirk在图形学技术领域拥有50多项专利。
Kirk在麻省理工学院获得机械工程学士和硕士学位,并在加州理工学院获得计算机科学硕士和博士学位。
既然我们实施了在北桥芯片中集成图形功能的策略,又为何不集成CPU呢?这么小的东西集成起来会更方便。