CPU 的设计初衷是串行,适合于处理各种复杂的逻辑关系。GPU 专注于大规模并行处理,适合同时处理大量简单的计算任务,最初被广泛应用于图形处理领域。NPU 是专为神经网络处理而设计的处理器,其优化设计考虑了神经网络的特点,从而实现了在相同能耗下完成更多计算任务的能力,具备较高的能效比。
一、CPU
中央处理器(Central Processing Unit, CPU)由控制单元(Control Unit)、算术逻辑单元(Arithmetic Logic Unit, ALU)、寄存器(Registers)和高速缓存(Cache)等部件组成。
CPU的示意图如下:
二、GPU
图形处理单元(Graphics Processing Unit, GPU)的架构针对并行计算进行了优化,例如流处理架构(Streaming Multiprocessors,SMs)可以有效地执行大量相似的计算任务,其中一个 SM 包含了多个 ALU。而 CPU 的架构则更多地专注于通用计算、控制和缓存管理。
GPU和CPU的主要区别示意图如下:
三、NPU
神经网络处理器(NPU, Neural network Processing Unit)通过电路来模拟神经元,其中存储和处理是一体化的,通过突触权重来体现。而在冯·诺伊曼结构中,存储和处理是分离的,分别由存储器和运算器来实现。和通用的 CPU 或 GPU 相比,NPU 更专注于高效执行神经网络的相关运算,如矩阵乘法、卷积等,因此可以在较短的时间内处理大量的神经网络计算任务,运行效率会更高一些。
关于 NPU 架构的具体内容,可以看本篇的参考资料、网上的其他资料或者相关的书籍,这里不详细讨论。目前 NPU 还在快速发展中,大部分型号可能主要用于模型的推理(正向传播),而不是训练。如果需要训练模型,比较常用的是 GPU 或 CPU。
补充:张量处理单元 TPU(Tensor Processing Unit) 是由谷歌设计的专门用于加速人工智能任务的处理器,其设计和优化针对的是深度学习和神经网络模型的计算需求。因此,TPU 也可以被认为是一种 NPU。
一个简单的神经网络示意图如下:
四、总结
- CPU:70% 的晶体管用来构建高速缓存,还有一部分的控制单元,其中的计算单元比较少,这样的设计适合复杂的逻辑和控制运算。
- GPU:晶体管大部分构建计算单元,这样的设计适合运算复杂度低的大规模并行计算。
- NPU:在电路层模拟神经元,通过突触权重实现存储和计算一体化。一条指令完成一组神经元的处理,这样的设计可以提高神经网络的运行效率。
参考资料:
[1] AI 101: GPU vs. TPU vs. NPU
[2] Understanding the architecture of a GPU
[3] NPU的算法,架构及优势分析
[4] NPU处理器架构
[5] 为什么 GPU 的通用计算能力高于 CPU?架构原因?内核数量?
[6] NPU架构分析与应用
【说明:本站主要是个人的一些笔记和代码分享,内容可能会不定期修改。为了使全网显示的始终是最新版本,这里的文章未经同意请勿转载。引用请注明出处:https://www.guanjihuan.com】