CN109710173B - 存储器装置及应用于其上的数据管理方法 - Google Patents
存储器装置及应用于其上的数据管理方法 Download PDFInfo
- Publication number
- CN109710173B CN109710173B CN201711012360.3A CN201711012360A CN109710173B CN 109710173 B CN109710173 B CN 109710173B CN 201711012360 A CN201711012360 A CN 201711012360A CN 109710173 B CN109710173 B CN 109710173B
- Authority
- CN
- China
- Prior art keywords
- data
- sub
- controller
- cluster
- paging
- 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.)
- Active
Links
Images
Abstract
本发明公开了一种存储器装置及应用于其上的数据管理方法。存储器装置包含存储器阵列与控制器。存储器阵列包含第一存储区域与第二存储区域。第一存储区域包含排列为I1行与J1列的多个第一子区域丛集,且各第一子区域丛集包含排列为O1行与P1列的多个子区域。第二存储区域包含排列为I2行与J2列的多个第二子区域丛集,且各第二子区域丛集包含排列为O2行与P2列的多个子区域。其中,控制器利用这些第一子区域丛集中的第一第一子区域丛集以及这些第二子区域丛集中的第一第二子区域丛集的其中一者存取第一数据。
Description
技术领域
本发明是有关于一种存储器装置及应用于其上的数据管理方法,且特别是有关于一种针对机密性数据的存放的存储器装置及应用于其上的数据管理方法。
背景技术
随着影音技术的发展,为了能存取大量的影音数据,平板计算机、手机、数字相机等电子产品均包括存储器装置。
请参见图1,其为存储器装置的示意图。主控装置10可通过总线或传输线等方式而电连接于存储器装置11的控制器111。控制器111根据主控装置10发出的指令而存取存储器阵列115。其中,存储器阵列115可为不同类型的存储元件。例如,闪存阵列。
存储器阵列115采用实体地址(physical address)寻址的方式纪录数据的位置,但是主控装置10使用的文件系统,却是以逻辑地址(logical address)寻址的方式存取数据。其中,控制器111内部设有一闪存转换层(Flash translation layer,简称为FTL),用于提供地址映像的功能,将主控装置10传出的逻辑地址转换为实体地址,反之亦然。也就是说,闪存转换层能协助主控装置10存取存储器阵列115的数据。另外,基于闪存存取时的限制,现有技术的存储器装置以异地更新的方式存储数据。
请参见图2A~2C,其为现有技术的存储器装置,以异地更新(Out-of-placeupdate)方式存储数据的示意图。为便于说明,本文以空白方格表示未存放数据的数据分页;以点状底纹表示已经写入数据的数据分页(例如,图2A的数据分页115a)。
在图2A中,控制器111从主控装置10接收一笔新的写入数据A。本文以英文字母搭配数字的方式表示数据内容与其对应的版本。即,相同的英文字母代表同一笔数据(例如同一个档案),而数字则代表版本的新旧。因为写入数据A为第一次写入的缘故,此处表示为数据A1。在图2A中,闪存转换层111a将数据A1写入数据分页115a中。
在图2B中,控制器111从主控装置10接收更新数据A的指令。即,主控装置10拟以数据A2更新原本存放在存储器装置11的数据A1。此时,闪存转换层111a并不会以数据A1更新存放在数据分页115a的内容。事实上,闪存转换层111a会将数据A2写入数据分页115b中,并更改内部的地址映射表(Mapping Table)。此外,闪存转换层111a还会将数据分页115a标示为无效。在本文中,以交叉的底纹表示数据分页被标示为无效(例如,图2B的数据分页115a)。其后,若主控装置10想要读取数据A时,闪存转换层111a会从数据分页115b读取数据A2。
在图2C中,控制器111再度从主控装置10接收更新数据A的指令。即,主控装置10拟以数据A3更新原本存放在存储器装置11的数据A2。同样地,闪存转换层111a并不会更新数据分页115b的内容,而是将数据A3写入数据分页115c中,并更改内部的地址映射表。此外,闪存转换层111a还会将数据分页115b标示为无效。
根据图2A~2C的说明可以得知,控制器111在接收更新数据时,原本用于存放过时数据(stale data)的数据分页(例如,数据分页115a、115b)虽然被闪存转换层111a标示为无效,但在该些数据分页存放的数据内容实际上仍然存在。此种存放着过时数据的数据分页,仍有机会因为被黑客入侵而读出。换言之,对于机密性较高的数据(例如,银行数据、公司内部数据等)而言,过时数据仍存在于原本的数据分页中,随时可能被读取,进而影响数据的安全性。也就是说,闪存异地更新的特性,并不适合机密性较高的数据。
发明内容
本发明有关于一种存储器装置及应用于其上的数据管理方法。
根据本发明的第一方面,提出一种包含存储器阵列与控制器的存储器装置。存储器阵列包含第一存储区域与第二存储区域。第一存储区域对应于第一数据层级,第二存储区域对应于第二数据层级。其中,第一存储区域包含排列为I1行与J1列的多个第一子区域丛集,且各该第一子区域丛集包含排列为一O1行与一P1列的多个数据分页。第二存储区域包含排列为I2行与J2列的多个第二子区域丛集,且各该第二子区域丛集包含排列为一O2行与一P2列的多个数据分页。其中I1、J1、O1与P1与该第一数据层级相关,而I2、J2、O2与P2与该第二数据层级相关。控制器电连接于存储器阵列。其中,控制器利用这些第一子区域丛集中的一第一第一子区域丛集以及这些第二子区域丛集中的一第一第二子区域丛集的其中一者存取一第一数据。此外,控制器利用这些第一子区域丛集中的一第二第一子区域丛集以及这些第二子区域丛集中的一第二第二子区域丛集的其中一者存取一第二数据。其中控制器随着第一数据的更新频率而将第一数据存放于第一第一子区域丛集与第二第一子区域丛集的一者。其中,I1与O1的乘积等于I2与O2的乘积,且J1与P1的乘积等于J2与P2的乘积。
根据本发明的第二方面,提出一种应用于存储器装置上的数据管理方法。此数据管理方法可被应用于包含第一存储区域与第二存储区域的存储器阵列。其中,第一存储区域与第二存储区域分别对应于第一数据层级与第二数据层级。第一存储区域包含排列为I1行与J1列的多个第一子区域丛集,且各该第一子区域丛集包含排列为O1行与P1列的多个数据分页。第二存储区域包含排列为I2行与J2列的多个第二子区域丛集,且各该第二子区域丛集包含排列为O2行与P2列的多个数据分页。其中,这些第一子区域丛集的数量大于这些第二子区域丛集的数量。数据管理方法包含以下步骤。利用这些第一子区域丛集中的一第一第一子区域丛集以及这些第二子区域丛集中的一第一第二子区域丛集的其中一者存取一第一数据。利用这些第一子区域丛集中的一第二第一子区域丛集以及这些第二子区域丛集中的一第二第二子区域丛集的其中一者存取一第二数据。随着该第一数据的更新频率而将该第一数据存放于该第一第一子区域丛集与该第一第二子区域丛集的一者。其中I1、J1、O1与P1与该第一数据层级相关,而I2、J2、O2与P2与该第二数据层级相关。其中,I1与O1的乘积等于I2与O2的乘积,且J1与P1的乘积等于J2与P2的乘积。
为了对本发明的上述及其他方面有更佳的了解,下文特举实施例,并配合所附附图详细说明如下:
附图说明
图1,其为存储器装置的示意图。
图2A~2C,其为现有技术的存储器装置,以异地更新方式存储数据的示意图。
图3A,其为数据分页的存储单元存有数据的示意图。
图3B,其为针对原本存放数据位“1”的存储单元,改以数据位“0”进行再编程的示意图。
图4,其为依据本发明构想的实施例,在控制器设置操作管理程序与取消功能的示意图。
图5A-5D,其为对一个选定的数据分页进行再编程时,对与该选定的数据分页相邻的数据分页造成影响的示意图。
-图6A-6E,其为拟进行取消操作的数据分页的位置所影响的其他数据分页的个数的示意图。
图7A、7B、7C,其为说明随着待取消的数据分页的位置不同,受干扰的数据分页数量也随着改变的示意图。
图8A,其为依照待取消数据分页的排列顺序,对数据分页进行取消操作的示意图。
图8B,其为未依照待取消数据分页的排列顺序,对数据分页进行取消操作的示意图。
图9,其为对数据区块中,排列为3*3的数据分页进行取消操作的示意图。
图10A,其为以一个包含4行与8列的数据分页的数据区块为例,执行擦除操作的示意图。
图10B,其为以一个包含4行与8列的数据分页的数据区块为例,执行取消指令的示意图。
图11,其为控制器对擦除操作与取消操作评估所需时间后,选择操作类别的流程图。
图12,其为根据本发明构想的存储装置的方框图。
图13A、13B、13C,其为分别对应于三个数据层级DG的数据区块BLK,以及该些数据区块内的分页丛集CL的示意图。
图14,其为高速缓存内部的示意图。
图15,其为存储数据A1时,将数据A1写入对应于数据层级DG1的数据区块的示意图。
图16,其为存储数据A2时,不再存入对应于数据层级DG1的数据区块,而是将数据A2改为写入至对应于数据层级DG2的数据区块的示意图。
图17A~17C,其为将数据A3、A4与A5写入对应于数据层级DG2的数据区块的示意图。
图18,其为存储数据A6时,不再存入对应于数据层级DG2的数据区块,而是将数据A6存入至对应于数据层级DG3的数据区块的示意图。
图19,其为随着数据的版本变化,改变与写入数据对应的数据区块所对应的数据层级DG的流程图。
图20,其为本发明针对存放数据时,根据数据的状态,动态调整与该数据对应的分页丛集的数据层级DG的示意图。
图21,其为执行垃圾回收时,根据数据热度而调整与数据对应的数据层级DG的流程图。
图22A、22B,其为选择需进行垃圾回收的数据区块的流程图。
图23,其为一个存有四笔数据并对应于第三个数据层级DG的数据区块的示意图。
图24,其为执行垃圾回收时,以一个预设的临界值判断应如何调整在一个数据区块所存放的数据所对应的数据层级DG的流程图。
图25A,其为针对垃圾回收的数据区块,定义一个预设的临界值的示意图。
图25B,其为以一个预设的临界值比较待进行垃圾回收的数据区块内的数据热度的示意图。
图26,其为将进行垃圾回收的数据区块内的数据,复制至同一个数据层级DG的数据区块的示意图。
图27,其为将进行垃圾回收的数据区块内的数据,复制至低一个数据层级DG的数据区块的示意图。
图28A、28B,其为对进行垃圾回收的数据区块进行擦除的示意图。
图29,其为对数据区块进行垃圾回收时,以两个预设的临界值判断应如何调整数据所对应数据层级DG的流程图。
图30A、30B,其为针对垃圾回收的数据区块,定义两个预设的临界值的示意图。
图30C,其为以两个预设的临界值比较待进行垃圾回收的数据区块内的数据热度的示意图。
图31A,其为将进行垃圾回收的数据区块内的数据,复制至低一个数据层级DG的数据区块的示意图。
图31B,其为将进行垃圾回收的数据区块内的数据,复制至高一个数据层级DG的数据区块的示意图。
图31C,其为将进行垃圾回收的数据区块内的数据,复制至同一个数据层级DG的数据区块的示意图。
图32A、32B,其为以棋盘式配置方式,规划分页丛集的使用状态的示意图。
图33,其为针对棋盘式配置的分页丛集要如何决定写入数据分页的流程图。
图34,其为一种产生棋盘式配置的分页丛集的流程图。
图35,其为以对应于数据层级DG2的数据区块为例,搭配图34的流程所定义的棋盘式配置的分页丛集的示意图。
图36,其为采用棋盘式配置时,原本被设为关闭状态的分页丛集应该如何判断相邻的分页丛集的使用状态,进而从关闭状态改变为开启状态的示意图。
图37,其为采用棋盘式配置时,控制器根据数据所写入的位置,确认分页丛集的状态是否随着改变的流程图。
图38A至图38H,其为以多笔数据的写入与更新过程,说明如何在使用棋盘式规划的数据区块内,根据分页丛集的状态而存放数据的示意图。
【符号说明】
主控装置-10; 存储器装置-11;
控制器-111、311; 存储器阵列-115;
闪存转换层-111a、3311;
数据分页-115a、215、P(1,1)、P(1,2)、P(1,3)、P(1,4)、P(2,1)、P(2,2)、P(2,3)、P(2,4)、P(3,1)、P(3,2)、P(3,3)、P(3,4)、P(4,1)、P(4,2)、P(4,3)、P(4,4)、451a、451b、451c、451d、451e、451f、452a、452b、452c、452d、452e、452f、453a、453b、453c、453d、453e、453f、P(1,3)、P(2,3)、P(3,3)、P(4,4)、P(4,5)、P(4,6)、P(1,7)、P(2,7)、P(3,7);
存储单元-215a; 高速缓存-335;
存储器阵列-333; 控制固件层-3313;
地址转译器-3311a; 数据区块分配器-3311b;
垃圾回收器-3311c; 耗损平均器-3311d;
取消管理程序-3311e; 读取功能-3313a;
编程功能-3313b; 擦除功能-3313c;
取消功能-3313d;
存储器装置-33;
数据区块-40、20、41、42、23、BLKa、BLKb、BLKc、BLKd、BLKe、BLKf、BLKg、BLKh、BLKi、BLKj、BLKl、651、652、653、703、713、712、80、802、852、853;
步骤-S501、S501a、S501b、S503、S503a、S503b、S505、S507、S507a、S507b、S509、S509a、S509b、S601、S603、S603a、S603b、S605、S607、S609、S611、S613、S615、S71、S73、S75、S711a、S711b、S711c、S711d、S715a、S715b、S731a、S731b、S731c、S731d、S731e、S731f、S731g、S735a、S735b、S735c、S735d、S735e、S735f、S735g、S735h、S735i、S81、S83、S831、S832、S833、S834、S835、S836、S837、S838、S839、S901、S903、S905a、S905b、S905c、S905d、S907、S909、S911、S913;
数据-A、B、C、D、A1、A2、A3、A4、A5、A6、X7、X8、X9、X10、X11、X12、X13、X14、Y6、Y7、Y8、A7、A8、A9、A10、A11、A12、A13、A14、A15、A16、A17、D6、D7、D8、D9、I2、I3、B2、B3、B4、B5、M2、M3、M4、J2、J3、J4、J5、C2、C3、C4、C5、N2、N3、D2、D3、D4、D5、E2、E3、E4、E5、F1、F2、F3、F4、F5、K2、K3、Q1、Q2、G2、G3、G4、G5、L2、L3、L4、H2、H3、H4、H5、H6;
敏感数据存储区-333a; 非敏感数据存储区-333b;
分页丛集-CL1、CL2、CL3、CL4、CL5、CL6、CL7、CL8、CL9、CL10、CL11、CL12、CL13、CL14、CL15、CL16、CL(1,1)、CL(1,2)、CL(1,3)、CL(1,4)、CL(2,1)、CL(2,2)、CL(2,3)、CL(2,4)、CL(3,1)、CL(3,2)、CL(3,3)、CL(3,4)、CL(4,1)、CL(4,2)、CL(4,3)、CL(4,4);
数据区块分级表-335a; 数据区块使用表-335b;
地址映射表-335c;
数据层级DG2的分页丛集-744、751a、751b;
临界值-Th; 较低临界值-Th_L;
较高临界值-Th_H。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
基于数据保密的考虑,存储器装置的控制器需要将存储器阵列存储的过时数据加以清除(Sanitize)。一种进行数据清除的做法是,在控制器执行垃圾回收(garbagecollection)后,以擦除(erase)操作的方式清除数据。然而,存储器装置进行擦除操作时,需要以较大的存储区域(例如:数据区块)作为基本单位,且擦除操作需要花费较长的时间。
然而,通过擦除操作而清除存储区域的数据的做法,会影响存储器装置的访问速度以及增加寿命。特别像是,在存储区域内,仅有小部分的过时数据具有机密性而需要清除,却因此而必须清除整个存储区域的内容。或者,数据经常被更新,导致控制器经常性地以擦除操作清除过时数据等情况。为此,基于避免因为清除存储区域的过时数据而衍生的降低访问速度的情形,本发明提出以较小的子区域(例如:数据分页)作为清除过时数据的基本单位的做法,详如下述。
为便于说明,以下举例以单阶存储单元(Single-Level Cell,简称为SLC)为例,但本发明也可也可应用于多阶存储单元(Multi-Level Cell,简称为MLC)、三阶存储单元(Triple-Level Cell,简称为TLC)的应用。此外,只要存储器装置采用的是异地更新方式的情况,均可能存在类似的机密数据管理问题。因此,该些存储器装置也可搭配本发明的数据管理方法使用,并不限于闪存。再者,本文的实施例虽假设存储区域为数据区块(block)、子区域为数据分页(page),但实际应用时,并不以此为限。
请参见图3A,其为数据分页的存储单元存有数据的示意图。数据分页215包含多个存储单元215a、215b,其中部分的存储单元215a存放的数据位为“0”,部分的存储单元215b存放的数据位为“1”。因此,在图3A下方的存储单元分布图中,部分的存储单元215a的临界电压Vth高于参考电压Vref,代表存储的数据位为“0”;部分的存储单元215b的临界电压Vth低于参考电压Vref,代表存储的数据位为“1”。
根据本发明的构想,可特定的针对数据分页215中,数据位为“1”的存储单元进行再编程(re-programming)。当这些原本存放数据位“1”的存储单元215b经过再编程后,该些存储单元215b存储的数据位更新为“0”。据此,整个数据分页215的存储单元分布情形就类似完全未写入数据前的分布情形。
请参见图3B,其为针对原本存放数据位“1”的存储单元,改以数据位“0”进行再编程的示意图。即,针对数据分页215中,所有存放有数据位“1”的存储单元215b进行编程,以数据位“0”取代原本存储在存储单元215b的数据位“1”。据此,数据分页215的内容将全部为数据位“0”。此时,所有存储单元215a、215b的临界电压Vth都高于参考电压Vref。
在图3B中,即使数据分页215再度被读取,控制器仅能读到全部为“0”的内容。因此,经过再编程后,控制器无法从数据分页215读取任何数据,代表过时数据已经被清除。此种针对特定的数据分页的内容,以数据位“0”进行再编程,进而达到清除效果的方式称为取消操作。
承上,基于数据安全性的考虑而清除过时数据时,可选择以数据区块为单位进行擦除操作,或如图3B所示,以数据分页为单位进行取消操作。为此,针对清除(clean)过时数据的需求,本发明的存储器装置可提供擦除指令(erase commad)以及取消指令(scrubcommand)。其中,当控制器发出取消指令时,可同时包含对多个数据分页进行取消操作的过程。
简言之,控制器可评估执行擦除指令和执行取消指令所需的运行时间后,选择其中所需时间较短者。此外,为使取消指令的运行时间缩短本发明对存储器装置提出整体性的规划管理机制。亦即,本发明基于清除过时数据的目的,在数据写入阶段、数据更新阶段以及垃圾回收等阶段,还针对数据的特性个别针对其存放位置进行管理。连带地,待控制器执行取消指令时,就可以用较有效率的方式执行取消操作。
请参见图4,其为依据本发明构想的实施例,在控制器设置操作管理程序与取消功能的示意图。在此实施例中,存储器装置33包含控制器331、高速缓存335与存储器阵列333。其中,控制器331电连接于高速缓存335与存储器阵列333。
控制器331包含闪存转换层3311与控制固件层3313。其中,闪存转换层3311进一步包含:地址转译器3311a、数据区块分配器3311b、垃圾回收器3311c、耗损平均器3311d,以及取消管理程序3311e。根据本发明的构想,取消管理程序3311e可搭配闪存转换层3311的各个程序,利用控制固件层3313的各个功能进行相关操作。
例如:当有一笔具有机密性的数据需要存入存储器阵列333时,取消管理程序3311e需搭配地址转译器3311a、数据区块分配器3311b,自存储器阵列333中,找出该笔数据应写入的数据区块以及在该数据区块内的哪一个数据分页。此外,在存储器阵列333已经使用一段期间后,取消管理程序3311e可搭配垃圾回收器3311c与耗损平均器3311d对存储器阵列333的存储空间加以调整。此外,在取消管理程序3311e搭配垃圾回收器3311c与耗损平均器3311d对存储器阵列333的存储空间行调整的同时,也须搭配地址转译器3311a与3311b使用。
控制固件层3313进一步包含:读取功能3313a、编程功能3313b、擦除功能3313c,以及取消功能3313d。其中,读取功能3313a可用于读取数据分页的内容;编程功能3313b可以数据分页为单位写入数据(例如,将存储单元的内容编程为“0”或“1”);擦除功能3313c可以数据区块为单位清除数据;且取消功能3313d可以数据分页为单位清除数据。依据本发明的实施例,针对数据清除的目的,取消管理程序3311e可根据需被清除的范围大小,选择以擦除功能3313c清除数据区块的内容,或是以取消功能3313d清除数据分页的内容。实际应用时,控制器331所提供的功能与程序并不以此处的例子为限。
接着以一个包含16个数据分页的数据区块为例,说明取消数据分页的过程。其中可以看出,当控制器331对一个选定的数据分页进行再编程时,对与该选定的数据分页相邻的数据分页,也同时造成影响。此处假设数据区块内的数据分页排列为4行与4列。
请参见图5A-5D,其为对一个选定的数据分页进行再编程时,对与该选定的数据分页相邻的数据分页造成影响的示意图。此处假设数据区块内的三个数据分页P1、P2、P3存有过时数据而须进行再编程,且这三个数据分页在数据区块中,排列为L型。为便于说明,以下以清除操作为代表对一个数据分页的内容进行再编程。
在图5A中,点状底纹代表数据区块40内的数据分页均已经写入数据。其中,假设以粗黑线框起的数据分页P1、P2、P3存有过时数据,因此被控制器331当作需要进行取消操作的数据分页。如图5A下方所示,在控制器331还未对数据分页P1、P2、P3进行清除操作前,存储在数据分页P1、P2、P3内的存储单元,其临界电压Vth均分别散布在参考电压Vref的两侧。
图5B所示为控制器331对数据分页P1进行取消操作后的情形。图5B上方以白色表示数据分页P1的数据已经因为取消操作而被清除。此外,在图5B下方,与数据分页P1对应的存储单元分布中,存储单元的数据位全部转变为“0”。也就是通过取消操作,让数据分页P1内的所有存储单元的临界电压Vth均高于参考电压Vref。
在图5B中,数据分页P2因为未直接与数据分页P1相邻的缘故,数据分页P2在图5B的存储单元分布仍然维持与图5A相同。另一方面,对数据分页P3而言,因为数据分页P3的位置在数据分页P1的正下方。因此,取消数据分页P1的同时,因为数据分页P3与其位置相当靠近的缘故,导致的数据分页P3的存储单元分布,将连带产生变化。由图5B可以看出,在数据分页P3中,数据位为1的存储单元的临界电压Vth,开始呈现向参考电压Vref方向(右侧)移动的趋势。此种存储单元的临界电压Vth改变的现象,代表数据分P3存储的内容受到干扰(Disturb)。
在本文中,以左上右下方向的底纹,代表一个数据分页因为其相邻的数据分页进行取消操作后,所导致的数据分页的存储内容受到干扰的情况。如图5B所示,除了数据分页P3具有左上右下方向的底纹外,在数据分页P1的上方、左侧以及右侧的数据分页,同样以左上右下方向的底纹表示。这是因为在数据分页P1的上方、左侧以及右侧的数据分页,也都受到对数据分页P1进行取消操作影响的缘故。承上,对一个数据分页进行取消操作时,与该选定的数据分页相邻的其他数据分页所存储的数据,会连带受到干扰。
在图5B后,控制器331也对数据分页P2进行取消操作。如图5C上方所示,因为数据分页P2的数据被清除的缘故,数据分页P2以白色方框表示空。由数据分页P2的存储单元分布可以看出中,数据分页P2的存储单元的临界电压Vth全部高于参考电压Vref。亦即,数据分页P2内的数据位全部变为“0”。附带一提的是,因为数据分页P1先前已经被取消,在图5C中,数据分页P1的数据分布仍维持与图5B相同。
在图5C中,因为数据分页P3位于进行取消操作的数据分页P2的右侧。因此,数据分页P3的存储单元分布,将受到数据分页P2的取消操作而影响。由图5C可以看出,在数据分页P3中,数据位为1的存储单元,再度呈现向参考电压方向(右侧)移动的趋势。甚至,在数据分页P3中,有部分的存储单元的临界电压Vth已经超过参考电压Vref。另外,在本文中,以方格状的底纹代表此种因为相邻的数据分页进行取消操作后,导致数据分页的内容两度受到干扰的情况。同样的,除了数据分页P3外,位于数据分页P1左侧的数据分页,也与数据分页P3一样,两度受到干扰。因此,此处也以方格状的底纹绘式位于数据分页P1左侧的数据分页。
最后,图5D所示为,在图5C后,再对数据分页P3进行取消操作的结果。在图5D上方,因为数据分页P3的数据已经被清除的缘故,数据分页P3也以白色表示。此外,在数据分页P3的存储单元分布中,存储单元的数据位全部变为“0”。也就是通过取消操作,让数据分页P3内的所有存储单元的临界电压Vth均高于参考电压Vref。同样的,因为数据分页P1、P2先前均已经过取消操作,在图5D中,数据分页P1、P2的数据分布仍维持与图5C相同。
在图5C中,控制器331虽然还未实际对数据分页P3进行取消操作,但是在图5C的数据分页P3内,已经有部分的存储单元的数据位由“1”变成“0”。即,已经有部分的存储单元不需要被再编程,即已呈现被清除的效果。据此,当控制器331在对数据分页P3进行取消操作而变成图5D的过程中,实际需要被再编程的存储单元数量相对较少。连带地,控制器331对数据分页P3进行取消操作所需要的时间,会较对数据分页P1、P2进行取消操作所需的时间少。换言之,数据分页P3受到干扰的现象,可以节省控制器331对数据分页P3进行取消操作所需的时间。
如前所述,控制器331取消一个数据分页所需的时间,会随着该数据分页是否曾经被干扰而异。若以单位取消时间Tsu代表对未经过干扰的一个数据分页进行取消所需的时间,则,对一个被干扰过一次的数据分页执行取消操作时,控制器331需要的取消时间约为Tsu*60%;对一个已经被干扰过两次的数据分页执行取消操作时,控制器331需要的取消时间约为Tsu*40%;对一个已经被干扰过三次的数据分页执行取消操作时,控制器331需要的取消时间约为Tsu*35%;以及,对一个已经被干扰过四次的数据分页进行取消操作时,控制器331需要的取消时间约为Tsu*30%。由此可以看出,随着被干扰次数的增加,控制器331取消数据分页所需的时间虽然逐步减少,但减少的幅度亦随着干扰次数的增加而趋缓。
进一步的,本发明的实施例进一步规划数据写入至数据分页的顺序,借以发挥此种因为相邻的数据分页(例如,数据分页P1、P2)先进行取消操作,所导致的后续需要进行取消操作的数据分页(例如,数据分页P3)因为受到干扰而能缩短取消操作所需时间的效果。
请参见图6A-6E,其为拟进行取消操作的数据分页的位置所影响的其他数据分页的个数,且在进行取消操作前,需先将其他受影响的有效分页复制至其他空白页面的示意图。为便于说明,以下假设数据区块BLK包含的数据分页排列为M行与N列,并假设对数据分页P(m,n)进行取消操作。其中,m代表数据分页在数据区块内的行数;n代表数据分页在数据区块内的列数。其中,M、N、m、n均为正整数。
图6A~6E所示为一个包含16个数据分页的数据区块20。在图6A中,假设全部的数据分页均存有数据,且数据分页均以P(m,n)、m=1~4、n=1~4标注在数据区块20内的位置。
在图6B~6E中,以粗黑实线框选的数据分页代表需进行取消操作的数据分页。另外,以粗黑虚线框选的数据分页,代表与待执行取消操作的数据分页相邻的受干扰的数据分页。若在该些受干扰的数据分页中,确实存有数据,且所存储的数据内容仍然有效(即,非过时数据)时,控制器331需要将这些受干扰的数据分页所存储的有效数据,复制到其他的数据区块。随着待执行取消操作的数据分页P(m,n)在数据区块20内的位置改变,在数据区块20内受到干扰的数据分页的数量也不尽相同。
在图6B中,若控制器331对数据分页P(1,1)执行取消操作时,数据分页P(2,1)、P(1,2)会受到干扰。据此,若控制器331对数据分页P(1,1)、P(M,1)、P(1,N)、P(M,N)(即,数据分页位于数据区块20的四个角落)执行取消操作时,将使两个与数据分页P(m,n)相邻的数据分页受到干扰。
在图6C中,若控制器331对数据分页P(1,2)执行取消操作时,数据分页P(1,1)、P(1,3)、P(2,2)会受到干扰。据此,若控制器331对数据分页P(1,n)、P(M,n),其中n≠1且n≠N(即,数据分页位于数据区块的第一行或最后一行)执行取消操作时,将使三个与数据分页P(m,n)相邻的数据分页受到干扰。
在图6D中,若控制器331对数据分页P(2,1)执行取消操作时,数据分页P(1,1)、P(3,1)、P(2,2)会受到干扰。据此,若控制器331对数据分页P(m,1)、P(m,N),其中m≠1且m≠M(即,数据分页位于数据区块的第一列或最后一列)执行取消操作时,将使三个与数据分页P(m,n)相邻的数据分页受到干扰。
在图6E中,若控制器331对数据分页P(2,3)执行取消操作时,数据分页P(1,3)、P(2,2)、P(3,3)、P(2,4)会受到干扰。据此,若控制器331对数据分页P(m,n),其中m≠1、m≠M、n≠1且n≠N(相当于数据区块的中间)执行取消操作时,数据分页P((m-1),n)、P((m+1),n)、P(m,(n-1))、P(m,(n+1)),将使四个与数据分页P(m,n)相邻的数据分页受到干扰。
由图6A~6E可以看出,随着控制器331执行取消操作的数据分页P(m,n)的位置不同,受到干扰的数据分页的数量也不相同。也因此,控制器331需备份的数据分页的内容也不相同。更进一步的,随着该些受到干扰的数据分页中,实际存放的数据为有效数据或是过时数据的不同,控制器331所需备份的数据分页的个数也不相同。
请参见图7A、7B、7C,其为说明随着待取消的数据分页在数据区块的位置不同,受干扰的数据分页的数量也随着改变的示意图。在图7A、7B、7C中,以数字代表在待执行取消操作的数据分页中,同样需要执行取消操作并彼此相邻的数据分页的个数。
图7A假设在数据区块451内,待取消的四个数据分页451a、451b、451c、451d完全不相邻。因此,待取消的数据分页451a、451b、451c、451d均标示为0(0表示待取消相邻分页的个数)。此种情况下,控制器331对各该待取消的数据分页451a、451b、451c、451d执行取消操作时,都需要100%的单位取消时间Tsu。在图7A中,不须被取消的数据分页可进一步区分为:15个与数据分页451a、451b、451c、451d相邻的受干扰的数据分页451e,以及13个不会受到干扰的数据分页451f。
图7B假设在数据区块452内,待取消的四个数据分页452a、452b、452c、452d排列为一行,因此,位在头尾两端的待取消的数据分页452a、452d均标示为1;位在中间的待取消的数据分页452b、452c均标示为2(2表示待取消相邻页面的个数)。此种情况下,可利用待取消的数据分页彼此邻接的关系,缩短控制器331执行取消操作所需的时间。在图7B中,共有10个与数据分页452a、452b、452c、452d相邻的受干扰的数据分页451a,以及18个不会受到干扰的数据分页452f。
图7C假设在数据区块453内,待取消的四个数据分页453a、453b、453c、453d排列为田字型。因此,待取消的数据分页453a、453b、453c、453两两相邻,故皆标示为2(2表示待取消相邻页面的个数)。此种情况下,可利用待取消的数据分页453a、453b、453c、453d彼此邻接的关系,减少控制器331执行取消操作所需的时间。在图7C中,共有8个与数据分页453a、453b、453c、453d相邻的受干扰的数据分页453e,以及20个不会受到干扰的数据分页453f。
比较图7A、7B、7C可以看出,待取消的数据分页在数据区块内的排列方式,将影响受干扰的数据分页的数量。当控制器331对数据区块451、452、453内的数据分页进行取消操作时,也需要受干扰的数据分页所存储的数据进行备份。因此,当受干扰的数据分页的数量较多时,控制器331也相对需要花费较多的时间备份该些数据分页的内容。
除了排列方式的差异可能影响控制器331执行取消操作所需时间外,控制器331执行取消操作的顺序,也会对整体执行取消指令所须的时间产生影响。关于取消操作的顺序如何影响控制器331执行取消指令所需时间,将于图8A、8B说明。
图8A、8B延续图7B的举例,以一个包含4*8个数据分页的数据区块为例,说明在执行取消指令时,若采用不同的取消顺序,取消指令的运行时间也不同。此处假设在控制器331已预先将受干扰的数据分页的内容复制至其他分页,也已经将该些受干扰的数据分页标示为无效。图8A、8B各自包含四个须取消的数据分页,且取消指令可包含四个以箭头图案表示的取消阶段。控制器331在每个阶段取消其中一个数据分页。
请参见图8A,其为依照待取消数据分页的排列顺序,对数据分页进行取消操作的示意图。首先,第一个箭头图案ST1代表,对存储过时数据A的数据分页P(2,4)进行取消。因为数据分页P(2,4)为第一个被取消的数据分页,在取消数据分页P(2,4)前,过时数据A并未受到任何干扰。所以取消数据分页P(2,4)时,需要100%的单位取消时间Tsu。
经过取消操作后,数据分页P(2,4)包含的过时数据A已经被清除。因此,在第一个箭头图案ST1右侧的数据分页P(2,4)以空白方格表示。在控制器331清除过时数据A的同时,数据分页P(2,5)因为与数据分页(2,4)相邻的缘故,存放在数据分页P(2,5)的过时数据B将受到一次干扰。
接着对包含过时数据B的数据分页P(2,5)进行取消操作。因为数据分页P(2,5)先前已经被干扰过,控制器331取消数据分页P(2,5)时,仅需要花费60%的单位取消时间Tsu(Tsu*60%)。经过取消操作后,数据分页P(2,5)包含的过时数据B已经被清除。因此,在第二个箭头图案ST2右侧的数据分页P(2,5)以空白方格表示。在控制器331清除过时数据B的同时,数据分页P(2,6)因为与数据分页(2,5)相邻的缘故,存放在数据分页P(2,6)的过时数据C将受到一次干扰。
接着对包含过时数据C的数据分页P(2,6)进行取消操作。因为数据分页P(2,6)先前已经被干扰过,控制器331取消数据分页P(2,6)时,仅需要花费60%的单位取消时间Tsu(Tsu*60%)。经过取消操作后,数据分页P(2,6)包含的过时数据C已经被清除。因此,在第三个箭头图案ST3右侧的数据分页P(2,6)以空白方格表示。在控制器331清除过时数据C的同时,数据分页P(2,7)因为与数据分页(2,6)相邻的缘故,存放在数据分页P(2,7)的过时数据D将受到一次干扰。
最后,对包含过时数据D的数据分页P(2,7)进行取消操作。因为数据分页P(2,7)先前已经被干扰过,控制器331取消数据分页P(2,7)时,仅需要花费60%的单位取消时间Tsu(Tsu*60%)。经过取消操作后,数据分页P(2,7)包含的过时数据D已经被清除。因此,在第四个箭头图案ST4右侧的数据分页P(2,7)以空白方格表示。
承上所述,依据数据分页的排列顺序,针对包含过时数据A、B、C、D的数据分页P(2,4)、P(2,5)、P(2,6)、P(2,7)依序进行取消操作的作法,所需的取消时间分别为:Tsu*100%、Tsu*60%、Tsu*60%、Tsu*60%。因此,在图8A中,累计这四次的取消操作总共需要Tsu*280%的时间。
请参见图8B,其为未依照待取消数据分页的排列顺序,对数据分页进行取消操作的示意图。首先,第一个箭头图案ST1代表,对存储过时数据A的数据分页P(2,4)进行取消。因为数据分页P(2,4)为第一个被取消的数据分页,在取消数据分页P(2,4)前,过时数据A并未受到任何干扰。所以取消数据分页P(2,4)时,需要100%的单位取消时间Tsu*100%。
经过取消操作后,数据分页P(2,4)包含的过时数据A已经被清除。因此,在第一个箭头图案ST1右侧的数据分页P(2,4)以空白方格表示。在控制器331清除过时数据A的同时,数据分页P(2,5)因为与数据分页(2,4)相邻的缘故,存放在数据分页P(2,5)的过时数据B将受到一次干扰。
接着对包含过时数据C的数据分页P(2,6)进行取消操作。因为数据分页P(2,6)先前未曾被干扰,控制器331取消数据分页P(2,6)时,需要花费100%的单位取消时间Tsu(Tsu*100%)。经过取消操作后,数据分页P(2,6)包含的过时数据C已经被清除。因此,在第二个箭头图案ST2右侧的数据分页P(2,6)以空白方格表示。在控制器331清除过时数据C的同时,数据分页P(2,7)因为与数据分页(2,6)相邻的缘故,存放在数据分页P(2,7)的过时数据D将受到一次干扰。此外,在控制器331清除过时数据C的同时,数据分页P(2,5)因为与数据分页(2,6)相邻的缘故,存放在数据分页P(2,5)的过时数据B将第二度受到干扰。
接着对包含过时数据B的数据分页P(2,5)进行取消操作。因为数据分页P(2,5)先前已经被干扰过两次,控制器331取消数据分页P(2,5)时,仅需要花费40%的单位取消时间Tsu(Tsu*40%)。经过取消操作后,数据分页P(2,5)包含的过时数据B已经被清除。因此,在第三个箭头图案ST3右侧的数据分页P(2,5)以空白方格表示。在控制器331清除过时数据B的同时,数据分页P(2,4)、P(2,6)并未存有数据,故不受影响。
最后,对包含过时数据D的数据分页P(2,7)进行取消操作。因为数据分页P(2,7)先前已经被干扰过,控制器331取消数据分页P(2,7)时,仅需要花费60%的单位取消时间Tsu(Tsu*60%)。经过取消操作后,数据分页P(2,7)包含的过时数据D已经被清除。因此,在第四个箭头图案ST4右侧的数据分页P(2,7)以空白方格表示。
承上所述,在图8B中,未依据数据分页的排列顺序,针对过时数据A、B、C、D进行取消操作时,控制器331取消数据分页P(2,4)、P(2,6)、P(2,5)、P(2,7)需要的时间分别为:Tsu*100%、Tsu*100%、Tsu*40%、Tsu*60%。因此,在图8B中,累计这四次的取消操作总共需要Tsu*300%的时间。
比较图8A与图8B可以看出,依照数据分页本身的排列顺序而对数据分页P(2,4)、P(2,5)、P(2,6)、P(2,7)进行取消操作时,执行取消操作所需要的时间较短。因此,针对需取消的数据分页为彼此相邻的情况,本发明的实施例将依照待取消的数据分页的排列位置,依循着由左而右、由上而下的顺序,对各个数据分页进行取消操作。
请参见图9,其为对数据区块中,排列为九宫格状的数据分页进行取消操作的示意图。此处假设数据区块23包含的数据分页排列为4行与8列。
如图9左上方所示,假设在数据区块23中,数据分页P(1,4)、P(2,4)、P(3,4)、P(1,5)、P(2,5)、P(3,5)、P(1,6)、P(2,6)、P(3,6)含有过时数据需要被清除。此处以粗黑线框选这些需要取消的数据分页。
此外,如图9右上方所示,共有9个受干扰的数据分页P(1,3)、P(2,3)、P(3,3)、P(4,4)、P(4,5)、P(4,6)、P(1,7)、P(2,7)、P(3,7)的内容需要在备份至其他空白分页后,再将该些受干扰的数据分页P(1,3)、P(2,3)、P(3,3)、P(4,4)、P(4,5)、P(4,6)、P(1,7)、P(2,7)、P(3,7)标示为无效。
接着,为善加利用前述关于数据分页相邻时,清除数据分页所导致的干扰现象进而加速其取消速度,控制器331可针对需要清除的数据分页,采用由左而右由上而下的顺序进行取消。
图9的左下方以箭头方向代表控制器331执行取消操作的顺序。其中,并以不同的底纹代表对各个数据分页实际进行取消操作前,各该数据分页所处的状态。该些状态也对应于对数据分页进行取消操作所需的取消时间。图9的右下方所示为,数据分页P(1,4)、P(2,4)、P(3,4)、P(1,5)、P(2,5)、P(3,5)、P(1,6)、P(2,6)、P(3,6)的过时数据均被清除后的情形。以下说明按照数据分页在各列的顺序,由左而右说明取消操作的执行顺序。
首先,控制器331取消数据分页P(1,4)时,必须花费100%的单位取消时间Tsu。对数据分页P(2,4)执行取消操作时,因为数据分页P(2,4)内的过时数据曾受到控制器331先前对数据分页(1,4)执行取消操作所干扰。因此,控制器331仅需花费60%的单位取消时间Tsu即可取消数据分页P(2,4)。同理,控制器331取消数据分页P(3,4)时,因为数据分页P(3,4)内的过时数据已经受到控制器331先前对数据分页(2,4)执行取消操作所干扰,因此,控制器331仅需花费60%的单位取消时间Tsu即可取消数据分页(3,4)。
其次,控制器331取消数据分页P(1,5)时,因为数据分页P(1,5)内的过时数据曾受到先前对数据分页(1,4)执行取消操作的影响,仅需花费60%的单位取消时间Tsu。另一方面,控制器331取消数据分页P(2,5)时,因为受到控制器331先前取消数据分页P(2,4)、P(1,5)的影响,存储在数据分页P(2,5)的过时数据已经两度受到干扰。因此,控制器331取消数据分页P(2,5)时,仅需花费40%的单位取消时间Tsu。同样的,控制器331取消数据分页P(3,5)时,因为受到控制器331先前取消数据分页P(3,4)、P(2,5)所干扰,存储在数据分页P(3,5)的过时数据已经两度受到干扰。因此,控制器331取消数据分页P(3,5)时,仅需花费40%的单位取消时间Tsu。
控制器331取消数据分页P(1,6)时,因为受到控制器331先前取消数据分页(1,5)的干扰,仅需花费60%的单位取消时间Tsu。另一方面,控制器331取消数据分页P(2,6)时,因为受到控制器331先前取消数据分页P(2,5)、P(1,6)的干扰,数据分页P(2,6)内的过时数据已经两度受到干扰。因此,控制器331取消数据分页P(2,6)时,仅需花费40%的单位取消时间Tsu。同样的,控制器331取消数据分页P(3,6)时,因为受到控制器331先前取消数据分页P(3,5)、P(2,6)的干扰,数据分页P(3,6)内的过时数据已经两度受到干扰。因此,控制器331取消数据分页P(3,6)时,仅需花费40%的单位取消时间Tsu。
由图9的左下角还可以看出,采用由左而右的顺序以及由上而下的顺序清除过时数据的方式,可以让彼此相邻且排列为田字型的四个数据分页中,位于右上角的数据分页受到至少一次因为其他数据分页被取消操所引起的干扰、位于左下角的数据分页受到至少一次因为其他数据分页被取消所引起的干扰,且位于右下角的数据分页受到两次因为其他数据分页被取消操作所引起的干扰。
承上所述,除了在取消数据分页P(1,4)时,无法利用干扰现象所减少取消操作所需时间外,控制器331在取消其余的每一个数据分页时,都不需要用到100%的单位取消时间Tsu。因此,图9所示的取消顺序,确实可以降低取消指令所需时间的效果。
更进一步分析依照此种顺序而进行取消操作所需的时间可以看出,控制器331取消数据分页P(1,4)需要的时间为Tsu*100%;控制器331取消数据分页P(2,4)、P(3,4)、P(1,5)、P(1,6)需要的时间为Tsu*60%;控制器331取消数据分页P(2,5)、P(3,5)、P(2,6)、P(3,6)需要的时间为Tsu*40%。因此,若需要由控制器331取消的数据分页排列为九宫格,且控制器331依照由左而右、由上而下的顺序取消该些数据分页时,控制器331总共需要的取消时间为Tsu*100%+4*Tsu*60%+4*Tsu*40%=Tsu*500%。据此,控制器331取消这九个数据分页的过程,仅需要五个单位取消时间Tsu*500%。
如前所述,当待取消的数据分页彼此相邻时,相较于个别对九个彼此完全不相邻的数据分页进行取消操作的情况,可以减少需要复制至其他数据区块的数据分页的数量。进一步的,若控制器331针对取消数据分页的顺序加以设计,依照由左而右、由上而下的顺序进行取消操作时,还可利用相邻数据分页间的干扰特性,大幅缩短取消操作所需的时间。因此,采用循序方式取消数据分页的模式,确实可大幅缩短对数据区块执行取消指令所需的时间。
接着,以图10A、10B说明控制器331执行擦除操作与清除操作的做法,并说明两种做法的差异。在图10A、10B中,假设控制器331需要清除数据区块41中,存放在数据分页P(2,4)的过时数据A、存放在数据分页P(2,5)的过时数据B、存放在数据分页P(2,6)的过时数据C,以及存放在数据分页P(2,7)的过时数据D。其中,图10A为控制器331针对数据区块41执行擦除指令的作法;图10B为控制器331针对数据区块执行取消指令的作法。
如图10A所示,控制器331针对数据区块41执行擦除指令时,须先将数据区块41中,除了过时数据A、B、C、D所在位置以外的其他数据分页所包含的数据,复制至另一个数据区块42中。因数据区块41包含32个数据分页,代表此处需要先从数据区块41中,复制32-4=28个数据分页所存储的内容至数据区块42。当控制器331将须备分的数据复制至数据区块42后,控制器331便可对数据区块41执行擦除操作。据此,控制器331可以在执行擦除指令前,依据需要备份的数据分页的数量,以及执行擦除操作所需的时间,计算执行擦除指令所需的时间。
如图10B所示,控制器331针对数据区块41执行取消指令时,须先将数据区块41中,与过时数据A、B、C、D相邻的数据分页所包含的数据,复制至另一个数据区块43中。由图10B可以看出,共有10个与过时数据A、B、C、D所在的数据分页相邻的数据分页。因此,控制器331需要先从数据区块41中,复制10个数据分页的内容至数据区块42中。将须备分的数据复制至数据区块43后,控制器331便可取消数据分页P(2,4)、P(2,5)、P(2,6)、P(2,7)。据此,控制器331可以在执行取消指令前,依据需要备份的数据分页的数量,以及对数据分页P(2,4)、P(2,5)、P(2,6)、P(2,7)进行取消操作所需的时间,计算执行取消指令所需的时间。
为便于说明,此处假设数据区块41中,属于非待清除的数据分页内均包含有效数据。但是,在实际应用中,并非全部的非待清除的数据分页均包含有效数据。亦即,该些非待清除的数据分页内,可能包含过时数据或还尚未写入数据。因此,无论是擦除操作或取消操作,实际需要复制的数据分页内容可能少于图10A的例子。
请参见图11,其为控制器对擦除操作与取消操作评估所需时间后,选择操作类别的流程图。
首先,控制器331分别估算执行擦除指令所需的时间(步骤S501),以及执行取消指令所需的时间(S503)。这两个步骤可同时或是先后进行,且其先后顺序不限。
在步骤S501中,控制器331执行擦除指令所需的时间时,需先计算受影响的数据分页的数量(S501a)。接着,计算将这些受影响的数据分页中的有效数据,复制至其他数据区块所需的时间。并且,将复制有效数据的时间,以及擦除一个数据区块的时间加总后,以加总的结果代表控制器331执行擦除指令所需的时间(步骤S501b)。
在步骤S503中,估算执行取消指令所需的时间时,需先计算受影响的数据分页的数量(S503a)。接着,计算将这些受影响的数据分页中的有效数据,复制至其他数据区块所需的时间。并且,依据需取消数据分页的个数、位置与拟进行取消的顺序,计算对选定的数据分页执行取消操作所需的时间。并且,将复制有效数据的时间,以及对选定的数据分页执行取消操作所需的时间加总后,以加总的结果代表控制器331执行取消指令所需的时间(步骤S503b)。
其后,控制器331判断执行取消指令所需时间是否大于执行擦除指令所需时间(步骤S505)。若步骤S505的判断结果为肯定,控制器331便执行擦除指令(步骤S507,图10A)。反之,若步骤S505的判断结果为否定,控制器331便执行取消指令(步骤S509,图10B)。
在步骤S507中,控制器331先将在数据区块中的其他数据分页中的有效数据,复制至其他数据区块(步骤S507b)。接着,控制器331再对整个数据区块进行擦除(步骤S507b)。
在步骤S509中,控制器331先将受干扰的数据分页中的有效数据,复制至其他数据区块(步骤S507b)。其后,控制器331再对该些选定的数据分页进行取消操作(步骤S507b)。
另须留意的是,随着存储器工艺的不同,控制器331针对不同类型的闪存执行擦除操作与取消操作所需的时间差也不尽相同。连带的,判断要执行擦除指令或是执行取消指令的判断结果,也会依据存储器技术的不同而异。例如,假设对第一种存储器而言,对一个数据分页进行取消操作所需的时间约为对一个数据区块进行擦除操作所需的时间的1/2;假设对第二种存储器而言,对一个数据分页进行取消操作所需的时间约为对一个数据区块进行擦除操作所需的时间的1/10。则,对这两种不同类型的存储器而言,控制器331选择执行取消操作或执行擦除操作的判断结果也可能不同。
如前所述,控制器331将评估执行擦除指令与执行取消指令所需花费的时间,并选择进行其中需要较短时间的操作类型。因此,若控制器331能尽可能的缩短取消操作所需的时间,并使取消指令的运行时间短于擦除指令的运行时间,代表控制器331可以以用较有效率的方式清除过时数据,进而提升保护机密数据的效率。以下说明中,着重于如何缩短取消操作所需的时间,其中,包含从写入阶段时,如何决定数据的存放位置与写入顺序的规划;以及,包含在执行垃圾回收操作时,对数据区块的管理等面向。
请参见图12,其为根据本发明构想的存储装置的方框图。存储器装置30可通过总线与主控装置31相连接。存储器装置30包含高速缓存335、控制器331与存储器阵列333。其中,控制器331电连接于主控装置31、高速缓存335与存储器阵列333。根据本发明的构想,可进一步将存储器阵列区分为两个部分,一部分用于存储机密性数据(confidential data);另一部分用于存储一般性数据(generic data)。
如图12所示,存储器阵列的内部可区分为两个数据存储区。其一为非敏感数据存储区333b、其二为敏感数据存储区333a。若控制器331从主控装置31接收的将写入数据或更新数据不具机密性质时,控制器331可使用一般的数据管理模式,并将其写入非敏感数据存储区333b。反之,若将写入或更新的数据属于机密数据,并需要存放于敏感数据存储区333a时,控制器331将配合取消管理程序3311e使用。
通过取消管理程序3311e,控制器331在写入、更新此类数据的过程,将尽可能地以集中化的方式存储该笔数据的不同版本。再者,若在敏感数据存储区333a所存放的数据因为后续的更新而变成过时数据时,控制器331将对存放过时数据的数据分页进行清除。其中,控制器331清除过时数据的方式可为,针对数据区块进行擦除指令,或是针对数据分页执行取消操作。
根据本发明的实施例,控制器331在规划敏感数据存储区333a的数据区块时,会将数据区块规划为不同的数据层级DG。例如,图12假设将数据区块分为3个数据层级DG。其中,对应于第一个数据层级DG1的数据区块假设为数据区块BLKa、BLKb、BLKc、BLKd;对应于第二个数据层级DG2的数据区块假设为数据区块BLKe、BLKf、BLKg、BLKh;对应于第三个数据层级DG3的数据区块假设为数据区块BLKi、BLKj、BLKk、BLKl。
随着数据区块BLK所对应的数据层级DG不同,本发明以不同数量的数据分页作为分页丛集CL(即,子区域丛集)。随着数据区块BLK所对应的数据层级DG不同,在数据区块BLK内的分页丛集CL所包含的数据分页的数量也不相同。
以下将进一步以三个数据区块所对应的数据层级DG为例,说明数据区块BLK、分页丛集CL与数据分页的关系。附带一提的是,此处关于数据层级DG数量、每个数据层级DG对应的分页丛集CL数量,以及每个分页丛集CL所对应的数据分页的数量等,均为举例,并非限制本发明的应用。
请参见图13A、13B、13C,其为分别对应于三个数据层级DG的数据区块BLK,以及该些数据区块内的分页丛集CL的示意图。其中,图13A代表对应于第一个数据层级(G=1)的数据区块651(例如,数据区块BLKa、BLKb、BLKc、BLKd);图13B代表对应于数据层级DG2的数据区块652(例如,数据区块BLKe、BLKf、BLKg、BLKh);图13C代表对应于数据层级DG3的数据区块653(例如,数据区块BLKi、BLKj、BLKk、BLKl)。在这些附图中,数据区块均包含排列为M行(例如,M=8)与N列(例如,N=8)的多个数据分页。随着对应的数据层级DG不同,数据区块BLK内划分的分页丛集CL的数量也不相同。
在图13A中,数据区块651包含64个分页丛集CL,且每个分页丛集包含1个数据分页。例如,分页丛集CL1包含数据分页P(1,1)、分页丛集CL2包含数据分页P(2,1),其余类推。因此,在图13A中,与数据区块651对应的数据区块使用表,总共列出64个丛集编号(1~64)。当数据区块651内的分页丛集CL1~CL64均未写入任何数据时,与该些丛集编号(1~64)对应的数据存放位置(P#)均为“0”。若在数据区块651内,有任何一个分页丛集写入数据时,控制器331将与该分页丛集CL对应的丛集编号(CL#)对应的数据存放位置(P#)更新为“1”。
在图13B中,数据区块652包含16个分页丛集CL,且每个分页丛集CL包含4个数据分页。因此,与数据区块652对应的数据区块使用表,总共列出16个丛集编号(1~16),分别对应于分页丛集CL1~CL16。此外,每个丛集编号(1~16)所对应的数据存放位置(P#)可为0~4。
在数据区块652内的分页丛集C1~CL16均未写入任何数据时,与该些丛集编号(1~16)对应的数据存放位置(P#)均为“0”。若在数据区块652内的分页丛集CL开始被写入数据时,控制器331在与分页丛集CL对应的丛集编号(CL#)纪录最新的数据存放位置(P#)。
在图13C中,数据区块652包含4个分页丛集,且每个分页丛集CL包含16个数据分页。因此,与数据区块653对应的数据区块使用表,总共列出4个丛集编号1~4,分别对应于分页丛集CL1~CL4。此外,每个丛集编号(1~4)所对应的数据存放位置(P#)可为0~16。
当数据区块653的分页丛集CL1~CL4均未写入任何数据时,与该些丛集编号(1~4)对应的数据存放位置(P#)均为“0”。若在数据区块653内的分页丛集CL1~CL4开始被写入数据时,控制器331在与分页丛集CL对应的丛集编号(CL#)纪录最新的数据存放位置(P#)。
承上,控制器331将数据区块使用表存储于高速缓存335。当控制器331对存储器阵列33写入数据或对数据区块BLK、分页丛集CL、数据分页的内容有所更动时,亦同步更新。据此,控制器331可以通过数据区块使用表,掌握每个数据区块BLK的情况。除了数据区块使用表外,控制器331另可于高速缓存335中,维持一份数据区块分级表与地址映射表,通过三者的搭配使用,管理数据区块BLK的分配使用,以及如何将数据存放至合适的数据区块与数据分页。
请参见图14,其为高速缓存内部的示意图。高速缓存335用于存储数据区块分级表335a、数据区块使用表335b,以及地址映射表335c。基本上,数据区块分级表335a与数据区块使用表335b可视为控制器331针对数据区块BLK的管理与使用所需的相关信息。另一方面,地址映射表335c相当于控制器331针对数据管理目的而提供的信息。
存储器装置30启用期间,闪存转换层3311会实时更新高速缓存335的内容,供控制器331存取存储器阵列333使用。当存储器装置30停用时,控制器331将高速缓存335的内容存储于存储器阵列333或其他的非易失性存储器中,待控制器331在下次开机时加载。
数据区块分级表335a用于存储数据区块BLK与其对应的数据层级DG、各个数据层级DG内的分页丛集所包含的数据分页数量。例如,在图12中,数据区块BLKa、BLKb、BLKc、BLKd均属于对应于数据层级DG1的数据区块BLK;数据区块BLKe、BLKf、BLKg、BLKh均属于对应于数据层级DG2的数据区块;以及,数据区块BLKi、BLKj、BLKk、BLKl均属于对应于数据层级DG3的数据区块。
另,数据区块分级表335a还记录与每个数据层级对应的每个分页丛集CL所包含的数据分页的数量Npg_cl。其中,Npg_cl=Og*Pg。延续图13A~13C的举例,此处假设与数据层级G=1对应的数据区块中,每个分页丛集CL包含一个数据分页的数量(当G=1时,Npg_cl=1);假设与数据层级G=2对应的数据区块中,每个分页丛集CL包含四个数据分页的数量(当G=2时,Npg_cl=4);以及,假设与数据层级G=3对应的数据区块中,每个分页丛集包含十六个数据分页的数量(当G=3时,Npg_cl=16)。
此外,高速缓存335进一步提供多份数据区块使用表335b,每一份数据区块使用表335b对应于一个数据区块BLK。因此,针对图12的例子,若存储器阵列333的敏感数据区333a包含数据区块BLKa~BLKl,则每个数据区块BLKa~BLKl都对于一份数据区块使用表335b。另外,随着数据区块BLKa~BLKl所对应的数据层级DG不同,各个数据区块使用表335b内的丛集编号CL#与数据存放位置P#的数量也不相同。
例如,当数据区块BLK对应于数据层级DG1时,数据区块使用表335b纪录丛集编号为1~64,以及数据存放位置为0或1;当数据区块BLK对应于数据层级DG2时,数据区块使用表335b纪录丛集编号为1~16,且数据存放位置可为0~4;当数据区块BLK对应于数据层级DG3时,数据区块使用表335b纪录丛集编号1~4,且数据存放位置可为0~16(0表示此丛集尚未有数据写入)。
再者,地址映射表335c用于存储每一个逻辑地址所对应的数据,以及该数据在存储器阵列中的实体地址。依据本发明的实施例,控制器331可以利用数据区块BLKid与分页丛集CLid辨别数据在存储器阵列333的存放位置。在搭配数据区块使用表335b后,就可得知该笔数据最新的版本的存放位置。
关于控制器331如何在更新数据时,决定应该将数据写入至哪一个数据区块与哪一个数据分页的具体例子,请参见图15、16、17A~17B、18的说明。这些附图假设一笔数据A会经过反复的更新,并说明随着数据A的更新,控制器331如何决定应该将不同版本的数据A存放于什么位置。为便于说明,此处以英文字母搭配数字代表数据与其版本。例如,A1代表数据A的第一个版本;A2代表数据A的第二个版本,其余类推。
请参见图15,其为存储数据A1时,将数据A1写入对应于数据层级DG1的数据区块的示意图。第一次写入任何数据时,控制器331均会利用与数据层级DG1对应的数据区块651内。图15假设数据A1存放在分页丛集CL1。此时,由数据区块使用表335b可以看出,与分页丛集CL1对应的丛集编号1,其数据存放位置P#更新为“1”。在此同时,因为其他的分页丛集CL2~CL64并未存放任何数据。因此,丛集编号2~64所对应的数据存放位置均为“0”。
在地址映射表335c中,针对每一笔数据的存放位置(P#)加以记录。此处假设数据A为存储器阵列中的第一笔数据,因而对应于逻辑地址1。在地址映射表335c中,记录存储着数据A1的数据区块651与分页丛集CL1。如图12所示,数据区块BLKa为对应于数据层级DG1的数据区块BLK。因此,此处假设数据区块651即为图12的数据区块BLKa,且因数据A1位于分页丛集CL1。因此,此处可以(BLKa,1)对应于数据A。
请参见图16,其为存储数据A2时,不再存入对应于数据层级DG1的数据区块,而是将数据A2写入至对应于数据层级DG2的数据区块的示意图。控制器331将数据A2存入存储器阵列333时,因为与数据层级DG1对应的数据区块651所分配给数据A的分页丛集CL1已经全部被使用,此时改为使用与数据层级DG2对应的数据区块存放数据A2。
如图16所示,在控制器331将数据A2写入存储器阵列333时,并不是将数据A2存入数据区块651,而是将数据A2存入数据区块652内的分页丛集CL1的数据分页P(1,1)。此时,因为数据A已经从A1更新为A2,原本存放在数据区块651的数据A1已经成为过时数据。因此,在与数据区块651对应的数据区块使用表335b中,与丛集编号1对应的数据存放位置P#被注记为无效的数据分页。此处以叉号代表数据分页被标示为无效。另一方面,因为数据A2被存入数据区块652的分页丛集CL1中的数据分页P(1,1)的缘故。因此,与数据区块652对应的数据区块使用表335b所记录的丛集编号1所对应的数据存放位置P#更新为“1”。
随着数据的更新,控制器331需记录数据A的存放位置的历史纪录。因此,在地址映射表335c中,可以利用链串行(linking list)的方式,记录存储数据A的数据区块BLK与分页丛集CL的位置。如图12所示,数据区块BLKe、BLKf、BLKg、BLKh属于数据层级DG2。因此,此处可假设数据区块652即为图12的数据区块BLKe,且因数据A2位于分页丛集CL1的数据分页P(1,1)。因此,此处可以(BLKe,1)更新至与数据A对应的链串行。
如前所述,同一个分页丛集CL所包含的数据分页P均用于存放同一笔数据的不同版本。由于本发明的实施例假设在对应于数据层级DG2的数据区块BLK中,每个分页丛集CL包含四个数据分页P。因此,在数据A2写入数据区块652的分页丛集CL1的数据分页P(1,1)后,分页丛集CL1仍有其他三个数据分页P(2,1)、P(1,2)、P(2,2)可用于写入数据A的其他更新版本。
请参见图17A~17C,其为存储数据A3、A4、A5时,写入对应于数据层级DG2的数据区块的示意图。如前所述,数据区块652的分页丛集CL1中,仍有三个数据分页可供写入数据A的其他更新版本。因此,这三个数据分页P可分别用于写入数据A3、A4、A5。当控制器331将数据A3、A4、A5存入存储器阵列333时,与数据A对应的数据区块与分页丛集并未变更。在此同时,地址映射表335c纪录的链串行仍可维持不变。
图17A为控制器331将数据A3写入数据区块652的分页丛集CL1的数据分页P(2,1)(位于分页丛集CL1右上角)。将数据A3写入后,数据A2成为过时数据。因此,控制器331会将原本用于存放数据A2的数据区块652的分页丛集CL1的数据分页P(1,1),标示为无效的数据分页。此时,因为有效数据A3被存放在数据分页P(2,1)的缘故,控制器331在与数据区块652对应的数据区块纪录表中,将与丛集编号1对应的数据存放位置更新为“2”。
图17B为控制器331将数据A4写入数据区块652的分页丛集CL1的数据分页P(1,2)(位于分页丛集CL1左下角)。将数据A4写入后,数据A3成为过时数据。因此,控制器331会将原本用于存放数据A3的数据区块652的分页丛集CL1的数据分页P(2,1),标示为无效的数据分页。此时,因为有效数据A4的存放位置在数据分页P(1,2)的缘故,控制器331在与数据区块652对应的数据区块纪录表中,将与丛集编号1对应的数据存放位置更新为“3”。
图17C为控制器331将数据A5写入数据区块652的分页丛集CL1的数据分页P(2,2)(位于分页丛集CL1右下角)。将数据A5写入后,数据A4成为过时数据。因此,控制器331会将原本用于存放数据A4的数据区块652的分页丛集CL1的数据分页P(1,1),标示为无效的数据分页。此时,因为有效数据A5的存放位置在数据分页P(2,2)的缘故,控制器331在与数据区块652对应的数据区块纪录表中,将与丛集编号1对应的数据存放位置更新为“4”。
请参见图18,其为存储数据A的第六个版本时,不再存入对应于数据层级DG2的数据区块,而是将数据A的第六个版本改为写入至对应数据层级DG3的数据区块的示意图。
当控制器331写入数据A6时,因为数据区块652所分配与数据A对应的分页丛集CL1已经全部被使用。据此,控制器331判断需要使用容量更大的分页丛集CL存放数据A的更新版本。因此,控制器331将改为使用与数据层级DG3对应的数据区块653的分页丛集CL存放数据A6。
如图18所示,在控制器331将数据A6存入存储器阵列333时,并不是将数据A6存入数据区块652,而是将数据A6存入数据区块653。此时,因为数据A已经从A5更新为A6,原本存储的数据A5成为过时数据。因此,用于存储数据A5的数据区块652的分页丛集CL2的数据分页P(2,2)会被控制器331标示为无效。
承上,当控制器331存入数据A6时,数据区块652的分页丛集CL1内的全部的数据分页已经全部被标示为无效。因此,在与数据区块652对应的数据区块使用表335b中,与丛集编号1对应的数据存放位置将被注记为无效(null)。此处以叉号表示数据分页无法被使用。另一方面,因为数据A6被存入数据区块653的分页丛集CL1中的数据分页P(1,1)。因此,在与数据区块653对应的数据区块使用表335b中,与丛集编号1所对应的数据存放位置更新为“1”。
根据前述的说明可以得知,在图16中,控制器331不再将数据A2存入数据区块651,而是将数据A2存放至数据区块652;以及,在图18中,控制器331不再将数据A6存入数据区块652,而是将数据A2存放至数据区块653。其中,数据区块652所对应的数据层级G2高于数据区块所对应的数据层级G1,且数据区块653所对应的数据层级G3高于数据区块所对应的数据层级G2。随着数据区块的变更,用于存放数据的数据分页丛集所包含的数据分页的数量也随着增加。因此,本发明将此种更换存储的数据区块的过程定义为数据的升级过程。此种升级过程发的发生,是基于数据不断被更新所致。
附带一提的是,随着数据的升级,存储数据的数据区块对应的数据层级DG不断提升。转换存储数据的数据区块的同时,原本存放过时数据的数据区块内,与该数据对应的分页丛集CL中的全部数据分页也都被标示为无效。针对此种因为数据升级所产生的,分页丛集内的数据分页,控制器331可将其清除后,提供给其他数据使用。
为此,本发明的控制器331也可在控制固件层3313提供一个删除功能。该删除功能可用于针对特定的分页丛集进行过时数据的清除。当一笔数据被升级时,控制器331可同时执行删除操作,借以将相对下层的数据区块内的分页丛集清空作为后续使用。或者,控制器331可先记录该些因为数据升级而可被删除的分页丛集,并于存储器装置30相对闲置时,才执行删除操作。由此可知,当控制器331提供取消功能时,各种数据分页的管理可更为弹性。
如前所述,本发明的实施例会随着数据的版本变化,改变与写入数据对应的数据区块所对应的数据层级DG。接着,以流程图的方式方式汇整图15、16、17A~17B、18的例子。
请参见图19,其为随着数据的版本变化,改变与写入数据对应的数据区块所对应的数据层级DG的流程图。在控制器331从主控装置31接收一笔数据后,控制器331先判断该笔数据是否为第一次写入(步骤S601)。若是,控制器331便执行第一次写入程序S603)。其中,步骤S603进一步包含以下步骤:将数据存放至对应于数据层级DG1的数据区块BLK内的未使用分页丛集CL(步骤S603a);以及,将数据存放位置存储于地址映射表(步骤S603b)。其后,控制器331须同步更新与被写入的数据区块对应的数据区块使用表(步骤S607)。
另一方面,若控制器331判断该笔数据并非第一次写入,便执行数据更新程序(步骤S605)。接着,控制器331自高速缓存335取得先前用于存放该笔数据的过时数据的位置,包含数据区块BLK、丛集CL#与数据存放位置P#(S605a)。其后,控制器331可依据高速缓存335提供的数据区块使用表,判断先前用于存储过时数据的分页丛集内,是否仍有可用的数据分页(步骤S605b)。
若步骤S605b的判断结果为肯定,控制器331便将更新数据写入与过时数据相同的一个数据区块内的同一个分页丛集内的另一个数据分页(步骤S605c)。反之,若先前分配的分页丛集内,已无空的数据分页可存放更新数据时,控制器331便将更新数据写入与较高数据层级DG对应的数据区块内的分页丛集内的第一个数据分页(步骤S605d)。接着,控制器331会更新地址映射表(步骤S605e)并将原本用于存储过时数据的数据分页标示为无效的数据分页(步骤S605f)。此外,控制器331须还需更新数据区块使用表335b的内容(步骤S607)。
承上,本发明的实施例可随着数据的更新,对数据的数据层级加以升级。即,动态地使用与较高数据层级对应的数据区块。除前述的数据升级外,本发明的实施例还可将数据对应的数据层级降级。也就是说,数据与其对应的层级可动态地根据数据的属性或实际需求而调整。接着,以图20说明存放数据时,使用的数据区块所对应的数据层级可动态调整的概念。
请参见图20,其本发明针对存放数据时,根据数据的状态,动态调整与该数据对应的分页丛集的数据层级DG的示意图。在本发明的实施例中,数据区块的数据层级可能为数据层级DG1、数据层级DG2或是数据层级DG3。随着数据的写入,代表数据的热度逐渐增加。如果数据的热度高于原本划分的数据层级DG,控制器331便将较与较高的数据层级DG对应的数据区块划分给该笔数据。
另一方面,经过一段时间后,控制器331将判断数据的热度是否仍然维持。即,判断先前针对数据热度所提供数据层级DG是否适合数据的使用状况。如果数据的热度已经降低,代表该笔数据不再需要这么大的存储空间。因此,如果数据的热度降低,控制器331就可改用包含较少数量的数据分页的分页丛集存储该笔更新数据。也就是,控制器331可提供降级的做法。例如,将原本划分为使用数据层级DG3的数据区块的数据,改为对应于数据层级DG2的数据区块。或者,原本规划为使用数据层级DG2的数据区块,改为对应于数据层级DG1的数据区块。
此种根据数据的热度变化而调整数据所对应的数据层级DG的做法,可在控制器331执行垃圾回收时实现。其中,控制器331可对数据所对应的数据层级DG进行升级调整、降级调整或是在同一个层级间平行调整。以下以图21~31C为例,说明控制器331调整与数据对应的数据层级DG的做法。
请参见图21,其为执行垃圾回收时,根据数据热度而调整与数据对应的数据层级DG的流程图。首先,控制器331自存储器阵列333中,选择将用于执行垃圾回收的数据区块(待垃圾回收的数据区块BLKgc)(步骤S71)。接着,对存储在待垃圾回收的数据区块BLKgc内的数据,判断其数据热度,并依据对数据热度的判断结果,对数据对应的数据层级进行调整(步骤S73);以及对待进行垃圾回收的数据区块BLKgc执行擦除操作(步骤S75)。其中,步骤S73所述的数据层级的调整,可通过不同的定义方式与判断过程实现。
以下,图22A、22B为控制器331可选出一个或多个待垃圾回收的数据区块BLKgc,另外,图23~31C进一步提到两种说明可用于调整数据层级的调整方式,但实际应用时,并不以此为限。
图22A所示为,仅选择一个数据区块作为待垃圾回收的数据区块BLKgc。首先,找出具有最多被标示为无效的数据分页的数据区块(步骤S711a)。接着,控制器331判断是否仅有一个数据区块具有最多被标示为无效的数据分页的数据区块(步骤S711b)。若仅有一个数据区块具有最多被标示为无效的数据分页时,就以满足该条件的数据区块作为待垃圾回收的数据区块BLKgc(步骤S711d)。
另一方面,如果步骤S711b的判断结果为,有多个数据区块同样具有最多无效的数据分页时,控制器331在这些数据区块中,选择所对应的数据层级DG较高的数据区块做为选定数据区块(步骤S711c)。
在步骤S711c中,控制器331选择在数据层级DG较高的数据区块作为待垃圾回收数据区块的考虑是,因为每个分页丛集所包含的数据分页为同一笔数据的不同版本的缘故,而数据层级DG越高的数据区块所包含的分页丛集数量越少。由于每个分页丛集对应于一笔数据,分页丛集数量较少时,代表存放的有效数据的数量也相对较少。也因此,若针对数据层级DG较高的数据区块进行擦除时,需备份至其他数据区块的数据量也相对较少。
图22B所示为,选择多个数据区块作为待垃圾回收的数据区块。在图22B中,直接以一个数据区块内的数据分页使用临界值Npgth_blk判断数据区块内的无效的数据分页的数量是否已经超过这个临界值Npgth_blk(步骤S715a)。若是,控制器331便将所有符合这个判断条件的数据区块都当作待垃圾回收的数据区块BLKgc。若步骤S715a的判断结果为否定,代表还不需要进行数据层级的调整,则流程结束。
实际应用时,控制器331也可以视存储器阵列的使用状态,动态的选择应采用图22A或图22B选择待垃圾回收的数据区块BLKgc。例如,控制器331虽然预设使用图22A选择待垃圾回收的数据区块BLKgc,但在存储器装置30相对较为闲置时,控制器331便改以图22B选择多个待垃圾回收的数据区块BLKgc。此外,控制器331选择待垃圾回收的数据区块BLKgc的方式,并不以图22A、22B为限。
无论是图22A或是图22B,当控制器331选出待垃圾回收的数据区块BLKgc后,都需要进一步判断待垃圾回收的数据区块BLKgc内部存储的数据应该如何进行数据层级DG的调整。接着,以一个存有四笔数据并对应于数据层级DG3的数据区块为例,说明对待垃圾回收的数据区块BLKgc进行垃圾回收时,应该如何调整其内部数据所对应的数据层级DG。
请参见图23,其为一个存有四笔数据并对应于数据层级DG3的数据区块的示意图。此附图以一个对应于第三个数据层级的数据区块为例,说明四笔数据在四个分页丛集CL1~CL4的分布情形。
在分页丛集CL1中,存放着数据X的过时数据X6~X13,以及更新数据X14。在分页丛集CL2中,存放数据X的过时数据X6~Y7,以及更新数据Y8。在分页丛集CL3中,存放着数据A的过时数据A6~A16,以及更新数据A17。在分页丛集CL4中,存放着数据D的过时数据D6~D8,以及更新数据D9。以下,利用图24、25A、25B、26说明一种利用一个临界值,判断应如何对数据所属的数据层级G1进行调整的作法,以及利用图29、30A、30B、30C、31A、31B、31C说明另一种利用两个临界值,判断应如何对数据所属的数据层级G1进行调整的作法。
请参见图24,其为对数据区块进行垃圾回收时,以一个预设的临界值判断应如何调整数据所对应数据层级DG的流程图。此流程图说明控制器331如何仅使用一个临界值比较,并决定是否将数据加以降级的过程。
首先,在待垃圾回收的数据区块BLKgc中,选择一个分页丛集CL进行检查(步骤S731a)。控制器331将判断在该分页丛集CL中,已经使用的数据分页的数量是否小于针对与该分页丛集对应的数据层级DG所定义的临界值(步骤S731b)。
若在该分页丛集CL中,已经使用的数据分页的数量确实小于针对与该丛集对应的数据层级DG定义的临界值时,控制器331将视为存放在该分页丛集的数据热度相对较低。据此,控制器331判断该笔数据已经不再需要用到目前使用的数据层级DG。连带的,控制器331会将该笔数据的最新版本,复制至与较低一个数据层级DG对应的数据区块内的分页丛集(步骤S731c)。即,对数据进行降级调整。
另一方面,若在该分页丛集CL中,已经使用的数据分页数量大于或等于针对与该丛集对应的数据层级DG定义的临界值时,控制器331将视为存在该分页丛集CL的数据热度符合预期。也就是,控制器331判断该笔数据确实需要用到目前规划使用的数据层级DG。连带的,控制器331会将该笔数据的最新版本,复制至与同一个数据层级DG对应的其他数据区块内(步骤S731d)。即,对数据进行平移调整。
接着,控制器331判断在该待垃圾回收的数据区块BLKgc中的每一个分页丛集,是否都已经经过与临界值的比较与复制至其他数据区块的前述流程(步骤S731e)。若否,控制器331将选取另一个分页丛集CL,并重复自步骤S731a开始执行。
若在该待垃圾回收的数据区块BLKgc中的每一个分页丛集,全部都经过步骤S731a~731e判断流程,则结束对此数据区块的垃圾回收处理。接着,判断是否有其他的待垃圾回收数据区块BLKgc(步骤S731f)。若否,结束流程。若是,则选择另一个待垃圾回收的数据区块BLKgc(步骤S731g),并重复前述流程。
请参见图25A,其为针对垃圾回收的数据区块BLKgc所对应的数据层级,定义一个预设的临界值的示意图。此附图针对数据层级DG2的分页丛集744,定义一个临界百分比(例如:50%)。因此,控制器331可依据Npg_cl*50%计算临界值Th,并以临界值Th与待垃圾回收的数据区块BLKgc内的分页丛集内的数据分页使用数量进行比较。如前所述,本文假设对应于数据层级DG2的分页丛集包含16个数据分页(Npg_cl=16)。因此,若与数据层级DG2对应的数据区块被选为待垃圾回收数据区块BLKgc时,控制器331便针对该待垃圾回收数据区块BLKgc所包含的四个分页丛集,分别以图25A定义的临界值(例如:8个数据分页)加以比对。
实际应用时,临界值的选定并不限于Npg_cl*50%。另外,针对其他数据层级DG,也可设定与其对应的临界值。再者,针对每个数据层级DG所定义的临界值也可能不同。
请参见图25B,其为以一个预设的临界值比较待进行垃圾回收的数据区块内的数据热度的示意图。此附图以图25A定义的临界值,与图23的每个分页丛集进行比较。
在图25B中,控制器331利用临界值Th分别与分页丛集CL1、CL2、CL3、CL4进行比较。其中,与分页丛集CL1比较时,控制器331确认数据X14的存放位置已经超过临界值Th。因此,控制器331判断数据X属于热度较高的数据,确实需要使用对应于数据层级DG的数据区块存放数据X14以及数据X的后续更新版本。
对分页丛集CL2而言,数据Y8的存放位置低于临界值。因此,控制器331判断数据Y的热度相对较低。据此,控制器331判断应可以使用较低数据层级DG的分页丛集,存放数据Y8以及数据Y的后续更新版本。
对分页丛集CL3而言,数据A17的存放位置高于临界值。因此,数据A的热度相对较高。据此,控制器331判断应可以维持使用数据层级DG3的分页丛集存放数据A17以及数据A的后续更新版本。
对分页丛集CL4而言,数据D9的存放位置低于临界值。因此,数据D的热度相对较低。据此,控制器331判断应可以使用较低数据层级DG的分页丛集存放数据D9以及数据D的后续更新版本。接着说明依据前述的判断结果,控制器331将数据写入其他分页丛集的做法。
请参见图26,其为将进行垃圾回收的数据区块内的数据,复制至同一个数据层级DG的数据区块的示意图。如前所述,经过图25B的比较后,控制器331判断数据X、数据A的更新频率较高。因此,控制器331将维持使用数据层级DG3的分页丛集存放数据X、数据A。因此,控制器331将数据X14、数据A17复制至同样为数据层级DG的数据区块713中。此处假设将数据X14存放于数据区块713的分页丛集CL1;以及将数据A17存放于数据区块713的分页丛集CL2。
请参见图27,其为将进行垃圾回收的数据区块内的数据,复制至低一个数据层级DG的数据区块的示意图。如前所述,经过图25B的比较后,控制器331判断数据Y、数据D的更新频率较低。因此,控制器331使用较低数据层级DG的分页丛集存放数据Y、数据D。因此,控制器331将数据Y8、数据D9复制至较低数据层级DG的数据区块712中。此处假设将数据Y8存放于数据区块712的分页丛集CL1;以及将数据D9存放于数据区块712的分页丛集CL2。
请参见图28A、28B,其为对进行垃圾回收的数据区块进行擦除的示意图。在将数据区块703的数据复制至数据区块713、712后,将数据区块703的数据分页全部标为无效的数据分页(如图28A所示)。此外,控制器331并可对数据区块703进行擦除(如图28B所示)。
请参见图29,其为对数据区块进行垃圾回收时,以两个预设的临界值判断应如何调整数据所对应数据层级DG的流程图。此流程图说明如何仅使用两个临界值比较,并决定应将数据加以降级、升级或维持同一个数据层级DG的判断过程。
在待垃圾回收的数据区块BLKgc中,控制器331选择一个分页丛集进行检查(步骤S735a)。控制器331判断在该分页丛集中,已经使用的数据分页的数量是否小于针对与该分页丛集对应的数据层级DG所定义的较低临界值Th_L(步骤S735b)。
若在该分页丛集中,已经使用的数据分页数量确实小于针对与该丛集对应的数据层级DG定义的较低临界值Th_L时,控制器331将视为存在该分页丛集的数据热度相对较低。据此,控制器331判断该笔数据已经不再需要用到目前使用的数据层级DG。连带的,控制器331会将该笔数据的最新版本,复制至与较低一个数据层级DG对应的数据区块内的分页丛集(步骤S735c)。
另一方面,若在该分页丛集中,已经使用的数据分页数量大于或等于针对与该丛集对应的数据层级DG定义的较低临界值Th_L时,控制器331将进一步以较高临界值Th_H较该分页丛集(步骤S735d)。若分页丛集存储的数据低于较高临界值Th_H时,代表存储在该分页丛集的数据热度符合预期。也就是,控制器331判断该笔数据确实需要用到目前规划使用的数据层级DG。连带的,控制器331会将该笔数据的最新版本,复制至与同一个数据层级DG对应的其他数据区块内(步骤S735e)。
再者,若在该分页丛集中,已经使用的数据分页数量大于或等于针对与该丛集对应的数据层级DG定义的较高临界值Th_H时,代表存储在该分页丛集的数据热度高于预期。也就是,控制器331判断该笔数据需要用较高的数据层级DG。连带的,控制器331会将该笔数据的最新版本,复制至与高一个数据层级DG对应的其他数据区块内(步骤S735f)。
接着,判断在该待垃圾回收的数据区块BLKgc中的每一个分页丛集,是否都已经执行与临界值的比较与复制至其他数据区块的前述流程(步骤S735g)。若否,则选取另一个分页丛集,并自步骤S735a开始重复执行前述步骤。
若在该待垃圾回收数据区块BLKgc中的每一个分页丛集,全部都经过判断流程,控制器331便结束对此数据区块的垃圾回收判断。接着,控制器331将判断是否有其他的待垃圾回收数据区块(步骤S735h)。若否,结束流程。若是,控制器331将选择另一个待垃圾回收的数据区块BLKgc(步骤S735i),并重复前述流程。
请参见图30A、30B,其为针对垃圾回收的数据区块,定义两个预设的临界值的示意图。图30A与图30B针对数据层级DG2的分页丛集751a、751b,分别定义一个较低临界值Th_L(例如:Npg_cl*25%)与一个较高临界值Th_H(例如:Npg_cl*75%)。如前所述,本文假设数据层级DG2的分页丛集包含16个数据分页(Npg_cl=16)。因此,若与数据层级DG2对应的数据区块被选为待垃圾回收数据区块时,控制器331便针对数据区块所包含的四个分页丛集,分别以图30A定义的较低临界值(例如:4个数据分页)加以比对,以及以图30B定义的较高临界值(例如:12个数据分页)。
据此,在另一个待垃圾回收的数据区块BLKgc中,当一个分页丛集内的数据存放位置低于较低临界值Th_L时,控制器331便将该分页丛集用于存储的数据改为对应至较低数据层级DG的分页丛集;当一个分页丛集内的数据存放位置高于或等于较低临界值Th_L,并同时低于较高临界值Th_H时,控制器331便将该分页丛集用于存储的数据维持对应于同一个数据层级DG的分页丛集;或者,当一个分页丛集内的数据存放位置高于或等于较高临界值Th_H时,控制器331便将该分页丛集用于存储的数据改为对应至较高数据层级DG的分页丛集。
实际应用时,较低临界值的选定并不限于Npg_cl*25%,且较高临界值的选定并不限于Npg_cl*75%。另外,针对其他数据层级DG,也可设定与其对应的临界值。再者,针对每个数据层级DG定义的临界值也可能不同。
请参见图30C,其为以两个预设的临界值比较待进行垃圾回收的数据区块内的数据热度的示意图。此附图以图30A、30B定义的较低临界值Th_L与较高临界值Th_H,与图23的每个分页丛集进行比较。
在图30C中,控制器331使用较低临界值Th_L与较高临界值Th_H与分页丛集CL1、CL2、CL3、CL4进行比较。其中,分页丛集CL1而言,数据X14的存放位置已经过较低临界值Th_H且低于较高临界值Th_H。因此,数据X的热度大致符合目前分页丛集的数据层级DG,控制器331维持使用数据层级DG3的数据区块存放数据X14以及数据X的后续更新版本。
对分页丛集CL2而言,数据Y8的存放位置低于较低临界值Th_L。因此,数据Y的热度相对较低。据此,控制器331可以使用较低数据层级DG的分页丛集存放数据Y8以及数据Y的后续更新版本。
对分页丛集CL3而言,数据A17的存放位置等于较高临界值Th_H。因此,数据A的热更高。据此,控制器331改为使用第四个数据层级DG的分页丛集存放数据A17以及数据A的后续更新版本。
对分页丛集CL4而言,数据D9的存放位置等于较低临界值。因此,数据D的热度大致符合目前对应的数据层级DG。据此,控制器331维持使用相同数据层级DG的分页丛集,存放数据D9以及数据D的后续更新版本。
请参见图31A,其为将进行垃圾回收的数据区块内的数据,复制至低一个数据层级DG的数据区块的示意图。如前所述,经过图30C的比较后,控制器331判断数据Y的更新频率较低。因此,可降低与数据X、数据Y所存储的分页丛集的数据层级DG。因此,将数据Y8复制至数据层级DG2的数据区块752中。此处假设将数据Y8存放于数据区块752的分页丛集CL1。
请参见图31B,其为将进行垃圾回收的数据区块内的数据,复制至高一个数据层级DG的数据区块的示意图。如前所述,经过图30C的比较后,控制器331判断数据A的更新频率较高。因此,须使使用更高数据层级DG的分页丛集存放数据A。因此,控制器331将数据A17复制至对应于第四个数据层级DG的数据区块754中。此处假设将数据X14存放于数据区块753的分页丛集CL1。
请参见图31C,其为将进行垃圾回收的数据区块内的数据,复制至同一个数据层级DG的数据区块的示意图。如前所述,经过图30C的比较后,判断数据X、数据D的更新频率大致符合目前规划的分页丛集的数据层级DG。因此,控制器331维持使用数据层级DG3的分页丛集存放数据X、数据D。因此,控制器331将数据X14、数据D9复制至同样为数据层级DG3的数据区块753中。此处假设将数据X14存放于数据区块713的分页丛集CL1;以及将数据D9存放于数据区块753的分页丛集CL2。
前述的举例中,分别说明以一个临界值与两个临界值比较分页丛集的使用情形。另须留意的是,实际应用时,关于临界值的选用、临界值的数量,以及如何针对临界值的比较结果调整数据所对应的数据层级等,并不以此处的举例为限。
除了针对数据存放位置进行级别调整外,为减少在彼此相邻的数据分页进行再编程时,对相邻数据分页可能产生的干扰现象,本发明进一步针对存储器区块提出以棋盘式方式管理分页丛集的写入状态的做法。
本发明的实施例将数据区块所包含的多个分页丛集中,一部分预设为开启状态CLon,另一部分预设为关闭状态CLoff。其中,被预设为开启状态CLon与关闭状态CLoff的分页丛集在数据区块中,彼此交错。当控制器331写入数据时,仅先针对开启状态CLon的分页丛集写入数据。因为被预设为开启状态CLon与关闭状态CLoff的分页丛集在数据区块中彼此交错的缘故,在将数据写入至被默认开启状态CLon的各个分页丛集时,并不会产生因为对数据分页进行再编程,反而导致其他数据分页的数据受到干扰的现象。
其后,待预设为开启状态CLon的分页丛集均已用于写入数据后,控制器331再依据在该些预设为开启状态CLon的分页丛集中,数据分页的使用情况,动态选择是否能变更原本预设为关闭状态CLoff的分页丛集的使用状态。
请参见图32A、32B,其为以棋盘式配置方式,对数据层级DG3的数据区块,规划其分页丛集的使用状态的示意图。如前所述,对应于数据层级DG3的数据区块80包含四个分页丛集CL1、CL2、CL3、CL4。
图32A假设将分页丛集CL1、CL4预设为关闭状态CLoff;以及,将分页丛集CL2、CL3预设为开启状态CLon。因为分页丛集CL1、CL4被预设为关闭状态CLoff的缘故,在数据区块对应表中,与分页丛集CL1、CL4对应的数据存放位置以叉号表示。另一方面,对被预设为开启状态CLon的与分页丛集CL2、CL3而言,与丛集编号2、3对应的数据存放位置标示为“0”。因此,存储器控器会优先利用分页丛集CL2、CL3的数据分页写入数据,并需于分页丛集CL2、CL3都已经被用于存放数据后,才判断分页丛集CL1、CL4是否可以预设的关闭状态CLoff,转变为开启状态CLon。
图32B假设将分页丛集CL1、CL4预设为开启状态CLon;以及,将分页丛集CL2、CL3预设为关闭状态CLoff。因为分页丛集CL2、CL3被预设为关闭状态CLoff的缘故,在数据区块对应表中,与分页丛集CL2、CL3对应的数据存放位置以叉号表示。另一方面,对被预设为开启状态CLon的与分页丛集CL1、CL4而言,与丛集编号1、4对应的数据存放位置标示为“0”。因此,存储器控器会优先利用分页丛集CL1、CL4的数据分页写入数据,并需于分页丛集CL1、CL4都已经被用于存放数据后,才判断分页丛集CL2、CL3是否可以预设的关闭状态CLoff,转变为开启状态CLon。
请参见图33,其为针对棋盘式配置的分页丛集要如何决定写入数据分页的流程图。
首先,控制器331依据分页丛集CL在数据区块BLK的位置而将一部分的分页丛集预设为开启状态CLon的分页丛集CLon,以及将另一部分的分页丛集预设为关闭状态CLoff的分页丛集CLoff(步骤S81)。其次,随着数据写入的过程,控制器331动态调整分页丛集的状态(步骤S83)。其中,步骤S83将反复进行。
步骤S83进一步包含以下步骤。首先,控制器331自主控装置31接收一笔数据(步骤S831),并判断该笔数据是否为新的数据(步骤S832)。若步骤S832的判断结果为否定,代表先前已经分配过与该笔数据对应的分页丛集。因此,将数据写入先前所分配与其对应的分页丛集内(步骤S838),且控制器331依据数据的写入位置,判断是否有任何预设为关闭状态CLoff的分页丛集因为该笔数据的写入而符合开启状态CLon。换言之,控制器331会动态的随着数据的写入位置,判断是否应该调整分页丛集的状态(步骤S839)。图37将进一步说明步骤S839的相关细节。
若步骤S832的判断结果为肯定,代表需要分配一个分页丛集,用于存储该笔数据的各个版本。此时,控制器331将判断是否有设为开启状态CLon的分页丛集可供写入数据(步骤S833)。若是,变使用设为开启状态CLon的分页丛集写入该笔数据(步骤S834)。反的,则需确认是否有原本预设为关闭状态CLoff的分页丛集是否符合转换为开启状态CLon的开启条件(步骤S835)。
若步骤S835的判断结果为,并无任何分页丛集可以从关闭状态CLoff转换为开启状态CLon。则,控制器331将据以判断数据区块目前并无适合的分页丛集可供存放该笔数据。因此,控制器331会将该笔数据存放至其他的数据区块(步骤S837)。
另一方面,若步骤S835的判断结果为,确实有分页丛集已经符合开启条件,并可从关闭状态CLoff转换为开启状态CLon。则,控制器331将在被转换至开启状态CLon的分页丛集存入该笔数据(步骤S836)。
承上,本发明可将数据区块内的分页丛集区分两个部分,其中一部分的分页丛集预先设定为开启状态CLon,另一部分的分页丛集预先设定为关闭状态CLoff。控制器331存储数据时,优先使用默认为开启状态CLon的分页丛集存入数据,并于默认为开启状态CLon的分页丛集均被使用后,依据开启条件逐步判断原本被预设为关闭状态CLoff的分页丛集是否可以开始用于存储数据。关于原本预设为关闭状态CLoff的分页丛集依据何种开启条件进行判断,以及在何种情况下判断开启条件的细节,将进一步说明如下。
请参见图34,其为存储器控制规划如图34所示的棋盘式配置的分页丛集的流程图。此附图为图33的步骤S81的一种举例,首先,设定i=1,j=1(步骤S901)。其次,计算i%2&j%2(步骤S903)。接着,依据i%2&j%2的不同结果,决定分页丛集应被预设为开启状态CLon或为关闭状态CLoff。
若i%2=1&j%2=1时,将分页丛集CL(i,j)设定为开启状态(步骤S905a)。若i%2=0&j%2=1时,将分页丛集CL(i,j)设定为关闭状态CLoff步骤S905b)。若i%2=1&j%2=0时,将分页丛集CL(i,j)设定为关闭状态CLoff(步骤S905c)。若i%2=0&j%2=0时,将分页丛集CL(i,j)设定为开启状态CLon(步骤S905d)。
接着,判断i是否等于Ig(步骤S907)。若否,累加i(步骤S909),并重复自步骤S903开始执行。若i等于Ig时,判断j是否等于Jg(步骤S911)。若否,设定i=1并累加j(步骤S913)。若j=Jg时,决定分页丛集默认状态的流程结束。
针对对应于数据层级DG2的数据区块,若依据此流程图决定分页丛集的资状态时,产生的棋盘式配置如图35所示。对数据层级DG2的数据区块而言,Ig=I2=4、Jg=J2=4、Og=O2=2、Pg=P2=2。
请参见图35,其为以对应于数据层级DG2的数据区块为例,说明一种棋盘式配置的分页丛集的示意图。图35以CL(i,j)代表分页丛集CL在数据区块BLK的位置。其中,每个分页丛集CL包含排列为Og行与Pg列的数据分页。此处同样以细格状的底纹代表被设为关闭状态CLoff的分页丛集CL;以及以空白方格代表被预设为开启状态CLon的分页丛集CL。
图34的步骤S905a对应于此附图中,位于第一列或第三列中的奇数行的分页丛集,例如,分页丛集CL(1,1)、CL(3,1)、CL(1,3)、CL(3,3)。因此,图35的分页丛集CL(1,1)、CL(3,1)、CL(1,3)、CL(3,3)被预设为开启状态CLon。
图34的步骤S905b对应于此附图中,位于第一列或第三列中的偶数行的分页丛集,例如,分页丛集CL(2,1)、CL(4,1)、CL(2,3)、CL(4,3)。因此,图35的分页丛集CL(2,1)、CL(4,1)、CL(2,3)、CL(4,3)被预设为关闭状态CLoff。
图34的步骤S905对应于此附图中,位于第二列或第四列中的奇数行的分页丛集,例如,分页丛集CL(1,2)、CL(3,2)、CL(1,4)、CL(3,4)。因此,图35的分页丛集CL(1,2)、CL(3,2)、CL(1,4)、CL(3,4)被预设为关闭状态CLoff。
图34的步骤S905b对应于此附图中,位于第二列或第四列中的偶数行的分页丛集,例如,分页丛集CL(2,2)、CL(4,2)、CL(2,4)、CL(4,4)。因此,图35的分页丛集CL(2,2)、CL(4,2)、CL(2,4)、CL(4,4)被预设为开启状态CLon。
请参见图36,其采用棋盘式配置时,原本被设为关闭状态CLoff的分页丛集应该如何判断相邻的分页丛集的使用状态,进而从关闭状态CLoff改变为开启状态CLon的示意图。此附图的中心为拟判断状态的分页丛集CL(i,j),其中,i、j分别代表拟判断的分页丛集在数据区块的行方向的位置、列方向的位置。如前所述,判断一个分页丛集可否开启时,需视与其相邻的数据分页是否已经写入数据。随着在分页丛集的上方、下方、左侧、右侧的不同,与其相邻的分页丛集中,需用于判断的数据分页的位置也不完全相同。
判断分页丛集CL(i,j)是否可被开启时,必须针对上方、下方、左侧、右侧的分页丛集中,与分页丛集CL(i,j)相邻接的数据分页是否已经被标示为无效。其中,分页丛集CL(i,j)的上方为分页丛集CL(i,j-1);分页丛集CL(i,j)的下方为分页丛集CL(i,j+1);分页丛集CL(i,j)的左侧为分页丛集CL(i-1,j);以及,分页丛集CL(i,j)的右侧为分页丛集CL(i+1,j)。
在判断分页丛集CL(i,j-1)中,与分页丛集CL(i,j)相邻的数据分页是否已经存入数据,相当于判断在分页丛集CL(i,j-1)中,位于最后一列的数据分页是否都已经写入数据。另外,因为本发明采用由左而右、由上而下的顺序将数据写入数据分页,因此,仅在分页丛集CL(i,j-1)的数据分页P(Og,Pg)已经被标示为无效时,才代表与分页丛集CL(i,j)的上方相邻接的数据分页均已经被标示为无效。
在判断分页丛集CL(i,j+1)中,与分页丛集CL(i,j)相邻的数据分页是否已经被标示为无效,相当于判断在分页丛集CL(i,j-1)中,位于第一列的数据分页是否被标示为无效。另外,因为本发明采用由左而右、由上而下的顺序将数据写入数据分页,因此,仅在分页丛集CL(i,j+1)的数据分页P(Og,1)已经被标示为无效时,代表与分页丛集CL(i,j)的下方相邻接的数据分页均已经被标示为无效。
在判断分页丛集CL(i-1,j)中,与分页丛集CL(i,j)相邻的数据分页是否已经被标示为无效,相当于判断在分页丛集CL(i,j-1)中,位于第Pg行的数据分页是否都已经被标示为无效。另外,因为本发明采用由左而右、由上而下的顺序将数据写入数据分页,因此,仅在分页丛集CL(i,j-1)的数据分页P(Og,Pg)已经被标示为无效时,控制器331方能聚确认与分页丛集CL(i,j)的左侧相邻接的数据分页均被使用。
在判断分页丛集CL(i+1,j)中,与分页丛集CL(i,j)相邻的数据分页是否已经被标示为无效,相当于判断在分页丛集CL(i+1,j)中,位于第一行的数据分页是否都已经被标示为无效。另外,因为本发明采用由左而右、由上而下的顺序将数据写入数据分页,因此,仅在分页丛集CL(i,j+1)的数据分页P(1,Pg)已经被标示为无效时,代表与分页丛集CL(i,j)的右侧相邻接的数据分页均已经被标示为无效。
承上,分页丛集CL(i,j)的开启条件包含以下四个判断条件:其一为,判断分页丛集CL(i,j-1)的数据分页P(Og,Pg)是否已经被标示为无效;其二为,判断分页丛集CL(i,j+1)的数据分页P(Og,1)是否已经被标示为无效;其三为,判断断分页丛集CL(i-1,j)的数据分页P(Og,Pg)是否已经被标示为无效;其四为,判断分页丛集CL(i+1,j)的数据分页P(1,Pg)是否已经被标示为无效。当控制器331判断这四个判断条件均为肯定时,确认开启条件已经成立。据此,控制器331可将符合开启条件的分页丛集CL(i,j)从关闭状态CLoff转换为开启状态CLon。
针对原本为关闭状态CLoff的分页丛集CL,依据其于数据区块的位置不同,所需判断的相邻的分页丛集CL的位置也不尽相同。以下进一步归纳,如何根据分页丛集在数据区块的位置,判断被设为关闭状态CLoff的分页丛集CL是否可转变为开启状态CLon。其中Ig、Jg分别代表在数据区块的行方向与列方向包行的分页丛集的个数。因此,随着数据层级的不同,Ig与Jg的数值也不相同。其中,g代表数据层级DG。
首先,若分页丛集CL(i,j)位于数据区块的第1行与第1列(左上角)时,i=1,j=1。此时,控制器331需判断位于分页丛集CL(i,j)右侧的分页丛集CL(2,1),以及位于分页丛集CL(i,j)下方的分页丛集CL(1,2)所包含的数据分页的使用情形。
若分页丛集CL(i,j)位于数据区块的第一列中,非第一行亦非第Ig行的位置时,j=1。此时,控制器331需判断位于分页丛集CL(i,j)左侧的分页丛集CL(i-1,1)、位于分页丛集CL(i,j)右侧的分页丛集CL(i+1,1)与位于分页丛集CL(i,j)下方的分页丛集CL(i,2)所包含的数据分页使用情形。
若分页丛集CL(i,j)位于数据区块的第Ig行与第1列(右上角)时,i=Ig、j=1。此时,控制器331需判断位于分页丛集CL(i,j)左侧的分页丛集CL(Ig-1,1)、位于分页丛集CL(i,j)下方的分页丛集CL(Ig,2)所包含的数据分页的使用情形。
若分页丛集CL(i,j)位于数据区块的第一行中,非第一列亦非第Jg列的位置时,i=1、j≠1、j≠Ig。此时,控制器331需判断位于分页丛集CL(i,j)上方的分页丛集CL(1,j-1)、位于分页丛集CL(i,j)右侧的分页丛集CL(2,j),以及位于分页丛集CL(i,j)下方的分页丛集CL(1,j+1)所包含的数据分页使用情形。
若分页丛集CL(i,j)位于数据区块中非第1行、非第Ig行、非第1列亦非第Jg列的位置时,控制器331需判断位于分页丛集CL(i,j)上方的分页丛集CL(i,j-1)、位于分页丛集CL(i,j)下方的分页丛集CL(i,j+1)、位于分页丛集CL(i,j)左侧的分页丛集CL(i-1,j)、位于分页丛集CL(i,j)右侧的分页丛集CL(i+1,j)所包含的数据分页的使用情形。
若分页丛集CL(i,j)位于数据区块的第Ig行中,非第一列亦非第Jg列的位置时,i=Ig、j≠1、j≠Jg。此时,控制器331需判断在分页丛集CL(i,j)上方的分页丛集CL(Ig,j-1)、位于分页丛集CL(i,j)左侧的分页丛集CL(Ig-1,j),以及位于分页丛集CL(i,j)下方的分页丛集CL(Ig,j+1)所包含的数据分页使用情形。
若分页丛集CL(i,j)位于数据区块的第1行与第Jg列(左下角)时,i=1,j=Jg。此时,控制器331需要判断在分页丛集CL(i,j)上方的分页丛集CL(1,Jg-1)、位于分页丛集CL(i,j)右侧的分页丛集CL(2,Jg)所包含的数据分页的使用情形。
若分页丛集CL(i,j)位于数据区块的第Jg列中,非第一行亦非第Ig行的位置时,i≠1、i≠Ig、j=Jg。此时,控制器331需判断位于分页丛集CL(i,j)左侧的分页丛集CL(i-1,Jg)、位于分页丛集CL(i,j)右侧的分页丛集CL(i+1,Jg)、位于分页丛集CL(i,j)上方的分页丛集CL(i,Jg-1)所包含的数据分页的使用情形。
若分页丛集CL(i,j)位于数据区块的第Ig行与第Jg列(右下角)时,i=Ig,j=Jg。此时,控制器331需判断在需判断位于分页丛集CL(i,j)上方的分页丛集CL(Ig,Jg-1)、位于分页丛集CL(i,j)左侧的分页丛集CL(Ig-1,Jg)所包含的数据分页的使用情形。
请参见图37,其为采用棋盘式配置时,控制器根据数据所写入的位置,确认分页丛集的状态是否随着改变的流程图。首先,判断该笔数据是否被存放在被预设为开启状态CLon的分页丛集(步骤S839a)。若步骤S839a的判断结果为否定,代表被用于写入该笔数据的分页丛集是由预设的关闭状态CLoff转换为开启状态CLon。因此,该笔数据被写入位置处的相邻的分页丛集必为原本即预设为开启状态CLon,故流程结束。
若步骤S839a的判断结果为肯定,控制器331将进一步判断是否仍有预设为开启状态CLon的分页丛集可供新数据写入(步骤S839b)。若步骤S839b的判断结果为肯定,代表控制器331还不需要判断原本被预设为关闭状态CLoff的分页丛集是否符合开启条件,故流程结束。
若步骤S839b的判断结果为否定,控制器331便需要与该笔数据的存入位置相邻的分页丛集是否为开启状态CLon(步骤S839c)。若步骤S839c的判断结果为肯定,代表该笔数据的写入并不会影响其周边的分页丛集的状态,则流程结束。
若步骤S839c的判断结果为否定,代表该笔数据的写入可能会影响其周边的分页丛集的状态。此时,控制器需判断该笔数据的写入位置是否影响其周边的分页丛集的状态(步骤S839d)。若步骤S839d的判断结果为否定,控制器331不需要改变分页丛集的状态,则流程结束。若步骤S839d的判断结果为肯定,则须待控制器331将符合开启条件的分页丛集转换为关闭状态CLoff(步骤S839e)后,流程结束。
当然,实际应用时,控制器331还需考虑其他相关因素。例如,控制器331实际将数据存入数据分页的过程,并不一定需要判断周边分页丛集的状态。例如,若分页丛集包含多列、多行的数据分页时,控制器331若将数据存入非第一列、非最后一列、非第一行、非最后一行的数据分页时,就不需要判断存入数据的分页丛集的周边的分页丛集的状态。又如,对位于分页丛集的右上角、左下角、右下角位置的数据分页而言,与其相邻的分页丛集有两个,且这两个相邻的分页丛集是否满足开启条件的判断各自独立。因此,可能出现针对同样一笔写入的数据,控制器331将一个相邻的分页丛集转换为开启状态CLon(即,执行步骤S839d后,判断结果为肯定并执行步骤S839e);却维持另一个相邻的分页丛集为关闭状态CLoff(即,执行步骤S839d后,判断即果为否定)
请参见图38A~38H,其为以多笔数据写入过程,说明如何在使用棋盘式规划的数据区块内,根据分页丛集的状态而存放数据的示意图。此处假设控制器331将分页丛集CL2、CL4、CL5、CL7、CL10、CL12、CL13与CL15预设为关闭状态CLoff,且将分页丛集CL1、CL3、CL4、CL6、CL9、CL11、CL14与CL16预设为开启状态CLon。
在图38A中,控制器331已经在原本预设为开启状态CLon的分页丛集写入数据。其中,分页丛集CL1已用于存放数据A的多个版本(A2、A3、A4、A5);分页丛集CL3已用于存储数据B的多个版本(B2、B3、B4、B5)。此外,分页丛集CL6、CL8、CL9、CL11、CL14与CL16也分别用于存放数据C、数据D、数据E、数据F、数据G、数据H的多个版本。附带一提,在写入数据A2、B2、C2、D2、E2、F2、G2、H2时,控制器331执行的步骤相当于图33的步骤S831、S832、S833、S834。写入数据A3~A5、B3~B5、C3~C4、D3~D5、E3~E4、F3~F5、G3~G5、H3~H5时,控制器331执行的步骤相当于图33的步骤S831、S832、S838以及图37的步骤S839a、S839b。
在图38A的数据区块使用表335b中,被设为关闭状态CLoff的分页丛集(CL2、CL4、CL5、CL7、CL10、CL12、CL13、CL15)均以叉号标示属于该分页丛集的数据分页不可用于存放数据。另一方面,对开启状态CLon的分页丛集而言,每个分页丛集内的数据分页的使用状态将同步更新。以分页丛集CL1为例,因为已经使用第四个数据分页且第四个数据分页存储着有效数据,所以在数据区块使用表335中,分页丛集CL1的编号对应于4。再以分页丛集CL3为例,分页丛集3对应的数字为4,代表分页丛集内的数据分页中,已经有四个数据分页被陆续用于存放数据B的不同版本(B2~B5)。其余的分页丛集与其对应的编号、数字也可类推而不再详述。
当数据区块852内,原本预设为开启状态CLon的分页丛集CL1、CL4、CL5、CL7、CL10、CL12、CL13、CL15都已经被用于存放数据后,控制器331会在接收尚未写入过数据区块852的数据时,执行步骤图33的步骤S831、S832、S833、S835。当控制器331执行步骤S835时,会依照如图36所说明的判断方式,判断原本预设为关闭状态CLoff的分页丛集(CL2、CL4、CL6、CL8、CL9、CL11、CL14、CL16)是否满足开启条件。
控制器331判断在分页丛集CL2左侧的数据分页存有有效数据A5,因此分页丛集CL2仍不符合开启条件,不能被设为开启状态CLon。控制器331判断在分页丛集CL4左侧的数据分页存有有效数据B5,因此分页丛集CL4仍不能被设为开启状态CLon。控制器331判断在分页丛集CL5上方的数据分页存有有效数据A5、右侧的数据分页存有有效数据C4,因此分页丛集CL5仍不能被设为开启状态CLon。控制器331判断在分页丛集CL7上方的数据分页存有有效数据B5、左侧的数据分页尚未被使用,因此分页丛集CL7仍不能被设为开启状态CLon。控制器331判断在分页丛集CL10上方有一个数据分页存有有效数据C4、一个数据分页尚未被使用,且在其左侧的一个数据分页尚未被使用,因此分页丛集CL10仍不能被设为开启状态CLon。控制器331判断在分页丛集CL12左侧的数据分页仍存有有效数据F5,因此分页丛集CL12仍不能被设为开启。控制器331判断在分页丛集CL13上方有一个数据分页仍存有有效数据E4、一个数据分页尚未被使用,因此分页丛集CL13仍不能被设为开启状态CLon。控制器331判断在分页丛集CL15上方的数据分页存有有效数据F5、左侧的数据分页存有有效数据G5,因此分页丛集CL15仍不能被设为开启状态CLon。根据前述说明可以得知,在图38A中,控制器331仍然无法使用分页丛集CL2、CL4、CL5、CL7、CL10、CL12、CL13与CL15存放数据。
在图38B中,假设数据A、C再度被更新。连带地,位在分页丛集CL1中,原本用于存放数据A5的数据分页已经被标示为无效;位在分页丛集CL6中,原本用于存放数据C4的数据分页已经被标示为无效。此时,控制器331须根据数据A、C的更新而执行图33的步骤S831、S832、S839以及图37的步骤S839a、S839b、S839c、S839d。在此同时,数据区块使用表中,分页丛集CL1以叉号表示,且与分页丛集CL6对应于4。
在分页丛集CL1中,原本用于存放数据A5的数据分页与分页丛集CL2、CL5相邻。因此,当存放数据A5的数据分页被标示为无效时,控制器331需判断分页丛集CL2、CL5的状态是否需要改变。在分页丛集CL6中,原本用于存放数据C4的数据分页与分页丛集CL5、CL10相邻。因此,当存放数据C4的数据分页被标示为无效时,控制器331需判断分页丛集CL5、CL10的状态是否需要改变。
据此,在图38B中,随着数据A、C的更新,控制器331须判断分页丛集CL2、CL5、CL10是否可被启用。如图38B所示,分页丛集CL2、CL4、CL5、CL7、CL10、CL12、CL13、CL15原本为关闭状态CLoff。然而,随着数据A、C被更新的缘故,控制器331确认在这些被设为关闭状态CLoff的分页丛集中,分页丛集CL2、CL5可转换为开启状态CLon,而分页丛集CL10尚不可转换为开启状态CLon。即,随着数据A、C被更新,控制器S839d执行步骤S839d的判断结果可能分为两类,一类为执行步骤S839e的分页丛集CL2、CL5,另一类则是不改变状态的分页丛集CL10。另一方面,对分页丛集CL4、CL7、CL12、CL13、CL15而言,因为与其相邻的数据分页的状态并未更新,所以分页丛集CL4、CL7、CL12、CL13、CL15仍维持为关闭状态CLoff。
比较图38A、38B可以看出,控制器331在判断哪些分页丛集的状态可以转换时,并不是依据分页丛集在数据区块的位置而决定,而是更具在那些位置上的数据分页随着数据的更新而被标示为无效而判断。换言之,控制器331会依据数据的更新,判断有哪些分页丛集会根据该些数据更新而须重新判断相关的分页丛集的开启状态CLon。
请同时参看图38B、38C。因为在图38B中,控制器331判断分页丛集CL2、CL5可被启用,因此,在图38C中,分页丛集CL2、CL5均被开启(由格状底纹改变为无底纹),且在数据区块使用表中,分页丛集CL2、CL5对应于0。
在图38C中,假设数据C、F、G再度被更新。连带地,位在分页丛集CL6中,原本用于存放数据C5的数据分页已经被标示为无效;位在分页丛集CL11中,原本用于存放数据F5的数据分页已经被标示为无效;以及,位在分页丛集CL14中,原本用于存放数据G5的数据分页已经被标示为无效。在此同时,数据区块使用表中,分页丛集CL6、CL11、CL14均以叉号表示。
在分页丛集CL1中,原本用于存放数据C5的数据分页与被默认为关闭状态CLoff的分页丛集CL7、CL10相邻。因此,当存放数据C5的数据分页被标示为无效时,控制器331需判断分页丛集CL7、CL10的状态是否需要改变。在分页丛集CL11中,原本用于存放数据F5的数据分页与分页丛集CL12、CL15相邻。因此,当存放数据F5的数据分页被标示为无效时,控制器331需判断分页丛集CL12、CL15的状态是否需要改变。在分页丛集CL14中,原本用于存放数据G5的数据分页同样与分页丛集CL15相邻。因此,当存放数据G5的数据分页被标示为无效时,控制器331需判断分页丛集CL15的状态是否需要改变。据此,在图38C中,随着数据C、F、G的更新,控制器331须判断分页丛集CL7、CL10、CL12、CL15是否可被启用。关于控制器331判断分页丛集CL7、CL10、CL12、CL15是否符合开启条件并可被转换为开启状态CLon的细节此处不再详述。
如图38C所示,分页丛集CL4、CL7、CL10、CL12、CL13、CL15原本为关闭状态CLoff。然而,随着数据C、F、G被更新的缘故,控制器331确认在这些被设为关闭状态CLoff的分页丛集中,分页丛集CL15可转换为开启状态CLon,而分页丛集CL7、CL10、CL12、CL15尚不可转换为开启状态CLon。另一方面,对分页丛集CL4而言,因为与其相邻的数据分页的状态并未更新,所以分页丛集CL4仍维持为关闭状态CLoff。
请同时参看图38C、38D。因为在图38C中,控制器331判断分页丛集CL15可被启用,因此,分页丛集CL15由图38C的格状底纹改变为图38D的无底纹。且,在图38D的数据区块使用表中,分页丛集CL15对应于0。
在图38D中,假设数据D、E、I、J再度被更新。其中,控制器331执行图33的步骤S831、S832、S833、S835、S836以写入数据I2、J2。因此,数据I2、J2被控制器331存放在开启后的分页丛集CL2、CL5的数据分页。连带的,在图38D的数据区块使用表中,分页丛集CL2对应于1,且分页丛集CL5对应于1。由于数据I2、J2被存放在原先预设为关闭状态CLoff并经转换为开启状态CLon的分页丛集内,代表数据I2、J2并不涉及分页丛集的转换状态的判断。因此,控制器331并不需要判断有哪些分页丛集与存放数据I2、J2的数据分页相邻。
此外,位在分页丛集CL8中,原本用于存放数据D5的数据分页已经被标示为无效;位在分页丛集CL9中,原本用于存放数据E4的数据分页被标示为无效,且数据E5存储于分页丛集Cl9的另一个数据分页。接着,控制器331需判断数据D、E的更新是否影响相关的分页丛集的开启状态CLon。
在分页丛集CL8中,原本用于存放数据D5的数据分页与被默认为关闭状态CLoff的分页丛集CL12相邻。因此,控制器331需判断分页丛集CL12的状态是否需要改变。在分页丛集CL9中,原本用于存放数据E4的数据分页与分页丛集CL13相邻。因此,控制器331需判断分页丛集CL13的状态是否需要改变。据此,在图38D中,随着数据D、E的更新,控制器331判断分页丛集CL12可被启用,但分页丛集CL13尚无法启用。
承上,在图38D中,控制器331已经确认分页丛集CL12可转换为开启状态CLon,因此,在图38E中,分页丛集CL12未以底纹标示,且数据区块使用表为0。另须留意的是,无论是因为更新数据或是判断分页丛集可转换为开启状态CLon的判断结果等。控制器331都需要同步更改在数据区块使用表的相关纪录。
关于图38E~38H的细节均可类推前述说明得出,此处不再详述。简言之,在图38E中,随着数据E的更新,存储数据E5的数据分页被设为无效,连带使分页丛集CL10、CL13符合开启条件。因此,在图38F中,分页丛集CL10、CL13被设为开启状态CLon。在图38F中,随着数据B的更新,存储数据B5的数据分页被设为无效,连带使分页丛集CL4、CL7可转换为开启状态CLon。因此,在图38G中,分页丛集CL4、CL7被设为为开启状态CLon。在图38G中,所有原本被预设为关闭状态CLoff的分页丛集已经全部转换为开启状态CLon,并陆续用于存储新的数据。在图38H中,分页丛集CL4、CL7也开始用于存储数据O、P的更新版本。
由图38A~38H可以看出,控制器331使用原本预设为开启状态CLon的分页丛集CL1、CL3、CL4、CL6、CL9、CL11、CL14与CL16存放数据时,会依照该些分页丛集在数据区块的排列顺序,由左而右、由上而下先后用于存放数据。
另一方面,对原本预设为关闭状态CLoff的丛集分页丛集CL2、CL4、CL5、CL7、CL10、CL12、CL13与CL15而言,其转换为开启状态CLon的顺序会受到那些数据被更新、被更新的数据的位置等因素而影响。也就是说,原本预设为关闭状态CLoff的丛集分页丛集CL2、CL4、CL5、CL7、CL10、CL12、CL13与CL15实际转换为开启状态CLon的顺序并不是依照该些分页丛集在数据区块的排列位置而决定。
承上,本发明的实施例基于全盘性的考虑,针对存储器装置在在写入阶段、垃圾回收阶段、读取阶段等面向加以管理。在考虑这些面向后提出的数据管理方法,能确保存储器装置能以较有效率的方式达到数据清除的目的。
首先,根据本发明构想的实施例,基于以数据分页作为数据清除时的基本单位的作法,于存储器装置内提供取消操作的功能。据此,控制器331可评估使用擦除操作与使用取消操作所需的时间较短后,以较有效率的方式进行数据清除。
再者,为使取消操作的执行效率提升,本发明的实施例进一步提出以分页丛集管理数据存放的作法。通过分页丛集的设置,同一笔数据的不同版本会存储在数据区块内的同一个分页丛集内。其后,若需要对该笔数据的过时版本时,便可基于在分页丛集内的数据分页彼此相邻的特性,大幅缩短执行取消操作所需的时间。
此外,本发明还针对数据更新频率所对应的热度,动态调整存放数据所使用的分页丛集。据此,存储器区块可提供较合适的分页丛集存储数据。当一笔数据热度较高时,将该笔数据存入至包含数据分页数量较多的分页丛集;当该笔数据热度较低时,则将该笔数据存入至包含数据分页数量较少的分页丛集内。
更进一步的,本发明的实施例还提出棋盘式规划的方式,避免数据分页所存储的内容受到相邻的数据分页进行存取所干扰。因此,本发明能在有效率的清除数据,达到数据安全的目的的同时,维持数据的正确性。
综上所述,虽然本发明已以实施例公开如上,然其并非用以限定本发明。本发明所属技术领域中具有公知常识的技术人员,在不脱离本发明的精神和范围内,当可作各种的更改与润饰。因此,本发明的保护范围当视申请专利范围所界定的权利要求为准。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种存储器装置,包含:
一存储器阵列,包含:
一第一存储区域,对应于一第一数据层级,其中该第一存储区域包含排列为一I1行与一J1列的多个第一子区域丛集,且各该第一子区域丛集包含排列为一O1行与一P1列的多个子区域,其中I1、J1、O1与P1与该第一数据层级相关;以及
一第二存储区域,对应于一第二数据层级,其中该第二存储区域包含排列为一I2行与一J2列的多个第二子区域丛集,且各该第二子区域丛集包含排列为一O2行与一P2列的多个子区域,其中I2、J2、O2与P2与该第二数据层级相关,且这些第一子区域丛集的数量大于这些第二子区域丛集的数量;以及
一控制器,电连接于该存储器阵列,其中,
该控制器利用这些第一子区域丛集中的一第一第一子区域丛集以及这些第二子区域丛集中的一第一第二子区域丛集的其中一者存取一第一数据,且
该控制器利用这些第一子区域丛集中的一第二第一子区域丛集以及这些第二子区域丛集中的一第二第二子区域丛集的其中一者存取一第二数据,其中该控制器随着该第一数据的更新频率而将该第一数据存放于该第一第一子区域丛集与该第一第二子区域丛集的其中一者,
其中,I1、I2、J1、J2、O1、O2、P1与P2均为正整数,I1与O1的乘积等于I2与O2的乘积,且J1与P1的乘积等于J2与P2的乘积。
2.根据权利要求1所述的存储器装置,其中,
当该第一数据的更新频率较低时,该控制器将该第一数据存放于该第一第一子区域丛集所包含的这些子区域中的一者;以及
当该第一数据的更新频率较高时,该控制器将该第一数据存放于该第一第二子区域丛集所包含的这些子区域中的一者;
其中,该第一数据的更新频率较低或较高,是由该控制器以一个预设的临界值比较待进行垃圾回收的数据区块内的数据热度来确定的,如果该控制器确认数据的存放位置已经超过临界值,则判断该数据属于热度较高的数据,该数据的更新频率较高;否则,如果该控制器确认数据的存放位置未超过临界值,则判断该数据属于热度较低的数据,该数据的更新频率较低。
3.根据权利要求2所述的存储器装置,其中,
随着该第一数据的更新,该控制器将该第一数据存放于该第一第二子区域丛集,并将该第一第一子区域丛集所包含的这些子区域标示无效的子区域。
4.根据权利要求3所述的存储器装置,其中,该控制器通过下列两种指令的一种,清除在该第一第一子区域丛集中,被标示为无效的子区域:
对该第一存储区域执行一擦除指令(erase commad);以及
对该第一第一子区域丛集所包含的这些子区域执行一取消指令(scrub command)。
5.根据权利要求4所述的存储器装置,其中该控制器通过该取消指令,依照一列方向递增与一行方向递增的顺序而取消该第一第一子区域丛集所包含的这些子区域的内容。
6.根据权利要求1所述的存储器装置,其中当该控制器将该第一数据存放于该第一第一子区域丛集所包含的该O1行与P1列的这些个子区域中的一者时,该控制器随着该第一数据的更新,依照一列方向递增与一行方向递增的顺序存储该第一数据。
7.根据权利要求1所述的存储器装置,其中该第一第一子区域丛集在该第一存储区域中的位置,与该第二第一子区域丛集在该第一存储区域中的位置不相邻。
8.一种应用于存储器装置的数据管理方法,应用于包含一第一存储区域与一第二存储区域的一存储器阵列,其中该第一存储区域与该第二存储区域分别对应于一第一数据层级与一第二数据层级,其中,
该第一存储区域包含排列为一I1行与一J1列的多个第一子区域丛集,且各该第一子区域丛集包含排列为一O1行与一P1列的多个子区域,其中,
该第二存储区域包含排列为一12行与一J2列的多个第二子区域丛集,且各该第二子区域丛集包含排列为一O2行与一P2列的多个子区域,其中这些第一子区域丛集的数量大于这些第二子区域丛集的数量,且该数据管理方法包含以下步骤:
利用这些第一子区域丛集中的一第一第一子区域丛集以及这些第二子区域丛集中的一第一第二子区域丛集的其中一者存取一第一数据;
利用这些第一子区域丛集中的一第二第一子区域丛集以及这些第二子区域丛集中的一第二第二子区域丛集的其中一者存取一第二数据;以及,
随着该第一数据的更新频率而将该第一数据存放于该第一第一子区域丛集与该第一第二子区域丛集的其中一者,其中I1、J1、O1与P1与该第一数据层级相关,而I2、J2、O2与P2与该第二数据层级相关,其中,I1、I2、J1、J2、O1、O2、P1与P2均为正整数,I1与O1的乘积等于I2与O2的乘积,且J1与P1的乘积等于J2与P2的乘积。
9.根据权利要求8所述的数据管理方法,其中还包含以下步骤:
当该第一数据的更新频率较低时,将该第一数据存放于该第一第一子区域丛集所包含的这些子区域中的一者;以及
当该第一数据的更新频率较高时,将该第一数据存放于该第一第二子区域丛集所包含的这些子区域中的一者;
其中,该第一数据的更新频率较低或较高,是由该控制器以一个预设的临界值比较待进行垃圾回收的数据区块内的数据热度来确定的,如果该控制器确认数据的存放位置已经超过临界值,则判断该数据属于热度较高的数据,该数据的更新频率较高;否则,如果该控制器确认数据的存放位置未超过临界值,则判断该数据属于热度较低的数据,该数据的更新频率较低。
10.根据权利要求9所述的数据管理方法,其中还包含以下步骤:
随着该第一数据的更新,将该第一数据存放于该第一第二子区域丛集;以及,
将该第一第一子区域丛集所包含的这些子区域标示为无效的子区域。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711012360.3A CN109710173B (zh) | 2017-10-26 | 2017-10-26 | 存储器装置及应用于其上的数据管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711012360.3A CN109710173B (zh) | 2017-10-26 | 2017-10-26 | 存储器装置及应用于其上的数据管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109710173A CN109710173A (zh) | 2019-05-03 |
CN109710173B true CN109710173B (zh) | 2021-12-03 |
Family
ID=66252807
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711012360.3A Active CN109710173B (zh) | 2017-10-26 | 2017-10-26 | 存储器装置及应用于其上的数据管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109710173B (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200828014A (en) * | 2006-12-28 | 2008-07-01 | Genesys Logic Inc | Flash memory management method with low RAM utilization |
JP2009087255A (ja) * | 2007-10-02 | 2009-04-23 | Canon Inc | データ記憶装置、データ記憶方法及びプログラム |
CN102498522A (zh) * | 2009-09-15 | 2012-06-13 | 国际商业机器公司 | 用于减小固态器件中的写入放大的容器标记方案 |
CN103377143A (zh) * | 2012-04-27 | 2013-10-30 | 群联电子股份有限公司 | 存储器管理方法、存储器控制器与存储器存储装置 |
CN103458023A (zh) * | 2013-08-30 | 2013-12-18 | 清华大学 | 分布式闪存存储系统 |
TW201523247A (zh) * | 2013-12-04 | 2015-06-16 | Silicon Motion Inc | 資料儲存裝置以及快閃記憶體控制方法 |
CN104756089A (zh) * | 2012-10-19 | 2015-07-01 | 法国大陆汽车公司 | 闪速存储器的管控方法 |
CN106055489A (zh) * | 2015-04-10 | 2016-10-26 | 旺宏电子股份有限公司 | 存储器装置与其操作方法 |
CN106356093A (zh) * | 2015-07-17 | 2017-01-25 | 旺宏电子股份有限公司 | 存储器的操作方法及应用其的存储器装置 |
TW201719663A (zh) * | 2015-11-25 | 2017-06-01 | Macronix Int Co Ltd | 資料配置方法及應用其之電子系統 |
CN107037988A (zh) * | 2017-04-06 | 2017-08-11 | 华中科技大学 | 一种基于文件级粒度的闪存安全删除方法及系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9747993B2 (en) * | 2013-08-13 | 2017-08-29 | Empire Technology Development Llc | Memory systems |
KR102468992B1 (ko) * | 2015-11-06 | 2022-11-22 | 에스케이하이닉스 주식회사 | 메모리 장치 및 이의 동작 방법 |
-
2017
- 2017-10-26 CN CN201711012360.3A patent/CN109710173B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200828014A (en) * | 2006-12-28 | 2008-07-01 | Genesys Logic Inc | Flash memory management method with low RAM utilization |
JP2009087255A (ja) * | 2007-10-02 | 2009-04-23 | Canon Inc | データ記憶装置、データ記憶方法及びプログラム |
CN102498522A (zh) * | 2009-09-15 | 2012-06-13 | 国际商业机器公司 | 用于减小固态器件中的写入放大的容器标记方案 |
CN103377143A (zh) * | 2012-04-27 | 2013-10-30 | 群联电子股份有限公司 | 存储器管理方法、存储器控制器与存储器存储装置 |
CN104756089A (zh) * | 2012-10-19 | 2015-07-01 | 法国大陆汽车公司 | 闪速存储器的管控方法 |
CN103458023A (zh) * | 2013-08-30 | 2013-12-18 | 清华大学 | 分布式闪存存储系统 |
TW201523247A (zh) * | 2013-12-04 | 2015-06-16 | Silicon Motion Inc | 資料儲存裝置以及快閃記憶體控制方法 |
CN106055489A (zh) * | 2015-04-10 | 2016-10-26 | 旺宏电子股份有限公司 | 存储器装置与其操作方法 |
CN106356093A (zh) * | 2015-07-17 | 2017-01-25 | 旺宏电子股份有限公司 | 存储器的操作方法及应用其的存储器装置 |
TW201719663A (zh) * | 2015-11-25 | 2017-06-01 | Macronix Int Co Ltd | 資料配置方法及應用其之電子系統 |
CN107037988A (zh) * | 2017-04-06 | 2017-08-11 | 华中科技大学 | 一种基于文件级粒度的闪存安全删除方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN109710173A (zh) | 2019-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI629592B (zh) | 記憶體裝置及應用於其上之資料管理方法 | |
EP1856616B1 (en) | Scheduling of housekeeping operations in flash memory systems | |
US8566504B2 (en) | Dynamic metablocks | |
CN100419714C (zh) | 闪存存取方法、闪存文件系统的块替换方法及其管理装置 | |
KR100849221B1 (ko) | 비휘발성 메모리의 관리 방법 및 비휘발성 메모리 기반의장치 | |
US7882300B2 (en) | Apparatus and method for managing nonvolatile memory | |
US7818493B2 (en) | Adaptive block list management | |
CN101169751B (zh) | 具有闪存设备的系统及其数据恢复方法 | |
JP5031849B2 (ja) | フラッシュメモリのブロック管理方法 | |
US7441067B2 (en) | Cyclic flash memory wear leveling | |
KR101076830B1 (ko) | 비휘발성 메모리에 부분적 블럭 데이터 프로그래밍 및 판독작동 | |
US8312203B2 (en) | Semiconductor storage device and method of controlling a semiconductor storage device by allocating a physical block composed of plural pages to a group of logical addresses | |
CN101278267B (zh) | 具有经调度回收操作的非易失性存储器 | |
US8949515B2 (en) | Storage device and memory controller | |
US20100174845A1 (en) | Wear Leveling for Non-Volatile Memories: Maintenance of Experience Count and Passive Techniques | |
KR20140119701A (ko) | Slc-mlc 마모 균형유지 | |
US8214579B2 (en) | Memory controller, flash memory system with memory controller, and method of controlling flash memory | |
EP1157328A1 (en) | Memory system | |
CN102508788A (zh) | Ssd及ssd垃圾回收方法和装置 | |
CN110531927B (zh) | 一种基于块分级的垃圾回收方法及非易失性的存储设备 | |
CN102483685B (zh) | 具有附属文件系统的多堆非易失性存储器系统 | |
US8261013B2 (en) | Method for even utilization of a plurality of flash memory chips | |
KR20090088858A (ko) | 최악의 경우 제어 데이터 관리를 사용하는 비휘발성 메모리 및 관리 방법 | |
CN101794253B (zh) | 内存储存装置及其控制方法、热门数据控管模块 | |
CN109710173B (zh) | 存储器装置及应用于其上的数据管理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |