CN117519579A - 存储装置及其操作方法 - Google Patents

存储装置及其操作方法 Download PDF

Info

Publication number
CN117519579A
CN117519579A CN202310721783.1A CN202310721783A CN117519579A CN 117519579 A CN117519579 A CN 117519579A CN 202310721783 A CN202310721783 A CN 202310721783A CN 117519579 A CN117519579 A CN 117519579A
Authority
CN
China
Prior art keywords
log data
jnl
log
range
metadata
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
Application number
CN202310721783.1A
Other languages
English (en)
Inventor
赵贞在
金仁寿
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of CN117519579A publication Critical patent/CN117519579A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc

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)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

公开了存储装置及其操作方法。所述存储装置包括:存储器;以及存储控制器,被配置为控制存储器并通过控制存储器来更新元数据。存储控制器包括具有范围表的日志管理器。日志管理器被配置为:生成与元数据的更新相关联的多个日志数据,通过顺序地执行所述多个日志数据中的每个的重放操作来恢复元数据,基于所述多个日志数据更新范围表,并且基于范围表跳过所述多个日志数据中的至少一个的重放操作。

Description

存储装置及其操作方法
本申请要求于2022年8月3日在韩国知识产权局提交的第10-2022-0096978号韩国专利申请的优先权,所述韩国专利申请的公开通过引用全部包含于此。
技术领域
本公开涉及半导体存储器,并且更具体地,涉及存储装置及其操作方法。
背景技术
半导体存储器被分类为易失性存储器(诸如,静态随机存取存储器(SRAM)或动态随机存取存储器(DRAM))或非易失性存储器(诸如,闪存、相变RAM(PRAM)、磁RAM(MRAM)、电阻式RAM(RRAM)或铁电RAM(FRAM)),在易失性存储器中,存储的数据在断电时消失,在非易失性存储器中,存储的数据即使在断电时也被保持。
闪存装置正被广泛用作大容量存储装置。被配置为控制闪存装置的控制器通过使用映射表来控制闪存装置。映射表是一种用于保证数据的可靠性的重要的元数据。因此,当元数据(诸如,映射表)丢失时,因为不能保证存储在存储装置中的数据的可靠性,所以正在开发用于防止元数据的丢失的各种技术。
发明内容
本公开的实施例提供了具有改进的可靠性和改进的性能的存储装置及其操作方法。
根据公开的一方面,一种存储装置包括:非易失性存储器装置;以及存储控制器,被配置为控制非易失性存储器装置并通过控制非易失性存储器装置来更新元数据。存储控制器包括日志管理器。日志管理器被配置为:生成与元数据的更新相关联的多个日志数据,通过顺序地执行所述多个日志数据中的每个的重放操作来恢复元数据,基于多个日志数据更新范围表,并且基于范围表跳过所述多个日志数据中的至少一个的重放操作。
根据公开的另一方面,一种由存储装置执行的方法包括:执行第一擦除操作并基于第一擦除操作更新元数据;基于通过第一擦除操作的元数据的更新来生成第一日志数据,并将第一日志数据记录在日志存储器;基于第一日志数据的第一索引来更新范围表;在第一擦除操作之后,执行第二擦除操作并基于第二擦除操作更新元数据;基于通过第二擦除操作的元数据的更新来生成第二日志数据,并将第二日志数据记录在日志存储器;以及基于第二日志数据的第二索引来更新范围表。
根据公开的另一方面,一种由存储装置执行的方法包括:执行多个逻辑块地址的第一擦除操作;基于第一擦除操作生成第一日志数据;通过基于第一日志数据的第一索引更新第零(第0)范围表来生成第一范围表;响应于第一突然断电事件,将第一日志数据和第一范围表刷写到存储器;在第一突然断电事件完成之后,执行所述多个逻辑块地址的第二擦除操作;基于第二擦除操作生成第二日志数据;通过基于第二日志数据的第二索引更新第一范围表来生成第二范围表;响应于第二突然断电事件,将第一日志数据、第二日志数据和第二范围表刷写到存储器;在第二突然断电事件完成之后,通过跳过第一日志数据的重放操作来恢复元数据;以及基于第二范围表对第二日志数据执行重放操作。
附图说明
通过参照附图详细描述本公开的实施例,本公开的以上和其他目的和特征将变得清楚,在附图中:
图1示出根据本公开的实施例的存储系统;
图2示出包括在图1的存储控制器中的日志管理器生成日志数据的操作;
图3A和图3B示出图1的存储装置的日志数据生成方法;
图4A和图4B示出图1的存储装置的日志数据生成方法;
图5示出图1的日志管理器;
图6示出图5的日志数据生成器;
图7A和图7B示出图1的存储装置的日志数据生成方法;
图8示出图1的日志管理器如何重放日志数据;
图9示出图8的日志数据重放器;
图10A示出图1的存储装置重放日志数据的操作;
图10B示出根据图10A的流程图的操作;
图11A示出图1的存储装置重放日志数据的操作;
图11B示出根据图11A的流程图的操作;
图12A示出图1的存储装置的日志数据生成方法;
图12B示出根据图12A的流程图的操作;
图13A示出图1的存储装置重放日志数据的操作;
图13B示出根据图13A的流程图的操作;
图14A示出图8的日志管理器重放日志数据的操作;
图14B示出根据图14A的流程图的操作;
图15A示出图1的存储装置的日志数据生成方法;
图15B示出根据图15A的流程图的操作;
图15C示出用于在根据图15A的流程图的操作中分割日志数据的配置;
图16示出图1的存储装置的日志数据重放操作;
图17示出图1的存储系统的操作;
图18示出根据本公开的实施例的存储系统;
图19示出根据本公开的实施例的存储系统;
图20A至图20C示出存储系统的各种拓扑;
图21示出根据本公开的实施例的主机-存储系统;并且
图22示出根据本公开的实施例的存储装置被应用到的数据中心。
具体实施方式
下面,将详细且清楚地描述本公开的实施例,至本领域普通技术人员容易实现本公开的程度。
图1是示出根据本公开的实施例的存储系统的框图。参照图1,存储系统10可包括主机11和存储装置100。
主机11可将数据存储在存储装置100中,或者可读取存储在存储装置100中的数据。主机11可基于给定接口来控制存储装置100。在一个实施例中,给定接口可包括各种接口(诸如,高级技术附件(ATA)接口、串行ATA(SATA)接口、外部SATA(e-SATA)接口、小型计算机系统接口(SCSI)、串行附接SCSI(SAS)接口、外围组件互连(PCI)接口、PCI快速(PCIe)接口、NVM快速(NVMe)接口、IEEE 1394接口、通用串行总线(USB)接口、安全数字(SD)卡接口、多媒体卡(MMC)接口、嵌入式多媒体卡(eMMC)接口、通用闪存(UFS)接口、嵌入式通用闪存(eUFS)接口和紧凑型闪存(CF)卡接口)之一。
存储装置100可包括存储控制器110、非易失性存储器装置120和缓冲存储器130。在主机11的控制下,存储控制器110可将数据存储在非易失性存储器装置120中,或者可读取存储在非易失性存储器装置120中的数据。
非易失性存储器装置120可在存储控制器110的控制下操作。在一个实施例中,非易失性存储器装置120可以是NAND闪存装置,但是本公开不限于此。例如,非易失性存储器装置120可基于各种非易失性装置(诸如,相变RAM(PRAM)、电阻式RAM(RRAM)和磁RAM(MRAM)。此外,非易失性存储器装置120是一个实施例中的示例,并且它可用其他类型的存储器装置(例如,易失性存储器装置)代替。
缓冲存储器130可被配置为临时存储要存储在非易失性存储器装置120中的数据或者从非易失性存储器装置120读取的数据。在一个实施例中,缓冲存储器130可以是DRAM,但是本公开不限于此。例如,缓冲存储器130可包括各种高速存储器(诸如,SRAM、PRAM、RRAM和MRAM)之一。
在一个实施例中,缓冲存储器130可存储存储装置100操作所需的各种信息(例如,元数据MD)。例如,存储控制器110可通过地址转换操作来管理存储在非易失性存储器装置120中的数据。地址转换操作是指将由主机11管理的逻辑块地址转换为非易失性存储器装置120的物理块地址的操作。可通过映射表来执行地址转换操作。映射表可在缓冲存储器130中进行存储和管理。
下面,为了容易地描述本公开的实施例,描述将被给出为,元数据MD对应于与由主机11管理的逻辑块地址和非易失性存储器装置120的物理块地址相关联的映射表。然而,本公开不限于此。例如,元数据MD可包括存储装置100操作所需的各种信息。
在一个实施例中,当元数据MD由于各种原因而丢失时,存储在非易失性存储器装置120中的数据的可靠性不能被保证。为了防止元数据MD的丢失,存储控制器110可管理包括元数据MD的更新信息的日志数据。例如,存储控制器110可包括日志管理器111。日志管理器111可以以日志数据的形式对元数据MD的更新信息进行写入和管理。在一个实施例中,由日志管理器111管理的日志数据可存储在包括在存储控制器110中的内部缓冲器或单独的存储电路(例如,日志存储器)中,或者可存储在位于存储控制器110外部的缓冲存储器130中。
在一个实施例中,当元数据MD在各种情况下丢失时,日志管理器111可通过重放(replay)记录的日志数据来恢复丢失的元数据MD。例如,存储控制器110可周期性地将存在于缓冲存储器130中的元数据MD存储在非易失性存储器装置120中。在存储系统10中,当突然断电(SPO)事件发生时,存储装置100可通过使用内部电力(例如,电容器电力)来执行突然断电操作。在这种情况下,因为存在于缓冲存储器130中的元数据MD的大小相对较大,所以元数据MD可能无法被刷写(flush)到非易失性存储器装置120。也就是说,在突然断电事件中,存在于非易失性存储器装置120中的元数据MD可能不是最新版本;在这种情况下,元数据MD的部分信息可能丢失。
相比之下,在突然断电事件中,因为由日志管理器111管理的日志数据的大小相对较小,所以日志数据可被刷写到非易失性存储器装置120。之后,当存储系统10通电时,存储控制器110可将刷写到非易失性存储器装置120的日志数据加载到缓冲存储器130,并且可对加载到缓冲存储器130的日志数据执行重放操作;在这种情况下,可恢复元数据MD的最新版本。
通常,日志数据重放操作以写入日志数据的次序被顺序地执行。在这种情况下,因为对全部日志数据执行重放操作,所以重放时间可增加,并且恢复元数据MD所花费的时间可增加。相比之下,根据本公开的实施例,可基于日志数据的冗余来省略对多个日志数据中的一些的重放操作。在这种情况下,即使不对全部日志数据执行重放操作(即,即使省略了对部分日志数据的重放操作),元数据MD也可被正常地恢复。根据本公开的实施例,将参照下面的附图详细描述存储控制器110的日志数据管理方法。
图2是用于描述包括在图1的存储控制器中的日志管理器生成日志数据的操作的框图。对于描述日志管理器111的配置不必要的组件将被省略。
参照图1和图2,存储装置100的存储控制器110可对非易失性存储器装置120执行各种操作(例如,读取操作、写入操作和擦除操作)。当对非易失性存储器装置120执行各种操作时,可更新存储在缓冲存储器130中的元数据MD。在一个实施例中,元数据MD的更新可由包括在存储控制器110中的闪存转换层(FTL)执行。
在一个实施例中,可以以各种方式执行元数据MD的更新。例如,当需要更新元数据MD时,存储控制器110可仅生成日志数据JNL,而不立即更新元数据MD。之后,可基于日志数据JNL来更新元数据MD。可选地,当需要更新元数据MD时,存储控制器110可立即更新元数据MD并且可生成日志数据JNL。
下面,当需要更新元数据MD时,元数据MD的更新可稍后由存储控制器110执行,而不立即更新元数据MD。然而,本公开不限于此。例如,更新元数据MD的时序和生成日志数据JNL的时序可被不同地改变和修改。
日志管理器111可基于元数据MD的更新信息生成并管理日志数据JNL。例如,日志管理器111可包括日志数据生成器111a、日志存储器111b和日志数据重放器111c。
日志数据生成器111a可基于元数据MD的更新信息生成日志数据JNL。即,日志数据JNL可包括指示元数据MD如何被更新的信息。在元数据MD的部分信息丢失的情况下,可通过对日志数据JNL执行重放操作来恢复丢失的信息。
由日志数据生成器111a生成的日志数据JNL可被存储在日志存储器111b中。在一个实施例中,日志存储器111b可以是包括在存储控制器110中的内部存储器、内部缓冲器或内部SRAM。可选地或附加地,日志存储器111b可用位于存储控制器110外部的缓冲存储器130的一部分来实现。日志存储器111b可按照生成日志数据JNL的次序来顺序地存储从日志数据生成器111a生成的日志数据JNL。
在一个实施例中,可基于存在于日志存储器111b中的日志数据JNL将存在于缓冲存储器130中的元数据MD更新为最新版本,并且可在存储装置100被驱动的同时,周期性地或随机地将更新的元数据MD刷写到非易失性存储器装置120。
在一个实施例中,当在存储装置100中发生突然断电事件时,存在于日志存储器111b中的日志数据JNL可被刷写到非易失性存储器装置120。在一个实施例中,在非易失性存储器装置120中,存储元数据MD和日志数据JNL的区域可以是单级单元(SLC)区域。
为了恢复元数据MD的目的,日志数据重放器111c可被配置为重放日志数据JNL。例如,当存储装置100在突然断电事件之后通电时,存在于非易失性存储器装置120中的元数据MD可被加载或存储到缓冲存储器130。如上所述,存在于非易失性存储器装置120中的元数据MD可能不是最新版本;在这种情况下,可能无法保证存在于非易失性存储器装置120中的数据的可靠性。因此,可能需要用于恢复最新版本的元数据MD的操作。日志管理器111的日志数据重放器111c可通过重放存在于非易失性存储器装置120中的日志数据JNL来恢复最新版本的元数据MD。
图3A和图3B分别是用于描述图1的存储装置的日志数据生成方法的流程图和示图。下面,在本公开的实施例中,主机11基于逻辑块地址LBA来管理存储装置100的存储区域,并且存储区域的大小对应于第0LBA(“LBA00”)至第99LBA(“LBA99”)。
参照图1、图2、图3A和图3B,在操作JS11中,存储装置100可执行各种操作。例如,存储装置100可根据主机11的明确请求(explicit request)来执行各种操作(例如,读取操作、写入操作和擦除操作)。可选地或附加地,存储装置100可根据内部策略执行各种操作(例如,垃圾收集操作)。
在操作JS12(图3A中所示)中,存储装置100可确定是否需要更新元数据MD。例如,当存储装置100对存储在非易失性存储器装置120中的数据执行读取操作时,可不需要更新元数据MD。当存储装置100对非易失性存储器装置120执行写入操作或擦除操作时,可需要更新元数据MD。当不需要更新元数据MD时,不生成单独的日志数据JNL。
当需要更新元数据MD时,在操作JS13(图3A中所示)中,存储装置100可将日志数据JNL记录在日志存储器111b。例如,存储控制器110的日志管理器111可生成包括存储在缓冲存储器130中的元数据MD的更新信息的日志数据JNL。生成的日志数据JNL可按照生成日志数据JNL的次序被顺序地存储在日志存储器111b中。
详细地,如图3B中所示,存储装置100可执行各种操作。在一个实施例中,存储装置100响应于主机11的明确请求而执行擦除操作和写入操作。在擦除操作中,存储装置100可更新作为擦除操作的目标的逻辑块地址的元数据。在写入操作中,存储装置100可更新作为写入操作的目标的逻辑块地址的元数据。在一个实施例中,擦除操作(诸如,净化(sanitize)操作、修整(trim)操作、或安全擦除)可指删除(或净化、或修整)或擦除存储在存储装置100中的用户数据的操作。
例如,如图3B中所示,当需要更新元数据MD时,存储装置100的存储控制器110可生成包括关于元数据MD的更新的信息的日志数据JNL,而不是直接执行元数据MD的更新。
在下面的一个实施例中,日志数据由JNL_x标记。这里,“x”可指示与生成或记录日志数据的次序对应的索引。在一个实施例中,索引可指示生成日志数据的次序,或者可指示日志存储器的记录日志数据的位置。
作为示例,存储装置100可执行第0逻辑块地址至第99逻辑块地址(LBA00至LBA99)的擦除操作,并且可生成与第0逻辑块地址至第99逻辑块地址(LBA00至LBA99)的擦除操作对应的第0日志数据JNL_0。类似地,存储装置100可顺序地执行第0逻辑块地址至第99逻辑块地址(LBA00至LBA99)的擦除操作、第1逻辑块地址LBA1的写入操作、第0逻辑块地址至第99逻辑块地址(LBA00至LBA99)的擦除操作、第2逻辑块地址LBA2的写入操作、第3逻辑块地址LBA3的写入操作、……、第0逻辑块地址至第99逻辑块地址(LBA00至LBA99)的擦除操作、以及第80逻辑块地址LBA80的写入操作,并且可顺序地生成与其对应的第1日志数据至第99日志数据(JNL_1至JNL_99)。多个日志数据JNL_0至JNL_99可按照生成日志数据的次序被顺序地存储在日志存储器111b中。在一个实施例中,多个日志数据JNL_0至JNL_99中的每个可存储在日志存储器111b的一个条目中。
在一个实施例中,当在存储装置100执行每个操作之后立即发生突然断电事件的情况(即,在对日志数据执行重放操作之前执行特定操作,并且发生突然断电事件的情况)重复发生时,可生成将参照附图(例如,图3B)描述的日志数据JNL的配置。
在一个实施例中,如图3B中所示,在生成多个日志数据JNL_0至JNL_99的情况下,存储控制器110可通过对多个日志数据JNL_0至JNL_99顺序地执行重放操作来恢复元数据MD。例如,存储控制器110的日志管理器111可基于第0日志数据JNL_0来更新与第0逻辑块地址至第99逻辑块地址LBA00至LBA99对应的元数据MD。之后,存储控制器110的日志管理器111可基于第1日志数据JNL_1,来更新与第0逻辑块地址至第99逻辑块地址LBA00至LBA99对应的元数据MD。类似地,存储控制器110的日志管理器111可基于第2日志数据至第99日志数据JNL_2至JNL_99,来更新与每个逻辑块地址对应的元数据MD。
图4A和图4B分别是用于描述图1的存储装置的日志数据生成方法的流程图和示图。将省略与上述组件相关联的附加描述以避免冗余。
参照图1、图2、图4A和图4B,存储装置100可执行操作JS21和操作JS22。操作JS21和操作JS22类似于图3A的操作JS11和操作JS12,因此,将省略附加描述以避免冗余。
当需要更新元数据MD时,在操作JS23中,存储装置100可确定需要的更新是否是范围更新。在一个实施例中,范围更新可指示通过存储装置100的一个操作来更新与多个逻辑块地址对应的元数据MD。例如,如参照图3B所述,当存储装置100执行第0逻辑块地址至第99逻辑块地址(LBA00至LBA99)的擦除操作时,可需要更新与第0逻辑块地址至第99逻辑块地址(LBA00至LBA99)对应的元数据MD。在这种情况下,与第0逻辑块地址至第99逻辑块地址(LBA00至LBA99)对应的元数据MD的更新可被称为“范围更新”。
当元数据MD的更新是范围更新时,在操作JS24中,存储装置100可分割日志数据JNL。例如,存储装置100可将与范围更新对应的日志数据分割为单个逻辑块地址单元的日志数据。
在操作JS25中,存储装置100可将日志数据JNL记录在日志存储器111b。在一个实施例中,当元数据MD的更新不是范围更新时,存储装置100可将日志数据JNL记录在日志存储器111b而不分割日志数据JNL。在一个实施例中,当不需要更新元数据MD时,存储装置100不生成单独的日志数据JNL。
详细地,如图4B中所示,存储装置100可执行第0逻辑块地址至第99逻辑块地址(LBA00至LBA99)的擦除操作,并且可生成与第0逻辑块地址至第99逻辑块地址(LBA00至LBA99)的擦除操作对应的第0日志数据JNL_0。类似地,存储装置100可顺序地执行第0逻辑块地址至第99逻辑块地址(LBA00至LBA99)的擦除操作、第1逻辑块地址LBA1的写入操作、第0逻辑块地址至第99逻辑块地址(LBA00至LBA99)的擦除操作、第2逻辑块地址LBA2的写入操作、第3逻辑块地址LBA3的写入操作、……、第0逻辑块地址至第99逻辑块地址(LBA00至LBA99)的擦除操作、以及第80逻辑块地址LBA80的写入操作,并且可顺序地生成与其对应的第1日志数据JNL_1至第99日志数据JNL_99。
在这种情况下,第0日志数据JNL_0、第1日志数据JNL_1、第3日志数据JNL_3和第98日志数据JNL98可以是与范围更新对应的日志数据。在这种情况下,存储控制器110的日志管理器111可通过单个逻辑块地址单元来分割第0日志数据JNL_0、第1日志数据JNL_1、第3日志数据JNL_3和第98日志数据JNL98中的每个。例如,存储控制器110的日志管理器111可将第0日志数据JNL_0分割为多个日志数据JNL_0_0至JNL_0_99。类似地,存储控制器110的日志管理器111可将第1日志数据JNL_1、第3日志数据JNL_3和第98日志数据JNL98分割为多个日志数据JNL_1_0至JNL_1_99、JNL_3_0至JNL_3_99、和JNL_98_0至JNL_98_99。相比之下,在一个实施例中,第2日志数据JNL_2、第4日志数据JNL_4、第5日志数据JNL_5和第99日志数据JNL_99不是与范围更新对应的日志数据,因此不被分割。
生成的日志数据可按照生成日志数据的次序被顺序地存储在日志存储器111b中。例如,因为多个日志数据JNL_0_0至JNL_0_99是作为分割第0日志数据JNL_0的结果而首先生成的,所以多个日志数据JNL_0_0至JNL_0_99被顺序地记录在日志存储器111b。之后,通过分割第1日志数据JNL_1而生成的多个日志数据JNL_1_0至JNL_1_99被顺序地记录在日志存储器111b。之后,根据生成日志数据的次序,日志数据JNL_2、JNL_3_0至JNL_3_99、JNL_4、JNL_5、JNL_98_0至JNL_98_99和JNL_99被顺序地记录在日志存储器111b。在一个实施例中,日志数据JNL_0_0至JNL_0_99、JNL_1_0至JNL_1_99、JNL_2、JNL_3_0至JNL_3_99、JNL_4、JNL_5、JNL_98_0至JNL_98_99和JNL_99中的每个可存储在日志存储器111b的一个条目中。
如参照图3A和图3B所述,可基于存储装置100的操作单元生成日志数据JNL。可选地或附加地,如参照图4A和4B所述,可基于单个逻辑块地址单元生成日志数据JNL。
在一个实施例中,当基于存储装置100的操作单元生成日志数据JNL时,生成和记录日志数据JNL所花费的时间可相对缩短。相比之下,当基于单个逻辑块地址单元生成日志数据JNL时,生成和记录日志数据JNL所花费的时间可相对增加。
例如,如图3B中所示,当日志数据JNL被记录在日志存储器111b时,存储装置100针对存储装置100的单个操作生成并记录一个日志数据,因此,生成并记录日志数据JNL所花费的时间相对缩短。
相比之下,如图4B中所示,当日志数据JNL被记录在日志存储器111b时,存储装置100通过单个逻辑块地址单元生成并记录日志数据JNL。在这种情况下,当引起元数据MD的范围更新时,日志存储器111b的条目可能是满的。在这种情况下,执行日志数据JNL的重放操作以保护日志存储器111b的空条目。也就是说,如图4B中所示,当管理日志数据JNL时,因为通过存储装置100的操作生成的日志数据JNL的大小和数量增加,所以生成和记录日志数据JNL所花费的时间可相对增加。
在一个实施例中,当基于存储装置100的操作单元生成日志数据JNL时,重放日志数据JNL所花费的时间可相对增加。相比之下,当基于单个逻辑块地址单元生成日志数据JNL时,重放日志数据JNL所花费的时间可相对减少。
例如,当如图3B中所示管理日志数据JNL时,由于记录在日志存储器111b的日志数据JNL,元数据MD的范围更新可被重复执行。在这种情况下,因为元数据MD的范围更新被重复,所以重放日志数据所花费的时间或更新元数据MD所花费的时间(或存储装置100的打开时间)可由于不必要的范围更新而增加。相比之下,当如图4B中所示管理日志数据JNL时,因为以单个逻辑块地址为单位管理日志数据JNL,所以不重复元数据MD的更新,即,仅针对单个逻辑块地址执行更新。在这种情况下,日志数据重放时间或元数据更新时间(或存储装置100的打开时间)可减少。
也就是说,如上所述,根据图3A和图3B的实施例,生成和记录日志数据JNL所花费的时间可缩短(例如,存储装置100的打开处理时间可缩短);然而,基于日志数据JNL更新或恢复元数据MD所花费的时间(例如,存储装置100的打开时间)可增加。根据图4A和图4B的实施例,生成和记录日志数据JNL所花费的时间可增加(例如,存储装置100的打开处理时间可增加);然而,基于日志数据JNL更新或恢复元数据MD所花费的时间(例如,存储装置100的打开时间)可减少。
根据本公开,存储装置100可基于存储装置100的操作单元来管理日志数据JNL。此外,存储装置100可基于范围表(range table)确定日志数据的冗余,并且可基于确定的结果省略重复的日志数据的重放操作。这样,可缩短存储装置100的操作处理时间,并且可保持最终恢复的元数据MD的可靠性。另外,因为省略了日志数据JNL的不必要的重放操作,所以可改善存储装置100的性能(详细地,可减少存储装置100的打开时间)。
图5是用于描述图1的日志管理器的框图。将省略与上述组件相关联的附加描述以避免冗余。参照图1和图5,存储装置100的存储控制器110可对非易失性存储器装置120执行各种操作(例如,读取操作、写入操作和擦除操作)。当对非易失性存储器装置120执行各种操作时,可更新存储在缓冲存储器130中的元数据MD。
日志管理器111可生成并管理包括元数据MD的更新信息的日志数据JNL。例如,日志管理器111可包括日志数据生成器111a、日志存储器111b和日志数据重放器111c。
日志数据生成器111a可生成包括元数据MD的更新信息的日志数据JNL。因此,生成的日志数据JNL可被顺序地记录在日志存储器111b。在一个实施例中,日志数据生成器111a可基于参照图3A和图3B描述的方法来生成日志数据JNL,并且可将日志数据JNL顺序地记录在日志存储器111b。
在一个实施例中,日志数据生成器111a可确定日志数据JNL是否与范围更新对应,并且可基于确定结果来管理或更新范围表RT。在一个实施例中,范围表RT可包括关于与范围更新对应的最新日志数据JNL的索引的信息。将参照下面的附图更全面地描述范围表RT。在一个实施例中,范围表RT可被存储在日志存储器111b中。
日志数据重放器111c可通过对日志数据JNL执行重放操作来恢复元数据MD。在一个实施例中,日志数据重放器111c可基于范围表RT省略日志数据JNL的一部分的重放操作。例如,当与范围更新对应的日志数据JNL的索引不存在于范围表RT中时(即,当与范围更新对应的日志数据不是最新的时),日志数据重放器111c可省略重放操作。
图6是示出图5的日志数据生成器的框图。参照图1、图5和图6,日志数据生成器111a可包括元更新检测单元111a-1、日志生成单元111a-2和范围检测单元111a-3。
元更新检测单元111a-1可检测元数据MD的更新。日志生成单元111a-2可生成包括关于由元更新检测单元111a-1检测到的元数据MD的更新的信息的日志数据JNL。因此,生成的日志数据JNL可被记录在日志存储器111b。
范围检测单元111a-3可确定生成的日志数据JNL是否与范围更新对应。当生成的日志数据JNL与范围更新对应时,范围检测单元111a-3可基于关于在其记录生成的日志数据JNL的日志数据JNL的索引的信息来更新范围表RT。
图7A和图7B分别是用于描述图1的存储装置的日志数据生成方法的流程图和示图。在一个实施例中,参照图7A和图7B描述的日志数据生成方法可由图5的日志管理器111执行。
参照图1、图5、图7A和图7B,在操作JS110中,存储装置100可执行各种操作。例如,存储装置100可根据主机11的明确请求来执行各种操作(例如,读取操作、写入操作和擦除操作)。可选地或附加地,存储装置100可根据内部策略执行各种操作(例如,垃圾收集操作)。
在操作JS120中,存储装置100可确定是否需要更新元数据MD。操作JS120类似于图3A的操作JS12,因此,将省略附加描述以避免冗余。当不需要更新元数据MD时,存储装置100可不生成日志数据JNL。
在操作JS130中,存储装置100可确定元数据MD的更新是否是范围更新。例如,存储控制器110的日志管理器111可确定日志数据JNL是否与范围更新相关联。
当元数据MD的更新是范围更新时(或当日志数据JNL与范围更新相关联时),在操作JS140中,存储装置100可更新范围表RT。例如,存储控制器110的日志管理器111可基于与范围更新相关联的日志数据JNL的索引(例如,关于生成或记录日志数据JNL的次序的信息)来更新范围表RT。
在操作JS150中,存储装置100可将日志数据JNL记录在日志存储器111b。在一个实施例中,当元数据MD的更新不是范围更新时,存储装置100可将日志数据JNL记录到日志存储器111b,而不更新范围表RT。
详细地,如图7B中所示,存储装置100可执行各种操作。可通过存储装置100的操作来生成多个日志数据JNL_0至JNL_99。多个日志数据JNL_0至JNL_99可被顺序地记录在日志存储器111b。图7B中所示的存储装置100的操作和日志数据JNL_0至JNL_99类似于参照图3B描述的那些,因此,将省略附加描述以避免冗余。
在一个实施例中,多个日志数据JNL_0至JNL_99中的一些JNL_0、JNL_1、JNL_3和JNL_98可与范围更新相关联。在这种情况下,日志管理器111可基于与范围更新相关联的日志数据JNL_0、JNL_1、JNL_3和JNL_98来更新范围表RT。在一个实施例中,当执行擦除操作时,可基于擦除操作更新元数据,并且可基于通过擦除操作的元数据的更新来生成日志数据并将日志数据记录在日志存储器中,然后可基于日志数据的索引来更新范围表。
例如,可通过存储装置100的擦除操作来生成第0日志数据JNL_0。第0日志数据JNL_0可与范围更新相关联,并且日志管理器111可将与第0逻辑块地址至第99逻辑块地址(LBA00至LBA99)的范围对应的索引设置为范围表RT中的第0日志数据JNL_0的索引(例如,“0”)。
之后,可通过存储装置100的擦除操作生成第1日志数据JNL_1。第1日志数据JNL_1可与范围更新相关联,并且日志管理器111可在范围表RT中进行更新,使得与第0逻辑块地址至第99逻辑块地址(LBA00至LBA99)的范围对应的索引被设置为第1日志数据JNL_1的索引(例如,“1”)。
之后,可通过存储装置100的擦除操作生成第3日志数据JNL_3。第3日志数据JNL_3可与范围更新相关联,并且日志管理器111可更新范围表RT,使得与第0逻辑块地址至第99逻辑块地址LBA00至LBA99的范围的对应索引被设置为第3日志数据JNL_3的索引(例如,“3”)。
之后,可通过存储装置100的擦除操作生成第98日志数据JNL_98。第98日志数据JNL_98可与范围更新相关联,并且日志管理器111可更新与第0逻辑块地址至第99逻辑块地址LBA00至LBA99的范围对应的索引,以便被设置为第98日志数据JNL_98的索引(例如,“98”)。
最终,当第0日志数据JNL_0至第99日志数据JNL_99被记录在日志存储器111b时,与第0逻辑块地址至第99逻辑块地址(LBA00至LBA99)对应的索引可在范围表RT中被设置为“98”。
如上所述,根据本公开的一个实施例,日志管理器111可基于存储装置100的操作单元生成日志数据JNL,并且可将生成的日志数据JNL记录在日志存储器111b。在这种情况下,如参照图3A和图3B所述,可缩短生成和记录日志数据JNL所花费的时间,因此,可缩短存储装置100的操作处理时间。
图8是用于描述图1的日志管理器如何重放日志数据的示图。将省略与上述组件相关联的附加描述以避免冗余。
参照图1、图5和图8,日志管理器111可基于存储在非易失性存储器装置120中的日志数据JNL和范围表RT来恢复元数据MD。例如,当存储装置100在突然断电事件之后通电时,存在于非易失性存储器装置120中的元数据MD可被加载到缓冲存储器130。在这种情况下,加载到缓冲存储器130的元数据MD可能不是最新版本。日志管理器111可基于存在于非易失性存储器装置120中的日志数据JNL和范围表RT来更新加载到缓冲存储器130的元数据MD,以便将其改变为最新版本。
在这种情况下,日志管理器111的日志数据重放器111c可确定日志数据JNL是否与范围更新相关联。当日志数据JNL与范围更新相关联时,日志管理器111可确定日志数据JNL的索引是否与存在于范围表RT中的索引匹配。
如果日志数据JNL的索引与存在于范围表RT中的索引不匹配,则日志数据JNL不是与范围更新相关联的日志数据JNL之中的最新日志数据。在这种情况下,日志数据重放器111c可跳过日志数据JNL的重放操作。
相比之下,如果日志数据JNL的索引与存在于范围表RT中的索引匹配,则日志数据JNL是与范围更新相关联的日志数据JNL之中的最新日志数据。在这种情况下,日志数据重放器111c可通过对日志数据JNL执行重放操作来更新元数据MD。参照图7B和图8,在一个实施例中,图7B中与第0日志数据JNL_0对应的擦除操作可被称为第一擦除操作,与第1日志数据JNL_1对应的操作可被称为第二擦除操作,但是实施例不限于此。可执行第一擦除操作并生成0日志数据JNL_0,并且可基于第0日志数据JNL_0的索引(即,“0”)更新范围表以生成第一范围表,在第一范围表中,与第0逻辑块地址至第99逻辑块地址LBA00至LBA99的范围的对应索引被设置为“0”;响应于第一突然断电事件,将第0日志数据JNL_0和第一范围表刷写到存储器120;在第一突然断电事件之后通电时,可执行第二擦除操作并生成第1日志数据JNL_1,并且可基于第1日志数据的索引(即,“1”)更新第一范围表以生成第二范围表,在第二范围表中,与第0逻辑块地址至第99逻辑块地址LBA00至LBA99的范围的对应索引从“0”改变为“1”;响应于第二突然断电事件,将第0日志数据JNL_0、第1日志数据JNL_1和最新的第二范围表刷写到存储器120中;在第二突然断电事件之后再次通电时,可通过基于第二范围表的索引跳过第0日志数据的重放并且对第1日志数据执行重放操作来恢复元数据。
图9是示出图8的日志数据重放器的框图。参照图8和图9,日志数据重放器111c可包括日志数据检索单元111c-1、重复检测单元111c-2和重放单元111c-3。日志数据检索单元111c-1可被配置为从非易失性存储器装置120顺序地检索存储在非易失性存储器装置120中的日志数据JNL。
重复检测单元111c-2可从日志数据检索单元111c-1接收日志数据JNL。重复检测单元111c-2可基于范围表RT来确定日志数据JNL是否重复(或者日志数据JNL是否是最新的日志数据)。例如,重复检测单元111c-2可确定日志数据JNL是否与范围更新相关联。当日志数据JNL与范围更新相关联时,重复检测单元111c-2可确定日志数据JNL的索引是否与存在于范围表RT中的索引匹配。当日志数据JNL的索引与存在于范围表RT中的索引不匹配时,重复检测单元111c-2可不将日志数据JNL传送到重放单元111c-3,并且可从日志数据检索单元111c-1接收下一日志数据。这样,日志数据JNL的重放操作可被跳过。
当日志数据JNL的索引与存在于范围表RT中的索引匹配时,或者当日志数据JNL与范围更新不相关联时,重复检测单元111c-2可将日志数据JNL传送到重放单元111c-3。重放单元111c-3可通过对从重复检测单元111c-2接收的日志数据JNL执行重放操作来更新元数据MD。
图10A是示出图1的存储装置重放日志数据的操作的流程图。图10B是用于描述根据图10A的流程图的操作的示图。
在一个实施例中,根据图10A的流程图的重放操作可由图8的日志管理器执行,并且可在特定环境中执行。例如,为了更新元数据MD以便将其改变为最新版本的目的,可在存储系统10通电之后执行根据图10A的流程图的重放操作。在这种情况下,可从非易失性存储器装置120或缓冲存储器130提供日志数据JNL。
可选地或附加地,根据图10A的流程图的重放操作可在日志存储器111b是满的情况下执行,使得日志存储器111b的条目被保护。在这种情况下,可从日志存储器111b提供日志数据JNL。
参照图1、图8、图10A和图10B,在操作RS101中,变量“i”被设置为“0”。在一个实施例中,变量“i”用于描述日志管理器111的迭代重放操作,并指示日志数据JNL的索引。然而,本公开不限于此。
在操作RS111中,日志管理器111可检索第i日志数据JNL_i。例如,日志管理器111可检索存储在非易失性存储器装置120或缓冲存储器130中的日志数据JNL之中的第i日志数据JNL_i。
在操作RS112中,日志管理器111可确定第i日志数据JNL_i是否与范围更新相关联。例如,日志管理器111可确定第i日志数据JNL_i是否指示与多个逻辑块地址的对应的元数据MD的更新。
当第i日志数据JNL_i与范围更新不相关联时,在操作RS113中,日志管理器111可对第i日志数据JNL_i执行重放操作。
相比之下,当第i日志数据JNL_i与范围更新相关联时,在操作RS114中,日志管理器111可确定第i日志数据JNL_i的索引是否是最新索引。例如,范围表RT可包括与范围更新相关联的多个日志数据之中的最新日志数据的索引信息(即,最新索引信息)。日志管理器111可确定第i日志数据JNL_i的索引是否与范围表RT的最新索引匹配。
当第i日志数据JNL_i的索引与范围表RT的最新索引匹配时(即,当第i日志数据JNL_i与范围更新相关联并且是最新日志数据时),在操作RS113中,日志管理器111可对第i日志数据JNL_i执行重放操作。
相比之下,当第i日志数据JNL_i的索引与范围表RT的最新索引不匹配时(即,当第i日志数据JNL_i与范围更新相关联但不是最新日志数据时),日志管理器111可跳过第i日志数据JNL_i的重放操作。
之后,在操作RS102中,确定变量“i”是否是最大值。变量i为最大值表示所有日志数据被处理。在这种情况下,日志数据JNL的重放操作结束。
变量“i”不是最大值表示存在要处理(或未处理)的日志数据。在这种情况下,在操作RS103中,变量“i”增加“1”,并且日志管理器111返回到操作RS111。
详细地,如图10B中所示,多个日志数据JNL_0至JNL_99可被管理为日志数据。日志管理器111可顺序地执行日志数据JNL_0至JNL_99中的每个的重放操作。
在这种情况下,当日志数据与范围更新相关联时,日志管理器111可基于日志数据的索引和范围表RT的最新索引选择性地跳过日志数据的重放操作。例如,第0日志数据JNL_0、第1日志数据JNL_1、第3日志数据JNL_3和第98日志数据JNL_98可与对应于第0逻辑块地址至第99逻辑块地址(LBA00至LBA99)的元数据MD的更新(即,范围更新)相关联。在这种情况下,因为第0日志数据JNL_0、第1日志数据JNL_1和第3日志数据JNL_3(即,0、1和3)与包括在范围表RT中的索引信息(即,98)不匹配,所以日志管理器111跳过第0日志数据JNL_0、第1日志数据JNL_1和第3日志数据JNL_3的重放操作。
相比之下,因为第98日志数据JNL_98的索引(即,98)与包括在范围表RT中的索引信息(即,98)匹配,所以日志管理器111可对第98日志数据JNL_98执行重放操作。
在一个实施例中,因为剩余的日志数据(例如,JNL_2、JNL_4、JNL_5、……、JNL_99)不与范围更新相关联,所以日志管理器111可重放剩余的日志数据(例如,JNL_2、JNL_4、JNL_5、……、JNL_99)。
在一个实施例中,如上所述,即使跳过一些日志数据(例如,JNL_0、JNL_1和JNL_3)的重放操作,元数据MD的最终版本也可被相同地保持。例如,当对多个日志数据JNL_0至JNL_99顺序执行重放操作时,通过第98日志数据JNL_98的重放操作,与第0逻辑块地址至第99逻辑块地址(LBA00至LBA99)对应的元数据MD可被新地更新,而不管先前的重放或更新操作如何。也就是说,即使跳过了作为在与范围更新相关联的最新的日志数据之前生成或记录的第0日志数据JNL_0、第1日志数据JNL_1和第3日志数据JNL_3的重放操作,也可执行第98日志数据JNL_98的重放操作(即,与范围更新相关联的最新的日志数据的重放操作)。最终,通过第98日志数据JNL_98的重放操作(即,与范围更新相关联的最新日志数据的重放操作),元数据MD可被改变为最新版本。如上所述,当跳过一些日志数据(例如,JNL_0、JNL_1和JNL_3)的重放操作时,重放日志数据所花费的时间可减少。
图11A是示出图1的存储装置重放日志数据的操作的流程图。图11B是用于描述根据图11A的流程图的操作的示图。根据图11A的流程图的操作将由图8的日志管理器执行。将省略与上述组件相关联的附加描述以避免冗余。
参照图1、图8、图11A和图11B,在操作RS101中,变量“i”被设置为“0”。日志管理器111可执行操作RS121和操作RS122。操作RS121和操作RS122可类似于图10A的操作RS111和操作RS112。
当第i日志数据JNL_i与范围更新相关联时,在操作RS125中,日志管理器111可确定第i日志数据JNL_i的索引是否是最新索引。当第i日志数据JNL_i的索引是最新索引时,在操作RS124中,日志管理器111对第i日志数据JNL_i执行重放操作。当第i日志数据JNL_i的索引不是最新索引时,日志管理器111跳过第i日志数据JNL_i的重放操作。操作RS125和操作RS124可类似于图10A的操作RS114和操作RS113。
当第i日志数据JNL_i不与范围更新相关联时,在操作RS123中,日志管理器111可确定是否存在与最新索引对应的日志数据。当不存在与最新索引对应的日志数据时,日志管理器111可执行操作RS124。当存在与最新索引对应的日志数据时(例如,与最新索引对应的日志数据的重放操作没有被执行),日志管理器111可跳过操作RS124。
例如,如图11B中所示,可管理多个日志数据JNL_0至JNL_99。在这种情况下,第0日志数据JNL_0、第1日志数据JNL_1、第3日志数据JNL_3和第98日志数据JNL_98可与范围更新相关联,并且可基于范围表RT跳过第0日志数据JNL_0、第1日志数据JNL_1、第3日志数据JNL_3的重放操作。
第2日志数据JNL_2可与对应于第一逻辑块地址LBA01的元数据MD的更新相关联。也就是说,第2日志数据JNL_2可不与范围更新相关联。在这种情况下,因为与包括在范围表RT中的最新索引对应的日志数据(即,第98日志数据JNL_98)仍然存在,所以日志管理器111可跳过第2日志数据JNL_2的重放操作。也就是说,因为与包括在范围表RT中的最新索引对应的日志数据(即,第98日志数据JNL_98)的重放操作没有被执行,所以日志管理器111可跳过第2日志数据JNL_2的重放操作。
类似地,第4日志数据JNL_4与对应于第2逻辑块地址LBA02的元数据MD的更新相关联,并且第5日志数据JNL_5与对应于第3逻辑块地址LBA03的元数据MD的更新相关联。在这种情况下,因为与包括在范围表RT中的最新索引对应的日志数据(即,第98日志数据JNL_98)仍然存在,所以日志管理器111可跳过第4日志数据JNL_4和第5日志数据JNL_5的重放操作。
第99日志数据JNL_99可与对应于第80逻辑块地址LBA_80的元数据MD的更新相关联。此时,因为与包括在范围表RT中的最新索引对应的日志数据(即,第98日志数据JNL_98)已经被处理,所以日志管理器111可对第99日志数据JNL_99执行重放操作。
结果,即使跳过对与范围更新相关联的日志数据之中的最新日志数据之前的日志数据的重放操作,也可通过对与范围更新相关联的日志数据之中的最新日志数据的重放操作来执行范围更新,因此,最终恢复的元数据MD可被相同地保持。
图12A是示出图1的存储装置的日志数据生成方法的流程图。图12B是用于描述根据图12A的流程图的操作的示图。参照图1、图5、图12A和图12B,存储装置100可执行操作JS210至操作JS230。操作JS210至操作JS230类似于图7A的操作JS110至操作JS130,因此,将省略附加描述以避免冗余。
当元数据MD的更新不是范围更新时,存储装置100执行操作JS260。操作JS260可类似于图7A的操作JS150。
当元数据MD的更新是范围更新时,在操作JS240中,存储装置100可确定范围更新的范围是否与由范围表RT管理的至少一个范围组(RG)匹配。
当范围与范围组匹配时,在操作JS250中,存储装置100可更新范围表RT。之后,存储装置100可执行操作JS260。当范围与范围组不匹配时,存储装置100可执行操作JS260而不更新范围表RT。
详细地,如图12B中所示,存储装置100可顺序地执行第0逻辑块地址至第99逻辑块地址LBA00至LBA99的擦除操作、第0逻辑块地址LBA00至第29逻辑块地址LBA29的擦除操作、第一逻辑块地址LBA01的写入操作、第0逻辑块地址至第29逻辑块地址(LBA00至LBA29)的擦除操作、第30逻辑块地址至第59逻辑块地址LBA30至LBA59的擦除操作、第80逻辑块地址至第89逻辑块地址LBA80至LBA89的擦除操作、……、第60逻辑块地址至第79逻辑块地址LBA60至LBA79的擦除操作、以及第80逻辑块地址至第99逻辑块地址LBA80至LBA89的擦除操作。这样,第0日志数据至第99日志数据JNL_0至JNL_99可被生成并且可被顺序地记录在日志存储器111b。
与参照图7B给出的描述不同,在图12B中,范围表RT可被配置为管理多个范围组RG0、RG1和RG2。例如,在图7B的实施例中,范围表RT通过使用一个范围组来管理指示存储装置100的存储区域的第0逻辑块地址至第99逻辑块地址(LBA00至LBA99)。相比之下,在图12B的实施例中,范围表RT可通过使用多个范围组(例如,RG0、RG1和RG2)来管理第0逻辑块地址至第99逻辑块地址LBA00至LBA99中的至少一些。
详细地,可通过使用第0范围组RG0来管理第0逻辑块地址LBA00至第29逻辑块地址LBA29;可通过使用第1范围组RG1来管理第30逻辑块地址LBA30至第59逻辑块地址LBA59;可通过使用第2范围组RG2来管理第60逻辑块地址LBA60至第79逻辑块地址LBA79。在一个实施例中,多个范围组中的每个可包括彼此不重叠的逻辑块地址。
日志管理器111可基于与每个日志数据对应的逻辑块地址的范围来更新范围表RT。例如,首先,可生成第0日志数据JNL_0。第0日志数据JNL_0可与第0逻辑块地址至第99逻辑块地址(LBA00至LBA99)对应。在这种情况下,不存在与第0逻辑块地址至第99逻辑块地址(LBA00至LBA99)的范围匹配的范围组。在这种情况下,不更新范围表RT。
第1日志数据JNL_1可与第0辑块地址LBA00至第29逻辑块地址LBA29对应。在这种情况下,第0逻辑块地址LBA00至第29逻辑块地址LBA29可与范围表RT的第0范围组RG0对应。这样,日志管理器111可更新第0范围组RG0的最新索引,以便将其设置为第1日志数据JNL_1的索引,即“1”。因为第2日志数据JNL_2不与范围更新相关联,所以不更新范围表RT。
第3日志数据JNL_3可与第0逻辑块地址LBA00至第29逻辑块地址LBA29对应。在这种情况下,第0逻辑块地址LBA00至第29逻辑块地址LBA29可与范围表RT的第0范围组RG0对应。这样,日志管理器111可更新第0范围组RG0的最新索引,以便将其设置为第3日志数据JNL_3的索引,即“3”。
第4日志数据JNL_4可与第30逻辑块地址LBA30至第59逻辑块地址LBA59对应。第30逻辑块地址LBA30至第59逻辑块地址LBA59可与范围表RT的第1范围组RG1对应;在这种情况下,日志管理器111可更新第1范围组RG1的最新索引,以便将其设置为第4日志数据JNL_4的索引,即“4”。
第5日志数据JNL_5可与第80逻辑块地址LBA80至第89逻辑块地址LBA89对应,并且不存在与第80逻辑块地址LBA80至第89逻辑块地址LBA89对应的范围组。因此,不更新范围表RT。
第98日志数据JNL_98可与第60逻辑块地址LBA60至第79逻辑块地址LBA79对应,并且第60逻辑块地址LBA60至第79逻辑块地址LBA79可与范围表RT的第2范围组RG2对应。在这种情况下,日志管理器111可更新第2范围组RG2的最新索引,以便将其设置为第98日志数据JNL_98的索引,即“98”。
最终,第99日志数据JNL_99可与第80逻辑块地址LBA80至第99逻辑块地址LBA99对应,并且不存在与第80逻辑块地址LBA80至第99逻辑块地址LBA99对应的范围组。因此,不更新范围表RT。
在一个实施例中,由范围表RT管理的范围组的数量或每个范围组的逻辑块地址范围可被不同地改变和修改。
图13A是示出图1的存储装置重放日志数据的操作的流程图。图13B是用于描述根据图13A的流程图的操作的示图。在一个实施例中,根据图13A的流程图的操作可由图8的日志管理器111执行。在一个实施例中,可通过使用根据参照图12A和图12B描述的方法记录的日志数据以及根据该方法更新的范围表来执行根据图13A的流程图的操作。
参照图1、图8、图13A和图13B,在操作RS201中,变量“i”被设置为“0”。日志管理器111可执行操作RS211和操作RS212。操作RS211和操作RS212可类似于图10A的操作RS111和操作RS112。
当第i日志数据JNL_i不与范围更新相关联时,在操作JS215中,日志管理器111对第i日志数据JNL_i执行重放操作。当第i日志数据JNL_i与范围更新相关联时,在操作JS213中,日志管理器111可确定与第i日志数据JNL_i对应的逻辑块地址的范围是否与范围表RT中管理的范围组中的任何一个匹配。
当与对应于第i日志数据JNL_i的逻辑块地址的范围匹配的范围组不存在于范围表RT中时(即,操作RS213中的“否”),在操作RS215中,日志管理器111对第i日志数据JNL_i执行重放操作。
当与对应于第i日志数据JNL_i的逻辑块地址的范围匹配的范围组存在于范围表RT中时,在操作RS214中,日志管理器111可确定第i日志数据JNL_i的索引是否是最新索引。例如,日志管理器111可确定与第i日志数据JNL_i对应的范围组的最新索引是否与第i日志数据JNL_i的索引匹配。
当与第i日志数据JNL_i对应的范围组的最新索引与第i日志数据JNL_i的索引匹配时,在操作RS215中,日志管理器111对第i日志数据JNL_i执行重放操作。当与第i日志数据JNL_i对应的范围组的最新索引与第i日志数据JNL_i的索引不匹配时,日志管理器111可跳过第i日志数据JNL_i的重放操作并且可执行操作RS202。
在操作RS202中,确定变量“i”是否是最大值。当变量“i”不是最大值时,在操作RS203中,变量“i”可增加“1”,并且日志管理器111执行操作RS211。
详细地,如图13B中所示,可管理多个日志数据JNL_0至JNL_99。日志管理器111可顺序地执行多个日志数据JNL_0至JNL_99的重放操作。在这种情况下,日志管理器111可基于图13A的操作方法跳过一些日志数据的重放操作。
例如,日志管理器111可确定是否重放第0日志数据JNL_0。在这种情况下,第0日志数据JNL_0与范围更新相关联,但是与第0日志数据JNL_0的更新范围(即,LBA00至LBA99)对应的范围组不存在于范围表RT中,日志管理器111对第0日志数据JNL_0执行重放操作。
随后,日志管理器111可确定是否重放第1日志数据JNL_1。在这种情况下,第1日志数据JNL_1与范围更新相关联,并且与第1日志数据JNL_1的更新范围(即,LBA00至LBA29)对应的第0范围组RG0存在于范围表RT中;然而,因为第1日志数据JNL_1的索引不是最新索引,所以日志管理器111可跳过第1日志数据JNL_1的重放操作。
类似地,日志管理器111可确定是否执行第2日志数据JNL_2至第99日志数据JNL_99中的每个的重放操作。在这种情况下,因为第2日志数据JNL_2不与范围更新相关联,所以对第2日志数据JNL_2执行重放操作。因为第3日志数据JNL_3与范围更新相关联,与第3日志数据JNL_3对应的第0范围组RG0存在于范围表RT中,并且第3日志数据JNL_3的索引是最新索引,所以对第3日志数据JNL_3执行重放操作。
因为第4日志数据JNL_4与范围更新相关联,与第4日志数据JNL_4对应的第1范围组RG1存在于范围表RT中,并且第4日志数据JNL_4的索引是最新索引,所以对第4日志数据JNL_4执行重放操作。因为第5日志数据JNL_5与范围更新相关联,并且与第5日志数据JNL_5对应的范围组RG不存在于范围表RT中,所以对第5日志数据JNL_5执行重放操作。
因为第98日志数据JNL_98与范围更新相关联,与第98日志数据JNL_98对应的第2范围组RG2存在于范围表RT中,并且第98日志数据JNL_98的索引是最新索引,所以对第98日志数据JNL_98执行重放操作。
因为第99日志数据JNL_99与范围更新相关联,但是与第99日志数据JNL_99对应的范围组RG不存在于范围表RT中,所以对第99日志数据JNL_99执行重放操作。
如上所述,日志管理器111可根据日志数据是否重复来跳过一些日志数据的重放操作。
图14A是示出图8的日志管理器重放日志数据的操作的流程图。图14B是用于描述根据图14A的流程图的操作的示图。在一个实施例中,可通过使用根据参照图12A和图12B描述的方法记录的日志数据以及根据该方法更新的范围表来执行根据图14A的流程图的操作。
参照图1、图8、图14A和图14B,在操作RS201中,变量“i”被设置为“0”。之后,日志管理器111可执行操作RS221和操作RS222。操作RS221和操作RS222可类似于图13A的操作RS211和操作RS212。
当日志数据JNL不与范围更新相关联时,在操作RS223中,日志管理器111可确定是否存在与最新索引对应的日志数据。“存在与最新索引对应的日志数据”表示不需要当前日志数据JNL的重放操作,因为当对与最新索引对应的日志数据执行重放操作时元数据MD被新地更新。在这种情况下,日志管理器111可跳过操作RS224(即,日志数据的重放操作)。
相比之下,“不存在与最新索引对应的日志数据”表示通过当前日志数据JNL的重放操作将元数据MD改变为最新版本。在这种情况下,在操作RS224中,日志管理器111可对当前日志数据JNL执行重放操作。
当操作RS222中的确定结果指示日志数据JNL与范围更新相关联时,在操作RS225中,日志管理器111可确定日志数据JNL的范围是否与范围表RT的范围组之一匹配。
当日志数据JNL的范围与范围表RT的范围组之一匹配时,在操作RS226中,日志管理器111可基于范围表RT确定日志数据JNL的索引是否是最新索引。当日志数据JNL的索引是最新索引时,在操作RS224中,日志管理器111对日志数据JNL执行重放操作。当日志数据JNL的索引不是最新索引时,日志管理器111跳过日志数据JNL的重放操作。
当日志数据JNL的范围与范围表RT的范围组之一不匹配时,在操作RS227中,日志管理器111可确定日志数据JNL的范围是否是范围表RT的范围组之一的子集。
当日志数据JNL的范围是范围表RT的范围组之一的子集时,日志管理器111执行操作RS223;当日志数据JNL的范围不是范围表RT的范围组之一的子集时,日志管理器111执行操作RS224。
之后,在操作RS202中,确定变量“i”是否是最大值。当变量“i”不是最大值时,在操作RS203中,变量“i”可增加“1”,并且日志管理器111执行操作RS221。
详细地,如图14B中所示,可管理多个日志数据JNL_0至JNL_99。日志管理器111可顺序地执行多个日志数据JNL_0至JNL_99的重放操作。在这种情况下,日志管理器111可基于图14A的操作方法跳过一些日志数据的重放操作。
首先,日志管理器111确定是否重放第0日志数据JNL_0。因为第0日志数据JNL_0与第0逻辑块地址至第99逻辑块地址(LBA00至LBA99)的范围更新相关联(即,操作RS222中的“是”),第0逻辑块地址至第99逻辑块地址(LBA00至LBA99)的范围不与范围表RT的范围组RG0、RG1和RG2中的任何一个匹配(即,操作RS225中的“否”),并且第0日志数据JNL_0的索引不是范围表RT的范围组RG0、RG1和RG2中的任何一个的子集(即,操作RS227中的“否”),所以日志管理器111对第0日志数据JNL_0执行重放操作。
随后,日志管理器111确定是否重放第1日志数据JNL_1。因为第1日志数据JNL_1与第0逻辑块地址LBA00至第29逻辑块地址LBA29的范围更新相关联(即,操作RS222中的“是”),第0逻辑块地址LBA00至第29逻辑块地址LBA29的范围与范围表RT的范围组RG0、RG1和RG2中的第0范围组RG0匹配(即,操作RS225中的“是”),并且第1日志数据JNL_1的索引不是最新索引(即,操作RS226中的“否”),所以日志管理器111跳过第1日志数据JNL_1的重放操作。
然后,日志管理器111确定是否重放第2日志数据JNL_2。因为第2日志数据JNL_2与第一逻辑块地址LBA01的更新相关联(即,不与范围更新相关联)(即,操作RS222中的“否”),与最新索引对应的日志数据(例如,与第0范围组RG0的最新索引(即,3)对应的第3日志数据JNL_3)尚未被处理(即,操作RS223中的“是”),所以跳过第2日志数据JNL_2的重放操作。
然后,日志管理器111确定是否重放第3日志数据JNL_3。因为第3日志数据JNL_3与第0逻辑块地址LBA00至第29逻辑块地址LBA29的范围更新相关联(即,操作RS222中的“是”),第0逻辑块地址LBA00至第29逻辑块地址LBA29的范围与范围表RT的范围组RG0、RG1和RG2中的第0范围组RG0匹配(即,操作RS225中的“是”),并且第3日志数据JNL_3的索引与最新索引对应(即,操作RS226中的“是”),所以对第3日志数据JNL_3执行重放操作。
然后,日志管理器111确定是否重放第4日志数据JNL_4。因为第4日志数据JNL_4与第30逻辑块地址LBA30至第59逻辑块地址LBA59的范围更新相关联(即,操作RS222中的“是”),第30逻辑块地址LBA30至第59逻辑块地址LBA59的范围与范围表RT的范围组RG0、RG1和RG2中的第1范围组RG1匹配(即,操作RS225中的“是”),并且第4日志数据JNL_4的索引与最新索引对应(即,操作RS226中的“是”),所以对第4日志数据JNL_4执行重放操作。
然后,日志管理器111确定是否重放第5日志数据JNL_5。因为第5日志数据JNL_5与第60逻辑块地址LBA60至第65逻辑块地址LBA65的范围更新相关联(即,操作RS222中的“是”),第60逻辑块地址LBA60至第65逻辑块地址LBA65的范围与范围表RT的范围组RG0、RG1和RG2中的任何一个不匹配(即,操作RS225中的“否”),第60逻辑块地址LBA60至第65逻辑块地址LBA65的范围与范围表RT的范围组RG0、RG1和RG2中的第2范围组RG2的子集相关联(即,操作RS227中的“是”),并且与最新索引对应的日志数据(例如,与第2范围组RG2的最新索引(即,98)对应的第98日志数据JNL_98)尚未被处理(即,操作RS223中的“是”),所以跳过第5日志数据JNL_5的重放操作。
然后,日志管理器111确定是否重放第98日志数据JNL_98。因为第98日志数据JNL_98与第60逻辑块地址LBA60至第79逻辑块地址LBA79的范围更新相关联(即,操作RS222中的“是”),第60逻辑块地址LBA60至第79逻辑块地址LBA79的范围与范围表RT的范围组RG0、RG1和RG2中的第2范围组RG2匹配(即,操作RS225中的“是”),并且第98日志数据JNL_98的索引与最新索引对应(即,操作RS226中的“是”),所以对第98日志数据JNL_98执行重放操作。
然后,日志管理器111确定是否重放第99日志数据JNL_99。因为第99日志数据JNL_99与第80逻辑块地址LBA80至第99逻辑块地址LBA99的范围更新相关联(即,操作RS222中的“是”),第80逻辑块地址LBA80至第99逻辑块地址LBA99的范围与范围表RT的范围组RG0、RG1和RG2中的任何一个不匹配(即,操作RS225中的“否”),并且第99日志数据JNL_99的索引不是范围表RT的范围组RG0、RG1和RG2中的任何一个的子集(即,操作RS227中的“否”),所以对第99日志数据JNL_99执行重放操作。
如上所述,根据本公开,通过对多个日志数据之中的后续日志数据执行重放操作,可针对元数据被新地更新的逻辑块地址的日志数据跳过重放操作。因此,可缩短存储装置100恢复元数据MD所花费的时间。
图15A是示出图1的存储装置的日志数据生成方法的流程图。图15B是用于描述根据图15A的流程图的操作的示图。图15C是用于描述用于在根据图15A的流程图的操作中分割日志数据的配置的示图。
参照图1、图5、图15A、图15B和图15C,存储装置100可执行操作JS310、操作JS320和操作JS330。操作JS310、操作JS320和操作JS330类似于图7A的操作JS110、操作JS120和操作JS130,因此,将省略附加描述以避免冗余。
当元数据MD的更新不是由存储装置100的操作引起时(即,操作JS320中的“否”),日志数据JNL不被单独生成。当元数据MD的更新是由存储装置100的操作引起的但不是范围更新时(即,操作JS330中的“否”),在操作JS360中,生成日志数据JNL,并且将因此生成的日志数据JNL记录在日志存储器111b。
当由存储装置100的操作引起的元数据MD的更新是范围更新时(即,操作JS330中的“是”),在操作JS340中,存储装置100可以以范围组RG为单位分割日志数据JNL。之后,在操作JS350中,存储装置100可更新范围表RT。在操作JS360中,存储装置100可将日志数据JNL(即,分割的日志数据)记录在日志存储器111b。
详细地,如图15B中所示,存储装置100可执行第0逻辑块地址至第99逻辑块地址(LBA00至LBA99)的擦除操作。在这种情况下,可更新与第0逻辑块地址至第99逻辑块地址(LBA00至LBA99)对应的元数据MD,因此,可生成第0日志数据JNL_0。
在这种情况下,日志管理器111可基于范围表RT的第0范围组RG0至第2范围组RG2来分割第0日志数据JNL_0。例如,第0日志数据JNL_0可被分割为JNL_0_0、JNL_0_1、JNL_0_2和JNL_0_3。JNL_0_0可包括关于与第0范围组RG0的第0逻辑块地址LBA00至第29逻辑块地址LBA29对应的元数据MD的更新的信息。JNL_0_1可包括关于与第1范围组RG1的第30逻辑块地址LBA30至第59逻辑块地址LBA59对应的元数据MD的更新的信息。JNL_0_2可包括关于与第2范围组RG2的第60逻辑块地址LBA60至第79逻辑块地址LBA79对应的元数据MD的更新的信息。JNL_0_3可包括关于与未包括在范围组RG0至RG2中的第80逻辑块地址LBA80至第99逻辑块地址LBA99对应的元数据MD的更新的信息。
随后,存储装置100可执行第0辑块地址LBA00至第29逻辑块地址LBA29的擦除操作。可更新与第0辑块地址LBA00至第29逻辑块地址LBA29对应的元数据MD,从而可生成第1日志数据JNL_1。第1日志数据JNL_1可仅包括关于与包括在第0范围组RG0中的第0辑块地址LBA00至第29逻辑块地址LBA29对应的元数据MD的更新的信息,因此,第1日志数据JNL_1可不被单独分割。
然后,存储装置100可执行第一逻辑块地址LBA01的写入操作。可更新与第一逻辑块地址LBA01对应的元数据MD,因此,可生成第2日志数据JNL_2。因为第2日志数据JNL_2不与范围更新相关联,所以第2日志数据JNL_2不被分割。
随后,存储装置100可执行第20逻辑块地址LBA20至第50逻辑块地址LBA50的擦除操作。在这种情况下,可更新与第20逻辑块地址LBA20至第50逻辑块地址LBA50对应的元数据MD,因此,可生成第3日志数据JNL_3。第3日志数据JNL_3可被分割为与第20逻辑块地址LBA20至第29逻辑块地址LBA29对应的日志数据JNL_3_0和与第30逻辑块地址LBA30至第50逻辑块地址LBA50对应的日志数据JNL_3_1。
也就是说,可基于与范围表RT的范围组对应的逻辑块地址的范围来分割与范围更新对应的日志数据。详细地说,如图15C中所示,可针对对于所有的第0逻辑块地址至第99逻辑块地址LBA00至LBA99的第0擦除操作Erase_0,生成四个日志数据JNL_0_0、JNL_0_1、JNL_0_2和JNL_0_3。可选地,可针对对于一些逻辑块地址的第1擦除操作Erase_1,生成三个日志数据JNL_1_0、JNL_1_1和JNL_1_2。在这种情况下,用于分割每个日志数据的标准可与用于对范围表RT的范围组RG0、RG1和RG2进行分类的标准相同。
返回到图15B,如在以上描述中,存储装置100可重复执行写入操作和擦除操作,因此,可生成多个日志数据JNL_4至JNL_99。日志管理器111可以以范围组为单位,分割多个日志数据JNL_4至JNL_99之中的与范围更新对应的日志数据。在这种情况下,因为第4日志数据JNL_4可与范围更新相关联但被包括在范围组中,第5日志数据可与范围更新相关联但被包括在描述的范围组之外,所以第4日志数据JNL_4和第5日志数据JNL_5可不被单独地分割。第99日志数据JNL_99可被分割为与第0辑块地址LBA00至第29逻辑块地址LBA29对应的JNL_99_0、与第30逻辑块地址LBA30至第59逻辑块地址LBA59对应的JNL_99_1、与第60逻辑块地址LBA60至第79逻辑块地址LBA79对应的JNL_99_2、和与第80逻辑块地址LBA80至第89逻辑块地址LBA99对应的JNL_99_3。
在一个实施例中,分割的日志数据可包括关于与多个逻辑块地址对应的元数据MD的更新的信息,并且可被存储或记录在日志存储器111b的一个条目中。
在一个实施例中,可按照生成和分割日志数据的次序来更新范围表RT。例如,与第0范围组RG0对应的日志数据可以是JNL_0_0、JNL_1和JNL_99_0。这样,与范围表RT的第0范围组RG0对应的索引可按以下次序更新:0_0→1→99。
与第1范围组RG1对应的日志数据可以是JNL_0_1、JNL_4和JNL_99_1。这样,与范围表RT的第1范围组RG1对应的索引可按以下次序更新:0_1→4→99_1。
与第2范围组RG2对应的日志数据可以是JNL_0_2、JNL_98和JNL_99_2。这样,与范围表RT的第2范围组RG2对应的索引可按以下次序更新:0_2→98→99_2。
图16是用于描述图1的存储装置的日志数据重放操作的示图。在一个实施例中,存储装置100基于参照图15B描述的日志数据和范围表来执行重放操作。
参照图1、图8和图16,日志管理器111可通过对多个日志数据JNL_0_0至JNL_99_3执行重放操作来恢复元数据MD。在这种情况下,日志管理器111可基于与上述方式类似的方式跳过多个日志数据JNL_0_0至JNL_99_3中的一些的重放操作。
例如,如图16中所示,日志管理器111根据日志数据的索引次序(例如,JNL_0_0→JNL_0_1→JNL_0_2→……→JNL_99_2→JNL_99_3)对日志数据顺序地执行重放操作。首先,确定JNL_0_0的重复(即,是否重放JNL_0_0)。因为JNL_0_0与第0范围组RG0对应并且范围表RT中的第0范围组RG0的最新索引是99_0,所以跳过JNL_0_0的重放操作。以与上述方式类似的方式,确定执行还是跳过剩余日志数据JNL_0_1至JNL_99_3的重放操作,因此,将省略附加描述以避免冗余。
如上所述,根据本公开的实施例,日志管理器111可基于存储装置100的操作单元生成单个日志数据JNL。当日志数据JNL与范围更新相关联时,日志管理器111可更新范围表RT。
之后,当日志数据被重放时,日志管理器111可基于范围表RT跳过与最新索引不对应的日志数据的重放操作。因此,可缩短存储装置100的操作处理时间,并且还可缩短存储装置100恢复元数据MD所花费的时间(即,存储装置100的打开时间)。因此,提供了具有改进性能的存储装置100。
图17是示出图1的存储系统的操作的流程图。参照图1和图17,在操作S1100中,主机11可从存储装置100请求存储信息。在操作S1200,存储装置100可将存储信息发送到主机11。例如,主机11可请求关于存储装置100的存储空间的信息,并且存储装置100可向主机11提供关于存储空间的信息。在一个实施例中,可基于“获取特征(GET FEATURE)”命令或被配置为检查存储装置100的装置信息的各种命令来执行操作S1100和操作S1200。
在操作S1300中,主机11可为逻辑块地址设置范围组。例如,主机11可基于存储信息设置逻辑块地址。主机11可将逻辑块地址分割为至少一个范围组。可根据主机11的驱动方式或策略来不同地设置范围组的大小和范围组的数量。
在操作S1400中,主机11可向存储装置100提供关于逻辑块地址的范围组的信息。在一个实施例中,可基于“设置特征(SET FEATURE)”命令或被配置为检查存储装置100的装置信息的各种命令来执行操作S1400。
在操作S1500中,存储装置100可基于范围组生成范围表,并且可管理范围表。
如上所述,由存储控制器110的日志管理器111使用和管理的范围表RT可包括用于逻辑块地址的范围组RG。主机11可基于逻辑块地址来管理存储装置100的存储空间,并且主机11可直接设置和管理范围组RG的逻辑块地址。然而,本公开不限于此。例如,在初始化或驱动存储装置100的同时,可通过存储装置100的操作来不同地改变或修改范围表RT的范围组。
图18是示出根据本公开的实施例的存储系统的框图。参照图18,存储系统1000可包括主机1100和多个存储装置1210至12n0。主机1100可被配置为控制多个存储装置1210至12n0。
多个存储装置1210至12n0中的每个可被配置为对其自己的操作所需的元数据进行管理,并且可通过参照图1至图17描述的日志管理器来管理日志数据。
在一个实施例中,主机1100可包括日志管理器JM。包括在主机1100中的日志管理器JM可被配置为管理与由主机1100管理的元数据的更新相关联的日志数据。例如,主机1100可被配置为彼此独立地控制或访问多个存储装置1210至12n0。在这种情况下,主机1100可管理单独或共同地访问或控制多个存储装置1210至12n0所需的各种元数据。在一个实施例中,如在以上描述中,主机1100的日志管理器JM可基于日志数据的重复而跳过一些日志数据的重放操作。
在一个实施例中,可通过如上所述的各种方法来确定由主机1100管理的日志数据的重复。可选地,可根据与日志数据对应的存储装置来确定由主机1100管理的日志数据的重复。
例如,可基于与第一范围组对应的逻辑块地址来管理与第一存储装置1210对应的存储空间。仅当日志数据的索引与最新索引对应时,才可重放与第一范围组匹配的日志数据。
在一个实施例中,主机1100还可包括闪存转换层FTL。在上述实施例中,闪存转换层FTL被包括在存储装置的存储控制器中,并且对非易失性存储装置执行各种维护操作。相比之下,闪存转换层FTL可包括在主机1100中。在这种情况下,主机1100的闪存转换层FTL可对多个存储装置1210至12n0中的每个执行各种维护操作,并且可管理多个存储装置1210至12n0中的每个的元数据。
图19是示出根据本公开的实施例的存储系统的框图。参照图19,存储系统2000可包括多个主机(第一主机至第n主机)2001至200n和存储装置2100。多个主机2001至200n可被配置为访问存储装置2100。例如,多个主机2001至200n中的每个可将数据存储在存储装置2100中或者可读取存储在存储装置2100中的数据。
存储装置2100可包括存储控制器2110、非易失性存储器装置2120和缓冲存储器2130。存储装置2100、存储控制器2110、非易失性存储器装置2120和缓冲存储器2130的整体操作与以上描述的类似,因此,将省略附加描述以避免冗余。此外,非易失性存储器装置2120是一个实施例中的示例,并且它可用其他类型的存储器装置(例如,易失性存储器装置)代替。
在一个实施例中,存储控制器2110可包括日志管理器2111。日志管理器2111可生成和管理与在存储装置2100的操作中使用的各种元数据的更新信息相关联的日志数据。
在一个实施例中,根据参照图1至图17描述的方法,日志管理器2111可管理日志数据JNL的范围表,并且可基于日志数据JNL的重复而跳过一些日志数据JNL的重放操作。
在一个实施例中,日志管理器2111可基于多个主机2001至200n确定日志数据JNL的重复。例如,第一主机(装置)2001可被配置为访问存储装置2100的第一逻辑区域,并且第二主机(装置)2002可被配置为访问存储装置2100的第二逻辑区域。在这种情况下,可通过使用范围表RT的第一范围组来管理第一逻辑区域,并且可通过使用范围表RT的第二范围组来管理第二逻辑区域。可通过使用相应的范围组来管理由相应的主机访问的逻辑区域,并且因此,可更新范围表RT。上面描述了基于范围表RT如何跳过日志数据的重放操作,因此,将省略附加描述以避免冗余。
图20A至图20C是示出存储系统的各种拓扑的框图。下面,术语“物理功能PF”用于容易地描述本公开的技术构思。物理功能PF可指与多个主机装置(例如,第一主机装置2001和第二主机装置2002)中的每个对应的非易失性存储器快速(NVMe)控制器。NVMe控制器可以以软件、硬件或其组合的形式实现。可选地,物理功能PF可指示被配置为支持单根I/O虚拟化(SR-IOV)功能的PCI-快速。SR-IOV可指示允许一个物理功能支持一个或多个从属虚拟功能(dependent virtual function)的功能。也就是说,下面,可理解,物理功能PF对应于多个主机装置(例如,第一主机装置2001和第二主机装置2002)中的至少一个,并且被配置为处理多个主机装置(例如,第一主机装置2001和第二主机装置2002)中的对应的主机装置的命令或由对应的主机装置管理的提交队列的命令。
在一个实施例中,主机装置1110包括第一主机装置2001和第二主机装置2002,但是本公开不限于此。在一个实施例中,第一主机装置2001和第二主机装置2002可以是物理上彼此区分的硬件装置。可选地,第一主机装置2001和第二主机装置2002可以是在同一计算系统或服务器系统中实现的虚拟机。
在一个实施例中,参照图20A至图20C描述的存储系统2000a、2000b和2000c中的每个可以是参照图1至图19描述的存储系统。在一个实施例中,如参照图20A至图20C所描述的,存储装置2100a、2100b和2100c可包括多个命名空间,并且参照图1至图19描述的范围表RT的范围组可以以命名空间为单位来确定。
参照图20A至图20C,存储系统2000a、2000b和2000c可包括第一主机装置2001、第二主机装置2002以及存储装置2200a、2200b和2200c。第一主机装置2001和第二主机装置2002中的每个可分别发出用于处理对应的操作的命令CMD1和CMD2。例如,第一主机装置2001可发出第一命令CMD1,并且由此发出的第一命令CMD1可存储在第一提交队列SQ1中。第二主机(装置)2002可发出第二命令CMD2,并且由此发出的第二命令CMD2可存储在第二提交队列SQ2中。
示出第一主机装置2001和第二主机装置2002中的每个管理一个提交队列的实施例,但是本公开不限于此。例如,第一主机装置2001和第二主机装置2002中的每个可管理多个提交队列。可选地,第一主机装置2001和第二主机装置2002中的每个还可管理完成队列,该完成队列被配置为接收与多个提交队列相关联的完成。
可选地,第一主机装置2001和第二主机装置2002中的每个可发出管理命令,并且还可管理被配置为接收与管理命令相关联的完成的管理队列和管理完成队列。在一个实施例中,提交队列、完成队列、管理队列、管理完成队列等可被包括在存储装置的控制器存储器缓冲器(CMB)中。可选地,提交队列、完成队列、管理队列、管理完成队列等可被包括在对应的主机装置的主机装置存储器缓冲器(HMB)中。
存储装置2200a、2200b和2200c可与第一主机装置2001和第二主机装置2002通信。在一个实施例中,存储装置2200a、2200b和2200c可通过属于基于PCI-快速接口的物理层的接口(例如,通过PCI-快速的NVMe)与第一主机装置2001和第二主机装置2002通信。可选地,存储装置2200a、2200b和2200c可通过基于网络的接口(例如,NVMe-oF(网络上的NVMe)(诸如,光纤通道或远程直接随机存取存储器(RDMA))与第一主机装置2001和第二主机装置2002通信。下面,为了清楚地描述本公开的实施例,假设存储控制器2210a、2210b和2210c经由通过PCI-快速的NVMe接口与第一主机装置2001和第二主机装置2002通信。
存储装置2200a、2200b和2200c可通过各种类型的物理层与第一主机装置2001和第二主机装置2002通信。第一物理功能PF1和第二物理功能PF2可分别对应于第一主机装置2001和第二主机装置2002。例如,第一物理功能PF1可指示被配置为与第一主机装置2001通信并且处理来自第一主机装置2001的第一命令CMD1的第一NVMe控制器。第二物理功能PF2可指示被配置为与第二主机装置2002通信并且处理来自第二主机装置2002的第二命令CMD2的第二NVMe控制器。
第一物理功能PF1和第二物理功能PF2中的每个可基于来自对应的主机装置的命令来执行非易失性存储器装置2220的操作。在一个实施例中,可通过使用逻辑划分的命名空间NS或者物理或逻辑划分的非易失性存储器(NVM)集合来管理非易失性存储器装置2220。第一物理功能PF1和第二物理功能PF2中的每个可针对对应的命名空间NS1或NS2或者对应的NVM集合执行与命令对应的操作。
在一个实施例中,如图20A中所示,包括在存储控制器2210a中的第一物理功能PF1(第一NVMe控制器)和第二物理功能PF2(第二NVMe控制器)可通过一个物理端口PT与第一主机装置2001和第二主机装置2002通信。物理端口PT可以是被配置为支持PCI快速接口的物理层。在一个实施例中,第一物理功能PF1和第二物理功能PF2中的每个可指从属虚拟功能或者可支持从属虚拟功能。
可选地或附加地,如图20B中所示,包括在存储控制器2210b中的第一物理功能PF1和第二物理功能PF2可通过多个物理端口PT1和PT2与第一主机装置2001和第二主机装置2002通信。第一物理端口PT1和第二物理端口PT2中的每个可以是被配置为支持PCI-快速接口的独立物理层。第一物理功能PF1可通过第一物理端口PT1与第一主机装置2001通信,并且第二物理功能PF2可通过第二物理端口PT2与第二主机装置2002通信。
在一个实施例中,如图20C中所示,第一主机装置2001和第二主机装置2002可与包括在存储控制器2210c中的一个物理功能PF1通信。也就是说,第一主机装置2001和第二主机装置2002可通过一个物理功能PF1分别访问第一命名空间NS1和第二命名空间NS2。
提供参照图20A至图20C描述的配置作为示例,并且本公开不限于此。如上所述,物理功能PF可指示与多个主机装置中的每个对应的NVMe控制器,并且多个物理功能PF可被配置为通过一个物理端口或单独的物理端口与对应的主机装置通信。
图21是示出根据本公开的实施例的主机-存储系统的框图。参照图21,主机-存储系统3000可包括主机3010和存储装置3100。此外,存储装置3100可包括存储控制器3110和非易失性存储器(NVM)3120。此外,根据本公开的实施例,主机3010可包括主机控制器3011和主机存储器3012。主机存储器3012可用作用于临时存储要发送到存储装置3100的数据或从存储装置3100发送的数据的缓冲存储器。
存储装置3100可包括用于根据来自主机3010的请求存储数据的存储介质。作为示例,存储装置3100可包括固态驱动器(SSD)、嵌入式存储器和可拆卸外部存储器中的至少一者。在存储装置3100是SSD的情况下,存储装置3100可以是符合NVMe标准的装置。在存储装置3100是嵌入式存储器或外部存储器的情况下,存储装置3100可以是符合通用闪存(UFS)或嵌入式多媒体卡(eMMC)标准的装置。主机3010和存储装置3100中的每个可生成符合应用于其的标准协议的包,并且可发送所生成的包。
当存储装置3100的非易失性存储器3120包括闪存时,闪存可包括二维(2D)NAND存储器阵列或三维(3D)(或垂直)NAND(VNAND)存储器阵列。作为另一示例,存储装置3100可用各种类型的不同的非易失性存储器来实现。例如,存储装置3100可包括磁RAM(MRAM)、自旋转移力矩MRAM(STT-MRAM)、导电桥接RAM(CBRAM)、铁电RAM(FeRAM)、相变RAM(PRAM)、电阻式RAM(RRAM)和各种类型的不同的存储器中的至少一者。
根据一个实施例,主机控制器3011和主机存储器3012可用单独的半导体芯片来实现。可选地或附加地,在一些实施例中,主机控制器3011和主机存储器3012可在同一半导体芯片中实现。作为示例,主机控制器3011可以是包括在应用处理器中的多个模块之一。在这种情况下,应用处理器可用片上系统(SoC)来实现。此外,主机存储器3012可以是包括在应用处理器中的嵌入式存储器,或者可以是设置在应用处理器外部的非易失性存储器或存储器模块。
主机控制器3011可管理将主机存储器3012的缓冲区的数据(例如,写入数据)存储在非易失性存储器3120中或者将非易失性存储器3120的数据(例如,读取数据)存储在缓冲区中的操作。
存储控制器3110可包括主机接口(或主机接口电路)3111、存储器接口(或存储器接口电路)3112、中央处理器(CPU)3113。此外,存储控制器3110还可包括闪存转换层(FTL)3114、日志管理器3115、缓冲存储器3116、纠错码(ECC)引擎3117、高级加密标准(AES)引擎3118。存储控制器3110还可包括闪存转换层3114被加载到其上的工作存储器,并且当CPU3113执行闪存转换层114时,非易失性存储器3120的数据写入和读取操作可被控制。
主机接口3111可与主机3010交换包。从主机3010发送到主机接口3111的包可包括命令或要写入非易失性存储器3120中的数据,并且从主机接口3111发送到主机3010的包可包括对命令的响应或从非易失性存储器3120读取的数据。存储器接口3112可向非易失性存储器3120提供要写入非易失性存储器3120中的数据,并且可接收从非易失性存储器3120读取的数据。存储器接口3112可被实现为符合标准(诸如,切换(Toggle)或开放NAND闪存接口(ONFI))。
闪存转换层3114可执行各种功能(或操作),诸如,地址映射、损耗均衡和垃圾收集。地址映射操作是指将从主机3010接收的逻辑地址转换为用于在非易失性存储器3120中实际存储数据的物理地址的操作。作为用于允许非易失性存储器3120中的块被均匀地使用使得特定块的过度劣化被避免的技术的损耗平衡例如可通过用于平衡物理块的擦除计数的固件技术来实现。垃圾回收是指通过在将现有块的有效数据复制到新块之后擦除现有块的方式来确保非易失性存储器3120的可用容量的技术。在一个实施例中,闪存转换层3114可被配置为管理和更新参照图1至图15描述的元数据MD。
日志管理器3115可管理和存储与由存储装置3100管理的各种元数据的更新相关联的各种日志数据。在一个实施例中,日志管理器3115可以是参照图1至图17描述的日志管理器。
缓冲存储器3116可临时存储要写入非易失性存储器3120中的数据或从非易失性存储器3120读取的数据。缓冲存储器3116可以是在存储控制器3110内提供的组件;但是,也可将缓冲存储器3116设置在存储控制器3110的外部。在一个实施例中,缓冲存储器3116可以是参照图1至图17描述的被配置为存储元数据MD的缓冲存储器。可选地,缓冲存储器3116可以是参照图1至图17进行描述的被配置为存储日志数据JNL和范围表RT的日志存储器。
ECC引擎3117可对从非易失性存储器3120读取的数据执行错误检测和纠正功能。详细地,ECC引擎3117可生成要写入非易失性存储器3120中的写入数据的奇偶校验位,并且由此生成的奇偶校验位可与写入数据一起被存储在非易失性存储器3120中。当从非易失性存储器3120读取数据时,ECC引擎3117可通过使用与读取的数据一起从非易失性存储器3120读取的奇偶校验位来纠正读取的数据的错误,并且可输出纠错后的读取的数据。
AES引擎3118可通过使用对称密钥算法对输入到存储控制器3110的数据执行加密操作和解密操作中的至少一者。
在一个实施例中,存储控制器3110还可包括包管理器,包管理器生成符合与主机3010商定的接口的协议的包,或者从自主机3010接收的包解析各种信息。
图22是根据实施例的存储器装置被应用到的数据中心4000的示图。
参照图22,数据中心4000可以是收集各种类型的数据并提供服务的设施,并且被称为数据存储中心。数据中心4000可以是用于操作搜索引擎和数据库的系统,并且可以是由公司(诸如,银行)或政府机构的公司使用的计算系统。数据中心4000可包括应用服务器(应用服务器1至应用服务器N)4100至4100n和存储服务器(存储服务器1至存储服务器M)4200至4200m。可根据实施例不同地选择应用服务器4100至4100n的数量和存储服务器4200至4200m的数量。应用服务器4100至4100n的数量可与存储服务器4200至4200m的数量不同。
应用服务器4100或存储服务器4200可包括处理器4110和4210以及存储器4120和4220中的至少一者。现在将描述存储服务器4200作为示例。处理器4210可控制存储服务器4200的所有操作,访问存储器4220,并且执行加载在存储器4220中的指令和/或数据。存储器4220可以是双倍数据速率同步DRAM(DDR SDRAM)、高带宽存储器(HBM)、混合存储器立方体(HMC)、双列直插存储器模块(DIMM)、傲腾DIMM和/或非易失性DIMM(NVMDIMM)。在一些实施例中,可不同地选择包括在存储服务器4200中的处理器4210和存储器4220的数量。在一个实施例中,处理器4210和存储器4220可提供处理器-存储器对。在一个实施例中,处理器4210的数量可与存储器4220的数量不同。处理器4210可包括单核处理器或多核处理器。存储服务器4200的以上描述可类似地应用于应用程序服务器4100。在一些实施例中,应用服务器4100可不包括存储装置4150。存储服务器4200可包括至少一个存储装置4250。可根据实施例不同地选择包括在存储服务器4200中的存储装置4250的数量。
应用服务器4100至4100n可通过网络4300与存储服务器4200至4200m通信。网络4300可通过使用光纤信道(FC)或以太网来实现。在这种情况下,FC可以是用于相对高速的数据传输的介质,并且使用具有高性能和高可用性的光交换机。根据网络4300的访问方法,可提供存储服务器4200至4200m作为文件存储设备、块存储设备或对象存储设备。
在一个实施例中,网络4300可以是存储专用网络(诸如,存储区域网络(SAN))。例如,SAN可以是FC-SAN,FC-SAN使用FC网络并且根据FC协议(FCP)来实现。作为另一示例,SAN可以是互联网协议(IP)-SAN,IP-SAN使用传输控制协议(TCP)/IP网络并且根据TCP/IP上的SCSI或互联网SCSI(iSCSI)协议来实现。在另一实施例中,网络4300可以是通用网络(诸如,TCP/IP网络)。例如,网络4300可根据协议(诸如,以太网上的FC(FCoE)、网络附接存储(NAS)和网络上的NVMe(NVMe-oF))来实现。
以下,将主要对应用程序服务器4100和存储服务器4200进行描述。应用服务器4100的描述可应用于另一应用服务器4100n,并且存储服务器4200的描述可应用于另一存储服务器4200m。
应用程序服务器4100可通过网络4300将由用户或客户端请求存储的数据存储在存储服务器4200至4200m中的一个中。此外,应用程序服务器4100可通过网络4300从存储服务器4200至4200m中的一个获得由用户或客户端请求读取的数据。例如,应用服务器4100可被实现为网络服务器或数据库管理系统(DBMS)。
应用服务器4100可通过网络4300访问包括在另一应用服务器4100n中的存储器4120n或存储装置4150n。可选地,应用服务器4100可通过网络4300访问包括在存储服务器4200至4200m中的存储器4220至4220m或存储装置4250至4250m。因此,应用服务器4100可对存储在应用服务器4100至4100n和/或存储服务器4200至4200m中的数据执行各种操作。例如,应用程序服务器4100可执行用于在应用程序服务器4100至4100n和/或存储服务器4200至4200m之间移动或复制数据的指令。在这种情况下,数据可直接地或通过存储服务器4200至4200m的存储器4220至4220m,从存储服务器4200至4200m的存储装置4250至4250m移动到应用程序服务器4100至4100n的存储器4120至4120n。通过网络4300移动的数据可以是为了安全或隐私而加密的数据。
现在将描述存储服务器4200作为示例。接口(I/F)4254可提供处理器4210与控制器(CTRL)4251之间的物理连接以及网络接口卡(NIC)4240与控制器4251之间的物理连接。例如,接口4254可使用存储装置4250与专用线缆直接连接的直接附接存储(DAS)方案来实现。例如,接口4254可通过使用各种接口方案(诸如,ATA、SATA、e-SATA、SCSI、SAS、PCI、PCIe、NVMe、IEEE 1394、USB接口、SD卡接口、MMC接口、eMMC接口、UFS接口、eUFS接口、和/或CF卡接口)来实现。I/F 4254m可被类似地操作。
存储服务器4200还可包括交换机4230和网络互连(例如,网络接口卡)(NIC)4240。交换机4230可选择性地将处理器4210连接到存储装置4250,或者经由处理器4210的控制选择性地将NIC 4240连接到存储装置4250。包括在应用服务器4100至4100n中的交换机4130至4130n和网络接口卡4140至4140n以及包括在存储服务器4200m中的交换机4230m和NIC4240m可分别与交换机4230和NIC 4240被类似地操作。
在一个实施例中,NIC 4240可包括网络接口卡和网络适配器。NIC 4240可通过有线接口、无线接口、蓝牙接口或光学接口连接到网络4300。NIC 4240可包括内部存储器、数字信号处理器(DSP)和主机总线接口,并且可通过主机总线接口连接到处理器4210和/或交换机4230。主机总线接口可被实现为接口4254的上述示例之一。在一个实施例中,NIC 4240可与处理器4210、交换机4230和存储装置4250中的至少一者集成。
在存储服务器4200至4200m或应用服务器4100至4100n中,处理器可将命令发送到存储装置4150至4150n和4250至4250m或者存储器4120至4120n和4220至4220m,并且对数据进行编程或读取。在这种情况下,数据可以是错误被ECC引擎纠正的数据。数据可以是被执行数据总线反转(DBI)操作或数据掩码(DM)操作的数据,并且可包括循环冗余码(CRC)信息。数据可以是为了安全或隐私而加密的数据。
存储装置4150至4150n和4250至4250m可响应于从处理器接收的读取命令,将控制信号和命令/地址信号发送到NAND闪存装置4252至4252m。因此,当从NAND闪存装置4252至4252m读取数据时,可输入读取使能(RE)信号作为数据输出控制信号,并且因此,可将数据输出到数据总线(例如,DQ总线)。可使用RE信号来生成数据选通信号DQS。命令和地址信号可根据写入使能(WE)信号的上升沿或下降沿而被锁存在页缓冲器中。
控制器4251可控制存储装置4250的所有操作。在一个实施例中,控制器4251可包括SRAM。控制器4251可响应于写入命令将数据写入到NAND闪存装置4252,或者响应于读取命令从NAND闪存装置4252读取数据。例如,可从存储服务器4200的处理器4210、另一存储服务器4200m的处理器4210m、或应用服务器4100和4100n的处理器4110和4110n提供写入命令和/或读取命令。DRAM 4253可临时存储(或缓冲)要写入NAND闪存装置4252的数据或从NAND闪存装置4252读取的数据。此外,DRAM 4253可存储元数据。这里,元数据可以是用户数据或由控制器4251生成以管理NAND闪存装置4252的数据。存储装置4250可包括用于安全或隐私的安全元件(SE)。包括在存储服务器4200m中的控制器4251m和DRAM 4253m可被类似操作。
在一个实施例中,包括在存储装置4150至4150n和4250至4250m中的控制器或者(应用)服务器4100至4200m的CPU可被配置为管理各种元数据。用于保证各种元数据的可靠性的日志数据可由包括在存储装置4150至4150n和4250至4250m中的控制器或者(应用)服务器4100至4200m的CPU管理。在这种情况下,包括在存储装置4150至4150n和4250至4250m中的控制器或者(应用)服务器4100至4200m的CPU可包括参照图1至图21描述的日志管理器,或者可基于参照图1至图21描述的方法进行操作。
根据本公开,提供了具有改善的可靠性和改善的性能的存储装置及其操作方法。虽然已经参照本公开的实施例描述了本公开,但是对于本领域普通技术人员来说将清楚的是,在不脱离如所附权利要求中阐述的本公开的精神和范围的情况下,可对其进行各种改变和修改。

Claims (20)

1.一种存储装置,包括:
非易失性存储器装置;以及
存储控制器,被配置为控制非易失性存储器装置并通过控制非易失性存储器装置来更新元数据,
其中,存储控制器包括日志管理器,
其中,日志管理器被配置为:
生成与元数据的更新相关联的多个日志数据,
通过顺序地执行所述多个日志数据中的每个的重放操作来恢复元数据,
基于所述多个日志数据更新范围表,并且
基于范围表,跳过所述多个日志数据中的至少一个的重放操作。
2.如权利要求1所述的存储装置,其中,元数据利用由外部主机装置管理的多个逻辑块地址和非易失性存储器装置的多个物理块地址的映射表来实现。
3.如权利要求1所述的存储装置,其中,日志管理器包括:
日志数据生成器,被配置为生成与元数据的更新相关联的所述多个日志数据;
日志存储器,被配置为顺序地记录所述多个日志数据;以及
日志数据重放器,被配置为对所述多个日志数据执行重放操作。
4.如权利要求1所述的存储装置,其中,所述多个日志数据中的每个对应于所述存储装置的操作单元。
5.如权利要求1所述的存储装置,其中:
范围表包括关于与元数据的范围更新相关联的日志数据的最新索引的信息,并且
范围更新指示与多个逻辑块地址对应的元数据的更新。
6.如权利要求5所述的存储装置,其中,基于确定所述多个日志数据之中的第一日志数据与元数据的范围更新相关联并且第一日志数据的第一索引与范围表的最新索引不匹配,日志管理器跳过第一日志数据的重放操作,并且
其中,基于确定所述多个日志数据之中的第二日志数据与元数据的范围更新相关联并且第二日志数据的第二索引与范围表的最新索引匹配,日志管理器对第二日志数据执行重放操作。
7.如权利要求5所述的存储装置,其中,基于确定所述多个日志数据之中的第二日志数据不与元数据的范围更新相关联,日志管理器对第二日志数据执行重放操作。
8.如权利要求5所述的存储装置,其中,日志管理器还被配置为:基于确定所述多个日志数据之中的第二日志数据不与元数据的范围更新相关联并且与范围表的最新索引对应的日志数据的重放操作没有被执行,跳过第二日志数据的重放操作。
9.如权利要求1所述的存储装置,其中,范围表包括关于与元数据的第一范围更新对应的日志数据的第一最新索引的信息和关于与元数据的第二范围更新对应的日志数据的第二最新索引的信息,
其中,第一范围更新指示元数据的第一信息的更新,第一信息对应于第一逻辑块地址的第一范围组,并且
其中,第二范围更新指示元数据的第二信息的更新,第二信息对应于第二逻辑块地址的第二范围组。
10.如权利要求9所述的存储装置,其中,第一逻辑块地址和第二逻辑块地址彼此不重叠。
11.如权利要求9所述的存储装置,其中:
日志管理器还被配置为:将所述多个日志数据之中的第二日志数据分割为第一子日志数据和第二子日志数据,
第二日志数据与元数据的第一范围更新和元数据的第二范围更新相关联,
第一子日志数据与第一范围更新相关联,并且
第二子日志数据与第二范围更新相关联。
12.如权利要求11所述的存储装置,其中,日志管理器基于第一子日志数据的索引来更新关于范围表的第一最新索引的信息,并且基于第二子日志数据的索引来更新关于范围表的第二最新索引的信息。
13.如权利要求9所述的存储装置,其中,第一范围组和第二范围组由外部主机装置设置。
14.如权利要求1至权利要求13中的任意一项所述的存储装置,还包括:缓冲存储器,被配置为存储元数据。
15.如权利要求14所述的存储装置,其中,元数据被恢复,并且缓冲存储器存储所述多个日志数据和范围表。
16.一种存储装置的方法,所述方法包括:
执行第一擦除操作并基于第一擦除操作更新元数据;
基于通过第一擦除操作的元数据的更新来生成第一日志数据,并将第一日志数据记录在日志存储器;
基于第一日志数据的第一索引来更新范围表;
在第一擦除操作之后,执行第二擦除操作并基于第二擦除操作更新元数据;
基于通过第二擦除操作的元数据的更新来生成第二日志数据,并将第二日志数据记录在日志存储器;以及
基于第二日志数据的第二索引来更新范围表。
17.如权利要求16所述的方法,其中,第一擦除操作和第二擦除操作中的每个指示针对所述存储装置的净化操作、修整操作和安全擦除操作中的至少一者。
18.如权利要求17所述的方法,还包括:
当恢复元数据时,基于范围表跳过第一日志数据的重放操作,并且对第二日志数据执行重放操作。
19.一种存储装置的方法,所述方法包括:
执行多个逻辑块地址的第一擦除操作;
基于第一擦除操作生成第一日志数据;
通过基于第一日志数据的第一索引更新第零范围表来生成第一范围表;
响应于第一突然断电事件,将第一日志数据和第一范围表刷写到存储器;
在第一突然断电事件完成之后,执行所述多个逻辑块地址的第二擦除操作;
基于第二擦除操作生成第二日志数据;
通过基于第二日志数据的第二索引更新第一范围表来生成第二范围表;
响应于第二突然断电事件,将第一日志数据、第二日志数据和第二范围表刷写到存储器;
在第二突然断电事件完成之后,通过基于第二范围表跳过第一日志数据的重放操作并且对第二日志数据执行重放操作来恢复元数据。
20.如权利要求19所述的方法,其中,第一擦除操作和第二擦除操作中的每个指示针对所述多个逻辑块地址的净化操作、修整操作和安全擦除操作中的至少一者。
CN202310721783.1A 2022-08-03 2023-06-16 存储装置及其操作方法 Pending CN117519579A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR1020220096978A KR20240018974A (ko) 2022-08-03 2022-08-03 스토리지 장치 및 그것의 동작 방법
KR10-2022-0096978 2022-08-03

Publications (1)

Publication Number Publication Date
CN117519579A true CN117519579A (zh) 2024-02-06

Family

ID=89744474

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310721783.1A Pending CN117519579A (zh) 2022-08-03 2023-06-16 存储装置及其操作方法

Country Status (3)

Country Link
US (1) US20240045597A1 (zh)
KR (1) KR20240018974A (zh)
CN (1) CN117519579A (zh)

Also Published As

Publication number Publication date
KR20240018974A (ko) 2024-02-14
US20240045597A1 (en) 2024-02-08

Similar Documents

Publication Publication Date Title
US10127166B2 (en) Data storage controller with multiple pipelines
JP2021006984A (ja) 不揮発性メモリデータの書き込み管理
US10275310B2 (en) Updating exclusive-or parity data
US20180173419A1 (en) Hybrid ssd with delta encoding
US10459803B2 (en) Method for management tables recovery
EP3989052B1 (en) Method of operating storage device and method of operating storage system using the same
CN116755620A (zh) 基于独立磁盘冗余阵列的数据存储的方法和装置
US20230126685A1 (en) Storage device and electronic system
US11662949B2 (en) Storage server, a method of operating the same storage server and a data center including the same storage server
US20240045597A1 (en) Storage device and operation method thereof
EP4318249A1 (en) Storage device and operation method thereof
KR102435910B1 (ko) 스토리지 장치 및 그것의 동작 방법
EP4246330A1 (en) Storage device and operating method thereof
US20240192860A1 (en) Method and device for log structured merge-tree based key-value data storage
US20230195308A1 (en) Storage device, host system having the same, and operating method thereof
KR102482116B1 (ko) 연산 스토리지 장치의 메모리 할당 및 보호 방법 및 이를 수행하는 연산 스토리지 장치
US20230153238A1 (en) Method of operating a storage device using multi-level address translation and a storage device performing the same
US20230152985A1 (en) Memory system for backing up data in case of sudden power-off and operation method thereof
US12032492B2 (en) Method of operating storage device and method of operating storage system using the same
US20230401002A1 (en) Method of writing data in storage device using write throttling and storage device performing the same
US20240256175A1 (en) Storage device, operation method of storage device, and operation method of storage controller
US20240256130A1 (en) Method of operating storage device using host request bypass and storage device performing the same
US12056048B2 (en) System and method for management of electronic memory
US20230154529A1 (en) Storage controller and storage device including the same
US20230114199A1 (en) Storage device

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication