CN108139972B - 用于管理硬件辅助数据压缩中的存储器碎片的方法和设备 - Google Patents
用于管理硬件辅助数据压缩中的存储器碎片的方法和设备 Download PDFInfo
- Publication number
- CN108139972B CN108139972B CN201780003237.7A CN201780003237A CN108139972B CN 108139972 B CN108139972 B CN 108139972B CN 201780003237 A CN201780003237 A CN 201780003237A CN 108139972 B CN108139972 B CN 108139972B
- Authority
- CN
- China
- Prior art keywords
- data
- compression
- compression hardware
- buffers
- compressed data
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- 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
-
- 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/60—General implementation details not specific to a particular type of compression
- H03M7/6011—Encoder aspects
-
- 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/60—General implementation details not specific to a particular type of compression
- H03M7/6058—Saving memory space in the encoder or decoder
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
- G06F2212/1044—Space efficiency improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/40—Specific encoding of data in memory or cache
- G06F2212/401—Compressed data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Memory System (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
用于管理物理计算机存储器中的数据的硬件辅助压缩中的碎片的系统、设备和方法,其可导致减少的内部碎片。一种示例计算机实现的方法包括:由存储器管理程序向压缩硬件提供压缩命令,该压缩命令包括待压缩数据在物理计算机存储器中的地址和用于存储压缩数据的至少两个可用缓冲区的列表;由压缩硬件使用包括在压缩命令中的地址来检索未压缩数据;对未压缩数据进行压缩;以及由压缩硬件基于如果压缩数据被存储在至少两个缓冲区中则将剩余的空间量来从至少两个可用缓冲区的列表中选择至少两个缓冲区以供存储压缩数据,其中至少两个选择的缓冲区中的每一个在大小上不同于所选择的缓冲区中的至少另一个。
Description
相关申请的交叉引用
本申请要求2016年2月23日提交的美国临时专利申请序列号62/298,83的优先权,其全部公开以引用的方式并入到本文中。
背景技术
数据压缩是优化动态随机存取存储器(DRAM)的使用的有效方式,并且使用专用压缩硬件来卸载压缩任务比使用在处理器(例如中央处理单元(CPU))上运行的软件(例如存储器管理程序)更节能。CPU通常不一次访问所有物理计算机存储器,并且不同的物理计算机存储器块通常与不同的任务相关联。操作系统通常将管理压缩物理计算机存储器中的数据的这个过程,并且使用专用压缩硬件压缩物理计算机存储器中的数据将允许在时间和能量二者方面更有效率地使用该技术。
在压缩数据之前,很难知道需要多少空间来存储压缩数据。当压缩硬件用于压缩物理计算机存储器中的数据时,压缩硬件知道压缩后的压缩数据的大小,并且因此可以确定压缩数据应当存储在哪里。当用于存储压缩数据的空间大于所需空间时,就会发生碎片。发生的任何碎片都会降低数据压缩的有效性。
发明内容
本发明内容以简化形式介绍系列概念以提供对本公开的一些方面的基本理解。本发明内容不是本公开的广泛概述,并且不旨在标识本公开的关键或至关重要的元素或描绘本公开的范围。本发明内容仅呈现本公开的一些概念作为以下提供的具体实施方式的序言。
本公开大体上涉及用于压缩物理计算机存储器中的数据的方法、设备和系统。更具体地,本公开的方面涉及管理物理计算机存储器中的数据的硬件辅助压缩的碎片。
在至少一个实施例中,一种计算机实现的方法,包括:在压缩硬件处接收压缩命令,压缩命令包括待压缩数据在物理计算机存储器中的地址和用于存储由压缩硬件输出的压缩数据的可用缓冲区的标识,可用缓冲区具有不同大小;使用所接收的地址从物理计算机存储器检索未压缩数据;由压缩硬件确定压缩数据的大小;由压缩硬件选择在所接收的压缩命令中标识的可用缓冲区中的一个或多个可用缓冲区以在其中存储压缩数据;以及由压缩硬件将与未压缩数据、压缩数据和/或可用缓冲区相关联的信息传送到存储器管理程序。
根据其它方面,在至少一个实施例中,计算机实现的方法还包括由压缩硬件将从物理计算机存储器检索的未压缩数据压缩成压缩数据,其中,基于压缩数据的大小来确定用于存储压缩数据的缓冲区大小。
根据计算机实现的方法的其他方面,在至少一个实施例中,压缩硬件基于在压缩数据被存储在一个或多个可用缓冲区中之后将保留在一个或多个可用缓冲区中的未使用空间的量来选择可用缓冲区中的一个或多个以在其中存储压缩数据。
根据计算机实现的方法的其他方面,在至少一个实施例中,一个或多个选择的缓冲区在大小上不同于可用缓冲区中的至少一个其他缓冲区。
根据计算机实现的方法的其他方面,在至少一个实施例中,与未压缩数据、压缩数据和/或可用缓冲区相关联的信息包括以下中的至少一个:压缩数据的大小、压缩数据的状态、未压缩数据的状态、或者可用缓冲区中的哪些被选择用于存储压缩数据。
根据计算机实现的方法的其他方面,在至少一个实施例中,压缩数据的状态包括以下中的至少一个:从物理计算机存储器检索的数据是可压缩的,压缩数据被存储在一个或多个选择的缓冲区中,压缩数据被复制到一个或多个选择的缓冲区,或者压缩数据没有被复制到一个或多个选择的缓冲区。
根据计算机实现的方法的其他方面,在至少一个实施例中,未压缩数据的状态包括以下中的至少一个:未压缩数据是不可压缩的,未压缩数据被复制到单个目的地缓冲区,或者未压缩数据被复制并在多个目的地缓冲区之间分割。
根据其他方面,在至少一个实施例中,计算机实现的方法还包括:响应于使用接收到的地址从物理计算机存储器检索未压缩数据,确定未压缩数据是不可压缩的;以及将未压缩数据存储到一个或多个目的地缓冲区。
根据计算机实现的方法的其他方面,在至少一个实施例中,基于压缩数据的大小大于阈值量来确定未压缩数据是不可压缩的。
根据其它方面,在至少一个实施例中,计算机实现的方法还包括由压缩硬件选择在所接收的压缩命令中标识的可用缓冲区中的至少两个可用缓冲区以在其中存储压缩数据,其中,所选择的缓冲区中的每一个在大小上不同于所选择的缓冲区中的至少另一个。
根据其它方面,在至少一个实施例中,计算机实现的方法还包括:由压缩硬件基于使在压缩数据被存储在至少两个可用缓冲区中之后将保留在至少两个可用缓冲区中的未使用空间的量最小化,选择可用缓冲区的至少两个可用缓冲区,其中,至少两个可用缓冲区中的每一个在大小上不同于至少两个可用缓冲区中的至少另一个。
根据其它方面,在至少一个实施例中,计算机实现的方法还包括由压缩硬件响应于来自存储器管理程序的解压缩命令而解压缩所选择的至少两个可用缓冲区。
在至少一个实施例中,一种用于解压缩存储在物理计算机存储器中的至少两个缓冲区中的压缩数据的计算机实现的方法,计算机实现的方法包括:在压缩硬件处接收来自在除压缩硬件之外的处理器上执行的存储器管理程序的解压缩命令,其中,解压缩命令包括至少两个缓冲区的标识和物理计算机存储器中用于存储由压缩硬件输出的解压缩数据的目的地地址,并且其中,至少两个缓冲区中的每一个在大小上不同于至少两个缓冲区中的至少另一个;由压缩硬件通过解压缩存储在至少两个缓冲区中的压缩数据来输出解压缩数据;将压缩硬件输出的解压缩数据存储在物理计算机存储器中的目的地地址处;以及由压缩硬件向存储器管理程序传送与解压缩数据相关联的信息。
根据计算机实现的方法的其他方面,在至少一个实施例中,由压缩硬件向存储器管理程序传送与解压缩数据相关联的信息包括以下中的至少一个:通知已完成解压缩、通知解压缩中的错误、更新寄存器中的解压缩状态、生成中断、或者将解压缩状态写入物理计算机存储器中的地址。
在至少一个实施例中,一种设备,包括:处理器;物理计算机存储器;与处理器通信的压缩硬件;以及存储器管理程序,其向压缩硬件提供压缩命令,压缩命令包括待压缩数据在物理计算机存储器中的地址以及用于存储由压缩硬件输出的压缩数据的多个可用缓冲区的列表,缓冲区具有不同大小,压缩硬件被配置为:使用压缩命令中包括的地址检索未压缩数据;将未压缩数据压缩成压缩数据;以及从可用缓冲区的列表中选择用于存储压缩数据的至少两个缓冲区,其中,从列表中选择的至少两个缓冲区中的每一个在大小上不同于未从列表中选择的缓冲区中的至少另一个。
根据该设备的其他方面,在至少一个实施例中,基于如果压缩数据存储在从列表中选择的至少两个缓冲区中则将保留在从列表中选择的至少两个缓冲区中的未使用空间的量,选择从列表中选择的至少两个缓冲区。
根据设备的其他方面,在至少一个实施例中,压缩硬件被配置为向存储器管理程序传送压缩数据的大小、压缩数据的状态、未压缩数据的状态、和/或从可用缓冲区列表中选择哪些缓冲区以用于存储压缩数据。
根据该设备的其他方面,在至少一个实施例中,存储器管理程序向压缩硬件提供解压缩命令,解压缩命令包括:物理计算机存储器中的用于存储由压缩硬件输出的解压缩数据的目的地地址;以及物理计算机存储器中的至少两个数据缓冲区的列表,其中压缩数据存储在至少两个数据缓冲区中,并且其中,至少两个数据缓冲区中的每一个在大小上不同于至少两个数据缓冲区中的至少另一个;以及其中,压缩硬件被配置为:通过解压缩存储在至少两个数据缓冲区中的压缩数据来输出解压缩数据;将解压缩数据存储在物理计算机存储器中的目的地地址;以及向存储器管理程序传送与解压缩数据相关联的信息。
根据设备的其他方面,在至少一个实施例中,压缩硬件被配置为响应于解压缩操作而向存储器管理程序传送完成的解压缩的信息、解压缩中的错误的信息、解压缩状态中的更新和/或中断。
根据设备的其他方面,在至少一个实施例中,基于使在压缩数据被存储在从列表中选择的至少两个缓冲区中之后将保留在从列表中选择的至少两个缓冲区中的未使用空间的量最小化,选择从列表中选择的至少两个缓冲区。
应注意,本文所公开的一些或所有处理器和存储器系统的实施例还可被配置为执行上文所公开的一些或所有方法实施例。此外,上面公开的一些或所有方法的实施例也可以表示为实施诸如光或磁存储器的非瞬态计算机可读存储介质上的指令。
根据下面给出的具体实施方式,本公开的方法、设备和系统的进一步的适用范围将变得显而易见。然而,具体实施方式和具体示例虽然指示了方法、设备和系统的实施例,但仅作为说明给出,因为在此公开的概念的精神和范围内的各种改变和修改对于本领域技术人员从该详细描述中将变得显而易见。
附图说明
通过结合所附权利要求书和附图研究以下具体实施方式,本公开的这些和其它目的、特征和特性对于本领域技术人员将变得更加明显,所有这些权利要求和附图都构成本说明书的一部分。在附图中:
图1是示出根据一个或多个实施例的,用于管理物理计算机存储器中的数据的硬件辅助压缩的碎片的系统中的示例数据流的数据流图。
图1B是包括根据示例实施例的压缩硬件作出的选择的图。
图1C是包括根据示例实施例的压缩硬件作出的选择的图。
图2是根据一个或多个实施例的,用于在压缩操作期间在存储器管理程序与压缩硬件之间通信的示例描述符FIFO队列。
图3是示出根据一个或多个实施例的,用于在物理计算机存储器中的数据压缩期间管理碎片的示例过程的流程图。
图4是示出根据一个或多个实施例的,用于物理计算机存储器中的数据的硬件辅助压缩的示例过程的流程图。
图5是示出根据一个或多个实施例的,用于管理物理计算机存储器中的数据的硬件辅助压缩中的碎片的示例计算设备的框图。
图6是根据示例实施例的,与压缩硬件接收的压缩命令相关的计算机实现的方法的流程图。
图7是根据示例实施例的,用于解压缩存储在物理计算机存储器中的至少两个缓冲区中的压缩数据的计算机实现的方法的流程图。
图8是根据示例实施例的,与压缩硬件接收的压缩命令相关的计算机实现的方法的流程图。
图9是根据示例实施例的,与压缩硬件接收的压缩命令相关的计算机实现的方法的流程图。
这里提供的标题仅是为了方便,并不一定影响本公开中要求保护的内容的范围或含义。
在附图中,相同的附图标记和任何缩写标识具有相同或相似结构或功能的元件或动作,以供容易理解和方便。将在以下详细描述的过程中详细描述附图。
具体实施例
现在将描述本公开的方法、设备和系统的各个示例和实施例。下面的描述提供了详细的细节,以便彻底理解和实现对这些示例的描述。然而,相关领域的技术人员将理解,可以在没有许多这些细节的情况下实践本文所述的一个或多个实施例。类似地,相关领域的技术人员还将理解,本公开的一个或多个实施例可包括本文未详细描述的其它特征。此外,一些公知的结构或功能可以不在下面详细示出或描述,以避免不必要地模糊相关描述。
许多现有的物理计算机存储器中的数据压缩方法完全基于软件。虽然一些现有的方法是基于硬件的,但是这样的方法通常是简单的,并且试图通过对其中存储压缩数据的一个或多个可用缓冲区的大小使用固定比率(例如,页面大小的一半)来避免碎片问题。如果在存储之后存在大量未使用的空间,则这显著地限制了从物理计算机存储器中的数据压缩获得的空间量,所述大量未使用的空间是在压缩数据未填充分配给缓冲区的固定空间量时产生的。如这里所使用的,空间指代存储器存储容量,其例如可以以字节来测量。未使用的空间可用于存储,使用的空间包含存储的数据。
本公开的实施例涉及用于管理物理计算机存储器中的数据的硬件辅助压缩的碎片的方法、设备和系统。如下面将更详细描述的,本公开的方法、设备和系统提供了一种压缩硬件和存储器管理程序一起工作的方式,以最小化存储器碎片、最小化硬件复杂度并允许压缩硬件在减少存储器管理程序的参与的情况下操作。
如上所述,很难提前知道物理计算机存储器中的数据的特定块(例如,部分、量等)是否可以被压缩,以及如果可以,则可以压缩数据到什么程度。但是,在压缩完成之前的某个时间点,必须决定特定压缩数据块将占用多少空间。根据本公开的一个或多个实施例,提供压缩硬件(为了简明起见,有时可被称为“存储器压缩卸载引擎”或简单地称为“引擎”或“硬件”),由此压缩硬件被设计成非常快速和有效率,因为除了其它特征之外,与相对应的存储器管理程序具有有限的交互。存储器管理程序可以是软件或固件的形式,并且可以是操作系统的模块。图5和相关公开包括关于示例实施例中压缩硬件的实施方式的附加细节。
物理计算机存储器中的数据的硬件辅助压缩的简化示例可以如下:(i)存储器管理程序指令压缩硬件压缩物理计算机存储器中的地址中的数据;(ii)压缩硬件压缩数据,并将压缩数据的大小通知存储器管理程序;(iii)存储器管理程序基于关于压缩数据的大小的信息,决定存储压缩数据的位置(例如,在物理计算机存储器中的位置);以及(iv)存储器管理程序指令压缩硬件将压缩数据存储在所决定的位置。从该示例中,很容易看出,在这样的现有方法下,鉴于存储器管理程序与压缩硬件之间的大量交互,通信开销和相关联的时延变得相当昂贵。
允许压缩硬件做出更多决策将提供更快的接口。困难在于管理系统中所有物理计算机存储器的不是压缩硬件。因此,根据本公开的一个或多个实施例,可以给压缩硬件一些备选(choice),并且允许压缩硬件从所提供的备选中选出一个或多个最优或近最优缓冲区的集合。根据在此描述的一个或多个实施例,压缩硬件可以确定最优或近最优选择涉及多个缓冲区。例如,为了使压缩数据适合,同时还最小化或近最小化任何丢失/浪费/未使用的空间,压缩硬件可以选择存储器管理程序给出(例如,呈现或提供)的缓冲区备选中的多于一个备选。例如,压缩硬件可以确定使用更小缓冲区的组合比使用一个大缓冲区更有利,该大缓冲区可能不够大以容纳压缩数据,或者可能比所必需的更大。
一旦压缩硬件已经选择(例如,确定、选取、决定等)可用缓冲区中的一个或多个,压缩硬件然后可以将其选择通知存储器管理程序。应当注意,压缩硬件可以在压缩硬件压缩缓冲区之前或者在压缩完成之后的时间通知存储器管理程序所选缓冲区。即,虽然压缩硬件可能没有确定地知道压缩前的压缩数据的大小,但是它可能能够估计或推断压缩前的压缩数据的大小。存储器管理程序可以在压缩之前或之后从压缩硬件请求这样的信息。
例如,根据一个或多个实施例,本文描述的方法、设备和系统被设计成使得存储器管理程序使用压缩硬件异步压缩物理计算机存储器(例如页面)中的固定大小的数据块,并且试图最小化或近似最小化碎片并实现有利的压缩比或有效压缩比。本公开的方法、设备和系统被设计成使得压缩硬件可以使得压缩数据快速移动到一个或多个新位置,而无需来自存储器管理程序的任何直接辅助。因此,压缩硬件可以在没有任何延迟的情况下移动到下一个未压缩数据,从而最小化碎片,同时仍然保持高速压缩。
图1示出了用于管理物理计算机存储器中的数据的硬件辅助压缩的碎片的系统100中的示例数据流。根据这里描述的一个或多个实施例,该系统可以包括存储器管理程序110(例如,软件、固件或操作系统的一部分)、压缩硬件120、一个或多个压缩硬件缓冲区130和物理计算机存储器140(例如,主存储器或随机存取存储器(RAM))。压缩硬件缓冲区130可以在压缩硬件的内部或外部,这取决于实施方式中的偏好和设计因素。在一个或多个其他实施例中,示例系统100可以包括除了上述示例组件之外或替代上述示例组件的其他组件。类似地,用于管理物理计算机存储器140中的数据的硬件辅助压缩的碎片的系统100可以包括比所示出的示例组件的数目更少的组件,或者可以组合所示出的示例组件中的一个或多个,而不背离如本文所述的系统的操作、特征或功能。
根据至少一个实施例,存储器管理程序110可以向压缩硬件120提供一个或多个压缩命令(145),包括待压缩数据在物理计算机存储器140中的地址和物理计算机存储器140中的、可能具有不同大小的可用缓冲区的列表。压缩硬件120从存储器管理程序110接收一个或多个压缩命令(145),使用待压缩数据在物理计算机存储器140中的地址从物理计算机存储器140接收(例如,检索或以其他方式获得)未压缩数据(150)(例如,页面),并将接收或提供的数据压缩(155)到一个或多个压缩硬件缓冲区130中。然后,压缩硬件(120)知道用于压缩数据155的最小可能缓冲区大小。这样,压缩硬件120检查在来自存储器管理程序110的压缩命令(145)中提供的可用缓冲区的列表,选择这些可用缓冲区中的一个或多个以存储压缩数据(160、165、170),并且通知175存储器管理程序110哪些缓冲区被选择。存储器管理程序110然后处理完结(completion)。完结可以是由压缩硬件120写入并由存储器管理程序110读取以指示压缩命令145已完成的数据,该完结包括例如最终状态(例如,压缩并存储在缓冲区中、复制到缓冲区中、压缩但未复制到缓冲区等),使用了哪些缓冲区(如果有),最终压缩大小以及任何其他相关信息。在识别由压缩硬件120选择(175)的缓冲区之后,存储器管理程序110可以确定哪些缓冲区仍然未使用。存储器管理程序110可以在发送到压缩硬件120的后续压缩命令145上再次使用未使用的缓冲区。
由于压缩的性质,上述示例过程不同于其他类型的卸载操作(例如,联网或加密)。因为物理计算机存储器140中的数据的最终压缩大小事先是未知的,所以在该过程中存在额外的判定点,本公开的方法、设备和系统在压缩硬件120与存储器管理程序110之间有效率地分割该额外的判定点。
根据本文描述的一个或多个实施例,存储器管理程序110通过提供不同大小的多个缓冲区并允许压缩硬件120将压缩数据155的内容分割到多个缓冲区来帮助相对应的压缩硬件120做出更有效率的决策。在许多其他优点中,这样的方法允许更有效率地打包数据,从而减少由于碎片而损失的空间。本公开的方法、设备和系统可以由于较少浪费系统中的空间以及更简单和更快的硬件设计而实现改进的有效压缩比。使存储器管理程序110负责识别可用缓冲区(例如,提供空闲缓冲区的列表),其中发送到压缩硬件120的压缩命令145允许压缩硬件120的减小的大小和复杂性,这是因为压缩硬件120不需要管理具有不同大小的可能大的空闲缓冲区池,并且也不需要应对最终碎片整理问题。
如下文将更详细描述的,本公开提供了一种供压缩硬件120加速物理计算机存储器140中的数据的压缩和解压缩的方法。根据至少一个实施例,压缩硬件120被设计成在例如4千字节未压缩页面上操作。在这里提供的方法、设备和系统中,存储器管理程序110可以负责管理物理计算机存储器140的分配和碎片。
在一个示例实施例中,描述符可以包含压缩命令145或解压缩命令。描述符可以是队列中的元素。除了存储压缩数据155的可用缓冲区列表之外,压缩命令145还可以包括待压缩的数据在物理计算机存储器140中的地址。类似地,解压缩命令可以包括待解压缩的数据在物理计算机存储器140中的一个或多个地址和物理计算机存储器140中存储解压缩数据的目的地地址。
根据本公开的至少一个实施例,存储器管理程序110将命令放入描述符先进先出(FIFO)200队列中。(见图2和下面的相关讨论。)压缩硬件120消费来自描述符FIFO 200的压缩命令145,处理它们并将结果写回到同一描述符。压缩硬件120可基于例如寄存器中的位的值在描述符完结时产生中断。一旦接收到中断,存储器管理程序110就可以处理来自若干描述符的结果,并将描述符返回到闲置(例如,“IDLE”)状态。即使可以仅提供一个描述符FIFO 200队列,压缩硬件120也可以具有足以并行处理多个压缩命令145以实现期望带宽的电路。
根据在此描述的至少一个实施例,随着每个压缩命令145被发送到压缩硬件120,存储器管理程序110提供多个(例如,四个、六个、八个等)可用(例如,目标、空闲等)缓冲区,其中可以写入压缩数据。例如,每个这样的可用缓冲区可以是从64字节到4千字节的二次幂大小,或者是一些其它的大小范围和/或变化。
压缩硬件120将未压缩数据150压缩到一个或多个压缩硬件缓冲区130中,并确定需要多少空间来存储压缩数据155。根据实施方式,如果压缩数据155的大小例如大于3千字节,则可认为未压缩数据150不可压缩,并且可任选地将未压缩数据150复制到4千字节目的地缓冲区。否则,压缩硬件120选择由寻求最小化或近似最小化未使用空间的存储器管理程序110所提供(例如,识别、列出等)的可用缓冲区中的一个或多个,并且压缩数据155被写入所选缓冲区。例如,当压缩硬件120选择可用缓冲区中的两个时,压缩数据155的存储可以以两个缓冲区中的较大者开始,并且可以以较小缓冲区结束。压缩硬件120不必重写更小缓冲区的未使用部分。相反,压缩硬件120可以指示压缩数据155的大小以及当压缩硬件120将结果写回到描述符时选择了哪些可用缓冲区。
图1B是包括根据示例实施例的压缩硬件120作出的选择的图。图1B示出了两个示例情形,其中8千字节的未压缩数据150被压缩为2.1千字节的压缩数据155。在第一情形中,存储器管理程序110向压缩硬件120提供两个可用缓冲区1010和1020的列表。在此第一情形下,缓冲区1010和1020都是2千字节。压缩硬件120将选择缓冲区1010和缓冲区1020两者来存储压缩数据155,将压缩数据155分成两个块,一个2千字节块存储在缓冲区1010中并且另一个0.1千字节块存储在缓冲区1020中。因此,在该第一情形中,在缓冲区1020中剩余1.9千字节的未使用空间1030。该未使用空间是内部碎片1040的示例。在此第一情形下,比率是用于压缩数据155的2.1千字节空间比所选缓冲区中的4千字节空间。
在第二情形中,存储器管理程序110向压缩硬件120提供三个可用缓冲区1060、1070和1080的列表。在该第二情形中,缓冲区1060、1070和1080分别为1千字节、2千字节和4千字节。压缩硬件120将选择1050缓冲区1060和缓冲区1070二者来存储压缩数据155,将压缩数据155分成两个块,一个2千字节块存储在缓冲区1070中并且另一个0.1千字节块存储在缓冲区1060中。因此,在该第二情形中,在缓冲区1060中剩余0.9千字节的未使用空间1090。该未使用空间是内部碎片1095的示例。在此第二情形下,比率是用于压缩数据155的2.1千字节空间比所选缓冲区中的3千字节空间。
图1B中的两种情形仅仅是两个示例。在涉及固定缓冲区大小的情形中,其中由存储器管理程序110提供给压缩硬件120的所有可用缓冲区具有相同的大小,其中在所选缓冲区的总容量超过压缩数据155的大小的情况下对可用缓冲区的任何选择都可以足够。然而,在涉及不同大小的多个可用缓冲区的情形下,压缩硬件120可基于存储压缩数据155之后可用缓冲区中剩余的空间量来从可用缓冲区列表中选择。因此,在存储器管理程序110向压缩硬件120提供不同大小的多个可用缓冲区的列表的情况下,相对于存储器管理程序110向压缩硬件120提供全都具有相同大小的可用缓冲区的列表的情形,可以减少内部碎片,并且可以改进物理计算机存储器140中的可用空间的管理。
在至少一个实施例中,仅选择可用缓冲区中的一个就可能足够。图1C是包括根据示例实施例的压缩硬件120作出的选择的图。图1C示出了两个示例情形,其中8千字节的未压缩数据150被压缩为1000字节的压缩数据155。在第一情形中,存储器管理程序110向压缩硬件120提供两个可用缓冲区1110和1120的列表。在此第一情形下,缓冲区1110和1120二者都是2千字节。压缩硬件120只需要选择一个缓冲区,并且可以选择缓冲区1110来存储压缩数据155,而不需要将压缩数据155分割成块。因此,在此第一情形中,缓冲区1110中剩余1048字节的未使用空间。该未使用空间是内部碎片1140的示例。在此第一情形下,比率是用于压缩数据155的1000字节的空间比在所选缓冲区中2048字节的空间。
在第二情形中,存储器管理程序110向压缩硬件120提供三个可用缓冲区1160、1170和1180的列表。在该第二情形中,缓冲区1160、1170和1180分别是1千字节、2千字节和4千字节。压缩硬件120将选择1150缓冲区1160来存储压缩数据155,并且不需要将压缩数据155分割成块。因此,在该第二情形中,在缓冲区1160中剩余24字节的未使用空间。该未使用空间是内部碎片1195的示例。在该第二情形下,比率是用于压缩数据155的1000字节空间比所选缓冲区中的1024字节空间。在这种情形下,例如通过从可用缓冲区列表中选择大小大于或等于压缩数据的大小的最小缓冲区来减少和最小化内部碎片。
图1C中的两个情形仅仅是两个示例。在涉及不同大小的多个可用缓冲区的情形下,压缩硬件120可基于存储压缩数据155之后可用缓冲区中剩余的空间量来从可用缓冲区列表中选择。因此,在存储器管理程序110向压缩硬件120提供不同大小的多个可用缓冲区的列表的情形下,相对于存储器管理程序110向压缩硬件120提供全都具有相同大小的可用缓冲区的列表的情形,可以减少内部碎片,并且可以改进物理计算机存储器140中的可用空间的管理。
根据本公开的一个或多个实施例,在压缩操作期间存储器管理程序110与压缩硬件120之间的通信可以通过循环描述符FIFO(先进先出)200队列来完成。描述符FIFO 200可以在物理计算机存储器140中。图2示出了这样的循环描述符FIFO 200的示例。例如,存储器管理程序110可以在初始化时设置描述符FIFO 200的大小和基址寄存器,并且每个队列元素(例如包括颜色位250加上队列条目260)的长度可以是例如64字节。在至少一个实施例中,包含描述符FIFO 200的基地址和大小的寄存器可以是压缩硬件120的一部分。根据至少一个实施例,存储器管理程序110可以对以下示例命令字段进行编程:
要压缩的物理地址。
指向空闲区域和大小的一定数目(例如6个)的指针。例如,存储器管理程序110可提供以下大小中的每一者的一个缓冲区:128字节、256字节、512字节、1024字节、2048字节及4096字节。在另一示例中,还可以提供64字节缓冲区。然而,应当理解,存储器管理程序110可以选择提供缓冲区大小的任何组合,并且除了上述示例缓冲区大小中的一个或多个之外或者替代上述示例缓冲区大小中的一个或多个,可以提供各个其他缓冲区大小。
用于指示在该压缩命令145的完结之后是否需要中断的位。
此外,根据在此描述的一个或多个实施例,可以由压缩硬件120设置以下示例结果字段:
压缩数据的大小(例如,以字节为单位)。
(ii)使用了哪些可用缓冲区的指示。例如,buf0_sel和buf1_sel可以指示所使用的缓冲区的选择。
描述符FIFO 200内的状态字段可由压缩硬件120和存储器管理程序110两者写入。例如,存储器管理程序110可以将状态字段设置为PEND以将描述符的所有权转移到压缩硬件120。然后,压缩硬件120可以将状态字段设置为完结代码(例如,COMPRESSED、COPIED、ABORTED、ERROR、ZERO等),以将描述符的所有权转移回存储器管理程序110。
压缩操作
根据在此描述的一个或多个实施例,存储器管理程序110可以将压缩命令145的组产生到描述符FIFO 200中,并且压缩硬件120可以消费它们。称为读取索引和写入索引的寄存器对可以跟踪描述符FIFO200的状态。下面提供关于写入索引(240)和读取索引(210)以及两个其它索引(在此称为完成索引(220)和空闲索引(230))的附加细节。
在至少一个示例中,写入索引(240)由存储器管理程序110拥有(例如,专用于存储器管理程序110、与存储器管理程序110关联等),并且不被压缩硬件120写入。写入索引(240)被初始化为零并指向存储器管理程序110将写入的下一条目。存储器管理程序110在将压缩命令145插入描述符FIFO 200并将描述符状态写至“PEND”之后递增写入索引(240)。存储器管理程序110可通过对写入索引寄存器的单次写入来递增多个压缩命令145的写入索引(240)。写入索引(240)的最高有效位(MSB)称为写入颜色位(250)。颜色位(250)不用于索引到描述符FIFO200中,而是可以用于区分FIFO空情况与FIFO满情况。每次写入索引(240)从最后一个条目转回到第一个条目时,可以反转颜色位(250)。
根据本文描述的一个或多个实施例,读取索引(210)由压缩硬件120拥有(例如,由压缩硬件120专用,与压缩硬件120相关联等),并且不被存储器管理程序110写入。读取索引(210)被初始化为零并指向压缩硬件120将读取以处理的下一描述符。压缩硬件120可以在提取描述符并核查状态==PEND之后递增读取索引(210)。读取索引(210)也包括颜色位(例如,颜色位(250))。
与读取索引(210)一样,完成索引(220)也由压缩硬件120拥有(例如,专用于压缩硬件120、与压缩硬件120关联等),并且不被存储器管理程序110写入。完成索引(220)被初始化为零并指向压缩硬件120将完成的下一命令。压缩硬件120可以在完成命令之后递增完成索引(220)并且压缩硬件120相应地写入结果和状态字段。完成索引(220)的MSB被称为读取颜色位(例如,颜色位(250))。读取颜色位不用于索引到描述符FIFO 200中,而是可用于区分FIFO空情况与FIFO满情况。
根据一个或多个实施例,空闲索引(230)仅在存储器管理程序110中实现。空闲索引(230)被初始化为零并且指向将由存储器管理程序110释放的下一描述符。当存储器管理程序110处理压缩命令145的完结结果并且已经准备好要重用的描述符条目时,存储器管理程序110可以递增空闲索引(230)。
应当注意,根据本公开的至少一个实施例,当写入索引(240)与包括颜色位(250)的所有位的完成索引(220)匹配时,描述符FIFO 200为空;当写入索引(240)与除颜色位(250)之外的所有位的完成索引(220)匹配时,描述符FIFO 200是满的;并且描述符FIFO200中的有效条目的数目是写入索引(240)-完成索引(220)。
存储器管理程序110可被配置为确保描述符FIFO 200不上溢,且压缩硬件120可被配置为确保防止描述符FIFO 200下溢(来自空队列的元素的消费)。根据一个或多个实施例,存储器管理程序110可以不写入压缩硬件120所拥有的任何描述符(例如,压缩硬件120所拥有的描述符可以具有状态==PEND);压缩硬件120可以不写入压缩硬件120不拥有的任何描述符;存储器管理程序110可以不写入存储器管理程序110不拥有的任何字段;压缩硬件120可不读取超出由存储器管理程序110编程的写入索引(例如,图2中所示的实例中的写入索引(240))的条目;存储器管理程序110可以推断完成索引(例如,完成索引(220)),而不是从压缩硬件120读取它;并且,推断的完成索引可以初始化为零并且每当描述符FIFO200不为空并且描述符在推断的完成索引处的状态不为PEND时可以递增。
根据至少一个实施例,当压缩命令145完成时,压缩硬件120可以按FIFO顺序将命令完结写入结果和状态字段。出于例如总线限制和/或性能考虑,压缩硬件120可以写入描述符的其他部分,但是将保留读取的值。压缩硬件120还可以将未定义或保留的字段设置为零。此外,当完成索引220达到指定值(例如,中断完结索引寄存器)或当某个压缩命令145完成(例如,由压缩命令145中的字段指定)时,压缩硬件120可引发中断。存储器管理程序110可以从描述符读取这些结果并更新空闲存储器区域的簿记。
图3是使用存储器管理程序110来管理物理计算机存储器140中的数据压缩期间的碎片的示例过程300。根据至少一个实施例,示例过程300可以包括在框305-315中阐述的操作。应当注意,根据一个或多个实施例,示例过程300的操作可以补充示例过程400(在下面详细描述并且在图4中示出)的操作和/或与其组合。
在框305,可以向压缩硬件120提供一个或多个压缩命令145。例如,根据至少一个实施例,在框305处提供的一个或多个压缩命令145可以包括待由压缩硬件120压缩的数据在物理计算机存储器140中的地址以及物理计算机存储器140中供压缩硬件120存储由压缩硬件120输出的压缩数据155的可用缓冲区的标识(例如,列表)。
在框310,指示(例如,通信、通知等)可在存储器管理程序110处从压缩硬件120接收,其中该指示指示压缩硬件120选择可用缓冲区中的哪一个来存储压缩数据155。
在框315处,可以从压缩硬件120接收信息(例如,在存储器管理程序110处),其中该信息与压缩命令145(例如,在框305处)中提供的压缩数据155、未压缩数据150和/或可用缓冲区相关联。例如,与未压缩数据150、压缩数据155和/或可用缓冲区相关联的信息可包括由压缩硬件120压缩的数据的大小、压缩数据155的状态(例如,压缩数据被存储在由压缩硬件120选择的一个或多个缓冲区中,压缩数据155被复制到由压缩硬件120选择的一个或多个缓冲区中,压缩数据155未被复制到由压缩硬件120选择的一个或多个缓冲区中等),和/或未压缩数据150的状态(例如,未压缩数据150是不可压缩的,未压缩数据150被复制到目的地缓冲区等)。
应注意,根据本文所描述的至少一个实施例,在框315处从压缩硬件120接收的信息可与在框310处的所选缓冲区的指示一起被接收(例如,在存储器管理程序110处)。
图4是用于物理计算机存储器140中的数据的硬件辅助压缩的示例过程400。例如,根据本文描述的至少一个实施例,示例过程400可以由压缩硬件120执行,并且可以包括框405-440的操作。首先,压缩硬件120可以从存储器管理程序110接收(405)压缩命令145,该压缩命令145包括待压缩的缓冲区的地址和标识不同大小的可用缓冲区的数据。第二,压缩硬件120可确定(410)用于存储待压缩数据的最小可能缓冲区大小。如果在(415)中确定压缩数据155将不适合在任何可用缓冲区集合内,则压缩硬件120可向存储器管理程序110发送(440)数据的压缩大小和不可压缩状态。如果在(415)中确定压缩数据155将适合于可用缓冲区的任何集合(其中集合可以包括一个或多于一个)内,则压缩硬件120可以选择(420)可用缓冲区的集合(其中集合可以包括一个或多于一个)以存储压缩数据155。然后,压缩硬件120可以压缩数据并将压缩数据155存储(425)在所选缓冲区中。接下来,压缩硬件120可以通知(430)存储器管理程序110哪些可用缓冲区被选择来存储压缩数据155。然后,压缩硬件120可以向存储器管理程序110发送(435)压缩的数据大小和压缩状态。
在至少一个实施例中,通过利用多个缓冲区,即使对于被认为不可压缩的数据也可以获得益处。例如,根据至少一个实施例,在压缩硬件120已经确定给定数据块(例如,集合、区块等)压缩的程度(如果有),压缩硬件120仍可用于分割数据。例如,在使用4千字节块的情况下,可以将数据分割成更小的缓冲区,这取决于操作系统实现的存储器方案而可以改善外部碎片。
解压缩操作
根据一个或多个实施例,本公开的方法、设备和系统可以包括各个解压缩操作。可以有多个解压缩命令寄存器集合,并且每个命令寄存器集合可以被静态地分配给存储器管理程序110以用于特定目的。例如,每个CPU可以具有专用命令寄存器集合,以服务于页面故障处理程序的解压缩。
在一个示例实施例中,存储器管理程序110可以对解压缩命令寄存器进行编程,并且最终写入将解压缩目的地寄存器中的状态字段设置为PEND。
在一个示例实施例中,压缩硬件120可以通过执行解压缩操作来处理解压缩命令。然后,压缩硬件120可以将解压缩目的地寄存器中的状态字段更新为完结代码(例如,DECOMPRESSED或ERROR)。可选地,压缩硬件120可以将完结代码写入物理计算机存储器140中的指定位置。此外,一旦解压缩操作已经被执行,压缩硬件120可以可选地生成中断。
在一个示例实施例中,解压缩命令可以包括其中存储器管理程序110可以指示压缩数据155的大小(如果其可用)的字段。该字段是可选的,并且如果不可用,则压缩硬件120将需要能够自动确定压缩数据155的结束并且忽略在压缩期间可能尚未被写入的缓冲区的剩余部分。
在一个示例实施例中,取决于实施方式,存储器管理程序110可以轮询解压缩目的地寄存器,轮询物理计算机存储器140中的指定位置和/或等待中断以检测完结。
应当理解,根据本公开的一个或多个实施例,解压缩操作可以能够应对包含压缩数据155的多个缓冲区。即,在压缩之后未压缩数据150被分割并存储在多于一个位置(例如160、165)的情况下,分割的压缩数据(例如160、165)的解压缩操作将需要从多于一个位置加载数据以解压缩所请求的数据。
此外,在一个示例实施例中,解压缩操作可以具有对中断的控制。即,如果实施方式包括一旦解压缩操作完成就生成的中断,则可以在该实施方式中包括对中断的控制。对中断的控制可以是解压缩命令寄存器中的位的形式。
此外,在一个示例实施例中,解压缩操作可以具有对结果写入的控制。即,如果实施方式包括在命令完结时将状态写入指定存储器位置的选项,则压缩硬件120可将结果写入由解压缩命令结果写入地址指定的物理计算机存储器140中的位置。
图6是根据示例实施例的,与压缩硬件120接收的压缩命令145相关的计算机实现的方法(600)的流程图。首先,在压缩硬件120处接收(610)压缩命令145,该压缩命令145包括待压缩的数据在物理计算机存储器140中的地址以及用于存储由压缩硬件120输出的压缩数据155的可用缓冲区的标识,可用缓冲区具有不同的大小。第二,使用所接收的地址从物理计算机存储器140检索(620)未压缩数据150。第三,由压缩硬件120确定(630)压缩数据155的大小。第四,压缩硬件120基于使在压缩数据155存储在至少两个可用缓冲区中之后将保留在至少两个可用缓冲区中的未使用空间的量最小化来选择(640)可用缓冲区中的至少两个,其中至少两个可用缓冲区中的每一个在大小上不同于至少两个可用缓冲区中的至少另一个。第五,由压缩硬件120向存储器管理程序110传送(650)与未压缩数据150、压缩数据155和/或可用缓冲区相关联的信息。
在至少一个实施例中,如图1C中涉及示例数据所说明,压缩硬件120仅选择可用缓冲区中的一个可能就足够了。
图9是根据示例实施例的,与压缩硬件120接收的压缩命令145相关的计算机实现的方法900的流程图。首先,在压缩硬件120处接收(910)压缩命令145,该压缩命令145包括待压缩的数据在物理计算机存储器140中的地址以及用于存储由压缩硬件120输出的压缩数据155的可用缓冲区的标识,可用缓冲区具有不同的大小。第二,使用所接收的地址从物理计算机存储器140检索(920)未压缩数据150。第三,由压缩硬件120确定(930)压缩数据155的大小。第四,由压缩硬件120选择(940)在接收到的压缩命令145中标识的可用缓冲区中的一个或多个,以在其中存储压缩数据155。第五,由压缩硬件120向存储器管理程序110传送(950)与未压缩数据150、压缩数据155和/或可用缓冲区相关联的信息。
图7是根据示例实施例的,用于解压缩存储在物理计算机存储器140中的至少两个缓冲区中的压缩数据155的计算机实现方法(700)的流程图。首先,在压缩硬件120处接收(710)来自在除压缩硬件120之外的处理器上执行的存储器管理程序110的解压缩命令,其中解压缩命令包括至少两个缓冲区的标识和物理计算机存储器140中用于存储由压缩硬件120输出的解压缩数据的目的地地址,并且其中至少两个缓冲区中的每一个在大小上不同于该至少两个缓冲区中的至少另一个。第二,由压缩硬件120通过解压缩存储在至少两个缓冲区中的压缩数据(至少160、165)来输出(720)解压缩数据。第三,由压缩硬件120输出的解压缩数据被存储(730)在物理计算机存储器140中的目的地地址处。第四,由压缩硬件120向存储器管理程序110传送(740)与解压缩数据相关联的信息。
图8是根据示例实施例的,与由压缩硬件120接收的压缩命令145相关的计算机实现的方法(800)的流程图。首先,存储器管理程序110向压缩硬件120提供(810)压缩命令145,压缩命令145包括待压缩数据在物理计算机存储器140中的地址和用于存储由压缩硬件120输出的压缩数据155的多个可用缓冲区的列表,缓冲区具有不同的大小。其次,压缩硬件120使用(820)包括在压缩命令145中的地址来检索未压缩数据150。第三,压缩硬件120将未压缩数据150压缩(830)为压缩数据155。第四,压缩硬件120基于使在压缩数据155存储在从列表中选择的至少两个缓冲区中之后将保留在从列表中选择的至少两个缓冲区中的未使用空间的量最小化,从可用缓冲区列表中选择(840)至少两个缓冲区以用来存储压缩数据155,其中从列表中选择的至少两个缓冲区中的每一个在大小上不同于未从列表中选择的缓冲区中的至少另一个。
图5是根据本文所描述的一个或多个实施例的示例计算设备(500)的高级框图,该示例计算设备(500)被布置用于管理物理计算机存储器(520、140)中的数据的硬件辅助压缩的碎片。例如,根据本公开的至少一个实施例,计算设备(500)可以被配置为提供压缩硬件120和存储器管理程序110一起工作的方式,以最小化物理计算机存储器(520、140)中的碎片,最小化压缩硬件120的复杂性,并且允许压缩硬件120在没有来自存储器管理程序110的过多干预的情况下连续操作以供空闲空间管理。
在非常基本的配置(501)中,计算设备(500)通常包括一个或多个处理器(510)、物理计算机存储器(520、140)(例如,系统存储器)和压缩硬件(550、120)。存储器总线(530)可用于处理器(510)、压缩硬件(550、120)和物理计算机存储器(520、140)之间的通信。
取决于期望的配置,处理器(510)可以是任何类型,包括但不限于微处理器(P)、微控制器(μC)、数字信号处理器(DSP)等或其任意组合。根据至少一个实施例,应用处理器(510)可根据上文结合存储器管理程序110描述的方法编程,存储器管理程序110包括图3、4、6、7、8和9中概述的方法的相关部分。压缩硬件(550、120)可以用专用集成电路(ASIC)、定制集成电路、数字信号处理器(DSP)、现场可编程门阵列(FPGA)或其它专用硬件实施方式来构造。压缩硬件(550、120)可以是为数据压缩方法和可选地为数据解压缩方法设计的专用集成电路形式的硬件。在一个示例实施例中,专用压缩硬件(550、120)可以连续地消费可用描述符以执行物理计算机存储器(520、140)中的数据的压缩来进行空闲空间管理,而无需来自运行在应用处理器(510)上的存储器管理程序110的干预。
处理器(510)可以包括一个或多个层级的高速缓存,诸如一级高速缓存(511)和二级高速缓存(512)、处理器核心(513)。还可以为应用处理器510和压缩硬件550提供寄存器(514、554)。处理器核心(513)可以包括算术逻辑单元(ALU)、浮点单元(FPU)、数字信号处理核心(DSP核心)等或其任意组合。
存储器控制器(515)也可以与一个或多个处理器(510、550)一起使用,或者在一些实施方式中,单独的存储器控制器(515)可以是一个或多个处理器(510、550)中的每一个的内部部分。在另一实施例中,压缩硬件(550、120)可以与处理器510一样是存储器控制器515的主设备。在一个示例实施例中,压缩硬件(550、120)与存储器控制器515之间的连接可以是直接的。在另一示例实施例中,压缩硬件(550、120)与存储器控制器515之间的连接可以是间接的,例如经由互连。在一个示例实施例中,压缩硬件(550、120)可以与应用处理器510进行电子通信。在一个示例实施例中,压缩硬件(550、120)可以包括描述符FIFO(553、200)和压缩硬件缓冲区(555、130)。
根据期望的配置,物理计算机存储器(520、140)可以是任何类型,包括但不限于易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪存等)或其任意组合。物理计算机存储器(520、140)通常包括操作系统(521)、一个或多个应用(522)和程序数据(524)。应用(522)可以包括用于如本文所述管理物理计算机存储器(523)的硬件辅助压缩的碎片的系统。
根据本公开的至少一个实施例,用于管理物理计算机存储器(523)中的数据的硬件辅助压缩的碎片的系统被设计成使得存储器管理程序110通过以下来帮助相对应的压缩硬件120做出更有效率的决策:提供不同大小的多个缓冲区并且允许压缩硬件120(a)将压缩数据155的内容分到多个缓冲区中并且基于压缩数据155的大小来选择缓冲区以存储压缩数据155或者(b)基于压缩数据155的大小来选择缓冲区以存储压缩数据155,从而导致更有效率的数据打包以及因此减小由于碎片丢失的空间。管理物理计算机存储器(523)中的数据的硬件辅助压缩的碎片的系统由于系统中较少浪费的空间以及更简单和更快的硬件设计而可以实现改进的有效压缩比。
程序数据(524)可包括存储指令,该指令在由一个或多个处理设备执行时,实现用于管理在物理计算机存储器(520、140)中数据的硬件辅助压缩的碎片的系统(523)和方法。此外,根据至少一个实施例,程序数据(524)可包括压缩命令145和缓冲数据(525),其可涉及例如待压缩数据的地址和不同大小的空闲缓冲区列表,相关联的压缩硬件120可从中选择以供存储压缩数据155。根据至少一个实施例,应用程序(522)可以被布置为在操作系统(521)上与程序数据(524)一起操作。
计算设备(500)可以具有附加特征或功能以及附加接口,以促进基本配置(501)与任何所需设备和接口之间的通信。
物理计算机存储器(520,140)是计算机存储介质的示例。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字通用盘(DVD)或其它光学存储、盒式磁带、磁带、磁盘存储或其它磁存储设备,或可用于存储所需信息且可由计算设备500访问的任何其它介质。任何这样的计算机存储介质可以是设备(500)的一部分。
计算设备(500)可以在诸如微控制器或片上系统(SoC)之类的集成电路中实现,或者它可以被实现为小型便携式(或移动)电子设备的一部分,小型便携式(或移动)电子设备诸如蜂窝电话、智能电话、个人数据助理(PDA)、个人媒体播放器设备、平板计算机(平板)、无线web手表设备、个人头戴式送受话器设备、专用设备或包括任何上述功能的混合设备。此外,计算设备(500)还可以实现为个人计算机,包括膝上型计算机和非膝上型计算机配置、一个或多个服务器、物联网系统等。
前面的详细描述已经通过使用框图、流程图和/或示例阐述了设备和/或过程的各个实施例。在这样的框图、流程图和/或示例包含一个或多个功能和/或操作的情况下,本领域技术人员将理解,这样的框图、流程图或示例中的每个功能和/或操作可以单独地和/或共同地由范围宽广的硬件、软件、固件或其实际上的任何组合来实现。根据至少一个实施例,本文描述的主题的若干部分可经由专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)或其它集成格式来实现。然而,本领域技术人员将认识到,在此公开的实施例的一些方面,全部或部分地,可以等效地实现在集成电路中,实现为在一个或多个计算机上运行的一个或多个计算机程序,实现为在一个或多个处理器上运行的一个或多个程序,实现为固件,或者实现为其实际上的任何组合,并且根据本公开,设计电路和/或编写用于软件和/或固件的代码将在本领域技术人员的技术范围内。
此外,本领域技术人员将理解,本文所述主题的机制或其部分能够以各种形式作为程序产品来分发,并且本文所述主题的说明性实施例适用于与用于执行分发的非暂时性计算机可读介质的类型无关的情况。非暂时介质的示例包括但不限于以下:可记录类型介质,诸如软盘、硬盘驱动器、固态驱动器、光盘(CD)、数字视频盘(DVD)、数字磁带、计算机存储器等。
关于本文中基本上任何复数和/或单数术语的使用,本领域技术人员可以根据场境(context)和/或应用从复数转换成单数和/或从单数转换成复数。为了清楚起见,在此可以明确地阐述各种单数/复数置换。
这里讨论的系统、设备和方法不需要收集或使用用户个人信息。在某些实施方式可能收集或使用关于用户的个人信息(例如,用户数据、关于用户的社交网络的信息、用户的位置和时间、用户的生物特征信息、用户的活动和人口统计信息)的情形下,向用户提供一个或多个机会来控制是否收集个人信息、是否存储个人信息、是否使用个人信息以及如何收集、存储和使用关于用户的信息。即,这里讨论的系统、设备和方法在接收到来自相关用户的明确授权时收集、存储和/或使用用户个人信息。此外,在存储或使用某些数据之前,可以以一种或多种方式对其进行处理,从而移除个人可识别信息。作为一个示例,可以处理用户的身份,使得不能确定个人可识别信息。作为另一个示例,用户的地理位置可以被泛化到更大的区域,使得不能确定用户的特定位置。
在以下示例中总结了进一步的实施方式:
示例1:一种计算机实现的方法,包括:在压缩硬件处接收压缩命令,所述压缩命令包括待压缩数据在物理计算机存储器中的地址和用于存储由所述压缩硬件输出的压缩数据的可用缓冲区的标识,所述可用缓冲区具有不同大小;使用所接收的地址从所述物理计算机存储器检索未压缩数据;由所述压缩硬件确定所述压缩数据的大小;由所述压缩硬件选择在所接收的压缩命令中标识的所述可用缓冲区中的一个或多个可用缓冲区以在其中存储所述压缩数据;和由所述压缩硬件将与所述未压缩数据、所述压缩数据、和/或所述可用缓冲区相关联的信息传送到存储器管理程序。
示例2:根据示例1所述的计算机实现的方法,还包括:由所述压缩硬件将从所述物理计算机存储器检索的所述未压缩数据压缩成压缩数据,其中,基于所述压缩数据的大小来确定用于存储所述压缩数据的缓冲区大小。
示例3:根据示例1或2之一所述的计算机实现的方法,其中,所述压缩硬件基于在所述压缩数据被存储在所述一个或多个可用缓冲区中之后将保留在所述一个或多个可用缓冲区中的未使用空间的量,选择所可用缓冲区中的所述一个或多个可用缓冲区以在其中存储所述压缩数据。
示例4:根据示例1至3之一所述的计算机实现的方法,其中,所述一个或多个选择的缓冲区在大小上不同于所述可用缓冲区中的至少一个其他缓冲区。
示例5:根据示例1至4之一所述的计算机实现的方法,其中,与所述未压缩数据、所述压缩数据、和/或所述可用缓冲区相关联的所述信息包括以下中的至少一个:所述压缩数据的大小、所述压缩数据的状态、所述未压缩数据的状态、或者所述可用缓冲区中的哪些被选择用于存储所述压缩数据。
实施例6:根据示例5所述的计算机实现的方法,其中,所述压缩数据的状态包括以下中的至少一个:从所述物理计算机存储器检索的数据是可压缩的,所述压缩数据被存储在所述一个或多个选择的缓冲区中,所述压缩数据被复制到所述一个或多个选择的缓冲区,或者所述压缩数据没有被复制到所述一个或多个选择的缓冲区。
示例7:示例5或6之一的计算机实现的方法,其中,所述未压缩数据的状态包括以下中的至少一个:所述未压缩数据是不可压缩的,所述未压缩数据被复制到单个目的地缓冲区,或者所述未压缩数据被复制并在多个目的地缓冲区之间分割。
示例8:根据示例1至7之一所述的计算机实现的方法,还包括:响应于使用所接收到的地址从所述物理计算机存储器检索所述未压缩数据,确定所述未压缩数据是不可压缩的;以及将所述未压缩数据存储到一个或多个目的地缓冲区。
示例9:示例8的计算机实现的方法,其中,基于所述压缩数据的大小大于阈值量来确定所述未压缩数据是不可压缩的。
示例10:根据示例1至9之一所述的计算机实现的方法,还包括:由所述压缩硬件选择在所接收的压缩命令中标识的所述可用缓冲区中的至少两个可用缓冲区以在其中存储所述压缩数据,其中,所选择的缓冲区中的每一个在大小上不同于所选择的缓冲区中的至少另一个。
示例11:根据示例10所述的计算机实现的方法,还包括:由所述压缩硬件,基于使在所述压缩数据被存储在至少两个可用缓冲区中之后将保留在所述至少两个可用缓冲区中的未使用空间的量最小化,选择所述可用缓冲区的所述至少两个可用缓冲区,其中,所述至少两个可用缓冲区中的每一个在大小上不同于所述至少两个可用缓冲区中的至少另一个。
示例12:根据示例11所述的计算机实现的方法,还包括:由所述压缩硬件响应于来自所述存储器管理程序的解压缩命令而解压缩所选择的至少两个可用缓冲区。
示例13:一种用于解压缩存储在物理计算机存储器中的至少两个缓冲区中的压缩数据的计算机实现的方法,所述计算机实现的方法包括:在压缩硬件处接收来自在除所述压缩硬件之外的处理器上执行的存储器管理程序的解压缩命令,其中,所述解压缩命令包括所述至少两个缓冲区的标识和物理计算机存储器中用于存储由所述压缩硬件输出的解压缩数据的目的地地址,并且其中,所述至少两个缓冲区中的每一个在大小上不同于所述至少两个缓冲区中的至少另一个;由所述压缩硬件通过解压缩存储在所述至少两个缓冲区中的所述压缩数据来输出解压缩数据;将所述压缩硬件输出的所述解压缩数据存储在物理计算机存储器中的所述目的地地址处;以及由所述压缩硬件向所述存储器管理程序传送与所述解压缩数据相关联的信息。
示例14:根据示例13所述的计算机实现的方法,其中,由所述压缩硬件向所述存储器管理程序传送与所述解压缩数据相关联的信息包括以下中的至少一个:通知已完成解压缩、通知解压缩中的错误、更新寄存器中的解压缩状态、生成中断、或者将解压缩状态写入物理计算机存储器中的地址。
示例15:一种设备,包括:处理器;物理计算机存储器;与所述处理器通信的压缩硬件;以及存储器管理程序,所述存储器管理程序向所述压缩硬件提供压缩命令,所述压缩命令包括待压缩数据在所述物理计算机存储器中的地址以及用于存储由所述压缩硬件输出的压缩数据的多个可用缓冲区的列表,所述缓冲区具有不同大小,所述压缩硬件被配置为:使用所述压缩命令中包括的所述地址检索未压缩数据;将所述未压缩数据压缩成压缩数据;以及从可用缓冲区的所述列表中选择用于存储压缩数据的至少两个缓冲区,其中,从所述列表中选择的至少两个缓冲区中的每一个在大小上不同于未从列表中选择的缓冲区中的至少另一个。
示例16:根据示例15所述的设备,其中,基于如果所述压缩数据被存储在从所述列表中选择的至少两个缓冲区中则将保留在从所述列表中选择的至少两个缓冲区中的未使用空间的量,选择从所述列表中选择的至少两个缓冲区。
实施例17:根据实施例15或16所述的装置,其中,所述压缩硬件被配置为向所述存储器管理程序传送所述压缩数据的大小、所述压缩数据的状态、所述未压缩数据的状态、和/或从所述可用缓冲区列表中选择哪些缓冲区以用于存储压缩数据。
示例18:根据示例15至17之一所述的设备,其中,所述存储器管理程序向所述压缩硬件提供解压缩命令,所述解压缩命令包括:在物理计算机存储器中的用于存储由所述压缩硬件输出的解压缩数据的目的地地址;以及物理计算机存储器中的至少两个数据缓冲区的列表,其中,压缩数据被存储在所述至少两个数据缓冲区中,并且其中,所述至少两个数据缓冲区中的每一个在大小上不同于所述至少两个数据缓冲区中的至少另一个;以及其中,所述压缩硬件被配置为:通过解压缩存储在所述至少两个数据缓冲区中的压缩数据来输出解压缩数据;将所述解压缩数据存储在物理计算机存储器中的所述目的地地址;以及向所述存储器管理程序传送与所述解压缩数据相关联的信息。
示例19:根据示例18所述的设备,其中,所述压缩硬件被配置为响应于解压缩操作而向所述存储器管理程序传送完成的解压缩的信息、解压缩中的错误的信息、解压缩状态中的更新、和/或中断。
示例20:根据示例18或19所述的设备,其中,基于使在所述压缩数据被存储在从所述列表中选择的至少两个缓冲区中之后将保留在从所述列表中选择的至少两个缓冲区中的未使用空间的量最小化,选择从所述列表中选择的至少两个缓冲区。
进一步的示例涉及用于管理物理计算机存储器中的数据的硬件辅助压缩中的碎片的系统、设备和方法,这可能导致减少的内部碎片,其中,一种示例计算机实现的方法包括:由存储器管理程序向压缩硬件提供压缩命令,该压缩命令包括待压缩数据在物理计算机存储器中的地址和用于存储压缩数据的至少两个可用缓冲区的列表;由压缩硬件使用包括在压缩命令中的地址来检索未压缩数据;对未压缩数据进行压缩;以及由压缩硬件基于如果压缩数据被存储在至少两个缓冲区中则将剩余的空间量,从至少两个可用缓冲区的列表中选择至少两个缓冲区以用于存储压缩数据,其中,至少两个选择的缓冲区中的每一个在大小上不同于所选择的缓冲区中的至少另一个。
因此,已经描述了主题的实施例。其它实施例在所附权利要求书的范围内。在一些情况下,权利要求中所记载的动作可以以不同的顺序执行并且仍然获得期望的结果。此外,附图中描述的过程可能不一定需要所示的顺序或循序来实现期望的结果。在某些实施方式中,多任务和并行处理可能是有利的。
Claims (20)
1.一种压缩数据的计算机实现的方法,所述方法包括:
由压缩硬件从与所述压缩硬件分离的存储器管理程序接收压缩命令,所述压缩命令包括待压缩成压缩数据的未压缩数据在物理计算机存储器中的地址和用于存储所述压缩数据的具有不同大小的可用缓冲区的标识;
由所述压缩硬件从所述物理计算机存储器检索所述未压缩数据;
由所述压缩硬件确定所述压缩数据的大小;
由所述压缩硬件选择所述可用缓冲区中的至少一个缓冲区以在其中存储所述压缩数据,所述选择基于在将所述压缩数据存储在其中之后将保留在所选择的至少一个缓冲区中的未使用空间的量;以及
由所述压缩硬件将与所选择的至少一个缓冲区相关联的信息传送到所述存储器管理程序。
2.根据权利要求1所述的计算机实现的方法,还包括:
由所述压缩硬件从所述存储器管理程序接收第二压缩命令,所述第二压缩命令包括待压缩成第二压缩数据的第二未压缩数据在所述物理计算机存储器中的第二地址和用于存储所述第二压缩数据的具有不同大小的第二可用缓冲区的标识;
由所述压缩硬件从所述物理计算机存储器检索所述第二未压缩数据;
由所述压缩硬件基于阈值压缩量确定所述第二未压缩数据不能被压缩;
由所述压缩硬件基于所述第二未压缩数据的大小选择第二可用缓冲区的至少一个第二缓冲区以存储所述第二未压缩数据;以及
由所述压缩硬件将与所选择的至少一个第二缓冲区相关联的第二信息传送到所述存储器管理程序。
3.根据权利要求2所述的计算机实现的方法,其中,所述第二信息包括所述第二未压缩数据不可被压缩的指示。
4.根据权利要求1所述的计算机实现的方法,其中,所述选择进一步基于降低所述未使用空间的量。
5.根据权利要求1所述的计算机实现的方法,其中,所述信息包括所选择的至少一个缓冲区的标识。
6.根据权利要求1所述的计算机实现的方法,进一步包括由所述压缩硬件将所述未压缩数据压缩成所述压缩数据。
7.根据权利要求1所述的计算机实现的方法,其中,所选择的至少一个缓冲区包括多个所选择的缓冲区。
8.根据权利要求7所述的计算机实现的方法,其中,所述多个所选择的缓冲区具有不同的大小。
9.根据权利要求1所述的计算机实现的方法,进一步包括由所述压缩硬件将所述压缩数据存储在所选择的至少一个缓冲区中。
10.根据权利要求9所述的计算机实现的方法,其中,所述信息包括在所述压缩数据被存储在所选择的至少一个缓冲区中之后将保留在所选择的至少一个缓冲区中的未使用空间的量。
11.根据权利要求9所述的计算机实现的方法,还包括:
由所述压缩硬件响应于来自所述存储器管理程序的解压缩命令而解压缩所选择的至少一个缓冲区中的所述压缩数据。
12.一种解压缩数据的计算机实现的方法,所述方法包括:
由压缩硬件从与所述压缩硬件分离的存储器管理程序接收解压缩命令,所述解压缩命令包括包含待解压缩成解压缩数据的压缩数据的具有不同大小的两个或更多个缓冲区的位置和用于存储所述解压缩数据的物理计算机存储器中的位置;
由所述压缩硬件从所述两个或更多个缓冲区检索所述压缩数据;
由所述压缩硬件将所述压缩数据解压缩成所述解压缩数据;
由所述压缩硬件将所述解压缩数据存储在物理计算机存储器中;以及
由所述压缩硬件向所述存储器管理程序传送与所述解压缩数据相关联的信息。
13.根据权利要求12所述的计算机实现的方法,其中,与所述解压缩数据相关联的信息包括对寄存器中的解压缩状态的更新、对所述物理计算机存储器中的地址的解压缩状态的中断或写入。
14.一种用于压缩数据的设备,包括:
处理器;
物理计算机存储器;
与所述处理器分离并且通信的压缩硬件;以及
在所述处理器上执行的存储器管理程序,所述存储器管理程序向所述压缩硬件提供压缩命令,所述压缩命令包括待压缩成压缩数据的未压缩数据在所述物理计算机存储器中的地址以及用于存储所述压缩数据的具有不同大小的多个可用缓冲区的列表,响应于接收所述压缩命令,所述压缩硬件执行操作,所述操作包括:
从所述物理计算机存储器检索所述未压缩数据;
确定所述压缩数据的大小;
选择所述可用缓冲区中的至少一个可用缓冲区以在其中存储所述压缩数据,所述选择基于在将所述压缩数据存储在其中之后将保留在所选择的至少一个缓冲区中的未使用空间的量;以及
将与所选择的至少一个缓冲区相关联的信息传送到所述存储器管理程序。
15.根据权利要求14所述的设备,其中,所述选择进一步基于降低所述未使用空间的量。
16.根据权利要求14所述的设备,其中,所述操作进一步包括将所述未压缩数据压缩成所述压缩数据。
17.根据权利要求14所述的设备,其中,所述操作进一步包括将所述压缩数据存储在所选择的至少一个缓冲区中。
18.根据权利要求14所述的设备,其中,所述操作进一步包括向所述存储器管理程序传送所述压缩数据的大小或所选择的至少一个缓冲区的指示。
19.根据权利要求14所述的设备,其中,所述存储器管理程序进一步向所述压缩硬件提供解压缩命令,所述解压缩命令包括包含待解压缩成解压缩数据的第二压缩数据的具有不同大小的两个或更多个缓冲区的位置和用于存储所述解压缩数据的所述物理计算机存储器中的位置响应于接收所述解压缩命令,所述压缩硬件执行操作,所述操作包括:
从所述缓冲区检索所述第二压缩数据;
将所述第二压缩数据解压缩成所述解压缩数据;
将所述解压缩数据存储在物理计算机存储器中;以及
向所述存储器管理程序传送与所述解压缩数据相关联的信息。
20.根据权利要求19所述的设备,其中,所述操作进一步包括向所述存储器管理程序传送压缩状态中的更新或响应于所述存储的中断。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662298836P | 2016-02-23 | 2016-02-23 | |
US62/298,836 | 2016-02-23 | ||
US15/394,621 | 2016-12-29 | ||
US15/394,621 US10474385B2 (en) | 2016-02-23 | 2016-12-29 | Managing memory fragmentation in hardware-assisted data compression |
PCT/US2017/016799 WO2017146898A1 (en) | 2016-02-23 | 2017-02-07 | Managing memory fragmentation in hardware-assisted data compression |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108139972A CN108139972A (zh) | 2018-06-08 |
CN108139972B true CN108139972B (zh) | 2023-02-28 |
Family
ID=59631138
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780003237.7A Active CN108139972B (zh) | 2016-02-23 | 2017-02-07 | 用于管理硬件辅助数据压缩中的存储器碎片的方法和设备 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10474385B2 (zh) |
EP (1) | EP3420458B1 (zh) |
CN (1) | CN108139972B (zh) |
TW (1) | TWI656443B (zh) |
WO (1) | WO2017146898A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10474385B2 (en) | 2016-02-23 | 2019-11-12 | Google Llc | Managing memory fragmentation in hardware-assisted data compression |
US20190065088A1 (en) * | 2017-08-30 | 2019-02-28 | Micron Technology, Inc. | Random access memory power savings |
US20200302284A1 (en) * | 2019-03-18 | 2020-09-24 | Nvidia Corporation | Data compression for a neural network |
JP2020154525A (ja) * | 2019-03-19 | 2020-09-24 | キオクシア株式会社 | メモリシステムおよび情報処理システム |
CN111506265A (zh) * | 2020-04-10 | 2020-08-07 | 上海交通大学 | 一种基于硬件的块层数据压缩框架 |
CN113885787B (zh) * | 2021-06-08 | 2022-12-13 | 荣耀终端有限公司 | 一种存储器管理方法及电子设备 |
US20240036726A1 (en) * | 2022-07-27 | 2024-02-01 | Rambus Inc. | Memory compression |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2305274A (en) * | 1995-09-15 | 1997-04-02 | Hewlett Packard Co | Laser printer data compression/decompression apparatus |
US5761536A (en) * | 1996-08-21 | 1998-06-02 | International Business Machines Corporation | System and method for reducing memory fragmentation by assigning remainders to share memory blocks on a best fit basis |
WO2011048400A1 (en) * | 2009-10-20 | 2011-04-28 | Arm Limited | Memory interface compression |
CN103365648A (zh) * | 2012-03-30 | 2013-10-23 | 富士通株式会社 | 压缩和解压缩系统及方法,压缩装置,和解压缩装置 |
CN105027093A (zh) * | 2012-12-28 | 2015-11-04 | 苹果公司 | 用于压缩和紧凑虚拟存储器的方法和装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8619866B2 (en) * | 2009-10-02 | 2013-12-31 | Texas Instruments Incorporated | Reducing memory bandwidth for processing digital image data |
US8738962B2 (en) | 2010-11-17 | 2014-05-27 | International Business Machines Corporation | Memory mirroring with memory compression |
US9274951B2 (en) * | 2013-05-31 | 2016-03-01 | Altera Corporation | Cache memory controller for accelerated data transfer |
US10838862B2 (en) | 2014-05-21 | 2020-11-17 | Qualcomm Incorporated | Memory controllers employing memory capacity compression, and related processor-based systems and methods |
US10474385B2 (en) | 2016-02-23 | 2019-11-12 | Google Llc | Managing memory fragmentation in hardware-assisted data compression |
-
2016
- 2016-12-29 US US15/394,621 patent/US10474385B2/en active Active
-
2017
- 2017-02-07 CN CN201780003237.7A patent/CN108139972B/zh active Active
- 2017-02-07 EP EP17706063.9A patent/EP3420458B1/en active Active
- 2017-02-07 WO PCT/US2017/016799 patent/WO2017146898A1/en unknown
- 2017-02-23 TW TW106106111A patent/TWI656443B/zh active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2305274A (en) * | 1995-09-15 | 1997-04-02 | Hewlett Packard Co | Laser printer data compression/decompression apparatus |
US5761536A (en) * | 1996-08-21 | 1998-06-02 | International Business Machines Corporation | System and method for reducing memory fragmentation by assigning remainders to share memory blocks on a best fit basis |
WO2011048400A1 (en) * | 2009-10-20 | 2011-04-28 | Arm Limited | Memory interface compression |
CN103365648A (zh) * | 2012-03-30 | 2013-10-23 | 富士通株式会社 | 压缩和解压缩系统及方法,压缩装置,和解压缩装置 |
CN105027093A (zh) * | 2012-12-28 | 2015-11-04 | 苹果公司 | 用于压缩和紧凑虚拟存储器的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
TW201738753A (zh) | 2017-11-01 |
CN108139972A (zh) | 2018-06-08 |
WO2017146898A1 (en) | 2017-08-31 |
EP3420458B1 (en) | 2021-11-10 |
US10474385B2 (en) | 2019-11-12 |
EP3420458A1 (en) | 2019-01-02 |
US20170242614A1 (en) | 2017-08-24 |
TWI656443B (zh) | 2019-04-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108139972B (zh) | 用于管理硬件辅助数据压缩中的存储器碎片的方法和设备 | |
CN109085997B (zh) | 用于非易失性存储器的存储器高效持续键值储存 | |
US10198215B2 (en) | System and method for multi-stream data write | |
EP3036642B1 (en) | Hardware managed compressed cache | |
US9792227B2 (en) | Heterogeneous unified memory | |
US20170177497A1 (en) | Compressed caching of a logical-to-physical address table for nand-type flash memory | |
US9489409B2 (en) | Rollover strategies in a N-bit dictionary compressed column store | |
US9946462B1 (en) | Address mapping table compression | |
US10572171B2 (en) | Storage system | |
KR102569545B1 (ko) | 키-밸류 스토리지 장치 및 상기 키-밸류 스토리지 장치의 동작 방법 | |
US20170123679A1 (en) | Storage system and control method for storage device | |
KR101730151B1 (ko) | 플래시 메모리 장치에 데이터를 기록하는 방법, 플래시 메모리 장치, 및 저장 시스템 | |
WO2017041570A1 (zh) | 向缓存写入数据的方法及装置 | |
US11226778B2 (en) | Method, apparatus and computer program product for managing metadata migration | |
CN106201652B (zh) | 一种数据处理方法及虚拟机 | |
JP6228374B2 (ja) | 動的に適応されるキャッシュ格納のためのシステム | |
US8984011B1 (en) | Page object caching for variably sized access control lists in data storage systems | |
CN111752479B (zh) | 有效存储数据的方法和系统 | |
US20240070120A1 (en) | Data processing method and apparatus | |
US9563363B2 (en) | Flexible storage block for a solid state drive (SSD)-based file system | |
CN117349075A (zh) | 一种数据处理方法及相关设备 | |
US11429519B2 (en) | System and method for facilitating reduction of latency and mitigation of write amplification in a multi-tenancy storage drive | |
US10860233B2 (en) | Half-match deduplication | |
CN115421904A (zh) | 管理内存的方法及装置、电子设备及可读存储介质 | |
CN116149540A (zh) | 更新主机与闪存地址对照表的方法和计算机可读取存储介质和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |