智能计算系统 第七章 深度学习处理器架构
智能计算系统 第七章 深度学习处理器架构
7.1 单核深度学习处理器 DLP-S
- 控制模块
- 运算模块
- 存储单元
总体架构
从DLP到DLP-S
- 计算时
- 多发射队列,支持指令级并行
- 增加运算器的操作,支持硬件高效执行的操作
- 低位宽运算器,提高执行能效
- 稀疏运算,提高计算效率
- 访存
- 转换检测缓冲器TLB,降低访存演出
- 最后一级cache,降低访存延迟
执行流程
- IFU 通过 DMA 从 DRAM 中读取程序指令,然后经过 IDU 进行译码后分发给 DMA、VFU 和 MFU
- DMA 接收到指令后从 DRAM 读取神经元至 NRAM,读取权重至 WRAM
- VFU 接收到指令后从 NRAM 中读取神经元数据,并对神经元数据进行预处理,然后发送给 MFU
- MFU 接收到指令后从 VFU 接收经过预处理的神经元数据,从 WRAM 中读取权重数据,完成矩阵运算后将结果发送给 VFU
- VFU 对输出神经元进行后处理(激活、池化等)
- VFU 将运算结果写回 NRAM
神经元数据流
DRAM→NRAM→VFU→(MFU→VFU)→NRAM→DRAM
权重数据流
DRAM→WRAM→MFU
控制模块
IFU
- 地址生成器 AGU
- 指令高速缓存 ICache
- 指令回填单元RB
- 指令队列 IQ
IDU
- 译码单元
- 指令发射队列 IQ
- 算术逻辑单元
运算模块 VFU
- 完成输入神经元的前处理和输出神经单元的后处理
- 包括向量流水单元和转置单元
- 向量流水单元承载向量运算功能
- 转置单元承载数据重新摆放功能
向量流水单元
- 多种数据类型:INT8、INT16、INT32、FP16、FP32
- 新增运算:查表、边缘扩充、数据格式转换
- 多个 stage 输入,多个 stage 输出
向量流水单元如何完成 AVGPOOLINIG
当输入数据类型是 INT 型时
- AVGPooling 本质是kx*ky向量相乘
存储单元
存储管理
- NRAM、WRAM、DMA
- 虚拟存储:片内片外同一编址
- 片内地址无虚实地址转换
- 片外地址需要虚实转换
降低访问延迟
TLB、LLC
7.2 多核深度学习处理器 DLP-M
总体架构
多核处理器分层结构设计
- 一个 DLP-M 由多个 DLP-C 构成
- 一个 DLP-C 由多个 DLP-S 构成
DLP-C
- 四个 DLP-S
- 存储核 MEMCORE
- 存储:DLP-S 共享数据
- 通信:DLP-C 与片外 DRAM、DLP-C 之间,多个 DLP-S 之间
Cluster 架构
广播总线
- 深度学习数据复用特性
- 读写请求:单播写、单播读、多播
CDMA
- 执行过程:单播写、CDMA 通信、单播读
- 访存指令:目标 Cluster号、源地址、目的地址、数据大小
多核同步模型
- BARRIER 指令:多核同步指令,解决访存冲突
- BARRIER:Opcode
- Barrier_ID:BARRIER 序号
- Task_ID:同步的任务编号
- Sync_Count:需要同步的 Barrier 数
- 双核协同指令流
互联架构
环形、网状、Torus
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment
GiscusGitalk