针对NAND闪存中的位线故障的动态交织器变化的制作方法

文档序号:18904329发布日期:2019-10-18 22:28阅读:255来源:国知局
针对NAND闪存中的位线故障的动态交织器变化的制作方法

本申请要求于2018年4月3日提交的临时申请号为62/652,181、名称为“针对nand闪存中的位线故障的运行中交织器变化”的临时申请的优先权,该临时申请被转让给本受让人并且其全部内容通过引用明确并入本文。

本发明总体涉及用于存储装置的系统和方法,并且具体地涉及改进非易失性存储器装置的性能。



背景技术:

固态存储器普遍用于各种电子系统,包括例如消费电子装置(例如,蜂窝电话、摄像机、计算机等)和企业计算系统(例如,硬盘驱动器、随机存取存储器(ram)等)。由于延迟、吞吐量、抗冲击性、封装和其他考虑,固态存储器已经比机械或其他存储器存储技术更具普及性。在这些非易失性存储器装置中,nand闪存装置由于针对高集成度的低制造成本而受欢迎。

基于闪存的固态硬盘(ssd)系统通常采用奇偶校验位来进行错误检测校正。在一些现有系统中,与位线关联的数据位通常在奇偶校验位的计算中被分组。发明人发现在一些nand驱动器中,在驱动器寿命期内某些位线与跨字线的其他位线相比可以具有高得多的位错误率(ber)。在芯片猎杀恢复期间,由于位线故障导致在相同位置发生错误,因此无法恢复多个字线故障。

过去,已经提出了交织器,以提高使用奇偶校验的错误检测的有效性,交织器是执行交织功能以改变所选数据的序列的装置。例如,在一个现有交织器中,通过以对角线方式对数据位进行分组来编码奇偶校验。然而,发明人发现通过对角线交织器不能恢复顺序位线故障。因此,需要改进交织器以进行更有效的错误检测和校正。



技术实现要素:

在本发明的实施例中,提供了动态交织器和动态交织方法以选择数据位进而克服系统性故障,诸如位线故障。在一些实施例中,交织方法可以包括识别故障的位线,将数据位分组成用于奇偶校验位分组的组,使得每个组包括来自故障位线的不多于一个数据位。一些实施例还提供了一种动态交织器,其根据最新的测试结果调整交织器或交织方法。以这种方式,交织器可以动态地形成或者在运行中变化,以优化有效性。作为示例,运行中变化交织器由固件触发,以用于在刷新之后在超级块中写入数据。

在一些实施例中,方法包括在其中执行读取操作以识别具有高故障的位线的动态交织器,并形成用于奇偶校验位计算的数据位组,使得每个组包括来自具有高故障的位线的至多一个数据位。因此,交织器基于最近的读取测试来选择具有高故障的位线,并可以根据存储装置的状况被调整。

在本发明的一些实施例中,非易失性数据存储装置包括以具有行和列的二维阵列设置的存储器单元,每行与字线关联且每列与位线关联。非易失性数据存储装置还包括联接到存储器单元的存储器控制器,以用于控制存储器单元的操作。存储器控制器被配置为响应于来自主机的读取命令执行读取操作,并解码来自读取操作的数据以识别每条位线中的错误计数并确定存在具有超过阈值的错误计数的m条故障位线。方法包括形成多个数据位组,其中每个数据位组包括来自每条字线的一个数据位,并且每个数据位组包括来自m条故障位线中任意故障位线的至多一个数据位。接下来,为每个数据位组计算奇偶校验位。在这种配置中,每个数据位组包括来自m条故障位线的至多一个错误位。然后,存储装置可以基于奇偶校验位来校正数据位中的错误。

在一些实施例中,存储器控制器进一步被配置为执行数据位的交织以形成奇偶校验位,如下所述。首先,对于每条数据字线,将数据位分组为m个数据位的子集,包括由来自m条故障位线的m个数据位组成的子集。对于奇偶校验字线,形成奇偶校验位的子集,其中针对一组数据位计算每个奇偶校验位的子集,该数据位组包括来自每条字线的一个子集并且仅包括来自m条故障位线的一个数据位子集。

根据一些实施例,为存储装置提供用于奇偶校验计算的动态交织处理。在存储装置中,存储器单元以具有行和列的二维阵列设置,每行与字线关联且每列与位线关联。存储装置还具有联接到存储器单元的存储器控制器,以用于控制存储器单元的操作。存储器控制器被配置为解码来自读取操作的数据以识别每条位线中的错误计数,并确定存在具有超过阈值的错误计数的m条故障位线。控制器通过形成多个数据位组来执行数据位的交织以形成奇偶校验位,其中每个数据位组包括来自每条字线的一个数据位,并且每个数据位组包括来自m条故障位线中的任意故障位线的至多一个数据位。控制器还为每个数据位组计算奇偶校验位。在该处理中,每个数据位组包括来自m条故障位线的至多一个错误位。

参照下面的详细描述和附图提供本发明的各种另外的实施例、特征和优点。

附图说明

图1是根据本发明一些实施例的存储器装置的简化框图;

图2是说明根据本发明的一些实施例的存储器阵列的简化示意图;

图3是说明根据本发明的一些实施例的用于操作超级块的方法的简化框图;

图4a和图4b是说明根据本发明的一些实施例的非易失性数据存储装置中的存储器阵列的一部分的简化示意图;

图5a和图5b是说明根据本发明的一些实施例的非易失性数据存储装置中的存储器阵列的一部分的简化示意图;

图6a、图6b、图6c和图6d是示出根据本发明的一些实施例的非易失性数据存储装置中的存储器阵列的一部分的简化示意图;

图7a、图7b、图7c和图7d是示出根据本发明的可选实施例的非易失性数据存储装置中的存储器阵列的一部分的简化示意图;

图8是示出根据本发明的一些实施例的动态交织器的方法的简化流程图;

图9是说明根据本发明的一些实施例的用于确定奇偶校验位的动态交织器的方法的简化流程图;

图10是说明根据本发明的一些实施例的固态存储系统的简化框图;以及

图11是说明可用于实现根据本发明的各种实施例的设备的简化框图。

具体实施方式

图1是根据本发明的一些实施例的存储器装置的简化框图。在该示例中,闪存装置100包括具有多个非易失性存储器单元的存储器单元阵列110。在一些实施例中,存储器单元设置在多个存储器块中。每个存储块可以包括多个非易失性存储器单元,每个存储块与相应的地址关联。存储器装置100还包括解码器120,例如行解码器。在示例中,解码器120接收具有地址addr130的用于存储器操作的命令,例如具有读取地址的读取命令。地址130可以是逻辑地址。在实施例中,诸如读取、写入或编程以及擦除等的存储器操作针对存储器单元组,例如页面或扇区、或者块。如上文所述,块可以包括多个页面。读取或编程命令通常针对页面,而擦除命令可以针对块。根据实施例,页面或扇区可以是0.5千字节到4千字节,或者不同的大小。根据实施例,页面或扇区可以包括联接到相同字线的存储器单元。在这种情况下,解码器120基于addr130上的信息选择字线(wl)140以选择存储器页面,该存储器页面可以是联接到所选字线的一行存储器单元。因此,页面和字线可互换地使用。

感测放大器块150通过位线152联接到存储器单元阵列110。缓冲器块160联接到感测放大器块150并将输出数据提供至外部装置。在读取操作中,感测放大器块150感测在存储器单元阵列110的每个存储器单元中存储的数据,并将该数据提供至缓冲器块160。在写入或编程操作中,缓冲器块160将待写入或编程的数据提供至存储器阵列110。

在存储器读取操作期间,由字线选择的非易失性存储器单元中的电荷被读出。根据存储单元中存储的电荷,其单元阈值电压可以变化。高于单元阈值电压的读取电压可用于确定存储器单元中存储的数据。在一些实施例中,每个非易失性存储器单元可以是多级存储器单元,并且多个阈值电压用于确定由位模式表示的存储器单元的数据状态。在这些情况下,提供读取阈值178的阈值控制电路170可被用于控制阈值电压。

图2是说明根据本发明的一些实施例的存储器阵列的简化示意图。如图2所示,存储器阵列200包括以具有行和列的二维阵列设置的存储器单元。每行存储器单元与字线(wl)关联。例如,wl0、wl1、wl2、wl3、……、wln等。每列存储器单元与位线(bl)关联。例如,bl1、bl2、bl3、……、blm等。在一些实施例中,与每条位线关联的存储器单元可包括多个数据位和从数据位导出的奇偶校验位。例如,与位线bl1关联的存储器单元可具有在联接到字线wln的存储器单元中存储的奇偶校验位。在一些实施例中,存储器阵列200可以表示nand闪存装置的一部分。

图3是说明根据本发明的一些实施例的用于操作超级块的方法的简化框图。如图3所示,非易失性数据存储装置300可以包括多个存储器管芯,标记为管芯#1、管芯#2、管芯#3、……、管芯#n。在该示例中,超级块301可以包括来自每个管芯的块,例如来自管芯#1的块#1、来自管芯#2的块#2、来自管芯#3的块#3、……、来自管芯#n的块#n。在其他实施例中,超级块可以包括多个块,但是超级块中的块不限于来自不同管芯的块。超级块可以用作存储器操作中的逻辑单元。例如,在超级块中,多个块中一个块可以用作奇偶校验块以存储奇偶校验位,剩余的块可以用作数据块以存储数据。作为示例,奇偶校验块可以存储通过数据块中的相应数据位的异或(xor)运算获得的奇偶校验位。

基于闪存的固态硬盘(ssd)驱动器可以包含许多闪存管芯。每个闪存管芯可包含数千个物理块。每个块可以包含数百或数千个闪存页面。与任何其他半导体一样,nand闪存芯片可能会故障,而这可以被称为芯片猎杀。为了保护计算机存储器系统免受任何单个存储器芯片故障以及来自单个存储器芯片的任何部分的多位错误,一些系统在超级块中的多个存储器芯片分配ecc(错误检查和校正)码字的数据位,使得任何单个存储器芯片的故障将仅影响每个字的一个ecc位。尽管一个芯片完全故障,这也允许存储器内容重建。如上所述,位线故障会使芯片猎杀恢复变得困难。

图4a和4b是说明根据本发明的一些实施例的非易失性数据存储装置中的存储器阵列的一部分的简化示意图。非易失性数据存储装置包括以具有行和列的二维阵列设置的存储器单元,每行与字线关联且每列与位线关联。超级块可以具有大量的字线和位线,并且位线可以分布在不同的存储器管芯内。与每条位线关联的存储器单元包括多个数据位和从数据位导出的奇偶校验位,奇偶校验字线包括来自每条位线的奇偶校验位。

为了简化描述,图4a示出了具有5条字线wl0、wl1、wl2、wl3和wl4以及12条位线的存储器阵列的一部分的逻辑表示。与每条字线关联的12个存储器单元分别标记为b1、b2、b3、……、和b12。例如,与位线#1关联的存储器单元标记为“b1”。与位线#2关联的存储器单元标记为“b2”。类似地,与位线#12关联的存储器单元标记为“b12”。在该示例中,字线wl0至wl3是数据字线,字线wl4是奇偶校验字线,与字线wl4关联的数据位b1至b12是奇偶校验位。例如,wl4的数据位b1是由与wl0至wl3关联的数据位b1计算的奇偶校验位。类似地,wl4的存储器单元b1是由与wl0至wl3关联的存储器单元b1计算的奇偶校验位。此外,wl4的存储器单元b12是由与wl0至wl3关联的存储器单元b12计算的奇偶校验位。

在一些实施例中,奇偶校验位由存储器单元组的异或(xor)运算计算。已知基于xor运算的奇偶校验位可用于检测单个位错误,而非多个位错误。图4a示出了由wl2的位“b1”和wl0的位“b4”的阴影块标记的两个单个位错误。可以通过奇偶校验位检测这些单个位错误。相反,图4b示出了存在多个位错误的示例。如图4b所示,联接到位线#1的存储器单元包括两个错误位,即联接到wl1的位“b1”和联接到wl2的“b1”。类似地,联接到位线#4的存储器单元包括三个错误位,即联接到wl1的位“b4”、联接到wl2的位“b4”、以及联接到wl3的位“b4”。

已知存储装置中的存储器单元随时间降级。例如,位线故障,例如,卡止(stuck)位线,可能导致联接到该位线的所有位故障。发明人已发现,在一些nand驱动器中,可能存在某些位线,其在驱动器的寿命期内与跨字线的其他位线相比具有高得多的位错误率(ber)。在芯片猎杀恢复期间,由于位线故障导致在相同位置发生错误,因此不能恢复多个字线故障。本发明的实施例提供用于执行数据位的交织以形成奇偶校验位的改进的方法和装置。

在一些实施例中,提供动态交织器,在动态交织器中执行读取操作以识别具有高故障的位线,并形成用于奇偶校验位计算的数据位组,使得每组包括来自具有高故障的位线的至多一个数据位。因此,交织器基于最近的读取测试来选择具有高故障的位线,并且可以根据存储装置的状况而被调整。

在本发明的一些实施例中,非易失性数据存储装置包括以具有行和列的二维阵列设置的存储器单元,每行与字线关联且每列与位线关联。非易失性数据存储装置还包括联接到存储器单元的存储器控制器,以用于控制存储器单元的操作。存储器控制器被配置为响应于来自主机的读取命令执行读取操作,并且解码来自读取操作的数据以识别每条位线中的错误计数,并确定存在错误计数超过阈值的m条故障位线。该方法包括形成多个数据位组,其中每个数据位组包括来自每条字线的一个数据位,并且每个数据位组包括来自m条故障位线中任意位线的至多一个数据位。随后,对每个数据位组计算奇偶校验位。在这种设置中,每个数据位组包括来自m条故障位线的至多一个错误位。然后,存储装置可以基于奇偶校验位来校正数据位中的错误。

在一些实施例中,存储器控制器进一步被配置为执行数据位的交织以形成奇偶校验位,如下所述。首先,对于每条数据字线,将数据位分组为m个数据位的子集,包括由来自m条故障位线的m个数据位组成的子集。对于奇偶校验字线,形成奇偶校验位的子集,其中针对数据位组计算每个奇偶校验位的子集,其中数据位组包括来自每条字线的一个子集并且仅包括来自m条故障位线的一个数据位子集。

下面参照图5a和5b,图6a、6b、6c和6d以及图7a、7b、7c和7d描述该方法。

图5a和5b是说明根据本发明的一些实施例的非易失性数据存储装置中的存储器阵列的一部分的简化示意图。例如,在图5a中,位线#1、位线#4和位线#10被识别为具有高故障的位线。在这种情况下,m=3,并且这三条字线被识别为具有超过阈值的错误计数的故障位线。然后,存储器控制器执行数据位的交织以形成奇偶校验位。在图5b中,每条字线中的数据位被分组为子集。例如,来自三条故障位线(#1、#4和#10)的数据位b1、b4和b10被分组到子集1中。其余的数据位被分组为三个数据位的子集。例如,数据位b2、b3和b4被分组为子集2,数据位b5、b6和b7被分组为子集3,并且数据位b8、b11和b12被分组为子集4。在交织中选择这些数据位的子集以用于计算奇偶校验位。

图6a、图6b、图6c和6d是示出根据本发明的一些实施例的非易失性数据存储装置中的存储器阵列的一部分的简化示意图。图6a类似于图5b,其中每条字线中的数据位被分组为子集。每个子集包括三个(m=3,故障位线的数量)数据位。为了简化说明,在图6a至图6d中,现在将故障的位线标记为位线#1、位线#2和位线#3。此外,让子集(i,k)表示字线i中的子集#k。例如,下面列出字线0wl0中的子集。

子集(0,1)=wl0的位b1、b2和b3;

子集(0,2)=wl0的位b4、b5和b6;

子集(0,3)=wl0的位b7、b8和b9;以及

子集(0,4)=wl0的位b10、b11和b12。

图6a示出了阴影块中的第一交织组。第一交织组包括子集(0,1)(来自故障位线和字线wl0的位b0、b1和b2)与子集(1,2)、(2,2)和(3,2)交织。子集(1,2)包括wl1的位b4、b5和b6。子集(2,2)包括wl2的位b4、b5和b6。子集(3,2)包括wl3的位b4、b5和b6。计算奇偶校验子集并将其存储在子集(4,1)(来自故障位线和wl4的位b0、b1和b2)。类似地,图6b示出了子集(1,1)(具有来自故障位线和字线wl1的位b0、b1和b2)与子集(0,2)、(2,3)和(3,3)交织并具有子集(4,2)(wl4的位b4、b5和b6)中的奇偶校验子集。在图6c中,子集(2,1)(来自故障位线和字线wl2的位b0、b1和b2)与子集(0,3)、(1,3)和(3,4)交织并具有子集(4,3)(wl4的位b7、b8和b9)中的奇偶校验子集。在图6d中,子集(3,1)(来自故障位线和字线wl3的位b0、b1和b2)与子集(0,4)、(1,4)和(2,4)交织并具有子集(4,4)(wl4的位b10、b11和b12)中的奇偶校验子集。在该设置中,每个交织组包括来自故障位线的至多一个子集,并且奇偶校验子集中的奇偶校验位由包括来自故障位线的至多一个数据位的数据位计算。

图7a、图7b、图7c和7d是示出根据本发明的可选实施例的非易失性数据存储装置中的存储器阵列的一部分的简化示意图。图7a、图7b、图7c和7d类似于图6a、图6b、图6c和图6d,只是图7a、图7b、图7c和图7d中仅存在三条数据字线。结果,故障位线中的子集全部用在涉及每条字线中的子集1至3的交织组中。因此,包括子集(0,4)、(1,4)和(2,4)的最后交织组不包括来自故障位线的子集。最后交织组的奇偶校验位存储在子集(4,4)中。在位线比交织故障的位线中的子集所需的位线更多的实施例中,可以与未使用的位线一起形成子集。

在一些实施例中,存储器控制器进一步被配置为通过将故障位线的计数m与用于触发动态交织的阈值进行比较来执行数据位的动态交织以形成奇偶校验位。在确定m大于用于触发动态交织的阈值时,控制器执行数据位的交织以形成奇偶校验位。动态交织的阈值可以在非易失性数据存储装置的寿命期间变化。可以通过所选数据位的异或(xor)运算来计算奇偶校验位。可选地,也可以使用其他编码方案。

在一些实施例中,用于确定奇偶校验位的交织处理可以描述如下。首先,定义以下参数:

令b_wl为感兴趣的总位线的数量,或码字中的位的数量(在上述示例中,b_wl=12);

令m是故障位线的数量(在上述示例中,m=3);

令k为待交织的字线的数量(在上述示例中,k=4或3);

用于确定奇偶校验位的交织处理包括以下步骤:

1)检测m条位线故障并初始化运行中交织器;

2)在l子集中划分b_wl,其中l=b_wl/m(例如,l=12/3=4);

3)检查公开中的约束l>k(例如,l≥k表示有足够的子集来交织坏位线中的字线);

4)按以下顺序交织,直到码字中的km位,这表示k个子集被交织,且每个子集是m个位(换言之,km=4*3=12,且km不大于总的位数量);

5)令i表示第i条字线,j子集表示列索引。子集(i,j)与子集(t,u)交织,其中t!=i,t从1到i-1变化并且u是i,并与子集(t,u)交织,其中t!=i,t从i+1到k变化并且u是i+1。这里,故障列中的第i字线的子集与字线t≠i的列交织。

6)对所有k字线和存储的xor奇偶校验重复交织,并在观察到ecc故障时恢复数据。

在本发明的一些实施例中,提供了在驱动器的寿命期间跟踪故障位线并且在运行中动态地改变交织器以提高芯片猎杀恢复性能的技术。在一些实施例中,存储器控制器或固件可以跟踪故障位线并且例如在超级块中动态地应用交织器的运行中变化以用于写入数据。可以明智地设计交织器以避免故障位线。本发明的一些实施例提供一种交织器技术,其可以显著改善芯片猎杀恢复方案。所提出的交织器方案可以被实施以用于在超级块中生成芯片猎杀奇偶校验,并且可以在超级块的末端写入芯片猎杀奇偶校验。

在一些实施例中,当读取命令由主机发出时,存储器控制器或固件可以基于超级块基础跟踪所有位的位置的ber。当ber超过m位的位置的特定阈值时,由控制器或固件动态地触发运行中变化交织,以在刷新之后在该超级块中写入数据。m的值可以启发式地(heuristically)选择。

在下面的描述中,某些参数定义如下:

1)令(k1,k2…km)表示其中观察到最大错误数量的位索引;

2)令nwl表示超级块中的字线的数量;

3)令bwl表示字线中的位的数量。

在图5b中,基于位线前方的故障位线设置位。整个字线数据被分成m个大块(chunk)或子集,并且来自故障位线的位被放置在前方。在该示例中,为简单起见,假设m、nwl和bwl为3、5和12。

控制器或固件可以基于字线中的位的数量和超级块中的字线的数量来选择满足以下约束的m值。

m≤bwl/(nwl-1)

在一些实施例中,交织器方案在图3和图4中示出,且分别满足条件m=bwl/(nwl-1)和m<bwl/(nwl-1)。

在图6a至图6d中,m=bwl/(nwl-1)。为简单起见,m、bwl和nwl的值假定为3、12和5。阴影数据大块或子集用于生成xor奇偶校验。

在图7a至图7d中,m<bwl/(nwl-1)。为简单起见,m、bwl和nwl的值假定为3、12和4。阴影数据大块或子集用于生成xor奇偶校验。

应注意,在交织器方案中,坏的位线与好的位线交织,并且可以通过在超级块的最后字线处写入的xor而容易地恢复。

图8是表示根据本发明的一些实施例的动态交织器的方法的简化流程图。在一些情况下,启发式地选择m和t的值。用于动态交织器的方法包括在810执行主机读取。在从主机接收到读取命令之后,控制器可以执行读取操作。在820,控制器对来自主机读取的数据进行解码并确定位线故障。确定具有大量位故障的位线。在830,将具有高故障的故障位线的数量与用于触发动态交织器功能的阈值进行比较。取决于块或超级块的大小,用于触发动态交织器的阈值可以是例如5到50。在840,控制器动态地改变奇偶校验交织器。此时,数据写入操作采用更新的交织器进行奇偶校验位计算。在一些实施例中,根据新的交织器更新芯片猎杀恢复。

图8是示出根据本发明实施例的用于奇偶校验计算的动态交织处理的简化流程图。在存储装置中,存储器单元以具有行和列的二维阵列设置,每行与字线关联且每列与位线关联。存储装置还具有联接到存储器单元的存储器控制器,以用于控制存储器单元的操作。存储器控制器被配置为解码来自读取操作的数据以识别每条位线中的错误计数,并确定存在具有超过阈值的错误计数的m条故障位线。控制器通过形成多个数据位组来执行数据位的交织以形成奇偶校验位,其中每个数据位组包括来自每条字线的一个数据位,并且每个数据位组包括来自m条故障位线中的任意位线的至多一个数据位。控制器还为每个数据位组计算奇偶校验位。在该处理中,每个数据位组包括来自m条故障位线的至多一个错误位。

图9是示出根据本发明的一些实施例的用于确定奇偶校验位的动态交织的方法的简化流程图。以上结合图6a至图6d和图7a至图7d描述了方法900的示例。方法可总结如下。在910,对于每条数据字线,数据位被分组为m个数据位的子集,包括由来自m条故障位线的m个数据位组成的子集。这里,对于奇偶校验字线,形成奇偶校验位的子集,其中针对数据位组计算每个奇偶校验位的子集,数据位组包括来自每条字线的一个子集并且仅包括来自m条故障位线的一个数据位子集。该处理在下文进一步解释。在920,控制器形成第一数据位组,其包括来自m条故障位线的第一数据位子集和来自除与第一数据位子集关联的字线之外的每条字线的一个子集。在930,计算第一数据位组的第一奇偶校验位子集。在940处,控制器形成第二数据位组,其包括来自m条故障位线的第二数据位子集和来自除与第二数据位子集关联的字线之外的每条字线的一个先前未使用子集。在950,计算第二数据位组的第二奇偶校验位子集。在960,控制器形成新的数据位组,其包括来自m条故障位线的新数据位子集和来自除了与新数据位子集关联的字线之外的每条字线的一个先前未使用子集。在970,计算新的数据位组的新的奇偶校验位子集。

在一些实施例中,方法还可以包括通过形成包括来自每条字线的一个先前未使用的子集的新的数据位组并且针对新的数据组计算新的奇偶校验位子集来执行数据位的交织以形成奇偶校验位。在这种情况下,涉及故障位线的所有子集在上述处理中已经包括在奇偶校验位组中,并且可以形成没有来自故障位线的数据位的新的数据位组。

在一些实施例中,方法还可以包括通过将故障位线的计数m与用于触发动态交织的阈值进行比较来执行数据位的交织以形成奇偶校验位。在确定m大于用于触发动态交织的阈值时,执行数据位的交织以形成奇偶校验位。在一些实施例中,用于动态交织的阈值可以在存储系统的寿命期间变化。

图10是说明根据本发明的一些实施例的固态存储系统的简化框图。如图所示,固态存储系统1000可以包括固态存储装置1050和存储控制器1060。例如,固态存储装置1050可以包括如图1所示的闪存装置100。存储控制器1060,也称为存储器控制器,是执行本文描述的技术的系统的一个示例。在一些实施例中,存储控制器1060可以在诸如asic或fpga的半导体装置上实现。一些功能也可以固件实现。

控制器1004可以包括一个或多个处理器1006和存储器1008,以用于执行上述控制功能。存储控制器1060还可以包括查找表1010,其可以包括用于低级块(degradedblock)的表和用于坏块等的表等。寄存器1014可以用于存储用于控制功能的数据,诸如用于低级块计数的阈值等。

控制器1004可以通过存储接口1002联接到固态存储装置1050。错误校正解码器1012(例如,ldpc解码器或bch解码器)可以对读取的数据执行错误校正解码,并将校正的数据发送到控制器1004。控制器1004可以向垃圾收集器1016识别具有读取故障的页面,垃圾收集器1016(例如通过将有或没有错误校正解码的数据复制到新位置)对那些页面执行校正处理。

图11描述了可以使用本公开实施例的系统的一种可实现方式。图11仅是结合本公开的实施例的说明,并不限制权利要求中记载的本发明的范围。本领域普通技术人员将认识到其他变型、修改和替代方案。在一个实施例中,计算机系统1100通常包括监视器1110、计算机1120、用户输出装置1130、用户输入装置1140、通信接口1150等。

如图11所示,计算机1120可以包括处理器1160,其经由总线子系统1190与多个外围装置通信。这些外围装置可以包括用户输出装置1130、用户输入装置1140、通信接口1150和存储子系统,诸如随机存取存储器(ram)1170和磁盘驱动器1180。作为示例,磁盘驱动器可以包括利用非易失性存储器装置实现的固态盘(ssd),诸如图1中描绘的具有上述特征的存储器装置100。

用户输入装置1140包括用于向计算机系统1120输入信息的所有可能类型的装置和机制。这些可以包括键盘、小键盘、结合到显示器中的触摸屏、诸如语音识别系统的音频输入装置、麦克风和其他类型的输入装置。在各个实施例中,用户输入装置1140通常实施为计算机鼠标、轨迹球、跟踪板、操纵杆、无线遥控器、绘图板、语音命令系统、眼睛跟踪系统等。用户输入装置1140通常允许用户通过诸如点击按钮等的命令选择出现在监视器1110上的对象、图标、文本等。

用户输出装置1130包括用于从计算机1120输出信息的所有可能类型的装置和机制。这些可以包括显示器(例如,监视器1110),诸如音频输出装置的非可视显示器等。

通信接口1150提供到其他通信网络和装置的接口。通信接口1150可以用作用于从其他系统接收数据和向其他系统发送数据的接口。通信接口1150的实施例通常包括以太网卡、调制解调器(电话、卫星、电缆、isdn)、(异步)数字用户线(dsl)单元、firewire接口、usb接口等。例如,通信接口950可以联接到计算机网络或firewire总线等。在其他实施例中,通信接口1150可以物理地集成在计算机1120的主板上,并且可以是软件程序,诸如软dsl等。

在各个实施例中,计算机系统1100还可以包括能够通过网络诸如http、tcp/ip、rtp/rtsp协议等通信的软件。在本发明的可选实施例中,还可以使用其他通信软件和传输协议,例如ipx、udp等。在一些实施例中,计算机1120包括来自intel的一个或多个xeon微处理器作为处理器1160。此外,在一个实施例中,计算机1120包括基于unix的操作系统。

ram1170和磁盘驱动器1180是被配置为存储诸如本发明的实施例的数据的有形介质的示例,其包括可执行计算机代码、人类可读代码等。其他类型的有形介质包括软盘、可移动硬盘、诸如cd-rom、dvd和条形码的光盘存储介质、诸如闪存半导体存储器、非暂时性只读存储器(roms)、电池支持的易失性存储器、网络存储装置等。ram1170和磁盘驱动器1180可以被配置为存储提供本发明的功能的基本编程和数据构造。

提供本发明的功能的软件代码模块和指令可以存储在ram1170和磁盘驱动器1180中。这些软件模块可以由处理器1160执行。ram1170和磁盘驱动器1180还可以提供用于存储根据本发明使用的数据的存储库。

ram1170和磁盘驱动器1180可以包括多个存储器,其包括用于在程序执行期间存储指令和数据的主随机存取存储器(ram)和存储固定非暂时指令的只读存储器(rom)。ram1170和磁盘驱动器1180可以包括文件存储子系统,其为程序和数据文件提供持续(非易失性)存储。ram1170和磁盘驱动器1180还可以包括可移动存储系统,诸如可移动闪存。

总线子系统1190提供用于使计算机1120的各个组件和子系统按预期彼此通信的机制。尽管总线子系统1190示意性地示为单个总线,但总线子系统的可选实施例可以使用多个总线。总线系统1190可以是可以使用本公开的pciephy实施例实现的高速pci总线。

图11是能够实施本发明的计算机系统的代表。对于本领域普通技术人员来说显而易见的是,许多其他硬件和软件配置适用于本发明的使用。例如,计算机可以是台式、便携式、机架式或平板式配置。另外,计算机可以是一系列联网计算机。此外,可以考虑使用其他微处理器,诸如pentiumtm或itaniumtm微处理器、进阶微装置(advancedmicrodevices)公司的opterontm或athlonxptm微处理器等。此外,可预期其他类型的操作系统,诸如来自微软公司的等,来自太阳微系统(sunmicrosystems)的solaris、linux、unix等。在其他实施例中,上述技术可以在芯片或辅助处理板上实现。

可以以软件或硬件或二者的组合的逻辑形式来实现本发明的各个实施例。逻辑可以存储在计算机可读或机器可读非暂时性存储介质中,作为适于指示计算机系统的处理器的一组指令,以执行本发明的实施例中公开的一组步骤。逻辑可以形成计算机程序产品的一部分,其适于指导信息处理装置以执行本发明的实施例中公开的一组步骤。基于本文提供的公开和教导,本领域普通技术人员将理解实现本发明的其他方式和/或方法。

本文描述的数据结构和代码可以部分或完全存储在计算机可读存储介质和/或硬件模块和/或硬件设备上。计算机可读存储介质包括但不限于易失性存储器、非易失性存储器、诸如磁盘驱动器、磁带、cd(光盘)、dvd(数字通用盘或数字视频盘)的磁和光存储装置或现在已知或以后开发的能够存储代码和/或数据的其他介质。本文描述的硬件模块或设备包括但不限于专用集成电路(asic)、现场可编程门阵列(fpga)、专用或共享处理器和/或现在已知或以后开发的其他硬件模块或设备。

本文描述的方法和过程可以部分或完全实施为存储在计算机可读存储介质或装置中的代码和/或数据,使得当计算机系统读取并执行代码和/或数据时,计算机系统执行关联方法和过程。方法和过程还可以部分或完全实施在硬件模块或设备中,使得当激活硬件模块或设备时,它们执行关联方法和过程。可以使用代码、数据和硬件模块或设备的组合来实施本文公开的方法和过程。

本文公开的实施例不限于本文描述的具体实施例的范围。除了本文描述的那些之外,本发明的实施例的各种修改对于本领域普通技术人员而言从前文的描述和附图中将是显而易见的。此外,尽管已经为特定目的在特定环境的特定实施方式的上下文中描述了本发明的一些实施例,但是本领域普通技术人员将认识到其有用性不限于此并且本发明的实施例可以为了任何目的有利地实施在任何环境中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1