gpu-computing

CPU 与 GPU 完整深度详解

·10 分钟阅读·3879 字
📋 目录

CPU 与 GPU 完整深度详解

1. 核心定位与底层设计哲学

1.1. CPU(中央处理器,Host主机)

设计目标:通用、低延迟、强逻辑控制
冯·诺依曼通用架构,芯片晶体管分配:30%控制单元 + 50%多级缓存 + 仅20%计算ALU

  • 擅长:串行复杂逻辑、大量分支判断、操作系统调度、IO交互、数据库、业务流程控制;
  • 短板:并行计算核心极少,海量矩阵浮点运算吞吐极低;
  • 形象比喻:全能专家,一件复杂事快速做完,但同时只能处理少量任务。

1.2. GPU(图形处理器,Device设备,NVIDIA CUDA架构)

设计目标:高吞吐、大规模同质并行计算
众核SIMT专用架构,芯片晶体管分配:80%以上计算单元(CUDA/Tensor Core),少量缓存与控制逻辑

  • 擅长:重复、无复杂分支的批量运算(像素渲染、神经网络卷积、矩阵乘法、LLM张量计算);
  • 短板:分支多、逻辑跳转频繁的任务会严重降速;
  • 形象比喻:上万流水线工人,同时批量做相同简单工序,单个工人处理复杂逻辑很慢。

2. 硬件架构逐层拆解对比

2.1. (一)CPU内部硬件结构

  1. 核心Core
    服务器CPU一般4~64核,每个Core独立完整流水线:取指、译码、执行、写回;
    内置复杂硬件:乱序执行、深度流水线、强大分支预测单元、超标量多发射。
  2. 多级缓存(L1/L2/L3)
  • L1:每个核私有,极小、超低延迟;
  • L2:单核私有/小集群共享;
  • L3:所有核心共享大容量缓存;
    缓存层级极高,用来掩盖内存访问延迟,保障单线程低延迟。
  1. 向量并行单元SIMD(AVX/NEON)
    单核内部少量并行,单线程内多数据运算,并行粒度极小。
  2. 统一内存空间
    所有CPU核心共享系统内存,无物理隔离,直接互相读写。

2.2. (二)NVIDIA GPU内部硬件层级(从芯片到最小计算单元)

  1. GPC 图形处理集群
    GPU顶层模块,包含若干SM、L2缓存、显存控制器;
  2. SM 流式多处理器(GPU最小独立计算单元,对标CPU Core)
    一张A100有108个SM,H100有132个SM,每个SM是微型并行集群:
  • Warp调度器:调度32线程为一组的Warp;
  • CUDA Core:通用浮点/整数计算单元;
  • Tensor Core:AI矩阵乘加专用硬件,大模型训练推理核心加速;
  • 寄存器堆:超大片上寄存器,每个线程独立寄存器;
  • Shared Memory 共享内存:同Block线程高速互通,远快于全局显存;
  • L1缓存;
  1. CUDA Core(最小计算单元,对标CPU ALU)
    一张高端GPU上万颗CUDA Core,数量远超CPU核心;
  2. 显存HBM/GDDR6(全局设备显存)
    和CPU内存物理完全隔离,带宽极高(TB/s级别),但无法被CPU直接访问,必须通过PCIe拷贝传输。

3. 并行执行模型:SIMD(CPU)vs SIMT(GPU)(核心考点)

3.1. CPU:SIMD 单指令多数据

  • 并行粒度:数据级并行,单线程,多条数据;
  • 执行逻辑:一个CPU线程,一条指令同时操作向量寄存器内多组数据;
  • 线程控制流:全程只有一套执行路径,无独立分支;
  • 分支处理:不存在线程分歧,不会出现算力浪费;
  • 限制:只能处理完全相同逻辑的数据,不规则数据效率差。

3.2. GPU:SIMT 单指令多线程(CUDA独有)

  • 并行粒度:线程级并行,32个独立线程组成一个Warp;
  • 执行逻辑:同一Warp共享指令调度器,但每个线程拥有独立PC、独立寄存器、独立控制流
  • 分支发散(Divergence,GPU性能最大坑):
    若Warp内线程走不同if/else分支,硬件只能串行执行所有分支,闲置一半计算单元,GPU利用率暴跌;
  • 优势:支持大量独立线程,适配海量数据并行,可通过__syncthreads()块内线程同步、共享内存交换数据。

3.3. 核心差异汇总

维度CPU SIMDGPU SIMT
并行单元单线程、多份数据32个独立线程为一组Warp
程序计数器全局唯一,无分离每个线程独立PC
分支损耗无分支发散损耗分支分歧会大幅降低算力
线程同步不支持多线程同步Block内线程可同步、共享高速内存
适用负载逻辑复杂、少量向量运算海量同质并行、矩阵/卷积计算

4. 内存体系巨大差异(运维高频故障根源)

4.1. CPU内存架构

  • 内存:系统DDR内存,低带宽、低延迟访问;
  • 层级:L1→L2→L3→系统内存,统一地址空间,所有核心直接读写;
  • 访问:任意CPU核可直接访问全部内存,无拷贝开销。

4.2. GPU内存分层(速度从快到慢)

  1. 寄存器Registers:线程私有,极速,容量极小;
  2. Shared Memory:同Block线程共享,片上高速缓存;
  3. L2缓存:整个GPU所有SM共享;
  4. 全局HBM/GDDR显存:GPU大容量存储,带宽极高;
  5. CPU主机内存:最慢,与GPU物理隔离。

4.3. 关键约束:Host-Device内存隔离

CPU内存与GPU显存不能互相直接读写,必须经过PCIe总线拷贝:

  • H2D:CPU数据拷贝到GPU显存(加载数据集、输入请求);
  • D2H:GPU计算结果传回CPU;
    PCIe带宽远低于GPU显存内部带宽,频繁拷贝是训练/推理性能头号瓶颈

5. 算力、吞吐、延迟特性对比

  1. 单线程延迟:CPU远强于GPU
    CPU高主频、多级缓存、分支预测,单个串行任务响应速度远超GPU;
  2. 大规模浮点吞吐:GPU碾压CPU
    H100 FP8张量算力数千TFLOPS,同代高端CPU仅几十GFLOPS,相差上百倍;
  3. 并发上限
    CPU:同时并发几十/几百任务;
    GPU:单次Kernel可调度数万至数十万并发线程;
  4. 资源切换开销
    CPU:线程上下文切换成本高,依赖操作系统;
    GPU:Warp硬件级快速切换,访存等待时自动切换空闲Warp掩盖延迟。

6. 完整结构化对比表

对比维度CPUGPU(NVIDIA CUDA)
设计理念通用计算、低延迟、强控制专用并行、高吞吐、海量重复运算
核心数量4~64复杂大核心数十个SM,上万简易CUDA Core
并行模型SIMD(单核向量并行)SIMT(32线程Warp线程级并行)
分支处理强大硬件分支预测,无损耗分支发散造成算力大幅浪费
内存空间CPU内存全局统一共享CPU内存、GPU显存物理隔离,需PCIe拷贝
缓存占比芯片一半面积是多级缓存缓存占比极低,绝大多数是计算单元
优势场景操作系统、业务逻辑、数据库、串行任务AI训练/推理、图形渲染、科学仿真、矩阵运算
短板场景海量并行浮点计算吞吐极低复杂多分支、少量串行任务速度慢
调度单位OS进程/线程Grid/Block/Thread三层线程模型
专用加速单元AVX向量单元Tensor Core矩阵加速、RT光追核心

7. 异构计算分工(CUDA Host-Device模型,AI运维核心)

完整AI训练/推理流程中CPU与GPU天然分工协作:

  1. CPU(Host)负责
  • 操作系统、容器、K8s调度、网络IO、文件读取;
  • 数据集预处理、文本编码、请求解析、复杂业务判断;
  • 初始化CUDA上下文、下发Kernel计算任务到GPU;
  • 接收GPU计算结果,做后处理、日志、接口返回;
  1. GPU(Device)负责
  • 大规模并行矩阵、卷积、Attention张量运算;
  • 缓存模型权重、KV Cache、激活值到高速显存;
  • 多Stream异步并发处理批量推理请求;
  • 多卡之间通过NVLink/NCCL同步梯度、张量数据。

8. AI运维视角高频故障与硬件架构关联

  1. GPU利用率忽高忽低
    CPU预处理慢,持续阻塞H2D数据拷贝,GPU无事可做;或Warp分支发散SIMT算力浪费;
  2. 训练速度上不去
    频繁CPU-GPU数据拷贝、Shared Memory不足、Tensor Core未启用;
  3. 多机分布式训练带宽瓶颈
    NVLink/IB链路带宽不足,GPU之间D2D显存拷贝耗时;
  4. 容器CUDA版本报错 insufficient driver version
    软硬件分层:容器Runtime高于宿主机Driver支持上限;
  5. 显存间歇性OOM
    CUDA显存延迟分配产生碎片,GPU内存分层访问不规整。

9. 面试核心背诵要点

  1. CPU侧重通用低延迟,少量强核心;GPU侧重并行高吞吐,海量简易计算核心;
  2. CPU采用SIMD单线程向量并行,GPU采用SIMT多线程Warp并行,SIMT存在分支发散损耗;
  3. CPU内存与GPU显存物理隔离,必须PCIe拷贝传输,拷贝是性能瓶颈;
  4. 异构分工:CPU做控制、IO、串行逻辑;GPU做大规模矩阵并行计算;
  5. SM是GPU最小独立计算单元,对应CPU Core,内置CUDA Core、Tensor Core、共享内存。

关联文档