本发明涉及一种内存管理机制,尤其涉及一种数据程序化方法、内存储存装置及内存控制电路单元。
背景技术:
::数字相机、移动电话与MP3播放器在这几年来的成长十分迅速,使得消费者对储存媒体的需求也急速增加。由于可复写式非易失性内存模块(例如,闪存)具有数据非易失性、省电、体积小,以及无机械结构等特性,所以非常适合内建于上述所举例的各种可携式多媒体装置中。一般来说,为了增加内存的容量,某些类型的内存中的一个记忆胞可以用来储存多个位。但是,这样的使用方式也会导致内存的数据储存速度下降。因此,为了让主机端不要感觉到延迟,某些类型的内存中还会额外配置一个容量较小但储存速度较快的缓冲区。在缓冲区中,一个记忆胞只能储存一个位,而缓冲区之外(例如,储存区)的一个记忆胞则可以储存多个位。当接收到数据时,数据会被暂存到缓冲区,然后再在背景搬移到储存区进行储存,藉此主机端会感觉到数据很快就被储存。然而,缓冲区的容量有限,且当缓冲区被写满时,内存装置往往会自动执行缓冲区的数据整理。因此很多内存测速程序会藉由写满缓冲区来拖慢内存的数据储存速度。技术实现要素:本发明的一范例实施例提供一种数据程序化方法、内存储存装置及内存控制电路单元,可改善因缓冲区被写满导致的写入速度下降。本发明的一范例实施例提供一种数据程序化方法,其用于可复写式非易失性内存模块,其中所述可复写式非易失性内存模块包括多个实体单元,其中所述实体单元包括多个第一实体单元与多个第二实体单元,其中所述第一实体单元被配置为仅能基于第一程序化模式来程序化,其中所述第二实体单元被初始地配置为基于第二程序化模式来程序化,其中所述数据程序化方法包括:从主机系统接收第一数据;判断所述第一实体单元是否已被使用至一默认容量;若判定所述第一实体单元已被使用至所述默认容量,判断储存于所述第一实体单元中的第二数据是否符合一默认条件,其中所述第二数据为属于至少一第一逻辑单元的当前数据;以及若判定所述第二数据符合所述默认条件,从所述第二实体单元中选择至少一实体单元,并且基于所述第一程序化模式来程序化所选择的所述实体单元以储存所述第一数据的至少一部分数据。在本发明的一范例实施例中,所述判断储存于所述第一实体单元中的所述第二数据是否 符合所述默认条件的步骤包括:判断所述第二数据的数据量是否小于或等于默认数据量。在本发明的一范例实施例中,所述默认数据量等于所述第一数据的总数据量。在本发明的一范例实施例中,所述判断储存于所述第一实体单元中的所述第二数据是否符合所述默认条件的步骤包括:判断所述第二数据在所述第一实体单元所储存的所有数据中所占的比率是否小于或等于预设比率。在本发明的一范例实施例中,所述判断储存于所述第一实体单元中的所述第二数据是否符合所述默认条件的步骤包括:判断所述第一实体单元中的数据所属的逻辑单元的总数是否不大于默认值。在本发明的一范例实施例中,所述判断储存于所述第一实体单元中的所述第二数据是否符合所述默认条件的步骤包括:判断属于所述第一逻辑单元的数据是否在预定次数的写入操作中被重复更新。在本发明的一范例实施例中,所述数据程序化方法还包括:在基于所述第一程序化模式来程序化所选择的所述实体单元以储存所述第一数据的所述部分数据之后,将至少一第二逻辑单元映像至所选择的所述实体单元。在本发明的一范例实施例中,所述第二实体单元中可以被基于所述第一程序化模式来程序化的多个实体单元的总数被限制为不大于预设数目。在本发明的一范例实施例中,所述数据程序化方法还包括:若判定所述第二数据不符合所述默认条件,则将至少部分数据从所述第一实体单元搬移至所述第二实体单元中;以及在将所述至少部分数据从所述第一实体单元搬移至所述第二实体单元之后,将所述第一数据的所述部分数据储存至所述第一实体单元中。在本发明的一范例实施例中,若所述实体单元中的一个记忆胞被基于所述第一程序化模式来程序化,则第一数目的位数据被储存至所述记忆胞,若所述记忆胞被基于所述第二程序化模式来程序化,则第二数目的位数据被储存至所述记忆胞,其中所述第一数目小于所述第二数目。本发明的另一范例实施例提供一种内存储存装置,其包括连接接口单元、可复写式非易失性内存模块及内存控制电路单元。所述连接接口单元用以电性连接至主机系统。所述可复写式非易失性内存模块包括多个实体单元,其中所述实体单元包括多个第一实体单元与多个第二实体单元,其中所述第一实体单元被配置为仅能基于第一程序化模式来程序化,其中所述第二实体单元被初始地配置为基于第二程序化模式来程序化。所述内存控制电路单元电性连接至所述连接接口单元与所述可复写式非易失性内存模块,其中所述内存控制电路单元用以从所述主机系统接收第一数据,其中所述内存控制电路单元还用以判断所述第一实体单元是否已被使用至一默认容量,其中若判定所述第一实体单元已被使用至所述默认容量,所述内存控制电路单元还用以判断储存于所述第一实体单元中的第二数据是否符合默认条件,其中所述第二数据为属于至少一第一逻辑单元的当前数据,其中若判定所述第二数据符合所述默认条件,所述内存控制电路单元还用以从所述第二实体单元中选择至少一实体单元并且发送一写入指令序列以指示基于所述第一程序化模式来程序化所选择的所述实体单元以储存所述第一数据的至少一部分数据。在本发明的一范例实施例中,所述内存控制电路单元判断储存于所述第一实体单元中的所述第二数据是否符合所述默认条件的操作包括:判断所述第二数据的数据量是否小于或等 于默认数据量。在本发明的一范例实施例中,所述默认数据量等于所述第一数据的总数据量。在本发明的一范例实施例中,所述内存控制电路单元判断储存于所述第一实体单元中的所述第二数据是否符合所述默认条件的操作包括:判断所述第二数据在所述第一实体单元所储存的所有数据中所占的比率是否小于或等于预设比率。在本发明的一范例实施例中,所述内存控制电路单元判断储存于所述第一实体单元中的所述第二数据是否符合所述默认条件的操作包括:判断所述第一实体单元中的数据所属的逻辑单元的总数是否不大于默认值。在本发明的一范例实施例中,所述内存控制电路单元判断储存于所述第一实体单元中的所述第二数据是否符合所述默认条件的操作包括:判断属于所述第一逻辑单元的数据是否在预定次数的写入操作中被重复更新。在本发明的一范例实施例中,在基于所述第一程序化模式来程序化所选择的所述实体单元以储存所述第一数据的所述部分数据之后,所述内存控制电路单元还用以将至少一第二逻辑单元映像至所选择的所述实体单元。在本发明的一范例实施例中,所述第二实体单元中可以被基于所述第一程序化模式来程序化的多个实体单元的总数被限制为不大于预设数目。在本发明的一范例实施例中,若判定所述第二数据不符合所述默认条件,所述内存控制电路单元还用以将至少部分数据从所述第一实体单元搬移至所述第二实体单元中,其中在将所述至少部分数据从所述第一实体单元搬移至所述第二实体单元之后,所述内存控制电路单元还用以将所述第一数据的所述部分数据储存至所述第一实体单元中。在本发明的一范例实施例中,若所述实体单元中的一个记忆胞被基于所述第一程序化模式来程序化,则第一数目的位数据被储存至所述记忆胞,若所述记忆胞被基于所述第二程序化模式来程序化,则第二数目的位数据被储存至所述记忆胞,其中所述第一数目小于所述第二数目。本发明的另一范例实施例提供一种内存控制电路单元,其用于控制可复写式非易失性内存模块,其中所述可复写式非易失性内存模块包括多个实体单元,其中所述实体单元包括多个第一实体单元与多个第二实体单元,其中所述第一实体单元被配置为仅能基于第一程序化模式来程序化,其中所述第二实体单元被初始地配置为基于第二程序化模式来程序化,其中所述内存控制电路单元包括主机接口、内存接口及内存管理电路。所述主机接口用以电性连接至主机系统。所述内存接口用以电性连接至所述可复写式非易失性内存模块。所述内存管理电路电性连接至所述主机接口与所述内存接口,其中所述内存管理电路用以从所述主机系统接收第一数据,其中所述内存管理电路还用以判断所述第一实体单元是否已被使用至一默认容量,其中若判定所述第一实体单元已被使用至所述默认容量,所述内存管理电路还用以判断储存于所述第一实体单元中的第二数据是否符合一默认条件,其中所述第二数据为属于至少一第一逻辑单元的当前数据,其中若判定所述第二数据符合所述默认条件,所述内存管理电路还用以从所述第二实体单元中选择至少一实体单元并且发送写入指令序列以指示基于所述第一程序化模式来程序化所选择的所述实体单元以储存所述第一数据的至少一部分数据。在本发明的一范例实施例中,所述内存管理电路判断储存于所述第一实体单元中的所述 第二数据是否符合所述默认条件的操作包括:判断所述第二数据的数据量是否小于或等于默认数据量。在本发明的一范例实施例中,所述默认数据量等于所述第一数据的总数据量。在本发明的一范例实施例中,所述内存管理电路判断储存于所述第一实体单元中的所述第二数据是否符合所述默认条件的操作包括:判断所述第二数据在所述第一实体单元所储存的所有数据中所占的比率是否小于或等于预设比率。在本发明的一范例实施例中,所述内存管理电路判断储存于所述第一实体单元中的所述第二数据是否符合所述默认条件的操作包括:判断所述第一实体单元中的数据所属的逻辑单元的总数是否不大于默认值。在本发明的一范例实施例中,所述内存管理电路判断储存于所述第一实体单元中的所述第二数据是否符合所述默认条件的操作包括:判断属于所述第一逻辑单元的数据是否在预定次数的写入操作中被重复更新。在本发明的一范例实施例中,在基于所述第一程序化模式来程序化所选择的所述实体单元以储存所述第一数据的所述部分数据之后,所述内存管理电路还用以将至少一第二逻辑单元映像至所选择的所述实体单元。在本发明的一范例实施例中,所述第二实体单元中可以被基于所述第一程序化模式来程序化的多个实体单元的总数被限制为不大于预设数目。在本发明的一范例实施例中,若判定所述第二数据不符合所述默认条件,所述内存管理电路还用以将至少部分数据从所述第一实体单元搬移至所述第二实体单元中,其中在将所述至少部分数据从所述第一实体单元搬移至所述第二实体单元之后,所述内存管理电路还用以将所述第一数据的所述部分数据储存至所述第一实体单元中。在本发明的一范例实施例中,若所述实体单元中的一个记忆胞被基于所述第一程序化模式来程序化,则第一数目的位数据被储存至所述记忆胞,若所述记忆胞被基于所述第二程序化模式来程序化,则第二数目的位数据被储存至所述记忆胞,其中所述第一数目小于所述第二数目。基于上述,在接收到写入数据后,若被配置为基于第一程序化模式来程序化的第一实体单元已被使用至一默认容量且储存于第一实体单元中属于至少一逻辑单元的第二数据符合默认条件,则至少一个实体单元会被从初始地配置为基于第二程序化模式来程序化的实体单元中选择出来并且改为被基于第一程序化模式来程序化以储存来自主机系统的数据。藉此,可改善因缓冲区被写满导致的写入速度下降。为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合附图作详细说明如下。附图说明图1是根据本发明的一范例实施例所显示的主机系统、内存储存装置及输入/输出(I/O)装置的示意图;图2是根据本发明的另一范例实施例所显示的主机系统、内存储存装置及I/O装置的示意图;图3是根据本发明的另一范例实施例所显示的主机系统与内存储存装置的示意图;图4是根据本发明的一范例实施例所显示的内存储存装置的概要方框图;图5是根据本发明的一范例实施例所显示的内存控制电路单元的概要方框图;图6是根据本发明的一范例实施例所显示之管理可复写式非易失性内存模块的示意图;图7是根据本发明的一范例实施例所显示的记忆胞的临界电压分布的示意图;图8是根据本发明的一范例实施例所显示的储存数据的示意图;图9与图10是根据本发明的一范例实施例所显示的改变程序化模式来储存数据的示意图;图11是根据本发明的一范例实施例所显示的数据程序化方法的流程图。附图标记:10、30:内存储存装置11、31:主机系统110:系统总线111:处理器112:随机存取内存113:只读存储器114:数据传输接口12:输入/输出(I/O)装置20:主板201:随身盘202:记忆卡203:固态硬盘204:无线内存储存装置205:全球定位系统模块206:网络适配器207:无线传输装置208:键盘209:屏幕210:喇叭32:SD卡33:CF卡34:嵌入式储存装置341:嵌入式多媒体卡342:嵌入式多芯片封装储存装置402:连接接口单元404:内存控制电路单元406:可复写式非易失性内存模块502:内存管理电路504:主机接口506:内存接口508:错误检查与校正电路510:缓冲存储器512:电源管理电路601:缓冲区602:储存区610(0)~610(B):实体单元612(0)~612(C)、812(0)~812(D)、912(0)~912(F):逻辑单元701、702、711~714、721~728:分布910(1)~910(N+1):写入操作S1101:步骤(从主机系统接收第一数据)S1102:步骤(判断被配置为基于第一程序化模式来程序化的第一实体单元是否已被使用至一默认容量)S1103:步骤(将第一数据储存至第一实体单元)S1104:步骤(判断储存于所述第一实体单元中的第二数据是否符合默认条件)S1105:步骤(从被初始地配置为基于第二程序化模式来程序化的第二实体单元中选择至少一实体单元,并且基于所述第一程序化模式来程序化所选择的实体单元以储存所述第一数据的至少一部分数据)S1106:步骤(将至少部分数据从第一实体单元搬移至第二实体单元中)S1107:步骤(将第一数据的至少一部分数据储存至第一实体单元)具体实施方式一般而言,内存储存装置(亦称,内存储存系统)包括可复写式非易失性内存模块(rewritablenon-volatilememorymodule)与控制器(亦称,控制电路)。通常内存储存装置是与主机系统一起使用,以使主机系统可将数据写入至内存储存装置或从内存储存装置中读取数据。图1是根据本发明的一范例实施例所显示的主机系统、内存储存装置及输入/输出(I/O)装置的示意图。图2是根据本发明的另一范例实施例所显示的主机系统、内存储存装置及I/O装置的示意图。请参照图1与图2,主机系统11一般包括处理器111、随机存取内存(randomaccessmemory,RAM)112、只读存储器(readonlymemory,ROM)113及数据传输接口114。处理器111、随机存取内存112、只读存储器113及数据传输接口114皆电性连接至系统总线(systembus)110。在本范例实施例中,主机系统11是通过数据传输接口114与内存储存装置10电性连接。例如,主机系统11可经由数据传输接口114将数据储存至内存储存装置10或从内存储存装置10中读取数据。此外,主机系统11是通过系统总线110与I/O装置12电性连接。例如,主机系统11可经由系统总线110将输出信号传送至I/O装置12或从I/O装置12接收输入信号。在本范例实施例中,处理器111、随机存取内存112、只读存储器113及数据传输接口114可设置在主机系统11的主板20上。数据传输接口114的数目可以是一或多个。通过数据传 输接口114,主板20可以经由有线或无线方式电性连接至内存储存装置10。内存储存装置10可例如是随身盘201、记忆卡202、固态硬盘(SolidStateDrive,SSD)203或无线内存储存装置204。无线内存储存装置204可例如是近距离无线通信(NearFieldCommunication,NFC)内存储存装置、无线传真(WiFi)内存储存装置、蓝牙(Bluetooth)内存储存装置或低功耗蓝牙内存储存装置(例如,iBeacon)等以各式无线通信技术为基础的内存储存装置。此外,主板20也可以通过系统总线110电性连接至全球定位系统(GlobalPositioningSystem,GPS)模块205、网络适配器206、无线传输装置207、键盘208、屏幕209、喇叭210等各式I/O装置。例如,在一范例实施例中,主板20可通过无线传输装置207存取无线内存储存装置204。在一范例实施例中,所提及的主机系统为可实质地与内存储存装置配合以储存数据的任意系统。虽然在上述范例实施例中,主机系统是以计算机系统来作说明,然而,图3是根据本发明的另一范例实施例所显示的主机系统与内存储存装置的示意图。请参照图3,在另一范例实施例中,主机系统31也可以是数字相机、摄影机、通信装置、音频播放器、视讯播放器或平板计算机等系统,而内存储存装置30可为其所使用的SD卡32、CF卡33或嵌入式储存装置34等各式非易失性内存储存装置。嵌入式储存装置34包括嵌入式多媒体卡(embeddedMMC,eMMC)341和/或嵌入式多芯片封装储存装置(embeddedMultiChipPackage,eMCP)342等各类型将内存模块直接电性连接于主机系统的基板上的嵌入式储存装置。图4是根据本发明的一范例实施例所显示的内存储存装置的概要方框图。请参照图4,内存储存装置10包括连接接口单元402、内存控制电路单元404与可复写式非易失性内存模块406。在本范例实施例中,连接接口单元402是兼容于序列先进附件(SerialAdvancedTechnologyAttachment,SATA)标准。然而,必须了解的是,本发明不限于此,连接接口单元402亦可以是符合并列先进附件(ParallelAdvancedTechnologyAttachment,PATA)标准、电气和电子工程师协会(InstituteofElectricalandElectronicEngineers,IEEE)1394标准、高速周边零件连接接口(PeripheralComponentInterconnectExpress,PCIExpress)标准、通用串行总线(UniversalSerialBus,USB)标准、安全数字(SecureDigital,SD)接口标准、超高速一代(UltraHighSpeed-I,UHS-I)接口标准、超高速二代(UltraHighSpeed-II,UHS-II)接口标准、记忆棒(MemoryStick,MS)接口标准、多芯片封装(Multi-ChipPackage)接口标准、多媒体储存卡(MultiMediaCard,MMC)接口标准、崁入式多媒体储存卡(EmbeddedMultimediaCard,eMMC)接口标准、通用闪存(UniversalFlashStorage,UFS)接口标准、嵌入式多芯片封装(embeddedMultiChipPackage,eMCP)接口标准、小型快闪(CompactFlash,CF)接口标准、整合式驱动电子接口(IntegratedDeviceElectronics,IDE)标准或其他适合的标准。连接接口单元402可与内存控制电路单元404封装在一个芯片中,或者连接接口单元402是布设于一包含内存控制电路单元404之芯片外。内存控制电路单元404用以执行以硬件型式或韧体型式实作的多个逻辑门或控制指令并且根据主机系统11的指令在可复写式非易失性内存模块406中进行数据的写入、读取与抹除等运作。可复写式非易失性内存模块406是电性连接至内存控制电路单元404并且用以储存主机系统11所写入的数据。可复写式非易失性内存模块406可以是单阶记忆胞(SingleLevelCell,SLC)NAND型闪存模块(即,一个记忆胞中可储存1个位的闪存模块)、多阶记忆胞(MultiLevelCell,MLC)NAND型闪存模块(即,一个记忆胞中可储存2个位的闪存模块)、复数阶记忆胞 (TripleLevelCell,TLC)NAND型闪存模块(即,一个记忆胞中可储存3个位的闪存模块)、其他闪存模块或其他具有相同特性的内存模块。可复写式非易失性内存模块406中的每一个记忆胞是以电压(以下亦称为临界电压)的改变来储存一或多个位。具体来说,每一个记忆胞的控制闸极(controlgate)与通道之间有一个电荷捕捉层。通过施予一写入电压至控制栅极,可以改变电荷补捉层的电子量,进而改变记忆胞的临界电压。此改变临界电压的程序亦称为“把数据写入至记忆胞”或“程序化记忆胞”。随着临界电压的改变,可复写式非易失性内存模块406中的每一个记忆胞具有多个储存状态。通过施予读取电压可以判断一个记忆胞是属于哪一个储存状态,藉此取得此记忆胞所储存的一或多个位。图5是根据本发明的一范例实施例所显示的内存控制电路单元的概要方框图。请参照图5,内存控制电路单元404包括内存管理电路502、主机接口504及内存接口506。内存管理电路502用以控制内存控制电路单元404的整体运作。具体来说,内存管理电路502具有多个控制指令,并且在内存储存装置10运作时,此些控制指令会被执行以进行数据的写入、读取与抹除等运作。以下说明内存管理电路502的操作时,等同于说明内存控制电路单元404的操作。在本范例实施例中,内存管理电路502的控制指令是以韧体型式来实作。例如,内存管理电路502具有微处理器单元(未显示)与只读存储器(未显示),并且此些控制指令是被刻录至此只读存储器中。当内存储存装置10运作时,此些控制指令会由微处理器单元来执行以进行数据的写入、读取与抹除等运作。在另一范例实施例中,内存管理电路502的控制指令亦可以程序代码型式储存于可复写式非易失性内存模块406的特定区域(例如,内存模块中专用于存放系统数据的系统区)中。此外,内存管理电路502具有微处理器单元(未显示)、只读存储器(未显示)及随机存取内存(未显示)。特别是,此只读存储器具有开机码(bootcode),并且当内存控制电路单元404被致能时,微处理器单元会先执行此开机码来将储存于可复写式非易失性内存模块406中的控制指令加载至内存管理电路502的随机存取内存中。之后,微处理器单元会运转此些控制指令以进行数据的写入、读取与抹除等运作。此外,在另一范例实施例中,内存管理电路502的控制指令亦可以一硬件型式来实作。例如,内存管理电路502包括微控制器、记忆胞管理电路、内存写入电路、内存读取电路、内存抹除电路与数据处理电路。记忆胞管理电路、内存写入电路、内存读取电路、内存抹除电路与数据处理电路是电性连接至微控制器。记忆胞管理电路用以管理可复写式非易失性内存模块406的记忆胞或其群组。内存写入电路用以对可复写式非易失性内存模块406下达写入指令序列以将数据写入至可复写式非易失性内存模块406中。内存读取电路用以对可复写式非易失性内存模块406下达读取指令序列以从可复写式非易失性内存模块406中读取数据。内存抹除电路用以对可复写式非易失性内存模块406下达抹除指令序列以将数据从可复写式非易失性内存模块406中抹除。数据处理电路用以处理欲写入至可复写式非易失性内存模块406的数据以及从可复写式非易失性内存模块406中读取的数据。写入指令序列、读取指令序列及抹除指令序列可各别包括一或多个程序代码或脚本并且用以指示可复写式非易失性内存模块406执行相对应的写入、读取及抹除等操作。在一范例实施例中,内存管理电路502还可以下达其他类型的指令序列给可复写式非易失性内存模块406以指示执行相对应的操作。主机接口504是电性连接至内存管理电路502并且用以接收与识别主机系统11所传送的指令与数据。也就是说,主机系统11所传送的指令与数据会通过主机接口504来传送至内存管理电路502。在本范例实施例中,主机接口504是兼容于SATA标准。然而,必须了解的是本发明不限于此,主机接口504亦可以是兼容于PATA标准、IEEE1394标准、PCIExpress标准、USB标准、SD标准、UHS-I标准、UHS-II标准、MS标准、MMC标准、eMMC标准、UFS标准、CF标准、IDE标准或其他适合的数据传输标准。内存接口506是电性连接至内存管理电路502并且用以存取可复写式非易失性内存模块406。也就是说,欲写入至可复写式非易失性内存模块406的数据会经由内存接口506转换为可复写式非易失性内存模块406所能接受的格式。具体来说,若内存管理电路502要存取可复写式非易失性内存模块406,内存接口506会传送对应的指令序列。例如,这些指令序列可包括指示写入数据的写入指令序列、指示读取数据的读取指令序列、指示抹除数据的抹除指令序列、以及用以指示各种记忆体操作(例如,改变读取电压准位或执行垃圾回收程序等等)的相对应的指令序列。这些指令序列例如是由内存管理电路502产生并且通过内存接口506传送至可复写式非易失性内存模块406。这些指令序列可包括一个或多个信号,或是在总线上的数据。这些信号或数据可包括脚本或程序代码。例如,在读取指令序列中,会包括读取的辨识码、内存地址等信息。在一范例实施例中,内存控制电路单元404还包括错误检查与校正电路508、缓冲存储器510与电源管理电路512。错误检查与校正电路508是电性连接至内存管理电路502并且用以执行错误检查与校正程序以确保数据的正确性。具体来说,当内存管理电路502从主机系统11中接收到写入指令时,错误检查与校正电路508会为对应此写入指令的数据产生对应的错误更正码(errorcorrectingcode,ECC)和/或错误检查码(errordetectingcode,EDC),并且内存管理电路502会将对应此写入指令的数据与对应的错误更正码和/或错误检查码写入至可复写式非易失性内存模块406中。之后,当内存管理电路502从可复写式非易失性内存模块406中读取数据时会同时读取此数据对应的错误更正码和/或错误检查码,并且错误检查与校正电路508会依据此错误更正码和/或错误检查码对所读取的数据执行错误检查与校正程序。缓冲存储器510是电性连接至内存管理电路502并且用以暂存来自于主机系统11的数据与指令或来自于可复写式非易失性内存模块406的数据。电源管理电路512是电性连接至内存管理电路502并且用以控制内存储存装置10的电源。图6是根据本发明的一范例实施例所显示的管理可复写式非易失性内存模块的示意图。必须了解的是,在此描述可复写式非易失性内存模块406的实体单元的运作时,以“选择”与“分组”等词来操作实体单元是逻辑上的概念。也就是说,可复写式非易失性内存模块406的实体单元的实际位置并未改动,而是逻辑上对可复写式非易失性内存模块406的实体单元进行操作。在本范例实施例中,可复写式非易失性内存模块406的记忆胞会构成多个实体程序化单元,并且此些实体程序化单元会构成多个实体抹除单元。具体来说,同一条字符在线的记忆胞会组成一或多个实体程序化单元。若每一个记忆胞可储存2个以上的位,则同一条字符在线的实体程序化单元至少可被分类为下实体程序化单元与上实体程序化单元。例如,一记忆胞的最低有效位(LeastSignificantBit,LSB)是属于下实体程序化单元,并且一记忆胞的最高有 效位(MostSignificantBit,MSB)是属于上实体程序化单元。一般来说,在MLCNAND型闪存中,下实体程序化单元的写入速度会大于上实体程序化单元的写入速度,和/或下实体程序化单元的可靠度是高于上实体程序化单元的可靠度。在本范例实施例中,实体程序化单元为程序化的最小单元。即,实体程序化单元为写入数据的最小单元。例如,实体程序化单元为实体页面(page)或是实体扇(sector)。若实体程序化单元为实体页面,则此些实体程序化单元通常包括数据位区与冗余(redundancy)位区。数据位区包含多个实体扇,用以储存用户数据,而冗余位区用以储存系统数据(例如,错误更正码)。在本范例实施例中,数据位区包含32个实体扇,且一个实体扇的大小为512字节(byte,B)。然而,在其他范例实施例中,数据位区中也可包含8个、16个或数目更多或更少的实体扇,并且每一个实体扇的大小也可以是更大或更小。另一方面,实体抹除单元为抹除的最小单位。亦即,每一实体抹除单元含有最小数目之一并被抹除的记忆胞。例如,实体抹除单元为实体区块(block)。请参照图6,内存管理电路502会将可复写式非易失性内存模块406的实体单元610(0)~610(B)逻辑地分组为缓冲区601与储存区602。在本范例实施例中,实体单元610(0)~610(B)中的每一个实体单元是指一或多个实体抹除单元。然而,在另一范例实施例中,实体单元610(0)~610(B)中的每一个实体单元则是指一或多个实体程序化单元或者由任意数目的记忆胞所组成。一般来说,来自主机系统11的数据(即,用户数据)会先被暂存在属于缓冲区601的实体单元610(0)~610(A),然后再被搬移到属于储存区602的实体单元610(A+1)、610(A+2)~610(B)。也就是说,只有属于储存区602的实体单元610(A+1)~610(B)会被视为是用户数据的最终储存位置。内存管理电路502会配置逻辑单元612(0)~612(C)以映像储存区602中的实体单元610(A+1)~800(B)。例如,在本范例实施例中,主机系统11是通过逻辑地址(logicaladdress,LA)来存取储存区602中的数据,因此,逻辑单元612(0)~612(C)中的每一个逻辑单元是指一个逻辑地址。然而,在另一范例实施例中,逻辑单元612(0)~612(C)中的每一个逻辑单元也可以是指一个逻辑程序化单元、一个逻辑抹除单元或者由多个连续或不连续的逻辑地址组成。此外,逻辑单元612(0)~612(C)中的每一个逻辑单元可被映像至一个或多个实体单元。内存管理电路702会将逻辑单元与实体单元之间的映像关系(亦称为逻辑-实体映像关系)记录于至少一逻辑-实体映像表。当主机系统11欲从内存储存装置10读取数据或写入数据至内存储存装置10时,内存管理电路502可根据此逻辑-实体映像表来执行对于内存储存装置10的数据存取。在本范例实施例中,内存管理电路502会将属于缓冲区601的实体单元610(0)~610(A)(以下亦称为第一实体单元)配置为初始地(或仅能)基于某一程序化模式(以下亦称为第一程序化模式)来程序化并且将属于储存区602的实体单元610(A+1)~610(B)(以下亦称为第二实体单元)初始地配置为基于另一程序化模式(以下亦称为第二程序化模式)来程序化。一般来说,基于第一程序化模式来程序化记忆胞的程序化速度会高于基于第二程序化模式来程序化记忆胞的程序化速度。此外,基于第一程序化模式而被储存的数据的可靠度也往往高于基于第二程序化模式而被储存的数据的可靠度。在本范例实施例中,第一程序化模式是指单层记忆胞(singlelayermemorycell,SLC)模式、 下实体程序化(lowerphysicalprogramming)模式、混合程序化(mixtureprogramming)模式及少层记忆胞(lesslayermemorycell)模式的其中之一。在单层记忆胞模式中,一个记忆胞只储存一个位的数据。在下实体程序化模式中,只有下实体程序化单元会被程序化,而此下实体程序化单元所对应的上实体程序化单元可不被程序化。在混合程序化模式中,有效数据(或真实数据)会被程序化于下实体程序化单元中,而同时虚拟数据(dummydata)会被程序化至储存有效数据的下实体程序化单元所对应的上实体程序化单元中。在少层记忆胞模式中,一个记忆胞储存一第一数目的位的数据。例如,此第一数目可设为“1”。在本范例实施例中,第二程序化模式是指多阶记忆胞(MLC)程序化模式、复数阶(TLC)记忆胞程序化模式或类似模式。在第二程序化模式中,一个记忆胞储存有一第二数目的位的数据,其中此第二数目等于或大于“2”。例如,此第二数目可设为2或3。在另一范例实施例中,上述第一程序化模式中的第一数目与第二程序化模式中的第二数目皆可以是其他数目,只要满足第二数目大于第一数目即可。图7是根据本发明的一范例实施例所显示的记忆胞的临界电压分布的示意图。请参照图7,在本范例实施例中,若基于第一程序化模式来程序化多个记忆胞,则程序化后的记忆胞的临界电压分布可能会包括分布701与702。例如,若某一个记忆胞被程序化以储存位“0”,则此记忆胞的临界电压会属于分布701;若某一个记忆胞被程序化以储存位“1”,则此记忆胞的临界电压会属于分布702。然而,在另一范例实施例中,临界电压属于分布701的记忆胞也可以是被用以储存位“1”,并且临界电压属于分布702的记忆胞也可以是被用以储存位“0”。此外,若基于第二程序化模式来程序化多个记忆胞,则程序化后的记忆胞的临界电压分布可能会包括分布711~714或者721~728。在第二数目是“2”的范例实施例中,若某一个记忆胞被程序化以储存位“00”,则此记忆胞的临界电压会属于分布711;若某一个记忆胞被程序化以储存位“01”,则此记忆胞的临界电压会属于分布712;若某一个记忆胞被程序化以储存位“10”,则此记忆胞的临界电压会属于分布713;若某一个记忆胞被程序化以储存位“11”,则此记忆胞的临界电压会属于分布714。然而,在另一范例实施例中,临界电压属于分布711~714的记忆胞也可以分别用以储存位“11”、“10”、“01”及“00”或者其他位总数为“2”的位值。在第二数目是“3”的范例实施例中,属于分布721~728的记忆胞分别用以储存位“000”、“001”、“010”、“011”、“100”、“101”、“110”及“111”。然而,在另一范例实施例中,属于分布721~728的记忆胞也可以分别用以储存位“111”、“110”、“101”、“100”、“011”、“010”、“001”及“000”或者其他位总数为“3”的位值。为了说明方便,在以下范例实施例中,是以每一个记忆胞储存“1”个位的数据的少层记忆胞模式来作为第一程序化模式的范例,并且以每一个记忆胞储存有“2”或“3”个位的数据的程序化模式来作为第二程序化模式的范例。但是,在其他范例实施例中,只要满足上述条件的第一程序化模式与第二程序化模式皆可以被采用。图8是根据本发明的一范例实施例所显示的储存数据的示意图。请参照图8,当主机系统11欲储存数据时,主机系统11会发送写入指令至内存储存装置10。此写入指令会指示将数据储存至某一个逻辑单元。储存至某一个逻辑单元的数据会被视为是属于此逻辑单元的数据。根据写入指令,内存管理电路502会指示将属于某一个逻辑单元的数据暂存至属于缓冲区601的实体单元。在图8中,储存有数据的逻辑单元与实体单元 是以斜线来标示。一般来说,在属于缓冲区601的实体单元610(0)~610(A)被写满或用尽之后,暂存在缓冲区601的数据会被搬移至储存区602。储存区602中被用来储存数据的实体单元的地址会被视为数据的最终储存地址并且被映像至数据所属的逻辑单元。例如,假设储存于实体单元610(0)~610(A)的数据属于逻辑单元812(0)~812(D),则在将此些数据从属于缓冲区601的实体单元610(0)~610(A)搬移至属于储存区602的实体单元610(A+1)~610(E)之后,逻辑单元812(0)~812(D)会被映像至实体单元610(A+1)~610(E)。其中,逻辑单元812(0)~812(D)例如是包含于图6的逻辑单元612(0)~612(C)中。在本范例实施例中,属于缓冲区601的每一个记忆胞皆用以储存第一数目的位,并且属于储存区602的每一个记忆胞可用以储存第二数目的位。在将数据从缓冲区601搬移至储存区602的操作中,原先暂存在数目较多的记忆胞或实体单元的数据会被搬移并且改为储存在数目较少的记忆胞或实体单元中。例如,在第一数目是“1”并且第二数目是“2”的范例实施例中,暂存在属于缓冲区601的二个记忆胞(或实体单元)的数据可以被搬移并且合并储存在储存区602的一个记忆胞(或实体单元)中。在第一数目是“1”并且第二数目是“3”的范例实施例中,暂存在属于缓冲区601的三个记忆胞(或实体单元)的数据则会被搬移并且合并储存在储存区602的一个记忆胞(或实体单元)中。藉此,基于程序化模式不同,可将来自主机系统11的数据以较快的储存速度暂存在缓冲区601并迅速回复主机系统11数据已储存,然后再在后端(或背景)执行较为缓慢的数据搬移。然而,在某些情况下,若属于缓冲区601的实体单元610(0)~610(A)已被写满,则来自主机系统11的数据可能会跳过缓冲区601而直接被储存在储存区602。例如,在从主机系统11接收数据(以下亦称为第一数据)之后,内存管理电路502会判断属于缓冲区601的第一实体单元(即,实体单元610(0)~610(A))是否已被写满。在本范例实施例中,属于缓冲区601的第一实体单元被写满是指缓冲区601中没有多余的实体单元来暂存其他来自主机系统11的数据(例如,第一数据中的至少一部分数据),除非将至少部分数据从缓冲区601中搬移出去或清除。或者,在另一范例实施例中,属于缓冲区601的第一实体单元被写满也可以视为是缓冲区601的所有第一实体单元已被用尽。在属于缓冲区601的第一实体单元被写满的状态下,第一实体单元中所暂存的数据可包括有效(valid)数据与无效(invalid)数据。其中,有效数据是属于某一个逻辑单元的当前数据,而无效数据则不是属于任一个逻辑单元的当前数据。例如,若主机系统11将一笔新数据储存至某一逻辑单元而覆盖掉此逻辑单元原先储存的旧数据(即更新属于此逻辑单元的数据),则暂存在缓冲区601中的此笔新数据即为属于此逻辑单元的当前数据并且会被标记为有效数据,而被覆盖掉的旧数据可能仍然储存在缓冲区601中但被标记为无效数据。在一范例实施例中,若属于某一逻辑单元的数据被更新,则此逻辑单元与储存有属于此逻辑单元的旧数据的实体单元之间的映像关系会被移除,并且此逻辑单元与储存有属于此逻辑单元的当前数据的实体单元之间的映像关系会被建立。或者,在另一范例实施例中,若属于某一逻辑单元的数据被更新,则此逻辑单元与储存有属于此逻辑单元的旧数据的实体单元之间的映像关系仍可被维持,视实务上的需求而定。此外,属于某一个逻辑单元的当前数据(或有效数据)亦可视为是属于此逻辑单元的最新数据。若判定第一实体单元已被写满,内存管理电路502会进一步判断储存于第一实体单元中 的某些数据是否符合一默认条件。在一范例实施例中,所述数据至少包括储存于第一实体单元中的第二数据。例如,第二数据为属于至少一个逻辑单元(以下亦称为第一逻辑单元)的当前数据(即,有效数据)。在另一范例实施例中,第二数据为储存于第一实体单元中的所有有效数据。若判定第二数据符合默认条件,内存管理电路502会从属于储存区602的第二实体单元(即,实体单元610(A+1)~610(B))中选择至少一个实体单元。尔后,内存管理电路502会基于第一程序化模式来程序化所选择的实体单元以储存第一数据的至少一部分数据。换言之,在一范例实施例中,若属于缓冲区601的所有实体单元皆已被写满且暂存于缓冲区601的有效数据的分布符合一默认条件,则储存区602中某些被初始地配置为以第二程序化模式来程序化的实体单元会被改为基于第一程序化模式来程序化以储存无法快速写进缓冲区601的数据。藉此,虽然上述第一数据的至少一部分数据是被跳过缓冲区601而直接储存至储存区602,但由于此些数据是以基于相同于缓冲区601的程序化模式的第一程序化模式来储存,故对于此些数据的储存速度仍可以被维持在等同于将数据暂存至缓冲区601的速度。在本范例实施例中,内存管理电路502会判断第二数据的数据量是否等于一默认数据量。此默认数据量可对应于缓冲区601可以储存的所有数据的数据量(即,缓冲区601的总容量)来设定。例如,若缓冲区601可以储存的所有数据的数据量为5GB,则默认数据量可设为1GB。在另一范例实施例中,默认数据量也可以根据实务上的需求来设定或调整。若第二数据的数据量等于默认数据量,内存管理电路502会判定第二数据符合默认条件并且执行上述从属于储存区602的第二实体单元中选择至少其中之一以及基于第一程序化模式来程序化所选择的实体单元的操作。值得一提的是,在一范例实施例中,上述判断第二数据的数据量是否符合默认数据量的操作也可以包括判断第二数据的数据量是否小于默认数据量。因此,判定第二数据的数据量小于或等于默认数据量皆可视为第二数据符合默认条件。在一范例实施例中,若判定第二数据不符合默认条件,例如,判定第二数据之数据量大于默认数据量,则内存管理电路502会执行正常程序来储存数据。例如,由于缓冲区601已被写满,故内存管理电路502会将至少部分数据从属于缓冲区601的第一实体单元搬移至属于储存区602的第二实体单元中。然后,内存管理电路502会抹除至少部分没有储存有效数据的第一实体单元并且将第一数据的至少一部分数据储存至已被抹除的第一实体单元中。在一范例实施例中,默认数据量也可以是根据第一数据的数据量来设定。例如,可将默认数据量设定为等于第一数据的总数据量。藉此,在某些内存测速程序中,若每一次写入的数据(即第一数据)的数据大小都是固定的,则即使缓冲区601已被写满,后续数据的写入速度仍可以被维持。在一范例实施例中,默认数据量也可以同时根据缓冲区601的总容量与第一数据的总数据量等相关信息来设定。图9与图10是根据本发明的一范例实施例所显示的改变程序化模式来储存数据的示意图。请参照图9,主机系统11发送一写入指令(以下亦称为第一写入指令)以指示将一笔数据储存至逻辑单元912(0)~912(F)。根据第一写入指令,写入程序901(1)会被执行。例如,在写入程序901(1)中,属于逻辑单元912(0)~912(F)的数据(即对应于第一写入指令的写入数据)会被暂存在属于缓冲区601的实体单元610(0)~610(G)并且被标记为有效数据。尔后,主机系统11发送另一写入指令(以下亦称为第二写入指令)以指示将另一笔数据储存至逻辑单元912(0)~912(F)。根据第二写入指令,写入程序901(2)会被执行。例如,在写入程序901(2)中, 属于逻辑单元912(0)~912(F)的数据(即,对应于第二写入指令的写入数据)会被暂存在属于缓冲区601的实体单元610(G+1)~610(H)。同时,由于属于逻辑单元912(0)~912(F)的数据被更新,因此暂存在实体单元610(0)~610(G)的数据会被标记为无效数据。在执行对于逻辑单元912(0)~912(F)的N-1次写入操作之后,根据主机系统11所发送的指示将另一笔数据储存至逻辑单元912(0)~912(F)的另一写入指令(以下亦称为第N写入指令),写入程序901(N)会被执行。例如,在写入程序901(N)中,属于逻辑单元912(0)~912(F)的数据(即对应于第N写入指令的写入数据)会被暂存在属于缓冲区601的实体单元610(I+1)~610(A)并且被视为有效数据;同时,暂存在实体单元610(0)~610(I)的数据则因为亦属于逻辑单元912(0)~912(F)而被标记为无效数据。此时,属于缓冲区601的实体单元610(0)~610(A)皆已被写满。在属于缓冲区601的实体单元610(0)~610(A)皆已被写满的状况下,若主机系统11又发送另一写入指令(以下亦称为第N+1写入指令)以指示将另一笔数据(即第一数据)也储存至逻辑单元912(0)~912(F),则内存管理电路502会判断储存于缓冲区601中的第二数据(即,有效数据)是否符合默认条件。请参照图10,储存于缓冲区601中的第二数据的数据量等于逻辑单元912(0)~912(F)的总容量,因此内存管理电路502会从储存区602中选择实体单元610(A+1)~610(J)并且以第一程序化模式来程序化实体单元610(A+1)~610(J)以储存属于逻辑单元912(0)~912(F)的数据(即对应于第N+1写入指令的写入数据)。换言之,在对应于第N+1写入指令的写入程序910(N+1)中,属于逻辑单元912(0)~912(F)的数据会直接被储存至属于储存区602的实体单元610(A+1)~610(J)中并且被视为有效数据;而暂存在实体单元610(0)~610(A)的所有数据则因为亦属于逻辑单元912(0)~912(F)而被标记为无效数据。此外,逻辑单元912(0)~912(F)会被映像至实体单元610(A+1)~610(J)。在将属于逻辑单元912(0)~912(F)的数据储存至实体单元610(A+1)~610(J)之后,若主机系统11又重复更新属于逻辑单元912(0)~912(F)的数据,则由于缓冲区601已被写满且缓冲区601中没有有效数据(即第二数据的数据量小于默认数据量),故属于逻辑单元912(0)~912(F)的数据可根据上述操作而被直接被储存至属于储存区602的其余实体单元,在此便不赘述。在图10的一范例实施例中,当来自主机系统11的写入数据被基于第一程序化模式来储存在储存区602时,在背景,属于缓冲区601的实体单元610(0)~610(A)中的至少部分实体单元可以被抹除。藉此,被抹除的实体单元可接续用以暂存其他来自主机系统11的写入数据。在一范例实施例中,上述判断第二数据是否符合默认条件的操作是对应于主机系统11欲储存第一数据并且缓冲区601已经被写满而执行。若主机系统11欲储存第一数据时缓冲区601没有被写满,则内存管理电路502会直接依照上述说明将至少一部分的第一数据暂存至缓冲区601,直到缓冲区601已经被写满为止。然后,针对第一数据中无法直接储存至缓冲区601的至少部分数据才考虑是否基于第一程序化模式来储存至储存区602。在一范例实施例中,所提及的缓冲区601已被写满是指缓冲区601中对应于一个默认容量的实体单元已被使用。其中,此默认容量可以是小于或等于缓冲区601的总容量。例如,在图9与图10的范例实施例中,所设定的默认容量是指实体单元610(0)~610(A)的总容量,而已被使用的实体单元可以是储存有效数据和/或无效数据。此外,在一范例实施例中,此默认容量可以是设定为缓冲区601的总容量的一个默认百分比,例如,缓冲区601的总容量的 70%~90%等。虽然上述范例实施例是以判断第二数据的数据量是否小于或等于默认数据量来作为第二数据是否符合默认条件的判断依据,然而,在另一范例实施例中,内存管理电路502也可以判断第二数据在属于缓冲区601的第一实体单元所储存的所有数据中所占的比率是否小于或等于一预设比率。藉此,不需要真正获得第二数据的数据量,利用估计的方式即可判断第二数据是否符合默认条件。例如,可以单独分析一个第一实体单元中有效数据所占的比率或者多个第一实体单元中有效数据所占的平均比率来作为评估第二数据在属于缓冲区601的第一实体单元所储存的所有数据中所占的比率的依据。若判定第二数据在第一实体单元所储存的所有数据中所占的比率小于或等于预设比率,可推估第二数据的数据量应小于或等于默认数据量;若判定第二数据在第一实体单元所储存的所有数据中所占的比率大于预设比率,可推估第二数据的数据量应大于默认数据量。此外,预设比率也可以根据缓冲区601的总容量和/或第一数据的数据大小来设定。例如,若缓冲区601的总容量为5GB且每一次储存至重复的逻辑单元的写入数据的数据大小为1GB,则此预设比率可设为1/5。在另一范例实施例中,内存管理电路502也可以判断一预定次数的写入操作是否皆是用以更新属于相同的逻辑单元的数据。此预定次数可以是2次、3次或更多。此预定次数的写入操作可以是指连续执行的两个以上的写入操作或不连续执行的两个以上的写入操作。例如,在图9与10的另一范例实施例中,内存管理电路502也可以判断属于逻辑单元912(0)~912(F)的数据是否在至少连续两次的写入操作中(例如,写入操作901(1)与901(2),或者901(N)与901(N+1)等)被重复更新。若属于相同的逻辑单元的数据在至少连续两次的写入操作中被重复更新,如图9与图10的范例实施例所示,则内存管理电路502也可以判定第二数据符合默认条件并且直接将当前无法储存至缓冲区601的数据以第一程序化模式储存至储存区602。反之,若连续执行的写入操作是针对不同的逻辑单元或者不是重复更新特定逻辑单元中的数据,则也可判定第二数据不符合默认条件并据以执行相对应的数据储存程序。在另一范例实施例中,内存管理电路502也可以判断第一数据所属的逻辑单元的总数是否不大于一默认值。以图9与图10为例,假设此默认值为“F+1”,则当储存属于逻辑单元912(0)~912(F)的第一数据时,内存管理电路502可根据第一数据所属的逻辑单元912(0)~912(F)的总数等于此默认值来判定第二数据符合默认条件。反之,若第一数据所属的逻辑单元的总数大于此默认值,则内存管理电路502可判定第二数据不符合默认条件。在一范例实施例中,此默认值可以是根据储存于缓冲区601的第二数据所属的逻辑单元的总数来设定。例如,在图9与图10的一范例实施例中,可根据逻辑单元912(0)~912(F)之总数而将此默认值设为“F+1”。在另一范例实施例中,内存管理电路502也可以判断当前储存于第一实体单元中的数据所属的逻辑单元的总数是否不大于另一默认值。例如,此数据可以是指有效数据、无效数据或者其组合。例如,若内存管理电路502判定当前储存于第一实体单元中的数据所属的逻辑单元的总数不大于此另一默认值,则内存管理电路502会判定第二数据符合默认条件。或者,若内存管理电路502判定当前储存于第一实体单元中的数据所属的逻辑单元的总数大于此另一默认值,则内存管理电路502会判定第二数据不符合默认条件。在一范例实施例中,可根据第一数据所属的逻辑单元的总数来设定此另一默认值。例如,可将此另一默认值设定为等 于第一数据所属的逻辑单元的总数。在一范例实施例中,上述提及的各种判断第二数据是否符合默认条件的操作可以择一使用。或者,在另一范例实施例中,上述提及的各种判断第二数据是否符合默认条件的操作可以部分或全部合并使用,从而提升判断的精确度。在一范例实施例中,内存管理电路502会限制储存区602中可以被改为基于第一程序化模式而被程序化的第二实体单元的总数为不大于一预设数目,以避免过多初始配置为基于第二程序化模式的实体单元被改为基于第一程序化模式来程序化。例如,在第二数目为“3”的一个范例实施例中,若缓冲区601的总容量为5GB且每一次储存至重复的逻辑单元的写入数据的数据大小为1GB,则可设定储存区602中最多可以同时有M个实体单元被改为基于第一程序化模式来程序化。其中,若皆以初始配置的第二程序化模式来程序化此M个实体单元,则此M个实体单元的总容量为9GB;而若皆改为以第一程序化模式来程序化此M个实体单元,则此M个实体单元的总容量为3GB。然而,关于上述提及的各个设定值皆为范例并且可视实务需求而加以调整。在一范例实施例中,若将储存区602中反应于上述操作而被改为基于第一程序化模式来程序化的某一个实体单元抹除,则此实体单元会回复为基于初始配置的第二程序化模式来进行程序化的状态。也就是说,此实体单元往后还是会被初始地配置为基于第二程序化模式来程序化以储存从缓冲区601搬移过来的数据。在一范例实施例中,每一次从储存区602中选择来基于第一程序化模式进行程序化的实体单元是随机(randomly)从空的(empty)(或闲置的(spare))实体单元中选择。然而,在另一范例实施例中,也可以根据特定的筛选条件来从储存区602中选择欲基于第一程序化模式进行程序化的实体单元。例如,可根据储存区602中至少部分实体单元的抹除计数(erasecount)、写入计数、读取计数和/或位错误率(biterrorrate)等信息来挑选欲基于第一程序化模式进行程序化的实体单元。图11是根据本发明的一范例实施例所显示的数据程序化方法的流程图。请参照图11,在步骤S1101中,从主机系统接收第一数据。在步骤S1102中,判断被配置为初始地(或仅能)基于第一程序化模式来程序化的第一实体单元是否已被使用至一默认容量。若判定所述第一实体单元尚未被使用至所述默认容量,在步骤S1103中,将第一数据储存至第一实体单元。若判定所述第一实体单元已被使用至所述默认容量,在步骤S1104中,判断储存于所述第一实体单元中的(至少)第二数据是否符合默认条件。其中所述第二数据为属于至少一第一逻辑单元的当前数据(即有效数据)。若判定所述第二数据符合默认条件,在步骤S1105中,从被初始地配置为基于第二程序化模式来程序化的第二实体单元中选择至少一实体单元,并且基于所述第一程序化模式来程序化所选择的实体单元以储存所述第一数据的至少一部分数据。藉此,即使写入速度较快的第一实体单元已被使用至一个预设程度(例如,写满),其余无法写入至第一实体单元的数据也可以基于相同或相似的写入速度来储存至第二实体单元。此外,若判定所述第二数据不符合默认条件,表示当前的写入速度不需要刻意控制,故在步骤S1106中,将至少部分数据从已被使用的第一实体单元搬移至第二实体单元中并且抹除至少部分的第一实体单元。然后,在步骤S1107中,将第一数据的至少一部分数据储存至已被抹除的第一实体单元。然而,图11中各步骤已详细说明如上,在此便不再赘述。值得注意的是,图11中各步 骤可以实作为多个程序代码或是电路,本发明不加以限制。此外,图11的方法可以搭配以上范例实施例使用,也可以单独使用,本发明不加以限制。综上所述,若被配置为基于第一程序化模式来程序化的第一实体单元已被使用至一默认容量且储存于第一实体单元中的某些数据符合默认条件,则至少一个实体单元会被从初始地配置为基于第二程序化模式来程序化的实体单元中选择出来并且改为被基于第一程序化模式来程序化以储存来自主机系统的数据。藉此,可改善因缓冲区被写满导致的写入速度下降。在一范例实施例中,对于所使用的逻辑地址不连续的随机写入(randomwrite)的测试模式也可以有改善。虽然本发明已以实施例揭示如上,然其并非用以限定本发明,任何所属
技术领域:
:中普通技术人员,在不脱离本发明的精神和范围内,当可作些许的改动与润饰,故本发明的保护范围当视所附权利要求界定范围为准。当前第1页1 2 3 当前第1页1 2 3