CN109416666A - 具有压缩数据和标签的缓存 - Google Patents
具有压缩数据和标签的缓存 Download PDFInfo
- Publication number
- CN109416666A CN109416666A CN201780040198.8A CN201780040198A CN109416666A CN 109416666 A CN109416666 A CN 109416666A CN 201780040198 A CN201780040198 A CN 201780040198A CN 109416666 A CN109416666 A CN 109416666A
- Authority
- CN
- China
- Prior art keywords
- data
- main piece
- memory
- metadata
- 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
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/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host 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/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/0871—Allocation or management of cache space
-
- 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
- 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/0893—Caches characterised by their organisation or structure
- G06F12/0895—Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
-
- 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/46—Caching storage objects of specific type in disk cache
- G06F2212/466—Metadata, control data
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
缓存行数据和元数据被压缩并被存储在第一存储器区域,并可选地被存储在第二存储器区域中,元数据包括地址标签。当压缩的数据全部适合在第一存储器区域中的主块内时,在单个存储器访问中获取数据和元数据两者。否则,溢出数据被存储在第二存储器区域中的溢出块中。例如,第一和第二存储器区域可以位于DRAM的同一行中,或者位于DRAM的不同区域中,并且可以被配置为能够使用标准DRAM组件。压缩和解压缩逻辑电路可以包括在存储器控制器中。
Description
背景技术
缓存是用于在数据处理装置中临时存储数据的存储器。通常,缓存是较小的高速存储器,其存储来自备份存储设备的数据子集的副本。备份存储设备通常是更大、更慢的存储器或数据存储设备。缓存中的数据由缓存客户端(例如中央处理单元(CPU))使用。当经常使用的数据在缓存中可用时,CPU的性能得到增强,从而避免了与从备份存储设备读取数据相关的延迟。缓存中的每个条目包括数据本身以及与原始数据在备份存储设备中的位置相关联的标签、有效位以及可选地一个或多个状态位。除了数据本身之外,还通过存储标签、有效位和状态位的需要来确定缓存的大小。
对于大的缓存,要求大的标签存储空间。例如,对于大的片外DRAM缓存,标签存储空间要求通常可能超过实际能够被存储在片上SRAM中的标签存储空间。然而,将标签存储在DRAM中本身具有很大的延迟损失,因为需要从DRAM读取标签和数据,并且DRAM访问比SRAM访问慢得多。
附图说明
附图提供了视觉表示,其将用于更全面地描述各种代表性实施例,并且可以由本领域技术人员用来更好地理解所公开的代表性实施例及其固有优点。在这些附图中,相同的附图标记标识相应的元件:
图1是根据各种代表性实施例的数据处理系统的框图;
图2是存储器地址的图示;
图3是根据本公开的各种实施例的数据处理装置的框图;
图4是根据各种实施例的缓存行的图示;
图5是根据各种实施例的被配置为存储缓存的数据的DRAM的图示;
图6是根据各种实施例的存储在DRAM行中的单个缓存行的图示;
图7是根据各种实施例的存储在DRAM和溢出存储器区域中的缓存行的图示;
图8是根据各种实施例的到溢出数据区域中的位置的直接映射的图示;
图9是根据各种实施例的数据处理装置的框图;以及
图10是根据各种实施例的用于在DRAM缓存中缓存数据的方法的流程图。
具体实施方式
虽然本发明包含不同形式的实施例,但是在附图中示出并且将在本文中详细描述具体实施例,应理解本公开被认为是本发明的原理的示例而不旨在将本发明限制于所示和所描述的具体实施例。在下面的描述中,相同的附图标记用于描述附图的若干视图中的相同、相似或相应的部分。
在本文中,诸如第一和第二,顶部和底部等关系术语可以仅用于将一个实体或动作与另一个实体或动作区分开,而不需要或暗示这些实体或动作之间的任何实际的这种关系或顺序。术语“包括”、“包含”或其任何其他变体旨在涵盖非排他性的包含,使得包括元素的列表的过程、方法、物品或装置不仅包括这些元素,而且可以包括未明确列出的或者这种过程、方法、物品或装置固有的其他元素。在没有更多约束的情况下,前面有“包括…”的元素并不排除在包括该元素的过程、方法、物品或装置中存在另外的相同元素。
在本文中对“一个实施例”、“某些实施例”、“实施例”或类似术语的引用意指结合该实施例描述的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书中各个地方出现这些短语不一定都指同一实施例。此外,特定特征、结构或特性可以在一个或多个实施例中以任何合适的方式组合而没有限制。
如本文所用的术语“或”应被解释为包含性的或意指任何一种或任何组合。因此,“A、B或C”表示“以下任何一种:A;B;C;A和B;A和C;B和C;A、B和C”。仅当元素、功能、步骤或动作的组合以某种方式固有地相互排斥时,才会出现该定义的例外。
为了说明的简单和清楚,可以在附图中重复附图标记以指示相应的或类似的元件。阐述了许多细节以提供对本文所述实施例的理解。可以在没有这些细节的情况下实现实施例。在其他情况下,没有详细描述公知的方法、过程和组件以避免模糊所描述的实施例。该描述不应被视为局限于本文描述的实施例的范围。
具有片内封装但片外的动态随机存取存储器(DRAM)缓存的移动设备变得越来越重要。此外,未来的片上系统(SoC)服务器、移动设备和其他设备可能使用存储级存储器(SCM)。
由于访问SCM的延迟,很可能DRAM的一部分或全部专用于缓存SCM数据。SCM的密度可以是DRAM的四倍或更多,因此在片上静态随机存取存储器(SRAM)中维护所有所需的地址标签将是困难或昂贵的。
为缓存的SCM数据维护地址标签的可能方法包括:
(a)SCM标签可以被保持在SRAM中,但对于正常的缓存大小的行(例如64字节),可能需要100MB的SRAM。
(b)SCM可以以更大的粒度进行缓存,但对于稀疏访问的数据,这将涉及更多的数据移动。
(c)SCM标签和数据可以作为单独的数据驻留在DRAM中,但这需要两次访问(一次用于标签,接下来一次用于数据),使缓存命中的时间加倍。
(d)SCM可以被缓存在非标准的DRAM中,并且标签和数据都可以共存,但是这种非标准的DRAM不是商品项目,如果与中央处理单元(CPU)一起包装,则会产生很大的运输成本。
可选地,SCM无法被缓存。但是,访问SCM的延迟可能比DRAM的延迟长10倍。对于不适合最低级缓存(LLC)的频繁访问的数据,这将对性能产生不利影响。
SCM可以以页面粒度被缓存,并由操作系统(OS)移动。然而,这将取决于OS具有标识“热”数据以及移动整页数据的一些机制。这对于任何类型的稀疏数据访问都是有问题的,并且引入了标识“热”数据并且周期性地调用OS以将“热”数据从SCM“迁移”到DRAM的簿记(bookkeeping)开销。
本公开的各种实施例涉及用于在DRAM中缓存数据和相关联的地址标签的方法和装置,使得在单个访问中可访问数据和地址标签。例如,数据和相关联的地址标签可以被缓存在传统的64位×8突发DRAM中,使得在单个访问中可以访问数据和地址标签。例如,对于具有4K行的直接映射缓存中的64字节缓存行,标签信息以及状态信息的附加位需要大约46位存储空间。
已经示出,对于DRAM缓存,延迟比命中率更重要。直接映射的缓存是减少延迟的最简单方法。
下面讨论的实施例描述了如何从DRAM缓存访问数据和相关联的地址标签。实施例平衡了访问延迟与DRAM存储容量开销。参照64字节缓存行讨论一些实施例,但是在不脱离本公开的情况下可以使用其他大小的缓存行。
根据第一实施例,系统被组织为使得每个DRAM存储器模块具有额外的DRAM设备(“芯片”),其存储每个缓存行区域的标签和状态信息。当DRAM控制器获取缓存行时,它通过64位宽双倍数据速率(DDR)数据总线结构以8个突发读取缓存行数据。DRAM控制器可以使用数据总线结构上较少的突发同时从额外的芯片读取标签和状态信息。该实施例具有在DRAM控制器上简单实现,并保证通过单个DRAM访问来访问数据、标签和状态位的优点。然而,除非这种布置变得普遍,否则额外的DRAM设备可能比商品DRAM模块更昂贵。
在本文中,地址标签与相关联的状态位以及与数据相关的任何其他位被称为“元数据”。
某些实施例涉及一种用于存储多个缓存行的装置,其中每个缓存行被配置为存储数据以及与数据相关联的元数据,并且其中元数据包括地址标签。该装置包括第一存储器区域,该第一存储器区域包括多个行,多个行中的每个行包括一个或多个主块,并且每个主块的大小被设置为适于存储缓存行的数据。第一逻辑电路被配置为压缩第一缓存行的数据或第一缓存行的数据和元数据两者,以生成压缩的数据块。当压缩的数据块适合主块时,压缩的数据块被存储在第一主块中。第二逻辑电路被配置为解压缩从第二主块获取的数据以恢复与地址相关联的第二缓存行的数据和元数据,并确定元数据的地址标签与地址是否匹配。
该装置还可以包括第二存储器区域,该第二存储器区域包括多个溢出块,每个溢出块与多个主块中的主块相关联。第一逻辑电路还被配置为当压缩的数据块适合主块并且被存储在第一主块中时断言(assert)与第一主块相关联的“适合”位。当压缩的数据块不适合主块时,与第一主块相关联的“适合”位被解除断言(de-assert),第一缓存行的数据和元数据的第一部分被存储在第一主块中并且第一缓存行的数据和元数据的第二部分被存储在与第一主块相关联的溢出块中。第二逻辑电路被配置为在与第二主块相关联的“适合”位被断言时,解压缩从第二主块获取的数据,以恢复与地址相关联的第二缓存行的数据和元数据。当与第二主块相关联的“适合”位未被断言时,从第二主块获取第二缓存行的数据和元数据的第二部分,并且从第二溢出块获取第二缓存行的数据和元数据的第二部分,其中第二溢出块与第二主块相关联。
多个溢出块中的溢出块可以位于与其关联的主块相同的存储器行中。
在某些实施例中,溢出块的大小不足以存储缓存行的元数据,并且存储器行被配置为存储“行溢出”位。此外,该装置包括第三存储器区域,其大小足以将多个缓存行的元数据存储在多个第三溢出块中。第一逻辑电路被配置为当存储器行不足以容纳与存储器相关联的压缩数据的全部并断言存储器行的“行溢出”位时,将第一缓存行的数据和元数据的第一部分存储在第一主块中,并将第一缓存行的数据和元数据的第二部分存储在与第一主块相关联的第三溢出块中。第二逻辑电路被配置为当“行溢出”位被断言时,从第二主块和第三溢出块获取数据以恢复第一缓存行的数据和元数据,其中第三溢出块与第二主块相关联。
第一存储器区域的每个主块可以在直接映射中与第三存储器区域的一个溢出块相关联。
溢出块的大小被设置为适于存储缓存行的元数据,并且第一存储器区域的每个主块可以与第二存储器区域的一个溢出块相关联。
该装置可以包括存储器控制器,该存储控制器包括第一和第二逻辑电路,其中第一存储器区域和第二存储器区域是动态随机存取存储器(DRAM)的区域,并且其中存储器控制器经由总线耦合到DRAM。
第一逻辑电路可以被配置为当压缩的数据块不适合主块时,以压缩形式存储第一缓存行的数据和元数据的第一和第二部分。可选地,第一逻辑电路可以被配置为当压缩的数据块不适合主块时,以未压缩形式存储第一缓存行的数据和元数据的第一和第二部分。
该装置可以包括备份存储设备,例如存储级存储器(SCM),其中该地址包括备份存储设备中的地址。
定义装置的硬件语言的指令可以被存储在非暂态计算机可读介质中。
根据某些实施例,提供了一种用于读取包括缓存行数据和缓存行元数据的缓存行的方法。该方法包括将主块定位在第一存储器区域中,主块与缓存行相关联,以及读取所定位的主块中的第一数据。如果与第一数据相关联的“适合”位被断言,则解压缩第一数据以获得缓存行数据和缓存行元数据。如果与第一数据相关联的“适合”位未被断言,则将溢出块定位在第二存储器区域中,溢出块与所定位的主块相关联,读取保持在溢出块中的第二数据,并将第一和第二数据进行组合以获得缓存行数据和缓存行元数据。
可以根据备份存储设备中的地址来标识缓存行,通过根据地址来标识第一地址标签,将第一地址标签与元数据的第二地址标签进行比较,其中缓存行与地址相关联,该方法还包括如果第一标签和第二标签不匹配,则在地址处读取备份存储设备。第一存储器区域和第二存储器区域可以是动态随机存取存储器(DRAM)的区域,在这种情况下,通过经由数据总线结构访问DRAM来读取第一数据。
根据某些其他实施例,提供了一种用于将包括缓存行数据和缓存行元数据的缓存行写入存储器的方法。存储器包括被配置作为多个主块的第一存储器区域和被配置作为多个溢出块的第二存储器区域,多个溢出块中的每个溢出块与多个主块中的相应主块相关联。该方法包括压缩缓存行数据和缓存行元数据以生成压缩的数据。如果压缩的数据适合多个主块中的主块,则标识与缓存行相关联的主块,将压缩的数据写入所标识的主块;并且断言与所标识的主块相关联的“适合”位。如果压缩的数据不适合多个主块中的主块,则标识与缓存行相关联的主块,将缓存行数据和缓存行元数据的第一部分写入所标识的主块,标识与缓存行相关联的溢出块,将缓存行数据和缓存行元数据的第二部分写入所标识的溢出块,并且解除断言与所标识的主块相关联的“适合”位。
第一存储器区域和第二存储器区域可以是动态随机存取存储器(DRAM)的区域,在这种情况下,通过经由数据总线结构访问DRAM来读取第一数据。
下面参照附图更详细地描述本公开。
图1是高速缓冲存储器100的图示。数据被存储在块102中,块102至少在概念上被布置为具有W列和多行的阵列。这些行在概念上被分组为S组,每组为M行。为了便于访问,W=2w,S=2s和M=2m通常被选择为2的幂。在一个示例中,每个块102是数据的字节,w=6,s=12并且m=0,因此W=64,S=4096,并且M=1。原始数据(其中块102是副本)的位置由标签104和数据在阵列内的位置标识。另外,每个缓存行包括一个或多个状态位106。状态位可以指示,例如,行中的数据是有效的还是无效的,以及与数据相关联的权限。例如,状态位106可以指示数据的MESI状态(即,数据是修改的、独占的、共享的还是无效的)。标签104和状态位106在本文中被称为“元数据”。
标签和数据结构可以被分为在概念上具有相同数量的两组/部分,因此在标签阵列的区域中找到的匹配在数据阵列中具有相应的区域。数据RAM可以包括多个可单独访问的RAM,使得当在标签阵列中找到匹配时,可以访问正确的数据元素。
图2是备用存储设备(例如,主存储器)中的地址200的图示。地址200具有n位。例如,在一些数据处理系统中,n=64。地址200的最低的w位202可以用作列偏移,其指示缓存100的哪个数据列可以包含在备份存储器中的该地址处存储的数据的副本。地址200的接下来的s位204包括指示哪组缓存行可包含数据的副本的组索引。地址的较高的t位用作地址的标签,其中t=n-s-w。当M=1时,如果标签与存储在由组索引指示的缓存行的标签匹配,则缓存被直接映射并且数据的副本被存储在缓存中。当M>1时,如果标签与存储在由组索引指示的一组行中的任何缓存行的标签匹配,则将数据的副本被存储在缓存中。如果标签与组中的M个标签中的任何一个都不匹配,则知道数据不存在于缓存中。
图3是根据本公开的各种实施例的数据处理装置300的简化框图。该装置包括缓存客户端302,例如一个或多个中央处理单元(CPU)。CPU可以包括一级或多级缓存。装置300还包括随机存取存储器(RAM)304,例如,动态RAM(DRAM)或静态RAM(SRAM)、以及备份存储设备306。备份存储设备306可具有比RAM 304更大的存储容量,或更慢的访问时间。例如,备份存储设备306可以是存储器、存储级存储器(SCM)、闪存、固态存储器,硬盘驱动器(HDD)、其他类型的存储设备或其组合。备份存储设备306可以提供非易失性存储设备、易失性存储设备或其组合。
在该示例中,RAM 304和备份存储设备306经由总线结构308和存储器控制器310耦合到缓存客户端302。例如,总线结构308可以是64位宽的DDR总线。
通常,RAM 304的存储器单元被配置成行312。行的长度和总线结构被设计为有效地一起工作。DRAM的每行中的位数可以是总线宽度的倍数。例如,耦合到64位总线的DRAM可以在每行中具有2048=32×64位。要被访问的行可以被存储在行缓冲器314中。
根据本公开,RAM 304用作缓存以加速缓存客户端302与备份存储设备306之间的数据传输。在一个实施例中,使用动态RAM(DRAM)。DRAM芯片制造的数量非常多,因此价格便宜。
在上面给出的一个示例中,缓存行包括64字节的数据。由于一个字节包含8位,因此可以使用64位总线以8个突发来读取缓存行。
在下面描述的实施例中,RAM 304将被称为DRAM。然而,本公开不限于DRAM,并且该方法可以与具有其他类型的存储器的装置一起使用。
在简单的方法中,缓存数据被存储在DRAM 304的一个区域中,而相关联的标签和状态位被存储在DRAM 304的另一个区域中。在使用时,根据M行中可能包含数据的标签来检查与要访问的地址相关联的标签。这需要1到M次DRAM访问来获取标签。如果找到匹配(称为“缓存命中”),则读取数据。因此,需要至少两次DRAM访问。这是不利的,因为与通常用于缓存的其他存储器相比,DRAM访问较慢。
本公开的一个方面是一种用于在缓存中进行标签检查和数据读取的方法,至少在某些情况下,该方法仅需要读取单个值。
根据第二实施例,64字节缓存行与元数据一起被压缩为具有减少的位数的压缩的数据块。压缩的数据块对应于压缩的缓存行。指示压缩的缓存行是否适合64字节位置的“适合”位被存储在DRAM中。当压缩的缓存行适合64字节时,只需要单个访问来获取数据和元数据。在读取“适合”位是否被断言之后,DRAM控制器检测该情况。如果“适合”位被断言,则不需要第二次DRAM访问,并且在解压缩读取的64字节数据后,标签和数据都可用。在这种方法中,为每个DRAM行分配足够的空间,使得如果压缩失败也总是有足够的空间。这是通过在DRAM行的末尾为每个缓存块分配不同的溢出区域来完成的,用于存储不适合64字节区域的数据。该溢出区域必须足够宽以存储元数据,尽管该信息可能存储在其他位置。例如,元数据可以被存储在原始块区域中,以提供是否需要溢出读取的指示。如果在压缩之后64字节的数据和元数据完全适合64字节区域,则不使用溢出区域并且断言“适合”位。否则,解除断言“适合”位。元数据和数据被存储在缓存行的64字节区域和指定的溢出区域的组合中。数据和元数据可以以各种方式被布置在在组合的区域内。“适合”位可以被存储在64字节区域中,以便能够进行单个访问。虽然上面的示例描述了64字节缓存行,但是可以使用其他大小。
根据另一实施例,仅分配在压缩之后适合的行。
DRAM控制器需要进行两次DRAM访问,一次读取缓存行,如果需要,另一次读取适当的溢出区域。该实施例受益于使用商品DRAM存储器模块的能力,因为溢出区域是经由地址映射函数在DRAM控制器中实现的。在该实施例中,与使用用于元数据的单独的DRAM设备相比,用于存储使用的元数据所需的DRAM的额外量(“开销”)并未减少,因为为溢出区域分配了额外的存储器,无论是否使用。在该实施例中,当压缩的数据和元数据不适合64字节区域时,需要两次存储器访问来访问它。
当写入缓存时压缩数据,当从缓存读取数据时解压缩数据。当访问缓存时,压缩和解压缩功能可以由存储器控制器执行。各种数据压缩技术是本领域普通技术人员公知的。
例如,包含46位地址标签和两个状态位的元数据使用6字节的存储空间,因此存储元数据所需的存储器量小于缓存行中64字节数据所需的存储器量的10%。
图4是根据各种实施例的单个缓存行400的图示。缓存可能包含许多这样的行。在所示的示例中,缓存行400包括地址标签104、一个或多个状态位106、“适合”位402(下面讨论)、以及多个(W个)数据条目102。例如,缓存行可以包含大小为一字节(8位)的64个数据条目。地址标签可以包含例如46-52位,取决于存储器地址如何映射到缓存。除了数据条目102之外,缓存行还包含元数据104、106和402。
根据各种实施例,缓存行被压缩以适合小于未压缩的缓存行的大小的DRAM的区域。再次参照图4,每个缓存行400被压缩并被存储在DRAM存储器行312的区域404中。例如,对于64字节的数据、46位地址标签和2位状态字段,缓存行包含70字节用于压缩到64字节的区域。因此,需要相对较低的压缩水平。
各种压缩技术是本领域普通技术人员公知的。例如,对于一些技术,可以实现的压缩量是可变的并且取决于数据中的模式。因此,一些缓存行可能未被充分压缩以适合区域404。当块404包含完整的压缩的缓存行时,每个块404中的“适合”位402被断言。否则,“适合”位未被断言,缓存行400的第一部分被存储在块404中,而第二部分(其余部分)被存储在溢出区域406中,如图4中的虚线所示。对于上面给出的示例,块404包含64字节,相应的溢出区域406最多包含7字节。
在一个实施例中,为每个块404提供一个溢出区域406。
当压缩的缓存行不适合时,可以将该行以压缩或未压缩的形式存储。
状态位可以是压缩的或未压缩的。但是,“适合”位不是压缩的。
可以单独压缩数据,或者可以压缩数据和标签的组合。
上面描述的压缩技术的优点在于,当压缩的缓存行适合单个块404时,可以使用单个DRAM访问有效地读取块,而不需要自定义访问逻辑、自定义DRAM或自定义总线结构。
当缓存行不适合时,可以使用两次DRAM访问来访问标签和数据。
图5是根据各种实施例的被配置为存储缓存数据的DRAM 500的图示。在所示的示例中,DRAM被组织成256字节(2K位)的行。每行312包含每个长度为64字节的三个主块404,、每个长度为6字节的三个溢出块406和长度为46字节的空闲位置502。例如,空闲位置502可用于存储诸如纠错码的附加信息,或用于一般存储。DRAM行可以以其他方式组织。将元数据存储在与数据本身相同的DRAM行中具有将数据和元数据一起放置在DRAM行缓冲器中的优点。这减少了需要第二次DRAM访问时的延迟。
根据第三实施例,减少了存储元数据所需的额外存储器量。在该实施例中,为每个DRAM行存储额外的位,并且为溢出分配更少的位。
图6是根据第三实施例的如何将单个缓存行400存储在DRAM行312中的图示。在该实施例中,每个DRAM行312包含主块404和溢出块602。然而,溢出块的大小减小并且不能保证其大小足以在每种情况下包含所有溢出信息。作为示例,针对每64字节缓存行,在每个溢出块602中为溢出位仅可以分配6-8个额外位。结果,可能存在DRAM行中没有足够的溢出容量来存储压缩的元数据和数据的情况。为了允许这种情况,在每个DRAM行中存储被表示为“行溢出”位604的附加位。“行溢出”位指示所分配的溢出区域何时不够大,即使对于单个64字节缓存行。即使无法将单个64字节缓存行及其元数据压缩并容纳在64字节缓存行中,并且针对每个缓存行分配了额外的6-8位,也设置“行溢出”位。当读取DRAM行时,存储器控制器读取“行溢出”位。当断言“行溢出”位时,从DRAM读取的64字节不包含所有信息。例如,64字节可能只包含数据。然后,针对驻留在具有设置的“行溢出”位的行中的所有64字节缓存行,在随后的DRAM访问中从不同的存储器位置读取附加信息。此方案减少了常见情况下的存储开销,其中64字节的存储空间预计包含压缩形式的所有数据和其他元数据。但是,虽然需要更少的存储器,但可能需要更频繁地进行第二次访问。这种方法适用于商品存储器模块。
第四实施例利用标准DRAM和72位宽(x72)总线。这些可能符合诸如JEDECTM固态技术协会的x72标准的标准。x72JEDECTMDRAM接口使得能够在单个访问中读取数据和相关联的纠错码(ECC)。该接口用于服务器存储器系统,例如,通过消除与损坏的存储器相关的错误来提高系统的可靠性。x72接口被组织为x64+x8,其中64位是被存储在存储器中的数据位(缓存行大小),其余8位用于存储数据位的ECC值。这8位为存储器控制器的错误检测和纠错提供存储空间。
根据本公开的第四实施例,整个72字节缓存行(及其ECC值)将与上面描述的元数据一起被压缩。如上所述,如果压缩的数据适合,则压缩的数据被存储在72字节字段中,否则溢出位将被存储在DRAM行末尾的溢出区域中。
注意,也可以在考虑ECC启用和容错存储器系统的同时实现上述第一和第三实施例。
对于被存储在DRAM中的每个缓存行,如果压缩不能将元数据减少到标称缓存行大小(例如64字节),则溢出数据被存储在其他位置。在上面描述的第二和第四实施例中,溢出数据共同位于同一DRAM行中。这最小化了压缩不适合的情况下的延迟,因为第二请求将命中DRAM行缓冲器。但是,如果压缩成功率很高,这可能仅带来小的好处。
根据本发明的第五实施例,溢出数据被存储在DRAM中完全不同的位置。图7描绘了如何将缓存行400存储在DRAM 312和溢出存储器区域702中。例如,溢出区域702可以是DRAM的保留区域,其足够大以将所有潜在溢出数据存储在溢出块406中。
例如,如图8所示,缓存中的位置可以被直接映射到溢出数据区域中的位置。在所示的示例中,DRAM区域800的每行312用于存储长度为64字节的四个主块404,而溢出DRAM区域802的每行702用于存储长度为6字节(48位)的四个溢出块。在操作中,缓存行索引被映射到主块404。如果主块404不可充分压缩,如“适合”位所指示的,则使用相同的索引来标识溢出区域802中相关联的溢出块804。例如,索引可以乘以6(48位数据)并用于索引到溢出区域。该方法有效地使用可用DRAM而无需管理空闲位置列表。在图8中,箭头806和808表示主块404和相关的溢出块804之间的映射。
例如,上面讨论的机制也将与容错存储器系统(诸如IBM公司的ChipkillTM启用的DRAM存储器系统)无缝地工作。容错技术用于防止DRAM主存储器系统中的数据丢失,其中可以经由额外的芯片容忍DRAM存储器模块上的整个芯片(DRAM器件)故障。它还提供了纠正由于单个DRAM芯片中的数据损坏而引起的多位错误的能力。例如,容错存储器系统可能具有九(9)而不是八(8)×8DRAM芯片。这个额外的芯片用于使用各种编码技术“扩展”64位数据,这些编码技术使得能够进行由于存储器系统中的单个故障芯片的数据的恢复。
例如,如图9所示,压缩技术可以在存储器控制器310中实现。压缩逻辑电路902和解压缩(扩展)逻辑电路904被添加到存储器控制器310,以压缩要被存储在DRAM缓存304中的数据,并解压缩或扩展从DRAM缓存读取的数据。如所指示的,从备份存储设备306读取要被压缩的数据,并且将扩展的数据写回到备份存储设备306。此外,可以将扩展的数据传递到缓存客户端302,并且可以从缓存客户端302接收要被压缩的数据。
压缩/解压缩逻辑电路可以在系统中的其他位置实现。例如,逻辑电路可以在系统互连中实现。
图10是根据各种实施例的用于在DRAM缓存中缓存数据的方法的流程图1000。在开始框1002之后,在框1004处请求DRAM缓存行访问。如果访问是写访问,如判定框1006的“写”分支所示,则在框1008处压缩包括数据和相关联的地址标签的缓存行。如果压缩的数据适合在单个主块内,如判定框1010的肯定分支所示,则在框1012处将“适合”位设置为1,并且在框1014处将压缩的数据写入主块。不需要进一步的动作,并且在框1016处该方法终止。如果访问是读访问,如判定框1006的“读”分支所示,则在框1022处,则使用所请求的数据的地址将主块定位在DRAM缓存中。在框1024处,读取主块中的数据。如果未设置所读取的数据中的“适合”位,如判定框1026的否定分支所示的,在框1028处读取相应的溢出区域以获得完整的压缩缓存行。如果设置了读取的数据中的“适合”位,如判定框1026的肯定分支所示的,则不需要读取相应的溢出区域。在框1030处扩展或解压缩缓存行以恢复数据和相关联的标签。如果发生缓存命中,如判定框1032的肯定分支所示,则标签匹配所请求的数据的标签,并且在框1036处返回所读取的数据。如果标签与所请求的数据的标签不匹配,如判定框1032的否定分支所示,则在框1036处从备份存储设备读取数据,并且在框1034处返回数据。完成访问,并且在框1038处该处理终止。
上面描述的方法可以在存储器控制器中的逻辑中,在位于存储器控制器和与存储器控制器通信的DRAM之间的单独逻辑中实现。逻辑可以是自定义逻辑,然而,该方法的一些或所有元件可以在可配置的逻辑中实现,例如可编程处理器或现场可编程门阵列(FPGA)。
本领域技术人员将认识到,可以使用编程处理器、可重新配置硬件组件、专用硬件组件或其组合来实现本发明。类似地,通用计算机、基于微处理器的计算机、微控制器、光学计算机、模拟计算机、专用处理器和/或专用硬连线逻辑可用于构造本发明的替代等同实施例。
此外,可以通过硬件描述语言的指令来描述上述数据处理系统的组件。在不脱离本发明的情况下,这些指令可以被存储在非瞬态计算机可读介质上,例如电可擦除可编程只读存储器(EEPROM)、非易失性存储器(NVM)、大容量存储设备(诸如硬盘驱动器、软盘驱动器、光盘驱动器)、光存储元件、磁存储元件、磁光存储元件、闪存、磁芯存储器和/或其他等效存储技术。这种替代存储设备应被视为等同物。
已经通过示例而非限制的方式呈现了本文中详细描述的各种代表性实施例。本领域技术人员将理解,可以对所描述的实施例的形式和细节进行各种改变,从而得到保持在所附权利要求范围内的等同实施例。
Claims (23)
1.一种用于存储多个缓存行的装置,其中,每个缓存行被配置为存储数据以及与所述数据相关联的元数据,并且其中,所述元数据包括地址标签,所述装置包括:
第一存储器区域,包括多个行,所述多个行中的每个行包括一个或多个主块,并且每个主块的大小被设置为适于存储缓存行的数据;
第一逻辑电路,被配置为:
压缩第一缓存行的数据、或所述第一缓存行的数据和元数据两者,以生成压缩的数据块;
当所述压缩的数据块适合主块时,将所述压缩的数据块存储在第一主块中;以及
第二逻辑电路,被配置为:
解压缩从第二主块获取的数据,以恢复与地址相关联的第二缓存行的数据和元数据;并且
确定所述元数据的地址标签与所述地址是否匹配。
2.根据权利要求1所述的装置,还包括具有多个溢出块的第二存储器区域,每个溢出块与多个主块中的主块相关联,
其中,所述第一逻辑电路还被配置为:
当所述压缩的数据块适合主块并被存储在第一主块中时,断言与所述第一主块相关联的“适合”位;并且
当所述压缩的数据块不适合主块时,解除断言与所述第一主块相关联的“适合”位,将所述第一缓存行的数据和元数据的第一部分存储在所述第一主块中,并将所述第一缓存行的数据和元数据的第二部分存储在与所述第一主块相关联的溢出块中;并且
其中,所述第二逻辑电路被配置为:
当与第二主块相关联的“适合”位被断言时,解压缩从所述第二主块获取的数据以恢复与地址相关联的第二缓存行的数据和元数据;并且
当与所述第二主块相关联的“适合”位未被断言时,从所述第二主块获取所述第二缓存行的数据和元数据的第一部分,并从第二溢出块获取所述第二缓存行的数据和元数据的第二部分,其中所述第二溢出块与所述第二主块相关联。
3.根据权利要求2所述的装置,其中,所述多个溢出块中的溢出块位于与其相关联的主块相同的存储器行中。
4.根据权利要求3所述的装置,其中,所述多个溢出块中的溢出块的大小不足以存储缓存行的元数据,并且其中,所述存储器行被配置为存储“行溢出”位,所述装置还包括:
第三存储器区域,其大小足以将所述多个缓存行的元数据存储在多个第三溢出块中;
其中,所述第一逻辑电路被配置为:
当存储器行不足以容纳与存储器相关联的压缩的数据的全部并断言所述存储器行的“行溢出”位时,将所述第一缓存行的数据和元数据的第一部分存储在所述第一主块中,并将所述第一缓存行的数据和元数据的第二部分存储在与所述第一主块相关联的第三溢出块中;
其中,所述第二逻辑电路被配置为:
当断言所述“行溢出”位时,从所述第二主块和第三溢出块获取数据以恢复所述第一缓存行的数据和元数据,其中,所述第三溢出块与所述第二主块相关联。
5.根据权利要求4所述的装置,其中,所述第一存储器区域的每个主块在直接映射中与所述第三存储器区域的一个溢出块相关联。
6.根据权利要求2至5中任一项所述的装置,其中,所述多个溢出块中的溢出块的大小被设置为适于存储缓存行的元数据。
7.根据权利要求2至6中任一项所述的装置,其中,所述第一存储器区域的每个主块与所述第二存储器区域的一个溢出块相关联。
8.根据权利要求2至7中任一项所述的装置,还包括具有所述第一逻辑电路和所述第二逻辑电路的存储器控制器,其中,所述第一存储器区域和所述第二存储器区域是动态随机存取存储器(DRAM)的区域,并且其中,所述存储器控制器经由总线耦合到所述DRAM。
9.根据权利要求2至8中任一项所述的装置,其中,所述第一逻辑电路被配置为当所述压缩的数据块不适合主块时,以压缩的形式存储所述第一缓存行的数据和元数据的第一部分和第二部分。
10.根据权利要求2至9中任一项所述的装置,其中,所述第一逻辑电路被配置为当所述压缩的数据块不适合主块时,以未压缩的形式存储所述第一缓存行的数据和元数据的第一部分和第二部分。
11.根据前述权利要求中任一项所述的装置,还包括缓存客户端。
12.根据前述权利要求中任一项所述的装置,还包括具有所述第一逻辑电路和所述第二逻辑电路的存储器控制器。
13.根据前述权利要求中任一项所述的装置,还包括备份存储设备,其中所述地址包括所述备份存储设备中的地址。
14.根据权利要求13所述的装置,其中,所述备份存储设备包括存储级存储器(SCM)。
15.一种非暂态计算机可读介质,包括定义根据权利要求1至14中任一项所述的装置的硬件语言的指令。
16.一种读取包括缓存行数据和缓存行元数据的缓存行的方法,所述方法包括:
将主块定位在第一存储器区域中,所述主块与所述缓存行相关联;
在所定位的主块中读取第一数据;
如果与所述第一数据相关联的“适合”位被断言,则解压缩所述第一数据,以获得所述缓存行数据和所述缓存行元数据;
如果与所述第一数据相关联的“适合”位未被断言,则:
将溢出块定位在第二存储器区域中,所述溢出块与所定位的主块相关联;
读取在所述溢出块中保持的第二数据;以及
将所述第一数据和所述第二数据进行组合以获得所述缓存行数据和所述缓存行元数据。
17.根据权利要求16所述的方法,还包括:
根据备份存储设备中的地址来标识所述缓存行;
根据地址来标识第一地址标签;
将所述第一地址标签与所述元数据的第二地址标签进行比较;
其中所述缓存行与地址相关联,所述方法还包括:
如果所述第一标签和所述第二标签不匹配,则在地址处读取所述备份存储设备。
18.根据权利要求17所述的方法,其中,所述备份存储设备包括存储级存储器(SCM)。
19.根据权利要求16、17或18中任一项所述的方法,其中,所述第一存储器区域和所述第二存储器区域是动态随机存取存储器(DRAM)的区域,并且其中,读取所述第一数据包括经由数据总线结构访问所述DRAM。
20.一种将包括缓存行数据和缓存行元数据的缓存行写入存储器的方法,所述存储器包括被配置作为多个主块的第一存储器区域和被配置作为多个溢出块的第二存储器区域,所述多个溢出块中的每个溢出块与所述多个主块的相应主块相关联,所述方法包括:
压缩所述缓存行数据和所述缓存行元数据以生成压缩的数据;
如果所述压缩的数据适合所述多个主块中的主块:则
标识与所述缓存行相关联的主块;
将所述压缩的数据写入所标识的主块;以及
断言与所识别的主块相关联的“适合”位;以及
如果所述压缩的数据不适合所述多个主块中的主块,则:
标识与所述缓存行相关联的主块;
将所述缓存行数据和所述缓存行元数据的第一部分写入所标识的主块;
标识与所述缓存行相关联的溢出块;
将所述缓存行数据和所述缓存行元数据的第二部分写入所标识的溢出块;以及
解除断言与所标识的主块相关联的“适合”位。
21.根据权利要求20所述的方法,其中,所述第一存储器区域和所述第二存储器区域是动态随机存取存储器(DRAM)的区域,并且其中,读取所述第一数据包括经由数据总线结构访问所述DRAM。
22.一种计算机程序,包括计算机程序代码,当该计算机程序代码在合适的处理器上被执行时,执行根据权利要求16至19中任一项所述的方法。
23.一种计算机程序,包括计算机程序代码,当该计算机程序代码在合适的处理器上被执行时,执行根据权利要求20或21所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/194,902 | 2016-06-28 | ||
US15/194,902 US9996471B2 (en) | 2016-06-28 | 2016-06-28 | Cache with compressed data and tag |
PCT/GB2017/051559 WO2018002576A1 (en) | 2016-06-28 | 2017-05-31 | Cache with compressed data and tag |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109416666A true CN109416666A (zh) | 2019-03-01 |
CN109416666B CN109416666B (zh) | 2023-02-28 |
Family
ID=59021530
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780040198.8A Active CN109416666B (zh) | 2016-06-28 | 2017-05-31 | 用于存储和读取多个缓存行的装置和方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9996471B2 (zh) |
KR (1) | KR102333297B1 (zh) |
CN (1) | CN109416666B (zh) |
WO (1) | WO2018002576A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111611179A (zh) * | 2020-05-21 | 2020-09-01 | 深圳佰维存储科技股份有限公司 | 元数据命中率提升方法、装置、存储介质及电子设备 |
CN112256600A (zh) * | 2020-10-22 | 2021-01-22 | 海光信息技术股份有限公司 | 数据读取方法及相关装置 |
CN116033491A (zh) * | 2023-03-29 | 2023-04-28 | 至控科技(湖州)创新研究院有限公司 | 实时定位系统中的数据压缩缓存上传方法和装置 |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10503652B2 (en) * | 2017-04-01 | 2019-12-10 | Intel Corporation | Sector cache for compression |
US11188467B2 (en) * | 2017-09-28 | 2021-11-30 | Intel Corporation | Multi-level system memory with near memory capable of storing compressed cache lines |
GB2570326B (en) | 2018-01-22 | 2020-06-10 | Advanced Risc Mach Ltd | Multiple guard tag setting instruction |
US11762566B2 (en) | 2018-01-22 | 2023-09-19 | Arm Limited | Programmable mapping of guard tag storage locations |
US10877897B2 (en) * | 2018-11-02 | 2020-12-29 | Intel Corporation | System, apparatus and method for multi-cacheline small object memory tagging |
US10831669B2 (en) * | 2018-12-03 | 2020-11-10 | International Business Machines Corporation | Systems, methods and computer program products using multi-tag storage for efficient data compression in caches |
US11656995B2 (en) * | 2019-11-26 | 2023-05-23 | Micron Technology, Inc. | Dynamic access granularity in a cache media |
US11221770B2 (en) * | 2019-12-03 | 2022-01-11 | International Business Machines Corporation | Providing a dynamic random-access memory cache as second type memory |
US11586554B2 (en) * | 2020-07-23 | 2023-02-21 | Arm Limited | Cache arrangements for data processing systems |
US20220147453A1 (en) * | 2020-11-12 | 2022-05-12 | Intel Corporation | Sequestered memory for selective storage of metadata corresponding to cached data |
US11573899B1 (en) * | 2021-10-21 | 2023-02-07 | International Business Machines Corporation | Transparent interleaving of compressed cache lines |
US12001338B2 (en) * | 2021-10-29 | 2024-06-04 | Nutanix, Inc. | Method and system for implementing metadata compression in a virtualization environment |
US11868244B2 (en) | 2022-01-10 | 2024-01-09 | Qualcomm Incorporated | Priority-based cache-line fitting in compressed memory systems of processor-based systems |
US11829292B1 (en) | 2022-01-10 | 2023-11-28 | Qualcomm Incorporated | Priority-based cache-line fitting in compressed memory systems of processor-based systems |
WO2023133018A1 (en) * | 2022-01-10 | 2023-07-13 | Qualcomm Incorporated | Priority-based cache-line fitting in compressed memory systems of processor-based systems |
US20240103722A1 (en) * | 2022-09-26 | 2024-03-28 | Lemon Inc. | Metadata management for transparent block level compression |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6173381B1 (en) * | 1994-11-16 | 2001-01-09 | Interactive Silicon, Inc. | Memory controller including embedded data compression and decompression engines |
US20040031030A1 (en) * | 2000-05-20 | 2004-02-12 | Equipe Communications Corporation | Signatures for facilitating hot upgrades of modular software components |
US20080082743A1 (en) * | 2006-09-29 | 2008-04-03 | Hanebutte Ulf R | Method and apparatus for caching memory content on a computing system to facilitate instant-on resuming from a hibernation state |
CN101203825A (zh) * | 2005-08-04 | 2008-06-18 | 达西系统股份有限公司 | 具有动态电压调节超级电容的存储控制器 |
CN102016790A (zh) * | 2008-04-30 | 2011-04-13 | 飞思卡尔半导体公司 | 数据处理系统中的高速缓存一致性协议 |
CN102460376A (zh) * | 2009-06-26 | 2012-05-16 | 英特尔公司 | 无约束事务存储器(utm)系统的优化 |
CN103597455A (zh) * | 2011-05-10 | 2014-02-19 | 超威半导体公司 | 用于大型数据缓存的有效标签存储 |
US20150019813A1 (en) * | 2013-07-11 | 2015-01-15 | Advanced Micro Devices, Inc. | Memory hierarchy using row-based compression |
CN104598397A (zh) * | 2009-12-15 | 2015-05-06 | 英特尔公司 | 使用缓冲存储加速事务的机构 |
US20150193353A1 (en) * | 2014-01-05 | 2015-07-09 | Quantum Corporation | Compressed Level Two Block Buffer Metadata Cache |
Family Cites Families (36)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6216213B1 (en) * | 1996-06-07 | 2001-04-10 | Motorola, Inc. | Method and apparatus for compression, decompression, and execution of program code |
US6879266B1 (en) | 1997-08-08 | 2005-04-12 | Quickshift, Inc. | Memory module including scalable embedded parallel data compression and decompression engines |
US20010054131A1 (en) * | 1999-01-29 | 2001-12-20 | Alvarez Manuel J. | System and method for perfoming scalable embedded parallel data compression |
US6484228B2 (en) * | 2000-04-19 | 2002-11-19 | Motorola, Inc. | Method and apparatus for data compression and decompression for a data processor system |
US6581131B2 (en) * | 2001-01-09 | 2003-06-17 | Hewlett-Packard Development Company, L.P. | Method and apparatus for efficient cache mapping of compressed VLIW instructions |
US6539460B2 (en) * | 2001-01-19 | 2003-03-25 | International Business Machines Corporation | System and method for storing data sectors with header and trailer information in a disk cache supporting memory compression |
US20030028673A1 (en) * | 2001-08-01 | 2003-02-06 | Intel Corporation | System and method for compressing and decompressing browser cache in portable, handheld and wireless communication devices |
US6735673B2 (en) * | 2002-01-10 | 2004-05-11 | Hewlett-Packard Development Company, L.P. | Apparatus and methods for cache line compression |
US6944740B2 (en) * | 2002-03-27 | 2005-09-13 | International Business Machines Corporation | Method for performing compressed I/O with memory expansion technology |
US20050038954A1 (en) * | 2003-06-04 | 2005-02-17 | Quantum Corporation | Storage drive having universal format across media types |
US7512750B2 (en) * | 2003-12-31 | 2009-03-31 | Intel Corporation | Processor and memory controller capable of use in computing system that employs compressed cache lines' worth of information |
US7257693B2 (en) * | 2004-01-15 | 2007-08-14 | Intel Corporation | Multi-processor computing system that employs compressed cache lines' worth of information and processor capable of use in said system |
US7243191B2 (en) * | 2004-08-31 | 2007-07-10 | Intel Corporation | Compressing data in a cache memory |
US7412564B2 (en) * | 2004-11-05 | 2008-08-12 | Wisconsin Alumni Research Foundation | Adaptive cache compression system |
US8587600B1 (en) * | 2005-05-02 | 2013-11-19 | Advanced Micro Devices, Inc. | System and method for cache-based compressed display data storage |
US8139073B1 (en) * | 2006-09-18 | 2012-03-20 | Nvidia Corporation | Early compression tag lookup for memory accesses |
US8700862B2 (en) * | 2008-12-03 | 2014-04-15 | Nvidia Corporation | Compression status bit cache and backing store |
US8392667B2 (en) * | 2008-12-12 | 2013-03-05 | Nvidia Corporation | Deadlock avoidance by marking CPU traffic as special |
US8862823B1 (en) * | 2008-12-19 | 2014-10-14 | Nvidia Corporation | Compression status caching |
US7987162B2 (en) * | 2009-03-06 | 2011-07-26 | Bluearc Uk Limited | Data compression in a file storage system |
US8627041B2 (en) * | 2009-10-09 | 2014-01-07 | Nvidia Corporation | Efficient line and page organization for compression status bit caching |
US8217813B2 (en) * | 2010-04-29 | 2012-07-10 | Advanced Micro Devices, Inc. | System and method for low-latency data compression/decompression |
KR101844346B1 (ko) * | 2010-11-05 | 2018-04-02 | 삼성전자주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
US9003104B2 (en) * | 2011-02-15 | 2015-04-07 | Intelligent Intellectual Property Holdings 2 Llc | Systems and methods for a file-level cache |
US8370567B1 (en) * | 2012-03-23 | 2013-02-05 | DSSD, Inc. | Storage system with self describing data |
US9330001B2 (en) * | 2012-05-21 | 2016-05-03 | Zeropoint Technologies Ab | Cache system and a method of operating a cache memory |
US9261946B2 (en) * | 2012-10-11 | 2016-02-16 | Wisconsin Alumni Research Foundation | Energy optimized cache memory architecture exploiting spatial locality |
US11132300B2 (en) * | 2013-07-11 | 2021-09-28 | Advanced Micro Devices, Inc. | Memory hierarchy using page-based compression |
US20150379682A1 (en) * | 2014-06-27 | 2015-12-31 | Samsung Electronics Co., Ltd. | Vertex attribute data compression with random access using hardware |
WO2015199574A1 (en) * | 2014-06-27 | 2015-12-30 | Emc Corporation | Techniques for automatically freeing space in a log-structured storage system |
KR102336528B1 (ko) * | 2014-07-07 | 2021-12-07 | 삼성전자 주식회사 | 캐시 메모리를 가지는 전자 장치 및 그의 운용 방법 |
US9652384B2 (en) * | 2014-12-16 | 2017-05-16 | Intel Corporation | Apparatus, system and method for caching compressed data |
US9514061B1 (en) * | 2015-05-20 | 2016-12-06 | Qualcomm Incorporated | Method and apparatus for cache tag compression |
US9934145B2 (en) * | 2015-10-28 | 2018-04-03 | Nvidia Corporation | Organizing memory to optimize memory accesses of compressed data |
US10310774B2 (en) * | 2015-12-24 | 2019-06-04 | Intel Corporation | Techniques for data storage protection and integrity checking |
US20170255561A1 (en) * | 2016-03-07 | 2017-09-07 | Intel Corporation | Technologies for increasing associativity of a direct-mapped cache using compression |
-
2016
- 2016-06-28 US US15/194,902 patent/US9996471B2/en active Active
-
2017
- 2017-05-31 KR KR1020187036927A patent/KR102333297B1/ko active IP Right Grant
- 2017-05-31 WO PCT/GB2017/051559 patent/WO2018002576A1/en active Application Filing
- 2017-05-31 CN CN201780040198.8A patent/CN109416666B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6173381B1 (en) * | 1994-11-16 | 2001-01-09 | Interactive Silicon, Inc. | Memory controller including embedded data compression and decompression engines |
US20040031030A1 (en) * | 2000-05-20 | 2004-02-12 | Equipe Communications Corporation | Signatures for facilitating hot upgrades of modular software components |
CN101203825A (zh) * | 2005-08-04 | 2008-06-18 | 达西系统股份有限公司 | 具有动态电压调节超级电容的存储控制器 |
US20080082743A1 (en) * | 2006-09-29 | 2008-04-03 | Hanebutte Ulf R | Method and apparatus for caching memory content on a computing system to facilitate instant-on resuming from a hibernation state |
CN102016790A (zh) * | 2008-04-30 | 2011-04-13 | 飞思卡尔半导体公司 | 数据处理系统中的高速缓存一致性协议 |
CN102460376A (zh) * | 2009-06-26 | 2012-05-16 | 英特尔公司 | 无约束事务存储器(utm)系统的优化 |
CN104598397A (zh) * | 2009-12-15 | 2015-05-06 | 英特尔公司 | 使用缓冲存储加速事务的机构 |
CN103597455A (zh) * | 2011-05-10 | 2014-02-19 | 超威半导体公司 | 用于大型数据缓存的有效标签存储 |
US20150019813A1 (en) * | 2013-07-11 | 2015-01-15 | Advanced Micro Devices, Inc. | Memory hierarchy using row-based compression |
US20150193353A1 (en) * | 2014-01-05 | 2015-07-09 | Quantum Corporation | Compressed Level Two Block Buffer Metadata Cache |
Non-Patent Citations (2)
Title |
---|
HANBIN YOON等: "Row buffer locality aware caching policies for hybrid memories", 《IEEE》 * |
王肇国: "基于硬件事务内存的内存计算系统可扩展性研究", 《中国博士学位论文电子期刊网 信息科技辑》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111611179A (zh) * | 2020-05-21 | 2020-09-01 | 深圳佰维存储科技股份有限公司 | 元数据命中率提升方法、装置、存储介质及电子设备 |
CN111611179B (zh) * | 2020-05-21 | 2023-09-12 | 深圳佰维存储科技股份有限公司 | 元数据命中率提升方法、装置、存储介质及电子设备 |
CN112256600A (zh) * | 2020-10-22 | 2021-01-22 | 海光信息技术股份有限公司 | 数据读取方法及相关装置 |
CN112256600B (zh) * | 2020-10-22 | 2023-04-11 | 海光信息技术股份有限公司 | 数据读取方法及相关装置 |
CN116033491A (zh) * | 2023-03-29 | 2023-04-28 | 至控科技(湖州)创新研究院有限公司 | 实时定位系统中的数据压缩缓存上传方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
US20170371793A1 (en) | 2017-12-28 |
WO2018002576A1 (en) | 2018-01-04 |
KR20190020680A (ko) | 2019-03-04 |
CN109416666B (zh) | 2023-02-28 |
KR102333297B1 (ko) | 2021-12-01 |
US9996471B2 (en) | 2018-06-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109416666A (zh) | 具有压缩数据和标签的缓存 | |
US10303596B2 (en) | Read-write control method for memory, and corresponding memory and server | |
US10628326B2 (en) | Logical to physical mapping | |
CN104503707B (zh) | 读取数据的方法以及装置 | |
US10877898B2 (en) | Method and system for enhancing flash translation layer mapping flexibility for performance and lifespan improvements | |
CN105843551B (zh) | 高性能和大容量储存重复删除中的数据完整性和损耗电阻 | |
US9811456B2 (en) | Reliable wear-leveling for non-volatile memory and method therefor | |
US20110225347A1 (en) | Logical block storage in a storage device | |
US20120239854A1 (en) | Flash storage device with read cache | |
US20170060434A1 (en) | Transaction-based hybrid memory module | |
US20110238629A1 (en) | Uncorrectable error handling schemes for non-volatile memories | |
US20120159040A1 (en) | Auxiliary Interface for Non-Volatile Memory System | |
US10296250B2 (en) | Method and apparatus for improving performance of sequential logging in a storage device | |
US10552335B2 (en) | Method and electronic device for a mapping table in a solid-state memory | |
US20140025865A1 (en) | Semiconductor memory device | |
US8429339B2 (en) | Storage device utilizing free pages in compressed blocks | |
CN105005510B (zh) | 应用于固态硬盘阻变存储器缓存的纠错保护架构及方法 | |
CN106201331A (zh) | 用于写入数据的方法及设备与储存媒体 | |
CN112463647A (zh) | 使用散列来减小前向映射表的大小 | |
US11449386B2 (en) | Method and system for optimizing persistent memory on data retention, endurance, and performance for host memory | |
CN102999441A (zh) | 一种细粒度内存访问的方法 | |
US9218294B1 (en) | Multi-level logical block address (LBA) mapping table for solid state | |
CN106205707B (zh) | 存储器装置 | |
CN108780424A (zh) | 提供用于动态随机存取存储器dram高速缓存标记的空间高效存储 | |
KR102589609B1 (ko) | 분할된 저장장치에서의 스냅샷 관리 |
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 |