CNA 寄存器块(Convolution Neural-network Accelerator)

基址CORE_BASE + 0x1000 | 地址范围0x1000 ~ 0x1FFF

来源:RK3588 TRM §36.4.3 Detail Registers Description

CNA 是卷积加速单元,包含特征数据加载、权重加载、384KB 内部缓冲(CBUF)、序列扫描控制器(CSC)。


RKNN_cna_s_status(0x1000)

执行器状态寄存器(只读)。

Bit属性复位值字段名描述
31:18RO0x0保留
17:16RO0x0status_1执行器 1 状态。0:空闲;1:正在执行;2:正在执行且执行器 1 等待执行;3:保留
15:2RO0x0保留
1:0RO0x0status_0执行器 0 状态。0:空闲;1:正在执行;2:正在执行且执行器 1 等待执行;3:保留

RKNN_cna_s_pointer(0x1004)

寄存器组指针与 ping-pong 控制。

Bit属性复位值字段名描述
31:17RO0x0保留
16RO0x0executer当前使用的寄存器组。0:执行器组 0;1:执行器组 1
15:6RO0x0保留
5W1C0x0executer_pp_clear清除执行器组指针,写 1 清零
4W1C0x0pointer_pp_clear清除寄存器组指针,写 1 清零
3RW0x0pointer_pp_modePing-pong 模式。0:按执行器切换(executer 0 完成后切到 1);1:按指针切换(pointer 0 完成后切到 1)
2RW0x0executer_pp_en执行器组 ping-pong 使能。0:禁用;1:使能
1RW0x0pointer_pp_en寄存器组 ping-pong 使能。0:禁用;1:使能
0RW0x0pointer当前待设置的寄存器组。0:组 0;1:组 1

RKNN_cna_operation_enable(0x1008)

操作使能寄存器。写入此寄存器将触发 CNA 模块开始执行。此寄存器及之后的寄存器均为 ping-pong 影子寄存器。

Bit属性复位值字段名描述
31:1RO0x0保留
0RW0x0op_enCNA 操作使能。0:禁用;1:使能

RKNN_cna_conv_con1(0x100C)

卷积控制寄存器 1:精度、模式、反卷积等。

Bit属性复位值字段名描述
31RO0x0保留
30RW0x0nonalign_dmaCNA DMA 非对齐模式。0:禁用;1:使能(ARGB 模式下请开启,使 DMA 连续取特征数据)
29RW0x0group_line_off组行取数关闭。0:使能组行取数;1:禁用(仅影响取数效率)
28:17RO0x0保留
16RW0x0deconv反卷积使能。0:禁用;1:使能
15:12RW0x0argb_in非对齐通道层控制。8:1 通道输入;9:2 通道;10:3 通道;11:4 通道
11:10RO0x0保留
9:7RW0x0proc_precision处理精度。0:int8;1:int16;2:fp16;3:bf16;6:int4;7:tf32
6:4RW0x0in_precision输入精度。编码同 proc_precision
3:0RW0x0conv_mode卷积模式。0:直接卷积;3:深度可分离卷积(Depthwise)

RKNN_cna_conv_con2(0x1010)

卷积控制寄存器 2:kernel 分组、feature grain、CSC 控制。

Bit属性复位值字段名描述
31:24RO0x0保留
23:16RW0x0kernel_groupKernel 分组数。int8 下 32 个 kernel 为 1 组,int16/fp16 下 16 个为 1 组。例:256 个 kernel,int8 下设为 256/32−1=7
15:14RO0x0保留
13:4RW0x0feature_grains卷积开始前需缓冲的特征数据行数。建议设为 y_stride + weight_height + 1
3RO0x0保留
2RW0x0csc_wo_en权重扫描控制。0:使能 CSC 输出权重到 CORE;1:禁用
1RW0x0csc_do_en数据扫描控制。0:使能 CSC 输出特征数据到 CORE;1:禁用
0RW0x0cmd_fifo_srst命令 FIFO 软复位(调试用)

RKNN_cna_conv_con3(0x1014)

卷积控制寄存器 3:多核模式、空洞卷积、反卷积步长、卷积步长。

Bit属性复位值字段名描述
31RO0x0保留
30:28RW0x0nn_mode多核协作模式。0:32×32(单核);1:64×32;2:96×32;4:32×64;5:32×96。单核模式保持 0
27:26RO0x0保留
25:21RW0x0atrous_y_dilation空洞卷积 Y 方向膨胀值(列方向两像素间插入的 pad 数)
20:16RW0x0atrous_x_dilation空洞卷积 X 方向膨胀值(行方向两像素间插入的 pad 数)。>0 时启用空洞卷积
15:14RO0x0保留
13:11RW0x0deconv_y_stride反卷积 Y 步长
10:8RW0x0deconv_x_stride反卷积 X 步长
7:6RO0x0保留
5:3RW0x0conv_y_stride卷积 Y 步长
2:0RW0x0conv_x_stride卷积 X 步长

RKNN_cna_data_size0(0x1020)

输入特征数据宽高。

Bit属性复位值字段名描述
31:27RO0x0保留
26:16RW0x0datain_width输入特征数据宽度
15:11RO0x0保留
10:0RW0x0datain_height输入特征数据高度

RKNN_cna_data_size1(0x1024)

输入特征数据通道数。

Bit属性复位值字段名描述
31:30RO0x0保留
29:16RW0x0datain_channel_real真实通道数。当输入通道不是 8(int8)或 4(int16/fp16)的整数倍时,设置此字段
15:0RW0x0datain_channel输入通道数。int8 须为 8 的整数倍;int16/fp16 须为 4 的整数倍

RKNN_cna_data_size2(0x1028)

卷积后输出数据宽度。

Bit属性复位值字段名描述
31:11RO0x0保留
10:0RW0x0dataout_width卷积后数据宽度

RKNN_cna_data_size3(0x102C)

卷积后输出数据 surface 模式与总像素数。

Bit属性复位值字段名描述
31:24RO0x0保留
23:22RW0x0surf_modeSurface 串行模式。0/1:1 surf;2:2 surf;3:4 surf
21:0RW0x0dataout_atomics卷积后输出总像素数

RKNN_cna_weight_size0(0x1030)

权重总字节数。

Bit属性复位值字段名描述
31:0RW0x0weight_bytes本次卷积的权重总字节数

RKNN_cna_weight_size1(0x1034)

单个 kernel 的权重字节数。

Bit属性复位值字段名描述
31:19RO0x0保留
18:0RW0x0weight_bytes_per_kernel单个 kernel 的权重字节数

RKNN_cna_weight_size2(0x1038)

Kernel 宽高与数量。

Bit属性复位值字段名描述
31:29RO0x0保留
28:24RW0x0weight_widthKernel 宽度
23:21RO0x0保留
20:16RW0x0weight_heightKernel 高度
15:14RO0x0保留
13:0RW0x0weight_kernelsKernel 数量

RKNN_cna_cbuf_con0(0x1040)

CBUF(内部缓冲)控制寄存器 0:数据/权重复用、Bank 分配。

Bit属性复位值字段名描述
31:14RO0x0保留
13RW0x0weight_reuse权重数据复用使能。0:禁用;1:使能,直接从内部缓冲取权重
12RW0x0data_reuse特征数据复用使能。0:禁用;1:使能,直接从内部缓冲取数据
11RO0x0保留
10:8RW0x0fc_data_bankFC 零跳过模式的特征数据 Bank 数。FC 零跳过模式设为 1,否则必须为 0
7:4RW0x0weight_bank权重数据占用的 Bank 数。1:Bank 7;2:Bank 6-7;…;7:Bank 1-7
3:0RW0x0data_bank特征数据占用的 Bank 数。0:Bank 0;1:Bank 0-1;…;6:Bank 0-6

RKNN_cna_cbuf_con1(0x1044)

CBUF 控制寄存器 1。

Bit属性复位值字段名描述
31:13RO0x0保留
12:0RW0x0data_entries存储一行特征图所需的 Bank 空间

RKNN_cna_cvt_con0(0x104C)

输入转换控制寄存器 0:CVT 截断值、符号、舍入、旁路。

Bit属性复位值字段名描述
31:28RO0x0保留
27:22RW0x0cvt_truncate_3CVT 截断值 3
21:16RW0x0cvt_truncate_2CVT 截断值 2
15:10RW0x0cvt_truncate_1CVT 截断值 1
9:4RW0x0cvt_truncate_0CVT 截断值 0
3RW0x0data_sign特征数据符号。0:无符号;1:有符号
2RW0x0round_type舍入类型。0:奇入偶不入;1:0.5 向上进 1
1RW0x0cvt_type转换运算顺序。0:先乘后加;1:先加后乘
0RW0x0cvt_bypass旁路输入转换。0:使能 CVT;1:禁用 CVT

RKNN_cna_cvt_con1(0x1050)

输入转换控制 1:第 1 通道的 scale 和 offset。

Bit属性复位值字段名描述
31:16RW0x0cvt_scale0CVT 缩放 0(第 1 通道乘法操作数)
15:0RW0x0cvt_offset0CVT 偏移 0(第 1 通道加法操作数)

RKNN_cna_cvt_con2(0x1054)

输入转换控制 2:第 2 通道。

Bit属性复位值字段名描述
31:16RW0x0cvt_scale1CVT 缩放 1(第 2 通道乘法操作数)
15:0RW0x0cvt_offset1CVT 偏移 1(第 2 通道加法操作数)

RKNN_cna_cvt_con3(0x1058)

输入转换控制 3:第 3 通道。

Bit属性复位值字段名描述
31:16RW0x0cvt_scale2CVT 缩放 2(第 3 通道乘法操作数)
15:0RW0x0cvt_offset2CVT 偏移 2(第 3 通道加法操作数)

RKNN_cna_cvt_con4(0x105C)

输入转换控制 4:第 4 通道。

Bit属性复位值字段名描述
31:16RW0x0cvt_scale3CVT 缩放 3(第 4 通道乘法操作数)
15:0RW0x0cvt_offset3CVT 偏移 3(第 4 通道加法操作数)

RKNN_cna_fc_con0(0x1060)

全连接零跳过控制 0。

Bit属性复位值字段名描述
31:16RW0x0fc_skip_dataFC 零跳过数据值(通常设为 0)
15:1RO0x0保留
0RW0x0fc_skip_enFC 零跳过使能。0:禁用;1:使能。当某像素特征数据为 0 时,跳过对应权重的取数

RKNN_cna_fc_con1(0x1064)

全连接零跳过控制 1。

Bit属性复位值字段名描述
31:17RO0x0保留
16:0RW0x0data_offsetFC 零跳过模式下的特征数据偏移

RKNN_cna_pad_con0(0x1068)

Pad 控制寄存器 0。

Bit属性复位值字段名描述
31:8RO0x0保留
7:4RW0x0pad_left特征图左侧 pad 数
3:0RW0x0pad_top特征图顶部 pad 数

RKNN_cna_feature_data_addr(0x1070)

输入特征数据基址。

Bit属性复位值字段名描述
31:0RW0x0feature_base_addr特征数据地址

RKNN_cna_fc_con2(0x1074)

权重数据地址偏移。

Bit属性复位值字段名描述
31:17RO0x0保留
16:0RW0x0weight_offset权重数据地址偏移

RKNN_cna_dma_con0(0x1078)

AXI DMA 控制寄存器 0:burst 长度。

Bit属性复位值字段名描述
31RW0x0ov4k_bypass超 4K burst 拆分。0:使能(将超 4K 的 burst 拆为 2 个);1:旁路
30:20RO0x0保留
19:16RW0x0weight_burst_len权重 DMA AXI burst 长度。3:burst=4;7:burst=8;15:burst=16
15:4RO0x0保留
3:0RW0x0data_burst_len特征 DMA AXI burst 长度。编码同上

RKNN_cna_dma_con1(0x107C)

行步长(Line stride)。

Bit属性复位值字段名描述
31:28RO0x0保留
27:0RW0x0line_stride行步长。含虚拟框(Virtual box)的特征宽度

RKNN_cna_dma_con2(0x1080)

Surface 步长。

Bit属性复位值字段名描述
31:28RO0x0保留
27:0RW0x0surf_strideSurface 步长。特征图实际 surface 面积

RKNN_cna_fc_data_size0(0x1084)

FC 模式下 AXI DMA 的特征输入宽高。

Bit属性复位值字段名描述
31:30RO0x0保留
29:16RW0x0dma_widthAXI DMA 特征输入宽度
15:11RO0x0保留
10:0RW0x0dma_heightAXI DMA 特征输入高度

RKNN_cna_fc_data_size1(0x1088)

FC 模式下 AXI DMA 的特征输入通道数。

Bit属性复位值字段名描述
31:16RO0x0保留
15:0RW0x0dma_channelAXI DMA 特征输入通道数

RKNN_cna_clk_gate(0x1090)

时钟门控控制寄存器。

Bit属性复位值字段名描述
31:5RO0x0保留
4RW0x0cbuf_cs_disable_clkgateCBUF 自动时钟门控。0:使能自动门控;1:禁用 CBUF 时钟门控
3RO0x0保留
2RW0x0csc_disable_clkgateCSC 自动时钟门控。0:使能;1:禁用 CSC 时钟门控
1RW0x0cna_weight_disable_clkgate权重取数自动时钟门控。0:使能;1:禁用
0RW0x0cna_feature_disable_clkgate特征取数自动时钟门控。0:使能;1:禁用

RKNN_cna_dcomp_ctrl(0x1100)

权重解压控制寄存器。

Bit属性复位值字段名描述
31:4RO0x0保留
3RW0x0wt_dec_bypass旁路权重解压
2:0RW0x0decomp_control权重解压控制

RKNN_cna_dcomp_regnum(0x1104)

权重解压寄存器数。

Bit属性复位值字段名描述
31:0RW0x0dcomp_regnum权重解压寄存器数量

RKNN_cna_dcomp_addr0(0x1110)

权重基址。

Bit属性复位值字段名描述
31:4RW0x0decompress_addr0权重基址
3:0RO0x0保留

RKNN_cna_dcomp_amount0~15(0x1140 ~ 0x117C)

权重解压量寄存器,共 16 个,偏移 0x1140 + N×4(N = 0~15)。

Bit属性复位值字段名描述
31:0RW0x0dcomp_amountN第 N 次解压的权重数据量

RKNN_cna_cvt_con5(0x1180)

按通道 CVT 使能。

Bit属性复位值字段名描述
31:0RW0x0per_channel_cvt_en按通道使能 CVT 功能。int4 共 32 通道(128 bit),int8 共 16 通道

RKNN_cna_pad_con1(0x1184)

Pad 值寄存器。

Bit属性复位值字段名描述
31:0RW0x0pad_valuePad 填充值