POPPUR爱换

 找回密码
 注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

搜索
查看: 1430|回复: 7
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
1#
发表于 2008-6-23 14:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
今天讨论的论题是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”都是无稽之谈。
2#
发表于 2008-6-23 14:28 | 只看该作者
INTEL貌似没说过CPU要取代GPU,到时NV跳出来说GPU重要性大于CPU,实际上远小于CPU。
回复 支持 反对

使用道具 举报

3#
发表于 2008-6-23 15:20 | 只看该作者
原帖由 G81 于 2008-6-23 14:07 发表
最后总结一下:

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

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


难道PhotoShop、Matlab、视频编码不算应用程序?“应用程序”这种说法太笼统了
物理模拟从这次nVIDIA的物理加速驱动的效果难道还看不出来??
3D建模-光线追踪渲染,nVIDIA都已经有Gelato利用CUDA来作光线追踪的渲染软件了,还能说GPU不适合吗?
回复 支持 反对

使用道具 举报

4#
发表于 2008-6-23 15:21 | 只看该作者
这篇文章是Intel的赵军写的。

它的下篇是:

http://blogs.intel.com/china/2008/05/cpugpu_1.php
回复 支持 反对

使用道具 举报

5#
发表于 2008-6-23 15:43 | 只看该作者
CPU擅长逻辑,GPU擅长计算。逻辑处理任务,计算反馈数据。CPU是调度的核心是无可非议的。

虽然CPU可以整合GPU,GPU也可以整合CPU,但在目前的情况下,x86PC平台只有I、A有授权,N想插一腿可能性很小。

可以认为GPU虽然单独打出了一片江山,但概念上还是属于协处理器的范畴,不定哪天就整合进了CPU,所以N一直在找更多可以发展的平台:手机、超级计算、移动终端等等,因为一旦N不能保持GPU的优势地位的时候,整个业务岌岌可危,可以理解为N从单纯的GPU业务向多元业务发展的原因。

胡说八道,望各位一笑泯之。
回复 支持 反对

使用道具 举报

6#
发表于 2008-6-23 16:18 | 只看该作者

回复 5# 哈利尤 的帖子

观点明确,对不对我也不知道,但是先支持一个
回复 支持 反对

使用道具 举报

7#
发表于 2008-6-23 17:25 | 只看该作者
体会到一个成语:断章取义
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

广告投放或合作|网站地图|处罚通告|

GMT+8, 2024-11-23 11:40

Powered by Discuz! X3.4

© 2001-2017 POPPUR.

快速回复 返回顶部 返回列表