平均磨损方法、内存控制电路单元及内存储存装置与流程

文档序号:11407052阅读:248来源:国知局
平均磨损方法、内存控制电路单元及内存储存装置与流程

本发明涉及一种平均磨损方法,尤其涉及一种用于可复写式非易失性内存模块的平均磨损方法、内存控制电路单元及内存储存装置。



背景技术:

数码相机、移动电话与mp3播放器在这几年来的成长十分迅速,使得消费者对储存媒体的需求也急速增加。由于可复写式非易失性内存模块(例如,闪存)具有数据非易失性、省电、体积小,以及无机械结构等特性,所以非常适合内建于上述所举例的各种可携式多媒体装置中。

一般来说,可复写式非易失性内存模块会与主机系统搭配使用。而要写入至可复写式非易失性内存模块的数据会包括属于连续地址的数据与属于不连续地址的数据。因此,对应不同的写入数据,可复写式非易失性内存模块的写入操作可包括连续写入(sequentialwrite)操作与随机写入(randomwrite)操作。在一般的运作下,主机系统可先以连续写入的方式将属于连续地址的数据写入至可复写式非易失性内存模块中一部分实体抹除单元中。然后,主机系统会改以非连续写入的方式(例如,随机写入操作)将属于不连续地址的数据写入至可复写式非易失性内存模块中另一部分实体抹除单元中。而在一般运作下,主机系统执行非连续写入的机率可能会高于执行连续写入的机率。因此,在执行了一段时间的非连续写入操作后,使用非连续写入操作写入数据的实体抹除单元的抹除次数会高于使用连续写入操作写入数据的实体抹除单元的抹除次数。当抹除次数的差距达到一定程度时,便会执行可复写式非易失性内存模块的平均磨损(wearleveling)操作,以避免发生只因部分实体抹除单元的抹除次数过高而导致整个可复写式非易失性内存模块的性能退化,甚至无法继续使用的问题。

平均磨损操作是根据抹除次数的多寡来决定要执行平均磨损操作的实体抹除单元。因此,在执行了一段时间的平均磨损操作后,使用连续写入操作写入数据的实体抹除单元的抹除次数可能会与使用非连续写入操作写入数据的实体抹除单元的抹除次数相近。此后,在执行平均磨损操作时,使用连续写入操作写入数据的实体抹除单元与使用非连续写入操作写入数据的实体抹除单元可能会一起被挑选为要执行平均磨损操作的实体抹除单元。如此一来,原本属于连续地址的数据可能会与属于不连续地址的数据一起被写入至同一个实体抹除单元中。然而,在此种情况下,在执行连续写入操作时,可能会因为无法有效率地执行垃圾收集(garbagecollection)而降低连续写入操作的执行速度,进而无法使连续写入操作维持在一定的执行速度。基此,如何避免因执行垃圾收集而影响连续写入的速度,为此领域技术人员所关心的议题。



技术实现要素:

本发明提供一种平均磨损方法、内存控制电路单元及内存储存装置,可以有效地避免因执行垃圾收集而影响连续写入的速度。

本发明的一范例实施例提出一种用于可复写式非易失性内存模块的平均磨损方法,其中可复写式非易失性内存模块具有多个实体抹除单元,并且每一个实体抹除单元具有相同的容量。本方法包括:将实体抹除单元区分为第一群组与第二群组,其中第一群组的实体抹除单元无存有有效数据,并且第二群组的实体抹除单元储存有有效数据。本方法也包括:为每一个实体抹除单元记录抹除次数,并且根据所记录的抹除次数排列第二群组的实体抹除单元。本方法还包括:根据所记录的抹除次数从第一群组的实体抹除单元中提取一个实体抹除单元作为第一实体抹除单元,并且根据第二群组的实体抹除单元的排列顺序从第二群组的实体抹除单元中选取一个实体抹除单元作为第二实体抹除单元,其中第二实体抹除单元的有效数据量小于所述容量。本方法还包括:根据第二群组的实体抹除单元的排列顺序从第二群组的实体抹除单元中仅选取有效数据量小于所述容量的另一个实体抹除单元作为一第三实体抹除单元,以及将第二实体抹除单元的有效数据及第三实体抹除单元的至少部分有效数据程序化至第一实体抹除单元。

在本发明的一范例实施例中,上述根据第二群组的实体抹除单元的排列顺序从第二群组的实体抹除单元中仅选取有效数据量小于所述容量的另一实体抹除单元作为第三实体抹除单元的步骤包括:根据第二群组的实体抹除单元的排列顺序从第二群组的实体抹除单元中选取一个实体抹除单元作为候选实体抹除单元,并且判断候选实体抹除单元的有效数据量是否小于所述容量;倘若候选实体抹除单元的有效数据量不小于所述容量时,根据第二群组的实体抹除单元的排列顺序从第二群组的实体抹除单元中选取另一个实体抹除单元作为候选实体抹除单元;以及倘若候选实体抹除单元的有效数据量小于所述容量时,决定候选实体抹除单元为第三实体抹除单元。

在本发明的一范例实施例中,上述将第二实体抹除单元的有效数据及第三实体抹除单元的至少部分有效数据程序化至第一实体抹除单元的步骤包括:根据第二实体抹除单元的有效数据量及第三实体抹除单元的有效数据量计算有效数据量总和,并且判断有效数据量总和是否小于所述容量;倘若有效数据量总和不小于所述容量时,将第二实体抹除单元的有效数据及第三实体抹除单元的至少部分有效数据程序化至第一实体抹除单元;倘若有效数据量总和小于所述容量时,将第二实体抹除单元的有效数据及第三实体抹除单元的有效数据程序化至第一实体抹除单元,根据第二群组的实体抹除单元的排列顺序从第二群组的实体抹除单元中仅选取有效数据量小于所述容量的另一个实体抹除单元作为第四实体抹除单元;以及将第二实体抹除单元的有效数据、第三实体抹除单元的有效数据及第四实体抹除单元的至少部分有效数据程序化至第一实体抹除单元。

在本发明的一范例实施例中,上述根据所记录的抹除次数排列第二群组的实体抹除单元的步骤包括:根据所记录的抹除次数由小到大排列第二群组的实体抹除单元。

在本发明的一范例实施例中,上述根据所记录的抹除次数从第一群组的实体抹除单元中提取一个实体抹除单元作为第一实体抹除单元的步骤包括:从第一群组的实体抹除单元中提取具有最大抹除次数的实体抹除单元作为第一实体抹除单元。

在本发明的一范例实施例中,上述的第二实体抹除单元的有效数据与第三实体抹除单元 的有效数据是属于多个不连续逻辑地址。

本发明的一范例实施例提出一种用于控制可复写式非易失性内存模块的内存控制电路单元,其中可复写式非易失性内存模块具有多个实体抹除单元,并且每一个实体抹除单元具有相同的容量。本内存控制电路单元包括主机接口、内存接口与内存管理电路。主机接口用以电性连接至主机系统。内存接口用以电性连接至可复写式非易失性内存模块。内存管理电路电性连接至主机接口与内存接口,并且用以将实体抹除单元区分为第一群组与第二群组,其中第一群组的实体抹除单元无存有有效数据,并且第二群组的实体抹除单元储存有有效数据。再者,内存管理电路更用以为每一个实体抹除单元记录抹除次数,并且根据所记录的抹除次数排列第二群组的实体抹除单元。此外,内存管理电路更用以根据所记录的抹除次数从第一群组的实体抹除单元中提取一个实体抹除单元作为第一实体抹除单元,并且根据第二群组的实体抹除单元的排列顺序从第二群组的实体抹除单元中选取一个实体抹除单元作为第二实体抹除单元,其中第二实体抹除单元的有效数据量小于所述容量。另外,内存管理电路更用以根据第二群组的实体抹除单元的排列顺序从第二群组的实体抹除单元中仅选取有效数据量小于所述容量的另一个实体抹除单元作为第三实体抹除单元。而且,内存管理电路更用以下达指令序列将第二实体抹除单元的有效数据及第三实体抹除单元的至少部分有效数据程序化至第一实体抹除单元。

在本发明的一范例实施例中,在上述根据第二群组的实体抹除单元的排列顺序从第二群组的实体抹除单元中仅选取有效数据量小于所述容量的另一个实体抹除单元作为第三实体抹除单元的运作中,内存管理电路更用以根据第二群组的实体抹除单元的排列顺序从第二群组的实体抹除单元中选取一个实体抹除单元作为候选实体抹除单元,并且判断候选实体抹除单元的有效数据量是否小于该容量。其中倘若候选实体抹除单元的有效数据量不小于所述容量时,内存管理电路更用以根据第二群组的实体抹除单元的排列顺序从第二群组的实体抹除单元中选取另一个实体抹除单元作为候选实体抹除单元;倘若候选实体抹除单元的有效数据量小于所述容量时,内存管理电路更用以决定候选实体抹除单元为第三实体抹除单元。

在本发明的一范例实施例中,在上述下达指令序列将第二实体抹除单元的有效数据及第三实体抹除单元的至少部分有效数据程序化至第一实体抹除单元的运作中,内存管理电路更用以根据第二实体抹除单元的有效数据量及第三实体抹除单元的有效数据量计算有效数据量总和,并且判断有效数据量总和是否小于所述容量。其中倘若有效数据量总和不小于所述容量时,内存管理电路更用以下达指令序列将第二实体抹除单元的有效数据及第三实体抹除单元的至少部分有效数据程序化至第一实体抹除单元;倘若有效数据量总和小于所述容量时,内存管理电路更用以根据第二群组的实体抹除单元的排列顺序从第二群组的实体抹除单元中仅选取有效数据量小于所述容量的另一个实体抹除单元作为第四实体抹除单元。此外,内存管理电路更用以下达指令序列将第二实体抹除单元的有效数据、第三实体抹除单元的有效数据及第四实体抹除单元的至少部分有效数据程序化至第一实体抹除单元。

在本发明的一范例实施例中,在上述根据所记录的抹除次数排列第二群组的实体单元的运作中,内存管理电路更用以根据所记录的抹除次数由小到大排列第二群组的实体抹除单元。

在本发明的一范例实施例中,在上述根据所记录的抹除次数从第一群组的实体抹除单元中提取一个实体抹除单元作为第一实体抹除单元的运作中,内存管理电路更用以从第一群组的实体抹除单元中提取具有最大抹除次数的实体抹除单元作为第一实体抹除单元。

在本发明的一范例实施例中,上述的第二实体抹除单元的有效数据与第三实体抹除单元的有效数据是属于多个不连续逻辑地址。

本发明的一范例实施例提出一种内存储存装置,其包括连接接口单元、可复写式非易失性内存模块与内存控制电路单元。连接接口单元用以电性连接至主机系统。可复写式非易失性内存模块包括多个实体抹除单元。内存控制电路单元电性连接至连接接口单元与可复写式非易失性内存模块,并且用以将实体抹除单元区分为第一群组与第二群组,其中第一群组的实体抹除单元无存有有效数据,并且第二群组的实体抹除单元储存有有效数据。再者,内存控制电路单元更用以为每一个实体抹除单元记录抹除次数,并且根据所记录的抹除次数排列第二群组的实体抹除单元。此外,内存控制电路单元更用以根据所记录的抹除次数从第一群组的实体抹除单元中提取一个实体抹除单元作为第一实体抹除单元,并且根据第二群组的实体抹除单元的排列顺序从第二群组的实体抹除单元中选取一个实体抹除单元作为第二实体抹除单元,其中第二实体抹除单元的有效数据量小于所述容量。另外,内存控制电路单元更用以根据第二群组的实体抹除单元的排列顺序从第二群组的实体抹除单元中仅选取有效数据量小于所述容量的另一个实体抹除单元作为第三实体抹除单元。而且,内存控制电路单元更用以下达指令序列将第二实体抹除单元的有效数据及第三实体抹除单元的至少部分有效数据程序化至第一实体抹除单元。

在本发明的一范例实施例中,在上述根据第二群组的实体抹除单元的排列顺序从第二群组的实体抹除单元中仅选取有效数据量小于所述容量的另一个实体抹除单元作为第三实体抹除单元的运作中,内存控制电路单元更用以根据第二群组的实体抹除单元的排列顺序从第二群组的实体抹除单元中选取一个实体抹除单元作为候选实体抹除单元,并且判断候选实体抹除单元的有效数据量是否小于该容量。其中倘若候选实体抹除单元的有效数据量不小于所述容量时,内存控制电路单元更用以根据第二群组的实体抹除单元的排列顺序从第二群组的实体抹除单元中选取另一个实体抹除单元作为候选实体抹除单元;倘若候选实体抹除单元的有效数据量小于所述容量时,内存控制电路单元更用以决定候选实体抹除单元为第三实体抹除单元。

在本发明的一范例实施例中,在上述下达指令序列将第二实体抹除单元的有效数据及第三实体抹除单元的至少部分有效数据程序化至第一实体抹除单元的运作中,内存控制电路单元更用以根据第二实体抹除单元的有效数据量及第三实体抹除单元的有效数据量计算有效数据量总和,并且判断有效数据量总和是否小于所述容量。其中倘若有效数据量总和不小于所述容量时,内存控制电路单元更用以下达指令序列将第二实体抹除单元的有效数据及第三实体抹除单元的至少部分有效数据程序化至第一实体抹除单元;倘若有效数据量总和小于所述容量时,内存控制电路单元更用以根据第二群组的实体抹除单元的排列顺序从第二群组的实体抹除单元中选取另一个实体抹除单元作为第四实体抹除单元,其中在从第二群组的实体抹除单元中仅选取有效数据量小于所述容量的另一个实体抹除单元作为第四实体抹除单元。此外,内存控制电路单元更用以下达指令序列将第二实体抹除单元的有效数据、第三实体抹除单元的有效数据及第四实体抹除单元的至少部分有效数据程序化至第一实体抹除单元。

在本发明的一范例实施例中,在上述根据所记录的抹除次数排列第二群组的实体单元的运作中,内存控制电路单元更用以根据所记录的抹除次数由小到大排列第二群组的实体抹除单元。

在本发明的一范例实施例中,在上述根据所记录的抹除次数从第一群组的实体抹除单元中提取一个实体抹除单元作为第一实体抹除单元的运作中,内存控制电路单元更用以从第一群组的实体抹除单元中提取具有最大抹除次数的实体抹除单元作为第一实体抹除单元。

在本发明的一范例实施例中,上述的第二实体抹除单元的有效数据与第三实体抹除单元的有效数据是属于多个不连续逻辑地址。

基于上述,当要执行平均磨损操作时,若从存有有效数据的实体抹除单元中选取了一个实体抹除单元并且其有效数据量小于一个实体抹除单元的容量时,本发明是藉由跳过存有有效数据的实体抹除单元中有效数据量不小于一个实体抹除单元的容量的实体抹除单元的方式,从存有有效数据的实体抹除单元中选取出有效数据量小于一个实体抹除单元的容量的多个实体抹除单元来一并执行平均磨损操作。如此可有效地提升垃圾收集的效率,并确保连续写入的速度可维持在目标值以上。

为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合附图作详细说明如下。

附图说明

图1是根据一范例实施例所显示的主机系统、内存储存装置及输入/输出(i/o)装置的示意图;

图2是根据另一范例实施例所显示的主机系统、内存储存装置及输入/输出(i/o)装置的示意图;

图3是根据另一范例实施例所显示的主机系统与内存储存装置的示意图;

图4是根据一范例实施例所显示的主机系统与内存储存装置的概要方框图;

图5是根据一范例实施例所显示的内存控制电路单元的概要方框图;

图6与图7是根据一范例实施例所显示的管理实体抹除单元的范例示意图;

图8是根据一范例实施例所显示的根据抹除次数排列第二群组的实体抹除单元的示意图;

图9是根据一范例实施例所显示的选取第二实体抹除单元执行平均磨损操作的的示意图;

图10是根据一范例实施例所显示的选取第二实体抹除单元与第三实体抹除单元执行平均磨损操作的的示意图;

图11是根据一范例实施例所显示的平均磨损方法的流程图;

图12是根据一范例实施例所显示的平均磨损方法中选取第三实体抹除单元的详细步骤的流程图。

附图标记:

10:内存储存装置

11:主机系统

12:输入/输出(i/o)装置

110:系统总线

111:处理器

112:随机存取内存(ram)

113:只读存储器(rom)

114:数据传输接口

20:主板

201:随身碟

202:记忆卡

203:固态硬盘

204:无线内存储存装置

205:全球定位系统模块

206:网络适配器

207:无线传输装置

208:键盘

209:屏幕

210:喇叭

30:内存储存装置

31:主机系统

32:sd卡

33:cf卡

34:嵌入式储存装置

341:嵌入式多媒体卡

342:嵌入式多芯片封装储存装置

402:连接接口单元

404:内存控制电路单元

406:可复写式非易失性内存模块

410(0)~410(n)、810(0)~810(5)、910(0)~910(5)、920(0)~920(n)、1010(0)~1010(5)、1020(0)~1020(n):实体抹除单元

502:内存管理电路

504:主机接口

506:内存接口

508:缓冲存储器

510:电源管理电路

512:错误检查与校正电路

602:资料区

604:闲置区

606:系统区

608:取代区

lba(0)~lba(h):逻辑单元

lz(0)~lz(m):逻辑区域

801:抹除次数表

810、910、1010:第二群组

920、1020:第一群组

s1、s2、s3:排列顺序

s1101:将实体抹除单元区分为第一群组与第二群组,其中第一群组的实体抹除单元无存有有效数据,第二群组的实体抹除单元存有有效数据的步骤

s1103:为每一个实体抹除单元记录抹除次数,并根据所记录的抹除次数排列第二群组的实体抹除单元的步骤

s1105:根据所记录的抹除次数从第一群组中提取一个实体抹除单元作为第一实体抹除单元的步骤

s1107:根据第二群组的实体抹除单元的排列顺序从第二群组中选取一个实体抹除单元作为第二实体抹除单元的步骤

s1109:判断第二实体抹除单元的有效数据量是否小于一个实体抹除单元的容量的步骤

s1111:将第二实体抹除单元的有效数据写入至第一实体抹除单元中的步骤

s1113:根据第二群组的实体抹除单元的排列顺序从第二群组中选取一个实体抹除单元作为第三实体抹除单元,其中第二群组的实体抹除单元中有效数据量不小于一个实体抹除单元的容量的实体抹除单元不会被选取作为第三实体抹除单元的步骤

s1115:将第二实体抹除单元的有效数据及第三实体抹除单元的至少部分有效数据程序化至第一实体抹除单元的步骤

s1201:根据第二群组的实体抹除单元的排列顺序从第二群组中选取一个实体抹除单元作为候选实体抹除单元的步骤

s1203:判断候选实体抹除单元的有效数据量是否小于一个实体抹除单元的容量的步骤

s1205:决定候选实体抹除单元为第三实体抹除单元的步骤

具体实施方式

一般而言,内存储存装置(亦称,内存储存系统)包括可复写式非易失性内存模块与控制器(亦称,控制电路单元)。通常内存储存装置是与主机系统一起使用,以使主机系统可将数据写入至内存储存装置或从内存储存装置中读取数据。

图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可例如是近距离无线通信(nearfieldcommunicationstorage,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)标准、超高速一代(ultrahighspeed-i,uhs-i)接口标准、超高速二代(ultrahighspeed-ii,uhs-ii)接口标准、安全数字(securedigital,sd)接口标准、记忆棒(memorystick,ms)接口标准、多芯片封装(multi-chippackage)接口标准、多媒体储存卡(multimediacard,mmc)接口标准、嵌入式多媒体储存卡(embeddedmultimediacard,emmc)接口标准、通用闪存(universalflashstorage,ufs)接口标准、嵌入式多芯片封装(embeddedmultichippackage,emcp)接口标准、小型快闪(compactflash,cf)接口标准、整合式驱动电子接口(integrateddeviceelectronics,ide)标准或其他适合的标准。在本范例实施例中,连接接口单元402可与内存控制电路单元404封装在一个芯片中,或者连接接口单元402是布设于一包含内存控制电路单元的芯片外。

内存控制电路单元404用以执行以硬件型式或韧体型式实作的多个逻辑门或控制指令,并且根据主机系统11的指令在可复写式非易失性内存模块406中进行数据的写入、读取与抹除等运作。

可复写式非易失性内存模块406是电性连接至内存控制电路单元404,并且用以储存主机 系统11所写入的数据。可复写式非易失性内存模块406具有实体抹除单元410(0)~410(n)。例如,实体抹除单元410(0)~410(n)可属于同一个内存晶粒(die)或者属于不同的内存晶粒。每一实体抹除单元分别具有多个实体程序化单元,其中属于同一个实体抹除单元的实体程序化单元可被独立地写入且被同时地抹除。然而,必须了解的是,本发明不限于此,每一实体抹除单元是可由64个实体程序化单元、256个实体程序化单元或其他任意个实体程序化单元所组成。

更详细来说,实体抹除单元为抹除的最小单位。即,每一实体抹除单元含有最小数目之一并被抹除的记忆胞。实体程序化单元为程序化的最小单元。即,实体程序化单元为写入数据的最小单元。每一实体程序化单元通常包括数据位区与冗余位区。数据位区包含多个实体存取地址用以储存用户的数据,而冗余位区用以储存系统的数据(例如,控制信息与错误更正码)。在本范例实施例中,每一个实体程序化单元的数据位区中会包含8个实体存取地址,且一个实体存取地址的大小为512字节(byte)。然而,在其他范例实施例中,数据位区中也可包含数目更多或更少的实体存取地址,本发明并不限制实体存取地址的大小以及个数。例如,在一范例实施例中,实体抹除单元为实体区块,并且实体程序化单元为实体页面或实体扇区,但本发明不以此为限。

在本范例实施例中,可复写式非易失性内存模块406为多阶记忆胞(multilevelcell,mlc)nand型闪存模块(即,一个记忆胞中可储存2个数据位的闪存模块)。然而,本发明不限于此,可复写式非易失性内存模块406亦可是单阶记忆胞(singlelevelcell,slc)nand型闪存模块(即,一个记忆胞中可储存1个数据位的闪存模块)、三阶记忆胞(trinarylevelcell,tlc)nand型闪存模块(即,一个记忆胞中可储存3个数据位的闪存模块)、其他闪存模块或其他具有相同特性的内存模块。

图5是根据一范例实施例所显示之内存控制电路单元的概要方框图。

请参照图5,内存控制电路单元404包括内存管理电路502、主机接口504与内存接口506、缓冲存储器508、电源管理电路510与错误检查与校正电路512。

内存管理电路502用以控制内存控制电路单元404的整体运作。具体来说,内存管理电路502具有多个控制指令,并且在内存储存装置10运作时,此些控制指令会被执行以进行数据的写入、读取与抹除等运作。

在本范例实施例中,内存管理电路502的控制指令是以韧体型式来实作。例如,内存管理电路502具有微处理器单元(未显示)与只读存储器(未显示),并且此些控制指令是被刻录至此只读存储器中。当内存储存装置10运作时,此些控制指令会由微处理器单元来执行以进行数据的写入、读取与抹除等运作。

在本发明另一范例实施例中,内存管理电路502的控制指令亦可以程序代码型式储存于可复写式非易失性内存模块406的特定区域(例如,内存模块中专用于存放系统数据的系统区)中。此外,内存管理电路502具有微处理器单元(未显示)、只读存储器(未显示)及随机存取内存(未显示)。特别是,此只读存储器具有驱动码,并且当内存控制电路单元404被致能时,微处理器单元会先执行此驱动码段来将储存于可复写式非易失性内存模块406中的控制指令加载至内存管理电路502的随机存取内存中。之后,微处理器单元会运转此些控制指令以进行数据的写入、读取与抹除等运作。

此外,在本发明另一范例实施例中,内存管理电路502的控制指令亦可以一硬件型式来 实作。例如,内存管理电路502包括微控制器、记忆胞管理电路、内存写入电路、内存读取电路、内存抹除电路与数据处理电路。记忆胞管理电路、内存写入电路、内存读取电路、内存抹除电路与数据处理电路是电性连接至微控制器。其中,记忆胞管理电路用以管理可复写式非易失性内存模块406的实体抹除单元;内存写入电路用以对可复写式非易失性内存模块406下达写入指令以将数据写入至可复写式非易失性内存模块406中;内存读取电路用以对可复写式非易失性内存模块406下达读取指令以从可复写式非易失性内存模块406中读取数据;内存抹除电路用以对可复写式非易失性内存模块406下达抹除指令以将数据从可复写式非易失性内存模块406中抹除;而数据处理电路用以处理欲写入至可复写式非易失性内存模块406的数据以及从可复写式非易失性内存模块406中读取的数据。

主机接口504是电性连接至内存管理电路502并且用以电性连接至连接接口单元402,以接收与识别主机系统11所传送的指令与数据。也就是说,主机系统11所传送的指令与数据会通过主机接口504来传送至内存管理电路502。在本范例实施例中,主机接口504是兼容于sata标准。然而,必须了解的是本发明不限于此,主机接口504亦可以是兼容于pata标准、ieee1394标准、pciexpress标准、usb标准、uhs-i接口标准、uhs-ii接口标准、sd标准、ms标准、mmc标准、cf标准、ide标准或其他适合的数据传输标准。

内存接口506是电性连接至内存管理电路502并且用以存取可复写式非易失性内存模块406。也就是说,欲写入至可复写式非易失性内存模块406的数据会经由内存接口506转换为可复写式非易失性内存模块406所能接受的格式。

缓冲存储器508是电性连接至内存管理电路502并且用以暂存来自于主机系统11的数据与指令或来自于可复写式非易失性内存模块406的数据。

电源管理电路510是电性连接至内存管理电路502并且用以控制内存储存装置10的电源。

错误检查与校正电路512是电性连接至内存管理电路502并且用以执行错误检查与校正程序以确保数据的正确性。具体来说,当内存管理电路502从主机系统11中接收到写入指令时,错误检查与校正电路512会为对应此写入指令的数据产生对应的错误检查与校正码(errorcheckingandcorrectingcode,ecccode),并且内存管理电路502会将对应此写入指令的数据与对应的错误检查与校正码写入至可复写式非易失性内存模块406中。之后,当内存管理电路502从可复写式非易失性内存模块406中读取数据时会同时读取此数据对应的错误检查与校正码,并且错误检查与校正电路512会根据此错误检查与校正码对所读取的数据执行错误检查与校正程序。

图6与图7是根据一范例实施例所显示的管理实体抹除单元的范例示意图。

必须了解的是,在此描述可复写式非易失性内存模块406的实体抹除单元的运作时,以“提取”、“分组”、“划分”、“关联”等词来操作实体抹除单元是逻辑上的概念。也就是说,可复写式非易失性内存模块的实体抹除单元的实际位置并未更动,而是逻辑上对可复写式非易失性内存模块的实体抹除单元进行操作。

请参照图6,内存控制电路单元404(或内存管理电路502)会将实体抹除单元410(0)~410(n)逻辑地分组为数据区602、闲置区604、系统区606与取代区608。

逻辑上属于数据区602与闲置区604的实体抹除单元是用以储存来自于主机系统11的数据。具体来说,数据区602的实体抹除单元是被视为已储存数据的实体抹除单元,而闲置区604的实体抹除单元是用以替换数据区602的实体抹除单元。也就是说,当从主机系统11接 收到写入指令与欲写入的数据时,内存管理电路502会从闲置区604中提取实体抹除单元,并且将数据写入至所提取的实体抹除单元中,以替换数据区602的实体抹除单元。

逻辑上属于系统区606的实体抹除单元是用以记录系统数据。例如,系统数据包括关于可复写式非易失性内存模块的制造商与型号、可复写式非易失性内存模块的实体抹除单元数、每一实体抹除单元的实体程序化单元数等。

逻辑上属于取代区608中的实体抹除单元是用于坏实体抹除单元取代程序,以取代损坏的实体抹除单元。具体来说,倘若取代区608中仍存有正常的实体抹除单元并且数据区602的实体抹除单元损坏时,内存管理电路502会从取代区608中提取正常的实体抹除单元来更换损坏的实体抹除单元。

特别是,数据区602、闲置区604、系统区606与取代区608的实体抹除单元的数量会根据不同的内存规格而有所不同。此外,必须了解的是,在内存储存装置10的运作中,实体抹除单元关联至数据区602、闲置区604、系统区606与取代区608的分组关系会动态地变动。例如,当闲置区604中的实体抹除单元损坏而被取代区608的实体抹除单元取代时,则原本取代区608的实体抹除单元会被关联至闲置区604。

请参照图7,内存控制电路单元404(或内存管理电路502)会配置逻辑单元lba(0)~lba(h)以映像数据区602的实体抹除单元,其中每一逻辑单元具有多个逻辑子单元以映像对应的实体抹除单元的实体程序化单元。并且,当主机系统11欲写入数据至逻辑单元或更新储存于逻辑单元中的数据时,内存控制电路单元404(或内存管理电路502)会从闲置区604中提取一个实体抹除单元来写入数据,以轮替数据区602的实体抹除单元。在本范例实施例中,逻辑子单元可以是逻辑页面或逻辑扇区。

为了识别每个逻辑单元的数据被储存在哪个实体抹除单元,在本范例实施例中,内存控制电路单元404(或内存管理电路502)会记录逻辑单元与实体抹除单元之间的映像。并且,当主机系统11欲在逻辑子单元中存取数据时,内存控制电路单元404(或内存管理电路502)会确认此逻辑子单元所属的逻辑单元,并且在此逻辑单元所映像的实体抹除单元中来存取数据。例如,在本范例实施例中,内存控制电路单元404(或内存管理电路502)会在可复写式非易失性内存模块406中储存逻辑-实体映像表来记录每一逻辑单元所映像的实体抹除单元,并且当欲存取数据时内存控制电路单元404(或内存管理电路502)会将逻辑-实体映像表加载至缓冲存储器508来维护。

值得一提的是,由于缓冲存储器508的容量有限无法储存记录所有逻辑单元的映像关系的映像表,因此,在本范例实施例中,内存控制电路单元404(或内存管理电路502)会将逻辑单元lba(0)~lba(h)分组为多个逻辑区域lz(0)~lz(m),并且为每一逻辑区域配置一个逻辑-实体映像表。特别是,当内存控制电路单元404(或内存管理电路502)欲更新某个逻辑单元的映像时,对应此逻辑单元所属的逻辑区域的逻辑-实体映像表会被加载至缓冲存储器508来被更新。

内存储存装置10在经过一段时间的运作之后,可复写式非易失性内存模块406中的实体抹除单元可被区分为无存有有效数据的实体抹除单元(以下亦称为第一群组的实体抹除单元)与存有有效数据的实体抹除单元(以下亦称为第二群组的实体抹除单元)。一般而言,闲置区604中的实体抹除单元为无存有有效数据的实体抹除单元,而数据区602中的实体抹除单元经过用户操作后会存有有效数据。

主机系统11的写入操作可以简单地分为连续写入操作与非连续写入操作。连续写入指的是多笔写入指令所要写入的逻辑地址是连续的,反之则是非连续写入。换句话说,第二群组的实体抹除单元中,有些实体抹除单元存有的有效数据是属于连续的逻辑地址,而有些实体抹除单元存有的有效数据是属于不连续的逻辑地址。在本范例实施例中,每次在执行属于连续写入操作的写入程序时,用以储存写入数据的实体抹除单元会被属于连续逻辑地址的有效数据填满。而在执行非连续写入操作的写入程序时,内存控制电路单元404(或内存管理电路502)可持续下达写入指令以将属于不连续逻辑地址的数据写入至实体抹除单元中未存有有效数据的实体程序化单元(亦可称为闲置的实体程序化单元)中。当主机系统11欲更新某个逻辑地址的数据时,内存控制电路单元404(或内存管理电路502)会将更新数据写入至闲置的实体程序化单元中,并将此逻辑地址原本映像的实体程序化单元所储存的数据标记为无效数据。因此,在执行了一段时间的非连续写入操作后,第二群组的实体抹除单元中可能存在同时存有有效数据及无效数据的实体抹除单元,换句话说,此些同时存有有效数据及无效数据的实体抹除单元的储存空间中并未存满有效数据。在本范例实施例中,此些未存满有效数据的实体抹除单元中的有效数据可属于不连续地址。然而,本发明并不以此为限。

当一个实体抹除单元中无存有有效数据(例如,所存有的数据皆已标记为无效数据)时,内存控制电路单元404(或内存管理电路502)可对此实体抹除单元执行抹除操作以再次写入数据。在本范例实施例中,内存控制电路单元404(或内存管理电路502)会为每一实体抹除单元410(0)~410(n)记录对应的抹除次数。具体而言,每一实体抹除单元410(0)~410(n)的抹除次数是有限的。例如,实体抹除单元在抹除一万次之后就会损坏,并且当实体抹除单元磨损导致储存容量的部分容量损失或性能明显退化时,会造成用户所储存的数据遗失或无法储存数据等不利影响。特别是,实体抹除单元的磨损系取决于每一实体抹除单元中被程序化或抹除的次数。也就是说,若一实体抹除单元仅被程序化(或者写入)一次,然后未被再次程序化时,此实体抹除单元的磨损程度将相对地低。反之,若一个实体抹除单元被重复地程序化与抹除时,则此实体抹除单元的磨损程度就会相对地高。例如,当可复写式非易失性内存模块406中的一个实体抹除单元被抹除时,内存控制电路单元404(或内存管理电路502)会将对应此实体抹除单元的抹除次数加1。在此,抹除次数可被记录于一抹除次数表中或者其所对应的实体抹除单元中。

在执行了一段时间的非连续写入操作后,可能因重复执行写入程序而使部分的实体抹除单元的抹除次数持续增加。在本范例实施例中,当判断实体抹除单元的抹除次数之间的差值到达一定数值时,内存控制电路单元404(或内存管理电路502)会开始执行平均磨损操作。当执行平均磨损操作时,内存控制电路单元404(或内存管理电路502)会根据实体抹除单元的抹除次数从第一群组的实体抹除单元(即无存有有效数据的实体抹除单元)与第二群组的实体抹除单元(即存有有效数据的实体抹除单元)中选取实体抹除单元来进行交换。例如,内存控制电路单元404(或内存管理电路502)依据抹除次数从第一群组的实体抹除单元中提取一个实体抹除单元(以下亦称为第一实体抹除单元),并且依据抹除次数从第二群组的实体抹除单元中选取一个实体抹除单元(以下亦称为第二实体抹除单元)。

在本范例实施例中,内存控制电路单元404(或内存管理电路502)会从第一群组的实体抹除单元中选取具有最大抹除次数的实体抹除单元作为第一实体抹除单元。另一方面,内存控制电路单元会从第二群组中选取具有最小抹除次数的实体抹除单元作为第二实体抹除单 元。举例而言,内存控制电路单元404(或内存管理电路502)会先根据第二群组的实体抹除单元的抹除次数将第二群组的实体抹除单元进行排序,并且记录第二群组的实体抹除单元的排列顺序。然后,内存控制电路单元404(或内存管理电路502)会再依据第二群组的实体抹除单元的排列顺序从头开始选取实体抹除单元。例如,依据抹除次数由小到大排列第二群组的实体抹除单元,由此,内存控制电路单元404(或内存管理电路502)便可依抹除次数小到大的顺序来选取实体抹除单元。然而,第一实体抹除单元的抹除次数与第二实体抹除单元的抹除次数也可依实际需求设定为不同于上述的条件,本发明不加以限制。

图8是根据一范例实施例所显示的根据抹除次数排列第二群组的实体抹除单元的示意图。

请参照图8,第二群组810的实体抹除单元810(0)~810(5)为存有有效数据的实体抹除单元(实体抹除单元中所储存的有效数据以斜线表示)。在本范例实施例中,实体抹除单元810(0)~810(5)的抹除次数是记录在抹除次数表801中。内存控制电路单元404(或内存管理电路502)会根据抹除次数表801中所记录的抹除次数由小到大排列第二群组810的实体抹除单元810(0)~810(5)。如图8所示,实体抹除单元810(0)~810(5)被排列如排列顺序s1。也就是说,在排列顺序s1中,排列在第一位的实体抹除单元810(5)是第二群组810的实体抹除单元810(0)~810(5)中具有最小抹除次数的实体抹除单元;排列在最末位的实体抹除单元810(3)是第二群组810的实体抹除单元810(0)~810(5)中具有最大抹除次数的实体抹除单元。排序完成后,内存控制电路单元404(或内存管理电路502)便可根据排列顺序s1选取排列在第一位的实体抹除单元810(5)作为第二实体抹除单元以进行平均磨损操作。

由于第二群组中可能存在同时存有有效数据与无效数据的实体抹除单元,因此,当从第二群组中选取了第二实体抹除单元之后,内存控制电路单元404(或内存管理电路502)会判断第二实体抹除单元的有效数据量是否小于一个实体抹除单元的容量。在此,一个实体抹除单元的容量是指一个实体抹除单元可储存数据的总数据量,而一个实体抹除单元的有效数据量是指一个实体抹除单元中所存有的有效数据的数据量。在本范例实施例中,每一个实体抹除单元皆具有相同的容量。

倘若第二实体抹除单元的有效数据量不小于(例如,等于)一个实体抹除单元的容量,表示第二实体抹除单元存有可写满一个空的实体抹除单元的有效数据。在此情况下,内存控制电路单元404(或内存管理电路502)可下达指令序列直接将第二实体抹除单元中的有效数据写入第一实体抹除单元中,并且将第二实体抹除单元中的有效数据标记为无效数据。

图9是根据一范例实施例所显示的选取第二实体抹除单元执行平均磨损操作的示意图。

请参照图9,内存控制电路单元404(或内存管理电路502)从第一储存区920中提取实体抹除单元920(0)作为第一实体抹除单元。在本范例实施例中,假设第二储存区910的实体抹除单元910(0)~910(5)已经排序如排列顺序s2。内存控制电路单元404(或内存管理电路502)依据排列顺序s2选取实体抹除单元910(0)作为第二实体抹除单元。由于实体抹除单元910(0)的所有实体程序化单元皆存有有效数据,换句话说,实体抹除单元910(0)的储存空间已存满有效数据,因此内存控制电路单元404(或内存管理电路502)会判定实体抹除单元910(0)的有效数据量d(0)等于(即不小于)一个实体抹除单元的容量。基此,内存控制电路单元404(或内存管理电路502)会下达指令序列将储存在实体抹除单元910(0)(即第二实体抹除单元)中的有效数据写入至从第一储存区920所提取的实体抹除单元920(0)(即第一实体抹除单元例如)中。

在另一方面,倘若第二实体抹除单元的有效数据量小于一个实体抹除单元的容量,表示第二实体抹除单元未存有可写满一个空的实体抹除单元的有效数据。换句话说,第二实体抹除单元的储存空间未存满有效数据。此时,内存控制电路单元404(或内存管理电路502)会再从第二群组中选取其他的实体抹除单元以收集到可写满一个空的实体抹除单元的有效数据。具体而言,内存控制电路单元404(或内存管理电路502)会依据第二群组的实体抹除单元的排列顺序依序从第二群组中选取另一个实体抹除单元作为候选实体抹除单元。例如,内存控制电路单元404(或内存管理电路502)会依序选取第二实体抹除单元的后一个实体抹除单元作为候选实体抹除单元。进一步地,内存控制电路单元404(或内存管理电路502)会判断候选实体抹除单元的有效数据量是否小于一个实体抹除单元的容量。

倘若目前的候选实体抹除单元的有效数据量不小于(例如,等于)一个实体抹除单元的容量,表示目前的候选实体抹除单元存有可写满一个空的实体抹除单元的有效数据。此时,内存控制电路单元404(或内存管理电路502)会忽略目前的候选实体抹除单元,并且依序从第二群组中选取另一个实体抹除单元作为新的候选实体抹除单元。例如,内存控制电路单元404(或内存管理电路502)会依序选取目前的候选实体抹除单元的后一个实体抹除单元作为新的候选实体抹除单元,并且再次执行上述判断候选实体抹除单元的有效数据量是否小于一个实体抹除单元的容量的操作。此外,倘若目前的候选实体抹除单元的有效数据量小于一个实体抹除单元的容量,表示目前的候选实体抹除单元未存有可写满一个空的实体抹除单元的有效数据。基此,内存控制电路单元404(或内存管理电路502)会决定目前的候选实体抹除单元为第三实体抹除单元,并且下达指令序列将第二实体抹除单元的有效数据与第三实体抹除单元的至少部分的有效数据一起写入第一实体抹除单元中。

值得一提的是,内存控制电路单元404(或内存管理电路502)还会计算第二实体抹除单元的有效数据量与第三实体抹除单元的有效数据量的有效数据量总和是否小于一个实体抹除单元的容量。换句话说,内存控制电路单元404(或内存管理电路502)会根据有效数据量总和来决定要写入至第一实体抹除单元的有效数据。例如,倘若有效数据量总和等于一个实体抹除单元的容量,内存控制电路单元404(或内存管理电路502)会下达指令序列将第二实体抹除单元的全部有效数据与第三实体抹除单元的全部有效数据写入至第一实体抹除单元中;倘若有效数据量总和大于一个实体抹除单元的容量,内存控制电路单元404(或内存管理电路502)会下达指令序列将第二实体抹除单元的全部有效数据与第三实体抹除单元的部分有效数据写入至第一实体抹除单元中。另一方面,当有效数据量总和小于一个实体抹除单元的容量时,内存控制电路单元404(或内存管理电路502)会继续从第二群组中选取适合的实体抹除单元(以下亦称为第四实体抹除单元)以继续收集有效数据。第四实体抹除单元的选取方式与上述第三实体抹除单元的选取方式相同,在此将不再赘述。

图10是根据一范例实施例所显示的选取第二实体抹除单元与第三实体抹除单元执行平均磨损操作的示意图。

请参照图10,内存控制电路单元404(或内存管理电路502)从第一储存区1020中提取实体抹除单元1020(1)作为第一实体抹除单元。假设第二储存区1010的实体抹除单元1010(0)~1010(5)已经排序为排列顺序s3。内存控制电路单元404(或内存管理电路502)依据排列顺序s3选取实体抹除单元1010(0)作为第二实体抹除单元。由于实体抹除单元1010(0)中同时存有无效数据与有效数据,换句话说,实体抹除单元1010(0)的储存空间并未存满有效数 据,因此内存控制电路单元404(或内存管理电路502)会判定实体抹除单元1010(0)的有效数据量小于一个实体抹除单元的容量。基此,内存控制电路单元404(或内存管理电路502)会依据排列顺序s3选取第二群组1010中排列在实体抹除单元1010(0)的后一个实体抹除单元1010(2)作为候选实体抹除单元。然而,由于实体抹除单元1010(2)的有效数据量等于一个实体抹除单元的容量(即所有实体程序化单元皆存有有效数据),因此,内存控制电路单元404(或内存管理电路502)会忽略实体抹除单元1010(2)并且依据排列顺序s3选取第二群组1010中排列在实体抹除单元1010(2)的后一个实体抹除单元1010(1)作为新的候选实体抹除单元。由于实体抹除单元1010(1)的有效数据量小于一个实体抹除单元的容量,因此,内存控制电路单元404(或内存管理电路502)会决定实体抹除单元1010(1)为第三实体抹除单元。

在本范例实施例中,假设实体抹除单元1010(0)的有效数据量与实体抹除单元1010(1)的有效数据量各等于一个实体抹除单元的容量的一半,也就是说,实体抹除单元1010(0)的有效数据量与实体抹除单元1010(1)的有效数据量的有效数据量总和会等于一个实体抹除单元的容量。因此,内存控制电路单元404(或内存管理电路502)会下达指令序列将实体抹除单元1010(0)的全部有效数据与实体抹除单元1010(1)的全部有效数据一起写入至从第一储存区1020中所提取的实体抹除单元1020(1)中。然后,内存控制电路单元404(或内存管理电路502)可将实体抹除单元1010(0)的全部有效数据与实体抹除单元1010(1)的全部有效数据标记为无效数据。

除此之外,在本范例实施例中,若假设实体抹除单元1010(0)的有效数据量等于一个实体抹除单元的一半容量,并且实体抹除单元1010(1)的有效数据量等于一个实体抹除单元的四分之三容量,则实体抹除单元1010(0)的有效数据量与实体抹除单元1010(1)的有效数据量的有效数据量总和会大于一个实体抹除单元的容量。因此,内存控制电路单元404(或内存管理电路502)会下达指令序列将实体抹除单元1010(0)的全部有效数据与实体抹除单元1010(1)的部分有效数据一起写入至从第一储存区1020中所提取的实体抹除单元1020(1)中。然后,内存控制电路单元404(或内存管理电路502)可将实体抹除单元1010(0)的全部有效数据与实体抹除单元1010(1)中已写入至实体抹除单元1020(1)的有效数据标记为无效数据。

另外,在本范例实施例中,若假设实体抹除单元1010(0)的有效数据量等于一个实体抹除单元的一半容量,并且实体抹除单元1010(1)的有效数据量等于一个实体抹除单元的四分之一容量,则实体抹除单元1010(0)的有效数据量与实体抹除单元1010(1)的有效数据量的有效数据量总和会小于一个实体抹除单元的容量。因此,内存控制电路单元404(或内存管理电路502)会依据排列顺序s3选取第二群组1010中排列在实体抹除单元1010(1)的后一个实体抹除单元1010(4)作为候选实体抹除单元。然而,由于实体抹除单元1010(4)的有效数据量等于一个实体抹除单元的容量(即实体抹除单元1010(4)的储存空间已存满有效数据),因此,内存控制电路单元404(或内存管理电路502)会忽略实体抹除单元1010(4)并且依据排列顺序s3选取第二群组1010中排列在实体抹除单元1010(4)的后一个实体抹除单元1010(5)作为新的候选实体抹除单元。由于实体抹除单元1010(5)的有效数据量小于一个实体抹除单元的容量,因此,内存控制电路单元404(或内存管理电路502)会决定实体抹除单元1010(5)为第四实体抹除单元。假设实体抹除单元1010(5)的有效数据量等于一个实体抹除单元的四分之一容量。也就是说,实体抹除单元1010(0)的有效数据量、实体抹除单元1010(1)的有效数据量与实体抹除单元1010(5)的有效数据量的有效数据量总和等于一个实体抹除单元的容量,因此内存控制电路单元404(或内存管理电路502)则会下达指令序列将实体抹除单元1010(0)的全部有效数据、实 体抹除单元1010(1)的全部有效数据与实体抹除单元1010(5)的全部有效数据一起写入至从第一储存区1020中所提取的实体抹除单元1020(1)中(图未显示)。内存控制电路单元404(或内存管理电路502)并会将实体抹除单元1010(0)的全部有效数据、实体抹除单元1010(1)的全部有效数据与实体抹除单元1010(5)的全部有效数据标记为无效数据。

上述的范例实施例中,当第二实体抹除单元的有效数据量小于一个实体抹除单元的容量时,内存控制电路单元404(或内存管理电路502)还可将第二实体抹除单元的有效数据与后续所选取的实体抹除单元(例如第三实体抹除单元及第四实体抹除单元)的有效数据先暂存至一暂存区(例如,缓冲存储器508)中。当暂存在暂存区中的有效数据已达到(即等于或大于)一个实体抹除单元的容量时,即已收集到可写满一个空的实体抹除单元的有效数据时,再将暂存区中的有效数据写入至第一实体抹除单元中。再者,在选取第三实体抹除单元(或第四实体抹除单元)的过程中所忽略的实体抹除单元仍可在后续被选取以作为要执行平均磨损操作的第二实体抹除单元。

换句话说,在执行平均磨损操作时,倘若第二实体抹除单元的有效数据量小于一个实体抹除单元的容量,内存控制电路单元404(或内存管理电路502)会持续从第二群组的实体抹除单元选取适合的实体抹除单元(即有效数据量小于一个实体抹除单元的容量的实体抹除单元),直到所选取的多个实体抹除单元的有效数据量总和不小于一个实体抹除单元的容量为止。而且在选取适合的实体抹除单元的过程中,有效数据量不小于一个实体抹除单元的容量的实体抹除单元会被忽略而不会被选取作为适合的实体抹除单元。当已可从所选取的多个实体抹除单元中收集到可写满一个空的实体抹除单元的有效数据时,内存控制电路单元404(或内存管理电路502)会从此些所选取的实体抹除单元中决定要写入至第一实体抹除单元的有效数据。

图11为根据一范例实施例所显示的平均磨损方法的流程图。

请参照图11,在步骤s1101中,内存控制电路单元404(或内存管理电路502)将实体抹除单元区分为第一群组与第二群组,其中第一群组的实体抹除单元无存有有效数据,第二群组的实体抹除单元存有有效数据。

在步骤s1103中,内存控制电路单元404(或内存管理电路502)为每一个实体抹除单元记录抹除次数,并根据所记录的抹除次数排列第二群组的实体抹除单元。

在步骤s1105中,内存控制电路单元404(或内存管理电路502)根据所记录的抹除次数从第一群组中提取一个实体抹除单元作为第一实体抹除单元。

在步骤s1107中,内存控制电路单元404(或内存管理电路502)根据第二群组的实体抹除单元的排列顺序从第二群组中选取一个实体抹除单元作为第二实体抹除单元。

在步骤s1109中,内存控制电路单元404(或内存管理电路502)判断第二实体抹除单元的有效数据量是否小于一个实体抹除单元的容量。

倘若第二实体抹除单元的有效数据量不小于一个实体抹除单元的容量,在步骤s1111中,内存控制电路单元404(或内存管理电路502)下达指令序列将第二实体抹除单元的有效数据写入至第一实体抹除单元中。

倘若第二实体抹除单元的有效数据量小于一个实体抹除单元的容量,在步骤s1113中,内存控制电路单元404(或内存管理电路502)根据第二群组的实体抹除单元的排列顺序从第二群组中选取一个实体抹除单元作为第三实体抹除单元,其中第二群组的实体抹除单元中有 效数据量不小于一个实体抹除单元的容量的实体抹除单元不会被选取作为第三实体抹除单元。换句话说,内存控制电路单元404(或内存管理电路502)会从第二群组的实体抹除单元中选取有效数据量小于一个实体抹除单元的容量的实体抹除单元作为第三实体抹除单元。

在步骤s1115中,内存控制电路单元404(或内存管理电路502)下达指令序列将第二实体抹除单元的有效数据及第三实体抹除单元的至少部分有效数据程序化至第一实体抹除单元。

图12是根据一范例实施例所显示的平均磨损方法中选取第三实体抹除单元的详细步骤的流程图。

在步骤s1201中,内存控制电路单元404(或内存管理电路502)根据第二群组的实体抹除单元的排列顺序从第二群组中选取一个实体抹除单元作为候选实体抹除单元。

在步骤s1203中,内存控制电路单元404(或内存管理电路502)判断候选实体抹除单元的有效数据量是否小于一个实体抹除单元的容量。

倘若候选实体抹除单元的有效数据量不小于一个实体抹除单元的容量,内存控制电路单元404(或内存管理电路502)会再次执行步骤s1201。

倘若候选实体抹除单元的有效数据量小于一个实体抹除单元的容量,在步骤s1205中,内存控制电路单元404(或内存管理电路502)决定候选实体抹除单元为第三实体抹除单元。

在上述的步骤s1205之后,内存控制电路单元404(或内存管理电路502)还可计算有效数据量总和,并且根据有效数据量总和决定是否要再继续选取适合的实体抹除单元。此部分已于前述的范例实施例中详细说明,在此不再赘述。

综上所述,本发明会根据抹除次数的大小从存有有效数据的实体抹除单元中先选取一个实体抹除单元来执行平均磨损操作。若所选取的实体抹除单元的有效数据量小于一个实体抹除单元的容量时,本发明会从存有有效数据的实体抹除单元中选取另外的实体抹除单元以一并执行平均磨损操作。而在选取另外的实体抹除单元的过程中,存有有效数据的实体抹除单元中有效数据量不小于一个实体抹除单元的容量的实体抹除单元不会被选取。藉此可从储存空间皆未存满有效数据的实体抹除单元中收集可写满一个实体抹除单元的有效数据。如此一来,可避免在执行平均磨损操作时将实体抹除单元中使用连续写入操作所写入的有效数据与使用非连续写入操作所写入的有效数据存入同一个实体抹除单元中,因而可提升垃圾收集的效率,并确保连续写入的速度可维持在目标值以上。

虽然本发明已以实施例揭示如上,然其并非用以限定本发明,任何所属技术领域中普通技术人员,在不脱离本发明的精神和范围内,当可作些许的改动与润饰,故本发明的保护范围当视所附权利要求界定范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1