CN106663060A - 用于缓存线路去重的方法和系统 - Google Patents

用于缓存线路去重的方法和系统 Download PDF

Info

Publication number
CN106663060A
CN106663060A CN201580043956.2A CN201580043956A CN106663060A CN 106663060 A CN106663060 A CN 106663060A CN 201580043956 A CN201580043956 A CN 201580043956A CN 106663060 A CN106663060 A CN 106663060A
Authority
CN
China
Prior art keywords
write
data
entry
caching
cache lines
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.)
Granted
Application number
CN201580043956.2A
Other languages
English (en)
Other versions
CN106663060B (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 CN106663060A publication Critical patent/CN106663060A/zh
Application granted granted Critical
Publication of CN106663060B publication Critical patent/CN106663060B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • 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/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • 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/12Replacement control
    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • 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
    • 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/0653Monitoring storage devices or 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/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
    • 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
    • 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/0683Plurality of storage devices
    • 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
    • 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/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • 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
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/502Control mechanisms for virtual memory, cache or TLB using adaptive policy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/601Reconfiguration of cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/604Details relating to cache allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/683Invalidation
    • 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

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)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

提供了用于通过检测缓存线路数据模式并且在多个物理地址及其公共数据值之间建立链接列表来对物理存储器中的缓存线路进行去重的方法和系统。按照这种方式,应用所述方法和系统以实现对片上缓存的去重。一种缓存线路过滤器包括限定最通常重复的内容模式的一个表和保存来自所述第一个表的模式编号和所述重复缓存线路的所述物理地址的第二个表。由于能够在写入操作期间检测缓存线路复本,因此每个写入能够涉及表查找和比较。如果在所述表中存在命中,则仅保存所述地址而不是所述整个数据串。

Description

用于缓存线路去重的方法和系统
相关申请的交叉引用
本申请要求2014年10月7日提交的美国临时专利申请序列号62/060,949的优先权,其全部公开内容通过引用合并入本文。
背景技术
已经观察到:在操作系统的存储器中通常存在许多重复的缓存线路。虽然软件有可能扫描存储器并且检测重复的内容,但是按照这样的方式来使用软件通常非常昂贵。相反,更经济并且更有效的途径是使用硬件来检测存储器中的数据模式。
发明内容
本发明内容以简化的形式介绍了对概念的选择以便提供对本公开的一些方面的基本理解。本发明内容不是对本公开的广泛概述,并且不旨在表示本公开的关键或者重要元素或者描绘本公开的范围。本发明内容仅呈现了本公开的概念中的一些以作为下面提供的具体实施方式的前序。
本公开大体上涉及用于管理存储器的方法和系统。更具体地,本公开的方面涉及通过检测缓存线路数据模式并且在多个物理地址及其公共数据值之间建立链接列表来对存储器中的缓存线路进行去重。
本公开的一个实施例涉及一种用于对缓存线路进行去重的方法,该方法包括:检测在对缓存线路的写入中的数据模式;确定该写入的物理地址是否与最后一级缓存中的条目匹配;确定在该写入中的数据模式是否和与该条目相关联的数据模式匹配;以及响应于确定该写入的物理地址与最后一级缓存中的条目匹配,以及确定在写入中的数据模式和与该条目相关联的数据模式匹配,使最后一级缓存中的该条目无效。
在另一实施例中,用于对缓存线路进行去重的方法进一步包括:响应于确定写入的物理地址与最后一级缓存中的条目匹配,以及确定在该写入中的数据模式和与该条目相关联的数据模式匹配,在对应的缓存线路过滤器的表中分配用于该写入的新条目。
在另一实施例中,用于对缓存线路进行去重的方法进一步包括:响应于确定写入的物理地址与最后一级缓存中的条目匹配,以及确定在该写入中的数据模式不同于与该条目相关联的数据模式,利用该写入的数据模式来更新最后一级缓存中的该条目。
在另一实施例中,用于对缓存线路进行去重的方法进一步包括:响应于确定该写入的物理地址不同于最后一级缓存中的所有条目,以及确定在该写入中的数据模式和与最后一级缓存中的条目相关联的数据模式匹配,在对应的缓存线路过滤器的表中分配用于写入的新条目。
在又一实施例中,用于对缓存线路进行去重的方法进一步包括:响应于确定写入的物理地址不同于最后一级缓存中的所有条目,以及确定在该写入中的数据模式不同于与最后一级缓存中的条目相关联的所有数据模式,在最后一级缓存中写入用于该写入的新条目。
本公开的另一实施例涉及一种用于对缓存线路进行去重的系统,该系统包括至少一个处理器和耦合至该至少一个处理器的非暂时性计算机可读介质,其具有存储在其上的指令,该指令在由至少一个处理器执行时致使该至少一个处理器:检测在对缓存线路的写入中的数据模式;确定该写入的物理地址是否与最后一级缓存中的条目匹配;确定在写入中的数据模式是否和与条目相关联的数据模式匹配;以及响应于确定写入的物理地址与最后一级缓存中的条目匹配,以及确定在该写入中的数据模式和与该条目相关联的数据模式匹配,使最后一级缓存中的条目无效。
在另一实施例中,用于对缓存线路进行去重的系统中的至少一个处理器被进一步致使来:响应于确定该写入的物理地址与最后一级缓存中的条目匹配,以及确定在写入中的数据模式和与该条目相关联的数据模式匹配,在对应的缓存线路过滤器的表中分配用于写入的新条目。
在另一实施例中,用于对缓存线路进行去重的系统中的至少一个处理器被进一步致使来:响应于确定该写入的物理地址与最后一级缓存中的条目匹配,以及确定在该写入中的数据模式不同于与条目相关联的数据模式,利用该写入的数据模式来更新最后一级缓存中的条目。
在另一实施例中,用于对缓存线路进行去重的系统中的至少一个处理器被进一步致使来:响应于确定该写入的物理地址不同于最后一级缓存中的所有条目,以及确定在该写入中的数据模式和与最后一级缓存中的条目相关联的数据模式匹配,在对应的缓存线路过滤器的表中分配用于写入的新条目。
在又一实施例中,用于对缓存线路进行去重的系统中的至少一个处理器被进一步致使来:响应于确定该写入的物理地址不同于最后一级缓存中的所有条目,以及确定在写入中的数据模式不同于与最后一级缓存中的条目相关联的所有数据模式,在最后一级缓存中写入用于该写入的新条目。
本公开的再一实施例涉及一种用于在存储器读取操作期间对缓存线路进行去重的方法,该方法包括:在片上缓存线路过滤器的表中执行查找;基于该查找,确定与读取请求相关联的数据是否在缓存线路过滤器中可用;响应于确定与该读取请求相关联的数据在缓存线路过滤器中可用,从缓存线路过滤器获得数据;以及响应于确定与读取请求相关联的数据在缓存线路过滤器中不可用,从最后一级缓存获得数据。
在另一实施例中,用于在存储器读取操作期间对缓存线路进行去重的方法进一步包括:响应于确定与读取请求相关联的数据在缓存线路过滤器中不可用,在工作存储器缓存溢出表中执行查找。
在再一实施例中,用于在存储器读取操作期间对缓存线路进行去重的方法进一步包括:基于该查找,确定与读取请求相关联的数据是被包含在工作存储器缓存中的重复数据。
在又一实施例中,用于在存储器读取操作期间对缓存线路进行去重的方法进一步包括:基于该查找,确定与读取请求相关联的数据存在于工作存储器缓存中;以及从该工作存储器缓存获得数据。
本公开的适用性的进一步范围将根据下面给出的具体实施方式而变得显而易见。然而,应当理解,具体实施方式和特定示例虽然指示优选实施例,但是仅通过说明的方式给出,这是因为在本公开的精神和范围内的各个改变和修改将根据该具体实施方式而对本领域的技术人员变得显而易见。
附图说明
本公开的这些和其它目的、特征、和特性根据与所附权利要求书和附图相结合的以下具体实施方式的研究,将对本领域的技术人员变得更显而易见,其所有内容形成本说明书的一部分。在附图中:
图1是图示了根据本文描述的一个或多个实施例的、用于对存储器中的缓存线路进行去重的示例系统的框图。
图2是图示了根据本文描述的一个或多个实施例的、示例片上缓存线路过滤器表的框图。
图3是图示了根据本文描述的一个或多个实施例的、示例片外缓存器溢出表的框图。
图4是图示了根据本文描述的一个或多个实施例的、用于在写入操作期间进行存储器去重的示例方法的流程图。
图5是图示了根据本文描述的一个或多个实施例的、用于在写入操作期间进行存储器去重的另一示例方法的流程图。
图6是图示了根据本文描述的一个或多个实施例的、用于在读取操作期间进行存储器去重的示例方法的流程图。
图7是图示了根据本文描述的一个或多个实施例的、被布置用于对存储器中的缓存线路的去重的示例计算设备的框图。
本文提供的标题仅仅是为了方便,并不一定会影响本公开中所要求保护的范围或含义。
在附图中,为了便于理解和便利,相同的附图标记和任何首字母缩略词标识具有相同或类似结构或功能的元件或动作。将在下面的具体实施方式的过程中对附图进行详细描述。
具体实施方式
现在将对各个示例和实施例进行描述。以下描述提供具体细节以用于彻底理解并且实现对这些示例的描述。然而,相关领域的技术人员将理解,本文所描述的一个或多个实施例可以在没有这些细节中的许多细节的情况下实践。类似地,相关领域的技术人员还将理解,本公开的一个或多个实施例能够包括本文中未详细描述的许多其它明显的特征。此外,下面将不会详细示出或者描述一些公知的结构或功能,以便避免不必要地模糊相关描述。
本公开的实施例涉及用于通过检测缓存线路数据模式并且在多个物理地址与该多个物理地址的共同数据值之间建立链路列表来对物理存储器中的缓存线路进行去重的方法和系统。按照这种方式,例如,可以用32位(4字节)的地址来替换64字节的数据。根据至少一个实施例,可以应用该方法和系统以实现对片上缓存的去重。
如上面所提及的,硬件善于检测缓存线路数据模式。例如,可以通过使用数字逻辑门(例如,XOR门)和硬布线导出的、软件限定的、和/或硬件训练的模式来检测缓存线路数据模式。
图1是用于存储器去重的示例系统100。根据本文描述的一个或者多个实施例,系统100可以包括最后一级缓存(LLC)110、缓存线路过滤器(CL过滤器)120、构架130、低功率双倍数据速率存储器控制器(例如,LPDDR3Ctl)140、和具有LPDDR3接口标准150的物理动态随机存取存储器(DRAM)。
根据至少一个实施例,例如,LLC 110可以是8MB的片上静态随机存取存储器(SRAM),并且CL过滤器120可以是检测重复数据模式并且维持地址-数据映射而不是将重复数据写入高速缓冲存储器的缓存线路过滤器。构架130是在系统的各个代理(例如,组件、元件等)之间移动命令/分组的片上互连,例如包括,CPU、GPU、片上SRAM缓存、片外DRAM等。此外,LPDDR3Ctl 140是与JEDEC LPDDR3DRAM对接的存储器控制器。
图2示出了片上缓存线路过滤器表(CL过滤器表)200的示例。根据本文所描述的一个或多个实施例,CL过滤器表200可以形成CL过滤器的一部分和/或由CL过滤器利用(例如,在图1中示出的示例系统中的CL过滤器120)。
如图所示,根据本公开的至少一个实施例,两个数据结构可以被用于构成CL过滤器表200。例如,可以存在限定最常见的重复内容模式(例如,在模式寄存器中的16至64个条目)的一个表210。第二表220可以保存来自第一个表210的模式编号和重复缓存线路的物理地址。
可以在写入操作期间检测缓存线路复本。因此,每个写入可以涉及表查找和比较。如果存在命中,则仅保存地址而不是整个数据字符串。经去重的数据不在LLC(例如,在图1中示出的示例系统100中的LLC 110)中,其仅在表220中。例如,假设表220具有16K个条目并且每个条目具有模式编号和物理地址的4B有效载荷,则表220将覆盖多达1MB的重复内容。
根据一个或者多个实施例,当例如存在模式命中并且确定该模式命中是新的写入地址时,可以向CL过滤器表200分配新条目(例如,由表220表示的数据结构)。例如,可以通过将地址与LLC标签(其中,“标签”是整个缓存线路的地址)相比较来确定(例如识别)新的写入地址。现有地址将与LLC标签相匹配,而新地址将不会与LLC标签匹配。此外,当确定旧写入具有新模式时,可以更新CL过滤器表200中的条目或者使其无效。例如,如果在LLC中找到旧写入数据,但是新写入数据是例如“0000”,则可以将数据从LLC移动到CL过滤器表200中。将这样的事件视为对旧缓存条目的重写。
根据至少一个实施例,当发生“路”冲突时,可以将CL过滤器表200中的条目逐出(例如,去除)并且移动至DRAM溢出表(将在下面提供关于DRAM溢出表和“路”冲突的进一步细节)。应当理解,CL过滤器表200是片上结构,并且因此空间是有限的。因此,当例如达到容量时,可以将CL过滤器表200中的条目逐出至DRAM溢出表。由于在CL过滤器表200中的最近写入的条目具有最高的被读取概率,因此,CL过滤器表200中最旧的条目很可能是被逐出至DRAM溢出表的第一条目。LLC(例如,在图1示出的示例系统100中的LLC 110)中没有重复内容。
如本文所使用的,“n-路”表示可以将地址划分成两个字段-“索引”字段和“路”字段(如由在图2中示出的示例CL过滤器表200的表220中的列和行所表示)。索引字段基于待分配的条目的数目(例如,缓存的深度)。此外,缓存线路偏移基于缓存线路的大小。
例如,在路索引的场境(context)中,“4-路”指示能够容纳多达四个唯一标签,其中标签是在由深度和宽度条目限定的表中的任何框的值。同样,可以将4-路缓存理解为意指在任何表条目中允许四个唯一标签。在这个意义上,例如,当存在试图进入索引的第五标签时,可能出现路冲突。
图3是根据本文描述的一个或者多个实施例的片外存储器(例如DRAM)溢出表300的示例。
DRAM溢出表300扩展了片上SRAM概念以释放额外层级的DRAM缓存空间。例如,4MB的DRAM溢出表能够释放64MB的DRAM缓存空间。应当注意,DRAM溢出表300比片上SRAM慢。片上SRAM空间在MB范围内。DRAM缓存能够在数百MB范围内。数量级越高,时间/成本越高。虽然DRAM溢出表300不一定提供速度效益,但是其确实使缓存覆盖区(cache footprint)看起来比其物理大小更大。效能与未优化的缓存大致相同,因为CL过滤器表(例如,图2中示出的CL过滤器表200)总是比缓存更快快,即使是在DRAM中。
DRAM溢出表300将去重概念应用于DRAM存储器缓存。例如,根据至少一个实施例,DRAM溢出表(128K个条目×32B有效载荷)充当片上缓存线路过滤器的备份。取决于实施方式,DRAM溢出表能够覆盖多达64MB的重复内容。应当注意,散列函数能够被用于分散条目索引以避免冲突并且使传入地址随机化。物理地址为32位,散列为17位。因此,散列通过使用来自标签的31-6的附加位来生成半随机索引。随机化是好的,因为否则只有特定索引会被写入,所以通过这种方式,使用了更多索引来分散索引字段。
根据本公开的至少一个实施例,可选地,可以将DRAM溢出表300用作硬件垃圾收集器。例如,软件可以偶尔进行场境切换并且清理页表,使得DRAM溢出表中的重复地址不再有效。因此,当存在软件可以清理某些页面的可能性时,可以执行周期性垃圾收集以清理属性并且重新设置每个有效位。例如,由于不知道“脏”数据是否在当前页面中,因此可以将这样的数据写入回存储器。页表需要与软件数据一致。因此,对于来自存储器的无效的任何页面,不写回任何脏数据。按照这种方式,垃圾收集允许缓存与主存储器同步。
图4和图5图示了根据本文描述的一个或多个实施例的、在存储器写入操作期间进行去重的示例过程。如在示例过程400和500中示出的,取决于仅在模式中找到命中、仅在物理地址中找到命中、在模式和物理地址两者中找到命中、还是既没有在模式中也没有在物理地址中找到命中,可以关于LLC和/或CL过滤器表(例如,在图1示出的示例系统100中的LLC 110和/或在图2中示出的示例CL过滤器表200,上面对其中的每一个都进行了详细描述)而执行不同的操作。下面提供了关于在写入操作期间的存储器去重的示例过程400和500中的框405至440和505至540中的一个或多个的各个细节。
应当注意,虽然在图4中示出的去重400的示例过程中包括的框中的许多与在图5中示出的去重500的示例过程中的对应框类似,但是框410和510表示可以根据本文描述的一个或多个实施例来应用的两个分离的情况。具体地,在示例过程400的框410处,可以确定新的写入地址是否与LLC中的条目匹配,而在示例过程500的框510处,可以确定新的写入地址是否与CL过滤器表中的条目匹配。
例如,如果新的写入地址命中物理地址上的现有条目,但是写入数据是不同的模式,则能够确定存在利用预定义模式中的一个的在前写入。因此,已经在CL过滤器表中分配了条目。在这样的情况下,只有必要利用正被写入的新模式(例如,全部为1)来更新该模式编号(例如,全部为零)。
在LLC中已经存在条目但是新的写入数据与预定义模式中的一种(例如,全部为1)相匹配的实例中,则可以使该LLC条目无效并且在CL过滤器表中分配新条目。
如果对现有CL过滤器地址的重写导致唯一数据,则使CL过滤器表条目无效并且对LLC的写入继续。
如上所述,物理地址命中意指存在利用预定义模式中的一个的在前写入。如果其是唯一模式,则使在CL过滤表中的条目无效并且作为替代存在对LLC的写入。另一方面,如果该在前写入是不同的模式,则利用新的模式编号来更新该CL过滤器表中的条目。
当存在模式命中时,仅在不存在物理地址命中的情况下向CL过滤器表分配条目。其原因是因为:否则这意指CPU正试图再次写入相同的数据。如果不存在物理地址命中或模式命中,则该过程继续对LLC的写入。
如果新的写入数据是重复的,则使LLC条目无效并且将其移动至CL过滤器表(分配新的CL过滤器表条目,因为如果是在LLC中则能够没有物理地址命中)。
根据本公开的一个或多个实施例,在使用DRAM的情况下,如果片上CL过滤器表条目已满(在图4中未示出),则可能有必要对DRAM溢出表(例如,在图3中示出的DRAM溢出表300)实施RMW(读取-修改-写入),例如{模式#,物理地址}。在这样的场景中,检查DRAM溢出表,修改条目,并且然后向表写入新条目(例如,如果片上CL过滤器表已满)。
可以并行(例如,同时)检查CL过滤器表和LLC。如果片上CL已满,则DRAM溢出表有可能具有该数据。基于索引来进行读取,针对匹配进行检查(修改),并且然后使LLC无效或者对LLC进行写入,并且将状态写入回DRAM溢出。写入动作与CL过滤器表相同。溢出只是CL过滤器数据的更大的表。
图6是根据本文描述的一个或者多个实施例的、在存储器读取操作期间进行存储器去重的示例过程。先前在上面提供了关于在读取操作期间的存储器去重的示例过程600中的框605至640中的一个或多个的各个细节。
图7是被布置用于提供对存储器中的缓存线路的去重的示例性计算机(700)的高级框图。例如,根据本文描述的一个或多个实施例,可以将计算机(700)配置为检测缓存线路数据模式并且在多个物理地址及其公共数据值之间建立链接列表。在非常基本的配置(701)中,计算设备(700)通常包括一个或多个处理器(710)和系统存储器(720)。存储器总线(730)能够被用于在处理器(710)和系统存储器(720)之间进行通信。
取决于期望的配置,处理器(710)能够是任何类型的处理器,包括但不限于:微处理器(μΡ)、微控制器(μθ)、数字信号处理器(DSP)、或者其任何组合。处理器(710)能够包括更多级别的缓存,诸如,级1缓存(711)和级2缓存(712)、处理器内核(713)、和寄存器(714)。处理器内核(713)能够包括算术逻辑单元(ALU)、浮点单元(FPU)、数字信号处理核心(DSPCore)、或者其任何组合。存储控制器(716)还能够和处理器(710)一起使用,或者在一些实施方式中,存储控制器(715)能够是处理器(710)的内部部分。
取决于期望的配置,系统存储器(720)能够是任何类型的存储器,包括但不限于:易失性存储器(诸如,RAM)、非易失性存储器(诸如,ROM、闪速存储器等)或者其任何组合。系统存储器(720)通常包括操作系统(721)、一个或者多个应用(722)、和程序数据(724)。应用(722)可以包括用于对存储器缓存线路进行去重的系统(723)。
程序数据(724)可以包括存储指令,该存储指令在由一个或多个处理设备执行时实现用于对存储器缓存线路进行去重的系统和方法。此外,根据至少一个实施例,程序数据(724)可以包括模式和物理地址数据(725),该模式和物理地址数据可以被用于例如检测缓存线路中的重复数据模式,并且维持地址-数据映射而不是将重复数据写入高速缓冲存储器。在一些实施例中,能够将应用(722)布置为与操作系统(721)上的程序数据(724)一起操作。
计算设备(700)能够具有附加特征或功能、和附加接口以促进基本配置(701)与任何所需的设备和接口之间的通信。
系统存储器(720)是计算机存储介质的示例。计算机存储介质包括但不限于:RAM、ROM、EEPROM、闪速存储器或者其它存储器技术、CD-ROM、数字多功能盘(DVD)、或者其它光学储存器、盒式磁带、磁带、磁盘储存器或者其它磁存储设备、或者能够被用于存储期望的信息并且能够由计算设备700访问的任何其它介质。任何这样的计算机存储介质都能够是设备(700)的一部分。
能够将计算设备(700)实施为小封装技术(small-formfactor)便携式(或者移动)电子设备,诸如手机、智能电话、个人数字助理(PDA)、个人媒体播放器设备、平板计算机(平板)、无线网络观看设备、个人头戴式送受话器设备、专用设备、或者包括上面的功能中的任何一种的混合设备)的一部分。还能够将计算设备(700)实现为包括膝上型计算机和非膝上型计算机配置二者的个人计算机。
前面描述的详细描述已经经由使用框图、流程图、和/或示例来对设备和/或过程的各个实施例进行了阐述。在这样的框图、流程图、和/或示例包含一个或多个功能和/或操作的情况下,本领域技术人员将理解,在这样的框图、流程图、或者示例中的每个功能和/或操作能够由广泛多种硬件、软件、固件、或者几乎其任何组合来单独地和/或共同地实现。在一个实施例中,可以经由专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、或者其它整合的格式来实现本文描述的主题的若干部分。然而,本领域的技术人员将认识到,本文所公开的实施例的一些方面能够整体地或部分地在集成电路中等效地被实现为在一个或多个计算机上运行的一个或多个计算机程序、在一个或多个处理器上运行的一个或多个程序、固件、或者几乎其任何组合,并且根据本公开,设计电路系统和/或编写软件和/或固件的代码也将在本领域的技术人员的技能范围内。
此外,本领域的技术人员将认识到,能够将本文描述的主题的机制作为各种形式的程序产品来分发,并且无论被用于实际执行该分发的非暂时性信号承载介质的特定类型如何,本文描述的主题的说明性实施例都适用。非暂时性信号承载介质的示例包括但不限于以下:可记录型介质,诸如软盘、硬盘驱动器、压缩盘(CD)、数字视频盘(DVD)、数字磁带、计算机存储器等;以及传输型介质,诸如数字和/或模拟通信介质(例如,光纤线缆、波导、有线通信链路、无线通信链路等)。
关于本文几乎任何复数的和/或单数的术语的使用,本领域的技术人员能够从复数转化为单数和/或从单数转化为复数,以适于场境和/或应用。为了清楚起见,可以在此对各种单/复数置换进行清楚地阐述。
因此,已经对本主题的特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作能够按照不同的顺序来执行并且仍然实现期望的结果。此外,在附图中描绘的过程不一定要求所示的特定顺序或者连续顺序来实现期望的结果。在某些实施方式中,多任务处理和并行处理可以是有利的。

Claims (16)

1.一种用于对缓存线路进行去重的方法(400),所述方法包括:
检测(405)在对缓存线路的写入中的数据模式;
确定(410)所述写入的物理地址与最后一级缓存中的条目是否匹配;
确定(415、420)在所述写入中的所述数据模式和与所述条目相关联的数据模式是否匹配;以及
响应于确定所述写入的所述物理地址与所述最后一级缓存中的条目匹配以及确定在所述写入中的所述数据模式和与所述条目相关联的数据模式匹配,使所述最后一级缓存中的所述条目无效(430)。
2.根据权利要求1所述的方法,进一步包括:
响应于确定所述写入的所述物理地址与所述最后一级缓存中的条目匹配以及确定在所述写入中的所述数据模式和与所述条目相关联的数据模式匹配,在对应的缓存线路过滤器的表中分配(430)用于所述写入的新条目。
3.根据权利要求1所述的方法,进一步包括:
响应于确定所述写入的所述物理地址与所述最后一级缓存中的条目匹配以及确定在所述写入中的所述数据模式不同于与所述条目相关联的所述数据模式,利用所述写入的所述数据模式来更新(440)所述最后一级缓存中的所述条目。
4.根据权利要求1所述的方法,进一步包括:
响应于确定所述写入的所述物理地址不同于所述最后一级缓存中的所有条目以及确定在所述写入中的所述数据模式和与所述最后一级缓存中的条目相关联的数据模式匹配,在对应的缓存线路过滤器的表中分配(435)用于所述写入的新条目。
5.根据权利要求1所述的方法,进一步包括:
响应于确定所述写入的所述物理地址不同于所述最后一级缓存中的所有条目以及确定在所述写入中的所述数据模式不同于与所述最后一级缓存中的条目相关联的所有数据模式,在所述最后一级缓存中写入(425)用于所述写入的新条目。
6.根据权利要求5所述的方法,其中,所述新条目包括关于所述写入的所述物理地理和在所述写入中所检测到的所述数据模式的信息。
7.一种用于对缓存线路进行去重的系统(100),包括:
至少一个处理器;以及
耦合至所述至少一个处理器的非暂时性计算机可读介质,具有存储在其上的指令,所述指令在由所述至少一个处理器执行时致使所述至少一个处理器:
检测在对缓存线路的写入中的数据模式;
确定所述写入的物理地址与最后一级缓存(110)中的条目是否匹配;
确定在所述写入中的所述数据模式和与所述条目相关联的数据模式是否匹配;以及
响应于确定所述写入的所述物理地址与所述最后一级缓存中的条目匹配以及确定在所述写入中的所述数据模式和与所述条目相关联的数据模式匹配,使所述最后一级缓存中的所述条目无效。
8.根据权利要求7所述的系统,其中,所述至少一个处理器被进一步致使:
响应于确定所述写入的所述物理地址与所述最后一级缓存中的条目匹配以及确定在所述写入中的所述数据模式和与所述条目相关联的数据模式匹配,在对应的缓存线路过滤器(120)的表中分配用于所述写入的新条目。
9.根据权利要求7所述的系统,其中,所述至少一个处理器被进一步致使:
响应于确定所述写入的所述物理地址与所述最后一级缓存中的条目匹配以及确定在所述写入中的所述数据模式不同于与所述条目相关联的所述数据模式,利用所述写入的所述数据模式来更新所述最后一级缓存中的所述条目。
10.根据权利要求7所述的系统,其中,所述至少一个处理器被进一步致使:
响应于确定所述写入的所述物理地址不同于所述最后一级缓存中的所有条目以及确定在所述写入中的所述数据模式和与所述最后一级缓存中的条目相关联的数据模式匹配,在对应的缓存线路过滤器的表中分配用于所述写入的新条目。
11.根据权利要求7所述的系统,其中,所述至少一个处理器被进一步致使:
响应于确定所述写入的所述物理地址不同于所述最后一级缓存中的所有条目以及确定在所述写入中的所述数据模式不同于与所述最后一级缓存中的条目相关联的所有数据模式,在所述最后一级缓存中写入用于所述写入的新条目。
12.根据权利要求11所述的系统,其中,所述新条目包括关于所述写入的所述物理地址和在所述写入中所检测到的所述数据模式的信息。
13.一种用于在存储器读取操作期间对缓存线路进行去重的方法(600),所述方法包括:
在片上缓存线路过滤器的表中执行(605)查找;
基于所述查找,确定(610)与读取请求相关联的数据在所述缓存线路过滤器中是否是可用的;
响应于确定与所述读取请求相关联的所述数据在所述缓存线路过滤器中是可用的,从所述缓存线路过滤器获得(615)所述数据;以及
响应于确定与所述读取请求相关联的所述数据在所述缓存线路过滤器中是不可用的,从最后一级缓存获得(625)所述数据。
14.根据权利要求13所述的方法,进一步包括:
响应于确定与所述读取请求相关联的所述数据在所述缓存线路过滤器中是不可用的,在工作存储器缓存溢出表中执行(620)查找。
15.根据权利要求14所述的方法,进一步包括:
基于所述查找,确定(635)与所述读取请求相关联的所述数据是被包含在所述工作存储器缓存中的重复数据。
16.根据权利要求14所述的方法,进一步包括:
基于所述查找,确定与所述读取请求相关联的所述数据存在于所述工作存储器缓存中;以及
从所述工作存储器缓存获得(640)所述数据。
CN201580043956.2A 2014-10-07 2015-10-07 用于缓存线路去重的方法和系统 Active CN106663060B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201462060949P 2014-10-07 2014-10-07
US62/060,949 2014-10-07
PCT/US2015/054499 WO2016057672A1 (en) 2014-10-07 2015-10-07 Methods and systems for cache lines de-duplication

Publications (2)

Publication Number Publication Date
CN106663060A true CN106663060A (zh) 2017-05-10
CN106663060B CN106663060B (zh) 2019-11-19

Family

ID=54337914

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201580043956.2A Active CN106663060B (zh) 2014-10-07 2015-10-07 用于缓存线路去重的方法和系统
CN201580050274.4A Active CN106716386B (zh) 2014-10-07 2015-10-07 使用页面过滤器和系统mmu的硬件辅助存储器压缩管理

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201580050274.4A Active CN106716386B (zh) 2014-10-07 2015-10-07 使用页面过滤器和系统mmu的硬件辅助存储器压缩管理

Country Status (4)

Country Link
US (2) US9785571B2 (zh)
EP (2) EP3204860A1 (zh)
CN (2) CN106663060B (zh)
WO (2) WO2016057670A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110851076A (zh) * 2018-08-21 2020-02-28 三星电子株式会社 存储器系统和删除重复存储器系统
CN117651021A (zh) * 2024-01-25 2024-03-05 苏州萨沙迈半导体有限公司 过滤器及其控制方法和装置、电气设备

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016057668A1 (en) 2014-10-07 2016-04-14 Google Inc. Method and apparatus for monitoring system performance and dynamically updating memory sub-system settings using software to optimize performance and power consumption
WO2016057670A1 (en) 2014-10-07 2016-04-14 Google Inc. Hardware-assisted memory compression management using page filter and system mmu
US9864541B2 (en) * 2015-02-13 2018-01-09 Google Llc Transparent hardware-assisted memory decompression
US9983821B2 (en) * 2016-03-29 2018-05-29 Samsung Electronics Co., Ltd. Optimized hopscotch multiple hash tables for efficient memory in-line deduplication application
US10528284B2 (en) 2016-03-29 2020-01-07 Samsung Electronics Co., Ltd. Method and apparatus for enabling larger memory capacity than physical memory size
US10678704B2 (en) 2016-03-29 2020-06-09 Samsung Electronics Co., Ltd. Method and apparatus for enabling larger memory capacity than physical memory size
US10496543B2 (en) 2016-03-31 2019-12-03 Samsung Electronics Co., Ltd. Virtual bucket multiple hash tables for efficient memory in-line deduplication application
US9966152B2 (en) 2016-03-31 2018-05-08 Samsung Electronics Co., Ltd. Dedupe DRAM system algorithm architecture
EP3479402B1 (en) 2016-06-30 2021-10-27 INTEL Corporation Method and apparatus for remote field programmable gate array processing
US20180004668A1 (en) * 2016-06-30 2018-01-04 Intel Corporation Searchable hot content cache
CN107579916B (zh) * 2016-07-04 2021-03-23 新华三技术有限公司 转发表项访问方法及装置
US9946660B2 (en) * 2016-07-29 2018-04-17 Hewlett Packard Enterprise Development Lp Memory space management
US20180060235A1 (en) * 2016-08-30 2018-03-01 Intel Corporation Non-volatile memory compression devices and associated methods and systems
US10282436B2 (en) * 2017-01-04 2019-05-07 Samsung Electronics Co., Ltd. Memory apparatus for in-place regular expression search
US10061698B2 (en) 2017-01-31 2018-08-28 Qualcomm Incorporated Reducing or avoiding buffering of evicted cache data from an uncompressed cache memory in a compression memory system when stalled write operations occur
US10649889B2 (en) * 2017-06-04 2020-05-12 Apple Inc. Method and apparatus for managing kernel memory of data processing systems
CN109710396B (zh) 2017-10-26 2023-08-22 华为技术有限公司 一种信息采集及内存释放的方法及装置
CN110377534B (zh) * 2018-04-13 2023-11-17 华为技术有限公司 数据处理方法及装置
CN110659225A (zh) * 2018-06-28 2020-01-07 华为技术有限公司 内存管理方法以及相关装置
US10776028B2 (en) * 2018-07-10 2020-09-15 EMC IP Holding Company LLC Method for maximum data reduction combining compression with deduplication in storage arrays
US11249900B2 (en) * 2018-10-29 2022-02-15 Vmware, Inc. Efficiently purging non-active blocks in NVM regions using virtblock arrays
US11379373B2 (en) 2019-08-13 2022-07-05 Micron Technology, Inc. Memory tiering using PCIe connected far memory
KR20210049602A (ko) 2019-10-25 2021-05-06 삼성전자주식회사 컴퓨팅 장치 및 그 동작 방법
US11797207B2 (en) * 2020-08-03 2023-10-24 Cornell University Base and compressed difference data deduplication
WO2022203532A1 (en) * 2021-03-23 2022-09-29 Huawei Technologies Co., Ltd. Method for virtual memory management in a computer
CN113568940B (zh) * 2021-08-04 2024-05-21 北京百度网讯科技有限公司 数据查询的方法、装置、设备以及存储介质

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5991847A (en) * 1997-06-06 1999-11-23 Acceleration Software International Corporation Data pattern caching for speeding up write operations
CN1748205A (zh) * 2003-02-04 2006-03-15 尖端技术公司 数据包模式匹配的方法和装置
US20090193219A1 (en) * 2008-01-29 2009-07-30 Hitachi, Ltd. Storage subsystem
CN101572552A (zh) * 2009-06-11 2009-11-04 哈尔滨工业大学 基于内容可寻址存储器的高速无损数据压缩系统
US20110184921A1 (en) * 2010-01-25 2011-07-28 Sepaton, Inc. System and Method for Data Driven De-Duplication
CN102884528A (zh) * 2010-05-13 2013-01-16 微软公司 减少活动记录中的重复和循环
US20130159596A1 (en) * 2011-12-19 2013-06-20 Adriaan van de Ven Techniques for memory de-duplication in a virtual system
US20140244598A1 (en) * 2013-02-22 2014-08-28 International Business Machines Corporation Integrity checking and selective deduplication based on network parameters
CN104049911A (zh) * 2013-03-14 2014-09-17 Lsi公司 存储设备辅助的数据去重复
CN104050098A (zh) * 2013-03-13 2014-09-17 国际商业机器公司 优化的数据去重复的动态高速缓存模块选择的方法和系统

Family Cites Families (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1995018997A2 (en) 1993-12-30 1995-07-13 Connectix Corporation Virtual memory management system and method using data compression
US5544349A (en) * 1995-01-23 1996-08-06 International Business Machines Corporation Method and system for improving the performance of memory in constrained virtual memory environments by reducing paging activity
US5696927A (en) * 1995-12-21 1997-12-09 Advanced Micro Devices, Inc. Memory paging system and method including compressed page mapping hierarchy
US5978888A (en) 1997-04-14 1999-11-02 International Business Machines Corporation Hardware-managed programmable associativity caching mechanism monitoring cache misses to selectively implement multiple associativity levels
US6393525B1 (en) * 1999-05-18 2002-05-21 Intel Corporation Least recently used replacement method with protection
US6434669B1 (en) 1999-09-07 2002-08-13 International Business Machines Corporation Method of cache management to dynamically update information-type dependent cache policies
US6532520B1 (en) 1999-09-10 2003-03-11 International Business Machines Corporation Method and apparatus for allocating data and instructions within a shared cache
US7089391B2 (en) * 2000-04-14 2006-08-08 Quickshift, Inc. Managing a codec engine for memory compression/decompression operations using a data movement engine
US6556952B1 (en) 2000-05-04 2003-04-29 Advanced Micro Devices, Inc. Performance monitoring and optimizing of controller parameters
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
US6516397B2 (en) * 2001-04-09 2003-02-04 Hewlett-Packard Company Virtual memory system utilizing data compression implemented through a device
US7032158B2 (en) 2001-04-23 2006-04-18 Quickshift, Inc. System and method for recognizing and configuring devices embedded on memory modules
US6792510B1 (en) 2002-02-14 2004-09-14 Novell, Inc. System and method for updating a cache
US7035979B2 (en) 2002-05-22 2006-04-25 International Business Machines Corporation Method and apparatus for optimizing cache hit ratio in non L1 caches
US6910106B2 (en) 2002-10-04 2005-06-21 Microsoft Corporation Methods and mechanisms for proactive memory management
US7383399B2 (en) 2004-06-30 2008-06-03 Intel Corporation Method and apparatus for memory compression
CN101147174B (zh) * 2004-10-15 2011-06-08 微软公司 用于管理图像数据的传送和/或存储的系统和方法
US7246205B2 (en) 2004-12-22 2007-07-17 Intel Corporation Software controlled dynamic push cache
US20060179258A1 (en) 2005-02-09 2006-08-10 International Business Machines Corporation Method for detecting address match in a deeply pipelined processor design
TW200828273A (en) * 2006-12-28 2008-07-01 Genesys Logic Inc Hard disk cache device and method
EP2168060A4 (en) * 2007-05-10 2012-10-03 Nitrosphere Corp SYSTEM AND / OR METHOD FOR REDUCING PANEL UTILIZATION AND IMPROVING INPUT POWER OUTPUT OF COMPUTER SYSTEMS
US7895242B2 (en) 2007-10-31 2011-02-22 Microsoft Corporation Compressed storage management
EP2283045A1 (en) * 2008-05-20 2011-02-16 Crystal Clear Partnership Separation of polysaccharides by charge density gradient
US8458404B1 (en) 2008-08-14 2013-06-04 Marvell International Ltd. Programmable cache access protocol to optimize power consumption and performance
US20100169708A1 (en) * 2008-12-29 2010-07-01 John Rudelic Method and apparatus to profile ram memory objects for displacment with nonvolatile memory
KR101618634B1 (ko) 2009-01-07 2016-05-09 삼성전자주식회사 비휘발성 메모리와, 이의 페이지 동적할당장치 및 페이지 매핑장치와, 이의 페이지 동적할당방법 및 페이지 매핑방법
US8332586B2 (en) 2009-03-30 2012-12-11 Hitachi, Ltd. Information processing system for measuring the cache effect in a virtual capacity
US8112585B2 (en) 2009-04-30 2012-02-07 Netapp, Inc. Method and apparatus for dynamically switching cache policies
US8677071B2 (en) 2010-03-26 2014-03-18 Virtualmetrix, Inc. Control of processor cache memory occupancy
US20110242427A1 (en) * 2010-04-01 2011-10-06 Timothy Ramsdale Method and System for Providing 1080P Video With 32-Bit Mobile DDR Memory
US8484405B2 (en) 2010-07-13 2013-07-09 Vmware, Inc. Memory compression policies
US8458145B2 (en) 2011-01-20 2013-06-04 Infinidat Ltd. System and method of storage optimization
KR20130031046A (ko) 2011-09-20 2013-03-28 삼성전자주식회사 플래시 메모리 장치 및 플래시 메모리 장치의 데이터 관리 방법
US8706971B1 (en) 2012-03-14 2014-04-22 Netapp, Inc. Caching and deduplication of data blocks in cache memory
CN104169892A (zh) * 2012-03-28 2014-11-26 华为技术有限公司 并发访问的组相联溢出缓存
US8930612B2 (en) 2012-05-31 2015-01-06 Seagate Technology Llc Background deduplication of data sets in a memory
CN103176752A (zh) * 2012-07-02 2013-06-26 晶天电子(深圳)有限公司 带有耐用转换层及临时文件转移功能从而实现闪速存储器磨损降低的超耐用固态驱动器
US9043570B2 (en) 2012-09-11 2015-05-26 Apple Inc. System cache with quota-based control
KR20140035082A (ko) 2012-09-13 2014-03-21 삼성전자주식회사 메모리 관리방법
US20140089600A1 (en) 2012-09-27 2014-03-27 Apple Inc. System cache with data pending state
US9436604B2 (en) 2013-03-13 2016-09-06 Futurewei Technologies, Inc. System and method for software/hardware coordinated adaptive performance monitoring
GB2512604A (en) 2013-04-03 2014-10-08 Ibm Flexibly storing defined presets for configuration of a storage controller
US9292449B2 (en) * 2013-12-20 2016-03-22 Intel Corporation Cache memory data compression and decompression
US9563251B2 (en) * 2013-12-28 2017-02-07 Intel Corporation Representing a cache line bit pattern via meta signaling
US9792063B2 (en) * 2014-01-15 2017-10-17 Intel Corporation Deduplication-based data security
WO2016057670A1 (en) 2014-10-07 2016-04-14 Google Inc. Hardware-assisted memory compression management using page filter and system mmu
WO2016057668A1 (en) 2014-10-07 2016-04-14 Google Inc. Method and apparatus for monitoring system performance and dynamically updating memory sub-system settings using software to optimize performance and power consumption

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5991847A (en) * 1997-06-06 1999-11-23 Acceleration Software International Corporation Data pattern caching for speeding up write operations
CN1748205A (zh) * 2003-02-04 2006-03-15 尖端技术公司 数据包模式匹配的方法和装置
US20090193219A1 (en) * 2008-01-29 2009-07-30 Hitachi, Ltd. Storage subsystem
CN101572552A (zh) * 2009-06-11 2009-11-04 哈尔滨工业大学 基于内容可寻址存储器的高速无损数据压缩系统
US20110184921A1 (en) * 2010-01-25 2011-07-28 Sepaton, Inc. System and Method for Data Driven De-Duplication
CN102884528A (zh) * 2010-05-13 2013-01-16 微软公司 减少活动记录中的重复和循环
US20130159596A1 (en) * 2011-12-19 2013-06-20 Adriaan van de Ven Techniques for memory de-duplication in a virtual system
US20140244598A1 (en) * 2013-02-22 2014-08-28 International Business Machines Corporation Integrity checking and selective deduplication based on network parameters
CN104050098A (zh) * 2013-03-13 2014-09-17 国际商业机器公司 优化的数据去重复的动态高速缓存模块选择的方法和系统
CN104049911A (zh) * 2013-03-14 2014-09-17 Lsi公司 存储设备辅助的数据去重复

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
YINGYING TIAN: ""Last-level Cache Deduplication"", 《ICS"14 PROCEEDINGS OF THE 28TH ACM INTERNATIONAL CONFERENCE ON SUPERCOMPUTER》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110851076A (zh) * 2018-08-21 2020-02-28 三星电子株式会社 存储器系统和删除重复存储器系统
CN117651021A (zh) * 2024-01-25 2024-03-05 苏州萨沙迈半导体有限公司 过滤器及其控制方法和装置、电气设备
CN117651021B (zh) * 2024-01-25 2024-04-30 苏州萨沙迈半导体有限公司 过滤器及其控制方法和装置、电气设备

Also Published As

Publication number Publication date
CN106716386B (zh) 2020-05-29
EP3204859B1 (en) 2020-12-02
US9740631B2 (en) 2017-08-22
CN106663060B (zh) 2019-11-19
WO2016057672A1 (en) 2016-04-14
US20160098353A1 (en) 2016-04-07
US9785571B2 (en) 2017-10-10
US20160098356A1 (en) 2016-04-07
EP3204860A1 (en) 2017-08-16
CN106716386A (zh) 2017-05-24
EP3204859A1 (en) 2017-08-16
WO2016057670A1 (en) 2016-04-14

Similar Documents

Publication Publication Date Title
CN106663060A (zh) 用于缓存线路去重的方法和系统
US8935484B2 (en) Write-absorbing buffer for non-volatile memory
CN104246764B (zh) 利用非均匀散列函数在非均匀访问存储器中放置记录的方法和装置
CN102111448B (zh) 分布式哈希表dht存储系统的数据预取方法、节点和系统
CN100489817C (zh) 具有保护的最近最少使用置换方法及其处理系统
KR101359813B1 (ko) 프로세서 주 메모리용 영구 메모리
CN109416666A (zh) 具有压缩数据和标签的缓存
KR102515417B1 (ko) 캐시 메모리 장치 및 그것의 동작 방법
KR20170097609A (ko) 압축된 데이터 백그라운드를 캐싱하는 장치, 시스템 및 방법
US8904114B2 (en) Shared upper level cache architecture
WO2017155638A1 (en) Technologies for increasing associativity of a direct-mapped cache using compression
CN102841854A (zh) 根据动态分级存储器缓存认知执行数据读取的方法和系统
KR101414035B1 (ko) 저장 효율적인 섹터형 캐시
TW201015321A (en) Buffer memory device, memory system and data trnsfer method
US20170123979A1 (en) Systems, devices, and methods for handling partial cache misses
KR20100065786A (ko) 빠른 파워-오프를 위한 캐시 동기화 방법 및 시스템
CN107438837A (zh) 数据高速缓存
CN104364774A (zh) 去重复虚拟机镜像转移器
CN105117351A (zh) 向缓存写入数据的方法及装置
CN105095113B (zh) 一种缓存管理方法和系统
CN110795363B (zh) 一种存储介质的热页预测方法和页面调度方法
JP3929872B2 (ja) キャッシュメモリ、プロセッサ及びキャッシュ制御方法
US20210149583A1 (en) Pattern Tracking For Efficiently Predicting Control Pages
JP2017510902A5 (zh)
CN106295413A (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
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