第3章
硬件架构
为了满足当今飞速发展的深度神经网络对芯片算力的需求,华为公司于2018年推出了昇腾系列AI处理器,可以对整型数或浮点数提供强大高效的乘加计算力。由于昇腾AI处理器具有强大的算力并且在硬件体系结构上对于深度神经网络进行了特殊的优化,从而使之能以极高的效率完成目前主流深度神经网络的前向计算,因此在智能终端等领域拥有广阔的应用前景。
3.1昇腾AI处理器总览
昇腾AI处理器本质上是一个片上系统,如图31所示,主要可以应用在与图像、视频、语音、文字处理相关的场景。其主要的架构组成部件包括特制的计算单元、大容量的存储单元和相应的控制单元。该处理器大致可以划分为: 控制CPU(Control CPU)、AI计算引擎(包括AI Core和AI CPU)、多层级的片上系统缓存(Cache)或缓冲区(Buffer)、数字视觉预处理模块(Digital Vision PreProcessing,DVPP)等。处理器可以采用LPDDR4高速主存控制器接口,价格较低。目前主流片上系统处理器的主存一般由DDR(Double Data Rate,双倍速率内存)或HBM(High Bandwidth Memory,高带宽存储器)构成,用来存放大量的数据。HBM相对于DDR存储带宽较高,是行业的发展方向。其他通用的外设接口模块包括USB、磁盘、网卡、GPIO、I2C和电源管理接口等。
图31昇腾AI处理器逻辑图
当该处理器作为计算服务器的加速卡使用时,会通过PCIe总线接口和服务器其他单元实现数据互换。以上所有这些模块通过基于CHI协议的片上环形总线相连,实现模块间的数据连接通路并保证数据的共享和一致性。
昇腾AI处理器集成了多个CPU核心,每个核心都有独立的L1和L2缓存,所有核心共享一个片上L3缓存。集成的CPU核心按照功能可以划分为专用于控制处理器整体运行的控制CPU 和专用于承担非矩阵类复杂计算的AI CPU。两类任务占用的CPU核数可由软件根据系统实际运行情况动态分配。
除了CPU之外,该处理器真正的算力担当是采用了达芬奇架构的AI Core。这些AI Core通过特别设计的架构和电路实现了高通量、大算力和低功耗,特别适合处理深度学习中神经网络必需的常用计算,如矩阵相乘等。目前该处理器能对整型数(INT8、INT4)或对浮点数(FP16)提供强大的乘加计算力。由于采用了模块化的设计,可以很方便地通过叠加模块的方法提高后续芯片的计算力。
昇腾AI处理器架构与编程——深入理解CANN技术原理及应用
第3章硬件架构
0
0
针对深度神经网络参数量大、中间值多的特点,该处理器还特意为AI计算引擎配备了容量为8MB的片上缓冲区(L2缓冲区),提供高带宽、低延迟、高效率的数据交换和访问。能够快速访问到所需的数据对于提高神经网络算法的整体性能至关重要,同时将大量需要复用的中间数据缓存在片上对于降低系统整体功耗意义重大。为了能够实现计算任务在AI Core上的高效分配和调度,该处理器还特意配备了一个专用CPU作为任务调度器(Task Scheduler,TS)。该CPU专门服务于AI Core和AI CPU,而不承担任何其他的事务和工作。
数字视觉预处理模块主要完成图像视频的编解码,支持4K4K指分辨率为4096×2160像素,表示超高清分辨率视频。分辨率的视频处理,对图像支持JPEG和PNG等格式的处理。来自主机端存储器或网络的视频和图像数据,在进入昇腾AI处理器的计算引擎处理之前,需要生成满足处理要求的输入格式、分辨率等,因此需要调用数字视觉预处理模块进行预处理以实现格式和精度转换等要求。数字视觉预处理模块主要实现视频解码(Video Decoder,VDEC)、视频编码(Video Encoder,VENC)、JPEG编解码(JPEG Decoder/Encoder,JPEGD/E)、PNG解码(PNG Decoder,PNGD)和视觉预处理(Vision PreProcessing Core,VPC)等功能。图像预处理可以完成对输入图像的上/下采样、裁剪、色调转换等多种功能。数字视觉预处理模块采用了专用定制电路的方式来实现高效率的图像处理功能,对应于每一种不同的功能都会设计一个相应的硬件电路模块来完成计算工作。在数字视觉预处理模块收到图像视频处理任务后,会读取需要处理的图像视频数据并分发到内部对应的处理模块进行处理,待处理完成后将数据写回到内存中等待后续步骤。
3.2达芬奇架构
不同于传统的支持通用计算的CPU和GPU,也不同于专用于某种特定算法的专用芯片ASIC,达芬奇架构本质上是为了适应某个特定领域中的常见应用和算法,通常称为“特定域架构(Domain Specific Architecture,DSA)”芯片。
昇腾AI处理器的计算核心主要由AI Core构成,负责执行标量、向量和张量相关的计算密集型算子。AI Core采用了达芬奇架构,其基本结构如图32所示,从控制上可以看成是一个相对简化的现代微处理器的基本架构。它包括了三种基础计算资源: 矩阵计算单元(Cube Unit)、向量计算单元(Vector Unit)和标量计算单元(Scalar Unit)。这三种计算单元分别对应了张量、向量和标量三种常见的计算模式,在实际的计算过程中各司其职,形成了三条独立的执行流水线,在系统软件的统一调度下互相配合达到优化的计算效率。此外在矩阵计算单元和向量计算单元内部还提供了不同精度、不同类型的计算模式。AI Core中的矩阵计算单元目前可以支持INT8和FP16的计算; 向量计算单元目前可以支持FP16和FP32以及多种整型数的计算。
图32AI Core架构图
为了配合AI Core中数据的传输和搬运,围绕着三种计算资源还分布式地设置了一系列的片上缓冲区,比如用来放置整体图像特征数据、网络参数以及中间结果的输入缓冲区(Input Buffer,IB)和输出缓冲区(Output Buffer,OB),以及提供一些临时变量的高速寄存器单元,这些寄存器单元位于各个计算单元中。这些存储资源的设计架构和组织方式不尽相同,但目的都是为了更好地适应不同计算模式下格式、精度和数据排布的需求。这些存储资源和相关联的计算资源相连,或者和总线接口单元(Bus Interface Unit,BIU)相连,从而可以获得外部总线上的数据。
在AI Core中,输入缓冲区之后设置了一个存储转换单元(Memory Transfer Unit,MTE)。这是达芬奇架构的特色之一,主要的目的是为了以极高的效率实现数据格式的转换。比如前面提到GPU要通过矩阵计算来实现卷积,首先要通过Img2Col的方法把输入的网络和特征数据重新以一定的格式排列起来。这一步在GPU中是通过软件来实现的,效率比较低下。达芬奇架构采用了一个专用的存储转换单元来完成这一过程,将这一步完全固化在硬件电路中,可以在很短的时间之内完成整个转置过程。由于类似转置的计算在深度神经网络中出现得极为频繁,这种定制化电路模块的设计可以提升AI Core的执行效率,从而能够实现不间断的卷积计算。
AI Core中的控制单元主要包括系统控制模块、标量指令处理队列、指令发射模块、矩阵运算队列、向量运算队列、存储转换队列和事件同步模块。系统控制模块负责指挥和协调AI Core的整体运行模式、配置参数和实现功耗控制等。标量指令处理队列主要实现控制指令的译码。当指令被译码并通过指令发射模块顺次发射出去后,根据指令的不同类型,指令将会分别发送到矩阵运算队列、向量运算队列和存储转换队列。三个队列中的指令依据先进先出的方式分别输出到矩阵计算单元、向量计算单元和存储转换单元进行相应的计算。不同的指令阵列和计算资源构成了独立的流水线,可以并行执行以提高指令执行效率。如果指令执行过程中出现依赖关系或者有强制的时间先后顺序要求,则可以通过事件同步模块来调整和维护指令的执行顺序。事件同步模块完全由软件控制,在软件编写的过程中可以通过插入同步符的方式来指定每一条流水线的执行时序从而达到调整指令执行顺序的目的。
在AI Core中,存储单元为各个计算单元提供被转置过并符合要求的数据,计算单元返回运算的结果给存储单元,控制单元为计算单元和存储单元提供指令控制,三者相互协调合作完成计算任务。