简析TPU、IPU、NPU是什么?

学段:职业成长  学科:计算机科学与技术  来源:深圳英鹏信息技术官方帐号  作者:当代-爱搞机评测室
简析TPU、IPU、NPU是什么?
摘要:在人工智能AI技术崛起的这几年来,在高通、苹果、三星、麒麟、联发科、Google 的SoC上,大家经常会看到“TPU、IPU、NPU”之类的名字,这些“XPU”有什么分别?是真的有那么多不同的架构?还是厂商的概念营销?难免会让人一头雾水,本文或将为你在一定程度上解开疑惑。…

【CPU历史演变】

导读:在人工智能AI技术崛起的这几年来,在高通、苹果、三星、麒麟、联发科、Google 的 SoC 上,大家经常会看到“TPU、IPU、NPU”之类的名字,这些“XPU”有什么分别?是真的有那么多不同的架构?还是厂商的概念营销?为了解答这个问题,SemiEngineering 搜集了大量业内人的看法并汇总成文。我们对此进行精简和编译,但文章内容依然非常硬核,做好心理准备,我们现在发车!

 主要参考原文链接:https://semiengineering.com/what-is-an-xpu

图源aita

『关于CPU』

从 CPU 及其发展方式的角度来看,这些“XPU”中的大部分都不是真正的处理器。机器学习加速器是一类处理器,但它们用来加速的处理部分却多种多样。它们更像是 GPU,是用于执行特殊工作负载的加速器,而且它们本身就有很多类型。

处理器的本质可以归结为三件事,最后还是回到指令集架构 (ISA):首先定义要做的事,然后是 I/O 和内存(支持 ISA 和它试图完成的任务)。而未来我们将看到比过去两、三年更多的创新和变化。

许多新架构都不是单一处理器,它们是不同类型的处理器或可编程引擎的组合,它们存在于同一个 SoC 或同一个系统中,将软件任务分派到不同的硬件或可灵活变动的可编程引擎上。所有这些处理器可能共享一个公共 API,但执行域有所不同。在这个层面,确实是有各种类型的不同架构。

但现实情况是,大部分“XPU”的命名都是营销,而且这些命名和缩写,同时指代两种东西:一种是用于解释处理器的架构,例如 SIMD(单指令多数据),而另一种定义了它正在寻址的应用程序段。所以它既可以用来定义处理器架构,也可以用作如“张量处理单元(TPU)”这样的品牌名,毕竟厂商们不是在为单个处理器命名,而是在为他们的架构命名。

『历史』

在40 年前,命名的问题要简单很多。首先是大家最熟悉的中央处理器 (CPU) ,虽然它有很多演变版本,但它们基本上都是冯诺依曼架构,是图灵完备的处理器。每个都有不同的指令集来提升处理效率,当年还针对复杂指令集 (CISC) 与精简指令集 (RISC) 优缺点,有过非常广泛的讨论。

后来的 RISC-V 的出现给 ISA 带来了很多关注。ISA 定义了处理器针对已定义任务的优化程度,人们可以查看 ISA 并开始计算周期。例如,如果一个 ISA 具有本机指令并以 1GHz 运行,那我们就能将它与另一个 ISA 处理器进行比较,后者要完成相同的功能可能需要两条指令,但频率是 1.5GHz,孰强孰弱就很明显了。

CPU 有多种封装方式,有时将 IO 或内存放在同一个封装中,而后两者被称为微控制器单元 (MCU)。在调制解调器大行其道的时候,数字信号处理器(DSP) 出现了,它们的不同之处在于它们使用了哈佛架构,将指令总线与数据总线分开了,其中一些还用了 SIMD 架构来提升数据处理效率。

指令和数据的分离是为了提高吞吐率(虽然它确实限制了自编程之类的边缘编程)。通常,这里的边界条件不是计算,而是 I/O 或内存。业内的重点已经从提升计算能力,转变成确保有足够的数据来让计算进行下去并保持性能。

当单个处理器的性能无法再继续提升,那就把多个处理器连在一起。通常它们还会使用共享内存,让每个处理器和整个处理器集群都保持图灵完备。程序的任何部分在哪个核心上执行都无关紧要,反正结果是一样的。

而下一个重大发展,是图形处理单元(GPU)的出现。GPU打破了常规,因为每个处理单元或管线都有自己的内存,无法在处理单元外部寻址。因为内存大小有限,只能执行那些能放入内存的任务,所以对任务本身有限制。

对于某些类型任务,GPU 是非常强大,但它们的管线非常长,导致了延迟和不确定性。这些管线让 GPU 单元不断处理数据,但如果要刷新管线,效率就会大打折扣。

GPU 和后来的通用 GPU (GPGPU) 定义了一种编程范式和软件栈,使它们比以前的加速器更容易上手。多年来,某些工作一直是专业化的,有用于运行连续程序的 CPU,有专注于图像显示,并将我们带入高度并行世界的图形处理器,后者使用很多小的处理单元来执行任务(包括现在的机器学习任务)。

那有什么架构规则可以用来解释所有的新架构吗?有的,或许片上网络 (NoC)是个合适的定义 。过去,处理器阵列通常用内存或固定网络拓扑连接(网状或环形),而 NoC 让分布式异构处理器能以更灵活的方式进行通信。而将来,它们还可以在不使用内存的情况下进行通信。

现在的 NoC 是针对数据的,而未来的 NoC 也能发命令和通知等数据,可以扩展到那些加速器间不只是交互数据的领域。加速器阵列或集群的通信需求可能与 CPU 或标准 SoC 的通信需求不同,但 NoC 并不会将设计者限制在一个子集里,他们能通过满足不同加速器的特殊通信需求来优化和提高性能。

【相关文章】好搜一下
ChatGPT和人工智能简介

ChatGPT和人工智能简介

在当今这个数字化时代,人工智能的应用已经贯穿到我们的生活中的各个方面,尤其是在实…