储存装置、快闪存储器控制器及其控制方法与流程



1.本发明有关于快闪存储器


背景技术:



2.在非挥发性存储器储存装置(non-volatile memory express,nvme)规范中,规范了一个区域命名空间(zoned namespace),然而,由于上述区域命名空间以及其中的每一个区域是单纯以主装置的角度来看的,因此,主装置所定义出的每一个区域的大小与储存装置中快闪存储器模块内每一个区块(block)的大小并不具有固定的关系,因此,当主装置准备将对应到一个区域的数据写入至快闪存储器模块时,快闪存储器控制器会需要建立大量的逻辑地址与实体地址的映射表,例如以数据页(page)为单位来记录逻辑地址与实体地址的映射关系,因而造成快闪存储器控制器在进行数据处理上的负担,且也占用了静态随机存取存储器(static random access memory,sram)及/或动态随机存取存储器(dynamic random access memory,dram)的储存空间。


技术实现要素:



3.因此,本发明的目的之一在于提出一种快闪存储器控制器,其可以有效率地管理由主装置所写入至快闪存储器模块内的区域命名空间的数据,且所建立的逻辑地址与实体地址映射表具有较小的尺寸,以解决先前技术中所述的问题。
4.在本发明的一个实施例中,揭示了一种应用于一快闪存储器控制器的控制方法,其中该快闪存储器控制器用以存取一快闪存储器模块,该快闪存储器模块包含了多个数据面,每一个数据面包含了多个区块,且每一个区块包含了多个数据页,以及该控制方法包含有:接收来自一主装置的设定指令,其中该设定指令是将快闪存储器模块的至少一部份设定为一区域命名空间,其中该区域命名空间是逻辑性地包含多个区域,该主装置对于该区域命名空间的数据写入存取必须要以区域为单位来进行,每一个区域的大小都是相同的,每一个区域内所对应到的逻辑地址必须要是连续的,且区域之间不会有重迭的逻辑地址;对该区域命名空间进行组态以规划出多个第一超级区块,其中每一个第一超级区块包含了分别位于至少两个数据面内的多个区块,且每一个第一超级区块所包含的区块的数量是根据每一个区域的大小以及每一个区块的大小所决定的;接收来自该主装置的对应至一特定区域的数据,其中该数据为该特定区域的所有数据;根据该数据的逻辑地址的顺序,以依序将该数据写入至该快闪存储器模块的该多个第一超级区块中的一特定第一超级区块中;以及当该数据完成写入之后,将该特定第一超级区块所包含的最后一个区块的剩余数据页写入无效数据、或是将剩余数据页维持空白而且在抹除前不依据该主装置的写入指令写入来自该主装置的数据。
5.在本发明的另一个实施例中,揭示了一种快闪存储器控制器,其中该快闪存储器控制器是用来存取一快闪存储器模块,该快闪存储器模块包含了多个数据面,每一个数据面包含了多个区块,且每一个区块包含了多个数据页,且该快闪存储器控制器包含有:一只
读存储器,用来储存一程序码;一微处理器,用来执行该程序码以控制对该快闪存储器模块的存取;以及一缓冲存储器。该微处理器接收来自一主装置的设定指令,其中该设定指令是将快闪存储器模块的至少一部份设定为一区域命名空间,其中该区域命名空间是逻辑性地包含多个区域,该主装置对于该区域命名空间的数据写入存取必须要以区域为单位来进行,每一个区域的大小都是相同的,每一个区域内所对应到的逻辑地址必须要是连续的,且区域之间不会有重迭的逻辑地址;其中该微处理器对该区域命名空间进行组态以规划出多个第一超级区块,其中每一个第一超级区块包含了分别位于至少两个数据面内的多个区块,且每一个第一超级区块所包含的区块的数量是根据每一个区域的大小以及每一个区块的大小所决定的;该微处理器接收来自该主装置的对应至一特定区域的数据,其中该数据为该特定区域的所有数据,且该微处理器根据该数据的逻辑地址的顺序,以依序将该数据写入至该快闪存储器模块的该多个第一超级区块中的一特定第一超级区块中;以及当该数据完成写入之后,该微处理器将该特定第一超级区块所包含的最后一个区块的剩余数据页写入无效数据、或是将剩余数据页维持空白而且在抹除前不依据该主装置的写入指令写入来自该主装置的数据。
6.在本发明的另一个实施例中,揭露了一种储存装置,其包含有一快闪存储器模块以及一快闪存储器控制器,其中该快闪存储器模块包含了多个数据面,每一个数据面包含了多个区块,且每一个区块包含了多个数据页,且该快闪存储器控制器用以存取该快闪存储器模块。该快闪存储器控制器接收来自一主装置的设定指令,其中该设定指令是将快闪存储器模块的至少一部份设定为一区域命名空间,其中该区域命名空间是逻辑性地包含多个区域,该主装置对于该区域命名空间的数据写入存取必须要以区域为单位来进行,每一个区域的大小都是相同的,每一个区域内所对应到的逻辑地址必须要是连续的,且区域之间不会有重迭的逻辑地址;其中该快闪存储器控制器对该区域命名空间进行组态以规划出多个第一超级区块,其中每一个第一超级区块包含了分别位于至少两个数据面内的多个区块,且每一个第一超级区块所包含的区块的数量是根据每一个区域的大小以及每一个区块的大小所决定的;该快闪存储器控制器接收来自该主装置的对应至一特定区域的数据,其中该数据为该特定区域的所有数据,且该快闪存储器控制器根据该数据的逻辑地址的顺序,以依序将该数据写入至该快闪存储器模块的该多个第一超级区块中的一特定第一超级区块中;以及当该数据完成写入之后,该快闪存储器控制器将该特定第一超级区块所包含的最后一个区块的剩余数据页写入无效数据、或是将剩余数据页维持空白而且在抹除前不依据该主装置的写入指令写入来自该主装置的数据。
附图说明
7.图1为根据本发明一实施例的电子装置的示意图。
8.图2a为依据本发明一实施例的储存装置内的快闪存储器控制器的示意图。
9.图2b为依据本发明一实施例的快闪存储器模块中一区块的示意图。
10.图3为快闪存储器模块包含一般储存空间以及区域命名空间的示意图。
11.图4为区域命名空间被划分为多个区域的示意图。
12.图5为根据本发明一实施例的将来自主装置的数据写入至区域命名空间的流程图。
13.图6为区域的数据写入至快闪存储器模块内的区块的示意图。
14.图7a为本发明一实施例的l2p映射表的示意图。
15.图7b为本发明另一实施例的l2p映射表的示意图。
16.图7c为本发明另一实施例的l2p映射表的示意图。
17.图7d为本发明另一实施例的l2p映射表的示意图。
18.图8为根据本发明一实施例的自区域命名空间读取数据的流程图。
19.图9为根据本发明另一实施例的将来自主装置的数据写入至区域命名空间的流程图。
20.图10为区域的数据写入至快闪存储器模块内的区块的示意图。
21.图11a为根据本发明一实施例的l2p映射表与共用区块表的示意图。
22.图11b为根据本发明一实施例的l2p映射表与共用区块表的示意图。
23.图12为根据本发明另一实施例的共用区块表的示意图。
24.图13为根据本发明一实施例的自区域命名空间读取数据的流程图。
25.图14为根据本发明另一实施例的将来自主装置的数据写入至区域命名空间的流程图。
26.图15为区域的数据写入至快闪存储器模块内的区块的示意图。
27.图16为根据本发明一实施例的l2p映射表的示意图。
28.图17为根据本发明另一实施例的自区域命名空间读取数据的流程图。
29.图18为根据本发明另一实施例的将来自主装置的数据写入至区域命名空间的流程图。
30.图19为区域的数据写入至快闪存储器模块内的区块的示意图。
31.图20为根据本发明一实施例的l2p映射表的示意图。
32.图21为根据本发明一实施例的自区域命名空间读取数据的流程图。
33.图22为一般储存空间内的超级区块的示意图。
34.图23为根据本发明一实施例的组态快闪存储器模块的方法的流程图。
35.图24为区域命名空间内的超级区块的示意图。
36.图25为根据本发明一实施例的应用于一快闪存储器控制器的控制方法的流程图。
37.【符号说明】
38.100:电子装置
39.110:主装置
40.120_1,120_2,120_n:储存装置
41.122:快闪存储器控制器
42.124:快闪存储器模块
43.212:微处理器
44.212c:程序码
45.212m:只读存储器
46.214:控制逻辑
47.216:缓冲存储器
48.218:接口逻辑
49.232:编码器
50.234:解码器
51.240:动态随机存取存储器
52.200:区块
53.bl1,bl2,bl3:位元线
54.wl0~wl2,wl4~wl6:字元线
55.310_1,310_2:区域命名空间
56.320_1,320_2:一般储存空间
57.z0,z1,z2,z3:区域
58.lba_k~lba_(k+x-1):逻辑地址
59.500~508:步骤
60.b3,b7,b8,b12,b99,b6:区块
61.p1~pm:数据页
62.700,710,720,730:l2p映射表
63.800~806:步骤
64.900~906:步骤
65.1100a,1100b:l2p映射表
66.1130a,1130b:共用区块表
67.1230:共用区块表
68.1300~1306:步骤
69.1400~1408:步骤
70.b20,b30,b35:区块
71.1600:l2p映射表
72.1700~1706:步骤
73.1800~1806:步骤
74.2000:l2p映射表
75.2100~2106:步骤
76.2210,2220,2230,2240:快闪存储器芯片
77.2212,2214,2222,2224,2232,2234,2242,2244:数据面
78.2261,2262:超级区块
79.2300~2306:步骤
80.2412,2414,2422,2424,2432,2434,2442,2444:数据面
81.2461,2462:超级区块
具体实施方式
82.图1为根据本发明一实施例的电子装置100的示意图。如图1所示,电子装置包含了一主装置110及多个储存装置120_1~120_n,其中每一个储存装置,以储存装置120_1为例,包含了一快闪存储器控制器122以及一快闪存储器模块124。在本实施例中,多个储存装置120_1~120_n中的每一者可以是固态硬碟(solid-state drive,ssd)或是任何具有快闪存
储器模块的储存装置,主装置可以是一中央处理器或是其他可以用来存取储存装置120_1~120_n的电子装置或元件,且电子装置100本身可以是一伺服器、个人电脑、笔记型电脑或是任何的可携式电子装置。需注意的是,虽然图1绘出了多个储存装置120_1~120_n,但在一实施例中,电子装置100可以仅具有单一个储存装置120_1。
83.图2a为依据本发明一实施例的储存装置120_1内的快闪存储器控制器122的示意图。如图2a所示,快闪存储器控制器122包含一微处理器212、一只读存储器(read only memory,rom)212m、一控制逻辑214、一缓冲存储器216与一接口逻辑218。只读存储器212m是用来储存一程序码212c,而微处理器212则用来执行程序码212c以控制对快闪存储器模块124的存取(access)。控制逻辑214包含了一编码器232以及一解码器234,其中编码器232用来对写入到快闪存储器模块220中的数据进行编码以产生对应的校验码(或称,错误更正码(error correction code),ecc),而解码器234用来将从快闪存储器模块124所读出的数据进行解码。
84.于典型状况下,快闪存储器模块124包含了多个快闪存储器芯片,而每一个快闪存储器芯片包含多个区块(block),而快闪存储器控制器122对快闪存储器模块124进行抹除数据运作是以区块为单位来进行。另外,一区块可记录特定数量的数据页(page),其中快闪存储器控制器122对快闪存储器模块124进行写入数据的运作是以数据页为单位来进行写入。在本实施例中,快闪存储器模块124为一立体nand型快闪存储器(3d nand-type flash)模块。
85.实作上,透过微处理器212执行程序码212c的快闪存储器控制器210可利用其本身内部的元件来进行诸多控制运作,例如:利用控制逻辑214来控制快闪存储器模块124的存取运作(尤其是对至少一区块或至少一数据页的存取运作)、利用缓冲存储器216进行所需的缓冲处理、以及利用接口逻辑218来与主装置110沟通。缓冲存储器216是以随机存取存储器(random access memory,ram)来实施。例如,缓冲存储器216可以是sram,但本发明不限于此。此外,快闪存储器控制器122耦接于一dram 240。请注意到,dram 240亦可包含于快闪存储器控制器122之内,例如与快闪存储器控制器122存在于相同的封装之中。
86.在本实施例中,储存装置120_1是支援nvme规范,亦即接口逻辑218可符合一特定通讯标准(例如外设组件互联(peripheral component interconnect,pci)标准或pcie标准),并且可依据该特定通讯标准进行通讯,例如透过连接器来和主装置110进行通讯。
87.图2b为依据本发明一实施例的快闪存储器模块124中一区块200的示意图,其中快闪存储器模块124为立体nand型快闪存储器。如图2b所示,区块200包含了多个记忆单元(例如图示的浮闸晶体管202或是其他的电荷捕捉(charge trap)元件),其透过多条位元线(图示仅绘示了bl1~bl3)及多条字元线(例如图示wl0~wl2、wl4~wl6)来构成立体nand型快闪存储器架构。在图2b中,以最上面的一个平面为例,字元线wl0上的所有浮闸晶体管构成了至少一数据页,字元线wl1上的所有浮闸晶体管构成了另至少一数据页,而字元线wl2的所有浮闸晶体管构成了再另至少一数据页

以此类堆。此外,根据快闪存储器写入方式的不同,字元线wl0与数据页(逻辑数据页)之间的定义也会有所不同,详细来说,当使用单层式储存(single-level cell,slc)的方式写入时,字元线wl0上的所有浮闸晶体管仅对应到单一逻辑数据页;当使用双层式储存(multi-level cell,mlc)的方式写入时,字元线wl0上的所有浮闸晶体管对应到两个逻辑数据页;当使用三层式储存(tlc)的方式写入时,字元线
wl0上的所有浮闸晶体管对应到三个逻辑数据页;以及当使用四层式储存(qlc)的方式写入时,字元线wl0上的所有浮闸晶体管对应到四个逻辑数据页。由于本技术领域中具有通常知识者应能了解立体nand型快闪存储器的结构以及字元线及数据页之间的关系,故相关的细节在此不予赘述。
88.在本实施例中,主装置110是可以透过发送一个设定指令集,例如区域命名空间指令集(zoned namespaces command set),以将快闪存储器模块124的至少一部份设定为区域命名空间(zoned namespace)。参考图3所示,主装置110可以发送设定指令集至快闪存储器控制器122,以使得快闪存储器模块124具有至少一个区域命名空间(在本实施例中以区域命名空间310_1、310_2为例)以及至少一个一般储存空间(在本实施例中以一般储存空间320_1、320_2为例)。区域命名空间310_1在存取上会被划分为多个区域(zone),而主装置110对于区域命名空间310_1的数据写入必须要以逻辑区块地址(logical block address,lba)为单位来进行,一个逻辑区块地址(或简称逻辑地址)可代表512位元组(512bytes)的数据量,而主装置110需对一个区域进行连续性的写入。具体来说,参考图4,区域命名空间310_1是被划分为多个区域(例如,z0、z1、z2、z3

等等),其中区域的大小是由主装置110来设定,但每一个区域的大小都是相同的,每一个区域内所对应到的逻辑地址必须要是连续的,且区域之间不会有重迭的逻辑地址(亦即,一个逻辑地址只会存在于一个区域内)。举例来说,假设每一个区域的大小为x个逻辑地址,而区域z3的起始逻辑地址是lba_k,则区域z3则是用来储存对应到逻辑地址lba_k、lba_(k+1)、lba_(k+2)、lba_(k+3)、

、lba_(k+x-1)的数据。在一实施例中,相邻区域的逻辑地址也是连续的,举例来说,区域z0是用来储存具有逻辑地址lba_1~lba_2000的数据、区域z1是用来储存具有逻辑地址lba_2001~lba_4000的数据、区域z2是用来储存具有逻辑地址lba_4001~lba_6000的数据、区域z3是用来储存具有逻辑地址lba_6001~lba_8000的数据、

以此类推。此外,一个逻辑地址所对应的数据量大小可以由主装置110所决定,例如,一个逻辑地址所对应的数据量大小可以是4千位元组(kilobyte,kb)。
89.此外,每一个区域的数据在进行写入的时候,必须要按照逻辑地址的顺序来进行。详细来说,快闪存储器控制器122会根据所写入的数据来设定一个写入指标(write point),以控制数据的写入顺序。详细来说,假设区域z1是用来储存具有逻辑地址lba_2001~lba_4000的数据,而当主装置110传送对应到逻辑地址lba_2001~lba_2051的数据至快闪存储器控制器122后,快闪存储器控制器122会设定写入指标为下一个逻辑地址lba_2052。而若是后续主装置110传送属于同一个区域的数据但不具有逻辑地址lba_2052时,例如主装置110传送具有逻辑地址lba_3000的数据,则快闪存储器控制器122会拒绝这次的数据写入并回传写入失败的讯息给主装置110;换句话说,只有当所接收到的数据的逻辑地址相同于写入指标所指向的逻辑地址,快闪存储器控制器122才会允许进行数据写入。另外,若是多个区域的数据交替地进行写入时,每一个区域可以有自己的写入指标。
90.如上所述,主装置110会以区域为单位来与储存装置120_1进行沟通以对区域命名空间310_1进行存取,但由于上述区域命名空间310_1以及每一个区域是以主装置110的角度来看的,因此,主装置110所定义出的每一个区域的大小与储存装置120_1中快闪存储器模块124内每一个实体区块的大小并不具有固定的关系。具体来说,不同的快闪存储器模块制造厂商所制造出来的快闪存储器模块并不一样,不同的存储器模块具有不同大小的实体
区块,该些实体区块的大小并不一定为整数倍,例如a型号的快闪存储器模块的实体区块大小可能为b型号的快闪存储器模块的实体区块的1.3倍大,而c型号的快闪存储器模块的实体区块大小可能为b型号的快闪存储器模块的实体区块的3.7倍大,如此一来,会导致主装置110所设定的区域非常难与实体区块齐致(align)。此时快闪存储器控制器122在将逻辑区块对应到实体区块时将会面临非常大的困难,例如可能造成储存装置120_1中有许多冗余空间无法被使用者使用,或者,当主装置110准备将对应到一个区域的数据写入至快闪存储器模块124时,会增加快闪存储器控制器122在建立逻辑地址至实体地址(logical address to physical address,l2p)映射表上的复杂度。本发明在以下的实施例中提出了一种可以让快闪存储器控制器122有效率地根据主装置110的存取指令来对区域命名空间310_1进行存取的方法。
91.图5为根据本发明一实施例的将来自主装置110的数据写入至区域命名空间310_1的流程图,其中本实施例是假设每一个区域所对应到的数据量是大于快闪存储器模块124中每一个实体区块的大小,且每一个区域所对应到的数据量并非是快闪存储器模块124中每一个实体区块的大小的整数倍。在步骤500中,流程开始,主装置110及储存装置120_1上电并完成初始化操作,主装置110对储存装置120_1中至少一部分储存区域设定每个区域的大小、区域数量、逻辑区块地址大小等基本设定,例如利用区域命名空间指令集(zoned namespaces command set)进行设定。在步骤502,主装置110发送一写入指令以及对应的数据至快闪存储器控制器122,其中上述数据为对应到一或多个区域的数据,例如图4中区域z3的对应到逻辑地址lba_k~lba_(k+x-1)的数据。在步骤504中,快闪存储器控制器122自快闪存储器模块124中选择至少一个区块(空白区块、或称备用区块(spare block)),并依序将来自主装置110的数据依序写入至该至少一个区块中。由于主装置110所设定的区域大小非常难与实体区块的大小齐致,所以当主装置对区域z3中所有的逻辑地址下达写入指令后,主装置110所欲写入的数据通常仍无法填满实体区块的储存空间,或者说,通常一个区域所对应的数据储存量,通常不会是一个实体区块中用来存放主装置110所写入数据的区域大小的整数倍。在步骤506中,当数据写入至最后一个区块并完成数据写入后,快闪存储器控制器122会将最后一个区块的剩余数据页写入无效数据(invalid data),或是直接将剩余数据页维持空白状态,请注意到,每一个区块通常都会保留若干数据页用来存放系统管理资讯,例如用来存放写入时间表、逻辑实体对应表、错误更正码的检查位元、磁碟阵列的同位元数据(raid parity)等等管理所需的数据,此处所指的剩余数据页是指写入该些系统管理资讯以及主装置110所欲储存的数据之后仍然有剩余的数据页。
92.举例来说,参考图6,假设每一个区域所对应到的数据量介于快闪存储器模块124中两个区块至三个区块之间,则快闪存储器控制器122可以因应主装置110针对区域z1所发送的写入命令,将区域z1的数据依序写入至区块b3、b7以及b8中。请注意到,在一实施例中,主装置110针对区域z1所发送的写入指令中包含了区域z1的起始逻辑地址,而快闪存储器控制器122是将区域z1的起始逻辑地址对应到实体区块b3的起始实体储存空间,例如第一个实体数据页,并且,快闪存储器控制器122会将区域z1的起始逻辑地址对应的数据存入实体区块b3的起始实体储存空间中,例如第一个实体数据页。区块b3、b7、b8均包含了数据页p1~pm,而区域z1的数据则根据逻辑地址依序地自区块b3的第一个数据页p1开始进行写入至最后一个数据页pm,而在区块b3完成数据写入之后,继续由区块b7的第一个数据页p1开
始进行写入至最后一个数据页pm。请注意到,即便主装置110针对区域z1内的逻辑地址连续地写入,快闪存储器控制器122仍可选择不连续的区块b3、b7来储存该些逻辑上连续的数据。而在区块b7完成数据写入之后,继续由区块b8的第一个数据页p1开始进行写入直到区域z1的数据结束;此外,区块b8的剩余数据页会维持空白或是被写入无效数据。类似地,快闪存储器控制器122可以将区域z3的数据依序写入至区块b12、b99以及b6中,其中区块b12、b99以及b6均包含了数据页p1~pm,而区域z3的数据则根据逻辑地址依序地自区块b12的第一个数据页p1开始进行写入至最后一个数据页pm,而在区块b12完成数据写入之后,继续由区块b99的第一个数据页p1开始进行写入至最后一个数据页pm,且在区块b99完成数据写入之后,继续由区块b6的第一个数据页p1开始进行写入直到区域z3的数据结束;此外,区块b6的剩余数据页会维持空白或是被写入无效数据。请注意到,快闪存储器控制器122可以不针对该些无效数据所在的实体数据页建立逻辑页与实体页链结关系。而该些具有维持空白或是被写入无效数据的实体数据页的实体区块,通常会被快闪存储器控制器122对应到各区域的最后一部分,或者说快闪存储器控制器122会将区域的最后一个逻辑地址所对应的数据储存在一个具有空白页或是写入无效页数据的实体区块中。例如图7b(将于后详述之)中所示,逻辑地址z1_lba+s+2*y会对应到实体区块地址pba8。而且若区域的最后一个逻辑地址的数据是储存在一实体区块的第x个储存单位(例如实体储存页或是区段)中,则该实体区块的第x+1个储存单位会保留位空白页或是写入无效页数据,亦即,空白页或是写入无效数据的数据页是接续在对应区域的最后一个逻辑地址的数据所存放的实体储存单位之后。而在另一个实施例中,主装置110是定义了一个较大的区域大小(zone size),以及一个较小区域容量(zone capacity),例如区域大小为512mb,区域容量为500mb,在此例中,快闪存储器控制器122可以不将空白页或是写入无效数据的数据页直接接续在对应区域的最后一个逻辑地址的数据所存放的实体储存单位之后。
93.在另一实施例中,主装置110是针对区域z1、z2连续的逻辑地址发送写入指令,而快闪存储器控制器122选择了区块b3、b7、b8、b12、b99、b6用以储存属于区域z1、z2的数据。由于装置110所设定的区域大小与实体区块的大小并不齐致,主装置110所欲写入的数据仍无法填满实体区块的储存空间,例如无法填满实体区块b8用来储存主机数据的储存空间,因此快闪存储器控制器122仍旧要将实体区块b8内该些储存空间留白或是填入无效数据,所以尽管主装置110针对区域z1、z2内连续的逻辑地址发送写入指令,而且在实体区块b8仍有空间储存数据的状况下,快闪存储器控制器122仍旧不会将区域z2的起始逻辑地址所对应的数据储存在实体区块b8之中,换言之,即便主装置110发送了连续逻辑地址的写入命令(例如包含了区域z1的最后一个逻辑地址与区域z2的第一个逻辑地址的写入命令),且某一特定实体区块(例如实体区块b8)有足够的空间储存该些连续逻辑地址的数据,快闪存储器控制器122仍旧不会将该些连续逻辑地址所对应的数据连续地储存在该特定实体区块中,而是跳跃性的将区域z2的第一个逻辑地址所对应的数据写入另一个实体区块,例如区块b20中。相应地,主装置110若针对区域z1、z2内连续的逻辑地址发送读取指令(例如包含了区域z1的最后一个逻辑地址与区域z2的第一个逻辑地址的读取命令),快闪存储器控制器122在读取储存在实体区块p8中对应区域z1的最后一个逻辑地址的数据之后,也会跳跃性地去读取区块b20的第一个储存位置,以取得区域z2的第一个逻辑地址的数据。
94.在步骤508中,快闪存储器控制器122建立或更新一l2p映射表以纪录逻辑地址与
实体地址的映射关系,以供后续自区域命名空间310_1进行数据读取时使用。图7a为根据本发明一实施例的l2p映射表700的示意图。l2p映射表700包含了两个栏位,其中一个栏位纪录了区域的起始逻辑地址、而另一个栏位则记录了区块的实体区块地址。同时参考图6,由于区域z1的数据依序写入至区块b3、b7及b8,且区域z3的数据依序写入至区块b12、b99及b6,因此,l2p映射表700记录了区域z1的起始逻辑地址z1_lba_s及区块b3、b7及b8的实体区块地址pba3、pba7及pba8,且记录了区域z3的起始逻辑地址z3_lba_s及区块b12、b99及b6的实体区块地址pba12、pba99及pba6。举例来说,假设区域z1是用来储存具有逻辑地址lba_2001~lba_4000的数据、区域z3是用来储存具有逻辑地址lba_6001~lba_8000的数据,则区域z1的起始逻辑地址z1_lba_s即是lba_2001,而区域z3的起始逻辑地址z3_lba_s即是lba_6001。请注意到,将来自主装置110的数据写入至区域命名空间310_1的流程图中的各个步骤只要能达到相同的目的,不一定要依照固定的次序进行,例如步骤508可接在步骤502之后执行,熟悉此项技艺者在本发明的教导的下当可理解之。请注意到,在此实施例中,每个实体区块均只对应到一个区域,例如区块b3、b7及b8只对应到区域z1,区块b12、b99及b6只对应到区域z3。或者说,单一区块只储存单一个区域的数据,例如区块b3、b7及b8只储存区域z1所对应的数据,区块b12、b99及b6只储存区域z3所对应的数据。
95.除此之外,若主装置110欲重置(reset)一个区域,例如重置区域z1,快闪存储器控制器122通常会修改l2p映射表700将与区域z1相对应的实体区块地址的栏位给删除掉,例如删除l2p映射表700中的实体区块地址pba3、pba7及pba8,代表主机已经不再需要该些实体区块所储存的数据。而快闪存储器控制器122可稍后再将该些实体区块给抹除,请注意到,实体区块b8中储存了主装置110欲储存的数据以及无效数据,虽然主装置110所欲重置的区域z1并不包含该些无效数据。为了管理上的方便,快闪存储器控制器122在收到主装置110针对区域z1的重置指令后,仍会整体性地删除l2p映射表700中的实体区块地址pba8,即便主装置110所欲重置的区域z1并不包含实体区块b8中所储存的该些无效数据。并且,快闪存储器控制器122在抹除实体区块b8之前,也不会将主装置110发出的重置指令中所没有包含到的无效数据给搬移到其他实体区块去,而是将整个实体区块直接删除。
96.在以上的实施例中,区域命名空间310_1内的任何一个实体区块所储存的数据都一定是属于相同的区域,亦即,任何一个实体区块内所储存的所有数据的所对应的逻辑地址会属于同一个区域。而且又因为主装置110仅能对一个区域内的逻辑地址连续地写入。因此,本实施例的l2p映射表700可以仅包含了区域命名空间310_1的实体区块地址,而不会包含任何的数据页地址,亦即l2p映射表700不会记录任何区块内的数据页序号或相关的数据页资讯。此外,l2p映射表700也仅会记录每一个区域的起始逻辑地址,因此,l2p映射表700本身仅具有很小的数据量,故l2p映射表700可以常驻在缓冲存储器216或是dram 240,而不会对缓冲存储器216或dram 240的储存空间造成太大的负担。请注意到,由于主装置110设定区域大小及区域个数之后,各个区域的起始逻辑地址就固定下来了,因此l2p映射表700可以更进一步的化简为一个栏位,即,仅有实体区块地址栏位。而区域的起始逻辑地址栏位即可利用表格的条目(entry)来代表,如图7b所示的l2p映射表710,而无需实际储存多个区域的起始逻辑地址。
97.在以上的实施例中,l2p映射表700中可以仅包含了区域命名空间310_1的实体区块地址,而不会包含任何的数据页地址,然而,在另一实施例中,l2p映射表700可以包含了
每一个区域的起始逻辑地址及对应的实体区块地址与第一个数据页的实体数据页地址。由于l2p映射表中的一个区域仅包含一个实体区块地址及一个实体数据页地址,故也只具有很小的数据量。
98.图7c为根据本发明一实施例的l2p映射表720的示意图。l2p映射表720包含了两个栏位,其中一个栏位纪录了逻辑地址、而另一个栏位则记录了区块的实体区块地址。同时参考图6,由于区域z1的数据依序写入至区块b3、b7及b8,且区域z3的数据依序写入至区块b12、b99及b6,因此,l2p映射表720记录了区域z1的起始逻辑地址z1_lba_s及区块b3的实体区块地址pba3、区域z1的逻辑地址(z1_lba_s+y)及区块b7的实体区块地址pba7、以及区域z1的逻辑地址(z1_lba_s+2*y)及区块b8的实体区块地址pba8,其中逻辑地址(z1_lba_s+y)可以是写入至区块b7的数据的第一个逻辑地址(亦即,对应到区块b7的数据页p1的逻辑地址),而逻辑地址(z1_lba_s+2*y)可以是写入至区块b8的数据的第一个逻辑地址(亦即,对应到区块b8的数据页p1的逻辑地址);类似地,l2p映射表720记录了区域z3的起始逻辑地址z3_lba_s及区块b12的实体区块地址pba12、区域z3的逻辑地址(z3_lba_s+y)及区块b99的实体区块地址pba99、以及区域z6的逻辑地址(z3_lba_s+2*y)及区块b6的实体区块地址pba6,其中逻辑地址(z3_lba_s+y)可以是写入至区块b99的数据的第一个逻辑地址(亦即,对应到区块b99的数据页p1的逻辑地址),而逻辑地址(z3_lba_s+2*y)可以是写入至区块b6的数据的第一个逻辑地址(亦即,对应到区块b6的数据页p1的逻辑地址)。需注意的是,上述的“y”可以表示为一个区块可以储存多少笔逻辑地址的数据,尤其是指主装置110传送给储存装置120_1,希望储存装置120_1储存的数据。请注意到,由于主装置110设定区域大小及区域个数之后,各个区域的起始逻辑地址就固定下来了,各个子区域的起始逻辑地址也固定下来了,例如z1_lba_s、z1_lba_s+y、z1_lba_s+2*y、z2_lba_s、z2_lba_s+y、z2_lba_s+2*y
……
等,因此,类似的,l2p映射表720可以更进一步的化简为一个栏位,即,仅有实体区块地址栏位。而逻辑地址栏位即可利用表格的条目(entry)来代表,而无需实际储存多个子区域的起始逻辑地址,例如图7d的l2p映射表740所示。
99.需注意的是,本实施例的l2p映射表720仅包含了区域命名空间310_1的实体区块地址,而不会包含任何的数据页地址,亦即l2p映射表720不会记录任何区块内的数据页序号或相关的数据页资讯。此外,l2p映射表720也只会记录每一个区块所对应到的第一个逻辑地址,因此,l2p映射表720本身仅具有很小的数据量,故l2p映射表720可以常驻在缓冲存储器216或是dram 240,而不会对缓冲存储器216或dram 240的储存空间造成太大的负担。在一实施例中,上述l2p映射表720中所记录的实体区块地址可以另外搭配第一个数据页的实体数据页地址,而额外增加一个实体数据页地址在实务上不会对储存空间造成太大的负担。
100.图8为根据本发明一实施例的自区域命名空间310_1读取数据的流程图,其中本实施例是假设区域命名空间310_1已经储存了图6所示的区域z1及z3的数据。在步骤800中,流程开始,主装置110及储存装置120_1上电并完成初始化操作(例如,开机程序)。在步骤802,主装置110发送一读入指令以要求读取具有一特定逻辑地址的数据。在步骤804,快闪存储器控制器122中的微处理器212判断出该特定逻辑地址是属于哪一个区域,并根据l2p映射表700或是l2p映射表720所记录的逻辑地址来计算出该特定逻辑地址所对应的一实体数据页地址。以图7a的l2p映射表700来做为说明,由于l2p映射表700记录了个区域的起始逻辑
地址,再加上每一个区域的逻辑地址的数量为已知,因此,微处理器212可以由上述资讯来得知该特定逻辑地址是属于哪一个区域,以图6、7a的实施例来做说明,假设该特定逻辑地址为lba_2500,一个区域包含了2000个逻辑地址,l2p映射表700记录了区域z1的起始逻辑地址z1_lba_s为lba_2001,则微处理器212可以判断出该特定逻辑地址属于区域z1。接着,微处理器212根据该特定逻辑地址与区域z1的起始逻辑地址z1_lba_s之间的差距,再根据区块的每一个数据页所能够储存多少逻辑地址的数据,来决定出该特定逻辑地址所对应的该实体数据页地址。为了方便说明,假设区块中每一个数据页只能储存一个逻辑地址的数据,则该特定逻辑地址与区域z1的起始逻辑地址z1_lba_s之间的差距为五百个逻辑地址,则微处理器212可以计算出该特定逻辑地址对应到区块b3的第五百个数据页p500的实体数据页地址,而若是区块b3的数据页数量不足五百个,则由区块b3的第一个数据页p1开始数起第五百个数据页以得到位于区块b7的实体数据页地址。
101.另一方面,以图7b的l2p映射表720来做为说明,由于l2p映射表720记录了个区域的多个逻辑地址,且这些逻辑地址分别对应到区块b3、b7、b8的第一个数据页p1,因此,微处理器212可以由上述资讯来得知该特定逻辑地址是属于哪一个区域以及哪一个区块。接着,微处理器212根据该特定逻辑地址与区域z1的逻辑地址(例如,z1_lba_s、(z1_lba_s+y)或(z1_lba_s+2y))之间的差距,再根据区块的每一个数据页所能够储存多少逻辑地址的数据,来决定出该特定逻辑地址所对应的该实体数据页地址。为了方便说明,假设区块中每一个数据页只能储存一个逻辑地址的数据,则该特定逻辑地址与区域z1的起始逻辑地址z1_lba_s之间的差距为五百个逻辑地址,则微处理器212可以计算出该特定逻辑地址对应到区块b3的第五百个数据页p500的实体数据页地址。
102.在步骤806,微处理器212根据在步骤804中所决定出的实体区块地址及实体数据页地址,自区域命名空间310_1中读取对应的数据,并将所读取的数据回传至主装置110。
103.如上所述,透过以上实施例所述的内容,快闪存储器控制器122可以在仅建立出很小尺寸的l2p映射表700/710/720/730的情形下,仍然可以有效地完成区域命名空间310_1的数据写入及读取。然而在此实施例中,会有许多实体区块的剩余数据页被浪费掉,例如实体区块b8、实体区块b6中的空白或无效数据页,该些剩余数据页将会大大的降低使用者可以使用到的存储器空间,此种方法虽然可以降低快闪存储器控制器122在管理上的负担,但是却会降低使用者可以使用到的存储器空间,甚至在某些极端的案例中,因为剩余数据页的比例过高,还可能导致快闪存储器控制器122无法规划出足够的存储器空间供使用者使用。
104.图9为根据本发明另一实施例的将来自主装置110的数据写入至区域命名空间310_1的流程图,其中本实施例是假设每一个区域所对应到的数据量是大于快闪存储器模块124中每一个区块的大小,且每一个区域所对应到的数据量并非是快闪存储器模块124中每一个区块的大小的整数倍。在步骤900中,流程开始,主装置110及储存装置120_1上电并完成初始化操作,主装置110对储存装置120_1设定每个区域的大小、区域数量、逻辑区块地址大小等基本设定,例如利用区域命名空间指令集(zoned namespaces command set)进行设定。在步骤902,主装置110发送一写入指令以及对应的数据至快闪存储器控制器122,其中上述数据为对应到一或多个区域的数据,例如图4中区域z3对应到逻辑地址lba_k~lba_(k+x-1)的数据。在步骤904中,快闪存储器控制器122自快闪存储器模块124中选择至少一
个区块(空白区块、或称备用区块)、或是选择至少一个空白区块或至少一共用区块,并依序将来自主装置110的数据依序写入至这些区块中。举例来说,参考图10,假设每一个区域所对应到的数据量介于快闪存储器模块124中两个区块至三个区块之间,则快闪存储器控制器122可以将区域z1的数据依序写入至区块b3、b7以及b8中,其中区块b3所记录的是区域z1的第一部分数据z1_0、区块b7所记录的是区域z1的第二部分数据z1_1、而区块b8所记录的是区域z1的第三部分数据z1_2。在本实施例中,由于区块b3、b7所储存的数据完全是区域z1的数据,而区块b8仅有部分的数据页储存了区域z1的数据,因此,为了充分利用区块b8的剩余数据页,故微处理器212会将区块b8设为共用区块,亦即区块b8的剩余数据页可以用来储存其他区域的数据。继续参考图10,快闪存储器控制器122准备将区域z3的数据写入至区域命名空间310_1,而由于共用区块b8尚有剩余空间,故微处理器212选择两个空白区块b12、b99以及共用区块b8来储存区域z3的数据。具体来说,快闪存储器控制器122将区域z3的数据依序写入至区块b12、b99以及b8中,其中区块b12所记录的是区域z3的第一部分数据z3_0、区块b99所记录的是区域z3的第二部分数据z3_1、而区块b8所记录的是区域z3的第三部分数据z3_2。在本实施例中,区块b12、b99所储存的数据完全是区域z3的数据,而区块b8则会同时记录了区域z1的第三部分数据z1_2以及区域z3的第三部分数据z3_2。请注意到,为了管理上的方便,快闪存储器控制器122并不会将任何区域的第一笔数据储存至共用区块中,因为这会增加快闪存储器控制器122在建立l2p映射表上的复杂度。快闪存储器控制器122会把每个区域的第一笔数据储存在专属区块中,例如区块b3、b12。该些专属区块仅会储存属于同一区域的数据,故称为专属区块。而任一个区域的最后一笔数据(对应于该区域最后一个逻辑地址的数据)都会储存在共用区块中,例如区块b8,而该共用区块中,也会储存另一个区域的最后一笔数据。在此实施例中,共用区块储存了不只一个区域的数据,或者说共用区块储存了不只一个区域的最后一笔数据,而专属区块仅储存单一区域的数据。
105.在步骤906中,快闪存储器控制器122建立或更新一l2p映射表以纪录逻辑地址与实体地址的映射关系,并记录一共用区块表,以供后续自区域命名空间310_1进行数据读取时使用。图11a为根据本发明一实施例的l2p映射表1100a及共用区块表1130a的示意图。l2p映射表1100a包含了两个栏位,其中一个栏位纪录了逻辑地址、而另一个栏位则记录了区块的实体区块地址。同时参考图10,由于区域z1的数据依序写入至区块b3、b7及b8,且区域z3的数据依序写入至区块b12、b99及b8,因此,l2p映射表1100a记录了区域z1的起始逻辑地址z1_lba_s及区块b3的实体区块地址pba3、区域z1的逻辑地址(z1_lba_s+y)及区块b7的实体区块地址pba7、以及区域z1的逻辑地址(z1_lba_s+2*y)及区块b8的实体区块地址pba8,其中逻辑地址(z1_lba_s+y)可以是写入至区块b7的数据的第一个逻辑地址(亦即,第二部分数据z1_1的第一个逻辑地址,且也是对应到区块b7的第一个数据页p1的逻辑地址),而逻辑地址(z1_lba_s+2*y)可以是写入至区块b8的数据的第一个逻辑地址(亦即,第三部分数据z1_2的第一个逻辑地址);类似地,l2p映射表1100a记录了区域z3的起始逻辑地址z3_lba_s及区块b12的实体区块地址pba12、区域z3的逻辑地址(z3_lba_s+y)及区块b99的实体区块地址pba99、以及区域z6的逻辑地址(z3_lba_s+2*y)及区块b6的实体区块地址pba6,其中逻辑地址(z3_lba_s+y)可以是写入至区块b99的数据的第一个逻辑地址(亦即,第二部分数据z3_1的第一个逻辑地址,且也是对应到区块b99的第一个数据页p1的逻辑地址),而逻辑地址(z3_lba_s+2*y)可以是写入至区块b8的数据的第一个逻辑地址(亦即,第三部分数据z3_
2的第一个逻辑地址)。需注意的是,上述的“y”可以表示为一个区块可以储存多少笔来自主机的逻辑地址的数据。请注意到,由于主装置110设定区域大小及区域个数之后,各个区域的起始逻辑地址就固定下来了,各个子区域的起始逻辑地址也固定下来了,例如z1_lba_s、z1_lba_s+y、z1_lba_s+2*y、z2_lba_s、z2_lba_s+y、z2_lba_s+2*y
……
等,因此,类似的,l2p映射表1100可以更进一步的化简为一个栏位,即,仅有实体区块地址栏位。而逻辑地址栏位即可利用表格的条目(entry)来代表,而无需实际储存多个子区域的起始逻辑地址。请参考图11b的l2p映射表1100b,l2p映射表1100b的每个逻辑地址有固定的栏位,此及依照逻辑地址最低至最高排序(或最高至最低),例如z0_lba_s即代表区域0的起始逻辑地址,即系统中最低的逻辑地址,z0_lba_s+y即代表区域0第二个子区域的起始逻辑地址,其中y代表每个实体区块用来存放主机数据的地址数目,z0_lba_s+2*y即代表区域0第三个子区域的起始逻辑地址,由于区域大小固定,y值也固定,所以图11b中的逻辑地址栏位中的数值具有相当高的可预测性,因此,也可省略该栏位,仅以l2p映射表1100b的条目(entry)来代表。
106.另外,共用区块表1130a包含了两个栏位,其中一个栏位纪录了逻辑地址、而另一个栏位则记录了逻辑地址所对应的实体区块地址及实体数据页地址。在图11a中,共用区块表1130a记录了区域z1的第三部分数据z1_2的第一个逻辑地址(z1_lba_s+2*y)及对应的实体区块地址pba8及实体数据页地址p1,亦即第三部分数据z1_2中对应到第一个逻辑地址的数据是写在区块b8的第一个数据页p1;而共用区块表1130a记录了区域z3的第三部分数据z3_2的第一个逻辑地址(z3_lba_s+2*y)及对应的实体区块地址pba8及实体数据页地址p120,亦即第三部分数据z3_2中对应到第一个逻辑地址的数据是写在区块b8的第一百二十个数据页p120(需注意,在此是假设区块中每一个数据页只能储存一个逻辑地址的数据,实际情况可根据一个数据页所能储存多少个逻辑地址的数据来据以调整)。类似于图11b中的l2p映射表1100b,图11a中的共用区块表1130a亦得以图11b中共用区块表1130b的形式呈现,其理由亦同,于此不再赘述。
107.另外,需注意的是,区域z1以及区域z3的数据在写入的过程中,其写入过程可能并非是在区域z1的数据全部写完后再开始将区域z3的数据写入至区域命名空间310_1,换句话说,有可能在区域z1的数据尚未写完时,快闪存储器控制器122便需要将开始将区域z3的数据写入至区域命名空间310_1。因此,在本发明的另一个实施例中,共用区块表1130可以另外包含一个完成指标栏位,其用来指出区域的数据在共用区块是否已完全写入。参考图12所示,其中图12所示的共用区块表1230是延续图10的实施例。在图12(a)中,当区域z1的第三部分数据z1_2全部写入至共同区块b8之后,微处理器212会将完成指标由
‘0’
修改为
‘1’
,而之后微处理器212需要将区域z3的第三部分数据z3_2写入至区域命名空间310_1时,由于对应到共同区块b8的区域z1的第三部分数据z1_2的完成指标为
‘1’
,则微处理器212可以判断共同区块b8目前可供数据写入,故将区域z3的第三部分数据z3_2写入共同区块b8,并在共用区块表1230中记录第三部分数据z3_2及对应的实体区块地址及实体数据页地址。另一方面,在图12(b)中,当区域z1的第三部分数据z1_2在写入至共同区块b8的过程中,其对应的完成指标是为
‘0’
(代表区域z1的第三部分数据z1_2尚未全部写入至共同区块b8),而若是此时后微处理器212需要将区域z3的第三部分数据z3_2写入至区域命名空间310_1,由于对应到共同区块b8的区域z1的第三部分数据z1_2的完成指标为
‘0’
,则微处理器212可以判断共同区块b8目前不可以供第三部分数据z3_2写入,故微处理器212另外选择一个空
白区块(例如区块b15),并将区域z3的第三部分数据z3_2写入至区块b15中,并在共用区块表1230中记录三部分数据z3_2及对应的实体区块地址pba15及实体数据页地址p1。请注意到,图12中的共用区块表1230亦得以类似图11b中的共用区块表1130b的形式再追加完成指标栏位的形式呈现,以固定的逻辑地址位置取代逻辑地址栏位,其理由和l2p映射表1100b与共用区块表1130b相同,于此不再赘述。
108.在一实施例中,若主装置110欲重置(reset)一个区域,例如重置区域z1,快闪存储器控制器122通常会修改l2p映射表1100a/1100b将与区域z1相对应的实体区块地址的栏位给删除掉,例如删除l2p映射表1100a/1100b中的实体区块地址pba3、pba7及pba8,代表主机已经不再需要该些实体区块所储存的数据。而快闪存储器控制器122可稍后再将该些实体区块给抹除,请注意到,实体区块b8中储存了主装置110欲储存的数据以及以及区域z3的数据,虽然主装置110所欲重置的区域z1并不包含区域z3的数据。为了管理上的方便,快闪存储器控制器122在收到主装置110针对区域z1的重置指令后,仍需修改共同区块表1130a/1130b/1230中的实体区块地址及实体数据页地址,将pba8、p1给删除掉,例如改写为ffff。请注意到,共同区块表1230中的完成指标仍旧维持为1,因为区域z1的第三部分仍旧z1_3占用了于实体区块b8中的部分空间,在实体区块b8被抹除之前,该些空间无法再被写入。并且,快闪存储器控制器122在抹除实体区块b8之前,也可以不必将主装置110发出的重置指令中所没有包含到的有效数据(例如区域z3的数据)给搬移到其他实体区块去。
109.在以上的实施例中,由于使用了共同区块来储存对应到不同区域的数据,故可视为逻辑地址属于不同区域的数据可以被储存在相同的实体区块中,故可以有效地利用实体区块的空间,避免因为区域大小与实体区块大小的不齐致而导致当一区域所对应的逻辑地址已经完全写入时,仍无法填满整数个实体区块的空间,而导致实体区块中剩余的数据页没有存入数据造成浪费。
110.需注意的是,本实施例的l2p映射表1100a/1100b仅包含了区域命名空间310_1的实体区块地址,而不会包含任何的数据页地址,亦即l2p映射表1100a/1100b不会记录任何区块内的数据页序号或相关的数据页资讯。此外,共同区块表1130a/1130b/1230也只会记录少量的逻辑地址,甚至因为共同区块表1130a/1130b/1230的逻辑地址是极度规律,亦可省略逻辑地址栏位,而仅用表格的条目(entry)来代表。因此,l2p映射表1100a/1100b及共同区块表1130a/1130b/1230本身仅具有很小的数据量,故l2p映射表1100a/1100b及共同区块表1130a/1130b/1230可以常驻在缓冲存储器216或是dram 240,而不会对缓冲存储器216或dram 240的储存空间造成太大的负担。
111.此外,由于l2p映射表1100a/1100b的(z1_lba_s+2*y)、(z3_lba_s+2*y)
……
等该区域中最后一部分的栏位所对应到的实体区块地址并非精确的实体地址,微处理器212需要再透过查共同区块表1130a/1130b/1230来到正确的实体页地址,因此,也可将l2p映射表1100a/1100b的(z1_lba_s+2*y)、(z3_lba_s+2*y)
……
等该区域中最后一部分的栏位所对应的实体地址例如pba8直接改成共同区块表1130a/1130b/1230相对应的条目地址,让微处理器212直接存取共同区块表1130a/1130b/1230相对应的条目地址。例如将l2p映射表1100a/1100b的(z1_lba_s+2*y)栏位对应的pba8直接改成共同区块表1130a/1130b中(z1_lba_s+2*y)栏位所对应的存储器地址,将l2p映射表1100a/1100b的(z3_lba_s+2*y)栏位对应的pba8直接改成共同区块表1130a/1130b中(z3_lba_s+2*y)栏位所对应的存储器地址
(例如在dram或是sram中的地址),加速查速度。
112.图13为根据本发明一实施例的自区域命名空间310_1读取数据的流程图,其中本实施例是假设区域命名空间310_1已经储存了图10所示的区域z1及z3的数据。在步骤1300中,流程开始,主装置110及储存装置120_1上电并完成初始化操作(例如,开机程序)。在步骤1302,主装置110发送一读入指令以要求读取具有一特定逻辑地址的数据。在步骤1304,快闪存储器控制器122中的微处理器212判断出该特定逻辑地址是属于哪一个区域,并根据l2p映射表1100a/1100b及/或共同区块表1130a/1130b/1230所记录的逻辑地址来计算出该特定逻辑地址所对应的一实体数据页地址。以图11a的l2p映射表1100a来做为说明,由于l2p映射表1100a记录了多个区域的多个逻辑地址,且这些逻辑地址分别对应到区块b3、b7、b8的第几个数据页,再加上每一个区块可以储存的逻辑地址的数量为已知,因此,微处理器212可以由上述资讯来得知该特定逻辑地址是属于哪一个区域以及哪一个区块。接着,假设该特定逻辑地址是属于区域z1,则微处理器212根据该特定逻辑地址与区域z1的逻辑地址(例如,z1_lba_s、(z1_lba_s+y)或(z1_lba_s+2y))之间的差距,再根据区块的每一个数据页所能够储存多少逻辑地址的数据,来决定出该特定逻辑地址所对应的该实体数据页地址。为了方便说明,假设区块中每一个数据页只能储存一个逻辑地址的数据,则该特定逻辑地址与区域z1的起始逻辑地址z1_lba_s之间的差距为五百个逻辑地址,且该特定逻辑地址介于z1_lba_s与(z1_lba_s+y)之间(其中y代表每个实体区块用来存放主机数据的地址数目,而在此例中y》500),则微处理器212可以计算出该特定逻辑地址对应到区块b3的第五百个数据页p500的实体数据页地址,在此例中,微处理器212将差距500除以y,得到商为0,余数500,则微处理器212可以得知特定逻辑地址所对应的实体区块地址应在l2p映射表1100a的第一个条目,查后,微处理器212发现特定逻辑地址所对应的实体区块地址为实体区块地址为pba3。而由于余数为500,微处理器212可以得知特定逻辑地址所对应的实体页地址是p500,请注意到除了以实体页为单位之外,亦得以更小的读取单位定址,例如扇区(sector)或是4kbyte等其他符合nvme规范的定址单位;另一方面,假设该特定逻辑地址是属于区域z3,则微处理器212根据该特定逻辑地址与区域z3的逻辑地址(例如,z3_lba_s、(z3_lba_s+y)或(z3_lba_s+2y))之间的差距,再根据区块的每一个数据页所能够储存多少逻辑地址的数据,来决定出该特定逻辑地址所对应的该实体数据页地址。为了方便说明,假设区块中每一个数据页只能储存一个逻辑地址的数据,该特定逻辑地址大于(z3_lba_s+2y)并小于或等于区域z3的最大逻辑地址,且该特定逻辑地址与区域z3的逻辑地址(z3_lba_s+2y)之间的差距为八十个逻辑地址,则微处理器212可以参考共用区块表1130所记录的区域z3的第三部分数据z3_2所对应的实体数据页地址p120,并据以计算出该特定逻辑地址对应到共用区块b8的第两百个数据页p200的实体数据页地址。
113.在步骤1306,微处理器212根据在步骤1304中所决定出的实体区块地址及实体数据页地址,自区域命名空间310_1中读取对应的数据,并将所读取的数据回传至主装置110。
114.如上所述,透过以上实施例所述的内容,快闪存储器控制器122可以在仅建立出很小尺寸的l2p映射表1100a/1100b及共同数据表1130a/1130b/1230,仍然可以有效地完成区域命名空间310_1的数据写入及读取。
115.在以上图5~13的实施例中是假设每一个区域所对应到的数据量大于快闪存储器模块124中每一个区块的大小,然而,主装置110亦可将每一个区域所对应到的数据量低于
快闪存储器模块124中每一个区块的大小,其相关的存取方式如下所述。
116.图14为根据本发明另一实施例的将来自主装置110的数据写入至区域命名空间310_1的流程图,其中本实施例是假设每一个区域所对应到的数据量是小于快闪存储器模块124中每一个区块的大小。在步骤1400中,流程开始,主装置110及储存装置120_1上电并完成初始化操作,主装置110对储存装置120_1设定每个区域的大小、区域数量、逻辑区块地址大小等基本设定,例如利用区域命名空间指令集(zoned namespaces command set)进行设定。在步骤1402,主装置110发送一写入指令以及对应的数据至快闪存储器控制器122,其中上述数据为对应到一或多个区域的数据,例如图4中区域z3的对应到逻辑地址lba_k~lba_(k+x-1)的数据。在步骤1404中,快闪存储器控制器122自区域命名空间310_1中选择至少一个区块(空白区块、或称备用区块),并依逻辑地址顺序将来自主装置110的数据依序写入至该至少一个区块中。在本实施例中,一个区块只会用来写入单一个区域的数据,以图15为例,快闪存储器控制器122将区域z0的数据写入至区块b20、将区域z1的数据写入至区块b30、将区域z2的数据写入至区块b35、

以此类推。在步骤1406中,当每一个区域的数据完全写入之后,快闪存储器控制器122会将每一个区块中系统控制用以外的剩余数据页写入无效数据,或是直接将剩余数据页维持空白状态。以图15为例,在快闪存储器控制器122将区域z0的数据全部写入至区块b20后区块会将b20的剩余数据页维持空白或是填入无效数据,在快闪存储器控制器122将区域z1的数据全部写入至区块b30后会将区块b30的剩余数据页维持空白或是填入无效数据、且在快闪存储器控制器122将区域z2的数据全部写入至区块b35后会将区块b35的剩余数据页维持空白或是填入无效数据。
117.请注意到,在一实施例中,主装置110是针对区域z0、z1、z2连续的逻辑地址发送写入指令,而快闪存储器控制器122选择了区块b20、b30、b35用以储存属于区域z0、z1、z2的数据。由于装置110所设定的区域大小与实体区块的大小并不齐致,主装置110所欲写入的数据仍无法填满实体区块的储存空间,例如无法填满实体区块b20用来储存主机数据的储存空间,因此快闪存储器控制器122仍旧要将实体区块b20内该些储存空间留白或是填入无效数据,所以尽管主装置110针对区域z0、z1内连续的逻辑地址发送写入指令,而且在实体区块b20仍有空间储存数据的状况下,快闪存储器控制器122仍旧不会将区域z1的起始逻辑地址所对应的数据储存在实体区块b20之中,换言之,即便主装置110发送了连续逻辑地址的写入命令(例如包含了区域z0的最后一个逻辑地址与区域z1的第一个逻辑地址的写入命令),且某一特定实体区块(例如实体区块b20)有足够的空间储存该些连续逻辑地址的数据,快闪存储器控制器122仍旧不会将该些连续逻辑地址所对应的数据连续地储存在该特定实体区块中,而是跳跃性的将区域z1的第一个逻辑地址所对应的数据写入另一个实体区块,例如区块b30中。相应地,主装置110若针对区域z0、z1内连续的逻辑地址发送读取指令(例如包含了区域z0的最后一个逻辑地址与区域z1的第一个逻辑地址的读取命令),快闪存储器控制器122在读取储存在实体区块b20中对应区域z1的最后一个逻辑地址的数据之后,也会跳跃性地去读取区块b30的第一个储存位置,以取得区域z1的第一个逻辑地址的数据。
118.在步骤1408中,快闪存储器控制器122建立或更新一l2p映射表以纪录逻辑地址与实体地址的映射关系,以供后续自区域命名空间310_1进行数据读取时使用。图16为根据本发明一实施例的l2p映射表1600的示意图。l2p映射表1600包含了两个栏位,其中一个栏位纪录了区域编号或是相关可辨识的内容、而另一个栏位则记录了区块的实体区块地址。同
时参考图6,由于区域z0、z1、z2的数据分别写入至区块b20、b30、b35,因此,l2p映射表1600记录了区域z0及区块b20的实体区块地址pba20、区域z1及区块b30的实体区块地址pba30、以及区域z2及区块b35的实体区块地址pba35。在另一实施例中,上述的区域编号以区域的起始逻辑地址来表示、或是区块编号可以透过另外的查表来连结到区块的起始逻辑地址,举例来说,假设区域z0是用来储存具有逻辑地址lba_1~lba_2000的数据、区域z1是用来储存具有逻辑地址lba_2001~lba_4000的数据、区域z2是用来储存具有逻辑地址lba_4001~lba_6000的数据,则区域z0、z1、z2的起始逻辑地址即分别是lba_1、lba_2001、lba_4001。请注意到,在此实施例中,每个实体区块均只对应到一个区域,例如区块b20、b30及b35只分别对应到区域z0、z1、z2。或者说,单一区块只储存单一个区域的数据,例如区块b20只储存区域z0所对应的数据,区块b30只储存区域z1所对应的数据,区块b35只储存区域z2所对应的数据。
119.在以上的实施例中,区域命名空间310_1内的任何一个实体区块所储存的数据都一定是属于相同的区域,亦即,任何一个实体区块内所储存的所有数据的逻辑地址会属于同一个区域。因此,本实施例的l2p映射表1600可以仅包含了区域命名空间310_1的实体区块地址,而不会包含任何的数据页地址,亦即l2p映射表1600不会记录任何区块内的数据页序号或相关的数据页资讯。此外,l2p映射表1600也仅会记录每一个区域的区域编号或是起始逻辑地址,因此,l2p映射表1600本身仅具有很小的数据量,故2p映射表1600可以常驻在缓冲存储器216或是dram240,而不会对缓冲存储器216或dram 240的储存空间造成太大的负担。在一实施例中,上述l2p映射表1600中所记录的实体区块地址可以另外搭配第一个数据页的实体数据页地址,而额外增加一个实体数据页地址在实务上不会对储存空间造成太大的负担。请注意到,由于主装置110设定区域大小及区域个数之后,各个区域的起始逻辑地址就固定下来了,因此,类似的,l2p映射表1600可以更进一步的化简为一个栏位,即,仅有实体区块地址栏位。而逻辑地址栏位即可利用表格的条目(entry)来代表,而无需实际储存多个区域的起始逻辑地址。
120.除此之外,若主装置110欲重置(reset)一个区域,例如重置区域z1,快闪存储器控制器122通常会修改l2p映射表1600将与区域z1相对应的实体区块地址的栏位给删除掉,例如删除l2p映射表1600中的实体区块地址pba30,代表主机已经不再需要该些实体区块所储存的数据。而快闪存储器控制器122可稍后再将该些实体区块给抹除,请注意到,实体区块b30中储存了主装置110欲储存的数据以及无效数据,虽然主装置110所欲重置的区域z1并不包含该些无效数据。为了管理上的方便,快闪存储器控制器122在收到主装置110针对区域z1的重置指令后,仍会整体性地删除l2p映射表1600中的实体区块地址pba30,即便主装置110所欲重置的区域z1并不包含实体区块b30中所储存的该些无效数据。并且,快闪存储器控制器122在抹除实体区块b30之前,也不会将主装置110发出的重置指令中所没有包含到的无效数据给搬移到其他实体区块去,而是将整个实体区块直接删除。
121.图17为根据本发明另一实施例的自区域命名空间310_1读取数据的流程图,其中本实施例是假设区域命名空间310_1已经储存了图15所示的区域z0、z1及z2的数据。在步骤1700中,流程开始,主装置110及储存装置120_1上电并完成初始化操作(例如,开机程序)。在步骤1702,主装置110发送一读入指令以要求读取具有一特定逻辑地址的数据。在步骤1704,快闪存储器控制器122中的微处理器212判断出该特定逻辑地址是属于哪一个区域,
并根据l2p映射表1600所记录的逻辑地址来计算出该特定逻辑地址所对应的一实体数据页地址。以图16的l2p映射表1600来做为说明,由于l2p映射表1600记录了每个区域的区域编号或起始逻辑地址,再加上每一个区域的逻辑地址的数量为已知,因此,微处理器212可以由上述资讯来得知该特定逻辑地址是属于哪一个区域,举例来说,一个区域包含2000个逻辑地址,微处理器212将主机所欲存取的逻辑地址(特定逻辑地址)除以2000,所得到的商,即为该特定逻辑地址所在的区域,以图15、16的实施例来做说明,假设微处理器212将该特定逻辑地址除以2000后,发现商为1,即可判断该特定逻辑地址属于区域z1,则微处理器212根据该特定逻辑地址与区域z1的起始逻辑地址之间的差距(该差距亦为该微处理器212将该特定逻辑地址除以2000后的余数),再根据区块的每一个数据页所能够储存多少逻辑地址的数据,来决定出该特定逻辑地址所对应的该实体数据页地址。为了方便说明,假设区块中每一个数据页只能储存一个逻辑地址的数据,且该特定逻辑地址与区域z1的起始逻辑地址之间的差距为两百个逻辑地址,则微处理器212可以计算出该特定逻辑地址对应到区块b20的第两百个数据页的实体数据页地址。
122.在步骤1706,微处理器212根据在步骤1704中所决定出的实体区块地址及实体数据页地址,自区域命名空间310_1中读取对应的数据,并将所读取的数据回传至主装置110。
123.如上所述,透过以上实施例所述的内容,快闪存储器控制器122可以在仅建立出很小尺寸的l2p映射表700/720的情形下,仍然可以有效地完成区域命名空间310_1的数据写入及读取。然而,在此实施例中,仍会有大量的实体区块储存空间被浪费掉,例如图15中所示的空白或无效数据页。
124.图18为根据本发明另一实施例的将来自主装置110的数据写入至区域命名空间310_1的流程图,其中本实施例是假设每一个区域所对应到的数据量是小于快闪存储器模块124中每一个区块的大小。在步骤1800中,流程开始,主装置110及储存装置120_1上电并完成初始化操作,主装置110对储存装置120_1设定每个区域的大小、区域数量、逻辑区块地址大小等基本设定,例如利用区域命名空间指令集(zoned namespaces command set)进行设定。在步骤1802,主装置110发送一写入指令以及对应的数据至快闪存储器控制器122,其中上述数据为对应到一或多个区域的数据,例如图4中区域z3的对应到逻辑地址lba_k~lba_(k+x-1)的数据。在步骤1804中,快闪存储器控制器122自区域命名空间310_1中选择至少一个区块(空白区块、或称备用区块)、或是选择多个空白区块与一共用区块,并依一个区域内的逻辑地址顺序将来自主装置110的数据依序写入至这些区块中。举例来说,参考图19,快闪存储器控制器122可以依逻辑地址顺序将区域z0、z2、z1的数据依序写入至区块b20、b30中。以图19为例,区域z0的第一笔数据是由区块b20的第一个数据页开始写入,且在区域z0的数据都写入完成之后,请参考图20的l2p映射表2000,该表将于下详述之,快闪存储器控制器122将区域编号z0所对应的可用指标从0改成1,代表区域编号z0的数据都写入完成,区域编号z0所储存的实体区块pba20所剩余的空间可以再被拿来储存其他数据。因为实体区块pba20所剩余的空间可以再被拿来储存其他数据,所以区域z2的数据也可以接着写入至区块b20的剩余数据页,倘若快闪存储器控制器122在处理区域z2的写入指令时,不到任何一个实体区块其所对应的可用指标为1,则快闪存储器控制器122应该要提取一个空白区块或者备用区块用以写入区域z2的数据。
125.在此例中,由于实体区块pba20所对应的可用指标为1,所以快闪存储器控制器122
可以直接利用实体区块pba20储存区域z2的数据而无需提取另一个空白区块或是备用区块。而由于区块b20的剩余数据页的数量并不足以储存区域z2的所有数据,因此,区域z2的数据被分为第一部分z2_1以及第二部分z2_2,其中第一部分z2_1储存在区块b20,而第二部分z2_2则由快闪存储器控制器122提取另一个空白区块,区块b30,并由区块b30的第一个数据页开始写入。由于在将z2第一部分z2_1写满区块b20的剩余数据页之后,实体区块pba20已满,无法再写入数据,因此快闪存储器控制器122会将区域z0所对应的可用指标改为0,且让区域z2_1所对应的可用指标维持为0。在区域z2的第二部分z2_2都写入完成之后,快闪存储器控制器122将区域编号z2_2所对应的可用指标从0改成1,类似地,区域z1的数据也接着开始写入至区块b30的剩余数据页。
126.在步骤1806中,快闪存储器控制器122建立或更新一l2p映射表以纪录逻辑地址与实体地址的映射关系,以供后续自区域命名空间310_1进行数据读取时使用。图20为根据本发明一实施例的l2p映射表2000的示意图。l2p映射表2000包含了两个栏位,其中一个栏位纪录了区块编号或逻辑地址区间、而另一个栏位则记录了该逻辑地址区间的第一个逻辑地址所对应的实体区块地址及实体数据页地址。在图20中,l2p映射表2000记录了区域z0或区域z0的逻辑地址区间的第一个逻辑地址,以及对应的实体区块地址pba20及实体数据页地址p1、区域z2的第一部份z2_1的逻辑地址区间及该区间第一个逻辑地址所对应的实体区块地址pba20及实体数据页地址pa、区域z2之第二部份z2_2的逻辑地址区间及该区间第一个逻辑地址所对应的实体区块地址pba30及实体数据页地址p1、及区域z1或区域z1的逻辑地址区间及该区间第一个逻辑地址所对应的实体区块地址pba30及实体数据页地址pb。请注意到,在此例中,一个写满数据的实体区块均储存了多个区域的数据。
127.另外,需注意的是,区域z0、z2、以及区域z1的数据在写入的过程中,其写入过程可能并非是在区域z0的数据全部写完后再开始将区域z1的数据写入至区域命名空间310_1,换句话说,有可能在区域z0的数据尚未写完时,快闪存储器控制器122便需要将开始将区域z1的数据写入至区域命名空间310_1。因此,如上所述,在本发明的另一个实施例中,l2p映射表2000可以另外包含一个可用指标栏位,其用来指出区域的数据在共用区块是否已完全写入。
128.在以上的实施例中,由于l2p映射表2000储存了对应到不同区域的数据在区块内的地址关系,故可视为逻辑地址属于不同区域的数据可以被储存在相同的实体区块中,故可以有效地利用实体区块的空间。
129.需注意的是,本实施例的l2p映射表2000只会记录少量的逻辑地址(少量的实体数据页地址),因此l2p映射表2000本身仅具有很小的数据量,故l2p映射表2000可以常驻在缓冲存储器216或是dram 240,而不会对缓冲存储器216或dram 240的储存空间造成太大的负担。
130.图21为根据本发明一实施例的自区域命名空间310_1读取数据的流程图,其中本实施例是假设区域命名空间310_1已经储存了图19所示的区域z1、z1及z2的数据。在步骤2100中,流程开始,主装置110及储存装置120_1上电并完成初始化操作(例如,开机程序)。在步骤2102,主装置110发送一读入指令以要求读取具有一特定逻辑地址的数据。在步骤2104,快闪存储器控制器122中的微处理器212判断出该特定逻辑地址是属于哪一个区域,并根据l2p映射表2000所记录的区域编号或逻辑地址来计算出该特定逻辑地址所对应的一
实体数据页地址。以图20的l2p映射表2000来做为说明,由于l2p映射表2000记录了个区域的区块编号或逻辑地址区间,再加上每一个区块可以储存的逻辑地址的数量为已知,因此,微处理器212可以由上述资讯来得知该特定逻辑地址是属于哪一个区域以及哪一个区块。接着,假设该特定逻辑地址是属于区域z0,则微处理器212根据该特定逻辑地址与区域z0的起始逻辑地址之间的差距,再根据区块的每一个数据页所能够储存多少逻辑地址的数据,来决定出该特定逻辑地址所对应的该实体数据页地址。
131.在步骤2106,微处理器212根据在步骤2104中所决定出的实体区块地址及实体数据页地址,自区域命名空间310_1中读取对应的数据,并将所读取的数据回传至主装置110。
132.如上所述,透过以上实施例所述的内容,快闪存储器控制器122可以在仅建立出很小尺寸的l2p映射表2000的情形下,仍然可以有效地完成区域命名空间310_1的数据写入及读取。
133.参考以上图5~21所示的实施例,图5~7描述了每一个区域所对应到的数据量大于快闪存储器模块124中每一个区块的大小,且快闪存储器模块124中的每一个区块仅会储存对应到单一个区域的数据,亦即不同区域的数据不会写入至相同的实体区块中。图8~12描述了每一个区域所对应到的数据量大于快闪存储器模块124中每一个区块的大小,且快闪存储器模块124中有部分的区块会储存对应到多个区域的数据,亦即不同区域的数据可以写入至相同的实体区块中。图13~17描述了每一个区域所对应到的数据量小于快闪存储器模块124中每一个区块的大小,且快闪存储器模块124中的每一个区块仅会储存对应到单一个区域的数据,亦即不同区域的数据不会写入至相同的实体区块中。图18~21描述了每一个区域所对应到的数据量小于快闪存储器模块124中每一个区块的大小,且快闪存储器模块124中的区块会储存对应到多个区域的数据,亦即不同区域的数据可以写入至相同的实体区块中。
134.在一实施例中,上述四种存取模式可以选择性地被应用在快闪存储器模块124的区域命名空间中,且若是快闪存储器模块124具有多个区域命名空间,这些区域命名空间也可以采用不同的存取模式。具体来说,参考图3所示,快闪存储器控制器122内的微处理器212可以根据区域命名空间310_1的每一个区域的大小来选择所采用的存取模式,举例来说,若是区域命名空间310_1的每一个区域所对应到的数据量大于快闪存储器模块124中每一个区块的大小,微处理器212可以采用图5~7所提到的存取模式或是图8~12所提到的存取模式来对区域命名空间310_1进行存取;若是区域命名空间310_2的每一个区域所对应到的数据量小于快闪存储器模块124中每一个区块的大小,微处理器212可以采用图13~17所提到的存取模式或是图18~21所提到的存取模式来对区域命名空间310_2进行存取。同样地,快闪存储器控制器122内的微处理器212可以根据区域命名空间310_2的每一个区域的大小来选择所采用的存取模式,而区域命名空间310_2所采用的存取模式并非一定要与区域命名空间310_1相同,例如区域命名空间310_1可以采用图5~7所提到的存取模式、而区域命名空间310_2则可以采用图8~12所提到的存取模式。
135.请注意到,由于快闪存储器控制器122无法事先得知主装置110所欲设定的区域大小,如果为了让快闪存储器控制器122能够与所有符合规范的主装置互相搭配,快闪存储器控制器122必须要有能力执行图5~21所示的实施例的所有存取方式。举例来说,快闪存储器控制器122在得知快闪存储器模块124的单一实体区块大小(或是超级区块大小,超级区
块的概念将于下详述)以及主装置110所设定的区域大小之后,可以依照实体区块大小及区域大小规划出主装置实际可以使用的存储器空间,并选择应当依照上述四种存取模式中哪一种方式进行存取。
136.倘若区域大小小于实体区块大小,则快闪存储器控制器122得选择图13~21的方式进行存取。由于图13~17所提到的存取模式可能会浪费较多的存储器空间,甚至可能会导致快闪存储器控制器122无法规划出足够的存储器空间给主机使用,例如,依此存取模式,快闪存储器控制器122仅能将总容量2tb的快闪存储器模块规划出1.2tb的容量供主装置110使用,而主装置可能期待至少需要1.5tb的容量可以使用,则快闪存储器控制器122需要改变其存取模式。例如快闪存储器控制器122可以改成图18~21的方式进行存取,由于依此种存取模式,将会大大减少快闪存储器空间的浪费,因此快闪存储器控制器122可以规划出较多的容量供主装置110使用,例如快闪存储器控制器122可将总容量2tb的快闪存储器模块规划出1.8tb的容量供主装置110使用,如此一来则可满足主装置110对存储器储存空间的使用需求。换句话说,上述主装置110可能期待的容量可以视为一标准,而当区域命名空间在采用图13~17的存取方式时所规划的容量高于主装置110的该标准时,则快闪存储器控制器122可以选择图13~17的存取方式;另外,若是区域命名空间在采用图13~17的存取方式时所规划的容量低于主装置110的该标准时,则快闪存储器控制器122可以选择图18~21的存取方式。
137.倘若区域大小大于实体区块大小,则快闪存储器控制器122得选择图5~12的方式进行存取。由于图5~7所提到的存取模式可能会浪费较多的存储器空间,甚至可能会导致快闪存储器控制器122无法规划出足够的存储器空间给主机使用,例如,依此存取模式,快闪存储器控制器122仅能将总容量2tb的快闪存储器模块规划出1.2tb的容量供主装置110使用,而主装置可能期待至少需要1.5tb的容量可以使用,则快闪存储器控制器122需要改变其存取模式。例如快闪存储器控制器122可以改成图8~12的方式进行存取,由于依此种存取模式,将会大大减少快闪存储器空间的浪费,因此快闪存储器控制器122可以规划出较多的容量供主装置110使用,例如快闪存储器控制器122可将总容量2tb的快闪存储器模块规划出1.8tb的容量供主装置110使用,如此一来则可满足主装置110对存储器储存空间的使用需求。换句话说,上述主装置110可能期待的容量可以视为一标准,而当区域命名空间在采用图5~7的存取方式时所规划的容量高于主装置110的该标准时,则快闪存储器控制器122可以选择图5~7的存取方式;另外,若是区域命名空间在采用图5~7的存取方式时所规划的容量低于主装置110的该标准时,则快闪存储器控制器122可以选择图8~12的存取方式。
138.图25为根据本发明一实施例的应用于一快闪存储器控制器的控制方法的流程图。参考以上实施例所述的内容,控制方法的流程如下所述:
139.步骤2500:流程开始。
140.步骤2502:接收来自一主装置的设定指令,其中该设定指令是将快闪存储器模块的至少一部份设定为一区域命名空间,其中该区域命名空间是逻辑性地包含多个区域,该主装置对于该区域命名空间的数据写入存取必须要以区域为单位来进行,每一个区域的大小都是相同的,每一个区域内所对应到的逻辑地址必须要是连续的,且区域之间不会有重迭的逻辑地址。
141.步骤2504:利用一第一存取模式、一第二存取模式、一第三存取模式及一第四存取模式中的其一,以将来自该主装置的数据写入至该快闪存储器模块中,其中该数据为一特定区域的所有数据。
142.步骤2506:若是利用该第一存取模式,根据该数据的逻辑地址的顺序,以依序将该数据写入至该快闪存储器模块的多个特定区块中。
143.步骤2508:当该数据完成写入之后,将该多个特定区块的最后一个特定区块的剩余数据页写入无效数据、或是将剩余数据页维持空白而不写入任何数据。
144.步骤2510:若是利用该第二存取模式,根据该数据的逻辑地址的顺序,以依序将该数据写入至该快闪存储器模块的该多个特定区块中。
145.步骤2512:当该数据完成写入之后,使用一完成指标以将该多个特定区块的最后一个特定区块标注为写入完成。
146.步骤2514:若是利用该第三存取模式,根据该数据的逻辑地址的顺序,以依序将该数据写入至该快闪存储器模块的单一个特定区块中。
147.步骤2516:当该数据完成写入之后,将该特定区块的剩余数据页写入无效数据、或是将剩余数据页维持空白而不写入任何数据。
148.步骤2518:若是利用该第四存取模式,根据该数据的逻辑地址的顺序,以依序将该数据写入至该快闪存储器模块的单一个个特定区块中。
149.步骤2520:当该数据完成写入之后,使用一完成指标以将该特定区块标注为写入完成。
150.请注意到,在另一实施例中,为了让控制器122的设计更简单,控制器122也可以仅支援以上四种存取模式中单一种存取模式,或是控制器122也可以仅支援以上四种存取模式中两种存取模式,或是控制器122也可以仅支援以上四种存取模式中三种存取模式,得依照特定的快闪存储器模块及主装置进行设计。
151.此外,在本发明的一实施例中,储存装置120_1可以是一安全数位卡(secure digital memory card),其支援传统安全数位模式的数据传输,亦即采用uhs-i输入/输出通讯接口标准来与主装置110进行通讯,且也支援同时支援pcie通道与nvme协定的pcie模式。
152.在快闪存储器模块124的实作上,快闪存储器控制器122会将快闪存储器模块124内部的属于不同数据面(plane)的区块组态为一个超级区块,以方便在数据存取上的管理。具体来说,参考图22所示的快闪存储器模块124的一般储存空间320_1的示意图。如图22所示,一般储存空间320_1包含两个通道(channel),通道1及通道2,分别连接了多个快闪存储器芯片(chip)2210、2220、2230、2240,其中快闪存储器芯片2210包含了两个数据面(plane)2212、2214,快闪存储器芯片2220包含了两个数据面2222、2224,快闪存储器芯片2230包含了两个数据面2232、2234,快闪存储器芯片2240包含了两个数据面2242、2244,且每一个数据面均包含了多个区块b0~bn。快闪存储器控制器122在组态或初始化一般储存空间320_1的过程中,会将每一个数据面的第一个区块b0组态为一超级区块2261、每一个数据面的第二个区块b1组态为一超级区块2262、

、以此类推。如图22所示,超级区块2261包含了八个实体区块,而快闪存储器控制器122在存取超级区块2261时则类似于一般区块,举例来说,超级区块2261本身即是一个抹除单位,亦即超级区块2261的八个区块b0虽然可以分开进行
抹除操作,但是快闪存储器控制器122却一定会将八个区块b0一起进行抹除;此外,超级区块2261在进行数据写入时可依序由数据面2212的第一个数据页、数据面2214的第一个数据页、数据面2222的第一个数据页、数据面2224的第一个数据页进行数据写入,而直到数据面2244的第一个数据页完成数据写入之后,再将数据依序写入至由2212的第二个数据页、数据面2214的第二个数据页、

、以此类推,换言之,快闪存储器控制器122会将超级区块2261中每个区块b0的第一个数据页写满后,才接着写超级区块2261中每个区块b0的第二个数据页。超级区块是快闪存储器控制器122为了方便管理储存空间320_1而在逻辑上设定的一集合区块,并非物理上的集合区块。此外,在进行垃圾收集、计算区块有效页、计算区块写入时间长短时,也都可以超级区块为单位来进行计算。在本发明的教导之下,熟悉此项技艺者,当可搭配图5~21所示的实施例,理解在图5~21所示的实施例所提到的一实体区块,也可以是一超级区块,所有的相关的实施例均可利用超级区块来实现,而非局限于单一个实体区块。
153.然而,在快闪存储器控制器122将快闪存储器模块124内的区块组态为超级区块的情形下,若是采用图5~8的实施例来进行数据存取,则很有可能会造成每一个区块都有很多剩余数据页(空白数据页)的情形,因而浪费快闪存储器模块124的内部空间。举例来说,假设主装置110所规划的区域的数据量大小约为六个实体区块的大小,则包含八个区块的超级区块2261所储存的数据量仅会有六个实体区块大小的数据量,亦即超级区块2261中约有两个区块的储存空间便因为要维持空白或是要写入无效数据而浪费了。因此,本发明一实施例提出了一种根据主装置110所设定的区域的数据量来组态区域命名空间310_1的方法,以有效率地使用区域命名空间310_1。
154.图23为根据本发明一实施例的组态快闪存储器模块124的方法的流程图。在步骤2300中,流程开始,且主装置110、快闪存储器控制器122与快闪存储器模块124已完成相关的初始化操作。在步骤2302,主装置110透过发送一个设定指令集以将快闪存储器模块124的至少一部份设定为区域命名空间,在以下的说明中,是以区域命名空间310_1来做为说明,例如,主装置110对储存装置120_1设定区域命名空间310_1中每个区域的大小、区域数量、逻辑区块地址大小等基本设定,例如利用区域命名空间指令集(zoned namespaces command set)进行设定。在步骤2304中,快闪存储器控制器122中的微处理器212根据主装置110所设定的区域的数据量大小(zone size)、以及快闪存储器模块124中每一个区块(实体区块)的大小,来决定出一个超级区块所包含的区块的数量。具体来说,假设主装置110所设定的区域的数据量大小为a、快闪存储器模块124中每一个实体区块中用来储存主机所用的数据量大小为b,微处理器212以a除以b后所得到的余数若不为零,则a除以b后所得到的商数加上一,即可为一个超级区块所包含的区块的数量。而若微处理器212以a除以b后所得到的余数为零,则a除以b后所得到的商数,即可为一个超级区块所包含的区块的数量。以图24所例来说明,快闪存储器模块124包含了多个快闪存储器芯片2410、2420、2430、2440,其中快闪存储器芯片2410包含了两个数据面2412、2414,快闪存储器芯片2420包含了两个数据面2422、2424,快闪存储器芯片2430包含了两个数据面2432、2434,快闪存储器芯片2440包含了两个数据面2442、2444,且每一个数据面均包含了多个区块b0~bn,若是a除以b后的商数为
‘5’
余数为
’3’
,则微处理器212可以决定出一个超级区块包含六个区块,因此,快闪存储器控制器122在组态或初始化区域命名空间310_1的过程中,会将数据面2412、2414、
2422、2424、2432、2434的第一个区块b0组态为一超级区块2461、数据面2412、2414、2422、2424、2432、2434的第二个区块b1组态为一超级区块2462、

、以此类推。此外,数据面2442以及数据面2444的区块b0~bn则可以不需要组态为超级区块,或是可以另外组成一个独立于数据面2412、2414、2422、2424、2432、2434的超级区块。在另一实施例中,快闪存储器控制器122在组态或初始化区域命名空间310_1的过程中,会将数据面2412、2414、2422、2424、2432、2434的第一个区块b0组态为一超级区块2461、数据面2422、2424、2432、2434、2442、2444、的第二个区块b1组态为一超级区块2462。只要能使同一超级区块中的各个区块平行的进行存取,即可提升超级区块存取速度。因此可以在符合此概念之下,任意地进行超级区块的设定。
155.在另一实施例中,假设主装置110所设定的区域的数据量大小为c、快闪存储器模块124中每一个实体区块中用来储存主机所用的数据量大小为d,若是c除以d后的商数为
‘3’
余数为
’2’
,则微处理器212可以决定出一个超级区块包含4个区块,即商数加一。快闪存储器控制器122在接收到主装置设定区域命名空间310_1的命令之后,将数据面2412、2414、2422、2424的第一个区块b0组态为一超级区块2461,而将2432、2434、2442、2444的第一个区块b0组态为一超级区块2462,以此类推。
156.请注意到,储存装置120_1、储存装置120_2
……
储存装置120_n等在进行出厂前的初始化设定时可以对快闪存储器模块进行初步的超级区块设定。以储存装置120_1为例,此时的超级区块设定可以将可同时存取的数据面2412、2414、2422、2424、2432、2434、2442、2444的第一个区块b0组态为一超级区块2461,将可同时存取的数据面2412、2414、2422、2424、2432、2434、2442、2444的第二个区块b1组态为一超级区块2462,以取得最大存取频宽。而在储存装置120_1与主装置110连结,并得到主装置110对于区域命名空间的命令(例如设定区域命名空间310_1)之后,再针对区域命名空间的大小,于快闪存储器模块124内划定一特定储存区域作为区域命名空间310_1的专用空间,且基于主装置110对区域命名空间310_1的每个区域大小的设定,重新设定该特定储存空间的超级区块的大小与结合方式。例如,将数据面2412、2414、2422、2424的第一个区块b0组态为一超级区块2461,而将2432、2434、2442、2444的第一个区块b0组态为一超级区块2462,以此类推。此时储存装置120_1中将有两种不同大小的超级区块,专属于区域命名空间310_1的特定储存区域的超级区块设定,将与非专属于区域命名空间310_1的特定储存区域的超级区块设定方式不同。而且,专属于区域命名空间310_1的特定储存区域的超级区块设定也与储存装置120_1在进行出厂前的初始化设定不同。
157.如上所述,透过根据主装置110所设定的区域的数据量来决定出超级区块所包含的区块数量,让超级区块达到最佳的空间利用。
158.需注意的是,在图22、24的实施例中所述的快闪存储器芯片的数量、每一个快闪存储器芯片所包含的数据面数量仅是作为范例说明,而非是本发明的限制。此外,在图22、24的实施例中,区域命名空间310_1所包含的快闪存储器芯片2410、2420、2430、2440与一般储存空间320_1则包含的快闪存储器芯片2210、2220、2230、2240可以进行整合。具体来说,快闪存储器模块124可以仅包含四个快闪存储器芯片2210、2220、2230、2240,而快闪存储器芯片2210、2220、2230、2240整体来说包含了图3所示的区域命名空间310_1以及一般储存空间320_1,因此,微处理器212可以将四个快闪存储器芯片2210、2220、2230、2240组态为同时包
含多种具有不同区块数量的超级区块,例如,包含了图22所示的包含八个区块的超级区块以及图24所示的包含六个区块的超级区块。
159.另一方面,图3所示的一般储存空间320_1也可以在后续的时间点被主装置110组态为区域命名空间,而此时一般储存空间320_1内先前所组态的超级区块的大小便会需要变更。详细来说,在第一时间点,微处理器会对一般储存空间320_1进行设定以规划出每一个超级区块的大小,以图22为例,由于超级区块最多能包含八个区块,故微处理器212设定每一个超级区块包含八个区块。接着,若是主装置110将一般储存空间320_1重新设定为区域命名空间,则微处理器212需要重新设定其中每一个超级区块所包含的区块的数量,例如图22所示的六个区块。
160.请注意到,快闪存储器控制器122为了提高存取速度,通常可以将主装置110所欲存入储存装置120_1的数据先暂存在快闪存储器模块124的单层储存存储器细胞中,或者说以slc的储存方式暂存在快闪存储器模块124中,而最后仍会将该些数据储存至多层储存存储器细胞中,或者说以mlc的储存方式储存在快闪存储器模块124中。本发明的实施例中省略了将该些数据以slc的储存方式储存在快闪存储器模块124中的过程,直接说明最后以mlc的储存方式储存在快闪存储器模块124中的态样,熟悉此项技艺者当可在本发明的教导之下,将本发明的技术与将数据以slc的储存方式暂存在快闪存储器模块124中的技术相结合。
161.简要归纳本发明,在本发明的应用于快闪存储器控制器的控制方法中,透过规划区域数据写入至快闪存储器的模式,可以有效地降低l2p映射表的尺寸,以降低缓冲存储器或是dram的负担;此外,透过根据区域的数据量以及实体区块的大小来决定超级区块所包含的区块数量,可以更有效地利用快闪存储器模块的空间。
162.以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。

技术特征:


1.一种应用于一快闪存储器控制器的控制方法,其中该快闪存储器控制器用以存取一快闪存储器模块,该快闪存储器模块包含了多个数据面,每一个数据面包含了多个区块,且每一个区块包含了多个数据页,以及该控制方法包含有:接收来自一主装置的设定指令,其中该设定指令是将快闪存储器模块的至少一部份设定为一区域命名空间(zoned namespace),其中该区域命名空间是逻辑性地包含多个区域(zone),该主装置对于该区域命名空间的数据写入存取必须要以区域为单位来进行,每一个区域的大小都是相同的,每一个区域内所对应到的逻辑地址必须要是连续的,且区域之间不会有重迭的逻辑地址;对该区域命名空间进行组态以规划出多个第一超级区块,其中每一个第一超级区块包含了分别位于至少两个数据面内的多个区块,且每一个第一超级区块所包含的区块的数量是根据每一个区域的大小以及每一个区块的大小所决定的;接收来自该主装置的对应至一特定区域的数据,其中该数据为该特定区域的所有数据;根据该数据的逻辑地址的顺序,以依序将该数据写入至该快闪存储器模块的该多个第一超级区块中的一特定第一超级区块中;以及当该数据完成写入之后,将该特定第一超级区块所包含的最后一个区块的剩余数据页写入无效数据、或是将剩余数据页维持空白而且在抹除前不依据该主装置的写入指令写入来自该主装置的数据。2.如权利要求1所述的控制方法,其特征在于,就储存来自该主装置的数据的角度来看,单一个第一超级区块只会储存单一个区域的数据。3.如权利要求1所述的控制方法,其特征在于,该快闪存储器模块包含了n个数据面,每一个区域的大小为a,每一个区块的大小为b,其中a大于b;且对该区域命名空间进行组态以规划出该多个第一超级区块的步骤包含有:对该区域命名空间进行组态以规划出该多个第一超级区块,以使得每一个第一超级区块所包含的区块的数量为a除以b的商数加上
‘1’
,且每一个第一超级区块所包含的区块是分别位于不同的数据面。4.如权利要求1所述的控制方法,其特征于,另包含有:将该快闪存储器模块的另一部分设定为一一般储存空间;以及对该一般储存空间进行组态以规划出多个第二超级区块,其中每一个第二超级区块包含了分别该多个数据面的多个区块。5.如权利要求4所述的控制方法,其特征在于,该快闪存储器模块包含了n个数据面,每一个区域的大小为a,每一个区块的大小为b,其中a大于b;且对该区域命名空间进行组态以规划出该多个第一超级区块的步骤包含有:对该区域命名空间进行组态以规划出该多个第一超级区块,以使得每一个第一超级区块所包含的区块的数量为a除以b的商数加上
‘1’
,且每一个第一超级区块所包含的区块是分别位于不同的数据面;以及对该一般储存空间进行组态以规划出该多个第二超级区块的步骤包含有:对该一般储存空间进行组态以规划出该多个第二超级区块,以使得每一个第一超级区块所包含的区块的数量为n,且每一个第二超级区块所包含的区块是分别位于不同的数据
面。6.如权利要求4所述的控制方法,其特征在于,另包含有:将该一般储存空间的至少一部分重新设定为另一区域命名空间;对该另一区域命名空间进行组态以规划出多个第三超级区块,其中每一个第三超级区块包含了分别位于至少两个数据面内的多个区块,且每一个第三超级区块所包含的区块的数量是根据该另一区域命名空间的每一个区域的大小以及每一个区块的大小所决定的。7.如权利要求6所述的控制方法,其特征在于,就储存来自该主装置的数据的角度来看,单一个第三超级区块只会储存单一个区域的数据。8.一种快闪存储器控制器,其中该快闪存储器控制器是用来存取一快闪存储器模块,该快闪存储器模块包含了多个数据面,每一个数据面包含了多个区块,且每一个区块包含了多个数据页,且该快闪存储器控制器包含有:一只读存储器,用来储存一程序码;一微处理器,用来执行该程序码以控制对该快闪存储器模块的存取;以及一缓冲存储器;其中该微处理器接收来自一主装置的设定指令,其中该设定指令是将快闪存储器模块的至少一部份设定为一区域命名空间(zoned namespace),其中该区域命名空间是逻辑性地包含多个区域(zone),该主装置对于该区域命名空间的数据写入存取必须要以区域为单位来进行,每一个区域的大小都是相同的,每一个区域内所对应到的逻辑地址必须要是连续的,且区域之间不会有重迭的逻辑地址;其中该微处理器对该区域命名空间进行组态以规划出多个第一超级区块,其中每一个第一超级区块包含了分别位于至少两个数据面内的多个区块,且每一个第一超级区块所包含的区块的数量是根据每一个区域的大小以及每一个区块的大小所决定的;该微处理器接收来自该主装置的对应至一特定区域的数据,其中该数据为该特定区域的所有数据,且该微处理器根据该数据的逻辑地址的顺序,以依序将该数据写入至该快闪存储器模块的该多个第一超级区块中的一特定第一超级区块中;以及当该数据完成写入之后,该微处理器将该特定第一超级区块所包含的最后一个区块的剩余数据页写入无效数据、或是将剩余数据页维持空白而且在抹除前不依据该主装置的写入指令写入来自该主装置的数据。9.如权利要求8所述的快闪存储器控制器,其特征在于,就储存来自该主装置的数据的角度来看,单一个第一超级区块只会储存单一个区域的数据。10.如权利要求8所述的快闪存储器控制器,其特征在于,该快闪存储器模块包含了n个数据面,每一个区域的大小为a,每一个区块的大小为b,其中a大于b;且该微处理器对该区域命名空间进行组态以规划出该多个第一超级区块,以使得每一个第一超级区块所包含的区块的数量为a除以b的商数加上
‘1’
,且每一个第一超级区块所包含的区块是分别位于不同的数据面。11.如权利要求8所述的快闪存储器控制器,其特征在于,该微处理器将该快闪存储器模块的另一部分设定为一一般储存空间,且对该一般储存空间进行组态以规划出多个第二超级区块,其中每一个第二超级区块包含了分别该多个数据面的多个区块。12.一种储存装置,包含有:一快闪存储器模块,其中该快闪存储器模块包含了多个数据面,每一个数据面包含了
多个区块,且每一个区块包含了多个数据页;以及一快闪存储器控制器,用以存取该快闪存储器模块;其中该快闪存储器控制器接收来自一主装置的设定指令,其中该设定指令是将快闪存储器模块的至少一部份设定为一区域命名空间(zoned namespace),其中该区域命名空间是逻辑性地包含多个区域(zone),该主装置对于该区域命名空间的数据写入存取必须要以区域为单位来进行,每一个区域的大小都是相同的,每一个区域内所对应到的逻辑地址必须要是连续的,且区域之间不会有重迭的逻辑地址;其中该快闪存储器控制器对该区域命名空间进行组态以规划出多个第一超级区块,其中每一个第一超级区块包含了分别位于至少两个数据面内的多个区块,且每一个第一超级区块所包含的区块的数量是根据每一个区域的大小以及每一个区块的大小所决定的;该快闪存储器控制器接收来自该主装置的对应至一特定区域的数据,其中该数据为该特定区域的所有数据,且该快闪存储器控制器根据该数据的逻辑地址的顺序,以依序将该数据写入至该快闪存储器模块的该多个第一超级区块中的一特定第一超级区块中;以及当该数据完成写入之后,该快闪存储器控制器将该特定第一超级区块所包含的最后一个区块的剩余数据页写入无效数据、或是将剩余数据页维持空白而且在抹除前不依据该主装置的写入指令写入来自该主装置的数据。13.如权利要求12所述的储存装置,其特征在于,就储存来自该主装置的数据的角度来看,单一个第一超级区块只会储存单一个区域的数据。14.如权利要求12所述的储存装置,其特征在于,该快闪存储器模块包含了n个数据面,每一个区域的大小为a,每一个区块的大小为b,其中a大于b;且该快闪存储器控制器对该区域命名空间进行组态以规划出该多个第一超级区块,以使得每一个第一超级区块所包含的区块的数量为a除以b的商数加上
‘1’
,且每一个第一超级区块所包含的区块是分别位于不同的数据面。15.如权利要求12所述的储存装置,其特征在于,该快闪存储器控制器将该快闪存储器模块的另一部分设定为一一般储存空间,且对该一般储存空间进行组态以规划出多个第二超级区块,其中每一个第二超级区块包含了分别该多个数据面的多个区块。

技术总结


本发明揭示了储存装置、快闪存储器控制器及其控制方法,其中该快闪存储器控制器用以存取一快闪存储器模块,以及该控制方法包含有:接收来自一主装置的设定指令,以将快闪存储器模块的至少一部份设定为一区域命名空间;以及根据该区域命名空间的每一个区域的大小以及该快闪存储器模块中每一个区块的大小,以决定出每一个超级区块所包含的区块的数量。出每一个超级区块所包含的区块的数量。出每一个超级区块所包含的区块的数量。


技术研发人员:

林璟辉

受保护的技术使用者:

慧荣科技股份有限公司

技术研发日:

2021.04.12

技术公布日:

2022/8/30

本文发布于:2024-09-20 21:29:52,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/2/25482.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:区块   数据   区域   存储器
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议