检查非易失性
存储器装置的错误的设备和方法
1.相关申请的交叉引用
2.本专利申请要求于2020年10月14日提交的申请号为10-2020-0132607的韩国专利申请的权益,该韩国专利申请的全部公开内容通过引用并入本文。
技术领域
3.本文中描述的一个或多个实施例涉及一种检查在非易失性存储器装置中发生的错误的存储器系统、设备和方法。
背景技术:
4.近来,用于计算环境的范例已转变为使得计算机系统几乎随时随地能够被访问普适计算。因此,便携式电子装置(例如,移动电话、数码相机和笔记本电脑)的使用正在迅速增加。这些便携式电子装置可以使用或包括具有至少一个存储器装置的存储器系统,例如,
数据存储装置。数据存储装置可以用作便携式电子装置的主存储装置或辅助存储装置。
5.与硬盘不同,使用非易失性半导体存储器的数据存储装置表现出提高的稳定性和持久性,不具有机械驱动部件(例如,机械臂)并且以高数据访问速度和相对低的功耗
操作。这些类型的数据存储装置的示例包括但不限于通用串行总线(usb)存储器装置、具有各种接口的存储卡以及固态驱动器(ssd)。
技术实现要素:
6.本公开的实施例可以提供一种数据处理系统以及用于操作数据处理系统的方法,该数据处理系统包括诸如存储器系统和主机的组件和资源并且能够基于组件和资源的用途来动态地分配用于组件之间的数据通信的多条数据路径。
7.另外,如果即使在包括非易失性存储器单元的存储器装置内执行的操作没有成功地完成或者在操作期间发生错误,存储器装置也通知控制器操作成功,则根据本公开的实施例的存储器系统可以检测在存储器装置内发生的错误、异常操作或操作失败。
8.在根据本公开的实施例的存储器系统中,控制器可以被配置为将用于数据输入/输出操作的命令传输到包括非易失性存储器单元的存储器装置,并且从存储器装置接收数据输入/输出操作的结果。此外,控制器可以包括能够提高数据输入/输出操作的可靠性的装置。该装置可以接收关于在该装置中与数据输入/输出操作有关的存储块或页面的信息,并且将数据输入/输出操作的结果与该信息进行比较以执行关于数据输入/输出操作的再次检查(double check)。
9.另外,即使由于包括非易失性存储器单元的存储器装置的故障而导致在所传输的由存储器装置执行的数据输入/输出操作的结果中发生错误,根据本公开的实施例的存储器系统也可以基于单独的信息来再次确认数据输入/输出操作的结果。
10.在本公开的实施例中,存储器系统可以包括:存储器装置,包括多个存储器组,每个存储器组包括多个非易失性存储器单元;以及控制器,被配置为向存储器装置传输命令
从而存储器装置在多个存储器组之中的至少一个存储器组内执行数据输入/输出操作,从存储器装置接收对该命令的响应以及关于至少一个存储器组的状态数据,并且基于响应和状态数据来确定数据输入/输出操作是成功还是失败。
11.控制器可以通过将状态数据和与数据输入/输出操作相关联的物理到逻辑(p2l)映射数据项进行比较,确定数据输入/输出操作已经成功还是已经失败。控制器可以进一步被配置为根据数据输入/输出操作是否已经成功、基于p2l映射数据项来更新逻辑到物理(l2p)映射数据项。
12.当基于状态数据的成功或失败的第一确定的结果与基于响应的成功或失败的第二确定的结果不同时,控制器可以通过向第一确定分配比第二确定更高的优先级来确定数据输入/输出操作已经成功还是已经失败。
13.例如,多个存储器组之中的每个存储器组可以是页面。状态数据可以包括位图信息,该位图信息指示该页面是空白的或空的。
14.再例如,多个存储器组之中的每个存储器组可以是存储块,并且状态数据包括页面计数,该页面计数指示数据项存储在存储块的多少页面中。
15.存储器装置可以被配置为在与命令相对应的数据输入/输出操作完成之后立即将响应传输到控制器。当通过数据输入/输出操作更新了元数据时,存储器装置可以被配置为将状态数据传输到控制器。
16.数据输入/输出操作可以包括针对多个存储器组的数据编程、数据擦除或数据读取。存储器装置可以进一步被配置为更新与数据编程、数据擦除或数据读取相关联的状态数据。
17.在本公开的另一实施例中,操作存储器系统的方法可以包括:在包括多个存储器组的存储器装置中的至少一个存储器组内执行数据输入/输出操作,每个存储器组包括多个非易失性存储器单元;从存储器装置接收响应,该响应包括数据输入/输出操作的结果;从存储器装置接收关于至少一个存储器组的状态数据;以及基于响应和状态数据来确定数据输入/输出操作已经成功还是已经失败。
18.确定数据输入/输出操作是成功还是失败可以包括将状态数据和与数据输入/输出操作相关联的物理到逻辑(p2l)映射数据项进行比较。该方法可以进一步包括根据数据输入/输出操作是否已经成功、基于p2l映射数据项来更新逻辑到物理(l2p)映射数据项。
19.确定数据输入/输出操作是成功还是失败可以包括当基于状态数据的成功或失败的第一确定与基于响应的成功或失败的第二确定具有不同的结果时,向第一确定分配比第二确定更高的优先级。
20.例如,多个存储器组之中的每个存储器组可以是页面。状态数据可以包括位图信息,该位图信息指示该页面是空白的或空的。
21.再例如,多个存储器组之中的每个存储器组可以是存储块。状态数据可以包括有效页面计数,该有效页面计数指示数据项存储在存储块的多少页面中。
22.该方法可以进一步包括:在与命令相对应的数据输入/输出操作完成之后存储器装置立即传输响应,并且当通过数据输入/输出操作更新了元数据时,存储器装置传输状态数据。
23.数据输入/输出操作可以包括针对多个存储器组的数据编程、数据擦除或数据读
取。该方法可以进一步包括更新与数据编程、数据擦除或数据读取相关联的状态数据。
24.在本公开的另一实施例中,控制器可以经由至少一个数据路径联接到包括多个存储器组的存储器装置,每个存储器组包括多个非易失性存储器单元。控制器可以包括至少一个处理器和至少一个存储器,该至少一个存储器包括计算机程序代码,其中利用至少一个处理器,至少一个存储器和计算机程序代码被配置为使控制器在存储器装置中的至少一个存储器组内执行数据输入/输出操作;从存储器装置接收响应,该响应包括数据输入/输出操作的结果;从存储器装置接收关于至少一个存储器组的状态数据;以及基于响应和状态数据来确定数据输入/输出操作已经成功还是已经失败。
25.通过至少一个处理器和至少一个存储器,计算机程序代码被配置为使控制器通过将状态数据和与数据输入/输出操作相关联的物理到逻辑(p2l)映射数据项进行比较来确定数据输入/输出操作已经成功还是已经失败。利用至少一个处理器,至少一个存储器和计算机程序代码可以被进一步配置为使控制器根据数据输入/输出操作是否已经成功、基于p2l映射数据来更新逻辑到物理(l2p)映射数据项。
26.利用至少一个处理器,至少一个存储器和计算机程序代码被配置为使控制器通过当基于状态数据的成功或失败的第一确定的结果与基于响应的成功或失败的第二确定的结果不同时,向第一确定分配比第二确定更高的优先级,确定数据输入/输出操作已经成功还是已经失败。
27.例如,多个存储器组之中的每个存储器组可以是页面。状态数据可以包括位图信息,该位图信息指示该页面是空的或空白的。
28.再例如,多个存储器组之中的每个存储器组可以是存储块。状态数据可以包括页面计数,该页面计数指示数据项存储在存储块的多少页面中的。
29.利用至少一个处理器,至少一个存储器和计算机程序代码被进一步配置为使控制器在与命令相对应的数据输入/输出操作完成之后立即从存储器装置接收响应,并且当通过数据输入/输出操作更新了元数据时,从存储器装置接收状态数据。
30.在本公开的另一实施例中,存储器系统可以包括:存储器装置,被配置为响应于命令而执行将数据存储到非易失性存储器单元中或者从存储器单元擦除数据以及提供指示成功存储或擦除数据的响应的访问操作;以及控制器,被配置为:向存储器装置提供命令,将响应反映到物理到逻辑(p2l)映射数据项中,控制存储器装置生成关于存储单元中存储的数据的信息,在p2l映射数据项与该信息不同时,控制存储器装置再次执行访问操作,并且在p2l映射数据项与该信息相同时,将该响应反映到逻辑到物理(l2p)映射数据项中。
附图说明
31.本文参照附图进行描述,其中在整个附图中,相同的附图标记指代相同的部件。
32.图1示出根据本公开的实施例的存储器系统。
33.图2示出根据本公开的实施例的数据处理系统。
34.图3示出根据本公开的实施例的存储器系统。
35.图4示出说明非易失性存储器装置中的页面信息的位图信息的示例。
36.图5示出根据本公开的实施例的操作存储器系统的方法的第一示例。
37.图6示出根据本公开的实施例的操作存储器系统的方法的第二示例。
具体实施方式
38.下面参照附图描述本公开的各个实施例。然而,本公开的元件和特征可以被不同地配置或布置以形成可以是所公开实施例中的任意一个的变型的其它实施例。
39.在本公开中,术语“包含”、“包含有”、“包括”和“包括有”是开放式的。如在所附的权利要求书中使用时,这些术语指定所陈述的元件的存在并且不排除一种或多种其它元件的存在或添加。权利要求中的术语不排除设备包括另外的组件(例如,接口单元、电路等)。
40.在本公开中,对“一个实施例”、“示例性实施例”、“实施例”、“另一实施例”、“一些实施例”、“各个实施例”、“其它实施例”、“可选实施例”等中包括的各种特征(例如,元件、结构、模块、组件、步骤、操作、特性等)的参考旨在表示任意这种特征包括在本公开的一个或多个实施例中,但是可以或可能不一定在相同的实施例中进行组合。
41.在本公开中,各种单元、电路或其它组件可以被描述或要求保护为“被配置为”执行一个或多个任务。在这样的语境中,“被配置为”用于通过指示块/单元/电路/组件包括在操作期间执行一个或多个任务的结构(例如,电路)来表示结构。这样,即使所指定的块/单元/电路/组件当前不工作(例如,未接通或未启用),也可以说该块/单元/电路/组件被配置为执行任务。与“被配置为”一起使用的块/单元/电路/组件包括硬件,例如,电路、存储可执行以实施操作的程序指令的存储器等。另外,“被配置为”可以包括由软件和/或固件(例如,执行软件的现场可编程门阵列(fpga)或通用处理器)操纵以能够执行所讨论的(多个)任务的方式操作的通用结构(例如,通用电路)。“被配置为”可以还包括使制造过程(例如,半导体制造设施)适于制造适于实施或执行一个或多个任务的装置(例如,集成电路)。
42.如本公开中使用的,术语“电路”可以指以下所有内容:(a)纯硬件电路实施方式(诸如仅模拟和/或数字电路的实施方式)以及(b)电路和软件(和/或固件)的组合,诸如(如果适用的话):(i)(多个)处理器的组合,或(ii)处理器/软件(包括一起工作以使诸如移动电话或服务器的设备执行各种功能的数字信号处理器、软件和存储器)的部分以及(c)需要软件或固件来操作的电路,诸如(多个)微处理器或(多个)微处理器的部分,即使该软件或固件物理上不存在。“电路”的这种定义适用于该术语在本技术中的所有应用、包括在任意权利要求中的应用。作为另一示例,如在本技术中使用的,术语“电路”还涵盖仅处理器(或多个处理器)或处理器的部分以及处理器(或多个处理器)所附带软件和/或固件的实施方式。例如,并且如果适用于特定权利要求要素,术语“电路”还涵盖用于存储装置的集成电路。
43.如所使用的,术语“第一”、“第二”、“第三”等用作它们之后的名词的标签,并且不暗示任何类型的排序(例如,空间、时间、逻辑等)。术语“第一”和“第二”不一定暗示第一值必须写在第二值之前。此外,虽然这些术语可以在本文中使用来识别各种元件,但是这些元件不受这些术语的限制。这些术语用于将一个元件与另外具有相同或相似名称的另一个元件区分开。例如,可以将第一电路与第二电路区分开。
44.此外,术语“基于”用于描述影响确定结果的一个或多个因素。这个术语不排除可能影响确定结果的其他因素。也就是说,确定结果可以仅基于那些因素或至少部分地基于那些因素。考虑短语“基于b来确定a”。虽然在这种情况下,b是影响a的确定结果的因素,但这种短语不排除a的确定结果也基于c。在其他情况下,可以仅基于b来确定a。
45.在本文中,一项数据或数据项可以是位的序列。例如,数据项可以包括文件的内
容、文件的一部分、存储器中的页面、面向对象的程序中的对象、数字消息、数字扫描图像、视频信号或音频信号的一部分或可由位序列表示的任意其它实体。根据实施例,数据项可以包括离散的对象。根据另一实施例,数据项可以包括两个不同组件之间的传输数据包内的信息单元。
46.现在将参照附图描述本公开的实施例,其中相同的附图标记指代相同的元件。
47.图1示出根据本公开的实施例的存储器系统。
48.参照图1,存储器系统110可以包括存储器装置150和控制器130。存储器系统110中的存储器装置150和控制器130可以认为是物理上彼此分离的组件或元件。存储器装置150和控制器130可以经由至少一个数据路径连接。例如,数据路径可以包括通道和/或通路。
49.根据实施例,存储器装置150和控制器130可以是按功能划分的组件或元件。此外,根据实施例,存储器装置150和控制器130可以利用单个芯片或多个芯片来实施。控制器130可以响应于从外部装置输入的请求而执行数据输入/输出操作。例如,当控制器130响应于从外部装置输入的读取请求而执行读取操作时,在存储器装置150中包括的多个非易失性存储器单元中存储的数据被传送到控制器130。
50.如图1所示,存储器装置150可以包括多个存储块60。存储块60可以被理解为通过单次擦除操作将数据一起移除的一组非易失性存储器单元。虽然未示出,但是存储块60可以包括页面,该页面是在单个编程操作期间一起存储数据或者在单个读取操作期间一起输出数据的一组非易失性存储器单元。例如,一个存储块可以包括多个页面。
51.例如,存储器装置150可以包括多个存储器平面或多个存储器管芯。根据实施例,存储器平面可以被认为是包括至少一个存储块的逻辑分区或物理分区、能够控制包括多个非易失性存储器单元的阵列的驱动电路以及可以临时存储输入到非易失性存储器单元或从非易失性存储器单元输出的数据的缓冲器。
52.另外,根据实施例,存储器管芯可以包括至少一个存储器平面。存储器管芯可以被理解为在物理上可区分的衬底上实施的一组组件。每个存储器管芯可以通过数据路径连接到控制器130。每个存储器管芯可以包括接口以与控制器130交换数据条和信号。
53.根据实施例,存储器装置150可以包括至少一个存储块60、至少一个存储器平面或至少一个存储器管芯。根据存储器系统110的性能,图1所示的存储器装置150的内部配置可以不同。本公开的实施例不限于图1所示的内部配置。
54.参照图1,存储器装置150可以包括能够将至少一些电压供应到存储块中的电压供应电路70。电压供应电路70可以将读取电压vrd、编程电压vprog、通过电压vpass或擦除电压vers供应到存储块中包括的非易失性存储器单元中。例如,在读取存储块中包括的非易失性存储器单元中存储的数据的读取操作期间,电压供应电路70可以将读取电压vrd供应到所选择的非易失性存储器单元中。在将数据存储在存储块中包括的非易失性存储器单元中的编程操作期间,电压供应电路70可以将编程电压vprog供应到所选择的非易失性存储器单元中。而且,在对所选择的非易失性存储器单元执行读取操作或编程操作期间,电压供应电路70可以将通过电压vpass供应到未选择的非易失性存储器单元中。在擦除存储块中包括的非易失性存储器单元中存储的数据的擦除操作期间,电压供应电路70可以将擦除电压vers供应到存储块中。
55.存储器装置150可以存储关于基于执行何种操作而被供应到存储块60的各种电压
的信息。例如,当存储块中的非易失性存储器单元可以存储多位数据时,可能需要用于标识或读取多位数据的多个读取电压vrd的电平。存储器装置150可以包括表,该表包括关于与多位数据相对应的多个读取电压vrd的电平的信息。例如,该表可以包括在寄存器中存储的偏压值,每个偏压值对应于特定读取电压vrd的电平。可以将用于读取操作的读取电压vrd的偏压值的数量限于预设范围。而且,可以对偏压值进行量化。
56.响应于从外部装置输入的请求,控制器130可以执行数据输入/输出操作。例如,当控制器130执行与从外部装置输入的读取请求相对于的读取操作时,可以将在存储器装置150中包括的多个非易失性存储器单元中存储的数据传送到控制器130。对于读取操作,输入/输出(i/o)控制器192可以通过收发器198将读取命令传输到存储器装置150。收发器198可以将读取命令传输到存储器装置150,并且接收从存储器装置150输出的数据。收发器198可以将从存储器装置150输出的数据存储在存储器144中。输入/输出(i/o)控制器192可以将在存储器144中存储的数据输出到外部装置作为对读取请求的响应。
57.另外,输入/输出控制器192可以通过收发器198将连同写入请求一起从外部装置输入的数据传输到存储器装置150。在将数据存储在存储器装置150中之后,输入/输出控制器192可以将写入请求的响应传输到外部装置,该写入请求的响应显示对数据成功编程。
58.通常,当在存储器装置150内执行的内部操作或在控制器130与存储器装置150之间的数据通信(例如,数据、命令、响应等的传输/接收)的过程中未发生故障时,控制器130可以被配置为基于从存储器装置150提供的、关于数据输入/输出操作的响应来确定数据输入/输出操作是成功还是失败。然而,当存储器装置150由于在控制器130与存储器装置150之间的数据通信中发生故障或错误而向控制器130传输不正确的响应时,在存储器装置150内执行的数据输入/输出操作的成功或失败可能不同于由控制器130识别的数据输入/输出操作的成功或失败。在这种情况下,存储器系统110的操作可靠性可能劣化。
59.根据实施例,控制器130中的操作状态检查器196可以收集关于与在存储器装置150内执行的数据输入/输出操作相关联的存储块60或页面的状态数据,并且基于状态数据来执行数据输入/输出操作是成功还是失败的再次检查。如上所述,存储器装置150可以包括多个存储器组,每个存储器组包括多个非易失性存储器单元。此处,存储器组可以对应于诸如存储块60、页面、平面、管芯、超级块等的各种结构组件,各种结构组件可以与在存储器装置150内执行的数据输入/输出操作或操作的类型相关联。例如,当逐页面地执行读取操作或编程操作时,可以将存储器组理解为页面。当逐块地执行擦除操作时,存储器组可以是存储块60。
60.在响应于从控制器130传输的命令而执行数据输入/输出操作之后,存储器装置150响应于控制器130的另一命令传输与数据输入/输出操作有关的诸如状态数据的操作信息或与数据项相关联的改变后的映射数据项。除了在数据输入/输出操作之后已经传输的响应之外,操作状态检查器196还可以基于从存储器装置150传输的操作信息来确定数据输入/输出操作是否成功。根据实施例,可以将操作信息连同关于数据输入/输出操作的响应一起从存储器装置150传输到控制器130。
61.例如,控制器130将用于将数据存储在特定页面中的编程命令传输到存储器装置150。如果成功执行响应于编程命令的编程操作,则存储器装置150可以将指示编程操作已经成功完成的响应传输到控制器130。由于编程操作,数据项被存储在存储器装置150的开
放存储块中的空白页面处,并且关于页面的状态数据可以指示数据存储在页面中。根据实施例,在相应存储块中的有效页面的数量可能会改变。当存储器装置150基于控制器130的命令向该控制器传输关于相应页面的状态数据或相应开放存储块的有效页面的数量时,操作状态检查器196基于所接收的状态数据执行对编程操作的再次检查。操作状态检查器196可以再次确认编程操作是否成功完成。
62.根据实施例,控制器130可以将从存储器装置150传输的状态数据与第二映射项(例如,用于将物理地址链接到逻辑地址的p2l映射数据项)进行比较,并且检查是否已成功执行对数据项的编程操作。在再次检查出成功执行编程操作之后,控制器130可以基于第二映射项来更新第一映射项(例如,用于将逻辑地址链接到物理地址的l2p映射数据项)。
63.即使存储器装置150内的相应编程操作失败,控制器130也识别出用于存储数据项的编程操作已经成功。因为在存储器装置150中编程操作失败,所以关于相应页面的状态数据可以指示数据项没有存储在该相应页面中。或者,相应存储块中有效页面的数量可能没有改变。当存储器装置150在控制器130的请求下传输状态数据时,操作状态检查器196可以基于所接收的状态数据而识别出尚未成功执行编程操作。在这种情况下,控制器130可以执行用于校正在编程操作期间发生的错误而不是更新第一映射项(例如,用于将逻辑地址链接到物理地址的l2p映射数据项)的操作。例如,为了校正错误,控制器130可以在存储器装置150的不同页面或不同块中对该数据项执行重新编程操作。
64.通过上述过程,即使存储器系统110中的存储器装置150和控制器130识别彼此不同的数据输入/输出操作结果,控制器130也可以收集诸如关于存储器装置150内的存储器组的状态数据的操作信息。基于操作信息,控制器130可以重新检查数据输入/输出操作是成功还是失败。另一方面,当基于响应和从存储器装置150传输的关于数据输入/输出操作的状态数据,确定数据输入/输出操作的结果不同时,操作状态检查器196可以基于状态数据来确定操作成功或失败。也就是说,与基于响应的确定相比,操作状态检查器196可以给予基于状态数据的确定更高的优先级。
65.图2和图3示出根据本公开的一个或多个实施例的可以由存储器系统110执行的一些操作。
66.参照图2,数据处理系统100可以包括与诸如存储器系统110的存储器系统接合或联接的主机102。主机102可以包括便携式电子装置(例如,移动电话、mp3播放器、膝上型计算机等)或者非便携式电子装置(例如,台式计算机、游戏机、电视、投影仪等)。
67.主机102还可以包括可以控制在主机102中执行的功能和操作的至少一个操作系统(os)。os可以提供与存储器系统110可操作地接合的主机102与想要将数据存储在存储器系统110中的用户之间的互操作性。os可以支持对应于用户请求的功能和操作。通过示例而非限制的方式,根据主机102的移动性,可以将os分类为通用操作系统和移动操作系统。根据系统要求或用户环境,可以将通用操作系统分为个人操作系统和企业操作系统。与个人操作系统相比,企业操作系统可以专用于确保和支持高性能计算。
68.移动操作系统可以用于支持用于移动性的服务或功能(例如,省电功能)。主机102可以包括多个操作系统。主机102可以对应于用户的请求,运行与存储器系统110互锁的多个操作系统。主机102可以将对应于用户的请求的多个命令传输到存储器系统110中,从而在存储器系统110内执行对应于命令的操作。
69.存储器系统110中的控制器130可以响应于从主机102输入的请求或命令来控制存储器装置150。例如,控制器130可以执行读取操作以为主机102提供从存储器装置150读取的数据条,并且可以执行写入操作(或编程操作)以将从主机102输入的数据条存储在存储器装置150中。为了执行数据输入/输出(i/o)操作,控制器130可以控制和管理用于数据读取、数据编程、数据擦除等的内部操作。
70.根据实施例,控制器130可以包括主机接口(i/f)132、处理器134、错误校正电路138、电源管理单元(pmu)140、存储器接口142和存储器144。关于实施例中的存储器系统110,如图2所示的控制器130中包括的组件可以根据结构、功能、操作性能等而变化。例如,根据主机接口的协议,存储器系统110可以利用可以与主机102电联接的各种类型的存储装置中的任意一种来实施。合适的存储装置的非限制性的示例包括固态驱动器(ssd)、多媒体卡(mmc)、嵌入式mmc(emmc)、尺寸减小的mmc(rs-mmc)、微型mmc、安全数字(sd)卡、迷你sd、微型sd、通用串行总线(usb)存储装置、通用闪存(ufs)装置、紧凑型闪存(cf)卡、智能媒体(sm)卡、记忆棒等。可以基于存储器系统110的实施方式来增加或省略控制器130中的组件。
71.主机102和存储器系统110可以包括控制器或接口以根据一个或多个预定协议来传输和接收信号、数据条等。例如,存储器系统110中的主机接口132可以包括能够将信号、数据条等传输到主机102或者接收从主机102输入的信号、数据条等的设备。
72.控制器130中包括的主机接口132可以接收从主机102输入的信号、命令(或请求)或数据条。例如,主机102和存储器系统110可以使用预定协议在彼此之间传输和接收数据条。由主机102和存储器系统110支持的、用于发送和接收数据条的协议或接口的示例包括通用串行总线(usb)、多媒体卡(mmc)、并行高级技术附件(pata)、小型计算机系统接口(scsi)、增强型小型磁盘接口(esdi)、电子集成驱动器(ide)、高速外围组件互连(pcie)、串列scsi(sas)、串行高级技术附件(sata)、移动工业处理器接口(mipi)等。根据实施例,主机接口132是一种用于与主机102交换数据条的层,并且利用被称为主机接口层(hil)的固件来实施或由被称为主机接口层(hil)的固件来驱动。
73.电子集成驱动器(ide)或高级技术附件(ata)可以用作用于传输和接收数据条的接口中的一种,例如,电子集成驱动器(ide)或高级技术附件(ata)可以使用包括40条并行连接的布线的电缆以支持主机102与存储器系统110之间的数据传输和接收。当多个存储器系统110连接到单个主机102时,可以通过使用与多个存储器系统110连接的位置或指拨开关(dip switch),将多个存储器系统110划分为主设备和从设备。设置为主设备的存储器系统110可以用作主存储器装置。例如,ide(ata)可以包括快速ata、atapi和增强型ide(eide)。
74.串行高级技术附件(sata)是一种与电子集成驱动器(ide)装置使用的、各种ata标准的并行数据通信接口兼容的串行数据通信接口。ide接口中的40条布线可以减少到sata接口中的六条布线。例如,用于ide的40个并行信号可以被转换为用于sata的6个串行信号,以在彼此之间传输。sata由于其更快的数据传输和接收速率以及在主机102中使用更少的资源消耗进行数据传输和接收而已得到广泛使用。sata可以支持多达30个外部装置与主机102中包括的单个收发器连接。另外,sata可以支持热插拔(hot plugging),该热插拔允许即使正在执行主机102和另一装置之间的数据通信时,也可将外部装置附接到主机102或将外部装置与主机102分离。因此,即使在主机102通电时,存储器系统110也可以像通用串行
总线(usb)支持的装置那样作为附加装置被连接或断开。例如,在具有esata端口的主机102中,可以像外部硬盘一样自由地分离存储器系统110。
75.小型计算机系统接口(scsi)是一种用于计算机、服务器和/或其的外围装置之间进行连接的串行数据通信接口。与诸如ide和sata的其它接口相比,scsi可以提供高传输速度。在scsi中,主机102和至少一个外围装置(例如,存储器系统110)串联连接,但是可以通过并行数据通信来执行主机102和每个外围装置之间的数据传输和接收。在scsi中,容易将诸如存储器系统110的装置连接到主机102或与主机102断开。scsi可以支持将15个其它装置与主机102中包括的单个收发器连接。
76.串列scsi(sas)可以被理解为scsi的串行数据通信版本。在sas中,不仅主机102和多个外围装置串联连接,而且可以以串行数据通信方案来执行主机102和每个外围装置之间的数据传输和接收。sas可以通过串行电缆而不是并行电缆来支持主机102和外围装置之间的连接,以使用sas来容易地管理设备并且增强或提高操作可靠性和通信性能。sas可以支持将八个外部装置与主机102中包括的单个收发器连接。
77.高速非易失性存储器(nvme)是一种至少基于高速外围组件互连(pcie)的接口,被设计为提高配备有非易失性存储器系统110的主机102、服务器、计算装置等的性能和设计灵活性。pcie可以使用插槽或专用电缆来将主机102(例如,计算装置)和存储器系统110(例如,外围装置)连接。例如,pcie可以使用多个引脚(例如,18个引脚、32个引脚、49个引脚、82个引脚等)和至少一条布线(例如,x1、x4、x8、x16等)以实现每秒数百mb(例如250mb/s,500mb/s,984.6250mb/s,1969mb/s等)的高速数据通信。根据实施例,pcie方案可以实现每秒数十到数百千兆位的带宽。使用nvme的系统可以最大程度地利用诸如ssd的非易失性存储器系统110的运行速度,其中非易失性存储器系统110以比硬盘更高的速度运行。
78.根据实施例,主机102和存储器系统110可以通过通用串行总线(usb)连接。通用串行总线(usb)是一种可扩展的、可热插拔式的即插即用的串行接口,该串行接口可以在主机102和诸如键盘、鼠标、操纵杆、打印机、扫描仪、存储装置、调制解调器、摄像机等的外围装置之间提供经济高效的标准连接。诸如存储器系统110的多个外围装置可以联接到主机102中包括的单个收发器。
79.参照图2,错误校正电路138可以校正待在存储器装置150中处理(例如,从存储器装置150输出)的数据的错误位,错误校正电路138可以包括错误校正码(ecc)编码器和ecc解码器。ecc编码器可以对待编程在存储器装置150中的数据执行错误校正编码,以生成添加奇偶校验位的经编码数据,并且将经编码数据存储在存储器装置150中。当控制器130读取存储器装置150中存储的数据时,ecc解码器可以检测并校正从存储器装置150读取的数据中包含的错误。例如,在对从存储器装置150读取的数据执行错误校正解码之后,错误校正电路138可以确定错误校正解码是否已经成功并且输出指示信号(例如,校正成功信号或校正失败信号)。错误校正电路138可以使用在ecc编码过程期间生成的奇偶校验位来校正所读取数据的错误位。当错误位的数量大于或等于可校正错误位的阈值数量时,错误校正电路138可以不校正错误位,而是可以输出指示校正错误位失败的校正失败信号。
80.根据实施例,错误校正电路138可以基于诸如以下的编码调制来执行错误校正操作:低密度奇偶校验(ldpc)码、博斯-查德胡里-霍昆格姆(bose-chaudhuri-hocquenghem,bch)码、turbo码、里德-所罗门(reed-solomon,rs)码、卷积码、递归系统码(rsc)、网格编码
调制(tcm)或分组编码调制(bcm)等。错误校正电路138可以包括用于基于上述代码中的至少一种来执行错误校正操作的所有电路、模块、系统和/或装置。
81.例如,ecc解码器可以对从存储器装置150传输的数据执行硬判决解码或软判决解码。硬判决解码可以理解为针对错误校正而广泛分类的两种方法中的一种。硬判决解码可以包括通过将来自存储器装置150中的非易失性存储器单元的数字数据读取为“0”或“1”来校正错误的操作。因为硬判决解码处理二进制逻辑信号,所以电路/算法的设计或配置可以比软判决解码更简单,并且处理速度可以比软判决解码更快。
82.软判决解码可以通过两个或更多个量化值(例如,多位数据、近似值、模拟值等)来量化存储器装置150中的非易失性存储器单元的阈值电压,以基于两个或更多个量化值来校正错误。控制器130可以从存储器装置150中的多个非易失性存储器单元接收两个或更多个量化值,然后基于通过将量化值表示为诸如条件概率或可能性的信息的组合而生成的信息来执行解码。
83.根据实施例,在针对软判决解码而设计的方法之中,ecc解码器可以使用低密度奇偶校验和生成器矩阵(ldpc-gm)码。低密度奇偶校验(ldpc)码使用一种算法,该算法可以根据可靠性以若干位从存储器装置150中读取数据的值,而不是像硬判决解码那样简单地读取数据1或0,并且通过消息交换迭代地重复该过程,以提高值的可靠性。然后,这些值最终被确定为数据1或0。例如,使用ldpc码的解码算法可以理解为概率解码。但是在硬判决解码中,从非易失性存储器单元输出的值被编码为0或1。与硬判决解码相比,软判决解码可以基于随机信息来确定在非易失性存储器单元中存储的值。关于位翻转(可以认为是在存储器装置150中可能发生的错误),软判决解码可以提高校正错误和恢复数据的可能性,以及提供经校正数据的可靠性和稳定性。ldpc-gm码可以具有内部ldgm码可以与高速ldpc码串联的方案。
84.根据实施例,例如,ecc解码器可以使用低密度奇偶校验卷积码(ldpc-cc)来进行软判决解码。ldpc-cc可具有使用基于可变块长度和移位寄存器的线性时间编码和管线解码的方案。
85.根据实施例,例如,ecc解码器可以使用对数似然比turbo码(llr-tc)来进行软判决解码。对数似然比(llr)可以被计算为采样值与理想值之间的距离的非线性函数。另外,turbo码(tc)可以包括二维或三维的简单码(例如,汉明码),并且在行方向和列方向上重复解码以提高值的可靠性。
86.电源管理单元(pmu)140可以控制控制器130中提供的电力。pmu 140可以监测向存储器系统110供应的电力(例如,向控制器130供应的电压)并且向控制器130中包括的组件提供电力。当向存储器系统110供应的电力不稳定时,pmu 140不仅可以检测通电或断电,还可以生成使存储器系统110能够紧急地备份当前状态的触发信号。根据实施例,pmu 140可以包括能够累积可以在紧急情况下使用的电力的装置或组件。
87.存储器接口142可以用作用于处置在控制器130和存储器装置150之间传送的命令和数据的接口,以允许控制器130响应于从主机102输入的命令或请求而控制存储器装置150。在当存储器装置150是闪速存储器时的情况下,存储器接口142可以在处理器134的控制下生成用于存储器装置150的控制信号并且可以处理输入到存储器装置150或从存储器装置150输出的数据。例如,当存储器装置150包括nand闪速存储器时,存储器接口142包括
nand闪存控制器(nfc)。存储器接口142可以提供用于处置控制器130和存储器装置150之间的命令和数据的接口。根据实施例,存储器接口142可以通过被称为闪存接口层(fil)的固件来实施或由被称为闪存接口层(fil)的固件来驱动以用于与存储器装置150交换数据。
88.根据实施例,存储器接口142可以支持开放式nand闪存接口(onfi)、toggle模式等以与存储器装置150进行数据输入/输出。例如,onfi可以使用包括至少一条能够支持以8位或16位数据为单位进行双向传输和接收的信号线的数据路径(例如,通道、通路等)。控制器130与存储器装置150之间的数据通信可以通过关于异步单数据速率(sdr)、同步双倍数据速率(ddr)和toggle双倍数据速率(ddr)的至少一个接口来实现。
89.存储器144可以是存储器系统110或控制器130中的一种工作存储器,同时存储针对存储器系统110和控制器130中的操作而产生或传递的临时数据或事务数据。例如,在响应于来自主机102的请求而将从存储器装置150输出的读取数据输出到主机102之前,存储器144可以临时存储该读取数据。另外,在将从主机102输入的写入数据编程到存储器装置150中之前,控制器130可以将该写入数据临时存储在存储器144中。当控制器130控制存储器装置150的诸如数据读取、数据写入、数据编程、数据擦除等操作时,可以将在存储器系统110的控制器130和存储器装置150之间传输或生成的数据条存储在存储器144中。
90.除了读取数据或写入数据之外,存储器144可以存储用于在主机102和存储器装置150之间输入或输出数据的信息(例如,映射数据、读取请求、编程请求等)。根据实施例,存储器144可以包括命令队列、程序存储器、数据存储器、写入缓冲器/高速缓存、读取缓冲器/高速缓存、数据缓冲器/高速缓存、映射缓冲器/高速缓存等。控制器130可以针对设立以执行数据输入/输出操作的组件分配存储器144中一些存储空间。例如,在存储器144中设立的写入缓冲器可以用于临时存储进行编程操作的目标数据。
91.在实施例中,存储器144可以利用易失性存储器来实施。例如,存储器144可以利用静态随机存取存储器(sram)、动态随机存取存储器(dram)或两者来实施。虽然图2示出了例如存储器144被设置在控制器130内,但是实施例不限于此。存储器144可以位于控制器130内部或外部。例如,存储器144可以通过具有在存储器144和控制器130之间传送数据和/或信号的存储器接口的外部易失性存储器来实现。
92.处理器134可以控制存储器系统110的全部操作。例如,处理器134可以响应于从主机102输入的写入请求或读取请求而控制存储器装置150的编程操作或读取操作。根据实施例,处理器134可以运行固件以控制存储器系统110中的编程操作或读取操作。在本文中,固件可以被称为闪存转换层(ftl)。稍后参照图3详细描述ftl的示例。根据实施例,处理器134可以利用微处理器或中央处理单元(cpu)来实施。
93.根据实施例,存储器系统110可以用至少一个多内核处理器来实施。多内核处理器是一种集成被认为是不同处理区域的两个或更多个内核的电路或芯片。例如,当多内核处理器中的多个内核独立地驱动或运行多个闪存转换层(ftl)时,可以提高存储器系统110的数据输入/输出速度(或性能)。根据实施例,可以通过多内核处理器中的不同内核独立地执行存储器系统110中的数据输入/输出(i/o)操作。
94.控制器130中的处理器134可以执行对应于从主机102输入的请求或命令的操作。此外,存储器系统110可以独立于从诸如主机102的外部装置输入的命令或请求。在一种情况下,控制器130响应于从主机102输入的请求或命令而执行的操作可以被认为是前台操
作,而控制器130独立(例如,不管从主机102输入的请求或命令)执行的操作可以被认为是后台操作。控制器130可以在存储器装置150中执行关于数据条的读取、写入或编程、擦除等前台操作或后台操作。另外,与作为从主机102传输的设置命令的设置参数命令或设置特征命令相对应的参数设置操作可以被认为是前台操作。作为没有从主机102传输的命令的后台操作,控制器130可以执行垃圾收集(gc)、损耗均衡(wl)、用于标识并处理坏块的坏块管理等。可以对存储器装置150中包括的多个存储块152、154、156执行后台操作。
95.根据实施例,基本相似的操作可以作为前台操作和后台操作两者执行。例如,当存储器系统110响应于从主机102输入的请求或命令而执行垃圾收集(例如,手动gc)时,该垃圾收集可以被认为是前台操作。当存储器系统110独立于主机102执行垃圾收集(例如,自动gc)时,该垃圾收集可以被认为是后台操作。
96.当存储器装置150包括具有非易失性存储器单元的多个管芯(或多个芯片)时,控制器130可以被配置为执行关于从主机102输入的多个请求或命令的并行处理,以提高存储器系统110的性能。例如,可以在存储器装置150中包括的多个平面、多个管芯或多个芯片中的至少一些中划分和并行地处理所传输的请求或命令。控制器130中的存储器接口142可以通过至少一个通道和至少一个通路连接到存储器装置150中的多个平面、管芯或芯片。当控制器130响应于与包括非易失性存储器单元的多个页面相关联的请求或命令,通过每个通道或每个通路将数据条分配和存储在多个管芯中时,可以单独或并行执行对应于该请求或命令的多个操作。这种处理方法或方案可以被认为是交错方法。因为利用交错方法进行操作的存储器系统110的数据输入/输出速度可以比没有利用交错方法进行操作的存储器系统的数据输入/输出速度更快,所以可以提高存储器系统110的数据i/o性能。
97.通过示例而非限制的方式,控制器130可以识别关于与存储器装置150中包括的多个存储器管芯相关联的多个通道(或通路)的状态。控制器130可以将每个通道或每个通路的状态确定为例如以下的一种:忙碌状态、就绪状态、活动状态、空闲状态、正常状态和/或异常状态。控制器确定通过哪个通道或通路传递指令(和/或数据)可以与物理块地址相关联,例如,将指令(和/或数据)传递到哪个(哪些)管芯中。控制器130可以参考从存储器装置150传递的描述符。描述符可以包括描述关于存储器装置150的一些信息的块参数或页面参数,每个参数都是具有设定格式或结构的数据。例如,描述符可以包括装置描述符、配置描述符、单元描述符等。控制器130可以参考或使用描述符来确定经由哪个(或哪些)通道或通路交换指令或数据。
98.参照图2所示,存储器系统110中的存储器装置150可以包括多个存储块152、154、156。多个存储块152、154、156中的每一个包括多个非易失性存储器单元。根据实施例,存储块152、154、156可以是一起被擦除的一组非易失性存储器单元。存储块152、154、156可以包括多个页面,该多个页面是一起被读取或编程的一组非易失性存储器单元。在一个实施例中,每个存储块152、154、156可以具有用于高集成度的三维堆叠结构。此外,存储器装置150可以包括多个管芯,每个管芯包括多个平面,每个平面包括多个存储块152、154、156。对于存储器系统110的性能,存储器装置150的配置可以不同。
99.在图2所示的存储器装置150中,包括多个存储块152、154、156。根据在一个存储器单元中可以存储或表示的位的数量,多个存储块152、154、156可以是单层单元(slc)存储块、多层单元(mlc)存储块等中的任意一个。slc存储块包括由每个存储一位数据的存储器
单元实施的多个页面。slc存储块可以具有较高的数据i/o操作性能和较高的耐用性。mlc存储块包括由每个存储多位数据(例如,两位或多位)存储器单元实施的多个页面。针对相同的空间,mlc存储块可以比slc存储块具有更大的存储容量。在存储容量方面,mlc存储块可以高度集成。
100.在实施例中,存储器装置150可以利用诸如双层单元(dlc)存储块、三层单元(tlc)存储块、四层单元(qlc)存储块或其组合的mlc存储块来实施。双层单元(dlc)存储块可以包括由每个能够存储两位数据的存储器单元实施的多个页面。三层单元(tlc)存储块可以包括由每个能够存储三位数据的存储器单元实施的多个页面。四层单元(qlc)存储块可以包括由每个能够存储四位数据的存储器单元实施的多个页面。在另一实施例中,存储器装置150可以利用包括由每个能够存储五位或更多位的数据的存储器单元实施的多个页面的块来实施。
101.根据实施例,控制器130可以将存储器装置150中包括的多层单元(mlc)存储块用作将一位数据存储在一个存储器单元中的slc存储块。多层单元(mlc)存储块的数据输入/输出速度可以小于slc存储模块的数据输入/输出速度。也就是说,当将mlc存储块用作slc存储块时,可以减小用于读取操作或编程操作的裕量。当将多层单元(mlc)存储块用作slc存储块时,控制器130可以利用多层单元(mlc)存储块的更快的数据输入/输出速度。例如,因为缓冲器可能需要较高的数据输入/输出速度以提高存储器系统110的性能,所以控制器130可以将mlc存储块用作临时存储数据条的缓冲器。
102.此外,根据实施例,控制器130可以将多条数据多次编程到多层单元(mlc)中,而无需对存储器装置150中包括的特定mlc存储块执行擦除操作。非易失性存储器单元具有不支持数据重写的特点。然而,控制器130可以使用多层单元(mlc)可以存储多位数据的特点,以将多条1位数据多次编程在mlc中。对于mlc重写操作,当将单条1位数据编程在非易失性存储器单元中时,控制器130可以将编程次数作为单独的操作信息进行存储。根据实施例,可以在将另一条数据重写到相同的非易失性存储器单元中之前,执行用于均匀地均衡非易失性存储器单元的阈值电压的操作。
103.在实施例中,存储器装置150被实现为诸如闪速存储器的非易失性存储器,例如nand闪速存储器、nor闪速存储器等。在实施例中,存储器装置150可以由相变随机存取存储器(pcram)、铁电随机存取存储器(fram)、自旋转移力矩随机存取存储器(stt-ram)和自旋转移力矩磁性随机存取存储器(stt-mram)等中的至少一种来实施。
104.参照图3,存储器系统中的控制器130与主机102和存储器装置150一起操作。如图所示,除了先前结合图2所标识的存储器接口142和存储器144之外,控制器130包括主机接口132、闪存转换层(ftl)240。
105.根据实施例,图2所示的错误校正电路138可以包括在闪存转换层(ftl)240中。在另一实施例中,错误校正电路138可以被实施为控制器130中包括的或者与控制器130相关联的单独的模块、电路、固件等。
106.主机接口132能够处理从主机102传输的命令、数据等。通过示例而非限制的方式,主机接口132可以包括命令队列56、缓冲器管理器52和事件队列54。命令队列56可以顺序地存储从主机102接收的命令、数据等,并且例如按照命令、数据等被存储的顺序将命令、数据等输出到缓冲器管理器52。缓冲器管理器52可以对从命令队列56接收的命令、数据等进行
分类、管理或调整。事件队列54可以顺序地传输用于处理从缓冲器管理器52接收的命令、数据等的事件。
107.可以从主机102传输相同特性的多个命令或数据(例如,读取命令或写入命令),或者可以在主机102将不同特性的多个命令和数据混合或打乱之后,将不同特性的多个命令或数据传输存储器系统110。例如,用于读取数据的多个命令(读取命令)可以被传递存储器系统110,或者用于读取数据的命令(读取命令)和编程/写入数据的命令(写入命令)可以被交替地传输到存储器系统110。主机接口132可以将从主机102传输的命令、数据等顺序地存储到命令队列56。此后,主机接口132可以根据已经从主机102输入的命令、数据等的特性来估计或预测控制器130将执行哪种类型的内部操作。主机接口132可以至少基于命令、数据等的特性来确定命令、数据等的处理顺序和优先级。
108.根据从主机102传输的命令、数据等的特性,主机接口132中的缓冲器管理器52被配置为确定该缓冲器管理器是否应该将命令、数据等存储在存储器144中,或者确定缓冲器管理器是否应该将命令、数据等传递到闪存转换层(ftl)240中。事件队列54接收从缓冲器管理器52输入的事件,这些事件将响应于从主机102传输的命令、数据等而被存储器系统110或控制器130内部地运行和处理,以按照接收的顺序将事件传递到闪存转换层(ftl)240中。
109.根据实施例,图3所示的闪存转换层(ftl)240可以实施多线程方案以执行数据输入/输出(i/o)操作。多线程ftl可以通过使用控制器130中包括的多线程的多内核处理器来实施。
110.根据实施例,闪存转换层(ftl)240可以包括主机请求管理器(hrm)46、映射管理器(mm)44、状态管理器42和块管理器48。主机请求管理器(hrm)46可以管理从事件队列54输入的事件。映射管理器(mm)44可以处理或控制映射数据。状态管理器42可以执行垃圾收集(gc)或损耗均衡(wl)。块管理器48可以对存储器装置150中的块运行命令或指令。
111.通过示例而非限制的方式,主机请求管理器(hrm)46可以根据从主机接口132传递的读取命令和编程命令以及事件,使用映射管理器(mm)44和块管理器48来处置或处理请求。主机请求管理器(hrm)46可以将查询请求传输到映射管理器(mm)44以确定与事件一起输入的逻辑地址相对应的物理地址。主机请求管理器(hrm)46可以将读取请求与物理地址一起发送到存储器接口142,以处理读取请求(处理事件)。在实施例中,主机请求管理器(hrm)46可以将编程请求(写入请求)发送到块管理器48,以将数据编程到存储器装置150中的特定空页面(没有数据的页面),然后可以将对应于编程请求的映射更新请求传输到映射管理器(mm)44,以更新在将逻辑-物理地址彼此映射的信息中的、与编程数据有关的项。
112.块管理器48可以将从主机请求管理器(hrm)46、映射管理器(mm)44和/或状态管理器42传递的编程请求转换到用于存储器装置150的闪存编程请求,以管理存储器装置150中的闪存块。为了最大化或提高存储器系统110(例如,见图2的存储器系统110)的编程或写入性能,块管理器48可以收集编程请求并且将用于多平面和单触发(one-shot)编程操作的闪存编程请求发送到存储器接口142。在实施例中,块管理器48将若干闪存编程请求发送到存储器接口142以提高或最大化多通道和多方向闪存控制器的并行处理。
113.在实施例中,块管理器48可以被配置为根据有效页面的数量来管理存储器装置150中的块,当需要空闲块时选择并擦除没有有效页面的块,并且当确定将执行垃圾收集
时,选择包括最少数量的有效页面的块。状态管理器42可以执行垃圾收集以将有效数据移动到空块并且擦除包括被移动的有效数据的块,使得块管理器48可以具有足够的空闲块(没有数据的空块)。当块管理器48将关于待擦除的块的信息提供到状态管理器42时,状态管理器42可以检查待擦除的块的所有闪存页面以确定每个页面是否有效。
114.例如,为了确定每个页面的有效性,状态管理器42可以识别在每个页面的带外(oob)区域中记录的逻辑地址。为了确定每个页面是否有效,状态管理器42可以将页面的物理地址与映射到从查询请求获得的逻辑地址的物理地址进行比较。状态管理器42针对每个有效页面,将编程请求发送到块管理器48。当完成编程操作时,可以通过映射管理器44的更新来更新映射表。
115.映射管理器44可以管理逻辑-物理映射表。映射管理器44可以处理由主机请求管理器(hrm)46或状态管理器42生成的、例如查询、更新等的各种请求。映射管理器44可以将整个映射表存储在存储器装置150(例如,闪速存储器/非易失性存储器)中并且根据存储器144的存储容量来高速缓存映射条目。当在处理查询或更新请求的同时发生映射高速缓存未命中(miss)时,映射管理器44可以将读取请求发送到存储器接口142以加载在存储器装置150中存储的相关映射表。当映射管理器44中的脏高速缓存块的数量超过某个阈值时,可以将编程请求发送到块管理器48,从而形成干净高速缓存块并且可以将脏映射表存储在存储器装置150中。
116.当执行垃圾收集时,状态管理器42将(多个)有效页面复制到空闲块中,并且主机请求管理器(hrm)46可以针对相同逻辑地址的页面编程最新版本的数据,并且即时地发出更新请求。当状态管理器42在(多个)有效页面的复制未正常完成的状态下请求映射更新时,映射管理器44可能不执行映射表更新。这是因为当状态管理器42请求映射更新并且稍后才完成有效页面复制时,发出的是具有旧物理信息的映射请求。当最新映射表仍指向旧物理地址时或者仅在最新映射表仍指向旧物理地址的情况下,映射管理器44才可以执行映射更新操作以确保准确性。
117.图4示出说明非易失性存储器装置中的页面信息的位图信息的示例。图4中描述的位图信息194是可以反映关于存储器装置150(参见图1至图3)中包括的存储器组的操作状态的信息的示例。
118.参照图4,存储器装置150可以包括多个存储块60_1、60_2。存储块60_1、60_2中的每一个可以包括多个页面。每个页面可以包括用于存储数据项的数据区域page_1、page_2、page_3或page_4,以及用于存储与每个数据区域page_1、page_2、page_3或page_4相对应的状态数据的备用区域sp_1、sp_2、sp_3或sp_4。根据实施例,备用区域sp_1、sp_2、sp_3或sp_4可以存储元数据。元数据的示例包括坏块信息。进一步,根据实施例,与错误校正码有关的信息可以存储在备用区域sp_1、sp_2、sp_3或sp_4中。控制器130和存储器装置150可以使用备用区域sp_1、sp_2、sp_3、sp_4来存储各种类型的数据。
119.根据实施例,存储器装置150可以生成指示在页面中存储的数据项是否有效的位图信息194。从存储器装置150接收位图信息194的控制器130可以将位图信息194存储在存储器144中并且控制存储器144中的位图信息194。例如,如果在位图信息194中记录位“1”,则这可以指示在与该位相对应的页面中存储的数据项有效。此处,有效数据是指所存储的数据是外部装置(例如,主机102)所请求的最新数据,并且无效数据是指所存储的数据是旧
的(已经利用其他数据进行了更新)。位图信息194可以用于确定在存储器装置150中存储的或诸如垃圾收集的其它操作中的数据项的有效性。
120.另外,根据实施例,控制器130可以在存储器装置150内执行数据输入/输出操作。控制器130可以从存储器装置150接收状态数据以配置位图信息194。控制器130可以在向存储器装置150发送用于数据输入/输出操作的命令之后,首先基于从存储器装置150传输的响应来确定数据输入/输出操作是成功还是失败。此后,控制器130可以从存储器装置150请求关于操作状态的信息,并且存储器装置150可以向控制器130传输在备用区域sp_1、sp_2、sp_3、sp_4中存储的信息(例如,元数据等)。控制器130可以基于从存储器装置150传输的信息来配置位图信息194。
121.控制器130可以将位图信息194与第二映射项(例如,用于将物理地址与逻辑地址相关联的p2l映射项)进行比较,以确定是否已经成功地执行数据输入/输出操作。例如,如果通过位图信息194和第二映射项,数据项的有效性不匹配,则控制器130可以确定尚未成功执行与页面相对应的数据输入/输出操作。当通过位图信息194和第二映射信息,数据项的有效性匹配时,控制器130可以确定已经成功执行数据输入/输出操作,然后,控制器130可以基于第二映射项更新第一映射项(例如,用于将逻辑地址与物理地址相关联的l2p映射项)。
122.图5示出根据本公开的实施例的操作存储器系统的方法的第一示例。
123.参照图5,操作存储器系统的方法可以包括:在非易失性存储器装置内执行数据输入/输出操作(342);检查数据输入/输出操作是否完成(344);确定非易失性存储器装置中包括的存储块的操作状态(346);并且基于存储块的操作状态和指示数据输入/输出操作是否完成的响应来确定数据输入/输出操作的成功/失败(348)。
124.参照图1至图3,为了执行外部装置(例如,主机102)所请求的操作或后台操作,控制器130可以将用于数据输入/输出操作的命令传输到存储器装置150。可以对存储器装置150执行与从控制器130输入的命令相对应的数据输入/输出操作(342)。
125.存储器装置150可以将数据输入/输出操作的结果或响应传输到控制器130,并且控制器1300可以基于结果或响应来检查数据输入/输出操作是否完成(344)。例如,响应于控制器130的编程命令,存储器装置150可以将指示已经对数据项进行编程的成功信号或者指示尚未对数据项进行编程的失败信号传输到控制器130。当控制器130向存储器装置150发送读取命令时,存储器装置150可以将与读取命令相对应的数据项或指示读取操作已经失败的失败信号传输到控制器130。
126.控制器130可以请求关于存储器装置150的操作状态的信息,该信息与在存储器装置150内执行的数据输入/输出操作的结果或响应是分开的。控制器130可以基于从存储器装置150传输的关于操作状态的信息来生成位图信息194(参照图4),或者获得存储器装置150中相应存储块的页面信息(346)。该页面信息可以指示页面是空白的或空的或者特定块中有多少个页面存储了数据项。根据实施例,页面信息可以指示用户数据项和虚设数据项中的哪一个存储在页面中。
127.控制器130不仅可以基于指示数据输入/输出操作是否完成的结果或响应,而且还可以基于存储器装置150的状态数据(例如,页面信息、存储块信息等)来检查是否成功执行数据输入/输出操作(348)。例如,控制器130可以将存储器装置150的操作状态与第二映射
项(例如,将物理地址与逻辑地址相关联的p2l映射数据项)进行比较,以再次检查是否已成功执行对特定数据项的编程操作。在从存储器装置150传输了指示数据输入/输出操作是否完成的结果或响应以及存储器装置150的操作信息或状态数据之后,基于结果或响应的第一确定的结果可能不同于基于操作信息或状态数据的第二确定的结果。在这种情况下,控制器130可以向基于状态数据的第二确定分配比基于结果或响应的第一确定更高的优先级。
128.根据实施例,控制器130可以生成有效页面信息,该有效页面信息指示在相应页面中存储的数据项是否有效。在本文中,有效数据项是在存储器装置150中存储的数据项之中与特定逻辑地址相对应的最新数据。有效页面是存储有效数据项的页面。
129.图6示出根据本公开的实施例的操作存储器系统的方法的第二示例。具体地,图6描述控制器130(见图1至图3)中的闪存转换层(ftl)240(见图3)与存储器装置(nand)150(见图1至图3)之间的数据通信的示例。
130.参照图6,闪存转换层(ftl)240可以开始由主机102请求的操作(512)。在执行主机请求的操作之前,存储器装置150可以生成关于多个存储块或页面的信息以用于位图表初始化(530)。
131.闪存转换层240可以对主机102的请求进行解码并且向存储器装置150传输命令以执行与该请求相对应的操作(514)。可以响应于由闪存转换层240传输的命令而对存储器装置150执行数据输入/输出操作(例如,写入、擦除等)(532)。
132.在对存储器装置150执行数据输入/输出操作的同时或之后,闪存转换层240可以检查在存储器装置150内执行的数据输入/输出操作的进展(516)。在图6中,响应于从闪存转换层240传输的命令而在存储器装置150内执行数据输入/输出操作(例如,写入、擦除等)的过程中已经发生异常情况。
133.尽管异常情况(例如,未知错误),但是存储器装置150还是可能通知闪存转换层240数据输入/输出操作已经完成(534)。闪存转换层240可以监测存储器装置150是否准备执行另一操作或者与命令相对应的数据输入/输出操作是否完成(518)。当存储器装置150尚未准备执行另一操作或者尚未完成与所传输的命令相对应的数据输入/输出操作(在操作518处为“否”)时,闪存转换层240可以监测在存储器装置150内执行的数据输入/输出操作(516)。
134.当存储器装置150准备执行另一操作或者已经完成与所传输的命令相对应的数据输入/输出操作(在操作518中为“是”)时,可以改变执行数据输入/输出操作的相应的存储块并且可以将该改变反映到物理块/页面位图表中。此外,控制器130可以生成第二映射数据项(例如,将物理地址与逻辑地址相关联的p2l映射数据项)。例如,当在特定存储块中执行写入操作时,可以新添加相应的存储块的映射数据项(例如,p2l映射数据项)。然后,闪存转换层240可以从存储器装置150请求位图信息并且收集位图信息(520)。存储器装置150可以更新物理块/页面位图表,并且响应于来自闪存转换层240的请求而传输位图信息(536)。根据实施例,可以由存储器装置150生成诸如物理块/页面位图表的位图信息。或者,根据另一实施例,可以由闪存转换层240基于从存储器装置150输入的信息来生成位图信息。
135.另外,根据实施例,关于存储块的位图信息和操作信息可以由闪存转换层240请求,并且从存储器装置150被传输到闪存转换层240。另外,根据实施例,当在存储器装置150
内完成数据输入/输出操作之后经过预设时间时,即使没有来自闪存转换层240的请求,存储器装置150也可以将关于存储块的位图信息或操作信息传输到闪存转换层240。
136.闪存转换层240可以将执行数据输入/输出操作的相应存储块中的改变与位图信息进行比较(522)。根据实施例,可以基于第二映射数据项(例如,将物理地址与逻辑地址相关联的p2l映射数据项)来估计执行了数据输入/输出操作的相应存储块中的改变。例如,当在特定存储块中执行了写入操作时,可以新添加相应存储块的映射数据项(例如,p2l映射数据项)。如果擦除特定存储块,则可以移除关于相应存储块的映射数据项。闪存转换层240可以将相应存储块中的改变与从存储器装置150传输的位图信息进行比较(522)。
137.闪存转换层240将存储块的改变与从存储器装置150传输的位图信息进行比较,以检查该改变与关于执行数据输入/输出操作的位置(例如,特定页面)的位图信息是相同还是不同(524)。如果该改变和位图信息相同(在操作524中为“是”),则闪存转换层240可以确定在存储器装置150内执行的数据输入/输出操作中不存在问题,然后闪存转换层240可以基于第二映射数据项更新第一映射数据项(例如,将逻辑地址与物理地址相关联的l2p映射数据项)(526)。如果该改变和位图信息不同(在操作524中为“否”),则闪存转换层240可以确定在存储器装置150内执行的数据输入/输出操作中存在问题,然后执行校正错误的过程而不更新第一映射数据项(528)。为了校正错误,闪存转换层240可以再次执行相应的数据输入/输出操作。
138.例如,响应于从主机102传输的写入请求,控制器130可以使存储器装置150执行与该写入请求相对应的编程操作,并且存储器装置150可以向控制器130传输关于该编程操作的结果或响应。控制器130可以进一步从存储器装置150接收位图信息。在响应于关于编程操作的结果或响应而基于第二映射数据项(p2l映射数据项)更新第一映射数据项(l2p映射数据项)之前,控制器130可以将位图信息与第二映射数据项(p2l映射数据项)进行比较。当基于比较结果而确定不存在错误时,控制器130可以基于第二映射数据项(p2l映射数据项)来更新第一映射数据项(l2p映射数据项)。通过这些操作,响应于存储器装置150中的意外错误,控制器130可以有机会执行恢复过程。根据这种再次检查过程,可以提高或增强存储器系统110的操作可靠性。
139.如上所述,根据本公开的实施例的存储器系统可以增加在非易失性存储器装置内执行的数据输入/输出操作的可靠性。
140.而且,根据本公开的实施例的存储器系统可以检测或检查非易失性存储器装置的故障。
141.虽然已相对于特定实施例示出和描述了本教导,但是对于本领域技术人员而言将显而易见的是,可以在不脱离所附权利要求书所限定的本公开的精神和范围的情况下进行各种改变和修改。
技术特征:
1.一种存储器系统,包括:存储器装置,包括多个存储器组,每个存储器组包括多个非易失性存储器单元;以及控制器:向所述存储器装置传输命令,从而所述存储器装置在所述多个存储器组之中的至少一个存储器组内执行数据输入/输出操作,从所述存储器装置接收针对所述命令的响应以及关于所述至少一个存储器组的状态数据,并且基于所述响应和所述状态数据来确定所述数据输入/输出操作已经成功还是已经失败。2.根据权利要求1所述的存储器系统,其中所述控制器通过将所述状态数据和与所述数据输入/输出操作相关联的物理到逻辑映射数据项即p2l映射数据项进行比较,确定所述数据输入/输出操作已经成功还是已经失败,并且所述控制器进一步根据所述数据输入/输出操作是否已经成功、基于所述p2l映射数据项来更新逻辑到物理映射数据项即l2p映射数据项。3.根据权利要求1所述的存储器系统,其中当基于所述状态数据的成功或失败的第一确定的结果与基于所述响应的成功或失败的第二确定的结果不同时,所述控制器通过向所述第一确定分配比所述第二确定更高的优先级来确定所述数据输入/输出操作已经成功还是已经失败。4.根据权利要求1所述的存储器系统,其中所述多个存储器组之中的每个存储器组为页面,并且其中所述状态数据包括位图信息,所述位图信息指示所述页面是空白的或空的。5.根据权利要求1所述的存储器系统,其中所述多个存储器组之中的每个存储器组为存储块,并且其中所述状态数据包括页面计数,所述页面计数指示数据项存储在所述存储块的多少页面中。6.根据权利要求1所述的存储器系统,其中所述存储器装置:在与所述命令相对应的所述数据输入/输出操作完成之后立即将所述响应传输到所述控制器,并且当通过所述数据输入/输出操作更新了元数据时,将所述状态数据传输到所述控制器。7.根据权利要求6所述的存储器系统,其中所述数据输入/输出操作可以包括针对所述多个存储器组的数据编程、数据擦除或数据读取,并且其中所述存储器装置进一步更新与所述数据编程、所述数据擦除或所述数据读取相关联的所述状态数据。8.一种操作存储器系统的方法,包括:在包括多个存储器组的存储器装置中的至少一个存储器组内执行数据输入/输出操作,每个存储器组包括多个非易失性存储器单元;从所述存储器装置接收响应,所述响应包括所述数据输入/输出操作的结果;从所述存储器装置接收关于所述至少一个存储器组的状态数据;以及
基于所述响应和所述状态数据来确定所述数据输入/输出操作已经成功还是已经失败。9.根据权利要求8所述的方法,其中所述确定所述数据输入/输出操作已经成功还是已经失败包括:将所述状态数据和与所述数据输入/输出操作相关联的物理到逻辑映射数据项即p2l映射数据项进行比较,并且其中所述方法进一步包括:根据所述数据输入/输出操作是否已经成功、基于所述p2l映射数据项来更新逻辑到物理映射数据项即l2p映射数据项。10.根据权利要求8所述的方法,其中所述确定所述数据输入/输出操作已经成功还是已经失败包括:当基于所述状态数据的成功或失败的第一确定的结果与基于所述响应的成功或失败的第二确定的结果不同时,向所述第一确定分配比所述第二确定更高的优先级。11.根据权利要求8所述的方法,其中所述多个存储器组之中的每个存储器组为页面,并且其中所述状态数据包括位图信息,所述位图信息指示所述页面是空白的或空的。12.根据权利要求8所述的方法,其中所述多个存储器组之中的每个存储器组为存储块,并且其中所述状态数据包括页面计数,所述页面计数指示数据项存储在所述存储块中的多少页面中。13.根据权利要求8所述的方法,进一步包括:在与所述命令相对应的所述数据输入/输出操作完成之后,所述存储器装置立即传输所述响应,并且当通过所述数据输入/输出操作更新了元数据时,所述存储器装置传输所述状态数据。14.根据权利要求8所述的方法,其中所述数据输入/输出操作包括针对所述多个存储器组的数据编程、数据擦除或数据读取,并且所述方法进一步包括更新与所述数据编程、所述数据擦除或所述数据读取相关联的所述状态数据。15.一种控制器,经由至少一个数据路径联接到存储器装置,所述存储器装置包括多个存储器组,每个存储器组包括多个非易失性存储器单元,其中所述控制器包括至少一个处理器和至少一个存储器,所述至少一个存储器包括计算机程序代码,其中利用所述至少一个处理器,所述至少一个存储器和所述计算机程序代码使所述控制器:在所述存储器装置中的至少一个存储器组内执行数据输入/输出操作;从所述存储器装置接收响应,所述响应包括所述数据输入/输出操作的结果;从所述存储器装置接收关于所述至少一个存储器组的状态数据;并且基于所述响应和所述状态数据来确定所述数据输入/输出操作已经成功还是已经失败。16.根据权利要求15所述的控制器,其中通过所述至少一个处理器和所述至少一个存储器,所述计算机程序代码使所述控制器通过将所述状态数据和与所述数据输入/输出操作相关联的物理到逻辑映射数据项即p2l映射数据项进行比较来确定所述数据输入/输出操作已经成功还是已经失败,并且
其中利用所述至少一个处理器,所述至少一个存储器和所述计算机程序代码进一步使所述控制器根据所述数据输入/输出操作是否已经成功、基于所述p2l映射数据项来更新逻辑到物理映射数据项即l2p映射数据项。17.根据权利要求15所述的控制器,其中利用所述至少一个处理器,所述至少一个存储器和所述计算机程序代码使所述控制器通过当基于所述状态数据的成功或失败的第一确定的结果与基于所述响应的成功或失败的第二确定的结果不同时,向所述第一确定分配比所述第二确定更高的优先级来确定所述数据输入/输出操作已经成功还是已经失败。18.根据权利要求15所述的控制器,其中所述多个存储器组之中的每个存储器组为页面,并且其中所述状态数据包括位图信息,所述位图信息指示所述页面是空的或空白的。19.根据权利要求15所述的控制器,其中所述多个存储器组之中的每个存储器组为存储块,并且其中所述状态数据包括页面计数,所述页面计数指示数据项存储在所述存储块的多少页面中。20.根据权利要求15所述的控制器,其中利用所述至少一个处理器,所述至少一个存储器和所述计算机程序代码进一步使所述控制器:在与所述命令相对应的所述数据输入/输出操作完成之后立即从所述存储器装置接收所述响应,并且当通过所述数据输入/输出操作更新了元数据时,从所述存储器装置接收所述状态数据。
技术总结
本发明涉及一种存储器系统。该存储器系统包括:存储器装置,包括多个存储器组,每个存储器组包括多个非易失性存储器单元;以及控制器,被配置为向存储器装置传输命令从而存储器装置在多个存储器组之中的至少一个存储器组内执行数据输入/输出操作,从存储器装置接收针对该命令的响应以及关于至少一个存储器组的状态数据,并且基于响应和状态数据来确定数据输入/输出操作已经成功还是已经失败。据输入/输出操作已经成功还是已经失败。据输入/输出操作已经成功还是已经失败。
技术研发人员:
金正爱 金志烈
受保护的技术使用者:
爱思开海力士有限公司
技术研发日:
2021.04.27
技术公布日:
2022/4/15