Nvidia的开源神经网络加速器NVDLA已经在GitHub上面存在两个多月的时间了,而距离软件Software Stack的开源也差不多提上了日程。近期,NVDLA的代码库中已经更新了System C平台和Verilator,为更为便捷快速的软件仿真也提供了支撑。

对于NVDLA的Top层与外界的接口以及工作流程,这里做一下总结。目前开源的软件代码和测试例都只是针对nv_large模式,目前已经更新为nv_full模式。NVDLA的顶层接口包括控制总线,数据总线以及时钟复位和中断信号,比较简洁。控制总线CSB遵循简单地握手协议,而数据总线则采用简化版的AXI4.0协议。

控制总线CSB,即Configuration Space Bus,主要包括请求通道,读数据通道和写响应通道,包括12组信号线,具体信号线个数与所选择的AXI总线位宽有关。

请求通道,Request Channel,主要完成CSB Master对NVDLA的读写操作。其支持简单的valid/ready握手协议,地址位宽固定为16比特,数据位宽固定为32比特,且不支持burst操作,各个读写命令之间相互独立,不支持乱序完成和发射。

读数据通道,Read Data Channel,主要返回CSB Master读请求命令的数据,valid为高时,数据有效。也不支持乱序响应。

写响应通道,Write Response Channel,也遵循valid协议,针对no-posted模式,返回写响应信号,同时也不支持乱序响应。

下图是一个简单的两写两读的时序图,第二个写操作为no-posted模式。

NVDLA提供的Testbench中CSB Mater支持的指令有7条(TPU一代支持12条指令),主要完成寄存器和存储器的读写操作,以及大片数据的加载和卸载操作等,还有一条wait指令,等待NVDLA中断的完成。

NVDLA的存储器接口比较简单,采用了简化版的AXI4.0协议,比如支持的burst类型仅为Incr类型,且burstsize也与数据位宽对齐,保持一致等。

同时为了隐藏配置NVDLA寄存器带来的延迟和增加的神经网络处理时间,NVDLA采用了ping-pong寄存器模式,在group0寄存器工作的同时,CSB Master可以配置下一层的group1寄存器。这里需要注意的是,为了简化硬件设计,NVDLA子模块间的工作时序以及启动的依赖关系,都是由软件负责,这也与TPU相类似。可见,仅流片NVDLA,是没有任何实际意义的。

这里以一个简单的全连接层测试例介绍一下NVDLA的工作流程以及所需要的文件。程序文件类似于普通的高级语言编写的C代码文件,输入数据和权值,都是NVDLA的输入,都需要从模块外面导入到加速器内部。目前NVDLA没有开源软件框架,只提供了一个Perl脚本,将源程序文件转换成可执行的二进制代码,同时将dat数据文件转换成word存储形式。依次配置完成响应子模块并使能,等待中断返回。工作流程都还算直接,只是目前阶段还无法自己设计程序和测试例。

NVDLA nv_large的功耗,MAC矩阵尺寸为64x32,大致可以作为参考,功耗的绝大部分在于时钟网络,综合结果是在40LP@200MHz下的典型库单元获得的,这里只包括动态功耗。

目前只能等待NVDLA的软件框架和工具链开源,sigh~~~。

欢迎讨论交流

研究领域包括集成电路、无线通信等,涉及深度学习加速器、SoC设计空间探索、多核任务调度和新一代无线通信系统实现;具有65nm、40nm成功流片经验,在研项目包括28nm、16nm等。

中国科学院自动化研究所国家专用集成设计工程技术研究中心

nvdla学习笔记_神经网络加速器NVDLA顶层接口与工作流程相关推荐

  1. ios客户端学习笔记(六):iOS客户端的工作流程

    iOS客户端的工作流程可以简单地概括为: 用户操作 -> 视图显示 -> 交互处理 -> 数据获取 -> 数据处理 -> 数据展示. 结合代码对每个工作流程进行更为具体. ...

  2. NVDLA学习笔记(1)

    NVDLA学习笔记(1) 作者:夏风喃喃 参考:http://nvdla.org/index.html NVIDIA 深度学习加速器 (NVDLA) 是一个免费和开放的架构,促进设计深度学习推理加速器 ...

  3. NVDLA学习笔记(2)

    NVDLA学习笔记(2) 作者:夏风喃喃 参考:http://nvdla.org/index.html 文章目录 NVDLA学习笔记(2) 硬件手册:硬件架构规范 一. 绪论 二. 功能描述 2.1 ...

  4. 系统架构师学习笔记_第六章(下)_连载

    系统架构师学习笔记_第六章(下)_连载 6.3 基于 UML 的软件开发过程 6.3.1  开发过程概述 UML 是独立于软件开发过程的,能够在几乎任何一种软件开发过程中使用.迭代的渐进式软件开发过程 ...

  5. 吴恩达《机器学习》学习笔记十一——神经网络代码

    吴恩达<机器学习>学习笔记十一--神经网络代码 数据准备 神经网络结构与代价函数· 初始化设置 反向传播算法 训练网络与验证 课程链接:https://www.bilibili.com/v ...

  6. 吴恩达《机器学习》学习笔记十——神经网络相关(2)

    吴恩达<机器学习>学习笔记十--神经网络相关(2) 一. 代价函数 二. 反向传播算法 三. 理解反向传播算法 四. 梯度检测 五. 随机初始化 1.全部初始化为0的问题 2.随机初始化的 ...

  7. 吴恩达《机器学习》学习笔记九——神经网络相关(1)

    吴恩达<机器学习>学习笔记九--神经网络相关(1) 一. 非线性假设的问题 二. 神经网络相关知识 1.神经网络的大致历史 2.神经网络的表示 3.前向传播:向量化表示 三. 例子与直觉理 ...

  8. oracle11g中用asmlib配置磁盘组,ASM学习笔记_配置ASMLIB磁盘组

    ASM学习笔记_配置ASMLIB磁盘组 目录 1 ASMLIB Introduction 2 虚拟机添加一个共享磁盘(块设备) 3 下载,安装ASMLIB 4 配置,使用ASMLib 磁盘组 #### ...

  9. MySQL学习笔记_关于MySQL的字符类型VARCHAR长度知识总结

    MySQL学习笔记_关于MySQL的字符类型VARCHAR长度知识总结 一.VARCHAR存储和行长度限制 1.VARCHAR(N)中,N指的是字符的长度,VARCHAR类型最大支持65535,指的是 ...

最新文章

  1. 信号量Semaphore一篇文章叫你明白
  2. NodeJS + Aliyun 实现 DDNS
  3. 于其炒股,不如......
  4. python入门教程共四本书籍-关于 Python 的经典入门书籍有哪些?
  5. 框架--NoHttp和OkHttp哪个好用,Volley和NoHttp哪个好用?
  6. [环境搭建]SDN网络感知服务与最短路径应用
  7. 使用CLion的时候,对于cmake的使用
  8. mysql设置不区分大小写
  9. 2021年品牌CDP与营销数字化转型报告:从自建数据资产到消费者深度运营
  10. 为什么今日头条、网易新闻都突然被强制下架了?
  11. Linux启动服务详解
  12. 利用 openresty balancer_by_lua 实现一个简单的 ip_hash upstream 调度
  13. 凤凰系统运行linux,开机引导凤凰os出grub
  14. Userscript+ 去除广告
  15. python神经网络模型调用后预测值不变_用R语言实现神经网络预测股票实例
  16. android qq分享纯图片,手机照片批量上传QQ空间一键分享省流量
  17. 使用Python进行IP地址查询
  18. Unity使用陀螺仪检测屏幕方向
  19. RDD、DataFrame、DataSet原理解析
  20. 那么普通却那么自信?浅谈元认知能力会怎样影响一个人的判断

热门文章

  1. C#开发串口小助手(可更改波特率、串口号,可实现数据以及字符的收发)
  2. Android手机的by-name文件夹
  3. 怎样录屏不带水印?分享一款无水印录制视频软件!
  4. SQL注入攻防入门详解
  5. linux下将qt打包为可执行文件
  6. PR字幕模板 霓虹灯特效火焰线条动画背景PR字幕条模板
  7. S32K144(4)LED
  8. PHP生成曲线统计图表示例,直方图等数据
  9. (转载)周鸿祎在360新员工入职培训上的讲话
  10. 计算机学院新年祝福语,学院发给职工的新年祝福短信