post on 20 Apr 2025 about 4521words require 16min
CC BY 4.0 (除特别声明或转载文章外)
如果这篇博客帮助到你,可以请我喝一杯咖啡~
现代的计算机, 大多遵守冯诺依曼体系结构,即
- CPU,即中央处理器,是一台计算机的运算核心和控制核心。其功能主要是解释计算机指令以及处理计算机软件中的数据。CPU 由运算器、控制器、寄存器、高速缓存及实现它们之间联系的数据、控制及状态的总线构成
- 存储器,分为外存和内存, 用于存储数据(使用二进制方式存储)
- 输入设备,用户给计算机发号施令的设备
- 输出设备,计算机个用户汇报结果的设备
CPU/GPU/NPU 等等都是硬件芯片,简单来说,晶体管既可以用来实现逻辑控制单元, 也可以用来实现运算单元(算力)。 在芯片总面积一定的情况下,就看控制和算力怎么分。
- CPU 处理器架构和工作原理浅析 - 流星泪 - 博客园
- CPU 结构 对于 CPU 的原理和结构上面两篇博客已经描述的非常清晰了,如有需要请跳转上面两个链接
大部分芯片面积都用在了逻辑单元,因此逻辑控制能力强,算力弱(相对 GPU,NPU)。
显卡分为集显,核显和独显
大部分芯片面积用在了计算单元,因此并行计算能力强,但逻辑控制弱。 适合图像渲染、矩阵计算之类的并行计算场景。作为协处理器,需要在 CPU 的指挥下工作。
CUDA 是 NVIDIA 推出的并行计算平台与编程模型,允许开发者使用 C/C++(以及其他语言绑定)直接在 GPU 上编写并行代码,将大量浮点与整数运算分配给成百上千个并行执行的 CUDA 核心,从而在深度学习训练、科学计算、图像处理等领域显著提升计算性能。
在这个框架下,CUDA 就像一座“软件桥梁”:它对上层开发者提供了一套统一的 API,开发者只需在 Python、C++ 中调用相应接口,就能将运算任务提交给 GPU;对下层,CUDA 又会自动将这些高层调用翻译成不同 GPU 架构所需的低阶指令。
不论是图形渲染、AI 推理,还是流体模拟等数值运算,都要经过这层“中介”,由 CUDA 负责调度和分派运算到各个并行核心。这样一来,开发者无需关心底层硬件如何切分任务、如何分配资源,只需调用高层接口,就能一键触发 GPU 的海量并行加速,极大简化了并行编程的复杂度。
按照上文所述,CPU 和 GPU 都是较为通用的芯片,但是随着人们的计算需求越来越专业化,人们希望有芯片可以更加符合自己的专业需求,这时,便产生了 ASIC(专用集成电路)的概念。
ASIC 是指依产品需求不同而定制化的特殊规格集成电路,由特定使用者要求和特定电子系统的需要而设计、制造。当然这概念不用记,简单来说就是定制化芯片。
因为 ASIC 很“专一”,只做一件事,所以就会比 CPU、GPU 等能做很多件事的芯片在某件事上做的更好,实现更高的处理速度和更低的能耗。但相应的,ASIC 的生产成本也非常高。
也是协处理器。在 wikipedia 中没有专门的 NPU (Neural Processing Unit) 页面,而是归到 AI Processors 大类里面, 指的是一类特殊目的硬件加速器,更接近 ASIC,硬件实现神经网络运算, 比如张量运算、卷积、点积、激活函数、多维矩阵运算等等。
如果还不清楚什么是神经网络,可以看看 以图像识别为例,关于卷积神经网络(CNN)的直观解释(2016)。
在这些特殊任务上,比 CPU/GPU 这种通用处理器效率更高,功耗更小,响应更快(比如一个时钟周期内可以完成几十万个乘法运算), 因此适合用在手机、边缘计算、物联网等等场景。
TPU:这里特制 Google 的 Tensor Processing Unit,目的跟 NPU 差不多。对 TPU 和 GPU 的使用场景区别有一个非常形象的比喻:
如果外面下雨了,你其实并不需要知道每秒到底有多少滴雨, 而只要知道雨是大还是小。 与此类似,神经网络通常不需要 16/32bit 浮点数做精确计算,可能 8bit 整型预测的精度就足以满足需求了。
可编程性是 TPU 的另一个重要设计目标。TPU 不是设计用来运行某一种神经网络,而是要能加速许多不同类型的模型。
大多数当代 CPU 都采用了精简指令集(RISC)。但 Google 选择复杂指令集(CISC)作为 TPU 指令集的基础,这一指令集侧重于运行更复杂的任务。
TPU 包括以下计算资源:
Google TPU 中通过 MAC 模块进行矩阵乘法的加速,官方给出的加速矩阵乘法运算示意图如上 Google 为其设计了 MXU 作为矩阵处理器,可以在单个时钟周期内处理数十万次运算,也就是矩阵(Matrix)运算。
MXU 有着与传统 CPU、GPU 截然不同的架构,称为脉动阵列(systolic array)。之所以叫“脉动”,是因为在这种结构中,数据一波一波地流过芯片,与心脏跳动供血的方式类似。
以上对比可概括为:
CPU(中央处理器)适合通用计算,处理广泛任务但不擅长并行处理。GPU(图形处理器)专为并行任务设计,广泛用于图形渲染和 AI 模型训练。NPU(神经处理单元)优化 AI 和机器学习任务,特别在边缘计算中因能效高而受青睐。未来,NPU 可能更多集成到移动设备和 IoT 设备中,GPU 继续主导 AI 训练和高性能计算,CPU 维持通用计算核心。
CPU、GPU 和 NPU 是现代计算的核心组件,各有独特功能和应用。CPU(中央处理器)是通用计算的核心,设计上处理广泛任务,如运行操作系统和生产力软件,但不擅长并行处理。GPU(图形处理器)专为并行任务优化,拥有数千核心,适合图形渲染和 AI 模型训练,如深度学习加速。NPU(神经处理单元)则是为 AI 和机器学习设计,优化矩阵运算,能效高,特别适合边缘计算和实时 AI 任务,如智能手机的图像识别。
小结:
- 在通用计算领域,CPU 依旧是基础,但其 AI 加速能力会更多依赖于向量化指令和异构协同;
- GPU 将继续主导深度学习训练,并向 AI 推理、科学计算等方向拓展;
- NPU 则在边缘 AI 推理场景中大放异彩,并与 GPU 形成 “端 + 云” 协同加速架构。
Related posts