專(zhuān)利名稱(chēng):基于動(dòng)態(tài)窗口管理的磨損均衡方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及固態(tài)硬盤(pán)存儲(chǔ)技術(shù)領(lǐng)域,尤其涉及固態(tài)硬盤(pán)存儲(chǔ)技術(shù)領(lǐng)域中的一種基于動(dòng)態(tài)窗口管理的磨損均衡方法及裝置。
背景技術(shù):
在固態(tài)硬盤(pán)領(lǐng)域,閃存被廣泛地使用。閃存物理塊的擦除次數(shù)是有限的,最新工藝的MLC典型擦寫(xiě)次數(shù)只有3,000-5,000次。在固態(tài)存儲(chǔ)設(shè)備使用期間,由于寫(xiě)入數(shù)據(jù)序列的差異,存在冷熱數(shù)據(jù),其被更新的頻繁差別很大。冷數(shù)據(jù)被更新的頻率很低,因此所占用的物理塊被擦的次數(shù)很低;而熱數(shù)據(jù)所占用的物理數(shù)據(jù)塊則相反,如果不做特殊的磨損均衡處理,熱數(shù)據(jù)頻繁使用將提前到達(dá)擦寫(xiě)壽命而出現(xiàn)壞塊,此時(shí),系統(tǒng)會(huì)因?yàn)閴膲K的增加而導(dǎo)致寫(xiě)放大的增加,進(jìn)一步加劇固態(tài)硬盤(pán)壽命的縮短。因此,如何設(shè)計(jì)有效的磨損均衡機(jī)制來(lái)平衡冷熱數(shù)據(jù)的存儲(chǔ),是影響固態(tài)硬盤(pán)壽命的關(guān)鍵因素。關(guān)于磨損均衡算法主要有兩種一種是動(dòng)態(tài)磨損均衡;另一種是靜態(tài)磨損均衡?;谙鄬?duì)/絕對(duì)的物理塊擦除次數(shù),動(dòng)態(tài)磨損均衡在分配空閑物理塊時(shí)總是使用擦除次數(shù)最小的物理塊寫(xiě)入新數(shù)據(jù),在此情形下,存在一個(gè)局限情形,例如當(dāng)某部分?jǐn)?shù)據(jù)寫(xiě)入后,由于從來(lái)沒(méi)有因?yàn)楸粡?fù)寫(xiě)而成為垃圾數(shù)據(jù),則該類(lèi)塊一直被占用,沒(méi)有機(jī)會(huì)增加擦除次數(shù);而靜態(tài)磨損均衡在出現(xiàn)前述情形時(shí),定義該類(lèi)寫(xiě)入后一直沒(méi)有變動(dòng)的數(shù)據(jù)為冷數(shù)據(jù),根據(jù)不同的觸發(fā)條件,動(dòng)態(tài)進(jìn)行冷數(shù)據(jù)的處理,將冷數(shù)據(jù)交換到擦除次數(shù)較大的物理塊上。現(xiàn)有技術(shù)的磨損均衡技術(shù)對(duì)擦除次數(shù)的存儲(chǔ)空間以及冷數(shù)據(jù)的處理策略做出了一些改進(jìn),但對(duì)于物理塊的擦寫(xiě)次數(shù)偏離約束以及冷數(shù)據(jù)動(dòng)態(tài)處理的觸發(fā)時(shí)機(jī)沒(méi)有做出有效的改進(jìn)。常規(guī)方法一般是周期性地檢查各物理塊的擦除次數(shù),在檢測(cè)到最大與最小的物理塊擦除次數(shù)偏離某預(yù)定的閾值時(shí),進(jìn)行冷數(shù)據(jù)的處理操作。但是對(duì)于磨損均衡算法來(lái)說(shuō), 片面地追求各物理塊的擦除次數(shù)均衡,必然帶來(lái)很多因冷數(shù)據(jù)處理而引發(fā)的無(wú)效寫(xiě)操作, 對(duì)于固態(tài)硬盤(pán)來(lái)說(shuō),表現(xiàn)為系統(tǒng)的寫(xiě)放大增加,從而降低了硬盤(pán)的寫(xiě)壽命。此外,常規(guī)的冷熱數(shù)據(jù)處理方式對(duì)于各物理塊擦除次數(shù)偏離的約束很大程度上取決于周期性檢查的頻率,過(guò)高的頻率對(duì)于固態(tài)硬盤(pán)的整體性能影響較大,過(guò)低的頻率則會(huì)使得物理塊的擦除次數(shù)偏離度遠(yuǎn)遠(yuǎn)超出預(yù)期,因此不能對(duì)物理塊的擦除次數(shù)偏離作出合理、有效的控制。因此需要一種能有效的解決現(xiàn)有磨損均衡方法中存在的問(wèn)題的改進(jìn)的磨損均衡方法及裝置。
發(fā)明內(nèi)容
基于上述問(wèn)題,本發(fā)明引入了一種基于動(dòng)態(tài)窗口管理的磨損均衡方法,能夠?qū)ξ锢韷K的擦除次數(shù)偏離作出合理、有效的控制;提供自我感知型的冷數(shù)據(jù)處理觸發(fā)時(shí)機(jī),在將磨損均分到全盤(pán)的同時(shí),降低整體的寫(xiě)放大,能有效提高固態(tài)硬盤(pán)的壽命。本發(fā)明一方面提供了一種基于動(dòng)態(tài)窗口管理的磨損均衡方法,包括
5
步驟1,根據(jù)管理對(duì)象中BU的最大擦除次數(shù)maX_Wear和可擦除次數(shù)EC_MAX計(jì)算窗口最大允許偏離數(shù) Τ, T = f (life_remain),并且 life_remain = EC_MAX-max_wear ;步驟2,依據(jù)各BU相對(duì)最小擦除次數(shù)的偏離值進(jìn)行分組,將管理對(duì)象中的BU分為 0到T-I共T簇,具有相同擦除偏離值的BU位于同一簇內(nèi),以M值表示冷熱數(shù)據(jù)的分界值, 并且M初始值位于窗口中間;步驟3,M值隨著寫(xiě)入的數(shù)據(jù)的屬性而發(fā)生變化,當(dāng)窗口的移動(dòng)受限制于最低端時(shí),M值將加1,以便有更多的空間來(lái)承載熱數(shù)據(jù),當(dāng)窗口的移動(dòng)受制于最高端時(shí),M值將減 1,以提供更多的空間來(lái)承載冷數(shù)據(jù)。在一個(gè)實(shí)施方式中,步驟3包括當(dāng)簇0上的BU內(nèi)的熱數(shù)據(jù)沉淀成冷數(shù)據(jù),并且 Hot區(qū)的可用空白塊低于第一閾值TL時(shí),將簇0上沉淀的冷數(shù)據(jù)寫(xiě)入到Cold區(qū)的空白塊中,同時(shí)對(duì)Hot區(qū)執(zhí)行垃圾回收,并將M的值加1。所述將簇0上沉淀的冷數(shù)據(jù)寫(xiě)入到Cold區(qū)的空白塊中,同時(shí)對(duì)Hot區(qū)執(zhí)行垃圾回收的步驟包括步驟61,將簇0上沉淀下來(lái)的冷數(shù)據(jù)寫(xiě)入到Cold區(qū)內(nèi)按序從簇M到簇T-I中第一個(gè)可用的空白塊上;步驟62,將簇0上處理完之后的BU擦除,其擦除次數(shù)加1,對(duì)應(yīng)的BU進(jìn)入到簇1, 如果簇0上仍有待處理的BU,重復(fù)步驟61,如果簇0上已無(wú)待處理的BU,則進(jìn)入到步驟63 ;步驟63,更新各簇號(hào),簇N更新為簇N-l,N為從1到T-I的整數(shù)。所述磨損均衡方法進(jìn)一步包括檢查Hot區(qū)的可用空白塊是否回到第一閾值TL之上,如果沒(méi)有則再次從步驟61開(kāi)始執(zhí)行,循環(huán)直到Hot區(qū)的可用空白塊回到TL上。在另一實(shí)施方式中,步驟3包括當(dāng)簇T-I上的BU內(nèi)的冷數(shù)據(jù)轉(zhuǎn)變?yōu)槔鴶?shù)據(jù),并且Cold區(qū)的可用空白塊低于第二閾值TH時(shí),將簇0上的數(shù)據(jù)寫(xiě)入到Hot區(qū)的空白塊中,同時(shí)對(duì)Hot/Cold區(qū)執(zhí)行垃圾回收,并將M的值減1。所述將簇0上的數(shù)據(jù)寫(xiě)入到Hot區(qū)的空白塊中,同時(shí)對(duì)Hot/Cold區(qū)執(zhí)行垃圾回收的步驟包括步驟81,將簇0上沉淀下來(lái)的冷數(shù)據(jù)寫(xiě)入到Hot區(qū)內(nèi)按序從簇1到簇M-I中第一個(gè)可用的空白塊上;步驟82,將簇0上處理完之后的BU擦除,其擦除次數(shù)加1,對(duì)應(yīng)的BU進(jìn)入到簇1, 如果簇0上仍有待處理的BU,重復(fù)步驟81,如果簇0上已無(wú)待處理的BU,則進(jìn)入到步驟83 ;步驟83,更新各簇號(hào),簇N更新為簇N-l,N為從1到T-I的整數(shù);步驟84,將簇T-2上的垃圾塊擦除變成空白塊,相關(guān)的BU進(jìn)入到新的簇T_l。所述的磨損均衡方法進(jìn)一步包括步驟91,更新系統(tǒng)最大擦除次數(shù)max_wear為max_wear+l ;步驟92,重新計(jì)算窗口大小T ;步驟93,代入新的窗口大小值T,檢查Cold區(qū)的空白塊是否回到第二閾值TH之上,如果沒(méi)有則再次從步驟81開(kāi)始執(zhí)行,循環(huán)直到Cold區(qū)的空白塊回到TH上。本發(fā)明另一方面提供了一種基于動(dòng)態(tài)窗口管理的磨損均衡裝置,包括計(jì)算模塊,用于根據(jù)管理對(duì)象中BU的最大擦除次數(shù)maxjear和可擦除次數(shù)EC_ MAX 計(jì)算窗口最大允許偏離數(shù) Τ, T = f (life_remain),并且 life_remain = EC_MAX-max_wear ;分組模塊,用于依據(jù)各BU相對(duì)最小擦除次數(shù)的偏離值將管理對(duì)象中的BU分為0 到T-I共T簇,具有相同擦除偏離值的BU位于同一簇內(nèi),以M值表示冷熱數(shù)據(jù)的分界值,并且M初始值位于窗口中間;均衡模塊,用于根據(jù)寫(xiě)入數(shù)據(jù)的屬性控制窗口的移動(dòng),當(dāng)窗口的移動(dòng)受限制于最低端時(shí),M值將加1,以便有更多的空間來(lái)承載熱數(shù)據(jù),當(dāng)窗口的移動(dòng)受制于最高端時(shí),M值將減1,以提供更多的空間來(lái)承載冷數(shù)據(jù)。其中所述均衡模塊包括檢測(cè)模塊,用于檢測(cè)各個(gè)簇上BU內(nèi)的數(shù)據(jù)的屬性;比較模塊,用于比較Hot區(qū)/Cold區(qū)的可用空白塊與其各自的閾值;與所述檢測(cè)模塊和比較模塊連接的寫(xiě)入模塊,用于在檢測(cè)到簇0上的BU內(nèi)的熱數(shù)據(jù)沉淀成冷數(shù)據(jù),并且Hot區(qū)的可用空白塊低于第一閾值TL時(shí)將簇0上沉淀的冷數(shù)據(jù)寫(xiě)入到Cold區(qū)內(nèi)按序從簇M到簇T-I中第一個(gè)可用的空白塊上,以及在檢測(cè)到簇T-I上的BU 內(nèi)的冷數(shù)據(jù)轉(zhuǎn)變?yōu)槔鴶?shù)據(jù),并且Cold區(qū)的可用空白塊低于第二閾值TH時(shí)將簇0上的數(shù)據(jù)寫(xiě)入到Hot區(qū)從簇1到簇M-I中第一個(gè)可用的空白塊中;以及垃圾回收模塊,用于對(duì)Hot區(qū)/Cold區(qū)執(zhí)行垃圾回收。在一個(gè)實(shí)施方式中,所述垃圾回收模塊包括冷數(shù)據(jù)處理模塊,用于將簇0上沉淀下來(lái)的冷數(shù)據(jù)寫(xiě)入到Cold區(qū)內(nèi)按序從簇M到簇T-I中第一個(gè)可用的空白塊上;第一擦除模塊,用于將簇0上處理完之后的BU擦除,對(duì)應(yīng)的BU的擦除次數(shù)加1,并且所述對(duì)應(yīng)的BU進(jìn)入到簇1 ;簇號(hào)更新模塊,用于更新各簇號(hào),簇N更新為簇N-l,N為從1到T-I的整數(shù)。在另一實(shí)施方式中,所述垃圾回收模塊包括數(shù)據(jù)處理模塊,用于將簇0上的數(shù)據(jù)寫(xiě)入到Hot區(qū)內(nèi)按序從簇1到簇M-I中第一個(gè)可用的空白塊上;第一擦除模塊,用于將簇0上處理完之后的BU擦除,對(duì)應(yīng)的BU的擦除次數(shù)加1,并且所述對(duì)應(yīng)的BU進(jìn)入到簇1 ;簇號(hào)更新模塊,用于更新各簇號(hào),簇N更新為簇N-l,N為從1到T_1的整數(shù);第二擦除模塊,用于將簇T-2上的垃圾塊擦除變成空白塊,相關(guān)的BU進(jìn)入到新的簇 T-1。應(yīng)理解對(duì)本發(fā)明的前面的概括性描述和下面的詳細(xì)描述都是示例性和說(shuō)明性的, 意在提供對(duì)要求保護(hù)的本發(fā)明的進(jìn)一步說(shuō)明。
圖1是根據(jù)本發(fā)明實(shí)施方式的擦除次數(shù)最大允許偏離數(shù)T的線性關(guān)系示意圖;圖2是根據(jù)本發(fā)明實(shí)施方式的擦除次數(shù)最大允許偏離數(shù)T的非線性關(guān)系示意圖;圖3是根據(jù)本發(fā)明的實(shí)施方式對(duì)管理對(duì)象中各BU相對(duì)最小擦除次數(shù)的偏離值進(jìn)行分組的示意圖;圖4是根據(jù)本發(fā)明實(shí)施方式的主機(jī)端寫(xiě)操作示意圖5是根據(jù)本發(fā)明實(shí)施方式的Hot區(qū)剩余空白塊低于閾值TL,且簇0上有BU由熱數(shù)據(jù)變成冷數(shù)據(jù)的靜態(tài)磨損均衡方法示意圖;圖6是根據(jù)本發(fā)明實(shí)施方式的Hot區(qū)靜態(tài)磨損均衡方法流程圖;圖7是根據(jù)本發(fā)明實(shí)施方式的Cold區(qū)剩余空白塊低于閾值TH,且簇T-I上垃圾塊需要擦除時(shí)的靜態(tài)磨損均衡方法示意圖;圖8是根據(jù)本發(fā)明實(shí)施方式的Cold區(qū)靜態(tài)磨損均衡方法流程圖;圖9是根據(jù)本發(fā)明實(shí)施方式的磨損均衡裝置結(jié)構(gòu)圖。
具體實(shí)施例方式為便于說(shuō)明和理解,本發(fā)明中以目前常見(jiàn)的閃存單個(gè)邏輯單元(LUN)為管理對(duì)象,其內(nèi)包含有4096個(gè)擦除單元-物理塊(BU),每個(gè)BU可以被擦除5000次(EC_MAX),每個(gè)BU內(nèi)包含256個(gè)編程單元-物理頁(yè)(PU),每個(gè)PU可以被獨(dú)立讀寫(xiě),但是在其所在的BU 擦除后只能寫(xiě)1次。物理塊的狀態(tài)可分為如下四種壞塊,出廠標(biāo)識(shí)或者使用過(guò)程中產(chǎn)生的壞塊,不能繼續(xù)用于數(shù)據(jù)存儲(chǔ);空白塊,擦除后沒(méi)有被寫(xiě)入數(shù)據(jù)的物理塊;數(shù)據(jù)塊,包含有至少一個(gè)有效頁(yè)數(shù)據(jù)的物理塊;垃圾塊,所有頁(yè)都是無(wú)效數(shù)據(jù)的物理塊。在這四種狀態(tài)的物理塊中,除了壞塊外其他三種物理塊均是磨損均衡所要操作的對(duì)象。在內(nèi)存單元中維護(hù)管理對(duì)象中物理塊的最大擦除次數(shù)maxjear,并將該擦除次數(shù)記錄在掉電非易失性存儲(chǔ)設(shè)備中,以便掉電后恢復(fù)。有物理塊被擦除則檢查是否是簇T-I 上的BU被擦除,如果是,則更新此maX_wear,其他簇上的BU被擦除不影響最大擦除次數(shù)。在任意時(shí)間點(diǎn),定義管理對(duì)象內(nèi)物理塊擦除次數(shù)最大允許偏離數(shù)T滿足如下關(guān)系life_remain = EC_MAX-max_wear [1]T = f (life_remain)[2]其中函數(shù)f(life_remain)可以是根據(jù)需要的任一符合要求的表達(dá)式。優(yōu)選地可以采用但不局限于如下的實(shí)現(xiàn)形式1、線性關(guān)系,T = life_remain*r%[3]其中,r為可調(diào)系數(shù),取值為1-99,優(yōu)選地可為10,如圖1中所示。2、非線性關(guān)系,T = EC_MAX*r% *cos ( Π *max_wear/ (2*EC_MAX)) [4]其中,r為可調(diào)系數(shù),取值為1-99,優(yōu)選地可為10,隨著最大擦除次數(shù)的增長(zhǎng),窗口 T的大小的下降趨勢(shì)變快,從而對(duì)擦寫(xiě)次數(shù)的約束逐步加強(qiáng),如圖2所示。如圖3所示,依據(jù)各BU相對(duì)最小擦除次數(shù)的偏離值進(jìn)行分組,則可分為0到T-I 共T組,具有相同擦除偏離值的位于同一組內(nèi),這里定義為簇,對(duì)應(yīng)地存在以下情形所有管理對(duì)象內(nèi)的BU均位于其內(nèi)的任意一個(gè)簇內(nèi);某些偏離值上可能沒(méi)有對(duì)應(yīng)的BU ;在任意一個(gè)簇上都可能存在所管理的任意類(lèi)型的BU(數(shù)據(jù)塊、垃圾塊、空白塊、壞塊)。在圖3中,擦除次數(shù)偏低的BU用來(lái)存放經(jīng)常被更新的熱數(shù)據(jù);擦除次數(shù)偏高的BU 用來(lái)存放很少被更新的冷數(shù)據(jù)。冷熱數(shù)據(jù)的判斷有很多方式,優(yōu)選地,最近被復(fù)寫(xiě)次數(shù)較多
8的LBA(主機(jī)端SSD的最小可訪問(wèn)單元)內(nèi)所攜帶的數(shù)據(jù)為熱數(shù)據(jù),其余的數(shù)據(jù)為冷數(shù)據(jù)。冷熱數(shù)據(jù)的分界值以M表示,初始時(shí)刻M位于窗口中間(M= (T+l)/2, T為奇數(shù); M = T/2,T為偶數(shù)),隨著寫(xiě)入的數(shù)據(jù)序列的屬性M遵循如下的規(guī)則向左或向右偏移當(dāng)窗口的移動(dòng)受限制于最低端時(shí),M值將加1,這樣將有更多的空間來(lái)承載熱數(shù)據(jù);當(dāng)窗口的移動(dòng)受制于最高端時(shí),M值將減1,以提供更多的空間承載冷數(shù)據(jù)。當(dāng)主機(jī)端發(fā)起新的數(shù)據(jù)寫(xiě)操作時(shí),如圖4中所示,主機(jī)寫(xiě)入的數(shù)據(jù)經(jīng)過(guò)冷熱數(shù)據(jù)仲裁器后,分別寫(xiě)入到對(duì)應(yīng)區(qū)域的空白物理塊中。假設(shè)一個(gè)SSD盤(pán)總共有X個(gè)LBA,在固態(tài)硬盤(pán)內(nèi)存中維護(hù)Y個(gè)(Y遠(yuǎn)小于X,具體可根據(jù)內(nèi)存大小選擇,例如可選擇Y = x*2% ) LBA鏈,鏈上每個(gè)元素記錄對(duì)應(yīng)的LBA以及被復(fù)寫(xiě)的次數(shù),其在鏈中的位置代表其被復(fù)寫(xiě)的時(shí)間先后順序,鏈?zhǔn)椎腖BA寫(xiě)入時(shí)間最早、鏈尾的LBA寫(xiě)入時(shí)間最新。當(dāng)主機(jī)端新寫(xiě)入一個(gè)LBA時(shí),如果該LBA已經(jīng)在LBA鏈中,則將該 LBA寫(xiě)入次數(shù)加1,同時(shí)將該LBA移動(dòng)到鏈尾,如果該LBA不在LBA鏈中,并且鏈中元素已滿, 則將鏈?zhǔn)自馗鲁尚聦?xiě)入的該LBA并移動(dòng)到鏈尾,同時(shí)設(shè)置該LBA寫(xiě)入次數(shù)為1,如果該 LBA不在LBA鏈中,并且鏈中元素不滿,則設(shè)置該LBA寫(xiě)入次數(shù)為1,同時(shí)將該LBA添加到鏈尾。完成LBA插入鏈表后,冷熱數(shù)據(jù)仲裁器根據(jù)每個(gè)LBA的寫(xiě)入計(jì)數(shù)是否高于預(yù)定閾值來(lái)判定寫(xiě)入到該LBA的數(shù)據(jù),計(jì)數(shù)高于預(yù)定閾值則該LBA內(nèi)寫(xiě)入的數(shù)據(jù)為熱數(shù)據(jù)、計(jì)數(shù)低于預(yù)定閾值則該LBA內(nèi)寫(xiě)入的數(shù)據(jù)為冷數(shù)據(jù)。冷熱數(shù)據(jù)仲裁器對(duì)于冷熱數(shù)據(jù)的分離僅僅作用于主機(jī)端寫(xiě)入數(shù)據(jù)時(shí)。隨著時(shí)間的推移,冷熱數(shù)據(jù)仲裁器判定的熱數(shù)據(jù)因?yàn)楹芫脹](méi)有再被復(fù)寫(xiě),將轉(zhuǎn)化為冷數(shù)據(jù),需要使用靜態(tài)磨損均衡來(lái)將其上的有效數(shù)據(jù)搬遷到Cold Area上的空白物理塊中。冷熱數(shù)據(jù)的轉(zhuǎn)化是由其被復(fù)寫(xiě)更新的時(shí)機(jī)所推動(dòng)的,而冷熱數(shù)據(jù)處理的觸發(fā)時(shí)機(jī)由窗口的移動(dòng)來(lái)推動(dòng),在上述實(shí)施例中,位于低端簇O上的個(gè)別BU隨著時(shí)間的積累,由于一直保存有有效數(shù)據(jù)無(wú)法被擦除,代表此BU內(nèi)的數(shù)據(jù)在變冷;位于高端簇T-I上的部分BU因?yàn)閿?shù)據(jù)被復(fù)寫(xiě),變成無(wú)效數(shù)據(jù),代表相關(guān)數(shù)據(jù)變成了垃圾數(shù)據(jù)。在寫(xiě)入新數(shù)據(jù)時(shí),需要將新數(shù)據(jù)寫(xiě)入到空白物理頁(yè)中。隨著寫(xiě)入的數(shù)據(jù)量越來(lái)越多,某些BU內(nèi)部分PU中先前寫(xiě)入的數(shù)據(jù)因?yàn)楸粡?fù)寫(xiě)變成無(wú)效,對(duì)于此類(lèi)BU,因?yàn)槭S嘤行?shù)據(jù)的存在,不能對(duì)其直接擦除。當(dāng)系統(tǒng)中Hot Area或Cold Area中的空白塊低于各自的預(yù)定閾值后,將引發(fā)一次垃圾回收操作,即搜索有效PU數(shù)據(jù)最少的BU,將搜索到的多個(gè)BU內(nèi)的有效數(shù)據(jù)合并,然后擦除所述多個(gè)BU以釋放出可用空白塊,垃圾回收操作將增加所述多個(gè)BU的擦除次數(shù)。如圖5所示,對(duì)于HotArea的BU,預(yù)期是其能夠很快被主機(jī)端再次復(fù)寫(xiě),從而使得其內(nèi)的大部分PU變成無(wú)效數(shù)據(jù),并通過(guò)上述的垃圾回收,來(lái)保證Hot Area有足夠可用的空白塊來(lái)承接新寫(xiě)入的數(shù)據(jù)。但在某些情形下,經(jīng)冷熱數(shù)據(jù)仲裁器識(shí)別的熱數(shù)據(jù)寫(xiě)入到Hot 區(qū)后再?zèng)]有被更新過(guò),則其內(nèi)所有PU均有效,不會(huì)被垃圾回收操作選擇和合并,所以此類(lèi) BU 一直維持不被擦除,如圖5中實(shí)施例所示,簇O上的BU,此時(shí)由熱數(shù)據(jù)變成了冷數(shù)據(jù),當(dāng) Hot區(qū)的可用空白物理塊低于第一閾值TL時(shí)(受限于簇O上的冷數(shù)據(jù)的沉淀,也就是窗口低端沒(méi)有做移動(dòng)所引起),需要將簇O上的數(shù)據(jù)處理到Cold區(qū)域的空白物理塊中,同時(shí)對(duì) Hot區(qū)域執(zhí)行如上所述的垃圾回收,最后將M的值加1,以提供更多的空白塊給Hot區(qū)使用。此時(shí),如圖5中實(shí)施例所示,當(dāng)Hot區(qū)域的剩余空白塊低于閾值TL,且簇O上有BU 由熱數(shù)據(jù)變成冷數(shù)據(jù)時(shí),需要依次執(zhí)行如圖6中所示的靜態(tài)磨損均衡方法
步驟1,將簇0上沉淀下來(lái)的冷數(shù)據(jù)寫(xiě)入到Cold Area內(nèi)某個(gè)簇上的空白塊(按序從簇M到T-1,選擇第一個(gè)可用的空白物理塊)上;步驟2,將簇0上處理完之后的BU擦除,其擦除次數(shù)加1,對(duì)應(yīng)的BU進(jìn)入到簇1,如果簇0上仍有待處理的BU,重復(fù)步驟1),如果簇0上已無(wú)待處理的BU,則進(jìn)入到步驟3 ;步驟3,更新各簇號(hào),簇1更新為簇0,簇2更新為簇1,......,簇T-I更新為簇
T-2 ;步驟4,檢查Hot區(qū)的空白塊是否回到第一閾值TL之上,如果沒(méi)有則再次從步驟1 開(kāi)始執(zhí)行,循環(huán)直到Hot區(qū)的空白塊回到TL上結(jié)束本次靜態(tài)磨損均衡的處理。當(dāng)Cold區(qū)的可用空白塊低于第二閾值TH時(shí),如果垃圾塊處于簇M到T-2上,則將垃圾塊直接擦除并移動(dòng)到高一級(jí)簇,直到可用空白塊回到第二閾值TH之上。當(dāng)Cold區(qū)的可用空白塊低于第二閾值TH時(shí),如果是受限于簇T-I上BU內(nèi)數(shù)據(jù)轉(zhuǎn)變?yōu)槔鴶?shù)據(jù),也就是窗口高端無(wú)法移動(dòng)所引起,則需要將簇0上的數(shù)據(jù)處理到Hot區(qū)的空白物理塊中,同時(shí)對(duì)Hot/Cold區(qū)域分別執(zhí)行如上所述的垃圾回收,最后將M的值減1,以提供更多的空白塊給Cold區(qū)使用。對(duì)于Cold區(qū),例如圖7中實(shí)施例所示的簇T-I上的BU,其內(nèi)的PU的數(shù)據(jù)最近剛剛被主機(jī)復(fù)寫(xiě)過(guò),經(jīng)過(guò)垃圾回收后這些BU成為垃圾塊,如果直接對(duì)其進(jìn)行擦除的話,對(duì)應(yīng)BU的擦除次數(shù)加1,將導(dǎo)致與簇0上的擦除次數(shù)偏離大于此時(shí)的窗口大小T。此時(shí),如圖7所示,當(dāng)Cold區(qū)的剩余空白塊低于第二閾值TH,且簇T-I上因?yàn)橹鳈C(jī)端復(fù)寫(xiě)或者垃圾回收存在垃圾塊時(shí),在對(duì)這些垃圾塊進(jìn)行擦除前,需要依次執(zhí)行如圖8中所示的靜態(tài)磨損均衡方法步驟1,將簇0上的數(shù)據(jù)寫(xiě)入到Hot Area中簇1到簇M_1上的第一個(gè)可用空白塊上;步驟2,將簇0上處理完之后的BU擦除,其擦除次數(shù)加1,對(duì)應(yīng)的BU進(jìn)入到簇1,如果簇0上仍有待處理的BU,重復(fù)步驟1,如果簇0上已無(wú)待處理的BU,則進(jìn)入到步驟3 ;步驟3,更新各簇號(hào),簇1更新為簇0,簇2更新為簇1,......,簇T-I更新為簇
T-2 ;步驟4,將簇T-2上的垃圾塊擦除變成空白塊,相關(guān)的BU進(jìn)入到新的簇T_1 ;步驟5,更新系統(tǒng)最大擦除次數(shù)max_wear為max_wear+l ;步驟6,根據(jù)公式3或4重新計(jì)算窗口大小T ; 步驟7,代入新的窗口大小值T,檢查Co 1 d區(qū)的空白塊是否回到第二閾值TH之上, 如果沒(méi)有則再次從步驟1開(kāi)始執(zhí)行,循環(huán)直到Cold區(qū)的空白塊回到TH上結(jié)束本次靜態(tài)磨損均衡處理?;趧?dòng)態(tài)窗口管理的磨損均衡裝置包括計(jì)算模塊700,用于根據(jù)管理對(duì)象中BU的最大擦除次數(shù)maxjear和可擦除次數(shù) EC_MAX計(jì)算窗口最大允許偏離數(shù)T ;分組模塊710,用于依據(jù)各BU相對(duì)最小擦除次數(shù)的偏離值將管理對(duì)象中的BU分為 0到T-I共T簇,具有相同擦除偏離值的BU位于同一簇內(nèi),以M值表示冷熱數(shù)據(jù)的分界值, 并且M初始值位于窗口中間;均衡模塊720,用于根據(jù)寫(xiě)入數(shù)據(jù)的屬性控制窗口的移動(dòng),當(dāng)窗口的移動(dòng)受限制于最低端時(shí),M值將加1,以便有更多的空間來(lái)承載熱數(shù)據(jù),當(dāng)窗口的移動(dòng)受制于最高端時(shí),M 值將減1,以提供更多的空間來(lái)承載冷數(shù)據(jù)。參考圖9,均衡模塊包括檢測(cè)模塊,用于檢測(cè)各個(gè)簇上BU內(nèi)的數(shù)據(jù)的屬性;比較模塊,用于比較Hot區(qū)/Cold區(qū)的可用空白塊與其各自的閾值;與所述檢測(cè)模塊和比較模塊連接的寫(xiě)入模塊;以及垃圾回收模塊,用于對(duì)Hot/Cold區(qū)執(zhí)行垃圾回收。其中,在檢測(cè)到簇0上的BU內(nèi)的熱數(shù)據(jù)沉淀成冷數(shù)據(jù),并且Hot區(qū)的可用空白塊低于第一閾值TL時(shí),寫(xiě)入模塊將簇0上沉淀的冷數(shù)據(jù)寫(xiě)入到Cold區(qū)內(nèi)按序從簇M到簇T-I 中第一個(gè)可用的空白塊上。在檢測(cè)到簇T-I上的BU內(nèi)的冷數(shù)據(jù)轉(zhuǎn)變?yōu)槔鴶?shù)據(jù),并且Cold 區(qū)的可用空白塊低于第二閾值TH時(shí),寫(xiě)入模塊將簇0上的數(shù)據(jù)寫(xiě)入到Hot區(qū)的空白塊中。在本發(fā)明的一個(gè)實(shí)施方式中,垃圾回收模塊可包括冷數(shù)據(jù)處理模塊,用于將簇0 上沉淀下來(lái)的冷數(shù)據(jù)寫(xiě)入到Cold區(qū)內(nèi)按序從簇M到簇T-I中第一個(gè)可用的空白塊上;第一擦除模塊,用于將簇O上處理完之后的BU擦除,對(duì)應(yīng)的BU的擦除次數(shù)加1,并且所述對(duì)應(yīng)的BU進(jìn)入到簇1 ;簇號(hào)更新模塊,用于更新各簇號(hào),簇N更新為簇N-1,N為從1到T-I的整數(shù)。在本發(fā)明的另一個(gè)實(shí)施方式中,垃圾回收模塊可包括數(shù)據(jù)處理模塊,用于將簇O 上的數(shù)據(jù)寫(xiě)入到Hot區(qū)內(nèi)按序從簇1到簇M-I中第一個(gè)可用的空白塊上;第一擦除模塊,用于將簇O上處理完之后的BU擦除,對(duì)應(yīng)的BU的擦除次數(shù)加1,并且所述對(duì)應(yīng)的BU進(jìn)入到簇 1 ;簇號(hào)更新模塊,用于更新各簇號(hào),簇N更新為簇N-1,N為從1到T-I的整數(shù);以及第二擦除模塊,用于將簇T-2上的垃圾塊擦除變成空白塊,相關(guān)的BU進(jìn)入到新的簇T-1。本方案通過(guò)引入動(dòng)態(tài)窗口管理的磨損均衡方法,能夠?qū)τ谖锢韷K的擦除次數(shù)偏離作出合理,有效的控制;提供自我感知型的冷熱數(shù)據(jù)處理觸發(fā)時(shí)機(jī),在固態(tài)硬盤(pán)的不同生命周期中采用不同的擦除次數(shù)偏離控制窗口,在固態(tài)硬盤(pán)的生命周期早期提供一種寬松的控制窗口,對(duì)外提供極好的寫(xiě)入速度,而在固態(tài)硬盤(pán)的生命周期末期提供嚴(yán)格的控制窗口,延長(zhǎng)固態(tài)硬盤(pán)的使用壽命,在將磨損均分到全盤(pán)的同時(shí),降低整體的寫(xiě)放大,有效提高了固態(tài)硬盤(pán)的壽命。
權(quán)利要求
1.一種基于動(dòng)態(tài)窗口管理的磨損均衡方法,包括步驟1,根據(jù)管理對(duì)象中BU的最大擦除次數(shù)maX_wear和可擦除次數(shù)EC_MAX計(jì)算窗口最大允許偏離數(shù) Τ, T = f (life_remain),并且 life_remain = EC_MAX-max_wear ;步驟2,依據(jù)各BU相對(duì)最小擦除次數(shù)的偏離值進(jìn)行分組,將管理對(duì)象中的BU分為0到T-I共T簇,具有相同擦除偏離值的BU位于同一簇內(nèi),以M值表示冷熱數(shù)據(jù)的分界值,并且M初始值位于窗口中間;步驟3,M值隨著寫(xiě)入的數(shù)據(jù)的屬性而發(fā)生變化,當(dāng)窗口的移動(dòng)受限制于最低端時(shí),M值將加1,以便有更多的空間來(lái)承載熱數(shù)據(jù),當(dāng)窗口的移動(dòng)受制于最高端時(shí),M值將減1,以提供更多的空間來(lái)承載冷數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的磨損均衡方法,其特征在于,T = life_remain*r%,r 取值范圍為 1-99。
3.根據(jù)權(quán)利要求1所述的磨損均衡方法,其特征在于,T = EC_MAX*r% *cos( Π *max_wear/(2*EC_MAX)),r 取值范圍為 1-99。
4.根據(jù)權(quán)利要求1-3中任一所述的磨損均衡方法,其特征在于,步驟3包括當(dāng)簇0上的BU內(nèi)的熱數(shù)據(jù)沉淀成冷數(shù)據(jù),并且Hot區(qū)的可用空白塊低于第一閾值TL時(shí),將簇0上沉淀的冷數(shù)據(jù)寫(xiě)入到Cold區(qū)的空白塊中,同時(shí)對(duì)Hot區(qū)執(zhí)行垃圾回收,并將M的值加1。
5.根據(jù)權(quán)利要求4所述的磨損均衡方法,其特征在于,所述將簇0上沉淀的冷數(shù)據(jù)寫(xiě)入到Cold區(qū)的空白塊中,同時(shí)對(duì)Hot區(qū)執(zhí)行垃圾回收的步驟包括步驟61,將簇0上沉淀下來(lái)的冷數(shù)據(jù)寫(xiě)入到Cold區(qū)內(nèi)按序從簇M到簇T-I中第一個(gè)可用的空白塊上;步驟62,將簇0上處理完之后的BU擦除,其擦除次數(shù)加1,對(duì)應(yīng)的BU進(jìn)入到簇1,如果簇0上仍有待處理的BU,重復(fù)步驟61,如果簇0上已無(wú)待處理的BU,則進(jìn)入到步驟63 ;步驟63,更新各簇號(hào),簇N更新為簇N-l,N為從1到T-I的整數(shù)。
6.根據(jù)權(quán)利要求5所述的磨損均衡方法,其特征在于,進(jìn)一步包括檢查Hot區(qū)的可用空白塊是否回到第一閾值TL之上,如果沒(méi)有則再次從步驟61開(kāi)始執(zhí)行,循環(huán)直到Hot區(qū)的可用空白塊回到TL上。
7.根據(jù)權(quán)利要求1-3中任一所述的磨損均衡方法,其特征在于,步驟3包括當(dāng)簇T-I上的BU內(nèi)的冷數(shù)據(jù)轉(zhuǎn)變?yōu)槔鴶?shù)據(jù),并且Cold區(qū)的可用空白塊低于第二閾值TH時(shí),將簇0上的數(shù)據(jù)寫(xiě)入到Hot區(qū)的空白塊中,同時(shí)對(duì)Hot/Cold區(qū)執(zhí)行垃圾回收,并將M的值減1。
8.根據(jù)權(quán)利要求7所述的磨損均衡方法,其特征在于,所述將簇0上的數(shù)據(jù)寫(xiě)入到Hot區(qū)的空白塊中,同時(shí)對(duì)Hot/Cold區(qū)執(zhí)行垃圾回收的步驟包括步驟81,將簇0上沉淀下來(lái)的冷數(shù)據(jù)寫(xiě)入到Hot區(qū)內(nèi)按序從簇1到簇M-I中第一個(gè)可用的空白塊上;步驟82,將簇0上處理完之后的BU擦除,其擦除次數(shù)加1,對(duì)應(yīng)的BU進(jìn)入到簇1,如果簇0上仍有待處理的BU,重復(fù)步驟81,如果簇0上已無(wú)待處理的BU,則進(jìn)入到步驟83 ;步驟83,更新各簇號(hào),簇N更新為簇N-I,N為從1到T-I的整數(shù);步驟84,將簇T-2上的垃圾塊擦除變成空白塊,相關(guān)的BU進(jìn)入到新的簇T-I。
9.根據(jù)權(quán)利要求8所述的磨損均衡方法,其特征在于,進(jìn)一步包括步驟91,更新系統(tǒng)最大擦除次數(shù)maxjear為maxjear+l ;步驟92,重新計(jì)算窗口大小T ;步驟93,代入新的窗口大小值T,檢查Cold區(qū)的空白塊是否回到第二閾值TH之上,如果沒(méi)有則再次從步驟81開(kāi)始執(zhí)行,循環(huán)直到Cold區(qū)的空白塊回到TH上。
10.根據(jù)權(quán)利要求2或3所述的磨損均衡方法,其特征在于,r為10。
11.一種基于動(dòng)態(tài)窗口管理的磨損均衡裝置,包括計(jì)算模塊,用于根據(jù)管理對(duì)象中BU的最大擦除次數(shù)maX_wear和可擦除次數(shù)EC_MAX計(jì)算窗口最大允許偏離數(shù) Τ, T = f (life_remain),并且 life_remain = EC_MAX-max_wear ;分組模塊,用于依據(jù)各BU相對(duì)最小擦除次數(shù)的偏離值將管理對(duì)象中的BU分為0到T-I共T簇,具有相同擦除偏離值的BU位于同一簇內(nèi),以M值表示冷熱數(shù)據(jù)的分界值,并且M初始值位于窗口中間;均衡模塊,用于根據(jù)寫(xiě)入數(shù)據(jù)的屬性控制窗口的移動(dòng),當(dāng)窗口的移動(dòng)受限制于最低端時(shí),M值將加1,以便有更多的空間來(lái)承載熱數(shù)據(jù),當(dāng)窗口的移動(dòng)受制于最高端時(shí),M值將減1,以提供更多的空間來(lái)承載冷數(shù)據(jù)。
12.根據(jù)權(quán)利要求11所述的磨損均衡裝置,其特征在于,T = life_remain*r%,r 取值范圍為 1-99。
13.根據(jù)權(quán)利要求11所述的磨損均衡裝置,其特征在于,T = EC_MAX*r% *cos( Π *max_wear/(2*EC_MAX)),r 取值范圍為 1-99。
14.根據(jù)權(quán)利要求12或13所述的磨損均衡裝置,其特征在于,r為10。
15.根據(jù)權(quán)利要求11所述的磨損均衡裝置,其特征在于,所述均衡模塊包括檢測(cè)模塊,用于檢測(cè)各個(gè)簇上BU內(nèi)的數(shù)據(jù)的屬性;比較模塊,用于比較Hot區(qū)/Cold區(qū)的可用空白塊與其各自的閾值;與所述檢測(cè)模塊和比較模塊連接的寫(xiě)入模塊,用于在檢測(cè)到簇0上的BU內(nèi)的熱數(shù)據(jù)沉淀成冷數(shù)據(jù),并且Hot區(qū)的可用空白塊低于第一閾值TL時(shí)將簇0上沉淀的冷數(shù)據(jù)寫(xiě)入到Cold區(qū)內(nèi)按序從簇M到簇T-I中第一個(gè)可用的空白塊上,以及在檢測(cè)到簇T-I上的BU內(nèi)的冷數(shù)據(jù)轉(zhuǎn)變?yōu)槔鴶?shù)據(jù),并且Cold區(qū)的可用空白塊低于第二閾值TH時(shí)將簇O上的數(shù)據(jù)寫(xiě)入到Hot區(qū)從簇1到簇M-I中第一個(gè)可用的空白塊中;以及垃圾回收模塊,用于對(duì)Hot區(qū)/Co 1 d區(qū)執(zhí)行垃圾回收。
16.根據(jù)權(quán)利要求15所述的磨損均衡裝置,其特征在于,所述垃圾回收模塊包括冷數(shù)據(jù)處理模塊,用于將簇O上沉淀下來(lái)的冷數(shù)據(jù)寫(xiě)入到Cold區(qū)內(nèi)按序從簇M到簇T-I中第一個(gè)可用的空白塊上;第一擦除模塊,用于將簇O上處理完之后的BU擦除,對(duì)應(yīng)的BU的擦除次數(shù)加1,并且所述對(duì)應(yīng)的BU進(jìn)入到簇1;簇號(hào)更新模塊,用于更新各簇號(hào),簇N更新為簇N-l,N為從1到T-I的整數(shù)。
17.根據(jù)權(quán)利要求15所述的磨損均衡裝置,其特征在于,所述垃圾回收模塊包括數(shù)據(jù)處理模塊,用于將簇O上的數(shù)據(jù)寫(xiě)入到Hot區(qū)內(nèi)按序從簇1到簇M-I中第一個(gè)可用的空白塊上;第一擦除模塊,用于將簇O上處理完之后的BU擦除,對(duì)應(yīng)的BU的擦除次數(shù)加1,并且所述對(duì)應(yīng)的BU進(jìn)入到簇1 ;簇號(hào)更新模塊,用于更新各簇號(hào),簇N更新為簇N-I,N為從1到T-I的整數(shù);第二擦除模塊,用于將簇T-2上的垃圾塊擦除變成空白塊,相關(guān)的BU進(jìn)入到新的簇T-I。
全文摘要
本發(fā)明公開(kāi)了一種基于動(dòng)態(tài)窗口管理的磨損均衡方法及裝置,該方法包括步驟1,根據(jù)管理對(duì)象中BU的最大擦除次數(shù)max_wear和可擦除次數(shù)EC_MAX計(jì)算窗口最大允許偏離數(shù)T,T=f(life_remain),并且life_remain=EC_MAX-max_wear;步驟2,依據(jù)各BU相對(duì)最小擦除次數(shù)的偏離值進(jìn)行分組,將管理對(duì)象中的BU分為0到T-1共T簇,具有相同擦除偏離值的BU位于同一簇內(nèi),以M值表示冷熱數(shù)據(jù)的分界值,并且M初始值位于窗口中間;步驟3,M值隨著寫(xiě)入的數(shù)據(jù)的屬性而發(fā)生變化,當(dāng)窗口的移動(dòng)受限制于最低端時(shí),M值將加1,以便有更多的空間來(lái)承載熱數(shù)據(jù),當(dāng)窗口的移動(dòng)受制于最高端時(shí),M值將減1,以提供更多的空間來(lái)承載冷數(shù)據(jù)。
文檔編號(hào)G06F12/02GK102592678SQ201110456088
公開(kāi)日2012年7月18日 申請(qǐng)日期2011年12月30日 優(yōu)先權(quán)日2011年12月30日
發(fā)明者王猛 申請(qǐng)人:記憶科技(深圳)有限公司