CN111858404B - 地址转换的方法和***、以及计算机可读介质 - Google Patents
地址转换的方法和***、以及计算机可读介质 Download PDFInfo
- Publication number
- CN111858404B CN111858404B CN202010299742.4A CN202010299742A CN111858404B CN 111858404 B CN111858404 B CN 111858404B CN 202010299742 A CN202010299742 A CN 202010299742A CN 111858404 B CN111858404 B CN 111858404B
- Authority
- CN
- China
- Prior art keywords
- physical location
- data
- target data
- address
- cache
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
- G06F12/1018—Address translation using page tables, e.g. page table structures involving hashing techniques, e.g. inverted page tables
-
- 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/0864—Addressing 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
-
- 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/0897—Caches characterised by their organisation or structure with two or more cache hierarchy levels
-
- 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/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
-
- 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/1016—Performance 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1021—Hit rate 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/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- 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/22—Employing cache memory using specific memory technology
- G06F2212/225—Hybrid cache memory, e.g. having both volatile and non-volatile portions
-
- 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/60—Details of cache memory
- G06F2212/608—Details relating to cache mapping
-
- 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/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
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
***可以包括持久性存储设备、低延迟缓存设备、易失性存储器、以及处理器。处理器将数据结构存储在易失性存储器中,该数据结构可用于将目标数据的块逻辑地址直接转换为缓存设备上的候选物理位置;将多级转换索引存储在易失性存储器中,该多级转换索引用于将目标数据的块逻辑地址转换为目标数据在缓存设备上的预期物理位置;以及尝试访问从直接缓存地址转换数据结构检索的候选物理位置处的目标数据。响应于目标数据不在候选物理地址处,访问位于从多级转换索引中检索到的预期物理位置处的目标数据。
Description
技术领域
本公开总体上涉及缓存数据定位***。
背景技术
许多计算机存储***(storage system)可以包括缓存,该缓存保存存储在较慢的持久性介质上的数据的副本。缓存提供对较频繁地被检索的数据的更快访问。定位缓存上的数据的物理位置或物理地址可能涉及内部元数据查找。
发明内容
根据本公开的一方面,提供了一种地址转换的方法,包括:将直接缓存地址转换数据结构存储在易失性存储器中,所述直接缓存地址转换数据结构能够用于将目标数据的块逻辑地址直接转换为缓存设备中的候选物理位置;将多级转换索引存储在所述易失性存储器中,所述多级转换索引能够用于将所述目标数据的所述块逻辑地址转换为所述目标数据在所述缓存设备中的预期物理位置,其中所述多级转换索引包括:第一索引表,用于将所述块逻辑地址转换为数据标识符;以及第二索引表,用于将所述数据标识符转换为所述缓存设备中的所述预期物理位置;确定所述目标数据是否驻留在经由所述直接缓存地址转换数据结构所确定的所述候选物理位置处;响应于所述目标数据驻留在所述候选物理位置处,访问所述候选物理位置处的所述目标数据;响应于所述目标数据不驻留在所述候选物理位置处,访问经由所述多级转换索引来确定的所述预期物理位置处的所述目标数据;以及响应于所述预期物理位置处的数据被移动到另一物理位置,将所述数据标识符与所述另一物理位置相关联。
根据本公开的另一方面,提供了一种地址转换的***,包括:持久性存储设备;低延迟的缓存设备;易失性存储器;以及处理器,用于执行存储在机器可读存储介质上的指令以:将直接缓存地址转换数据结构存储在易失性存储器中,所述直接缓存地址转换数据结构能够用于将目标数据的块逻辑地址直接转换为缓存设备中的候选物理位置;将多级转换索引存储在所述易失性存储器中,所述多级转换索引能够用于将所述目标数据的所述块逻辑地址转换为所述目标数据在所述缓存设备中的预期物理位置,其中所述多级转换索引包括:第一索引表,用于将所述块逻辑地址转换为数据标识符;以及第二索引表,用于将所述数据标识符转换为所述缓存设备中的所述预期物理位置;确定所述目标数据是否驻留在经由所述直接缓存地址转换数据结构来确定的所述候选物理位置处;响应于所述目标数据驻留在所述候选物理位置处,访问所述候选物理位置处的所述目标数据;响应于所述目标数据不驻留在所述候选物理位置处,访问经由所述多级转换索引来确定的所述预期物理位置处的所述目标数据;以及响应于所述预期物理位置处的数据被移动到另一物理位置,将所述数据标识符与所述另一物理位置相关联。
根据本公开的另一方面,提供了一种非暂时性计算机可读介质,包含能够由处理器执行的用于以下的指令:将直接缓存地址转换数据结构存储在易失性存储器中,所述直接缓存地址转换数据结构能够用于将目标数据的块逻辑地址直接转换为缓存设备中的候选物理位置;将多级转换索引存储在所述易失性存储器中,所述多级转换索引能够用于将所述目标数据的所述块逻辑地址转换为所述目标数据在所述缓存设备中的预期物理位置,其中所述多级转换索引包括:第一索引表,用于将所述块逻辑地址转换为数据标识符;以及第二索引表,用于将所述数据标识符转换为所述缓存设备中的所述预期物理位置;确定所述目标数据是否驻留在经由所述直接缓存地址转换数据结构所确定的所述候选物理位置处;响应于所述目标数据驻留在所述候选物理位置处,访问所述候选物理位置处的所述目标数据;响应于所述目标数据不驻留在所述候选物理位置处,访问经由所述多级转换索引来确定的所述预期物理位置处的所述目标数据;以及响应于所述预期物理位置处的数据被移动到另一物理位置,将所述数据标识符与所述另一物理位置相关联。
附图说明
图1是示意性地示出了示例缓存数据定位***的各部分的框图。
图2是示意性地示出存储示例缓存数据定位指令的示例非暂时性计算机可读介质的各部分的框图。
图3是示例缓存数据定位方法的流程图。
图4是示意性地示出了示例缓存数据定位***的各部分的框图。
图5是示例缓存数据定位方法的流程图。
图6是示例缓存数据定位方法的流程图。
图7是示出呈示例哈希表形式的示例直接缓存地址转换数据结构的各部分的图。
在所有附图中,相同的附图标记表示相似但不一定相同的要素。附图不一定按比例绘制,并且某些部分的尺寸可能被放大以更清楚地示出所示的示例。此外,附图提供了与描述一致的示例和/或实施方式。然而,描述不限于附图中所提供的示例和/或实施方式。
具体实施方式
本文公开了示例***、方法和计算机可读指令,这些示例***、方法和计算机可读指令减少了访问存储在缓存上的数据所花费的时间。所公开的***、方法和指令通过减少识别缓存上的数据的物理位置的时间来减少访问存储在缓存上的数据所花费的时间,该物理位置在本文中可以称为“缓存物理位置”。随着更高速的缓存存储器的出现,定位缓存上的数据的时间通常成为瓶颈。在由于数据移动或数据移除而导致直接地址转换不再是针对当前数据的情况下,所公开的存储***、方法和指令通过将电流较小但直接且较快的地址转换数据结构与电流较大但较慢的多级地址转换索引(在本文中称为“多级转换索引”)组合使用来解决此瓶颈。
在一些实施方式中,存储在诸如硬盘驱动器的较慢的持久性介质上的数据的副本也保持在诸如储存级存储器(SCM,storage class memory)设备的低延迟缓存设备上。在这样的实施方式中,可以通过使用存储在易失性存储器(memory)(例如,DRAM等)上的两种不同地址转换机制中的一种或两种来访问存储在低延迟的缓存设备上的数据。易失性存储器存储可以使用哈希表来实现的直接缓存地址数据结构。易失性存储器还存储将块逻辑地址转换为相应的缓存物理地址的多级转换索引。对于多个块逻辑地址(其可以称为“主机地址”或“用户输入地址”)中的每一个而言,较快的直接缓存地址转换数据结构可以将块逻辑地址直接转换为缓存中可能包含请求数据或目标数据的当前或先前版本的候选物理位置(CPL)的候选物理地址。在目标数据不再存在于由直接缓存地址转换数据结构所识别的候选物理位置的情况下,例如当目标数据已在缓存内移动时,使用多级转换索引来识别缓存中确实包含目标数据的预期物理位置的实际物理地址。
如上所述,直接缓存地址转换数据结构先用于尝试定位由块逻辑地址所识别的目标数据。但是,在许多情况下,目标数据可能不再驻留在由基于块逻辑地址从直接缓存地址转换数据结构获得的候选物理地址所识别的候选物理位置。这可能是由于目标数据已移至缓存上的不同位置而导致的结果。例如,存在于缓存的第一物理位置处的较旧数据可以被写入缓存的第二物理位置的较新数据覆写,从而导致较旧数据不再是当前数据。在有时称为“垃圾收集”过程的时段期间,所有的当前数据都被聚集并与其他当前数据一起集中在缓存上的其他物理位置处。例如,这样的垃圾收集过程可能将第二物理位置处的较新数据复制到缓存的第三物理位置处并且可能擦除第一物理位置处的旧数据(其不再是当前数据)以及第二物理位置处的较新数据(其最初用于覆写第一物理位置处的旧数据)两者。这种垃圾收集过程导致较新数据的物理位置发生变化,在本示例中,该较新数据可能是目标数据。当发生这种变化时,将多级转换索引更新为包括较新数据的新物理位置(例如,在上面的示例中,指示较新数据存储在第三物理位置处)。在这种示例中,可以为被移动了的所有这种当前数据更新多级转换索引。然而,直接缓存地址转换数据结构(在本文中有时称为直接逻辑块地址到物理地址转换数据结构)可以不在每次垃圾收集过程时进行更新。这可以导致从直接缓存地址转换数据结构中检索或输出的物理地址(在本文中可以将其称为“候选物理地址”)无效,这是由于该物理地址不对应于缓存上实际包含目标数据的物理位置。在本文描述的示例中,由候选物理地址指示的物理位置可以被称为“候选物理位置”。
一旦已经从直接缓存地址转换数据结构获得了候选物理位置(其可能包含目标数据)的候选物理地址,则所公开的***、方法和计算机可读指令验证目标数据确实驻留在候选物理位置处。在一个实施方式中,缓存上的每个物理位置可以存储第一标识符,该第一标识符直接与其所分配的数据相关联并且与其所分配的数据一起移动(例如,当数据被复制到另一个位置时,如在垃圾收集过程中那样)。将块逻辑地址链接到候选物理地址的直接缓存地址转换数据结构中的条目包括与预期驻留在候选物理位置处的数据相关联的第二标识符。当直接缓存地址转换数据结构先用第二标识符填充时,第二标识符与随数据一起存储在候选物理位置处的第一标识符相同。但是,一旦数据被移动到新位置(例如上述垃圾收集过程的结果),则候选物理位置可能没有数据或者可能实际存储的是具有不同于与块逻辑地址相关联并预先存储在直接缓存地址转换数据结构中的标识符的标识符的其他数据。
所公开的***、方法和计算机可读指令通过比较两个标识符来验证目标数据实际上驻留于候选物理位置处。如果两个标识符匹配,则候选物理位置处的数据是由块逻辑地址所识别的目标数据。如果两个标识符不匹配,则候选物理位置处的数据不是由块逻辑地址所识别的目标数据。由此,***、方法和计算机可读指令就推迟经由关于目标数据的块逻辑地址到缓存逻辑地址的第一映射、以及该缓存逻辑地址到目标数据在缓存中的预期(例如贴合当前的(up-to-date))物理地址的第二映射使用多级转换索引以定位目标数据。尽管与直接缓存地址转换数据结构相比,使用多级转换索引由于多个级别或多个转换而使得延迟增加,但是多级转换索引(作为垃圾收集过程的一部分,用关于数据的贴合当前的位置较频繁地被更新)可以为目标数据提供更加贴合当前的且更加准确的位置。
一旦从多级转换索引中检索到或在多级转换索引中找到缓存中包含目标数据的“预期”物理位置的更加贴合当前的地址,则***、方法和计算机可读指令利用目标数据的预期物理位置来更新或校正直接缓存地址转换数据结构。特别是,直接缓存地址转换数据结构中的包含关于目标数据的不正确或无效候选地址的旧条目已从该数据结构中移除并且添加了新条目,该新条目将块逻辑地址映射到从多级转换索引中检索的、关于目标数据的预期物理位置的物理地址。换句话说,由多级转换索引输出的、关于目标数据的预期物理位置的物理地址被缓存在直接缓存地址转换数据结构中。由于多级转换索引的更频繁的更新,因此与由直接缓存地址转换数据结构提供的任何候选物理位置相比,“预期”物理位置可能是目标数据更有可能驻留的位置。尽管可能针对目标数据的实际物理位置提供更高的可靠性,但是由于各种其他潜在原因,预期物理位置的物理地址输出有时可能是错误的。结果,当描述通过多级转换索引输出的、关于目标数据的物理地址时,在本公开中使用术语“预期”。
在***启动时,直接缓存地址转换数据结构可以具有用于给定块逻辑地址的条目,这些条目为空或者可以省略与该块逻辑地址相对应的任何条目。响应于识别出空条目或缺少用于块逻辑地址的相关条目,可以自动查询多级转换索引以识别包含该块逻辑地址所针对的数据的预期物理位置的实际物理地址。一旦已经通过使用多级转换索引识别出块逻辑地址所针对的数据的预期物理位置的实际物理地址,则可以使用预期物理位置的实际物理地址来填充数据结构中用于该块逻辑地址的空条目或者可以使用包括预期物理位置的实际物理地址的、用于该块逻辑地址的新条目来填充数据结构。
这种多级转换索引的一个示例是如下这样的索引:该索引包括第一级,该第一级包括块索引,该块索引包括针对多个块逻辑地址中的每一个,将块逻辑地址(例如,卷ID和偏移量,并且其可以被称为“块逻辑地址”或“主机地址”)映射到相应缓存逻辑地址(例如,用户块(BU),并且其可以被称为数据标识符)的树。该索引还包括第二级,该第二级包括缓存索引,该缓存索引包括针对多个缓存逻辑地址中的每一个,将缓存逻辑地址(例如,用户块)映射到用于缓存物理位置的相应实际物理地址(例如,段ID和偏移量)的树,其中,该块逻辑地址所对应的(或者该块逻辑地址所针对的)数据存储在该缓存上该缓存物理位置处。缓存索引随着缓存中数据的物理地址变化而更新。例如,与缓存逻辑地址(例如,用户块)相对应的数据的实际物理地址(例如,段ID和偏移量)可以随着与缓存逻辑地址相关联的数据的物理位置变化(例如作为垃圾收集过程的结果,如上所述)而更新。
在一个实施方式中,直接缓存地址转换数据结构包括哈希表。在一个实施方式中,对于多个块逻辑地址中的每一个而言,哈希表将块逻辑地址(例如,卷ID和偏移量、用户输入地址或主机地址)直接映射到用于缓存中的物理位置的相应物理地址(例如,段ID和偏移量),从而用单个哈希表查找来替换多级转换索引的两个树遍历。可以将用作加速索引的哈希表视为在缓存数据定位***中采用的“元数据避开(bypass)缓存”,以促进在SCM缓存层中进行存储***寻址,而不会产生内部元数据查找的CPU开销(例如,通过避开在元数据中查找缓存逻辑地址)。
在一个实施方式中,用于在哈希表中查找的关键字(key)可以基于目标数据的块逻辑地址。例如,哈希函数可以应用于块逻辑地址以产生或获得块逻辑地址的“哈希(hash)”。哈希或哈希的各部分可以用作用于在哈希表中执行查找的关键字。例如,块逻辑地址的哈希的一部分(例如,没有哈希最后4位的哈希)可以用作哈希表中的第一个关键字以识别页面,该页面包括包含关于目标数据(例如其可能包含目标数据)的候选物理位置的候选物理地址的条目。完整的哈希可以用作哈希表中的第二个关键字以识别所识别页面上的针对包含该候选物理地址的条目的特定位置。
在一个实施方式中,哈希表包括两级表,该两级表包括指向在每个页面上具有关键字/候选物理位置(K/CPL)条目的页面的指针阵列。在一个实施方式中,每个页面的大小可以不大于10MB,并且其中页面包括至少200,000个页面。在一个实施方式中,每个页面的大小为1MB,其中哈希表包括500,000个页面。在一个实施方式中,每个页面包括不超过50,000个K/CPL条目。每个K/CPL条目均可以将逻辑块地址(例如,经由逻辑块地址的哈希)映射到条目中的候选物理地址。在一个实施方式中,每个页面包括32,000个K/CPL条目。
在这种实施方式中,页面的大小(不大于10MB,并且在某些实施方式中为1MB)可以由内存分配器有效地管理。例如,如果统一的分配器要回收内存,则可以丢弃页面,而仅丢失哈希表的一小部分。而且,可以为每个页面实现单独的锁(例如,自旋锁)。在这种实施方式中,由于页面数量大,因此大多数访问不会在锁上发生冲突。在这样的示例中,可以用诸如自旋锁的锁来保护每个页面,但是并发线程发生锁冲突的机会可以忽略不计。同时,页面中的条目数量如此之高使得这种锁的空间开销最小。这种大小设置可以实现在仅有一个锁的情况下包含用于大型输入/输出(IO)的所有条目。例如,单个锁可以保护页面的条目(例如32,000个条目)中的每个条目。由此,这种实施方式可以提供有效且允许高并发性的页面粒度锁定。
在一个实施方式中,逻辑块地址的其低四位被屏蔽掉的哈希被用作选择页面的关键字,使得附近的逻辑块地址(LBA)最终出现在同一页面中。在每个页面内,关键字/CPL值的阵列由逻辑块地址的(完整)哈希作为关键字来索引。在一个示例中,哈希表是四向集合关联的,意味着每个关键字有四个可能的插槽(slot)。这种布置可以用低的且确定性的探测成本来提供高负载因子。由于元素的所有可能位置在内存中都是相接的(contiguous)并且可以适应于(fit in)两个CPU缓存行,因此可以提高性能。
在一个实施方式中,集合中的条目的位置用作其热度(temperature)的代理。在这种实施方式中,通过将新的且已访问过的条目提升到集合的顶部或最近使用(MRU)端并在将新条目***完整集合中时将集合的底部或最久远使用(LRU)端的条目(集合中的最久远使用条目)逐出(eviction),使得集合中的条目以LRU顺序得以保持。结果,该集合中的位置被用作条目的热度指示器。因此,可以用很少的空间开销或没有空间开销地来近似LRU缓存策略。
尽管在一些示例中使用哈希表来实现直接地址转换数据结构可能导致以高负载因子无法解决的冲突和逐出,但是另外包括多级转换索引解决了这样的问题。由于直接地址转换数据结构本身就是缓存,因此当这些未命中经由多级地址转换索引通过数据转换路径而得到解决时,是可以接受的,尽管在某些程度上有更高的延迟。
公开了一种示例性***,其可以包括一个或多个持久性存储设备(storagedevice)、一个或多个低延迟的缓存设备、易失性存储器以及至少一个处理器。处理器用于执行用于将直接地址转换数据结构存储在易失性存储器中的指令,该直接地址转换数据结构可用于将目标数据的块逻辑地址直接转换为缓存设备上候选物理位置的候选物理地址、将多级转换索引存储在易失性存储器中以用于将目标数据的块逻辑地址转换为缓存设备上包含目标数据的预期物理位置的实际物理地址、并确定目标数据是否驻留在与从直接缓存地址转换数据结构检索的候选物理地址相对应的候选物理位置处。响应于目标数据位于候选物理位置处,处理器可以执行用于访问位于候选物理位置处的目标数据的指令。响应于目标数据不驻留在候选物理地址处,处理器可以执行用于访问从多级转换索引检索的预期物理位置处的目标数据的指令。
公开了一种示例方法,该方法包括:将数据结构存储在易失性存储器中,该易失性存储器将关于目标数据的块逻辑地址直接转换为缓存设备上的候选物理位置的候选物理地址;将多级转换索引存储在该易失性存储器中,该易失性存储器可用于将目标数据的块逻辑地址转换为缓存设备上预期物理位置的实际物理地址;以及确定目标数据是否驻留在与从直接缓存地址转换数据结构检索到的候选物理地址相对应的候选物理位置。响应于目标数据不驻留在候选物理地址处,在与从多级转换索引中检索到的实际物理地址相对应的预期物理位置处访问目标数据。此外,从多级转换索引检索到的预期物理位置被缓存在直接缓存地址转换结构中,从而导致直接缓存地址转换结构的自动更新。
公开了一种示例性非暂时性计算机可读介质,该介质包含用于处理器的指令。所述指令可由处理器执行以指示处理器接收目标数据的块逻辑地址、使用直接缓存地址转换数据结构将接收到的块逻辑地址直接转换为候选物理地址、并确定目标数据是否驻留在缓存中与候选物理地址相对应的候选物理位置处。响应于目标数据位于候选物理位置处,可由处理器执行指令以访问候选物理位置处的目标数据。响应于目标数据不驻留在候选物理位置处,指令用于指示处理器使用多级转换索引将块逻辑地址转换为缓存逻辑地址、将缓存逻辑地址转换为实际物理地址、并且访问位于实际物理地址(例如,缓存中与实际物理地址相对应的预期物理位置)处的目标数据。在一些实施方式中,指令还使用来自多级转换索引的结果来自动更新直接缓存地址转换数据结构。
图1是示意性地示出示例缓存数据定位***20的各部分的框图。***20可以减少定位和访问存储在缓存上的数据所消耗的时间。***20可以通过减少识别缓存上的数据的物理位置的时间来减少访问存储在缓存上的数据所花费的时间。***20包括一个或多个持久性存储设备24、一个或多个低延迟缓存设备28、易失性存储器32以及至少一个处理器36。
一个或多个持久性存储设备24包括一个或多个非易失性存储设备,该一个或多个非易失性存储设备用于存储待从中访问、检索或读取的数据。一个或多个持久性存储设备24还包括可以在其上复制或写入数据的区域。在本文描述的示例中,一个或多个持久性存储设备(例如一个或多个持久性存储设备24)可以由一个或多个硬盘驱动器(HDD)、一个或多个固态驱动器(SSD)(例如,一个或多个闪速存储器设备)等等或其组合来实现。
低延迟缓存设备28包括存储器存储设备,该存储器存储设备存储也存储在一个或多个持久性存储设备24上的数据中的至少一些数据的副本(以虚线示意性地示出)。低延迟缓存设备28的延迟或响应时间小于一个或多个持久性存储设备24的延迟或响应时间。结果,低延迟缓存设备28有助于以更及时的方式访问数据的副本。在一个实施方式中,低延迟缓存设备28包括一个或多个低延迟持久性存储设备或一个或多个非易失性存储设备。在一个实施方式中,低延迟缓存设备28包括一个或多个储存级存储器(SCM)设备。在本文所述的示例中,SCM可以是非易失性存储器(NVM)技术的类型。在一些示例中,SCM可以使用与NVMExpressTM(NVMeTM)一致的协议进行通信。在本文描述的示例中,可以用多种不同形式(诸如,例如3D XPoint芯片(或设备)、3D XPoint DIMM、相变存储器(PCM)设备(诸如相变随机存取存储器(RAM)设备)、磁性RAM(MRAM)设备(诸如自旋扭矩传递(STT)RAM设备)、电阻RAM(RRAM)设备、忆阻器设备等等、或其组合)中的任何一种来实现SCM设备。在一些示例中,SCM可以实现基于块的访问。在其他示例中,SCM可以实现针对数据访问的基于存储器的语义。在一个实施方式中,一个或多个持久性存储设备24包括硬盘驱动器或固态驱动器,该硬盘驱动器或固态驱动器针对给定数据量具有大约10,000μs的响应时间。相比之下,SCM形式的低延迟缓存设备28对于相同数据具有大约10μs的响应时间。在一些示例中,低延迟缓存设备可以是可字节寻址的非易失性存储设备。在一些示例中,持久性存储设备可以是可块寻址的非易失性存储设备。
易失性存储器32是易失性的,在长时间没有向存储器32供电的情况下,存储在易失性存储器32上的数据丢失。在一个实施方式中,易失性存储器32包括随机存取存储器,例如动态随机存取存储器(DRAM)。易失性存储器32的响应时间可以小于低延迟缓存设备28的响应时间。在一个实施方式中,对于给定的数据量,SCM形式的低延迟缓存设备28的响应时间为10μs,而DRAM形式的易失性存储器对于相同的给定数据量的响应时间大约为0.1μs。
处理器36管理对低延迟缓存设备28上的数据的访问。处理器36可以采用专用集成电路或执行指令、代码、编程或电路逻辑以管理对低延迟缓存设备28的数据的访问的其他处理单元(例如,物理硬件)的形式。驱动处理器36的指令或电路逻辑使处理器36将直接缓存地址转换数据结构40存储在易失性存储器32中。在一个实施方式中,直接地址转换数据结构40将逻辑块地址(例如,每个卷ID和偏移量)直接映射到针对目标数据的相应候选物理地址(例如,段ID和偏移量)。
由于地址转换是直接的(而不是遍历多个表或树),因此数据结构40可以促进对可以访问由用户所请求的数据所在的物理地址进行更快且更具响应性的定位。在被访问的数据存储在低延迟缓存设备(例如SCM存储器设备)上的实施方式中,直接地址转换表40的使用减少了与定位数据的物理地址相关的时间或成本、访问数据的总时间的瓶颈。在一种实施方式中,直接缓存地址转换数据结构40可以包括哈希表。例如,可以将哈希函数应用于块逻辑地址,其中所得的哈希用作哈希表中一个或多个查找的关键字。在其他实施方式中,直接地址转换数据结构40可以包括其他数据结构,例如搜索树。
驱动处理器36的指令或电路逻辑还使处理器36将多级地址转换索引44存储在易失性存储器32中。对于在使用不太权威的直接地址转换数据结构40不成功时,例如当用户所请求的位于缓存设备28上的数据的物理地址已经变化并且直接缓存地址转换数据结构40尚未更新以反映该变化时,多级地址转换索引44可以用作权威的(即,贴合当前的)备份。多级转换索引44与直接地址转换数据结构40相比更“权威”,原因在于与直接缓存地址转换数据结构40相比,由于多级转换索引44用缓存28中的数据的预期物理位置(因为该数据已移动到缓存28中的不同位置)较频繁地更新,因此多级转换索引44相对于缓存上的目标数据的物理位置是更当前的或贴合当前的。这种多级转换索引44的一个示例是这样的索引:该索引包括第一级,该第一级包括块索引,该块索引包括将块逻辑地址(例如,每个卷ID和偏移量)(块逻辑地址)映射到相应的缓存逻辑地址(例如,相应的用户块标识符)的树。该索引还包括第二级,该第二级包括缓存索引,该缓存索引包括将缓存逻辑地址映射到缓存中的相应实际物理地址(例如,每个段ID和偏移量)的树,该相应实际物理地址可以用于在缓存上物理地定位数据。缓存索引随着缓存上数据的相应物理地址的更改而更新。
图2是说明示例性非暂时性计算机可读介质60的各部分的框图,该示例性非暂时性计算机可读介质60包含可由诸如处理器36的处理器执行的用于管理对存储在低延迟缓存(例如,由一个或多个缓存设备(例如一个或多个设备28)实现)上的数据的访问的指令。在一个实施方式中,处理器36遵循包含在存储器60中的指令。图3是示例方法100的流程图,该示例方法100可以由具有处理器36的***20按照存储器(或其他机器可读存储介质)60中提供的指令来执行。应当理解,存储器60可以与缓存数据定位***20一起使用。类似地,方法100可以用以下描述的缓存数据定位***或类似的存储***中的任一个来执行。
如图2所示,存储器60包括直接转换数据结构指令64、多级转换索引指令68和地址访问指令72。指令64包括编程、代码或电路逻辑,这些编程、代码或电路逻辑指示处理器36执行图3所示的方法100的框104。特别地,指令64指示处理器36将诸如数据结构40的数据结构存储在诸如易失性存储器32的易失性存储器中,该易失性存储器将块逻辑地址直接转换为用于如上所述的诸如一个或多个缓存设备28的缓存设备上的相应候选物理位置的相应候选物理地址。在一个实施方式中,指令64可执行为在易失性存储器32中建立、创建并存储呈哈希表形式(如上所述)的直接转换数据结构40。
多级转换索引指令68包括可执行为指示处理器36执行图3所示的方法100的框108的编程、代码或电路逻辑。指令68指导处理器36在易失性存储器32中创建、存储和维护用于将块逻辑地址转换为如上所述的用于一个或多个缓存设备28上的相应预期物理位置的相应实际物理地址的多级转换索引,例如索引44。如上所述,在一些实施方式中,所创建和存储的多级转换索引44可以包括第一级,该第一级包括块索引,该块索引包括将块逻辑地址(例如,每个卷ID和偏移量)映射到相应的缓存逻辑地址(例如,相应的用户块)的树。索引44还包括第二级,该第二级包括缓存索引,该缓存索引包括将缓存逻辑地址映射到可以用于在缓存上物理地定位数据的相应实际物理地址(例如,每个段ID和偏移量)的树。缓存索引随着缓存上特定数据的物理地址更改而更新。
地址访问指令72包括可执行为指示处理器36执行图3中的方法100的框112、114和116的编程、代码或电路逻辑。如框112所示,响应于处理器36接收到框逻辑地址50(如图1所示),地址访问指令72指示处理器36先确定块逻辑地址50所针对的数据是否驻留在从直接缓存地址转换数据结构检索的候选物理地址处。为了做出这种确定,指令70指示处理器36从直接缓存地址转换数据结构40检索关于目标数据的候选物理地址。在其中直接缓存地址转换数据结构40包括哈希表的一个实施方式中,块逻辑地址(或其部分)的哈希可以用作哈希表的关键字(如上所述)以获得缓存28上的该片数据的候选物理地址。例如,在一个实施方式中,哈希表直接将块逻辑地址(卷ID和偏移量)的哈希映射到段ID和偏移量(候选物理位置或地址),从而用单个哈希表查找来替换多级转换索引的两个树遍历。用作加速索引的哈希表是在存储器存储***中采用的元数据避开缓存,以促进SCM缓存层中的存储***寻址,而不会产生内部元数据查找的CPU成本。
一旦已经检索到候选物理位置地址,则确定目标数据是否驻留在所检索的候选物理位置处。在一个实施方式中,通过比较两个标识符来进行该确定。在一个实施方式中,缓存上的每个物理位置已经存储了第一标识符,该第一标识符直接与其所分配的数据相关联并且随其所分配的数据一起移动。将块逻辑地址链接到候选物理位置的直接缓存地址转换数据结构中的条目包括与被认为驻留在候选物理位置的数据相关联的第二标识符。当直接缓存地址转换数据结构先填充有第二标识符时,第二标识符与存储在候选物理位置处的第一标识符相同。但是,一旦数据已移动到新位置(例如上述垃圾收集过程的结果),则候选物理位置可能没有数据和标识符或者可能实际上存储的是具有与和该块逻辑地址相关联并且先前存储在直接缓存地址转换数据结构中的标识符不同的标识符的其他数据。两个标识符的比较表明与该块逻辑地址关联的数据是否实际上驻留在候选地址处。如果两个标识符匹配,则候选物理位置处的数据是由该块逻辑地址识别的目标数据并且可以访问该目标数据。如果两个标识符不匹配,则候选物理位置处的数据不是由该块逻辑地址识别的目标数据。
如方法100中的框116所示,响应于目标数据不位于候选物理位置处,例如候选物理位置不包含任何数据或包含与对应于该块逻辑地址的目标数据不同的数据,地址访问指令72指示处理器36访问与从多级转换索引44检索的块逻辑地址相对应的物理位置或地址。特别地,处理器36在将块逻辑地址(卷ID和偏移量)映射到用户块(其可以是第一标识符)的块索引中执行第一树查找。指令72然后指示处理器36在将用户块映射到可用于在缓存28上物理地定位目标数据的段ID和偏移量(缓存28中的预期物理地址或位置)的缓存索引中执行第二树查找。
图4是示意性地示出示例缓存数据定位***220的各部分的框图。***220与上述***20类似,除了***220特别包括呈至少一个SSD、至少一个HDD或其组合的形式的一个或多个持久性存储设备224、呈储存级存储器缓存形式的低延迟缓存设备228、呈DRAM形式的易失性存储器232、呈哈希表的形式的直接地址转换数据结构240、以及呈具有块索引252和缓存索引254的索引的形式的多级地址转换索引244。***220的与***20的部件相对应的其余部件被类似地编号。在一些实施方式中,持久性存储设备224可包括硬盘驱动器、或固态驱动器和硬盘驱动器的组合。如上所述,块索引252包括将卷ID和偏移量映射到用户块的树。缓存索引包括将用户块映射到可用于在缓存上物理地定位数据的段ID和偏移量的树。当缓存上的特定数据的物理地址改变时,缓存索引254被更新。
图5是示例缓存数据定位方法300的流程图。方法300是在由***220所执行的背景下进行描述。应当理解,方法300可以基于本文所述的任何***或由其他类似的存储***来进行描述。
如框304所示,缓存数据定位***220从用户接收访问存储在存储器228中的数据副本的请求。***220接收块逻辑地址或主机地址。在一个实施方式中,块逻辑地址包括或对应于卷ID和偏移量。
如框308所示,处理器36按照诸如上述存储器60中所包含的指令的指令使用直接缓存地址转换数据结构的哈希表来确定或识别由块逻辑地址所针对的数据的候选地址。换句话说,处理器36尝试通过使用直接地址转换哈希表240来识别缓存228上的与块逻辑地址相对应的物理地址。直接地址转换哈希表240提供从块逻辑地址到缓存228上的物理地址的直接转换。特别地,将哈希函数应用于块逻辑地址,其中所得的哈希用作关键字,该关键字用于针对目标数据的候选物理位置在哈希表中执行查找。在一个实施方式中,直接地址哈希表用于在没有多个树索引查找的情况下将卷ID和偏移量(块逻辑地址或逻辑块地址)转换为缓存228的段ID和偏移量(候选物理位置)。
如框310所示,处理器36按照包含在存储器60中的指令确定框308中使用的直接缓存地址转换数据结构是否已经识别了与块逻辑地址相对应的候选物理地址(例如,在其处存储所请求的数据片的位置)。例如,在特定目标数据片或数据副本的在缓存228上的物理地址已经被移动的情况下,目标数据可能实际上不驻留在从直接缓存地址转换数据结构获得的候选物理位置处。
在一个实施方式中,通过比较两个标识符来进行该确定。在一个实施方式中,缓存上的每个物理位置已经存储了第一标识符,该第一标识符直接与其所分配的数据相关联并且随其所分配的数据一起移动。将块逻辑地址链接到候选物理位置的直接缓存地址转换数据结构中的条目包括与被认为驻留在候选物理位置处的数据相关联的第二标识符。当直接缓存地址转换数据结构先填充有第二标识符时,第二标识符与存储在候选物理位置处的第一标识符相同。但是,一旦数据已移动到新位置(例如上述垃圾收集过程的结果),则候选物理位置可能没有数据和标识符或者可能实际上存储的是具有与和该块逻辑地址相关联并且先前存储在直接缓存地址转换数据结构中的标识符不同的标识符的其他数据。两个标识符的比较表明与该块逻辑地址关联的数据是否实际上驻留在候选地址处。如果两个标识符匹配,则候选物理位置处的数据是由块逻辑地址识别的目标数据。如果两个标识符不匹配,则候选物理位置处的数据不是由块逻辑地址识别的目标数据。
如框314所示,如果已找到所请求数据的正确物理地址(基于块逻辑地址),则处理器36访问缓存设备228上的物理地址。这种访问可以涉及从特定物理地址读取数据或将数据写入特定物理地址。
可替代地,如框316所示,响应于框308中执行的缓存数据定位方法未识别所请求数据的正确物理地址,处理器36按照包含在存储器60中的指令执行多级转换索引搜索320。如框322所示,处理器36在将用户输入(卷ID和偏移量)映射到用户块的块索引中执行第一树查找。如框324所示,处理器36在将用户块映射到可用于根据框314识别缓存28上的目标数据的预期物理位置的段ID和偏移量(缓存28中的物理地址)的缓存索引中执行第二树查找。
如框326所示,将从多级转换索引搜索320中检索到的预期物理位置缓存在哈希表中。结果,当在框308中发现错误时,直接缓存地址转换数据结构被来自更频繁更新的多级转换索引的地址信息自动地更新。
图6是用于在缓存上定位数据的示例缓存数据定位方法400的流程图。尽管方法400是在由***220(以上参照图4所示和描述的)所执行的背景下描述的,但是方法400同样可以由***20或其他相似的缓存数据定位***或相似的存储***执行。方法400的框可以由处理器36按照存储在非暂时性计算机可读介质上的指令来执行。在一个实施方式中,方法400可以由处理器按照包含在非暂时性计算机可读介质或存储器(例如存储器60)中的指令执行,其中指令64、68和72指示处理器36而执行方法400。
如框404所示,缓存数据定位***220接收来自用户的访问存储在存储器228中的目标数据的请求。***220接收块逻辑地址(有时也称为主机地址或块逻辑地址(BLA))。块逻辑地址不同于缓存上存储目标地址的物理位置的地址。方法400利用提供的块逻辑地址促进对缓存上存储由用户识别的数据的实际物理地址的识别。在一个实施方式中,块逻辑地址包括或对应于卷ID和偏移量。
框406和408示出了直接将块逻辑地址转换为物理位置、缓存物理地址的一个示例,该缓存物理地址是用于存储由块逻辑地址寻求的数据,目标数据的候选者。可以由处理器36按照包含在介质60中的指令(例如,指令68)来执行框406和408。在框406中,将哈希函数应用于所接收的块逻辑地址。在所示的示例中,哈希函数被应用于块逻辑地址,包括卷加上偏移量以产生哈希值。
在框408中,在非暂时性计算机可读介质上的指令指示处理器36从哈希值导出至少一个关键字,其中使用至少一个关键字在哈希表中执行查找以识别包含低延迟缓存设备中关于目标数据的候选物理位置的地址的条目。候选物理位置是缓存(低延迟缓存设备,例如图1中所示的设备28)中的物理位置,在最近一次查找时已知目标数据驻留于该物理位置处。
在一个实施方式中,按照介质中所包含的指令,处理器36将所得哈希的第一部分用作哈希表的第一关键字以从多个页面中标识针对该条目的特定页面。按照包含在介质中的指令,处理器36利用完整的结果哈希作为哈希表的第二关键字以识别条目在特定页面上的位置。在其他实施方式中,可以使用从结果哈希导出的单个关键字或从结果哈希导出的两个以上关键字在哈希表中定位包含目标数据的候选物理地址或缓存地址的条目。
如将在下文中参考图7描述的,在一些实施方式中,为有限数量的对应潜在块逻辑地址保持有限数量的条目。在这种实施方式中,针对块逻辑地址或仅针对最活跃的块逻辑地址保持将块逻辑地址(或从块逻辑地址的哈希导出的关键字)链接到候选物理位置的条目。在判定框410中,所述指令指示处理器36确定是否存在与块逻辑地址或关键字相对应的条目。换句话说,确定直接缓存地址转换数据结构中与从哈希或哈希值导出的关键字相关联的条目是否存在。在将条目存储在不同页面中的上述示例中,在从哈希(该哈希是将哈希函数应用于块逻辑地址而产生的)导出的关键字不对应于直接缓存数据定位数据结构中的任何页面的情况下,可以得出以下结论:块逻辑地址或关键字的条目不存在。
在直接缓存地址转换数据结构包含与从哈希导出的关键字相对应的条目的情况下,所述指令指示处理器36然后验证该条目的有效性,以验证在该条目中找到的关于目标数据的候选物理位置的地址实际上包含目标数据。除了包含关于目标数据的候选物理位置的地址之外,在框408中找到的条目还包含第二数据标识符(DI-2)。第二数据标识符识别与块逻辑地址相对应的数据,目标数据。在所示的示例中,包含候选物理位置的地址的条目还可以包含其他信息,例如存储在候选物理位置处的数据的长度。与不同的块逻辑地址相关联的每个条目可以具有对应的第一数据标识符。
当数据正被写入缓存时,该数据被分配有第一数据标识符D1-1。与数据当前存储的物理位置无关地,将第二数据标识符(有时称为块单元(BU))分配给数据本身。第一数据标识符D1-1和第二数据标识符D1-2有助于确定在条目中找到其地址的候选物理位置实际上是否包含目标数据。
如框412和414所示的,所述指令指示处理器36读取存储在候选物理位置处的与存储在候选物理位置处的实际数据相对应的第一数据标识符,并将第一数据标识符与条目中的第二数据标识符(DI-2)进行比较。如框416所示,如果从候选物理位置读取的第一数据标识符等于存储在该条目中的第二数据标识符(直接缓存位置数据结构的一部分),则处理器36得出结论:存储在由与块逻辑地址相对应的该条目中的地址所识别的候选物理位置处的数据与该块逻辑地址所针对的数据相同。结果,所述指令指示处理器36访问候选物理位置处的目标数据。如上所述,这种访问可以涉及改变在候选物理位置处的现有数据或读取在候选物理位置处的数据,这里,这种读取不改变数据。
如框418所示,响应于从候选物理位置读取的第一数据标识符与存储在包括候选物理位置的地址的条目中的第二数据标识符不同,处理器36得出结论:目标数据不再驻留在该候选物理位置;候选物理位置处的数据不是与块逻辑地址相对应的目标数据。结果,所述指令指示处理器36将条目中的候选物理地址与目标数据的该块逻辑地址(块逻辑地址)解除关联。在所示的示例中,这种解除关联涉及完全移除与该块逻辑地址或关键字相对应的条目。
如框420和422所示,响应于直接缓存数据位置结构(示例中的哈希表)中缺少与块逻辑地址或关键字相对应的任何条目或者响应于该条目存在、但是包含一个不包含目标数据的候选物理位置的地址(D1-1不等于D1-2),方法400自动诉诸使用多级转换索引来尝试定位缓存上关于该目标数据的物理位置。框420和422示出了使用多级转换索引将块逻辑地址转换为目标数据的预期物理位置或缓存地址的一个示例。如框420所示,所述指令指示处理器36将块逻辑地址转换为缓存逻辑地址。如框422所示,在缓存逻辑地址的检索或识别之后,所述指令指示处理器36将缓存逻辑地址转换为目标数据的预期物理位置(缓存物理位置或地址)。
“预期”物理位置是由多级转换索引针对预期包含目标数据的物理位置提供的地址。尽管不一定能保证目标数据将驻留在由框420和422的多级转换所提供的预期物理位置或预期物理位置的地址处,但是预期物理位置可能比由直接缓存位置数据结构提供并在框406和408中输出的候选物理位置更具权威性。如上所述,预期物理位置比候选物理位置更具权威性,原因在于由于在数据在缓存内移动(例如由于上述的垃圾收集过程)之后,用于执行框420和422的多级转换索引更新地较频繁,因此预期物理位置会更有可能当前包含目标数据。相反,在一个实施方式中,可以仅响应于候选物理位置未命中而更新直接缓存位置数据结构(根据框414),或者在***启动、条目可能尚不存在时,更新直接缓存位置数据结构(根据框410)。
如框424所示,然后可以使用与块逻辑地址相对应的关于目标数据的预期物理位置来访问目标数据。这可以直接完成或者可以涉及返回到框408,其中直接缓存位置数据结构已经如下所述进行了更新。
如框426所示,在框422中识别出目标数据的预期物理位置之后,所检索的预期物理位置用于更新直接缓存地址转换结构。在一个实施方式中,从多级转换索引检索到的关于目标数据的预期物理位置的物理地址被缓存在直接缓存地址转换数据结构中。在从直接缓存数据定位数据结构(示例中的哈希表)中完全移除关于该块逻辑地址或关键字的无效条目(所识别的D1-1不等于D1-2的条目)的所示出的示例中,通过将一个全新的完整条目添加到直接缓存地址转换数据结构中来更新直接缓存地址转换数据结构,该新条目将块逻辑地址或关键字与目标数据的预期物理位置的地址及其第一数据标识符D1-1相关联。
在其他实施方式中,可以按其他方式来进行直接缓存地址转换结构的更新。例如,可以保持对于关键字的未填充条目,在这种情况下,用从多级转换索引检索的关于目标数据的预期物理位置的地址填充该条目。代替在框418中完全移除对于关键字的整个填充条目,可以覆写、移除、替换或以其他方式修改该条目的无效部分,即缓存上被错误地认为包含目标数据的候选物理位置的地址,以便可替代地包括在框420和422中从多级转换索引中检索到的所识别的预期物理位置的地址。
在所示的示例中,方法400通过不必在直接缓存地址转换数据结构中存储每个块逻辑地址的条目来节省存储空间。在所示示例中,直接缓存地址转换数据结构包括N路条目集合,这意味着对于每个块逻辑地址或关键字,存在可用存储空间的n个可能条目插槽区域。换句话说,可以将多于N个块逻辑地址或关键字预先分配给对应的集合,但是只有N个条目可用于分配给该集合的块逻辑地址或关键字。当该集合已满时,所有四个插槽都被对应关键字的条目占据,为新关键字添加新条目可能导致用于另一个关键字的当前条目被逐出该集合。在直接缓存地址转换数据结构中使用N路条目集合以低的且确定的探测成本提供高负载因子。在一个实施方式中,直接缓存地址转换数据结构采用4路条目集合。在其他实施方式中,直接缓存地址转换数据结构可以采用其他大小的N路集合。
在所示的示例中,方法400通过将新的且经访问的条目提升到顶部(最近使用(MRU)端)并在将新条目***满集合时逐出底部最久远使用(LRU)条目而以LRU顺序维护每个集合中的条目。结果,方法400利用集合中的位置作为条目“热度”的指示符,即条目的活跃程度的指示符。结果,可以用很少的空间开销来调节直接缓存地址转换数据结构的大小。如框426所示,当创建包括预期物理位置的地址的新条目时,将该新条目放置在其预先指定集合的顶部(MRU端)。同样,如框428所示,当已经确证了现有条目并且已经访问了由该条目中的地址所识别的候选物理位置处的目标数据时,包含候选物理位置的地址的条目位于其指定集合的顶部(MRU端)。在该条目已经位于其指定集合的顶部的情况下,不执行任何动作。在该条目不在顶部的情况下,该条目将被移动或重新定位到其指定条目集合的顶部。在其他实施方式中,当要将新条目添加到满集合时,可以采用其他方案来逐出直接缓存地址转换数据结构的N路集合中的现有条目。
图7是示出用作利用哈希索引570的加速索引或元数据避开缓存的示例直接缓存地址转换结构540的图。直接缓存地址转换数据结构540可用作方法400的一部分。在所示的示例中,哈希表570包括两级表,该两级表包括利用关于每个页面上的候选物理位置(K/CPL)条目576的多个关键字而指向页面574(页面574之一被示出)的指针(向量572)的阵列。每个K/CPL条目可以包括关键字(应用于块逻辑地址或主机地址的哈希函数的乘积)到缓存上对应于块逻辑地址或主机地址的候选物理地址的映射。在一个实施方式中,每个页面574可以具有不大于10MB的大小,其中页面包括至少200,000个页面。在一个实施方式中,每个页面的大小为1MB,其中表570包括500,000个页面。在一个实施方式中,每个页面574包括不大于50,000个K/CPL条目576(块逻辑地址到物理地址条目)。在一个实施方式中,每个页面包括32,000个K/CPL条目。
在这种实施方式中,可以由内存分配器有效地管理各个页面574的大小(不大于10MB,在一些实施方式中为1MB)。例如,如果统一分配器要回收内存,则可以丢弃页面,而只丢失哈希表的一小部分。在这种实施方式中,由于页面574的数量很大,因此大多数访问不会发生锁上的冲突(conflict on a lock)。换句话说,可以用诸如自旋锁578的锁来保护每个页面574,但是其中并发线程的锁冲突的机会可以忽略不计。同时,页面中的条目576的数量很高,因此这种锁的空间开销最小。这种大小调整可以在仅一个锁的情况下实现包括用于大型输入/输出(IO)的所有条目。例如,在一个示例中,单个锁可以保护到直接缓存数据定位结构540的物理地址条目的块逻辑地址中的每个,例如32,000个条目(对应于32,000个潜在的块逻辑地址或“关键字”(通过将哈希函数应用于块逻辑地址而得到的)中的每个。结果,这样的实施方式提供了有效且允许高并发性的页面粒度锁定。
在一个实施方式中,为了为给定的关键字选择适当的页面574,将哈希函数应用于块逻辑地址并且将所得哈希的某些位(例如,低四位)屏蔽掉,并将哈希的其余位用于为给定关键字选择适当的页面574。通过使用该技术选择页面,用于附近块逻辑地址(例如,逻辑块地址(LBA))的映射很可能最终到达同一页面中。在每个页面574内,K/CPL对的阵列由相应的关键字索引。在一个示例中,哈希表是四路集合关联的,这意味着每个关键字有四个可能的插槽。这种布置提供了高负载因数,同时具有低且确定性的探测成本。由于元素的所有可能位置在存储器中都是相接的并且可以拟合在两个CPU缓存行中,因此可以提高性能。
在一个实施方式中,对于表570的集合580-1、580-2…580-n(统称为集合480)中的每个而言,基于每个条目的近来访问程度(相对于集合中的其他条目)而将K/CPL条目存储在集合中。因此,K/CPL条目在集合580内的相对位置可以用作其“热度”(即,近来访问该条目的程度)的代理。在这种实施方式中,通过将新的和已访问的条目提升到集合的顶部或MRU端并在将新条目***满集合时逐出集合中的底部或LRU条目,从而以LRU顺序保持集合580中的K/CPL条目。结果,该集合中的位置被用作条目的热度的指示符。因此,可以用很少的空间开销或没有空间开销地来近似LRU缓存策略。
在一个实施方式中,典型的块大小是4kB。K/CPL条目可以约为32字节。结果,AI/数据结构540与数据大小之比为32/4096,即0.7%。例如,1.5TB缓存设备仅可以利用主存储器的12GB。在不使用数据结构540的情况下,设计可以可替代地使用该相同的12GB来将数据的一部分存储在缓存中。数据结构540有助于快速访问整个缓存设备。
尽管使用诸如哈希表570的直接地址转换数据结构540可能导致无法以高负载因子解决的冲突和逐出,但是另外包括多级转换索引解决了这种顾虑。由于直接地址转换数据结构本身就是缓存,因此当可以通过多级地址转换索引借助数据转换路径来解决未命中问题时,这些未命中是可接受的,尽管延迟会有所增加。
尽管已经参考示例实施方式描述了本公开,但是本领域技术人员将认识到,可以在形式和细节上进行改变而不背离所要求保护的主题的精神和范围。例如,尽管可能已经将不同的示例实施方式描述为包括提供一个或多个益处的特征,但是可以预期,在所描述的示例实施方式或其他替代实施方式中,所描述的特征可以彼此互换或可替代地彼此组合。由于本公开的技术相对复杂,因此并非可以预见该技术中的所有改变。参照示例实施方式描述并在所附权利要求中阐述的本公开显然旨在尽可能广泛。例如,除非另外特别指出,否则引用单个特定要素的权利要求还包括多个这样的特定要素。权利要求中的术语“第一”、“第二”、“第三”等仅区别不同的要素,并且除非另有说明,否则不应与本公开中的要素的特定顺序或特定编号具体关联。
Claims (20)
1.一种地址转换的方法,包括:
将直接缓存地址转换数据结构存储在易失性存储器中,所述直接缓存地址转换数据结构能够用于将目标数据的块逻辑地址直接转换为缓存设备中的候选物理位置;
将多级转换索引存储在所述易失性存储器中,所述多级转换索引能够用于将所述目标数据的所述块逻辑地址转换为所述目标数据在所述缓存设备中的预期物理位置,其中所述多级转换索引包括:
第一索引表,用于将所述块逻辑地址转换为数据标识符;以及
第二索引表,用于将所述数据标识符转换为所述缓存设备中的所述预期物理位置;
确定所述目标数据是否驻留在经由所述直接缓存地址转换数据结构所确定的所述候选物理位置处;
响应于所述目标数据驻留在所述候选物理位置处,访问所述候选物理位置处的所述目标数据;
响应于所述目标数据不驻留在所述候选物理位置处,访问经由所述多级转换索引来确定的所述预期物理位置处的所述目标数据;以及
响应于所述预期物理位置处的数据被移动到另一物理位置,将所述数据标识符与所述另一物理位置相关联。
2.根据权利要求1所述的方法,其中:
所述直接缓存地址转换数据结构存储直接与所述目标数据相关联的第一标识符,其中所述第一标识符与所述目标数据一起移动;
第二标识符与预期驻留在所述候选物理位置处的数据相关联;以及
所述方法还包括将所述第一标识符与所述第二标识符进行比较以确定所述候选物理位置处的数据是否是所述目标数据。
3.根据权利要求1所述的方法,其中,响应于所述目标数据的所述块逻辑地址不与所述直接缓存地址转换数据结构中的任何候选物理位置相关联:
使用所述多级转换索引来确定所述目标数据的所述预期物理位置;
修改所述直接缓存地址转换数据结构以将被确定的所述预期物理位置与所述目标数据的所述块逻辑地址相关联。
4.根据权利要求1所述的方法,其中所述直接缓存地址转换数据结构包括哈希表,并且所述方法还包括:
将哈希函数应用于所述块逻辑地址以生成哈希值;以及
基于所述哈希值,从所述哈希表检索所述候选物理位置。
5.根据权利要求1所述的方法,还包括:
响应于所述目标数据不驻留在所述候选物理位置:
将检索到的所述预期物理位置缓存在所述直接缓存地址转换结构中,包括修改所述直接缓存地址转换数据结构以:
将所述候选物理位置与所述目标数据的所述块逻辑地址解除关联;以及
将检索到的预期物理位置与所述目标数据的所述块逻辑地址相关联。
6.一种地址转换的***,包括:
持久性存储设备;
低延迟的缓存设备;
易失性存储器;以及
处理器,用于执行存储在机器可读存储介质上的指令以:
将直接缓存地址转换数据结构存储在易失性存储器中,所述直接缓存地址转换数据结构能够用于将目标数据的块逻辑地址直接转换为缓存设备中的候选物理位置;
将多级转换索引存储在所述易失性存储器中,所述多级转换索引能够用于将所述目标数据的所述块逻辑地址转换为所述目标数据在所述缓存设备中的预期物理位置,其中所述多级转换索引包括:
第一索引表,用于将所述块逻辑地址转换为数据标识符;以及
第二索引表,用于将所述数据标识符转换为所述缓存设备中的所述预期物理位置;
确定所述目标数据是否驻留在经由所述直接缓存地址转换数据结构来确定的所述候选物理位置处;
响应于所述目标数据驻留在所述候选物理位置处,访问所述候选物理位置处的所述目标数据;
响应于所述目标数据不驻留在所述候选物理位置处,访问经由所述多级转换索引来确定的所述预期物理位置处的所述目标数据;以及
响应于所述预期物理位置处的数据被移动到另一物理位置,将所述数据标识符与所述另一物理位置相关联。
7.根据权利要求6所述的***,其中,所述低延迟的缓存设备包括第二持久性存储设备。
8.根据权利要求7所述的***,其中,所述第二持久性存储设备包括储存级存储器(SCM)。
9.根据权利要求6所述的***,其中:
所述直接缓存地址转换数据结构存储直接与所述目标数据相关联的第一标识符,其中所述第一标识符与所述目标数据一起移动;
第二标识符与预期驻留在所述候选物理位置处的数据相关联;以及
所述指令能够执行以将所述第一标识符与所述第二标识符进行比较以确定存储在所述候选物理位置处的所述数据是否为所述目标数据。
10.根据权利要求9所述的***,其中,响应于所述第一标识符不同于所述第二标识符,所述指令能够执行以:
在所述直接缓存地址转换数据结构中,将所述候选物理位置与所述目标数据的所述块逻辑地址解除关联;
使用所述多级转换索引来确定所述目标数据的所述预期物理位置;以及
将所确定的所述预期物理位置与所述目标数据的所述块逻辑地址相关联。
11.根据权利要求6所述的***,其中,响应于所述目标数据的所述块逻辑地址不与任何候选物理位置相关联,所述指令能够执行以:
使用所述多级转换索引来确定所述目标数据的所述预期物理位置;以及
修改所述直接缓存地址转换数据结构以将所确定的所述预期物理位置与所述目标数据的所述块逻辑地址相关联。
12.根据权利要求6所述的***,其中:
所述直接缓存地址转换数据结构包括哈希表;以及
所述指令能够执行以:
将哈希函数应用于所述块逻辑地址以生成哈希值;以及
基于所述哈希值,从所述哈希表检索所述候选物理位置。
13.根据权利要求12所述的***,其中,用于基于所述哈希值从所述哈希表检索所述候选物理位置的所述指令包括用于以下的指令:
将所述哈希值的第一部分用作所述哈希表的第一关键字以标识多个页面中的特定页面;以及
将所述哈希值用作所述哈希表的第二关键字以标识所述候选物理位置在所述特定页面上的位置。
14.根据权利要求13所述的***,其中,所述多个页面中的每一个通过自旋锁来保护。
15.根据权利要求12所述的***,其中,所述哈希表是集合关联的,其中,所述哈希表中的元素的所有可能位置在存储器中是相接的并且拟合在两个处理器缓存行中。
16.根据权利要求12所述的***,其中,所述哈希表是集合关联的,并且其中,每个关键字基于所述关键字的逐出热度而在其对应集合内具有位置。
17.根据权利要求6所述的***,其中,所述指令能够执行以:
响应于所述目标数据不驻留在所述候选物理位置:
将检索到的所述预期物理位置缓存在所述直接缓存地址转换结构中,包括修改所述直接缓存地址转换数据结构以:
将所述候选物理位置与所述目标数据的所述块逻辑地址解除关联;以及
将检索到的预期物理位置与所述目标数据的所述块逻辑地址相关联。
18.一种非暂时性计算机可读介质,包含能够由处理器执行的用于以下的指令:
将直接缓存地址转换数据结构存储在易失性存储器中,所述直接缓存地址转换数据结构能够用于将目标数据的块逻辑地址直接转换为缓存设备中的候选物理位置;
将多级转换索引存储在所述易失性存储器中,所述多级转换索引能够用于将所述目标数据的所述块逻辑地址转换为所述目标数据在所述缓存设备中的预期物理位置,其中所述多级转换索引包括:
第一索引表,用于将所述块逻辑地址转换为数据标识符;以及
第二索引表,用于将所述数据标识符转换为所述缓存设备中的所述预期物理位置;
确定所述目标数据是否驻留在经由所述直接缓存地址转换数据结构所确定的所述候选物理位置处;
响应于所述目标数据驻留在所述候选物理位置处,访问所述候选物理位置处的所述目标数据;
响应于所述目标数据不驻留在所述候选物理位置处,访问经由所述多级转换索引来确定的所述预期物理位置处的所述目标数据;以及
响应于所述预期物理位置处的数据被移动到另一物理位置,将所述数据标识符与所述另一物理位置相关联。
19.根据权利要求18所述的非暂时性计算机可读介质,其中:
所述直接缓存地址转换数据结构包括哈希表,以及
所述指令能够执行以:
将哈希函数应用于所述块逻辑地址以生成哈希值;以及
基于所述哈希值,从所述哈希表检索所述候选物理位置。
20.根据权利要求18所述的非暂时性计算机可读介质,其中,所述指令能够执行以:
响应于所述目标数据不驻留在所述候选物理位置:
将检索到的所述预期物理位置缓存在所述直接缓存地址转换结构中,包括修改所述直接缓存地址转换数据结构以:
将所述候选物理位置与所述目标数据的所述块逻辑地址解除关联;以及
将检索到的预期物理位置与所述目标数据的所述块逻辑地址相关联。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/396,555 US11226904B2 (en) | 2019-04-26 | 2019-04-26 | Cache data location system |
US16/396,555 | 2019-04-26 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111858404A CN111858404A (zh) | 2020-10-30 |
CN111858404B true CN111858404B (zh) | 2022-12-27 |
Family
ID=72839942
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010299742.4A Active CN111858404B (zh) | 2019-04-26 | 2020-04-16 | 地址转换的方法和***、以及计算机可读介质 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11226904B2 (zh) |
CN (1) | CN111858404B (zh) |
DE (1) | DE102020104701B4 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10977189B2 (en) * | 2019-09-06 | 2021-04-13 | Seagate Technology Llc | Reducing forward mapping table size using hashing |
US11556513B2 (en) | 2020-06-30 | 2023-01-17 | Hewlett Packard Enterprise Development Lp | Generating snapshots of a key-value index |
US11461299B2 (en) | 2020-06-30 | 2022-10-04 | Hewlett Packard Enterprise Development Lp | Key-value index with node buffers |
US11461240B2 (en) | 2020-10-01 | 2022-10-04 | Hewlett Packard Enterprise Development Lp | Metadata cache for storing manifest portion |
US11593328B2 (en) | 2020-10-07 | 2023-02-28 | Hewlett Packard Enterprise Development Lp | Update of deduplication fingerprint index in a cache memory |
US11379367B2 (en) * | 2020-11-19 | 2022-07-05 | Micron Technology, Inc. | Enhancement for activation and deactivation of memory address regions |
CN113849455B (zh) * | 2021-09-28 | 2023-09-29 | 致真存储(北京)科技有限公司 | 一种基于混合式存储器的mcu及缓存数据的方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102576333A (zh) * | 2009-10-05 | 2012-07-11 | 马维尔国际贸易有限公司 | 非易失性存储器中的数据高速缓存 |
CN105027090A (zh) * | 2012-10-05 | 2015-11-04 | 西部数据技术公司 | 用于固态驱动器中的物理到逻辑映射的方法、设备和*** |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5603004A (en) | 1994-02-14 | 1997-02-11 | Hewlett-Packard Company | Method for decreasing time penalty resulting from a cache miss in a multi-level cache system |
US7886126B2 (en) * | 2005-01-14 | 2011-02-08 | Intel Corporation | Extended paging tables to map guest physical memory addresses from virtual memory page tables to host physical memory addresses in a virtual machine system |
US7685399B2 (en) | 2007-01-07 | 2010-03-23 | International Business Machines Corporation | Method, system, and computer program products for data movement within processor storage |
GB2471715A (en) | 2009-07-10 | 2011-01-12 | Hewlett Packard Development Co | Determining the data chunks to be used as seed data to restore a database, from manifests of chunks stored in a de-duplicated data chunk store. |
US8386745B2 (en) * | 2009-07-24 | 2013-02-26 | Advanced Micro Devices, Inc. | I/O memory management unit including multilevel address translation for I/O and computation offload |
US8453257B2 (en) | 2009-08-14 | 2013-05-28 | International Business Machines Corporation | Approach for securing distributed deduplication software |
US8392661B1 (en) * | 2009-09-21 | 2013-03-05 | Tilera Corporation | Managing cache coherence |
US8832154B1 (en) * | 2009-12-08 | 2014-09-09 | Netapp, Inc. | Object location service for network-based content repository |
US8285918B2 (en) | 2009-12-11 | 2012-10-09 | Nimble Storage, Inc. | Flash memory cache for data storage device |
US20110283048A1 (en) * | 2010-05-11 | 2011-11-17 | Seagate Technology Llc | Structured mapping system for a memory device |
US8627026B2 (en) | 2011-08-19 | 2014-01-07 | Hitachi, Ltd. | Storage apparatus and additional data writing method |
US9684601B2 (en) * | 2012-05-10 | 2017-06-20 | Arm Limited | Data processing apparatus having cache and translation lookaside buffer |
US9501546B2 (en) | 2012-06-18 | 2016-11-22 | Actifio, Inc. | System and method for quick-linking user interface jobs across services based on system implementation information |
US9514054B2 (en) | 2014-07-08 | 2016-12-06 | Netapp, Inc. | Method to persistent invalidation to ensure cache durability |
US9852076B1 (en) | 2014-12-18 | 2017-12-26 | Violin Systems Llc | Caching of metadata for deduplicated LUNs |
US9916241B2 (en) | 2015-08-14 | 2018-03-13 | Netapp, Inc. | Storage controller caching using symmetric storage class memory devices |
CN105404596B (zh) | 2015-10-30 | 2018-07-20 | 华为技术有限公司 | 一种数据传输方法、装置及*** |
US10402394B2 (en) | 2016-11-03 | 2019-09-03 | Veritas Technologies Llc | Systems and methods for flushing data in a virtual computing environment |
US9990281B1 (en) * | 2016-11-29 | 2018-06-05 | Sap Se | Multi-level memory mapping |
CN107193758A (zh) | 2017-05-19 | 2017-09-22 | 记忆科技(深圳)有限公司 | 一种固态硬盘的映射表管理方法及固态硬盘 |
US10372687B1 (en) | 2017-08-03 | 2019-08-06 | EMC IP Holding Company LLC | Speeding de-duplication using a temporal digest cache |
US10402094B2 (en) * | 2017-10-17 | 2019-09-03 | Seagate Technology Llc | Mapping system for data storage devices |
US11093454B2 (en) | 2017-10-31 | 2021-08-17 | EMC IP Holding Company LLC | Speeding deduplication using a most wanted digest cache |
US10319445B1 (en) * | 2017-11-30 | 2019-06-11 | Western Digital Technologies, Inc. | Programming unprogrammed upper page during lower page programming of multi-level storage cells |
JP6995723B2 (ja) * | 2018-09-19 | 2022-01-17 | キオクシア株式会社 | メモリシステム、ストレージシステム、および制御方法 |
US10776276B2 (en) | 2018-11-30 | 2020-09-15 | Hewlett Packard Enterprise Development Lp | Bypass storage class memory read cache based on a queue depth threshold |
US10732881B1 (en) | 2019-01-30 | 2020-08-04 | Hewlett Packard Enterprise Development Lp | Region cloning for deduplication |
US11030107B2 (en) | 2019-04-19 | 2021-06-08 | Hewlett Packard Enterprise Development Lp | Storage class memory queue depth threshold adjustment |
US12032534B2 (en) | 2019-08-02 | 2024-07-09 | EMC IP Holding Company LLC | Inline deduplication using stream detection |
-
2019
- 2019-04-26 US US16/396,555 patent/US11226904B2/en active Active
-
2020
- 2020-02-21 DE DE102020104701.0A patent/DE102020104701B4/de active Active
- 2020-04-16 CN CN202010299742.4A patent/CN111858404B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102576333A (zh) * | 2009-10-05 | 2012-07-11 | 马维尔国际贸易有限公司 | 非易失性存储器中的数据高速缓存 |
CN105027090A (zh) * | 2012-10-05 | 2015-11-04 | 西部数据技术公司 | 用于固态驱动器中的物理到逻辑映射的方法、设备和*** |
Also Published As
Publication number | Publication date |
---|---|
US20200341909A1 (en) | 2020-10-29 |
US11226904B2 (en) | 2022-01-18 |
DE102020104701B4 (de) | 2024-05-29 |
DE102020104701A1 (de) | 2020-10-29 |
CN111858404A (zh) | 2020-10-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111858404B (zh) | 地址转换的方法和***、以及计算机可读介质 | |
US10628052B2 (en) | Memory system controlling a cache of a nonvolatile memory | |
US9104327B2 (en) | Fast translation indicator to reduce secondary address table checks in a memory device | |
US20170235681A1 (en) | Memory system and control method of the same | |
CN110998549B (zh) | 地址转换缓存 | |
US10831678B2 (en) | Multi-tier cache placement mechanism | |
US9489239B2 (en) | Systems and methods to manage tiered cache data storage | |
US10740251B2 (en) | Hybrid drive translation layer | |
US10417141B2 (en) | Method and apparatus for hardware management of multiple memory pools | |
US9792221B2 (en) | System and method for improving performance of read/write operations from a persistent memory device | |
US9639481B2 (en) | Systems and methods to manage cache data storage in working memory of computing system | |
US8185692B2 (en) | Unified cache structure that facilitates accessing translation table entries | |
JP2012212440A (ja) | キャッシュされたメモリデータを伴うキャッシュメモリ属性インジケータ | |
CN107870867B (zh) | 32位cpu访问大于4gb内存空间的方法与装置 | |
KR20190058318A (ko) | 효율적으로 압축된 캐시 라인의 저장 및 처리를 위한 시스템 및 방법 | |
TWI768039B (zh) | 多處理器系統、資料管理方法及非暫時性電腦可讀媒體 | |
EP3553665A1 (en) | Non-volatile memory access method, device, and system | |
KR102252377B1 (ko) | 멀티 프로세서 시스템 및 이에 포함된 프로세서의 데이터 관리 방법 | |
US9454488B2 (en) | Systems and methods to manage cache data storage | |
CN107870870B (zh) | 访问超过地址总线宽度的内存空间 | |
CN107423232B (zh) | Ftl快速访问方法与装置 | |
US11409665B1 (en) | Partial logical-to-physical (L2P) address translation table for multiple namespaces |
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 |