CN109643278A - 使用压缩来增加带有大的块大小的存储器侧高速缓存的容量 - Google Patents
使用压缩来增加带有大的块大小的存储器侧高速缓存的容量 Download PDFInfo
- Publication number
- CN109643278A CN109643278A CN201780053279.1A CN201780053279A CN109643278A CN 109643278 A CN109643278 A CN 109643278A CN 201780053279 A CN201780053279 A CN 201780053279A CN 109643278 A CN109643278 A CN 109643278A
- Authority
- CN
- China
- Prior art keywords
- block
- cache
- compression
- sub
- piece
- 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
Links
Classifications
-
- 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/0866—Addressing 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/0873—Mapping of cache memory to specific storage devices or parts thereof
-
- 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
- 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/128—Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
-
- 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
- G06F3/064—Management of blocks
-
- 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/0661—Format or protocol conversion 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
-
- 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/12—Replacement control
-
- 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/28—Using a specific disk cache architecture
- G06F2212/281—Single cache
-
- 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/30—Providing cache or TLB in specific location of a processing system
- G06F2212/304—In main memory subsystem
- G06F2212/3042—In main memory subsystem being part of a memory device, e.g. cache DRAM
-
- 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/30—Providing cache or TLB in specific location of a processing system
- G06F2212/305—Providing cache or TLB in specific location of a processing system being part of a memory device, e.g. cache DRAM
-
- 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
-
- 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/70—Details relating to dynamic memory 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
对相关申请的交叉引用
本申请要求对于提交于2016年9月29日的、编号为15/279,647的美国非临时专利申请的优先权的益处。
技术领域
实施例通常涉及存储器结构。
背景技术
计算系统存储器体系结构可以被结构化为各种级别的主机处理器侧高速缓存(例如,一级/Ll高速缓存、2级/L2高速缓存、末级高速缓存/LLC)以及包括存储器侧高速缓存(例如,“近存储器”)和与存储器侧高速缓存相比访问更慢的附加存储器(例如,“远存储器”)的系统存储器。处理器侧高速缓存可以被组织成相对小的(例如,64B)高速缓存行,而存储器侧高速缓存可以被组织成相对大的(例如,1KB或4KB)块,以便降低标签和元数据开销。因此,存储器侧高速缓存中的每个4KB块可以含有例如六十四个64B处理器侧高速缓存行。
当对存储器侧高速缓存中的数据的搜索不成功(例如,高速缓存未命中发生)时,可以在存储器侧高速缓存中选择“牺牲”行,以用于由可以从远存储器取回的所请求的数据替换(例如,驱逐)。存储器侧高速缓存中的频繁未命中由于从相对慢的远存储器取回数据而可能降低性能并且增加功耗。为了降低存储器侧高速缓存中的未命中的可能性,存储器侧高速缓存的每个块可以被压缩来为更多的数据让出空间。然而,特别是当所取回的数据位于主机处理器读取操作的关键路径中时,在逐块的基础上解压缩存储器侧高速缓存可能增加时延和开销。因此,常规的存储器体系结构可能仍然表现出次优的性能和/或功耗。
附图说明
实施例的各种优点将通过阅读以下的说明书和所附权利要求以及通过参考以下的附图而对本领域技术人员变得明显,附图中:
图1是根据实施例的压缩方案的示例的图示;
图2A-2C是根据实施例的使存储器侧高速缓存块成为合伙的方法的示例的流程图;
图3A-3C是根据实施例的使存储器侧高速缓存子块成为合伙的方法的示例的流程图;
图4是根据实施例的计算系统的示例的框图;以及
图5是根据实施例的压缩使能的存储器设备的示例的框图。
具体实施方式
现在转到图1,示出压缩方案,其中,第一块10包括压缩成总高速缓存行大小(例如,64B)的第一部分12的第一高速缓存行、压缩成总高速缓存行大小的第二部分14的第二高速缓存行、压缩成总高速缓存行大小的第n部分16的第n高速缓存行等等。在一个示例中,第一块10可以被称为“填充块”。第一块10通常可以包括响应于在存储器侧高速缓存(例如,近存储器)中遇到的高速缓存未命中而从远存储器取回的数据。因此,所图示的第一块10包括多个高速缓存行,其中,每个高速缓存行的大小可以等于一个或多个处理器侧高速缓存的高速缓存行大小(例如,LLC高速缓存行大小)。
类似地,第二块20可以包括压缩成总高速缓存行大小的第一部分22的第一高速缓存行、压缩成总高速缓存行大小的第二部分24的第二高速缓存行、压缩成总高速缓存行大小的第n部分26的第n高速缓存行等等。在一个示例中,第二块20可以被称为“合伙块”。在所图示的示例中,第一块10中的每个高速缓存行与第二块20中的对应的高速缓存行一起被压缩,以获得压缩的块30。压缩的块30因此可以包括占据总高速缓存行大小的第一部分32的第一高速缓存行、占据总高速缓存行大小的第二部分34的第二高速缓存行、占据总高速缓存行大小的第n部分36的第n高速缓存行等等。用于生成部分12、14、16、22、24、26、32、34、36的(一个或多个)压缩过程可以取决于情形而变化。压缩技术的示例包括频繁模式压缩(frequent pattern compression,FPC)、基本-△-立即(base-delta-immediate,BDI)压缩、行程编码(RLE)、高速缓存打包器(Cache Packer,CPACK)、Huffman编码以及Limpel-Ziv(LZ)压缩。
第二块20通常可以驻留于存储器侧高速缓存中。例如,第二块20可以是存储器侧高速缓存中的根据最近最少使用的(LRU)策略(或任何其它替换策略)而被标识以用于驱逐的牺牲块。在这样的情况下,如果压缩的块30满足大小条件,则第二块20(例如,牺牲块)可以由压缩的块30替换。大小条件可以规定压缩的块30中的每个高速缓存行具有小于或等于与处理器侧高速缓存相关联的高速缓存行大小(例如,64B)的大小。因此,在所图示的示例中,如果第一部分32小于或等于64B、第二部分34小于或等于64B、第n部分36小于或等于64B等等,则第二块20可以满足大小条件。
在另一示例中,第二块20可以是存储器侧高速缓存中的满足大小条件的首先遇到的块(例如,在时间上)。因此,如果大小条件被满足,则第二块20(例如,第一个满足该条件的块)可以由压缩的块30替换。在又一示例中,第二块20可以是存储器侧高速缓存中的促使压缩的块30留下最少量未使用的空间的“最佳适配的”块。还可以使用选择第二块20的其它途径。
图2A示出使存储器侧高速缓存块成为合伙的方法40。方法40通常可以在如本文中所描述的压缩使能的存储器设备中被实现。更具体地,方法40可以在一个或多个模块中实现为存储于机器或计算机可读存储介质(诸如,随机存取存储器(RAM)、只读存储器(ROM)、可编程ROM(PROM)、固件、闪速存储器等等)中、可配置逻辑(诸如,例如可编程逻辑阵列(PLA)、现场可编程门阵列(FPGA)、复杂可编程逻辑装置(CPLD))中、使用电路技术(诸如,例如专用集成电路(ASIC)、互补金属氧化物半导体(CMOS)或晶体管-晶体管逻辑(TTL)技术)的固定功能性逻辑硬件中或者以上各项的任何组合中的逻辑指令的集合。
所图示的处理框42提供标识第一块和第二块,其中,第一块包括第一多个高速缓存行,第二块包括第二多个高速缓存行,并且第二块是驻留于存储器侧高速缓存中的牺牲块。第一块的标识可以包括响应于存储器侧高速缓存中的高速缓存未命中而从远存储器取回和/或接收第一块。此外,第二块的标识可以包括根据LRU或其它合适的策略而选择牺牲块。第一多个高速缓存行中的每个高速缓存行可以在处理框44处与第二多个高速缓存行中的对应的高速缓存行一起被压缩,以获得包括第三多个高速缓存行的压缩的块。处理框44可以包括例如:将一个或多个压缩过程应用于第一块并且应用于第二块;以及随后在逐高速缓存行的基础上组合结果。
可以在处理框46处关于压缩的块是否满足大小条件而作出确定。如已指出的,大小条件可以包括例如第三多个高速缓存行中的每个高速缓存行具有小于或等于与处理器侧高速缓存相关联的高速缓存行大小的大小。如果大小条件被满足,则所图示的处理框48以压缩的块替换牺牲块。因此,所图示的方法40使牺牲块的压缩的版本能够与第一块的压缩的版本一起保留在存储器侧高速缓存中。如果在处理框46处确定大小条件没有被满足,则处理框50可以用第一块替换牺牲块。
图2B示出使存储器侧高速缓存块成为合伙的另一方法52。方法52通常可以在如本文中所描述的压缩使能的存储器设备中被实现。更具体地,方法52可以在一个或多个模块中被实现为存储于机器或计算机可读存储介质(诸如,RAM、ROM、PROM、固件、闪速存储器等等)中、可配置逻辑(诸如,例如PLA、FPGA、CPLD)中、使用电路技术(诸如,例如ASIC、CMOS、TTL技术)的固定功能性逻辑硬件中或者以上各项的任何组合中的逻辑指令的集合。
所图示的处理框54提供标识第一块和第二块,其中,第一块包括第一多个高速缓存行,第二块包括第二多个高速缓存行,并且第二块驻留于存储器侧高速缓存中。如已指出的,第一块的标识可以包括响应于存储器侧高速缓存中的高速缓存未命中而从远存储器取回和/或接收第一块。此外,第二块的标识可以包括从存储器侧高速缓存中的给定的组选择“候选”(例如,如果存储器侧高速缓存是多路组关联式高速缓存,其中每个组含有多个路并且每个路含有数据的块)。第一多个高速缓存行中的每个高速缓存行可以在处理框56处与第二多个高速缓存行中的对应的高速缓存行一起被压缩,以获得包括第三多个高速缓存行的压缩的块。处理框56可以包括例如:将一个或多个压缩过程应用于第一块并且应用于第二块;以及随后在逐高速缓存行的基础上组合结果。
可以在处理框58处关于压缩的块是否满足大小条件而作出确定,其中大小条件可以包括例如第三多个高速缓存行中的每个高速缓存行具有小于或等于与处理器侧高速缓存相关联的高速缓存行大小的大小。如果大小条件被满足,则所图示的处理框60以压缩的块替换第二块。另一方面,如果在处理框58处确定大小条件没有被满足,则所图示的处理框62确定是否已在存储器侧高速缓存中到达最后一个块(例如,该组中的最后的块)。如果是这样,则可以在处理框64处以第一块替换牺牲块(例如,根据LRU策略)。如果在处理框62处确定尚未遇到最后一个块,则下一个候选第二块可以在处理框66处被选择,并且所图示的方法52返回到处理框56。因此,所图示的方法52使压缩的块能够代替存储器侧高速缓存中首先遇到的块(导致满足大小条件的压缩的块)。
图2C示出使存储器侧高速缓存块成为合伙的又一方法68。方法68通常可以在如本文中所描述的压缩使能的存储器设备中被实现。更具体地,方法68可以在一个或多个模块中被实现为存储于机器或计算机可读存储介质(诸如,RAM、ROM、PROM、固件、闪速存储器等等)中、可配置逻辑(诸如,例如PLA、FPGA、CPLD)中、使用电路技术(诸如,例如ASIC、CMOS、TTL技术)的固定功能性逻辑硬件中或以上各项的任何组合中的逻辑指令的集合。
所图示的处理框70提供标识第一块和第二块,其中第一块包括第一多个高速缓存行,第二块包括第二多个高速缓存行,并且第二块驻留于存储器侧高速缓存中。如已指出的,第一块的标识可以包括响应于存储器侧高速缓存中的高速缓存未命中而从远存储器取回和/或接收第一块。此外,第二块的标识可以包括从存储器侧高速缓存中的给定的组选择候选(例如,如果存储器侧高速缓存是多路组关联式高速缓存,其中每个组含有多条路并且每条路含有数据的块)。第一多个高速缓存行中的每个高速缓存行可以在处理框72处与第二多个高速缓存行中的对应的高速缓存行一起被压缩,以获得包括第三多个高速缓存行的压缩的块。处理框72可以包括例如:将一个或多个压缩过程应用于第一块并且应用于第二块;以及随后在逐高速缓存行的基础上组合结果。
所图示的处理框74确定是否已在存储器侧高速缓存中到达最后一个块(例如,该组中的最后的块)。如果没有,则下一个候选第二块可以在处理框76处被选择,并且所图示的方法68返回到处理框72。一旦在处理框74处确定已到达最后一个块,就可以在处理框75处关于任何块是否已满足大小条件而作出确定。如果是这样,则处理框78可以用对应的压缩的块替换存储器侧高速缓存中的最佳适配的第二块。最佳适配的第二块可以被认为是促使压缩块在存储器侧高速缓存中留下最少量未使用的空间的块。如果在处理框75处确定没有块满足大小条件,则所图示的处理框77以第一块替换牺牲块(例如,根据LRU策略)。
图3A示出使存储器侧高速缓存子块成为合伙的方法80。方法80通常可以在如本文中所描述的压缩使能的存储器设备中被实现。更具体地,方法80可以在一个或多个模块中被实现为存储于机器或计算机可读存储介质(诸如,RAM、ROM、PROM、固件、闪速存储器等等)中、可配置逻辑(诸如,例如PLA、FPGA、CPLD)中、使用电路技术(诸如,例如ASIC、CMOS、TTL技术)的固定功能性逻辑硬件中或以上各项的任何组合中的逻辑指令的集合。
所图示的处理框82提供标识第一块且将第一块划分成比与处理器侧高速缓存相关联的高速缓存行大小更大的子块,其中,填充子块包括第一多个高速缓存行。因此,处理框82可以包括例如将4kB数据的块划分成四个lkB数据的子块。第一块的标识可以包括响应于存储器侧高速缓存中的高速缓存未命中而从远存储器取回和/或接收第一块。合伙子块可以在处理框84处被标识,其中合伙子块包括第二多个高速缓存行,并且合伙子块是驻留于存储器侧高速缓存中的牺牲子块。合伙子块的标识可以包括例如根据LRU或其它合适的策略而选择牺牲子块。第一多个高速缓存行中的每个高速缓存行可以在处理框86处与第二多个高速缓存行中的对应的高速缓存行一起被压缩,以获得包括第三多个高速缓存行的压缩的子块。处理框86可以包括例如:将一个或多个压缩过程应用于填充子块并且应用于合伙子块;以及随后在逐高速缓存行的基础上组合结果。
可以在处理框88处关于压缩的子块是否满足大小条件而作出确定。如已指出的,大小条件可以包括例如第三多个高速缓存行中的每个高速缓存行具有小于或等于与处理器侧高速缓存相关联的高速缓存行大小的大小。如果大小条件被满足,则所图示的处理框90以压缩的子块替换牺牲子块。因此,所图示的方法80使牺牲子块的压缩的版本能够与填充子块的压缩的版本一起保留在存储器侧高速缓存中。此外,将第一块划分成子块可以增加/最大化将为填充子块找到合伙子块的概率。实际上,压缩元数据的任何增加可以鉴于与概率增加相关联的性能和/或功耗益处而是可忽略的。如果在处理框88处确定大小条件没有被满足,则处理框92可以用填充子块替换牺牲子块。
图3B示出使存储器侧高速缓存子块成为合伙的另一方法94。方法94通常可以在如本文中所描述的压缩使能的存储器设备中被实现。更具体地,方法94可以在一个或多个模块中实现为存储于机器或计算机可读存储介质(诸如,RAM、ROM、PROM、固件、闪速存储器等等)中、可配置逻辑(诸如,例如PLA、FPGA、CPLD)中、使用电路技术(诸如,例如ASIC、CMOS、TTL技术)的固定功能性逻辑硬件中或以上各项的任何组合中的逻辑指令的集合。
所图示的处理框96提供标识第一块且将第一块划分成比与处理器侧高速缓存相关联的高速缓存行大小更大的子块,其中填充子块包括第一多个高速缓存行。因此,如已经讨论的,处理框96可以包括例如将4kB数据的块划分成四个1kB数据的子块。合伙子块可以在处理框98处被标识,其中合伙子块包括第二多个高速缓存行,并且驻留于存储器侧高速缓存中。合伙子块的标识可以包括从存储器侧高速缓存中的给定的组选择“候选”(例如,如果存储器侧高速缓存是多路组关联式高速缓存,其中每个组含有多个路并且每个路含有数据的块)。第一多个高速缓存行中的每个高速缓存行可以在处理框100处与第二多个高速缓存行中的对应的高速缓存行一起被压缩,以获得包括第三多个高速缓存行的压缩的子块。处理框100可以包括例如:将一个或多个压缩过程应用于填充子块并且应用于合伙子块;以及随后在逐高速缓存行的基础上组合结果。
可以在处理框102处关于压缩的子块是否满足大小条件而作出确定,其中大小条件可以包括例如第三多个高速缓存行中的每个高速缓存行具有小于或等于与处理器侧高速缓存相关联的高速缓存行大小的大小。如果大小条件被满足,则所图示的处理框104以压缩的子块替换合伙子块。另一方面,如果在处理框102处确定大小条件没有被满足,则所图示的处理框106确定是否已在存储器侧高速缓存中到达最后一个子块(例如,该组中的最后的子块)。如果是这样,则可以在处理框108处以填充子块替换合伙子块。如果在处理框106处确定尚未遇到最后一个子块,则下一个候选合伙子块可以在处理框110处被选择,并且所图示的方法94返回到处理框100。因此,所图示的方法94使压缩的子块能够代替存储器侧高速缓存中首先遇到的子块(导致满足大小条件的压缩的子块)。
图3C示出使存储器侧高速缓存子块成为合伙的又一方法112。方法112通常可以在如本文中所描述的压缩使能的存储器设备中被实现。更具体地,方法112可以在一个或多个模块中被实现为存储于机器或计算机可读存储介质(诸如,RAM、ROM、PROM、固件、闪速存储器等等)中、可配置逻辑(诸如,例如PLA、FPGA、CPLD)中、使用电路技术(诸如,例如ASIC、CMOS、TTL技术)的固定功能性逻辑硬件中或以上各项的任何组合中的逻辑指令的集合。
所图示的处理框114提供标识第一块并且将第一块划分成比与处理器侧高速缓存相关联的高速缓存行大小更大的子块,其中填充子块包括第一多个高速缓存行。因此,如已经讨论的,处理框114可以包括例如将4kB数据的块划分成四个1kB数据的子块。合伙子块可以在处理框116处被标识,其中合伙子块包括第二多个高速缓存行,并且驻留于存储器侧高速缓存中。合伙子块的标识可以包括从存储器侧高速缓存中的给定的组选择“候选”(例如,如果存储器侧高速缓存是多路组关联式高速缓存,其中每个组含有多个路并且每个路含有数据的块)。
第一多个高速缓存行中的每个高速缓存行可以在处理框118处与第二多个高速缓存行中的对应的高速缓存行一起被压缩,以获得包括第三多个高速缓存行的压缩的子块。处理框118可以包括例如:将一个或多个压缩过程应用于填充子块并且应用于合伙子块;以及随后在逐高速缓存行的基础上组合结果。
所图示的处理框120确定是否已在存储器侧高速缓存中到达最后一个子块(例如,该组中的最后的子块)。如果没有,则下一个候选合伙子块可以在处理框122处被选择,并且所图示的方法112返回到处理框118。一旦在处理框120处确定已到达最后一个子块,处理框124就可以用对应的压缩的子块替换存储器侧高速缓存中的最佳适配的合伙子块。最佳适配的合伙子块可以被认为是促使压缩子块在存储器侧高速缓存中留下最少量未使用的空间的子块。
现在转到图4,示出基于存储器的计算系统130。系统130通常可以是服务器、台式计算机、笔记本计算机、平板计算机、可翻转式平板、智能电视(TV)、个人数字助理(PDA)、移动互联网装置(MID)、智能电话、可穿戴装置、媒体播放器等等或以上各项的任何组合的部分。在所图示的示例中,输入/输出(IO)模块148被通信地耦合到显示器150(例如,液晶显示器/LCD、发光二极管/LED显示器、触摸屏)、大容量存储设备152(例如,硬盘驱动器/HDD、光盘、固态驱动器/SSD、闪速存储器)以及网络控制器154(例如,有线、无线)。所图示的系统130还可以包括主机处理器132(例如,中央处理单元/CPU),所述主机处理器132包括处理器侧高速缓存134(例如,LLC)和通过总线140或其它合适的通信接口而与系统存储器138通信的集成存储器控制器136。在芯片上系统(SoC)体系结构中主机处理器132和IO模块148可以被集成到共享的半导体管芯(未示出)上。
继续参考图4和图5,系统存储器138可以包括存储器142(例如,可以是易失性存储器或非易失性存储器的远存储器)、高速缓存控制器144(144a-144d)以及可以比存储器142更迅速地被访问的存储器侧高速缓存146。存储器侧高速缓存146可以被组织成多个块(或子块)。所图示的高速缓存控制器144通常可以实现已经讨论的方法40(图2A)、方法52(图2B)、方法68(图2C)、方法80(图3A)、方法94(图3B)和/或方法112(图3C)的一个或多个方面。因此,高速缓存控制器144可以起包括标识(例如,响应于高速缓存未命中)第一块的高速缓存未命中处置器144a的压缩使能的存储器设备的作用,其中第一块包括第一多个高速缓存行。例如,可以从远存储器142取回和/或接收第一块。另外,压缩控制器144b可以被通信地耦合到高速缓存未命中处置器144a。压缩控制器144b可以标识包括第二多个高速缓存行并且驻留于存储器侧高速缓存146中的第二块。在一个示例中,压缩控制器144b进一步将第一多个高速缓存行中的每个高速缓存行与第二多个高速缓存行中的对应的高速缓存行一起压缩,以获得包括第三多个高速缓存行的压缩的块。
另外,替换控制器144c可以被通信地耦合到高速缓存未命中处置器144a和压缩控制器144b,其中替换控制器144c被配置成如果压缩的块满足大小条件,则以压缩的块替换存储器侧高速缓存146中的第二块。大小条件可以包括例如第三多个高速缓存行中的每个高速缓存行具有小于或等于与处理器侧高速缓存134相关联的高速缓存行大小的大小。高速缓存控制器144还可以包括将第一块划分成比高速缓存行大小更大的子块的子块管理器144d。在这样的情况下,压缩控制器144b可以在子块的基础上标识第二块。
在一个示例中,存储器侧高速缓存146可以被称为两级存储器/2LM体系结构中的“近存储器”。如已指出的,存储器142可以是包括易失性存储器或非易失性存储器的远存储器。非易失性存储器是不需要电源来维持由介质存储的数据的状态的存储介质。非易失性存储器的非限制性示例可以包括以下各项中的任一个或组合:固态存储器(诸如,平面或3DNAND闪速存储器或NOR闪速存储器)、3D交叉点存储器、使用硫系相变材料(例如,硫系玻璃)的存储装置、可按字节寻址的非易失性存储器装置、铁电存储器、硅-氧化物-氮化物-氧化物-硅(SONOS)存储器、聚合物存储器(例如,铁电聚合物存储器)、铁电晶体管随机存取存储器(Fe-TRAM)、奥氏存储器(ovonic memory)、纳米线存储器、电可擦除可编程只读存储器(EEPROM)、其它各种类型的非易失性随机存取存储器(RAM)以及磁存储式存储器。在一些实施例中,3D交叉点存储器可以包含无晶体管的可堆叠交叉点体系结构,其中存储器单元位于字线和位线的交点处,并且是可个别地可寻址的,并且其中位存储基于体电阻的改变。在具体的实施例中,带有非易失性存储器的存储器模块可以遵照由联合电子装置工程委员会(JEDEC)颁布的一个或多个标准(诸如,JESD218、JESD219、JESD220-1、JESD223B、JESD223-1)或其它合适的标准(本文中所引用的JEDEC标准在jedec.org处是可用的)。
易失性存储器是需要电源来维持由介质所存储的数据的状态的存储介质。易失性存储器的示例可以包括各种类型的随机存取存储器(RAM)(诸如,动态随机存取存储器(DRAM)或静态随机存取存储器(SRAM))。可以在存储器模块中使用的一种具体类型的DRAM是同步动态随机存取存储器(SDRAM)。在具体实施例中,存储器模块的DRAM遵照由JEDEC颁布的标准(诸如,用于双倍数据率(DDR)SDRAM的JESD79F、用于DDR2 SDRAM的JESD79-2F、用于DDR3 SDRAM的JESD79-3F或用于DDR4 SDRAM的JESD79-4A(这些标准在www.jedec.org可获得))。这样的标准(以及类似标准)可以被称为基于DDR的标准,并且实现这样的标准的存储装置106的通信接口可以被称为基于DDR的接口。
附加注释和示例:
示例1可以包括压缩使能的存储器设备,其包含:被组织成多个块的存储器侧高速缓存;响应于存储器侧高速缓存中的高速缓存未命中而标识第一块的高速缓存未命中处置器;将第一块划分成比与处理器侧高速缓存相关联的高速缓存行大小更大的子块的子块管理器,其中,填充子块要包括第一多个高速缓存行;通信地耦合到高速缓存未命中处置器的压缩控制器,压缩控制器标识包括第二多个高速缓存行并且驻留于存储器侧高速缓存中的合伙子块,压缩控制器进一步将第一多个高速缓存行中的每个高速缓存行与第二多个高速缓存行中的对应的高速缓存行一起压缩,以获得包括第三多个高速缓存行的压缩的子块;以及通信地耦合到高速缓存未命中处置器的替换控制器,如果压缩的子块满足大小条件,则替换控制器以压缩的子块替换存储器侧高速缓存中的合伙子块,其中大小条件要包括第三多个高速缓存行中的每个高速缓存行具有小于或等于与处理器侧高速缓存相关联的高速缓存行大小的大小。
示例2可以包括示例1的设备,其中牺牲子块要被选择作为合伙子块,并且如果压缩的子块没有满足大小条件,则替换控制器要以填充子块替换牺牲子块。
示例3可以包括示例1的设备,其中存储器侧高速缓存中的促使压缩子块满足大小条件的第一子块要被选择作为合伙子块。
示例4可以包括示例1的设备,其中存储器侧高速缓存中的促使压缩子块留下最少量未使用的空间的子块要被选择作为合伙子块。
示例5可以包括基于存储器的计算系统,其包含:包括处理器侧高速缓存的处理器;耦合到处理器的总线;以及耦合到总线的系统存储器,系统存储器包括:存储器;被组织成多个块的存储器侧高速缓存;标识第一块的高速缓存未命中处置器,其中第一块要包括第一多个高速缓存行;通信地耦合到高速缓存未命中处置器的压缩控制器,压缩控制器标识包括第二多个高速缓存行并且驻留于存储器侧高速缓存中的第二块,压缩控制器进一步将第一多个高速缓存行中的每个高速缓存行与第二多个高速缓存行中的对应的高速缓存行一起压缩,以获得包括第三多个高速缓存行的压缩的块;以及通信地耦合到高速缓存未命中处置器的替换控制器,如果压缩的块满足大小条件,则替换控制器以压缩的块替换存储器侧高速缓存中的第二块。
示例6可以包括示例5的系统,其中大小条件要包括第三多个高速缓存行中的每个高速缓存行具有小于或等于与处理器侧高速缓存相关联的高速缓存行大小的大小。
示例7可以包括示例5的系统,其中牺牲块要被选择作为第二块,并且如果压缩的块没有满足大小条件,则替换控制器要以第一块替换牺牲块。
示例8可以包括示例5的系统,其中存储器侧高速缓存中的促使压缩块满足大小条件的第一块要被选择作为第二块。
示例9可以包括示例5的系统,其中存储器侧高速缓存中的促使压缩块留下最少量未使用的空间的块要被选择作为第二块。
示例10可以包括示例5至9中的任一个的系统,其中系统存储器进一步包括将第一块划分成比与处理器侧高速缓存相关联的高速缓存行大小更大的子块的子块管理器,其中第二块要在子块的基础上被标识。
示例11可以包括示例5至9中的任一个的系统,其中第一块要响应于存储器侧高速缓存中的高速缓存未命中而被标识。
示例12可以包括压缩使能的存储器设备,其包含:被组织成多个块的存储器侧高速缓存;标识第一块的高速缓存未命中处置器,其中第一块要包括第一多个高速缓存行;通信地耦合到高速缓存未命中处置器的压缩控制器,压缩控制器标识包括第二多个高速缓存行并且驻留于存储器侧高速缓存中的第二块,压缩控制器进一步将第一多个高速缓存行中的每个高速缓存行与第二多个高速缓存行中的对应的高速缓存行一起压缩,以获得包括第三多个高速缓存行的压缩的块;以及通信地耦合到高速缓存未命中处置器的替换控制器,如果压缩的块满足大小条件,则替换控制器以压缩的块替换存储器侧高速缓存中的第二块。
示例13可以包括示例12的设备,其中大小条件要包括第三多个高速缓存行中的每个高速缓存行具有小于或等于与处理器侧高速缓存相关联的高速缓存行大小的大小。
示例14可以包括示例12的设备,其中牺牲块要被选择作为第二块,并且如果压缩的块没有满足大小条件,则替换控制器要以第一块替换牺牲块。
示例15可以包括示例12的设备,其中存储器侧高速缓存中的促使压缩块满足大小条件的第一块要被选择作为第二块。
示例16可以包括示例12的设备,其中存储器侧高速缓存中的促使压缩块留下最少量未使用的空间的块要被选择作为第二块。
示例17可以包括示例12至16中的任一个的设备,还包括将第一块划分成比与处理器侧高速缓存相关联的高速缓存行大小更大的子块的子块管理器,其中第二块要在子块的基础上被标识。
示例18可以包括示例12至16中的任一个的设备,其中第一块要响应于存储器侧高速缓存中的高速缓存未命中而被标识。
示例19可以包括操作压缩使能的存储器设备的方法,其包含:标识第一块和第二块,其中,第一块包括第一多个高速缓存行,第二块包括第二多个高速缓存行,并且第二块驻留于存储器侧高速缓存中;将第一多个高速缓存行中的每个高速缓存行与第二多个高速缓存行中的对应的高速缓存行一起压缩,以获得包括第三多个高速缓存行的压缩的块;以及如果压缩的块满足大小条件,则以压缩的块替换存储器侧高速缓存中的第二块。
示例20可以包括示例19的方法,其中大小条件包括第三多个高速缓存行中的每个高速缓存行具有小于或等于与处理器侧高速缓存相关联的高速缓存行大小的大小。
示例21可以包括示例19的方法,其中牺牲块被选择作为第二块,并且该方法还包括如果压缩的块没有满足大小条件,则以第一块替换牺牲块。
示例22可以包括示例19的方法,其中存储器侧高速缓存中的促使压缩块满足大小条件的第一块被选择作为第二块。
示例23可以包括示例19的方法,其中存储器侧高速缓存中的促使压缩块留下最少量未使用的空间的块被选择作为第二块。
示例24可以包括示例19至23中的任一个的方法,还包括将第一块划分成比与处理器侧高速缓存相关联的高速缓存行大小更大的子块,其中第二块在子块的基础上被标识。
示例25可以包括示例19至23中的任一个的方法,其中第一块响应于存储器侧高速缓存中的高速缓存未命中而被标识。
示例26可以包括压缩使能的存储器设备,其包含:用于标识第一块和第二块的部件,其中第一块要包括第一多个高速缓存行,第二块要包括第二多个高速缓存行,并且第二块要驻留于存储器侧高速缓存中;用于将第一多个高速缓存行中的每个高速缓存行与第二多个高速缓存行中的对应的高速缓存行一起压缩以获得包括第三多个高速缓存行的压缩的块的部件;以及用于如果压缩的块满足大小条件,则以压缩的块替换存储器侧高速缓存中的第二块的部件。
示例27可以包括示例26的设备,其中大小条件要包括第三多个高速缓存行中的每个高速缓存行具有小于或等于与处理器侧高速缓存相关联的高速缓存行大小的大小。
示例28可以包括示例26的设备,其中牺牲块要被选择作为第二块,并且该设备还包括用于如果压缩的块没有满足大小条件,则以第一块替换牺牲块的部件。
示例29可以包括示例26的设备,其中存储器侧高速缓存中的促使压缩块满足大小条件的第一块要被选择作为第二块。
示例30可以包括示例26的设备,其中存储器侧高速缓存中的促使压缩块留下最少量未使用的空间的块要被选择作为第二块。
示例31可以包括示例26至30中的任一个的设备,还包括用于将第一块划分成比与处理器侧高速缓存相关联的高速缓存行大小更大的子块的部件,其中第二块要在子块的基础上被标识。
示例32可以包括示例26至30中的任一个的设备,其中第一块要响应于存储器侧高速缓存中的高速缓存未命中而被标识。
本文中所描述的技术因此可以增加高速缓存容量并且减少与高速缓存未命中相关的对远存储器的访问,这又可以改进性能并且降低功耗。另外,技术可以降低CPU读取操作的关键路径中的解压缩时延和开销。因此,性能可以进一步被增强。此外,存储器侧高速缓存压缩可以通过使能构建较小的高速缓存来降低系统成本,同时使用压缩来填补与较大的高速缓存的差距。技术还可以被扩展到不同的块/高速缓存行粒度和关联性。
实施例可适用于与所有类型的半导体集成电路(“IC”)芯片一起使用。这些IC芯片的示例包括但不限于处理器、控制器、芯片集构件、可编程逻辑阵列(PLA)、存储器芯片、网络芯片、芯片上系统(SoC)、SSD/NAND控制器ASIC以及诸如此类。另外,在一些附图中,用线来表示信号线路。一些线可以是不同的,以指示更多的构成的信号路径;具有数字标记,以指示构成的信号路径的数量;和/或在一个或多个终端处具有箭头,以指示主信息流方向。然而,这不应当以限制的方式被解释。更确切地说,这样的附加细节可以与一个或多个示范性的实施例结合而被使用,以促进对电路的更容易理解。任何所表示的信号线路无论是否具有附加信息都可以实际上包含可以沿多个方向行进并且可以利用任何合适的类型的信号方案来实现的一个或多个信号(例如,利用差分对、光纤线路和/或单端型线路实现的数字或模拟线路)。
示例大小/模型/值/范围可以已被给出,尽管实施例不限于同样的。随着制造技术(例如,光刻法)随时间推移而成熟,预期能够制造较小大小的装置。另外,为了便于图示和讨论,公知的到IC芯片和其它构件的电源/接地连接可以在图内被示出或可以不在图内被示出,且以便于不使实施例的某些方面晦涩。而且,布置可以以框图形式被示出,以便避免使实施例晦涩,并且还考虑到关于这样的框图布置的实现的详情高度地取决于要在其内实现实施例的平台(即,这样的详情应当充分在本领域技术人员的认知范畴内)这一事实。在阐明具体细节(例如,电路)以便描述示例实施例的情况下,对本领域技术人员应当明显的是,能够在没有这些具体细节的情况下或在带有这些具体细节的变型的情况下实践实施例。描述因此将被视为说明性的,而不是限制性的。
术语“耦合的”可以在本文中被用于指在讨论中的构件之间的任何类型的关系(直接或间接),且可以应用于电、机械、流体、光、电磁、机电或其它连接。另外,术语“第一”、“第二”等可以在本文中仅仅用于促进讨论,并且未携带具体的时间的或按年代顺序排列的意义,除非另有指示。
如在本申请中和在权利要求中所使用的,通过术语“中的一个或多个”而联结的一列项可以意指所列出的术语的任何组合。例如,短语“A、B或C中的一个或多个”可以意指A;B;C;A和B;A和C;B和C;或A、B以及C。
本领域技术人员将根据前文的描述认识到,实施例的广义技术能够以各种各样的形式被实现。因此,虽然实施例已与其具体示例结合而被描述,但实施例的真正范围不应当被这样限制,因为,在研究附图、说明书以及以下的权利要求之后,其它修改对技术熟练的从业者将变得明显。
Claims (25)
1.一种压缩使能的存储器设备,包含:
存储器侧高速缓存,所述存储器侧高速缓存要被组织成多个块;
高速缓存未命中处置器,所述高速缓存未命中处置器响应于所述存储器侧高速缓存中的高速缓存未命中而标识第一块;
子块管理器,所述子块管理器将所述第一块划分成比与处理器侧高速缓存相关联的高速缓存行大小更大的子块,其中填充子块要包括第一多个高速缓存行;
压缩控制器,所述压缩控制器通信地耦合到所述高速缓存未命中处置器,所述压缩控制器标识包括第二多个高速缓存行并且驻留于所述存储器侧高速缓存中的合伙子块,所述压缩控制器进一步将所述第一多个高速缓存行中的每个高速缓存行与所述第二多个高速缓存行中的对应的高速缓存行一起压缩,以获得包括第三多个高速缓存行的压缩的子块;以及
替换控制器,所述替换控制器通信地耦合到所述高速缓存未命中处置器,如果所述压缩的子块满足大小条件,则所述替换控制器以所述压缩的子块替换所述存储器侧高速缓存中的所述合伙子块,其中所述大小条件要包括所述第三多个高速缓存行中的每个高速缓存行具有小于或等于与所述处理器侧高速缓存相关联的所述高速缓存行大小的大小。
2.如权利要求1所述的设备,其中牺牲子块要被选择作为所述合伙子块,并且如果所述压缩的子块没有满足所述大小条件,则所述替换控制器要以所述填充子块替换所述牺牲子块。
3.如权利要求1所述的设备,其中所述存储器侧高速缓存中的促使所述压缩子块满足所述大小条件的第一子块要被选择作为所述合伙子块。
4.如权利要求1所述的设备,其中所述存储器侧高速缓存中的促使所述压缩子块留下最少量未使用的空间的子块要被选择作为所述合伙子块。
5.一种基于存储器的计算系统,包含:
包括处理器侧高速缓存的处理器;
耦合到所述处理器的总线;以及
耦合到所述总线的系统存储器,所述系统存储器包括:
存储器;
被组织成多个块的存储器侧高速缓存;
标识第一块的高速缓存未命中处置器,其中所述第一块要包括第一多个高速缓存行;
通信地耦合到所述高速缓存未命中处置器的压缩控制器,所述压缩控制器标识包括第二多个高速缓存行并且驻留于所述存储器侧高速缓存中的合伙块,所述压缩控制器进一步将所述第一多个高速缓存行中的每个高速缓存行与所述第二多个高速缓存行中的对应的高速缓存行一起压缩,以获得包括第三多个高速缓存行的压缩的块;以及
通信地耦合到所述高速缓存未命中处置器的替换控制器,如果所述压缩的块满足大小条件,则所述替换控制器以所述压缩的块替换所述存储器侧高速缓存中的所述合伙块。
6.如权利要求5所述的系统,其中所述大小条件要包括所述第三多个高速缓存行中的每个高速缓存行具有小于或等于与所述处理器侧高速缓存相关联的高速缓存行大小的大小。
7.如权利要求5所述的系统,其中牺牲块要被选择作为所述合伙块,并且如果所述压缩的块没有满足所述大小条件,则所述替换控制器要以所述第一块替换所述牺牲块。
8.如权利要求5所述的系统,其中所述存储器侧高速缓存中的促使所述压缩块满足所述大小条件的第一块要被选择作为所述合伙块。
9.如权利要求5所述的系统,其中所述存储器侧高速缓存中的促使所述压缩块留下最少量未使用的空间的块要被选择作为所述合伙块。
10.如权利要求5至9中的任一项所述的系统,其中所述系统存储器还包括将所述第一块划分成比与处理器侧高速缓存相关联的高速缓存行大小更大的子块的子块管理器,其中所述合伙块要在子块的基础上被标识。
11.如权利要求5至9中的任一项所述的系统,其中所述第一块要响应于所述存储器侧高速缓存中的高速缓存未命中而被标识。
12.一种压缩使能的存储器设备,包含:
存储器侧高速缓存,所述存储器侧高速缓存被组织成多个块;
高速缓存未命中处置器,所述高速缓存未命中处置器标识第一块,其中所述第一块要包括第一多个高速缓存行;
压缩控制器,所述压缩控制器通信地耦合到所述高速缓存未命中处置器,所述压缩控制器标识包括第二多个高速缓存行并且驻留于所述存储器侧高速缓存中的合伙块,所述压缩控制器进一步将所述第一多个高速缓存行中的每个高速缓存行与所述第二多个高速缓存行中的对应的高速缓存行一起压缩,以获得包括第三多个高速缓存行的压缩的块;以及
替换控制器,所述替换控制器通信地耦合到所述高速缓存未命中处置器,如果所述压缩的块满足大小条件,则所述替换控制器以所述压缩的块替换所述存储器侧高速缓存中的所述合伙块。
13.如权利要求12所述的设备,其中所述大小条件要包括所述第三多个高速缓存行中的每个高速缓存行具有小于或等于与处理器侧高速缓存相关联的高速缓存行大小的大小。
14.如权利要求12所述的设备,其中牺牲块要被选择作为所述合伙块,并且如果所述压缩的块没有满足所述大小条件,则所述替换控制器要以所述第一块替换所述牺牲块。
15.如权利要求12所述的设备,其中所述存储器侧高速缓存中的促使所述压缩块满足所述大小条件的第一块要被选择作为所述合伙块。
16.如权利要求12所述的设备,其中所述存储器侧高速缓存中的促使所述压缩块留下最少量未使用的空间的块要被选择作为所述合伙块。
17.如权利要求12至16中的任一项所述的设备,还包括将所述第一块划分成比与处理器侧高速缓存相关联的高速缓存行大小更大的子块的子块管理器,其中所述合伙块要在子块的基础上被标识。
18.如权利要求12至16中的任一项所述的设备,其中所述第一块要响应于所述存储器侧高速缓存中的高速缓存未命中而被标识。
19.一种操作压缩使能的存储器设备的方法,包含:
标识第一块和合伙块,其中所述第一块包括第一多个高速缓存行,所述合伙块包括第二多个高速缓存行,并且所述合伙块驻留于存储器侧高速缓存中;
将所述第一多个高速缓存行中的每个高速缓存行与所述第二多个高速缓存行中的对应的高速缓存行一起压缩,以获得包括第三多个高速缓存行的压缩的块;以及
如果所述压缩的块满足大小条件,则以所述压缩的块替换所述存储器侧高速缓存中的所述合伙块。
20.如权利要求19所述的方法,其中所述大小条件包括所述第三多个高速缓存行中的每个高速缓存行具有小于或等于与处理器侧高速缓存相关联的高速缓存行大小的大小。
21.如权利要求19所述的方法,其中所述牺牲块被选择作为所述合伙块,并且所述方法还包括如果所述压缩的块没有满足所述大小条件,则以所述第一块替换所述牺牲块。
22.如权利要求19所述的方法,其中所述存储器侧高速缓存中的促使所述压缩块满足所述大小条件的第一块被选择作为所述合伙块。
23.如权利要求19所述的方法,其中所述存储器侧高速缓存中的促使所述压缩块留下最少量未使用的空间的块被选择作为所述合伙块。
24.如权利要求19至23中的任一项所述的方法,还包括将所述第一块划分成比与处理器侧高速缓存相关联的高速缓存行大小更大的子块,其中在子块的基础上标识所述合伙块。
25.一种压缩使能的存储器设备,包含用于执行权利要求19至23中的任一项所述的方法的部件。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/279,647 US10048868B2 (en) | 2016-09-29 | 2016-09-29 | Replacement of a block with a compressed block to increase capacity of a memory-side cache |
US15/279647 | 2016-09-29 | ||
PCT/US2017/048457 WO2018063614A1 (en) | 2016-09-29 | 2017-08-24 | Using compression to increase capacity of a memory-side cache with large block size |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109643278A true CN109643278A (zh) | 2019-04-16 |
CN109643278B CN109643278B (zh) | 2023-07-18 |
Family
ID=61686220
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780053279.1A Active CN109643278B (zh) | 2016-09-29 | 2017-08-24 | 使用压缩来增加存储器侧高速缓存的容量的方法和设备 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10048868B2 (zh) |
CN (1) | CN109643278B (zh) |
DE (1) | DE112017004916T5 (zh) |
WO (1) | WO2018063614A1 (zh) |
Families Citing this family (5)
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 |
US11188467B2 (en) | 2017-09-28 | 2021-11-30 | Intel Corporation | Multi-level system memory with near memory capable of storing compressed cache lines |
SE543649C2 (en) * | 2018-11-14 | 2021-05-18 | Zeropoint Tech Ab | Managing free space in a compressed memory system |
SE544272C2 (en) * | 2018-11-14 | 2022-03-22 | Zeropoint Tech Ab | Accessing compressed computer memory |
US11573899B1 (en) | 2021-10-21 | 2023-02-07 | International Business Machines Corporation | Transparent interleaving of compressed cache lines |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5802572A (en) * | 1996-03-15 | 1998-09-01 | International Business Machines Corporation | Write-back cache having sub-line size coherency granularity and method for maintaining coherency within a write-back cache |
US6182201B1 (en) * | 1997-04-14 | 2001-01-30 | International Business Machines Corporation | Demand-based issuance of cache operations to a system bus |
US20040024792A1 (en) * | 2002-07-31 | 2004-02-05 | Texas Instruments Incorporated | Write back policy for memory |
US8612676B2 (en) * | 2010-12-22 | 2013-12-17 | Intel Corporation | Two-level system main memory |
US20150178214A1 (en) * | 2013-12-20 | 2015-06-25 | Alaa R. Alameldeen | Cache memory data compression and decompression |
CN105474186A (zh) * | 2013-08-20 | 2016-04-06 | 国际商业机器公司 | 硬件管理的压缩的高速缓存 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7162584B2 (en) | 2003-12-29 | 2007-01-09 | Intel Corporation | Mechanism to include hints within compressed data |
US8156283B2 (en) * | 2007-05-10 | 2012-04-10 | Texas Instruments Incorporated | Processing function connected to processor memory hierarchy |
US9529708B2 (en) * | 2011-09-30 | 2016-12-27 | Intel Corporation | Apparatus for configuring partitions within phase change memory of tablet computer with integrated memory controller emulating mass storage to storage driver based on request from software |
WO2013101060A2 (en) | 2011-12-29 | 2013-07-04 | Intel Corporation | Efficient support of sparse data structure access |
US8788712B2 (en) | 2012-01-06 | 2014-07-22 | International Business Machines Corporation | Compression block input/output reduction |
JP5826114B2 (ja) * | 2012-05-25 | 2015-12-02 | クラリオン株式会社 | データ解凍装置、データ圧縮装置、データの解凍プログラム、データの圧縮プログラム、及び、圧縮データ配信システム |
WO2014049636A1 (en) * | 2012-09-25 | 2014-04-03 | Hitachi, Ltd. | Storage apparatus and method of controlling the same |
US20170010816A1 (en) | 2014-04-18 | 2017-01-12 | Hewlett Packard Enterprise Developmentt Lp | Providing combined data from a cache and a storage device |
US10152421B2 (en) * | 2015-11-23 | 2018-12-11 | Intel Corporation | Instruction and logic for cache control operations |
US20170255561A1 (en) * | 2016-03-07 | 2017-09-07 | Intel Corporation | Technologies for increasing associativity of a direct-mapped cache using compression |
US20180004659A1 (en) * | 2016-07-01 | 2018-01-04 | Intel Corporation | Cribbing cache implementing highly compressible data indication |
-
2016
- 2016-09-29 US US15/279,647 patent/US10048868B2/en active Active
-
2017
- 2017-08-24 DE DE112017004916.4T patent/DE112017004916T5/de active Pending
- 2017-08-24 WO PCT/US2017/048457 patent/WO2018063614A1/en active Application Filing
- 2017-08-24 CN CN201780053279.1A patent/CN109643278B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5802572A (en) * | 1996-03-15 | 1998-09-01 | International Business Machines Corporation | Write-back cache having sub-line size coherency granularity and method for maintaining coherency within a write-back cache |
US6182201B1 (en) * | 1997-04-14 | 2001-01-30 | International Business Machines Corporation | Demand-based issuance of cache operations to a system bus |
US20040024792A1 (en) * | 2002-07-31 | 2004-02-05 | Texas Instruments Incorporated | Write back policy for memory |
US8612676B2 (en) * | 2010-12-22 | 2013-12-17 | Intel Corporation | Two-level system main memory |
CN105474186A (zh) * | 2013-08-20 | 2016-04-06 | 国际商业机器公司 | 硬件管理的压缩的高速缓存 |
US20150178214A1 (en) * | 2013-12-20 | 2015-06-25 | Alaa R. Alameldeen | Cache memory data compression and decompression |
Non-Patent Citations (4)
Title |
---|
L. BENINI等: "Memory energy minimization by data compression: algorithms, architectures and implementation", 《 IEEE TRANSACTIONS ON VERY LARGE SCALE INTEGRATION (VLSI) SYSTEMS 》 * |
曾露等: "基于区域协作的Cache压缩", 《高技术通讯》 * |
校吉波: "基于ARM指令架构的微控制器系统设计与功能验证", 《中国优秀硕士学位论文全文数据库》 * |
田新华等: "基于简单常见模式编码(S-FPC)的压缩Cache层次设计", 《计算机工程与科学》 * |
Also Published As
Publication number | Publication date |
---|---|
CN109643278B (zh) | 2023-07-18 |
US20180088822A1 (en) | 2018-03-29 |
DE112017004916T5 (de) | 2019-06-13 |
WO2018063614A1 (en) | 2018-04-05 |
US10048868B2 (en) | 2018-08-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109643278A (zh) | 使用压缩来增加带有大的块大小的存储器侧高速缓存的容量 | |
US10459644B2 (en) | Non-volatile storage system with integrated compute engine and optimized use of local fast memory | |
US10565123B2 (en) | Hybrid logical to physical address translation for non-volatile storage devices with integrated compute module | |
US10394706B2 (en) | Non-volatile storage with adaptive command prediction | |
CN104126177B (zh) | 预交错顺序数据的系统及方法 | |
CN109101434B (zh) | 存储装置、存储系统及所述存储装置的操作方法 | |
US10474585B2 (en) | Nonvolatile memory system and a method of operating the nonvolatile memory system | |
JP5792019B2 (ja) | 半導体装置 | |
KR102462305B1 (ko) | 고체 상태 드라이브의 판독 성능을 개선시키는 방법 및 장치 | |
US20140247673A1 (en) | Row shifting shiftable memory | |
WO2009006442A1 (en) | Block addressing for parallel memory arrays | |
EP3757800A1 (en) | Memory system, computing system, and methods thereof | |
US8775722B2 (en) | Storing data in parallel in a flash storage device using on chip page shifting between planes | |
CN112905502A (zh) | 存储装置及其操作方法 | |
CN107688436A (zh) | 存储器模块和控制其的方法 | |
CN107481753A (zh) | 存储系统 | |
US20190102102A1 (en) | Method, system, and apparatus for improving bandwidth of storage devices | |
US20180136865A1 (en) | Method of operating memory device, memory device using the same and memory system including the device | |
US10891233B2 (en) | Intelligent prefetch disk-caching technology | |
CN111459845A (zh) | 存储装置、包括存储装置的计算系统及其操作方法 | |
JP6073495B2 (ja) | 半導体装置 | |
US11126624B2 (en) | Trie search engine | |
CN109716363A (zh) | 用于硬件神经形态内核中的突触权重的高效存储的混合压缩方案 | |
US10417135B2 (en) | Near memory miss prediction to reduce memory access latency | |
US10282328B2 (en) | Apparatus having direct memory access controller and method for accessing data in memory |
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 |