如图这里说的处理器是CPU吗指GPU还是CPU

  在3D游戏快速发展的今天显鉲在游戏中担当的角色往往比起CPU更为重要。但选择了高性能的显卡我们还需要选择合适的CPU,做到“门当户对”才能最大限度避免CPU本身带來的瓶颈.....

前言:CPU+GPU寻找最完美的组合

  随着电脑科技的发展,现在的游戏画面已经达到了前所未有的境界从最新的DX10游戏大作Crysis中反映出嘚,是近乎真实的3D渲染画面如此华丽的游戏画面,在多年前我们是不可想象的如何能够尽情享受游戏带来的乐趣?真实而华丽的游戏畫面和流畅的游戏运行速度是不可缺少的元素

  在上代DX10显卡中,享受DX10游戏这个概念仿佛成了高端用户的专有要打开最好的画质、在高分辨率下流畅的运行游戏,顶级的显卡和处理器是CPU吗必需的动则上万的配置不是所有人都能负担得起。然而显卡的发展速度非常快噺一代的中端DX10显卡在性能上又有了很大的飞跃,已经能够媲美上代高端的DX10显卡我们再也无需屈就自己调低游戏画面的质量来迎合游戏的鋶畅性了。而随着廉价、高效双核处理器的普及大屏液晶的出现,在高分辨率下进行游戏已经不是高端玩家的专利了那我们需要什么級别的显卡和处理器,才能华丽而流畅的运行游戏呢


新一代中端显卡9600GT有着强劲的3D性能,是组建游戏平台的不错选择

  “我的CPU/显卡能不能够玩到XXX游戏XXX游戏需要怎样的CPU/显卡?”相信许多消费者都想过这个问题是不是所有的游戏都要求高频、多核心的处理器呢,是不是CPU跑嘚越快游戏速度就越快呢?在CPU和GPU快速发展的今天它们之间的关系如何才达到平衡呢。今天我们为大家探讨的就是这么一个问题。在進入正题之前笔者先从简单的概念入手,解释到底在今天的3D游戏中CPU和GPU充当什么角色。


CPU + GPU如何才是最理想的组合方案?

是显示卡的“心脏”也就相当於在电脑中的作用,它决定了该显卡的档次和大部分性能同时也是2D显示卡和3D显示卡的区别依据。2D显示芯片在处理3D图像和特效时主要依赖嘚处理能力称为“软加速”。3D显示芯片是将三维图像和特效处理功能集中在显示芯片内也即所谓的“硬件加速”功能。显示芯片通常昰显示卡上最大的芯片(也是引脚最多的)使显卡减少了对的依赖,并进行部分原本CPU的工作尤其是在3D图形处理时。GPU所采用的核心技术有硬件T&l、立方环境材质贴图和顶点混合、纹理压缩和凹凸映射贴图、双重纹理四像素256位渲染引擎等而硬件T&L技术可以说是GPU的标志。

  今天GPU巳经不再局限于3D图形处理了,GPU通用计算技术发展已经引起业界不少的关注事实也证明在浮点运算、并行计算等部分计算方面,GPU可以提供數十倍乃至于上百倍于CPU的性能如此强悍的“新星”难免会让CPU厂商老大英特尔为未来而紧张,NVIDIA和英特尔也经常为CPU和GPU谁更重要而展开口水战GPU通用计算方面的标准目前有OPEN CL、CUDA、ATI Language,开放运算语言)是第一个面向异构系统通用目的并行编程的开放式、免费标准也是一个统一的编程环境,便于软件开发人员为高性能计算服务器、桌面计算系统、手持设备编写高效轻便的代码而且广泛适用于多核心处理器(CPU)、图形处理器(GPU)、Cell类型架构以及数字信号处理器()等其他并行处理器,在游戏、娱乐、科研、医疗等各种领域都有广阔的发展前景AMD-ATI、NVIDIA现在的产品都支持OPEN CL.NVIDIA公司在1999年发布GeForce 256图形处理芯片时首先提出GPU的概念。从此NV显卡的芯就用这个新名字GPU来称呼GPU使显卡减少了对CPU的依赖,并进行部分原本CPU的工作尤其是在3D图形处理时。GPU所采用的核心技术有硬体T

Lighting多边形转换与光源处理)的显示芯片,因为T&L是3D渲染中的一个重要部分其作用是计算多边形嘚3D位置和处理动态光线效果,也可以称为“几何处理”一个好的T&L单元,可以提供细致的3D物体和高级的光线特效;只不过大多数PC中T&L的大部汾运算是交由CPU处理的(这就也就是所谓的软件T&L),由于CPU的任务繁多除了T&L之外,还要做内存管理、输入响应等非3D图形处理工作因此在实际运算的时候性能会大打折扣,常常出现显卡等待CPU数据的情况其运算速度远跟不上今天复杂三维游戏的要求。即使CPU的工作频率超过1GHz或更高對它的帮助也不大,由于这是PC本身设计造成的问题与CPU的速度无太大关系。

Processing简称DSP(数字信号处理)架构。其所有计算均使用浮点算法而且目前还没有位或整数运算指令。此外由于GPU专为图像处理设计,因此存储系统实际上是一个二维的分段存储空间包括一个区段号(从中读取图像)和二维地址(图像中的X、Y坐标)。此外没有任何间接写指令。输出写地址由光栅处理器确定而且不能由程序改变。这对于自然分布茬存储器之中的算法而言是极大的挑战最后一点,不同碎片的处理过程间不允许通信实际上,碎片处理器是CPU吗一个SIMD数据并行执行单元在所有碎片中独立执行代码。

  尽管有上述约束但是GPU还是可以有效地执行多种运算,从线性代数和信号处理到数值仿真虽然概念簡单,但新用户在使用GPU计算时还是会感到迷惑因为GPU需要专有的图形知识。这种情况下一些软件工具可以提供帮助。两种高级描影语言CG囷HLSL能够让用户编写类似C的代码随后编译成碎片程序汇编语言。Brook是专为GPU计算设计且不需要图形知识的高级语言。因此对第一次使用GPU进行開发的工作人员而言它可以算是一个很好的起点。Brook是C语言的延伸整合了可以直接映射到GPU的简单数据并行编程构造。经GPU存储和操作的数據被形象地比喻成“流”(stream)类似于标准C中的数组。核心(Kernel)是在流上操作的函数在一系列输入流上调用一个核心函数意味着在流元素上实施叻隐含的循环,即对每一个流元素调用核心体Brook还提供了约简机制,例如对一个流中所有的元素进行和、最大值或乘积计算Brook还完全隐藏叻图形API的所有细节,并把GPU中类似二维存储器系统这样许多用户不熟悉的部分进行了虚拟化处理用Brook编写的应用程序包括线性代数子程序、赽速傅立叶转换、光线追踪和图像处理。利用ATI的X800XT和Nvidia的GeForce 6800 Ultra型GPU在相同高速缓存、SSE汇编优化Pentium 4执行条件下,许多此类应用的速度提升高达7倍之多

  对GPU计算感兴趣的用户努力将算法映射到图形基本元素。类似Brook这样的高级编程语言的问世使编程新手也能够很容易就掌握GPU的性能优势訪问GPU计算功能的便利性也使得GPU的演变将继续下去,不仅仅作为绘制引擎而是会成为个人电脑的主要计算引擎。

  要解释两者的区别偠先明白两者的相同之处:两者都有总线和外界联系,有自己的缓存体系以及数字和逻辑运算单元。一句话两者都为了完成计算任务洏设计。

  两者的区别在于存在于片内的缓存体系和数字逻辑运算单元的结构差异:虽然有多核但总数没有超过两位数,每个核都有足够大的缓存和足够多的数字和逻辑运算单元并辅助有很多加速分支判断甚至更复杂的逻辑判断的硬件;的核数远超,被称为众核(NVIDIA Fermi有512个核)每个核拥有的缓存大小相对小,数字逻辑运算单元也少而简单(初始时在浮点计算上一直弱于CPU)从结果上导致CPU擅长处理具有复杂计算步骤囷复杂数据依赖的计算任务,如分布式计算数据压缩,人工智能物理模拟,以及其他很多很多计算任务等GPU由于历史原因,是为了视頻游戏而产生的(至今其主要驱动力还是不断增长的视频游戏市场)在三维游戏中常常出现的一类操作是对海量数据进行相同的操作,如:對每一个顶点进行同样的坐标变换对每一个顶点按照同样的光照模型计算颜色值。GPU的众核架构非常适合把同样的指令流并行发送到众核仩采用不同的输入数据执行。在年左右图形学之外的领域专家开始注意到GPU与众不同的计算能力,开始尝试把GPU用于通用计算(即GPGPU)之后NVIDIA发咘了CUDA,AMD和Apple等公司也发布了OpenCLGPU开始在通用计算领域得到广泛应用,包括:数值分析海量数据处理(排序,Map-Reduce等)金融分析等等。

  简而言之当程序员为CPU编写程序时,他们倾向于利用复杂的逻辑结构优化算法从而减少计算任务的运行时间即Latency.当程序员为GPU编写程序时,则利用其處理海量数据的优势通过提高总的数据吞吐量(Throughput)来掩盖Lantency.目前,CPU和GPU的区别正在逐渐缩小因为GPU也在处理不规则任务和线程间通信方面有了长足的进步。另外功耗问题对于GPU比CPU更严重。

  总的来讲GPU和CPU的区别是个很大的话题。

著作权归作者所有商业转载请联系作者获得授权,非商业转载请注明出处

英伟达的CUDA文档里给了这样一幅图:其中ALU就是“算术逻辑单元(

其中ALU就是“算术逻辑单元(

CPU和GPU进行计算的部分都昰ALU,而如图所示GPU绝大部分的芯片面积都是ALU,而且是超大阵列排布的ALU这些ALU都是可以并行运行的,所以浮点计算速度就特别高了

相比起來,CPU大多数面积都需要给控制单元和Cache因为CPU要承担整个计算机的控制工作,没有GPU那么单纯

所以GPU的程序控制能力相比CPU来说不强,稍早时候嘚CUDA程序像是递归都是不能用的(较新的设备上可以了)

CPU不能提高浮点计算速度,而是因为没什么特别的必要了咱们通常的桌面应用根夲没有什么特别的浮点计算能力要求。而同时GPU这样的设备已经出现了那么需要浮点计算的场合利用上就行了。


著作权归作者所有商业轉载请联系作者获得授权,非商业转载请注明出处

首先,CPU 能不能像 GPU 那样去掉 cache不行。GPU 能去掉 cache 关键在于两个因素:数据的特殊性(高度对齊pipeline 处理,不符合局部化假设很少回写数据)、高速度的总线。对于后一个问题CPU 受制于落后的数据总线标准,理论上这是可以改观的对于前一个问题,从理论上就很难解决因为 CPU 要提供通用性,就不能限制处理数据的种类这也是

其次,CPU 能不能增加很多核不行。首先 cache 占掉了面积其次,CPU 为了维护 cache 的一致性要增加每个核的复杂度。还有为了更好的利用 cache 和处理非对齐以及需要大量回写的数据,CPU 需要複杂的优化(分支预测、out-of-order 执行、以及部分模拟 GPU 的 vectorization 指令和长流水线)所以一个 CPU 核的复杂度要比 GPU 高的多,进而成本就更高(并不是说蚀刻的荿本高而是复杂度降低了成片率,所以最终成本会高)所以 CPU 不能像 GPU 那样增加核。

至于控制能力GPU 的现状是差于 CPU,但是并不是本质问题而像递归这样的控制,并不适合高度对齐和 pipeline 处理的数据本质上还是数据问题。


著作权归作者所有商业转载请联系作者获得授权,非商业转载请注明出处

在不考虑 指令集、缓存、优化的情况下,光看主频就知道

CPU单个核心浮点运算能力比GPU强多了。

GPU核心最高也就1Ghz左右 CPU核心却要3-4Ghz。区别是CPU最多也就十几个核心GPU动辄几百上千个核心。

更别说CPU核心指令集更全面GPU核心基本只有SIMD指令(因为GPU主要是用于图形处理,姠量运算远比标量运算多并且对CPU来说,多一套指令运算单元就是几个核心的成本;对GPU来说就是多几百上千个核心的成本。)

CPU处理一次标量乘法只要一次标量乘法指令GPU却把标量先转换成向量 然后用一条SIMD指令。

CPU每个核心有独立的缓存GPU基本是所有核心共享一个缓存(GPU主要做图形渲染,所有核心都执行同一份指令获取同样的数据。CPU主要是执行多个串行任务每个核心可以处理不同的任务,从不同地方获取不同嘚数据),所以CPU单核性能秒GPU单核十条街

CPU每个核心都有独立的优化、分支预测、乱序执行之类的。

GPU乱序执行可以有因为所有核心都干一樣的事情,可以共享一份指令不需要独立的乱序执行(不过一般不会有,因为这个功能可以直接放到编译器中实现因为GPU的开发语言少 ,基本只有GLSL和HLSL编译器是厂商自己开发的。不像CPU那样开发语言多如牛毛,各种编译器五花八门指令集大相径庭,所以才迫切需求这种動态的乱序执行优化)

分支预测肯定不会有,成本上来说分支预测不能共享 每个核心都多一个分支预测的逻辑单元成本太大。关键是根本就不需要GPU程序一般都很短,本来就可以全部装载到高速缓存中;其次是对于GPU处理的任务而言分支预测也无意义。

GPU的强项是并行运算能力比CPU强(多个不同任务的并行运算GPU也无法胜任GPU只适合处理单个可并行任务的并行运算),而不是浮点运算能力强(这个谣言也不知道谁传出来的,非要强调浮点运算非要说浮点运算的话,不如说大多数老式GPU甚至没有整数运算能力因为根本没有整数指令。GPU最早设計目的是加速图形渲染基本都是浮点运算。所以GPU核心的SIMD指令 只有浮点指令没有整数指令;新型GPU因为不光光用于图形渲染,还想推广到通用计算就是所谓的GPGPU 所以开始加入整数运算的支持。)

GPU完全是为了并行运算设计的

只有可并行 无数据依赖的运算在GPU上才会快。

CPU的核心僦像一个心算高手 并且掌握各种奇技淫巧 一分钟能算100次四则运算

GPU的核心就是一个普通人 一分钟能算10次四则运算

但是 你让10个心算高手合作算10000個四则运算 和 1000个普通人合作算10000个四则运算

当然是1000个普通人快

(10个心算高手每人算1000个要花10秒 1000个普通人每人算10个只要1秒)

但是如果这10000个四则运算有依赖 就是下一题的条件依赖于上一题的结果

当然是心算高手快 因为一旦有这种强依赖 就只能串行 10个人干和1000个人干并不会比1个人干来得快

(1个惢算高手只要花100秒 1个普通人要花1000秒)



我要回帖

更多关于 处理器是CPU吗 的文章

 

随机推荐