CN111381874A - Compress指令译码方法、数据处理方法、译码器及数据处理装置 - Google Patents

Compress指令译码方法、数据处理方法、译码器及数据处理装置 Download PDF

Info

Publication number
CN111381874A
CN111381874A CN201811622492.2A CN201811622492A CN111381874A CN 111381874 A CN111381874 A CN 111381874A CN 201811622492 A CN201811622492 A CN 201811622492A CN 111381874 A CN111381874 A CN 111381874A
Authority
CN
China
Prior art keywords
data
operand
instruction
compress
original
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
Application number
CN201811622492.2A
Other languages
English (en)
Other versions
CN111381874B (zh
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.)
Shanghai Cambricon Information Technology Co Ltd
Original Assignee
Shanghai Cambricon Information Technology 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 Shanghai Cambricon Information Technology Co Ltd filed Critical Shanghai Cambricon Information Technology Co Ltd
Priority to CN201811622492.2A priority Critical patent/CN111381874B/zh
Priority to PCT/CN2019/121056 priority patent/WO2020114283A1/zh
Publication of CN111381874A publication Critical patent/CN111381874A/zh
Application granted granted Critical
Publication of CN111381874B publication Critical patent/CN111381874B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30178Runtime instruction translation, e.g. macros of compressed or encrypted instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本申请涉及一种COMPRESS指令译码方法,通过对COMPRESS指令进行解析,扩展了指令集和译码器的硬件结构,提高了译码器的译码功能,完善了COMPRESS指令的操作。

Description

COMPRESS指令译码方法、数据处理方法、译码器及数据处理 装置
技术领域
本申请涉及数据处理技术领域,特别是涉及一种COMPRESS指令译码方法、数据处理方法、译码器及数据处理装置。
背景技术
随着数据处理技术的不断发展,人们对数据处理的兼容性的要求也越来越高,处理的数据越来越多,随之出现了越来越多的数据处理方法以及数据处理装置,来解决数据位数的问题。
传统的数据处理指令能够直接对数据进行压缩,得到压缩格式的数据,缺少一种得到特定格式的压缩数据的指令方法,同时对这样的方法进行解析的方法也比较缺少。
发明内容
基于此,有必要针对上述技术问题,提供一种能够得到特定格式的压缩数据的COMPRESS指令译码方法、数据处理方法、译码器及数据处理装置。
一种COMPRESS指令的译码方法,所述方法包括:
获取COMPRESS指令中原始数据的源数据,并根据所述原始数据的源数据对所述COMPRESS指令的第一操作进行配置,得到所述第一操作的第一操作数,其中,所述第一操作用于根据所述第一操作数读取所述原始数据,将所述原始数据划分为多个数据块,所述第一操作数包括立即数或寄存器号;
获取所述COMPRESS指令中压缩操作的源数据,并根据所述压缩操作的源数据对所述COMPRESS指令的第二操作进行配置,得到所述第二操作的第二操作数,其中,所述第二操作用于根据所述第二操作数,对所述数据块进行压缩;
获取所述COMPRESS指令中数据头的目的数据,并根据所述数据头的目的数据对所述COMPRESS指令的第三操作进行配置,得到所述第三操作的第三操作数,其中,所述第三操作用于根据所述第三操作数,写出压缩数据中的所述数据头,然后根据所述数据头与数据体之间的对应关系写出所述数据体,所述第三操作数包括立即数或寄存器号,所述压缩数据包括多个数据头和多个数据体,所述数据头中存储对应的所述数据体的起始地址和数据长度,所述数据体包含所述压缩数据的压缩编码值。
在其中一个实施例中,对获取的指令进行解析,并根据所述指令中的指令类别和指令类型确定所述指令为COMPRESS指令。
在其中一个实施例中,若所述第一操作数为立即数,则所述第一操作用于根据所述第一操作数,从第一存储装置中读取所述原始数据,其中,所述第一存储装置为片外存储装置;
若所述第一操作数为寄存器号,则所述第一操作用于根据所述第一操作数,从第二存储装置中读取所述原始数据,其中,所述第二存储装置为片内存储装置。
在其中一个实施例中,根据所述COMPRESS指令中原始数据的源地址以及换行距离,得到所述第一操作数中所述原始数据的原始地址;
根据所述原始地址对所述COMPRESS指令的第一操作进行配置,得到所述第一操作的第一操作数。
在其中一个实施例中,根据所述COMPRESS指令中数据块的块内行数以及块内单行数量对所述COMPRESS指令的第一操作进行配置,得到所述第一操作的第一操作数,其中,所述第一操作用于根据所述第一操作数中的数据块的块内行数以及块内单行数量,将所述原始数据划分为多个数据块。
在其中一个实施例中,根据所述COMPRESS指令中游程编码的源数据,对所述COMPRESS指令的第二操作进行配置,得到所述第二操作的第二操作数,其中,所述第二操作用于根据所述第二操作数中的游程编码的源数据,选择是否使用游程编码进行压缩。
在其中一个实施例中,根据所述COMPRESS指令中混洗源数据,对所述COMPRESS指令的第二操作进行配置,得到所述第二操作的第二操作数,其中,所述第二操作用于根据所述第二操作数中的混洗源数据,选择是否在压缩操作之前进行数据混洗。
在其中一个实施例中,根据所述COMPRESS指令中的窗口参数,对所述COMPRESS指令的第一操作进行配置,得到所述第一操作的第一操作数,其中,所述第一操作用于根据所述第一操作数,对所述原始数据进行非整块读取。
在其中一个实施例中,根据所述COMPRESS指令中的数据头的目的地址和地址偏移,得到所述第三操作数中的所述数据头的目标地址;
根据所述数据头的目标地址对所述COMPRESS指令的第三操作进行配置,得到所述第三操作的第三操作数。
在其中一个实施例中,根据所述COMPRESS指令中数据头的行数、换行距离、单行数据头数量对所述COMPRESS指令的第三操作进行配置,得到所述第三操作的第三操作数,其中,所述第三操作根据所述第三操作数中的数据头的行数、换行距离、单行数据头数量,写出压缩数据中的所述数据头。
在其中一个实施例中,使用所述COMPRESS指令中摆放模式参数,对所述COMPRESS指令的第三操作进行配置,得到所述第三操作的第三操作数,所述第三操作根据所述第三操作数中的摆放模式参数写出所述压缩数据中的数据体。
在其中一个实施例中,根据所述第三操作数中的数据头中的起始地址和数据长度,得到所述第三操作数中的数据体的目标地址和数据长度;
使用所述数据体的目标地址和数据长度对所述COMPRESS指令的第三操作进行配置。
一种数据处理方法,所述方法包括:
获取COMPRESS指令,并对所述COMPRESS指令进行解析,得到所述COMPRESS指令的第一操作数、第二操作数和第三操作数;
从所述第一操作数指向的存储装置中读取原始数据,并将所述原始数据划分为多个数据块,所述第一操作数包括立即数或寄存器号;
根据所述第二操作数将所述数据块进行压缩,得到压缩数据;
将所述压缩数据中的数据头写入所述第三操作数据指向的存储装置,然后根据所述数据头与数据体之间的对应关系写出所述数据体,其中,所述压缩数据包括多个数据头和多个数据体,所述数据头中存储所述对应的所述数据体的起始地址和数据长度,所述数据体包含所述压缩数据的压缩编码值,所述第三操作数包括立即数或寄存器号。
在其中一个实施例中,若所述第一操作数为立即数,则根据所述第一操作数,从第一存储装置中读取所述原始数据,其中,所述第一存储装置为片外存储装置;
若所述第一操作数为寄存器号,则根据所述第一操作数,从第二存储装置中读取所述原始数据,其中,所述第二存储装置为片内存储装置。
在其中一个实施例中,根据所述第一操作数中所述原始数据的源地址以及换行距离读取所述原始数据。
在其中一个实施例中,根据所述第一操作数中数据块的块内行数以及块内单行数量,将读取的所述原始数据划分为多个数据块。
在其中一个实施例中,根据所述第二操作数中的游程编码的源数据,将所述数据块发送到所述第二操作数据指向的存储装置,然后选择是否使用游程编码进行压缩。
在其中一个实施例中,根据所述第三操作数中的数据头的目的地址和地址偏移,将所述压缩数据中的数据头写入第三操作数指向的存储装置,然后,根据所述第三操作数中的所述数据头和数据体的摆放模式参数,将所述数据体对应写入所述入第三操作数指向的存储装置。
一种译码器,所述译码器包括:第一配置单元、第二配置单元以及第三配置单元,所述第一配置单元连接所述第二配置单元,所述第一配置单元通过所述第二配置单元与所述第三配置单元连接;
所述第一配置单元,用于获取COMPRESS指令中原始数据的源数据,并根据所述原始数据的源数据对所述COMPRESS指令的第一操作进行配置,得到所述第一操作的第一操作数,其中,所述第一操作用于根据所述第一操作数读取所述原始数据,将所述原始数据划分为多个数据块,所述第一操作数包括立即数或寄存器号;
所述第二配置单元,用于获取所述COMPRESS指令中压缩操作的源数据,并根据所述压缩操作的源数据对所述COMPRESS指令的第二操作进行配置,得到所述第二操作的第二操作数,其中,所述第二操作用于根据所述第二操作数,对所述数据块进行压缩;
所述第三配置单元,用于获取所述COMPRESS指令中数据头的目的数据,并根据所述数据头的目的数据对所述COMPRESS指令的第三操作进行配置,得到所述第三操作的第三操作数,其中,所述第三操作用于根据所述第三操作数,写出压缩数据中的所述数据头,然后根据所述数据头与数据体之间的对应关系写出所述数据体,所述第三操作数包括立即数或寄存器号,所述压缩数据包括多个数据头和多个数据体,所述数据头中存储对应的所述数据体的起始地址和数据长度,所述数据体包含所述压缩数据的压缩编码值。
一种数据处理装置,所述数据处理装置包括配置单元、数据读写单元以及压缩解压单元,所述配置单元与所述压缩解压单元连接,所述配置单元与所述数据读写单元连接,所述压缩解压单元连接所述数据读写单元,其中,所述配置单元包括第一配置单元、第二配置单元以及第三配置单元;
所述数据读写单元接收所述配置单元发送的第一操作数以及第三操作数,将所述第二操作数据发送到所述压缩解压单元,并根据所述第一操作数,从所述第一操作数指向的存储装置中读取原始数据,并将所述原始数据划分为对个数据块;
所述压缩解压单元接收所述配置单元发送的所述第二操作数,并根据所述第二操作数对所述数据块进行数据压缩,得到压缩数据,其中,所述压缩数据包括多个数据头和多个数据体;
所述数据读写单元还用于根据所述第三操作数,将所述压缩数据中的数据头写入所述第三操作数指向的存储装置,然后根据所述数据头与数据体之间的对应关系写出所述数据体。
上述COMPRESS指令译码方法、数据处理方法、译码器及数据处理装置,通过对COMPRESS指令进行解析,根据原始数据的源数据对COMPRESS指令的第一操作进行配置,得到第一操作的第一操作数,根据压缩操作的源数据对COMPRESS指令的第二操作进行配置,得到第二操作的第二操作数,根据数据头的目的数据对COMPRESS指令的第三操作进行配置,得到第三操作的第三操作数,根据第一操作数、第二操作数和第三操作数完成第一操作、第二操作以及第三操作,实现了对COMPRESS指令的解析,能够将原始数据压缩成特定格式,实现了对原始数据压缩成特定格式的数据处理的方法。
附图说明
图1为一个实施例中译码器的结构框图;
图2为一个实施例中处理器的结构框图;
图3为一个实施例中数据处理装置的结构框图;
图4为一个实施例中COMPRESS指令译码方法的流程示意图;
图5为一个实施例中不同情况下第一操作的流程示意图;
图6为一个实施例中第一操作进行配置的流程示意图;
图7为一个实施例中第二操作进行配置的流程示意图;
图8为一个实施例中第三操作进行配置的流程示意图;
图9为一个实施例中数据处理方法的流程示意图;
图10为步骤S800的流程示意图;
图11为一个实施例中DECOMPRESS指令译码方法的流程示意图;
图12为一个实施例中不同情况下第四操作的流程示意图;
图13为一个实施例中第四操作进行配置的流程示意图;
图14为一个实施例中第五操作进行配置的流程示意图;
图15为另一个实施例中数据处理方法的流程示意图;
图16为步骤S1700的流程示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”、“第四”和“第五”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选的还包括没有列出的步骤或单元,或可选的还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
本申请提供的指令译码方法,可以应用于如图1所示的译码器1000中。其中,第一配置单元101与第二配置单元102连接,第一配置单元101通过第二配置单元102与第三配置单元103连接。
可选地,该指令可以为COMPRESS指令或DECOMPRESS指令。其中,COMPRESS指令可以对原始数据进行压缩,将原始数据划分为数据块,并对获取的数据块中的原始数据进行压缩,获取压缩数据,该压缩数据可以分为多个数据块,可以包含多个数据头和数据体,该数据头可以包含多个数据体,该数据头中存储对应的数据体的起始地址和数据长度,该数据体可以包含对应的压缩编码数据。DECOMPRESS指令可以对上述压缩数据进行解压,该压缩数据可以分为多个数据块,可以包含多个数据头和数据体,该数据头可以包含多个数据体,该数据头中存储对应的数据体的起始地址和数据长度,该数据体可以包含对应的压缩编码数据。
具体地,第一配置单元101,用于对COMPRESS指令的第一操作进行配置,得到第一操作的第一操作数。也用于DECOMPRESS指令的第四操作进行配置,得到所述第四操作的第四操作数。
第二配置单元102,用于对COMPRESS指令的第二操作进行配置,得到第二操作的第二操作数。也用于对DECOMPRESS指令的第五操作进行配置,得到第五操作的第五操作数。
第三配置单元103,用于对COMPRESS指令的第三操作进行配置,得到第三操作的第三操作数。
其中,第一操作数可以表示为读取原始数据的时候,原始数据的存储地址,可选地,第一操作数可以为立即数或寄存器号。第二操作数可以表示为将原始数据进行压缩的标识。第三操作数可以表示为将压缩数据中的数据头写回时,数据头的目的存储地址,可选地,第三操作数可以为立即数或寄存器号。第四操作数可以表示为读取压缩数据的数据块的时候,数据块的原始存储地址,可选地,第四操作数可以为立即数或寄存器号。第五操作数可以表示为将解压数据写回时,解压数据的目的存储地址,可选地,第五操作数可以为立即数或寄存器号。
可选地,请一并参阅图2,处理器2000中的控制器单元11可以作为该译码器1000,其中,控制器单元11与运算单元12连接,该运算单元12包括:一个主处理电路和多个从处理电路;
控制器单元11,用于获取输入数据以及计算指令;在一种可选方案中,具体的,获取输入数据以及计算指令方式可以通过数据输入输出单元得到,该数据输入输出单元具体可以为一个或多个数据I/O接口或I/O引脚。
上述计算指令包括但不限于:正向运算指令或反向训练指令,或其他神经网络运算指令等等,例如卷积运算指令。
控制器单元11,还用于解析该计算指令得到多个运算指令,将该多个运算指令以及所述输入数据发送给所述主处理电路;
主处理电路121,用于对所述输入数据执行前序处理以及与所述多个从处理电路之间传输数据以及运算指令;
多个从处理电路122,用于依据从所述主处理电路传输的数据以及运算指令并行执行中间运算得到多个中间结果,并将多个中间结果传输给所述主处理电路;
主处理电路121,用于对所述多个中间结果执行后续处理得到所述计算指令的计算结果。
可选地,该控制器单元11可以包括:指令缓存单元110、指令处理单元111和存储队列单元113。
其中,指令缓存单元110,用于存储人工神经网络运算关联的计算指令。
指令处理单元111,用于对计算指令解析得到多个运算指令。
存储队列单元113,用于存储指令队列,该指令队列包括:按该队列的前后顺序待执行的多个运算指令或计算指令。
可选地,第一配置单元101与第二配置单元102可以设置在指令处理单元111中,指令处理单元111从指令缓存单元110中获取指令,并对获取的指令进行解析,以及通过第一配置单元101与第二配置单元102对第一操作以及第二操作进行配置。
可选的,该控制器单元11还可以包括:
所述依赖关系处理单元112,用于在具有多个运算指令时,确定第一运算指令与所述第一运算指令之前的第零运算指令是否存在关联关系,如所述第一运算指令与所述第零运算指令存在关联关系,则将所述第一运算指令缓存在所述指令存储单元内,在所述第零运算指令执行完毕后,从所述指令存储单元提取所述第一运算指令传输至所述运算单元;
所述确定该第一运算指令与第一运算指令之前的第零运算指令是否存在关联关系包括:
依据所述第一运算指令提取所述第一运算指令中所需数据(例如矩阵)的第一存储地址区间,依据所述第零运算指令提取所述第零运算指令中所需矩阵的第零存储地址区间,如所述第一存储地址区间与所述第零存储地址区间具有重叠的区域,则确定所述第一运算指令与所述第零运算指令具有关联关系,如所述第一存储地址区间与所述第零存储地址区间不具有重叠的区域,则确定所述第一运算指令与所述第零运算指令不具有关联关系。
举例说明,在一个可选的技术方案中,主运算处理电路也可以包括一个控制器单元,该控制器单元可以包括主指令处理单元,具体用于将指令译码成微指令。当然在另一种可选方案中,从运算处理电路也可以包括另一个控制器单元,该另一个控制器单元包括从指令处理单元,具体用于接收并处理微指令。上述微指令可以为指令的下一级指令,该微指令可以通过对指令的拆分或解码后获得,能被进一步解码为各部件、各单元或各处理电路的控制信号。
在一种可选方案中,该指令可以是COMPRESS指令,该指令的指令格式可以如下表1所示:
Figure BDA0001927221700000091
Figure BDA0001927221700000101
Figure BDA0001927221700000111
其中,指令类别Name用于确定指令的类别(指令的类别可以包括COMP类指令和其他指令,其中,COMP类为16),即指令类别用于确定运算指令是否为COMP类指令。指令类型Type用于确定COMP类指令的类型,COMP类指令的类型用于表明该指令实现何种功能,例如,当指令类型Type为1时,表示该指令为COMPRESS指令。数据头目的地址Head addr、数据头地址偏移Head offset、数据头的行数Head seg num、数据头换行距离Head stride和单行数据头数量Head num用于表示要写回的数据头的目标地址。原始数据源地址Data addr和原始数据换行距离Data stride这些指令域用于表示要读取的原始数据的原始地址。
进一步地,该COMPRESS指令的指令格式还可以包括:配置表地址Config addr,用于存储压缩格式下的数据的编码值。
更进一步地,该COMPRESS指令的指令格式还可以包括各指令域的标志位,例如:用于表示摆放模式参数的标志位Packing en,具体地,当Packing en为1时,表示压缩数据的摆放模式Packing模式。还有用于表示压缩模式的标志位Compress en,具体地,当Compressen为1时,表示开启压缩操作。还有用于表示游程编码的标志位,具体地,当Run length en为1时,表示开启游程编码。还有用于表示混洗的标志位Shuffle en,具体地,当Shuffle en为1时,表示开启混洗。
还有用于标识数据头目的地址Head addr是立即数还是寄存器号的标志位Headaddr reg en,具体地,Head addr reg en为1时,表示数据头目的地址Head addr是寄存器号,即表示数据头目的地址Head addr来自寄存器,Head addr reg en为0时,表示数据头目的地址Head addr是立即数。
还有用于标识数据头地址偏移Head offset是立即数还是寄存器号的标志位Headoffset reg en,具体地,Head offset reg en为1时,表示数据头地址偏移Head offset是寄存器号,即表示数据头地址偏移Head offset来自寄存器,Head offset reg en为0时,表示数据头地址偏移Head offset是立即数。
还有用于标识原始数据源地址Data addr是立即数还是寄存器号的标志位Dataaddr reg en,具体地,Data addr reg en为1时,表示原始数据源地址Data addr是寄存器号,即原始数据源地址Data addr来自寄存器,Data addr reg en为0时,表示原始数据源地址Data addr是立即数。
还有用于标识数据块的块内行数Block seg num是立即数还是寄存器号的标志位Block seg num reg en,具体地,Block seg num reg en为1时,表示数据块的块内行数Block seg num是寄存器号,即数据块的块内行数Block seg num来自寄存器,Block segnum reg en为0时,表示数据块的块内行数Block seg num是立即数。
以及用于标识数据块的块内单行数量Block size是立即数还是寄存器号的标志位Block size reg en,具体地,Block size reg en为1时,表示数据块的块内单行数量Block size是寄存器号,即数据块的块内单行数量Block size来自寄存器,Block sizereg en为0时,表示数据块的块内单行数量Block size是立即数。
同样地,还有用于标识数据头换行距离Head stride是立即数还是寄存器号的标志位Head stride reg en,标识原始数据换行距离Data stride是立即数还是寄存器号的标志位Data stride reg en,标识数据头行数Head seg num是立即数还是寄存器号的标志位Head seg num reg en,标识单行数据头数量Head num是立即数还是寄存器号的标志位Head num reg en。具体地,当这些标志位为1时,表示各指令域为寄存器号,来自寄存器,当这些标志位为0时,表示各指令域为立即数。
在一种可选方案中,该指令可以是DECOMPRESS指令,该指令的指令格式可以如下表2所示:
Figure BDA0001927221700000131
Figure BDA0001927221700000141
其中,指令类别Name用于确定指令的类别(指令的类别可以包括COMP类指令和其他指令,其中,COMP类为16),即指令类别用于确定运算指令是否为COMP类指令。指令类型Type用于确定COMP类指令的类型,COMP类指令的类型用于表明该指令实现何种功能,例如,当指令类型Type为2时,表示该指令为DECOMPRESS指令。解压数据的目的地址Data addr用于表示要写回的解压数据的目标地址。数据头源地址Head addr、数据头地址偏移Headaddr、数据头的行数Head seg num、数据头换行距离Head stride和单行数据头数量Headnum,这些指令域用于表示要读取的目标数据头的原始地址。
进一步地,该DECOMPRESS指令的指令格式还可以包括:配置表地址Config addr,用于存储压缩格式下的数据的编码值。
更进一步地,该DECOMPRESS指令的指令格式还可以包括各指令域的标志位,例如:用于标识解压数据的目的地址Data addr是立即数还是寄存器号的标志位Data addr regen,具体地,Data addr reg en为1时,表示解压数据的目的地址Data addr是寄存器号,即表示解压数据的目的地址Data addr来自寄存器,Data addr reg en为0时,表示解压数据的目的地址Data addr是立即数。
还有用于标识数据头源地址Head addr是立即数还是寄存器号的标志位Headaddr reg en,具体地,Head addr reg en为1时,表示数据头源地址Head addr是寄存器号,即数据头源地址Head addr来自寄存器,Head addr reg en为0时,表示数据头源地址Headaddr是立即数。
还有用于标识数据头地址偏移Head offset是立即数还是寄存器号的标志位Headoffset reg en,具体地,Head offset reg en为1时,表示数据头地址偏移Head offset是寄存器号,即表示数据头地址偏移Head offset来自寄存器,Head offset reg en为0时,表示数据头地址偏移Head offset是立即数。
同样地,还有用于标识数据头换行距离Head stride是立即数还是寄存器号的标志位Head stride reg en,标识原始数据换行距离Data stride是立即数还是寄存器号的标志位Data stride reg en,标识数据头行数Head seg num是立即数还是寄存器号的标志位Head seg num reg en,标识单行数据头数量Head num是立即数还是寄存器号的标志位Head num reg en。具体地,当这些标志位为1时,表示各指令域为寄存器号,来自寄存器,当这些标志位为0时,表示各指令域为立即数。
请一并参阅图3,本申请还提出了一种指令应用的装置,即数据处理装置3000,可以包括配置单元100,数据读写单元200以及压缩解压单元300。其中,配置单元100连接数据读写单元200,配置单元100与直接内存访问单元300连接,压缩解压单元300与数据读写单元200连接。
可选地,第一配置单元101、第二配置单元102以及第三配置单元103可以封装为一个配置单元100。
配置单元100通过配置第一操作得到第一操作数、配置第二操作得到第二操作数、第三操作得到第三操作数、第四操作得到第四操作数以及第五操作得到第五操作数,并将第一操作数、第三操作数、第四操作数以及第五操作数发送给数据读写单元200。
数据读写单元200接收到配置单元100发送的操作数后,根据第一操作数,从第一操作数指向的存储装置中读取原始数据,并将所述原始数据划分为对个数据块。根据第三操作数,将压缩数据中的数据头写入第三操作数指向的存储装置,然后根据数据头与数据体之间的对应关系写出数据体。根据第四操作数,从第四操作数指向的存储装置中读取压缩数据的数据块,并将压缩数据的数据块发送到压缩解压单元300。根据第五操作数,将解压数据写入第五操作数指向的存储装置。
压缩解压单元300接收配置单元100发送的第二操作数,并根据第二操作数对数据块进行数据压缩,得到压缩数据。此外,压缩解压单元300接收到压缩数据的数据块后,也能够对压缩数据的数据块进行解压缩,得到解压数据。
可选地,存储装置可以包括第一存储装置13,也可以包括第二存储装置201。该第一存储装置13可以是设置在处理器外部的存储装置。该第二存储装置201可以是设置在处理器1000内部的缓存器和/或寄存器。该第一存储装置13及第二存储装置201也可以是非易失性存储器或易失性存储器,此处不做具体限定。该数据读写单元200可以是I/O电路。
可选地,压缩解压单元300可以设置在运算单元12中。
在一个实施例中,如图4所示,提供了一种COMPRESS指令的译码方法,以该方法应用于图1中的译码器为例进行说明,包括以下步骤:
S200,获取COMPRESS指令中原始数据的源数据,并根据原始数据的源数据对COMPRESS指令的第一操作进行配置,得到第一操作的第一操作数。
其中,原始数据的源数据表示原始数据的原始地址。第一操作用于根据所述第一操作数读取所述原始数据,将所述原始数据划分为多个数据块。第一操作数可以为立即数或寄存器号。
具体地,第一配置单元101获取COMPRESS指令中原始数据的源数据,并根据获取的COMPRESS指令中原始数据的源数据对COMPRESS指令的第一操作进行配置,得到第一操作的第一操作数,即获取到原始数据的原始地址。
S300,获取COMPRESS指令中压缩操作的源数据,并根据压缩操作的源数据对COMPRESS指令的第二操作进行配置,得到第二操作的第二操作数。
其中,压缩操作的源数据通过压缩模式的标志位表示,即当压缩模式的标志位为1时,表示开启压缩。第二操作用于根据第二操作数,对数据块进行压缩。
具体地,第二配置单元102获取COMPRESS指令中压缩操作的源数据,并根据获取的压缩操作的源数据对COMPRESS指令的第二操作进行配置,得到第二操作的第二操作数。
S400,获取COMPRESS指令中数据头的目的数据,并根据数据头的目的数据对COMPRESS指令的第三操作进行配置,得到第三操作的第三操作数。
其中,数据头的目的数据表示数据头的目标地址,即将获得的数据头写到目标地址对应的位置。第三操作用于根据第三操作数,写出压缩数据中的数据头,然后根据数据头与数据体之间的对应关系写出数据体。第三操作数包括立即数或寄存器号。压缩操作得到的压缩数据包括多个数据头和多个数据体,数据头中存储对应的数据体的起始地址和数据长度,数据体包含压缩数据的压缩编码值。
具体地,第三配置单元103获取COMPRESS指令中数据头的目的数据,并根据获取的数据头的目的数据对COMPRESS指令的第三操作进行配置,得到第三操作的第三操作数。
上述COMPRESS指令的译码方法中,通过对第一操作进行配置,得到第一操作的第一操作数,第一操作表示用于根据第一操作数进行原始数据的读取操作,通过对第二操作进行配置,得到第二操作数的第二操作数,第二操作表示用于根据第二操作数进行原始数据的压缩操作,以及通过对第三操作进行配置,得到第三操作数的第三操作数,第三操作表示用于根据第三操作数进行压缩数据中数据头的写回操作。通过对COMPRESS指令进行解析,得到相应的操作,实现对COMPRESS指令的解析,同时该指令能够得到特定格式的压缩数据。
在其中一个实施例中,请继续参阅图4,所述方法还可以包括以下步骤:
S100,对获取的指令进行解析,并根据指令中的指令类别和指令类型确定指令为COMPRESS指令。
其中,如上表1所示,指令类别Name用于确定指令的类别(指令的类别可以包括COMP类指令和其他指令,其中,COMP类为16),即指令类别用于确定运算指令是否为COMP类指令。指令类型Type用于确定COMP类指令的类型,COMP类指令的类型用于表明该指令实现何种功能,例如,当指令类型Type为1时,表示该指令为COMPRESS指令。
具体地,指令处理单元111对获取的指令进行解析,根据指令类别Name以及指令类型Type进行区分,当指令类型Type为1时,表示该指令为COMPRESS指令。
可选地,指令处理单元111可以通过指令缓存单元110获取指令,然后指令处理单元111中的第一配置单元101、第二配置单元102与第三配置单元103进行配置。
在其中一个实施例中,请参阅图5,第一操作数可以包括立即数或寄存器号,判断第一操作数是否为立即数,当判断第一操作数为立即数时,执行步骤S500,此时第一操作用于根据第一操作数,从第一存储装置中读取原始数据。
其中,第一存储装置13可以是片外存储装置。
具体地,当第一操作数为立即数时,第一操作用于从第一操作数指向的第一存储装置13中相对应的位置,读取原始数据。
当判断第一操作数为寄存器号时,执行步骤S600,第一操作用于根据第一操作数,从第二存储装置中读取原始数据。
其中,第二存储装置201可以是片内存储装置。
具体地,当第一操作数为寄存器号时,第一操作用于从第一操作数指向的第二存储装置201中相对应的位置,读取原始数据。
本实施例的方法通过对片外和片内地址进行读取原始数据,适应不同应用场景下对指令的需求,增强了指令应用的完备性。
在其中一个实施例中,请参阅图6,对第一操作进行配置的过程可以包括以下步骤:
S210,根据COMPRESS指令中原始数据的源地址以及换行距离,得到第一操作数中原始数据的原始地址。
具体地,第一配置单元101获取到COMPRESS指令中原始数据的源地址以及换行距离,然后根据原始数据的源地址以及换行距离,得到第一操作数中原始数据的原始地址。通过获取到原始数据的源地址以及换行距离,得到原始数据的原始地址,该原始地址用于存储原始数据。
S220,根据原始地址对COMPRESS指令的第一操作进行配置,得到第一操作的第一操作数。
具体地,第一配置单元101得到原始数据的原始地址后,然后根据原始地址,对COMPRESS指令的第一操作进行配置,得到第一操作的第一操作数。该原始地址用于存储原始数据,则根据原始数据的存储地址进行配置,得到第一操作数,可根据第一操作数进行原始数据的读取。
S230,根据COMPRESS指令中数据块的块内行数以及块内单行数量对COMPRESS指令的第一操作进行配置,得到第一操作的第一操作数。
具体地,第一配置单元101获取到COMPRESS指令中数据块的块内行数以及块内单行数量后,然后根据数据块的块内行数以及块内单行数量进行配置,得到第一操作数。该第一操作数用于确定数据块的块内行数以及块内单行数量,该第一操作用于根据第一操作数中的数据块的块内行数以及块内单行数量,将原始数据划分为多个数据块。
本实施例中通过对第一操作中的原始数据进行配置,使得读取的原始数据头的位置更加准确。
在其中一个实施例中,第一配置单元101可以根据COMPRESS指令中的窗口参数,对COMPRESS指令的第一操作进行配置,得到第一操作的第一操作数。其中,窗口参数可以包括四个方向的方向参数,例如将各个方向的参数按照表1设定为:非整块top值Top(上)、非整块Bottom值Bottom(下)、非整块Left值Left(左)、非整块Right值Right(右)。可以根据四个方向的方向参数对原始数据进行窗口读取。第一操作用于根据第一操作数,对原始数据进行非整块读取。
在其中一个实施例中,请参阅图7,对第二操作进行配置的过程可以包括以下步骤:
S310,根据COMPRESS指令中游程编码的源数据,对COMPRESS指令的第二操作进行配置,得到第二操作的第二操作数。
具体地,第二配置单元102获取到COMPRESS指令中游程编码的源数据,然后根据游程编码的源数据,得到第二操作的第二操作数。第二操作用于根据第二操作数中的游程编码的源数据,选择是否使用游程编码进行压缩。
S320,根据COMPRESS指令中混洗源数据,对COMPRESS指令的第二操作进行配置,得到第二操作的第二操作数。
具体地,第二配置单元102获取到COMPRESS指令中混洗源数据,根据混洗源数据对move指令的第二操作进行配置,得到第二操作的第二操作数,该第二操作数用于表示是否在压缩操作之前进行数据混洗移。第二操作用于根据第二操作数中的混洗源数据,选择是否在压缩操作之前进行数据混洗。
本实施的方法通过对压缩操作进行配置,使得对数据块的压缩更加多样化。
在其中一个实施例中,请参阅图8,对第三操作进行配置的过程可以包括以下步骤:
S410,根据COMPRESS指令中的数据头的目的地址和地址偏移,得到第三操作数中的数据头的目标地址。
具体地,第三配置单元103获取到COMPRESS指令中的数据头的目的地址和地址偏移,然后根据数据头的目的地址和地址偏移,得到数据头的目标地址。数据头的目标地址用于表示数据头要写回的目标地址,即标数据头的目标地址用于存储写回的数据头。
S420,根据数据头的目标地址对COMPRESS指令的第三操作进行配置,得到第三操作的第三操作数。
具体地,第三配置单元103得到数据头的目标地址后,根据数据头的目标地址对COMPRESS指令的第三操作进行配置,得到第三操作的第三操作数,该第三操作数用于表示数据头的目标地址,即该第三操作数用于表示数据头要写回的目标地址,即数据头的目标地址用于存储写回的数据头。
S430,根据COMPRESS指令中数据头的行数、换行距离以及单行数据头数量对COMPRESS指令的第三操作进行配置,得到第三操作的第三操作数。
具体地,第三配置单元103获取到COMPRESS指令中数据头的行数、换行距离以及单行数据头数量后,然后根据数据头的行数、换行距离以及单行数据头数量进行配置,得到第三操作数。该第三操作数用于确定要写回的数据头的目标地址,行数以及单行数量。
S440,使用COMPRESS指令中摆放模式参数,对COMPRESS指令的第三操作进行配置,得到第三操作的第三操作数。
具体地,第三配置单元103根据COMPRESS指令中摆放模式参数,对COMPRESS指令的第三操作进行配置,得到第三操作的第三操作数。该第三操作数用于确定要写回的数据头的摆放模式。
S450,根据第三操作数中的数据头中的起始地址和数据长度,得到第三操作数中的数据体的目标地址和数据长度。
具体地,第三操作数中包括数据头的目标地址以及数据头的数量,以及数据头与数据体存在一定的对应关系,数据头中存储对应的数据体的起始地址和数据长度,第三配置单元103根据数据头的目标地址以及数量,得到数据体的目标地址和数量。
S460,使用数据体的目标地址和数据长度对COMPRESS指令的第三操作进行配置。
具体地,第三配置单元103获取到数据体的目标地址和数量,然后根据数据体的目标地址和数量,对COMPRESS指令的第三操作进行配置,第三操作用于依据数据体的目标地址和数量,进行数据体的写出操作。
本实施例中通过对第三操作中的数据头的数量和行数进行配置,使得写出的数据头的位置更加准确。
请参阅图9,本申请还提出了一种数据处理方法,以该方法应用于图3的数据处理装置为例,可以包括以下步骤:
S700,获取COMPRESS指令,并对COMPRESS指令进行解析,得到COMPRESS指令的第一操作数、第二操作数和第三操作数。
其中,第一操作数可以包括立即数或寄存器号,第三操作数可以包括立即数或寄存器号
具体地,配置单元100获取到COMPRESS指令,并对COMPRESS指令进行解析,获得到COMPRESS指令的第一操作数、第二操作数和第三操作数。
S800,从第一操作数指向的存储装置中读取原始数据,并将原始数据划分为多个数据块。
其中,该存储装置可以为第一存储装置13或者第二存储装置201。
具体地,配置单元100得到第一操作数后,将第一操作数发送到数据读写单元200,数据读写单元200接收到第一操作数后,根据第一操作数,从第一操作数指向的存储装置中读取原始数据,并将原始数据划分为多个数据块。
S900,根据第二操作数将数据块进行压缩,得到压缩数据。
具体地,配置单元100得到第二操作数后,将第二操作数发送到压缩解压单元300,压缩解压单元300接收到第二操作数后,根据第二操作数,将得到的数据块进行压缩,得到压缩数据。
S1000,将压缩数据中的数据头写入第三操作数据指向的存储装置,然后根据数据头与数据体之间的对应关系写出数据体。
其中,该存储装置可以为第一存储装置13或者第二存储装置201。
具体地,配置单元100得到第三操作数后,将第三操作数发送到数据读写单元200,数据读写单元200接收到第三操作数后,根据第三操作数,将压缩数据中的数据头写入第三操作数据指向的存储装置,然后根据数据头与数据体之间的对应关系写出数据体。
上述方法通过根据解析得到的第一操作数、第二操作数和第三操作数,将原始数据进行压缩,得到压缩数据,并将压缩数据中的数据头写出,然后根据数据头与数据体之间的对应关系写出数据体,能够得到特定格式的压缩数据,提高了指令的功能,完善了设备的功能性。
在其中一个实施例中,请参阅图10,上述步骤S800可以包括以下步骤:
判断第一操作数是否为立即数,当判断第一操作数为立即数时,执行步骤S810,根据第一操作数,从第一存储装置中读取原始数据。
其中,第一存储装置13为片外存储装置。
具体地,当第一操作数为立即数时,数据读写单元200根据第一操作数,在第一存储装置13中,根据第一操作数指向的位置读取原始数据。
当判断第一操作数为寄存器号时,执行步骤S820,根据第一操作数,从第二存储装置中读取原始数据。
其中,第二存储装置201为片内存储装置。
具体地,当第一操作数为寄存器号时,数据读写单元200根据第一操作数,在第二存储装置201中,根据第一操作数指向的位置读取原始数据。
本实施例的方法通过对片外和片内地址进行读取原始数据,适应不同应用场景下对指令的需求,增强了指令应用的完备性。
在其中一个实施例中,数据读写单元200可以根据第一操作数中原始数据的源地址以及换行距离,从第一操作数指向的位置读取原始数据。
在其中一个实施例中,数据读写单元200根据第一操作数中数据块的块内行数以及块内单行数量,将读取的原始数据划分为多个数据块。
在其中一个实施例中,压缩解压单元300根据第二操作数中的游程编码的源数据,将数据块发送到第二操作数据指向的存储装置,然后选择是否使用游程编码进行压缩。
在其中一个实施例中,数据读写单元200根据第三操作数中的数据头的目的地址和地址偏移,将压缩数据中的数据头写入第三操作数指向的存储装置,然后,根据第三操作数中的数据头和数据体的摆放模式参数,将数据体对应写入第三操作数指向的存储装置中。
通过对数据头和数据体的摆放模式参数进行配置,使得数据体以及数据头写出位置更加准确。
请参阅图11,在一个实施例中,提供了一种DECOMPRESS指令译码方法,以该方法应用于图1中的译码器为例进行说明,包括以下步骤:
S1200,获取COMPRESS指令中数据块的块内行数以及块内单行数量,并根据数据块的块内行数以及块内单行数量对COMPRESS指令的第四操作进行配置,得到第四操作的第四操作数。
其中,第四操作用于根据第四操作数读取压缩数据的数据块,以及将读取的数据块发送出去。压缩数据的数据块中包括多个数据头和多个数据体,数据头与数据体存在有一定的对应关系,数据头中存储对应的数据体的起始地址和数据长度,数据体包含压缩数据的压缩编码值。第四操作数可以为立即数或寄存器号。
具体地,第一配置单元101获取COMPRESS指令中数据块的块内行数以及块内单行数量,并根据获取的数据块的块内行数以及块内单行数量对COMPRESS指令的第四操作进行配置,得到第四操作的第四操作数。
S1300,获取DECOMPRESS指令中解压数据的目的数据,并根据解压数据的目的数据对DECOMPRESS指令的第五操作进行配置,得到第五操作的第五操作数。
其中,解压数据的目的数据表示解压数据的目标地址,即将解压数据写回到目标地址对应的位置。第五操作用于写出获取的解压数据。第五操作数包括立即数或寄存器号。
具体地,第二配置单元102获取DECOMPRESS指令中解压数据的目的数据,并根据解压数据的目的数据对DECOMPRESS指令的第五操作进行配置,得到第五操作的第五操作数,即获取到解压数据的目标地址。
上述DECOMPRESS指令译码方法中,通过对第四操作进行配置,得到第四操作的第四操作数,第四操作表示用于根据第四操作数进行压缩数据的数据块的读取操作,以及通过对第五操作进行配置,得到第五操作数的第五操作数,第五操作表示用于根据第五操作数进行解压数据的写回操作。通过对DECOMPRESS指令进行解析,得到相应的操作,实现对DECOMPRESS指令的解析,支持特定格式的压缩数据的解压缩。
在其中一个实施例中,请参阅图11,所述方法还可以包括以下步骤:
S1100,对获取的指令进行解析,并根据指令中的指令类别和指令类型确定指令为DECOMPRESS指令。
其中,如上表2所示,指令类别Name用于确定指令的类别(指令的类别可以包括COMP类指令和其他指令,其中,COMP类为16),即指令类别用于确定运算指令是否为COMP类指令。指令类型Type用于确定COMP类指令的类型,COMP类指令的类型用于表明该指令实现何种功能,例如,当指令类型Type为2时,表示该指令为DECOMPRESS指令。
具体地,指令处理单元111对获取的指令进行解析,根据指令类别Name以及指令类型Type进行区分,当指令类型Type为2时,表示该指令为DECOMPRESS指令。
可选地,指令处理单元111可以通过指令缓存单元110获取指令,然后指令处理单元111中的第一配置单元101与第二配置单元102进行配置。
在其中一个实施例中,请参阅图12,第四操作数可以包括立即数或寄存器号,判断第四操作数是否为立即数,当判断第四操作数为立即数时,执行步骤S1400,此时第四操作用于根据第四操作数,从第一存储装置中读取压缩数据的数据块。
其中,第一存储装置13可以是片外存储装置。
具体地,当第四操作数为立即数时,第四操作用于从第四操作数指向的第一存储装置13中相对应的位置,读取压缩数据的数据块。
当判断第四操作数为寄存器号时,执行步骤S1500,第四操作用于根据第四操作数,从第二存储装置中读取压缩数据的数据块。
其中,第二存储装置201可以是片内存储装置。
具体地,当第四操作数为寄存器号时,第四操作用于从第四操作数指向的第二存储装置201中相对应的位置,读取压缩数据的数据块。
本实施例的方法通过对片外和片内地址进行读取压缩数据的数据块,适应不同应用场景下对指令的需求,增强了指令应用的完备性。
在其中一个实施例中,请参阅图13,对第四操作进行配置的过程可以包括以下步骤:
S1210,根据DECOMPRESS指令中数据头的源地址和地址偏移,得到第四操作数中数据头的原始地址。
具体地,第一配置单元101获取到DECOMPRESS指令中数据头的源地址和地址偏移,然后根据数据头的源地址和地址偏移,得到第四操作数中数据头的原始地址。通过获取到数据头的源地址以及地址偏移,得到数据头的原始地址,该原始地址用于存储数据头。
S1220,根据原始地址对COMPRESS指令的第四操作进行配置,得到第四操作的第四操作数。
具体地,第一配置单元101得到数据头的原始地址后,然后根据原始地址,对COMPRESS指令的第四操作进行配置,得到第四操作的第四操作数。该原始地址用于存储数据头,则根据数据头的存储地址进行配置,得到第四操作数,可根据第四操作数进行数据头的读取。
S1230,根据DECOMPRESS指令中数据头的行数、换行距离以及单行数据头数量对DECOMPRESS指令的第四操作进行配置,得到第四操作的第四操作数。
具体地,第一配置单元101获取到DECOMPRESS指令中数据头的行数、换行距离以及单行数据头数量后,然后根据数据头的行数、换行距离以及单行数据头数量进行配置,得到第四操作数。该第四操作数用于确定要读取的数据头的原始地址,行数以及单行数量。
S1240,根据第四操作数中数据头中的起始地址和数据长度,得到第四操作数中的数据体的原始地址和数据长度。
具体地,第四操作数中包括数据头的原始地址以及数据长度,以及数据头与数据体存在一定的对应关系,数据头中存储对应的数据体的起始地址和数据长度,第一配置单元101根据数据头的原始地址以及数据长度,得到数据体的原始地址和数据长度。
S1250,使用数据体的原始地址和数据长度对DECOMPRESS指令的第四操作进行配置。
具体地,第一配置单元101获取到数据体的原始地址和数据长,然后根据数据体的原始地址和数据长度,对DECOMPRESS指令的第四操作进行配置,第四操作用于依据数据体的原始地址和数据长度,进行数据体的读取。
本实施例中通过对第四操作中的数据头的数量和行数进行配置,使得读取的数据头的位置更加准确。
在其中一个实施例中,请参阅图14,对第五操作进行配置的过程可以包括以下步骤:
S1310,根据DECOMPRESS指令中的解压数据的目的地址,得到第五操作数中的解压数据的目标地址。
具体地,第二配置单元102获取到DECOMPRESS指令中的解压数据的目的地址,然后根据解压数据的目的地址,得到解压数据的目标地址。解压数据的目标地址用于表示解压数据要写回的目标地址,即解压数据的目标地址用于存储写回的解压数据。
S1320,根据解压数据的目标地址对DECOMPRESS指令的第五操作进行配置,得到第五操作的第五操作数。
具体地,第二配置单元102得到解压数据的目标地址后,根据解压数据的目标地址DECOMPRESS指令的第五操作进行配置,得到第五操作的第五操作数,该第五操作数用于表示解压数据的目标地址,即该第五操作数用于表示解压数据要写回的目标地址,即解压数据的目标地址用于存储写回的解压数据。
本实施的方法通过对解压数据的目标地址进行配置,使得写回的解压数据的地址更加准确。
请参阅图15,本申请还提出了一种数据处理方法,以该方法应用于图3的数据处理装置为例,可以包括以下步骤:
S1600,获取DECOMPRESS指令,并对DECOMPRESS指令进行解析,得到DECOMPRESS指令的第四操作数和第五操作数。
其中,第四操作数可以包括立即数或寄存器号,第五操作数可以包括立即数或寄存器号
具体地,配置单元100获取到DECOMPRESS指令,并对DECOMPRESS指令进行解析,获得到DECOMPRESS指令的第四操作数以及第五操作数。
S1700,从第四操作数指向的存储装置中读取压缩数据的数据块,以及将读取的数据块发送出去。
其中,该存储装置可以为第一存储装置13或者第二存储装置201。压缩数据的数据块包括多个数据头和多个数据体,数据头中存储对应的数据体的起始地址和数据长度,数据体包含压缩数据的压缩编码值。
具体地,配置单元100得到第四操作数后,将第四操作数发送到数据读写单元200,数据读写单元200接收到第四操作数后,根据第四操作数,从第四操作数指向的存储装置中读取压缩数据的数据块。
S1800,将读取的压缩数据的数据块进行解压缩,得到解压数据。
具体地,压缩解压单元300接收到读取的压缩数据的数据块后,将读取的压缩数据的数据块进行解压缩,得到解压数据。
S1900,将解压数据写入第五操作数据指向的存储装置。
其中,该存储装置可以为第一存储装置13或者第二存储装置201。
具体地,配置单元100得到第五操作数后,将第五操作数发送到数据读写单元200,数据读写单元200接收到第五操作数后,根据第五操作数,将解压数据写入第五操作数指向的存储装置。
上述方法通过根据解析得到的第四操作数和第五操作数,将压缩数据的数据块进行解压缩,支持特定压缩格式的数据进行解压缩处理,提高了指令的功能,完善了设备的功能性。
在其中一个实施例中,请参阅图16,上述步骤S1700可以包括以下步骤:
判断第四操作数是否为立即数,当判断第四操作数为立即数时,执行步骤S1710,根据第四操作数,从第一存储装置中读取压缩数据的数据块,以及将读取的数据块发送出去。
其中,第一存储装置13为片外存储装置。
具体地,当第四操作数为立即数时,数据读写单元200根据第四操作数,在第一存储装置13中,根据第四操作数指向的位置读取压缩数据的数据块,以及将读取的数据块发送出去。
当判断第四操作数为寄存器号时,执行步骤S1720,根据第四操作数,从第二存储装置中读取压缩数据的数据块,以及将读取的数据块发送出去。
其中,第二存储装置201为片内存储装置。
具体地,当第四操作数为寄存器号时,数据读写单元200根据第四操作数,在第二存储装置201中,根据第四操作数指向的位置读取压缩数据的数据块,以及将读取的数据块发送出去。
本实施例的方法通过对片外和片内地址进行读取压缩数据的数据块,适应不同应用场景下对指令的需求,增强了指令应用的完备性。
在其中一个实施例中,数据读写单元200可以根据第四操作数中数据头的源地址和地址偏移,读取压缩数据的数据块。其中,压缩数据的数据块中包括多个数据头和多个数据体。
在其中一个实施例中,数据读写单元200根据第四操作数中数据头的行数、换行距离以及单行数据头数量,读取压缩数据的数据块。
可以通过根据数据头的源地址、地址偏移、行数和单行数量等,准确地确定出要读取的数据头的数量以及位置。
在其中一个实施例中,数据读写单元200根据第五操作数中的解压数据的目的地址,将得到的解压数据写入第五操作数指向的存储装置。
可以通过根据解压数据的目的地址,准确地确定出解压数据要写回的位置。
应该理解的是,虽然图4-16的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图4-16中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,提供了一种计算机设备,该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种move指令译码方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取COMPRESS指令中原始数据的源数据,并根据原始数据的源数据对COMPRESS指令的第一操作进行配置,得到第一操作的第一操作数。具体地,第一配置单元101获取COMPRESS指令中原始数据的源数据,并根据获取的COMPRESS指令中原始数据的源数据对COMPRESS指令的第一操作进行配置,得到第一操作的第一操作数,即获取到原始数据的原始地址。
获取COMPRESS指令中压缩操作的源数据,并根据压缩操作的源数据对COMPRESS指令的第二操作进行配置,得到第二操作的第二操作数。具体地,第二配置单元102获取COMPRESS指令中压缩操作的源数据,并根据获取的压缩操作的源数据对COMPRESS指令的第二操作进行配置,得到第二操作的第二操作数。
获取COMPRESS指令中数据头的目的数据,并根据数据头的目的数据对COMPRESS指令的第三操作进行配置,得到第三操作的第三操作数。具体地,第三配置单元103获取COMPRESS指令中数据头的目的数据,并根据获取的数据头的目的数据对COMPRESS指令的第三操作进行配置,得到第三操作的第三操作数。
应当清楚的是,本申请实施例中的计算机程序被处理器执行时实现的步骤,与上述实施例中的方法的各个步骤的执行过程一致,具体可参见上文的描述,此处不再赘述。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取COMPRESS指令中数据块的块内行数以及块内单行数量,并根据数据块的块内行数以及块内单行数量对COMPRESS指令的第四操作进行配置,得到第四操作的第四操作数。具体地,第一配置单元101获取COMPRESS指令中数据块的块内行数以及块内单行数量,并根据获取的数据块的块内行数以及块内单行数量对COMPRESS指令的第四操作进行配置,得到第四操作的第四操作数。
获取DECOMPRESS指令中解压数据的目的数据,并根据解压数据的目的数据对DECOMPRESS指令的第五操作进行配置,得到第五操作的第五操作数。具体地,第二配置单元102获取DECOMPRESS指令中解压数据的目的数据,并根据解压数据的目的数据对DECOMPRESS指令的第五操作进行配置,得到第五操作的第五操作数,即获取到解压数据的目标地址。
应当清楚的是,本申请实施例中的计算机程序被处理器执行时实现的步骤,与上述实施例中的方法的各个步骤的执行过程一致,具体可参见上文的描述,此处不再赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(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 (20)

1.一种COMPRESS指令的译码方法,其特征在于,所述方法包括:
获取COMPRESS指令中原始数据的源数据,并根据所述原始数据的源数据对所述COMPRESS指令的第一操作进行配置,得到所述第一操作的第一操作数,其中,所述第一操作用于根据所述第一操作数读取所述原始数据,将所述原始数据划分为多个数据块,所述第一操作数包括立即数或寄存器号;
获取所述COMPRESS指令中压缩操作的源数据,并根据所述压缩操作的源数据对所述COMPRESS指令的第二操作进行配置,得到所述第二操作的第二操作数,其中,所述第二操作用于根据所述第二操作数,对所述数据块进行压缩;
获取所述COMPRESS指令中数据头的目的数据,并根据所述数据头的目的数据对所述COMPRESS指令的第三操作进行配置,得到所述第三操作的第三操作数,其中,所述第三操作用于根据所述第三操作数,写出压缩数据中的所述数据头,然后根据所述数据头与数据体之间的对应关系写出所述数据体,所述第三操作数包括立即数或寄存器号,所述压缩数据包括多个数据头和多个数据体,所述数据头中存储对应的所述数据体的起始地址和数据长度,所述数据体包含所述压缩数据的压缩编码值。
2.根据权利要求1所述的方法,其特征在于,在获取COMPRESS指令中原始数据的源数据,并根据所述原始数据的源数据对所述COMPRESS指令的第一操作进行配置,得到所述第一操作的第一操作数的步骤,之前所述方法还包括:
对获取的指令进行解析,并根据所述指令中的指令类别和指令类型确定所述指令为COMPRESS指令。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述第一操作数为立即数,则所述第一操作用于根据所述第一操作数,从第一存储装置中读取所述原始数据,其中,所述第一存储装置为片外存储装置;
若所述第一操作数为寄存器号,则所述第一操作用于根据所述第一操作数,从第二存储装置中读取所述原始数据,其中,所述第二存储装置为片内存储装置。
4.根据权利要求1所述的方法,其特征在于,所述获取COMPRESS指令中原始数据的源数据,并根据所述原始数据的源数据对所述COMPRESS指令的第一操作进行配置,得到所述第一操作的第一操作数的步骤,包括:
根据所述COMPRESS指令中原始数据的源地址以及换行距离,得到所述第一操作数中所述原始数据的原始地址;
根据所述原始地址对所述COMPRESS指令的第一操作进行配置,得到所述第一操作的第一操作数。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
根据所述COMPRESS指令中数据块的块内行数以及块内单行数量对所述COMPRESS指令的第一操作进行配置,得到所述第一操作的第一操作数,其中,所述第一操作用于根据所述第一操作数中的数据块的块内行数以及块内单行数量,将所述原始数据划分为多个数据块。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据所述COMPRESS指令中的窗口参数,对所述COMPRESS指令的第一操作进行配置,得到所述第一操作的第一操作数,其中,所述第一操作用于根据所述第一操作数,对所述原始数据进行非整块读取。
7.根据权利要求1所述的方法,其特征在于,所述获取所述COMPRESS指令中压缩操作的源数据,并根据所述压缩操作的源数据对所述COMPRESS指令的第二操作进行配置,得到所述第二操作的第二操作数的步骤,还包括:
根据所述COMPRESS指令中游程编码的源数据,对所述COMPRESS指令的第二操作进行配置,得到所述第二操作的第二操作数,其中,所述第二操作用于根据所述第二操作数中的游程编码的源数据,选择是否使用游程编码进行压缩。
8.根据权利要求1所述的方法,其特征在于,所述获取所述COMPRESS指令中压缩操作的源数据,并根据所述压缩操作的源数据对所述COMPRESS指令的第二操作进行配置,得到所述第二操作的第二操作数的步骤,还包括:
根据所述COMPRESS指令中混洗源数据,对所述COMPRESS指令的第二操作进行配置,得到所述第二操作的第二操作数,其中,所述第二操作用于根据所述第二操作数中的混洗源数据,选择是否在压缩操作之前进行数据混洗。
9.根据权利要求1所述的方法,其特征在于,所述获取所述COMPRESS指令中数据头的目的数据,并根据所述数据头的目的数据对所述COMPRESS指令的第三操作进行配置,得到所述第三操作的第三操作数的步骤,包括:
根据所述COMPRESS指令中的数据头的目的地址和地址偏移,得到所述第三操作数中的所述数据头的目标地址;
根据所述数据头的目标地址对所述COMPRESS指令的第三操作进行配置,得到所述第三操作的第三操作数。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
根据所述COMPRESS指令中数据头的行数、换行距离以及单行数据头数量对所述COMPRESS指令的第三操作进行配置,得到所述第三操作的第三操作数,其中,所述第三操作根据所述第三操作数中的数据头的行数、换行距离、单行数据头数量,写出压缩数据中的所述数据头。
11.根据权利要求9所述的方法,其特征在于,所述方法还包括:
使用所述COMPRESS指令中摆放模式参数,对所述COMPRESS指令的第三操作进行配置,得到所述第三操作的第三操作数,所述第三操作根据所述第三操作数中的摆放模式参数写出所述压缩数据中的数据体。
12.根据权利要求9所述的方法,其特征在于,所述方法还包括:
根据所述第三操作数中的数据头中的起始地址和数据长度,得到所述第三操作数中的数据体的目标地址和数据长度;
使用所述数据体的目标地址和数据长度对所述COMPRESS指令的第三操作进行配置。
13.一种数据处理方法,其特征在于,包括:
获取COMPRESS指令,并对所述COMPRESS指令进行解析,得到所述COMPRESS指令的第一操作数、第二操作数和第三操作数;
从所述第一操作数指向的存储装置中读取原始数据,并将所述原始数据划分为多个数据块,所述第一操作数包括立即数或寄存器号;
根据所述第二操作数将所述数据块进行压缩,得到压缩数据;
将所述压缩数据中的数据头写入所述第三操作数据指向的存储装置,然后根据所述数据头与数据体之间的对应关系写出所述数据体,其中,所述压缩数据包括多个数据头和多个数据体,所述数据头中存储所述对应的所述数据体的起始地址和数据长度,所述数据体包含所述压缩数据的压缩编码值,所述第三操作数包括立即数或寄存器号。
14.根据权利要求13所述的方法,其特征在于,所述方法还包括:
若所述第一操作数为立即数,则根据所述第一操作数,从第一存储装置中读取所述原始数据,其中,所述第一存储装置为片外存储装置;
若所述第一操作数为寄存器号,则根据所述第一操作数,从第二存储装置中读取所述原始数据,其中,所述第二存储装置为片内存储装置。
15.根据权利要求13所述的方法,其特征在于,所述从所述第一操作数指向的存储装置中读取原始数据,并将所述原始数据划分为多个数据块的步骤,包括:
根据所述第一操作数中所述原始数据的源地址以及换行距离读取所述原始数据。
16.根据权利要求15所述的方法,其特征在于,所述从所述第一操作数指向的存储装置中读取原始数据,并将所述原始数据划分为多个数据块的步骤,还包括:
根据所述第一操作数中数据块的块内行数以及块内单行数量,将读取的所述原始数据划分为多个数据块。
17.根据权利要求13所述的方法,其特征在于,所述根据所述第二操作数将所述数据块进行压缩,得到压缩数据的步骤,包括:
根据所述第二操作数中的游程编码的源数据,将所述数据块发送到所述第二操作数据指向的存储装置,然后选择是否使用游程编码进行压缩。
18.根据权利要求13所述的方法,其特征在于,所述将所述压缩数据中的数据头写入所述第三操作数据指向的存储装置,然后根据所述数据头与数据体之间的对应关系写出所述数据体的步骤,包括:
根据所述第三操作数中的数据头的目的地址和地址偏移,将所述压缩数据中的数据头写入第三操作数指向的存储装置,然后,根据所述第三操作数中的所述数据头和数据体的摆放模式参数,将所述数据体对应写入所述第三操作数指向的存储装置。
19.一种译码器,其特征在于,所述译码器包括:第一配置单元、第二配置单元以及第三配置单元,所述第一配置单元连接所述第二配置单元,所述第一配置单元通过所述第二配置单元与所述第三配置单元连接;
所述第一配置单元,用于获取COMPRESS指令中原始数据的源数据,并根据所述原始数据的源数据对所述COMPRESS指令的第一操作进行配置,得到所述第一操作的第一操作数,其中,所述第一操作用于根据所述第一操作数读取所述原始数据,将所述原始数据划分为多个数据块,所述第一操作数包括立即数或寄存器号;
所述第二配置单元,用于获取所述COMPRESS指令中压缩操作的源数据,并根据所述压缩操作的源数据对所述COMPRESS指令的第二操作进行配置,得到所述第二操作的第二操作数,其中,所述第二操作用于根据所述第二操作数,对所述数据块进行压缩;
所述第三配置单元,用于获取所述COMPRESS指令中数据头的目的数据,并根据所述数据头的目的数据对所述COMPRESS指令的第三操作进行配置,得到所述第三操作的第三操作数,其中,所述第三操作用于根据所述第三操作数,写出压缩数据中的所述数据头,然后根据所述数据头与数据体之间的对应关系写出所述数据体,所述第三操作数包括立即数或寄存器号,所述压缩数据包括多个数据头和多个数据体,所述数据头中存储对应的所述数据体的起始地址和数据长度,所述数据体包含所述压缩数据的压缩编码值。
20.一种数据处理装置,其特征在于,所述数据处理装置包括配置单元、数据读写单元以及压缩解压单元,所述配置单元与所述压缩解压单元连接,所述配置单元与所述数据读写单元连接,所述压缩解压单元连接所述数据读写单元,其中,所述配置单元包括第一配置单元、第二配置单元以及第三配置单元;
所述数据读写单元接收所述配置单元发送的第一操作数以及第三操作数,将所述第二操作数据发送到所述压缩解压单元,并根据所述第一操作数,从所述第一操作数指向的存储装置中读取原始数据,并将所述原始数据划分为对个数据块;
所述压缩解压单元接收所述配置单元发送的所述第二操作数,并根据所述第二操作数对所述数据块进行数据压缩,得到压缩数据,其中,所述压缩数据包括多个数据头和多个数据体;
所述数据读写单元还用于根据所述第三操作数,将所述压缩数据中的数据头写入所述第三操作数指向的存储装置,然后根据所述数据头与数据体之间的对应关系写出所述数据体。
CN201811622492.2A 2018-12-07 2018-12-28 Compress指令译码方法、数据处理方法、译码器及数据处理装置 Active CN111381874B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201811622492.2A CN111381874B (zh) 2018-12-28 2018-12-28 Compress指令译码方法、数据处理方法、译码器及数据处理装置
PCT/CN2019/121056 WO2020114283A1 (zh) 2018-12-07 2019-11-26 数据处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811622492.2A CN111381874B (zh) 2018-12-28 2018-12-28 Compress指令译码方法、数据处理方法、译码器及数据处理装置

Publications (2)

Publication Number Publication Date
CN111381874A true CN111381874A (zh) 2020-07-07
CN111381874B CN111381874B (zh) 2022-12-02

Family

ID=71220729

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811622492.2A Active CN111381874B (zh) 2018-12-07 2018-12-28 Compress指令译码方法、数据处理方法、译码器及数据处理装置

Country Status (1)

Country Link
CN (1) CN111381874B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113703832A (zh) * 2021-09-10 2021-11-26 中国人民解放军国防科技大学 一种立即数转移指令的执行方法、装置及介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1492314A (zh) * 1994-12-02 2004-04-28 ض� 可以对复合操作数进行压缩操作的微处理器
US20140317377A1 (en) * 2011-12-30 2014-10-23 Elmoustapha Ould-Ahmed-Vall Vector frequency compress instruction
CN104331269A (zh) * 2014-10-28 2015-02-04 中国科学院自动化研究所 一种嵌入式系统可执行代码压缩方法及代码解压缩系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1492314A (zh) * 1994-12-02 2004-04-28 ض� 可以对复合操作数进行压缩操作的微处理器
US20140317377A1 (en) * 2011-12-30 2014-10-23 Elmoustapha Ould-Ahmed-Vall Vector frequency compress instruction
CN104331269A (zh) * 2014-10-28 2015-02-04 中国科学院自动化研究所 一种嵌入式系统可执行代码压缩方法及代码解压缩系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
管茂林等: "流体系结构指令存储器优化设计研究", 《电子学报》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113703832A (zh) * 2021-09-10 2021-11-26 中国人民解放军国防科技大学 一种立即数转移指令的执行方法、装置及介质

Also Published As

Publication number Publication date
CN111381874B (zh) 2022-12-02

Similar Documents

Publication Publication Date Title
CN109285105B (zh) 水印检测方法、装置、计算机设备和存储介质
CN110647703A (zh) 动画播放方法、装置、计算机设备和存储介质
US20170308385A1 (en) Overflow detection and correction in state machine engines
US8572054B2 (en) Forward compatibility guaranteed data compression and decompression method and apparatus thereof
CN114723033B (zh) 数据处理方法、装置、ai芯片、电子设备及存储介质
CN111381874B (zh) Compress指令译码方法、数据处理方法、译码器及数据处理装置
CN106445616B (zh) 终端设备从多系统至单系统的升级方法及装置
CN108415668B (zh) 芯片激励方法、装置、系统、计算机设备和存储介质
CN116302743A (zh) 一种usb接口测试方法、系统、计算机设备和存储介质
CN111381877B (zh) Decompress指令译码方法、数据处理方法、译码器及数据处理装置
CN111880916A (zh) Gpu中多绘制任务处理方法、装置、终端、介质及主机
CN113590551B (zh) 一种材料数字化扩展格式系统、方法、介质及设备
US20160094854A1 (en) Processing parameters for operations on blocks while decoding images
CN111381876B (zh) move指令译码方法、数据移动方法、译码器及数据存取装置
CN114185766A (zh) 一种代码检测方法、装置、电子设备及存储介质
Rodrigues et al. Using dynamic reconfiguration to reduce the area of a JPEG decoder on FPGA
JP7003443B2 (ja) 符号化プログラム、符号化装置および符号化方法
CN114071154A (zh) 一种数据解码方法、装置、电子设备及可读存储介质
US20130132710A1 (en) Method of compressing and decompressing an executable or interpretable program
CN110647753B (zh) 内核文件的获取方法、装置、设备及存储介质
CN115456858B (zh) 图像处理方法、装置、计算机设备及计算机可读存储介质
CN115861511B (zh) 绘制命令的处理方法、装置、系统和计算机设备
CN113031959B (zh) 变量替换方法、装置、系统及存储介质
CN113938744B (zh) 视频转场类型处理方法、设备及存储介质
CN111597773B (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
GR01 Patent grant
GR01 Patent grant