CN107250991B - 透明硬件辅助存储器解压缩 - Google Patents

透明硬件辅助存储器解压缩 Download PDF

Info

Publication number
CN107250991B
CN107250991B CN201680009932.XA CN201680009932A CN107250991B CN 107250991 B CN107250991 B CN 107250991B CN 201680009932 A CN201680009932 A CN 201680009932A CN 107250991 B CN107250991 B CN 107250991B
Authority
CN
China
Prior art keywords
memory
data
hardware
compressed
read request
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
Application number
CN201680009932.XA
Other languages
English (en)
Other versions
CN107250991A (zh
Inventor
维亚切斯拉夫·弗拉基米罗维奇·马柳金
路易吉·塞门扎托
春·平·庄
桑托什·拉奥
新叶·邵
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.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of CN107250991A publication Critical patent/CN107250991A/zh
Application granted granted Critical
Publication of CN107250991B publication Critical patent/CN107250991B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0631Configuration or reconfiguration of storage systems by allocating resources to storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0804Addressing 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02BCLIMATE CHANGE MITIGATION TECHNOLOGIES RELATED TO BUILDINGS, e.g. HOUSING, HOUSE APPLIANCES OR RELATED END-USER APPLICATIONS
    • Y02B70/00Technologies for an efficient end-user side electric power management and consumption
    • Y02B70/30Systems integrating technologies related to power network operation and communication or information technologies for improving the carbon footprint of the management of residential or tertiary loads, i.e. smart grids as climate change mitigation technology in the buildings sector, including also the last stages of power distribution and the control, monitoring or operating management systems at local level
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

提供了使用最小化或消除软件参与的硬件解压缩器来进行存储器解压缩的方法和系统。自定义解压缩硬件被添加到存储器子系统中,其中解压缩硬件通过读取压缩块,将其解压缩到内部缓冲区中并返回块的请求部分,来处理由例如高速缓存未命中或从设备到压缩存储器块的请求引起的读取访问。自定义硬件设计用于通过检查访问的物理地址的未使用的高位来确定块是否被压缩,并确定压缩参数。这允许在没有附加元数据的情况下实现压缩,因为必要的元数据可以存储在现有页表结构中的未使用的位中。

Description

透明硬件辅助存储器解压缩
相关申请的交叉引用
本申请要求2015年2月13日提交的美国临时专利申请第62/116,053号,其全部公开内容通过引用并入本文。
背景技术
计算机频繁地使用比所有程序使用的总存储器更少量的RAM(随机存取存储器)来操作。实现该结果的各种技术之一包括压缩最近尚未被访问的存储器,以及在访问时解压缩这样的存储器。仅使用软件来解压存储器的成本很高,主要原因包括:(i)涉及内核页故障处置器,交换相关软件层和软件压缩器/解压缩器;(ii)需要存储未压缩的存储器块,从而迫使其它存储器块被压缩或驱逐,这导致额外的能量消耗并且潜在地触发系统中的抖动行为(例如,当存储器总是使用非常小的用户可见的进度压缩和解压缩时);和(iii)需要将整个未压缩的存储器块写回到RAM,从而增加存储器总线竞争和RAM的能量消耗。
现有的软件存储器压缩方案经受上述问题(i)-(iii)。虽然存在执行压缩和解压缩的一些基于硬件的块,但是这样的压缩器-解压缩器块不能透明地处理高速缓存线路丢失,并且因此仍然经受问题(ii)和(iii),同时还为所有存储器访问添加硬件开销(类似于问题(i))。
随着时间的推移,提出了用于相同或相似的高级目标的软件和硬件存储器去重的各种方法。去重通过检测和共享具有相同内容的存储器块来节省空间,与压缩相反而是减少存储块所需的空间。然而,这样的软件去重方法存在上述问题(i)-(iii),而现有硬件去重通常以小粒度(例如,高速缓存行)进行,导致高的元数据开销。现有硬件以及软件去重方案需要查找具有重复内容的块的计算密集型、空间密集型和能源密集型的过程。
发明内容
本发明内容以简化形式介绍了概念的选择,以便提供对本公开的某些方面的基本理解。本发明内容不是对本公开的广泛概述,并且不旨在识别本公开的关键或重要要素或描述本公开的范围。本发明内容只是将本公开的一些概念作为下面提供的具体实施方式的前序。
本公开一般涉及用于存储器解压缩的方法和系统。更具体地,本公开的方面涉及使用设计为最小化或消除软件参与(involvement)的硬件解压缩器来解压缩存储器。
本公开的一个实施例涉及一种硬件解压缩器,其包括布置在处理单元和物理计算机存储器之间的硬件设备,其中硬件设备被配置为:接收存储器访问读取请求,所接收到的请求导致高速缓存未命中或页错误;确定存储器访问读取请求所请求的数据是否在压缩存储器块中;响应于存储器访问读取请求所请求的数据不在压缩存储器块中的确定,将存储器访问读取请求转发到物理计算机存储器;响应于存储器访问读取请求所请求的数据在压缩存储器块中的确定,确定来自压缩存储器块的数据是否已经被先前解压缩并存储在硬件设备本地的专用存储介质中;响应于来自压缩存储器块的数据被存储在存储介质中的确定,响应于存储器访问读取请求从存储介质返回数据;以及响应于来自压缩存储器块的数据未被存储在存储介质中的确定,在存储介质中分配存储空间;从压缩存储器块读取数据;将来自压缩存储器块的读取数据解压缩到存储介质中;以及响应于存储器访问读取请求从存储介质返回解压缩的数据。
在另一个实施例中,解压缩器的硬件设备被配置为:从压缩存储器块读取数据,直到存储器访问读取请求所请求的数据被定位;以及将来自压缩存储器块的读取数据解压缩到存储介质中,仅到所请求的数据被完全检索的点。
在另一个实施例中,解压缩器的硬件设备被配置为通过检查存储关于虚拟存储器页的信息的页表结构的未使用的位来确定存储器访问读取请求所请求的数据是否在压缩存储器块中。
在另一个实施例中,解压缩器的硬件设备被配置为在完全存储器解压缩模式和部分存储器解压缩模式之间选择性地交替。
在另一个实施例中,解压缩器的硬件设备被配置为基于与所接收的存储器访问读取请求相关联的设备或程序的一个或多个性能参数在完全存储器解压缩模式和部分存储器解压缩模式之间交替。
在另一个实施例中,解压缩器的硬件设备被配置为基于从与所接收的存储器访问读取请求相关联的设备或程序接收的信号,在完全存储器解压缩模式和部分存储器解压缩模式之间交替。
本公开的另一实施例涉及一种用于存储器解压缩的方法,所述方法包括:接收存储器访问读取请求,所接收到的请求导致高速缓存未命中或页错误发生;确定存储器访问读取请求所请求的数据是否在压缩存储器块中;响应于确定存储器访问读取请求所请求的数据不在压缩存储器块中,将存储器访问读取请求发送到物理计算机存储器;响应于确定存储器访问读取请求所请求的数据在压缩存储器块中,确定来自压缩存储器块的数据是否已经被硬件解压缩设备先前解压缩并存储在硬件解压缩设备本地的专用存储介质中;响应于确定来自压缩存储器块的数据被存储在硬件解压缩设备本地的专用存储介质中,响应于所接收的存储器访问读取请求从存储介质返回数据;以及响应于确定来自压缩存储器块的数据未被存储在硬件解压缩设备本地的专用存储介质中,在硬件解压缩设备本地的存储介质中分配存储空间;从压缩存储器块读取数据;将来自压缩存储器块的读取数据解压缩到硬件解压缩设备本地的存储介质中;以及响应于存储器访问读取请求,从存储介质返回解压缩的数据。
在另一个实施例中,用于存储器解压缩的方法还包括:从压缩存储器块读取数据,直到存储器访问读取请求所请求的数据被定位;以及将来自压缩存储器块的读取数据解压缩到硬件解压缩设备本地的存储介质中仅到所请求的数据被完全检索的点。
在另一个实施例中,用于存储器解压缩的方法还包括通过检查存储关于虚拟存储器页的信息的页表结构的未使用的位来确定存储器访问读取请求所请求的数据是否在压缩存储器块中。
在另一个实施例中,用于存储器解压缩的方法还包括在完全存储器解压缩模式和部分存储器解压缩模式之间选择性地交替。
本公开的另一个实施例涉及一种用于存储器解压缩的系统,该系统包括:系统存储器;耦合到系统存储器的至少一个处理器;以及与至少一个处理器相关联的非暂时计算机可读介质,所述非暂时介质具有其实所存储的指令,当由所述至少一个处理器执行时使至少一个处理器:接收存储器访问读取请求,所接收的请求导致高速缓存未命中或页错误发生;确定存储器访问读取请求所请求的数据是否在压缩存储器块中;响应于确定存储器访问读取请求所请求的数据不在压缩存储器块中,将存储器访问读取请求发送到物理计算机存储器;响应于确定存储器访问读取请求所请求的数据在压缩存储器块中,确定来自压缩存储器块的数据是否已被先前解压缩并存储在至少一个处理器本地的存储介质中;响应于确定来自压缩存储器块的数据被存储在存储介质中,响应于所接收的存储器访问读取请求而从存储介质返回数据;以及响应于确定来自压缩存储器块的数据未被存储在存储介质中,在存储介质中分配存储空间;从压缩存储器块读取数据;将来自压缩存储器块的读取数据解压缩到存储介质中;以及响应于存储器访问读取请求,从存储介质返回解压缩的数据。
在一个或多个其它实施例中,本文描述的方法和系统可以可选地包括以下附加特征中的一个或多个:硬件解压缩设备布置在处理单元的最后一级高速缓存与物理计算机存储器之间;完全存储器解压缩模式和部分存储器解压缩模式之间的交替基于与所接收的存储器访问读取请求相关联的设备或程序的一个或多个性能参数;和/或完全存储器解压缩模式和部分存储器解压缩模式之间的交替是基于从与所接收的存储器访问读取请求相关联的设备或程序接收的信号。
应当注意,本文公开的一些或全部处理器和存储器系统的实施例也可以被配置为执行上述公开的方法实施例中的一些或全部。此外,上述方法中的一些或所有方法的实施例也可以表示为在暂时或非暂时的处理器可读存储介质(诸如,光或磁存储器)上体现的指令,或表示为经由诸如互联网或电话连接的通信网络提供给处理器或数据处理设备的传播信号。
从下面给出的具体实施方式中,本公开的方法和系统的适用性的其它范围将变得显而易见。然而,应当理解的是,具体实施方式和具体实施例虽然指出了方法和系统的实施例,但是仅以说明的方式给出,因为在本文公开的概念的精神和范围内的各种改变和修改对于本领域技术人员根据该具体实施方式将变得显而易见。
附图说明
通过结合所附权利要求和附图对以下具体实施方式的研究,本公开的这些和其它目的、特征和特性将对于本领域技术人员将变得更加明显,所有这些形成本说明书的一部分。在图中:
图1是图示出根据本文所述的一个或多个实施例的硬件辅助存储器解压缩的示例系统的框图。
图2是图示出根据本文所述的一个或多个实施例的使用自定义解压缩硬件的存储器解压缩的示例方法的流程图。
图3是图示出根据本文所述的一个或多个实施例的存储器压缩的示例方法的流程图。
图4是图示出根据本文所述的一个或多个实施例的由硬件解压缩器存储器块的部分解压缩的示例的框图。
图5是图示出根据本文所述的一个或多个实施例的使用由CPU或用于存储器转换的设备使用的现有页表数据结构对压缩存储器的地址进行编码的示例方案的框图。
图6是图示出根据本文所述的一个或多个实施例的布置用于透明存储器解压缩的示例计算设备的框图。
本文提供的标题仅为方便起见,并不一定影响本发明要求保护的范围或含义。
在附图中,相同的附图标记和任何首字母缩略词识别具有相同或相似结构或功能的元件或动作,以便于理解和方便。在下面的具体实施方式的过程中将详细描述附图。
具体实施方式
现在将描述本公开的方法和系统的各种示例和实施例。以下描述提供了对这些示例的透彻理解和实现描述的具体细节。然而,本领域技术人员将理解,可以在没有这些细节的许多细节的情况下实践本文描述的一个或多个实施例。类似地,本领域的技术人员还将理解,本公开的一个或多个实施例可以包括本文中未详细描述的其它特征。此外,一些众所周知的结构或功能可能在下面不能被显示或描述,以避免不必要地模糊相关描述。
如上所述,许多现有的存储器解压缩手段仅基于软件,并且因此遭受导致程序的增加的能量消耗和降低的执行速度的许多问题(例如上述问题(i)-(iii))及其相关费用。
本公开的一个或多个实施例涉及用于存储器解压缩的方法和系统,其通过向存储器子系统添加自定义硬件来消除与现有技术相关联的缺点。如将在下面更详细描述的,自定义硬件通过读取压缩块,将其解压缩进入内部缓冲区,并返回块的请求部分来处理由例如高速缓存未命中或从设备(例如,图形处理单元(GPU))到压缩存储器块的请求引起的读访问。
根据至少一个实施例,自定义硬件被设计或以其它方式配置为通过检查访问的物理地址的未使用的高位来确定块是否被压缩(并且确定压缩的参数)。这样的实施例允许在没有附加元数据的情况下实现压缩,因为必要的元数据可以存储在现有页表结构中的未使用的位中。
根据本公开的一个或多个实施例,硬件可以可选地使用例如最近使用的或一些其它替换策略来在内部缓冲区中缓存未压缩块图像。这降低了硬件解压缩器读取压缩块图像所需的带宽和能量,并且还减少了自定义硬件用于解压缩块的能量。
可以使用如根据本公开的一个或多个实施例的允许在没有软件参与的情况下解压缩存储器块的硬件方案来实现超过上述现有技术的优点。本文描述的自定义硬件能够实现这种方案。
图1是用于硬件辅助存储器解压缩的示例系统。根据本公开的一个或多个实施例,系统100(其可以是存储器子系统)可以包括专门设计或配置用于解压缩存储器块同时最小化(或消除)相关联的解压缩软件的任何参与的自定义硬件解压缩器120。
解压缩器120可以从CPU最后一级高速缓存110和/或一个或多个设备115(例如,GPU)接收读取存储器请求(170、180),其中读取存储器请求(170、180)是访问物理存储器130的部分的请求。解压缩器120可以分析从CPU最后一级高速缓存110和/或设备115接收的读取存储器请求(170、180),以确定请求是否用于访问物理存储器130的压缩块135或未压缩块140。例如,如果解压缩器120确定对于给定的读取请求不需要访问压缩块135,则解压缩器120可以将存储器读取请求(160)旁路到物理存储器130(例如,存储器读取请求可以例如传递到存储器控制器),从物理存储器130检索或以其它方式获得所请求的未压缩存储器块(155),并将请求的存储器块(165、175)提供给请求方(例如,CPU最后一级高速缓存110或设备115)。
在另一示例中,如果解压缩器120基于分析给定读请求(170、175)来确定对于读请求需要访问物理存储器130的压缩块135,则解压缩器120可以使用读取请求(150)从物理存储器130提取所请求的压缩块(145),解压缩压缩块,并将请求的存储器块(165、175)提供给请求方(例如,CPU最后一级高速缓存110或设备115)。
尽管在本公开的至少一个实施例中,解压缩器120(其可以是例如硬件解压缩器)可以布置在CPU110的最后一级高速缓存或设备115和物理存储器130之间,应该注意,某些CPU或设备没有任何高速缓存,或者可能绕过高速缓存执行访问。因此,根据一个或多个其它实施例,当在此提及来自最后一级高速缓存的请求时,应当理解的是,还应描述可以不具有高速缓存或者可以能够绕过这样的高速缓存的设备和CPU,因此110可以是处理器,或诸如微控制器的处理器设备或者进行读取存储器请求的其它设备。
图2图示出了使用专门设计为排除(obviate)对软件参与的需要的解压缩硬件的存储器解压缩的示例过程200。根据本文所述的一个或多个实施例,用于存储器解压缩的示例方法200中的框205-240可以由自定义解压缩硬件(例如,图1所示的示例系统100中的解压缩器120)来执行。
在框205处,硬件可以接收存储器读取请求,并且在框210处,硬件可以分析读取访问以确定所请求的访问是否是对存储器的压缩块。如果在框210处确定访问是对未被压缩的存储器块,则在框235处,硬件可以将存储器读取请求旁路到物理存储器(例如,存储器读取请求可以被传到存储器控制器)。另一方面,如果在框210处确定所请求的访问是对存储器的压缩块,则解压缩硬件可以开始处理对压缩块的访问的过程(例如,框215-230)。
例如,根据至少一个实施例,解压缩硬件可以通过检查将未被使用的高阶位(high-order bit)来分析读取访问(例如,在框210处),因为它们是指未映射到任何RAM或物理设备的物理存储器。如果高阶位指示存储器未被压缩,则存储器读取请求可以被传到存储器控制器(例如,在框235处)。如果高阶位指示访问是对存储器的压缩块,则自定义硬件可以开始处理对压缩块的访问的过程(例如,框215-230)。
在框215处,硬件解压缩器可以确定解压缩数据块(例如,块的解压缩图像)是否在其内部缓冲区中。例如,根据至少一个实施例,硬件解压缩器可以可选地将未压缩块图像高速缓存在其一个或多个内部缓冲区中(例如,使用最近使用的或一些其他代替策略)。如果硬件解压缩器在块215确定解压缩块在内部缓冲区中,则在框240处,解压缩器可以将解压缩块的请求部分返回给请求方。
如果在框215处,硬件解压缩器确定解压缩块未被高速缓存在其内部缓冲区之一中,则解压缩器可以在一个或多个其内部缓冲区中分配空间(在框220处),并且在硬件读取压缩图像时(在框225处),硬件可以将图像解压缩到其一个或多个内部缓冲区中(例如,在框230处)。
一旦硬件解压缩器确定块的所请求的部分被解压缩并且在其内部缓冲区中(例如,在框230处),则所请求的解压缩部分可以被返回到请求方(例如,在框240处)。
图3图示出了根据本文所述的一个或多个实施例的处理CPU或设备对存储器的写入的示例过程300。
在框305处,可以接收存储器写入请求,并且在框310处,可以作出关于所接收的写入请求是对压缩数据还是未压缩数据(例如,所接收的写入是否对压缩存储器块)的确定。根据至少一个实施例,如果在框310处确定所接收的写入是对未被压缩的存储器块,则可以将该写入旁路到物理存储器(在框335处)。另一方面,如果所接收的写入是对存储器的压缩块,则在这样的实施例中,该块先前已经在CPU或设备的页表中被标记为只读,并且在写入时,页错误被生成(在框315处)。
页错误的处置器(在框315处生成)可以执行块到物理存储器的解压缩(在框320处),更新页表以具有对未压缩的存储器块的可写引用(在框325),并重新开始写访问(在框330处)。
图4图示出了硬件解压缩器的存储器块的部分解压缩400的示例。除了其它优点之外,这种部分解压缩使得在尚未解压缩部分被处理之前请求的存储器可用,从而减少访问的延迟。
根据本文所描述的一个或多个实施例,可以将硬件解压缩器(例如,图1所示的示例系统100中的解压缩器120)设计或配置为向请求方410(例如,CPU高速缓存或设备,诸如例如图1所示的示例系统100中的CPU最后一级高速缓存110或设备115)返回在整个块在解压缩器的内部缓冲区415中被解压缩之前的所请求的存储器块440的子集或部分。根据至少一个实施例,一旦存储器440的所请求的部分已被解压缩到硬件解压缩器的内部缓冲区415中,则硬件解压缩器可以继续将存储器的块解压缩到内部缓冲区415中,或者解压缩器可以停止内部缓冲区415中的不完全解压缩的块。例如,内部缓冲区415可以包括块的解压缩部分420和块的尚未解压缩部分450。
根据本公开的一个或多个实施例,硬件解压缩器可以具有在完全和部分存储器解压缩之间交替的可选择或以其他方式可调整的或自调整的配置(例如,硬件可以被配置为在完全存储器解压缩模式和部分存储器解压缩模式之间可选择地交替)。在一些这样的实施例中,完全和部分解压缩模式之间的自动切换可以由(例如,基于)CPU、GPU(图形处理单元)和/或其它硬件或软件数据处理设备或硬件解压缩器正在为其提取数据的程序(例如,与由硬件解压缩器接收的存储器访问读取请求相关联的设备或程序)的一个或多个性能要求(例如,性能参数)管理。
根据至少一个实施例,硬件解压缩器可以被配置为在安装或激活期间在完全和部分解压缩模式之间进行一次性选择。此外,根据至少一个实施例,硬件解压缩器可以被配置为基于从CPU、GPU和/或其它设备或软件接收的信号在完全和部分解压缩模式之间切换,其可以或可以不与由硬件解压缩器接收的存储器访问读取请求相关联。
应当注意,根据至少一个实施例,硬件解压缩器可以具有多于一个的内部缓冲区,并且在该实施例中,解压缩器可以将未压缩(或解压缩的)块图像保存在内部缓冲区之一中。在随后访问相同的块时,硬件解压缩器可以返回结果而无需执行解压缩且无需读取压缩图像。此外,在一个或多个其它实施例中,硬件解压缩器可以设计成在没有内部缓冲区的情况下操作。
图5是根据本文所述的一个或多个实施例,使用由CPU或用于存储器转换的设备使用的现有页表数据结构对压缩存储器的地址进行编码的方案500。图示出的是表页如何操作的示例,以及可以如何扩展页表以存储定位存储器的压缩块所需的附加信息。虚拟地址505由CPU或设备作为存储器请求的一部分提供。虚拟地址505由虚拟页码510和页内偏移515组成。存储器转换单元520(存储器管理单元)咨询页转换单元525以将虚拟页码510转变为物理页码535和访问保护位(未示出)。
物理页码535和页内偏移540(等于虚拟地址505的页内偏移515)的组合产生物理地址530。物理地址530可以以两种格式之一呈现:未压缩块的物理地址545或压缩块的物理地址560。如果物理地址530是未压缩块545的物理地址,则地址(550)的一些位可能未被使用,并且剩余的位(555)提供将被传递到存储器子系统的未压缩块的物理地址。如果物理地址530是压缩块560的物理地址,则位565提供压缩存储器的物理地址和解压缩所需的附加标志(例如,压缩过程或方法)。根据本公开的至少一个实施例,硬件可以基于例如每种格式的描述符位(例如,用于物理地址545的描述符位570,其为“0”,以及物理地址560的描述符位575,其为“1”)来决定使用哪种物理地址格式(545、560)。
除了指示页是否被压缩之外,例如页表条目的未使用的位可以用于指示压缩参数(例如,压缩过程或方法)。块的压缩通过软件编排(orchestrate)。根据本公开的至少一个实施例,虚拟存储器页可以用作压缩块。这样,当OS(操作系统)内核检测到特定的页被不经常访问时,它可以将其压缩到单独的缓冲区。之后,OS内核可以更改页表条目以引用压缩图像,并且还可以在页表条目中设置物理地址的未使用的高位,以指示页被压缩(以及压缩参数)。OS内核还可以将压缩页标记为“只读”。例如,可以在硬件解压缩器被配置为仅处理读取访问的一个或多个实施例中完成。根据一个或多个其它实施例,页将在写访问上被解压缩。
根据一个或多个实施例,本文描述的硬件解压缩器可以被配置或设计以便允许现有的存储器层级用于访问大于请求的大小的压缩块。通常,对于较大的块压缩率较高。根据本公开的一个或多个实施例描述的硬件解压缩器消除(或基本上消除或最小化)软件参与对压缩块的读取访问。这通过移除处理对压缩块的读取访问中的软件参与来提高性能并降低能耗。这样的实施例也不需要附加RAM来读取压缩块。这降低了进入所谓的抖动状态的可能性,抖动状态导致用户体验差。因为使用这种方法访问成本和抖动概率大幅降低,所以在此描述的硬件解压缩器的一个或多个实施例可以允许更大部分的存储器被压缩,从而能够实现具有较小量RAM的较便宜的系统。
还应当注意,根据本公开的一些实施例,代替将解压缩块存储到内部缓冲区中,硬件解压缩器可以将解压缩块存储为单独的、潜在地更节能或更快的存储设备。以这种方式,对相同块的访问将需要较少的解压缩和对压缩图像的读取。
替选实施方式可以将解压缩硬件放置在不同级别的高速缓存层级中,和/或将解压缩硬件嵌入到可能需要透明解压缩的设备中,或者在非高速缓存存储器缓冲区(例如,本地GPU存储器)和高速缓存/RAM之间。在其它示例中,硬件解压缩器可以是连接芯片上系统的不同部分的总线的一部分,可以嵌入存储器控制器中,或嵌入在存储器芯片中。这样的替选实施方式在设计复杂性、能量消耗和性能方面提供不同的折衷。例如,将硬件解压缩器嵌入到CPU高速缓存控制器和/或可能需要透明解压缩的设备中减少了总线的带宽要求和能量消耗,因为在这种情况下,压缩数据将必须在总线上传输而代替更大的未压缩数据。
根据一个或多个实施例,本文所述的硬件解压缩器可以被配置为使用或采用存储关于压缩的信息的不同方式。例如,代替页表的高阶位,可以将关于压缩数据的元数据存储在软件管理的转换-后备缓冲区(TLB)的存储器描述寄存器或位中,或者专门创建用于处理压缩的某些元数据中。另外的替选配置可以通过改变元数据来组合压缩和去重,使得具有相同内容的块共享相同的压缩图像。
根据本公开的一个或多个实施例,代替使用诸如本文所描述的硬件解压缩器,方法和系统可以使用例如能够执行硬件解压缩的专用CPU,或者可以利用在导致页未命中的同一CPU上运行的一段代码。根据一些这样的实施例,高速缓存线未命中将产生类似于页错误的CPU异常。该异常的处置器将会识别该异常是由尝试或访问压缩数据的请求引起的。然后,处置器将以本文所述的方式将页解压缩到内部缓冲区中,然后将以特殊模式重新启动导致未命中的指令。在这种特殊模式下,指令将使用的数据将来自包含未压缩数据的内部缓冲区,而不是导致未命中的地址处的数据。
在许多其它优点和益处中,如本文所述使用硬件解压缩器执行存储器解压缩通过提供具有较少量的已安装RAM的类似性能来改善性能,降低能量消耗并降低构建硬件的成本。
图6是根据本文所述的一个或多个实施例的被布置用于透明存储器解压缩的示例性计算设备(600)的高级框图。在非常基本的配置(601)中,计算设备(600)通常包括一个或多个处理器(610)和系统存储器(620)。存储器总线(630)可以用于处理器(610)和系统存储器(620)之间的通信。
根据期望的配置,处理器(610)可以是任何类型的,包括但不限于微处理器(μP)、微控制器(μC)、数字信号处理器(DSP)等,或任何的组合。处理器(610)可以包括一级或多级高速缓存,诸如一级高速缓存(611)和二级高速缓存(612)、处理器核心(613)和寄存器(614)。处理器核心(613)可以包括算术逻辑单元(ALU)、浮点单元(FPU)、数字信号处理核心(DSP核心)等,或其任何组合。存储器控制器(615)也可以与处理器(610)一起使用,或者在一些实施方式中,存储器控制器(615)可以是处理器(610)的内部部分。
根据期望的配置,系统存储器(620)可以是任何类型的,包括但不限于易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪速存储器等)或其任何组合。系统存储器(620)通常包括操作系统(621)、一个或多个应用(622)和程序数据(624)。应用(622)可以包括用于透明存储器解压缩的系统(623)。根据本公开的至少一个实施例,用于透明存储器解压缩的系统(623)被设计为消除(或基本上消除或最小化)处理对物理存储器的压缩块的读取访问中的任何软件参与。透明存储器解压缩系统(623)能够实现改进的性能和降低的能耗以及通过实现更简单和更快速的硬件设计来降低成本。
程序数据(624)可以包括存储的指令,当被一个或多个处理设备执行时,实现用于透明存储器解压缩的系统(623)和方法。另外,根据至少一个实施例,程序数据(624)可以包括读取访问数据(625),其可以涉及例如指示所请求的存储器部分是否已经被解压缩的高阶位,或者相反是否需要访问压缩存储器块。根据至少一些实施例,应用(622)可以被布置为与操作系统(621)上的程序数据(624)一起操作。
计算设备(600)可以具有附加特征或功能,以及促进基本配置(601)和任何所需设备和接口之间的通信的附加接口。
系统存储器(620)是计算机存储介质的示例。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪速存储器或其它存储器技术、CD-ROM、数字通用盘(DVD)或其它光学存储器、磁带盒、磁带、磁盘存储器或其它磁存储设备或可用于存储所需信息并且可由计算设备600访问的任何其它介质。任何这样的计算机存储介质可以是设备(600)的一部分。
计算设备(600)可以被实现为小型便携式(或移动)电子设备的一部分,诸如蜂窝电话、智能电话、个人数据助理(PDA)、个人媒体播放器设备、平板计算机(平板电脑)、无线web收看设备、个人耳机设备、特定于应用的设备或包括任何上述功能的混合设备。此外,计算设备(600)还可以实现为包括膝上型计算机和非膝上型计算机配置的个人计算机、一个或多个服务器、物联网系统等。
前面的详细描述已经通过使用框图、流程图和/或示例来阐述了设备和/或过程的各种实施例。只要这些框图、流程图和/或示例包含一个或多个功能和/或操作,本领域技术人员将会理解,通过各种硬件、软件、固件或其实际上的任何组合单独地和/或共同地进行,可以实现这些框图、流程图或示例中的每个功能和/或操作。根据至少一个实施例,本文描述的主题的几个部分可以经由专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)或其它集成格式来实现。然而,本领域技术人员将认识到,本文公开的全部或部分实施例的某些方面可以在集成电路中等同地实现,作为在一个或多个计算机上运行的一个或多个计算机程序,作为在一个或多个处理器上运行的一个或多个程序,作为固件或其虚拟任何组合,并且设计电路和/或编写软件和/或固件的代码将完全属于本领域技术人员根据本公开已知的。
此外,本领域技术人员将会理解,本文所述主题的机制能够作为多种形式的程序产品分发,并且本文描述的主题的说明性实施例适用于用于实际执行分配的特定类型的非暂时信号承载介质。非暂时信号承载介质的示例包括但不限于以下:可记录型介质,诸如软盘、硬盘驱动器、压缩盘(CD)、数字视频盘(DVD)、数字磁带、计算机存储器等;以及传输型介质,诸如数字和/或模拟通信介质(例如,光纤电缆、波导、有线通信链路、无线通信链路等)。
对于本文中基本上任何复数和/或单数术语的使用,本领域技术人员可以将复数形式转换为单数形式和/或从单数形式转换为复数形式,如适用于上下文和/或应用。为了清楚起见,可以在此明确阐述各种单数/复数置换。
因此,已经描述了主题的特定实施例。其它实施例在所附权利要求的范围内。在一些情况下,权利要求中所述的动作可以以不同的顺序执行并且仍然实现期望的结果。此外,附图中所描绘的过程不一定需要所示的特定顺序或顺序来获得期望的结果。在某些实现中,多任务和并行处理可能是有利的。

Claims (14)

1.一种硬件解压缩器,所述解压缩器包括:
硬件设备(120),所述硬件设备布置在处理单元(110)和物理计算机存储器(130)之间,其中所述硬件设备被配置为:
接收存储器访问读取请求,所接收到的请求导致高速缓存未命中或页错误;
确定所述存储器访问读取请求所请求的数据是否在压缩存储器块(135)中;
响应于确定所述存储器访问读取请求所请求的所述数据不在所述压缩存储器块中,将所述存储器访问读取请求转发到所述物理计算机存储器;
响应于确定所述存储器访问读取请求所请求的所述数据在所述压缩存储器块中,确定来自所述压缩存储器块的所述数据是否已经被先前解压缩并存储在所述硬件设备本地的专用存储介质中;
响应于确定来自所述压缩存储器块的所述数据被存储在所述存储介质中,响应于所述存储器访问读取请求从所述存储介质返回所述数据;以及
响应于确定来自所述压缩存储器块的所述数据未被存储在所述存储介质中,
在所述存储介质中分配存储空间;
从所述压缩存储器块读取所述数据;
将来自所述压缩存储器块的读取数据解压缩到所述存储介质中;以及
响应于所述存储器访问读取请求,从所述存储介质返回所述解压缩的数据。
2.根据权利要求1所述的硬件解压缩器,其中,所述硬件设备被配置为:
从所述压缩存储器块读取所述数据,直到所述存储器访问读取请求所请求的所述数据被定位;以及
将来自所述压缩存储器块的所述读取数据解压缩到所述存储介质中仅到所请求的数据被完全检索的点。
3.根据权利要求1所述的硬件解压缩器,其中,所述硬件设备被配置为:
通过检查页表结构的未使用的位来确定所述存储器访问读取请求所请求的所述数据是否在所述压缩存储器块中,所述页表结构存储关于虚拟存储器页的信息。
4.根据权利要求1所述的硬件解压缩器,其中,所述硬件设备被配置为:
在完全存储器解压缩模式和部分存储器解压缩模式之间选择性地交替,其中在所述完全存储器解压缩模式中,来自所述压缩存储器块的数据被完全解压缩,以及在所述部分存储器解压缩模式中,来自所述压缩存储器块的数据被部分解压缩。
5.根据权利要求4所述的硬件解压缩器,其中,所述硬件设备被配置为:
基于与所接收的存储器访问读取请求相关联的设备或程序的一个或多个性能参数,在所述完全存储器解压缩模式和所述部分存储器解压缩模式之间交替。
6.根据权利要求4所述的硬件解压缩器,其中,所述硬件设备被配置为:
基于从与所接收的存储器访问读取请求相关联的设备或程序接收的信号,在所述完全存储器解压缩模式和所述部分存储器解压缩模式之间交替。
7.一种用于通过硬件解压缩设备执行存储器解压缩的方法(200),所述方法包括:
接收(205)存储器访问读取请求,所接收的请求导致高速缓存未命中或页错误发生;
确定(210)所述存储器访问读取请求所请求的数据是否在压缩存储器块中;
响应于确定所述存储器访问读取请求所请求的所述数据不在压缩存储器块中,将所述存储器访问读取请求发送(235)到物理计算机存储器;
响应于确定所述存储器访问读取请求所请求的所述数据在压缩存储器块中,确定(215)来自所述压缩存储器块的数据是否已经被所述硬件解压缩设备先前解压缩并存储在所述硬件解压缩设备本地的专用存储介质中;
响应于确定来自所述压缩存储器块的所述数据被存储在所述硬件解压缩设备本地的所述专用存储介质中,响应于所接收的存储器访问读取请求从所述存储介质返回(240)所述数据;以及
响应于确定来自所述压缩存储器块的所述数据未被存储在所述硬件解压缩设备本地的所述专用存储介质中,
在所述硬件解压缩设备本地的所述存储介质中分配(220)存储空间;
从所述压缩存储器块读取(225)所述数据;
将来自所述压缩存储器块的读取数据解压缩(230)到所述硬件解压缩设备本地的所述存储介质中;以及
响应于所述存储器访问读取请求,从所述存储介质返回(240)所述解压缩的数据。
8.根据权利要求7所述的方法,其中,所述硬件解压缩设备布置在处理单元和所述物理计算机存储器之间。
9.根据权利要求7所述的方法,还包括:
从所述压缩存储器块读取所述数据,直到所述存储器访问读取请求所请求的所述数据被定位;以及
将来自所述压缩存储器块的所述读取数据解压缩到所述硬件解压缩设备本地的所述存储介质中仅到所请求的数据被完全检索的点。
10.根据权利要求7所述的方法,还包括:
通过检查页表结构的未使用的位来确定所述存储器访问读取请求所请求的所述数据是否在所述压缩存储器块中,所述页表结构存储关于虚拟存储器页的信息。
11.根据权利要求7所述的方法,还包括:
在完全存储器解压缩模式和部分存储器解压缩模式之间选择性地交替,其中在所述完全存储器解压缩模式中,来自所述压缩存储器块的数据被完全解压缩,以及在所述部分存储器解压缩模式中,来自所述压缩存储器块的数据被部分解压缩。
12.根据权利要求11所述的方法,其中,在所述完全存储器解压缩模式和所述部分存储器解压缩模式之间的所述交替基于与所接收的存储器访问读取请求相关联的设备或程序的一个或多个性能参数。
13.根据权利要求11所述的方法,其中,在所述完全存储器解压缩模式和所述部分存储器解压缩模式之间的所述交替基于从与所接收的存储器访问读取请求相关联的设备或程序接收的信号。
14.一种用于存储器解压缩的系统,所述系统包括:
系统存储器;
至少一个处理器,所述至少一个处理器耦合到所述系统存储器;以及
与所述至少一个处理器相关联的非暂时计算机可读介质,所述非暂时计算机可读介质具有其上所存储的指令,所述指令当由所述至少一个处理器执行时使所述至少一个处理器执行根据权利要求7-13中任何一项所述的方法。
CN201680009932.XA 2015-02-13 2016-02-12 透明硬件辅助存储器解压缩 Active CN107250991B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201562116053P 2015-02-13 2015-02-13
US62/116,053 2015-02-13
PCT/US2016/017745 WO2016130915A1 (en) 2015-02-13 2016-02-12 Transparent hardware-assisted memory decompression

Publications (2)

Publication Number Publication Date
CN107250991A CN107250991A (zh) 2017-10-13
CN107250991B true CN107250991B (zh) 2020-08-28

Family

ID=55487115

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201680009932.XA Active CN107250991B (zh) 2015-02-13 2016-02-12 透明硬件辅助存储器解压缩

Country Status (4)

Country Link
US (2) US9864541B2 (zh)
CN (1) CN107250991B (zh)
DE (1) DE112016000726T5 (zh)
WO (1) WO2016130915A1 (zh)

Families Citing this family (17)

* 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
WO2016130915A1 (en) 2015-02-13 2016-08-18 Google Inc. Transparent hardware-assisted memory decompression
GB2543306B (en) * 2015-10-14 2019-05-01 Advanced Risc Mach Ltd Exception handling
US20180060235A1 (en) * 2016-08-30 2018-03-01 Intel Corporation Non-volatile memory compression devices and associated methods and systems
US10546393B2 (en) * 2017-12-30 2020-01-28 Intel Corporation Compression in machine learning and deep learning processing
US10504248B2 (en) * 2018-03-30 2019-12-10 Microsoft Technology Licensing, Llc Machine learning applied to textures compression or upscaling
CN112083875B (zh) * 2019-06-12 2022-09-30 三星电子株式会社 用于在存储系统中减少读取端口并加速解压缩的方法
US11221770B2 (en) 2019-12-03 2022-01-11 International Business Machines Corporation Providing a dynamic random-access memory cache as second type memory
JP7197541B2 (ja) * 2020-04-01 2022-12-27 株式会社日立製作所 ストレージ装置
US11586554B2 (en) * 2020-07-23 2023-02-21 Arm Limited Cache arrangements for data processing systems
GB2601183B (en) * 2020-11-23 2022-11-16 Advanced Risc Mach Ltd Data processing systems
US20220197816A1 (en) * 2020-12-22 2022-06-23 Intel Corporation Compressed cache memory with parallel decompress on fault
US20220365829A1 (en) * 2021-05-13 2022-11-17 Nvidia Corporation Data compression api
CN113300715B (zh) * 2021-05-20 2022-08-19 山东云海国创云计算装备产业创新中心有限公司 一种数据处理方法、装置、硬件压缩设备以及介质
CN113626092A (zh) * 2021-10-14 2021-11-09 广州匠芯创科技有限公司 嵌入式系统启动方法与soc芯片
US20230169020A1 (en) * 2021-11-30 2023-06-01 Honeywell International Inc. Lzo decompression in external storage
US20230171229A1 (en) * 2021-11-30 2023-06-01 Nxp Usa, Inc. Hardware firewalls with adaptive deny-by-default (dbd) access control

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1425986A (zh) * 2003-01-17 2003-06-25 清华大学 自动压缩/解压缩文件系统及其压缩算法
CN1728281A (zh) * 2004-07-28 2006-02-01 北京九州计算机网络有限公司 一种内含压缩和解压缩功能的移动存储装置
US20080059728A1 (en) * 2006-09-06 2008-03-06 David Michael Daly Systems and methods for masking latency of memory reorganization work in a compressed memory system
CN101206618A (zh) * 2006-09-08 2008-06-25 三星电子株式会社 融合式存储器设备及方法
JP2010165151A (ja) * 2009-01-15 2010-07-29 Mitsubishi Electric Corp データアクセス装置及びデータアクセスプログラム
CN101996660A (zh) * 2009-08-17 2011-03-30 联发科技股份有限公司 数据压缩/解压缩方法、数据解压缩方法及光盘驱动器
CN102012794A (zh) * 2010-11-19 2011-04-13 北京兆易创新科技有限公司 一种固态硬盘及其访问控制方法、一种固态硬盘控制器
CN102129873A (zh) * 2011-03-29 2011-07-20 西安交通大学 提高计算机末级高速缓存可靠性的数据压缩装置及其方法
CN102792296A (zh) * 2011-08-15 2012-11-21 展讯通信(上海)有限公司 移动终端中请求页面调度方法、控制器以及移动终端
WO2014049636A1 (en) * 2012-09-25 2014-04-03 Hitachi, Ltd. Storage apparatus and method of controlling the same
CN104216682A (zh) * 2013-10-18 2014-12-17 威盛电子股份有限公司 微处理器以及选择性解压缩微程序码的相关方法

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0628108A (ja) * 1992-07-09 1994-02-04 Hitachi Ltd データ記憶システム
US6002411A (en) 1994-11-16 1999-12-14 Interactive Silicon, Inc. Integrated video and memory controller with data processing and graphical processing capabilities
US6170047B1 (en) * 1994-11-16 2001-01-02 Interactive Silicon, Inc. System and method for managing system memory and/or non-volatile memory using a memory controller with integrated compression and decompression capabilities
US6067199A (en) * 1997-06-30 2000-05-23 Emc Corporation Method and apparatus for increasing disc drive performance
US6028725A (en) * 1997-06-30 2000-02-22 Emc Corporation Method and apparatus for increasing disc drive performance
US6879266B1 (en) * 1997-08-08 2005-04-12 Quickshift, Inc. Memory module including scalable embedded parallel data compression and decompression engines
US6092071A (en) * 1997-11-04 2000-07-18 International Business Machines Corporation Dedicated input/output processor method and apparatus for access and storage of compressed data
US6564305B1 (en) * 2000-09-20 2003-05-13 Hewlett-Packard Development Company Lp Compressing memory management in a device
US7047382B2 (en) 2000-11-29 2006-05-16 Quickshift, Inc. System and method for managing compression and decompression and decompression of system memory in a computer system
US6877081B2 (en) * 2001-02-13 2005-04-05 International Business Machines Corporation System and method for managing memory compression transparent to an operating system
US6829691B2 (en) * 2002-06-28 2004-12-07 Hewlett-Packard Development, L.P. System for compressing/decompressing data
US6968424B1 (en) * 2002-08-07 2005-11-22 Nvidia Corporation Method and system for transparent compressed memory paging in a computer system
JP2006524858A (ja) 2003-04-16 2006-11-02 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ メモリに記憶されたデータに圧縮を使用するデータ処理装置
US7437364B1 (en) * 2004-06-30 2008-10-14 Google Inc. System and method of accessing a document efficiently through multi-tier web caching
US7433994B2 (en) * 2004-12-07 2008-10-07 Ocz Technology Group, Inc. On-device data compression to increase speed and capacity of flash memory-based mass storage devices
US8473673B2 (en) 2005-06-24 2013-06-25 Hewlett-Packard Development Company, L.P. Memory controller based (DE)compression
US7610541B2 (en) 2006-03-08 2009-10-27 International Business Machines Corporation Computer compressed memory system and method for storing and retrieving data in a processing system
US20110004728A1 (en) * 2009-07-02 2011-01-06 Ocz Technology Group, Inc. On-device data compression for non-volatile memory-based mass storage devices
US20140258247A1 (en) 2013-03-05 2014-09-11 Htc Corporation Electronic apparatus for data access and data access method therefor
CN106663060B (zh) * 2014-10-07 2019-11-19 谷歌有限责任公司 用于缓存线路去重的方法和系统
WO2016130915A1 (en) 2015-02-13 2016-08-18 Google Inc. Transparent hardware-assisted memory decompression
US9965210B2 (en) * 2016-05-27 2018-05-08 Ngd Systems, Inc. System and methods for in-storage on-demand data decompression

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1425986A (zh) * 2003-01-17 2003-06-25 清华大学 自动压缩/解压缩文件系统及其压缩算法
CN1728281A (zh) * 2004-07-28 2006-02-01 北京九州计算机网络有限公司 一种内含压缩和解压缩功能的移动存储装置
US20080059728A1 (en) * 2006-09-06 2008-03-06 David Michael Daly Systems and methods for masking latency of memory reorganization work in a compressed memory system
CN101206618A (zh) * 2006-09-08 2008-06-25 三星电子株式会社 融合式存储器设备及方法
JP2010165151A (ja) * 2009-01-15 2010-07-29 Mitsubishi Electric Corp データアクセス装置及びデータアクセスプログラム
CN101996660A (zh) * 2009-08-17 2011-03-30 联发科技股份有限公司 数据压缩/解压缩方法、数据解压缩方法及光盘驱动器
CN102012794A (zh) * 2010-11-19 2011-04-13 北京兆易创新科技有限公司 一种固态硬盘及其访问控制方法、一种固态硬盘控制器
CN102129873A (zh) * 2011-03-29 2011-07-20 西安交通大学 提高计算机末级高速缓存可靠性的数据压缩装置及其方法
CN102792296A (zh) * 2011-08-15 2012-11-21 展讯通信(上海)有限公司 移动终端中请求页面调度方法、控制器以及移动终端
WO2014049636A1 (en) * 2012-09-25 2014-04-03 Hitachi, Ltd. Storage apparatus and method of controlling the same
CN104216682A (zh) * 2013-10-18 2014-12-17 威盛电子股份有限公司 微处理器以及选择性解压缩微程序码的相关方法

Also Published As

Publication number Publication date
WO2016130915A1 (en) 2016-08-18
US20180095668A1 (en) 2018-04-05
DE112016000726T5 (de) 2017-11-02
CN107250991A (zh) 2017-10-13
US9864541B2 (en) 2018-01-09
US20160239209A1 (en) 2016-08-18
US10203901B2 (en) 2019-02-12

Similar Documents

Publication Publication Date Title
CN107250991B (zh) 透明硬件辅助存储器解压缩
US9740631B2 (en) Hardware-assisted memory compression management using page filter and system MMU
Mittal et al. A survey of architectural approaches for data compression in cache and main memory systems
USRE43483E1 (en) System and method for managing compression and decompression of system memory in a computer system
US20170177497A1 (en) Compressed caching of a logical-to-physical address table for nand-type flash memory
US10572378B2 (en) Dynamic memory expansion by data compression
US9053018B2 (en) Compressed memory page selection based on a population count of a dataset
US9164676B2 (en) Storing multi-stream non-linear access patterns in a flash based file-system
US20210149672A1 (en) Method and apparatus for virtualizing the micro-op cache
US20150143045A1 (en) Cache control apparatus and method
US8954707B2 (en) Automatic use of large pages
JP5583274B2 (ja) コンピュータ・メモリを管理する方法、対応するコンピュータ・プログラム製品、およびそのためのデータ・ストレージ・デバイス
US9063860B2 (en) Method and system for optimizing prefetching of cache memory lines
US20140317337A1 (en) Metadata management and support for phase change memory with switch (pcms)
US10482021B2 (en) Priority-based storage and access of compressed memory lines in memory in a processor-based system
CN107548491B (zh) 用于管理存储器的设备和方法以及存储介质
US11074189B2 (en) FlatFlash system for byte granularity accessibility of memory in a unified memory-storage hierarchy
US20220012183A1 (en) Methods and systems for translating virtual addresses in a virtual memory based system
CN113039530A (zh) 压缩式存储系统的空闲空间管理
US8661169B2 (en) Copying data to a cache using direct memory access
US10838727B2 (en) Device and method for cache utilization aware data compression
US20130318307A1 (en) Memory mapped fetch-ahead control for data cache accesses
US11914527B2 (en) Providing a dynamic random-access memory cache as second type memory per application process
US11461237B2 (en) Methods and systems for translating virtual addresses in a virtual memory based system

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
CB02 Change of applicant information

Address after: American California

Applicant after: Google limited liability company

Address before: American California

Applicant before: Google Inc.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant