CN108228471B - 管理存储器装置中存储器单元的实体信息的方法及系统 - Google Patents
管理存储器装置中存储器单元的实体信息的方法及系统 Download PDFInfo
- Publication number
- CN108228471B CN108228471B CN201710235082.1A CN201710235082A CN108228471B CN 108228471 B CN108228471 B CN 108228471B CN 201710235082 A CN201710235082 A CN 201710235082A CN 108228471 B CN108228471 B CN 108228471B
- Authority
- CN
- China
- Prior art keywords
- memory
- block
- entity information
- information
- physical
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
-
- 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/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
-
- 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/0877—Cache access modes
- G06F12/0882—Page mode
-
- 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/0891—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
-
- 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
- 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/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/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- 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
-
- 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/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
-
- 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
-
- 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
-
- 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/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
-
- 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/72—Details relating to flash memory management
- G06F2212/7201—Logical to physical mapping or translation of blocks or pages
-
- 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/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase 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/72—Details relating to flash memory management
- G06F2212/7207—Details relating to flash memory management management of metadata or 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)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种管理存储器装置中存储器单元的实体信息的方法及系统,该方法包括:接收要求以存取包括于存储器装置的存储器单元的实体信息。判断实体信息在高速缓存中的实体信息表中是否可用。若存储器单元的实体信息在窗体中是可用的,从窗体中存取实体信息。若实体信息在窗体中是不可用的,存取高速缓存中的全局指引目录,其指示在非易失性存储器中存储全数的实体信息区块的位置。从全局指引目录,判断非易失性存储器中存储包括存储器单元的实体信息的特定实体信息区块的特定位置。特定实体信息区块被加载至窗体中,并且实体从特定实体信息区块存取存储器单元的实体信息。
Description
技术领域
以下公开大致上是关于用以管理存储器装置中存储器单元的实体信息的方法及系统。
背景技术
一些存储器装置会保存关于其组成存储器单元的实体状态的实体信息。实体信息的保存例如是以存储器区块(block)、页(page)或子页(sub-page)为单位(granularity)。在执行存储器操作时,部分的实体信息将被存取。
发明内容
本发明描述一种用以管理存储器装置中存储器单元的实体信息的技术及系统。在一些实施例中,存储器装置包括非易失性存储器,像是闪存以及具有高速缓存的装置控制器。高速缓存例如是随机存取存储器(Random Access Memory,RAM)。存储器装置可将存储器装置中所有存储器单元的实体信息记录在存储在非易失性存储器中的实体信息区块当中。存储器单元对应非易失性存储器中的一部分,像是存储器区块、页或子页。实体信息区块中较小的一部分(像是对应实体信息区块子集合的一或多个数据块(chunk),其包括非易失性存储器中一存储器单元子集合的实体信息)存储在高速缓存当中。实体在高速缓存中,数据块存储在一种称之为快取实体信息表的数据结构实体当中。装置控制器更可在高速缓存中保存一全局指引目录(global directory),以指示实体信息区块在非易失性存储器中的位置。
当接收到用以存取存储器单元的实体信息的要求时(例如在对存储器单元作垃圾回收(garbage collection)时),装置控制器会先检查快取实体信息表中是否存在所要求的实体信息。若是,装置控制器将响应此要求,自高速缓存提供实体信息。若所要求的实体信息不存在于高速缓存当中,装置控制器将利用全局指引目录,判断具有所要求的实体信息的实体信息区块存在于非易失性存储器中何处。一旦判断出所要求的实体信息的实体信息区块在非易失性存储器中的位置,装置控制器将把包括目标实体信息区块的数据块加载至快取实体信息表中的项目当中。
在一些实施例中,实体为了将数据块加载至快取实体信息表,既存的数据块必须先从表中剔除(evict)(像是在快取实体信息表没有可用的闲置空间时)。在剔除一数据块之前,装置控制器会检查此数据块中的一或多个项目是否是已使用(dirty)的,例如,自此数据块被加载至快取实体信息表时起,所对应的存储器单元的实体状态已改变。数据块未使用(clean)或已使用的状态是由关联的标记位来指示。在从快取实体信息表剔除具有已使用实体信息的数据块之前,此数据块会先实体被写回非易失性存储器。一旦被写回非易失性存储器,已使用标记会被设定为未使用,且快取实体信息表中的项目将由包括所要求的实体信息的新数据块覆写。装置控制器接着将回显请求,自新加载的数据块提供实体信息。
一般而言,实体可通过接收用以存取存储器装置中存储器单元的实体信息的一要求来管理存储器装置中存储器单元的实体信息。响应于接收此要求,将判断存储器单元的实体信息在高速缓存的窗体中是否是可用的。窗体存储着对应全数实体信息区块中的一子集合的信息,当中包括存储器装置中的多个存储器单元的实体信息。当判断出存储器单元的实体信息在窗体中是可用的,将从窗体中存取存储器单元的实体信息。当判断出存储器单元的实体信息在窗体中是不可用的,将存取存储在高速缓存中的全局指引目录。全局指引目录可指示非易失性存储器中全数实体信息区块的存储位置。从全局指引目录当中,可判断出一实体特定实体信息区块在非易失性存储器中的存储位置。特定实体信息区块包括存储器单元的实体信息。响应于此一判断,此特定实体信息区块将从非易失性存储器中的特定位置被加载至窗体中。来自特定实体信息区块的存储器单元的实体信息将被加载至窗体中。
特定实施方式可包括以下一或多个特征。窗体可存储一或多个存储器数据块,各存储器数据块包括一或多个存储一或多个存储器单元的实体信息的项目,此一或多个存储器单元包含于全数的实体信息区块的子集合中的一实体信息区块。判断存储器单元的实体信息在窗体中是否可用包括判断对应特定实体信息区块的存储器数据块是否存在于窗体中。全局指引目录可包括多个项目,其指示对应全数实体信息区块的全数存储器数据块在非易失性存储器中所存储的位置。
窗体可存储一或多个存储器数据块,各存储器数据块包括一或多个项目,各个项目存储一或多个存储器单元的实体信息项目,此一或多个存储器单元的实体信息包含于实体一实体信息区块当中,此实体信息区块包含于全数实体信息区块的一子集合。将特定实体信息区块从非易失性存储器中的特定位置加载至窗体,当中可包括在非易失性存储器的特定位置中,存取对应此特定实体信息区块的特定存储器数据块,并将此特定存储器数据块加载至窗体中。
将特定存储器数据块加载至窗体中,当中可包括辨识存在于窗体中欲剔除的既存存储器数据块。可判断关联于此既存存储器数据块的一或多个存储器单元的实体信息是否有被更新。当判断关联于此既存存储器数据块的一或多个存储器单元的实体信息并未被更新时,将以特定存储器数据块替换此既存存储器数据块。当判断关联于此既存存储器数据块的一或多个存储器单元的实体信息已被更新时,从全局指引目录判断对应于此既存存储器数据块的一第二实体信息区块在非易失性存储器中的一第二位置。响应于判断此第二位置,将存取非易失性存储器中的第二实体信息区块。可辨识第二实体信息区块中的一或多个存储器单元,第二实体信息区块中的此一或多个存储器单元是对应于关联实体既存存储器数据块中具有更新后实体信息的一或多个存储器单元。第二实体信息区块中被辨识出来的一或多个存储器单元的实体信息可被来自既存存储器数据块中对应存储器单元的更新后实体信息更新。既存存储器数据块可被特定存储器数据块更新。
窗体中的各存储器单元可包括指示此存储器单元的实体信息是否已被更新的已使用标记。判断关联于既存存储器数据块的一或多个存储器单元的实体信息是否已被更新,当中可包括检查各一或多个存储器单元的关联已使用标记的状态。当关联已使用标记具有第一值,将判断此存储器单元的实体信息已被更新。当关联已使用标记具有第二值,将判断此存储器单元的实体信息尚未被更新。
窗体中的各存储器单元可包括指示此存储器单元的实体信息是否已被更新的已使用标记。将第二实体信息区块中被辨识出的一或多个存储器单元的实体信息更新成来自既存存储器数据块的对应存储器单元的更新后实体信息,当中可包括响应于更新第二实体信息区块中被辨识出的一或多个存储器单元的实体信息,清除关联于窗体中对应存储器单元的一或多个已使用标记的值。
可侦测存在于窗体中的一或多个存储器单元的实体状态。接收要求以存取存储器单元的实体信息,当中可包括接收要求以更新存储器单元的实体状态。响应接收要求以更新存储器单元的实体状态,窗体中关联于此存储器单元的项目可被更新。此项目可包括此存储器单元的实体信息。关联于此项目的已使用标记可被设成第一值以指示关联于此项目的存储器单元的实体信息已被更新。
对一或多个存储器单元侦测实体状态,当中可包括检查各存储器单元的阈值电压设定(threshold voltage setting)、健康状态(health status)或有效性状态(validitystatus)至少其一。更新窗体中关联于存储器单元的项目,当中可包括更新包含于项目中的一或多个位,此一或多个位可用来表示以下至少其一:针对存储器单元的阈值电压设定、针对存储器单元的健康状态、针对存储器单元的有效性状态、针对存储器单元的内容的编码类型(encode type)、针对存储器单元的位错误率、或针对存储器单元的擦除计数(erasecount)、编程计数(program count)或读取计数(read count)其中之一。
接收要求以更新存储器单元的实体状态,当中可包括在对存储器单元进行读取或写入操作之后,跟着接收要求以更新存储器单元的实体状态。
存储器单元可包括存储器区块、存储器页、存储器子页的其中之一。
就另一方面,存储器系统包括非易失性存储器,其包括多个存储器单元;高速缓存,其耦接至非易失性存储器;以及装置控制器,其耦接至非易失性存储器以及高速缓存。装置控制器用以接收要求以存取包含于非易失性存储器的存储器单元的实体信息。响应接收此要求,装置控制器判断存储器单元的实体信息在高速缓存中的窗体里是否是可用的(available),此窗体是存储对应全数实体信息区块的一子集合的信息,其包括存储器装置中的多个存储器单元的实体信息。当判断出存储器单元的实体信息在窗体中是可用的,装置控制器将从此窗体中存取存储器单元的实体信息。当判断出存储器单元的实体信息在此窗体中是不可用的,装置控制器将存取存储于高速缓存中的全局指引目录,全局指引目录可指示在非易失性存储器中,存储全数实体信息区块的位置。装置控制器可通过全局指引目录来判断实体非易失性存储器中存储特定实体信息区块的特定位置,此特定实体信息区块包括存储器单元的实体信息。响应于此判断,装置控制器可将此特定实体信息区块从非易失性存储器中的特定位置加载至窗体中,并从加载至此窗体的特定实体信息区块中存取存储器单元的实体信息。
特定实施方式可包括以下一或多个特征。窗体可存储一或多个存储器数据块,各存储器数据块包括一或多个项目,此一或多个项目存储一或多个存储器单元的实体信息项目,此一或多个存储器单元的实体信息包含于一实体信息区块,此实体信息区块包含于全数实体信息区块的一子集合中实体。判断存储器单元的实体信息在窗体中是否可用包括判断对应特定实体信息区块的存储器数据块是否存在于窗体中。全局指引目录可包括多个项目,其指示对应全数实体信息区块的全数存储器数据块在非易失性存储器中的位置。
窗体可存储一或多个存储器数据块,各存储器数据块包括一或多个存储一或多个存储器单元的实体信息的项目,该一或多个存储器单元包含于全数的实体信息区块的子集合中的一实体信息区块。将特定实体信息区块从非易失性存储器中的特定位置加载至窗体,当中包括从非易失性存储器的特定位置,存取对应此特定实体信息区块的特定存储器数据块,并将此特定存储器数据块加载至窗体中。
将特定存储器数据块加载至窗体中,当中可包括辨识存在于窗体中欲剔除的既存存储器数据块。可判断关联于此既存存储器数据块的一或多个存储器单元的实体信息是否有被更新。当判断出关联于此既存存储器数据块的一或多个存储器单元的实体信息并未被更新,将以此特定存储器数据块替换既存存储器数据块。当判断出关联于此既存存储器数据块的一或多个存储器单元的实体信息已被更新,将从全局指引目录判断对应于此既存存储器数据块的一第二实体信息区块在非易失性存储器中的一第二位置。响应于判断此第二位置,将可存取非易失性存储器中的第二实体信息区块。可辨识第二实体信息区块中的一或多个存储器单元,第二实体信息区块中的此一或多个存储器单元是对应于实体既存存储器数据块中具有更新后实体信息的一或多个存储器单元。第二实体信息区块中被辨识出的此一或多个存储器单元的实体信息可被来自既存存储器数据块中对应存储器单元的更新后实体信息更新。既存存储器数据块可被特定存储器数据块更新。
窗体中的各存储器单元可包括指示存储器单元的实体信息是否已被更新的已使用标记。判断关联于既存存储器数据块的一或多个存储器单元的实体信息是否已被更新,当中可包括检查各一或多个存储器单元的关联已使用标记的状态。当关联已使用标记具有第一值,将判断此存储器单元的实体信息已被更新。当关联已使用标记具有第二值,将判断此存储器单元的实体信息尚未被更新。
窗体中的各存储器单元可包括指示存储器单元的实体信息是否已被更新的已使用标记。将第二实体信息区块中被辨识出的一或多个存储器单元的实体信息更新成来自既存存储器数据块的对应存储器单元的更新后实体信息,当中可包括响应于更新第二实体信息区块中被辨识出的一或多个存储器单元的实体信息,清除关联于窗体中对应存储器单元的一或多个已使用标记的值。
装置控制器更可用以侦测窗体中的一或多个存储器单元的实体状态。接收要求以存取存储器单元的实体信息,当中可包括接收要求以更新存储器单元的实体状态。响应接收此要求以更新存储器单元的实体状态,窗体中关联于此存储器单元的项目可被更新。此项目可包括此存储器单元的实体信息。关联于此项目的已使用标记可被设成第一值以指示关联于此项目的存储器单元的实体信息已被更新。
对一或多个存储器单元侦测实体状态可包括检查各存储器单元的阈值电压设定、健康状态或有效性状态至少其一。更新窗体中关联于存储器单元的项目,当中可包括以下至少其中之一:更新包含于项目中的一或多个位,此一或多个位表示针对存储器单元的阈值电压设定、针对存储器单元的健康状态、针对存储器单元的有效性状态、针对存储器单元的内容的编码类型、针对存储器单元的位错误率、或针对存储器单元的擦除计数、编程计数或读取计数其中之一。
非易失性存储器可包括NAND闪存、NOR闪存或相变化存储器(Phase ChangeMemory,PCM)其中之一。高速缓存可包括静态随机存取存储器(Static Random AccessMemory,SRAM)、动态随机存取存储器(Dynamic Random Access Memory,DRAM)或电阻式随机存取存储器(Resistive Random Access Memory,RRAM)其中之一。
存储器单元可包括存储器区块、存储器页或存储器子页的其中之一。
以上技术的实施包括方法、系统、计算器程序产品以及计算器可读取媒体。所述的计算器程序产品可以合适地内嵌于存储着可被一或多个处理器执行的指令的非瞬时机器可读取媒体(non-transitory machine-readable medium)当中。指令可用来使一或多个处理器执行上述动作。所述的计算器可读取媒体存储着指令,当指令由一或多个处理器执行,可使一或多个处理器执行所述动作。
在上述方式中,存储器装置中的装置控制器可有效率地管理存储器装置中存储器单元(例如存储器页、子页或存储器区块)的实体信息。通过将完整的实体信息存储在非易失性存储器中,并缓存(caching)部分的实体信息在高速缓存中,并按需求在非易失性存储器和高速缓存之间作换进/换出(swap in/out),存储在高速缓存中实体信息的数量可被限制并独立于存储器装置中实体信息的总量。随着存储器装置中存储器区块的大小越来越大,当中存储器单元的实体信息的对应数量也越多,此技术是相当有用的。由于只需将有限数量的实体信息存储在高速缓存当中,高速缓存的大小可受限制。这有助于限制存储器装置的成本,因为高速缓存往往较非易失性存储器来得昂贵。
技术可被应用在各类型的非易失性存储器上,像是NAND闪存、NOR闪存、相变化存储器(PCM)或其他类似者。新增或替代地,技术可被应用在各类型的高速缓存上,像是静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、电阻式随机存取存储器(RRAM)或其他类似者。在部分实施例中,可使用额外层级的快取,例如,存储着另一部分实体信息区块的第三级高速缓存。
以下的附图和描述中阐述了一或多个公开的实施例的细节。其他特征、方面以及优点可通过描述、附图和权利要求而变得更容易理解。
附图说明
图1绘示依据一或多个实施例的使用快取实体信息表的系统的例子。
图2绘示依据一或多个实施例,用以管理高速缓存和非易失性存储器之间的存储器单元的实体信息的例示架构。
图3绘示依据一或多个实施例,查找存储器装置中的存储器单元的实体信息的程序的一例。
图4绘示依据一或多个实施例,更新存储器单元的实体信息的程序的一例。
图5绘示依据一或多个实施例,将已使用数据块冲出快取实体信息表的程序的一例。
【符号说明】
100:系统
130:主机装置
132:处理器
134:高速缓存
136:实体信息
110:存储装置
112:装置控制器
113:常驻存储器
114:高速缓存
115:实体信息指引目录
116:实体信息
117:映像信息指引目录
118:映像信息单元
120:非易失性存储器
122:实体信息区块
124:映像信息单元
126:数据单元
200:架构
210:高速缓存
212:全局指引目录
212a、212b、212x:全局指引目录中的项目
214:快取实体信息表
216:数据块
218:数据块项目
218a、218b、218c:数据块项目中的位字段
220:非易失性存储器
222、224:实体信息区块
222a、222b、224a、224b:实体信息页
226:数据区块
226a、226b、228a、228b:数据页
300、400、500:程序
302、304、306、308、310、312、314、402、404、406、502、504:步骤
具体实施方式
图1绘示依据一或多个实施例,使用快取实体信息表实体的系统100的例子。系统100包括存储装置110以及与其耦接的主机装置130。存储装置110包括装置控制器112以及非易失性存储器120。装置控制器112包括常驻存储器(resident memory)113以及高速缓存(cache memory)114。常驻存储器113存储实体信息指引目录(directory)115以及映像信息指引目录117。高速缓存114存储实体信息单元116以及映像信息单元118。非易失性存储器120存储实体信息区块122、映像信息单元124、以及数据单元126。主机装置130包括处理器132。在一些实施例中,主机装置130亦包括高速缓存134,高速缓存134存储实体信息单元136。
装置控制器112是微处理器或特殊应用微控制器。在一些实施例中,装置控制器112是针对存储装置110的存储器控制器。以下段落中描述的各式技术是基于以装置控制器112作为存储器控制器的实施例。然而,在一些实施例中,装置控制器112包含于主机装置130中,而存储装置110包括非易失性存储器120。在此情况下,装置控制器112作为主机控制器。以下段落中描述的各式技术亦适用于此实施例,例如,以装置控制器112作为主机控制器。
处理器132用以执行指令并处理数据。指令及/或数据存储在非易失性存储器120当中,例如数据单元126里。在一些实施例中,处理器132是微处理器或特殊应用微控制器。
非易失性存储器120用于指令及/或数据的长期存储。在一些实施例中,非易失性存储器120是闪存(flash memory),例如与非门(NAND)闪存装置或或非门(NOR)闪存装置。在一些实施例中,非易失性存储器120可以是其它类型的非易失性存储器,例如相变化存储器(phase change memory,PCM)装置。在一些实施例中,存储装置110包括多个非易失性存储器装置120。
在一些实施例中,例如当非易失性存储器120是闪存或PCM装置时,非易失性存储器120中的数据单元126对应于存储器区块。在此情况下,擦除操作是以存储器区块为单位来执行,存储器区块包括多个存储器页。举例来说,在部分实施例中,存储器装置120是大小以8千兆位组(gigabytes,GB)为数量级的NAND闪存装置。NAND闪存装置包括2048个存储器区块。各存储器区块包括256个页,各个页的大小是以16千字节(kilobytes,Kb)为数量级。
页为存储器执行读取及写入操作时的基本单位。一个页包括用以存储数据的数据区域以及用以存储诠释数据(metadata)的小型备用(spare)带外区(out-of-band area,OOB)。在部分实施例中,取决于对页或对应于存储器区块中其他页所执行的操作,页的实体条件(physical condition)将随之改变。如下所述,页的实体条件反映了页的实体信息,其存储在实体信息区块中。页的实体信息可例如包括:页被擦除的次数、用以检查数据正确性的错误更正码(error correction code,ECC)信息、页的健康状态、页的有效性状态、以及对页所设定的阈值电压。在部分实施例中,页的有效性状态可以是两个不同状态(例如有效及无效)的其中之一。在此情况下,当数据被写入页中,页的状态会改变成有效。当页中的数据已过时(out of date)或损毁,页的状态为无效。然而,在一些其他的实施例中,页的有效性状态可以是三个不同状态中的其中一个。在此情况下,除了上述的有效及无效状态,页亦可以处于闲置(free)/擦除(erased)状态。当没有数据被写入页当中,页处于擦除状态。当对擦除页执行写入操作,则页的状态将改变为有效。
在部分实施例中,针对非易失性存储器120中所有存储器单元的实体信息被共同地存在实体信息区块122当中。在部分实施例中,实体信息区块122是那些包括存储关于数据单元126的实体信息的页的存储器区块。在本文中,存储器单元是存储器装置120中的合适部分。举例来说,存储器单元可以是页、子页(例如一个字符(word))或是存储器区块。以下段落描述的技术是以页作为单位的存储器单元来实现。然而,本发明的技术亦适用于以存储器区块、子页或存储器装置120中其他合适部分为单位的存储器单元来实现。
页中的实体信息122包括多个项目,各项目提供数据单元126一页的实体信息。在部分实施例中,项目可用来识别关联的数据单元,并包括关于关联页的实体状态的一字节(byte)的信息。举例来说,页的字节项目所提供的关联页的实体信息如表1所示。
表1
在部分实施例中,实体信息区块122被分成多个部分,这些部分称为数据块(chunk)。在此情况下,实体信息是以数据块为单位而传递于实体信息区块122和高速缓存114。在部分实施例中,包含于一数据块中的实体信息对应于非易失性存储器120的一存储器区块。举例来说,在部分实施例中,存储器装置120包括2048个存储器区块,各存储器区块包括256个页。实体信息区块122的总大小(包括针对各数据页的1-字节项目)为2048*256*1字节=524kB。对应存储器区块的一个数据块包括针对256个页的256-字节的项目。故在此情况下,实体信息区块122包括2048个数据块,各数据块的大小为256字节。
在部分实施例中,数据块表示实体信息区块122中的不同部分,使得数据块中的实体信息对应于非易失性存储器120中的不同区段,例如页或子页。举例来说,在部分实施例中,各数据块的大小为1kB、2kB或一些其他合适的大小。
映像信息单元124存储将逻辑存储器地址(例如,由主机装置130所存取的存储器地址)映像至物理存储器地址的信息(例如,非易失性存储器120中存储数据单元126的地址)。映像信息单元124可以是任何适合的数据结构,例如表(table)、阵列(array)或其他类似者。在以下段落中将进一步描述,全局指引目录中的项目包括针对实体信息区块122的辨识码以及实体信息区块在非易失性存储器120中所存放的位置(例如,物理存储器地址)。新增或替代地,在部分实施例中,存放实体信息区块的位置是高速缓存114或高速缓存134中的位置。
在部分实施例中,装置控制器为高速缓存控制器,其中,非易失性存储器120例如是闪存装置。装置控制器112用以将处理器132存取的部分编程脚本或数据从非易失性存储器120加载(load)至高速缓存114。装置控制器112亦用以将实体信息区块122的数据块加载至高速缓存114,例如,加载至实体信息单元116中。装置控制器112可利用存储在常驻存储器113中的信息(例如,实体信息指引目录115及/或映像信息指引目录117)将实体信息区块122的数据块加载至实体信息单元116,细节将于后述。
在部分实施例中,高速缓存114包括SRAM、DRAM、RRAM或其他类似的RAM存储器装置其中之一,其较非易失性存储器120快速,但容量较非易失性存储器120小。除了存于高速缓存中的编程脚本及/或数据,高速缓存114的容量并不足以存放非易失性存储器120中所有存储器单元的所有实体信息区块。因此,高速缓存中的实体信息单元116存储实体信息区块122的子集合。举例来说,实体信息单元116中的快取实体信息表存储多个数据块,这些数据块为全数实体信息区块122中的一子集合。考虑上述例子,在部分实施例中,实体信息区块122的总大小为524kB,其分割成2048个数据块。在此例子中,实体信息单元116中的快取实体信息表存储了全数2048个数据块中的64个数据块。
在部分实施例中,常驻存储器113中的实体信息指引目录115以及映像信息指引目录117形成闪存转换层(Flash Translation Layer,FTL),其例如将主机装置130存取的编程脚本及/或数据的逻辑存储器地址映像至非易失性存储器装置120上数据单元126的实体地址。
在部分实施例中,当存取一逻辑地址(例如,主机装置130提出读取或写入要求),装置控制器会检查映像信息单元118以决定非易失性存储器120中对应的实体地址。映像信息单元118会暂存一部分逻辑地址对实体地址的映像关系,而映像信息单元124存储完整的逻辑地址对实体地址的映像关系。若在映像信息单元118中找到所要求的逻辑地址的项目,装置控制器112将从此项目取得对应的实体地址。另一方面,若在映像信息单元118中找不到所要求的逻辑地址的项目,装置控制器112将查找(look up)常驻存储器中的映像信息指引目录117,以将项目从映像信息单元124加载至高速缓存114中的映像信息单元118。
基于从项目中所取得的实体地址,装置控制器112将针对对应此实体地址的数据单元查找实体信息。装置控制器112会先检查实体信息是否存在于高速缓存114中的实体信息单元116,若存在的话,装置控制器112将从实体信息单元116读取实体信息。另一方面,若装置控制器112判断实体信息并不存在于高速缓存114中的实体信息单元116,则装置控制器112将查找实体信息指引目录,以决定目标实体信息区块122在非易失性存储器120中所存放的位置。装置控制器112可将目标实体信息区块122从非易失性存储器120读取至高速缓存中的实体信息单元116,并接着从加载至实体信息单元116的目标实体信息区块122中存取实体信息。
通过上述方式,实体信息指引目录115、映像信息指引目录117或两者,是作为全局指引目录。实体信息指引目录115及/或映像信息指引目录117例如是以表、阵列或其他类似者的合适数据结构的形式来保存。以下段落将进一步描述,实体信息指引目录115中的项目是包括针对实体信息区块的辨识码以及非易失性存储器120中实体信息区块所存放的物理存储器地址。
在部分实施例中,映像信息单元118中的项目为映像信息单元124中项目的子集合。在部分实施例中,映像信息单元118中的项目复制(replicate)了映像信息单元124中的项目。类似地,在部分实施例中,实体信息单元116中的项目为实体信息区块122的子集合。在部分实施例中,实体信息单元116中的项目复制了所有的实体信息区块122。
在部分实施例中,实体信息区块122的子集合是保存于主机装置130中的高速缓存134,新增或替代地,保存于实体信息单元116中的存储媒体。在此实施例中,举例来说,实体信息单元136存储对应实体信息区块122的一子集合的数据块。除了管理存储在实体信息单元116中的实体信息数据块,装置控制器112亦用以管理存于实体信息单元136中的实体信息数据块。
在部分实施例中,装置控制器所执行的操作可以是不同的,取决于是否服务来自主机装置130的读取或写入要求,或是装置控制器112是否执行垃圾回收(garbagecollection)操作。举例来说,在部分实施例中,装置控制器112从主机装置130接收读取要求。装置控制器112执行逻辑对实体的地址查找,以决定对应来自主机装置130的要求所指示的逻辑地址的实体地址。装置控制器112先是检查高速缓存114中的映像信息单元118是否存在逻辑对实体的地址映像。若存在,装置控制器112将从映像信息单元118读取对应逻辑地址的实体地址。
另一方面,若映像信息单元118中不存在逻辑对实体地址的映像,装置控制器112将查找映像信息指引目录117,以决定非易失性存储器120中映像信息单元124中的逻辑对实体地址映像的位置。一旦决定了位置,装置控制器112将把逻辑对实体地址的映像从映像信息单元124加载至映像信息单元118,并从映像信息单元118读取对应逻辑地址的实体地址。
利用以上述方式读取的实体地址,装置控制器112将针对存储器单元查找对应的实体信息。在部分实施例中,实体信息是取自高速缓存114中的实体信息单元116。在一些其他的实施例中,可基于实体信息指引目录115中的项目来查找实体信息区块112的位置,并将对应的实体信息区块122加载至实体信息单元116,以取得实体信息。在部分实施例中,装置控制器112可从实体信息中取得针对存储器单元的一或多个阈值电压(Vth)设定或错误更正码(ECC)设定。装置控制器112可利用实体地址来存取存储器单元,以读取所要求的数据,并利用阈值电压电平来执行读取操作,并对存储在存储器单元中的内容采用ECC设定。
作为另一个例子,在部分实施例中,装置控制器112从主机装置130接收写入要求。一旦收到此写入要求,装置控制器112将针对欲写入的更新数据,配置(allocate)一空白存储器单元(例如页)。利用空白存储器单元的实体地址,装置控制器将例如通过上述的方式,查找出对应的实体信息。在部分实施例中,通过查找实体信息,装置控制器112将取得针对存储器单元的ECC设定。
装置控制器112可将欲写入的数据编程至空白的存储器单元。在写入数据后,装置控制器112将更新存储器单元的对应实体信息,并将其记录为有效。装置控制器112亦可查找对应于读取要求中一逻辑地址的原始实体地址(例如,利用前述的映像信息118及/或映像信息指引目录117)。装置控制器112可取得对应原始实体地址的实体信息,并更新实体信息以将原始实体地址的内容标记为无效。装置控制器112亦可更新映像信息单元118中的项目,以将新编程的存储器单元的实体地址映像(mapping)至写入要求中所指示的逻辑地址。可对映像信息单元124作类似的更新,以将新编程的存储器单元的实体地址映像至写入要求中所指示的逻辑地址。
作为另一个例子,在部分实施例中,装置控制器112会执行垃圾回收操作。在此情况下,装置控制器112可选择欲被执行垃圾回收的存储器单元。基于所选的存储器单元的实体地址,装置控制器112可查找出对应此存储器单元的实体信息。在部分实施例中,装置控制器112可从实体信息中获悉针对存储器单元的阈值电压(Vth)设定或ECC设定,及/或基于实体信息来判断存储器单元的数据内容的有效性状态。
装置控制器112可将非易失性存储器120中的空白存储器单元(即,用来写入所选存储器单元的数据内容的存储器单元)配置为垃圾回收程序的一部分。利用空白存储器单元的实体地址,装置控制器将例如通过上述方式查找出对应的实体信息。在部分实施例中,装置控制器112可通过查找实体信息,以取得针对存储器单元的ECC设定。
装置控制器112可从所选存储器单元中读取有效数据,并将此数据写入空白存储器单元中。在将有效数据传递至空白数据单元后,装置控制器112将更新对应所选存储器单元的实体信息,以将原始实体地址的内容标记为无效。装置控制器112亦可更新映像信息单元118中的项目,以将新编程的存储器单元的实体地址映像至先前与被选作垃圾回收的存储器单元的逻辑地址。可对映像信息单元124的项目作类似的更新,以将新编程的存储器单元的实体地址映像至先前关联至所选存储器单元的逻辑地址。
图2绘示依据一或多个实施例,用以管理高速缓存210和非易失性存储器220之间的存储器单元的实体信息的例示架构200。在部分实施例中,高速缓存210类似于高速缓存114,而非易失性存储器220类似于非易失性存储器120。
高速缓存210包括全局指引目录212以及快取实体信息表214。快取实体信息表214存储多个数据块,例如数据块216。各个数据块包括多个项目,例如数据块项目218。
非易失性存储器220存储多个实体信息区块,像是实体信息区块222及224,并存储多个数据区块,例如数据区块226及228。各个实体信息区块存储多个实体信息页,例如存储在实体信息区块222中的实体信息页222a以及222b,以及存储在实体信息区块224中的实体信息页224a以及224b。各个数据区块存储多个数据页,例如数据区块226的数据页226a及226b,以及存于数据区块228中的数据页228a及228b。
如图所示,各个实体信息页,例如222a、222b、224a、224b,具有多个项目,各项目提供针对一数据页的实体状态信息(例如,阈值电压设定、健康状态、或有效性状态的其中一或多者)。各个数据页,例如226a、226b、228a、228b,包括用以存储内容(例如,编程脚本及/或数据)的数据部分,以及存储关于页的实体信息或其他类似者的诠释数据部分。
在部分实施例中,全局指引目录212类似于前述的实体信息指引目录115。装置控制器(如装置控制器112)可利用全局指引目录212来指示对应实体信息区块(如实体信息区块222及224)的数据块的位置。
在本文中,实体信息区块是非易失性存储器220中包括实体信息页(像是实体信息页222a、222b、224a、224b)的存储器区块。数据区块是非易失性存储器220中包括数据页(像是数据页226a、226b、228a、228b)的存储器区块。如全局指引目录212中的项目所示,非易失性存储器220包括X个(X为>0的整数)实体信息区块0、1、...至X-1。
全局指引目录212包括X个项目,各项目可指示非易失性存储器220中实体信息区块的位置,或是指示包括实体信息区块的数据块的位置。举例来说,全局指引目录212中的项目212a提供了关于对应实体信息区块0的数据块的位置信息;全局指引目录212中的项目212b提供了关于对应实体信息区块1的数据块的位置信息;全局指引目录212中的项目212x提供了关于对应实体信息区块X-1的数据块的位置信息。
图2绘示的实施例中全局指引目录212仅存储在高速缓存210当中。然而,在部分实施例中,全局指引目录的副本(copy)亦存储在非易失性存储器220当中。新增或替代地,在部分实施例中,全局指引目录的一部分可存储在高速缓存210,而剩下部分的全局指引目录可存储在非易失性存储器220。在部分实施例中,全局指引目录212可仅存储在非易失性存储器220。在此情况下,装置控制器112可从全局指引目录在非易失性存储器220中的位置,对全局指引目录进行存取。
在部分实施例中,快取实体信息表214类似于实体信息单元116中的快取实体信息表。快取实体信息表214存储数据块的子集合,此子集合对应于存储在非易失性存储器220中的实体信息区块的一部分。举例来说,非易失性存储器220包括X个实体信息区块,例如实体信息区块222及224。快取实体信息表214存储Y个数据块0、1...至Y-1(其中Y为整数,0<Y<X),此Y个数据块包括实体信息的副本,其中此实体信息存储在所述X个实体信息区块中的一子集合当中。实体举例来说,如图2所示,快取实体信息表214包括针对数据块216的项目。
各个数据块对应一或多个实体信息区块,例如实体信息区块222及224中的一或多者。如图2所示,各个数据块存储针对Z个(其中Z为>0的整数)实体信息页(例如实体信息页222a、222b、224a、224b的一或多者)的项目(在此例子的实施例中,一个存储器单元指的是一个页)。
数据块中的各个数据块项目(例如实体信息页)包括多个位,这些位提供关于对应数据页的实体状态。在部分实施例中,数据块项目中的实体状态信息包括对应页的健康状态以及此页中信息的有效性。举例来说,如前所述,在部分实施例中,各个数据块项目为1个字节。如图2所示,数据块项目218作为数据块216中多个项目的其中之一,并指示了由数据块项目字节的位所提供的实体信息。由218a所表示的两个位,如位5及4,提供了对应页的健康状态信息。如图所示,两位218a所表示的健康状态信息可指示G/N/P/R,其分别对应:页的健康状态良好(good)、页的健康状态普通(normal)、页的健康状态不良(poor)、以及页需被汰换(retired)的讯息。两位218a的不同值可以表示不同的健康状态。
在本文中,健康状态是指示用来维持页中数据的错误更正码(ECC)的类型。举例来说,健康状态良好代表页的位错误率(Bit Error Rate,BER)是低的。在此情况下,装置控制器可使用适用于低BER的ECC(例如伯斯-乔赫里-霍克文黑姆(Bose-Chaudhuri-Hocquenghem,BCH)码。健康状态普通指的是页的BER落在中间范围。在此情况下,装置控制器可使用适用于中间范围BER的ECC,例如低密度同位查核(Low-Density Parity-Check,LDPC)码。健康状态不良指的是页的BER是高的。在此情况下,装置控制器可使用适用于高BER的ECC,像是合适的独立硬盘冗余阵列(Redundant Array of Independent Disks,RAID)码。健康状态为需汰换指的是页的BER高于一预选的高阀值。在此情况下,装置控制器可汰换此页,例如对此页编程虚拟数据(dummy data)。
在部分实施例中,针对不同健康状态条件的BER阀值为预先选择,并在存储器装置的制造过程中被编程写入。举例来说,非易失性存储器芯片的制造商可在存储装置(如存储装置110)中包括一ECC电路,以处理存储器页中的错误位。在部分实施例中,针对每1kB的数据,ECC电路可提供至多40位错误更正。在此情况下,可设定BER<20位/1kB为低BER(指示健康状态良好);BER<30位/1kB为中间范围BER(指示健康状态普通);BER<40位/1kB为高BER(指示健康状态不良);BER>40位/1kB为页必需汰换。
通过如上述方式检查页的健康状态,装置控制器可依需要而动态地改变对页所采用的ECC。页(或存储器区块)的健康状态可随时间改变,例如,页在经过多个擦除/编程循环后,其健康状态会变得较弱。举例来说,页的BER在经过10个擦除/编程循环后可能是2位/1kB,但在经过2000个擦除/编程循环后,其BER将增加至20位/1kB。作为页数据读取的一部分(例如执行垃圾回收操作时)实体,装置控制器在存取页的实体信息时可更新健康状态,因此,当接下来要把数据写入此页时,装置控制器可采用合适的错误保护等级。
数据块项目218的四个位,例如图2218b中所表示的位3、2、1、0,指示对应页的有效性状态。如图所示,位3、1、0被设定成表示页为有效的位值V,而位2被设定成表示页为无效的I。在部分实施例中,V=1且I=0;在其他实施例中,V=0且I=1。在本文中,由218b所表示的有效性状态位可指示页数据在实体空间(例如,存储在非易失性存储器220中的副本)中是否为有效。一旦数据页的内容在逻辑空间(例如,高速缓存210中的数据页副本)中被更新,对应的实体信息页中的有效性状态将被更新,以表示实体空间中的数据页的内容为无效。在此情况下,在从高速缓存中移除数据页的副本之前,装置控制器将对非易失性存储器220写入数据页的新副本的更新内容,并将先前存储在非易失性存储器之中的副本设定为无效。在对高速缓存210擦除之前,装置控制器会参照实体信息页中的有效性状态,以在非易失性存储器220中的对应数据页存入有效内容。
剩下的两个位,如218c所表示的位7、6,可提供对应页的读取阈值电压(Vth)设定的信息。如图所示,两位的阈值电压设定信息可指示值0、1、2或3的其中之一,以分别表示:最低电平的读取阈值电压、电平较普通等级低的读取阈值电压、普通电平的读取阈值电压、和电平较普通等级高的读取阈值电压。两位218c的不同值可表示不同电平的阈值电压。
本文中,阈值电压(Vth)设定218c可用来指示装置控制器需对存储器页施加多少电压以读取页的内容。当存储器页被编程,阈值电压在对应的实体信息页中会初始地被设定成默认值,例如电平2(普通)。在执行区块擦除操作(存储器区块中的所有存储器页一起被擦除)之后,当前的值将被重置。
在一些情况中,在读取操作过程中欲施加至一存储器页的实际阈值电压会变得和编程在实体信息页中的默认值不同。举例来说,普通电平的Vth可能会因为维持(retention)因素(相当于编程至存储器页的数据的老化程度函数,例如,一或多个已编程位可能因所施加的电压而变动,造成不正确的读取)而变得不正确,例如过高。在此情况下,Vth设定将从电平2(普通)更新为电平1(较低),甚至或电平0(最低)。因此,在部分实施例中,装置控制器会在数据块项目218的2-位Vth字段218c中,将Vth设定从电平2(普通)更新为电平1或电平0。
新增或替代地,在对存储器页作多次读取后,字段218c中的预设Vth值(电平2或普通)可能会因为读取扰动(read disturbance)而变得不正确,例如过低。以默认值来读取此存储器页将可能产生位错误。在此情况下,装置控制器会在数据块项目218的2-位Vth字段218c中,将Vth设定从电平2(普通)更新至电平3(较高)。因此,装置控制器将以较高电平的Vth来读取存储器页,以降低位错误率。
新增或替代地,在对当前或邻近的字线编程后,字段218c中的预设Vth值(电平2或普通)可能会因编程扰动(program disturbance)而变得不正确。以默认值来读取此存储器页可能会产生位错误。在此情况下,装置控制器可例如通过参照表2所示的编程次序表,在2-位Vth字段218c中,将Vth设定从电平2(普通)更新成不同的电平。装置控制器接着会以字段218c中所指示的更新后Vth电平来读取存储器页,以降低位错误率。
表2
利用上述方式检查页的阈值电压(Vth)设定,装置控制器可在读取操作过程中,视需要而动态地改变施加至页上的阈值电压。如前所述,页的阈值电压可能随时间或因重复的编程操作而改变。在读取页数据、编程字线的过程中存取页的实体信息,或基于页的老化程度(age)存取页的实体信息,装置控制器可更新Vth设定,因此,当接下来要从页中读取数据时,装置控制器可采用准确的Vth电平。
数据块项目218中的信息亦可表示非易失性存储器220中实体信息区块的实体信息页的各项目信息。举例来说,数据块项目218中表示阈值电压设定、健康状态或有效性状态信息的位是类似于实体信息页222a、222b、224a或224b的各项目中表示阈值电压设定、健康状态或有效性状态信息的位。
在部分实施例中,除了阈值电压设定、健康状态或有效性状态,数据块项目中的实体状态还可包括其他信息。举例来说,数据块项目中的实体信息可包括对页的擦除计数、编程计数或读取计数,其分别表示页已被擦除、编程或读取的次数。
如前所述,在部分实施例中,在数据页被加载高速缓存210后,数据页的实体信息会改变(例如,针对读取或写入操作)。举例来说,装置控制器(如装置控制器112)一旦对页作存取,将判断出数据页的阈值电压设定、健康状态及/或有效性已经和实体对应数据块项目所指示的实体信息变得不同,其中这些对应的数据块项目是存储在快取实体信息表214当中。在此情况下,装置控制器214将更新对应数据块项目中的实体信息。装置控制器亦可将包括更新后数据块项目的关联数据块在快取实体信息表214中标记成已使用(dirty)的。
在部分实施例中,快取实体信息表214的数据块中的项目各自具有一关联的已使用标记(dirty flag),例如,以一位的值来指示数据块从非易失性存储器220被加载至快取实体信息表214后,此数据块中关联的实体信息页的实体信息是否已经改变。
在部分实施例中,数据块包括一全局已使用标记。当实体信息页中的实体信息被更新,装置控制器将对包括此实体信息页的数据块设定一已使用标记(在一些实施例中,例如将位值设成1;在其他实施例中,例如将位值设成0),以指示此数据块包括至少一个已更新的数据块项目(如实体信息页)。
快取实体信息表214的数据块的已使用标记可用来指示快取实体信息表214的数据块中的实体信息内容是不同于存储在非易失性存储器220的对应实体信息区块中的实体信息内容。以下将进一步说明,当数据块从快取实体信息表214被移除(例如使空间变为可供加载不同的数据块),若此数据块已被设定已使用标记,装置控制器将把此数据块中的实体信息写回非易失性存储器220中的实体信息区块。
在部分实施例中,当装置控制器(如装置控制器112)接收例如来自主机装置130的要求以存取数据页中的数据,装置控制器将利用映像信息指引目录117执行地址转换,以设置(locate)非易失性存储器220或高速缓存210中的数据页(例如在数据区块中)来服务此要求。作为服务此要求的一部分,装置控制器会存取关联的实体信息页以判断页的阈值电压设定、页的健康状态及/或页的信息是否有效。装置控制器会先检查快取实体信息表214,判断关联于此要求的数据页的目标实体信息页是否存在于快取实体信息表214的数据块中的项目。若目标实体信息页存在于快取实体信息表214的数据块,实体信息将直接从快取实体信息表214中的数据块项目被存取。
另一方面,若目标实体信息页不存在于快取实体信息表214当中,装置控制器将查找全局指引目录212中的项目,以判断非易失性存储器220中存放关联实体信息页的数据块或实体信息区块的位置。一旦从全局指引目录212判断出在非易失性存储器220中的位置,装置控制器将把实体对应实体信息区块的数据块加载至快取实体信息表214中的位置,其中此数据块是包括目标实体信息页。举例来说,在部分实施例中,一要求页(request page)的实体信息是包含于实体信息区块224。通过查找在全局指引目录212中实体信息区块224的项目,装置控制器可判断出非易失性存储器220中实体信息区块224的位置。装置控制器可自全局指引目录212所指示的非易失性存储器220中实体信息区块224的位置,对实体信息区块224作存取,并将包括实体信息区块224的数据块加载至快取实体信息表214的项目。装置控制器可接着从最近加载的数据块中的数据块项目查找目标实体信息页。
在部分实施例中,装置控制器可将既存数据块从快取实体信息表214中剔除(evict),以腾出空间从非易失性存储器220加载新的数据块。这可以例如是当快取实体信息表214已满的情况。装置控制器可利用合适的剔除策略来选择欲剔除的既存数据块。举例来说,装置控制器可利用最近最少使用替换算法(least recently used,LRU)策略、分段式LRU阵列快取(segmented LRU array cache)策略或其他类似者,从快取实体信息表214中选出欲剔除的数据块。
若被选作欲剔除的数据块被加载至快取实体信息表214后皆未被更新,例如,数据块的已使用标记并未被设定,则此数据块将单纯地被替换成新的数据块,而不会有进一步操作。另一方面,若被剔除的数据块有被设定已使用标记(表示数据块被加载至快取实体信息表214之后,至少有一数据块项目包括已更新的实体信息),则在此数据块被替换成新数据块之前,此数据块中的实体信息将被写回至非易失性存储器220当中。
装置控制器可将数据块中的实体信息写入非易失性存储器220中的对应实体信息区块。在部分实施例中,装置控制器会在非易失性存储器220中的新位置创建实体信息的新副本,并将数据块内容写入新的实体信息。装置控制器接着会更新针对实体信息区块的全局指引目录212中的项目,以指向(point to)非易失性存储器220中的位置。
在这些操作之后,对应于实体信息区块的实体数据块将被加载至快取实体信息表214,并被存入先前被剔除数据块所占据的项目当中,其中,此数据块是包括目标实体信息页。
图3绘示依据一或多个实施例,查找存储器装置中的存储器单元的实体信息的程序300的一例。在部分实施例中,程序300是由装置控制器(例如装置控制器112)来执行,以在非易失性存储器120和高速缓存114中的实体信息单元116之间移转对应于实体信息区块122的数据块(或相当于在非易失性存储器220和高速缓存210的快取实体信息表214之间移转对应于实体信息区块222或226的数据块)。因此,以下段落将基于装置控制器112以及系统100来说明程序300。然而,在其他实施例中,程序300可由其他装置或系统来执行。
程序300始于步骤302,也就是在发动对存储器单元的实体信息进行存取时。举例来说,在部分实施例中,装置控制器112对存储器区块(像是存储器区块226或228其中之一)执行垃圾回收,并存取对应存储器区块中的一或多个数据页(像是数据页226a及226b,或是数据页228a及228b)以检查其有效性,并在擦除存储器区块之前搬移(migrate)数据。在其他一些实施例中,装置控制器112从主机装置130接收要求以存取数据页(例如对数据页作读取或写入)。在其他情况中,装置控制器112可存取数据页的实体信息,以例如决定页的阈值电压设定、健康状态及/或有效性信息。因此,装置控制器可发动对目标实体信息页实体的存取,例如实体信息页222a、222b、224a、224b其中之一,其中此目标实体信息页是包括所要求的数据页的实体信息。
在步骤304,将判断目标实体信息是否存在于高速缓存。举例来说,装置控制器112可检查高速缓存中的快取实体信息表(例如高速缓存210中的快取实体信息表214),以判断包括对应于目标实体信息页的项目的数据块是否存在于快取实体信息表当中。
若在步骤304判断出目标实体信息不存在于高速缓存当中,则在步骤306,查找具有目标实体信息的数据块在非易失性存储器中的位置。举例来说,若装置控制器112判断出具有目标实体信息页的数据块不存在于快取实体信息表214当中,则装置控制器将存取全局指引目录212。通过检查全局指引目录212中的项目,例如项目212a、212b或212x,装置控制器112将判断出非易失性存储器220中包括目标实体信息页的实体信息区块、实体信息区块的位置、或包括目标实体信息页的实体信息区块的数据块。
在步骤308,将判断高速缓存中是否有可用的空间以供加载具有目标实体信息的数据块。举例来说,一旦装置控制器112通过查找全局指引目录212而判断出包括目标实体信息页的一实体信息区块、或此实体信息区块的一数据块在非易失性存储器220中的位置实体,装置控制器112接着将把数据块加载至快取实体信息表214中。
为了将数据块加载至快取实体信息表214当中,装置控制器112会检查快取实体信息表214中是否有任何可用的空间以加载此数据块。若快取实体信息表214已满,装置控制器112将检查快取实体信息表中活动(active)的数据块的已使用标记,以判断是否有任何活动的数据块是未使用(clean)的。若有任何活动的数据块是未使用的,装置控制器112将单纯地对未使用的数据块所占据的空间加载具有目标实体信息页的新数据块,以取代此未使用的数据块。
若在步骤308判断出高速缓存中并没有空间可供加载具有目标实体信息的数据块,则在步骤310,既存数据块将从高速缓存中被选择并被冲出(flushed)。举例来说,在部分实施例中,装置控制器112会判断出并没有活动的数据块(例如快取实体信息表214中的数据块)是未使用的,像是所有数据块的已使用标记皆被设定。在此情况下,装置控制器112将利用合适的剔除策略,从多个活动的数据块中选择剔除其一。在部分实施例中,所选的数据块是已使用的,例如,此数据块被加载至高速缓存后,此数据块中的一或多个项目的实体信息已被更新。因此,在将所选的数据块替换成欲从非易失性存储器加载的数据块之前,装置控制器112会先将所选已使用数据块中的实体信息写回非易失性存储器220中。在部分实施例中,可更新多个数据块。例如,若各个数据块的大小为1kB,则一个16kB的页可更新16个数据块。在此情况下,多个数据块可被冲出高速缓存以腾出可用空间。
如前所述,在部分实施例中,装置控制器112可针对非易失性存储器220中对应所选数据块的实体信息页选择一新位置,并将所选数据块的信息内容从高速缓存210提交(commit)至非易失性存储器220中的新实体信息页当中。接着,装置控制器112将针对全局指引目录212中的对应实体信息页更新位置,以指向非易失性存储器中实体信息页的新位置。
在部分实施例中,装置控制器112可通过检查全局指引目录212中的项目,以查找实体信息区块在非易失性存储器220中的位置,其中此实体信息区块包括对应于所选数据块的实体信息页实体。接着,装置控制器112可在非易失性存储器220中指示的位置对此实体信息页进行存取,并将此实体信息页的内容以来自高速缓存210的所选数据块的信息进行覆写实体。
一旦在步骤310将所选数据块从高速缓存写回非易失性存储器,或是在步骤308判断出高速缓存有可用空间,则在步骤312,具有目标实体信息的数据块将从非易失性存储器加载至高速缓存。举例来说,在一些实施例中,装置控制器会在步骤308判断出快取实体信息表214中的一或多个活动数据块是未使用的。在此情况下,装置控制器将选择一未使用的数据块,以用来跟欲从非易失性存储器加载的数据块作替换。或者,所选数据块的实体信息在被提交至非易失性存储器之后,此所选数据块可用来跟欲从非易失性存储器加载的数据块作替换。在另一情况中,装置控制器112可将包括目标实体信息页的实体信息区块、或是此实体信息区块的数据块,实体自非易失性存储器加载至快取实体信息表214中的选定空间中。
在步骤312将具有目标实体信息的数据块从非易失性存储器加载至高速缓存后,或是在步骤304判断出针对存储器单元的目标实体信息存在于高速缓存中,则在步骤314,从被加载至高速缓存的数据块中存取存储器单元的目标实体信息。举例来说,在一些实施例中,装置控制器112在步骤304对快取实体信息表214作初始的查找之后,将判断包括目标实体信息页的数据块是否存在于快取实体信息表214当中。在此情况下,装置控制器112将从快取实体信息表214的对应数据块项目取得实体信息,并判断关联数据页的阈值电压设定、健康状态、有效性状态中的一或多者。
在部分实施例中,主机装置130中的实体信息单元136的容量较高速缓存中的实体信息单元116大。在此情况下,主机装置中的实体信息单元136将可在实体信息单元116容量不足时,缓存额外的实体信息页。若装置控制器112在步骤304对快取实体信息表214作初始的查找之后,判断实体信息单元116中(例如在快取实体信息表214中)并不存在包括目标实体信息页的数据块,且非易失性存储器120为忙碌中(busy),则装置控制器112将检查实体信息单元136中是否有可用的数据块。若此数据块存在于实体信息单元136中,装置控制器112将从主机装置130要求此数据块。
在其他实施例中,装置控制器112可将包括目标实体信息页的数据块从非易失性存储器220加载至快取实体信息表214当中,如步骤306~312所述。在此情况下,在把数据块加载至快取实体信息表214之后,装置控制器112可从快取实体信息表214中对应目标实体信息页的数据块项目取得实体信息,并判断关联数据页的阈值电压设定、健康状态、有效性状态中的一或多者。新增或替代地,装置控制器112可响应于针对信息的要求,对主机装置130发送实体信息。
在上述方式中,装置控制器112可通过将完整的实体信息存储在非挥发存储器中并将部分实体信息缓存在高速缓存中,以有效率地管理存储器单元的实体信息,并按需求在高速缓存和非易失性存储器之间作换进/换出。装置控制器可利用高速缓存中的快取实体信息表(其大小是远小于非易失性存储器中实体信息区块的整体大小),故可限制用来存储存储器单元的实体信息的高速缓存数量。装置控制器可利用全局指引目录,在快取实体信息表中的数据块和非易失性存储器中的实体信息区块之间传递实体信息。
图4绘示依据一或多个实施例,更新存储器单元的实体信息的程序400的一例。在部分实施例中,装置控制器112在存取存储器单元(例如存取数据页)时将执行程序400。因此,以下段落将基于装置控制器112以及系统100来说明程序400。然而,在其他实施例中,程序400可由其他装置或系统来执行。
程序400始于步骤402,也就是在对存储器单元查找实体信息时。举例来说,在部分实施例中,装置控制器112会对存储器区块(像是存储器区块226或228其中之一)执行垃圾回收,并存取对应存储器区块中的一或多个数据页(像是数据页226a及226b,或是数据页228a及228b),以检查其有效性以于擦除存储器区块之前搬移数据。在其他一些实施例中,装置控制器112会从主机装置130接收要求以存取数据页(例如对数据页作读取或写入)。在其他实施例中,作为响应所述要求或垃圾回收操作以对数据页作存取的一部分,装置控制器112将对页存取实体信息。
参考关于程序300的描述,在部分实施例中,装置控制器可存取快取实体信息表214中活动数据块中的项目(当中存有关于所要求的数据页的实体信息页)。在其他一些实施例中,在把对应的实体信息区块或是实体信息的数据块从非易失性存储器220加载至快取实体信息表214之后,装置控制器将存取实体信息。在此情况下,装置控制器是判断关联于所要求的数据页的实体信息页是不存在于快取实体信息表214当中。装置控制器可对全局指引目录212进行查找,以判断对应的实体信息区块或实体信息的数据块在非易失性存储器220中的位置。一旦判断出位置,装置控制器将把对应的实体信息区块或实体信息的数据块从非易失性存储器220加载至快取实体信息表214。
在步骤404,更新存储器单元的实体信息。举例来说,一旦对数据页读取或写入,装置控制器112将判断出此数据页的实体信息已经被改变。如前所述,在部分实施例中,实体信息包括页的阈值电压设定、健康装置或有效性状态。当执行读取或写入操作,装置控制器112可判断出错误位改变的数量,以更新页的健康状态。或者,一旦对页写入新数据,装置控制器112可将有效性状态设定为无效,以指示此页为已使用的,并指示存储在非易失性存储器中的对应页数据为无效,例如过期。因此,装置控制器112将更新对应数据块项目中的页的实体信息(例如,更新如数据块项目218所描述的一或多个位),其中,此数据块项目是在快取实体信息表214中的关联活动数据块当中项目实体项目。
在步骤406,对数据块设定已使用标记。举例来说,一旦更新快取实体信息表214中关联的活动数据块中对应目标数据页的数据块项目,装置控制器112将设定此数据块的标记位以指示此数据块是已使用的,例如指示此数据块中的一或多个数据块项目包括更新后的实体信息。因此,当从快取实体信息表214中移除此数据块,此数据块中的信息将被写回至非易失性存储器当中,如程序300以及以下段落所描述。
图5绘示依据一或多个实施例,将已使用数据块冲出快取实体信息表的程序500的一例。在部分实施例中,装置控制器112会在使快取实体信息表214有空间供数据块从非易失性存储器220加载时(如程序300的步骤310所描述)执行程序500。因此,以下段落是基于装置控制器112以及系统100来说明程序500。然而,在其他实施例中,程序500可由其他装置或系统来执行。
程序500始于步骤502,也就是在写回包含在已使用数据块中的更新后实体信息时。举例来说,当装置控制器112试图将实体信息区块或包括部分实体信息区块的数据块从非易失性存储器220加载至高速缓存210中的快取实体信息表214,装置控制器112判断出快取实体信息表214中并没有未使用的数据块,如程序300中的步骤308及310所述。因此,装置控制器将从快取实体信息表214选择欲剔除的已使用数据块,以腾出可用的空间,如步骤310所描述。装置控制器将把包含在已使用数据块中的实体信息写回非易失性存储器220中。
如前所述,在部分实施例中,装置控制器112会在非易失性存储器220中选择新的实体信息区块,并将所选已使用数据块的信息从高速缓存210提交至非易失性存储器220中的新实体信息区块。在此实施例中,装置控制器112会把全部的实体信息从快取实体信息表214中的数据块写回至非易失性存储器220的新实体信息区块中。接着,装置控制器112将更新全局指引目录212中对应实体信息区块的位置,以指向非易失性存储器中实体信息区块的新位置。
在部分实施例中,装置控制器112可通过检查全局指引目录212来查找对应所选已使用数据块的实体信息区块在非易失性存储器220中的位置。装置控制器112可存取非易失性存储器220中所指示的位置的实体信息区块,并将此实体信息区块的内容更新成来自高速缓存210的所选已使用数据块的信息。
在部分实施例中,装置控制器可将非易失性存储器中既存实体信息区块的完整信息更新成快取实体信息表214中数据块的实体信息内容。在其他一些实施例中,装置控制器112可辨识数据块中的已使用实体信息页,像是基于检查数据块项目的有效性状态位以辨识无效的实体信息页。在此情况下,装置控制器112仅会更新实体信息区块中的实体信息页,此实体信息页是对应快取实体信息表中数据块的已使用实体信息页。
在步骤504,对数据块复位已使用标记。举例来说,在把更新后的信息存入非易失性存储器220中的所选已使用数据块后,装置控制器112将复位快取实体信息表214中数据块的已使用标记。新的数据块接下来将从非易失性存储器220加载,以取代既存的数据块,如程序300的步骤312所描述。
本发明以及其他例子可由一或多个计算器程序产品来实现,例如,编码在计算器可读取媒体以供数据处理设备执行或控制其操作的计算器程序指令的一或多个模块。计算器可读取媒体可以是机器可读取的存储装置、机器可读取的存储基体(substrate)、存储器装置或其中一或多者的结合。「数据处理设备」一词涵盖所有用以处理数据的设备、装置以及机器,例如包括可编程的处理器、计算器或多个处理器或计算器。除了硬件,装置还可包括创造针对所述计算器程序的执行环境的程序代码,例如构成处理器韧体的程序代码、协议叠层(protocol stack)、数据库管理系统、操作系统或其中一或多者的结合。
系统可包含所有的设备、装置以及用以处理数据的机器,例如包括可编程的处理器、计算器或多个处理器或计算器。除了硬件,系统还可包括创造针对所述计算器程序的执行环境的程序代码,例如构成处理器韧体的程序代码、协议叠层、数据库管理系统、操作系统或其中一或多者的结合。
计算器程序(亦可被理解为程序、软件、软件应用、脚本(script)或字码)可被写入程任何形式的程序语言,包括编译语言或解释语言,并且能以任何形式配置,包括作为独立程序或模块、元件、子程序或其他适用于计算器环境的单元。计算器程序不一定要对应至文件系统中的档案。程序可以被存储在包存其他程序或数据(例如,存储在标记语言(markuplanguage)文件的一或多个脚本)的档案中的一部分,或是被存储在专用于所述的程序的单一档案中,或是被存储在多个协同(coordinated)档案中(例如,存储一或多个模块、子程序或部分字码)。计算器程序可配置在某一站点的一或个计算器上执行,或者在多个站点间分布并且通过通讯网络互连。
本发明所描述的程序及逻辑流程可被执行一或多个计算器程序的可编程处理器执行,以实现本文中所描述的功能。程序及逻辑流程还可由专用逻辑电路,例如现场可规划逻辑门阵列(Field Programmable Gate Array,FPGA)或特殊应用集成电路(ApplicationSpecific Integrated Circuit,ASIC)来实现。
适合执行机算机程序的处理器包括,举例来说,通用和专用微处理器以及任何种类的数字计算器的任何一或多个处理器。通常,处理器从只读存储器或随机存取存储器或二者中接收指令和数据。计算器的关键元件可包括用来执行指令的处理器以及用来存储指令和数据的一或多个存储器装置。通常,计算器还可包括用以存储数据的一或多个存储装置,例如磁盘、磁性光盘或光盘,或者,计算器可操作地耦接至一或多个存储装置,以实现数据从存储装置的接收、传送或收发。然而,计算器并不需具有这些装置。用以存储计算器程序指令以及数据的计算器可读取媒体可包括任何非易失性存储器、媒体以及存储器装置,例如包括半导体存储器装置,像是EPROM、EEPROM以及闪存装置;磁盘,像是内部硬盘或可移除式磁盘;磁性光盘;CD ROM以及DVD-ROM磁盘。处理器和存储器可实现为或是被整合为专用逻辑电路。
虽然说明书包括许多细节,但是它们不应该被解释为对所要求或可能要求的范围的限制,而是对针对具体实施方式的特征的描述。在本说明书中在单独的实施方式的情形中描述的某些特征还可以在单个实施方式中组合实施。相反地,在单个实施方式的情形中描述的各种特征也可以在多个实施方式中单独实施或实施为任何合适的子组合。此外,虽然上述特征被描述为以某些组合工作甚至初始地声明为如此,但是所要求的组合中的一或多个特征可以在一些情形中从组合中除去,并且所要求的组合可以涉及子组合或子组合的变化形式。类似地,虽然在附图中以特定次序描绘了操作,这应该不被理解为为了获得期望的结果而要求这样的操作以所示的特定次序或顺序次序执行,或要求所有示出的操作都被执行。
仅公开了一些例示和实现方式。基于已公开内容可以做出所描述的示例和实现方式的变化、修改和增强以及其他实现方式。
Claims (16)
1.一种管理存储器装置中的存储器单元的实体信息的方法,其特征在于,该方法包括:
接收一要求,以存取包括于该存储器装置的一存储器单元的实体信息,其中,该存储器单元的实体信息反映该存储器单元的实体条件,与存储于存储器单元的用户数据不同;
响应于接收该要求,判断该存储器单元的该实体信息在一高速缓存中的一窗体中是否可用,该窗体存储对应一全数的实体信息区块中一子集合的信息,该全数的实体信息区块包括该存储器装置中的多个存储器单元的实体信息;
当判断该存储器单元的该实体信息在该窗体中是可用的,从该窗体中存取该存储器单元的该实体信息;以及
当判断出该存储器单元的该实体信息在该窗体中是不可用的:
存取存在于该高速缓存中的一全局指引目录,该全局指引目录指示在一非易失性存储器中,存储该全数的实体信息区块的位置;
从该全局指引目录,判断存储着包括该存储器单元的该实体信息的一特定实体信息区块在该非易失性存储器中的一特定位置;
响应于该判断,将该特定实体信息区块从该非易失性存储器中的该特定位置加载至该窗体中,以及
从被加载至该窗体的该特定实体信息区块中存取该存储器单元的该实体信息。
2.根据权利要求1所述的方法,其特征在于,该窗体存储一或多个存储器数据块,各该存储器数据块包括一或多个项目,该一或多个项目存储着包含于该全数的实体信息区块的该子集合中的一实体信息区块的一或多个存储器单元的实体信息,
其中判断该存储器单元的该实体信息在该窗体中是否可用包括判断对应该特定实体信息区块的一存储器数据块是否存在于该窗体中,以及
其中该全局指引目录包括多个项目,以指示对应该全数的实体信息区块的一全数的存储器数据块在该非易失性存储器中所存储的位置。
3.根据权利要求1所述的方法,其特征在于,该窗体存储一或多个存储器数据块,各该存储器数据块包括一或多个项目,该一或多个项目存储着包含于该全数的实体信息区块的该子集合中的一实体信息区块的一或多个存储器单元的实体信息,以及
其中将该特定实体信息区块从该非易失性存储器中的该特定位置加载至该窗体包括:
自该非易失性存储器的该特定位置,存取对应该特定实体信息区块的一特定存储器数据块;以及
将该特定存储器数据块加载至该窗体。
4.根据权利要求3所述的方法,其特征在于,将该特定存储器数据块加载至该窗体包括:
辨识该窗体中欲剔除的一既存存储器数据块;
判断关联于该既存存储器数据块的一或多个存储器单元的实体信息是否有被更新;
当判断关联于该既存存储器数据块的该一或多个存储器单元的该实体信息并未被更新时,将该既存存储器数据块替换成该特定存储器数据块;以及
当判断关联于该既存存储器数据块的该一或多个存储器单元的该实体信息已被更新时:
从该全局指引目录判断对应于该既存存储器数据块的一第二实体信息区块在该非易失性存储器中的一第二位置,
响应于判断该第二位置,存取该非易失性存储器中的该第二实体信息区块,
辨识该第二实体信息区块中的一或多个存储器单元,该第二实体信息区块中的该一或多个存储器单元对应于关联具有更新后实体信息的该既存存储器数据块的该一或多个存储器单元;
将该第二实体信息区块中被辨识的该一或多个存储器单元的实体信息更新成来自该既存存储器数据块中对应存储器单元的该更新后实体信息,以及
将该既存存储器数据块以该特定存储器数据块取代。
5.根据权利要求4所述的方法,其特征在于,该窗体中的各存储器单元包括指示该存储器单元的该实体信息是否已被更新的一已使用标记,以及
其中判断关联于该既存存储器数据块的该一或多个存储器单元的该实体信息是否已被更新包括:
针对该一或多个存储器单元的每一者,检查一关联已使用标记的一状态;
当该关联已使用标记具有一第一值,判断该存储器单元的该实体信息已被更新;以及
当该关联已使用标记具有一第二值,判断该存储器单元的该实体信息尚未被更新。
6.根据权利要求4所述的方法,其特征在于,该窗体中的各存储器单元包括指示该存储器单元的该实体信息是否已被更新的一已使用标记,以及
其中将该第二实体信息区块中被辨识出的该一或多个存储器单元的该实体信息更新成来自该既存存储器数据块的对应存储器单元的该更新后实体信息包括:
响应于更新该第二实体信息区块中被辨识出的该一或多个存储器单元的该实体信息,清除关联于该窗体中对应存储器单元的一或多个已使用标记的值。
7.根据权利要求1所述的方法,其特征在于,更包括侦测存在于该窗体中的一或多个存储器单元的实体状态,以及
其中接收该要求以存取该存储器单元的该实体信息包括:
接收一要求以更新该存储器单元的该实体状态,
响应接收该要求以更新该存储器单元的该实体状态:
更新该窗体中关联于该存储器单元的一项目,该项目包括该存储器单元的该实体信息,以及
将关联于该项目的一已使用标记设成一第一值以指示关联于该项目的该存储器单元的该实体信息已被更新。
8.根据权利要求7所述的方法,其特征在于,对该一或多个存储器单元侦测该实体状态包括针对各该存储器单元检查一阈值电压设定、一健康状态或一有效性状态至少其一,以及
其中更新该窗体中关联于该存储器单元的该项目包括更新包含于该项目中的一或多个位,该一或多个位表示以下至少其一:针对该存储器单元的一阈值电压设定、针对该存储器单元的一健康状态、针对该存储器单元的一有效性状态、针对该存储器单元的内容的一编码类型、针对该存储器单元的一位错误率、或针对该存储器单元的一擦除计数、一编程计数或一读取计数其中之一。
9.一种存储器系统,其特征在于,包括:
一非易失性存储器,包括多个存储器单元;
一高速缓存,耦接至该非易失性存储器;以及
一装置控制器,耦接至该非易失性存储器以及该高速缓存,该装置控制器用以执行操作包括:
接收一要求,以存取包括于该非易失性存储器的一存储器单元的实体信息,其中,该存储器单元的实体信息反映该存储器单元的实体条件,与存储于存储器单元的用户数据不同;
响应于接收该要求,判断该存储器单元的该实体信息在一高速缓存中的一窗体中是否可用,该窗体存储对应一全数的实体信息区块中一子集合的信息,该全数的实体信息区块包括多个存储器单元的实体信息;
当判断该存储器单元的该实体信息在该窗体中是可用的,从该窗体中存取该存储器单元的该实体信息;以及
当判断出该存储器单元的该实体信息在该窗体中是不可用的:
存取存在于该高速缓存中的一全局指引目录,该全局指引目录指示在该非易失性存储器中,存储该全数的实体信息区块的位置;
从该全局指引目录,判断存储着包括该存储器单元的该实体信息的一特定实体信息区块在该非易失性存储器中的一特定位置;
响应于该判断,将该特定实体信息区块从该非易失性存储器中的该特定位置加载至该窗体中,以及
从被加载至该窗体的该特定实体信息区块中存取该存储器单元的该实体信息。
10.根据权利要求9所述的存储器系统,其特征在于,该窗体存储一或多个存储器数据块,各该存储器数据块包括一或多个项目,该一或多个项目存储着包含于该全数的实体信息区块的该子集合中的一实体信息区块的一或多个存储器单元的实体信息,
其中判断该存储器单元的该实体信息在该窗体中是否可用包括判断对应该特定实体信息区块的一存储器数据块是否存在于该窗体中,以及
其中该全局指引目录包括多个项目,以指示对应该全数的实体信息区块的一全数的存储器数据块在该非易失性存储器中所存储的位置。
11.根据权利要求9所述的存储器系统,其特征在于,该窗体存储一或多个存储器数据块,各该存储器数据块包括一或多个项目,该一或多个项目存储着包含于该全数的实体信息区块的该子集合中的一实体信息区块的一或多个存储器单元的实体信息,以及
其中将该特定实体信息区块从该非易失性存储器中的该特定位置加载至该窗体包括:
自该非易失性存储器的该特定位置,存取对应该特定实体信息区块的一特定存储器数据块;以及
将该特定存储器数据块加载至该窗体。
12.根据权利要求11所述的存储器系统,其特征在于,将该特定存储器数据块加载至该窗体包括:
辨识该窗体中欲剔除的一既存存储器数据块
判断关联于该既存存储器数据块的一或多个存储器单元的实体信息是否有被更新;
当判断关联于该既存存储器数据块的该一或多个存储器单元的该实体信息并未被更新时,将该既存存储器数据块以该特定存储器数据块替换;以及
当判断关联于该既存存储器数据块的该一或多个存储器单元的该实体信息已被更新时:
从该全局指引目录判断对应于该既存存储器数据块的一第二实体信息区块在该非易失性存储器中的一第二位置,
响应于判断该第二位置,存取该非易失性存储器中的该第二实体信息区块,
辨识该第二实体信息区块中的一或多个存储器单元,该第二实体信息区块中的该一或多个存储器单元对应于关联具有更新后实体信息的该既存存储器数据块的该一或多个存储器单元;
将该第二实体信息区块中被辨识的该一或多个存储器单元的实体信息更新成来自该既存存储器数据块中对应存储器单元的该更新后实体信息,以及
将该既存存储器数据块以该特定存储器数据块取代。
13.根据权利要求12所述的存储器系统,其特征在于,该窗体中的各存储器单元包括指示该存储器单元的该实体信息是否已被更新的一已使用标记,以及
其中判断关联于该既存存储器数据块的该一或多个存储器单元的该实体信息是否已被更新包括:
针对该一或多个存储器单元的每一者,检查一关联已使用标记的一状态;
当该关联已使用标记具有一第一值,判断该存储器单元的该实体信息已被更新;以及
当该关联已使用标记具有一第二值,判断该存储器单元的该实体信息尚未被更新。
14.根据权利要求12所述的存储器系统,其特征在于,该窗体中的各存储器单元包括指示该存储器单元的该实体信息是否已被更新的一已使用标记,以及
其中将该第二实体信息区块中被辨识出的该一或多个存储器单元的该实体信息更新成来自该既存存储器数据块的对应存储器单元的该更新后实体信息包括:
响应于更新该第二实体信息区块中被辨识出的该一或多个存储器单元的该实体信息,清除关联于该窗体中对应存储器单元的一或多个已使用标记的值。
15.根据权利要求9所述的存储器系统,其特征在于,该装置控制器更用以侦测存在于该窗体中的一或多个存储器单元的实体状态,以及
其中接收该要求以存取该存储器单元的该实体信息包括:
接收一要求以更新该存储器单元的该实体状态,
响应接收该要求以更新该存储器单元的该实体状态:
更新该窗体中关联于该存储器单元的一项目,该项目包括该存储器单元的该实体信息,以及
将关联于该项目的一已使用标记设成一第一值以指示关联于该项目的该存储器单元的该实体信息已被更新。
16.根据权利要求15所述的存储器系统,其特征在于,对该一或多个存储器单元侦测该实体状态包括针对各该存储器单元检查一阈值电压设定、一健康状态或一有效性状态至少其一,以及
其中更新该窗体中关联于该存储器单元的该项目包括更新包含于该项目中的一或多个位,该一或多个位表示以下至少其一:针对该存储器单元的一阈值电压设定、针对该存储器单元的一健康状态、针对该存储器单元的一有效性状态、针对该存储器单元的内容的一编码类型、针对该存储器单元的一位错误率、或针对该存储器单元的一擦除计数、一编程计数或一读取计数其中之一。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/378,508 US10318423B2 (en) | 2016-12-14 | 2016-12-14 | Methods and systems for managing physical information of memory units in a memory device |
US15/378,508 | 2016-12-14 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108228471A CN108228471A (zh) | 2018-06-29 |
CN108228471B true CN108228471B (zh) | 2021-08-03 |
Family
ID=62489314
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710235082.1A Active CN108228471B (zh) | 2016-12-14 | 2017-04-12 | 管理存储器装置中存储器单元的实体信息的方法及系统 |
Country Status (3)
Country | Link |
---|---|
US (2) | US10318423B2 (zh) |
CN (1) | CN108228471B (zh) |
TW (1) | TWI625626B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10339324B2 (en) * | 2016-12-22 | 2019-07-02 | Apple Inc. | Tamper-proof storage using signatures based on threshold voltage distributions |
US10705762B2 (en) * | 2018-08-30 | 2020-07-07 | Micron Technology, Inc. | Forward caching application programming interface systems and methods |
TWI696916B (zh) * | 2018-09-07 | 2020-06-21 | 慧榮科技股份有限公司 | 資料儲存裝置以及非揮發式記憶體控制方法 |
KR102709412B1 (ko) | 2019-01-24 | 2024-09-24 | 삼성전자주식회사 | 복수의 컨트롤러를 포함하는 메모리 시스템 |
US11286027B1 (en) | 2019-09-09 | 2022-03-29 | Brunswick Corporation | Marine engines and cooling systems for cooling lubricant in a crankcase of a marine engine |
US11072408B1 (en) | 2019-09-09 | 2021-07-27 | Brunswick Corporation | Marine engines and cooling systems for cooling lubricant in a crankcase of a marine engine |
US11409446B2 (en) * | 2020-11-11 | 2022-08-09 | Micro Technology, Inc. | Media management on power-up |
US11352937B1 (en) | 2021-02-08 | 2022-06-07 | Brunswick Corporation | Marine drives and cooling systems for marine drives having a crankcase cooler |
TWI773343B (zh) * | 2021-05-26 | 2022-08-01 | 中華電信股份有限公司 | 分散式物件資料儲存系統、方法及電腦可讀媒介 |
US20240134801A1 (en) * | 2022-10-19 | 2024-04-25 | Samsung Electronics Co., Ltd. | Methods and system for efficient access to solid state drive |
Family Cites Families (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7173863B2 (en) | 2004-03-08 | 2007-02-06 | Sandisk Corporation | Flash controller cache architecture |
US7882299B2 (en) | 2004-12-21 | 2011-02-01 | Sandisk Corporation | System and method for use of on-chip non-volatile memory write cache |
US7475321B2 (en) * | 2004-12-29 | 2009-01-06 | Intel Corporation | Detecting errors in directory entries |
US7856522B2 (en) | 2007-05-16 | 2010-12-21 | Oracle International Corporation | Flash-aware storage optimized for mobile and embedded DBMS on NAND flash memory |
CN101339490A (zh) * | 2007-07-02 | 2009-01-07 | 佛山市顺德区顺达电脑厂有限公司 | 闪存的驱动装置及方法 |
US20100185806A1 (en) * | 2009-01-16 | 2010-07-22 | Arvind Pruthi | Caching systems and methods using a solid state disk |
US8612666B2 (en) | 2009-06-30 | 2013-12-17 | Intel Corporation | Method and system for managing a NAND flash memory by paging segments of a logical to physical address map to a non-volatile memory |
US8688894B2 (en) * | 2009-09-03 | 2014-04-01 | Pioneer Chip Technology Ltd. | Page based management of flash storage |
US8225030B2 (en) * | 2009-09-30 | 2012-07-17 | Dell Products L.P. | Systems and methods for using a page table in an information handling system comprising a semiconductor storage device |
WO2011044154A1 (en) * | 2009-10-05 | 2011-04-14 | Marvell Semiconductor, Inc. | Data caching in non-volatile memory |
US8369156B2 (en) * | 2010-07-13 | 2013-02-05 | Sandisk Technologies Inc. | Fast random access to non-volatile storage |
TWI421683B (zh) * | 2010-11-01 | 2014-01-01 | Phison Electronics Corp | 資料管理方法、記憶體控制器與記憶體儲存裝置 |
US9141527B2 (en) | 2011-02-25 | 2015-09-22 | Intelligent Intellectual Property Holdings 2 Llc | Managing cache pools |
JP2012203560A (ja) * | 2011-03-24 | 2012-10-22 | Toshiba Corp | キャッシュメモリおよびキャッシュシステム |
TWI457755B (zh) * | 2011-08-22 | 2014-10-21 | Phison Electronics Corp | 資料寫入方法、記憶體控制器與儲存裝置 |
EP2837134B1 (en) * | 2012-04-13 | 2019-02-27 | Citrix Systems Inc. | Method and system for caching snmp data |
TWI486765B (zh) * | 2012-06-11 | 2015-06-01 | Phison Electronics Corp | 記憶體管理方法、記憶體控制器與記憶體儲存裝置 |
KR101988434B1 (ko) * | 2012-08-31 | 2019-06-12 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 그것의 서브-블록 관리 방법 |
US8984235B2 (en) * | 2012-11-14 | 2015-03-17 | Hitachi, Ltd. | Storage apparatus and control method for storage apparatus |
CN103488578B (zh) * | 2012-12-28 | 2016-05-25 | 晶天电子(深圳)有限公司 | 虚拟存储设备(vmd)应用/驱动器 |
CN103077119A (zh) * | 2012-12-31 | 2013-05-01 | 记忆科技(深圳)有限公司 | 数据处理系统及方法 |
CN103136121B (zh) * | 2013-03-25 | 2014-04-16 | 中国人民解放军国防科学技术大学 | 一种固态盘的缓存管理方法 |
US20140304453A1 (en) * | 2013-04-08 | 2014-10-09 | The Hong Kong Polytechnic University | Effective Caching for Demand-based Flash Translation Layers in Large-Scale Flash Memory Storage Systems |
KR102108839B1 (ko) * | 2013-06-12 | 2020-05-29 | 삼성전자주식회사 | 불휘발성 메모리 장치를 포함하는 사용자 장치 및 그것의 데이터 쓰기 방법 |
CN106909318B (zh) * | 2013-12-23 | 2020-05-08 | 华为技术有限公司 | 固态硬盘使用方法及装置 |
US9286209B2 (en) * | 2014-04-21 | 2016-03-15 | Avago Technologies General Ip (Singapore) Pte. Ltd. | System, method and computer-readable medium using map tables in a cache to manage write requests to a raid storage array |
CN105022589A (zh) * | 2014-04-29 | 2015-11-04 | 光宝科技股份有限公司 | 电子装置及其操作方法 |
US9507722B2 (en) | 2014-06-05 | 2016-11-29 | Sandisk Technologies Llc | Methods, systems, and computer readable media for solid state drive caching across a host bus |
KR20160057186A (ko) * | 2014-11-13 | 2016-05-23 | 에스케이하이닉스 주식회사 | 반도체 메모리 시스템 및 그것의 동작 방법 |
US10025747B2 (en) * | 2015-05-07 | 2018-07-17 | Samsung Electronics Co., Ltd. | I/O channel scrambling/ECC disassociated communication protocol |
US20170024326A1 (en) * | 2015-07-22 | 2017-01-26 | CNEX-Labs, Inc. | Method and Apparatus for Caching Flash Translation Layer (FTL) Table |
CN105159622B (zh) * | 2015-10-22 | 2016-10-12 | 湖南国科微电子股份有限公司 | 一种减小ssd读写io时延的方法与系统 |
US10291739B2 (en) * | 2015-11-19 | 2019-05-14 | Dell Products L.P. | Systems and methods for tracking of cache sector status |
CN105740162B (zh) * | 2015-12-31 | 2018-08-07 | 上海盈方微电子有限公司 | 应用于nand存储器的nftl数据存储系统及方法 |
US20170277629A1 (en) * | 2016-03-25 | 2017-09-28 | Alibaba Group Holding Limited | Extending the useful lifespan of nonvolatile memory |
-
2016
- 2016-12-14 US US15/378,508 patent/US10318423B2/en active Active
-
2017
- 2017-04-07 TW TW106111654A patent/TWI625626B/zh active
- 2017-04-12 CN CN201710235082.1A patent/CN108228471B/zh active Active
-
2019
- 2019-05-21 US US16/418,428 patent/US10990528B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US10318423B2 (en) | 2019-06-11 |
US20180165198A1 (en) | 2018-06-14 |
TW201821996A (zh) | 2018-06-16 |
TWI625626B (zh) | 2018-06-01 |
US20190272231A1 (en) | 2019-09-05 |
US10990528B2 (en) | 2021-04-27 |
CN108228471A (zh) | 2018-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108228471B (zh) | 管理存储器装置中存储器单元的实体信息的方法及系统 | |
US10657047B2 (en) | Data storage device and method of performing partial garbage collection | |
US9619158B2 (en) | Two-level hierarchical log structured array architecture with minimized write amplification | |
US11681442B2 (en) | Performing hybrid wear leveling operations based on a sub-total write counter | |
US8312204B2 (en) | System and method for wear leveling in a data storage device | |
US20170235681A1 (en) | Memory system and control method of the same | |
CN110618945B (zh) | 存储系统 | |
KR20200033985A (ko) | 논리적/물리적 매핑 | |
US10740251B2 (en) | Hybrid drive translation layer | |
EP2605142A1 (en) | LBA bitmap usage | |
US11307983B2 (en) | Maintaining data consistency in a memory subsystem that uses hybrid wear leveling operations | |
US12086467B2 (en) | Read performance of memory devices | |
CN113590503B (zh) | 一种非挥发性记忆体存储器的垃圾回收方法与垃圾回收系统 | |
KR20210024189A (ko) | 마모 레벨링을 위한 바이어싱된 샘플링 방법 | |
US20240143511A1 (en) | Dynamically sized redundant write buffer with sector-based tracking | |
CN114613405A (zh) | 频繁读取干扰攻击者的标识和高速缓存 | |
US11599466B2 (en) | Sector-based tracking for a page cache | |
JP2024043337A (ja) | メモリシステム | |
US12105621B2 (en) | Logical to physical (L2P) address mapping with fast L2P table load times |
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 |