琳琅满目的XPU,到底是什么? | 雷峰网
文章推薦指數: 80 %
从CPU 及其发展方式的角度来看,这些“XPU”中的大部分都不是真正的处理器。
机器学习加速器是一类处理器,但它们用来加速的处理部分却多种多样。
资讯
芯片
此为临时链接,仅用于文章预览,将在时失效
琳琅满目的XPU,到底是什么?
XPUTPUNPUIPU
作者:量衡
2021/11/1614:06
在AI崛起的这几年来,大家经常会看到“TPU、IPU、NPU”之类的名字,这些“XPU”有什么分别?是真的有那么多不同的架构?还是厂商的概念营销?为了解答这个问题,外媒SemiEngineering搜集了大量业内人的看法并汇总成文,我们进行精简和编译,原文链接:https://semiengineering.com/what-is-an-xpu图源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有多种封装方式,有时将I/O或内存放在同一个封装中,而后两者被称为微控制器单元(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定义,并且该内存是连续可寻址的。
而涉及到多处理器时,一般内存定义也是也是一致的。
但是可以想象,在数据流引擎中,一致性并不那么重要,因为数据会从一个加速器直接传到另一个加速器。
如果你对数据集进行分区,那一致性会成为障碍,你需要对照和更新数据,并会占用额外的运算周期。
所以我们需要,也必须考虑不同的内存结构,毕竟可用的内存就那么点。
或许可以访问相邻的内存,但也会很快耗尽,然后无法及时访问。
所以必须在设计中加以理解,而且是要在理解架构的情况下去设计它。
我们还需要更高级别的抽象层。
有些框架可以将已知网络映射或编译到目标硬件上,例如在一组低级内核或API,它们将在软件堆栈中使用,并最终由神经网络的映射器使用。
在底层,你可能在用不同类型的硬件,这由你想要实现的目标来决定。
反正就是用不同的硬件,不同的PPA,实现了相同的功能。
而这会给编译器带来很大的压力。
主要的问题是你未来要如何对加速器进行编程?你是否搞了个像初代GPU那样串在一起的硬连线引擎?或者你是否构建了具有自己指令集的小型可编程引擎?现在你必须单独对这些东西进行编程,并将这些引擎中的每一个都与数据流连接起来,然后执行任务。
一个处理器拥有整个指令集的某个子集,另一个处理器拥有一个不同的子集,它们都将共享控制流的某些重叠部分,编译器得了解它的库并进行映射。
结论其实处理器的架构并没有改变,它们仍然遵守过去40年来一直遵循的规则。
变的是芯片的构造方式,它们现在包含大量异构处理器,这些芯片根据各自的任务,对内存和通信进行优化。
每个芯片都对处理器性能、优化目标、所需的数据吞吐量以及数据流做出了不同的选择。
每个硬件供应商都希望将自己的芯片与其他芯片区分开来,品牌推广比谈论内部技术细节要容易得多。
厂商给自己的芯片起了“XPU”的名字,并将它与特定类型的应用联系起来,但“XPU”并不是关于某个特定硬件架构的名字。
雷锋网雷锋网雷锋网
微信扫一扫,将页面分享到朋友圈
推荐使用当前手机浏览器内置分享功能
长按图片保存图片,分享给好友或朋友圈
琳琅满目的XPU,到底是什么?
扫码查看文章
正在生成分享图...
取消
相关文章
工程院院士孙凝晖:计算机系统的演进规律,从求极致到求通用|CNCC2021
我在思考中
12月24日09:39
4位资深投资人揭秘,国产芯片的发展与投资机遇|GAIR2021
包永刚
12月20日11:15
一口气公布三款芯片,腾讯自研芯片的逻辑是什么?
驭风
11月03日23:06
新冠和癌症都能解决?看E级时代的HPC会带来多少可能
包永刚
10月26日18:34
延伸文章資訊
- 1Computex 2021 : Intel 強調AI 以XPU 架構為核心戰略 - Cool3c
Intel XPU 是Intel 的全新架構目標,透過CPU 、 GPU 與克制化加速器的結合,使XPU 平台能在不同的應用領域獲得效能與效率的最大化, Intel 也針對不同 ...
- 2看懂全球AI晶元,詳解「xPU」,這可能是至今最全的一份知識點
APU是AMD的一個處理器品牌。AMD在一顆晶元上集成傳統CPU和圖形處理器GPU,這樣主板上將不再需要北橋,任務可以靈活地 ...
- 3巨头们都要抢占的XPU道路,真的有这么香吗? | SDNLAB
CPU、GPU、DPU、IPU,还有没出场的TPU、NPU、APU等等, 巨头们一直锲而不舍地创造新名词,XPU的队伍不断扩大, 或许在不久的将来,26个字母将被全部用 ...
- 4通俗易懂告诉你CPU/GPU/TPU/NPU...XPU都是些什么鬼?【附 ...
所以,今天我们就来通俗易懂的科普一下这些所谓的“XPU”! CPU. CPU( Central Processing Unit, 中央处理器)就是机器的“大脑”,也是布局谋略、 ...
- 5使用XPU 為每個應用程式搭配最佳架構 - Intel
理想的解決方案將應用程式與其最佳硬體架構搭配,以滿足您的需求,實現合適的效能、延遲與功耗。CPU、GPU、FGPA、VPU、ASICs,甚至是神經運算等架構,都是Intel XPU 策略的 ...