CN101292429B - 使用多个马尔可夫链进行压缩的方法和装置 - Google Patents
使用多个马尔可夫链进行压缩的方法和装置 Download PDFInfo
- Publication number
- CN101292429B CN101292429B CN2006800386833A CN200680038683A CN101292429B CN 101292429 B CN101292429 B CN 101292429B CN 2006800386833 A CN2006800386833 A CN 2006800386833A CN 200680038683 A CN200680038683 A CN 200680038683A CN 101292429 B CN101292429 B CN 101292429B
- Authority
- CN
- China
- Prior art keywords
- symbol
- instruction
- command code
- markov chain
- correlation
- 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.)
- Expired - Fee Related
Links
- 238000007906 compression Methods 0.000 title claims abstract description 48
- 230000006835 compression Effects 0.000 title claims abstract description 41
- 238000000034 method Methods 0.000 title claims description 37
- 230000000739 chaotic effect Effects 0.000 claims abstract description 16
- 238000010586 diagram Methods 0.000 description 10
- 238000004422 calculation algorithm Methods 0.000 description 6
- 239000003638 chemical reducing agent Substances 0.000 description 5
- 230000006837 decompression Effects 0.000 description 5
- 238000007619 statistical method Methods 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000013144 data compression Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000000926 separation method Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 2
- 230000001343 mnemonic effect Effects 0.000 description 2
- 241000700605 Viruses Species 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000010612 desalination reaction Methods 0.000 description 1
- 238000010790 dilution Methods 0.000 description 1
- 239000012895 dilution Substances 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012821 model calculation Methods 0.000 description 1
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/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
为了提高压缩性能,本发明在压缩过程中使用多个马尔可夫链来提供指令内相关性和指令间相关性。输入的混乱序列(如,指令流)通过以下方式进行压缩:把该序列建模成为多个马尔可夫链,以便同时捕捉和利用混合在输入的混乱序列中的子序列之间和之内的相关性。多个马尔可夫链可进行组合,以便驱动熵编码器。
Description
技术领域
本发明涉及可执行代码的压缩,具体而言,涉及把指令内和指令间的相关性建模成为多个马尔可夫链,以用于可执行代码的压缩。
背景技术
压缩可以通过将一组数据用另一种方式进行等同表示,从而降低其大小。数据压缩是指,降低用于表示信息的数据量的处理。数据压缩技术降低了信息存储和传输的成本,故而用在很多应用场合,从简单的文件大小降低到语音和视频编码。
常用的大多数压缩方法要么是基于词典的方法,要么是统计方法。统计方法把熵编码和建模技术结合起来。一般情况下,统计方法用于压缩可执行代码。输入的符号序列中的每个输入符号都用一个变长码来表示,从而产生表示输入符号的代码流,此代码流的比特少于输入的符号序列的比特。每个输入符号都具有与其在输入的符号序列中出现的频度相关的特定概率值。为了减少比特数,大多数统计压缩方法把具有最高出现概率的符号编成具有最少比特数的代码。
一般情况下,统计压缩方法包括模型和编码器。模型包括统计信息,统计信息是根据输入的符号序列而获得的。在最简单的情况下,例如,马尔可夫模型,此模型根据输入符号在输入符号序列中出现的频度,提供其概率值。编码器根据输入的符号序列和模型提供的概率值,产生经过编码的代码序列。
可执行代码是线性指令序列。对于给定的机器架构,指令具有特定的格式,一般包括三个字段:操作码、寻址模式、操作数。可执行代码的统计压缩不同于常规数据的统计压缩,这是因为,可执行代码的结构有特定的统计相关性。统计相关性存在于一条指令的不同字段之间,这叫做指令内相关性。此外,由于机器语言是由其句法、语义和模块性来表征的, 所以,不同指令之间也有很强的统计相关性,这叫做指令间相关性。指令内相关性和指令间相关性以错综复杂的方式相互混合在一起。
通常,为了利用指令之间的统计相关性来实现高压缩率,可执行程序的操作码和剩余部分需要进行严格的机械分离。然而,这种分离方法并不是最优的,因为,它无法利用一些指令内相关性。但另一方面,如果不提取操作码就把可执行程序作为一个序列进行压缩,那么,指令间相关性就会模糊,这也会损害压缩性能。
指令内相关性和指令间相关性二者都可采用如下方式得到充分利用:先把指令的操作码和指令的寻址模式进行组合,把它们视为扩展的操作码,然后,分离和压缩指令的扩展操作码序列。但是,这种替代方法也是有问题的,因为它人为地在当前指令的操作码和先前指令的寻址模式之间产生了顺序耦合,即便这两个实体具有很弱的相关性。因此,扩展操作码的顺序压缩达不到高的压缩率。
发明内容
为了提高压缩性能,本发明在压缩过程中使用多个马尔可夫链来提供指令内相关性和指令间相关性。
在一个方案中,提供了一种用于压缩指令流的压缩方法,包括:把在所述指令流中的输入的混乱符号序列建模成为多个马尔可夫链,所述输入的混乱符号序列包括操作码子序列和寻址模式子序列;使用与和一个符号相关联的符号类型对应的马尔可夫链中的上下文模型,对所述符号进行编码。对所述符号进行编码的操作进一步包括:如果所述符号是操作码,则使用所述多个马尔可夫链中的提供指令间相关性且将先前的操作码作为上下文的一个马尔可夫链来编码所述符号;而如果所述符号不是操作码,则使用所述多个马尔可夫链中的提供指令内相关性且将所述先前的操作码以及先前的寻址模式作为上下文的另一马尔可夫链来编码所述符号。
在另一方案中,提供了一种用于压缩指令流的压缩装置,包括:用于把在所述指令流中的输入的混乱符号序列建模成为多个马尔可夫链的模块,所述输入的混乱符号序列包括操作码子序列和寻址模式子序列;用于使用与和一个符号相关联的符号类型对应的马尔可夫链中的上下文模型, 对所述符号进行编码的模块。对所述符号进行编码的模块进一步包括:用于如果所述符号是操作码,则使用所述多个马尔可夫链中的提供指令间相关性且将先前的操作码作为上下文的一个马尔可夫链来熵编码所述符号的模块;用于如果所述符号不是操作码,则使用所述多个马尔可夫链中的提供指令内相关性且将所述先前的操作码以及先前的寻址模式作为上下文的另一马尔可夫链来熵编码所述符号的模块。
附图说明
下面结合附图进行详细描述,由此,本发明的实施例的特征将变得显而易见,在这些附图中,相同标记代表相同部件,其中:
图1是根据本发明的基本原理用于压缩可执行代码(可执行程序或文件中的程序指令流)的压缩器的一个实施例的框图;
图2的框图示出了指令的一个实施例的格式;
图3举例说明了三个指令集,每个指令集都包括两个连续指令,每个指令集中的第一个指令是操作码为0x8B的mov指令;
图4的柱状图示出了可执行文件“acrord32.exe”中紧随操作码0x8B之后的那些指令中的操作码的分布情况;
图5举例说明了mov指令,其操作码0x8B之后跟着ModR/M字节;
图6的柱状图示出了在可执行文件“acrord32.exe”中位于操作码0x8B之后的ModR/M字节的分布情况;
图7示出了可执行程序的指令序列中的操作码子序列;
图8举例说明了包括统计不相关符号的可执行代码(程序)中的指令序列;
图9是根据本发明的基本原理用于压缩可执行代码的方法的一个实施例的流程图;
图10是根据本发明的基本原理用于压缩可执行代码的系统的一个实施例;
图11是对使用图9所示的方法进行编码的流进行解码的解压缩算法的一个实施例的流程图。
虽然说明书是结合本发明举例说明性的实施例而进行描述的,但是, 其很多替代版本、修改版本和变形版本对于本领域普通技术人员来说都是显而易见的。因此,本发明应作宽泛的解释,并且,仅由权利要求书进行界定。
具体实施方式
在说明书中,罗列了很多具体细节。但是,本发明的实施例也可以不用这些具体细节来实施。在其它实例中,为了做出清晰易懂的描述,没有说明公知的电路、结构和技术。
在一个实施例中,有限上下文模型(也被称作马尔可夫模型)同时捕获和利用指令间相关性和指令内相关性(统计冗余混杂在可执行程序中)。相比现有模型而言,这种马尔可夫建模方法能够提供优异的压缩性能。
图1是根据本发明的基本原理用于压缩可执行代码(可执行程序或文件中的程序指令流)的压缩器100的实施例的框图。压缩器100包括编码器102和模型104。要压缩的可执行代码以符号序列106的形式输入到编码器102和模型104。符号是概括性的用词,在不同指令集中有不同意思。模型把每个符号的概率估计(概率值)110提供给编码器102,这样,编码器102就可以用最大压缩对符号进行编码,从而提供比输入的符号序列106要短的压缩代码序列108。
压缩器110使用数据压缩的统计方法,对输入的符号序列106中的符号一次一个地进行编码,由此得到变长的输出代码。输出代码的长度根据符号的概率(频度)而变,低概率的符号比高概率的符号要用较多的比特进行编码。
模型104根据符号序列106构建多个马尔可夫链,即,模型104发现符号强烈相关的符号子序列,然后,估计符号在其子序列中的概率。
编码器102可以是熵编码器,例如,算术编码器,它根据模型104提供的概率,把符号子序列106替换成单浮点数(小于1且大于或等于0)。熵编码器对于本领域普通技术人员来说是公知技术,不在本发明保护范围之内。
用来对输入符号进行编码的比特的数量取决于模型104提供的预测概率。在每个符号均为8比特的实施例中,此符号有(28个)可能的值, 每个值出现的预测概率都是P(1/256)。通过计算从模型104收到的预测概率的-log2(预测概率),得出用来对代码序列中的符号进行编码的比特的数量。假设各符号的概率相等,那么,预测概率就是1/256,这需要用8比特代码对输入符号进行编码。如果一个符号的出现时间占25%,则用2比特(-log2(.25))表示该符号,所以,这个8比特符号可用2比特代码来表示,从而此符号得以压缩。因此,模型计算出来的预测概率决定了压缩器100所能提供的压缩率。在可执行程序中,操作码序列可以建模成为马尔可夫过程。
图2的框图示出了指令的一个实施例的格式。所示的实施例是IA-32指令集的架构(IA)-32指令200。在IA-32英特尔架构软件开发者手册中描述的IA-32指令编码是图2所示格式的子集。指令包括一类或多类符号。在IA-32指令集中,这些类型的符号包括可选的指令前缀202(以任意次序)、主操作码字节204(最多三个字节)、包括ModR/M字节206的寻址方式指示符(如果需要的话),有时还有SIB(Scale-Index-Base)字节208、位移量210(如果需要的话)、立即数据字段212(如果需要的话)。每个符号的长度都取决于指令集。例如,在IA-32指令集中,符号长度是8比特(一个字节)。在其它指令集中,符号长度可以比8比特长,也可以比8比特短。把一条指令分成上述不同部分的信息对于指令集而言是特定的,它可以提供给压缩和解压缩过程。
下面描述IA-32指令集的实施例。但是,本发明不限于IA-32指令集。本发明适用于任何指令集。本发明也不限于指令集,它同样适用于具有与指令间和指令内相关性类似的一些相关性的任何输入流。
要从存储器中访问操作数的很多指令具有寻址方式指示符(ModR/M)字节206,它位于主操作码之后。ModR/M字节包括模式字段214、寄存器/操作码字段216和寄存器/模式(r/m)字段218。模式字段214通常和r/m字段218组合起来,用以指明寄存器和寻址模式。寄存器/操作码字段216要么指明寄存器编号,要么指明操作码信息。r/m字段218可以指明寄存器作为操作数,或者,它可以与模式字段214组合起来,对寻址模式进行编码。
SIB字节208是第二个寻址方式指示符比特,它包括缩放字段220、 索引字段222和基字段224。缩放字段228指明缩放因子。索引字段222指明索引编号的寄存器编号,基字段224指明基寄存器的寄存器编号。因此,指令集中的一条指令可以视为一种结构,即,要素的集合。在一个实施例中,一条特定指令的长度可以是固定的,但是,不同指令可以具有不同数量的要素,即,指令集中的指令长度是可变的。在另一个实施例中,指令集中的指令长度是固定的。
可执行代码中存在一些典型的指令序列。因此,可执行代码中存在强烈的指令间相关性。例如,在IA-32可执行程序中,函数的前两个汇编指令通常是:push指令(PUSH ebp),把ebp所指向的当前本地栈帧进行保存;后面接着是mov指令(MOV ebp,esp),把新的本地栈帧的指针移向ebp。分配给PUSH ebp指令的以16为基表示的二进制码(后缀“0x”表示的十六进制数)是“0x55”,分配给MOV ebp,esp的二进制码是“0x8B 0xEC”。因此,符号序列是“0x55 0x8B 0xEC”。此外,比较指令“CMP** **”之后的指令通常是“JMP”指令类,例如,相等跳转(JE)或不等跳转(JN)。
图3举例说明了三个指令集,每个指令集都包括两个连续指令,每个指令集中的第一个指令是操作码为0x8B的mov指令。图中显示了对应于每条指令的汇编语言指令和以16为基表示的二进制码。通用汇编语言mov指令的形式为“mov destination,source”,它对源进行一次复制,然后将此值存入目的地,从而把一个值从源移动到目的地。源的内容不受影响,而目的地的先前内容却被覆盖掉了。
源可以是立即值、通用寄存器、片段寄存器或存储器单元。目的地可以是通用寄存器、片段寄存器或存储器单元。源和目的地一般具有相同的大小,例如,一个字节(8比特)、一个字(16比特)、双字(32比特)。所有的mov指令都具有相同的记忆码(mov),即,为具有类似功能的一类指令操作码保留的名称。在图2所示的例子中,有两个移动指令的记忆码为“mov”,但它们具有不同的操作码0x8B和0x89。操作码为0x8B(操作码中的比特1设为1,其中,比特1表示传输方向)的mov指令把数据移入存储器,而操作码为0x89(操作码中的比特1设为0)的mov指令则把数据移入寄存器。
在第一指令集的两个连续指令300中,操作码为0x8B的mov指令 后面跟着操作码为0xe8的call指令。在第二指令集和第三指令集的两个连续指令302、304中,操作码为0x8B的mov指令后面跟着操作码为0x89的另一条mov指令。
可执行代码acrord32.exe一般用于比较压缩算法。图4的柱状图示出了可执行文件“acrord32.exe”中紧随操作码0x8B之后的那些指令中的操作码的值(0-255)的分布情况。第n阶条件熵是发送知道先前n-1个操作码的某个操作码的比特的平均数量。高度有偏的柱状图清楚显示出了操作码序列的低条件熵,即,传输操作码0x8B之后的操作码所需的比特的平均数量。例如,acrord32.exe的第一阶条件熵和3.498比特一样低。
正是因为强指令间相关性的上述观测结果,压缩可执行代码的现有技术才能把操作码(命令)和可执行代码流的剩余部分区分开,然后独立地比较它们。
但是,这种方法会破坏一些强指令内相关性。从存储器中访问操作数的很多指令在操作码之后跟随有寻址方式指示符(ModR/M字节)。图5举例说明了操作码0x8B之后是ModR/M字节的mov指令。图中显示出了对应于每条指令的汇编语言指令和以16为基表示的二进制码。
在图5所示的例子中,指令500的ModR/M是“0xEC”;即,模式字段214是“11b”,R/M字段218是“000b”,寄存器字段216是“001b”。指令502、504的ModR/M是“0x35”,即,模式字段214是“00b”,R/M字段218是“110b”,寄存器字段216是“101b”。
图6的柱状图示出了可执行文件“acrord32.exe”中位于操作码0x8B之后的ModR/M字节的值(0-255)的分布情况。可以看出,ModR/M值的分布是高度非对称的。这揭示了寻址模式和操作码之间的强相关性。在本例中,操作码0x8B之后的ModR/M字节的条件熵只有3.906个比特。因此,将操作码独立于可执行程序的剩余部分进行压缩,就不会消除在寻址模式对有关操作码的依赖性中隐藏的统计冗余。通过使寻址模式的熵编码一定程度上依赖于相应的操作码,可以明显改善压缩性能。
在下面的描述中,X1X2…XN是要压缩的可执行程序的指令序列,Y1Y2…YJ是指令序列X1X2…XN的操作码子序列,其中,YJ=XN,n=1+∑1≤i<jLi,Li是第i个指令的长度。对于IA-32指令集来说,长度单位 是字节。
图7示出了可执行程序的指令序列中的操作码子序列。指令序列开始于字节X1,结束于第n个指令的最后一个字节,即,字节Xi{N}。图中显示了指令序列中的四条指令。第一条指令和第二条指令是连续的指令。第三条指令和第四条指令是不连续的指令,第三条指令是指令序列中的第k条指令,第四条指令是第n条指令。操作码子序列包括来自各条指令的操作码,即,X1,Xi+1,...Xi{k}+1,...Xi{n}+1。
本领域普通技术人员知道,马尔可夫链一般是离散的随机过程。随机过程是具有随机概率分布或模式的过程,它可以进行统计分析,但却无法进行准确预测。例如,在一阶马尔可夫链中,各未来状态的出现概率仅仅取决于系统的当前状态或其前一个状态,而不依赖于抵达当前状态的路径。对于可执行代码,马尔可夫过程的阶数大于1,并且,可以使用任何阶数的马尔可夫模型。例如,在一个实施例中,可以使用高达三阶的模型,即,Xi取决于X{i-1}、X{i-2}和X{i-3}。
在本发明的一个实施例中,可以使用一个马尔可夫链来提供指令间相关性,可以使用另一个马尔可夫链来提供指令内相关性。例如,在概率估计P(Xi|S(Xi-1Xi-2...Xi-t))驱动的指令序列Xi的熵编码过程中,条件状态S(Xi-1Xi-2...Xi-t)是Xi-1Xi-2...Xi-t的合适子序列。这个子序列可以是指令间相关性的操作码子序列,或者,是与指令内相关性的操作码子序列不同的子序列。所以,条件状态能够将Xi的前缀中一个或多个统计不相关符号从上下文模型中排除掉,以避免上下文淡化(dilution)。因此,概率估计值可以从模型中排除统计不相关符号。
图8举例说明了包括统计不相关符号的可执行代码(程序)中的指令序列。操作码Yj前缀中不相关的符号主要是先前指令中的操作数。例如,如图8所示,第三条指令“0x89 0x45 0x08”中的操作数0x08和最后一条指令“0x85 0xC0”中的操作码0x85没有关系。因此,最后一条指令中的寻址模式符号0xC0的上下文是“0x8D 0x4D 0x50,0x89 0x45 0x85”。符号“0x8D 0x4D”来自指令序列中的第一条指令。符号“0x89 0x45”来自第三条指令,而符号“0x85”则是最后一条指令的操作码。第一条指令的符号0x10和第三条指令的0x08统计不相关于符号0xC0,因此应从概率估计 中排除掉。
上面举例给出的子序列是既有指令间相关性、还有指令内相关性的马尔可夫链。所以,熵编码使用的马尔可夫链可以是多个。
在一个实施例中,输入的指令流中的符号的长度是一个字节,指令流是一个字节接一个字节地进行编码的。如果给定字节(符号)是某条指令的操作码Yj,那么,熵编码器以先前指令(即,Yj-1Yj-2…Yj-t)的操作码为上下文用条件概率驱动。然后,那个条件概率P(Yj|Yj-1Yj-2…Yj-t)用Yj进行更新。如果给定的字节不是操作码,即为Xi,那么,熵编码器用条件概率P(Xi|S(Xi-1Xi-2…Xi-t))驱动。马尔可夫链(序列)S(Xi-1Xi-2…Xi-t)对于不同的指令集亦有所不同。根据前面对指令内相关性的分析可知,如果给定寻址模式字节的话,那么,在一个实施例中,马尔可夫链(序列)可包括先前的操作码Yj、先前的寻址模式 和先前的操作码Yj-1。在Xi编码后,上下文模型P(Xi|S(Xi-1Xi-2…Xi-t))根据Xi的值进行更新。例如,图8所示的指令序列中的最后一条指令的马尔可夫链可以包括:先前指令(四条指令的序列中的第三条指令)的先前操作码0x89、先前的寻址模式0x45(对于第三条指令而言)和先前的操作码0x50(对于第二条指令而言)。图8举例给出了马尔可夫链。
图9是根据本发明的基本原理的压缩算法的实施例的流程图。对符号序列中的一个符号的概率进行估计的方法可以用图1所示的模型104来实现。编码器102可以使用模型104提供的估计概率,编码器102可以是对符号序列进行编码的熵编码器。
为了简化描述,下面说明两路马尔可夫链的实施例。这些马尔可夫链用流程图中的两个不同支路来表示。但是,本发明不限于两个马尔可夫链,也可以有两个以上的不同分支,每个分支对应于一个不同的马尔可夫链。
参见图9,在模块900中,以字节流的形式接收与可执行代码的指令对应的N字节输入流,每个字节对应于字节流中的一个符号。
在模块902中,输入字节流中处理过的字节数量(i)增加,然后,与 输入字节流中的总字节数量(N)进行比较,以判断是否到达了最后一个字节。如果是,输入字节流的处理就结束了。如果否,则处理继续进行到模块904。
在模块904中,如果该字节(符号)是指令的操作码,则处理继续进行到模块906。如果否,处理继续进行到模块910。用来判断符号类型的信息在指令集中有所暗示。在IA 32指令集中,该信息包括由压缩和解压缩算法的一个实施例使用的数个查找图。
在模块906中,编码器102(图1)使用模型104(图1)提供的条件概率,基于该模型,以先前指令的操作码为上下文,对该字节(符号)进行编码。模型104根据马尔可夫链计算符号的条件概率,然后,把此概率交给编码器102。然后,编码器生成以编码流形式输出的输出比特。如上所述,编码器可以是熵编码器。处理继续进行到模块908。
在模块908中,使用当前操作码更新上下文模型。把经过编码的操作码放在编码流914中,然后,处理继续进行到模块902,从而输入流的压缩过程继续。在模块910中,基于模型,使用用于指令内相关性的子序列(而非操作码子序列)的条件概率,对非操作码字节进行编码。处理继续进行到模块912。在模块912中,非操作码子序列的上下文模型根据当前字节(符号)进行更新。把经过编码的字节放在编码流914中,然后,处理继续进行到模块902,从而输入流的压缩过程继续。
图10是按照本发明一个实施例根据估计概率压缩程序指令流的系统1000的框图。系统1000包括处理器(CPU)1002、存储控制器1006、非易失性存储器1004(如闪存)和易失性存储器1008。存储控制器1006控制对存储器件1010的访问,存储器件1010可以是硬盘。存储在存储器1008或存储器件1010中的可执行代码可以使用图10所示的压缩过程进行压缩。压缩后的可执行代码可以存储在非易失性存储器1004中,也可以存储在存储器件1010中。对使用图9所示方法进行过编码的流进行解码的解码器可以存储在非易失性存储器1004中,也可以存储在存储器件1010中。
在一个实施例中,使用多路马尔可夫链,把可执行代码顺序编码成为单个代码流,以驱动熵编码器。对经过压缩的可执行程序进行解压缩的过程类似于上面结合图9描述的压缩过程。只有与这些符号对应的代码才会传输到编码器。编码器通过使用指令集的机器语言的句法来解析指令序 列,从而把操作码Yj和操作数Xi区分开。例如,英特尔公司提供的IA-32英特尔架构软件开发者手册中描述了IA-32指令集的句法。虽然本文描述的实施例使用的是IA-32指令集,但是,对指令间相关性和指令内相关性共同建模的方法也适用于其它指令集,包括精简指令集计算机(RISC)的指令集。
图11是对使用图9所示的方法进行了编码的流进行解码的解压缩算法的实施例的流程图。
在模块1100中,接收与可执行代码中的N符号指令对应的编码流(概率值)。处理继续进行到模块1102。
在模块1102中,从编码流中已经解码出的符号的数量(i)增加,然后,与从编码流中解码出的总符号数量进行比较,以判断是否到达了最后一个符号。如果是,编码流的处理就结束了。如果否,处理继续进行到模块1104。
在模块1104中,根据先前解码出的符号和特定于指令集的查找信息,确定下一个要解码的符号的类型。处理继续进行到模块1106。
在模块1106中,如果下一个符号是操作码,则处理继续进行到模块1108。否则,处理继续进行到模块1112。
在模块1108中,解码器使用条件概率和输入的概率值,对字节(符号)进行解码。处理继续进行到模块1110。
在模块1110中,使用解码出的操作码更新上下文模型。把解码出的操作码放在解码字节流中,然后,处理继续进行到模块1102,从而对编码流进行解压缩的过程继续。
在模块1112中,下一个要解码的符号不是操作码,故而,进行解码时使用用于指令内相关性的子序列(而非操作码子序列)的条件概率以及输入的概率。处理继续进行到模块1114。
在模块1114中,根据解码出的字节(符号),更新非操作码子序列的上下文模型。把解码出的字节放在解码字节流中,然后,处理继续进行到模块1102,从而对编码流进行解压缩的过程继续。
对可执行程序进行压缩的方法可以用来对可执行程序进行压缩,从而将其存储在具有有限存储容量和/或通信带宽的设备中,故而,实时的压缩/解压缩是必需的。例如,可以压缩可扩展固件接口(EFI)驱动器,从而 将其存储在有限大小的闪存中。在一个实施例中,2兆字节的可执行程序可以压缩到大约316K字节,从而能把压缩后的可执行程序存储在320K的闪存中。压缩后的文件小于Lempel-Ziv-Markov链算法(LZMA)所能达到的366K。
当压缩文件acroad32.exe时,此压缩方法所得的压缩比为69.53%。这一压缩比好过WinZip压缩相同文件取得的压缩比55.07%。WinZip是WinZip Computing推出的商用文件压缩工具。
此外,在无线环境中可以压缩可执行程序,以降低网络流量和传输成本,从而使网络服务提供商能支持更多的终端用户。
在其它实施例中,对可执行程序进行压缩的方法可用来压缩网络应用程序,如微软的ActiveX,后者通过互联网下载,并可以在执行之前进行实时的解压缩。在另一个实施例中,压缩方法可以用来进行实时扫描,例如,实时扫描压缩文件中的病毒。
本发明的实施例也适用于具有与指令间和指令内相关性类似的相关性的任何输入流。输入的指令流是包含各种子序列的混乱序列,例如,包括操作码子序列、指令子序列和寻址模式子序列等等。指令间和指令内相关性也是这些子序列之间或之内的相关性。还有其它序列类似于指令序列,其相关性混合在混乱序列中。根据相关性,把混乱序列建模成为多个马尔可夫链,从而,本发明也适用于这些混乱序列。输入的混乱序列中每个符号的概率根据此符号所属的马尔可夫链中的上下文进行估计。判断与符号对应的马尔可夫链是特定于应用程序的。在指令流压缩的实施例中,此判断基于指令内符号的类型。
说明书中的用词“一个实施例”或“实施例”表示,结合该实施例描述的特定特征、结构或特性包含在本发明的至少一个实施例中。说明书中不同地方出现“在一个实施例”并不一定全部针对同一个实施例。
对于本领域普通技术人员而言显而易见的是,本发明的实施例中涉及的方法可以体现在含有计算机可用介质的计算机程序产品中。例如,这样的计算机可用介质可包括上面存储了计算机可读程序代码的只读存储器件(如CD ROM盘片或传统的ROM器件)或计算机磁盘。
虽然上面结合多个实施例对本发明进行了描述,但是,本领域普通 技术人员可以明白,本发明不限于上述的实施例,而是可以通过在权利要求的精神实质和保护范围内进行修改和变动来付诸实施。说明书应视为举例说明性的,而无限制意味。
Claims (10)
1.一种用于压缩指令流的压缩方法,包括:
把在所述指令流中的输入的混乱符号序列建模成为多个马尔可夫链,所述输入的混乱符号序列包括操作码子序列和寻址模式子序列;
使用与和一个符号相关联的符号类型对应的马尔可夫链中的上下文模型,对所述符号进行编码,包括:
如果所述符号是操作码,则使用所述多个马尔可夫链中的提供指
令间相关性且将先前的操作码作为上下文的一个马尔可夫链来编码所述符号;
而如果所述符号不是操作码,则使用所述多个马尔可夫链中的提供指令内相关性且将所述先前的操作码以及先前的寻址模式作为上下文的另一马尔可夫链来编码所述符号。
2.权利要求1的方法,其中,所述输入的混乱符号序列是由多个子序列混合而成的。
3.权利要求2的方法,其中,建模进一步包括:
利用所述输入的混乱符号序列的子序列之间和之内的相关性,构建所述多个马尔可夫链。
4.权利要求1的方法,其中,编码进一步包括:
根据与一个符号对应的马尔可夫链中的上下文模型,估计所述符号的条件概率。
5.权利要求1的方法,其中,所述多个马尔可夫链中的一个马尔可夫链根据概率估计值,提供所述输入的混乱符号序列的子序列之间或之内的相关性。
6.一种用于压缩指令流的压缩装置,包括:
用于把在所述指令流中的输入的混乱符号序列建模成为多个马尔可夫链的模块,所述输入的混乱符号序列包括操作码子序列和寻址模式子序列;
用于使用与和一个符号相关联的符号类型对应的马尔可夫链中的上下文模型,对所述符号进行编码的模块,包括:
用于如果所述符号是操作码,则使用所述多个马尔可夫链中的提供指令间相关性且将先前的操作码作为上下文的一个马尔可夫链来熵编码所述符号的模块;
用于如果所述符号不是操作码,则使用所述多个马尔可夫链中的提供指令内相关性且将所述先前的操作码以及先前的寻址模式作为上下文的另一马尔可夫链来熵编码所述符号的模块。
7.权利要求6的装置,其中,所述输入的混乱符号序列是由多个子序列混合而成的。
8.权利要求7的装置,其中,所述用于建模的模块进一步包括:
用于利用所述输入的混乱符号序列的子序列之间和之内的相关性,构建所述多个马尔可夫链的模块。
9.权利要求6的装置,其中,所述用于编码的模块进一步包括:
用于根据与一个符号对应的马尔可夫链中的上下文模型,估计所述符号的条件概率的模块。
10.权利要求6的装置,其中,所述多个马尔可夫链中的一个马尔可夫链根据概率估计值,提供所述输入的混乱符号序列的子序列之间或之内的相关性。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/282,145 US7319417B2 (en) | 2005-11-18 | 2005-11-18 | Compression using multiple Markov chain modeling |
US11/282,145 | 2005-11-18 | ||
PCT/US2006/043740 WO2007061646A1 (en) | 2005-11-18 | 2006-11-10 | Compression using multiple markov chains |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101292429A CN101292429A (zh) | 2008-10-22 |
CN101292429B true CN101292429B (zh) | 2012-04-04 |
Family
ID=37831704
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006800386833A Expired - Fee Related CN101292429B (zh) | 2005-11-18 | 2006-11-10 | 使用多个马尔可夫链进行压缩的方法和装置 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7319417B2 (zh) |
EP (1) | EP1949543A1 (zh) |
JP (1) | JP2009516474A (zh) |
KR (1) | KR100991943B1 (zh) |
CN (1) | CN101292429B (zh) |
WO (1) | WO2007061646A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7979685B1 (en) * | 2007-11-27 | 2011-07-12 | Oracle America, Inc. | Multiple instruction execution mode resource-constrained device |
WO2013026196A1 (en) | 2011-08-23 | 2013-02-28 | Huawei Technologies Co., Ltd. | Estimator for estimating a probability distribution of a quantization index |
CN103034170B (zh) * | 2012-11-27 | 2014-10-29 | 华中科技大学 | 一种基于区间的数控机床性能预测方法 |
CN103152060B (zh) * | 2013-01-17 | 2016-11-09 | 中山大学 | 一种分组马尔可夫叠加编码方法 |
US9203429B1 (en) * | 2014-02-24 | 2015-12-01 | Marvell International Ltd. | Systems and methods for using markov distribution codes in data storage systems |
CN105553625A (zh) * | 2016-01-19 | 2016-05-04 | 重庆邮电大学 | 一种用电信息采集系统远程信道报文压缩方法及系统 |
CN106141811A (zh) * | 2016-06-15 | 2016-11-23 | 武汉范特西网络科技有限公司 | 无线机械工况监管装置 |
CN111708574B (zh) * | 2020-05-28 | 2023-03-31 | 中国科学院信息工程研究所 | 指令流压缩、解压缩方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1655232A (zh) * | 2004-02-13 | 2005-08-17 | 松下电器产业株式会社 | 上下文相关的汉语语音识别建模方法 |
CN1672133A (zh) * | 2002-08-02 | 2005-09-21 | 艾利森电话股份有限公司 | 优化的代码生成 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5025258A (en) * | 1989-06-01 | 1991-06-18 | At&T Bell Laboratories | Adaptive probability estimator for entropy encoding/decoding |
US5023611A (en) * | 1989-07-28 | 1991-06-11 | At&T Bell Laboratories | Entropy encoder/decoder including a context extractor |
US5298896A (en) * | 1993-03-15 | 1994-03-29 | Bell Communications Research, Inc. | Method and system for high order conditional entropy coding |
US5414423A (en) * | 1993-04-29 | 1995-05-09 | International Business Machines Corporation | Stabilization of probability estimates by conditioning on prior decisions of a given context |
US5689589A (en) * | 1994-12-01 | 1997-11-18 | Ricoh Company Ltd. | Data compression for palettized video images |
US6516305B1 (en) * | 2000-01-14 | 2003-02-04 | Microsoft Corporation | Automatic inference of models for statistical code compression |
US6606037B2 (en) * | 2000-11-13 | 2003-08-12 | Telefonaktiebolaget Lm Ericsson (Publ) | Qualitative modeling and compression of request sequences in ARQ protocols |
EP1387265A1 (en) | 2002-08-02 | 2004-02-04 | Telefonaktiebolaget L M Ericsson (Publ) | Optimised code generation |
US6850175B1 (en) * | 2003-09-18 | 2005-02-01 | Ntt Docomo, Inc. | Method and apparatus for arithmetic coding |
-
2005
- 2005-11-18 US US11/282,145 patent/US7319417B2/en active Active
-
2006
- 2006-11-10 CN CN2006800386833A patent/CN101292429B/zh not_active Expired - Fee Related
- 2006-11-10 JP JP2008541237A patent/JP2009516474A/ja active Pending
- 2006-11-10 KR KR1020087011927A patent/KR100991943B1/ko active IP Right Grant
- 2006-11-10 EP EP06827696A patent/EP1949543A1/en not_active Ceased
- 2006-11-10 WO PCT/US2006/043740 patent/WO2007061646A1/en active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1672133A (zh) * | 2002-08-02 | 2005-09-21 | 艾利森电话股份有限公司 | 优化的代码生成 |
CN1655232A (zh) * | 2004-02-13 | 2005-08-17 | 松下电器产业株式会社 | 上下文相关的汉语语音识别建模方法 |
Non-Patent Citations (9)
Title |
---|
BESZEDES A ET AL.Survey of code-size reduction methods.ACM COMPUTING SURVEYS35 3.2003,35(3),223-267. |
BESZEDES A ET AL.Survey of code-size reduction methods.ACM COMPUTING SURVEYS35 3.2003,35(3),223-267. * |
DRINIC M ET AL.DATA COMPRESSION CONFERENCE 2002.192-201. |
DRINIC M ET AL.DATA COMPRESSION CONFERENCE 2002.192-201. * |
FRASER C W.Automatic inference of models for statistical codecompression.ACM SIGPLAN NOTICES34 5.1999,34(5),242-246. |
FRASER C W.Automatic inference of models for statistical codecompression.ACM SIGPLAN NOTICES34 5.1999,34(5),242-246. * |
LEKATSAS H ET AL.DESIGN AUTOMATION CONFERENCE 1998.1998,516-521. * |
YUAN XIE ET AL.MICROARCHITECTURE 2001.2001,66-75. |
YUAN XIE ET AL.MICROARCHITECTURE 2001.2001,66-75. * |
Also Published As
Publication number | Publication date |
---|---|
EP1949543A1 (en) | 2008-07-30 |
CN101292429A (zh) | 2008-10-22 |
US7319417B2 (en) | 2008-01-15 |
KR20080070009A (ko) | 2008-07-29 |
KR100991943B1 (ko) | 2010-11-04 |
US20070115148A1 (en) | 2007-05-24 |
WO2007061646A1 (en) | 2007-05-31 |
JP2009516474A (ja) | 2009-04-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101292429B (zh) | 使用多个马尔可夫链进行压缩的方法和装置 | |
US8804852B2 (en) | High bandwidth decompression of variable length encoded data streams | |
US7623047B2 (en) | Data sequence compression | |
US8164490B2 (en) | Data compression/decompression method and computer readable storage medium storing compression/decompression program | |
US7773005B2 (en) | Method and apparatus for decoding variable length data | |
US20130019029A1 (en) | Lossless compression of a predictive data stream having mixed data types | |
KR20160123302A (ko) | 데이터의 소스-인코딩 및 디코딩 디바이스 및 방법 | |
US20050198470A1 (en) | Compression of program instructions using advanced sequential correlation | |
US7962727B2 (en) | Method and apparatus for decompression of block compressed data | |
US9088297B2 (en) | High throughput decoding of variable length data symbols | |
Said | Comparative Analysis of Arithmetic Coding Computational Complexity. | |
US6693567B2 (en) | Multi-byte Lempel-Ziv 1(LZ1) decompression | |
CN1675619A (zh) | 允述在超长指令字处理器中处理可变长指令的设备、方法和编译器 | |
US20170093424A1 (en) | Systems, Methods, and Apparatuses for Decompression using Hardware and Software | |
CN103078646B (zh) | 字典查询压缩、解压缩方法及其装置 | |
US7504970B2 (en) | Data encoder | |
US20110125987A1 (en) | Dedicated Arithmetic Decoding Instruction | |
US7777653B2 (en) | Decoding variable-length code (VLC) bitstream information | |
US20090212981A1 (en) | Bidirectional context model for adaptive compression | |
US7791509B2 (en) | Preprocessing variable-length code (VLC) bitstream information | |
Lin et al. | Code Compression for Embedded Systems | |
CN114661351A (zh) | 用于使用内容可寻址的数据结构的高效Deflate解压缩的方法和装置 | |
Fujioka et al. | Parallel architecture for high‐speed Lempel‐Ziv data coding/decoding | |
Nadarajan et al. | Analysis of string matching compression algorithms | |
Tano | Transparent Data Compression and Decompression for Embedded Systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120404 Termination date: 20211110 |
|
CF01 | Termination of patent right due to non-payment of annual fee |