NPU 是一种专门为人工智能(AI)和机器学习(ML)任务设计的处理器。它擅长处理神经网络算法所需的并行计算,尤其是在执行推理任务(如图像识别、语音处理、自然语言理解)方面表现出色。与 CPU 和 GPU 相比,NPU 在处理 AI 工作负载时通常具有更高的能效和更快的速度,因此在智能手机、笔记本电脑和边缘计算设备中越来越常见。
TPU(Tensor Processing Unit)张量处理单元
这是由 Google 开发的一种人工智能加速器,专门为神经网络机器学习(特别是使用 TensorFlow 软件)而设计。TPU 擅长处理大规模、低精度的计算,在深度学习模型的训练和推理方面表现出色。
IPU
Infrastructure Processing Unit (基础设施处理单元):例如 Intel 开发的 IPU,它是一种可编程网络设备,旨在卸载数据中心基础设施任务(如网络虚拟化、存储虚拟化、安全隔离)以提高 CPU 利用率和性能。它常被视为 SmartNIC 的演进。
Intelligence Processing Unit (智能处理单元):Graphcore 等公司将他们的 AI 处理器命名为 IPU,这类处理器专门针对图相关的应用和AI/机器学习工作负载进行优化。
FPGA:Field-Programmable Gate Array (现场可编程门阵列)
计算单元的主要特性是一个周期内可执行的操作数和一秒钟内可执行的周期数。前者用每周期指令数(IPC: instructions per cycl)衡量,后者用时钟速度衡量。在制造新的计算单元时,这两个指标总是相互竞争。例如,英特尔酷睿系列具有极高的 IPC,但时钟速度较低,而奔腾 4 芯片则相反。另一方面,GPU 具有极高的 IPC 和时钟速度,但却存在其他问题,例如我们在 “通信层 ”中讨论的通信速度慢的问题。
此外,虽然提高时钟速度几乎可以立即加快在该计算单元上运行的所有程序(因为它们每秒可以进行更多计算),但更高的 IPC 也会改变可能的矢量化水平,从而对计算产生巨大影响。当 CPU 一次获得多个数据块,并能同时对所有数据块进行操作时,就会发生矢量化。这种 CPU 指令被称为单指令多数据 (SIMD: single instruction, multiple data)。
总体而言,计算单元在过去十年的发展相当缓慢。由于晶体管越来越小的物理限制,时钟速度和 IPC 一直停滞不前。因此,芯片制造商一直依赖其他方法来提高速度,包括同步多线程(simultaneous multithreading:多个线程可同时运行)、更巧妙的无序执行(out-of-order execution)和多核架构(multicore architectures)。
超线程技术为主机操作系统(OS)提供了一个虚拟的第二 CPU,巧妙的硬件逻辑试图在单个 CPU 的执行单元中穿插两个指令线程。如果成功,可比单线程提高多达 30%。通常情况下,当两个线程的工作单元使用不同类型的执行单元时,这种方法就能很好地发挥作用--例如,一个线程执行浮点运算,另一个线程执行整数运算。
无序执行能让编译器发现线性程序序列的某些部分并不依赖于前一个工作的结果,因此这些工作可以以任何顺序或同时进行。只要顺序结果在正确的时间出现,程序就能继续正确执行,即使计算的工作片段与编程顺序不符。这样,当其他指令可能受阻(如等待内存访问)时,某些指令也能执行,从而提高了可用资源的总体利用率。