非易失性存储器件,写入数据的方法,和读出数据的方法转让专利

申请号 : CN200680016090.7

文献号 : CN101176074B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 本多利行宗广和小来田重一外山昌之中村清治须藤正人井上学

申请人 : 松下电器产业株式会社

摘要 :

一种非易失性存储装置(101)包括多个物理块,每个物理块设置有非易失性存储器(103),逻辑/物理地址转换表,临时块,和临时表。非易失性存储器(103)包括多个分别作为预定写入单元的页。逻辑-物理地址转换表(106)存储物理块中存储的数据的逻辑地址与物理地址之间的对应关系信息。临时块是存储数据的物理块,所述数据的尺寸比页的尺寸小。临时表(107)存储与临时块中存储的数据有关的逻辑地址与物理地址之间的对应关系信息。

权利要求 :

1.一种非易失性存储器件,能够根据逻辑地址被写入数据,所述非易失性存储器件包括:非易失性存储器,根据与逻辑地址对应的物理地址被写入数据,所述非易失性存储器包括多个物理块,每个物理块包括多个页,每个页作为预定写入单元;

正常块,作为所述多个物理块中存储尺寸等于一页或多页尺寸的数据的物理块;

临时块,作为所述多个物理块中存储具有比页的尺寸小的尺寸的数据的物理块;和存储逻辑-物理地址转换表和临时表的存储介质,所述逻辑-物理地址转换表用于存储正常块中存储的数据的逻辑地址与物理地址之间的对应关系信息;所述临时表用于存储与临时块中存储的数据有关的逻辑地址与物理地址之间的对应关系信息。

2.根据权利要求1所述的非易失性存储器件,其中仅允许针对所述临时块中的一页写入一次数据。

3.根据权利要求1所述的非易失性存储器件,其中所述非易失性存储器是多值存储单元。

4.根据权利要求1所述的非易失性存储器件,其中

将多个物理块作为一个物理超级块管理,

将与所述物理超级块对应的多个逻辑块作为逻辑超级块管理,和所述逻辑-物理地址转换表存储所述物理超级块与所述逻辑超级块之间的对应关系信息。

5.一种存储控制器,用于控制非易失性存储器件的操作,所述非易失性存储器件包括非易失性存储器,所述非易失性存储器能够根据逻辑地址被写入数据,其中a)所述非易失性存储器根据与逻辑地址对应的物理地址被写入数据,所述非易失性存储器包括多个物理块,每个物理块包括多个页,每个页作为预定写入单元,所述非易失性存储器包括临时块和正常块,其中所述临时块作为所述多个物理块中存储具有比页的尺寸小的尺寸的数据的物理块,所述正常块作为所述多个物理块中存储尺寸等于一页或多页尺寸的数据的物理块,b)所述存储控制器包括存储介质,所述存储介质存储有:逻辑-物理地址转换表,用于存储所述正常块中存储的数据的逻辑地址与物理地址之间的对应关系信息;和临时表,用于存储与所述临时块中存储的数据有关的逻辑地址与物理地址之间的对应关系信息,其中所述存储控制器根据请求被写入的数据的尺寸来确定写入数据的物理块,当请求被写入的数据的尺寸小于页的尺寸时,将请求被写入的数据写入到所述临时块中。

6.根据权利要求5所述的存储控制器,其中仅允许针对所述临时块中的一页写入一次数据。

7.根据权利要求5所述的存储控制器,其中所述非易失性存储器是多值存储单元。

8.根据权利要求5所述的存储控制器,其中

将多个物理块作为一个物理超级块管理,

将与所述物理超级块对应的多个逻辑块作为逻辑超级块管理,和所述逻辑-物理地址转换表存储所述物理超级块与所述逻辑超级块之间的对应关系信息。

9.一种用于非易失性存储器件的数据读出方法,用于根据逻辑地址从所述非易失性存储器件读出数据,其中a)所述非易失性存储器件包括:

非易失性存储器,用于根据与所述逻辑地址对应的物理地址被读出数据,并且所述非易失性存储器包括多个物理块,每个块包括多个页,每个页作为预定写入单元;

正常块,作为所述多个物理块中存储尺寸等于一页或多页尺寸的数据的物理块;

临时块,作为所述多个物理块中存储具有比页的尺寸小的尺寸的数据的物理块;和存储逻辑-物理地址转换表和临时表的存储介质,所述逻辑-物理地址转换表用于存储所述正常块中存储的数据的逻辑地址与物理地址之间的对应关系信息;所述临时表用于存储与所述临时块中存储的数据有关的逻辑地址和物理地址之间的对应关系信息,和b)所述读出方法包括:

在接收到读出数据的请求时,参考所述临时表;和

当读出地址已经寄存在所述临时表中时,从所述临时块读出数据,或当读出地址未寄存在所述临时表中的时候,参考所述逻辑-物理地址转换表来读出数据。

10.根据权利要求9所述的数据读出方法,其中根据被最后写入数据的所述临时块中的页的信息,确定所述临时块中的有效数据页。

11.一种在能够根据逻辑地址被写入数据/被读出数据的非易失性存储器件中的管理表产生方法,其中a)所述非易失性存储器件包括:

非易失性存储器,用于根据与逻辑地址对应的物理地址被写入数据/被读出数据,并且所述非易失性存储器包括多个物理块,每个物理块包括多个页,每个页作为预定写入单元;

正常块,作为所述多个物理块中存储尺寸等于一页或多页尺寸的数据的物理块;

临时块,作为所述多个物理块中存储具有比页的尺寸小的尺寸的数据的物理块;和存储逻辑-物理地址转换表和临时表的存储介质,所述逻辑-物理地址转换表用于存储所述正常块中存储的数据的逻辑地址与物理地址之间的对应关系信息;所述临时表作为用于存储与所述临时块中存储的数据有关的逻辑地址与物理地址之间的对应关系信息的管理表,和所述产生方法包括:

确定数据在所述临时块中已经最终被写入的页;和

根据确定的页的信息产生所述临时表。

12.根据权利要求11所述的管理表产生方法,其中所述临时块中的每页包括用于存储数据的数据区,和用于存储数据的管理信息的管理区,并且所述管理区存储所述数据区中存储的数据的逻辑页的信息。

13.根据权利要求11所述的管理表产生方法,其中所述临时块中的每页包括用于存储数据的数据区,和用于存储数据的管理信息的管理区,并且所述管理区存储有效数据页的物理页地址。

14.根据权利要求11所述的管理表产生方法,其中所述临时表是在所述非易失性存储器件通电时产生的。

说明书 :

技术领域

本发明涉及使用诸如闪存器之类的非易失性存储器的存储装置,及其写入方法和读出方法。

背景技术

近年来,安装有非易失性存储器的存储卡已经将其市场扩展到数字相机和蜂窝电话的记录介质。随着存储卡容量的增加,它的用途已经从诸如数据文件和静止图像之类的小容量记录扩大到需要大容量的运动图像记录。因此,按常规,已经尝试设计了各种安装有非易失性存储器的记录介质(例如,专利文献1至4)。
大容量存储卡能够存储大量的数据,并且能够存储各种不同类型的数据,因此,它们的管理信息是多种多样的。例如,管理信息包括用于加速文件存取的元数据管理文件,通过数据类型管理信息的虚拟目录结构的文件,和与惯用FAT文件系统不同的数据库类型文件系统。这些不同的管理信息的尺寸小,因此,其结果是它成为了增大每个扇区数据写入频率的一种因素。
专利文献1:JP-A-2001-154909
专利文献2:JP-A-11-53248
专利文献3:JP-A-2002-324008
专利文献4:JP-A-05-216780

发明内容

本发明要解决的问题
随着闪存器容量的不断增大,作为擦除单元的擦除块的尺寸变大。结果是,当写入诸如上述的各种管理信息之类的小尺寸的随机数据时,物理块单元中数据的复制在闪存器中频繁地发生,因此破坏了写入特性。
此外,作为实现大容量闪存器的方法,有一种多值存储单元。与二进制存储单元相比,多值存储单元的控制较复杂,并且难于保证可靠性,因此,为了确保与二进制存储单元相同水平的可靠性,需要减小存储单元的压力。因此,在多值存储单元中,选择由多个扇区构成的一页作为写入单元,并且不允许对该页进行多次写入。也就是说,在多值存储单元的情况下,即使在写入比一页尺寸更小尺寸的数据时,也需要在一页的基础上写入,这是引起写入特性变坏的一个因素。
做出本发明以解决上述问题,本发明的目的是要提供一种半导体存储装置,能够在应当将数据写在预定写入单元(例如,页单元)中的闪存器的多个区域中,写入尺寸比预定写入单元小的写入数据。
解决问题的手段
在本发明的第一方面中,提供一种非易失性存储器件,能够根据逻辑地址向所述非易失性存储器件写入数据。
非易失性存储器件包括:非易失性存储器,根据对应于逻辑地址的物理地址向所述非易失性存储器中写入数据,所述非易失性存储器包括多个物理块,每个物理块包括多个页,每个页作为预定写入单元;逻辑-物理地址转换表,用于存储物理块中存储的数据的逻辑地址与物理地址之间的对应关系信息;临时块,作为存储数据的物理块,所述数据的尺寸比页的尺寸小;和临时表,用于存储与临时块中存储的数据有关的逻辑地址与物理地址之间的对应关系信息。
在本发明的第二方面中,提供了一种存储控制器,用于控制非易失性存储器件的动作,所述非易失性存储器件包括非易失性存储器,能够根据逻辑地址向所述非易失性存储器中写入数据。
根据与逻辑地址对应的物理地址向非易失性存储器写入数据,所述非易失性存储器包括多个物理块。每个物理块包括多个页。每个页作为预定写入单元。所述存储控制器包括:逻辑-物理地址转换表,用于存储所述物理块中存储的数据的逻辑地址与物理地址之间的对应关系信息;临时块,作为存储数据的物理块,所述数据的尺寸比页的尺寸小;和临时表,用于存储与临时块中存储的数据有关的逻辑地址与物理地址之间的对应关系信息。当被请求写入的数据的尺寸小于页的尺寸时,将被请求写入的数据写入到临时块中。
在本发明的第三方面中,提供一种用于非易失性存储器件的数据写入方法,能够根据逻辑地址将数据写入非易失性存储器件。
非易失性存储器件包括:非易失性存储器,根据与逻辑地址对应的物理地址向所述非易失性存储器写入数据,所述非易失性存储器包括多个物理块,每个物理块包括多个页,每个页作为预定写入单元;逻辑-物理地址转换表,用于存储在物理块中存储的数据的逻辑地址与物理地址之间的对应关系信息;和临时块,作为存储数据的物理块,所述数据的尺寸比页的尺寸小。
写入方法包括:接收来自外部的写入数据的请求;和根据要写入的数据的地址,确定请求写入的数据是否被写在临时块中。
在本发明的第四方面中,提供一种用于非易失性存储器件的数据读出方法,用于根据逻辑地址从所述非易失性存储器件读出数据。
非易失性存储器件包括:非易失性存储器,用于根据与所述逻辑地址对应的物理地址从所述非易失性存储器读出数据,并且所述非易失性存储器包括多个物理块,每个块包括多个页,每个页作为预定写入单元;逻辑-物理地址转换表,用于存储所述物理块中存储的数据的逻辑地址与物理地址之间的对应关系信息;临时块,作为存储数据的物理块,所述数据的尺寸比页的尺寸小;和临时表,用于存储与临时块中存储的数据有关的逻辑地址和物理地址之间的对应关系信息。
读出方法包括:在接收到读出数据的请求时,参考临时表;和当读出地址已经寄存在临时表中的时候,从临时块读出数据,或当读出地址未寄存在临时表中的时候,参考逻辑-物理地址转换表来读出数据。
在本发明的第五方面中,提供了一种在可以根据逻辑地址向其/从其写入/读出数据的非易失性存储器件中的管理表的产生方法。
非易失性存储器件包括:非易失性存储器,用于根据与逻辑地址对应的物理地址向所述非易失性存储器/从所述非易失性存储器写入/读出数据,并且所述非易失性存储器包括多个物理块,每个物理块包括多个页,每个页作为预定写入单元;逻辑-物理地址转换表,用于存储所述物理块中存储的数据的逻辑地址与物理地址之间的对应关系信息;临时块,作为存储数据的物理块,所述数据的尺寸比页的尺寸小;和临时表,作为用于存储与临时块中存储的数据有关的逻辑地址与物理地址之间的对应关系信息的管理表。
所述产生方法包括:确定数据在临时块中已经最终被写入的页;和根据确定的页的信息产生临时表。
本发明的效果
根据本发明,在具有诸如闪存器之类的预定擦除单元和具有必须以预定写入单元(例如,页单元)进行数据写入的闪存器的非易失性存储器中,在写入数据的尺寸小于预定写入单元(例如,页单元)的尺寸的情况下,数据被写入到与正常写入操作中使用的记录区不同的记录区(物理块)中。因此,能够减小数据写入中记录区之间的数据复制次数,结果是,提高了写入处理的速度。

附图说明

图1是显示作为根据本发明的非易失性存储器件的一个实施例的存储卡的结构的示意图;
图2是显示闪存器的内部结构和物理块的结构的示意图;
图3A是显示存储卡中逻辑数据的管理的示意图;
图3B是显示逻辑-物理地址转换表的构成实例的示意图;
图4是显示闪存器的临时页的数据格式的示意图;
图5是显示临时块中的临时页数据的存储实例的示意图;
图6是显示临时表107的数据格式的示意图;
图7是临时表产生处理过程的流程图;
图8是数据写入处理过程的流程图;
图9是说明数据无效处理过程的示意图;
图10是数据读出处理过程的流程图;
图11是临时块写入处理过程的流程图;
图12A是说明没有自由区的临时块的示意图,图12B是说明没有自由临时页的临时块的示意图;
图13是临时块复制处理过程的流程图;
图14是说明临时块复制处理过程的示意图;
图15A是临时页取消处理过程的流程图,图15B是说明临时页的取消的示意图;
图16A至16C是说明根据本发明的第一存取实例的示意图;
图17A至17D是显示第一存取实例中,数据写入过程中临时块中状态转变的示意图;
图18E和18F是显示第一存取实例中(图17D的继续),数据写入过程中临时块中状态转变的示意图;
图19A至19D是显示惯用方法的数据写入过程中临时块中状态转变的示意图;
图20E和20F是显示惯用方法的数据写入过程中临时块中状态转变的示意图(图19D的继续);
图21A至21C是说明根据本发明的第二存取实例的示意图;
图22A至22D是显示第二存储实例中数据写入过程中临时块中状态转变的示意图;
图23E至23G是显示第二存取实例中数据写入过程中临时块中状态转变的示意图(图22D的继续);
图24H是显示第二存取实例中数据写入过程中临时块中状态转变的示意图(图23G的继续)。

具体实施方式

以下参考附图说明本发明的优选实施例。
1.存储卡的结构
图1示出了作为根据本发明的非易失性存储器件的一个实施例的存储卡的结构。存储卡101是能够从和向作为外部设备的主机102读出和写入数据的存储装置。存储卡101包括作为非易失性存储元件的闪存器103,和用于控制向/从闪存器103写入/读出数据的存储控制器110。存储控制器110包括控制器104、擦除记录块表105、逻辑-物理地址转换表106、和临时表107。存储控制器110和闪存器103可以用半导体集成电路来实现。
闪存器103具有128MB的容量。但是,闪存器103的容量不限于此。此外,可以提供多个闪存器103。控制器104响应来自主机102的读出/写入指令,控制在闪存器103中存储数据或从闪存器103读出数据。在本实施例中,闪存器103是能够在一个单元中存储三进制或更多值的信息的多值存储器件。但是,闪存器103可以是二进制(二值)存储单元。
存储在闪存器103中的数据是由作为文件系统之一的FAT文件系统管理的。FAT文件系统包括主引导记录,分区表,分区引导扇区,FAT表1和FAT表2,和根目录项,作为文件管理信息(此后,称为“FAT信息”)。
主引导记录,分区表存储用于管理数据记录区的信息,数据记录区被分割成多个被称为分区的区域。分区引导扇区将管理信息存储在多个分区中的一个中。FAT表1和FAT表2分别指示包括在文件中的数据的存储位置。根目录项存储在文件和紧接着根目录之下的目录的信息。应当指出,文件系统可以是其他类型的系统。
图2是显示闪存器103内部结构的示意图。闪存器103的记录区是由多个物理块31构成的。物理块31具有128kB的容量,用作一次擦除其中所有的数据的擦除单元。
此外,物理块31包括多个物理页301。在本实施例中,一个物理块31包括六十四个页。物理页301是用于数据写入的写入单元,并具有2kB的容量。一个物理页包括四个扇区。在物理页301中,一旦数据被写入时,数据就不能被覆盖。一个簇(cluster)具有16kB的容量,它是主机102据以逻辑地写入数据的单元。这个值与物理块31的128kB的容量和物理页301的2kB的容量不相符。因此,具有16kB容量的部分物理块是由连续的八个页的物理页301构成的。部分物理块(16kB)是由控制103在数据是从主机102写入的假设的基础上逻辑处理的数据单元。一个物理块31包括八个部分物理块,并且通过部分物理块单元从主机102对其写入数据。
图3A是显示存储卡101中数据的逻辑管理的示意图。安装在存储卡101上的闪存器103的存储容量是128MB。一般情况下,在闪存器103中,有时会发生初始坏块或反复重写造成的坏块。因此,将存储卡101的容量设置到比真实容量略小。在本实例中,主机102可以识别的实际容量是125MB。将作为从主机102写入的数据单元的16kB单元定义为“一个逻辑块”402,并且将0至7999顺序地分配在存储卡101的125MB的容量中。八个逻辑块组成一个128kB单元的“逻辑组”401,这个逻辑组401等于作为闪存器103的擦除单元的物理块31。
在图1中,擦除记录块表105存储指示数据是已经从闪存器103中的物理块中擦除还是已经写入的信息。逻辑-物理地址转换表106是用于在主机102规定的地址(“逻辑地址”)与闪存器103中的地址(“物理地址”)之间进行转换的表。
逻辑-物理地址转换表106中与逻辑组地址对应的地址的记录区中存储着与逻辑组401对应的物理块31的地址。图3B中示出了逻辑-物理地址转换表106的简化结构。逻辑-物理地址转换表106具有作为表的地址的逻辑组地址,和对应于逻辑地址的物理地址,作为表的数据。当不存在对应的物理块31时,逻辑-物理地址转换表106具有无效值(例如,“0x0000”)作为数据。
在本实施例中,在将主机102请求写入的并且其尺寸小于一页尺寸的数据写入到闪存器103时,数据被写在特定的物理块31中。在本实施例中,将这个特定的物理块31称为“临时块”。临时块107是用于存储有关写在临时块中的数据的各种信息的表,例如,有关写在临时块中的数据的物理地址与逻辑地址之间的对应关系信息。
在闪存器103中不是临时块的并且不依赖数据尺寸地经受一般写入操作的物理块被称为“正常块”。当把数据写入正常块时,物理地址与逻辑地址之间的对应关系由逻辑-物理地址转换表106管理。
在根据本实施例的存储卡101中,将主机102请求对其进行写入并且其尺寸小于一页尺寸的小数据单元存储在临时块的一个页中。
应当注意,在本实施例中,将一个物理块作为数据的管理单元处理。但是,可以将多个物理块31作为一个较大的管理单元(以下称为“物理超级块”)处理。在这种情况下,将对应于物理超级块的一组逻辑块作为一个逻辑超级块管理,并且逻辑-物理地址转换表106存储物理超级块与逻辑超级块之间的对应关系信息。
1-1.临时页的格式
图4示出了闪存器103的临时块中的一页(以下称为“临时页”)的数据格式。临时页具有用于存储一页的数据(以下称为“页数据”)的数据区50,和用于存储与该页数据有关的管理信息的管理区60。数据区50包括四个扇区数据区51。每个扇区数据区51存储扇区数据53、扇区ID 54、和与扇区数据53和扇区ID 54有关的ECC 55。
管理区60具有逻辑页地址的字段61、有效数据0页的字段62、有效数据1页的字段63、有效数据2页的字段64、有效数据3页的字段65、和管理区60的ECC(纠错码)的字段66。逻辑页地址的字段61存储这个页的逻辑地址。在本实施例中,可以作为有效数据同时寄存在临时块80中的最大临时页的数量是4。但是,最大数量并不限于4,而可以是任何数量,只要这个数量小于一个物理块31中的最大页数(本例中是64)。有效数据是要读出的数据。无效数据是即使它存储在临时块80中也不读出的数据。有效数据0页的字段62、有效数据1页的字段63、有效数据2页的字段64、和有效数据3页的字段65分别存储着作为有效临时页数据存储的各页数据(有效数据0至3)的物理页地址。
图5示出了临时块80中临时页数据的存储实例。临时块80具有从0x00到0x3F的64页的区(页)。在图5的实例中,数据被写在0x00到0x21的每个区中。每个页具有管理区60。在本实施例中,写入最后的数据的物理页中的管理区中的信息被称为有效信息。即,在图5的状态下,参考在0x21的物理页301中的管理信息60(有效数据0页,有效数据1页,有效数据2页,和有效数据3页)。有效数据0页的字段62,有效数据1页的字段63,和有效数据2页的字段64分别存储“0x01”,“0x0E”,和“0x21”。这显示了在临时块80中具有“0x01”,“0x0E”,和“0x21”的物理页地址61的页中存储的数据是作为临时页的有效数据。应当指出,存储在有效数据3页的字段65中的“0xFF”指示无效。即,在图5的示例中,仅有三个页被作为有效临时页存储。在图5中,由(*)显示的页是无效的临时页。
参考图5,说明临时页数据写入中的管理信息60的转变。临时块80具有从0x00至0x3F的六十四页的区,在这个区中写入了来自物理页地址为0x00的页的数据。
在图5的实例中,页数据被写在临时块80中的物理页地址0x00中。此时,这个页数据的逻辑页地址(图5中的“0x000123”)被写在逻辑页地址的字段61中。在这个时间点,数据仅被写在物理地址0x00的区中,作为临时块80中的有效临时页数据。因此,它的页地址“0x00”被写在有效数据0页的字段62中。指示无效的“0xFF”被写在除有效数据0页的字段62之外的有效数据页的字段63至65中。
接下来,将页数据写在下一个物理页地址“0x01”中。此时,它的逻辑页地址(0x000123)与已经写在物理页地址“0x00”中的页数据的逻辑页地址相同,因此,以前写入的临时页数据成为无效的。
在对临时块80中存在有效数据的逻辑页执行覆盖并且发生将数据写入到临时块时执行无效处理过程。
数据是通过将管理区与有效扇区数据的写入一起更新而被无效掉的,因此,在无效处理过程中有效逻辑页地址被记录在字段61中。
无效处理过程如下执行。用“0x01”覆盖记录在字段62中的有效数据0页的值,“0x01”是其中已经新写入了页数据的物理页地址。指示无效的“0xFF”被写在其他有效数据页的字段63至65中。通过以这种方式覆盖有效数据0页的值,可以使以前有效的临时页无效。如上所述,在本实施例中,参考写入了最后数据的页的管理信息60以识别有效页。
应当指出,这里给出了这样一个例子,在这个例子中,临时块80中存在有效数据的被覆盖的逻辑页与其中发生了数据写入到临时块的逻辑页是相同的(0x000123)。只要临时块80中存在有效数据的逻辑页被覆盖,并且发生了数据写入到临时块中,逻辑页可以不必是相同的。
1-2.临时表的格式
图6示出了临时表107的数据格式。在临时表107中,“临时块的物理地址”的字段中存储用作临时块80的物理块31的物理地址。“下一个写入的物理页”的字段中存储下一个要对其写入数据的临时页的物理地址。“有效数据0的物理页地址”的字段中存储作为临时块80中临时页的、其中存储了有效数据的页的物理地址。“有效数据1的物理页地址”、“有效数据2的物理页地址”、和“有效数据3的物理页地址”中的每个字段都是如此。“在有效数据0的物理页的数据的逻辑页地址”的字段存储在由“有效数据0的物理页地址”指定的物理地址中存储的数据的逻辑页地址。“在有效数据1的物理页的数据的逻辑页地址”、“在有效数据2的物理页的数据的逻辑页地址”、和“在有效数据3的物理页的数据的逻辑页地址”中的每个字段都是如此。
例如,在如图5中所示的临时块的情况下,临时表107中的每个字段存储如下的值。
表1
临时表中的字段   存储的值 临时块的物理地址   临时块的物理地址 下一个写入的物理页   0x22 有效数据0的物理页地址   0x01 有效数据1的物理页地址   0x0E 有效数据2的物理页地址   0x21 有效数据3的物理页地址   0xFF 在有效数据0的物理页的数据的逻辑页地址   0x000123 在有效数据1的物理页的数据的逻辑页地址   0x000456 在有效数据2的物理页的数据的逻辑页地址   0x000777
在有效数据3的物理页的数据的逻辑页地址 -
临时表107是在存储卡101的启动时(通电时)产生的,并且在以后根据需要而更新。主机102在诸如主机102启动时之类的预定时间读出临时表107中的值,并将其存储在主机102的RAM上。
2.存储卡的操作
2-1.临时表产生处理过程
以下参考图7的流程图说明临时表产生处理过程。
首先,读出临时块80并且搜索最后被写入数据的临时页(S11)。在图5的示例中,发现具有“0x21”的物理页地址的页是最后写入数据的页。接下来,参考最后写入数据的页的管理信息60获得有效临时页的信息(S12)。在图5的实例中,从具有“0x21”的物理页地址的页的管理信息60获得作为有效临时页的“0x01”,“0x0E”,和“0x21”。然后,获得所有得到的有效临时页的逻辑页信息(逻辑页地址)(S13至S15)。在图5的示例中,获得“0x000123”,“0x000456”,和“0x000777”作为逻辑页信息。应该指出,在图7中,步骤S13和S15显示要重复进行获取逻辑页地址的步骤(S14),直到取得了所有有效临时页的逻辑页地址。最后,利用获得的信息产生临时表107(S16)。
2-2.数据写入
以下参考图8的流程图说明存储卡101中的数据写入处理过程。下面说明的处理过程是由存储卡101中的控制器104执行的。
当接收到来自主机102的写入数据的请求(写入命令)时,控制器104确定要写入的数据的尺寸是否是一个扇区(S21)。当是一个扇区的时侯,将数据写在临时块中(S30)。这个处理过程将在以后详细说明。
此时,当不是一个扇区时,控制器104确定要写入的数据是否包括页中的最后的扇区(S23)。该确定可以根据要写入的数据的地址做出。当要写入的数据不包括页中的最后扇区的时侯,意味着要写入的数据具有两个扇区或三个扇区的尺寸,并且它是请求写入的最后数据。此时,当要写入的数据包括页中的最后扇区的时侯,意味着后面还有要继续写入的数据。
因此,当要写入的数据不包括页中的最后扇区的时侯,将数据写在临时块80中(S30)。当要写入的数据包括页中的最后扇区的时侯,将数据写在正常块中(S24)。
此时,控制器104确定要写入的数据的地址是否已经作为有效临时页寄存在临时表107中。当存在这种寄存时,在这个临时页上进行临时无效处理过程(S26)。作为临时无效处理过程,例如,设置标记以指示需要对临时页进行无效处理。对所有主机102请求写入的数据重复上述处理过程(S22和S27)。
接下来,控制器104确定是否发生了临时无效处理过程(例如,确认标记)。在发生了临时无效处理过程时,对于临时块80中发生临时无效处理过程的临时页使用无效处理(S29)。在临时块中存在有效数据的逻辑页被覆盖并且没有发生将数据写入临时块的时侯,在临时无效处理过程(S26)发生时进行无效处理(S29)。临时块80中临时页的无效处理是通过把要被无效的有效数据页的字段62、63、64或65设置到“0xFF”,并且将其中逻辑页地址的字段61设置到“0xFFFFFF”的数据新添加到下一个写入的物理页而执行的。在被无效的页数据中的数据区50中不写入任何数据。例如,图9示出了具有“0x21”的物理页地址的数据的无效处理过程。为了使在物理页地址“0x21”的数据无效,在物理页地址“0x22”,写入被无效页数据,其中将有效数据2页设置到“0xFF”并将逻辑页地址的字段61设置到“0xFFFFFF”。
返回到图8的流程图,对临时块的写入的确定总结如下。首先,具有一个扇区的尺寸的数据的写入总是被写在临时块中。这是由于下面的原因造成的。当主机102更新尺寸比存储卡101的写入单元的尺寸小的数据时,主机102根据作为将数据写入存储卡101的最小尺寸的写入单元来执行数据的写入。因此,当主机102将数据写入到连续的逻辑字节地址时,主机102应当把具有一个扇区的尺寸的数据写入到同一逻辑扇区地址进行多次。当数据尺寸不是一个扇区的时侯,要根据最后地址确定是否应当对临时块写入。当最后地址不是指示页中的最后扇区的时侯,将数据写在临时块中,而不管首部的地址。
2-3.数据读出
以下参考图10的流程图说明从存储卡101读出数据的处理过程。下面说明的处理过程是由存储卡101的控制器104执行的。
当从主机102接收到读出数据的请求时,控制器104参考临时表104。然后,根据主机102指定的逻辑地址,控制器104确定要读出的数据是否已经寄存在临时表107中(S42)。即,控制器104确定要读出的数据是否存储在临时块80中。
当数据已经寄存在临时表107中的时侯,控制器104从临时块80读出数据(S43)。更具体地讲,控制器104参考临时表107,并获得对应于主机102指定的逻辑地址的物理页地址。此后,控制器从临时块80读出如此得到的物理页地址的数据。
当数据没有寄存在临时表107中的时侯,根据主机102指定的读出地址从正常块读出数据(S45)。
重复上述处理过程,直到读出了主机102指定的范围中的所有数据(S41和S44)。
2-4.对临时块写入
以下参考图11的流程图说明对上述临时块80的写入处理过程(图8的步骤S30)。
为了执行对临时块80的数据写入,首先,控制器104确定临时块80中是否有自由区(S51)。在这里,没有自由区的状态是一种如图12A中所示的,由于数据已经写在临时块80的所有物理页中而不存在用于新写入数据的自由区的状态。
当没有自由区的时侯,执行临时块复制处理过程(S52)。在临时块复制处理过程中,将没有自由区的临时块80中存储的有效物理页的数据复制到新的物理块,并且将这个新物理块用作临时块80,因此产生了自由区。这个处理过程将在以后详细说明。
此后,控制器104确定临时块80的四个临时页中是否有自由区(S53)。在这里,临时页中没有自由区的状态是一种如图12B中所示的,记录在四个有效数据页的字段中的物理页地址的所有临时页都是有效的,并且要写入的数据的逻辑页地址与四个有效临时页的逻辑页地址中的任何一个不同的状态。
当临时页中没有自由区的时侯,执行临时页取消处理过程(S54)。在临时页取消处理过程中,取消一个最早寄存的有效临时页,以在临时页中建立自由空间。这个处理过程的详细内容将在以后说明。
接下来,在更新了临时表107(S55)之后,将临时页数据写在临时块80中(S56)。
2-4-1.临时块复制
下面参考图13的流程图说明上述的临时块复制处理过程(图11的步骤S52)。在这个处理过程中,仅把没有自由区的临时块80中的有效物理页的数据复制到新的物理块,从而在临时块中建立自由区。
首先,参考擦除记录块表105,并获得擦除记录物理块(S61)。“擦除记录物理块”是由未使用的数据区构成的。将临时页中没有自由区的临时块80中的有效物理页的所有数据复制到新获得的物理块(S62)。
图14是说明临时块复制处理过程的示图。临时块80是没有自由区的物理块。参考临时块80的最后的页,可以将物理页“0x00”,“0x03”,“0x23”,“0x3E”识别为有效临时页。物理块80b是新获得的擦除记录物理块。将临时块80中的物理页“0x00”,“0x03”,“0x23”,“0x3E”的数据复制到新获得的物理块80b。物理块80b具有足够的未使用区,并且在此后将其用作新的临时块。将老临时块80的数据擦除,并且老临时块80成为擦除记录物理块。
2-4-2.临时页的取消
以下参图15A的流程图说明上述临时页取消处理过程。在这个处理过程中,通过取消最早寄存的有效临时页来建立自由临时页。
首先,搜索最早寄存的有效临时页,并读出它的页数据(S81)。将如此读出的页数据复制到正常块(S82)。然后,对其页数据被复制的临时页执行临时页的无效处理过程(S83)。
图15B是说明临时页的取消处理过程的示意图。临时块80中最早寄存的有效临时页91被复制到正常块85。此时,在正常块85中,根据需要将临时页91的数据与具有与临时页91的数据的地址连续的逻辑地址的数据一同复制到正常块85,从而保持了逻辑地址的连续性。
3.在数据写入时的特定实例
3-1.本发明的方法中的存储实例1
以下参考图16,17和18,用一个特定实例说明在写入数据时临时块80中状态的转变。将要写入的数据分组成4kB(8个扇区),并且如图16B中所示,包括数据1,数据2,数据3,...和数据64,并且数据的总尺寸是128kB(256扇区)。
数据1写在扇区0至6和扇区7的一部分区中。数据2写在扇区7的剩余区中。数据3写在扇区8至14和扇区15的一部分区中。数据4写在扇区15的剩余区中。用相同的方式,将数据5,数据6,...和数据64写在对应的扇区中。
图16C示出了接收到图16B中所示的数据的写入命令时的存取过程。在图16C中,用于写入/读出的一个块对应于来自主机102的一个命令。
首先,在数据1的写入中,将数据写在扇区0至6中。接下来,将数据1的剩余数据写在扇区7的一部分中。在这种情况下,读出扇区7的数据,并重写与数据1的剩余数据部分对应的扇区7的部分。这样,在数据的尺寸小于一个扇区的时侯,执行仅仅读出扇区数据一次和仅重写其需要的部分的读出-修改-写入过程。
接下来,为了将数据2写在扇区7的剩余区中,读出扇区7的数据,并重写与数据2的数据部分对应的扇区7的部分。以相同的方式写入数据3至数据64。
图17和18是说明在如图16A至16C所示的写入数据时,临时块80和正常块90中状态的转变的示意图。
图17A示出了在把数据1写在扇区0至6中之后,即,在图16C的存取A之后,临时块80和正常块90的状态。把在扇区0至6中的写入划分成在扇区0至3中的写入,和在扇区4至6中的写入。在扇区0至3中的写入是将数据写到正常块90中(S24),因为它包括一页中的最后扇区(图8的步骤S23中的“是”)。在扇区4至6中的写入是将数据写到临时块80中(S30),因为它不包括一页中的最后扇区(图8的步骤S23中的“否”)。带有数据1的一部分的扇区4至6被记录在临时块的物理页0的“数据区”50中,并且将物理页地址“0”记录在有效数据0页中(字段62)。此时,扇区7中的写入尚未执行。此外,作为新页的物理页地址的“0”记录在临时表107的“有效数据0的物理页地址”的字段中,并且作为新页的逻辑页地址的“1”记录在“有效数据0的物理页的数据的逻辑页地址”的字段中。
图17B示出了在把数据1的剩余部分写在扇区7中之后,即,在图16C的存取B之后,临时块80和正常块90的状态。如同在扇区7中写入一样地执行一个扇区的写入(图8的步骤S21中的“是”),从而执行了对临时块80的写入(S30)。为了对扇区7写入,读出扇区4至7的数据(一页的数据),并且用数据1的剩余数据重写扇区7的数据,并且将这个重写数据新记录在物理页地址“1”中,作为新的临时页数据。此时,有效数据0页的值(字段62)被设置到“1”,“1”是新页的物理页地址。此外,将作为新页的物理页地址的“1”记录在临时表107的“有效数据0的物理页地址”的字段中。
图17C示出了在把数据2写在扇区7中之后,即,在图16C的存取C之后,临时块80和正常块90的状态。如同在扇区7中的写入一样地执行一个扇区的写入,从执行了对临时块80的写入。为了执行在扇区7中的写入,读出扇区4至7的数据(一页的数据),并用数据2的数据重写扇区7的数据的一部分,并且将这个重写的数据记录在物理页地址“2”中作为新临时页数据。此时,有效数据0逻辑页的值被设置到“2”,这个“2”是新页的物理页地址。此外,将作为新页的物理页地址的“2”记录在临时表107的“有效数据0的物理页地址”的字段中。
图17D示出了在扇区8至14中写入数据之后,即,在图16C中的存取D之后,临时块80和正常块90的状态。在扇区8至14中的写入被划分成在扇区8至11中的写入,和在扇区12至14中的写入。对正常块90执行在扇区8至11中的写入,因为它包括一页中的最后扇区的写入。在这里,扇区0至3的数据已经写在正常块90中,因此,在扇区8至11中写入之前需要一同写入扇区4至7的数据,以便保持逻辑地址的连续性。
在针对扇区8至11在正常块90中写入之后,执行在扇区12至14中的写入。在扇区12至14中的写入是对临时块80中进行的,因为它不包括一页中的最后扇区的写入。扇区12至14的数据记录在物理页地址“3”中。有效数据0逻辑页的值(字段62)被设置到“3”。有效数据0页的值(字段62)从“2”被覆盖为“3”。这是因为当针对扇区4至7把数据写到的正常块90时,临时块中的扇区4至7的数据应当被无效。此外,作为新页的物理页地址的“3”被记录在临时表107的“有效数据0的物理页地址”的字段中,并且作为新页的逻辑页地址的“3”被记录在“在有效数据0的物理页的数据的逻辑页地址”的字段中。
图18E示出了在把数据3的剩余数据写在扇区15之后,即,在图16C的存取E之后,临时块80和正常块90的状态。如同在扇区15中的写入一样地执行一个扇区的写入,因此执行在临时块80中的写入。读出扇区12至15的数据,用数据3的剩余数据重写扇区15的数据,然后将其记录在物理页地址“4”,作为新临时页数据。此时,有效数据0页的值(字段62)被设置到“4”,它是新页的物理页地址。此外,作为新页的物理页地址的“4”被记录在临时表107的“有效数据0的物理页地址”的字段中。
图18F示出了在把数据4写在扇区15中之后,即,在图16C的存取F之后,临时块80和正常块90的状态。如同在扇区15中的写入一样地执行一个扇区的写入,因此执行在临时块80中的写入。读出扇区12至15的数据,并用数据4的数据重写扇区15的数据的一部分,然后将其记录在物理页地址“5”,作为新的临时页数据。此时,有效数据0逻辑页的值(字段62)被设置到“5”,“5”是新页的物理页地址。此外,作为新页的物理页地址的“5”被记录在临时表107的“有效数据0的物理页地址”的字段中。
以上述方式,可以通过七个扇区、一个扇区、和一个扇区的存取,在正常块90中执行写入,例如,在扇区0至6中的写入(存取A),在扇区7中的写入(存取B),和在扇区7中的写入(存取C)。在这种情况下,通过八个扇区(扇区0至7)的存取,针对临时块80产生了三个页的存取。
因此,当重复256个扇区的相同存取时,产生了对临时页的96(256÷8×3)页的存取。96页不能存储在一个临时块80中,因此,发生了一个临时复制处理过程。结果是,可以利用三个或更少的物理块执行写入。
3-2.通过惯用方法存取的实例
以下参考图19和20说明在用惯用写入方法写入图16A和16B中所示的数据时的物理块中状态的转变。
如图19A中所示,在物理块(正常块)#1中,扇区0至3的数据写在页0中,和扇区4至6的数据写在页1中。接下来,数据1的剩余数据写在扇区7中。但是,在扇区7中的写入需要通过将扇区4至7的数据写在另一个新页中来执行,因为不能在页1上执行覆盖。因此,通过图19B中所示的惯用方法来执行写入。即,为了保持逻辑地址的连续性,将从扇区7继续的扇区8至扇区255的数据写在物理块#1的未使用区中,并且将扇区0至3和扇区4至7的数据写在另一个物理块#2中。此时,通过逻辑-物理地址转换表将逻辑地址和物理地址相关联。
接下来,当针对数据2覆盖扇区7时,以与如上所述相同的方式,将从扇区7继续的扇区8至255的数据写在物理块#2的未使用区中,并将扇区0至3和扇区4至7的数据写在另一个物理块#3中(见图19C)。
接下来,将扇区8至14的数据写在物理块#3中(见图19D)。此后,用数据3的剩余数据写扇区15。这种情况下,以与在扇区7中写入数据1的剩余数据的情况相同的方式,在把数据复制到物理块#3之后,将扇区0至15的数据写在新的物理块#4中,从而保持了逻辑地址的连续性(见图20E)。
此外,将数据4的数据写在扇区15中。在这种情况下,也是以与在扇区7中写入数据2的数据一样的方式,在把数据复制到物理块#4之后,将扇区0至15的数据写在新的物理块#5中,从而保持了逻辑地址的连续性(见图20F)。
如上所述,根据惯用方法,在七个扇区、一个扇区、和一个扇区的存取中,在第一次七个扇区、一个扇区、和一个扇区的存取中消耗了三个块,并且在后续的七个扇区、一个扇区、和一个扇区的存取中消耗了两个块。因此,在执行多达255个扇区的写入时,要消耗65(256÷8×2+1)个块。
根据该惯用技术,在255个扇区的写入中消耗了65个块。而根据本实施例的方法,如存取实例1中所述,仅消耗了三个块。因此,根据本实施例,块消耗量是惯用量的大约二十分之一,并且可以减少物理块之间数据的复制次数,从而可以加速写入处理过程。
3-3.本发明的方法中的存取实例2
在下述的示例中,说明如图21C中所示的,每个分组单元都发生对目录项的存取的情况,即,每个通过七个扇区、一个扇区、和一个扇区的存取写入数据的情况。
图22,23和24示出了说明在包括如图21C中所示的将数据写入目录项的数据写入的情况下,临时块80和正常块90的状态的转变的示意图。
临时块80和正常块90的状态的转变与图17和18中所示的变化基本相同。目录项的数据尺寸是一个扇区,因此,将目录项的数据写在临时块80中(见图22D和24)。
以这种方式,通过更新分组单元中的目录项,即使在数据写入过程中发生错误时,也能防止诸如完全不能管理已经写入的数据之类的故障,并且能够执行对用于更新目录项的数据的管理。例如,这种优点对于移动终端是有用的。
此外,也可以根据要写入的数据的地址确定是否将数据写在目录项中。因此,当确定了要写入的数据的地址并且这个地址对应于目录项的时候,可以无条件地将数据写在临时块80中。
4.总结
如上所述,根据本实施例,在具有必须以预定写入单元(页单元)执行写入的闪存器的非易失性存储器中,在具有比预定写入单元(页单元)尺寸小的数据的写入中,将数据写在与正常写入操作中使用的物理块不同的物理块(临时块)中。因此,数据写入中物理块之间的数据复制的次数可以减少,结果,可以加快写入处理过程的速度。
工业可用性
本发明可以应用到加快非易失性半导体器件的写入处理过程的技术,并且特别可用于具有必须以预定写入单元(例如,页单元)执行写入的非易失性存储器的非易失性半导体装置,和非易失性存储器的控制装置,等等。