存储装置的制作方法
相关申请的交叉参考本申请要求2003年4月10日提交的日本专利申请JP2003-106360的优先权,其内容在这里作为参考引入。
背景技术:
本发明涉及非易失存储装置和有效地用于,例如,闪存卡、兼容硬盘的闪盘等的技术。
在典型为闪存器等可电重写非易失存储器中存储的信息的重写涉及存储单元中的电强度,存储单元的性能特性会随着重写频率的增加而下降。如果重写集中在局部,则仅有某些数据块的特性显著下降。存在当重写的频率达到一定的程度时,通过自动重新部署数据和地址到其它区的技术,以解决该问题,并且根据允许重写的频率来看,延长了非易失存储器的使用寿命。例如,当重写的频率超过规定的程度时,改变在数据块中地址的分配(见专利参考1)。还存在当ECC错误的数量超过规定值时,改变在数据块中地址的分配(见专利参考2)的技术。日本待审专利申请No.Hei04(1992)-507320(USP5,172,338)[专利参考2]日本待审专利申请No.Hei02(1990)-118997(USP5,043,940)发明内容然而,通过上述常规技术中的任一个,在不常重写的存储区中的重写频率不增加,所以这种存储区不常被其它区代替。在没有发生代替的存储区中,受字线和位线上的累积干扰的影响,最后阈值电压的变化变得太大以至于不能忽略,并且存储的信息可能发生不希望的反转(被混淆)。
本发明人在还未公开的在先申请(美国申请No.10/667,663)中提出了即使在擦除和写入处理中切断电源所存储的信息也不会出现意外丢失的存储卡。因此,为存储卡中的存储管理准备其中与存储区匹配的空信息标志的擦除表,并且当写入存储卡时,参考在擦除表中的空信息标志,确定要在哪个存储区中写入重写数据,并且将数据从预重写存储区写入不同的存储区,从而即使在重写后,允许在重写前的数据保留在原始存储区中。即使在擦除等处理中意外断电,也可以通过使用在原始存储区中的保留数据来恢复数据。
在这种写入表系统中,通过将数据写入新的部分可以保留过去的数据,不擦除过去的数据并且只更新擦除表。然而,因为由写入新使用的空区是未使用的存储区,所以没有未发生重写的存储区被未使用的存储区代替。在这种情况下,如上述例子所述,在没有发生代替的存储区中,由于受字线和位线上的累积干扰,数据也可能被混淆。
本发明的一个目的是提供一种存储装置,能够预先消除在没有出现重写的存储区中的在干扰的累积冲击下的数据混淆的风险。
通过随后结合附图和在说明书中的介绍,本发明的上述和其它目的以及新颖特性将变得更加明显。
下面将简要介绍在本申请中公开的本发明的典型方案。本发明的存储装置包括可擦除和可写的非易失存储器以及控制电路,其中控制电路能以规定的时间安排进行存储区的移位处理。通过将在较少重写的第一存储区中存储的数据写入未使用的第二存储区,并使写入数据完成的第二存储区作为已使用的区,代替第一存储区,从而完成移位处理。如上所述,因为移位处理是要用其它存储区代替不常重写的存储区,所以可能防止在没有发生重写的存储区中由于干扰的累积冲击引起的数据混淆的风险。
关于移位源的选择,其冲存储区保存重写频率数据,控制电路可以参考从存储区的各组得到的重写频率数据,并为第一存储区搜索它们。
关于移位目标的选择,其中在各擦除单元中提供非易失存储器,其存储区具有用于标识该区域是否未使用的识别标志的储存区,控制电路可以参考识别标志以搜索未使用的第二存储区。
在选择移位目标的另一种形式中,存储区保存重写频率数据,控制电路可以参考重写频率数据以搜索重写比第一存储区更频繁的存储区,并将其作为第二存储区。
关于转移到移位处理的触发,下面的形式可用。首先,响应特定的命令进行移位处理。第二,响应特定命令的处理的完成进行移位处理。在移位处理开始之后又有其它指令的情况下,放弃正在进行的移位处理,将优先权交给其它命令的处理。这是要防止高优先级的处理,例如读,被延迟。根据本发明的另一个方案的存储装置包括可擦除和可写的非易失存储器以及控制电路,其中控制电路能以规定的时间安排进行存储区的移位处理。通过用指定的未使用的存储区代替重写频率少于指定的未使用的存储区的指定的已使用的存储区,来完成移位处理。因为移位处理是要用未使用的存储区代替不常重写的已使用的存储区,所以可能防止在没有发生重写的存储区中由于干扰的累积冲击引起的数据混淆的风险。
本发明的另一个方案中的存储装置中的移位处理通过用重写频率少于指定的存储区的另一个存储区代替指定的存储区,并在指定的存储区移位之后正在使用时将另一个存储区从使用状态转换为未使用状态来完成。因为该移位处理也是要用另一个存储区代替不常重写的存储区,所以可能防止在没有发生重写的存储区中由于干扰的累积冲击引起的数据混淆的风险。根据本发明的另一个方案的存储装置包括可擦除和可写的非易失存储器以及控制电路。非易失存储器具有未使用区识别表,用来存储表示存储区是否是未使用区的识别标志。在写入处理中,控制电路使由识别标志表示的未使用的存储区中的一个作为数据写入的目标,并且能够在规定的时间安排下对由识别标志表示的已使用的存储区进行移位处理。通过将存储在相对不常重写的第一存储区中的数据写入未使用的第二存储区,并使写入完成的第二存储区作为已使用的存储区代替第一存储区来完成移位处理。
因为在上述写入处理中的任何写入通过使由识别标志表示的未使用存储区之一作为数据写入的目的地,基本上导致存储区的移位,这有助于在一定程度上平均写入存储区的频率。此外,在重写数据和相似情况中,因为与写入源不同的存储区作为新的写入区,所以即使在写入处理中出现意外的断电或相似情况,在断电刚结束之后,原始数据将保留在写入源存储区中,因此,可以恢复丢失的数据。
因为该移位处理是要用另一个存储区代替不经常重写的储区,所以可能防止在没有发生重写的存储区中由于干扰的累积冲击引起的数据混淆的风险。
在实现本发明的特定形式中,非易失存储器具有已使用地址登记表,用于登记与逻辑地址相匹配的要使用的存储区的物理地址。然后,当将识别标志改为未使用区时,控制电路使分配给识别标志的存储区与物理地址之间的匹配无效,当识别标志改为使用区时,控制电路使分配给识别标志的存储区与指定的物理地址相匹配。
在实现本发明的另一个特定形式中,当用另一个存储区代替一个存储区,将其变为已使用区时,在使逻辑地址与在非易失存储器上的已使用地址登记表反映属于该改变的物理地址之间的匹配之前,控制电路进行处理,以使要从未使用区变为已使用区的一个存储区的识别标志在非易失存储器上的未使用区识别表中反映出来,并且在已使用地址登记表中反映出匹配之后,控制电路进行处理,以使要从已使用区变为未使用区的另一个存储区的识别标志在非易失存储器上的未使用区识别表中反映出来。这使得确保在数据恢复时搜索到原始存储区成为可能。
图1是属于本发明的一个方案的闪存卡的框图;图2示出了闪存器中的储存区的例子;图3示出了已使用地址登记表部分的一部分的细节的例子,例如在块地址中排列的已使用地址登记表块;图4示出了未使用区识别表部分的一部分的细节,例如在块地址中排列的未使用区识别表块;图5是通过利用未使用区识别表和已使用地址登记表写入存储卡的操作的处理的流程图;图6示出了在图5中所示的处理的主数据流等;图7示出了在图5中所示的处理的主数据流等;图8是移位处理的例子的流程图;图9是搜索不经常发生写入的块地址的过程的例子的流程图;图10示意性地示出了通过参考图5描述的移位处理数据是如何转移的,以及参考图8所描述的写入处理导致的数据流;图11是移位处理作为加电操作的一部分进行的流程图;图12是当根据专用命令进行移位时操作的时序图;图13是根据写入闪存器的总数的移位处理的流程图;图14是根据写入闪存器的总数的移位处理的另一部分的流程图;图15是根据写入闪存器的总数的移位处理的又一部分的流程图;以及图16是利用已使用地址登记表部分从存储卡中读出的流程图。
具体实施例方式
<存储卡>
图1示出了属于本发明的存储装置的实例,闪存卡。闪存卡1由可擦除和可写入的非易失存储器,例如闪存器2、由动态随机访问存储器(DRAM)或静态随机访问存储器(SRAM)构成的缓冲存储器4以及进行存储器控制和外部接口控制的卡控制器(控制电路)5构成,并且安装在一个封装基板上。
缓冲存储器4和闪存器2在卡控制器5的访问控制之下。虽然没有特别示出,但是闪存器2具有存储器阵列ARY,其中大量电可擦除和可重写的非易失存储器单元晶体管以矩阵形式排列。虽然没有特别示出,但是每个存储单元晶体管(有时也称作闪存单元)由在半导体衬底上方或阱中形成的源极和漏极、在有隧道氧化膜的位于源极和漏极之间的沟道区中形成的浮栅以及覆盖在浮栅上方具有层间绝缘膜的控制栅极构成。控制栅极连接到匹配字线,漏极连接到匹配位线,源极连接到源极线。当电子注入到浮栅中时,存储单元晶体管的阈值电压上升,当从浮栅中抽取电子时,阈值电压下降。存储单元晶体管根据相对于用来读出数据的字线电压(加到控制栅极的电压)的阈值电压的电平存储信息。在本说明书的上下文中虽然没有特别限定这些表述方法,但是存储单元晶体管的阈值电压为低的状态称作擦除状态,为高的状态称作写入状态。
参考图1,卡控制器5相对于主计算机(主装置)6进行,例如,符合IDE测盘接口规范和相类似情况的外部接口控制。卡控制器5在收到主计算机6的指令时能够访问闪存器2时具有访问控制功能。该访问控制功能是兼容硬盘的控制功能。例如,当主计算机6管理一组扇区数据作为文件数据时,卡控制器5通过将作为逻辑地址的扇区地址匹配物理存储器地址进行对闪存器2的访问控制。如图1所示,卡控制器5由主接口电路10、作为计算控制装置的微处理器(MPU)11、闪存控制器12以及缓冲控制器13构成。闪存控制器12具有ECC(未示出)。
MPU 11在其它元件中具有中央处理单元(CPU)15、程序存储器(PGM)16以及工作RAM(WRAM)17,并对整个卡控制器5进行控制。程序存储器16为CPU15存储操作程序等。
主接口电路10是用于主计算机6接口的电路,例如个人计算机或工作站的符合包括AT连接(ATA)、集成器件电子(IDE)、小型计算机系统接口(SCSI)、多媒体卡(MMC注册商标)以及个人计算机存储卡国际协会(PCMCIA)等指定协议等。主接口操作由MPU11控制。
缓冲控制器13根据来自MPU11的访问指令控制缓冲存储器4的存储器访问操作。缓冲存储器4临时保存进入主接口10的数据或者从主接口10提供的数据。缓冲存储器4还临时保存从闪存器2读出的数据和要写入闪存器2的数据。
闪存控制器12根据来自MPU11的访问指令控制从闪存器2读出数据、从闪存器2擦除数据以及向闪存器2写入数据的操作。当进行读操作时,闪存控制器12提供包括读命令码和读地址信息的读控制信息;当进行写操作时,闪存控制器12提供包括写命令码和写地址信息的写控制信息;当进行擦除操作时,闪存控制器12提供包括擦除命令码的擦除控制信息。ECC电路(未示出)根据来自MPU11的指令产生纠错码,并将它们加到要写入闪储器2的数据中。它还对从闪存器2读出的数据进行错误检查,并使用加到读出数据中的纠错码进行纠正,从而在其错误纠正能力的范围内对出现的错误进行纠正。
闪存器2在其存储器阵列ARY部分中具有未使用区识别表部分20和已使用地址登记表部分21。
图2示出了闪存器2中的储存区的例子。闪存器2的储存区(存储器阵列ARY)可以大致分为未使用区识别表部分20、已使用地址登记表部分21、用户区22以及需要更新未使用区识别表部分和已使用地址登记表部分的空块区23。为每个区中的每个存储器块(存储器部分)分配块地址作为物理地址。这些存储器块有时也简称为块。虽然没有限制,但是每个块具有大约2千字节(KB)的容量,并且根据一个字线或一种类型的字线选择信号选择在每个块中包含的每一个存储单元阵列,并构成擦除处理或写入处理的单位。因此,在该结构中,擦除处理和写入处理所需的高电压依次加到每一个字线。这里一个块具有大于作为在例如HDD等储存器中的重写单位的512字节(B)的部分(储存部分)容量的容量。例如,一个这种块具有四个储存部分、ECC码和管理区的组合的储存容量。
未使用区识别表部分20和已使用地址登记表部分21的每一个分配给多个单块,虽然分割的方式并不限于此,并且未使用区识别表部分和已使用地址登记表部分的每一个由块中的复用方式存储。例如,未使用区识别表部分20放在块地址0x0000到0x000F,由此分割每个块,每个块给定地址0x0000或相似情况。为已使用地址登记表部分21分配多个单块,安排在块地址0x0010到0x010F,由此分割每个块,每个块给定地址0x0010或相似情况。
<已使用地址登记表>
图3示出了已使用地址登记表部分21的一部分的细节的例子,例如安排在块地址BA55的已使用地址登记表块。由ATT表示的是通过分割得到的一个已使用地址登记表,并且在图中与标记“擦除”的区形成四重复用。每次复用的四个已使用地址登记表中的一个依次有效。分割的已使用地址登记表ATT为对应于四个存储部分的逻辑地址的每一个保留与对应于存储器部分,即,一个块地址,的物理地址相匹配的信息。例如,从已使用地址登记表ATT的表头连续向前,存储存储器块的物理地址与逻辑地址匹配的信息,以便块地址BAm与逻辑地址LBA0通过3匹配,块地址BAn与逻辑地址LBA4通过7匹配。在已使用地址登记表ATT中的逻辑地址信息例如以升序方式排列。也可以以降序方式排列。在图3中,例如块地址BAm、BAn等存储器块地址表示与四个连续的逻辑地址部分匹配的存储器块的地址,并且例如为15位。这里,一位写保护位WP加到每个存储器块地址上。来自主计算机6的访问闪存卡1的指令指定要访问部分的地址(称作逻辑部分地址或逻辑地址),并且用该逻辑部分地址作为搜索关键字,通过使用已使用地址登记表搜索匹配的块地址。
<未使用区识别表>
图4示出了未使用区识别表部分20的一部分的细节,例如安排在块地址BA0的未使用区识别表块。由ET表示的是通过分割得到的一个未使用区识别表,并且在图中与标记“擦除”的区形成四重复用。每次复用的四个未使用区识别表ET中的一个依次有效。在分割的未使用区识别表ET中,未使用状态识别标志FLG与每个存储区的物理地址,即,每个块地址,相匹配。简而言之,从未使用区识别表ET的表头一位一位的连续向前,每个区用标志FLG位填充,首先是引导块(块地址BA0)的未使用状态识别标志FLG,然后是下一个块(块地址BA1)的未使用状态识别标志FLG等。每个未使用状态识别标志FLG用一位表示对应于擦除单位的存储器块是否是未使用区“1”表示未使用的存储器块,“0”表示已使用的存储器块。在未使用区识别表中的未使用状态识别标志FLG可以是块地址(物理地址)的升序或者降序。
下面介绍使一次一个四重表(未使用区识别表ET和已使用地址登记表ATT)顺续有效的控制方法。用分配给每个块的管理区的更新标志区分复用有效表。每个更新标志的存储器块有四位与分割的表匹配,当匹配分割的表有效时,给定值“1”,并且保持该状态直到擦除。连续选择在存储器块中的复用分割表。在选择的方向中在起始点搜索构成更新标志值“1”和“0”之间的边界的位置,使分割表匹配关于“1”的更新标志有效。只有当要更新表的内容时,才做任何有效的分割表的重新定位。在一个存储器块的更新标志的全部四位都是“1”的情况下,通过重写在空块区23中的块,新准备相关表,并且将原始表重新用作空块来更新表。该处理用来减少在重写表上重复使用同一个非易失存储单元的频率。
<写操作>
图5示出了通过使用未使用区识别表20和已使用地址登记表21写入存储卡的行为的处理的流程图。图6和图7示出了在图5中所示的处理的主数据流等。
从主计算机6向缓冲存储器4提供例如512字节的写入数据(S1)。当给出关于写数据的写访问指令时,卡控制器5从闪存器2将要写入的与逻辑地址LBA(逻辑部分地址)匹配的块地址中储存的已使用地址登记表ATT存储到缓冲存储器4的已使用地址登记表缓冲器(S2)。因此,因为用于索引已使用地址登记表部分21的逻辑地址信息以升序排列,所以按照逻辑地址LBA选择需要的安排已使用地址登记表的存储器块。首先读出选择的存储器块的管理区,从复用状态定位有效的已使用地址登记表ATT,并且在此基础上读出已使用地址登记表ATT。通过搜索已读出的已使用地址登记表ATT,获得当前匹配用于写入的逻辑地址(也称作原始块地址)的块地址PA4。
卡控制器5从存储在原始块地址PA4中的数据中读出不重写的那些数据,将它们存储在缓冲存储器4的数据缓冲区中,并将它们与来自主计算机6的写入数据组合(S3)。例如,如果写入数据为一个存储部分的数据SDm,则从原始块地址OBA中读出三个存储部分的数据Sd 、SDj和SDk,总共四个存储部分的数据用作重写数据。
然后,卡控制器5将与原始块地址PA4匹配的未使用区识别表ET(下文中称作原始未使用区识别表)读入缓冲存储器4的原始未使用区识别表缓冲器(S4)。读出的未使用区识别表是在单个未使用区识别表块中复用的四个未使用区识别表的有效表之一。这里,如上所述,每个单独排列的未使用区识别表与其它表复用,并且参考在管理区中的更新标志的状态读出复用的多个未使用区识别表中的一个。而且,微处理器11进行控制,以在数据重写之后(新的未使用区识别表)将要用的未使用区识别表存储到缓冲存储器4中(S4)。例如,微处理器11执行在程序ROM16中的伪随机数发生程序,并找出用于获得作为写入数据的写入目的(新的块地址)的块地址的搜索起始块地址。卡控制器5将与这样得到的搜索起始块地址匹配的新的未使用区识别表存入缓冲存储器4。还是在这种情况下,如上述情况,在未使用区识别表块中复用的有效的未使用区识别表中的一个存入缓冲存储器4。
卡控制器5搜索新的未使用区识别表,存入缓冲存储器4,作为可用的新的块地址(未使用的地址)PA3(S5)。因此,它从通过执行新的未使用区识别表的伪随机数发生程序得到的搜索起始块地址,读入缓冲存储器4,开始以升序或降序检查未使用状态识别标志FLG,并将与标志FLG为“1”的第一个位置匹配的块地址作为新的块地址PA3。对匹配块地址PA3的存储器块进行擦除处理(S6)。
在已经过擦除处理的未使用地址PA3匹配的存储器块上进行用在上述步骤S3中产生的重写数据的写入处理(S7)。确定写入处理是否成功。如果不成功,则在读入缓冲存储器4中的新的未使用区识别表上与产生写入错误的新的块地址匹配的标志FLG改为状态“0”,然后,返回到上述步骤S5,为另一个可用块地址搜索新的未使用区识别表,并从中间重新进行处理。
如果确定在步骤S7进行的写入处理成功,则首先在读入缓冲存储器4中的新的未使用区识别表上重新设置与新的块地址PA3匹配的未使用状态识别标志FLG到已使用状态,并且在重新设置的新的未使用区识别表中的数据作为重写数据写入在闪存器2上的新的未使用区识别表中的存储器块中(S8)。从而新的块地址PA3成为已使用的地址。接着,在读入缓冲存储器4中的已使用地址登记表ATT上,与当前访问的逻辑地址匹配的块地址从原始块地址PA4变为新的块地址PA3,并且在改变的已使用地址登记表中的数据作为重写数据写入到在闪存器2上的已使用地址登记表中的存储器块中(S9)。从而原始块地址PA4的记录从已使用地址登记表的入口收回,并且登记新的块地址PA3作为记录入口。最后,在读入到缓冲存储器4中的原始未使用区识别表上重新设置与原始块地址匹配的未使用状态识别标志FLG为未使用状态,并且在改变的原始未使用区识别表中的数据作为重写数据写入在闪存器2上的原始未使用区识别表中的存储器块中(S10)。从而原始块地址PA4从已使用地址变为未使用地址。
在这里的图6中,原始块地址的块数据包括部分数据SDh、SDi、SDj和SDk,并且在新的块地址PA3,他们中的部分数据SDh被来自主计算机6的写入访问重写为部分数据SDm。
由图6和图7可知,即使重写数据SDm、Sdi、SDj和S Dk在步骤S7写入到新的块地址PA3的存储器块中,预重写数据SDh、SDi、SDj和SDk保留在原始块地址PA4的存储器块中。在闪存器2上的原始未使用区识别表和已使用地址登记表仍然保留。因此,即使在步骤S7的写入完成之前,从卡槽中拔出闪存卡1或者切断操作电源,过去的数据仍然保留。这是因为写入重写数据的存储器块与要重写的原始数据的存储块不是同一个。而且,在步骤S7将重写数据重写之后,首先新的块地址PA3已经重新设置为已使用状态的新的未使用区识别表被写回到闪存器2中(S8)。在步骤S8的处理的完成保证能防止写入到新的块地址PA3的数据的意外擦除。这是因为将与表示已使用状态的标志FLG匹配的存储块作为非可擦除块处理。然后,原始块地址PA4已经改为新的块地址PA3的已使用地址登记表被写回到闪存器2(S9)。这使得新的块地址可以访问。最后写回重新设置的原始未使用区识别表(S10),该步骤的完成使得在原始块地址PA4的存储块数据符合擦除条件,并且不再需要。即使电源切断中断了步骤S10的处理,仅仅在原始块地址的存储块不能重新使用,而访问必需的数据不会出现任何问题。
由上述可知,上述步骤S8、S9和S10的处理的顺序对于完全地保证防止由于断电引起的数据的意外擦除并且促进所存储的信息管理的逻辑一致性是至关重要的。因此,在通过禁止它们的擦除(S8)保护新的块地址的数据的第一个处理之后,进行处理以使在原始块地址中保留的数据难以擦除(S9),随后进行允许擦除在原始块地址中的数据保留的数据的处理(S10)。例如,如果S8和S10的处理顺序相反并且S10的处理更早完成,则新的块地址和原始块地址都符合擦除条件,并且如果在这种状态下中断电源,则两个地址仍然符合擦除条件,存在允许需要的数据被意外擦除的风险。
<移位处理>
卡控制器5以规定的时间安排进行处理,使存储块移位。移位处理的含义是将在数据相对不常重写的存储块中存储的数据写入未使用的存储块,并使已经完成写入数据的存储块作为已使用的区域代替数据相对不常重写的原始存储块。
图8是移位处理的例子的流程图。这里,假设移位源的块地址为PA1,移位目的的块地址为PA2。在图8的介绍中,将参考图6和图7。在图8所示的移位处理响应特殊的命令开始或者指定的命令结束,例如写命令。
当移位处理开始时,例如,微处理器11首先选择已使用地址登记表ATT中之一,并将其从闪存器2存储到缓冲存储器4的已使用地址登记表缓冲器中(S20)。对表的选择没有限制,可以是随机选择,之前刚用过的表ATT,在卡控制器5中根据指定的算法选择或者匹配由主计算机6指定的逻辑地址。然后,将与在已使用地址登记表中包含的作为入口有关的块地址读入缓冲存储器4,在缓冲存储器4中至少存入未使用地址识别表(原始未使用地址识别表)和未使用地址识别表(新的未使用地址识别表)(S21)。可以选择任意一个未使用地址识别表作为新的未使用地址识别表。接着,例如,微处理器11执行在程序ROM16中的伪随机数发生程序,为作为转移目的的未使用块地址搜索新的未使用地址识别表,并用它作为移位目的块地址PA2(S22)。
在该阶段,确定是否有来自主计算机6的访问命令的任何新的动作请求(S23)。如果有,则执行由主计算机6请求的动作(S24)。如果没有,则移位处理将继续。因此,在步骤S20中读入已使用地址登记表,用来找到作为移位源块地址PA1的不经常重写的块地址(S25)。例如,通过使每个存储块的管理区保存重写频率数据可以搜索不经常重写的块地址,参考从一组存储块得到的重写频率数据,并搜索重写频率足够低的存储块。
然后,微处理器11读出由移位源块地址PA1的存储块保存的数据,将数据保存到缓冲存储器4中,擦除在移位目的块地址PA2的存储块中的数据,并在其中写入在缓冲器4中保存的数据(S26)。
之后,进行类似于步骤S8、S9和S10的写入处理步骤S27、S28和S29。由此,在读入缓冲存储器4中的新的未使用区识别表上,与移位目的块地址PA2匹配的未使用状态识别标志FLG重新设置为已使用状态,在重新设置的新的未使用区识别表中的数据作为重写数据写入在闪存器2上的新的未使用区识别表的存储块中,从而移位目的块地址PA2成为已使用地址(S27)。然后,在读入缓冲存储器4的已使用地址登记表ATT上,在移位源块地址PA1与逻辑地址之间的当前匹配变为移位目的块地址PA2与其逻辑地址之间的匹配,在改变的已使用地址登记表中的数据作为重写数据写入在闪存器2上的已使用地址登记表的存储块中(S28)。从已使用地址登记表中的记录入口收回移位源块地址PA1,并且登记代替的移位目的块地址PA2作为记录入口。最后,在读入缓冲存储器4的原始未使用区识别表上,与移位源块地址PA1匹配的未使用状态识别标志FLG重新设置为未使用状态,在重新设置的原始未使用区识别表中的数据作为重写数据写入在闪存器2上的原始未使用区识别表的存储块中(S29)。从而移位源块地址PA1从已使用地址变为未使用地址。以上步骤S27、S28和S29的处理顺序与写入处理的步骤S8、S9和S10的处理顺序具有相同的重要性。
图9是搜索不经常发生写入的块地址的过程的例子。在搜索频率计数器i中设置初始值1(S30),通过使用伪随机数发生程序从在步骤S20中读出的已使用地址登记表中提取一个块地址,在地址寄存器A中设置该块地址,写入计数器W的数量设置为写入存储块的块地址的数量,作为写入数量的初始值(S31)。然后,在i的计数超过搜索的最大值m之前,重复以下操作(S32)。由此,通过使用由A的初始地址和+1的增量预设置(S33)的地址计数器A的计数Ai从存储块获得重写数据Wi的数量,并确定是否满足W>Wi(S34)。如果满足W>Wi,则Wi将代替W(S35),Ai将代替A(S36),i+1将代替i(S37)。如果不满足W>Wi,则i+1将代替i(S37)。当满足m<i而结束处理时,在搜索范围中重写的最小值保留在W中,A保留其块地址。
图10示意性地示出了通过参考图5介绍的写处理数据是如何转移的,以及由图8所介绍的移位处理引起的数据流。在初始状态中,例如,块地址PA1与逻辑地址LAi匹配,块地址PA4与逻辑地址LAj匹配,块地址PA2和PA3保留未用。在逻辑地址LAj写入数据中,例如,在块地址PA4的数据Dn+Dm(512字节×3)被写入未使用的块地址PA3的存储块中,块地址PA3与逻辑地址LAj匹配,原始块地址PA4的存储块置为未使用状态。因此,在通常的写入处理中,改变存储块的分配以平均对存储块的重写数,但是没有从来没有发生重写的已使用的存储块被像他们这样的存储块代替。移位处理是针对这种没有发生重写的已使用的存储块的,即,不常重写的存储块。在图10中,PA1表示不常重写的块地址。在该块地址PA1中的数据转移到另一个块地址PA2,分配到PA1的逻辑地址LAi转移到另一个块地址PA2,分配到PA1的逻辑地址LAi与作为转移目的的块地址PA2匹配,PA1置为未使用状态。这允许即使在没有发生对被主计算机6的写访问指定的地址写入的存储块中的数据进行存储块移位。因此,有可能防止由于没有出现重写的存储块受到累积的字线干扰和位线干扰引起的数据混淆。为了平均存储块的重写数量,不常重写的存储块转移到具有平均重写频率的地址,而不是转移到频繁重写的存储块。如果转移到频繁重写的存储块,则可以预见不再发生重写,并且频繁重写的存储单元的性能特性会下降,这意味着干扰的风险。上述重写的平均频率可以理解为高于在作为移位处理的移位源的存储块中的重写频率的频率。关于选择具有平均重写频率的存储块的方法,虽然未示出,可想到的方法之一是找出从任何给定地址开始的连续多个块地址范围内的平均重写频率,并从该范围内选出重写频率最接近平均值并且大于移位源存储块的重写频率的存储块。
图11作为加电操作的一部分进行的移位处理的流程图。当打开闪存卡1的电源时,初始化CPU15中的寄存器(S40),初始化主接口电路10的寄存器、闪存控制器12和缓冲控制器13(S41)。然后,检查安装在闪存卡1中的闪存器2(S42),并从闪存器2中读出系统信息(S43)。然后,得到在闪存器2上用于存储已使用地址登记表的初始地址,并存入工作RAM17(S44)。同样,请求在闪存器2上用于存储未使用区识别表的初始地址,并存入工作RAM17(S45)。随后,卡控制器5对不常重写的存储进行移位处理(S46)。
图12是当响应专用命令CMDX进行移位时操作的时序图。当从主计算机6发出写入命令CMD24时,卡控制器5响应该命令(闪存写)写入闪存器2。主计算机6等待对命令(响应)的响应。写入后,卡控制器5搜索转移地址。例如,通过图9所示的处理得到不常重写的块地址和重写频率来搜索转移地址,如果重写频率低于指定值,确定存在转移地址。当经过搜索转移地址所需的时间之后,主计算机6向卡控制器5发出状态读命令CMD13。卡控制器5提供是否有转移地址的确定结果,主计算机6接收它作为响应。例如,如果检查的结果显示存在多个要转移的地址,则主计算机6向卡控制器5发出移位处理命令CMDX。例如,如果检查的结果显示存在多个要转移的存储块,则卡控制器5请求主计算机6发出移位处理命令CMDX。该移位处理命令CMDX是专用命令,与与写入地址的指定一同给出的纯写入命令不同。移位处理命令CMDX不带有要写入的地址的指定。
响应写处理命令,卡控制器5得到比之前通过转移地址搜索过程发现的移位目的的块地址的重写频率更少的移位源的块地址,并进行重写。该处理以与图8和其它图中所介绍的相同的过程完成。如果在移位处理期间由主计算机6发出访问命令或相似情况(例如,读命令CMD17),则卡控制器5挂起移位处理,转而响应访问命令。该优先权是为了不让主计算机6的读或写等访问请求等待处理。
图13到图15示出了根据重写闪存器的总数的移位处理的例子。在这里要介绍的例子中,移位处理作为响应主计算机6的写访问的一部分进行。分配闪存器的已使用地址登记表中的指定存储区作为保存写入闪存器的总数的非易失存储区。将重写总数的数据从闪存器读入缓冲存储器4,并根据需要使用。读入缓冲存储器4的重写总数的数据在每次写入操作时增加,例如,在固定值复位(例如,5000),并且用环形计数器方式实现计数,由此重复从初始值开始计数。改变后的重写总数数据从工作RAM17保存到闪存器2中。
图13到图15中所示的处理步骤数与有对应部分的图5或图8中相应的步骤数相同,并且省略这些公共步骤的详细介绍。下面介绍在图13和图5的顺序中的不同之处。在步骤S2的处理之后,卡控制器由闪存器2的已使用地址登记表得到重写总数的数据(S50),并确定是否重写的总数已经达到了设置点,例如,5000(S31)。如果达到了,进行写入处理的以下步骤S3到S10,在重写总数+1(S53)之后,通过步骤S20到S22和S25到S29进行移位处理。如果没有达到,通过步骤S3到S10进行移位处理,在处理的中间重写总数+1,并且增加的总数存储到闪存器上匹配的已使用地址登记表中(S52)。
<读操作>
图16示出了利用已使用地址登记表部分21从存储卡中读出的流程图。当从主计算机6发出读命令时,卡控制器5从缓冲存储器4的已使用地址登记表缓冲区中读出其中存储与逻辑地址LBA(逻辑部分地址)匹配的块地址的已使用地址登记表ATT(S60)。然后,因为索引已使用地址登记表部分21的逻辑地址信息以升序排列,所以首先可以根据该信息选择安排已使用地址登记表的存储块。在选择的块中,读出第一个管理区,找出复用已使用地址登记表ATT中有效的一个,并由此读出已使用地址登记表ATT。然后,通过搜索读出的已使用地址登记表,得到当前与要读出的逻辑地址匹配的存储块地址(BA)(S60)。
卡控制器5读出存储在存储块地址(BA)的数据(S61)。检查读出的数据,确定有无存在任何ECC错误(S62)。如果有任何错误,进行ECC纠正(S63),读出的数据提供给主计算机6。
虽然上述介绍涉及通过参考实施本发明的最佳方式实现本发明,但是本发明显然并不限于上述介绍,并且可以以不脱离其本质的不同方式进行修改。
例如,在复用的未使用区登记表和已使用地址登记表中使用的通道数并不限于四个,可以加倍,即,八个,在这种情况下使用不同的存储块。在这种情况下,在多个复用的表中有效的表的顺序可以通过每次选择不同的存储块来选择。在重写表中,新的存储块与原始存储块不同,即使在任何表的重写过程中电源中断,也可以保留原始表的内容,而不会丢失。
而且,搜索相对不常重写的存储块的方法并不限于参考图9所作的介绍。例如,表示重写频率的数据可以表示几千的数量。或者可以是表示是否达到规定数的一位数据或标志。通过写入和擦除进行重写。重写的次数也可以以擦除或写入的次数来表示。
擦除或写入处理不需要一个字线一个字线地进行。闪存器的结构并不限于一个存储单元存储二进制数据,而且可以存储包括四个或更多值的多值信息。显然,非易失存储器并不限于闪存器,还可以是其它存储类型的存储器,例如铁电存储器。控制电路,例如卡控制器,不需要具有主接口电路,例如IDE,并且可以应用到标准化的存储卡以具有主计算机带来的功能。
下面将简要介绍通过在本申请中公开的本发明在其典型方案可以实现的优点。
因此,在属于本发明的存储装置中,因为移位处理要用其它存储区代替不常重写的存储区,所以有可能防止在没有发生重写的存储区中由于干扰的累积冲击引起的数据混淆的风险。而且,在属于本发明的存储装置中,当要重写数据时,因为写入块地址管理以在未使用区识别表中的移位使用与原始块地址不同的块地址作为写入目的或移位目的的方式进行,所以即使在擦除或移位期间意外断电,也可能恢复数据。
权利要求
1.一种存储装置,包括可擦除和可写的非易失存储器;以及控制电路,其中所述控制电路能以规定的时间进行存储区的移位处理,以及其中通过将相对不常重写的第一存储区中的存储数据写入未使用的第二存储区,并使已经完成写入的第二存储区作为已使用区代替所述第一存储区,完成所述移位处理。
2.根据权利要求1的存储装置,其中所述存储区保存重写频率数据,并且其中所述控制电路参考从一组存储区的各个存储区得到的重写频率数据,并搜索用于所述第一存储区的重写频率数据。
3.根据权利要求1的存储装置,其中所述非易失存储器在其各存储区中设有用于标识该区域是否未使用的识别标志的储存区,以及其中所述控制电路参考所述识别标志,以搜索所述未使用的第二存储区。
4.根据权利要求1的存储装置,其中所述存储区保存重写频率数据,并且其中所述控制电路参考所述重写频率数据,以搜索其中重写比所述第一存储区更频繁的存储区,并将其作为所述第二存储区。
5.根据权利要求1的存储装置,其中所述控制电路响应特定的命令进行所述移位处理。
6.根据权利要求1的存储装置,其中所述控制电路响应特定命令处理的完成进行所述移位处理。
7.根据权利要求1的存储装置,其中在所述移位处理开始之后又有其它命令指示的情况下,放弃正在进行的移位处理,将优先权交给其它命令的处理。
8.根据权利要求1的存储装置,其中所述控制电路响应非易失存储器的重写频率达到规定的次数进行所述移位处理。
9.一种存储装置,包括可擦除和可写的非易失存储器;以及控制电路,其中所述控制电路能以规定的时间进行存储区的移位处理,以及其中通过用指定的未使用存储区代替重写频率少于该指定的未使用存储区的指定的已使用存储区完成所述移位处理。
10.一种存储装置,包括可擦除和可写的非易失存储器;以及控制电路,其中所述控制电路能以规定的时间进行存储区的移位处理,以及其中通过用重写频率少于指定的存储区的另一个存储区代替该指定的存储区,并在移位之后所述指定的存储区被使用的同时将所述另一个存储区置为未使用状态来完成所述移位处理。
11.一种存储装置,包括可擦除和可写的非易失存储器;以及控制电路,其中所述非易失存储器具有未使用区识别表,用来存储表示任何存储区是否是未使用区的识别标志,其中在写入处理中,所述控制电路使由所述识别标志表示的未使用的存储区中的一个作为数据写入的目标,并且能够在规定的时间对由所述识别标志表示的已使用存储区进行移位处理,以及其中通过将在重写相对不多的第一存储区中的存储数据写入未使用的第二存储区,并使写入已经完成的第二存储区作为已使用的存储区代替所述第一存储区来完成所述移位处理。
12.根据权利要求11的存储装置,其中所述非易失存储器具有用于登记的已使用地址登记表,与要使用的存储区的逻辑地址、物理地址相匹配,以及其中当将识别标志改为未使用区时,所述控制电路使分配给该识别标志的存储区与物理地址之间的匹配无效,当识别标志改为使用区时,所述控制电路使分配给识别标志的存储区与指定的物理地址相匹配。
13.根据权利要求12的存储装置,其中当用另一个存储区代替一个存储区,将其变为已使用区时,在使逻辑地址与在所述非易失存储器上的已使用地址登记表中反映的属于该改变的物理地址之间的匹配之前,所述控制电路进行处理,以使要从未使用区变为已使用区的所述一个存储区的识别标志在所述非易失存储器上的未使用区识别表中反映出来,并且在所述已使用地址登记表中反映出匹配之后,控制电路进行处理,以使要从已使用区变为未使用区的所述另一个存储区的识别标志在所述非易失存储器上的未使用区识别表中反映出来。
14.根据权利要求12的存储装置,其中所述存储区保存重写频率数据,并且其中所述控制电路参考从一组存储区的各个存储区得到的重写频率数据,并搜索用于所述第一存储区的重写频率数据。
15.根据权利要求12的存储装置,其中所述控制电路参考所述识别标志,以搜索所述未使用的第二存储区。
16.根据权利要求12的存储装置,其中所述控制电路参考重写频率数据,以搜索重写比所述第一存储区更频繁的存储区,并将其作为所述第二存储区。
全文摘要
一种存储装置,具有可擦除和可写的非易失存储器和控制电路,其中控制电路能以规定的时间安排进行移位存储区的处理。通过将在数据相对不常重写的第一存储区中存储的数据写入未使用的第二存储区,并使已经写入数据的第二存储区作为已使用的区域代替第一存储区,从而完成移位处理。如上所述,因为该移位处理是要用其它存储区代替不常重写的存储区,所以能够防止在没有发生重写的存储区中由于干扰的累积冲击引起的数据混淆的风险。
文档编号G11C16/34GK1591685SQ20041003373
公开日2005年3月9日 申请日期2004年4月9日 优先权日2003年4月10日
发明者品川千晶, 白石敦, 金森贤树 申请人:株式会社瑞萨科技
文档序号 :
【 6762602 】
技术研发人员:品川千晶,白石敦,金森贤树
技术所有人:株式会社瑞萨科技
备 注:该技术已申请专利,仅供学习研究,如用于商业用途,请联系技术所有人。
声 明 :此信息收集于网络,如果你是此专利的发明人不想本网站收录此信息请联系我们,我们会在第一时间删除
技术研发人员:品川千晶,白石敦,金森贤树
技术所有人:株式会社瑞萨科技
备 注:该技术已申请专利,仅供学习研究,如用于商业用途,请联系技术所有人。
声 明 :此信息收集于网络,如果你是此专利的发明人不想本网站收录此信息请联系我们,我们会在第一时间删除