什么是XPU?

本文转载自: SSDFans

现在经常会有关于一种新架构的公告,它是由三个字母组成的首字母缩写——TPU, IPU,NPU等。但它们真正的区别是什么呢?是否真的有那么多独特的处理器架构?

2018年,John L.Hennessy和David A. Patterson发表了图灵讲座,题为“计算机架构的新兴黄金时代”。ArterisIP的研究员和系统架构师Michael Frank表示:“从CPU的意义上来说,现在大多数所谓的CPU都不是真正的处理器。它们更像是GPU,是特殊工作负载的加速器,而且具有多样性。”

处理器的本质可以归结为三方面。Xilinx市场总监Manuel Uhm说:“最终还是会回到指令集架构(ISA,定义了事务类型);然后是I/O和内存,它们支持ISA和它试图实现的功能。未来将非常有趣,因为我们将看到比过去二三十年更多的创新和改变。”

许多新的架构并不是单处理器。Cadence技术和战略营销总监Pierre-Xavier Thomas表示:“我们看到的是不同类型的处理器或可编程引擎的组合,它们存在于同一个SoC或系统中。软件任务被分派到不同的硬件或可编程引擎中。所有处理器可以共享一个公共的API,但是执行域各不相同。”

事实上,命名在很大程度上是为了营销。Imperas Software首席执行官Simon Davidmann表示:“使用这些缩写有两种目的。一个是解释处理器的架构,比如SIMD(单指令多数据);另一个定义所寻址的应用程序段。因此,这些缩写既可以定义处理器架构,也可以定义一个像谷歌TPU (Tensor Processing Unit)这样的品牌名称,它们是异构或同构架构的简称,而不是一个单一的处理器。”

历史简要

40年前,情况要简单得多。虽然CPU有很多变种,但基本上都是冯·诺伊曼架构、图灵完整的处理器。每个指令集由不同指令组成,使得它们对于某些特定任务更加有效。对于复杂指令集(CISC)与简化指令集(RISC)的相对优点也进行过很多讨论。

RISC-V的出现引起了人们对ISA的广泛关注。Uhm表示:“人们希望了解ISA,因为ISA定义了处理器对已定义任务的优化程度。通过ISA可以计算周期。举个例子,如果一个ISA有一个本地指令并以1GHz频率运行,那么就可以将其与另一个处理器ISA进行比较,后者相同的功能可能需要两个指令,但运行频率为1.5GHz。哪一个能让性能最优?我们可以对重要功能进行计算并给出答案。”

CPU存在于多种系统中。微控制器单元(MCU)就是将CPU、IO或内存放入同一个系统中。

后来调制解调器开始盛行,随之出现了数字信号处理器(DSP)。DSP的不同之处在于使用了哈佛架构,把指令和数据总线分开。其中一些DSP还实现了SIMD架构,使数据处理更加有效。

指令和数据分离是为了提高吞吐率,尽管它限制了一些边缘编程,如自编写程序。Uhm表示:“通常情况下,瓶颈不是计算,而是I/O或内存。业界从提高计算能力转变为确保有足够的数据来保持计算能力,进而保证性能。”

当单个处理器无法变得更快时,多个处理器被连接在一起,它们之间通常会共享内存,并维持单个处理器和处理器集群的概念,这样可以保持图灵完整性。

接下来的主要发展是图形处理单元(GPU)。GPU打破了传统模式,因为每个处理元素都有自己的内存,无法在处理器之外寻址。因为内存容量有限,GPU不能执行任意处理任务,只能执行那些适配特定内存空间的任务。

Uhm指出:“对于某些功能,GPU是非常得力的处理器,但它们有非常长的流水线。流水线里流动着GPU单元处理数据,如果不得不清空流水线,代价会很大。系统存在大量的延迟和不确定性。”

虽然现在定义了许多其他加速器,但GPU(以及后来的通用GPU ,简称GPGPU)定义了一种编程范式和软件堆栈。Imperas的Davidmann说:“这些年来,某些工作负载已经变得专业化了。有用于顺序程序的CPU,还有专注于屏幕上数据操作的GPU,GPU将我们引入一个高度并行的世界。”

除GPU外,NoC也是一种颠覆过去的新架构。以前处理器阵列常通过内存或固定的网络拓扑连接,如网格或环形。最近出现了集成片上网络(NoC),它使分布式异构处理器能够以更灵活的方式通信。未来也可能在不使用内存的情况下实现通信。

Arteris公司Frank表示:“目前,NoC只携带数据。未来,NoC可以扩展到加速器之间不局限于数据的通信,可以发送命令、发送通知等。加速器阵列的通信需求可能与CPU或标准SoC的通信需求不同。但是NoC并不局限于某种应用,用户可以通过支持加速器的特殊通信需求来优化和提高性能。”

实现架构

处理器之间的区别之一是针对特定的操作环境进行优化。例如,软件可以在云中运行,也可以在微型物联网设备上执行。两者实现架构完全不同,并在性能、功耗、成本等方面表现出差异。

Cadence公司Thomas说:“一些应用本来是针对云计算的,但现在正在被推向终端。推动这种转变的是延迟或功耗方面的需求,转变后将需要不同类型的架构。”

ML增加了新需求。Thomas补充道:“当使用神经网络和机器学习构建智能系统时,需要使用软件框架和通用软件栈编写新的网络并将其映射到硬件上。从PPA的角度来看,可以根据硬件调整软件应用程序。这推动了在硬件层解决不同类型处理的需求。”

需求由应用程序定义。Frank表示:“有一家公司发明了一种用于图形操作的处理器,他们优化和加速了如何跟踪图形,并对其操作(如图形的重新排序等)。矩阵乘法也可以加速机器学习。对于每种架构来说,内存访问都是一个重要问题。因为构建一个加速器时,最重要的目标是让它保持忙碌。我们必须将尽可能多的数据传递给ALU,使其产生我们需要的结果。”

这些应用程序有许多共同之处。Davidmann表示:“它们都有本地内存,在芯片上有一个网络来实现通信,每个执行软件算法的处理器都在处理一小块数据,所有任务由运行在更传统CPU上的操作系统调度。”

很多情况下无法用一种单一加速器去实现一个应用场景。Frank指出:“如基因组测序需要一些特定的处理,我们必须为流水线构建一套由不同种类加速器组成的完整加速器。CPU成为执行流的监护人,用于构建事务、进行DMA,并提供决策。理解和分析算法,并定义如何优化算法处理是一个完整的架构任务。”

整个处理过程需要划分。Uhm说:“没有一种处理器能够对每个任务进行优化——FPGA、CPU、GPU、DSP都不行。我们创造了一系列包含所有处理器的设备,但客户端的困难在于他们必须确定整个系统如何用处理器、可编程逻辑、人工智能引擎等来实现。每个人都想要个自动工具,一个可以决定把任务放到CPU、FPGA或GPU上的工具。这种工具现在还不存在。”

尽管如此,CPU还是会扮演一定角色。Frank表示:“CPU需要执行程序的不规则部分,因为它具有一般可编程性。对于专门的数据结构或数学操作,CPU实现起来效果不甚理想,因为它是一种通用处理器,不会针对任何事务进行优化。”

抽象层的变化

在过去,软硬件边界是由ISA定义的,并且内存是连续可寻址的。当多个处理器存在时,它们通常具有内存一致性。

Frank表示:“一致性相当于一种契约,保证各个处理器获得的数据是最新的。但在一个数据流引擎中,一致性就没那么重要了,因为我们是把边缘上的数据直接从一个加速器传到另一个加速器。如果划分数据集,一致性就会成为阻碍,因为它会花费额外的时钟周期,用于检查数据状态同时提供数据更新信息。”

这需要不同的内存架构。Uhm指出:“我们必须考虑内存结构,因为紧密耦合的内存容量是有限的。虽然还可以访问相邻内存,但能满足时序要求的相邻内存也非常有限。设计阶段必须考虑这一点。随着工具的成熟,工具将理解更多内容;但现在这部分是由人工完成的,通过人为理解架构来优化应用。”

还需要更高层次的抽象。Thomas表示:“有一些框架可以将已知的网络编译到目标硬件上。在软件层面,我们有一组低级内核(或API),它们将在软件堆栈中使用,最终应用到神经网络的映射器上。在硬件层,针对产品功能和细节,可以用不同类型的硬件来实现。对于相同功能,也可能因为不同的PPA权衡而采用不同硬件来实现。”

这给编译器带来了巨大压力。Frank指出:“主要问题是未来如何设计加速器? 像第一代GPU那样把引擎串在一起?或者建造拥有各自指令集的小型可编程引擎?如果这样必须分别对这些引擎进行编程,用数据流连接起来以执行任务。一个处理器拥有总指令集的某个子集,另一个处理器拥有不同子集,它们将共享某些重叠部分来实现控制流。”

结论

处理器的架构40年来没有改变,改变的是芯片架构。现在一个芯片会包含大量异构处理器,这些处理器会针对特定应用程序任务优化内存和通信方式。每个芯片会做出各自不同的选择:关于处理器的功能和优化目的、所需的数据吞吐量、数据流等。

每个硬件供应商都想将自己的芯片与其他厂商区分开来,通过品牌宣传要比谈论内部技术细节容易得多。所以他们给芯片起个名字,把它与特定类型的应用程序联系起来。这些三个字母的首字母缩写已经成为应用程序任务的名称,并没有定义一种新的硬件架构。

原文链接:https://semiengineering.com/what-is-an-xpu/

​免责声明:本文为网络转载文章,转载此文目的在于传播相关技术知识,版权归原作者所有,如涉及侵权,请联系小编删除(联系邮箱:service@eetrend.com )。

最新文章

最新文章