GPU 和 CPU 的区别是什么?为什么挖矿、大模型都用 GPU?


一则或许对你有用的小广告

欢迎加入小哈的星球,你将获得:专属的实战项目(4个项目都能学) / 1v1 提问 / 简历修改 / Java 学习路线 / 社群讨论 / 学习打卡 / 每月赠书

  • 《Spring AI 项目实战(问答机器人、RAG 智能客服、联网搜索)》已完结,基于 Spring AI + Spring Boot 3.x + JDK 21...查看介绍

  • 《从零手撸:仿小红书(微服务架构)》 已完结,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...查看介绍;演示链接:http://116.62.199.48:7070/

  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接:http://116.62.199.48/

  • 新开坑项目:《从零手撸:秒杀系统高并发优化实战》 正在更新中...,查看介绍

截止目前,星球内专栏累计输出 150w+ 字,讲解图 5110+ 张,还在持续爆肝中.. 后续还会上新更多项目,已有 4700+ 小伙伴加入学习,欢迎点击围观

面试考察点

  1. 架构理解深度:面试官不仅仅是想知道 “GPU 核多 CPU 核少”,更是想知道你懂不懂两者在芯片设计哲学上的根本差异——为什么 CPU 不能堆成千上万个核?为什么 GPU 一个核这么弱?背后是 “延迟” 和 “吞吐” 两种设计取向的取舍。

  2. 并行计算认知:考察你是否理解什么样的任务适合 GPU,什么样的任务必须用 CPU。这直接决定你能不能在大模型训练、推理、数据并行这些场景里做出正确的技术选型。

  3. 场景迁移能力:挖矿和大模型看似是两个领域,但底层共性是 “海量重复计算”。面试官想看的是你能不能把这个共性抽象出来,而不是分别背两套答案。

核心答案

一句话总结:CPU 是 “几个老教授”,GPU 是 “几万个小学生”。 老教授能解微积分,但一次只能解一道题;小学生只会加减乘除,但一万个人同时算,总吞吐量吊打老教授。

对比维度 CPU GPU
核心数量 几个 ~ 几十个(消费级最多 32 核左右) 几千 ~ 几万个(如 RTX 4090 有 16384 个 CUDA Core)
单核能力 极强(复杂逻辑、分支预测、乱序执行) 弱(简单运算,注重吞吐)
晶体管分配 约 30% ALU,70% 控制逻辑 + 缓存 约 90% ALU,10% 控制和缓存
设计目标 低延迟(尽快完成单个任务) 高吞吐(同时处理海量任务)
内存带宽 DDR5 ~ 100 GB/s 级别 HBM3 ~ 3 TB/s 级别(差一个数量级)
擅长场景 操作系统调度、复杂业务逻辑、数据库、分支密集型 矩阵运算、图形渲染、哈希计算、神经网络训练

挖矿和大模型都是 “大规模、可并行、计算密集” 的任务,正好踩在 GPU 的设计甜区上。

CPU GPU 并行计算对比
CPU GPU 并行计算对比

深度解析

一、架构对比:晶体管怎么分配的

先把芯片的内部结构画出来,看一眼就懂了。

CPU GPU 架构对比
CPU GPU 架构对比

上图把两者的设计哲学摆得很清楚,我拆开讲:

  • CPU 的核心设计:单核里塞了大量控制单元——分支预测器、乱序执行引擎、深层流水线(15~20 级),还有动辄几十 MB 的多级缓存。这些都是为了让 “单个任务跑得尽可能快”。代价是占用了大量晶体管,留给算术单元(ALU)的不到 30%。

  • GPU 的核心设计:走的是另一个极端——把控制逻辑压到最简,缓存很小,把 90% 的晶体管都堆给了 ALU。一个 SM(Streaming Multiprocessor,流多处理器)里能塞 128 个甚至更多的 ALU,整张卡几千个 ALU 同时干活。单个 ALU 弱得一批,但架不住人多。

  • 本质差异:CPU 追求 “把一件事做得飞快”(低延迟),GPU 追求 “同时做千万件事”(高吞吐)。这俩其实是互补的——CPU 当 “指挥官” 负责调度,GPU 当 “军队” 负责冲锋。

二、为什么挖矿要用 GPU

先说挖矿的本质。比特币挖矿(SHA-256 哈希)和早期以太坊挖矿(Ethash)的核心逻辑是:

不停地算哈希 → 算到一个满足难度的值 → 拿到记账权 → 获得奖励

关键点来了:每一次哈希计算之间是独立的。算第 N 次和算第 N+1 次,不需要任何依赖关系,可以同时跑几千万次。

GPU 挖矿并行计算
GPU 挖矿并行计算

GPU 挖矿哈希并行
GPU 挖矿哈希并行

这图想表达什么:挖矿就是 海量并行尝试,每个尝试是一次哈希运算,互不依赖。

  • CPU 来挖:8 核 CPU 同时算 8 个哈希,每秒几千万次,电费都赚不回来。
  • GPU 来挖:几千个 ALU 同时算,每秒几亿次哈希,效率是 CPU 的几十上百倍。
  • 专用矿机(ASIC):更狠,直接把 SHA-256 算法硬件化,效率又比 GPU 高几个数量级。所以现在比特币挖矿早就 ASIC 化了,GPU 只在以太坊(Ethash 算法刻意反 ASIC)这类场景里吃香。

一句话:挖矿是 “算力竞赛”,谁的并行吞吐高谁就赢,CPU 这种 “少而精” 的架构天然吃亏。

三、为什么大模型都用 GPU

大模型训练的核心计算是 矩阵乘法。一个 Transformer 层里,Attention 和 FFN 加起来要做海量的矩阵乘加运算(MAC:Multiply-Accumulate)。

举个例子,GPT-3 有 1750 亿参数,训练时一次前向 + 反向传播涉及的浮点运算量大概在 10²³ FLOPs 这个级别(约 3.14 × 10²³ FLOPs)。这种计算有一个鲜明特征:

大量数据、高度规则、可并行拆分

矩阵乘法 C = A × B 里,结果矩阵 C 的每一个元素都是独立计算的,完全可以并行。

GPU 矩阵并行计算
GPU 矩阵并行计算

GPU 大模型矩阵计算
GPU 大模型矩阵计算

图里看得很清楚:CPU 一个一个算,GPU 全部一起算。

GPU 在大模型场景的几个关键加成:

  • Tensor Core:NVIDIA 从 Volta 架构(V100)开始引入,专门做 4×4 矩阵乘加的硬件单元。一个时钟周期能完成 4×4×4=64 次 FP16 乘加运算,相比之下普通 CUDA Core 单周期只能做 1 次浮点运算。考虑调度开销后,整体吞吐也比纯靠 CUDA Core 快 8~16 倍。H100、B200 这些新卡的 Tensor Core 已经支持 FP8、甚至 INT4,单卡算力动辄几百 TFLOPS。
  • 高带宽显存:大模型权重和激活值动辄几十 GB,数据搬运比计算还慢。GPU 用 HBM3/HBM3e 显存,带宽 3 TB/s 起步,是 CPU DDR5 内存的 30 倍以上。算得快还得搬得快,否则 ALU 就在那儿干等
  • CUDA 生态:NVIDIA 花了十几年构建的软件护城河。PyTorch、TensorFlow、cuDNN、cuBLAS 全都跑在 CUDA 之上。AMD 的 ROCm、Intel 的 OneAPI 想追,但生态差距太大。

我之前看 H100 的白皮书,单卡 FP8 算力能到 4000 TFLOPS,这个数字放在十年前是不可想象的。

四、CPU 真的没用了吗

并不是。CPU 在 AI 链路里仍然不可替代:

  • 训练时的数据预处理:图片解码、文本 tokenize、数据增强这些 IO 密集 + 逻辑密集的活,GPU 干不了,全是 CPU 在扛。
  • 推理服务:小模型在线推理(比如 Llama 7B 量化版本),CPU + AMX 指令集(Intel)或 SME(ARM)也能跑,且部署成本低,很多边缘场景就用 CPU。
  • 调度和协调:多卡训练时的梯度同步、节点间通信、任务调度,全是 CPU 在操盘。

记住一句话:GPU 是干活的,CPU 是管事的。两者谁也替代不了谁。

面试高频追问

  1. 为什么 CPU 不能堆成千上万个核?

    主要是三个问题:一是缓存一致性开销爆炸,核越多同步越难;二是内存带宽跟不上,核多了数据喂不饱;三是功耗和散热天花板摆在那。所以服务器 CPU 也就做到几十核到一百多核,再往上就得换 NUMA 架构或者集群方案了。

  2. GPU 编程模型是什么?Java 能用吗?

    主流是 NVIDIA 的 CUDA(C/C++)。Java 这边有几种方案:JCuda(JNI 调 CUDA)、TornadoVM(自动 JIT 到 GPU)、DJL(Deep Java Library,调用底层 cuDNN)。不过生产环境做 AI 还是 Python + PyTorch 的天下,Java 主要在推理部署(Spring AI、ONNX Runtime)这一层发力。

  3. 大模型推理一定要用 GPU 吗?

    不一定。小模型量化后(INT8/INT4)在 CPU 上推理完全可行,特别是批量小、延迟要求不严的场景。大规模在线服务(高 QPS、长上下文)才必须上 GPU。选型看的是 “吞吐 vs 成本” 的平衡

常见面试变体

  • "CPU 和 GPU 的架构有什么本质区别?"
  • "为什么深度学习选择 GPU 而不是 CPU?"
  • "Tensor Core 和 CUDA Core 的区别是什么?"
  • "如何评估一个任务是否适合 GPU 加速?"

记忆口诀

CPU 低延迟,GPU 高吞吐;CPU 老教授解难题,GPU 小学生堆人数。

判断任务该上 CPU 还是 GPU,就看三个特征:计算是不是可并行、运算是不是简单重复、数据量是不是大。三个都满足,GPU 碾压;只要有一个不满足,CPU 反而更合适。

总结

一句话:CPU 和 GPU 是分工关系,谁也替代不了谁。挖矿和大模型都用 GPU,就因为它们都是 “海量可并行计算” 任务,正中 GPU 高吞吐的设计甜区。把 “延迟 vs 吞吐” 这个底层逻辑讲清楚,再举出 Tensor Core、HBM、CUDA 这几个加分点,这道题基本就稳了。