固態(tài)儲存裝置中的區(qū)塊分組方法
【專利摘要】一種固態(tài)儲存裝置中的區(qū)塊分組方法,包括下列步驟:將多個區(qū)塊根據(jù)所對應(yīng)的有效資料數(shù)目歸類至一高有效資料數(shù)目群組或者一低有效資料數(shù)目群組,并根據(jù)所述區(qū)塊所對應(yīng)的擦除次數(shù)建立一連結(jié)表;根據(jù)該低有效資料數(shù)目群組的區(qū)塊,設(shè)定一平均擦除次數(shù);以及于該固態(tài)儲存裝置欲進(jìn)行一垃圾搜集動作時,于該低有效資料數(shù)目群組中選取低于該平均擦除次數(shù)的區(qū)塊進(jìn)行該垃圾搜集動作;根據(jù)該低有效資料數(shù)目群組的區(qū)塊更新該平均擦除次數(shù);以及,根據(jù)更新后的該平均擦除次數(shù),決定是否進(jìn)行一損耗平均動作。
【專利說明】
固態(tài)儲存裝置中的區(qū)塊分組方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明是有關(guān)于一固態(tài)儲存裝置的控制方法,且特別是有關(guān)于一種固態(tài)儲存裝置中的區(qū)塊分組方法。
[0002]先前技術(shù)
[0003]眾所周知,固態(tài)儲存裝置(Solid State Drive, SSD)使用與非門閃存(NAND flashmemory)為主要儲存元件,而此類的儲存裝置為一種非揮發(fā)性(non-volariIe)的存儲器元件。也就是說,當(dāng)資料寫入閃存后,一旦系統(tǒng)電源關(guān)閉,資料仍保存在固態(tài)儲存裝置中。
[0004]請參照圖1,其所繪示為已知固態(tài)儲存裝置的示意圖。固態(tài)儲存裝置10中包括一控制單元101、一緩存單元103與一閃存105??刂茊卧?01與閃存105之間利用一內(nèi)部總線107進(jìn)行資料的存取,而控制單元101利用一外部總線20與主機(host) 12之間進(jìn)行指令與資料的傳遞。再者,緩存單元103可為隨機存取存儲器,用以暫時儲存讀取資料、寫入資料、或者控制單元101所需的暫存參數(shù);再者,外部總線20可為USB總線、IEEE1394總線或SATA總線等等。
[0005]一般來說,閃存中105包括許多區(qū)塊(block),而每個區(qū)塊中又包括多個頁(page)。例如,一個區(qū)塊中有64頁,而每個頁的容量為4K bytes。再者,由于閃存105的特性,每次資料寫入時是以頁為最小單位,而每次擦除(erase)時則是以區(qū)塊為單位進(jìn)行資料擦除。
[0006]由于閃存105中每個區(qū)塊的擦除次數(shù)有限,因而發(fā)展出一種損耗平均(wearleveling)動作。損耗平均動作是為了平均地使用閃存105中的每個區(qū)塊,避免特定區(qū)塊使用過度(擦除次數(shù)過多)而變成壞區(qū)塊(bad block)而無法使用,并且可延長閃存的壽命(life span)。
[0007]在已知固態(tài)儲存裝置10內(nèi)皆會記錄所有區(qū)塊的擦除次數(shù)(erase count)。而已知固態(tài)儲存裝置10在進(jìn)行損耗平均動作時,主要是根據(jù)每個區(qū)塊的擦除次數(shù)(erase count)來判斷區(qū)塊中的資料是屬于常常更新的熱資料(hot data)或者很少更新的冷資料(colddata)。基本上,較常被擦除的區(qū)塊,其擦除次數(shù)較高,所以區(qū)塊內(nèi)的資料一般被視為熱資料;反之,不常被擦除的區(qū)塊,其擦除次數(shù)較低,表示區(qū)塊內(nèi)的資料很少更動,所以其區(qū)塊內(nèi)的資料一般被視為冷資料。
[0008]亦即,損耗平均動作是利用固態(tài)儲存裝置10中的控制單元101偵測閃存105中每個區(qū)塊的擦除次數(shù)。接著,將儲存于擦除次數(shù)較低的區(qū)塊的冷資料轉(zhuǎn)存于擦除次數(shù)較高的區(qū)塊中。之后,擦除次數(shù)較低的區(qū)塊成為空白區(qū)塊(free block)并釋出,并且再次讓控制單元101用來儲存資料。換言之,損耗平均動作將可將擦除次數(shù)較低的區(qū)塊釋出,通過重復(fù)使用擦除次數(shù)較低的區(qū)塊,使得閃存105中每個區(qū)塊的擦除次數(shù)彼此接近,進(jìn)而控制每個區(qū)塊平均地被使用。
[0009]另外,由于閃存105經(jīng)過長時間的存取之后,幾乎每個區(qū)塊中都會有包含一些有效資料以及一些無效資料。當(dāng)區(qū)塊中還存在有效資料時,該區(qū)塊即無法被擦除,如此會造成太多的無效資料占據(jù)閃存105的空間,使得閃存105的可寫入空間變少。因此,一種垃圾搜集動作(garbage collect1n)即被提出。
[0010]請參照圖2,其所繪示為已知垃圾搜集動作示意圖。假設(shè)區(qū)塊C(BlOCkC)中的資料D2、D4、D6為無效資料(斜線區(qū)域),資料D1、D3、D5為有效資料,而區(qū)塊d(Block_d)為空白區(qū)塊。當(dāng)控制單元101針對區(qū)塊c進(jìn)行垃圾搜集動作時,區(qū)塊c (Block_c)中的有效資料DU D3、D5會先被搬移至區(qū)塊d中,使得區(qū)塊c中的所有資料皆被設(shè)定為無效資料。接著,將擦除區(qū)塊c中的無效資料后,使得區(qū)塊c成為一個新的空白區(qū)塊。換句話說,于垃圾搜集動作后,區(qū)塊C將成為一個新的空白區(qū)塊,而區(qū)塊d中更有其他空白區(qū)域B (free space)可以用來儲存資料。
[0011]一般來說,固態(tài)儲存裝置10中的控制單元101會根據(jù)每個區(qū)塊所對應(yīng)的有效資料數(shù)目(valid data count,簡稱VAC)來決定該區(qū)塊是否可以進(jìn)行垃圾搜集動作。而已知的控制單元101在進(jìn)行垃圾搜集動作時,控制單元101需要逐一的搜尋每個區(qū)塊中的有效資料數(shù)目,并選擇有效資料數(shù)目最少的區(qū)塊來進(jìn)行垃圾搜集動作。
[0012]在已知的固態(tài)儲存裝置中,損耗平均動作及垃圾搜集動作為獨立的動作。亦即,損耗平均動作為考慮區(qū)塊的擦除次數(shù),并進(jìn)而將擦除次數(shù)較低的區(qū)塊內(nèi)的儲存資料搬移至擦除次數(shù)較高的區(qū)塊內(nèi),使區(qū)塊間的擦除次數(shù)平均;而垃圾搜集動作為考慮區(qū)塊的有效資料數(shù)目,并進(jìn)而將有效資料數(shù)目較少的區(qū)塊內(nèi)的儲存資料搬移空白區(qū)塊內(nèi),再擦除原區(qū)塊的資料使其成為空白區(qū)塊,以釋放可儲存的區(qū)塊空間。
[0013]然而,損耗平均動作及垃圾搜集動作皆為非常消耗固態(tài)儲存裝置效能的動作,因此,如何使用最小的效能來達(dá)到損耗平均動作及垃圾搜集動作的效果,為本領(lǐng)域技術(shù)人員所欲達(dá)到的目標(biāo)。
【發(fā)明內(nèi)容】
[0014]本發(fā)明有關(guān)于一種固態(tài)儲存裝置中的區(qū)塊分組方法,包括下列步驟:(a)將多個區(qū)塊根據(jù)所對應(yīng)的有效資料數(shù)目歸類至一高有效資料數(shù)目群組或者一低有效資料數(shù)目群組,并根據(jù)所述區(qū)塊所對應(yīng)的擦除次數(shù)建立一連結(jié)表;(b)根據(jù)該低有效資料數(shù)目群組的區(qū)塊,設(shè)定一平均擦除次數(shù);(C)于確認(rèn)該主機更改或者新增資料于該固態(tài)儲存裝置中的該閃存時,根據(jù)更改或者新增資料來更改對應(yīng)區(qū)塊的該有效資料數(shù)目,并據(jù)以更新該連結(jié)表;(d)于該固態(tài)儲存裝置未進(jìn)行一垃圾搜集動作時,回到步驟(C);以及(e)于該固態(tài)儲存裝置欲進(jìn)行該垃圾搜集動作時,于該低有效資料數(shù)目群組中選取低于該平均擦除次數(shù)的區(qū)塊進(jìn)行該垃圾搜集動作;根據(jù)該低有效資料數(shù)目群組的內(nèi)容更新該平均擦除次數(shù);以及,根據(jù)更新后的該平均擦除次數(shù),決定是否進(jìn)行一損耗平均動作。
[0015]本發(fā)明有關(guān)于一種固態(tài)儲存裝置中的區(qū)塊分組方法,包括下列步驟:將多個區(qū)塊根據(jù)所對應(yīng)的有效資料數(shù)目歸類至一高有效資料數(shù)目群組或者一低有效資料數(shù)目群組;根據(jù)對應(yīng)該低有效資料數(shù)目群組中的部分區(qū)塊的多個擦除次數(shù),設(shè)定一平均擦除次數(shù);選取該高有效資料數(shù)目群組中的一第一區(qū)塊;決定該平均擦除次數(shù)與該第一區(qū)塊所對應(yīng)的一第一擦除次數(shù)之間的一差值;以及當(dāng)該差值大于一臨限值時,對該第一區(qū)塊進(jìn)行該損耗平均動作。
【專利附圖】
【附圖說明】
[0016]為了對本發(fā)明之上述及其他方面有更佳的了解,下文特舉較佳實施例,并配合所附附圖,作詳細(xì)說明如下,其中:
[0017]圖1所繪示為已知固態(tài)儲存裝置的示意圖。
[0018]圖2所繪示為已知垃圾搜集動作示意圖。
[0019]圖3A至圖3D所繪示為本發(fā)明將所有的區(qū)塊分成二個群組的示意圖。
[0020]圖4所繪示為本發(fā)明固態(tài)儲存裝置中的區(qū)塊分組方法流程圖。
[0021]圖5A至圖所繪示為本發(fā)明將所有的區(qū)塊分成多個部分的示意圖。
【具體實施方式】
[0022]本發(fā)明的目在在于根據(jù)每個區(qū)塊的有效資料數(shù)目來將所有的區(qū)塊進(jìn)行分組。并且,在進(jìn)行垃圾搜集動作時,根據(jù)區(qū)塊的擦除次數(shù)來決定進(jìn)行垃圾搜集動作的區(qū)塊,使在進(jìn)行垃圾搜集動作的同時,亦可達(dá)到平均各區(qū)塊的擦除次數(shù)的效果。再者,本發(fā)明可運用于圖1的固態(tài)儲存裝置10。而以下的范例皆以圖1的固態(tài)儲存裝來進(jìn)行說明,但并不限定于此。
[0023]根據(jù)本發(fā)明的實施例,當(dāng)固態(tài)儲存裝置10接收電源并開始進(jìn)行初始化動作時,控制單元101先根據(jù)所有區(qū)塊的有效資料數(shù)目,于緩存單元103中建立一個連結(jié)表(Linklist)。該連結(jié)表根據(jù)所有區(qū)塊中的有效資料數(shù)目,將所有的區(qū)塊分成多個群組。
[0024]而在初始化動作完成后,主機12可以正常存取固態(tài)儲存裝置中的資料時,控制單元101會將主機12所提供的更新資料儲存于空白頁中,并且被更新的舊資料會被視為無效資料,而儲存舊資料的相關(guān)區(qū)塊的有效資料數(shù)目也會一并被更新。再者,當(dāng)區(qū)塊的有效資料數(shù)目變更時,控制單元101也會一并更新緩存單元103中的連結(jié)表。
[0025]請參照圖3A至圖3D,其所繪示為本發(fā)明將所有的區(qū)塊分成二個群組的示意圖。固態(tài)儲存裝置10在初始化動作時,根據(jù)每個區(qū)塊所對應(yīng)的有效資料數(shù)目(valid dara count,簡稱VAC),將所有的區(qū)塊歸類至一低VAC群組與一高VAC群組。其中,高VAC群組由有效資料數(shù)目為最大有效資料數(shù)目的80%以上的所有區(qū)塊所組成,而其他的區(qū)塊則組成低VAC群組。當(dāng)然,上述的80%僅是本發(fā)明的一個實施例而已,在此領(lǐng)域的技術(shù)人員可以根據(jù)實際的需求來更改。
[0026]如圖3A所示,當(dāng)所有區(qū)塊歸類至二個群組后,在高VAC群組中,共有A1-A9個區(qū)塊;在低VAC群組中,共有B1-B14個區(qū)塊。其中,每個群組中的區(qū)塊是根據(jù)擦除次數(shù)的大小關(guān)系形成一個連結(jié)(link)。舉例來說,每個連結(jié)的第一個區(qū)塊的擦除次數(shù)最大,而最后一個區(qū)塊的擦除次數(shù)最小。因此,由圖3A可知,在高VAC群組中,A9區(qū)塊的擦除次數(shù)最小,在低VAC群組中,B14區(qū)塊的擦除次數(shù)最小。
[0027]根據(jù)本發(fā)明的實施例,在低VAC群組中設(shè)定一個平均擦除次數(shù)(ECavg),此平均擦除次數(shù)(ECavg)是由低VCA群組中的連結(jié)來決定。舉例來說,平均擦除次數(shù)(ECavg)為該連結(jié)中最后M個區(qū)塊的擦除次數(shù)總合的平均值。當(dāng)M = 5時,平均擦除次數(shù)(ECavg)即為區(qū)塊B10B14的擦除次數(shù)總合的平均值。由圖3A可知,共有區(qū)塊B13-B14的擦除次數(shù)低于平均擦除次數(shù)(ECavg)。通過采用連結(jié)中最后M個區(qū)塊的擦除次數(shù)總合的平均值來作為平均擦除次數(shù)(ECavg),可避免采用所有區(qū)塊的擦除次數(shù)總合的平均值來作為平均擦除次數(shù)(ECavg)會產(chǎn)生的標(biāo)準(zhǔn)偏差過大的問題。
[0028]當(dāng)固態(tài)儲裝置10中的控制單元101將連結(jié)表建立完成并儲存于緩存單元103后,固態(tài)儲裝置即可讓主機12來正常存取閃存105中的資料。
[0029]而隨著主機12傳送寫入指令的增加,每個區(qū)塊的有效資料數(shù)目也會隨之改變。舉例來說,當(dāng)寫入資料為新的資料時,被寫入的區(qū)塊的有效資料數(shù)目會增加;而當(dāng)寫入資料為更新的資料時,除了被寫入的區(qū)塊的有效資料數(shù)目會增加之外,由于被更新的舊資料會被視為無效資料,因此儲存舊資料的區(qū)塊的有效資料數(shù)目會減少。當(dāng)然,主機12也可以傳送刪除指令至固態(tài)儲存裝置10,使得儲存有相關(guān)資料的特定區(qū)塊的有效資料數(shù)目會減少。
[0030]再者,控制單元101即根據(jù)主機12傳送的指令以及閃存105的資料修改情形來更新緩存單元103中的連結(jié)表。當(dāng)某一區(qū)塊的有效資料數(shù)目被更新時,控制單元101會根據(jù)更新的有效資料數(shù)目及其擦除次數(shù)來判斷是否需要將該區(qū)塊歸類于其他群組,或是將群組內(nèi)的區(qū)塊進(jìn)行重新排序。經(jīng)過多次的存取后,當(dāng)固態(tài)儲存裝置10欲進(jìn)行垃圾搜集動作時,即根據(jù)當(dāng)時緩存單元103中連結(jié)表的內(nèi)容來進(jìn)行垃圾搜集動作。
[0031]假設(shè)經(jīng)過多次的存取后,緩存單元103中的連結(jié)表的內(nèi)容如圖3B所示。而當(dāng)固態(tài)儲存裝置10欲進(jìn)行垃圾搜集動作時,控制單元101直接選取低VAC群組中,擦除次數(shù)較低的區(qū)塊來進(jìn)行垃圾搜集動作。舉例來說,將擦除次數(shù)最低的三個區(qū)塊A7、B14、A8進(jìn)行垃圾搜集動作。當(dāng)垃圾搜集動作完成后,最低擦除次數(shù)的三個區(qū)塊A7、B14、AS將進(jìn)行擦除動作而成為空白區(qū)塊,并且釋放出來讓控制單元101再次用來儲存資料。
[0032]很明顯地,利用本發(fā)明的區(qū)塊分組方法,可以讓固態(tài)儲存裝置10進(jìn)行垃圾搜集動作后,釋放出擦除次數(shù)低的區(qū)塊,并使用擦除次數(shù)低的區(qū)塊來進(jìn)行擦除及再次寫入的動作。如此一來,固態(tài)儲存裝置10在進(jìn)行垃圾搜集動作時,也同時達(dá)到損耗平均動作中,釋放低擦除次數(shù)的區(qū)塊來使用,以使區(qū)塊的擦除次數(shù)平均的目的。
[0033]如圖3C所示,當(dāng)最低擦除次數(shù)的三個區(qū)塊A7、B14、A8被釋放出去之后。在低VAC群組中,會再次更新平均擦除次數(shù)(ECavg’)。例如,更新的平均擦除次數(shù)(ECavg’)為該連結(jié)中最后M個區(qū)塊的擦除次數(shù)總合的平均值。當(dāng)M = 5時,更新的平均擦除次數(shù)(ECavg’)即為區(qū)塊A6、B10-B13的擦除次數(shù)總合的平均值。
[0034]很明顯地,更新的平均擦除次數(shù)(ECavg’)會較原平均擦除次數(shù)(ECavg)還高。也就是說,固態(tài)儲存裝置10每進(jìn)行一次垃圾搜集動作之后,會讓平均擦除次數(shù)逐次升高。而根據(jù)本發(fā)明的實施例,此區(qū)塊分組方法更可以用來決定是否進(jìn)行損耗平均動作,并搜尋對應(yīng)的區(qū)塊來進(jìn)行損耗平均動作。
[0035]舉例來說,假設(shè)高VAC群組中區(qū)塊A9中的資料為冷資料,其表示區(qū)塊A9中的資料很少被更新,且區(qū)塊A9很少被重復(fù)擦除及寫入。換句話說,區(qū)塊A9具有較高的有效資料數(shù)目,及較低的擦除次數(shù)。因此,在經(jīng)過多次的存取后,區(qū)塊A9會一直留在高VAC群組且位于連結(jié)的最后一個區(qū)塊,如圖3A至圖3C所示。再者,由于低VAC群組中的平均擦除次數(shù)會逐次升高,因此該平均擦除次數(shù)可以用來跟高VAC群組中區(qū)塊A9的擦除次數(shù)(EC_a9)來比較。假設(shè)更新的平均擦除次數(shù)(ECavg’)與區(qū)塊A9的擦除次數(shù)(EC_a9)的差值超過一臨限值時,控制單元101可針對區(qū)塊A9進(jìn)行損耗平均動作。亦即,將區(qū)塊A9的資料寫入一高擦除次數(shù)的空白區(qū)塊A10。之后,將區(qū)塊A9擦除并釋放出區(qū)塊A9。
[0036]如圖3D所示,將區(qū)塊A9的資料轉(zhuǎn)存于區(qū)塊AlO后,由于區(qū)塊AlO具有高擦除次數(shù),所以區(qū)塊AlO會在高VAC群組的連結(jié)前段。再者,區(qū)塊A9將進(jìn)行擦除動作而成為空白區(qū)塊,并且釋放出來讓控制單元101再次用來儲存資料。
[0037]再者,在本實施例中,控制單元101可根據(jù)區(qū)塊的一歷史參數(shù)(History)來判斷區(qū)塊內(nèi)的資料是否為冷資料。歷史參數(shù)(History)為一時間記錄,其記錄各區(qū)塊間的資料寫入的對應(yīng)時間點。一般而言,對于儲存冷資料的區(qū)塊的資料寫入的時間點會早于儲存熱資料的區(qū)塊的資料寫入的時間點。通過歷史參數(shù)(History)來判斷區(qū)塊內(nèi)的資料是否為冷資料可避免將儲存熱資料的區(qū)塊進(jìn)行損耗平均動作。以上述例子作說明,當(dāng)具有低擦除次數(shù)的區(qū)塊A9被釋放并再次被寫入新資料時,區(qū)塊A9可能會被連結(jié)于高VAC群組中的最后一個區(qū)塊。此時,當(dāng)控制單元101判斷更新的平均擦除次數(shù)(ECavg’ )與區(qū)塊A9的擦除次數(shù)(EC_a9)的差值超過一臨限值時,控制單元101可根據(jù)歷史參數(shù)(History)來判斷區(qū)塊內(nèi)的資料為熱資料,而不對區(qū)塊A9進(jìn)行損耗平均動作。
[0038]由以上的說明可知,利用本發(fā)明的區(qū)塊分組方法,于垃圾搜集動作后,可釋放出擦除次數(shù)低的區(qū)塊,使低VAC群組中的區(qū)塊的擦除次數(shù)能夠平均。并且,在高VAC群組與低VAC群組之間,可根據(jù)低VAC群組中更新的平均擦除次數(shù)(ECavg’)與高VAC群組中區(qū)塊的擦除次數(shù)的差值,來決定是否進(jìn)行損耗平均動作,并可決定進(jìn)行損耗平均動作的區(qū)塊,以使高VAC群組與低VAC群組之間的區(qū)塊的擦除次數(shù)能夠平均。
[0039]請參照圖4,其所繪示為本發(fā)明固態(tài)儲存裝置中的區(qū)塊分組方法流程圖。當(dāng)固態(tài)儲存裝置10進(jìn)行初始化動作時,搜尋閃存105中的所有區(qū)塊,并將所有區(qū)塊根據(jù)有效資料數(shù)目歸類至一高VAC群組或者一低VAC群組,并根據(jù)區(qū)塊對應(yīng)的擦除次數(shù)建立一連結(jié)表(步驟S401)。接著,根據(jù)該低VAC群組的區(qū)塊設(shè)定一平均擦除次數(shù)(步驟S403)。
[0040]當(dāng)主機12可以正常存取固態(tài)儲存裝置10中的資料時,判斷主機是否有更改或者新增資料(步驟S405)。當(dāng)主機未更改或者新增資料時,回到步驟S405 ;反之,當(dāng)主機更改或者新增資料時,根據(jù)修改或者新增資料更改對應(yīng)區(qū)塊的有效資料數(shù)目,并據(jù)以更新連結(jié)表(步驟S407)。
[0041]接著,當(dāng)固態(tài)儲存裝置未進(jìn)行垃圾搜集動作時,回到步驟S405。當(dāng)固態(tài)儲存裝置進(jìn)行垃圾搜集動作時,于該低VAC群組中選取低于平均擦除次數(shù)的區(qū)塊進(jìn)行垃圾搜集動作(步驟S411)。根據(jù)該低VAC群組的區(qū)塊更新該平均擦除次數(shù)(步驟S413)。接著,固態(tài)儲存裝置可根據(jù)更新后的該平均擦除次數(shù)決定是否進(jìn)行一損耗平均動作(步驟S414)。若否,則回到步驟S405。若是,則選取該高VAC群組中的區(qū)塊來進(jìn)行該損耗平均動作(步驟S415)。之后,回到步驟S405。
[0042]當(dāng)然,本發(fā)明的區(qū)塊分組方法也不限定于將區(qū)塊歸類至二個群組而已。將區(qū)塊歸類至多個部分,并利用相同的方式,來進(jìn)行垃圾搜集動作與損耗平均動作。
[0043]請參照圖5A與圖其所繪示為本發(fā)明將所有的區(qū)塊分成多個部分的示意圖?;旧?,第4圖的分組方法流程圖也適用于此,以下說明之。
[0044]固態(tài)儲存裝置10在初始化動作時,將所有的區(qū)塊歸類至十個部分。例如,區(qū)塊的有效資料數(shù)目在1-100被歸類于第一部分(I),區(qū)塊的有效資料數(shù)目在101-200被歸類于第二部分(2),區(qū)塊的有效資料數(shù)目在201-300被歸類于第三部分(3),并依此類推。而區(qū)塊的有效資料數(shù)目在901以上則被歸類于第十部分(10)。
[0045]如圖5A所示,當(dāng)所有區(qū)塊歸類至十個部分后,在第一部分(I)中,共有A1-A4區(qū)塊;在第二部分(2)中,共有B1-B2區(qū)塊;在第三部分(3)中,共有C1-C5區(qū)塊;在第四部分(4)中,共有D1-D3區(qū)塊;在第五部分(5)中,共有E1-E2區(qū)塊;在第六部分¢)中,共有F1-F4區(qū)塊;在第七部分(7)中,共有G1-G2區(qū)塊;在第八部分⑶中,共有H1-H3區(qū)塊;在第九部分(9)中,共有11-14區(qū)塊;在第十部分(10)中,共有J1-J5區(qū)塊。其中,每個部分中的區(qū)塊根據(jù)擦除次數(shù)的大小關(guān)系形成一個連結(jié)(link)。舉例來說,每個連結(jié)的第一個區(qū)塊的擦除次數(shù)最大,而最后一個區(qū)塊的擦除次數(shù)最小。以第十部分(10)為例,Jl區(qū)塊的擦除次數(shù)最大,J5區(qū)塊的擦除次數(shù)最小。
[0046]接著,將所述部分再分成二個群組。如圖5A所示,第一部分(I)至第八部分(8)被歸類為低VAC群組,第九部分(9)與第十部分(10)被歸類為高VAC群組。而根據(jù)本發(fā)明的實施例,在低VAC群組中設(shè)定一個平均擦除次數(shù)(ECavg),此平均擦除次數(shù)(ECavg)由低VCA群組中的部分區(qū)塊來決定。舉例來說,平均擦除次數(shù)(ECavg)定義為低VCA群組中M個較低擦除次數(shù)的總合的平均值。當(dāng)M = 7時,平均擦除次數(shù)(ECavg)為,例如區(qū)塊A4、C3-C5、D3、F3-F4的擦除次數(shù)總合的平均值。由圖5A可知,共有區(qū)塊A4、C4、C5、F4的擦除次數(shù)低于平均擦除次數(shù)(ECavg)。
[0047]當(dāng)固態(tài)儲裝置10中的控制單元101將連結(jié)表建立完成并儲存于緩存單元103后,固態(tài)儲裝置即可讓主機12來正常存取閃存105中的資料并更新連結(jié)表。
[0048]假設(shè)經(jīng)過多次的存取后,緩存單元103中的連結(jié)表的內(nèi)容如圖5B所示。而當(dāng)固態(tài)儲存裝置10欲進(jìn)行垃圾搜集動作時,控制單元101可根據(jù)連結(jié)表直接選取低VAC群組中,擦除次數(shù)較低的區(qū)塊來進(jìn)行垃圾搜集動作。舉例來說,控制單元101可直接選取低于平均擦除次數(shù)(ECavg)的六個區(qū)塊J5、A4、C4、C5、I3、F4來進(jìn)行垃圾搜集動作。當(dāng)垃圾搜集動作完成后,擦除次數(shù)較低的六個區(qū)塊J5、A4、C4、C5、13、F4將進(jìn)行擦除動作而成為空白區(qū)塊,并且釋放出來讓控制單元101再次用來儲存資料。
[0049]很明顯地,利用本發(fā)明的區(qū)塊分組方法,可以讓固態(tài)儲存裝置10進(jìn)行垃圾搜集動作后,釋放出擦除次數(shù)低的區(qū)塊,并使用擦除次數(shù)低的區(qū)塊來進(jìn)行擦除及再次寫入的動作。如此一來,固態(tài)儲存裝置10在進(jìn)行垃圾搜集動作時,也同時達(dá)到損耗平均動作中,釋放低擦除次數(shù)的區(qū)塊來使用,以使區(qū)塊的擦除次數(shù)平均的目的。
[0050]如圖5C所示,當(dāng)擦除次數(shù)較低的六個區(qū)塊J5、A4、C4、C5、I3、F4被釋放出去之后。在低VAC群組中,會再次更新平均擦除次數(shù)(ECavg’)。例如,更新的平均擦除次數(shù)(ECavg’)為該連結(jié)中最后M個區(qū)塊的擦除次數(shù)總合的平均值。當(dāng)M = 7時,更新的平均擦除次數(shù)(ECavg,)即為區(qū)塊八3、03、03、8232、02、!12的擦除次數(shù)總合的平均值。
[0051]很明顯地,更新的平均擦除次數(shù)(ECavg’)會較原平均擦除次數(shù)(ECavg)還高。也就是說,固態(tài)儲存裝置10每進(jìn)行一次垃圾搜集動作之后,會讓平均擦除次數(shù)逐次升高。而根據(jù)本發(fā)明的實施例,此區(qū)塊分組方法更可以用來決定是否進(jìn)行損耗平均動作,并搜尋對應(yīng)的區(qū)塊來進(jìn)行損耗平均動作。
[0052]舉例來說,假設(shè)高VAC群組中區(qū)塊J4與14中的資料為冷資料,其表示區(qū)塊J4與14中的資料很少被更新,且區(qū)塊J4與14很少被重復(fù)擦除及寫入。換句話說,區(qū)塊J4與14具有較高的有效資料數(shù)目,及較低的擦除次數(shù)。因此,在經(jīng)過多次的存取后,區(qū)塊J4與14會一直留在高VAC群組且位于連結(jié)的最后一個區(qū)塊,如第5A至5C圖所示。再者,由于低VAC群組中的平均擦除次數(shù)會逐次升高,因此該平均擦除次數(shù)可以用來跟高VAC群組中區(qū)塊J4與14的擦除次數(shù)(EC_j4)與(EC_i4)來比較。假設(shè)更新的平均擦除次數(shù)(ECavg’ )與區(qū)塊J4與14的擦除次數(shù)(EC_j4)與(EC_i4)的差值皆超過一臨限值時,控制單元101可針對區(qū)塊J4與14進(jìn)行損耗平均動作。亦即,將區(qū)塊J4的資料寫入一高擦除次數(shù)的空白區(qū)塊J6,將區(qū)塊14的資料寫入一高擦除次數(shù)的空白區(qū)塊15。之后,將區(qū)塊J4與14擦除并釋放出區(qū)塊J4與14。
[0053]如圖所示,將區(qū)塊J4的資料轉(zhuǎn)存于區(qū)塊J6后,由于區(qū)塊J6具有高擦除次數(shù),所以會在區(qū)塊J6第十部分(10)中的連結(jié)前段,由于區(qū)塊15具有高擦除次數(shù),所以區(qū)塊15會在第九部分(9)中的連結(jié)前段。再者,區(qū)塊區(qū)塊J4與14將進(jìn)行擦除動作而成為空白區(qū)塊,并且釋放出來讓控制單元101再次用來儲存資料。
[0054]由以上的說明可知,利用本發(fā)明的區(qū)塊分組方法,于垃圾搜集動作后,可釋放出擦除次數(shù)低的區(qū)塊,使低VAC群組中的區(qū)塊的擦除次數(shù)能夠平均。并且,在高VAC群組與低VAC群組之間,可根據(jù)低VAC群組中更新的平均擦除次數(shù)(ECavg’)與高VAC群組中區(qū)塊的擦除次數(shù)的差值,來決定是否進(jìn)行損耗平均動作,并可決定欲進(jìn)行損耗平均動作的區(qū)塊,以使高VAC群組與低VAC群組之間的區(qū)塊的擦除次數(shù)能夠平均。
[0055]綜上所述,雖然本發(fā)明已以較佳實施例揭露如上,然其并非用以限定本發(fā)明。本發(fā)明所屬【技術(shù)領(lǐng)域】中具有通常知識者,在不脫離本發(fā)明的精神和范圍內(nèi),當(dāng)可作各種的更動與潤飾。因此,本發(fā)明的保護范圍當(dāng)視后附的權(quán)利要求范圍所界定的為準(zhǔn)。
【權(quán)利要求】
1.一種固態(tài)儲存裝置中的區(qū)塊分組方法,包括下列步驟: (a)將多個區(qū)塊根據(jù)所對應(yīng)的有效資料數(shù)目歸類至一高有效資料數(shù)目群組或者一低有效資料數(shù)目群組,并根據(jù)所述區(qū)塊所對應(yīng)的擦除次數(shù)建立一連結(jié)表; (b)根據(jù)該低有效資料數(shù)目群組的區(qū)塊,設(shè)定一平均擦除次數(shù); (c)于確認(rèn)該主機更改或者新增資料于該固態(tài)儲存裝置中的一閃存時,根據(jù)更改或者新增資料來更改對應(yīng)區(qū)塊的該有效資料數(shù)目,并據(jù)以更新該連結(jié)表; (d)于該固態(tài)儲存裝置未進(jìn)行一垃圾搜集動作時,回到步驟(c);以及 (e)于該固態(tài)儲存裝置欲進(jìn)行該垃圾搜集動作時,于該低有效資料數(shù)目群組中選取低于該平均擦除次數(shù)的區(qū)塊進(jìn)行該垃圾搜集動作;根據(jù)該低有效資料數(shù)目群組的區(qū)塊更新該平均擦除次數(shù);以及,根據(jù)更新后的該平均擦除次數(shù),決定是否進(jìn)行一損耗平均動作。
2.如權(quán)利要求1所述的固態(tài)儲存裝置中的區(qū)塊分組方法,其中建立該連結(jié)表包括下列步驟: 將該低有效資料數(shù)目群組中所有區(qū)塊所對應(yīng)的該擦除次數(shù)順序建立一第一連結(jié);以及 將該高有效資料數(shù)目群組中所有區(qū)塊所對應(yīng)的該擦除次數(shù)順序建立一第二連結(jié)。
3.如權(quán)利要求1所述的固態(tài)儲存裝置中的區(qū)塊分組方法,其中該步驟(b)中還包括:選取該低有效資料數(shù)目群組中擦除次數(shù)較低的M個區(qū)塊,并將對應(yīng)M個擦除次數(shù)加總之后的平均值設(shè)定為該平均擦除次數(shù)。
4.如權(quán)利要求1所述的固態(tài)儲存裝置中的區(qū)塊分組方法,該步驟(e)還包括下列步驟: 選取該高有效資料數(shù)目群組中的一第一區(qū)塊; 決定該平均擦除次數(shù)與該第一區(qū)塊所對應(yīng)的一第一擦除次數(shù)之間的一差值;以及 當(dāng)該差值大于一臨限值時,對該第一區(qū)塊進(jìn)行該損耗平均動作。
5.如權(quán)利要求1所述的固態(tài)儲存裝置中的區(qū)塊分組方法,該步驟(a)還包括下列步驟: 將多個區(qū)塊根據(jù)所對應(yīng)的有效資料數(shù)目歸類至多個部分; 將所述部分區(qū)分至該高有效資料數(shù)目群組與該低有效資料數(shù)目群組;以及 根據(jù)所述區(qū)塊所對應(yīng)的擦除次數(shù)建立一連結(jié)表。
6.如權(quán)利要求5所述的固態(tài)儲存裝置中的區(qū)塊分組方法,其中建立該連結(jié)表包括下列步驟:將每一該部分中所有區(qū)塊所對應(yīng)的該擦除次數(shù)順序建立一連結(jié)。
7.一種固態(tài)儲存裝置中的區(qū)塊分組方法,包括下列步驟: 將多個區(qū)塊根據(jù)所對應(yīng)的有效資料數(shù)目歸類至一高有效資料數(shù)目群組或者一低有效資料數(shù)目群組; 根據(jù)對應(yīng)該低有效資料數(shù)目群組中的部分區(qū)塊的多個擦除次數(shù),設(shè)定一平均擦除次數(shù); 選取該高有效資料數(shù)目群組中的一第一區(qū)塊; 決定該平均擦除次數(shù)與該第一區(qū)塊所對應(yīng)的一第一擦除次數(shù)之間的一差值;以及 當(dāng)該差值大于一臨限值時,對該第一區(qū)塊進(jìn)行該損耗平均動作。
8.如權(quán)利要求7所述的固態(tài)儲存裝置中的區(qū)塊分組方法,其中根據(jù)對應(yīng)該低有效資料數(shù)目群組中的部分區(qū)塊的多個擦除次數(shù),設(shè)定該平均擦除次數(shù)的步驟還包括: 選取該低有效資料數(shù)目群組中擦除次數(shù)較低的M個區(qū)塊,并將對應(yīng)M個擦除次數(shù)加總之后的平均值設(shè)定為該平均擦除次數(shù)。
9.如權(quán)利要求7所述的固態(tài)儲存裝置中的區(qū)塊分組方法,還包含下列步驟: 于該固態(tài)儲存裝置欲進(jìn)行一垃圾搜集動作時,于該低有效資料數(shù)目群組中選取低于該平均擦除次數(shù)的區(qū)塊進(jìn)行該垃圾搜集動作,并更新該平均擦除次數(shù)。
【文檔編號】G06F12/08GK104298465SQ201310300535
【公開日】2015年1月21日 申請日期:2013年7月17日 優(yōu)先權(quán)日:2013年7月17日
【發(fā)明者】李嘉倫 申請人:光寶科技股份有限公司