From 9aa530c25c8eb9f00f72f777a46b790b9f730b08 Mon Sep 17 00:00:00 2001 From: jiangwx <550653626@qq.com> Date: Sun, 30 Jun 2024 10:47:13 +0800 Subject: [PATCH 1/2] update Ascend SoC --- 02Hardware/06Domestic/07AscendBase.md | 34 +++++++++++++++++---------- 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/02Hardware/06Domestic/07AscendBase.md b/02Hardware/06Domestic/07AscendBase.md index 0e88d68a..30f637c3 100644 --- a/02Hardware/06Domestic/07AscendBase.md +++ b/02Hardware/06Domestic/07AscendBase.md @@ -24,19 +24,29 @@ ## AI 处理器架构 -昇腾 AI 处理器本质上是一个片上系统(System on Chip,SoC),主要可以应用在和图像、视频、语音、文字处理相关的应用场景。上图是早期昇腾其处理器的逻辑架构,其主要的架构组成部件包括特制的计算单元、大容量的存储单元和相应的控制单元。该处理器大致可以划为:芯片系统控制 CPU(Control CPU),AI 计算引擎(包括 AI Core 和 AI CPU),多层级的片上系统缓存(Cache)或缓冲区(Buffer),数字视觉预处理模块(Digital Vision Pre-Processing,DVPP)等。芯片可以采用 LPDDR4 高速主存控制器接口,价格较低。目前主流 SoC 芯片的主存一般由 DDR(Double Data Rate)或 HBM(High Bandwidth Memory)构成,用来存放大量的数据。HBM 相对于 DDR 存储带宽较高,是行业的发展方向。其它通用的外设接口模块包括 USB、磁盘、网卡、GPIO、I2C 和电源管理接口等。 +昇腾 AI 处理器本质上是一个片上系统(System on Chip,SoC),主要应用于云端训练、手机、自动驾驶、无线基站、物联网等场景。我们选择面向云端训练场景的昇腾910和面向边缘推理场景的昇腾310介绍昇腾系列AI处理器。我们将首先介绍这些处理器共同的部分,然后介绍这些处理器面向特定领域的针对性设计。昇腾AI处理器的主要组成部件包括: +1. AI Core: 即达芬奇Core,是华为针对深度神经网络中的卷积和矩阵乘法设计的领域定制架构(Domain Specific Architecture, DSA)计算核心,还负责部分常见的激活函数如(。。。待补充,个人理解AI Core里的Scalar Unit并不用于计算密集的算子任务,更多是为了控制,如计算循环边界等参数用的;也不是很清楚Davinci Core里的Vector Unit是做啥的) +2. AI CPU: 由多核华为自研的TaiShan Core实现,每个核心都有独立的 L1 和 L2 缓存,所有核心共享一个片上 L3 缓存。这些AI CPU可以划分为用于控制芯片运行的主控 CPU和用于承担非矩阵类复杂算子的计算CPU。两类任务占用的 CPU 核数可由软件根据系统实际运行情况动态分配。AI CPU的存在使得昇腾AI处理器可以支持各种类型算子。 +3. 片上缓冲区: 用于向AI Core和AI CPU提供高带宽、低延迟的数据交换和访问。 +4. Task Schedule Subsystem: 由四核Cortex-A55实现,专用于将计算任务分配到AI Core和AI CPU上,不承担其他工作。 +5. 主存: 通常由DDR或HBM实现,用于存放大量数据,比如整个模型的权重。 +6. Direct Memory Access (DMA): 用于将数据从片外缓冲区(如DDR或HBM)搬运到片上缓冲区。 +7. 外设接口: 包括高速接口如PCIE、以太网和低速接口如UART/I2C/GPIO等。 +8. 总线: 基于 CHI 协议的片上环形总线相连,实现模块间的数据连接通路并保证数据的共享和一致性。 + +### 昇腾910 +![昇腾 AI 处理器逻辑图](images/ascendarch18.png) + +昇腾910处理器的目标场景是云端的推理和训练,其架构如上图所示,包含Davinci Core、DVPP、HBM、DDR4等组件。昇腾910处理器采用了芯粒(chiplet)技术,包含六个die: 1个计算芯粒(包含32个Davinci Core、16个CPU Core和4个DVDP),1个IO芯粒,和4个HBM芯粒(总计1.2TB/s带宽)。针对云端训练和推理场景,昇腾910处理器做的优化包括: +1. 高算力: 训练场景通常使用的Batch Size较大,因此采用最高规格的Ascend-Max,每个Core每个周期可以完成16*16*16=4096次FP16乘累加 +2. 高Load/Store带宽: 训练场景下计算反向SGD时,会有大量对Last Level Cache和片外缓存的访问,因此需要配备较高的Load/Store带宽,因此昇腾910除了DDR还采用了HBM技术。 +3. 100G NIC: 随着DNN的模型尺寸愈发庞大,单机单卡甚至单机多卡已经不能满足云端训练的需求,为了支持多卡多机组成集群,昇腾910集成了支持ROCE V2协议的100G NIC用于跨服务器传递数据,使得可以使用昇腾910组成万卡集群。 +4. 高吞吐率的数字视觉与处理器(DVPP): DVPP用于JPEG、PNG格式图像编解码、图像预处理(对输入图像上下采样、裁剪、色调转换等)、视频编解码,为了适配云端推理场景,DVPP最高支持128路1080P视频解码。 + +### 昇腾310 +![昇腾 AI 处理器逻辑图](images/ascendarch17.png) +昇腾310处理器的目标场景是边缘推理,比如智慧城市、智慧新零售、机器人、工业制造等,其架构如上图所示,主要包含Davinci Core、DVPP、LPDDR4等组件。相比昇腾910,昇腾310的定制化IP相对较少,但是提供了更多外设接口。由于在边缘推理场景下batch size通常只有1,因此昇腾310选择了较小的矩阵计算维度(m = 4, n = 16, k = 16)以实现$C_{mn} = A_{mk}\times B_{kn}$。由于在矩阵运算中$M = batch\_size \times output\_hight \times output\_width$, 当batch size = 1时,将m设置成4可以提升乘累加利用率。 -![昇腾 AI 处理器逻辑图](images/ascendarch01.png) - -当该处理器作为计算服务器的加速卡使用时,会通过 PCIe 总线接口和服务器其它单元实现数据互换。以上所有这些模块通过基于 CHI 协议的片上环形总线相连,实现模块间的数据连接通路并保证数据的共享和一致性。 - -昇腾 AI 处理器集成了多个 ARM 架构的 CPU 核心,每个核心都有独立的 L1 和 L2 缓存,所有核心共享一个片上 L3 缓存。集成的 CPU 核心按照功能可以划分为专用于控制芯片整体运行的主控 CPU 和专用于承担非矩阵类复杂计算的 AI CPU。两类任务占用的 CPU 核数可由软件根据系统实际运行情况动态分配。 - -除了 CPU 之外,该处理器真正的算力担当是采用了达芬奇架构的 AI Core。这些 AI Core 通过特别设计的架构和电路实现了高通量、大算力和低功耗,特别适合处理深度学习中神经网络必须的常用计算如矩阵相乘等。目前该处理器能对整数或浮点数提供强大的乘加计算力。由于采用了模块化的设计,可以很方便的通过叠加模块的方法提高后续处理器的计算力。 - -针对深度神经网络参数量大、中间值多的特点,该处理器还特意为 AI 计算引擎配备了一定容量的片上缓冲区(On-Chip Buffer),提供高带宽、低延迟、高效率的数据交换和访问。能够快速访问到所需的数据对于提高神经网络算法的整体性能至关重要,同时将大量需要复用的中间数据缓存在片上对于降低系统整体功耗意义重大。为了能够实现计算任务在 AI Core 上的高效分配和调度,还特意配备了一个专用 CPU 作为任务调度器(Task Scheduler,TS)。该 CPU 专门服务于 AI Core 和 AI CPU,而不承担任何其他的事务和工作。 - -数字视觉预处理模块主要完成图像视频的编解码,视频处理,对图像支持 JPEG 和 PNG 等格式的处理。来自主机端存储器或网络的视频和图像数据,在进入昇腾 AI 处理器的计算引擎处理之前,需要生成满足处理要求的输入格式、分辨率等,因此需要调用数字视觉预处理模块进行预处理以实现格式和精度转换等要求。数字视觉预处理模块主要实现视频解码(Video Decoder,VDEC),视频编码(Video Encoder,VENC),JPEG 编解码(JPEG Decoder/Encoder,JPEGD/E),PNG 解码(PNG Decoder,PNGD)和视觉预处理(Vision Pre-Processing Core,VPC)等功能。图像预处理可以完成对输入图像的上/下采样、裁剪、色调转换等多种功能。数字视觉预处理模块采用了专用定制电路的方式来实现高效率的图像处理功能,对应于每一种不同的功能都会设计一个相应的硬件电路模块来完成计算工作。在数字视觉预处理模块收到图像视频处理任务后,会读取需要处理的图像视频数据并分发到内部对应的处理模块进行处理,待处理完成后将数据写回到内存中等待后续步骤。 ## 卷积加速原理 From 765280d549aaa4b14948f7758dfae029a0b9ead6 Mon Sep 17 00:00:00 2001 From: jiangwx <550653626@qq.com> Date: Sat, 6 Jul 2024 02:07:46 +0800 Subject: [PATCH 2/2] revert previous description --- 02Hardware/06Domestic/07AscendBase.md | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/02Hardware/06Domestic/07AscendBase.md b/02Hardware/06Domestic/07AscendBase.md index 30f637c3..f33744f7 100644 --- a/02Hardware/06Domestic/07AscendBase.md +++ b/02Hardware/06Domestic/07AscendBase.md @@ -24,15 +24,19 @@ ## AI 处理器架构 -昇腾 AI 处理器本质上是一个片上系统(System on Chip,SoC),主要应用于云端训练、手机、自动驾驶、无线基站、物联网等场景。我们选择面向云端训练场景的昇腾910和面向边缘推理场景的昇腾310介绍昇腾系列AI处理器。我们将首先介绍这些处理器共同的部分,然后介绍这些处理器面向特定领域的针对性设计。昇腾AI处理器的主要组成部件包括: -1. AI Core: 即达芬奇Core,是华为针对深度神经网络中的卷积和矩阵乘法设计的领域定制架构(Domain Specific Architecture, DSA)计算核心,还负责部分常见的激活函数如(。。。待补充,个人理解AI Core里的Scalar Unit并不用于计算密集的算子任务,更多是为了控制,如计算循环边界等参数用的;也不是很清楚Davinci Core里的Vector Unit是做啥的) -2. AI CPU: 由多核华为自研的TaiShan Core实现,每个核心都有独立的 L1 和 L2 缓存,所有核心共享一个片上 L3 缓存。这些AI CPU可以划分为用于控制芯片运行的主控 CPU和用于承担非矩阵类复杂算子的计算CPU。两类任务占用的 CPU 核数可由软件根据系统实际运行情况动态分配。AI CPU的存在使得昇腾AI处理器可以支持各种类型算子。 -3. 片上缓冲区: 用于向AI Core和AI CPU提供高带宽、低延迟的数据交换和访问。 -4. Task Schedule Subsystem: 由四核Cortex-A55实现,专用于将计算任务分配到AI Core和AI CPU上,不承担其他工作。 -5. 主存: 通常由DDR或HBM实现,用于存放大量数据,比如整个模型的权重。 -6. Direct Memory Access (DMA): 用于将数据从片外缓冲区(如DDR或HBM)搬运到片上缓冲区。 -7. 外设接口: 包括高速接口如PCIE、以太网和低速接口如UART/I2C/GPIO等。 -8. 总线: 基于 CHI 协议的片上环形总线相连,实现模块间的数据连接通路并保证数据的共享和一致性。 +昇腾 AI 处理器本质上是一个片上系统(System on Chip,SoC),主要可以应用在和图像、视频、语音、文字处理相关的应用场景。上图是早期昇腾其处理器的逻辑架构,其主要的架构组成部件包括特制的计算单元、大容量的存储单元和相应的控制单元。该处理器大致可以划为:芯片系统控制 CPU(Control CPU),AI 计算引擎(包括 AI Core 和 AI CPU),多层级的片上系统缓存(Cache)或缓冲区(Buffer),数字视觉预处理模块(Digital Vision Pre-Processing,DVPP)等。芯片可以采用 LPDDR4 高速主存控制器接口,价格较低。目前主流 SoC 芯片的主存一般由 DDR(Double Data Rate)或 HBM(High Bandwidth Memory)构成,用来存放大量的数据。HBM 相对于 DDR 存储带宽较高,是行业的发展方向。其它通用的外设接口模块包括 USB、磁盘、网卡、GPIO、I2C 和电源管理接口等。 + +![昇腾 AI 处理器逻辑图](images/ascendarch01.png) + +当该处理器作为计算服务器的加速卡使用时,会通过 PCIe 总线接口和服务器其它单元实现数据互换。以上所有这些模块通过基于 CHI 协议的片上环形总线相连,实现模块间的数据连接通路并保证数据的共享和一致性。 + +昇腾 AI 处理器集成了多个 ARM 架构的 CPU 核心,每个核心都有独立的 L1 和 L2 缓存,所有核心共享一个片上 L3 缓存。集成的 CPU 核心按照功能可以划分为专用于控制芯片整体运行的主控 CPU 和专用于承担非矩阵类复杂计算的 AI CPU。两类任务占用的 CPU 核数可由软件根据系统实际运行情况动态分配。 + +除了 CPU 之外,该处理器真正的算力担当是采用了达芬奇架构的 AI Core。这些 AI Core 通过特别设计的架构和电路实现了高通量、大算力和低功耗,特别适合处理深度学习中神经网络必须的常用计算如矩阵相乘等。目前该处理器能对整数或浮点数提供强大的乘加计算力。由于采用了模块化的设计,可以很方便的通过叠加模块的方法提高后续处理器的计算力。 + +针对深度神经网络参数量大、中间值多的特点,该处理器还特意为 AI 计算引擎配备了一定容量的片上缓冲区(On-Chip Buffer),提供高带宽、低延迟、高效率的数据交换和访问。能够快速访问到所需的数据对于提高神经网络算法的整体性能至关重要,同时将大量需要复用的中间数据缓存在片上对于降低系统整体功耗意义重大。为了能够实现计算任务在 AI Core 上的高效分配和调度,还特意配备了一个专用 CPU 作为任务调度器(Task Scheduler,TS)。该 CPU 专门服务于 AI Core 和 AI CPU,而不承担任何其他的事务和工作。 + +数字视觉预处理模块主要完成图像视频的编解码,视频处理,对图像支持 JPEG 和 PNG 等格式的处理。来自主机端存储器或网络的视频和图像数据,在进入昇腾 AI 处理器的计算引擎处理之前,需要生成满足处理要求的输入格式、分辨率等,因此需要调用数字视觉预处理模块进行预处理以实现格式和精度转换等要求。数字视觉预处理模块主要实现视频解码(Video Decoder,VDEC),视频编码(Video Encoder,VENC),JPEG 编解码(JPEG Decoder/Encoder,JPEGD/E),PNG 解码(PNG Decoder,PNGD)和视觉预处理(Vision Pre-Processing Core,VPC)等功能。图像预处理可以完成对输入图像的上/下采样、裁剪、色调转换等多种功能。数字视觉预处理模块采用了专用定制电路的方式来实现高效率的图像处理功能,对应于每一种不同的功能都会设计一个相应的硬件电路模块来完成计算工作。在数字视觉预处理模块收到图像视频处理任务后,会读取需要处理的图像视频数据并分发到内部对应的处理模块进行处理,待处理完成后将数据写回到内存中等待后续步骤。 ### 昇腾910 ![昇腾 AI 处理器逻辑图](images/ascendarch18.png) @@ -47,7 +51,6 @@ ![昇腾 AI 处理器逻辑图](images/ascendarch17.png) 昇腾310处理器的目标场景是边缘推理,比如智慧城市、智慧新零售、机器人、工业制造等,其架构如上图所示,主要包含Davinci Core、DVPP、LPDDR4等组件。相比昇腾910,昇腾310的定制化IP相对较少,但是提供了更多外设接口。由于在边缘推理场景下batch size通常只有1,因此昇腾310选择了较小的矩阵计算维度(m = 4, n = 16, k = 16)以实现$C_{mn} = A_{mk}\times B_{kn}$。由于在矩阵运算中$M = batch\_size \times output\_hight \times output\_width$, 当batch size = 1时,将m设置成4可以提升乘累加利用率。 - ## 卷积加速原理 在深度神经网络中,卷积计算一直扮演着至关重要的角色。在一个多层的卷积神经网络中,卷积计算的计算量往往是决定性的,将直接影响到系统运行的实际性能。昇腾 AI 处理器作为人工智能加速器自然也不会忽略这一点,并且从软硬件架构上都对卷积计算进行了深度的优化。