被配置为控制存储装置的存储器控制器的操作方法与流程

文档序号:33556560发布日期:2023-03-22 12:09阅读:60来源:国知局
被配置为控制存储装置的存储器控制器的操作方法与流程
被配置为控制存储装置的存储器控制器的操作方法
1.相关申请的交叉引用
2.本技术根据35u.s.c.
§
119要求于2021年9月17日在韩国知识产权局提交的韩国专利申请第10-2021-0124657号的优先权,其公开通过引用整体并入本文。
技术领域
3.本文描述的本公开的示例实施例涉及半导体存储装置,和/或更具体地,涉及被配置为控制非易失性存储装置的存储器控制器的操作方法。


背景技术:

4.半导体存储装置被分类为易失性存储装置或非易失性存储装置:在易失性存储装置中,存储的数据在电源关闭时消失,易失性存储装置诸如静态随机存取存储器(sram)或动态随机存取存储器(dram);在非易失性存储装置中,存储的数据即使在电源关闭时也被保留,非易失性存储装置诸如闪存装置、相变ram(pram)、磁性ram(mram)、电阻式ram(rram)或铁电ram(fram)。
5.闪存装置被广泛用作计算装置中的大容量存储介质。闪存装置可以通过调整存储单元的阈值电压来存储数据。随着每个存储单元要存储的位数增加,闪存装置的存储容量增加。然而,在这种情况下,因为存储单元中的每个的读取余量减小,存储在存储单元中的数据的错误数量增加。


技术实现要素:

6.本公开的示例实施例提供被配置为控制具有提高的可靠性的存储装置的存储器控制器的操作方法。
7.根据一些示例实施例,一种控制存储装置的存储器控制器的操作方法包括:将写入数据存储在存储装置的第一区域中,提取指示包括在存储在第一区域中的数据中的至少一个错误的位置的第一错误位置信息,将第一错误位置信息存储在存储装置的第二区域中,从存储装置的第一区域读取读取数据;从存储装置的第二区域读取第一错误位置信息,基于第一错误位置信息对读取数据进行改进(refine)以生成改进数据,基于改进数据执行软判决解码以生成校正数据,以及输出校正数据。
8.根据一些示例实施例,一种控制存储装置的存储器控制器的操作方法包括:向存储装置发送第一编程命令、第一地址和第一写入数据,向存储装置发送第一读取命令和第一地址以从存储装置接收第一读取数据,比较第一读取数据和第一写入数据以提取关于包括在第一读取数据中的至少一个错误的位置的第一错误位置信息;以及向存储装置发送第二编程命令、第二地址和第一错误位置信息。
9.根据一些示例实施例,一种控制存储装置的存储器控制器的操作方法包括:对存储装置的第一区域执行第一读取操作以读取第一读取数据,基于第一读取数据的错误没有通过针对第一读取数据的第一错误校正操作被校正来对存储装置的第一区域执行多个第
二读取操作以读取多个软判决数据,对存储装置的第二区域执行第二读取操作以读取错误位置信息,基于错误位置信息对多个软判决数据中的至少一个进行改进以生成多个改进的软判决数据,以及对多个改进的软判决数据执行第二错误校正操作以输出校正数据。
附图说明
10.通过参照附图详细描述本公开的示例实施例,本公开的上述和其他目的和特征将变得显而易见。
11.图1是示出根据本公开的一些示例实施例的存储系统的框图。
12.图2是示出包括在图1的存储装置中的多个存储块中的第一存储块的示意图。
13.图3是示出图2的存储单元的阈值电压分布的示意图。
14.图4是示出图1的存储器控制器的操作的流程图。
15.图5至图7是用于描述图1的错误位置管理器的操作的示意图。
16.图8是示出图1的存储装置的框图。
17.图9是用于描述图8的存储装置的错误位置信息提取操作的示意图。
18.图10a至图10d是用于描述根据本公开的一些示例实施例的错误位置提取时间点的示意图。
19.图11a至图11d是用于描述在存储装置中编程错误位置信息的操作的示意图。
20.图12是用于描述图4的读取操作的示意图。
21.图13和图14是用于描述生成改进数据的操作的示意图。
22.图15是示出应用了根据本公开的一些示例实施例的存储系统的系统的示意图。
23.图16是示出应用了根据本公开的一些示例实施例的存储系统的系统的示意图。
24.图17是示出应用了根据本公开的一些示例实施例的存储装置的数据传感器的示意图。
具体实施方式
25.下面,可以详细并清楚地描述本公开的实施例,以使本领域的普通技术人员能够容易地实施本发明。
26.图1是示出根据本公开的一些示例实施例的存储系统的框图。参照图1,存储系统100可以包括存储器控制器110和存储装置120。在一些示例实施例中,存储系统100可以是被配置为在计算系统中存储数据的大容量存储装置(例如,ssd),但本公开不限于此。
27.存储器控制器110可以被配置为控制存储装置120。例如,存储器控制器110可以将数据存储在存储装置120中或者可以读取存储在存储装置120中的数据。存储装置120可以在存储器控制器110的控制下操作。在一些示例实施例中,存储装置120可以是闪存装置,但本公开不限于此。
28.存储器控制器110可以包括纠错码(ecc)引擎111和错误位置信息(epi)管理器112。存储器控制器110的ecc引擎111可以被配置为检测或校正从存储装置120读取的数据的错误。例如,由于存储装置120的物理特性或各种外部因素,存储在存储装置120中的数据可能发生错误。ecc引擎111可以通过对要存储在存储装置120中的用户数据执行ecc编码操作来生成ecc数据。ecc数据可以与用户数据一起存储在存储装置120中。ecc引擎111可以通
过对读取数据和与读取数据对应的ecc数据执行ecc解码操作来检测和校正包括在从存储装置120读取的数据中的错误。
29.在一些示例实施例中,ecc引擎111可以基于软判决解码方案来检测和校正数据的错误。可替换地,ecc引擎111可以通过使用编码调制,诸如低密度奇偶校验(ldpc)码、bch(bose-chaudhuri-hocquenghem,博斯-乔赫里-霍克文黑姆)码、涡轮码、reed-solomon码、卷积码、递归系统码(rsc)、网格编码调制(tcm)或块编码调制(bcm)或者各种其他方案,来校正错误。
30.在一些示例实施例中,存储在存储装置120中的错误可能由于各种因素而发生。作为示例,当存储装置120的存储单元的特性削弱时,可能在编程操作中发生错误。可替换地,可能由于诸如读取干扰、写入干扰和温度变化等各种因素而发生错误。
31.根据本公开的一些示例实施例的存储器控制器110可以提取和管理存储在存储装置120中的数据的错误位置。例如,存储器控制器100的错误位置管理器112可以提取存储在存储装置120中的数据的错误位置。详细地,在要存储在存储装置120中的数据对应于位串“11110000”而存储在存储装置120中的实际数据(例如,包括错误的数据)对应于位串“11110001”的情况下,错误位置管理器112可以提取发生错误的位串的位置(例如,lsb位置)。
32.下面,使用术语“错误位置信息epi”来描述本公开的示例实施例。错误位置信息epi可以是指示存储在存储装置120中的数据中的错误位置的信息(例如,所存储的数据的位串的位之中与错误相应的位的位置)。可替换地,错误位置信息epi可以是指示发生错误的存储单元的位置的信息。也就是说,可以基于错误位置信息epi提取发生错误的存储单元的位置或其位值的位置。
33.由错误位置管理器112提取的错误位置信息epi可以存储在存储装置120中。存储器控制器110可以通过基于存储在存储装置120中的错误位置信息epi提高从存储装置120读取的数据来提高数据的可靠性。例如,在从存储装置120读取的数据包括多个错误的情况下,错误可能不被ecc引擎111校正。在这种情况下,存储器控制器110可以基于存储在存储装置120中的错误位置信息epi改进读取数据,并生成改进数据。在这种情况下,改进数据可能包括错误,错误的数量少于读取数据的错误的数量。这样,改进数据可以包括由ecc引擎111可校正的错误。这可以意味着存储器控制器110可以提高数据的可靠性而没有增加ecc引擎111的错误校正能力的负担。下面,将参照以下附图详细描述根据本公开的一些示例实施例的错误位置管理器112的操作。
34.图2是示出包括在图1的存储装置中的多个存储块中的第一存储块的示意图。在一些示例实施例中,图1的存储装置120可以是包括多个存储块的闪存装置。
35.将参照图2描述存储块的三维结构,但本公开不限于此。根据本公开的存储块可以具有二维存储块结构。将参照图2描述第一存储块blk1,但本公开不限于此。剩余的存储块在结构上可以与要参照图2描述的第一存储块blk1类似。
36.在一些示例实施例中,要参照图2描述的第一存储块blkl可以与存储装置120的物理擦除单元对应。然而,本公开不限于此。例如,擦除单元可以更改为页面单元、字线单元、子块单元等。
37.参照图2,第一存储块blk1可以包括多个单元串cs11、cs12、cs21和cs22。多个单元
串cs11、cs12、cs21和cs22可以沿行方向和列方向排列以形成行和列。
38.多个单元串cs11、cs12、cs21和cs22中的每个包括多个单元晶体管。例如,单元串cs11、cs12、cs21和cs22中的每个可以包括串选择晶体管ssta和sstb、多个存储单元mc1至mc8、接地选择晶体管gsta和gstb、以及虚拟存储单元dmc1和dmc2。在一些示例实施例中,包括在单元串cs11、cs12、cs21和cs22中的多个单元晶体管中的每个可以是电荷撷取闪存(ctf)存储单元。
39.在每个单元串中,多个存储单元mc1至mc8串联连接并且在与由行方向和列方向限定的平面垂直的方向上(也就是说,在高度方向上)堆叠。在每个单元串中,串选择晶体管ssta和sstb串联连接并且介于位线bl1或bl2与多个存储单元mc1至mc8之间。接地选择晶体管gsta和gstb串联连接并且介于多个存储单元mc1至mc8与公共源极线csl之间。
40.在一些示例实施例中,在每个单元串中,第一虚拟存储单元dmc1可以介于多个存储单元mc1至mc8与接地选择晶体管gsta和gstb之间。在一些示例实施例中,第二虚拟存储单元dmc2可以介于多个存储单元mc1至mc8与串选择晶体管ssta和sstb之间。
41.单元串cs11、cs12、cs21和cs22的接地选择晶体管gsta和gstb可以与接地选择线gsl共同连接。在一些示例实施例中,同一行中的接地选择晶体管可以与同一接地选择线连接,并且不同行中的接地选择晶体管可以与不同的接地选择线连接。例如,第一行中的单元串cs11和cs12的第一接地选择晶体管gsta可以与第一接地选择线连接,并且第二行中的单元串cs21和cs22的第一接地选择晶体管gsta可以是与第二接接地选择线连接。
42.在一些示例实施例中,虽然在图2中未示出,在距基板(未示出)同一高度处提供的接地选择晶体管可以与同一接地选择线连接,并且在距基板不同高度处提供的接地选择晶体管可以与不同的接地选择线连接。
43.距基板同一高度的存储单元或接地选择晶体管gsta和gstb与同一字线共同连接,并且距基板不同高度的存储单元与不同的字线连接。例如,单元串cs11、cs12、cs21和cs22的存储单元mc1至mc8可以与第一字线wl1至第八字线wl8连接。
44.同一高度的第一串选择晶体管ssta之中属于同一行的串选择晶体管与同一串选择线连接,并且属于不同行的串选择晶体管与不同的串选择线连接。例如,第一行中的单元串cs11和cs12的第一串选择晶体管ssta可以与串选择线ssl1a共同连接,并且第二行中的单元串cs21和cs22的第一串选择晶体管ssta可以与串选择线ssl2a共同连接。
45.同样,在同一高度处的第二串选择晶体管sstb之中属于同一行的第二串选择晶体管与同一串选择线连接,并且不同行中的第二串选择晶体管与不同的串选择线连接。例如,第一行中的单元串cs11和cs12的第二串选择晶体管sstb与串选择线ssl1b共同连接,并且第二行中的单元串cs21和cs22的第二串选择晶体管sstb可以与串选择线ssl2b共同连接。
46.在一些示例实施例中,同一高度的虚拟存储单元与同一虚拟字线连接,并且不同高度的虚拟存储单元与不同的虚拟字线连接。例如,第一虚拟存储单元dmc1与第一虚拟字线dwl1连接,并且第二虚拟存储单元dmc2与第二虚拟字线dwl2连接。
47.在一些示例实施例中,图2中所示的第一存储块blk1仅是一示例。单元串的数量可以增加或减少,并且单元串的行数和单元串的列数可以根据单元串的数量而增加或减少。此外,第一存储块blk1的单元晶体管(例如,gst、mc、dmc和sst)的数量可以增加或减少,并且第一存储块blk1的高度可以根据单元晶体管的数量而增加或减少。此外,与单元晶体管
连接的线(例如,gsl、wl、dwl和ssl)的数量可以根据单元晶体管的数量而增加或减少。
48.图3是示出图2的存储单元的阈值电压分布的示意图。在下文中,为了描述本公开的示例实施例,假设存储装置120的存储单元中的每一个是被配置为存储4位数据的四层单元(qlc)。然而,本公开不限于此。例如,每个存储单元可以是存储一个位的单层单元(slc),或者存储n位数据(n是大于1的自然数)的多层单元(mlc)、三层单元(tlc)或四层单元(qlc)。
49.参照图2和图3,第一存储块blk1的存储单元mc1至mc8中的每一个可以被编程为具有擦除状态“e”以及第一编程状态p1至第十五编程状态p15中的一个。可以通过使用第一验证电压vf1至第十五验证电压vf15来验证存储单元mc1至mc8是否被正常编程。
50.在一些示例实施例中,即使通过使用第一验证电压vf1至第十五验证电压vf15来确定存储单元mc1至mc8是否被正常编程,由于存储单元mc1至mc8的物理特性或编程状态之间的界限(margin)不充分,邻近编程状态之间可能会发生错误。可替换地,存储单元mc1至mc8的阈值电压可能由于与存储单元mc1至mc8相关联的各种外部因素而变化;在这种情况下,存储在存储单元mc1至mc8中的数据可能会发生错误。在存储在存储单元mc1至mc8中的数据的错误超过ecc引擎111的错误校正能力的情况下,无法保证存储在存储单元mc1至mc8中的数据的可靠性。
51.根据本公开的一些示例实施例,由于指示存储在存储单元mc1至mc8中的数据的错误位置的错误位置信息epi被分开管理,所以存储在存储单元mc1至mc8中的数据的错误可以部分改进,并且改进数据的错误不能不会超过ecc引擎111的错误校正能力。因此,可以提高存储系统100的可靠性。
52.图4是示出图1的存储器控制器的操作的流程图。参照图1和图3,在操作s111中,存储器控制器110可以执行编程操作以将数据存储在存储装置120中。在一些示例实施例中,存储器控制器110可以以页面或字线为单位执行编程操作。例如,存储器控制器110可以向存储装置120发送编程命令、第一地址和写入数据。响应于编程命令,存储装置120可以将写入数据存储在与对应于第一地址的字线连接的存储单元中。
53.在操作s112中,存储器控制器110可以通过读取操作提取错误位置信息epi。例如,在于操作s111中执行编程操作之后,存储器控制器110可以从存储装置120读取存储数据。在这种情况下,由于存储装置120的物理特性,从存储装置120读取的数据可能包括错误。存储器控制器110的错误位置管理器112可以基于读取数据的错误提取错误位置信息epi(例如,关于发生错误的位串的位置的信息,或者关于发生错误的存储单元的位置的信息)。在一些示例实施例中,可以通过至少一个读取操作来执行操作s112。例如,存储器控制器110可以将读取命令和第一地址发送到存储装置120。响应于读取命令,存储装置120可以读取存储在与对应于第一地址的字线连接的存储单元中的数据,并且可以将读取数据发送到存储器控制器110。
54.在一些示例实施例中,可以在于操作s111中执行编程操作之后立即执行操作s112,也就是读取操作或错误位置信息提取操作。可替换地,可以在从在操作s111中执行编程操作的时间起经过给定时间之后执行操作s112,也就是读取操作或错误位置信息提取操作。可替换地,可以在执行了给定单元(例如,存储块单元或子块单元)的操作s111的编程操作之后执行操作s112,也就是读取操作或错误位置信息提取操作。将参照以下附图详细描
述操作s112,也就是读取操作或错误位置信息提取操作。
55.在操作s113中,存储器控制器110可以收集错误位置信息epi。在一些示例实施例中,存储器控制器110可以收集与给定单元的数据对应的错误位置信息epi。例如,一个错误位置信息epi可以对应于一个页面数据或一个字线数据。存储器控制器110可以收集与存储块单元或子块单元的数据对应的多个错误位置信息epi。
56.在操作s114中,存储器控制器110可以将收集的错误位置信息epi存储在存储装置120中。在一些示例实施例中,错误位置信息epi可以存储在存储装置120的与存储了数据(例如,用户数据)的区域不同的另一区域中。例如,存储器控制器110可以将编程命令、第二地址和收集的错误位置信息epi发送到存储装置120。存储装置120可以将收集的错误位置信息epi存储在与对应于第二地址的字线连接的存储单元中。在一些示例实施例中,在操作s111中描述的第一地址和在操作s114中描述的第二地址可以是不同的地址,并且分别对应于第一和第二地址的字线可以彼此不同。
57.在一些示例实施例中,存储装置120的存储单元可以作为tlc操作。也就是说,存储在存储装置120中的用户数据可以存储在作为tlc操作的存储单元中。相反,收集的错误位置信息epi可以存储在作为slc或mlc操作的存储单元中。将参照以下附图详细描述存储了错误位置信息epi的区域。
58.如上所述,在将数据存储在存储装置120中之后,存储器控制器110可以提取与存储在存储装置120中的数据相关联的错误位置信息epi,并且可以将提取的错误位置信息epi存储在存储装置120中。
59.在操作s121中,存储器控制器110可以执行第一读取操作以从存储装置120读取数据。在操作s122中,存储器控制器110可以对读取数据执行第一ecc解码。在操作s123中,存储器控制器110可以确定是否存在不可校正的错误。
60.例如,存储器控制器110的ecc引擎111可以检测和校正从存储装置120读取的数据的错误。当从存储装置120读取的数据的错误超过ecc引擎111的错误校正能力时,错误可能无法被校正。在这种情况下,存储器控制器110可以确定存在不可校正的错误。
61.当确定存在不可校正的错误时,在操作s124中,存储器控制器110可以执行第二读取操作以从存储装置120读取错误位置信息epi。在一些示例实施例中,错误位置信息epi可以对应于通过操作s121中的第一读取操作读取的数据。在一些示例实施例中,操作s124中的第二读取操作可以与操作s121中的第一读取操作不同。也就是说,可以基于不同的地址执行第一和第二读取操作。
62.在操作s125中,存储器控制器110可以基于错误位置信息epi改进读取数据。例如,存储器控制器110的错误位置管理器112可以基于错误位置信息epi确定发生错误的位串的位置,或者发生错误的存储单元的位置。错误位置管理器112可以通过倒置读取数据的位值之中与错误位置信息epi对应的位值来生成改进数据。也就是说,改进数据可以是包括错误的数据,错误的数量少于原始读取数据的错误的数量。
63.在一些示例实施例中,错误位置管理器112可以被配置为改进原始读取数据、软判决数据或硬判决数据中的至少一个。将参照以下附图详细描述与如何改进数据相关联的示例实施例。
64.在操作s126中,存储器控制器110可以对改进数据执行第二ecc解码。在操作s127
中,存储器控制器110可以输出校正数据。
65.在一些示例实施例中,因为改进数据的错误等级低于原始读取数据的错误等级,即使第一ecc解码失败,第二ecc解码也可能成功(例如,错误可能被校正)。也就是说,可以提高存储系统100的整体可靠性。
66.如上所述,根据本公开的一些示例实施例,在对存储装置120中的数据进行编程之后,存储器控制器110可以提取与编程后的第一数据相关联的错误位置信息,并且可以将错误位置信息存储在存储装置120中。之后,存储器控制器110可以基于存储在存储装置120中的错误位置信息来改进从存储装置120读取的第一数据的错误(或错误的一部分),并且可以对改进数据执行ecc解码,并且因此,可以提高第一数据的可靠性。
67.图5至图7是用于描述图1的错误位置管理器的操作的示意图。将参照图5至图7描述提取错误位置信息epi的操作(例如,图4的操作s112)。为了附图的简洁和描述的方便,仅示出了提取错误位置信息epi所必需的组件,而省略了其余的组件。
68.首先,参照图1和图5,存储器控制器110的错误位置管理器112可以通过比较原始数据和读取数据来生成错误位置信息epi。例如,存储器控制器110可以对存储装置120中的第一数据dt1进行编程(图5的操作

)。在这种情况下,第一数据dt1可以是位串“10011001”,而实际存储在存储装置120中的实际数据(在下文中称为“第一存储数据dt1_s”)可以是位串“10001001”。也就是说,即使将第一数据dt1“10011001”编程在存储装置120中,存储在存储装置120中的第一存储数据dt1_s可以具有位串“10001001”(例如,从lsb起的第五位是一个错误)。
69.存储器控制器110的错误位置管理器112可以读取存储在存储装置120中的第一存储数据dt1_s(图5的操作

)。错误位置管理器112可以通过比较第一数据dt1(例如,原始数据)和第一存储数据dt1_s(例如,包括错误的读取数据)来生成错误数据er(图5的操作

)。例如,在第一数据dt1(例如,原始数据)是“10011001”并且第一存储数据dt1_s(例如,包括错误的数据)是“10001001”的情况下,错误数据er可以是“00010000”,其指示从lsb起的第五位值对应于错误。
70.错误位置管理器112可以基于错误数据er生成错误位置信息epi。例如,在图5的一些示例实施例中,生成的错误数据er可以是“00010000”,其指示从lsb起的第五位值对应于错误。在这种情况下,错误位置信息epi可以用指示从lsb起的第五位值对应于错误的二进制码(例如,“101”)来实现。也就是说,错误位置信息epi可以是指示构成数据的位串的位之中发生错误的位的位置的值;在这种情况下,错误位置信息epi的大小可能与对应数据的大小不同。
71.在由图5所示的示例实施例中,对于8位数据,可能需要3位数据来表述一个错误位置。在一些示例实施例中,存储器控制器110可以以页面为单位执行存储装置120的编程操作和读取操作。在这种情况下,与一个页面对应的错误位置信息epi可以具有2个字节的大小。上述数值是用于容易地描述本公开的一些示例实施例的示例,并且本公开不限于此。
72.接下来,参照图1和图6,存储器控制器110的错误位置管理器112可以通过使用多个读取操作的单元计数方案来生成错误位置信息epi。
73.例如,如图6所示,为了区分第十三编程状态p13和第十四编程状态p14,存储器控制器110可以通过使用多个读取电压r1、r2、r3和r4来执行多个读取操作。通过使用多个读
取电压r1、r2、r3和r4的多个读取操作,存储器控制器110可以将第十四编程状态p14的存储单元分类为第一区域“a”的存储单元、第二区域“b”的存储单元、第三区域“c”的存储单元和第四区域“d”的存储单元。
74.第一区域“a”的存储单元可以是具有非常强错误的存储单元。例如,第一区域“a”的存储单元是被编程为具有第十四编程状态p14的存储单元。然而,由于第一区域“a”中的存储单元的阈值电压相对低于第十三编程状态p13和第十四编程状态p14的谷值,第一区域“a”的存储单元被确定为具有第十三编程状态p13的概率(例如,第一区域“a”的存储单元将被确定为错误的概率)较高。如上面描述中所述,第二至第四区域“b”、“c”和“d”的存储单元将被确定为错误的概率也可能较高。
75.在一些示例实施例中,在第一至第四区域“a”、“b”、“c”和“d”的存储单元(其具有比第十三编程状态p13和第十四编程状态p14的谷值更低的阈值电压)中,随着存储单元的阈值电压与谷值之间的差值增大,存储单元的错误概率可能变得更高。也就是说,第三区域“c”的存储单元的错误概率可能高于第四区域“d”的存储单元的错误概率;第二区域“b”的存储单元的错误概率可能高于第三区域“c”的存储单元的错误概率;第一区域“a”的存储单元的错误概率可能高于第二区域“b”的存储单元的错误概率。错误概率高意味着紧接在编程操作之后的错误状态继续保持在错误处的概率。
76.如上所述,根据本公开的一些示例实施例的存储器控制器110的错误位置管理器112可以基于属于具有最高错误概率的第一区域“a”的存储单元来生成错误位置信息epi。也就是说,错误位置信息epi可以指示数据的位串的位之中存储在属于具有最高错误概率的第一区域“a”的存储单元中的位的位置。
77.为了附图的简洁和描述的方便,参照图6描述了根据与第十三编程状态p13和第十四编程状态p14对应的阈值电压分布的错误概率,但本公开不限于此。例如,上述错误可以发生在其他编程状态的阈值电压分布的尾部。存储器控制器110可以通过基于针对多个编程状态中的每一个的多个读取电压执行多个读取操作来读取多个读取数据。错误位置管理器112可以通过与上述方案类似的方案,基于多个读取数据,根据每个编程状态生成错误位置信息epi。
78.然后,参照图1和图7,存储器控制器110的错误位置管理器112可以基于ecc引擎111的ecc解码结果生成错误位置信息epi。
79.例如,ecc引擎111可以包括ecc编码器112a和ecc解码器112b。ecc编码器112a可以对要存储在存储装置120中的第一数据dt1执行ecc编码以生成ecc数据dt_ecc。ecc数据dt_ecc可以与第一数据dt1一起存储在存储装置120中。ecc解码器112b可以基于第一存储数据dt1_s和从存储装置120读取的ecc数据dt_ecc执行ecc解码。可以通过ecc解码检测和校正第一存储数据dt1_s的错误。
80.在这种情况下,错误位置管理器112可以从ecc引擎111的ecc解码器112b接收关于检测到的错误的错误数据er。错误位置管理器112可以基于错误数据er生成错误位置信息epi。
81.在一些示例实施例中,错误位置信息epi是指示在相应数据处发生的错误的位置或发生错误的存储单元的位置的信息。也就是说,可以理解,本公开的错误位置信息epi是与由ecc引擎111生成的ecc数据或奇偶校验位明显不同的分量。
82.如上所述,存储器控制器110的错误位置管理器112可以被配置为通过各种方案通过提取存储在存储装置120中的数据的错误位置来生成错误位置信息。在一些示例实施例中,错误位置信息epi可以是直接指示存储在存储装置120中的数据处发生的错误的位置、发生错误的位的位置或者发生错误的存储单元的位置的信息,并且可以是与ecc数据或奇偶校验数据不同的分量以用于校正数据的错误。
83.图8是示出图7的存储器装置的框图。图9是用于描述图8的存储装置的错误位置信息提取操作的示意图。在参照图5至图7描述的一些示例实施例中,可以根据存储器控制器110的操作和控制来提取错误位置信息epi。然而,本公开不限于此。例如,可以在存储装置120中提取错误位置信息epi,并且存储器控制器110可以被配置为收集和管理由存储装置120提取的错误位置信息epi。
84.参照图1、图8和图9,存储装置120可以包括存储单元阵列121、地址解码器122、控制逻辑和电压产生电路(在下文中称为“控制逻辑电路”)123、页面缓冲电路124、以及输入/输出电路125。
85.存储单元阵列121可以包括多个存储块。多个存储块中的每一个可以具有与参照图2描述的第一存储块blk1的结构类似的结构。
86.地址解码器122可以通过串选择线ssl、字线wl和接地选择线gsl与存储单元阵列121连接。地址解码器122可以从存储器控制器110接收地址addr并对其进行解码。地址解码器122可以基于解码结果控制串选择线ssl、字线wl和接地选择线gsl的电压。
87.控制逻辑电路123可以生成存储装置120操作所需的各种操作电压。例如,各种操作电压可以包括多个编程电压、多个验证电压、多个通过电压、多个选择读取电压、多个非选择读取电压、多个擦除电压等。控制逻辑电路123可以从存储器控制器110接收命令cmd和控制逻辑ctrl,并且可以基于接收到的信号控制存储装置120的组件。
88.页面缓冲电路124可以通过位线bl与存储单元阵列121连接。页面缓冲电路124可以临时存储从存储单元阵列121读取的数据或要存储在存储单元阵列121中的数据。例如,页面缓冲电路124可以通过位线bl从存储单元阵列121读取数据,或者可以通过位线bl将数据存储在存储单元阵列121中。
89.输入/输出电路125可以与存储器控制器110交换数据“data”。输入/输出电路125可以通过数据线dl将从存储器控制器110接收的数据“data”提供给页面缓冲电路124,或者可以通过数据线dl从页面缓冲电路124接收要发送到存储器控制器110的数据“data”。
90.在一些示例实施例中,存储装置120还可以包括错误位置信息提取器126。错误位置信息提取器126可以被配置为提取指示存储在存储单元阵列121中的数据的错误位置的错误位置信息epi。
91.例如,如图9所示,在存储器控制器110的控制下,存储装置120可以在存储单元阵列121的第一存储块blk1的第五字线wl5处(或第五字线wl5的存储单元中)对第一数据dt1进行编程(图9的操作

)。在这种情况下,如上所述,第五字线wl5处编程后的第一存储数据dt1_s可能包括错误。
92.在完成与第一数据dt1相关联的编程操作之后,存储装置120可以从第五字线wl5(或从第五字线wl5的存储单元)读取第一存储数据dt1_s。存储装置120的错误位置信息提取器126可以通过比较第一存储数据dt1_s和第一数据dt1来生成错误数据er。错误位置信
息提取器126可以基于错误数据er生成错误位置信息epi。错误位置信息提取器126的操作与参照图5描述的错误位置管理器112的操作类似,并且因此,将省略额外的描述以避免冗余。
93.如上所述,在针对每一页面或字线执行了编程操作之后,存储装置120可以通过读取编程后的数据并将读取数据与原始数据进行比较来提取错误位置信息epi。
94.在图8和图9的一些示例实施例中,描述了存储装置120还包括错误位置信息提取器126的配置,但本公开不限于此。例如,存储装置120可以通过使用页面缓冲电路124对第一数据dt1和第一存储数据dt1_s执行比较操作(例如,xor操作),并且可以基于比较操作的结果提取错误位置信息epi。
95.在图8和图9的一些示例实施例中,描述了存储装置120通过比较原始数据和存储数据来提取错误位置信息epi的配置,但本公开不限于此。例如,存储装置120可以通过使用多个读取电压对第一存储数据dt1_s重复执行读取操作。存储装置120可以检测属于每个编程状态的阈值电压分布的尾部区域(参照图6)的存储单元(例如,退化的存储单元)的位置。存储装置120可以基于检测到的存储单元的位置生成错误位置信息epi。
96.在一些示例实施例中,可以通过各种方案向存储器控制器110提供由存储装置120生成的错误位置信息epi。例如,响应于从存储器控制器110接收的编程命令,存储装置120可以执行编程操作。在完成编程操作之后,通过状态读取操作,存储器控制器110可以检查存储装置120的编程操作是否完成。在一些示例实施例中,通过用于检查存储装置120的编程操作是否完成的状态读取操作,可以将错误位置信息epi从存储装置120提供给存储器控制器110。可替换地,响应于存储器控制器110的显式请求(或单独的命令),存储装置120可以生成错误位置信息epi,并且可以将错误位置信息epi提供给存储器控制器110。
97.如上所述,错误位置信息epi可以由存储器控制器110或存储装置120生成。上述提取错误位置信息epi的操作是用于容易地描述本公开的示例实施例的示例,并且本公开不限于此。
98.图10a至图10d是用于描述根据本公开的一些示例实施例的错误位置提取时间点的示意图。在一些示例实施例中,错误位置信息epi可以指示在存储装置120中编程的数据的错误位置或与错误对应的存储单元的位置。错误位置信息epi可以在数据被编程之后立即被提取、在从数据被编程的时间点经过给定时间之后被提取、或者在执行了特定单元的编程操作之后被提取。
99.在一些示例实施例中,可以通过从存储装置120读取的状态信息识别数据被编程的时间点。例如,存储器控制器110可以向存储装置120发送编程命令、地址和数据,以出于对存储装置120中的数据进行编程的目的,并且响应于编程命令,存储装置120可以执行编程操作。当存储装置120的编程操作完成时,存储器控制器110可以向存储装置120发送状态读取命令,并且存储装置120可以发送关于编程操作是否完成的信息作为状态信息。通过上述状态读取操作,存储器控制器110可以检查存储装置120的编程操作是否完成。
100.下面,为了容易地描述提取错误位置信息epi的时间点,假设存储器控制器110对存储装置120中的数据进行编程并且从存储装置120中提取错误位置信息epi。然而,本公开不限于此。例如,提取错误位置信息epi的操作可以在存储装置120中自动执行,或者可以在存储器控制器110的控制下在存储装置120中执行。下面,可以基于参照图1至图9描述的操
作方法中的至少一个执行错误位置信息提取操作。
101.例如,参照图1、图2、图10a、图10b、图10c和图10d,在存储器控制器110的控制下,存储装置120可以以字线为单位执行编程操作。例如,在存储器控制器110的控制下,存储装置120可以对第一存储块blk1的第一字线wl1至第八字线wl8顺序地执行编程操作。在这种情况下,存储装置120可以按照从最高(uppermost)字线到最低(lowermost)字线的顺序(例如,wl8

wl7

wl6

wl5

wl4

wl3

wl2

wl1)执行编程操作。在一些示例实施例中,字线的编程顺序可以由存储器控制器110基于存储装置120的物理特性来控制,并且可以理解,本公开不限于所示出的编程顺序。
102.首先,存储器控制器110可以以字线为单位重复执行编程操作和错误位置信息提取操作。例如,如图10a所示,存储器控制器110可以对第一存储块blk1的第八字线wl8执行编程操作(参照图10a的操作[1])。之后,存储器控制器110可以对第一存储块blk1的第八字线wl8执行错误位置信息提取操作(参照图10a的操作[2])。接下来,存储器控制器110可以对第七字线wl7执行编程操作(参照图10a的操作[3])。之后,存储器控制器110可以对第七字线wl7执行错误位置信息提取操作(参照图10a的操作[4])。
[0103]
类似地,存储器控制器110可以对第六字线wl6至第一字线wl1中的每一个执行编程操作和错误位置信息提取操作的对(在下文中称为操作对([x],[y])),也就是说,可以对第六字线wl6至第一字线wl1顺序地执行操作对([5],[6])、操作对([7],[8])、操作对([9],[10])、操作对([11],[12])、操作对([13],[14])和操作对([15],[16])。也就是说,当存储器控制器110以字线为单位执行编程操作和错误位置信息提取操作时,存储器控制器110可以在对目标字线执行编程操作之后立即对目标字线执行错误位置信息提取操作。
[0104]
可替换地,当存储器控制器110以字线为单位重复执行编程操作和错误位置信息提取操作时,存储器控制器110可以在对目标字线的邻近字线执行编程操作之后对目标字线执行错误位置信息提取操作。例如,如图10b所示,存储器控制器110可以对第八字线wl8执行编程操作(参照图10b的操作[1])。接下来,存储器控制器110可以对第七字线wl7执行编程操作(参照图10b的操作[2])。然后,存储器控制器110可以对第八字线wl8执行错误位置信息提取操作(参照图10b的操作[3])。之后,存储器控制器110可以对第六字线wl6执行编程操作(参照图10b的操作[4])。之后,存储器控制器110可以对第七字线wl7执行错误位置信息提取操作(参照图10b的操作[5])。类似地,对于第五字线wl5至第一字线wl1中的每一个,存储器控制器110可以执行编程操作(参照图10b的操作[6]、[8]、[10]、[12]或[14]),并且可以在完成对邻近字线的编程操作之后,执行错误位置信息提取操作(参照图10b的操作[7]、[9]、[11]、[13]、[15]或[16])。
[0105]
如上所述,当存储器控制器110可以以字线为单位交替执行编程操作和错误位置信息提取操作时,可以在各种时间点执行错误位置信息提取操作:紧接在完成编程操作之后、在从完成编程操作的时间点经过给定时间之后、以及在完成邻近字线的编程操作之后。
[0106]
可替换地,存储器控制器110可以在执行了给定单元的编程操作之后执行错误位置信息提取操作。例如,如图10c所示,存储器控制器110可以对第一存储块blk1的第八字线wl8至第五字线wl5执行编程操作(参照图10c的操作[1])。在一些示例实施例中,存储器控制器110可以以页面或字线为单位对第八字线wl8至第五字线wl5执行编程操作。接下来,存储器控制器110可以对第八字线wl8至第五字线wl5执行错误位置信息提取操作(参照图10c
的操作[2])。在一些示例实施例中,存储器控制器110可以以页面或字线为单位对第八字线wl8至第五字线wl5执行错误位置信息提取操作。类似地,存储器控制器110可以对第四字线wl4至第一字线wl1执行编程操作(参见图10c的操作[3]),并且然后可以对第四字线wl4至第一字线wl1执行错误位置信息提取操作(参见图10c的操作[4])。
[0107]
在一些示例实施例中,其中包括第八字线wl8至第五字线wl5的字线区或子块可以与其中包括第四字线wl4至第一字线wl1的字线区或子块不同。也就是说,存储器控制器110可以以字线区、子块或字线为单位重复执行编程操作和错误位置信息提取操作,其数量是预先确定的。
[0108]
替代地,存储器控制器110可以在以存储块为单位执行编程操作之后执行错误位置信息提取操作。例如,如图10d所示,存储器控制器110可以对第一存储块blk1执行编程操作(参照图10d的操作[1])。在一些示例实施例中,可以以字线为单位执行与第一存储块blk1相关联的编程操作。之后,存储器控制器110可以对第一存储块blk1执行错误位置信息提取操作(参照图10d的操作[2])。在一些示例实施例中,可以以字线为单位执行与第一存储块blk1相关联的错误位置信息提取操作。
[0109]
图11a至图11d是用于描述在存储装置中编程错误位置信息的操作的示意图。为了附图的简洁和描述的方便,省略了对于在存储装置120中编程错误位置信息epi不必要的组件。
[0110]
下面,为了描述的方便,描述将被给出为以存储块为单位提取错误位置信息epi,但本公开不限于此。例如,可以以字线或页面为单位在各种时间点提取错误位置信息epi,如参照图10a至图10d描述的一些示例实施例那样。
[0111]
如参照图10a至10d描述的,存储器控制器110可以在各种操作时间点提取与存储在存储装置120中的数据相关联的错误位置信息epi。在一些示例实施例中,提取的错误位置信息epi可以由给定单元收集。例如,存储在存储装置120中的一页数据可以是8kb。可能需要2-字节的信息来表述在8kb数据处发生的一个错误的位置。页(例如,8kb大小的页面)可以包括与4k错误相关联的错误位置信息epi,并且可以通过一个编程操作在存储装置120中对与4k错误相关联的错误位置信息epi进行编程。也就是说,存储器控制器110可以收集给定大小的与包括在多个页面或多个字线中的多个错误相关联的错误位置信息epi,并且可以在存储装置120中对收集的错误位置信息epi进行编程。
[0112]
详细地,如图11a所示,存储器控制器110可以对第一存储块blk1的第八字线wl8至第一字线wl1执行编程操作,并且可以执行错误位置信息提取操作。与第一存储块blk1相关联的错误位置信息epi可以由存储器控制器110收集。收集的错误位置信息epi可以在第一存储块blk1的第一虚拟字线dwl1或第二虚拟字线dwl2处被编程。
[0113]
在一些示例实施例中,如参照图2描述的,第一存储块blk1可以包括与第一虚拟字线dwl1和第二虚拟字线dwl2连接的第一虚拟存储单元dmc1和第二虚拟存储单元dmc2。在一些示例实施例中,第一虚拟存储单元dmc1和第二虚拟存储单元dmc2可以是不用于存储用户数据的存储单元,并且可以被提供用于第一存储块blk1的可靠性。根据本公开的一些示例实施例,可以在第一虚拟存储单元dmc1和第二虚拟存储单元dmc2中对错误位置信息epi进行编程。
[0114]
替代地,如图11b所示,存储器控制器110可以在第一存储块blk1的边缘字线(例
如,第八字线wl8和第一字线wl1)处对错误位置信息epi进行编程。在一些示例实施例中,在第一存储块blk1中包括的字线wl1至wl8之中物理上最靠近位线bl的第八字线wl8可以是最高字线,并且在字线wl1至wl8之中物理上最靠近公共源极线csl的第一字线wl1可以是最低字线。为了提高存储在第一存储块blk1中的数据的可靠性,与最高字线和最低字线连接的存储单元中的每一个可以被配置为根据第一存储块blk1的物理特性存储相对较小数量的位。例如,包括在第一存储块blk1中的存储单元可以作为tlc操作。在这种情况下,与第一存储块blk1的存储单元之中最高字线和最低字线连接的存储单元可以作为slc或mlc操作
[0115]
在这种情况下,存储器控制器110可以在第一存储块blk1的第七字线wl7至第二字线wl2处对用户数据进行编程,并且可以在第八字线wl8或第一字线wl1处对错误位置信息epi进行编程。
[0116]
也就是说,如上所述,存储器控制器110可以在特定存储块的虚拟字线处或在特定存储块的最高字线和最低字线处对特定存储块的错误位置信息epi进行编程。在一些示例实施例中,在其中编程了错误位置信息epi的存储单元中的每个中存储的位数可以少于在其中编程了用户数据的存储单元中的每个中存储的位数。
[0117]
可替换地,如图11c所示,存储器控制器110可以在与第一存储块blk1不同的第二存储块blk2的最高字线wl8处对第一存储块blk1的第一错误位置信息epi1进行编程。在一些示例实施例中,第二存储块blk2可以是分配在第一存储块blk1之后的存储块。尽管在图11c中未示出,第二存储块blk2的第二错误位置信息epi2可以在分配在第二存储块blk2之后的任何其他存储块的最高字线处被编程。在一些示例实施例中,图11c的最高字线可以用最低字线(例如,wl1)或虚拟字线来代替。
[0118]
替代地,如图11d所示,存储器控制器110可以提取并收集第一、第二和第三存储块blk1、blk2和blk3的第一、第二和第三错误位置信息epi1、epi2和epi3。存储器控制器110可以在单独的存储块blka处对第一、第二和第三错误位置信息epi1、epi2和epi3进行编程。在一些示例实施例中,第一、第二和第三存储块blk1、blk2和blk3的存储单元可以作为tlc操作,并且单独的存储块blka的存储单元可以作为slc操作。
[0119]
如参照图11a至11d描述的,存储器控制器110可以收集多个错误位置信息epi,并且可以对在存储装置120的特定区域处收集的多个错误位置信息epi进行编程。在这种情况下,一个错误位置信息epi可以是指示在页面单元或给定大小的数据处发生的错误的位置的信息。也就是说,一个错误位置信息epi的大小可以小于一个页面的大小。多个错误位置信息epi可以具有与一个页面相同的大小或者可以具有与存储装置120的编程单元相同的大小。
[0120]
在一些示例实施例中,存储器控制器110可以压缩多个错误位置信息epi,并且可以在存储装置120中对压缩后的数据进行编程。在这种情况下,通过使用相同数量的存储单元存储在存储装置120中的错误位置信息epi的量可以增加。可替换地,通过ecc引擎111的ecc编码器112a,存储器控制器110可以通过生成与错误位置信息epi相关联的典型表现(syndrome)来压缩错误位置信息epi。
[0121]
图12是用于描述图4的读取操作的示意图。在一些示例实施例中,基于上述一些示例实施例,存储器控制器110可以将关于存储在存储装置120中的数据的错误位置信息epi存储在存储装置120中。存储器控制器110可以通过使用错误位置信息epi来执行读取操作
或ecc解码操作。
[0122]
例如,如图12所示,存储器控制器110可以从存储装置120读取第一存储数据dt1_s和错误位置信息epi。在一些示例实施例中,用于读取第一存储数据dt1_s的第一读取操作和用于读取错误位置信息epi的第二读取操作可以彼此不同。例如,存储器控制器110可以通过向存储装置120发送第一地址和读取命令从存储装置120读取第一存储数据dt1_s,并且可以通过向存储装置120发送第二地址和读取命令从存储装置120读取错误位置信息epi。
[0123]
存储器控制器110的错误位置管理器112可以基于第一存储数据dt1_s和错误位置信息epi来生成改进数据dt_rf。例如,如上所述,错误位置信息epi可以指示包括在第一存储数据dt1_s中的错误的位置。也就是说,错误位置管理器112可以基于错误位置信息epi识别第一存储数据dt1_s的错误位置,并且可以通过倒置与错误位置信息epi对应的位值(例如,0

1或1

0)来生成改进数据dt_rf。在一些示例实施例中,与第一存储数据dt1_s相比,改进数据dt_rf可以包括相对较少数量的错误。存储器控制器110的ecc引擎111可以基于改进数据dt_rf执行ecc解码并且可以生成校正数据dt_cor。
[0124]
在一些示例实施例中,在存储器控制器110的ecc引擎111通过与第一存储数据dt1_s相关联的ecc解码操作未能校正第一存储数据dt1_s的错误的情况下,可以执行参照图12描述的错误校正操作。也就是说,由于第一存储数据dt1_s的错误的一部分是基于错误位置信息epi被改进的,包括在改进数据dt_rf中的错误可以被ecc引擎111校正。因此,提高了存储系统的可靠性。
[0125]
在一些示例实施例中,ecc引擎111可以通过使用编码调制(诸如软解码、低密度奇偶校验(ldpc)码、bch码、涡轮码、reed-solomon码、卷积码、递归系统码(rsc)、网格编码调制(tcm)或块编码调制(bcm)或者各种其他方案)来校正错误。
[0126]
图13和图14是用于描述生成改进数据的操作的示意图。为了附图的简洁和描述的方便,省略了对于存储器控制器110的错误位置管理器112生成改进数据dt_rf不必要的组件。然而,本公开不限于此。例如,将参照图13和图14描述的生成改进数据dt_rf的操作可以在由存储器控制器110执行的第一ecc解码失败之后执行。
[0127]
在一些示例实施例中,可以通过倒置以下数据的位之中与错误位置信息epi对应的位来生成改进数据dt_rf:硬判决数据、软判决数据或从存储装置120读取的目标数据。
[0128]
参照图1、图13和图14,由于各种因素,存储在存储装置120中的第一存储数据dt1_s处可能附加地发生错误。在这种情况下,包括附加错误的第一存储数据dt1_s'可能保持在存储装置120中。例如,存储在存储装置120中的原始数据可以具有位串“10011001”。实际存储在存储装置120中的第一存储数据dt1_s可以具有位串“10001001”。在这种情况下,从lsb起的第五位可能是错误,并且错误位置信息epi可以具有指示从lsb起的第五个位置的值“101”。在存储了第一存储数据dt1_s之后,由于各种因素,可能在从lsb起的第二位处发生错误。在这种情况下,包括附加错误的第一存储数据dt1_s'可能具有位串“10001011”。
[0129]
在一些示例实施例中,存储器控制器110可以基于错误位置信息epi校正从存储装置120读取的硬判决数据或目标数据的错误的一部分。
[0130]
例如,如图13所示,存储器控制器110可以从存储装置120读取第一存储数据dt1_s'。存储器控制器110可以从存储装置120读取与第一存储数据dt1_s'对应的错误位置信息
epi。在一些示例实施例中,用于读取第一存储数据dt1_s'的读取操作和用于读取错误位置信息epi的读取操作可以彼此不同。
[0131]
存储器控制器110的错误位置管理器112可以基于错误位置信息epi生成错误数据er。错误数据er可以具有指示从lsb起的第五位是错误的位串“00010000”。错误位置管理器112可以通过比较第一存储数据dt1_s'和错误数据er(例如,对第一存储数据dt1_s'和错误数据er执行互斥或运算(exclusive or operation))来生成改进的第一数据dt1_rf。在这种情况下,改进的第一数据dt1_rf可以具有位串“10011011”。也就是说,在改进的第一数据dt1_rf的情况下,与原始数据相比,可以校正与错误位置信息epi对应的位置的错误。
[0132]
在一些示例实施例中,在改进的第一数据dt1_rf的情况下,可以通过存储器控制器110中的ecc引擎111的ecc解码操作来校正错误。例如,假设ecc引擎111能够校正1位错误。在这种情况下,因为第一存储数据dt1_s'包括2位错误,第一存储数据dt1_s'的错误可能无法被ecc引擎111校正。相反,因为改进的第一数据dt1_rf包括1位错误,改进的第一数据dt1_rf的错误可以被ecc引擎111校正。也就是说,存储器控制器110可以通过基于与读取数据对应的错误位置信息epi来校正从存储装置120读取的数据的错误的一部分来生成改进数据,并且可以基于改进数据执行ecc解码,并且因此,保证了数据的可靠性。
[0133]
在一些示例实施例中,存储器控制器110可以基于错误位置信息epi来改变从存储装置120读取的软判决数据的位中的至少一个的值。例如,如图14所示,通过软判决读取操作,存储器控制器110可以从存储装置120读取与第一存储数据dt1_s'相关联的多个软判决数据dt1_sd。在一些示例实施例中,软判决读取操作可以包括通过使用多个读取电压对同一字线或同一页面重复执行读取操作,使得生成多个软判决数据dt1_sd。
[0134]
存储器控制器110可以从存储装置120读取错误位置信息epi。存储器控制器110的错误位置管理器112可以基于错误位置信息epi生成错误数据er。错误位置管理器112可以基于错误数据er改进多个软判决数据dt1_sd中的至少一个,并且可以生成改进的软判决数据dt1_sd_rf。改进的软判决数据dt1_sd_rf可以被提供给ecc引擎111,并且ecc引擎111可以基于改进的软判决数据dt1_sd_rf执行软判决解码。
[0135]
图15是示出根据本公开的示例性实施例的主机存储系统的框图。参照图15,主机存储系统1000可以包括主机1100和存储装置1200。此外,存储装置1200可以包括存储器控制器1210和非易失性存储器(nvm)1220。根据本公开的示例性实施例,主机1100可以包括主机控制器1110和主机存储器1120。主机存储器1120可以用作缓冲存储器,其被配置为临时存储要发送到存储装置1200的数据或从存储装置1200接收的数据。
[0136]
存储装置1200可以包括存储介质,其被配置为响应于来自主机1100的请求而存储数据。作为示例,存储装置1200可以包括固态驱动器(ssd)、嵌入式存储器和可装卸的外部存储器中的至少一个。当存储装置1200是ssd时,存储装置1200可以是符合非易失性存储器express(nvme)标准的装置。当存储装置1200是嵌入式存储器或外部存储器时,存储装置1200可以是符合通用闪存(ufs)标准或嵌入式多媒体卡(emmc)标准的装置。主机1100和存储装置1200均可以根据采用的标准协议来生成包(packet)并发送该包。
[0137]
当存储装置1200的非易失性存储器1220包括闪存时,所述闪存可以包括2d nand存储阵列或3d(或垂直)nand(vnand)存储阵列。作为另一示例,存储装置1200可以包括各种其他种类的非易失性存储器。例如,存储装置1200可以包括磁性ram(mram)、自旋转移扭矩
mram、导电桥式ram(cbram)、铁电ram(feram)、相变ram(pram)、电阻存储器(电阻式ram)以及各种其他类型的存储器。
[0138]
根据一实施例,主机控制器1110和主机存储器1120可以实现为单独的半导体芯片。可替换地,在一些实施例中,主机控制器1110和主机存储器1120可以集成在同一半导体芯片中。作为示例,主机控制器1110可以是包括在应用处理器中的多个模块中的任何一个,并且应用处理器可以实现为片上系统(soc)。此外,主机存储器1120可以是应用处理器中包括的嵌入式存储器或应用处理器外部的非易失性存储器或存储器模块。
[0139]
主机控制器1110可以管理将主机存储器1120的缓冲区域的数据(例如,写入数据)存储在非易失性存储器1220中的操作或将非易失性存储器1220的数据(例如,读取数据)存储在缓冲区域中的操作。
[0140]
存储器控制器1210可以包括主机接口1211、存储器接口1212和中央处理单元(cpu)1213。另外,存储器控制器1210还可以包括闪存转换层(ftl)1214、包管理器1215、缓冲存储器1216、错误校正码(ecc)引擎1217和高级加密标准(aes)引擎1218。存储器控制器1210可以进一步包括其中装载有闪存转换层(ftl)1214的工作存储器(未示出)。cpu 213可以执行闪存转换层来控制非易失性存储器1220上的数据写入和读取操作。
[0141]
主机接口1211可以向主机1100发送包和从主机1100接收包。从主机1100发送到主机接口1211的包可以包括命令或要被写入非易失性存储器1220的数据等。从主机接口1211发送到主机1100的包可以包括对命令的响应或从非易失性存储器1220读取的数据等。存储器接口1212可以将要被写入非易失性存储器1220的数据发送到非易失性存储器1220或接收从非易失性存储器1220读取的数据。存储器接口1212可以被配置为符合诸如切换(toggle)或开放nand闪存接口(onfi)的标准协议。
[0142]
闪存转换层1214可以执行各种功能,例如地址映射操作、磨损均衡操作以及垃圾收集操作。地址映射操作可以是将从主机1100接收的逻辑地址转换为用于在非易失性存储器1220中实际存储数据的物理地址的操作。磨损均衡操作可以是通过允许均匀地使用非易失性存储器1220的块来防止特定块的过度退化的技术。作为示例,磨损均衡操作可以通过使用平衡物理块的擦写计数的固件技术来实现。垃圾收集操作可以是通过在将现有块的有效数据复制到新块之后擦除现有块来确保非易失性存储器1220中的可用容量的技术。
[0143]
包管理器1215可以根据同意主机1100的接口的协议生成包,或者从从主机1100接收到的包中解析各种类型的信息。另外,缓冲存储器1216可以临时存储要写入非易失性存储器1220的数据或要从非易失性存储器1220读取的数据。尽管缓冲存储器1216可以是包括在存储器控制器1210中的组件,但是缓冲存储器1216可以在存储器控制器1210的外部。
[0144]
ecc引擎1217可以对从非易失性存储器1220读取的读取数据执行错误检测和校正操作。更具体地,ecc引擎1217可以生成用于要写入到非易失性存储器1220的写入数据的奇偶校验位,并且所生成的奇偶校验位可以与写入数据一起存储在非易失性存储器1220中。在从非易失性存储器1220读取数据期间,ecc引擎1217可以通过使用读取数据以及从非易失性存储器1220读取的奇偶校验位来校正读取数据中的错误,并输出错误校正后的读取数据。
[0145]
aes引擎1218可以通过使用对称密钥算法对输入到存储器控制器1210的数据执行加密操作和解密操作中的至少一个。
[0146]
在一些示例实施例中,存储器控制器1210可以基于参照图1至图14描述的操作方法提取关于存储在非易失性存储装置1220中的数据的错误位置信息epi,可以将提取的错误位置信息epi存储在非易失性存储装置1220中,并且可以通过使用错误位置信息epi来改进从非易失性存储装置1220读取的数据。
[0147]
在一些示例实施例中,在存储器控制器1210中,在其中存储错误位置信息epi的区域可以由闪存转换层1214管理。
[0148]
图16是根据一些示例实施例的应用了存储装置的系统2000的示意图。图16的系统2000基本上可以是移动系统,诸如便携式通信终端(例如,移动电话)、智能手机、平p板个人计算机(c)、可穿戴装置、医疗保健装置或物联网(iot)装置。但是,图16的系统2000不必限于移动系统,并且可以是pc、膝上型计算机、服务器、媒体播放器或汽车装置(例如,导航装置)。
[0149]
参照图16,系统2000可以包括主处理器2100、存储器(例如,2200a和2200b)以及存储装置(例如,2300a和2300b)。此外,系统2000可以包括图像捕获装置2410、用户输入装置2420、传感器2430、通信装置2440、显示器2450、扬声器2460、供电装置2470以及连接接口2480中的至少一个。
[0150]
主处理器2100可以控制系统2000的所有操作,更具体地,可以控制系统2000中包括的其他组件的操作。主处理器2100可以被实现为通用处理器、专用处理器或应用程序处理器。
[0151]
主处理器2100可以包括至少一个cpu核2110,并且还包括控制器2120,其被配置为控制存储器2200a和2200b和/或存储装置2300a和2300b。在一些示例实施例中,主处理器2100可以进一步包括加速器2130,其是用于诸如人工智能(ai)数据操作的高速数据操作的专用电路。加速器2130可以包括图形处理单元(gpu)、神经处理单元(npu)和/或数据处理单元(dpu),并且被实现为与主处理器2100的其他组件物理上分离的芯片。
[0152]
存储器2200a和2200b可以用作系统2000的主存储装置。尽管存储器2200a和2200b中的每一个可以包括易失性存储器,诸如静态随机存取存储器(sram)和/或动态ram(dram),存储器2200a和2200b中的每一个可以包括非易失性存储器,诸如闪存、相变ram(pram)和/或电阻式ram(rram)。存储器2200a和2200b可以在与主处理器2100相同的封装中实现。
[0153]
存储装置2300a和2300b可以用作非易失性存储装置,其被配置为不管是否被供电都存储数据,并且具有比存储器2200a和2200b更大的存储容量。存储装置2300a和2300b可以分别包括存储器控制器(strg ctrl)2310a和2310b以及非易失性存储器(nvm)2320a和2320b,其被配置为经由存储器控制器2310a和2310b的控制来存储数据。尽管nvm 2320a和2320b可以包括具有二维(2d)结构或三维(3d)v-nand结构的闪存,但是nvm 2320a和2320b可以包括其他类型的nvm,诸如pram和/或rram。
[0154]
存储装置2300a和2300b可以与主处理器2100物理上分离并且包括在系统2000中,或者可以在与主处理器2100相同的封装中实现。另外,存储装置2300a和2300b可以具有固态装置(ssds)或存储卡的类型,并且可以通过诸如稍后将描述的连接接口2480之类的接口与系统2000的其他组件可移除地结合。存储装置2300a和2300b可以是应用了诸如通用闪存(ufs)、嵌入式多媒体卡(emmc)或非易失性存储器express(nvme)之类的标准协议的装置,
但不限于此。
[0155]
在一些示例实施例中,存储装置2300a和2300b可以是参照图2至图15描述的存储系统或存储装置。存储装置2300a和2300b可以基于参照图2至图15描述的操作方法来操作。
[0156]
图像捕获装置2410可以拍摄静止图像或运动图像。图像捕获装置2410可以包括照相机、便携式摄像机和/或网络摄像头。
[0157]
用户输入装置2420可以接收由系统2000的用户输入的各种类型的数据并且包括触摸板、键区、键盘、鼠标和/或麦克风。
[0158]
传感器2430可以检测可以从系统2000的外部获得的各种类型的物理量,并将所检测的物理量转换成电信号。传感器2430可以包括温度传感器、压力传感器、照度传感器、位置传感器、加速度传感器、生物传感器和/或陀螺仪传感器。
[0159]
通信装置2440可以根据各种通信协议在系统2000外部的其他装置之间发送和接收信号。通信装置2440可以包括天线、收发器和/或调制解调器。
[0160]
显示器2450和扬声器2460可以用作输出装置,其被配置为分别向系统2000的用户输出视觉信息和听觉信息。
[0161]
供电装置2470可以适当地转换从嵌入在系统2000中的电池(未示出)和/或外部电源供应的电力,并且将所转换的电力供应给系统2000的每个组件。
[0162]
连接接口2480可以提供系统2000和外部装置之间的连接,该外部装置连接到系统2000并且能够向系统2000发送数据和从系统2000接收数据。连接接口2480可以通过使用各种接口方案来实现,诸如高级技术附件(ata)、串行ata(sata)、外部sata(e-sata)、小型计算机小型接口(scsi)、串行附接scsi(sas)、外围组件互连(pci)、pci express(pcie)、nvme、ieee 2394、通用串行总线(usb)接口、安全数码(sd)卡接口、多媒体卡(mmc)接口、emmc接口、ufs接口、嵌入式ufs(eufs)接口和紧凑式闪存(cf)卡接口。
[0163]
图17是根据一些示例实施例的应用了存储装置的数据中心3000的示意图。参照图17,数据中心3000可以是收集各种类型的数据并提供服务的设施,并且被称为数据存储中心。数据中心3000可以是用于操作搜索引擎和数据库的系统,并且可以是公司(诸如银行)或政府机构所使用的计算系统。数据中心3000可以包括应用服务器3100至3100n和存储服务器3200至3200m。根据示例实施例,可以不同地选择应用服务器3100至3100n的数量和存储服务器3200至3200m的数量。应用服务器3100至3100n的数量与存储服务器3200至3200m的数量可以不同。
[0164]
应用服务器3100或存储服务器3200可以包括处理器3110和3210以及存储器3120和3220中的至少一个。现在将以存储服务器3200为例进行描述。处理器3210可以控制存储服务器3200的所有操作,访问存储器3220,并且执行加载在存储器3220中的指令和/或数据。存储器3220可以是双数据速率同步dram(ddr sdram)、高带宽存储器(hbm)、混合内存立方体(hmc)、双列直插内存模块(dimm)、傲腾dimm和/或非易失性dimm(nvmdimm)。在一些示例实施例中,存储服务器3200中包括的处理器3210和存储器3220的数量可以被不同地选择。在一些示例实施例中,处理器3210和存储器3220可以提供处理器-存储器对。在一些示例实施例中,处理器3210的数量与存储器3220的数量可以不同。处理器3210可以包括单核处理器或多核处理器。对于存储服务器3200的以上描述可以类似地应用于应用服务器3100。在一些示例实施例中,应用服务器3100可以不包括存储装置3150。存储服务器3200可
以包括至少一个存储装置3250。根据一些示例实施例,存储服务器3200中包括的存储装置3250的数量可以被不同地选择。
[0165]
应用服务器3100至3100n可以通过网络3300与存储服务器3200至3200m通信。网络3300可以通过使用光纤通道(fc)或以太网来实现。在这种情况下,fc可以是用于相对高速的数据传输的介质,并且可以使用具有高性能和高可用性的光开关。根据网络3300的访问方法,可以将存储服务器3200至3200m提供为文件存储、块存储或对象存储。
[0166]
在一些示例实施例中,网络3300可以是专用于存储的网络,诸如存储区域网络(san)。例如,san可以是fc-san,其使用fc网络并且根据fc协议(fcp)实现。作为另一示例,san可以是因特网协议(ip)-san,其使用传输控制协议(tcp)/ip网络并且根据tcp/ip上的scsi或因特网scsi(iscsi)协议来实现。在一些示例实施例中,网络3300可以是通用网络,诸如tcp/ip网络。例如,可以根据诸如以太网fc(fcoe)、网络附加存储(nas)和结构上的nvme(nvme-of)之类的协议来实现网络3300。
[0167]
在下文中,将主要描述应用服务器3100和存储服务器3200。应用服务器3100的描述可以应用于另一应用服务器3100n,并且存储服务器3200的描述可以应用于另一存储服务器3200m。
[0168]
应用服务器3100可以通过网络3300将用户或客户端请求存储的数据存储在存储服务器3200至3200m中的一个。此外,应用服务器3100可以通过网络3300从存储服务器3200至3200m中的一个获得由用户或客户端请求读取的数据。例如,应用服务器3100可以被实现为网络服务器或数据库管理系统(dbms)。
[0169]
应用服务器3100可以通过网络3300访问包括在另一应用服务器3100n中的存储器3120n或存储装置3150n。可替换地,应用服务器3100可以通过网络3300访问包括在存储服务器3200至3200m中的存储器3220至3220m或存储装置3250至3250m。因此,应用服务器3100可以对存储在应用服务器3100至3100n和/或存储服务器3200至3200m中的数据执行各种操作。例如,应用服务器3100可以执行用于在应用服务器3100至3100n和/或存储服务器3200至3200m之间移动或复制数据的指令。在这种情况下,可以将数据从存储服务器3200至3200m的存储装置3250到3250m直接或通过存储服务器3200至3200m的存储器3220到3220m移动到应用服务器3100至3100n的存储器3120至3120n。通过网络3300移动的数据可以是为了安全或隐私而加密的数据。
[0170]
现在将以存储服务器3200为例进行描述。接口3254可以提供处理器3210和控制器3251之间的物理连接以及网络接口卡(nic)3240和控制器3251之间的物理连接。例如,可以使用直接附加存储(das)方案来实现接口3254,其中存储装置3250直接与专用电缆连接。例如,接口3254可以通过使用各种接口方案来实现,诸如ata、sata、e-sata、scsi、sas、pci、pcie、nvme、ieee 1394、usb接口、sd卡接口、mmc接口、emmc接口、ufs接口、eufs接口和/或cf卡接口。
[0171]
存储服务器3200可以进一步包括开关3230和网络互连(nic)3240。开关3230可以经由处理器3210的控制选择性地将处理器3210连接到存储装置3250,或者选择性地将nic 3240连接到存储装置3250。
[0172]
在一些示例实施例中,nic 3240可以包括网络接口卡和网络适配器。nic3240可以通过有线接口、无线接口、蓝牙接口或光接口连接到网络3300。nic3240可以包括内部存储
器、数字信号处理器(dsp)和主机总线接口,并且通过主机总线接口连接到处理器3210和/或开关3230。主机总线接口可以被实现为接口3254的上述示例之一。在一些示例实施例中,nic 3240可以与处理器3210、开关3230和存储装置3250中的至少一个集成。
[0173]
在存储服务器3200至3200m或应用服务器3100至3100n中,处理器可以将命令发送到存储装置3150至3150n和3250至3250m或存储器3120至3120n和3220至3220m并编程或读取数据。在这种情况下,数据可以是由ecc引擎校正了错误的数据。数据可以是对其执行数据总线倒置(dbi)操作或数据掩蔽(dm)操作的数据,并且可以包括循环冗余码(crc)信息。数据可以是为了安全或隐私而加密的数据。
[0174]
存储装置3150至3150n和3250至3250m可以响应于从处理器接收到的读取命令向nand闪存装置3252至3252m发送控制信号和命令/地址信号。因此,当从nand闪存装置3252至3252m读取数据时,可以输入读取使能(re)信号作为数据输出控制信号,因此,可以将数据输出至dq总线。可以使用re信号生成数据选通信号dqs。取决于写入使能(we)信号的上升沿或下降沿,命令和地址信号可以锁存在页面缓冲器中。控制器3251可以控制存储装置3250的所有操作。在一些示例实施例中,控制器3251可以包括sram。控制器3251可以响应于写入命令将数据写入到nand闪存装置3252,或者响应于读取命令从nand闪存装置3252读取数据。例如,可以从存储服务器3200的处理器3210、另一存储服务器3200m的处理器3210m或应用服务器3100和3100n的处理器3110和3110n提供写入命令和/或读取命令。dram 3253可以临时存储(或缓冲)要写入到nand闪存装置3252的数据或从nand闪存装置3252读取的数据。并且,dram 3253可以存储元数据。这里,元数据可以是用户数据或由控制器3251生成的用于管理nand闪存装置3252的数据。存储装置3250可以包括用于安全或隐私性的安全元件(se)。
[0175]
在一些示例实施例中,存储装置3150至3150n和3250至3250m中的每一个可以是参照图1至图16描述的存储装置,并且可以被配置为基于参照图1至图16描述的操作方法来管理错误位置信息。
[0176]
存储器控制器110、epi管理器112、ecc引擎111、存储装置120、存储系统100、ecc解码器112b、ecc编码器112a、epi管理器112、存储单元阵列121、控制逻辑/电压产生电路123、页面缓冲电路124、epi提取器126、i/o电路125、系统1000、存储装置1200、存储装置110、系统2000、主处理器2100、存储器(例如,2200a和2200b)和存储装置(例如,2300a和2300b)、图像捕获装置2410、用户输入装置2420、传感器2430、通信装置2440、显示器2450、扬声器2460、供电装置2470以及连接接口2480、数据中心3000、子组件或本文讨论的其他电路可以包括:硬件(包括逻辑电路);硬件/软件组合,(诸如执行软件的处理器);或其组合。例如,处理电路更具体地可以包括但不限于中央处理单元(cpu)、算术逻辑单元(alu)、数字信号处理器、微型计算机、现场可编程门阵列(fpga)、片上系统(soc)、可编程逻辑单元、微处理器、专用集成电路(asic)等。
[0177]
根据本公开,存储器控制器可以提取关于存储在存储装置中的数据的错误位置信息,并且可以将提取的错误位置信息存储在存储装置中。存储器控制器可以通过使用存储在存储装置中的错误位置信息来改进读取数据的错误,并且可以对改进数据执行错误校正操作。在这种情况下,可以提高校正数据的错误的能力,并且因此,提供了一种被配置为控制具有提高的可靠性的存储装置的存储器控制器的操作方法。
[0178]
虽然已经参照示例实施例描述了本公开,但是对于本领域的普通技术人员将显而易见的是,在不脱离如所附权利要求中阐述的本公开的精神和范围的情况下,可以对其进行各种改变和修改。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1