用于将定形数据加扰的方法

文档序号:7993185阅读:362来源:国知局
用于将定形数据加扰的方法
【专利摘要】一种方法,其包括,在数据存储设备中,接收具有特定比例的0值和1值的数据,并且将数据加扰以生成具有该特定比例的0值和1值的数据的加扰数据。
【专利说明】用于将定形数据加扰的方法
[0001]对于相关申请的交叉参考
[0002]本申请要求在2011年10月20日提交的美国临时申请N0.61/549,448的优先权,该申请通过引用而完全并入本申请中。
【技术领域】
[0003]本公开大致涉及将数据加扰。
【背景技术】
[0004]数据可以在被存储在存储器中之前被修改。例如,数据可以被“定形(shaped)”以改变该数据中的I值(“I”)与O值(“O”)的比例。存储定形数据会比存储具有相同数目的I和O的随机数据更少地磨损存储器。作为另一示例,数据可以被“加扰”以使得数据利用应用于该数据和应用于随机或伪随机的位序列的、按位的异或(XOR)操作而显得更随机。将数据加扰可以移除数据中的位的重复模式(例如长序列的O或I),这些重复模式当写入存储器时可能造成编程干扰影响。然而,如果通过以随机或伪随机的位序列对定形数据进行异或而将该定形数据加扰,则该加扰数据可能并不保留“所定形的”比例的I和0,而是可以替代地显示出基本上随机的分布,其中I和O以基本上相同的概率出现。

【发明内容】

[0005]置换加扰(permutation scrambling)生成保留输入数据的I和O的比例的加扰数据。置换加扰操作可以被用于将定形数据加扰,以生成可以存储至存储器的定形加扰数据。定形加扰数据可以从存储器读取并且可以应用另一置换加扰操作以恢复该定形数据。
【专利附图】

【附图说明】
[0006]图1是示出了置换加扰的一个特定实施例的大体图;
[0007]图2是示出了包括置换加扰器的数据存储设备的一个特定实施例的框图;
[0008]图3是示出了置换加扰器的另一特定实施例的框图。
[0009]图4是示出了码字的置换和该码字的去置换的一个特定实施例图示;以及
[0010]图5是示出了置换加扰方法的一个特定实施例的流程图。
【具体实施方式】
[0011]用户数据可以被变形(transformed)为“定形的”数据序列,其具有与原始用户数据不同的数据统计。例如,用户数据序列可以被变形为其中减少了 O的数目的“定形的”数据序列。将数据定形的一个动机是减小干扰影响在闪存中的出现并且减小闪存单元的磨损。
[0012]数据也可以在将该数据编程到闪存中之前被加扰。这样的加扰可以用于使得被编程至闪存的数据显得随机并且并不重复。编程至存储器的重复模式可能造成归因于升压问题和返回模式的不同编程干扰影响。例如,数据可以通过以伪随机位序列(其可以利用线性反馈移位寄存器(LFSR)来生成)对该数据进行异或而被加扰。
[0013]然而,基于XOR的加扰改变由定形变形生成的定形(shaping)。当以具有约50%O的、随机独立同分布的(1.1.d)位序列对具有小部分O的“定形的”位序列进行异或时,则所形成的加扰序列也将具有约50%的0,并且“定形”将丢失。事实上,当以具有约50%的O和约50%的I并且与输入序列无关联的(伪)随机1.1.d.位序列对O和I的输入序列进行异或时,将形成具有约50%的O和约50%的I的随机1.1.d.序列。因为在两个序列之间没有关联,,所以该1.1.d.序列将贯穿输入序列的O、而以约50%的O和约50%的I的比例来分布。因此,输入序列的约50%的O将变形符号并且当输入序列与该1.1.d.序列异或时成为I。类似地,输入序列的约50%的I将变成0,引起在所得到的序列中的约50%的O的分布。
[0014]公开了这样的数据加扰器,其保留位序列的定形分布。例如加扰器可以根据某伪随机置换并且在并不将数据与伪随机或随机加扰字异或的情况下置换位位置。
[0015]一种用于在长度为Q的字符串(例如符号序列(例如数据位))上实现置换加扰器的方法可以包括:
[0016]选择与Q互质的随机或伪随机整数P ;以及
[0017]将该字符串重新排序,使得第一位将是位数(bit numbeiOO,第二位将是位数P (模(mod) Q),第三位将是2P (mod Q),并且通常第k位将是位数(k-l)P(mod Q)。或者,可以通过从字符串选择初始位(位数0,或者任何其它随机或非随机选取的位),并且然后通过(周期地)每次以P递增地址来选择后面的位,选择顺序位来将字符串重新排序,以形成加扰输出。
[0018]图1示出了对具有长度Q等于12并且P = 5的字符串102进行置换加扰的实施例100。示出了加扰序列106和该加扰序列的索引104。加扰序列106以第一位开始(即,加扰序列106的第一位与原始序列102的第一位相同)。通过以P = 5递增位地址来选取下一位(见上方弧段110),并且又通过以5递增来选取接下来的位。对于第三位,不能再递增5,因为至字符串102的末端仅有I位了,于是周期性地完成以5递增意味着递增I至字符串102的末端并且剩余4是从字符串112的开头开始递增的(见下方弧段112)。该过程可以重复,直至字符串102的每个位都已被选择并且拷贝至加扰序列106。选择与Q互质的P保证了将选择字符串的所有位。
[0019]如在图1中示出那样的置换加扰可以在数据存储设备中实现,诸如作为举例说明而非限制性的示例的固态盘(SSD)、闪存卡或者嵌入式闪存。例如,数据存储设备可以包括在计数器值到达值Q时重置的计数器。计数器值可以在计数器的每P个递增之后被读取(例如以生成索引104)。计数器值可以被用作位地址或者用作位地址偏移(例如在原始序列102中的位置)以定位在数据存储设备中生成的加扰数据(例如加扰序列106)的下一顺序位。作为另一示例,数据存储设备可以包括被编程为以P(mod Q)递增计数值的控制器,以根据计数值而定位原始序列102中的位,并且拷贝所定位的位作为加扰序列106中的下一顺序位。
[0020]可能的是,使用与Q相互质(relative prime)的数个不同的伪随机整数P。对于每个被置换的块,可以选取不同的相互质的整数P来生成不同的置换。可以对于每个块随机选取相互质的整数P。例如,如果使用相互质的整数,则置换种子可以包括log2 (n)+log2 (Q)位,其中,log2(n)位(例如,置换种子中的第一 log2 (η)位)指示待使用的相互质的整数P,并且其中,log2 (Q)位(例如,置换种子中的最后log2(Q)位)指示从其开始进行置换的起始点(即,这样的位位置,从该位位置起开始以P(mod Q)递增)。
[0021]在另一示例中,可以利用LFSR进行生成加扰数据的置换加扰,该加扰数据具有与输入数据相同比例的O和I。例如,可以利用尺寸为log2(Q)位的LFSR来进行置换加扰(当Q是2的幂时),这对应于Galois Field的某原始多项式GF(Q)。如果以并非全O的种子序列进行初始化,LFSR将按照随机或伪随机顺序输出从I至Q-1的所有数字。由LFSR输出的数字可以被用作加扰序列的索引。例如,诸如图1的索引104的索引可以由LFSR生成,以生成与图1的P(mod Q)序列不同的值序列。
[0022]替选地,可以使用数个LFSR,其基于GF (Q)的不同原始(primitive)多项式。对于每个所置换的块,可以为置换而选取不同的LFSR,以生成不同块的不同置换。可以从块至块地随机选取LFSR。例如,如果使用η个不同的LFSR,则置换种子可以包括log2 (n) +log2 (Q)位,其中,log2 (η)位指示待用于生成置换的LFSR,并且log2(Q)位用于初始化LFSR。
[0023]在关于图2描述的其它实施例中,可以并不在单个位上进行置换加扰,而是可以替代地在较大块(chunk)的数据上进行,例如作为举例说明而非限制性示例的半字节、字节、字、双字。上面所描述的一个或多个步骤可以应用于更大块,通过将相同的重新排序(例如图1中所示的重新排序)应用于块的位置上而不是位的位置上行。通过应用相同的过程或者根据用于在块内置换位的一个或多个其它过程,可以在每个块内部进行进一步的置换(例如可以在每个字节内进行进一步的位置换)。
[0024]可以在每次激活加扰过程(即,每次加扰一个字符串)期间进行不同的置换。进行不同的置换可以通过在每次激活中选取不同的整数P来完成。所选取的整数P用作用于置换加扰的“种子”。可以根据物理位置(例如字线(WL)号)和/或根据写/擦除周期的数目和/或根据任意其它参数来选取P。替选地,P可以随机选取。如果种子是随机的或者是在读取期间未知的参数的函数,则种子可以随着数据一起被存储,以便在读取数据期间使能去加扰。
[0025]一种对从主机接收的、待存储在闪存中的数据进行编程的方法可以包括:
[0026]I)从主机接收数据
[0027]2)进行定形变形以生成变形后的位序列
[0028]3)在变形后的位序列上进行置换加扰
[0029]4)如果用于置换加扰的种子是随机或伪随机选取的,则将用于置换加扰的种子连接至所置换后的位序列
[0030]5)利用误差校正码(ECC)编码器对置换后的位序列(并且在一些实施例中对种子)进行编码,以生成编码后的序列
[0031]6)将该编码后的序列编程至闪存
[0032]在读取期间,来自闪存的编码后数据可以通过一系列操作来读取,包括:
[0033]I)从闪存读取该编码后的数据
[0034]2)利用ECC解码器对该编码后的数据进行解码
[0035]3)将解码后的种子(或者已知的种子)用于对该解码后的数据进行去加扰(即,进行用于加扰数据的置换的逆置换)
[0036]4)在去加扰后的数据上进行逆定形变形以恢复数据
[0037]5)将该数据发送给主机设备(如果该数据被主机请求)
[0038]因为置换加扰是在ECC编码之前进行的,置换加扰可以“实时(on-the-fly) ”进行,作为填充ECC编码器的随机存取存储器(RAM)的一部分。这可以通过根据种子按照伪随机顺序将位填充到ECC编码器RAM中来完成。例如,可以在块地址(例如,诸如字节、字、双字的块的地址)上进行置换加扰,并且可以在每个块内的位上进行置换加扰。对地址和存储至该地址的位进行加扰可以利用上面描述的方法中的一个或多个来进行。对于存储至一个地址的块内的位,可以利用伪随机循环移位来进行置换加扰,该伪随机循环移位可以利用低复杂度硬件来进行。在m位的块内的加扰可以利用长度为log2(m)的附加LFSR来进行,以对于每个地址输出log2(m)位的伪随机序列,其指示应在存储在该地址中的m位上进行何种周期性置换。可以使用数个这种长度为log2(m)的LFSR (例如k个LFSR)。请注意,全面置换加扰种子可以包括log2(n)+log2(Q)+log2(k)+log2(m)位,其中,log2(n)位指示地址置换LFSR,log2 (Q)位用于将地址置换LFSR初始化,log2 (k)位指示周期移位LFSR,并且log2(m)位被用于将该周期移位LFSR初始化。
[0039]在读取数据期间,在解码后,信息位可以从ECC解码器RAM输出并且通过应用对应的去加扰操作(例如通过利用相同的种子应用逆置换)被提供给主机。
[0040]除了在ECC编码之前对数据进行置换加扰之外,可以改变ECC模块(block)内的奇偶校验位的位置,诸如在连续的编码操作之间,或者根据奇偶校验移位的计划,或者通过任意其它机制。如果奇偶校验位每次被编程至相同的单元,则存储奇偶校验位的单元会比存储信息位的单元更快磨损,因为预期奇偶校验位具有50%的0,而经历定形变形的信息位预期具有较低百分比的O。可以通过周期性地移位ECC码字(即信息位和奇偶校验位)来改变奇偶校验位的位置。周期性地移位ECC码字可以通过按照从RAM的某偏移地址开始并且然后对RAM深度(例如RAM的尺寸和/或RAM中的地址数目)取模(modulo)地递增该偏移地址的方式来将码字位从ECC编码器RAM输出到闪存来进行。偏移地址可以是数据要编程到其中的块的写/擦除周期的数目的函数,或者是当从该块读取数时改变且会已知的任意其它参数的函数。例如,偏移地址可以是随着块的每次编程操作而改变值的参数的函数。在读取期间,可以从偏移地址开始填充由ECC解码器使用的RAM。然后,偏移地址可以按照对RAM尺寸取模的方式来递增。
[0041]替选地,偏移地址可以随机选取并且存储在存储器的某其它位置上。例如,偏移地址可以被存储在一个或多个快闪管理表中。
[0042]替选地,偏移地址可以从偏移地址的预定集合中随机选取。在读取期间,可以通过识别ECC块中具有高浓度I的区域(例如该区域中的大约50%的位是I)来检测偏移地址。可以通过对多个窗口(每个窗口对应于偏移地址的预定集合的一个不同的偏移地址)内的I的数目进行计数来检测具有高浓度I的区域,其中,窗口尺寸可以与奇偶校验位的数目相等。与奇偶校验位的开始对应的偏移地址可以通过识别与最高数目的I对应的窗口来确定(因为奇偶校验将具有大约50%浓度的1,而非奇偶校验数据可以被定形为具有较低浓度的I)。请注意,偏移地址的误检测造成ECC解码失败。如果ECC解码失败,则可以利用不同的奇偶校验偏移地址来进行附加的ECC解码尝试。请注意,在其中使用了错误奇偶校验地址偏移的误检测的情况下,可以避免完全的ECC解码并且可以进行对奇偶校验地址偏移误检测的早期检测,诸如通过检测高的校验子(syndrome)权重(例如其中不满足约50%的奇偶校验检查),其指示解码器并不在合法码字上操作。此外,在其中数据的“定形”的量在不同块之间变化的应用中,如果该数据序列中的I的部分接近50% (即,数据并未被强烈“定形”),则编码器可以在编程期间使用奇偶校验地址的预定的缺省偏移,因为解码器可能不能在读取期间基于比较每个窗中的I的数目来检测奇偶校验偏移。例如,在读取期间,如果与可能的奇偶校验偏移对应的所有计数大至示出50%的I的相同值,并且没有偏移示出与其它偏移相比显著更高的计数(或者在最高计数与次最高计数之间的差小于某阈值),则ECC解码器可以假设将预定的缺省偏移用于了奇偶校验。
[0043]所公开的置换加扰方法实现了避免存储数据的重复模式,这些重复模式可能造成闪存中的不同的干扰效果。所公开的方法可以与“定形”变形结合使用(例如,作为耐久性增强编码(endurance enhancement coding)的部分来进行的变形)。
[0044]此外,所公开的方法通过改变未定形的位(例如奇偶校验位)的物理位置而基本上实现了引入至闪存的磨损的平均分布。
[0045]参考图2,描绘了系统200,其包括耦合至主机设备230的数据存储设备202。数据存储设备202包括耦合至存储器220的控制器204。控制器204包括置换加扰器208。置换加扰器208被配置为进行保留待加扰的数据的I和O的比例的加扰操作。
[0046]主机设备230可以包括移动电话、音乐或视频播放器、游戏控制台、电子书阅读器、个人数字助理(PDA)、诸如膝上计算机、笔记本计算机或平板计算机的计算机、任意其它电子设备、或者其任意组合。数据存储设备202可以配置为可操作地耦合至主机设备230。为了举例说明,数据存储设备202可以是存储卡,诸如安全数码SD?卡,microSD?卡,miniSD.TM 卡(特拉华州威尔明顿的 SD-3C LLC 的商标)、MultiMediaCard.TM(MMC.TM)卡(维吉尼亚州阿灵顿的JEDEC Solid State Technology Association的商标)、或者CompactFlash? (CF)卡(加利福尼亚州米皮塔斯的SanDisk公司的商标)。数据存储设备202可以配置为耦合至作为嵌入式存储器的主机设备230,诸如作为说明性示例的eMMC? (维吉尼亚州阿灵顿的 JEDEC Solid State Technology Association 的商标)和eSD存储器。
[0047]数据存储设备202包括控制器204,该控制器204包括定形器206、置换加扰器208、ECC引擎210、和对于ECC引擎210可访问的随机存取存储器(RAM) (ECC RAM) 212。控制器204配置为在定形器206处接收数据位240。定形器206配置为进行生成如下定形数据207的定形变形,该定形数据具有与数据位240的I和O的比例不同的I和O的比例。控制器204配置为将定形数据207提供给置换加扰器208。置换加扰器208配置为生成加扰的定形数据211,其被提供给ECC RAM212用于由ECC引擎210编码。控制器204配置为将已编码的加扰的定形数据242发送给存储器220,用于存储在一组存储元件222中。
[0048]置换加扰器208配置为生成如下加扰定形数据211,其具有与定形数据207相同比例的I和O。例如,在一些实施例中,置换加扰器可以包括:计数器和电路,其配置为提供如关于图1描述那样的值P (mod Q) ;LFSR,其配置为生成位索引的加扰序列;处理器,其编程为根据P (mod Q)序列或者根据随机或伪随机序列生成位索引(例如图1的索引104)的序列;或者任意其它机构,其生成具有与定形数据207相同比例的I和O的加扰定形数据211。[0049]在图2示出的特定实施例中,置换加扰器208配置为基于数据块的位置而不是基于位位置进行加扰。置换加扰器208配置为利用线性反馈移位寄存器(LFSR) 250加扰定形数据207,以根据种子260加扰地址序列262。LFSR250配置为生成加扰的地址序列264。与加扰的地址序列264中的各个地址对应的数据可以通过移位器252、诸如循环移位器的操作来生成加扰定形数据211。在一个其中根据随机或伪随机生成技术确定种子260的实施例中,种子260可以被随着加扰定形数据211提供给ECC RAM212。在其中种子260与在从存储器220读取数据时可能已知的参数(诸如写/擦除(W/E)周期的计数)对应的其它实施例中,种子260可以并不被提供给ECC RAM212用于编码,并且可以并不存储在存储器220上。尽管种子260示出为附加于要在存储于存储器220处之前由ECC引擎210编码的加扰定形数据211,但在其它实施例中种子260可以在并未由ECC引擎210以加扰定形数据211编码的情况下存储至存储器220。例如,种子260可以利用单独的、专用的ECC引擎编码,或者可以经由一个或多个其它结构来进行错误保护。
[0050]ECC引擎210可以配置为进行待存储至存储器220的数据的误差校正编码(例如作为解释性示例的BCH、里德-所罗门或者低密度奇偶奇偶校验)以及从存储器220读取的数据的误差校正解码。ECC引擎210可以配置为在编码操作期间和在解码操作期间访问存储在ECC RAM212处的数据。例如,ECC RAM212可以配置为存储多个数据块,举例说明为标记为C11、C12、C13和C14的第一行块,以及标记为C21、C22、C23和C24的第二行块。在一个特定实施例中,置换加扰器208可以配置为在“实时”实现方案中根据加扰的地址序列264填充ECC RAM212。与每个块C11-C24对应的位可以在将数据存储在ECC RAM212中之前利用移位器252来加扰。在将数据存储在ECC RAM212中之后,ECC引擎210可以编码ECCRAM212中的数据,以生成要作为已编码的加扰定形数据242存储的码字。
[0051]ECC引擎210可以配置为根据偏移地址214将包括加扰信息位也包括奇偶校验位的码字写至ECC RAM212。偏移地址214可以指示用于码字的起始地址。为了举例说明,包括8个数据块(其包括6个信息位块和两个奇偶校验位块)的码字可以被写为使得第一信息位块被存储在偏移地址214 (即在块C23中),第二信息位块被存储在块C24中,第三信息位块被存储在块Cll中,第四、第五和第六信息位块分别被存储在块C12、C13和C14中,并且第一和第六奇偶校验位块分别被存储在C21和C22中。在随后的ECC编码操作期间,偏移地址214可以被递增或者重新定位以指定码字在ECC RAM212内的另一位置处的起始地址。结果是,在随后的编码操作期间生成的(非定形的)奇偶校验位可以被写至ECC RAM212中的不同位置,并且转移至存储器220的不同部分。当数据根据偏移地址214的随机选择来编码并且随后从存储器220读取时,控制器204可以被配置为根据I值在从存储器220读取的已编码的加扰数据的部分中的计数来确定偏移地址250。
[0052]存储器220可以是非易失性存储器,诸如快闪多层单元(MLC)或者单层单元(SLC)存储器。存储器220包括多组存储元件,诸如存储元件的代表组222。例如,存储元件的代表组222可以是闪存的字线(WL)。
[0053]尽管置换加扰器208示出为包括用于加扰块地址的LFSR250并且包括用于在每个块内进行加扰的移位器252,然而在其它实施例中,置换加扰器208可以配置为进行一个或多个其它类型的置换加扰。例如,置换加扰器208可以配置为如关于图1描述那样进行置换加扰。[0054]尽管示出了单个LFSR250,然而在其它实施例中,置换加扰器可以包括多个LFSR,并且特定的LFSR250可以被随机选择以用于地址加扰。包括对所选LFSR250的指示和用于将所选LFSR250初始化的数据的置换种子可以被附加至待存储在存储器220中的加扰数据211。替选地,LFSR和用于将所选LFSR初始化的数据可以经由待存储的数据的逻辑块地址的决定性函数来确定,并且已编码的加扰定形数据242可以在并不将置换种子存储在存储器220中的情况下被存储。尽管置换加扰器208示出为包括移位器252,然而在其它实施例中,置换加扰器208包括第二组LFSR。第二 LFSR可以从第二组LFSR随机选择,并且每组位内的与加扰地址264对应的位可以根据所选的第二 LFSR的输出来加扰。置换种子也可以包括对于第二 LFSR以及用于将第二 LFSR初始化的第二数据的指示。
[0055]图3是框图,其示出了置换加扰器300的一个特定实施例。例如,置换加扰器300可以对应于图2的置换加扰器208。第一线性反馈移位寄存器(LFSR) 302可以提供用于置换加扰的种子304。例如,LFSR302可以是16位的LFSR并且种子304可以是对于信息数据的每千字节提取的16位种子。种子304的第一部分306可以指示一组LFSR310中的一个。例如,第一部分306可以是3位,并且该组LFSR310可以包括8个LSFR321-335。解码器308可以接收种子的头三位306,并且可以指示该组LFSR310中被选取或特定的一个。
[0056]种子304的第二部分312可以将该组LFSR310中特定的一个初始化。例如,第二部分312可以是8位,其中8位中的每个对应于第二组LFSR310中的8个LSFR321-335中相应的一个。
[0057]种子304的第三部分314可以将对于各个数据块产生位移的第三LSFR316初始化。例如,在数据块是双字的情况下,第三部分314可以是进行指示的5个位以及在从O到31的范围中的一个移位值。
[0058]LSFR的组310中的LSFR321-335中的每个都可以是8位的LSFR,其配置为对于信息数据的每个双字产生一个地址(0-255),以便覆盖千字节数据的地址空间。可以产生加扰的地址序列。例如,第二 LSFR321可以从第二组LSFR310内选择,并且与由所选的第二LSFR321产生的地址对应的一组位可以被加扰地选择为在加扰输出中的下一组位。例如,LSFR的组310中的LSFR321-335中的每个(包括所选的第二 LSFR321)可以具有耦合至多路复用器318的输入的相应输出。多路复用器318的输出可以产生加扰的地址序列,诸如图2的加扰的地址序列264。
[0059]与加扰的地址序列中的各个地址对应的数据可以通过将数据移位达与和第三LSFR316的输出相关的移位值对应的量而被加扰,诸如经由图2的移位器252。尽管使出了单个的第三LSFR316,然而在其它实施例中第三LSFR316可以是第二组LFSR的部分,并且种子304可以包括用于从第二组选择特定LFSR的指示器,诸如关于种子304的指示从组310选择的IFSR的第一部分306所描述的。
[0060]图4是图示,其示出了诸如误差校正码(ECC)码字的码字的置换以及该码字的去置换的特定实施例400。在图4中示出的特定实施例中,位置换的码字402(例如已编码的有形数据)包括信息位404和奇偶校验位406。置换加扰410可以在未置换的码字402上进行。例如,置换加扰410可以在块地址(块的地址,诸如字节、字、双字)上进行,并且置换加扰410可以在如关于图1和2描述那样在每个块内的位上进行。除了置换加扰之外,奇偶校验位在误差校正编码块内的位置可以改变,诸如在连续编码操作之间或根据奇偶校验移位的计划来改变。
[0061]例如,改变奇偶校验位406的位置可以通过周期地移位置换过的码字412(即,信息位404和奇偶校验位406)来进行。周期地移位置换过的码字412可以通过将该置换过的码字412以从所选的偏移地址416开始的方式输出至诸如图2的闪存220的存储器来进行。例如,可以有多个可能的偏移地址414可用。所选的偏移地址416可以根据这样的参数来从多个可能的偏移地址414选择,该参数随着闪存220的、置换过的码字412待编程到其中的块的每次编程操作而改变值,诸如写/擦除周期的计数。替选地,所选的偏移地址416可以随机选取并且存储在存储器的某其它位置上,诸如存储在一个或多个快闪管理表中。替选地,所选的偏移地址416可以随机地从偏移地址的预定集合(B卩,从多个可能的偏移地址414)选出。在多个可能的偏移地址414之一被选为所选的偏移地址416之后,置换过的码字412可以与所选的偏移地址416对应地移位并且被输出至闪存220。
[0062]在从闪存220读取置换过的码字412期间,可以进行对应的去加扰操作或者去置换加扰420。例如,检测到的偏移地址422可以是通过识别具有较高百分比的1(例如约50%)的区域426而从第二个多个可能的偏移地址424检测到的。具有较高百分比的I的区域426可以是通过计数多个窗(每个窗对应于该多个可能的偏移地址424中的一个不同的偏移地址)内的I的数目而检测到的,其中窗尺寸可以等于奇偶校验位的数目。与奇偶校验的开始对应的偏移地址可以是通过识别与I的最高计数对应的窗而被确定的。一旦确定了奇偶校验的开始,则可以恢复信息位404和奇偶校验位406。
[0063]通过当其它数据被存储至闪存220时变化所选的偏移地址416,与信息404相比,存储奇偶校验406的单元的不均匀磨损(归因于奇偶校验406中较高浓度的I)可以在闪存220中被平衡。结果是,闪存220的可用寿命可以与其中奇偶校验位被反复存储至相同位置(诸如SLC缓存中闪存单元的相同集合)的系统相比更强。
[0064]图5示出了置换加扰的方法的一个特定实施例。方法500包括在502接收具有特定比例的O值和I值的数据。在504,该数据被加扰以生成具有该特定比例的O值和I值的加扰数据。
[0065]例如,该数据可以对应于图1的原始序列102,并且可以具有长度Q。加扰该数据可以包括将该数据中的非顺序位位置(例如,原始序列102中的非顺序位位置)上的位拷贝至加扰数据中的顺序位位置(例如,加扰序列106中的顺序位位置)。在非顺序位位置之间的距离P可以与Q互质。加扰数据中的每个位位置k可以具有与所接收的数据中的位位置(k-l)P(mod Q)相同的位值。
[0066]作为另一示例,加扰所述数据可以包括将第一位组从第一数据中的第一组位置拷贝至第二数据中的第二组位置,其中,第一组位置与第二组位置不同,诸如关于图2描述那样。加扰该数据还可以包括将第二位组从该数据拷贝至加扰数据,其中第一位组与第二位组是从该数据中的非顺序组位置拷贝至加扰数据中的顺序组位置的。为了举例说明,图2的LFSR262可以在形成被写至ECC RAM212的加扰数据时将定形数据207中的位组的地址重新排序,使得定形数据207中的非顺序位组被拷贝至ECC RAM212的顺序位置。例如,定形数据中的两个非顺序位组(块)可以作为顺序块Cll和C12拷贝至ECC RAM212。加扰该数据可以进一步包括在第一位组内将位移位,诸如经由图2的移位器252。
[0067]方法500可以在具有控制器和耦合至该控制器的存储器、诸如图2的数据存储设备202的控制器204和存储器220的数据存储设备中进行。控制器包括加扰器,其配置为接收具有特定比例的O值和I值的数据,并且对该数据进行加扰以生成具有该特定比例的O值和I值的加扰数据。作为一个示例,该数据可以具有长度Q,加扰器可以配置为将该数据中的非顺序位位置上的位拷贝至加扰数据中的顺序位位置,在非顺序位位置之间的距离P可以与Q互质,并且加扰数据中的每个位位置k可以具有与该数据中的位位置(k-l)P(modQ)相同的位值。作为另一示例,加扰器可以配置为将第一位组从第一数据中的第一组位置拷贝至第二数据中的第二组位置,其中第一组位置不同于第二组位置。
[0068]尽管将在此描绘的不同部件示出为模块部件并且按照普遍方面来描述,但这种部件可以包括一个或多个微处理器、状态机、或者配置为使得图2的数据存储设备202能够进行对于这样部件为特征性的特定功能。例如,图2的置换加扰器208可以代表物理部件,诸如硬件控制器、状态机、逻辑电路或者其它结构,以使得置换加扰器208能够将定形数据加扰以生成加扰定形数据,其具有与该定形数据相同比例的I和O。例如,置换加扰器208可以包括LFSR和/或移位器(例如循环移位器/桶形移位器)以分别进行地址置换和块置换。
[0069]替选地,置换加扰器208的功能性的多个方面之一可以利用便成为执行相应功能性的微处理器或微控制器来实现。在一个特定实施例中,存储器220包括由控制器204中的处理器执行的可执行的指令。替选地,或附加地,由控制器204中的处理器执行的可执行的指令可以存储在并非存储器220的部分的单独的存储器位置上,诸如在RAM上或者在只读存储器(ROM)上。
[0070]在一个特定实施例中,数据存储设备202可以是便携式设备,其配置为选择性地耦合至一个或多个外部设备。例如,作为解释性示例,数据存储设备202可以是通用串行总线(USB)快闪设备或者可移除的存储卡。然而,在其它示例中,数据存储设备202可以附接或嵌入在一个或多个主机设备内,诸如在便携式通信设备的壳体内。例如,数据存储设备202可以在封装过的设备内,诸如无绳电话、个人数字助理(PDA)、游戏设备或游戏机、便携式导航设备、计算机设备、或者使用内部非易失性存储器的其它设备。在一个特定实施例中,数据存储设备202包括非易失性存储器,诸如闪存(例如NAND、N0R、多层单元(MLC))、分割位线NOR(DINOR)、高电容耦合率(HiCR)、不对称非接触晶体管(ACT)、或者其它闪存、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、只读存储器(ROM)、一次性可编程存储器(OTP)或者任意其它类型的存储器。
[0071]在此示出所描述的实施例旨在于提供对不同实施例的普遍理解。可以利用和从本公开中导出其它实施例,使得可以在不偏离本公开的范围的情况下做出结构和逻辑上的替代和改变。本公开旨在于覆盖不同实施例的任意和全部后续的适配或变化。从而,本公开和附图应被视作举例说明的,而不是限制性的。
[0072]上面公开的主题应被看做举例说明的,而不是限制性的,并且所附的权利要求旨在于覆盖络在本公开的范围内的所有这种修改、增强和其它实施例。因此,至法律所允许的最大范围地,本发明的范围应通过对下面的权利要求和其等效物的最宽泛的、允许的理解来确定,并且不应通过之前的详细描述被约束或限制。
【权利要求】
1.一种方法,包括: 在数据存储设备中,执行: 接收具有特定比例的O值和I值的数据;以及 将所述数据加扰以生成具有该特定比例的O值和I值的加扰数据。
2.根据权利要求1所述的方法,其中,对于任意所接收的数据,所述加扰数据具有与所接收的数据相同比例的O值和I值。
3.根据权利要求1所述的方法,其中,所述数据具有长度Q,并且其中将所述数据加扰包括将所述数据中的非顺序位位置上的位拷贝至所述加扰数据中的顺序位位置。
4.根据权利要求3所述的方法,其中,在所述非顺序位位置之间的距离P与Q互质。
5.根据权利要求4所述的方法,其中,在所述加扰数据中的各个位位置k具有与在所述数据中的位位置(k-l)P(modQ)相同的位值。
6.根据权利要求4所述的方法,还包括选择距离P的特定值和选择所述数据中的起始位位置。
7.根据权利要求1所述的方法,其中,将所述数据加扰包括将第一位组从所述数据中的第一组位置拷贝到所述加扰数据中的第二组位置,其中,所述第一组位置与所述第二组位置不同。
8.根据权利要求7所述的方法,其中,将所述数据加扰包括将第二位组从所述数据拷贝到所述加扰数据,其中,将所述第一位组和所述第二位组从所述数据中的非顺序组位置拷贝至所述加扰数据中的顺序组位置。
9.根据权利要求7所述的方法,其中,将所述数据加扰包括移动所述第一位组中的位。
10.根据权利要求7所述的方法,其中,将所述数据加扰包括根据线性反馈移位寄存器(LFSR)的输出对所述数据中的位组的地址进行重新排序。
11.根据权利要求10所述的方法,其中,LFSR根据种子操作,并且还包括将该种子附加至待存储在数据存储设备的存储器中的所述加扰数据。
12.根据权利要求10所述的方法,其中,LFSR是选自所述数据存储设备中的多个LFSR的。
13.根据权利要求12所述的方法,其中,将包括对于所选的LFSR的指示以及用于初始化所选的LFSR的数据的置换种子附加至待存储在所述数据存储设备的存储器中的所述加扰数据。
14.根据权利要求13所述的方法,其中,加扰所述数据还包括从第二组LFSR选择第二LFSR,并且根据该第二 LFSR的输出对每个位组中的位进行加扰,并且其中,所述置换种子还包括对所述第二 LFSR的指示和用于将所述第二 LFSR初始化的第二数据。
15.根据权利要求1所述的方法,其中,所述数据是在所述数据存储设备能够操作地耦合至主机设备期间在所述数据存储设备的控制器中基于从该主机设备接收的用户数据而生成的定形数据,其中,所述数据在所述数据存储设备的控制器中被加扰,并且还包括: 对所述加扰数据进行误差校正编码,以生成具有偏移地址的、已编码的加扰数据;以及 将所述已编码的加扰数据存储在数据存储设备的闪存中,使得所述已编码的加扰数据在所述闪存内的物理位置是所述偏移地址的函数。
16.根据权利要求15所述的方法,还包括根据I值在从所述闪存读取的已编码的加扰数据的部分中的计数来确定所述偏移地址。
17.根据权利要求15所述的方法,其中,所述偏移地址是从一个编程周期到另一个编程周期地变化的参数的函数,其中,所述参数是所述闪存的块的参数。
18.根据权利要求17所述的方法,其中,所述参数包括写/擦除周期的计数。
19.根据权利要求15所述的方法,其中,所述偏移地址存储在所述闪存的管理表中。
20.根据权利要求15所述的方法,其中,所述偏移地址是从偏移地址的预定集合随机选取的。
21.一种数据存储设备,包括: 存储器;以及 耦合至所述存储器的控制器,其中,所述控制器包括加扰器,其配置为接收具有特定比例的O值和I值的数据并且将该数据加扰以生成具有该特定比例的O值和I值的加扰数据。
22.根据权利要求21所述的数据存储设备,其中,所述数据具有长度Q,并且其中,将所述数据加扰包括将所述数据中的非顺序位位置上的位拷贝至所述加扰数据中的顺序位位置。
23.根据权利要求22 所述的数据存储设备,其中,在所述非顺序位位置之间的距离P与Q互质。
24.根据权利要求23所述的数据存储设备,其中,在所述加扰数据中的每个位位置k都具有与所述数据中的位位置(k-l)P(mod Q)相同的位值。
25.根据权利要求21所述的数据存储设备,其中,所述加扰器配置为将第一位组从所述数据中的第一组位置拷贝到所述加扰数据中的第二组位置,其中,所述第一组位置与所述第二组位置不同。
26.根据权利要求25所述的数据存储设备,其中,所述加扰器配置为将第二位组从所述数据拷贝至所述加扰数据,其中,所述第一位组与所述第二位组是从所述数据中的非顺序组位置拷贝至所述加扰数据中的顺序组位置的。
27.根据权利要求25所述的数据存储设备,其中,所述加扰器包括配置为对所述第一位组内的位进行移位的移位器。
28.根据权利要求25所述的数据存储设备,其中,所述加扰器包括线性反馈移位寄存器(LFSR),并且其中,所述加扰器配置为根据所述LFSR的输出对所述数据中的位组的地址进行重新排序。
29.根据权利要求28所述的数据存储设备,其中,所述LFSR根据种子进行操作,并且其中,所述种子被附加至待存储在所述存储器中的加扰数据。
30.根据权利要求21所述的数据存储设备,其中,所述存储器包括闪存,并且其中,所述控制器进一步包括: 定形器,其配置为通过在所述存储设备能够操作地耦合至主机设备期间定形从所述主机设备接收的用户数据来生成所述数据,其中,所述数据在所述数据存储设备的控制器中被加扰;以及 误差校正编码(ECC)引擎,其配置为执行所述加扰数据的误差校正编码以生成具有偏移地址的、已编码的加扰数据,以及 其中,所述控制器配置为将所述已编码的加扰数据存储在所述闪存中,使得所述已编码的加扰数据在所述闪存内的物理位置是所述偏移地址的函数。
31.根据权利要求30所述的数据存储设备,其中,所述控制器配置为根据I值在从所述闪存读取的所述已编码的加扰数据的部分中的计数来确定所述偏移地址。
32.根据权利要求31所述的数据存储设备,其中,响应于利用所述偏移地址对从所述闪存读取的已编码的加扰数据进行ECC解码的失败,所述控制器配置为利用其它偏移地址发起所述已编码的加扰数据的ECC解码。
33.根据权利要求32所述的数据存储设备,其中,所述控制器配置为,根据O值在从所述闪存读 取的已编码的加扰数据的部分中的计数的排序,选择偏移地址。
34.根据权利要求32所述的数据存储设备,其中,所述控制器配置为通过将校验子权重与阈值相比较来利用所述其它偏移地址发起对所述已编码的加扰数据的ECC解码。
35.根据权利要求31所述的数据存储设备,其中,所述控制器配置为,响应于确定O值与I值的特定比例在定形阈值以上而使用缺省的偏移地址。
36.根据权利要求30所述的数据存储设备,其中,所述控制器配置为,根据从一个编程周期到另一个编程周期地变化的参数的函数来确定所述偏移地址,其中,所述参数是所述闪存的块的参数。
37.根据权利要求36所述的数据存储设备,其中,所述参数包括写/擦除周期的计数。
38.根据权利要求30所述的数据存储设备,其中,所述偏移地址存储在所述闪存的管理表中。
39.根据权利要求30所述的数据存储设备,其中,所述控制器配置为根据O值在从所述闪存读取的已编码的加扰数据的部分中的计数来确定所述偏移地址。
40.根据权利要求39所述的数据存储设备,其中,所述控制器配置为确定与具有最高密度O值的部分对应的偏移地址,并且其中,所述控制器配置为,响应于确定O值和I的所述特定比例高于定形阈值或者响应于确定在所述部分的O值的最高密度与所述部分的O值的次最高密度之间的差小于阈值,使用缺省的偏移地址。
【文档编号】H04K1/06GK103931127SQ201280056450
【公开日】2014年7月16日 申请日期:2012年10月16日 优先权日:2011年10月20日
【发明者】E.沙隆, I.阿尔罗德, A.纳冯 申请人:桑迪士克科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1