CN103544118B - 存储器储存装置、其存储器控制器与数据写入方法 - Google Patents
存储器储存装置、其存储器控制器与数据写入方法 Download PDFInfo
- Publication number
- CN103544118B CN103544118B CN201210247472.8A CN201210247472A CN103544118B CN 103544118 B CN103544118 B CN 103544118B CN 201210247472 A CN201210247472 A CN 201210247472A CN 103544118 B CN103544118 B CN 103544118B
- Authority
- CN
- China
- Prior art keywords
- data
- unit
- logic
- programming
- memory
- 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
Landscapes
- Read Only Memory (AREA)
Abstract
一种数据写入方法,此方法包括配置多个逻辑编程单元以映射可复写式非易失性存储器模块的部分物理编程单元,并将各逻辑编程单元划分为多个逻辑管理单元,各逻辑管理单元的大小等于主机***的基本存取单位。此方法包括自主机***接收第一数据,判断位于第一逻辑编程单元的第一数据的逻辑起始地址是否与第一逻辑编程单元的各逻辑管理单元的起始地址都不对齐及/或位于第一逻辑编程单元的第一数据的逻辑结束地址是否与第一逻辑编程单元的各逻辑管理单元的结束地址都不对齐。若是,使用大于基本存取单位的第二数据填补第一数据。
Description
技术领域
本发明是有关于一种数据写入方法,且特别是有关于一种用于可复写式非易失性存储器模块的数据写入方法及使用此方法的存储器储存装置与其存储器控制器。
背景技术
可复写式非易失性存储器(rewritable non-volatile memory)具有数据非易失性、省电、体积小与无机械结构等特性,故被广泛地应用于数字相机、手机与MP3等各种可携式电子装置。而固态硬盘就是一种以闪存作为储存媒体的储存装置。
一般来说,闪存储存装置的闪存模块会划分为多个物理区块,其中物理区块还划分为多个物理页面,而物理区块是闪存的抹除单位并且物理页面是闪存的写入单位。由于在编程闪存的存储单元时,仅能执行单向的编程(即,仅能将存储单元的值由1编程为0),因此无法对已编程的物理页面(即,存有旧数据的页面)直接进行写入,而是必须先将此物理页面抹除后方可重新编程。特别是,由于闪存的抹除是以物理区块为单位,因此当欲将存有旧数据的物理页面执行抹除运作时,必须对此物理页面所属的整个物理区块进行抹除。因此,闪存模块的物理区块会被区分为数据区与闲置区,其中数据区的物理区块是已被使用来储存数据的物理区块,而备用区中的物理区块是未被使用的物理区块,其中当主机***欲写入数据至闪存储存装置时,闪存储存装置的控制电路会从备用区中提取物理区块来写入数据,并且将所提取的物理区块会关联为数据区。并且,当数据区的物理区块被执行抹除运作(erase operation)后,已抹除的物理区块会被关联为备用区。
传统的闪存模块是以一个物理页面作为每次进行数据存取时的基本存取单位,然而时下主机***的基本存取单位可小于一个物理页面的容量。举例来说,倘若一个物理页面的容量为16千字节(Kilobyte,KB)且基本存取单位为4KB,当主机***接续下达写入指令且每笔数据为4KB时,闪存储存装置的控制器可将数据暂存在闪存模块的缓存单元,待主机***欲写入的数据已凑满16KB后,再将其一并编程至物理页面。据此可利用一个编程时间(program time)来处理四笔数据。
上述方式虽能提升数据写入的速度,然而若主机***欲一次读取出大量的数据,则可能因为数据散布在不同的物理页面,反而需要花费更多的时间来完成读取操作。
发明内容
有鉴于此,本发明提供一种数据写入方法、存储器控制器与存储器储存装置,能有效地提升后续进行数据读取的速度。
本发明提出一种数据写入方法,用于一可复写式非易失性存储器模块,此可复写式非易失性存储器模块具有多个物理抹除单元,且各物理抹除单元具有多个物理编程单元。此方法包括配置多个逻辑编程单元以映射可复写式非易失性存储器模块中的部分物理编程单元,并将每个逻辑编程单元划分为多个逻辑管理单元,其中各逻辑管理单元的大小等于主机***的基本存取单位的容量。此方法还包括接收来自主机***的第一数据,且第一数据是写入上述逻辑编程单元中的第一逻辑编程单元。此方法还包括判断第一数据的逻辑起始地址是否与第一逻辑编程单元的各逻辑管理单元的起始地址都不对齐及/或第一数据的逻辑结束地址是否与第一逻辑编程单元的各逻辑管理单元的结束地址都不对齐。若是,此方法还包括使用大于基本存取单位的第二数据来填补第一数据,据以产生写入数据并且将写入数据写入到至少其中一个物理编程单元。
从另一观点来看,本发明提出一种存储器控制器,用于具有可复写式非易失性存储器模块的存储器储存装置,此存储器控制器包括主机***接口、存储器接口,以及存储器管理电路。其中,主机***接口用以电性连接主机***。存储器接口用以电性连接可复写式非易失性存储器模块,其中可复写式非易失性存储器模块具有多个物理抹除单元,且每一物理抹除单元具有多个物理编程单元。存储器管理电路电性连接至主机***接口与存储器接口,用以配置多个逻辑编程单元以映射可复写式非易失性存储器模块中的部分物理编程单元,并将每一个逻辑编程单元划分为多个逻辑管理单元,其中各逻辑管理单元的大小等于主机***的基本存取单位的容量。存储器管理电路还用以接收来自主机***的第一数据,其中第一数据是写入上述逻辑编程单元中的第一逻辑编程单元。存储器管理电路还用以判断第一数据的逻辑起始地址是否与第一逻辑编程单元的各逻辑管理单元的起始地址都不对齐及/或第一数据的逻辑结束地址是否与第一逻辑编程单元的各逻辑管理单元的结束地址都不对齐。若是,存储器管理电路还用以使用大于基本存取单位的第二数据填补第一数据以产生写入数据,并且将写入数据写入到至少其中一个物理编程单元。
从又一观点来看,本发明提出一种存储器储存装置,其包括可复写式非易失性存储器模块、连接器以及存储器控制器。其中,可复写式非易失性存储器模块具有多个物理抹除单元,且每一物理抹除单元具有多个物理编程单元。连接器用以电性连接主机***。存储器控制器电性连接至可复写式非易失性存储器模块与连接器,用以配置多个逻辑编程单元以映射可复写式非易失性存储器模块中的部分物理编程单元,并将每个逻辑编程单元划分为多个逻辑管理单元,其中各逻辑管理单元的大小等于主机***的基本存取单位的容量。其中存储器控制器还用以接收来自主机***的第一数据,此第一数据是写入上述逻辑编程单元中的第一逻辑编程单元。其中存储器控制器还用以判断第一数据的逻辑起始地址是否与第一逻辑编程单元的各逻辑管理单元的起始地址都不对齐及/或第一数据的逻辑结束地址是否与第一逻辑编程单元的各逻辑管理单元的结束地址都不对齐。若是,存储器控制器还用以使用大于基本存取单位的第二数据填补第一数据以产生写入数据,并且将写入数据写入到至少其中一个物理编程单元。
基于上述,本发明范例实施例所示的数据写入方法、存储器控制器与存储器储存装置是在主机***欲写入没有对齐任何逻辑管理单元的起始与结束地址的数据时,利用大于主机***的基本存取单位的另一数据进行填补后再将其写入可复写式非易失性存储器模块。据此能提升后续从可复写式非易失性存储器模块中读出数据的速度。
为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合所附图式作详细说明如下。
附图说明
图1A是根据本发明一范例实施例绘示的使用存储器储存装置的主机***的示意图。
图1B是根据本发明范例实施例所绘示的计算机、输入/输出装置与存储器储存装置的示意图。
图1C是根据本发明另一范例实施例所绘示的主机***与存储器储存装置的示意图。
图2是绘示图1A所示的存储器储存装置的概要方块图。
图3是根据本发明一范例实施例绘示的存储器控制器的概要方块图。
图4、5是根据本发明的一范例实施例所绘示的管理复写式非易失性存储器模块的示意图。
图6是根据本发明的一范例实施例所绘示的逻辑编程单元的示意图。
图7、8、9、10是根据本发明的一范例实施例所绘示的写入第一数据的逻辑编程单元的示意图。
图11是根据本发明的一范例实施例所绘示的数据写入方法的流程图。
[主要元件标号说明]
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:可复写式非易失性存储器模块
1041:主机***接口 1043:存储器管理电路
1045:存储器接口 3002:错误检查与校正电路
3004:缓冲存储器 3006:电源管理电路
410(0)~410(N):物理抹除单元 502:数据区
504:闲置区 506:***区
508:取代区 610(0)~610(L):逻辑抹除单元
LP(0):逻辑编程单元 LSA(0)~LSA(31):逻辑扇区
LZ(0)~LZ(3):逻辑管理单元
S1110~S1170:本发明的一范例实施例所述的数据写入方法的各步骤
具体实施方式
一般而言,存储器储存装置(亦称,存储器储存***)包括可复写式非易失性存储器模块与控制器(亦称,控制电路)。通常存储器储存装置是与主机***一起使用,以使主机***可将数据写入至存储器储存装置或从存储器储存装置中读取数据。
图1A是根据本发明一范例实施例所绘示的使用存储器储存装置的主机***的示意图。
主机***1000包括计算机1100与输入/输出(Input/Output,I/O)装置1106。计算机1100包括微处理器1102、随机存取存储器(Random Access Memory,RAM)1104、***总线1108以及数据传输接口1110。输入/输出装置1106包括如图1B所示的鼠标1202、键盘1204、显示器1206与打印机1208。必须了解的是,图1B所示的装置非限制输入/输出装置1106,输入/输出装置1106可还包括其它装置。
在本发明范例实施例中,存储器储存装置100是通过数据传输接口1110与主机***1000的其它元件电性连接。通过微处理器1102、随机存取存储器1104以及输入/输出装置1106的运作,主机***1000可将数据写入至存储器储存装置100,或从存储器储存装置100中读取数据。例如,存储器储存装置100可以是如图1B所示的存储卡1214、随身盘1212、或固态硬盘(Solid State Drive,SSD)1216。
一般而言,主机***1000为可储存数据的任意***。虽然在本范例实施例中主机***1000是以计算机***来作说明,然而,在本发明另一范例实施例中,主机***1000亦可以是手机、数字相机、摄影机、通讯装置、音频播放器或视频播放器等***。例如,在主机***为数字相机1310时,存储器储存装置则为其所使用的安全数字(Secure Digital,SD)卡1312、多媒体存储(Multimedia Card,MMC)卡1314、存储棒(Memory Stick)1316、小型快闪(Compact Flash,CF)卡1318或嵌入式储存装置1320(如图1C所示)。嵌入式储存装置1320包括嵌入式多媒体卡(Embedded MMC,eMMC)。值得一提的是,嵌入式多媒体卡是直接电性连接于主机***的基板上。
图2是绘示图1A所示的存储器储存装置100的方块图。请参照图2,存储器储存装置100包括连接器102、存储器控制器104与可复写式非易失性存储器模块106。
连接器102电性连接至存储器控制器104,并且用以电性连接主机***1000。在本范例实施例中,连接器102所支持的传输接口种类为序列先进附件(Serial AdvancedTechnology Attachment,SATA)接口。然而在其它范例实施例中,连接器102的传输接口种类也可以是通用序列总线(Universal Serial Bus,USB)接口、多媒体储存卡(MultimediaCard,MMC)接口、平行先进附件(Parallel Advanced Technology Attachment,PATA)接口、电气和电子工程师协会(Institute of Electrical and Electronic Engineers,IEEE)1394接口、高速***零件连接接口(Peripheral Component Interconnect Express,PCIExpress)接口、安全数字(Secure Digital,SD)接口、存储棒(Memory Stick,MS)接口、小型快闪(Compact Flash,CF)接口,或集成驱动电子(Integrated Drive Electronics,IDE)接口等任何适用的接口,在此并不加以限制。
存储器控制器104会执行以硬件型式或固件型式实作的多个逻辑门或控制指令,并根据主机***1000的指令在可复写式非易失性存储器模块106中进行数据的写入、读取与抹除等运作。其中,存储器控制器104还特别用以根据本范例实施例的数据写入方法来处理主机***1000欲写入可复写式非易失性存储器模块106的数据。本范例实施例的数据写入方法将于后配合图示再作说明。
可复写式非易失性存储器模块106电性连接至存储器控制器104。可复写式非易失性存储器模块106为多阶存储单元(Multi Level Cell,MLC)NAND闪存模块,但本发明不限于此,可复写式非易失性存储器模块106也可以是单阶存储单元(Single Level Cell,SLC)NAND闪存模块、其它闪存模块或任何具有相同特性的存储器模块。进一步来说,可复写式非易失性存储器模块106包括多个物理抹除单元,而每一物理抹除单元具有多个物理编程单元。属于同一个物理抹除单元的物理编程单元可被独立地写入且被同时地抹除。也就是说,物理抹除单元为抹除的最小单位。亦即,每一物理抹除单元含有最小数目的一并被抹除的存储单元。物理编程单元为编程的最小单元。即,物理编程单元为写入数据的最小单元。在一范例实施例中,物理抹除单元为物理区块,而物理编程单元为物理页面或物理扇区,但本发明不以此为限。
图3是根据本发明一范例实施例所绘示的存储器控制器的概要方块图。请参照图3,存储器控制器104包括主机***接口1041、存储器管理电路1043,以及存储器接口1045。
主机***接口1041电性连接至存储器管理电路1043,并通过连接器102以电性连接主机***1000。主机***接口1041用以接收与识别主机***1000所传送的指令与数据。据此,主机***1000所传送的指令与数据会通过主机***接口1041而传送至存储器管理电路1043。在本范例实施例中,主机***接口1041对应连接器102而为SATA接口,而在其它范例实施例中,主机***接口1041也可以是USB接口、MMC接口、PATA接口、IEEE1394接口、PCIExpress接口、SD接口、MS接口、CF接口、IDE接口或符合其它接口标准的接口。
存储器管理电路1043用以控制存储器控制器104的整体运作。具体来说,存储器管理电路1043具有多个控制指令,在存储器储存装置100被运转(power on)时,上述控制指令会被执行以实现本范例实施例的数据写入方法。
在一范例实施例中,存储器管理电路1043的控制指令是以固件型式来实作。例如,存储器管理电路1043具有微处理器单元(未绘示)与只读存储器(未绘示),且上述控制指令是被烧录在只读存储器中。当存储器储存装置100运作时,上述控制指令会由微处理器单元来执行以完成本范例实施例的数据写入方法。
在本发明另一范例实施例中,存储器管理电路1043的控制指令亦可以程序码型式储存于可复写式非易失性存储器模块106的特定区域(例如,可复写式非易失性存储器模块106中专用于存放***数据的***区)中。此外,存储器管理电路1043具有微处理器单元(未绘示)、只读存储器(未绘示)及随机存取存储器(未绘示)。其中,只读存储器具有驱动码段,并且当存储器控制器104被致能时,微处理器单元会先执行此驱动码段来将储存于可复写式非易失性存储器模块106中的控制指令加载至存储器管理电路1043的随机存取存储器中。之后,微处理器单元会运转上述控制指令以执行本范例实施例的数据写入方法。
此外,在本发明另一范例实施例中,存储器管理电路1043的控制指令亦可以一硬件型式来实作。举例来说,存储器管理电路1043包括微控制器、存储器管理单元、存储器写入单元、存储器读取单元、存储器抹除单元与数据处理单元。存储器管理单元、存储器写入单元、存储器读取单元、存储器抹除单元与数据处理单元是电性连接至微控制器。其中,存储器管理单元用以管理可复写式非易失性存储器模块106中的物理抹除单元。存储器写入单元用以对可复写式非易失性存储器模块106下达写入指令以将数据写入至可复写式非易失性存储器模块106中。存储器读取单元用以对可复写式非易失性存储器模块106下达读取指令以从可复写式非易失性存储器模块106中读取数据。存储器抹除单元用以对可复写式非易失性存储器模块106下达抹除指令以将数据从可复写式非易失性存储器模块106中抹除。而数据处理单元用以处理欲写入至可复写式非易失性存储器模块106的数据以及从可复写式非易失性存储器模块106中读取的数据。
存储器接口1045电性连接至存储器管理电路1043,以使存储器控制器104与可复写式非易失性存储器模块106相电性连接。据此,存储器控制器104可对可复写式非易失性存储器模块106进行相关运作。也就是说,欲写入至可复写式非易失性存储器模块106的数据会经由存储器接口1045转换为可复写式非易失性存储器模块106所能接受的格式。
在本发明的另一范例实施例中,存储器控制器104还包括错误检查与校正电路3002。错误检查与校正电路3002电性连接至存储器管理电路1043,用以执行错误检查与校正程序以确保数据的正确性。具体而言,当存储器管理电路1043接收到来自主机***1000的写入指令时,错误检查与校正电路3002会为对应此写入指令的数据产生对应的错误检查与校正码(Error Checking and Correcting Code,ECC Code),且存储器管理电路1043会将对应此写入指令的数据与对应的错误检查与校正码写入至可复写式非易失性存储器模块106。之后当存储器管理电路1043从可复写式非易失性存储器模块106中读取数据时,会同时读取此数据对应的错误检查与校正码,且错误检查与校正电路3002会依据此错误检查与校正码对所读取的数据执行错误检查与校正程序,以识别该笔数据是否存在错误位。
在本发明的另一范例实施例中,存储器控制器104还包括缓冲存储器3004。缓冲存储器3004可以是静态随机存取存储器(Static Random Access Memory,SRAM)、或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等,本发明并不加以限制。缓冲存储器3004电性连接至存储器管理电路1043,用以暂存来自于主机***1000的指令与数据,或暂存来自于可复写式非易失性存储器模块106的数据。
在本发明又一范例实施例中,存储器控制器104还包括电源管理电路3006。电源管理电路3006电性连接至存储器管理电路1043,用以控制存储器储存装置100的电源。
图4、5是根据本发明的一范例实施例所绘示的管理可复写式非易失性存储器模块的示意图。
在以下描述可复写式非易失性存储器模块106的物理抹除单元的运作时,以“提取”、“交换”、“分组”、“轮替”等词来操作物理抹除单元是逻辑上的概念。也就是说,可复写式非易失性存储器模块106的物理抹除单元的实际位置并未更动,而是逻辑上对可复写式非易失性存储器模块106的物理抹除单元进行上述操作。
请参照图4,本范例实施例的可复写式非易失性存储器模块106包括物理抹除单元410(0)~410(N)。存储器控制器104中的存储器管理电路1043会将物理抹除单元410(0)~410(N)逻辑地分组为数据区502、闲置区504、***区506与取代区508。其中,图4所标示的F、S、R与N为正整数,代表各区配置的物理抹除单元数量,其可由存储器储存装置100的制造商依据所使用的可复写式非易失性存储器模块106的容量来设定。
逻辑上属于数据区502与闲置区504的物理抹除单元是用以储存来自于主机***1000的数据。举例来说,数据区502的物理抹除单元是被视为已储存数据的物理抹除单元,而闲置区504的物理抹除单元是用以写入新数据的物理抹除单元。换句话说,闲置区504的物理抹除单元为空或可使用的物理抹除单元(无记录数据或标记为已没用的无效数据)。当从主机***1000接收到写入指令与欲写入的数据时,存储器管理电路1043会从闲置区504中提取物理抹除单元,并且将数据写入至所提取的物理抹除单元中,以替换数据区502的物理抹除单元。或者,当需要对一逻辑抹除单元执行数据合并程序时,存储器管理电路1043会从闲置区504提取物理抹除单元并将数据写入其中,以替换原先映射此逻辑抹除单元的物理抹除单元。
逻辑上属于***区506的物理抹除单元是用以记录***数据。举例来说,***数据包括关于可复写式非易失性存储器模块106的制造商与型号、可复写式非易失性存储器模块106的物理抹除单元数、每一物理抹除单元的物理编程单元数等等。
逻辑上属于取代区508的物理抹除单元是用以在数据区502、闲置区504或***区506中的物理抹除单元损毁时,取代损坏的物理抹除单元。具体而言,在存储器储存装置100运作期间,倘若取代区508中仍存有正常的物理抹除单元且数据区502的物理抹除单元损坏时,存储器管理电路1043会从取代区508中提取正常的物理抹除单元来更换数据区502中损坏的物理抹除单元。倘若取代区508中无正常的物理抹除单元且发生物理抹除单元损毁时,则存储器管理电路1043会将整个存储器储存装置100宣告为写入保护(write protect)状态,而无法再写入数据。
也因此,在存储器储存装置100的运作过程中,数据区502、闲置区504、***区506与取代区508的物理抹除单元会动态地变动。例如,用以轮替储存数据的物理抹除单元会变动地属于数据区502或闲置区504。
请参照图5,为了让主机***1000能对可复写式非易失性存储器模块106进行存取,存储器管理电路1043会配置数个逻辑抹除单元610(0)~610(L)以映射数据区502中的物理抹除单元410(0)~410(F-1)。其中,每一逻辑抹除单元包括多个逻辑编程单元,而逻辑抹除单元610(0)~610(L)中的逻辑编程单元会映射物理抹除单元410(0)~410(F-1)中的物理编程单元。
详言之,存储器管理电路1043将所配置的逻辑抹除单元610(0)~610(L)提供给主机***1000,并维护逻辑地址-物理地址映射表以记录逻辑抹除单元610(0)~610(L)与物理抹除单元410(0)~410(F-1)的映射关系。因此,当主机***1000欲存取一逻辑地址时,存储器管理电路1043会确认此逻辑地址所对应的逻辑抹除单元与逻辑编程单元,再通过逻辑地址-物理地址映射表找到其所映射的物理编程单元来进行存取。
在本范例实施例中,存储器管理电路1043所配置的每一逻辑编程单元是由数个逻辑扇区(sector)所组成,这些逻辑扇区与所属的逻辑编程单元对应的物理编程单元中的物理扇区相互对应。存储器管理电路1043会将上述逻辑扇区划分为数个逻辑管理单元,其中每一逻辑管理单元的大小等于主机***1000的基本存取单位的容量。
举例来说,假设每一逻辑编程单元具有32个逻辑扇区,由于每个逻辑扇区的大小为512字节,因此每一逻辑编程单元的容量为16千字节(Kilobyte,KB)。而倘若主机***1000的基本存取单位为4千字节,则存储器管理电路1043会将每一逻辑编程单元划分为4个逻辑管理单元。
以图6所示的逻辑编程单元LP(0)为例,逻辑编程单元LP(0)具有逻辑扇区LSA(0)~LSA(31),存储器管理电路1043将逻辑扇区LSA(0)~LSA(7)划分为第一逻辑管理单元LZ(0)、将逻辑扇区LSA(8)~LSA(15)划分为第二逻辑管理单元LZ(1)、将逻辑扇区LSA(16)~LSA(23)划分为第三逻辑管理单元LZ(2),并且将逻辑扇区LSA(24)~LSA(31)划分为第四逻辑管理单元LZ(3)。其中,第一逻辑管理单元LZ(0)的起始地址为第0字节,而结束地址为第4千字节。第二逻辑管理单元LZ(1)的起始地址为第4千字节,而结束地址为第8千字节。第三逻辑管理单元LZ(2)的起始地址为第8千字节,而结束地址为第12千字节。第四逻辑管理单元LZ(3)的起始地址为第12千字节,而结束地址为第16千字节。
由于每一逻辑管理单元的大小与基本存取单位的容量相同,而可复写式非易失性存储器模块106的编程必须以物理编程单元为单位,故在图6所示的范例实施例中,逻辑编程单元LP(0)包括四个基本存取单位,表示可复写式非易失性存储器模块106中的每一物理编程单元的至多可放置四笔不同逻辑地址的数据。
在主机***1000欲将数据写入可复写式非易失性存储器模块106时,倘若欲写入的数据量不大时,代表主机***1000可能是单纯要将零散的小数据写入可复写式非易失性存储器模块106,或是要对已记录在可复写式非易失性存储器模块106的连续数据进行部分内容的更新。若是后者的情况,主机***1000往后一次性地将这笔连续数据读出的机会甚高。然而,因基本存取单位小于一个逻辑编程单元的容量,因此在对某笔连续数据的不同地址进行数次更新后,该笔连续数据可能会被分散储存在不同的物理编程单元中,此会造成日后主机***1000要完整读出该笔数据时,存储器管理电路1043必需花费数倍的忙碌时间(busy time)才能把数据完整读出。详言之,存储器管理电路1043每对一个物理编程单元进行读取时,可复写式非易失性存储器模块106便会进入一忙碌状态,此状态下存储器管理电路1043无法对可复写式非易失性存储器模块106下达其它指令或进行额外的操作,而处于忙碌状态的时间即为忙碌时间。以图6所示的架构为例,若主机***1000要读取一笔连续且大小为16千字节的数据,存储器管理电路1043至多必须对4个不同的物理编程单元进行读取才能取得完整的数据,因此需要4倍的忙碌时间才能完成主机***1000下达的一个读取指令。
为了避免更新数据与旧有效数据分别被储存在不同的物理编程单元而降低日后的读取速度,存储器管理电路1043会通过填补数据的方式来提高物理编程单元中的数据连续性。
详细地说,当存储器储存装置100接收到主机***1000欲写入至可复写式非易失性存储器模块106的数据(以下称为第一数据)时,存储器管理电路1043会判断第一数据的逻辑起始地址是否与所写入的逻辑编程单元中各个逻辑管理单元的起始地址都不对齐,存储器管理电路1043还会判断第一数据的逻辑结束地址是否与所写入的逻辑编程单元中各个逻辑管理单元的结束地址都不对齐。若逻辑起始地址没有对齐其中某个逻辑管理单元的起始地址及/或逻辑结束地址没有对齐其中某个逻辑管理单元的结束地址,则存储器管理电路1043会使用大于基本存取单位的另一数据(以下称为第二数据)来填补第一数据以产生一写入数据,并且将写入数据写入可复写式非易失性存储器模块106。换言之,在前述条件成立的情况下,主机***1000原本欲写入的第一数据会在被填补一个大于基本存取单位的第二数据后,才被写入可复写式非易失性存储器模块106。
以下将以数个范例实施例说明当主机***1000欲将第一数据写入图6的逻辑编程单元LP(0)时,存储器管理电路1043是否会对第一数据进行填补。
请参阅图7,在本范例实施例中假设第一数据是写入至逻辑扇区LSA(3)~LSA(6),由于第一数据的逻辑起始地址与逻辑管理单元LZ(0)~LZ(3)个别的起始地址都不对齐,且第一数据的逻辑结束地址与逻辑管理单元LZ(0)~LZ(3)个别的结束地址也都不对齐,因此存储器管理电路1043会使用第二数据来填补第一数据以产生写入数据。
请参阅图8,在本范例实施例中,第一数据是写入至逻辑扇区LSA(5)~LSA(15)。虽然第一数据的逻辑结束地址对齐逻辑管理单元LZ(1)的结束地址,然而由于第一数据的逻辑起始地址与逻辑管理单元LZ(0)~LZ(3)个别的起始地址都不对齐,因此存储器管理电路1043仍会使用第二数据来填补第一数据以产生写入数据。在另一范例实施例中,倘若第一数据的逻辑起始地址有对齐某一逻辑管理单元(例如,逻辑管理单元LZ(2))的起始地址,但若第一数据的逻辑结束地址与逻辑管理单元LZ(0)~LZ(3)个别的结束地址都不对齐,存储器管理电路1043亦会使用第二数据填补第一数据以产生写入数据。
而在图9所示的范例实施例中,第一数据是写入至逻辑扇区LSA(0)~LSA(7)。由于第一数据的逻辑起始地址与逻辑结束地址分别对齐了逻辑管理单元LZ(0)的起始地址以及结束地址,因此存储器管理电路1043将不对第一数据进行填补动作,而直接以第一数据作为准备写入可复写式非易失性存储器模块106的写入数据。
在一范例实施例中,存储器管理电路1043用来填补第一数据的第二数据是储存在第一数据所属的逻辑编程单元所映射的物理编程单元中。基此,存储器管理电路1043在根据逻辑地址-物理地址映射表找出第一数据所属的逻辑编程单元LP(0)所对应的物理编程单元PP(0)后,便会自物理编程单元PP(0)预读取(pre-read)出第二数据。
举例来说,当存储器管理电路1043要将第一数据填补为符合一个物理编程单元的容量(即,写入数据的数据量等于一个物理编程单元的容量)时,第二数据则为物理编程单元PP(0)中不对应第一数据所写入的逻辑扇区的其它物理扇区中的数据。例如,假设图6的逻辑编程单元LP(0)中的逻辑扇区LSA(0)~LSA(31)是对应物理编程单元PP(0)中的物理扇区PSA(0)~PSA(31),那么在图7所示的范例实施例中,第二数据为物理编程单元PP(0)的物理扇区PSA(0)~PSA(2)、PSA(7)~PSA(31)中的数据。而在图8所示的范例实施例中,第二数据为物理编程单元PP(0)的物理扇区PSA(0)~PSA(4)、PSA(16)~PSA(31)中的数据。将第一数据以此方式填补后再写入一物理编程单元,则可以确保在主机***1000要对包含此数据的一整段连续地址进行读取时,能一次性地读取出连续数据,而不再需要对数个物理编程单元进行读取。
值得一提的是,在另一范例实施例中,写入数据的数据量也可以略小于一个物理编程单元的容量。例如,当写入数据的数据量为一个物理编程单元的四分之三容量时,图7所示的范例实施例中,存储器管理电路1043例如会预读取物理编程单元PP(0)的物理扇区PSA(0)~PSA(2)、PSA(7)~PSA(23)中的数据来作为第二数据。而在图8所示的范例实施例中,存储器管理电路1043例如会预读取物理编程单元PP(0)的物理扇区PSA(0)~PSA(4)、PSA(16)~PSA(23)中的数据来作为第二数据。
在又一范例实施例中,写入数据的数据量也可以超过一个物理编程单元的容量,例如可为两个物理编程单元的容量。本发明的写入数据的大小并不局限于上述范例实施例,换言之,只要所填补的第二数据的数据量大于基本存取单位,即属于本发明的范畴。
另外,当主机***1000欲将一笔连续数据写入可复写式非易失性存储器模块106,日后再将此笔连续数据整体读取出的机率相当高,基此,在本发明的另一范例实施例中,在接收来自主机***1000的第一数据后,存储器管理电路1043会判断第一数据是否为连续数据。若为连续数据,则不论第一数据的逻辑起始地址与逻辑结束地址是否有对齐任何逻辑管理单元的起始与结束地址,存储器管理电路1043都将利用大于基本存取单位的第二数据填补第一数据以产生写入数据。
举例来说,存储器管理电路1043可通过比较第一数据的数据量是否到达一数据量门坎值来判断第一数据是否为连续数据。若数据量到达数据量门坎值,存储器管理电路1043判定第一数据为连续数据。为了方便说明,假设数据量门坎值为基本存取单位的容量的两倍。在图10所示的范例实施例中,第一数据是写入逻辑编程单元LP(0)的逻辑扇区LSA(16)~LSA(31),由于其数据量为基本存取单位的容量的两倍,因此会被判定为连续数据。在此情况下,即便第一数据的逻辑起始地址对齐逻辑管理单元LZ(2)的起始地址,且第一数据的逻辑结束地址对齐逻辑管理单元LZ(3)的结束地址,存储器管理电路1043仍会利用一个大于基本存取单位的第二数据来填补第一数据,以产生准备写入可复写式非易失性存储器模块106的写入数据。其中,第二数据例如是逻辑编程单元LP(0)所映射的物理编程单元PP(0)中的物理扇区PSA(0)~PSA(15)的数据。另外,倘若第一数据是写入逻辑编程单元LP(0)的逻辑扇区LSA(8)~LSA(23),存储器管理电路1043会以物理编程单元PP(0)的物理扇区PSA(0)~PSA(7)以及PSA(24)~PSA(31)的数据来作为第二数据。在本范例实施例中,是以将第一数据补满至一个物理编程单元的容量为目标来预读取出第二数据,亦即,写入数据的数据量会等于一个物理编程单元的容量。然而第二数据的数据量并不以此为限,只要大于基本存取单位则属于本发明的第二数据的范畴。
在本发明的又一范例实施例中,在接收来自主机***1000的第一数据后,存储器管理电路1043判断可复写式非易失性存储器模块106的已使用容量是否超过一使用量门坎值。当已使用容量超过使用量门坎值,表示存储器储存装置100已快存满数据,而使用者可能很快会将存储器储存装置100中的数据读出并备份至其它储存装置。故在此情况下,存储器管理电路1043会直接使用第二数据填补第一数据以产生写入数据。亦即,无论第一数据的逻辑起始地址与逻辑结束地址是否有对齐任何逻辑管理单元的起始与结束地址,存储器管理电路1043都会对其进行填补动作。据此提升后续进行读取操作的速度。
图11是根据本发明的一范例实施例所绘示的数据写入方法的流程图。
请参阅图11,首先如步骤S1110所示,存储器管理电路1043配置多个逻辑编程单元以映射可复写式非易失性存储器模块106中的部分物理编程单元,并将每个逻辑编程单元划分为多个逻辑管理单元。
接着在步骤S1120中,存储器管理电路1043接收来自主机***1000的第一数据,且第一数据是写入第一逻辑编程单元。
如步骤S1130所示,存储器管理电路1043判断位于第一逻辑编程单元的第一数据的逻辑起始地址是否与各逻辑管理单元的起始地址都不对齐及/或位于第一逻辑编程单元的第一数据的逻辑结束地址是否与各逻辑管理单元的结束地址都不对齐。
若步骤S1130的判断结果为是,则在步骤S1140中,存储器管理电路1043使用大于基本存取单位的第二数据填补第一数据以产生写入数据。
而倘若步骤S1130的判断结果为否,则如步骤S1145所示,存储器管理电路1043直接以第一数据作为写入数据。须说明的是,倘若第一数据小于一个物理编程单元,则存储器管理电路1043会将其填补至等于物理编程单元的大小后再作为写入数据。
由于可复写式非易失性存储器模块106的编程必须以物理编程单元为单位,因此在步骤S1150中,存储器管理电路1043判断写入数据的数据量是否等于一个物理编程单元的容量。
若写入数据的数据量未达一物理编程单元的容量,则如步骤S1160所示,存储器管理电路1043将写入数据暂存在缓冲存储器3004,并等待主机***1000下达其它写入指令而使得缓冲存储器3004中的数据量到达一物理编程单元的容量时,再将缓冲存储器3004中的数据实际写入至可复写式非易失性存储器模块106。
然而,倘若写入数据的数据量本身已达一个物理编程单元的容量,则如步骤S1170所示,存储器管理电路1043将写入数据写入至物理编程单元。
综上所述,本发明所述的数据写入方法、存储器储存装置及存储器控制器能在主机***欲写入数据时,判断数据的逻辑起始与结束地址是否与所属逻辑编程单位中各逻辑管理单元的起始与结束地址都不对齐。若都不对齐,则从可复写式非易失性存储器模块中预读取出大于基本存取单位的数据来进行填补,之后再写入可复写式非易失性存储器模块。据此确保写入物理编程单元的数据的连续性,从而有效提升往后读取数据的速度。
虽然本发明已以实施例揭露如上,然其并非用以限定本发明,任何所属技术领域中具有通常知识者,在不脱离本发明的精神和范围内,当可作些许的更动与润饰,故本发明的保护范围当视所附的权利要求范围所界定者为准。
Claims (18)
1.一种数据写入方法,用于一可复写式非易失性存储器模块,该可复写式非易失性存储器模块具有多个物理抹除单元,且各该些物理抹除单元具有多个物理编程单元,该方法包括:
配置多个逻辑编程单元以映射该可复写式非易失性存储器模块中的部分物理编程单元,并将各该些逻辑编程单元划分为多个逻辑管理单元,其中各该些逻辑管理单元的大小等于一主机***的一基本存取单位的容量;
接收来自该主机***的一第一数据,且该第一数据是写入该些逻辑编程单元中的一第一逻辑编程单元;
判断该第一数据的一逻辑起始地址是否与该第一逻辑编程单元的各该些逻辑管理单元的一起始地址都不对齐及/或该第一数据的一逻辑结束地址是否与该第一逻辑编程单元的各该些逻辑管理单元的一结束地址都不对齐;
若是,则使用大于该基本存取单位的一第二数据填补该第一数据以产生一写入数据;以及
将该写入数据写入至该些物理编程单元中的一个物理编程单元。
2.根据权利要求1所述的数据写入方法,其中在接收来自该主机***的该第一数据的步骤之后,还包括:
判断该第一数据是否为连续数据;以及
当该第一数据为连续数据时,则直接执行使用该第二数据填补该第一数据以产生该写入数据的步骤。
3.根据权利要求2所述的数据写入方法,其中判断该第一数据是否为连续数据的步骤包括:
当该第一数据的数据量到达一数据量门坎值时,则判定该第一数据为连续数据。
4.根据权利要求1所述的数据写入方法,其中在接收来自该主机***的该第一数据的步骤之后,还包括:
判断该可复写式非易失性存储器模块的一已使用容量是否超过一使用量门坎值;以及
当该已使用容量超过该使用量门坎值时,则直接执行使用该第二数据填补该第一数据以产生该写入数据的步骤。
5.根据权利要求1所述的数据写入方法,其中该第二数据是预读取自该第一逻辑编程单元所映射的物理编程单元。
6.根据权利要求1所述的数据写入方法,其中该写入数据的数据量等于一个物理编程单元的容量。
7.一种存储器控制器,用于具有一可复写式非易失性存储器模块的一存储器储存装置,该存储器控制器包括:
一主机***接口,用以电性连接一主机***;
一存储器接口,用以电性连接该可复写式非易失性存储器模块,其中该可复写式非易失性存储器模块具有多个物理抹除单元,且各该些物理抹除单元具有多个物理编程单元;以及
一存储器管理电路,电性连接至该主机***接口与该存储器接口,用以配置多个逻辑编程单元以映射该可复写式非易失性存储器模块中的部分物理编程单元,并将各该些逻辑编程单元划分为多个逻辑管理单元,其中各该些逻辑管理单元的大小等于该主机***的一基本存取单位的容量,
其中该存储器管理电路还用以接收来自该主机***的一第一数据,其中该第一数据是写入该些逻辑编程单元中的一第一逻辑编程单元,
其中该存储器管理电路还用以判断该第一数据的一逻辑起始地址是否与该第一逻辑编程单元的各该些逻辑管理单元的一起始地址都不对齐及/或该第一数据的一逻辑结束地址是否与该第一逻辑编程单元的各该些逻辑管理单元的一结束地址都不对齐,
若是,该存储器管理电路还用以使用大于该基本存取单位的一第二数据填补该第一数据以产生一写入数据,并且将该写入数据写入至该些物理编程单元中的一个物理编程单元。
8.根据权利要求7所述的存储器控制器,其中该存储器管理电路还用以在接收来自该主机***的该第一数据后,判断该第一数据是否为连续数据,
当该第一数据为连续数据时,该存储器管理电路还用以直接使用该第二数据填补该第一数据以产生该写入数据。
9.根据权利要求8所述的存储器控制器,其中当该第一数据的数据量到达一数据量门坎值时,该存储器管理电路判定该第一数据为连续数据。
10.根据权利要求7所述的存储器控制器,其中该存储器管理电路还用以在接收来自该主机***的该第一数据后,判断该可复写式非易失性存储器模块的一已使用容量是否超过一使用量门坎值,
当该已使用容量超过该使用量门坎值时,该存储器管理电路还用以直接使用该第二数据填补该第一数据以产生该写入数据。
11.根据权利要求7所述的存储器控制器,其中该第二数据是预读取自该第一逻辑编程单元所映射的物理编程单元。
12.根据权利要求7所述的存储器控制器,其中该写入数据的数据量等于一个物理编程单元的容量。
13.一种存储器储存装置,包括:
一可复写式非易失性存储器模块,该可复写式非易失性存储器模块具有多个物理抹除单元,且各该些物理抹除单元具有多个物理编程单元;
一连接器,用以电性连接一主机***;以及
一存储器控制器,电性连接至该可复写式非易失性存储器模块与该连接器,用以配置多个逻辑编程单元以映射该可复写式非易失性存储器模块中的部分物理编程单元,并将各该些逻辑编程单元划分为多个逻辑管理单元,其中各该些逻辑管理单元的大小等于该主机***的一基本存取单位的容量,
其中该存储器控制器还用以接收来自该主机***的一第一数据,其中该第一数据是写入该些逻辑编程单元中的一第一逻辑编程单元,
其中该存储器控制器还用以判断该第一数据的一逻辑起始地址是否与该第一逻辑编程单元的各该些逻辑管理单元的一起始地址都不对齐及/或该第一数据的一逻辑结束地址是否与该第一逻辑编程单元的各该些逻辑管理单元的一结束地址都不对齐,
若是,该存储器控制器还用以使用大于该基本存取单位的一第二数据填补该第一数据以产生一写入数据,并且将该写入数据写入至该些物理编程单元中的一个物理编程单元。
14.根据权利要求13所述的存储器储存装置,其中该存储器控制器还用以在接收来自该主机***的该第一数据后,判断该第一数据是否为连续数据,
当该第一数据为连续数据时,该存储器控制器还用以直接使用该第二数据填补该第一数据以产生该写入数据。
15.根据权利要求14所述的存储器储存装置,其中当该第一数据的数据量到达一数据量门坎值时,该存储器控制器判定该第一数据为连续数据。
16.根据权利要求13所述的存储器储存装置,其中该存储器控制器还用以在接收来自该主机***的该第一数据后,判断该可复写式非易失性存储器模块的一已使用容量是否超过一使用量门坎值,
当该已使用容量超过该使用量门坎值时,该存储器控制器还用以直接使用该第二数据填补该第一数据以产生该写入数据。
17.根据权利要求13所述的存储器储存装置,其中该第二数据是预读取自该第一逻辑编程单元所映射的物理编程单元。
18.根据权利要求13所述的存储器储存装置,其中该写入数据的数据量等于一个物理编程单元的容量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210247472.8A CN103544118B (zh) | 2012-07-17 | 2012-07-17 | 存储器储存装置、其存储器控制器与数据写入方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210247472.8A CN103544118B (zh) | 2012-07-17 | 2012-07-17 | 存储器储存装置、其存储器控制器与数据写入方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103544118A CN103544118A (zh) | 2014-01-29 |
CN103544118B true CN103544118B (zh) | 2016-09-14 |
Family
ID=49967590
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210247472.8A Active CN103544118B (zh) | 2012-07-17 | 2012-07-17 | 存储器储存装置、其存储器控制器与数据写入方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103544118B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9823880B1 (en) * | 2016-09-30 | 2017-11-21 | Intel Corporation | Method and apparatus for initiating pre-read operation before completion of data load operation |
CN106843748A (zh) * | 2016-11-28 | 2017-06-13 | 北京握奇智能科技有限公司 | 一种提高数据写入移动存储设备速度的方法和*** |
KR102349381B1 (ko) * | 2017-05-17 | 2022-01-13 | 에스케이하이닉스 주식회사 | 데이터 저장 장치 및 그것의 동작 방법 |
CN110286846B (zh) * | 2018-03-19 | 2023-03-14 | 深圳大心电子科技有限公司 | 数据移动方法及储存控制器 |
CN109271174A (zh) * | 2018-08-01 | 2019-01-25 | 广州市星翼电子科技有限公司 | 一种单片机多个固件分散烧录方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1704479B1 (en) * | 2003-12-30 | 2014-03-26 | SanDisk Technologies Inc. | Non-volatile memory and method with phased program failure handling |
US7395404B2 (en) * | 2004-12-16 | 2008-07-01 | Sandisk Corporation | Cluster auto-alignment for storing addressable data packets in a non-volatile memory array |
KR100923990B1 (ko) * | 2007-02-13 | 2009-10-28 | 삼성전자주식회사 | 플래시 저장 장치의 특성을 기반으로 한 컴퓨팅 시스템 |
KR101638061B1 (ko) * | 2009-10-27 | 2016-07-08 | 삼성전자주식회사 | 플래시 메모리 시스템 및 그것의 플래시 조각 모음 방법 |
-
2012
- 2012-07-17 CN CN201210247472.8A patent/CN103544118B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN103544118A (zh) | 2014-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104699413B (zh) | 数据管理方法、存储器存储装置及存储器控制电路单元 | |
CN104679437B (zh) | 数据写入方法、存储器控制电路单元与存储器储存装置 | |
CN107844431A (zh) | 映射表更新方法、存储器控制电路单元与存储器存储装置 | |
CN106557432B (zh) | 缓冲存储器管理方法、存储器控制电路单元及存储装置 | |
CN103377143B (zh) | 存储器管理方法、存储器控制器与存储器存储装置 | |
CN106681654A (zh) | 映射表载入方法与存储器存储装置 | |
CN104636267B (zh) | 存储器控制方法、存储器存储装置与存储器控制电路单元 | |
CN106681932A (zh) | 存储器管理方法、存储器控制电路单元及存储器存储装置 | |
CN106776376A (zh) | 缓冲存储器管理方法、存储器控制电路单元及存储装置 | |
CN106484307B (zh) | 存储器管理方法、存储器控制电路单元及存储器存储装置 | |
CN103377129A (zh) | 数据写入方法、存储器控制器与存储器储存装置 | |
CN106681652A (zh) | 存储器管理方法、存储器控制电路单元与存储器存储装置 | |
CN103544118B (zh) | 存储器储存装置、其存储器控制器与数据写入方法 | |
CN102902626B (zh) | 区块管理方法、存储器控制器与存储器储存装置 | |
CN103136111B (zh) | 数据写入方法、存储器控制器与存储器储存装置 | |
CN103577344B (zh) | 数据写入方法、存储器控制器与存储器储存装置 | |
CN102129353B (zh) | 数据写入***与数据写入方法 | |
CN105224238B (zh) | 存储器管理方法、存储器存储装置及存储器控制电路单元 | |
CN103914391B (zh) | 数据读取方法、存储器控制器与存储器存储装置 | |
CN104731710B (zh) | 存储器管理方法、存储器控制电路单元与存储器储存装置 | |
CN104252600B (zh) | 数据保护方法、存储器控制器与存储器储存装置 | |
CN104657083B (zh) | 数据写入方法、存储器储存装置、存储器控制电路单元 | |
CN106445397B (zh) | 存储器管理方法、存储器控制电路单元及存储器存储装置 | |
CN110471612A (zh) | 存储器管理方法以及存储控制器 | |
CN106648443B (zh) | 有效数据合并方法、存储器控制器与存储器存储装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |