存储器、其存储控制器与数据写入方法

文档序号:6492341阅读:196来源:国知局
存储器、其存储控制器与数据写入方法【专利摘要】本发明提供一种存储器、其存储控制器与数据写入方法;该数据写入方法,用于包括缓冲存储器与可复写式非易失性存储器模块的存储器。此方法包括接收多组数据,其中这多组数据包含一第一类数据及至少一第二类数据,其中第一类数据的容量小于数据量临界值。此方法还包括将这多组数据暂存于缓冲存储器,当判断这多组数据符合预定条件后,将暂存于缓冲存储器的第一类数据及至少部分第二类数据同时编程至实体编程单元组,此实体编程单元组是由n个实体编程单元所组成,n为正整数。此方法还包括同时得知第一类数据及至少部分第二类数据的写入状态。【专利说明】存储器、其存储控制器与数据写入方法【
技术领域
】[0001]本发明是有关于一种数据写入方法,且特别是有关于一种用于可复写式非易失性存储器模块的存储器、其存储控制器与数据写入方法。【
背景技术
】[0002]可复写式非易失性存储器(rewritablenon-volatilememory)具有数据非易失性、省电、体积小与无机械结构等特性,故被广泛地应用于数码相机、手机与MP3等各种可携式电子装置。而固态硬盘就是一种以闪存做为储存媒体的储存装置。[0003]一般来说,闪存的闪存模块会划分为多个实体块,其中实体块还划分为多个实体页面,而实体块是闪存的擦除单位并且实体页面是闪存的写入单位。由于在编程闪存的存储单元时,仅能执行单向的编程(即,仅能将存储单元的值由I编程为O),因此无法对已编程的实体页面(即,存有旧数据的页面)直接进行写入,而是必须先将此实体页面擦除后方可重新编程。特别是,由于闪存的擦除是以实体块为单位,因此当欲将存有旧数据的实体页面执行擦除操作时,必须对此实体页面所属的整个实体块进行擦除。因此,闪存模块的实体块会被区分为数据区与闲置区,其中数据区的实体块是已被使用来储存数据的实体块,而备用区中的实体块是未被使用的实体块,其中当主机系统欲写入数据至闪存时,闪存的控制电路会从备用区中提取实体块来写入数据,并且将所提取的实体块会关联为数据区。并且,当数据区的实体块被执行擦除操作(eraseoperation)后,已擦除的实体块会被关联为备用区。[0004]基于上述架构,对于采用闪存做为储存媒体并需要保障数据安全写入的应用来说,在处理每一个来自主机系统的写入指令时,为了使写入数据与实体页面对齐,往往需要从闪存读出旧有效数据来填补写入数据,并且在将数据编程至闪存后,将表示写入动作完成与否的信息传送回主机系统。进一步来说,就须确保数据安全写入的应用而言,需针对编程结果回传信息以让主机系统掌握数据写入的状态。不难想见,倘若主机系统连续下达数个写入指令,便必须针对每个写入指令执行上述程序,而由于每个写入指令都需耗费相当的编程时间(programtime),因此难以在数据安全写入的机制下提升写入速度。【
发明内容】[0005]有鉴于此,本发明提供一种存储器、其存储控制器与数据写入方法,能在提升写入速度之余,保障数据被安全写入存储器。[0006]本发明提出一种数据写入方法,用于存储器,此存储器包括缓冲存储器与可复写式非易失性存储器模块,而可复写式非易失性存储器模块具有多个实体擦除单元,且各实体擦除单元具有多个实体编程单元。此方法包括接收多组数据,其中这多组数据包含一第一类数据及至少一第二类数据,其中第一类数据的容量小于数据量临界值。此方法还包括将这多组数据暂存于缓冲存储器,当判断这多组数据符合预定条件后,将暂存于缓冲存储器的第一类数据及至少部分第二类数据同时编程至实体编程单元组,此实体编程单元组是由η个实体编程单元所组成,η为正整数。此方法还包括同时得知第一类数据及至少部分第二类数据的写入状态。[0007]在本发明的一实施例中,其中当暂存在缓冲存储器的多组数据的数据量到达实体编程单元组的容量时,判定多组数据符合预定条件。[0008]在本发明的一实施例中,其中当存储器未接收到其他数据的时间超过时间临界值时,判定多组数据符合预定条件。[0009]在本发明的一实施例中,其中各实体编程单元包括数据记录区与可用冗余区,而将暂存于缓冲存储器的第一类数据及至少部分第二类数据同时编程至实体编程单元组的步骤包括将第一类数据及至少部分第二类数据写入至组成实体编程单元组的η个实体编程单元的数据记录区,并且将第一类数据及至少部分第二类数据所个别对应的逻辑存取地址及扇区数量写入至组成实体编程单元组的η个实体编程单元的可用冗余区。[0010]在本发明的一实施例中,此数据写入方法还包括维护对应表,以记录被编程至实体编程单元组的第一类数据及至少部分第二类数据所个别对应的逻辑存取地址及扇区数量与实体编程单元组的对应关系,以及将对应表写入至所有实体擦除单元中的一特定实体擦除单元,其中特定实体擦除单元所具有的实体编程单元均不属于实体编程单元组。[0011]在本发明的一实施例中,其中第一类数据及至少部分第二类数据的写入状态被一并回复给发出多组数据的主机系统。[0012]本发明提出一种存储控制器,以管理可复写式非易失性存储器模块,此存储控制器包括主机系统接口、存储器接口、缓冲存储器,以及存储器管理电路。其中主机系统接口用以电连接主机系统。存储器接口用以电连接可复写式非易失性存储器模块,其中可复写式非易失性存储器模块具有多个实体擦除单元,且各实体擦除单元具有多个实体编程单元。存储器管理电路电连接至主机系统接口、存储器接口以及缓冲存储器。其中存储器管理电路接收多组数据,这多组数据包含一第一类数据及至少一第二类数据,其中第一类数据的容量小于数据量临界值。存储器管理电路将这多组数据暂存于缓冲存储器,当判断这多组数据符合预定条件后,将暂存于缓冲存储器的第一类数据及至少部分第二类数据同时编程至实体编程单元组,此实体编程单元组是由η个实体编程单元所组成,η为正整数。存储器管理电路同时得知第一类数据及至少部分第二类数据的写入状态。[0013]在本发明的一实施例中,其中当暂存在缓冲存储器的多组数据的数据量到达实体编程单元组的容量时,存储器管理电路判定多组数据符合预定条件。[0014]在本发明的一实施例中,其中当存储器管理电路未接收到其他数据的时间超过时间临界值时,存储器管理电路判定多组数据符合预定条件。[0015]在本发明的一实施例中,其中各实体编程单元包括数据记录区与可用冗余区,而存储器管理电路在将第一类数据及至少部分第二类数据同时编程至实体编程单元组时,将第一类数据及至少部分第二类数据写入至组成实体编程单元组的η个实体编程单元的数据记录区,并且将第一类数据及至少部分第二类数据所个别对应的逻辑存取地址及扇区数量写入至组成实体编程单元组的η个实体编程单元的可用冗余区。[0016]在本发明的一实施例中,其中存储器管理电路还用以维护对应表,以记录被编程至实体编程单元组的第一类数据及至少部分第二类数据所个别对应的逻辑存取地址及扇区数量与实体编程单元组的对应关系,并将对应表写入至所有实体擦除单元中的一特定实体擦除单元,其中特定实体擦除单元所具有的实体编程单元均不属于实体编程单元组。[0017]在本发明的一实施例中,其中第一类数据及至少部分第二类数据的写入状态被一并回复给发出多组数据的主机系统。[0018]本发明提出一种存储器,包括可复写式非易失性存储器模块、连接器,以及存储控制器。其中可复写式非易失性存储器模块包括多个实体擦除单元,且各实体擦除单元具有多个实体编程单元。连接器用以电连接主机系统。存储控制器电连接至可复写式非易失性存储器模块与连接器,且存储控制器包括缓冲存储器。存储控制器接收多组数据,这多组数据包含一第一类数据及至少一第二类数据,其中第一类数据的容量小于数据量临界值。存储控制器将这多组数据暂存于缓冲存储器,当判断这多组数据符合预定条件后,将暂存于缓冲存储器的第一类数据及至少部分第二类数据同时编程至实体编程单元组,此实体编程单元组是由η个实体编程单元所组成,η为正整数。存储控制器同时得知第一类数据及至少部分第二类数据的写入状态。[0019]在本发明的一实施例中,其中当暂存在缓冲存储器的多组数据的数据量到达实体编程单元组的容量时,存储控制器判定多组数据符合预定条件。[0020]在本发明的一实施例中,其中当存储控制器未接收到其他数据的时间超过时间临界值时,存储控制器判定多组数据符合预定条件。[0021]在本发明的一实施例中,其中各实体编程单元包括数据记录区与可用冗余区,而存储控制器在将第一类数据及至少部分第二类数据同时编程至实体编程单元组时,将第一类数据及至少部分第二类数据写入至组成实体编程单元组的η个实体编程单元的数据记录区,并且将第一类数据及至少部分第二类数据所个别对应的逻辑存取地址及扇区数量写入至组成实体编程单元组的η个实体编程单元的可用冗余区。[0022]在本发明的一实施例中,其中存储控制器还用以维护对应表,以记录被编程至实体编程单元组的第一类数据及至少部分第二类数据所个别对应的逻辑存取地址及扇区数量与实体编程单元组的对应关系,并将对应表写入至所有实体擦除单元中的一特定实体擦除单元,其中特定实体擦除单元所具有的实体编程单元均不属于实体编程单元组。[0023]在本发明的一实施例中,其中第一类数据及至少部分第二类数据的写入状态被一并回复给发出多组数据的主机系统。[0024]基于上述,本发明是先累积多组主机系统欲写入的少量数据,并在将上述数据一并成功地编程至可复写式非易失性存储器模块后,将数个写入完成信息同时回复给主机系统以回应上述数据所对应的数个写入指令。据此达到将数据快速且安全地写入存储器的目的。[0025]为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合附图作详细说明如下。【专利附图】【附图说明】[0026]图1A是根据本发明一实施例示出的使用存储器的主机系统的示意图;[0027]图1B是根据本发明实施例所示出的电脑、输入/输出装置与存储器的示意图;[0028]图1C是根据本发明另一实施例所示出的主机系统与存储器的示意图;[0029]图2是示出图1A所示的存储器的概要方块图;[0030]图3是根据本发明一实施例示出的存储控制器的概要方块图;[0031]图4、5是根据本发明的一实施例所示出的管理可复写式非易失性存储器模块的示意图;[0032]图6是根据本发明的一实施例所示出的实体单元的示意图;[0033]图7是根据本发明的一实施例所示出的实体编程单元的示意图;[0034]图8是根据本发明的一实施例所示出的将数据编程至实体编程单元组的示意图;[0035]图9是根据本发明的一实施例所示出的数据写入方法的流程图。[0036]附图标记说明:[0037]1000:主机系统;[0038]1100:电脑;[0039]1102:微处理器;[0040]1104:随机存取存储器;[0041]1106:输入/输出装置;[0042]1108:系统总线;[0043]1110:数据传输接口;[0044]1202:鼠标;[0045]1204:键盘;[0046]1206:显示器;[0047]1208:打印机;[0048]1212:U盘;[0049]1214:存储卡;[0050]1216:固态硬盘;[0051]1310:数码相机;[0052]1312:SD卡;[0053]1314:MMC卡;[0054]1316:记忆棒;[0055]1318:CF卡;[0056]1320:嵌入式储存装置;[0057]100:存储器;[0058]102:连接器;[0059]104:存储控制器;[0060]106:可复写式非易失性存储器模块;[0061]1041:主机系统接口;[0062]1043:存储器管理电路;[0063]1045:存储器接口;[0064]1047:缓冲存储器;[0065]3002:错误检查与校正电路;[0066]3006:电源管理电路;[0067]410(0)?410(N):实体擦除单元;[0068]502:数据区;[0069]504:闲置区;[0070]506:系统区;[0071]508:取代区;[0072]610(0)?610(L):逻辑单元;[0073]710(O)?710(C)、710(D)?710(E):实体单元;[0074]Pf(O)?Pf(127)、Pf+1(0)?PF+1(127)、PF+2(O)?PF+2(127)、PF+3(O)?PF+3(127):实体编程单兀;[0075]FP(O)、FP(I)、FP(2)、FP(127):实体编程单元组;[0076]WD1:第一数据;[0077]WD2」、WD22、WD23:第二数据;[0078]WD3:第三数据;[0079]DD1,DD2、DD3、DD4:填补数据;[0080]S910?S930:步骤。【具体实施方式】[0081]一般而言,存储器(也称,存储系统)包括可复写式非易失性存储器模块与存储控制器(也称,控制电路)。通常存储器是与主机系统一起使用,以使主机系统可将数据写入至存储器或从存储器中读取数据。[0082]图1A是根据本发明一实施例示出的使用存储器的主机系统的示意图。[0083]主机系统1000包括电脑1100与输入/输出(Input/Output,I/O)装置1106。电脑1100包括微处理器1102、随机存取存储器(RandomAccessMemory,RAM)1104、系统总线1108以及数据传输接口1110。输入/输出装置1106包括如图1B所示的鼠标1202、键盘1204、显示器1206与打印机1208。必须了解的是,图1B所示的装置非限制输入/输出装置1106,输入/输出装置1106可还包括其他装置。[0084]在本发明实施例中,存储器100是通过数据传输接口1110与主机系统1000的其他元件电连接。通过微处理器1102、随机存取存储器1104以及输入/输出装置1106的操作,主机系统1000可将数据写入至存储器100,或从存储器100中读取数据。例如,存储器100可以是如图1B所示的存储卡1214、U盘1212、或固态硬盘(SolidStateDrive,SSD)1216。[0085]一般而言,主机系统1000为可储存数据的任意系统。虽然在本实施例中主机系统1000是以电脑系统来作说明,然而,在本发明另一实施例中,主机系统1000也可以是手机、数码相机、摄像机、通信装置、音频播放器或视频播放器等系统。例如,在主机系统为数码相机1310时,存储器则为其所使用的安全数字(SecureDigital,SD)卡1312、多媒体存储(MultimediaCard,MMC)卡1314、记忆棒(MemoryStick)1316、紧凑式闪存(CompactFlash,CF)卡1318或嵌入式储存装置1320(如图1C所示)。嵌入式储存装置1320包括嵌入式多媒体卡(EmbeddedMMC,eMMC)。值得一提的是,嵌入式多媒体卡是直接电连接于主机系统的基板上。[0086]图2是示出图1A所示的存储器的概要方块图。请参照图2,存储器100包括连接器102、存储控制器104与可复写式非易失性存储器模块106。[0087]连接器102电连接至存储控制器104,并且用以电连接主机系统1000。在本实施例中,连接器102所支持的传输接口种类为通用串行总线(UniversalSerialBus,USB)接口。然而在其他实施例中,连接器102的传输接口种类也可以是串行高级技术附件(SerialAdvancedTechnologyAttachment,SATA)接口、多媒体卡(MultimediaCard,MMC)接口、并行高级技术附件(ParallelAdvancedTechnologyAttachment,PATA)接口、电气和电子工程师协会(InstituteofElectricalandElectronicEngineers,IEEE)1394接口、外设部件互连标准(PeripheralComponentInterconnectExpress,PCIExpress)接口、安全数字(SecureDigital,SD)接口、记忆棒(MemoryStick,MS)接口、紧凑式闪存(CompactFlash,CF)接口,或集成驱动器电子(IntegratedDriveElectronics,IDE)接口等任何适用的接口,在此并不加以限制。[0088]存储控制器104会执行以硬件型式或固件型式实现的多个逻辑门或控制指令,并根据主机系统1000的指令在可复写式非易失性存储器模块106中进行数据的写入、读取与擦除等操作。其中,存储控制器104还特别用以根据本实施例的数据写入方法来处理主机系统1000欲写入可复写式非易失性存储器模块106的数据。本实施例的数据写入方法将于后配合图示再作说明。[0089]可复写式非易失性存储器模块106电连接至存储控制器104。可复写式非易失性存储器模块106为多阶存储单元(MultiLevelCell,MLC)NAND闪存模块,但本发明不限于此,可复写式非易失性存储器模块106也可以是单阶存储单元(SingleLevelCell,SLC)NAND闪存模块、其他闪存模块或任何具有相同特性的存储器模块。进一步来说,可复写式非易失性存储器模块106包括多个实体擦除单元,而每一实体擦除单元具有多个实体编程单元。属于同一个实体擦除单元的实体编程单元可被独立地写入且被同时地擦除。也就是说,实体擦除单元为擦除的最小单位。也即,每一实体擦除单元含有最小数目之一并被擦除的存储单元。实体编程单元为编程的最小单元。即,实体编程单元为写入数据的最小单元。在本实施例中,实体擦除单元为实体块,而实体编程单元为实体页面,但本发明不以此为限。[0090]图3是根据本发明一实施例示出的存储控制器的概要方块图。请参照图3,存储控制器104包括主机系统接口1041、存储器管理电路1043、存储器接口1045,以及缓冲存储器1047。[0091]主机系统接口1041电连接至存储器管理电路1043,并通过连接器102以电连接主机系统1000。主机系统接口1041用以接收与识别主机系统1000所传送的指令与数据。据此,主机系统1000所传送的指令与数据会通过主机系统接口1041而传送至存储器管理电路1043。在本实施例中,主机系统接口1041对应连接器102而为USB接口,而在其他实施例中,主机系统接口1041也可以是SATA接口、MMC接口、PATA接口、IEEE1394接口、PCIExpress接口、SD接口、MS接口、CF接口、IDE接口或符合其他接口标准的接口。[0092]存储器管理电路1043用以控制存储控制器104的整体操作。具体来说,存储器管理电路1043具有多个控制指令,在存储器100被运行(poweron)时,上述控制指令会被执行以实现本实施例的数据写入方法。[0093]在一实施例中,存储器管理电路1043的控制指令是以固件型式来实现。例如,存储器管理电路1043具有微处理器单元(未示出)与只读存储器(未示出),且上述控制指令是被刻录在只读存储器中。当存储器100操作时,上述控制指令会由微处理器单元来执行以完成本实施例的数据写入方法。[0094]在本发明另一实施例中,存储器管理电路1043的控制指令也可以代码型式储存于可复写式非易失性存储器模块106的特定区域(例如,可复写式非易失性存储器模块106中专用于存放系统数据的系统区)中。此外,存储器管理电路1043具有微处理器单元(未示出)、只读存储器(未示出)及随机存取存储器(未示出)。其中,只读存储器具有驱动码段,并且当存储控制器104被致能时,微处理器单元会先执行此驱动码段来将储存于可复写式非易失性存储器模块106中的控制指令载入至存储器管理电路1043的随机存取存储器中。之后,微处理器单元会运行上述控制指令以执行本实施例的数据写入方法。[0095]此外,在本发明另一实施例中,存储器管理电路1043的控制指令也可以一硬件型式来实现。举例来说,存储器管理电路1043包括微控制器、存储器管理单元、存储器写入单元、存储器读取单元、存储器擦除单元与数据处理单元。存储器管理单元、存储器写入单元、存储器读取单元、存储器擦除单元与数据处理单元是电连接至微控制器。其中,存储器管理单元用以管理可复写式非易失性存储器模块106中的实体擦除单元。存储器写入单元用以对可复写式非易失性存储器模块106下达写入指令以将数据写入至可复写式非易失性存储器模块106中。存储器读取单元用以对可复写式非易失性存储器模块106下达读取指令以从可复写式非易失性存储器模块106中读取数据。存储器擦除单元用以对可复写式非易失性存储器模块106下达擦除指令以将数据从可复写式非易失性存储器模块106中擦除。而数据处理单元用以处理欲写入至可复写式非易失性存储器模块106的数据以及从可复写式非易失性存储器模块106中读取的数据。[0096]存储器接口1045电连接至存储器管理电路1043,以使存储控制器104与可复写式非易失性存储器模块106电连接。据此,存储控制器104可对可复写式非易失性存储器模块106进行相关操作。也就是说,欲写入至可复写式非易失性存储器模块106的数据会通过存储器接口1045转换为可复写式非易失性存储器模块106所能接受的格式。[0097]缓冲存储器1047可以是静态随机存取存储器(StaticRandomAccessMemory,SRAM)、或动态随机存取存储器(DynamicRandomAccessMemory,DRAM)等,本发明并不加以限制。缓冲存储器1047电连接至存储器管理电路1043,用以暂存来自于主机系统1000的指令与数据,或暂存来自于可复写式非易失性存储器模块106的数据。[0098]在本发明的另一实施例中,存储控制器104还包括错误检查与校正电路3002。错误检查与校正电路3002电连接至存储器管理电路1043,用以执行错误检查与校正程序以确保数据的正确性。具体而言,当存储器管理电路1043接收到来自主机系统1000的写入指令时,错误检查与校正电路3002会为对应此写入指令的数据产生对应的错误检查与校正码(ErrorCheckingandCorrectingCode,ECCCode),且存储器管理电路1043会将对应此写入指令的数据与对应的错误检查与校正码写入至可复写式非易失性存储器模块106。之后当存储器管理电路1043从可复写式非易失性存储器模块106中读取数据时,会同时读取此数据对应的错误检查与校正码,且错误检查与校正电路3002会依据此错误检查与校正码对所读取的数据执行错误检查与校正程序,以识别该组数据是否存在错误字节。[0099]在本发明又一实施例中,存储控制器104还包括电源管理电路3006。电源管理电路3006电连接至存储器管理电路1043,用以控制存储器100的电源。[0100]图4、5是根据本发明的一实施例所示出的管理可复写式非易失性存储器模块的示意图。[0101]在以下描述可复写式非易失性存储器模块106的实体擦除单元的操作时,以“提取”、“交换”、“分组”、“轮替”等词来操作实体擦除单元是逻辑上的概念。也就是说,可复写式非易失性存储器模块106的实体擦除单元的实际位置并未改动,而是逻辑上对可复写式非易失性存储器模块106的实体擦除单元进行上述操作。[0102]请参照图4,本实施例的可复写式非易失性存储器模块106包括实体擦除单元410(0)?410(N)。存储控制器104中的存储器管理电路1043会将实体擦除单元410(O)?410(N)逻辑地分组为数据区502、闲置区504、系统区506与取代区508。其中,图4所示的F、S、R与N为正整数,代表各区配置的实体擦除单元数量,其可由存储器100的制造商依据所使用的可复写式非易失性存储器模块106的容量来设定。[0103]逻辑上属于数据区502与闲置区504的实体擦除单元是用以储存来自于主机系统1000的数据。举例来说,数据区502的实体擦除单元是被视为已储存数据的实体擦除单元,而闲置区504的实体擦除单元是用以写入新数据的实体擦除单元。换句话说,闲置区504的实体擦除单元为空或可使用的实体擦除单元(无记录数据或标记为已没用的无效数据)。当从主机系统1000接收到写入指令与欲写入的数据时,存储器管理电路1043会从闲置区504中提取实体擦除单元,并且将数据写入至所提取的实体擦除单元中,以替换数据区502的实体擦除单元。或者,当需要对一逻辑擦除单元执行数据合并程序时,存储器管理电路1043会从闲置区504提取实体擦除单元并将数据写入其中,以替换原先映射此逻辑擦除单元的实体擦除单元。[0104]逻辑上属于系统区506的实体擦除单元是用以记录系统数据。举例来说,系统数据包括关于可复写式非易失性存储器模块106的制造商与型号、可复写式非易失性存储器模块106的实体擦除单元数、每一实体擦除单元的实体编程单元数等等。[0105]逻辑上属于取代区508的实体擦除单元是用以在数据区502、闲置区504或系统区506中的实体擦除单元损毁时,取代损坏的实体擦除单元。具体而言,在存储器100操作期间,若取代区508中仍存有正常的实体擦除单元且数据区502的实体擦除单元损坏时,存储器管理电路1043会从取代区508中提取正常的实体擦除单元来更换数据区502中损坏的实体擦除单元。倘若取代区508中无正常的实体擦除单元且发生实体擦除单元损毁时,则存储器管理电路1043会将整个存储器100宣告为写入保护(writeprotect)状态,而无法再写入数据。[0106]也因此,在存储器100的操作过程中,数据区502、闲置区504、系统区506与取代区508的实体擦除单元会动态地变动。例如,用以轮替储存数据的实体擦除单元会变动地属于数据区502或闲置区504。[0107]请参照图5,存储器管理电路1043将数据区502的实体块410(0)?410(F-1)与闲置区504的实体块420(F)?420(S-1)分组为多个实体单元710(O)?710(C)、710(D)?710(E),并且以实体单元为单位来管理可复写式非易失性存储器模块106,其中各实体单元包括η个实体擦除单元,η为正整数。而C、D与E也为正整数,其数值与η、F、S的数值有关。在一实施例中,每一实体单元是由两个实体擦除单元所组成,倘若可复写式非易失性存储器模块106包括两个或两个以上的存储器晶粒(die),则这两个实体擦除单元可分别属于不同的存储器晶粒。然而,必须了解的是,本发明不限于此。在另一实施例中,每一实体单元可由一个实体擦除单元所组成。或者,在又一实施例中,每一实体单元也可由同一存储器晶粒或不同存储器晶粒中的至少一个实体擦除单元所组成。[0108]为了让主机系统1000能对可复写式非易失性存储器模块106进行存取,存储器管理电路1043会配置数个逻辑单元610(0)?610(L)以映射数据区502中的实体单元710(0)?710(C)。其中,每一逻辑单元是由η个逻辑擦除单元所组成,而每一逻辑擦除单元包括数个逻辑编程单元。进一步来说,逻辑单元610(O)?610(L)中的逻辑编程单元会依序映射实体单元710(O)?710(C)中的实体编程单元。[0109]存储器管理电路1043将所配置的逻辑单元610(0)?610(L)提供给主机系统1000,并维护逻辑地址-实体地址映射表以记录逻辑单元610(O)?610(L)与实体单元710(0)?710(C)的映射关系。当主机系统1000欲存取一逻辑存取地址时,存储器管理电路1043会确认此逻辑存取地址所对应的逻辑擦除单元与逻辑编程单元,再通过逻辑地址-实体地址映射表找到其所映射的实体编程单元来进行存取。[0110]在本实施例中,当主机系统1000欲将数组数据写入存储器100而连续或间断地下达多个写入指令时,存储器管理电路1043接收这多个写入指令对应的多组数据,并将这多组数据暂存在缓冲存储器1047,其中,这多组数据包括一组第一类数据及至少一组第二类数据,第一类数据的容量必须小于数据量临界值(例如是16千字节组,但本发明并不以此为限),而第二类数据的容量是否超过数据量临界值则不加以限制。当判定这多组数据符合预定条件之后,存储器管理电路1043才将目前暂存于缓冲存储器1047的第一类数据以及至少部分第二类数据同时编程至可复写式非易失性存储器模块106中的一实体编程单元组,此实体编程单元组是由η个实体编程单元所组成,η为正整数,也即实体编程单元组可具有I个实体编程单元或多数个实体编程单元。且存储器管理电路1043会同时得知被编程至可复写式非易失性存储器模块106的第一类数据及至少部分第二类数据的写入状态。[0111]举例来说,假设每一实体单元是由4个实体擦除单元所组成(B卩,η等于4),且一个实体编程单元的容量为4千字节组。那么一个实体编程单元组便包括4个实体编程单元,且一个实体编程单元的容量为16千字节组。此外,在本实施例中是假设当暂存在缓冲存储器1047的多组数据的数据量到达实体编程单元组(即,4个实体编程单元)的容量时,存储器管理电路1043才判定这多组数据符合预定条件。[0112]若主机系统1000欲写入三组数据,其中第一数据的数据量为9千字节组,第二数据的数据量为20千字节组,第三数据的数据量为11千字节组。在主机系统1000欲写入第一数据而下达第一写入指令时,若目前缓冲存储器1047尚未储存任何数据,则存储器管理电路1043并不会在此时将第一写入数据编程至可复写式非易失性存储器模块106,而是将第一数据暂存至缓冲存储器1047。此外,存储器管理电路1043也会将第一数据对应的逻辑存取地址及扇区数量记录在缓冲存储器1047。[0113]之后,主机系统1000再下达对应第二与第三数据的写入指令。存储器管理电路1043在收到上述两个写入指令时,将对应的第二与第三数据暂存至缓冲存储器1047,并且将第二与第三数据各别对应的逻辑存取地址及扇区数量记录在缓冲存储器1047。由于此时暂存于缓冲存储器1047的多组数据的数据量已到达实体编程单元组的容量,存储器管理电路1043判定这多组数据符合预定条件,因而开始将数据实际地编程至实体编程单元组。[0114]如图6所示,在一实施例中,存储器管理电路1043会从闲置区504中提取实体单元710(D),假设实体单元710(D)包括实体擦除单元410(F)、410(F+l)、410(F+2)、410(F+3),且各实体擦除单元分别包括128个实体编程单元(即,实体编程单元Pf(O)?Pf(127)、Pf+1(0)?Pf+1(127)、Pf+2(0)?PF+2(127)、PF+3(O)?PF+3(127))。由于在本实施例中,存储器管理电路1043是以实体单元为单位来管理可复写式非易失性存储器模块106,因此分别在实体擦除单元410(F)、410(F+l)、410(F+2)、410(F+3)中具有对应位置的实体编程单元会被配对而组成一个实体编程单元组。举例来说,实体编程单元Pf(O)、PF+1(O)、PF+2(O)与PF+3(0)组成实体编程单元组??(0)、实体编程单元?“1)、?&1(1)、?&2(1)与PF+3⑴组成实体编程单元组FP(I),以此类推。换言之,当实体单元是由η个实体擦除单元所组成,则实体编程单元组便是由上述η个实体擦除单元中的η个实体编程单元所组成。在本实施例中,如图7所示,每一实体编程单元包括数据记录区D与可用冗余区RS,其用途之后再述。存储器管理电路1043会依序自实体单元710(D)取得实体编程单元组来写入数据,且属于相同实体编程单元组的所有实体编程单元会一起被写入数据。然而,由于每一实体编程单元的容量为4千字节组,因此要写入的数据必须补足为4千字节组的倍数。[0115]延续前述实施例,存储器管理电路1043在判定暂存于缓冲存储器1047的多组数据已符合预定条件后,便下达编程指令开始进行编程操作。如图8所示,首先,由于完整的第一数据WD1仅有9千字节组,为了将其补足为4千字节组的倍数,存储器管理电路1043额外填入3千字节组的填补数据DD1,进而将完整的第一数据WD1、额外填入的填补数据DD1,以及第一部分第二数据WD2」(数据量为4千字节组)编程至实体编程单元组FP(O)。[0116]接着,存储器管理电路1043将第二部分第二数据WD22(数据量为14千字节组)与2千字节组的填补数据DD2编程至实体编程单元组FP(I),并且将第三部分第二数据WD23(数据量为2千字节组)与2千字节组的填补数据DD3,以及完整的第三数据WD3(数据量为11千字节组)与I千字节组的填补数据DD4编程至实体编程单元组FP(2)。[0117]在完成对实体编程单元组FP(2)的编程操作后,存储器管理电路1043取得表示这三组数据都被正常地写入至可复写式非易失性存储器模块106的三个写入状态。在一实施例中,存储器管理电路1043会于此时将三个写入完成信息一并传送给主机系统1000以回应先前收到的三个写入指令。在另一实施例中,若这三组数据有至少其中之一未被正常地写入至可复写式非易失性存储器模块106,则存储器管理电路1043会将三个写入错误信息一并回复给主机系统1000,以使主机系统1000重新下达欲写入上述三组数据的数个写入指令。在又一实施例中,由于存储控制器104在可复写式非易失性存储器模块106受控执行编程操作之际仍可以接收来自主机系统1000的数据,因此为了避免主机系统1000因等待回应而延后传输数据,存储器管理电路1043会提前发出表示写入成功的信息,而在同时取得多组数据的写入状态后,在写入状态表示有错误发生时才将数组写入错误信息一并传送至主机系统1000。也就是说,存储器管理电路1043会将表示数个写入指令的写入状态的数个信息一并回复给主机系统1000,然而本发明并不限制回复信息的时间点。[0118]在上述将数据编程至实体编程单元组的过程中,存储器管理电路1043是将实际数据(即,上述实施例中的第一至第三数据)以及填补数据编程至组成实体编程单元组的实体编程单元的数据记录区,并且将实际数据对应的逻辑存取地址及扇区数量写入至组成实体编程单元组的实体编程单元的可用冗余区。以实体编程单元组FP(O)为例,其中实体编程单元Pf(O)的数据记录区用以写入4千字节组的第一数据,而此部分的第一数据所对应的逻辑存取地址与扇区数量便写入在实体编程单元Pf(O)的可用冗余区。实体编程单元PF+1(0)的数据记录区则用以写入另外4千字节组的第一数据,而此部分的第一数据所对应的逻辑存取地址与扇区数量便写入在实体编程单元PF+1(O)的可用冗余区。实体编程单元PF+2(0)的数据记录区则用以写入剩下的I千字节组的第一数据与3千字节组的填补数据,而此部分的第一数据所对应的逻辑存取地址与扇区数量便写入在实体编程单元PF+2(O)的可用冗余区。实体编程单元PF+3(0)的数据记录区则用以写入4千字节组的第二数据,而此部分的第二数据所对应的逻辑存取地址与扇区数量则写入在实体编程单元PF+3(0)的可用冗余区。[0119]除此之外,存储器管理电路1043还会维护一对应表,以记录被编程至某一实体编程单元组的第一类数据及至少部分第二类数据的逻辑存取地址及扇区数量与此实体编程单元组的对应关系,并且将对应表写入至实体擦除单元410(O)?410(N)中的一特定实体擦除单元,其中特定实体擦除单元所具有的实体编程单元均不属于实体编程单元组。延续图8的实施例,存储器管理电路1043会在对应表中记录完整的第一数据的逻辑存取地址及扇区数量以及前4千字节组的第二数据的逻辑存取地址及扇区数量系对应实体编程单元组FP(O)。另外14千字节组的第二数据的逻辑存取地址及扇区数量系对应实体编程单元组FP(I)。最后2千字节组的第二数据的逻辑存取地址及扇区数量以及完整的第三数据的逻辑存取地址及扇区数量系对应实体编程单元组FP(2)。此后当实体单元710(D)已被写满数据,或存储器100满足特定条件时,存储器管理电路1043可根据对应表执行数据合并程序。[0120]值得一提的是,若因存储器100断电等因素使得存储器管理电路1043来不及将上述对应关系记录至对应表,存储器管理电路1043也可在存储器100复电时,读取实体单元710(D)中各实体编程单元组的实体编程单元的可用冗余区,以取得对应关系并将其写入对应表。[0121]在上述实施例中,不论所接收到的写入指令数量多少,在已接收到至少一组数据是属于第一类数据(即,容量小于数据量临界值)的情况下,当暂存在缓冲存储器1047的多组数据的数据量未到达一个实体编程单元组的容量(即,η个实体编程单元的容量)时,存储器管理电路1043便会继续将来自主机系统1000的写入数据暂存至缓冲存储器1047,直到所暂存的多组数据的数据量到达一个实体编程单元组的容量时,才将第一类数据以及至少部分其他已暂存的数据正式编程至实体编程单元组。相对于每收到一个写入指令便将其对应的写入数据编程至可复写式非易失性存储器模块106,本实施例所采用的方式能提高系统整体编程程序(programprocess)的效率,据此提高系统整体写入数据的速度及更有效率的使用可复写式非易失性存储器模块106。更进一步,存储器管理电路1043能同时得知第一类数据及至少部分其他已暂存数据的写入状态,并能在适当时间点将数个写入完成信息一并回复给主机系统1000以回应先前收到的数个写入指令,据此达到确保数据被安全写入存储器100的目的。[0122]在另一实施例中,若存储器管理电路1043已接收到一组第一类数据,且接收到一或多组第二类数据。存储器管理电路1043则会在未接收到其他数据的时间超过一时间临界值时,判定暂存在缓冲存储器1047的多组数据符合预定条件。此时,无论暂存在缓冲存储器1047的多组数据的数据量是否接近一个实体编程单元组的容量,存储器管理电路1043都会下达编程指令以将第一类数据及至少部分第二类数据编程至实体编程单元组。同样地,存储器管理电路1043会同时得知第一类数据及至少部分第二类数据的写入状态,且对应上述数据的写入状态的数个信息将被一并回复给主机系统1000。[0123]在上述实施例中,存储器管理电路1043是从闲置区504提取一个专用的实体单元,并以其中的数个实体编程单元来组成一实体编程单元组。在此管理架构下,若主机系统1000所欲写入的数据是要对某组已存在的数据作修改,则存储器管理电路1043不会采用上述机制将数据编程至实体编程单元组。[0124]在另一实施例中,存储器管理电路1043并不会将可复写式非易失性存储器模块106中的实体擦除单元410(O)?410(N)进行如图4的逻辑上的分组。由此,存储器管理电路1043可从可复写式非易失性存储器模块106取得任意η个实体擦除单元,并以其中的η个实体编程单元来组成一实体编程单元组。然而,由于在接收到包括一第一类数据与至少一第二类数据的多组数据时,将上述数据暂存至缓冲存储器1047,并待这多组数据符合预定条件后,才将第一类数据及至少部分第二类数据同时编程至实体编程单元组,且同时得知实际编程的数据的写入状态的详细操作方式与前述实施例相同或相似,故在此不再赘述。[0125]图9是根据本发明的一实施例所示出的数据写入方法的流程图,请参阅图9。[0126]首先如步骤S910所示,存储器管理电路1043接收来自主机系统1000的多组数据。这多组数据包含一第一类数据及至少一第二类数据,其中第一类数据的容量小于数据量临界值,第二类数据的容量则不加以限制。[0127]接着在步骤S920中,存储器管理电路1043将这多组数据暂存于缓冲存储器1047,并且当判断这多组数据符合预定条件后,将暂存于缓冲存储器1047的第一类数据及至少部分第二类数据同时编程至实体编程单元组,其是由η个实体编程单元所组成。其中,预定条件例如是当这多组数据的数据量到达实体编程单元组的容量及/或当存储器管理电路1043未接收到其他数据的时间超过时间临界值。[0128]最后如步骤S930所示,存储器管理电路1043同时得知被编程的第一类数据及至少部分第二类数据的写入状态。[0129]综上所述,本发明所述的存储器、其存储控制器与数据写入方法能在主机系统欲写入一组第一类数据以及至少一组第二类数据的情况下,将上述数据先暂存在缓冲存储器,直到判定所暂存的数据符合预定条件之际,才将第一类数据与至少部分第二类数据一并编程至可复写式非易失性存储器模块,据此可提高整体数据写入的效率。并且,本发明所述的存储器、其存储控制器与数据写入方法能同时得知被编程的数据的写入状态,并于适当时机将对应的数个信息传送至主机系统以回应之前收到的数个写入指令,如此确保数据能被安全写入存储器,达到兼具效率高与数据可靠的效果。[0130]最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。【权利要求】1.一种数据写入方法,用于一存储器,该存储器包括一缓冲存储器与一可复写式非易失性存储器模块,而该可复写式非易失性存储器模块具有多个实体擦除单元,且各该些实体擦除单元具有多个实体编程单元,其特征在于,包括:接收多组数据,其中该多组数据包含一第一类数据及至少一第二类数据,其中该第一类数据的容量小于一数据量临界值;将该多组数据暂存于该缓冲存储器,当判断该多组数据符合一预定条件后,将暂存于该缓冲存储器的该第一类数据及至少部分该第二类数据同时编程至一实体编程单元组,其中该实体编程单元组是由η个实体编程单元所组成,η为正整数;以及同时得知该第一类数据及该至少部分第二类数据的写入状态。2.根据权利要求1所述的数据写入方法,其特征在于,当暂存在该缓冲存储器的该多组数据的数据量到达该实体编程单元组的容量时,判定该多组数据符合该预定条件。3.根据权利要求1所述的数据写入方法,其特征在于,当该存储器未接收到其他数据的时间超过一时间临界值时,判定该多组数据符合该预定条件。4.根据权利要求1所述的数据写入方法,其特征在于,各该些实体编程单元包括一数据记录区与一可用冗余区,而将暂存于该缓冲存储器的该第一类数据及该至少部分第二类数据同时编程至该实体编程单元组的步骤包括:将该第一类数据及该至少部分第二类数据写入至组成该实体编程单元组的该η个实体编程单元的该数据记录区;以及将该第一类数据及该至少部分第二类数据所个别对应的一逻辑存取地址及一扇区数量写入至组成该实体编程单元组的该η个实体编程单元的该可用冗余区。5.根据权利要求1所述的数据写入方法,其特征在于,还包括:维护一对应表,以记录被编程至该实体编程单元组的该第一类数据及该至少部分第二类数据所个别对应的该逻辑存取地址及该扇区数量与该实体编程单元组的一对应关系;以及将该对应表写入至该些实体擦除单元中的一特定实体擦除单元,其中该特定实体擦除单元所具有的实体编程单元均不属于该实体编程单元组。6.根据权利要求1所述的数据写入方法,其特征在于,该第一类数据及该至少部分第二类数据的写入状态被一并回复给发出该多组数据的一主机系统。7.一种存储控制器,以管理一可复写式非易失性存储器模块,其特征在于,包括:一主机系统接口,用以电连接一主机系统;一存储器接口,用以电连接该可复写式非易失性存储器模块,其中该可复写式非易失性存储器模块具有多个实体擦除单元,且各该些实体擦除单元具有多个实体编程单元;一缓冲存储器;以及一存储器管理电路,电连接至该主机系统接口、该存储器接口、该缓冲存储器,其中该存储器管理电路接收多组数据,其中该多组数据包含一第一类数据及至少一第二类数据,其中该第一类数据的容量小于一数据量临界值,该存储器管理电路将该多组数据暂存于该缓冲存储器,当判断该多组数据符合一预定条件后,将暂存于该缓冲存储器的该第一类数据及至少部分该第二类数据同时编程至一实体编程单元组,其中该实体编程单元组是由η个实体编程单元所组成,η为正整数,该存储器管理电路同时得知该第一类数据及该至少部分第二类数据的写入状态。8.根据权利要求7所述的存储控制器,其特征在于,当暂存在该缓冲存储器的该多组数据的数据量到达该实体编程单元组的容量时,该存储器管理电路判定该多组数据符合该预定条件。9.根据权利要求7项所述的存储控制器,其特征在于,当该存储器管理电路未接收到其他数据的时间超过一时间临界值时,该存储器管理电路判定该多组数据符合该预定条件。10.根据权利要求7项所述的存储控制器,其特征在于,各该些实体编程单元包括一数据记录区与一可用冗余区,而该存储器管理电路在将暂存于该缓冲存储器的该第一类数据及该至少部分第二类数据同时编程至该实体编程单元组时,将该第一类数据及该至少部分第二类数据写入至组成该实体编程单元组的该η个实体编程单元的该数据记录区,并将该第一类数据及该至少部分第二类数据所个别对应的一逻辑存取地址及一扇区数量写入至组成该实体编程单元组的该η个实体编程单元的该可用冗余区。11.根据权利要求10所述的存储控制器,其特征在于,该存储器管理电路还用以维护一对应表,以记录被编程至该实体编程单元组的该第一类数据及该至少部分第二类数据所个别对应的该逻辑存取地址及该扇区数量与该实体编程单元组的一对应关系,并将该对应表写入至该些实体擦除单元中的一特定实体擦除单元,其中该特定实体擦除单元所具有的实体编程单元均不属于该实体编程单元组。12.根据权利要求7所述的存储控制器,其特征在于,该第一类数据及该至少部分第二类数据的写入状态被一并回复给发出该多组数据的该主机系统。13.一种存储器,其特征在于,包括:一可复写式非易失性存储器模块,包括多个实体擦除单元,且各该些实体擦除单元具有多个实体编程单元;一连接器,用以电连接一主机系统;以及一存储控制器,电连接至该可复写式非易失性存储器模块与该连接器,该存储控制器包括一缓冲存储器,该存储控制器接收多组数据,其中该多组数据包含一第一类数据及至少一第二类数据,其中该第一类数据的容量小于一数据量临界值,该存储控制器将该多组数据暂存于该缓冲存储器,当判断该多组数据符合一预定条件后,将暂存于该缓冲存储器的该第一类数据及至少部分该第二类数据同时编程至一实体编程单元组,其中该实体编程单元组是由η个实体编程单元所组成,η为正整数,该存储控制器同时得知该第一类数据及该至少部分第二类数据的写入状态。14.根据权利要求13所述的存储器,其特征在于,当暂存在该缓冲存储器的该多组数据的数据量到达该实体编程单元组的容量时,该存储控制器判定该多组数据符合该预定条件。15.根据权利要求13所述的存储器,其特征在于,当该存储控制器未接收到其他数据的时间超过一时间临界值时,该存储控制器判定该多组数据符合该预定条件。16.根据权利要求13所述的存储器,其特征在于,各该些实体编程单元包括一数据记录区与一可用冗余区,而该存储控制器在将暂存于该缓冲存储器的该第一类数据及该至少部分第二类数据同时编程至该实体编程单元组时,将该第一类数据及该至少部分第二类数据写入至组成该实体编程单元组的该η个实体编程单元的该数据记录区,并将该第一类数据及该至少部分第二类数据所个别对应的一逻辑存取地址及一扇区数量写入至组成该实体编程单元组的该η个实体编程单元的该可用冗余区。17.根据权利要求16所述的存储器,其特征在于,该存储控制器还用以维护一对应表,以记录被编程至该实体编程单元组的该第一类数据及该至少部分第二类数据所个别对应的该逻辑存取地址及该扇区数量与该实体编程单元组的一对应关系,并将该对应表写入至该些实体擦除单元中的一特定实体擦除单元,其中该特定实体擦除单元所具有的实体编程单元均不属于该实体编程单元组。18.根据权利要求13所述的存储器,其特征在于,该第一类数据及该至少部分第二类数据的写入状态被一并回复给·发出该多组数据的该主机系统。【文档编号】G06F12/02GK103853666SQ201210514676【公开日】2014年6月11日申请日期:2012年12月4日优先权日:2012年12月4日【发明者】辜芳立,李国荣,许登钧申请人:群联电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1