NACC
1. 简介
神经网络加速器(NACC)提高了神经网络的推理性能。NACC 的数据类型是 INT8,并支持 im2col、卷积、深度可分离卷积、平均池化、最大池化、全连接、激活函数和矩阵乘法的加速。
例如可以加速 ResNet、MobileNet、Alexnet、VGG16、YOLO 等结构的网络。
此 IP 可用作 NMSIS 中函数的加速器,以及开源的 TensorFlow Lite。
2. 主要特性
NACC 的主要特性如下:
支持 8 位定点数据格式。
支持总线传输数据宽度 128 位。
支持本地单端口 SRAM 缓存,总线可以独立访问 SRAM 功能。
支持加速 NMSIS 中的卷积、RGB 卷积、深度可分离卷积、池化、全连接、逐元素操作、激活函数。
支持加速 NMSIS 中的矩阵乘法函数。
支持加速 NMSIS 中的 im2col 函数。
支持 IFM 宽度或高度分割,核分割。
支持多核模式。
拥有共享 SRAM 来存储 IFM、临时数据和 OFM。
3. 功能描述
NACC 框图
NACC 由寄存器控制单元、DMA 控制器、MAC 单元、本地存储器和互连结构组成。
以下是 NACC 各单元的说明:
寄存器控制单元接收任务并调度 DMA 引擎。
DMA 控制器使用其 ICB 主接口在外部存储器和内部共享存储器之间移动数据。
MAC 单元包含各种内部单元,用于读取 IFM、执行点积和累加。
NACC 的框图如下图所示:
图 3.1: NACC 模块框图
外部接口
NACC 使用 ICB 主接口、一个 ICB 从接口、一个中断接口、时钟和复位信号来启用与外部组件的访问。
ICB 主接口
这些接口使 DMA 控制器能够对外部存储器进行读访问和写访问。NACC 有一个读/写主接口,M0
ICB 从接口
使运行在外部主机应用处理器上的设备驱动程序能够访问 NACC 的控制寄存器。
中断接口
向外部主机应用处理器发送中断请求,通常用于发出作业完成或系统总线访问读/写错误的信号。
时钟和复位
NACC 有一个时钟和一个复位信号。
DMA 控制器
NACC 包含一个可以直接读写外部存储器的直接存储器访问(DMA)控制器。当 NACC 执行推理时,DMA 控制器读取神经网络描述。
此描述包含:
命令流
网络权重
量化信息
偏置信息
DMA 控制器还传输输入特征图(IFM)、输出特征图(OFM)以及同样存储在系统内存中的 NACC 私有的中间数据。
DMA 控制器使用的通道有:
读通道
NACC 使用读通道读取输入特征图并将其存储在其共享 RAM 中。此外,权重数据、偏置数据、量化数据也使用读通道传输到共享 RAM。DMA 控制器数据以 NHWC 格式存储。
DMA 控制器考虑核步长,因为这会影响 DMA 控制器存储激活所需的存储体或地址。
写通道
NACC 使用写通道将输出特征图从共享 SRAM 写入外部 SRAM。
多核
NACC 支持多核模式,该模式具有高扩展性、高传输性、高性能的优点。此模式适用于大型网络、大尺寸图像和高性能要求。
有两种类型的多核模式策略。计算能力的模式选择如下:
模式1:卷积、全连接卷积。
模式2:卷积、深度可分离卷积、池化、逐元素操作、RGB 卷积、矩阵运算。
支持配置的多核数量:[1,2,4,8,16,32],最大计算能力:2Tops(500MHz),4Tops(1GHz)。
TOPS 是每秒的 MAC 操作次数,计算公式为:TOPS = 64MAC * 2 * 频率 * NACC_数量;
数据格式
NACC 支持行业标准的 NHWC 格式的特征图数据。
NHWC 被 NACC 用作与 TensorFlow Lite 通信的输入和输出格式。
NHWC 格式具有以下属性:
数据维度:N(数量)、H(高度)、W(宽度)和 C(通道)。
每个元素的大小(ElemSize)为 1 字节。
仅支持单批次(N=1)。
NHWC 在访问中具有更好的局部性。
MAC 单元
MAC 单元执行卷积、深度可分离卷积、平均池化、最大池化、向量点积、im2col、全连接等所需的乘累加操作。
本地存储器
本地存储器包括 SRAM 和寄存器阵列,SRAM 用于存储 IFM 和 OFM,实际上使用共享 SRAM。
用户应使用 DMA 将 IFM 从外部存储器传输到 SRAM,计算完成后,应将 OFM 从 SRAM 传输到外部存储器。
NACC 拥有 16 ∗ 1024 ∗ 32 位,总计 64KB 的 SRAM。
激活单元
激活单元读取已完成的累加器,将偏置值加到结果中,并对每个点应用激活函数。
激活单元支持的激活函数有:
ReLU
ReLU6
Tanh
Sigmoid
LUT
无或旁路
ReLU 和 ReLU6
修正线性单元(ReLU)操作通常在偏置加法之后执行。将所有负值设为 0,其余值保持不变。
ReLU6 与普通 ReLU 的区别在于最大输出限制为 6,主要是为了在移动端 int8 低精度时保持良好的数值分辨率。
Tanh 和 Sigmoid
激活单元通过结合查表法和双线性插值来支持 tanh 和 sigmoid 函数。两种函数使用相同的表,因为它们在数学上是相关的。
激活单元每个周期可以执行一次 tanh 或 sigmoid 函数。
还有一个可配置的查找表(LUT),可用于任何逐点的激活或函数。对于 8 位激活,LUT 最多可容纳 256 个 8 位值,这些值直接从 IFM 映射到 OFM。
当激活单元计算完成后,将其写回共享 RAM。输出激活缓存在共享 RAM 中,等待 DMA 控制器将其发送到外部存储器。
逐元素操作
输出单元支持的逐元素操作有:
逐元素加法
逐元素乘法
卷积
本节提供有关支持的数据类型、运算符和操作的信息,并详细介绍 NACC 的卷积和逐元素操作性能。
下表显示了 NACC 支持的卷积参数:
参数 |
范围 |
|---|---|
核 |
1*1 < 核_x * 核_y <= 15*15 |
精度 |
IFM:8 位;权重:8 位 |
步长 |
步长_x <= 3;步长_y <= 3 |
核扩张 |
扩张_x = 1;扩张_y = 1 |
输入填充 |
填充 <= 5 |
NACC 可以支持卷积加速,
它支持编程的核大小范围 [1:15] * [1:15]。
x 和 y 方向的最大步长为 3。
最大填充大小为 5。
x 和 y 方向的最大扩张为 1。
它可以支持加速 NMSIS-NN 中的卷积函数。
步骤如下:
步骤 1,将 IFM 传输到行缓冲器:您应将第一个 IFM 和核传输到行缓冲器。
步骤 2,计算第一个:NACC 等待开始计算,您可以配置 NACC_CTRL 寄存器中的 START 位来决定是否在写入后立即开始计算。
步骤 3,DMA 从行缓冲器读取 OFM:如果计算完成,DMA 可以从本地 SRAM 读取 OFM。
步骤 4,计算第二个:您可以将第二个 IFM 和核传输到行缓冲器,传输完成后,NACC 再次开始计算。
步骤 5,与步骤 3 相同。后续步骤是上述步骤的循环。
示例
有两个示例展示了如何使用 NACC 加速卷积。
示例 1
以下示例展示了一个基础卷积的详细配置,该函数在 MNSIS-NN 中为 risc_convolve_s8。
下表显示了卷积参数。
参数 |
值 |
|---|---|
IFM |
16*16*3 (HWC) |
OFM |
14*14*8 (HWC) |
精度 |
IFM:8 位;权重:8 位 |
批次 |
1 |
核 |
8*3*33 (NHWC) |
步长 |
步长_x = 1;步长_y = 1 |
核扩张 |
扩张_x = 1;扩张_y = 1 |
输入填充 |
填充_x = 0;填充_y = 0 |
示例 2
此示例展示了当 IFM 尺寸大于 NACC 提供的尺寸限制时的情况。下表显示了卷积参数(示例 2)。
参数 |
值 |
|---|---|
IFM |
80*80*3 (HWC) |
OFM |
78*78*8 (HWC) |
精度 |
IFM:8 位;权重:8 位 |
批次 |
1 |
核 |
8*3*33 (NHWC) |
步长 |
步长_x = 1;步长_y = 1 |
核扩张 |
扩张_x = 1;扩张_y = 1 |
输入填充 |
填充_x = 1;填充_y = 1 |
在这种情况下,IFM 的尺寸超过了尺寸限制,您应首先将 IFM 分成小块,如下图所示,按宽度分割 IFM。
图 3.2: NACC IFM 尺寸超限分割
首先,如上图所示,您应将每个通道分成 2 部分。您应将部分 1 和部分 2 视为四个新的 IFM。您应控制 DMA 分别传输这四个新的 IFM。如果填充数不为 0,您应注意这两个新 IFM 的填充参数:IFM1 仅右侧无填充,IFM2 仅左侧无填充。
之后,您应像示例 1 一样计算这两个 IFM,并分别将四个 OFM 传输到外部存储器。完成 IFM2 的计算后,您将获得完整的 OFM。
池化
下表显示了 NACC 支持的池化参数:
参数 |
范围 |
|---|---|
核 |
2*2 < 核_x * 核_y <= 15*15 |
精度 |
IFM:8 位整数 |
步长 |
步长_x <= 3;步长_y <= 3 |
核扩张 |
扩张_x = 1;扩张_y = 1 |
输入填充 |
填充 <= 5 |
NACC 可以支持池化加速,
最大池化的最大核尺寸为 15 ∗ 15。平均池化仅支持 2 ∗ 2。
最大池化的 x 和 y 方向最大步长为 3。平均池化仅支持 2。
最大填充大小为 5。
NACC 支持最大池化和平均池化。
步骤如下:
步骤 1:使用 DMA 将 IFM 传输到行缓冲器。
步骤 2:NACC 开始计算并将 OFM 传输到行缓冲器。
步骤 3:使用 DMA 将 OFM 读取到外部存储器。
在上面的描述中,它是一个 NACC 系统,有些 NACC 系统由多核组成,DMA 可以将不同的 IFM 传输到每个 NACC。性能取决于系统中 NACC 的数量。
4. 中断
NACC 有两组中断信号,一组是总线传输的读中断错误和写中断错误;另一组是 NACC 计算结果传输完成中断。
5. 寄存器
ACRYP_RF 寄存器
寄存器及其在 NACC_REG 中的相应偏移量见下表。
偏移量 |
寄存器名称 |
功能描述 |
|---|---|---|
0x0 |
NACC_CTRL |
NACC 计算模式配置 |
0x4 |
NACC_KERNEL |
NACC 卷积核尺寸 |
0x8 |
NACC_IN_FM |
NACC 输入特征图尺寸 |
0xC |
NACC_OUT_FM |
NACC 输出特征图尺寸 |
0x10 |
NACC_PADDING |
NACC 填充尺寸 |
0x14 |
NACC_INT_EN |
NACC ICB 总线中断配置 |
0x18 |
NACC_INT_STATUS |
NACC ICB 总线中断状态 |
0x1C |
NACC_ELEMENTWISE |
NACC 逐元素操作配置 |
0x20 |
NACC_QUANT_MUL_DMA_ADDR |
NACC 量化_乘数据 ICB 总线源地址 |
0x24 |
NACC_QUANT_SHIFT_DMA_ADDR |
NACC 量化_移位数据 ICB 总线源地址 |
0x28 |
NACC_ACT_MAX |
NACC 激活最大值参数 |
0x2C |
NACC_ACT_MIN |
NACC 激活最小值参数 |
0x30 |
NACC_MATRIX_A |
NACC 矩阵 A 尺寸 |
0x34 |
NACC_MATRIX_B |
NACC 矩阵 B 尺寸 |
0x38 |
NACC_ACT_PARA |
NACC 激活参数 |
0x3C |
NACC_IN_ACT_DMA_ADDR |
NACC 激活数据 ICB 总线源地址 |
0x40 |
NACC_BIAS_DMA_ADDR |
NACC 偏置数据 ICB 总线源地址 |
0x44 |
NACC_IN_K_DMA_ADDR |
NACC 核数据 ICB 总线源地址 |
0x48 |
NACC_IN_FM_DMA_ADDR |
NACC 输入特征图数据 ICB 总线源地址 |
0x4C |
NACC_OUT_DMA_ADDR |
NACC 输出特征图数据 ICB 总线源地址 |
0x64 |
NACC_FM_OFFSET |
NACC 特征图数据偏移量 |
0x68 |
NACC_DMA_OFFSET |
NACC 每个批次输入 DMA 地址偏移量 |
0x6C |
NACC_IM2COL_TRANS_LEN |
NACC IM2COL DMA 传输长度 |
0x70 |
NACC_CONV_TRANS_LEN |
NACC 卷积 DMA 传输长度 |
0x74 |
NACC_DMA_OUT_TRANS_LEN |
NACC 输出 DMA 传输长度 |
0x78 |
NACC_FULL_CONV_PARA |
NACC 全连接参数 |
0x7C |
NACC_DMA_PARA1 |
NACC DMA 传输批次大小 |
0x80 |
NACC_DMA_PARA2 |
NACC 输入特征图数据偏移量(非连续地址) |
0x84 |
NACC_DMA_PARA3 |
NACC DMA 传输参数 |
0x88 |
NACC_DMA_PARAA |
NACC 核数据偏移量 |
0x8C |
NACC_BATCH_SIZE |
NACC 批次参数 |
0x90 |
NACC_MEM_RANGE |
NACC SRAM 参数 |
0x94 |
NACC_DMA_OFFSET1 |
NACC 输入特征图单行数据偏移量 |
0x98 |
NACC_DMA_OFFSET2 |
NACC 输出特征图数据偏移量 |
0xA4 |
NACC_IM2COL_DMA_ADDR |
NACC IM2COL 数据 ICB 总线源地址 |
0xAC |
NACC_FM_CH |
NACC 特征图通道尺寸 |
0xB0 |
NACC_IN_FM_SPLIT |
NACC 输入特征图分割尺寸 |
0xB4 |
NACC_OUT_FM_SPLIT |
NACC 输出特征图分割尺寸 |
0xB8 |
NACC_OUT_FM_SPLIT_LEN |
NACC 输出特征图分割长度 |
0xBC |
NACC_IN_FM_SPLIT_W_OFFSET |
NACC 输入特征图分割宽度偏移量 |
0xC0 |
NACC_IN_FM_SPLIT_W_OFFSET1 |
NACC 输入特征图分割宽度偏移量1 |
0xC4 |
NACC_IN_FM_SPLIT_H_OFFSET |
NACC 输入特征图分割高度偏移量 |
0xC8 |
NACC_IN_FM_SPLIT_H_OFFSET1 |
NACC 输入特征图分割高度溢出偏移量1 |
0xCC |
NACC_IN_FM_SPLIT_H_OFFSET2 |
NACC 输入特征图分割高度平均偏移量2 |
0xD0 |
NACC_OUT_FM_SPLIT_H_OFFSET |
NACC 输出特征图分割高度偏移量 |
0xD4 |
NACC_OUT_FM_SPLIT_H_OFFSET1 |
NACC 输出特征图分割高度偏移量1 |
0xD8 |
NACC_BROADCAST_CTRL |
NACC 广播模式配置 |
0xDC |
NACC_BROADCAST_CTRL1 |
NACC 广播模式配置1 |
0xE0 |
NACC_BROADCAST_DMA |
NACC 广播 DMA 偏移量 |
0xE4 |
NACC_BROADCAST_SPLIT |
NACC 广播分割高度偏移量 |
0xE8 |
NACC_ELEMENT_QUANT1_MULT |
NACC 逐元素操作输入1乘法参数 |
0xEC |
NACC_ELEMENT_QUANT1_SHIFT |
NACC 逐元素操作输入1移位参数 |
0xF0 |
NACC_ELEMENT_QUANT2_MULT |
NACC 逐元素操作输入2乘法参数 |
0xF4 |
NACC_ELEMENT_QUANT2_SHIFT |
NACC 逐元素操作输入2移位参数 |
0xFC |
NACC_VERSION |
NACC IP 版本寄存器 |
NACC_CTRL
地址偏移:0x0
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
CONV_MODE |
3:0 |
RW |
0x0 |
|
POOL_MODE |
7:4 |
RW |
0x0 |
|
ACT_MODE |
11:8 |
RW |
0x0 |
|
START |
12 |
RW |
0x0 |
|
QUANT_EN |
13 |
RW |
0x0 |
|
BIAS_EN |
14 |
RW |
0x0 |
|
FM_UPD |
15 |
RW |
0x0 |
|
K_UPD |
16 |
RW |
0x0 |
|
IM2COL_EN |
17 |
RW |
0x0 |
|
ELEMENT_EN |
18 |
RW |
0x0 |
|
ELEMENT_INPUT_QUANT_EN |
19 |
RW |
0x0 |
|
DATA_FORM |
21:20 |
RW |
0x0 |
|
CLK_BYPASS |
27:22 |
RW |
0x0 |
|
保留 |
31:28 |
/ |
0x0 |
/ |
NACC_KERNEL
地址偏移:0x4
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
K_SIZE_X |
3:0 |
RW |
0x0 |
核大小 x,范围 [1:15] 内 |
K_SIZE_Y |
7:4 |
RW |
0x0 |
核大小 y,范围 [1:15] 内 |
K_SIZE_XY |
15:8 |
RW |
0x0 |
核大小 x * 核大小 y - 1 |
K_STRIDE_X |
19:16 |
RW |
0x1 |
x 方向的步长大小,只能是 1, 2, 3 |
K_STRIDE_Y |
23:20 |
RW |
0x1 |
y 方向的步长大小,只能是 1, 2, 3 |
K_DILATION_X |
27:24 |
RW |
0x1 |
x 方向的扩张大小,只能是 1 |
K_DILATION_Y |
31:28 |
RW |
0x1 |
y 方向的扩张大小,只能是 1 |
NACC_IN_FM
地址偏移:0x8
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
IN_FM_WIDTH |
15:0 |
RW |
0x0 |
输入特征图的宽度 |
IN_FM_HEIGHT |
31:16 |
RW |
0x0 |
输入特征图的高度 |
NACC_OUT_FM
地址偏移:0xC
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
OUT_FM_WIDTH |
15:0 |
RW |
0x0 |
输出特征图的宽度 |
OUT_FM_HEIGHT |
31:16 |
RW |
0x0 |
输出特征图的高度 |
NACC_PADDING
地址偏移:0x10
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
PAD_X |
3:0 |
RW |
0x0 |
x 方向的填充,只能是 0, 1, 2, 3, 4, 5 |
PAD_Y |
7:4 |
RW |
0x0 |
y 方向的填充,只能是 0, 1, 2, 3, 4, 5 |
保留 |
31:8 |
/ |
0x0 |
/ |
NACC_INT_EN
地址偏移:0x14
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
BUS_WR_ERR_INTR_EN |
0 |
RW |
0x0 |
ICB 总线写错误中断使能 |
BUS_RD_ERR_INTR_EN |
1 |
RW |
0x0 |
ICB 总线读错误中断使能 |
FULL_TRANS_DONE_INTR_EN |
2 |
RW |
0x0 |
NACC 传输完成中断使能 |
保留 |
31:3 |
/ |
0x0 |
/ |
NACC_INT_STATUS
地址偏移:0x18
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
BUS_WR_ERR_INTR |
0 |
WOC |
0x0 |
ICB 总线写错误中断 |
BUS_RD_ERR_INTR |
1 |
WOC |
0x0 |
ICB 总线读错误中断 |
FULL_TRANS_DONE_INTR |
2 |
WOC |
0x0 |
NACC 传输完成中断 |
保留 |
31:3 |
/ |
0x0 |
/ |
NACC_ELEMENTWISE
地址偏移:0x1C
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
ELEMENTWISE_MODE |
3:0 |
RW |
0x0 |
|
IN_ELEMENT_OFFSET1 |
12:4 |
RW |
0x0 |
输入1 数据偏移值 |
IN_ELEMENT_OFFSET2 |
21:13 |
RW |
0x0 |
输入2 数据偏移值 |
LEFT_SHIFT |
29:22 |
RW |
0x0 |
输入1、输入2 数据左移值 |
保留 |
31:30 |
/ |
0x0 |
/ |
NACC_QUANT_MUL_DMA_ADDR
地址偏移:0x20
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
QUANT_MUL_DMA_ADDR |
31:0 |
RW |
0x0 |
量化参数乘法数据 ICB 总线源地址 |
NACC_QUANT_SHIFT_DMA_ADDR
地址偏移:0x24
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
QUANT_SHIFT_DMA_ADDR |
31:0 |
RW |
0x0 |
量化参数移位数据 ICB 总线源地址 |
NACC_ACT_MAX
地址偏移:0x28
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
ACT_MAX |
31:0 |
RW |
0x0 |
激活参数:最大值 |
NACC_ACT_MIN
地址偏移:0x2C
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
ACT_MIN |
31:0 |
RW |
0x0 |
激活参数:最小值 |
NACC_MATRIX_A
地址偏移:0x30
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
MATRIX_A_XSIZE |
15:0 |
RW |
0x0 |
矩阵 A:x 方向尺寸值 |
MATRIX_A_YSIZE |
31:16 |
RW |
0x0 |
矩阵 A:y 方向尺寸值 |
NACC_MATRIX_B
地址偏移:0x34
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
MATRIX_B_XSIZE |
15:0 |
RW |
0x0 |
矩阵 B:x 方向尺寸值 |
MATRIX_B_YSIZE |
31:16 |
RW |
0x0 |
矩阵 B:y 方向尺寸值 |
NACC_ACT_PARA
地址偏移:0x38
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
ACT_INT_W |
1:0 |
RW |
0x0 |
激活参数:整数宽度 |
保留 |
31:2 |
/ |
0x0 |
/ |
NACC_IN_ACT_DMA_ADDR
地址偏移:0x3C
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
IN_ACT_DMA_ADDR |
31:0 |
RW |
0x0 |
激活数据 ICB 总线源地址 |
NACC_BIAS_DMA_ADDR
地址偏移:0x40
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
BIAS_DMA_ADDR |
31:0 |
RW |
0x0 |
偏置数据 ICB 总线源地址 |
NACC_IN_K_DMA_ADDR
地址偏移:0x44
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
IN_K_DMA_ADDR |
31:0 |
RW |
0x0 |
核数据 ICB 总线源地址 |
NACC_IN_FM_DMA_ADDR
地址偏移:0x48
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
IN_FM_DMA_ADDR |
31:0 |
RW |
0x0 |
输入特征图数据 ICB 总线源地址 |
NACC_OUT_DMA_ADDR
地址偏移:0x4C
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
OUT_DMA_ADDR |
31:0 |
RW |
0x0 |
输出特征图数据 ICB 总线源地址 |
NACC_FM_OFFSET
地址偏移:0x64
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
IN_FM_OFFSET |
8:0 |
RW |
0x0 |
输入特征图数据偏移值 |
OUT_FM_OFFSET |
17:9 |
RW |
0x0 |
输出特征图数据偏移值 |
保留 |
31:18 |
/ |
0x0 |
/ |
NACC_DMA_OFFSET
地址偏移:0x68
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
IN_DMA_OFFSET |
31:0 |
RW |
0x0 |
输入 DMA 地址偏移量 |
NACC_IM2COL_TRANS_LEN
地址偏移:0x6C
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
IM2COL_IN_TRANS_LEN |
15:0 |
RW |
0x0 |
输入 DMA 传输长度 |
IM2COL_OUT_TRANS_LEN |
31:16 |
RW |
0x0 |
输出 DMA 传输长度 |
NACC_CONV_TRANS_LEN
地址偏移:0x70
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
K_TRANS_LEN |
15:0 |
RW |
0x0 |
核 DMA 传输长度 |
FM_TRANS_LEN |
31:16 |
RW |
0x0 |
输入特征图 DMA 传输长度 |
NACC_DMA_OUT_TRANS_LEN
地址偏移:0x74
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
DMA_OUT_TRANS_LEN |
15:0 |
RW |
0x0 |
输出特征图 DMA 传输长度 |
保留 |
31:16 |
/ |
0x0 |
/ |
NACC_FULL_CONV_PARA
地址偏移:0x78
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
FULL_KER_SIZE |
7:0 |
RW |
0x0 |
全连接核大小:in_fm_width * (in_fm_ch + 63) / 64 - 1 |
BIAS_SHIFT |
15:8 |
RW |
0x0 |
RGB 卷积参数:偏置移位 |
OUT_SHIFT |
23:16 |
RW |
0x0 |
RGB 卷积参数:输出移位 |
保留 |
31:24 |
/ |
0x0 |
/ |
NACC_DMA_PARA1
地址偏移:0x7C
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
IFM_TRANS_END_SIZE |
15:0 |
RW |
0x0 |
输入特征图传输批次大小 |
K_TRANS_END_SIZE |
31:16 |
RW |
0x0 |
核传输批次大小 |
NACC_DMA_PARA2
地址偏移:0x80
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
FM_TRANS_OFFSET |
31:0 |
RW |
0x0 |
输入特征图数据偏移值(非连续地址) |
NACC_DMA_PARA3
地址偏移:0x84
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
OFM_TRANS_END_SIZE |
15:0 |
RW |
0x0 |
输出特征图传输批次大小 |
DW_CH_MULT |
19:16 |
RW |
0x0 |
深度可分离卷积通道倍数:Out_fm_ch / 2 * (dw_ch_mult) = In_fm_ch,只能是 0, 1, 2, 3 |
保留 |
31:20 |
/ |
0x0 |
/ |
NACC_DMA_PARAA
地址偏移:0x88
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
K_TRANS_OFFSET |
31:0 |
RW |
0x0 |
核数据偏移值(适用于全连接、逐元素操作、矩阵模式) |
NACC_BATCH_SIZE
地址偏移:0x8C
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
IN_CH_BATCH_SIZE |
7:0 |
RW |
0x0 |
输入特征图通道批次大小 |
K_BATCH_SIZE |
15:8 |
RW |
0x0 |
核批次大小 |
K_ONE_BATCH_SIZE |
23:16 |
RW |
0x0 |
单个批次传输的核大小 |
TEMP_RES_BATCH_SIZE |
27:24 |
RW |
0x0 |
临时结果批次大小 |
保留 |
31:28 |
/ |
0x0 |
/ |
NACC_MEM_RANGE
地址偏移:0x90
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
IFM_MEM_BASE |
1:0 |
RW |
0x0 |
输入特征图通道批次大小 |
K_BATCH_SIZE |
11:2 |
RW |
0x0 |
核基地址 |
OFM_MEM_BASE |
21:12 |
RW |
0x0 |
输出特征图基地址 |
TEMP_MEM_BASE |
31:22 |
RW |
0x0 |
临时结果基地址 |
NACC_DMA_OFFSET1
地址偏移:0x94
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
IN_DMA_ROW_OFFSET |
31:0 |
RW |
0x0 |
输入特征图单行数据偏移值 |
NACC_DMA_OFFSET2
地址偏移:0x98
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
OUT_DMA_OFFSET |
31:0 |
RW |
0x0 |
输出特征图数据偏移值 |
NACC_IM2COL_DMA_ADDR
地址偏移:0xA4
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
IM2COL_DMA_ADDR |
31:0 |
RW |
0x0 |
IM2COL 数据 ICB 总线源地址 |
NACC_FM_CH
地址偏移:0xAC
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
IN_FM_CH |
15:0 |
RW |
0x0 |
输入特征图的通道数 |
OUT_FM_CH |
31:16 |
RW |
0x0 |
输出特征图的通道数 |
NACC_IN_FM_SPLIT
地址偏移:0xB0
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
IN_FM_SPLIT_WIDTH |
7:0 |
RW |
0x0 |
输入特征图分割宽度 |
IN_FM_SPLIT_LEFT_WIDTH |
15:8 |
RW |
0x0 |
输入特征图分割左侧宽度 |
IN_FM_SPLIT_LEFT_LEN |
31:16 |
RW |
0x0 |
输入特征图分割左侧长度 |
NACC_OUT_FM_SPLIT
地址偏移:0xB4
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
OUT_FM_SPLIT_SIZE |
7:0 |
RW |
0x0 |
输出特征图分割尺寸 |
OUT_FM_SPLIT_WIDTH |
15:8 |
RW |
0x0 |
输出特征图分割宽度 |
OUT_FM_SPLIT_LEFT_WIDTH |
23:16 |
RW |
0x0 |
输出特征图分割左侧宽度 |
保留 |
31:24 |
/ |
0x0 |
/ |
NACC_OUT_FM_SPLIT_LEN
地址偏移:0xB8
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
OUT_FM_SPLIT_LEN |
15:0 |
RW |
0x0 |
输出特征图分割长度 |
OUT_FM_SPLIT_LEFT_LEN |
31:16 |
RW |
0x0 |
输出特征图分割左侧长度 |
NACC_IN_FM_SPLIT_W_OFFSET
地址偏移:0xBC
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
IN_FM_START_SPLIT_W_OFFSET |
31:0 |
RW |
0x0 |
输入特征图起始分割宽度偏移量 |
NACC_IN_FM_SPLIT_W_OFFSET1
地址偏移:0xC0
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
IN_FM_MID_SPLIT_W_OFFSET |
31:0 |
RW |
0x0 |
输入特征图中间分割宽度偏移量 |
NACC_IN_FM_SPLIT_H_OFFSET
地址偏移:0xC4
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
IN_FM_START_SPLIT_H_OFFSET |
31:0 |
RW |
0x0 |
输入特征图起始分割高度偏移量 |
NACC_IN_FM_SPLIT_H_OFFSET1
地址偏移:0xC8
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
IN_FM_MID_SPLIT_H_OV_OFFSET |
31:0 |
RW |
0x0 |
输入特征图中间分割高度溢出偏移量 |
NACC_IN_FM_SPLIT_H_OFFSET2
地址偏移:0xCC
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
IN_FM_MID_SPLIT_H_AVG_OFFSET |
31:0 |
RW |
0x0 |
输入特征图中间分割高度平均偏移量 |
NACC_OUT_FM_SPLIT_H_OFFSET
地址偏移:0xD0
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
OUT_FM_START_SPLIT_H_OFFSET |
31:0 |
RW |
0x0 |
输出特征图起始分割高度偏移量 |
NACC_OUT_FM_SPLIT_H_OFFSET1
地址偏移:0xD4
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
OUT_FM_MID_SPLIT_H_OFFSET |
31:0 |
RW |
0x0 |
输出特征图中间分割高度偏移量 |
NACC_BROADCAST_CTRL
地址偏移:0xD8
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
BROADCAST_MODE |
1:0 |
RW |
0x0 |
|
BROADCAST_NUM |
7:2 |
RW |
0x0 |
广播数量配置:0, 1, 3, 7, 15, 31(实际数量 -1 |
保留 |
31:8 |
/ |
0x0 |
/ |
NACC_BROADCAST_CTRL1
地址偏移:0xDC
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
BROADCAST_OVER_EN |
31:0 |
RW |
0x0 |
广播分割溢出使能标志 |
NACC_BROADCAST_DMA
地址偏移:0xE0
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
IN_DMA_UNICAST_OV_OFFSET |
9:0 |
RW |
0x0 |
输入 DMA 单播溢出偏移量 |
IN_DMA_UNICAST_AVG_OFFSET |
19:10 |
RW |
0x0 |
输入 DMA 单播平均偏移量 |
EU_BIAS_START_OFFSET |
27:20 |
RW |
0x0 |
MAC 单元偏置起始偏移量 |
保留 |
31:28 |
/ |
0x0 |
/ |
NACC_BROADCAST_SPLIT
地址偏移:0xE4
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
OUT_FM_SPLIT_OV_HEIGHT |
9:0 |
RW |
0x0 |
输出特征图分割高度溢出偏移量 |
OUT_FM_SPLIT_AVG_HEIGHT |
19:10 |
RW |
0x0 |
输出特征图分割高度平均偏移量 |
保留 |
31:20 |
/ |
0x0 |
/ |
NACC_ELEMENT_QUANT1_MULT
地址偏移:0xE8
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
IN_ELEMENT_MULT1 |
31:0 |
RW |
0x0 |
输入元素1乘法参数 |
NACC_ELEMENT_QUANT1_SHIFT
地址偏移:0xEC
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
IN_ELEMENT_SHIFT1 |
31:0 |
RW |
0x0 |
输入元素1移位参数 |
NACC_ELEMENT_QUANT2_MULT
地址偏移:0xF0
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
IN_ELEMENT_MULT2 |
31:0 |
RW |
0x0 |
输入元素2乘法参数 |
NACC_ELEMENT_QUANT2_SHIFT
地址偏移:0xF4
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
IN_ELEMENT_SHIFT2 |
31:0 |
RW |
0x0 |
输入元素2移位参数 |
NACC_VERSION
地址偏移:0xFC
字段 |
位 |
访问 |
复位值 |
描述 |
|---|---|---|---|---|
VERSION |
31:0 |
RO |
0x0001_0102 |
|