1.本发明涉及人工智能领域,尤其是涉及了一种神经网络处理器仿真评估方法、系统、电子设备及介质。
背景技术:2.深度学习在目标检测、人脸识别、自动驾驶、文字识别等领域得到越来越广泛的应用。其中,人工神经网络(artificial neural network,ann)。是从信息处理角度对人脑神经元网络进行抽象,建立某种模型,按不同的连接方式组成不同的网络。
3.神经网络处理器为提高神经网络的数据处理速度专门设计的处理器。由于神经网络处理器可以提高神经网络的数据处理速度,可以减少处理数据量大导致的延时,进而可以服务于一些实时性要求相对较高的应用场景,因此深受研究人员和开发人员的关注。其中,在神经网络处理器的设计开发和生产制造的过程,需要对神经网络处理器进行测试,为神经网络处理器研究与生产提供性能参考。
技术实现要素:4.本发明提出一种神经网络处理器仿真评估方法、系统、电子设备及介质,有利于快速获取神经网络处理器的性能。
5.第一方面,提供一种神经网络处理器仿真评估方法,其中,包括:获取神经网络处理器的数据资料,所述神经网络处理器的数据资料包括第一电路的数据资料和第二电路的数据资料,其中,所述第一电路与所述第二电路为异构电路;根据所述第一电路的数据资料对所述第一电路的功能进行仿真评估;根据所述第二电路的数据资料对所述第二电路的功能进行仿真评估;将所述第一电路和所述第二电路组成综合电路,并对所述综合电路进行仿真评估,其中,所述综合电路中所述第一电路和所述第二电路连接。
6.其中的一个实施方式中,所述的神经网络处理器仿真评估方法,其中,神经网络处理器为fpga,第一电路为串行处理电路,第二电路为并行处理电路,第一电路的数据资料为基于硬件描述语言的电路设计数据资料,第二电路的数据资料为基于硬件构造语言的电路设计数据资料,其中,所述硬件构造语言为支持参数化生成器的硬件构造语言。
7.其中的一个实施方式中,所述的神经网络处理器仿真评估方法,其中,所述获取神经网络处理器的数据资料,包括:构建神经网络处理器电路,并根据神经网络处理器电路确定神经网络处理器的数据资料;其中,所述神经网络处理器电路,包括:处理模块,用于根据输入特征值与输入权重值进行融合得到中间特征值,其中,所述处理模块包括呈阵列结构排布的多个处理单元,所述阵列结构为具有行、列、通道三个维度的阵列结构;
累加模块,与所述处理模块连接,用于根据所述中间特征值进行累加得到累加结果;激活模块,与所述累加模块连接,用于根据所述累加结果进行激活处理得到输出特征值;存储模块,与所述激活模块、所述处理模块分别连接,用于存储输入特征值、输入权重值以及输出特征值;其中,所述存储模块与各个所述处理单元分别连接;和/或,所述存储模块与所述阵列结构最后一行和第一列的各个处理单元分别连接,且通道序号相同、行序号相同、列序号相邻的两个所述处理单元之间相互连接,以及通道序号相同、行序号相邻、列序号相邻的两个所述处理单元之间按照行序号减小和列序号增大的方向依次连接。
8.其中的一个实施方式中,所述的神经网络处理器仿真评估方法,其中,所述根据所述第一电路的数据资料对所述第一电路的功能进行仿真评估,包括:根据所述第一电路的数据资料得到读写控制仿真程序,所述读写控制仿真程序为用于对一段连续存储区域进行先写后读的程序;获取第一预设数据,通过所述读写控制仿真程序写入所述第一预设数据,再依次读出所述第一预设数据;写入所述预设数据时获取存所述存储区域的输入信号,并根据所述输入信号确定写入逻辑;读出所述预设数据时获取所述存储区域的输出信号,并根据所述输出信号确定读取逻辑;根据所述第一电路的数据资料得到中断控制仿真程序,所述中断控制仿真程序用于根据检测到中断信号的顺序依次向数组中存放第二预设数据的程序;当检测到中断信号时,通过所述第二程序向数组中存放第二预设数据;根据所述数组中的第二预设数据验证所述第一电路的中断控制;其中,所述数组中的第二预设数据对应有标记i,i与神经网络中卷积层数具有相关性。
9.其中的一个实施方式中,所述的神经网络处理器仿真评估方法,其中,所述根据所述第二电路的数据资料对所述第二电路的功能进行仿真评估,包括:根据所述第二电路的数据资料得到循环移位存储仿真程序,所述循环移位存储仿真程序用于对存储区域内的数据进行循环移位存储;获取第一卷积核或第一特征图,通过循环移位存储仿真程序对所述第一卷积核或所述第一特征图在第一存储区域内进行循环移位存储,得到存储结果;根据存储结果验证循环移位存储功能和可变长存储功能;其中,所述第一卷积核为单通道的一维卷积核,所述第一特征图为单通道的一维特征图;根据所述第二电路的数据资料得到处理单元仿真程序,所述处理单元仿真程序用于进行卷积运算;获取第二卷积核和第二特征图,通过所述处理单元仿真程序根据所述第二卷积核和所述第二特征图进行卷积计算,输出第一卷积结果;根据所述第一卷积结果验证所述处理单元的逻辑功能;其中,所述第二卷积核为单通道的一维卷积核,所述第二特征图为单通道的一维特征图;根据所述第二电路的数据资料得到处理单元阵列仿真程序;获取存储配置文件,并根据所述存储配置文件对第二存储区域进行配置,通过所述处理单元阵列仿真程序从所述第二存储区域读取权重值和特征值,并根据所述权重值和所述特征值进行卷积计算,输出第二卷积结果;根据所述第二卷积结果验证所述处理单元阵列的逻辑功能;其中,所述配置文件包括按照预设顺序进行排序的权重值和特征值。
10.其中的一个实施方式中,所述的神经网络处理器仿真评估方法,其中,所述将所述第一电路和所述第二电路组成综合电路,并对所述综合电路进行仿真评估,包括:当所述第二电路进行语言格式与预设语言格式不匹配时,将所述第二电路的语言格式转换为预设语言格式;按照预设连接关系将第一电路和第二电路进行连接为综合电路,并对所述综合电路进行仿真评估,得到资源利用率分析结果、时序分析结果和功耗分析结果。
11.其中的一个实施方式中,所述的神经网络处理器仿真评估方法,其中,所述按照预设顺序进行排序的权重值和特征值,包括:按照预设权重值排序,将当前循环的卷积核中的权重值依次写入所述存储模块中,其中,所述预设权重值排序为:根据卷积核序号、通道序号、列序号以及行序号自初始的权重值开始对权重值进行排序,当所述权重值的卷积核序号小于所述权重值的最大卷积核序号时使所述权重值的卷积核序号自加1,当所述权重值的卷积核序号增加至所述权重值的最大卷积核序号时使所述权重值的通道序号自加1并重置所述权重值的卷积核序号,当所述权重值的通道序号增加至所述权重值的最大通道序号时使所述权重值的列序号自加1并重置所述权重值的通道序号以及重置所述权重值的卷积核序号,当所述权重值的列序号增加至所述权重值的最大列序号时使所述权重值的行序号自加1并重置所述权重值的列序号、重置所述权重值的通道序号以及重置所述权重值的卷积核序号;按照预设特征值排序,将当前循环的特征图中的特征值写入所述存储模块中,其中,所述预设特征值排序为:根据通道序号、列序号、卷积核序号以及行序号自初始的特征值开始对特征值进行排序,当所述特征值的通道序号小于所述特征值的最大通道序号时则使所述特征值的通道序号自加1,当所述特征值的通道序号增加至所述特征值的最大通道序号时使所述特征值的列序号自加1并重置所述特征值的通道序号,当所述特征值的列序号增加至所述特征值的最大列序号时使所述特征值的特征图序号自加1并重置所述特征值的列序号以及重置所述特征值的通道序号,当所述特征值的特征图序号增加至所述特征值的最大特征图序号时使特征值的行序号自加1并重置所述特征值的特征图序号、重置所述特征值的列序号以及重置所述特征值的通道序号。
12.第二方面,提供一种神经网络处理器仿真评估系统,包括:获取模块,用于获取神经网络处理器的数据资料,所述神经网络处理器的数据资料包括第一电路的数据资料和第二电路的数据资料,其中,所述第一电路与所述第二电路为异构电路;第一仿真模块,用于根据所述第一电路的数据资料对所述第一电路的功能进行仿真评估;第二仿真模块,用于根据所述第二电路的数据资料对所述第二电路的功能进行仿真评估;综合仿真模块,用于将所述第一电路和所述第二电路组成综合电路,并对所述综合电路进行仿真评估,其中,所述综合电路中所述第一电路和所述第二电路连接。
13.第三方面,提供一种电子设备,包括存储装置和处理装置,所述存储装置存储有可在处理装置上运行的计算机程序,其中,当所述处理装置执行所述程序时,实现如上所述的神经网络处理器仿真评估方法的步骤。
14.第四方面,提供一种存储介质,其上存储有计算机程序,其中,该计算机程序被处理器执行时,实现如上所述的神经网络处理器仿真评估方法的步骤。
15.本发明能够基于神经网络处理器中第一电路与第二电路的架构不同,对第一电路、第二电路以及综合电路分别进行仿真评估,可以实现根据第一电路、第二电路以及综合电路的特点采用相应的仿真评估方案,有利于提高仿真评估的准确性。
附图说明
16.通过阅读下文优选的具体实施方式中的详细描述,本发明各种其他的优点和益处对于本领域普通技术人员来说将变得清楚明了。说明书附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。显而易见地,下面描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
17.下面将结合附图及实施例对本发明作进一步说明,附图中:图1是本发明一个实施例的神经网络处理器仿真评估方法的流程示意图;图2是本发明一个实施例的神经网络处理器仿真评估方法中第一电路写外部存储器的仿真波形图;图3是本发明一个实施例的神经网络处理器仿真评估方法中第一电路读外部存储器的仿真波形图;图4是本发明一个实施例的神经网络处理器仿真评估方法中第一电路的中断控制仿真波形图;图5是本发明一个实施例的神经网络处理器仿真评估方法中第二电路对卷积核权重值进行循环移位存储的仿真波形图;图6是本发明一个实施例的神经网络处理器仿真评估方法中第二电路对卷积核权重值进行可变长存储的仿真波形图;图7是本发明一个实施例的神经网络处理器仿真评估方法中第二电路对处理单元的真波形图;图8是本发明一个实施例的神经网络处理器仿真评估方法中第二电路进行第一轮循环卷积计算仿真波形图;图9是本发明一个实施例的神经网络处理器仿真评估方法中第二电路进行第二轮循环卷积计算仿真波形图;图10为本发明一个实施例的神经网络处理器仿真评估系统的结构示意图;图11为本发明一个实施例的电子设备的结构示意图。
具体实施方式
18.需要说明的是,在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互结合,下面结合附图和具体实施例对本发明作进一步详细说明。
19.除非另有定义,本文所使用的所有的技术和科学术语与属于本技术的技术领域的技术人员通常理解的含义相同;本文中在申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本技术;本技术的说明书和权利要求书及上述附图说明
中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。本技术的说明书和权利要求书或上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。
20.在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本技术的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
21.为了使本技术领域的人员更好地理解本技术方案,下面将结合附图,对本技术实施例中的技术方案进行清楚、完整地描述。
22.实施例一在一个神经网络处理器设计的应用场景中,在完成神经网络处理器的结构设计之后,需要对神经网络处理器的性能进行评估,基于此,本实施例提供神经网络处理器仿真评估系统以及相应的方法,具体可以根据设计的神经网络处理器的数据资料,完成神经网络处理器相关功能的仿真评估与评估。
23.图1为本实施中神经网络处理器仿真评估方法的流程示意图。请参阅图1,该神经网络处理器仿真评估方法,包括:步骤10、步骤20、步骤30和步骤40。
24.步骤10、获取神经网络处理器的数据资料,神经网络处理器的数据资料包括第一电路的数据资料和第二电路的数据资料,其中,第一电路与第二电路为异构电路。
25.神经网络处理器是一种专门为神经网络进行设计的处理器,以提升神经网络的性能,如能够提高卷积计算的速度。
26.神经网络处理器的数据资料通常是在处理器设计过程中产生的资料,通常包含能够反映神经网络处理器的电路结构以及实现相应功能的设计资料。
27.第一电路与第二电路为异构电路可以理解为第一电路与第二电路在结构上存在不同。在处理器设计过程中,同一个处理器可能会具有多种不同架构的电路,在数据处理时可以根据处理类型采用与之相对应的架构的电路,以达到提高数据处理速度的效果。其中,第一电路与第二电路是架构不同的两种电路。
28.步骤20、根据第一电路的数据资料对第一电路的功能进行仿真评估。
29.第一电路的数据资料中具有第一电路的结构设计数据,基于此,可以根据第一电路的结构设计数据生成第一电路,进而可以根据第一电路中各个电子元件的运行原理和各个电子元件的仿真参数完成对第一电路的功能进行仿真评估。
30.步骤30、根据第二电路的数据资料对第二电路的功能进行仿真评估。
31.第二电路的数据资料中具有第二电路的结构设计数据,基于此,可以根据第二电路的结构设计数据生成第二电路,进而可以根据第二电路中各个电子元件的运行原理和各个电子元件的仿真参数完成对第二电路的功能进行仿真评估。
32.步骤40、将第一电路和第二电路组成综合电路,并对综合电路进行仿真评估,其中,综合电路中第一电路和第二电路连接。
33.根据神经网络处理器的数据资料获取第一电路和第二电路之间的连接关系,基于此,将第一电路和第二电路连接,组成综合电路,再根据综合电路中各个电子元件的运行原理和各个电子元件的仿真参数完成对综合电路的功能进行仿真评估。
34.可选地,电子元件的仿真参数为电子元件在预设环境中进行测试得到的参数,或者电子元件的仿真参数为电子元件说明书中的参数。基于电子元件的仿真参数可以完成如运行速度、资源利用率、耗能等评估。一般地,电子元件的仿真参数可以直接根据处理器的硬件型号确定。
35.本实施例基于神经网络处理器中第一电路与第二电路的架构不同,对第一电路、第二电路以及综合电路分别进行仿真评估,可以实现根据第一电路、第二电路以及综合电路的特点采用相应的仿真评估方案,有利于提高仿真评估的准确性。
36.需要说明的是,神经网络处理器的电路模块可以是多个,不限于第一电路和第二电路。
37.其中的一个实施方式中,神经网络处理器为但不限于可编程门阵列(fpga)处理器,第一电路为串行处理电路,第二电路为并行处理电路,第一电路的数据资料为基于硬件描述语言的电路设计数据资料,第二电路的数据资料为基于硬件构造语言的电路设计数据资料,其中,硬件构造语言为支持参数化生成器的硬件构造语言。
38.fpga具有低功耗、高并行计算度、灵活编程、开发周期短等特性,使其非常适合于在小型的嵌入式设备中运行。例如fpga可以作为图像卷积神经网络的处理器,设置于具有显示功能的头盔中。
39.串行处理电路是擅于进行串行计算的处理器,其主要采用串行指令执行方式实现相应的功能。可选地,串行处理电路为mcu,具体地,mcu采用arm cortex-m3软核ip布局布线到fpga中。
40.并行处理电路是擅于进行并行计算的处理器,一般采用流水线并行性的架构设计,更适合大量的卷积乘加运算。可选地,并行处理电路具有多个处理单元,且多个处理单元组成阵列结构。
41.与串行处理电路相比,并行处理电路更擅长并行计算,即在进行并行计算时用时更短。
42.可选地,硬件描述语言为vhdl或verilog,适合用于设计mcu在内的串行处理电路。
43.可选地,硬件构造语言为chisel3。chisel3具有逻辑清晰、修改调试容易的优势,非常适合对处理单元的阵列结构进行设计。同时,基于chisel3语言可以提供一种高度参数化的卷积计算电路生成器,使得处理单元阵列结构具有计算位宽可调、处理单元的阵列规模可调、处理单元内部存储可调的特点。
44.神经网络处理器仿真评估系统可以提供并识别至少vhdl、verilog、chisel3在内的多种电路编辑语言,并可以对多种语言的电路资料数据进行编译,完成电路仿真。
45.其中的一个实施方式中,获取神经网络处理器的数据资料包括:步骤101。
46.步骤101、构建神经网络处理器电路,并根据神经网络处理器电路确定神经网络处理器的数据资料。
47.神经网络处理器仿真评估系统包括vhdl、verilog、chisel3在内的多种电路编辑语言。同时,神经网络处理器仿真评估系统还为用户提供神经网络处理器的读取功能和构建功能,基于此,可以通过神经网络处理器仿真评估系统直接读取现有的神经网络处理器电路数据资料,也可以通过神经网络处理器仿真评估系统即时构建神经网络处理器电路。
48.可选地,神经网络处理器电路,包括:处理模块、累加模块、激活模块和存储模块。
49.处理模块,用于根据输入特征值与输入权重值进行融合得到中间特征值,其中,处理模块包括呈阵列结构排布的多个处理单元,阵列结构为具有行、列、通道三个维度的阵列结构。
50.处理模块能够对输入特征值与输入权重值按照预设规则进行计算,将输入特征值与输入权重值进行融合,形成中间特征值。例如处理模块根据输入特征值与输入权重值进行乘法运算或进行异或逻辑运算,产生中间特征值。
51.处理模块包括多个处理单元,其中,多个处理单元具有阵列结构,形成阵列结构。阵列结构具有三个维度,即行、列、通道三个维度。为方便说明,将处理单元按照行、列、通道三个维度进行编号,例如处理单元pe
ijk
,代表第i行第j列第k通道的处理单元,i、j、k分别为阵列结构中行、列、通道的序号。
52.累加模块,与处理模块连接,用于根据中间特征值进行累加得到累加结果。
53.累加模块能够对中间特征值进行累加得到累加结果。具体地,当累加模块对卷积窗口对应的所有中间特征值累加完成时输出该累加值,完成该卷积窗口在当前格的卷积运算,卷积窗口继续滑动至下一格循环操作上述卷积过程。
54.激活模块,与累加模块连接,用于根据累加结果进行激活处理得到输出特征值。
55.激活模块与累加模块连接,从而接收来自累加模块的累加值,并对其进行非线性激活。激活函数的本质是向神经网络中引入非线性,表达输入到输出之间的非线性映射关系。
56.存储模块,与激活模块、处理模块分别连接,用于存储输入特征值、输入权重值以及输出特征值。
57.存储模块中含有多个存储器,可以进行数据的存取。存储模块能够存储特征值,例如存储初始特征值或者上一卷积循环的输出特征值,并在当前卷积循环中实现当前循环的输入特征值的读取,将当前循环的输入特征值输入到处理单元中。可选地,存储器为一种寄存器。
58.在一个实施方式中,存储模块与各个处理单元分别连接。也即是,存储模块与处理模块中所有处理单元均连接,从而实现将存储模块中的权重值和特征值同时传输至对应的处理单元中,所有处理单元可以同时对数据进行处理,有利提高卷积计算的速度。
59.在一个实施方式中,存储模块与阵列结构最后一行和第一列的各个处理单元分别连接,也即是,存储模块与多个处理单元pe
ijk
连接,其中,i=i
max
或j=1。且通道序号相同、行序号相同、列序号相邻的两个处理单元之间相互连接,以及通道序号相同、行序号相邻、列序号相邻的两个处理单元之间按照行序号减小和列序号增大的方向依次连接。也即是,将pe
ijk
与pe
i(j+1)k
相连接,将pe
ijk
与pe
(i-1)(j+1)k
相连接。
60.本实施例神经网络处理器采用基于mcu+fpga的异构计算架构,完成了可配置参数的卷积神经网络处理器的设计,可以实现多通道、多卷积核、多特征图的通用性卷积功能,有利于提高卷积计算速度。
61.其中的一个实施方式中,在对第一电路进行仿真评估时,神经网络处理器仿真评估系统能够基于区块设计对第一电路的仿真环境进行搭建,极大地缩短了设计周期,且电路可视化,利于修改调试。第一电路的仿真建立在将第一电路汇编语言编译汇编成二进制文件的基础上,之后将该二进制文件放入预设区域内,并设置激励文件中的时钟和复位信
号,即可实现第一电路对指令的执行情况进行仿真。
62.可选地,神经网络处理器仿真评估方法,其中,根据第一电路的数据资料产生相应的功能程序,根据该功能程序对第一电路的功能进行仿真评估,可以实现对第一电路的功能进行验证,包括:步骤210和步骤220。
63.步骤210、根据第一电路的数据资料得到读写控制仿真程序,读写控制仿真程序为用于对一段连续存储区域进行先写后读的程序;获取第一预设数据,通过读写控制仿真程序写入第一预设数据,再依次读出第一预设数据;写入预设数据时获取存储区域的输入信号,并根据输入信号确定写入逻辑;读出预设数据时获取存储区域的输出信号,并根据输出信号确定读取逻辑。
64.步骤210是对第一电路读写外部存储数据的仿真。其中,读写控制仿真程序是基于第一电路的数据资料中各个电子电子元件的连接关系和功能确定的,能够模拟第一电路中各个电子电子元件的功能,实现读写控制仿真过程。读写控制仿真程序包含一种对一段连续存储区域进行先写后读的程序,该程序可以预存在神经网络处理器仿真评估系统中,方便调用。
65.以第一电路为mcu为例,仿真方法包括:mcu读写外部存储器(ram)可以通过观察仿真波形来判断是否完成相应的功能。例如,写外部存储器时可以通过观察存储器的接口信号(存储区域的输入信号)来判断是否正确写入,读外部存储器时可以通过观察axi总线中有关信号(存储区域的输出信号)判断是否正确读出。为此,本实施例采用了对起始地址为0x60000000一段连续存储区域进行先写后读的c语言程序,先写入以下数据:0x01234567,0x89abcdef,0xdeadbeef等,再依次读出。
66.仿真结果:存储区域的接口位宽设置成1024bit,总线数据接口为32bit,因此将存储区域设置成byte-write模式,按字节对ram进行读写。
67.mcu写外部ram仿真波形如图2所示,因为web信号和doutb信号过宽,不利于显示,所以转换成了十进制进行显示,其余信号均为十六进制。在axi总线信号中,由hwdatas和awaddrs信号可以看出第一电路欲将数据0x01234567写入地址0x60000000中。在接口信号中,web=0xffff,dinb=0x0123456701234567
……
01234567,addrb=0,意味着dinb的低4个字节(即0x01234567)被写入该ram地址0的低四个字节,这四个字节也对应着mcu地址0x60000000。doutb表示当前地址addrb对应的ram数据内容,图中为十进制数19088743,也就是十六进制数0x01234567,再次证明数据0x01234567写入到了ram地址0的低四个字节中。接着,web变为0xffff0000,同理将数据0x89abcdef写入ram地址0的低第8个到低第5个字节中,这四个字节对应cm3地址0x60000004。依此类推,可以将整个ram写满,完成对写入逻辑的仿真验证。
68.mcu读外部ram仿真波形如图3所示,根据图中的araddrs和hrdatas信号可以看出,mcu读取了0x60000004地址中的数据0x89abcdef,与之前写入的数据一致,完成对读出逻辑的仿真验证。
69.步骤220、根据第一电路的数据资料得到中断控制仿真程序,中断控制仿真程序用于根据检测到中断信号的顺序依次向数组中存放第二预设数据的程序;当检测到中断信号时,通过第二程序向数组中存放第二预设数据;根据数组中的第二预设数据验证第一电路的中断控制;其中,数组中的第二预设数据对应有标记i,i与神经网络中卷积层数具有相关
性。
70.步骤220是对第一电路中断控制的仿真。其中,中断控制仿真程序是基于第一电路的数据资料中各个电子电子元件的连接关系和功能确定的,能够模拟第一电路中各个电子电子元件的功能,实现中断控制仿真过程。中断控制仿真程序包含一种根据检测到中断信号的顺序依次向数组中存放第二预设数据的程序,该程序可以预存在神经网络处理器仿真评估系统中,方便调用。
71.中断控制仿真程序可以执行根据检测到中断信号的顺序,依次向数组中存放第二预设数据,其中,数组中的第二预设数据对应标记i,i与神经网络中卷积层数相关。例如,i与神经网络中卷积层的序号相同,卷积层的序号代表卷积层在神经网络中的层数。
72.在进行中断控制仿真验证时,根据数组中的第二预设数据判断中断控制是否正常,例如当第二预设数据与当前进行卷积计算的卷积核的层数(层序号)相同,则中断控制正常,否则反之。
73.举例地,根据写数据通道、写地址通道和写响应通道的ready/valid握手信号完成中断控制。具体地,如图4所示,当模拟第二电路第一次给出中断信号ip_irpt(高有效),中断控制仿真程序(c程序)中的全局变量初始值i为0,因此将数据data[0]写入regfile_0中,regfile_0的值变为0x67,然后将变量值i自加1,使得i=1;当模拟第二电路第二次给出中断信号ip_irpt,将数据data[1]写入regfile_0中,regfile_0的值变为0xef,然后变量值i自加1,使得i=2;依次类推,可以看出,该中断设计可以通过计数中断信号ip_irpt拉高的次数确定当前卷积计算中卷积层的序号。当一幅图计算过程中所有中断处理完毕,将全局变量i的值复位到0,即可进行下一幅图的计算。
[0074]
其中的一个实施方式中,在对第二电路进行仿真评估时,神经网络处理器仿真评估系统可以根据第二电路的数据资料生成第二电路模块,例如将chisel语音编译的第二电路直接在scala模块中实例化,并手动约束激励或者无人工约束时根据随机性和覆盖率直接产生激励。神经网络处理器仿真评估系统提供了产生激励和信号断言的工具,为仿真提供支持。在仿真时会产生中间文件,该中间文件可以为ascii格式,存储了设计中指定变量的值变化信息。仿真结束后可查看中间文件中仿真得到的波形。
[0075]
可选地,根据第二电路的数据资料产生相应的功能程序,根据该功能程序对第二电路的功能进行仿真评估,可以对第二电路的功能进行验证,包括:步骤310、步骤320和步骤330。
[0076]
步骤310、根据第二电路的数据资料得到循环移位存储仿真程序,循环移位存储仿真程序用于对存储区域内的数据进行循环移位存储;获取第一卷积核或第一特征图,通过循环移位存储仿真程序对第一卷积核或第一特征图在第一存储区域内进行循环移位存储,得到存储结果;根据存储结果验证循环移位存储功能和可变长存储功能;其中,第一卷积核为单通道的一维卷积核,第一特征图为单通道的一维特征图。
[0077]
存储区域是处理器中用于存储数据的区域,通常由一个或多个存储器及相应的存储控制器件组成。例如,存储控制器件为选择器,选择器与存储器连接,可以根据控制信号将存储器的输出端与输入端连接,实现数据的循环移位存储。
[0078]
可选地,第一卷积核为单通道的单行卷积核或单通道的单列卷积核,第一特征图为单通道的单行特征图或单通道的单列特征图。
[0079]
举例地,通过循环移位存储仿真程序模拟了两个单通道、单维度的卷积核进行卷积时的该模块的情形:一个长度为3的第一卷积核[4,3,-4]以及一个长度为10的第一卷积核[-2,-1,-2,-3,-2,3,0,-2,4,2]。
[0080]
在对循环移位仿真时,循环移位存储仿真程序的输入接口是带有enq的信号,输出接口是带有deq的信号,其中工作状态的切换由state信号来控制。具体地,当state=0时,模块不工作。当state=1时,读取卷积核的权重值数据到存储器中,如图5中方框所示,[4,3,-4]依次作为存储器的输入数据,在enq_ready和enq_ready拉高时,写入到存储器中。当state=2时,模块的输出端和输入端连接在一起构成闭合环路,deq_ready和deq_valid拉高时,从存储器中读出的数据,同时,enq_ready和enq_valid也拉高,将读出的数据重新写回到存储器中,如图5中垂直线箭头所示,读出的数据[4,3,-4]又被写回存储器中。由此可以看出,该模块能够实现循环移位存储器的功能。当state=3时,存储器中的数据计算完毕,根据卷积的特性,需要将部分数据弹出并补入新的数据。因为存储器的输入端口和输出端口互不干扰,所以上述两个过程可以同时进行,即弹出数据的同时写入新数据。
[0081]
在对可变长仿真时,生成具有10个数值的权重值数据,并基于循环移位存储仿真程序进行可变长仿真,如图6所示。
[0082]
步骤320、根据第二电路的数据资料得到处理单元仿真程序,处理单元仿真程序用于进行卷积运算;获取第二卷积核和第二特征图,通过处理单元仿真程序根据第二卷积核和第二特征图进行卷积计算,输出第一卷积结果;根据第一卷积结果验证处理单元的逻辑功能;其中,第二卷积核为单通道的一维卷积核,第二特征图为单通道的一维特征图。
[0083]
可选地,第二卷积核为单通道的单行卷积核或单通道的单列卷积核,第二特征图为单通道的单行特征图或单通道的单列特征图。可选地,通过仿真评估系统中的随机生成工具,随机生成第二卷积核和第二特征图。
[0084]
在仿真过程中,具体是将第二卷积核和第二特征图输入至第二电路的处理单元中,得到仿真的卷积计算;根据仿真的卷积计算,判断输出的计算结果是否为一维卷积的结果。其中,判断输出的计算结果是否为一维卷积的结果包括:通过对比仿真的卷积计算与结果生成器产生的计算结果进行判断是否具有一致性。结果生成器为仿真评估系统中用于根据卷积原理和第二卷积核对第二特征图进行卷积,产生的结果。
[0085]
举例地,处理单元仿真程序模拟了卷积核的权重核[4,3,-4]和特征图[0,-2,-5,-1,1]的一维卷积过程,时序波形图如图7所示。state=1时,控制逻辑分别向处理单元中的卷积核的权重值存储器和特征值存储器写入第一次卷积运算所需的输入数据[4,3,-4]和[0,-2,-5]。state=2时,处理单元开始进行卷积运算,在该状态的末尾模块输出卷积结果osum,如图7中指向state为2的垂直线所示。state=3时,特征值存储器中弹出无用数据并写入新的数据,第一次state=3时,弹出数据0,写入数据-1,相当于[-2,-5,-1]与卷积核的权重值做卷积运算;第二次state=3时,弹出数据-2,写入数据1,相当于[-5,-1,1]与卷积核的权重值做卷积运算。存储器中的数据总量保持不变,如图7中指向state为3的垂直线所示。图7中显示的计算结果为[14,-19,-27],与预计的计算结果一致,则该模块的逻辑功能正确。
[0086]
步骤330、根据第二电路的数据资料得到处理单元阵列仿真程序;获取存储配置文件,并根据存储配置文件对第二存储区域进行配置,通过处理单元阵列仿真程序从第二存
储区域读取权重值和特征值,并根据权重值和特征值进行卷积计算,输出第二卷积结果;根据第二卷积结果验证处理单元阵列的逻辑功能;其中,配置文件包括按照预设顺序进行排序的权重值和特征值。
[0087]
第一存储区和第二存储区可以是同一存储区域,也可以是不同的存储区域。
[0088]
存储配置文件包含权重值数据和特征值数据。具体地,仿真评估系统中具有pyhton脚本,通过pyhton脚本随机初始化待计算数据,并按照相应的格式生成用于存储器初始化的hex文件,包括filter.hex和feature.hex。
[0089]
在仿真过程中,根据存储配置文件对第二存储区域中的存储器进行配置,存储器配置完成后,进行第一轮循环卷积计算、第二轮循环卷积计算
……
,至最后一轮循环卷积计算。
[0090]
举例地,在第一轮循环卷积计算中,处理单元阵列从相应的存储器地址中取出输入权重值和输入特征值。具体地,首先取出的是特征图第1、2、3、4、5行输入特征值,计算输出特征图的第1、2、3行数据。由于输入特征值数据也就是前一层网络的输出特征值数据,因此验证当前层的输入特征值数据的正确性即可判断加速器的输出结果是否正确。具体地,通过对比加速器输出结果和python脚本计算结果来验证加速器计算的正确性。
[0091]
具体地,加速器的输出结果按照一定的顺序进行排列,一次输出8列计算结果。如果图8所示,框内表示加速器计算得到的输出结果,图中竖线处表示第一列输出结果,其值显示在图的左侧栏中;将得到的输出结果与python脚本计算的结果比较,当二者结果完全一致,则神经网络处理器的卷积计算功能正确。在此过程中,神经网络处理器的输出结果的顺序也得到了验证。
[0092]
举例地,第二轮循环卷积计算中,利用输入特征图的第4、5、6、7、8行数据计算输出特征图的第4、5、6行的数据。图9为第二轮循环卷积计算仿真波形图,将得到的输出结果与python脚本计算的结果比较,二者结果完全一致。通过两轮循环或两轮循环以上卷积计算结果的验证可得处理单元阵列模块功能完全正确。
[0093]
具体地,通过处理单元阵列仿真程序从第二存储区域读取权重值和特征值,并根据权重值和特征值进行卷积计算,输出第二卷积结果,包括:存储步骤、读取步骤和计算步骤。
[0094]
存储步骤:将当前循环的卷积核中的权重值和当前循环的特征图中的特征值存储在存储区域中,存储区域具有循环移位存储功能。
[0095]
读取步骤:依次读取当前循环的卷积核中的一行权重值,依次读取当前循环的特征图的特征值,其中,读取的特征值的数量为当前循环的卷积核宽度与当前循环的卷积核通道数量的乘积,且读取的特征值与读取的权重值具有卷积对应关系。
[0096]
计算步骤:对存储区域中的权重值进行一次或多次移位循环,当权重值循环移位存储器单元的移位循环次数为n+1时则对存储区域中的特征值进行一次移位循环,当权重值的移位循环次数为m+1时则获取新特征值并将新特征值写入存储区域中,当获取新特征值的次数为特征图的宽度与卷积核的宽度之差除以步长后再加1得到的值时则清空存储区域中的数据并返回至读取步骤,其中,n为当前循环的卷积核数量的整数倍,m为存储区域的权重值数量的整数倍,新特征值的数量根据卷积步长进行确定,以及在将新特征值写入存储区域中时写入新特征值并删除与新特征值数量相等数量的原特征值。
[0097]
其中,每次对存储区域中的权重值进行移位循环之前,读取存储区域目标位置的权重值得到读取的权重值,再读取存储区域中目标位置的特征值得到读取的特征值,将读取的权重值与读取的特征值相乘得到乘积结果,将乘积结果进行存储,并根据卷积原理对乘积结果进行累加。
[0098]
其中的一个实施方式中,神经网络处理器仿真评估系统具有将多种异构电路进行综合的综合仿真模块,能够对神经网络处理器进行整体评估。一般情况下,异构电路采用的设计语言不同,神经网络处理器仿真评估系统提供电路设计语言的转换功能,将电路的设计语言转为预设语言,进而实现综合电路的生成与功能模拟。
[0099]
可选地,将第一电路和第二电路组成综合电路,并对综合电路进行仿真评估,包括步骤410和步骤420。
[0100]
步骤410、当第二电路进行语言格式为非硬件描述语言时,将第二电路的语言格式转换为硬件描述语言。具体地,在仿真评估过程中,获取预设语言编写的第一电路和第二电路,并对第一电路和第二电路进行电路综合,得到综合测试电路。例如,仿真评估系统提供xilinx处理器集成开发环境的电路综合功能,能够将第一电路和第二电路组成综合电路。
[0101]
需要说明的是,由于神经网络处理器仿真评估系统进行综合的预设语言为verilog或vhdl,即采用基于verilog或vhdl硬件描述语言对异构电路进行综合,因此在综合之前需要将其他语言如chisel3语言编写的电路转为verilog或vhdl硬件描述语言。
[0102]
步骤420、按照预设连接关系将第一电路和第二电路进行连接为综合电路,并对综合电路进行仿真评估,得到资源利用率分析结果、时序分析结果和功耗分析结果。
[0103]
预设连接关系可以根据神经网络处理器电路资料数据中第一电路和第二电路之间的连接关系确定。
[0104]
对综合电路进行仿真评估,模拟综合电路中各个电子电子元件的运行原理,并根据相应的电子电子元件仿真参数,得到资源利用率结果、时序分析结果以及功耗分析结果。
[0105]
资源利用率分析可以确定时钟频率,例如所测试的神经网络处理器采用多级流水线结构以提高电路的运行频率,最终能够跑到的最高时钟频率为140mhz。
[0106]
时序分析可以推算计算速度。例如,时钟频率为140mhz情况下,根据计算一次yolov2神经网络前向传播所需要的总算力,以及处理单元阵列规模、时钟频率,可以推算得到该卷积计算电路可以达到21fps的计算速度。
[0107]
功耗分析包括:静态功耗和动态功耗。在具体的仿真评估过程中,总功耗为17.598w,其中,动态功耗14.879w,占总功耗的85%,静态功耗2.719w,占总功耗的15%。
[0108]
本实施例对神经网络处理器进行仿真,实现了对第一电路和第二电路逻辑功能进行验证,以及根据硬件描述语言代码获取综合电路,再对综合电路的性能进行评估。
[0109]
其中的一个实施方式中,按照预设顺序进行排序的权重值和特征值,包括:步骤510和步骤520。
[0110]
步骤510、按照预设权重值排序,将当前循环的卷积核中的权重值依次写入存储模块中,其中,预设权重值排序为:根据卷积核序号、通道序号、列序号以及行序号自初始的权重值开始对权重值进行排序,当权重值的卷积核序号小于权重值的最大卷积核序号时使权重值的卷积核序号自加1,当权重值的卷积核序号增加至权重值的最大卷积核序号时使权重值的通道序号自加1并重置权重值的卷积核序号,当权重值的通道序号增加至权重值的
最大通道序号时使权重值的列序号自加1并重置权重值的通道序号以及重置权重值的卷积核序号,当权重值的列序号增加至权重值的最大列序号时使权重值的行序号自加1并重置权重值的列序号、重置权重值的通道序号以及重置权重值的卷积核序号。
[0111]
可以理解的是,根据卷积核序号、通道序号、列序号以及行序号可以确定对应的唯一的权重值。对于权重值可以采用w
mnop
表示,其中m代表卷积核序号,n代表权重值的通道序号,o代表权重值的列序号以及p代表权重值的行序号。在排序时,m优先增加,当m到最大时则n增加1并重置m,当n到最大时则o增加1并重置m和n,当o最大时则p增加1并重置m、n和o。
[0112]
步骤520、按照预设特征值排序,将当前循环的特征图中的特征值写入存储模块中,其中,预设特征值排序为:根据通道序号、列序号、卷积核序号以及行序号自初始的特征值开始对特征值进行排序,当特征值的通道序号小于特征值的最大通道序号时则使特征值的通道序号自加1,当特征值的通道序号增加至特征值的最大通道序号时使特征值的列序号自加1并重置特征值的通道序号,当特征值的列序号增加至特征值的最大列序号时使特征值的特征图序号自加1并重置特征值的列序号以及重置特征值的通道序号,当特征值的特征图序号增加至特征值的最大特征图序号时使特征值的行序号自加1并重置特征值的特征图序号、重置特征值的列序号以及重置特征值的通道序号。
[0113]
可以理解的是,根据通道序号、列序号、特征图序号以及行序号可以确定对应的唯一的特征值。对于特征值可以采用i
abcd
表示,其中a代表特征值的通道序号,b代表特征值的列序号,c代表特征值的特征图序号以及d代表特征值的行序号。在排序时,a优先增加,当a到最大时则b增加1并重置a,当b到最大时则c增加1并重置a和b,当c最大时则d增加1并重置a、b和c。
[0114]
综上,本发明对神经网络处理器进行了仿真评估。首先对第一电路读写数据过程以及中断控制过程进行了软硬件结合的仿真,其次对第二电路的循环移位存储、处理单元的数据处理过程、处理单元阵列数据处理过程进行了硬件仿真,对网络处理器的基本逻辑功能进行验证。之后,将第一电路和第二电路的连接,对综合电路仿真评估,表明综合电路最高运行频率可达到140mhz,最快可以每秒处理21帧图像的卷积运算过程,电路总功耗为17.598w。
[0115]
实施例二图10是本实施例一种神经网络处理器仿真评估系统的结构示意图,如图10所示,该神经网络处理器仿真评估系统包括:获取模块61、第一仿真模块62、第二仿真模块63和综合仿真模块64。
[0116]
获取模块61,用于获取神经网络处理器的数据资料,神经网络处理器的数据资料包括第一电路的数据资料和第二电路的数据资料,其中,第一电路与第二电路为异构电路。
[0117]
第一仿真模块62,用于根据第一电路的数据资料对第一电路的功能进行仿真评估。
[0118]
第二仿真模块63,用于根据第二电路的数据资料对第二电路的功能进行仿真评估。
[0119]
综合仿真模块64,用于将第一电路和第二电路组成综合电路,并对综合电路进行仿真评估,其中,综合电路中第一电路和第二电路连接。
[0120]
本实施例神经网络处理器仿真评估系统能够基于神经网络处理器中第一电路与
第二电路的架构不同,对第一电路、第二电路以及综合电路分别进行仿真评估,可以根据第一电路、第二电路以及综合电路的特点采用相应的仿真评估方案,有利于提高仿真评估的准确性。
[0121]
其中的一个实施方式中,获取模块61还用于构建神经网络处理器电路,并根据神经网络处理器电路确定神经网络处理器的数据资料。
[0122]
其中的一个实施方式中,第一仿真模块62还包括数据读写仿真单元621,该数据读写仿真单元621用于根据第一电路的数据资料得到读写控制仿真程序,读写控制仿真程序为用于对一段连续存储区域进行先写后读的程序;获取第一预设数据,通过读写控制仿真程序写入第一预设数据,再依次读出第一预设数据;写入预设数据时获取存储区域的输入信号,并根据输入信号确定写入逻辑;读出预设数据时获取存储区域的输出信号,并根据输出信号确定读取逻辑。
[0123]
其中的一个实施方式中,第一仿真模块62还包括中断控制仿真单元622,该中断控制仿真单元622用于根据第一电路的数据资料得到中断控制仿真程序,中断控制仿真程序用于根据检测到中断信号的顺序依次向数组中存放第二预设数据的程序;当检测到中断信号时,通过第二程序向数组中存放第二预设数据;根据数组中的第二预设数据验证第一电路的中断控制;其中,数组中的第二预设数据对应有标记i,i与神经网络中卷积层数具有相关性。
[0124]
其中的一个实施方式中,第二仿真模块63还包括存储单元仿真单元631,该存储单元仿真单元631用于根据第二电路的数据资料得到循环移位存储仿真程序,循环移位存储仿真程序用于对存储区域内的数据进行循环移位存储;获取第一卷积核或第一特征图,通过循环移位存储仿真程序对第一卷积核或第一特征图在第一存储区域内进行循环移位存储,得到存储结果;根据存储结果验证循环移位存储功能和可变长存储功能;其中,第一卷积核为单通道的一维卷积核,第一特征图为单通道的一维特征图。
[0125]
其中的一个实施方式中,第二仿真模块63还包括处理单元仿真单元632,该处理单元仿真单元632用于根据第二电路的数据资料得到处理单元仿真程序,处理单元仿真程序用于进行卷积运算;获取第二卷积核和第二特征图,通过处理单元仿真程序根据第二卷积核和第二特征图进行卷积计算,输出第一卷积结果;根据第一卷积结果验证处理单元的逻辑功能;其中,第二卷积核为单通道的一维卷积核,第二特征图为单通道的一维特征图。
[0126]
其中的一个实施方式中,第二仿真模块63还包括处理单元阵列仿真单元633,该处理单元阵列仿真单元633用于根据第二电路的数据资料得到处理单元阵列仿真程序;获取存储配置文件,并根据存储配置文件对第二存储区域进行配置,通过处理单元阵列仿真程序从第二存储区域读取权重值和特征值,并根据权重值和特征值进行卷积计算,输出第二卷积结果;根据第二卷积结果验证处理单元阵列的逻辑功能;其中,配置文件包括按照预设顺序进行排序的权重值和特征值。
[0127]
其中的一个实施方式中,综合仿真模块64还用于当第二电路进行语言格式与预设语言格式不匹配时,将第二电路的语言格式转换为预设语言格式;按照预设连接关系将第一电路和第二电路进行连接为综合电路,并对综合电路进行仿真评估,得到资源利用率分析结果、时序分析结果和功耗分析结果。
[0128]
具体地,综合仿真模块64包括资源利用率评估单元641,时序分析单元642以及功
耗评估单元643,分别用于进行资源利用率分析、时序分析以及功耗分析。
[0129]
本实施例的神经网络处理器仿真评估系统为神经网络处理器仿真评估方法对应的系统。神经网络处理器仿真评估系统的运行原理可以参考上述神经网络处理器仿真评估方法,在此不再赘述。
[0130]
实施例三图11是本发明一种电子设备的结构示意图。该电子设备包括存储装置701和处理装置702,存储装置701存储有可在处理装置702上运行的计算机程序,其中,当处理装置702执行程序时,实现如上的神经网络处理器仿真评估方法的步骤。
[0131]
电子设备包括通过系统总线703相互通信连接存储装置701、处理装置702。需要指出的是,图11中仅示出了具有组件701、组件702和组件703的电子设备,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。其中,本技术领域技术人员可以理解,这里的电子设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的电子设备,其硬件包括但不限于微处理器、专用集成电路(application specific integrated circuit,asic)、可编程门阵列(field-programmable gate array,fpga)、数字处理器(digital signal processor,dsp)、嵌入式设备等。
[0132]
电子设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。设备可以与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互。
[0133]
存储装置701至少包括一种类型的可读存储介质,可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘等。在一些实施例中,存储装置701可以是设备的内部存储单元,例如该设备的硬盘或内存。在另一些实施例中,存储装置701也可以是设备的外部存储设备,例如该设备上配备的插接式硬盘,智能存储卡(smart media card, smc),安全数字(secure digital, sd)卡,闪存卡(flash card)等。当然,存储装置701还可以既包括设备的内部存储单元也包括其外部存储设备。本实施例中,存储装置701通常用于存储安装于设备的操作系统和各类应用软件,例如神经网络处理器仿真评估方法的计算机可读指令等。此外,存储装置701还可以用于暂时地存储已经输出或者将要输出的各类数据。
[0134]
处理装置702在一些实施例中可以是中央处理器(central processing unit,cpu)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理装置702通常用于控制设备的总体操作。本实施例中,处理装置702用于运行存储器501中存储的计算机可读指令或者处理数据,例如运行神经网络处理器仿真评估方法的计算机可读指令。
[0135]
实施例四本发明提供一种存储介质,其上存储有计算机程序,该计算机程序被处理器执行时,实现如上的神经网络处理器仿真评估方法的步骤。
[0136]
通过以上的实施例的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施例。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务
器,空调器,或者网络设备等)执行本技术各个实施例的方法。
[0137]
显然,以上所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例,附图中给出了本技术的较佳实施例,但并不限制本技术的专利范围。本技术可以以许多不同的形式来实现,相反地,提供这些实施例的目的是使对本技术的公开内容的理解更加透彻全面。尽管参照前述实施例对本技术进行了详细的说明,对于本领域的技术人员来而言,其依然可以对前述各具体实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等效替换。凡是利用本技术说明书及附图内容所做的等效结构,直接或间接运用在其他相关的技术领域,均同理在本技术专利保护范围之内。