hdy 发表于 2025-5-28 22:08

昇腾AI核心:达芬奇架构




达芬奇架构不同于传统的支持通用计算的 CPU 和 GPU,也不同于专用于某种特定算法的专用处理器 ASIC,达芬奇架构本质上是为了适应某个特定领域中的常见的应用和算法,通常称之为“特定域架构(Domain Specific Architecture,DSA)”处理器。昇腾 AI 处理器的计算核心主要由 AI Core 构成,负责执行标量、向量和张量相关的计算密集型算子。AI Core 采用了达芬奇架构,其基本结构上图所示,从控制上可以看成是一个相对简化的现代微处理器的基本架构。它包括了三种基础计算资源:矩阵计算单元(Cube Unit)、向量计算单元(Vector Unit)和标量计算单元(Scalar Unit)。这三种计算单元分别对应了张量、向量和标量三种常见的计算模式,在实际的计算过程中各司其职,形成了三条独立的执行流水线,在系统软件的统一调度下互相配合达到优化的计算效率。此外在矩阵计算单元和向量计算单元内部还提供了不同精度、不同类型的计算模式。AI Core 中的矩阵计算单元目前可以支持 INT8 、 INT4 和 FP16 的计算; 向量计算单元目前可以支持 FP16 和 FP32 的计算。为了配合 AI Core 中数据的传输和搬运,围绕着三种计算资源还分布式的设置了一系列的片上缓冲区,比如用来放置整体图像特征数据、网络参数以及中间结果的输入缓冲区和输出缓冲区,以及提供一些临时变量的高速寄存器单元,这些寄存器单元位于各个计算单元中。这些存储资源的设计架构和组织方式不尽相同,但目的都是为了更好的适应不同计算模式下格式、精度和数据排布的需求。这些存储资源和相关联的计算资源相连,或者和总线接口单元(Bus Interface Unit,BIU)相连从而可以获得外部总线上的数据。计算单元计算单元是 AI Core 中提供强大算力的核心单元,相当于 AI Core 的主力军。AI Core 计算单元主要包含矩阵计算单元、向量计算单元、标量计算单元和累加器,如下图加粗所示。矩阵计算单元和累加器主要完成与矩阵相关的运算,向量计算单元负责执行向量运算,标量计算单元主要负责各类型的标量数据运算和程序的流程控制。矩阵乘法由于常见的神经网络算法中大量的使用了矩阵计算,达芬奇架构中特意对矩阵计算进行了深度的优化并定制了相应的矩阵计算单元来支持高吞吐量的矩阵处理。负责执行矩阵运算。Cube 每次执行可完成 fp16@16*16 与 16*16 矩阵乘,如 C=A*B,如果输入int8,一次完成 16*32 与 32*16 矩阵乘,注意真正计算需要对 A/B/C 矩阵进行分块 Block。向量计算单元AI Core 中的向量计算单元主要负责完成和向量相关的运算,能够实现向量和标量,或双向量之间的计算,功能覆盖各种基本和多种定制的计算类型,主要包括 FP32、FP16、INT32 和 INT8 等数据类型的计算。Vector Unit负责向量运算:算力低于 Cube,灵活度高(如数学中求倒数、平方根等),Vector 所有计算源数据以及目标数据都会存储在 Unified Buffer 中,并按 32Byte 对齐。向量计算单元可以快速完成两个 FP16 类型的向量运算。向量计算单元的源操作数和目的操作数通常都保存在输出缓冲区中。对向量计算单元而言,输入的数据可以不连续,这取决于输入数据的寻址模式。向量计算单元支持的寻址模式包括了向量连续寻址和固定间隔寻址;在特殊情形下,对于地址不规律的向量,向量计算单元也提供了向量地址寄存器寻址来实现向量的不规则寻址。标量计算单元标量计算单元负责完成 AI Core 中与标量相关的运算。它相当于一个微型 CPU,控制整个 AI Core 的运行。标量计算单元可以对程序中的循环进行控制,可以实现分支判断,其结果可以通过在事件同步模块中插入同步符的方式来控制 AI Core 中其它功能性单元的执行流水。它还为矩阵计算单元或向量计算单元提供数据地址和相关参数的计算,并且能够实现基本的算术运算。其它复杂度较高的标量运算则由专门的 AI CPU 通过算子完成。Scalar Unit负责各类型标量数据运算和程序流程控制:算力最低,功能上类比小核 CPU,完成整个程序循环控制、分支判断、Cube/Vector 等指令地址和参数计算以及基本算术运算等。在标量计算单元周围配备了多个通用寄存器(General Purpose Register,GPR)和专用寄存器(Special Purpose Register,SPR)。这些通用寄存器可以用于变量或地址的寄存,为算术逻辑运算提供源操作数和存储中间计算结果。专用寄存器的设计是为了支持指令集中一些指令的特殊功能,一般不可以直接访问,只有部分可以通过指令读写。AI Core 中具有代表性的专用寄存器包括 CoreID(用于标识不同的 AI Core),VA(向量地址寄存器)以及 STATUS(AI Core 运行状态寄存器)等。软件可以通过监视这些专用寄存器来控制和改变 AI Core 的运行状态和模式。存储单元处理器中的计算资源要想发挥强劲算力,必要条件是保证输入数据能够及时准确的出现在计算单元里。达芬奇架构通过精心设计的存储单元为计算资源保证了数据的供应,相当于 AI Core 中的后勤系统。AI Core 中的存储单元由存储控制单元、缓冲区和寄存器组成。存储控制单元通过总线接口可以直接访问 AI Core 之外的更低层级的缓存,并且也可以直通到 DDR 或 HBM 从而可以直接访问内存。存储控制单元中还设置了存储转换单元,其目的是将输入数据转换成 AI Core 中各类型计算单元所兼容的数据格式。缓冲区包括了用于暂存原始图像特征数据的输入缓冲区,以及处于中心的输出缓冲区来暂存各种形式的中间数据和输出数据。AI Core 中的各类寄存器资源主要是标量计算单元在使用。控制单元在达芬奇架构下,控制单元为整个计算过程提供了指令控制,相当于 AI Core 的司令部,负责整个 AI Core 的运行,起到了至关重要的作用。控制单元的主要组成部分为系统控制模块、指令缓存、标量指令处理队列、指令发射模块、矩阵运算队列、向量运算队列、存储转换队列和事件同步模块。在控制单元中还存在一个系统控制模块。在 AI Core 运行之前,需要外部的任务调度器来控制和初始化 AI Core 的各种配置接口,如指令信息、参数信息以及任务块信息等。这里的任务块是指 AI Core 中的最小的计算任务粒度。在配置完成后,系统控制模块会控制任务块的执行进程,同时在任务块执行完成后,系统控制模块会进行中断处理和状态申报。如果在执行过程中出现了错误,系统控制模块将会把执行的错误状态报告给任务调度器,进而反馈当前 AI Core 的状态信息给整个昇腾 AI 系统。小结与思考
[*]昇腾 AI 处理器的 AI Core 利用达芬奇架构,通过其专门的矩阵、向量和标量计算单元,实现对深度学习算法中各类计算模式的高效处理。
[*]AI Core 的存储系统 采用分布式缓冲区设计,配合存储转换单元,优化数据流传输,减少功耗,并提高计算性能。
[*]控制单元 在 AI Core 中扮演着指挥角色,通过预取指令、多流水线并行执行和事件同步模块,确保计算任务的顺利、高效执行。



页: [1]
查看完整版本: 昇腾AI核心:达芬奇架构