数据转换方法和数据转换设备

申请号 CN201310156843.6 申请日 2013-04-28 公开(公告)号 CN103514060A 公开(公告)日 2014-01-15
申请人 富士通株式会社; 发明人 羽根田光正;
摘要 一种数据转换方法和数据转换设备,该方法包括:对于特定数量比特的数据段能够呈现的比特模式中的每一种比特模式,对具有该比特模式的数据段的数量进行计数,其中,数据段为写入存储介质的写入数据的分段,该存储介质存储两种类型的比特值,该两种类型的比特值中,第一种值的错误发生率高于第二种值的错误发生率;将按照计算结果的降序从比特模式中选择作为转换源模式的比特模式与按照在比特模式中分别包含的第二值的数量的降序从比特模式中选择的作为转换目标模式的比特模式相关联起来;以及对于每一种转换源比特模式,将具有该转换源比特模式的数据段转换成为具有相关联的转换目标比特模式的转换后的数据段。
权利要求

1.一种由计算机执行的数据转换方法,所述数据转换方法包括:
对于特定数量比特的比特串能够呈现的一组比特模式中的在一组数据段中出现的每一种比特模式,对所述一组数据段中具有所述比特模式的数据段的数量进行计数,所述一组数据段是按所述特定数量的比特分割正写入存储介质的写入数据而创建的,所述存储介质具有这样的特性:在所述存储介质内存储的两种比特值中,第一种值的比特错误发生率高于第二种值的比特错误发生率;
将按照所述计数得到的计数结果的降序从所述一组比特模式中选择的作为转换源模式的比特模式,分别与按照比特模式中包含的第二种值的数量的降序从所述一组比特模式中选择的作为转换目标模式的比特模式相关联起来;以及
对于每一种转换源比特模式,将所述一组数据段中包含的具有所述转换源比特模式的数据段转换成为具有与所述转换源比特模式相关联的转换目标比特模式的转换后的数据段。
2.根据权利要求1所述的数据转换方法,还包括:
制作关联信息,所述关联信息指示彼此相关联的每一种转换源比特模式和转换目标比特模式之间的关联性;以及
将所述转换后的数据段与所述关联信息关联起来并输出到所述存储介质。
3.根据权利要求2所述的数据转换方法,还包括:
从所述存储介质获取所述转换后的数据段和所述关联信息;以及
基于获取到的所述关联信息,将所述转换后的数据段中包含的每一个转换后的数据段的比特模式确定为一种转换目标比特模式,并且将每一个转换后的数据段转换成为具有与所述转换目标比特模式相关联的转换源比特模式的复原的数据段。
4.根据权利要求1所述的数据转换方法,其中,
所述计数包括为所述第二种值的数量少于所述特定数量的比特的一半的比特模式的计数结果设置权重。
5.一种由计算机执行的数据转换方法,所述数据转换方法包括:
对从一组数据段中选择的每一个数据段内包含的第一种值的数量进行计数,所述一组数据段是通过分割向存储介质写入的写入数据而创建的,所述存储介质具有这样的特性:
在所述存储介质内存储的两种比特值中,所述第一种值的比特错误发生率高于第二种值的比特错误发生率;以及
当在该数据段内包含的所述第一种值的数量超过在所述数据段内包含的所有比特的数量的一半时,通过反转所述数据段内包含的每一个比特值将所述数据段转换成为转换后的数据段。
6.根据权利要求5所述的数据转换方法,还包括:
当在所述转换后的数据段内包含的所述第一种值的数量超过在所述转换后的数据段内包含的所有比特的数量的一半时,将所述转换后的数据段与指示在所述转换后的数据段内包含的每一个比特值已被反转的反转信息关联起来并向所述存储介质输出;以及当在所述数据段内包含的所述第一种值的数量不超过在所述数据段内包含的所有比特的数量的一半时,将所述数据段与指示在所述数据段内包含的每一个比特值没有被反转的反转信息关联起来并向所述存储介质输出。
7.根据权利要求6所述的数据转换方法,还包括:
从所述存储介质获取所述转换后的数据段和所述反转信息;以及
当所述获取的指示信息指示每一个比特的值已被反转时,将所述获取的转换后的数据段转换成为通过反转在所述转换后的数据段内包含的每一个比特值而创建的复原的数据段。
8.一种数据转换设备,包括:
计数单元,用于对于特定数量比特的比特串能够呈现的一组比特模式中的在一组数据段中出现的每一种比特模式,对所述一组数据段内具有所述比特模式的数据段的数量进行计数,所述一组数据段是按所述特定数量的比特分割正写入存储介质的写入数据而创建的,所述存储介质具有这样的特性:在所述存储介质内存储的两种比特值中,第一种值的比特错误发生率高于第二种值的比特错误发生率;
关联单元,用于将按照所述计数单元得到的计数结果的降序从所述一组比特模式中选择的作为转换源模式的比特模式,分别与按照比特模式中包含的第二种值的数量的降序从所述一组比特模式中选择的作为转换目标模式的比特模式相关联起来;以及转换单元,用于对于每一种转换源比特模式,将所述一组数据段中包含的具有所述转换源比特模式的数据段转换成为具有与所述转换源比特模式相关联的转换目标比特模式的转换后的数据段。
9.根据权利要求8所述的数据转换设备,其中,
所述关联单元制作指示彼此相关联的每一种转换源比特模式和转换目标比特模式之间的关联性的关联信息;以及
所述数据转换设备还包括写单元,用于将所述转换后的数据段与所述关联信息关联起来并输出到所述存储介质。
10.根据权利要求9所述的数据转换设备,还包括:
读单元,用于从所述存储介质获取所述转换后的数据段和所述关联信息;以及复原单元,用于基于获取到的所述关联信息,将所述转换后的数据段中包含的每一个转换后的数据段的比特模式确定为一种转换目标比特模式,并且将每一个转换后的数据段复原成为具有与所述转换目标比特模式相关联的转换源比特模式的复原的数据段。
11.根据权利要求8所述的数据转换设备,其中,
所述计数单元为所述第二种值的数量少于所述特定数量的比特的一半的比特模式的计数结果设置权重。
12.一种数据转换设备,包括:
计数单元,用于对从一组数据段中选择的每一个数据段内包含的第一种值的数量进行计数,所述一组数据段是通过分割向存储介质写入的写入数据而创建的,所述存储介质具有这样的特性:在所述存储介质内存储的两种比特值中,所述第一种值的比特错误发生率高于第二种值的比特错误发生率;以及
转换单元,用于当在该数据段内包含的所述第一种值的数量超过在所述数据段内包含的所有比特的数量的一半时,通过反转所述数据段内包含的每一个比特值将所述数据段转换成为转换后的数据段。
13.根据权利要求12所述的数据转换设备,还包括:
写单元,用于当在所述转换后的数据段内包含的所述第一种值的数量超过在所述转换后的数据段内包含的所有比特的数量的一半时,将所述转换后的数据段与指示在所述转换后的数据段内包含的每一个比特值已被反转的反转信息关联起来并向所述存储介质输出;
其中
当在所述数据段内包含的所述第一种值的数量不超过在所述数据段内包含的所有比特的数量的一半时,所述写单元将所述数据段与指示在所述数据段内包含的每一个比特值没有被反转的反转信息关联起来并向所述存储介质输出。
14.根据权利要求13所述的数据转换设备,还包括:
读单元,用于从所述存储介质获取所述转换后的数据段和所述反转信息;以及复原单元,用于当所述获取的指示信息指示每一个比特的值已被反转时,将所述获取到的转换后的数据段复原成为通过反转在所述转换后的数据段内包含的每一个比特值而创建的复原的数据段。

说明书全文

数据转换方法和数据转换设备

技术领域

[0001] 本文中讨论的实施方式涉及数据转换。

背景技术

[0002] 被称为ECC(Error Check and Correct,错误检查与纠正)的技术是用于降低半导体存储器的出错率的传统方法,该半导体存储器例如为NAND型闪存。在ECC技术中,当向半导体存储器写入数据时,存储器控制器向数据中添加纠错码,借此在读数据时通过纠错码纠正错误。
[0003] 相关的现有技术例如包括这样一种技术:当向闪存中写入数据时对该数据编码,编码后的数据中特定数值的数量减少到小于编码前的特定数值的数量,然后,将编码后的数据写入闪存的存储单元。另一种相关技术中,使用与第一数据格式相关的统计值将信息从第一数据格式的信息转换成为第二数据格式的信息,并且将该信息与标识符一起存储到存储器,该标识符标识向第二数据格式进行转换所使用的转换值。
[0004] 又一种相关技术中,将数据写入随机存取存储器,将数据转换成具有规定值的比特的数量大于或等于规定数量的数据,转换后的数据被输出到随机存取存储器。再一种相关技术中,在通过重新排列突发传输中的写入数据而创建的n种写入数据中选择下面的写入数据并将所选择的写入数据在突发传输中的顺序编码在冗余比特中:在突发传输中将该写入数据写入存储器时所发生的数据转换少于进行重新排列之前的数据转换。
[0005] 作为上述传统技术的例子,参看公开号为2010-528380和2005-537551的PCT申请的公开的日语译文,和已披露的公开号为2002-366419和2008-059449的日本专利
[0006] 当半导体存储器具有微加工制造结构或者多值配置时,半导体存储器的出错率增加。结果,使用传统技术例如ECC进行纠错变得困难。例如,半导体存储器更高的出错率导致在ECC中使用的纠错码的比特数量的增加,因而导致存储器控制器的电路规模的增加和半导体存储器需要更大的存储器容量。发明内容
[0007] 本发明实施方式的一个方面的目的是至少解决上述传统技术中的问题。
[0008] 根据实施方式的一个方面,由计算机执行的数据转换方法包括:对于特定数量比特的比特串能够呈现的一组比特模式中的在一组数据段中出现的每一种比特模式,对所述一组数据段内具有所述比特模式的数据段的数量进行计数,所述一组数据段是通过按照所述特定数量的比特分割正写入存储介质的写入数据而创建的,所述存储介质具有这样的特性:在所述存储介质内存储的两种比特值中,第一种值的比特错误发生率高于第二种值的比特错误发生率;将按照所述计数得到的计数结果的降序从所述一组比特模式中选择的作为转换源模式的比特模式,分别与按照比特模式中包含的第二种值的数量的降序从所述一组比特模式中选择的作为转换目标模式的比特模式相关联起来;以及,对于每一种转换源比特模式,将所述一组数据段中包含的具有所述转换源比特模式的数据段转换成为具有与所述转换源比特模式相关联的转换目标比特模式的转换后的数据段。
[0009] 根据本发明的一个方面,实现了降低存储介质的出错率的效果。附图说明
[0010] 图1是根据第一实施方式的数据转换方法的例子的示意图;
[0011] 图2是第二实施方式的数据转换方法的例子的示意图;
[0012] 图3是存储装置300的硬件配置的例子的框图
[0013] 图4是计数规则400的例子的示意图;
[0014] 图5是计数器表500的内容的例子的示意图;
[0015] 图6是转换表600的内容的例子的示意图;
[0016] 图7是NAND控制器302的功能配置的例子的框图;
[0017] 图8是页格式的例子的示意图;
[0018] 图9A和图9B是制作转换表600的例子的示意图;
[0019] 图10和图11是NAND控制302的写过程的例子的流程图;以及
[0020] 图12是NAND控制器302的读取过程的例子的流程图。

具体实施方式

[0021] 将参照附图说明本发明的优选的实施方式。
[0022] 图1是根据第一实施方式的数据转换方法的例子的示意图。在图1中,数据转换设备101是计算机,其具有转换向存储介质110写入的数据的功能。例如,数据转换设备101为存储器控制器或SSD(solid state drive,固态驱动器),其控制对存储介质110的数据的写和读。
[0023] 存储介质110具有一种特性:在存储介质110内存储的两种类型的比特值中,一种值的比特错误发生率高于另一种值的比特错误发生率。存储介质110例如是半导体存储器,例如NAND型闪存。
[0024] NAND型闪存根据电荷的存在和消失以比特表达信息,该电荷由积聚在存储单元的浮栅中的电子组成。例如,电荷的存在表示“0”,而电荷的消失表示“1”。
[0025] NAND型闪存还具有一种特性:例如,在存储的比特值“0”和“1”中,值“0”的比特错误发生率高于值“1”的比特错误发生率。例如,在NAND型闪存中,由于存储单元的晶体管的阈值电压的下降,易于发生“0”变为“1”的比特错误。
[0026] 当包含在写入数据中的“0”的比例超过50%时,通过在写入数据被写入NAND型闪存时反转包含在写入数据内的每一个比特的值,存储器控制器能够降低出错率。出错率表示发生的比特错误占所有写入数据的比例。
[0027] 但是,当包含在写入数据中的“0”的比例和“1”的比例几乎相等时,通过反转包含在写入数据内的每一比特的值来降低出错率的效果变差。例如,如果包含在写入数据内的“0”的比例是51%,反转包含在写入数据内的每一个比特的值,结果得到几乎彼此相等的“0”的比例和“1”的比例,导致出错率的减少很小。
[0028] 根据第一实施方式,数据转换设备101以数据单元为单位执行比特反转控制,该数据单元是通过按任意数量的比特分割要写入存储介质110的写入数据而创建的。例如,数据转换设备101对从通过分割要写入存储介质110的写入数据而创建的一组数据中选择的每一个数据内包含的特定值的数量进行计数。
[0029] 上述特定值是在存储介质110内存储的两种比特值中具有更高的比特错误发生率的比特值。当计数的特定值的数量大于包含在数据内的所有比特的数量的一半时,数据转换设备101反转包含在数据内的每一个比特的值。
[0030] 下面描述第一实施方式的数据转换设备101的数据转换过程的例子。在下面的描述中,假定一种情况,即存储介质110具有这样的特性:在存储介质110内存储的比特值“0”和“1”中,比特值“0”的比特错误发生率高于比特值“1”的比特错误发生率。
[0031] (1)数据转换设备101从主机102接收要写入存储介质110的写入数据120。主机102是计算机,其请求将写入数据120写入存储介质110。例如,主机102是包含在系统中的CPU(中央处理单元)、DMAC(Direct Access Memory Controller,直接存取存储器控制器)、GPU(Graphic Processing Unit,图形处理单元)或者DSP(Digital Signal Processor,数字信号处理器),该系统包括数据转换设备101和存储介质110。
[0032] (2)数据转换设备101对从一组数据段中选择的每一个数据段内包含的“0”的数量进行计数,该一组数据段是通过分割接收到的写入数据120而创建的。在图1的例子中,按4比特将16比特的写入数据120分割成为一组数据段120-1至120-4。
[0033] 在这种情况下,例如,数据转换设备101对在数据段120-1至120-4的每一个数据段内包含的“0”的数量进行计数。在这个例子中,在数据段120-1内包含的“0”的数量是3,在数据段120-2内包含的“0”的数量是1,在数据段120-3内包含的“0”的数量是3,在数据段120-4内包含的“0”的数量是2。
[0034] (3)对于写入数据120的每一个数据段,当在数据段内包含的“0”的计数超过在该数据段内包含的所有比特的数量的一半时,数据转换设备101反转在该数据段内包含的每一个比特的值。在图1的例子中,在数据段120-1至120-4的每一个数据段内包含的所有比特的数量是4。
[0035] 在数据段120-1内包含的“0”的数量是3,其超过比特总数“4”的一半。因此,数据转换设备101反转在数据段120-1内包含的每一个比特的值。结果,数据段120-1被转换成通过反转在数据段120-1内包含的每一个比特的值而创建的数据段。
[0036] 在数据段120-3内包含的“0”的数量是3,其超过比特总数“4”的一半。因此,数据转换设备101反转在数据段120-3内包含的每一个比特的值。结果,数据段120-3被转换成通过反转包含在数据段120-3内的每一个比特的值而创建的数据段。
[0037] 在数据段120-2和数据段120-4的每一个内包含的“0”的数量小于或等于比特总数“4”的一半。因此,数据段120-2和120-4没有被转换。
[0038] (4)数据转换设备101为写入数据120的每一个数据段添加反转标记,该反转标记指示每一个数据段内包含的每一个比特的值是否已被反转。在图1的例子中,反转标记“1”被添加到数据段120-1,反转标记“1”指示每一个比特的值已被反转。例如,反转标记“1”添加在数据段120-1的比特串的尾部。
[0039] 指示每一个比特的值没有被反转的反转标记“0”被添加到数据段。指示已经反转了每一个比特的值的反转标记“1”被添加到数据段120-3。指示每一个比特的值没有被反转的反转标记“0”被添加到数据段120-4。
[0040] (5)数据转换设备101将写入数据120输出到存储介质110,该写入数据120的每一个数据段都添加了反转标记。结果,写入数据120被写入存储介质110,成为数据段120-1和120-3内的每一个比特的值都被反转的写入数据120。
[0041] 如上所述,对于通过按照任意数量的比特分割写入数据120而创建的每一个数据段,第一实施方式的数据转换设备101能够对包含在每一个数据段内的“0”的数量进行计数。当包含在数据段内的“0”的数量超过包含在数据段内的总的比特数的一半时,数据转换设备101可以反转在该数据段内包含的每一个比特的值。
[0042] 因而,可以按照以任意数量的比特分割写入数据120而创建的数据单元来执行比特反转控制。因此,与以写入数据为单位执行比特反转控制的情况相比,出错率降低得到了改善。
[0043] 在图1的示例中,在写入数据120内包含的“0”的比例是0.56(≈9/16)。对于写入数据120,当以按照“4”比特分割写入数据120而创建的数据单元为单位执行比特反转控制时,经受比特反转后的写入数据120内包含的“0”的比例降低到0.3(≈5/16)。对于写入数据120,当以写入数据单元为单位执行比特反转控制时,经受比特反转后的写入数据120内包含的“0”的比例为0.44(≈7/16)。
[0044] 这样,以通过分割写入数据120而创建的数据单元为单位执行比特反转控制而产生的比特反转后的“0”的比例,比以写入数据单元为单位执行比特反转控制而产生的比特反转后的“0”的比例小,因此,出错率降低得到了改善。
[0045] 当从存储介质110内读出写入数据120时,数据转换设备101基于在数据段120-1至120-4的组中的每一个数据段内添加的反转标记来转换写入数据120的每一个数据段120-1至120-4。
[0046] 例如,转换设备101转换添加有反转标记“1”的数据段120-1和120-3内包含的每一个比特的值。但是,转换设备101不转换添加有反转标记“0”的数据段120-2和120-4内包含的比特的值。
[0047] 因此,当从存储介质110内读取写入数据120时,基于添加到写入数据120包含的每一个数据段的反转标记,可以将在写入时比特被反转的数据复原到初始状态。
[0048] 下面描述根据第二实施方式的数据转换设备101。在进一步的描述中,省略与在第一实施方式中的描述相同的组成要素。
[0049] 在第一实施方式中,已经描述了在按照任意数量的比特分割写入数据而创建的数据单元内执行比特反转控制的情况。但是,在第一实施方式中,添加反转标记到每一个数据段,这增加了写入数据中的冗余部分的比例,其可能导致存储介质110的容量不足。
[0050] 例如,当写入数据按4比特进行分割时,写入数据的大小增加了原始数据大小的25%。例如,当写入数据根据16比特进行分割时,写入数据的大小增加了原始数据大小的
6.3%。
[0051] 第二实施方式涉及一种降低存储介质110的出错率并且抑制写入数据的冗余部分的增加的数据转换方法。下文将描述第二实施方式的数据转换方法的例子。
[0052] 图2是第二实施方式的数据转换方法的例子的示意图。
[0053] (1)数据转换设备101从主机102接收要写入存储介质110的写入数据200。
[0054] (2)基于按照特定数量的比特对接收到的写入数据200进行分割而创建的一组数据段,数据转换设备101对该组数据段中具有比特模式P的数据段的数量进行计数。特定数量的比特表示对写入数据200进行分割所根据的数据宽度,并且可以被任意设置。比特的该特定数量为例如4、16等。
[0055] 在由特定数量的比特构成的比特串所能呈现的一组比特模式中,比特模式P是在按照特定数量的比特对写入数据200进行分割而创建的一组数据段中出现的比特模式。比特模式的意思是在比特串中包含的比特的组合模式。
[0056] 在下面的描述中,按照特定数量的比特分割写入数据200而创建的一组数据段可以表示为“数据段d1至dn”。在图2的例子中,按4比特分割写入数据200。由特定数量的比特组成的比特串可能采用的一组比特模式可以表示为“比特模式P1至Pm”。在图2的例子中,因为比特的特定数量是“4”,所以由4比特构成的比特串可能呈现的比特模式是包括比特模式P1至P16的16种模式。在图2中,4比特的比特串以16进制表示。
[0057] (3)数据转换设备101将从比特模式P1至Pm中按照计数结果的降序选择的作为转换源的比特模式(转换前比特模式)与从比特模式P1至Pm中按照包含在比特模式内的“1”的数量的降序选择的作为转换目标的比特模式(转换后比特模式)相关联起来。
[0058] 例如,数据转换设备101选择比特模式P1至Pm的计数结果中的最大计数结果的比特模式作为转换源比特模式。数据转换设备101在比特模式P1至Pm中选择包含最大数量的“1”的比特模式作为转换目标比特模式。
[0059] 然后,数据转换设备101将选择的转换源比特模式与选择的转换目标比特模式相关联。数据转换设备101例如重复选择转换源比特模式,直到比特模式P1至Pm中没有计数结果为1或以上的比特模式未被选择。
[0060] 在图2的例子中,假定一种情况,即比特模式P15的计数结果是最大的,比特模式P10的计数结果是第二大的,比特模式P5的计数结果是第三大的。为了简化描述,假定一种情况,即在数据段d1至dn中没有出现比特模式P5、P10、P15之外的比特模式。
[0061] 在这种情况下,数据转换设备101首先选择比特模式P15作为转换源比特模式,并且选择比特模式P1作为转换目标比特模式。在比特模式P1至P15中,比特模式P1包括最大数量的“1”。数据转换设备101将选择的转换源比特模式P15与选择的转换目标比特模式P1相关联起来。
[0062] 然后,数据转换设备101选择比特模式P10作为转换源比特模式,并选择比特模式P2作为转换目标比特模式。在比特模式P1至P15中,比特模式P2包括第二大数量的“1”。数据转换设备101将选择的转换源比特模式P10与选择的转换目标比特模式P2相关联起来。
[0063] 然后,数据转换设备101选择比特模式P5作为转换源比特模式,并选择比特模式P3作为转换目标比特模式。在比特模式P1至P15中,比特模式P3包括第三大数量的“1”。数据转换设备101将选择的转换源比特模式P5与选择的转换目标比特模式P3相关联起来。
[0064] 以这种方式,能够将按照比特模式在数据段d1至dn中出现的频率的降序选择的转换源比特模式P15、P10、P5与按照包含在模式中的“1”的数量的降序选择的转换目标比特模式P1、P2和P3分别相关联起来。
[0065] (4)对于每一种转换源比特模式,数据转换设备101将数据段d1至dn中具有该转换源比特模式的数据段转换成为具有与该转换源比特模式相关联的转换目标比特模式的数据段。
[0066] 例如,在图2的例子中,每一个都具有转换源比特模式P15的数据段d1、d3和dn被转换成为每一个都具有与转换源比特模式P15相关联的转换目标比特模式P1的数据段d1’、d3’和dn’。具有转换源比特模式P5的数据段d2被转换成为具有与转换源比特模式P5相关联的转换目标比特模式P3的数据段d2’。
[0067] (5)数据转换设备101向存储介质110输出转换后的写入数据200,转换后的写入数据200是通过将具有转换源比特模式的数据段转换成为具有转换目标比特模式的数据段而创建的。这样,写入数据200被写入存储介质110,成为转换后的数据,该转换后的数据是通过将数据段d1至dn中具有在数据段d1至dn中的出现频率更大的比特模式的数据段转换成为具有更大数量的“1”的比特模式的数据段而创建的。
[0068] 如上所述,根据第二实施方式的数据转换设备,能够将在数据段d1至dn中具有更高出现频率的比特模式的数据段转换成为具有更大数量的“1”的比特模式的数据段。结果,写入数据200能够被写入存储介质110,成为已经将每一个数据段d1至dn转换成为其中具有较低比特错误发生率的“1”的数量变得大于转换前“1”的数量的数据段的写入数据。因此,能够降低存储介质110的出错率。
[0069] 下面描述一个例子,其中,第二实施方式的数据转换设备101应用于在存储装置300内包含的NAND控制器302,存储介质110等效于NAND闪存303。
[0070] 图3是存储装置300的硬件配置的例子的框图。在图3中,存储装置300包括分别通过总线310连接的CPU301、NAND控制器302、NAND闪存303、DRAM(Dynamic Access Random Memory,动态存取随机存储器)控制器304、DRAM305、磁盘控制器306、硬盘307和接口(I/F)308。
[0071] CPU301对存储装置300进行总体控制。NAND控制器302控制对于NAND闪存303的数据读写。NAND控制器302具有数据缓冲器309,在数据缓冲器309中暂时存储写入NAND闪存303或从NAND闪存303读取的数据。
[0072] NAND闪存303在NAND控制器302的控制下存储写入其中的数据。在NAND闪存303上,因为多个存储单元共享用于驱动存储单元的导体,因此以页的形式读数据和写数据。一页的大小是例如4K字节、8K字节等。数据缓冲器309用于例如将从CPU301传输的大约32至256字节的数据形成为分页的写入数据的等待过程。NAND闪存303存储例如操作系统(OS)、应用程序,等等。
[0073] DRAM控制器304控制对DRAM305的数据读写。DRAM305在DRAM控制器304的控制下存储写入DRAM305的数据。DRAM305例如用作CPU301的工作区。磁盘控制器306控制对硬盘307的数据读写。硬盘307在磁盘控制器306的控制下存储写入硬盘307的数据。
[0074] I/F308通过通信线路连接到网络,例如LAN(local area network,局域网)、WAN(wide area network,广域网)和因特网(Internet),并且通过这些网络连接到外部计算机。I/F308管理网络和存储装置300之间的内部接口,并且控制对外部计算机的数据输入和输出。例如,调制解调器(modem)、LAN适配器等可以用作I/F308。
[0075] 在下面的描述中,分页写入NAND闪存303内的写入数据可以表示为“数据D”。通过按k比特分割数据D而创建的一组数据可以表示为“单元U1至Un”,并且在单元U1至Un中的任一单元可以表示为“单元Ui”(i=1,2,...,n)。k比特的比特串能够呈现的一组比特模式可以表示为“比特模式P1至Pm”,并且在比特模式P1至Pm中的任一比特模式可以表k示为“比特模式Pj”(m=2,j=1,2,...,m)。
[0076] 下面描述NAND控制器302使用的计数规则400。计数规则400表示对单元U1至Un中的具有比特模式Pj的单元进行计数时遵守的规则。下面描述按4比特(k=4)分割写入NAND闪存303的数据D的情况下的计数规则400。计数规则400存储在例如NAND控制器302的内存(未示出)或NAND闪存303中。
[0077] 图4是计数规则400的一个例子的示意图。在图4中,计数规则400包括相互关联的计数器ID、比特模式和增加值。计数器ID是计数器C1至C16的标识符,其包含在例如NAND控制器302内。
[0078] 比特模式是表示在4比特(k=4)的比特串中包含的比特的组合的模式。在这个例子中,4比特比特模式被写成十六进制符号。增加值是分别增加到计数器C1至C16的值,并且可以任意地设置。
[0079] 例如,计数器C1是对单元U1至Un中包含的具有比特模式“0x0”的单元的数量进行计数的计数器。计数器C1的增加值是“2”。这意味着每次在单元U1至Un中出现一个具有比特模式“0x0”的单元时计数器C1的计数值增加“2”。
[0080] 例如,计数器C6是对单元U1至Un中包含的具有比特模式“0XC”的单元的数量进行计数的计数器。计数器C6的增加值是“1”。这意味着每次在单元U1至Un中出现一个具有比特模式“0XC”的单元时计数器C6的计数值增加“1”。
[0081] 在下面的描述中,出于方便的目的,分别对应于计数器C1至C16的4比特的比特模式可以表示为“比特模式P1至P16”。
[0082] 下面描述NAND控制器302使用的计数器表500。将针对按4比特分割写入NAND闪存303的数据D的情况描述计数器表500。计数器表500通过例如NAND控制器302的内存(未示出)或者NAND闪存303来实现。
[0083] 图5是计数器表500的内容的例子的示意图。在图5中,计数器表500是其中存储计数器C1至C16各自的计数器值的表。在这个例子中,计数器C1至C16的计数器值被写为十六进制符号。例如,计数器C1的计数器值存储为“0x264”。计数器C1至C16的各自的计数器值的初始状态为例如“0x000”。
[0084] 下面描述NAND控制器302使用的转换表600。转换表600是指示彼此相关联的转换源比特模式和转换目标比特模式的信息。例如,为写入NAND闪存303的每一个数据D制作转换表600。
[0085] 将针对按4比特(k=4)分割写入NAND闪存303的数据D的情况描述转换表600。转换表600通过例如NAND控制器302的内存(未示出)或者NAND闪存303实现。
[0086] 图6是转换表600的内容的例子的示意图。在图6中,转换表600包括条目号字段、转换源模式字段和转换目标模式字段。通过向每一个字段输入信息,条目1至16的每一个都存储为一个记录。
[0087] 条目号是在转换表600内的条目的编号。转换源模式是作为转换源的比特模式。初始状态下,转换源模式字段内没有输入值。转换目标模式是作为转换目标的比特模式。
在以条目号的升序排列的各个条目的转换目标模式字段内,按照包含在比特模式的4比特(k=4)比特串内的“1”的数量的降序来输入比特模式。
[0088] 例如,在条目1的转换源模式字段内,输入包含4个“1”的比特模式“0xF”。在条目2的转换源模式字段内,输入包含3个“1”的比特模式“0xE”。
[0089] 下面描述NAND控制器302的功能配置的例子。图7是NAND控制器302的功能配置的例子的框图。在图7中,NAND控制器302包括接收单元701、计数单元702、关联单元703、转换单元704、写单元705、读单元706、复原单元707和输出单元708。
[0090] 这些功能单元中的每一个通过例如硬件实现。例如,功能单元可以由例如AND、倒相器(Inverter)、OR和触发器(flip-flop,FF)等元件形成,AND是逻辑积电路,倒相器是逻辑非电路、OR是逻辑和电路,触发器是存电路。每一个功能单元可以通过例如描述语言(例如硬件描述语言verilog-HDL)进行功能定义,并且在逻辑核查所述功能描述后通过EPGA(Field Programmable Gate Array,现场可编程阵列)来实现。每一个功能单元的功能可以通过例如促使NAND控制器302的算法处理电路(未示出)执行在NAND控制器302的内存(未示出)和NAND闪存303内存储的程序来实现。
[0091] 接收单元701具有接收要写入NAND闪存303的写入数据的功能。例如,接收单元701接收从CPU301串行传输的数据D。接收到的数据D存储在例如图3的数据缓冲器309内。
[0092] 计数单元702具有对按k比特分割接收到的数据D而创建的单元U1至Un,对单元U1至Un中包含的具有比特模式Pj的单元的数量进行计数的功能。例如,通过与比特模式Pj对应的计数器Cj,计数单元702可以对单元U1至Un中包含的具有比特模式Pj的单元的数量进行计数。
[0093] 计数器Cj是对包含在单元U1至Un中的具有比特模式Pj的单元的数量进行计数的逻辑电路。例如,计数单元702选择与从CPU301串行传输的每一个单元Ui的比特模式Pj对应的计数器Cj,并且增加计数器Cj的计数器值。
[0094] 基于在数据缓存器309中存储的数据D,计数单元702可以对包含在单元U1至Un中的具有比特模式Pj的单元的数量进行计数(见图3)。例如,计数单元702按k比特将在数据缓存器309内存储的数据D分割成单元U1至Un。计数单元702然后从产生的单元U1至Un中顺序选择每一个单元Ui,并增加与选择的单元Ui的比特模式对应的计数器Cj的计数器值。
[0095] 以这种方式,对于k比特的比特串能够呈现的比特模式P1至Pm中的在单元U1至Un中出现的每一个比特模式Pj,可以对包含在单元U1至Un中的具有该比特模式Pj的单元的数量进行计数。对于每一个比特模式Pj,计数结果,即计数器Cj的计数器值,存储到例如图5的计数器表500中。
[0096] 关联单元703具有这样的功能:将作为转换源的比特模式(按照比特模式的计数结果的降序从比特模式P1至Pm中选择的比特模式)与作为转换目标的比特模式(按照包含在比特模式中的“1”的数量的降序从比特模式P1至Pm中选择的比特模式)相关联起来。在比特模式P1至Pm中,具有更大计数结果的比特模式是具有更高出现频率(即在单元U1至Un中更频繁地出现)的比特模式。
[0097] 在比特模式P1至Pm中,具有更大数量的“1”的比特模式是具有更低出错率的比特模式。换句话说,在比特模式P1至Pm中,关联单元703将在单元U1至Un中出现的频率更高的比特模式与具有更低出错率的比特模式关联起来。
[0098] 例如,关联单元703可以通过参考计数表500制作图6的转换表600。后续将根据图9A和9B描述制作关联表600的例子。
[0099] 转换单元74具有这样的功能:对于每一个转换源比特模式,将单元U1至Un中的具有该转换源比特模式的单元转换成为具有与该转换源比特模式相关联的转换目标比特模式的单元。例如,通过参考转换表600,转换单元704将具有给定转换源比特模式的单元转换成为具有与该给定转换源比特模式相关联的转换目标比特模式的单元。下面将根据图9A和9B描述单元转换的例子。
[0100] 在下面的描述中,通过将单元U1至Un中的具有转换源比特模式的单元转换成为具有转换目标比特模式的单元而得到的一组转换后的单元可以表示为“单元U1’至Un’”。
[0101] 写单元705具有向NAND闪存303内写入写入数据的功能。例如,写单元705可以将转换后的数据D与通过关联单元703制作的转换表600关联,并且将转换后的数据D和转换表600输出到NAND闪存303。转换后的数据D表示单元U1’至Un’。
[0102] 因此,彼此关联的转换后的数据D(单元U1’至Un’)和转换表600被写入NAND闪存303。下面描述写入NAND闪存303的转换后的数据D的页格式的例子。
[0103] 图8是页格式的例子的示意图。在图8中,数据区801和备用区820是NAND闪存303的以页的形式进行存储的存储区域。数据区810是转换后的数据D,即单元U1’至Un’,以页的形式写入的区域。数据区的大小是例如4KB、8KB等。
[0104] 备用区820是输出的与转换后的数据D关联的转换表600的写入区域。备用区820例如是数据D的大小的约5%。除了转换表600之外,例如,纠错码(FEC)等也可能写入备用区820。
[0105] 转换表600的数据大小依赖于k比特的比特串能够呈现的比特模式(2k)的数量。4
在图6的例子中,在转换表600中的条目的数量是“16(=2)”,其中,例如,如果一个条目的数据大小是0.5字节,则转换表600的数据大小是8字节。
[0106] 以这种方式,通过在NAND闪存303中准备数据区810和备用区820来进行按页存储,从输出单元708输出的转换后的数据D(单元U1’至Un’)和关联的转换表600可以存储在NAND闪存303中。
[0107] 返回参考图7进行描述。接收单元701具有接收读取写入NAND闪存303的写入数据的请求的功能。例如,接收单元701从CPU301接收读取写入到NAND闪存303的数据D的请求。
[0108] 读单元706具有从NAND闪存303中读取请求读取的写入数据的功能。例如,读单元706从NAND闪存303中读取转换后的数据D和关联表600。读取的转换后的数据D和转换表600被存储到例如数据缓冲器309。
[0109] 复原单元707具有将从NAND闪存303内读出的写入数据复原成为初始状态的功能。例如,复原单元707可以通过参考转换后的数据D与转换表600,将转换后的数据D复原成为初始状态。
[0110] 例如,复原单元707参考将单元U1’至Un’中的每一个单元Ui’的模式作为转换目标模式的转换表600,将每一个单元Ui’转换成为具有与转换目标模式对应的转换源模式的单元。后续将根据图9A和图9B说明单元到初始状态的再转换。
[0111] 输出单元708具有输出复原到初始状态的数据的功能。例如,输出单元708向请求读取数据D的CPU301输出已经被复原到初始状态的数据D。
[0112] 计数单元702可以为比特模式P1至Pm中的特定比特模式的计数结果设置权重。特定比特模式为例如其中“1”(比特错误发生率低于“0”)的数量不到k比特的一半的比特模式。
[0113] 例如,当按4比特(k=4)分割数据D时,其中“1”的数量不到4比特的一半的比特模式包括比特模式P1“0x0”、比特模式P2“0x1”、比特模式P3“0x2”、比特模式P4“0x4”、和比特模式P5“0x8”。
[0114] 例如,计数单元702可以参考图4的计数规则400而为计数器C1至C16的每一个设置增加值。在图4的例子中,计数器单元702为计数器C1至C5设置的增加值为“2”,为计数器C6至C16设置的增加值为“1”。
[0115] 结果,例如,当接收到具有比特模式“0x0”的单元时,计数器C1的计数器值增加“2”。例如,当接收到具有比特模式“0xc”的单元时,计数器C6的计数器值增加“1”。
[0116] 计数单元702可以通过大于1的系数α来倍增在计数器表500内存储的计数器C1至C16的计数器值中的计数器C1至C5的计数器值,来为特定比特模式的计数结果设置权重。系数α是例如2。
[0117] 通过这个过程,即使在单元U1至Un中具有特定比特模式的单元的出现频率近似等于具有其他比特模式的单元的出现频率,该特定比特模式可以与具有更大数量的“1”的比特模式相关联。
[0118] 根据上述描述,写单元705将转换后的数据D和转换表600关联起来并且向NAND闪存303输出。但是,配置不限于此。例如,写单元705可以将转换表600与数据D的标识符关联,并且将转换表600存储到NAND控制器302的存储器等。在这种情况下,例如,当读取转换后的数据D时,复原单元707参考与数据D的标识符关联并且存储在NAND控制器302的存储器等中的转换表600,将转换后的数据D恢复到初始状态。
[0119] NAND控制器302可以具有以通过按任意数量的比特分割数据D而创建的单元为单位来执行比特反转控制的功能。计数单元702可以计数在每一个单元Ui内包含的“0”的数量。当计数的“0”的数量超过k比特的一半时,转换单元704可以将单元Ui转换成为通过反转在单元Ui内包含的每一个比特的值而创建的Ui’。
[0120] 当计数的“0”的数量超过k比特的一半时,写单元705可以将转换后的数据Ui’与反转标记关联,该反转标记指示在单元Ui内包含的每一个比特的值都已经被反转,并且向NAND闪存303输出转换后的数据Ui’和反转标记。当计数的“0”的数量不超过k比特的一半时,写单元705可以将单元Ui与反转标记关联,该反转标记指示在单元Ui内包含的每一个比特的值都没有被反转,并且向NAND闪存303输出单元Ui和反转标记。
[0121] 当读数据D时,读单元706可以从NAND闪存303读单元Ui’或者单元Ui,以及反转标记。当反转标记指示每一个比特的值已反转时,复原单元707可以通过反转在单元Ui’内包含的每一个比特的值将读到的单元Ui’转换成为单元Ui。
[0122] 图9A和图9B是制作转换表600的示意图。下文将介绍关联单元703通过参考计数器表500制作转换表600的具体过程的例子(a)至(e)。
[0123] (a)关联单元703参考计数器表500,在计数器C1至C16中选择具有最大计数器值的计数器Cj。在图5的例子中,计数器C5的计数器值“0xFC1”是最大的。因此,关联单元703选择计数器C5。
[0124] (b)关联单元703将与选择的计数器C5对应的比特模式P5输入到转换表600内最小条目号的条目的转换源模式字段内。与选择的计数器C5对应的比特模式P5是比特模式“0x8”。因此,将比特模式“0x8”输入到具有条目号“1”的条目的转换源比特模式字段。
[0125] (c)关联单元703参考计数器表500,并且选择计数器C1至C16中尚未被选中并且具有最大计数器值(1或更大值)的计数器Cj。在图5的例子中,计数器C3的计数器值“0xB61”为第二大。因此,关联单元703选择计数器C3。
[0126] (d)关联单元703将与选择的计数器C3对应的比特模式P3输入到尚未输入转换源模式的具有最低条目号的条目的转换源模式字段。与计数器C3对应的比特模式P3是比特模式“0x2”。因此,将比特模式“0x2”输入到具有条目号“2”的条目的转换源模式字段。
[0127] (e)关联单元703重复过程(c)和(d),直到在计数器C1至C16中所有具有1或更大计数器值的计数器都被选择。
[0128] 结果,比特模式P1“0x0”被输入到具有条目号“3”的条目的转换源模式字段。比特模式P11“0x3”被输入到具有条目号“4”的条目的转换源模式字段。比特模式P2“0x1”被输入到具有条目号“5”的条目的转换源模式字段。比特模式P9“0x6”被输入到具有条目号“6”的条目的转换源模式字段。比特模式P16“0x7”被输入到具有条目号“7”的条目的转换源模式字段。
[0129] 以这种方式,比特模式P1至P16中在单元U1至Un中更加频繁地出现的转换源比特模式,可以与具有更大比例的“1”(比特错误发生率低于“0”)的转换目标比特模式关联起来。
[0130] 下面描述使用图9A和9B的转换表600转换写入NAND闪存303的数据D的每一个单元Ui的例子。转换单元704首先从数据缓冲器309读取在数据缓冲器309内存储的单元U1至Un中的单元Ui。
[0131] 转换单元704然后参考转换表600,识别转换源模式字段内输入了读取的单元Ui的比特模式的条目。假设,例如读取的单元Ui的比特模式是“0x8”。在这种情况下,转换单元704参考转换表600并识别出在转换源模式字段内显示读取的单元Ui的比特模式“0x8”的条目1。
[0132] 转换单元704然后参考转换表600,将读取的单元Ui的比特模式转换成为在识别出的条目中的转换目标模式字段内显示的比特模式。例如,转换单元704参考转换表600并将读取的单元Ui的比特模式转换成为在识别出的条目1中的转换目标模式字段内显示的比特模式“0xF”。
[0133] 转换单元704重复上述一系列过程直到不再剩下尚未从数据缓冲器309中读出的未读取单元。以这种方式,可以将单元U1至Un中的具有转换源比特模式的单元转换成为具有转换目标比特模式的数据,该具有转换目标比特模式的数据对应于具有转换源比特模式的单元。
[0134] 下面描述使用图6的转换表600将从NAND闪存303中读出的数据D的每一个单元Ui复原成为初始状态的例子。复原单元707首先从数据缓冲器309读取在数据缓冲器309内存储的单元U1’至Un’中的单元Ui’。
[0135] 复原单元707然后参考转换表600,识别转换目标模式字段内显示有读出的单元Ui’的比特模式的条目。假设,例如,读出的单元Ui’的比特模式是“0xF”。在这种情况下,复原单元707参考转换表600并且识别出转换目标模式字段内显示读出的单元Ui’的比特模式“0xF”的条目1。
[0136] 复原单元707然后参考转换表600,将读取的单元Ui’的比特模式转换成为在识别出的条目中的转换源模式字段内显示的比特模式。例如,复原单元707参考转换表600,将读取的单元Ui’的比特模式转换成为在识别出的条目1中的转换源模式字段内指示的比特模式“0x8”。
[0137] 复原单元重复上面的一系列过程,直到不再剩下尚未从数据缓冲器309中读出未读取单元。以这种方式,可以将单元U1’至Un’内包含的具有转换目标比特模式的单元转换成为具有转换源比特模式的数据,该具有转换源比特模式的数据与具有转换目标比特模式的单元对应。
[0138] 下面描述NAND控制器302的各种过程。首先将描述在接收到向NAND闪存303写入数据D的请求时NAND控制器302的写过程。
[0139] 图10和图11是NAND控制302的写过程的例子的流程图。在图10的流程图中,NAND控制器302首先确定是否已经从CPU301接收到写入数据D的写请求(步骤S1001)。NAND控制器302在接收到写入数据D的请求之前处于待机状态(步骤S1001:否)。
[0140] 当接收到写入数据D的请求时(步骤S1001:是),NAND控制器302确定是否已经接收到通过按k比特分割数据D而创建的单元Ui(步骤S1002)。
[0141] 如果已经接收到单元Ui(步骤S1002:是),NAND控制器302增加与接收到的单元Ui的比特模式对应的计数器Cj的计数器值(步骤S1003),并且返回步骤S1002。作为增量而增加到计数器Cj的计数器值的增加值是例如计数器Cj的增加值并且包含在计数规则400内。
[0142] 如果在步骤S1002没有接收到单元Ui(步骤S1002:否),NAND控制器302确定是否已经从CPU301接收到数据D的写入完成通知(步骤S1004)。如果还没有接收到数据D的写入完成通知(步骤S1004:否),NAND控制器302返回步骤S1002。
[0143] 如果已经接收到数据D的写入完成通知(步骤S1004:是),NAND控制器302参考计数器表500,选择尚未被选择的具有最高计数器值的计数器Cj(步骤S1005)。
[0144] NAND控制器302从转换表600选择尚未被选择的具有最小条目号的条目(步骤S1006)。NAND控制器302向选择的条目的转换源模式字段输入与选择的计数器Cj对应的比特模式Pj(步骤S1007),并且复位计数器Cj的计数器值(步骤S1008)。
[0145] NAND控制器302参考计数器表500并且确定是否存在尚未被选择的并且具有1或者大于1的计数器值的计数器(步骤S1009)。如果存在这样的计数器(步骤S1009,是),NAND控制器302返回步骤S1005。
[0146] 如果不存在这样的计数器(步骤S1009:否),NAND控制器302继续图11的步骤S1101。
[0147] 在图11的流程图中,NAND控制器302首先从数据缓冲器309中读取数据缓冲器309中存储的单元U1至Un中尚未读取的单元Ui(步骤S1101)。
[0148] NAND控制器302参考转换表600并且识别其中转换源模式字段显示为读取的单元Ui的比特模式的条目(步骤S1102)。NAND控制器302参考转换表600并且将读取到的单元Ui的比特模式转换成为识别出的条目中的转换目标模式字段中显示的比特模式(步骤S1103)。
[0149] NAND控制器302确定在单元U1至Un中是否存在尚未从数据缓冲器309中读出的未读出单元(步骤S1104)。如果存在未读出单元(步骤S1104:是),NAND控制器302返回步骤S1101。
[0150] 如果不存在未读出单元(步骤S1104:否),NAND控制器302将转换后的数据D(单元U1’至Un’)与转换表600关联,向NAND闪存303输出转换后的数据D和转换表600(步骤S1105),结束在流程图中描述的系列操作。
[0151] 通过这个过程,数据D可以被写入NAND闪存303,成为“1”(具有较低的比特错误发生率)的数量比转换前的“1”的数量大的转换后的数据D。另外,指示转换源比特模式和转换目标比特模式之间的关联的转换表600可以与转换后的数据D相关联并且写入NAND闪存303。
[0152] 图12是NAND控制器302的读取过程的例子的流程图。在图12的流程图中,NAND控制器302首先确定是否已经从CPU301接收到读数据D的请求(步骤S1201)。NAND控制器302直到接收到读数据D的请求之前处于待机状态(步骤S1201:否)。
[0153] 当接收到读数据D的请求时(步骤S1201:是),NAND控制器302从NAND闪存303读取转换表600和通过转换所请求读取的数据D而创建的转换后的数据D(单元U1’至Un’)(步骤S1202)。
[0154] NAND控制器302然后从数据缓冲器309读取在数据缓冲器309中存储的单元U1’至Un’中的未读出单元Ui’(步骤S1203)。
[0155] NAND控制器302参考转换表600,识别其中的转换目标模式字段显示为读取的单元Ui’的比特模式的条目(步骤S1204)。NAND控制器302参考转换表600,并将读取到的单元Ui’的比特模式转换成为识别出的条目中的转换源模式字段中显示的比特模式(步骤S1205)。
[0156] NAND控制器302确定在单元U1’至Un’中是否存在尚未从数据缓冲器309中读出的未读出单元(步骤S1206)。如果存在未读出单元(步骤S1206:是),NAND控制器302返回步骤S1203。
[0157] 如果不存在尚未读取的单元(步骤S1206:否),NAND控制器302向CPU301输出复原的数据D(单元U1至Un)(步骤S1207),并且结束在流程图中描述的系列操作。
[0158] 通过这个过程,当读取数据D时,转换后的数据D被复原为初始状态,并且复原到初始状态的数据D被输出到CPU301。
[0159] 如上所述,根据第二实施方式的NAND控制器302,对于比特模式P1至Pm中在单元U1至Un中出现的每一比特模式Pj,可以对单元U1至Un中包含的具有比特模式Pj的单元的数量进行计数。单元U1至Un是按k比特分割按页写入NAND闪存303的数据D而产生的一组数据段。比特模式P1至Pm是k比特的比特串可能呈现的一组比特模式。
[0160] 根据NAND控制器302,按照计数结果的降序从比特模式P1至Pm中选择的作为转换源比特模式的比特模式可以与按照比特模式中包含的“1”的数量的降序从比特模式P1至Pm中选择的作为转换目标比特模式的比特模式相关联。“1”是在NAND闪存303内存储的比特值“0”和“1”中的比特值“1”。比特值“1”具有的比特错误发生率低于比特值“0”的比特错误发生率。
[0161] 根据NAND控制器302,对于每一个转换源比特模式,在单元U1至Un中包含的具有转换源比特模式的数据可以分别转换成为具有与转换源比特模式相关联的相应转换目标比特模式的数据。结果,可以将单元U1至Un中具有出现频率较高的比特模式的单元转换成为比特模式具有更大数量的“1”的单元。因此,向NAND闪存303写入的数据D可以被转换成为其中“1”(具有较低比特错误发生率)的数量大于数据转换之前“1”的数量的数据。
[0162] 根据NAND控制器302,可以制作转换表600,其显示转换源比特模式和转换目标比特模式之间的关联性。根据NAND控制器302,转换后的数据D(单元U1’至Un’)可以与转换表600关联,并且写入NAND闪存303。
[0163] 结果,数据D可以写入NAND闪存303成为“1”(具有较低比特错误发生率)的数量大于数据转换前“1”的数量的转换后的数据D,从而可以降低NAND闪存303的出错率。即使在数据D内包含的“0”和“1”的比例近似相等,通过根据比特模式Pj在单元U1至Un内的出现频率来转换每一个单元Ui,可以有效地增加在数据D内包含的“1”的数量。
[0164] 转换表600的数据大小取决于k比特的比特串可能呈现的比特模式(2k)的数量。4
例如,当按4比特分割数据D时,在转换表600内的条目的数量是“16(=2)”,在这种情况下,如果一个条目的数据大小是0.5字节,则转换表600的数据大小是8个字节。
[0165] 例如,当按页存储的数据D的数据大小是4k字节时,数据D的冗余部分的比例是大约0.2%(8字节/4096字节)。以这种方式,根据NAND控制器302,相较于例如通过向每一个数据单元添加反转标记来执行比特反转控制的情况,可以降低数据D的冗余部分的比例。
[0166] 根据NAND控制器302,当从NAND闪存303读出转换后的数据D时,通过参考与转换后的数据D相关联地存储的转换表600,可以将转换后的数据D复原到初始状态。
[0167] 根据NAND控制器302,可以为比特模式P1至Pm中的特定比特模式的计数结果设置权重。特定比特模式是例如其中“1”(具有的比特错误发生率低于“0”的比特错误发生率)的数量小于k比特的一半的比特模式。
[0168] 结果,即使特定比特模式的出现频率近似等于其他比特模式的出现频率,可以将特定比特模式与其中“1”的数量更大的比特模式相关联。因此,可以有效地增加在数据D内包含的“1”的数量。
[0169] 因而,根据第二实施方式的NAND控制器302,可以减少写入NAND闪存303的数据D的出错率。根据NAND控制器302,降低数据D的出错率防止了构成用于ECC的纠错码的比特数量的增加,从而防止了NAND控制器302的电路规模的增加和NAND闪存303的存储器容量的增加。
[0170] 根据NAND控制器302,当数据D被写入时在数据D内包含的“1”的比例增加,从而抑制了为了删除数据D而将电荷从浮栅抽出时的功率消耗,并且缩短了为删除数据而消耗的时间。根据NAND控制器302,缩短用于删除数据D的时间改善了NAND闪存303的存取性能,并且延长了NAND闪存303的寿命。
[0171] 在本实施方式中描述的数据转换方法可以通过在计算机例如个人电脑和工作站上执行准备好的程序来实现。该程序存储在计算机可读存储介质上,例如硬盘、软磁盘、CD-ROM、MO(磁光盘)和DVD,从计算机可读介质中读出并且通过计算机执行。该程序可以通过网络例如因特网分发。
[0172] 在本实施方式内描述的数据转换设备101可以通过ASIC(Application Specific Integrated Circuit,专用集成电路)例如标准单元ASIC或者结构化ASIC或者PLD(Programmable Logic Device,可编程逻辑装置)例如FPGA(Field-Programmable Gate Array,现场可编程门阵列)来实现。具体地,例如,NAND控制器301的功能单元以HDL(Hardware Description Language,硬件描述语言)限定,HDL被逻辑合成并应用到ASIC、PLD等,从而使得能够制造出NAND控制器301。
[0173] 本文中提供的所有例子和附条件的措辞致于帮助读者理解本发明和发明人提供的超出现有技术的概念的教学目的,不应当被解释为对这些具体列出的例子和条件的限制,这些例子在说明书中的组织也与展现本发明的优势和劣势无关。虽然已经详细描述了本发明的一个或多个实施方式,但是应当理解,可以对其做出各种变化、替换和改变而不脱离本发明的精神和范围。
QQ群二维码
意见反馈