首页> 中国专利> 用于存储熵编码指令序列及将其翻译成可执行形式的方法和设备

用于存储熵编码指令序列及将其翻译成可执行形式的方法和设备

摘要

一种压缩程序指令的序列的方法通过检查程序指令流以识别满足参数的两个或两个以上指令的序列而开始。由选定类型的布局指令替代所述经识别的两个或两个以上指令的序列,接着压缩所述选定类型的布局指令。一种解压缩方法将X索引和Y索引作为压缩值一起存取。将所述压缩值解压缩为选定类型的布局指令,将所述选定类型的布局指令解码并用两个或两个以上指令的序列替代。一种用于解压缩的设备包含用于存储压缩指令的存储子系统,其中压缩指令包括X索引和Y索引。解压缩器被配置用于将从所述存储子系统存取的X索引和Y索引翻译为选定类型的布局指令,将所述选定类型的布局指令解码并用两个或两个以上指令的序列替代。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-07-17

    未缴年费专利权终止 IPC(主分类):G06F9/38 授权公告日:20160706 终止日期:20190730 申请日:20120730

    专利权的终止

  • 2016-07-06

    授权

    授权

  • 2014-05-21

    实质审查的生效 IPC(主分类):G06F9/38 申请日:20120730

    实质审查的生效

  • 2014-04-23

    公开

    公开

说明书

相关申请案的交叉参考

2011年5月3日申请的标题为“用于存储和翻译内嵌在存储器层级内的熵编码软件的方法和设备(Methods and Apparatus for Storage and Translation of Entropy EncodedSoftware Embedded within a Memory Hierarchy)”的第13/099,463号美国专利申请案具有与本申请案相同的受让人,为相关申请案,且在此全文以引用的方式并入本文中。

技术领域

本发明大体涉及具有用于改进内嵌应用中的代码密度的压缩指令集的处理器,且更特定来说涉及用于产生指令序列的经压缩表示、存储所述经压缩指令序列且将所述经压缩指令序列翻译为可执行机器译码程序指令的技术。

背景技术

例如蜂窝式电话、膝上型计算机、个人数字助理(PDA)等许多便携式产品需要使用执行程序支持通信和多媒体应用的处理器。此类产品的处理系统包含一个或一个以上处理器,每一者具有针对指令、输入运算数和执行结果的存储装置。举例来说,针对处理器的指令、输入运算数和执行结果可存储在由通用寄存器堆、多层指令高速缓冲存储器、数据高速缓冲存储器和系统存储器组成的层级式存储器子系统中。

为了提供高代码密度,可使用原生指令集架构(ISA),其具有两个指令格式,例如作为32位指令格式的子集的16位指令格式。在许多情况下,所取得的16位指令由处理器在允许执行硬件经设计为仅支持32位指令格式的解码过程之前或之中变换为32位指令。作为32位指令的子集的16位指令的使用是限制可编码为16位格式的信息的量的约束。举例来说,16位指令格式可限制可指定的可寻址源运算数寄存器和目的地寄存器的数目。16位指令格式例如可使用3位或4位寄存器堆地址字段,而32位指令可使用5位字段。如果两个格式在程序中部分归因于指令寻址约束(例如,形成分支到16位和32位指令)而混合,那么处理器管线复杂性也可能增加。并且,代码压缩的要求依据不同程序而变化,从而使针对一个程序选择的固定16位指令格式不太有利于由不同程序使用。在此方面,现有处理器的传统代码可能不能有效地利用两个指令格式来显著改进代码密度且满足实时要求。这些和其它约束限制了具有作为标准大小指令中使用的字段的子集的字段的缩减大小指令的效力。

发明内容

在本发明的若干方面中,本发明的实施例解决了改进代码密度的需要,方法是通过压缩程序指令的序列、存储经压缩序列并将所述经压缩序列翻译为可执行指令序列。本文提出的技术允许针对内嵌软件极其有效地利用存储装置和发射管道。

为实现此些目的,本发明的一实施例应用一种压缩程序指令的序列的方法。识别满足参数的两个或两个以上指令的序列。两个或两个以上指令的经识别序列由选定类型的布局指令替代。所述选定类型的布局指令经压缩为压缩值的X索引和Y索引对。

本发明的另一实施例提出一种将表示指令序列的压缩值解压缩的方法。X索引和Y索引作为压缩值一起存取。所述压缩值解压缩为选定类型的布局指令。将所述选定类型的布局指令解码以用两个或两个以上指令的序列替代所述选定类型的布局指令。

本发明的另一实施例提出一种用于将表示指令序列的压缩值解压缩的设备。存储子系统经配置用于存储经压缩指令,其中经压缩指令包括X索引和Y索引。解压缩器经配置用于将从存储子系统存取的X索引和Y索引翻译为选定类型的布局指令。解码器经配置用于用两个或两个以上指令的序列替代所述选定类型的布局指令。

从以下具体实施方式和附图将了解对本发明实施例的更完整理解以及本发明的更多特征和优点。

附图说明

图1是其中可有利地采用本发明的实施例的示范性无线通信系统的框图;

图2是根据本发明的实施例经设计用于高效且低成本运行时解压缩的代码压缩系统;

图3说明根据本发明的实施例将基于混合掩码的指令分裂为具有字节重叠填补位的X样式和Y样式的指令分割过程的示范性元件;

图4是根据本发明的实施例的解压缩器和执行系统,其中以压缩形式存储在层2高速缓冲存储器和层1高速缓冲存储器中的程序经解压缩以供执行;

图5说明根据本发明的实施例包括第一未压缩极长指令字(VLIW)包和第一经压缩VLIW包的示范性VLIW包格式;

图6说明根据本发明的实施例包括第二未压缩VLIW包、第二VLIW压缩包和第三VLIW压缩包的示范性VLIW包格式;

图7说明根据本发明的实施例支持VLIW压缩包的无操作(NOP)和功能指令组合的示范性列表;

图8说明根据本发明的实施例包括包含频繁使用的指令对的第三未压缩VLIW包和第四VLIW压缩包的示范性VLIW包格式;

图9A说明根据本发明的实施例用于压缩程序指令的序列的过程;

图9B说明根据本发明的实施例用于将表示压缩程序指令的序列的压缩值解码的过程;以及

图10说明根据本发明的实施例的示范性解压缩状态图。

具体实施方式

现将参看附图更充分描述本发明,附图中展示本发明的若干实施例。然而,本发明可以各种形式体现且不应解释为限于本文陈述的实施例。而是,提供这些实施例使得本发明将为详尽和完整的,且将把本发明的范围完全传达给所属领域的技术人员。

供在上面操作或用于实行根据本发明的教示的操作的计算机程序代码或“程序代码”可初始以例如C、C++、Smalltalk、VisualTSQL、Perl等高级编程语言或以各种其它编程语言编写。通过使用以原生指令格式编码的指令将高级程序代码转换为原生汇编程序而将以这些语言的一者编写的源程序或源代码编译为目标处理器架构。举例来说,指令集架构(ISA)的原生指令格式可为固定位数,例如32位格式或16位格式,或可为可变位数,例如32位格式与16位格式的组合。目标处理器架构的程序还可直接以原生汇编语言编写。原生汇编程序使用机器级二进制指令的指令助记符表示。如本文使用的编译器或人类编程员产生的程序代码或计算机可读媒体指代例如格式可由处理器理解的目标代码等机器语言代码。

图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产生定制熵限界编码而增加。当前上下文中的信息熵被界定为程序的当前表示中的信息内容的量度。信息熵可视为使用原生指令符号的程序的当前表示与使用压缩符号的程序的最短可能表示(其保留了程序的原始功能性)之间的比率。用于产生压缩程序的字母表的粒度处在个别字节等级,作为计算系统中的极微小可存储且可寻址实体。两种程序表示中保留的信息内容为程序的原始功能性。举例来说,熵“1”可以其最短可能表示形式表示一个特定确切程序。具有小于“1”的熵的程序指示可支持一个以上程序,且可能可支持非常大数目的程序,这需要存储器中增加的存储容量。

在图2中,提供链接的可执行代码210作为到翻译工具216的输入,翻译工具216产生经压缩代码218和解码表220。经压缩代码218和支持数据区段212存储在存储装置214中,例如硬盘、光盘、内嵌式装置的快闪存储器,或可从其将选定代码提供到处理器复合体203以供执行的其它此类存储媒体。处理器复合体203包含主存储器222、层2高速缓冲存储器(L2高速缓冲存储器)224、层1指令高速缓冲存储器(L1高速缓冲存储器)226和处理器核心228。处理器核心228包含具有根据实施例的翻译存储器(TM)232和执行管线234的解码器230。经压缩代码存储在存储装置214、主存储器222、L2高速缓冲存储器224和L1高速缓冲存储器226中。经解压缩代码通常从L1高速缓冲存储器226取得且由执行管线234执行。下文更详细描述用于产生经压缩代码218且用于在解码器230中解码经压缩指令的翻译工具216的各个实施例。

处理器复合体203可适当地用于图1的组件125A-125D中,用于执行以经压缩形式存储在L1Icache226、L2高速缓冲存储器224和主存储器222中的程序代码。为了论述的清晰,未展示可连接到处理器复合体的外围装置。处理器核心228可为通用处理器、数字信号处理器(DSP)、专用处理器(ASP)等。处理器复合体203的各个组件可使用专用集成电路(ASIC)技术、现场可编程门阵列(FPGA)技术或其它可编程逻辑、离散门或晶体管逻辑,或适于既定应用的任何其它可用的技术实施。尽管展示单一处理器核心228,但本发明的实施例的压缩指令的处理适用于超标量设计和实施并行管线的其它架构,例如多线程、多核心,和极长指令字(VLIW)设计。

图3说明根据本发明的实施例将基于二进制混合掩码(MM)304的原生ISA固定大小指令A302分裂为具有重叠填补位310和312的Ax样式306和Ay样式308的指令分割过程的示范性元件300。填补位归因于现代存储器系统强加的要求而产生,以至少以字节粒度片段表示指令和数据。具有字节粒度片段的格式的使用用于提供压紧表示,从而允许位粒度上的存储重叠,同时满足存储系统的字节粒度要求。

为压缩原生ISA代码片段,将代码片段分割为指令群组,每一群组贡献单一共享X样式和一组唯一Y样式。Ax样式306表示对于指令A所属的指令群组为共同的位样式。Ay样式308表示体现原生指令A302与Ax样式306之间的差异的位样式。注意,代码片段可分割为1与N之间的任何数目的群组,其中N为代码片段中的原生指令的数目。代码片段的X样式存储在包括X存储器的X词典中,且代码片段的Ay样式存储在包括Y存储器的Y词典中。X索引是X存储器中的位置的地址,且Y索引是Y存储器中的位置的地址。这两个索引、来自X和Y词典的样式以及二进制混合掩码的组合确切地表示原生指令。

压缩操作314使用代码片段的至少一个混合掩码304从原生指令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)]。括号中的数字(例如,(8,9,A,B))表示由于重叠填补位310的两个“无关”状态的缘故可从其选择一个数字以用于特定4位位置的可能数字的集合。解码器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样式或两者的索引压缩利用一过程,所述过程消除副本X样式和副本Y样式且使填补位重叠(例如,字节可寻址位置中的重叠填补位310和312),因此减少物理存储装置的双重利用。利用单一混合掩码,所有X样式具有相同数目的位,且所有Y样式具有相同数目的位。在不同混合掩码的情况下,有可能具有针对每一原生指令的多种不同X和Y样式。然而,混合掩码的仅几个组合通常提供原生ISA代码片段与经压缩代码片段之间的映射(相对于所测试混合掩码组合的数目占用最小存储空间)。产生需要低存储容量的经压缩代码的单一混合掩码视为近似最佳混合掩码。

图4是根据本发明的实施例的解压缩器和执行系统400,其中以压缩形式存储在L2高速缓冲存储器224和L1高速缓冲存储器226中的程序经解压缩以供在执行管线234中执行。L1高速缓冲存储器226包含XY索引存储器402,其将X索引和Y索引对存储在可寻址位置中,例如具有7位X索引值0x54和9位Y索引值0x134的XY条目404。多路复用器405用于选择关于L1高速缓冲存储器命中406的XY条目,或关于L1高速缓冲存储器226中的未中的来自L2高速缓冲存储器224的XY值407。在L1高速缓冲存储器226和L2高速缓冲存储器224两者中的未中的情况下,使用多路复用器经由路径403从主存储器选择XY条目。在具有索引X寄存器408、索引Y寄存器410、X存储器412、Y存储器414、单一掩码(MM)寄存器416和组合器418的解码器230中实现解压缩操作。解压缩指令存储装置419包含多个未经压缩指令420,其可包含选定类型的布局指令,如下文更详细描述。

在程序加载时或在内嵌式系统启动过程中,主存储器222被加载上压缩代码,X存储器412和Y存储器414被加载上相关联X和Y词典上下文,且单一二进制混合掩码在MM寄存器416中设定。注意,X和Y存储器上下文以及混合掩码可视需要在执行期间再加载。举例来说,再加载可允许将原始代码压缩为多个片段,每一片段具有其自身的定制编码。举例来说,一些复杂的内嵌式系统(例如,智能电话)可从主应用调用多个独立的子过程,所述子过程不共享代码空间且为自含式的。每一此应用可具有其自身的包括X/Y词典和MM的定制编码,其在子过程启动时加载。对于描述的剩余部分,使用具有用于包含任何应用代码的整个系统的图2的单一翻译存储器232和单一编码的解码器230来描述解压缩器系统400。

接下来,执行管线234开始从L1Icache226取得指令。首先,对L1Icache的每次存取可产生未中指示422,从而致使对L2高速缓冲存储器224的存取。首先,对L2高速缓冲存储器224的存取也可产生未中,从而致使对图2的主存储器222的存取,主存储器222以在L2高速缓冲存储器224中加载且经由多路复用器405在路径403上转发到解码器230的经压缩指令响应。解码器230将XY索引压缩指令解压缩为未压缩格式以供存储在解压缩指令存储装置419中且供在执行管线234中执行,如相对于图3的解压缩操作316描述。在操作周期之后,L1Icache226和L2高速缓冲存储器224可达到稳定状态。

从处理器的角度来说,执行管线234尝试取得操作,在L1Icache226中搜索指令的取得地址和控制信号421。L1Icache226可确定指令存在。L1高速缓冲存储器取得操作例如是针对XY条目404,其是L1高速缓冲存储器226中的命中,从而致使XY条目404经由多路复用器405传递到解码器230。XY条目404分裂,其中X索引值0x54在索引X寄存器408中接收,且Y索引值0x134在索引Y寄存器410中接收。在地址0x54处从X存储器412取得的X样式306提供到组合器418。在地址0x134处从Y存储器414取得的Y样式308也提供到组合器418。存储在MM寄存器416中的单一混合掩码(MM)304[0xFF80FF80]进一步提供到组合器418。组合器418根据MM304将来自X样式306的适当位与来自Y样式308的适当位组合以产生原生指令302,原生指令302存储在解压缩指令存储装置419中且传递到执行管线234。

在所描述的系统中,程序内容以暗示加密格式存储。尽管不对指令流执行特定加密类型的数据加扰,但程序代码以应用特定和压缩形式存储在存储装置214、主存储器222、L2高速缓冲存储器224和L1高速缓冲存储器226中。由于程序代码的经编码状态的一部分驻留在翻译存储器232中的处理器核心228(其在最终产品中不容易从外部存取)内部,所以存储装置214以及上部存储器层级222、224和226内容不足以恢复原始程序,从而使得难以分析或复制。

VLIW架构为指令集架构(ISA)设计者提出若干挑战。举例来说,每一VLIW包包括多个指令,每一指令通常绑定到特定执行单元且并行执行。控制转移粒度依据定义是整个VLIW包。此VLIW包的中部可能不存在跳跃目标。在一种方法中,VLIW包可使用针对每一指令的唯一编码存储在存储器中以确定性地识别包中的每一指令。但由于VLIW内编码的指令理应是并行执行的,所以具有完全编码32位指令例如可能浪费存储空间且解码起来较慢因此影响性能。事实上,解码VLIW代码可能是解析连续操作以确定VLIW包边界的循序任务。

另一极端是形成完全用指令填充的VLIW包,包含无操作(NOP)指令,其中每一指令可由其在包中的位置明确地确定。因此,每一包将具有针对可并行操作的每一功能单元的指令时隙位置。举例来说,具有六个指令的并行发布速率的处理器架构将具有六个指令的对应VLIW包。当前框架中的此方法可视为VLIW包的完全未压缩状态化表示。此方法的一个可能益处是VLIW包中每一指令中的位的扩展以增加每一指令的能力。然而,此方法在其自身存储无操作指令的方式方面存在浪费,因为在不依赖并行执行的情况下形成含有所有有用指令的VLIW包难以实现。本发明的实施例引入利用压缩基础结构来最佳地编码VLIW包的不同方法。

图5说明根据本发明的实施例包括第一未压缩极长指令字(VLIW)包502和第一经压缩VLIW包504的示范性VLIW包格式500。第一未压缩VLIW包502包括四个32位指令集架构(ISA)指令,例如32位加法(ADD)指令506、第一32位无操作(NOP)指令507、第二32位NOP指令508和32位分支JUMP指令509。在利用16位ISA的替代实施例中,四个16位指令将例如被存储在未压缩VLIW64位包中。在图5中,两个32位NOP指令507和508是由图2的翻译工具216识别且压缩为如图3所示的X[2nop]压缩字段516和Y[2nop]压缩字段517的两个NOP的序列。ADD指令506和JUMP指令509各自被压缩为对应的X索引和Y索引对压缩值,也如图3所示。因此,第一未压缩VLIW包502经压缩以形成第一压缩VLIW包504。

第一压缩VLIW包504包括表示四个指令506-509的X和Y压缩字段的三个集合。32位ADD指令506由八位X[add]压缩字段514和八位Y[add]压缩字段515表示。第一NOP指令507和第二NOP指令508的序列由八位X[2nop]压缩字段516和八位Y[2nop]压缩字段517表示。X[2nop]压缩字段516和Y[2nop]压缩字段517表示当解码为第一NOP指令507和第二NOP指令508时扩展的两个NOP指令的熵编码序列。JUMP指令509由八位X[jmp]压缩字段518和八位Y[jmp]压缩字段519表示。

图6说明根据本发明的实施例包括第二未压缩VLIW包602、第二VLIW压缩包603和第三VLIW压缩包604的示范性VLIW包格式600。第一未压缩VLIW包602包括四个32位指令,例如第一32位无操作(NOP)指令606、第二32位NOP指令607、32位存储指令608和第三32位NOP指令609。

第二压缩VLIW包603包括表示四个指令606-609的三个X和Y压缩字段。第一NOP指令606和第二NOP指令607的序列由八位X[2nop]压缩字段614和八位Y[2nop]压缩字段615表示。X[2nop]压缩字段614和Y[2nop]压缩字段615表示当解码为第一NOP指令606和第二NOP指令607时扩展的两个ISA NOP指令的熵编码序列。32位存储指令608由八位X[store]压缩字段616和八位Y[store]压缩字段617表示。第三NOP指令609由八位X[1nop]压缩字段618和八位Y[1nop]压缩字段619表示。

第二未压缩VLIW包602具有有用位的低利用率,其仅具有由两个群组的NOP606、607和609围绕的一个有效负载指令608。为了提供第二未压缩VLIW包602的比第二压缩VLIW包603所提供的表示更紧密的表示,每包利用专门NOP指令,其对VLIW包内的指令的布局进行编码。此专门NOP指令称为布局NOP。随着VLIW包中指令数目增加以适应较大数目的功能单元,在VLIW包中提供单一布局NOP而非单独编码可包含的每一个别NOP指令变得愈加有利。对于无NOP指令的那些VLIW包,不会浪费存储空间,因为不需要布局NOP。通过将布局NOP指令放置在VLIW包的开始或结尾,与针对“n”指令VLIW包的排序O(n)的循序任务复杂性相比,布局恢复变为排序O(1)的任务复杂性。

第三VLIW压缩包604包括表示四个指令606-609的两个X和Y压缩字段的集合。第一NOP指令606、第二NOP指令607、存储指令608和第三NOP指令609的序列由2nop_LS_lnop指令表示。2nop_LS_lnop指令是引入到当前ISA的新布局NOP指令的实例。2nop_LS_lnop指令识别NOP指令的数目以及NOP指令在NOP指令与存储指令的组合中的放置。两个NOP指令606和607、存储指令608和第三NOP指令609的序列由图2的翻译工具216识别且压缩为如图3所示的X[2nop_LS_lnop]压缩字段622和Y[2nop_LS_lnop]压缩字段623。存储指令608压缩为单一X索引和Y索引对,也如图3所示。因此,第二未压缩VLIW包602经压缩以形成第三VLIW压缩包604。举例来说,X[2nop_LS_lnop]压缩字段622和Y[2nop_LS_lnop]压缩字段623表示当解码为第一NOP指令606和第二NOP指令607、针对存储指令的占位符以及第三NOP指令609时各自扩展的两个ISA NOP指令、存储指令和第三NOP指令的熵编码序列。32位存储指令608由针对存储指令的占位符填充的八位X[store]压缩字段624和八位Y[store]压缩字段625表示。

图7说明根据本发明支持VLIW压缩包的无操作(NOP)和功能指令组合的示范性列表700。布局NOP列702含有经编码以表示四个指令的序列的布局NOP指令条目。举例来说,四个指令的序列包括NOP指令(N)、算术逻辑单元指令(A)、加载或存储指令(LS)和控制指令(C)的组合。算术逻辑单元1(ALU1)VLIW位置列704含有经编码以表示ALU1指令或NOP指令的条目。ALU2VLIW位置列705含有经编码以表示ALU2指令或NOP指令的条目。加载或存储VLIW位置列706含有经编码以表示加载或存储(LD/ST)指令或NOP指令的条目。控制VLIW位置列707含有经编码以表示控制指令或NOP指令的条目。举例来说,线条目708是表示四个NOP指令(4N)且在每一时隙列704-707中具有NOP指令的布局NOP指令。在另一实例中,线条目709是表示三个NOP指令(3N)和一控制指令(C)且在每一时隙列704-706中具有NOP指令以及在时隙列707中具有控制指令的布局NOP指令。在又一实例中,线条目710是表示每一时隙列704和705中的两个NOP指令(2N)、时隙列706中的加载或存储指令(LD/ST)以及时隙列707中的另一NOP指令(N)的布局NOP指令。线条目710的2N_LS_N布局NOP指令可对应于图6的第三VLIW压缩包604。并且,注意,图7中的列702的布局NOP指令不依赖于应用,且通常取决于基本VLIW架构。

使用布局NOP指令的方法可扩展以引入针对特定应用定制的新自定义指令,但可解码到现有ISA空间。举例来说,如果在程序评估过程期间,确定一个或一个以上特定VLIW包以高频率在指令流中出现,那么每一不同VLIW包可编码为单一专门布局指令。VLIW包中此频繁使用的指令的序列由图2的翻译工具216识别且压缩为如图3所示的单一X压缩字段和单一Y压缩字段。因此,多个专门布局指令可包含在ISA中,使用ISA的未使用编码用于解码目的,以及用于压缩频繁使用的指令的序列,如下文更详细描述。注意,不同于布局NOP指令,所述多个专门布局指令是依赖于应用的。

图8说明根据本发明的实施例包括包含频繁使用的指令对的第三未压缩VLIW包802和经压缩专门布局指令804的示范性VLIW包格式800。第三未压缩VLIW包802包括四个32位指令,例如比较相等(P1=cmp.eq(r0,0))指令806、第一无操作(NOP)指令807、第二NOP指令808和分支返回指令809。比较相等指令806和返回指令809包括频繁使用的指令对。使用频率可依据在图2的处理器复合体203上运行的程序的分析确定。此使用频率分析可例如在模拟环境中动态确定或在图2的编译器和链接器206中静态确定。

第三未压缩VLIW包802可由cmp_2nop_return指令表示,其是引入到当前ISA的专门布局指令的实例。cmp_2nop_return指令由图2的翻译工具216识别且压缩为如图3所示的X[cmp_2nop_return]压缩字段822和Y[cmp_2nop_return]压缩字段823。因此,第三未压缩VLIW包802经压缩以形成经压缩专门布局指令804。

经压缩专门布局指令804包括表示四个指令806-809的两个X和Y压缩字段。比较相等指令806和返回指令809的频繁使用的序列由八位X[cmp_2nop_return]压缩字段822和八位Y[cmp_2nop_return]压缩字段823表示。X[cmp_2nop_return]压缩字段822和Y[cmp_2nop_return]压缩字段823表示当解码为比较相等指令806、两个NOP指令807和808以及分支返回指令809时扩展的两个频繁使用的ISA指令的熵编码序列。

图9A说明根据本发明的实施例用于压缩程序指令的序列的过程900。在框902处,接收来自程序指令流的指令。在框904处,根据参数检查程序指令流以寻找两个或两个以上指令的序列。两个32位指令的序列的示范性参数可为包括两个指令的序列的64位样式。在另一实施例中,两个指令的序列的参数可为两个汇编器指令记忆术的序列,每一者表示ISA中的一指令。VLIW包中的此频繁使用的指令序列可由编译器(例如,图2的编译器206)或翻译工具(例如,图2的翻译工具216)识别。从程序指令流接收指令,可接着一次将两个指令与参数比较以指示是否已发现两个指令的序列。举例来说,第一参数可指示两个NOP指令的序列。第二参数可指示三个NOP指令的序列。所述参数还可指示特定指令序列的列表中的条目,例如NOP与功能指令组合的示范性列表700。参数的其它实例可依据应用确定,例如经设定以指示频繁使用的指令序列的参数,如参看图8描述。

在决策框906处,作出是否已发现两个或两个以上指令的当前序列满足参数的确定。如果两个或两个以上指令的当前序列不满足参数,那么过程900返回到框904。如果两个或两个以上指令的当前序列满足参数,那么过程900进行到框908。在框908处,用与参数相关联的选定类型的布局指令替代两个或两个以上指令的序列。在框910处,将选定类型的布局指令压缩为X压缩字段和Y压缩字段。过程900接着返回到框904。

图9B说明根据本发明的实施例用于将表示程序指令序列的压缩值解码的过程950。在框952处,接收来自压缩指令流的压缩指令。在框954处,将所接收X压缩字段和Y压缩字段解压缩例如为选定类型的布局指令。过程950重复以将每一所接收的压缩指令解压缩。在框956处,根据布局指令的解码用两个或两个以上指令替代示范性选定类型的布局指令。在框958处,执行所述两个或两个以上指令,这针对框958处接收的所述两个或两个以上指令完成过程950。

图10说明根据本发明的实施例的示范性解压缩状态图1000。解压缩状态图1000说明经压缩专门布局指令1002(例如,经压缩专门布局指令804)进入以确定经解压缩指令1005以供在处理器管线上执行的状态。图10展示包括例如主存储器222、L2高速缓冲存储器224和L1高速缓冲存储器226的存储器层级1006中的经压缩专门布局指令1002。处理器核心228包括经压缩指令解码器1008和执行管线234。获取操作1007从存储器层级1006将经压缩专门布局指令1002检索到经压缩指令解码器1008。经压缩指令解码器1008经配置以使用X[cmp_2nop_return]1003作为X索引来存取X存储器1010以获得X位样式,且使用Y[cmp_2nop_return]1004作为Y索引以存取Y存储器1011来获得Y位样式。在组合器1014中应用适当混合掩码(MM)1012,组合器1014经配置以根据MM1012将X位样式与Y位样式组合,且将获取操作1016期间的经翻译值提供到处理器核心228。举例来说,经翻译值可为32位cmp_2nop_return指令1018。解码器230可操作以在解码操作1020中解码32位cmp_2nop_return指令1018,并将经解码输出作为未经压缩VLIW包1005提供到执行管线234。未经压缩VLIW包1005包括比较相等指令1022、第一NOP指令1023、第二NOP指令1024和返回指令1025。两个NOP指令1023和1024作为解码操作1020的一部分插入,借此不需要在存储器层级1006中针对这两个指令的存储区域。ALU1执行单元1032、ALU2执行单元1033、加载/存储(LD/ST)执行单元1034和控制执行单元1035各自可配置以执行对应的指令1022-1025。

结合本文揭示的实施例描述的方法可体现在硬件与软件的组合中,所述软件为存储在非瞬时计算机可读存储媒体中且可由处理器执行的计算机可读指令的程序或序列。计算机可读指令的程序或序列可驻留在随机存取存储器(RAM)、快闪存储器、只读存储器(ROM)、电可编程只读存储器(EPROM)、硬盘、可拆卸盘、磁带、压缩光盘只读存储器(CD-ROM),或此项技术中已知或将来将提出的任何其它形式的存储媒体中。存储媒体可耦合到处理器,使得处理器可从存储媒体读取信息以及在一些情况下向存储媒体写入信息。存储媒体到处理器的耦合可为与电路实施方案一体的直接耦合,或可利用一个或一个以上接口,从而支持直接存取或使用下载技术的数据串流。

虽然在用于处理器中的说明性实施例的上下文中揭示本发明,但将认识到,所属领域的一般技术人员可依据以上论述和所附权利要求书采用广泛多种实施方案。举例来说,在替代实施例中,图2的解码器230可在系统中放置在层2(L2)高速缓冲存储器之后,其中主存储器和L2高速缓冲存储器存储经压缩指令,且层1(L1)高速缓冲存储器存储未经压缩指令。在此系统中,主存储器和L2高速缓冲存储器将还存储两个或两个以上指令的压缩序列。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号