CN117953942A - 基于闪存的存储器系统及其管理元数据方法 - Google Patents
基于闪存的存储器系统及其管理元数据方法 Download PDFInfo
- Publication number
- CN117953942A CN117953942A CN202310966955.1A CN202310966955A CN117953942A CN 117953942 A CN117953942 A CN 117953942A CN 202310966955 A CN202310966955 A CN 202310966955A CN 117953942 A CN117953942 A CN 117953942A
- Authority
- CN
- China
- Prior art keywords
- page
- pages
- metadata
- write
- free
- 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
- 230000015654 memory Effects 0.000 title claims abstract description 294
- 238000007726 management method Methods 0.000 title description 51
- 238000000034 method Methods 0.000 claims description 46
- 230000008569 process Effects 0.000 description 21
- 238000010586 diagram Methods 0.000 description 17
- 230000008859 change Effects 0.000 description 15
- 239000008186 active pharmaceutical agent Substances 0.000 description 13
- 241001522296 Erithacus rubecula Species 0.000 description 9
- 230000002093 peripheral effect Effects 0.000 description 9
- 230000002159 abnormal effect Effects 0.000 description 8
- 238000011084 recovery Methods 0.000 description 8
- 239000004065 semiconductor Substances 0.000 description 8
- 238000013523 data management Methods 0.000 description 5
- 238000013519 translation Methods 0.000 description 5
- 230000003936 working memory Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation 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/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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced 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/0877—Cache access modes
- G06F12/0882—Page mode
-
- 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or 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/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/0658—Controller construction arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1441—Resetting or repowering
-
- 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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/21—Employing a record carrier using a specific recording technology
- G06F2212/214—Solid state disk
-
- 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/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/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
-
- 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
-
- 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/7209—Validity control, e.g. using flags, time stamps or sequence numbers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
一种存储器系统,包括:闪存,其包括元块和数据块;以及存储器控制器,其包括元数据管理模块,管理要存储在元块中的元数据。元块包括多个页。元数据管理模块将多个页中的空闲页的数量与预先设置数量的空闲页进行比较,并且根据比较结果,通过使用连续元写入操作或脏元写入操作之一来选择元数据的写入目标页。
Description
相关申请的交叉引用
要求于2022年10月31日向韩国知识产权局提交的第10-2022-0142453号韩国专利申请的优先权,其全部内容通过引用并入本文。
技术领域
本公开涉及半导体存储器设备,尤其涉及基于闪存的存储器系统及其元数据管理方法。
背景技术
半导体存储器设备通常可以分为易失性半导体存储器设备和非易失性半导体存储器设备。易失性半导体存储器设备具有快速的读取和写入速度,但是当电源切断时会丢失存储的数据。相反,非易失性半导体存储器设备在电源切断时保留存储的数据。因此,非易失性半导体存储器设备通常用于存储无论电源是否中断都必须保留的数据。
闪存(flash memory)是非易失性存储器的典型示例。闪存被广泛用作诸如计算机和智能手机的信息设备中的语音和图像数据的存储介质。目前,正在积极研究用于闪存的大容量、高速输入/输出和低功率技术,以用于诸如智能手机的移动设备。
然而,闪存的缺点在于写入速度和擦除速度慢于读取速度,使用次数有限制,并且不可能覆写。因此,当可写入空间不足时,闪存中的垃圾收集操作应该分开执行以确保空间。然而,垃圾收集操作可能会延迟闪存的运行进程。因此,需要一种减少这种延迟时间的方法。
发明内容
本发明构思的实施例提供了一种基于闪存的存储器系统及其元数据管理方法,该存储器系统利用写入局部性(locality)使得垃圾收集操作的次数减少以及存储设备的打开时间(open time)减少。
本发明构思的实施例提供了一种存储器系统,包括:闪存,包括元块和数据块,元块包括多个页;以及存储器控制器,包括元数据管理模块,管理要存储在元块中的元数据。元数据管理模块将多个页中的空闲页的数量与设置的空闲页计数进行比较以提供比较结果;并且根据比较结果,通过使用连续元写入操作或脏元写入操作之一,从空闲页中选择元数据的写入目标页。
本发明构思的实施例还提供了一种基于闪存的存储器系统的元数据管理方法,该闪存包括元块,该元块包括多个页。该方法包括:将多个页中的空闲页的数量与设置的空闲页计数进行比较以提供比较结果;并且根据比较结果,通过使用连续元写入操作和脏元写入操作之一,从空闲页中选择元数据的写入目标页。该选择包括当空闲页的数量大于设置的空闲页计数时,使用脏元写入技术选择元数据的写入目标页,以及当空闲页的数量小于或等于设置的空闲页计数时,使用连续元写入操作选择元数据的写入目标页。
本发明构思的实施例还提供了一种与包括元块的闪存连接的存储器控制器,该元块包括多个页。该存储器控制器包括:页选择表模块,其存储对多个页中的空闲页的写入顺序的指示,并且不调用元垃圾收集;距离检查选择器,其管理设置的空闲页计数,比较空闲页的数量和设置的空闲页计数以提供比较结果,并且根据比较结果管理连续元写入操作和脏元写入操作之一;以及脏选择器,从多个页的脏元页中选择要写入的元页作为写入目标页。当空闲页的数量大于设置的空闲页计数时,距离检查选择器使用脏元写入操作选择元数据的写入目标页。当空闲页的数量小于或等于设置的空闲页计数时,距离检查选择器使用连续元写入操作选择元数据的写入目标页。
附图说明
参考附图对其实施例的以下详细描述,本公开的上述及其他目的和特征将变得清晰。
图1示出了根据本发明构思的实施例的存储器系统的框图。
图2示出了存储在图1的缓冲存储器中的数据示例的框图。
图3示出了在图1所示的存储器系统通电的状态下,在断电事件发生之前管理元数据的方法的流程图。
图4示出了图1所示的存储器系统的元数据恢复方法的流程图。
图5示出了描述图1所示的元数据管理模块的框图。
图6示出了描述图3所示元数据管理模块的连续元写入方法的时序图。
图7示出了在图6所示的元数据和日志数据被存储在闪存中的状态下,当在时间点Ta发生异常断电事件时,恢复元数据的操作的流程图。
图8示出了描述图3所示元数据管理模块的连续元写入方法的时序图。
图9示出了在图8所示的元数据和日志数据被存储的状态下,当在时间点Tb发生异常断电事件时,恢复元数据的操作的流程图。
图10示出了描述图3所示元数据管理模块的脏元写入方法的时序图。
图11示出了在图10所示的元数据和日志数据被存储的状态下,当在时间点Tc发生异常断电事件时,恢复元数据的操作的流程图。
图12示出了图1所示的元数据管理模块的内部配置的框图。
图13A、图13B和图13C示出了如何管理图12所示的写入顺序表。
图14示出了图12所示的元数据管理模块的元写入操作的图。
图15示出了图12所示的元数据管理模块的操作方法的流程图。
图16示出了根据本发明构思的实施例的存储器系统的闪存和存储器控制器用固态驱动器(SSD)实现的示例的框图。
具体实施方式
下文将详细描述本发明构思的实施例。作为本发明构思领域的传统,可以根据执行所描述的一个或多个功能的块来描述和说明实施例。这些块,在本文中可以被称为单元或模块等,由模拟和/或数字电路物理实现,诸如逻辑门、集成电路、微处理器、微控制器、存储器电路、无源电子组件、有源电子组件、光学组件、硬连线电路等,并且可以可选地由固件和/或软件驱动。例如,电路可以体现在一个或多个半导体芯片中,或者体现在诸如印刷电路板等的衬底支撑件上。构成块的电路可以由专用硬件、或者由处理器(例如,一个或多个编程的微处理器和相关电路)、或者由执行块的一些功能的专用硬件和执行块的其他功能的处理器的组合来实现。在不脱离本发明构思的范围的情况下,实施例的每个块可以在物理上被分成两个或更多个相互作用且离散的块。同样,在不脱离本发明构思的范围的情况下,实施例的块可以物理地组合成更复杂的块。
图1示出了根据本发明构思的实施例的存储器系统的框图。参考图1,存储器系统包括闪存1100、存储器控制器1200、缓冲存储器1300和主机1500。
闪存1100可以通过闪存接口1201与存储器控制器1200连接。闪存1100包括存储器单元阵列1110和外围电路1115。外围电路1115可以包括在存储器单元阵列1110中存储数据所必需的模拟和/或数字电路,以及从存储器单元阵列1110读取数据所必需的模拟和/或数字电路。
存储器单元阵列1110可以包括多个存储块。每个存储块可以具有垂直的三维结构。在设计/布局结构中,存储器单元阵列1110可以放置在外围电路1115旁边或外围电路1115上。存储器单元阵列1110放置在外围电路1115上的结构可以被表征为外围单元(cellon peripheral,COP)结构。存储器单元阵列1110可以用独立于外围电路1115的芯片来实现。包括存储器单元阵列1110的上部芯片和包括外围电路1115的下部芯片可以通过键合方案(bonding scheme)彼此耦合,并且该结构可以表征为芯片到芯片(C2C)结构。
存储器单元阵列1110可以包括元块1111和数据块1112。元块1111可以存储元数据。元数据可以指为管理用户数据或闪存1100而生成的数据。元数据可以例如包括用于将闪存1100的逻辑地址转换成物理地址的映射信息,并且还可以包括用于管理闪存1100的存储空间的信息。
存储器控制器1200可以通过主机接口1202与主机1500连接。主机接口1202可以包括符合标准的接口,例如高级技术附件(ATA)、串行ATA(SATA)、并行ATA(PATA)、通用串行总线(USB)、小型组件小型接口(SCSI)、增强型小型磁盘接口(ESDI)、IEEE 1394和集成驱动电子设备(IDE)或卡接口。存储器控制器1200可以包括元数据管理模块1236。
当向存储器系统供电时,元数据管理模块1236可以生成命令和地址,用于顺序读取被划分为多个组(或段)的闪存1100的多条元数据,并且将读取的元数据存储在缓冲存储器1300中。元数据管理模块1236可以根据导致元数据改变的闪存1100的操作来更新存储在缓冲存储器1300中的元数据,可以生成对应于元数据改变的日志条目信息,并且可以将日志条目信息存储在缓冲存储器1300中。
日志条目信息可以包括恢复元数据的改变所必需的信息。作为示例,日志条目信息可以包括关于指示导致元数据改变的操作的类型的信息(即,导致元数据改变的操作的类型),以及用于恢复元数据改变的实际数据。关于指示导致元数据改变的操作的类型的信息可以包括定义导致元数据改变的所有操作的类型的多条信息,例如写入操作、块分配操作和页(page)复制操作。用于恢复元数据的改变的实际数据可以包括逻辑地址、先前的物理地址、新的物理地址等。日志数据由多条日志条目信息组成。
元数据管理模块1236可以控制存储器控制器1200使得每当存储在缓冲存储器1300中的日志条目信息的数量达到初始设置的阈值时,将以被划分成多个组的状态存储在缓冲存储器1300中的多条元数据中对应于一个选定组的元数据和将日志数据被存储在闪存1100中。
作为示例,当分配给缓冲存储器1300的日志条目区域被日志条目信息完全填充时,以被划分成多个组的状态存储在缓冲存储器1300中的多条元数据可以以循环(round-robin)方式逐一被选择,并且所选择组的元数据和日志数据可以被存储在闪存1100中。
例如,在将元数据划分为MD1至MDn组(n为组数)并且存储在缓冲存储器1300中的情况下,可以按循环方式从MD1至MDn顺序地为每个组选择元数据,所选择组的元数据可以与日志数据一起存储在闪存1100中。在将日志数据存储在闪存1100中之后,元数据管理模块1236可以删除缓冲存储器1300中存在的多条日志条目信息。这样,分配给缓冲存储器1300的日志条目区域被清空。
当断电事件异常发生并且随后通电事件发生时,元数据管理模块1236可以按照元数据在闪存1100中的存储顺序,从闪存1100中读取每组的有效(valid)日志数据和有效划分的元数据,并且可以恢复元数据。这里,异常断电事件是指在断电命令没有(或曾经没有)输入到存储器系统的状态下电源被阻塞或切断的事件。
缓冲存储器1300暂时存储从主机1500提供的数据和由存储器控制器1200生成的数据,或者暂时存储将提供给主机1500的数据。此外,可以将能够存储元数据和日志数据的区域分配给缓冲存储器1300。缓冲存储器1300可以用DRAM或SRAM来实现。
图2示出了存储在图1的缓冲存储器中的数据示例的框图。参考图2,被划分为多个组的元数据可以被存储在缓冲存储器1300中。存储在缓冲存储器1300中的日志数据可以由数量有限的日志条目组成。
作为示例,可以通过闪存1100的物理页存储单元划分元数据。此外,其大小对应于多平面(multi-plane)的页可以在内部以任意大小划分,使得元数据和日志数据的一部分被存储。
此外,可以确定元数据的划分大小和构成日志数据的日志条目的数量,使得一组元数据和日志数据可以被一起存储在闪存1100的一个物理页上。可以基于逻辑地址将元数据划分成多个组。图2示出了元数据被划分成(n+1)组的示例。
元数据管理模块1236可以管理如此划分的每个组的元数据。详细地,元数据管理模块1236可以将更新的元数据和日志数据存储在闪存1100中,并且还可以通过使用存储的日志数据来执行恢复元数据的过程。
例如,元数据管理模块1236可以将元数据和以以下方式更新的日志数据存储在闪存1100中。首先,假设元数据被划分成具有给定大小的组,并且每个组的元数据被标记为“MD_i”。这里,i=0、1、2……、n和(n+1)指示用于划分元数据的值。也就是说,(n+1)指示划分的元数据组的数量。一个组的划分的元数据MD_i对应于构成元数据的一个元数据段。
更新后的元数据可以立即应用在缓冲存储器1300上,并且可从更新前的元数据恢复的日志数据分开存储。当存储的日志数据的大小对应于分配的大小时,可以选择一些组的日志数据和划分的元数据,并且将选择的元数据在与日志数据相同的时间点写入闪存1100中。
在任何时间点Tj写入闪存1100的第i个元数据的一部分被称为“MD_i(Tj)”。此外,在同一时间点Tj写入闪存1100的日志数据被称为“Log(Tj)”。在这种情况下,MD_i(Tj)包括整个日志数据Log(Tk),其中,k≤j。换句话说,在某个时间点从缓冲存储器1300写入闪存1100的元数据包括该特定时间点之前的整个日志数据。相反,MD_i(Tj)可以通过重放日志数据Log(Tk)来恢复,其中,j<k。换句话说,在特定时间点从缓冲存储器1300写入闪存1100的元数据可以通过重放在特定时间点之后写入闪存1100的日志数据来恢复。当MD_i(Tj)被写入闪存1100时,其中,j<k的MD_i(Tk)是无效元数据。
以循环方式选择通过使用上述特征划分的元数据段MD_i,并且顺序存储在闪存1100中。在这种情况下,在从MD_i1被选择和写入的时间点Tj1开始的一轮之后,当它经过MD_i2被选择和写入的时间点Tj2时,在下一轮中,j<j1的Log(Tj)是无效的日志数据。此外,关于在从Tj1到Tj2的时间段中写入的MD_i(Tj),作为MD_i(Tk)的元数据被无效。
同时,元数据管理模块1236可以通过使用以下方式存储的日志数据来恢复元数据。按照元数据段被写入闪存1100的顺序读取元数据段。在这种情况下,只读取有效的数据段。当在相关时间点写入闪存1100的日志数据有效时,也读取相关日志数据。在读取日志数据之后,通过使用日志数据来恢复在写入日志数据的时间点之前写入的元数据段。在日志数据中剩余的恢复信息与尚未读取的元数据段相关联的情况下,不恢复元数据段。重复上述过程,直到最后写入的元数据段和日志数据被读取。例如,这将在随后参考图6进行描述。
例如,假设首先从闪存1100中读取MD_i0(Tj0),闪存1100中时间点Tj1之前的所有日志数据无效,并且日志数据和元数据段被写入,直到时间点Tj2。根据上述假设,关于在满足“j0≤j≤j1”的时间点写入的元数据段MD_i(Tj),不读取日志数据,仅读取元数据。
此外,在满足“j1≤j≤j2”的时间点写入的元数据段MD_i(Tj)和Log(Tj)一起读取,并且通过使用读取的Log(Tj)对k<j的元数据段MD_i(TK)进行恢复。在实施例中,读取元数据段和日志数据,同时通过重放日志数据来恢复元数据(即,恢复过程与读取过程重叠)。
图3示出了在图1所示的存储器系统通电的状态下,在断电事件发生之前管理元数据的方法的流程图。图3示出了用于将划分的元数据和日志数据存储在闪存1100中的方法。
在操作S110中,存储器控制器1200从闪存1100中读取划分的元数据段,并且将读取的数据段存储在缓冲存储器1300中。也就是说,当存储器系统通电时,存储器控制器1200从闪存1100读取对应于元数据段的每个组的元数据,并将读取的元数据存储在缓冲存储器1300中。例如,在元数据被划分成四组(或段)的情况下,四组元数据MD_0、MD_1、MD_2和MD_3可以被存储在缓冲存储器1300中。
当在存储器系统中执行导致元数据改变的操作时,在操作S120中,存储器系统更新缓冲存储器1300中存在的元数据,生成对应于元数据改变的日志条目信息,并将日志条目信息存储在缓冲存储器1300中。也就是说,当执行导致元数据改变的操作时,诸如将数据写入闪存1100中的操作,存储器控制器1200从缓冲存储器1300中搜索作为元数据改变的目标的组的元数据,并更新如此找到的组的元数据。
此外,存储器控制器1200生成日志条目信息,并将日志条目信息存储在缓冲存储器1300中。日志条目信息可以包括关于指示导致元数据改变的操作的类型的信息,以及用于恢复元数据改变的实际数据。
在操作S130中,存储器控制器1200确定生成的日志条目信息的数量是否达到初始设置的阈值Nth。例如,可以基于分配给缓冲存储器1300的日志条目区域是否被日志条目信息完全填充来确定所生成的日志条目信息的数量是否达到初始设置的阈值Nth。
当操作S130中的确定结果指示生成的日志条目信息的数量未达到(或者换句话说,小于)初始设置的阈值Nth时(S130中的否),程序返回到操作S120。当操作S130中的确定结果指示生成的日志条目信息的数量已经达到初始设置的阈值Nth,或者换句话说大于或等于Nth(S130中的是)时,执行操作S140。
在操作S140中,存储器控制器1200可以从存储在缓冲存储器1300中的多组元数据中选择一组元数据。例如,可以以循环方式顺序选择所有元数据组。这个选择的例子可以被表征为连续(consecution)元写入,这指的是当接收到元写入请求时,以循环方式选择所有元页而不管改变的元页的方式或操作。
又例如,只能以循环方式顺序选择发生更新的元数据组。这个选择的例子可以被表征为脏元写入,这指的是当接收到元写入请求时,仅选择其中发生了更新的元页的方式或操作。
在操作S150中,存储器控制器1200读取在操作S140中从缓冲存储器1300中选择的组的日志数据和元数据,并且将读取的日志数据和元数据存储在闪存1100中。
在操作S160中,存储器控制器1200将操作S150中存储的元数据的根信息存储在闪存1100中,并且删除缓冲存储器1300中存在的日志条目信息。这里,关于元数据的根信息可以包括关于存储元数据和日志数据的闪存1100的物理位置的信息,以及关于每个元数据组的存储顺序的信息。
在操作S170中,确定存储器系统中是否发生断电事件。当断电事件发生时,该程序结束(S170的是)。当断电事件没有发生时(S170处的否),该程序返回到操作S120。参考地,当正常断电事件发生时,在缓冲存储器1300中更新的所有元数据组被存储在闪存1100中之后,可以阻止或关闭向存储器系统供电。
在进入操作S170之前,可以重复图3中的操作S140-S160,直到在连续元写入的情况下顺序选择了所有元数据组,或直到在脏元写入的情况下仅顺序选择了发生更新的所有元页。
图4示出了图1所示的存储器系统的元数据恢复方法的流程图。
在S210操作中,存储器控制器1200确定存储器系统是否通电。如果电源没有打开(在S210为否),元数据恢复操作将不会被执行。当存储器系统通电时(在S210为“是”),执行操作S220。
在操作S220中,按照元数据存储在闪存1100中的顺序,以组为单位读取有效元数据和日志数据。在闪存1100中不存在有效日志数据的情况下,对于每个组仅读取有效元数据。关于存储元数据和日志数据的位置的信息和关于存储顺序的信息可以从闪存1100的根信息区域获得。
在操作S230中,存储器控制器1200通过使用读取的日志数据顺序恢复元数据。例如,可以通过使用读取的日志数据来恢复在读取的日志数据之前存储的有效元数据。执行读取日志数据和元数据的过程的时间段可以与执行通过重放日志数据恢复元数据的过程的时间段重叠。
根据本发明构思的实施例的元数据管理模块1236可以选择性地执行连续元写入操作和脏元写入操作。例如,元数据管理模块1236可以以循环方式使用所有元页,而不管更新的元页,并且在特定时间点之后,可以仅使用已经发生更新的元页。
图5示出了描述图1所示的元数据管理模块的框图。参考图5,闪存转换层1230可以从主机1500接收元写入请求,并且可以执行元数据管理操作。为此,闪存转换层1230可以包括元数据管理模块1236。
元数据管理模块1236可以通过选择性地执行连续元写入操作和脏元写入操作来执行元数据管理操作。连续元写入是指,当接收到元写入请求时,以循环方式使用所有元页而不管改变的元页的方式或操作。脏元写入是指,在接收到元写入请求时,仅使用已经改变的元页的方式或操作。
图6示出了描述图3所示元数据管理模块的连续元写入方法或操作的时序图。图6示出了以循环方式选择四组元数据并且所选择的元数据组和日志数据一起存储在闪存1100中的示例。
参考图6,在缓冲存储器1300中的日志条目区域被日志数据信息完全填充的第一时间点T1的日志数据为“Log_0”,并且在这种情况下选择的元数据段是第0组元数据MD_0的情况下,MD_0和Log_0在第一时间点T1同时存储在闪存1100中。当MD_0在第一时间点T1被存储在闪存1100中时,先前存储在闪存1100中的MD_0被无效。参考地,先前存储的无效元数据段MD_0由阴影指示。
在缓冲存储器1300中的日志条目区域被日志数据信息完全填充的第二时间点T2的日志数据为“Log_1”,并且在这种情况下选择的元数据段是第一组元数据MD_1的情况下,MD_1和Log_1在第二时间点T2同时存储在闪存1100中。当MD_1在第二时间点T2被存储在闪存1100中时,先前存储在闪存1100中的MD_1被无效,如阴影指示。
在日志条目区域被日志数据信息完全填充的第三时间点T3的日志数据为“Log_2”,并且在这种情况下选择的元数据段是第二组元数据MD_2的情况下,MD_2和Log_2在第三时间点T3同时存储在闪存1100中。当MD_2在第三时间点T3被存储在闪存1100中时,先前存储在闪存1100中的MD_2被无效,如阴影指示。
图7示出了在图6所示的元数据和日志数据被存储在闪存中的状态下,在时间点Ta发生异常断电事件(例如,SPO)后恢复元数据的操作的流程图。
存储器控制器1200确定存储器系统是否通电(S310)。当存储器系统通电时(在S310的是),存储器控制器1200搜索存储在闪存1100的根信息区域中的元数据和日志数据的位置信息以及关于在其中存储元数据的顺序的信息,并且通过使用查找到的信息,按照元数据存储在闪存1100中的顺序,读取一组有效的元数据。首先,从图6确认MD_3是存储在闪存1100中的有效元数据。因此,从闪存1100中读取MD_3,然后将其存储在缓冲存储器1300中(S320)。
由于(MD_0,Log_0)在MD_3之后存储在闪存1100中,因此(MD_0,Log_0)被读取,然后存储在缓冲存储器1300中(S330)。
由于MD_3在Log_0被写入的时间点之前被写入闪存1100,因此存储在缓冲存储器1300中的MD_3基于Log_0被恢复。由于(MD_1,Log_1)在(MD_0,Log_0)之后被存储在闪存1100中,因此(MD_1,Log_1)被读取然后被存储在缓冲存储器1300中(S340)。为了减少恢复元数据所花费的总时间,可以在操作S340同时执行恢复MD_3的过程和读取(MD_1,Log_1)的过程。
由于MD_0和MD_3在Log_1被写入的时间点之前被写入闪存1100,因此存储在缓冲存储器1300中的MD_0和MD_3基于Log_1被分别恢复。(MD_2,Log_2)在(MD_1,Log_1)之后被存储在闪存1100中,它被读取然后被存储在缓冲存储器1300中(S350)。在操作S350,恢复MD_0和MD_3的过程和读取(MD_2,Log_2)的过程可以被同时执行。
由于MD_1、MD_0和MD_3在Log_2被写入的时间点之前被写入闪存1100,因此存储在缓冲存储器1300中的MD_1、MD_0和MD_3基于Log_2被分别恢复。如图6所示,由于在(MD_2,Log_2)之后闪存1100中不存在元数据和日志数据,因此恢复过程在操作S360之后结束。
图8示出了描述图3所示元数据管理模块的连续元写入方法或操作的时序图。图8示出了图6所示的连续元写入操作持续到时间点Tb的示例。
参考图8,在日志条目区域被日志数据信息完全填充的第四时间点T4的日志数据为“Log_3”,并且在这种情况下选择的元数据段是第三组元数据MD_3的情况下,在第四时间点T4,MD_3和Log_3同时存储在闪存1100中。当MD_3在第四时间点T4被存储在闪存1100中时,先前存储在闪存1100中的MD_3被无效,如阴影指示。当所有元数据组的选择在第四时间点T4完成时,所有元数据组被存储在闪存1100中。
在日志条目区域被日志数据信息完全填充的第五时间点T5的日志数据为“Log_0”,并且在这种情况下选择的元数据段是第0组元数据MD_0的情况下,MD_0和Log_0在第五时间点T5同时存储在闪存1100中。当(MD_0,Log_0)在第五时间点T5被存储在闪存1100中时,先前存储在闪存1100中的(MD_0,Log_0)被无效。
图9示出了在图8所示的元数据和日志数据被存储的状态下,在时间点Tb发生异常断电事件后恢复元数据的操作的流程图。
存储器控制器1200确定存储器系统是否通电(S410)。当存储器系统通电时(S410的是),存储器控制器1200搜索存储在闪存1100的根信息区域中的元数据和日志数据的位置信息以及关于在其中存储元数据的顺序的信息,并且通过使用查找到的信息,按照元数据存储在闪存1100中的顺序读取一组有效的元数据。
首先,从图8确认MD_1是存储在闪存1100中的有效元数据。因此,(MD_1,Log_1)被读取,然后被存储在缓冲存储器1300中(S420)。然而,当首先读取存储在闪存1100中的有效元数据时,没有必要读取日志数据。因此,在一些实施例中,只有MD_1可以被读取,然后可以被存储在缓冲存储器1300中。
由于(MD_2,Log_2)在(MD_1,Log_1)之后存储在闪存1100中,因此(MD_2,Log_2)被读取,然后被存储在缓冲存储器1300中(S430)。
由于MD_1在Log_2被写入的时间点之前被写入闪存1100,因此存储在缓冲存储器1300中的MD_1基于Log_2被恢复。存储在闪存1100中的(MD_3,Log_3)在(MD_2,Log_2)之后被读取,然后被存储在缓冲存储器1300中(S440)。在操作S440,可同时执行基于Log_2恢复MD_1的过程和读取(MD_3,Log_3)的过程。
由于MD_2和MD_1在Log_3被写入的时间点之前被写入闪存1100,因此存储在缓冲存储器1300中的MD_2和MD_1基于Log_3被分别恢复。存储在闪存1100中的(MD_0,Log_0)在(MD_3,Log_3)之后被读取,然后被存储在缓冲存储器1300中(S450)。在操作S450,基于Log_3恢复MD_2和MD_1的过程和读取(MD_0,Log_0)的过程可以被同时执行。
由于MD_3、MD_2和MD_1在Log_0被写入的时间点之前被写入闪存1100,因此存储在缓冲存储器1300中的MD_3、MD_2和MD_1基于Log_0被分别恢复。如图8所示,由于在(MD_0,Log_0)之后闪存1100中不存在元数据和日志数据,因此恢复过程结束。
根据连续元写入,所有元页均以循环方式使用而不管元页是否发生改变。因此,连续元写入可能不需要元垃圾收集操作,因此可以最小化元空间。这里,元垃圾收集操作可以指当元块的空闲元页的数量不足时移动有效元页数据的操作。
在连续元写入中,随着闪存1100的容量增加,打开时间可以增加。此外,根据连续元写入,所有元页可以在写入局部性被排除的状态下被顺序使用。元页的数量与闪存1100的容量成比例。因此,连续元写入可能会导致在突然恢复电源(SPOR)操作中要重放的日志数量增加。
图10示出了描述图3所示元数据管理模块的脏元写入方法的时序图。图10示出了以循环方式仅选择已经更新的一组元数据,并且将所选择的一组元数据和日志数据一起存储在闪存1100中的示例。
参考图10作为示例,在日志条目区域被日志条目信息完全填充的时间点更新的元数据组为MD_1和MD_3的情况下,每当日志条目区域被日志条目信息完全填充时,以循环方式选择MD_1和MD_3。所选组的元数据和日志数据被顺序存储在闪存1100中。
脏元写入是指当收到元写入请求时,仅重复使用已经改变的元页的方式。根据脏元写入,要重放的日志数量可能会依据具有局部性的写入工作负荷而减少,并且因此SPOR时间可能会减少。脏元写入需要元垃圾收集操作和元损耗平衡操作。上述操作可能导致主机1500的输入/输出延迟的增加。
图11示出了在图10所示的元数据和日志数据被存储的状态下,在时间点Tc发生异常断电事件后恢复元数据的操作的流程图。
存储器控制器1200确定存储器系统是否通电(S510)。当存储器系统通电时(S510的是),存储器控制器1200搜索存储在闪存1100的根信息区域中的元数据和日志数据的位置信息以及关于在其中存储元数据的顺序的信息,并且通过使用查找到的信息,按照元数据存储在闪存1100中的顺序读取一组有效的元数据。
首先从图10确认MD_0是存储在闪存1100中的有效元数据。因此,读取MD_0,然后将其存储在缓冲存储器1300中(S520)。
由于有效元数据MD_2在MD_0之后存储在闪存1100中,因此MD_2被读取,然后被存储在缓冲存储器1300中(S530)。
由于有效的(MD_3,Log_3)在MD_2之后存储在闪存1100中,因此(MD_3,Log_3)被读取,然后被存储在缓冲存储器1300中(S540)。
由于MD_2和MD_0在Log_3被写入的时间点之前被写入闪存1100,因此存储在缓冲存储器1300中的MD_2和MD_0基于Log_3被分别恢复。存储在闪存1100中的(MD_1,Log_1)在(MD_3,Log_3)之后被读取,然后被存储在缓冲存储器1300中(S550)。恢复MD_2和MD_0的过程和读取(MD_1,Log_1)的过程可以被同时执行。
由于MD_3、MD_2和MD_0在Log_1被写入的时间点之前被写入闪存1100,因此存储在缓冲存储器1300中的MD_3、MD_2和MD_0基于Log_1被分别恢复。如图10所示,由于在(MD_1,Log_1)之后闪存1100中不存在元数据和日志数据,因此恢复过程在操作S560之后结束。
当存储器系统中发生异常断电事件时,可以通过上述操作恢复元数据。根据本发明构思的实施例,在主机1500向存储器系统提供数据和用于在存储器系统中写入给定数据模式的命令之后,可以通过检查被提供并写入到构成存储器系统的闪存1100的数据来确认元数据以特定大小的单位被写入。
此外,根据本发明构思的实施例,在元数据恢复过程中,可以确认每组的划分的元数据以特定时间间隔从闪存1100中被顺序地读取,然后存储在缓冲存储器1300中。具体的时间间隔可能会根据为恢复而写入的日志数据量而有所不同,但显示出按读取元数据的顺序递增的趋势。
元数据管理模块1236可以通过适当利用连续元写入操作的优势和脏元写入操作的优势,有效地执行元数据管理操作。元数据管理模块1236可以基于空闲元页的数量来改变写入方式(例如,连续元写入或脏元方法)。例如,元数据管理模块1236可以使用连续的元写入操作,并且当空闲元页的数量达到初始设置的阈值时,元数据管理模块1236此后可以使用脏元写入操作。
根据本发明构思的实施例的存储器系统可以通过使用元数据管理模块1236避免执行元垃圾收集操作,并且可以在考虑局部性的情况下执行元写入选择操作。元数据管理模块1236因此可以减少对于具有局部性的写入工作负荷的要重放的日志数量。因此,存储器系统的打开时间可能会减少。
图12、图13A、图13B和图14示出了根据本发明构思的实施例的图1所示的元数据管理模块的内部配置的框图。参考图12,元数据管理模块1236包括写入顺序表WOT、距离检查选择器DCS和脏选择器DS。
写入顺序表WOT是页选择表模块,其存储对元块1111的页的写入顺序的指示,并且不会导致或调用元垃圾收集。在下文中,被执行或控制以便不导致或调用元垃圾收集的事件或处理可以被称为“无元GC”。写入顺序表WOT可以在元块1111中以最老的顺序管理有效的元页。
例如,写入顺序表WOT可以支持三种操作:查找、继续和重新排序。查找操作是指返回到写入位置wp指示的元页的操作。继续操作是指增加写入位置wp的操作,使得写入位置wp指示下一个有效元页。重新排序(pageN)是指将pageN放置在写入位置wp之后的操作。
例如,参考图13A,当写入顺序表WOT从脏选择器DS接收到“重新排序(页2)”命令时,元数据管理模块1236可以对写入顺序表WOT中的页进行重新排序,使得第2页从图13A所示的写入位置wp指示的第1页之前的位置移动到图13B指示的写入位置wp之后的位置。又例如,当写入顺序表WOT从脏选择器DS接收“重新排序(页5)”命令时,元数据管理模块1236可以重新排序顺序,使得第五页页5位于写入位置wp之后,诸如图13C所显示。
距离检查选择器DCS是用于定义和管理无GC距离GFD的模块。无GC距离GFD意味着不导致或调用元垃圾收集的最小空闲元页数。也就是说,无GC距离GFD意味着“无元GC”的最小空闲元页数。此外,无GC距离GFD可以通过向“无元GC”的最小空闲元页数添加多个附加页来获得。这里,附加页的数量可以根据设计算法而变化。取决于设计考虑,无GC距离GFD可以是预先设置的空闲页计数。无GC距离GFD可以是预先设置的空闲页的数量。
例如,参考图14,假设初始状态的元窗口从第一页页1到第五页页5,无GC距离GFD为“5”。第一页是起始页START。这里,第一页是最老的有效元页。空闲元页的数量指的是从将执行元写入的页“A”到最老的有效元页(即,本例中的页1)之前(即,紧接之前)的页的页的数量。
由于空闲元页的数量,即“7”,大于图14的示例中所显示的GC空闲距离GFD(=5),因此执行脏元写入操作。在脏元写入操作中,写入顺序表WOT可以例如接收“重新排序(页2)”命令,并将第二页移动到位于写入位置wp之后。此外,写入顺序表WOT可以例如接收“重新排序(页5)”命令,并且可以将第五页移动到位于写入位置wp之后。
距离检查选择器DCS可以执行脏元写入操作,直到空闲元页的数量达到无GC距离GFD(=5)。也就是说,距离检查选择器DCS可以选择脏元页作为写入目标页。根据以上描述,距离检查选择器DCS可以反映写入局部性。
参考图14,从要执行元写入的页“B”到最老有效元页(即页1)之前的页,空闲元页的数量可以是“5”。当空闲元页的数量达到无GC距离GFD时,距离检查选择器DCS可以选择由写入位置wp指示的页作为写入目标页,并且可以向写入顺序表WOT提供“查找”命令和“继续”命令,使得进行下一页。
在这种情况下,由于空闲元页的数量等于无GC距离GFD,元数据管理模块1236可以执行连续元写入操作。元数据管理模块1236可以提供操作命令,以便允许不导致元垃圾收集。
脏选择器DS是用于从脏元页中选择作为写入目标的元页的模块。脏选择器DS可以包括各种选择算法。基于特定的选择算法,脏选择器DS可以从脏元页中选择要执行写入的元页,并且可以更新写入顺序表WOT,使得所选择的元页位于最后的写入顺序(重新排序)。执行元写入时,元写入的目标页之前的日志会无效,因此不需要重放。
当元数据没有被选择算法选择时,脏选择器DS可以选择写入顺序表WOT的写入位置wp作为写入页(查找并继续)。例如,脏选择算法可以是循环算法、随机算法或MFU(最频繁更新)算法。循环算法和随机算法可以像管理脏位图一样管理脏元页。
MFU算法可以基于日志的数量选择每个元页。MFU算法可以选择日志数量最大的元页。这里,日志可以指元数据改变内容。可以基于给定的阈值来确定日志的数量,并且可以选择具有日志数量等于或大于阈值的元页作为检查目标。可以管理日志的数量,使得当生成日志时,对应于所生成的日志的元页的日志计数增加。当执行元写入时,可以初始化作为元写入目标的元页的日志数量。
如上所述,元数据管理模块1236可以包括写入顺序表WOT、距离检查选择器DCS和脏选择器DS。当由于日志满事件而需要元写入时,距离检查选择器DCS可以参考写入顺序表WOT检查闪存1100的空闲元页的数量是否达到预先设置的无GC距离(GC-free distance)GDF。
当检查结果为真时,选择写入顺序表WOT的写入位置wp作为写入页,然后增加写入位置wp。如果检查结果为假,则发出请求,使得脏选择器DS选择页。脏选择器DS可以通过特定的选择算法从多条脏元数据中选择下一个写入页。之后,更新写入顺序表WOT,使得选择的页位于最后的写入顺序。当元页未被选择时,写入顺序表WOT的写入位置wp可被选择作为写入页。
图15示出了图12所示的元数据管理模块的操作方法的流程图。参考图15,元数据管理模块1236可以从主机1500接收对元页选择的请求(S610)。
距离检查选择器DCS可以确定空闲页数是否小于或等于无GC距离GFD(S620)。当空闲页的数量大于GC空闲距离GFD时(S620为否),距离检查选择器DCS可以执行脏元写入操作(S630)。当空闲页的数量小于或等于GC空闲距离GFD时(S620的是),距离检查选择器DCS可以执行连续元写入操作(S635)。
在连续元写入操作中,距离检查选择器DCS可以提供“查找”命令,使得写入位置wp指示的页返回到写入顺序表WOT。此外,在连续元写入操作中,距离检查选择器DCS可以提供“继续”命令,使得写入位置wp增加并且写入位置wp指示下一个有效元页。
在脏元写入操作中,脏选择器DS可以确定是否找到脏页(S640)。当找到脏页时(S640的是),脏选择器DS可以向写入顺序表WOT提供“重新排序”命令,使得页“N”(即,脏页)位于写入位置wp之后。当没有找到脏页时(S640为否),脏选择器DS可以向写入顺序表WOT提供“查找并继续”命令。
如上所述,根据本发明构思的实施例的存储器系统可以不通过使用元数据管理模块1236来执行元垃圾收集操作,并且可以考虑局部性来执行元写入选择操作。元数据管理模块1236可以减少要重放的日志数量,对于具有局部性的写入工作负荷。根据本发明构思的实施例,存储器系统的打开时间可以减少。
图16示出了根据本发明构思的实施例的存储器系统的闪存和存储器控制器用固态驱动器(SSD)实现的示例的框图。参考图16,SSD 4000可以包括多个闪存4101至4104(即,闪存4101、4102、4103和4104)和SSD控制器4200。
第一闪存和第二闪存4101和4102可以通过第一通道CH1与SSD控制器4200连接。第三闪存和第四闪存4103和4104可以通过第二通道CH2与SSD控制器4200连接。与SSD控制器4200连接的通道的数量可以是2个或更多。与一个通道连接的闪存的数量可以是2个或更多。
SSD控制器4200可以包括主机接口4201、闪存接口4202、缓冲器接口4203、控制单元4210和工作存储器4220。工作存储器4220可以用于驱动闪存转换层(FTL)4230。闪存转换层4230可以包括元数据管理模块4236,诸如参考图1-15描述的元数据管理模块1236。
SSD控制器4200可以通过主机接口4201与主机1500连接。取决于主机1500的请求,SSD控制器4200可以将数据写入相应的闪存或者可以从相应的闪存读取数据。
SSD控制器4200可以通过闪存接口4202与多个闪存4101至4104连接,并且可以通过缓冲器接口4203与缓冲存储器1300连接。闪存接口4202可以通过通道CH1和CH2将临时存储在缓冲存储器1300中的数据提供给闪存。闪存接口4202可以将从闪存4101至4104读取的数据传送到缓冲存储器1300。
控制单元4210可以分析和处理从主机1500接收的信号。控制单元4210可以通过主机接口4201或闪存接口4202控制主机1500或闪存4101至4104。控制单元4210可以通过使用用于驱动SSD 4000的固件来控制闪存4101至4104的操作。
工作存储器4220可以在控制单元4210的控制下驱动闪存转换层4230。当SSD 4000启动时,闪存转换层4230可以从闪存4101至4104加载到工作存储器4220。取决于固件实现的功能,闪存转换层4230可以执行地址映射操作、垃圾收集操作、元数据管理操作等。
SSD控制器4200可以管理存储在闪存4101至4104中的元数据或缓存数据。在突然断电操作中,SSD控制器4200可以将存储在工作存储器4220或缓冲存储器1300中的元数据或缓存数据备份到闪存4101至4104。
根据本发明构思的实施例的基于闪存的存储器系统可以通过使用元数据管理模块避免执行元垃圾收集操作,并且可以考虑局部性执行元写入选择操作。根据本发明构思的实施例,可以减少要重放的日志数量,关于具有局部性的写入工作负荷。此外,根据本发明构思的实施例,可以减少存储器系统的打开时间。
尽管已经参考实施例对发明构思进行了描述,但是本领域普通技术人员应明白,在不脱离所附权利要求中阐述的本发明构思的精神和范围的情况下,可以对其进行各种改变和修改。
Claims (20)
1.一种存储器系统,包括:
闪存,包括元块和数据块,该元块包括多个页;以及
存储器控制器,包括元数据管理模块,其被配置为管理要存储在元块中的元数据,
其中,所述元数据管理模块被配置为:
将多个页中的空闲页的数量与设置的空闲页计数进行比较,以提供比较结果,以及
根据比较结果,通过使用连续元写入操作和脏元写入操作之一,从空闲页中选择元数据的写入目标页。
2.根据权利要求1所述的存储器系统,其中,所述空闲页的数量对应于从空闲页中的要执行元写入的页到空闲页中的紧接在多个页中最老的有效页之前的页的页的数量。
3.根据权利要求2所述的存储器系统,其中,设置的空闲页计数对应于在其处不调用元垃圾收集的空闲页的最小数量。
4.根据权利要求3所述的存储器系统,其中,当空闲页的数量大于设置的空闲页计数时,元数据管理模块通过使用脏元写入操作来选择元数据的写入目标页。
5.根据权利要求4所述的存储器系统,其中,当空闲页的数量小于或等于设置的空闲页计数时,元数据管理模块通过使用连续元写入操作来选择元数据的写入目标页。
6.根据权利要求2所述的存储器系统,其中,设置的空闲页计数对应于通过将在其处不调用元垃圾收集的空闲页的最小数量与附加页的数量相加而获得的页计数。
7.根据权利要求1所述的存储器系统,其中,所述元数据管理模块包括:
页选择表模块,被配置为存储对元块的空闲页的写入顺序的指示,并且不调用元垃圾收集;
距离检查选择器,被配置为管理设置的空闲页计数,比较空闲页的数量和设置的空闲页计数以提供比较结果,并且根据比较结果管理连续元写入操作或脏元写入操作;以及
脏选择器,被配置为从多个页的脏元页中选择作为写入目标的元页。
8.根据权利要求7所述的存储器系统,其中,所述页选择表模块被配置为执行用于返回到由写入位置指示的页的查找操作,用于增加写入位置使得多个页中的下一个有效页被指示的继续操作,以及用于调整顺序使得第n个页位于写入位置之后的重新排序操作。
9.根据权利要求7所述的存储器系统,其中,所述距离检查选择器被配置为计算从空闲页中的要执行元写入的页到空闲页中的紧接在多个页中最老的有效页之前的页的页的数量,并且确定计算的页的数量是否达到设置的空闲页计数。
10.根据权利要求7所述的存储器系统,其中,所述脏选择器被配置为根据选择算法从脏元页中选择作为写入目标的元页,并且更新页选择表模块使得所选择的元页位于最后的写入顺序。
11.一种基于闪存的存储器系统的元数据管理方法,该闪存包括元块,该元块包括多个页,该方法包括:
将多个页中的空闲页的数量与设置的空闲页计数进行比较,以提供比较结果;以及
根据比较结果,通过使用连续元写入操作和脏元写入操作之一,从空闲页中选择元数据的写入目标页,
其中,所述选择包括:
当空闲页的数量大于设置的空闲页计数时,使用脏元写入操作选择元数据的写入目标页,以及
当空闲页的数量小于或等于设置的空闲页计数时,使用连续元写入操作选择元数据的写入目标页。
12.根据权利要求11所述的方法,其中,所述空闲页的数量对应于从空闲页中的要执行元写入的页到空闲页中的紧接在多个页中最老的有效页之前的页的页的数量,以及
其中,设置的空闲页计数对应于在其处不调用元垃圾收集的空闲页的最小数量。
13.根据权利要求12所述的方法,其中,所述比较包括:
计算从要执行元写入的页到紧接在最老的有效页之前的页的页的数量;以及
确定计算的页的数量是否达到设置的空闲页计数。
14.根据权利要求12所述的方法,还包括维持页选择表模块,该页选择表模块存储对空闲页的写入顺序的指示,
其中,写入目标页的选择包括使用页选择表模块执行用于返回到由写入位置指示的页的查找操作,用于增加写入位置使得多个页中的下一个有效页被指示的继续操作,以及用于调整顺序使得第n个页位于写入位置之后的重新排序操作。
15.根据权利要求14所述的方法,其中,写入目标页的选择包括:
根据选择算法从多个页中的脏元页中选择作为写入目标的页;以及
更新页选择表模块使得选择的元页位于最后写入顺序。
16.一种与闪存连接的存储器控制器,该闪存包括元块,该元块包括多个页,该存储器控制器包括:
页选择表模块,被配置为存储将元数据写入多个页中的空闲页的顺序的指示,并且不调用元垃圾收集;
距离检查选择器,被配置为管理设置的空闲页计数,比较空闲页的数量和设置的空闲页计数以提供比较结果,并且根据比较结果管理对元块的连续元写入操作和脏元写入操作之一;以及
脏选择器,被配置为从多个页的脏元页中选择作为写入目标的元页作为写入目标页,
其中,所述距离检查选择器被配置为:
当空闲页的数量大于设置的空闲页计数时,使用脏元写入操作来选择元数据的写入目标页,以及
当空闲页的数量小于或等于设置的空闲页计数时,使用连续元写入操作来选择元数据的写入目标页。
17.根据权利要求16所述的存储器控制器,其中,所述页选择表模块被配置为执行用于返回到由写入位置指示的页的查找操作,用于增加写入位置使得多个页中的下一个有效元页被指示的继续操作,以及用于调整顺序使得第n个页位于写入位置之后的重新排序操作。
18.根据权利要求16所述的存储器控制器,其中,所述距离检查选择器被配置为计算从空闲页中的要执行元写入的页到空闲页中的紧接在多个页中最老的有效页之前的页的页的数量,并且确定计算的页的数量是否达到设置的空闲页计数。
19.根据权利要求16所述的存储器控制器,其中,所述脏选择器被配置为根据选择算法从脏元页中选择作为写入目标的元页,以及更新页选择表模块使得所选择的元页位于最后的写入顺序。
20.根据权利要求16所述的存储器控制器,其中,设置的空闲页计数对应于在其处不调用元垃圾收集的空闲页的最小数量。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR10-2022-0142453 | 2022-10-31 | ||
KR1020220142453A KR20240062319A (ko) | 2022-10-31 | 2022-10-31 | 플래시 메모리를 기반으로 하는 메모리 시스템 및 그것의 메타 데이터 관리 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117953942A true CN117953942A (zh) | 2024-04-30 |
Family
ID=87567429
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310966955.1A Pending CN117953942A (zh) | 2022-10-31 | 2023-08-02 | 基于闪存的存储器系统及其管理元数据方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20240143500A1 (zh) |
EP (1) | EP4361821A1 (zh) |
KR (1) | KR20240062319A (zh) |
CN (1) | CN117953942A (zh) |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101790165B1 (ko) * | 2011-08-09 | 2017-11-20 | 삼성전자 주식회사 | 메모리 시스템 및 그것의 메타 데이터 관리 방법 |
US10261897B2 (en) * | 2017-01-20 | 2019-04-16 | Samsung Electronics Co., Ltd. | Tail latency aware foreground garbage collection algorithm |
-
2022
- 2022-10-31 KR KR1020220142453A patent/KR20240062319A/ko unknown
-
2023
- 2023-06-09 US US18/207,963 patent/US20240143500A1/en active Pending
- 2023-08-02 CN CN202310966955.1A patent/CN117953942A/zh active Pending
- 2023-08-09 EP EP23190543.1A patent/EP4361821A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20240143500A1 (en) | 2024-05-02 |
EP4361821A1 (en) | 2024-05-01 |
KR20240062319A (ko) | 2024-05-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8898371B2 (en) | Accessing logical-to-physical address translation data for solid state disks | |
KR101297563B1 (ko) | 스토리지 관리 방법 및 관리 시스템 | |
US8819358B2 (en) | Data storage device, memory system, and computing system using nonvolatile memory device | |
US20170336983A1 (en) | Server device including cache memory and method of operating the same | |
US11487630B2 (en) | Storage device and data processing method thereof | |
JP2013242908A (ja) | ソリッドステートメモリ、それを含むコンピュータシステム及びその動作方法 | |
CN109710541B (zh) | 针对NAND Flash主控芯片Greedy垃圾回收的优化方法 | |
CN111880723B (zh) | 数据储存装置与数据处理方法 | |
US9122586B2 (en) | Physical-to-logical address map to speed up a recycle operation in a solid state drive | |
US8819350B2 (en) | Memory system | |
CN109671458A (zh) | 管理闪存模块的方法及相关的闪存控制器 | |
US20090132757A1 (en) | Storage system for improving efficiency in accessing flash memory and method for the same | |
CN112306898A (zh) | 存储设备、其操作方法及包括其的电子设备 | |
CN116364148A (zh) | 一种面向分布式全闪存储系统的磨损均衡方法及系统 | |
KR101191650B1 (ko) | 낸드 플래시 메모리에서 데이터의 주소를 사상시키는 장치 및 방법 | |
US11797228B2 (en) | Efficient handling of background operations for improving sustained performance of host reads and writes | |
CN117953942A (zh) | 基于闪存的存储器系统及其管理元数据方法 | |
US20220413757A1 (en) | Write Performance by Relocation During Sequential Reads | |
US20210406169A1 (en) | Self-adaptive wear leveling method and algorithm | |
KR20240004013A (ko) | 메모리 컨트롤러, 스토리지 장치 및 그 동작 방법 | |
CN110609817A (zh) | 一种防止文件碎片化的文件存储系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |