本發(fā)明涉及一種平均磨損方法,尤其涉及一種用于可復寫式非易失性內(nèi)存模塊的平均磨損方法、內(nèi)存控制電路單元及內(nèi)存儲存裝置。
背景技術:
數(shù)碼相機、移動電話與mp3播放器在這幾年來的成長十分迅速,使得消費者對儲存媒體的需求也急速增加。由于可復寫式非易失性內(nèi)存模塊(例如,閃存)具有數(shù)據(jù)非易失性、省電、體積小,以及無機械結構等特性,所以非常適合內(nèi)建于上述所舉例的各種可攜式多媒體裝置中。
一般來說,可復寫式非易失性內(nèi)存模塊會與主機系統(tǒng)搭配使用。而要寫入至可復寫式非易失性內(nèi)存模塊的數(shù)據(jù)會包括屬于連續(xù)地址的數(shù)據(jù)與屬于不連續(xù)地址的數(shù)據(jù)。因此,對應不同的寫入數(shù)據(jù),可復寫式非易失性內(nèi)存模塊的寫入操作可包括連續(xù)寫入(sequentialwrite)操作與隨機寫入(randomwrite)操作。在一般的運作下,主機系統(tǒng)可先以連續(xù)寫入的方式將屬于連續(xù)地址的數(shù)據(jù)寫入至可復寫式非易失性內(nèi)存模塊中一部分實體抹除單元中。然后,主機系統(tǒng)會改以非連續(xù)寫入的方式(例如,隨機寫入操作)將屬于不連續(xù)地址的數(shù)據(jù)寫入至可復寫式非易失性內(nèi)存模塊中另一部分實體抹除單元中。而在一般運作下,主機系統(tǒng)執(zhí)行非連續(xù)寫入的機率可能會高于執(zhí)行連續(xù)寫入的機率。因此,在執(zhí)行了一段時間的非連續(xù)寫入操作后,使用非連續(xù)寫入操作寫入數(shù)據(jù)的實體抹除單元的抹除次數(shù)會高于使用連續(xù)寫入操作寫入數(shù)據(jù)的實體抹除單元的抹除次數(shù)。當抹除次數(shù)的差距達到一定程度時,便會執(zhí)行可復寫式非易失性內(nèi)存模塊的平均磨損(wearleveling)操作,以避免發(fā)生只因部分實體抹除單元的抹除次數(shù)過高而導致整個可復寫式非易失性內(nèi)存模塊的性能退化,甚至無法繼續(xù)使用的問題。
平均磨損操作是根據(jù)抹除次數(shù)的多寡來決定要執(zhí)行平均磨損操作的實體抹除單元。因此,在執(zhí)行了一段時間的平均磨損操作后,使用連續(xù)寫入操作寫入數(shù)據(jù)的實體抹除單元的抹除次數(shù)可能會與使用非連續(xù)寫入操作寫入數(shù)據(jù)的實體抹除單元的抹除次數(shù)相近。此后,在執(zhí)行平均磨損操作時,使用連續(xù)寫入操作寫入數(shù)據(jù)的實體抹除單元與使用非連續(xù)寫入操作寫入數(shù)據(jù)的實體抹除單元可能會一起被挑選為要執(zhí)行平均磨損操作的實體抹除單元。如此一來,原本屬于連續(xù)地址的數(shù)據(jù)可能會與屬于不連續(xù)地址的數(shù)據(jù)一起被寫入至同一個實體抹除單元中。然而,在此種情況下,在執(zhí)行連續(xù)寫入操作時,可能會因為無法有效率地執(zhí)行垃圾收集(garbagecollection)而降低連續(xù)寫入操作的執(zhí)行速度,進而無法使連續(xù)寫入操作維持在一定的執(zhí)行速度。基此,如何避免因執(zhí)行垃圾收集而影響連續(xù)寫入的速度,為此領域技術人員所關心的議題。
技術實現(xiàn)要素:
本發(fā)明提供一種平均磨損方法、內(nèi)存控制電路單元及內(nèi)存儲存裝置,可以有效地避免因執(zhí)行垃圾收集而影響連續(xù)寫入的速度。
本發(fā)明的一范例實施例提出一種用于可復寫式非易失性內(nèi)存模塊的平均磨損方法,其中可復寫式非易失性內(nèi)存模塊具有多個實體抹除單元,并且每一個實體抹除單元具有相同的容量。本方法包括:將實體抹除單元區(qū)分為第一群組與第二群組,其中第一群組的實體抹除單元無存有有效數(shù)據(jù),并且第二群組的實體抹除單元儲存有有效數(shù)據(jù)。本方法也包括:為每一個實體抹除單元記錄抹除次數(shù),并且根據(jù)所記錄的抹除次數(shù)排列第二群組的實體抹除單元。本方法還包括:根據(jù)所記錄的抹除次數(shù)從第一群組的實體抹除單元中提取一個實體抹除單元作為第一實體抹除單元,并且根據(jù)第二群組的實體抹除單元的排列順序從第二群組的實體抹除單元中選取一個實體抹除單元作為第二實體抹除單元,其中第二實體抹除單元的有效數(shù)據(jù)量小于所述容量。本方法還包括:根據(jù)第二群組的實體抹除單元的排列順序從第二群組的實體抹除單元中僅選取有效數(shù)據(jù)量小于所述容量的另一個實體抹除單元作為一第三實體抹除單元,以及將第二實體抹除單元的有效數(shù)據(jù)及第三實體抹除單元的至少部分有效數(shù)據(jù)程序化至第一實體抹除單元。
在本發(fā)明的一范例實施例中,上述根據(jù)第二群組的實體抹除單元的排列順序從第二群組的實體抹除單元中僅選取有效數(shù)據(jù)量小于所述容量的另一實體抹除單元作為第三實體抹除單元的步驟包括:根據(jù)第二群組的實體抹除單元的排列順序從第二群組的實體抹除單元中選取一個實體抹除單元作為候選實體抹除單元,并且判斷候選實體抹除單元的有效數(shù)據(jù)量是否小于所述容量;倘若候選實體抹除單元的有效數(shù)據(jù)量不小于所述容量時,根據(jù)第二群組的實體抹除單元的排列順序從第二群組的實體抹除單元中選取另一個實體抹除單元作為候選實體抹除單元;以及倘若候選實體抹除單元的有效數(shù)據(jù)量小于所述容量時,決定候選實體抹除單元為第三實體抹除單元。
在本發(fā)明的一范例實施例中,上述將第二實體抹除單元的有效數(shù)據(jù)及第三實體抹除單元的至少部分有效數(shù)據(jù)程序化至第一實體抹除單元的步驟包括:根據(jù)第二實體抹除單元的有效數(shù)據(jù)量及第三實體抹除單元的有效數(shù)據(jù)量計算有效數(shù)據(jù)量總和,并且判斷有效數(shù)據(jù)量總和是否小于所述容量;倘若有效數(shù)據(jù)量總和不小于所述容量時,將第二實體抹除單元的有效數(shù)據(jù)及第三實體抹除單元的至少部分有效數(shù)據(jù)程序化至第一實體抹除單元;倘若有效數(shù)據(jù)量總和小于所述容量時,將第二實體抹除單元的有效數(shù)據(jù)及第三實體抹除單元的有效數(shù)據(jù)程序化至第一實體抹除單元,根據(jù)第二群組的實體抹除單元的排列順序從第二群組的實體抹除單元中僅選取有效數(shù)據(jù)量小于所述容量的另一個實體抹除單元作為第四實體抹除單元;以及將第二實體抹除單元的有效數(shù)據(jù)、第三實體抹除單元的有效數(shù)據(jù)及第四實體抹除單元的至少部分有效數(shù)據(jù)程序化至第一實體抹除單元。
在本發(fā)明的一范例實施例中,上述根據(jù)所記錄的抹除次數(shù)排列第二群組的實體抹除單元的步驟包括:根據(jù)所記錄的抹除次數(shù)由小到大排列第二群組的實體抹除單元。
在本發(fā)明的一范例實施例中,上述根據(jù)所記錄的抹除次數(shù)從第一群組的實體抹除單元中提取一個實體抹除單元作為第一實體抹除單元的步驟包括:從第一群組的實體抹除單元中提取具有最大抹除次數(shù)的實體抹除單元作為第一實體抹除單元。
在本發(fā)明的一范例實施例中,上述的第二實體抹除單元的有效數(shù)據(jù)與第三實體抹除單元 的有效數(shù)據(jù)是屬于多個不連續(xù)邏輯地址。
本發(fā)明的一范例實施例提出一種用于控制可復寫式非易失性內(nèi)存模塊的內(nèi)存控制電路單元,其中可復寫式非易失性內(nèi)存模塊具有多個實體抹除單元,并且每一個實體抹除單元具有相同的容量。本內(nèi)存控制電路單元包括主機接口、內(nèi)存接口與內(nèi)存管理電路。主機接口用以電性連接至主機系統(tǒng)。內(nèi)存接口用以電性連接至可復寫式非易失性內(nèi)存模塊。內(nèi)存管理電路電性連接至主機接口與內(nèi)存接口,并且用以將實體抹除單元區(qū)分為第一群組與第二群組,其中第一群組的實體抹除單元無存有有效數(shù)據(jù),并且第二群組的實體抹除單元儲存有有效數(shù)據(jù)。再者,內(nèi)存管理電路更用以為每一個實體抹除單元記錄抹除次數(shù),并且根據(jù)所記錄的抹除次數(shù)排列第二群組的實體抹除單元。此外,內(nèi)存管理電路更用以根據(jù)所記錄的抹除次數(shù)從第一群組的實體抹除單元中提取一個實體抹除單元作為第一實體抹除單元,并且根據(jù)第二群組的實體抹除單元的排列順序從第二群組的實體抹除單元中選取一個實體抹除單元作為第二實體抹除單元,其中第二實體抹除單元的有效數(shù)據(jù)量小于所述容量。另外,內(nèi)存管理電路更用以根據(jù)第二群組的實體抹除單元的排列順序從第二群組的實體抹除單元中僅選取有效數(shù)據(jù)量小于所述容量的另一個實體抹除單元作為第三實體抹除單元。而且,內(nèi)存管理電路更用以下達指令序列將第二實體抹除單元的有效數(shù)據(jù)及第三實體抹除單元的至少部分有效數(shù)據(jù)程序化至第一實體抹除單元。
在本發(fā)明的一范例實施例中,在上述根據(jù)第二群組的實體抹除單元的排列順序從第二群組的實體抹除單元中僅選取有效數(shù)據(jù)量小于所述容量的另一個實體抹除單元作為第三實體抹除單元的運作中,內(nèi)存管理電路更用以根據(jù)第二群組的實體抹除單元的排列順序從第二群組的實體抹除單元中選取一個實體抹除單元作為候選實體抹除單元,并且判斷候選實體抹除單元的有效數(shù)據(jù)量是否小于該容量。其中倘若候選實體抹除單元的有效數(shù)據(jù)量不小于所述容量時,內(nèi)存管理電路更用以根據(jù)第二群組的實體抹除單元的排列順序從第二群組的實體抹除單元中選取另一個實體抹除單元作為候選實體抹除單元;倘若候選實體抹除單元的有效數(shù)據(jù)量小于所述容量時,內(nèi)存管理電路更用以決定候選實體抹除單元為第三實體抹除單元。
在本發(fā)明的一范例實施例中,在上述下達指令序列將第二實體抹除單元的有效數(shù)據(jù)及第三實體抹除單元的至少部分有效數(shù)據(jù)程序化至第一實體抹除單元的運作中,內(nèi)存管理電路更用以根據(jù)第二實體抹除單元的有效數(shù)據(jù)量及第三實體抹除單元的有效數(shù)據(jù)量計算有效數(shù)據(jù)量總和,并且判斷有效數(shù)據(jù)量總和是否小于所述容量。其中倘若有效數(shù)據(jù)量總和不小于所述容量時,內(nèi)存管理電路更用以下達指令序列將第二實體抹除單元的有效數(shù)據(jù)及第三實體抹除單元的至少部分有效數(shù)據(jù)程序化至第一實體抹除單元;倘若有效數(shù)據(jù)量總和小于所述容量時,內(nèi)存管理電路更用以根據(jù)第二群組的實體抹除單元的排列順序從第二群組的實體抹除單元中僅選取有效數(shù)據(jù)量小于所述容量的另一個實體抹除單元作為第四實體抹除單元。此外,內(nèi)存管理電路更用以下達指令序列將第二實體抹除單元的有效數(shù)據(jù)、第三實體抹除單元的有效數(shù)據(jù)及第四實體抹除單元的至少部分有效數(shù)據(jù)程序化至第一實體抹除單元。
在本發(fā)明的一范例實施例中,在上述根據(jù)所記錄的抹除次數(shù)排列第二群組的實體單元的運作中,內(nèi)存管理電路更用以根據(jù)所記錄的抹除次數(shù)由小到大排列第二群組的實體抹除單元。
在本發(fā)明的一范例實施例中,在上述根據(jù)所記錄的抹除次數(shù)從第一群組的實體抹除單元中提取一個實體抹除單元作為第一實體抹除單元的運作中,內(nèi)存管理電路更用以從第一群組的實體抹除單元中提取具有最大抹除次數(shù)的實體抹除單元作為第一實體抹除單元。
在本發(fā)明的一范例實施例中,上述的第二實體抹除單元的有效數(shù)據(jù)與第三實體抹除單元的有效數(shù)據(jù)是屬于多個不連續(xù)邏輯地址。
本發(fā)明的一范例實施例提出一種內(nèi)存儲存裝置,其包括連接接口單元、可復寫式非易失性內(nèi)存模塊與內(nèi)存控制電路單元。連接接口單元用以電性連接至主機系統(tǒng)??蓮蛯懯椒且资詢?nèi)存模塊包括多個實體抹除單元。內(nèi)存控制電路單元電性連接至連接接口單元與可復寫式非易失性內(nèi)存模塊,并且用以將實體抹除單元區(qū)分為第一群組與第二群組,其中第一群組的實體抹除單元無存有有效數(shù)據(jù),并且第二群組的實體抹除單元儲存有有效數(shù)據(jù)。再者,內(nèi)存控制電路單元更用以為每一個實體抹除單元記錄抹除次數(shù),并且根據(jù)所記錄的抹除次數(shù)排列第二群組的實體抹除單元。此外,內(nèi)存控制電路單元更用以根據(jù)所記錄的抹除次數(shù)從第一群組的實體抹除單元中提取一個實體抹除單元作為第一實體抹除單元,并且根據(jù)第二群組的實體抹除單元的排列順序從第二群組的實體抹除單元中選取一個實體抹除單元作為第二實體抹除單元,其中第二實體抹除單元的有效數(shù)據(jù)量小于所述容量。另外,內(nèi)存控制電路單元更用以根據(jù)第二群組的實體抹除單元的排列順序從第二群組的實體抹除單元中僅選取有效數(shù)據(jù)量小于所述容量的另一個實體抹除單元作為第三實體抹除單元。而且,內(nèi)存控制電路單元更用以下達指令序列將第二實體抹除單元的有效數(shù)據(jù)及第三實體抹除單元的至少部分有效數(shù)據(jù)程序化至第一實體抹除單元。
在本發(fā)明的一范例實施例中,在上述根據(jù)第二群組的實體抹除單元的排列順序從第二群組的實體抹除單元中僅選取有效數(shù)據(jù)量小于所述容量的另一個實體抹除單元作為第三實體抹除單元的運作中,內(nèi)存控制電路單元更用以根據(jù)第二群組的實體抹除單元的排列順序從第二群組的實體抹除單元中選取一個實體抹除單元作為候選實體抹除單元,并且判斷候選實體抹除單元的有效數(shù)據(jù)量是否小于該容量。其中倘若候選實體抹除單元的有效數(shù)據(jù)量不小于所述容量時,內(nèi)存控制電路單元更用以根據(jù)第二群組的實體抹除單元的排列順序從第二群組的實體抹除單元中選取另一個實體抹除單元作為候選實體抹除單元;倘若候選實體抹除單元的有效數(shù)據(jù)量小于所述容量時,內(nèi)存控制電路單元更用以決定候選實體抹除單元為第三實體抹除單元。
在本發(fā)明的一范例實施例中,在上述下達指令序列將第二實體抹除單元的有效數(shù)據(jù)及第三實體抹除單元的至少部分有效數(shù)據(jù)程序化至第一實體抹除單元的運作中,內(nèi)存控制電路單元更用以根據(jù)第二實體抹除單元的有效數(shù)據(jù)量及第三實體抹除單元的有效數(shù)據(jù)量計算有效數(shù)據(jù)量總和,并且判斷有效數(shù)據(jù)量總和是否小于所述容量。其中倘若有效數(shù)據(jù)量總和不小于所述容量時,內(nèi)存控制電路單元更用以下達指令序列將第二實體抹除單元的有效數(shù)據(jù)及第三實體抹除單元的至少部分有效數(shù)據(jù)程序化至第一實體抹除單元;倘若有效數(shù)據(jù)量總和小于所述容量時,內(nèi)存控制電路單元更用以根據(jù)第二群組的實體抹除單元的排列順序從第二群組的實體抹除單元中選取另一個實體抹除單元作為第四實體抹除單元,其中在從第二群組的實體抹除單元中僅選取有效數(shù)據(jù)量小于所述容量的另一個實體抹除單元作為第四實體抹除單元。此外,內(nèi)存控制電路單元更用以下達指令序列將第二實體抹除單元的有效數(shù)據(jù)、第三實體抹除單元的有效數(shù)據(jù)及第四實體抹除單元的至少部分有效數(shù)據(jù)程序化至第一實體抹除單元。
在本發(fā)明的一范例實施例中,在上述根據(jù)所記錄的抹除次數(shù)排列第二群組的實體單元的運作中,內(nèi)存控制電路單元更用以根據(jù)所記錄的抹除次數(shù)由小到大排列第二群組的實體抹除單元。
在本發(fā)明的一范例實施例中,在上述根據(jù)所記錄的抹除次數(shù)從第一群組的實體抹除單元中提取一個實體抹除單元作為第一實體抹除單元的運作中,內(nèi)存控制電路單元更用以從第一群組的實體抹除單元中提取具有最大抹除次數(shù)的實體抹除單元作為第一實體抹除單元。
在本發(fā)明的一范例實施例中,上述的第二實體抹除單元的有效數(shù)據(jù)與第三實體抹除單元的有效數(shù)據(jù)是屬于多個不連續(xù)邏輯地址。
基于上述,當要執(zhí)行平均磨損操作時,若從存有有效數(shù)據(jù)的實體抹除單元中選取了一個實體抹除單元并且其有效數(shù)據(jù)量小于一個實體抹除單元的容量時,本發(fā)明是藉由跳過存有有效數(shù)據(jù)的實體抹除單元中有效數(shù)據(jù)量不小于一個實體抹除單元的容量的實體抹除單元的方式,從存有有效數(shù)據(jù)的實體抹除單元中選取出有效數(shù)據(jù)量小于一個實體抹除單元的容量的多個實體抹除單元來一并執(zhí)行平均磨損操作。如此可有效地提升垃圾收集的效率,并確保連續(xù)寫入的速度可維持在目標值以上。
為讓本發(fā)明的上述特征和優(yōu)點能更明顯易懂,下文特舉實施例,并配合附圖作詳細說明如下。
附圖說明
圖1是根據(jù)一范例實施例所顯示的主機系統(tǒng)、內(nèi)存儲存裝置及輸入/輸出(i/o)裝置的示意圖;
圖2是根據(jù)另一范例實施例所顯示的主機系統(tǒng)、內(nèi)存儲存裝置及輸入/輸出(i/o)裝置的示意圖;
圖3是根據(jù)另一范例實施例所顯示的主機系統(tǒng)與內(nèi)存儲存裝置的示意圖;
圖4是根據(jù)一范例實施例所顯示的主機系統(tǒng)與內(nèi)存儲存裝置的概要方框圖;
圖5是根據(jù)一范例實施例所顯示的內(nèi)存控制電路單元的概要方框圖;
圖6與圖7是根據(jù)一范例實施例所顯示的管理實體抹除單元的范例示意圖;
圖8是根據(jù)一范例實施例所顯示的根據(jù)抹除次數(shù)排列第二群組的實體抹除單元的示意圖;
圖9是根據(jù)一范例實施例所顯示的選取第二實體抹除單元執(zhí)行平均磨損操作的的示意圖;
圖10是根據(jù)一范例實施例所顯示的選取第二實體抹除單元與第三實體抹除單元執(zhí)行平均磨損操作的的示意圖;
圖11是根據(jù)一范例實施例所顯示的平均磨損方法的流程圖;
圖12是根據(jù)一范例實施例所顯示的平均磨損方法中選取第三實體抹除單元的詳細步驟的流程圖。
附圖標記:
10:內(nèi)存儲存裝置
11:主機系統(tǒng)
12:輸入/輸出(i/o)裝置
110:系統(tǒng)總線
111:處理器
112:隨機存取內(nèi)存(ram)
113:只讀存儲器(rom)
114:數(shù)據(jù)傳輸接口
20:主板
201:隨身碟
202:記憶卡
203:固態(tài)硬盤
204:無線內(nèi)存儲存裝置
205:全球定位系統(tǒng)模塊
206:網(wǎng)絡適配器
207:無線傳輸裝置
208:鍵盤
209:屏幕
210:喇叭
30:內(nèi)存儲存裝置
31:主機系統(tǒng)
32:sd卡
33:cf卡
34:嵌入式儲存裝置
341:嵌入式多媒體卡
342:嵌入式多芯片封裝儲存裝置
402:連接接口單元
404:內(nèi)存控制電路單元
406:可復寫式非易失性內(nèi)存模塊
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:內(nèi)存管理電路
504:主機接口
506:內(nèi)存接口
508:緩沖存儲器
510:電源管理電路
512:錯誤檢查與校正電路
602:資料區(qū)
604:閑置區(qū)
606:系統(tǒng)區(qū)
608:取代區(qū)
lba(0)~lba(h):邏輯單元
lz(0)~lz(m):邏輯區(qū)域
801:抹除次數(shù)表
810、910、1010:第二群組
920、1020:第一群組
s1、s2、s3:排列順序
s1101:將實體抹除單元區(qū)分為第一群組與第二群組,其中第一群組的實體抹除單元無存有有效數(shù)據(jù),第二群組的實體抹除單元存有有效數(shù)據(jù)的步驟
s1103:為每一個實體抹除單元記錄抹除次數(shù),并根據(jù)所記錄的抹除次數(shù)排列第二群組的實體抹除單元的步驟
s1105:根據(jù)所記錄的抹除次數(shù)從第一群組中提取一個實體抹除單元作為第一實體抹除單元的步驟
s1107:根據(jù)第二群組的實體抹除單元的排列順序從第二群組中選取一個實體抹除單元作為第二實體抹除單元的步驟
s1109:判斷第二實體抹除單元的有效數(shù)據(jù)量是否小于一個實體抹除單元的容量的步驟
s1111:將第二實體抹除單元的有效數(shù)據(jù)寫入至第一實體抹除單元中的步驟
s1113:根據(jù)第二群組的實體抹除單元的排列順序從第二群組中選取一個實體抹除單元作為第三實體抹除單元,其中第二群組的實體抹除單元中有效數(shù)據(jù)量不小于一個實體抹除單元的容量的實體抹除單元不會被選取作為第三實體抹除單元的步驟
s1115:將第二實體抹除單元的有效數(shù)據(jù)及第三實體抹除單元的至少部分有效數(shù)據(jù)程序化至第一實體抹除單元的步驟
s1201:根據(jù)第二群組的實體抹除單元的排列順序從第二群組中選取一個實體抹除單元作為候選實體抹除單元的步驟
s1203:判斷候選實體抹除單元的有效數(shù)據(jù)量是否小于一個實體抹除單元的容量的步驟
s1205:決定候選實體抹除單元為第三實體抹除單元的步驟
具體實施方式
一般而言,內(nèi)存儲存裝置(亦稱,內(nèi)存儲存系統(tǒng))包括可復寫式非易失性內(nèi)存模塊與控制器(亦稱,控制電路單元)。通常內(nèi)存儲存裝置是與主機系統(tǒng)一起使用,以使主機系統(tǒng)可將數(shù)據(jù)寫入至內(nèi)存儲存裝置或從內(nèi)存儲存裝置中讀取數(shù)據(jù)。
圖1是根據(jù)一范例實施例所顯示的主機系統(tǒng)、內(nèi)存儲存裝置及輸入/輸出(i/o)裝置的示意圖,且圖2是根據(jù)另一范例實施例所顯示的主機系統(tǒng)、內(nèi)存儲存裝置及輸入/輸出(i/o)裝置的示意圖。
請參照圖1與圖2,主機系統(tǒng)11一般包括處理器111、隨機存取內(nèi)存(randomaccessmemory,ram)112、只讀存儲器(readonlymemory,rom)113及數(shù)據(jù)傳輸接口114。處理器111、隨機存取內(nèi)存112、只讀存儲器113及數(shù)據(jù)傳輸接口114皆電性連接至系統(tǒng)總線(systembus)110。
在本范例實施例中,主機系統(tǒng)11是通過數(shù)據(jù)傳輸接口114與內(nèi)存儲存裝置10電性連接。例如,主機系統(tǒng)11可經(jīng)由數(shù)據(jù)傳輸接口114將數(shù)據(jù)寫入至內(nèi)存儲存裝置10或從內(nèi)存儲存裝置10中讀取數(shù)據(jù)。此外,主機系統(tǒng)11是通過系統(tǒng)總線110與i/o裝置12電性連接。例如,主機系統(tǒng)11可經(jīng)由系統(tǒng)總線110將輸出信號傳送至i/o裝置12或從i/o裝置12接收輸入信號。
在本范例實施例中,處理器111、隨機存取內(nèi)存112、只讀存儲器113及數(shù)據(jù)傳輸接口114 是可設置在主機系統(tǒng)11的主板20上。數(shù)據(jù)傳輸接口114的數(shù)目可以是一或多個。通過數(shù)據(jù)傳輸接口114,主板20可以經(jīng)由有線或無線方式電性連接至內(nèi)存儲存裝置10。內(nèi)存儲存裝置10可例如是隨身碟201、記憶卡202、固態(tài)硬盤(solidstatedrive,ssd)203或無線內(nèi)存儲存裝置204。無線內(nèi)存儲存裝置204可例如是近距離無線通信(nearfieldcommunicationstorage,nfc)內(nèi)存儲存裝置、無線傳真(wifi)內(nèi)存儲存裝置、藍牙(bluetooth)內(nèi)存儲存裝置或低功耗藍牙內(nèi)存儲存裝置(例如,ibeacon)等以各式無線通信技術為基礎的內(nèi)存儲存裝置。此外,主板20也可以通過系統(tǒng)總線110電性連接至全球定位系統(tǒng)(globalpositioningsystem,gps)模塊205、網(wǎng)絡適配器206、無線傳輸裝置207、鍵盤208、屏幕209、喇叭210等各式i/o裝置。例如,在一范例實施例中,主板20可通過無線傳輸裝置207存取無線內(nèi)存儲存裝置204。
在一范例實施例中,所提及的主機系統(tǒng)為可實質(zhì)地與內(nèi)存儲存裝置配合以儲存數(shù)據(jù)的任意系統(tǒng)。雖然在上述范例實施例中,主機系統(tǒng)是以計算機系統(tǒng)來作說明,然而,圖3是根據(jù)另一范例實施例所顯示的主機系統(tǒng)與內(nèi)存儲存裝置的示意圖。請參照圖3,在另一范例實施例中,主機系統(tǒng)31也可以是數(shù)碼相機、攝影機、通信裝置、音頻播放器、視頻播放器或平板電腦等系統(tǒng),而內(nèi)存儲存裝置30可為其所使用的sd卡32、cf卡33或嵌入式儲存裝置34等各式非易失性內(nèi)存儲存裝置。嵌入式儲存裝置34包括嵌入式多媒體卡(embeddedmmc,emmc)341和/或嵌入式多芯片封裝儲存裝置(embeddedmultichippackage,emcp)342等各類型將內(nèi)存模塊直接電性連接于主機系統(tǒng)的基板上的嵌入式儲存裝置。
圖4是根據(jù)一范例實施例所顯示的主機系統(tǒng)與內(nèi)存儲存裝置的概要方框圖。
請參照圖4,內(nèi)存儲存裝置10包括連接接口單元402、內(nèi)存控制電路單元404與可復寫式非易失性內(nèi)存模塊406。
在本范例實施例中,連接接口單元402是兼容于序列先進附件(serialadvancedtechnologyattachment,sata)標準。然而,必須了解的是,本發(fā)明不限于此,連接接口單元402亦可以是符合并列先進附件(paralleladvancedtechnologyattachment,pata)標準、電氣和電子工程師協(xié)會(instituteofelectricalandelectronicengineers,ieee)1394標準、高速周邊零件連接接口(peripheralcomponentinterconnectexpress,pciexpress)標準、通用串行總線(universalserialbus,usb)標準、超高速一代(ultrahighspeed-i,uhs-i)接口標準、超高速二代(ultrahighspeed-ii,uhs-ii)接口標準、安全數(shù)字(securedigital,sd)接口標準、記憶棒(memorystick,ms)接口標準、多芯片封裝(multi-chippackage)接口標準、多媒體儲存卡(multimediacard,mmc)接口標準、嵌入式多媒體儲存卡(embeddedmultimediacard,emmc)接口標準、通用閃存(universalflashstorage,ufs)接口標準、嵌入式多芯片封裝(embeddedmultichippackage,emcp)接口標準、小型快閃(compactflash,cf)接口標準、整合式驅動電子接口(integrateddeviceelectronics,ide)標準或其他適合的標準。在本范例實施例中,連接接口單元402可與內(nèi)存控制電路單元404封裝在一個芯片中,或者連接接口單元402是布設于一包含內(nèi)存控制電路單元的芯片外。
內(nèi)存控制電路單元404用以執(zhí)行以硬件型式或韌體型式實作的多個邏輯門或控制指令,并且根據(jù)主機系統(tǒng)11的指令在可復寫式非易失性內(nèi)存模塊406中進行數(shù)據(jù)的寫入、讀取與抹除等運作。
可復寫式非易失性內(nèi)存模塊406是電性連接至內(nèi)存控制電路單元404,并且用以儲存主機 系統(tǒng)11所寫入的數(shù)據(jù)??蓮蛯懯椒且资詢?nèi)存模塊406具有實體抹除單元410(0)~410(n)。例如,實體抹除單元410(0)~410(n)可屬于同一個內(nèi)存晶粒(die)或者屬于不同的內(nèi)存晶粒。每一實體抹除單元分別具有多個實體程序化單元,其中屬于同一個實體抹除單元的實體程序化單元可被獨立地寫入且被同時地抹除。然而,必須了解的是,本發(fā)明不限于此,每一實體抹除單元是可由64個實體程序化單元、256個實體程序化單元或其他任意個實體程序化單元所組成。
更詳細來說,實體抹除單元為抹除的最小單位。即,每一實體抹除單元含有最小數(shù)目之一并被抹除的記憶胞。實體程序化單元為程序化的最小單元。即,實體程序化單元為寫入數(shù)據(jù)的最小單元。每一實體程序化單元通常包括數(shù)據(jù)位區(qū)與冗余位區(qū)。數(shù)據(jù)位區(qū)包含多個實體存取地址用以儲存用戶的數(shù)據(jù),而冗余位區(qū)用以儲存系統(tǒng)的數(shù)據(jù)(例如,控制信息與錯誤更正碼)。在本范例實施例中,每一個實體程序化單元的數(shù)據(jù)位區(qū)中會包含8個實體存取地址,且一個實體存取地址的大小為512字節(jié)(byte)。然而,在其他范例實施例中,數(shù)據(jù)位區(qū)中也可包含數(shù)目更多或更少的實體存取地址,本發(fā)明并不限制實體存取地址的大小以及個數(shù)。例如,在一范例實施例中,實體抹除單元為實體區(qū)塊,并且實體程序化單元為實體頁面或實體扇區(qū),但本發(fā)明不以此為限。
在本范例實施例中,可復寫式非易失性內(nèi)存模塊406為多階記憶胞(multilevelcell,mlc)nand型閃存模塊(即,一個記憶胞中可儲存2個數(shù)據(jù)位的閃存模塊)。然而,本發(fā)明不限于此,可復寫式非易失性內(nèi)存模塊406亦可是單階記憶胞(singlelevelcell,slc)nand型閃存模塊(即,一個記憶胞中可儲存1個數(shù)據(jù)位的閃存模塊)、三階記憶胞(trinarylevelcell,tlc)nand型閃存模塊(即,一個記憶胞中可儲存3個數(shù)據(jù)位的閃存模塊)、其他閃存模塊或其他具有相同特性的內(nèi)存模塊。
圖5是根據(jù)一范例實施例所顯示之內(nèi)存控制電路單元的概要方框圖。
請參照圖5,內(nèi)存控制電路單元404包括內(nèi)存管理電路502、主機接口504與內(nèi)存接口506、緩沖存儲器508、電源管理電路510與錯誤檢查與校正電路512。
內(nèi)存管理電路502用以控制內(nèi)存控制電路單元404的整體運作。具體來說,內(nèi)存管理電路502具有多個控制指令,并且在內(nèi)存儲存裝置10運作時,此些控制指令會被執(zhí)行以進行數(shù)據(jù)的寫入、讀取與抹除等運作。
在本范例實施例中,內(nèi)存管理電路502的控制指令是以韌體型式來實作。例如,內(nèi)存管理電路502具有微處理器單元(未顯示)與只讀存儲器(未顯示),并且此些控制指令是被刻錄至此只讀存儲器中。當內(nèi)存儲存裝置10運作時,此些控制指令會由微處理器單元來執(zhí)行以進行數(shù)據(jù)的寫入、讀取與抹除等運作。
在本發(fā)明另一范例實施例中,內(nèi)存管理電路502的控制指令亦可以程序代碼型式儲存于可復寫式非易失性內(nèi)存模塊406的特定區(qū)域(例如,內(nèi)存模塊中專用于存放系統(tǒng)數(shù)據(jù)的系統(tǒng)區(qū))中。此外,內(nèi)存管理電路502具有微處理器單元(未顯示)、只讀存儲器(未顯示)及隨機存取內(nèi)存(未顯示)。特別是,此只讀存儲器具有驅動碼,并且當內(nèi)存控制電路單元404被致能時,微處理器單元會先執(zhí)行此驅動碼段來將儲存于可復寫式非易失性內(nèi)存模塊406中的控制指令加載至內(nèi)存管理電路502的隨機存取內(nèi)存中。之后,微處理器單元會運轉此些控制指令以進行數(shù)據(jù)的寫入、讀取與抹除等運作。
此外,在本發(fā)明另一范例實施例中,內(nèi)存管理電路502的控制指令亦可以一硬件型式來 實作。例如,內(nèi)存管理電路502包括微控制器、記憶胞管理電路、內(nèi)存寫入電路、內(nèi)存讀取電路、內(nèi)存抹除電路與數(shù)據(jù)處理電路。記憶胞管理電路、內(nèi)存寫入電路、內(nèi)存讀取電路、內(nèi)存抹除電路與數(shù)據(jù)處理電路是電性連接至微控制器。其中,記憶胞管理電路用以管理可復寫式非易失性內(nèi)存模塊406的實體抹除單元;內(nèi)存寫入電路用以對可復寫式非易失性內(nèi)存模塊406下達寫入指令以將數(shù)據(jù)寫入至可復寫式非易失性內(nèi)存模塊406中;內(nèi)存讀取電路用以對可復寫式非易失性內(nèi)存模塊406下達讀取指令以從可復寫式非易失性內(nèi)存模塊406中讀取數(shù)據(jù);內(nèi)存抹除電路用以對可復寫式非易失性內(nèi)存模塊406下達抹除指令以將數(shù)據(jù)從可復寫式非易失性內(nèi)存模塊406中抹除;而數(shù)據(jù)處理電路用以處理欲寫入至可復寫式非易失性內(nèi)存模塊406的數(shù)據(jù)以及從可復寫式非易失性內(nèi)存模塊406中讀取的數(shù)據(jù)。
主機接口504是電性連接至內(nèi)存管理電路502并且用以電性連接至連接接口單元402,以接收與識別主機系統(tǒng)11所傳送的指令與數(shù)據(jù)。也就是說,主機系統(tǒng)11所傳送的指令與數(shù)據(jù)會通過主機接口504來傳送至內(nèi)存管理電路502。在本范例實施例中,主機接口504是兼容于sata標準。然而,必須了解的是本發(fā)明不限于此,主機接口504亦可以是兼容于pata標準、ieee1394標準、pciexpress標準、usb標準、uhs-i接口標準、uhs-ii接口標準、sd標準、ms標準、mmc標準、cf標準、ide標準或其他適合的數(shù)據(jù)傳輸標準。
內(nèi)存接口506是電性連接至內(nèi)存管理電路502并且用以存取可復寫式非易失性內(nèi)存模塊406。也就是說,欲寫入至可復寫式非易失性內(nèi)存模塊406的數(shù)據(jù)會經(jīng)由內(nèi)存接口506轉換為可復寫式非易失性內(nèi)存模塊406所能接受的格式。
緩沖存儲器508是電性連接至內(nèi)存管理電路502并且用以暫存來自于主機系統(tǒng)11的數(shù)據(jù)與指令或來自于可復寫式非易失性內(nèi)存模塊406的數(shù)據(jù)。
電源管理電路510是電性連接至內(nèi)存管理電路502并且用以控制內(nèi)存儲存裝置10的電源。
錯誤檢查與校正電路512是電性連接至內(nèi)存管理電路502并且用以執(zhí)行錯誤檢查與校正程序以確保數(shù)據(jù)的正確性。具體來說,當內(nèi)存管理電路502從主機系統(tǒng)11中接收到寫入指令時,錯誤檢查與校正電路512會為對應此寫入指令的數(shù)據(jù)產(chǎn)生對應的錯誤檢查與校正碼(errorcheckingandcorrectingcode,ecccode),并且內(nèi)存管理電路502會將對應此寫入指令的數(shù)據(jù)與對應的錯誤檢查與校正碼寫入至可復寫式非易失性內(nèi)存模塊406中。之后,當內(nèi)存管理電路502從可復寫式非易失性內(nèi)存模塊406中讀取數(shù)據(jù)時會同時讀取此數(shù)據(jù)對應的錯誤檢查與校正碼,并且錯誤檢查與校正電路512會根據(jù)此錯誤檢查與校正碼對所讀取的數(shù)據(jù)執(zhí)行錯誤檢查與校正程序。
圖6與圖7是根據(jù)一范例實施例所顯示的管理實體抹除單元的范例示意圖。
必須了解的是,在此描述可復寫式非易失性內(nèi)存模塊406的實體抹除單元的運作時,以“提取”、“分組”、“劃分”、“關聯(lián)”等詞來操作實體抹除單元是邏輯上的概念。也就是說,可復寫式非易失性內(nèi)存模塊的實體抹除單元的實際位置并未更動,而是邏輯上對可復寫式非易失性內(nèi)存模塊的實體抹除單元進行操作。
請參照圖6,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會將實體抹除單元410(0)~410(n)邏輯地分組為數(shù)據(jù)區(qū)602、閑置區(qū)604、系統(tǒng)區(qū)606與取代區(qū)608。
邏輯上屬于數(shù)據(jù)區(qū)602與閑置區(qū)604的實體抹除單元是用以儲存來自于主機系統(tǒng)11的數(shù)據(jù)。具體來說,數(shù)據(jù)區(qū)602的實體抹除單元是被視為已儲存數(shù)據(jù)的實體抹除單元,而閑置區(qū)604的實體抹除單元是用以替換數(shù)據(jù)區(qū)602的實體抹除單元。也就是說,當從主機系統(tǒng)11接 收到寫入指令與欲寫入的數(shù)據(jù)時,內(nèi)存管理電路502會從閑置區(qū)604中提取實體抹除單元,并且將數(shù)據(jù)寫入至所提取的實體抹除單元中,以替換數(shù)據(jù)區(qū)602的實體抹除單元。
邏輯上屬于系統(tǒng)區(qū)606的實體抹除單元是用以記錄系統(tǒng)數(shù)據(jù)。例如,系統(tǒng)數(shù)據(jù)包括關于可復寫式非易失性內(nèi)存模塊的制造商與型號、可復寫式非易失性內(nèi)存模塊的實體抹除單元數(shù)、每一實體抹除單元的實體程序化單元數(shù)等。
邏輯上屬于取代區(qū)608中的實體抹除單元是用于壞實體抹除單元取代程序,以取代損壞的實體抹除單元。具體來說,倘若取代區(qū)608中仍存有正常的實體抹除單元并且數(shù)據(jù)區(qū)602的實體抹除單元損壞時,內(nèi)存管理電路502會從取代區(qū)608中提取正常的實體抹除單元來更換損壞的實體抹除單元。
特別是,數(shù)據(jù)區(qū)602、閑置區(qū)604、系統(tǒng)區(qū)606與取代區(qū)608的實體抹除單元的數(shù)量會根據(jù)不同的內(nèi)存規(guī)格而有所不同。此外,必須了解的是,在內(nèi)存儲存裝置10的運作中,實體抹除單元關聯(lián)至數(shù)據(jù)區(qū)602、閑置區(qū)604、系統(tǒng)區(qū)606與取代區(qū)608的分組關系會動態(tài)地變動。例如,當閑置區(qū)604中的實體抹除單元損壞而被取代區(qū)608的實體抹除單元取代時,則原本取代區(qū)608的實體抹除單元會被關聯(lián)至閑置區(qū)604。
請參照圖7,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會配置邏輯單元lba(0)~lba(h)以映像數(shù)據(jù)區(qū)602的實體抹除單元,其中每一邏輯單元具有多個邏輯子單元以映像對應的實體抹除單元的實體程序化單元。并且,當主機系統(tǒng)11欲寫入數(shù)據(jù)至邏輯單元或更新儲存于邏輯單元中的數(shù)據(jù)時,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會從閑置區(qū)604中提取一個實體抹除單元來寫入數(shù)據(jù),以輪替數(shù)據(jù)區(qū)602的實體抹除單元。在本范例實施例中,邏輯子單元可以是邏輯頁面或邏輯扇區(qū)。
為了識別每個邏輯單元的數(shù)據(jù)被儲存在哪個實體抹除單元,在本范例實施例中,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會記錄邏輯單元與實體抹除單元之間的映像。并且,當主機系統(tǒng)11欲在邏輯子單元中存取數(shù)據(jù)時,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會確認此邏輯子單元所屬的邏輯單元,并且在此邏輯單元所映像的實體抹除單元中來存取數(shù)據(jù)。例如,在本范例實施例中,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會在可復寫式非易失性內(nèi)存模塊406中儲存邏輯-實體映像表來記錄每一邏輯單元所映像的實體抹除單元,并且當欲存取數(shù)據(jù)時內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會將邏輯-實體映像表加載至緩沖存儲器508來維護。
值得一提的是,由于緩沖存儲器508的容量有限無法儲存記錄所有邏輯單元的映像關系的映像表,因此,在本范例實施例中,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會將邏輯單元lba(0)~lba(h)分組為多個邏輯區(qū)域lz(0)~lz(m),并且為每一邏輯區(qū)域配置一個邏輯-實體映像表。特別是,當內(nèi)存控制電路單元404(或內(nèi)存管理電路502)欲更新某個邏輯單元的映像時,對應此邏輯單元所屬的邏輯區(qū)域的邏輯-實體映像表會被加載至緩沖存儲器508來被更新。
內(nèi)存儲存裝置10在經(jīng)過一段時間的運作之后,可復寫式非易失性內(nèi)存模塊406中的實體抹除單元可被區(qū)分為無存有有效數(shù)據(jù)的實體抹除單元(以下亦稱為第一群組的實體抹除單元)與存有有效數(shù)據(jù)的實體抹除單元(以下亦稱為第二群組的實體抹除單元)。一般而言,閑置區(qū)604中的實體抹除單元為無存有有效數(shù)據(jù)的實體抹除單元,而數(shù)據(jù)區(qū)602中的實體抹除單元經(jīng)過用戶操作后會存有有效數(shù)據(jù)。
主機系統(tǒng)11的寫入操作可以簡單地分為連續(xù)寫入操作與非連續(xù)寫入操作。連續(xù)寫入指的是多筆寫入指令所要寫入的邏輯地址是連續(xù)的,反之則是非連續(xù)寫入。換句話說,第二群組的實體抹除單元中,有些實體抹除單元存有的有效數(shù)據(jù)是屬于連續(xù)的邏輯地址,而有些實體抹除單元存有的有效數(shù)據(jù)是屬于不連續(xù)的邏輯地址。在本范例實施例中,每次在執(zhí)行屬于連續(xù)寫入操作的寫入程序時,用以儲存寫入數(shù)據(jù)的實體抹除單元會被屬于連續(xù)邏輯地址的有效數(shù)據(jù)填滿。而在執(zhí)行非連續(xù)寫入操作的寫入程序時,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)可持續(xù)下達寫入指令以將屬于不連續(xù)邏輯地址的數(shù)據(jù)寫入至實體抹除單元中未存有有效數(shù)據(jù)的實體程序化單元(亦可稱為閑置的實體程序化單元)中。當主機系統(tǒng)11欲更新某個邏輯地址的數(shù)據(jù)時,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會將更新數(shù)據(jù)寫入至閑置的實體程序化單元中,并將此邏輯地址原本映像的實體程序化單元所儲存的數(shù)據(jù)標記為無效數(shù)據(jù)。因此,在執(zhí)行了一段時間的非連續(xù)寫入操作后,第二群組的實體抹除單元中可能存在同時存有有效數(shù)據(jù)及無效數(shù)據(jù)的實體抹除單元,換句話說,此些同時存有有效數(shù)據(jù)及無效數(shù)據(jù)的實體抹除單元的儲存空間中并未存滿有效數(shù)據(jù)。在本范例實施例中,此些未存滿有效數(shù)據(jù)的實體抹除單元中的有效數(shù)據(jù)可屬于不連續(xù)地址。然而,本發(fā)明并不以此為限。
當一個實體抹除單元中無存有有效數(shù)據(jù)(例如,所存有的數(shù)據(jù)皆已標記為無效數(shù)據(jù))時,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)可對此實體抹除單元執(zhí)行抹除操作以再次寫入數(shù)據(jù)。在本范例實施例中,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會為每一實體抹除單元410(0)~410(n)記錄對應的抹除次數(shù)。具體而言,每一實體抹除單元410(0)~410(n)的抹除次數(shù)是有限的。例如,實體抹除單元在抹除一萬次之后就會損壞,并且當實體抹除單元磨損導致儲存容量的部分容量損失或性能明顯退化時,會造成用戶所儲存的數(shù)據(jù)遺失或無法儲存數(shù)據(jù)等不利影響。特別是,實體抹除單元的磨損系取決于每一實體抹除單元中被程序化或抹除的次數(shù)。也就是說,若一實體抹除單元僅被程序化(或者寫入)一次,然后未被再次程序化時,此實體抹除單元的磨損程度將相對地低。反之,若一個實體抹除單元被重復地程序化與抹除時,則此實體抹除單元的磨損程度就會相對地高。例如,當可復寫式非易失性內(nèi)存模塊406中的一個實體抹除單元被抹除時,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會將對應此實體抹除單元的抹除次數(shù)加1。在此,抹除次數(shù)可被記錄于一抹除次數(shù)表中或者其所對應的實體抹除單元中。
在執(zhí)行了一段時間的非連續(xù)寫入操作后,可能因重復執(zhí)行寫入程序而使部分的實體抹除單元的抹除次數(shù)持續(xù)增加。在本范例實施例中,當判斷實體抹除單元的抹除次數(shù)之間的差值到達一定數(shù)值時,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會開始執(zhí)行平均磨損操作。當執(zhí)行平均磨損操作時,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會根據(jù)實體抹除單元的抹除次數(shù)從第一群組的實體抹除單元(即無存有有效數(shù)據(jù)的實體抹除單元)與第二群組的實體抹除單元(即存有有效數(shù)據(jù)的實體抹除單元)中選取實體抹除單元來進行交換。例如,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)依據(jù)抹除次數(shù)從第一群組的實體抹除單元中提取一個實體抹除單元(以下亦稱為第一實體抹除單元),并且依據(jù)抹除次數(shù)從第二群組的實體抹除單元中選取一個實體抹除單元(以下亦稱為第二實體抹除單元)。
在本范例實施例中,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會從第一群組的實體抹除單元中選取具有最大抹除次數(shù)的實體抹除單元作為第一實體抹除單元。另一方面,內(nèi)存控制電路單元會從第二群組中選取具有最小抹除次數(shù)的實體抹除單元作為第二實體抹除單 元。舉例而言,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會先根據(jù)第二群組的實體抹除單元的抹除次數(shù)將第二群組的實體抹除單元進行排序,并且記錄第二群組的實體抹除單元的排列順序。然后,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會再依據(jù)第二群組的實體抹除單元的排列順序從頭開始選取實體抹除單元。例如,依據(jù)抹除次數(shù)由小到大排列第二群組的實體抹除單元,由此,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)便可依抹除次數(shù)小到大的順序來選取實體抹除單元。然而,第一實體抹除單元的抹除次數(shù)與第二實體抹除單元的抹除次數(shù)也可依實際需求設定為不同于上述的條件,本發(fā)明不加以限制。
圖8是根據(jù)一范例實施例所顯示的根據(jù)抹除次數(shù)排列第二群組的實體抹除單元的示意圖。
請參照圖8,第二群組810的實體抹除單元810(0)~810(5)為存有有效數(shù)據(jù)的實體抹除單元(實體抹除單元中所儲存的有效數(shù)據(jù)以斜線表示)。在本范例實施例中,實體抹除單元810(0)~810(5)的抹除次數(shù)是記錄在抹除次數(shù)表801中。內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會根據(jù)抹除次數(shù)表801中所記錄的抹除次數(shù)由小到大排列第二群組810的實體抹除單元810(0)~810(5)。如圖8所示,實體抹除單元810(0)~810(5)被排列如排列順序s1。也就是說,在排列順序s1中,排列在第一位的實體抹除單元810(5)是第二群組810的實體抹除單元810(0)~810(5)中具有最小抹除次數(shù)的實體抹除單元;排列在最末位的實體抹除單元810(3)是第二群組810的實體抹除單元810(0)~810(5)中具有最大抹除次數(shù)的實體抹除單元。排序完成后,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)便可根據(jù)排列順序s1選取排列在第一位的實體抹除單元810(5)作為第二實體抹除單元以進行平均磨損操作。
由于第二群組中可能存在同時存有有效數(shù)據(jù)與無效數(shù)據(jù)的實體抹除單元,因此,當從第二群組中選取了第二實體抹除單元之后,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會判斷第二實體抹除單元的有效數(shù)據(jù)量是否小于一個實體抹除單元的容量。在此,一個實體抹除單元的容量是指一個實體抹除單元可儲存數(shù)據(jù)的總數(shù)據(jù)量,而一個實體抹除單元的有效數(shù)據(jù)量是指一個實體抹除單元中所存有的有效數(shù)據(jù)的數(shù)據(jù)量。在本范例實施例中,每一個實體抹除單元皆具有相同的容量。
倘若第二實體抹除單元的有效數(shù)據(jù)量不小于(例如,等于)一個實體抹除單元的容量,表示第二實體抹除單元存有可寫滿一個空的實體抹除單元的有效數(shù)據(jù)。在此情況下,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)可下達指令序列直接將第二實體抹除單元中的有效數(shù)據(jù)寫入第一實體抹除單元中,并且將第二實體抹除單元中的有效數(shù)據(jù)標記為無效數(shù)據(jù)。
圖9是根據(jù)一范例實施例所顯示的選取第二實體抹除單元執(zhí)行平均磨損操作的示意圖。
請參照圖9,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)從第一儲存區(qū)920中提取實體抹除單元920(0)作為第一實體抹除單元。在本范例實施例中,假設第二儲存區(qū)910的實體抹除單元910(0)~910(5)已經(jīng)排序如排列順序s2。內(nèi)存控制電路單元404(或內(nèi)存管理電路502)依據(jù)排列順序s2選取實體抹除單元910(0)作為第二實體抹除單元。由于實體抹除單元910(0)的所有實體程序化單元皆存有有效數(shù)據(jù),換句話說,實體抹除單元910(0)的儲存空間已存滿有效數(shù)據(jù),因此內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會判定實體抹除單元910(0)的有效數(shù)據(jù)量d(0)等于(即不小于)一個實體抹除單元的容量?;耍瑑?nèi)存控制電路單元404(或內(nèi)存管理電路502)會下達指令序列將儲存在實體抹除單元910(0)(即第二實體抹除單元)中的有效數(shù)據(jù)寫入至從第一儲存區(qū)920所提取的實體抹除單元920(0)(即第一實體抹除單元例如)中。
在另一方面,倘若第二實體抹除單元的有效數(shù)據(jù)量小于一個實體抹除單元的容量,表示第二實體抹除單元未存有可寫滿一個空的實體抹除單元的有效數(shù)據(jù)。換句話說,第二實體抹除單元的儲存空間未存滿有效數(shù)據(jù)。此時,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會再從第二群組中選取其他的實體抹除單元以收集到可寫滿一個空的實體抹除單元的有效數(shù)據(jù)。具體而言,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會依據(jù)第二群組的實體抹除單元的排列順序依序從第二群組中選取另一個實體抹除單元作為候選實體抹除單元。例如,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會依序選取第二實體抹除單元的后一個實體抹除單元作為候選實體抹除單元。進一步地,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會判斷候選實體抹除單元的有效數(shù)據(jù)量是否小于一個實體抹除單元的容量。
倘若目前的候選實體抹除單元的有效數(shù)據(jù)量不小于(例如,等于)一個實體抹除單元的容量,表示目前的候選實體抹除單元存有可寫滿一個空的實體抹除單元的有效數(shù)據(jù)。此時,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會忽略目前的候選實體抹除單元,并且依序從第二群組中選取另一個實體抹除單元作為新的候選實體抹除單元。例如,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會依序選取目前的候選實體抹除單元的后一個實體抹除單元作為新的候選實體抹除單元,并且再次執(zhí)行上述判斷候選實體抹除單元的有效數(shù)據(jù)量是否小于一個實體抹除單元的容量的操作。此外,倘若目前的候選實體抹除單元的有效數(shù)據(jù)量小于一個實體抹除單元的容量,表示目前的候選實體抹除單元未存有可寫滿一個空的實體抹除單元的有效數(shù)據(jù)。基此,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會決定目前的候選實體抹除單元為第三實體抹除單元,并且下達指令序列將第二實體抹除單元的有效數(shù)據(jù)與第三實體抹除單元的至少部分的有效數(shù)據(jù)一起寫入第一實體抹除單元中。
值得一提的是,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)還會計算第二實體抹除單元的有效數(shù)據(jù)量與第三實體抹除單元的有效數(shù)據(jù)量的有效數(shù)據(jù)量總和是否小于一個實體抹除單元的容量。換句話說,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會根據(jù)有效數(shù)據(jù)量總和來決定要寫入至第一實體抹除單元的有效數(shù)據(jù)。例如,倘若有效數(shù)據(jù)量總和等于一個實體抹除單元的容量,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會下達指令序列將第二實體抹除單元的全部有效數(shù)據(jù)與第三實體抹除單元的全部有效數(shù)據(jù)寫入至第一實體抹除單元中;倘若有效數(shù)據(jù)量總和大于一個實體抹除單元的容量,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會下達指令序列將第二實體抹除單元的全部有效數(shù)據(jù)與第三實體抹除單元的部分有效數(shù)據(jù)寫入至第一實體抹除單元中。另一方面,當有效數(shù)據(jù)量總和小于一個實體抹除單元的容量時,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會繼續(xù)從第二群組中選取適合的實體抹除單元(以下亦稱為第四實體抹除單元)以繼續(xù)收集有效數(shù)據(jù)。第四實體抹除單元的選取方式與上述第三實體抹除單元的選取方式相同,在此將不再贅述。
圖10是根據(jù)一范例實施例所顯示的選取第二實體抹除單元與第三實體抹除單元執(zhí)行平均磨損操作的示意圖。
請參照圖10,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)從第一儲存區(qū)1020中提取實體抹除單元1020(1)作為第一實體抹除單元。假設第二儲存區(qū)1010的實體抹除單元1010(0)~1010(5)已經(jīng)排序為排列順序s3。內(nèi)存控制電路單元404(或內(nèi)存管理電路502)依據(jù)排列順序s3選取實體抹除單元1010(0)作為第二實體抹除單元。由于實體抹除單元1010(0)中同時存有無效數(shù)據(jù)與有效數(shù)據(jù),換句話說,實體抹除單元1010(0)的儲存空間并未存滿有效數(shù) 據(jù),因此內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會判定實體抹除單元1010(0)的有效數(shù)據(jù)量小于一個實體抹除單元的容量?;?,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會依據(jù)排列順序s3選取第二群組1010中排列在實體抹除單元1010(0)的后一個實體抹除單元1010(2)作為候選實體抹除單元。然而,由于實體抹除單元1010(2)的有效數(shù)據(jù)量等于一個實體抹除單元的容量(即所有實體程序化單元皆存有有效數(shù)據(jù)),因此,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會忽略實體抹除單元1010(2)并且依據(jù)排列順序s3選取第二群組1010中排列在實體抹除單元1010(2)的后一個實體抹除單元1010(1)作為新的候選實體抹除單元。由于實體抹除單元1010(1)的有效數(shù)據(jù)量小于一個實體抹除單元的容量,因此,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會決定實體抹除單元1010(1)為第三實體抹除單元。
在本范例實施例中,假設實體抹除單元1010(0)的有效數(shù)據(jù)量與實體抹除單元1010(1)的有效數(shù)據(jù)量各等于一個實體抹除單元的容量的一半,也就是說,實體抹除單元1010(0)的有效數(shù)據(jù)量與實體抹除單元1010(1)的有效數(shù)據(jù)量的有效數(shù)據(jù)量總和會等于一個實體抹除單元的容量。因此,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會下達指令序列將實體抹除單元1010(0)的全部有效數(shù)據(jù)與實體抹除單元1010(1)的全部有效數(shù)據(jù)一起寫入至從第一儲存區(qū)1020中所提取的實體抹除單元1020(1)中。然后,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)可將實體抹除單元1010(0)的全部有效數(shù)據(jù)與實體抹除單元1010(1)的全部有效數(shù)據(jù)標記為無效數(shù)據(jù)。
除此之外,在本范例實施例中,若假設實體抹除單元1010(0)的有效數(shù)據(jù)量等于一個實體抹除單元的一半容量,并且實體抹除單元1010(1)的有效數(shù)據(jù)量等于一個實體抹除單元的四分之三容量,則實體抹除單元1010(0)的有效數(shù)據(jù)量與實體抹除單元1010(1)的有效數(shù)據(jù)量的有效數(shù)據(jù)量總和會大于一個實體抹除單元的容量。因此,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會下達指令序列將實體抹除單元1010(0)的全部有效數(shù)據(jù)與實體抹除單元1010(1)的部分有效數(shù)據(jù)一起寫入至從第一儲存區(qū)1020中所提取的實體抹除單元1020(1)中。然后,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)可將實體抹除單元1010(0)的全部有效數(shù)據(jù)與實體抹除單元1010(1)中已寫入至實體抹除單元1020(1)的有效數(shù)據(jù)標記為無效數(shù)據(jù)。
另外,在本范例實施例中,若假設實體抹除單元1010(0)的有效數(shù)據(jù)量等于一個實體抹除單元的一半容量,并且實體抹除單元1010(1)的有效數(shù)據(jù)量等于一個實體抹除單元的四分之一容量,則實體抹除單元1010(0)的有效數(shù)據(jù)量與實體抹除單元1010(1)的有效數(shù)據(jù)量的有效數(shù)據(jù)量總和會小于一個實體抹除單元的容量。因此,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會依據(jù)排列順序s3選取第二群組1010中排列在實體抹除單元1010(1)的后一個實體抹除單元1010(4)作為候選實體抹除單元。然而,由于實體抹除單元1010(4)的有效數(shù)據(jù)量等于一個實體抹除單元的容量(即實體抹除單元1010(4)的儲存空間已存滿有效數(shù)據(jù)),因此,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會忽略實體抹除單元1010(4)并且依據(jù)排列順序s3選取第二群組1010中排列在實體抹除單元1010(4)的后一個實體抹除單元1010(5)作為新的候選實體抹除單元。由于實體抹除單元1010(5)的有效數(shù)據(jù)量小于一個實體抹除單元的容量,因此,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會決定實體抹除單元1010(5)為第四實體抹除單元。假設實體抹除單元1010(5)的有效數(shù)據(jù)量等于一個實體抹除單元的四分之一容量。也就是說,實體抹除單元1010(0)的有效數(shù)據(jù)量、實體抹除單元1010(1)的有效數(shù)據(jù)量與實體抹除單元1010(5)的有效數(shù)據(jù)量的有效數(shù)據(jù)量總和等于一個實體抹除單元的容量,因此內(nèi)存控制電路單元404(或內(nèi)存管理電路502)則會下達指令序列將實體抹除單元1010(0)的全部有效數(shù)據(jù)、實 體抹除單元1010(1)的全部有效數(shù)據(jù)與實體抹除單元1010(5)的全部有效數(shù)據(jù)一起寫入至從第一儲存區(qū)1020中所提取的實體抹除單元1020(1)中(圖未顯示)。內(nèi)存控制電路單元404(或內(nèi)存管理電路502)并會將實體抹除單元1010(0)的全部有效數(shù)據(jù)、實體抹除單元1010(1)的全部有效數(shù)據(jù)與實體抹除單元1010(5)的全部有效數(shù)據(jù)標記為無效數(shù)據(jù)。
上述的范例實施例中,當?shù)诙嶓w抹除單元的有效數(shù)據(jù)量小于一個實體抹除單元的容量時,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)還可將第二實體抹除單元的有效數(shù)據(jù)與后續(xù)所選取的實體抹除單元(例如第三實體抹除單元及第四實體抹除單元)的有效數(shù)據(jù)先暫存至一暫存區(qū)(例如,緩沖存儲器508)中。當暫存在暫存區(qū)中的有效數(shù)據(jù)已達到(即等于或大于)一個實體抹除單元的容量時,即已收集到可寫滿一個空的實體抹除單元的有效數(shù)據(jù)時,再將暫存區(qū)中的有效數(shù)據(jù)寫入至第一實體抹除單元中。再者,在選取第三實體抹除單元(或第四實體抹除單元)的過程中所忽略的實體抹除單元仍可在后續(xù)被選取以作為要執(zhí)行平均磨損操作的第二實體抹除單元。
換句話說,在執(zhí)行平均磨損操作時,倘若第二實體抹除單元的有效數(shù)據(jù)量小于一個實體抹除單元的容量,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會持續(xù)從第二群組的實體抹除單元選取適合的實體抹除單元(即有效數(shù)據(jù)量小于一個實體抹除單元的容量的實體抹除單元),直到所選取的多個實體抹除單元的有效數(shù)據(jù)量總和不小于一個實體抹除單元的容量為止。而且在選取適合的實體抹除單元的過程中,有效數(shù)據(jù)量不小于一個實體抹除單元的容量的實體抹除單元會被忽略而不會被選取作為適合的實體抹除單元。當已可從所選取的多個實體抹除單元中收集到可寫滿一個空的實體抹除單元的有效數(shù)據(jù)時,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會從此些所選取的實體抹除單元中決定要寫入至第一實體抹除單元的有效數(shù)據(jù)。
圖11為根據(jù)一范例實施例所顯示的平均磨損方法的流程圖。
請參照圖11,在步驟s1101中,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)將實體抹除單元區(qū)分為第一群組與第二群組,其中第一群組的實體抹除單元無存有有效數(shù)據(jù),第二群組的實體抹除單元存有有效數(shù)據(jù)。
在步驟s1103中,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)為每一個實體抹除單元記錄抹除次數(shù),并根據(jù)所記錄的抹除次數(shù)排列第二群組的實體抹除單元。
在步驟s1105中,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)根據(jù)所記錄的抹除次數(shù)從第一群組中提取一個實體抹除單元作為第一實體抹除單元。
在步驟s1107中,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)根據(jù)第二群組的實體抹除單元的排列順序從第二群組中選取一個實體抹除單元作為第二實體抹除單元。
在步驟s1109中,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)判斷第二實體抹除單元的有效數(shù)據(jù)量是否小于一個實體抹除單元的容量。
倘若第二實體抹除單元的有效數(shù)據(jù)量不小于一個實體抹除單元的容量,在步驟s1111中,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)下達指令序列將第二實體抹除單元的有效數(shù)據(jù)寫入至第一實體抹除單元中。
倘若第二實體抹除單元的有效數(shù)據(jù)量小于一個實體抹除單元的容量,在步驟s1113中,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)根據(jù)第二群組的實體抹除單元的排列順序從第二群組中選取一個實體抹除單元作為第三實體抹除單元,其中第二群組的實體抹除單元中有 效數(shù)據(jù)量不小于一個實體抹除單元的容量的實體抹除單元不會被選取作為第三實體抹除單元。換句話說,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會從第二群組的實體抹除單元中選取有效數(shù)據(jù)量小于一個實體抹除單元的容量的實體抹除單元作為第三實體抹除單元。
在步驟s1115中,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)下達指令序列將第二實體抹除單元的有效數(shù)據(jù)及第三實體抹除單元的至少部分有效數(shù)據(jù)程序化至第一實體抹除單元。
圖12是根據(jù)一范例實施例所顯示的平均磨損方法中選取第三實體抹除單元的詳細步驟的流程圖。
在步驟s1201中,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)根據(jù)第二群組的實體抹除單元的排列順序從第二群組中選取一個實體抹除單元作為候選實體抹除單元。
在步驟s1203中,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)判斷候選實體抹除單元的有效數(shù)據(jù)量是否小于一個實體抹除單元的容量。
倘若候選實體抹除單元的有效數(shù)據(jù)量不小于一個實體抹除單元的容量,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)會再次執(zhí)行步驟s1201。
倘若候選實體抹除單元的有效數(shù)據(jù)量小于一個實體抹除單元的容量,在步驟s1205中,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)決定候選實體抹除單元為第三實體抹除單元。
在上述的步驟s1205之后,內(nèi)存控制電路單元404(或內(nèi)存管理電路502)還可計算有效數(shù)據(jù)量總和,并且根據(jù)有效數(shù)據(jù)量總和決定是否要再繼續(xù)選取適合的實體抹除單元。此部分已于前述的范例實施例中詳細說明,在此不再贅述。
綜上所述,本發(fā)明會根據(jù)抹除次數(shù)的大小從存有有效數(shù)據(jù)的實體抹除單元中先選取一個實體抹除單元來執(zhí)行平均磨損操作。若所選取的實體抹除單元的有效數(shù)據(jù)量小于一個實體抹除單元的容量時,本發(fā)明會從存有有效數(shù)據(jù)的實體抹除單元中選取另外的實體抹除單元以一并執(zhí)行平均磨損操作。而在選取另外的實體抹除單元的過程中,存有有效數(shù)據(jù)的實體抹除單元中有效數(shù)據(jù)量不小于一個實體抹除單元的容量的實體抹除單元不會被選取。藉此可從儲存空間皆未存滿有效數(shù)據(jù)的實體抹除單元中收集可寫滿一個實體抹除單元的有效數(shù)據(jù)。如此一來,可避免在執(zhí)行平均磨損操作時將實體抹除單元中使用連續(xù)寫入操作所寫入的有效數(shù)據(jù)與使用非連續(xù)寫入操作所寫入的有效數(shù)據(jù)存入同一個實體抹除單元中,因而可提升垃圾收集的效率,并確保連續(xù)寫入的速度可維持在目標值以上。
雖然本發(fā)明已以實施例揭示如上,然其并非用以限定本發(fā)明,任何所屬技術領域中普通技術人員,在不脫離本發(fā)明的精神和范圍內(nèi),當可作些許的改動與潤飾,故本發(fā)明的保護范圍當視所附權利要求界定范圍為準。