用于闪存的数据写入方法及其控制器与储存系统转让专利

申请号 : CN200910206460.9

文献号 : CN102063381B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 朱健华

申请人 : 群联电子股份有限公司

摘要 :

本发明提供了一种用于闪存的数据写入方法及其控制器与储存系统,用于将来自于主机系统的数据写入至具有多个实体区块的闪存芯片中。本数据写入方法包括配置多个逻辑存取地址及记录实体区块的一地址中心与一地址半径。本数据写入方法也包括接收欲写入至逻辑存取地址的数据;取得实体区块之中的已开启实体区块;及依据欲写入数据的逻辑存取地址和已开启实体区块的地址中心与地址半径来将数据写入至闪存芯片中。基此,本数据写入方法可有效地降低每一实体区块中数据的零散程度,减少整理有效数据所需的时间,并且提升写入数据的速度。

权利要求 :

1.一种用于闪存的数据写入方法,用于将来自于一主机系统的数据写入至一闪存芯片中,其中该闪存芯片包括多个实体区块,该数据写入方法包括:配置多个逻辑存取地址;

从该主机系统中接收一写入数据,其中该写入数据欲被写入至至少一逻辑存取地址;

判断是否存有至少一已开启实体区块;以及

当所述实体区块之中无存有该至少一已开启实体区块时,则从所述实体区块之中提取一实体区块,将该写入数据写入至所提取的实体区块中,并且将该至少一逻辑存取地址的其中之一设定为所提取的实体区块的一地址中心;

当所述实体区块之中存有该至少一已开启实体区块时,判断该至少一已开启实体区块之中是否存有至少一可写入实体区块;以及当该至少一已开启实体区块之中存有该至少一可写入实体区块时,则将该写入数据写入至该至少一可写入实体区块中,其中该至少一可写入实体区块的一地址半径大于该至少一逻辑存取地址的其中之一与该至少一可写入实体区块的地址中心之间的一距离。

2.根据权利要求1所述的用于闪存的数据写入方法,还包括维护一实体区块地址中心表来记录所设定的地址中心。

3.根据权利要求1所述的用于闪存的数据写入方法,当该至少一已开启实体区块之中无存有该至少一可写入实体区块时,判断该至少一已开启实体区块的数目是否小于一已开启实体区块数门槛值,其中当该至少一已开启实体区块的数目小于该已开启实体区块数门槛值时,则从所述实体区块之中提取一实体区块,将该写入数据写入至所提取的实体区块中,并且将该至少一逻辑存取地址的其中之一设定为所提取的实体区块的地址中心。

4.根据权利要求3所述的用于闪存的数据写入方法,其中当该至少一已开启实体区块的数目不小于该已开启实体区块数门槛值时,执行一数据整理程序以将该至少一已开启实体区块的其中之一关联至数据区,执行无效数据抹除程序以抹除该数据区中的至少一个实体区块并且将所抹除的实体区块关联至备用区。

5.根据权利要求1所述的用于闪存的数据写入方法,还包括:

将所述逻辑存取地址分组为多个逻辑页地址;以及

将所述逻辑页地址分组为多个逻辑页地址群组。

6.根据权利要求5所述的用于闪存的数据写入方法,其中将该写入数据写入至所提取的实体区块中的步骤包括:以所述逻辑页地址群组的其中之一为单位将该写入数据写入至该闪存芯片中。

7.根据权利要求6所述的用于闪存的数据写入方法,其中以所述逻辑页地址群组的其中之一为单位将该写入数据写入至该闪存芯片中的步骤包括:判断该写入数据的该至少一逻辑存取地址是否对应整个所述逻辑页地址群组的其中之一;

当该写入数据的该至少一逻辑存取地址是对应整个所述逻辑页地址群组的其中之一时,则将该写入数据写入至该闪存芯片中;以及当该写入数据的该至少一逻辑存取地址未对应整个所述逻辑页地址群组的其中之一时,则从所述实体区块中读取对应该至少一逻辑存取地址所属的逻辑页地址群组的其他数据,并且将该写入数据和该其他数据一起写入至该闪存芯片中。

8.一种闪存控制器,用于将来自于一主机系统的数据写入至一闪存芯片中,其中该闪存芯片包括多个实体区块,该闪存控制器包括:一微处理器单元;

一闪存接口单元,电性连接至该微处理器单元,用以电性连接至该闪存芯片;

一主机接口单元,电性连接至该微处理器单元,用以电性连接至该主机系统;以及一存储器管理单元,电性连接至该微处理器单元,用以配置多个逻辑存取地址,其中该主机接口单元从该主机系统中接收一写入数据,其中该写入数据欲被写入至至少一逻辑存取地址,其中该存储器管理单元判断是否存有至少一已开启实体区块,其中当所述实体区块之中无存有该至少一已开启实体区块时,则该存储器管理单元从所述实体区块之中提取一实体区块,将该写入数据写入至所提取的实体区块中,并且将该至少一逻辑存取地址的其中之一设定为所提取的实体区块的一地址中心,其中当所述实体区块之中存有该至少一已开启实体区块时,则该存储器管理单元判断该至少一已开启实体区块之中是否存有至少一可写入实体区块,其中当该至少一已开启实体区块之中存有该至少一可写入实体区块时,则该存储器管理单元将该写入数据写入至该至少一可写入实体区块中,其中该至少一可写入实体区块的一地址半径大于该至少一逻辑存取地址的其中之一与该至少一可写入实体区块的地址中心之间的一距离。

9.根据权利要求8所述的闪存控制器,其中该存储器管理单元维护一实体区块地址中心表来记录所设定的地址中心。

10.根据权利要求8所述的闪存控制器,其中当该至少一已开启实体区块之中无存有至少一可写入实体区块时,则该存储器管理单元判断该至少一已开启实体区块的数目是否小于一已开启实体区块数门槛值,其中当该至少一已开启实体区块的数目小于该已开启实体区块数门槛值时,则该存储器管理单元从所述实体区块之中提取一实体区块,将该写入数据写入至所提取的实体区块中,并且将该至少一逻辑存取地址的其中之一设定为所提取的实体区块的地址中心。

11.根据权利要求10所述的闪存控制器,其中当该至少一已开启实体区块的数目不小于该已开启实体区块数门槛值时,则该存储器管理单元执行一数据整理程序以将该至少一已开启实体区块的其中之一关联至数据区,执行无效数据抹除程序以抹除该数据区中的至少一个实体区块并且将所抹除的实体区块关联至备用区。

12.根据权利要求8所述的闪存控制器,其中该存储器管理单元将所述逻辑存取地址分组为多个逻辑页地址,并且将所述逻辑页地址分组为多个逻辑页地址群组。

13.根据权利要求12所述的闪存控制器,其中该存储器管理单元以所述逻辑页地址群组的其中之一为单位将该写入数据写入至该闪存芯片中。

14.根据权利要求13所述的闪存控制器,其中该存储器管理单元判断该写入数据的该至少一逻辑存取地址是否对应整个所述逻辑页地址群组的其中之一,其中当该写入数据的该至少一逻辑存取地址是对应整个所述逻辑页地址群组的其中之一时,则该存储器管理单元将该写入数据写入至该闪存芯片中,其中当该写入数据的该至少一逻辑存取地址未对应整个所述逻辑页地址群组的其中之一时,则该存储器管理单元从所述实体区块中读取对应该至少一逻辑存取地址所属的逻辑页地址群组的其他数据,并且将该写入数据和该其他数据一起写入至该闪存芯片中。

15.一种闪存储存系统,包括:

一闪存芯片,具有多个实体区块;

一连接器,用以电性连接至一主机系统;以及

一闪存控制器,电性连接至该闪存芯片与该连接器,用以配置多个逻辑存取地址,其中该闪存控制器从该主机系统中接收一写入数据,其中该写入数据欲被写入至至少一逻辑存取地址,其中该闪存控制器判断是否存有至少一已开启实体区块,其中当所述实体区块之中无存有该至少一已开启实体区块时,则该闪存控制器从所述实体区块之中提取一实体区块,将该写入数据写入至所提取的实体区块中,并且将该至少一逻辑存取地址的其中之一设定为所提取的实体区块的一地址中心,其中当所述实体区块之中存有该至少一已开启实体区块时,则该闪存控制器判断该至少一已开启实体区块之中是否存有至少一可写入实体区块,其中当该至少一已开启实体区块之中存有该至少一可写入实体区块时,则该闪存控制器将该写入数据写入至该至少一可写入实体区块中,其中该至少一可写入实体区块的一地址半径大于该至少一逻辑存取地址的其中之一与该至少一可写入实体区块的地址中心之间的一距离。

16.根据权利要求15所述的闪存储存系统,其中该闪存控制器维护一实体区块地址中心表来记录所设定的地址中心。

17.根据权利要求15所述的闪存储存系统,其中当该至少一已开启实体区块之中无存有该至少一可写入实体区块时,则该闪存控制器判断该至少一已开启实体区块的数目是否小于一已开启实体区块数门槛值,其中当该至少一已开启实体区块的数目小于该已开启实体区块数门槛值时,则该闪存控制器从所述实体区块之中提取一实体区块,将该写入数据写入至所提取的实体区块中,并且将该至少一逻辑存取地址的其中之一设定为所提取的实体区块的地址中心。

18.根据权利要求17所述的闪存储存系统,其中当该至少一已开启实体区块的数目不小于该已开启实体区块数门槛值时,则该闪存控制器执行一数据整理程序以将该至少一已开启实体区块的其中之一关联至数据区,执行无效数据抹除程序以抹除该数据区中的至少一个实体区块并且将所抹除的实体区块关联至备用区。

19.根据权利要求15所述的闪存储存系统,其中该闪存控制器将所述逻辑存取地址分组为多个逻辑页地址,并且将所述逻辑页地址分组为多个逻辑页地址群组。

20.根据权利要求19所述的闪存储存系统,其中该闪存控制器以所述逻辑页地址群组的其中之一为单位将该写入数据写入至该闪存芯片中。

21.根据权利要求20所述的闪存储存系统,其中该闪存控制器判断该写入数据的该至少一逻辑存取地址是否对应整个所述逻辑页地址群组的其中之一,其中当该写入数据的该至少一逻辑存取地址是对应整个所述逻辑页地址群组的其中之一时,则该闪存控制器将该写入数据写入至该闪存芯片中,其中当该写入数据的该至少一逻辑存取地址未对应整个所述逻辑页地址群组的其中之一时,则该闪存控制器从所述实体区块中读取对应该至少一逻辑存取地址所属的逻辑页地址群组的其他数据,并且将该写入数据和该其他数据一起写入至该闪存芯片中。

说明书 :

用于闪存的数据写入方法及其控制器与储存系统

技术领域

[0001] 本发明涉及一种用于闪存的数据写入方法,且特别是涉及一种能够有效率地将数据写入至闪存的数据写入方法及其控制器与储存系统。

背景技术

[0002] 由于闪存(Flash Memory)具有数据非挥发性、省电、体积小与无机械结构等的特性,最适合使用于由电池供电的可携式电子产品上。例如,固态硬盘就是一种以NAND闪存作为储存媒体的储存装置,并且已广泛配置于笔记本电脑中作为主要的储存装置。
[0003] 一般来说,闪存储存装置的闪存芯片(chip)会划分为多个实体区块,其中实体区块还可划分为多个实体页面,而实体区块是闪存的抹除单位并且实体页面是闪存的写入单位。由于在程序化闪存的存储单元时,仅能执行单向的程序化(即,仅能将存储单元的值由1程序化为0),因此无法对已程序化的实体页面(即,存有旧数据的页面)直接进行写入,而是必须先将此实体页面抹除后方可重新程序化。特别是,由于闪存的抹除是以实体区块为单位,所以,当欲将存有旧数据的实体页面执行抹除运作时,必须对此实体页面所属的整个实体区块进行抹除。基于闪存以实体页面为写入的单元而以实体区块为抹除的单元的特性,一般来说,在闪存装置中闪存芯片的实体区块会被区分为数据区与备用区,其中数据区的实体区块是已被使用来储存数据的实体区块,而备用区中的实体区块是未被使用的实体区块。当主机系统欲写入数据至闪存储存装置时,闪存储存装置的控制电路会从备用区中提取实体区块来写入数据,并且将所提取的实体区块关联至数据区。并且,在将对数据区的实体区块执行抹除运作(erase operation)之后将已抹除的实体区块关联至备用区。
[0004] 由于主机系统是以逻辑地址为单位来进行写入的,并且主机系统写入数据至逻辑地址时往往不会依据逻辑地址的顺序来写入。因此,主机系统所写入的数据会零散地储存于多个实体区块中。基此,当闪存储存装置需要对实体区块进行抹除运作时,闪存储存装置需要花费相当多的时间来整理实体区块中的有效数据与无效数据,因此,造成闪存储存装置的写入速度无法有效地提升。因此,如何提升在闪存所写入数据的速度是此领域技术人员所致力的目标。

发明内容

[0005] 本发明提供一种用于闪存的数据写入方法,其能够有效地降低每一实体区块中数据的零散程度,缩短整理闪存的实体区块中有效数据与无效数据的时间,进而提升写入数据至闪存的速度。
[0006] 本发明提供一种闪存控制器,其能够有效地降低每一实体区块中数据的零散程度,缩短整理闪存的实体区块中有效数据与无效数据的时间,进而提升写入数据至闪存的速度。
[0007] 本发明提供一种闪存储存系统,其能够有效地降低每一实体区块中数据的零散程度,缩短整理闪存的实体区块中有效数据与无效数据的时间,进而提升写入数据至闪存的速度。
[0008] 本发明实施例提出一种用于闪存的数据写入方法,用于将来自于一主机系统的数据写入至一闪存芯片中,其中此闪存芯片包括多个实体区块。本数据写入方法包括配置多个逻辑存取地址,以及从主机系统中接收一写入数据,其中此写入数据欲被写入至至少一逻辑存取地址。本数据写入方法也包括判断是否存有至少一已开启实体区块,并且当实体区块之中无存有已开启实体区块时,则从实体区块之中提取一实体区块,将此写入数据写入至所提取的实体区块中,并且将此至少一逻辑存取地址的其中之一设定为所提取的实体区块的一地址中心。
[0009] 本发明实施例提出一种闪存控制器,用于将来自于一主机系统的数据写入至一闪存芯片中,其中此闪存芯片包括多个实体区块。本闪存控制器包括微处理器单元、闪存接口单元、主机接口单元与存储器管理单元。闪存接口单元电性连接至微处理器单元,并且用以电性连接至闪存芯片。主机接口单元电性连接至微处理器单元,并且用以电性连接至主机系统。存储器管理单元电性连接至微处理器单元,并且用以配置多个逻辑存取地址。此外,主机接口单元从主机系统中接收一写入数据,其中写入数据欲被写入至至少一逻辑存取地址。存储器管理单元判断是否存有至少一已开启实体区块,其中实体区块之中无存有已开启实体区块时,则存储器管理单元从实体区块之中提取一实体区块,将此写入数据写入至所提取的实体区块中,并且将此至少一逻辑存取地址的其中之一设定为所提取的实体区块的一地址中心。
[0010] 本发明实施例提出一种闪存储存系统,其包括闪存芯片、连接器与闪存控制器。闪存芯片具有多个实体区块。连接器用以电性连接至一主机系统。闪存控制器电性连接至闪存芯片与连接器,并且用以配置多个逻辑存取地址。此外,闪存控制器从主机系统中接收一写入数据,其中此写入数据是欲被写入至至少一逻辑存取地址。闪存控制器判断是否存有至少一已开启实体区块。并且,当实体区块之中无存有已开启实体区块时,则闪存控制器从实体区块之中提取一实体区块,将此写入数据写入至所提取的实体区块中,并且将此至少一逻辑存取地址的其中之一设定为所提取的实体区块的一地址中心。
[0011] 基于上述,本发明实施例能够有效地提升写入数据至闪存的速度。
[0012] 为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合附图作详细说明如下。

附图说明

[0013] 图1A是根据本发明第一实施例所示的使用闪存储存装置的主机系统;
[0014] 图1B是根据本发明实施例所示的电脑、输入/输出装置与闪存储存装置的示意图;
[0015] 图1C是根据本发明另一实施例所示的主机系统与闪存储存装置的示意图;
[0016] 图1D是图1A所示的闪存储存装置的结构示意图;
[0017] 图2是根据本发明另一实施例所示的闪存控制器的结构示意图;
[0018] 图3A是根据本发明第一实施例所示的闪存芯片的结构示意图;
[0019] 图3B是根据本发明第一实施例所示的逻辑页地址与实体页地址的映射示意图;
[0020] 图4A与图4B是根据本发明第一实施例所示的逻辑页转实体页映射表及实体页转逻辑页映射表的示意图;
[0021] 图5A与图5B是根据本发明第一实施例所示的对应一数据写入范例的逻辑页转实体页映射表及实体页转逻辑页映射表的示意图;
[0022] 图6A与图6B是根据本发明第一实施例所示的对应另一数据写入范例的逻辑页转实体页映射表及实体页转逻辑页映射表的示意图;
[0023] 图7A与图7B是根据本发明第一实施例所示的对应又一数据写入范例的逻辑页转实体页映射表及实体页转逻辑页映射表的示意图;
[0024] 图8A与图8B是根据本发明第一实施例所示的对应再一数据写入范例的逻辑页转实体页映射表及实体页转逻辑页映射表的示意图;
[0025] 图9是根据本发明第一实施例所示的数据写入方法的流程图;
[0026] 图10是图9的步骤S907的详细步骤;
[0027] 图11是根据本发明第二实施例所示的逻辑页地址的分组示意图;
[0028] 图12A与图12B是根据本发明第二实施例所示的对应一数据写入的逻辑页转实体页映射表及实体页转逻辑页映射表的示意图;
[0029] 图13A与图13B是根据本发明第二实施例所示的对应另一数据写入的逻辑页转实体页映射表及实体页转逻辑页映射表的示意图;
[0030] 图14A与图14B是根据本发明第二实施例所示的对应又一数据写入的逻辑页转实体页映射表及实体页转逻辑页映射表的示意图;
[0031] 图15是根据本发明第二实施例所示的数据写入方法的流程图;
[0032] 图16是图15的步骤S1507的详细步骤。
[0033] 附图中主要元件符号说明:
[0034] 1000-主机系统; 1100-电脑;
[0035] 1102-微处理器; 1104-随机存取存储器;
[0036] 1106-输入/输出装置; 1108-系统总线;
[0037] 1110-数据传输接口; 1202鼠标;
[0038] 1204-键盘; 1206-显示器;
[0039] 1208-打印机; 1212-随身盘;
[0040] 1214-记忆卡; 1216-固态硬盘;
[0041] 1310-数码相机; 1312-SD卡;
[0042] 1314-MMC卡; 1316-记忆棒;
[0043] 1318-CF卡; 1320-嵌入式储存装置;
[0044] 100-闪存储存装置; 102-连接器;
[0045] 104、104’-闪存控制器; 106-闪存芯片;
[0046] 122-(0)~122-(N)-实体区块; 202-微处理器单元;
[0047] 204-存储器管理单元; 206-主机接口单元;
[0048] 208-闪存接口单元; 252-缓冲存储器;
[0049] 254-电源管理单元; 256-错误校正单元;
[0050] 302-系统区; 304-储存区;
[0051] 304a-数据区; 304b-备用区;
[0052] 306-取代区; 410-逻辑页转实体页映射表;
[0053] 420-实体页转逻辑页映射表; LAA(0)~LAA(H)-逻辑存取地址;
[0054] LPA(0)~LPA(L)-逻辑页地址; PPA(0)~PPA(K)-实体页地址;
[0055] LPAG(0)~LPAG(U)-逻辑页地址群组;
[0056] S901、S903、S905、S907、S1001、S1003、S1005、S1007、S1009、
[0057] S1011、S1013、S1015-数据写入步骤;
[0058] S1501、S1503、S1505、S1507、S1601、S1603、S1605、S1607、S1609、[0059] S1611、S1613、S1615、S1617、S1619、S1621、S1623、S1625、S1627-数据写入步骤。

具体实施方式

[0060] 闪存储存装置一般而言包括闪存芯片与控制器(也称为,控制电路)。通常闪存储存装置会与主机系统一起使用,以使主机系统可将数据写入至闪存储存装置或从闪存储存装置中读取数据。另外,还有闪存储存装置是包括嵌入式闪存与可执行于主机系统上以实质地作为此嵌入式闪存的控制器的软件。
[0061] [第一实施例]
[0062] 图1A是根据本发明第一实施例所示的使用闪存储存装置的主机系统。图1B是根据本发明实施例所示的电脑、输入/输出装置与闪存储存装置的示意图。图1C是根据本发明另一实施例所示的主机系统与闪存储存装置的示意图。
[0063] 请参照图1A,主机系统1000包括电脑1100与输入/输出(input/output,I/O)装置1106。电脑1100包括微处理器1102、随机存取存储器(random accessmemory,RAM)1104、系统总线1108以及数据传输接口1110。输入/输出装置1106包括如图1B所示的鼠标1202、键盘1204、显示器1206与打印机1208。必须了解的是,图1B所示的装置不限制输入/输出装置1106,输入/输出装置1106还可包括其他装置。
[0064] 在本发明实施例中,闪存储存装置100是通过数据传输接口1110与主机系统1000的其他元件电性连接。通过微处理器1102、随机存取存储器1104与输入/输出装置1106的处理主机系统1000可将数据写入至闪存储存装置100或从闪存储存装置100中读取数据。例如,闪存储存装置100可以是如图1B所示的随身盘1212、记忆卡1214或固态硬盘(Solid State Drive,SSD)1216。
[0065] 一般而言,主机系统1000为可储存数据的任意系统。虽然在本实施例中,主机系统1000是以电脑系统来作说明,然而,在本发明另一实施例中,主机系统1000还可以是数码相机、摄影机、通信装置、音频播放器或视频播放器等系统。例如,在主机系统为数码相机1310时,闪存储存装置则为其所使用的SD卡1312、MMC卡1314、记忆棒(memory stick)1316、CF卡1318或嵌入式储存装置1320(如图1C所示)。嵌入式储存装置1320包括嵌入式多媒体卡(Embedded MMC,eMMC)。值得一提的是,嵌入式多媒体卡是直接电性连接于主机系统的基板上。
[0066] 图1D是图1A所示的闪存储存装置的结构示意图。
[0067] 请参照图1D,闪存储存装置100包括连接器102、闪存控制器104与闪存芯片106。
[0068] 连接器102电性连接至闪存控制器104并且用以电性连接至主机系统1000。在本实施例中,连接器102为串行高级技术附件(Serial AdvancedTechnology Attachment,SATA)连接器。然而,必须了解的是本发明不限于此,连接器102还可以是并行高级技术附件(Parallel Advanced TechnologyAttachment,PATA)连接器、通用串行总线(Universal Serial Bus,USB)连接器、电气和电子工程师协会(Institute of Electrical and Electronic Engineers,IEEE)1394连接器、高速周边零件连接接口(Peripheral Component InterconnectExpress,PCI Express)连接器、安全数码(secure digital,SD)接口连接器、记忆棒(Memory Sick,MS)接口连接器、多媒体储存卡(Multi Media Card,MMC)接口连接器、小型快闪(Compact Flash,CF)接口连接器、集成设备电路接口(Integrated Device Electronics,IDE)连接器或其他适合的连接器。
[0069] 闪存控制器104会执行以硬件形式或固件形式实作的多个逻辑门或控制指令,并且根据主机系统1000的指令在闪存芯片106中进行数据的写入、读取与抹除等运作。闪存控制器104包括微处理器单元202、存储器管理单元204、主机接口单元206、闪存接口单元208。
[0070] 微处理器单元202为闪存控制器104的主控单元,用以与存储器管理单元204、主机接口单元206与闪存接口单元208等协同合作以进行闪存储存装置100的各种运作。
[0071] 存储器管理单元204电性连接至微处理器单元202,用以执行根据本实施例的数据写入机制与区块管理机制,存储器管理单元204的运作将于以下配合附图作详细说明。
[0072] 在本实施例中,存储器管理单元204以一固件形式实作在闪存控制器104中。例如,将包括多个控制指令的存储器管理单元204烧录至一程序存储器(例如,只读存储器(Read Only Memory,ROM))中并且将此程序存储器嵌入在闪存控制器104中,当闪存储存装置100运作时,存储器管理单元204的多个控制指令会由微处理器单元202来执行以完成根据本发明实施例的数据写入机制与区块管理机制。
[0073] 在本发明另一实施例中,存储器管理单元204的控制指令还可以程序代码的形式储存于闪存芯片106的特定区域(例如,闪存芯片中专用于存放系统数据的系统区)中。同样的,当闪存储存装置100运作时,存储器管理单元204的多个控制指令会由微处理器单元202来执行。此外,在本发明另一实施例中,存储器管理单元204还可以一硬件形式实作在闪存控制器104中。
[0074] 主机接口单元206电性连接至微处理器单元202并且用以接收与识别主机系统1000所传送的指令与数据。也就是说,主机系统1000所传送的指令与数据会通过主机接口单元206来传送至微处理器单元202。在本实施例中,主机接口单元206对应连接器102为SATA接口。然而,必须了解的是本发明不限于此,主机接口单元206还可以是PATA接口、USB接口、IEEE 1394接口、PCI Express接口、SD接口、MS接口、MMC接口、CF接口、IDE接口或其他适合的数据传输接口。
[0075] 闪存接口单元208电性连接至微处理器单元202并且用以存取闪存芯片106。也就是说,欲写入至闪存芯片106的数据会经由闪存接口单元208转换为闪存芯片106所能接受的格式。
[0076] 在本发明另一实施例中,闪存控制器还可包括其他功能模组。图2是根据本发明另一实施例所示的闪存控制器的结构示意图。
[0077] 请参照图2,除了微处理器单元202、存储器管理单元204、主机接口单元206与闪存接口单元208之外,闪存控制器104′还包括缓冲存储器252、电源管理单元254与错误校正单元256。
[0078] 缓冲存储器252电性连接至微处理器单元202并且用以暂存来自于主机系统1000的数据与指令或来自于闪存芯片106的数据。
[0079] 电源管理单元254电性连接至微处理器单元202并且用以控制闪存储存装置100的电源。
[0080] 错误校正单元256电性连接至微处理器单元202并且用以执行一错误校正程序以确保数据的正确性。具体来说,当存储器管理单元204从主机系统1000中接收到主机写入指令时,错误校正单元256会为对应此主机写入指令的写入数据产生对应的错误检查与校正码(Error Checking and Correcting Code,ECC Code),并且存储器管理单元204会将此写入数据与对应的错误校正码写入至闪存芯片106中。之后,当存储器管理单元204从闪存芯片106中读取数据时会同时读取此数据对应的错误校正码,并且错误校正单元256会依据此错误校正码对所读取的数据执行错误校正程序。
[0081] 请再参照图1D,闪存芯片106电性连接至闪存控制器104并且用以储存数据。闪存芯片106具有实体区块122-(0)~122-(N)。实体区块为抹除的最小单位。也就是说,每一实体区块含有最小数目之一并被抹除的存储单元。每一实体区块具有128个实体页面(即,实体页地址)。在本实施例中,实体页面为程序化的最小单元。换言之,实体页面为写入数据或读取数据的最小单元。每一实体页面通常包括使用者数据区与冗余区。使用者数据区用以储存使用者的数据,而冗余区用以储存系统的数据(例如,错误检查与校正码)。然而,必须了解,本发明不限于每一实体区块具有128个实体页面,在本发明另一实施例中,实体区块的实体页面数还可以是64、256或其他适当数目。在本实施例中,闪存芯片106为多层存储单元(Multi Level Cell,MLC)NAND闪存芯片。然而,本发明不限于此,闪存芯片106还可是单层存储单元(Single LevelCell,SLC)NAND闪存芯片。
[0082] 图3A是根据本发明第一实施例所示的闪存芯片的结构示意图。图3B是根据本发明第一实施例所示的逻辑页地址与实体页地址的映射示意图。必须了解的是,在此描述闪存的实体区块的运作时,以“提取”、“交换”、“分组”、“轮替”等词来操作实体区块是逻辑上的概念。也就是说,闪存的实体区块的实际位置并未更动,而是逻辑上对闪存的实体区块进行操作。
[0083] 请参照图3A,存储器管理单元204会将实体区块122-(0)~122-(N)逻辑 地 分 组为 系 统 区 (system area)302、储 存 区 (storage area)304与 取 代 区(replacementarea)306。
[0084] 逻辑上属于系统区302的实体区块122-(0)~122-(S)用以记录系统数据,此系统数据包括关于闪存芯片的制造商与型号、每一闪存芯片的区域数、每一区域的实体区块的数目、每一实体区块的实体页面数等。
[0085] 逻辑上属于储存区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。
[0086] 逻辑上属于取代区306中的实体区块122-(A+1)~122-(N)是替代实体区块。例如,闪存芯片106于出厂时会预留4%的实体区块作为更换使用。也就是说,当系统区302与储存区304中的实体区块损毁时,预留于取代区306中的实体区块可用以取代损坏的实体区块(即,坏实体区块(bad block))。因此,倘若取代区306中仍存有可用的实体区块且发生实体区块损毁时,存储器管理单元204会从取代区306中提取可用的实体区块来更换损毁的实体区块。倘若取代区306中无可用的实体区块且发生实体区块损毁时,则闪存储存装置100将会被宣告为写入保护(write protect),而无法再写入数据。
[0087] 必须了解的是,在闪存储存装置100的运作中,实体区块122-(0)~122-(N)被分组为系统区302、数据区304a、备用区304b与取代区306的映射关系会动态地变动。也就是说,当存储器管理单元204将数据写入至原本属于备用区304b的实体区块(例如,实体区块122-(D+2))后,此实体区块会被关联至数据区304a。或者,当数据区304a(或备用区304b)中的实体区块损坏时而被取代区306的实体区块取代时,则原本取代区306的实体区块会被关联至数据区304a(或备用区304b)。
[0088] 由于闪存储存装置100以轮替地使用储存区304的实体区块来储存主机系统1000欲写入的数据,因此存储器管理单元204会提供逻辑存取地址LAA(0)~LAA(H)给主机系统1000以进行数据存取。特别是,在本实施例中,存储器管理单元204会将逻辑存取地址LAA(0)~LAA(H)分组为逻辑页地址LPA(0)~LPA(L),并且将逻辑页地址LPA(0)~LPA(L)映射至储存区304的实体区块的实体页地址(如图3B所示)。在本实施例中,存储器管理单元204会使用一运算规则来设定每一逻辑存取地址所映射的逻辑页地址。在本实施例中,每一逻辑页地址由4个逻辑存取地址所组成,例如,逻辑存取地址LAA(0)~LAA(3)属于逻辑页地址LPA(0);逻辑存取地址LAA(4)~LAA(7)属于逻辑页地址LPA(1);逻辑存取地址LAA(8)~LAA(11)属于逻辑页地址LPA(2)...等。在此,逻辑存取地址可以是扇区(sector)、丛集(cluster)等。此外,存储器管理单元204会维护逻辑页转实体页映射表以及实体页转逻辑页映射表来记录逻辑页地址与实体页地址之间的映射关系。也就是说,当主机系统1000欲在逻辑存取地址中存取数据时,存储器管理单元204会确认此逻辑存取地址所映射的逻辑页地址,并且在此逻辑页地址所映射的实体页地址中来存取数据。
[0089] 在本实施例中,存储器管理单元204会为已被写入数据的实体区块记录一地址中心与一地址半径,并且依据主机系统1000欲写入数据的逻辑存取地址(也称为被写入逻辑存取地址)、已开启实体区块的地址中心与地址半径来将数据写入至闪存芯片106中。
[0090] 具体来说,实体区块的地址中心是指在此实体区块中被写入的第一笔数据所对应的逻辑页地址中的第一个逻辑存取地址。也就是说,当存储器管理单元204从备用区304b提取一个实体区块并且将数据写入至所提取的实体区块时,所提取实体区块的地址中心会被设定为此数据所对应的逻辑页地址中的第一个逻辑存取地址。然而,必须了解的是本发明不限于此,实体区块的地址中心还可以在此实体区块中被写入的第一笔数据所对应的逻辑页地址中的任一逻辑存取地址来设定。此外,实体区块的地址半径用以控制储存于实体区块中的数据的零散程度,每一实体区块的地址半径是预定的任意适当值,且每一实体区块的地址半径可以是相同或不同。在本实施例中,每一实体区块的地址半径皆被设定为130个页地址。特别是,在本实施例中,每一实体区块内所储存的数据所对应的逻辑存取地址的其中之一与此实体区块的地址中心之间的距离(即,每一实体区块内所储存的数据所对应的逻辑存取地址的其中之一减去此实体区块的地址中心的一绝对值)必须小于或等于此实体区块的地址半径(如公式(1)所示):
[0091] |LPA(PPA(t))-C(PPA(t))|≤R(PPA(t)) 公式(1)
[0092] 其中,LPA(PPA(t))表示在闪存芯片106中第t个实体页地址中所储存的数据所对应的逻辑存取地址,C(PPA(t))表示第t个实体页地址所属的实体区块的地址中心,并且R(PPA(t))表示第t个实体页地址所属的实体区块的地址半径。在本实施例中,存储器管理单元204是通过维护具有实体区块索引栏位与地址中心栏位的实体区块地址中心表(未示出)来记录实体区块的地址中心。
[0093] 在本实施例中,当主机系统1000欲将数据写入至逻辑存取地址LAA(0)~LAA(H)中时,存储器管理单元204会将数据写入至已开启实体区块中。在此,所谓已开启实体区块是指其中部分实体页地址已被写入数据的实体区块。也就是说,当存储器管理单元204从备用区304b中提取一个实体区块,且在此所提取的实体区块的部分实体页地址中写入数据时,此实体区块会被视为已开启实体区块。在闪存储存装置100中存有已开启实体区块的状态下,当主机系统1000欲将数据写入至逻辑存取地址LAA(0)~LAA(H)中时,存储器管理单元204会在满足上述公式(1)的状态下依序地在已开启实体区块的实体页地址中写入来自于主机系统的数据;而在闪存储存装置100中未存有已开启实体区块的状态下,当主机系统1000欲将数据写入至逻辑存取地址LAA(0)~LAA(H)中时,存储器管理单元204会从备用区304b中提取一个实体区块作为已开启实体区块以写入主机系统1000欲写入的数据。
[0094] 例如,当存储器管理单元204开始使用实体区块122-(D+1)来储存主机系统1000欲写入的数据时,即使主机系统1000所写入逻辑存取地址所属的逻辑页地址为非连续的,只要满足上述公式(1)的状态下,存储器管理单元204仍会依序地使用实体区块122-(D+1)的实体页地址来写入来自于主机系统1000的写入数据。也就是说,在满足上述公式(1)的状态下,存储器管理单元204会依序地使用一个实体区块内的实体页地址来写入来自于主机系统1000的数据,并且当已开启实体区块内的实体页地址都被使用完后存储器管理单元204才会再选择另一个无储存数据的实体区块(即,再从备用区304b中提取一个实体区块),并且在新选择的实体区块的实体页地址中继续依序地写入数据。在本实施例中,在存储器管理单元204将数据写入至实体页地址后,存储器管理单元204会更新逻辑页转实体页映射表与实体页转逻辑页映射表以正确地记录逻辑页地址与实体页地址的映射关系。
[0095] 值得一提的是,在本发明实施例中,在闪存储存装置100运作期间,上述已开启实体区块的数目必须小于一已开启实体区块数门槛值。更详细来说,由于闪存储存装置100的资源(例如,缓冲存储器的大小或闪存芯片中实体区块)是有限的,因此,存储器管理单元204所使用的已开启实体区块的数目必须受到限制。在本实施例中,已开启实体区块数门槛值为5(即,存储器管理单元204最多可使用4个已开启实体区块),然而,必须了解的是,本发明不限于此。
[0096] 图4A与图4B是根据本发明第一实施例所示的逻辑页转实体页映射表及实体页转逻辑页映射表的示意图,其中储存区304的实体区块的实体页地址PPA(0)~PPA(K)是以轮替的方式映射至逻辑页地址LPA(0)~LPA(L)的。在本实施例中,逻辑页转实体页映射表410具有逻辑页索引栏位与实体页地址栏位来记录每一逻辑页地址所映射的实体页地址,并且实体页转逻辑页映射表420具有实体页索引栏位与逻辑页地址栏位来记录每一实体页地址所映射的逻辑页地址。
[0097] 请参照图4A与4B,假设逻辑页地址LPA(0)~逻辑页地址LPA(L)是分别映射实体页地址PPA(0)~实体页地址PPA(L)的,也就是说,实体页地址PPA(0)~实体页地址PPA(L)已分别储存主机系统1000在逻辑页地址LPA(0)~逻辑页地址LPA(L)中所写入的数据。此外,在闪存储存装置100中目前无已开启实体区块。
[0098] 图5A与图5B是根据本发明第一实施例所示的对应一数据写入范例的逻辑页转实体页映射表及实体页转逻辑页映射表的示意图。
[0099] 请参照图5A与5B,当在图4A与图4B所示的状态下主机系统1000欲写入数据至逻辑存取地址LAA(4)~LAA(6)时,存储器管理单元204会确认逻辑存取地址LAA(4)~LAA(6)是属于逻辑页地址LPA(1)的;接着从备用区304b中提取一个实体区块,例如,具有实体页地址PPA(L+1)~PPA(L+128)的实体区块122-(D+1);并且将主机系统1000欲写入的数据写入至实体页地址PPA(L+1)中。另外,存储器管理单元204会在逻辑页转实体页映射表410中将逻辑页地址LPA(1)的映射更新为实体页地址PPA(L+1),并且在实体页转逻辑页映射表420中将实体页地址PPA(L+1)的映射更新为逻辑页地址LPA(1)。此时,实体区块122-(D+1)会成为闪存储存装置100中的已开启实体区块,并且已开启实体区块122-(D+1)的地址中心会被设定为逻辑存取地址LAA(4)。在此,逻辑页地址LPA(1)的第一个逻辑存取地址(即,逻辑存取地址LAA(4))被用来作为已开启实体区块122-(D+1)的地址中心。然而,本发明不限于此,在本发明另一实施例中,可使用逻辑存取地址LAA(4)~LAA(7)中的任何一个来作为已开启实体区块的地址中心。此外,必须了解的是,由于闪存的存取是以“页”为单位,因此尽管主机系统1000仅欲写入数据至逻辑存取地址LAA(4)~LAA(6)中,但存储器管理单元204会将整个逻辑页地址LPA(1)的数据(即,逻辑存取地址LAA(4)~LAA(7)的数据)写入至对应的实体页地址中。
[0100] 图6A与图6B是根据本发明第一实施例所示的对应另一数据写入范例的逻辑页转实体页映射表及实体页转逻辑页映射表的示意图。
[0101] 请参照图6A与6B,当在图5A与图5B的状态下主机系统1000欲写入数据至逻辑存取地址LAA(13)时,存储器管理单元204会确认逻辑存取地址LAA(13)是属于逻辑页地址LPA(3)的;判断逻辑存取地址LAA(13)与已开启实体区块122-(D+1)的地址中心(即,逻辑存取地址LAA(4))的距离是小于实体区块122-(D+1)的地址半径(即,130个逻辑存取地址)的,因此,存储器管理单元204会将主机系统1000欲写入的数据写入至实体页地址PPA(L+2)中。此外,存储器管理单元204会在逻辑页转实体页映射表410中将逻辑页地址LPA(3)的映射更新为实体页地址PPA(L+2),并且在实体页转逻辑页映射表420中将实体页地址PPA(L+2)的映射更新为逻辑页地址LPA(3)。
[0102] 图7A与图7B是根据本发明第一实施例所示的对应又一数据写入范例的逻辑页转实体页映射表及实体页转逻辑页映射表的示意图。
[0103] 请参照图7A与7B,当在图6A与图6B的映射关系下主机系统1000欲写入数据至逻辑页存取地址LAA(518)时,存储器管理单元204会确认逻辑存取地址LAA(518)属于逻辑页地址LPA(129);判断逻辑存取地址LAA(518)与已开启实体区块122-(D+1)的地址中心(即,逻辑存取地址LAA(4))之间的距离大于实体区块122-(D+1)的地址半径(即,130个逻辑存取地址)。因此,在闪存储存装置100中无任何已开启实体区块可在满足公式(1)的情况下被用来储存欲写入至逻辑页地址LPA(129)的写入数据。在此中,存储器管理单元204会从备用区304b中提取一个实体区块,例如,具有实体页地址PPA(L+129)~PPA(L+256)的实体区块122-(D+2),并且存储器管理单元204会将主机系统1000欲写入的数据写入至实体页地址PPA(L+129)中。此外,存储器管理单元204会在逻辑页转实体页映射表410中将逻辑页地址LPA(129)的映射更新为实体页地址PPA(L+129),并且在实体页转逻辑页映射表420中将实体页地址PPA(L+129)的映射更新为逻辑页地址LPA(129)。此时,实体区块122-(D+2)会成为闪存储存装置100中的另一个已开启实体区块,并且已开启实体区块122-(D+2)的地址中心被设定为逻辑存取地址LAA(516)。
[0104] 图8A与图8B是根据本发明第一实施例所示的对应再一数据写入范例的逻辑页转实体页映射表及实体页转逻辑页映射表的示意图。
[0105] 请参照图8A与8B,当在图7A与图7B的状态下主机系统1000欲写入数据至逻辑存取地址LAA(84)~LAA(87)时,存储器管理单元204会确认逻辑存取地址LAA(84)属于逻辑页地址LPA(21);判断逻辑存取地址LAA(84)与已开启实体区块122-(D+1)的地址中心(即,逻辑存取地址LAA(4))之间的距离小于实体区块122-(D+1)的地址半径(即,130个逻辑存取地址),而逻辑存取地址LAA(84)与已开启实体区块122-(D+2)的地址中心(即,逻辑存取地址LAA(516))之间的距离大于实体区块122-(D+2)的地址半径(即,130个逻辑存取地址)。因此,在此中,存储器管理单元204会将主机系统1000欲写入的数据写入至已开启实体区块122-(D+1)的实体页地址PPA(L+3)中。此外,存储器管理单元204会在逻辑页转实体页映射表410中将逻辑页地址LPA(21)的映射更新为实体页地址PPA(L+3),并且在实体页转逻辑页映射表420中将实体页地址PPA(L+3)的映射更新为逻辑页地址LPA(21)。
[0106] 在本实施例中,存储器管理单元204会比对逻辑页转实体页映射表410以及实体页转逻辑页映射表420中的记录来判断哪些实体页地址为无效的实体页地址与有效的实体页地址,其中所谓无效的实体页地址是指其中所储存的数据为无效的旧数据,而有效的实体页地址是指其中所储存的数据是映射目前逻辑页地址的有效数据。例如,以图8A与8B为例,当欲判断实体页地址PPA(0)是否为有效的实体页地址时,存储器管理单元204会从实体页转逻辑页映射表420中读出实体页地址PPA(0)是映射逻辑页地址LPA(0),并且依据逻辑页地址LPA(0)从逻辑页转实体页映射表410读出逻辑页地址LPA(0)是映射实体页地址PPA(0),因此,存储器管理单元204会判断实体页地址PPA(0)为有效的实体页地址。另外,当欲判断实体页地址PPA(1)是否为有效的实体页地址时,存储器管理单元204会从实体页转逻辑页映射表420中读出实体页地址PPA(1)是映射逻辑页地址LPA(1),并且依据逻辑页地址LPA(1)从逻辑页转实体页映射表410读出逻辑页地址LPA(1)是映射实体页地址PPA(L+1),因此,存储器管理单元204会判断实体页地址PPA(1)为无效的实体页地址。也就是说,存储器管理单元204会依据待判断的实体页地址,通过实体页转逻辑页映射表420与逻辑页转实体页映射表410查询待判断的实体页地址映射的逻辑页地址所映射的实体页地址,倘若待判断的实体页地址和所查询得到的实体页地址相符时,则此待判断的实体页地址为有效的实体页地址,反之则为无效的实体页地址。
[0107] 值得一提的是,如上所述,在本实施例中,存储器管理单元204最多能使用的已开启实体区块的数目会受到已开启实体区块数门槛值的限制,因此,当存储器管理单元204需从备用区304b提取实体区块作为已开启实体区块时,存储器管理单元204会判断目前已开启实体区块的数目是否小于已开启实体区块数门槛值。特别是,倘若目前已开启实体区块的数目非小于已开启实体区块数门槛值时,存储器管理单元204会执行数据整理程序以将其中一个已开启实体区块中未写入数据的实体页地址填满有效数据,并且执行无效数据抹除程序以将至少一个储存无效数据的实体区块进行抹除,由此将所抹除的实体区块关联至备用区304b,以释放储存无效数据的实体区块。具体来说,在数据整理程序中,存储器管理单元204会通过上述比对将其他实体区块中有效的实体页地址内的数据复制到已开启实体区块中,以使得其中一个已开启实体区块的实体页地址都被写入数据而被关联至数据区304a。此外,由于闪存芯片106是以实体区块作为抹除的最小单位的,因此,在无效数据抹除程序中存储器管理单元204会通过上述比对将有效的实体页地址内的数据进行整理以使数据区304a中的至少一个实体区块的实体页地址中的数据都成为无效数据,由此,仅储存无效数据的实体区块就可被抹除并被关联至备用区304b。例如,存储器管理单元204可将一个实体区块中有效的实体页地址内的数据复制到其他实体区块的实体页地址中,并且对此实体区块进行抹除运作,由此可将零散的有效数据集中并且将存有无效数据的实体区块释放出来。
[0108] 例如,在进行有效数据整理以释放存有无效数据的实体区块后,存储器管理单元204会更新实体页转逻辑页映射表420,以将所抹除之实体区块的实体页地址的映射关系更新为空值(例如,“NULL”)。必须注意的是,在执行数据整理程序与无效数据抹除程序而搬移有效数据时,存储器管理单元204还会使每一实体区块中所储存得数据所对应的逻辑页地址尽量满足上述公式(1)的限制。
[0109] 依据上述,当闪存控制器104的主机接口单元206从主机系统1000接收到主机写入指令与写入数据时,存储器管理单元204会依据欲写入此写入数据的被写入逻辑存取地址,来判断已开启实体区块之中是否存有在符合公式(1)的限制下可写入此写入数据的至少一可写入实体区块,其中当存有至少一可写入实体区块时,存储器管理单元204会将此写入数据写入至这些可写入实体区块的其中之一中;反之,存储器管理单元204会从备用区304b中提取一个实体区块作为已开启实体区块来写入此写入数据。以下将配合附图详细描述本发明实施例的数据写入方法。
[0110] 图9是根据本发明第一实施例所示的数据写入方法的流程图。
[0111] 请参照图9,在步骤S901中主机接口单元206经由连接器102从主机系统1000中接收主机写入指令与写入数据。之后,在步骤S903中存储器管理单元204判断主机写入指令对应的被写入逻辑页地址(即,主机系统1000欲写入数据的逻辑页地址),并且在步骤S905中判断已开启实体区块。最后,在步骤S907中存储器管理单元204会依据被写入逻辑存取地址以及已开启实体区块的地址中心与地址半径来将写入数据写入至闪存芯片106的实体页地址中。
[0112] 图10是图9的步骤S907的详细步骤。
[0113] 请参照图10,在步骤S1001中存储器管理单元204判断已开启实体区块之中是否存有可写入实体区块,其中此可写入实体区块的地址半径是大于被写入逻辑存取地址的其中之一与此可写入实体区块的地址中心之间的距离的(即,满足上述公式(1))。
[0114] 倘若在步骤S1001中判断已开启实体区块之中存有可写入实体区块时,则在步骤S1003中将所接收到的写入数据写入至此可写入实体区块的实体页地址中。接着,在步骤S1005中存储器管理单元204会更新实体页转逻辑页映射表420与逻辑页转实体页映射表410中的映射关系(例如,如图8A与8B所示),并且结束图10的流程。
[0115] 值得一提的是,倘若在步骤S1001中判断存有多个可写入实体区块时,存储器管理单元204可任意选择其中一个可写入实体区块来写入所接收到的写入数据,或者依据被写入逻辑存取地址与每一可写入实体区块的地址中心之间的距离来选择距离最短的可写入实体区块来写入所接收到的写入数据。
[0116] 倘若在步骤S1001中判断已开启实体区块之中未存有可写入实体区块时,则在步骤S1007中存储器管理单元204会判断已开启实体区块的数目是否小于已开启实体区块数门槛值。
[0117] 在步骤S1007中判断已开启实体区块的数目非小于已开启实体区块数门槛值时,则在步骤S1009中执行数据整理程序以将已开启实体区块的其中之一关联至数据区304a,并且在步骤S1011中执行无效数据抹除程序以抹除数据区304a中的至少一个实体区块及将所抹除的实体区块关联至备用区304b。
[0118] 之后,在步骤S1013中存储器管理单元204从备用区304b中提取一个实体区块,并且将写入数据写入至所提取的实体区块的实体页地址中。然后,在步骤S1015中存储器管理单元204更新所提取的实体区块的地址中心。具体来说,在步骤S1015中存储器管理单元204会将在步骤S1011中所提取的实体区块的地址中心设定为步骤S903中所判断的被写入逻辑页地址中的其中一个逻辑存取地址,且将在步骤S1011中已抹除实体区块的地址中心设为空值(例如,“NULL”)。在步骤S1015之后,步骤S1005会被执行并结束图10的流程。
[0119] [第二实施例]
[0120] 本发明第二实施例的闪存储存装置与主机系统本质上相同于第一实施例的闪存储存装置与主机系统,其中差异在于第二实施例的存储器管理单元会将逻辑页地址分组为多个逻辑页地址群组,并且以逻辑页地址群组为单位来写入来自于主机系统的写入数据。以下将配合第一实施例的图1A、图1D与图3来描述第二实施例。
[0121] 图11是根据本发明第二实施例所示的逻辑页地址的分组示意图。
[0122] 请参照图11,在本实施例中,存储器管理单元204会将逻辑页地址LPA(0)~LPA(L)分组为逻辑页地址群组LPAG(0)~LPAG(U),其中每一逻辑页地址群组是由4个逻辑页地址所组成,然而,必须需了解的是,本发明不限于此。
[0123] 特别是,在本实施例中,存储器管理单元204会以所分组的逻辑页地址群组为单位来写入数据。具体来说,在主机系统1000仅欲写入数据至逻辑存取地址LAA(4)~LAA(7),且逻辑页地址LPA(0)~LPA(3)属于同一个逻辑页地址群组LPAG(0)的例子中,存储器管理单元204会判断逻辑存取地址LAA(4)~LAA(7)是属于逻辑页地址LPA(1);依据实体页转逻辑页映射表420与逻辑页转实体页映射表410从闪存芯片106中读取属于逻辑页地址LPA(0)、LPA(2)与LPA(3)的数据;并且将来自于主机系统1000的数据和所读取的数据以逻辑页地址群组LPAG(0)为单位写入至闪存芯片106中。
[0124] 图12A与图12B是根据本发明第二实施例所示的对应一数据写入的逻辑页转实体页映射表及实体页转逻辑页映射表的示意图。
[0125] 请参照图12A与12B,当在图4A与图4B所示的状态下主机系统1000欲写入数据至逻辑存取地址LAA(4)~LAA(7)时,存储器管理单元204会判断主机系统1000仅欲写入数据至逻辑存取地址LAA(4)~LAA(7)所属的逻辑页地址LPA(1),而非整个逻辑页地址群组。在此中,存储器管理单元204会从实体页地址PPA(0)、实体页地址PPA(2)与实体页地址PPA(3)中读取属于逻辑页地址LPA(0)、逻辑页地址LPA(2)与逻辑页地址LPA(3)的数据;从备用区304b中提取一个实体区块,例如,具有实体页地址PPA(L+1)~PPA(L+128)的实体区块122-(D+1);并且将所读取的属于逻辑页地址LPA(0)的数据、主机系统1000欲写入的属于逻辑页地址LPA(1)的数据、所读取的属于逻辑页地址LPA(2)的数据与所读取的属于逻辑页地址LPA(3)的数据依序地写入至实体页地址PPA(L+1)、实体页地址PPA(L+2)、实体页地址PPA(L+3)与实体页地址PPA(L+4)中。此外,存储器管理单元204会在逻辑页转实体页映射表410中将逻辑页地址LPA(0)的映射更新为实体页地址PPA(L+1);将逻辑页地址LPA(1)的映射更新为实体页地址PPA(L+2);将逻辑页地址LPA(2)的映射更新为实体页地址PPA(L+3);以及将逻辑页地址LPA(3)的映射更新为实体页地址PPA(L+4)。并且,存储器管理单元204会在实体页转逻辑页映射表420中将实体页地址PPA(L+1)的映射更新为逻辑页地址LPA(0);将实体页地址PPA(L+2)的映射更新为逻辑页地址LPA(1);将实体页地址PPA(L+3)的映射更新为逻辑页地址LPA(2);以及将实体页地址PPA(L+4)的映射更新为逻辑页地址LPA(3)。在此中,实体区块122-(D+1)会成为闪存储存装置100中的已开启实体区块,并且已开启实体区块122-(D+1)的地址中心会被设为逻辑存取地址LAA(4)。
[0126] 图13A与图13B是根据本发明第二实施例所示的对应另一数据写入的逻辑页转实体页映射表及实体页转逻辑页映射表的示意图。
[0127] 请参照图13A与13B,当在图12A与图12B所示的状态下主机系统1000欲写入数据至逻辑存取地址LAA(516)~LAA(519)时,存储器管理单元204会判断逻辑存取地址LAA(516)与已开启实体区块122-(D+1)的地址中心(即,逻辑存取地址LAA(4))的距离大于实体区块122-(D+1)的地址半径(即,130个逻辑存取地址)。因此,在闪存储存装置100中无任何已开启实体区块可在满足公式(1)的情况下被用来储存欲写入至逻辑存取地址LAA(516)~LAA(519)的写入数据。此外,存储器管理单元204会判断主机系统1000仅欲写入数据至逻辑存取地址LAA(516)~LAA(519)所属的逻辑页地址LPA(129),而非整个逻辑页地址群组。在此中,存储器管理单元204会从实体页地址PPA(128)、实体页地址PPA(130)与实体页地址PPA(131)中读取属于逻辑页地址LPA(128)、逻辑页地址LPA(130)与逻辑页地址LPA(131)的数据;从备用区304b中提取一个实体区块,例如,具有实体页地址PPA(L+129)~PPA(L+256)的实体区块122-(D+2);并且将所读取的属于逻辑页地址LPA(128)的数据、主机系统1000欲写入的属于逻辑页地址LPA(129)的数据、所读取的属于逻辑页地址LPA(130)的数据与所读取的属于逻辑页地址LPA(131)的数据依序地写入至实体页地址PPA(L+129)、实体页地址PPA(L+130)、实体页地址PPA(L+131)与实体页地址PPA(L+132)中。此时,存储器管理单元204会在逻辑页转实体页映射表410中将逻辑页地址LPA(128)的映射更新为实体页地址PPA(L+129);将逻辑页地址LPA(129)的映射更新为实体页地址PPA(L+130);将逻辑页地址LPA(130)的映射更新为实体页地址PPA(L+131);
以及将逻辑页地址LPA(131)的映射更新为实体页地址PPA(L+132)。并且,存储器管理单元204会在实体页转逻辑页映射表420中将实体页地址PPA(L+129)的映射更新为逻辑页地址LPA(128);将实体页地址PPA(L+130)的映射更新为逻辑页地址LPA(129);将实体页地址PPA(L+131)的映射更新为逻辑页地址LPA(130);以及将实体页地址PPA(L+132)的映射更新为逻辑页地址LPA(131)。在此中,实体区块122-(D+2)会成为闪存储存装置100中的另一已开启实体区块,并且已开启实体区块122-(D+2)的地址中心会被设为逻辑存取地址LAA(516)。
[0128] 图14A与图14B是根据本发明第二实施例所示的对应又一数据写入的逻辑页转实体页映射表及实体页转逻辑页映射表的示意图。
[0129] 请参照图14A与14B,当在图13A与图13B所示的状态下主机系统1000欲写入数据至逻辑存取地址LAA(80)~LAA(95)时,存储器管理单元204会判断逻辑存取地址LAA(80)与已开启实体区块122-(D+1)的地址中心(即,逻辑存取地址LAA(4))之间的距离小于实体区块122-(D+1)的地址半径(即,130个逻辑存取地址),而逻辑存取地址LAA(80)与已开启实体区块122-(D+2)的地址中心(即,逻辑存取地址LAA(516))之间的距离大于实体区块122-(D+2)的地址半径(即,130个逻辑存取地址)。此外,存储器管理单元204会判断主机系统1000欲写入数据至整个逻辑页地址群组LPAG(5)。因此,在此中,存储器管理单元204会将主机系统1000欲写入的属于逻辑页地址LPA(20)的数据、属于逻辑页地址LPA(21)的数据、属于逻辑页地址LPA(22)的数据与属于逻辑页地址LPA(23)的数据依序地写入至实体页地址PPA(L+5)、实体页地址PPA(L+6)、实体页地址PPA(L+7)与实体页地址PPA(L+8)中。此外,存储器管理单元204会在逻辑页转实体页映射表410中将逻辑页地址LPA(20)的映射更新为实体页地址PPA(L+5);将逻辑页地址LPA(21)的映射更新为实体页地址PPA(L+6);将逻辑页地址LPA(22)的映射更新为实体页地址PPA(L+7);以及将逻辑页地址LPA(23)的映射更新为实体页地址PPA(L+8)。并且,存储器管理单元204会在实体页转逻辑页映射表420中将实体页地址PPA(L+5)的映射更新为逻辑页地址LPA(20);将实体页地址PPA(L+6)的映射更新为逻辑页地址LPA(21);将实体页地址PPA(L+7)的映射更新为逻辑页地址LPA(22);以及将实体页地址PPA(L+8)的映射更新为逻辑页地址LPA(23)。
[0130] 图15是根据本发明第二实施例所示的数据写入方法的流程图。
[0131] 请参照图15,在步骤S1501中闪存控制器104的主机接口单元206经由连接器102从主机系统1000中接收主机写入指令与写入数据。之后,在步骤S1503中存储器管理单元204判断此主机写入指令对应的被写入逻辑页地址(即,主机系统1000欲写入数据的逻辑页地址),并且在步骤S1505中判断已开启实体区块。最后,在步骤S1507中存储器管理单元204会依据被写入逻辑存取地址、已开启实体区块的地址中心与地址半径来以逻辑页地址群组为单位将写入数据写入至闪存芯片106的实体页地址中。
[0132] 图16是图15的步骤S1507的详细步骤。
[0133] 请参照图16,在步骤S1601中存储器管理单元204判断已开启实体区块之中是否存有可写入实体区块,其中此可写入实体区块的地址半径是大于被写入逻辑存取地址的其中之一与此可写入实体区块的地址中心的距离的(即,满足上述公式(1))。
[0134] 倘若在步骤S1601中判断已开启实体区块之中存有可写入实体区块时,则在步骤S1603中存储器管理单元204判断所接收到的写入数据是否对应整个逻辑页地址群组,其中倘若所接收到的写入数据非对应整个逻辑页地址群组时,则在步骤S1605中存储器管理单元204会从实体页地址中读取对应的数据,并且在步骤S1607中存储器管理单元204将所接收到的写入数据和所读取的数据写入至此可写入实体区块的实体页地址中。
[0135] 倘若在步骤S1603中判断所接收到的写入数据是对应整个逻辑页地址群组时,则在步骤S1609中存储器管理单元204将所接收到的写入数据写入至此可写入实体区块的实体页地址中。
[0136] 之后,在步骤S1611中存储器管理单元204会更新实体页转逻辑页映射表420与逻辑页转实体页映射表410中的映射关系(例如,如图14A与14B所示),并且结束图16的流程。
[0137] 倘若在步骤S1601中判断已开启实体区块之中未存有可写入实体区块时,则在步骤S1613中存储器管理单元204会判断已开启实体区块的数目是否小于已开启实体区块数门槛值。
[0138] 在步骤S1613中判断已开启实体区块的数目未小于已开启实体区块数门槛值时,则在步骤S1615中执行数据整理程序以将已开启实体区块的其中之一关联至数据区304a,并且在步骤S1617中执行无效数据抹除程序以抹除数据区304a中的至少一个实体区块并将所抹除的实体区块关联至备用区340b。
[0139] 然后,在步骤S1619中存储器管理单元204判断所接收到的写入数据是否对应整个逻辑页地址群组,其中倘若所接收到的写入数据未对应整个逻辑页地址群组时,则在步骤S1621中存储器管理单元204会从实体页地址中读取对应的数据。之后,在步骤S1623中存储器管理单元204从备用区304b中提取一个实体区块,并且将所接收到的写入数据和所读取的数据写入至所提取的实体区块的实体页地址中。
[0140] 倘若在步骤S1619中判断所接收到的写入数据对应整个逻辑页地址群组时,则在步骤S1625中存储器管理单元204从备用区304b中提取一个实体区块,并且将所接收到的写入数据写入至所提取的实体区块的实体页地址中。
[0141] 然后,在步骤S1627中存储器管理单元204会更新实体区块的地址中心,并且步骤S1611会被执行。
[0142] 综上所述,本发明实施例的数据写入方法通过设定实体区块的地址中心与地址半径以及依据欲写入数据之逻辑存取地址和实体区块的地址中心与地址半径来选择适当的实体页地址来写入数据,由此使得连续的逻辑页地址的数据能较集中地储存于同一实体区块内,以致于减少整理实体区块中有效数据与无效数据的时间,并且提升在闪存中写入数据的速度。
[0143] 最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。