提高usb闪存写入性能的方法和器件的制作方法

文档序号:6399653阅读:98来源:国知局
专利名称:提高usb闪存写入性能的方法和器件的制作方法
技术领域
本发明涉及闪存,并且更具体地涉及通过通用串行总线(USB)连接到系统的闪存。
背景技术
存在许多不同类型的闪存;但是,本发明涉及通常的NAND闪存,并且这里所使用的术语“闪存” 一般指NAND闪存。闪存器件的重要特征在于它们可以保持被存储的数据而不需要任何外部电源。从而,闪存经常被用在诸如“拇指驱动”之类的器件和数字照相机中。闪存器件可以从计算机或照相机中取走,并且存储在器件中的数据不会被丢失。闪存中的读操作按照与较老式且较便宜的随机访问(RAM)存储器中的读操作相类似的方式被执行。但是,闪存中的写操作按照与RAM存储器中执行读操作的方式不同的方式被处理。在RAM存储器中,可以将新的数据写入到包含其它数据的各个存储器位置中。这在闪存中是不可能的。新的数据不能被写到存储器中已经包含数据的位置处。在闪存中,在新的数据可以被写到某个位置之前,该位置必须被擦空。此外,闪存中的单个位置不能被擦空。闪存被划分成若干个分区,并且擦空操作是在整个分区上执行的。从而,如果先前数据被存储在某分区中,则在数据可以被写到该分区内的任何一个特定位置之前,包含该特定位置的整个分区都必须被擦空。如果闪存中的分区包含被保存的数据,则在将新的数据写到所述分区中的特定位置之前,包含该特定位置的整个分区中的任何已有数据都必须被暂时地重新放置。原因在于为了擦空一个特定位置,整个分区都必须被擦空。在擦空操作之前,人们想要保存的存储在一个分区中的任何已有数据都必须被存储到其它位置中。一种广泛使用的闪存被称为固态软盘卡(SSFDC),或者更经常被称为SmartMediaTM。SmartMedia (智能多媒体卡)规范由SSFDC论坛开发并维护。SmartMedia规范的使用很广泛。SmartMedia规范要求存储器必须具有可用于数据存储的24个临时(已被擦空的)分区。利用标准的SmartMedia器件,在存储相对较小的文件(其大小为24个或更少的分区)所需要的操作和存储大小大于24个分区的文件所需要的操作有非常大的不同。为了存储大于24个分区的文件,在可以完成文件写操作之前,必须进行一个或多个分区擦空操作。下面是示出了闪存中典型的写操作所需要的步骤的示例。应当理解这些仅仅是示例,并且存在各种闪存器件,每一种都具有其各自的特性。
第一示例是‘最佳情形’的情况,其中文件大小恰好匹配闪存分区的大小。在大多数情况下,这是不太可能的情况;但是它可以作为很有用的第一示例。在该示例中,不会发生局部分区移动。存储器控制器只是识别空白分区中的一个,并且将数据写入那个分区。注意SmartMedia规范要求存在可用的24个空白分区。在完成数据存储之后,控制器擦空未被分配的分区,以使得将存在24个被擦空的分区准备好接收数据。第二示例是这样一个示例,其中在已经包含数据的分区中少量数据被改变。这是一个更实际一些的示例。这个示例需要局部分区移动操作。首先,不会被改变的已有数据被移到备用(先前被擦空的)分区中的一个分区中。接下来,新的数据被添加到该分区中的数据中。在完成了存储操作之后,控制器擦空不再被分配给文件的另一分区。第三示例是与本发明尤其相关的示例。在该示例中,大于24个分区的大小的文件被写入闪存。首先,24个备用分区(先前被擦空)被填充上新的数据。然后,控制器必须定位到不再具有正被使用的数据的其它分区并且为这些分区擦空。最后,文件中的其它数据被写入到这些最新被擦空的分区中。从而,直到相对冗长的擦空操作被执行之后才能够完成存储操作。主机系统利用文件分配表(FAT)来记录哪些逻辑地址包含与每个特定文件相关的数据。本发明利用FAT被存储在闪存中这样一个事实。FAT表向操作系统指示哪些逻辑地址被映射到哪些文件。在任何特定时间,未被映射到文件的任何逻辑地址都未被存储在存储器中的任何文件使用。存储控制器维护将逻辑地址与相应的物理地址相关联的表。

发明内容
闪存器件通常具有已经被擦空并且准备好接收数据的有限数目的分区。文件分配表(FAT)被存储在闪存中并且其中具有指示哪些分区被分配给文件和哪些分区未被分配给文件的信息。根据本发明,存储器控制器连续地或周期性地查询FAT表来确定该时刻哪些逻辑地址没有被分配给存储在存储器中的任何文件。如果定位到没有被分配给文件的逻辑地址的分区,则相应的物理地址的分区被擦空,并且被标记为准备好接收数据。从而,大于若干个通常被擦空的分区的大小的文件可以被存储在存储器中,而不必在可以完成存储操作之前等待擦空操作的进行。本发明提供了一种闪存子系统,其包括:被划分成多个分区的闪存,固定数目的所述分区被保持在擦空状态并且准备好接收数据,文件分配表(FAT)被存储在所述闪存中,存储器控制器,可操作来查询所述FAT,定位其中没有被分配给活动文件的区域的存储器分区并擦空所述存储器分区,所述查询和擦空发生在其中没有文件正被读取或写入到所述存储器的间隔期间,从而在无需等待擦空操作进行的情况下大于所述固定数目的分区的文件可以被写到所述存储器中。本发明提供的闪存子系统中,所述存储器可以是NAND闪存。除所述查询和擦空操作以外,所述存储器可遵循SmartMedia规范操作。所述存储器控制器可包括通用串行总线接口。本发明还提供了一种存储器系统,包括:
在写操作之前需要擦空操作的存储器,所述存储器被划分成多个分区,固定数目的所述分区被保持在擦空状态并且准备好接收数据,文件分配表(FAT)被存储在所述存储器中,存储器控制器,可操作来查询所述FAT,定位其中没有被分配给活动文件的区域的存储器分区并擦空所述存储器分区,所述查询和擦空发生在其中没有文件正被读取或写入到所述存储器的间隔期间,从而在无需等待擦空操作进行的情况下大于所述固定数目的分区的文件可以被写到所述存储器中。本发明还提供的存储器系统中,所述存储器可以是闪存。所述存储器可以是NAND闪存。除所述查询和擦空操作以外,所述存储器可遵循SmartMedia规范操作。在所述存储器是NAND闪存的情况下,除所述查询和擦空操作以外,所述存储器可遵循SmartMedia规范操作。所述存储器可具有之前被擦空并为写操作做好准备的至少24个分区。本发明还提供的存储器系统中,所述存储器控制器可包括通用串行总线接口。本发明还提供了一种系统,包括主机计算机和前述存储器控制器包括通用串行总线接口的存储器系统,所述主机通过通用串行总线被连接到所述存储器系统。本发明还提供了一种操作存储器的方法,所述存储器被划分成多个分区并且要求在写入每个特定分区之前每个特定分区被擦空,所述存储器中存储有文件分配表(FAT),所述方法包括以下步骤:在未正进行读或写操作时查询所述FAT以标识未被分配给当前文件的分区,在未正进行读或写操作时擦空标识出的分区,从而在无需等待擦空操作进行的情况下大文件可以被存储在所述存储器中。本发明还提供的操作存储器的方法中,所述存储器可以是闪存。所述存储器可以是NAND闪存。除所述查询和擦空操作以外,所述存储器可遵循SmartMedia规范操作。本发明还提供了一种存储器子系统,其包括:存储器,所述存储器被划分成多个分区并且要求在写入每个特定分区之前每个特定分区被擦空,所述存储器中存储有文件分配表(FAT),用于在未正进行读或写操作时查询所述FAT以标识未被分配给当前文件的分区的装置,用于在未正进行读或写操作时擦空标识出的分区的装置,从而在无需等待擦空操作进行的情况下大文件可以被存储在所述存储器中。本发明还提供的存储器子系统中,所述存储器可以是闪存。所述存储器可以是NAND闪存。本发明还提供了一种系统,包括主机计算机和通过通用串行总线连接到所述主机的如前所述的存储器子系统。


I)图1示出了根据SmartMedia规范组织的闪存。2)图2是本发明的实施例的框图。3)图3A、3B和3C是示出了优选实施例的操作的块流程图。4)图4是示出了系统操作的总体流程图。
具体实施例方式现在将参考附图更全面地描述本发明。附图示出了本发明的示例实施例和这些实施例的操作。但是,本发明可以按照很多不同的形式来实现,并且本发明不应当被解释为被限制为这里所给出的实施例。这些实施例向本领域技术人员公开并传达本发明的概念和范围。在附图中,框的大小不代表物理组件的大小。图中块的大小只是为了方便说明和便于描述本发明而选择的。在附图中,相同的标号被用于表示在整个附图中相同的元件。本发明适合于在写入之前需要擦空周期的存储器。闪存就是这种类型的存储器。这里所描述的特定实施例利用固态软盘卡,其也被称为“SmartMediaTM”。但是,应当注意本发明的其它实施例可以利用在写数据之前需要擦空周期的其它类型的存储器。SmartMedia卡是小型的闪存卡,其物理大小类似于纪念邮票的大小。SmartMedia卡由被称为SSFDC论坛的组织定义。首字母“SSFDC”表示“固态软盘卡”。在1996年,固态软盘卡的名字被变成“SmartMedia”。SSFDC论坛仍保留了其名字“SSFDC论坛”。SSFDC论坛公布了针对SmartMedia 闪存的规范。SSFDC 论坛的地址是:SSFDC Forum Bureau, C-zone, 4F, ToshibaBldg., Tokyo, Japan。SmartMedia规范定义了被划分成若干个分区的闪存。该规范要求SmartMedia存储器具有被擦空并且可用于存储数据的24个分区。就是说,在任何时候,在写操作之前,应当存在已经被擦空并且为写操作做好准备的至少24个分区(这里被指定为临时存储分区)。图1中示出了 SmartMedia闪存的框图。该存储器被划分成若干个分区。存储器中的分区的确切数目和每个分区的大小取决于特定存储器的大小。商业上可用的有各种不同大小的闪存。在图1中,存储分区被指定为BI到Bx,并且虚线表示取决于存储器的大小的可变数目的分区。就是说,虚线表示没有被具体显示的分区。存储器中的24个分区被指定为临时存储分区。在附图中,用标记T1、T2等标明临时存储分区。为了便于图示,并不是所有的临时存储分区都被显示在附图中。下面将会说明,当存储器工作时,临时存储分区Tl到Τ24的位置会改变。注意与本发明不相关的存储器的各种标准特征没有显示在图中,并且这里不对它们进行描述。闪存100包括用于FAT表和其它控制信息的特殊的存储位置(由操作系统确定)。FAT表被操作系统用于将逻辑地址链接或映射到存储在存储器中的特定文件。FAT表指示存储器中的哪些逻辑位置被分配给了哪些文件。在逻辑地址和存储器中的物理地址之间也存在映射。这由存储器控制器来完成。SmartMedia规范要求存储器具有可用于临时存储的24个分区。当存储器是新的时,所有分区都是空的并且可用于存储。我们假设最初数据被写入存储器中除被指定用于临时存储的24个分区之外的所有分区中。此时存储器是满的。FAT表具有将所有可用逻辑地址(由存储器的大小确定)链接到特定文件的条目。存储器控制器具有显示哪些逻辑地址对应于哪些物理地址的表。仍将存在被擦空并准备好接收数据的24个临时存储分区。接下来,我们假设操作系统擦除一个文件。假设这个文件覆盖存储器中的三个分区。在操作系统擦除这个文件之后,FAT表将指示这三个分区的逻辑地址不再被分配给文件。但是,根据SmartMedia规范,此时已经存储有数据的分区将不被擦空,因为已经存在被擦空并准备好接收数据的24个分区。现在我们检查SmartMedia规范是怎样指示应当处理各种不同的情形。所有这些示例都假设存储器已经工作了一段时间,并且在某一时刻存储器是满的,并且在某一其它时刻各种文件被擦除以使得存储器具有一些空闲的空间。作为第一示例,假设主机向存储器发送文件,该文件的大小覆盖一个分区。这个文件将被存储在被指定为临时存储的分区中的一个分区中。控制器将把临时存储分区的物理地址分配给逻辑地址,并且文件操作将非常快地继续进行。文件被存储之后,只剩下23个临时存储分区。但是,由于控制器在已存储的分区中为逻辑地址分配了新的物理地址,所以控制器将知道哪个物理分区可以被擦空以使可用的临时分区的数目变回到24个。这个擦除操作花费相对较长的时间,但是这不是问题,因为被发送来存储的文件已经被存储。接下来,我们假设主机向存储器发送文件,该文件的大小覆盖25个分区。根据SmartMedia规范,将进行下面的操作。(上述25个分区中的)24个分区的数据将被存储在24个可用的临时存储分区中。将不存在已经被擦空的分区来容纳第25个分区的数据。从而,直到控制器定位到未被分配给文件的分区并且该分区被擦空后,存储操作才可能完成。被定位到的分区被擦空(相对较慢的操作),然后第25个分区被存储。注意由于主机正在向先前使用的逻辑地址的分区写数据,所以控制器知道哪个分区不再被分配给文件,先前被分配给这个分区的地址的物理地址现在可以被擦空。从而如上所述,根据SmartMedia规范,存储大小等于25个分区的文件的操作将涉及以下步骤和时间周期:I)在可用的临时存储位置中存储24个分区。2)定位到可以被擦空的分区。3)擦空分区的记录(这要花费相对较长的时间)。4)存储第25个分区的数据。按照本发明的这个实施例,存储大于24个分区的文件所需要的时间被缩短了。在本发明的这个实施例中,当存储器控制器没有处在读或写文件的过程中时,存储器控制器查询FAT表,并且为没有被分配给文件的任何存储器分区擦空。就是说,它为没有正被使用的分区擦空。即使已经存在可用于临时存储的24个被擦空的分区也是如此。实际上,这违反了 SmartMedia规范,但是在常规的操作过程中它不会带来危害,并且它在相当大的程度上加速了系统的操作。图2是包括本发明的存储器系统的实施例的框图。该系统包括控制器101和通用串行总线(USB)接口 102。计算机程序IOlP控制控制器101的操作。USB接线103U连接USB接口 102和主机103。主机103向存储器提供数据并从存储器100中读取数据。正常情况下,主机103根据逻辑地址提供数据并且读取数据。FAT表提供逻辑地址和存储在存储器100中的文件之间的对应关系。如下所述,控制器101在程序IOlP的控制下访问并操纵FAT表。控制器101包括可以在程序IOlP的控制下执行操作的微处理器。自然地,控制器101中的微处理器也执行各种其它常规的操作,这些操作与本发明无关并且这里不进行讨论。图3A、3B和3C中示出了存储器中存储各种大小的文件时,根据本发明的现有实施例要进行的操作的程序流程图。应当理解这些只是为了说明系统操作的有限的示例。图4中示出了系统所执行的相关操作的总体程序流程图。应当理解这里示出的示例中所示的操作发生在存储器先前已经存储了数据之后,以使得所有的分区中至少有一次存储了数据。数据第一次被写入分区中时,不需要先前的擦除操作。图3A示出了简单的写操作。在该示例中,存储器中的所有分区中先前都存储过数据,但是整个存储器不是满的。操作继续进行两个步骤。如方框301所示,数据被存储在一个临时存储位置中。就是说,临时分区中的一个分区的物理地址被分配给新数据的逻辑地址,并且数据被存储在这个新分配的分区中。接下来,在存储操作完成之后,控制器为具有先前被分配给该新存储的分区的逻辑地址的物理地址的分区擦空。在如方框302所示当前未被使用的物理地址的分区被标识之后,如方框303所示,该分区被擦空。注意在文件已经被存储到存储器中之后进行第二和第三操作。还要注意完成这些操作之后,存在24个临时存储位置,这些位置被擦空并且准备好接收数据。图3B示出了当主机只想要改变存储在存储器的一个区域中的数据时会发生的情况。首先,如方框321所示,分区中将不被改变的数据被转移到临时存储分区中的一个分区。就是说,新的物理地址被分配给该数据的逻辑地址并且该数据被转移到新的地址。接下来,新的数据被写入临时存储分区,并且该临时存储分区被标记为被使用的分区,如方框322和323所示。就是说,该临时存储分区不再是临时存储分区。此时,数据存储操作完成。接下来,如方框324和325所示,控制器为先前被分配给新数据的逻辑地址的分区擦空,并且该分区被标记为临时存储分区。图3C示出了当主机发送要存储的文件且该文件的大小大于24个临时存储分区的大小时进行的操作。假设存储器不是满的并且包含足够的空间来存储这个新的文件。图3C示出了在主机向存储器发送文件的时间之前进行的两个步骤。只要存储器没有忙于执行读或写操作,就会进行这些步骤。如方框331所示,控制器101查询FAT表以标识当前被分配给文件的不包含数据的分区。就是说,控制器在FAT中查找未被分配的分区,并且将这个分区与存储器中被擦空的区域进行对比。如果在FAT中某个分区是未被分配的,则控制器知道这个分区可以被擦空。当这个分区被定位到时,如方框332所示,该分区被擦空以使得它准备好接收数据。这违反了 SmartMedia规范;但是,在系统的常规操作期间,它不会带来危害。在试图恢复被擦除的文件的情况下,这可能会阻止恢复;但是,这个操作不被认为是系统的常规操作。最重要的是这些操作发生在写操作之前这个事实,因此,这些操作不会增加写操作所需要的时间量。当如方框333和334所示,在主机向存储器发送包含25个分区的文件时(这是本示例所示出的情况),前面的24个分区被存储在临时存储位置中。文件的最后一个分区被存储在一个已经被擦空的位置中。从而,系统不必等待分区被擦空就可以完成包含25个分区的文件的存储。图4是示出了系统的操作的总体流程图。注意图3A到3C仅示出了系统的操作的各个片段。方框401和402示出了当其它操作没有正被执行时,控制器101在程序IOlP的控制下查询FAT表以标识未被分配给任何当前文件的分区。如果任何这样的分区被标识,则被标识的分区被擦空并且被标记为准备好接收数据。如方框404、406和408所示,当主机开始存储操作时,进行的第一个判定是存储器中是否存在足够的未被分配的分区来保存新的文件。如果不,则存储器不能保存该文件,并且操作结束,如框408所示。自然地,应当理解所示出的操作中的一些操作可以按照不同于所示出的特定顺序的顺序来执行。如果存储器可以保存文件,则判定该文件是否大于24个分区。如果该文件小于24个分区,则操作按照SmartMedia规范所指定的方式继续进行。如果文件大于24个分区,则进行方框412和416所示的操作。就是说,前面24个分区被存储在正常开放的24个分区中,并且余下的分区被置于其它先前被擦空的分区。根据本发明,不必等待任何擦除操作的进行就可以存储超过最初的24个分区的分区。应当理解本发明的其它实施例可以利用不同于上述实施例中所示的特定的SmartMedia存储器的其它类型的存储器。本发明适合于在写操作之前需要擦除周期的所有存储器,也适合于所有闪存器件。虽然针对优选实施例示出并描述了本发明,但是本领域技术人员应当理解在不脱离本发明的精神和范围的情况下,可以进行各种形式和细节上的改变。本发明的范围只受所附权利要求的限制。
权利要求
1.一种闪存子系统,其包括: 被划分成多个分区的闪存,固定数目的所述分区被保持在擦空状态并且准备好接收数据,文件分配表(FAT)被存储在所述闪存中, 存储器控制器,可操作来查询所述文件分配表,定位除了所述固定数目的分区以外其中没有被分配给活动文件的区域的存储器分区并擦空所述存储器分区,所述查询和擦空发生在其中没有文件正被读取或写入到所述存储器的间隔期间, 其中,所述闪存进一步被配置以回应于写操作,而在无需等待擦空操作进行的情况下存储大于所述固定数目的分区的文件。
2.如权利要求1所述的系统,其中所述存储器是NAND闪存。
3.如权利要求1所述的系统,其中除所述查询和擦空操作以外,所述存储器遵循SmartMedia规范操作。
4.如权利要求1所述的闪存子系统,其中所述存储器控制器包括通用串行总线接口。
5.—种存储器系统,包括: 在写操作之前需要擦空操作的存储器,所述存储器被划分成多个分区,固定数目的所述分区被保持在擦空状态并且准备好接收数据,文件分配表(FAT)被存储在所述存储器中, 存储器控制器,可操作来查询所述文件分配表,定位除了所述固定数目的分区以外其中没有被分配给活动文件的区域的存储器分区并擦空所述存储器分区,所述查询和擦空发生在其中没有文件正被读取或写入到所述存储器的间隔期间, 其中,所述存储器进一步被配置以回应于写操作,而在无需等待擦空操作进行的情况下存储大于所述固定数目的分区的文件。
6.如权利要求5所述的系统,其中所述存储器是闪存。
7.如权利要求5所述的系统,其中所述存储器是NAND闪存。
8.如权利要求5所述的系统,其中除所述查询和擦空操作以外,所述存储器遵循SmartMedia规范操作。
9.如权利要求7所述的系统,其中除所述查询和擦空操作以外,所述存储器遵循SmartMedia规范操作。
10.如权利要求5所述的系统,其中所述存储器具有之前被擦空并为写操作做好准备的至少24个分区。
11.如权利要求5所述的系统,其中所述存储器控制器包括通用串行总线接口。
12.—种具有主机计算机和权利要求11所述的存储器系统的系统,其中所述主机通过通用串行总线被连接到所述存储器系统。
13.一种操作存储器的方法,所述存储器被划分成多个分区并且要求在写入每个特定分区之前每个特定分区被擦空,所述存储器中存储有文件分配表(FAT),所述方法包括以下步骤: 在未正进行读或写操作时查询所述文件分配表以标识未被分配给当前文件的分区, 在未正进行读或写操作时擦空标识出的分区, 回应于写操作,在无需等待擦空操作进行时的情况下将大文件存储在所述存储器中,其中大文件大于固定数目的分区。
14.如权利要求13所述的方法,其中所述存储器是闪存。
15.如权利要求13所述的方法,其中所述存储器是NAND闪存。
16.如权利要求13所述的方法,其中除所述查询和擦空操作以外,所述存储器遵循SmartMedia规范操作。
17.—种存储器子系统,其包括: 存储器,所述存储 器被划分成多个分区并且要求在写入每个特定分区之前每个特定分区被擦空,所述存储器中存储有文件分配表(FAT), 用于在未正进行读或写操作时查询所述文件分配表以标识未被分配给当前文件的分区的装置, 用于在未正进行读或写操作时擦空标识出的分区的装置,以及用于在无需等待擦空操作进行的情况下将大文件存储在所述存储器中的装置,其中大文件大于固定数目的分区。
18.如权利要求17所述的系统,其中所述存储器是闪存。
19.如权利要求17所述的系统,其中所述存储器是NAND闪存。
20.一种具有主机计算机和权利要求17所述的存储器子系统的系统,其中所述主机通过通用串行总线连接到所述存储器子系统。
全文摘要
控制器连续地或周期性地查询FAT表以确定该时刻哪些分区未存储与存储器中存储的任何文件相关的数据。如果定位到未被分配给文件的分区,则该分区被擦空并且被标记为准备好接收数据。按照这种方式,大文件可以被存储在存储器中,而不必在该文件正被写入存储器时等待擦空操作的进行。
文档编号G06F3/06GK103150256SQ20131005738
公开日2013年6月12日 申请日期2005年7月20日 优先权日2004年7月22日
发明者斯蒂芬·亨利·克洛克思凯 申请人:赛普拉斯半导体公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1