指令流压缩、解压缩方法及装置制造方法及图纸

技术编号:25755751 阅读:48 留言:0更新日期:2020-09-25 21:05
本发明专利技术实施例提供一种指令流压缩、解压缩方法及装置。其中,压缩方法包括:对于待压缩指令流中的任一条指令,根据指令中各部分是否存在及长度,生成标志位,作为压缩后的指令的第一个字节;对于指令中存在的任一部分,对部分进行编码,将编码结果作为压缩后的指令中部分对应的字节,获得进行单指令压缩之后的待压缩指令流;根据LZMA压缩算法,对进行单指令压缩之后的待压缩指令流进行指令间冗余的压缩。本发明专利技术实施例通过考虑指令内部以及指令之间的冗余关系,实现基于标志位推导的压缩方法,能极大地提升指令流的压缩效果、提高压缩率。

【技术实现步骤摘要】
指令流压缩、解压缩方法及装置
本专利技术涉及计算机
,更具体地,涉及一种指令流压缩、解压缩方法及装置。
技术介绍
现有的针对Intel64位指令流的压缩算法,主要包括以下步骤:进行指令间的压缩之后,再利用LZ(Lempel-Ziv)压缩算法进行进一步压缩。根据空间局部性原理,一定范围内指令往往只访问同一个地址或者相邻的地址,这些地址之间存在一定的关系。进行指令间压缩的基本思路是对指令流中指令地址部分进行压缩,通过记录偏移地址等方法来达到压缩的目的。指令间压缩的具体过程包括:逐个分析当前指令所访问的指令是否与之前的指令相同或者相邻,若是,则计算当前指令地址与前面相同或者相邻地址的偏移地址,并且用偏移地址与前面指令序号对当前指令的地址部分进行替换。但现有指令流压缩方法存在压缩率不理想的不足。
技术实现思路
本专利技术实施例提供一种指令流压缩、解压缩方法及装置,用以解决或者至少部分地解决现有技术存在的压缩率较低的缺陷。第一方面,本专利技术实施例提供一种指令流压缩方法,包括:对于待压缩指令流中的每一条指令,根据所述指令中各部分是否存在及长度,生成标志位,作为压缩后的所述指令的第一个字节;对于所述指令中存在的每一部分,对存在的所述部分进行编码,将编码结果作为压缩后的所述指令中存在的所述部分对应的字节,获得进行单指令压缩之后的所述待压缩指令流;根据LZMA压缩算法,对进行单指令压缩之后的所述待压缩指令流进行指令间冗余的压缩。优选地,所述根据所述指令中各部分是否存在及长度,生成标志位,作为压缩后的所述指令的第一个字节的具体步骤包括:对于LegacyPrefix、REXprefix、ModRM或SIB部分,若所述部分存在,则将所述标志位中所述部分对应的位设置为1;若所述部分不存在,则将所述标志位中所述部分对应的位设置为0;对于Opcode部分,根据所述部分的长度和前缀,对所述标志位中所述部分对应的两个位进行设置;对于Displacement和Immediate部分,若Displacement和Immediate部分中的任一个存在,则将所述标志位中Displacement和Immediate部分对应的位设置为1;若Displacement和Immediate部分均不存在,则将所述标志位中Displacement和Immediate部分对应的位设置为0。优选地,所述对存在的所述部分进行编码,将编码结果作为压缩后的所述指令中所述部分对应的字节的具体步骤包括:对于LegacyPrefix部分,对所述LegacyPrefix部分中存在的组别分别进行编码,生成压缩后的所述指令中所述LegacyPrefix部分对应的字节中,所述组别对应的位;对于REXprefix部分,对所述REXprefix中的后四位进行编码,生成压缩后的所述指令中所述REXprefix部分对应的字节。优选地,所述对存在的所述部分进行编码,将编码结果作为压缩后的所述指令中所述部分对应的字节的具体步骤包括:对于Opcode部分,将所述Opcode部分中的后两个字节,作为压缩后的所述指令中所述Opcode部分对应的字节。优选地,所述对存在的所述部分进行编码,将编码结果作为压缩后的所述指令中所述部分对应的字节的具体步骤包括:对于Displacement和Immediate部分,根据游程编码方法,对所述Displacement和Immediate部分进行编码,生成压缩后的所述指令中所述Displacement和Immediate部分对应的字节。第二方面,本专利技术实施例提供一种指令流解压缩方法,包括:根据LZMA解压算法,对待解压指令流进行初次解压;对于经过初次解压后的所述待解压指令流中的每一条指令,根据所述指令中的第一个字节,确定解压后的所述指令中各部分是否存在及长度;对于解压后的所述指令中存在的每一部分,对所述指令中所述部分对应的字节进行解码,将解码结果作为解压后的所述指令中的所述部分。第三方面,本专利技术实施例提供一种指令流压缩装置,包括:标志生成模块,用于对于待压缩指令流中的每一条指令,根据所述指令中各部分是否存在及长度,生成标志位,作为压缩后的所述指令的第一个字节;编码压缩模块,用于对于所述指令中存在的每一部分,对存在的所述部分进行编码,将编码结果作为压缩后的所述指令中存在的所述部分对应的字节,获得进行单指令压缩之后的所述待压缩指令流;LZMA压缩模块,用于根据LZMA压缩算法,对进行单指令压缩之后的所述待压缩指令流进行指令间冗余的压缩。第四方面,本专利技术实施例提供一种指令流解压缩装置,包括:LZMA解压模块,用于根据LZMA解压算法,对待解压指令流进行初次解压;标志读取模块,用于对于经过初次解压后的所述待解压指令流中的每一条指令,根据所述指令中的第一个字节,确定解压后的所述指令中各部分是否存在及长度;解码解压模块,用于对于解压后的所述指令中存在的任一部分,对所述指令中所述部分对应的字节进行解码,将解码结果作为解压后的所述指令中的所述部分。第五方面,本专利技术实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,执行所述程序时实现如第一方面的各种可能的实现方式中任一种可能的实现方式所提供的指令流压缩方法的步骤,或如第二方面的各种可能的实现方式中任一种可能的实现方式所提供的指令流解压缩方法的步骤。第六方面,本专利技术实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面的各种可能的实现方式中任一种可能的实现方式所提供的指令流压缩方法的步骤,或如第二方面的各种可能的实现方式中任一种可能的实现方式所提供的指令流解压缩方法的步骤。本专利技术实施例提供的指令流压缩、解压缩方法及装置,通过考虑指令内部的冗余关系,实现基于标志位推导的指令内部压缩方法,并利用LZMA算法实现指令间冗余的压缩,能极大地提升指令流的压缩效果、提高压缩率。进一步地,通过结合指令内部以及指令之间的冗余关系,能进一步提高压缩率。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为根据本专利技术实施例提供的指令流压缩方法的流程示意图;图2为根据本专利技术实施例提供的指令流压缩方法的压缩效果示意图;图3为根据本专利技术实施例提供的指令流解压缩方法的流程示意图;图4为根据本专利技术实施例提供的指令流压缩装置的结构示意图;图5为根据本专利技术实施例提供的指令流解压缩装置的结构示意图;图6为根据本专利技术实施例提供的电子设备的实体结构示意图。具体实施方式...

【技术保护点】
1.一种指令流压缩方法,其特征在于,包括:/n对于待压缩指令流中的每一条指令,根据所述指令中各部分是否存在及长度,生成标志位,作为压缩后的所述指令的第一个字节;/n对于所述指令中存在的每一部分,对存在的所述部分进行编码,将编码结果作为压缩后的所述指令中所述存在的部分对应的字节,获得进行单指令压缩之后的所述待压缩指令流;/n根据LZMA压缩算法,对进行单指令压缩之后的所述待压缩指令流进行指令间冗余的压缩。/n

【技术特征摘要】
1.一种指令流压缩方法,其特征在于,包括:
对于待压缩指令流中的每一条指令,根据所述指令中各部分是否存在及长度,生成标志位,作为压缩后的所述指令的第一个字节;
对于所述指令中存在的每一部分,对存在的所述部分进行编码,将编码结果作为压缩后的所述指令中所述存在的部分对应的字节,获得进行单指令压缩之后的所述待压缩指令流;
根据LZMA压缩算法,对进行单指令压缩之后的所述待压缩指令流进行指令间冗余的压缩。


2.根据权利要求1所述的指令流压缩方法,其特征在于,所述根据所述指令中各部分是否存在及长度,生成标志位,作为压缩后的所述指令的第一个字节的具体步骤包括:
对于LegacyPrefix、REXprefix、ModRM或SIB部分,若所述部分存在,则将所述标志位中所述部分对应的位设置为1;若所述部分不存在,则将所述标志位中所述部分对应的位设置为0;
对于Opcode部分,根据所述部分的长度和前缀,对所述标志位中所述部分对应的两个位进行设置;
对于Displacement和Immediate部分,若Displacement和Immediate部分中的任一个存在,则将所述标志位中Displacement和Immediate部分对应的位设置为1;若Displacement和Immediate部分均不存在,则将所述标志位中Displacement和Immediate部分对应的位设置为0。


3.根据权利要求1所述的指令流压缩方法,其特征在于,所述对存在的所述部分进行编码,将编码结果作为压缩后的所述指令中所述部分对应的字节的具体步骤包括:
对于LegacyPrefix部分,对所述LegacyPrefix部分中存在的组别分别进行编码,生成压缩后的所述指令中所述LegacyPrefix部分对应的字节中,所述组别对应的位;
对于REXprefix部分,对所述REXprefix中的后四位进行编码,生成压缩后的所述指令中所述REXprefix部分对应的字节。


4.根据权利要求1所述的指令流压缩方法,其特征在于,所述对存在的所述部分进行编码,将编码结果作为压缩后的所述指令中所述部分对应的字节的具体步骤包括:
对于Opcode部分,将所述Opcode部分中的后两个字节,作为压缩后的所述指令中所述Opcode部分对应的字节。


5.根据权利要求1所述的指令流压缩方法,其特征在于...

【专利技术属性】
技术研发人员:孟丹丁洁朱子元王立敏闫超
申请(专利权)人:中国科学院信息工程研究所
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1