CN114418077A - 一种加速神经网络计算的方法、系统、设备和存储介质 - Google Patents

一种加速神经网络计算的方法、系统、设备和存储介质 Download PDF

Info

Publication number
CN114418077A
CN114418077A CN202111622580.4A CN202111622580A CN114418077A CN 114418077 A CN114418077 A CN 114418077A CN 202111622580 A CN202111622580 A CN 202111622580A CN 114418077 A CN114418077 A CN 114418077A
Authority
CN
China
Prior art keywords
parameters
convolution
neural network
cache
characteristic parameters
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202111622580.4A
Other languages
English (en)
Inventor
杨继林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd
Original Assignee
Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd filed Critical Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd
Priority to CN202111622580.4A priority Critical patent/CN114418077A/zh
Publication of CN114418077A publication Critical patent/CN114418077A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Neurology (AREA)
  • Advance Control (AREA)

Abstract

本发明提供一种加速神经网络计算的方法、系统、设备和存储介质,方法包括:响应于板卡上电,执行只读存储器中的启动代码,并检测预设地址是否已设置标志位;响应于所述预设地址已设置标志位,通过PCIe将神经网络的输入数据、模型参数和神经网络加速模块所需参数下载到DDR或SRAM中;响应于接收到调用命令,从所述DDR或SRAM中读取卷积层的特征参数和权重参数,并根据所述特征参数和权重参数进行神经网络的运算;以及响应于接收到运算完成的中断信号,通知主机任务完成。本发明以RISC‑V作为通用处理器并设计了专用的神经网络加速器,两者协同实现对神经网络的加速。

Description

一种加速神经网络计算的方法、系统、设备和存储介质
技术领域
本发明涉及神经网络领域,更具体地,特别是指一种加速神经网络计算的方法、系统、设备和存储介质。
背景技术
随着神经网络算法方面的研究不断取得重大进展,算法所需的计算量也呈指数级上升,对硬件设备的算力提出了巨大挑战。在当前摩尔定律越来越难维持的情况下,仅仅通过半导体生产工艺的进步来提升算力变得越来越不可行,在现有的工艺水平下,如何改进硬件架构对于提升算力显得愈发重要。
通用处理器的通用性限制了它们完成特殊任务时的效率,目前针对特定领域的应用需求设计专用加速器并结合通用处理器实现的异构计算方式是一种比较流行的方案。GPU的设计采用并行计算架构,包含大量运算单元,GPU强大的并行计算能力适用于神经网络计算过程中的大量并行计算,这促使GPU成为了最常见的神经网络硬件加速平台。但GPU存在功耗高、体积大的问题,性能越高的GPU功耗越高,价格越昂贵。ASIC是针对特定需求专门定制的芯片,通过设计专门的电路可以最大程度的减少计算之外的开销,从而可以达到更小的体积和更低的功耗。但ASIC需要大量的时间进行设计和验证,开发难度大,成本高。
发明内容
有鉴于此,本发明实施例的目的在于提出一种加速神经网络计算的方法、系统、计算机设备及计算机可读存储介质,本发明基于FPGA实现神经网络加速,以RISC-V作为通用处理器,设计了专用的神经网络加速器,RISC-V和加速器协同实现对神经网络的计算加速,可以充分利用FPGA可编程的特性,当算法更新时重新编程即可实现对新算法的加速,此外,RISC-V可扩展的特性提供了设计自定义指令实现差异化功能的可能。
基于上述目的,本发明实施例的一方面提供了一种加速神经网络计算的方法,包括如下步骤:响应于板卡上电,执行只读存储器中的启动代码,并检测预设地址是否已设置标志位;响应于所述预设地址已设置标志位,通过PCIe将神经网络的输入数据、模型参数和神经网络加速模块所需参数下载到DDR或SRAM中;响应于接收到调用命令,从所述DDR或SRAM中读取卷积层的特征参数和权重参数,并根据所述特征参数和权重参数进行神经网络的运算;以及响应于接收到运算完成的中断信号,通知主机任务完成。
在一些实施方式中,所述从所述DDR或SRAM中读取卷积层的特征参数和权重参数包括:通过两个读通道分别读取卷积层的特征参数和权重参数,并按照需要的顺序将所述特征参数和权重参数存入卷积缓存中。
在一些实施方式中,所述按照需要的顺序将所述特征参数和权重参数存入卷积缓存中包括:检测所述卷积缓存中是否有足够空间存储所述特征参数和权重参数;响应于所述卷积缓存中有足够空间存储所述特征参数和权重参数,产生特征参数或权重参数的读请求;将所述读请求返回的数据存入内部缓存并调整所述内部缓存中数据的顺序;以及从所述内部缓存中读出数据并产生所述卷积缓存的地址,将所述特征参数或权重参数写入所述卷积缓存,并更新记录的所述卷积缓存的状态。
在一些实施方式中,所述从所述DDR或SRAM中读取卷积层的特征参数和权重参数包括:判断卷积缓存的大小是否能够存储当前层所有的特征参数和权重参数;以及响应于卷积缓存的大小能够存储当前层所有的特征参数和权重参数,将当前层所有的特征参数和权重参数读入所述卷积缓存。
在一些实施方式中,所述从所述DDR或SRAM中读取卷积层的特征参数和权重参数包括:响应于卷积缓存的大小不能够存储当前层所有的特征参数和权重参数,判断卷积缓存的大小是否能够存储当前层所有的特征参数;以及响应于卷积缓存的大小能够存储当前层所有的特征参数,将所有的特征参数和部分权重参数读入所述卷积缓存。
在一些实施方式中,所述从所述DDR或SRAM中读取卷积层的特征参数和权重参数包括:响应于卷积缓存的大小不能够存储当前层所有的特征参数,将特征参数分成多个块;每次将一块特征参数和部分权重参数存入所述卷积缓存。
在一些实施方式中,所述根据所述特征参数和权重参数进行神经网络的运算包括:通过乘累加阵列对所述特征参数和权重参数进行卷积计算,并对计算结果进行单点处理。
本发明实施例的另一方面,提供了一种加速神经网络计算的系统,包括:内核模块,配置用于响应于板卡上电,执行只读存储器中的启动代码,并检测预设地址是否已设置标志位;主机模块,配置用于响应于所述预设地址已设置标志位,通过PCIe将神经网络的输入数据、模型参数和神经网络加速模块所需参数下载到DDR或SRAM中;神经网络加速模块,配置用于响应于接收到调用命令,从所述DDR或SRAM中读取卷积层的特征参数和权重参数,并根据所述特征参数和权重参数进行神经网络的运算;以及通知模块,配置用于响应于接收到运算完成的中断信号,通知主机任务完成。
本发明实施例的又一方面,还提供了一种计算机设备,包括:至少一个处理器;以及存储器,所述存储器存储有可在所述处理器上运行的计算机指令,所述指令由所述处理器执行时实现如上方法的步骤。
本发明实施例的再一方面,还提供了一种计算机可读存储介质,计算机可读存储介质存储有被处理器执行时实现如上方法步骤的计算机程序。
本发明具有以下有益技术效果:基于FPGA实现神经网络加速,以RISC-V作为通用处理器,设计了专用的神经网络加速器,RISC-V和加速器协同实现对神经网络的计算加速,可以充分利用FPGA可编程的特性,当算法更新时重新编程即可实现对新算法的加速,此外,RISC-V可扩展的特性提供了设计自定义指令实现差异化功能的可能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
图1为本发明提供的加速神经网络计算的方法的实施例的示意图;
图2为本发明提供的加速神经网络计算的系统的整体架构图;
图3为本发明实施例中神经网络加速模块的结果示意图;
图4为本发明实施例中卷积DMA的结构示意图;
图5为本发明实施例中乘累加阵列的结构示意图;
图6为本发明实施例中单点处理模块的结构示意图;
图7为本发明提供的加速神经网络计算的系统的实施例的示意图;
图8为本发明提供的加速神经网络计算的计算机设备的实施例的硬件结构示意图;
图9为本发明提供的加速神经网络计算的计算机存储介质的实施例的示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
本发明实施例的第一个方面,提出了一种加速神经网络计算的方法的实施例。图1示出的是本发明提供的加速神经网络计算的方法的实施例的示意图。如图1所示,本发明实施例包括如下步骤:
S1、响应于板卡上电,执行只读存储器中的启动代码,并检测预设地址是否已设置标志位;
S2、响应于所述预设地址已设置标志位,通过PCIe将神经网络的输入数据、模型参数和神经网络加速模块所需参数下载到DDR或SRAM中;
S3、响应于接收到调用命令,从所述DDR或SRAM中读取卷积层的特征参数和权重参数,并根据所述特征参数和权重参数进行神经网络的运算;以及
S4、响应于接收到运算完成的中断信号,通知主机任务完成。
FPGA(Field Programmable Gate Array,现场可编程门阵列)芯片具有可硬件编程、配置灵活性高和低能耗等优点,允许用户在短时间内对定制的设计进行评估,以此缩短开发周期,节省开发费用;并且当神经网络算法更新之后,通过重新编程就可以实现新的算法。因此,FPGA也是一种常用的神经网络加速平台。
RISC-V(一个基于精简指令集原则的开源指令集架构)是一种新兴的指令集架构,具有开源、精简、模块化、易实现、可自定义扩展指令的后发优势。RISC-V有若干扩展指令子集来完善其功能并提升性能,其中向量扩展指令集(V指令集)用来实现数据级并行,对标X86和ARM的SIMD指令。向量扩展指令集新增了多个向量寄存器和向量指令,可以让基于RISC-V架构的处理器核心处理数组,与传统的标量运算一起来加速大数据集的运算。RISC-V的灵活特性也可以很好地满足新兴市场应用场景差异化诉求。
图2示出的是本发明提供的加速神经网络计算的系统的整体架构图,结合图2对本发明实施例进行说明。
本发明实施例运行在FPGA加速卡上,主机可以是服务器或者PC机,FPGA加速卡安装在主机的PCIe插槽上。FPGA芯片内部实现了PCIe桥接模块、RISC-V内核、DMA控制器、神经网络加速模块、DDR(双倍速率同步动态随机存储器)控制器、SRAM(Static Random AccessMemory,静态随机存取存储器)、ROM(Read Only Memory,只读存储器)、系统管理模块、JTAG2AHB模块和串口模块,上述模块通过片上网络互联。
本发明实施例中的RISC-V内核是64位的内核,除支持IMAFDC指令子集之外还支持向量扩展指令集(V指令集),向量寄存器的位宽是512bit(比特),单周期的计算能力是256bit。对外接口方面,RISC-V内核提供了两个存储器接口、一个外设接口和外部中断接口。两个存储器接口都可以实现高速数据传输,其中一个是cacheable(可缓存)的接口,本发明实施例中用来访问DDR;另一个是non-cacheable的接口,本发明实施例中用来访问SRAM;外设接口用来实现对低速设备的访问,本发明实施例中用来访问神经网络加速模块的寄存器;中断接口用来接收其他模块发出的中断信号。对神经网络加速器模块的控制主要由RISC-V内核实现,首先RISC-V内核通过配置寄存器为神经网络加速模块提供运行所需的参数并启动该模块,神经网络加速模块完成计算任务之后会发出中断,RISC-V内核接收到中断之后进入中断服务程序中做下一步处理。
响应于板卡上电,执行只读存储器中的启动代码,并检测预设地址是否已设置标志位。板卡上电之后RISC-V内核执行ROM中的boot code(启动代码),最终会停留在轮询SRAM中特定地址FLAG_ADDR是否已设置了特定的标志位FLAG;在此期间主机将板卡识别为PCIe设备之后会通过PCIe接口将固件下载到板卡上的SRAM中,并向FLAG_ADDR写入FLAG。
响应于所述预设地址已设置标志位,通过PCIe将神经网络的输入数据、模型参数和神经网络加速模块所需参数下载到DDR或SRAM中。RISC-V内核检测到FLAG_ADDR被写入FLAG之后会校验固件的完整性;如果完整性检查通过则开始执行固件,如果不通过则清除FLAG_ADDR处的标志并继续轮询。主机通过PCIe将神经网络的输入数据、模型参数和神经网络加速模块所需的参数下载到DDR或者SRAM中。主机向系统管理模块中的第一软件中断寄存器写1,通知RISC-V内核可以启动任务。
响应于接收到调用命令,从所述DDR或SRAM中读取卷积层的特征参数和权重参数,并根据所述特征参数和权重参数进行神经网络的运算。RISC-V内核执行主机下发的任务,如果需要调用神经网络加速模块则从DDR或SRAM中读取所需的参数并配置神经网络加速模块,加速模块完成任务之后向RISC-V发出中断。
图3示出的是本发明实施例中神经网络加速模块的结果示意图,结合图3对神经网络加速模块进行说明。APB接口是其他模块访问加速模块内部寄存器的接口,RISC-V内核可以通过该接口配置加速模块内部的寄存器,以此控制加速模块的运行。中断接口用来反馈加速模块的运行状态,本发明实施例中连接到RISC-V内核的外部中断接口。DRAM接口和SRAM接口采用AXI接口,分别连接片外DDR和片上SRAM。地址仲裁模块实现APB信号的地址仲裁,将每一次APB访问分发到具体的子模块。中断处理模块接收各子模块的状态信号并产生中断。接口转换模块将内部自定义的接口转换为AXI接口以访问存储器。卷积DMA模块、卷积buffer模块、卷积序列控制器和乘累加阵列共同完成卷积运算,实现对神经网络卷积层的加速;单点处理模块对卷积的输出进行单点处理,实现激活、batchnorm、element-wise运算、数据位宽转换等运算。
在一些实施方式中,所述从所述DDR或SRAM中读取卷积层的特征参数和权重参数包括:通过两个读通道分别读取卷积层的特征参数和权重参数,并按照需要的顺序将所述特征参数和权重参数存入卷积缓存中。
图4示出的是本发明实施例中卷积DMA的结构示意图,卷积DMA(Direct MemoryAccess,直接存储器存取)的功能是从DDR或SRAM中读取卷积层的输入feature(特征参数)和weight(权重参数)并按照需要的顺序存入卷积buffer(缓存)。为了提高数据读取的效率,设计了两个读通道分别读取feature和weight。
在一些实施方式中,所述按照需要的顺序将所述特征参数和权重参数存入卷积缓存中包括:检测所述卷积缓存中是否有足够空间存储所述特征参数和权重参数;响应于所述卷积缓存中有足够空间存储所述特征参数和权重参数,产生特征参数或权重参数的读请求;将所述读请求返回的数据存入内部缓存并调整所述内部缓存中数据的顺序;以及从所述内部缓存中读出数据并产生所述卷积缓存的地址,将所述特征参数或权重参数写入所述卷积缓存,并更新记录的所述卷积缓存的状态。
Feature读取模块和weight读取模块的工作流程基本一致:首先检查卷积buffer的状态,如果有足够的剩余空间则产生feature或weight的读请求,收到返回的数据之后将其存入内部buffer并调整内部buffer中数据的顺序,然后从内部buffer中读出数据、产生写卷积buffer的地址并将feature或weight写入卷积buffer,最后更新记录的卷积buffer状态。
在一些实施方式中,所述从所述DDR或SRAM中读取卷积层的特征参数和权重参数包括:判断卷积缓存的大小是否能够存储当前层所有的特征参数和权重参数;以及响应于卷积缓存的大小能够存储当前层所有的特征参数和权重参数,将当前层所有的特征参数和权重参数读入所述卷积缓存。
在一些实施方式中,所述从所述DDR或SRAM中读取卷积层的特征参数和权重参数包括:响应于卷积缓存的大小不能够存储当前层所有的特征参数和权重参数,判断卷积缓存的大小是否能够存储当前层所有的特征参数;以及响应于卷积缓存的大小能够存储当前层所有的特征参数,将所有的特征参数和部分权重参数读入所述卷积缓存。
在一些实施方式中,所述从所述DDR或SRAM中读取卷积层的特征参数和权重参数包括:响应于卷积缓存的大小不能够存储当前层所有的特征参数,将特征参数分成多个块;每次将一块特征参数和部分权重参数存入所述卷积缓存。
卷积buffer的功能是存储卷积DMA读出的feature和weight,并供后级模块读取。具体实现时卷积buffer采用多BANK的SRAM实现,容量可以根据不同网络各层的数据量设置为一个中间值,feature和weight占用的存储空间可以配置。本发明实施例中为feature和weight分别设计了单独的读写端口,可以实现并行读写。如果当前层feature和weight的大小比较小,卷积buffer可以存储整层的feature和weight,此时可以将整层的feature和weight全部读入卷积buffer;如果无法存储整层的feature和weight,而且feature的大小比较小,weight的大小比较大,可以在卷积buffer中存储整层的feature和部分weight,此时需要多次更新weight之后才能处理完一整层;如果卷积buffer无法存储整层的feature,则需要将feature分为若干个块,每次将一块feature和部分weight存入卷积buffer,这样就需要更新多次feature和weight才能完成一整层的运算。
卷积序列控制器从卷积buffer中读取feature和weight,并发送给后级的乘累加阵列。卷积序列控制器包括三个子模块:卷积时序产生模块、feature加载模块和weight加载模块。卷积时序产生模块生成控制卷积操作的序列,该模块会不断查询卷积buffer的状态,当有足够的feature和weight时会生成加载feature和weight的命令并存入内部FIFO(First In,First Out,先进先出队列),当feature加载模块和weight加载模块可以执行加载任务时从FIFO中取出命令并发送到这两个模块。Feature加载模块和weight加载模块的结构类似,它们接收卷积时序生成模块产生的命令,从卷积buffer中读取feature或weight并将其发送到后级模块。
在一些实施方式中,所述根据所述特征参数和权重参数进行神经网络的运算包括:通过乘累加阵列对所述特征参数和权重参数进行卷积计算,并对计算结果进行单点处理。
图5示出的是本发明实施例中乘累加阵列的结构示意图。乘累加阵列接收卷积序列控制器输出的feature和weight,乘加器阵列执行乘加运算产生卷积的部分和,将其存入部分和缓存并由累加器阵列执行进一步的累加运算产生卷积的最终结果,卷积结果缓存之后输出给后级模块。乘加器和累加器的数量可以根据算力需求设置。该模块输入的feature和weight是8bit数,输出为32bit数。
图6示出的是本发明实施例中单点处理模块的结构示意图。单点处理模块对卷积模块输出的单点数据进行后处理,实现的功能如下:加偏置、实现常见的激活函数(Relu、PRelu、LeakyRelu、sigmoid函数、tanh函数)、实现batchnorm、实现element-wise乘和加运算,此外该模块还能进行位宽转换将卷积输出的32bit数据转换为8bit数据输出。加偏置、线性激活函数(Relu、PRelu、LeakyRelu)、batchnorm以及element-wise运算都可以归结为乘和加运算,模块中设计了乘法器组和加法器组实现上述功能,乘法器和加法器的数量可以根据卷积的计算并行度设置。非线性激活函数(sigmoid函数、tanh函数)通过查找表实现,查找表的深度根据所需的精度设置,因为非线性激活函数相对不常见,计算并行度可以适当减小。数据读入模块的功能是从DDR或SRAM中读取单点运算的参数;加法器组和乘法器组分别实现加法和乘法运算;查找表实现非线性激活函数;位宽转换模块将数据转换为8bit输出;数据写出模块将计算结果写入DDR或SRAM。
响应于接收到运算完成的中断信号,通知主机任务完成。RISC-V判断已经执行完主机下发的任务之后向系统管理模块中的第二软件中断寄存器写1通知主机任务已完成;主机通过PCIe从DDR或SRAM中取回运算结果。
PCIe桥接模块的功能是将PCIe接口转换为AXI接口和AXI-Lite接口,其中AXI接口用于实现大量数据的高速传输,为了进一步提高数据传输的效率,支持DMA传输模式;AXI-Lite接口用于实现少量数据的低速传输,本发明实施例中将AXI-Lite接口连接到片上网络,由片上网络将其转换为APB或AHB接口实现对系统中其他模块的配置。另外,PCIe桥接模块还可以接收系统中其他模块向主机发出的中断并将其转换为PCIe中断,以此向主机反馈状态。
DMA控制器的功能是实现片外DDR和片上SRAM之间的数据搬移,例化通用DMA控制器IP实现。神经网络的输入图像和处理结果通常存储在DDR中,但是DDR的带宽和延迟不足以为加速模块内部的计算单元实时提供足够的数据,因此设计了SRAM接口连接到高带宽低延迟的片上SRAM。为了利用片上SRAM,需要实现数据在DDR和SRAM之间的搬移,为此添加了DMA控制器。具体应用时可以由RISC-V内核将每次传输的源地址、目的地址和数据量等参数先全部配置好,然后启动数据传输,DMA控制器会自动读取参数并完成所有的数据传输,之后DMA控制器向RISC-V内核发出中断,RISC-V在中断服务程序中执行后续的步骤。
DDR控制器例化FPGA厂商提供的IP实现,通过该模块访问板卡上的DDR器件;该模块连接到片上互联网络,其他模块可以共享DDR的存储空间。SRAM是高速低延迟但容量较小的存储空间,采用FPGA芯片内部的BRAM或URAM实现,对外接口采用AXI接口。除作为神经网络加速模块的存储空间以外,SRAM还用来存储firmware以及RISC-V配置神经网络加速模块时所需的参数。ROM用来存储RISC-V的boot code,接口采用AXI接口。
系统管理模块的功能是处理系统中的时钟和复位信号,包括时钟分频倍频、产生对应的复位信号;此外该模块中还设计了两个软件中断寄存器来产生主机和板卡上RISC-V内核之间的中断,当主机向第一软件中断寄存器写入1时就会向RISC-V发出一个中断,当RISC-V向第二软件中断寄存器写入1时就会向主机发出一个中断,通过这种方式实现主机与板卡的协同。
JTAG2AHB和串口模块的作用是实现调试功能,JTAG2AHB提供了通过板卡上的JTAG口访问系统中各模块内部寄存器的通路,以此可以实现对相应模块的控制;在应用程序中可以调用串口打印信息,是一种辅助的调试手段。
本发明实施例基于FPGA实现神经网络加速,以RISC-V作为通用处理器,设计了专用的神经网络加速器,RISC-V和加速器协同实现对神经网络的计算加速,可以充分利用FPGA可编程的特性,当算法更新时重新编程即可实现对新算法的加速,此外,RISC-V可扩展的特性提供了设计自定义指令实现差异化功能的可能。
需要特别指出的是,上述加速神经网络计算的方法的各个实施例中的各个步骤均可以相互交叉、替换、增加、删减,因此,这些合理的排列组合变换之于加速神经网络计算的方法也应当属于本发明的保护范围,并且不应将本发明的保护范围局限在实施例之上。
基于上述目的,本发明实施例的第二个方面,提出了一种加速神经网络计算的系统。如图7所示,系统200包括如下模块:内核模块,配置用于响应于板卡上电,执行只读存储器中的启动代码,并检测预设地址是否已设置标志位;主机模块,配置用于响应于所述预设地址已设置标志位,通过PCIe将神经网络的输入数据、模型参数和神经网络加速模块所需参数下载到DDR或SRAM中;神经网络加速模块,配置用于响应于接收到调用命令,从所述DDR或SRAM中读取卷积层的特征参数和权重参数,并根据所述特征参数和权重参数进行神经网络的运算;以及通知模块,配置用于响应于接收到运算完成的中断信号,通知主机任务完成。
在一些实施方式中,所述神经网络加速模块配置用于:通过两个读通道分别读取卷积层的特征参数和权重参数,并按照需要的顺序将所述特征参数和权重参数存入卷积缓存中。
在一些实施方式中,所述神经网络加速模块还配置用于:检测所述卷积缓存中是否有足够空间存储所述特征参数和权重参数;响应于所述卷积缓存中有足够空间存储所述特征参数和权重参数,产生特征参数或权重参数的读请求;将所述读请求返回的数据存入内部缓存并调整所述内部缓存中数据的顺序;以及从所述内部缓存中读出数据并产生所述卷积缓存的地址,将所述特征参数或权重参数写入所述卷积缓存,并更新记录的所述卷积缓存的状态。
在一些实施方式中,所述神经网络加速模块还配置用于:判断卷积缓存的大小是否能够存储当前层所有的特征参数和权重参数;以及响应于卷积缓存的大小能够存储当前层所有的特征参数和权重参数,将当前层所有的特征参数和权重参数读入所述卷积缓存。
在一些实施方式中,所述神经网络加速模块还配置用于:响应于卷积缓存的大小不能够存储当前层所有的特征参数和权重参数,判断卷积缓存的大小是否能够存储当前层所有的特征参数;以及响应于卷积缓存的大小能够存储当前层所有的特征参数,将所有的特征参数和部分权重参数读入所述卷积缓存。
在一些实施方式中,所述神经网络加速模块还配置用于:响应于卷积缓存的大小不能够存储当前层所有的特征参数,将特征参数分成多个块;每次将一块特征参数和部分权重参数存入所述卷积缓存。
在一些实施方式中,所述神经网络加速模块还配置用于:通过乘累加阵列对所述特征参数和权重参数进行卷积计算,并对计算结果进行单点处理。
基于上述目的,本发明实施例的第三个方面,提出了一种计算机设备,包括:至少一个处理器;以及存储器,存储器存储有可在处理器上运行的计算机指令,指令由处理器执行以实现如下步骤:S1、响应于板卡上电,执行只读存储器中的启动代码,并检测预设地址是否已设置标志位;S2、响应于所述预设地址已设置标志位,通过PCIe将神经网络的输入数据、模型参数和神经网络加速模块所需参数下载到DDR或SRAM中;S3、响应于接收到调用命令,从所述DDR或SRAM中读取卷积层的特征参数和权重参数,并根据所述特征参数和权重参数进行神经网络的运算;以及S4、响应于接收到运算完成的中断信号,通知主机任务完成。
在一些实施方式中,所述从所述DDR或SRAM中读取卷积层的特征参数和权重参数包括:通过两个读通道分别读取卷积层的特征参数和权重参数,并按照需要的顺序将所述特征参数和权重参数存入卷积缓存中。
在一些实施方式中,所述按照需要的顺序将所述特征参数和权重参数存入卷积缓存中包括:检测所述卷积缓存中是否有足够空间存储所述特征参数和权重参数;响应于所述卷积缓存中有足够空间存储所述特征参数和权重参数,产生特征参数或权重参数的读请求;将所述读请求返回的数据存入内部缓存并调整所述内部缓存中数据的顺序;以及从所述内部缓存中读出数据并产生所述卷积缓存的地址,将所述特征参数或权重参数写入所述卷积缓存,并更新记录的所述卷积缓存的状态。
在一些实施方式中,所述从所述DDR或SRAM中读取卷积层的特征参数和权重参数包括:判断卷积缓存的大小是否能够存储当前层所有的特征参数和权重参数;以及响应于卷积缓存的大小能够存储当前层所有的特征参数和权重参数,将当前层所有的特征参数和权重参数读入所述卷积缓存。
在一些实施方式中,所述从所述DDR或SRAM中读取卷积层的特征参数和权重参数包括:响应于卷积缓存的大小不能够存储当前层所有的特征参数和权重参数,判断卷积缓存的大小是否能够存储当前层所有的特征参数;以及响应于卷积缓存的大小能够存储当前层所有的特征参数,将所有的特征参数和部分权重参数读入所述卷积缓存。
在一些实施方式中,所述从所述DDR或SRAM中读取卷积层的特征参数和权重参数包括:响应于卷积缓存的大小不能够存储当前层所有的特征参数,将特征参数分成多个块;每次将一块特征参数和部分权重参数存入所述卷积缓存。
在一些实施方式中,所述根据所述特征参数和权重参数进行神经网络的运算包括:通过乘累加阵列对所述特征参数和权重参数进行卷积计算,并对计算结果进行单点处理。
如图8所示,为本发明提供的上述加速神经网络计算的计算机设备的一个实施例的硬件结构示意图。
以如图8所示的装置为例,在该装置中包括一个处理器301以及一个存储器302。
处理器301和存储器302可以通过总线或者其他方式连接,图8中以通过总线连接为例。
存储器302作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本申请实施例中的加速神经网络计算的方法对应的程序指令/模块。处理器301通过运行存储在存储器302中的非易失性软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现加速神经网络计算的方法。
存储器302可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据加速神经网络计算的方法的使用所创建的数据等。此外,存储器302可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器302可选包括相对于处理器301远程设置的存储器,这些远程存储器可以通过网络连接至本地模块。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
一个或者多个加速神经网络计算的方法对应的计算机指令303存储在存储器302中,当被处理器301执行时,执行上述任意方法实施例中的加速神经网络计算的方法。
执行上述加速神经网络计算的方法的计算机设备的任何一个实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。
本发明还提供了一种计算机可读存储介质,计算机可读存储介质存储有被处理器执行时执行加速神经网络计算的方法的计算机程序。
如图9所示,为本发明提供的上述加速神经网络计算的计算机存储介质的一个实施例的示意图。以如图9所示的计算机存储介质为例,计算机可读存储介质401存储有被处理器执行时执行如上方法的计算机程序402。
最后需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,加速神经网络计算的方法的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,程序的存储介质可为磁碟、光盘、只读存储记忆体(ROM)或随机存储记忆体(RAM)等。上述计算机程序的实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。
以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。

Claims (10)

1.一种加速神经网络计算的方法,其特征在于,包括如下步骤:
响应于板卡上电,执行只读存储器中的启动代码,并检测预设地址是否已设置标志位;
响应于所述预设地址已设置标志位,通过PCIe将神经网络的输入数据、模型参数和神经网络加速模块所需参数下载到DDR或SRAM中;
响应于接收到调用命令,从所述DDR或SRAM中读取卷积层的特征参数和权重参数,并根据所述特征参数和权重参数进行神经网络的运算;以及
响应于接收到运算完成的中断信号,通知主机任务完成。
2.根据权利要求1所述的方法,其特征在于,所述从所述DDR或SRAM中读取卷积层的特征参数和权重参数包括:
通过两个读通道分别读取卷积层的特征参数和权重参数,并按照需要的顺序将所述特征参数和权重参数存入卷积缓存中。
3.根据权利要求2所述的方法,其特征在于,所述按照需要的顺序将所述特征参数和权重参数存入卷积缓存中包括:
检测所述卷积缓存中是否有足够空间存储所述特征参数和权重参数;
响应于所述卷积缓存中有足够空间存储所述特征参数和权重参数,产生特征参数或权重参数的读请求;
将所述读请求返回的数据存入内部缓存并调整所述内部缓存中数据的顺序;以及
从所述内部缓存中读出数据并产生所述卷积缓存的地址,将所述特征参数或权重参数写入所述卷积缓存,并更新记录的所述卷积缓存的状态。
4.根据权利要求1所述的方法,其特征在于,所述从所述DDR或SRAM中读取卷积层的特征参数和权重参数包括:
判断卷积缓存的大小是否能够存储当前层所有的特征参数和权重参数;以及
响应于卷积缓存的大小能够存储当前层所有的特征参数和权重参数,将当前层所有的特征参数和权重参数读入所述卷积缓存。
5.根据权利要求4所述的方法,其特征在于,所述从所述DDR或SRAM中读取卷积层的特征参数和权重参数包括:
响应于卷积缓存的大小不能够存储当前层所有的特征参数和权重参数,判断卷积缓存的大小是否能够存储当前层所有的特征参数;以及
响应于卷积缓存的大小能够存储当前层所有的特征参数,将所有的特征参数和部分权重参数读入所述卷积缓存。
6.根据权利要求5所述的方法,其特征在于,所述从所述DDR或SRAM中读取卷积层的特征参数和权重参数包括:
响应于卷积缓存的大小不能够存储当前层所有的特征参数,将特征参数分成多个块;每次将一块特征参数和部分权重参数存入所述卷积缓存。
7.根据权利要求1所述的方法,其特征在于,所述根据所述特征参数和权重参数进行神经网络的运算包括:
通过乘累加阵列对所述特征参数和权重参数进行卷积计算,并对计算结果进行单点处理。
8.一种加速神经网络计算的系统,其特征在于,包括:
内核模块,配置用于响应于板卡上电,执行只读存储器中的启动代码,并检测预设地址是否已设置标志位;
主机模块,配置用于响应于所述预设地址已设置标志位,通过PCIe将神经网络的输入数据、模型参数和神经网络加速模块所需参数下载到DDR或SRAM中;
神经网络加速模块,配置用于响应于接收到调用命令,从所述DDR或SRAM中读取卷积层的特征参数和权重参数,并根据所述特征参数和权重参数进行神经网络的运算;以及
通知模块,配置用于响应于接收到运算完成的中断信号,通知主机任务完成。
9.一种计算机设备,其特征在于,包括:
至少一个处理器;以及
存储器,所述存储器存储有可在所述处理器上运行的计算机指令,所述指令由所述处理器执行时实现权利要求1-7任意一项所述方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-7任意一项所述方法的步骤。
CN202111622580.4A 2021-12-28 2021-12-28 一种加速神经网络计算的方法、系统、设备和存储介质 Pending CN114418077A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111622580.4A CN114418077A (zh) 2021-12-28 2021-12-28 一种加速神经网络计算的方法、系统、设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111622580.4A CN114418077A (zh) 2021-12-28 2021-12-28 一种加速神经网络计算的方法、系统、设备和存储介质

Publications (1)

Publication Number Publication Date
CN114418077A true CN114418077A (zh) 2022-04-29

Family

ID=81268875

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111622580.4A Pending CN114418077A (zh) 2021-12-28 2021-12-28 一种加速神经网络计算的方法、系统、设备和存储介质

Country Status (1)

Country Link
CN (1) CN114418077A (zh)

Similar Documents

Publication Publication Date Title
CN106940815B (zh) 一种可编程卷积神经网络协处理器ip核
CN111176727B (zh) 计算装置以及计算方法
CN107301455B (zh) 用于卷积神经网络的混合立方体存储系统及加速计算方法
US11967952B2 (en) Electronic system including FPGA and operation method thereof
CN112633505B (zh) 一种基于risc-v的人工智能推理方法和系统
WO2022161318A1 (zh) 数据处理装置、方法及相关产品
WO2021115208A1 (zh) 神经网络处理器、芯片和电子设备
US11403104B2 (en) Neural network processor, chip and electronic device
CN113312303B (zh) 处理器微架构系统、SoC芯片及低功耗智能设备
CN104778148A (zh) 基于fpga的动态可重构嵌入式数据协处理平台及采用该平台实现的数据处理方法
WO2022142479A1 (zh) 一种硬件加速器、数据处理方法、系统级芯片及介质
CN111860773B (zh) 处理装置和用于信息处理的方法
CN114356840A (zh) 具有存内/近存计算模块的SoC系统
EP4292018A1 (en) Techniques for accelerating neural networks
CN111091181A (zh) 卷积处理单元、神经网络处理器、电子设备及卷积运算方法
WO2021115149A1 (zh) 神经网络处理器、芯片和电子设备
US20190272460A1 (en) Configurable neural network processor for machine learning workloads
CN111158757B (zh) 并行存取装置和方法以及芯片
CN114418077A (zh) 一种加速神经网络计算的方法、系统、设备和存储介质
JP7250953B2 (ja) データ処理装置、及び人工知能チップ
Liang et al. Design of 16-bit fixed-point CNN coprocessor based on FPGA
Qiu et al. An FPGA‐Based Convolutional Neural Network Coprocessor
CN111126586A (zh) 数据通信电路、电子设备和数据通信方法
CN215182115U (zh) 一种基于fpga的nvdla人工智能芯片硬件系统
CN113298236B (zh) 基于数据流结构的低精度神经网络计算装置及加速方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination