存储系统及其数据处理方法 本申请要求于2008年9月5日提交的第10-2008-0087877号韩国专利申请的优先权,通过引用将该申请的全部内容包含于此。
【技术领域】
一般地讲,本发明涉及电子装置,更具体地讲,本发明涉及一种存储系统和与存储系统相关的数据处理技术。
背景技术
闪速存储装置是一种EEPROM,其中,经由一次编程操作对多个存储区域进行擦除或编程。传统的EEPROM能够一次(at a stroke)对一个存储区域擦除或编程。这意味着,当使用闪速存储装置的系统对不同的存储区域同时进行读取并写入时,闪速存储装置较快地且更有效地工作。由于围绕用于存储数据的电荷存储器件的绝缘膜的失效,所有类型的闪速存储器和EEPROM会在特定次数的擦除操作之后损坏。
闪速存储装置的优点在于其可以通过这样的方式在硅芯片上存储信息,即,不需要功率来保持所存储的信息。这意味着,如果对芯片切断功率,则在无功耗的情况下保存信息。闪速存储装置的其它特性包括耐冲击和快速读取访问时间。由于这些特性,闪速存储装置通常用于在提供有来自电池的功率的设备中的存储。根据逻辑门类型,将闪速存储装置分为两种类型,即,NOR闪速存储装置和NAND闪速存储装置。
闪速存储装置将信息存储在晶体管阵列中,每个晶体管称作单元(cell),用于存储1位(bit)信息。较新的闪速存储装置(例如,多级单元装置)能够通过改变施加到单元的浮置栅极的电荷的量而每单元存储多于1位。
在具有浮置栅极的闪速存储装置中,最关键的可靠性因素为数据保持特性和可在无劣化的情况下执行的编程/擦除循环的次数(或耐久性)。存储的电荷(电子)会由于各种失效机制(例如,通过有缺陷的多晶硅层间电介质的热离子发射和电荷扩散、离子污染、编程干扰应力等)而从浮置电极漏出。这导致阈值电压降低。当浮置栅极在控制栅极由于读取干扰(read disturbance)而保持处于一定的电压(例如,电源电压或读取电压)的情况下慢慢地获取电子时,效果相反的电荷获取(charge gain)会发生,因此导致阈值电压升高。
因此,存储单元的阈值电压分布会由于电荷损失(charge loss)和电荷获取而逐渐变宽。例如,假设在每个存储单元中存储了2位数据。在这种假设下,如图1A所示,每个存储单元可具有擦除状态E和三个编程状态P1、P2和P3中的一个状态。理想地,在状态E、P1、P2和P3之间存在恒定的单元余量(或读取余量),因此,所示的阈值电压分布10、11、12和13分别对应于状态E、P1、P2和P3。然而,如图1B所示,阈值电压分布10、11、12和13,特别是分别与程序状态P1、P2和P3对应的阈值电压分布11、12和13由于上述的电荷损失和电荷获取而变宽。这意味着,从存储单元读取的数据会包括许多错误位。具体地讲,随着在存储单元中存储的数据位的数量增多,这种现象变得严重。
【发明内容】
本发明旨在提供一种包括闪速存储器的存储系统的数据处理方法,所述数据处理方法包括以下步骤:判断从所述闪速存储器的选择的页面最初读取的数据能否纠正;如果判断出最初读取的数据不能纠正,则基于每个最新确定的读取电压从所述选择的页面最新读取数据;基于与最初读取的数据对应的EDC数据,收集最新读取的数据的无错子扇区;基于与所述最初读取的数据对应的ECC数据,纠正所述无错子扇区的数据。
本发明还旨在提供一种包括闪速存储器和存储控制器的存储系统,所述存储控制器包括纠错处理器和ECC块,所述存储控制器构造为控制所述闪速存储器,其中,当判断出从所述闪速存储器的选择的页面最初读取的数据不能通过ECC块纠正时,所述纠错处理器控制所述闪速存储器,从而根据每个最新确定的读取电压从所述选择地页面最新读取数据,并且所述纠错处理器基于与所述最初读取的数据对应的EDC数据来收集最新读取的数据的无错子扇区。
【附图说明】
根据参照附图的以下描述,本发明的以上和其它目的和特征将变得明显,其中,除非另外指明,否则相同的标号在各个附图中始终指相同的部件,在附图中:
图1A和图1B是用于解释存储单元的阈值电压分布由于电荷损失和电荷获取而变宽的示图;
图2是示出实现本发明各个实施例的存储系统的框图;
图3是示出根据本发明实施例的框图;
图4是用于描述存储系统的数据处理或操作的示图;
图5是示出在存储系统中使用的写入方法的流程图;
图6是示出根据写入方法来改变数据的方式的示图;
图7是示出了在存储系统中使用的读取方法的流程图;
图8是示出根据读取方法来读取数据的方式的示图;
图9是示出根据另一读取方法来读取数据的方式的示图;
图10是用于描述根据本发明另一实施例的存储系统的数据处理或操作的示图;
图11是示出根据另一实施例的在存储系统中使用的写入方法的流程图;
图12是示出根据另一实施例的写入方法来改变数据的方式的示图;
图13是示出根据另一实施例的在存储系统中使用的读取方法的流程图;
图14是用于描述根据另一实施例的读取方法来确定最优化读取电压的过程的示图;
图15是示出根据又一实施例的数据读取方法的示图;
图16是用于描述根据又一实施例的在存储系统中收集无错子扇区的操作的流程图;
图17是示出收集无错子扇区的操作的示图;
图18是示出包括闪速存储器的示意性计算系统的框图;
图19是基于存储器的存储装置的框图;
图20是基于存储器的存储装置的框图。
【具体实施方式】
在下文中,将参照附图详细描述本发明的各个实施例,使用闪速存储装置作为例子对结构和操作特征进行举例说明。然而,本发明构思可以以不同的方式实施,而不应当解释为局限于在此阐述的实施例。而是提供这些实施例以使本公开将是彻底的且完整的,并将把实施例的范围充分地传达给本领域的技术人员。在整个附图中,相同的标号表示相同的元件。
在本说明书中使用的术语“扇区”应当理解为是指ECC(纠错码)处理单位。为了便于描述,将在一个扇区由ECC处理单位组成的假设下描述实施例。然而,可以使用两个或更多个扇区组成ECC处理单位。此外,指示ECC处理单位的术语不限于扇区。
图2是示出实现本发明各个实施例的存储系统的框图。参照图2,存储系统101与主机电子系统(例如,计算机系统)的系统总线102相连。一些示例性的主机电子系统可以包括使用存储系统101的计算机、膝上型计算机、手持式计算机、掌上型计算机、PDA、MP3和其它音频播放器、数字相机、视频相机、电子游戏机、无线和有线电话装置、应答机、录音器、网络路由器或其它系统。
主机电子系统可以包括系统总线102、中央处理器300(例如,微处理器)、输入输出装置(例如,用于提供与电路互连的电路400)和易失性存储器500,如图2所示。一些示例性的输入输出装置可以包括键盘、监视器、调制解调器等。存储系统101可以包括存储控制器100和具有闪速存储单元阵列的闪速存储器200。存储控制器100和闪速存储器200可以是集成电路,通常称之为芯片。可选地,两个或更多个集成电路芯片可以一起形成存储系统101。例如,存储控制器100可以是专用的集成电路,闪速存储器200可以根据所需的存储容量是一个或多个芯片。可以将存储系统101包装成小型卡,该小型卡可以永久地安装在计算机(主机装置)中或者可移除地连接到主机或从主机连接。闪速存储器200可以存储单个位数据和/或多位(多级)数据。具体地讲,闪速存储器200的每个存储单元可以存储2位数据、3位数据或4位数据。
图3是示出根据本发明实施例的存储系统的框图。参照图3,存储控制器100可以包括主机接口110、闪存接口120、嵌入式处理器130、缓冲器140、纠错处理器150和ECC块160。
在图3中示出的主机接口110可以提供与外部装置(即,主机系统)的接口,闪存接口120可以提供与闪速存储器200的接口。例如,闪存接口120可以根据外部装置(例如,主机系统)的请求,控制与闪速存储器200有关的读取和写入操作。嵌入式处理器130可以控制存储控制器100的总体操作。缓冲器140可用于临时存储将存储在闪速存储器200中的数据或从闪速存储器200读取出的数据。此外,缓冲器140可用于存储在存储控制器100内处理过的数据。缓冲器140可以由一个或多个易失性存储器形成。在随后的写入操作过程中,纠错处理器150可以将将要存储在闪速存储器200中的数据改变为能够容易地检测到错误的数据,随后将在下文中对此加以描述。纠错处理器150还可以在读取操作期间使从闪速存储器200读取出的数据的错误位最少化,在下文中也将对此加以描述。ECC块160可以在写入操作过程中从要存储在闪速存储器200中的数据产生ECC(纠错码)数据,并可以在读取操作过程中检测并纠正从闪速存储器200读取出的数据中的错误。ECC块160可以实现为具有一般的纠错能力。
图4是用于描述在图3中示出的存储系统的数据处理或操作的示图。参照图4,当外部装置(即,主机系统)请求写入操作时,数据可从主机系统输入到存储系统101。输入数据可以经由主机接口110临时存储在缓冲器140中。此时,在框1010中,临时存储的输入数据可以由纠错处理器150改变为易于检测到错误的数据。用于产生易于检测到错误的数据的编码方法可以以不同方式实现,在下文中将对此加以描述。在框1020中,通过ECC块160将ECC数据添加到改变的数据中。如标号1030所示,改变的数据可以与ECC数据一起存储在闪速存储器200中。当外部装置(主机系统)请求读取操作时,可以从闪速存储器200读取出数据,如标号1040所示。如上所述,读取数据可以包括改变的数据和ECC数据。然后,在框1050中,在不考虑ECC数据的情况下,纠错处理器150可以使读取的数据的错误位最少化。在框1060中,基于ECC数据,读取的数据内的错误可以由ECC块160检测并纠正。然后,可以将错误处理过的数据发送到外部装置(主机系统)。
在本发明的实施例中,将输入数据改变为易于检测到错误的数据的操作不是在将数据输入到存储控制器时执行的,而是相反地在将数据传输到闪速存储器时执行的。因此,通过在写入操作时将数据改变为易于检测到错误的数据,并在读取操作时使改变的数据的错误位最少化,由此可以通过具有一般纠错能力的ECC块160的纠错能力来纠正错误位。
图5是示出在存储系统中使用的写入方法的流程图,图6是示出根据写入方法来改变数据的方式的示图。在下文中,将参照图5和图6描述存储系统的写入方法。
当外部装置(即,主机系统)请求写入操作时,在步骤S100中,将将要写入在闪速存储器200中的数据经由主机接口110存储在缓冲器140中。例如,输入的数据可以是扇区数据。即,根据传输单元,512B数据可以顺序地存储在缓冲器140中。在步骤S120中,纠错处理器150可以将输入的数据划分为多个子扇区(或多个组)。可以产生标志(flag)信息,从而能够检测相应的子扇区中的错误,标志信息可以是奇偶(parity)数据。奇偶数据可以由N位奇偶数据(N为大于或等于1的整数)形成。因此,如图6所示,可以将输入的512B扇区数据划分为多个子扇区数据,可以将N位奇偶数据PT添加到每个子扇区数据,以提供易于检测到错误的改变的数据。这可以经由纠错处理器150执行。可以以不同方式改变子扇区的数量。
然后,可以将输入的数据(即,改变为易于检测到错误的数据)传递到闪速存储器200。在传递时,ECC块160可以首先在步骤S140中根据公知的方式使用输入的数据来产生ECC数据。ECC数据可以基于标志信息和输入的数据或基于输入的数据来产生。然后,在步骤S160中,输入的数据可以与ECC数据和标志信息一起存储在闪速存储器200中。输入的数据可以存储在闪速存储器200的主要区段(main field)(或区域)中,ECC数据和标志信息可以存储在闪速存储器200的剩余区段(spare field)(或区域)中。
图7是示出在存储系统使用的读取方法的流程图,图8是示出根据读取方法来读取数据的方式的示图。在下文中将参照图7和图8描述存储系统的读取方法。
当请求读取操作时,在存储控制器100的控制下,可以从闪速存储器200读取出数据。更详细地讲,在步骤S200中,在存储控制器100的控制下,可以从闪速存储器200读取出数据。读取的数据可以包括ECC数据和标志信息,并可以存储在缓冲器140中。以公知的方法,ECC块160可以检测读取的数据是否存在错误。如果检测到错误,则ECC块160可以在步骤S210中判断检测到的错误是否可以纠正。如果检测到的错误可以纠正,则在步骤S260中根据公知方式基于ECC数据来纠正读取的数据的错误,然后可以将纠正的读取的数据发送到外部装置(即,主机系统),且读取操作可以结束。同样,如果未检测到错误,则可以将读取的数据传输到外部装置(即,主机系统),且读取操作可以结束。
返回到图7中的步骤S210,如果判断出检测到的错误不能由ECC块160纠正,则在步骤S220中,在纠错处理器150的控制下,可以收集读取的数据的子扇区的无错的子扇区。可以基于对应的标志信息(即,对应的奇偶数据)来选择无错的子扇区。也就是说,纠错处理器150可以基于对应的奇偶数据来判断存储在缓冲器140中的每个子扇区的数据是否存在错误。根据判断结果,可以将无错的子扇区(即,最终数据)存储在缓冲器140的另一区域中,如图8所示。在收集了无错的子扇区之后,纠错处理器150可以随后在步骤S230中控制闪速存储器200,使得在不同的读取条件下从闪速存储器200读取出数据。例如,纠错处理器150可以经由闪存接口120来控制闪速存储器200,使得当前读取操作的读取电压变得低于先前读取操作的读取电压一给定的电压或高于先前读取操作的读取电压一给定的电压。可选地,纠错处理器150可以控制闪速存储器200,从而使读取电压被设置为给定的电压,并根据读取操作的重复而逐渐提高。在改变的读取条件下再次读取的数据可以存储在缓冲器140中。
例如,在重复读取操作时确定的开始读取电压可以比在第一次读取操作过程中使用的读取电压低,并可以考虑存储在存储单元中的数据位的数量、数据保持时间等以不同方式来确定开始读取电压。可选地,在重复读取操作时确定的开始读取电压可以比在第一次读取操作过程中使用的读取电压高。在嵌入式处理器130而不是纠错处理器150的控制下执行读取操作的重复。
在步骤S240中,纠错处理器150可以收集根据改变的读取条件读取的数据的子扇区的无错子扇区。在这种情况下,可以从判断步骤中排除先前判断为无错子扇区的子扇区。如上所述,无错的子扇区可以基于对应的标志信息(即,对应的奇偶数据)来选择。在步骤S250中,判断上述的对于所有子扇区的错误判断和读取过程是否完成。如果判断出对于所有子扇区的错误判断和读取过程未完成,则过程返回到步骤S230。如果判断出对于所有子扇区的错误判断和读取过程完成,则过程前进到步骤S260,在步骤S260中,可以根据公知的方式基于ECC数据来纠正读取的数据的错误。然后,可以将纠正的读取的数据传输到外部装置(即,主机侧),且可以完成读取操作。
在以上实施例中,可以将对于子扇区的错误判断和读取过程限制为对于错误子扇区的给定的读取次数。例如,虽然在对于错误子扇区的给定的读取次数内将任意子扇区判断为有错,但可以将对于所有子扇区的错误判断和读取过程视为由纠错处理器150完成。
由以上描述理解到,可以通过将输入的数据改变为易于检测到错误的数据并收集经由重复的读取过程读取的数据的无错子扇区而使读取的数据的错误位的数量最少化。然后,可以基于ECC数据来纠正错误最少化的数据。换言之,相邻的阈值电压分布会由于制造工艺、存储在存储单元中的数据位的增加、电荷损失和电荷获取而重叠,如图1B所示。由于相邻的阈值电压分布的重叠而出现超过ECC块160的纠错能力的错误。虽然ECC块160的纠错能力未提高,但可以经由以上实施例的数据处理方式来纠正超过ECC块160的纠错能力的错误。
在以上实施例中,可以以不同方式改变作为标志信息的奇偶数据的位数。下面将更充分地描述一些示例方法。
使用1位奇偶数据
在1位奇偶数据的情况下,当“1”的数量为奇数时,将奇偶数据设为“1”,当“1”的数量为偶数时,将奇偶数据设为“0”。如果在该条件下错误地读取子扇区中的一位数据,那么因为所计算的奇偶数据和所读取的(在写入操作时存储的)奇偶数据彼此不同,所以通过纠错处理器150可以将这样的子扇区判断为错误子扇区。如果子扇区中的数据的两个数据位被损坏,则不能判断出子扇区是否错误。但是,在实际情况下,例如,假设在这样的情况下,即,虽然ECC块160具有8位ECC容量,但由于产生10位错误,所以不能恢复数据。在该假设下,如果将一个扇区划分为32个子扇区,则因为在一个子扇区同时产生两位,所以不能恢复10位错误的可能性低。由于该原因,可以应用上述的奇偶方案。如果恢复另一子扇区的错误,那么,尽管这样的错误出现,但是扇区的错误位数量仍在ECC块160的可纠正的范围内,从而经由最后的ECC过程(ECC块)来恢复数据。
使用2位奇偶数据
在使用2位奇偶数据的情况下,可以将X以4为模所得的数确定为奇偶数据。这里,X表示包括在子扇区中的“1”的数量。即,假设子扇区的大小为16。在该假设下,如果包括在16B子扇区中的“1”的数量是65,则65以4为模是1。因此,可以将与“1”对应的“01”确定为2位奇偶数据。在这种情况下,因为可以判断出是否产生错误以及“1”的数量是多还是少,所以能够更准确地补偿数据。在一个子扇区的两个数据位被损坏的情况下,如果将一位的数据“0”偶然读取为数据“1”,且将另一位的数据“1”偶然读取为数据“0”,则不能恢复数据。但是,因为这样的可能性非常低,且相当大地减少了错误产生,所以可以经由具有一般纠错能力的ECC块160(例如,8位ECC或16位ECC)检测并纠正错误。
作为另一示例,在使用3位奇偶数据的情况下,与2位奇偶数据类似,可以通过确定X以8为模所得的数(X是包括在子扇区中的“1”的数量)来提高错误检测能力。
在示例性实施例中,可以使用循环冗余检验(CRC)作为奇偶。在这种情况下,与上述方法比较,虽然同时产生“0”和“1”错误,但仍能够检测出错误。即,在使用3位奇偶数据的情况下,可以提高检测错误的能力。另一方面,不能判断出“1”的数量是多还是少。
应当理解的是,根据示例性实施例的奇偶产生方法不限于本公开。
当使用X以4为模所得的数作为2位奇偶数据(X是包括在子扇区中的“1”的数量)时,可以经由方向特性使用更改进的方法。例如,在使用X以4为模所得的数作为奇偶数据的情况下,当从子扇区计算的奇偶值不同于读取出的奇偶值时,可以判断子扇区的数据是多读取了“1”的数据还是少读取了“1”的数据。假设计算的奇偶值为“00”,读取出的奇偶值为“01”,可以将子扇区的数据判断为少读取了“1”的数据。在这种情况下,改变读取条件,从而多读取了“1”。如图9所示,可以根据改变的读取条件从闪速存储器200读取出数据。假设计算的奇偶值为“01”,读取出的奇偶值为“00”,可以将子扇区的数据判断为多读取了“1”的数据。在这种情况下,改变读取条件,从而少读取了“1”。如图9所示,可以根据改变的读取条件从闪速存储器200读取出数据。
因此,随着读取电压被再次设定为任意方向,判断出多读取了“1”的方向或少读取了“1”的方向。但是,读取条件的改变并不一定意味着错误被减小的方向。然而,在示例性实施例的情况下,因为没有对无错的子扇区进一步进行处理,所以消除了正确读取的数据在下一条件下被读错的可能性,仅在多读取了“1”的读取条件过程中确认少读取了“1”的子扇区的奇偶,作为确认结果而判断出的没有错误的子扇区被选择为最终数据。换言之,如果尽管沿着少读取了“1”的方向读取少读取了“1”的子扇区而没有检测到错误,则实际上没有错误。这意味着,因为奇偶由于错误的另外产生而最终匹配的可能性高,所以消除了错误。同样,当沿着少读取了“1”的方向再次读取子扇区时,多读取了“1”的子扇区被正确读取的可能性高。在这种情况下,可以选择具有匹配的奇偶的数据。在执行读取操作的情况下,可以经由奇偶确认来减少错误。
在示例性实施例中,纠错处理器能够设定用来从使用闪速存储器的时间点工作或者在经过给定的时间(或给定的程序擦除循环)之后工作。
图10是用于描述根据本发明另一实施例的存储系统的数据处理或操作的示图。参照图10,当从外部装置(即,主机系统)请求写入操作时,可以将数据从主机系统输入到存储系统101。在框3010中,输入的数据可以经由主机接口110存储在缓冲器140中。然后,可以将在缓冲器140中存储的数据传输到闪速存储器200。当在缓冲器140中存储的数据被传输到闪速存储器200时,ECC块160可以基于传输的数据产生ECC数据,纠错处理器150可以基于传输的数据产生子扇区单元的EDC(检错码)数据,如框3020所示。扇区单元数据由多个子扇区形成,对每个子扇区产生EDC数据。在下文中将更充分地对此加以描述。然后,可以将传输的数据与ECC数据和EDC数据一起存储在闪速存储器200中,如标号3030所示。
当从外部装置(主机系统)请求读取操作时,可以从闪速存储器200读取出数据,如标号3040所示。读取的数据可以包括原始数据和ECC数据。ECC块160可以基于ECC数据来判断读取的数据是否有错。如果判断出读取的数据有错,则在框3050中ECC块160可以检查读取的数据的错误是否能够纠正。如果判断出读取数据的错误不能通过ECC数据纠正,则在框3060中纠错处理器150可以使读取的数据的错误位化最少,而不用考虑ECC数据。后面将更加充分地对此加以描述。在使读取的数据的错误位最少化之后,在框3070中,ECC块160可以基于ECC数据来检测并纠正读取的数据的错误。如果在框3050中判断出可通过ECC数据纠正读取数据的错误,则可以执行在框3070中描述的操作。可以将错误处理过的数据发送到外部装置(主机系统)。
通过在写入操作时改变数据以适合于进行错误检测并在读取操作时使改变的数据的错误位最少化,能够使用一般纠错能力(例如,8位ECC)而不是高性能纠错能力(例如,16/24位ECC)来纠正超出纠错能力之外的错误位。具体地讲,这样的数据处理方案可以用于存储3位数据或4位数据的存储系统。
在示例性实施例中,可以在闪速存储器的给定的编程擦除循环之后或者在经过给定的参考时间之后,执行使错误位最少化的操作。但是,这样的操作不限于本公开。
图11是示出在根据另一实施例的存储系统中使用的写入方法的流程图,图12是示出根据另一实施例的写入方法来改变数据的方式的示图。将参照附图更加充分地描述根据这个实施例的存储系统的写入方法。
当从外部装置(即,主机系统)请求写入操作时,可以经由主机接口110将将要在步骤S300中写入在闪速存储器200中的数据存储在缓冲器140中。例如,输入的数据可以是扇区数据。即,可以根据传输单元将512B数据顺序地存储在缓冲器140中。
可以将在缓冲器140中存储的数据发送到闪速存储器200。在将存储在缓冲器140中的数据传输到闪速存储器200时,如图12所示,ECC块160可以基于传输的数据产生ECC数据,纠错处理器150可以基于传输的数据以子扇区单位产生EDC数据。这些操作可以在步骤S310中执行。换言之,纠错处理器150可以将传输的数据划分为子扇区,并针对每个子扇区产生EDC数据。因此,扇区单位数据由多个子扇区组成,可以针对每个子扇区产生EDC数据。在步骤S320中,可以将输入的数据与ECC数据和EDC数据一起存储在闪速存储器200中。可以将输入的数据存储在闪速存储器200的主要区段(或区域)中,可以将ECC数据和EDC数据存储在闪速存储器200的剩余区段(或区域)中。将这样的剩余区段(或区域)称为页面元数据区段(或区域)。将与页面有关的信息存储在元数据区域中,可将相关信息的EDC数据和元数据ECC数据一起存储在元数据区域中。
在示例性实施例中,EDC数据为CRC数据。CRC数据可以是4位CRC数据。但是,CRC数据不限于4位CRC数据。CRC数据的位数的增多能够使检测错误位的能力提高。此外,可以以不同方式改变子扇区的数量。
图13是示出在根据这个实施例的存储系统中使用的读取方法的流程图,图14是用于描述根据读取方法来确定最优化读取电压的过程的示图,图15是示出数据读取方法的示图。将参照附图更充分地描述根据这个实施例的存储系统的读取方法。
当请求读取操作时,可以在存储控制器100的控制下从闪速存储器200(或从闪速存储器200的选择的页面)读取出数据。更详细地讲,首先在步骤S400中,可以在存储控制器100的控制下从闪速存储器200读取出数据。读取的数据可以包括ECC数据,并可以存储在缓冲器140中。ECC块160可以基于读取的数据检测读取的数据是否有错。如果检测到错误,则在步骤S410中ECC块160可以判断检测到的错误是否可以纠正。如果检测到可以纠正的错误,则可以在步骤S450中根据公知的方式基于ECC数据来纠正读取的数据的错误。然后,可以将读取的数据发送到外部装置(即,主机系统),且读取操作可以结束。同样,如果没有检测到错误,则可以在没有纠错操作的情况下将读取的数据发送到外部装置(即,主机系统),且读取操作可以结束。
返回图13中的步骤S410,如果确定检测到的错误不能通过ECC块160纠正,则过程前进至步骤S420,由此纠错处理器150可以确定最优化读取电压。详细地讲,参照图14,存储在缓冲器140中的数据可以是使用最初读取电压VR(0)读取的数据。最初读取电压VR(0)可以是缺省读取电压。纠错处理器150可以控制闪速存储器200,从而使用在最初读取电压VR(0)的基础上提高了给定值的读取电压VR(1)和VR(2)以及在最初读取电压VR(0)的基础上降低了给定值的读取电压VR(-1)和VR(-2)连续地进行读取操作。连续读取的数据可以存储在缓冲器140中。这里,例如,给定值可以为40mV。但是,给定值不限于本公开。基于根据最初读取电压VR(0)读取的数据,纠错处理器150可以检测根据改变的读取条件VR(-2)、VR(-1)、VR(1)、VR(2)中的每个条件而读取的数据的翻转/反转位(flipped/toggled bit)。纠错处理器150可以将用于读取翻转/反转位的数量为最少的数据的读取电压确定为最优化读取电压。例如,如图14所示,使用读取电压VR(-1)读取的数据的翻转/反转位的数量为最少,从而将读取电压VR(-1)确定为最优化读取电压。
在另一示例性实施例中,能够根据嵌入式处理器130而不是纠错处理器150的控制来执行确定最优化读取电压的操作。
再参照图13,在确定出最优化读取电压之后,可以在步骤S440中根据EDC数据收集读取的数据的子扇区中的无错子扇区,该步骤可以在纠错处理器150的控制下进行。为此,首先,纠错处理器150可以在步骤S430中控制闪速存储器200,从而使用在最优化读取电压的基础上顺序地提高了给定值的读取电压和在最优化读取电压的基础上顺序地降低了给定值的读取电压来连续执行读取操作。读取电压的提高量可以与读取电压的降低量相同。读取的数据可以临时存储在缓冲器140中。然后,如上所述,纠错处理器150可以基于对应的EDC数据来选择无错的子扇区,如图15所示。在无错的子扇区的选择过程中,会存在错误的子扇区(例如,图15中的子扇区SS30)。在这种情况下,根据翻转/反转位的组合或高频率的翻转/反转位的组合,可以将错误的子扇区视为无错的子扇区。下面将更充分地对此加以描述。在步骤S440中收集了无错的子扇区之后,过程进行至步骤S450,在步骤S450中,以公知的方式基于ECC数据来纠正读取的数据的错误。然后,可以将读取的数据发送到外部装置(即,主机侧),且读取操作可以终止。
在这个实施例中,连续执行根据改变的读取条件读取数据的操作,对于错误的子扇区重复进行错误判断操作。另一方面,对于每个改变的读取条件,能够独立地进行读取数据的操作和选择读取数据的无错子扇区的操作。
在示例性实施例中,可以在改变读取条件之前读取EDC数据。可选地,可以一起读取EDC数据和ECC数据。但是,EDC数据的读取时间不限于本公开。
图16是用于描述根据又一实施例的在存储系统中收集无错子扇区的操作的流程图,图17是示出收集无错子扇区的操作的示图。将参照附图更充分地描述在存储系统中收集无错子扇区的操作。
如图13所示,可以根据改变的读取条件连续读取数据,读取的数据可以存储在缓冲器140中。然后,在步骤S441中,纠错处理器150可以基于EDC数据选择无错的子扇区,如图15所示,管理所选的子扇区,作为最终数据。在下面的步骤S442中,纠错处理器150可以判断错误的子扇区是否存在。如果不存在错误的子扇区,则过程前进至图13的步骤S450。如果存在错误的子扇区,则过程前进至步骤S443,在步骤S443中,纠错处理器150可以使用错误子扇区的翻转/反转位产生可能的图案,换言之,如图17所示,错误子扇区的位的翻转/反转位(例如,两位)(即,“00”、“01”、“10”和“00”的值)可以用于产生四个子扇区图案。在产生可能的图案之后,在步骤S444中,纠错处理器150可以基于对应的EDC数据来判断所产生的子扇区图案中的一个是否有错。如果判断出所产生的子扇区图案中的一个没有错误,如图17所示,在步骤S445中可以将这样的子扇区图案作为无错的子扇区。然后,过程进行至步骤S447。
如果判断出产生的子扇区图案都是有错的,则过程继续进行至步骤S446,在步骤S446中,纠错处理器150可以将从读取数据的翻转/反转位中较频繁检测到的位作为正确位。例如,如图17所示,在第二位3001的情况下,“0”的值可以是更频繁检测到的位。在第四位3002的情况下,“1”的值可以是更频繁检测到的位。因此,可以将具有更频繁检测到的位的子扇区作为无错的子扇区。在随后的步骤S447中,纠错处理器150可以判断另外的错误子扇区是否存在。如果不存在另外的错误子扇区,则过程继续进行至步骤S450,如图13所示。如果另外的错误子扇区存在,则过程继续进行至步骤S443,从而重复执行上述步骤S443至S446。
如上所述,可以通过根据EDC数据收集无错子扇区并针对错误子扇区使用翻转/反转位产生最优化子扇区来使读取数据的错误位最少化。因此,能够使用相对低性能的ECC块而不是相对高性能的EDC块来纠正错误。读取数据的步骤、收集的步骤和纠正的步骤在经过参考时间之后或在闪速存储器的编程擦除循环之后进行。
同时,闪速存储器是各种各样的非易失性存储器,其能够保持存储在其中的数据而无需供电。随着使用移动设备(例如,蜂窝电话、个人数字助理(PDA)、数字相机、便携式游戏机和MP3)的快速增长,闪速存储器广泛地用于代码存储以及数据存储。闪速存储器还可以用在家用电器(例如,高清晰TV、数字通用盘(DVD)、路由器和全球定位系统(GPS))中。
图18是示出包括根据示例性实施例的闪速存储器的示意性计算系统的框图。将计算系统2000组织为包括处理单元2100(例如,微处理器或中央处理单元)、用户接口2200、调制解调器2300(例如,基带芯片组)、存储控制器2400和闪速存储器2500。可以将闪速存储器2500构造为与上述基本上相同。在闪速存储器2500中,通过存储控制器2400存储将由处理单元2100处理的N位数据(N为正整数)。如果图18所示的计算系统为移动装置,则该移动装置还包括用于向其供电的电池2600。虽然在图18中未示出,但计算系统还可以配备有应用芯片组、相机图像处理器(例如,CMOS图像传感器(CIS))、移动式DRAM等等。例如,存储控制器2400和闪速存储器2500可以形成为构成使用非易失性存储器来存储数据的固态驱动器/盘(SSD)。
图19是根据其它示例性实施例的基于存储器的存储装置的框图。在图19中示出的基于存储器的存储装置可以如下来实现,即,存储器3510和存储控制器3520构成卡3530。例如,卡3530可以是存储卡,例如,闪速存储卡。即,卡3530可以是满足任何工业标准的卡,以供消费电子装置(例如,数字相机、个人计算机等等)使用。应当明白的是,存储控制器3520可以基于卡3530从另一装置(例如,外部装置)接收的控制信号来控制存储器3510。
图20是示出根据其它示例性实施例的基于存储器的存储装置的框图。图20示出便携式装置4000。便携式装置4000可以是MP3播放器、视频播放器、组合视频和音频播放器等等。如图所示,便携式装置4000包括存储器3510和存储控制器3520。便携式装置4000还可以包括编码器和解码器4610、呈现组件(presentation component)4620和接口4630。
可以通过编码器和解码器(EDC)4610使数据(视频、音频等等)经由存储控制器3520输入到存储器3510并从存储器3510输出。如图20中的虚线所示,可以将数据从EDC 4610直接输入到存储器3510和/或从存储器3510直接输出到EDC 4610。
EDC 4610可以对存储在存储器3510中的数据进行编码。例如,EDC 4610可以执行对存储在存储器3510中的音频数据的MP3编码。可选地,EDC 4610可以执行对存储在存储器3510中的视频数据的MPEG编码(例如,MPEG2、MPEG4等等)。此外,EDC 4610可以包括根据不同的数据格式来对不同类型的数据进行编码的多个编码器。例如,EDC 4610可以包括用于音频数据的MP3编码器和用于视频数据的MPEG编码器。
EDC 4610可以对从存储器3510的输出进行解码。例如,EDC 4610可以执行对从存储器3510输出的音频数据的MP3解码。可选地,EDC 4610可以执行对从存储器3510输出的视频数据的MPEG解码(例如,MPEG2、MPEG4等等)。此外,EDC 4610可以包括根据不同数据格式来对不同类型的数据进行编码的多个解码器。例如,EDC 4610可以包括用于音频数据的MP3解码器和用于视频数据的MPEG解码器。
还应当明白的是,EDC 4610可以仅包括解码器。例如,已经编码的数据可以由EDC 4610接收,并传输到存储控制器3520和/或存储器3510。
EDC 4610可以经由接口4630接收用于编码的数据或接收已经编码过的数据。接口4630可以遵守已知的标准(例如,火线、USB等等)。接口4630还可以包括一个以上的接口。例如,接口4630可以包括火线接口、USB接口等等。来自存储器3510的数据还可以经由接口4630输出。
呈现组件4620可以向用户呈现从存储器输出的数据和/或由EDC 4610解码的数据。例如,呈现组件4620可以包括用于输出音频数据的麦克风插孔和/或用于输出视频数据的显示屏等等。
根据示例性实施例的闪速存储器和/或存储控制器可以使用各种类型的封装件来封装,例如,PoP(层叠封装件)、球栅阵列(BGA)、芯片级封装件(CSP)、塑料引线芯片载体(PLCC)、塑料双列直插式封装件(PDIP)、华夫包中芯片(Die in Waffle Pack)、晶片华夫形式芯片(Die in Wafer Form)、板上芯片(COB)、陶瓷双列直插式封装件(CERDIP)、塑料度量四方扁平封装件(MQFP)、薄型四方扁平封装件(TQFP)、小外形IC(SOIC)、缩小外型封装件(SSOP)、薄小外形封装件(TSOP)、封装件中系统(SIP)、多芯片封装件(MCP)、晶片级制造封装件(WFP)、晶片级处理堆叠封装件(WSP)等等。
如此描述了示例实施例,显而易见的是,可以以许多方式改变示例实施例。这些改变不应当视为脱离示例实施例,所有这些修改意在被包括在权利要求书的范围内。