Ascend C异构并行程序设计:昇腾算子编程指南
上QQ阅读APP看书,第一时间看更新

1.3 达·芬奇架构

扫码观看视频

达·芬奇架构(Da Vinci Architecture)是华为面向计算密集型人工智能应用研发的计算架构,也是昇腾AI处理器芯片AI Core的核心架构。昇腾AI处理器(Atlas A2训练系列产品)分离架构AI Core的基本结构如图1-7所示。不同于传统的支持通用计算的CPU和GPU,也不同于专用于某种特定算法的专用集成电路(Application Specific Integrated Circuit,ASIC),达·芬奇架构的芯片本质上是为了适应某个特定领域常见的应用和算法而设计的,通常被称为特定域架构(Domain Specific Architecture,DSA)芯片,从控制层面上可以被看成一个相对简化的现代微处理器的基本架构。

图1-7 分离架构AI Core的基本结构

AI Core负责执行与标量、向量和张量相关的计算密集型算子,包括3种基础计算资源:矩阵计算单元(Cube Unit)、向量计算单元(Vector Unit)和标量计算单元(Scalar Unit)。3种计算单元分别对应张量计算、向量计算和标量计算这3种常见的计算模式。在昇腾AI处理器的AI Core中集成了两个独立的模块,即矩阵计算模块(AI Cube,AIC)和向量计算模块(AI Vector,AIV),从而实现了矩阵计算与向量计算的解耦,即矩阵计算和向量计算完全独立并行,在系统软件的统一调度下互相配合,达到优化计算效率的目的。此外,在矩阵计算单元和向量计算单元内部还提供了不同精度、不同类型的计算模式。目前AI Core中的矩阵计算单元可以支持8位整型数(int8)、16位浮点数(FP16)及32位浮点数(FP32)的计算,向量计算单元可以直接支持FP16和FP32的计算,通过转换可以支持包括整型数在内的多种数据类型的计算。

为了配合AI Core中数据的传输和搬运,围绕这3种计算资源还分布式地设置了一系列位于矩阵计算单元中的存储资源,称为张量缓冲区。张量缓冲区是分别放置整体图像特征数据、网络参数、中间结果的缓冲区,也为一些临时变量提供高速的寄存器单元。其中,L0 缓冲区(L0 Buffer)和统一缓冲区(Unified Buffer,UB)均属此列,寄存器单元则位于各个计算单元中。这些存储资源的设计架构和组织方式不尽相同,但都是为了更好地适应不同计算模式下的格式、精度和数据排布的需求。这些存储资源或和相关联的计算资源相连,或和总线接口(Main Bus Interface,MBI)相连,从而可以通过张量DMA(Tensor DMA)获得外部总线上的数据。

AI Core 中的控制单元主要包括指令缓存(Instruction Cache)模块、标量控制(Scalar Control)模块、矩阵指令队列(Matrix Issue Queue)模块、向量指令队列(Vector Issue Queue)模块、存储转换指令队列(DMA Issue Queue)模块和事件同步(Event Sync)模块。系统控制模块负责指挥 AI Core的整体运行,协调运行模式,配置参数和控制功耗等任务。标量控制模块的标量指令处理队列主要实现控制指令的译码,根据指令的不同类型,将其分别发射到对应的矩阵指令队列、向量指令队列或存储转换指令队列。3 个队列中的指令依据先进先出的原则分别输出到对应的矩阵计算单元、向量计算单元和存储转换单元进行相应的计算。不同的指令队列和计算资源构成了独立的流水线,可以并行执行以提高指令的执行效率。如果指令执行过程中出现依赖关系或者有强制的时间先后顺序要求,则可以通过事件同步模块来调整和维护指令的执行顺序。事件同步模块完全由软件控制,在软件编写的过程中可以通过插入同步信号的方式来指定每一条流水线的执行时序,从而达到调整指令执行顺序的目的。

在AI Core中,存储单元为各个计算单元提供转置过并符合要求的数据,计算单元将计算结果返回存储单元,控制单元为计算单元和存储单元提供控制指令,三者相互协调,合作完成计算任务。