计算装置以及计算方法与流程

文档序号:20756942发布日期:2020-05-15 17:29阅读:208来源:国知局
计算装置以及计算方法与流程

本申请属于神经网络运算领域,尤其涉及一种计算装置以及计算方法。



背景技术:

数据处理是大部分算法需要经过的步骤或阶段,在计算机引入数据处理领域后,越来越多的数据处理通过计算机来实现,现有的算法中有计算设备在进行神经网络的数据计算时速度慢,效率低。

申请内容

有鉴于此,本申请提供一种计算装置以及计算方法,能够提高计算速度,并且运算性能高效。

本申请提供一种计算装置,所述计算装置包括:寄存器单元、互联模块、运算单元、控制单元、数据访问单元和算数逻辑单元;其中,

寄存器单元,用于存储运算指令、数据块的在存储介质的地址,运算指令对应的计算拓扑结构;

控制单元,用于从寄存器单元内提取运算指令,该运算指令对应的操作域以及该运算指令对应的第一计算拓扑结构,将该运算指令译码成执行指令,该执行指令用于控制运算单元执行运算操作,将该操作域传输至数据访问单元;

数据访问单元,用于提取该操作域对应的数据块,并将该数据块传输至互联模块;

互联模块、用于接收数据块,将该数据块发送至运算单元;

运算单元,用于该执行指令调用运算单元的计算器对该数据块执行运算操作得到运算结果;

所述存储器包括:数据划分模块、预先操作模块和数据拼接模块;

所述数据划分模块,用于根据数据划分策略将片内存储数据划分在不同区域,分别存储在片内存储介质和片外存储介质;

预先操作模块,用于在进行数据拼接时预先对片内存储数据的片内地址索引进行操作处理;

数据拼接模块,用于根据数据拼接策略将片内存储数据和片外输入数据拼接得到所述原始数据表示。

附图说明

图1-1是本申请实施例提供的计算装置的另一种结构示意图。

图1-2是本申请实施例提供的卷积计算指令的流程示意图。

图2-1示出了本发明的概要构成图。

图2-2示出了本发明的编码器模块的概要构成图。

图2-2a示出了本发明编码过程的流程图。

图2-3示出了本发明的解码器模块的概要构成图。

图2-4示出了本发明解码过程的流程图。

具体实施方式

参阅图1-1,图1-1提供了一种计算装置,该计算装置包括:存储器611(可选的)、寄存器单元612、互联模块613、运算单元614、控制单元615和数据访问单元616;

其中,运算单元614包括:加法计算器、乘法计算器、比较器、激活运算器中至少二种。

互联模块613,用于控制运算单元614中计算器的连接关系使得该至少二种计算器组成不同的计算拓扑结构。

指令存储单元(可以是寄存器单元,指令缓存,高速暂存存储器)612,用于存储该运算指令、数据块的在存储介质的地址、运算指令对应的计算拓扑结构。

该运算指令可以包括:操作域以及操作码,以卷积计算指令为例,如下表所示,其中,寄存器0、寄存器1、寄存器堆2、寄存器3、寄存器4可以为操作域。其中,每个寄存器0、寄存器1、寄存器2、寄存器3、寄存器4可以是一个或者多个寄存器。

存储器611可以为片外存储器,当然在实际应用中,参见图1-1,当为片内存储器时,该片内存储器可以为缓存,具体的,可以为高速暂存缓存,用于存储数据块,该数据块具体可以为n维数据,n为大于等于1的整数,例如,n=1时,为1维数据,即向量,如n=2时,为2维数据,即矩阵,如n=3或3以上时,为多维数据。

控制单元615,用于从寄存器单元612内提取运算指令、该运算指令对应的操作域以及该运算指令对应的第一计算拓扑结构,将该运算指令译码成执行指令,该执行指令用于控制运算单元执行运算操作,将该操作域传输至数据访问单元616,。

数据访问单元616,用于从存储器611中提取该操作域对应的数据块,并将该数据块传输至互联模块613。

互联模块613、用于接收数据块,将该数据块发送至运算单元614。

运算单元614,用于该执行指令调用运算单元614的计算器对该数据块执行运算操作得到运算结果,将该运算结果传输至数据访问单元存储在存储器内。一个实施例里,运算单元614,用于按第一计算拓扑结构以及该执行指令调用计算器对数据块执行运算操作得到运算结果,将该运算结果传输至数据访问单元存储在存储器内。

在一种可选的实施例中,上述第一计算拓扑结构可以为:乘法运算器-加法运算器-加法运算器-激活运算器。

下面通过不同的运算指令来说明如图1-1所示的计算装置的具体计算方法,这里的运算指令以卷积计算指令为例,该卷积计算指令可以应用在神经网络中,所以该卷积计算指令也可以称为卷积神经网络。对于卷积计算指令来说,其实际需要执行的公式可以为:s=s(∑wxi+b),其中,即将卷积核w乘以输入数据xi,进行求和,然后加上偏置b后做激活运算,得到最终的输出结果s。依据该公式即可以得到该计算拓扑结构为,乘法运算器-加法运算器-激活运算器(可选的)。

上述运算指令可以包括指令集,该指令集包括:卷积神经网络指令,有不同功能的卷积神经网络compute指令以及config指令、io指令、nop指令、jump指令和move指令。在一种实施例中,compute指令包括:

卷积神经网络指令,根据该指令,装置分别从存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址取出指定大小的输入数据和卷积核,在卷积运算部件中做卷积运算直接得到输出结果。即该指令不执行后续的操作,直接做卷积运算得到输出结果。

卷积神经网络sigmoid指令,根据该指令,装置分别从存储器(优选的高速暂存存储器或者标量寄存器堆)的指定地址取出指定大小的输入数据和卷积核,在卷积运算部件中做卷积操作,优选的,然后将输出结果做sigmoid激活;

卷积神经网络tanh指令,根据该指令,装置分别从存储器(优选的高速暂存存储器)的指定地址取出指定大小的输入数据和卷积核,在卷积运算部件中做卷积操作,优选的,然后将输出结果做tanh激活;

卷积神经网络relu指令,根据该指令,装置分别从存储器(优选的高速暂存存储器)的指定地址取出指定大小的输入数据和卷积核,在卷积运算部件中做卷积操作,优选的,然后将输出结果做relu激活;以及

卷积神经网络group指令,根据该指令,装置分别从存储器(优选的高速暂存存储器)的指定地址取出指定大小的输入数据和卷积核,划分group之后,在卷积运算部件中做卷积操作,优选的,然后将输出结果做激活。

config指令在每层人工神经网络计算开始前配置当前层计算需要的各种常数。

io指令实现从外部存储空间读入计算需要的输入数据以及在计算完成后将数据存回至外部空间。

nop指令负责清空当前装置内部所有控制信号缓存队列中的控制信号,保证nop指令之前的所有指令全部指令完毕。nop指令本身不包含任何计算操作;

jump指令负责控制将要从指令存储单元读取的下一条指令地址的跳转,用来实现控制流的跳转;

move指令负责将装置内部地址空间某一地址的数据搬运至装置内部地址空间的另一地址,该过程独立于运算单元,在执行过程中不占用运算单元的资源。

如图1-1所示的计算装置执行卷积计算指令的方法具体可以为:

控制单元615从寄存器单元612内提取卷积计算指令、卷积计算指令对应的操作域,控制单元将该操作域传输至数据访问单元。

数据访问单元从存储器内提取该操作域对应的卷积核w和偏置b(当b为0时,不需要提取偏置b),将卷积核w和偏置b传输至运算单元。

运算单元的乘法运算器将卷积核w与输入数据xi执行乘法运算以后得到第一结果,将第一结果输入到加法运算器执行加法运算得到第二结果,将第二结果和偏置b执行加法运算得到第三结果,将第三结果输到激活运算器执行激活运算得到输出结果s,将输出结果s传输至数据访问单元存储至存储器内。其中,每个步骤后都可以直接输出结果传输到数据访问存储至存储器内。另外,将第二结果和偏置b执行加法运算得到第三结果这一步骤为可选步骤,即当b为0时,不需要这个步骤。

本申请提供的技术方案通过一个指令即卷积计算指令即实现了卷积的计算,在卷积计算的中间数据(例如第一结果、第二结果、第三结果)均无需存储或提取,减少了中间数据的存储以及提取操作,所以其具有减少对应的操作步骤,提高卷积的计算效果的优点。

图1-2是本申请实施例提供的卷积神经网络运算装置执行卷积神经网络的流程图,如图1-2所示,执行卷积神经网络指令的过程包括:

在步骤s6b1,在指令存储单元的首地址处预先存入一条io指令。

在步骤s6b2,控制器单元从指令存储单元的首地址读取该条io指令,根据译出的控制信号,数据访问单元从存储器读取相应的所有卷积神经网络运算指令,并将其缓存在指令存储单元中。

在步骤s6b3,控制器单元接着从指令存储单元读入下一条io指令,根据译出的控制信号,数据访问单元从存储器读取运算单元需要的所有数据块(例如,包括输入数据、用于作快速的激活函数运算的插值表、用于配置运算器件参数的常数表、偏置数据等)。

在步骤s6b4,控制器单元接着从指令存储单元读入下一条config指令,根据译出的控制信号,装置配置该层神经网络计算需要的各种常数。例如,运算单元根据控制信号里的参数配置单元内部寄存器的值,所述参数包括例如激活函数需要的数据。

在步骤s6b5,控制器单元接着从指令存储单元读入下一条compute指令,根据译出的控制信号,互连模块将卷积窗口内的输入数据发给计算单元内的各计算器。

在步骤s6b6,根据compute指令译出的控制信号,互联模块将乘法计算器、加法计算器和激活计算器连接形成第一计算拓扑结构。

在步骤s6b7,乘法运算器将卷积核w与输入数据xi执行乘法运算以后得到第一结果,将第一结果输入到加法运算器执行加法运算得到第二结果,将第二结果和偏置b执行加法运算得到第三结果,将第三结果输入到激活运算器执行激活运算得到输出结果s,将输出结果s传输至数据访问单元存储至存储介质内。其中,将第二结果和偏置b执行加法运算得到第三结果这一步骤可选,即当b为0时,不需要这个步骤。

本披露提出一种用于自动校正访问存储数据的装置,上述自动校正访问存储数据的装置可以应用于存储介质,例如,可以应用于如图1-1所示的计算装置的存储介质(存储器),该用于自动校正访问存储装置数据的装置包括:

存储装置模块,用于存储数据,其中所述存储装置模块包括用于存储数据的区域与用于存储监督位的区域;

编码器模块,用于获取数据,并根据所述数据生成对应的监督位;

解码器模块,用于当所述存储装置模块读取所述数据时,所述解码器模块根据所述监督位检验所述数据的正确性,当发现所述数据中存在错误数据时,发送错误信号,同时将所述错误数据进行校正,并将校正后的数据发送给读写单元,读写单元将校正后数据重新写回存储装置,以避免数据错误增加。

还包括读写单元模块,用于读写数据及读写与所述数据相对应的监督位。

所述编码器模块包括监督位生成模块与合并模块;其中所述监督位生成模块用于根据所述数据生成监督位;所述合并模块用于将所述数据与所述监督位按特定顺序合并到一起,并将合并的数据输出。

所述解码器模块包括校验子生成模块、数据解析模块、纠错码生成模块、数据纠错模块;其中所述校验子生成模块用于根据所述数据与所述监督位生成校验子,校验子用于生成纠错码;所述数据解析模块用于将所述数据与所述监督位分离,输出待校验数据;所述纠错码生成模块用于根据所述校验子生成纠错码与错误信息;所述数据纠错模块用于根据所述纠错码对所述待校验数据进行纠错。

本披露还提出一种用于自动校正访问存储装置数据的方法,包括:

步骤1,获取数据,并根据所述数据生成对应的监督位;

步骤2,当所述存储装置读取所述数据时,所述解码器根据所述监督位检验所述数据的正确性,当发现所述数据中存在错误数据时,发送错误信号,同时将所述错误数据进行校正,并将校正后的数据发送给读写单元,读写单元将校正后数据重新写回存储装置,以避免数据错误增加。

还包括读写数据及读写与所述数据相对应的监督位。

所述步骤1包括根据所述数据生成监督位;将所述数据与所述监督位按特定顺序合并到一起,并将合并的数据输出。

所述步骤2包括根据所述数据与所述监督位生成校验子,校验子用于生成纠错码;将所述数据与所述监督位分离,输出待校验数据;根据所述校验子生成纠错码与错误信息;根据所述纠错码对所述待校验数据进行纠错。

以下为本披露实施例,如下所示:

本披露提供一种访问数据中监督位生成的方法并且在出现无法纠正的错误时返回错误信号并进行校正后重新写回存储装置,当出现可校正的错误时,将校正后的数据重新写回存储装置,达到自动校正的目的。

本披露的具体技术如下:

在使用ecc算法解码的过程中,同时生成错误信号,标志着数据中错误的个数和错误是否可修复信号,当出现可校正的错误时,则将校正后的数据重新写回存储装置。

本披露的原理是:在ecc解码的过程中,利用纠错码去检查是否出现了不可校正的错误。如果出现了不可校正的错误,ecc解码模块则输出一个错误信号,当出现可校正的错误时,则将校正后的数据重新写回存储装置。

通过本披露提供的监督位生成方法,使得在解码的过程中的发生的不可校正的数据错误可以及时的表现出来,并且当出现可校正的错误时,将校正后的数据重新写回存储装置,实现自动校正数据,避免了数据错误的增加最后导致校正失败的情况。

如图2-1为本披露的结构图,在写数据时,ecc编码器根据写数据生成监督位,并将数据和监督位一同发送给读写单元;读写单元将数据和监督位一起写入到存储装置。在读数据时,读写单元将数据和监督位一起从存储装置读出并且发送给ecc解码器,ecc解码器根据数据监督位判断有没有出现错误,如果错误可校正,将校正后的数据和错误信号输出,如果错误不可校正,输出一个不可校正的错误信号,当出现可校正的错误时,则将校正后的数据发送给ecc编码器,ecc编码器将校正后的数据重新编码后,由读写单元重新写回到存储装置。

如图2-2本披露中ecc编码器结构图和功能:

ecc编码器根据输入数据生成带监督位的输出数据,监督位生成模块根据输入数据生成监督位,合并模块将输入数据和监督按照特定顺序合并到一起,并将合并的数据输出。

ecc编码器子模块的功能:

1.监督位生成模块:根据输入数据生成监督位;

2.合并模块:合并模块将输入数据和监督位按特定顺序组合到一起。

如图2-2a本披露ecc编码流程图,步骤101,ecc编码器获得输入数据;步骤102,ecc编码器根据输入数据计算得到监督位;步骤103,ecc编码器将监督位和数据按照特定顺序组合;步骤104,ecc编码器将组合后的数据和监督位输出到读写模块。

如图2-3,ecc解码器结构图和各个模块的功能:

ecc解码器根据输入的数据和监督位,对数据进行校正,各个模块的功能:

1.校验子生成模块:根据输入数据和监督位生成校验子,校验子用来生成纠错码。

2.数据解析模块:将输入的数据和监督位分离,输出待校验数据。

3.纠错码生成模块:根据校验子生成纠错码和错误信息。

4.数据纠错模块:根据纠错码对待校验数据进行纠正。

如图2-4,ecc解码流程,具体流程为:ecc解码器获得输入数据和监督位,ecc解码器根据数据和监督位生成校验子,同时ecc解码器根据数据和监督位生成待校验数据;ecc解码器根据校验子生成纠错码;ecc解码器根据纠错码校正待校验数据;ecc解码器输出错误信息和校正后的数据。

以8比特数据,检测2处随机错误,并校正一处错误为例,则由上面描述可知,随机错误p=2,校正错误数量q=1,ecc监督位m=2*p+q=5。

下面操作的符号说明:

^:异或操作

!:取反操作

|:或操作

&:与操作

<<:左移操作

编码:

在ecc编码器中,监督位生成模块根据输入数据d[8]生成5位的监督码c[5],生成规则如下:

c[0]=d[0]^d[1]^d[3]^d[4]^d[6];

c[1]=d[0]^d[2]^d[3]^d[5]^d[6];

c[2]=d[1]^d[2]^d[3]^d[7];

c[3]=d[4]^d[5]^d[6]^d[7];

c[4]=d[0]^d[1]^d[2]^d[4]^d[5]^d[7];

在ecc的合并模块中,合并模块将数据和监督位按照特定顺序组合到一起,按照上面的例子,组合之后的结果为:

c[0],c[1],d[0],[c2],d[1],d[2],d[3],c[7],d[4],d[5],d[6],d[7],[c4]

组合之后的结果会被存入到存储装置中,组合后的数据用e[13]表示。

解码:

校验子生成模块:校验子生成模块会根据13位带监督位的数据e[13]生成5位校验子s[5],规则如下:

s[0]=e[0]^e[2]^e[4]^e[6]^e[8]^e[10];

s[1]=e[1]^e[2]^e[5]^e[6]^e[9]^e[10];

s[2]=e[3]^e[4]^e[5]^e[6]^e[11]^0;

s[3]=e[7]^e[8]^e[9]^e[10]^e[11]^0;

s[4]=e[0]^e[1]^e[2]^e[3]^e[4]^e[5]^e[6]^e[7]^e[8]^e[9]^e[10]^e[11]^e[12];

数据解析模块按照ecc编码器合并模块的规则,将对应的待校正数据解析出来。

纠错码生成模块根据校验子生成错误信息和出错数据的位置。

出错位置为location=(!s[4])<<4+s[3:0];

不可校正的错误标志fatal=(|s[3:0])&!s[4];

对于数据出错标志error,如果错误位置是在待校验数据的位置则返回1,否则0;

数据纠错模块根据纠错码生成的出错位置对数据进行校正,即根据出错位置对相应的数据取反:

d[location]=!d[location];

到此解码结束,如果数据出错标志为1,则出现了可以校正的错误,ecc解码器将校正后的数据发送给ecc编码器,然后重新编码后写回到存储装置。

在一些实施例里,公开了一种芯片封装结构,其包括了上述芯片。

在一些实施例里,公开了一种板卡,其包括了上述芯片封装结构。

在一些实施例里,公开了一种电子装置,其包括了上述板卡。

电子装置包括数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备交通工具、家用电器、和/或医疗设备。

所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、b超仪和/或心电图仪。

以上所述的具体实施例,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本申请的具体实施例而已,并不用于限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1