NVDLA硬件信号和架构设计整理三


前言

本系列内容力求将nvdla的硬件设计和架构分析理清楚,如果有分析不对的请指出。
架构分析系列文章,链接分别如下:
架构开篇介绍文章:NVDLA内核态驱动代码整理三
系列文章1:NVDLA硬件信号和架构设计整理一
系列文章2:NVDLA硬件信号和架构设计整理二

欢迎持续关注我对内核态代码的解读,链接分别如下:
系列文章1:NVDLA内核态驱动代码整理一
系列文章2:NVDLA内核态驱动代码整理二
系列文章3:NVDLA内核态驱动代码整理三
系列文章4:NVDLA内核态驱动代码整理四
系列文章5:NVDLA内核态驱动代码整理五
系列文章6:NVDLA内核态驱动代码整理六


我们还是老规矩,把系列文章3:NVDLA内核态驱动代码整理三中的架构图搬出来:
在这里插入图片描述
note:本文中的激活值、特征、特征值、输入、ACT均指向同一内容,不做区分。接下来就稍微轻松很多,这一篇也相对比较水~

一、Single Point Data Processor

以下主要展开功能,而不是硬件设计,且功能的硬件实现较为简单,咱就从官网截个图意思意思。

1.1 Bias Addition

在这里插入图片描述

1.2 Non-Linear Function

在这里插入图片描述
注意,ReLU的硬件实现简单,对于Sigmoid,则需要依靠查找表来实现了。具体细节可以找官网对LUT编程的介绍。

1.3 Batch Normalization

在这里插入图片描述

1.4 Element-Wise Layer

在这里插入图片描述

1.5 PReLU

在这里插入图片描述

1.6 Format Conversion

在这里插入图片描述
关于SDP硬件支持的格式转化Table 30如下:
在这里插入图片描述
关于Convolution硬件支持的格式转化Table 29如下:
在这里插入图片描述

1.7 Comparison

在这里插入图片描述

1.8 Function Description

以上热身环节结束!接下来开始详细介绍SDP的架构设计!
在这里插入图片描述
架构中的若干子模块功能如下:

1、Block M is used to select input data from MEM or Conv Core, which can be set from register.
# Block M被用于选择借由M-RDMA传输过来的input data或者Conv Core传输过来的input data,选择过程由2-1 Mux实现。

2、Block X1/X2 have the same architecture and supports: Bias addition, BatchNorm, PReLU, ReLU, Eltwise.
# Block X1/X2有相同的架构并且支持 Bias Addition、BN、PReLU、ReLU、Element-Wise等操作。

3、Block Y is primarily designed for element-wise, but it’s also able to support Bias addition, PReLU. An extra LUT operation which can be selected before output to implement any non-linear operation.
# Block Y主要是为Element-Wise准备,但同时也支持Bias Addition、PReLU。同时有LUT来实现非线性操作。

4、Block C1/C2 is for additional scaling and offset to save bits while keeping accuracy high.
# Block C1/C2支持额外的扩展和补偿来实现bit-save,同时保持模型精度足够高。

5、A Demux on the very end to send the output data to either WDMA for writing back to memory, or to PDP for a subsequent pooling operation.
# 最后的2-1 Mux则用于WDMA或者PDP。

这里的RDMA应该是指Remote DMA,架构中大量存在可配置的bypass,从而软件可以根据层的计算需要来决定是否编程。
在这里插入图片描述
接下来补充各种工作模式的配置情况:
在这里插入图片描述
在这里插入图片描述

1.9 Buffer Size Estimation

单个数据处理子单元中主要有3个缓冲区:激活块中的LUT读DMA缓冲区写DMA缓冲区LUT大小为(65+ 257) *2(BPE) = 644Bytes。对于M块中的读DMA缓冲区,需要考虑两个约束来确定其大小:1、内部SRAM访问延迟,延迟预计约为128个周期。 2、接入带宽,每个部分特征数据元素为16位,SDP每个周期需要处理16个元素,因此所需带宽为32字节。因此读DMA缓冲区大小为128×32=4KB

1.10 Power Consideration

Element-Wise/BatchNorm操作并不总是包含在给定网络中。 因此,对于这些操作,BS/BN/EW 未完全运行,因此使用了时钟门控。

二、Planar Data Processor

PDPNVDLA内部负责池化操作的单元。下面的示意图显示了PDP子单元的内部块,以及与其他单元和子单元的连接。PDP子单元从SDPMCIF/SRMIF接收数据,并将数据发送到MCIF/SRAMIF
在这里插入图片描述
有点纳闷儿,就是PDP的架构的输入来源可以是存储,也可以是SDP,按照之前的架构图,输出目的可以是存储,也可以是CDP。但是此图并没有考虑输出数据送到CDP的功能。
PDP是怎么实现最大/最小、均值的池化?

1、如果输入数据元素是池化核的第一个元素,它将被存储到Share Line Buffer。Share Line Buffer中
的数据被称为部分结果。如果输入数据元素既不是池化核的第一个元素也不是最后一个元素,则将使用Share 
Line Buffer中现有的部分结果对其进行操作,并将结果存储到原始部分结果的同一个entry中。部分结果
计算在Pre-Processing中完成。

# 其中,在最大/最小池化方案的情况下,部分结果是输入元素和原始部分结果的最大/最小值。

# 其中,在均值池方案的情况下,部分结果是输入元素与原始部分结果之和。

2、如果输入数据元素是池化核的最后一个元素,则它将与Share Line Buffer中现有的部分结果进行操作
以生成预最终结果。Post-Processing将从Share Line Buffer中获取预最终结果,并在正确操作后生成
最终结果。最终结果被发送到SRAMIF或MCIF。

2.1 Buffer Size Estimation

在这里插入图片描述
首先,shared_line_buffer以能够存放下pooling结果的一个整行为基础,因此公式中第一项为输出data cube的宽度。在列方向要求一定的深度,主要是为了一次从SDP输入的数据能够完整地得到计算。但实际上现有的目标检测方案中的池化操作并不复杂,因此NVDLAPDP设计显然是过时的。

2.2 Power Consideration

PDP有相应的时钟门控。

三、Cross Channel Data Processor

CDP专门用于LRN归一化,其输入和输出的对象均为外部存储器。
在这里插入图片描述
LRN计算公式如下:
在这里插入图片描述
CDP的计算可以通过LUT来实现。

3.1 Buffer Size Estimation

cdp主要有3个缓冲区:激活块中的LUT读DMA缓冲区写DMA缓冲区LUT大小与SDP相同(644B)。对于读DMA缓冲区,确定其大小有两个约束。1、内存系统访问延迟,假设为128个周期。2、接入带宽,峰值性能情况是每个周期8个字节(int8中8个元素,int16/fp16中4个元素),因此读DMA缓冲区大小为128×8=1KB

3.2 Power Consideration

PDP一样,有时钟门控设计。

四、RUBIK

RUBIK模块用于变换Feature Data Cube,主要有三种工作模式:ContractSplitMerge
架构如下:
在这里插入图片描述

4.1 Contract

涉及到反卷积,因为不用,咱不提了。有兴趣的uu可以去看官网介绍!

4.2 Split and Merge

还是做一件NCHW合并和拆解的事儿~具体字节数等到后续分析RTL代码的时候再说!
在这里插入图片描述

4.3 Power Consideration

和前面的模块一样,设置了门控时钟。

五、Result Statistics

在这里插入图片描述

六、Pipelines of NVDLA core

在这里插入图片描述


总结

这篇博客是对Unit Description解释的后半篇。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DentionY

谢谢您的支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值