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

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

2022-07-02 08:16:33 来源:中国专利 TAG:

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


背景技术:

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


技术实现要素:

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

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

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

相关文献