CN102915273B - 数据写入方法、存储器控制器与存储器储存装置 - Google Patents
数据写入方法、存储器控制器与存储器储存装置 Download PDFInfo
- Publication number
- CN102915273B CN102915273B CN201110219424.3A CN201110219424A CN102915273B CN 102915273 B CN102915273 B CN 102915273B CN 201110219424 A CN201110219424 A CN 201110219424A CN 102915273 B CN102915273 B CN 102915273B
- Authority
- CN
- China
- Prior art keywords
- data
- page
- new data
- section
- logical
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Abstract
一种数据写入方法、存储器控制器与存储器储存装置,数据写入方法用于将更新数据写入至具有多个实体页面的闪速存储器模组中,其中每一实体页面为闪速存储器模组的最小写入单位。本方法包括将一个实体页面划分为多个储存区段且为每一储存区段配置一状态标记,用以标记储存区段所储存的数据的有效性。本方法也包括将更新数据写入此些储存区段中的至少一储存区段且修改写入此更新数据的储存区段对应的状态标记,其中在实体页面中储存更新数据的储存区段的状态标记的状态为有效并且非储存更新数据的其他储存区段的状态标记的状态为无效。基此,本方法可缩短写入数据至实体页面的时间。
Description
技术领域
本发明涉及一种用于可复写式非易失性存储器模组的数据写入方法及使用此方法的存储器控制器与存储器储存装置。
背景技术
数码相机、手机与MP3在这几年来的成长十分迅速,促使消费者对储存媒体的需求也急遽增加。由于可复写式非易失性存储器(rewritablenon-volatile memory)具有数据非易失性、低耗电、体积小、无机械结构且读写速度快等特性,最适合用在可携式电子产品,例如手机、个人数字助理与笔记本式计算机等。例如,目前备受注目的固态硬盘就是一种以闪速存储器作为储存媒体的储存装置。因此,近年来闪速存储器产业已成为电子产业中相当热门的一环。
可复写式非易失性存储器模组具有多个实体区块(physical block),且每一实体区块具有多个实体页面(physical page),其中在实体区块中写入数据时必须根据实体页面的顺序依序地写入数据。此外,已被写入数据的实体页面必需先被抹除后才能再次用于写入数据。特别是,实体区块为抹除的最小单位,并且实体页面为编程(亦称写入)的最小单元。
因此,为提升运作效率,一般来说,存储器储存装置的存储器控制器会将可复写式非易失性存储器模组的实体区块区分为数据区与闲置区。
数据区的实体区块是用以储存主机系统所写入的数据。具体来说,存储器管理电路会将主机系统所存取的逻辑存取地址转换为逻辑区块的逻辑页面,并且将逻辑区块的逻辑页面映射至数据区的实体区块的实体页面。也就是说,在闪速存储器模组的管理上,数据区的实体区块被视为已使用的实体区块(例如,已储存主机系统所写入的数据)。另外,存储器管理电路会使用逻辑区块-实体区块映射表(logical block-physicalblock mapping table)来记载逻辑区块与数据区的实体区块的映射关系,其中逻辑区块中的逻辑页面依序地对应所映射的实体区块的实体页面。
闲置区的实体区块是用以轮替数据区中的实体区块。具体来说,已写入数据的实体区块必须被抹除后才可再次用于写入数据,而闲置区的实体区块是被设计用于写入更新数据以替换原先映射逻辑区块的实体区块。基此,闲置区中的实体区块为空的或可使用的区块,即无记录数据或标记为已没用的无效数据。
也就是说,当存储器储存装置的储存空间被格式化时,数据区的实体区块会被映射至逻辑区块并且数据区的实体区块被视为已储存更新数据。之后,当主机系统欲储存数据至逻辑区块的逻辑页面时,存储器控制器会从闲置区中提取一个空的实体区块并且将此数据写入至所提取的实体区块中的实体页面中,由此完成此逻辑页面上的数据的更新。然而,如上所述,实体页面为编程(亦称写入)的最小单元,因此,当主机系统仅欲更新一个逻辑页面中的部分数据(即,欲写入的数据量小于一个页面容量)时,存储器控制器必须从原始映射此逻辑页面的实体页面中读取未被更新的数据,整理(arrange)欲更新的数据与未更新的数据以产生完整的有效页面数据,然后再将此有效页面数据写入至空的实体页面中。
随着半导体技术的发展,可复写式非易失性存储器模组的每一实体页面的页面容量亦越来越大。例如,目前可复写式非易失性存储器模组的每一实体页面已普遍被设计为可储存8千位元组(Kilobyte,KB)的使用者数据(即,页面容量为8千位元组)。然而,主机系统(例如,个人计算机)的作业系统经常是以较小的单位来储存数据。例如,微软的窗口作业系统7会经常地储存数据量为4千位元组的数据。因此,存储器控制器需频繁地进行有效数据的读取与整理,才能将数据写入至实体页面中,因而严重影响存储器储存装置的写入速度。
发明内容
本发明提供一种数据写入方法、存储器控制器与存储器储存装置,其能够在无需执行有效页面数据整理下快速地将数据写入至实体页面中。
本发明一范例实施例提出一种数据写入方法,用于将更新数据写入至可复写式非易失性存储器模组中,其中此可复写式非易失性存储器模组具有多个实体页面,此些实体页面轮替地映射多个逻辑页面,此更新数据属于该些逻辑页面之中的第一逻辑页面并且此更新数据是从第一逻辑页面的逻辑偏移地址开始被依序地储存至第一逻辑页面中。本数据写入方法包括依序地将此些实体页面之中的一第一实体页面划分为多个储存区段并且为每一储存区段配置一状态标记,其中每一储存区段具有一起始实体偏移地址并且此些状态标记初始地被记录成无效状态。本数据写入方法也包括判断此更新数据的大小是否小于数据存取单位,其中此数据存取单位等于每一实体页面的页面容量。本数据写入方法还包括,当判断此更新数据的大小小于数据存取单位时,还判断对应此更新数据的逻辑偏移地址是否对应第一实体页面中其中一个储存区段的起始实体偏移地址并且判断此更新数据的大小是否等于此储存区段的区段容量。本数据写入方法还包括,当判断对应此更新数据的逻辑偏移地址是对应其中一个储存区段的起始实体偏移地址并且此更新数据的大小等于此储存区段的区段容量时,将此更新数据写入至此储存区段中并且将对应此储存区段的状态标记记录成有效状态,其中在将此更新数据写入至此储存区段时,其他储存区段不会被写入属于此第一逻辑页面的其他逻辑偏移地址的有效数据。
在本发明的一实施例中,上述的数据写入方法还包括,当判断更新数据的大小非小于数据存取单位时,将更新数据写入至第一实体页面中并且将每一储存区段的状态标记记录成有效状态。
在本发明的一实施例中,上述的数据写入方法还包括,当判断对应更新数据的逻辑偏移地址未对应该些储存区段之中的任一个储存区段的起始实体偏移地址或者更新数据的大小不等于此储存区段的区段容量时,从可复写式非易失性存储器模组中的其他实体页面中读取属于第一逻辑页面的有效数据,依据更新数据所对应的逻辑偏移地址与有效数据所对应的其他逻辑偏移地址整理(arrange)此更新数据与有效数据以产生有效页面数据,将有效页面数据写入至第一实体页面中并且将每一储存区段的状态标记记录成有效状态。
本发明一范例实施例提出一种数据写入方法,用于将储存至一个逻辑页面的更新数据写入至可复写式非易失性存储器模组的一个实体页面中,其中此更新数据是从此逻辑页面的逻辑偏移地址开始被储存至此逻辑页面中。本数据写入方法包括依序地将此实体页面划分为第一储存区段与第二储存区段,其中第一储存区段具有第一起始实体偏移地址,第二储存区段具有第二起始实体偏移地址并且第一储存区段与第二储存区段具有相同的区段容量。本数据写入方法也包括为第一储存区段与第二储存区段分别地配置第一状态标记与第二状态标记,其中第一状态标记与第二标记初始地被记录成无效状态。本数据写入方法还包括判断此更新数据的大小是否小于数据存取单位,其中数据存取单位等于此实体页面的页面容量。本数据写入方法也包括,当判断此更新数据的大小小于数据存取单位时,还判断对应更新数据的逻辑偏移地址是否对应第一起始实体偏移地址或第二起始实体偏移地址。本数据写入方法还包括,当判断对应更新数据的逻辑偏移地址对应第一起始实体偏移地址时,还判断此更新数据的大小是否等于区段容量。本数据写入方法还包括,当此更新数据的大小等于区段容量时,将此更新数据写入至第一储存区段中并且将第一状态标记记录成有效状态,其中在将此更新数据写入至第一储存区段时,第二储存区段不会被写入属于此逻辑页面的其他逻辑偏移地址的有效数据。
在本发明的一实施例中,上述的数据写入方法还包括,当判断对应更新数据的逻辑偏移地址是对应该第二起始实体偏移地址时,还判断此更新数据的大小是否等于区段容量。并且,本数据方法还包括,当判断此更新数据的大小等于区段容量时,将此更新数据写入至第二储存区段中并且将第二状态标记记录成有效状态,其中在将此更新数据写入至第二储存区段时,第一储存区段不会被写入属于此逻辑页面的其他逻辑偏移地址的有效数据。
在本发明的一实施例中,上述的数据写入方法还包括,当判断此更新数据的大小非小于数据存取单位时,将此更新数据写入至实体页面中并且将第一状态标记与第二状态标记皆记录成有效状态。
在本发明的一实施例中,上述的数据写入方法还包括,当判断逻辑偏移地址未对应第一起始实体偏移地址或第二起始实体偏移地址时,从可复写式非易失性存储器模组中的其他实体页面中读取属于此逻辑页面的其他逻辑偏移地址的有效数据,依据此更新数据所对应的逻辑偏移地址与此有效数据所对应的其他逻辑偏移地址整理(arrange)此更新数据与有效数据以产生有效页面数据,将有效页面数据写入至此实体页面中并且将第一状态标记与第二状态标记皆记录成有效状态。
在本发明的一实施例中,上述的数据写入方法还包括,当判断此更新数据的大小不等于区段容量时,从可复写式非易失性存储器模组中的其他实体页面中读取属于此逻辑页面的其他逻辑偏移地址的有效数据,依据此更新数据所对应的逻辑偏移地址与此有效数据所对应的其他逻辑偏移地址整理(arrange)此更新数据与有效数据以产生有效页面数据,将有效页面数据写入至此实体页面中并且将第一状态标记与第二状态标记皆记录成有效状态。
在本发明的一实施例中,上述的实体页面的大小为8千位元组,并且依序地将此实体页面划分为第一储存区段与第二储存区段的步骤包括:将此实体页面之中前面4千位元组的储存空间划分为第一储存区段并且将此实体页面之中后面4千位元组的储存空间划分为第二储存区段。
本发明一范例实施例提出一种存储器控制器,用于控制可复写式非易失性存储器模组。本存储器控制器包括主机接口、存储器接口、微控制器、存储器管理单元、数据处理单元与存储器写入单元。主机接口用以电性连接至主机系统。存储器接口用以电性连接至可复写式非易失性存储器模组,其中可复写式非易失性存储器模组具有多个实体页面。微控制器电性连接至主机接口与存储器接口。存储器管理单元、数据处理单元与存储器写入单元电性连接至微控制器。在此,存储器管理单元用以配置多个逻辑页面并且指派此些实体页面来轮替地映射逻辑页面。主机接口用以从主机系统接收更新数据,其中此更新数据属于此些逻辑页面之中的第一逻辑页面并且此更新数据是从第一逻辑页面的逻辑偏移地址开始被依序地储存至第一逻辑页面中。存储器管理单元依序地将此些实体页面之中的第一实体页面划分为多个储存区段并且为每一储存区段配置一个状态标记,其中每一储存区段具有一起始实体偏移地址并且此些状态标记初始地被记录成无效状态。数据处理单元会判断此更新数据的大小是否小于数据存取单位,其中此数据存取单位等于每一实体页面的页面容量。当此更新数据的大小小于数据存取单位时,数据处理单元还判断对应更新数据的逻辑偏移地址是否对应其中一个储存区段的起始实体偏移地址并且判断此更新数据的大小是否等于此储存区段的区段容量。当对应更新数据的逻辑偏移地址对应其中一个储存区段的起始实体偏移地址并且此更新数据的大小等于此储存区段的区段容量时,存储器写入单元将此更新数据写入至此储存区段中并且将对应此储存区段的状态标记记录成有效状态,其中在将此更新数据写入至此储存区段时,其他储存区段不会被写入属于此第一逻辑页面的其他逻辑偏移地址的有效数据。
在本发明的一实施例中,当此更新数据的大小非小于数据存取单位时,存储器写入单元将此更新数据写入至第一实体页面中并且将每一储存区段的状态标记记录成有效状态。
在本发明的一实施例中,上述的存储器控制器还包括存储器读取单元。当逻辑偏移地址未对应任一个储存区段的起始实体偏移地址或者此更新数据的大小不等于此储存区段的区段容量时,存储器读取单元从可复写式非易失性存储器模组中的其他实体页面中读取属于第一逻辑页面的有效数据,数据处理单元依据此更新数据所对应的逻辑偏移地址与此有效数据所对应的其他逻辑偏移地址整理(arrange)此更新数据与有效数据以产生有效页面数据,并且存储器写入单元将此有效页面数据写入至第一实体页面中且将每一储存区段的状态标记记录成有效状态。
本发明一范例实施例提出一种存储器储存装置,其包括连接器、可复写式非易失性存储器模组与存储器控制器。连接器用以电性连接至主机系统。可复写式非易失性存储器模组具有多个实体页面。存储器控制器电性连接至可复写式非易失性存储器模组与连接器。在此,存储器控制器用以配置多个逻辑页面并且指派此些实体页面来轮替地映射逻辑页面。此外,连接器用以从主机系统接收更新数据,其中此更新数据属于此些逻辑页面之中的第一逻辑页面并且此更新数据是从第一逻辑页面的逻辑偏移地址开始被依序地储存至第一逻辑页面中。存储器控制器会依序地将此些实体页面之中的第一实体页面划分为多个储存区段并且为每一储存区段配置一个状态标记,其中每一储存区段具有起始实体偏移地址并且此些状态标记初始地被记录成无效状态。存储器控制器会判断此更新数据的大小是否小于数据存取单位,其中此数据存取单位等于每一实体页面的页面容量。当此更新数据的大小小于数据存取单位时,存储器控制器还判断对应更新数据的逻辑偏移地址是否对应其中一个储存区段的起始实体偏移地址并且判断此更新数据的大小是否等于此储存区段的区段容量。当对应更新数据的逻辑偏移地址是对应其中一个储存区段的起始实体偏移地址并且更新数据的大小等于此储存区段的区段容量时,存储器控制器将此更新数据写入至此储存区段中并且将对应此储存区段的状态标记记录成有效状态,其中在将此更新数据写入至此储存区段时,其他储存区段不会被写入属于第一逻辑页面的其他逻辑偏移地址的有效数据。
在本发明的一实施例中,当此更新数据的大小非小于数据存取单位时,存储器控制器将此更新数据写入至第一实体页面中并且将每一储存区段的该状态标记记录成有效状态。
在本发明的一实施例中,当对应更新数据的逻辑偏移地址未对应任一个储存区段的起始实体偏移地址或者此更新数据的大小不等于此储存区段的区段容量时,存储器控制器从可复写式非易失性存储器模组中的其他实体页面中读取属于第一逻辑页面的其他逻辑偏移地址的有效数据,依据此更新数据所对应的逻辑偏移地址与有效数据所对应的其他逻辑偏移地址整理(arrange)此更新数据与有效数据以产生有效页面数据,将此有效页面数据写入至第一实体页面中并且将每一储存区段的状态标记记录成有效状态。
在本发明的一实施例中,每一实体页面的大小为8千位元组并且每一储存区段的大小为4千位元组。
本发明一范例实施例提出一种数据写入方法,用于将一更新数据写入至一闪速存储器模组中,其中此闪速存储器模组具有多个实体页面,此些实体页面轮替地映射多个逻辑页面,此更新数据属于此些逻辑页面之中的一第一逻辑页面,其中每一实体页面为该闪速存储器模组的最小写入单位。本数据写入方法包括将此些实体页面之中的一第一实体页面划分为多个储存区段;以及为每一储存区段配置一状态标记,用以标记各储存区段所储存的数据的有效性。本数据写入方法也包括将更新数据写入此些储存区段之中的至少一储存区段;及修改写入此更新数据的储存区段对应的状态标记,其中在第一实体页面中储存更新数据的储存区段的状态标记的状态为有效,并且非储存更新数据的其他储存区段的状态标记的状态为无效。
基于上述,本发明范例实施例的数据写入方法、存储器控制器与存储器储存装置能够有效地缩短写入数据的时间。
为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合附图作详细说明如下。
附图说明
图1是根据本发明所示的数据写入方法的概要流程图。
图2A是根据一范例实施例所示的主机系统与存储器储存装置。
图2B是根据一范例实施例所示的计算机、输入/输出装置与存储器储存装置的示意图。
图2C是根据另一范例实施例所示的主机系统与存储器储存装置的示意图。
图3是根据一范例实施例所示的存储器储存装置的概要方框图。
图4是根据一范例实施例所示的存储器控制器的概要方框图。
图5A与图5B是根据一范例实施例所示管理可复写式非易失性存储器模组的实体区块的示意图。
图6~图8是根据一范例实施例所示的使用子实体区块来写入更新数据的范例。
图9是根据一范例实施例所示的将数据量小于数据存取单元的更新数据写入至一个实体页面的范例。
图10是根据一范例实施例所示的使用子实体区块与全域混乱实体区块写入数据的示意图。
图11是根据一范例实施例所示的将数据量小于数据存取单元的更新数据写入至一个实体页面的另一范例。
图12是是根据一范例实施例所示的在区块管理表中记录状态标记的范例。
图13是根据一范例实施例所示的数据写入方法的流程图。
附图标记:
S101、S103、S105、S107:数据写入的步骤
1000:主机系统
1100:计算机
1102:微处理器
1104:随机存取存储器
1106:输入/输出装置
1108:系统总线
1110:数据传输接口
1202:鼠标
1204:键盘
1206:显示器
1208:打印机
1212:随身碟
1214:记忆卡
1216:固态硬盘
1310:数码相机
1312:SD卡
1314:MMC卡
1316:记忆棒
1318:CF卡
1320:嵌入式储存装置
100:存储器储存装置
102:连接器
104:存储器控制器
106:可复写式非易失性存储器模组
302:微控制器
304:主机接口
306:存储器接口
308:存储器管理单元
310:存储器写入单元
312:存储器读取单元
314:存储器抹除单元
316:数据处理单元
410(0)~410(N):实体区块
502:数据区
504:闲置区
506:系统区
508:取代区
610(0)~610(H):逻辑区块
710(0)~710(K):逻辑存取地址
LP0、LP1:逻辑页面
PP0、PP1、PP2实体页面
UD0、UD1:更新数据
VD0、VD1:有效数据
OD0:旧数据
902:第一储存区段
904:第二储存区段
902a:第一状态标记
904a第二状态标记
S1301、S1303、S1305、S1307、S1309、S1311、S1313、S1315:数据写入的步骤
具体实施方式
在本发明中,每个实体页面会被区分为多个储存区段并且当写入数据时,仅被更新的储存区段会被写入更新数据,而未更新的储存区段不会被填补未更新的数据。请参照图1,具体来说,当欲写入更新数据至可复写式非易失性存储器模组(例如,闪速存储器模组)的一个实体页面(以下称为第一实体页面)时,第一实体页面会被划分为多个储存区段(S101),并且每一储存区段会被对应地配置一状态标记(S103),其中此些状态标记用以分别地标记此些储存区段所储存的数据的有效性。然后,此更新数据写入会被写入至此些储存区段之中的至少一储存区段(S105)并且用以写入此更新数据的储存区段所对应的状态标记会被修改(S107),其中在储存更新数据的储存区段的状态标记的状态为有效,并且非储存更新数据的其他储存区段的状态标记的状态为无效。由此,由于无需填补为更新的数据,因此,可大幅缩短写入数据所需的时间。以下将以数个范例实施例与附图来更清楚描述本发明。
图2A是根据一范例实施例所示的主机系统与存储器储存装置。
请参照图2A,主机系统1000一般包括计算机1100与输入/输出(input/output,I/O)装置1106。计算机1100包括微处理器1102、随机存取存储器(random access memory,RAM)1104、系统总线1108与数据传输接口1110。输入/输出装置1106包括如图2B的鼠标1202、键盘1204、显示器1206与打印机1208。必须了解的是,图2B所示的装置非限制输入/输出装置1106,输入/输出装置1106可还包括其他装置。
在本发明实施例中,存储器储存装置100是通过数据传输接口1110与主机系统1000的其他元件电性连接。藉由微处理器1102、随机存取存储器1104与输入/输出装置1106的运作可将数据写入至存储器储存装置100或从存储器储存装置100中读取数据。例如,存储器储存装置100可以是如图2B所示的随身碟1212、记忆卡1214或固态硬盘(Solid StateDrive,SSD)1216等的可复写式非易失性存储器储存装置。
一般而言,主机系统1000可实质地为可与存储器储存装置100配合以储存数据的任意系统。虽然在本范例实施例中,主机系统1000是以计算机系统来作说明,然而,在本发明另一范例实施例中主机系统1000可以是数码相机、摄像机、通信装置、音频播放器或视频播放器等系统。例如,在主机系统为数码相机(摄像机)1310时,可复写式非易失性存储器储存装置则为其所使用的SD卡1312、MMC卡1314、记忆棒(memory stick)1316、CF卡1318或嵌入式储存装置1320(如图2C所示)。嵌入式储存装置1320包括嵌入式多媒体卡(Embedded MMC,eMMC)。值得一提的是,嵌入式多媒体卡是直接电性连接于主机系统的基板上。
图3是根据一范例实施例所示的存储器储存装置的概要方框图。
请参照图3,存储器储存装置100包括连接器102、存储器控制器104与可复写式非易失性存储器模组106。
在本范例实施例中,连接器102是相容于串行高级技术附件(SerialAdvanced Technology Attachment,SATA)标准。然而,必须了解的是,本发明不限于此,连接器102亦可以是符合电气和电子工程师协会(Instituteof Electrical and Electronic Engineers,IEEE)1394标准、高速周边零件连接接口(Peripheral Component Interconnect Express,PCI Express)标准、平行高级技术附件(Parallel Advanced Technology Attachment,PATA)标准、通用串行总线(Universal Serial Bus,USB)标准、安全数码(SecureDigital,SD)接口标准、记忆棒(Memory Stick,MS)接口标准、多媒体储存卡(Multi Media Card,MMC)接口标准、小型闪速(Compact Flash,CF)接口标准、集成式驱动电子接口(Integrated Device Electronics,IDE)标准或其他适合的标准。
存储器控制器104用以执行以硬件型式或固件型式实作的多个逻辑门或控制指令,并且根据主机系统1000的指令在可复写式非易失性存储器模组106中进行数据的写入、读取、抹除与合并等运作。
可复写式非易失性存储器模组106是电性连接至存储器控制器104,并且具有多个实体区块以储存主机系统1000所写入的数据。在本范例实施例中,每一实体区块分别具有多个实体页面,其中属于同一个实体区块的实体页面可被独立地写入且被同时地抹除。例如,每一实体区块是由128个实体页面所组成,并且每一实体页面的容量为8千位元组(Kilobyte,KB)。然而,必须了解的是,本发明不限于此,每一实体区块亦可由64个实体页面、256个实体页面或其他任意个实体页面所组成。
更详细来说,实体区块为抹除的最小单位。亦即,每一实体区块含有最小数目的一并被抹除的存储单元。实体页面为编程的最小单元。即,实体页面为写入数据的最小单元。具体来说,在存储器控制器104对可复写式非易失性存储器模组106下达写入指令之后,可复写式非易失性存储器模组106会从存储器控制器104接收属于1个实体页面的数据并且暂存于其的缓冲存储器(未示出)中,然后,数据会一起被编程至一个实体页面中。
每一实体页面通常包括数据位元区与冗余位元区。数据位元区用以储存使用者的数据,而冗余位元区用以储存系统的数据(例如,错误检查与校正码)。在此,数据位元区的大小即为一个页面容量,其亦称为数据存取单位。
在本范例实施例中,可复写式非易失性存储器模组106为多阶存储单元(Multi Level Cell,MLC)NAND闪速存储器模组。然而,本发明不限于此,可复写式非易失性存储器模组106亦可是单阶存储单元(SingleLevel Cell,SLC)NAND闪速存储器模组、其他闪速存储器模组或其他具有相同特性的存储器模组。
图4是根据一范例实施例所示的存储器控制器的概要方框图。
请参照图4,存储器控制器104包括微控制器302、主机接口304、存储器接口306、存储器管理单元308、存储器写入单元310、存储器读取单元312、存储器抹除单元314与数据处理单元316。
微控制器302用以控制存储器控制器104的整体运作。
主机接口304是电性连接至微控制器302并且用以接收与识别主机系统1000所传送的指令与数据。在本范例实施例中,主机接口304是相容于SATA标准。然而,必须了解的是本发明不限于此,主机接口304亦可以是相容于PATA标准、IEEE 1394标准、PCI Express标准、USB标准、SD标准、MS标准、MMC标准、CF标准、IDE标准或其他适合的数据传输标准。
存储器接口306是电性连接至微控制器302并且用以存取可复写式非易失性存储器模组106。也就是说,欲写入至可复写式非易失性存储器模组106的数据会经由存储器接口306转换为可复写式非易失性存储器模组106所能接受的格式。
存储器管理单元308、存储器写入单元310、存储器读取单元312、存储器抹除单元314与数据处理单元316是电性连接至该微控制器302。在此,存储器管理单元308用以管理可复写式非易失性存储器模组106的实体区块。存储器写入单元310用以对可复写式非易失性存储器模组106下达写入指令以将数据写入至可复写式非易失性存储器模组106中。存储器读取单元312用以对可复写式非易失性存储器模组106下达读取指令以从可复写式非易失性存储器模组106中读取数据。存储器抹除单元314用以对可复写式非易失性存储器模组106下达抹除指令以将数据从可复写式非易失性存储器模组106中抹除。而数据处理单元316用以处理欲写入至可复写式非易失性存储器模组106的数据以及从可复写式非易失性存储器模组106中读取的数据。
图5A与图5B是根据一范例实施例所示管理可复写式非易失性存储器模组的实体区块的示意图。
请参照图5A,可复写式非易失性存储器模组106具有实体区块410(0)~410(N),并且存储器控制器104的存储器管理单元308会将实体区块410(0)~410-(N)逻辑地分组为数据区(data area)502、闲置区(freearea)504、系统区(system area)506与取代区(replacement area)508。
逻辑上属于数据区502与闲置区504的实体区块是用以储存来自于主机系统1000的数据。具体来说,数据区502的实体区块(亦称为数据实体区块)是被视为已储存数据的实体区块,而闲置区504的实体区块(亦称为闲置实体区块)是用以写入新数据的实体区块。例如,当从主机系统1000接收到写入指令与欲写入的数据时,存储器管理单元308会从闲置区504中提取实体区块,数据处理单元316会整理欲写入的数据并且存储器写入单元310会将数据写入至所提取的实体区块中。再例如,当对某一逻辑区块执行数据合并程序时,存储器管理单元308会从闲置区504中提取实体区块作为对应此逻辑区块的新数据实体区块,存储器读取单元312会从可复写式非易失性存储器模组106中读取属于此逻辑区块的有效数据,数据处理单元316会整理此些有效数据,存储器写入单元310会将整理后的有效数据写入至新数据实体区块中,并且存储器管理单元308会将此逻辑区块重新映射至新数据实体区块。特别是,在完成数据合并程序后,存储器管理单元308会将储存无效数据的数据实体区块重新关联(或回收)至闲置区504,以作为下次写入新数据之用。例如,存储器抹除单元314会在实体区块被关联至闲置区504时对此实体区块执行抹除运作或者当实体区块从闲置区504中被提取时对此实体区块执行抹除运作,以使得从闲置区504中所提取的实体区块为可用于写入数据的空实体区块。
逻辑上属于系统区506的实体区块是用以记录系统数据。例如,系统数据包括关于可复写式非易失性存储器模组的制造商与型号、可复写式非易失性存储器模组的实体区块数、每一实体区块的实体页面数等。
逻辑上属于取代区508中的实体区块是用于坏实体区块取代程序,以取代损坏的实体区块。具体来说,倘若取代区508中仍存有正常的实体区块并且数据区502的实体区块损坏时,存储器管理单元308会从取代区508中提取正常的实体区块来更换损坏的实体区块。
基于上述,在存储器储存装置100的运作中,数据区502、闲置区504、系统区506与取代区508的实体区块会动态地变动。例如,用以轮替储存数据的实体区块会变动地属于数据区502或闲置区504。
值得一提的是,在本范例实施例中,存储器管理单元308是以每一实体区块为单位来进行管理。然而,本发明不限于此,在另一范例实施例中,存储器管理单元308亦可将实体区块分组为多个实体单元,并且以实体单元为单位来进行管理。例如,每一实体单元可由同一存储器芯片(die)或不同存储器芯片中的至少一个实体区块所组成。
请参照图5B,存储器管理单元308会配置逻辑区块610(0)~610(H)以映射数据区502的实体区块,其中每一逻辑区块具有多个逻辑页面并且此些逻辑页面是依序地映射对应的数据实体区块的实体页面。例如,在存储器储存装置100被格式化时,逻辑区块610(0)~610(H)会初始地映射数据区502的实体区块410(0)~410(F-1)。
在本发明范例实施例中,存储器管理单元308会维护逻辑区块-实体区块映射表(logical block-physical block mapping table)以记录逻辑区块610(0)~610(H)与数据区502的实体区块之间的映射关系。此外,主机系统1000是以逻辑存取地址为单位来存取数据。例如,一个逻辑存取地址为一个逻辑扇区(Sector)。当主机系统1000存取数据时,存储器管理单元308会将对应存储器储存装置100的逻辑存取地址710(0)~710(K)转换成对应的逻辑页面内的地址。例如,当主机系统1000欲存取某一逻辑存取地址时,存储器管理单元308会将主机系统1000所存取的逻辑存取地址转换为以对应的逻辑区块、逻辑页面与逻辑偏移(offset)所构成的多维地址,并且通过逻辑区块-实体区块映射表于对应的实体页面中存取数据。在此,偏移是用以定位在一个逻辑页面(或实体页面)中的一个逻辑(或实体)地址,其是定义为此逻辑(或实体)地址与此逻辑页面(或实体页面)的起始地址之间的距离,其中此逻辑(或实体)地址亦称为逻辑(实体)偏移地址。
图6~图8是根据一范例实施例所示的使用子实体区块来写入更新数据的范例。
请同时参照图6~图8,例如,在逻辑区块610(0)是映射至实体区块410(0)的映射状态下,当存储器控制器104从主机系统1000中接收到写入指令而欲写入数据至属于逻辑区块610(0)的逻辑页面时,存储器控制器104会依据逻辑区块-实体区块映射表识别逻辑区块610(0)目前是映射至实体区块410(0)并且从闲置区504中提取实体区块410(F)来轮替实体区块410(0)。然而,当新数据写入至实体区块410(F)的同时,存储器控制器104不会立刻将实体区块410(0)中的所有有效数据搬移至实体区块410(F)而抹除实体区块410(0)。具体来说,存储器读取单元312会从实体区块410(0)中读取欲写入实体页面之前的有效数据(即,实体区块410(0)的第0实体页面与第1实体页面中的数据)。之后,存储器写入单元310会将实体区块410(0)中欲写入实体页面之前的有效数据写入至实体区块410(F)的第0实体页面与第1实体页面中(如图6所示),并且将新数据写入至实体区块410(F)的第2~4个实体页面中(如图7所示)。此时,存储器控制器104即完成写入的运作。因为实体区块410(0)中的有效数据有可能在下个操作(例如,写入指令)中变成无效,因此立刻将实体区块410(0)中的有效数据搬移至实体区块410(F)可能会造成无谓的搬移。此外,数据必须依序地写入至实体区块内的实体页面,因此,存储器写入单元310、存储器读取单元312与数据处理单元316仅会先搬移欲写入实体页面之前的有效数据(即,储存在实体区块410(0)的第0实体页面与第0实体页面中数据),并且暂不搬移其余有效数据(即,储存在实体区块410(0)的第5~K实体页面中数据)。
在本范例实施例中,暂时地维持此等暂态关系的运作称为开启(open)母子区块,并且原实体区块(例如,上述实体区块410(0))称为母实体区块而用以替换母实体区块的实体区块(例如,上述与实体区块410(F))称为子实体区块。
之后,当需要将实体区块410(0)与实体区块410(F)的数据合并(merge)时,存储器控制器104会将实体区块410(0)与实体区块410(F)的数据整并至一个实体区块,由此提升实体区块的使用效率。在此,合并母子区块的运作称为数据合并程序或关闭(close)母子区块。例如,如图8所示,当进行关闭母子区块时,存储器读取单元312会从实体区块410(0)中读取剩余的有效数据(即,实体区块410(0)的第5~K实体页面中的数据),之后,存储器写入单元310会将实体区块410(0)中剩余的有效数据写入至实体区块410(F)的第5实体页面~第K实体页面中,然后存储器抹除单元314会对实体区块410(0)执行抹除操作并存储器管理单元308会将抹除后的实体区块410(0)关联至闲置区504并且将实体区块410(F)关联至数据区502。也就是说,存储器管理单元308会在逻辑区块-实体区块映射表中将逻辑区块610(0)重新映射至实体区块410(F)。此外,在本范例实施例中,存储器管理单元308会建立闲置区实体区块表(未示出)来记录目前被关联至闲置区504的实体区块。值得一提的是,闲置区504中实体区块的数目是有限的,基此,在存储器储存装置100运作期间,已开启的母子区块组的数目亦会受到限制。因此,当存储器储存装置100接收到来自于主机系统1000的写入指令时,倘若已开启母子区块组的数目达到上限时,存储器控制器104需关闭至少一组目前已开启的母子区块组后才可执行此写入指令。
值得一提的是,如上所述,在可复写式非易失性存储器模组106的编程中,数据是以数据存取单位为单位被写入至实体页面中。倘若属于某一个逻辑页面的更新数据的大小小于数据存取单位时,属于此逻辑页面的其他有效数据必须从其他实体页面被读取并且所读取的其他有效数据与更新数据会被一并写入至实体页面中。
图9是根据一范例实施例所示的将数据量小于数据存取单元的更新数据写入至一个实体页面的范例。
请参照图9,倘若主机系统1000欲从某个逻辑区块的逻辑页面LP0的第0位元组开始储存大小为2KB的更新数据UD0以取代旧数据OD0时,假设存储器管理单元308选择一个实体区块的实体页面PP0来写入此更新数据。
由于数据处理单元316识别更新数据UD0的大小小于数据存取单位(即,更新数据UD0仅为逻辑页面LP0的的部分数据),因此,存储器读取单元312会从原始映射逻辑页面LP0的实体页面(例如,实体页面PP1)中读取属于逻辑页面LP0的其他偏移位元组的有效数据VD0。之后,数据处理单元316会将更新数据UD0与有效数据VD0整理成一个有效页面数据,并且存储器写入单元310会将此有效页面数据写入至实体页面PP0中。
除了上述使用子实体区块来写入更新数据外,在本范例实施例中,在本范例实施例中,存储器管理单元308还会从闲置区504中提取至少一实体区块作为混乱(Random)实体区块,以写入更新数据。例如,倘若主机系统1000欲更新的逻辑页面的数据已被写入至子实体区块时,此更新数据会被写入至混乱实体区块,以避免反复执行上述数据合并程序。
图10是根据一范例实施例所示的使用混乱实体区块写入数据的示意图。
请参照图10,假设实体区块410(S-1)被提取作为混乱实体区块并且在图7所示的储存状态下主机系统1000欲写入更新数据至逻辑区块610(0)的第1逻辑页面时,存储器管理单元308会将此更新数据写入至混乱实体区块中第一个空的实体页面(例如,实体区块410(S-1)的第0实体页面)中。
在本范例实施例中,当目前所使用的混乱实体区块已被写满时,存储器管理单元308会再从闲置区504中提取另一个实体区块作为新的混乱实体区块,直到作为混乱实体区块的实体区块的数目达到预设值为止。具体来说,闲置区504的实体区块是有限的,因此,作为混乱实体区块的实体区块的数目亦会受到限制。当作为混乱实体区块的实体区块的数目达到预设值时,存储器管理单元308会执行上述数据合并程序,对所储存的数据皆为无效数据的混乱实体区块执行抹除运作并且将已抹除的实体区块关联至闲置区504。由此,在执行下一个写入指令时,存储器管理单元308就可再从闲置区504提取空的实体区块作为混乱实体区块。
值得一提的是,在写入数据至混乱实体区块的运作中,数据会根据其大小而以不同的模式被写入至实体页面中。
具体来说,当主机系统1000欲储存数据(以下称为更新数据)至一个逻辑页面并且存储器管理单元308决定将此更新数据写入至混乱实体区块时,数据处理单元316会判断此更新数据的大小是否小于一个数据存取单位。倘若此更新数据的大小非小于一个数据存取单位(即,为一个数据存取单位)时,存储器写入单元310会将此更新数据写入至混乱实体区块的一个实体页面中,而无需进行有效页面数据整理(arrange)。例如,图6-7的写入运作就是直接将整个逻辑页面的更新数据写入至实体页面中。
倘若此更新数据的大小小于一个数据存取单位(即,不为一个数据存取单位)时,存储器管理单元308会选择混乱实体区块的一个实体页面并且将此实体页面划分为多个储存区段。此外,数据处理单元316会判断对应此更新数据的逻辑偏移地址(即,主机系统100欲储存此更新数据的起始逻辑偏移地址)是否对应实体页面中某一储存区段的起始实体偏移地址且判断此更新数据的大小是否等于此储存区段的区段容量。
倘若此更新数据的逻辑偏移地址非对应实体页面中某一储存区段的起始实体偏移地址或者此更新数据的大小非等于此储存区段的区段容量时,存储器写入单元310会从其他实体页面(例如,母实体区块的实体页面)中读取属于此逻辑页面的其他逻辑偏移地址的有效数据,整理更新数据与所读取的有效数据以产生完整的有效页面数据并且将此有效页面数据写入至实体页面中(如图9所示)。
倘若此更新数据的逻辑偏移地址是对应实体页面中某一储存区段的起始实体偏移地址并且此更新数据的大小等于此储存区段的区段容量时,存储器写入单元310仅会将此更新数据写入至实体页面的此储存区段中,而无进行有效页面数据整理。
图11是根据一范例实施例所示的将数据量小于数据存取单元的更新数据写入至一个实体页面的另一范例。
请参照图11,例如,倘若主机系统1000欲从某个逻辑区块的逻辑页面LP1的第0位元组开始储存数据量为4KB的更新数据UD1时,存储器管理单元308选择一个实体区块的实体页面PP2来写入此更新数据。
由于数据处理单元316识别更新数据UD1的大小小于数据存取单位,因此,存储器管理单元308会将实体页面PP2的储存空间依序地划分为起始实体偏移地址为第0位元组的第一储存区段902以及起始实体偏移地址为第4KB位元组的第二储存区段904。在本范例实施例中,一个实体页面的页面容量为8KB并且一个储存区段的区段容量为4KB,因此,一个实体页面可被划分为2个4KB的储存区段。然而,必须了解的是,本发明不限于此,每个实体页面中储存区段的数目是根据储存区段的区段容量与实体页面的页面容量的不同而有所不同。例如,倘若页面容量为16KB且区段容量为4KB时,存储器管理单元308会将一个实体页面划分为4个4KB的储存区段或2个8KB的储存区段。再者,尽管在本范例实施例中,实体页面是被划分为相同区段容量的多个储存区段,但本发明不限于此,每一储存区段亦具有不同的区段容量。
此外,由于数据处理单元316识别更新数据UD1的逻辑偏移地址是对应第一储存区段902的起始实体偏移地址(即,第0位元组)并且更新数据UD1的大小等于第一储存区段902的区段容量(即,4KB),因此,存储器写入单元310仅会将更新数据UD1写入至第一储存区段902中,而不会将属于逻辑页面LP1的其他偏移地址的有效数据VD1写入至实体页面PP2中。
也就是说,在图11的范例中,存储器控制器104无需进行有效页面数据整理而直接将更新数据写入至实体页面中,由此,可有效地提升将数据写入至混乱实体区块的速度。值得一提的是,如上所述,在可复写式非易失性存储器模组106中,数据是以实体页面为单位来编程,因此,在图11所述的范例中,更新数据UD1被传输至可复写式非易失性存储器模组106中之后,仍会与暂存于可复写式非易失性存储器模组106的缓冲存储器(未示出)中的无意义数据一起被写入至实体页面中。
值得一提的是,存储器管理单元308会为第一储存区段902与第二储存区段904分别地配置第一状态标记902a与第二状态标记904a,其中第一状态标记902a与第二状态标记904a会被初始地记录成”无效状态”。特别是,当更新数据UD1被写入至第一储存区段902时,存储器写入单元310会一并将第一状态标记902a记录成”有效状态”。由此,当主机系统1000欲读取此逻辑页面的数据时,存储器管理单元308可通过状态标记识别出储存于实体页面中的有效数据。
例如,存储器管理单元308会将储存区段的状态标记配置在实体页面的冗余位元区中,并且使用1个位元来代表一个储存区段的状态,其中当储存区段储存有效数据时,对应此储存区段的状态标记会被标记为“1”并且当储存区段未储存有效数据时,对应此储存区段的状态标记会被标记为“0”。此外,例如,存储器管理单元308可在用以记录用作为混乱实体区块的实体区块的区块管理表1102中,记录仅部分地址储存有效数据的实体页面(例如,实体区块PP2)的每一储存区段的状态标记(如图12所示)。
此外,除了上述微控制器302、主机接口304、存储器接口306、存储器管理单元308、存储器写入单元310、存储器读取单元312、存储器抹除单元314与数据处理单元316,存储器控制器104亦可还包括缓冲存储器、电源管理电路与错误检查与校正电路。
缓冲存储器是电性连接至微控制器302并且用以暂存来自于主机系统1000的数据与指令或来自于可复写式非易失性存储器模组106的数据。
电源管理电路是电性连接至微控制器302并且用以控制存储器储存装置100的电源。
错误检查与校正电路是电性连接至微控制器302并且用以执行一错误校正程序以确保数据的正确性。具体来说,当主机接口304从主机系统1000中接收到主机写入指令时,错误检查与校正电路会为对应此主机写入指令的写入数据产生对应的错误检查与校正码(Error Checkingand Correcting Code,ECC Code),并且存储器写入单元308会将此写入数据与对应的错误校正码写入至可复写式非易失性存储器模组106中。之后,当存储器读取单元312从可复写式非易失性存储器模组106中读取数据时会同时读取此数据对应的错误校正码,并且错误检查与校正电路会依据此错误校正码对所读取的数据执行错误校正程序。
值得一提的是,在本范例实施例中,存储器管理单元308、存储器写入单元310、存储器读取单元312、存储器抹除单元314与数据处理单元316是以硬件架构来实作,但本发明不限于此。在本发明另一范例实施例中,存储器管理单元308、存储器写入单元310、存储器读取单元312、存储器抹除单元314与数据处理单元316亦可以固件型式来实作。例如,存储器管理单元308、存储器写入单元310、存储器读取单元312、存储器抹除单元314与数据处理单元316的控制指令可被烧录至配置于存储器控制器的只读存储器中。当存储器储存装置100运作时,此些控制指令会由微控制器来执行。
此外,在本发明另一范例实施例中,实作存储器管理单元308、存储器写入单元310、存储器读取单元312、存储器抹除单元314与数据处理单元316的控制指令亦可以程序码型式储存于可复写式非易失性存储器模组的特定区域(例如,可复写式非易失性存储器模组中专用于存放系统数据的系统区)中。例如,只读存储器(未示出)及随机存取存储器(未示出)会被配置在存储器控制器中,并且此只读存储器具有一驱动码段。当存储器控制器被使能时,微控制器会先执行此驱动码段来将储存于可复写式非易失性存储器模组中的控制指令载入至此随机存取存储器中,之后再运转此些控制指令。
图13是根据一范例实施例所示的数据写入方法的流程图,其显示实作将数据写入至混乱实体区块的实体页面的控制指令的步骤。
请参照图13,当欲将属于一个逻辑页面(以下称为第一逻辑页面)的更新数据写入至混乱实体区块的一个实体页面(以下称为第一实体页面)时,首先,在步骤S1301中,第一实体页面会依序地被划分为多个储存区段,并且在步骤S1303中,对应此些储存区段的状态标记会被配置并初始化为“无效状态”。将实体页面划分为多个储存区段与配置状态标记的方法已配合图10详细描述如上,在此不再赘述。
之后,在步骤S1305中,此更新数据的大小会被判断是否小于数据存取单位。
倘若判断此更新数据的大小非小于数据存取单位时,则在步骤S1307中,此更新数据会被写入至第一实体页面中并且第一实体页面的每一储存区段的储存状态会被记录成“有效状态”。
倘若判断此更新数据的大小小于数据存取单位时,则在步骤S1309中,对应此更新数据的逻辑偏移地址(即,用以储存此更新数据的起始逻辑偏移地址)会被判断是否对应第一实体页面中其中一个储存区段的起始实体偏移地址。
倘若对应此更新数据的逻辑偏移地址非对应第一实体页面中任何一个储存区段的起始实体偏移地址时,则在步骤S1311中,属于第一逻辑页面的其他偏移地址的有效数据会从可复写式非易失性存储器模组106的其他实体页面被读取,所读取的有效数据与此更新数据会被整理以产生属于第一逻辑页面的有效页面数据,此有效页面数据会被写入至第一实体页面中并且第一实体页面的每一储存区段的储存状态会被记录成“有效状态”。
倘若对应此更新数据的逻辑偏移地址对应第一实体页面中其中一个储存区段(以下称为目标储存区段)的起始实体偏移地址时,则在步骤S1313中,更新数据的大小会被判断是否等于目标储存区段的区段容量。
倘若更新数据的大小不等于目标储存区段的区段容量时,则步骤S1311会被执行。
倘若更新数据的大小等于目标储存区段的区段容量时,则在步骤S1315中,更新数据会被写入至目标储存区段中并且目标储存区段的状态标记会被记录成“有效状态”。特别是,在步骤S1315中,第一实体页面的其他储存区段不会被写入有效数据。
必须了解是,尽管在本范例实施例中,是以将更新数据写入至混乱实体区块的实体页面中的一个储存区段为例来说明本发明的数据写入方法,但本发明不限于此,写入数据至可复写式非易失性存储器模组的任何实体页面的操作皆可使用本发明的数据写入方法。
综上所述,本发明范例实施例的数据写入方法、存储器控制器与存储器储存装置能够在无需进行有效页面数据整理下直接将更新数据写入至实体页面中,由此提升数据写入的速度。特别是,对于经常以固定小于一个实体页面(例如,8千位元组)的数据量(例如,4千位元组)来存取数据的作业系统来说,本发明范例实施例的数据写入方法、存储器控制器与存储器储存装置还能够大幅度地提升数据存取的效能。
虽然本发明已以实施例揭示如上,然其并非用以限定本发明,任何所属技术领域的普通技术人员,当可作些许更动与润饰,而不脱离本发明的精神和范围。
Claims (17)
1.一种数据写入方法,用于将一更新数据写入至一可复写式非易失性存储器模组中,其中该可复写式非易失性存储器模组具有多个实体页面,该些实体页面轮替地映射多个逻辑页面,该更新数据属于该些逻辑页面之中的一第一逻辑页面并且该更新数据是从该第一逻辑页面的一逻辑偏移地址开始被依序地储存至该第一逻辑页面中,该数据写入方法包括:
将该些实体页面之中的一第一实体页面划分为多个储存区段,其中每一该些储存区段具有一起始实体偏移地址;
为每一该些储存区段配置一状态标记,其中该些状态标记初始地被记录成一无效状态;
判断该更新数据的一大小是否小于一数据存取单位,其中该数据存取单位等于每一该些实体页面的一页面容量;
当判断该更新数据的大小小于该数据存取单位时,还判断该逻辑偏移地址是否对应该些储存区段之中的其中一个储存区段的起始实体偏移地址并且判断该更新数据的大小是否等于该其中一个储存区段的一区段容量;以及
当判断该逻辑偏移地址对应该些储存区段之中的该其中一个储存区段的起始实体偏移地址并且该更新数据的大小等于该其中一个储存区段的区段容量时,将该更新数据写入至该其中一个储存区段中并且将对应该其中一个储存区段的该状态标记记录成一有效状态,其中在将该更新数据写入至该其中一个储存区段时,该些储存区段之中的其他储存区段不会被写入属于该第一逻辑页面的其他逻辑偏移地址的有效数据。
2.根据权利要求1所述的数据写入方法,其中还包括:
当判断该更新数据的大小非小于该数据存取单位时,将该更新数据写入至该第一实体页面中并且将每一该些储存区段的该状态标记记录成该有效状态。
3.根据权利要求1所述的数据写入方法,其中还包括:
当判断该逻辑偏移地址未对应该些储存区段之中的任一个储存区段的起始实体偏移地址或者该更新数据的大小不等于该其中一个储存区段的区段容量时,从该可复写式非易失性存储器模组中的其他实体页面中读取属于该第一逻辑页面的该有效数据,依据该更新数据所对应的该逻辑偏移地址与该有效数据所对应的该其他逻辑偏移地址整理该更新数据与该有效数据以产生一有效页面数据,将该有效页面数据写入至该第一实体页面中并且将每一该些储存区段的该状态标记记录成该有效状态。
4.一种数据写入方法,用于将储存至一逻辑页面的一更新数据写入至一可复写式非易失性存储器模组的一实体页面中,其中该更新数据是从该逻辑页面的一逻辑偏移地址开始被储存至该逻辑页面中,该数据写入方法包括:
将该实体页面划分为一第一储存区段与一第二储存区段,其中该第一储存区段具有一第一起始实体偏移地址,该第二储存区段具有一第二起始实体偏移地址并且该第一储存区段与该第二储存区段具有相同的一区段容量;
为该第一储存区段与该第二储存区段分别地配置一第一状态标记与一第二状态标记,其中该第一状态标记与该第二状态标记初始地被记录成一无效状态;
判断该更新数据的一大小是否小于一数据存取单位,其中该数据存取单位等于该实体页面的一页面容量;
当判断该更新数据的大小小于该数据存取单位时,还判断该逻辑偏移地址是否对应该第一起始实体偏移地址或该第二起始实体偏移地址;
当判断该逻辑偏移地址对应该第一起始实体偏移地址时,还判断该更新数据的大小是否等于该区段容量,并且当判断该更新数据的大小等于该区段容量时,将该更新数据写入至该第一储存区段中并且将该第一状态标记记录成一有效状态,其中在将该更新数据写入至该第一储存区段时,该第二储存区段不会被写入属于该逻辑页面的其他逻辑偏移地址的有效数据。
5.根据权利要求4所述的数据写入方法,其中还包括:
当判断该逻辑偏移地址对应该第二起始实体偏移地址时,还判断该更新数据的大小是否等于该区段容量,并且当判断该更新数据的大小等于该区段容量时,将该更新数据写入至该第二储存区段中并且将该第二状态标记记录成该有效状态,其中在将该更新数据写入至该第二储存区段时,该第一储存区段不会被写入属于该逻辑页面的其他逻辑偏移地址的有效数据。
6.根据权利要求4所述的数据写入方法,其中还包括:
当判断该更新数据的大小非小于该数据存取单位时,将该更新数据写入至该实体页面中并且将该第一状态标记与该第二状态标记皆记录成该有效状态。
7.根据权利要求4所述的数据写入方法,其中还包括:
当判断该逻辑偏移地址未对应该第一起始实体偏移地址或该第二起始实体偏移地址时,从该可复写式非易失性存储器模组中的其他实体页面中读取属于该逻辑页面的其他逻辑偏移地址的有效数据,依据该更新数据所对应的该逻辑偏移地址与该有效数据所对应的该其他逻辑偏移地址整理该更新数据与该有效数据以产生一有效页面数据,将该有效页面数据写入至该实体页面中并且将该第一状态标记与该第二状态标记皆记录成该有效状态。
8.根据权利要求4所述的数据写入方法,其中还包括:
当判断该更新数据的大小不等于该区段容量时,从该可复写式非易失性存储器模组中的其他实体页面中读取属于该逻辑页面的其他逻辑偏移地址的有效数据,依据该更新数据所对应的该逻辑偏移地址与该有效数据所对应的该其他逻辑偏移地址整理该更新数据与该有效数据以产生一有效页面数据,将该有效页面数据写入至该实体页面中并且将该第一状态标记与该第二状态标记皆记录成该有效状态。
9.根据权利要求4所述的数据写入方法,其中该实体页面的大小为8千位元组,
其中依序地将该实体页面划分为该第一储存区段与该第二储存区段的步骤包括:
将该实体页面之中前面4千位元组的一储存空间划分为该第一储存区段并且将该实体页面之中后面4千位元组的一储存空间划分为该第二储存区段。
10.一种存储器控制器,用于控制一可复写式非易失性存储器模组,该存储器控制器包括:
一主机接口,用以电性连接至一主机系统;
一存储器接口,用以电性连接至该可复写式非易失性存储器模组,其中该可复写式非易失性存储器模组具有多个实体页面;
一微控制器,电性连接至该主机接口与该存储器接口;
一存储器管理单元,电性连接至该微控制器并且用以配置多个逻辑页面并且指派该些实体页面来轮替地映射该些逻辑页面;
一数据处理单元,电性连接至该微控制器;
一存储器写入单元,接至该微控制器,
其中该主机接口用以从该主机系统接收一更新数据,其中该更新数据属于该些逻辑页面之中的一第一逻辑页面并且该更新数据是从该第一逻辑页面的一逻辑偏移地址开始被依序地储存至该第一逻辑页面中,
其中该存储器管理单元将该些实体页面之中的一第一实体页面划分为多个储存区段并且为每一该些储存区段配置一状态标记,其中每一该些储存区段具有一起始实体偏移地址并且该些状态标记初始地被记录成一无效状态,
其中该数据处理单元会判断该更新数据的一大小是否小于一数据存取单位,其中该数据存取单位等于每一该些实体页面的一页面容量,
其中当该更新数据的大小小于该数据存取单位时,该数据处理单元还判断该逻辑偏移地址是否对应该些储存区段之中的其中一个储存区段的起始实体偏移地址并且判断该更新数据的大小是否等于该其中一个储存区段的一区段容量,
其中当该逻辑偏移地址对应该些储存区段之中的该其中一个储存区段的起始实体偏移地址并且该更新数据的大小等于该其中一个储存区段的区段容量时,该存储器写入单元将该更新数据写入至该其中一个储存区段中并且将对应该其中一个储存区段的该状态标记记录成一有效状态,其中在将该更新数据写入至该其中一个储存区段时,该些储存区段之中的其他储存区段不会被写入属于该第一逻辑页面的其他逻辑偏移地址的有效数据。
11.根据权利要求10所述的存储器控制器,其中当该更新数据的大小非小于该数据存取单位时,该存储器写入单元将该更新数据写入至该第一实体页面中并且将每一该些储存区段的该状态标记记录成该有效状态。
12.根据权利要求10所述的存储器控制器,其中还包括一存储器读取单元,
其中当该逻辑偏移地址未对应该些储存区段之中的任一个储存区段的起始实体偏移地址或者该更新数据的大小不等于该其中一个储存区段的区段容量时,该存储器读取单元从该可复写式非易失性存储器模组中的其他实体页面中读取属于该第一逻辑页面的其他逻辑偏移地址的该有效数据,该数据处理单元依据该更新数据所对应的该逻辑偏移地址与该有效数据所对应的该其他逻辑偏移地址整理该更新数据与该有效数据以产生一有效页面数据,并且该存储器写入单元将该有效页面数据写入至该第一实体页面中且将每一该些储存区段的该状态标记记录成该有效状态。
13.一种存储器储存装置,包括:
一连接器,用以电性连接至一主机系统;
一可复写式非易失性存储器模组,具有多个实体页面;以及
一存储器控制器,电性连接至该可复写式非易失性存储器模组与该连接器,
其中该存储器控制器用以配置多个逻辑页面并且指派该些实体页面来轮替地映射该些逻辑页面,
其中该连接器用以从该主机系统接收一更新数据,其中该更新数据属于该些逻辑页面之中的一第一逻辑页面并且该更新数据是从该第一逻辑页面的一逻辑偏移地址开始被依序地储存至该第一逻辑页面中,
其中该存储器控制器将该些实体页面之中的一第一实体页面划分为多个储存区段并且为每一该些储存区段配置一状态标记,其中每一该些储存区段具有一起始实体偏移地址并且该些状态标记初始地被记录成一无效状态,
其中该存储器控制器会判断该更新数据的一大小是否小于一数据存取单位,其中该数据存取单位等于每一该些实体页面的一页面容量,
其中当该更新数据的大小小于该数据存取单位时,该存储器控制器还判断该逻辑偏移地址是否对应该些储存区段之中的其中一个储存区段的起始实体偏移地址并且判断该更新数据的大小是否等于该其中一个储存区段的一区段容量,
其中当该逻辑偏移地址对应该些储存区段之中的该其中一个储存区段的起始实体偏移地址并且该更新数据的大小等于该其中一个储存区段的区段容量时,该存储器控制器将该更新数据写入至该其中一个储存区段中并且将对应该其中一个储存区段的该状态标记记录成一有效状态,其中在将该更新数据写入至该其中一个储存区段时,该些储存区段之中的其他储存区段不会被写入属于该第一逻辑页面的其他逻辑偏移地址的有效数据。
14.根据权利要求13所述的存储器储存装置,其中当该更新数据的大小非小于该数据存取单位时,该存储器控制器将该更新数据写入至该第一实体页面中并且将每一该些储存区段的该状态标记记录成该有效状态。
15.根据权利要求13所述的存储器储存装置,其中当该逻辑偏移地址未对应该些储存区段之中的任一个储存区段的起始实体偏移地址或者该更新数据的大小不等于该其中一个储存区段的区段容量时,该存储器控制器从该可复写式非易失性存储器模组中的其他实体页面中读取属于该第一逻辑页面的其他逻辑偏移地址的该有效数据,依据该更新数据所对应的该逻辑偏移地址与该有效数据所对应的该其他逻辑偏移地址整理该更新数据与该有效数据以产生一有效页面数据,将该有效页面数据写入至该第一实体页面中并且将每一该些储存区段的该状态标记记录成该有效状态。
16.根据权利要求13所述的存储器储存装置,其中每一该些实体页面的大小为8千位元组并且每一该些储存区段的大小为4千位元组。
17.一种数据写入方法,用于将一更新数据写入至一闪速存储器模组中,其中该闪速存储器模组具有多个实体页面,该些实体页面轮替地映射多个逻辑页面,该更新数据属于该些逻辑页面之中的一第一逻辑页面,其中每一该些实体页面为该闪速存储器模组的最小写入单位,该数据写入方法包括:
将该些实体页面之中的一第一实体页面划分为多个储存区段;
为每一该些储存区段配置一状态标记,用以标记各该储存区段所储存的数据的有效性;
将该更新数据写入该些储存区段之中的至少一储存区段;及
修改写入该更新数据的该至少一储存区段对应的状态标记,其中在该第一实体页面中储存该更新数据的该至少一储存区段的状态标记的状态为有效,并且非储存该更新数据的其他储存区段的状态标记的状态为无效。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510027108.4A CN104536906B (zh) | 2011-08-02 | 2011-08-02 | 数据写入方法、存储器控制器与存储器储存装置 |
CN201110219424.3A CN102915273B (zh) | 2011-08-02 | 2011-08-02 | 数据写入方法、存储器控制器与存储器储存装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110219424.3A CN102915273B (zh) | 2011-08-02 | 2011-08-02 | 数据写入方法、存储器控制器与存储器储存装置 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510027108.4A Division CN104536906B (zh) | 2011-08-02 | 2011-08-02 | 数据写入方法、存储器控制器与存储器储存装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102915273A CN102915273A (zh) | 2013-02-06 |
CN102915273B true CN102915273B (zh) | 2015-06-10 |
Family
ID=47613646
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110219424.3A Active CN102915273B (zh) | 2011-08-02 | 2011-08-02 | 数据写入方法、存储器控制器与存储器储存装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102915273B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI557744B (zh) * | 2015-01-27 | 2016-11-11 | 緯創資通股份有限公司 | 資料儲存方法及嵌入式系統 |
US10643700B2 (en) * | 2015-10-29 | 2020-05-05 | Micron Technology, Inc. | Apparatuses and methods for adjusting write parameters based on a write count |
CN107943710B (zh) * | 2016-10-13 | 2021-08-27 | 深圳大心电子科技有限公司 | 存储器管理方法及使用所述方法的存储控制器 |
CN108108118B (zh) * | 2016-11-24 | 2021-02-26 | 深圳大心电子科技有限公司 | 数据写入方法以及存储控制器 |
KR20200073794A (ko) * | 2018-12-14 | 2020-06-24 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
CN111858577A (zh) * | 2019-04-29 | 2020-10-30 | 伊姆西Ip控股有限责任公司 | 存储管理的方法、设备和计算机程序产品 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102012867A (zh) * | 2009-09-03 | 2011-04-13 | 248固态硬碟有限公司 | 资料储存系统及其管理方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7350044B2 (en) * | 2004-01-30 | 2008-03-25 | Micron Technology, Inc. | Data move method and apparatus |
-
2011
- 2011-08-02 CN CN201110219424.3A patent/CN102915273B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102012867A (zh) * | 2009-09-03 | 2011-04-13 | 248固态硬碟有限公司 | 资料储存系统及其管理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102915273A (zh) | 2013-02-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI436212B (zh) | 資料寫入方法、記憶體控制器與記憶體儲存裝置 | |
CN104679437A (zh) | 数据写入方法、存储器控制电路单元与存储器储存装置 | |
CN103377129B (zh) | 数据写入方法、存储器控制器与存储器储存装置 | |
CN103514096B (zh) | 数据储存方法、存储器控制器与存储器储存装置 | |
CN102915273B (zh) | 数据写入方法、存储器控制器与存储器储存装置 | |
CN104423888A (zh) | 数据写入方法、存储器控制电路单元与存储器存储装置 | |
CN104765568A (zh) | 数据存储方法、存储器控制电路单元与存储器存储装置 | |
CN104765569A (zh) | 数据写入方法、存储器控制电路单元与存储器储存装置 | |
CN102902626B (zh) | 区块管理方法、存储器控制器与存储器储存装置 | |
CN102592670B (zh) | 数据写入方法、存储器控制器与存储器储存装置 | |
CN104536906A (zh) | 数据写入方法、存储器控制器与存储器储存装置 | |
CN103678162B (zh) | 系统数据储存方法、存储器控制器与存储器储存装置 | |
CN102446137B (zh) | 数据写入方法、存储器控制器与存储器储存装置 | |
CN103136111A (zh) | 数据写入方法、存储器控制器与存储器储存装置 | |
CN103593296A (zh) | 数据储存方法、存储器控制器与存储器储存装置 | |
CN102567221B (zh) | 数据管理方法、存储器控制器与存储器储存装置 | |
CN104978149A (zh) | 数据写入方法、存储器控制电路单元与存储器存储装置 | |
CN102866861B (zh) | 闪存储存系统、闪存控制器与数据写入方法 | |
CN102999437B (zh) | 数据搬移方法、存储器控制器与存储器储存装置 | |
CN103714008A (zh) | 数据存储方法、存储器控制器与存储器存储装置 | |
CN102890653A (zh) | 指令执行方法、存储器控制器与存储器储存装置 | |
CN103577344A (zh) | 数据写入方法、存储器控制器与存储器储存装置 | |
CN102467459B (zh) | 数据写入方法、存储器控制器与存储器储存装置 | |
CN104238956A (zh) | 数据写入方法、存储器控制器与存储器存储装置 | |
CN104166558A (zh) | 固件码载入方法、存储器控制器与存储器存储装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |