CN102999437B - 数据搬移方法、存储器控制器与存储器储存装置 - Google Patents
数据搬移方法、存储器控制器与存储器储存装置 Download PDFInfo
- Publication number
- CN102999437B CN102999437B CN201110277652.6A CN201110277652A CN102999437B CN 102999437 B CN102999437 B CN 102999437B CN 201110277652 A CN201110277652 A CN 201110277652A CN 102999437 B CN102999437 B CN 102999437B
- Authority
- CN
- China
- Prior art keywords
- data
- page
- buffer zone
- flash memory
- memory module
- 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-volatilememory)具有数据非易失性、低耗电、体积小、无机械结构且读写速度快等特性,最适合用在可携式电子产品,例如手机、个人数字助理与笔记本型计算机等。例如,目前备受注目的固态硬盘就是一种以闪存作为储存媒体的储存装置。因此,近年来闪存产业已成为电子产业中相当热门的一环。
闪存模块具有多个物理区块(physicalblock),且每一物理区块具有多个物理页面(physicalpage),其中在物理区块中写入数据时必须根据物理页面的顺序依序地写入数据。此外,已被写入数据的物理页面必需先被抹除后才能再次用于写入数据。特别是,物理区块为抹除的最小单位,并且物理页面为编程(亦称写入)的最小单元。
因此,为提升运作效率,一般来说,存储器储存装置的存储器控制器会将闪存模块的物理区块区分为数据区与闲置区。
数据区的物理区块是用以储存主机系统所写入的数据。具体来说,存储器管理电路会将主机系统所存取的逻辑存取地址转换为逻辑区块的逻辑页面,并且将逻辑区块的逻辑页面映射至数据区的物理区块的物理页面。也就是说,在闪存模块的管理上,数据区的物理区块被视为已使用的物理区块(例如,已储存主机系统所写入的数据)。另外,存储器管理电路会使用逻辑区块-物理区块映射表(logicalblock-physicalblockmappingtable)来记载逻辑区块与数据区的物理区块的映射关系,其中逻辑区块中的逻辑页面依序地对应所映射的物理区块的物理页面。
闲置区的物理区块是用以轮替数据区中的物理区块。具体来说,已写入数据的物理区块必须被抹除后才可再次用于写入数据,而闲置区的物理区块是被设计用于写入更新数据以替换原先映射逻辑区块的物理区块。基此,闲置区中的物理区块为空的或可使用的区块,即无记录数据或标记为已没用的无效数据。
也就是说,当存储器储存装置的储存空间被格式化时,数据区的物理区块会被映射至逻辑区块并且数据区的物理区块被视为已储存更新数据。之后,当主机系统欲储存数据至逻辑区块的逻辑页面时,存储器控制器会从闲置区中提取一个空的物理区块并且将此数据写入至所提取的物理区块中的物理页面中,由此完成此逻辑页面上的数据的更新。
随着半导体技术的发展,闪存模块的每一物理页面的页面容量亦越来越大。例如,目前闪存模块的每一物理页面已普遍被设计为可储存8千字节(Kilobyte,KB)的使用者数据(即,页面容量为8KB)。然而,主机系统(例如,个人计算机)的操作系统经常是以较小的单位(例如,4KB)来储存数据。例如,操作系统可能会仅对一个逻辑页面的前面4KB的数据进行更新,并且在进行其它存取运作之后,才对此逻辑页面的后面4KB的数据进行更新。因此,属于同一个逻辑页面的更新数据可能会被储存于在多个物理页面。例如,当更新一个逻辑页面的前面4KB数据时,此前面4KB的更新数据会与无效的4KB数据被写入至一个物理页面中并且之后当更新此逻辑页面的后面4KB数据时,无效的4KB数据与此后面4KB的更新数据会与被写入至另一个物理页面中。之后,当需要整理此逻辑页面的数据时,属于此逻辑页面的更新数据会从此些物理页面中被读取并且被写入至一个空的物理页面中。因此,如何从多个物理页面中有效率地将属于同一个逻辑页面的数据搬移至一个空的物理页面,以提升存储器储存装置的效能,为本领域技术人员所欲克服的难题。
发明内容
本发明提供一种数据搬移方法,其能够在闪存模块中将分散地储存于多个物理页面的页数据有效率地搬移至一个物理页面中。
此外,本发明提供一种存储器控制器,其能够在闪存模块中将分散地储存于多个物理页面的页数据有效率地搬移至一个物理页面中。
再者,本发明提供一种存储器储存装置,其能够将分散地储存于多个物理页面的页数据有效率地搬移至一个物理页面中。
本发明范例实施例提出一种数据搬移方法,用于将储存于具有多个物理页面的闪存模块中的第一页数据搬移至该些物理页面之中的第一物理页面,此闪存模块具有第一缓冲区,第一缓冲区的容量相同于每一物理页面的容量,第一页数据具有第一部分数据与第二部分数据,第一页数据的第一部分被储存在这些物理页面之中的第二物理页面中,第一页数据的第二部分数据被储存在这些物理页面之中的第三物理页面中。本数据搬移方法包括:(a)将指示读取该第二物理页面的第一读取指令传送给闪存模块,其中闪存模块会将储存于第二物理页面中的页数据读取至闪存模块的第一缓冲区中以响应此第一读取指令。本数据搬移方法也包括:(b)从第一缓冲区中读出第一页数据的第一部分数据至缓冲存储器;并且之后(c)将指示读取第三物理页面的第二读取指令传送给闪存模块,其中闪存模块会将储存于第三物理页面中的页数据读取至闪存模块的第一缓冲区中以响应此第二读取指令。本数据搬移方法还包括(d)将第一页数据的第一部分数据从缓冲存储器传输至第一缓冲区;以及(e)将指示将暂存于第一缓冲区中的第一页数据写入至第一物理页面中的写入指令传送给闪存模块。
在本发明的一实施例中,其中闪存模块还具有第二缓冲区。此外,闪存模块先将暂存于第一缓冲区中的第一页数据搬移至第二缓冲区并且再从第二缓冲区中将第一页数据编程至第一物理页面中以响应上述写入指令。
在本发明的一实施例中,其中闪存模块从第一缓冲区中将第一页数据编程至第一物理页面中以响应上述写入指令。
在本发明的一实施例中,上述的步骤(d)包括:判断从第一缓冲区中读出的第一页数据的第一部分数据是否存有至少一错误位。此外,上述的步骤(d)还包括:当从第一缓冲区中读出的第一页数据的第一部分数据存有错误位时,校正所读出的第一页数据的第一部分数据并且将已被校正的第一页数据的第一部分数据从缓冲存储器传输至第一缓冲区。
在本发明的一实施例中,上述的数据搬移方法还包括:从第一缓冲区中读出第一页数据的第二部分数据;并且判断从第一缓冲区中读出的第一页数据的第二部分数据是否存有至少一错误位。并且,上述的数据搬移方法还包括:当从第一缓冲区中读出的第一页数据的第二部分数据存有错误位时,校正所读出的第一页数据的第二部分数据并且将已被校正的第一页数据的第二部分数据传输至第一缓冲区。
在本发明的一实施例中,上述的第一页数据还具有一第三部分并且第一页数据的第三部分被储存在该些物理页面之中的一第四物理页面中。并且,上述数据搬移方法还包括:在步骤(b)之后,将指示读取第四物理页面中的第三读取指令传送给闪存模块,其中闪存模块会将储存于第四物理页面中的页数据读取至闪存模块的第一缓冲区中以响应第三读取指令。此外,上述数据搬移方法还包括:从第一缓冲区中读出第一页数据的第三部分至缓冲存储器。再者,上述数据搬移方法还包括:在步骤(c)之后将第一页数据的第三部分从缓冲存储器传输至第一缓冲区。
在本发明的一实施例中,上述步骤(a)、步骤(b)、步骤(c)与步骤(d)是在闪存模块执行编程运作期间被执行。
在本发明的一实施例中,每一物理页面的容量为8千字节,第一页数据的大小为8千字节,并且第一页数据的第一部分数据的大小与第一页数据的第二部分数据的大小皆为4千字节。
本发明范例实施例提出一种存储器控制器,用于控制闪存模块,其中这闪存模块具有多个物理页面与第一缓冲区,第一缓冲区的容量相同于每一物理页面的容量。本存储器控制器包括主机接口、存储器接口、缓冲存储器与存储器管理电路。主机接口用以电性连接至主机系统。存储器接口用以电性连接至闪存模块。存储器管理电路电性连接至缓冲存储器、主机接口与存储器接口,并且用以将储存于闪存模块中的第一页数据搬移至此些物理页面之中的第一物理页面,其中第一页数据具有第一部分数据与第二部分数据,第一页数据的第一部分被储存在第二物理页面中,第一页数据的第二部分数据被储存在第三物理页面中。在此,存储器管理电路将指示读取第二物理页面的第一读取指令传送给闪存模块,并且闪存模块会将储存于第二物理页面中的页数据读取至闪存模块的第一缓冲区中以响应此第一读取指令。此外,存储器管理电路从第一缓冲区中读出第一页数据的第一部分数据至缓冲存储器。再者,存储器管理电路将指示读取第三物理页面的第二读取指令传送给闪存模块,并且闪存模块会将储存于第三物理页面中的页数据读取至闪存模块的第一缓冲区中以响应此第二读取指令。另外,存储器管理电路将第一页数据的第一部分数据从缓冲存储器传输至第一缓冲区,并且将指示将暂存于第一缓冲区中的第一页数据写入至第一物理页面中的写入指令传送给闪存模块。
在本发明的一实施例中,上述的存储器管理电路还用以从第一缓冲区中读出第一页数据的第二部分数据并且判断从第一缓冲区中读出的第一页数据的第二部分数据是否存有至少一错误位。当从第一缓冲区中读出的第一页数据的第二部分数据存有错误位时,存储器管理电路校正所读出的第一页数据的第二部分数据并且将已被校正的第一页数据的第二部分数据传输至第一缓冲区。
在本发明的一实施例中,上述的第一页数据还具有第三部分并且第一页数据的第三部分被储存在第四物理页面中。此外,上述的存储器管理电路还用以将指示读取第四物理页面中的第三读取指令传送给闪存模块,其中闪存模块会将储存于第四物理页面中的页数据读取至闪存模块的第一缓冲区中以响应此第三读取指令。再者,存储器管理电路还用以从第一缓冲区中读出第一页数据的第三部分至缓冲存储器。并且,之后存储器管理电路还用以将第一页数据的第三部分从缓冲存储器中传输至第一缓冲区。
在本发明的一实施例中,上述的存储器管理电路是在闪存模块执行一编程运作期间,将指示读取第二物理页面的第一读取指令传送给闪存模块,从第一缓冲区中读出第一页数据的第一部分数据至缓冲存储器,将指示读取第三物理页面的第二读取指令传送给闪存模块,并且将第一页数据的第一部分数据从缓冲存储器传输至第一缓冲区。
本发明范例实施例提出一种存储器储存装置,其包括闪存模块、连接器与存储器控制器。闪存模块具有多个物理页面与第一缓冲区,第一缓冲区的容量相同于每一物理页面的容量。连接器用以电性连接至主机系统。存储器控制器具有缓冲存储器并且电性连接至闪存模块与连接器。存储器控制器用以将储存于闪存模块中的第一页数据搬移至此些物理页面之中的一第一物理页面,其中第一页数据具有第一部分数据与第二部分数据,第一页数据的第一部分被储存在第二物理页面中,并且第一页数据的第二部分数据被储存在第三物理页面中。在此,存储器控制器将指示读取第二物理页面的第一读取指令传送给闪存模块,并且闪存模块会将储存于第二物理页面中的页数据读取至闪存模块的第一缓冲区中以响应此第一读取指令。此外,存储器控制器从第一缓冲区中读出第一页数据的第一部分数据至缓冲存储器。再者,存储器控制器将指示读取第三物理页面的第二读取指令传送给闪存模块,并且闪存模块会将储存于第三物理页面中的页数据读取至闪存模块的第一缓冲区中以响应此第二读取指令。另外,存储器控制器将第一页数据的第一部分数据从缓冲存储器传输至第一缓冲区,并且将指示将暂存于第一缓冲区中的第一页数据写入至第一物理页面中的写入指令传送给闪存模块。
在本发明的一实施例中,上述的存储器控制器还用以从第一缓冲区中读出第一页数据的第二部分数据并且判断从第一缓冲区中读出的第一页数据的第二部分数据是否存有至少一错误位。当从第一缓冲区中读出的第一页数据的第二部分数据存有错误位时,存储器控制器校正所读出的第一页数据的第二部分数据并且将已被校正的第一页数据的第二部分数据传输至第一缓冲区。
在本发明的一实施例中,上述的第一页数据还具有第三部分并且第一页数据的第三部分被储存在第四物理页面中。此外,上述的存储器控制器还用以将指示读取第四物理页面中的第三读取指令传送给闪存模块,其中闪存模块会将储存于第四物理页面中的页数据读取至闪存模块的第一缓冲区中以响应此第三读取指令。再者,存储器控制器还用以从第一缓冲区中读出第一页数据的第三部分至缓冲存储器。并且,之后存储器控制器还用以将第一页数据的第三部分从缓冲存储器中传输至第一缓冲区。
在本发明的一实施例中,上述的存储器控制器是在闪存模块执行一编程运作期间,将指示读取第二物理页面的第一读取指令传送给闪存模块,从第一缓冲区中读出第一页数据的第一部分数据至缓冲存储器,将指示读取第三物理页面的第二读取指令传送给闪存模块,并且将第一页数据的第一部分数据从缓冲存储器传输至第一缓冲区。
基于上述,本发明范例实施例的数据搬移方法、存储器控制器与存储器储存装置能够有效率地将分散地储存于多个物理页面的页数据有效率地搬移至一个物理页面中,以缩短搬移数据所需的时间并且提升存取的效能。
为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合所附图式作详细说明如下。
附图说明
图1A是根据第一范例实施例所绘示的主机系统与存储器储存装置。
图1B是根据第一范例实施例所绘示的计算机、输入/输出装置与存储器储存装置的示意图。
图1C是根据本发明另一范例实施例所绘示的主机系统与存储器储存装置的示意图。
图2是绘示图1A所示的存储器储存装置的概要方块图。
图3是根据第一范例实施例所绘示的存储器控制器的概要方块图。
图4是根据第一范例实施例所绘示的闪存模块的概要方块图。
图5与图6是根据第一范例实施例所绘示管理闪存模块的物理区块的示意图。
图7~图9是根据第一范例实施例所绘示的使用子物理区块来写入更新数据的范例。
图10是根据第一范例实施例所绘示的使用子物理区块与随机物理区块写入数据的示意图。
图11是根据第一范例实施例所绘示的执行数据合并操作的一范例。
图12是根据第一范例实施例所绘示的将数据量小于一个物理页面的容量的更新数据写入至一个物理页面的范例。
图13-图15是根据本发明第一范例实施例所绘示的从多个物理页面中将属于此逻辑页面的有效页数据搬移至一个空的物理页面的示意图。
图16是根据第一范例实施例所绘示的数据搬移方法的流程图。
图17-图19是根据本发明第二范例实施例所绘示的从多个物理页面中将属于此逻辑页面的有效页数据搬移至一个空的物理页面的示意图。
图20是根据本发明第二范例实施例所绘示的数据搬移方法的流程图。
[主要元件标号说明]
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:闪存模块
202:存储器管理电路204:主机接口
206:存储器接208:缓冲存储器
210:电源管理电路212:错误检查与校正电路
252:存储单元阵列254:控制电路
256:数据输入/输出缓冲器256a:第一缓冲区
256b:第二缓冲区502:数据区
504:闲置区506:系统区
508:取代区410(0)~410(N):物理区块
610(0)~610(H):逻辑区块710(0)~710(K):逻辑存取地址
UD1:数据VD1:数据
LP0:逻辑页面PP0、PP1、PP2:物理页面
1301、1303、1305、1307、1309:数据流
S1601、S1603、S1605、S1607:搬移数据的步骤
1701、1703、1705、1707、1709、1711、1713:数据流
S2001、S2003、S2005、S2007、S2009、S2011、S2013、S2015、S2017、S2019、S2021:搬移数据的步骤
具体实施方式
[第一范例实施例]
一般而言,存储器储存装置(亦称,存储器储存系统)包括闪存模块与控制器(亦称,控制电路)。通常存储器储存装置是与主机系统一起使用,以使主机系统可将数据写入至存储器储存装置或从存储器储存装置中读取数据。
图1A是根据第一范例实施例所绘示的主机系统与存储器储存装置。
请参照图1A,主机系统1000一般包括计算机1100与输入/输出(input/output,I/O)装置1106。计算机1100包括微处理器1102、随机存取存储器(randomaccessmemory,RAM)1104、系统总线1108与数据传输接口1110。输入/输出装置1106包括如图1B的鼠标1202、键盘1204、显示器1206与打印机1208。必须了解的是,图1B所示的装置非限制输入/输出装置1106,输入/输出装置1106可还包括其它装置。
在本发明实施例中,存储器储存装置100是通过数据传输接口1110与主机系统1000的其它元件电性连接。通过微处理器1102、随机存取存储器1104与输入/输出装置1106的运作可将数据写入至存储器储存装置100或从存储器储存装置100中读取数据。例如,存储器储存装置100可以是如图1B所示的随身盘1212、存储卡1214或固态硬盘(SolidStateDrive,SSD)1216等的可复写式非易失性存储器储存装置。
一般而言,主机系统1000可实质地为可与存储器储存装置100配合以储存数据的任意系统。虽然在本范例实施例中,主机系统1000是以计算机系统来作说明,然而,在本发明另一范例实施例中主机系统1000可以是数字相机、摄影机、通信装置、音频播放器或视频播放器等系统。例如,在主机系统为数字相机(摄影机)1310时,可复写式非易失性存储器储存装置则为其所使用的SD卡1312、MMC卡1314、记忆棒(memorystick)1316、CF卡1318或嵌入式储存装置1320(如图1C所示)。嵌入式储存装置1320包括嵌入式多媒体卡(EmbeddedMMC,eMMC)。值得一提的是,嵌入式多媒体卡是直接电性连接于主机系统的基板上。
图2是绘示图1A所示的存储器储存装置的概要方块图。
请参照图2,存储器储存装置100包括连接器102、存储器控制器104与闪存模块106。
在本范例实施例中,连接器102是相容于序列先进附件(SerialAdvancedTechnologyAttachment,SATA)标准。然而,必须了解的是,本发明不限于此,连接器102亦可以是符合电气和电子工程师协会(InstituteofElectricalandElectronicEngineers,IEEE)1394标准、平行先进附件(ParallelAdvancedTechnologyAttachment,PATA)标准、高速外围零件连接接口(PeripheralComponentInterconnectExpress,PCIExpress)标准、通用序列总线(UniversalSerialBus,USB)标准、安全数字(SecureDigital,SD)接口标准、记忆棒(MemoryStick,MS)接口标准、多媒体储存卡(MultiMediaCard,MMC)接口标准、小型快闪(CompactFlash,CF)接口标准、集成式驱动电子接口(IntegratedDeviceElectronics,IDE)标准或其它适合的标准。
存储器控制器104用以执行以硬件型式或固件型式实作的多个逻辑门或控制指令,并且根据主机系统1000的指令在闪存模块106中进行数据的写入、读取、抹除与合并等运作。
闪存模块106是电性连接至存储器控制器104,并且用以储存主机系统1000所写入的数据。在本范例实施例中,闪存模块106为多阶存储单元(MultiLevelCell,MLC)NAND闪存模块。然而,本发明不限于此,闪存模块106亦可是单阶存储单元(SingleLevelCell,SLC)NAND闪存模块或其它具有相同特性的存储器模块。
图3是根据第一范例实施例所绘示的存储器控制器的概要方块图。
请参照图3,存储器控制器104包括存储器管理电路202、主机接口204、存储器接口206与缓冲存储器208。
存储器管理电路202用以控制存储器控制器104的整体运作。具体来说,存储器管理电路202具有多个控制指令,并且在存储器储存装置100运作时,此些控制指令会被执行以根据本范例实施例的区块管理方法来管理闪存模块106中的物理区块。
在本范例实施例中,存储器管理电路202的控制指令是以固件型式来实作。例如,存储器管理电路202具有微处理器单元(未绘示)与只读存储器(未绘示),并且此些控制指令是被烧录至此只读存储器中。当存储器储存装置100运作时,此些控制指令会由微处理器单元来执行以进行数据的写入、读取与抹除等运作。
在本发明另一范例实施例中,存储器管理电路202的控制指令亦可以程序码型式储存于闪存模块106的特定区域(例如,存储器模块中专用于存放系统数据的系统区)中。此外,存储器管理电路202具有微处理器单元(未绘示)、只读存储器(未绘示)及随机存取存储器(未绘示)。特别是,此只读存储器具有驱动码段,并且当存储器控制器104被致能时,微处理器单元会先执行此驱动码段来将储存于闪存模块106中的控制指令加载至存储器管理电路202的随机存取存储器中。之后,微处理器单元会运转此些控制指令以进行数据的写入、读取与抹除等运作。此外,在本发明另一范例实施例中,存储器管理电路202的控制指令亦可以一硬件型式来实作。
主机接口204是电性连接至存储器管理电路202并且用以接收与识别主机系统1000所传送的指令与数据。也就是说,主机系统1000所传送的指令与数据会通过主机接口204来传送至存储器管理电路202。在本范例实施例中,主机接口204是兼容于SATA标准。然而,必须了解的是本发明不限于此,主机接口204亦可以是兼容于PATA标准、IEEE1394标准、PCIExpress标准、USB标准、SD标准、MS标准、MMC标准、CF标准、IDE标准或其它适合的数据传输标准。
存储器接口206是电性连接至存储器管理电路202并且用以存取闪存模块106。也就是说,欲写入至闪存模块106的数据会经由存储器接口206转换为闪存模块106所能接受的格式。
缓冲存储器208是电性连接至存储器管理电路202并且用以暂存来自于主机系统1000的数据与指令或来自于闪存模块106的数据。
在本发明一范例实施例中,存储器控制器104还包括电源管理电路210与错误检查与校正电路212。
电源管理电路210是电性连接至存储器管理电路202并且用以控制存储器储存装置100的电源。
错误检查与校正电路212是电性连接至存储器管理电路202并且用以执行错误检查与校正程序以确保数据的正确性。具体来说,当存储器管理电路202从主机系统1000中接收到写入指令时,错误检查与校正电路212会为对应此写入指令的数据产生对应的错误检查与校正码(ErrorCheckingandCorrectingCode,ECCCode),并且存储器管理电路202会将对应此写入指令的数据与对应的错误检查与校正码写入至闪存模块106中。之后,当存储器管理电路202从闪存模块106中读取数据时会同时读取此数据对应的错误检查与校正码,并且错误检查与校正电路212会依据此错误检查与校正码对所读取的数据执行错误检查与校正程序。
图4是根据第一范例实施例所绘示的闪存模块的概要方块图。
请参照图4,闪存模块106包括存储单元阵列252、控制电路254与数据输入/输出缓冲器256,存储单元阵列252包括物理区块410(0)~410(N)。在本范例实施例中,每一物理区块分别具有多个物理页面,其中属于同一个物理区块的物理页面可被独立地写入且被同时地抹除。例如,在本范例实施例中,每一物理区块是由128个物理页面所组成,并且每一物理页面的容量为8千字节(Kilobyte,KB)。然而,必须了解的是,本发明不限于此,每一物理区块是可由64个物理页面、256个物理页面或其它任意个物理页面所组成。更详细来说,物理区块为抹除的最小单位。亦即,每一物理区块含有最小数目的一并被抹除的存储单元。物理页面为编程的最小单元。即,物理页面为写入数据的最小单元。每一物理页面通常包括数据位区与冗余位区。数据位区用以储存使用者的数据,而冗余位区用以储存系统的数据(例如,错误检查与校正码)。
控制电路254用以根据来自于存储器控制器104的指令将数据编程至存储单元阵列252或从存储单元阵列252中读取数据。
数据输入/输出缓冲器256可包括第一缓冲区256a与第二缓冲区256b。第一缓冲区256a与第二缓冲区256b彼此独立,且可分别具有相同的容量。例如,第一缓冲区256a与第二缓冲区256b的容量皆为一个物理页面的容量,用以暂存欲写入至存储单元阵列202的页数据或从存储单元阵列202中所读取的页数据。
在闪存模块106中写入数据的过程包括数据传输以及数据编程两个部分。在数据传输的部分,闪存控制器104的存储器管理电路202会将欲写入的页数据传输至第一缓冲区256a,并且之后,欲写入的页数据会被搬移至第二缓冲区256b。而在数据编程的部分,欲写入的页数据会从第二缓冲区256b中编程至存储单元阵列252。特别是,当欲写入的页数据从第一缓冲区256a搬移至第二缓冲区256b之后,存储器控制器204就会从闪存模块106中接收到完成写入指令的确认消息,而可再对闪存模块106传输(或下达)下一个指令。在此,第一缓冲区256a亦可称为数据快取(datacache)区,而第二缓冲区256b亦可称为页面缓冲(pagebuffer)区,并且通过第二缓冲区256b的写入运作可称为快取编程(CacheProgram)运作。
值得一提的是,在本发明范例实施例中,闪存控制器104的存储器管理电路202亦可指示闪存模块106不使用第二缓冲区256b来写入数据。例如,在数据输入/输出缓冲器256未配置第二缓冲区256b或者基于某些因素而不使用第二缓冲区256b的例子中,闪存模块106也可根据存储器管理电路202的指令直接将欲写入的页数据从第一缓冲区256a中编程至存储单元阵列252中。在另一范例实施例中,数据输入/输出缓冲器256亦可只具有一个缓冲区或大于2个缓冲区。
在此例子中,存储器管理电路202必须等到闪存模块106将页数据从第一缓冲区256a中编程至存储单元阵列252之后才会接收到完成写入指令的确认消息。
图5与图6是根据第一范例实施例所绘示管理闪存模块的物理区块的示意图。
请参照图5,存储器控制器104的存储器管理电路202将物理区块410(0)~410(N)逻辑地可分组为数据区(dataarea)502、闲置区(freearea)504、系统区(systemarea)506与取代区(replacementarea)508。
逻辑上属于数据区502与闲置区504的物理区块是用以储存来自于主机系统1000的数据。具体来说,数据区502的物理区块(亦称为数据物理区块)是被视为已储存数据的物理区块,而闲置区504的物理区块(亦称为闲置物理区块)是用以写入新数据的物理区块。例如,当从主机系统1000接收到写入指令与欲写入的数据时,存储器管理电路202会从闲置区504中提取物理区块,并且将数据写入至此物理区块中。再例如,当对某一逻辑区块执行数据合并操作时,存储器管理电路202会从闲置区504中提取物理区块作为对应此逻辑区块的新数据物理区块来写入数据,并且替换原先映射此逻辑区块的数据物理区块。
逻辑上属于系统区506的物理区块是用以记录系统数据。例如,系统数据包括关于闪存模块的制造商与型号、闪存模块的物理区块数、每一物理区块的物理页面数等。
逻辑上属于取代区508中的物理区块是用于坏物理区块取代程序,以取代损坏的物理区块。具体来说,倘若取代区508中仍存有正常的物理区块并且数据区502的物理区块损坏时,存储器管理电路202会从取代区508中提取正常的物理区块来更换损坏的物理区块。
基于上述,在存储器储存装置100的运作中,数据区502、闲置区504、系统区506与取代区508的物理区块会动态地变动。例如,用以轮替储存数据的物理区块会变动地属于数据区502或闲置区504。
值得一提的是,在本范例实施例中,存储器管理电路202是以每一物理区块为单位来进行管理。然而,本发明不限于此,在另一范例实施例中,存储器管理电路202亦可将物理区块分组为多个物理单元,并且以物理单元为单位来进行管理。例如,每一物理单元可由同一存储器子模块或不同存储器子模块中的至少一个物理区块所组成。此外,在本发明另一范例实施例中,此些物理区块或物理单元亦可被区分为多个区域来分别地管理。
请参照图6,存储器管理电路202会配置逻辑区块610(0)~610(H)以映射数据区502的物理区块,其中每一逻辑区块具有多个逻辑页面并且此些逻辑页面可依序地映射对应的数据物理区块的物理页面。例如,在存储器储存装置100被格式化时,逻辑区块610(0)~610(H)会初始地映射数据区502的物理区块410(0)~410(F-1)。特别是,在初始化之后,尽管数据区502的物理区块未实际地被写入数据,但其仍会被视为已储存数据的物理区块。
在本发明范例实施例中,存储器管理电路202会维护逻辑区块-物理区块映射表(logicalblock-physicalblockmappingtable)以记录逻辑区块610(0)~610(H)与数据区502的物理区块之间的映射关系。此外,主机系统1000是以逻辑存取地址为单位来存取数据。例如,一个逻辑存取地址为一个逻辑扇区(Sector)。当主机系统1000存取数据时,存储器管理电路202会将对应存储器储存装置100的逻辑存取地址710(0)~710(K)转换成对应的逻辑页面内的地址。例如,当主机系统1000欲存取某一逻辑存取地址时,存储器管理电路202会将主机系统1000所存取的逻辑存取地址转换为以对应的逻辑区块、逻辑页面与逻辑偏移(offset)所构成的多维地址,并且通过逻辑区块-物理区块映射表于对应的物理页面中存取数据。在此,偏移是用以定位在一个逻辑页面(或物理页面)中的一个逻辑(或物理)地址,其是定义为此逻辑(或物理)地址与此逻辑页面(或物理页面)的起始地址之间的距离,其中此逻辑(或物理)地址亦称为逻辑(物理)偏移地址。
图7~图9是根据第一范例实施例所绘示的使用子物理区块来写入更新数据的范例。
请同时参照图7~图9,例如,在逻辑区块610(0)是映射至物理区块410(0)的映射状态下,当存储器控制器104从主机系统1000中接收到写入指令而欲写入数据至属于逻辑区块610(0)的逻辑页面时,存储器管理电路202会依据逻辑区块-物理区块映射表识别逻辑区块610(0)目前是映射至物理区块410(0)并且从闲置区504中提取物理区块410(F)作为替换物理区块来轮替物理区块410(0)。然而,当存储器管理电路202将新数据写入至物理区块410(F)的同时,存储器管理电路202不会立刻将物理区块410(0)中的所有有效数据搬移至物理区块410(F)而抹除物理区块410(0)。具体来说,存储器管理电路202会将物理区块410(0)中欲写入物理页面之前的有效数据(即,物理区块410(0)的第0物理页面与第1物理页面中的数据)复制至物理区块410(F)的第0物理页面与第1物理页面中(如图7所示),并且将新数据写入至物理区块410(F)的第2~4个物理页面中(如图8所示)。此时,存储器管理电路202即完成写入的运作。因为物理区块410(0)中的有效数据有可能在下个操作(例如,写入指令)中变成无效,因此立刻将物理区块410(0)中的其它有效数据搬移至物理区块410(F)可能会造成无谓的搬移。
在本范例实施例中,暂时地维持此等瞬时关系的运作称为开启(open)母子区块,并且原物理区块(例如,上述物理区块410(0))称为母物理区块而替换物理区块(例如,上述与物理区块410(F))称为子物理区块。在此,一个母物理区块以及其对应的至少一子物理区块称为母子区块组。
之后,当需要将物理区块410(0)与物理区块410(F)的数据合并(merge)时,存储器管理电路202会将物理区块410(0)与物理区块410(F)的数据整并至一个物理区块,由此提升物理区块的使用效率。在此,合并母子区块的运作称为数据合并操作或关闭(close)母子区块。例如,如图9所示,当进行关闭母子区块时,存储器管理电路202会将物理区块410(0)中剩余的有效数据(即,物理区块410(0)的第5~K物理页面中的数据)复制至替换物理区块410(F)的第5物理页面~第K物理页面中,然后对物理区块410(0)执行抹除操作并将抹除后的物理区块410(0)关联至闲置区504,同时,将物理区块410(F)关联至数据区502。也就是说,存储器管理电路202会在逻辑区块-物理区块映射表中将逻辑区块610(0)重新映射至物理区块410(F)。此外,在本范例实施例中,存储器管理电路202会建立闲置区物理区块表(未绘示)来记录目前被关联至闲置区504的物理区块。
除了上述使用子物理区块来写入更新数据外,在本范例实施例中,存储器管理电路202还会从闲置区504中提取至少一物理区块作为随机(Random)物理区块并且使用随机物理区块来写入更新数据。例如,倘若主机系统1000欲更新的逻辑页面的数据已被写入至子物理区块时,此更新数据会被写入至随机物理区块,以避免反复执行上述数据合并操作。
图10是根据第一范例实施例所绘示的使用子物理区块与随机物理区块写入数据的示意图。
请参照图10,假设物理区块410(S-1)被提取作为随机物理区块并且在图8所示的储存状态下主机系统1000欲写入更新数据至逻辑区块610(0)的第1逻辑页面时,存储器管理电路202会将此更新数据写入至随机物理区块中第一个空的物理页面(例如,物理区块410(S-1)的第0物理页面)中。
在本范例实施例中,当目前所使用的随机物理区块已被写满时,存储器管理电路202会再从闲置区504中提取另一个物理区块作为新的随机物理区块,直到闲置区504中物理区块的数目小于预先定义数目为止。具体来说,闲置区504的物理区块是有限的,因此,作为随机物理区块的物理区块的数目亦会受到限制。当闲置区504中物理区块的数目小于预先定义数目时,存储器管理电路202会执行上述数据合并操作,对所储存的数据皆为无效数据的随机物理区块执行抹除运作并且将已抹除的物理区块关联至闲置区504。由此,在执行下一个写入指令时,存储器管理电路202就可再从闲置区504提取空的物理区块作为随机物理区块。
图11是根据第一范例实施例所绘示的执行数据合并操作的一范例。
请参照图11,倘若在图10所示的状态下对逻辑区块610(0)执行数据合并操作时,存储器管理电路202会从闲置区504中提取一个空的物理区块410(F+1),将属于逻辑区块610(0)的有效数据从母物理区块410(0)、子物理区块410(F)与随机物理区块410(S-1)中复制到物理区块410(F+1),并且将逻辑区块610(0)重新映射至物理区块410(F+1)。
具体来说,在有效数据复制过程中,物理区块410(0)的第0物理页面中的数据会被读取并被写入至物理区块410(F+1)的第0物理页面。然后,物理区块410(S-1)的第1物理页面中的数据会被读取并被写入至物理区块410(F+1)的第1物理页面。之后,物理区块410(F)的第2~4个物理页面中的数据会依序地被读取并依序地被写入至物理区块410(F+1)的第2~4个物理页面。最后,物理区块410(0)的第5~K物理页面中的数据会依序地被读取并依序地被写入至物理区块410(F+1)的第5~K个物理页面。
值得一提的是,在闪存模块106的编程中,数据是以物理页面为单位来写入。倘若属于某一个逻辑页面的更新数据的大小小于一个物理页面的容量时,存储器管理电路202会根据不同的状态使用不同的方式来写入小于一个物理页面的容量的更新数据。
例如,在一范例中,存储器管理电路202会从原本储存此逻辑页面的物理页面中读取未被更新的数据并且将未被更新的数据与更新数据一并写入至空的物理页面中。在此,此运作称为有效页数据整理(arrange)。
再例如,在另一范例中,存储器管理电路202可将此更新数据直接写入至物理页面中,而不进行有效页数据整理。具体来说,存储器管理电路202根据欲写入此更新数据的逻辑偏移地址将此更新数据写入至物理页面中并将此物理页面用以写入此更新数据的储存区段标记为有效。
图12是根据第一范例实施例所绘示的将数据量小于一个物理页面的容量的更新数据写入至一个物理页面的范例。例如,在本示范实施例中一个物理页面的容量为8KB,因此,以下将以写入数据量小于8K的数据为例来进行说明。
请参照图12,例如,倘若逻辑页面LP0原本是映射物理页面PP0(即,逻辑页面LP0的数据被储存在物理页面PP0中)并且主机系统1000欲从某个逻辑区块的逻辑页面LP1的第0字节开始储存数据量为4KB的更新数据UD1时,存储器管理电路202选择一个物理区块的物理页面PP1,从物理页面PP1的第0字节开始写入更新数据UD1并且将储存更新数据UD1的储存区段标记为有效。特别是,存储器管理电路不会将属于逻辑页面LP0的其它偏移地址的有效数据VD1从物理页面PP0中搬移至物理页面PP1中。也就是说,存储器控制器104不会进行有效页数据整理而直接将更新数据写入至物理页面中,由此,可有效地提升将数据写入至物理区块的速度。
值得一提的是,如上所述,在闪存模块106中,数据是以物理页面为单位来编程,因此,在图12所述的范例中,更新数据UD1被传输至闪存模块106中之后,仍会与暂存于闪存模块106的第一缓冲区256a中的无意义数据(即,原本存于第一缓冲区256a的数据,其不一定是属于逻辑页面LP0的数据)一起被搬移至第二缓冲区256b并且被写入至物理页面中。也就是说,更新数据UD1会被传输至第一缓冲区256a的前面4KB的地址,故此时,第一缓冲区256a的前段为更新数据UD1,而后段为原本存于第一缓冲区256a的数据。之后原本存于第一缓冲区256a之后面4KB的地址上的无意义数据会一起被搬移至第二缓冲区256b并且被写入至物理页面中。在另一范例实施例中,第一缓冲区256a的数据亦可直接被写入至物理页面中。
如上所述,当在一个写入指令中一个逻辑页面中仅部分的数据被更新时,属于此逻辑页面的有效页数据会被分散地储存在多个物理页面中。基此,当执行数据合并程序时,存储器管理电路200需要从多个物理页面中将属于此逻辑页面的有效页数据搬移至一个空的物理页面中。
图13-图15是根据本发明第一范例实施例所绘示的从多个物理页面中将属于此逻辑页面的有效页数据搬移至一个空的物理页面的示意图,其中假设属于逻辑页面LL0的前面4KB地址的有效数据(以下称为第一部分数据)被储存在物理页面PP1的前面4KB地址中并且属于逻辑页面LL0的后面4KB地址的有效数据(以下称为第二部分数据)被储存在物理页面PP0的后面4KB地址中,并且属于逻辑页面LL0的有效页数据需被合并至物理页面PP2中。
请参照图13,存储器管理电路202会对闪存模块106下达用以读取物理页面PP1的读取指定(亦可称为复制回存读取(copybackread)指令)。接收到此读取指令后,闪存模块106的控制电路254会将物理页面PP1中的页数据读取至第一缓冲区256a(数据流1301)并且存储器管理电路202会从第一缓冲区256a中读出前面4K的数据UD1至缓冲存储器208(数据流1303)。例如,存储器管理电路202是根据物理页面PP1的有效储存区段标记来读取物理页面PP1中的有效数据(即,数据UD1)。
请参照图14,之后,存储器管理电路202会对闪存模块106下达用以读取物理页面PP0的读取指令(亦可称为复制回存读取指令)。接收到此读取指令后,闪存模块106的控制电路254会将物理页面PP0中的页数据读取至第一缓冲区256a(数据流1305)。
请参照图15,之后,存储器管理电路202会对闪存模块106下达用以编程物理页面PP2的写入指令(亦称为复制回存写入指令)。特别是,在下达用以编程物理页面PP2的写入指令时,存储器管理电路202会一并将数据UD1从缓冲存储器208中传输至第一缓冲区256a的前面4KB地址(数据流1307)。接收到此写入指令后,闪存模块106的控制电路254会将第一缓冲区256a中的数据(即,数据UD1与数据VD1)搬移至第二缓冲区256b中并且从第二缓冲区256b中将数据UD1与数据VD1编程至物理页面PP2中(数据流1309)。
值得一提的是,在闪存模块106的控制电路254从第二缓冲区256b中将数据UD1与数据VD1编程至物理页面PP2期间,存储器管理电路202可再对闪存模块106下达复制回存读取指令以从其它页面读取数据(如图12与图13所示)。
图16是根据第一范例实施例所绘示的数据搬移方法的流程图,其绘示在闪存模块中从两个物理页面(以下称为第二物理页面与第三物理页面)搬移页数据(以下称为第一页数据)至一个物理页面(以下称为第一物理页面)的步骤
请参照图16,在步骤S1601中,存储器管理电路202传送用以读取第二物理页面的读取指令(以下称为第一读取指令)给闪存模块106,其中闪存模块106会将储存于第二物理页面上的页数据读取至第一缓冲区256a以响应第一读取指令。
在步骤S1603中,存储器管理电路202会从第一缓冲区256a中将第一页数据的第一部分读出至缓冲存储器208(例如,图12中的数据UD1)。
在步骤S1605中,存储器管理电路202传送用以读取第三物理页面的读取指令(以下称为第二读取指令)给闪存模块106,其中闪存模块106会将储存于第三物理页面上的页数据读取至第一缓冲区256a以响应第二读取指令。
在步骤S1607中,存储器管理电路202传送用以写入第一物理页面的写入指令给闪存模块106并将第一页数据的第一部分从缓冲存储器208中传输至第一缓冲区256a中,其中闪存模块106会将第一缓冲区256a中包含第一页数据的第一部分与第一页数据的第二部分数据(例如,图14的数据VD1)的页数据搬移至第二缓冲区256b并且之后从第二缓冲区256b中将页数据编程至第一物理页面。特别是,如上所述,存储器管理电路202会在第一页数据从第一缓冲区256a搬移至第二缓冲区256b后从闪存模块106中接收到确认消息而可继续对闪存模块106下一个指令。因此,步骤S1601、步骤S1603或步骤S1605亦可在闪存模块106执行编程运作期间被执行,亦即闪存模块106同时接受存储器管理电路202传送的一数据,并编程另一数据。
必须了解的是,尽管在图13-图15中的示意图及图16中的流程图是描述从两个物理页面中分别地搬移4KB的数据至一个物理页面的范例,然而,本发明不限于此。在本发明另一范例实施例中,属于一个逻辑页面的有效页数据是可从更多物理页面中被搬移至一个物理页面并且被搬移的数据的大小不限于4KB。
例如,在本发明另一范例实施例中,第一页数据可还包含位于第一部分与第二部分数据之间的第三部分并且第三部分被储存在第四物理页面中。基此,在执行上述步骤S1605之前,存储器管理电路202还对闪存模块106下达用以读取第四物理页面的读取指令(以下称为第三读取指令),并且在闪存模块106将储存于第四物理页面上的页数据读取至第一缓冲区256a之后从第一缓冲区256a中将第一页数据的第三部分读出至缓冲存储器208。此外,在执行上述步骤S1607时,存储器管理电路202还会将第一页数据的第三部分从缓冲存储器208中传输至第一缓冲区256a中。基此,完整的第一页数据就可从第一缓冲区256a中被搬移至第二缓冲区256b并且被写入至第一物理页面中。
基于上述,分散储存于多个物理页面中属于同一个逻辑页面的数据是在闪存模块106的数据输入/输出缓冲器256中被整并并且直接地写入至物理页面中,因此,搬移数据的速度可有效地被提升。此外,由于各个物理页面中的数据无需被读出至缓冲存储器208中,因此,可大幅减少缓冲存储器208的储存空间的使用,进而无需配置大容量的缓冲存储器208并节省存储器储存装置的制造成本。
[第二范例实施例]
第二范例实施例本质上是相同于第一范例实施例,其差异之处在于,第二范例实施例的存储器管理电路202还会对搬移的数据进行错误校正程序。以下将使用第一范例实施例的图式并且仅针对第二范例实施例与第一范例实施例的差异之处进行描述。
图17-图19是根据本发明第二范例实施例所绘示的从多个物理页面中将属于此逻辑页面的有效页数据搬移至一个空的物理页面的示意图,其中假设属于逻辑页面LL0的前面4KB地址的有效数据(以下称为第一部分数据)被储存在物理页面PP1的前面4KB地址中并且属于逻辑页面LL0的后面4KB地址的有效数据(以下称为第二部分数据)被储存在物理页面PP0的后面4KB地址中,并且属于逻辑页面LL0的有效页数据需被合并至物理页面PP2中。
请参照图17,存储器管理电路202会对闪存模块106下达用以读取物理页面PP1的读取指定(亦可称为复制回存读取指令)。接收到此读取指令后,闪存模块106的控制电路254会将物理页面PP1中的页数据读取至第一缓冲区256a(数据流1701)并且存储器管理电路202会从第一缓冲区256a中读出前面4K的数据UD1至缓冲存储器208(数据流1703)。特别是,在从第一缓冲区256a中读出前面4K的数据UD1后,存储器管理电路202会通过错误检查与校正电路212对数据UD1进行错误校正程序。
请参照图18,之后,存储器管理电路202会对闪存模块106下达用以读取物理页面PP0的读取指令(亦可称为复制回存读取指令)。接收到此读取指令后,闪存模块106的控制电路254会将物理页面PP0中的页数据读取至第一缓冲区256a(数据流1705)并且存储器管理电路202会从第一缓冲区256a中读出后面4K的数据VD1至缓冲存储器208(数据流1707)。特别是,在从第一缓冲区256a中读出后面4K的数据VD1后,存储器管理电路202会通过错误检查与校正电路212对数据VD1进行错误校正程序。
请参照图19,之后,存储器管理电路202会对闪存模块106下达用以编程物理页面PP2的写入指令(亦称为复制回存写入指令)。特别是,在下达用以编程物理页面PP2的写入指令时,存储器管理电路202会一并将数据UD1从缓冲存储器208中传输至第一缓冲区256a的前面4KB地址(数据流1709)。特别是,倘若原始从第一缓冲区256a中读出的数据UD1存有错误位时,存储器管理电路202会将已校正的UD1传输至第一缓冲区256a。值得一提的是,倘若原始从第一缓冲区256a中读出的数据VD1存有错误位时,存储器管理电路202还会将已校正的VD1传输至第一缓冲区256a的后面4KB地址(数据流1711)。
在接收到此写入指令后,闪存模块106的控制电路254会将第一缓冲区256a中的数据(即,数据UD1与数据VD1)搬移至第二缓冲区256b中并且从第二缓冲区256b中将数据UD1与数据VD1编程至物理页面PP2中(数据流1713)。
图20是根据本发明第二范例实施例所绘示的数据搬移方法的流程图,其绘示在闪存模块中从两个物理页面(以下称为第二物理页面与第三物理页面)搬移页数据(以下称为第一页数据)至一个物理页面(以下称为第一物理页面)的步骤。
请参照图20,在步骤S2001中,存储器管理电路202传送用以读取第二物理页面的读取指令(以下称为第一读取指令)给闪存模块106,其中闪存模块106会将储存于第二物理页面上的页数据读取至第一缓冲区256a以响应第一读取指令。
在步骤S2003中,存储器管理电路202会从第一缓冲区256a中将第一页数据的第一部分读出至缓冲存储器208(例如,图16中的数据UD1)并且对第一页数据的第一部分进行错误校正程序。
在步骤S2005中,存储器管理电路202传送用以读取第三物理页面的读取指令(以下称为第二读取指令)给闪存模块106,其中闪存模块106会将储存于第三物理页面上的页数据读取至第一缓冲区256a以响应第二读取指令。
在步骤S2007中,存储器管理电路202会从第一缓冲区256a中将第一页数据的第二部分读出至缓冲存储器208(例如,图17中的数据VD1)并且对第一页数据的第二部分进行错误校正程序。
在步骤S2009中,存储器管理电路202会判断从第一缓冲区256a中所读取的第一页数据的第一部分是否存有错误位,并且在步骤S2011与步骤S2013中,存储器管理电路202会判断从第一缓冲区256a中所读取的第一页数据的第二部分是否存有错误位。
倘若从第一缓冲区256a中所读取的第一页数据的第一部分与第二部分皆未存有错误位时,在步骤S2015中,存储器管理电路202对闪存模块106下达用以写入第一物理页面的写入指令时将第一页数据的第一部分从缓冲存储器208中传输至第一缓冲区256a中。
倘若从第一缓冲区256a中所读取的第一页数据的第一部分未存有错误位且第一页数据的第二部分存有错误位时,在步骤S2017中,存储器管理电路202对闪存模块106下达用以写入第一物理页面的写入指令时将第一页数据的第一部分与已校正的第一页数据的第二部分从缓冲存储器208中传输至第一缓冲区256a中。
倘若从第一缓冲区256a中所读取的第一页数据的第一部分存有错误位且第一页数据的第二部分未存有错误位时,在步骤S2019中,存储器管理电路202对闪存模块106下达用以写入第一物理页面的写入指令时将已校正的第一页数据的第一部分从缓冲存储器208中传输至第一缓冲区256a中。
倘若从第一缓冲区256a中所读取的第一页数据的第一部分与第二部分皆存有错误位时,在步骤S2021中,存储器管理电路202对闪存模块106下达用以写入第一物理页面的写入指令时将已校正的将第一页数据的第一部分与已校正的第一页数据的第二部分从缓冲存储器208中传输至第一缓冲区256a中。
在接收到写入指令后,闪存模块106会将第一缓冲区256a中包含第一页数据的第一部分与第一页数据的第二部分数据的页数据搬移至第二缓冲区256b并且之后从第二缓冲区256b中将页数据编程至第一物理页面中。
基于上述,在第二范例实施例中,除了提升搬移数据的速度之外,还可确保所搬移的数据的正确性。
综上所述,本发明范例实施例的数据搬移方法、存储器控制器与存储器储存装置能够有效率地在闪存模块中将储存于多个物理页面中属于同一个逻辑页面的有效页数据整并至一个物理页面。特别是,分散储存于多个物理页面中属于同一个逻辑页面的数据是在闪存模块的数据输入/输出缓冲器中被整并并且直接地写入至物理页面中,因此,搬移数据的速度可有效地被提升。此外,由于各个物理页面中的数据无需被读出至缓冲存储器中,因此,可大幅减少缓冲存储器的储存空间的使用,进而无需配置大容量的缓冲存储器并节省存储器储存装置的制造成本。此外,在本发明另一范例实施例的数据搬移方法、存储器控制器与存储器储存装置还能够确保所搬移的数据的正确性。
虽然本发明已以实施例揭露如上,然其并非用以限定本发明,任何所属技术领域中具有通常知识者,在不脱离本发明的精神和范围内,当可作些许的更动与润饰,故本发明的保护范围当视所附的权利要求范围所界定者为准。
Claims (24)
1.一种数据搬移方法,用于将储存于具有多个物理页面的一闪存模块中的一第一页数据搬移至该多个物理页面之中的一第一物理页面,该闪存模块具有一第一缓冲区,该第一缓冲区的一容量相同于每一该多个物理页面的一容量,该第一页数据具有一第一部分数据与一第二部分数据,该第一页数据的该第一部分被储存在该多个物理页面之中的一第二物理页面中,该第一页数据的该第二部分数据被储存在该多个物理页面之中的一第三物理页面中,该数据搬移方法包括:
(a)将指示读取该第二物理页面的一第一读取指令传送给该闪存模块,其中该闪存模块会将储存于该第二物理页面中的页数据读取至该闪存模块的该第一缓冲区中以响应该第一读取指令;
(b)从该第一缓冲区中读出该第一页数据的该第一部分数据至一缓冲存储器;
(c)将指示读取该第三物理页面的一第二读取指令传送给该闪存模块,其中该闪存模块会将储存于该第三物理页面中的页数据读取至该闪存模块的该第一缓冲区中以响应该第二读取指令;
(d)将该第一页数据的该第一部分数据从该缓冲存储器传输至该第一缓冲区;以及
(e)将指示将暂存于该第一缓冲区中的该第一页数据写入至该第一物理页面中的一写入指令传送给该闪存模块。
2.根据权利要求1所述的数据搬移方法,
其中该闪存模块还具有一第二缓冲区,
其中该闪存模块先将暂存于该第一缓冲区中的该第一页数据搬移至该第二缓冲区并且再从该第二缓冲区中将该第一页数据编程至该第一物理页面中以响应该写入指令。
3.根据权利要求1所述的数据搬移方法,
其中该闪存模块从该第一缓冲区中将该第一页数据编程至该第一物理页面中以响应该写入指令。
4.根据权利要求1所述的数据搬移方法,其中步骤(d)包括:
判断从该第一缓冲区中读出的该第一页数据的该第一部分数据是否存有至少一错误位;
当从该第一缓冲区中读出的该第一页数据的该第一部分数据存有该至少一错误位时,校正所读出的该第一页数据的该第一部分数据并且将已被校正的该第一页数据的该第一部分数据从该缓冲存储器传输至该第一缓冲区。
5.根据权利要求4所述的数据搬移方法,还包括:
在步骤(c)之后从该第一缓冲区中读出该第一页数据的该第二部分数据至该缓冲存储器,
其中步骤(d)还包括:判断从该第一缓冲区中读出至该缓冲存储器的该第一页数据的该第二部分数据是否存有至少一错误位,以及当从该第一缓冲区中读出至该缓冲存储器的该第一页数据的该第二部分数据存有该至少一错误位时,校正从该第一缓冲区中读出至该缓冲存储器的该第一页数据的该第二部分数据并且将已被校正的该第一页数据的该第二部分数据传输至该第一缓冲区。
6.根据权利要求1所述的数据搬移方法,
其中该第一页数据还具有一第三部分并且该第一页数据的该第三部分被储存在该多个物理页面之中的一第四物理页面中,
其中该数据搬移方法还包括:
在步骤(b)之后,将指示读取该第四物理页面中的一第三读取指令传送给该闪存模块,其中该闪存模块会将储存于该第四物理页面中的页数据读取至该闪存模块的该第一缓冲区中以响应该第三读取指令;
从该第一缓冲区中读出该第一页数据的该第三部分至该缓冲存储器;以及
在步骤(c)之后将该第一页数据的该第三部分从该缓冲存储器传输至该第一缓冲区。
7.根据权利要求1所述的数据搬移方法,其中上述步骤(b)是在该闪存模块执行一编程运作期间被执行。
8.根据权利要求1所述的数据搬移方法,其中每一该多个物理页面的该容量为8千字节,该第一页数据的一大小为8千字节,并且该第一页数据的该第一部分数据的一大小与该第一页数据的该第二部分数据的一大小皆为4千字节。
9.一种存储器控制器,用于控制一闪存模块,其中该闪存模块具有多个物理页面与一第一缓冲区,该第一缓冲区的一容量相同于每一该多个物理页面的一容量,该存储器控制器包括:
一主机接口,用以电性连接至一主机系统;
一存储器接口,用以电性连接至该闪存模块;
一缓冲存储器;以及
一存储器管理电路,电性连接至该缓冲存储器、该主机接口与该存储器接口,并且用以将储存于闪存模块中的一第一页数据搬移至该多个物理页面之中的一第一物理页面,
其中该第一页数据具有一第一部分数据与一第二部分数据,该第一页数据的该第一部分被储存在该些物理页面之中的一第二物理页面中,该第一页数据的该第二部分数据被储存在该些物理页面之中的一第三物理页面中,
其中该存储器管理电路将指示读取该第二物理页面的一第一读取指令传送给该闪存模块,并且该闪存模块会将储存于该第二物理页面中的页数据读取至该闪存模块的该第一缓冲区中以响应该第一读取指令,
其中该存储器管理电路从该第一缓冲区中读出该第一页数据的该第一部分数据至该缓冲存储器,
其中该存储器管理电路将指示读取该第三物理页面的一第二读取指令传送给该闪存模块,并且该闪存模块会将储存于该第三物理页面中的页数据读取至该闪存模块的该第一缓冲区中以响应该第二读取指令,
其中该存储器管理电路将该第一页数据的该第一部分数据从该缓冲存储器传输至该第一缓冲区,
其中该存储器管理电路将指示将暂存于该第一缓冲区中的该第一页数据写入至该第一物理页面中的一写入指令传送给该闪存模块。
10.根据权利要求9所述的存储器控制器,
其中该闪存模块还具有一第二缓冲区,
其中该闪存模块先将暂存于该第一缓冲区中的该第一页数据搬移至该第二缓冲区并且再从该第二缓冲区中将该第一页数据编程至该第一物理页面中以响应该写入指令。
11.根据权利要求9所述的存储器控制器,
其中该闪存模块从该第一缓冲区中将该第一页数据编程至该第一物理页面中以响应该写入指令。
12.根据权利要求9所述的存储器控制器,其中该存储器管理电路判断从该第一缓冲区中读出的该第一页数据的该第一部分数据是否存有至少一错误位,
其中当从该第一缓冲区中读出的该第一页数据的该第一部分数据存有该至少一错误位时,该存储器管理电路校正所读出的该第一页数据的该第一部分数据并且将已被校正的该第一页数据的该第一部分数据从该缓冲存储器传输至该第一缓冲区。
13.根据权利要求9所述的存储器控制器,其中该存储器管理电路还用以从该第一缓冲区中读出该第一页数据的该第二部分数据至该缓冲存储器并且判断从该第一缓冲区中读出至该缓冲存储器的该第一页数据的该第二部分数据是否存有至少一错误位,
其中当从该第一缓冲区中读出的该第一页数据的该第二部分数据存有该至少一错误位时,该存储器管理电路校正从该第一缓冲区中读出至该缓冲存储器的该第一页数据的该第二部分数据并且将已被校正的该第一页数据的该第二部分数据传输至该第一缓冲区。
14.根据权利要求9所述的存储器控制器,
其中该第一页数据还具有一第三部分并且该第一页数据的该第三部分被储存在该多个物理页面之中的一第四物理页面中,
其中该存储器管理电路还用以将指示读取该第四物理页面中的一第三读取指令传送给该闪存模块,其中该闪存模块会将储存于该第四物理页面中的页数据读取至该闪存模块的该第一缓冲区中以响应该第三读取指令,
其中该存储器管理电路还用以从该第一缓冲区中读出该第一页数据的该第三部分至该缓冲存储器;以及
其中该存储器管理电路还用以将该第一页数据的该第三部分从该缓冲存储器中传输至该第一缓冲区。
15.根据权利要求9所述的存储器控制器,
其中该存储器管理电路是在该闪存模块执行一编程运作期间,将指示读取该第二物理页面的该第一读取指令传送给该闪存模块,从该第一缓冲区中读出该第一页数据的该第一部分数据至该缓冲存储器,将指示读取该第三物理页面的该第二读取指令传送给该闪存模块,并且将该第一页数据的该第一部分数据从该缓冲存储器传输至该第一缓冲区。
16.根据权利要求9所述的存储器控制器,其中每一该多个物理页面的该容量为8千字节,该第一页数据的一大小为8千字节,并且该第一页数据的该第一部分数据的一大小与该第一页数据的该第二部分数据的一大小皆为4千字节。
17.一种存储器储存装置,包括:
一闪存模块,具有多个物理页面与一第一缓冲区,该第一缓冲区的一容量相同于每一该多个物理页面的一容量;
一连接器,用以电性连接至一主机系统;
一存储器控制器,具有一缓冲存储器并且电性连接至该闪存模块与该连接器,
其中该存储器控制器用以将储存于该闪存模块中的一第一页数据搬移至该多个物理页面之中的一第一物理页面,
其中该第一页数据具有一第一部分数据与一第二部分数据,该第一页数据的该第一部分被储存在该多个物理页面之中的一第二物理页面中,该第一页数据的该第二部分数据被储存在该多个物理页面之中的一第三物理页面中,
其中该存储器控制器将指示读取该第二物理页面的一第一读取指令传送给该闪存模块,并且该闪存模块会将储存于该第二物理页面中的数据读取至该闪存模块的该第一缓冲区中以响应该第一读取指令,
其中该存储器控制器从该第一缓冲区中读出该第一页数据的该第一部分数据至该缓冲存储器,
其中该存储器控制器将指示读取该第三物理页面的一第二读取指令传送给该闪存模块,并且该闪存模块会将储存于该第三物理页面中的数据读取至该闪存模块的该第一缓冲区中以响应该第二读取指令,
其中该存储器控制器将该第一页数据的该第一部分数据从该缓冲存储器传输至该第一缓冲区,
其中该存储器控制器将指示将暂存于该第一缓冲区中的该第一页数据写入至该第一物理页面中的一写入指令传送给该闪存模块。
18.根据权利要求17所述的存储器储存装置,
其中该闪存模块还具有一第二缓冲区,
其中该闪存模块先将暂存于该第一缓冲区中的该第一页数据搬移至该第二缓冲区并且再从该第二缓冲区中将该第一页数据编程至该第一物理页面中以响应该写入指令。
19.根据权利要求17所述的存储器储存装置,
其中该闪存模块从该第一缓冲区中将该第一页数据编程至该第一物理页面中以响应该写入指令。
20.根据权利要求17所述的存储器储存装置,其中该存储器控制器判断从该第一缓冲区中读出的该第一页数据的该第一部分数据是否存有至少一错误位,
其中当从该第一缓冲区中读出的该第一页数据的该第一部分数据存有该至少一错误位时,该存储器控制器校正所读出的该第一页数据的该第一部分数据并且将已被校正的该第一页数据的该第一部分数据从该缓冲存储器传输至该第一缓冲区。
21.根据权利要求17所述的存储器储存装置,其中该存储器控制器还用以从该第一缓冲区中读出该第一页数据的该第二部分数据至该缓冲存储器并且判断从该第一缓冲区中读出至该缓冲存储器的该第一页数据的该第二部分数据是否存有至少一错误位,
其中当从该第一缓冲区中读出的该第一页数据的该第二部分数据存有该至少一错误位时,该存储器控制器校正从该第一缓冲区中读出至该缓冲存储器的该第一页数据的该第二部分数据并且将已被校正的该第一页数据的该第二部分数据传输至该第一缓冲区。
22.根据权利要求17所述的存储器储存装置,
其中该第一页数据还具有一第三部分并且该第一页数据的该第三部分被储存在该多个物理页面之中的一第四物理页面中,
其中该存储器控制器还用以将指示读取该第四物理页面中的一第三读取指令传送给该闪存模块,其中该闪存模块会将储存于该第四物理页面中的页数据读取至该闪存模块的该第一缓冲区中以响应该第三读取指令,
其中该存储器控制器还用以从该第一缓冲区中读出该第一页数据的该第三部分至该缓冲存储器;以及
其中该存储器控制器还用以将该第一页数据的该第三部分从该缓冲存储器中传输至该第一缓冲区。
23.根据权利要求17所述的存储器储存装置,
其中该存储器控制器是在该闪存模块执行一编程运作期间,将指示读取该第二物理页面的该第一读取指令传送给该闪存模块,从该第一缓冲区中读出该第一页数据的该第一部分数据至该缓冲存储器,将指示读取该第三物理页面的该第二读取指令传送给该闪存模块,并且将该第一页数据的该第一部分数据从该缓冲存储器传输至该第一缓冲区。
24.根据权利要求17所述的存储器储存装置,其中每一该多个物理页面的该容量为8千字节,该第一页数据的一大小为8千字节,并且该第一页数据的该第一部分数据的一大小与该第一页数据的该第二部分数据的一大小皆为4千字节。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110277652.6A CN102999437B (zh) | 2011-09-19 | 2011-09-19 | 数据搬移方法、存储器控制器与存储器储存装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110277652.6A CN102999437B (zh) | 2011-09-19 | 2011-09-19 | 数据搬移方法、存储器控制器与存储器储存装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102999437A CN102999437A (zh) | 2013-03-27 |
CN102999437B true CN102999437B (zh) | 2015-12-16 |
Family
ID=47928030
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110277652.6A Active CN102999437B (zh) | 2011-09-19 | 2011-09-19 | 数据搬移方法、存储器控制器与存储器储存装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102999437B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104182358B (zh) * | 2014-08-21 | 2017-07-14 | 飞天诚信科技股份有限公司 | 一种优化数据读写的方法及装置 |
CN105468538B (zh) * | 2014-09-12 | 2018-11-06 | 华为技术有限公司 | 一种内存迁移方法及设备 |
CN114546293A (zh) * | 2017-09-22 | 2022-05-27 | 慧荣科技股份有限公司 | 快闪存储器的数据内部搬移方法以及使用该方法的装置 |
CN110795372A (zh) * | 2018-08-03 | 2020-02-14 | 扬智科技股份有限公司 | 数据处理装置及直接存储器访问方法 |
US11327907B2 (en) * | 2020-07-08 | 2022-05-10 | Macronix International Co., Ltd. | Methods and apparatus for improving SPI continuous read |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI240861B (en) * | 2002-01-11 | 2005-10-01 | Integrated Circuit Solution In | Data access method and architecture of flash memory |
CN1916875A (zh) * | 2005-08-17 | 2007-02-21 | 联发科技股份有限公司 | 存储器空间管理方法及其相关系统 |
CN101647007A (zh) * | 2008-03-01 | 2010-02-10 | 株式会社东芝 | 存储器系统 |
CN102012867A (zh) * | 2009-09-03 | 2011-04-13 | 248固态硬碟有限公司 | 资料储存系统及其管理方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7350044B2 (en) * | 2004-01-30 | 2008-03-25 | Micron Technology, Inc. | Data move method and apparatus |
KR101497074B1 (ko) * | 2008-06-17 | 2015-03-05 | 삼성전자주식회사 | 불휘발성 메모리 시스템 및 그것의 데이터 관리 방법 |
TWI446349B (zh) * | 2010-03-04 | 2014-07-21 | Phison Electronics Corp | 非揮發性記憶體存取方法、系統,與非揮發性記憶體控制器 |
-
2011
- 2011-09-19 CN CN201110277652.6A patent/CN102999437B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI240861B (en) * | 2002-01-11 | 2005-10-01 | Integrated Circuit Solution In | Data access method and architecture of flash memory |
CN1916875A (zh) * | 2005-08-17 | 2007-02-21 | 联发科技股份有限公司 | 存储器空间管理方法及其相关系统 |
CN101647007A (zh) * | 2008-03-01 | 2010-02-10 | 株式会社东芝 | 存储器系统 |
CN102012867A (zh) * | 2009-09-03 | 2011-04-13 | 248固态硬碟有限公司 | 资料储存系统及其管理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102999437A (zh) | 2013-03-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI494849B (zh) | 韌體碼載入方法、記憶體控制器與記憶體儲存裝置 | |
CN103377129B (zh) | 数据写入方法、存储器控制器与存储器储存装置 | |
TWI436212B (zh) | 資料寫入方法、記憶體控制器與記憶體儲存裝置 | |
CN104423888A (zh) | 数据写入方法、存储器控制电路单元与存储器存储装置 | |
TWI498899B (zh) | 資料寫入方法、記憶體控制電路單元與記憶體儲存裝置 | |
CN104679437A (zh) | 数据写入方法、存储器控制电路单元与存储器储存装置 | |
CN104699413A (zh) | 数据管理方法、存储器存储装置及存储器控制电路单元 | |
CN102999437B (zh) | 数据搬移方法、存储器控制器与存储器储存装置 | |
CN102592670B (zh) | 数据写入方法、存储器控制器与存储器储存装置 | |
CN102915273B (zh) | 数据写入方法、存储器控制器与存储器储存装置 | |
CN102866861B (zh) | 闪存储存系统、闪存控制器与数据写入方法 | |
CN102968385B (zh) | 数据写入方法、存储器控制器与储存装置 | |
CN102567221B (zh) | 数据管理方法、存储器控制器与存储器储存装置 | |
TWI448892B (zh) | 資料搬移方法、記憶體控制器與記憶體儲存裝置 | |
CN102446137B (zh) | 数据写入方法、存储器控制器与存储器储存装置 | |
CN104536906A (zh) | 数据写入方法、存储器控制器与存储器储存装置 | |
CN102890617B (zh) | 存储器控制方法、存储器控制器与存储器储存装置 | |
CN103678162A (zh) | 系统数据储存方法、存储器控制器与存储器储存装置 | |
CN102122233B (zh) | 区块管理与数据写入方法、闪存储存系统与控制器 | |
TWI414940B (zh) | 區塊管理與資料寫入方法、快閃記憶體儲存系統與控制器 | |
CN103513930A (zh) | 存储器管理方法、存储器控制器与存储器储存装置 | |
CN103365790B (zh) | 存储器控制器、存储装置与数据写入方法 | |
CN103377132B (zh) | 管理存储器空间的方法、存储器控制器与存储器储存装置 | |
CN104166558B (zh) | 固件码载入方法、存储器控制器与存储器存储装置 | |
CN102467459B (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 |