CN102053920A - 数据写入方法及闪存控制器与闪存存储*** - Google Patents
数据写入方法及闪存控制器与闪存存储*** Download PDFInfo
- Publication number
- CN102053920A CN102053920A CN2009102077882A CN200910207788A CN102053920A CN 102053920 A CN102053920 A CN 102053920A CN 2009102077882 A CN2009102077882 A CN 2009102077882A CN 200910207788 A CN200910207788 A CN 200910207788A CN 102053920 A CN102053920 A CN 102053920A
- Authority
- CN
- China
- Prior art keywords
- data
- blocks
- physical
- page address
- logical
- 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
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
- Read Only Memory (AREA)
Abstract
本发明涉及一种数据写入方法及闪存控制器与闪存存储***,其中数据写入方法,用于将来自于主机***的数据写入至闪存芯片中,包括配置多个逻辑页地址;将逻辑页地址分组为多个逻辑区块;以及记录每一逻辑区块的数据散乱度。也包括从主机***中接收写入数据;判断主机***欲写入的逻辑地址所属的逻辑区块;以及依据欲写入的逻辑区块的数据散乱度来将此写入数据写入至闪存芯片中,其中每一逻辑区块的数据散乱度皆不大于逻辑区块数据散乱度阈值。本发明提供的数据写入方法及闪存控制器与闪存存储***,可有效地缩短执行主机写入指令所需的时间。
Description
技术领域
本发明涉及一种用于闪存的数据写入方法,尤其涉及一种能够有效率地将数据写入至闪存的数据写入方法以及使用此方法的闪存控制器与闪存存储***。
背景技术
由于闪存(Flash Memory)具有数据非挥发性、省电、体积小与无机械结构等特性,最适合使用于由电池供电的可携式电子产品上。例如,固态硬盘就是一种以NAND闪存作为存储媒体的存储装置,并且已广泛配置于笔记型电脑中作为主要的存储装置。
一般来说,闪存存储装置的闪存芯片(chip)会划分为多个实体区块,其中实体区块还划分为多个实体页面,而实体区块是闪存的抹除单位并且实体页面是闪存的写入单位。由于在程式化闪存的记忆胞时,仅能执行单向的程式化(即,仅能将记忆胞的值由1程式化为0),因此无法对已程式化的实体页面(即,存有旧数据的页面)直接进行写入,而是必须先将此实体页面抹除后方可重新程式化。特别是,由于闪存的抹除是以实体区块为单位,因此当欲将存有旧数据的实体页面执行抹除运作时,必须对此实体页面所属的整个实体区块进行抹除。因此,闪存芯片的实体区块会被区分为数据区与备用区,其中数据区的实体区块是已被使用来存储数据的实体区块,而备用区中的实体区块是未被使用的实体区块,其中当主机***欲写入数据至闪存存储装置时,闪存存储装置的控制电路会从备用区中提取实体区块来写入数据,并且将所提取的实体区块会关联为数据区。并且,当数据区的实体区块被执行抹除运作(erase operation)后,已抹除的实体区块会被关联为备用区。
由于主机***是以逻辑地址来进行写入,并且主机***写入数据至逻辑地址时经常不会依据逻辑地址的顺序来写入。基此,当闪存存储装置需要对实体区块进行抹除运作时,闪存存储装置需要花费相当大的时间来整理实体区块中的有效数据与无效数据。因此,如何提升在闪存写入数据的速度是此领域技术人员所致力的目标。
发明内容
本发明的目的是提供一种数据写入方法,其能够有效地缩短写入数据至闪存的时间。
本发明的又一目的是提供一种闪存控制器,其能够有效地缩短写入数据至闪存的时间。
本发明的另一目的是提供一种闪存存储***,其能够有效地缩短写入数据至闪存的时间。
本发明实施例提供一种数据写入方法,用于将来自于主机***的数据写入至闪存芯片中,其中此闪存芯片包括多个实体区块,每一实体区块具有多个实体页地址。本数据写入方法包括配置多个逻辑页地址;将逻辑页地址分组为多个逻辑区块;以及记录每一逻辑区块的数据散乱度,其中每一逻辑区块的数据散乱度为用于存储属于对应的逻辑区块的数据的实体区块的数目。本数据写入方法也包括从主机***中接收写入数据,其中此写入数据是被写入至逻辑页地址之中的一第一逻辑页地址,并且此第一逻辑页地址属于逻辑区块之中的一第一逻辑区块。本数据写入方法还包括取得实体页地址之中的一第一实体页地址。本数据写入方法还包括依据第一逻辑区块的数据散乱度以及所取得的第一实体页地址来将此写入数据写入至闪存芯片中,其中每一逻辑区块的数据散乱度皆不大于一逻辑区块数据散乱度阈值。
本发明实施例提供一种闪存控制器,用于将来自于主机***的数据写入至闪存芯片中,其中此闪存芯片包括多个实体区块,且每一实体区块具有多个实体页地址。本闪存控制器包括微处理器单元、闪存接口单元、主机接口单元与存储器管理单元。闪存接口单元电性连接至微处理器单元,用以电性连接至上述闪存芯片。主机接口单元电性连接至微处理器单元,用以电性连接至主机***。存储器管理单元电性连接至微处理器单元,用以配置多个逻辑页地址,将逻辑页地址分组为多个逻辑区块,并且记录每一逻辑区块的数据散乱度,其中每一逻辑区块的数据散乱度为用于存储属于对应的逻辑区块的数据的实体区块的数目。此外,主机接口单元从主机***中接收一写入数据,其中此写入数据是被写入至逻辑页地址之中的一第一逻辑页地址,并且第一逻辑页地址属于逻辑区块之中的一第一逻辑区块。另外,存储器管理单元取得实体页地址之中的一第一实体页地址。再者,存储器管理单元依据第一逻辑区块的数据散乱度以及所取得的第一实体页地址来将此写入数据写入至闪存芯片中,其中每一逻辑区块的数据散乱度皆不大于一逻辑区块数据散乱度阈值。
本发明实施例提供一种闪存存储***,其包括闪存芯片、连接器与闪存控制器。闪存芯片具有多个实体区块并且每一实体区块具有多个实体页地址。连接器用以电性连接至主机***。闪存控制器电性连接至闪存芯片与连接器,用以配置多个逻辑页地址,将逻辑页地址分组为多个逻辑区块,并且记录每一逻辑区块记录的数据散乱度,其中每一逻辑区块的数据散乱度为用于存储属于对应的逻辑区块的数据的实体区块的数目。此外,闪存控制器从主机***中接收一写入数据,其中此写入数据是被写入至逻辑页地址之中的一第一逻辑页地址,并且此第一逻辑页地址属于逻辑区块之中的一第一逻辑区块。另外,闪存控制器取得实体页地址之中的一第一实体页地址。再者,闪存控制器依据第一逻辑区块的数据散乱度以及所取得的第一实体页地址来将此写入数据写入至闪存芯片中,其中每一逻辑区块的数据散乱度皆不大于一逻辑区块数据散乱度阈值。
基于上述,本发明实施例能够避免所存储的数据过于分散,由此有效地缩短执行主机写入指令的时间。
为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并结合附图作详细说明如下。
附图说明
图1A是本发明第一实施例使用闪存存储装置的主机***的结构示意图。
图1B是本发明实施例的电脑、输入/输出装置与闪存存储装置的示意图。
图1C是本发明另一实施例的主机***与闪存存储装置的示意图。
图1D是图1A中闪存存储装置的结构示意图。
图2是本发明另一实施例的闪存控制器的结构示意图。
图3A是本发明第一实施例的闪存芯片的结构示意图。
图3B是本发明第一实施例的逻辑页地址与实体页地址的映射示意图。
图4A与图4B是本发明第一实施例的一逻辑页转实体页映射表及实体页转逻辑页映射表的示意图。
图5A与图5B是本发明第一实施例的另一逻辑页转实体页映射表及实体页转逻辑页映射表的示意图。
图6A与图6B是本发明第一实施例的又一逻辑页转实体页映射表及实体页转逻辑页映射表的示意图。
图7A、图7B与图7C是本发明第一实施例的一数据写入示意图。
图8A与图8B是本发明第一实施例的另一数据写入示意图。
图9A与图9B是本发明第一实施例的又一数据写入示意图。
图10是本发明第一实施例的数据写入方法的流程图。
图11是图10中步骤S1007的详细步骤的流程图。
图12A与图12B是本发明第二实施例的一数据写入示意图。
图13A与图13B是本发明第二实施例的另一数据写入示意图。
图14A与图14B是本发明第二实施例的又一数据写入示意图。
图15是本发明第二实施例的数据写入方法的流程图。
图16A与16B是图15中步骤S1507的详细步骤的流程图。
主要元件符号说明:
1000:主机***; 1100:电脑;
1102:微处理器; 1104:随机存取存储器;
1106:输入/输出装置; 1108:***汇流排;
1110:数据传输接口; 1202:鼠标;
1204:键盘; 1206:显示器;
1208:打印机; 1212:随身碟;
1214:存储卡; 1216:固态硬盘;
1310:数码相机; 1312:SD卡;
1314:MMC卡; 1316:记忆棒;
1318:CF卡; 1320:嵌入式存储装置;
100:闪存存储装置; 102:连接器;
104、104′:闪存控制器; 106:闪存芯片;
122-(0)~122-(N):实体区块; 202:微处理器单元;
204:存储器管理单元; 206:主机接口单元;
208:闪存接口单元; 252:缓冲存储器;
254:电源管理单元; 256:错误校正单元;
302:***区; 304:存储区;
304a:数据区; 304b:备用区;
306:取代区; 350-(0)~350-(H):逻辑区块;
410:逻辑页转实体页映射表; 420: 实体页转逻辑页映射表;
LBA-(0)~LBA-(L):逻辑页地址;PBA-(0)~PBA-(K):实体页地址;
S1001、S1003、S1005、S1007、S1101、S1103、S1105、S1107、S1109、
S1111、S 1113、S1115、S 1117:数据写入步骤;
S1501、S1503、S1505、S1507、S1601、S1603、Sl605、S1607、S1609、
S1611、S1613、S1615、S1617、S1619、S1621、S1623、S1625、S1627、
S1629、S1631:数据写入步骤。
具体实施方式
闪存存储装置一般而言包括闪存芯片与控制器(亦称,控制电路)。通常闪存存储装置会与主机***一起使用,以使主机***可将数据写入至闪存存储装置或从闪存存储装置中读取数据。另外,也有闪存存储装置是包括嵌入式闪存与可执行于主机***上以实质地作为此嵌入式闪存的控制器的软件。
第一实施例
图1A是本发明第一实施例使用闪存存储装置的主机***的结构示意图。
图1B是本发明实施例的电脑、输入/输出装置与闪存存储装置的示意图。图1C是本发明另一实施例的主机***与闪存存储装置的示意图。
请参照图1A,主机***1000包括电脑1100与输入/输出(input/output,简称为:I/O)装置1106。电脑1100包括微处理器1102、随机存取存储器(randomaccess memory,简称为:RAM)1104、***汇流排1108以及数据传输接口1110。输入/输出装置1106包括如图1B所示的鼠标1202、键盘1204、显示器1206与打印机1208。必须了解的是,图1B所示的装置非限制输入/输出装置1106,输入/输出装置1106还可包括其他装置。
在本发明实施例中,闪存存储装置100是通过数据传输接口1110与主机***1000的其他元件电性连接。藉由微处理器1102、随机存取存储器1104与输入/输出装置1106,处理主机***1000可将数据写入至闪存存储装置100或从闪存存储装置100中读取数据。例如,闪存存储装置100可以是如图1B所示的随身碟1212、存储卡1214或固态硬盘(Solid State Drive,简称为:SSD)1216。
一般而言,主机***1000为可存储数据的任意***。虽然在本实施例中,主机***1000是以电脑***来作说明,然而,在本发明另一实施例中,主机***1000也可以是数码相机、摄影机、通信装置、音讯播放器或视讯播放器等***。例如,在主机***为数码相机1310时,闪存存储装置则为其所使用的SD卡1312、MMC卡1314、记忆棒(memory stick)1316、或CF卡1318或嵌入式存储装置1320(如图1C所示)。嵌入式存储装置1320包括嵌入式多媒体卡(Embedded MMC,简称为:eMMC)。值得一提的是,嵌入式多媒体卡直接电性连接于主机***的基板上。
图1D是图1A中闪存存储装置的结构示意图。
请参照图1D,闪存存储装置100包括连接器102、闪存控制器104与闪存芯片106。
连接器102是电性连接至闪存控制器104并且用以电性连接至主机***1000。在本实施例中,连接器102为序列先进附件(Serial Advanced TechnologyAttachment,简称为:SATA)连接器。然而,必须了解的是本发明不限于此,连接器102也可以是平行先进附件(Parallel Advanced Technology Attachment,简称为:PATA)连接器、通用序列汇流排(Universal Serial Bus,简称为:USB)连接器、电气和电子工程师协会(Institute of Electrical and Electronic Engineers,简称为:IEEE)1394连接器、高速***器件连接接口(Peripheral ComponentInterconnect Express,简称为:PCI Express)连接器、安全数位(secure digital,简称为:SD)接口连接器、记忆棒(Memory Sick,简称为:MS)接口连接器、多媒体存储卡(Multi Media Card,简称为:MMC)接口连接器、小型快闪(CompactFlash,简称为:CF)接口连接器、整合式驱动电子接口(Integrated DeviceElectronics,简称为:IDE)连接器或其他适合的连接器。
闪存控制器104会执行以硬件型式或韧体型式实作的多个逻辑闸或控制指令,并且根据主机***1000的指令在闪存芯片106中进行数据的写入、读取与抹除等运作。闪存控制器104包括微处理器单元202、存储器管理单元204、主机接口单元206、闪存接口单元208。
微处理器单元202为闪存控制器104的主控单元,用以与存储器管理单元204、主机接口单元206与闪存接口单元208等协同合作以进行闪存存储装置100的各种运作。
存储器管理单元204是电性连接至微处理器单元202,用以执行根据本实施例的数据写入机制与区块管理机制,存储器管理单元204的运作将在下面结合附图作详细说明。
在本实施例中,存储器管理单元204是以一韧体型式实作在闪存控制器104中。例如,将包括多个控制指令的存储器管理单元204烧录至一程式存储器(例如,只读存储器(Read Only Memory,简称为:ROM))中并且将此程式存储器嵌入在闪存控制器104中,当闪存存储装置100运作时,存储器管理单元204的多个控制指令会由微处理器单元202来执行以完成根据本发明实施例的数据写入机制与区块管理机制。
在本发明另一实施例中,存储器管理单元204的控制指令也可以程式码型式存储于闪存芯片106的特定区域(例如,闪存芯片中专用于存放***数据的***区)中。同样的,当闪存存储装置100运作时,存储器管理单元204的多个控制指令会由微处理器单元202来执行。此外,在本发明另一实施例中,存储器管理单元204也可以一硬件型式实作在闪存控制器104中。
主机接口单元206是电性连接至微处理器单元202并且用以接收与识别主机***1000所传送的指令与数据。也就是说,主机***1000所传送的指令与数据会通过主机接口单元206来传送至微处理器单元202。在本实施例中,主机接口单元206是对应连接器102为SATA接口。然而,必须了解的是本发明不限于此,主机接口单元206也可以是PATA接口、USB接口、IEEE1394接口、PCI Express接口、SD接口、MS接口、MMC接口、CF接口、IDE接口或其他适合的数据传输接口。
闪存接口单元208是电性连接至微处理器单元202并且用以存取闪存芯片106。也就是说,欲写入至闪存芯片106的数据会经由闪存接口单元208转换为闪存芯片106所能接受的格式。
在本发明另一实施例中,闪存控制器还可包括其他功能模组。图2是本发明另一实施例的闪存控制器的结构示意图。
请参照图2,除了微处理器单元202、存储器管理单元204、主机接口单元206与闪存接口单元208之外,本发明另一实施例的闪存控制器104′还包括缓冲存储器252、电源管理单元254与错误校正单元256。
缓冲存储器252是电性连接至微处理器单元202并且用以暂存来自于主机***1000的数据与指令或来自于闪存芯片106的数据。
电源管理单元254是电性连接至微处理器单元202并且用以控制闪存存储装置100的电源。
错误校正单元256是电性连接至微处理器单元202并且用以执行一错误校正程序以确保数据的正确性。具体来说,当存储器管理单元204从主机***1000中接收到主机写入指令时,错误校正单元256会为对应此主机写入指令的写入数据产生对应的错误检查与校正码(Error Checking and CorrectingCode,简称为:ECC Code),并且存储器管理单元204会将此写入数据与对应的错误校正码写入至闪存芯片106中。之后,当存储器管理单元204从闪存芯片106中读取数据时会同时读取此数据对应的错误校正码,并且错误校正单元256会依据此错误校正码对所读取的数据执行错误校正程序。
请再参照图1D,闪存芯片106是电性连接至闪存控制器104并且用以存储数据。闪存芯片106具有实体区块122-(0)~122-(N)。实体区块为抹除的最小单位。亦即,每一实体区块含有最小数目之一并被抹除的记忆胞。每一实体区块具有数个实体页面。在本实施例中,实体页面为程式化的最小单元。换言之,实体页面为写入数据或读取数据的最小单元。每一实体页面通常包括使用者数据区与冗余区。使用者数据区用以存储使用者的数据,而冗余区用以存储***的数据(例如,错误检查与校正码)。在本实施例中,闪存芯片106为多层记忆胞(Multi Level Cell,简称为:MLC)NAND闪存芯片。然而,本发明不限于此,闪存芯片106也可是单层记忆胞(Single Level Cell,简称为:SLC)NAND闪存芯片。
图3A是本发明第一实施例的闪存芯片的结构示意图。图3B是本发明第一实施例的逻辑页地址与实体页地址的映射示意图。必须了解的是,在此描述闪存的实体区块的运作时,以“提取”、“交换”、“分组”、“轮替”等词来操作实体区块是逻辑上的概念。也就是说,闪存的实体区块的实际位置并未变动,而是逻辑上对闪存的实体区块进行操作。
请参照图3A,存储器管理单元204会将实体区块122-(0)~122-(N)逻辑地分组为***区(system area)302、存储区(storage area)304与取代区(replacementarea)306。
逻辑上属于***区302的实体区块122-(0)~122-(S)是用以记录***数据,此***数据包括关于闪存芯片的制造商与型号、每一闪存芯片的区域数、每一区域的实体区块的数目、每一实体区块的实体页面数等。
逻辑上属于存储区304的实体区块122-(S+1)~122-(A)是用以主机***1000所写入的数据。也就是说,闪存存储装置100会使用分组为存储区304的实体区块来实际地存储主机***1000所写入的数据。更详细来说,存储区304的实体区块122-(S+1)~122-(A)还分组为数据区304a与备用区304b,其中数据区304a的实体区块122-(S+1)~122-(D)是已被使用来存储数据的实体区块,而备用区304b的实体区块122-(D+1)~122-(A)是未被使用来存储数据的实体区块。具体来说,当存储器管理单元204从备用区304b提取实体区块来写入数据时,所提取的实体区块会被关联为数据区304a,并且当关联为数据区304a的实体区块被执行抹除运作后已抹除的实体区块会被关联为备用区304b。
逻辑上属于取代区306中的实体区块122-(A+1)~122-(N)是替代实体区块。例如,闪存芯片106在出厂时会预留4%的实体区块作为更换使用。也就是说,当***区302与存储区304中的实体区块损毁时,预留在取代区306中的实体区块可用以取代损坏的实体区块(即,坏实体区块(bad block))。因此,倘若取代区306中仍存有可用的实体区块且发生实体区块损毁时,存储器管理单元204会从取代区306中提取可用的实体区块来更换损毁的实体区块。倘若取代区306中无可用的实体区块且发生实体区块损毁时,则闪存存储装置100将会被宣告为写入保护(write protect),而无法再写入数据。
由于闪存存储装置100是以轮替地使用存储区304的实体区块来存储主机***1000欲存储的数据,因此存储器管理单元204会提供逻辑页地址给主机***1000以进行数据存取,并且存储器管理单元204会将这些逻辑页地址分组为逻辑区块350-(0)~350-(H),其中逻辑区块350-(0)~350-(H)会映射存储区304的实体区块(如图3B所示)。例如,存储器管理单元204会维护逻辑页转实体页映射表以及实体页转逻辑页映射表来记录逻辑页地址与实体页地址之间的映射关系。
具体来说,在本发明实施例中,当主机***1000在逻辑区块350-(0)~350-(H)的逻辑页地址中写入数据时,存储器管理单元204将数据写入至存储区304的实体区块的实体页地址中。具体来说,当存储器管理单元204开始使用实体区块122-(D+1)来存储主机***1000欲写入的数据时,不管主机***1000是写入那个逻辑页地址,存储器管理单元会将数据依序地写入至实体区块122-(D+1)的实体页地址;而当存储器管理单元204开始使用实体区块122-(D+2)来存储主机***1000欲写入的数据时,不管主机***1000是写入那个逻辑页地址,存储器管理单元会将数据依序地写入至实体区块122-(D+2)的实体页地址中。也就是说,在写入主机***1000欲写入的数据时,存储器管理单元204会依序地使用一个实体区块内的实体页地址来写入数据,并且当此实体区块内的实体页地址被使用完后才会再选择另一个无存储数据的实体区块(即,从备用区304b中提取一个实体区块),并且在新选择的实体区块的实体页地址中继续依序地写入数据。在本实施例中,在存储器管理单元204将数据写入至实体页地址后,存储器管理单元204会更新逻辑页转实体页映射表与实体页转逻辑页映射表以正确地记录逻辑页地址与实体页地址的映射关系。
必须了解的是,在闪存存储装置100的运作中,实体区块122-(0)~122-(N)被分组为***区302、数据区304a、备用区304b与取代区306的映射关系会动态地变动。也就是说,当存储器管理单元204将数据写入至原本属于备用区304b的实体区块(例如,实体区块122-(D+2))后,此实体区块会被关联为数据区304a。或者,当数据区304a(或备用区304b)中的实体区块损坏时而被取代区306的实体区块取代时,则原本取代区306的实体区块会被关联为数据区304a(或备用区304b)。
值得一提的是,在本发明一实施例中,在存储器管理单元204中还包括一可写入实体页指针(Available Physical Page Pointer),用以指示目前可写入实体页地址。基于此,当闪存控制器104执行来自于主机***1000的主机写入指令来写入数据时,存储器管理单元204可依据可写入实体页指针的标记依序地将数据写入至闪存芯片106的实体页地址中。在此,目前可写入实体页地址所属的实体区块也称为目前可写入实体区块。
图4A与图4B是本发明第一实施例的一逻辑页转实体页映射表及实体页转逻辑页映射表的示意图,其中逻辑区块350-(0)~350-(H)包括逻辑页地址LBA-(0)~LBA(L),并且存储区304的实体区块包括实体页地址PBA-(0)~PBA(K)。在本实施例中,逻辑页转实体页映射表具有逻辑页索引栏位与实体页地址栏位来记录每一逻辑页地址所映射的实体页地址,并且实体页转逻辑页映射表具有实体页索引栏位与逻辑页地址栏位来记录每一实体页地址所映射的逻辑页地址。
请参照图4A与4B,假设逻辑页地址LBA-(0)~逻辑页地址LBA-(L)是分别地映射实体页地址PBA-(0)~实体页地址PBA-(L),也就是说,实体页地址PBA-(0)~实体页地址PBA-(L)已分别存储主机***1000在逻辑页地址LBA-(0)~逻辑页地址LBA-(L)中所写入的数据。因此,逻辑页转实体页映射表410以及实体页转逻辑页映射表420会记录这些映射关系,并且此时可写入实体页指针会指向实体页地址PBA-(L+1)。
图5A与图5B是本发明第一实施例的另一逻辑页转实体页映射表及实体页转逻辑页映射表的示意图。
请参照图5A与5B,倘若在图4A与图4B的映射关系下主机***1000欲写入数据至逻辑页地址LBA-(1)时,存储器管理单元204会依据可写入实体页指针将主机***1000欲写入的数据写入至实体页地址PBA-(L+1)中,并且将可写入实体页指针改为指向实体页地址PBA-(L+2)。此时,存储器管理单元204会在逻辑页转实体页映射表410中将逻辑页地址LBA-(1)的映射更新为实体页地址PBA-(L+1),并且在实体页转逻辑页映射表420中将实体页地址PBA-(L+1)的映射更新为逻辑页地址LBA-(1)。
图6A与图6B是本发明第一实施例的又一逻辑页转实体页映射表及实体页转逻辑页映射表的示意图。
请参照图6A与6B,倘若在图5A与图5B的映射关系下主机***1000欲写入数据至逻辑页地址LBA-(129)时,存储器管理单元204会依据可写入实体页指针将主机***1000欲写入的数据写入至实体页地址PBA-(L+2)中,并且将可写入实体页指针改为指向实体页地址PBA-(L+3)。此时,存储器管理单元204会在逻辑页转实体页映射表410中将逻辑页地址LBA-(129)的映射更新为实体页地址PBA-(L+2),并且在实体页转逻辑页映射表420中将实体页地址PBA-(L+2)的映射更新为逻辑页地址LBA-(129)(如图6B所示)。
此外,在本发明实施例中,存储器管理单元204会比对逻辑页转实体页映射表410以及实体页转逻辑页映射表420中的记录来判断哪些实体页地址为无效的实体页地址与有效的实体页地址,其中所谓无效的实体页地址是指其中所存储的数据为无效的旧数据,而有效的实体页地址是指其中所存储的数据是映射目前逻辑页地址的有效数据。
例如,以图6A与6B为例,当欲判断实体页地址PBA-(0)是否为有效的实体页地址时,存储器管理单元204会从实体页转逻辑页映射表420中读出实体页地址PBA-(0)是映射逻辑页地址LBA-(0),并且依据逻辑页地址LBA-(0)从逻辑页转实体页映射表410读出逻辑页地址LBA-(0)是映射实体页地址PBA-(0),因此实体页地址PBA-(0)为有效的实体页地址。另外,当欲判断实体页地址PBA-(1)是否为有效的实体页地址时,存储器管理单元204会从实体页转逻辑页映射表420中读出实体页地址PBA-(1)是映射逻辑页地址LBA-(1),并且依据逻辑页地址LBA-(1)从逻辑页转实体页映射表410读出逻辑页地址LBA-(1)是映射实体页地址PBA-(L+1),因此实体页地址PBA-(1)为无效的实体页地址。也就是说,存储器管理单元204会依据待判断的实体页地址通过实体页转逻辑页映射表420与逻辑页转实体页映射表410查询待判断的实体页地址映射的逻辑页地址所映射的实体页地址,倘若待判断的实体页地址和所查询的实体页地址相符时,则此待判断的实体页地址为有效的实体页地址,反之则为无效的实体页地址。
由于闪存芯片106是以实体区块作为抹除的最小单位,因此存储器管理单元204可通过上述比对将有效的实体页地址中的数据进行合并以释放无效的实体页地址来写入新的数据。例如,存储器管理单元204可将至少一个实体区块中有效实体页地址中的数据复制到未写入任何数据的实体区块的实体页地址中,并且将此实体区块进行抹除运作,由此可将分散的有效数据合并并且将无效的实体页地址释放出来(以下称为无效数据抹除程序)。
例如,在进行有效数据合并以释放无效的实体页地址后,存储器管理单元204会更新实体页转逻辑页映射表420,以将所抹除的实体区块的实体页地址的映射关系更新为空值(例如,“NULL”)。
特别是,如上所述,闪存存储装置100是轮替使用实体区块来存储数据,因此,为了能使闪存存储装置100正常运作,存储器管理单元204会在每次从备用区304b中提取实体区块前确认备用区304b中的的数目是否小于一备用实体区块数阈值。倘若备用区304b中的的数目小于备用实体区块数阈值时,存储器管理单元204会执行上述无效数据抹除程序以将存储无效数据的实体区块进行抹除,并将所抹除的实体区块关联为备用区304b,以释放存储无效数据的实体区块。例如,在本实施例中,备用实体区块数阈值设定为5。然而,必须了解的是,本发明不限于此,备用实体区块数阈值可被设定为其他适当的数值。
值得一提的是,上述依据图3所示的映射关系以及图4A、图4B、图5A、图5B、图6A与图6B所示的写入运作也可称为以页面为基础(page-based)的闪存管理模式。
在本实施例中,当存储器管理单元204使用以页面为基础(page-based)的闪存管理模式来写入数据时,存储器管理单元204会确保每一逻辑区块的数据散乱度不大于一逻辑区块数据散乱度阈值。具体来说,由于主机***1000在逻辑页地址LBA-(0)~LBA(L)中写入数据,主机***1000未必会依据逻辑页地址LBA-(0)~LBA(L)的顺序来写入数据。因此,当闪存存储装置100经过一段时间的写入运作后,属于同一个逻辑区块的数据可能会分散地存储于多个实体区块中,其中逻辑区块的数据散乱度就是指被用来存储此逻辑区块的数据的实体区块的数目。在本发明中,逻辑区块数据散乱度阈值可以是大于零的任意正整数,例如,逻辑区块数据散乱度阈值可以为2、4、8或16。
在本实施例中,当主机接口单元206从该主机***1000中接收主机写入指令以及欲写入的写入数据时,存储器管理单元204会确认主机写入指令中所指示的逻辑页地址所属的逻辑区块。在此,目前所接收的主机写入指令中所指示的逻辑地址称为“被写入逻辑地址”,并且目前所接收的主机写入指令中所指示的逻辑地址所属的逻辑区块称为“被写入逻辑区块”。例如,存储器管理单元204可依据一数学运算式来计算出主机写入指令中的逻辑页地址所属的逻辑区块,或者依据逻辑地址-逻辑区块映射表来查询主机写入指令中的逻辑页地址所属的逻辑区块。并且,存储器管理单元204会依据被写入逻辑区块的数据散乱度、目前可写入实体页地址和逻辑区块数据散乱度阈值来决定用于此写入数据的实体页地址。
图7A、图7B与图7C是本发明第一实施例的一数据写入示意图,其中假设每个实体区块具有4个实体页地址且逻辑区块数据散乱度阈值为2。
请参照图7A,假设实体区块122-(S+1)的其中2个实体页地址存储有属于逻辑区块350-(0)的数据且另2个实体页地址存储有属于逻辑区块350-(3)的数据;实体区块122-(S+2)的实体页地址都存储有属于逻辑区块350-(1)的数据;实体区块122-(D)的前2个实体页地址存储有属于逻辑区块350-(2)的数据;并且目前可写入实体页指针所指向的目前可写入实体页地址为实体区块122-(D)的第3个实体页地址。
请参照图7B,当主机接口单元206从主机***1000中接收到主机写入指令,且存储器管理单元204判断主机***1000欲写入数据的逻辑页地址是属于逻辑区块350-(3)时,存储器管理单元204会判断逻辑区块350-(3)的数据散乱度为1并且目前可写入实体页指针所指向的目前可写入实体页地址所属的实体区块122-(D)未存储有逻辑区块350-(3)的数据。在本实施例中,由于逻辑区块350-(3)的数据散乱度为1,其小于逻辑区块数据散乱度阈值,因此,当属于逻辑区块350-(3)的写入数据被写入至实体区块122-(D)时,逻辑区块350-(3)的数据散乱度仅会增加1变为2,其未超过逻辑区块数据散乱度阈值。基于此,存储器管理单元204会将写入数据写入至实体区块122-(D)的第3个实体页地址。
请参照图7C,在图7B所示的状态且目前可写入实体页指针所指向的目前可写入实体页地址为实体区块122-(D)的第4个实体页地址的例子中,当主机接口单元206从主机***1000中接收到主机写入指令,且存储器管理单元204判断主机***1000欲写入数据的逻辑页地址也是属于逻辑区块350-(3)时,存储器管理单元204会判断逻辑区块350-(3)的数据散乱度为2,其等于逻辑区块数据散乱度阈值,并且目前可写入实体页指针所指向的目前可写入实体页地址所属的实体区块存储有逻辑区块350-(3)的数据。在本实施例中,由于目前可写入实体页指针所指向的目前可写入实体页地址所属的实体区块122-(D)存储有逻辑区块350-(3)的数据,因此,当属于逻辑区块350-(3)的写入数据被写入至实体区块122-(D)时,逻辑区块350-(3)的数据散乱度仍会维持为2,其未超过逻辑区块数据散乱度阈值。基于此,存储器管理单元204会将写入数据写入至实体区块122-(D)的第4个实体页地址。
图8A与图8B是本发明第一实施例的另一数据写入示意图,其中假设每个实体区块具有4个实体页地址且逻辑区块数据散乱度阈值为2。
请参照图8A,假设实体区块122-(S+1)的其中2个实体页地址存储有属于逻辑区块350-(0)的数据且另2个实体页地址存储有属于逻辑区块350-(3)的数据;实体区块122-(S+2)的其中3个实体页地址存储有属于逻辑区块350-(1)的数据且另1个实体页地址存储有属于逻辑区块350-(3)的数据;实体区块122-(D)的前2个实体页地址存储有属于逻辑区块350-(2)的数据;并且目前可写入实体页指针所指向的目前可写入实体页地址为实体区块122-(D)的第3个实体页地址。
请参照图8B,当主机接口单元206从主机***1000中接收到主机写入指令,且存储器管理单元204判断主机***1000欲写入数据的逻辑页地址是属于逻辑区块350-(3)时,存储器管理单元204会判断逻辑区块350-(3)的数据散乱度为2并且目前可写入实体页指针所指向的目前可写入实体页地址所属的实体区块122-(D)未存储有逻辑区块350-(3)的数据。在本实施例中,存储器管理单元204还会判断实体区块122-(D)的剩余可存储空间是否足够存储写入数据和逻辑区块350-(3)的其他数据。具体来说,由于逻辑区块350-(3)的数据散乱度不能大于2,因此,当存储器管理单元204欲在实体区块122-(D)中写入属于逻辑区块350-(3)的写入数据时,存储器管理单元204必须搬移存储在其他实体区块中属于逻辑区块350-(3)的数据以使得逻辑区块350-(3)的数据散乱度仍维持小于或等于2。基于此,在实体区块122-(D)的剩余存储空间足够存储写入数据和在用于存储逻辑区块350-(3)的数据的实体区块(即,实体区块122-(S+1)与实体区块122-(S+2))之中的其中一个实体区块(例如,实体区块122-(S+2))中属于逻辑区块350-(3)的所有数据的情况下,存储器管理单元204会将写入数据和存储于实体区块122-(S+2)中的逻辑区块350-(3)的所有数据写入至实体区块122-(D)中。也就是说,由于实体区块122-(S+1)中存有2个实体页地址大小的属于逻辑区块350-(3)的数据而实体区块122-(S+2)中存有1个实体页地址大小的属于逻辑区块350-(3)的数据,因此,在实体区块122-(D)仅剩1个实体页地址可容纳所搬移的数据的情况下,存储器管理单元204会选择将实体区块122-(S+2)的第4个实体页地址的数据搬移至实体区块122-(D),并且将实体区块122-(S+2)的第4个实体页地址标示为无效,由此逻辑区块350-(3)的数据散乱度仍为2。
图9A与图9B是本发明第一实施例的又一数据写入示意图,其中假设每个实体区块具有4个实体页地址且逻辑区块数据散乱度阈值为2。
请参照图9A,假设实体区块122-(S+1)的其中2个实体页地址存储有属于逻辑区块350-(0)的数据且另2个实体页地址存储有属于逻辑区块350-(3)的数据;实体区块122-(S+2)的其中3个实体页地址存储属于逻辑区块350-(1)的数据且另1个实体页地址存储有属于逻辑区块350-(3)的数据;实体区块122-(D)的前3个实体页地址存储有属于逻辑区块350-(2)的数据;并且目前可写入实体页指针所指向的目前可写入实体页地址为实体区块122-(D)的第4个实体页地址。
请参照图9B,当主机接口单元206从主机***1000中接收到主机写入指令,且存储器管理单元204判断主机***1000欲写入数据的逻辑页地址是属于逻辑区块350-(3)时,存储器管理单元204会判断逻辑区块350-(3)的数据散乱度为2并且目前可写入实体页指针所指向的目前可写入实体页地址所属的实体区块122-(D)未存储有逻辑区块350-(3)的数据。类似上述,存储器管理单元204还会判断实体区块122-(D)的剩余可存储空间是否足够存储写入数据和已写入于其他实体区块(例如,实体区块122-(S+1)或实体区块122-(S+2))中属于逻辑区块350-(3)的所有数据。在本实施例中,由于实体区块122-(D)的剩余可存储空间不足够存储写入数据和在用于存储逻辑区块350-(3)的数据的实体区块(即,实体区块122-(S+1)与实体区块122-(S+2))之中的任一个实体区块中属于逻辑区块350-(3)的所有数据,所以存储器管理单元204会从备用区304b中提取一个实体区块(例如,实体区块122-(D+1)),并且将写入数据和存储在用于存储逻辑区块350-(3)的数据的实体区块之中的其中一个实体区块中属于逻辑区块350-(3)的所有数据写入至实体区块122-(D+1)中。在本实施例中,存储器管理单元204会先选择需搬移的数据较少的实体区块来进行搬移,避免因搬移数据而大幅增加执行主机写入指令所需的时间。也就是说,在本实施例中,存储器管理单元204会选择将实体区块122-(S+2)的第4个实体页地址的数据搬移至实体区块122-(D+1),并且将实体区块122-(S+2)的第4个实体页地址标示为无效,由此逻辑区块350-(3)的数据散乱度仍为2。
图10是本发明第一实施例的数据写入方法的流程图。
请参照图10,在步骤S1001中闪存控制器104的主机接口单元206经由连接器102从主机***1000中接收主机写入指令与写入数据。
在步骤S1003中存储器管理单元204依据主机写入指令的被写入逻辑页地址判断被写入逻辑区块,并且在步骤S1005存储器管理单元204判断目前可写入实体页地址。例如,在步骤S1005中存储器管理单元204是根据可写入实体页指针来判断目前可写入实体页地址。
接着,在步骤S1007中存储器管理单元204会依据被写入逻辑区块的数据散乱度以及目前可写入实体页地址来将写入数据写入至闪存芯片106的实体页地址中。
图11是图10中步骤S1007的详细步骤的流程图。
请参照图11,在步骤S1101中存储器管理单元204会判断被写入逻辑区块的数据散乱度是否等于逻辑区块数据散乱度阈值。值得一提的是,存储器管理单元204会使每一逻辑区块的数据散乱度不超过逻辑区块数据散乱度阈值,因此,在步骤S1101的判断中仅会出现被写入逻辑区块的数据散乱度等于逻辑区块数据散乱度阈值或者被写入逻辑区块的数据散乱度小于逻辑区块数据散乱度阈值的情况,而不会出现被写入逻辑区块的数据散乱度大于逻辑区块数据散乱度阈值的情况。
倘若在步骤S1101中判断被写入逻辑区块的数据散乱度不等于逻辑区块数据散乱度阈值(即,被写入逻辑区块的数据散乱度小于逻辑区块数据散乱度)时,则在步骤S1103中存储器管理单元204会将写入数据写入至目前可写入实体页地址中。之后,在步骤S1105中存储器管理单元204会更新逻辑页地址与实体页地址之间的映射关系,并且图11所示的流程会被结束。例如,在步骤S1105中存储器管理单元204会更新逻辑页转实体页映射表410与实体页转逻辑页映射表420来记录逻辑页地址与实体页地址之间的新映射关系。
倘若在步骤S1101中判断被写入逻辑区块的数据散乱度等于逻辑区块数据散乱度阈值时,则在步骤S1107中存储器管理单元204会判断在目前可写入实体区块(即,目前可写入实体页地址所属的实体区块)中是否存储有属于被写入逻辑区块的数据。倘若在目前可写入实体区块中存储有属于被写入逻辑区块的数据,则执行步骤S1103。
倘若在步骤S1107中判断在目前可写入实体区块中未存储有属于被写入逻辑区块的数据,则在步骤S1109中存储器管理单元204会判断在目前可写入实体区块中是否有足够的存储空间来存储写入数据和在用于存储被写入逻辑区块的数据的实体区块之中的其中一个实体区块中属于被写入逻辑区块的所有数据。
倘若在步骤S1109中判断在目前可写入实体区块中有足够的存储空间来存储写入数据和在用于存储被写入逻辑区块的数据的实体区块之中的其中一个实体区块中属于被写入逻辑区块的所有数据时,则在步骤S1111中存储器管理单元204会将写入数据写入至目前可写入实体页地址中并且将在用于存储被写入逻辑区块的数据的实体区块之中的其中一个实体区块中属于被写入逻辑区块的所有数据搬移至目前可写入实体区块中。之后,步骤S1105会被执行。
倘若在步骤S1109中判断在目前可写入实体区块中无足够的存储空间来存储写入数据和在用于存储被写入逻辑区块的数据的实体区块之中的其中一个实体区块中属于被写入逻辑区块的所有数据时,则在步骤S1113中存储器管理单元204会判断备用区304b中的实体区块的数目是否小于备用实体区块数阈值。倘若备用区304b中的实体区块的数目小于备用实体区块数阈值,则在步骤S1115中存储器管理单元204会执行无效数据抹除程序以释放存储无效数据的实体区块,并且执行步骤S1113。
倘若在步骤S1113中判断备用区304b中的实体区块的数目非小于备用实体区块数阈值,则在步骤S1117中存储器管理单元204会从备用区304b中提取一个实体区块并且将写入数据和在用于存储被写入逻辑区块的数据的实体区块之中的其中一个实体区块中属于被写入逻辑区块的所有数据写入至所提取的实体区块中。
第二实施例
本发明第二实施例的闪存存储装置与主机***本质上是与第一实施例的闪存存储装置与主机***相同,其中差异在于第一实施例的存储器管理单元依据每一逻辑区块的数据散乱度来将数据写入至闪存芯片,而在第二实施例中存储器管理单元依据每一逻辑区块的数据散乱度和每一实体区块的数据散乱度来将数据写入至闪存芯片。以下将结合第一实施例的图1A、图1D、图3A与图3B来描述第二实施例。在第二实施例中,存储器管理单元204也是类似于图4A、图4B、图5A、图5B、图6A与图6B所示的方式以页面为基础来管理闪存芯片106。
在本实施例中,当存储器管理单元204使用以页面为基础的闪存管理模式来写入数据时,存储器管理单元204会确保每一逻辑区块的数据散乱度不大于逻辑区块数据散乱度阈值并且每一实体区块的数据散乱度不大于实体区块数据散乱度阈值。在此,实体区块的数据散乱度就是指此实体区块所存储的数据所属的逻辑区块的数目。如上所述,由于主机***1000未必会依据逻辑页地址的顺序来写入数据,因此当闪存存储装置100经过一段时间的写入运作后,在同一个实体区块中有可能会存储属于多个逻辑区块的数据。在本发明中,实体区块数据散乱度阈值可以是大于零的任意正整数,例如,实体区块数据散乱度阈值可以为2、4、8或16。
图12A与图12B是本发明第二实施例的一数据写入示意图,其中假设每个实体区块具有4个实体页地址且逻辑区块数据散乱度阈值与实体区块数据散乱度阈值都为2。
请参照图12A,假设实体区块122-(S+1)的其中3个实体页地址存储有属于逻辑区块350-(0)的数据且另1个实体页地址存储有属于逻辑区块350-(3)的数据;实体区块122-(S+2)的其中3个实体页地址存储有属于逻辑区块350-(1)的数据且另1个实体页地址存储有属于逻辑区块350-(2)的数据;实体区块122-(D)的其中1个实体页地址存储有属于逻辑区块350-(2)的数据且另1个实体页地址存储有属于逻辑区块350-(3)的数据;并且目前可写入实体页指针所指向的目前可写入实体页地址为实体区块122-(D)的第3个实体页地址。
请参照图12B,当主机接口单元206从主机***1000中接收到主机写入指令,且存储器管理单元204判断主机***1000欲写入数据的逻辑页地址是属于逻辑区块350-(3)时,存储器管理单元204会判断逻辑区块350-(3)的数据散乱度为2,目前可写入实体页指针所指向的目前可写入实体页地址所属的实体区块122-(D)的数据散乱度为2,并且目前可写入实体页指针所指向的目前可写入实体页地址所属的实体区块122-(D)存储有逻辑区块350-(3)的数据。在本实施例中,由于目前可写入实体页地址所属的实体区块122-(D)存储有逻辑区块350-(3)的数据,因此当写入数据被写入至实体区块122-(D)时,实体区块122-(D)的数据散乱度仍会维持为2且逻辑区块350-(3)的数据散乱度也会维持为2。也就是说,每一逻辑区块的数据散乱度皆不大于逻辑区块数据散乱度阈值并且每一实体区块的数据散乱度不大于实体区块数据散乱度阈值。基于此,在本实施例中,存储器管理单元204会将写入数据写入至目前可写入实体页指针所指向的目前可写入实体页地址中。
图13A与图13B是本发明第二实施例的另一数据写入示意图,其中假设每个实体区块具有4个实体页地址且逻辑区块数据散乱度阈值与实体区块数据散乱度阈值都为2。
请参照图13A,假设实体区块122-(S+1)的其中2个实体页地址存储有属于逻辑区块350-(0)的数据且另2个实体页地址存储有属于逻辑区块350-(3)的数据;实体区块122-(S+2)的实体页地址都存储属于逻辑区块350-(1)的数据;实体区块122-(D)的其中1个实体页地址存储有属于逻辑区块350-(2)的数据且另1个实体页地址存储有属于逻辑区块350-(4)的数据;并且目前可写入实体页指针所指向的目前可写入实体页地址为实体区块122-(D)的第3个实体页地址。
请参照图13B,当主机接口单元206从主机***1000中接收到主机写入指令,且存储器管理单元204判断主机***1000欲写入数据的逻辑页地址是属于逻辑区块350-(3)时,存储器管理单元204会判断逻辑区块350-(3)的数据散乱度为1,目前可写入实体页指针所指向的目前可写入实体页地址所属的实体区块122-(D)的数据散乱度为2,并且目前可写入实体页指针所指向的目前可写入实体页地址所属的实体区块122-(D)未存储有逻辑区块350-(3)的数据。在本实施例中,若仅考量逻辑区块350-(3)的数据散乱度下,属于逻辑区块350-(3)的写入数据是可被写入至实体区块122-(D),但由于目前可写入实体区块122-(D)的数据散乱度为2,因此将属于逻辑区块350-(3)的写入数据写入至实体区块122-(D)后实体区块122-(D)的数据散乱度会变成3,其会超过实体区块数据散乱度阈值。因此,在本实施例中,存储器管理单元204从备用区304b中提取一个实体区块(例如,实体区块122-(D+1)),并且将写入数据写入至实体区块122-(D+1)中。由此,存储器管理单元204能使实体区块122-(D)的数据散乱度为2,逻辑区块350-(3)的数据散乱度为2,且实体区块122-(D+1)的数据散乱度为1,以致于每一逻辑区块的数据散乱度皆不大于逻辑区块数据散乱度阈值并且每一实体区块的数据散乱度不大于实体区块数据散乱度阈值。
图14A与图14B是本发明第二实施例的又一数据写入示意图,其中假设每个实体区块具有4个实体页地址,且逻辑区块数据散乱度阈值与实体区块数据散乱度阈值都为2。
请参照图14A,假设实体区块122-(S+1)的其中2个实体页地址存储有属于逻辑区块350-(0)的数据且另2个实体页地址存储有属于逻辑区块350-(3)的数据;实体区块122-(S+2)的其中3个实体页地址存储有属于逻辑区块350-(1)的数据且另1个实体页地址存储属于逻辑区块350-(3)的数据;实体区块122-(D)的其中1个实体页地址存储有属于逻辑区块350-(2)的数据且另1个实体页地址存储有属于逻辑区块350-(4)的数据,并且目前可写入实体页指针所指向的目前可写入实体页地址为实体区块122-(D)的第3个实体页地址。
请参照图14B,当主机接口单元206从主机***1000中接收到主机写入指令,且存储器管理单元204判断主机***1000欲写入数据的逻辑页地址是属于逻辑区块350-(3)时,存储器管理单元204会判断逻辑区块350-(3)的数据散乱度为2,目前可写入实体页指针所指向的目前可写入实体页地址所属的实体区块122-(D)的数据散乱度为2,并且目前可写入实体页指针所指向的目前可写入实体页地址所属的实体区块122-(D)未存储有逻辑区块350-(3)的数据。类似于图13A与13B所示,由于目前可写入实体区块122-(D)的数据散乱度为2,因此将属于逻辑区块350-(3)的写入数据写入至实体区块122-(D)后会使得实体区块122-(D)的数据散乱度变成3,其会超过实体区块数据散乱度阈值。因此,在本实施例中,存储器管理单元204从备用区304b中提取一个实体区块(例如,实体区块122-(D+1)),并且将写入数据写入至实体区块122-(D+1)中,以使得每一实体区块的数据散乱度皆不大于实体区块数据散乱度阈值。此外,在将写入数据写入至实体区块122-(D+1)后,逻辑区块350-(3)的数据散乱度会变为3,因此存储器管理单元204会将在用于存储逻辑区块350-(3)的数据的实体区块(即,实体区块122-(S+1)与实体区块122-(S+2))之中的任一个实体区块中属于逻辑区块350-(3)的所有数据搬移至实体区块122-(D+1),以使得逻辑区块350-(3)的数据散乱度仍维持小于或等于2。在本实施例中,存储器管理单元204会优先选择需搬移的数据较少的实体区块来进行搬移,避免因搬移数据而大幅增加执行主机写入指令所需的时间。也就是说,存储器管理单元204会选择将实体区块122-(S+2)的第4个实体页地址的数据搬移至实体区块122-(D+1),并且将实体区块122-(S+2)的第4个实体页地址标示为无效,由此逻辑区块350-(3)的数据散乱度仍为2。
图15是本发明第二实施例的数据写入方法的流程图。
请参照图15,在步骤S1501中闪存控制器104的主机接口单元206经由连接器102从主机***1000中接收主机写入指令与写入数据。
在步骤S1503中存储器管理单元204依据主机写入指令的被写入逻辑页地址判断被写入逻辑区块,并且在步骤S1505存储器管理单元204判断目前可写入实体页地址。接着,在步骤S1507中存储器管理单元204会依据被写入逻辑区块的数据散乱度、目前可写入实体页地址以及目前可写入实体页地址所属的实体区块的数据散乱度来将写入数据写入至闪存芯片106的实体页地址中。
图16A与16B是图15中步骤S1507的详细步骤的流程图,其中图16A的部分步骤示于图16B中(即,节点A与节点B之间的步骤)。
请参照图16A,在步骤S1601中存储器管理单元204会判断目前可写入实体区块(即,目前可写入实体页地址所属的实体区块)的数据散乱度是否等于实体区块数据散乱度阈值。值得一提的是,类似于逻辑区块的数据散乱度的判断,存储器管理单元204会使每一实体区块的数据散乱度不超过实体区块数据散乱度阈值,因此,在步骤S1601的判断中仅会出现实体区块的数据散乱度等于实体区块数据散乱度阈值或者实体区块的数据散乱度小于实体区块数据散乱度的情况,而不会出现实体区块的数据散乱度大于实体区块数据散乱度的情况。
倘若在步骤S1601中判断目前可写入实体区块的数据散乱度不等于实体区块数据散乱度阈值(即,目前可写入实体区块的数据散乱度小于实体区块数据散乱度阈值)时,则执行图16B中的步骤S1603。
请参照图16B,在步骤S1603中存储器管理单元204会判断被写入逻辑区块的数据散乱度是否等于逻辑区块数据散乱度阈值。
倘若在步骤S1603中判断被写入逻辑区块的数据散乱度不等于逻辑区块数据散乱度阈值(即,被写入逻辑区块的数据散乱度小于逻辑区块数据散乱度)时,则在步骤S1605中存储器管理单元204会将写入数据写入至目前可写入实体页地址中。之后,图16A中的步骤S1607会被执行(即,节点B之后的步骤),其中在步骤S1607中存储器管理单元204会更新逻辑页地址与实体页地址之间的映射关系,并且图16所示的流程会被结束。例如,在步骤S1607中存储器管理单元204会更新逻辑页转实体页映射表410与实体页转逻辑页映射表420来记录逻辑页地址与实体页地址之间的新映射关系。
倘若在步骤S1603中判断被写入逻辑区块的数据散乱度等于逻辑区块数据散乱度阈值时,则在步骤S1609中存储器管理单元204会判断在目前可写入实体区块中是否存储有属于被写入逻辑区块的数据。倘若在目前可写入实体区块中存储有属于被写入逻辑区块的数据,则执行步骤S1605。
倘若在步骤S1609中判断在目前可写入实体区块中未存储有属于被写入逻辑区块的数据,则在步骤S1611中存储器管理单元204会判断在目前可写入实体区块中是否有足够的存储空间来存储写入数据和在用于存储被写入逻辑区块的数据的实体区块之中的其中一个实体区块中属于被写入逻辑区块的所有数据。
倘若在步骤S1611中判断在目前可写入实体区块中有足够的存储空间来存储写入数据和在用于存储被写入逻辑区块的数据的实体区块之中的其中一个实体区块中属于被写入逻辑区块的所有数据时,则在步骤S1613中存储器管理单元204会将写入数据写入至目前可写入实体页地址中并且将在用于存储被写入逻辑区块的数据的实体区块之中的其中一个实体区块中属于被写入逻辑区块的所有数据搬移至目前可写入实体区块中。之后,图16A中的步骤S1607会被执行。
倘若在步骤S1611中判断在目前可写入实体区块中无足够的存储空间来存储写入数据和在用于存储被写入逻辑区块的数据的实体区块之中的其中一个实体区块中属于被写入逻辑区块的所有数据时,则在步骤S1615中存储器管理单元204会判断备用区304b中的实体区块的数目是否小于备用实体区块数阈值。倘若备用区304b中的实体区块的数目非小于备用实体区块数阈值,则在步骤S1617中存储器管理单元204会从备用区304b中提取一个实体区块并且将写入数据和在用于存储被写入逻辑区块的数据的实体区块之中的其中一个实体区块中属于被写入逻辑区块的所有数据写入至所提取的实体区块中。之后,图16A中的步骤S1607会被执行。
倘若在步骤S1615中判断备用区304b中的实体区块的数目小于备用实体区块数阈值,则在步骤S1619中存储器管理单元204会执行无效数据抹除程序以释放存储无效数据的实体区块,并且执行步骤S1615。
倘若在步骤S1601中判断目前可写入实体区块的数据散乱度等于实体区块数据散乱度阈值时,则在步骤S1621中存储器管理单元204会判断在目前可写入实体区块中是否存储有属于被写入逻辑区块的数据。倘若在目前可写入实体区块中存储有属于被写入逻辑区块的数据,则执行图16B中的步骤S1603。
倘若在步骤S1621中判断在目前可写入实体区块中未存储有属于被写入逻辑区块的数据,则在步骤S1623中存储器管理单元204会判断备用区304b中的实体区块的数目是否小于备用实体区块数阈值。倘若备用区304b中的实体区块的数目小于备用实体区块数阈值,则在步骤S1625中存储器管理单元204会执行无效数据抹除程序,以释放存储无效数据的实体区块,并且执行步骤S1623。
倘若在步骤S1623中判断备用区304b中的实体区块的数目非小于备用实体区块数阈值,则在步骤S1627中存储器管理单元204会判断被写入逻辑区块的数据散乱度是否等于逻辑区块数据散乱度阈值。倘若判断被写入逻辑区块的数据散乱度不等于逻辑区块数据散乱度阈值时,则在步骤S1629中存储器管理单元204会从备用区304b中提取一个实体区块并且将写入数据写入至所提取的实体区块中。之后,步骤S1607会被执行。
倘若在步骤S1627中判断被写入逻辑区块的数据散乱度等于逻辑区块数据散乱度阈值时,则在步骤S1631中存储器管理单元204会从备用区304b中提取一个实体区块并且将写入数据和在用于存储被写入逻辑区块的数据的实体区块之中的其中一个实体区块中属于被写入逻辑区块的所有数据写入至所提取的实体区块中。之后,步骤S1607会被执行。
值得一提的是,在上述实施中,存储器管理单元204会搬移用于存储被写入逻辑区块的数据的实体区块之中的其中一个实体区块中属于被写入逻辑区块的所有数据来使被写入逻辑区块的数据散乱度仍维持不大于逻辑区块数据散乱度阈值。然而,本发明不限于此,在本发明另一实施例中,当存储空间足够时,存储器管理单元204也可搬移用于存储被写入逻辑区块的数据的实体区块之中的多个实体区块中属于被写入逻辑区块的所有数据,以使被写入逻辑区块的数据更为集中。
必须了解的是,图7A、图7B、图7C、图8A、图8B、图9A、图9B、图12A、图12B、图13A、图13B、图14A与图14B所示的简单实施例仅是用于说明本发明,并非限制本发明。在本发明实施例中,闪存芯片106的每一实体区块是具有64个、128个、256个或更多实体页地址。
综上所述,根据本发明实施例的数据写入方法会依据每一逻辑区块的数据散乱度来决定用于写入数据的实体页地址,由此可有效地避免属于同一个逻辑区块的数据被分散地存储于过多个实体区块中。基此,可减少整理有效数据的时间,由此提升执行主机写入指令的速度。此外,根据本发明实施例的数据写入方法会依据每一逻辑区块的数据散乱度以及每一实体区块的数据散乱度来决定用于写入数据的实体页地址,由此可有效地避免属于同一个逻辑区块的数据被分散地存储于过多个实体区块中以及同一个实体区块中存储有过多属于不同逻辑区块的数据。基于此,可进一步减少整理有效数据的时间,由此提升执行主机写入指令的速度。
最后应说明的是:以上实施例仅用以说明本发明的技术方案而非对其进行限制,尽管参照较佳实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对本发明的技术方案进行修改或者等同替换,而这些修改或者等同替换亦不能使修改后的技术方案脱离本发明技术方案的精神和范围。
Claims (26)
1.一种数据写入方法,用于将来自于一主机***的数据写入至一闪存芯片中,其中所述闪存芯片包括多个实体区块,每一所述实体区块具有多个实体页地址,所述数据写入方法包括:
配置多个逻辑页地址;
将所述多个逻辑页地址分组为多个逻辑区块;
记录每一所述逻辑区块的一数据散乱度,其中每一所述逻辑区块的数据散乱度为用于存储属于对应的逻辑区块的数据的实体区块的数目;
从所述主机***中接收一写入数据,其中所述写入数据是欲被写入至一第一逻辑页地址,所述第一逻辑页地址属于一第一逻辑区块,所述第一逻辑页地址为所述多个逻辑页地址的其中之一,且所述第一逻辑区块为所述多个逻辑区块的其中之一;
取得一第一实体页地址,其中所取得的第一实体页地址为所述多个实体页地址的其中之一;以及
依据所述第一逻辑区块的数据散乱度以及所取得的第一实体页地址来将所述写入数据写入至所述闪存芯片中,
其中每一所述逻辑区块的数据散乱度皆不大于一逻辑区块数据散乱度阈值。
2.根据权利要求1所述的数据写入方法,还包括将所述多个实体区块至少分组为一数据区与一备用区。
3.根据权利要求1所述的数据写入方法,其中依据所述第一逻辑区块的数据散乱度以及所取得的第一实体页地址来将所述写入数据写入至所述闪存芯片中的步骤包括:
当D1<TH1时,则将所述写入数据写入至所取得的第一实体页地址中,
其中D1为所述第一逻辑区块的数据散乱度,TH1为所述逻辑区块数据散乱度阈值。
4.根据权利要求2所述的数据写入方法,其中依据所述第一逻辑区块的数据散乱度以及所取得的第一实体页地址来将所述写入数据写入至所述闪存芯片中的步骤还包括:
当D1=TH1时,则判断所取得的第一实体页地址所属的实体区块是否存储有所述第一逻辑区块的数据,其中当所取得的第一实体页地址所属的实体区块存储有所述第一逻辑区块的数据,则将所述写入数据写入至所取得的第一实体页地址中,
其中当所取得的第一实体页地址所属的实体区块无存储有所述第一逻辑区块的数据,则判断所取得的第一实体页地址所属的实体区块的剩余存储空间是否足够写入所述写入数据和在用于存储所述第一逻辑区块的数据的实体区块之中的其中一个实体区块中属于所述第一逻辑区块的所有数据,
其中当所取得的第一实体页地址所属的实体区块的剩余存储空间足够写入所述写入数据和在用于存储所述第一逻辑区块的数据的实体区块之中的其中一个实体区块中属于所述第一逻辑区块的所有数据时,则将所述写入数据写入至所取得的第一实体页地址中并且将在用于存储所述第一逻辑区块的数据的实体区块之中的其中一个实体区块中属于所述第一逻辑区块的所有数据写入至所取得的第一实体页地址所属的实体区块中,
其中当所取得的第一实体页地址所属的实体区块的剩余存储空间不足够写入所述写入数据和在用于存储所述第一逻辑区块的数据的实体区块之中的其中一个实体区块中属于所述第一逻辑区块的所有数据时,则从所述备用区的实体区块之中选择其中一个实体区块并且将所述写入数据和在用于存储所述第一逻辑区块的数据的实体区块之中的其中一个实体区块中属于所述第一逻辑区块的所有数据写入至所选择的实体区块中,
其中D1为所述第一逻辑区块的数据散乱度,TH1为所述逻辑区块数据散乱度阈值。
5.根据权利要求2所述的数据写入方法,还包括:
记录每一所述实体区块的一数据散乱度,其中每一所述实体区块的数据散乱度为存储于对应的实体区块中的数据所属的逻辑区块的数目。
6.根据权利要求5所述的数据写入方法,其中依据所述第一逻辑区块的数据散乱度以及所取得的第一实体页地址来将所述写入数据写入至所述闪存芯片中的步骤包括:
依据所述第一逻辑区块的数据散乱度、所取得的第一实体页地址以及所取得的第一实体页地址所属的实体区块的数据散乱度来将所述写入数据写入至所述闪存芯片中,
其中每一所述实体区块的数据散乱度皆不大于一实体区块数据散乱度阈值。
7.根据权利要求6所述的数据写入方法,其中依据所述第一逻辑区块的数据散乱度、所取得的第一实体页地址以及所取得的第一实体页地址所属的实体区块的数据散乱度来将所述写入数据写入至所述闪存芯片中的步骤包括:
当D1<TH1并且D2<TH2时,则将所述写入数据写入至所取得的第一实体页地址中,
其中D1为所述第一逻辑区块的数据散乱度,TH1为所述逻辑区块数据散乱度阈值,D2为所取得的第一实体页地址所属的实体区块的数据散乱度,并且TH2为所述实体区块数据散乱度阈值。
8.根据权利要求6所述的数据写入方法,其中依据所述第一逻辑区块的数据散乱度、所取得的第一实体页地址以及所取得的第一实体页地址所属的实体区块的数据散乱度来将所述写入数据写入至所述闪存芯片中的步骤包括:
当D1<TH1并且D2=TH2时,则判断所取得的第一实体页地址所属的实体区块是否存储有所述第一逻辑区块的数据,其中当所取得的第一实体页地址所属的实体区块无存储有所述第一逻辑区块的数据,则从所述备用区的实体区块之中选择其中一个实体区块并且将所述写入数据写入至所选择的实体区块中,并且当所取得的第一实体页地址所属的实体区块存储有所述第一逻辑区块的数据,则将所述写入数据写入至所取得的第一实体页地址中,其中D1为所述第一逻辑区块的数据散乱度,TH1为所述逻辑区块数据散乱度阈值,D2为所取得的第一实体页地址所属的实体区块的数据散乱度,并且TH2为所述实体区块数据散乱度阈值。
9.根据权利要求6所述的数据写入方法,其中依据所述第一逻辑区块的数据散乱度、所取得的第一实体页地址以及所取得的第一实体页地址所属的实体区块的数据散乱度来将所述写入数据写入至所述闪存芯片中的步骤包括:
当D1=TH1并且D2=TH2时,则判断所取得的第一实体页地址所属的实体区块是否存储有所述第一逻辑区块的数据,其中当所取得的第一实体页地址所属的实体区块无存储有所述第一逻辑区块的数据,则从所述备用区的实体区块之中选择其中一个实体区块并且将所述写入数据和在用于存储所述第一逻辑区块的数据的实体区块之中的其中一个实体区块中属于所述第一逻辑区块的所有数据写入至所选择的实体区块中,并且
当所取得的第一实体页地址所属的实体区块存储有所述第一逻辑区块的数据,则将所述写入数据写入至所取得的第一实体页地址中,其中D1为所述第一逻辑区块的数据散乱度,TH1为所述逻辑区块数据散乱度阈值,D2为所取得的第一实体页地址所属的实体区块的数据散乱度,并且TH2为所述实体区块数据散乱度阈值。
10.根据权利要求6所述的数据写入方法,其中依据所述第一逻辑区块的数据散乱度、所取得的第一实体页地址以及所取得的第一实体页地址所属的实体区块的数据散乱度来将所述写入数据写入至所述闪存芯片中的步骤包括:
当D1=TH1并且D2<TH2时,则判断所取得的第一实体页地址所属的实体区块是否存储有所述第一逻辑区块的数据,
其中当所取得的第一实体页地址所属的实体区块存储有所述第一逻辑区块的数据,则将所述写入数据写入至所取得的第一实体页地址中,
其中当所取得的第一实体页地址所属的实体区块无存储有所述第一逻辑区块的数据,则判断所取得的第一实体页地址所属的实体区块的剩余存储空间是否足够写入所述写入数据和在用于存储所述第一逻辑区块的数据的实体区块之中的其中一个实体区块中属于所述第一逻辑区块的所有数据,
其中当所取得的第一实体页地址所属的实体区块的剩余存储空间足够写入所述写入数据和在用于存储所述第一逻辑区块的数据的实体区块之中的其中一个实体区块中属于所述第一逻辑区块的所有数据时,则将所述写入数据写入至所取得的第一实体页地址中并且将在用于存储所述第一逻辑区块的数据的实体区块之中的其中一个实体区块中属于所述第一逻辑区块的所有数据写入至所取得的第一实体页地址所属的实体区块中,
其中当所取得的第一实体页地址所属的实体区块的剩余存储空间不足够写入所述写入数据和在用于存储所述第一逻辑区块的数据的实体区块之中的其中一个实体区块中属于所述第一逻辑区块的所有数据时,则从所述备用区的实体区块之中选择其中一个实体区块并且将所述写入数据和在用于存储所述第一逻辑区块的数据的实体区块之中的其中一个实体区块中属于所述第一逻辑区块的所有数据写入至所选择的实体区块,其中D1为所述第一逻辑区块的数据散乱度,TH1为所述逻辑区块数据散乱度阈值,D2为所取得的第一实体页地址所属的实体区块的数据散乱度,并且TH2为所述实体区块数据散乱度阈值。
11.一种闪存控制器,用于将来自于一主机***的数据写入至一闪存芯片中,其中所述闪存芯片包括多个实体区块,每一所述实体区块具有多个实体页地址,所述闪存控制器包括:
一微处理器单元;
一闪存接口单元,电性连接至所述微处理器单元,用以电性连接至所述闪存芯片;
一主机接口单元,电性连接至所述微处理器单元,用以电性连接至所述主机***;以及
一存储器管理单元,电性连接至所述微处理器单元,用以配置多个逻辑页地址,将所述多个逻辑页地址分组为多个逻辑区块,并且记录每一所述逻辑区块的一数据散乱度,其中每一所述逻辑区块的数据散乱度为用于存储属于对应的逻辑区块的数据的实体区块的数目,
其中所述主机接口单元从所述主机***中接收一写入数据,其中所述写入数据是欲被写入至一第一逻辑页地址,所述第一逻辑页地址属于一第一逻辑区块,所述第一逻辑页地址为所述多个逻辑页地址的其中之一,且所述第一逻辑区块为所述多个逻辑区块的其中之一,
其中所述存储器管理单元取得一第一实体页地址,其中所取得的第一实体页地址为所述多个实体页地址的其中之一,
其中所述存储器管理单元依据所述第一逻辑区块的数据散乱度以及所取得的第一实体页地址来将所述写入数据写入至所述闪存芯片中,
其中每一所述逻辑区块的数据散乱度皆不大于一逻辑区块数据散乱度阈值。
12.根据权利要求11所述的闪存控制器,其中所述存储器管理单元将所述多个实体区块至少分组为一数据区与一备用区。
13.根据权利要求11所述的闪存控制器,其中当D1<TH1时,则所述存储器管理单元将所述写入数据写入至所取得的第一实体页地址中,
其中D1为所述第一逻辑区块的数据散乱度,TH1为所述逻辑区块数据散乱度阈值。
14.根据权利要求12所述的闪存控制器,其中当D1=TH1时,则所述存储器管理单元判断所取得的第一实体页地址所属的实体区块是否存储有所述第一逻辑区块的数据,其中当所取得的第一实体页地址所属的实体区块存储有所述第一逻辑区块的数据,则所述存储器管理单元将所述写入数据写入至所取得的第一实体页地址中,
其中当所取得的第一实体页地址所属的实体区块无存储有所述第一逻辑区块的数据,则所述存储器管理单元判断所取得的第一实体页地址所属的实体区块的剩余存储空间是否足够写入所述写入数据和在用于存储所述第一逻辑区块的数据的实体区块之中的其中一个实体区块中属于所述第一逻辑区块的所有数据,
其中当所取得的第一实体页地址所属的实体区块的剩余存储空间足够写入所述写入数据和在用于存储所述第一逻辑区块的数据的实体区块之中的其中一个实体区块中属于所述第一逻辑区块的所有数据时,则所述存储器管理单元将所述写入数据写入至所取得的第一实体页地址中并且将在用于存储所述第一逻辑区块的数据的实体区块之中的其中一个实体区块中属于所述第一逻辑区块的所有数据写入至所取得的第一实体页地址所属的实体区块中,
其中当所取得的第一实体页地址所属的实体区块的剩余存储空间不足够写入所述写入数据和在用于存储所述第一逻辑区块的数据的实体区块之中的其中一个实体区块中属于所述第一逻辑区块的所有数据时,则所述存储器管理单元从所述备用区的实体区块之中选择其中一个实体区块并且将所述写入数据和在用于存储所述第一逻辑区块的数据的实体区块之中的其中一个实体区块中属于所述第一逻辑区块的所有数据写入至所选择的实体区块中,
其中D1为所述第一逻辑区块的数据散乱度,TH1为所述逻辑区块数据散乱度阈值。
15.根据权利要求12所述的闪存控制器,其中所述存储器管理单元记录每一所述实体区块的一数据散乱度,其中每一所述实体区块的数据散乱度为存储于对应的实体区块中的数据所属的逻辑区块的数目。
16.根据权利要求15所述的闪存控制器,其中所述存储器管理单元还依据所取得的第一实体页地址所属的实体区块的数据散乱度来将所述写入数据写入至所述闪存芯片中,
其中每一所述实体区块的数据散乱度皆不大于一实体区块数据散乱度阈值。
17.根据权利要求16所述的闪存控制器,其中当D1<TH1并且D2<TH2时,则所述存储器管理单元将所述写入数据写入至所取得的第一实体页地址中,
其中D1为所述第一逻辑区块的数据散乱度,TH1为所述逻辑区块数据散乱度阈值,D2为所取得的第一实体页地址所属的实体区块的数据散乱度,并且TH2为所述实体区块数据散乱度阈值。
18.根据权利要求16所述的闪存控制器,其中当D1<TH1并且D2=TH2时,则所述存储器管理单元判断所取得的第一实体页地址所属的实体区块是否存储有所述第一逻辑区块的数据,其中当所取得的第一实体页地址所属的实体区块无存储有所述第一逻辑区块的数据,则所述存储器管理单元从所述备用区的实体区块之中选择其中一个实体区块并且将所述写入数据写入至所选择的实体区块中,并且
当所取得的第一实体页地址所属的实体区块存储有所述第一逻辑区块的数据,则所述存储器管理单元将所述写入数据写入至所取得的第一实体页地址中,
其中D1为所述第一逻辑区块的数据散乱度,TH1为所述逻辑区块数据散乱度阈值,D2为所取得的第一实体页地址所属的实体区块的数据散乱度,并且TH2为所述实体区块数据散乱度阈值。
19.根据权利要求16所述的闪存控制器,其中当D1=TH1并且D2=TH2时,则所述存储器管理单元判断所取得的第一实体页地址所属的实体区块是否存储有所述第一逻辑区块的数据,其中当所取得的第一实体页地址所属的实体区块无存储有所述第一逻辑区块的数据,则所述存储器管理单元从所述备用区的实体区块之中选择其中一个实体区块并且将所述写入数据和在用于存储所述第一逻辑区块的数据的实体区块之中的其中一个实体区块中属于所述第一逻辑区块的所有数据写入至所选择的实体区块中,并且
当所取得的第一实体页地址所属的实体区块存储有所述第一逻辑区块的数据,则所述存储器管理单元将所述写入数据写入至所取得的第一实体页地址中,
其中D1为所述第一逻辑区块的数据散乱度,TH1为所述逻辑区块数据散乱度阈值,D2为所取得的第一实体页地址所属的实体区块的数据散乱度,并且TH2为所述实体区块数据散乱度阈值。
20.根据权利要求16所述的闪存控制器,其中当D1=TH1并且D2<TH2时,则所述存储器管理单元判断所取得的第一实体页地址所属的实体区块是否存储有所述第一逻辑区块的数据,
其中当所取得的第一实体页地址所属的实体区块存储有所述第一逻辑区块的数据,则所述存储器管理单元将所述写入数据写入至所取得的第一实体页地址中,
其中当所取得的第一实体页地址所属的实体区块无存储有所述第一逻辑区块的数据,则所述存储器管理单元判断所取得的第一实体页地址所属的实体区块的剩余存储空间是否足够写入所述写入数据和在用于存储所述第一逻辑区块的数据的实体区块之中的其中一个实体区块中属于所述第一逻辑区块的所有数据,
其中当所取得的第一实体页地址所属的实体区块的剩余存储空间足够写入所述写入数据和在用于存储所述第一逻辑区块的数据的实体区块之中的其中一个实体区块中属于所述第一逻辑区块的所有数据时,则所述存储器管理单元将所述写入数据写入至所取得的第一实体页地址中并且将在用于存储所述第一逻辑区块的数据的实体区块之中的其中一个实体区块中属于所述第一逻辑区块的所有数据写入至所取得的第一实体页地址所属的实体区块中,
其中当所取得的第一实体页地址所属的实体区块的剩余存储空间不足够写入所述写入数据和在用于存储所述第一逻辑区块的数据的实体区块之中的其中一个实体区块中属于所述第一逻辑区块的所有数据时,则所述存储器管理单元从所述备用区的实体区块之中选择其中一个实体区块并且将所述写入数据和在用于存储所述第一逻辑区块的数据的实体区块之中的其中一个实体区块中属于所述第一逻辑区块的所有数据写入至所选择的实体区块中,
其中D1为所述第一逻辑区块的数据散乱度,TH1为所述逻辑区块数据散乱度阈值,D2为所取得的第一实体页地址所属的实体区块的数据散乱度,并且TH2为所述实体区块数据散乱度阈值。
21.一种闪存存储***,包括:
一闪存芯片,具有多个实体区块并且每一所述实体区块具有多个实体页地址;
一连接器,用以电性连接至一主机***;以及
一闪存控制器,电性连接至所述闪存芯片与所述连接器,用以配置多个逻辑页地址,将所述多个逻辑页地址分组为多个逻辑区块,并且记录每一所述逻辑区块的一数据散乱度,其中每一所述逻辑区块的数据散乱度为用于存储属于对应的逻辑区块的数据的实体区块的数目,
其中所述闪存控制器从所述主机***中接收一写入数据,其中所述写入数据是欲被写入至一第一逻辑页地址,所述第一逻辑页地址属于一第一逻辑区块,所述第一逻辑页地址为所述多个逻辑页地址的其中之一,且所述第一逻辑区块为所述多个逻辑区块的其中之一,
其中所述闪存控制器取得一第一实体页地址,其中所取得的第一实体页地址为所述多个实体页地址的其中之一,
其中所述闪存控制器依据所述第一逻辑区块的数据散乱度以及所取得的第一实体页地址来将所述写入数据写入至所述闪存芯片中,
其中每一所述逻辑区块的数据散乱度皆不大于一逻辑区块数据散乱度阈值。
22.根据权利要求21所述的闪存存储***,其中所述闪存控制器将所述多个实体区块至少分组为一数据区与一备用区。
23.根据权利要求21所述的闪存存储***,其中当D1<TH1时,则所述闪存控制器将所述写入数据写入至所取得的第一实体页地址中,
其中D1为所述第一逻辑区块的数据散乱度,TH1为所述逻辑区块数据散乱度阈值。
24.根据权利要求22所述的闪存存储***,其中当D1=TH1时,则所述闪存控制器判断所取得的第一实体页地址所属的实体区块是否存储有所述第一逻辑区块的数据,其中当所取得的第一实体页地址所属的实体区块存储有所述第一逻辑区块的数据,则所述闪存控制器将所述写入数据写入至所取得的第一实体页地址中,
其中当所取得的第一实体页地址所属的实体区块无存储有所述第一逻辑区块的数据,则所述闪存控制器判断所取得的第一实体页地址所属的实体区块的剩余存储空间是否足够写入所述写入数据和在用于存储所述第一逻辑区块的数据的实体区块之中的其中一个实体区块中属于所述第一逻辑区块的所有数据,
其中当所取得的第一实体页地址所属的实体区块的剩余存储空间足够写入所述写入数据和在用于存储所述第一逻辑区块的数据的实体区块之中的其中一个实体区块中属于所述第一逻辑区块的所有数据时,则所述闪存控制器将所述写入数据写入至所取得的第一实体页地址中并且将在用于存储所述第一逻辑区块的数据的实体区块之中的其中一个实体区块中属于所述第一逻辑区块的所有数据写入至所取得的第一实体页地址所属的实体区块中,
其中当所取得的第一实体页地址所属的实体区块的剩余存储空间不足够写入所述写入数据和在用于存储所述第一逻辑区块的数据的实体区块之中的其中一个实体区块中属于所述第一逻辑区块的所有数据时,则所述闪存控制器从所述备用区的实体区块之中选择其中一个实体区块并且将所述写入数据和在用于存储所述第一逻辑区块的数据的实体区块之中的其中一个实体区块中属于所述第一逻辑区块的所有数据写入至所选择的实体区块中,
其中D1为所述第一逻辑区块的数据散乱度,TH1为所述逻辑区块数据散乱度阈值。
25.根据权利要求22所述的闪存存储***,其中所述闪存控制器记录每一所述实体区块的一数据散乱度,其中每一所述实体区块的数据散乱度为存储于对应的实体区块中的数据所属的逻辑区块的数目。
26.根据权利要求25所述的闪存存储***,其中所述闪存控制器还依据所取得的第一实体页地址所属的实体区块的数据散乱度来将所述写入数据写入至所述闪存芯片中,
其中每一所述实体区块的数据散乱度不大于一实体区块数据散乱度阈值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910207788A CN102053920B (zh) | 2009-10-30 | 2009-10-30 | 数据写入方法及闪存控制器与闪存存储*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200910207788A CN102053920B (zh) | 2009-10-30 | 2009-10-30 | 数据写入方法及闪存控制器与闪存存储*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102053920A true CN102053920A (zh) | 2011-05-11 |
CN102053920B CN102053920B (zh) | 2012-09-05 |
Family
ID=43958265
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200910207788A Active CN102053920B (zh) | 2009-10-30 | 2009-10-30 | 数据写入方法及闪存控制器与闪存存储*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102053920B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104238956A (zh) * | 2013-06-24 | 2014-12-24 | 群联电子股份有限公司 | 数据写入方法、存储器控制器与存储器存储装置 |
CN104461387A (zh) * | 2014-12-02 | 2015-03-25 | 记忆科技(深圳)有限公司 | 一种提高固态硬盘对未映射区域的读性能的方法 |
CN105302679A (zh) * | 2015-11-03 | 2016-02-03 | 惠州Tcl移动通信有限公司 | 一种智能终端存储稳定性的检测方法及*** |
CN106843775A (zh) * | 2017-03-06 | 2017-06-13 | 郑州云海信息技术有限公司 | 一种数据写入方法及*** |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100353337C (zh) * | 2005-06-01 | 2007-12-05 | 旺玖科技股份有限公司 | 闪存储存*** |
-
2009
- 2009-10-30 CN CN200910207788A patent/CN102053920B/zh active Active
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104238956A (zh) * | 2013-06-24 | 2014-12-24 | 群联电子股份有限公司 | 数据写入方法、存储器控制器与存储器存储装置 |
CN104461387A (zh) * | 2014-12-02 | 2015-03-25 | 记忆科技(深圳)有限公司 | 一种提高固态硬盘对未映射区域的读性能的方法 |
CN104461387B (zh) * | 2014-12-02 | 2018-04-27 | 记忆科技(深圳)有限公司 | 一种提高固态硬盘对未映射区域的读性能的方法 |
CN105302679A (zh) * | 2015-11-03 | 2016-02-03 | 惠州Tcl移动通信有限公司 | 一种智能终端存储稳定性的检测方法及*** |
CN105302679B (zh) * | 2015-11-03 | 2019-04-30 | 惠州Tcl移动通信有限公司 | 一种智能终端存储稳定性的检测方法及*** |
CN106843775A (zh) * | 2017-03-06 | 2017-06-13 | 郑州云海信息技术有限公司 | 一种数据写入方法及*** |
Also Published As
Publication number | Publication date |
---|---|
CN102053920B (zh) | 2012-09-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI423026B (zh) | 資料寫入方法、記憶體控制器與記憶體儲存裝置 | |
TWI421869B (zh) | 用於快閃記憶體的資料寫入方法及其控制器與儲存系統 | |
TWI421870B (zh) | 用於快閃記憶體的資料寫入方法及其控制器與儲存系統 | |
CN102890655B (zh) | 存储器储存装置、其存储器控制器与有效数据识别方法 | |
CN102193869A (zh) | 存储器管理与写入方法及其存储器控制器与储存*** | |
CN102053796A (zh) | 闪存储存***、闪存控制器与数据处理方法 | |
CN103514096A (zh) | 数据储存方法、存储器控制器与存储器储存装置 | |
CN102902626B (zh) | 区块管理方法、存储器控制器与存储器储存装置 | |
CN103678162B (zh) | ***数据储存方法、存储器控制器与存储器储存装置 | |
CN103136111A (zh) | 数据写入方法、存储器控制器与存储器储存装置 | |
CN102446137B (zh) | 数据写入方法、存储器控制器与存储器储存装置 | |
CN102866861B (zh) | 闪存储存***、闪存控制器与数据写入方法 | |
CN102053920B (zh) | 数据写入方法及闪存控制器与闪存存储*** | |
CN102122233B (zh) | 区块管理与数据写入方法、闪存储存***与控制器 | |
CN103714008A (zh) | 数据存储方法、存储器控制器与存储器存储装置 | |
CN102999437A (zh) | 数据搬移方法、存储器控制器与存储器储存装置 | |
CN102543184B (zh) | 存储器储存装置、其存储器控制器与数据写入方法 | |
CN102193870B (zh) | 存储器管理与写入方法、存储器控制器与存储器存储*** | |
CN103984635A (zh) | 数据写入方法、存储器控制器与存储器储存装置 | |
CN102087632B (zh) | 用于闪存的数据储存方法及其控制器与储存*** | |
CN102467459B (zh) | 数据写入方法、存储器控制器与存储器储存装置 | |
US9009389B2 (en) | Memory management table processing method, memory controller, and memory storage apparatus | |
CN102110056B (zh) | 闪存管理方法、闪存控制器与闪存存储*** | |
CN102063381B (zh) | 用于闪存的数据写入方法及其控制器与储存*** | |
CN102043724A (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 |