Subscribe to RSS Add to Technorati Faves Digg This Page Send to Stumble Upon Bookmark on Delicious

CPU和GPU擅长和不擅长的方面

赵军 (Jun Zhao), 2008年6月19日

今天讨论的论题是CPU和GPU“擅长和不擅长”的各个方面,而不是谁取代谁的问题。我试着从它们执行运算的速度与效率的方面来探讨这个论题。

CPU和GPU都是具有运算能力的芯片,CPU更像“通才”——指令运算(执行)为重+ 数值运算,GPU更像“专才”——图形类数值计算为核心。在不同类型的运算方面的速度也就决定了它们的能力——“擅长和不擅长”。芯片的速度主要取决于三个方面:微架构,主频和IPC(每个时钟周期执行的指令数)。

1.微架构

从微架构上看,CPU和GPU看起来完全不是按照相同的设计思路设计的,当代CPU的微架构是按照兼顾“指令并行执行”和“数据并行运算”的思路而设计,就是要兼顾程序执行和数据运算的并行性、通用性以及它们的平衡性。CPU的微架构偏重于程序执行的效率,不会一味追求某种运算极致速度而牺牲程序执行的效率。

CPU微架构的设计是面向指令执行高效率而设计的,因而CPU是计算机中设计最复杂的芯片。和GPU相比,CPU核心的重复设计部分不多,这种复杂性不能仅以晶体管的多寡来衡量,这种复杂性来自于实现:如程序分支预测,推测执行,多重嵌套分支执行,并行执行时候的指令相关性和数据相关性,多核协同处理时候的数据一致性等等复杂逻辑。

GPU其实是由硬件实现的一组图形函数的集合,这些函数主要用于绘制各种图形所需要的运算。这些和像素,光影处理,3D 坐标变换等相关的运算由GPU硬件加速来实现。图形运算的特点是大量同类型数据的密集运算——如图形数据的矩阵运算,GPU的微架构就是面向适合于矩阵类型的数值计算而设计的,大量重复设计的计算单元,这类计算可以分成众多独立的数值计算——大量数值运算的线程,而且数据之间没有像程序执行的那种逻辑关联性。

GPU微架构复杂度不高,尽管晶体管的数量不少。从应用的角度看,如何运用好GPU的并行计算能力主要的工作是开发好它的驱动程序。GPU驱动程序的优劣很大程度左右了GPU实际性能的发挥。

因此从微架构上看,CPU擅长的是像操作系统、系统软件和通用应用程序这类拥有复杂指令调度、循环、分支、逻辑判断以及执行等的程序任务。它的并行优势是程序执行层面的,程序逻辑的复杂度也限定了程序执行的指令并行性,上百个并行程序执行的线程基本看不到。GPU擅长的是图形类的或者是非图形类的高度并行数值计算,GPU可以容纳上千个没有逻辑关系的数值计算线程,它的优势是无逻辑关系数据的并行计算。

2.主频

另外,GPU执行每个数值计算的速度并没有比CPU快,从目前主流CPU和GPU的主频就可以看出了,CPU的主频都超过了1GHz,2GHz,甚至3GHz,而GPU的主频最高还不到1GHz,主流的也就500~600MHz。要知道1GHz = 1000MHz。所以GPU在执行少量线程的数值计算时并不能超过CPU。

目前GPU数值计算的优势主要是浮点运算,它执行浮点运算快是靠大量并行,但是这种数值运算的并行性在面对程序的逻辑执行时毫无用处。

3.IPC(每个时钟周期执行的指令数)

这个方面,CPU和GPU无法比较,因为GPU大多数指令都是面向数值计算的,少量的控制指令也无法被操作系统和软件直接使用。如果比较数据指令的IPC,GPU显然要高过CPU,因为并行的原因。但是,如果比较控制指令的IPC,自然是CPU的要高的多。原因很简单,CPU着重的是指令执行的并行性。

另外,目前有些GPU也能够支持比较复杂的控制指令,比如条件转移、分支、循环和子程序调用等,但是GPU程序控制这方面的增加,和支持操作系统所需要的能力CPU相比还是天壤之别,而且指令执行的效率也无法和CPU相提并论。

最后总结一下:

CPU擅长的:操作系统,系统软件,应用程序,通用计算,系统控制等等;游戏中人工智能,物理模拟等等;3D建模-光线追踪渲染;虚拟化技术——抽象硬件,同时运行多个操作系统或者一个操作系统的多个副本等等。

GPU擅长的:图形类矩阵运算,非图形类并行数值计算,高端3D游戏。

综上所述,在一台均衡计算的计算机系统中,CPU和GPU还是各司其职,除了图形运算,GPU将来可能主要集中在高效率低成本的高性能并行数值计算,帮助CPU分担这种类型的计算,提高系统这方面的性能。而当前的典型应用还是高端3D游戏,一个高效的GPU配合一个高效的CPU,3D游戏的整体效率才能得到保证。“高端3D游戏只需要高端显卡”或者“高端3D游戏只需要CPU”都是无稽之谈。


评论 (25)
del.icio.us StumbleUpon Digg It
其他归属标签: , , , ,

评论

2008年6月22日  |  李子孚 :

呵呵 赵老师好啊 我又来了 好文章 我想问几个问题 1 gpu的主频为什么不能提高到ghz级别?是否是台积电的工艺水平太差? 2 gpu的核心和流处理器分频是怎么回事?为什么amd的 rv770仍然未能实现分频? 3 core微架构的ipc好像是4吧,是怎么提高的?提高ipc是不是很难? amd的k10怎么还是3?

2008年6月22日  |  VIVI :

GPU和CPU互不替代,但又相互联系,各司其职。

2008年6月22日  |  botaizi :

请教赵老师,能像对x86一样对GPU进行编程吗?

2008年6月23日  |  高飞 :

我是从别的报纸上看到了赵经理的文章, 才搜到了这个网站。问个问题, 在超级计算机上, CPU和GPU是不是也有同样的问题, 或者超级计算机只需要CPU来做海量运算呢

2008年6月23日  |  赵军 :

李子孚,你好!

其他几个问题我回答不了也不便于回答,呵呵!

关于Core 微架构IPC的问题,不能简单的把具有几条并行的指令流水线就理解成IPC等于几。因为IPC是个平均的量。

就英特尔Core 微架构的指令流水线有并行的4条,和英特尔自己的前一代架构以及业界x86兼容芯片3条指令流水线相比,多了一条。怎么理解能?就类似于以前只有3条车道,现在增加了一条车道,指令执行的通行率提高了33%。

2008年6月23日  |  赵军 :

Botaizi, 你好!

可以的,没有问题。这也是将来英特尔 Larrabee的优势,它是基于多个x86 内核的GPU。

2008年6月23日  |  赵军 :

高飞,你好!

在现在的超级计算机上没有专门叫做GPU这样的部件,用于显示的部分被称为显示子系统,这部分系统不参与核心计算。而且为了加强某些方面的计算能力,业界通用的方案是增加特定能力的Accelerator(加速器)。

GPU在某些运算方面的能力比较强,高端GPU在PC系统中成本比例又较高,如果不找到附加的应用,就浪费了对GPU的投资。所以开发GPU来辅助CPU 加强整个系统的计算能力,当然是个不错的想法。

不过,在PC机上挖掘GPU的能力进行高性能计算是一种相对低层次的高性能计算,不可能替代中高端的高性能计算——网格多节点模式下的海量计算。

2008年6月24日  |  FLOATINGGATE :

我想问一下Nehalem 低端版本整合的GPU核心是不是G45的GPU核心

2008年6月24日  |  FLOATINGGATE :

ATOM配套的Poulsbo集成了PowerVR SGX图形芯片,Intel是居于什么原因采用第三方的集成GPU核心?为什么不集成自己的图形芯片

2008年6月24日  |  赵军 :

Floatinggate,

Nehalem 集成GPU的版本是目前G45集成GPU之后更新一代的核心,不是Larrabee.

2008年6月25日  |  wuxb :

目的是不一样的。Gpu主要解决的问题是逻辑无关的并行计算,如何把并行的计算能力组合成逻辑功能是我们真正所探求的……哲学上是不可能的

2008年6月25日  |  李子孚 :

哈哈 商业机密来了 不过真是想知道core2 怎么加宽的ipc 找老师能不能定期在blog上讲解一下设计理论上的知识? 就算科普啦

2008年6月28日  |  acwell :

intel上套了,GPU因此而被普通人认识。

2008年6月30日  |  torafer :

希望Intel能建立笔记本统一工业标准,开启笔记本的DIY时代。 http://blog.zol.com.cn/723/article_722903.html

2008年7月02日  |  Unigs :

我用过的第一个独显就是i740,IDF上英特尔将要年内推出独立显卡芯片了,而且还个x86处理器,很让人感兴趣。 有个小小问题想问一下:IDF上公开的Larrabee计划,是一款基于x86处理器的独立显卡产品,图形加速还可以支持超宽向量(vector)—512比特的SIMD新指令—等效于16个单精度浮点计算或8个双精度浮点计算。 天啊? 是真的吗? 为什么要做这么宽啊? 大大增加设计复杂度。 而主频、热耗等等都很有挑战性。 我感觉分为2个256比特,就已经很好了。分为2个256比特—我是指,一条vector指令就处理256比特数据,用两条vector指令来代替。或低端Larrabee可以减为256比特? 呵呵,又重复一遍惊讶感觉,勿要见怪:感觉一条vector指令处理512比特数据,也太宽了, 比256比特的AVX指令还要宽一倍,Larrabee的vevctor指令让人惊讶!!天啊? 是真的吗? 为什么要做这么宽啊?
还有个问题,我也很奇怪传统显卡Nvidia的G90的图形指令好像都是标量才32比特的宽度。 呵呵,两个极端—G90指令是最窄的才32比特, 而Larrabee是最宽的。 G90是靠SP核心数量爆多与多线程来轰炸,而Larrabee竟然仅有24到32个核心,而SIMD的vector指令极宽达到512比特。 相对传统显卡,Larrabee与图形加速应用方面/显卡性能,是否具有效能的优势? 是何原因?

2008年7月03日  |  Unigs :

请问个CPU-GPU的问题: 我相信1280*1024/no-AA或低AA条件下,Larrabee可以得到惊人的3Dmarks分数。  相对于传统显卡,Larrabee处理器同样硬件集成了纹理采样处理单元, 而”后端”处理上,Larrabee具有实现”后端”软件编程的特殊优势,例如使用光线追踪特效,可编程这点很好,也很可能是将来的趋势。 但是如果运行近年的游戏软件,其后端处理几乎都还是基于光栅化原理,如果Larrabee以软件实现光栅化,以及抗锯齿AA,尤其是开启高AA时,开销是否太大?效能低于传统的硬件光栅化。 我说的”后端”处理—是泛指—显卡把已经计算渲染好的三维数据->二维显示平面的处理过程。 IDF上对Larrabee的介绍还特别指出传统显卡硬件化只能按光栅化原理来实现,而Larrabee具备可编程性,可以更灵活多样的实现。 我的问题是, 如果Larrabee以软件来实现光栅化、或以软件来实现抗锯齿AA问题, 例如AA 16X16环境下,Larrabee如何把可编程优势转化为性能优势?

2008年7月03日  |  赵军 :

Unigs, 你好!

具体的Larrabee设计细节还需要等到以后才便于公布,因为在设计中会有变动。 多核并行计算的效率是硬件具备的,要充分发挥这么多核心的能力,主要靠算法以及API,只有优秀的支持并行运算的算法和便于程序员使用的开发工具/编程接口才能把Larrabee的可编程优势转化为性能优势。 目前PC机的能力还不足以实现实时的光线追踪,主要是计算能力还不够强悍。如果Larrabee出来,就值得期待了。

2008年7月03日  |  Unigs :

谢谢! 原来已经出现在ppt上的设计细节,还可能有变化。 我是根据以下已经公开的信息: (1) 16 SIMD 超宽Vector数据
http://publish.it168.com/2007/0607/20070607034502.shtml http://publish.it168.com/2007/0607/images/469195.jpg http://publish.it168.com/2008/0319/images/932791.jpg (2)硬件集成纹理单元 http://hardware.cfan.com.cn/mainboard/news/h004/h08/img200706190924031.png

原来更多具体的Larrabee设计细节还需要等到以后。

我希望Larrabee能够很好的与DX11配合,据说DX11开始支持光线追踪了。 更希望Larrabee能很好的实现传统显卡性能, 图形加速性能效能优于传统显卡。

2008年7月03日  |  赵军 :

有的信息是被不恰当的披露出来了,呵呵! 产品最终的特性保守的说要等到产品定型后。

2008年7月03日  |  Jack :

赵军: 请问,那么CELL的8个SPE单元能够做到逻辑相关性的工作吗? 此外,为何一些游戏开发商说,他们的游戏很难完全利用掉8个SPE核心,最多只是3,4个而已?他们的这话是基于甚么的原因呢? 最后,为甚么CELL的频率难以提升和良率低呢?难道听人说仅仅是因为CELL的设计复杂及核心数量多吗?

2008年7月16日  |  torafer :

建议Intel修改ATX电源标准。http://blog.zol.com.cn/744/article_743136.html

2008年7月17日  |  JC :

又读到赵老师的文章了,很受启发,谢谢赵老师! 期待赵老师更多的真知灼见!

2008年8月16日  |  syeos :

嗯,讲得很好。CPU和GPU各有所长,又互相协调互补不足。 我非常期待Intel的Larrabee ,我相信它是图形处理上的一次革命,即便是一些高负荷通用计算的任务,也可以通过它来得到加速,应用面因该比目前的GPU更加广泛,设计思路是很正确的。

另外,期待光线追踪时代的到来,我会支持Intel.

2009年4月27日  |  Anonymous :

赵老师: 你好,我想问一下,如果编程作数值计算(不做图形,主要作数学计算)GPU会比CPU快吗?

2009年4月29日  |  赵军 (Jun Zhao) :

如果做GPU适合的类似坐标变换,并行渲染方面的数值运算,GPU是比CPU要快。这也是英特尔将来的众核GPU——Larrabee的主要目标,作为显卡只是它的应用之一。

发表您的评论






评论准则:欢迎您发表评论,不过所有评论必须适度。带有攻击性、偏离主题或带有欺骗性的评论将会被删除(不显示)。在向英特尔的博客提交评论之前,您必须同意我们的法律信息隐私条款中的规定,并且如果您大于或等于 13 岁,就必须在您的评论中附上自己的姓名。您的姓名和个人信息不会被用作其他用途,并且您的电子邮件地址也不会被公开。

免责声明:此处以及所有相关评论中表述的观点均为原作者个人的观点,并非必须反映英特尔的看法。所有英特尔名称和商标属英特尔公司或其子公司在美国和其他国家或地区的财产。其他名称和品牌可能归其他公司所有。