一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

包括存储器控制器的存储设备和存储器控制器的操作方法与流程

2022-07-02 10:44:48 来源:中国专利 TAG:

包括存储器控制器的存储设备和存储器控制器的操作方法
1.相关申请的交叉引用
2.本技术基于并要求于2020年12月30日在韩国知识产权局提交的韩国专利申请no.10-2020-0188209和于2021年3月17日在韩国知识产权局提交的韩国专利申请no.10-2021-0034867的优先权,其全部公开内容通过引用合并于此。
技术领域
3.本公开涉及一种电子设备,更具体地,涉及一种包括存储器控制器的存储设备和操作存储器控制器的方法。


背景技术:

4.诸如智能手机、平板电脑和计算机之类的电子设备可以存储各种数据以提供各种用户体验。为了操作各种数据,电子设备可以包括在主机的控制下存储数据的存储设备。存储设备可以包括存储数据的存储器设备和控制存储器设备的存储器控制器。存储器设备可以分为易失性存储器设备和非易失性存储器设备。
5.当在电子设备的操作期间发生意外断电问题、内核崩溃、应用崩溃、系统崩溃等时,可能会损坏存储设备中的一些数据。电子设备可以实现日志记录以应对这种情况。日志记录是一种通过在更改项被反映在存储设备中之前将更改项记录在存储器中来跟踪更改项的技术。


技术实现要素:

6.本公开提供了一种操作存储设备和存储器控制器的方法,以用于通过基于在未分组到事务中的写数据的写操作中触发检查点之后存储的最新日志记录更新元数据来提高写性能。
7.此外,本公开提供了一种存储设备和一种操作存储器控制器的方法,以最小化由于日志记录引起的性能降低并减少存储设备中不必要的功率浪费。
8.此外,本公开提供了一种操作存储设备和存储器控制器的方法,以便即使在诸如突然断电和内核崩溃之类的意外事件发生时也能确保元数据和日志记录之间的一致性。
9.在一个方面,根据本公开的技术思想的存储设备包括非易失性存储器设备,该非易失性存储器设备包括其中存储未被分组到事务中的写数据的写缓冲器和其中存储指示与写数据的元数据有关的更新信息的日志记录的日志缓冲器;易失性存储器设备,被配置为临时存储第一元数据;以及存储器控制器,被配置为控制易失性存储器设备触发用于释放日志缓冲器中的第一日志记录组的检查点,基于日志缓冲器中的包括除了第一日志记录组之外的日志记录的第二日志记录组将第一元数据更新为第二元数据,以及存储第二元数据,其中,第一元数据是基于第一日志记录组更新的数据,该第一日志记录组包括响应于检查点事件要从日志缓冲器释放的日志记录。
10.另一方面,根据本发明的技术思想的存储设备包括:非易失性存储设备,包括存储
未分组到事务中的写数据的第一存储器区域、存储指示与所述写数据的元数据有关的更新信息的日志记录的第二存储器区域、以及存储所述元数据的第三存储器区域;易失性存储器设备,被配置为临时存储第一元数据;以及存储器控制器,被配置为控制易失性存储器设备触发用于删除第二存储器区域中的第一日志记录组的检查点,基于第二存储器区域中的包括除了第一日志记录组之外的日志记录的第二日志记录组将第一元数据更新为第二元数据,以及存储第二元数据,其中,第一元数据是基于第一日志记录组更新的数据,该第一日志记录组包括响应于检查点事件要从第二存储器区域删除的日志记录。
11.在另一方面,根据本公开的精神的操作存储器控制器的方法包括:响应于从存储器控制器和非易失性存储设备外部提供的电力,接收非易失性存储设备中存储的第一元数据和日志缓冲器中存储的日志记录;基于日志记录产生第二元数据,第二元数据包括指示逻辑地址和物理地址之间的映射信息的映射数据以及指示与非易失性存储设备中分配的存储器区域有关的信息的分配数据;以及向非易失性存储设备提供指示非易失性存储设备存储第二元数据的命令、非易失性存储设备中包括的多个存储器块中的存储元数据的存储器块的物理地址、以及第二元数据,其中第一元数据是基于第一日志记录组更新的数据,该第一日志记录组包括在提供电力之前从日志缓冲器释放的日志记录。
附图说明
12.根据以下结合附图进行的详细描述,将更清楚地理解本发明构思的实施例,在附图中:
13.图1是示出了根据本发明的实施例的存储系统的图;
14.图2是用于说明条带和分段的图;
15.图3是用于描述日志记录区域和元数据区域的图;
16.图4是用于描述根据本发明的实施例的元数据的图;
17.图5是用于描述根据本发明的实施例的写操作、日志记录操作和映射更新操作的图;
18.图6是用于说明根据比较例的检查点的图;
19.图7是用于说明根据本发明的实施例的检查点的图;
20.图8是用于描述发生崩溃情况下的存储设备的状态的图;
21.图9是用于描述根据本发明的实施例的重建操作的图;
22.图10是用于描述基于日志记录重建映射更新、分配数据和无效计数数据的操作的图;
23.图11是示出了根据本发明的另一实施例的存储系统的图;
24.图12是用于描述根据本发明的另一实施例的元数据的图;
25.图13是用于描述根据本发明的另一实施例的写操作、日志记录操作和映射更新操作的图;
26.图14是用于描述冲刷写缓冲器中存储的写数据的操作的图;
27.图15是示出了存储器控制器的第一操作方法的流程图;以及
28.图16是示出了存储器控制器的第二操作方法的流程图。
具体实施方式
29.在下文中,将参考附图详细描述本发明的实施例。
30.图1是示出了根据本发明的实施例的存储系统的图。
31.参考图1,存储系统可以包括存储设备1000和主机2000。
32.存储设备1000可以是根据主机2000的请求存储数据的设备。存储设备1000可以包括存储器控制器100、非易失性存储设备200和易失性存储器300。
33.存储器控制器100可以控制存储设备1000的整体操作。当从外部向存储设备1000供电时,存储器控制器100可以执行非易失性存储设备200中存储的存储操作系统。
34.存储器控制器100可以被实现为处理器,并且可以基于处理器的硬件和固件结合诸如计算机程序代码之类的软件来操作。被实现为处理器的存储器控制器100可以对被提供给非易失性存储设备200的数据执行纠错编码,并产生添加了奇偶校验位的数据。奇偶校验位(未示出)可以存储在非易失性存储设备200中。纠错电路可以在编程操作中计算要用非易失性存储设备200编程的数据的纠错码值。存储器控制器100可以对从非易失性存储设备200输出的数据执行纠错解码,并且在这种情况下,使用奇偶校验来纠正错误。存储器控制器100可以基于纠错码值对在读操作中从非易失性存储设备200读取的数据执行纠错操作。存储器控制器100可以对在失败数据的恢复操作中从非易失性存储设备200恢复的数据执行纠错操作。
35.存储器控制器100可以响应于主机2000的写请求、读请求和擦除请求,控制非易失性存储设备200或易失性存储器300分别执行编程操作(或写操作)、读操作和擦除操作。
36.在编程操作期间,存储器控制器100可以向非易失性存储设备200提供编程命令、物理地址和写数据。
37.在实施例中,在编程操作期间,存储器控制器100可以向非易失性存储设备200提供编程命令和物理地址。此外,存储器控制器100可以向易失性存储器300提供冲刷命令和地址以将易失性存储器300中临时存储的数据冲刷到非易失性存储设备200。当易失性存储器300中临时存储的数据被提供给非易失性存储设备200时,易失性存储器300中临时存储的数据可以被擦除。
38.在读操作期间,存储器控制器100可以向非易失性存储设备200提供读命令和物理地址。
39.在擦除操作期间,存储器控制器100可以向非易失性存储设备200提供擦除命令和物理地址。
40.无论从主机2000提供的请求如何,存储器控制器100都可以自主地产生命令、地址和数据。例如,存储器控制器100可以产生用于执行后台操作的命令、地址和数据。存储器控制器100可以向非易失性存储设备200发送自主产生的命令、地址和数据。
41.后台操作可以包括例如数据重建、垃圾收集等。例如,垃圾收集可以是将存储器块中的有效数据复制到空闲块并擦除无效数据的操作。
42.在实施例中,存储器控制器100可以逻辑控制作为一个非易失性存储设备200操作的多个非易失性存储设备200。
43.在实施例中,存储器控制器100可以响应于未被分组到事务中的写数据而将数据缓冲器310分配给易失性存储器300。
44.例如,事务可以是为改变数据库的状态而执行的操作的单元。与数据库中的数据相关的操作可以指基于诸如“打开”、“选择”、“插入”、“删除、“更新”和“关闭”之类的结构化查询语言(sql)访问数据库的操作。包括在事务中并与数据库中的数据相关的操作可以包括数据的读操作、数据的添加操作、修改数据的操作、删除数据的操作和改变数据的操作(修改操作)。
45.当写数据被分组到事务中时,这可能意味着用于相同目的的写数据被分组到一个事务中。例如,用于数据库修改的数据可以分组到任何一个事务中。当被分组到一个事务中的写数据从主机2000发送到存储设备1000时,可能只有有效提交状态或中止状态。通常,只有当写数据处于有效提交状态时写数据被分组到一个事务中才有意义。
46.当写数据未被分组到事务中时,这可能意味着写数据单独发送和存储。
47.在实施例中,当未被分组到事务中的写数据被提供给非易失性存储设备200时,存储器控制器100可以更新写数据的元数据。存储器控制器100可以控制易失性存储器300以存储更新后的元数据。更新后的元数据可以稍后存储在非易失性存储设备200中。在引导期间,存储器控制器100可以将非易失性存储设备200中存储的元数据加载到易失性存储器300中。易失性存储器300中临时存储的该元数据可以由存储器控制器100更新。然后,更新后的元数据可以存储在非易失性存储设备200中。在实施例中,元数据可以划分为代表性元数据和相关元数据。这例如如图6和图14中所示。
48.在实施例中,存储器控制器100可以记录关于元数据的更新信息。存储器控制器100可以控制非易失性存储设备200以存储作为元数据改变点的日志记录(journal log)。
49.存储器控制器100可以包括日志记录管理器101、映射更新管理器102和操作控制器103。日志记录管理器101、映射更新管理器102和操作控制器103中的每一个可以使用硬件和固件结合诸如计算机程序代码之类的软件来操作。例如,日志记录管理器101、更新管理器102和操作控制器103可以被实现为存储器控制器100的功能模块,该存储器控制器100被实现为处理器。每个功能模块可以包括单独的处理器(例如,微处理器或子处理器),或者一些或所有功能模块可以包括并共享存储器控制器100的硬件。功能模块和存储器控制器100之间的连接和交互可以是硬连线和/或数据形式。功能模块可以各自与配置存储器控制器100的单独软件分段或多个软件分段(例如,子例程)相对应,以及/或者可以与也对应于一个或多个其他功能模块的软件分段相对应(例如,功能模块可以共享某些软件分段或由相同的软件分段体现)。
50.日志记录管理器101可以响应于针对写数据要被存储在非易失性存储设备200中的操作来产生日志记录。日志记录可以是指示关于写数据的元数据的更新信息的数据。
51.当日志记录管理器101在由非易失性存储设备200分配的存储器区域中存储了日志记录中的特定数量的日志数据时,日志记录管理器101可以触发检查点。特定数量可以由预定检查点大小确定。例如,检查点可以是用于使非易失性存储设备200中的存储日志记录的存储器区域安全(例如,使可用)并且将与日志记录相关的更新后的元数据存储在非易失性存储设备200中的操作。例如,在检查点期间,当前存储在易失性存储器300中的元数据可以存储在非易失性存储设备200中的新位置,并且可以释放与该元数据相关联的日志记录(例如,允许日志条目重新用于即将到来的日志记录)。检查点可以基于预定调度发生。例如,在特定时间段,检查可以发生以确定日志记录是否已达到预定检查点大小。如果是,则
可以出现检查点。备选地,当达到检查点大小时,非易失性存储设备200可以通知存储器控制器100,或者存储器控制器100可以以其他方式被通知,然后存储器控制器100发起检查点。
52.在检查点被触发之后,后续的写数据可以提供给存储设备1000。在这种情况下,日志记录管理器101可以响应于将后续的写数据存储在非易失性存储设备200中的操作来产生后续日志记录。
53.映射更新管理器102可以获取易失性存储器300中临时存储的元数据并基于日志记录更新元数据。例如,元数据可以存储在易失性存储器300中,并且响应于检查点,来自日志记录的日志条目可以用来更新易失性存储器中的元数据。
54.当检查点在进行时,映射更新管理器102可以额外地基于后续日志记录更新元数据。例如,检查点可以包括开始指令和结束指令,并且如果在开始指令之后但在结束指令之前添加元数据,则在开始指令之后添加的后续日志记录可以用来更新元数据。
55.映射更新管理器102可以根据在引导时有效日志记录是否被存储在非易失性存储设备200中来更新元数据。
56.操作控制器103可以产生指示执行正常操作的第一操作命令和地址,并将产生的命令和地址提供给非易失性存储设备200。这里,正常操作可以是如上所述的写操作、读操作或擦除操作,并且第一操作命令可以是编程命令、读命令或切除命令(trim command)。
57.操作控制器103可以产生指示执行后台操作的第二操作命令和地址,并将第二操作命令和地址提供给非易失性存储设备200。例如,后台操作可以是垃圾收集。
58.操作控制器103可以产生第三操作命令和地址,并将第三操作命令和地址提供给非易失性存储设备200。这里,第三操作命令可以是写命令或读命令。在实施例中,操作控制器103可以向易失性存储器300提供更新后的元数据、写命令和地址。在另一实施例中,操作控制器103可以向易失性存储器300提供读命令和地址。
59.操作控制器103可以产生指示存储日志记录的第一日志记录命令和非易失性存储设备200中的要存储日志记录的存储器区域的物理地址。操作控制器103可以向非易失性存储设备200提供从日志记录管理器101接收的日志记录、第一日志记录命令和物理地址。
60.操作控制器103可以产生指示删除日志记录的第二日志记录命令和非易失性存储设备200中的存储日志记录的存储器区域的物理地址。操作控制器103可以向非易失性存储设备200提供第二日志记录命令和物理地址。
61.非易失性存储设备200可以响应于存储器控制器100的控制而操作。具体地,非易失性存储设备200可以从存储器控制器100接收命令和地址,并访问通过地址在存储器单元(未示出)中选择的存储器单元。非易失性存储设备200可以对通过地址选择的存储器单元执行由命令指示的操作。
62.非易失性存储设备可以是例如基于闪存的存储设备。闪存可以包括例如nand闪存、竖直nand闪存、nor闪存等。基于闪存的存储设备可以包括例如固态驱动器(ssd)。
63.多个非易失性存储设备200可以以独立磁盘冗余阵列(raid)或廉价磁盘冗余阵列(raid)方法操作,raid或raid方法在逻辑上作为一个存储器设备进行操作。
64.易失性存储器300可以仅在从电源接收到电力时临时存储从主机2000提供的数据或从非易失性存储设备200提供的数据。易失性存储器300可以作为缓冲存储器包括在存储
器控制器100中或者可以布置在存储器控制器100的外部。例如,易失性存储器设备可以包括dram、sram等。
65.易失性存储器300可以响应于存储器控制器100的冲刷命令将临时存储的数据冲刷到非易失性存储设备200。
66.易失性存储器300可以包括数据缓冲器310和元数据缓冲器320。
67.数据缓冲器310可以临时存储从主机2000提供的写数据。备选地,数据缓冲器310可以临时存储从非易失性存储设备200提供的读数据。
68.元数据缓冲器320可以临时存储元数据。在实施例中,元数据缓冲器320可以在引导时临时存储从非易失性存储设备200提供的元数据。
69.主机2000可以通过接口(未示出)与存储设备1000通信。
70.在实施例中,主机2000可以向存储设备1000提供写请求、数据和用于标识数据的逻辑地址。存储设备1000可以响应于由主机2000提供的写请求将包括由主机2000提供的数据和元数据的写数据存储在非易失性存储设备200中,并向主机2000提供指示存储完成的响应。
71.图2是用于说明条带和分段的图。
72.参考图1和图2,多个非易失性存储设备200_1至200_n中的每一个可以通过单独的接口与存储器控制器100通信。
73.多个非易失性存储设备200_1至200_n中的每一个可以包括多个存储器块blk0至blkm。存储器块可以是用户块或系统块。用户块可以是存储从主机提供的数据或要被提供给主机的数据的存储器块。系统块可以是存储元数据或日志记录的存储器块。
74.多个非易失性存储设备200_1至200_n可以在逻辑上作为一个存储器设备操作。在逻辑上作为一个存储器设备操作的多个非易失性存储设备200_1至200_n可以划分为作为其中存储写数据的第一存储器区域操作的非易失性存储设备和作为其中存储元数据和日志记录的存储器区域作为的非易失性存储器设备。例如,第一存储器区域可以与第一非易失性存储设备200_1至第n-1非易失性存储设备200_n中包括的多个存储器块blk0至blkm相对应。例如,第n非易失性存储设备200_n可以作为其中存储元数据和日志记录的存储器区域进行操作。在这种情况下,第n非易失性存储设备200_n中包括的一些存储器块blk0至blkm可以与其中存储日志记录的第二存储器区域相对应,而其余的存储器块可以与其中存储元数据的第三存储器区域相对应。
75.条带strp可以是从多个非易失性存储设备200_1至200_n中选择的一组存储器块。例如,一个条带可以是其中每个非易失性存储器设备中包括的至少一个存储器块作为一个存储器块操作的逻辑组。例如,第0条带strp0可以包括第一非易失性存储设备200_1中包括的第0存储器块blk0至第n非易失性存储设备200_n中包括的第0存储器块blk0。例如,第一条带strp1可以包括第一非易失性存储设备200_1中包括的第一存储器块blk1至第n非易失性存储设备200_n中包括的第一存储器块blk1。类似地,第m条带strpm可以包括多个非易失性存储设备200_1至200_n的每一个中包括的第m存储器块blkm。一个条带中包括的存储器块是物理上不同的存储器块,但可以在逻辑上像一个存储器块一样操作。数据可以同时被写入包括在一个条带中的存储器块。
76.一个分段seg可以是一组连续的条带。在装运存储设备1000之前可以预设一个分
段seg中包括的条带的数量。例如,一个分段seg可以在逻辑上由第0条带strp0至第m条带strpm组成。
77.图3是用于描述日志记录区域和元数据区域的图。
78.在描述图3所示的实施例时,假设第n非易失性存储设备200_n作为存储元数据和日志记录的存储器区域操作。
79.参考图2和图3,第n非易失性存储设备200_n的第二存储器区域201可以是存储日志记录的存储器区域,并且可以被描述为日志记录区域。第二存储器区域201可以与第n非易失性存储设备200_n中包括的多个存储器块blk0至blkm中的一些相对应。第二存储器区域201可以包括多个日志条目je1至je8。
80.多个日志条目je1至je8可以由检查点大小cps划分,检查点大小cps是用于执行检查点操作的单位。例如,如果检查点大小cps由4个日志条目组成,则一个检查点大小cps可以由第一日志条目je1至第四日志条目je4或第五日志条目je5至第八日志条目je8组成。满足检查点大小cps的日志记录可以被定义为日志记录组。
81.第n非易失性存储设备200_n的第三存储器区域202可以是其中存储元数据(meta data)的存储器区域。第三存储器区域202可以与第n非易失性存储设备200_n中包括的多个存储器块blk0至blkm中除第二存储器区域201之外的其余的存储器块相对应。诸如“第一”、“第二”、“第三”之类的序数可以简单地用作某些元件、步骤等的标签,以将这些元件、步骤等彼此区分开。在说明书中未使用“第一”、“第二”等描述的术语在权利要求中仍可称为“第一”或“第二”。另外,用特定序数(例如,特定权利要求中的“第一”)引用的术语可以在别处以不同的序数(例如,说明书或另一权利要求中的“第二”)来描述。
82.图4是用于描述根据本发明的实施例的元数据的图。
83.参考图4,元数据可以包括映射数据“块映射(block map)”、第一分配数据“分段有效比特图(segment valid bitmap)”、第二分配数据“条带有效比特图(stripe valid bitmap)”和无效计数数据“无效计数阵列(invalid count array)”。
84.映射数据“块映射(block map)”可以是指示逻辑地址lba和物理地址pba之间的映射信息的数据。映射数据“块映射(block map)”可以被实现为逻辑-物理表。物理地址pba可以是非易失性存储设备200中包括的多个存储器块blk0至blkm中的被选择的存储器块的地址,并且也可以被描述为逻辑块地址。物理地址pba可以由条带信息lsid和偏移信息“偏移(offset)”组成,并且也可以被描述为物理块地址。条带信息lsid可以是指示条带编号的信息。例如,如果条带信息lsid的值为0,则这可以指示第0条带strp0。偏移信息“偏移(offset)”可以是指示条带中包括的存储器块中的最新存储写数据的存储器块的编号的信息。例如,如果条带信息lsid的值为0并且偏移信息“偏移(offset)”的值为0,则物理地址pba可以表示第一非易失性存储设备200_1中包括的第0存储器块blk0。
85.第一分配数据“分段有效比特图(segment valid bitmap)”可以是指示是否分配了多个分段的数据。在实施例中,第一分配数据“分段有效比特图(segment valid bitmap)”可以被实现为对于每个分段“分段id(segment id)”标记为“真(true)”或“假(false)”的比特图。在这种情况下,“真(true)”可以指示分配了相应的分段,但不限于此。
86.第二分配数据“条带有效比特图(stripe valid bitmap)”可以是指示是否分配包括在已分配分段中的多个条带的数据。在实施例中,第二分配数据“条带有效比特图
(stripe valid bitmap)”可以被实现为对于每个条带“条带id(stripe id)”标记为“真(true)”或“假(false)”的比特图。在这种情况下,“真(true)”可以指示分配了相应的分段,但不限于此。
87.无效计数数据“无效计数阵列(invalid count array)”可以是指示无效计数的数据。无效计数可以是非易失性存储设备200中存储的数据被处理为无效的次数。
88.当映射数据“块映射(block map)”改变时,因为第一分配数据“分段有效比特图(segment valid bitmap)”、第二分配数据“条带有效比特图(stripe valid bitmap)”、无效计数数据“无效计数阵列(invalid count array)”可以改变,所以映射数据“块映射(block map)”与第一分配数据“分段有效比特图(segment valid bitmap)”、第二分配数据“条带有效比特图(stripe valid bitmap)”、无效计数数据“无效计数阵列(invalid count array)”密切相关。映射数据“块映射(block map)”可以与上面参考图1描述的代表性元数据对应。相关联的元数据可以包括第一分配数据“分段有效比特图(segment valid bitmap)”、第二分配数据“条带有效比特图(stripe valid bitmap)”和无效计数数据“无效计数阵列(invalid count array)”。
89.图5是用于描述根据本发明的实施例的写操作、日志记录操作和映射更新操作的图。
90.在描述图5所示的实施例时,假设从主机2000提供的写数据data1、data2、data3、data4、data5和data6是未分组到事务中的多条写数据。此外,假设具有第0物理地址pba0至第六物理地址pba6的存储器块包括在上述第一存储器区域的第0条带strp0中。
91.参考图1和图5,存储器控制器100可以将与第0逻辑地址lba0相对应的写数据data1临时存储在数据缓冲器310中。存储器控制器100可以将第0逻辑地址lba0转换为第0物理地址pba0。当具有第0物理地址pba0的存储器块中未存储数据时,存储器控制器100可以将第0条带strp0的分配信息“有效(valid)”显示为“真(true)”,并通过产生指示0值的偏移信息“偏移(offset)”来分配存储器块。此时,如果条带的编号是每个分段中的第一个条带(例如,第0分段seg0中包括的第0条带strp0),则存储器控制器100可以将对应分段的分配信息“有效(valid)”显示为“真(true)”。存储器控制器100可以向非易失性存储设备200提供写数据data1、第0物理地址pba0和写命令。存储器控制器100可以通过向易失性存储器300提供修改后的元数据、地址和写命令来更新元数据缓冲器320中临时存储的元数据。在这种情况下,修改后的元数据可以包括通过反映第0逻辑地址lba0和第0物理地址pba0之间的映射信息而获得的映射数据“块映射(block map)”、通过反映第0分段seg0的改变后的分配信息“有效(valid)”而获得的第一分配数据“分段有效比特图(segment valid bitmap)”、以及通过反映改变后的第0条带strp0的分配信息“有效(valid)”而获得的第二分配数据“条带有效比特图(stripe valid bitmap)”。存储器控制器100可以响应于写数据data1正被存储在第一存储器区域中而产生日志记录jlog1。存储器控制器100可以向非易失性存储设备200提供日志记录jlog1、第二存储器区域201的其中要存储日志记录jlog1的物理地址,以及第一日志记录命令。日志记录jlog1可以存储在第二存储器区域201的第一日志条目je1中,并且可以指示第0逻辑地址lba0和第0物理地址pba0之间的映射信息。
92.与第0逻辑地址lba0相对应的写数据data2可以临时存储在数据缓冲器310中。第0逻辑地址lba0可以被转换为物理地址。因为在非易失性存储设备200中可能无法进行覆盖,
所以从第0逻辑地址lba0转换的物理地址可以是第一物理地址pba1。当具有第一物理地址pba1的存储器块中未存储数据时,存储器控制器100可以通过将偏移信息“偏移(offset)”的值从0改变为1来分配具有第一物理地址pba1的存储器块。非易失性存储设备200可以使具有第0物理地址pba0的存储器块中存储的写数据data1无效,并将写数据data2存储在具有第一物理地址pba1的存储器块中。存储器控制器100可以将包括第0条带stp0的第0分段seg0的无效计数从c1改变为c1 1。c1可以是自然数。存储器控制器100可以更新元数据缓冲器320中临时存储的元数据。修改后的元数据可以包括由存储器控制器100通过反映第0逻辑地址lba0和第一物理地址pba1之间的映射信息而获得的映射数据“块映射(block map)”、以及其中第0分段seg0的无效计数从c1改变为c1 1的无效计数数据“无效计数阵列(invalid count array)”。日志记录jlog2可以存储在第二日志条目je2中,并且可以指示第0逻辑地址lba0和第一物理地址pba1之间的映射信息。
93.与第一逻辑地址lba1相对应的写数据data3可以临时存储在数据缓冲器310中。第一逻辑地址lba1可以被转换为第二物理地址pba2。因为具有第二物理地址pba2的存储器块中未存储有数据,所以存储器控制器100可以分配具有第二物理地址pba2的存储器块。写数据data3可以存储在具有第二物理地址pba2的存储器块中。修改后的元数据可以包括通过反映第一逻辑地址lba1和第二物理地址pba2之间的映射信息而获得的映射数据“块映射(block map)”。日志记录jlog3可以存储在第三日志条目je3中,并且可以指示第一逻辑地址lba1和第二物理地址pba2之间的映射信息。
94.与第0逻辑地址lba0相对应的写数据data4可以临时存储在数据缓冲器310中。第0逻辑地址lba0可以被转换为第三物理地址pba3,并且具有第三物理地址pba3的存储器块可以被分配。写数据data2可以被处理为无效,并且写数据data4可以存储在具有第三物理地址pba3的存储器块中。包括第0条带strp0的第0分段seg0的无效计数可以从c1 1改变为c1 2。修改后的元数据可以包括映射数据“块映射(block map)”和无效计数数据“无效计数阵列(invalid count array)”。日志记录jlog4可以存储在第四日志条目je4中,并且可以指示第0逻辑地址lba0和第三物理地址pba3之间的映射信息。
95.当第一日志记录jlog1至第四日志记录jlog4存储在第一日志条目je1至第四日志条目je4中时,可以发生检查点事件。检查点事件可以意味着通过满足上述检查点大小cps来触发检查点(检查点触发)。第一日志记录jlog1至第四日志记录jlog4可以包括在第一日志记录组中。基于第一日志记录组更新的第一元数据可以包括第0逻辑地址lba0和第三物理地址pba3之间的映射信息、包括第一逻辑地址lba1和第二物理地址pba2之间的映射信息的映射数据“块映射(block map)”、其中第0分段seg0的分配信息“有效(valid)”被标记为“真(true)”的第一分配数据“分段有效比特图(segment valid bitmap)”、其中第0条带strp0的分配信息“有效(valid)”被标记为“真(true)”的第二分配数据“条带有效比特图(stripe valid bitmap)”、以及其中第0分段seg0的无效计数被改变的无效计数数据“无效计数阵列(invalid count array)”。
96.在检查点被触发后(例如,在检查点任务正被执行时),与第0逻辑地址lba0相对应的写数据data5被临时存储在数据缓冲器310中,第0逻辑地址lba0被转换为第四物理地址pba4,并且具有第四物理地址pba4的存储器块可以被分配。写数据data4被处理为无效,并且包括第0条带stp0的第0分段seg0的无效计数可以从c1 2改变为c1 3。写数据data5可以
存储在具有第四物理地址pba4的存储器块中。修改后的元数据可以包括映射数据“块映射(block map)”和无效计数数据“无效计数阵列(invalid count array)”。日志记录jlog5可以存储在第五日志条目je5中,并且可以指示第0逻辑地址lba0和第四物理地址pba4之间的映射信息。
97.第一逻辑地址lba1可以被转换为第五物理地址pba5,并且具有第五物理地址pba5的存储器块可以被分配。写数据data3被处理为无效,并且包括第0条带stp0的第0分段seg0的无效计数可以从c1 3改变为c1 4。当写数据data6存储在具有第五物理地址pba5的存储器块中时,可以更新元数据。日志记录jlog6可以存储在第六日志条目je6中,并且可以指示第一逻辑地址lba1和第五物理地址pba5之间的映射信息。
98.第二日志记录组可以包括第二存储器区域201中存储的日志记录jlog1至jlog6中除第一日志记录组之外的日志记录。例如,第五日志记录jlog5和第六日志记录jlog6可以包括在第二日志记录组中。基于第二日志记录组更新的第二元数据可以包括第0逻辑地址lba0和第四物理地址pba4之间的映射信息、包括第一逻辑地址lba1和第五物理地址pba5之间的映射信息的映射数据“块映射(block map)”、其中第0分段seg0的分配信息“有效(valid)”被标记为“真(true)”的第一分配数据“分段有效比特图(segment valid bitmap)”、其中第0条带strp0的分配信息“有效(valid)”被标记为“真(true)”的第二分配数据“条带有效比特图(stripe valid bitmap)”、以及其中第0分段seg0的无效计数是c4的无效计数数据“无效计数阵列(invalid count array)”。c4是大于c1的自然数,并且可以是例如c1 3。
99.存储器控制器100可以控制非易失性存储设备200将与每条写数据相对应的奇偶校验(未示出)与每条写数据一起存储。
100.根据以上内容,通过日志记录与代表性元数据相对应的映射数据的更新信息,可以最小化由于日志记录引起的性能降低,并且可以减少存储设备中不必要的功率浪费。
101.图6是用于说明根据比较例的检查点的图。
102.参考图6,根据比较例的写数据是被分组到事务中的写数据。当第一日志记录组中包括的第一日志记录jlog1至第四日志记录jlog4被存储在第一日志条目je1至第四日志条目je4中时,检查点被触发(检查点触发)。当检查点被触发时,仅基于第一日志记录组更新根据比较例的元数据以保证数据的一致性。例如,第一元数据中包括的映射数据“块映射(block map)”包括第0逻辑地址lba0与第三物理地址pba3之间的映射信息、以及第一逻辑地址lba1与第二物理地址pba2之间的映射信息。在检查点被触发后,第五日志记录jlog5和第六日志记录jlog6存储在第二存储器区域201'中。
103.当检查点被触发时,元数据缓冲器320'中存储的元数据被冲刷到根据比较例的非易失性存储器设备。此外,第二存储器区域201'中存储的第一日志记录jlog1至第四日志记录jlog4被删除(释放)。
104.图7是用于说明根据本发明的实施例的检查点的图。
105.参考图7,第二存储器区域201的存储空间可以与多个日志条目je1至je8相对应。当第一日志记录组中包括的第一日志记录jlog1至第四日志记录jlog4被存储在第一日志条目je1至第四日志条目je4中时,检查点被触发(检查点触发)。当在检查点被触发之后将第五日志记录jlog5和第六日志记录jlog6存储在第二存储器区域201中时,存储器控制器
100可以基于第五日志记录jlog5和第六日志记录jlog6更新元数据。作为结果,临时存储在(例如,易失性存储器300的)元数据缓冲器320中的元数据可以是上述第二元数据。
106.在实施例中,当检查点被触发时,存储器控制器100可以向易失性存储器300提供冲刷命令。冲刷命令可以是对易失性存储器300的命令,其指示易失性存储器300将第二元数据冲刷(例如,写入)到非易失性存储设备200。更新后的映射数据“块映射(block map)”、更新后的第一分配数据“分段有效比特图(segment valid bitmap)”、更新后的第二分配数据“条带有效比特图(stripe valid bitmap)”和更新后的无效计数数据“无效计数阵列(invalid count array)”可以提供给非易失性存储设备200。在第三存储器区域202中,元数据可以被处理为无效,并且可以存储更新后的元数据。
107.在一个实施例中,在更新后的元数据存储在第三存储器区域202中之后,存储器控制器100可以向非易失性存储设备200提供指示非易失性存储设备200释放日志记录的第二日志记录命令。非易失性存储设备200可以响应于第二日志记录命令删除日志记录jlog1至jlog4。
108.图8是用于描述发生崩溃情况下的存储设备的状态的图。
109.参考图8,当多条写数据data1至data6存储在第一存储器区域中时,可以更新元数据(meta data)。日志记录jlog1至jlog6可以顺序存储在日志条目je1至je6中。可以删除满足检查点大小cps的日志记录jlog1至jlog4。
110.在写操作或检查点操作期间可以发生崩溃。崩溃可以意味着例如如下事件:从外部供应给存储设备1000的电力被意外切断的突然断电、当操作系统检测到致命的内部错误并且无法安全重建时发生的内核崩溃等。当发生崩溃时,易失性存储器300中临时存储的数据可能被删除或损坏,但非易失性存储设备200中存储的数据data1至data6可以不被擦除。
111.当发生崩溃时,更新后的元数据可能不会存储在非易失性存储设备200中。在这种情况下,由非易失性存储设备200执行的操作的性能会降低。
112.为了解决这个问题,可以执行在崩溃发生之后重建更新后的元数据的重建操作。
113.图9是用于描述根据本发明的实施例的重建操作的图。
114.参考图9,当在发生崩溃之后从外部供电时,存储器控制器100可以控制非易失性存储设备200读取第二存储器区域201中存储的日志记录jlog5和jlog6以及第三存储器区域202中存储的旧元数据。旧元数据可以是在向存储设备1000供电之前存储在非易失性存储设备200中的元数据。在实施例中,旧元数据包括与先前释放的日志记录jlog1至jlog4相关的数据。在实施例中,第二存储器区域201中存储的日志记录jlog5和jlog6可以以日志条目的条目编号从低到高的顺序依次读取。
115.日志记录jlog5和jlog6可以被顺序加载到元数据缓冲器320中。旧元数据也可以被加载到元数据缓冲器320中。存储器控制器100可以通过基于日志记录jlog5和jlog6更新旧元数据来重建元数据。重建后的元数据可以包括重建后的映射数据“块映射(block map)”、重建后的第一分配数据“分段有效比特图(segment valid bitmap)”、重建后的第二分配数据“条带有效比特图(stripe valid bitmap)”和重建后的无效计数数据“无效计数阵列(invalid count array)”。
116.存储器控制器100可以控制易失性存储器300将重建后的元数据冲刷到非易失性存储设备200。在第三存储器区域202中,旧元数据被处理为无效,并存储重建后的元数据。
117.在下文中,将详细描述基于日志记录重建元数据的操作。
118.图10是用于描述基于日志记录重建映射更新、分配数据和无效计数数据的操作的图。
119.在描述图10所示的实施例时,假设根据在供电之前执行的检查点第一日志条目je1至第四日志条目je4是空的。此外,假设逻辑物理表的第0逻辑地址lba0在重建操作之前被映射到第三物理地址pba3,并且第一逻辑地址lba1在重建操作之前被映射到第二物理地址pba2。
120.第五日志条目je5中存储的日志记录jlog5可以指示第0逻辑地址lba0和第四物理地址pba4之间的映射信息。存储器控制器100可以产生通过使用日志记录jlog5反映第0逻辑地址lba0和第四物理地址pba4之间的第一映射信息而获得的映射数据“块映射(block map)”。在逻辑物理表中,映射到第0逻辑地址lba0的第三物理地址pba3可以被改变为第四物理地址pba4。
121.第六日志条目je6中存储的日志记录jlog6可以指示第一逻辑地址lba1和第五物理地址pba5之间的映射信息。存储器控制器100可以产生映射数据“块映射(block map)”,其中使用日志记录jlog6附加地反映第一逻辑地址lba1和第五物理地址pba5之间的映射信息。
122.根据图10所示的实施例的重建操作在假设第一日志条目je1至第四日志条目je4被在供电之前执行的检查点清空的情况下执行。然而,本发明不限于此,即使日志记录jlog1至jlog4被存储在第一日志条目je1至第四日志条目je4中,也可以重建元数据。在这种情况下,因为针对相同逻辑地址的映射操作被执行多于一次,所以存储器控制器100首先可以基于存储的第一日志记录产生第一映射数据,并基于在第一日志记录之后存储的第二日志记录将第一映射数据改变为第二映射数据。此外,存储器控制器100可以响应于产生第二映射数据通过增加存储器块的无效计数来更新无效计数数据。
123.如上所述,即使发生意外事件,也可以保证元数据与日志记录的一致性,并可以改善存储设备的可靠性。
124.此外,如上所述,在崩溃发生之后,通过不仅重建映射数据而且仅利用用于映射数据的日志记录重建与数据相关的元数据,可以减少不必要的功率浪费。
125.图11是示出了根据本发明的另一实施例的存储系统的图。
126.参考图11,根据本发明的另一实施例的存储系统可以包括存储设备1000’和主机2000。
127.存储设备1000'可以包括存储器控制器100、非易失性存储器设备200a、非易失性存储设备200b和易失性存储器300。
128.存储器控制器100和易失性存储器300可以执行以上参考图1描述的所有操作。
129.在另一实施例中,存储器控制器100可以响应于写数据正被存储在非易失性存储器设备200a中而产生日志记录,控制非易失性存储器设备200a存储日志记录,以及基于日志记录更新临时存储在元数据缓冲器320中的元数据。
130.在另一实施例中,当非易失性存储器设备200a中存储的日志记录的大小满足检查点大小cps时,可以发生检查点事件。直到检查点事件发生时更新的元数据可以是上述的第一元数据。同时,在检查点被触发之后,存储器控制器100可以响应于后续写数据正被存储
在非易失性存储器设备200a中而产生后续日志记录。存储器控制器100可以控制易失性存储器300基于后续日志记录将第一元数据更新为第二元数据并存储第二元数据。
131.非易失性存储器设备200a可以包括写缓冲器201a和日志缓冲器202a。例如,非易失性存储器设备200a可以被实现为非易失性随机存取存储器(nvram)。
132.写缓冲器201a可以以与图1所示的非易失性存储设备200的第一存储器区域相同的方式存储未被分组到事务中的写数据。然而,写缓冲器201a可以是物理存储器区域,而非易失性存储设备200的第一存储器区域可以是逻辑上实现的区域。写缓冲器201a可以包括多个条带。
133.在另一实施例中,操作控制器103可以控制非易失性存储器设备200a将未被分组到事务中的写数据存储在写缓冲器201a中。
134.日志缓冲器202a可以以与图1所示的非易失性存储设备200的第二存储器区域201相同的方式存储日志记录。然而,日志缓冲器202a可以是物理存储器区域,而非易失性存储设备200的第二存储器区域201可以是逻辑上实现的区域。日志缓冲器202a可以包括多个日志条目。
135.在另一实施例中,操作控制器103可以控制非易失性存储器设备200a将日志记录存储在日志缓冲器202a中。
136.非易失性存储设备200b可以以与图1所示的非易失性存储设备200相同的方式存储写数据和元数据。
137.在另一实施例中,非易失性存储设备200b可以在逻辑上作为一个存储设备操作,并且可以包括第一存储器块组和第二存储器块组。第一存储器块组可以是其中存储写数据的一组存储器块。第二存储器块组可以是其中存储元数据的一组存储器块。非易失性存储设备200b可以包括多个分段,并且每个分段可以包括多个条带。
138.在另一实施例中,操作控制器103可以控制非易失性存储器设备200a和非易失性存储设备200b将写缓冲器201a中存储的写数据冲刷到非易失性存储设备200b。
139.在另一实施例中,操作控制器103可以响应于检查点大小cps的日志记录正被存储在日志缓冲器202a中,控制易失性存储器300将元数据缓冲器320中临时存储的元数据冲刷到非易失性存储设备200b。
140.图12是用于描述根据本发明的另一实施例的元数据的图。
141.参考图12,根据本发明的另一实施例的元数据可以包括第一映射数据“块映射(block map)”、第二映射数据“nvm条带映射(nvm stripe map)”、第一分配数据“分段有效比特图(segment valid bitmap)”、第二分配数据“条带有效比特图(stripe valid bitmap)”、第三分配数据“wb条带有效比特图(wb stripe valid bitmap)”和无效计数数据“无效计数阵列(invalid count array)”。
142.第一映射数据“块映射(block map)”可以是指示逻辑地址lba和第一地址vsa之间的映射信息的数据。第一地址vsa可以是写缓冲器201a的地址。在实施例中,第一地址vsa是虚拟地址并且可以包括第一条带信息vsid和偏移信息“偏移(offset)”。第一条带信息vsid可以是指示写缓冲器201a中包括的多个条带中的所选择的条带的编号的信息。偏移信息“偏移(offset)”可以是指示最新存储写数据的存储器块的编号的信息。
143.第二映射数据“nvm条带映射(nvm stripe map)”可以是指示第一地址vsa和第二
地址pba之间的映射信息的数据。第二地址pba可以是非易失性存储设备200b中包括的多个存储器块中的所选择的存储器块的物理地址。第二地址pba可以包括第二条带信息lsid和偏移信息“偏移(offset)”。第二条带信息lsid与上面参考图2和图4所述的相同。第一地址vsa的偏移信息“偏移(offset)”和第二地址pba的偏移信息“偏移(offset)”的值可以相同。
144.第一分配数据“分段有效比特图(segment valid bitmap)”可以是指示是否分配非易失性存储设备200b中包括的多个分段的数据。第一分配数据“分段有效比特图(segment valid bitmap)”与上面参考图2和图4所述的相同。
145.第二分配数据“条带有效比特图(stripe valid bitmap)”可以是指示是否分配非易失性存储设备200b中包括的多个条带的数据。
146.在实施例中,当非易失性存储设备200b包括第一存储器块组时,第一分配数据“分段有效比特图(segment valid bitmap)”和第二分配数据“条带有效比特图(stripe valid bitmap)”可以表示与第一存储器块组中分配的存储空间有关的信息。
147.第三分配数据“wb条带有效比特图(wb stripe valid bitmap)”可以是指示与写缓冲器201a中分配的存储空间有关的信息的数据。在实施例中,第三分配数据“wb条带有效比特图(wb stripe valid bitmap)”可以是指示是否分配写缓冲器201a中包括的多个条带的数据。
148.无效计数数据“无效计数阵列(invalid count array)”可以是指示在非易失性存储设备200b中存储的数据被处理为无效的次数的数据。在实施例中,无效计数数据“无效计数阵列(invalid count array)”可以是指示在非易失性存储设备200b中包括的第一存储器块组中存储器块被处理为无效的次数的数据。
149.图13是用于描述根据本发明的另一实施例的写操作、日志记录操作和映射更新操作的图。
150.在描述图13所示的实施例时,假设写缓冲器201a包括具有第0地址vsa0至第四地址vsa4的存储器块,并且日志缓冲器202a包括八个日志条目je1至je8。假设具有写缓冲器201a的第0条带wbstrp0并且具有第0地址vsa0至第n地址vsan的存储器块被包括在第0条带wbstrp0中。
151.参考图13,未被分组到事务中的多条写数据data1至data6可以被顺序发送到存储设备1000。存储器控制器100可以将第0逻辑地址lba0转换为第0地址vsa0。第0地址vsa0可以是写缓冲器201a的第0条带wbstrp0中包括的第一存储器块的地址。存储器控制器100将第0条带wbstrp0的分配信息“有效(valid)”显示为“真(true)”,并产生指示值为0的偏移信息“偏移(offset)”以分配具有第0地址vsa0的存储器块。写数据data1可以存储在具有第0地址vsa0的存储器块中,第0逻辑地址lba0和第0地址vsa0之间的映射信息可以被反映在映射数据“块映射(block map)”中,并且改变后的第0条带wbstrp0的分配信息“有效(valid)”可以被反映在第三分配数据“wb条带有效比特图(wb stripe valid bitmap)”中。存储器控制器100可以响应于写数据data1正被存储在写缓冲器201a中而向非易失性存储器设备200a提供日志记录命令、与日志缓冲器202a相对应的地址、以及日志记录jlog1。日志记录jlog1可以存储在日志缓冲器202a的第一日志条目je1中,并且可以指示第0逻辑地址lba0和第0地址vsa0之间的映射信息。
152.第0逻辑地址lba0可以被映射到第一地址vsa1,并且与第0逻辑地址lba0相对应的
写数据data2可以存储在具有第一地址vsa1的存储器块中。偏移信息“偏移(offset)”的值可以从0改变为1。写数据data1可以被处理为无效。第0逻辑地址lba0和第一地址vsa1之间的映射信息可以被反映在映射数据“块映射(block map)”中,并且可以在无效计数数据“无效计数阵列(invalid count array)”中改变第0条带wbstrp0的无效计数。由存储器控制器100产生的日志记录jlog2可以存储在第二日志条目je2中,并且可以指示第0逻辑地址lba0和第一地址vsa1之间的映射信息。
153.第一逻辑地址lba1可以被映射到第二地址vsa2,并且与第一逻辑地址lba1相对应的写数据data3可以存储在具有第二地址vsa2的存储器块中。偏移信息“偏移(offset)”的值可以从1改变为2。第一逻辑地址lba1和第二地址vsa2之间的映射信息可以被反映在映射数据“块映射(block map)”中。日志记录jlog3可以存储在第三日志条目je3中,并且可以指示第一逻辑地址lba1和第二地址vsa2之间的映射信息。
154.第0逻辑地址lba0可以被映射到第三地址vsa3,并且与第0逻辑地址lba0相对应的写数据data4可以存储在具有第三地址vsa3的存储器块中。偏移信息“偏移(offset)”可以从2改变为3。写数据data2可以被处理为无效。第0逻辑地址lba0和第三地址vsa3之间的映射信息可以被反映在映射数据“块映射(block map)”中,并且可以在无效计数数据“无效计数阵列(invalid count array)”中改变第0条带wbstrp0的无效计数。第四日志条目je4中存储的日志记录jlog4可以指示第0逻辑地址lba0和第三地址vsa3之间的映射信息。
155.当检查点大小cps的日志记录jlog1至jlog4被存储在日志缓冲器202a中时,可以发生检查点事件。检查点事件可以包括例如来自元数据缓冲器320的元数据要被写入到非易失性存储器设备200a。在检查点事件发生之后,第0逻辑地址lba0可以被映射到第四地址vsa4,并且与第0逻辑地址lba0相对应的写数据data5可以存储在具有第四地址vsa4的存储器块中。偏移信息“偏移(offset)”可以从3改变为4。写数据data4可以被处理为无效。第0逻辑地址lba0和第四地址vsa4之间的映射信息可以被反映在映射数据“块映射(block map)”中。在无效计数数据“无效计数阵列(invalid count array)”中,可以改变第0条带wbstrp0的无效计数。第五日志条目je5中存储的日志记录jlog5可以指示第0逻辑地址lba0和第四地址vsa4之间的映射信息。
156.第一逻辑地址lba1可以被映射到第五地址vsa5,并且与第一逻辑地址lba1相对应的写数据data6可以存储在具有第五地址vsa5的存储器块中。偏移信息“偏移(offset)”可以从4改变为5。写数据data3可以被处理为无效。第一逻辑地址lba1和第五地址vsa5之间的映射信息可以被反映在映射数据“块映射(block map)”中。在无效计数数据“无效计数阵列(invalid count array)”中,可以改变第0条带wbstrp0的无效计数。第六日志条目je6中存储的日志记录jlog6可以指示第一逻辑地址lba1和第五地址vsa5之间的映射信息。对于这些改变,元数据缓冲器320中存储的元数据被更新。
157.当检查点被触发时,存储器控制器100可以向易失性存储器300提供命令将更新后的元数据冲刷到非易失性存储设备200b的冲刷命令。
158.在元数据被存储在非易失性存储设备200b中之后,存储器控制器100可以控制非易失性存储器设备200a释放日志缓冲器202a中存储的日志记录jlog1至jlog4。
159.根据以上内容,通过日志记录与代表性元数据相对应的映射数据的更新信息,可以最小化由于日志记录引起的性能降低,并且可以减少存储设备中不必要的功率浪费。
160.图14是用于描述冲刷写缓冲器中存储的写数据的操作的图。
161.在描述图14所示的实施例时,在非易失性存储设备200b中,八个非易失性存储设备200b_1至200b_8在逻辑上作为一个非易失性存储器设备操作,并且假设八个非易失性存储设备200b_1至200b_8中的每一个被实现为存储器芯片(例如,具有形成在其上的集成电路的半导体管芯)。
162.参考图14,当与写缓冲器201a的大小相对应的写数据data被存储在写缓冲器201a中时,存储器控制器100可以控制非易失性存储器设备200a将写缓冲器201a中存储的写数据data存储在第一存储器块组中。这里,例如,第一存储器块组可以包括在七个非易失性存储设备200b_1至200b_7中的每一个中,并且可以包括第0条带strp0中包括的存储器块blko。
163.在实施例中,当写缓冲器201a中存储的写数据data被存储在第一存储器块组中时,存储器控制器100可以记录与第一存储器块的逻辑地址lba和第二地址pba之间的映射信息有关的更新信息。指示第一存储器块组的逻辑地址lba和物理地址pba之间的映射信息的映射数据可以是第一映射数据“块映射(block map)”和第二映射数据“nvm条带映射(nvm stripe map)”。例如,在日志记录与逻辑地址lba与第一地址vsa之间的映射信息有关的更新信息后,可以日志记录与第一存储器块组的第一地址vsa与第二地址pba之间的映射信息有关的更新信息。
164.在本实施例中,当写缓冲器201a中存储的写数据data存储在第一存储器块组中时,可以日志记录与逻辑地址lba和第一地址vsa之间的映射信息有关的更新信息。
165.存储器控制器100可以控制非易失性存储器设备200a为写缓冲器201a中存储的写数据data产生奇偶校验,并将奇偶校验存储在第二存储器块组中。这里,例如,第二存储器块组可以包括在第八非易失性存储设备200b_8中,并且可以包括第0条带stp0中包括的存储器块blko。
166.参考图13和图14,当写缓冲器201a中存储的写数据data存储在第一存储器块组中时,第二映射数据“nvm条带映射(nvm stripe map)”、第一分配数据“分段有效比特图(segment valid bitmap)”和第二分配数据“条带有效比特图(stripe valid bitmap)”可以被更新。另外,当检查点被触发时,第一映射数据“块映射(block map)”、第二映射数据“nvm条带映射(nvm stripe map)”、第一分配数据“分段有效比特图(segment valid bitmap)”、第二分配数据“条带有效比特图(stripe valid bitmap)”、第三分配数据“wb条带有效比特图(wb stripe valid bitmap)”、无效计数数据“无效计数阵列(invalid count array)”可以存储在非易失性存储设备200b的第二存储器块组中。
167.根据图14所示的另一实施例,首先,写数据可以存储在写缓冲器201a中而无奇偶校验,并且可以稍后立即产生针对与写缓冲器201a的存储大小一样多的写数据的奇偶校验。因此,根据另一实施例的写操作的性能可以高于根据实施例的写操作的性能。
168.由于图11所示的存储设备1000'进一步包括作为不同于图1所示的存储设备1000的物理配置的非易失性存储器设备200a,因此图1所示的存储设备1000的集成度可以高于图11所示的存储设备1000'的集成度。
169.图15是示出了存储器控制器的第一操作方法的流程图。
170.参考图15,存储器控制器100从主机2000接收写请求、逻辑地址和写数据(s110)。
这里,写数据可以是未被分组到事务中的写数据。对此的描述如上文参考图5或图13所述。
171.存储器控制器100向非易失性存储设备200提供写命令、物理地址和写数据(s120)。对此的描述如上文参考图5或图13所述。
172.存储器控制器100可以响应于写数据正被存储在非易失性存储设备200中而将映射数据记录到日志缓冲器(s130)。这里,日志缓冲器可以是如上参考图3所述的在逻辑上操作的第二存储器区域201或如上参考图11所述的物理日志缓冲器202a。日志记录映射数据可以意味着日志记录存储在日志缓冲器中。例如,日志记录可以是指示与逻辑地址和物理地址之间的映射信息有关的更新信息的数据。
173.存储器控制器100监测具有检查点单元大小的日志记录是否存储在日志缓冲器中(s140)。这里,检查点单元的大小可以是上面参考图3描述的检查点大小cps。
174.如果日志缓冲器中日志记录占用的存储空间已达到检查点大小(s140“是”),则存储器控制器100触发检查点(s150)。当检查点被触发时,意味着检查点开始,并且对此的描述如上面参考图5给出的描述。
175.当具有检查点单元大小的日志记录未存储在日志缓冲器中时(s140“否”)或在操作s140之后,存储器控制器100更新易失性存储器300中临时存储的元数据(s160)。对此的描述如上面参考图5或图13给出的描述。尽管图中未示出,但是在操作s150之后,可以删除具有检查点单元大小的日志记录。例如,在一些实施例中,在操作s150(例如,检查点被触发)之后并且在检查点完成之后,可以删除具有检查点单元大小的日志记录。
176.存储器控制器100向主机2000提供对写请求的响应(s170)。
177.图16是示出了存储器控制器的第二操作方法的流程图。
178.参考图16,存储器控制器100响应于从外部供应的电力而执行引导操作(s210)。
179.存储器控制器100将非易失性存储设备200中存储的元数据加载到易失性存储器300中(s220)。对此的描述如上文参考图10所述。这里,非易失性存储设备200中存储的元数据可以是在供电之前基于第一日志记录组更新的数据。第一日志记录组可以包括例如根据在供电之前的检查点释放的第一日志记录jlog1至第四日志记录jlog4。
180.存储器控制器100将日志缓冲器中存储的日志记录加载到易失性存储器300中(s230)。对此的描述如上文参考图9所述。
181.存储器控制器100检查有效日志记录是否存储在日志缓冲器中(s240)。对此的描述如上文参考图9所述。
182.如果有效日志记录存储在日志缓冲器中(s240“是”),则存储器控制器100基于日志记录更新加载在易失性存储器300中的元数据(s250)。例如,当非易失性存储设备200中包括的多个存储器块以条带为单位被分组时,存储写数据的存储器块的物理地址包括条带信息和偏移信息,并且偏移信息是指示第一存储器块的编号的信息,存储器控制器100可以产生指示条带被分配的第二分配数据“条带有效比特图(stripe valid bitmap)”。又例如,当多个条带以预设分段为单位被分组时,条带信息是指示每个分段中包括的第一个条带的编号的信息,存储器控制器100可以产生指示包括对应于条带信息的条带的分段被分配的第一分配数据“分段有效比特图(segment valid bitmap)”。
183.在实施例中,第一日志记录和晚于第一日志记录存储的第二日志记录可以存储在日志缓冲器中。当第一日志记录指示第一逻辑地址与第一物理地址之间的第一映射信息并
且第二日志记录指示第一逻辑地址与第二物理地址之间的第二映射信息时,存储器控制器100基于第一日志记录产生指示第一映射信息的第一映射数据,并且在产生第一映射数据之后,基于第二日志记录将第一映射数据改变为指示第二映射信息的第二映射数据。此外,响应于第二映射数据的产生,存储器控制器100可以产生其中具有第一物理地址的存储器块的无效计数增加了的无效计数数据。对此的描述如上文参考图12所述。
184.存储器控制器100将更新后的元数据存储在非易失性存储设备200中(s260)。例如,存储器控制器100可以向非易失性存储设备200提供包括用于存储更新后的元数据的指令的写命令、要存储更新后的元数据的存储器块的物理地址、以及更新后的元数据。对此的描述如上文参考图11所述。
185.当有效日志记录未存储在日志缓冲器中时(s240“否”)或在操作s260之后,向主机2000提供引导完成响应(s270)。
186.如上所述,即使发生诸如突然断电、内核崩溃之类的意外事件,也可以确保元数据与日志记录之间的一致性并改善存储设备的可靠性。
187.尽管已经参考本发明构思的实施例具体示出并描述了本发明构思,但是将会理解,在不脱离所附权利要求书的精神和范围的情况下,可以在其中进行形式和细节上的各种变化。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献