CN112416809A - 用于可扩展存储区域的分配模式 - Google Patents
用于可扩展存储区域的分配模式 Download PDFInfo
- Publication number
- CN112416809A CN112416809A CN202010855076.8A CN202010855076A CN112416809A CN 112416809 A CN112416809 A CN 112416809A CN 202010855076 A CN202010855076 A CN 202010855076A CN 112416809 A CN112416809 A CN 112416809A
- Authority
- CN
- China
- Prior art keywords
- page
- bitmap
- change log
- pointer table
- virtual page
- 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.)
- Pending
Links
- 230000008859 change Effects 0.000 claims abstract description 320
- 238000000034 method Methods 0.000 claims abstract description 71
- 230000015654 memory Effects 0.000 claims description 289
- 238000012545 processing Methods 0.000 claims description 49
- 230000000977 initiatory effect Effects 0.000 claims description 7
- 230000001419 dependent effect Effects 0.000 abstract 1
- 210000004027 cell Anatomy 0.000 description 125
- 102000005327 Palmitoyl protein thioesterase Human genes 0.000 description 18
- 108020002591 Palmitoyl protein thioesterase Proteins 0.000 description 18
- 239000004065 semiconductor Substances 0.000 description 17
- 238000010586 diagram Methods 0.000 description 16
- 238000012360 testing method Methods 0.000 description 15
- 238000004891 communication Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 12
- 101150085646 PPT3 gene Proteins 0.000 description 11
- 238000007726 management method Methods 0.000 description 10
- 238000012546 transfer Methods 0.000 description 10
- 238000003491 array Methods 0.000 description 7
- 238000011156 evaluation Methods 0.000 description 7
- 238000007667 floating Methods 0.000 description 6
- 230000004044 response Effects 0.000 description 6
- 239000000872 buffer Substances 0.000 description 5
- 238000012937 correction Methods 0.000 description 5
- 230000005291 magnetic effect Effects 0.000 description 5
- 238000013459 approach Methods 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 239000007787 solid Substances 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 101100084118 Caenorhabditis elegans ppt-1 gene Proteins 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- COCAUCFPFHUGAA-MGNBDDOMSA-N n-[3-[(1s,7s)-5-amino-4-thia-6-azabicyclo[5.1.0]oct-5-en-7-yl]-4-fluorophenyl]-5-chloropyridine-2-carboxamide Chemical compound C=1C=C(F)C([C@@]23N=C(SCC[C@@H]2C3)N)=CC=1NC(=O)C1=CC=C(Cl)C=N1 COCAUCFPFHUGAA-MGNBDDOMSA-N 0.000 description 3
- 229910021420 polycrystalline silicon Inorganic materials 0.000 description 3
- 229920005591 polysilicon Polymers 0.000 description 3
- 239000000758 substrate Substances 0.000 description 3
- 101500019086 Ustilago maydis P6 virus KP6 killer toxin subunit alpha Proteins 0.000 description 2
- 101100023962 Zea mays VP15 gene Proteins 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 238000011010 flushing procedure Methods 0.000 description 2
- 238000002347 injection Methods 0.000 description 2
- 239000007924 injection Substances 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 239000002245 particle Substances 0.000 description 2
- 239000000047 product Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000014616 translation Effects 0.000 description 2
- 230000005641 tunneling Effects 0.000 description 2
- 101000743317 Banna virus (strain Indonesia/JKT-6423/1980) Intermediate capsid protein VP8 Proteins 0.000 description 1
- 101001124039 Banna virus (strain Indonesia/JKT-6423/1980) Non-structural protein 4 Proteins 0.000 description 1
- 101000701737 Banna virus (strain Indonesia/JKT-6423/1980) Spike protein VP9 Proteins 0.000 description 1
- 101000621609 Halorubrum pleomorphic virus 1 Virion protein 8 Proteins 0.000 description 1
- 108010068250 Herpes Simplex Virus Protein Vmw65 Proteins 0.000 description 1
- 101001128925 Zea mays 9-cis-epoxycarotenoid dioxygenase 1, chloroplastic Proteins 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000004020 conductor Substances 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 230000005669 field effect Effects 0.000 description 1
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 239000012212 insulator Substances 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 229910044991 metal oxide Inorganic materials 0.000 description 1
- 150000004706 metal oxides Chemical class 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 238000005549 size reduction Methods 0.000 description 1
- 210000000352 storage cell Anatomy 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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/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/7203—Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
-
- 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/7204—Capacity control, e.g. partitioning, end-of-life degradation
-
- 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/7208—Multiple device management, e.g. distributing data over multiple flash devices
Abstract
本申请涉及用于可扩展存储区域的分配模式。各种应用可包含控制存储装置中变更日志的存储大小的系统和方法,其中所述变更日志经实施以使一或多个存储器装置中的虚拟页地址与物理地址相关。可以通过用于所述存储装置中的所述变更日志的可扩展存储区域的分配模式来控制所述存储大小。所述分配模式可包含使用位图、链接到所述位图的列表和对所述位图中经确证位进行计数的计数器,使得所述存储装置中存储空间的分配可取决于使用情况,而不是为了虚拟页地址与物理地址的所有可能相关而分配较大存储空间。
Description
技术领域
本申请涉及存储器装置。
背景技术
通常将存储器装置提供为计算机或其它电子装置中的内部半导体集成电路。存在许多不同类型的存储器,包含易失性和非易失性存储器。易失性存储器需要功率来维持其数据,且易失性存储器的实例包含随机存取存储器(RAM)、动态随机存取存储器(DRAM)和同步动态随机存取存储器(SDRAM)等等。非易失性存储器可在未被供电时保留所存储数据,且非易失性存储器的实例包含快闪存储器、只读存储器(ROM)、电可擦除可编程ROM(EEPROM)、可擦除可编程ROM(EPROM)、电阻可变存储器,如相变随机存取存储器(PCRAM)、电阻式随机存取存储器(RRAM)、磁阻式随机存取存储器(MRAM)和三维(3D)XPointTM存储器等等。
快闪存储器用作广泛范围的电子应用的非易失性存储器。快闪存储器装置通常包含允许高存储器密度、高可靠性和低功耗的单晶体管、浮动栅极或电荷阱存储器单元的一或多个群组。两种常见类型的快闪存储器阵列架构包含NAND和NOR架构,所述架构以每一者的基本存储器单元配置所布置的逻辑形式来命名。存储器阵列的存储器单元通常布置成矩阵。在实例中,阵列的一行中的每一浮动栅极存储器单元的栅极耦合到存取线(例如,字线)。在NOR架构中,阵列的列中的每一存储器单元的漏极耦合到数据线(例如,位线)。在NAND架构中,阵列的串中的存储器单元在源极线与位线之间以源极到漏极方式串联耦合在一起。
NOR和NAND架构半导体存储器阵列均通过解码器来存取,所述解码器通过选择耦合到特定存储器单元的栅极的字线来激活特定存储器单元。在NOR架构半导体存储器阵列中,一旦被激活,选定存储器单元便使其数据值置于位线上,从而依据特定单元经编程的状态而使不同电流流动。在NAND架构半导体存储器阵列中,将高偏置电压施加到漏极侧选择栅极(SGD)线。以指定传递电压(例如,Vpass)驱动耦合到每一群组的未选定存储器单元的栅极的字线,以使每一群组的未选定存储器单元作为传递晶体管操作(例如,以不受其所存储的数据值限制的方式传递电流)。电流随后从源极线通过每个串联耦合的群组流动到位线,仅受每个群组中的选定存储器单元限制,从而使选定存储器单元的当前经编码数据值置于位线上。
NOR或NAND架构半导体存储器阵列中的每个快闪存储器单元可个别地或共同地编程到一个或数个经编程状态。例如,单层级单元(SLC)可表示两个经编程状态(例如,1或0)中的一个,表示一个数据位。然而,快闪存储器单元也可表示超过两个经编程状态中的一个,从而允许制造较高密度的存储器而不增加存储器单元的数目,因为每个单元可表示超过一个二进制数字(例如,超过一个位)。此类单元可称为多状态存储器单元、多数位单元或多层级单元(multi-level cell,MLC)。在某些实例中,MLC可以指每单元可存储两个数据位(例如,四个经编程状态中的一个)的存储器单元,三层级单元(triple-level cell,TLC)可以指每单元可存储三个数据位(例如,八个经编程状态中的一个)的存储器单元,且四层级单元(quad-level cell,QLC)可每单元存储四个数据位。除非有明确的语言或上下文指示,否则MLC在本文中以其较广泛情形使用,可以指每单元可存储多于一个数据位(即,可表示超过两个经编程状态)的任何存储器单元。
传统的存储器阵列是布置于半导体衬底的表面上的二维(2D)结构。为了针对给定面积增加存储器容量且减小成本,已减小单独存储器单元的大小。然而,存在单独存储器单元的大小减少的技术限制,且因此存在2D存储器阵列的存储器密度的技术限制。作为响应,正开发三维(3D)存储器结构,例如3D NAND架构半导体存储器装置,以进一步增加存储器密度且降低存储器成本。
这些3D NAND装置经常包含存储单元串,其串联(例如,漏极到源极)耦合于接近源极的一或多个源极侧选择栅极(SGS)与接近位线的一或多个漏极侧选择栅极(SGD)之间。在实例中,SGS或SGD可包含一或多个场效应晶体管(FET)或金属-氧化物半导体(MOS)结构装置等。在一些实例中,所述串将竖直延伸通过含有相应字线的多个竖直隔开的层次。半导体结构(例如,多晶硅结构)可邻近于存储单元串而延伸以形成用于所述串的存储单元的通道。在竖直串的实例中,多晶硅结构可呈竖直延伸支柱的形式。在一些实例中,串可以“折叠”,且因此相对于U形支柱而布置。在其它实例中,多个竖直结构可堆叠于彼此之上以形成存储单元串的堆叠阵列。
存储器阵列或装置可组合在一起以形成存储器系统的存储容量,例如固态驱动器(SSD)、通用快闪存储(UFSTM)装置、多媒体卡(MMC)固态存储装置、嵌入式MMC装置(eMMCTM)等。SSD尤其可用作计算机的主要存储装置,关于例如性能、大小、重量、坚固性、工作温度范围和功率消耗具有优于带有移动部件的传统硬盘驱动器的优点。例如,SSD可具有减少的寻道时间、等待时间或与磁盘驱动器相关联的其它延迟(例如,机电等)。SSD使用例如快闪存储器单元等非易失性存储器单元来避免内部电池电源要求,由此允许驱动器更为多功能的且紧凑的。
SSD可包含数个存储器装置,包含数个裸片或逻辑单元(例如,逻辑单元数字或LUN),且可包含执行操作存储器装置或与外部系统介接所需的逻辑功能的一或多个处理器或其它控制器。这些SSD可包含一或多个快闪存储器裸片,这些裸片上包含数个存储器阵列和外围电路系统。快闪存储器阵列可包含组织成数个物理页的数个存储器单元块。在许多实例中,SSD还将包含DRAM或SRAM(或其它形式的存储器裸片或其它存储器结构)。SSD可与存储器操作结合从主机接收命令,所述存储器操作例如在存储器装置与主机之间传送数据(例如,用户数据和相关联的完整性数据,例如错误数据和地址数据等)的读取或写入操作,或者从存储器装置擦除数据的擦除操作。
在具有可与数个主机装置一起操作的受管理存储器装置的系统中,利用由主机提供的地址来实现存取存储器位置以供主机装置从存储器装置读取和写入到存储器装置。这些地址可以由主机提供作为逻辑块地址(LBA),其中主机不跟踪要存取的存储器位置的物理地址。受管理存储器装置包含将LBA从主机转换到数据在存储器装置中存储的物理地址的工具。存储器装置可以是NAND存储器装置。这一对信息,即LBA和对应物理地址,可以在变更日志内存储为元素。为了始终确保正确的逻辑到物理(L2P)转换,装置转换单元(DTU)可以在变更日志中搜索关于所请求LBA的最新更新信息。变更日志的常规结构布置成含有每个所跟踪LBA的历史,这在存取变更日志时会产生延迟。但是,一种快速存取所请求信息的方法可以基于有序变更日志,这意味着每次更新具有额外工作量。另外,排序和存取时间取决于所实施的DTU算法,但是不管所使用的DTU算法是什么,存取都与变更日志大小成比例。
发明内容
一方面,本申请涉及一种方法,包括:使用位图、链接到所述位图的列表和所述位图中经确证位的计数器来控制存储装置中变更日志的存储大小,所述变更日志经实施以使存储器装置中的虚拟页地址与物理地址相关;以及使用所述位图、所述列表和所述位图中经确证位的所述计数器来更新所述变更日志。
另一方面,本申请涉及一种系统,包括:存储器装置;以及存储变更日志的存储装置,其中虚拟页地址的标识是用于确定所述存储器装置中的物理地址的入口点,所述变更日志经实施以使存储器装置中的虚拟页地址与物理地址相关,所述变更日志包含:页指针表位图,用于识别所述变更日志中页指针表的存储状态;在所述页指针表位图中编索引的每个页指针表的虚拟页位图,每个虚拟页位图布置成使用所述虚拟页地址的索引识别所述变更日志中虚拟页地址的存储状态;存储在所述变更日志中的页指针表列表,所述列表链接到所述页指针表位图;以及所述页指针表列表中的每个页指针表的虚拟页列表,每个虚拟页列表识别存储在所述变更日志中的虚拟页地址,所述虚拟页列表链接到所述虚拟页位图。
另一方面,本申请涉及一种系统,包括:存储有指令的固件,所述指令可由处理装置执行以执行以下操作:使用位图、链接到所述位图的列表和所述位图中经确证位的计数器来控制存储装置中变更日志的存储大小,所述变更日志经实施以使存储器装置中的虚拟页地址与物理地址相关;以及使用所述位图、所述列表和所述位图中经确证位的所述计数器来更新所述变更日志。
另一方面,本申请涉及一种系统,包括:使存储器装置的虚拟页地址与所述存储器装置的物理地址相关的日志,所述日志包含:与相应虚拟页地址的多个索引相关的第一位置,所述第一位置含有所述日志中所述相应虚拟页地址的状态的识别符;以及用于识别所述日志中页指针表的状态的第二位置,每个第二位置能够与相应一组所述多个索引相关;以及一或多个计数器,用于对含有与相应第二位置相关联的页指针表存储在所述日志中的识别符的所述第二位置的数目进行计数,并对所述一组中与所述相应第二位置相关的索引的数目进行计数。
附图说明
不一定按比例绘制的图式通过实例而非作为限制大体上说明本文件中论述的各种实施例。
图1示出根据各种实施例的包含存储器装置的环境的实例。
图2和3示出根据各种实施例的三维NAND架构半导体存储器阵列的实例的示意图。
图4示出根据各种实施例的存储器模块的实例框图。
图5是根据各种实施例的示出可在其上实施一或多个实施例的机器的实例的框图。
图6是根据各种实施例的基于实际存储器占用率从固定几何结构开始演进到可变几何结构的变更日志区域的分配的图示。
图7是根据各种实施例的存取用于在虚拟页地址处写入的变更日志的实例程序的流程图。
图8是根据各种实施例的将虚拟页地址有效添加到变更日志数据结构的实例操作的图示。
图9是根据各种实施例的与虚拟表相关联的实例位图和链表的图示,所述虚拟表可表示具有使虚拟页地址元素与页指针表相关的元素的表。
图10A-10D示出根据各种实施例的实施可减少用于变更日志的存储区域的变更日志编索引方案的实例。
图11是根据各种实施例的包含与存储器系统一起操作的主机的实例系统的实施例的框图,所述存储器系统具有多个存储器装置和一个存储装置,其中以用于存储装置中的可扩展存储区域的分配模式在存储装置中构造变更日志,所述变更日志经实施以使虚拟页地址与存储器装置中的一或多个中的物理地址相关。
图12是根据各种实施例的操作变更日志的实例方法的特征的流程图,其中所述变更日志经实施以使存储器装置中的虚拟页地址与物理地址相关。
图13是根据各种实施例的在存储装置中更新变更日志的实例方法的特征的流程图,其中所述变更日志经实施以使存储器装置中的虚拟页地址与物理地址相关。
图14是根据各种实施例的具有使一或多个存储器装置的虚拟页地址与所述一或多个存储器装置的物理地址相关的日志的实例系统的框图。
具体实施方式
下面的详细描述参考附图,其通过说明而非限制的方式示出可以实施发明的各种实施例。对这些实施例进行了足够详细的描述,以使所属领域的技术人员能够实践这些和其它实施例。可以使用其它实施例,并且可以对这些实施例进行结构、逻辑、机械和电气更改。各种实施例不一定相互排斥,因为一些实施例可以与一或多个其它实施例组合以形成新的实施例。因此,以下详细描述不应被视为限制性的。
在各种实施例中,提供用于存储L2P变更日志的可扩展存储区域的分配模式。在基于变更日志的固件(FW)架构中,变更日志可含有最新L2P值。对于NAND存储器系统,变更日志可以在写入操作时更新,而L2P表仅在不同事件中的一个发生时(例如,当变更日志变满时)才更新并刷新为NAND。变更日志变满会触发L2P表的更新。在读取操作期间,将在变更日志中搜索L2P值,如果在变更日志中发现作为搜索对象的L2P值丢失,则可以加载L2P表并且可以在L2P表中执行搜索。
这种分配模式可能会用减小的存储区域覆盖整个受管理装置的LBA。用于存储变更日志的存储区域可以是RAM存储区域,其中,在常规布置中,存储区域存储写入的LBA的所有历史。如本文所教示,变更日志可经实施以使存储器装置的虚拟页地址与物理地址相关,其中,可以在不应用诸如DTU算法之类的算法的情况下处理变更日志中的排序。虚拟页地址可以被实现为LBA。本文中,虚拟页地址命名为VP。在此类变更日志中,不用跟踪LBA的情况,因为存储了最新的有用更新,这样可以避免重复。此外,变更日志可经结构化以使虚拟页地址与物理地址相关,而无需将诸如逻辑地址和物理地址之类的一对信息成对存储在给定存储器装置(例如,NAND装置)中。
变更日志可以被视为一个可索引的数据结构,其中逻辑地址是一个入口点,用于知晓与变更日志相关联的存储器装置中的数据存储位置的物理地址。这种对存储信息对的消除减少了用于存储每个VP元素的存储器。在接近变更日志时,如本文所教示,并不是在变更日志中搜索VP元素,而是可以几乎立即验证其存在及其位置,其中到达所需变更日志元素的步骤数是确定的和可预测的。
在各种实施例中,基于变更日志的FW架构与不带变更日志的架构之间的区别包含以下特征:在写入操作期间不需要在RAM中加载L2P表,而是只更新变更日志。新的L2P值临时保存到驻存在RAM中的变更日志中,而不是加载要更新的L2P表。这使得在随机写入情形下,可以避免不断地从RAM交换入/交换出L2P表。所有更新的L2P值都可以收集到变更日志中,并且当变更日志变满时,所有要更新的L2P表都可以被加载并与变更日志更新合并。
例如移动电子装置(例如,智能电话、平板计算机等)、用于汽车应用的电子装置(例如,汽车传感器、控制单元、驾驶员辅助系统、乘客安全或舒适系统等)和因特网连接的电器设备或装置(例如,物联网(IoT)装置等)的电子装置尤其取决于电子装置的类型、使用环境、性能期望等而具有变化的存储需要。
电子装置可以分解为数个主要组件:处理器(例如,中央处理单元(CPU)或另一主处理器);存储器(例如,一或多个易失性或非易失性随机存取存储器(RAM)存储器装置,例如动态RAM(DRAM)、移动或低功率双倍数据速率同步DRAM(DDR SDRAM)等等);以及存储装置(例如,非易失性存储器(NVM)装置,如快闪存储器、只读存储器(ROM)、SSD、MMC或另一存储卡结构或组合件,等等)。在某些实例中,电子装置可包含用户接口(例如,显示器、触摸屏、键盘、一或多个按钮,等等)、图形处理单元(GPU)、电力管理电路、基带处理器或一或多个收发器电路等。
图1示出包含配置成通过通信接口通信的主机装置105和存储器装置110的环境100的实例。主机装置105或存储器装置110可包含在多种产品150中,例如物联网(IoT)装置(例如,冰箱或其它电器、传感器、电动机或致动器、移动通信装置、汽车、无人驾驶飞机等),以支持产品150的处理、通信或控制。
存储器装置110包含存储器处理装置115和存储器阵列120,包含例如数个单独存储器裸片(例如,三维(3D)NAND裸片的堆叠)。在3D架构半导体存储器技术中,堆叠竖直结构,从而增加层次、物理页的数目,并因此增大存储器装置(例如,存储装置)的密度。在实例中,存储器装置110可以是主机装置105的离散存储器或存储装置组件。在其它实例中,存储器装置110可以是与主机装置105的一或多个其它组件堆叠或以其它方式包含的集成电路(例如,芯片上系统(SoC)等等)的部分。
可使用一或多个通信接口在存储器装置110与主机装置105的一或多个其它组件之间传送数据,例如串行高级技术附件(SATA)接口、外围组件互连高速(PCIe)接口、通用串行总线(USB)接口、通用快闪存储(UFS)接口、eMMCTM接口,或一或多个其它连接器或接口。主机装置105可包含主机系统、电子装置、处理器、存储卡读卡器、或在存储器装置110外部的一或多个其它电子装置。在一些实例中,主机装置105可以是具有参考图5的机器500所论述的组件的某一部分或全部的机器。
存储器处理装置115可从主机105接收指令,并且可与存储器阵列120通信,以便将数据传送到存储器阵列120的存储器单元、平面、子块、块或页中的一或多个(例如,写入或擦除)或传送来自前述各项的数据(例如,读取)。存储器处理装置115尤其可包含电路系统或固件,包含一或多个组件或集成电路。例如,存储器处理装置115可包含一或多个存储器控制单元、电路或组件,它们配置成控制跨越存储器阵列120的存取并提供主机装置105与存储器装置110之间的转换层。存储器处理装置115可包含一或多个输入/输出(I/O)电路、线路或接口,用于将数据传送到存储器阵列120或从其传送数据。存储器处理装置115可包含存储器管理器125和阵列控制器135。
存储器管理器125尤其可包含电路系统或固件,例如与各种存储器管理功能相关联的数个组件或集成电路。出于本描述的目的,实例存储器操作和管理功能将在NAND存储器的上下文中加以描述。所属领域的普通技术人员将认识到,其它形式的非易失性存储器可具有类似存储器操作或管理功能。此类NAND管理功能包含耗损均衡(例如,垃圾收集或回收)、错误检测或校正、块注销(block retirement)或一或多个其它存储器管理功能。存储器管理器125可将主机命令(例如,从主机接收的命令)解析或格式化为装置命令(例如,与存储器阵列的操作相关联的命令等等),或产生阵列控制器135或存储器装置110的一或多个其它组件的装置命令(例如,用于实现各种存储器管理功能)。
存储器管理器125可包含配置成保持与存储器装置110的一或多个组件相关联的各种信息(例如,与耦合到存储器处理装置115的存储器阵列或一或多个存储器单元相关联的各种信息)的一组管理表130。例如,管理表130可包含关于耦合到存储器处理装置115的一或多个存储器单元块的块年龄、块擦除计数、错误历史或一或多个错误计数(例如,写入操作错误计数、读取位错误计数、读取操作错误计数、擦除错误计数等)的信息。在某些实例中,如果检测到的一或多个错误计数中的错误的数目高于阈值,那么位错误可称为不可校正位错误。管理表130尤其可保持可校正或不可校正位错误的计数。
阵列控制器135尤其可包含配置成控制存储器操作的电路系统或组件,所述存储器操作与对耦合到存储器处理装置115的存储器装置110的一或多个存储器单元写入数据、从所述一或多个存储器单元读取数据或者擦除所述一或多个存储器单元相关联。所述存储器操作可基于例如从主机装置105接收的主机命令,或在内部由存储器管理器125产生(例如,与耗损均衡、错误检测或校正等结合)。
阵列控制器135可包含错误校正码(ECC)组件140,其尤其可包含ECC引擎或其它电路系统,所述ECC引擎或其它电路系统配置成检测或校正与对耦合到存储器处理装置115的存储器装置110的一或多个存储器单元写入数据或从所述一或多个存储器单元读取数据相关联的错误。存储器处理装置115可配置成主动地检测与各种操作或数据的存储相关联的错误出现(例如,位错误、操作错误等)并从中恢复,同时维持在主机装置105和存储器装置110之间传送的数据的完整性或维持所存储的数据的完整性(例如,使用冗余RAID存储等等),并且可移除(例如,注销)失效存储器资源(例如,存储器单元、存储器阵列、页、块等)以防发生未来错误。
存储器阵列120可包含布置在例如数个装置、平面、子块、块或页中的若干存储器单元。作为一个实例,48GB TLC NAND存储器装置可包含每页18,592字节(B)的数据(16,384+2208字节)、每块1536页、每平面548块和每装置4个或更多个平面。作为另一实例,32GBMLC存储器装置(存储每单元两个数据位(即,4个可编程状态))可包含每页18,592字节(B)的数据(16,384+2208字节)、每块1024页、每平面548块和每装置4个平面,但是作为对应TLC存储器装置,写入时间为一半,而编程/擦除(P/E)循环为两倍。其它实例可包含其它数目或布置。在一些实例中,存储器装置或其部分可以选择性地在SLC模式中或在所要MLC模式(例如TLC、QLC等)中操作。
在操作中,数据通常以页写入到NAND存储器装置110或从NAND存储器装置110读取并以块擦除。然而,一或多个存储器操作(例如,读取、写入、擦除等)可视需要在更大或更小的存储器单元群组上执行。NAND存储器装置110的数据传送大小通常被称为页,而主机的数据传送大小通常被称为扇区。
虽然数据页可包含数个字节的用户数据(例如,包含数个数据扇区的数据有效负载)及其对应的元数据,但页的大小经常仅指代用以存储用户数据的字节的数目。作为实例,具有4KB的页大小的数据页可包含4KB的用户数据(例如,假定512B的扇区大小的8个扇区)以及对应于用户数据的数个字节(例如,32B、54B、224B等)的元数据,例如完整性数据(例如,错误检测或校正代码数据)、地址数据(例如,逻辑地址数据等)或与用户数据相关联的其它元数据。
不同类型的存储器单元或存储器阵列120可提供不同页大小,或可使用与其相关联的不同量的元数据。例如,不同存储器装置类型可具有不同位错误速率,其可导致需要不同量的元数据来确保数据页的完整性(例如,具有较高位错误率的存储器装置可需要比具有较低位错误率的存储器装置更多字节的错误校正码数据)。作为实例,多层级单元(MLC)NAND快闪装置可具有比对应单层级单元(SLC)NAND快闪装置高的位错误率。因此,MLC装置可使用比对应SLC装置更多的元数据字节用于错误数据。
图2示出包含数个存储器单元串(例如,第一到第三A0存储器串205A0-207A0,第一到第三An存储器串205An-207An,第一到第三B0存储器串205B0-207B0,第一到第三Bn存储器串205Bn-207Bn等)的3D NAND架构半导体存储器阵列200的实例示意图,所述存储器单元串组织成块(例如,块A 201A、块B 201B等)和子块(例如,子块A0 201A0、子块An 201An、子块B0201B0、子块Bn 201Bn等)。存储器阵列200表示通常将在存储器装置的块、装置或其它单元中找到的较大数目的相似结构的一部分。
每一存储器单元串包含数个层次的电荷存储晶体管(例如,浮动栅极晶体管、电荷截留结构等),所述电荷存储晶体管在Z方向上以源极到漏极方式堆叠于源极线(SRC)235或源极侧选择栅极(SGS)(例如,第一到第三A0 SGS 231A0-233A0、第一到第三An SGS 231An-233An、第一到第三B0 SGS 231B0-233B0、第一到第三Bn SGS 231Bn-233Bn等)与漏极侧选择栅极(SGD)(例如,第一到第三A0 SGD 226A0-228A0、第一到第三An SGD 226An-228An、第一到第三B0 SGD 226B0-228B0、第一到第三Bn SGD 226Bn-228Bn等)之间。3D存储器阵列中的每一存储器单元串可沿着X方向布置为数据线(例如,位线(BL)BL0-BL2 220-222),且沿着Y方向布置为物理页。
在物理页内,每一层次表示一行存储器单元,且每一存储器单元串表示列。子块可包含一或多个物理页。块可包含数个子块(或物理页)(例如,128、256、384等)。虽然本文中示出为具有两个块,每一块具有两个子块,每一子块具有单个物理页,每一物理页具有三个存储器单元串,且每一串具有8个层次的存储器单元,但在其它实例中,存储器阵列200可包含更多或更少的块、子块、物理页、存储器单元串、存储器单元或层次。例如,每一存储器单元串按需要可包含更多或更少层次(例如,16、32、64、128等),以及电荷存储晶体管(例如,选择栅极、数据线等)上方或下方的一或多个额外层次的半导体材料。作为实例,48GB TLCNAND存储器装置可包含每页18,592字节(B)的数据(16,384+2208字节)、每块1536页、每平面548块,和每装置4个或更多个平面。
存储器阵列200中的每一存储器单元包含耦合到(例如,以电或另外以操作方式连接到)存取线(例如,字线(WL)WL00-WL70 210A-217A、WL01-WL71 210B-217B等)的控制栅极(CG),所述存取线按需要跨越特定层次或层次的一部分共同地耦合控制栅极(CG)。3D存储器阵列中的特定层次且因此串中的特定存储器单元可使用相应存取线来存取或控制。可使用各种选择线存取选择栅极的群组。例如,可使用A0 SGD线SGDA0 225A0存取第一到第三A0SGD 226A0-228A0,可使用An SGD线SGDAn 225An存取第一到第三An SGD 226An-228An,可使用B0 SGD线SGDB0 225B0存取第一到第三B0 SGD226B0-228B0,且可使用Bn SGD线SGDBn 225Bn存取第一到第三Bn SGD 226Bn-228Bn。可使用栅极选择线SGS0 230A存取第一到第三A0 SGS231A0-233A0和第一到第三An SGS 231An-233An,且可使用栅极选择线SGS1 230B存取第一到第三B0 SGS 231B0-233B0和第一到第三Bn SGS 231Bn-233Bn。
在实例中,存储器阵列200可包含数个层级的半导体材料(例如,多晶硅等),其配置成耦合阵列的相应层次的每一存储器单元的控制栅极(CG)或选择栅极(或CG或选择栅极的一部分)。阵列中的特定存储器单元串可使用位线(BL)和选择栅极等的组合来存取、选择或控制,且在特定串中的一或多个层次处的特定存储器单元可使用一或多个存取线(例如,字线)来存取、选择或控制。
图3示出NAND架构半导体存储器阵列300的一部分的实例示意图,所述阵列包含布置于串(例如,第一到第三串305-307)和层次(例如,示出为相应字线(WL)WL0-WL7310-317、漏极侧选择栅极(SGD)线325、源极侧选择栅极(SGS)线330等)的二维阵列中的多个存储器单元302以及感测放大器或装置360。例如,存储器阵列300可示出例如图2中示出的3D NAND架构半导体存储器装置的存储器单元的一个物理页的一部分的实例示意图。
每一存储器单元串使用相应源极侧选择栅极(SGS)(例如,第一到第三SGS 331-333)耦合到源极线(SRC)335,且使用相应漏极侧选择栅极(SGD)(例如,第一到第三SGD326-328)耦合到相应数据线(例如,第一到第三位线(BL)BL0-BL2 320-322)。虽然在图3的实例中示出为具有8个层次(例如,使用字线(WL)WL0-WL7 310-317)和三个数据线(BL0-BL2326-328),但其它实例按需要可包含具有更多或更少层次或数据线的存储器单元串。
在例如实例存储器阵列300等NAND架构半导体存储器阵列中,可通过感测与含有选定存储器单元302的特定数据线相关联的电流或电压变化而存取选定存储器单元302的状态。可使用一或多个驱动器(例如,由控制电路、一或多个处理器、数字逻辑等)存取存储器阵列300。在实例中,取决于对特定存储器单元或存储器单元集合将执行的所需操作的类型,一或多个驱动器可通过驱动特定电位到一或多个数据线(例如,位线BL0-BL2)、存取线(例如,字线WL0-WL7)或选择栅极而激活特定存储器单元或存储器单元集合。
为了将数据编程或写入到存储器单元302,可将编程电压(Vpgm)(例如,一或多个编程脉冲等)施加到选定字线(例如,WL4),且因此施加到耦合到选定字线的每一存储器单元302的控制栅极(例如,耦合到WL4的存储器单元的第一到第三控制栅极(CG)341-343)。编程脉冲可例如在15V处或附近开始,并且在某些实例中,可在每一编程脉冲施加期间量值增加。在将编程电压施加到选定字线的同时,可将例如接地电位(例如,Vss)等电位施加到以编程为目标的存储器单元的数据线(例如,位线)和衬底(且因此源极与漏极之间的通道),从而导致从通道到目标存储器单元的浮动栅极的电荷传送(例如,直接注入或佛勒-诺德海姆(Fowler-Nordheim,FN)隧穿等)。
相比之下,可将传递电压Vpass施加到具有并不以编程为目标的存储器单元的一或多个字线,或可将禁止电压(例如,Vcc)施加到具有并不以编程为目标的存储器单元的数据线(例如,位线),以例如禁止电荷从通道传送到这些非目标存储器单元的浮动栅极。传递电压可例如取决于施加的传递电压与以编程为目标的字线的接近度而变化。禁止电压可包含相对于接地电位(例如,Vss)的供应电压(Vcc),例如来自外部源或供应(例如,电池、AC/DC转换器等)的电压。
作为实例,如果将编程电压(例如,15V或更高)施加到特定字线,例如WL4,那么可将10V的传递电压施加到一或多个其它字线,例如WL3、WL5等,以禁止非目标存储器单元的编程,或保持并不以编程为目标的这些存储器单元上存储的值。随着施加的编程电压与非目标存储器单元之间的距离增大,用于制止对非目标存储器单元进行编程的传递电压可减小。例如,在将15V的编程电压施加到WL4的情况下,可将10V的传递电压施加到WL3和WL5,可将8V的传递电压施加到WL2和WL6,可将7V的传递电压施加到WL1和WL7等。在其它实例中,传递电压或字线的数目等可更高或更低,或更多或更少。
耦合到数据线(例如,第一、第二或第三位线(BL0-BL2)320-322)中的一或多个的感测装置360可通过感测特定数据线上的电压或电流而检测相应数据线中的每一存储器单元的状态。
在一或多个编程脉冲(例如,Vpgm)的施加之间,可执行检验操作以确定选定存储器单元是否已到达其既定经编程状态。如果选定存储器单元已到达其既定经编程状态,那么可禁止其进一步编程。如果选定存储器单元尚未到达其既定经编程状态,那么可施加额外编程脉冲。如果在特定数目的编程脉冲(例如,最大数目)之后选定存储器单元尚未到达其既定经编程状态,那么选定存储器单元或与这些选定存储器单元相关联的串、块或页可标记为有缺陷的。
为了擦除存储器单元或存储器单元群组(例如,擦除通常以块或子块执行),可(例如,使用一或多个位线、选择栅极等)将擦除电压(Vers)(例如,通常Vpgm)施加到以擦除为目标的存储器单元的衬底(且因此源极与漏极之间的通道),同时目标存储器单元的字线保持在例如接地电位(例如,Vss)的电位,从而导致从目标存储器单元的浮动栅极到通道的电荷传送(例如,直接注入或佛勒-诺德海姆(FN)隧穿等)。
图4示出存储器装置400的实例框图,所述存储器装置包含具有多个存储器单元404的存储器阵列402,以及用以提供与存储器阵列402的通信或对所述存储器阵列执行一或多个存储器操作的一或多个电路或组件。存储器装置400可包含行解码器412、列解码器414、感测放大器420、页缓冲器422、选择器424、输入/输出(I/O)电路426以及存储器控制单元430。
存储器阵列402的存储器单元404可布置于块中,例如第一块402A和第二块402B。每一块可包含子块。例如,第一块402A可包含第一子块402A0和第二子块402An,且第二块402B可包含第一子块402B0和第二子块402Bn。每一子块可包含数个物理页,每一页包含数个存储器单元404。虽然本文中示出为具有两个块,每一块具有两个子块,且每一子块具有数个存储器单元404,但在其它实例中,存储器阵列402可包含更多或更少的块、子块、存储器单元等。在其它实例中,存储器单元404可布置于数个行、列、页、子块、块等中,且使用例如存取线406、第一数据线410或一或多个选择栅极、源极线等来存取。
存储器控制单元430可根据在控制线432上接收的一或多个信号或指令控制存储器装置400的存储器操作,所述一或多个信号或指令包含例如指示所需操作(例如,写入、读取、擦除等)的一或多个时钟信号或控制信号,或在一或多个地址线416上接收的地址信号(A0-AX)。在存储器装置400外部的一或多个装置可控制控制线432上的控制信号或地址线416上的地址信号的值。在存储器装置400外部的装置的实例可包含(但不限于)主机、存储器控制器、处理器或图4中未示出的一或多个电路或组件。
存储器装置400可使用存取线406和第一数据线410来对(例如,写入或擦除)或从(例如,读取)存储器单元404中的一或多个传送数据。行解码器412和列解码器414可从地址线416接收且解码地址信号(A0-AX),可确定将存取存储器单元404中的哪些,且可提供信号到例如上文描述的存取线406(例如,多个字线(WL0-WLm)中的一或多个)或第一数据线410(例如,多个位线(BL0-BLn)中的一或多个)中的一或多个。
存储器装置400可包含感测电路系统,例如感测放大器420,其配置成使用第一数据线410确定存储器单元404上的数据的值(例如,读取),或确定将写入到存储器单元404的数据的值。例如,在存储器单元404的选定串中,感测放大器420中的一或多个可响应于读取电流在存储器阵列402中流动通过选定串到数据线410而读取选定存储器单元404中的逻辑电平。
在存储器装置400外部的一或多个装置可使用I/O线(DQ0-DQN)408、地址线416(A0-AX)或控制线432与存储器装置400通信。输入/输出(I/O)电路426可根据例如控制线432和地址线416,使用I/O线408将数据的值传入或传出存储器装置400,例如进出页缓冲器422或存储器阵列402。页缓冲器422可存储从在存储器装置400外部的一或多个装置接收的数据,然后将所述数据编程到存储器阵列402的相关部分中,或者可存储从存储器阵列402读取的数据,然后将所述数据发射到在存储器装置400外部的一或多个装置。
列解码器414可接收地址信号(A0-AX)且将其解码为一或多个列选择信号(CSEL1-CSELn)。选择器424(例如,选择电路)可接收列选择信号(CSEL1-CSELn)且选择页缓冲器422中表示将从存储器单元404读取或将编程到存储器单元404中的数据值的数据。选定数据可使用第二数据线418在页缓冲器422与I/O电路426之间传送。
存储器控制单元430可从外部源或供应(例如,内部或外部电池、AC/DC转换器等)接收正和负供应信号,例如供应电压(Vcc)434和负供应(Vss)436(例如,接地电位)。在某些实例中,存储器控制单元430可包含调节器428以内部地提供正或负供应信号。
图5示出实例机器500的框图,本文所论述的任何一或多种技术(例如,方法)可以在所述实例机器上执行。在替代实施例中,机器500可以充当独立装置或可以连接(例如,联网)到其它机器。在联网部署中,机器500可在服务器-客户端网络环境中以服务器机器、客户端机器或这两者的容量操作。在实例中,机器500可充当对等(P2P)(或其它分布式)网络环境中的对等机器。机器500可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、移动电话、网络设备、IoT装置、汽车系统或能够(连续或以其它方式)执行指定将由所述机器采取的动作的指令的任何机器。此外,虽然仅示出单个机器,但术语“机器”也将被视为包含个别地或共同地执行一组(或多组)指令以执行本文中所论述的方法中的任何一或多个(例如,云计算、软件即服务(SaaS)、其它计算机集群配置)的任何机器集合。
如本文所描述,实例可包含逻辑、组件、装置、封装或机构,或者可通过逻辑、组件、装置、封装或机构而操作。电路系统是在包含硬件(例如,简单电路、门、逻辑等)的有形实体中实施的电路的总集(例如,集合)。电路系统成员可以随时间和基础硬件可变性为灵活的。电路系统包含当操作时可单独或组合地执行特定任务的部件。在实例中,电路系统的硬件可以被永恒地设计成实行特定操作(例如,硬接线)。在实例中,电路系统的硬件可以包含可变地连接的物理组件(例如,执行单元、晶体管、简单电路等),所述物理组件包含以物理方式修改(例如,不变集中式粒子的磁性、电气可移动放置等)以编码特定操作的指令的计算机可读媒体。在连接物理组件时,硬件构成的基础电性质例如从绝缘体改变成导体或反之亦然。指令使得参与的硬件(例如,执行单元或加载机构)能够经由可变连接产生硬件中的电路系统的部件以当在操作中时实行特定任务的部分。因此,当装置操作时计算机可读媒体以通信方式耦合到电路系统的其它组件。在实例中,物理组件中的任一个可以用于多于一个电路系统中的多于一个部件中。例如,在操作中,执行单元在一个时间点处可以用于第一电路系统的第一电路中,且由第一电路系统中的第二电路或由第二电路系统中的第三电路在不同时间重新使用。
机器(例如,计算机系统)500(例如,主机装置105、存储器装置110等)可包含硬件处理器502(例如,中央处理单元(CPU)、图形处理单元(GPU)、硬件处理器核心或其任何组合,例如存储器处理装置115等)、主存储器504和静态存储器506,其中的一些或全部可经由互连链路(例如,总线)508彼此通信。机器500可进一步包含显示装置510、字母数字输入装置512(例如,键盘)和用户接口(UI)导航装置514(例如,鼠标)。在实例中,显示装置510、输入装置512和UI导航装置514可为触摸屏显示器。机器500可另外包含存储装置(例如,驱动单元)521、信号产生装置518(例如,扬声器)、网络接口装置520和一或多个传感器516,例如全球定位系统(GPS)传感器、指南针、加速度计或其它传感器。机器500可包含输出控制器528,例如串行(例如,通用串行总线(USB)、并行或其它有线或无线(例如,红外(IR)、近场通信(NFC)等)连接以通信或控制一或多个外围装置(例如,打印机、读卡器等)。
存储装置521可包含机器可读媒体522,体现本文所描述的技术或功能中的任何一或多者或由其利用的数据结构或指令524(例如,软件)的一或多个集合存储于所述机器可读媒体上。指令524还可在其由机器500执行期间完全或至少部分地驻存在主存储器504内、静态存储器506内或硬件处理器502内。在实例中,硬件处理器502、主存储器504、静态存储器506或存储装置521中的一个或任何组合可构成机器可读媒体522。
虽然机器可读媒体522示出为单个媒体,但术语“机器可读媒体”可包含配置成存储一或多个指令524的单个媒体或多个媒体(例如,集中或分布式数据库,或相关联缓存和服务器)。
术语“机器可读媒体”可以包含能够存储、编码或载送用于由机器500执行的指令且使机器500执行本公开的技术中的任何一或多个,或能够存储、编码或载送由此类指令使用或与此类指令相关联的数据结构的任何媒体。非限制性机器可读媒体实例可以包含固态存储器以及光学和磁性媒体。在实例中,集中式机器可读媒体包括具有多个粒子的机器可读媒体,所述粒子具有不变(例如,静止)质量。因此,集中式机器可读媒体是非暂时性传播信号。集中式机器可读媒体的具体实例可以包含:非易失性存储器,例如半导体存储器装置(例如,电可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM))和快闪存储器装置;磁盘,例如内部硬盘和可装卸式盘;磁光碟;以及CD-ROM和DVD-ROM盘。
指令524(例如,软件、程序、操作系统(OS)等)或其它数据存储于存储装置521上,可由存储器504存取以供处理器502使用。存储器504(例如,DRAM)通常是快速但易失性的,且因此是与存储装置521(例如,SSD)不同类型的存储,所述存储装置521适合于长期存储,包含在“断开”条件中时的长期存储。在由用户或机器500的使用中的指令524或数据通常加载于存储器504中供处理器502使用。当存储器504装满时,可分配来自存储装置521的虚拟空间以补充存储器504;然而,因为存储装置521通常比存储器504慢,且写入速度通常比读取速度慢至少两倍,所以虚拟存储器的使用由于存储装置等待时间(与存储器504相比,例如DRAM)可极大地降低用户体验。此外,用于虚拟存储器的存储装置521的使用可极大地减少存储装置521的可用使用寿命。
与虚拟存储器相比,虚拟存储器压缩(例如,内核特征“ZRAM”)使用存储器的部分作为经压缩块存储以避免对存储装置521的分页。分页可在经压缩块中发生直到应该将这些数据写入到存储装置521为止。虚拟存储器压缩增加存储器504的可用大小,同时减少存储装置521上的磨损。
针对移动电子装置或移动存储而优化的存储装置传统地包含MMC固态存储装置(例如,微安全数字(microSDTM)卡等)。MMC装置包含与主机装置的数个并行接口(例如,8位并行接口),且经常是从主机装置可移除和分离的组件。相比之下,eMMCTM装置附接到电路板且视为主机装置的组件,其读取速度比得上基于串行ATATM(串行高级技术(AT)附接,或SATA)的SSD装置。然而,对移动装置性能的需求持续增大,以便完全实现虚拟或增强现实装置,利用增加的网络速度等。响应于此需求,存储装置已经从并行转移到串行通信接口。包含控制器和固件的通用快闪存储(UFS)装置使用具有专用读取/写入路径的低电压差分信令(LVDS)串行接口与主机装置通信,进一步推进了更高的读取/写入速度。
指令524可以进一步利用多个传送协议中的任一个(例如,帧中继、因特网协议(IP)、传输控制协议(TCP)、用户数据报协议(UDP)、超文本传送协议(HTTP)等)经由网络接口装置520使用传输媒体在通信网络526上发射或接收。实例通信网络可以包含局域网(LAN)、广域网(WAN)、包数据网络(例如,因特网)、移动电话网络(例如,蜂窝网络)、简易老式电话(POTS)网络和无线数据网络(例如,称为的电气电子工程师学会(IEEE)802.11系列标准、称为的IEEE 802.16系列标准)、IEEE 802.15.4系列标准、对等式(P2P)网络,以及其它网络。在实例中,网络接口装置520可包含一或多个物理插口(例如,以太网、同轴或电话插口)或一或多个天线以连接到通信网络526。在实例中,网络接口装置520可包含多个天线以使用单输入多输出(SIMO)、多输入多输出(MIMO)或多输入单输出(MISO)技术中的至少一个无线地通信。术语“传输信号”应被视为包含能够存储、编码或载送指令以由机器500执行的任何信号,且包含数字或模拟通信信号或用以促进此软件的通信的其它信号。
图6是基于实际存储器占用率从固定几何结构开始演进到可变几何结构的变更日志区域的分配的图示。固定分配是虚拟分配,它可覆盖与变更日志相关联的所有存储器装置,例如,卡上的所有受管理存储器装置。可变几何结构分配是取决于使用模型的实际分配。在第一时间,在651处,变更日志区域分配652可以被视为具有n x n个元素的表,其中每个元素是物理地址与VP的对应关系。它呈现为简单的表,其中每一行拦截特定页指针表(PPT)。PPT是包含数个物理地址的阵列。表652中的每一行的虚拟尺寸针对在相应行的相同值上能够跟踪的VP数目来设定。术语虚拟用于表示非实际分配的电势值,实际只分配了较小存储器分块。在此实例中,对于n个PPT,每个PPT可包含用于n个VP的物理地址。在变更日志更新期间,可以改变表的几何结构,使其适应采用新结构的剩余存储器,其中每一行的虚拟大小经动态重新分配。这一重新分配发生在每次PPT被拦截时。在所示实例中,在653处,加阴影条目示出了相对于表652的全局编索引模式的分配的实际分配存储器654,以寻址与变更日志相关联的存储器装置。
当实际分配存储器消耗掉用于变更日志的所有可用存储器时,可以触发更新检查点。当L2P变更日志变满时出现检查点,并且检查点程序可包含将L2P变更日志中的所有PPT加载到L2P高速缓存中,以便更新PPT,然后将修改后的PPT刷新(存储)到存储器装置中,例如,NAND存储器装置。在确定所分配数量的存储空间被变更日志使用后,系统可配置成触发将PPT从NAND存储器装置加载到RAM、更新RAM中的PPT并将PPT从RAM刷新到NAND存储器装置的程序。检查点操作可能是一项耗时的操作。
在用于动态扩展存储装置中的变更日志的方法中,其中可以分配动态变更日志表的存储区域的大小可以是固定的,其中对于每个可寻址PPT,条目的最大数目等于e。变更日志中可寻址的PPT的最大数目可以固定为等于r的表行的最大数目。可相对于r行产生PPT位图。位图是从域到数个位的映射,它提供了关于域中的项的信息的表示。PPT位图是针对受管理存储器装置的每个可寻址PPT具有一个位(存储位置)的阵列。在所寻址的PPT处于位图中的位置处,对于所述PPT具有值零的位可识别所寻址的PPT未存储在变更日志中,且对于所述PPT具有值一的位可识别所寻址的PPT存储在变更日志中。替代地,位值一和零可提供相反的识别。在实施例中,可使用单个(一个)PPT位图。但是,变更日志可以实施多个PPT位图。
对于每个特定PPT,可产生VP位图。VP位图针对对应于特定PPT的每个VP包含一个位。可存在r个VP位图,每一行(PPT)有一个。可产生PPT的动态链表,其中节点的最大数目等于r。可产生与这些PPT节点中的每一个的VP相关联的动态链表,其中每个此类动态链表具有的节点的最大数目等于e。可以实施一或多个硬件加速器,其中每个硬件加速器能够对存储器范围(字节序列)内确证的位的数目计数。存储器范围可包含PPT位图中位位置的范围或VP位图中位位置的范围。
在用于变更日志的动态扩展的分配中,如上文所提到,限定变更日志表针对每个PPT可含有的条目数目(e=条目计数)。一行中的每个条目识别VP的索引。变更日志被视为动态表,其中每个行是特定PPT的入口点,且每个列是特定PPT的特定VP索引。表可以通过数目可变的行动态地改变它的结构,其中每个行可具有可变数目的列。动态表结构可在两个极限情况中改变。一个极限情况是基于单个PPT上就VP而言e小于或等于PPT大小的情况下产生一个行和数目等于e的列的表的完整连续写入事务。第二极限情况是基于不同PPT上在e小于或等于存储器装置大小内的PPT计数的情况下产生具有e个行的表的完整随机写入事务,其中每个行具有单个列。
变更日志可被视为[行]和[列]的二维向量变更日志。行可对应于PPT,且列可对应于VP。可以存取变更日志以便对相同VP进行入队、覆写和读取。所有存取类型都可执行相同步骤。图7是存取用于在VP处写入的变更日志的实例程序的实施例的流程图。在710处,通过使用VP的索引将VP用作用于写入操作的变更日志的条目。在720处,使用索引来检查PPT位图中的PPT存在情况。在730处,确定PPT是否存在。在确定PPT存在于PPT位图中后,在740处,评估PPT(表中的行)的位置。这一评估可以通过在PPT位图内的相关PPT位位置之前进行位计数来实施。在750处,可以检查VP位图内的VP存在情况。在760处,确定VP是否存在。在确定VP存在于VP位图中后,在770处,评估VP(表中的列)的位置。这一评估可以通过在VP位图内的相关VP位位置之前进行位计数来实施。在780处,可以将相关列表导航到所要VP节点。可以根据所要VP节点处的信息对所寻址VP进行写入动作。如上文所提到,这一程序可用于对所寻址VP进行读取操作或其它操作。
图8是将VP有效添加到变更日志数据结构的实例操作的实施例的图示。在此实例中,将添加VP,所述VP是特定PPT的VP位图的相关位3,所述特定PPT是PPT位图861中的PPT0。PPT位图861示出有PPT0、PPT1、PPT2、PPT3、PPT4、PPT5和PPT6的条目,且指示PPT位图861可具有用于更多PPT的更多位置。PPT0、PPT3和PPT5中的每一个位置中有一位,指示在变更日志中存在PPT0、PPT3和PPT5。在PPT1、PPT2、PPT4和PPT6中的每一个位置中的零位指示变更日志中不存在PPT1、PPT2、PPT4和PPT6。还示出了分别用于可寻址PPT0、PPT3和PPT5的VP位图865-0、865-3和865-5。VP位图865-0上方的数字0、1、2、3、4、5、6、7、8是每一个VP位图中的VP索引位置。紧靠着PPT位图位置0的是0。紧靠着PPT位图位置3的是1,且紧靠着PPT位图位置5的是2。这些数字0、1和2识别PPT0、PPT3和PPT5处于变更日志中PPT的经链接PPT列表中,其中PPT0在PPT列表的第0个(第一)位置中,PPT3在PPT列表的1(第二)位置中,且PPT5在PPT列表的2(第三)位置中。对应于PPT列表的第0个(第一)位置的是示出为在通过插入过程添加与位3相关的VP之前具有三个节点[0]、[1]和[2]的经链接VP列表866-0。
在此实例中,对于等于三的总位计数,VP位图865-0具有确证在VP位图865-0的索引位置0、2和4中的一。经确证一指示存在对应于PPT0的相关联VP。经确证一指示存在对应于PPT0的相关联VP。位图865-0中的经确证位映射到经链接VP列表866-0的所述三个节点[0]、[1]和[2]。VP位图865-3具有等于两个经确证一的总位计数,指示存在对应于PPT3的相关联VP。位图865-3中的两个经确证位映射到经链接VP列表866-1的所述两个节点[0]和[1]。VP位图865-5具有等于三个经确证一的总位计数,指示存在对应于PPT5的相关联VP。位图865-3中的三个经确证位映射到经链接VP列表866-2的所述三个节点[0]、[1]和[2]。
当VP在VP索引位置3处添加到VP位图865-0中时,VP索引位置3将通过使在添加VP之前存在的零变成一来确证。对VP位图865-0中在索引位置3处的经添加VP之前的经确证位(设置为一)的数目进行计数,其中这些计数的经确证位对应于经链接VP列表866-0中的节点。在此实例中,计数使得确定在添加VP的索引位置3之前启用2个位,这指示VP列表866-0上的两个迭代。两个迭代意味着对于经添加VP,在从VP列表866-0的头端开始当前在VP列表866-0中的前两个节点之后将节点插入在VP列表866-0中。迭代是列表中到期望节点的导航或移动。替代地,计数可以从VP列表866-0的尾部进行。选择从哪一端开始计数可取决于添加VP元素的VP索引和VP位图865-0的索引位置的数目。通过插入与位图865-0的VP索引3相关的节点作为VP列表866-0的节点[2],VP列表的节点[2]变成VP列表866-0的节点[3]。
VP列表866-0、866-3或866-5等VP列表的列表导航可以从列表头部或列表尾部执行。这两个路线中优选的是更短的路线。此方法中存取变更日志元素的列表迭代最大数目是给定PPT的VP计数除以二。基于节点位置,可以选择从列表的头部或尾部导航列表,在此情况下,最坏情况是最大列表大小除以二,其中最大列表大小是PPT中所含的VP的数目,它可以写成(VP_count_for_PPT)。
在一种方法中,如本文所传授,只存储物理地址就足够,而不用存储关于变更日志中的L2P转换的一对信息。此类变更日志可使用直接编索引来存取。另外,使用位图结构化的变更日志可支持VP直接覆写、去除和添加。此外,因为VP元素在数据事务中更新,所以可以免去对VP的L2P历史的存储,从而减少所使用的数据存储量。
对于256GB数据存储器装置的实例,RAM等存储装置中用于变更日志的存储量可包含用于PPT位图的8KB和用于VP位图的128B,其中变更日志元素大小为4B。在256个PPT的情况下,可以使用大致32KB来寻址256个VP位图,每个PPT具有一个VP位图。对于4096个元素的变更日志分配大小,存储大小大致是16KB。对于此实例,存储装置中用于变更日志的存储量增加到大致为32KB+16KB+8KB=56KB。
为了实施使用位图和编索引的变更日志方法,对在PPT位图内在相关PPT位位置之前和VP位图内部在相关VP位位置之前的位计数可以通过一或多个硬件加速器来实现。硬件加速器可经实施以对存储器范围(字序列)内确证的位数目计数。所述计数可以在特定测试位上截断。可以实施此类硬件加速器,检查特定测试位在存储器范围(字序列)内是否确证。特定测试位是当前关注位。每个硬件加速器可具有数个寄存器。寄存器可包含用于保存开始存储器地址的start_addr寄存器、用于识别要进行迭代以供计数的字数的字寄存器,以及用于识别迭代方向的方向寄存器。start_addr寄存器可以是32位寄存器或另一适当大小的寄存器。字寄存器可以是32位寄存器或另一适当大小的寄存器。方向寄存器可以是一位寄存器。start_addr+字指示在测试位之前确证的位数目。start_addr+字指示在测试位之后确证的位数目。
硬件加速器的寄存器还可包含test_bit_pos寄存器、bits_count寄存器、test_bit_state寄存器、enable_check寄存器和check_complete寄存器。test_bit_pos寄存器的内容可指示将在存储器范围内的哪一位上截断计数。它可用于知晓在所指示测试位之前或之后确证的位数目(位计数)。测试位既定绝对在(start_addr+字)范围内。test_bit_pos寄存器可以是32位寄存器或另一适当大小的寄存器。bits_count寄存器可保存位计数的结果。bits_count寄存器可以是32位寄存器或另一适当大小的寄存器。test_bit_state寄存器可将测试位的检查结果保存为已确证或未确证。test_bit_state寄存器可以是一位寄存器或另一适当大小的寄存器。enable_check寄存器可保存在确证时开始位计数并检查测试位是否确证的指示符。它可用于在check_complete寄存器中重置所述指示符。enable_check寄存器可以是一位寄存器或另一适当大小的寄存器。check_complete寄存器的内容可指示计数完成时间。在确证时,它可用于在enable_check寄存器中重置所述指示符。check_complete寄存器可以是一位寄存器或另一适当大小的寄存器。
使用变更日志索引方案的方法可包含使用更少存储器来存取具有X行和Y列的虚拟表的操作,其中项的最大计数等于X*Y(*是乘法运算符)。因为在实际条件或操作环境中,虚拟表可能从未满过,所以如本文所教示,分配模式允许虚拟表使用减小的存储区域,从而确保对表项的直接存取。这一存取可以使用四个坐标——两个标准坐标(X和Y)和两个连续坐标(Sx和Sy)——而不是两个坐标(X和Y)来实现。
分别使用前两个坐标X和Y作为x_bitmap和y_bitmap内部的位置,可以检查所要项在表中的存在情况。检查可以通过确定适当位的相关位置中的对应位被确证来实现,其中确证可对应于相应位位置含有一。在替代逻辑方法中,确证可对应于相应位位置含有零。如果表项存储在一些链表中,其中每个列表被视为行且每个节点被视为列,那么连续坐标与在位X和位Y之前x_bitmap和y_bitmap中所确证的位位数目一致。在图9中示出实例。
图9是与虚拟表相关联的实例位图和链表的实施例的图示,所述虚拟表可表示具有使VP元素与PPT相关的元素的表。未示出的虚拟表具有六行五列,其中元素的分配可具有6*5=30个项。在图9中,一个位图961示出为具有六个行的一个列,其中所述六个行可以从上到下依序编索引为0、1、2、3、4和5。位图961可对应于与六个PPT相关联的PPT位图,其中这六个PPT以与行索引0、1、2、3、4和5一对一的对应关系标记为PPT0、PPT1、PPT2、PPT3、PPT4和PPT5。在此实例中,位图961中索引为1的行对应于位图965-1,且位图961中索引为4的行对应于位图965-4,其中位图965-1和位图965-4中的每一个是具有编索引为0、1、2、3和4的五个列的行。位图965-1可对应于PPT1的VP位图,且位图965-4可对应于PPT4的VP位图。
考虑示出为位图965-1和位图965-4中的经确证一的四个项(项1、项2、项3和项4)的实际分配情况。因为不存在与位图961相关联的其它项的实际分配,所以仅位图965-1和位图965-4分配为行。为位图961的行1分配项1,其中在位图965-1的列1中确证一。为位图961的行1分配项2,其中在位图965-1的列4中确证一。为位图961的行4分配项3,其中在位图965-3的列0中确证一。为位图961的行4分配项4,其中在位图965-3的列3中确证一。位图965-1和位图965-4中的其它位置含有零,因为在此实例中只分配了四个项。有两个列表966-1和966-3分别链接到位图965-1和位图965-4。链表966-1只含有由位图965-1中已确证一的位置限定的两个元素。链表966-1的位置零是含有对应于位图965-1中与位图961的位置1相关的列1的项1的信息的节点,且链表966-1的位置一是含有对应于位图965-1中与位图961的位置4相关的列4的项2的信息的节点。链表966-4的位置零是含有对应于位图965-4中与位图961的位置4相关的列0的项3的信息的节点,且链表966-4的位置一是含有对应于位图965-4中与位图961的位置4相关的列3的项4的信息。尽管相关联的虚拟表对应于三十个项的分配,但是位图和链表的使用允许考虑多个项的分配,在此实例中,是四个项的分配。
图10A-10D示出实施可减少用于变更日志的存储区域的变更日志编索引方案的实例。为便于讨论,在这些图中表示较小存储器的变更日志。在此实例中,虚拟页大小是4096字节(每个VP被称为4kB),装置存储大小为20VP(4096*20=81900个字节,其被称为80kB)。物理页表(PPT)的数目设置成等于四,其中每个PPT可寻址五个VP。这四个PPT可以标记为PPT0、PPT1、PPT2和PPT3。PPT0可寻址从VP0到VP4的VP元素。PPT1可寻址从VP5到VP9的VP元素。PPT2可寻址从VP10到VP14的VP元素。PPT3可寻址从VP15到VP19的VP元素。VP0、VP1、VP2、VP3、VP4、VP5、VP6、VP7、VP8、VP9、VP10、VP11、VP12、VP13、VP14、VP15、VP16、VP17、VP18、VP19中的每一个包含存储区域内相应VP的绝对索引。例如,对于VP8,8是存储区域内相应VP的绝对索引。
图10A示出存储装置中的全局变更日志表1055。存储装置可以被实现为RAM。全局变更日志表(GCT)1055能够表示可使用两个空间坐标(用于对应于PPT的行的Y和用于对应于VP的列的X)寻址的完整存储区域,其中VP布置在PPT中。但是,这种类型的表示关于用于变更日志的存储装置的存储器具有缺点。例如,其中VP大小=4096个字节的512GB的存储器在GCT 1055中使用134,217,728个单元,其中每个单元含有VP重新映射的位置的32位物理地址。在此情况下,寻址完整装置存储器的RAM应该大致是512MB。用于RAM的这种大小的存储器提供了产生不同寻址模式的动力。在各种实施例中,有效获得将VP与PPT相关的信息的相同结果可以通过使用四个坐标而不是典型的两个坐标Y和X而使用更少的RAM来实现。这两个空间坐标(Y和X)用于检查用于存取变更日志的位图中的VP存在情况。可以使用两个时间或连续坐标(SY和SX)来导航链表以到达期望VP节点(单元)。在此实例中,GCT 1055包含索引为0到3的行,用来分别与给定为PPT0、PPT1、PPT2和PPT3的PPT相对应。全局变更日志表1055中的每个行具有用于VP的索引为0到4的五个列。
图10B示出由主机发出的写入命令序列1058,其中可以看到所有VP拦截图10A的GCT中的行。主机装置写序列包含产生在从0到表示可能VP的总数的数字的连续数字序列内的绝对VP索引VP0、VP5、VP3、VP19、VP8、VP6、VP8。在写入序列1058中,可以看到VP0和VP3属于GCT 1055的PPT0;可以看到VP5、VP6和VP8属于GCT 1055的PPT0;并且可以看到VP19属于GCT 1055的PPT3。VP的写入序列1058中的最终元素是相对于VP8的另一写入操作。
图10C和10D示出RAM中的实例变更日志表示的实施例。这种表示在RAM中占用的空间比GCT 1055更少。图10C示出在用于空间坐标的变更日志中可以布置位图的实例方式的实施例。位图1061是PPT位图1061。Y坐标是期望VP的PPT,其中Y坐标用0到3的整数编索引。在PPT位图1061的每个位置中的相关位状态具有两个状态中的一个。PPT位图1061的某一位位置中的值零可用于意指通过给定Y坐标寻址的PPT未存储在变更日志中。PPT位图1061的某一位位置中的值一可用于意指通过给定Y坐标寻址的PPT存储在变更日志中。依据所使用的逻辑,表示PPT的存在情况的零和一的作用可以颠倒。
存在与每个Y坐标相关联的VP位图。Y坐标0、1、2和3分别与VP位图1065-0、VP位图1065-1、VP位图1065-2和VP位图1065-3相关。每个VP位图的在此实例中为0到4的X坐标是相关PPT内的VP索引。所述四个位图中的一VP位图的某一位位置中的值零可用于意指通过给定X坐标寻址的VP未存储在变更日志中。所述四个位图中的一VP位图的某一位位置中的值一可用于意指通过给定X坐标寻址的VP存储在变更日志中。依据所使用的逻辑,表示VP的存在情况的零和一的作用可以颠倒。如图10C中所示,以下识别变更日志中VP0、VP3、VP5、VP6、VP8和VP19的存在:在VP位图1065-0的位置零中的一;在VP位图1065-0的位置三中的一;在VP位图1065-1的位置零中的一;在VP位图1065-1的位置一中的一;在VP位图1065-1的位置三中的一;以及在VP位图1065-3的位置四中的一,其中它们的存在对应于通过主机进行的先前写入序列1058,如图10B中所示。
图10D示出在用于时间坐标的变更日志中布置链表的实例方式的实施例。列表1064链接到PPT位图1061。链表1064是PPT链表,其中PPT链表1064只含有存储在变更日志中的PPT。在图10B和图10C的实例中,PPT链表1064中只存在三个节点,对应于图10C的PPT位图1061中的经确证一。对于PPT链表1064中的每个PPT,存在一个VP链表。对于PPT链表1064中的PPT0,存在VP链表1066-0。对于PPT链表1064中的PPT1,存在VP链表1066-1。对于PPT链表1064中的PPT3,存在VP链表1066-3。对于每个链表,存在可以从其导航链表以找到主机产生的操作的所要VP的头端和尾端。
考虑以下用于搜索和更新变更日志内的VP的实例算法。一种算法是达到指定目标的一系列动作或步骤。在此实例中,使用位图、链接到位图的列表和位图中经确证位的计数器来更新VP8,其中VP8是如图10B中所示的通过主机进行的VP的写入序列1058中的最终VP。位图和链表在下文相对于图10C和10D来论述。如上文针对此实例中的VP8所提到,8是存储区域内VP8的绝对索引。在步骤1处,可以评估与对应于VP8的PPT相关的位的相关联空间Y坐标,其中在此实例中,空间Y坐标是识别PPT位图1061中的特定位位置的0到5中的一个。这一评估可通过进行VP绝对索引除以PPT大小的整数除法来执行。对于VP8,使用整数除法方法的位图1061中的相关PPT位通过下式给出:
PPT位=int(VP绝对索引/PPT大小)=8/5=1
其中PPT位图1061中的一位置的Y坐标是1,VP8在PPT1中。
在步骤2处,检查PPT位图(例如PPT位图1061)中相关位的状态。如果确证了PPT位图1061中来自整数除法的相关位,其设置成等于一,那么相关PPT存储在变更日志中。如图10C中所见,Y坐标的值是一,Y坐标是PPT位图1061中的位置1,因此,对于此实例,PPT1存储在变更日志中。
在步骤3处,通过对PPT位图1061中在期望位之前的经确证位的数目进行计数来评估PPT列表1064中节点(其位置)的时间Y坐标。在此实例中,空间Y坐标是PPT位图1061中的位一。PPT位图1061中在位一位置之前只存在一个经确证位,它是PPT位图1061中在位零位置中的一,对应于PPT0。PPT0是从PPT列表1064中的头端开始的第一节点,其中PPT列表1064列出每个PPT,其中它在PPT位图1061中的对应位置被确证。因此,在此实例中,期望PPT节点是PPT列表1064中的第二节点。此步骤包含将PPT链表1064导航到PPT链表1064中的第二节点。此节点含有去往与PPT1相关的VP链表的指针。
在步骤4处,评估在与经确定PPT相关的VP位图中与期望VP相关的位(位置)的空间X坐标。这个位位置是VP位图内的VP索引。评估可通过执行VP绝对索引相对于PPT大小的取模运算来执行(取模运算的符号还在本文中给出为%)。在此实例中,VP8的VP索引可以通过下式给出:
VP索引=(VP绝对索引)mod(PPT大小)=8%5=3,
其中3是VP8在经确定PPT中的相对VP索引。在此实例中,更新为VP索引三的期望VP8识别VP8与VP位图中的位置三相关(在此实例中,VP位图具有索引为零到四的五个位置,使得位置三是位图的第四位置)。因为相关PPT已经确定为PPT1,所以期望VP8与图10C中示出的VP位图1065-1的位置三相关联。
在步骤5处,检查VP位图(在此实例中,例如是VP位图1065-1)中相关位的状态。如果确证了通过根据取模运算确定的VP索引给出的相关位,它是设置成等于一的VP索引处的值,那么所确定PPT的具有所述VP索引的期望VP存储在变更日志内。如图10C中所看到,所述VP索引是VP位图1065-1中的位置3,它的值是一,因此对于此实例,期望VP索引存储在变更日志内。
在步骤6处,通过对VP列表1066-1链接到的VP位图1065-1中在期望位之前的经确证位的数目进行计数来评估VP列表1066-1中节点(其位置)的时间X坐标。在此实例中,空间X坐标在VP位图1065-1中的位三位置处。在VP位图1065-1中对应于PPT1的位三位置之前确证两个位,它们是VP位图1065-1的位零位置中的一和VP位图1065-1的位一位置中的一。因此,期望节点是VP列表1066-1中的第三节点,它含有相关NAND物理地址。此节点可更新有关于VP8的新信息。
上述算法已经应用于图10A-10D的实例,其中PPT的大小和VP的数目较小以便论述。上述算法方法可应用于具有数据存储的大型分配的存储器装置。另外,此算法方法可进行各种排列。类似于本文中的教示,使用位图、链接到位图的列表和位图中经确证位的计数器可以实现相对于常规方法的用于变更日志操作的存储器占用率的动态减小。
图11是包含与存储器系统1110一起操作的主机1105的实例系统1100的实施例的框图,所述存储器系统具有多个存储器装置和一个存储装置1114,其中以用于存储装置1114中的可扩展存储区域的分配模式在存储装置1114中构造变更日志,所述变更日志经实施以使存储器装置中的一或多个中的虚拟页地址与物理地址相关。存储装置1114可以被实现为RAM装置。主机1105通过接口1120耦合到存储器系统1110。存储器系统1110可包含通过总线1127耦合到存储器装置1112-1、1112-2、1112-3、1112-4、1112-5和1112-6的处理装置1115。存储器装置1112-1、1112-2、1112-3、1112-4、1112-5和1112-6可以是NAND存储器装置。尽管在图11中示出六个存储器装置,但是存储器系统1110可以用少于或多于六个的存储器装置实施,也就是说存储器系统1110可包括一或多个存储器装置。存储器装置可以数种格式实现,包含但不限于多个存储器裸片。处理装置1115可包含一或多个处理器或结构化为一或多个处理器。
存储器系统1100可包括具有可由处理装置1115执行以至少管理存储器装置1112-1、1112-2、1112-3、1112-4、1112-5和1112-6的代码的固件1125。固件1125可驻存在存储器系统1110中耦合到处理装置1115的存储装置中。固件1125可使用总线1127或存储器系统1110上的某一其它接口耦合到处理装置1115。替代地,固件1125可驻存在处理装置1115中,也可以利用固件组件分布在存储器系统1110中,例如但不限于代码,包含处理装置1115中的一或多个组件。固件1125可包含具有可由处理装置1115执行以在存储器装置1112-1、1112-2、1112-3、1112-4、1112-5和1112-6上操作的指令的代码。所述指令可包含使用位图、链接到位图的列表和位图中经确证位的一或多个计数器控制存储装置1114中变更日志的存储大小的指令,其中变更日志经实施以使存储器装置1112-1、1112-2、1112-3、1112-4、1112-5和1112-6中的一或多个中的虚拟页地址与物理地址相关。所述指令可包含使用位图、列表和位图中经确证位的所述一或多个计数器来更新变更日志的指令。位图、列表和计数器可以相对于图6-10、12和13教示的方式实现。
位图和列表可包含页指针表位图、虚拟页位图、页指针表列表和虚拟页列表。页指针表位图可布置成识别变更日志中页指针表的存储状态。虚拟页位图可布置成使得在页指针表位图中编索引的每个页指针表都具有一个虚拟页位图。每个虚拟页位图可布置成使用虚拟页地址的索引识别变更日志中虚拟页地址的存储状态。页指针表列表可以结构化为存储在变更日志中的页指针表列表,其中所述列表链接到页指针表位图。虚拟页列表可以布置为页指针表列表中的每个页指针表的虚拟页列表。每个虚拟页列表可识别存储在变更日志中的一组虚拟页地址,其中虚拟页列表链接到相应的虚拟页位图。索引可以从初始整数开始按照顺序次序用整数编写,并且索引可按照由每个页指针表的索引数目限定的顺序次序指派给页指针表。每个页指针表可具有与变更日志表示的其它页指针表相同数目的经分配索引。可以使用索引的其它布置来操作变更日志。页指针表位图的某一位置中的值一可识别与所述位置相关的页指针表存储在变更日志中,且页指针表的虚拟页位图的某一位置中的值一可识别与页指针表的虚拟页位图的所述位置相关的虚拟页存储在变更日志中。
系统1100和它的组件可以结构化成数种不同布置。例如,系统1100可以布置有组件类型的变化,包括主机1105、接口1120、存储器系统1110、存储器装置1112-1、1112-2、1112-3、1112-4、1112-5和1112-6、处理装置1115和总线1129。主机1105可包括一或多个处理器,其类型可发生变化。接口1120可布置为但不限于外围组件互连高速(PCIe)接口。存储器系统1110可以是但不限于SSD。存储器装置1112-1、1112-2、1112-3、1112-4、1112-5和1112-6可以是NAND存储器装置。处理装置1115可包含与存储器装置1112-1、1112-2、1112-3、1112-4、1112-5和1112-6兼容的一或多种类型的处理器或结构化为所述一或多种类型的处理器。总线1127可以是开放式NAND快闪接口(ONFI)总线,存储器装置1112-1、1112-2、1112-3、1112-4、1112-5和1112-6是NAND快闪存储器装置。存储装置1114可经实施以提供用于维护存储器系统1110的数据或参数。存储装置1114可包含RAM。尽管在图11中,存储装置1114在存储器系统1110中的处理装置1115外部,但是存储装置1114可以集成到处理装置1115中。存储装置1114可以耦合到总线1127以与存储器系统1110的其它组件通信。替代地,存储装置1114可以与处理装置1115耦合,其中处理装置1115处理存储装置1114和存储器系统1110的其它组件之间的通信。存储装置1114可以耦合到总线1127和处理装置1115。
在各种实施例中,固件1125可具有可由处理装置1115执行以在存储器装置1112-1、1112-2、1112-3、1112-4、1112-5和1112-6中的多个存储器装置上操作的指令。所述操作可包含为存储器系统1110提供变更日志操作。变更日志操作可包含分配存储装置1114中的可扩展存储区域的模式,其中存储L2P变更日志可潜在地覆盖整个存储器系统1110的装置LBA。所分配区域可经结构化以提供对变更日志上下文的快速存取,从而免去了复杂的搜索和排序算法。变更日志元素可以通过知晓它在变更日志内的确切位置来存取。
固件1125可结合存储装置1114操作,以在操作存储器系统1110的变更日志时使用位图、链接到位图的列表和对位图中经确证位进行计数的一或多个计数器。位图中的一个可经结构化以指示变更日志中页指针表的状态,并且位图中的另一个可经结构化以指示页指针表的虚拟页地址的状态。所述一或多个计数器可经实施以导航链接到一个位图的一个列表以到达一单元,从而相对于用作变更日志的条目的指定虚拟页地址更新变更日志。固件1125可包含更新变更日志的指令。这些指令可包含以下指令:使用虚拟页地址作为变更日志的条目而在存储装置中的变更日志中发起搜索;识别指定虚拟页地址的索引;使用所述索引确定与所述索引相关的页指针表;在页指针表位图中检查变更日志中经确定页指针表的状态;响应于确定经确定页指针表的状态为存储在变更日志中,评估页指针表列表中经确定页指针表的位置,其中所述列表链接到页指针表位图;确定经确定页指针表的虚拟页位图中对应于所述索引的位置;在经确定页指针表的虚拟页位图中的所述位置处检查变更日志中指定虚拟页的状态;响应于确定指定虚拟页地址的状态为存储在变更日志中,评估虚拟页列表中所述索引的位置,其中虚拟页列表链接到虚拟页位图;以及更新关于在虚拟页列表中所述索引的位置处的指定虚拟页地址的信息。信息的更新可包含移除虚拟页列表中所述索引的位置。
与存储器系统1110相关联的变更日志可在存储装置1114中结构化有所分配数量的存储空间。固件1125可包含在确定所分配数量的存储空间被变更日志使用后触发将PPT从存储器装置1112-1、1112-2、1112-3、1112-4、1112-5和1112-6中的一或多个或另一存储器装置加载到RAM或另一存储装置(例如,存储装置1114)、更新RAM中的页指针表并将页指针表从RAM刷新到所述一或多个存储器装置1112-1、1112-2、1112-3、1112-4、1112-5和1112-6或另一存储器装置的程序的指令。
固件1125的指令可例如由处理装置1115执行,以执行与索引相关的页指针表的确定,所述确定包含所述索引除以等于分配用于变更日志的页指针表的总数的数字的整数除法。页指针表列表中经确定页指针表的位置的评估可包含对页指针表位图中在经确定页指针表的位之前的经确证位的数目进行计数。固件1125的指令可例如由处理装置1115执行,以执行经确定页指针表的虚拟页位图中索引位置的确定,所述确定包含索引与等于分配用于变更日志的页指针表的总数的数字的取模运算。虚拟页列表中索引位置的评估可包含对经确定页指针表的虚拟页列表中在虚拟页列表中的索引的位之前的经确证位的数目进行计数。
申请保护的系统1100可包含硬件加速器1170,用于对存储器范围中经确证位的数目进行计数。硬件加速器1170可布置为存储器系统1110的组件或单独装置,以便对存储装置1114中的位图和链接到位图的列表中的经确证位进行计数,从而执行变更日志的功能,如本文所教示。硬件加速器1170可包含数个计数器1172和数个寄存器1174,以便包含与存储器范围的开始、计数的方向和计数的结果相关的数据。所述数个计数器1172可包含用于变更日志的每个位图的计数器。所述数个计数器1172可包含和与变更日志相关联的位图及链表一起使用的单个计数器。所述数个计数器1172可包含用于PPT的位图和链表的计数器及用于VP的位图和链表的另一计数器。计数器1172可布置成对页指针表位图中经确证以将页指针表识别为存储在变更日志中的位的数目进行计数。计数器1172可布置成对给定页指针表的虚拟页位图中经确证以识别存储在变更日志中的虚拟页地址的位的数目进行计数。
图12是操作变更日志的实例方法1200的实施例的特征的流程图,其中所述变更日志经实施以使存储器装置中的虚拟页地址与物理地址相关。方法1200可以使用执行存储在固件中的指令的一或多个处理装置来实施。在1210处,使用位图、链接到位图的列表和位图中经确证位的计数器来控制存储装置中变更日志的存储大小。在1220处,使用位图、列表和位图中经确证位的计数器来更新变更日志。使用位图可包含使用一个位图识别变更日志中页指针表的状态,以及使用另一位图识别页指针表的虚拟页地址的状态。使用计数器可包含导航链接到一个位图的一个列表以到达单元,从而相对于用作变更日志的条目的指定虚拟页地址更新变更日志。
图13是更新存储装置中的变更日志的实例方法1300的实施例的特征的流程图,其中所述变更日志经实施以使存储器装置中的虚拟页地址与物理地址相关。可以根据与方法1200相关联的变更日志实施更新后的变更日志。方法1300可以使用执行存储在固件中的指令的一或多个处理装置来实施。在1310处,使用将进行更新的指定虚拟页地址作为变更日志的条目而在存储装置中的变更日志中发起搜索。在1320处,识别指定虚拟页地址的索引。在1330处,使用所述索引确定与所述索引相关的页指针表。确定与所述索引相关的页指针表可包含执行所述索引除以等于分配用于变更日志的页指针表的总数的数字的整数除法。
在1340处,在页指针表位图中检查变更日志中经确定页指针表的状态。在1350处,响应于确定经确定页指针表的状态为存储在变更日志中,评估页指针表列表中经确定页指针表的位置,其中所述列表链接到页指针表位图。评估页指针表列表中经确定页指针表的位置可包含对页指针表列表中在经确定页指针表的位之前的经确证位的数目进行计数。
在1360处,确定经确定页指针表的虚拟页位图中对应于所述索引的位置。确定经确定页指针表的虚拟页位图中对应于所述索引的位置可包含执行所述索引与等于分配用于变更日志的页指针表的总数的数字的取模运算。在1370处,在经确定页指针表的虚拟页位图的所述位置处检查变更日志中指定虚拟页地址的状态。
在1380处,响应于确定指定虚拟页地址的状态为存储在变更日志中,评估虚拟页列表中所述索引的位置,其中虚拟页列表链接到虚拟页位图。评估虚拟页列表中所述索引的位置可包含对经确定页指针表的虚拟页列表中在虚拟页列表中所述索引的位之前的经确证位的数目进行计数。在1390处,更新关于对应于虚拟页列表中所述索引的位置的指定虚拟页地址的信息。
方法1200的变化形式、类似于方法1200的方法、方法1300、类似于方法1300的方法、方法1200和方法1300的组合以及类似于方法1200和类似于方法1300的方法的组合可包含数个不同实施例,这些实施例可依据此类方法的应用和/或其中实施此类方法的系统的架构来组合。
用于操作一或多个存储器装置的固件可包括指令,例如微码,所述指令在由处理装置执行时可使操作得以执行,所述操作包含操作变更日志的操作,其中所述变更日志经实施以使存储器装置中的虚拟页地址与物理地址相关。处理装置可以实施为一组一或多个处理装置,例如但不限于一组一或多个处理器、一组一或多个存储器控制器或其组合。
通过由处理装置执行固件的指令来执行的操作可包含执行方法1200、类似于方法1200的方法、方法1300、类似于方法1300的方法、方法1200和方法1300的组合、类似于方法1200和类似于方法1300的方法的组合的任务的操作,以及如本文所教示的其它类似操作。通过由处理装置执行固件的指令来执行的操作可包含执行如本文所教示的系统的功能的操作。上述固件或类似固件的指令的变化形式可包含数种不同实施例,这些实施例可以依据此类固件的应用和/或其中实施此类固件的系统的架构来组合。固件的此类指令在由一或多个处理装置执行时可使操作得以执行,所述操作可包含使用位图链接到位图的列表和位图中经确证位的计数器来控制存储装置中变更日志的存储大小,所述变更日志经实施以使存储器装置中的虚拟页地址与物理地址相关;以及使用位图、列表和位图中经确证位的计数器来更新变更日志。使用位图的操作可包含使用一个位图识别变更日志中页指针表的状态,以及使用另一位图识别页指针表的虚拟页地址的状态。使用计数器的操作可包含导航链接到一个位图的一个列表以到达单元,从而相对于用作变更日志的条目的指定虚拟页地址更新变更日志。
固件的指令在由一或多个处理装置执行时可使更新变更日志的操作得以执行,所述操作可包含:使用指定虚拟页地址作为变更日志的条目在存储装置中的变更日志中发起搜索;识别指定虚拟页地址的索引;使用所述索引确定与所述索引相关的页指针表;在页指针表位图中检查变更日志中经确定页指针表的状态;响应于确定经确定页指针表的状态为存储在变更日志中,评估页指针表列表中经确定页指针表的位置,所述列表链接到页指针表位图;确定经确定页指针表的虚拟页位图中对应于所述索引的位置;在经确定页指针表的虚拟页位图中的所述位置处检查变更日志中指定虚拟页地址的状态;响应于确定指定虚拟页地址的状态为存储在变更日志中,评估虚拟页列表中所述索引的位置,所述虚拟页列表链接到虚拟页位图;以及更新关于对应于虚拟页列表中所述索引的位置的指定虚拟页地址的信息。
上述固件或类似固件的指令的变化形式可包含数种不同实施例,这些实施例可以依据此类固件的应用和/或其中实施此类固件的系统的架构来组合。执行固件指令的操作可包含数个操作。确定与所述索引相关的页指针表的操作可包含执行所述索引除以等于分配用于变更日志的页指针表的总数的数字的整数除法。确定经确定页指针表的虚拟页位图中对应于所述索引的位置的操作可包含执行所述索引与等于分配用于变更日志的页指针表的总数的数字的取模运算。评估页指针表列表中经确定页指针表的位置的操作可包含对页指针表列表中在经确定页指针表的位之前的经确证位的数目进行计数。评估虚拟页列表中所述索引的位置的操作可包含对经确定页指针表的虚拟页列表中在虚拟页列表中所述索引的位之前的经确证位的数目进行计数。
在各种实施例中,一种系统可包括存储器装置和存储变更日志的存储装置,其中虚拟页地址的标识是用于确定存储器装置中的物理地址的入口点,其中变更日志经实施以使存储器装置中的虚拟页地址与物理地址相关。变更日志可用于一组存储器装置。变更日志可包含:用于识别变更日志中页指针表的存储状态的页指针表位图;在页指针表位图中编索引的每个页指针表的虚拟页位图,每个虚拟页位图布置成使用虚拟页地址的索引识别变更日志中虚拟页地址的存储状态;存储在变更日志中的页指针表列表,所述列表链接到页指针表位图;以及页指针表列表中每个页指针表的虚拟页列表,每个虚拟页列表识别存储在变更日志中的虚拟页地址,虚拟页列表链接到虚拟页位图。
如本文所教示,系统和其特征的变化形式可包含数种不同实施例和特征,它们可以依据此类系统的应用和/或其中实施系统的架构来组合。此类系统的特征可包含索引从初始整数开始按照顺序次序用整数编写,其中所述索引按照由每个页指针表的索引数目限定的顺序次序指派给页指针表。每个页指针表可具有与变更日志表示的其它页指针表相同数目的所分配索引。页指针表位图的某一位置中的值一可识别与所述位置相关的页指针表存储在变更日志中,且页指针表的虚拟页位图的某一位置中的值一可识别与页指针表的虚拟页位图的所述位置相关的虚拟页存储在变更日志中。
如本文所教示,系统的变化形式可包含用于对页指针表位图中经确证以将页指针表识别为存储在变更日志中的位的数目进行计数的计数器。这种系统可包含用于对给定页指针表的虚拟页位图中经确证以识别存储在变更日志中的虚拟页地址的位的数目进行计数的计数器。多个计数器可以通过单个计数器来实现,所述单个计数器具有控制器或固件中的指令来调节其使用。
如本文所教示,系统的变化形式可包含变更日志在存储装置中具有所分配数量的存储空间。在确定所分配数量的存储空间被变更日志使用后,系统可配置成触发将页指针表从NAND存储器装置加载到RAM、更新RAM中的页指针表并将页指针表从RAM刷新到NAND存储器装置的程序。
在各种实施例中,系统可包括存储有指令的固件,所述指令可由一或多个处理装置执行以执行以下操作:使用位图、链接到位图的列表和位图中经确证位的计数器来控制存储装置中变更日志的存储大小,所述变更日志经实施以使存储器装置中的虚拟页地址与物理地址相关;以及使用位图、列表和位图中经确证位的计数器来更新变更日志。位图中的一个可经结构化以指示变更日志中页指针表的状态,且位图中的另一个可经结构化以指示页指针表的虚拟页地址的状态。计数器可经实施以导航链接到一个位图的一个列表以到达单元,从而相对于用作变更日志的条目的指定虚拟页地址更新变更日志。位图、链表和可以被实现为一或多个计数器的计数器可经结构化以执行本文所教示的各个功能。系统可包含硬件加速器,用于对存储器范围中经确证位的数目进行计数。硬件加速器可包含数个寄存器,用于包含与存储器范围的开始、计数的方向和计数的结果相关的数据。
如本文所教示,系统和其特征的变化形式可包含数种不同实施例,它们可以依据此类系统的应用和/或实施系统的架构来组合。系统的此类变化形式可包含来自执行固件中的指令的各个操作。固件可具有更新变更日志的指令,包含以下指令:使用指定虚拟页地址作为变更日志的条目在存储装置中的变更日志中发起搜索;识别指定虚拟页地址的索引;使用所述索引确定与所述索引相关的页指针表;在页指针表位图中检查变更日志中经确定页指针表的状态;响应于确定经确定页指针表的状态为存储在变更日志中,评估页指针表列表中经确定页指针表的位置,所述列表链接到页指针表位图;确定经确定页指针表的虚拟页位图中对应于所述索引的位置;在经确定页指针表的虚拟页位图中的所述位置处,检查变更日志中指定虚拟页的状态;响应于确定指定虚拟页地址的状态为存储在变更日志中,评估虚拟页列表中所述索引的位置,所述虚拟页列表链接到虚拟页位图;以及更新关于在虚拟页列表中所述索引的位置处的指定虚拟页地址的信息。
来自执行固件中的指令的各个操作可包含数个确定、评估和更新。确定与所述索引相关的页指针表可包含所述索引除以等于分配用于变更日志的页指针表的总数的数字的整数除法。评估页指针表列表中经确定页指针表的位置可包含对页指针表位图中在经确定页指针表的位之前的经确证位的数目进行计数。确定经确定页指针表的虚拟页位图中所述索引的位置可包含所述索引与等于分配用于变更日志的页指针表的总数的数字的取模运算。评估虚拟页列表中所述索引的位置可包含对经确定页指针表的虚拟页列表中在虚拟页列表中所述索引的位之前的经确证位的数目进行计数。更新信息可包含移除虚拟页列表中所述索引的所述位置。
图14是具有使一或多个存储器装置的虚拟页地址与所述一或多个存储器装置的物理地址相关的日志1456的实例系统1400的实施例的框图。系统1400还可包含一组一或多个计数器1472。日志1456可包含与相应虚拟页地址的多个索引相关的第一位置1465,其中第一位置1465可含有日志1456中相应虚拟页地址的状态的识别符。日志1456可包含第二位置1461,用于识别日志1456中页指针表的状态,每个第二位置1461能够与相应一组所述多个索引相关。所述一或多个计数器1472可布置成对含有与相应第二位置相关联的页指针表存储在日志1456中的识别符的第二位置1461的数目进行计数,并对与所述相应第二位置相关的所述一组中的索引的数目进行计数。第一位置1465的每个元素和第二位置1461的每个元素可具有用于一或多个位的位置。日志1461可布置成第一位置1465和第二位置1461布置为位图。
如本文所教示,系统1400和其特征的变化形式可包含数种不同实施例,这些实施例可以依据此类系统的应用和/或其中实施系统的架构来组合。系统1400的此类变化形式可包含每个第二位置1461能够与最大数目的多个索引相关,其中最大数目对于每个第二位置来说是相同的。系统1400的此类变化形式可包含与用作日志1461的搜索条目的特定虚拟页地址相关的页指针表通过特定虚拟页地址的索引除以所述最大数目的整数除法来识别。系统1400的此类变化形式可包含日志1456中的条目能够被覆写。日志1456可以包含在与存储器装置分离的随机存取存储器中。所述一或多个计数器1472可包含硬件加速器。系统1400可布置成具有作为变更日志的架构和功能,如本文所教示。
以下是根据本文中的教示的系统和方法的实例实施例。
实例系统1可包括:存储器装置;以及存储变更日志的存储装置,其中虚拟页地址的标识是用于确定存储器装置中的物理地址的入口点,所述变更日志经实施以使存储器装置中的虚拟页地址与物理地址相关,所述变更日志包含:用于识别所述变更日志中页指针表的存储状态的页指针表位图;在所述页指针表位图中编索引的每个页指针表的虚拟页位图,每个虚拟页位图布置成使用所述虚拟页地址的索引识别所述变更日志中虚拟页地址的存储状态;存储在所述变更日志中的页指针表列表,所述列表链接到所述页指针表位图;以及所述页指针表列表中每个页指针表的虚拟页列表,每个虚拟页列表识别存储在所述变更日志中的虚拟页地址,所述虚拟页列表链接到所述虚拟页位图。
实例系统2可包含实例系统1的特征,并且可包含所述索引从初始整数开始按照顺序次序用整数编写,并且所述索引按照由每个页指针表的索引数目限定的顺序次序指派给页指针表。
实例系统3可包含任一先前实例系统的特征,并且可包含每个页指针表具有与变更日志表示的其它页指针表相同数目的所分配索引。
实例系统4可包含任一先前实例系统的特征,并且可包含所述页指针表位图的某一位置中的值一识别与所述位置相关的页指针表存储在所述变更日志中,且页指针表的虚拟页位图的某一位置中的值一识别与页指针表的所述虚拟页位图的所述位置相关的虚拟页存储在所述变更日志中。
实例系统5可包含任一先前实例系统的特征,并且可包含用于对所述页指针表位图中经确证以将页指针表识别为存储在所述变更日志中的位的数目进行计数的计数器。
实例系统6可包含任一先前实例系统的特征,并且可包含用于对给定页指针表的所述虚拟页位图中经确证以识别存储在所述变更日志中的虚拟页地址的位的数目进行计数的计数器。
实例系统7可包含任一先前实例系统的特征,并且可包含所述变更日志在所述存储装置中具有所分配数量的存储空间,并且在确定所分配数量的存储空间被所述变更日志使用后,所述系统配置成触发将页指针表从与非型(NAND)存储器装置加载到随机存取存储器(RAM)、更新所述RAM中的所述页指针表并将所述页指针表从所述RAM刷新到所述NAND存储器装置的程序。
实例系统8可包括:存储有指令的固件,所述指令可由处理装置执行以执行以下操作:使用位图、链接到所述位图的列表和所述位图中经确证位的计数器来控制存储装置中变更日志的存储大小,所述变更日志经实施以使存储器装置中的虚拟页地址与物理地址相关;以及使用所述位图、所述列表和所述位图中经确证位的所述计数器来更新所述变更日志。
实例系统9可包含实例系统8的特征,并且可包含所述位图中的一个经结构化以指示所述变更日志中页指针表的状态,并且所述位图中的另一个经结构化以指示所述页指针表的虚拟页地址的状态。
实例系统10可包含任一先前实例系统8和9的特征,并且可包含所述计数器经实施以导航链接到一个所述位图的一个所述列表以到达单元,从而相对于用作所述变更日志的条目的指定虚拟页地址更新所述变更日志。
实例系统11可包含任一先前实例系统8-10的特征,并且可包含所述固件具有更新所述变更日志的指令,包含以下指令:使用指定虚拟页地址作为所述变更日志的条目在所述存储装置中的所述变更日志中发起搜索;识别所述指定虚拟页地址的索引;使用所述索引确定与所述索引相关的页指针表;在页指针表位图中检查所述变更日志中经确定页指针表的状态;响应于确定所述经确定页指针表的所述状态为存储在所述变更日志中,评估页指针表列表中所述经确定页指针表的位置,所述列表链接到所述页指针表位图;确定所述经确定页指针表的虚拟页位图中对应于所述索引的位置;在所述经确定页指针表的所述虚拟页位图中的所述位置处,检查所述变更日志中所述指定虚拟页的状态;响应于确定所述指定虚拟页地址的所述状态为存储在所述变更日志中,评估虚拟页列表中所述索引的位置,所述虚拟页列表链接到所述虚拟页位图;以及更新关于所述虚拟页列表中所述索引的所述位置处的所述指定虚拟页地址的信息。
实例系统12可包含任一先前实例系统8-11的特征,并且可包含确定与所述索引相关的所述页指针表包含所述索引除以分配用于所述变更日志的页指针表的总数的数字的整数除法。
实例系统13可包含任一先前实例系统8-12的特征,并且可包含评估所述页指针表列表中所述经确定页指针表的所述位置包含对所述页指针表位图中在所述经确定页指针表的位之前的经确证位的数目进行计数。
实例系统14可包含任一先前实例系统8-13的特征,并且可包含确定所述经确定页指针表的所述虚拟页位图中所述索引的所述位置包含所述索引与等于分配用于所述变更日志的页指针表的总数的数字的取模运算。
实例系统15可包含任一先前实例系统8-14的特征,并且可包含评估所述虚拟页列表中所述索引的所述位置包含对所述经确定页指针表的所述虚拟页列表中在所述虚拟页列表中所述索引的位之前的经确证位的数目进行计数。
实例系统16可包含任一先前实例系统8-15的特征,并且可包含更新信息包含移除所述虚拟页列表中所述索引的所述位置。
实例系统17可包含任一先前实例系统8-16的特征,并且可包含用于对存储器范围中经确证位的数目进行计数的硬件加速器。
实例系统18可包含任一先前实例系统8-17的特征,并且可包含所述硬件加速器包含数个寄存器,用于包含与所述存储器范围的开始、所述计数的方向和所述计数的结果相关的数据。
实例系统19可包括:使存储器装置的虚拟页地址与所述存储器装置的物理地址相关的日志,所述日志包含:与相应虚拟页地址的多个索引相关的第一位置,所述第一位置含有所述日志中所述相应虚拟页地址的状态的识别符;用于识别所述日志中页指针表的状态的第二位置,每个第二位置能够与相应的一组所述多个索引相关;以及一或多个计数器,用于对含有与相应第二位置相关联的页指针表存储在所述日志中的识别符的所述第二位置的数目进行计数,并对所述一组中与所述相应第二位置相关的索引的数目进行计数。
实例系统20可包含实例系统19的特征,并且可包含每个第二位置能够与最大数目的多个索引相关,所述最大数目对于每个第二位置来说是相同的。
实例系统21可包含任一先前实例系统19和20的特征,并且可包含与用作所述日志的搜索条目的特定虚拟页地址相关的页指针表通过所述特定虚拟页地址的索引除以所述最大数目的整数除法来识别。
实例系统22可包含任一先前实例系统19-21的特征,并且可包含日志中的条目能够被覆写。
实例系统23可包含任一先前实例系统19-22的特征,并且可包含所述日志被包含在与所述存储器装置分离的随机存取存储器中。
实例系统24可包含任一先前实例系统19-23的特征,并且可包含所述一或多个计数器包含硬件加速器。
实例方法1可包括:使用位图、链接到所述位图的列表和所述位图中经确证位的计数器来控制存储装置中变更日志的存储大小,所述变更日志经实施以使存储器装置中的虚拟页地址与物理地址相关;以及使用所述位图、所述列表和所述位图中经确证位的所述计数器来更新所述变更日志。
实例方法2可包含实例方法1的特征,并且可包含使用位图包含使用所述位图中的一个识别所述变更日志中页指针表的状态并使用所述位图中的另一个识别所述页指针表的虚拟页地址的状态。
实例方法3可包含任一个先前实例方法的特征,并且可包含使用所述计数器包含导航链接到一个所述位图的一个所述列表以到达单元,从而相对于用作所述变更日志的条目的指定虚拟页地址更新所述变更日志。
实例方法4可包含任一先前实例方法的特征,并且可包含更新所述变更日志包含:使用指定虚拟页地址作为所述变更日志的条目在所述存储装置中的所述变更日志中发起搜索;识别所述指定虚拟页地址的索引;使用所述索引确定与所述索引相关的页指针表;在页指针表位图中检查所述变更日志中经确定页指针表的状态;响应于确定所述经确定页指针表的所述状态为存储在所述变更日志中,评估页指针表列表中所述经确定页指针表的位置,所述列表链接到所述页指针表位图;确定所述经确定页指针表的虚拟页位图中对应于所述索引的位置;在所述经确定页指针表的所述虚拟页位图中的所述位置处检查所述变更日志中所述指定虚拟页地址的状态;响应于确定所述指定虚拟页地址的所述状态为存储在所述变更日志中,评估虚拟页列表中所述索引的位置,所述虚拟页列表链接到所述虚拟页位图;以及更新关于对应于所述虚拟页列表中所述索引的所述位置的所述指定虚拟页地址的信息。
实例方法5可包含任一先前实例方法的特征,并且可包含确定与所述索引相关的所述页指针表包含执行所述索引除以等于分配用于所述变更日志的页指针表的总数的数字的整数除法,并且确定所述经确定页指针表的所述虚拟页位图中对应于所述索引的所述位置包含执行所述索引与等于分配用于所述变更日志的页指针表的总数的数字的取模运算。
实例方法6可包含任一先前实例方法的特征,并且可包含评估所述页指针表列表中所述经确定页指针表的所述位置包含对所述页指针表列表中在所述经确定页指针表的位之前的经确证位的数目进行计数,并且评估所述虚拟页列表中所述索引的所述位置包含对所述经确定页指针表的所述虚拟页列表中在所述虚拟页列表中所述索引的位之前的经确证位的数目进行计数。
实例方法7可包含任一先前实例方法的特征,并且可包含执行与实例系统1-7、实例系统8-18和实例系统19-24的任何特征相关联的功能。
在不同实例中,本文中所描述的组件、控制器、处理器、单元、引擎或表可包含存储于物理装置上的物理电路系统或固件等。如本文中所使用,“处理器”意指任何类型的计算电路,例如(但不限于)微处理器、微控制器、图形处理器、数字信号处理器(DSP),或任何其它类型的处理器或处理电路,包含处理器或多核装置的群组。
如本文所使用,操作存储器单元包含从存储器单元读取、对存储器单元写入或擦除存储器单元。使存储器单元置于既定状态中的操作在本文中被称作“编程”,且可包含对存储器单元写入或从存储器单元擦除(例如,存储器单元可编程为擦除状态)。
根据一或多个实施例,位于存储器装置内部或外部的存储器控制器(例如,处理器、控制器、固件等)能够确定(例如,选择、设定、调整、计算、改变、清除、传输、适配、导出、界定、利用、修改、应用等)磨损循环的数量,或磨损状态(例如,记录磨损循环、在存储器装置的操作发生时对其进行计数、跟踪其起始的存储器装置的操作、评估对应于磨损状态的存储器装置特性等)。
根据一或多个实施例,存储器存取装置可配置成关于每一存储器操作将磨损循环信息提供到存储器装置。存储器装置控制电路系统(例如,控制逻辑)可经编程以补偿对应于磨损循环信息的存储器装置性能改变。存储器装置可接收磨损循环信息且响应于磨损循环信息而确定一或多个操作参数(例如,值、特性)。
本文中所描述的方法实例可至少部分地由机器或计算机实施。一些实例可包含编码有指令的计算机可读媒体或机器可读媒体,所述指令可操作以配置电子装置以执行如在以上实例中描述的方法。这类方法的实施方案可包含代码,例如微码、汇编语言代码、高级语言代码等等。这类代码可包含用于执行各种方法的计算机可读指令。所述代码可以形成计算机程序产品的部分。此外,代码可例如在执行期间或在其它时间有形地存储于一或多个易失性或非易失性有形计算机可读媒体上。这些有形计算机可读媒体的实例可包含但不限于:硬盘、可装卸式磁盘、可装卸式光盘(例如,压缩光盘和数字视频光盘)、盒式磁带、存储器卡或棒、随机存取存储器(RAM)、只读存储器(ROM)、固态驱动器(SSD)、通用快闪存储(UFS)装置、嵌入式MMC(eMMC)装置等等。
在各种实施例中,潜在地覆盖一整套存储器装置的LBA的L2P变更日志可以实现为可根据使用情况分配的可扩展存储区域。分配的区域可以结构化,以提供对变更日志上下文的快速存取,从而免去了复杂的搜索和排序算法。可以存取变更日志元素,知晓它在变更日志内的确切位置。在变更日志的这种表示中,用于知晓变更日志内元素位置的步骤可以是确定的和可预测的。在这样的变更日志架构中,可以直接对特定VP执行单个虚拟页覆盖,而不消耗分配区域,这可以避免记录特定VP的历史。
尽管本文中已经示出和描述了特定实施例,但是所属领域的技术人员应了解,为实现相同目的而计算的任何布置都可以替换所示的特定实施例。各种实施例使用本文描述的实施例的排列和/或组合。应理解,以上描述意图为说明性的而非限定性的,并且本文中采用的措词或术语是出于说明目的。
Claims (30)
1.一种方法,包括:
使用位图、链接到所述位图的列表和所述位图中经确证位的计数器来控制存储装置中变更日志的存储大小,所述变更日志经实施以使存储器装置中的虚拟页地址与物理地址相关;以及
使用所述位图、所述列表和所述位图中经确证位的所述计数器来更新所述变更日志。
2.根据权利要求1所述的方法,其中使用位图包含使用所述位图中的一个识别所述变更日志中页指针表的状态,并使用所述位图中的另一个识别所述页指针表的虚拟页地址的状态。
3.根据权利要求1所述的方法,其中使用所述计数器包含导航链接到一个所述位图的一个所述列表以到达单元,从而相对于用作所述变更日志的条目的指定虚拟页地址更新所述变更日志。
4.根据权利要求1所述的方法,其中更新所述变更日志包含:
使用指定虚拟页地址作为所述变更日志的条目在所述存储装置中的所述变更日志中发起搜索;
识别所述指定虚拟页地址的索引;
使用所述索引确定与所述索引相关的页指针表;
在页指针表位图中检查所述变更日志中经确定页指针表的状态;
响应于确定所述经确定页指针表的所述状态为存储在所述变更日志中,评估页指针表列表中所述经确定页指针表的位置,所述列表链接到所述页指针表位图;
在所述经确定页指针表的虚拟页位图中确定对应于所述索引的位置;
在所述经确定页指针表的所述虚拟页位图中的所述位置处,检查所述变更日志中所述指定虚拟页地址的状态;
响应于确定所述指定虚拟页地址的所述状态为存储在所述变更日志中,评估虚拟页列表中所述索引的位置,所述虚拟页列表链接到所述虚拟页位图;以及
更新关于对应于所述虚拟页列表中所述索引的所述位置的所述指定虚拟页地址的信息。
5.根据权利要求4所述的方法,其中确定与所述索引相关的所述页指针表包含执行所述索引除以等于分配用于所述变更日志的页指针表的总数的数字的整数除法,并且确定所述经确定页指针表的所述虚拟页位图中对应于所述索引的所述位置包含执行所述索引与等于分配用于所述变更日志的页指针表的总数的数字的取模运算。
6.根据权利要求4所述的方法,其中评估所述页指针表列表中所述经确定页指针表的所述位置包含对所述页指针表列表中在所述经确定页指针表的位之前的经确证位的数目进行计数,并且评估所述虚拟页列表中所述索引的所述位置包含对所述经确定页指针表的所述虚拟页列表中在所述虚拟页列表中所述索引的位之前的经确证位的数目进行计数。
7.一种系统,包括:
存储器装置;以及
存储变更日志的存储装置,其中虚拟页地址的标识是用于确定所述存储器装置中的物理地址的入口点,所述变更日志经实施以使存储器装置中的虚拟页地址与物理地址相关,所述变更日志包含:
页指针表位图,用于识别所述变更日志中页指针表的存储状态;
在所述页指针表位图中编索引的每个页指针表的虚拟页位图,每个虚拟页位图布置成使用所述虚拟页地址的索引识别所述变更日志中虚拟页地址的存储状态;
存储在所述变更日志中的页指针表列表,所述列表链接到所述页指针表位图;以及
所述页指针表列表中的每个页指针表的虚拟页列表,每个虚拟页列表识别存储在所述变更日志中的虚拟页地址,所述虚拟页列表链接到所述虚拟页位图。
8.根据权利要求7所述的系统,其中所述索引从初始整数开始按照顺序次序用整数编写,并且所述索引按照由每个页指针表的索引数目限定的顺序次序指派给页指针表。
9.根据权利要求8所述的系统,其中每个页指针表具有与变更日志表示的其它页指针表相同数目的所分配索引。
10.根据权利要求7所述的系统,其中所述页指针表位图的某一位置中的值一识别与所述位置相关的页指针表存储在所述变更日志中,并且页指针表的虚拟页位图的某一位置中的值一识别与页指针表的所述虚拟页位图的所述位置相关的虚拟页存储在所述变更日志中。
11.根据权利要求7所述的系统,其中所述系统包含计数器,用于对所述页指针表位图中经确证以将页指针表识别为存储在所述变更日志中的位的数目进行计数。
12.根据权利要求7所述的系统,其中所述系统包含计数器,用于对给定页指针表的所述虚拟页位图中经确证以识别存储在所述变更日志中的虚拟页地址的位的数目进行计数。
13.根据权利要求7所述的系统,其中所述变更日志在所述存储装置中具有所分配数量的存储空间,并且在确定所述所分配数量的存储空间被所述变更日志使用后,所述系统配置成触发将页指针表从与非型NAND存储器装置加载到随机存取存储器RAM、更新所述RAM中的所述页指针表并将所述页指针表从所述RAM刷新到所述NAND存储器装置的程序。
14.一种系统,包括:
存储有指令的固件,所述指令能由处理装置执行以执行以下操作:
使用位图、链接到所述位图的列表和所述位图中经确证位的计数器来控制存储装置中变更日志的存储大小,所述变更日志经实施以使存储器装置中的虚拟页地址与物理地址相关;以及
使用所述位图、所述列表和所述位图中经确证位的所述计数器来更新所述变更日志。
15.根据权利要求14所述的系统,其中所述位图中的一个经结构化以指示所述变更日志中页指针表的状态,且所述位图中的另一个经结构化以指示所述页指针表的虚拟页地址的状态。
16.根据权利要求14所述的系统,其中所述计数器经实施以导航链接到一个所述位图的一个所述列表以到达单元,从而相对于用作所述变更日志的条目的指定虚拟页地址更新所述变更日志。
17.根据权利要求14所述的系统,其中所述固件具有更新所述变更日志的指令,包含以下指令:
使用指定虚拟页地址作为所述变更日志的条目在所述存储装置中的所述变更日志中发起搜索;
识别所述指定虚拟页地址的索引;
使用所述索引确定与所述索引相关的页指针表;
在页指针表位图中检查所述变更日志中经确定页指针表的状态;
响应于确定所述经确定页指针表的所述状态为存储在所述变更日志中,评估页指针表列表中所述经确定页指针表的位置,所述列表链接到所述页指针表位图;
在所述经确定页指针表的虚拟页位图中确定对应于所述索引的位置;
在所述经确定页指针表的所述虚拟页位图中的所述位置处,检查所述变更日志中所述指定虚拟页地址的状态;
响应于确定所述指定虚拟页地址的所述状态为存储在所述变更日志中,评估虚拟页列表中所述索引的位置,所述虚拟页列表链接到所述虚拟页位图;以及
更新关于在所述虚拟页列表中所述索引的所述位置处的所述指定虚拟页地址的信息。
18.根据权利要求17所述的系统,其中确定与所述索引相关的所述页指针表包含所述索引除以等于分配用于所述变更日志的页指针表的总数的数字的整数除法。
19.根据权利要求17所述的系统,其中评估所述页指针表列表中所述经确定页指针表的所述位置包含对所述页指针表位图中在所述经确定页指针表的位之前的经确证位的数目进行计数。
20.根据权利要求17所述的系统,其中确定所述经确定页指针表的所述虚拟页位图中所述索引的所述位置包含所述索引与等于分配用于所述变更日志的页指针表的总数的数字的取模运算。
21.根据权利要求17所述的系统,其中评估所述虚拟页列表中所述索引的所述位置包含对所述经确定页指针表的所述虚拟页列表中在所述虚拟页列表中所述索引的位之前的经确证位的数目进行计数。
22.根据权利要求17所述的系统,其中更新信息包含移除所述虚拟页列表中所述索引的所述位置。
23.根据权利要求17所述的系统,其中所述系统包含硬件加速器,用于对存储器范围中经确证位的数目进行计数。
24.根据权利要求17所述的系统,其中所述硬件加速器包含数个寄存器,用于包含与所述存储器范围的开始、所述计数的方向和所述计数的结果相关的数据。
25.一种系统,包括:
使存储器装置的虚拟页地址与所述存储器装置的物理地址相关的日志,所述日志包含:
与相应虚拟页地址的多个索引相关的第一位置,所述第一位置含有所述日志中所述相应虚拟页地址的状态的识别符;以及
用于识别所述日志中页指针表的状态的第二位置,每个第二位置能够与相应一组所述多个索引相关;以及
一或多个计数器,用于对含有与相应第二位置相关联的页指针表存储在所述日志中的识别符的所述第二位置的数目进行计数,并对所述一组中与所述相应第二位置相关的索引的数目进行计数。
26.根据权利要求25所述的系统,其中每个第二位置能够与最大数目的多个索引相关,所述最大数目对于每个第二位置来说是相同的。
27.根据权利要求26所述的系统,其中与用作所述日志的搜索条目的特定虚拟页地址相关的页指针表通过使用所述特定虚拟页地址的索引除以所述最大数目的整数除法来识别。
28.根据权利要求25所述的系统,其中所述日志中的条目能够被覆写。
29.根据权利要求25所述的系统,其中所述日志包含在与所述存储器装置分离的随机存取存储器中。
30.根据权利要求25所述的系统,其中所述一或多个计数器包含硬件加速器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/549,218 US11474865B2 (en) | 2019-08-23 | 2019-08-23 | Allocation schema for a scalable memory area |
US16/549,218 | 2019-08-23 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112416809A true CN112416809A (zh) | 2021-02-26 |
Family
ID=74645361
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010855076.8A Pending CN112416809A (zh) | 2019-08-23 | 2020-08-24 | 用于可扩展存储区域的分配模式 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11474865B2 (zh) |
CN (1) | CN112416809A (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11960450B2 (en) * | 2020-08-21 | 2024-04-16 | Vmware, Inc. | Enhancing efficiency of segment cleaning for a log-structured file system |
CN114598669B (zh) * | 2022-03-07 | 2024-03-19 | 潍柴动力股份有限公司 | 一种报文的存储方法、装置及设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2002031660A2 (en) * | 2000-10-11 | 2002-04-18 | University College London | A data structure, memory allocator and memory management system |
US20140195725A1 (en) * | 2013-01-08 | 2014-07-10 | Violin Memory Inc. | Method and system for data storage |
US20160170833A1 (en) * | 2014-12-11 | 2016-06-16 | Netapp, Inc. | Data trcking for efficient recovery of a storage array |
US9507523B1 (en) * | 2012-10-12 | 2016-11-29 | Western Digital Technologies, Inc. | Methods, devices and systems for variable size logical page management in a solid state drive |
US9697219B1 (en) * | 2014-12-29 | 2017-07-04 | EMC IP Holding Company LLC | Managing log transactions in storage systems |
US20190155746A1 (en) * | 2017-11-17 | 2019-05-23 | SK Hynix Memory Solutions America Inc. | Methods and memory systems for address mapping |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8886870B2 (en) * | 2010-05-25 | 2014-11-11 | Marvell World Trade Ltd. | Memory access table saving and restoring system and methods |
US9507711B1 (en) * | 2015-05-22 | 2016-11-29 | Sandisk Technologies Llc | Hierarchical FTL mapping optimized for workload |
US20170177497A1 (en) | 2015-12-21 | 2017-06-22 | Qualcomm Incorporated | Compressed caching of a logical-to-physical address table for nand-type flash memory |
WO2018118040A1 (en) * | 2016-12-21 | 2018-06-28 | Hewlett-Packard Development Company, L.P. | Persistent memory updating |
US11288010B2 (en) * | 2017-09-25 | 2022-03-29 | Intel Corporation | Efficiently storing computer processor data structures in computer memory |
US10997153B2 (en) * | 2018-04-20 | 2021-05-04 | Hewlett Packard Enterprise Development Lp | Transaction encoding and transaction persistence according to type of persistent storage |
-
2019
- 2019-08-23 US US16/549,218 patent/US11474865B2/en active Active
-
2020
- 2020-08-24 CN CN202010855076.8A patent/CN112416809A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2002031660A2 (en) * | 2000-10-11 | 2002-04-18 | University College London | A data structure, memory allocator and memory management system |
US9507523B1 (en) * | 2012-10-12 | 2016-11-29 | Western Digital Technologies, Inc. | Methods, devices and systems for variable size logical page management in a solid state drive |
US20140195725A1 (en) * | 2013-01-08 | 2014-07-10 | Violin Memory Inc. | Method and system for data storage |
US20160170833A1 (en) * | 2014-12-11 | 2016-06-16 | Netapp, Inc. | Data trcking for efficient recovery of a storage array |
US9697219B1 (en) * | 2014-12-29 | 2017-07-04 | EMC IP Holding Company LLC | Managing log transactions in storage systems |
US20190155746A1 (en) * | 2017-11-17 | 2019-05-23 | SK Hynix Memory Solutions America Inc. | Methods and memory systems for address mapping |
Also Published As
Publication number | Publication date |
---|---|
US20210055966A1 (en) | 2021-02-25 |
US11474865B2 (en) | 2022-10-18 |
US20230033903A1 (en) | 2023-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111108499B (zh) | Nand存储器装置、相关方法及机器可读媒体 | |
CN111684527B (zh) | Nand装置及相关方法和机器可读介质 | |
US11720489B2 (en) | Scheme to improve efficiency of device garbage collection in memory devices | |
US10983918B2 (en) | Hybrid logical to physical caching scheme | |
CN113168358B (zh) | 具有奇偶校验保护的多个存储器装置 | |
CN111183481B (zh) | 数据损坏的安全擦除 | |
KR20200063257A (ko) | 동적 l2p 캐시 | |
US20210405726A1 (en) | Dynamic p2l asynchronous power loss mitigation | |
US11334428B2 (en) | Multi-page parity protection with power loss handling | |
CN111656330A (zh) | Nand逻辑到物理表区域跟踪 | |
CN113129978B (zh) | 使用奇偶校验增加存储器存取并行性 | |
US11163692B2 (en) | Memory constrained translation table management | |
KR20210099184A (ko) | 저장 디바이스의 순차적 데이터 최적화 서브 영역 | |
CN112817878B (zh) | 操作具有动态可变属性的存储器的系统和方法 | |
CN112041931A (zh) | 跟踪逻辑块地址的数据温度 | |
CN112416809A (zh) | 用于可扩展存储区域的分配模式 | |
US11436078B2 (en) | NAND parity information techniques for systems with limited RAM | |
CN112470132A (zh) | 控制nand操作延时 | |
CN112997254A (zh) | 用于筛选容易出现缺陷的存储器块的基于度量的反应性读取 | |
US11972294B2 (en) | Allocation schema for a scalable memory area | |
CN112445717B (zh) | 用于取消映射技术的元数据分组 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |