存储设备的制作方法

文档序号:6762636阅读:205来源:国知局
专利名称:存储设备的制作方法
技术领域
本申请涉及存储设备,比如硬盘驱动器装置或者闪存卡,尤其涉及有效应用于将存储介质比如非易失性存储器的存储信息预读到缓冲存储器中的技术的发明。
背景技术
在包括控制器、缓冲存储器和存储介质等的存储设备中,当来自主设备的读请求到达时,控制器在读请求到达前从存储介质读取希望稍后使用的数据,将其存储到缓冲存储器中。这种技术称为预读技术。例如,在专利公开说明书1中描述的硬盘驱动器(HDD)装置具有磁盘高速缓存,预先将所要的数据缓存到所述磁盘高速缓存中,以尽量减小对磁盘的访问缓慢的问题。硬盘控制器预读存储在磁盘中的部分数据,并将其存储到磁盘高速缓存中。
专利公开说明书1日本待审专利公开说明书No.2001-125829(第24到27段)。

发明内容
从存储介质比如磁盘和闪存读出的数据容量不能沿着高速主机接口。因此,有必要在来自主设备的读请求期间减少从存储介质的读操作。为此,预先从存储介质预读数据以将其存储到缓冲存储器中是有效的办法。但是,要预读的数据是由存储设备的控制器决定的,用户不能够使用预读功能。简言之,如果控制器根据预定的算法决定要预读的数据,就不容易将预计要频繁使用的数据预先预读到缓冲存储器中,从而难以最大化通过预读达到的缩短访问时间的效果。
本发明的一个目的是提供一种存储设备,其能够灵活地决定要预读的数据。
本发明的另一个目的是提供一种存储设备,其能够容易地最大化通过预读缩短访问时间的效果。
前述目的以及其它目的和本发明的新特征将通过阅读下面的说明和附图而更为清楚。
下面简要描述在本专利申请中公开的发明的代表性实施例所获得的效果[1]本发明的存储设备包括非易失性存储器(2);比非易失性存储器具有更高的访问速度的缓冲存储器(4);以及控制电路(5)。所述控制电路建立一个预读数据管理表(Ti),该表将外部输入的预读命令指定的预读数据的逻辑地址与存储预读数据的缓冲存储器地址关联起来。另外,控制电路从非易失性存储器读出所述命令指定的数据,并将其作为预读数据存储到所述缓冲存储器中。当外部输入的读命令指定的逻辑地址与所述预读数据管理表所关联的逻辑地址匹配时,控制电路就从所述缓冲存储器输出相应的预读数据。
根据上述手段,可以从存储设备的外部由预读命令指定预读数据。因此,可以灵活地决定要预读的数据,以将通过预读缩短访问时间的效果最大化。存储设备的读出性能取决于作为存储介质的非易失性存储器本身的读出性能。因此,收到来自外部的读取请求时,通过增加来自缓冲存储器的预读数据的输出,而不是从存储介质读出,可以提高系统性能。只要缓冲存储器的容量允许,可以用多个预读命令指定多块预读数据。
作为本发明的一个实施例,预读命令用逻辑地址指定预读数据。以主引导记录或者FAT(文件分配表)为例,由于存在用户容易跟踪逻辑地址的情况,用逻辑地址指定的好处是可以直接指定预读数据。
预读命令可以用文件名指定预读数据。通常,存在这样的情况存储设备的用户无法跟踪OS(操作系统)管理的闪存2的逻辑地址。用户能够方便地用文件名跟踪数据,从而能够获得对数据预读的令人满意的可操作性。
控制电路可以在执行预读命令期间传输预读数据。同样,在预先建立预读数据管理表后,可以将预读数据以预定的定时传输到缓冲存储器。借此,控制电路能够在预读命令的执行结束后的命令等待状态将预读数据传输到缓冲存储器。预读数据传输处理防止发生这样的情况,比如读取访问延迟,以及由于预读数据传输处理而造成的其它操作。
作为本发明的一个实施例,预读数据管理表可以包括用于保持预读数据(30)的起始逻辑地址、存储预读数据的区域的起始存储器地址(31)以及预读数据的数据计数器(data count)(32)的区域。
预读数据管理表可以包括一个指示相应的预读数据的有效性的标记(33)。
预读数据管理表可以包括一个用于保存包含预读数据的文件名的区域(35)。例如,在FAT文件系统中,当一个文件被碎片化时,由于一片文件数据由多个割裂的预读数据管理表管理,用于保存文件名的区域对于使用指定的文件名进行访问的响应处理是有用的。也就是说,相应的预读数据管理表能够用文件名进行搜索,从而进一步提高对缓冲存储器上的所要的预读数据的访问速度。
所述预读数据管理表可以包括一个用于保存预读数据访问计数器(access count)的区域(34)。当在缓冲存储器中没有未使用的用于存储预读数据的区域时,卡控制器5基于保存在所述预读数据管理表中的访问计数值搜索不被频繁访问的缓冲存储器地址,并能够将被定位到的缓冲存储器地址的一个区域分配到一个保存预读数据的新区域。这确保了被频繁访问的预读数据的有效使用。
控制电路可以将预读数据管理表按照预定的定时保存到所述非易失性存储器的一个预读数据管理表保存区。当预读数据管理表正在缓冲存储器或者控制电路内的存储器上使用时,由于操作预读数据的预读数据管理表被保存了,即使由于断电或者类似事故导致丢失的缓冲存储器上的预读数据也能在以后恢复。例如,响应于电源的接通,控制电路从非易失性存储器读出一个预读数据管理表,并从所述非易失性存储器将所述预读数据管理表所定位的预读数据传输给所述缓冲存储器。
根据本发明的另一方面,一种存储设备包括非易失性存储器;比该非易失性存储器具有更高的访问速度的缓冲存储器;以及控制电路。响应于从外部输入的读命令,控制电路查阅将预读数据的逻辑地址与用于存储预读数据的缓冲存储器地址关联起来的可重写预读数据管理表。然后,控制电路判断缓冲存储器是否保存有该命令所指定的数据,如果缓冲存储器保存有所述数据,就将从缓冲存储器读出的数据输出到外部;否则将从非易失性存储器读出的数据输出到外部。
根据上述手段,通过使用可重写预读数据管理表,可以灵活地决定要预读的数据,以最大化通过预读缩短访问时间的效果。响应于读命令,增加从缓冲存储器输出的预读数据,而不是从非易失性存储器读出,这样改善了系统的性能。
作为本发明的一个实施例,所述控制电路响应于电源的接通而从非易失性存储器读出预读数据管理表,并从非易失性存储器将该预读数据管理表定位的预读数据传输给缓冲存储器。借此,在电源断开之前已经被操作的预读数据容易在后来在缓冲存储器上恢复。
根据本发明的另一方面,一种存储设备包括非易失性存储器;比该非易失性存储器具有更高的访问速度的缓冲存储器;以及控制电路。响应于从外部输入的预读命令,控制电路建立将该命令指定的预读数据的逻辑地址与用于存储预读数据的缓冲存储器地址关联起来的预读数据管理表。另外,控制电路从非易失性存储器读出该命令指定的数据,将其存储到所述缓冲存储器中作为预读数据,从而存储在该缓冲存储器中的预读数据能够被输出到外部。这样,可以用预读命令从存储设备外部指定预读数据。相应地,能够灵活地决定要被预读的数据,从而能够最大化通过预读而缩短访问时间的效果。
作为本发明的一个实施例,当缓冲存储器中没有用于存储预读数据的未使用区域时,所述控制电路执行如下处理。也就是,控制电路允许在下面两种情况之间作出选择允许和禁止盖写已经保存了预读数据的区域。选择前者便于动态交换预读数据。选择后者使得易于确保被频繁访问的预读数据的有效使用。当选择后者时,当没有未使用的区域时,会向预读命令发出者返回一个出错响应,以警告用户。前述的允许盖写的情况可以是允许完全盖写已经保存了预读数据的区域,或者是允许部分盖写访问不频繁的区域。允许部分盖写便于同时满足预读数据的动态互换性和被频繁访问的预读数据的有效使用性。
响应于从外部输入的读命令,控制电路查阅所述预读数据管理表以判断所述缓冲存储器是否保存有该命令指定的数据。如果缓冲存储器保存有该数据,控制电路就将从缓冲存储器读出的数据输出到外部;否则,它将从非易失性存储器读出的数据输出到外部。
响应于从外部输入的写命令,控制电路查阅所述预读数据管理表,以判断缓冲存储器是否保存有该命令指定的写地址的数据。如果缓冲存储器保存有该数据,控制电路就用写数据连同所述非易失性存储器的数据更新缓冲存储器的数据;否则其用写数据更新非易失性存储器的数据。


图1的方框图示出了一种闪存卡,是本发明的存储设备的一个例子;图2的示意示了缓冲存储器的地址映射的细节;图3的示意示了闪存的存储区的结构和预读数据管理表的细节;图4的示意示了预读命令的主要指定;图5的流程示了预读命令响应处理的控制流程;图6的流程示了主机指定地址获取处理(S2)的具体例子;
图7的示意示了在缓冲存储器中没有用于存储预读数据的未使用区域时的处理模式(预读数据更新模式);图8的流程示了读命令响应处理的控制流程;图9的流程示了写命令响应处理的控制流程。
具体实施例方式
<闪存卡>
图1图示了一种闪存卡,是本发明的存储设备的一个例子。图示的闪存卡1包括装在安装板上的下列部件可电擦除和可编程快闪存储器2(是非易失性存储器),包括DRAM(动态随机存取存储器)、SRAM(静态随机存取存储器)或者类似存储器的缓冲存储器4,以及执行存储器控制和外部接口控制的卡控制器(控制电路)5。该闪存卡1由主计算机6作为一个文件存储设备而加以控制。也就是说,当访问文件时,主计算机6查阅形成在闪存卡1中的FAT(文件分配表),获取构成该文件的扇区的逻辑地址,使用这些逻辑地址向闪存卡1发出访问命令。响应于该访问命令,闪存卡1控制对快闪存储器2和缓冲存储器4的访问。
卡控制器5根据主计算机给出的读命令、写命令、预读命令或者类似命令控制对缓冲存储器4和快闪存储器2的访问。读命令指定读扇区的起始逻辑地址以及要读取数据的扇区的数量。写命令指定写扇区的起始逻辑地址以及要写入数据的扇区的数量。预读命令创建一个将要预读的数据的逻辑地址与存储要预读的数据的缓冲存储器地址关联起来的预读数据管理表,并从快闪存储器2读取要预读的数据,将其存储到缓冲存储器4中作为预读数据。后面将详细描述各命令的处理。
缓冲存储器4的一个存储区包括一个临时保存主计算机6提供的写数据的区域(写数据保存区10)、一个临时保存从快闪存储器2读出并输出到主计算机6的数据的区域(读数据保存区11)、一个工作区12以及一个响应于预读命令将从快闪存储器2读出的数据保存为预读数据的区域(预读数据保存区13)。图2图示了缓冲存储器4的地址映射的细节。预读数据总是置于缓冲存储器中,占据该缓冲存储器的一个存储区。因此,从通常用于写和读的缓冲区10和11单独管理缓冲存储器。
快闪存储器2的存储区包括一个数据部分14、一个内部信息存储部分15和一个预读数据管理表存储部分,这些部分中的每一个都有一个管理部分。内部信息存储部分15存储可由主计算机6的OS(操作系统)访问的存储卡1的ID、RD(根目录)、FAT(文件分配表)等。预读数据管理表存储部分16存储响应于预读命令创建的预读数据管理表。
快闪存储器2具有一个存储器阵列ARY(图中未示出),其中以矩阵形式排布了大量可电擦除的、可编程的非易失性存储单元晶体管。存储单元晶体管(也称为快闪存储单元)未被图示,具有多层栅极结构,多层栅极结构包括形成在半导体板或者阱上的源极和漏极,通过沟道氧化物膜形成在源极和漏极之间的沟道区中的浮动栅,以及通过层间绝缘膜叠在该浮动栅上的控制栅极。控制栅极连接到相应的字线,漏极连接到相应的位线、源极连接到源极线。当电子注入到浮动栅中时,存储单元晶体管的阈电压升高。另一方面,当电子从浮动栅中抽离时,阈电压降低。存储单元晶体管根据阈电压相对于用于读取数据的字线电压(控制栅极被施加的电压)的升降来存储信息。尽管没有特别的限制,本说明书将存储单元晶体管的阈电压低的状态称为擦除状态,将阈电压高的状态称为写状态。
在图1中,卡控制器5包括一个主机接口电路20、一个作为操作控制装置的微处理器(MPU)21、一个闪存控制器22和一个缓存控制器23。闪存控制器22包括一个ECC电路(图中未示出)。
所述MPU21包括一个CPU(中央处理器)25、一个程序存储器(PGM)26和一个工作RAM(WRAM)27等,控制整个卡控制器5。所述程序存储器26保存CPU25的操作程序等。
主机接口电路20根据预定的程序建立与主计算机6比如个人计算机或者工作站的接口,比如ATA(ATAttachment,高级技术配件)接口、IDE(集成电路设备)接口、SCSI(小型计算机系统接口)接口、MMC(MultiMediaCard,注册商标)接口以及PCMCIA(个人计算机存储器卡国际联合会)接口。
缓存控制器23根据MPU21给出的访问命令控制对缓冲存储器4的访问。
闪存控制器22根据MPU21给出的访问命令控制在快闪存储器上进行的读操作、擦除操作以及写操作。ECC电路(图中未示出)根据MPU21给出的命令为要写到快闪存储器2上的数据产生纠错码,并将其添加到写数据上。ECC电路还利用添加到读数据上的纠错码对从快闪存储器2读出的数据进行检错、纠错处理,在纠错能力范围内纠正错误,如果有错误的话。
图3图示了快闪存储器2的存储区的结构以及预读管理表的细节。如图所示,快闪存储器2的存储区(存储器阵列)具有编号为0到4n+3的存储扇区,以及构成管理部分的从M0到Mn的n块。每一个存储扇区和每一个管理部分各具有一个物理地址,每个存储扇区被分配一个逻辑地址。逻辑地址例如是一个文件的扇区号(文件扇区号)。在下面的说明中,存储扇区地址将被简单地称为物理地址或者物理扇区地址。需要注意,逻辑地址是从外部指定的地址,物理地址是用于通过逻辑地址访问内部的地址。存储扇区对应于作为诸如HDD(硬盘驱动器)之类的存储设备的一个重写单元的512B(字节)存储扇区。块的有效标记(valid flag)、代换标记(substitution flag)等存储在所述管理区中。为每一个存储扇区提供ECC码。一个字线或者一类字线选择信号选择构成一个块的非易失性存储单元。这样,擦除处理和写处理以存储单元为单位进行。例如,以字线为单位施加擦除处理和写处理所需的高电压。
存储扇区4n到4n+3构成前述预读数据管理表存储部分16。该预读数据管理表存储部分16的每一个存储扇区存储多个预读数据管理表Ti(T0、T1、T2……)以及ECC码。由于在针对一个预读命令执行响应处理时就添加一个预读数据管理表,因此可能存在多个预读数据管理表。
一个预读数据管理表Ti包括一个起始逻辑地址区30、一个起始存储器地址区31、一个扇区号区32、一个有效标记区33、一个访问计数区34以及一个文件名区35。起始逻辑地址区30存储预读数据的起始逻辑地址(逻辑扇区地址)。起始存储器地址区31存储在缓冲存储器上保存预读数据的区的起始存储器地址。扇区号区32存储预读数据的扇区号。有效标记区33存储指示预读数据管理表是否有效的标记。访问计数区34存储由主计算机6对写管理表管理的预读数据访问的次数。文件名区35保存预读数据所属的文件名。
预读数据管理表可以在快闪存储器2或者在缓冲存储器4上进行管理。在在快闪存储器2上管理的情况下,每一次创建或者删除预读数据管理表时,就执行对预读数据管理表16的擦除操作和写操作。结果,处理变得缓慢。在在缓冲存储器4上管理的情况下,它们被快速地创建或者删除。但是,在断电时,预读数据管理表必须被保存到快闪存储器2中。希望在接通电源时,从快闪存储器2读出预读数据管理表,并从快闪存储器将被读出的预读数据管理表定位的预读数据传输到缓冲存储器4。
<预读命令响应处理>
图4示出了预读命令的主要指定。必须通过指定一个地址或者文件名来指定预读数据。当用地址指定预读数据时,存储卡1的用户用逻辑地址指定一个预读数据区。当用文件名指定预读数据时,用户指定存储预读数据的文件名。如果文件名被规定为包含指示文件位置的绝对路径名,则容易指定相同的文件名,便于文件搜索。
通常,存储设备的用户可能不能跟踪OS管理的闪存卡上的逻辑地址。对于用户来说,方便的是利用文件名跟踪数据。因此,通过指定文件名,可以实现对预读数据的令人满意的可操作性。可能有这样的情况OS不能管理快闪存储器的逻辑地址。即使在这样的情况下,也能用文件名指定预读数据。
当发出预读命令时,或者在命令等待状态下的后台方式中已经预先创建了预读数据管理表之后,从快闪存储器2将预读数据存储到缓冲存储器4中。在命令等待状态下存储预读数据可以防止发生下述情况由于预读数据从快闪存储器2到缓冲存储器4的传输,读取访问或者别的操作被延迟。
图5图示了预读命令响应处理的控制过程。收到主计算机6发出的预读命令(S1)后,卡控制器获得由命令以逻辑地址或者文件名指定的预读数据物理地址(S2)。基于预读命令指定的预读数据逻辑地址和对应于逻辑地址的物理地址等,创建预读数据管理表(S3)。例如在缓冲存储器4的工作区12中创建所述预读数据管理表。判断所创建的预读数据管理表中所限定的预读数据是否能被实际读取(S4)。这样做是为了检测不存在指定的文件的情况,或者指定的逻辑地址没有与快闪存储器的块相关联的情况。如果不能读取预读数据,则向主计算机6返回一个错误代码。如果能够读取预读数据,则判断能否接到下一个命令。否则,也就是,如果没有别的访问命令从主计算机6发出,则从快闪存储器2读出预读数据,并写到缓冲存储器4中(S6),在相应预读数据管理表的有效标记区33中置有效标记(S7)。如果预读数据的扇区数是两个或者更多,则控制过程返回步骤S6和S7,对随后的扇区重复同样的处理(S8)。通过微处理器11的地址计算,可以相继获得预读随后的扇区数据所需的快闪存储器预读地址以及缓冲存储器的预读数据写地址。当已经预读了在步骤S3创建的预读数据管理表所限定的所有扇区数据时,由于接受当前的预读命令而导致的繁忙状态被释放(S9),从而能够接收和执行下一个命令。
不用说,步骤S5中的判断处理可以取消,以采用一个在步骤S6之后自动继续处理的处理过程。作为该情况(判断是否执行步骤S5的处理)下的处理切换的方法,卡控制器5本身可以具有一个设置切换功能,或者可以为预读命令提供用于进行切换的控制信息。
当从主计算机提供了访问命令时,检查预读数据管理表的有效标记33。结果,仅搜索设置了有效标记33的预读数据管理表,以获得要使用的预读数据的位置。
图6图示了前述主机指定的地址获取处理(S2)的一个实施例。图中所示的处理是在下述情况下的响应处理预读数据是由主计算机6提供的预读命令用文件名指定的。从预读命令获得保存预读数据的文件名(S21)。下一步,读快闪存储器2的主引导记录区(MBR)的分区ID,以识别要使用的文件系统(S22)。判断是否能识别要使用的文件系统(S23)。如果能够识别,则用快闪存储器2上的FAT等分析文件系统,获得保存文件的逻辑地址。即使文件是碎片化的,也以同样的方式获取保存文件的逻辑地址。在确认相关数据存在于文件系统上之后(S25的“是”),计算快闪存储器的存储地址。在快闪存储器2的逻辑地址和物理地址之间的关联可变的系统中,通过访问地址转换表来计算快闪存储器2的物理地址,该地址转换表定义逻辑地址和物理地址之间的关系,被保存在快闪存储器2的预定区域中。
用户不能在文件系统上管理逻辑地址。因此,用文件名指定使得用户能够管理预读数据。
当文件碎片化时,由于预读数据管理表具有图3所示的结构,需要为每一个碎片部分创建一个预读数据管理表,在碎片部分中,逻辑地址是邻接的。即使同一个数据文件存在多个预读数据管理表,在响应访问命令的过程中也不会导致对搜索处理的干扰,因为每一个预读数据管理表在其文件名区35中具有一个文件名。
由于可能在快闪存储器2上存在多个相同的文件名,要保存在预读数据管理表中的文件名最好也包含绝对路径名。或者,由于在文件系统中即使相同的文件名也具有不同的逻辑地址,要保存在预读数据管理表中的文件名可以包含一个逻辑地址。
图7图示了缓冲存储器4没有存储预读数据的未使用区域时的处理模式(预读数据更新模式)。
缓冲存储器4没有存储预读数据的未使用区域时的处理模式包括允许盖写已经保存有预读数据的区域,禁止盖写已经保存有预读数据的区域。
采用盖写禁止模式可以确保被频繁访问的预读数据的有效使用。当采用盖写禁止模式时,如果没有未使用区域,则向预读命令发出者返回一个出错响应,以警告用户。盖写允许模式的采用可以允许动态交换预读数据。
盖写允许模式包括完全允许盖写已保存有预读数据的区域,或者部分允许盖写被访问得不频繁的区域。在完全允许盖写的情况下,卡控制器5允许按照FIFO(先进先出)的顺序相继盖写预读数据保存区13中的预读数据较旧的数据较早被盖写。
在基于访问频率部分允许盖写的情况下,可以基于预读数据管理表的访问计数区34的值判断一个给定区域是否是不被频繁访问的区域。例如,如果将访问计数值1作为判断标准,则搜索访问计数值为1的预读数据管理表,如果被找到,则可以使用在该预读数据管理表中使用的缓冲存储器地址。同样,可以使用搜索任意数据的预读数据管理表得到的具有最小访问计数值的预读数据管理表中管理的缓冲存储器地址。
前述部分允许方便地满足了预读数据的动态互换性以及被频繁访问的预读数据的可用性。
可以以控制数据或者模式信号的形式在卡控制器5中设置前述预读数据更新模式。或者,在每一次,一个预读命令可以指定一种预读数据更新模式。
<读命令响应处理>
图8图示了读命令响应处理的控制流程。收到主计算机6发出的读命令后(S30),卡控制器5判断该读命令中指定的逻辑地址相对应的预读数据管理表是否存在(S31)。如果对于所有指定的逻辑地址都不存在预读数据管理表,卡控制器就计算对应于一个用于读出的逻辑地址的快闪存储器物理扇区地址(S32)。然后,卡控制器5从该物理扇区地址读出数据,将其传送到缓冲存储器的读出数据保存区(S33),并将传送到该读出数据保存区的数据输出到主计算机6(S34)。
在步骤S31,当判断出对于指定的逻辑地址存在预读数据管理表时,判断是否所有的数据都已被预读(S35)。简言之,判断在该读命令中指定的所有逻辑地址是否与预读数据管理表所关联的逻辑地址匹配。如果判断出部分预读数据不存在,则计算不存在预读数据的逻辑地址对应的快闪存储器物理扇区地址(S36),从所述物理扇区地址读出数据并传送到缓冲存储器4的读出数据保存区(S33)。对于存在部分预读数据的逻辑地址,将相应预读数据管理表的访问计数值增一(S37)。在步骤S33中传送到读出数据保存区的数据和预读数据保存区13中剩余的预读数据被输出到主计算机6(S34)。如果所有的逻辑地址都存在预读数据,则将对应于逻辑地址的预读数据管理表的访问计数值增一(S37),并将预读数据保存区13中相应的预读数据输出到主计算机6(S34)。
在图8的处理中,当预读数据未完成时,在被传输到主计算机6之前,缺少的数据被从快闪存储器2传输到缓冲存储器4。在从快闪存储器2将缺少的数据读到缓冲存储器4之前,可以将预读数据传送到主计算机6。
<写命令响应处理>
图9图示了写命令响应处理的控制流程。收到从主计算机6发出的写命令后(S40),卡控制器5将主计算机6提供的写数据临时存储到写数据保存区10中(S41)。卡存储器5计算写命令中指定的逻辑地址对应的快闪存储器2物理扇区地址(S42)。然后,它向快闪存储器2发出写命令,指导向快闪存储器2的写动作(S43)。与快闪存储器2上的写操作同时,卡控制器5判断是否存在关于写数据的预读数据管理表(S44)。如果写数据中涉及的有效预读数据存在,则由写数据在缓冲存储器4上更新预读数据(S47),更新预读数据管理表的内容(S48)。例如,将访问计数值增一。在步骤S48的处理结束后,或者如果步骤S44的处理的结果是没有相应的预读数据,则卡控制器5等待向快闪存储器的写动作结束。然后,其释放由所述写命令设置的繁忙标记(S46)。这样,处理结束。
当更新预读数据时,缓冲存储器上预读数据保存区中的数据必须与快闪存储器上的数据同时更新。因此,尽管无论何时都需要在写请求期间监视地址,性能也不会受大的影响,因为对缓冲存储器4的更新比向快闪存储器进行存储要快得多。
<保存预读数据管理表>
当正在非易失性存储器比如缓冲存储器4上的工作区12上使用预读数据管理表时,卡存储器5将预读数据管理表按照预定的定时保存到快闪存储器2的数据管理表保存区。所述预定定时指断电时间或者在预定时间段后的命令等待状态。通过保存操作预读数据的预读数据管理表,即使由于断电或者类似事故导致缓冲存储器4上的预读数据丢失,数据随后也能恢复。响应于电源的接通,卡控制器5从快闪存储器2读预读数据管理表,从快闪存储器2将预读数据管理表定位的预读数据传输到缓冲存储器4。
从上面的描述可以看到,通过闪存卡1可以获得下述效果[1]主计算机6能够通过预读命令为闪存卡1指定预读数据。因此,可以灵活地确定要预读的数据,从而最大化通过预读缩短访问时间的效果。闪存卡1的读取性能取决于作为存储介质的快闪存储器2本身的读取性能。这样,收到来自主计算机6的读请求时,通过增加来自缓冲存储器4的预读数据的输出而不是从快闪存储器2读取,可以改善系统性能。
预读命令可以用任何逻辑地址和文件名指定预读数据。例如,预读命令有一个逻辑地址指定字段和文件名指定字段。以主引导记录或者FAT(文件分配表)为代表,由于存在用户容易跟踪逻辑地址的情况,用逻辑地址指定比较好,因为可以直接指定预读数据。
存在闪存卡的用户不能跟踪OS管理的快闪存储器2上的逻辑地址的情况。用户可以方便地利用文件名跟踪数据,从而获得令人满意的对预读的数据的可操作性。
卡控制器5不仅在执行预读命令期间,而且在预先创建预读数据管理表之后的预定时刻,将预读数据传输到缓冲存储器4。从而,卡控制器5能够在预读命令的执行终止后的命令等待状态将预读数据传输到缓冲存储器4。预读处理防止由于预读处理而使读取访问和其他操作延迟,从而导致数据处理效率下降。
预读数据管理表具有用于保存含预读数据的文件名的区域,以及用于保存预读数据的起始逻辑地址、存储预读数据的区域的起始存储器地址以及预读数据的数据计数器的区域。由于预读数据管理表的这种结构,在文件系统中,当一个文件碎片化时,一片文件数据由多个分离的预读数据管理表管理。因此,在读取访问等的响应处理中,可以用文件名搜索相应的预读数据管理表,从而进一步提高缓冲存储器上对所需的预读数据的访问速度。
预读数据管理表具有用于保存主计算机6对预读数据的访问次数的区域34。因此,当缓冲存储器4中没有用于存储预读数据的未使用的区域时,卡控制器5基于保存在预读数据管理表中的访问计数值搜索不被频繁访问的缓冲存储器地址,能够将定位到的缓冲存储器地址的一个区域分配到一个新的用于保存预读数据的区域。这确保了被频繁访问的预读数据的有效使用。
卡控制器5按照预定的定时将预读数据管理表保存到快闪存储器2的预读数据管理表保存区。从而,当预读数据管理表正在缓冲存储器4或者工作RAM26上被使用时,由于保存了操作预读数据的预读数据管理表,即使由于断电等事故而丢失的缓冲存储器上的预读数据也能在以后恢复。
尽管上面结合优选实施例详细描述了本发明,本发明不限于这些实施例。不用说,本发明可以以各种方式加以修改,而不脱离其实质和范围。
例如,文件系统可以是NTFS或者其他文件系统,尽管在上面的描述中使用的是FAT系统。尽管在上面的说明中使用非易失性存储器作为快闪存储器,但也可以使用其他半导体存储器,比如铁电存储器。另外,非易失性存储器可以是记录盘比如硬盘,而不限于半导体存储器。本发明可应用于硬盘驱动器而不限于存储卡比如闪存卡。在这种情况下,存储设备可以固定地置于一个安装系统中,而不限于可移除的设备。
快闪存储器不限于多层栅极结构,可应用分离栅极(split gate)结构,其中,串联形成一个选择MOS晶体管和一个存储MOS晶体管,其间不设置扩散层。同样,类似于氮化硅膜,可以应用这样的存储单元结构其中电荷被局部保存在阱区(trap area)中。半导体非易失性存储器可以在一个存储单元中存储2个比特或者更多的信息,也可以在一个存储单元中存储1比特信息。
本发明也应用于具有控制电路比如卡控制器的存储卡,该卡控制器不包括主接口电路比如IDE,但是是标准化的,将其功能留给主计算机。
取决于文件系统的配置,在预读命令中指定的预读数据逻辑地址可以基本上与非易失性存储器的物理地址匹配。
下面简要说明在本申请中公开的本发明的代表实施例的效果。
可以从存储设备的外部用预读命令指定预读数据。因此,能够灵活地决定要预读的数据,以最大化通过预读缩短访问时间的效果。在来自外部的读请求期间,从缓冲存储器输出要预读的数据比从存储设备读出数据更为频繁。结果,可以提高使用该存储设备的系统的数据处理性能。
权利要求
1.一种存储设备,包括非易失性存储器;比该非易失性存储器具有更高的访问速度的缓冲存储器;以及控制电路(5),其中,所述控制电路建立一个预读数据管理表,该表将外部输入的预读命令指定的预读数据的逻辑地址与存储预读数据的缓冲存储器地址关联起来,该控制电路从非易失性存储器读出所述命令指定的数据,并将其作为预读数据存储到所述缓冲存储器中,当外部输入的读命令指定的逻辑地址与所述预读数据管理表所关联的逻辑地址匹配时,控制电路从所述缓冲存储器输出相应的预读数据。
2.如权利要求1所述的存储设备,其中,所述预读命令用逻辑地址指定预读数据。
3.如权利要求1所述的存储设备,其中,所述预读命令用文件名指定预读数据。
4.如权利要求1所述的存储设备,其中,所述控制电路在执行预读命令期间将预读数据传输到缓冲存储器。
5.如权利要求1所述的存储设备,其中,所述控制电路在将预读数据传输到缓冲存储器之前创建预读数据管理表。
6.如权利要求5所述的存储设备,其中,在预读命令的执行终止后的命令等待状态中,所述控制电路将预读数据传输到缓冲存储器。
7.如权利要求1所述的存储设备,其中,所述预读数据管理表包括用于存储预读数据起始逻辑地址、存储预读数据的区域的起始存储器地址以及预读数据的数据计数值的区域。
8.如权利要求6所述的存储设备,其中,所述预读数据管理表包括一个用于保存指示相应预读数据有效性的标记的区域。
9.如权利要求3所述的存储设备,其中,所述预读数据管理表包括一个用于保存含预读数据的文件名的区域。
10.如权利要求1所述的存储设备,其中,所述预读数据管理表包括一个用于保存预读数据的访问计数值的区域。
11.如权利要求10所述的存储设备,其中,当缓冲存储器中不存在用于存储预读数据的未使用的区域时,所述控制电路基于保存在所述预读数据管理表中的访问计数值搜索一个不被频繁访问的缓冲存储器,并将所定位到的缓冲存储器地址的一个区域分配到一个用于存储预读数据的新区域。
12.如权利要求1所述的存储设备,其中,所述控制电路按照预定的定时将预读数据管理表保存到所述非易失性存储器的预读数据管理表保存区中。
13.如权利要求12所述的存储设备,其中,响应于电源的接通,所述控制电路从所述非易失性存储器读出一个预读数据管理表,并将该预读数据管理表所定位的预读数据从所述非易失性存储器传输到所述缓冲存储器。
14.一种存储设备,包括非易失性存储器;比该非易失性存储器具有更高的访问速度的缓冲存储器;以及控制电路,其中,响应于从外部输入的读命令,所述控制电路查阅将预读数据的逻辑地址与用于存储预读数据的缓冲存储器地址关联起来的可重写预读数据管理表,判断缓冲存储器是否保存有该命令所指定的数据,如果缓冲存储器保存有所述数据,就将从缓冲存储器读出的数据输出到外部,否则将从非易失性存储器读出的数据输出到外部。
15.如权利要求14所述的存储设备,其中,所述控制电路响应于电源的接通而从非易失性存储器读出预读数据管理表,并从非易失性存储器将该预读数据管理表定位的预读数据传输给缓冲存储器。
16.一种存储设备,包括非易失性存储器;比该非易失性存储器具有更高的访问速度的缓冲存储器;以及控制电路,其中,响应于从外部输入的预读命令,该控制电路建立将该命令指定的预读数据的逻辑地址与用于存储预读数据的缓冲存储器地址关联起来的预读数据管理表,从非易失性存储器读出该命令指定的数据,将其存储到所述缓冲存储器中作为预读数据,从而存储在该缓冲存储器中的预读数据能够被输出到外部。
17.如权利要求16所述的存储设备,其中当缓冲存储器中没有用于存储预读数据的未使用区域时,所述控制电路允许在下面两种情况之间作出选择允许和禁止盖写已经保存了预读数据的区域。
18.如权利要求17所述的存储设备,其中,前述的允许盖写是完全允许盖写已经保存了预读数据的区域,或者是部分允许盖写不被频繁访问的区域。
19.如权利要求16所述的存储设备,其中,响应于从外部输入的读命令,所述控制电路查阅所述预读数据管理表以判断所述缓冲存储器是否保存有该命令指定的数据,如果缓冲存储器保存有该数据,控制电路就将从缓冲存储器读出的数据输出到外部,否则控制电路将从非易失性存储器读出的数据输出到外部。
20.如权利要求16或19所述的存储设备,其中,响应于从外部输入的写命令,控制电路查阅所述预读数据管理表,以判断缓冲存储器是否保存有该命令指定的写地址的数据,如果缓冲存储器保存有该数据,控制电路就用写数据连同所述非易失性存储器的数据更新缓冲存储器的数据,否则其用写数据更新非易失性存储器的数据。
全文摘要
本申请公开了一种存储设备,其能够灵活地确定要预读的数据。该存储设备包括非易失性存储器;比该非易失性存储器具有更高的访问速度的缓冲存储器;以及控制电路。所述控制电路建立一个预读数据管理表,该表将外部输入的预读命令指定的预读数据的逻辑地址与存储预读数据的缓冲存储器地址关联起来,该控制电路从非易失性存储器读出所述命令指定的数据,并将其作为预读数据存储到所述缓冲存储器中。当外部输入的读命令指定的逻辑地址与所述预读数据管理表所关联的逻辑地址匹配时,控制电路从所述缓冲存储器输出相应的预读数据。
文档编号G11B20/14GK1538284SQ20041003482
公开日2004年10月20日 申请日期2004年4月14日 优先权日2003年4月14日
发明者原郁夫, 盐田茂雅, 后藤启之, 涩谷洋文, 之, 文, 雅 申请人:株式会社瑞萨科技
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1