npu是什么意思啊(TPU、IPU、NPU是什么?)

npu它指的是嵌入式神经网络处理器NPU处理器专门为物联网人工智能设计,用于加速神经网络的运行,解决神经网络运行中传统芯片效率低下的问题。

在 AI 近年来,在高通、苹果、三星、麒麟、联发科,Google 的 SoC 在上面,人们经常看到TPU、IPU、NPU这些名字,比如XPU有什么区别?有这么多不同的结构吗?还是制造商的概念营销?

回答这个问题,SemiEngineering 收集了大量业内人士的意见,总结了原文链接:https://semiengineering.com/what-is-an-xpu。我们对此进行了简化和编译,但文章的内容仍然很硬核,做好了心理准备,我们现在就开始了!

「科普」一头雾水?TPU、IPU、NPU是什么?
 

图源aita

从 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,很明显谁强谁弱。

「科普」一头雾水?TPU、IPU、NPU是什么?
 

CPU 有时会有多种包装方式 IO 或者存储在同一包装中,然后两者被称为微控制器单元 (MCU)。数字信号处理器在调制解调器号处理器(DSP) 它们的区别在于它们使用哈佛架构,将指令总线与数据总线分开,其中一些也被使用 SIMD 提高数据处理效率的架构。

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

当单个处理器的性能不能继续提高时,将多个处理器连接在一起。通常,它们还使用共享内存来保持每个处理器和整个处理器集群的图灵完整。程序的任何部分在哪个核心上都不重要,结果是一样的。

下一个重大发展是图形处理单元(GPU)的出现。GPU它打破了传统,因为每个处理单元或管道都有自己的内存,无法在处理单元外找到地址。由于内存大小有限,只能执行可以放入内存的任务,因此对任务本身有限制。

对某些类型的任务,GPU 它非常强大,但它们的管道非常长,导致延迟和不确定性。这些管道使 GPU 单元不断处理数据,但如果要刷新管道,效率会大大降低。

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

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

现在的 NoC 对数据,对未来 NoC 还可以发送命令和通知等数据,可以扩展到加速器之间不仅仅是交互数据的领域。加速器阵列或集群的通信需求可能与 CPU 或标准 SoC 但是 NoC 通过满足不同加速器的特殊通信需求,可以优化和提高性能,而不限制设计师进入子集。

执行架构

区分处理器的另一种方法是看到它们优化了特定的运行环境。例如,相同的软件可以在云和微型物联网设备上运行,但在不同的环境中使用的架构完全不同,对性能、功耗、成本和极端条件下的运行能力有不同的要求。

「科普」一头雾水?TPU、IPU、NPU是什么?
 

这可能是因为对低延迟的需求,或者是因为功耗,一些原本针对云计算的软件现在已经逐渐放在设备端运行。虽然硬件架构不同,但我们自然希望拥有完全相同的软件栈,这样软件就可以在两种场合运行。云需要灵活性,因为它运行不同类型的应用程序,用户众多。这就要求服务器硬件优化应用,并提供不同的规模。

机器学习任务也有自己的要求。当使用神经网络和机器学习构建系统时,您需要使用软件框架和通用软件堆栈来编程和映射硬件,然后您可以从 PPA 该角度使软件适应不同的硬件。这促进了不同类型的处理和处理器适应各种硬件的需要。

这些需求是由应用程序定义的。例如,一家公司设计了一个处理器来优化和加速图形跟踪,并执行图形重新排列等操作,以及其他加速机器学习的蛮力部分,如矩阵乘法。

内存访问对每个架构来说都是一个特殊的问题,因为当你构建加速器时,最重要的目标是尽可能长时间保持满载,你必须尽可能多地传输数据 ALU,让它尽可能多地吞吐数据。

它们有许多共同点。它们都有本地内存,并且有一个在线网络进行通信。每个执行算法的处理器都在处理一小块数据,这些操作都在运行 CPU 上操作系统调度。

对于硬件设计师来说,困难在于任务预测。虽然在某些层面上会有类似的操作类型,但人们正在研究不同层次的差异。处理神经网络需要几种类型的处理能力。这意味着你需要以某种方式处理神经网络的一部分,然后在另一层可能需要另一个处理操作,数据移动和数据量逐层变化。

您需要建立一套完整的加速器来处理管道,理解和分析算法,并定义优化过程,这涉及到完整的系统结构。就像基因组测序一样,你可能需要一些处理,但你不能使用单一类型的加速器来加速一切。CPU负责管理和执行流水线,设置和执行流水线 DMA、进行决策。

可能涉及分区执行。没有任何处理器可以优化每个任务——FPGA、CPU、GPU、DSP我做不到。芯片设计师可以创建一系列包含所有这些处理器的芯片,但客户应用程序的困难在于他们必须确定系统的各个部分在哪些处理器上运行 CPU 上?在 FPGA 上?还是在 GPU 上?

但无论如何,里面总是需要的 CPU 的,CPU 对执行程序的不规则部分负责,CPU 通用性有自己的优势但另一方面,如果是特殊的数据结构或数学操作,CPU不行。毕竟 CPU 它是一种通用处理器,没有优化任何东西,也没有特别擅长的项目。

抽象层的变化

过去,硬件/软件的边界是由 ISA 定义,内存是连续的。当涉及到多处理器时,一般的内存定义也是一致的。但可以想象,在数据流引擎中,一致性并不那么重要,因为数据将直接从一个加速器传输到另一个加速器。

「科普」一头雾水?TPU、IPU、NPU是什么?
 

Speedster 7t FPGA结构图

如果您将数据集分区,一致性将成为障碍。您需要比较和更新数据,并占用额外的操作周期。因此,我们需要考虑不同的内存结构。毕竟,可用的内存很少。您可以访问相邻的内存,但它会很快耗尽,然后无法及时访问。因此,我们必须在设计中理解它,并在理解架构时设计它。

我们还需要更高层次的抽象层。有些框架可以在目标硬件上映射或编译已知的网络,如一组低级内核或 API,它们将用于软件堆栈,最终用于神经网络的映射器。在底层,你可能会使用不同类型的硬件,这取决于你想要实现的目标。无论如何,它使用不同的硬件 PPA ,实现相同的功能。

这将给编译器带来巨大的压力。主要问题是你将来如何编程加速器?你看起来像第一代吗? GPU 硬连接引擎串在一起吗?还是你建立了一个有自己指令集的小型可编程引擎?现在你必须单独编程这些东西,并将它们中的每个与数据流连接起来,然后执行任务。

一个处理器有整个指令集的子集,另一个处理器有不同的子集,它们共享控制流的一些重叠部分,编译器必须了解它的库并进行映射。

结论

「科普」一头雾水?TPU、IPU、NPU是什么?
 

Google 的 TPU

事实上,处理器的架构并没有改变,它们仍然遵守过去 40 多年来一直遵循的规则。它改变了芯片的结构模式。它们现在包含大量的异构处理器,根据各自的任务优化内存和通信。每个芯片都对处理器的性能、优化目标、所需的数据吞吐量和数据流做出了不同的选择。

每个硬件供应商都希望将自己的芯片与其他芯片区分开来,品牌推广比谈论内部技术细节要容易得多。制造商给了他们的芯片XPU名称,并将其与特定类型的应用程序联系起来,但XPU不是关于特定硬件架构的名称。

就像 Google 开发自己的专用集成电路(ASIC)叫做 TPU(Tensor Processing Unit)但实际上,张量处理单元/处理器 TPU 不是特定的硬件架构。

免责声明:本站信息来源于网络以及网友投稿,本网站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性及其合法性,请读者仅作参考。如内容有侵权、错误信息或任何问题,请及时联系我们,我们将在第一时间删除或更正。
扫一扫关注品牌网
扫一扫关注品牌网