CN101866320A - 数据管理方法及使用此方法的闪存储存系统与控制器 - Google Patents
数据管理方法及使用此方法的闪存储存系统与控制器 Download PDFInfo
- Publication number
- CN101866320A CN101866320A CN200910133951A CN200910133951A CN101866320A CN 101866320 A CN101866320 A CN 101866320A CN 200910133951 A CN200910133951 A CN 200910133951A CN 200910133951 A CN200910133951 A CN 200910133951A CN 101866320 A CN101866320 A CN 101866320A
- Authority
- CN
- China
- Prior art keywords
- data
- flash memory
- write
- logical block
- write data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种数据管理方法,适用于具有高速缓存的闪存储存系统。此数据管理方法包括当执行写入指令时先将写入数据暂存于高速缓存中,并且确认目前暂存高速缓存中所有写入数据的状态,其中倘若所确认的状态显示在闪存中写入目前暂存在高速缓存中的所有写入数据所需的写入时间会超过一处理时间上限值时,则将暂存于高速缓存中的一部份写入数据先写入至闪存中。因此,根据本发明的数据管理方法能够有效地避免当主机系统下达清空高速缓存的指令时所产生的逾时问题。
Description
技术领域
本发明涉及一种用于闪存储存系统的数据管理方法,尤其涉及一种适用于具有高速缓存的闪存储存系统的数据管理方法,及使用此方法来管理数据的储存系统与闪存控制器,其能够有效地缩短清空(flush)高速缓存中暂存数据的时间。
背景技术
数码相机、手机与MP3在这几年来的成长十分迅速,使得消费者对数位内容的储存需求也急速增加。由于闪存(Flash Memory)具有数据非挥发性、省电、体积小与无机械结构等的特性,适合使用者随身携带作为数字档案传递与交换的储存媒体。固态硬盘(Solid State Drive,SSD)就是以闪存作为储存媒体的一个例子,并且已广泛使用于电脑主机系统中作为主硬盘。
在闪存储存系统的设计上,一般来说,闪存储存系统的实体区块会分组为多个实体单元并且这些实体单元会分组为数据区(data area)与备用区(spare area)。归类为数据区的实体单元中会储存由写入指令所写入的有效数据,而备用区中的实体单元是用以在执行写入指令时替换数据区中的实体单元。具体来说,当闪存储存系统接受到主机的写入指令而欲对数据区的实体单元进行写入时,闪存储存系统会从备用区中提取一实体单元并且将在数据区中欲写入的实体单元中的有效旧数据与欲写入的新数据写入至从备用区中提取的实体单元,并且将已写入新数据的实体单元关联为数据区,并且将原本数据区的实体单元进行抹除并关联为备用区。为了能让主机能够顺利地存取以轮替方式储存数据的实体单元,闪存储存系统会提供逻辑单元给主机。也就是说,闪存储存系统会利用在逻辑地址-实体地址映射表(logical address-physical address mapping table)中记录与更新逻辑单元和数据区的实体单元之间的对映关系来反映实体单元的轮替,所以主机仅需要针对所提供逻辑单元进行写入,而闪存储存系统会依据逻辑地址-实体地址映射表对所对映的实体单元进行读取或写入数据。
然而,相较于电脑主机系统的运作(例如,数据传输),闪存储存装置执行上述实体单元轮替以写入数据的所需时间相对较长,因此为了提升闪存储存装置的效率,一般来说闪存储存装置内会配置高速缓存以缩短其完成相关指令的时间。
例如,在闪存储存装置需花费相对多的时间才能完成电脑主机系统的写入指令下,当电脑主机系统下达写入指令时,闪存储存系统会将欲写入的数据暂存于高速缓存中并回复电脑主机系统已完成写入指令。之后,当高速缓存已存满数据时,闪存储存装置才会将数据写入至其闪存中。
然而,在使用高速缓存加入存取的闪存储存装置的架构中,倘若高速缓存暂存相当大的数据或者所暂存的数据是需写入至多个不同的逻辑单元时,当电脑主机系统下达清空(flush)高速缓存的指令时,闪存储存系统会需要很长的时间方能将暂存高速缓存中的数据写入至实体单元中,因此会造成严重延迟电脑主机系统的运作。
发明内容
本发明的一个目的是提供一种数据管理方法,适用于使用高速缓存的闪存储存系统,其能够有效地避免当主机系统下达清空高速缓存的指令时所产生的逾时。
本发明的另一目的是提供一种闪存控制器,适用于控制具高速缓存的闪存储存系统,其能够有效地避免当主机系统下达清空高速缓存的指令时所产生的逾时。
本发明的又一目的是提供一种具有高速缓存的闪存储存系统,其能够有效地避免当主机系统下达清空高速缓存的指令时所产生的逾时。
为实现上述第一个目的,本发明提出一种数据管理方法,适用于一闪存储存系统,其中此闪存储存系统包括高速缓存与闪存,并且此闪存具有多个实体区块。此数据管理方法包括:在高速缓存中暂存来自于一主机系统的多个写入数据;判断在闪存中写入上述写入数据的时间是否大于一处理时间上限值;以及当在闪存中写入上述写入数据的时间大于处理时间上限值时,则将暂存于高速缓存中的写入数据的至少一部份写入至闪存中。
为实现上述另一目的,本发明提出一种闪存控制器,适用于控制一闪存储存系统,其中闪存储存系统包括一高速缓存与一闪存,并且闪存具有多个实体区块。闪存控制器包括微处理器单元、一主机系统的主机接口单元、闪存接口单元以及内存管理单元。主机接口单元、闪存接口单元与内存管理单元分别连接至微处理器单元。内存管理单元会在高速缓存中暂存来自于主机系统的多个写入数据。再者,内存管理单元会判断在闪存中写入上述写入数据的时间是否大于一处理时间上限值,并且当在闪存中写入上述写入数据的时间大于处理时间上限值时,则内存管理单元会将暂存于高速缓存中的写入数据的至少一部份写入至闪存中。
为实现上述又一目的,本发明提出一种闪存储存系统,包括高速缓存、具有多个实体区块的闪存以及闪存控制器。闪存控制器是连接至高速缓存与闪存,并且闪存控制器会在高速缓存中暂存来自于一主机系统的多个写入数据。再者,闪存控制器会判断在闪存中写入上述写入数据的时间是否大于一处理时间上限值,其中当在闪存中写入上述写入数据的时间大于处理时间上限值时,则闪存控制器会将暂存于高速缓存中的写入数据的至少一部份写入至闪存中。
基于上述,本发明能够有效地管理在高速缓存中的数据,由此避免当主机系统下达清空指令时所产生的逾时。
为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合附图作详细说明如下。
附图说明
图1是本发明第一实施例的闪存储存系统的结构示意图;
图2是图1的闪存晶片的结构示意图;
图3A~3C是本发明第一实施例的闪存晶片的运作示意图;
图4是本发明第一实施例的数据管理方法400的流程图;
图5是本发明第二实施例的数据管理方法500的流程图;
图6是本发明第三实施例的数据管理方法600的流程图;
图7是本发明第四实施例的闪存储存系统的结构示意图;
图8是本发明第四实施例的闪存晶片的示意图;
图9是本发明第四实施例的数据管理方法900的流程图。
附图标记说明:
100、700-闪存储存系统;
110、710-闪存控制器;
110a-微处理器单元;
110b、110b’-内存管理单元;
110c-闪存接口;
110d-主机接口单元;
120、720-高速缓存;
130、730-闪存晶片;
200-主机系统;
210、220、230、240-闪存模组;
310-(0)、310-(1)、310-(P)、310-(P+1)、310-(P+2)、310-(N)-实体单元;
320、820-储存区;
330、830-取代区;
302-系统区;
304-数据区;
306-备用区;
350-1~350-M-逻辑单元;
840-闪存暂存区;
400、500、600、900-数据管理程序;
S401、S403、S405、S407、S409-数据管理步骤;
S501、S503、S505、S507、S509-数据管理步骤;
S601、S603、S605、S607、S609、S611-数据管理步骤;
S901、S903、S905、S907、S909、S911-数据管理步骤。
具体实施方式
本发明所提出的数据管理方法是在主机系统写入数据至高速缓存之前、或写入数据至高速缓存之后或者以定期或不定期方式来侦测高速缓存内所储存的写入数据的状态,并且判断在闪存储存系统的实体单元中写入所有暂存的写入数据所需的时间是否会超过一处理时间上限值。此外,当判断写入所有暂存的写入数据所需的时间会超过此处理时间上限值时,则将暂存于高速缓存中的部分写入数据先写入至实体单元中。
在此,处理时间上限值是由使用者所设定的预期值,其表示使用者能容许系统处于忙碌状态而无法回应其他指令的时间。在以下实施例中,此处理时间上限值是设定为800毫秒(millisecond)。基此,根据本发明的数据管理方法能够在具有高速缓存的闪存储存系统中当主机系统下达清空(flush)高速缓存内大量或分散的数据时所发生上述时间延迟的问题。以下将以多个实施例并配合图式详细说明本发明。
第一实施例
图1是本发明第一实施例的闪存储存系统的结构示意图。
请参照图1,通常闪存储存系统100会与主机系统200一起使用,以使主机系统200可将数据写入至闪存储存系统100或从闪存储存系统100中读取数据。在本实施例中,闪存储存系统100为固态硬盘(SolidState Drive,SSD)。但必须了解的是,在本发明另一实施例中闪存储存系统100也可以是记忆卡或随身碟。
闪存储存系统100包括闪存控制器110、高速缓存120与闪存晶片130。
闪存控制器110会执行以硬体型式或韧体型式实现的多个逻辑开关或控制指令,并且根据主机系统200的指令在闪存晶片130中进行数据的写入、读取与抹除等运作。闪存控制器110包括微处理器单元110a、内存管理单元110b、闪存接口单元110c与主机接口单元110d。
微处理器单元110a用以控制闪存控制器110的整体运作。具体来说,微处理器单元110a是与内存管理单元110b、闪存接口单元110c与主机接口单元110d等一起运作以进行闪存储存系统100的写入、读取、抹除等运作。
内存管理单元110b是连接至微处理器单元110a,并且用以执行根据本实施例的区块管理机制与数据管理与写入机制。
在本实施例中,内存管理单元110b是以一韧体型式设置在闪存控制器110中。例如,将包括多个控制指令烧录至一程序内存(例如,只读存储器(Read Only Memory,ROM))中,并且将此程序内存嵌入在闪存控制器110中以实现内存管理单元110b,其中当闪存储存系统100启动时,内存管理单元110b的多个机器指令会由微处理器单元110a来执行以完成本发明实施例的区块管理机制与数据写入机制。
在本发明另一实施例中,内存管理单元110b的控制指令亦可以软体型式储存于闪存晶片130的特定区域(例如,闪存中专用于存放系统数据的系统区)中。同样的,当闪存储存系统100启动时,内存管理单元110b的控制指令会由微处理器单元110a来执行。此外,在本发明另一实施例中,内存管理单元110b亦可以一硬体型式实现在闪存控制器110中。
闪存接口单元110c是连接至微处理器单元110a并且用以存取闪存晶片130。也就是说,欲写入至闪存晶片130的数据会经由闪存接口单元110c转换为闪存晶片130所能接受的格式。
主机接口单元110d是连接至微处理器单元110a并且用以接收与识别主机系统200所传送的指令。也就是说,主机系统200所传送的指令与数据会通过主机接口单元110d来传送至微处理器单元110a。在本实施例中,主机接口单元110d为SATA接口。然而,必须了解的是本发明不限于此,主机接口单元110d亦可以是USB接口、IEEE 1394接口、PCIExpress接口、MS接口、MMC接口、SD接口、CF接口、IDE接口或其他适合的数据传输接口。
此外,虽本实施例的附图中没有示出,但闪存控制器110还包括缓存、错误校正单元与电源管理单元等用于控制闪存的一般功能模组。
高速缓存120是连接至闪存控制器110并且用以暂存主机系统200所存取的数据。在此实施例中,高速缓存120为动态随机存储器(Dynamic Random Access memory,DRAM)。然而,必须了解的是,本发明不限于此,磁阻式存储器(Magnetoresistive Random Access Memory,MRAM)、相变化存储器(Phase Change Random Access Memory,PRAM)、单层记忆胞(Single Level Cell,SLC)NAND闪存或其他适合的存储器亦可应用于本发明。特别是,高速缓存120亦可以是闪存晶片130中的部分储存空间或者在闪存控制器中配置一存储器。
闪存晶片130是连接至闪存控制器110并且用以储存数据。在本实施中,闪存晶片130为多层记忆胞(Multi Level Cell,MLC)NAND闪存。然而,必须了解的是,本发明不限于此。在本发明另一实施例中,SLC NAND闪存亦可应用于本发明。
图2是图1的闪存晶片的结构示意图。
在本实施例中,闪存晶片130包括第一闪存模组210、第二闪存模组220、第三闪存模组230与第四闪存模组240,其中第一闪存模组210具有实体区块210-(0)~210-(N);第二闪存模组220具有实体区块220-(0)~220-(N);第三闪存模组230具有实体区块230-(0)~230-(N);以及第四闪存模组240具有实体区块240-(0)~240-(N)。值得一提的是,虽然本发明实施例是以包括4个闪存模组的闪存晶片130来描述,然而本发明不限于此。
在闪存晶片130中实体区块为抹除的最小单位。也就是,每一实体区块含有最小数目之一并被抹除的存取单元。每一实体区块通常会分割为数个页面(page)。由于在本实施例中,闪存晶片130为MLC NAND闪存,因此,页面为程序化(program)的最小单元。换言之,页面为写入数据或读取数据的最小单元。每一页面通常包括使用者数据区D与冗余区R。使用者数据区用以储存使用者的数据,而冗余区用以储存系统的数据(例如,错误检查与校正码(Error Checking and Correcting Code,ECC Code)。在本实施例中,闪存晶片130的每一页面具有8个扇区的容量,一般来说,一个扇区为512字节,因此一个页面为4千字节。
但要特别说明的是,在其他闪存设计中(例如,SLC NAND闪存),最小的程序化单位亦可为一个扇区,也就是说,以一个扇区为程序化的最小单元。此外,第一闪存模组210、第二闪存模组220、第三闪存模组230与第四闪存模组240的实体区块也可被分组为数个区域(zone),以每一独立的区域来管理实体区块210-(0)~210-(N)、实体区块220-(0)~220-(N)、实体区块230-(0)~230-(N)与实体区块240-(0)~240-(N)可增加操作执行的平行程度且简化管理的复杂度。
在本实施例中,闪存控制器110会将第一闪存模组210、第二闪存模组220、第三闪存模组230与第四闪存模组240中的实体区块逻辑地分组为多个实体单元来管理,例如1个实体单元包括4个实体区块。由于以实体单元进行管理时,闪存控制器110是以较大的单位(即实体单元)来维护逻辑地址-实体地址映射表,因此可节省所需使用的缓存的空间。在本发明实施例中,实体区块210-(0)~210-(N)、实体区块220-(0)~220-(N)、实体区块230-(0)~230-(N)与实体区块240-(0)~240-(N)会被逻辑地分组为实体单元310-(0)~310-(N)。必须了解的是,在本实施例中,将实体区块分组为实体单元来管理,可有效地减轻系统资源的负载。然而,本发明不限于此,在本发明另一实施例中,亦可直接以实体区块来进行本实施例的数据管理与写入机制。
图3A~3C是本发明第一实施例的闪存晶片的运作示意图。
必须了解的是,在此描述闪存实体区块的运作时,以“提取”、“搬移”、“交换”、“替换”、“轮替”、“分组”等词来操作闪存晶片130的实体区块是逻辑上的概念。也就是说,闪存的实体区块的实际位置并未改动,而是逻辑上对闪存的实体区块进行操作。值得一提的是,下述的运作是由闪存控制器110的内存管理单元110b所完成。
请参照图3A,内存管理单元110b会将闪存晶片130的实体区块会逻辑地分组为实体单元310-(0)~310-(N),并且会将实体单元310-(0)~310-(N)逻辑地分组为储存区320以及取代区330。
在储存区320中的实体单元310-(0)~310-(P)是闪存储存系统100中正常被使用的实体单元。也就是说,内存管理单元110b会将数据写入至属于储存区320的实体单元。
在取代区330中的实体单元310-(P+1)~310-(N)是替代实体单元。例如,闪存晶片130于出厂时会预留4%的实体区块作为更换使用。也就是说,当储存区320中的实体区块损毁时,预留于取代区330中的实体区块可用以取代损坏的实体区块(即,坏的实体区块(bad block))。因此,倘若取代区330中仍存有可用的实体区块时,若发生实体区块损毁,内存管理模组110b会从取代区330中提取可用的实体区块来更换损毁的实体区块。倘若取代区330中无可用的实体区块且发生实体区块损毁时,闪存储存系统100将会被宣告无法再使用。
请参照图3B,内存管理单元110b会将储存区320的实体区块逻辑地分组成一系统区302、一资料区304与一备用区306。
系统区302包括实体单元310-(0)~实体单元310-(S),资料区304包括实体单元310-(S+1)~实体单元310-(S+M),并且备用区306包括实体单元310-(S+M+1)~实体单元310-(P)。在本实施例中,上述S、M与P为正整数,其代表各区配置的实体区块数量,其可由闪存储存系统的制造商依据所使用的闪存模组的容量而设定。
逻辑上属于系统区302中的实体单元用以记录系统数据,此系统数据包括关于闪存晶片的制造商与型号、每一闪存模组的区域数、每一区域的实体区块数、每一实体区块的页面数等。
逻辑上属于数据区304中的实体单元用以储存使用者的数据,一般来说就是主机系统200所存取的逻辑单元所对映的实体单元。也就是说,数据区304的实体单元为储存有效数据的单元。
逻辑上属于备用区306中的实体单元是用以轮替数据区304中的实体单元,因此在备用区306中的实体单元为空或可使用的单元,即无记录数据或标记为已没用的无效数据。也就是说,数据区304与备用区306的实体单元会以轮替方式来储存主机系统200对闪存储存系统100写入的数据。
如前所述,闪存晶片130的实体单元会以轮替方式提供主机系统200来储存资料,因此内存管理单元110b会提供逻辑单元350-1~350-M给主机系统200以进行数据存取,并且通过维护逻辑地址-实体地址映射表(logical address-physical address mapping table)来记录逻辑单元所对映的实体单元。
请同时参照图3B与图3C,例如,当主机系统欲写入数据至逻辑单元350-1时,内存管理单元110b会透过逻辑地址-实体地址映射表得知逻辑单元350-1目前是对映逻辑上属于数据区304的实体单元310-(S+1)。因此,内存管理单元110b会对实体单元310-(S+1)中的数据进行更新,期间,闪存控制器110会从备用区306中提取实体单元310-(S+M+1)来轮替数据区304的实体单元310-(S+1)。然而,当内存管理单元110b将新数据写入至实体单元310-(S+M+1)的同时,内存管理单元110b不会立刻将实体单元310-(S+1)中的所有有效数据搬移至实体单元310-(S+M+1)而抹除实体单元310-(S+1)。具体来说,内存管理单元110b会将实体单元310-(S+1)中欲写入页面的前的有效数据(即,页P0与P1)复制至实体单元310-(S+M+1)(如图3C的(a)),并且将新数据(即,实体单元310-(S+M+1)的页P2与P3)写入至实体单元310-(S+M+1)(如图3C的(b))。此时,内存管理单元110b即完成写入的动作。因为实体单元310-(S+1)中的有效数据有可能在下个操作(例如,写入指令)中变成无效,因此立刻将实体单元310-(S+1)中的所有有效数据搬移至替换实体单元310-(S+M+1)可能会造成无谓的搬移。在此案例中,实体单元310-(S+1)与实体单元310-(S+M+1)的内容整合起来才是所对映逻辑单元350-1的完整内容。此母子关系(即,实体单元310-(S+1)与实体单元310-(S+M+1))的暂态关系可依据闪存控制器110中缓冲存储器110d的大小而定,而暂时地维持此种暂态关系的动作一般称为开启(open)母子单元。特别是,在此开启母子单元的状态下,所处理的逻辑单元是对映多个实体单元。
之后,当需要将实体单元310-(S+1)与实体单元310-(S+M+1)的内容真正合并时,内存管理单元110b才会将实体单元310-(S+1)与实体单元310-(S+M+1)整并为一个实体单元,由此提升区块的使用效率,此合并的动作又可称为关闭(close)母子单元。例如,如图3C的(c)所示,当进行关闭母子单元时,内存管理单元110b会将实体单元310-(S+1)中剩余的有效数据(即,页P4~PN)复制至替换实体单元310-(S+M+1),然后将实体单元310-(S+1)抹除并关联为备用区306,同时,将实体单元310-(S+M+1)关联为数据区304,并且在逻辑地址-实体地址映射表中将逻辑单元350-1的对映更改为实体单元310-(S+M+1),由此完成关闭母子单元的动作。特别是,在完成关闭母子单元的状态下,所处理的逻辑单元是对映一个实体单元。
在本实施例的闪存储存系统100中,当主机系统200欲写入数据至闪存储存系统100时,闪存控制器110的内存管理单元110b会从主机系统200中接收一写入指令与一写入数据,其中此写入指令会包含欲储存此写入数据的逻辑地址。之后,闪存控制器110的内存管理单元110b会将此逻辑地址转换为对映的逻辑单元,以及将写入数据暂存在高速缓存120中同时记录欲储存此写入数据的逻辑单元。期间,闪存储存系统100可反复地从主机系统200中接收主机系统200欲写入的数据并以相同于上述的方式处理(即,暂存于高速缓存120中)。然后,在主机系统200下达清空指令或者一适当时机时,内存管理单元110b会将暂存于高速缓存120中的写入数据写入至闪存晶片130的储存区320(如图3A~3C所示)中。
值得一提的是,在本实施例中,每当主机系统200下达写入指令且欲储存的写入数据被暂存于高速缓存120后,内存管理单元110b会计算目前暂存于高速缓存120中的写入数据的数据量,并且判断目前暂存于高速缓存120中的写入数据的数据量是否大于一数据量门限值。在此,数据量门限值是由使用者依据系统可允许的延迟时间自行设定。特别是,数据量门限值是根据上述处理时间上限值来设定。
例如,在本实施例中,当暂存于高速缓存120中的写入数据的数据量达到高速缓存120的容量的三分之二时,闪存储存系统100将需要超过上述处理时间上限值的时间才能将所暂存的写入数据写入至闪存晶片130中,因此,数据量门限值是设定为高速缓存120的容量的三分之二。
也就是说,当目前暂存于高速缓存120中的数据量大于此数据量门限值时,则判定当主机系统200执行清空指令时在闪存晶片130中写入高速缓存120中所有暂存的写入数据的时间会大于上述处理时间上限值。因此,在目前暂存于高速缓存120中写入数据的数据量大于此数据量门限值的情况下,内存管理单元110b会将暂存于高速缓存120中的部分写入数据先行写入至储存区320中。具体来说,内存管理单元110b会依据欲储存此些部分写入数据的逻辑单元来将此些部分写入数据写入至对映实体单元(如图3A~3C所示)中。在本实施例中,内存管理单元110b会将在高速缓存120中属于同一个逻辑单元的写入数据写入至对映的实体单元中。然而,本发明不限于此,在本发明另一实施例中,内存管理单元110b亦可将属于数个逻辑单元的写入数据写入至对映的实体单元中。
在本发明另一实施例中,在执行上述将属于同一个逻辑单元的写入数据写入至对映的实体单元中的动作时,内存管理单元110b会判断在高速缓存120中属于同一个逻辑单元的写入数据的数据量占整个逻辑单元的容量的比例是否大于一比例门限值,其中此比例门限值可由使用者自行设定。例如,在此,此比例门限值是设定为50%。具体来说,内存管理单元110b会判断在高速缓存120暂存多少此逻辑单元的数据,其中若此逻辑单元的数据量已超过一定比例时,内存管理单元110b会将此逻辑单元原始所对映的实体单元内的旧有效数据复制到高速缓存120中,并且将原先暂存于高速缓存120中的写入数据与所复制的旧有效数据整合后再一起写入至从备用区306中提取的实体单元中。
图4是本发明第一实施例的数据管理方法400的流程图。
请参照图4,当闪存储存系统100开机后,在步骤S401中,闪存储存系统100会被初始化。具体来说,在步骤S401中闪存控制器110的内存管理单元110b会载入闪存晶片130的相关管理信息(如图2、图3A、图3B与图3C所描述的结构与运作状态的相关信息)。
在步骤S403中,闪存控制器110会待命并从主机系统200中接收写入指令与写入数据。接着,在步骤S405中闪存控制器110会将所接收的写入数据暂存于高速缓存120中。之后,在步骤S407中闪存控制器110会判断高速缓存120中所暂存的写入数据的数据量是否大于数据量门限值。倘若高速缓存120中所暂存的写入数据的数据量大于数据量门限值时,则在步骤S409中闪存控制器110会将属于同一个逻辑单元的写入数据写入至对映的实体单元中。然后,数据管理程序400会返回步骤S403中待命。
第二实施例
第二实施例相对于第一实施例是以目前高速缓存中暂存的数据量来判断在实体单元中写入所有暂存的写入数据所需的时间是否会超过上述处理时间上限值,第二实施例的闪存储存系统是依据暂存于高速缓存内的写入数据的分散程度来判断在实体单元中写入所有暂存的写入数据所需的时间是否会超过上述处理时间上限值。在此,第二实施例与第一实施例的硬体结构示意图是类似的,以下将使用图1、图2、图3A和3C来进行第二实施例的说明。
类似第一实施例的运作,在本实施例中,当主机系统200欲写入数据至闪存储存系统100时,内存管理单元110b会从主机系统200中接收一写入指令与一写入数据,其中此写入指令会包含欲储存此写入数据的逻辑地址。之后,内存管理单元110b会将此逻辑地址转换为对映的逻辑单元,以及将写入数据暂存在高速缓存120中同时记录欲储存此写入数据的逻辑单元。期间,闪存储存系统100可反复地从主机系统200中接收主机系统200欲写入的数据并以相同于上述的方式处理(即,暂存于高速缓存120中)。然后,在主机系统200下达清空指令或者一适当时机时,内存管理单元110b会将暂存于高速缓存120中的写入数据写入至闪存晶片130的储存区320(如图3A~3C所示的运作)中。
此外,在本实施例中,每当主机系统200下达写入指令且欲储存的写入数据被暂存于高速缓存120后,内存管理单元110b会判断目前暂存于高速缓存120中的所有写入数据所对应的逻辑单元的数目是否大于一数据分散门限值。具体来说,内存管理单元110b可依据主机系统200所下达的写入指令得知主机系统200欲在哪些逻辑单元中写入这些写入数据,由此内存管理单元110b可计算出需对几个逻辑单元执行上述开启母子单元与关闭母子单元的动作(如图3A~3C所示的运作),进而判断当主机系统200对闪存储存系统100下达清空指令时闪存储存系统100是否能在上述处理时间上限值内将暂存于高速缓存120中的所有写入数据写入至闪存晶片130的储存区320中。在此,数据分散门限值是由使用者依据系统可允许的延迟时间自行设定。特别是,数据分散门限值是根据上述处理时间上限值来设定。
例如,在本实施例中,当目前暂存于高速缓存120中的写入数据是对应100个逻辑单元时,则闪存储存系统100将需要超过上述处理时间上限值的时间才能将所暂存的写入数据写入至100个逻辑单元所对映的实体单元中,因此,数据分散门限值是设定为100。
也就是说,当目前暂存于高速缓存120中的写入数据所对应的逻辑单元的数目大于此数据分散门限值时,则内存管理单元110b会判定当主机系统200执行清空指令时将高速缓存120中所有暂存的写入数据写入至闪存晶片130的时间会大于上述处理时间上限值。因此,在目前暂存于高速缓存120中的写入数据所对应的逻辑单元的数目大于此数据分散门限值的情况下,内存管理单元110b会将暂存于高速缓存120中的部分写入数据先行写入至储存区320中。具体来说,内存管理单元110b会依据欲储存此些部分写入数据的逻辑单元来将此些部分写入数据写入至对映实体单元(如图3A-3C所示)中。相同于上述第一范例实施例,内存管理单元110b会将在高速缓存120中属于同一个逻辑单元的写入数据写入至对映的实体单元中。
图5是根据本发明第二实施例的数据管理方法500的流程图。
请参照图5,当闪存储存系统100开机后,在步骤S501中,闪存储存系统100会被初始化。
之后,在步骤S503中,闪存控制器110会待命并从主机系统200中接收写入指令与写入数据。接着,在步骤S505中闪存控制器110会将所接收的写入数据暂存于高速缓存120中。并且,在步骤S507中闪存控制器110会判断高速缓存120中所暂存的所有写入数据所对应的逻辑单元的数目是否大于数据分散门限值。倘若高速缓存120中所暂存的所有写入数据所对应的逻辑单元的数目大于数据分散门限值时,则在步骤S509中闪存控制器110会将属于同一个逻辑单元的写入数据写入至对映的实体单元中。然后,数据管理程序500会返回步骤S503中待命。
第三实施例
第三实施例与第一实施例的不同之处在于根据第三实施例的闪存储存系统是依据闪存晶片的状态来判断在实体单元中写入所有暂存的写入数据所需的时间是否会超过上述处理时间上限值。在此,第三实施例与第一实施例的硬体结构图是类似的,以下将以图1、图2、图3A~3C来进行第三实施例的说明。
类似第一实施例的运作,在本实施例中,当主机系统200欲写入数据至闪存储存系统100时,内存管理单元110b会从主机系统200中接收一写入指令与一写入数据,其中此写入指令会包含欲储存此写入数据的逻辑位址。之后,内存管理单元110b会将此逻辑位址转换为对应的逻辑单元,以及将写入数据暂存在高速缓存120中同时记录欲储存此写入数据的逻辑单元。期间,闪存储存系统100可反复地从主机系统200中接收主机系统200欲写入的数据并以相同于上述的方式处理(即,暂存于高速缓存120中)。然后,在主机系统200下达清空指令或者一适当时机时,内存管理单元110b会将暂存于高速缓存120中的写入数据写入至闪存晶片130的储存区320(如图3A-3C所示的运作)中。
此外,在本实施例中,每当主机系统200下达写入指令且欲储存的写入数据被暂存于高速缓存120后,内存管理单元110b会依据目前暂存于高速缓存120中的写入数据所对应的逻辑单元的数目以及备用区306中可用的实体单元的数目来计算一单元处理数,并且比较所计算的单元处理数与一单元处理数上限来判断在实体单元中写入目前暂存于高速缓存120中的写入数据所需的时间是否会超过上述处理时间上限值。
具体来说,当闪存控制器110的内存管理单元110b欲对一逻辑单元所对映的实体单元执行写入动作时,如图3A与3B所示,内存管理单元110b需从备用区306中提取另一实体单元以进行开启母子单元的动作,其中若备用区306中无可用的实体单元(即,备用区306中的实体单元皆已被用作为对应其他实体单元的子实体单元)时,则内存管理单元110b必须关闭其他的母子单元(如3B所示)以使得备用区306中有可用的实体单元来执行写入动作。由于写入的延迟主要是发生在执行关闭母子单元程序而执行开启母子单元程序的所需时间很短,因此在本实施例中是依据暂存于高速缓存120中的写入数据所对应的逻辑单元的数目以及备用区306中可用的实体单元的数目来计算单元处理数(即,需执行关闭母子单元程序的次数),由此判断在实体单元中写入目前暂存于高速缓存120中的写入数据所需的时间是否会超过上述处理时间上限值。在此,单元处理数上限是由使用者自行设定,并且是根据执行关闭母子单元所需的时间以及上述处理时间上限值来设定。
例如,在本实施例中关闭母子单元程序需花费200毫秒,且处理时间上限值为800毫秒,因此单元处理数上限是设定为4。以下以一写入范例来详细说明本实施例的运作。
假设备用区306中可用于开启母子单元的实体单元的数目为5并且内存管理单元110b已使用其中3个实体单元来执行开启母子单元程序以写入逻辑单元0、1与2的写入数据的情况(即,备用区306中有2个可用的实体单元)下,倘若主机系统200下达9个写入指令,其中此些写入指令是分别地指示在逻辑单元3、4、0、5、3、6、7、8与9中写入数据时,内存管理单元110b会在每次执行写入指令时将写入数据暂存于高速缓存120并且判断在实体单元中写入目前暂存于高速缓存120中的写入数据所需的时间是否会超过上述处理时间上限值运作,其判断方式如下:
在执行第1个写入指令的情况下,由于高速缓存120中会存有对应逻辑单元3的写入数据。此时,倘若主机系统200下达清空指令时,对应逻辑单元3的写入数据需执行1个开启母子单元程序来写入。由于备用区306有2个可用的实体单元,因此在单元处理数为0且不大于单元处理数上限的情况下,内存管理单元110b会判定在实体单元中写入目前暂存于高速缓存120中的写入数据所需的时间不会超过上述处理时间上限值。
在执行第2个写入指令的情况下,由于高速缓存120中会存有对应逻辑单元3与4的写入数据。此时,倘若主机系统200下达清空指令时,对应逻辑单元3与4的写入数据需执行2个开启母子单元程序来写入。由于备用区306有2个可用的实体单元,因此在单元处理数为0(即,2减2)且不大于单元处理数上限的情况下,内存管理单元110b会判定在实体单元中写入目前暂存于高速缓存120中的写入数据所需的时间不会超过上述处理时间上限值。
在执行第3个写入指令的情况下,由于高速缓存120中会存有对应逻辑单元3、4与0的写入数据。此时,倘若主机系统200下达清空指令时,由于对应逻辑单元0的开启母子单元程序已被执行,因此对应逻辑单元3、4与0的写入数据需执行2个开启母子单元程序来写入。由于备用区306有2个可用的实体单元,因此在单元处理数为0(即,2减2)且不大于单元处理数上限的情况下,内存管理单元110b会判定在实体单元中写入目前暂存于高速缓存120中的写入数据所需的时间不会超过上述处理时间上限值。
在执行第4个写入指令的情况下,由于高速缓存120中会存有对应逻辑单元3、4、0与5的写入数据。此时,倘若主机系统200下达清空指令时,由于对应逻辑单元0的开启母子单元程序已被执行,因此对应逻辑单元3、4、0与5的写入数据需执行3个开启母子单元程序来写入。由于备用区306有2个可用的实体单元,因此在单元处理数为1(即,3减2)且不大于单元处理数上限的情况下,内存管理单元110b会判定在实体单元中写入目前暂存于高速缓存120中的写入数据所需的时间不会超过上述处理时间上限值。
在执行第5个写入指令的情况下,由于高速缓存120中会存有对应逻辑单元3、4、0与5的写入数据。此时,倘若主机系统200下达清空指令时,由于对应逻辑单元0的开启母子单元程序已被执行,因此对应逻辑单元3、4、0与5的写入数据需执行3个开启母子单元程序来写入。由于备用区306有2个可用的实体单元,因此在单元处理数为1(即,3减2)且不大于单元处理数上限的情况下,内存管理单元110b会判定在实体单元中写入目前暂存于高速缓存120中的写入数据所需的时间不会超过上述处理时间上限值。
在执行第6个写入指令的情况下,由于高速缓存120中会存有对应逻辑单元3、4、0、5与6的写入数据。此时,倘若主机系统200下达清空指令时,由于对应逻辑单元0的开启母子单元程序已被执行,因此对应逻辑单元3、4、0、5与6的写入数据需执行4个开启母子单元程序来写入。由于备用区306有2个可用的实体单元,因此在单元处理数为2(即,4减2)且不大于单元处理数上限的情况下,内存管理单元110b会判定在实体单元中写入目前暂存于高速缓存120中的写入数据所需的时间不会超过上述处理时间上限值。
在执行第7个写入指令的情况下,由于高速缓存120中会存有对应逻辑单元3、4、0、5、6与7的写入数据。此时,倘若主机系统200下达清空指令时,由于对应逻辑单元0的开启母子单元程序已被执行,因此对应逻辑单元3、4、0、5、6与7的写入数据需执行5个开启母子单元程序来写入。由于备用区306有2个可用的实体单元,因此在单元处理数为3(即,5减2)且不大于单元处理数上限的情况下,内存管理单元110b会判定在实体单元中写入目前暂存于高速缓存120中的写入数据所需的时间不会超过上述处理时间上限值。
在执行第8个写入指令的情况下,由于高速缓存120中会存有对应逻辑单元3、4、0、5、6、7与8的写入数据。此时,倘若主机系统200下达清空指令时,由于对应逻辑单元0的开启母子单元程序已被执行,因此对应逻辑单元3、4、0、5、6、7与8的写入数据需执行6个开启母子单元程序来写入。由于备用区306有2个可用的实体单元,因此在单元处理数为4(即,6减2)且不大于单元处理数上限的情况下,内存管理单元110b会判定在实体单元中写入目前暂存于高速缓存120中的写入数据所需的时间不会超过上述处理时间上限值。
在执行第9个写入指令的情况下,由于高速缓存120中会存有对应逻辑单元3、4、0、5、6、7、8与9的写入数据。此时,倘若主机系统200下达清空指令时,由于对应逻辑单元0的开启母子单元程序已被执行,因此对应逻辑单元3、4、0、5、6、7、8与9的写入数据需执行7个开启母子单元程序来写入。由于备用区306有2个可用的实体单元,因此在单元处理数为5(即,7减2)且大于单元处理数上限的情况下,内存管理单元110b会判定在实体单元中写入目前暂存于高速缓存120中的写入数据所需的时间会超过上述处理时间上限值。
在本实施例中,在内存管理单元110b判断所计算出的单元处理数大于所设定的单元处理上限值的情况下(例如,上述执行第9个写入指令的情况下),内存管理单元110b会将暂存于高速缓存120中的部分写入数据先行写入至储存区320中。具体来说,内存管理单元110b会依据欲储存此些部分写入数据的逻辑单元来将此些部分写入数据写入至对映实体单元(如图3A-3C所示)中。相同于上述第一范例实施例,内存管理单元110b会将在高速缓存120中属于同一个逻辑单元的写入数据写入至对映的实体单元中。
图6是本发明第三实施例的数据管理方法600的流程图。
请参照图6,当闪存储存系统100开机后,在步骤S601中,闪存储存系统100会被初始化。
之后,在步骤S603中,闪存控制器110的内存管理单元110b会待命并从主机系统200中接收写入指令与写入数据。接着,在步骤S605中内存管理单元110b会将所接收的写入数据暂存于高速缓存120中。并且,在步骤S607中内存管理单元110b会依据目前暂存于高速缓存120中的写入数据所对应的逻辑单元的数目以及备用区306中可用的实体单元的数目来计算一单元处理数。然后,在步骤S609中内存管理单元110b会判断所计算的单元处理数是否大于单元处理数上限值,其中倘若所计算的单元处理数大于单元处理数上限值时,则在步骤S611中会将属于同一个逻辑单元的写入数据写入至对映的实体单元中。然后,数据管理程序600会返回步骤S603中待命。
第四实施例
图7是本发明第四实施例的闪存储存系统的结构示意图。
请参照图7,闪存储存系统700包括闪存控制器710、高速缓存720与闪存晶片730。
闪存控制器710包括微处理器单元110a、内存管理单元110b’、闪存介面单元110c与主机介面单元110d。微处理器单元110a、闪存介面单元110c与主机介面单元110d的结构与功能已描述如上,在此不重复描述。
内存管理单元110b是连接至微处理器单元110a,并且用以执行本实施例的区块管理机制与数据管理与写入机制。
高速缓存720是连接至闪存控制器710并且用以暂存主机系统200所存取的数据。在此实施例中,高速缓存720为动态随机存取器(Dynamic Random Access memory,DRAM)。然而,必须了解的是,本发明不限于此,磁阻式存储器(Magnetoresistive Random Access Memory,MRAM)、相变化存储器(Phase Change Random Access Memory,PRAM)、单层记忆胞(Single Level Cell,SLC)NAND闪存或其他适合的存储器亦可应用于本发明。
闪存晶片730是连接至闪存控制器710并且用以储存数据。在本实施中,闪存晶片730为多层记忆胞(Multi Level Cell,MLC)NAND闪存。然而,必须了解的是,本发明不限于此。在本发明另一实施例中,SLC NAND闪存亦可应用于本发明。
闪存晶片730的结构是相同于图2所示的结构,在此不重复描述。图8是本发明第四实施例的闪存晶片的示意图。值得一提的是,闪存晶片730中的实体单元310-(0)~310-(N)会被分组为储存区820、取代区830与闪存暂存区840(如图8所示),其中储存区820包括实体单元310-(0)~310-(P),取代区830包括实体单元310-(P+1)~310-(N-1),而闪存暂存区840包括实体单元310-(N)。
储存区820中的实体单元的运作方式是相同于图3B~3C所示,且取代区830的实体单元的运作方式是相同取代区330的实体单元的运作方式,在此不重复描述。
闪存暂存区840中的实体单元是用以暂存欲写入至储存区820的数据。具体来说,由于当闪存控制器710的内存管理单元110b’写入数据至储存区820时需执行开启与关闭母子单元程序(如图3B~3C所示),特别是当所写入的数据为非连续小数据时,内存管理单元110b’会需反复地执行开启与关闭母子单元程序,而降低整个系统的效能。为了避免反复地执行开启与关闭母子单元程序,在本实施例中,闪存暂存区840是用以暂存非连续小数据。在此,当主机系统200所写入的数据为欲写入至连续4个扇区位址时,则内存管理单元110b’会将此写入数据识别为连续大数据,反之,则将此写入数据识别为非连续小数据。基此,在本发明一范例实施例中,当内存管理单元110b’写入数据至储存区820时,内存管理单元110b’会判断所写入的数据是否为连续大数据,其中当所写入的数据为连续大数据时,则内存管理单元110b’会将此数据写入至储存区820中,反之,则将此数据暂存于闪存暂存区840中。
必须了解的是,在本实施例中,闪存暂存区840是以闪存晶片730中的一个实体单元来实现,然而本发明不限于此,在本发明另一范例实施例中,闪存暂存区可以多个实体单元来实现。此外,在本发明另一实施例中,闪存暂存区840亦可以另一闪存晶片。
在本实施例中,每当主机系统200欲写入数据至闪存储存系统700时,内存管理单元110b’会从主机系统200中接收一写入指令与一写入数据,其中此写入指令会包含欲储存此写入数据的逻辑地址。接着,内存管理单元110b’会将此逻辑地址转换为对应的逻辑单元,以及将写入数据暂存在高速缓存720中同时记录欲储存此写入数据的逻辑单元。也就是说,高速缓存720会持续地暂存主机系统200所传送的写入数据。之后,在主机系统200下达清空指令或者一适当时机时,内存管理单元110b’会将暂存于高速缓存720中的写入数据写入至闪存晶片730的储存区820或闪存暂存区840中。
此外,在本实施例中,每当主机系统200下达写入指令且欲储存的写入数据被暂存于高速缓存720后,内存管理单元110b’会依据目前暂存于高速缓存720中的写入数据所对应的逻辑单元的数目、闪存暂存区840中可用的实体单元的数目以及储存区820的备用区中可用的实体单元的数目来计算一单元处理数,并且比较所计算的单元处理数与一单元处理数上限来判断在实体单元中写入目前暂存于高速缓存720中的写入数据所需的时间是否会超过上述处理时间上限值。
在本实施例中,单元处理数上限的设定以及单元处理数与单元处理数上限的比较是相同于第三实施例,在此不重复描述。例如,在本实施例中关闭母子单元程序需花费200毫秒,且处理时间上限值为800毫秒,因此单元处理数上限是设定为4。相较于第三实施例,本实施例是更考虑闪存暂存区840中可用的实体单元的数目。以下以一写入范例来详细说明本实施例的运作。
假设储存区820的备用区中可用于开启母子单元的实体单元的数目为5,闪存暂存区840中的可用实体单元为1,并且内存管理单元110b’已使用其中3个实体单元来执行开启母子单元程序以写入逻辑单元0、1与2的写入数据的情况(即,备用区306中有2个可用的实体单元)下,倘若主机系统200下达10个写入指令,其中此些写入指令是分别地指示在逻辑单元3、4、0、5、3、6、7、8、9与10中写入数据时,内存管理单元110b’会在每次执行写入指令时将写入数据暂存于高速缓存720并且判断在实体单元中写入目前暂存于高速缓存720中的写入数据所需的时间是否会超过上述处理时间上限值运作,其判断方式如下:
在执行第1个写入指令的情况下,由于高速缓存720中会存有对应逻辑单元3的写入数据。此时,倘若主机系统200下达清空指令时,对应逻辑单元3的写入数据需执行1个开启母子单元程序来写入。由于储存区820的备用区有2个可用的实体单元且闪存暂存区840有1个可用的实体单元,因此在单元处理数为0且不大于单元处理数上限的情况下,内存管理单元110b’会判定在实体单元中写入目前暂存于高速缓存720中的写入数据所需的时间不会超过上述处理时间上限值。
在执行第2个写入指令的情况下,由于高速缓存720中会存有对应逻辑单元3与4的写入数据。此时,倘若主机系统200下达清空指令时,对应逻辑单元3与4的写入数据需执行2个开启母子单元程序来写入。由于储存区820的备用区有2个可用的实体单元且闪存暂存区840有1个可用的实体单元,因此在单元处理数为0且不大于单元处理数上限的情况下,内存管理单元110b’会判定在实体单元中写入目前暂存于高速缓存720中的写入数据所需的时间不会超过上述处理时间上限值。
在执行第3个写入指令的情况下,由于高速缓存720中会存有对应逻辑单元3、4与0的写入数据。此时,倘若主机系统200下达清空指令时,由于对应逻辑单元0的开启母子单元程序已被执行,因此对应逻辑单元3、4与0的写入数据需执行2个开启母子单元程序来写入。由于储存区820的备用区有2个可用的实体单元且闪存暂存区840有1个可用的实体单元,因此在单元处理数为0且不大于单元处理数上限的情况下,内存管理单元110b’会判定在实体单元中写入目前暂存于高速缓存720中的写入数据所需的时间不会超过上述处理时间上限值。
在执行第4个写入指令的情况下,由于高速缓存720中会存有对应逻辑单元3、4、0与5的写入数据。此时,倘若主机系统200下达清空指令时,由于对应逻辑单元0的开启母子单元程序已被执行,因此对应逻辑单元3、4、0与5的写入数据需执行3个开启母子单元程序来写入。由于储存区820的备用区有2个可用的实体单元且闪存暂存区840有1个可用的实体单元,因此在单元处理数为0(即,3减3)且不大于单元处理数上限的情况下,内存管理单元110b’会判定在实体单元中写入目前暂存于高速缓存720中的写入数据所需的时间不会超过上述处理时间上限值。
在执行第5个写入指令的情况下,由于高速缓存720中会存有对应逻辑单元3、4、0与5的写入数据。此时,倘若主机系统200下达清空指令时,由于对应逻辑单元0的开启母子单元程序已被执行,因此对应逻辑单元3、4、0与5的写入数据需执行3个开启母子单元程序来写入。由于储存区820的备用区有2个可用的实体单元且闪存暂存区840有1个可用的实体单元,因此在单元处理数为0(即,3减3)且不大于单元处理数上限的情况下,内存管理单元110b’会判定在实体单元中写入目前暂存于高速缓存720中的写入数据所需的时间不会超过上述处理时间上限值。
在执行第6个写入指令的情况下,由于高速缓存720中会存有对应逻辑单元3、4、0、5与6的写入数据。此时,倘若主机系统200下达清空指令时,由于对应逻辑单元0的开启母子单元程序已被执行,因此对应逻辑单元3、4、0、5与6的写入数据需执行4个开启母子单元程序来写入。由于储存区820的备用区有2个可用的实体单元且闪存暂存区840有1个可用的实体单元,因此在单元处理数为1(即,4减3)且不大于单元处理数上限的情况下,内存管理单元110b’会判定在实体单元中写入目前暂存于高速缓存720中的写入数据所需的时间不会超过上述处理时间上限值。
在执行第7个写入指令的情况下,由于高速缓存720中会存有对应逻辑单元3、4、0、5、6与7的写入数据。此时,倘若主机系统200下达清空指令时,由于对应逻辑单元0的开启母子单元程序已被执行,因此对应逻辑单元3、4、0、5、6与7的写入数据需执行5个开启母子单元程序来写入。由于储存区820的备用区有2个可用的实体单元且闪存暂存区840有1个可用的实体单元,因此在单元处理数为2(即,5减3)且不大于单元处理数上限的情况下,内存管理单元110b’会判定在实体单元中写入目前暂存于高速缓存720中的写入数据所需的时间不会超过上述处理时间上限值。
在执行第8个写入指令的情况下,由于高速缓存720中会存有对应逻辑单元3、4、0、5、6、7与8的写入数据。此时,倘若主机系统200下达清空指令时,由于对应逻辑单元0的开启母子单元程序已被执行,因此对应逻辑单元3、4、0、5、6、7与8的写入数据需执行6个开启母子单元程序来写入。由于储存区820的备用区有2个可用的实体单元且闪存暂存区840有1个可用的实体单元,因此在单元处理数为3(即,6减3)且不大于单元处理数上限的情况下,内存管理单元110b’会判定在实体单元中写入目前暂存于高速缓存720中的写入数据所需的时间不会超过上述处理时间上限值。
在执行第9个写入指令的情况下,由于高速缓存720中会存有对应逻辑单元3、4、0、5、6、7、8与9的写入数据。此时,倘若主机系统200下达清空指令时,由于对应逻辑单元0的开启母子单元程序已被执行,因此对应逻辑单元3、4、0、5、6、7、8与9的写入数据需执行7个开启母子单元程序来写入。由于储存区820的备用区有2个可用的实体单元且闪存暂存区840有1个可用的实体单元,因此在单元处理数为4(即,7减3)且不大于单元处理数上限的情况下,内存管理单元110b’会判定在实体单元中写入目前暂存于高速缓存720中的写入数据所需的时间不会超过上述处理时间上限值。
在执行第10个写入指令的情况下,由于高速缓存720中会存有对应逻辑单元3、4、0、5、6、7、8、9与10的写入数据。此时,倘若主机系统200下达清空指令时,由于对应逻辑单元0的开启母子单元程序已被执行,因此对应逻辑单元3、4、0、5、6、7、8、9与10的写入数据需执行8个开启母子单元程序来写入。由于储存区820的备用区有2个可用的实体单元且闪存暂存区840有1个可用的实体单元,因此在单元处理数为5(即,8减3)且大于单元处理数上限的情况下,内存管理单元110b’会判定在实体单元中写入目前暂存于高速缓存720中的写入数据所需的时间会超过上述处理时间上限值。
在本实施例中,在内存管理单元110b’判断所计算出的单元处理数大于所设定的单元处理上限值的情况下,内存管理单元110b’会将暂存于高速缓存720中的部分写入数据先行写入至闪存暂存区840或储存区820中。
图9是本发明第四实施例的数据管理方法900的流程图。
请参照图9,当闪存储存系统700开机后,在步骤S901中,闪存储存系统700会被初始化。
之后,在步骤S903中,闪存控制器710的内存管理单元110b’会待命并从主机系统200中接收写入指令与写入数据。接着,在步骤S905中内存管理单元110b’会将所接收的写入数据暂存于高速缓存720中。并且,在步骤S907中内存管理单元110b’会依据目前暂存于高速缓存720中的写入数据所对应的逻辑单元的数目、闪存暂存区840中的可用实体单元的数目以及储存区820的备用区中可用的实体单元的数目来计算一单元处理数。然后,在步骤S909中内存管理单元110b’会判断所计算的单元处理数是否大于单元处理数上限值,其中倘若所计算的单元处理数大于单元处理数上限值时,则在步骤S911中会将属于同一个逻辑单元的写入数据写入至闪存暂存区840中的实体单元中或储存区820中对应的实体单元中。然后,数据管理程序900会返回步骤S903中待命。
必须了解的是,尽管在上述实施例中仅描述闪存储存系统执行写入指令的流程,但必须了解的是,闪存控制器于待命时亦会依据闪存晶片的相关信息执行读取、抹除、关机或其他指令,其中此些指令的运作方式为此领域技术人员所熟知,在此不详细描述。此外,必须了解的是,图4、图5、图6与图9所述的执行顺序并非限制本发明,此领域技术人员可依据本发明的精神下以不同于图4、图5、图6与图9所述的顺序执行上述步骤。
综上所述,本发明是通过判断闪存控制器能否在所设定的处理时间上限值内,将高速缓存内所暂存的所有写入数据写入至闪存晶片中,来预先处理高速缓存内的写入数据,由此避免主机系统下达清空指令时可能产生的逾时问题。
最后应说明的是:以上实施例仅用以说明本发明的技术方案而非对其进行限制,尽管参照较佳实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对本发明的技术方案进行修改或者等同替换,而这些修改或者等同替换亦不能使修改后的技术方案脱离本发明技术方案的精神和范围。
Claims (27)
1.一种数据管理方法,适用于一闪存储存系统,其中该闪存储存系统包括一高速缓存与一闪存,并且该闪存具有多个实体区块,该数据管理方法包括:
在该高速缓存中暂存来自于一主机系统的多个写入数据;
判断在该闪存中写入所述写入数据的时间是否大于一处理时间上限值;以及
当在该闪存中写入所述写入数据的时间大于该处理时间上限值时,则将暂存于该高速缓存中的所述写入数据的至少一部份写入至该闪存中。
2.根据权利要求1所述的数据管理方法,还包括:
将至少一部分的所述实体区块分组为多个实体单元;以及
配置多个逻辑单元,其中每一所述逻辑单元对映至少一个所述实体单元,
其中每一所述写入数据是被写入至所述逻辑单元的其中之一。
3.根据权利要求1所述的数据管理方法,其中判断在该闪存中写入所述写入数据的时间是否大于该处理时间上限值的步骤包括:
判断暂存于该高速缓存中的所述写入数据的数据量是否大于一数据量门限值,其中当暂存于该高速缓存中的所述写入数据的数据量大于该数据量门限值时,则判断在该闪存中写入所述写入数据的时间是大于该处理时间上限值。
4.根据权利要求2所述的数据管理方法,其中判断在该闪存中写入所述写入数据的时间是否大于该处理时间上限值的步骤包括:
判断写入所述写入数据的所述逻辑单元的数目是否大于一数据分散门限值,其中当写入所述写入数据的所述逻辑单元的数目大于该数据分散门限值时,则判断在该闪存中写入所述写入数据的时间是大于该处理时间上限值。
5.根据权利要求2所述的数据管理方法,还包括将所述实体单元至少分组为一数据区与一备用区。
6.根据权利要求5所述的数据管理方法,其中判断在该闪存中写入所述写入数据的时间是否大于该处理时间上限值的步骤包括:
依据写入所述写入数据的所述逻辑单元的数目与该备用区中可用的所述实体单元的数目来获取一单元处理数;以及
判断该单元处理数是否大于一单元处理数上限,其中当该单元处理数大于该单元处理数上限时,则判断写入所述写入数据的时间大于该处理时间上限值。
7.根据权利要求5所述的数据管理方法,其中将暂存于该高速缓存中的所述写入数据的至少一部份写入至该闪存中的步骤包括:
从写入所述写入数据的所述逻辑单元中选择至少一个所述逻辑单元;
从该备用区的实体单元之中选择至少一个所述实体单元;
将在该高速缓存中写入至该至少一个逻辑单元的所述写入数据以及该至少一个逻辑单元所对映的实体单元中的有效数据,写入至该至少一个所述实体单元中。
8.根据权利要求7所述的数据管理方法,其中将暂存于该高速缓存中的所述写入数据的至少一部份写入至该闪存中的步骤还包括:
判断在该高速缓存中写入至该至少一个逻辑单元的所述写入数据的数据量占该至少一逻辑单元的容量的比例是否大于一比例门限值;以及
当在该高速缓存中写入至该至少一个逻辑单元的所述写入数据的数据量占该至少一逻辑单元的容量的比例大于该比例门限值时,则将该至少一个逻辑单元所对映的实体单元中的有效数据复制到该高速缓存中,并与该至少一逻辑单元的所述写入数据整合。
9.根据权利要求1所述的数据管理方法,还包括:
在该闪存储存系统中配置一闪存暂存区;以及当在该闪存中写入所述写入数据的时间大于该处理时间上限值时,将暂存于该高速缓存中的所述写入数据的至少一部份写入至该闪存暂存区。
10.一种闪存控制器,适用于控制一闪存储存系统,其中该闪存储存系统包括一高速缓存与一闪存,并且该闪存具有多个实体区块,该闪存控制器包括:
一微处理器单元;
一主机接口单元,连接该微处理器单元,用以连接一主机系统;
一闪存接口单元,连接该微处理器单元,用以连接该闪存;以及
一内存管理单元,连接该微处理器单元,其中该内存管理单元会在该高速缓存中暂存来自于该主机系统的多个写入数据,
其中该内存管理单元会判断在该闪存中写入所述写入数据的时间是否大于一处理时间上限值,并且
其中当在该闪存中写入所述写入数据的时间大于该处理时间上限值时,则该内存管理单元会将暂存于该高速缓存中的所述写入数据的至少一部份写入至该闪存中。
11.根据权利要求10所述的闪存控制器,其中该内存管理单元会将至少一部分的所述实体区块分组为多个实体单元,并且配置多个逻辑单元,
其中每一所述逻辑单元对映至少一个所述实体单元,
其中每一所述写入数据是被写入至所述逻辑单元的其中之一。
12.根据权利要求10所述的闪存控制器,其中该内存管理单元会判断暂存于该高速缓存中的所述写入数据的数据量是否大于一数据量门限值,其中当暂存于该高速缓存中的所述写入数据的数据量大于该数据量门限值时,则该内存管理单元会判断在该闪存中写入所述写入数据的时间是大于该处理时间上限值。
13.根据权利要求11所述的闪存控制器,其中该内存管理单元会判断写入所述写入数据的所述逻辑单元的数目是否大于一数据分散门限值,其中当写入所述写入数据的所述逻辑单元的数目大于该数据分散门限值时,则该内存管理单元会判断在该闪存的所述实体单元中写入所述写入数据的时间是大于该处理时间上限值。
14.根据权利要求11所述的闪存控制器,其中该内存管理单元将所述实体单元至少分组为一数据区与一备用区。
15.根据权利要求14所述的闪存控制器,其中该内存管理单元会依据写入所述写入数据的所述逻辑单元的数目与该备用区中可用的所述实体单元的数目来获取一单元处理数,以及判断该单元处理数是否大于一单元处理数上限,
其中当该单元处理数大于该单元处理数上限时,则该内存管理单元判断写入所述写入数据的时间大于该处理时间上限值。
16.根据权利要求14所述的闪存控制器,其中该内存管理单元会从写入所述写入数据的所述逻辑单元中选择至少一个所述逻辑单元,从该备用区的实体单元之中选择至少一个所述实体单元,并且将在该高速缓存中写入至该至少一个逻辑单元的所述写入数据和该至少一个逻辑单元所对映的实体单元中的有效数据写入至该至少一个所述实体单元中。
17.根据权利要求16所述的闪存控制器,其中该内存管理单元会判断在该高速缓存中写入至该至少一个逻辑单元的所述写入数据的数据量占该至少一逻辑单元的容量的比例是否大于一比例门限值,
其中当在该高速缓存中写入至该至少一个逻辑单元的所述写入数据的数据量占该至少一逻辑单元的容量的比例大于该比例门限值时,则该内存管理单元会将该至少一个逻辑单元所对应的实体单元中的有效数据复制到该高速缓存中,并与该至少一逻辑单元的所述写入数据整合。
18.根据权利要求10所述的闪存控制器,该闪存储存系统还包括一闪存暂存区,
其中当在该闪存中写入所述写入数据的时间大于该处理时间上限值时,该内存管理单元会将暂存于该高速缓存中的所述写入数据的至少一部份写入至该闪存暂存区。
19.一种闪存储存系统,包括:
一高速缓存;
一闪存,包括多个实体区块;以及
一闪存控制器,连接至该高速缓存与该闪存,
其中该闪存控制器会在该高速缓存中暂存来自于一主机系统的多个写入数据,
其中该闪存控制器会判断在该闪存中写入所述写入数据的时间是否大于一处理时间上限值,
其中当在该闪存中写入所述写入数据的时间大于该处理时间上限值时,则该闪存控制器会将暂存于该高速缓存中的所述写入数据的至少一部份写入至该闪存中。
20.根据权利要求19所述的闪存储存系统,其中该闪存控制器会将至少一部分的所述实体区块分组为多个实体单元,并且配置多个逻辑单元,
其中每一所述逻辑单元对映至少一个所述实体单元,
其中每一所述写入数据是被写入至所述逻辑单元的其中之一。
21.根据权利要求19所述的闪存储存系统,其中该闪存控制器会判断暂存于该高速缓存中的所述写入数据的数据量是否大于一数据量门限值,
其中当暂存于该高速缓存中的所述写入数据的数据量大于该数据量门限值时,则该闪存控制器会判断在该闪存中写入所述写入数据的时间是大于该处理时间上限值。
22.根据权利要求20所述的闪存储存系统,其中该闪存控制器会判断写入所述写入数据的所述逻辑单元的数目是否大于一数据分散门限值,
其中当写入所述写入数据的所述逻辑单元的数目大于该数据分散门限值时,则该闪存控制器会判断在该闪存的所述实体单元中写入所述写入数据的时间是大于该处理时间上限值。
23.根据权利要求20所述的闪存储存系统,其中该闪存控制器将所述实体单元至少分组为一数据区与一备用区。
24.根据权利要求23所述的闪存储存系统,其中该闪存控制器会依据写入所述写入数据的所述逻辑单元的数目与该备用区中可用的所述实体单元的数目来获取一单元处理数,以及判断该单元处理数是否大于一单元处理数上限,
其中当该单元处理数大于该单元处理数上限时,则该闪存控制器会判断写入所述写入数据的时间大于该处理时间上限值。
25.根据权利要求23所述的闪存储存系统,其中该闪存控制器会从写入所述写入数据的所述逻辑单元中选择至少一个所述逻辑单元,从该备用区的实体单元之中选择至少一个所述实体单元,并且将在该高速缓存中写入至该至少一个逻辑单元的所述写入数据和该至少一个逻辑单元所对映的实体单元中的有效数据写入至该至少一个所述实体单元中。
26.根据权利要求25项所述的闪存储存系统,其中该闪存控制器会判断在该高速缓存中写入至该至少一个逻辑单元的所述写入数据的数据量占该至少一逻辑单元的容量的比例是否大于一比例门限值,
其中当在该高速缓存中写入至该至少一个逻辑单元的所述写入数据的数据量占该至少一逻辑单元的容量的比例大于该比例门限值时,则该闪存控制器会将该至少一个逻辑单元所对映的实体单元中的有效数据复制到该高速缓存中,并与该至少一逻辑单元的所述写入数据整合。
27.根据权利要求19所述的闪存储存系统,还包括一闪存暂存区,
其中当在该闪存中写入所述写入数据的时间大于该处理时间上限值时,该闪存控制器会将暂存于该高速缓存中的所述写入数据的至少一部份写入至该闪存暂存区。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009101339515A CN101866320B (zh) | 2009-04-14 | 2009-04-14 | 数据管理方法及使用此方法的闪存储存系统与控制器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009101339515A CN101866320B (zh) | 2009-04-14 | 2009-04-14 | 数据管理方法及使用此方法的闪存储存系统与控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101866320A true CN101866320A (zh) | 2010-10-20 |
CN101866320B CN101866320B (zh) | 2012-05-30 |
Family
ID=42958052
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009101339515A Active CN101866320B (zh) | 2009-04-14 | 2009-04-14 | 数据管理方法及使用此方法的闪存储存系统与控制器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101866320B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102456404A (zh) * | 2010-10-21 | 2012-05-16 | 群联电子股份有限公司 | 非易失性存储器存储装置、存储器控制器与数据存储方法 |
CN102486757A (zh) * | 2010-12-06 | 2012-06-06 | 群联电子股份有限公司 | 存储器储存装置及其存储器控制器与回应主机指令的方法 |
CN103077042A (zh) * | 2012-11-14 | 2013-05-01 | 无敌科技(西安)有限公司 | 可随时热拔插sd卡且可自动加载卸载的嵌入式方法 |
US8837248B2 (en) | 2010-10-08 | 2014-09-16 | Phison Electronics Corp. | Non-volatile memory storage apparatus, memory controller and data storing method |
CN106293503A (zh) * | 2015-06-23 | 2017-01-04 | 株式会社东芝 | 磁盘装置及控制方法 |
CN107870872A (zh) * | 2016-09-23 | 2018-04-03 | 伊姆西Ip控股有限责任公司 | 用于管理高速缓存的方法和设备 |
WO2020097781A1 (zh) * | 2018-11-13 | 2020-05-22 | 华为技术有限公司 | 一种管理逻辑磁盘的性能的方法及存储阵列 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7076605B1 (en) * | 2003-04-25 | 2006-07-11 | Network Appliance, Inc. | Method and apparatus for writing data to a storage device |
CN100524244C (zh) * | 2006-12-14 | 2009-08-05 | 英业达股份有限公司 | 网络存储系统的存储空间不足预警方法 |
CN101387943B (zh) * | 2008-09-08 | 2011-05-25 | 创新科存储技术(深圳)有限公司 | 一种存储设备以及缓存数据的方法 |
-
2009
- 2009-04-14 CN CN2009101339515A patent/CN101866320B/zh active Active
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8837248B2 (en) | 2010-10-08 | 2014-09-16 | Phison Electronics Corp. | Non-volatile memory storage apparatus, memory controller and data storing method |
US9317418B2 (en) | 2010-10-08 | 2016-04-19 | Phison Electronics Corp. | Non-volatile memory storage apparatus, memory controller and data storing method |
CN102456404A (zh) * | 2010-10-21 | 2012-05-16 | 群联电子股份有限公司 | 非易失性存储器存储装置、存储器控制器与数据存储方法 |
CN102486757A (zh) * | 2010-12-06 | 2012-06-06 | 群联电子股份有限公司 | 存储器储存装置及其存储器控制器与回应主机指令的方法 |
CN102486757B (zh) * | 2010-12-06 | 2016-09-28 | 群联电子股份有限公司 | 存储器储存装置及其存储器控制器与回应主机指令的方法 |
CN103077042A (zh) * | 2012-11-14 | 2013-05-01 | 无敌科技(西安)有限公司 | 可随时热拔插sd卡且可自动加载卸载的嵌入式方法 |
CN106293503A (zh) * | 2015-06-23 | 2017-01-04 | 株式会社东芝 | 磁盘装置及控制方法 |
CN106293503B (zh) * | 2015-06-23 | 2019-05-07 | 株式会社东芝 | 磁盘装置及控制方法 |
CN106293503B9 (zh) * | 2015-06-23 | 2019-06-28 | 株式会社东芝 | 磁盘装置及控制方法 |
CN107870872A (zh) * | 2016-09-23 | 2018-04-03 | 伊姆西Ip控股有限责任公司 | 用于管理高速缓存的方法和设备 |
CN107870872B (zh) * | 2016-09-23 | 2021-04-02 | 伊姆西Ip控股有限责任公司 | 用于管理高速缓存的方法和设备 |
WO2020097781A1 (zh) * | 2018-11-13 | 2020-05-22 | 华为技术有限公司 | 一种管理逻辑磁盘的性能的方法及存储阵列 |
CN112997137A (zh) * | 2018-11-13 | 2021-06-18 | 华为技术有限公司 | 一种管理逻辑磁盘的性能的方法及存储阵列 |
CN112997137B (zh) * | 2018-11-13 | 2023-06-20 | 华为技术有限公司 | 一种管理逻辑磁盘的性能的方法及存储阵列 |
Also Published As
Publication number | Publication date |
---|---|
CN101866320B (zh) | 2012-05-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101937319B (zh) | 存储器系统及其映射方法 | |
EP2396729B1 (en) | Memory system and method of controlling memory system | |
CN101866320B (zh) | 数据管理方法及使用此方法的闪存储存系统与控制器 | |
TWI405209B (zh) | 資料管理方法及使用此方法的快閃儲存系統與控制器 | |
CN101169760B (zh) | 电子硬盘的存储空间的管理方法 | |
CN101634967B (zh) | 用于闪存的区块管理方法、储存系统与控制器 | |
CN101571832B (zh) | 数据写入方法及使用该方法的快闪存储系统与其控制器 | |
CN101625897B (zh) | 用于快闪存储器的数据写入方法、储存系统与控制器 | |
KR20130096881A (ko) | 플래시 메모리 장치 | |
CN103608782A (zh) | Lsb页面和msb页面中的选择性数据存储 | |
CN102073600B (zh) | 数据备份方法、闪存控制器及闪存储存系统 | |
CN101556555B (zh) | 用于闪存的区块管理方法、其控制器与储存系统 | |
CN103902475B (zh) | 一种基于队列管理机制的固态硬盘并行访问方法及装置 | |
CN101957797B (zh) | 闪速存储器逻辑区块管理方法及其控制电路与储存系统 | |
CN101630233B (zh) | 用于闪存的数据存取方法、储存系统与控制器 | |
CN101661431B (zh) | 用于快闪存储器的区块管理方法、快闪储存系统及控制器 | |
CN101527169A (zh) | 闪存数据写入方法及其控制器 | |
CN101625661B (zh) | 用于闪存的数据管理方法、储存系统与控制器 | |
CN101727397B (zh) | 区块管理与更换方法、闪存储存系统及其控制器 | |
CN102129353A (zh) | 闪存储存系统、闪存控制器与数据写入方法 | |
CN101859278A (zh) | 用于闪存的数据储存方法及储存系统 | |
CN102053920B (zh) | 数据写入方法及闪存控制器与闪存存储系统 | |
CN101661432B (zh) | 闪存区块管理方法、闪存储存系统及控制器 | |
CN101957799B (zh) | 用于闪速存储器的数据写入方法及其控制电路与存储系统 | |
CN101882111B (zh) | 用于闪存的数据存取方法、储存系统与控制器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |