问题

为什么 GPU 的通用计算能力高于 CPU?架构原因?内核数量?

回答
CPU 和 GPU 之所以能实现如此截然不同的计算能力,根本原因在于它们在设计之初所承担的使命和因此产生的 架构差异。简单来说,CPU 是为处理一系列复杂且有顺序的指令而生,而 GPU 则更像是数量庞大的、并行执行的简单任务的“瑞士军刀”。

让我们一层层剥开来看:

1. 设计使命的差异:敏捷的指挥官 vs. 高效的执行者

CPU(中央处理器): CPU 是计算机的“大脑”,负责执行操作系统、运行各种应用程序,处理从键盘输入到网络通信的一切。它的核心任务是 通用性 和 低延迟。这意味着 CPU 需要能够快速切换任务,执行复杂的逻辑判断,管理各种硬件资源,并对用户的每一个指令做出迅速响应。它必须能够胜任从简单的加法到复杂的图形渲染、再到运行大型数据库的各种工作。

GPU(图形处理器): 最初,GPU 是为了加速三维图形的渲染而设计的。这需要同时处理大量的像素和顶点数据,并且每个像素或顶点的计算过程相对独立。例如,改变一个顶点的坐标,或者调整一个像素的颜色,对其他像素或顶点的影响很小。这种 大规模并行性 是 GPU 设计的关键驱动力。随着技术的发展,人们发现 GPU 的这种并行处理能力可以用于更广泛的计算任务,这就是我们今天所说的“通用计算”(GPGPU)。

2. 架构上的根本区别:

正是基于上述的设计使命,CPU 和 GPU 在内部架构上存在着巨大的差异:

2.1 内核数量与类型:

CPU: 现代的 CPU 通常拥有少量(几核到几十核)非常强大的通用计算核心(通常称为 CPU 核心或处理单元)。这些核心设计得非常复杂,包含了:
复杂的控制逻辑: 用于指令解码、调度、分支预测、乱序执行等,以最大限度地提高单线程的执行效率。
巨大的缓存(Cache): L1、L2、L3 缓存非常庞大且层级分明,用于存储最近使用的数据和指令,减少访问主内存的次数,从而降低延迟。
复杂的流水线(Pipeline): 指令被分解成多个阶段,不同阶段的指令可以并行执行,进一步提高效率。
强大的浮点单元和整数单元: 能够处理各种复杂的数学运算。

举个例子: 想象一个 CPU 核心就像一个非常精密的、一个人就能完成多种复杂任务的工程师。他可以快速思考,做出复杂的决策,并且能同时处理好几件事情,但因为一个人能力有限,他同时能做的事情数量是有限的。

GPU: GPU 则拥有海量(成百上千甚至上万)的高度专业化的计算单元(常被称为“CUDA核心”、“流处理器”等)。这些核心的设计相对简单,专注于执行相同的指令(或非常相似的指令)于大量不同的数据上。GPU 的核心可以粗略地分为几个层面来理解:
流式多处理器(Streaming Multiprocessor, SM): 这是 GPU 的基本计算块,里面包含了许多个小的计算单元(如 CUDA 核心)。一个 SM 能够管理和调度大量的线程。
计算单元(如 CUDA 核心/流处理器): 这些是 GPU 中最基础的计算单元,负责执行算术逻辑运算。它们通常只负责执行浮点或整数运算,缺乏复杂的控制逻辑和分支预测能力。
共享内存(Shared Memory): 每个 SM 内部都有一个小型的、高带宽的内存,供该 SM 内的所有线程快速访问,用于线程间数据共享和通信。
全局内存(Global Memory): 这是 GPU 的主显存,容量大但访问延迟相对较高,所有线程都可以访问。

举个例子: 想象 GPU 的核心就像一支由成千上万个工人组成的庞大队伍。每个工人虽然不能独立完成复杂的任务,但如果让他们同时执行一个简单的任务(比如一起搬砖),他们就能在极短的时间内完成巨量的搬砖工作。他们共享同一个大型仓库(全局内存),并且同一个小分队(SM)的工人可以通过一个小型储物箱(共享内存)快速交换工具和信息。

2.2 内存层次结构和带宽:

CPU: CPU 的内存层次结构以低延迟为优化目标。庞大的缓存系统使得常用数据可以保存在离 CPU 核心非常近的地方,从而实现快速访问。但与 GPU 相比,CPU 的内存带宽(单位时间内能够传输的数据量)相对较低。

GPU: GPU 的内存层次结构则以高带宽为优化目标。GPU 拥有非常宽的内存总线和高频率的显存(如 GDDR6X),可以支持远超 CPU 的内存带宽。这意味着 GPU 在短时间内可以吞吐大量的数据。虽然 GPU 的内存访问延迟比 CPU 大,但由于其庞大的并行线程数量,很多线程可以在等待数据加载时进行其他计算,有效隐藏了内存延迟。

2.3 分支预测与控制流:

CPU: CPU 的核心设计了极其复杂的分支预测单元。当遇到条件判断(if/else)时,CPU 会尝试预测程序将走向哪个分支,并提前开始执行该分支的代码,以避免停顿。这对于处理复杂的、具有大量条件分支的通用程序至关重要。

GPU: GPU 的核心在分支预测方面非常“保守”甚至可以说是“欠奉”。当 GPU 中的线程遇到分支时,通常会采用线程束(Warp/Wavefront)发散(Divergence)的策略。这意味着一个线程束中的所有线程虽然在执行相同的指令,但当它们遇到不同的分支时,会轮流执行不同分支的代码。未执行该分支的线程则进入“静默”状态,等待执行完该分支的线程完成后再恢复。这种策略虽然会降低效率,但仍然比 CPU 那种串行执行分支的方式能处理更多数据,因为它避免了等待“大脑”进行复杂预测的开销。当大部分线程遵循同一分支时,GPU 的效率非常高。

2.4 任务调度:

CPU: CPU 的任务调度是抢占式的,操作系统会根据优先级和时间片来切换各个进程和线程的执行。CPU 能够灵活地处理各种中断和异步事件。

GPU: GPU 的任务调度更像是批处理。应用程序会将大量的计算任务以“内核”(Kernel)的形式提交给 GPU。GPU 会将这些任务分解成许多个线程,并将这些线程分配到 SM 中执行。调度通常由 GPU 硬件自动完成,以最大化利用其庞大的计算资源。

3. 为什么这些差异导致 GPU 通用计算能力更高?

综合以上几点,GPU 之所以能在某些通用计算场景下表现出远超 CPU 的能力,是因为:

大规模并行性: 对于可以分解成成千上万个独立或半独立的小计算任务的问题(例如,矩阵乘法、图像滤波、科学模拟、机器学习模型的训练和推理),GPU 的海量核心能够同时处理这些任务,实现指数级的性能提升。CPU 的几个核心再强大,也无法在数量上与 GPU 抗衡。

高内存带宽: 许多通用计算任务需要处理和移动大量数据。GPU 卓越的内存带宽意味着它可以更快速地将数据加载到计算单元,为并行计算提供充足的“燃料”。

能源效率(在特定任务上): 尽管 GPU 总功耗可能很高,但在处理高度并行的任务时,GPU 的每瓦性能通常优于 CPU。这是因为 GPU 的核心设计更简单,功耗更低,而且专注于执行特定类型的计算。CPU 为了通用性而引入的复杂逻辑和缓存增加了功耗。

然而,重要的是要强调: GPU 的通用计算能力 “高于” CPU 是 有前提的。

如果任务是高度串行化的、需要频繁的复杂逻辑判断和分支,或者对低延迟有极致要求(如操作系统调度、交互式桌面响应),那么 CPU 的性能会远超 GPU。 CPU 的强大在于其灵活性和单线程性能。

GPU 的优势在于其“吞吐量”,而 CPU 的优势在于其“响应速度”和“灵活性”。

总结来说,GPU 的通用计算能力之所以在特定场景下显得比 CPU 更强,完全是其为处理大规模并行任务而优化的架构所致:数量庞大且专业化的计算核心、高内存带宽以及针对并行任务优化的调度和通信机制。这使得 GPU 在今天蓬勃发展的深度学习、大数据分析、科学计算等领域成为了不可或缺的计算平台。

网友意见

user avatar

回答问题前,知乎惯例:先问是不是。什么是“通用”计算能力?就是执行不特定代码的能力。完全不特定的代码,CPU能秒GPU十条街好吧?GPU强的是并行计算——这只是“不特定”里面的一些特例而已。仅仅某些特例的计算能力GPU强,就可以说“通用”计算能力GPU高于CPU么?


正面回答问题:

因为用处不同:CPU首要目标是流程控制,完成前面处理前后续处理流程通常是未知的。而GPU的首要目标是计算,一定程度内计算流程都是清晰的。


我们举一个例子,假设你很有钱,有一个很能干的私人管家(团队):

某天早上你醒了 ,躺在床上刷知乎,突然看到这段视频:

然后你很想让三上老师现场给你跳一遍,于是你马上找管家,让他搞定这件事。

管家先在网上找到MUTEKI官网——日文的看不懂,于是他要先去找一个日语翻译;

然后MUTEKI说可以,但要先给定金,而且他们只收JPY——于是管家要去把你的USD兑换成JPY转过去;

为了让三上老师尽快过来,你打算用你的私人飞机去接三上老师——管家要联系好空管,申请航线;

结果MUTEKI说三上老师休假了,去了北海道玩不在东京——管家要去更改航线;

……

反正就是你的管家很能干,一顿操作下来,当天下午三上老师就到了,和你愉快的共进晚餐,之后还给你表演了一段舞蹈。

……


于是你觉得SKE48成员跳舞就是好看,想和你的朋友分享,于是你搞了一个表演经纪公司,时不时组织SKE48和其它女团成员来表演一趟。


管家花了大半天时间才找来一个人,经纪公司可以两三天就组织一批十多二十多个女团成员来表演一次,这么一个表演经纪公司只需要几个懂日语的文员沟通,日常开销比你的管家团队还低。是不是经纪就比管家团队的能力更强呢?是不是管家团队吃得多还干活不行呢?


CPU就好比管家,需要处理各种突发请求,需要处理的事情层出不穷。也许你看着电影突然脑子一闪,就想翻出十几年前的照片看一眼——CPU本来在解码视频,然后就要去硬盘上找你的照片,运行看图软件的代码去把照片显示出来;可能你一边在刷知乎看到勃勃的哪篇想法就要敲一大段文字去和他对线——CPU本来在执行浏览器的代码(先不说还有各种网卡驱动、网络协议调用之类的事情),只要你在文本框点一下鼠标,就要马上调用输入法代码来处理你的输入,根据你敲击的字母和顺序展现不同的候选词……


同时,CPU处理这些突发的请求,往往都是需要快速响应的——你不会接受因为自己原来在看视频,找张照片就要两三分钟,点击打开要几十秒才能打开来看;关掉照片继续看视频你不会希望停顿好几秒才能继续播放;更不会接受敲下一串字母后三五秒输入法才蹦出来候选词……


此外,绝大部分情况,CPU处理的事情是前面的事情处理完了,才知道后面要做什么事情。例如上面的例子中,没联系上MUTEKI,就不知道要去换外汇,也不知道要改航线。而我们很常见的一个文件访问操作,CPU不解析完路径就不知道去哪个硬盘哪个分区找数据,不找到上一级目录的数据并且分析完毕就不知道下一级的子目录/文件真正存储的扇区位置。如果是执行一个程序的话,不先找到这个程序的文件位置并把数据载入内存,就完全不知道后面要运行什么代码,运行代码的时候不计算出判断条件的结果就不知道要跳转到哪一段程序去执行后面的过程……


所以CPU耗费了大量晶体管和功耗,去实现种种可以缩短这些突发流程的处理时间的机制。例如高频率以及为了达到高频率把整个指令执行流程拆分成十多二十级流水;为了缩短代码跳转时间采用预测执行分支代码,在判断条件计算完成前就抓取某个分支代码并进行解码;对于没有结果依赖的代码采用乱序执行从而可以同时执行更多指令;缓存的目标是整个存储系统上的所有数据,需要更大容量的缓存……这些机制都耗费了大量的晶体管,而且这些晶体管在高频率下工作会消耗比低频工作高得多的功耗。为了降低功耗和进一步提升性能,需要一条指令可以做更多的事情,所以CPU有各种各样部分功能重合但又无法完全互相取代的组合指令,为了实现这些组合指令又消耗了更多的晶体管……


GPU计算能力强则是只针对特定的,需要处理海量数据、超大量数据可以分组计算、计算顺序无关不需等待上一组算完就可以算下一组、往往是算上一组的时候后面就有好几组数据等待计算这样的应用。因此:

  • GPU需要很多核心,数据可以分成更多组同时计算,每一组的计算时间更短从而缩短整个计算时间;
  • 在功耗限制下,每组核心能分配到的功耗很低,需要最大化能耗比,这意味着GPU的频率比CPU低得多;
  • 低频率不需要太深的流水线;计算顺序无关所以不需要乱序执行;
  • 大量数据等待计算,所以某一组数据计算过程中如果需要等待数据加载,可以先切换去计算后面几组数据,所以一方面必要用分支预测去先抓取后面的代码,另一方面缓存容量容纳下后续计算任务需要数据就足够;
  • 还有一点,就是在GPU进行这些计算过程中,相对少量的流程处理是CPU去处理了——什么情况运行哪段代码,CPU通过驱动程序控制;需要计算哪些数据,这些数据存储在什么地方,CPU去找了……虽然相对GPU的计算来说,这些操作的计算量很少,但完全由GPU自己处理的话,GPU还真处理不了,就算能处理的,整个计算过程的时间也会有相当大幅度的延迟。


所以,GPU单个核心的结构比CPU简单的多,需要的缓存容量也小得多,自然可以节省下大量的晶体管,低频率又节省了大量的功耗,因此在一定芯片面积、功耗限制下,单个GPU可以容纳下比CPU多得多的计算核心。同样是台积电生产,5nm工艺生产的平头哥倚天710是128核心,每核心按照ARM X2公版计算为4个128位SVE单元;7nm工艺生产的NV GA100是108个SM单元,每个单元64×FP32+64×FP32/INT32+32×FP64;按照1×SVE=4×FP32=2×FP64算,倚天710和GA100的计算单元数量为2048:17280,接近1:8.5。

类似的话题

  • 回答
    CPU 和 GPU 之所以能实现如此截然不同的计算能力,根本原因在于它们在设计之初所承担的使命和因此产生的 架构差异。简单来说,CPU 是为处理一系列复杂且有顺序的指令而生,而 GPU 则更像是数量庞大的、并行执行的简单任务的“瑞士军刀”。让我们一层层剥开来看: 1. 设计使命的差异:敏捷的指挥官 .............
  • 回答
    CPU 和 GPU 在浮点运算能力上存在巨大差异,这并非偶然,而是源于它们各自的设计初衷和核心架构上的根本不同。要理解这一点,我们得深入剖析一下这两位计算大牛的“内在乾坤”。CPU:全能的“指挥官”,但对浮点运算并非“专精”CPU,或者说中央处理器,是计算机的“大脑”,它负责执行各种通用指令,从操作.............
  • 回答
    CPU/GPU 温度瞬间飙升十几度,这可不是什么妖术,而是背后一系列复杂物理和计算过程在短短一刹那间产生的连锁反应。咱们来掰扯掰扯,为什么这玩意儿的热度跟坐过山车似的。核心原因:计算需求的瞬息万变你电脑里的 CPU 和 GPU,就像是辛勤工作的工人。平时它们可能悠闲地在办公室里处理一些日常事务,比如.............
  • 回答
    这是一个非常好的问题,触及了当前计算硬件发展的核心差异。GPU 和 CPU 在性能提升路径上的不同,主要源于它们的设计目标、架构演进以及市场驱动力。我们可以从以下几个方面详细阐述: 为什么 GPU 每一代更新都有「重大突破」?GPU 的“重大突破”往往体现在以下几个方面,并且这些突破是可以被用户直观.............
  • 回答
    好的,咱们就来聊聊 PyTorch GPU 训练为啥都推荐 NCCL,而不是 Gloo。这事儿说起来,得从它们各自的“出身”和“本领”说起。首先,咱们得弄清楚 NCCL 和 Gloo 都是啥?简单来说,它们都是 分布式通信库。你想想,GPU 训练,特别是多 GPU、多节点训练,一个 GPU 上的模型.............
  • 回答
    的确,目前在深度学习领域,英伟达(NVIDIA)的GPU占据了绝对的市场主导地位,而AMD的GPU用户相对较少。这背后并非偶然,而是多种因素综合作用的结果,涉及技术生态、软件支持、硬件性能以及历史积累等多个层面。要深入理解这一点,我们可以从以下几个角度来分析:1. CUDA生态系统的强大和成熟度:这.............
  • 回答
    浮点计算,简单来说,就是计算机处理带有小数点的数字的能力。这和我们平时计算整数(比如数苹果)不太一样。比如,你要计算一个物体的运动轨迹,速度可能是每秒 3.14 米,加速度是 9.81 米/秒²,这时候就离不开浮点数了。 什么是浮点计算?浮点计算的“浮点”二字,形象地比喻了小数点的位置是可以“浮动”.............
  • 回答
    在深入探讨 CPU 的浮点运算能力为何不如 GPU,以及为何不单纯堆高 CPU 的浮点运算性能之前,咱们得先理清楚它们各自的“出身”和“使命”。想象一下,CPU 就像一个全能型的瑞士军刀,它设计之初就是要应对各种各样、千变万化的计算任务。它需要能够高效地处理逻辑判断(比如“如果…那么…”)、整数运算.............
  • 回答
    过去的电脑处理任务,尤其是那些需要大量计算的工作,主要依赖于中央处理器,也就是我们常说的 CPU。CPU 就像是电脑的大脑,它设计得非常精巧,擅长处理各种复杂、顺序性的指令,比如运行操作系统、处理文字、浏览网页这些需要逻辑判断和精细操作的任务。一个 CPU 里面会有几个核心,每个核心都像是一个小型的.............
  • 回答
    你这个问题问得很有意思,而且触及到视频压制(编码)过程中一个很核心的技术点。很多人会觉得GPU那么强大,压制视频肯定更快更好,怎么反而有时候CPU压制的视频“更清晰”呢?这背后的原因其实挺复杂的,涉及到底层算法、计算资源分配以及人眼对画质的主观感受等多个层面。咱们先得明白,视频压制(编码)本质上是一.............
  • 回答
    你这个问题问得挺有意思的,确实,我们给电脑装完操作系统后,还得专门去给显卡(GPU)装驱动,而处理器(CPU)似乎一直“自带”就能用。这里面其实是技术设计和硬件复杂性在起作用。咱们先说说 CPU。CPU,也就是中央处理器,它是电脑的大脑,负责执行绝大多数的计算和指令。早期的计算机,CPU的设计相对简.............
  • 回答
    CPU (中央处理器) 和 GPU (图形处理器) 是计算机中两种核心的处理器,虽然它们都执行计算任务,但它们的设计目标、架构和最擅长的任务却大相径庭。将它们比作人类大脑和专门的“艺术细胞”或“流水线工人”会更形象一些。下面我们来详细讲解 CPU 和 GPU 的区别: 1. 设计目标与核心理念 .............
  • 回答
    将人脑与计算机的 GPU 和 CPU 进行类比是一个非常有趣且复杂的话题,因为它涉及到两种截然不同但功能强大的处理系统。简单来说,人脑在某些方面可以被视为一个超级并行处理器,其整体能力远超当前最强大的 GPU 和 CPU 组合,但它在精确计算和高频操作方面存在巨大差异。为了详细阐述,我们需要从几个关.............
  • 回答
    英伟达的 Tesla GPU 绝对是专业领域的佼佼者,其强悍的性能和与消费级(也就是我们常说的“普通”)GPU之间存在着本质的区别。想要理解它们有多厉害,以及为何如此不同,我们需要深入剖析几个关键点。Tesla GPU:为计算而生,不为游戏而设首先得明白一个核心理念:英伟达的 Tesla 系列(如今.............
  • 回答
    芯动科技风华1号GPU:国产高性能GPU的一小步,但意义非凡在国产化浪潮迭起,科技自主成为国家战略核心的当下,芯动科技推出的风华1号GPU,无疑是一枚极具分量的棋子。虽然它距离国际顶尖水平还有一段距离,但其问世本身就标志着中国在高性能GPU研发领域迈出了坚实的一步,其意义,远比单纯的技术参数更加深远.............
  • 回答
    下一世代游戏主机,尤其是索尼的PlayStation和微软的Xbox系列,要实现性能上的飞跃,采用英伟达(NVIDIA)的GPU并非不可能,甚至可以说,这是一种非常值得探讨的可能性。当然,我们得把这个话题掰开了揉碎了聊聊。首先,我们要明白,目前为止的索尼和微软,在主机市场上的策略一直都比较“垂直整合.............
  • 回答
    玩显卡、耳机、单反/微单这三类产品的朋友们,虽然他们涉足的领域看似不同,但仔细琢磨,总能找出一些有趣的共性,就像三位性格迥异却又同道中人的老友。要说他们有什么特点,那可真是说来话长,而且绝不是千篇一律的模板,每个人都有自己的故事。显卡玩家(GPU):追求极致的“算力崇拜者”首先想到的是他们对“性能”.............
  • 回答
    GPU 不能完全取代 CPU 的最大原因在于它们 本质上的设计目标和擅长的任务类型存在根本性的差异。虽然 GPU 在某些特定领域表现出惊人的并行处理能力,但 CPU 仍然是通用计算的核心,是计算机大脑中不可或缺的组成部分。我们可以从以下几个方面来详细阐述:1. 设计理念和核心架构的差异: CPU.............
  • 回答
    苹果A13仿生芯片的性能,尤其是CPU和GPU部分,在不考虑散热限制的情况下,确实能与PC领域的一些产品相提并论,但要给出一个精确的“等同”级别,需要拆解来看。简单来说,它的CPU性能可以触碰到一些主流笔记本电脑的门槛,而GPU性能则可以与一些入门级的独立显卡相媲美。CPU方面:A13仿生芯片的核心.............
  • 回答
    你这个问题问得挺深入的,这涉及到GPU和CPU在设计理念、应用场景以及成本效益等多个层面的差异。简单来说,不是GPU“不能”像CPU那样独立出来,而是现有技术和市场需求使得将GPU焊接在显卡上,并作为一个独立的组件销售,是目前最合理、最高效的解决方案。我们来一点点拆解,为什么会是这样。 1. GPU.............

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有