CN103563255B - 用于可执行代码的压缩与实时解压缩的方法 - Google Patents

用于可执行代码的压缩与实时解压缩的方法 Download PDF

Info

Publication number
CN103563255B
CN103563255B CN201280026966.1A CN201280026966A CN103563255B CN 103563255 B CN103563255 B CN 103563255B CN 201280026966 A CN201280026966 A CN 201280026966A CN 103563255 B CN103563255 B CN 103563255B
Authority
CN
China
Prior art keywords
executable code
compression
uncompressed
compression blocks
block
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
Application number
CN201280026966.1A
Other languages
English (en)
Other versions
CN103563255A (zh
Inventor
J·米切姆
W·舍恩克伦
A·G·德博勒加德
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.)
Kaiwei International Co
Marvell International Ltd
Marvell Asia Pte Ltd
Original Assignee
Mawier International Trade 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 Mawier International Trade Co Ltd filed Critical Mawier International Trade Co Ltd
Publication of CN103563255A publication Critical patent/CN103563255A/zh
Application granted granted Critical
Publication of CN103563255B publication Critical patent/CN103563255B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating

Abstract

描述了与可执行代码的压缩和实时解压缩关联的系统、方法和其他实施例。根据一个实施例,一种装置包括存储数据的压缩块的存储器。该数据是用于处理元件的可执行代码。该装置还包括解压缩逻辑。该解压缩逻辑从处理元件接收针对数据的请求,并且确定存储该数据的压缩块。解压缩该压缩块以产生未压缩块。然后,该解压缩逻辑向处理元件提供所请求的数据。在一个实施例中,未压缩块具有预定的固定块大小。该预定的固定块大小基于未压缩数据的数量、期望的压缩比和期望的存取时间中的至少一个而被选择。

Description

用于可执行代码的压缩与实时解压缩的方法
相关申请的交叉引用
本专利公开要求于2011年4月11日提交的第61/474,183号美国临时申请的权益,通过引用将其全部并入于此。
背景技术
本文所提供的背景技术的描述是出于总体上呈现本公开的背景的目的。当前署名的发明人的工作(到该背景技术中所描述的工作的程度)以及在提交时可能无法以其它方式作为现有技术的衡量的说明书的各方面,既非明确地也非隐含地承认是本公开的现有技术。
微处理器和其他处理元件存取可执行代码。可执行代码因此被存储在微处理器可易于存取的存储器内。在片上系统微处理器产品中,可执行代码通常存储于动态随机存取存储器(DRAM)或同步随机存取存储器(SRAM)内。因为DRAM成本相对低并且具有高存储单元密度使得能够占用较少空间,所以DRAM很适合存储可执行代码。使用DRAM存储可执行代码的一个缺点是DRAM通常是与片上系统分离的部件,因此必需外部连接并且增加片上系统的整体尺寸。片上系统内还可以包括SRAM或DRAM,从而消除分离的部件的需要。这大大增加尺寸,并且因此大大增加片上系统的成本。
在信息理论和计算机科学中,数据压缩涉及使用比数据原始表示会使用的位更少的位来编码数据。压缩减少存储数据所需的存储空间。然而,压缩数据还可以导致数据解压缩的必要,从而需要额外的时间和处理。在解压缩期间,数据被解码以将数据返回至原始的表示。传统上,尽可能快地执行压缩和解压缩以限制资源的消耗和对用户的干扰。因此,流行的压缩算法(例如,LZ77)试图平衡压缩的速度与压缩的效力。因此,当能够高速执行时,这些压缩算法可能不能提供最大压缩。
发明内容
在一个实施例中,一种装置包括存储数据的压缩块的存储器。该数据是用于处理元件的可执行代码。所述装置还包括解压缩逻辑。该解压缩逻辑从处理元件接收对数据的请求,并且确定存储该数据的压缩块。该压缩块被解压缩以产生未压缩块。然后,解压缩逻辑向处理元件提供所请求的数据。
在一个实施例中,未压缩块具有预定的固定块大小。该预定的固定块大小基于未压缩数据的数量、期望的压缩比和期望的存取时间中的至少一个而被选择。
在另一个实施例中,一种方法包括在压缩块中存储数据。该数据是用于处理元件的可执行代码。从处理元件接收针对数据的请求。然后,确定哪个压缩块存储该数据。解压缩该压缩块以产生未压缩块。向处理元件提供所请求的数据。
在一个实施例中,未压缩块具有预定的固定块大小。为了确定哪个压缩块存储该数据,将所请求的未压缩块的地址除以该固定块大小以确定块号码,该号码标识了存储该数据的压缩块。
在另一个实施例中,选择了未压缩可执行代码的一对位。确定该一对位是否已经被预先复制到复制箱。如果该一对位尚未被预先复制到复制箱,则向复制箱复制该一对位。如果该一对位已经被预先复制到复制箱,则添加附加位以形成段。然后确定该段是否已经被预先复制到复制箱。如果该段尚未被预先复制到复制箱,则在压缩快中存储指向该复制箱中该一对位的位置的指针。如果该段已经被预先复制到复制箱,则向该段添加附加位以形成更长的段,直至更长的段被确定为尚未被预先复制。在压缩快中存储指针。该指针指向被确定为已经被预先复制到复制箱的最长的段。
附图说明
附图被并入并构成说明书的一部分,其图示了本公开的各种系统、方法以及其他实施例。应理解,图示的单元边界(例如,方框、方框组或其他形状)代表边界的一个示例。本领域的技术人员应理解,在一些示例中,可以将一个单元设计为多个单元或者可以将多个单元设计为一个单元。在一些示例中,可以将示出为另一元件的内部部件的元件实施为外部部件,反之亦然。此外,元件可能未按比例绘制。
图1图示与可执行代码的压缩和实时解压缩关联的装置的一个实施例。
图2A图示与可执行代码的压缩和实时解压缩关联的装置的一个实施例。
图2B图示正在被压缩入压缩块的可执行代码的一个实施例。
图2C图示与可执行代码的压缩和实时解压缩关联的装置的一个实施例。
图3图示与可执行代码的压缩和实时解压缩关联的方法的一个实施例。
图4A图示与可执行代码的压缩和实时解压缩关联的存储器的一个实施例。
图4B图示与可执行代码的压缩和实时解压缩关联的存储器的一个实施例。
图5图示与可执行代码的压缩关联的、有助于该可执行代码的实时解压缩的方法的一个实施例。
图6图示用于可执行代码的实时解压缩的装置的一个实施例。
具体实施方式
本文描述了与可执行代码的压缩与实时解压缩关联的系统、方法和其他实施例的示例。在一些情况中,期望在片上存储器(例如,静态随机存取存储器(SRAM)、闪速存储器)中存储可执行代码。例如,一些片上系统产品使得在片上闪速存储器中存储的代码能够得以执行。然而,可执行代码的数目可能超过片上闪速存储器的容量。与其他类型的存储器相比,闪速存储器成本相对高并且每个存储位需要的更多空间。根据本文所述的系统和方法,可执行代码被压缩以适合可用的闪速存储器,而不需要招致提供额外的片上存储器所需的成本和空间。当片上系统处理元件请求可执行代码时,压缩的可执行代码被解压缩,以便对处理元件几乎立即(例如,“实时”)可用。其他片上系统产品以压缩形式而将代码存储在闪速存储器中,然后在将代码存储在片上SRAM或DRAM中之前,下载并且解压缩代码。然后从片上SRAM或DRAM执行该代码。这需要大量的片上SRAM或DRAM,这大大增加片上系统的尺寸和成本。
当压缩的数据对应于用于处理元件的可执行代码时,执行一次压缩,而重复地并且即时(“on-the-fly”)地执行解压缩。因此,在应该快速地执行解码时,压缩可不遵循如此严格的速度约束。可以使压缩运算增加时间以最有效地压缩可执行代码。使用本文所述的、提供分层的过程以紧密地压缩可执行代码的压缩技术将增加压缩比。压缩比的增加使压缩的可执行代码能够适合有限数目的存储器,并且简化在片上存储器中存储压缩的执行代码。
当请求可执行代码用于处理时,存储可执行代码的压缩块被解压缩,并且可执行代码被实时处理。本文所述的压缩和解压缩技术简化了可执行代码的解压缩并且将其实时提供至处理元件。以这种方式,处理元件能够实时地处理可执行程序而不需额外的片上存储器或牺牲速度。本文的系统和方法在片上系统的背景下描述,此片上系统在片上闪速存储器内以压缩的形式存储可执行代码。然而,如本文所述,可执行代码或任何其他类型数据的压缩和实时解压缩,可在任何数目的处理环境内并且利用任何数目的存储器类型来执行。
参考图1,示出了装置100的一个实施例,其与可执行代码的实时解压缩关联。可执行代码作为压缩块120a-120n存储于存储器110内。可执行代码可以包括处理指令、用户数据或系统代码。当处理元件140请求可执行代码时,解压缩逻辑130选择存储可执行代码的压缩快(例如,压缩块120c)。可执行代码被单独地压缩入压缩块120。因此,选择的压缩块120c可以被解压缩逻辑130单独地解压缩,以获取请求的可执行代码。压缩块120c被发送至解压缩逻辑130以被解压缩。一旦压缩块已经被解压缩,则此解压缩的块由解压缩逻辑130返回至处理元件140。
图2A图示与可执行代码的压缩和实时解压缩关联的装置200的一个实施例。图2包括具有图1所示的压缩块120的存储器110。存储器110以参照图1所述方式的类似方式进行运算。装置200还包括压缩逻辑150,以将可执行代码压缩到压缩块120中。压缩逻辑150被配置为从非压缩块复制位,并且在对应的压缩块内存储它们。在一个实施例中,压缩逻辑执行图3中概述的压缩方法。与许多压缩算法不同,由压缩逻辑150执行的压缩方法不由时间约束所限制。虽然这使得该压缩方法比其他方法更消耗时间,但是它提供了可执行代码的紧密压缩。在存储器中存储的压缩代码的配置的一个实施例如图4中所图示。
图2B图示了被压缩到压缩块120a中的可执行代码210的一个实施例。可执行代码210包括位或字211-218。位包含数值。位211的数值为1,位212的数值为1并且位213的数值为1。位211-213用于段221。段表示已经被存储在存储器中的位的最大长度。因此,已经预先存储数值为1、1和1的位的段,如同段221,但是位211-214尚未存储。
位214的值为1并且位215的值为0。已经预先存储数值为1、随后为0的段。因此,位214和位215形成段222。位216的值为0,位217值为0并且位218值为1。在存储器内已经预先存储值为0、随后为0、随后为1的段。因此,位216-218形成段223。段221、222和223被存储为压缩块120a。
图2C图示了与可执行代码的压缩和实时解压缩关联的存储器110的一个实施例。在存储器110的被分配为复制箱115的区域中存储段。为了确定段是否预先已经被存储至存储器110,在复制箱115内搜索位的段。一旦识别段具有在复制箱中预先存储的位的最大数目,则将此段用于块压缩。
图3图示与可执行代码的压缩关联的方法的一个实施例。为了将可执行代码压缩到压缩块中,此方法包括在310将包括可执行代码的第一字和第二字的一对字进行隔离。字包括至少一个位。在320,确定该一对字是否已经被预先复制。如果该对尚未被预先复制,则该对被视为文字项。文字项被复制到复制箱用于存储。因此,在330该对被复制到复制箱,并且该方法返回至310。如果该一对字已经被预先复制,则该一对字被视为复制项。为了压缩数据,将指向可用的复制项的最长的串的指针进行存储。因此,为了确定对是否表示了可以被构造的复制项的最长的串,在340将可执行代码的下一个字添加到该对以形成三字段。
在350,确定该段是否已经被预先复制。在本示例中,确定该三字段是否是复制项。如果三字段尚未被预先复制至复制箱,则该对表示预先复制的字的最长可能的段。因此,在360,将在复制箱中回指向该对最后发生位置的指针存储至复制箱。指针包括偏移和计数。偏移指示复制箱中此前复制的对的位置。计数以字为单位指示复制项的长度。在这一示例中,复制项包括可执行代码的第一字和第二字。因此,用于复制项的计数是两个字。
相反地,如果在350,如果确定段作为复制项出现在复制箱中,则方法300返回至340以向段添加额外的位。在所述示例中,如果该三字段已经被预先复制到复制箱,则在340可执行代码中的下一个字被添加至该对以形成四字段。因此,只要确定段已经被预先复制到复制箱就添加另外的字,直至在复制箱中不再找到段。一旦在复制箱中不再找到段,就确定了该段除去最后添加的字就是最长的可能段。以这一方式,该压缩方法创建最大长度的复制项以增强得到的压缩量。复制项的最大长度可以有预定的限制。在一个实施例中,复制项的最大长度是23个字。
图4A图示存储压缩可执行代码的存储器的一个实施例。该存储器110可以是闪速存储器、四串行闪速存储器、电可擦除可编程只读存储器(EEPROM)、SRAM或其他存储设备。该存储器110将压缩可执行代码存储在压缩块中。每一个压缩块由至少一个组形成。块内组的数目随着该块的压缩性而变化。为清楚起见,用单个组示出压缩块120a。该组包含控制字节410,其具有8个位a-h并且最高到八(8)个项420a-420h。控制字节410中的每一位对应于八个项420a-420h中的一项。例如,控制字节410中的位(a)对应于项420a,控制字节中的位(b)对应于项420b等等。
在控制字节410内的每一位指示对应的项是尚未被预先复制的文字项还是已经被预先复制的复制项。例如,位(a)为数值“0”指示项420a是文字项;而“1”指示项420a是复制项。压缩块120可以通过控制字节410的半字节的霍夫曼编码被额外地压缩。半字节是字节的四位部分。控制字节的半字节可以被霍夫曼编码为包含2至5个位的字段,这样被编码的控制字节长度为4至10个位。同样地,文字项可以被霍夫曼编码。霍夫曼编码识别经常被编码的半字节。经常被编码的半字节可以被存储于基于经常被编码的半字节的出现的霍夫曼表格内,或者可以被预先编入霍夫曼表格。霍夫曼编码是用来将压缩块进一步压缩的技术的一个示例。可以使用备选的技术。
组并不对齐于字节或半字节的边界。因此,在将控制字节410、文字项和复制项编码到组中之后,组的长度将不一定为4或8的倍数。控制字节410、文字项和复制项封装在一起作为一个长串位。然而,块对齐于字节边界。因此,预定的值(诸如“0”)和位一起将被插入块的尾部以将块补充完整,以便随后的块将在字节边界上开始。
图4B图示存储压缩可执行代码的存储器的一个实施例。除了存储压缩块120,存储器110还存储关于压缩块120的数据。存储器110存储验证码430、配置字段440、压缩块大小450和块查找表460。验证码430是八位代码,其指示存储器110是否包含有效数据。
配置字段440是五位字段,其提供关于压缩过程的信息。在一个实施例中,五位配置字段440的头两位指示存储器110中存储的数据和可执行代码的数量。五位配置字段440的第三位指示是否正在使用校验字节。对校验字节进行计算以检测在块的传输或存储期间引入的错误。例如,这一字段中的“1”指示在压缩块的尾部包括校验字节。五位配置字段440的第四位指示可执行代码是以压缩形式还是非压缩形式进行存储。五位配置字段440的第五位指示是否已经采用了半字节编码。半字节编码是固定的四字节长度的编码,其可以基于可执行代码提高压缩。
压缩块大小450规定未压缩块的固定块大小。未压缩块可以具有固定大小使得压缩块能够容易地在存储器110中定位。未压缩块的大小影响压缩块的压缩比和存取时间。更小的压缩块大小可以具有更好的存取时间;但是与更大的未压缩块大小相比可能提供更差的压缩。通常,更大的未压缩块具有更长的存取时间但是更好的压缩。在一个示例中,存储器110被配置为通过计算实现预定的压缩等级所需的最小块大小来确定固定块大小。备选地,可以使用固定块大小来对存储器110进行预编程。
在一个实施例中,可以在压缩块大小450中用三位代码指示块大小。在一个示例中,三位二进制代码“000”指示将不使用压缩;“001”指示128字节的固定块大小;“010”指示256字节的固定块大小;“011”指示512字节的固定块大小;“100”指示1024字节的固定块大小;并且“101”指示2048字节的固定块大小。备选地,存储器110的压缩块大小450还可以指示使用了可变未压缩块大小。在使用可变未压缩块大小的情况下,在查找表中可以包括额外的数据以定位压缩块。
为了在存储器110中定位块,存储器包括块查找表460。块查找表460包括块偏移470、压缩标记480和奇偶项490。未压缩可执行代码被划分为N个未压缩块。可执行代码的未压缩块被分配块号码(例如,1、2、3...N),一旦未压缩块已经被压缩,其将保持该块号码。例如,压缩块(A)120a对应于未压缩块号码1并且压缩块(N)120n对应于压缩块号码N。在所述实施例中,未压缩块大小是固定的。因此,块的起始地址可以通过将未压缩数据的总数目除以未压缩块的数目来确定。未压缩块的起始地址被存储为偏移地址470。
一些未压缩块在压缩时大小增加而不是减少。将响应于压缩而增大的块以未压缩形式进行存储,而不是存储更大的压缩块。压缩标记480指示块是否以压缩形式或未压缩形式进行存储。压缩标记480被添加至偏移地址470。
奇偶项490给块查找表460提供误差检测。奇偶项490由两个位形成,其提供基于偏移地址470的奇数奇偶校验。虽然为了清楚起见,已经针对不同项给出了位的具体数目,诸如八位验证代码、五位配置字段和两位奇偶项,但是可以使用更多或更少的位。给出的位的数目是为了图示存储器110的可能的形式和功能,而不是旨在进行限制。
图5图示与可执行代码的压缩相关联的、简化该可执行代码的实时解压缩的方法的一个实施例。在510,从处理元件接收对可执行代码的请求。处理元件可以是片上系统,被配置为存取用于可执行代码的闪速存储器。
在520,该方法包括确定哪个压缩块存储请求的可执行代码。为了确定哪个压缩块存储可执行代码,对存储该可执行代码的未压缩块进行标识。通过未压缩块的块号码对该未压缩块进行标识。在块查找表中使用该块号码和块偏移来对存储可执行代码的压缩块进行标识。一旦对正确的压缩块进行标识,则在530从存储器提取压缩块。在540,解压缩逻辑将压缩块进行解压缩。在550包含可执行代码的被解压缩的块被返回至处理元件。
图6图示用于可执行代码的实时解压缩的装置的一个实施例。图6包括具有图1所示的压缩块120和处理元件140的存储器110。存储器110和处理元件140以参照图1的方式相似的方式进行操作。装置600还包括解压缩逻辑130。解压缩逻辑包括读控制器610、闪存控制器620、块缓冲器控制器630和组解压缩器640。
读控制器610接受来自处理元件140的对可执行代码的请求。可执行代码存储于存储器110中的压缩块120中。然而,来自处理元件的请求不是按照压缩块120的。相反,该请求按照可执行代码的位。例如,处理元件140可以请求32位未压缩块。读控制器610针对存储所请求的可执行代码的压缩块而向块缓冲器控制器630和/或存储器110发起请求。
块缓冲器存储器630存储解压缩的块以提供高速缓存等级,并且减少向存储器110请求的频率。虽然处理元件140可能只请求压缩块的一部分,但是可以具有大小范围128-2048字节的整个压缩块被解压缩并且存储于块缓冲器控制器630中。因此,在处理元件随后自解压缩的压缩块请求可执行代码的下一个部分的事件中,该可执行代码已经被存储于块缓冲器控制器630中。
块缓冲器控制器630可以分为两个缓冲器,每一个缓冲器都能够存储被解压缩的块。因此,块缓冲器控制器630可被配置为存储两个解压缩块。当解压缩第三块时,将块缓冲器控制器630中存储的针对可执行代码最后存取的解压缩的块进行删除,从而允许在块缓冲器控制器630中的它的位置中存储第三解压缩块。在选择在缓冲器中保留哪个解压缩块时,块缓冲器控制器630可以采用任何数目的高速缓存替换方案。备选地,如果块大小小于缓冲器的大小,则块缓冲器控制器630可以进一步划分以在每个缓冲器中存储多个解压缩块。
如果存储可执行代码的解压缩块不在块缓冲器控制器630中,则闪存控制器620接着从存储器110发起块查找表请求以确定哪个压缩块120中存储有可执行代码(参见,例如图4中的块查找表460)。一旦确定压缩块的位置,则从存储器110恢复此压缩块。闪存控制器620将恢复的块发送至处理器540以进行解压缩。然后将该存储所请求的可执行代码的解压缩块存储至块缓冲器控制器630中。闪存控制器620自块缓冲器控制器630发起针对所请求的可执行代码的请求。
解压缩器640将包含已经由读控制器610请求的并且已经在块缓冲器存储器630中存储的可执行代码的压缩块进行解压缩。解压缩器640将来自存储器110的所选择的压缩块120的数据流保持在移位寄存器中。在一个示例中,移位寄存器是24位移位寄存器。解压缩器640在位11处开始针对在移位寄存器中已经受到半字节编码的数据流进行解码,并且返回4位半字节的解码数据和左移位值。该移位值指示移位寄存器将向左移位预定的位数,诸如2至5。解压缩器640在位11处开始针对在移位寄存器中尚未受到半字节编码的数据流进行解码,并且返回5位长度值和左移位值。该移位值指示移位寄存器将被向左移位预定的位数。一旦数据流已经被解码,则将其存储于块缓冲器寄存器630中。
下文包括这里运用的所选术语的定义。该定义包括落入术语的范围内并且可以用于实施的部件的各种示例和/或形式。示例并非旨在限制。术语的单数和复数形式二者可以在定义内。
对“一个实施例”、“实施例”、“一个示例”、“示例”等的引用指示这样描述的实施例或者示例可以包括特定特征、结构、特性、性质、元件或者限制,但是并非每个实施例或者示例必然包括该特定特征、结构、特性、性质、元件或者限制。另外,反复使用短语“在一个实施例中”虽然可以、但是未必指代相同实施例。
如这里所用的“逻辑”包括被配置用于执行功能或者动作和/或引起来自另一逻辑、方法和/或系统的功能或者动作的计算机、电子硬件部件、固件、存储有指令的非瞬态计算机可读介质和/或这些部件的组合。逻辑可以包括由算法控制用来执行所公开的功能/方法中的一个或多个的微处理器、分立逻辑(例如ASIC)、模拟电路、数字电路、编程的逻辑器件、包含指令的存储器器件等。逻辑可以包括一个或者多个门、门组合或者其它电路部件。当描述多个逻辑时,可以有可能向一个物理逻辑部件中并入多个逻辑。类似地,当描述单个逻辑部件时,可以在多个物理逻辑部件之间分布该单个逻辑部件。在一些实施方式中,可以使用逻辑部件中的一个或者多个逻辑部件来实施这里描述的部件和功能中的一个或者多个部件和功能。
尽管出于简化说明的目的而示出和描述所示方法为一系列块。但是方法不受块的顺序限制,因为一些块可以按照与示出和描述的顺序不同的顺序和/或与其它块并行出现。另外,少于所有所示块可以用来实施示例性方法。可以组合块或者将块分离成多个部件。另外,附加和/或备选方法可以运用附加的未图示的块。
在具体实施方式或者权利要求中运用术语“包括(include)”的程度上,它旨在以与术语“包括(comprise)”相似的方式有包含意义,因为该术语在运用时解释为权利要求中的过渡词。
尽管已经通过描述示例来举例说明示例性系统、方法等并且尽管已经以相当多的细节描述示例,但是申请人的意图并非是约束或者以任何方式使所附权利要求的范围局限于这样的细节。当然不可能出于描述这里描述的系统、方法等的目的而描述每个可设想的部件或者方法组合。因此,公开内容不限于示出和描述的具体细节、有代表性的装置和示例性示例。因此,本申请旨在涵盖落入所附权利要求的范围内的变更、修改和变化。

Claims (20)

1.一种用于可执行代码的压缩和解压缩的装置,包括
存储器,被配置为存储可执行代码的压缩块,其中未压缩的可执行代码是用于处理元件的可执行代码;以及
解压缩逻辑,被配置为:
从所述处理元件接收针对所请求的可执行代码的请求;
确定存储与所述所请求的可执行代码对应的压缩的可执行代码的压缩块;
解压缩所述压缩块以产生未压缩块以获取未压缩形式的所述所请求的可执行代码;以及
向所述处理元件提供所述所请求的可执行代码,以用于对所述所请求的可执行代码的执行。
2.根据权利要求1所述的装置,其中所述解压缩逻辑还包括被配置为存储多个解压缩块的块缓冲器控制器,并且进一步其中当所述解压缩逻辑确定与所述压缩块对应的解压缩块存储于所述块缓冲器控制器中时,所述解压缩逻辑从所述块缓冲器控制器向所述处理元件提供所述解压缩块。
3.根据权利要求1所述的装置,还包括压缩逻辑,被配置为:
接收未压缩可执行代码;
将所述未压缩可执行代码解析成至少一个未压缩块;
将所述至少一个未压缩块压缩成压缩块;以及
在所述存储器中存储所述压缩块。
4.根据权利要求3所述的装置,其中所述至少一个未压缩块具有预定的固定块大小,其中所述预定的固定块大小基于未压缩可执行代码的数量、期望的压缩比和期望的存取时间中的至少一个而被选择。
5.根据权利要求3所述的装置,其中所述压缩逻辑还包括复制箱,并且其中所述压缩逻辑还被配置为:
在所述复制箱中存储多个段,其中段包括可执行代码的位的序列;
从所述多个段中选择给定的段;
确定在所述复制箱中是否存在所述给定的段,并且当在所述复制箱中存在所述给定的段时,用可执行代码的附加位迭代地扩充所述给定的段,并且确定在所述复制箱中是否存在所扩充的段,以确定在所述复制箱中存在的最大长度的段;以及
在所述压缩块中存储指向所述复制箱中的所述最大长度的段的位置的指针。
6.根据权利要求3所述的装置,其中压缩逻辑被配置为:
在所述至少一个未压缩块上执行初始压缩以形成部分压缩块;以及
使用第二压缩技术来执行所述部分压缩块的第二压缩以形成给定的压缩块。
7.根据权利要求3所述的装置,还包括块查找表逻辑,其针对可执行代码的每个未压缩块而存储:
来源于所述至少一个未压缩块的地址的块号码;以及
指示所述存储器中的对应的压缩块的位置的偏移值。
8.根据权利要求1所述的装置,其中所述存储器是闪速存储器。
9.一种用于可执行代码的压缩和解压缩的方法,包括:
在压缩块中存储可执行代码,其中未压缩的可执行代码是用于处理元件的可执行代码;
从所述处理元件接收针对所请求的可执行代码的请求;以及
确定存储与所述所请求的可执行代码对应的压缩的可执行代码的压缩块;
解压缩所述压缩块以产生未压缩块以获取未压缩形式的所述所请求的可执行代码;以及
向所述处理元件提供所述所请求的可执行代码以用于对所述所请求的可执行代码的执行。
10.根据权利要求9所述的方法,还包括确定在缓冲器中是否已经存储所述未压缩块,并且当在缓冲器中存储了所述未压缩块时,从所述缓冲器提供所请求的可执行代码。
11.根据权利要求9所述的方法,其中未压缩块具有预定的固定块大小,其中所述确定包括将所请求的未压缩块的地址除以所述固定块大小以确定对存储所述压缩的可执行代码的压缩块进行标识的块号码。
12.根据权利要求11所述的方法,其中所述确定包括访问查找表,其针对每个压缩块存储块号码和指示存储器中的对应的压缩块的位置的偏移值。
13.一种用于可执行代码的压缩和解压缩的方法,包括:
选择未压缩可执行代码的一对位;
确定所述一对位是否已经被预先复制到复制箱;以及
当所述一对位尚未被预先复制到所述复制箱时,向所述复制箱复制所述一对位;以及
当所述一对位已经被预先复制到所述复制箱时,添加附加位以形成段;
确定所述段是否已经被预先复制到所述复制箱;以及
当所述段尚未被预先复制到所述复制箱时,在压缩块中存储指向所述复制箱中所述一对位的位置的指针;以及
当所述段已经被预先复制时,添加附加位以形成更长的段,直至所述更长的段被确定为尚未被预先复制,以及
在所述压缩块中存储指向被确定为已经被预先复制到所述复制箱的最长的段的指针。
14.根据权利要求13所示的方法,其中所述指针标识在所述复制箱中的何处存储所述预先存储的对或最长的段的最后发生。
15.根据权利要求13所示的方法,还包括使用霍夫曼编码来执行所述压缩块的压缩。
16.根据权利要求15所示的方法,其中使用预先编程的霍夫曼表来执行所述霍夫曼编码。
17.根据权利要求15所示的方法,还包括:
在所述压缩块上执行半字节编码;
对频繁编码的半字节进行标识;以及
至少部分地基于所述频繁编码的半字节而生成霍夫曼表。
18.根据权利要求13所述的方法,还包括:
接收所述可执行代码;以及
将所述可执行代码解析成未压缩块。
19.根据权利要求18所述的方法,其中所述未压缩块具有预定的固定块大小,其中所述预定的固定块大小基于可执行代码的数量、期望的压缩比和期望的存取时间中的至少一个而被选择。
20.根据权利要求18所述的方法,其中所述未压缩块具有可变块大小。
CN201280026966.1A 2011-04-11 2012-03-23 用于可执行代码的压缩与实时解压缩的方法 Expired - Fee Related CN103563255B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201161474183P 2011-04-11 2011-04-11
US61/474,183 2011-04-11
PCT/US2012/030345 WO2012141871A1 (en) 2011-04-11 2012-03-23 Method for compression and real-time decompression of executable code

Publications (2)

Publication Number Publication Date
CN103563255A CN103563255A (zh) 2014-02-05
CN103563255B true CN103563255B (zh) 2017-07-14

Family

ID=46045092

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201280026966.1A Expired - Fee Related CN103563255B (zh) 2011-04-11 2012-03-23 用于可执行代码的压缩与实时解压缩的方法

Country Status (4)

Country Link
US (1) US8674858B2 (zh)
EP (1) EP2697906A1 (zh)
CN (1) CN103563255B (zh)
WO (1) WO2012141871A1 (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9378560B2 (en) * 2011-06-17 2016-06-28 Advanced Micro Devices, Inc. Real time on-chip texture decompression using shader processors
US9166620B2 (en) * 2012-09-26 2015-10-20 Qualcomm Incorporated Method and apparatus for a memory based packet compression encoding
EP3026551A1 (en) * 2014-11-26 2016-06-01 Giesecke & Devrient GmbH Methods and devices for compressing byte code for smart cards
CN108702160B (zh) * 2016-01-29 2022-05-17 零点科技公司 用于压缩和解压缩数据的方法、设备和系统
CN106909398B (zh) * 2017-03-10 2020-10-16 深圳创维-Rgb电子有限公司 一种可执行文件的压缩方法及装置
US10498865B2 (en) * 2017-12-12 2019-12-03 Intel Corporation Security-oriented compression
CN112835975B (zh) * 2020-06-05 2023-09-29 支付宝(杭州)信息技术有限公司 一种在区块链中部署、更新、调用智能合约的方法
CN113923262A (zh) * 2021-10-28 2022-01-11 四川诺成科技有限公司 基于缓存的数据通信实时动态压缩方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101326492A (zh) * 2005-10-06 2008-12-17 雷德本德有限公司 用于更新包括压缩版本的内容的方法和系统

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6199126B1 (en) * 1997-09-23 2001-03-06 International Business Machines Corporation Processor transparent on-the-fly instruction stream decompression
US7886093B1 (en) * 2003-07-31 2011-02-08 Hewlett-Packard Development Company, L.P. Electronic device network supporting compression and decompression in electronic devices
US20070016693A1 (en) * 2005-06-30 2007-01-18 Advanced Micro Devices, Inc. Decompression technique for generating software image
TWI320636B (en) * 2005-11-10 2010-02-11 Realtek Semiconductor Corp Method for compressing instruction code
EP1830295A1 (fr) * 2006-03-01 2007-09-05 Ingenico SA Procédé de vérification de la conformité du contenu logique d'un appareil informatique à un contenu de référence
JP4944686B2 (ja) * 2007-06-28 2012-06-06 ソニーモバイルコミュニケーションズ株式会社 ソフトウェア更新方法および携帯端末装置
DE102007045987A1 (de) * 2007-09-26 2009-04-02 Continental Automotive Gmbh Verfahren zum Betreiben eines mobilen Datenverarbeitungssystems und mobiles Datenverarbeitungssystem
TWI357560B (en) * 2008-03-19 2012-02-01 Teco Image Sys Co Ltd Start-up method and apparatus for image processing

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101326492A (zh) * 2005-10-06 2008-12-17 雷德本德有限公司 用于更新包括压缩版本的内容的方法和系统

Also Published As

Publication number Publication date
CN103563255A (zh) 2014-02-05
US8674858B2 (en) 2014-03-18
US20120256771A1 (en) 2012-10-11
EP2697906A1 (en) 2014-02-19
WO2012141871A1 (en) 2012-10-18

Similar Documents

Publication Publication Date Title
CN103563255B (zh) 用于可执行代码的压缩与实时解压缩的方法
KR102381944B1 (ko) 주파수 압축과 텍스처 파이프라인
KR101727267B1 (ko) 메모리 디바이스에서 제어 데이터의 오류 정정 시스템 및 방법
CN101095284B (zh) 用于有选择地压缩和解压缩数据的设备与方法
CN103326732A (zh) 压缩数据的方法、解压数据的方法、编码器和解码器
WO2015200760A1 (en) Parllel decompressing of executables for accelerating the launch and performance.
US8407378B2 (en) High-speed inline data compression inline with an eight byte data path
CN102541747A (zh) 存储器系统中的数据压缩和编码
EP3154202B1 (en) Encoding program, encoding method, encoding device, decoding program, decoding method, and decoding device
CN104393878A (zh) 用于纠正在编码比特序列中的至少单比特错误的设备和方法
CN108886367A (zh) 用于压缩和解压缩数据的方法、设备和系统
WO2017007550A1 (en) Systems and methods for providing non-power-of-two flash cell mapping
US20170220412A1 (en) Systems and methods for providing error code detection using non-power-of-two flash cell mapping
US10163371B1 (en) Rotating bit values based on a data structure while generating a large, non-compressible data stream
US11424761B2 (en) Multiple symbol decoder
CN110209598B (zh) 一种高速缓冲存储器、一种数据读写控制方法及系统
US7439887B2 (en) Method and apparatus for GIF decompression using fixed-size codeword table
CN116248129A (zh) 一种容错的数据分段压缩方法、恢复方法、设备及系统
US9998142B1 (en) Techniques for invariant-reference compression
US8984024B2 (en) Manipulating the actual or effective window size in a data-dependant variable-length sub-block parser
US9787323B1 (en) Huffman tree decompression
JP5504885B2 (ja) 画像処理装置および画像処理方法
US20210281276A1 (en) Encoded block format
JP7475319B2 (ja) ストレージシステム及びストレージシステムにおけるデータ処理方法
US11509328B2 (en) Computer data compression utilizing multiple symbol alphabets and dynamic binding of symbol alphabets

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20200426

Address after: Ford street, Grand Cayman, Cayman Islands

Patentee after: Kaiwei international Co.

Address before: Hamilton, Bermuda

Patentee before: Marvell International Ltd.

Effective date of registration: 20200426

Address after: Singapore City

Patentee after: Marvell Asia Pte. Ltd.

Address before: Ford street, Grand Cayman, Cayman Islands

Patentee before: Kaiwei international Co.

Effective date of registration: 20200426

Address after: Hamilton, Bermuda

Patentee after: Marvell International Ltd.

Address before: Babado J San Mega Le

Patentee before: MARVELL WORLD TRADE Ltd.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20170714