專利名稱::閃存數(shù)據(jù)寫入方法及使用此方法的控制器的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及一種資料寫入方法,且特別是有關(guān)于一種閃存數(shù)據(jù)寫入方法及使用此方法的閃存控制器。
背景技術(shù):
:數(shù)碼相機(jī)、手機(jī)相機(jī)與MP3在這幾年來的成長十分迅速,使得消費(fèi)者對儲存媒體的需求也急速增加,由于閃存(FlashMemory)具有數(shù)據(jù)非揮發(fā)性、省電、體積小與無機(jī)械結(jié)構(gòu)等的特性,適合可攜式應(yīng)用,最適合使用于這類可攜式由電池供電的產(chǎn)品上。除了可攜式產(chǎn)品內(nèi)建內(nèi)存需要之外,對于小型記憶卡與隨身碟等外接式產(chǎn)品來說,每個人可能同時擁有多個隨身碟與小型記憶卡,所以市場規(guī)模較那些設(shè)備更大。因此,近年閃存產(chǎn)業(yè)成為電子產(chǎn)業(yè)中相當(dāng)熱門的一環(huán)。閃存依其記憶胞可分為單層記憶胞(SingleLevelCell,SLC)與非(NAND)閃存與多層記憶胞(MultiLevelCell,MIX)NAND閃存。閃存通常實質(zhì)上分割為多個實體區(qū)塊(physicalblock),為方便說明以下將實體區(qū)塊簡稱為區(qū)塊。一般而言,在閃存中區(qū)塊為抹除的最小單位。亦即,每一區(qū)塊含有最小數(shù)目之一并被抹除之記憶胞。每一區(qū)塊通常會分割為數(shù)個頁(page)。頁通常為程序(program)的最小單元,換言之,頁為寫入數(shù)據(jù)或讀取數(shù)據(jù)的最小單元。但要特別說明的是于有些不同的閃存設(shè)計,7最小的程序單位也可為一個扇區(qū)(sector)大小,即一頁中有多個扇區(qū)并以一扇區(qū)為程序的最小單元,例如使用程序次數(shù)(numberofprogram,NOP)為4之技術(shù)的SLC與非閃存。圖1A1E是根據(jù)現(xiàn)有技術(shù)繪示閃存100及其運(yùn)作的詳細(xì)方塊圖。圖1A是繪示閃存一般的組成與運(yùn)作。請參照圖1A,為了有效率地程序(即寫入與抹除)閃存IOO,閃存100的區(qū)塊會在邏輯上分組為系統(tǒng)區(qū)塊102、數(shù)據(jù)區(qū)塊104與備用區(qū)塊106。系統(tǒng)區(qū)塊102是用以記錄系統(tǒng)數(shù)據(jù),系統(tǒng)數(shù)據(jù)例如是關(guān)于閃存100的區(qū)域(zone)數(shù)、每一區(qū)域的區(qū)塊數(shù)、每一區(qū)塊的頁數(shù)、邏輯實體對映表(mappingtable)等。一般來說,閃存100中數(shù)據(jù)區(qū)塊104會占90%以上。數(shù)據(jù)區(qū)塊104用以儲存使用者的數(shù)據(jù),一般來說就是主機(jī)(未繪示)所操作之邏輯區(qū)塊地址所對應(yīng)的區(qū)塊。備用區(qū)塊106是用以替換數(shù)據(jù)區(qū)塊104的區(qū)塊,因此備用區(qū)塊106為空的區(qū)塊,即無記錄數(shù)據(jù)或標(biāo)記為已沒用的無效數(shù)據(jù)。具體來說,由于若要對已寫過資料位置再次寫入資料時,必須先執(zhí)行抹除的動作。閃存寫入單位為頁,而抹除單位為區(qū)塊。一個抹除的單位大于寫入的單位,這表示若要執(zhí)行區(qū)塊抹除動作,必須先將欲抹除區(qū)塊中的有效頁復(fù)制至其它區(qū)塊后才可進(jìn)行。因此,當(dāng)欲在數(shù)據(jù)區(qū)塊104之中已寫過資料位置的區(qū)塊M中寫入新數(shù)據(jù)時,一般會從備用區(qū)塊106之中提取一區(qū)塊S,然后將區(qū)塊M中的有效數(shù)據(jù)復(fù)制至區(qū)塊S且將新數(shù)據(jù)寫入?yún)^(qū)塊S后,將區(qū)塊M抹除后關(guān)聯(lián)為備用區(qū)塊106同時將區(qū)塊S關(guān)聯(lián)為數(shù)據(jù)區(qū)塊104(如圖1A所示)。一般來說,為了更有效率地使用閃存100,區(qū)塊在邏輯上會更分為替換區(qū)塊108。圖1B是繪示閃存的另一種運(yùn)作方式,而圖1C是繪示圖1B的詳細(xì)運(yùn)作示意圖。請參照圖IB與1C,替換區(qū)塊108是用以準(zhǔn)備替換資料區(qū)塊104的區(qū)塊。更詳細(xì)而言,當(dāng)從上述備用區(qū)塊106之中提取區(qū)塊C來取代數(shù)據(jù)區(qū)塊104之中的區(qū)塊M時,會將新數(shù)據(jù)入至區(qū)塊C,但不會立刻將區(qū)塊M中的所有有效數(shù)據(jù)搬移至區(qū)塊C而抹除區(qū)塊M。具體來說,會將區(qū)塊M中欲寫入地址之前的有效數(shù)據(jù)(即頁P(yáng)0與P1)復(fù)制至區(qū)塊C(如圖lC的(a)),并且將新數(shù)據(jù)(即區(qū)塊C的頁P(yáng)2與P3)寫入至C區(qū)塊(如圖lC的(b))。此時,將含有部分的有效舊數(shù)據(jù)與所寫入新數(shù)據(jù)的區(qū)塊C暫時地關(guān)聯(lián)為替換區(qū)塊108。此是因為,區(qū)塊M中的有效數(shù)據(jù)有可能在下個操作中變成無效,因此立刻將區(qū)塊M中的所有有效數(shù)據(jù)搬移至實體區(qū)塊C可能會造成無謂的搬移。在此案例中,在邏輯區(qū)塊地址與實體區(qū)塊地址的對映上會記錄多個實體區(qū)塊地址對應(yīng)到一個邏輯區(qū)塊地址的情況,也就是區(qū)塊M與區(qū)塊C的內(nèi)容整合起來才是所對映邏輯區(qū)塊的內(nèi)容。之后,當(dāng)需要將區(qū)塊M與區(qū)塊C的內(nèi)容真正合并時,才將區(qū)塊M與區(qū)塊C整并為一區(qū)塊,由此提升區(qū)塊的使用效率。例如,如圖lC的(c)所示,當(dāng)進(jìn)行整并時,區(qū)塊M中剩余的有效數(shù)據(jù)(即頁P(yáng)4PN)會復(fù)制至區(qū)塊C,然后將區(qū)塊M抹除并關(guān)聯(lián)為備用區(qū)塊106,同時,將區(qū)塊C關(guān)聯(lián)為數(shù)據(jù)區(qū)塊104,由此完成合并。在上述例子中,當(dāng)進(jìn)行合并時更新的數(shù)據(jù)是剛好屬于一整個完整的頁面,因此可直接將區(qū)塊M中剩余的有效數(shù)據(jù)寫入至區(qū)塊C中所更新數(shù)據(jù)的后面頁。然而,更新的數(shù)據(jù)亦可能非整個完整頁面。圖1D是繪示閃存的另一種運(yùn)作方式,而圖1E是繪示圖1D的詳細(xì)運(yùn)作示意圖。在圖1D與1E的例子中,由于區(qū)塊M中剩余有效數(shù)據(jù)是非屬于完整頁面(即部分舊數(shù)據(jù)是與部分新數(shù)據(jù)是屬于同一頁面,如圖1E的頁P(yáng)3所示),因此當(dāng)進(jìn)行整并時會從備用區(qū)塊106之中提取一空白區(qū)塊S,并且將區(qū)塊M與區(qū)塊C的有效數(shù)據(jù)復(fù)制于此區(qū)塊S中,并且將區(qū)塊M與區(qū)塊C抹除后關(guān)聯(lián)為備用區(qū)塊106而將此區(qū)塊S關(guān)聯(lián)為數(shù)據(jù)區(qū)塊104,由此完成合并。需要提取區(qū)塊S來合并區(qū)塊M與區(qū)塊C的原因是因為一頁僅能程序一次(區(qū)塊C的頁P(yáng)3已被程序)的物理限制下,必須提取空的區(qū)塊(如圖1C的區(qū)塊S)來重新完整地寫入數(shù)據(jù)。在使用多層記憶胞(MultiLevelCell,MLC)NAND閃存的案例中,MLCNAND閃存1頁中可包括4個扇區(qū)(sector),即1頁中有4個512bytes的扇區(qū),共2Kbytes,其中扇區(qū)為檔案系統(tǒng)中所使用最小的儲存單位。如上所述,閃存在寫入時是以頁為寫入單位,因此在使用MLCNAND閃存的情況下每次必須程序4個扇區(qū)。換言之,在上述圖1E所示的例子中,雖然新資料未寫滿l整個頁(如區(qū)塊C的頁P(yáng)3),但程序時依然必須程序整個區(qū)塊C的頁P(yáng)3。然而,倘若在進(jìn)行上述的區(qū)塊整并之前接收到下一個寫入指令并且指示欲變更的數(shù)據(jù)是接續(xù)前次變更的數(shù)據(jù)(即接續(xù)在區(qū)塊C的頁P(yáng)3中的更新數(shù)據(jù)之后)時,由于已在圖1E的步驟(c)中已對區(qū)塊C的頁P(yáng)3程序,因此必須再重新提取一個空的區(qū)塊來再次復(fù)制區(qū)塊C之頁P(yáng)0-P2的數(shù)據(jù)然后將區(qū)塊C之頁P(yáng)3的數(shù)據(jù)與更新數(shù)據(jù)一起寫入。由于閃存物理特性的關(guān)系,每次欲在區(qū)塊中寫入數(shù)據(jù)時必須先對此區(qū)塊進(jìn)行抹除的動作。然而,原先區(qū)塊上可能還存有其有效數(shù)據(jù),因此在抹除前必須進(jìn)行有效數(shù)據(jù)的搬移(即復(fù)制)。因此上述寫入小量數(shù)據(jù)的動作(如圖1E所示)會造成之后無謂的抹除與程序的次數(shù),而使得儲存裝置的效率降低,并且對于區(qū)塊來說會增加不必要的抹除而降低閃存的壽命(即閃存的抹除次數(shù)是有限的)。
發(fā)明內(nèi)容本發(fā)明目的是提供一種閃存的數(shù)據(jù)寫入方法,其可將不滿一單位的多個連續(xù)數(shù)據(jù)一起寫入,以提升閃存寫入的效率。10本發(fā)明另一目的是,提供一種閃存控制器,其所執(zhí)行的數(shù)據(jù)寫入方法可將不滿一單位的多個連續(xù)數(shù)據(jù)一起寫入,以提升閃存寫入的效率。本發(fā)明提出一種閃存的數(shù)據(jù)寫入方法。此方法包括a.以一寫入單位的長度將欲寫入的新數(shù)據(jù)分割為至少一個子數(shù)據(jù);b.在閃存中從多個備用區(qū)塊中提取一區(qū)塊作為一替換區(qū)塊,用以替換欲寫入新數(shù)據(jù)的數(shù)據(jù)區(qū)塊-,c.將子數(shù)據(jù)之中.具寫入單位長度的子數(shù)據(jù)以寫入單位為單位來連續(xù)地寫入至替換區(qū)塊中;以及d.將子數(shù)據(jù)之中不具寫入單位長度的子數(shù)據(jù)儲存在暫存區(qū)中。在本發(fā)明之一實施例中,上述的數(shù)據(jù)寫入方法更包括將數(shù)據(jù)區(qū)塊中的有效數(shù)據(jù)以寫入單位為單位來寫入至替換區(qū)塊。在本發(fā)明之一實施例中,上述的數(shù)據(jù)寫入方法更包括判斷欲寫入的后續(xù)新數(shù)據(jù)為接續(xù)此新數(shù)據(jù)時,則以寫入單位的長度將在暫存區(qū)中的子數(shù)據(jù)加上此后續(xù)新數(shù)據(jù)一起分割為至少一個子數(shù)據(jù)并且執(zhí)行步驟c。在本發(fā)明之一實施例中,上述的數(shù)據(jù)寫入方法更包括判斷后續(xù)新數(shù)據(jù)不是接續(xù)該新資料時,則將在暫存區(qū)中的子數(shù)據(jù)與數(shù)據(jù)區(qū)塊中的有效數(shù)據(jù)以寫入單位為單位來一起寫入至替換區(qū)塊。在本發(fā)明之一實施例中,上述的閃存為MLC(MultiLevelCell)與非(NAND)閃存,其中MLCNAND閃存的區(qū)塊分別包括上頁(upperpages)與下頁(lowerpages),其中暫存區(qū)僅使用MLCNAND閃存中區(qū)塊的下頁來儲存數(shù)據(jù),并且下頁的寫入速度快于上頁的寫入速度。在本發(fā)明之一實施例中,上述的數(shù)據(jù)寫入方法還包括建立頁查詢表,其用以記錄下頁的實體地址。在本發(fā)明之一實施例中,上述的寫入單位包括至少一個頁。在本發(fā)明之一實施例中,上述的閃存的數(shù)據(jù)寫入方法更包括在閃存所屬的儲存裝置斷電前將暫存于暫存區(qū)的數(shù)據(jù)寫入至替換區(qū)塊。ii本發(fā)明提出一種閃存控制器,其適用于具有至少一個閃存的一儲存裝置,其中閃存包括多個數(shù)據(jù)區(qū)塊與多個備用區(qū)塊。此閃存控制器包括微處理單元、閃存接口、緩沖存儲器與內(nèi)存管理模塊。微處理單元是用以控制閃存控制器的整體運(yùn)作。閃存接口是電性連接至微處理單元并且用以存取閃存。緩沖存儲器是電性連接至微處理單元并且用以暫時地儲存數(shù)據(jù)。內(nèi)存管理模塊是電性連接至微處理單元并且用以管理閃存,其中內(nèi)存管理模塊會以一寫入單位的長度將欲寫入的新數(shù)據(jù)分割為至少一個子數(shù)據(jù),內(nèi)存管理模塊會在閃存中從多個備用區(qū)塊中提取一區(qū)塊作為一替換區(qū)塊,用以替換欲寫入新數(shù)據(jù)的數(shù)據(jù)區(qū)塊,內(nèi)存管理模塊會將子數(shù)據(jù)之中具寫入單位長度的子數(shù)據(jù)以寫入單位為單位來連續(xù)地寫入至替換區(qū)塊中,以及內(nèi)存管理模塊會將子數(shù)據(jù)之中不具寫入單位長度的子數(shù)據(jù)儲存在暫存區(qū)中。在本發(fā)明之一實施例中,上述的內(nèi)存管理模塊會將欲寫入新數(shù)據(jù)的數(shù)據(jù)區(qū)塊中的有效數(shù)據(jù)以寫入單位為單位來寫入至替換區(qū)塊。在本發(fā)明之一實施例中,上述的內(nèi)存管理模塊在判斷欲寫入的后續(xù)新數(shù)據(jù)為接續(xù)此新數(shù)據(jù)時,會以寫入單位的長度將在暫存區(qū)中的子數(shù)據(jù)加上此后續(xù)新數(shù)據(jù)一起分割為至少一個子數(shù)據(jù)并且將其中具寫入單元長度的子數(shù)據(jù)以寫入單位為單位來連續(xù)地寫入至替換區(qū)塊中。在本發(fā)明之一實施例中,上述的內(nèi)存管理模塊在判斷后續(xù)新數(shù)據(jù)不是接續(xù)該新資料時,會將在暫存區(qū)中的子資料與欲寫入新數(shù)據(jù)的數(shù)據(jù)區(qū)塊中的有效數(shù)據(jù)以寫入單位為單位來一起寫入至替換區(qū)塊。在本發(fā)明之一實施例中,上述的暫存區(qū)為設(shè)置于閃存控制器內(nèi)部或外部的隨機(jī)存取內(nèi)存、磁阻式內(nèi)存或相變化內(nèi)存。在本發(fā)明之一實施例中,上述的閃存為SLC(SingleLevelCell)與非(NAND)閃存。在本發(fā)明之一實施例中,上述的閃存為MLC(MultiLevelCell)與非(NAND)閃存,其中MLCNAND閃存的區(qū)塊分別包括上頁(upperpages)與下頁(lowerpages),其中暫存區(qū)僅使用MIXNAND閃存中區(qū)塊的下頁來儲存數(shù)據(jù),并且下頁的寫入速度快于上頁的寫入速度。在本發(fā)明之一實施例中,上述的數(shù)據(jù)寫入方法更包括建立頁查詢表,其用以記錄下頁的實體地址。在本發(fā)明之一實施例中,上述的寫入單位包括至少一個頁。在本發(fā)明之一實施例中,上述的儲存裝置為USB隨身碟、快閃記憶卡或固態(tài)硬盤。在本發(fā)明之一實施例中,上述的內(nèi)存管理模塊在儲存裝置斷電前會將暫存于暫存區(qū)的數(shù)據(jù)寫入至替換區(qū)塊。本發(fā)明提出一種閃存模塊的數(shù)據(jù)寫入方法,閃存模塊是由多個閃存封裝而成,閃存模塊的數(shù)據(jù)寫入方法包括a.以寫入單位的長度將欲寫入的新數(shù)據(jù)分割為至少一個子數(shù)據(jù);b.在每一閃存中從多個備用區(qū)塊中提取區(qū)塊作為替換區(qū)塊,用以替換欲寫入新數(shù)據(jù)的數(shù)據(jù)區(qū)塊;c.將至少一個子數(shù)據(jù)之中具長度的子數(shù)據(jù)以寫入單位為單位來同時連續(xù)地寫入至每一閃存的替換區(qū)塊中;以及d.將至少一個子數(shù)據(jù)之中不具長度的子數(shù)據(jù)儲存在暫存區(qū)中,其中寫入單位是由內(nèi)存模塊中每一閃存中的一頁所構(gòu)成。在本發(fā)明之一實施例中,上述之閃存為MLC(MultiLevelCell)與非(NAND)閃存,其中MLCNAND閃存的區(qū)塊分別包括上頁(upperpages)與下頁(lowerpages),其中暫存區(qū)僅使用MIXNAND閃存中區(qū)塊的下頁來儲存數(shù)據(jù),并且下頁的寫入速度快于上頁的寫入速度。本發(fā)明提出一種閃存控制器,其適用于具有閃存模塊的儲存裝置,其中閃存模塊具有多個閃存且每一閃存包括多個數(shù)據(jù)區(qū)塊與多個備用區(qū)塊。此閃存控制器包括微處理單元、閃存接口、緩沖存儲器與內(nèi)存管理模塊。微處理單元是用以控制閃存控制器的整體運(yùn)作。閃存接口是電性連接至微處理單元并且用以存取閃存模塊。緩沖存儲器是電性連接至微處理單元并且用以暫時地儲存數(shù)據(jù)。內(nèi)存管理模塊是電性連接至微處理單元并且用以管理閃存模塊,其中內(nèi)存管理模塊會以寫入單位的長度將欲寫入的新數(shù)據(jù)分割為至少一個子數(shù)據(jù),內(nèi)存管理模塊會在每一閃存中從多個備用區(qū)塊中提取區(qū)塊作為替換區(qū)塊,用以替換欲寫入新數(shù)據(jù)的數(shù)據(jù)區(qū)塊,內(nèi)存管理模塊會將至少一個子數(shù)據(jù)之中具長度的子數(shù)據(jù)以寫入單位為單位來同時連續(xù)地寫入至每一閃存的替換區(qū)塊中,以及內(nèi)存管理模塊會將至少一個子數(shù)據(jù)之中不具長度的子數(shù)據(jù)儲存在暫存區(qū)中,其中寫入單位是由內(nèi)存模塊中每一閃存中的一頁所構(gòu)成。在本發(fā)明之一實施例中,上述之暫存區(qū)為設(shè)置于閃存控制器內(nèi)部或外部的隨機(jī)存取內(nèi)存、或磁阻式內(nèi)存或相變化內(nèi)存。在本發(fā)明之一實施例中,上述之閃存為MLC(MultiLevelCell)與非(NAND)閃存,其中MLCNAND閃存的區(qū)塊分別包括上頁(叩perpages)與下頁(lowerpages),其中暫存區(qū)僅使用MLCNAND閃存中區(qū)塊的下頁來儲存數(shù)據(jù),并且下頁的寫入速度快于上頁的寫入速度。本發(fā)明提出一種SIX(SingleLevelCell)與非(NAND)閃存的數(shù)據(jù)寫入方法。此方法包括a.以寫入單位的長度將欲寫入的新數(shù)據(jù)分割為至少一個子數(shù)據(jù);b.在該SLC與非閃存中從多個備用區(qū)塊中提取區(qū)塊作為替換區(qū)塊,用以替換欲寫入該新數(shù)據(jù)的數(shù)據(jù)區(qū)塊;c.將子數(shù)據(jù)之中具上述長度的子數(shù)據(jù)以寫入單位為單位來連續(xù)地寫入至替換區(qū)塊中;以及d.將子數(shù)據(jù)之中不具上述長度的子數(shù)據(jù)儲存在暫存區(qū)中,其中SLC與非的每一頁可程序4次并且每一頁的容量大于2千字節(jié)。本發(fā)明所提出的數(shù)據(jù)寫入方法與執(zhí)行此方法的控制器因采用暫存區(qū)將將少于一個寫入單位的數(shù)據(jù)累積可寫滿一個寫入單位再寫入替換區(qū)塊,由此提升整體的程序效率。為讓本發(fā)明之上述特征和優(yōu)點能更明顯易懂,下文特舉較佳實施例,并配合所附圖式,作詳細(xì)說明如下。圖1A圖1E是根據(jù)現(xiàn)有技術(shù)繪示閃存及其運(yùn)作的詳細(xì)方塊圖2A是根據(jù)本發(fā)明第一實施例繪示使用閃存儲存裝置的主機(jī);圖2B是繪示圖2A所示閃存控制器的詳細(xì)方塊圖2C是根據(jù)本發(fā)明另一實施例繪示控制器的詳細(xì)方塊圖3A與3B是根據(jù)本發(fā)明第一實施例繪示閃存的數(shù)據(jù)寫入方法的流程圖4是根據(jù)本發(fā)明第一實施例繪示資料寫入的示意圖;圖5是根據(jù)本發(fā)明另一實施例繪示資料寫入的示意圖;圖6是根據(jù)本發(fā)明第二實施例繪示閃存模塊的詳細(xì)方塊圖;圖7是根據(jù)本發(fā)明第三實施例繪示閃存模塊的詳細(xì)方塊圖。主要組件符號說明100:閃存102:系統(tǒng)區(qū)塊104:資料區(qū)塊106:備用區(qū)塊M、C、S:區(qū)塊200:主機(jī)202:微處理器204:隨機(jī)存取內(nèi)存206:輸入/輸出裝置208:系統(tǒng)總線15210:數(shù)據(jù)傳輸接口220:內(nèi)存儲存裝置222、222,:控制器222a:內(nèi)存管理模塊222b:閃存界面222c:主機(jī)傳輸接口222d:緩沖存儲器222f:錯誤校正模塊222g:電源管理模塊222e:微處理單元224:閃存模塊S301、S303、S305、S307、S309、S311、S313、S315、S317、S319、S321、S323、S325、S327、S329、S331、S333、S335:數(shù)據(jù)寫入方法的步驟400-1、400-2...400-(N-1)、400-N:子資料401-1、401-2、401-(N-l):寫入動作401-N:暫存動作T:暫存區(qū)224':閃存模塊610:第一閃存620:第二閃存630:數(shù)據(jù)總線224',閃存模塊702、704:緩沖器710:第一儲存單元712:第一閃存714:第二閃存716:第一子總線718:第二子總線720:第二儲存單元722:第三閃存724:第四閃存726:第三子總線728:第四子總線730:數(shù)據(jù)總線具體實施例方式必須了解的是,本發(fā)明實施例在描述閃存的運(yùn)作時使用"提取"、"搬移"、"交換"等詞來操作閃存區(qū)塊是邏輯上的概念。也就是說,閃存區(qū)塊的實際位置并未更動,而是邏輯上對閃存區(qū)塊進(jìn)行操作。閃存儲存系統(tǒng)一般而言包括閃存與控制器(控制芯片)。通常閃存儲存系統(tǒng)會與主機(jī)系統(tǒng)一起使用,以使主機(jī)系統(tǒng)可將數(shù)據(jù)寫入至閃存儲存系統(tǒng)或從閃存儲存系統(tǒng)中讀取數(shù)據(jù)。另外,亦有閃存儲存系統(tǒng)是包括嵌入式閃存與可執(zhí)行于主機(jī)系統(tǒng)上以實質(zhì)地作為此嵌入式閃存之控制器的軟件?!旱谝粚嵤├粓D2A是根據(jù)本發(fā)明第一實施例繪示使用閃存儲存裝置的主機(jī)。請參照圖2A,主機(jī)200—般包括微處理器202、隨機(jī)存取內(nèi)存(randomaccessmemory,RAM)204、輸入/輸出(input/output,I/O)裝置206、系統(tǒng)總線208以及數(shù)據(jù)傳輸總線210。必須了解的是,主機(jī)200可更包括其它組件,例如顯示器裝置或網(wǎng)絡(luò)裝置等。17主機(jī)200可以是計算機(jī)、數(shù)碼相機(jī)、攝影機(jī)、通信裝置、音訊播放器或視訊播放器等系統(tǒng)。一般而言,主機(jī)200可實質(zhì)地為可儲存數(shù)據(jù)的任意系統(tǒng)。在本發(fā)明實施例中閃存儲存裝置220是透過數(shù)據(jù)傳輸接口210與主機(jī)200的其它組件電性連接。通過微處理器202、隨機(jī)存取內(nèi)存204與輸入/輸出裝置206的處理可將數(shù)據(jù)寫入至閃存儲存裝置220或從閃存儲存裝置220中讀取數(shù)據(jù)。閃存儲存裝置220—般包括控制器222與閃存模塊224??刂破?22用以控制閃存儲存裝置220的整體運(yùn)作,例如數(shù)據(jù)的儲存、讀取與抹除等。閃存模塊224是電性連接控制器222并且用以儲存數(shù)據(jù)。在本實施中閃存模塊224為單個MLCNAND閃存。在本發(fā)明實施例中,閃存儲存裝置220為隨身碟。但必須了解的是,本發(fā)明不限于此。在本發(fā)明另一實施例中,閃存儲存裝置220亦可以是記憶卡或固態(tài)硬盤(SolidStateDrive,SSD)。圖2B是繪示圖2A所示閃存控制器的詳細(xì)方塊圖??刂破?22包括內(nèi)存管理模塊222a、閃存接口222b、緩沖存儲器222d與微處理單元222e。內(nèi)存管理模塊222a是電性連接微處理單元222e并且用以管理閃存模塊224,例如執(zhí)行平均磨損(wearleveling)方法、壞塊管理、維護(hù)對映表(mappingtable)等。特別是,內(nèi)存管理模塊222a會執(zhí)行根據(jù)本發(fā)明實施例的資料寫入方法(以下將配合圖3詳細(xì)說明)。閃存接口222b是電性連接微處理單元222e并且用以存取閃存模塊224,也就是主機(jī)200欲寫入至的數(shù)據(jù)會經(jīng)由閃存接口222b轉(zhuǎn)換為閃存模塊224所能接受的格式。緩沖存儲器222d是電性連接微處理單元222e并且用以暫時地儲存系統(tǒng)數(shù)據(jù)(例如對映表)或者主機(jī)所讀取或?qū)懭氲臄?shù)據(jù)。在本實施例中,緩沖存儲器222d為靜態(tài)隨機(jī)存取內(nèi)存(staticrandomaccessmemory,SRAM)。然而,必須了解的是,本發(fā)明不限于此,動態(tài)隨機(jī)存取內(nèi)存(DRAM)、磁阻式內(nèi)存(MRAM)、相變化內(nèi)存(PRAM)或其它適合的內(nèi)存亦可應(yīng)用于本發(fā)明。微處理單元222e用以控制控制器222的整體運(yùn)作。在本發(fā)明另一實施例中,控制器更包括主機(jī)傳輸接口222c、程序內(nèi)存222h、錯誤校正模塊222f與電源管理模塊222g(如圖2C的控制器222')。主機(jī)傳輸接口222c是電性連接微處理單元222e并且用以與主機(jī)200通訊,主機(jī)傳輸接口222c可以是USB接口、IEEE1394接口、SATA接口、PCIExpress接口、MS接口、麗C接口、SD接口、CF接口或IDE接口。程序內(nèi)存222h是電性連接微處理單元222e并且用以儲存控制器所執(zhí)行用以控制閃存儲存裝置220的程序代碼。錯誤校正模塊222f是電性連接微處理單元222e并且用以計算錯誤校正碼(errorcorrectingcode)來檢查與校正主機(jī)所讀取或?qū)懭氲臄?shù)據(jù)。電源管理模塊222g是電性連接微處理單元222e并且用以管理閃存儲存裝置220的電源。圖3A與3B是根據(jù)本發(fā)明第一實施例繪示閃存的數(shù)據(jù)寫入方法的流程圖,并且圖4是根據(jù)本發(fā)明第一實施例繪示資料寫入的示意圖。以下將配合圖3A、3B與圖4詳細(xì)說明根據(jù)本發(fā)明實施例的閃存資料寫入方法。在圖3A的步驟S301中控制器222會從主機(jī)200中接收一主機(jī)寫入命令以及欲寫入的新數(shù)據(jù)。具體來說??刂破?22的微處理單元222e會接收此主機(jī)寫入命令,并且之后控制內(nèi)存管理模塊222a、閃存接口222b與緩沖存儲器222d來依據(jù)此命令的內(nèi)容來執(zhí)行。之后,在步驟S303中會從備用區(qū)塊之中提取一區(qū)塊作為替換區(qū)塊C(如圖4所示)。關(guān)于在閃存中寫入資料時提取一個空區(qū)塊(即替換區(qū)塊C)進(jìn)行寫入動作以取代數(shù)據(jù)區(qū)塊己于配合圖1A1E描述如上,在此不再重復(fù)描述。在步驟S305中,會以寫入單位的長度將欲寫入的新數(shù)據(jù)分割為多個子數(shù)據(jù)(例如圖4所示的子數(shù)據(jù)400-1、400-2...400-(N-l)與400-N)。然而,必須了解的是當(dāng)新數(shù)據(jù)的長度小于寫入單位時,則全部欲寫入的數(shù)據(jù)就是唯一的子數(shù)據(jù)。在本發(fā)明實施例中,控制器222對閃存執(zhí)行寫入指令時每次會程序(program)—個固定寫入單位長度的數(shù)據(jù),而每個寫入指令會執(zhí)行一個固定的寫入單位時間。在本發(fā)明中,寫入單位會依據(jù)不同閃存設(shè)計的架構(gòu)而有所不同。在本發(fā)明實施例中,閃存儲存裝置220的閃存模塊224為單個MLCN認(rèn)D閃存,其寫入單位設(shè)計為一個頁的長度,其包括4個扇區(qū)。值得一提的是,在本實施例中,雖然是以MLCNAND閃存為例來作說明。但必須了解的是,本發(fā)明不限于此,例如閃存模塊224亦可為SLC與非閃存。在步驟S307中會依序地判斷所分割子數(shù)據(jù)的長度是否為寫入單位長度。由于欲寫入的新數(shù)據(jù)是以寫入單位的長度來分割,邏輯上也可僅判斷最后一段數(shù)據(jù)(例如數(shù)據(jù)400-N)的長度是否為寫入單位長度。因此,在本發(fā)明另一實施例中,亦可僅對最后一段數(shù)據(jù)進(jìn)行判斷。倘若在步驟S307中判斷子數(shù)據(jù)的長度為寫入單位長度時,則在步驟S309中會將此子數(shù)據(jù)以寫入單位為單位來連續(xù)地寫入至替換區(qū)塊中(例如圖4所示的寫入動作401-1、401-2...與401-(N-1))。倘若在步驟S307中判斷子數(shù)據(jù)的數(shù)據(jù)長度不為寫入單位的長度時,則在步驟S311中會將此子數(shù)據(jù)儲存在一暫存區(qū)中。換句話說,在步驟S311中不會將無法寫滿整個寫入單元的子數(shù)據(jù)(即所謂的少量數(shù)據(jù))寫入至替換區(qū)塊C中,取而代之的是將此少量的子數(shù)據(jù)暫時地儲存(如圖4的暫存動作403-N)在暫存區(qū)T中。在本發(fā)明實施例中,此暫存區(qū)T為閃存模塊20224中一瞬時區(qū)塊的下頁(lowerpages),其中瞬時區(qū)塊是閃存模塊224中未使用的區(qū)塊。例如,瞬時區(qū)塊是從備用區(qū)塊之中提取,下頁為閃存一區(qū)塊中寫入速度較快的多頁,又可以稱為fastpages。在本發(fā)明實施例中閃存模塊224是MIXNAND閃存,而MIXNAND閃存的區(qū)塊的程序可分為多階段。例如,以4層記憶胞為例,區(qū)塊的程序可分為2階段。第一階段是下頁(lowerpage)的寫入部分,其物理特性類似于單層記憶胞(SingleLevelCell,SIX)NAND閃存,在完成第一階段之后才程序上頁(叩perpage)。在其程序的過程中下頁的寫入速度會快于上頁。特別是,上頁與下頁具有耦合關(guān)系。也就是說,在程序上頁時,若發(fā)生異常,可能造成下頁的不穩(wěn)定(即數(shù)據(jù)可能遺失)。這也是MIXNAND閃存的可靠度低于SLC與非閃存的原因。類似地,在8層記憶胞或16層記憶胞的案例中,記憶胞包括更多個頁并且會以更多階段來寫入。在此,將寫入速度最快的頁面稱為下頁,其它寫入速度較慢的頁面統(tǒng)稱為上頁。例如,上頁包括具有不同寫入速度的多個頁。在本發(fā)明實施例中,僅使用區(qū)塊的下頁作為上述暫存區(qū)T可提高數(shù)據(jù)寫入速度與數(shù)據(jù)的可靠度。在本發(fā)明另一實施例中,數(shù)據(jù)寫入還包括建立一頁查詢表,其用以記錄閃存中下頁的實體地址。雖然在本發(fā)明實施例中是以閃存模塊224中瞬時區(qū)塊(即未使用區(qū)塊)的下頁來作為暫存區(qū)T。然而,本發(fā)明不限于此,其它適合的儲存媒體亦可作為此暫存區(qū)。例如,在本發(fā)明另一實施例中是在閃存儲存裝置220中獨立于控制器222外或于控制器222內(nèi)再設(shè)置一隨機(jī)存取內(nèi)存(randomaccessmemory,RAM),特別是動態(tài)隨機(jī)存取內(nèi)存(dynamicRAM,DRAM)來作為此暫存區(qū)T。使用DRAM作為暫存區(qū)的優(yōu)點是可以減少閃存的寫入抹除次數(shù)以延長閃存的壽命,并且DRAM的存取速度較閃存快,可提高儲存裝置的執(zhí)行效能。21另外,在本發(fā)明另一實施例中是在閃存儲存裝置220中獨立于控制器222外或于控制器222內(nèi)再設(shè)置一磁阻式內(nèi)存(MagnetoresistiveRAM,MRAM)或一相變化內(nèi)存(PhasechangeRAM,PRAM)來作為此暫存區(qū)T。使用MRAM作為暫存區(qū)的優(yōu)點是以磁電阻特性儲存數(shù)據(jù)具有低耗電、非揮發(fā)性與半永久特性,并且可以減少閃存的寫入抹除次數(shù)以延長閃存的壽命。之后,在步驟S313中會判斷是否所有子數(shù)據(jù)都已處理。倘若在步驟S313中判斷還有子數(shù)據(jù)未處理時則會執(zhí)行步驟S307直到所有子數(shù)據(jù)都處理完為止。在本發(fā)明另一實施例中,數(shù)據(jù)寫入方法還包括在替換區(qū)塊中寫入新數(shù)據(jù)之前會將所欲寫入地址之前的有效舊數(shù)據(jù)從數(shù)據(jù)區(qū)塊復(fù)制至替換區(qū)塊(如圖5的(a))。在本發(fā)明實施例中,控制器222執(zhí)行完步驟S313則暫時完成此次寫入命令。在本發(fā)明另一實施例中,倘若在此瞬時下將停止閃存儲存裝置220的運(yùn)作時,則會將暫存區(qū)T的子數(shù)據(jù)與以及數(shù)據(jù)區(qū)塊中其它有效舊數(shù)據(jù)以寫入單位為單位來一起寫入至替換區(qū)塊中(如圖5的(c))。之后,將此數(shù)據(jù)區(qū)塊抹除成為備用區(qū)塊并且將此替換區(qū)塊關(guān)聯(lián)為數(shù)據(jù)區(qū)塊(相同于圖1B所示的整并)。在圖3B中是繪示在圖3A所示瞬時下接受到主機(jī)寫入命令時的處理流程圖。在步驟S315中會判斷主機(jī)寫入命令欲寫入的接續(xù)新數(shù)據(jù)的地址是否接續(xù)前次寫入新數(shù)據(jù)的地址。倘若在步驟S315中判斷接續(xù)新數(shù)據(jù)的地址是接續(xù)前次寫入新數(shù)據(jù)的地址時,則在步驟S317中會判斷暫存區(qū)中是否存有暫存的子資料。倘若在步驟S317中判斷存有暫存的子數(shù)據(jù)時,則在步驟S319中會將暫存區(qū)中的子數(shù)據(jù)與接續(xù)新數(shù)據(jù)一起以寫入單位的長度來分割為至少一個子數(shù)據(jù)(類似步驟S305)。倘若在步驟S317中判斷暫存區(qū)中無任何子數(shù)據(jù)時,則在步驟S321中會將此接續(xù)新數(shù)據(jù)以寫入單位的長度來分割為至少一個子數(shù)據(jù)(類似步驟S305)。在步驟S319與S321之后會執(zhí)行步驟S329、S331、S333與S335,其分別相同于圖3A步驟S307、S309、S311與S313。在步驟S329中會依序地判斷所分割子數(shù)據(jù)的長度是否為寫入單位長度。倘若在步驟S329中判斷子數(shù)據(jù)的長度為寫入單位長度時,則在步驟S331中會將此子數(shù)據(jù)以寫入單位為單位來連續(xù)地寫入至替換區(qū)塊中。反之,則在步驟S333中會將此子數(shù)據(jù)儲存在一暫存區(qū)中。之后,在步驟S335中會判斷是否所有子數(shù)據(jù)都已處理。倘若還有子數(shù)據(jù)未處理時則會執(zhí)行步驟S329直到所有子數(shù)據(jù)都處理完為止。倘若在步驟S315中判斷欲寫入的接續(xù)新數(shù)據(jù)的地址不是接續(xù)前次寫入新數(shù)據(jù)的地址時,則在步驟S323中會判斷暫存區(qū)中是否存有子資料。倘若在步驟S323中存有暫存的子數(shù)據(jù)時,則在步驟S325中會將暫存區(qū)的子數(shù)據(jù)與以及數(shù)據(jù)區(qū)塊中其它的有效舊數(shù)據(jù)以寫入單位為單位來一起寫入至替換區(qū)塊中(如圖5的(c))。倘若在步驟S323中判斷暫存區(qū)中無子數(shù)據(jù)時,則在步驟S327中會將數(shù)據(jù)區(qū)塊中其它的有效舊數(shù)據(jù)以寫入單位為單位來一起寫入至替換區(qū)塊中。之后,控制器222的內(nèi)存管理模塊222a會將此數(shù)據(jù)區(qū)塊抹除成為備用區(qū)塊并且將此替換區(qū)塊關(guān)聯(lián)為數(shù)據(jù)區(qū)塊(如圖1B所示)。值得一提的是,在閃存中邏輯區(qū)塊所對映的區(qū)塊是處于圖3A所示的狀態(tài)時,當(dāng)控制器222執(zhí)行主機(jī)的寫入命令時就會如圖3B所示的步驟,以判斷欲寫入的資料是否接續(xù)此區(qū)塊的目前更新資料。在本發(fā)明另一實施例中,當(dāng)暫存區(qū)是以揮發(fā)性內(nèi)存(例如DRAM)來實作時,閃存的數(shù)據(jù)寫入方法會包括在閃存儲存裝置斷電前將暫存于暫存區(qū)的數(shù)據(jù)寫入至替換區(qū)塊。此外,在本發(fā)明實施例中是以一組母子區(qū)塊(即一資料區(qū)塊與一替換區(qū)塊)為例進(jìn)行說明。然而,必須了解的是本發(fā)明不限于此,在閃存儲存裝置220運(yùn)作期間,控制器222可依據(jù)緩沖存儲器222d中可用的儲存空間來記錄多組母子區(qū)塊的關(guān)系以更有效率使用閃存區(qū)塊。具體來說,當(dāng)緩沖存儲器222d中可儲存多組母子區(qū)塊的關(guān)系時,當(dāng)上述步驟S315中判斷主機(jī)寫入命令欲寫入數(shù)據(jù)的地址不是接續(xù)前次寫入數(shù)據(jù)(即緩沖存儲器222d中母子區(qū)塊的更新數(shù)據(jù))的地址時,則僅需要整并其中一組母子區(qū)塊關(guān)系,而系統(tǒng)下次寫入數(shù)據(jù)時有可能會寫入數(shù)據(jù)至目前所記錄的任何一組母子區(qū)塊,此時則可提高閃存區(qū)塊的使用效率?!旱诙嵤├辉诘谝粚嵤├虚W存儲存裝置的閃存是以單個MLCNAND閃存為例進(jìn)行說明,因此其寫入單位設(shè)計為一個頁。而在本發(fā)明第二實施例中是以兩個SLC與非閃存封裝成閃存儲存裝置的閃存模塊為例。本發(fā)明第二實施例的閃存儲存裝置方塊圖與閃存的運(yùn)作與數(shù)據(jù)寫入方法是相同于第一實施例(如圖2A、圖2B、圖3與圖4),因此,在此不再重復(fù)描述。以下僅針對第二實施例與第一實施例不同之處進(jìn)行說明。圖6是根據(jù)本發(fā)明第二實施例繪示閃存模塊的詳細(xì)方塊圖。請參照圖6,閃存模塊224'包括第一閃存610、第二閃存620與數(shù)據(jù)總線630。在此,第一閃存610具有頁P(yáng)0P1023,而第二閃存具有頁P(yáng)1024P2047。第一閃存610與第二閃存620交錯(interleave)電性連接至數(shù)據(jù)總線630,并且數(shù)據(jù)總線630用以連接至控制器222。在上述閃存架構(gòu)下,當(dāng)在閃存模塊600中寫入數(shù)據(jù)時,則會同時對第一閃存610與第二閃存620進(jìn)行程序,例如同時對第一閃存610的頁0與第二閃存620的頁1024。因此,在第二實施例中會以兩個頁面為一寫入單位來執(zhí)行上述數(shù)據(jù)寫入方法(如圖3與4所示)。雖然目前己有技術(shù)可在使用SLC與非閃存的狀況下對一個頁進(jìn)行4次程序(即程序次數(shù)(numberofprogram,NOP)為4),因此當(dāng)一個頁為2Kbytes時,每次剛好可程序4個扇區(qū),而不會發(fā)生上述問題。然而,由于半導(dǎo)體技術(shù)的發(fā)展,使得每一區(qū)塊的儲存容量越來越大(例如一個頁為4Kbytes)。因此在使用N0P=4的SLC與非閃存例子中,每次程序亦必需程序IKbytes。因此,使用本實施例所述的方法,亦可有效解決在此類SLC與非閃存中寫入小量數(shù)據(jù)(數(shù)據(jù)量少于寫入單位的數(shù)據(jù))時效率降低與壽命減少的問題?!旱谌龑嵤├坏诙嵤├且詢蓚€SLC與非閃存封裝成的閃存模塊為例來進(jìn)行說明。然而,本發(fā)明亦可應(yīng)用于使用更多閃存所封裝的閃存模塊。在本發(fā)明第三實施例中是以四個SLC與非閃存封裝成的閃存模塊為例。本發(fā)明第三實施例的閃存儲存裝置方塊圖與閃存的運(yùn)作與數(shù)據(jù)寫入方法是相同于第二實施例,因此,在此不再重復(fù)描述。以下僅針對第三實施例與第二實施例不同之處進(jìn)行說明。圖7是根據(jù)本發(fā)明第三實施例繪示閃存模塊的詳細(xì)方塊圖。請參照圖7,閃存模塊700包括第一儲存單元710、第二儲存單元720與數(shù)據(jù)總線730。第一儲存單元710包括第一閃存712、第二閃存714、第一子總線716、第二子總線718與緩沖器702。第二儲存單元包括第三閃存722、第四閃存724、第三子總線726、第四子總線728與緩沖器704。第一儲存單元710與第二儲存單元720交錯電性連接至數(shù)據(jù)總線730,并且數(shù)據(jù)總線730是連接至控制器222。在第一儲存單元710中第一子總線716與第二子總線718是以平行25(parallel)方式將第一閃存712及第二閃存714與緩沖器702電性連接,并且緩沖器702是電性連接至數(shù)據(jù)總線730。在第二儲存單元720中第三子總線726與第四子總線728是以平行方式將第三閃存722及第四閃存724與緩沖器704電性連接,并且緩沖器704電性連接至數(shù)據(jù)總線730。在上述閃存架構(gòu)下,當(dāng)在閃存模塊700中寫入數(shù)據(jù)時,則會同時對第一儲存單元710與第二儲存單元720進(jìn)行程序,并且在第一儲存單元710與第二儲存單元720中分別會平行程序第一閃存712與第二閃存714以及第三閃存722與第四閃存724。因此,在第三實施例中會以四個頁面為一寫入單位來執(zhí)行上述數(shù)據(jù)寫入方法(如圖3與4所示)。值得一提的是,第二實施例與第三實施例是以多個SLC與非閃存為例進(jìn)行說明。然而必須了解的是,本發(fā)明另一實施例中亦可應(yīng)用于使用多個MLCNAND閃存所封裝的閃存模塊。第二實施例與第三實施例僅是以兩個與四個來說明以交錯與平行電性連接方式封裝的范例。必須了解的是,本發(fā)明不限于上述的組合,在不脫離本發(fā)明精神下,閃存模塊可使用更多個閃存或以不同的交錯與平行電性連接方式來封裝。綜上所述,本發(fā)明所提出的數(shù)據(jù)寫入方法能夠?qū)⑸儆谝粋€寫入單位的數(shù)據(jù)暫時不寫入至替換區(qū)塊中,由此可以減少不必要的區(qū)塊抹除,由此降低區(qū)塊的抹除次數(shù)而可延長閃存的壽命。此外,將少于一個寫入單位的數(shù)據(jù)累積可寫滿一個寫入單位再寫入替換區(qū)塊可避免執(zhí)行多個寫入單位時間于不滿一個寫入單位的數(shù)據(jù)上,由此提升整體的程序效率。再者,由于本發(fā)明所提出的數(shù)據(jù)寫入方法可適用于不同的閃存架構(gòu)(即可使用單個或多個閃存的閃存模塊,而此閃存可為SLC與非快閃記體或MLCNAND閃存),因此可提升管理的便利性。雖然本發(fā)明已以較佳實施例揭露如上,然其并非用以限定本發(fā)明,任26何所屬
技術(shù)領(lǐng)域:
中具有通常知識者,在不脫離本發(fā)明之精神和范圍內(nèi),當(dāng)可作些許之更動與潤飾,因此本發(fā)明之保護(hù)范圍當(dāng)視后附之申請專利范圍所界定者為準(zhǔn)。權(quán)利要求1.一種閃存的數(shù)據(jù)寫入方法,其特征在于包括a.以一寫入單位的長度將欲寫入的新數(shù)據(jù)分割為至少一個子數(shù)據(jù);b.在該閃存中從多個備用區(qū)塊中提取一區(qū)塊作為一替換區(qū)塊,用以替換欲寫入該新數(shù)據(jù)的一數(shù)據(jù)區(qū)塊;c.將該至少一個子數(shù)據(jù)之中具該長度的子數(shù)據(jù)以該寫入單位為單位來連續(xù)地寫入至該替換區(qū)塊中;以及d.將該至少一個子數(shù)據(jù)之中不具該長度的子數(shù)據(jù)儲存在一暫存區(qū)中。2.如權(quán)利要求1所述的閃存的數(shù)據(jù)寫入方法,其特征在于,包括將該數(shù)據(jù)區(qū)塊中的有效數(shù)據(jù)以該寫入單位為單位來寫入至該替換區(qū)塊。3.如權(quán)利要求1所述的閃存的數(shù)據(jù)寫入方法,其特征在于,包括判斷欲寫入的后續(xù)新數(shù)據(jù)為接續(xù)該新數(shù)據(jù)時,則以該寫入單位的長度將在該暫存區(qū)中的子數(shù)據(jù)加上該后續(xù)新數(shù)據(jù)一起分割為至少一個子數(shù)據(jù)并且執(zhí)行步驟c。4.如權(quán)利要求1所述的閃存的數(shù)據(jù)寫入方法,其特征在于,包括判斷該后續(xù)新數(shù)據(jù)不是接續(xù)該新資料時,則將在該暫存區(qū)中的子數(shù)據(jù)與該數(shù)據(jù)區(qū)塊中的有效數(shù)據(jù)以該寫入單位為單位來一起寫入至該替換區(qū)塊。5.如權(quán)利要求1所述的閃存的數(shù)據(jù)寫入方法,其特征在于,該閃存為一MLC與非閃存,其中該MLC與非閃存的區(qū)塊分別包括一上頁與一下頁,其中該暫存區(qū)僅使用該MLC與非閃存中一區(qū)塊的該下頁來儲存數(shù)據(jù),并且該些下頁的寫入速度快于該些上頁的寫入速度。6.如權(quán)利要求5所述的閃存的數(shù)據(jù)寫入方法,其特征在于,包括建立一頁査詢表,其用以記錄該些下頁的實體地址。7.如權(quán)利要求1所述的閃存的數(shù)據(jù)寫入方法,其特征在于,該寫入單位包括至少一個頁。8.如權(quán)利要求1所述的閃存的數(shù)據(jù)寫入方法,其特征在于,包括在該閃存所屬的一儲存裝置斷電前,將暫存于該暫存區(qū)的資料寫入至該替換區(qū)塊。9.一種閃存控制器,其適用于具有至少一個閃存的一儲存裝置,其特征在于,該至少一個閃存包括多個數(shù)據(jù)區(qū)塊與多個備用區(qū)塊,該閃存控制器包括一微處理單元,用以控制該閃存控制器的整體運(yùn)作;一閃存接口,電性連接至該微處理單元并且用以存取該閃存;一緩沖存儲器,電性連接至該微處理單元并且用以暫時地儲存數(shù)據(jù);以及一內(nèi)存管理模塊,電性連接至該微處理單元并且用以管理該至少一個閃存,其中該內(nèi)存管理模塊會以一寫入單位的長度將欲寫入的新數(shù)據(jù)分割為至少一個子數(shù)據(jù),該內(nèi)存管理模塊會在該閃存中從該些備用區(qū)塊中提取一區(qū)塊作為一替換區(qū)塊,用以替換欲寫入該新數(shù)據(jù)的數(shù)據(jù)區(qū)塊,該內(nèi)存管理模塊會將該至少一個子數(shù)據(jù)之中具該長度的子數(shù)據(jù)以該寫入單位為單位來連續(xù)地寫入至該替換區(qū)塊中,以及該內(nèi)存管理模塊會將該至少一個子數(shù)據(jù)之中不具該長度的子數(shù)據(jù)儲存在一暫存區(qū)中。10.如權(quán)利要求9所述的控制器,其特征在于,該內(nèi)存管理模塊會將欲寫入該新數(shù)據(jù)的數(shù)據(jù)區(qū)塊中的有效數(shù)據(jù)以該寫入單位為單位來寫入至該替換區(qū)塊。11.如權(quán)利要求9所述的控制器,其特征在于,該內(nèi)存管理模塊在判斷欲寫入的后續(xù)新數(shù)據(jù)為接續(xù)該新數(shù)據(jù)時,會以該寫入單位的長度將在該暫存區(qū)中的子數(shù)據(jù)加上該后續(xù)新數(shù)據(jù)一起分割為至少一個子數(shù)據(jù)并且將其中具該長度的子數(shù)據(jù)以該寫入單位為單位來連續(xù)地寫入至該替換區(qū)塊中。12.如權(quán)利要求9所述的控制器,其特征在于,該內(nèi)存管理模塊在判斷該后續(xù)新數(shù)據(jù)不是接續(xù)該新資料時,會將在該暫存區(qū)中的子資料與欲寫入該新數(shù)據(jù)的數(shù)據(jù)區(qū)塊中的有效數(shù)據(jù)以該寫入單位為單位來一起寫入至該替換區(qū)塊。13.如權(quán)利要求9所述的控制器,其特征在于,該暫存區(qū)為設(shè)置于閃存控制器內(nèi)部或外部的一隨機(jī)存取內(nèi)存、一磁阻式內(nèi)存或一相變化內(nèi)存。14.如權(quán)利要求9所述的控制器,其特征在于,該閃存為一SLC與非閃存。15.如權(quán)利要求9所述的控制器,其特征在于,該閃存為一MLC與非閃存,其中該MLC與非閃存的區(qū)塊分別包括一上頁與一下頁,其中該暫存區(qū)僅使用該MLC與非閃存中一區(qū)塊的該下頁來儲存數(shù)據(jù),并且該些下頁的寫入速度快于該些上頁的寫入速度。16.如權(quán)利要求15所述的控制器,其特征在于,該數(shù)據(jù)寫入方法還包括建立一頁査詢表,其用以記錄該些下頁的實體地址。17.如權(quán)利要求9所述的控制器,其特征在于,該寫入單位包括至少一個頁。18.如權(quán)利要求9所述的控制器,其特征在于,該儲存裝置為一USB隨身碟、一快閃記憶卡或一固態(tài)硬盤。19.如權(quán)利要求13所述的控制器,其特征在于,該內(nèi)存管理模塊在該儲存裝置斷電前,會將暫存于該暫存區(qū)的資料寫入至該替換區(qū)塊。20.—種閃存模塊的數(shù)據(jù)寫入方法,該閃存模塊是由多個閃存封裝而成,其特征在于,該閃存模塊的數(shù)據(jù)寫入方法包括a.以一寫入單位的長度將欲寫入的新數(shù)據(jù)分割為至少一個子數(shù)據(jù);b.在每一閃存中從多個備用區(qū)塊中提取一區(qū)塊作為一替換區(qū)塊,用以替換欲寫入該新數(shù)據(jù)的一數(shù)據(jù)區(qū)塊;c.將該至少一個子數(shù)據(jù)之中具該長度的子數(shù)據(jù)以該寫入單位為單位來同時連續(xù)地寫入至每一閃存的該替換區(qū)塊中;以及d.將該至少一個子數(shù)據(jù)之中不具該長度的子數(shù)據(jù)儲存在一暫存區(qū)中,其中該寫入單位是由該內(nèi)存模塊中每一閃存中的一頁所構(gòu)成。21.如權(quán)利要求20所述的閃存的數(shù)據(jù)寫入方法,其特征在于,該閃存為一MLC與非閃存,其中該MLC與非閃存的區(qū)塊分別包括一上頁與一下頁,其中該暫存區(qū)僅使用該MLC與非閃存中一區(qū)塊的該下頁來儲存數(shù)據(jù),并且該些下頁的寫入速度快于該些上頁的寫入速度。22.—種閃存控制器,其適用于具有一閃存模塊的一儲存裝置,其特征在于,該閃存模塊具有多個閃存且每一閃存包括多個數(shù)據(jù)區(qū)塊與多個備用區(qū)塊,該閃存控制器包括一微處理單元,用以控制該閃存控制器的整體運(yùn)作;一閃存接口,電性連接至該微處理單元并且用以存取該閃存模塊;一緩沖存儲器,電性連接至該微處理單元并且用以暫時地儲存數(shù)據(jù);以及一內(nèi)存管理模塊,電性連接至該微處理單元并且用以管理該閃存模塊,其中該內(nèi)存管理模塊會以一寫入單位的長度將欲寫入的新數(shù)據(jù)分割為至少一個子數(shù)據(jù),該內(nèi)存管理模塊會在每一閃存中從該些備用區(qū)塊中提取一區(qū)塊作為一替換區(qū)塊,用以替換欲寫入該新數(shù)據(jù)的一數(shù)據(jù)區(qū)塊,該內(nèi)存管理模塊會將該至少一個子數(shù)據(jù)之中具該長度的子數(shù)據(jù)以該寫入單位為單位來同時連續(xù)地寫入至每一閃存的該替換區(qū)塊中,以及該內(nèi)存管理模塊會將該至少一個子數(shù)據(jù)之中不具該長度的子數(shù)據(jù)儲存在一暫存區(qū)中,其中該寫入單位是由該內(nèi)存模塊中每一閃存中的一頁所構(gòu)成。23.如權(quán)利要求22所述的控制器,其特征在于,該暫存區(qū)為設(shè)置于閃存控制器內(nèi)部或外部的一隨機(jī)存取內(nèi)存、或一磁阻式內(nèi)存或一相變化內(nèi)存。24.如權(quán)利要求22所述的控制器,其特征在于,該閃存為一MLC與非閃存,其中該MLC與非閃存的區(qū)塊分別包括一上頁與一下頁,其中該暫存區(qū)僅使用該MLC與非閃存中一區(qū)塊的該下頁來儲存數(shù)據(jù),并且該些下頁的寫入速度快于該些上頁的寫入速度。25.—種SLC與非閃存的數(shù)據(jù)寫入方法,其特征在于包括a.以一寫入單位的長度將欲寫入的新數(shù)據(jù)分割為至少一個子數(shù)據(jù);b.在該SLC與非閃存中從多個備用區(qū)塊中提取一區(qū)塊作為一替換區(qū)塊,用以替換欲寫入該新數(shù)據(jù)的一數(shù)據(jù)區(qū)塊;c.將該至少一個子數(shù)據(jù)之中具該長度的子數(shù)據(jù)以該寫入單位為單位來連續(xù)地寫入至該替換區(qū)塊中;以及d.將該至少一個子數(shù)據(jù)之中不具該長度的子數(shù)據(jù)儲存在一暫存區(qū)中,其中該SLC與非的每一頁可程序4次并且每一頁的容量大于2千字節(jié)。全文摘要本發(fā)明一種閃存數(shù)據(jù)寫入方法及使用此方法的控制器。此閃存數(shù)據(jù)寫入方法包括以一寫入單位的長度將欲寫入的新數(shù)據(jù)分割為至少一個子數(shù)據(jù);在閃存中從備用區(qū)塊中提取一區(qū)塊作為一替換區(qū)塊,用以替換欲寫入新數(shù)據(jù)的數(shù)據(jù)區(qū)塊;將子數(shù)據(jù)之中具寫入單位長度的子數(shù)據(jù)以寫入單位為單位來連續(xù)地寫入至替換區(qū)塊中;以及將子數(shù)據(jù)之中不具寫入單位長度的子數(shù)據(jù)儲存在暫存區(qū)中。通過暫存不滿一寫入單位的子數(shù)據(jù)于暫存區(qū)并且之后與后續(xù)寫入數(shù)據(jù)一起寫入閃存可有效提升閃存寫入的效率。文檔編號G06F12/02GK101464834SQ200710300190公開日2009年6月24日申請日期2007年12月19日優(yōu)先權(quán)日2007年12月19日發(fā)明者葉志剛,張瑞賢,朱健華,楊俊勇,蘇建友申請人:群聯(lián)電子股份有限公司