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

用于校正数据处理系统的数据传输中的错误的设备和方法与流程

2022-04-24 19:52:04 来源:中国专利 TAG:

用于校正数据处理系统的数据传输中的错误的设备和方法
1.相关申请的交叉引用
2.本技术要求于2020年10月5日提交的申请号为10-2020-0127939的韩国专利申请的权益,该韩国专利申请的全部公开内容通过引用并入本文。
技术领域
3.本文描述的一个或多个实施例涉及数据处理系统及控制数据处理系统的方法。


背景技术:

4.便携式电子装置(例如,移动电话、数码相机、笔记本电脑)的使用持续增长。这些装置可包括或使用具有至少一个数据存储装置的存储器系统,该数据存储装置可用作主存储装置或辅助存储装置。
5.与使用硬盘的存储装置相比,使用非易失性半导体存储器的数据存储装置表现出提高的稳定性和耐久性,没有机械驱动部件(例如,机械臂),并且表现出较高的数据访问速度和相对较低的功耗。使用非易失性半导体存储器的数据存储装置的示例包括但不限于通用串行总线(usb)存储器装置、具有各种接口的存储卡以及固态驱动器(ssd)。


技术实现要素:

6.根据一个或多个实施例,一种数据处理系统和用于操作数据处理系统的方法(数据处理系统包括诸如存储器系统和主机的组件和资源)能够基于组件和资源的使用来动态地分配用于执行数据通信的多个数据路径。
7.根据一个或多个实施例,提供了一种方法和设备,该方法和设备使用用于错误检测和错误校正的代码(例如,汉明码),使得即使在数据处理系统的主机和存储器系统之间的数据传输中发生错误(例如,位翻转),也可校正该错误以提高或增强存储器系统中存储的数据的可靠性。
8.根据一个或多个实施例,提供了一种方法和设备,该方法和设备使用用于错误检测和错误校正的代码(例如,汉明码),使得当临时存储在存储器系统的缓冲器中的数据项中发生错误(例如,位翻转)时,可校正该错误以提高或增强存储器装置中存储的数据的可靠性。
9.根据一个或多个实施例,提供了一种存储器系统和方法,用于确定相对于从外部装置(例如,主机)接收的数据项发生的错误的操作和/或位置。可在处置或处理数据项以在非易失性存储器装置中执行编程操作的同时进行该确定。基于通过这些操作获得的信息,存储器系统可补充数据处理进程以增加操作可靠性。
10.根据一个或多个实施例,一种方法和设备使用汉明码并且执行校验和(checksum)操作,以检测和校正在存储器系统中的临时存储期间以及在数据处理系统的主机与存储器系统之间的数据传输期间可能发生的多位错误。
11.根据实施例,一种数据处理系统可包括控制器,该控制器被配置成接收第一编码
数据项和写入请求,该第一编码数据项是基于汉明码进行编码的。控制器被进一步配置成将第一编码数据项存储在写入缓冲器中,基于汉明码对写入缓冲器中存储的第一编码数据项进行解码,以检测和校正第一编码数据项中的第一错误以获得第一错误校正数据项,基于错误校正码对第一错误校正数据项进行编码以生成第二编码数据项,并且传输第二编码数据项以将第二编码数据项编程到非易失性存储器装置中。
12.第一错误可包括在主机和控制器之间的数据通信中发生的错误以及在第一编码数据项被临时存储在写入缓冲器中时发生的错误。
13.控制器可被进一步配置成从主机接收读取请求,读取被编程在非易失性存储器装置中的第二编码数据项,基于错误校正码对该第二编码数据项进行解码以检测和校正第二编码数据项中的第二错误来获得第二错误校正数据项,基于汉明码对第二错误校正数据项进行编码以生成第一编码读取数据项,将该第一编码读取数据项存储在读取缓冲器中,并且将第一编码读取数据项作为对读取请求的响应传输到主机。
14.作为示例而非限制,第二错误可包括在非易失性存储器装置中发生的错误。错误校正码可包括汉明码。错误校正码可包括汉明码和校验和。
15.在另一实施例中,一种存储器系统可包括:存储器装置,包括非易失性存储器单元;以及控制器,包括易失性存储器装置,被配置成控制该存储器装置。控制器可被进一步配置成经由数据传输通道从联接到存储器系统的主机接收包括对应于数据项的第一错误校正奇偶校验的数据包,将该数据包存储在易失性存储器装置中,基于第一错误校正奇偶校验对该数据包进行解码以检测和校正数据包中的发生在数据传输通道中的第一错误以及数据包中的发生在易失性存储器装置中的第二错误。
16.控制器可根据预设协议经由数据传输通道执行与主机的数据通信。第一错误可包括在经由数据传输通道传输和接收数据包时在数据包中发生的位翻转。第二错误可包括通过易失性存储器装置的操作或结构生成的位翻转。可通过基于汉明码的编码过程来生成第一错误校正奇偶校验。
17.控制器可被进一步配置成基于错误校正码对校正了第一错误和第二错误的错误校正数据项进行编码,以生成第二错误校正奇偶校验,并且将包括第二错误校正奇偶校验的编码数据项传输到存储器装置。该错误校正码可包括汉明码。
18.控制器可被进一步配置成响应于从主机输入的读取请求来读取编码数据项,并且基于错误校正码来对该编码数据项进行解码,以检测和校正该编码数据项中包括的第三错误。第三错误可由存储器装置的操作或结构引起。
19.控制器可被进一步配置成对第三错误校正数据项进行编码以生成第一错误校正奇偶校验,该第三错误校正数据项是在响应于读取请求对编码数据项进行解码之后获得的,并且将该第三错误校正数据项连同第一错误校正奇偶校验一起传输到主机。
20.控制器可被进一步配置成对从主机输入的包括第一错误校正奇偶校验的数据包进行解码,以检测和校正该数据包中的第一错误,基于第一错误校正码对校正了第一错误的第一错误校正数据项进行编码以生成第二编码数据项,将第二编码数据项存储在易失性存储器装置的缓冲器中,并且对第二编码数据项进行解码以检测和校正第二编码数据项中的第二错误。
21.控制器可被进一步配置成基于第二错误校正码对第二错误校正数据项进行编码,
以将编码数据项传输到存储器装置。
22.控制器可被进一步配置成对从主机输入的包括第一错误校正奇偶校验的数据包进行解码,以检测和校正该数据包中的第一错误,基于第一错误校正码对校正了第一错误的第一错误校正数据项进行编码以生成包括数据项和奇偶校验项的第二编码数据项,并且将数据项和奇偶校验项分别传输到存储器装置。存储器装置可被配置成基于第一错误校正码对数据项和奇偶校验项进行解码,以检测和校正第二编码数据项中的第二错误,并且将数据项存储在非易失性存储器单元中。
23.存储器装置可包括被配置成存储数据项的数据缓冲器以及被配置成存储基于第一错误校正码生成的奇偶校验项的奇偶校验缓冲器。
24.在另一实施例中,一种用于操作存储器系统的方法可包括:经由数据传输通道从联接到存储器系统的主机接收包括对应于数据项的第一错误校正奇偶校验的数据包;将该数据包存储在易失性存储器装置中;并且基于第一错误校正奇偶校验对该数据包进行解码,以检测和校正在数据传输通道中发生的第一错误以及在易失性存储器装置中发生的第二错误。
25.控制器可根据预设协议经由数据传输通道执行与主机的数据通信。第一错误可包括在经由数据传输通道传输和接收数据包时在数据包中发生的位翻转。第二错误可包括通过易失性存储器装置的操作或结构生成的位翻转。
26.该方法可进一步包括:基于错误校正码对校正了第一错误和第二错误的错误校正数据项进行编码,以生成第二错误校正奇偶校验;并且将包括第二错误校正奇偶校验的编码数据项传输到存储器装置。
27.在另一实施例中,一种用于操作存储器系统的方法可包括:经由数据传输通道从联接到存储器系统的主机接收包括对应于数据项的第一错误校正奇偶校验的数据包;基于第一错误校正奇偶校验对该数据包进行解码,以检测和校正该数据包中的发生在数据传输通道中的第一错误;基于第一错误校正奇偶校验对通过解码校正了第一错误的第一错误校正数据项进行编码,以生成包括第二错误校正奇偶校验的第一编码数据项;将该第一编码数据项存储在易失性存储器装置中;并且基于第二错误校正奇偶校验对第一编码数据项进行解码,以检测和校正该数据包中的发生在易失性存储器装置中的第二错误。
28.该方法可进一步包括根据预设协议经由数据传输通道执行与主机的数据通信。第一错误可包括在经由数据传输通道传输和接收数据包时在数据包中发生的位翻转。第二错误可包括通过易失性存储器装置的操作或结构生成的位翻转。
29.该方法可进一步包括:基于错误校正码对校正了第一错误和第二错误的数据项进行编码,以生成第三错误校正奇偶校验;并且将包括第三错误校正奇偶校验的编码数据项传输到存储器装置。
附图说明
30.参照附图进行描述,其中在所有附图中,相同的附图标记指代相同的部件。
31.图1示出数据处理系统中的数据写入操作的示例。
32.图2示出数据处理系统中的数据读取操作的示例。
33.图3示出数据处理系统的实施例。
34.图4示出存储器系统的实施例。
35.图5示出数据处理系统中应用汉明码的实施例。
36.图6示出基于汉明码执行错误检测和校正的实施例。
37.图7示出数据处理系统中的数据写入操作的示例。
38.图8示出数据处理系统中的数据读取操作的示例。
39.图9示出数据处理系统中的数据写入操作的示例。
40.图10示出数据处理系统中的数据读取操作的示例。
41.图11示出数据处理系统中的数据写入操作的示例。
42.图12示出数据处理系统中的数据写入操作的示例。
具体实施方式
43.下面参照附图描述本公开的各个实施例。然而,本公开的元件和特征可被不同地配置或布置以形成其它实施例,其它实施例可以是任何所公开的实施例的变型。
44.术语“包括”、“包括有”、“包含”和“包含有”是开放式的。如所附权利要求书中所使用的,这些术语指定了存在所陈述的元件,并且不排除存在或添加一个或多个其它元件。权利要求书中的术语不排除该设备包括额外的组件(例如,接口单元、电路等)。
45.对“一个实施例”、“示例实施例”、“实施例”、“另一实施例”、“一些实施例”、“各个实施例”、“其它实施例”、“可选实施例”等中包括的各种特征(例如,元件、结构、模块、组件、步骤、操作、特性等)的引用旨在表示任何这样的特征都被包括在本公开的一个或多个实施例中,但是可以或可以不必在相同的实施例中进行组合。
46.各种单元、电路或其它组件可被描述或被要求保护为“被配置成”执行一个或多个任务。在这样的语境下,“被配置成”用于通过指示块/单元/电路/组件包括在操作期间执行一个或多个任务的结构(例如,电路)来暗示结构。这样,即使当所指定的块/单元/电路/组件当前未操作(例如,未接通也未启用)时,块/单元/电路/组件也可称为被配置成执行任务。与“被配置成”用语一起使用的块/单元/电路/组件包括硬件,例如电路、存储可运行以实施操作的程序指令的存储器等。另外,“被配置成”可包括通用结构(例如,通用电路),该通用结构由软件和/或固件(例如,fpga或运行软件的通用处理器)操纵,以能够执行所讨论的任务的方式进行操作。“被配置成”还可包括调整制造工艺(例如,半导体制造设施)以制造适于实施或执行一个或多个任务的装置(例如,集成电路)。
47.如在本公开中使用的,术语“电路”可指代以下的所有内容:(a)仅硬件电路实施方案(诸如仅以模拟和/或数字电路的实施方案);以及(b)电路与软件(和/或固件)的组合,诸如(如适用于):(i)处理器的组合或(ii)处理器/软件(包括一起工作以使诸如移动电话或服务器的设备执行各种功能的数字信号处理器、软件和存储器)的部分;以及(c)需要软件或固件来进行操作的电路,诸如微处理器或微处理器的一部分,即使该软件或固件并非物理地存在。“电路”的这种定义适用于在本技术中、包括在任意权利要求中该术语的所有使用。作为进一步的示例,如在本技术中所使用的,术语“电路”还覆盖仅处理器(或多个处理器)或处理器的部分及其(或它们的)附带软件和/或固件的实施方案。例如并且如果适用于特定的权利要求元素,术语“电路”还覆盖用于存储装置的集成电路。
48.如本文所使用的,术语“第一”、“第二”、“第三”等被用作它们后面的名词的标签,
并且不暗示任何类型的排序(例如,空间、时间、逻辑等上的排序)。术语“第一”和“第二”不一定暗示第一值必须写在第二值之前。进一步地,尽管这些术语在本文中可用来标识各个元件,但是这些元件不受这些术语的限制。这些术语用于将一个元件与否则具有相同或相似名称的另一元件区分开。例如,可将第一电路与第二电路区分开。
49.进一步地,术语“基于”用于描述影响确定的一个或多个因素。该术语不排除可能影响确定的其它因素。也就是说,确定可仅基于那些因素,或者至少部分地基于那些因素。考虑短语“基于b来确定a”。虽然在这种情况下,b是影响a的确定的因素,但是这种短语并不排除也基于c来确定a。在其它情况下,可仅基于b来确定a。
50.本文中,数据的项或数据项可以是位序列。例如,数据项可包括文件的内容、文件的部分、存储器中的页面、面向对象程序中的对象、数字消息、数字扫描图像、视频或音频信号的部分、或者可由位序列表示的任何其它实体。根据实施例,数据项可包括离散对象。根据另一实施例,数据项可包括两个不同组件之间的传输包内的信息单元。
51.现在将参照附图描述本公开的实施例,其中相同的附图标记表示相同的元件。
52.图1示出根据实施例的在数据处理系统100中执行的数据写入操作的示例。
53.参照图1,数据处理系统100可包括存储器系统110和主机102。根据实施例,主机102可以是执行对应于用户的请求的一个或多个操作的装置。存储器系统110可临时地和/或永久地存储例如在主机102运行时生成的数据或信息。存储器系统110和主机102可彼此联接,来以预设方式(例如,基于预定协议)传输和接收数据项、信号、命令、请求和/或其它信息。
54.存储器系统110可包括控制器130和存储器装置150。将参照图3至图4描述存储器系统110的内部配置的示例。
55.主机102可包括错误校正码(ecc)电路104,该错误校正码电路104使用预定代码(例如,汉明码)来对待传输到存储器系统110的数据项进行编码。然后,主机102可将编码数据项(encoded data item)传输到存储器系统110。在一个实施例中,该编码数据项可包括数据项data和奇偶校验项parity1,因此可被表示为data parity1。
56.汉明码是一种自校正机制,其可检测和校正数据项中发生的1位错误。该1位错误的示例是位翻转,但是在另一实施例中可检测和校正不同类型的错误。
57.根据使用汉明码的一个方法实施例,编码数据项data parity1的第1、第2、第4、第8、
……
、第2n位可用作用于错误检测和校正的奇偶校验项。例如,将参照图5描述出于编码目的而使用汉明码的方法的示例。
58.在从主机102接收到编码数据项data parity1之后,存储器系统110可将该编码数据项临时存储在缓冲器192中。缓冲器192可对应于例如图2和图3所示的控制器130中包括的或由该控制器130控制的易失性存储器装置(例如,存储器144)中的分配区域。例如,缓冲器192可包括用于存储写入数据项的写入缓冲器以及用于存储读取数据项的读取缓冲器。参照图3至图4所示的存储器144来描述控制器130中的或由控制器130控制的易失性存储器装置的示例。
59.控制器130可包括错误校正电路138,并且可加载临时存储在缓冲器192中的编码数据项data parity1,并且基于汉明码对该编码数据项data parity1执行解码操作。通过解码操作,错误校正电路138可检测和校正主机102与存储器系统110之间的数据通信中的
第一错误和/或缓冲器192中可能发生的第二错误。进一步地,错误校正电路138可使用错误校正码(ecc)来对校正了第一错误和/或第二错误的校正数据项进行编码,然后将编码数据项data parity2传送到存储器装置150。
60.根据实施例,主机102中的错误校正码(ecc)电路104以及控制器130中的错误校正电路138可使用相同的错误校正码或错误校正技术。在这种情况下,可简化存储器系统110中的错误校正电路138的设计和配置。
61.根据实施例,主机102中的错误校正码(ecc)电路104以及控制器130中的错误校正电路138可使用不同的错误校正码或错误校正技术。例如,主机102中的错误校正码(ecc)电路104可仅使用汉明码,并且存储器系统110中的错误校正电路138可对数据项执行循环冗余校验(crc)。
62.可根据预设协议通过至少一条数据传输线来执行主机102与存储器系统110之间的数据通信。在经由该至少一条数据传输线传输/接收数据项的过程中可能发生数据项中的第一错误(例如,位翻转)。例如,第一错误可能是由经由数据传输线传输的信号之间的干扰、供应到主机102和存储器系统110的电力和/或用于在主机102与存储器系统110之间传输和接收数据项的设备执行的操作所引起的。
63.在一个实施例中,缓冲器192可以是在易失性存储器装置中分配的区域。易失性存储器装置的示例包括sram和dram。在易失性存储器装置中,多个存储器单元可被高度集成,并且可实现较高的操作速度。由于易失性存储器装置的结构或操作特性,在缓冲器192中存储的数据项的至少一些中可能发生位错误或位翻转。
64.在图1所示的数据处理系统100中,主机102可基于汉明码对数据项data进行编码,并且将编码数据项data parity1传输到存储器系统110。在将数据项data传输到存储器装置150之前,控制器130可通过基于汉明码的解码操作来检查数据项中是否存在错误。可通过基于汉明码的单次解码操作来发现和校正第一错误和/或第二错误,可将这认为是自校正机制。在一些情况下,在将从主机102传输的数据项data存储在存储器系统110中的存储器装置150(包括非易失性存储器单元)的进程中可能发生各种错误。在一个实施例中,可通过单次解码操作来检测和校正这些各种错误。因此,可有效地改善数据处理系统100的数据输入/输出操作,从而可提高或增强存储器装置150中存储的数据项的可靠性。
65.根据实施例,当错误校正电路138使用汉明码或另一错误校正码来对数据项data进行编码时,控制器130可向存储器装置150传输另一编码数据项data parity2。当存储器装置150内存在能够基于汉明码(或相应的错误校正码)对所接收的数据项进行解码的电路时,可检测和校正控制器130与存储器装置150之间的数据通信中可能发生的错误。
66.图2示出根据实施例的可在数据处理系统100中执行的数据读取操作的示例。如参照图1所述,编码数据项data parity2可存储在存储器装置150中。进一步地,控制器130可响应于从主机102输入的读取请求来读取存储器装置150中存储的数据项。
67.参照图2,主机102可将逻辑地址连同读取请求一起传输到存储器系统110。在一些情况下,主机102和存储器系统110可具有不同的地址方案。在这种情况下,为了将外部装置(例如,图2至图3中的主机102)所请求的数据存储在存储器装置150(例如,包括非易失性存储器单元的存储空间)中,存储器系统110可执行主机102所使用的文件系统与包括非易失性存储器单元的存储空间的物理位置之间的地址转换。
68.例如,根据主机102所使用的文件系统确定的数据地址可被称为逻辑地址或逻辑块地址。存储空间中存储数据的物理位置的地址可被称为物理地址或物理块地址。当主机102将逻辑地址与读取请求一起传送到存储器系统110时,存储器系统110可搜索与该逻辑地址相关联的物理地址,读取由该物理地址识别的位置中存储的数据,并且将读取数据输出到主机102。在此进程期间,可在存储器系统110中执行地址转换,以搜索与从主机102输入的逻辑地址相关联的物理地址。
69.控制器130可响应于从诸如主机102的外部装置输入的请求而执行数据输入/输出操作。例如,当控制器130响应于从外部装置输入的读取请求而执行读取操作时,存储器装置150中的多个非易失性存储器单元中存储的数据被传送到控制器130。对于读取操作,存储器系统110可对从外部装置输入的逻辑地址执行地址转换以获得物理地址,然后可向对应于该物理地址的存储器装置150传输读取命令以访问和读取该存储器装置150中存储的数据项。
70.进一步地,存储器系统110可将从外部装置连同写入请求一起输入的数据项传输到存储器装置150。在将数据项存储在存储器装置150中之后,存储器系统110可向外部装置传输对应于写入请求的响应。存储器系统110可更新将物理地址(该物理地址指示数据项在存储器装置150中的存储位置)与连同写入请求一起输入的逻辑地址相关联的映射数据。
71.如图2所示,存储器装置150可包括多个存储块60。在一个实施例中,存储块60可被理解为包括一组非易失性存储器单元,在该组非易失性存储器单元中,数据通过单次擦除操作一起被移除。存储块60可包括页面,根据一个实施例,页面可对应于在单次编程操作期间一起存储数据或者在单次读取操作期间一起输出数据的一组非易失性存储器单元。一个存储块可包括例如多个页面。
72.存储器装置150可包括多个存储器平面或多个存储器管芯。根据实施例,存储器平面可以是逻辑或物理分区,该分区包括至少一个存储块、能够控制包括多个非易失性存储器单元的阵列的驱动电路、以及/或者临时存储输入到非易失性存储器单元或从非易失性存储器单元输出的数据的缓冲器。
73.根据实施例,每个存储器管芯可包括至少一个存储器平面。存储器管芯可被理解为例如在物理上可区分的衬底上实施的一组组件。每个存储器管芯可通过数据路径连接到控制器130,并且可包括与控制器130交换数据项和信号的接口。
74.根据实施例,存储器装置150可包括至少一个存储块60、至少一个存储器平面和/或至少一个存储器管芯。图2示出存储器装置150的内部配置的实施例。在另一实施例中,例如,根据存储器系统110的性能,存储器装置150可具有不同的内部配置。
75.再次参照图2,存储器装置150可包括能够向存储块供应一个或多个电压的电压供应电路70。在一个实施例中,电压供应电路70可向存储块中的非易失性存储器单元供应读取电压vrd、编程电压vprog、通过电压vpass和/或擦除电压vers。例如,在读取操作期间,电压供应电路70可向所选择的非易失性存储器单元供应读取电压vrd,以读取该存储器单元中存储的数据。在编程操作期间,电压供应电路70可向所选择的非易失性存储器单元供应编程电压vprog,以将数据存储在该存储器单元中。在对所选择的非易失性存储器单元执行的读取操作或编程操作期间,电压供应电路70可向未选择的非易失性存储器单元供应通过电压vpass。在擦除操作期间,电压供应电路70可供应擦除电压vers来擦除存储块中的非易
失性存储器单元中存储的数据。
76.存储器装置150可存储关于基于执行哪个操作而供应到存储块60的各种电压的信息。例如,当存储块中的非易失性存储器单元可存储多位数据时,可使用用于识别或读取多位数据的多个电平的读取电压vrd。存储器装置150可包括表,该表包括与对应于多位数据的读取电压vrd的多个电平相对应的信息。该表可包括例如寄存器中存储的一个或多个偏压值,其中每个偏压值对应于读取电压vrd的特定电平。在一些情况下,可将读取电压vrd的偏压值的数量限制在预设范围内。而且,在一个实施例中,可将偏压值进行量化。
77.存储器装置150可响应于从主机102传输的读取请求,将(存储在存储块60中的)编码数据项data parity2传输到控制器130。控制器130中的错误校正电路138可对编码数据项data parity2进行解码,以检测和校正在以下示例情况的一个或多个中发生的错误:控制器130与存储器装置150之间的传输和接收、将编码数据项data parity2编程到存储器装置150的特定存储块60中的操作、或被存储在相应存储块60中的非易失性存储器单元中时的阈值电压的变化。例如,上述错误可包括通过存储器装置150的操作或结构生成的位翻转。
78.在检测和校正上述错误中的各种错误之后,错误校正电路138可使用预定代码(例如,汉明码)来对错误校正数据项(error-corrected data item)进行编码。基于汉明码编码的错误校正数据项data parity1可在被传输到主机102之前被临时存储在缓冲器192中。然后,可将错误校正数据项data parity1传输到主机102。根据实施例,当错误校正电路138未通过解码过程来检测和校正编码数据项data parity2中发生的错误时,控制器130可执行读取回收操作或另一操作。
79.根据实施例,图1所示的缓冲器192可包括输入缓冲器,并且图2所示的缓冲器192可包括输出缓冲器。缓冲器192根据其预期目的可具有各种形式或者可被划分成多个区域。参照图3和图4的存储器144描述缓冲器192的示例。
80.主机102可响应于读取请求而接收数据项data parity1(该数据项由存储器系统110使用汉明码进行编码)。主机102中的错误校正码(ecc)电路104可基于汉明码对数据项data parity1执行解码操作,以检测和校正在主机102与存储器系统110之间的数据通信中可能已发生的错误。
81.在图2中,控制器130可对从存储器装置150传输的编码数据项data parity2进行解码,以检测和校正数据项data中的错误,基于汉明码对数据项data进行编码,并且将编码数据项data parity1存储在缓冲器192中。在这种情况下,当检测到数据项data中的错误但可能未被校正时,控制器130可以更快的速率执行修复或恢复存储器装置150中存储的数据项data的操作。可使用各种方法或算法来修复或恢复数据项data。然而,当由于缓冲器192的结构或操作而发生错误时,在响应于读取请求而将数据项data传输到主机102之前,可能不会检测和校正该错误。
82.根据实施例,控制器130可被配置成首先将(从存储器装置150传输的)编码数据项data parity2存储在缓冲器192中。在将该数据项传输到主机102之前,错误校正电路138可对该编码数据项data parity2进行解码,以便检测和校正错误,并且基于汉明码对错误校正的数据项进行编码,以生成编码数据项data parity1。在该实施例中,在将编码数据项data parity1传输到主机102之前,存储器系统110可检测和校正在缓冲器192的结构或操
作中发生的错误。然而,在一些情况下,如果存在从存储器装置150输出的编码数据项data parity2中发生的错误,则可能延迟对相应错误的检测和校正。
83.图3和图4示出根据一个或多个实施例的可由存储器系统110执行的操作。
84.参照图3,数据处理系统100可包括与诸如存储器系统110的存储器系统接合或联接的主机102。主机102可包括便携式电子装置(例如,移动电话、mp3播放器、膝上型计算机等)或非便携式电子装置(例如,台式计算机、游戏机、电视、投影仪等)。
85.主机102还可包括可控制在主机102中执行的功能和操作的至少一个操作系统(os)。在一个实施例中,os可提供(可操作地与存储器系统110接合的)主机102和意在将数据存储在存储器系统110中的用户之间的互操作性。os可支持与用户请求相对应的功能和操作。
86.作为示例而非限制,根据主机102的移动性,os可被分类为通用操作系统和移动操作系统。根据系统要求或用户环境,通用操作系统可被分为个人操作系统和企业操作系统。与个人操作系统相比,企业操作系统可专门用于保护和支持高性能计算。
87.移动操作系统可用于支持针对移动性的服务或功能(例如,省电功能)。主机102可包括多个操作系统。对应于用户请求,主机102可运行与存储器系统110互锁的多个操作系统。主机102可将与用户请求相对应的多个命令传输到存储器系统110,从而在存储器系统110内执行与命令相对应的操作。
88.存储器系统110中的控制器130可响应于来自主机102的请求或命令来控制存储器装置150。例如,控制器130可执行读取操作以向主机102提供从存储器装置150读取的数据项,并且可执行写入操作(或编程操作)以将从主机102输入的数据项存储在存储器装置150中。为了执行数据输入/输出(i/o)操作,控制器130可控制和管理一个或多个预定的内部操作,例如,数据读取、数据编程、数据擦除或其它操作。
89.根据实施例,控制器130可包括主机接口132、处理器134、错误校正电路138、电源管理单元(pmu)140、存储器接口142和存储器144。如图3所示的控制器130中的组件可基于例如关于存储器系统110的结构、功能、操作性能等在实施例之间变化。例如,根据主机接口的协议,存储器系统110可利用与主机102电联接的各种类型的存储装置来实施。合适的存储装置的非限制性示例包括固态驱动器(ssd)、多媒体卡(mmc)、嵌入式mmc(emmc)、缩小尺寸的mmc(rs-mmc)、微型mmc、安全数字(sd)卡、迷你sd、微型sd、通用串行总线(usb)存储装置、通用闪存(ufs)装置、紧凑式闪存(cf)卡、智能媒体(sm)卡、记忆棒等。基于存储器系统110的实施方案,可添加或省略控制器130中的组件。
90.主机102和存储器系统110可包括用于根据一个或多个预定协议传输和接收信号、数据项和/或其它信息的控制器或接口。例如,存储器系统110中的主机接口132可包括能够向主机102传输信号、数据项和/或其它信息或者从主机102接收信号、数据项和/或其它信息的设备。
91.控制器130中的(或联接到控制器130的)主机接口132可从主机102接收信号、命令(或请求)、数据项和/或其它信息。例如,主机102和存储器系统110可使用预定的协议在彼此之间传输和接收数据项。可由主机102和/或存储器系统110支持以用于发送和接收上述类型的信息中的一个或多个的协议或接口的示例包括:通用串行总线(usb)、多媒体卡(mmc)、并行高级技术附件(pata)、小型计算机系统接口(scsi)、增强型小型磁盘接口
(esdi)、电子集成驱动器(ide)、高速外围组件互连(pcie)、串列scsi(sas)、串行高级技术附件(sata)和移动工业处理器接口(mipi)。根据实施例,主机接口132可以是一种用于与主机102交换数据项的层,并且可利用指令实施或由指令驱动,该指令包括但不限于对应于主机接口层(hil)的固件。
92.电子集成驱动器(ide)或高级技术附件(ata)可用作例如用于传输和接收数据项的接口中的至少一种。在一种示例情况下,接口可使用包括40根并行连接的导线的电缆来支持主机102与存储器系统110之间的数据传输和接收。当多个存储器系统110连接到单个主机102时,例如,可基于多个存储器系统110所连接到的位置或拨码开关(dip switch)将多个存储器系统110划分成主设备和从设备。在一个实施例中,被设置为主设备的存储器系统110可被用作主存储器装置。ide(ata)可包括,例如,fast-ata、atapi和增强型ide(eide)。
93.串行高级技术附件(sata)是一种与支持电子集成驱动器(ide)装置所使用的并行数据通信接口的各种ata标准兼容的串行数据通信接口。在sata接口中,可将ide接口中使用的较大数量的导线(例如,40根导线)减少到较小数量的导线,例如,6根导线。在这种情况下,例如,可将ide的40个并行信号转换为sata的6个串行信号,以便在彼此之间进行传输。当用于数据传输和接收时,因为sata可实现更快的数据传输和接收速率并且可消耗主机102中更少的资源,所以sata已被广泛使用。
94.在一个实施方案中,sata可支持多达30个外部装置连接到主机102中的单个收发器。另外,sata可支持热插拔,这允许即使在主机102与另一装置之间正执行数据通信时,外部装置也可附接到主机102或从主机102拆卸。因此,即使当主机102通电时,存储器系统110也可作为附加装置(例如,类似于由通用串行总线(usb)支持的装置)被连接或断开。在一个示例中,当主机102实施有esata端口时,存储器系统110可如外部硬盘一样自由拆卸。
95.小型计算机系统接口(scsi)是一种可用于计算机、服务器和/或其它外围装置之间或之中的连接的串行数据通信接口。与诸如ide和sata的其它接口相比,scsi可提供相对较高的传输速度。在scsi中,主机102和至少一个外围装置(例如,存储器系统110)可串联连接,但是可通过并行数据通信来执行主机102与每个外围装置之间的数据传输和接收。在scsi中,可以容易地将装置(诸如存储器系统110)连接到主机102或从主机102断开。而且,在一些实施方案中,scsi可支持15个其它装置连接到主机102的单个收发器。
96.串列scsi(sas)可理解为scsi的串行数据通信版本。在sas中,不仅主机102和多个外围装置串联连接,而且也可以以串行数据通信方案来执行主机102与每个外围装置之间的数据传输和接收。sas可通过串行电缆而非并行电缆来支持主机102与外围装置之间的连接,可使用sas来容易地管理设备,并且可增强或提高操作可靠性和通信性能。在一个实施方案中,sas可支持8个外部装置连接到主机102的单个收发器。
97.高速非易失性存储器(nvme)是一种至少基于被设计为增加配备有非易失性存储器系统的主机、服务器、计算装置等的性能和设计灵活性的高速外围组件互连(pcie)的接口。例如,pcie可使用插槽或特定电缆来连接主机102(例如,计算装置)和存储器系统110(例如,外围装置)。在一种情况下,pcie可使用多个引脚(例如,18个引脚、32个引脚、49个引脚、82个引脚等)和至少一根导线(例如x1、x4、x8、x16等)来实现高速数据通信(例如,250mb/s、500mb/s、984.6250mb/s、1969mb/s等)。根据实施例,pcie方案可实现每秒数十到
数百千兆位(giga bits)的带宽。此外,使用nvme的系统可充分利用以高于硬盘的速度操作的非易失性存储器系统110(例如,ssd)的操作速度。
98.根据实施例,主机102和存储器系统110可通过通用串行总线(usb)连接。通用串行总线(usb)是一种可扩展的、可热插拔的即插即用串行接口,其可在主机102与诸如键盘、鼠标、操纵杆、打印机、扫描仪、存储装置、调制解调器、摄像机等的外围装置之间提供经济高效的标准连接。诸如存储器系统110的多个外围装置可联接到主机102中的单个收发器。
99.参照图3,错误校正电路138可校正待在存储器装置150中处理(例如,从存储器装置150输出)的数据的错误位,错误校正电路138可包括错误校正码(ecc)编码器和ecc解码器。ecc编码器可对待编程到存储器装置150中的数据执行错误校正编码,并且可生成可添加一个或多个奇偶校验位的编码数据。
100.在一个实施例中,然后,可将编码数据存储在存储器装置150中。当控制器130读取存储器装置150中存储的数据时,ecc解码器可检测和校正从存储器装置150读取的数据中的错误。例如,在对从存储器装置150读取的数据执行错误校正解码之后,错误校正电路138可确定错误校正解码是否已成功,然后可输出指示信号(例如,校正成功信号或校正失败信号)。错误校正电路138可使用在ecc编码过程期间生成的奇偶校验位来校正读取数据的错误位。当错误位的数量大于或等于可校正错误位的阈值数量时,错误校正电路138可不校正错误位,而是可输出指示校正错误位失败的错误校正失败信号。
101.根据实施例,错误校正电路138可基于编码调制的类型来执行错误校正操作。可用于执行编码调制的代码的示例包括:低密度奇偶校验(ldpc)码、博斯-查德胡里-霍昆格姆(bch)码、涡轮码、里德-所罗门(rs)码、卷积码、递归系统码(rsc)、网格编码调制(tcm)、分组编码调制(bcm)或其它代码。错误校正电路138可包括用于基于上述代码中的至少一个执行错误校正操作的所有电路、模块、系统和/或装置。
102.例如,ecc解码器可对从存储器装置150传输的数据执行硬判决解码或软判决解码。硬判决解码可理解为针对错误校正而广泛分类的两种方法中的一种。硬判决解码可包括通过从存储器装置150中的非易失性存储器单元读取数字数据“0”或“1”来校正错误的操作。因为硬判决解码处置二进制逻辑信号,所以在一些情况下,与软判决解码相比,电路/算法设计或配置可能更简单,并且处理速度可能更快。
103.软判决解码可将存储器装置150中的非易失性存储器单元的阈值电压量化成两个或更多个量化值(例如,多位数据、近似值、模拟值等),以便基于该两个或更多个量化值来校正错误。控制器130可从存储器装置150中的多个非易失性存储器单元接收两个或更多个字母或量化值,然后基于通过将量化值表征为诸如条件概率或似然性的信息的组合而生成的信息来执行解码。
104.根据实施例,在针对软判决解码设计的方法之中,ecc解码器可使用低密度奇偶校验和生成器矩阵(ldpc-gm)码。低密度奇偶校验(ldpc)码使用一种算法,该算法可根据可靠性从存储器装置150中读取若干位的数据的值(不像硬判决解码那样简单地读取数据1或0),并且通过消息交换迭代地重复读取,以便提高值的可靠性。然后,将值最终确定为数据1或0。
105.例如,使用ldpc码的解码算法可理解为概率解码。在硬判决解码中,将从非易失性存储器单元输出的值编码为0或1。与硬判决解码相比,软判决解码可基于随机信息来确定
非易失性存储器单元中存储的值。关于位翻转(其可被认为是可能在存储器装置150中发生的错误),软判决解码可提供提高的校正错误和恢复数据的概率,以及提供校正后的数据的可靠性和稳定性。ldpc-gm码可具有内部ldgm码可与高速ldpc码串行级联的方案。
106.根据实施例,ecc解码器可使用例如低密度奇偶校验卷积码(ldpc-cc)进行软判决解码。ldpc-cc可具有基于可变块长度和移位寄存器来使用线性时间编码和流水线解码的方案。
107.根据实施例,ecc解码器可使用例如对数似然比涡轮码(llr-tc)进行软判决解码。对数似然比(llr)可被计算为采样值和理想值之间的距离的非线性函数。另外,涡轮码(tc)可包括二维或三维的简单码(例如,汉明码),并且在行方向和列方向上重复解码以提高值的可靠性。
108.电源管理单元(pmu)140可控制在控制器130中提供的/提供到控制器130的电力。pmu 140可监测供应到存储器系统110的电力(例如,供应到控制器130的电压),并且可向控制器130中的组件提供电力。pmu 140不仅可检测通电或断电,而且可在供应到存储器系统110的电力不稳定或以其他方式偏离预定电平或模式时,生成触发信号以使存储器系统110能够紧急备份当前状态。根据实施例,pmu 140可包括能够积蓄可在紧急情况下或在其它预定时间或条件下使用的电力的装置或组件。
109.存储器接口142可用作用于处置在控制器130与存储器装置150之间传输的命令和数据的接口,以便允许控制器130响应于来自主机102的命令或请求来控制存储器装置150。例如,当存储器装置150是闪速存储器时,存储器接口142可在处理器134的控制下生成对存储器装置150的控制信号,并且可处理输入到存储器装置150或从存储器装置150输出的数据。
110.例如,当存储器装置150包括nand闪速存储器时,存储器接口142可包括nand闪存控制器(nfc)。存储器接口142可用作用于处置控制器130与存储器装置150之间的命令和数据的接口。根据实施例,存储器接口142可通过包括但不限于固件的指令来实施或由该指令驱动,该固件包括用于与存储器装置150交换数据的闪存接口层(fil)。
111.根据实施例,对于与存储器装置150的数据输入/输出,存储器接口142可支持开放式nand闪存接口(onfi)、切换模式等。例如,onfi可使用包括能够支持以n位数据为单位的双向传输和接收的至少一条信号线的数据路径(例如,通道、通路等),其中,n为8、16或其它数字。控制器130与存储器装置150之间的数据通信可通过关于例如异步单倍数据速率(sdr)、同步双倍数据速率(ddr)或切换双倍数据速率(ddr)的至少一个接口来实现。
112.存储器144可以是存储器系统110或控制器130中的一种工作存储器,并且可存储为存储器系统110和控制器130中的操作而出现或传递的临时数据或事务数据。例如,在响应于来自主机102的请求而从存储器装置150输出的读取数据被输出到主机102之前,存储器144可临时存储该读取数据。另外,在将从主机102输入的写入数据编程到存储器装置150中之前,控制器130可将该写入数据临时存储在存储器144中。当控制器130控制存储器装置150的操作(诸如数据读取、数据写入、数据编程、数据擦除等)时,在存储器系统110的控制器130和存储器装置150之间传输或生成的数据项可存储在存储器144中。
113.除了读取数据或写入数据之外,存储器144可存储用于在主机102与存储器装置150之间输入或输出数据的信息(例如,映射数据、读取请求、编程请求等)。根据实施例,存
储器144可包括针对命令队列、程序存储器、数据存储器、图1所示的写入缓冲器/高速缓存、图2所示的读取缓冲器/高速缓存、数据缓冲器/高速缓存、映射缓冲器/高速缓存等分配的多个区域。控制器130可在存储器144中针对被建立来实施数据输入/输出操作的组件分配一些存储空间。例如,存储器144中的写入缓冲器可用于临时存储要进行编程操作的目标数据。
114.在实施例中,存储器144可利用易失性存储器来实施。示例包括静态随机存取存储器(sram)、动态随机存取存储器(dram)或两者。虽然图3示出存储器144处于控制器130内的示例,但实施例不限于此。在各个实施例之中,存储器144可位于控制器130内部或外部。例如,存储器144可由具有在存储器144与控制器130之间传送数据和/或信号的存储器接口的外部易失性存储器实现。
115.处理器134可控制存储器系统110的全部操作。例如,处理器134可响应于来自主机102的写入请求或读取请求来控制存储器装置150的编程操作或读取操作。根据实施例,处理器134可运行固件以控制存储器系统110中的编程操作或读取操作。在一个实施例中,固件可对应于闪存转换层(ftl)。参照图4描述ftl的示例。根据实施例,处理器134可利用微处理器或中央处理单元(cpu)来实施。
116.根据实施例,存储器系统110可实施有至少一个多核处理器。多核处理器可以是一种包括作为不同处理区域进行操作的两个或更多个集成内核的电路或芯片。例如,当多核处理器中的多个内核独立驱动或运行多个闪存转换层(ftl)时,可提高存储器系统110的数据输入/输出速度(或性能)。根据实施例,可通过多核处理器中的不同内核独立地执行存储器系统110中的数据输入/输出(i/o)操作。
117.在一个实施例中,控制器130中的处理器134可执行与来自主机102的请求或命令相对应的操作。在一个实施例中,存储器系统110可独立于从诸如主机102的外部装置输入的命令或请求。控制器130响应于来自主机102的请求或命令而执行的操作可被认为是前台操作,而控制器130独立地(例如,不考虑来自主机102的请求或命令)执行的操作可被认为是后台操作。控制器130可执行用于对存储器装置150中的数据项的读取、写入或编程、擦除等的前台操作或后台操作。
118.前台操作可包括例如对应于从主机102传输的设置命令的参数设置操作。该设置命令的示例包括设置参数命令或设置特征命令。可根据或不根据从主机102传输的命令来执行后台操作。可由控制器130执行的后台操作的示例包括但不限于垃圾收集(gc)、损耗均衡(wl)、用于识别和处理坏块的坏块管理等。可执行例如关于存储器装置150中的多个存储块152、154、156的后台操作。
119.可能存在变型。根据实施例,可作为前台操作和后台操作两者来执行基本类似的操作。例如,当存储器系统110响应于来自主机102的请求或命令而执行垃圾收集(例如,手动gc)时,垃圾收集可被认为是前台操作。当存储器系统110独立于主机102执行垃圾收集(例如,自动gc)时,垃圾收集可被认为是后台操作。
120.当存储器装置150包括具有非易失性存储器单元的多个管芯或芯片时,控制器130可被配置成执行关于来自主机102的多个请求或命令的并行处理,以便提高存储器系统110的性能。例如,可在存储器装置150中的多个平面、多个管芯或多个芯片中的至少一些内对所传输的请求或命令进行划分和并行处理。控制器130中的存储器接口142可例如通过至少
一个通道和至少一个通路连接到存储器装置150中的多个平面、管芯或芯片。当控制器130响应于与非易失性存储器单元的多个页面相关联的请求或命令,(例如,通过相应通道或通路)将数据分布和存储在多个管芯中时,可单独地或并行地执行对应于请求或命令的多个操作。这种处理方法或方案可被认为是交错方法。因为以交错方法操作的存储器系统110的数据输入/输出速度可比由其它方法实施的更快,所以可提高存储器系统110的数据输入/输出性能。
121.作为示例而非限制,控制器130可识别关于与存储器装置150中的多个存储器管芯相关联的多个通道(或通路)的状态。控制器130可将每个通道或每个通路的状态确定为例如忙碌状态、就绪状态、活动状态、空闲状态、正常状态和/或异常状态中的一种。控制器对通过哪个通道或通路来传递指令(和/或数据)的确定可与物理块地址相关联,例如与指令(和/或数据)被传递到哪个(哪些)管芯中相关联。在这方面,控制器130可参考从存储器装置150传递的描述符。描述符可包括描述存储器装置150的一个或多个特征的参数的块或页面,例如,这些特征可指示数据的设定格式或结构。例如,描述符可包括装置描述符、配置描述符、单元描述符等。控制器130可参考或使用描述符来确定通过哪个(哪些)通道或通路来交换指令或数据。
122.参照图3,存储器系统110中的存储器装置150可包括多个存储块152、154、156。多个存储块152、154、156中的每一个包括多个非易失性存储器单元。根据实施例,存储块152、154、156可以是被一起擦除的一组非易失性存储器单元。存储块152、154、156可包括多个页面,这些页面对应于可被一起读取或被一起编程的一组或多组非易失性存储器单元。在一个实施例中,每个存储块152、154、156可具有用于实现高集成度的三维堆叠结构。进一步地,存储器装置150可包括多个管芯,每个管芯包括多个平面,并且每个平面包括多个存储块152、154、156。存储器装置150的配置可例如基于存储器系统110的特征和/或期望的性能水平而在实施例之间变化。
123.在图3的示例中,多个存储块152、154、156处于存储器装置150中。根据可在一个存储器单元中存储或表示的位的数量,多个存储块152、154、156可以是单层单元(slc)存储块、多层单元(mlc单元)存储块等中的任意一种。slc存储块包括由每个存储一位数据的存储器单元实施的多个页面。slc存储块可具有高数据i/o操作性能和高耐久性。mlc存储块包括由每个存储多位(例如,两位或更多位)数据的存储器单元实施的多个页面。与slc存储块相比,mlc存储块对于相同的空间可具有更大的存储容量,并且可在存储容量方面高度集成。
124.在实施例中,存储器装置150可利用mlc存储块来实施。示例包括双层单元(dlc)存储块、三层单元(tlc)存储块、四层单元(qlc)存储块及其组合。双层单元(dlc)存储块可包括由每个能够存储2位数据的存储器单元实施的多个页面。三层单元(tlc)存储块可包括由每个能够存储3位数据的存储器单元实施的多个页面。四层单元(qlc)存储块可包括由每个能够存储4位数据的存储器单元实施的多个页面。在一个实施例中,存储器装置150可利用包括多个页面的块来实施,该多个页面由每个能够存储五位或更多位数据的存储器单元实施。
125.根据实施例,控制器130可将存储器装置150中的多层单元(mlc)存储块用作在一个存储器单元中存储一位数据的slc存储块。多层单元(mlc)存储块的数据输入/输出速度
可不同于(例如,慢于)slc存储块的数据输入/输出速度。例如,当将mlc存储块用作slc存储块时,可减小读取操作或编程操作的裕量。当将多层单元(mlc)存储块用作slc存储块时,控制器130可利用多层单元(mlc)存储块的更快的数据输入/输出速度。例如,控制器130可将mlc存储块用作缓冲器来临时存储数据项,因为该缓冲器可能需要较高的数据输入/输出速度来提高存储器系统110的性能。
126.进一步地,根据实施例,控制器130可在不对存储器装置150中的特定mlc存储块执行擦除操作的情况下,多次将数据编程到多层单元(mlc)中。非易失性存储器单元不支持数据重写。然而,控制器130可使用多层单元(mlc)可存储多位数据的特征,以便多次将多条1位数据编程到mlc中。对于mlc重写操作,当将单条1位数据编程到非易失性存储器单元中时,控制器130可存储编程次数作为单独的操作信息。根据实施例,在相同的非易失性存储器单元中重写其它数据之前,可执行用于均匀地均衡非易失性存储器单元的阈值电压的操作。
127.在实施例中,存储器装置150被实现为非易失性存储器,诸如闪速存储器,例如nand闪速存储器、nor闪速存储器等。在实施例中,存储器装置150可由相变随机存取存储器(pcram)、铁电随机存取存储器(fram)、自旋注入磁性随机存取存储器(stt-ram)和自旋转移力矩磁性随机存取存储器(stt-mram)等中的至少一个来实施。
128.参照图4,存储器系统中的控制器130与主机102和存储器装置150一起操作。如图所示,控制器130包括主机接口132、闪存转换层(ftl)40以及先前结合图3讨论的存储器接口142和存储器144。
129.根据实施例,图3所示的错误校正电路138可被包括在闪存转换层(ftl)40中。在一个实施例中,错误校正电路138可被实施为处于控制器130中或与控制器130相关联的单独模块、电路、固件等。
130.主机接口132可以能够处置从主机102传输的命令、数据等。作为示例而非限制,主机接口132可包括命令队列56、缓冲管理器52和事件队列54。命令队列56可顺序地存储从主机102接收的命令、数据等,并且例如以预定顺序(例如存储命令、数据等的顺序)来将命令、数据等输出到缓冲管理器52。缓冲管理器52可对从命令队列56接收的命令、数据等进行分类、管理或调整。事件队列54可顺序地传输用于处理从缓冲管理器52接收的命令、数据等的事件。
131.可从主机102传输相同特性的多个命令或数据(例如,读取命令或写入命令),或者可将不同特性的多个命令和数据在由主机102混合或打乱之后传输到存储器系统110。例如,可将用于读取数据的多个命令(读取命令)传递到存储器系统110,或可将用于读取数据的命令(读取命令)和用于编程/写入数据的命令(写入命令)交替地传输到存储器系统110。主机接口132可将从主机102传输的命令、数据等顺序地存储到命令队列56。此后,主机接口132可根据来自主机102的命令、数据等的一个或多个特性来估计或预测控制器130将执行何种类型的内部操作。主机接口132可例如基于命令、数据等的特性中的至少一个或多个特性来确定命令、数据等的处理顺序和/或优先级。
132.主机接口132中的缓冲管理器52可被配置成确定缓冲管理器是否应当将命令、数据等存储在存储器144中,或者缓冲管理器是否应当将命令、数据等传递到闪存转换层(ftl)40中。可例如基于从主机102传输的命令、数据等的特性来做出这些确定。
133.事件队列54接收从缓冲管理器52输入的将由存储器系统110或控制器130在内部运行和处理的事件。可例如响应于从主机102传输的命令、数据等来执行该操作。事件可按照特定的顺序,例如被接收的顺序,被传递到闪存转换层(ftl)40中。
134.根据实施例,图4所示的闪存转换层(ftl)40可实施多线程方案来执行数据输入/输出(i/o)操作。多线程ftl可通过控制器130中使用多线程的多核处理器来实施。
135.根据实施例,闪存转换层(ftl)40可包括主机请求管理器(hrm)46、映射管理器(mm)44、状态管理器42和块管理器48。主机请求管理器(hrm)46可管理从事件队列54输入的事件。映射管理器(mm)44可处置或控制映射数据。状态管理器42可执行垃圾收集(gc)或损耗均衡(wl)。块管理器48可对存储器装置150中的块执行命令或指令。
136.作为示例而非限制,主机请求管理器(hrm)46可根据从主机接口132传递的读取和编程命令以及事件,使用映射管理器(mm)44和块管理器48来处置或处理请求。主机请求管理器(hrm)46可向映射管理器(mm)44发送查询请求,以确定与和事件一起输入的逻辑地址相对应的物理地址。主机请求管理器(hrm)46可将读取请求与物理地址一起发送到存储器接口142,以处理读取请求(处置事件)。在实施例中,主机请求管理器(hrm)46可向块管理器48发送编程请求(写入请求),以将数据编程到存储器装置150中的特定空页面(无数据),然后可向映射管理器(mm)44传输与编程请求相对应的映射更新请求,以便更新逻辑-物理地址相互映射的信息中与被编程的数据相关的项。
137.块管理器48可将从主机请求管理器(hrm)46、映射管理器(mm)44和/或状态管理器42传递的编程请求转换成由存储器装置150使用的闪存编程请求,以管理存储器装置150中的闪存块。为了最大化或增强存储器系统110(例如,参见图3)的编程或写入性能,块管理器48可收集编程请求并且向存储器接口142发送用于多平面和单触发编程操作的闪存编程请求。在实施例中,块管理器48向存储器接口142发送若干闪存编程请求,以增强或最大化多通道和多方向闪存控制器的并行处理。
138.在实施例中,块管理器48可被配置成根据有效页面的数量来管理存储器装置150中的块,在需要空闲块时选择并擦除不具有有效页面的块,并且在将执行垃圾收集操作时选择包括最少数量的有效页面的块。状态管理器42可执行垃圾收集(以将有效数据移动到空块并擦除包含被移动的有效数据的块),从而块管理器48可具有足够的空闲块(没有数据的空块)。
139.当块管理器48将关于待擦除的块的信息提供到状态管理器42时,状态管理器42可检查待擦除的块中的所有闪存页面以确定每个页面是否有效。例如,为了确定每个页面的有效性,状态管理器42可识别记录在每个页面的带外(oob)区域中的逻辑地址。为了确定每个页面是否有效,状态管理器42可将页面的物理地址与映射到从查询请求获得的逻辑地址的物理地址进行比较。状态管理器42针对每个有效页面向块管理器48发送编程请求。当编程操作完成时,可通过映射管理器44的更新操作来更新映射表。
140.映射管理器44可管理逻辑-物理映射表。映射管理器44可处理由主机请求管理器(hrm)46或状态管理器42生成的各种请求(例如,查询、更新等)。映射管理器44可将映射表的全部或部分存储在存储器装置150(例如,闪速存储器/非易失性存储器)中并且根据存储器144的存储容量来高速缓存映射条目。当在处理查询或更新请求时发生映射高速缓存未命中(miss)时,映射管理器44可向存储器接口142发送读取请求以加载存储器装置150中存
储的相关映射表。当映射管理器44中的脏高速缓存块的数量超过某个阈值时,可将编程请求发送到块管理器48,以便形成干净的高速缓存块并且可将脏映射表存储在存储器装置150中。
141.当执行垃圾收集时,状态管理器42可将(多个)有效页面复制到一个或多个空闲块中,并且主机请求管理器(hrm)46可针对相同逻辑地址的页面编程最新版本的数据,并即时地发出更新请求。当状态管理器42在有效页面的复制没有正常完成的状态下请求映射更新时,映射管理器44可不执行映射表更新。这是因为当状态管理器42请求映射更新并且稍后才完成有效页面复制时,可能利用旧物理信息发出映射请求。当或只有在最新映射表仍然指向旧物理地址时,映射管理器44才可执行映射更新操作以确保准确性。
142.图5示出根据实施例的可应用于数据处理系统的汉明码。在该实施例中,可假设存储器装置150的存储块60中的页面包括512字节的用户数据空间以及16字节的备用空间。在其它实施例中,该页面可包括不同大小的用户数据空间和/或备用空间。
143.在汉明码中,长度为2n位的数据项的错误校正奇偶校验的位的数量可以是n个位。因此,512字节数据的错误校正奇偶校验的位的数量可以是12个位。因此,512字节的数据项与12位的错误校正奇偶校验可存储在单个页面中,例如,512字节的数据项可存储在用户数据空间中,12位的错误校正奇偶校验可存储在备用空间中。
144.使用汉明码的错误校正机制可检测和恢复数据项中的单个位(single bit)数据错误,并且可检测数据项中的2位数据错误。参照图5的(a)部分,错误校正电路138可使用汉明码作为根据8位数据项(“01010101”)计算两个错误校正码(ecc)值(ecce、ecco)的基础。例如,3位错误校正奇偶校验可用于8位(23位)数据项。两个ecc值(ecce、ecco)中的每个位可表示数据项中一半的位的错误校正奇偶校验。在图5的(a)部分中,描述了一种针对每个错误校正奇偶校验计算来划分数据位的方法。为了计算ecc值(ecce、ecco),可将数据位划分为1/2、1/4、1/8等分段,直到达到个别位的级别。
145.参照图5的(b)部分,在对8位数据项进行划分之后,可计算每个组的错误校正奇偶校验以生成两个ecc值(ecce、ecco)。每个计算可生成数据分区中的一个的奇偶校验,并且响应可指示相应分区的奇偶校验是偶数还是奇数。可对该响应进行级联以构造ecc值(ecce、ecco)。
146.在一个实施例中,通过分段处理生成的两个ecc值(ecce、ecco)可被称为偶数ecc值ecce和奇数ecc值ecco。8位数据包“01010101”的偶数ecc值ecce可被计算为“000”。奇数ecc值ecco也可被计算为“000”。作为错误校正奇偶校验的ecc值(ecce、ecco)的最高有效位(msb)可对应于与数据包的1/2相对应的区域,次高有效位可对应于与1/4相对应的另一区域,并且最低有效位可对应于与1/8相对应的另一区域。基于最高有效排序或最低有效排序,控制器130可在对8位数据项进行解码时识别发生错误(例如,位翻转或另一类型的错误)的位置。
147.根据实施例,较大的数据项可具有较大的ecc值。例如,n位ecc值可以适用于2n位的数据(例如,8位错误校正奇偶校验可以适用于256(=28)位的数据项)。因为汉明码可用于一对ecc值,所以控制器130可使用2
×
n个位的位空间来处置2n个位的数据项(例如,对应于两个8位ecc值的16位空间可用于256位的数据项)。
148.根据实施例,在基于汉明码执行编码操作之后,控制器130可将数据项以及一个或
多个相应的ecc值编程到存储器装置150中。当读取存储器装置150中存储的数据项时,控制器130还可读取相应的ecc值并且重新计算ecc值(例如,解码处理)。当新计算出的ecc值不同于先前被编程到存储器装置150中的相应的ecc值时,可确定数据项中包括错误(例如,位翻转)。
149.图6示出根据实施例的基于数据处理系统中应用的汉明码来执行错误检测和校正的方法。
150.参照图6的(a)部分,假设存储器装置150中的特定位置(例如,页面)中存储的第一数据项data packet(旧)为“01010001”,并且响应于读取请求而读取的第二数据项data packet(新)为“01010101”。也就是说,假设在8位数据项中的第二位置(bit position 2)处发生位翻转(从“0”变为“1”)。因为第一数据项data packet(旧)为“01010001”,所以第一数据项的偶数ecc值ecce(旧)为“101”,并且第一数据项的奇数ecc值ecco(旧)为“010”。但是,因为第二数据项data packet(新)为“01010101”,所以第二数据项的偶数ecc值ecce(新)为“000”,并且第二数据项的奇数ecc值ecco(新)为“000”。因为由控制器130新计算出的ecc值不同于先前被编程到存储器装置150中的ecc值,所以可确定响应于读取请求而获得的第二数据项中存在错误。
151.参照图6的(b)部分,控制器130可对四个ecc值执行异或(xor)运算,从而可确定第二数据项data packet(新)中是否存在错误。四个ecc值包括第一数据项的偶数ecc值ecce(旧)和奇数ecc值ecco(旧),以及第二数据项的偶数ecc值ecce(新)和奇数ecc值ecco(新)。当对四个ecc值(“101”、“010”、“000”、“000”)执行异或运算时,该异或运算的结果变成“111”。
152.根据实施例,当对四个ecc值的异或运算的结果包括全部为“1”的位时,控制器130可确定第二数据项data packet(新)中存在1位错误。当对四个ecc值的异或运算的结果包括全部为“0”的位时,控制器130可确定第二数据项data packet(新)中不存在错误。另外,当对四个ecc值的异或运算的结果包括为“1”的位和为“0”的位(既不全部为“0”也不全部为“1”)时,控制器130可确定在第二数据项data packet(新)中存在2位或更多位的错误。
153.参照图6的(b)部分,控制器130可通过对四个ecc值的异或运算来确定第二数据项(“01010101”)中存在1位的错误。参照图6的(c)部分,控制器130可对第一数据项的奇数ecc值ecco(旧)与第二数据项的奇数ecc值ecco(新)执行异或运算,以确定第二数据项的哪个位是错误(例如,8位数据项之中的1位错误的位置)。对第一数据项的奇数ecc值ecco(旧)与第二数据项的奇数ecc值ecco(新)的异或运算的结果为“010”。参照图5的(a)部分,次高有效位(第二最高有效位)可指示与数据项的1/4相对应的区域。
154.参照图5和图6,因为奇数ecc值中存在错误,所以控制器130可识别出8位数据项之中的第三最低有效位(bit position 2)是错误。因此,用于校正相应位(第三最低有效位)的错误的代码为“00000100”,该代码可通过图6的(c)部分中所示的异或运算来获得。
155.参照图6的(d)部分,控制器130可对第二数据项(“01010101”)和用于校正错误的代码(“00000100”)执行异或运算,以检测和校正第二数据项的错误。因此,控制器130可获得错误校正数据项(“01010001”),参照图6的(a)部分,该错误校正数据项与应当已被存储在存储器装置150中的第一数据项相同。
156.在图6中,作为基于汉明码检测和校正错误的示例给出8位数据项。然而,汉明码可
适用于不同大小的数据项,甚至适用于更大的数据项。例如,随着数据的大小增加,基于汉明码检测和校正错误的方法可能变得更加有效。例如,当将6位ecc值用于8位数据项的数据完整性时,考虑到存储器装置150中额外使用的存储器空间,开销为75%。然而,一对12位ecc值(例如,对于两个ecc值,为24位)可用于512字节的数据项(例如,4096个位的数据项)。因此,开销可以是0.6%。随着存储器装置150中存储的数据项的大小增加,可减小开销(比率),因此可有效地使用存储器系统110的资源。
157.图7示出根据实施例的数据处理系统中的数据写入操作的示例。在本文中,集中描述图1和图7的实施例之间的差异。
158.参照图7,数据处理系统中的主机102可将基于汉明码编码的第一编码数据项(data parity1)传输到存储器系统110。然而,存储器系统110中的错误校正电路138可多次对单个数据项执行编码和解码操作。
159.在主机102中的错误校正码(ecc)电路104基于汉明码对数据项进行编码之后,可将第一编码数据项data parity1传输到存储器系统110。控制器130中的错误校正电路138可对第一编码数据项data parity1进行解码以检测和校正错误,并且可对错误校正数据项进行编码以生成第三编码数据项data parity3。第三编码数据项data parity3可被存储在缓冲器192中。错误校正电路138可在将从主机102传输的第一编码数据项data parity1存储在缓冲器192中之前,基于汉明码执行解码操作。该解码操作可用于检测和校正在主机102与存储器系统110之间的数据通信中发生的第一错误。另外,在校正第一错误之后,在将错误校正数据项存储在缓冲器192中之前,错误校正电路138可对错误校正数据项进行编码,以检测和校正可能在缓冲器192中发生的第二错误。
160.错误校正电路138可对缓冲器192中存储的第三编码数据项data parity3进行加载和解码,以检测和校正可能在缓冲器192中发生的第二错误。在校正第二错误之后,错误校正电路138可基于汉明码对错误校正数据项进行编码,以生成第四编码数据项data parity4。然后,错误校正电路138可对第四编码数据项data parity4执行校验和(checksum)操作,以生成第二编码数据项data parity2。可将第二编码数据项data parity2传输到存储器装置150。例如,在校验和操作中,错误校正电路138可将第四编码数据项data parity4划分成k个区段,每个区段为n个位。可使用1的补码将所有区段加在一起来求总和。对该总和求补码(complemented)并且作为校验和字段添加,以生成第二编码数据项data parity2。
161.控制器130中的错误校正电路138可执行多次解码操作和多次编码操作,以识别和确定数据项在哪个过程或操作中发生错误。例如,错误校正电路138可通过第一解码操作来检测和校正第一错误(其可能发生在主机102与存储器系统110之间的数据通信中),以及通过第二解码操作来检测和校正发生在缓冲器192中的第二错误。错误校正电路138可指定在哪个过程或操作中发生错误。根据实施例,存储器系统110可基于关于在哪个过程或操作中发生错误的信息来增强或提高内部操作的操作可靠性。
162.根据实施例,汉明码可应用于图7所述的多次解码操作和多次编码操作。根据实施例,可基于与存储器系统110的内部配置相对应的不同错误校正码来执行用于检测和校正在缓冲器192或存储器装置150中发生的错误的编码和解码操作。
163.使用汉明码的编码和解码操作可确保对2位错误的检测以及对1位错误的校正,但
是在某些情况下,汉明码可能不支持对2位错误的校正。当如在图7所述的错误校正电路138中额外地执行校验和时,当从存储器装置150传输的数据项中发生2位错误时,控制器130可校正2位错误。
164.图8示出根据实施例的在数据处理系统中执行的数据读取操作。在图8中,当控制器130中的错误校正电路138可执行多次解码操作和多次编码操作时,将描述执行用于输出与来自主机102的读取请求相对应的数据项的操作的方式。
165.在该示例中,可假设,通过图7所述的错误校正电路138,对应于读取请求的数据项可能已被存储在存储器装置150中。参照图8,响应于从主机102输入的读取请求,可将包括该数据项的第二编码数据项data parity2从存储器装置150传输到控制器130。
166.错误校正电路138可基于校验和来对第二编码数据项data parity2进行解码以生成第四编码数据项data parity4,然后可基于汉明码对第四编码数据数据项data parity4进行解码。这两次解码操作可支持对控制器130与存储器装置150之间的数据通信中发生的2位错误的校正。
167.例如,错误校正电路138可将从存储器装置150输入的第二编码数据项data parity2划分成k个区段,每个区段为n个位。然后,可使用1的补码将所有区段加在一起来求总和。错误校正电路138可对彼此相加的总和求补码,并且检查结果是否为零。如图7所述,基于校验和以及汉明码执行的解码操作可检测和校正从存储器装置150输入的第二编码数据项data parity2中包括的2位错误。错误校正电路138可进一步通过基于校验和以及汉明码的解码操作对错误校正数据项进行编码,以生成第三编码数据项data parity3。然后,错误校正电路138可将第三编码数据项data parity3存储在缓冲器192中。
168.在对缓冲器192中存储的第三编码数据项data parity3进行解码以检测和校正可能在缓冲器192中发生的第二错误之后,错误校正电路138可基于汉明码对错误校正数据项进行编码,以生成第一编码数据项data parity1。控制器130响应于来自主机102的读取请求,向主机102传输第一编码数据项data parity1。
169.主机102中的错误校正码(ecc)电路104可基于汉明码对从存储器系统110传输的第一编码数据项data parity1进行解码,从而主机102可检测和校正在存储器系统110与主机102之间的数据通信中发生的第一错误。
170.图8所述的存储器系统110和主机102可检测和校正可能在响应于读取请求而读取存储器装置150中存储的数据项的进程中的每个步骤或操作中发生的错误。因此,数据处理系统可提高操作可靠性。
171.图9示出根据实施例的在数据处理系统中执行的数据写入操作。图9所示的实施例可简化对存储器系统110内的数据项的编码和解码操作,但是控制器130可检测和校正可能在主机102与存储器系统110之间的数据通信中发生的第一错误以及可能在缓冲器192中发生的第二错误。
172.参照图9,数据处理系统中的主机102可将基于汉明码编码的第一编码数据项data parity1传输到存储器系统110。存储器系统110中的控制器130可接收第一编码数据项data parity1,并且将第一编码数据项data parity1存储在缓冲器192中。控制器130中的错误校正电路138从缓冲器192加载第一编码数据项data parity1。然后,错误校正电路138可基于汉明码执行解码操作,以检测和校正在主机102与存储器系统110之间的数据传输中
发生的第一错误和/或在缓冲器192中发生的第二错误。在错误校正电路138校正第一错误和/或第二错误之后,控制器130可向存储器装置150传输数据项data。
173.通过单次解码操作,错误校正电路138可检测和校正两种不同类型的错误,例如,在主机102与存储器系统110之间的数据传输中发生的第一错误以及在存储器系统110内的缓冲器192中发生的第二错误。在图9所示的实施例中,可检测和校正第一错误和第二错误,但控制器130可被简单地配置。进一步地,因为控制器130可向存储器装置150传输未编码的数据项,所以可减小控制器130与存储器装置150之间的数据通信的开销。
174.图10示出根据实施例的数据处理系统中的数据读取操作。在该实施例中,描述当图9的控制器130将未编码的数据项传输到存储器装置150以供数据编程时的读取操作。
175.参照图10,存储器装置150可将与来自主机102的读取请求相对应的数据项传输到控制器130。控制器130中的错误校正电路138可基于汉明码对该数据项进行编码,然后将编码数据项data parity1存储在缓冲器192中。作为对读取请求的响应,控制器130可将缓冲器192中存储的编码数据项data parity1传输到主机102。
176.主机102中的错误校正码(ecc)电路104可基于汉明码对从存储器系统110传输的编码数据项data parity1进行解码,以检测和校正可能在存储器系统110与主机102之间的数据通信中发生的第一错误和/或可能在缓冲器192中发生的第二错误。
177.图11示出根据实施例的数据处理系统中的数据写入操作。参照图11,主机102可向存储器系统110传输数据项。因为主机102可在没有编码操作的情况下将数据项传输到存储器系统110,所以错误校正码(ecc)电路104可不被包括在主机102中。
178.接收从主机102传输的数据项的控制器130中的错误校正电路138可基于汉明码对该数据项进行编码,以生成编码数据项data parity3。错误校正电路138可将编码数据项data parity3临时存储在缓冲器192中。此后,错误校正电路138可从缓冲器192加载编码数据项data parity3,并且基于汉明码来执行解码操作。通过这些过程,错误校正电路138可检测和校正可能在缓冲器192中发生的第二错误。控制器130可向存储器装置150传输错误校正的数据项以供数据编程。
179.图12示出根据实施例的数据处理系统中的数据写入操作。参照图12,主机102可向存储器系统110传输数据项。因为主机102在没有编码操作的情况下将数据项传输到存储器系统110,所以错误校正码(ecc)电路104可不被包括在主机102中。
180.接收从主机102输入的数据项data的存储器系统110中的控制器130可将该数据项data临时存储在缓冲器192中。控制器130中的错误校正电路138可基于汉明码对缓冲器192中存储的数据项data进行编码,以生成奇偶校验数据项parity2。控制器130可将缓冲器192中存储的数据项data与由错误校正电路138生成的奇偶校验数据项parity2分开,并且将数据项data和奇偶校验数据项parity2两者传输到存储器装置150。
181.存储器装置150可将从控制器130传输的奇偶校验数据项parity2存储在奇偶校验缓冲器194中。存储器装置150可包括另一错误校正电路196。错误校正电路196可基于汉明码对从控制器130传输的数据项data以及奇偶校验缓冲器194中存储的奇偶校验数据项parity2执行解码操作。通过这些操作,错误校正电路196可检测和校正可能在控制器130与存储器装置150之间的数据通信中发生的错误。由错误校正电路196校正了错误的数据项可存储在存储器装置150的存储块60中。在另一实施例中,存储器装置150可包括被配置成存
储数据项的数据缓冲器。
182.在参照图12描述的实施例中,因为存储器装置150包括错误校正电路196,所以可检测和校正可能在控制器130与存储器装置150之间的数据通信中发生的错误。
183.存储器装置150中的错误校正电路196可从存储块60中读取(对应于主机的读取请求的)数据项,然后可基于汉明码对该数据项进行编码以生成奇偶校验数据项。存储器装置150可将奇偶校验数据项传输到控制器130,用于检查在存储器装置150与控制器130之间的数据通信中发生的错误。
184.根据上述实施例,存储器系统110可在将数据项存储在缓冲器192中之前对该数据项进行编码,或者可对待传输到存储器装置150的数据项进行编码。进一步地,存储器系统110可对从主机102输入的数据项进行解码,对缓冲器192中存储的数据项进行加载和解码,或者对从存储器装置150传输的数据项进行解码。根据实施例,存储器系统110可选择性地执行编码/解码操作,以检测和校正在存储器系统110内部发生的错误或者在主机102与存储器系统110之间的数据通信中发生的错误。这种错误检测和校正可提高或增强存储器系统110的操作可靠性。
185.本文所描述的方法、过程和/或操作可通过待由计算机、处理器、控制器或其它信号处理装置运行的代码或指令来执行。该计算机、处理器、控制器或其它信号处理装置可以是本文所描述的那些元件,或者是除了本文所描述的元件之外的元件。因为详细描述了形成方法(或计算机、处理器、控制器或其它信号处理装置的操作)的基础的算法,所以用于实施方法实施例的操作的代码或指令可将计算机、处理器、控制器或其它信号处理装置转换成用于执行本文的方法的专用处理器。
186.当至少部分地以软件实施时,控制器、处理器、装置、模块、单元、管理器、多路复用器、生成器、逻辑、接口、编码器、错误校正电路、解码器、驱动器、发生器以及其它信号生成和信号处理特征可包括例如用于存储待由例如计算机、处理器、微处理器、控制器或其它信号处理装置运行的代码或指令的存储器或其它存储装置。该计算机、处理器、微处理器、控制器或其它信号处理装置可以是本文所描述的那些元件,或者是除了本文所描述的元件之外的元件。因为详细描述了形成方法(或计算机、处理器、微处理器、控制器或其它信号处理装置的操作)的基础的算法,所以用于实施方法实施例的操作的代码或指令可将计算机、处理器、控制器或其它信号处理装置转换成用于执行本文所描述的方法的专用处理器。
187.根据前述实施例中的一个或多个,提供了一种可增加或提高数据处理可靠性的存储器系统或数据处理系统。根据一个或多个实施例,提供了一种可确定在哪个操作中发生错误或者数据中发生错误的位置的存储器系统。该确定可在将(从诸如主机的外部装置接收的)数据项存储在非易失性存储器装置中的数据处理期间进行。因此,当对数据处理进行补充时,可减少错误。
188.虽然已经针对具体实施例示出和描述了本教导,但是本领域技术人员鉴于本公开将显而易见的是,在不脱离如所附权利要求所限定的本公开的精神和范围的情况下,可进行各种改变和修改。实施例可被组合以形成另外的实施例。
再多了解一些

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

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

相关文献