基于开源处理器Rocket 的异构SoC 设计与验证
2021-03-29高营,刘德,鞠虎
高 营,刘 德,鞠 虎
(中科芯集成电路有限公司,江苏无锡 214072)
1 引言
图像处理技术的快速发展使卷积神经网络(CNN)算法得到广泛应用[1]。CNN 隐层数的增加需要硬件处理器具备更高的运算性能。当前,为加速神经网络的计算主要采用GPU 或者专用硬件加速器的方法来缓解卷积运算的压力[2]。由此,CPU 外加运算加速器的异构片上系统(SoC)是目前主要的研究热点之一。本文设计了激活函数(ReLU)和向量点积运算(VDP)硬件加速器,同开源处理器Rocket core、开源外设项目Si-Five Blocks 搭建成一个精简的异构SoC。该异构SoC 通过编译软件程序在FPGA 平台上的演示,在一定程度上表明了对CNN 加速的应用研究价值。
2 系统架构
异构SoC 的系统架构主要由Rocket core、ITCM、DTCM、SoC 总线、BootRom、SPI、UART、ReLU 协处理器和VDP 协处理器等部分构成,具体结构如图1 所示。

图1 系统结构
内存的映射关系如表1 所示。

表1 内存映射
Si-Five Blocks 中通用外设 UART、SPI 等不再详细介绍,以下主要介绍两个加速器模块:ReLU 激活函数协处理器和VDP 协处理器。
2.1 ReLU 激活函数协处理器
CNN 隐层主要包含卷积层、激活函数、池化层以及全连接层[3]。其中激活函数作为增加神经网络模型非线性的手段,在算法中起到十分重要的作用[4]。当前常用的激活函数有sigmoid 和ReLU 激活函数。相对于sigmoid 激活函数计算量较大、收敛速度慢的问题,ReLU 激活函数只需判断输入是否大于零,计算量较小、收敛速度快且更符合生物学的神经激活机制[5],其表达式如下:

可以看出ReLU 激活函数为求最大值函数,x 小于0 时函数值为0,大于0 时函数值为x 本身,具体函数如图2 所示。

图2 ReLU 函数……p>
