CN111384969A - 编码方法、处理器、编码装置及存储介质 - Google Patents
编码方法、处理器、编码装置及存储介质 Download PDFInfo
- Publication number
- CN111384969A CN111384969A CN201811620288.7A CN201811620288A CN111384969A CN 111384969 A CN111384969 A CN 111384969A CN 201811620288 A CN201811620288 A CN 201811620288A CN 111384969 A CN111384969 A CN 111384969A
- Authority
- CN
- China
- Prior art keywords
- preset
- run
- character
- data
- encoding
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/46—Conversion to or from run-length codes, i.e. by representing the number of consecutive digits, or groups of digits, of the same kind by a code word and a digit indicative of that kind
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/60—General implementation details not specific to a particular type of compression
- H03M7/6017—Methods or arrangements to increase the throughput
- H03M7/6029—Pipelining
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本申请涉及一种编码方法、处理器、编码装置及存储介质。所述方法包括:对模型数据中出现的大量连续的零进行游程编码。采用本方法能够减少数据冗余,从而实现数据压缩。
Description
技术领域
本申请涉及统计编码技术领域,特别是涉及一种编码方法、处理器、编码装置及存储介质。
背景技术
随着数字电子技术的不断发展,各类人工智能(Artificial Intelligence,AI)芯片的快速发展对于神经网络处理器的要求也越来越高。神经网络算法作为智能芯片广泛应用的算法之一,运行于神经网络处理器中。
然而,由于定点化和稀疏化的广泛应用,模型数据中通常会出现大量连续的零,占用了大量的带宽资源,影响神经网路处理器的整体处理效率。
发明内容
基于此,有必要针对上述技术问题,提供一种能够对模型数据中出现的大量连续的零进行游程编码,从而减少数据冗余的编码方法、处理器、编码装置及存储介质。
一种编码方法,所述方法包括:
获取输入数据;
根据游程位宽对所述输入数据中的第一预设数字进行编码,得到游程,写入目标编码中;其中,所述游程用于表示连续排列的所述第一预设数字的数目。
在其中一个实施例中,所述方法还包括:
若连续排列的所述第一预设数字的数目大于所述游程阈值,则根据所述第一预设数字的数据位宽,将大于所述游程阈值后排列在首位的所述第一预设数字进行字符编码;
根据所述游程位宽,对大于所述游程阈值后排列在首位的所述第一预设数字之后的其他所述第一预设数字进行编码,得到所述游程,写入所述目标编码中。
在其中一个实施例中,所述方法还包括:
若所述输入数据的首位数字为所述第一预设数字,则根据所述第一预设数字的数据位宽,将所述第一预设数字进行字符编码。
在其中一个实施例中,所述方法还包括:
根据所述游程位宽,对所述输入数据中位于所述首位数字之后的其他所述第一预设数字进行编码,得到所述游程,写入所述目标编码中。
在其中一个实施例中,所述方法还包括:
利用第一预设字符,对字符编码后的所述第一预设数字以及字符编码后的所述第一预设数字之后的游程进行替换。
一种处理器,所述处理器包括运算单元、与所述运算单元邻近设置的存储单元以及控制器单元,所述控制器单元连接于所述运算单元与所述存储单元之间;
其中,所述运算单元包括编码模块,所述编码模块用于根据游程位宽对输入数据中的第一预设数字进行编码,得到游程,写入目标编码中;其中,所述游程用于表示所述第一预设数字的数目;
所述存储单元用于存储原始数据以及编码后的数据,并与所述控制器单元以及所述运算单元之间进行数据传输;
所述控制器单元用于获取输入数据以及计算指令,并将解析该计算指令得到的多个运算指令以及所述输入数据发送至所述运算单元。
在其中一个实施例中,所述编码模块包括控制信号接口、缓存、多个寄存器、配置模块以及输出模块;
其中,所述控制信号接口用于实现所述编码模块与所述控制器单元之间的连接以及数据传输;
所述缓存分别与所述缓存邻近设置的寄存器以及所述配置模块连接,用于存储输入数据、所述第一预设字符以及第一预设字符编码;
所述多个寄存器用于存储多级流水线的执行结果;
所述配置模块用于对所述第一预设字符进行编码,得到第一预设字符编码,并将所述第一预设字符编码存储至所述缓存中;
所述输出模块用于存储并输出编码数据。
在其中一个实施例中,所述运算单元包括主处理电路和至少一个从处理电路,至少一个所述从处理电路均连接至所述主处理电路;
所述编码模块设置于所述主处理电路以及每一所述从处理电路中。
一种编码装置,所述装置包括:
输入数据获取模块,用于获取输入数据;
游程获取模块,用于根据游程位宽对所述输入数据中的第一预设数字进行编码,得到游程,写入目标编码中;其中,所述游程用于表示所述第一预设数字的数目。
一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上述编码方法的步骤。
上述编码方法、处理器、编码装置及存储介质,通过在运算单元中设置编码模块,在第一级流水线根据游程位宽,将待编码数据中的第一预设数字进行游程编码,在第二级流水线,用预设字符替换游程编码得到的输出数据,能够对大量连续出现的预设数字进行数据压缩,节省了带宽资源;同时,利用预设字符和两级流水线执行编码操作,能够进一步提高数据压缩的效率。
附图说明
图1为一个实施例中处理器1000的结构示意图;
图2为一个实施例中处理器2000的结构示意图;
图3为一个实施例中编码装置中缓存的结构示意图;
图4为一个实施例中处理器3000的结构示意图;
图5为一个实施例中处理器4000的结构示意图;
图6为另一个实施例中处理器的结构示意图;
图7为另一个实施例中处理器的结构示意图;
图8为另一个实施例中处理器的结构示意图;
图9为另一个实施例中主处理电路的结构示意图;
图10为一个实施例中编码方法的流程示意图;
图11为一个实施例中解码方法的流程示意图;
图12为另一个实施例中解码方法的流程示意图;
图13为一个实施例中编码装置的结构框图;
图14为一个实施例中解码装置的结构框图;
图15为另一个实施例中解码装置的结构框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”和“第三”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
本申请提供的编码方法,可以应用于如图1所示的处理器1000中。该处理器1000包括运算单元12、与运算单元12邻近设置的存储单元10以及控制器单元11,控制器单元11连接于运算单元12与存储单元10之间。其中,运算单元12包括编码模块1001,该编码模块1001用于根据游程位宽对输入数据中的第一预设数字进行编码,得到游程,其中,游程用于表示所述第一预设数字的数目。
具体地,编码模块1001可以根据输入数据中第一预设数字的出现频率,设定游程位宽。进一步,编码模块1001可以用游程来代替输入数据中连续排列的多个第一预设数字。需要说明的是,游程所能表示的连续排列的第一预设数字的数目不能超过游程阈值。
其中,存储单元10用于存储原始数据以及编码后的数据,并与控制器单元11以及运算单元12之间进行数据传输。
具体地,该存储单元10可以是设置在处理器1000内部的缓存器和/或寄存器。该存储单元10可以是非易失性存储器或易失性存储器,此处不做具体限定。存储单元10与控制器单元11以及运算单元12之间传输的数据形式可以为原始数据,也可以为编码后的数据。
其中,控制器单元11用于获取输入数据以及计算指令,并将解析该计算指令得到的多个运算指令以及输入数据发送至运算单元12。
具体的,获取输入数据以及计算指令方式可以通过数据输入输出单元得到,该数据输入输出单元具体可以为一个或多个数据I/O接口或I/O引脚。
上述计算指令包括但不限于:正向运算指令或反向训练指令,或其他神经网络运算指令等等,例如卷积运算指令,本申请具体实施方式并不限制上述计算指令的具体表现形式。
具体地,控制器单元11对获取到的计算指令进行解析,得到多个运算指令。进一步,控制器单元11将解析得到的多个运算指令以及获取到的输入数据发送至运算单元12。
上述处理器中,通过在运算单元中设置编码模块,对输入数据中的第一预设数字进行游程编码,从而实现了对输入数据的数据压缩,节省了带宽资源。
在其中一个实施例中,编码模块1001还用于根据所述第一预设数字的数据位宽,将大于游程阈值后排列在首位的所述第一预设数字进行字符编码;并根据所述游程位宽,对大于所述游程阈值后排列在首位的所述第一预设数字之后的其他所述第一预设数字进行编码,得到所述游程,写入所述目标编码中。
其中,编码模块可以根据设定的游程位宽,得到游程阈值,例如:设定游程位宽为2bit,则游程最多能表示连续排列的三个第一预设数字,即游程阈值为3。
具体地,编码模块1001获取连续排列的第一预设数字的数目,并将获取到的连续排列的第一预设数字的数目与游程阈值进行比较,若连续排列的第一预设数字的数目大于游程阈值,则游程编码停止,并将大于游程阈值后排列的首位第一预设数字作为第二预设数字看待,按照预先设定的第一预设数字的数据位宽进行字符编码。进一步,编码模块1001用游程代替大于游程阈值后排列的首位第一预设数字之后的其他第一预设数字。
在其中一个实施例中,编码模块1001还用于若所述输入数据的首位数字为所述第一预设数字,则根据所述第一预设数字的数据位宽,将所述第一预设数字进行字符编码;并根据所述游程位宽,对所述输入数据中位于所述首位数字之后的其他所述第一预设数字进行编码,得到所述游程,写入所述目标编码中。
具体地,若输入数据中排列在首位的数据是第一预设数字,则编码装置1001将首位排列的该第一预设数字作为第二预设数字看待,按照预先设定的第一预设数字的数据位宽进行字符编码。进一步,若首位排列的第一预设数字之后还排列有第一预设数字,则编码装置1001用游程代替首位排列的第一预设数字之后的其他第一预设数字。
上述处理器中,根据游程位宽,对不同形式排列的第一预设数字进行游程编码,从而实现了多种情况下的数据压缩,实现了数据编码的多样性以及兼容性。
在其中一个实施例中,编码模块1001还用于利用第一预设字符,对字符编码后的所述第一预设数字以及字符编码后的所述第一预设数字之后的游程进行替换。
其中,若游程达到游程阈值,则编码模块1001选取出现频率较少的数据作为第一预设字符。具体地,当连续排列的第一预设数字的数目大于游程阈值,且首位排列的第一预设数字之后连续排列的第一预设数字的数目达到游程阈值时,在第二级流水线,将首位排列的字符编码后的第一预设数字以及其后连续排列的多个第一预设数字的游程用第一预设字符代替,从而进一步实现数据压缩。
上述处理器中,通过设置两级流水线执行编码操作,能够进一步实现数据压缩,从而提高了游程编码的效率
在其中一个实施例中,编码模块1001还用于若所述目标编码中存在与所述第一预设字符值相同的字符编码,则为与所述第一预设字符数值相同的字符编码设置附加字符校验位。
具体地,可以为与该第一预设字符数值相同的字符编码增加一个附加字符校验位,也可以增加多个附加字符校验位,此处不做具体限定。基于节约带宽的考虑,优选为增加一个附加字符校验位,并将该附加字符校验位设置在字符串的最末位。
上述处理器中,通过为与第一预设字符数值相同的字符编码设置附加字符校验位,能够将第一预设字符和与第一预设字符数值相同的字符编码进行区分,从而解决了第一预设字符的定义冲突问题。
在其中一个实施例中,编码模块1001还用于用第二预设字符对所述第一预设字符进行替换;若所述目标编码中存在与所述第二预设字符值相同的字符编码,则为与所述第二预设字符数值相同的字符编码设置附加字符校验位。
具体地,选取出现频率更少的数据作为第二预设字符,编码模块用该第二预设字符对第一预设字符进行替换。可以为与该第二预设字符数值相同的字符编码增加一个附加字符校验位,也可以增加多个附加字符校验位,此处不做具体限定。基于节约带宽的考虑,优选为增加一个附加字符校验位,并将该附加字符校验位设置在字符串的最末位。
上述处理器中,通过第二预设字符对第一预设字符进行替换,并为与第二预设字符数值相同的字符编码设置附加字符校验位,能够将第二预设字符和与第二预设字符数值相同的字符编码进行区分,从而解决了第二预设字符的定义冲突问题;同时,通过选取出现频率更少的第二预设字符进行区分,能够进一步减少处理器的额外负担。
在其中一个实施例中,如图2所示,提供了一种处理器2000,该处理器2000包括运算单元12、与运算单元12邻近设置的存储单元10以及控制器单元11,控制器单元11连接于运算单元12与存储单元10之间。其中,运算单元12包括编码模块2001,该编码模块2001包括控制信号接口2002、缓存2003、多个寄存器2004、配置模块2005以及输出模块2006。
其中,控制信号接口2002作为外部输入的硬件接口,用于实现编码模块2001与控制器单元11之间的连接以及数据传输。
其中,缓存2003分别与缓存2003邻近设置的寄存器2004、配置模块2005以及输出模块2006连接,用于存储输入数据、第一预设字符、第二预设字符以及第一预设字符编码。
作为一种可选的实施方式,如图3所示,缓存2003包括输入数据缓存20031、以及预设字符缓存20032,预设字符缓存20032包括第一预设字符缓存20033、第二预设字符缓存20034以及第一预设字符编码缓存20035;
其中,输入数据缓存20031用于存储输入该编码模块2001中的待编码数据;第一预设字符缓存20033用于存储第一预设字符;第二预设字符缓存20034用于存储第二预设字符;第一预设字符编码缓存20035用于存储将第一预设字符进行编码得到的第一预设字符编码。
其中,多个寄存器2004,用于存储多级流水线的执行结果。
具体地,每一级流水线对应一个寄存器2004,寄存器2004用于存储与其对应的那一级流水线执行数据编码后得到的中间编码结果。
其中,配置模块2005用于对第一预设字符进行编码,得到第一预设字符编码,并将第一预设字符编码存储至缓存2003中。
其中,输出模块2006用于存储并输出编码数据。
具体地,输出模块2006可以存储当前码流已经编码完成的数据,并将编码后的数据输出至运算单元12中参与转发和运算。
上述处理器中,通过对编码模块进行改进,通过为每一级流水线设置段间寄存器,能够存储各级流水线执行过程中的中间编码结果;通过在配置模块中对第一预设字符提前进行编码并存储在缓存中,当字符定义冲突需要进行替换时,直接用缓存中存储的第一预设字符编码进行字符替换,从而省去了重复编码的过程。
本申请提供的解码方法,可以应用于如图4所示的处理器3000中。该处理器3000包括运算单元12、与运算单元12邻近设置的存储单元10以及控制器单元11,控制器单元11连接于运算单元12与存储单元10之间。其中,运算单元12包括解码模块3001,该解码模块3001用于将编码数据中的游程按照数据位宽进行字符编码,得到第一预设数字。
具体地,解码模块3001可以将编码数字中的游程按照设定的数据位宽进行字符编码,得到一个或多个连续排列的第一预设数字。需要说明的是,通过解码模块3001解码得到的第一预设数字的数目与游程表示的所述第一预设数字的数目相同。
其中,存储单元10用于存储原始数据以及编码后的数据,并与控制器单元11以及运算单元12之间进行数据传输。
具体地,该存储单元10可以是设置在处理器3000内部的缓存器和/或寄存器。该存储单元10可以是非易失性存储器或易失性存储器,此处不做具体限定。存储单元10与控制器单元11以及运算单元12之间传输的数据形式可以为原始数据,也可以为编码后的数据。
其中,控制器单元11用于获取输入数据以及计算指令,并将解析该计算指令得到的多个运算指令以及输入数据发送至运算单元12。
具体的,获取输入数据以及计算指令方式可以通过数据输入输出单元得到,该数据输入输出单元具体可以为一个或多个数据I/O接口或I/O引脚。
上述计算指令包括但不限于:正向运算指令或反向训练指令,或其他神经网络运算指令等等,例如卷积运算指令,本申请具体实施方式并不限制上述计算指令的具体表现形式。
具体地,控制器单元11对获取到的计算指令进行解析,得到多个运算指令。进一步,控制器单元11将解析得到的多个运算指令以及获取到的输入数据发送至运算单元12。
上述处理器中,通过在运算单元中设置解码模块,对游程编码过的数据进行字符编码,恢复为原始数据参与运算,从而在数据压缩的前提下保证运算正确性。
在其中一个实施例中,解码模块3001还用于识别所述编码数据,得到字符编码及预设字符编码,并根据所述数据位宽,将所述预设字符编码进行展开,得到一个所述第一预设数字的字符编码以及游程阈值;将所述游程阈值按照所述数据位宽进行展开,得到多个连续排列的所述第一预设数字。
具体地,在第一级流水线,解码模块3001用排列在前的一个第一预设数字的字符编码以及其后排列的游程阈值来代替编码数据中的第一预设字符和/或第二预设字符。进一步,在第二级流水线,解码模块3001用多个连续排列的第一预设数字来代替排列在第一预设数字的字符编码之后的游程阈值。
上述处理器中,通过设置两级流水线执行解码操作,提高了解码的效率。
在其中一个实施例中,解码模块3001还用于若所述编码数据中包括多个数值相同的字符编码,则通过判断所述字符编码是否包括附加字符校验位来识别所述预设字符编码。
具体地,解码模块3001将字符编码的数据长度与设定的数据位宽进行比较,字符编码的数据长度与设定的数据位宽相等,则判断该字符编码中没有设置附加字符校验位,将没有设置附加字符校验位的字符编码识别为预设字符编码。
在其中一个实施例中,如图5所示,提供了一种处理器4000,该处理器4000包括运算单元12、与运算单元12邻近设置的存储单元10以及控制器单元11,控制器单元11连接于运算单元12与存储单元10之间。其中,运算单元12包括解码模块4001,该解码模块4001包括控制信号接口4002、缓存4003、多个寄存器4004以及输出模块4005。
其中,控制信号接口4002作为外部输入的硬件接口,用于实现解码模块4001与控制器单元11之间的连接以及数据传输。
其中,缓存4003与其邻近设置的寄存器4004以及输出模块4005连接,用于存储编码数据。
其中,多个寄存器4004,用于存储多级流水线的执行结果。
具体地,每一级流水线对应一个寄存器4004,寄存器4004用于存储与其对应的那一级流水线执行数据编码后得到的中间编码结果。
其中,输出模块4005用于存储并输出解码后的数据。
具体地,输出模块4005可以存储当前码流已经解码完成的数据,并将解码后的数据输出至运算单元12中参与转发和运算。
上述处理器中,通过对解码模块进行改进,通过为每一级流水线设置段间寄存器,能够存储各级流水线执行过程中的中间编码结果;通过多级流水线并行执行解码操作,从而进一步提高解码效率。
在其中一个实施例中,请参阅图6至图9,运算单元12包括主处理电路101和至少一个从处理电路102,至少一个从处理电路102均连接至主处理电路101,主处理电路101与分支处理电路103(一个或多个)连接,分支处理电路103与一个或多个从处理电路102连接。
其中,分支处理电路103用于执行转发主处理电路101与从处理电路102之间的数据或指令。主处理电路101用于与存储单元10之间进行原始数据及编码数据的数据传输。主处理电路101包括编码模块1001,该编码模块1001用于利用两级流水线对原始数据进行游程编码,并将编码后的数据通过数据I/O单元203广播发送至从一个或多个从处理电路102进行矩阵乘法运算。从处理电路1002包括编码模块1001,该编码模块1001用于对乘法运算的运算结果进行游程编码,并将编码后的数据发送至主处理电路101进行累加和激活运算。
在其中一个实施例中,请继续参阅图6至图9,从处理电路1002还包括解码模块3001,该解码模块3001用于利用两级流水线,对从处理电路102接收到的编码数据进行解码,并将解码后的数据发送至从处理电路102中参与矩阵乘法运算。主处理电路101还包括解码模块3001,该解码模块3001用于利用两级流水线,对主处理电路101接收到的编码后的运算结果进行解码,并将解码后的数据发送至主处理电路101中参与累加和激活运算。
在其中一个实施例中,处理器还可以包括控制器电路11,该控制器电路11包括:指令存储单元110、指令处理单元111和存储队列单元113。
其中,指令存储单元110,用于存储人工神经网络运算关联的计算指令。
指令处理单元111,用于对计算指令解析得到多个运算指令。
存储队列单元113,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令和/或计算指令。
作为一种可选的实施方式,主处理电路101还可以包括:转换处理电路1110、激活处理电路1111、加法处理电路1112中的一种或任意组合;
转换处理电路1110,用于将主处理电路接收的数据块或中间结果执行第一数据结构与第二数据结构之间的互换(例如连续数据与离散数据的转换);或将主处理电路接收的数据块或中间结果执行第一数据类型与第二数据类型之间的互换(例如定点类型与浮点类型的转换);
激活处理电路1111,用于执行主处理电路内数据的激活运算;
加法处理电路1112,用于执行加法运算或累加运算。
所述主处理电路,用于确定所述输入神经元为广播数据,权值为分发数据,将分发数据分配成多个数据块,将所述多个数据块中的至少一个数据块以及多个运算指令中的至少一个运算指令发送给所述从处理电路;
所述多个从处理电路,用于依据该运算指令对接收到的数据块执行运算得到中间结果,并将运算结果传输给所述主处理电路;
所述主处理电路,用于将多个从处理电路发送的中间结果进行处理得到该计算指令的结果,将该计算指令的结果发送给所述控制器单元。
所述从处理电路包括:乘法处理电路;
所述乘法处理电路,用于对接收到的数据块执行乘积运算得到乘积结果;
转发处理电路(可选的),用于将接收到的数据块或乘积结果转发。
累加处理电路,所述累加处理电路,用于对该乘积结果执行累加运算得到该中间结果。
另一个实施例里,该运算指令为矩阵乘以矩阵的指令、累加指令、激活指令等等计算指令。
在一个实施例中,当接收到编码指令后,处理器1000或处理器2000可执行如图10所示的编码方法,包括以下步骤:
步骤202,获取输入数据。
其中,输入数据指的是原始数据,即待编码数据。具体地,处理器从存储单元中获取待编码数据,并将获取到的待编码数据发送至运算单元的编码模块中。
步骤204,根据游程位宽对所述输入数据中的第一预设数字进行编码,得到游程,写入目标编码中;其中,所述游程用于表示连续排列的所述第一预设数字的数目。
其中,游程位宽指的是游程在总线上所占用的数据长度。第一预设数字一般用来指代输入数据中出现频率较高的数字,例如:稀疏化神经网络中,稀疏数据模型中会出现大量连续排列的的零值,因此,将零值作为第一预设数字进行编码。
具体地,处理器中的编码模块可以用游程来代替输入数据中的第一预设数字,例如:稀疏化神经网络中,输入数据为{1,0,0,0,2,0,3,0,0},设定游程位宽为2bit,第一预设数字为0,按照8bit的数据位宽对该输入数据进行编码。
输入数据为:1,0,0,0,2,0,3,0,0
编码结果为:00000001,11,00000010,01,00000011,10
其中,用游程11表示输入数据中连续排列的三个0;用游程01表示输入数据中的一个0;用游程10表示输入数据中连续排列的两个0。
上述编码方法中,通过将待编码数据中的第一预设数字进行游程编码,并用游程表示连续排列的第一预设数字的数目,能够对大量连续出现的第一预设数字进行数据压缩,节省了带宽资源。
作为一个可选的实施方式,如图10所示的编码方法中还包括以下步骤:
步骤302,对所述输入数据进行统计,得到所述第一预设数字的出现频率。
例如:稀疏化神经网络中,通过统计待编码数据发现80%的0都是连续3个或3个以下出现,也就是说,很少出现3个以上的0连续出现的情况。
步骤304,根据所述第一预设数字的出现频率,设定所述游程位宽。
具体地,根据步骤302中统计的第一预设数字0的出现频率,设定游程位宽。优选的,可以将游程位宽设定为2bit。
在其中一个实施例中,步骤204具体包括以下步骤:
步骤2042,将所述输入数据拆分为第二预设数字和所述第一预设数字。
其中,第二预设数字包括除第一预设数字以外的其他数字,一般用来指代输入数据中除了出现频率较高的数字以外的其他数字,例如:稀疏化神经网络中,一般将稀疏数据模型中的零值作为第一预设数字,将稀疏数据模型中的非零值作为第二预设数字。
步骤2044,根据所述游程位宽,得到游程阈值。
其中,游程阈值指的是游程最多能够表示的连续排列的的第一预设数字的数目。具体地,处理器中的编码模块可以根据设定的游程位宽,得到游程阈值,例如:设定游程位宽为2bit,则游程最多能表示连续排列的三个第一预设数字,即游程阈值为3。
步骤2046,若所述第二预设数字后连续排列的所述第一预设数字的数目小于或等于所述游程阈值,则将所述第二预设数字后连续排列的多个所述第一预设数字进行编码,得到所述游程。
具体地,处理器中的编码模块获取第二预设数字后连续排列的第一预设数字的数目,并将获取到的第二预设数字后连续排列的第一预设数字的数目与游程阈值进行比较,判断第二预设数字后连续排列的第一预设数字的数目是否小于或等于游程阈值,若第二预设数字后连续排列的第一预设数字的数目小于或等于游程阈值,则用游程代替第二预设数字后连续排列的多个第一预设数字,从而实现对第二预设数字后连续排列的多个第一预设数字的数据压缩。编码模块首先获取到第二预设数字1后面连续排列着三个第一预设数字0,而游程位宽为2bit的游程最多能表示连续排列的三个第一预设数字,即游程阈值为3,那么,可以用游程11来代替第二预设数字1后面连续排列的三个第一预设数字0。
在其中一个实施例中,提供了另一种编码方法,包括以下步骤:
步骤402,若连续排列的所述第一预设数字的数目大于所述游程阈值,则根据所述第一预设数字的数据位宽,将大于所述游程阈值后排列在首位的所述第一预设数字进行字符编码。
其中,可以根据处理器的需求提前设定第一预设数字的数据位宽。可选的,可以将第一预设数字设定为8bit的数据位宽,也可以设定为16bit的数据位宽,此处不做具体限定。
具体地,处理器中的编码模块获取连续排列的第一预设数字的数目,并将获取到的连续排列的第一预设数字的数目与游程阈值进行比较,判断连续排列的第一预设数字的数目是否大于游程阈值,若连续排列的第一预设数字的数目大于游程阈值,则游程编码停止,并将大于游程阈值后排列的首位第一预设数字作为第二预设数字看待,按照预先设定的第一预设数字的数据位宽进行字符编码。
步骤404,根据所述游程位宽,对大于所述游程阈值后排列在首位的所述第一预设数字之后的其他所述第一预设数字进行编码,得到所述游程。
具体地,用游程代替大于游程阈值后排列的首位第一预设数字之后的其他第一预设数字,从而实现对大于游程阈值后排列的首位第一预设数字之后的多个第一预设数字的数据压缩。
举例说明,稀疏化神经网络中,输入数据为{1,0,0,0,0,2,0,3,0,0},设定游程位宽为2bit,第一预设数字为0,则其他非零值1、2和3均为第二预设数字,第一预设数字以及第二预设数字的数据位宽均为8bit,对该输入数据进行编码。
输入数据为:1,0,0,0,0,2,0,3,0,0
编码结果为:00000001,00000000,11,00000010,01,00000011,10
编码模块首先获取到连续排列着四个第一预设数字0,而游程位宽为2bit的游程最多能表示连续排列的三个第一预设数字,即游程阈值为3,那么,将排列在首位的第一预设数字0按照8bit的数据位宽字符编码,并将其后连续排列的三个第一预设数字0进行编码,即用游程11来代替其后连续排列的三个第一预设数字0。
在其中一个实施例中,提供了另一种编码方法,包括:若所述输入数据的首位数字为所述第一预设数字,则根据所述第一预设数字的数据位宽,将所述第一预设数字进行字符编码。
具体地,若输入数据中排列在首位的数据是第一预设数字,则根据数字+游程的编码规则,不能用游程将该第一预设数字进行替换,应将首位排列的该第一预设数字作为第二预设数字看待,按照预先设定的第一预设数字的数据位宽进行字符编码。
举例说明,稀疏化神经网络中,输入数据为{0,1,0,0,2,0,3,0,0},设定游程位宽为2bit,第一预设数字为0,则其他非零值1、2和3均为第二预设数字,第一预设数字以及第二预设数字的数据位宽均为8bit,对该输入数据进行编码。
输入数据为:0,1,0,0,2,0,3,0,0
编码结果为:00000000,00000001,10,00000010,01,00000011,10
编码模块将首位排列的第一预设数字0按照8bit的数据位宽字符编码,并将其他第一预设数字以及第二预设数字按照如图10所示的编码方法进行编码。
作为一种可选的实施方式,若首位排列的第一预设数字之后还排列有第一预设数字,则根据所述游程位宽,对所述输入数据中首位排列的所述第一预设数字之后的其他所述第一预设数字进行编码,得到所述游程。
具体地,用游程代替首位排列的第一预设数字之后的其他第一预设数字,从而实现对首位排列的第一预设数字之后的其他第一预设数字的数据压缩。
举例说明,稀疏化神经网络中,输入数据为{0,0,0,0,2,0,3,0,0},设定游程位宽为2bit,第一预设数字为0,则其他非零值1、2和3均为第二预设数字,第一预设数字以及第二预设数字的数据位宽均为8bit,对该输入数据进行编码。
输入数据为:0,0,0,0,2,0,3,0,0
编码结果为:00000000,11,00000010,01,00000011,10
编码模块将首位排列的第一预设数字0按照8bit的数据位宽字符编码,将其后连续排列的三个第一预设数字0进行编码,即用游程11来代替其后连续排列的三个第一预设数字0,并将其他第一预设数字以及第二预设数字按照如图8所示的编码方法进行编码。
上述编码方法中,根据游程位宽,对不同形式排列的第一预设数字进行游程编码,从而实现了多种情况下的数据压缩,实现了数据编码的多样性以及兼容性。
在其中一个实施例中,提供了另一种编码方法,包括:利用第一预设字符,对字符编码后的所述第一预设数字以及字符编码后的所述第一预设数字之后的游程进行替换。
其中,选取出现频率较少的数据按照第一预设字符的数据位宽进行字符编码,并将字符编码后的字符作为第一预设字符。例如:选取出现频率较少的数据64按照第一预设字符的数据位宽8bit进行字符编码,得到01000000,将01000000作为第一预设字符。
作为一种可选的实施方式,当连续排列的第一预设数字的数目大于游程阈值,且首位排列的第一预设数字之后连续排列的第一预设数字的数目达到游程阈值时,在第二级流水线,将首位排列的字符编码后的第一预设数字以及代替其后连续排列的多个第一预设数字的游程用第一预设字符代替,从而进一步实现数据压缩。
在其中一个实施例中,该编码方法还包括以下步骤:
步骤502,获取第一预设字符编码,其中,所述第一预设字符编码为在配置模块中对所述第一预设字符进行编码后得到的字符编码。
具体地,选取出现频率较少的数据作为第一预设字符(zero literal),编码模块中的配置模块将第一预设字符(zero literal)提前进行编码,得到第一预设字符编码(zero code)。
步骤504,利用所述第一预设字符编码,对字符编码后的所述第一预设数字以及字符编码后的所述第一预设数字之后的游程进行替换。
具体地,将步骤502中的第一预设字符编码(zero code)替换字符编码后的第一预设数字,以及字符编码后的第一预设数字后的游程。
举例说明,
输入数据为:1,0,0,0,0,2,0,3,0,0
编码结果为:00000001,00000000,11,00000010,01,00000011,10
第二级编码结果为:00000001,01000000,00000010,01,00000011,10
在第二级流水线,选取出现频率较少的数据64作为第一预设字符(zeroliteral),对第一预设字符64提前进行编码,得到第一预设字符编码01000000,用第一预设字符编码01000000对首位排列的字符编码后的第一预设数字00000000以及用于表示其后连续出现的三个第一预设数字0的游程11进行代替。
上述编码方法中,通过设置两级流水线执行编码操作,能够进一步实现数据压缩,从而提高了游程编码的效率;同时,通过将第一预设字符提前进行编码,从而省去了重复编码的过程。
在其中一个实施例中,提供了另一种编码方法,包括:为与所述第一预设字符数值相同的字符编码设置附加字符校验位。
其中,编码模块可以为与该第一预设字符数值相同的字符编码增加一个附加字符校验位,也可以增加多个附加字符校验位,此处不做具体限定。基于节约带宽的考虑,优选为增加一个附加字符校验位,并将该附加字符校验位设置在字符串的最末位。可以将该附加字符校验位的字符设置为0或1,并将该字符编码连同附加字符一起输出至运算单元参与运算。
举例说明,选取出现频率较少的数据64作为第一预设字符(zero literal),编码模块将预设字符64提前进行编码,得到第一预设字符编码(zero code)01000000。若出现数值为64的字符编码,为了将该字符编码与第一预设字符进行区分,编码模块为与该字符编码01000000增加一个附加字符校验位,即增加1bit,并将增加的附加字符校验位设置为0,则输出的数据为010000000,输出的数据长度为9bit。
上述编码方法中,通过为与第一预设字符数值相同的字符编码设置附加字符校验位,能够将第一预设字符和与第一预设字符数值相同的字符编码进行区分,从而解决了第一预设字符的定义冲突问题。
在其中一个实施例中,提供了另一种编码方法,包括:用第二预设字符对第一预设字符进行替换;若所述目标编码中存在与所述第二预设字符值相同的字符编码,则为与第二预设字符数值相同的字符编码设置附加字符校验位。
具体地,选取出现频率更少的数据作为第二预设字符,编码模块用该第二预设字符对第一预设字符进行替换。可以为与该第二预设字符数值相同的字符编码增加一个附加字符校验位,也可以增加多个附加字符校验位,此处不做具体限定。基于节约带宽的考虑,优选为增加一个附加字符校验位,并将该附加字符校验位设置在字符串的最末位。
举例说明,若出现数值为64的字符编码,为了将该字符编码与第一预设字符进行区分,选取出现频率更少的数据128作为第二预设字符(zero extra),编码模块用第二预设字符128将数值为64的字符编码进行替换。进一步,若出现数值为128的字符编码,为了将该字符编码与第二预设字符进行区分,编码模块为数值为128的字符编码10000000增加一个附加字符校验位,即增加1bit,并将增加的附加字符校验位设置为1,则输出的数据为10000000 1,输出的数据长度为9bit。
上述编码方法中,通过第二预设字符对第一预设字符进行替换,并为与第二预设字符数值相同的字符编码设置附加字符校验位,能够将第二预设字符和与第二预设字符数值相同的字符编码进行区分,从而解决了第二预设字符的定义冲突问题;同时,通过选取出现频率更少的第二预设字符进行区分,能够进一步减少处理器的额外负担。
在一个实施例中,当接收到解码指令后,处理器3000或处理器4000可执行如图11所示的解码方法,包括以下步骤:
步骤602,获取编码数据。
具体地,处理器获取经过编码模块进行游程编码后的数据。
步骤604,根据数据位宽和游程位宽,对所述编码数据进行识别,得到字符编码及游程。
其中,游程位宽指的是游程在总线上所占用的数据长度。处理器可以根据需求提前设定数据位宽。可选的,可以设定8bit的数据位宽,也可以设定16bit的数据位宽,此处不做具体限定。字符编码指的是数据的另一种形式,例如:十进制的数据可以经过编码得到二进制的字符编码。游程用于表示编码数据中第一预设数字的数目。
具体地,处理器获取编码数据的数据长度,并将获取到的编码数据的数据长度与设定的数据位宽和游程位宽进行比较,从而从该编码数据中识别出字符编码和游程。例如:设定数据位宽为8bit,游程位宽为2bit,若获取到的编码数据的数据长度为8bit,则将该编码数据识别为字符编码;若获取到的编码数据的数据长度为2bit,则将该编码数据识别为游程。
步骤606,将所述游程按照数据位宽进行字符编码,得到第一预设数字。
其中,第一预设数字一般用来指代输入数据中出现频率较高的数字,例如:稀疏化神经网络中,稀疏数据模型中会出现大量连续排列的的零值,因此,将零值作为第一预设数字。
具体地,处理器中解码模块将编码数字中的游程按照设定的数据位宽进行字符编码,得到一个或多个连续排列的第一预设数字。
上述解码方法中,通过对游程编码过的数据进行字符编码,恢复为原始数据参与运算,从而在数据压缩的前提下保证运算正确性。
在其中一个实施例中,步骤604具体包括以下步骤:
步骤6042,获取所述编码数据中字符串的数据长度。
其中,编码数据中包括多个字符串,解码装置获取编码数据中每一字符串的数据长度,根据每一字符串的数据长度,对该字符串进行识别。
步骤6044,若所述字符串的数据长度与所述数据位宽相等,则将所述字符串识别为字符编码;若所述字符串的数据长度与所述游程位宽相等,则将所述字符串识别为游程。
具体地,解码装置根据步骤604中设定的数据位宽和游程位宽,判断字符串的数据长度与数据位宽是否相等,若该字符串的数据长度与该数据位宽相等,则将该字符串识别为字符编码。进一步,判断字符串的数据长度与游程位宽是否相等,若该字符串的数据长度与该游程位宽相等,则将该字符串识别为游程。
在其中一个实施例中,步骤606具体包括:
将所述游程按照所述数据位宽进行字符编码,得到一个所述第一预设数字。
或将所述游程按照所述数据位宽进行字符编码,得到多个连续排列的所述第一预设数字。
其中,所述多个连续排列的所述第一预设数字中,所述第一预设数字的数目与所述游程表示的所述第一预设数字的数目相同。
举例说明,
编码数据为:00000001,11,00000010,01,00000011,10
解码结果为:1,0,0,0,2,0,3,0,0
设定数据位宽为8bit,第一预设数字为0,通过步骤6044将编码数据中的游程11字符编码为三个连续排列的第一预设数字0;通过步骤6042将编码数据中的游程01字符编码为一个第一预设数字0;通过步骤6044将编码数据中的游程10字符编码为两个连续排列的第一预设数字0。
在一个实施例中,当接收到解码指令后,处理器3000或处理器4000可执行如图12所示的解码方法,包括以下步骤:
步骤702,获取编码数据。
具体地,处理器获取经过编码模块进行游程编码后的数据。
步骤704,对所述编码数据进行识别,得到字符编码及预设字符编码,其中,所述预设字符编码包括第一预设字符编码及第二预设字符编码。
其中,字符编码即预设字符编码均指的是数据的另一种形式,例如:十进制的数据可以经过编码得到二进制的字符编码。第一预设字符和第二预设字符指的是出现频率较少的数据,例如:数据64可以作为第一预设字符使用;数据128可以作为第二预设字符使用。
作为一种可选的实施方式,若所述编码数据中包括多个数值相同的字符编码,则通过判断所述字符编码是否包括附加字符校验位来识别所述预设字符编码。
步骤706,根据数据位宽,将所述预设字符编码进行展开,得到一个第一预设数字的字符编码以及游程阈值,其中,所述游程阈值排列在所述第一预设数字的字符编码之后。
其中,处理器可以根据需求提前设定数据位宽。可选的,可以设定8bit的数据位宽,也可以设定16bit的数据位宽,此处不做具体限定。第一预设数字一般用来指代输入数据中出现频率较高的数字,例如:稀疏化神经网络中,稀疏数据模型中会出现大量连续排列的的零值,因此,将零值作为第一预设数字。游程阈值指的是游程最多能够表示的连续排列的的第一预设数字的数目。
具体地,在第一级流水线,处理器中的解码装置用排列在前的一个第一预设数字的字符编码以及其后排列的游程阈值来代替编码数据中的第一预设字符和/或第二预设字符。
步骤708,将所述游程阈值按照所述数据位宽进行展开,得到多个连续排列的所述第一预设数字,其中,所述第一预设数字的数目与所述游程阈值表示的所述第一预设数字的数目相同。
其中,处理器可以根据需求提前设定数据位宽。可选的,可以设定8bit的数据位宽,也可以设定16bit的数据位宽,此处不做具体限定。游程用于表示编码数据中第一预设数字的数目。
具体地,在第二级流水线,处理器中的解码装置用多个连续排列的第一预设数字来代替排列在第一预设数字之后的游程阈值。
举例说明,
编码数据为:00000001,01000000,00000010,01,00000011,10
第一级解码结果为:00000001,00000000,11,00000010,01,00000011,10
第二级解码结果为:1,0,0,0,0,2,0,3,0,0
设定数据位宽为8bit,第一预设数字为0,在第一级流水线,将编码数据中的第一预设字符01000000进行字符编码,得到一个第一预设数字0以及排列在该第一预设数字0之后的游程阈值11;在第二级流水线,将游程阈值11字符编码为三个连续排列的第一预设数字0;将编码数据中的游程01字符编码为一个第一预设数字0;将编码数据中的游程10字符编码为两个连续排列的第一预设数字0。
上述解码方法中,通过设置两级流水线,能够提高解码的效率。
在其中一个实施例中,步骤704具体包括以下步骤:
步骤7042,获取所述编码数据中字符串的值。
其中,编码数据中包括多个字符串,解码装置获取编码数据中每一字符串的数据值,根据每一字符串的数据值,对该字符串进行识别。
步骤7044,若所述字符串的值与编码时使用的预设字符的值不同,则将所述字符串识别为字符编码;若所述字符串的值与编码时使用的预设字符的值相同,则将所述字符串识别为预设字符编码。
具体地,解码装置根据如图10所示的编码方法中设定的预设字符的值,判断字符串的值与编码时使用的预设字符的值是否相等,若该字符串的值与编码时使用的预设字符的值不相等,则将该字符串识别为字符编码;若该字符串的值与编码时使用的预设字符的值相等,则将该字符串识别为预设字符编码。
在其中一个实施例中,步骤704还包括:若所述编码数据中包括多个数值相同的字符编码,则通过判断所述字符编码是否包括附加字符校验位来识别所述预设字符编码。
作为一种可选的实施方式,具体包括以下步骤:
步骤7042a,获取所述字符编码的数据长度。
具体地,处理器中的解码装置获取多个数值相同的字符编码其中一个字符编码的数据长度。
步骤7044b,将所述字符编码的数据长度与所述数据位宽进行比较。
具体地,处理器中的解码装置将步骤7042中获取到的字符编码的数据长度与设定的数据位宽进行比较,判断步骤7042中获取到的字符编码的数据长度与设定的数据位宽是否相等。
步骤7046c,若所述字符编码的数据长度与所述数据位宽相等,则判断所述字符编码中没有设置所述附加字符校验位。
例如:若设定的数据位宽为8bit,获取到的字符编码的数据长度为8bit,获取到的字符编码的数据长度与设定的数据位宽相等,则判断获取到的字符编码中没有设置附加字符校验位;若获取到的字符编码的数据长度为9bit,获取到的字符编码的数据长度大于设定的数据位宽,则判断获取到的字符编码中设置有1bit的附加字符校验位。
步骤7048d,将没有设置所述附加字符校验位的字符编码识别为所述预设字符编码。
具体地,若步骤7046c中判断获取到的字符编码中没有设置附加字符校验位,则将该字符编码识别为预设字符编码。
在其中一个实施例中,将该解码方法应用到如图6-9所示的处理器中,包括:将解码后的数据在运算单元中进行转发和运算,所述运算包括乘法运算、累加运算以及激活运算。
作为一种可选的实施方式,具体包括以下步骤:
步骤802,若解码后的数据中包括设置有所述附加字符校验位的字符编码,则删除所述附加字符校验位。
其中,该字符编码可以包括一个附加字符校验位,也可以包括多个附加字符校验位,此处不做具体限定。基于节约带宽的考虑,优选为设置一个附加字符校验位,并将该附加字符校验位设置在该字符编码的最末位。可以将该附加字符校验位的字符设置为0或1。
需要说明的是,附加字符校验位只是用来区分真实数据和与真实数据数值相同的预设字符,并不作为有效数据使用,因此,在解码后的数据参与运算之前,需要先将该附加字符校验位删除。
步骤804,将删除所述附加字符校验位的字符编码在所述运算单元中进行转发和运算。
具体地,处理器中的主处理电路可以将编码后的数据发送至从处理电路,从处理电路将接收到的编码数据进行解码,并将解码后的数据执行乘法运算,得到多个中间运算结果。进一步,从处理电路将乘法运算得到的多个中间运算结果分别进行编码,并将编码后的多个中间运算结果发送至主处理电路,主处理电路将接收到的编码数据进行解码,并将解码后的数据执行累加和激活运算,得到多个中间运算结果。进一步,主处理电路将累加和激活运算得到的多个中间运算结果分别进行编码,并将编码后的多个中间运算结果发送至存储单元进行存储。
应该理解的是,虽然图10-12的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且图10-12中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图13所示,提供了一种编码装置,包括:输入数据获取模块901以及游程获取模块902,其中:
输入数据获取模块901,用于获取输入数据;
游程获取模块902,用于根据游程位宽对所述输入数据中的第一预设数字进行编码,得到游程,写入目标编码中;其中,所述游程用于表示所述第一预设数字的数目。
在一个实施例中,如图14所示,提供了一种解码装置,包括:编码数据获取模块1001、编码数据识别模块1002以及第一预设数字获取模块1003,其中:
编码数据获取模块1001,用于获取编码数据;
编码数据识别模块1002,用于根据数据位宽和游程位宽,对所述编码数据进行识别,得到字符编码及游程。
第一预设数字获取模块1003,用于将所述游程按照所述数据位宽进行展开,得到第一预设数字。
在一个实施例中,如图15所示,提供了一种解码装置,包括:编码数据获取模块1101、编码数据识别模块1102、预设字符编码展开模块1103以及游程阈值展开模块1104,其中:
编码数据获取模块1101,用于获取编码数据;
编码数据识别模块1102,用于对所述编码数据进行识别,得到字符编码及预设字符编码,其中,所述预设字符编码包括第一预设字符编码及第二预设字符编码;
预设字符编码展开模块1103,用于根据数据位宽,将所述预设字符编码进行展开,得到一个第一预设数字的字符编码以及游程阈值,其中,所述游程阈值排列在所述第一预设数字的字符编码之后;
游程阈值展开模块1104,用于将所述游程阈值按照所述数据位宽进行展开,得到多个连续排列的所述第一预设数字的字符编码,其中,所述第一预设数字的数目与所述游程阈值表示的所述第一预设数字的数目相同。
关于运算装置的具体限定可以参见上文中对于运算方法的限定,在此不再赘述。上述运算装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取输入数据;
根据游程位宽对所述输入数据中的第一预设数字进行编码,得到游程,写入目标编码中;其中,所述游程用于表示连续排列的所述第一预设数字的数目。
在一个实施例中,提供了另一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取编码数据;
根据数据位宽和游程位宽,对所述编码数据进行识别,得到字符编码及游程;
将所述游程按照所述数据位宽进行展开,得到第一预设数字。
在一个实施例中,提供了另一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取编码数据;
对所述编码数据进行识别,得到字符编码及预设字符编码,其中,所述预设字符编码包括第一预设字符编码及第二预设字符编码;
根据数据位宽,将所述预设字符编码进行展开,得到一个第一预设数字的字符编码以及游程阈值,其中,所述游程阈值排列在所述第一预设数字的字符编码之后;
将所述游程阈值按照所述数据位宽进行展开,得到多个连续排列的所述第一预设数字,其中,所述第一预设数字的数目与所述游程阈值表示的所述第一预设数字的数目相同。
应当清楚的是,本申请实施例中的计算机程序被处理器执行时实现的步骤,与上述实施例中的方法的各个步骤的执行过程一致,具体可参见上文的描述,此处不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (18)
1.一种编码方法,其特征在于,所述方法包括:
获取输入数据;
根据游程位宽对所述输入数据中的第一预设数字进行编码,得到游程,写入目标编码中;其中,所述游程用于表示连续排列的所述第一预设数字的数目。
2.根据权利要求1所述的方法,其特征在于,所述根据游程位宽对所述输入数据中的第一预设数字进行编码,得到游程,写入目标编码中,包括:
将所述输入数据拆分为第二预设数字和所述第一预设数字;
根据所述游程位宽,得到游程阈值;
若所述第二预设数字后连续排列的所述第一预设数字的数目小于或等于所述游程阈值,则对所述第二预设数字后连续排列的多个所述第一预设数字进行编码,得到所述游程。
3.根据权利要求2所述的方法,其特征在于,所述第一预设数字为零值,所述第二预设数字为非零值。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
若连续排列的所述第一预设数字的数目大于所述游程阈值,则根据所述第一预设数字的数据位宽,将大于所述游程阈值后排列在首位的所述第一预设数字进行字符编码;
根据所述游程位宽,对大于所述游程阈值后排列在首位的所述第一预设数字之后的其他所述第一预设数字进行编码,得到所述游程,写入所述目标编码中。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述输入数据的首位数字为所述第一预设数字,则根据所述第一预设数字的数据位宽,将所述第一预设数字进行字符编码。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
根据所述游程位宽,对所述输入数据中位于所述首位数字之后的其他所述第一预设数字进行编码,得到所述游程,写入所述目标编码中。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
对所述输入数据进行统计,得到所述第一预设数字的出现频率;
根据所述第一预设数字的出现频率,设定所述游程位宽。
8.根据权利要求4或6所述的方法,其特征在于,所述方法还包括:
利用第一预设字符,对字符编码后的所述第一预设数字以及字符编码后的所述第一预设数字之后的游程进行替换。
9.根据权利要求8所述的方法,其特征在于,所述利用第一预设字符,对字符编码后的所述第一预设数字以及字符编码后的所述第一预设数字之后的游程进行替换,包括:
获取第一预设字符编码,其中,所述第一预设字符编码为在配置模块中对所述第一预设字符进行编码后得到的字符编码;
利用所述第一预设字符编码,对字符编码后的所述第一预设数字以及字符编码后的所述第一预设数字之后的游程进行替换。
10.一种处理器,其特征在于,所述处理器包括运算单元、与所述运算单元邻近设置的存储单元以及控制器单元,所述控制器单元连接于所述运算单元与所述存储单元之间;
其中,所述运算单元包括编码模块,所述编码模块用于根据游程位宽对输入数据中的第一预设数字进行编码,得到游程,写入目标编码中;其中,所述游程用于表示所述第一预设数字的数目;
所述存储单元用于存储原始数据以及编码后的数据,并与所述控制器单元以及所述运算单元之间进行数据传输;
所述控制器单元用于获取输入数据以及计算指令,并将解析该计算指令得到的多个运算指令以及所述输入数据发送至所述运算单元。
11.根据权利要求10所述的处理器,其特征在于,
所述编码模块还用于根据所述第一预设数字的数据位宽,将大于游程阈值后排列在首位的所述第一预设数字进行字符编码;并根据所述游程位宽,对大于所述游程阈值后排列在首位的所述第一预设数字之后的其他所述第一预设数字进行编码,得到所述游程,写入所述目标编码中。
12.根据权利要求10所述的处理器,其特征在于,
所述编码模块还用于若所述输入数据的首位数字为所述第一预设数字,则根据所述第一预设数字的数据位宽,将所述第一预设数字进行字符编码;并根据所述游程位宽,对所述输入数据中位于所述首位数字之后的其他所述第一预设数字进行编码,得到所述游程,写入所述目标编码中。
13.根据权利要求11所述的处理器,其特征在于,
所述编码模块还用于利用第一预设字符,对字符编码后的所述第一预设数字以及字符编码后的所述第一预设数字之后的游程进行替换。
14.根据权利要求13所述的处理器,其特征在于,所述编码模块包括控制信号接口、缓存、多个寄存器、配置模块以及输出模块;
其中,所述控制信号接口用于实现所述编码模块与所述控制器单元之间的连接以及数据传输;
所述缓存分别与所述缓存邻近设置的寄存器以及所述配置模块连接,用于存储输入数据、所述第一预设字符以及第一预设字符编码;
所述多个寄存器用于存储多级流水线的执行结果;
所述配置模块用于对所述第一预设字符进行编码,得到第一预设字符编码,并将所述第一预设字符编码存储至所述缓存中;
所述输出模块用于存储并输出编码数据。
15.根据权利要求14所述的处理器,其特征在于,所述缓存包括输入数据缓存以及预设字符缓存,所述预设字符缓存包括所述第一预设字符缓存以及所述第一预设字符编码缓存;
其中,所述输入数据缓存用于存储输入所述编码模块中的待编码数据;
所述第一预设字符缓存用于存储所述第一预设字符;
所述第一预设字符编码缓存用于存储将所述第一预设字符进行编码得到的所述第一预设字符编码。
16.根据权利要求10-15中任一项所述的处理器,其特征在于,所述运算单元包括主处理电路和至少一个从处理电路,至少一个所述从处理电路均连接至所述主处理电路;
所述编码模块设置于所述主处理电路以及每一所述从处理电路中。
17.一种编码装置,其特征在于,所述装置包括:
输入数据获取模块,用于获取输入数据;
游程获取模块,用于根据游程位宽对所述输入数据中的第一预设数字进行编码,得到游程,写入目标编码中;其中,所述游程用于表示所述第一预设数字的数目。
18.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至9中任一项所述的方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811620288.7A CN111384969B (zh) | 2018-12-28 | 2018-12-28 | 编码方法、处理器、编码装置及存储介质 |
PCT/CN2019/121056 WO2020114283A1 (zh) | 2018-12-07 | 2019-11-26 | 数据处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811620288.7A CN111384969B (zh) | 2018-12-28 | 2018-12-28 | 编码方法、处理器、编码装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111384969A true CN111384969A (zh) | 2020-07-07 |
CN111384969B CN111384969B (zh) | 2023-06-02 |
Family
ID=71217140
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811620288.7A Active CN111384969B (zh) | 2018-12-07 | 2018-12-28 | 编码方法、处理器、编码装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111384969B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112181865A (zh) * | 2020-09-09 | 2021-01-05 | 北京爱芯科技有限公司 | 地址编码方法、装置、解码方法、装置及计算机存储介质 |
CN114697654A (zh) * | 2020-12-30 | 2022-07-01 | 中国科学院计算技术研究所 | 一种神经网络量化压缩方法及系统 |
CN112181865B (zh) * | 2020-09-09 | 2024-05-31 | 北京爱芯科技有限公司 | 地址编码方法、装置、解码方法、装置及计算机存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1022835A (ja) * | 1996-06-28 | 1998-01-23 | Sony Corp | 可変長符号化装置および可変長符号化方法、可変長復号化装置および可変長復号化方法、可変長符号処理装置、並びに画像符号化装置および画像復号化装置 |
CN1627646A (zh) * | 2003-12-12 | 2005-06-15 | 联发科技股份有限公司 | 运行长度有限码的编码解码方法及相关装置 |
US6914545B1 (en) * | 2004-10-13 | 2005-07-05 | Seiko Epson Corporation | Circuitry and methods for reducing run-length of encoded data |
US20060115170A1 (en) * | 2004-12-01 | 2006-06-01 | Ati Technologies Inc. | Image compression using variable bit size run length encoding |
CN1949670A (zh) * | 2005-10-10 | 2007-04-18 | 中兴通讯股份有限公司 | 一种数据压缩及解压缩方法 |
CN101026379A (zh) * | 2001-06-08 | 2007-08-29 | 神经网路处理有限公司 | 压缩装置及方法、解压缩装置及方法 |
CN101807926A (zh) * | 2010-01-21 | 2010-08-18 | 上海电力学院 | 低功耗soc测试数据压缩编码方法 |
CN102224727A (zh) * | 2008-12-05 | 2011-10-19 | 索尼公司 | 图像处理装置、图像处理方法和程序 |
CN107592116A (zh) * | 2017-09-21 | 2018-01-16 | 咪咕文化科技有限公司 | 一种数据压缩方法、装置及存储介质 |
-
2018
- 2018-12-28 CN CN201811620288.7A patent/CN111384969B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1022835A (ja) * | 1996-06-28 | 1998-01-23 | Sony Corp | 可変長符号化装置および可変長符号化方法、可変長復号化装置および可変長復号化方法、可変長符号処理装置、並びに画像符号化装置および画像復号化装置 |
CN101026379A (zh) * | 2001-06-08 | 2007-08-29 | 神经网路处理有限公司 | 压缩装置及方法、解压缩装置及方法 |
CN1627646A (zh) * | 2003-12-12 | 2005-06-15 | 联发科技股份有限公司 | 运行长度有限码的编码解码方法及相关装置 |
US6914545B1 (en) * | 2004-10-13 | 2005-07-05 | Seiko Epson Corporation | Circuitry and methods for reducing run-length of encoded data |
US20060115170A1 (en) * | 2004-12-01 | 2006-06-01 | Ati Technologies Inc. | Image compression using variable bit size run length encoding |
CN1949670A (zh) * | 2005-10-10 | 2007-04-18 | 中兴通讯股份有限公司 | 一种数据压缩及解压缩方法 |
CN102224727A (zh) * | 2008-12-05 | 2011-10-19 | 索尼公司 | 图像处理装置、图像处理方法和程序 |
CN101807926A (zh) * | 2010-01-21 | 2010-08-18 | 上海电力学院 | 低功耗soc测试数据压缩编码方法 |
CN107592116A (zh) * | 2017-09-21 | 2018-01-16 | 咪咕文化科技有限公司 | 一种数据压缩方法、装置及存储介质 |
Non-Patent Citations (1)
Title |
---|
唐金辉 等: "高通量图像视频计算", 《计算机研究与发展》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112181865A (zh) * | 2020-09-09 | 2021-01-05 | 北京爱芯科技有限公司 | 地址编码方法、装置、解码方法、装置及计算机存储介质 |
CN112181865B (zh) * | 2020-09-09 | 2024-05-31 | 北京爱芯科技有限公司 | 地址编码方法、装置、解码方法、装置及计算机存储介质 |
CN114697654A (zh) * | 2020-12-30 | 2022-07-01 | 中国科学院计算技术研究所 | 一种神经网络量化压缩方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111384969B (zh) | 2023-06-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111384959B (zh) | 编码方法、处理器、编码模块及存储介质 | |
CN100553152C (zh) | 基于cabac的编码方法和设备及解码方法和设备 | |
CN111384960B (zh) | 解码方法、处理器、解码装置及存储介质 | |
CN116681036B (zh) | 基于数字孪生的工业数据存储方法 | |
CN110784225A (zh) | 数据压缩、解压方法及相关装置、电子设备、系统 | |
CN103248367A (zh) | 码流数据的编码、解码方法和装置 | |
CN108886367A (zh) | 用于压缩和解压缩数据的方法、设备和系统 | |
CN113627207B (zh) | 条码识别方法、装置、计算机设备和存储介质 | |
CN108023597B (zh) | 一种数控系统可靠性数据压缩方法 | |
CN111384969B (zh) | 编码方法、处理器、编码装置及存储介质 | |
CN116016606A (zh) | 一种基于智慧云的污水处理运维数据高效管理系统 | |
CN113300715A (zh) | 一种数据处理方法、装置、硬件压缩设备以及介质 | |
CN111382849B (zh) | 数据压缩方法、处理器、数据压缩装置及存储介质 | |
US6748520B1 (en) | System and method for compressing and decompressing a binary code image | |
US20230222354A1 (en) | A method for a distributed learning | |
CN110363291B (zh) | 神经网络的运算方法、装置、计算机设备和存储介质 | |
CN110021368B (zh) | 比对型基因测序数据压缩方法、系统及计算机可读介质 | |
CN113497627A (zh) | 一种数据压缩和解压缩方法、装置及系统 | |
CN106452451A (zh) | 数据处理方法及装置 | |
US11443456B2 (en) | Data compression method and device | |
US10931303B1 (en) | Data processing system | |
CN108829930A (zh) | 三维数字化工艺设计mbd模型的轻量化方法 | |
CN115567058A (zh) | 一种结合预测与编码的时序数据有损压缩方法 | |
CN110111851B (zh) | 基因测序数据压缩方法、系统及计算机可读介质 | |
US20210099187A1 (en) | Data compression method and apparatus, and computer readable storage medium |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |