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