用于内嵌在存储器层级内的经熵编码软件的存储和翻译的方法和设备与流程

文档序号:11250597阅读:504来源:国知局
分案申请的相关信息本案是分案申请。该分案的母案是申请日为2012年5月2日、申请号为201280026722.3、发明名称为“用于内嵌在存储器层级内的经熵编码软件的存储和翻译的方法和设备”的发明专利申请案。本发明大体涉及具有用于改进内嵌软件中的代码密度的压缩指令集的处理器,且更特定来说涉及用于产生压缩指令、存储所述压缩指令且翻译所述压缩指令的技术。
背景技术
::例如蜂窝式电话、膝上型计算机、个人数字助理(pda)等许多便携式产品需要使用执行程序支持通信和多媒体应用的处理器。此类产品的处理系统包含一个或一个以上处理器,每一者具有针对指令、输入运算数和执行结果的存储装置。举例来说,针对处理器的指令、输入运算数和执行结果可存储在由通用寄存器文件、多层指令高速缓冲存储器、数据高速缓冲存储器和系统存储器组成的层级存储器子系统中。为了提供高代码密度,可使用本机指令集架构(isa),其具有两个指令格式,例如作为32位指令格式的子集的16位指令格式。在许多情况下,所提取的16位指令在允许执行硬件被设计为仅支持32位指令格式的解码过程之前或之中由处理器变换为32位指令。作为32位指令的子集的16位指令的使用是限制可编码为16位格式的信息的量的约束。举例来说,16位指令格式可限制可指定的可寻址源运算数寄存器和目的地寄存器的数目。16位指令格式例如可使用3位或4位寄存器文件地址字段,而32位指令可使用5位字段。如果两个格式在程序中部分归因于指令寻址约束(例如,形成分支到16位和32位指令)而混合,那么处理器管线复杂性也可能增加。并且,代码压缩的要求依据不同程序而变化,从而使针对一个程序选择的固定16位指令格式不太有利于由不同程序使用。在此方面,现有处理器的传统代码不能有效地利用两个指令格式来显著改进代码密度且在许多情况下满足实时要求。这些和其它约束限制了具有作为标准大小指令中使用的字段的子集的字段的缩减大小指令的效力。技术实现要素:在本发明的若干方面中,本发明解决将使用本机指令集的程序与使用压缩指令集的压缩程序解耦的需要。本文提出的技术允许针对内嵌软件极其有效地利用存储装置和发射管道,而不影响软件的执行时间和效率。为实现此些目的,本发明的一实施例应用一种对经压缩可变长度指令解压缩的方法。紧密固定长度指令从系统存储器提取。所述系统存储器经配置以存储经压缩可变长度指令,其中每一紧密固定长度指令包括x索引和y索引。对于每一紧密固定长度指令,使用x索引从x存储器提取x位样式,且使用y索引从y存储器提取y位样式。基于与每一紧密固定长度指令相关联的混合掩码将x位样式与y位样式组合为经解压缩可变长度指令,其中经解压缩可变长度指令的格式长度由所述相关联混合掩码确定。本发明的另一实施例提出一种用于翻译存储在虚拟存储器系统中的压缩指令的设备。分页指令高速缓冲存储器经配置以存储与未压缩指令的页混合的压缩指令的页。指令翻译后备缓冲器(tlb)经配置以存储将分页高速缓冲存储器中的页识别为存储压缩指令的地址翻译条目。本发明的另一实施例提出一种用于将压缩指令翻译为可执行格式的系统。层2高速缓冲存储器经配置以存储针对每一压缩指令的x索引和y索引。翻译单元经配置以从层2高速缓冲存储器接收压缩指令,针对每一所接收的压缩指令使用x索引和y索引从翻译存储器选择x位样式和y位样式,且使用程序指定的混合掩码用于将选定的x位样式和y位样式组合为本机指令格式。层1高速缓冲存储器经配置以针对每一压缩指令存储本机指令格式。本发明的另一实施例提出一种确定用于有效地翻译压缩指令的混合掩码的方法。培育表示为来自混合掩码的种子群集的基因的混合掩码对以产生后代混合掩码对。后代混合掩码变异以产生更新种子群集的变异后代混合掩码。从经更新种子群集确定提供高压缩水平的混合掩码,其中根据所确定的混合掩码来组合位样式以将程序的压缩指令翻译为可执行形式。从以下具体实施方式和附图将了解对本发明的更完整理解以及本发明的更多特征和优点。附图说明图1是其中可有利地采用本发明的实施例的示范性无线通信系统的框图;图2是根据本发明经设计用于运行时解压缩的代码压缩系统;图3说明根据本发明将基于混合掩码的指令分裂为具有字节重叠填补位的x样式和y样式的指令分割过程的示范性元件;图4是根据本发明具有以压缩形式存储在主存储器和层2高速缓冲存储器中的程序的解压缩器系统,所述程序经解压缩以存储在层1高速缓冲存储器中;图5a说明根据本发明将基于第二混合掩码的第二指令分裂为具有字节重叠填补位的第二x样式和第二y样式的第二指令分割过程的示范性元件;图5b说明根据本发明在具有三个不同掩码amm≠bmm≠cmm的x存储器和y存储器中图3的ax、ay样式以及图5a的bx、by样式的示范性存储布置;图5c是根据本发明具有以压缩形式存储在主存储器和层2高速缓冲存储器中的程序的解压缩器系统,所述程序使用多个混合掩码和索引压缩经解压缩从而以未压缩形式存储在层1高速缓冲存储器中;图6说明根据本发明的vliw包压缩格式;图7说明根据本发明具有压缩页和未压缩页的分页指令翻译后备缓冲器(itlb)和存储器组织;图8a说明根据本发明用于解压缩压缩指令页和存取未压缩指令页的分页解压缩器系统;图8b说明示范性解压缩状态图,其说明用于在处理器管线上执行的l2高速缓冲存储器压缩页指令和l1icache解压缩指令的状态;图9a-9c说明根据本发明基于一般算法的变型的一般混合掩码确定过程;图9d说明根据本发明的交叉算法的实施方案;图9e说明根据本发明的变异算法的实施方案;图10说明根据本发明的示范性当前成本过程;图11说明根据本发明的经加权汉明启发式;图12说明根据本发明具有填补-分类的穷举搜索x/y表压紧过程;图13说明根据本发明到压缩存储过程中的符号插入;以及图14说明根据本发明具有填补-分类过程的三角x/y表压紧。具体实施方式现将参看附图更充分描述本发明,附图中展示本发明的若干实施例。然而,本发明可体现为各种形式且不应解释为限于本文陈述的实施例。事实上,提供这些实施例使得本发明将为详尽和完整的,且将把本发明的范围完全传达给所属领域的技术人员。供在上面操作或用于实行根据本发明的教示的操作的计算机程序代码或“程序代码”可初始以例如c、c++、smalltalk、visualtsql、perl等高级编程语言或以各种其它编程语言编写。通过使用以本机指令格式编码的指令将高级程序代码转换为本机汇编程序而将以这些语言中的一者编写的源程序或源代码编译为目标处理器架构。目标处理器架构的程序还可直接以本机汇编语言编写。本机汇编程序使用机器级二进制指令的指令助记符表示。如本文使用的编译器或人类编程员产生的程序代码或计算机可读媒体指代例如格式可由处理器理解的目标代码等机器语言代码。图1说明其中可有利地采用本发明的实施例的示范性无线通信系统100。出于说明的目的,图1展示三个远程单元120、130和150以及两个基站140。将认识到,常见无线通信系统可具有更多远程单元和基站。包含如分别由组件125a、125c、125b和125d表示的硬件组件、软件组件或两者的远程单元120、130、150以及基站140已适于体现如下文进一步论述的本发明。图1展示从基站140到远程单元120、130和150的前向链路信号180,以及从远程单元120、130和150到基站140的反向链路信号190。在图1中,远程单元120展示为移动电话,远程单元130展示为便携式计算机,且远程单元150展示为无线本地回路系统中的固定位置远程单元。借助实例,远程单元或者可为蜂窝式电话、寻呼机、对讲机、手持式个人通信系统(pcs)单元、例如个人数字助理等便携式数据单元,或例如仪表读取设备等固定位置数据单元。尽管图1说明根据本发明的教示的远程单元,但本发明不限于这些示范性的所说明的单元。本发明的实施例可适当地用于任何处理器系统中。图2是根据本发明经设计用于运行时解压缩的用于代码压缩的压缩系统200。压缩系统200包含如上文描述的源代码和源代码中呈未压缩形式的二进制库文件,以及包括正编译的当前程序应用的库文件204。压缩系统200还包含编译器和链接器206、任选的简档反馈信息208,其用于基于本机指令集架构(isa)格式和支持的数据区段212产生链接的可执行代码210。本机isa由固定未压缩格式表示且可表示多种方法,包含(例如)固定64或32或16位编码以及此些编码的混合。本机isa是针对一般效用开发的且不特定为手头的当前应用定制。通过维持固定字边界(例如,32位指令字边界),尽管16位和32位指令可一起混合在代码中,也可使用仅支持分支、调用、返回等的固定字地址的寻址模型。从此isa选择的指令可依据当前应用而压缩和定制,同时维持代码的可寻址性且保证快速、固定等待解压缩时间。此压缩可自动化以在线性时间内产生经压缩代码。原始isa依据其极其一般化性质而具有低信息熵,其根据本发明通过针对给定源代码和库文件204产生定制熵边界编码而增加。提供链接的可执行代码210作为到翻译工具216的输入,翻译工具216产生经压缩代码218和解码表220。经压缩代码218和支持的数据区段212存储在静态存储装置214中,例如硬盘、光盘、内嵌式装置的快闪存储器,或可从其将选定代码下载到处理器复合体203以供执行的其它此类存储媒体。处理器复合体203包含主存储器222、层2高速缓冲存储器(l2高速缓冲存储器)和处理器核心226。处理器核心226包含具有根据本发明的翻译存储器(tm)230、层1指令高速缓冲存储器(l1icache)232和执行管线234的解码器228。经压缩代码存储在静态存储装置214、主存储器222和l2高速缓冲存储器224中。经解压缩代码存储在l1高速缓冲存储器中且由执行管线234执行。下文更详细描述用于产生经压缩代码218且用于在解码器228中解码经压缩指令的翻译工具216的各个实施例。处理器复合体203可适当地用于图1的硬件组件125a-125d中,用于执行以未压缩形式存储在l1icache232中以及以压缩形式存储在l2高速缓冲存储器224和主存储器222中的程序代码。为了论述的清晰未展示可连接到处理器复合体的外围装置。处理器核心226可为通用处理器、数字信号处理器(dsp)、专用处理器(asp)等。处理复合体203的各个组件可使用专用集成电路(asic)技术、现场可编程门阵列(fpga)技术或其它可编程逻辑、离散门或晶体管逻辑,或适于既定应用的任何其它可用的技术实施。尽管展示单一处理器核心226,但本发明的压缩指令的处理适用于超标量设计和实施并行管线的其它架构,例如多线程、多核心,和极长指令字(vliw)设计。图3说明根据本发明将基于二进制混合掩码(mm)304的原始isa固定大小指令a302分裂为具有重叠填补位310和312的ax样式306和ay样式308的指令分割过程的示范性元件300。填补位归因于现代存储器系统强加的要求而产生,以至少以字节粒度片段表示指令和数据。具有字节粒度片段的格式的使用用于提供新颖的压紧表示,从而允许位粒度上的存储重叠,同时满足存储系统的字节粒度要求。为压缩原始isa代码片段,将代码片段分割为指令群组,每一群组贡献单一共享x样式和一组唯一y样式。ax样式306表示对于指令a所属的指令群组为共同的位样式。ay样式308表示相同指令群组中的一组唯一位样式中的一者。注意,代码片段可分割为1与n之间的任何数目的群组,其中n为代码片段中的原始指令的数目。用以确定群组的最佳或近似最佳数目以及最佳或近似最佳混合掩码的过程是下文进一步描述的非平凡过程。代码片段的x样式存储在包括x存储器的x词典中,且代码片段的ay样式存储在包括y存储器的y词典中。x索引是x存储器中的位置的地址,且y索引是y存储器中的位置的地址。这两个索引、来自x和y词典的样式以及二进制混合掩码的组合确切地表示原始指令。字节可寻址x/y词典样式以压紧形式存储在x/y存储器中,仍可存取而不需要可变长度解压缩。可变长度解压缩基于将可变长度压缩符号反向映射到本机固定大小字母表中的过程。固定大小索引压缩用于此表示且在稍后论述。压缩操作314使用代码片段的至少一个混合掩码从指令302选择ax样式306和ay样式308。在以下实例中,十六进制数字或hex数字用‘0x’前缀表示。举例来说,指令302[0x9f6d0121]与混合掩码304[0xff80ff80]组合以产生ax样式306[0x9f00(8,9,a,b)]和ay样式308[0xda8(4,5,6,7)]。解码器228解压缩操作316使用代码片段的所述至少一个混合掩码、x索引提取的x存储器样式和y索引提取的y存储器样式来解压缩经压缩指令。举例来说,混合掩码304[0xff80ff80]与从x存储器提取的ax样式306[0x9f00(8,9,a,b)]以及从y存储器提取的ay样式308[0xda8(4,5,6,7)]组合,以产生原始指令302[0x9f6d0121]。如上文描述,x样式和y样式存储在字节可寻址x存储器和字节可寻址y存储器中。x样式、y样式或两者的索引压缩利用一过程,所述过程消除副本、减少物理存储的双重利用且使填补位(例如,重叠填补位310和312)以及字节可寻址位置重叠。可通过将第一x样式的末尾位与第二x样式的开始位共享而使第一x样式与第二x样式重叠。在此比较中,具有重叠填补位的字节允许例如图3中指示的另一选项范围。举例来说,ax样式306包括三个字节,包含第一字节0x9f、第二字节0x00和第三字节,第三字节包括具有集合{8,9,a,b}中的一者的值(归因于重叠填补位310)的第一半字节,以及可为从0x00到0xff且包含0x00和0xff在内的任何数字的第二半字节。待与第一ax样式306重叠的第二x样式将具有开始位的第一半字节中的集合{8,9,a,b}中的一者,以及开始位的第二半字节中的从0x00到0xff且包含0x00和0xff在内的任何数字。待与第一ax样式306重叠的第三x样式的另一可能重叠样式具有开始位的第一字节中的0x00、开始位的下一半字节中的集合{8,9,a,b}中的一者,以及开始位的下一连续半字节中的从0x00到0xff且包含0x00和0xff在内的任何数字。对于y样式,ay样式308包括两个字节,包含第一字节0xda和第二字节,所述第二字节包括第一半字节0x8以及归因于重叠填补位312而可为集合{4,5,6,7}中的一者的第二半字节。利用此些能力,有可能在128位线中存储四个未压缩指令,且对于具有填补和重叠的32位到16位压缩能够在同一空间中存储八个以上压缩指令。举例来说,如果压缩指令中的四个可以字节重叠存储,那么十个16位压缩指令可存储在128位线中。因此,与无填补的方法相比,寻址空间被压缩,且索引寻址也将被压缩。待与第一ay样式308重叠的第二y样式将具有开始位的第一半字节中的‘0x8’,以及作为集合{4,5,6,7}中的一者的第二半字节。利用单一混合掩码,所有x样式具有相同数目的位,且所有y样式具有相同数目的位。在较大数目的x和y样式的情况下,有可能具有多种映射,其中仅少数映射占据最少存储,其被视为近似最佳或可接受映射。最佳或近似最佳映射的选择是np完全问题,且不能针对任何显著数目的x和y样式实际上得以解决。无论如何,本发明使用在线性时间内产生可接受映射的启发式。图4是根据本发明具有以压缩形式存储在主存储器222和l2高速缓冲存储器224中的程序的解压缩器系统400,所述程序经解压缩以存储在l1icache232中。l2高速缓冲存储器224包含xy索引存储器402,其将x索引和y索引对存储在可寻址位置中,例如具有7位x索引值0x54和9位y索引值0x734的xy条目404。多路复用器405用于选择关于l2高速缓冲存储器命中406的xy条目,或关于l2高速缓冲存储器中的未中的来自主存储器222的xy值407。在具有索引x寄存器408、索引y寄存器410、x存储器412、y存储器414、单一mm寄存器416和组合器418的解码器228中实现解压缩操作。l1icache232包含多个高速缓冲存储器线,例如保持解压缩指令的高速缓冲存储器线420。在程序加载时或在内嵌式系统启动过程中,主存储器222加载有压缩代码,x存储器412和y存储器414加载有相关联x和y词典语境,且单一二进制混合掩码在mm寄存器416中设定。注意,x和y存储器语境以及混合掩码可视需要在执行期间再加载。此再加载可构成更小区段中的原始代码片段的进一步粒度,每一区段具有其定制编码。举例来说,一些复杂的内嵌式系统(例如,智能电话)可从主应用调用多个独立的子应用,所述子应用不共享代码空间且为自含式的。每一此类应用可具有其自身的包括x/y词典和mm的定制编码,其在子过程启动时加载。此情境的较好实例将是开始电子邮件处理应用的智能电话操作系统(os),所述电子邮件处理应用在其执行持续时间期间占据大部分系统资源,且执行仅属于电子邮件处理应用的代码持续一段较长时间。电子邮件应用的定制编码在启动时加载,且仅在电子邮件应用已完成操作时被不同os定制编码替代。此外,可能的情境是,单一词典用于os和电子邮件处理应用,但经由将索引x(408)和/或索引y(410)寄存器内容调整为偏移到x/y词典的适当区段中来利用不同区段。索引x(408)和/或索引y(410)寄存器内容的加载可经由通过例如os中断的系统层级请求或经由连同应用代码一起编码的特殊指令而实现,所述特殊指令被处理器理解为对于再加载索引x(408)和/或索引y(410)寄存器内容的请求。在此情况下,解码表220的数目等于针对l2中的同时驻留可能具有不同编码的程序片段的数目。使用以上智能电话实例,如果os专用于其自身的具有始终保持os特定编码的翻译存储器(tm)230的解码器228,那么系统可并入有另一应用特定tm230,其保持针对所利用的系统应用定制的不同编码。确定哪一翻译存储器230为适当的可以每代码页为基础经由tlb条目进行。相比之下,如果系统中仅设计一个tm230,那么依据所安装tm230的容量,以下程序可为适当的。如果仍需要超出ostm230的容量的多个独立编码,那么如在以上实例中,一旦os开始电子邮件处理应用,就将新的x/y词典放置到x/y存储器(412、414)中。mm寄存器416可更新,且发布l2/tlb刷新请求。l2/tlb刷新请求使对应于l2/tlb中的os的经压缩代码无效。对于描述的剩余部分,使用具有待用于包含任何应用代码的整个系统的单一tm230和单一编码的解码器228来描述解压缩器系统400。接下来,执行管线234开始从l1icache232提取指令。初始,对l1icache的每次存取产生未中指示422,从而导致对l2高速缓冲存储器224的存取。初始,对l2高速缓冲存储器224的存取也产生未中,从而导致对主存储器222的存取,主存储器222以在l2高速缓冲存储器224中加载且经由多路复用器405转发到解码器228的压缩指令响应。解码器228将xy索引压缩指令解压缩为未压缩格式以供存储在l1icache232中且供在执行管线234中执行,如关于图3的解压缩操作316描述。在较短操作周期之后,l1icache232和l2高速缓冲存储器224将已达到稳定状态。从处理器的角度来说,执行管线234尝试提取操作,在l1icache232中搜索指令的提取地址和控制信号421。初始,l1icache232确定指令不存在且将未中指示422发布给l2高速缓冲存储器224。l2高速缓冲存储器提取操作例如是针对xy条目404,其是l2高速缓冲存储器224中的命中,从而致使xy条目404经由多路复用器405传递到解码器228。xy条目404分裂,其中x索引值0x54在索引x寄存器408中接收,且y索引值0x734在索引y寄存器410中接收。在地址0x54处从x存储器412提取的x样式306施加到组合器418。在地址0x734处从y存储器414提取的y样式308也施加到组合器418。存储在mm寄存器416中的单一混合掩码(mm)304[0xff80ff80]进一步施加到组合器418。组合器418根据mm304将来自x样式306的适当位与来自y样式308的适当位组合以产生原始指令302,原始指令302存储在高速缓冲存储器线420中且传递到执行管线234。此系统的另一额外特征是以隐式加密格式存储的程序内容。尽管不对指令流执行特定加密类型的数据加扰,但程序代码以应用特定和压缩形式存储在静态存储装置214、主存储器222和l2高速缓冲存储器224中。由于程序代码的经编码状态的一部分驻留在tm230中的处理器核心226(其在最终产品中不容易存取)内部,所以静态存储装置214以及上部存储器层级222和224内容不足以恢复原始程序,从而使得难以分析或复制。处理器核心226处理多个地址空间。执行管线234在虚拟地址空间中操作,虚拟地址空间不同于贯穿整个存储器层级使用的物理地址空间。一个地址空间翻译到另一地址空间的任务通常由翻译后备缓冲器(tlb)执行,且在物理地址空间含有相同大小的指令的情况下具有减小的复杂性。因此,根据本发明,执行代码片段以加起来占据固定字节对准空间的x和y索引的固定大小对表示。此方法(如下文更详细描述)允许基于物理寻址空间分页过程而混合压缩和未压缩指令,其中代码页表示由tlb的单一条目处理的代码的原子单位。图5a说明利用填补位将x和y索引放置到x和y存储器中的情况。根据本发明将基于第二混合掩码504的指令b502分裂为具有字节重叠填补位的第二x样式和第二y样式的另一指令b分割过程的示范性元件500。为压缩第二代码片段,将第二代码片段分割为指令群组,每一群组贡献bx样式和一组唯一by样式。bx样式506表示对于来自第二代码片段的指令群组为共同的位样式。by样式508表示相同指令群组中的一组唯一位样式中的一者。代码片段的bx样式存储在包括x存储器的x词典中,且代码片段的by样式存储在包括y存储器的y词典中。x索引是x存储器中的位置的地址,且y索引是y存储器中的位置的地址。在压缩过程中,举例来说,指令502[0xbaff0feb]与混合掩码504[0xffc0ff80]组合以产生bx样式506[0xbac3(e,f)]和by样式508[0xff5(8,9,a,b,c,d,e,f)]。在解压缩过程中,举例来说,混合掩码504[0xffc0ff80]与从x存储器提取的bx样式506[0xbac3(e,f)]以及从y存储器提取的by样式508[0xff5(8,9,a,b,c,d,e,f)]组合,以产生原始指令502[0xbaff0feb]。图5b说明图3的ax、ay样式、图5a的bx、by样式以及此处由x存储器522和y存储器528中的cx和cy表示的又一指令c的示范性存储布置520。根据本发明,三个指令a、b和c具有不同掩码amm≠bmm≠cmm。举例来说,x存储器522和y存储器528为字节可寻址的且利用64位长存取线。ax样式306[0x9f00(8,9,a,b)]以二进制编码为ax523[100111110000000010],by样式506[0xbac3(e,f)]以二进制编码为bx524[1011101011000011111],且示范性cx525以二进制编码为cx525[11100000000000001]。在示范性存储布置520中,混合掩码amm304[0xff80ff80]、bmm504[0xffc0ff80]和示范性cmm[ff80ff00]不相等。因此,与每一混合掩码相关联的x样式是不同数目的位,且同样与每一混合掩码相关联的y样式是不同数目的位。x样式、y样式或两者的索引压缩利用重叠填补位(例如,重叠填补位310、312、510和512)以及字节可寻址位置。可通过将第一x样式的末尾位与第二x样式的开始位比较而使第一x样式与第二x样式重叠。在此比较中,具有重叠填补位的字节允许例如图5b中指示的另一选项范围。举例来说,ax样式523包括三个字节,包含第一字节0x9f、第二字节0x00和第三字节,第三字节包括具有为集合{8,9,a,b}中的一者的值(归因于重叠填补位310)的第一半字节,以及可为从0x00到0xff且包含0x00和0xff在内的任何数字的第二半字节。bx样式524与第一ax样式523重叠且在bx样式524的第一半字节中具有值0xb,其是集合{8,9,a,b}中的一者。bx样式524的第二半字节具有值0xa,其是从0x00到0xff的数字。cx样式525的开始位与bx样式524的末尾位重叠。对于y样式,y存储器528中未展示重叠。样式之间的位(例如,位534和535)可为任何二进制值,因为其不在压缩或解压缩过程中使用。如果归因于代码改变或添加,产生具有第一字节0x58的新dy样式,那么新dy样式可与by样式532重叠,如图5b所示。并且,具有第一字节0x5和作为集合{8,9,a,b,c,d,e,f}中的一者的第二字节的其它样式可与by样式532的末尾位重叠。图5c说明根据本发明具有以压缩形式存储在主存储器542和层2高速缓冲存储器544中的程序的解压缩器系统540,所述程序在解码器546中使用多个混合掩码和索引压缩而解压缩从而以未压缩形式存储在层1指令高速缓冲存储器(l1icache)548中。l2高速缓冲存储器544包含xym索引存储器552,其将x索引、y索引和混合掩码索引存储在可寻址位置中,例如具有9位x索引值0x102、8位y索引值0xa9和2位m索引值0x2的xym条目554。多路复用器555用于选择关于l2高速缓冲存储器命中556的xym条目或来自主存储器542的xym值557。在解码器546中实现解压缩操作,所述解码器具有索引x寄存器558、索引y寄存器560、mm索引寄存器561、x存储器562、y存储器564、多个mm存储器566、双线x寄存器568、双线y寄存器570和组合器572。l1icache548包含多个高速缓冲存储器线,例如高速缓冲存储器线580。在初始操作周期之后,l2高速缓冲存储器544和主存储器542加载有压缩代码,且l1icache548加载有解压缩代码。当执行管线550尝试从l1icache548提取581指令且确定指令不存在时,发布未中指示582,且将提取重定向到l2高速缓冲存储器544。举例来说,所述提取针对作为l2高速缓冲存储器544中的命中的xym条目554,从而致使xy条目554经由多路复用器555传递到解码器546。xym条目554分裂,其中x索引值0x102在索引x寄存器558中接收,y索引值0xa9在索引y寄存器560中接收。且m索引值0x2在索引mm寄存器561中接收。在地址0x0x100处从x存储器562提取含有x样式506[0xbac3e]的线,且将其加载到双线x寄存器568。在地址0xa8处从y存储器564提取含有y样式508[0xff58]的线,且将其加载到双线y寄存器570。在地址0x2处从多个mm存储器566提取混合掩码504[0xffc0ff80],且将其加载到mm寄存器571。基于x索引值0x102从双线x寄存器568选择x样式506[0xbac3e]且将其施加到组合器572。基于y索引值0xa9从双线y寄存器570选择y样式508[0xff58]且将其施加到组合器572。将存储在mm寄存器571中的单一混合掩码(mm)504[0xffc0ff80]进一步施加到组合器572。组合器572根据mm504将来自x样式506的适当位与来自y样式508的适当位组合以产生原始指令502,原始指令502存储在高速缓冲存储器线580中且传递到执行管线550。连同xym条目554一起存储在双线x寄存器和双线y寄存器中的其它压缩指令(尤其是使用相同混合掩码504的情况下)可依据指令序列与xym条目554的解压缩并行或以串行方式解压缩。解压缩可变长度指令的格式长度由与压缩指令相关联的混合掩码确定。图5b和图5c中展示的x和y存储器内的个别样式的放置的特性是,放置不受约束且由最左字节对准控制。具有填补位的高利用率的可接受、最佳或近似最佳放置可潜在地使字节对准碎片最小化或消除。对符号放置的任何约束(例如,左侧调整对准要求)潜在地产生碎片。举例来说,在随机大小对象的字节对准存储中,最差情况情境为每所存储符号7位被浪费且除特定符号放置担保外不携载任何有用目的。一般来说在索引压缩的帮助下,且特定来说在使用填补位的情况下,这7位可用于存储有用数据。来自被浪费的位利用的存储节省的上限为7位乘以存储装置中的符号数目。来自索引压缩的总节省一般来说较高,且自然仅受内容的信息熵限定。还可存在占据相同物理位且仅在存在适当mm(其隐含地确定符号长度)的情况下正确提取的不同大小的符号。如果使用单一mm,那么x/y词典符号条目具有相同大小。如果利用多个混合掩码,那么可存在与存在的mm一样多的符号大小的变化。举例来说,可变长度指令格式可包含32位格式化指令和64位格式化指令。无论如何,符号的最佳放置的任务是np完全问题且不能预期在合理线性时间内实际上完美解决。为克服此限制,使用启发式算法在线性时间内产生近似最佳放置,如下文参看图12-14更详细描述。压缩指令和未压缩指令可在同一可执行代码片段中混合,而不需要在操作中进行模式切换。在分页虚拟存储器系统中,存储器的页可含有压缩指令或未压缩指令。图6说明根据本发明具有压缩页和未压缩页的分页虚拟高速缓冲存储器组织600。虚拟地址通常以两个部分进行编码。地址位的上部字段通常表示基于选定页大小(例如,4k字节页)编码的虚拟页数目。地址位的下部字段是识别所寻址页内的地址的页偏移。在虚拟到物理地址翻译中,虚拟页数目翻译为物理页数目。页偏移对于虚拟地址和物理地址两者来说是相同的且不进行翻译。虚拟到物理地址翻译系统可包含一个或一个以上翻译后备缓冲器(tlb),例如指令和数据tlb,以改进翻译过程的性能。指令tlb(itlb)是存储最近的虚拟到物理地址翻译连同所存储页的属性(例如,条目验证和存取许可)的小高速缓冲存储器。itlb通常包含与随机存取存储器(ram)电路耦合的内容可寻址存储器(cam)电路,且相对较小(例如,具有32或64个条目)。每一itlb条目包含cam电路中的标签,其具有与ram电路中的所翻译物理页数目相关联的最近使用的虚拟页数目。举例来说,分页虚拟高速缓冲存储器组织600使用itlb602和物理存储器604,所述物理存储器具有与压缩页608混合的未压缩页606。itlb602的每一条目具有虚拟地址标签610、条目旗标612(例如,有效(v)旗标、读取(r)旗标、写入(w)旗标)、物理页(p页)地址614和压缩(c)字段616。举例来说,c字段616可为适于针对一系统将页识别为压缩或未压缩的单一位,所述系统对于所有压缩页具有单一混合掩码。或者,c字段616可为两个或两个以上位,其对于2位字段可指示“00”未压缩、“01”以第一混合掩码压缩、“10”以第二混合掩码压缩,且“11”以第三混合掩码压缩。是否压缩指令或代码块的决策在编译和代码压缩时间静态地进行且可能取决于多种因素。举例来说,如果系统的实际实施方案无论如何都会对解码的等待时间敏感,那么应用的性能关键部分可能保持为原始未压缩形式,而较不频繁执行的代码可经压缩。频繁与不频繁执行的代码部分的确定由编译器和链接器206以任选简档定向反馈信息208或以编译时间启发式基于代码的控制结构进行。然而,解码器228在l2高速缓冲存储器224与l1高速缓冲存储器232之间的放置有效地将解码器从系统的性能关键路径移除。从解码器的此放置获得的额外益处包含执行管线234不需要改变,以及归因于增加的l2容量的潜在功率节省,且借此使对主存储器的存取最小化。这些压缩决策基于翻译工具216与编译器和链接器206的紧密交互,且可利用简档反馈信息208,简档反馈信息208可能识别(例如)将不压缩的传统代码和待压缩的新功能代码。图7说明系统700,其以每物理存储器页为基础在类似于图6的分页虚拟高速缓冲存储器组织600的系统中混合压缩和未压缩代码。针对具有4千字节(4kb)页(具有4字节(4b)条目)的实例主存储器物理地址空间展示压缩页701和未压缩页702的组成。压缩指令的每一页和未压缩指令的每一页具有拥有相同固定数目的字节的相同容量。然而,存储在压缩页701中的指令的数目为存储在未压缩页702中的指令数目的两倍,其使用例如为未压缩指令格式中使用的位数目的一半的压缩指令格式。举例来说,压缩页701存储压缩指令d、e、f、g等,作为16位或2字节的一对x/y索引。因此,为4k页的压缩页701含有2048个指令,而未压缩页702仅含有1024个指令。由于页边界不受页保持压缩指令还是保持未压缩指令影响,所以页的物理位置的地址翻译不变,但压缩页保持更多个别指令。图8a说明根据本发明用于解压缩压缩指令页和存取未压缩指令页的分页解压缩器系统800。分页解压缩器系统800包括处理器管线802、itlb804、物理地址缓冲器806、l1icache808、l2高速缓冲存储器电路810,和压缩指令解码器电路812。翻译过程通过将从虚拟地址803选择的虚拟页数目805施加到cam电路而开始,cam电路通常进行所施加虚拟页数目与同cam标签819中的条目标签一起存储的所有所存储的最近使用的虚拟页数目的并行比较。如果存在匹配,那么cam电路存取ram电路中的对应条目820,其作为存储在物理地址缓冲器806中的经翻译物理页地址815而输出。经翻译物理地址809包括与来自虚拟地址803的页偏移817连接的经翻译物理页地址815。举例来说,在具有4千兆字节(4gb)和4k字节页的虚拟地址空间的内嵌式系统中,虚拟地址803包括具有位[31∶12]的虚拟页数目805和具有位[11∶0]的页偏移807。在相同内嵌式系统中,高速缓冲存储器和主存储器的存储器层级可涵盖512k字节和4k字节页的物理存储器空间。在itlb804中的命中的情况下,虚拟地址803翻译为物理地址809。物理地址809包括具有位[28∶12]的物理页数目815和具有位[11∶0]的页偏移817。在此系统中,虚拟到物理翻译系统将把以位[31∶12]编码的虚拟页数目805翻译为以位[28∶12]编码的物理页数目815。并且,在命中的情况下,还输出压缩位字段821以作为c位字段822存储在物理地址缓冲器806中。压缩位字段821和c位字段822的放置是示范性的。物理地址809用于搜索l1icache808以寻找匹配的条目。如果找到匹配的条目,那么其是与匹配的条目相关联的解压缩指令且经选择以经由l1/l2多路复用器824传递到处理器管线802。在l1icache808中的未中的情况下,物理地址被导向l2高速缓冲存储器810以搜索匹配的条目。在l2高速缓冲存储器810中的命中的情况下(其中c位字段822指示来自压缩页的压缩指令),提取具有相关联匹配条目的压缩指令的线且将其存储在l2读取缓冲器826中。在l2高速缓冲存储器810中的命中的情况下(其中c位字段822指示来自未压缩页的未压缩指令),提取具有相关联匹配条目的未压缩指令的线且将其存储在l2读取缓冲器826中。未压缩指令绕过压缩指令解码器812,且使其在l2读取多路复用器828处可用以便存储在l1icache808中并经选择以经由l1/l2多路复用器824传递到处理器管线802。在l2高速缓冲存储器810中的命中的情况下,l2读取缓冲器826中的所提取的压缩指令在压缩指令解码器812中基于指示到达控制电路830的压缩指令的c位字段822来解压缩。下文参看图8b更详细描述解压缩过程。解压缩指令存储在解压缩缓冲器832中,其可由l2读取多路复用器828选择以供存储在l1icache808中,且经选择以经由l1/l2多路复用器824传递到处理器管线802。如早先在图5c中说明,本机应用的压缩可指定多个混合掩码的使用。如果所要粒度下降到单一指令,如图5c中指示,那么每一x/y索引对必须能够选择适当掩码。如果混合掩码可逐指令地选择,那么混合掩码的识别需要额外存储位,例如比如xyn条目554中展示的2位混合掩码索引。举例来说,另一方法允许每代码页选择一混合掩码,这消除了对来自x/y索引对554的混合掩码标记的需要且将所述混合掩码标记作为c字段的一部分放置在tlb页描述符中。图8b说明示范性解压缩状态图850,其说明用于在处理器管线上执行的l2高速缓冲存储器压缩页指令和l1icache解压缩指令的状态。图8b展示l2高速缓冲存储器852、l2读取缓冲器854、压缩指令解码器(cid)856、解压缩缓冲器858、l1icache860、物理地址缓冲器862和处理器管线864。l2高速缓冲存储器852具有未压缩线866和压缩线868作为初始状态。未压缩指令是32位本机指令,且压缩指令中的每一者为由x索引和y索引对组成的16位,如上文例如参看图4描述。压缩线868保持未压缩线866所保持指令的两倍的指令。对指令m的提取由处理器管线864进行,指令m由itlb(例如,图8a的itlb804)从虚拟地址翻译为物理地址,且存储在物理地址缓冲器862中。初始,l1icache860不含有指令m,且产生未中,这引起到存储器层级的上部层的提取。首先检查解压缩缓冲器858,在此示范性情境中未找到指令m。接下来检查l2高速缓冲存储器852,且发现压缩线868含有压缩形式“m”870的指令m。提取压缩线868且将其存储在l2读取缓冲器854中。cid856接收c位字段872和提取地址从而允许从压缩指令“m”870开始循序地提取来自l2读取缓冲器854的压缩指令。注意,可存取提取序列中的第一指令,首先解压缩且快速转发到处理器执行管线以使定时要求最小化。由于如本文描述的压缩指令在解压缩之前具有固定长度和已知存储地址位置,所以所提取序列中的第一压缩指令可在压缩指令的线中识别。由于l1icache具有八个未压缩指令的线长度,所以压缩指令从l2读取缓冲器854在l1icache线长度上存取,从“m、n、o、p”开始,接着为“i、j、k和l”。接下来存取l2读取缓冲器854的第二半,从“q、r、s、t、u、v、w和x”开始。因此,从l2读取缓冲器854中的任意开始点存取压缩指令。由于首先提取指令m,所以其在cid856中首先解压缩且接着可转发到处理器管线864。当其它指令“n、o、p接着i、j、k和l”被解压缩时,其与解压缩指令m组合且加载在解压缩缓冲器858中。一旦整个指令线已解压缩,其就加载到l1icache860中。或者,个别解压缩指令或解压缩指令对例如可个别地在l1icache860中更新且视需要转发到处理器管线864。应注意,如果存储在解压缩缓冲器858中的解压缩指令线在l1icache860中复制,那么保持解压缩指令线的解压缩缓冲器可用作临时存储从l1逐出的最后指令块的牺牲品高速缓冲存储器。x索引、y索引、x样式、y样式以及一个或一个以上混合掩码的确定取决于本机指令架构和特定代码片段中指令的使用。当分析代码片段(例如,智能电话中的代码片段)时,单一混合掩码可提供与经由使用多个混合掩码获得的压缩可比较的压缩。单一混合掩码的使用可视为使用单一指令群组且有效地将代码片段中使用的本机指令分离为两个部分,x样式和y样式。群组中的固定(x)和易变(y)部分的原始区别变得不太重要且可互换地看待。并且,单一混合掩码的使用简化了组合器电路的设计,例如图4的组合器418。举例来说,在具有16,542个本机32位指令的实验代码片段中,仅存在6,464个唯一指令和总共0.76的熵。使用单一混合掩码,这6,464个指令分裂为1,351个x样式和1,345个y样式。使用本发明的技术,16,542个本机32位指令中的每一者由23位x/y索引对代替,从而提供例如图2所示的系统中的l2高速缓冲存储器和主存储器的存储容量的28.1%压缩。经编码数据的所得熵从0.76增加到0.89。然而,理论上可能的1.0信息熵量度中的0.89熵测量值说明,不同混合掩码可提供明显较好的结果。确定最佳或近似最佳单一混合掩码以提供多个代码片段上的最佳可能压缩是一个复杂的问题。图9a-9c说明根据本发明基于一般算法的变型的自动混合掩码确定过程900。例如图9a的翻译工具216等翻译工具实施过程900。在框902处,过程900开始。在框904处,获得待压紧的代码片段p。举例来说,代码片段p可包含启动代码、操作系统代码以及如特定产品中利用的多个功能程序。在框906处,代码片段p中的唯一指令收集在p哈希表中(p_unique)。在框908处,p_unique指令以语义次序(例如,位样式升序)基于指令格式而分类。举例来说,p哈希表中的每一指令使用32位解译为整数且在列表中以升序分类。此保证了相邻指令之间的最小汉明距离且实现稍后步骤中的指令分组。在框910处,以唯一指令的分类次序收集位切换频率。举例来说,如果位置p中的位从“1”改变为“0”或从“0”改变为“1”,那么bit_toggle[p]值递增1。bit_toggle阵列大小等于以位表达的原始isa中的最大指令的宽度,例如对于32位指令为32。在框912处,使用若干已知的良好mm、若干随机产生的mm和若干从所收集位切换计数产生的mm选择种子混合掩码的集合(种子mm群集)。已知的良好掩码是从来自类似应用的先前获得的mm预先填充而成且特定针对任何给定架构。所收集的位切换计数充当估计位在实际代码中的给定位置中改变其值的概率的良好启发式。依据经验,根据给定位置的阈值而选择混合掩码会产生良好种子掩码。在框912处,种子mm群集是10与30个个体之间的大小的个别mm的阵列,且可选择为偶数数目的个别mm。较大群集可产生较好结果,但所选择的mm的数目的线性增加需要计算时间的对应增加。可选择特定种子mm群集以配合特定计算平台。20mm的种子群集值已展示为实验设置中的良好折衷。在框914处,种子mm群集中的每一选定mm的配合度值(例如)设定为低但为非零值。所述配合度值为例如表示mm提供的益处水平的双精度浮点数字。过程900继续到图9a的连接符a916,其是到图9b中的连接符a916的链路。在图9b中,含有过程900的重复部分。提供20mm的种子群集作为到过程900的输入。在决策框920处,作出关于是否将发生另一反复的确定。将阈值与数值退出条件比较,且如果未达到退出条件(如阈值小于或等于退出条件时的情况),那么开始另一反复。在框918处,确定具有最佳配合度值的个体为最佳个体,且记录其配合度值(成本函数)。并且,记录确定为群集中的个体的成本函数的总和的total_fitness的值,其从图10的过程1000获得,如下文更详细描述。total_fitness值稍后用作变异算法的参数,从而基于较快改变速率合乎需要的假设在总体压缩效力为低的情况下引起较高变异速率。在决策框924处,作出关于完成过程900的进度的确定。如果最后反复的最佳配合度值与先前反复相比未改变,那么过程900进行到框926。在框926处,增加阈值。如果最后反复的最佳配合度值不同于先前反复的最佳配合度值,那么过程900进行到框928。在框928处,依据配合度值将群集分类。在决策框930处,作出关于以决策框920开始的过程900是否是在第一反复时的确定。如果确定为第一反复,那么过程900进行到框932。否则,过程900在mm的当前群集的情况下进行到框934-952以产生新的群集。在决策框934处,作出关于是否设定精英指示符的确定。精英指示符指示是否将保留多个最佳等级mm。如果设定精英指示符,那么过程900进行到框936。在框936处,将来自先前反复的两个最佳执行者mm直接复制到新的群集中。在框938处,从两个最佳执行者产生两个后代mm,如下文参看图9c更详细描述。在框940处,使两个后代mm随机变异以产生两个经变异后代mm,如下文参看图9d更详细描述。在框942处,当前群集的前四个成员由两个最佳执行者mm和两个经变异后代mm代替。过程900接着进行到框946。返回到决策框934,如果未设定精英指示符从而指示未选择精英,那么过程900进行到框946。在框946和948处,如框938处描述的杂交和如框940处描述的变异的类似程序针对来自先前反复群集的剩余个别mm的未经处理对重复。在框946处,使用搭档选择算法选择随机个体,选择几率与个体的配合度成比例。较好执行的个体更有可能(但不保证)产生后代。在框948结束时,确定新的反复群集。在框950处,新反复群集中的任何副本变异以确保新反复群集中不存在副本。在框952处,重置新反复群集中的个别mm的配合度值。在此点处,新反复群集准备好进行成本计算。为了节省计算时间,维持先前处理的mm(个体)的先前所计算成本的列表,且简单地预先填充而不计算(在框932中)已确定的成本。过程900接着进行到图9c上的连接符b922。返回到框938处的培育操作且参看图9b,选择两个最佳执行者mm作为图9d中的母a960和母b962,其中混合掩码(mm)由32位数字表示,且出于此步骤的目的,mm表示为基因。对于框946处实施的图9d的培育过程959,从输入的mm群集选择两个个别mm,且其也可表示为母a960和母b962。在框938和946处,如图9d所示在随机频率下在基因中的随机点处经由交换基因过程964培育两个母代,从而产生两个后代a966和b968。随机选择可由伪随机数产生器引导且可称为半随机选择。一个母代(母代a960)提供一个后代(后代a966)新基因的开始部分970,且另一母代(母代b962)提供所述后代基因的尾部部分971。另一后代b968是第一后代的补充。产生后代a966的尾部部分971的母代b962产生后代b968的开始部分。产生后代a966的开始部分970的母代a960产生后代b968的尾部部分。在范围0-32内随机选择交叉点972。快速算法收敛的潜在原因可视为归因于从母代的一者到后代的一者中的成功适应特性的保留,其稍后通过配合率计算确认。图9d中说明的培育过程959本身是伪随机事件且受制于识别为crossover_rate阈值的阈值。举例来说,在两个母代之间交换基因的100次尝试中,仅将发生crossover_rate乘以交换尝试次数。返回到图9b的框940和948,新产生的后代mm群集通过半随机翻转个别位而变异,从而在每一后代基因中将“0”改变为“1”或将“1”改变为“0”。此变异过程974在图9e中说明,其中个别mma975通过与位976、977和978相关联的位翻转而变异。以位翻转的结果展示经变异的个别mma979。在变异过程974中,伪随机变异用以将先前不可用特性引入到mm群集中。举例来说,产生新的先前未尝试的mm,但在可控速率下,使得可快速删除不需要的变异。在框942处,将mm群集的四个成员设定为来自框936的所保留的两个最佳执行者和来自框940的两个新的经变异后代。在框946处,剩余mm群集成对培育,如参看图9c的过程955描述,以获得数对新的后代。在框948处,遵循图9d的变异过程974以产生两个新后代。在框950处,使任何副本mm变异。在框952处,重置每一mm个体的配合度值。在框932处,再使用重复mm的先前所计算成本。过程900接着进行到连接符b922,其是到图9c中的连接符b922的链路。在图9c中的框955处,当前个别mm的成本函数计算为选定mm和所分类p_unique列表的动态压缩函数。成本函数包括两个主要分量:外部存储装置的大小和翻译词典的大小。经组合的这两个分量反映了所获得的压缩程度或所实现的熵水平。外部存储装置大小与内部x/y存储器解压缩表大小的确切关系由指示两个分量的相对重要性的参数确定。举例来说,成本函数等于x和y索引大小总和乘以x/y词典大小(以千字节计)的乘积。因此,成本等于x/y词典大小*(x_index_size+y_index_size)。此公式反映评估内部词典大小与外部存储装置大小的相对重要性的平衡方法。可在成本函数中通过引入相对重要性加权常数而引入偏好。举例来说,成本等于(weight_constant*x/y_dictionary_size)*(x_index_size+y_index_size)。在当前实施方案中,weight_constant设定为1.00,但其可从0.01变化到1.00。在决策框956处,作出关于过程900的运行时是否已超过期限的确定。如果运行时已超过期限,那么过程900进行到框958且停止。如果运行时尚未超过期限,那么过程900进行到决策框957。在决策框957处,作出关于是否已找到最低当前成本mm的确定。举例来说,仅找到产生小于阈值的当前成本的单一mm可能是终止过程900的不充分原因。另一方面,有可能检测到已达到理论上最低熵界限表示,且不必要进行任何进一步搜索。在另一实例中,可找到若干mm,每一者产生与选择具有最低当前成本的mm或选择各自具有相同可接受最低当前成本的多个mm中的一者近似相同的小于阈值的当前成本(这可为在框958处终止过程900的充分原因)。否则,过程900继续到图9b的连接符a916。图10说明根据本发明的示范性动态压缩和当前成本计算980,作为过程1000。在框1002处,输入当前成本值,例如可从图9b的框952获得的mm,其在确定其先前在决策框932中未评估之后选择,且输入经分类的p_unique指令。在框1004处,根据针对选定mm的当前分组启发式基于具有代码片段的单一mm或多个mm而对经分类的p_unique指令分组。举例来说,针对单一mm的分组是将唯一指令分离为x和y部分(例如,图5a的示范性元件500)以及构成初始未压缩x和y表的过程。在一个实例中,整个本机指令程序可视为单一群组。另一方面,针对多个mm的分组涉及将唯一指令分割为若干群组,针对每一群组具有唯一mm。在此情况下,x样式表示群组的固定样式,其中整个群组共享单一固定x样式,且每群组的多个y样式表示群组的易变部分。虽然对于到群组的近似最佳分割的若干启发式是可能的,但一个特定启发式的选择可由另一启发式驱动,所述另一启发式可基于唯一指令的输入列表的大小及其初始熵。以下启发式已通过实验证明是可行的,包含汉明、加权汉明、1的数目以及1的加权数目。图11说明用于当在经分类唯一指令列表中的相邻条目之间超过汉明距离的指定阈值时产生新群组的汉明启发式1100。经加权汉明启发式1100在计算与阈值相比的改变计分时向某些位字段位置指派比其它位字段位置多的权数,如图11所示。在过程1100中的框1102处,获得经分类输入原始指令样式的完全列表(经分类p_unique)。其接着通过分析两个相邻条目之间的汉明距离而同时处理所述两个相邻条目。在框1104处,将可变汉明距离值(hamm_dist)计算为两个相邻条目的xor。举例来说,如果原始指令的列表仅含有三个条目0、1和2,那么hamm_dist计算两次,一次计算为第0与第1条目之间的xor,且接着计算为第1与第2条目之间的xor。在框1106处,以一次一个位的方式解析hamm_dist,且针对每一非零位递增sum_weight值。框1106可视为对每一hamm_dist中的非零位计数。递增量可依据位位置而改变。从weight_array读取确切递增量,且又从图9a的框910中计算的bit_toggle阵列计算或静态地预先计算weight_array。在决策框1108处,作出关于sum_weight值是否超过weight_threshold的确定。肯定结果指示将形成新指令群组。在框1110处,形成新群组,且过程1100进行到决策框1112。决策框1108的否定输出致使过程1100进行到决策框1112。在决策框1112处,作出关于是否已到达经分类p_unique列表的末尾的确定。如果尚未达到列表的末尾,那么过程1100进行到框1114,框1114递增循环变量“i”且进行到框1104。如果已到达列表的末尾,那么过程1100进行到框1116且停止。可使用其它启发式,例如1的数目启发式和1的经加权数目启发式,其两者均基于测量指令中的位字段的易变性。举例来说,mm中的较低1的数目指示每群组中较大x样式和较少y样式。mm中的较高1的数目指示每群组中较小x样式和较多y样式。存在对于用于选择产生最高压缩的1的数目的单一点的非线性相依性。在当前方法中,在框1004处选择单一mm分割策略。在框1006处继续,分别确定例如存储在图4的x存储器412中的x样式和存储在y存储器414中的y样式等x存储器和y存储器表,如上文参看图4描述。在决策框1008处,使用过滤启发式滤出标准以下的mm,其表示不配合的个体,其在过程900中是可能的。进行此过滤以节省计算时间且不会影响过程1000的效力。如果从掩码产生的未压缩x/y表的字节大小超过输入的原始指令列表大小,那么确定所述掩码为明显不配合。在决策框1008处,作出关于x存储器大小+y存储器大小是否大于p_unique指令的数目乘以本机指令宽度(其在此示范性情况下为32位)的确定。在决策框1008处,如果所述确定是肯定的,那么过程1000进行到框1010以拒绝混合掩码。在框1010处,将1008处拒绝的mm的配合度值设定为零,且过程1000进行到图9c上的连接符b922。如果所述确定为否定的,那么过程1000进行到框1012。在框1012处,压紧x存储器和y存储器表。框1012直接影响x和y表的大小,这又决定寻址这些表所需的索引的大小,且最终决定外部压缩代码片段的大小。x和y表使用如参看图5b和图12-14描述的索引压缩而压紧。在框1014处,产生当前成本,其等于常数c1乘以x存储器大小加上y存储器大小的总和,其接着乘以x索引大小加上y索引大小的总和。此过程1000提供用于计算由当前成本表示的熵值的有利启发式,所述熵值接近现分离为x/y索引和x/y压紧表的外部集合的压缩代码的实际熵。任选地,在框1014处,可确定理论最小熵量度,以及是否需要进一步搜索。在框1016处,将所产生的当前成本输出到图9c中的决策框956。如上所述,x/y表中的条目的近似最佳选择与索引压缩组合可显著减小x/y表的大小。可基于压缩程度与执行时间之间的折衷使用两个示范性放置算法。第一启发式是根据本发明具有图12处呈现的填补分类的近似穷尽搜索x/y表压紧算法。处理在框1202处通过获得待压缩的符号的列表而开始。此为待压紧的x/y表符号的当前集合的列表。表中存在“table_size”个符号。在框1204处,以使填补重叠的概率最大化的次序将此列表分类。并且,在框1204处,将反复索引“i”重置到0。框1204处的填补分类操作是在实际压紧过程起始之前分类x/y表中的符号以增加填补重叠的概率的指定方式。填补分类操作通过快速分类算法实施,其中在一个符号的一个或一个以上左侧最高有效字节与另一符号的一个或一个以上右侧最高有效字节之间存在匹配的情况下比较函数要求两个符号的交换。此处,符号的长度以完全字节测量,且左侧调整。右侧最高有效字节可仅具有若干有效位,但对于分类的目的这并不重要。在决策框1206处,作出关于反复索引“i”是否小于“table_size”的确定。如果反复索引“i”大于或等于“table_size”,那么过程1200进行到框1232且停止。否则,过程1200进行到决策框1208,因为x/y表的第i符号尚未经处理。在决策框1208处,作出关于参数seen[i]是否等于“1”从而指示第i符号已经处理的确定。如果seen[i]=1,那么过程1200进行到框1210,其中反复索引“i”递增1。如果符号尚未经处理,seen[i]≠1,那么过程1200进行到框1212。在框1212处,将第i符号插入到压缩表中。插入过程的细节在下文参看图13描述。同样在框1212处,通过将参数seen[i]设定为1、将best_score变量设定为0,且将新反复索引“k”初始化为值i+1而指出插入的事实。在决策框1214处,作出关于新反复索引“k”是否小于待压缩的符号数目的确定。如果新反复索引“k”小于“table_size”,那么过程1200进行到框决策框1216,因为第k符号尚未经处理。在决策框1216处,作出关于参数seen[k]是否等于“1”从而指示第k符号已经处理的确定。如果seen[k]=1,那么过程1200进行到框1218,其中新反复索引“k”递增1。如果符号尚未经处理,seen[k]≠1,那么过程1200进行到框1220。在框1220处,针对第k符号计算匹配计分。在框1220处,计分匹配计算模拟符号插入过程,但不插入任何符号。事实上,计分匹配计算返回与通过将当前符号以表的当前形式放置到压缩表中而预期的节省量成比例的计分。此计算过程在x/y未压缩列表中的剩余未处理符号之间定位潜在最佳匹配候选者。计分匹配返回匹配指示或极高计分,例如无穷大(举例来说,如果符号可在现有内容内完全匹配),或提供若干重叠字节(如果符号在压缩存储器的末尾匹配)。如果未找到重叠,那么返回零计分。所计算的计分反映待通过将第k符号在其当前状态中插入到压缩表中而预期的节省程度。在决策框1224处,作出关于计分是否等效于无穷大的确定。如上所述,例如无穷大计分等匹配指示意味着第k符号与压缩表的当前状态完全匹配,将其插入不会增加压缩表的大小,且过程1200直接进行到框1228中的插入步骤。注意,在此情况下的插入过程是从压缩x/y表的开始的当前符号偏移的记录,其稍后变为其在外部存储器中的表示。还应注意,一般来说,当使用多个混合掩码时,共享共同前缀的多个符号具有相同偏移,但不同长度。否则,在框1226处,在所计算计分与迄今最佳计分之间进行比较。如果新计算的计分超过迄今最佳计分,那么过程1200进行到框1230。在框1230处,当前最佳计分设定为等于新计算的计分,且最佳索引设定为“k”。在框1218处,新反复索引“k”递增1,且过程1200进行到框1214。一旦“k”到达列表末尾(table_size),如框1214处确定,那么过程1200进行到框1222。在框1222处,作出关于是否确定了best_score的确定。如果最佳计分尚未确定,那么反复索引“i”在框1210处递增,且过程1200从框1206继续。在框1222处,非零best_score指示找到最佳配合符号,且过程1200进行到框1228。在框1228处,将最佳配合符号插入到压缩表中,且通过将参数seen[best_index]阵列设定为等于“1”指出插入的事实。一旦反复索引“i”达到如框1206处确定的table_size,过程就在框1232处终止。在此点处,已将所评估符号插入到压缩表中。图13说明根据本发明的符号插入过程1300。在框1302处,获得压缩存储器的当前状态和待插入的新符号。在决策框1304处,作出关于新符号是否为零的确定。如果新符号为零,那么在框1320处将符号映射到压缩存储器中的指定位置,且仅存储一个字节而不管符号大小如何。在决策框1304处,如果新符号确定为非零,那么过程1300进行到框1306。在框1306处,计算当前pad_mask。pad_mask是用于掩蔽符号中的最后有效字节的非有效部分的二进制变量。举例来说,如果正插入的符号具有15位大小,那么最后字节的最后位非有效且在针对放置的比较期间需要忽略。此情况下的pad_mask是0xfe(pad_mask始终仅施加到最后有效字节)。在决策框1308处,作出关于反复索引“i”是否小于当前压缩表大小减去新符号大小加上1的确定。如果所述确定为肯定的,那么过程1300进行到框1310。在框1310处,重复尝试将新符号放置在压缩存储器中,检查每一符号位置以便仅以字节步长将有效位与当前内容匹配。此操作通过将新符号的第一有效字节重复地与已在存储器中的每一字节比较来实现,且如果找到针对第一有效字节的匹配,那么新符号中的其它剩余位匹配。所述匹配仅考虑符号中的有效位,如上文所述经由施加pad_mask。如果在决策框1312处找到此位置,那么过程1300进行到框1318。在框1318处,将符号放置在所确定位置处,且反复索引“i”变为从压缩表的开始的符号偏移。此索引将最终存储在外部存储器中且用于将原始x/y样式定位在x/y压缩表中。如果到达框1316,那么这意味着当前符号可能尚未与压缩存储器的现有内容完全匹配,且其需要放置在列表的末尾。在所述情况下,对符号的每一字节执行最大重叠检查。如果未发现重叠,那么简单地将新符号放置在压缩表的末尾。图14说明根据本发明具有填补-分类过程1400的三角x/y表压紧。过程1400是穷尽搜索x/y表压紧过程1200的替代。启发式过程1400o(n)快于过程1200,但不能产生同样良好的压缩。然而,过程1400的压缩结果对于若干实际应用可为可接受的。此外,两个过程的组合可能在实际实施方案中可实现,图14所示的较快过程用于确定最佳掩码候选者,且图12所示的较慢过程用于产生最终编码。过程1400以与图12的步骤1202、1204、1206、1208和1212相同的步骤1402、1404、1406、1408和1412开始。在框1412处,执行与框1212处进行的类似的第i元件的插入,但以框1414开始,不存在与以图12的框1214和1222所进行相同的所使用的best_score。代替于使用最佳计分评估,在图14的剩余框处,i+1与table_size之间的符号被遍历一次,且在框1426处将被发现具有如决策框1424处确定的非零计分的每个元件插入到压缩表中。结合本文揭示的实施例描述的方法可体现在硬件的组合中,以及体现在存储由处理器执行的非暂时信号的软件模块中。软件模块可驻留在随机存取存储器(ram)、快闪存储器、只读存储器(rom)、电可编程只读存储器(eprom)、硬盘、可拆卸盘、磁带、压缩盘只读存储器(cd-rom),或此项技术中已知或将来将提出的任何其它形式的存储媒体中。存储媒体可耦合到处理器使得处理器可从存储媒体读取信息以及在一些情况下向存储媒体写入信息。耦合到处理器的存储媒体可为与电路实施方案成一体的直接耦合,或可利用一个或一个以上接口,从而支持直接存取或使用下载技术的数据串流传输。虽然在用于处理器中的说明性实施例的上下文中揭示本发明,但将认识到,所属领域的一般技术人员可依据以上论述和所附权利要求书采用广泛多种实施方案。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1