npu是什么意思啊(npu是什么处理器)

在AI兴起的这几年,在高通、苹果、三星、麒麟、联发科、谷歌的SOC上,人们经常会看到“TPU、IPU、NPU”这样的名字。这些“XPU”有什么区别?真的有这么多

在AI兴起的这几年,在高通、苹果、三星、麒麟、联发科、谷歌的SOC上,人们经常会看到“TPU、IPU、NPU”这样的名字。这些“XPU”有什么区别?真的有这么多不同的架构吗?还是厂商的概念营销?

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

npu是什么(手机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,孰强孰弱显而易见。

CPU的封装方式有很多种,有时IO或内存放在同一个封装中,后两者称为微控制器单元(MCU)。当调制解调器变得流行时,数字信号处理器(DSP)出现了。它们之间的区别在于,它们使用哈佛架构将指令总线和数据总线分开,并且它们中的一些还使用SIMD架构来提高数据处理效率。

指令和数据的分离是为了提高吞吐量(虽然确实限制了自编程等边缘编程)。通常这里的边界条件不是计算,而是I/O或者内存。行业的焦点已经从提高计算能力转移到确保有足够的数据来保持计算和维持性能。

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

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

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

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

有没有什么架构规则可以用来解释所有的新架构?是的,也许片上网络(NoC)是一个恰当的定义。在过去,处理器阵列通常通过内存或固定的网络拓扑结构(网状或环形)连接,而NoC使分布式异构处理器能够以更灵活的方式进行通信。在未来,他们可以不用记忆来交流。

现在的NoC是针对数据的,而未来的NoC也可以发送命令、通知等数据,可以扩展到加速器不仅仅交换数据的领域。加速器或集群的通信要求可能与CPU或标准SoC的通信要求不同,但NoC不会将设计人员限制在一个子集内。它们可以通过满足不同加速器的特殊通信要求来优化和提高性能。

执行架构

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

这可能是因为对低延迟的需求,也可能是因为功耗的原因,一些原本针对云计算的软件现在逐渐投入到设备的端到端操作中。虽然是不同的硬件架构,但是大家自然都希望有相同的软件栈,这样软件就可以在两种场合下运行。云需要提供灵活性,因为它可以运行不同类型的应用程序,并且有许多用户。这要求服务器硬件针对应用进行优化,并且能够提供不同的规模。

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

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

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

他们有许多共同之处。它们都有本地存储器和用于通信的片上网络。每个执行算法的处理器都在处理一小块数据,这些操作由运行在CPU上的操作系统来调度。

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

你需要为处理流水线建立一整套不同的加速器,理解和分析算法,定义优化流程是一项涉及完整架构的任务。就像基因组测序一样,你可能需要做一些处理,但你不能用单一类型的加速器来加快一切。CPU负责管理执行流水线,设置执行流水线,执行DMA,做决策。

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

但无论如何,总有一个CPU在里面。CPU负责执行程序中不规则的部分,CPU的通用性有自己的优势。另一方面,如果是特殊的数据结构或者数学运算,CPU就不行。毕竟CPU是通用处理器。不是什么都优化,也没有特别擅长的项目。

抽象层的改变

以前,硬件/软件边界由 ISA 定义,并且该内存是连续可寻址的。而涉及到多处理器时,一般内存定义也是也是一致的。但是可以想象,在数据流引擎中,一致性并不那么重要,因为数据会从一个加速器直接传到另一个加速器。以前,硬件/软件边界由ISA定义,并且该存储器是连续可寻址的。说到多处理器,一般的内存定义也是一致的。但是可以想象,在数据流引擎中,一致性并不是那么重要,因为数据会直接从一个加速器转移到另一个。

Speeder7T FPGA结构图

如果对数据集进行分区,一致性会成为一个障碍,需要对数据进行比较和更新,还需要额外的操作周期。因此,我们需要并且不得不考虑不同的记忆结构。毕竟可用的内存就那么一点点。也许可以访问相邻内存,但是很快就会用完,然后就不能及时访问了。所以在设计中一定要理解,要用对架构的理解来设计。

我们还需要更高层次的抽象。有些框架可以将已知的网络映射或编译到目标硬件上,比如一套底层的内核或API,它们会在软件栈中使用,最终被神经网络的映射器使用。在底部,您可能使用不同类型的硬件,这是由您想要实现的目标决定的。不管怎么说,不同的硬件和不同的PPA实现了相同的功能。

而这样会给编译器很大压力。最主要的问题是你将来如何给加速器编程?你有一个像原始GPU一样的硬连线引擎吗?还是已经用自己的指令集搭建了一个小型的可编程引擎?现在你要把这些东西分别编程,把这些引擎的每一个都和数据流连接起来,然后执行任务。

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

结论

谷歌tpu

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

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

就像谷歌称自己的专用集成电路(ASIC)为TPU(张量处理单元)张量处理单元/处理器,但实际上TPU指的并不是具体的硬件架构。

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

作者:美站资讯,如若转载,请注明出处:https://www.meizw.com/n/262971.html

发表回复

登录后才能评论