本發明涉及一種存儲器管理技術,尤其涉及一種存儲器管理方法、存儲器儲存裝置及存儲器控制電路單元。
背景技術:
::數碼相機、移動電話與mp3播放器在這幾年來的成長十分迅速,使得消費者對儲存媒體的需求也急速增加。由于可復寫式非易失性存儲器模塊(例如,閃存)具有數據非易失性、省電、體積小,以及無機械結構等特性,所以非常適合內建于上述所舉例的各種可攜式多媒體裝置中。一般來說,為了評估存儲器裝置的效能,測試者可能會在存儲器裝置上執行效能測試程序。在某些效能測試程序中,循序(sequential)數據與非循序(non-sequential)數據會被輪流地寫入至存儲器裝置中,從而測試存儲器裝置對于循序寫入(sequentialwrite)與隨機寫入(randomwrite)的執行效率。然而,在某些情況下,若隨機寫入使用了太多的閑置實體區塊,則當后續測試循序寫入時,一個數據整并程序(例如,垃圾回收程序)可能會被觸發,從而降低循序寫入的寫入速度。技術實現要素:本發明提供一種存儲器管理方法、存儲器儲存裝置及存儲器控制電路單元,可減少數據整并程序對于特定類型的數據的寫入速度造成的影響。本發明的一范例實施例提供一種存儲器管理方法,其用于包括多個實體單元的可復寫式非易失性存儲器模塊,所述存儲器管理方法包括:接收第一數據并執行第一程序化程序;在所述第一程序化程序中,將所述第一數據的至少一部分數據程序化至所述實體單元中的第一實體單元;判斷所述實體單元中的第一類實體單元的總數是否小于或等于第一門檻值,其中屬于所述第一類實體單元的每一個實體單元皆未儲存有效數據;若所述第一類實體單元 的所述總數小于或等于所述第一門檻值,執行數據整并程序,使得所述第一類實體單元的所述總數從第一數目變更為第二數目,其中所述第二數目大于所述第一數目;判斷所述第一數據是第一類數據或第二類數據,其中所述第一類數據屬于多個連續編號的邏輯單元,而所述第二類數據不屬于所述連續編號的邏輯單元;若所述第一數據是所述第一類數據,在所述第二數目達到第二門檻值之前,停止所述數據整并程序,其中所述第二門檻值大于所述第一門檻值;以及若所述第一數據是所述第二類數據,在所述第二數目達到所述第二門檻值之后,停止所述數據整并程序。在本發明的一范例實施例中,判斷所述第一數據是所述第一類數據或所述第二類數據的步驟包括:根據被程序化至所述第一實體單元的所述第一數據的所述部分數據判斷所述第一數據是所述第一類數據或所述第二類數據。在本發明的一范例實施例中,所述存儲器管理方法還包括:若所述第一數據是所述第一類數據,在所述數據整并程序中判斷所述實體單元中屬于第二類實體單元的第二實體單元所儲存的有效數據的數據量是否大于預置值;若所述第二實體單元所儲存的所述有效數據的數據量大于所述預置值,將儲存于所述第二實體單元中的所述有效數據復制到所述實體單元中的第三實體單元;以及若所述第二實體單元所儲存的所述有效數據的數據量不大于所述預置值,抹除所述第二實體單元并停止所述數據整并程序。在本發明的一范例實施例中,所述存儲器管理方法還包括:在判斷所述第二實體單元所儲存的有效數據的數據量是否大于所述預置值之前,執行選擇程序;以及在所述選擇程序中,選擇所儲存的有效數據的數據量小于平均值的所述第二實體單元。在本發明的一范例實施例中,所述存儲器管理方法還包括:若所述第一數據是所述第一類數據,在開始所述數據整并程序之后,暫停所述第一程序化程序,并且在停止所述數據整并程序之后,恢復執行所述第一程序化程序;以及若所述第一數據是所述第二類數據,允許所述數據整并程序與所述第一程序化程序共享傳輸帶寬。在本發明的一范例實施例中,所述存儲器管理方法還包括:配置指令隊列,其用以暫存指示儲存數據的至少一指令;若所述第一數據是所述第一類數據,暫停將指示儲存所述第一數據的指令加入至所述指令隊列中,以暫停 所述第一程序化程序;以及若所述第一數據是所述第二類數據,將指示儲存所述數據整并程序所收集的數據的指令與指示儲存所述第一數據的所述指令加入至所述指令隊列中。在本發明的一范例實施例中,所述存儲器管理方法還包括:判斷所述第一程序化程序是否接續于第二程序化程序,其中所述第二程序化程序用以程序化第二數據至所述實體單元中,其中所述第二數據為所述第二類數據。而在所述第二數目達到所述第二門檻值之前停止所述數據整并程序的步驟,是在判定所述第一數據是所述第一類數據且所述第一程序化程序是接續于所述第二程序化程序之后執行。本發明的另一范例實施例提供一種存儲器儲存裝置,其包括連接接口單元、可復寫式非易失性存儲器模塊及存儲器控制電路單元。所述連接接口單元用以連接至主機系統。所述可復寫式非易失性存儲器模塊包括多個實體單元。所述存儲器控制電路單元連接至所述連接接口單元與所述可復寫式非易失性存儲器模塊,所述存儲器控制電路單元用以接收第一數據并執行第一程序化程序,在所述第一程序化程序中,所述存儲器控制電路單元發送程序化指令序列,以指示將所述第一數據的至少一部分數據程序化至所述實體單元中的第一實體單元,所述存儲器控制電路單元更用以判斷所述實體單元中的第一類實體單元的總數是否小于或等于第一門檻值,其中屬于所述第一類實體單元的每一個實體單元皆未儲存有效數據,若所述第一類實體單元的所述總數小于或等于所述第一門檻值,所述存儲器控制電路單元更用以執行數據整并程序,使得所述第一類實體單元的所述總數從第一數目變更為第二數目,其中所述第二數目大于所述第一數目,其中所述存儲器控制電路單元更用以判斷所述第一數據是一第一類數據或一第二類數據,其中所述第一類數據屬于多個連續編號的邏輯單元,而所述第二類數據不屬于所述連續編號的邏輯單元,若所述第一數據是所述第一類數據,所述存儲器控制電路單元更用以在所述第二數目達到一第二門檻值之前,停止所述數據整并程序,其中所述第二門檻值大于所述第一門檻值,若所述第一數據是所述第二類數據,所述存儲器控制電路單元更用以在所述第二數目達到所述第二門檻值之后,停止所述數據整并程序。在本發明的一范例實施例中,所述存儲器控制電路單元判斷所述第一數 據是所述第一類數據或所述第二類數據的操作包括:根據被程序化至所述第一實體單元的所述第一數據的所述部分數據判斷所述第一數據是所述第一類數據或所述第二類數據。在本發明的一范例實施例中,若所述第一數據是所述第一類數據,所述存儲器控制電路單元更用以在所述數據整并程序中判斷所述實體單元中屬于第二類實體單元的第二實體單元所儲存的有效數據的數據量是否大于預置值,若所述第二實體單元所儲存的所述有效數據的數據量大于所述預置值,所述存儲器控制電路單元更用以指示將儲存于所述第二實體單元中的所述有效數據復制到所述實體單元中的第三實體單元,若所述第二實體單元所儲存的所述有效數據的數據量不大于所述預置值,所述存儲器控制電路單元抹除所述第二實體單元并停止所述數據整并程序。在本發明的一范例實施例中,在判斷所述第二實體單元所儲存的有效數據的數據量是否大于所述預置值之前,所述存儲器控制電路單元更用以執行選擇程序,在所述選擇程序中,所述存儲器控制電路單元選擇所儲存的有效數據的數據量小于平均值的所述第二實體單元。在本發明的一范例實施例中,若所述第一數據是所述第一類數據,在開始所述數據整并程序之后,所述存儲器控制電路單元更用以暫停所述第一程序化程序,并且在停止所述數據整并程序之后,所述存儲器控制電路單元恢復執行所述第一程序化程序,若所述第一數據是所述第二類數據,所述存儲器控制電路單元允許所述數據整并程序與所述第一程序化程序共享傳輸帶寬。在本發明的一范例實施例中,所述存儲器控制電路單元更用以配置指令隊列,其用以暫存指示儲存數據的至少一指令,若所述第一數據是所述第一類數據,所述存儲器控制電路單元更用以暫停將指示儲存所述第一數據的指令加入至所述指令隊列中,以暫停所述第一程序化程序,若所述第一數據是所述第二類數據,所述存儲器控制電路單元將指示儲存所述數據整并程序所收集的數據的指令與指示儲存所述第一數據的所述指令加入至所述指令隊列中。在本發明的一范例實施例中,所述存儲器控制電路單元更用以判斷所述第一程序化程序是否接續于第二程序化程序,其中所述第二程序化程序用以 程序化第二數據至所述實體單元中,其中所述第二數據為所述第二類數據。所述存儲器控制電路單元是在判定所述第一數據是所述第一類數據且所述第一程序化程序是接續于所述第二程序化程序之后,執行在所述第二數目達到所述第二門檻值之前停止所述數據整并程序的操作。本發明的另一范例實施例提供一種存儲器控制電路單元,其用于控制包括多個實體單元的可復寫式非易失性存儲器模塊,所述存儲器控制電路單元包括主機接口、存儲器接口及存儲器管理電路。所述主機接口用以連接至主機系統。所述存儲器接口用以連接至所述可復寫式非易失性存儲器模塊。所述存儲器管理電路連接至所述主機接口與所述存儲器接口,所述存儲器管理電路用以接收第一數據并執行第一程序化程序,在所述第一程序化程序中,所述存儲器管理電路發送程序化指令序列以指示將所述第一數據的至少一部分數據程序化至所述實體單元中的第一實體單元,所述存儲器管理電路更用以判斷所述實體單元中的第一類實體單元的總數是否小于或等于第一門檻值,其中屬于所述第一類實體單元的每一個實體單元皆未儲存有效數據,若所述第一類實體單元的所述總數小于或等于所述第一門檻值,所述存儲器管理電路更用以執行數據整并程序,使得所述第一類實體單元的所述總數從第一數目變更為第二數目,其中所述第二數目大于所述第一數目,所述存儲器管理電路更用以判斷所述第一數據是第一類數據或第二類數據,其中所述第一類數據屬于多個連續編號的邏輯單元,而所述第二類數據不屬于所述連續編號的邏輯單元,若所述第一數據是所述第一類數據,所述存儲器管理電路更用以在所述第二數目達到一第二門檻值之前,停止所述數據整并程序,其中所述第二門檻值大于所述第一門檻值,若所述第一數據是所述第二類數據,所述存儲器管理電路更用以在所述第二數目達到所述第二門檻值之后,停止所述數據整并程序。在本發明的一范例實施例中,所述存儲器管理電路判斷所述第一數據是所述第一類數據或所述第二類數據的操作包括:根據被程序化至所述第一實體單元的所述第一數據的所述部分數據判斷所述第一數據是所述第一類數據或所述第二類數據。在本發明的一范例實施例中,若所述第一數據是所述第一類數據,所述存儲器管理電路更用以在所述數據整并程序中判斷所述實體單元中屬于第二 類實體單元的第二實體單元所儲存的有效數據的數據量是否大于預置值,若所述第二實體單元所儲存的所述有效數據的數據量大于所述預置值,所述存儲器管理電路更用以將儲存于所述第二實體單元中的所述有效數據復制到所述實體單元中的第三實體單元,若所述第二實體單元所儲存的所述有效數據的數據量不大于所述預置值,所述存儲器管理電路抹除所述第二實體單元并停止所述數據整并程序。在本發明的一范例實施例中,所述預置值為零。在本發明的一范例實施例中,在判斷所述第二實體單元所儲存的有效數據的數據量是否大于所述預置值之前,所述存儲器管理電路更用以執行選擇程序,在所述選擇程序中,所述存儲器管理電路選擇所儲存的有效數據的數據量小于平均值的所述第二實體單元。在本發明的一范例實施例中,若所述第一數據是所述第一類數據,在開始所述數據整并程序之后,所述存儲器控制電路單元更用以暫停所述第一程序化程序,并且在停止所述數據整并程序之后,所述存儲器控制電路單元恢復執行所述第一程序化程序,若所述第一數據是所述第二類數據,所述存儲器控制電路單元允許所述數據整并程序與所述第一程序化程序共享傳輸帶寬。在本發明的一范例實施例中,所述存儲器管理電路更用以配置指令隊列,其用以暫存指示儲存數據的至少一指令,若所述第一數據是所述第一類數據,所述存儲器管理電路更用以暫停將指示儲存所述第一數據的指令加入至所述指令隊列中,以暫停所述第一程序化程序,若所述第一數據是所述第二類數據,所述存儲器管理電路將指示儲存所述數據整并程序所收集的數據的指令與指示儲存所述第一數據的所述指令加入至所述指令隊列中。在本發明的一范例實施例中,所述存儲器管理電路更用以判斷所述第一程序化程序是否接續于第二程序化程序,其中所述第二程序化程序用以程序化第二數據至所述實體單元中,其中所述第二數據為所述第二類數據。所述存儲器管理電路是在判定所述第一數據是所述第一類數據且所述第一程序化程序是接續于所述第二程序化程序之后,執行在所述第二數目達到所述第二門檻值之前停止所述數據整并程序的操作。基于上述,在存儲器儲存裝置的運作中,一個數據整并程序可能會隨著 第一類實體單元的減少而被觸發。在開始執行此數據整并程序之后,若判定所需程序化的數據是屬于多個連續編號的邏輯單元的第一類數據,則此數據整并程序可能會在第一類實體單元的總數達到一預置數目之前就停止,從而減少數據整并程序對第一類數據的寫入速度造成的影響。為讓本發明的上述特征和優點能更明顯易懂,下文特舉實施例,并配合附圖作詳細說明如下。附圖說明圖1是根據本發明的一范例實施例所顯示的主機系統、存儲器儲存裝置及輸入/輸出(i/o)裝置的示意圖;圖2是根據本發明的另一范例實施例所顯示的主機系統、存儲器儲存裝置及i/o裝置的示意圖;圖3是根據本發明的另一范例實施例所顯示的主機系統與存儲器儲存裝置的示意圖;圖4是根據本發明的一范例實施例所顯示的存儲器儲存裝置的概要方框圖;圖5是根據本發明的一范例實施例所顯示的存儲器控制電路單元的概要方框圖;圖6是根據本發明的一范例實施例所顯示的管理可復寫式非易失性存儲器模塊的示意圖;圖7是根據本發明的一范例實施例所顯示的程序化程序的示意圖;圖8是根據本發明的另一范例實施例所顯示的程序化程序的示意圖;圖9是根據本發明的一范例實施例所顯示的存儲器管理方法的流程圖;圖10是根據本發明的另一范例實施例所顯示的存儲器管理方法的流程圖。附圖標記: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(d):邏輯單元s901~s907、s1001~s1010:步驟具體實施方式一般而言,存儲器儲存裝置(亦稱,存儲器儲存系統)包括可復寫式非易失性存儲器模塊(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可為其所使用的安全數字(securedigital,sd)卡32、小型快閃(compactflash,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)標準、sd接口標準、超高速一代(ultrahighspeed-i,uhs-i)接口標準、超高速二代(ultrahighspeed-ii,uhs-ii)接口標準、記憶棒(memorystick,ms)接口標準、多芯片封裝(multi-chippackage)接口標準、多媒體儲存卡(multimediacard,mmc)接口標準、emmc接口標準、通用閃存 (universalflashstorage,ufs)接口標準、emcp接口標準、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的電源。在本范例實施例中,可復寫式非易失性存儲器模塊406的記憶胞會構成多個實體程序化單元,并且此些實體程序化單元會構成多個實體抹除單元。例如,同一條字符在線的記憶胞會組成一或多個實體程序化單元。若每一個記憶胞可儲存2個以上的位,則同一條字符在線的實體程序化單元至少可被分類為下實體程序化單元與上實體程序化單元。例如,一記憶胞的最低有效位(leastsignificantbit,lsb)是屬于下實體程序化單元,并且一記憶胞的最高有效位(mostsignificantbit,msb)是屬于上實體程序化單元。一般來說,在mlcnand型閃存中,下實體程序化單元的寫入速度會大于上實體程序化單元的寫入速度,和/或下實體程序化單元的可靠度是高于上實體程序化單元的可靠度。在本范例實施例中,實體程序化單元為程序化的最小單元。即,實體程序化單元為寫入數據的最小單元。例如,實體程序化單元為實體頁面(page)或是實體扇(sector)。若實體程序化單元為實體頁面,則此些實體程序化單元通常包括數據位區與冗余(redundancy)位區。數據位區包含多個實體扇,用以儲存用戶數據,而冗余位區用以儲存系統數據(例如,錯誤更正碼)。在本范例實施例中,數據位區包含32個實體扇,且一個實體扇的大小為512字節(byte,b)。然而,在其他范例實施例中,數據位區中也可包含8個、16個或數目更多或更少的實體扇,并且每一個實體扇的大小也可以是更大或更小。另一方面,實體抹除單元為抹除的最小單位。亦即,每一實體抹除單元含有最小數目之一并被抹除的記憶胞。例如,實體抹除單元為實體區塊(block)。圖6是根據本發明的一范例實施例所顯示的管理可復寫式非易失性存儲器模塊的示意圖。請參照圖6,存儲器管理電路502會將可復寫式非易失性存儲器模塊406 的記憶胞邏輯地分組為實體單元610(0)~610(b)。在本范例實施例中,實體單元610(0)~610(b)中的每一個是指一個實體抹除單元。然而,在另一范例實施例中,實體單元610(0)~610(b)中的每一個也可以包含多個實體抹除單元。在本范例實施例中,存儲器管理電路502會將實體單元610(0)~610(b)邏輯地分組為儲存區601與閑置(spare)區602。儲存區601中的實體單元610(0)~610(a)儲存有數據,而閑置區602中的實體單元610(a+1)~610(b)尚未被用來儲存數據。例如,屬于儲存區601的每一個實體單元可能儲存有有效數據和/或無效數據,而屬于儲存區601的某一個實體單元被抹除之后就會被關聯至閑置區602。當屬于儲存區601的某一個實體單元被寫滿之后,某一個實體單元會被從閑置區602選擇并且被關聯至儲存區601,以儲存其他數據。在一范例實施例中,屬于閑置區602的每一個實體單元亦稱為閑置實體單元,而屬于儲存區601的每一個實體單元亦稱為非閑置(non-spare)實體單元。在一范例實施例中,閑置實體單元亦稱為第一類實體單元,而非閑置實體單元亦稱為第二類實體單元。在本范例實施例中,存儲器管理電路502會配置邏輯單元612(0)~612(c)以映象儲存區601中的實體單元610(0)~610(a)的至少一部分。在本范例實施例中,主機系統11是通過邏輯地址(logicaladdress,la)來存取儲存于儲存區601中的數據,因此,邏輯單元612(0)~612(c)中的每一個是指一個邏輯地址。然而,在另一范例實施例中,邏輯單元612(0)~612(c)中的每一者也可以是由多個連續(例如,連續編號)的邏輯地址組成。在本范例實施例中,存儲器管理電路502會將邏輯單元與實體單元之間的映象關系(亦稱為邏輯-實體映象關系)記錄于至少一邏輯-實體映象表。當主機系統11欲從存儲器儲存裝置10讀取數據或寫入數據至存儲器儲存裝置10時,存儲器管理電路502可根據此邏輯-實體映象表來執行對于存儲器儲存裝置10的數據存取。在一范例實施例中,邏輯-實體映象表以及特定的管理數據(例如,紀錄有存儲器儲存裝置10的管理信息的管理表格)會被儲存在不屬于儲存區601與閑置區602的其他實體單元中,以避免被使用者修改。在本范例實施例中,有效數據是屬于某一個邏輯單元的當前數據(或最新數據),而無效數據則不是屬于任一個邏輯單元的當前數據。例如,若主機系 統11將一筆新數據儲存至某一邏輯單元而覆蓋掉此邏輯單元原先儲存的舊數據(即,更新屬于此邏輯單元的數據),則儲存區601中的此筆新數據即為屬于此邏輯單元的當前數據并且會被標記為有效,而被覆蓋掉的舊數據可能仍然儲存在儲存區601中但被標記為無效。在本范例實施例中,若屬于某一邏輯單元的數據被更新,則此邏輯單元與儲存有屬于此邏輯單元的舊數據的實體單元之間的映象關系會被移除,并且此邏輯單元與儲存有屬于此邏輯單元的當前數據(或最新數據)的實體單元之間的映象關系會被建立。然而,在另一范例實施例中,若屬于某一邏輯單元的數據被更新,則此邏輯單元與儲存有屬于此邏輯單元的舊數據的實體單元之間的映象關系仍可被維持。當存儲器儲存裝置10出廠時,屬于閑置區602的實體單元(即,第一類實體單元)的總數會是一個預置數目(例如,30)。隨著存儲器儲存裝置10的使用,越來越多的實體單元會被從閑置區602選擇并且被關聯至儲存區601以儲存數據(例如,來自主機系統11的用戶數據)。因此,屬于閑置區602的實體單元(即,第一類實體單元)的總數會隨著存儲器儲存裝置10的使用而逐漸減少。在存儲器儲存裝置10的運作中,存儲器管理電路502會持續更新屬于閑置區602的實體單元(即,第一類實體單元)的總數。存儲器管理電路502會判斷第一類實體單元的總數是否小于或等于一個門檻值(以下亦稱為第一門檻值)。此第一門檻值例如是2或者更大的值(例如,10),本發明不加以限制。若第一類實體單元的總數小于或等于第一門檻值,存儲器管理電路502會執行一個數據整并程序。在一范例實施例中,此數據整并程序亦稱為垃圾回收程序(garbagecollectionprocess)。在數據整并程序中,存儲器管理電路502會從儲存區601中選擇至少一個實體單元并且嘗試將有效數據從所選擇的實體單元集中復制(或搬移)到另一實體單元。用來儲存所復制(或搬移)的有效數據的實體單元則是從閑置區602中選擇并且會被關聯至儲存區601。若某一個實體單元所儲存的有效數據皆已被復制(或搬移),則此實體單元會被抹除并且被關聯至閑置區602。在一范例實施例中,將某一個實體單元從儲存區601重新關聯回閑置區602的操作亦稱為釋放一個閑置實體單元。隨著數據整并程序的運行時間增 加,越來越多的閑置實體單元會被釋放。藉此,在開始執行數據整并程序之后,屬于閑置區602的實體單元(即,第一類實體單元)的總數會逐漸增加,例如,從第一數目變更至第二數目。其中,第二數目大于第一數目。在本范例實施例中,存儲器管理電路502會判斷第一類實體單元的總數是否大于或等于另一個門檻值(以下亦稱為第二門檻值)。在本范例實施例中,第二門檻值會大于第一門檻值。例如,若第一門檻值是“2”,則第二門檻值可能是“15”或任何大于“2”的數值。若第一類實體單元的總數大于或等于第二門檻值,存儲器管理電路502會停止數據整并程序。在本范例實施例中,停止數據整并程序是指結束當前執行中的數據整并程序。在停止一個數據整并程序之后,若第一類實體單元的總數再次小于或等于第一門檻值,則下一個數據整并程序會再次被執行。然而,在另一范例實施例中,第二門檻值也可能會等于第一門檻值。在本范例實施例中,屬于閑置區602的實體單元(即,第一類實體單元)的總數會被記載在一個管理表格中。當某一個閑置實體單元被釋放時,存儲器管理電路502會將此管理表格所記載的第一類實體單元的總數加“1”;當某一個實體單元被從閑置區602關聯至儲存區601以儲存數據時,存儲器管理電路502會將此管理表格所記載的第一類實體單元的總數減“1”。在存儲器儲存裝置10的運作中,存儲器管理電路502會根據此管理表格所記載的第一類實體單元的總數來判斷是否需要執行下一個數據整并程序和/或是否要停止執行中的數據整并程序。在一范例實施例中,當欲儲存特定類型的數據時,存儲器管理電路502也可能直接停止執行中的數據整并程序,即便當前記錄于上述管理表格中的第一類實體單元的總數尚未達到第二門檻值。例如,在一范例實施例中,此特定類型的數據是指循序(sequential)數據。在一范例實施例中,存儲器管理電路502會從主機系統11接收數據(以下亦稱為第一數據)并且據以執行一程序化程序(以下亦稱為第一程序化程序)。在第一程序化程序中,存儲器管理電路502會發送至少一程序化指令序列至可復寫式非易失性存儲器模塊406,以指示將第一數據的至少一部分程序化至可復寫式非易失性存儲器模塊406中。在一范例實施例中,存儲器管理電路502會判斷第一數據是第一類數據 或第二類數據。其中,第一類數據是指循序數據,而第二類數據是指非循序數據。例如,第一類數據屬于多個連續(或連續編號)的邏輯單元,而第二類數據則不屬于多個連續的邏輯單元。例如,若第一數據被儲存至連續編號的多個邏輯單元或某一個邏輯地址范圍內,則第一數據為第一類數據;然而,若第一數據被儲存至非連續編號的(即,離散的)多個邏輯單元,則第一數據為第二類數據。在一范例實施例中,若第一數據是第一類數據,則第一程序化程序可視為循序寫入(sequentialwrite)程序;然而,若第一數據是第二類數據,則第一程序化程序可視為隨機寫入(randomwrite)程序。在一范例實施例中,若第一數據是第一類數據(或第一程序化程序是循序寫入程序)且當前有一個數據整并程序被執行,則在此數據整并程序中,即便記錄于上述管理表格中的第一類實體單元的總數(即,上述第二數目)尚未達到第二門檻值,存儲器管理電路502也可能直接停止執行中的數據整并程序。藉此,可減少數據整并程序對于循序寫入程序的寫入速度(或寫入帶寬)的影響;然而,若第一數據是第二類數據(或第一程序化程序是隨機寫入程序),則(只有)當記錄于上述管理表格中的第一類實體單元的總數(即,上述第二數目)達到第二門檻值時,存儲器管理電路502才會停止執行中的數據整并程序。圖7是根據本發明的一范例實施例所顯示的程序化程序的示意圖。請參照圖7,存儲器管理電路502從主機系統11接收屬于邏輯單元612(0)~612(d)的數據(即第一數據)。其中,邏輯單元612(0)~612(d)是連續編號的(或屬于同一個邏輯地址范圍),故屬于邏輯單元612(0)~612(d)的數據為第一類數據(即循序數據)。在一范例實施例中,若一個邏輯單元是指一個邏輯地址,則邏輯單元612(0)~612(d)是由多個連續的邏輯地址組成。其中,任兩個連續編號的邏輯單元具有連續的邏輯地址。在另一范例實施例中,若一個邏輯單元包含多個連續的邏輯地址,則邏輯單元612(0)~612(d)中任兩個連續編號的邏輯單元是指后一個邏輯單元的起始邏輯地址接續于前一個邏輯單元的結束邏輯地址。例如,邏輯單元612(1)的起始邏輯地址接續于邏輯單元612(0)的結束邏輯地址,邏輯單元612(2)的起始邏輯地址接續于邏輯單元612(1)的結束邏輯地址等,以此類推。在接收到第一數據之后,存儲器管理電路502會執行第一程序化程序。在第一程序化程序中,存儲器管理電路502會指示將第一數據程序化至儲存區601中的至少一實體單元。在本范例實施例中,一個實體單元可用于儲存屬于32個邏輯單元的數據,故屬于邏輯單元612(0)~612(31)的數據(即第一數據中的至少一部分數據)會先被程序化至實體單元601(e)(以下亦稱為第一實體單元)。同時,邏輯單元612(0)~612(31)會被映象至實體單元601(e)。由于邏輯單元612(0)~612(31)也是連續(或連續編號)的,故實體單元601(e)所儲存的數據也為第一類數據。在一范例實施例中,存儲器管理電路502會根據實體單元601(e)所儲存的數據是否為第一類數據和/或儲存于實體單元601(e)的數據是否占用連續(或連續編號)的多個邏輯單元來判定整個第一數據是否為第一類數據。例如,實體單元601(e)所儲存的數據為第一類數據,故存儲器管理電路502會據以判定整個第一數據為第一類數據。在另一范例實施例中,若實體單元601(e)所儲存的數據為第二類數據,則存儲器管理電路502會據以判定整個第一數據為第二類數據。在一范例實施例中,實體單元601(e)會儲存一個系統數據。此系統信息用以表示實體單元601(e)所儲存的數據是否為第一類數據和/或儲存于實體單元601(e)的數據占用了哪些邏輯單元(或邏輯地址)。存儲器管理電路502可查詢此系統數據以獲得實體單元601(e)所儲存的數據是否為第一類數據。在寫滿實體單元601(e)之后,存儲器管理電路502會從閑置區602中選擇另一個實體單元以儲存第一數據中尚未儲存(或程序化)的數據。例如,存儲器管理電路502會從閑置區602中選擇實體單元610(e+1)并且將實體單元610(e+1)關聯至儲存區601。在選擇實體單元610(e+1)之后,閑置區602中只剩下實體單元610(b),如圖7所示。在選擇實體單元610(e+1)之后,存儲器管理電路502會在上述管理表格中將第一類實體單元的總數從“2”更新為“1”并且判定第一類實體單元的總數(即,“1”)小于第一門檻值(例如,2)。因此,存儲器管理電路502會開始執行一個數據整并程序。然而,在另一范例實施例中,數據整并程序亦可以是在執行第一程序化程序之前即已開始執行,或者在第一程序化程序中的任一時間點被觸發,本發明不加以限制。在數據整并程序中,存儲器管理電路502會執行一個選擇程序。此選擇程序是用以選擇有效數據的來源節點。例如,在選擇程序中,存儲器管理電路502會從儲存區601中選擇作為來源節點的一個實體單元(以下亦稱為第二實體單元)。被選擇作為有效數據的來源節點的第二實體單元會符合選擇程序的一個篩選條件。例如,在一范例實施例中,此篩選條件是儲存區601中儲存最少的有效數據的一個實體單元。或者,在另一范例實施例中,所選擇的第二實體單元所儲存的有效數據的數據量會小于一個平均值。其中,此平均值是指儲存區601中至少部分(或所有)的實體單元所儲存的有效數據的數據量的平均。然而,此篩選條件也可以包含任意有用的條件,本發明不加以限制。在一范例實施例中,在選擇第二實體單元之后,存儲器管理電路502會開始復制(或搬移)儲存于第二實體單元中的有效數據。例如,存儲器管理電路502會將儲存于第二實體單元中的有效數據復制(或搬移)到另一個實體單元(以下亦稱為第三實體單元)。其中,第三實體單元也是從閑置區602中選擇并且用以集中儲存在數據整并程序中收集的有效數據。在將儲存于第二實體單元中所有的有效數據都復制(或搬移)至第三實體單元之后,第二實體單元會被抹除。在一范例實施例中,在選擇第二實體單元之后,存儲器管理電路502還會判斷第二實體單元所儲存的有效數據的數據量是否大于一個預置值。例如,某一個實體單元所儲存的有效數據的數據量是用此實體單元的一個有效計數值來表示。其中,此有效計數值會對應于此實體單元中儲存有有效數據的實體子單元的總數。例如,若第二實體單元的有效計數值是“2”,表示第二實體單元中有2個實體子單元儲存有有效數據。在本范例實施例中,一個實體子單元是指一個實體程序化單元。然而,在另一范例實施例中,一個實體子單元也可以是由一個實體抹除單元中任意數目的記憶胞組成。在一范例實施例中,存儲器管理電路502會判斷第二實體單元的有效計數值是否大于一預置計數值。若第二實體單元的有效計數值大于此預置計數值,存儲器管理電路502會判定第二實體單元所儲存的有效數據的數據量大于上述預置值并且開始復制(或搬移)儲存于第二實體單元中的有效數據;然而,若第二實體單元的有效計數值不大于此預置計數值,則存儲器管理電路 502會判定第二實體單元所儲存的有效數據的數據量不大于上述預置值。若第二實體單元所儲存的有效數據的數據量不大于上述預置值,則存儲器管理電路502會將第二實體單元抹除并且直接停止數據整并程序。具體而言,在將第二實體單元抹除(即,釋放一個閑置實體單元)之后,存儲器管理電路502可能會需要一段處理時間去更新上述管理表格(例如,將第一類實體單元的總數加“1”)。然而,在一范例實施例中,若第二實體單元所儲存的有效數據的數據量不大于上述預置值,則在此處理時間內,即便第一類實體單元的總數尚未被更新,存儲器管理電路502也會直接停止數據整并程序。此外,若數據整并程序是基于第二實體單元所儲存的有效數據的數據量不大于上述預置值而停止,則在經過上述處理時間之后,更新后的第一類實體單元的總數可能會達到或未達到上述第二門檻值,本發明不加以限制。在本范例實施例中,預置計數值與預置值皆是零。也就是說,若所選擇要作為有效數據的來源節點的第二實體單元中沒有需要復制(或搬移)的有效數據,則第二實體單元可以隨即被抹除并且被釋放為一個閑置實體單元。同時,執行中的數據整并程序會立即被停止。藉此,第一數據中尚未儲存(或程序化)的數據(例如,屬于邏輯單元612(32)~612(d)的數據)可隨即被程序化至實體單元610(e+1)或者更多實體單元。值得一提的是,在圖7的范例實施例中,第一程序化程序是用以程序化屬于邏輯單元612(0)~612(d)的循序數據,故每當儲存區601中的一個實體單元被寫滿,相對應地就可以釋放一個閑置實體單元。藉此,即便在執行第一程序化程序的過程中,第一類實體單元的總數始終未達到一個預置數目(例如,上述第二門檻值),仍可確保第一程序化程序順暢地執行。此外,上述快速地啟動并停止數據整并程序的操作亦可以應用在后續儲存屬于邏輯單元612(32)~612(d)的數據的過程中,在此便不贅述。在一范例實施例中,若第一數據為第一類數據,則在開始執行數據整并程序之后,第一程序化程序的寫入帶寬會被限制至小于或等于一預置帶寬。其中,寫入帶寬用以表示每秒將多少數據程序化至可復寫式非易失性存儲器模塊406中。也就是說,藉由將第一程序化程序的寫入帶寬限制至小于或等于預置帶寬,可提供更多的寫入帶寬供數據整并程序使用,從而增加數據整并程序中對于有效數據的收集效率并且可縮短數據整并程序的運行時間。在一范例實施例中,若第一數據為第一類數據,則在開始執行數據整并程序之后,第一程序化程序會被暫停。其中,暫停第一程序化程序也可以視為將第一程序化程序的寫入帶寬限制為零。例如,在一范例實施例中,存儲器管理電路502可配置一指令隊列,其用以暫存指示儲存數據的至少一指令。例如,此指令隊列會基于先入先出(firstinfirstout)規則來將暫存于其中的指令依序輸出。若此指令隊列輸出一個用于指示儲存第一數據的指令,存儲器管理電路502會指示可復寫式非易失性存儲器模塊406儲存第一數據的至少一部分。另外,若此指令隊列輸出一個用于指示儲存數據整并程序所收集的數據的指令,則存儲器管理電路502會指示可復寫式非易失性存儲器模塊406儲存由數據整并程序所收集的數據。在一范例實施例中,若第一數據為第一類數據,存儲器管理電路502會暫停將指示儲存第一數據的指令加入至此指令隊列中,以暫停第一程序化程序。同時,更多用于指示儲存數據整并程序所收集的數據的指令可被加入至此指令隊列中,使得將數據整并程序所收集的數據回存至可復寫式非易失性存儲器模塊406的操作可以被連續地執行。藉此,可以確保在暫停第一程序化程序的期間所有的傳輸帶寬都可以供數據整并程序使用,更進一步縮短數據整并程序的運行時間。在停止數據整并程序之后,第一程序化程序可被恢復執行。例如,在停止數據整并程序之后,存儲器管理電路502會恢復將指示儲存第一數據的指令加入至此指令隊列中。在一范例實施例中,若第一數據為第二類數據,則在開始執行數據整并程序之后,存儲器管理電路502允許數據整并程序與第一程序化程序共享傳輸帶寬。例如,在配置有上述指令隊列的一范例實施例中,若第一數據為第二類數據,則指示儲存第一數據的指令與指示儲存數據整并程序所收集的數據的指令皆可被加入至此指令隊列中。例如,存儲器管理電路502可隨機地或依據一預置比例將指示儲存第一數據的指令與指示儲存數據整并程序所收集的數據的指令加入至此指令隊列。然后,根據此指令隊列的輸出,相應的寫入操作可被可復寫式非易失性存儲器模塊406執行。因此,相對于第一數據為第一類數據的情況,當第一數據為第二類數據時,若數據整并程序被觸發,則第一程序化程序的寫入帶寬會在整個可復寫式非易失性存儲器模塊406的傳輸帶寬中占有較大比例。在一范例實施例中,第一程序化程序是接續于前一個程序化程序(以下亦稱為第二程序化程序)執行的。第二程序化程序是用以儲存來自于主機系統11的另一數據(以下亦稱為第二數據)。其中,第二數據是第二類數據。換言之,第二數據是屬于多個離散的邏輯單元。在一范例實施例中,上述在第一類實體單元的總數達到第二門檻值之前就停止執行中的數據整并程序的操作是(只有)在判定第一數據是第一類數據(或第一程序化程序是循序寫入程序)且第一程序化程序是接續于此第二程序化程序之后才會執行。圖8是根據本發明的另一范例實施例所顯示的程序化程序的示意圖。請參照圖8,主機系統11指示先儲存屬于邏輯單元612(g)、612(g+2)…612(h)的數據(即,第二數據),然后再儲存屬于邏輯單元612(0)~612(d)的數據(即,第一數據)。其中,邏輯單元612(g)、612(g+2)…612(h)是分散的(即未連續編號),而邏輯單元612(0)~612(d)是連續的(即連續編號)。因此,第二數據是第二類數據,而第一數據為第一類數據。在本范例實施例中,存儲器管理電路502會先執行一個程序化程序(即,第二程序化程序)以將第二數據程序化至實體單元610(0)~610(i)。然后,存儲器管理電路502會執行第一程序化程序以將第一數據程序化至包含實體單元610(i+1)在內的其余實體單元。其中,用于程序化第二數據的第二程序化程序亦稱為隨機寫入程序,而用于程序化第一數據的第一程序化程序亦稱為循序寫入程序。在本范例實施例中,在執行第二程序化程序的過程中,若一個數據整并程序被執行,則存儲器管理電路502只會依照預置的規則來停止數據整并程序(例如,當判定第一類實體單元的總數達到上述第二門檻值時,此數據整并程序會被停止),而不會執行上述在第一類實體單元的總數達到第二門檻值之前就停止數據整并程序的操作。然而,在切換至執行第一程序化程序之后,若一個數據整并程序被執行,則在第一類實體單元的總數達到第二門檻值之前,存儲器管理電路502就可能直接停止數據整并程序,從而避免第一程序化程序的執行速度受到數據整并程序的影響。此外,圖8的范例實施例中其余的操作細節皆已詳述于圖7的范例實施例中,故在此便不贅述。值得一提的是,在圖8的另一范例實施例中,在執行第二程序化程序之前,用來程序化第一類數據的另一循序寫入程序(以下亦稱為第三程序化程序) 已先被執行。因此,在接續于第二程序化程序而執行的第一程序化程序中,若有數據整并程序被執行,表示此時屬于儲存區601的實體單元610(0)~610(f)(即,第二類實體單元)實際上是同時儲存有第一類數據(即,循序數據)與第二類數據(非循序數據)。例如,儲存區601是被循序數據與非循序數據寫滿。圖9是根據本發明的一范例實施例所顯示的存儲器管理方法的流程圖。請參照圖9,在步驟s901中,接收第一數據。在步驟s902中,執行第一程序化程序。在步驟s903中,判斷第一類實體單元的總數是否小于或等于第一門檻值。若否,回到步驟s902。若第一類實體單元的總數小于或等于第一門檻值,在步驟s904中,執行數據整并程序。在步驟s905中,判斷第一數據是否是第一類數據。若第一數據是第一類數據,在步驟s906中,在第一類實體單元的總數達到第二門檻值之前,停止數據整并程序。若第一數據不是第一類數據(即,第一數據為第二類數據),在步驟s907中,在第一類實體單元的總數達到第二門檻值之后,停止數據整并程序。圖10是根據本發明的另一范例實施例所顯示的存儲器管理方法的流程圖。請參照圖10,在步驟s1001中,接收第一數據并執行第一程序化程序。在步驟s1002中,將第一數據的至少一部分數據程序化至第一實體單元。在步驟s1003中,判斷第一類實體單元的總數是否小于或等于第一門檻值。若否,再次執行步驟s1002,持續將第一數據程序化至第一實體單元。若第一類實體單元的總數小于或等于第一門檻值,在步驟s1004中,執行數據整并程序。在步驟s1005中,選擇屬于第二類實體單元的一個第二實體單元以作為有效數據的來源節點。在步驟s1006中,判斷第一數據是否為循序數據。若第一數據是循序數據,在步驟s1007中,判斷第二實體單元所儲存的有效數據的數據量是否大于一預置值。若第二實體單元所儲存的有效數據的數據量不大于此預置值,在步驟s1008中,抹除第二實體單元并停止(或結束)數據整并程序。若第二實體單元所儲存的有效數據的數據量大于此預置值,在步驟s1009中,將儲存于第二實體單元中的有效數據復制到第三實體單元,然后抹除第二實體單元。此外,若在步驟s1006中判定第一數據不是循序數據,則步驟1009也會被執行。在步驟s1010中,判斷第一類實體單元的總數 是否大于第二門檻值。若是,則步驟s1008會被執行,以停止(或結束)數據整并程序。若在步驟s1010中判定第一類實體單元的總數仍小于第二門檻值,則步驟s1005會再次被執行,以選擇屬于第二類實體單元的另一個第二實體單元作為有效數據的來源節點。在步驟s1008之后,步驟s1002可被接續執行。然而,圖9與圖10中各步驟已詳細說明如上,在此便不再贅述。值得注意的是,圖9與圖10中各步驟可以作為多個程序代碼或是電路,本發明不加以限制。此外,圖9與圖10的方法可以搭配以上范例實施例使用,也可以單獨使用,本發明不加以限制。綜上所述,在存儲器儲存裝置的運作中,一個數據整并程序可能會隨著第一類實體單元的減少而被觸發。在開始執行此數據整并程序之后,若判定所需程序化的數據是循序數據,則此數據整并程序可能會在第一類實體單元的總數達到一預置數目之前就停止,從而減少數據整并程序對循序數據(或循序寫入程序)的寫入速度造成的影響。雖然本發明已以實施例揭示如上,然其并非用以限定本發明,任何所屬
技術領域:
:中普通技術人員,在不脫離本發明的精神和范圍內,當可作些許的改動與潤飾,故本發明的保護范圍當視所附權利要求界定范圍為準。當前第1頁12當前第1頁12