一种指令生成过程的复用装置及方法、处理装置与流程

文档序号:14389734阅读:161来源:国知局
一种指令生成过程的复用装置及方法、处理装置与流程
本发明涉及人工神经网络
技术领域
,更具体地涉及一种指令生成过程的复用装置及方法、处理装置。
背景技术
:人工神经网络是众多机器学习和模式识别算法中的佼佼者,在学术界和工业界都是目前的主流方向。然而,基于在小体积、低功耗的前提下实现高性能的新要求,传统的大规模神经网络和庞大的计算设备难以真正进入人们的日常生活,因此为神经网络设计的专用处理器成为新的潮流。为神经网络加速器生成指令是一个相对繁琐的过程,尤其是在数据规模大、网络结构复杂的情况下。神经网络加速器的单条指令往往较长,同时受限于片上的计算和存储资源,较大的输入数据往往需要多条指令处理。此外,当下神经网络算法的明显趋势是网络层数越来越多、层规模越来越大。这些都导致神经网络加速器的指令生成愈发繁琐,甚至影响到硬件本身优势的发挥。技术实现要素:鉴于现有方案存在的问题,为了克服上述现有技术方案的不足,本发明提出了一种指令生成过程的复用装置及方法、处理装置。根据本发明的一个方面,提供了一种指令生成过程的复用装置,其中,包括:运行缓存装置,用于存放在前网络对应的hash值;指令复用控制装置,用于生成第i层网络的hash值,并判断第i层网络的hash值是否与在前网络对应的hash值相同,若相同,则发出指令复用命令;以及复用指令生成装置,基于所述指令复用控制装置发出的指令复用命令来进行指令复用生成第i层网络的指令,其中i为正整数。根据本发明的另一个方面,一种指令生成过程的复用方法,其中,包括:利用运行缓存装置存放在前网络对应的hash值;利用指令复用控制装置生成第i层网络的hash值,并判断第i层网络的hash值是否与在前网络对应的hash值相同,若相同,则发出指令复用命令;以及基于所述指令复用控制装置发出的指令复用命令,利用复用指令生成装置进行指令复用生成第i层网络的指令,其中i为正整数。根据本发明的再一个方面,提供一种处理装置,其包括:前述的复用装置;神经网络处理器;和/或通用处理器。根据本发明的又一个方面,提供一种芯片,其中,所述芯片包括前述的处理装置。根据本发明的进一步的一个方面,提供一种电子装置,其中,所述电子装置包括前述的芯片。从上述技术方案可以看出,本发明具有以下有益效果:(1)基于判别hash值是否相同,实现了神经网络加速器的相同hash值层网络的指令复用,削减了指令生成过程中重复指令的生成开销,减少了神经网络的总执行时间;(2)使得神经网络加速器的硬件优势更加明显,其计算资源可以更充分地用于神经网络本身地计算,也降低了总功耗。附图说明图1为本发明实施例用于神经网络加速器指令生成过程的复用方法的流程图;图2为本发明实施例用于神经网络加速器指令生成过程的复用装置的结构框图;图3为本发明另一实施例用于神经网络加速器指令生成过程的复用装置的结构框图;图4为本发明一实施例中处理装置的结构框图;图5为本发明又一实施例中处理装置的结构框图;图6为本发明再一实施例中处理装置的结构框图。具体实施方式本发明某些实施例于后方将参照所附附图做更全面性地描述,其中一些但并非全部的实施例将被示出。实际上,本发明的各种实施例可以许多不同形式实现,而不应被解释为限于此数所阐述的实施例;相对地,提供这些实施例使得本发明满足适用的法律要求。在本说明书中,下述用于描述本发明原理的各种实施例只是说明,不应该以任何方式解释为限制发明的范围。参照附图的下述描述用于帮助全面理解由权利要求及其等同物限定的本发明的示例性实施例。下述描述包括多种具体细节来帮助理解,但这些细节应认为仅仅是示例性的。因此,本领域普通技术人员应认识到,在不悖离本发明的范围和精神的情况下,可以对本文中描述的实施例进行多种改变和修改。此外,为了清楚和简洁起见,省略了公知功能和结构的描述。此外,贯穿附图,相同附图标记用于相似功能和操作。为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。本发明实施例提供了一种用于神经网络加速器指令生成过程的复用方法,通过神经网络加速器指令生成过程中的指令复用,削减了指令生成过程中重复指令的生成开销,减少了神经网络的总执行时间。这里的“指令”指的是神经网络加速器运行过程中的操作码,用于指示神经网络加速器的硬件的每一步操作。hash算法将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值就是hash值。hash值是一段数据唯一且极其紧凑的数值表示形式,因此只要神经网络的每一层可以用二进制码描述,那么就可以计算其hash值,并且hash值相同网络就一定一样,就可以复用之前生成的网络的指令。具体的,该复用方法如附图1所示,包括以下具体步骤:s101:开始;神经网络加速器指令生成步骤开始;s102:令i=1,i为神经网络加速器网络层序号,i为正整数。本实施例中从第1层来开始执行,本领域技术人员可以理解的而是,网络神经加速器的指令生成并非限定必须从第1层开始执行,也可从后续的任何一层开始执行。s103:计算第i层网络的hash值,根据第i层网络的类型、规模等信息计算出相应的hash值,hash值通过给定的hash函数计算得到。其中网络类型有卷积、全连接、降采样、归一化层、激活等;网络规模包括网络输入大小、输出大小、采样窗口大小、采样窗口移动步长、采样窗口数目等。另外具体的信息还可以包括偏置项、随机项、运算类型等所有神经网络特性的描述参数。其中运算类型包括但不限于稀疏运算、稠密运算、1位运算、定点、浮点等运算类型。以下以全连接层网络为例计算hash值:假设该层网络是全连接层,层类型编码为01,层规模为输入9,输出9,那么该网络被编码为011001100110011001(编码顺序和宽度不固定,该处引用于举例),计算该二进制码的hash值,计算方式可以是md5、sha1等方法,计算出的hash值是011001。s104:判断i是否大于等于a,a为正整数。针对第a层后的网络层来判别是否可以进行指令复用操作。本实施例中a优选为2。若结果为y,即i大于等于a,则执行步骤s105,否则,结果为n,即i小于a,执行步骤s106。s105:根据hash值在hash表中进行查找,hash表存储在运行缓存装置中,其存储由第i层网络之前1个或多个层hash值,用于后面各层的hash值作对比。如表1所示,hash表一共包括5个域:层序号、层类型、层规模、hash值和该层指令在指令存储装置的头地址。其中,前4个域用于前述查找判断单元确定是否可以复用,最后一个域用于后述被复用指令提取单元从指令存储装置中提取所需指令。表1层序号层类型层规模hash值头地址1convinput(9,9),kernel(5,5),stride(1,1)9d280x10000000若结果为y,意味着第i层网络的hash值存在于hash表,这说明之前某层的类型和规模与本层完全一致,指令可以复用,则执行s108,否则,说明之前所有层的类型和规模与本层均不一致,指令不能复用,则执行s106。s106:将第i层网络的hash值及指令头地址存入hash表中,存储在运行缓存装置中,执行s107。s107:采用常规方式生成第i层网络指令;这里的常规方式指的是神经网络加速器的硬件根据输入的神经网络的全部信息去生成一条或多条完整的二进制指令,这条二进制指令与硬件本身的指令集密切相关。一般来说硬件需要逐步解析输入的信息,将解析到的信息转化为指令的一个字段,最后这些字段逐步拼成一条或多条完成的二进制指令。举例,假如输入的神经网络层是全连接层,输入9,输出9,32位定点运算,输出需要激活。那么“全连接层”会被解析为一个字段z1,“输入9”被解析为字段z2,“输出9”被解析为字段z3,“32位定点运算”被解析为字段z4,“输出需要激活”被解析为字段z5,那么最终生成的二进制指令就是z1~z5的组合或是经过一定操作后的组合。指令的生成不局限于上述的生成方式,因为指令生成确实与应用到的硬件的指令集密切相关。s108:根据hash值相应的指令头地址拷贝待复用指令,即调取该hash值相应的指令,执行步骤s110;s109:修改待复用指令,得到第i层网络指令,具体的根据本层(第i层)输入和输出数据的特点,在已拷贝的待复用指令上进行修改,具体为将待复用指令中涉及输入数据地址和输出数据地址之处修改为新层的相应值,得到本层需要的指令,执行步骤s110;s110:存储第i层网络的指令,将第i层网络的指令存储在指令存储装置中;s111:令i=i+1;s112:判断i是否小于等于b,其中b为正整数,且b大于a,本实施例中b为神经网络加速器网络层数,若i小于等于b,即结果为y,则返回s103,若i大于b,即结果为n,则执行s113;本发明中b的取值并非限于实施中的神经网络加速器网络层数,可以小于等于神经网络加速器网络层数。s113:结束。基于同样的发明构思,本发明实施例还提供了一种用于神经网络加速器指令生成过程的复用装置100,如图2所示,所述复用装置包括:指令复用控制装置1、运行缓存装置2以及复用指令生成装置3。其中指令复用控制装置1,用于生成每层网络规模信息的hash值,并判断是否需要指令复用;运行缓存装置2,用于存放每层网络规模信息的hash值;复用指令生成装置3,用于在确定可以复用的情况下生成复用后的新指令。具体的,指令复用控制装置1包括计算单元11和查找判断单元12,其中,计算单元11接收第i层网络的类型、规模等信息(神经网络层信息),计算出该层相应的hash值,hash值通过给定的hash函数计算得到,并将第i层网络的hash值发送至查找判断单元,查找判断单元12调取运行缓存装置中的hash表,并根据当前层hash值在hash表中查着,确认当前层hash值在hash表中是否存在。若确认存在,在查找判断单元12将查找到的hash值相应的层指令在指令存储装置的头地址发送给复用指令生成装置,进行指令复用。若确认不存在,则不进行指令复用,将当前层hash值及其相应信息(包括生成的指令头地址)保存在至hash表中,并采用常规的方式由指令生成装置4生成该层指令。复用指令生成装置3接收到指令复用控制装置1发送的头地址,从指令存储装置读取相应层的全部指令,并根据本层(第i层)输入和输出数据的特点,在已拷贝的待复用指令上进行修改,具体为将待复用指令中涉及输入数据地址和输出数据地址之处修改为新层的相应值,得到本层需要的指令。指令生成装置4生成的指令及指令修改单元32生成的指令均存储至指令存储装置5上。各功能单元/模块都可以是硬件,比如该硬件可以是电路,包括数字电路,模拟电路等等。例如上述的计算单元11、查找判断单元12、运行缓存装置2、复用指令生成装置3、指令生成装置4以及指令存储装置5中的至少一个为硬件。举例而言,上述该些单元/装置均为硬件。硬件结构的物理实现包括但不局限于物理器件,物理器件包括但不局限于晶体管,忆阻器等等。所述计算装置中的计算模块可以是任何适当的硬件处理器,比如cpu、gpu、fpga、dsp和asic等等。所述存储单元可以是任何适当的磁存储介质或者磁光存储介质,比如rram,dram,sram,edram,hbm,hmc等等。在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。例如上述的计算单元11、查找判断单元12、运行缓存装置2、复用指令生成装置3及指令生成装置4集成在一个处理单元10中,采用软件程序模块的形式实现上述功能模块的功能。此时复用装置100,如图3所示,包括处理单元10、运算缓存装置2、以及指令存储装置5,其中,处理单元10例如为一处理器,可以包括计算单元11、查找判断单元12、运行缓存装置2、复用指令生成装置3及指令生成装置4等功能模块。所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储器包括:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。本发明一实施例还提供一种处理装置,图4为本发明实施例中处理装置的结构框图,如图4所示,处理装置2000包括前述的复用装置100和神经网络处理器1000,神经网络处理器1000,例如为神经网络加速器,其包括:存储单元200、控制单元300、运算单元400,直接数据存取单元(dmadirectmemoryaccess)500、输入缓存单元600。复用装置100从直接数据存取单元(dmadirectmemoryaccess)500获取第i层网络的类型、规模等信息(神经网络层信息)并生成指令,生成的指令可以输出至输入缓存单元600的指令缓存601,送往指令缓存的指令将按照芯片正常的工作方式即会被送往控制单元完成后续的指令执行过程,生成的指令还可以直接送到控制单元完成后续的指令执行过程。复用装置100可以采用其本身的计算单元来计算获得相应层的hash值,也可以调用神经网络处理器1000中的运算单元来实现上述计算,此时复用装置可以省去计算单元。存储单元200主要用来存储神经网络的神经元,权值以及指令。其中存放权值时只存放非零权值以及非零权值的位置信息,存放量化的非零权值时只存放非零权值密码本和非零权值字典。控制单元300接收存储单元200发送的指令,经过译码后生成控制信息控制运算单元400。运算单元400,根据存储单元200中存储的指令对所述数据执行相应运算。dma500用于在所述存储单元200、输入缓存单元600和输出神经元缓存900中进行数据或者指令读写。输入缓存单元600包括指令缓存601、非零权值密码本缓存602、非零权值字典缓存603、非零权值位置缓存604、输入神经元缓存605。指令缓存601,用于存储专用指令;非零权值密码本缓存602,用于缓存非零权值密码本;非零权值字典缓存603,用于缓存非零权值权值字典;非零权值位置缓存604,用于缓存非零权值位置数据;非零权值位置缓存将输入数据中每个连接权值一一对应到相应的输入神经元。输入神经元缓存605,用于缓存输入到粗粒度选数单元的输入神经元。神经网络处理器1000还包括预处理模块1001、查找表700、选数单元800以及输出神经元缓存900。预处理模块1001对原始输入数据进行预处理,包括切分、高斯滤波、二值化、正则化、归一化等等,并将处理后的数据输入存储单元200。查找表单元700用于解析量化后的神经网络的权值,其接收权值字典和权值密码本,经过查找操作获得权值,对于没量化的权值直接通过旁路传输给运算单元。选数单元800用于接收输入神经元和非零权值位置信息,选择出需要进行计算的神经元。选数单元,用于接收输入神经元和非零权值位置信息,选出非零权值对应的神经元。也就是说:对于每个输出神经元数据,选数单元去除掉与该输出神经元数据没有对应的非零权值数据的输入神经元数据。输出神经元缓900,用于缓存运算单元输出的输出神经元。通过神经网络处理器指令生成过程中的指令复用,尽可能削减了指令生成过程中重复指令的生成开销,减少了神经网络的总执行时间,使得神经网络加速器的硬件优势更加明显。如果采用更大指令调度窗口,在此基础上的指令流水可以进一步减少存储资源的占用。本发明又一实施例还提供一种处理装置,图5为本发明实施例中处理装置的结构框图,如图5所示,处理装置4000包括前述的复用装置100和通用处理器3000,其中通用处理器3000中包括运算单元。本实施例是一个指令复用装置100和通用处理器3000同时工作的使用场景。输入神经网络层信息可以直接输入指令复用装置,也可以输入通用处理器。指令复用装置接收输入神经网络层信息后可以选择在其内部的计算单元中计算出hash值,也可以将信息导入通用处理器中,在通用处理器中的运算单元完成hash值的计算,通用处理器计算出的hash值将被输出回指令复用装置中存入hash表,当指令复用单元100调用通用处理器中的运算单元来完成hash值的计算时,指令复用单元100中的计算单元可以省略。本发明再一实施例还提供一种处理装置,图6为本发明实施例中处理装置的结构框图,如图6所示,处理装置5000包括前述的复用装置100、通用处理器3000以及神经网络处理器2000,其中通用处理器3000和神经网络处理器2000中均包括运算单元。本实施例是一个指令复用装置100、通用处理器3000以及神经网络处理器2000同时工作的使用场景。指令复用装置接收输入神经网络层信息后可以选择在其内部的计算单元中计算出hash值,还可以经通用处理器或是神经网络处理器中的运算单元计算得到相应层的hash值,并将hash值通过指令复用装置中hash表的查询确认是否进行指令复用。若确认复用,查找得到hash值相应的层指令的头地址,进行指令复用。若确认不复用,则不进行指令复用,将当前层hash值及其相应信息(包括生成指令的头地址)保存在至hash表中,并采用常规的方式生成该层指令,最后指令都输入神经网络处理器。当指令复用单元100调用通用处理器或神经网络处理器中的运算单元来完成hash值的计算时,指令复用单元100中的计算单元可以省略。处理器可以包括通用微处理器、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(asic))。处理器还可以包括用于缓存用途的板载存储器。优选的,采用专用的神经网络处理器。在一个实施例里,本发明公开了一个芯片,其包括了上述处理装置。在一个实施例里,本发明公开了一个芯片封装结构,其包括了上述芯片。在一个实施例里,本发明公开了一个板卡,其包括了上述芯片封装结构。在一个实施例里,本发明公开了一个电子装置,其包括了上述板卡。电子装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、b超仪和/或心电图仪。前面的附图中所描绘的进程或方法可通过包括硬件(例如,电路、专用逻辑等)、固件、软件(例如,被承载在非瞬态计算机可读介质上的软件),或两者的组合的处理逻辑来执行。虽然上文按照某些顺序操作描述了进程或方法,但是,应该理解,所描述的某些操作能以不同顺序来执行。此外,可并行地而非顺序地执行一些操作。需要说明的是,在附图或说明书正文中,未绘示或描述的实现方式,均为所属
技术领域
中普通技术人员所知的形式,并未进行详细说明。此外,上述对各元件和方法的定义并不仅限于实施例中提到的各种具体结构、形状或方式,本领域普通技术人员可对其进行简单地更改或替换。以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1