本發(fā)明涉及存儲(chǔ)技術(shù)領(lǐng)域,尤其涉及一種固態(tài)存儲(chǔ)靜態(tài)磨損均衡的實(shí)現(xiàn)方法。
背景技術(shù):
現(xiàn)在多數(shù)固態(tài)存儲(chǔ)器的閃存轉(zhuǎn)換層ftl(flashtranslationlayer)多數(shù)使用的是映射較為靈活的頁(yè)映射。由于nand的每個(gè)塊的擦除次數(shù)(p\ecycle)有限,為了更好的延長(zhǎng)固態(tài)存儲(chǔ)設(shè)備的壽命,就要求nand的每個(gè)塊的擦除次數(shù)都能保持在同一水平,所以固態(tài)存儲(chǔ)設(shè)備都會(huì)盡量去使用擦數(shù)次數(shù)小的塊來(lái)寫入數(shù)據(jù),以增加它的磨損機(jī)會(huì),這是動(dòng)態(tài)的磨損均衡。圖1是冷數(shù)據(jù)和熱數(shù)據(jù)的ec變化圖,由于用戶寫入的數(shù)據(jù)有一部分是colddata冷數(shù)據(jù)(不經(jīng)常被更新),另一部分是hotdata熱數(shù)據(jù)(經(jīng)常被更新),這樣有冷數(shù)據(jù)一直占據(jù)著某些塊,隨著其他塊被熱數(shù)據(jù)頻繁更新而擦除次數(shù)ec在增加,而冷數(shù)據(jù)的塊基本保持不變,這些裝有冷數(shù)據(jù)的塊就會(huì)和其他塊在擦數(shù)次數(shù)有較大差距,動(dòng)態(tài)的磨損均衡也就起不到作用,這就需要靜態(tài)磨損均衡模塊,來(lái)對(duì)這些塊進(jìn)行處理以達(dá)到磨損均衡。
現(xiàn)有的磨損均衡算法有隨機(jī)性的和確定性的。隨機(jī)性的磨損均衡算法從統(tǒng)計(jì)學(xué)角度出發(fā),使得在大量數(shù)據(jù)寫入之后塊的磨損情況是均衡的。雖然實(shí)現(xiàn)方法簡(jiǎn)單,執(zhí)行效率高,但其均衡效果受到隨機(jī)性影響因素太明顯,對(duì)于降低寫放大以及延長(zhǎng)壽命的效果都比較一般。確定性磨損均衡算法通過(guò)記錄數(shù)據(jù)存放時(shí)長(zhǎng)以及擦除次數(shù)等全局信息,明確給出磨損均衡的策略,磨損均衡效果比較好。確定性算法有一種思路,當(dāng)某些塊達(dá)到一定的擦除次數(shù),就被保護(hù)起來(lái)不再擦除,等待其他塊的擦除次數(shù)追上來(lái),這樣,雖然可以達(dá)到磨損均衡的目的,但是垃圾回收效率低下,寫放大增加。另一種思路,在垃圾回收時(shí),通過(guò)權(quán)衡塊中有效頁(yè)數(shù)量和塊的擦除次數(shù)來(lái)選取需要回收的塊,缺點(diǎn)是策略簡(jiǎn)單的效果不好,策略復(fù)雜的計(jì)算時(shí)間太長(zhǎng),影響性能。還有一種思路,就是劃分冷、熱數(shù)據(jù),現(xiàn)有的這類方法大都會(huì)在塊的擦除次數(shù)偏差到達(dá)一定程度時(shí),觸發(fā)冷熱數(shù)據(jù)塊的數(shù)據(jù)交換,然后將擦除次數(shù)大的冷數(shù)據(jù)塊保護(hù)起來(lái)避免擦除,之后再不斷地調(diào)整冷熱數(shù)據(jù)的劃分。這類方法的缺點(diǎn)是對(duì)冷、熱數(shù)據(jù)劃分不清晰,策略比較復(fù)雜,交換冷、熱數(shù)據(jù)塊的寫放大比較大等。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)以上缺陷,本發(fā)明目的在于如何實(shí)現(xiàn)磨損均衡,更加有效的延長(zhǎng)固態(tài)存儲(chǔ)設(shè)備的使用壽命。
為了實(shí)現(xiàn)上述目的,本發(fā)明提供了一種固態(tài)存儲(chǔ)靜態(tài)磨損均衡的實(shí)現(xiàn)方法,其特征在于將固態(tài)存儲(chǔ)中存儲(chǔ)的數(shù)據(jù)區(qū)分為冷數(shù)據(jù)和熱數(shù)據(jù),記錄固態(tài)存儲(chǔ)各個(gè)塊的擦除次數(shù)ec值,按照如下方式進(jìn)行均衡操作:當(dāng)存放冷數(shù)據(jù)所在的塊的擦除次數(shù)小于預(yù)先設(shè)定的可釋放閾值時(shí),在當(dāng)前空閑或冷數(shù)據(jù)寫入點(diǎn)塊中選取擦除次數(shù)已經(jīng)超過(guò)預(yù)先設(shè)定的冷數(shù)據(jù)數(shù)據(jù)可搬入閾值的塊,將存放冷數(shù)據(jù)的塊的數(shù)據(jù)搬移到選取的空閑塊或者冷數(shù)據(jù)寫入點(diǎn)塊中。
所述的固態(tài)存儲(chǔ)靜態(tài)磨損均衡的實(shí)現(xiàn)方法,其特征在于嚴(yán)格定義冷數(shù)據(jù)和熱數(shù)據(jù),所有主機(jī)新寫入數(shù)據(jù)或更新的數(shù)據(jù)都定義為熱數(shù)據(jù);當(dāng)數(shù)據(jù)在超過(guò)預(yù)先設(shè)定的冷卻時(shí)間內(nèi)不存在任何主機(jī)更新數(shù)據(jù)的操作,則將該塊定義為冷數(shù)據(jù)。
所述的固態(tài)存儲(chǔ)靜態(tài)磨損均衡的實(shí)現(xiàn)方法,其特征在于周期性的觸發(fā)磨損均衡檢查操作。
本發(fā)明通過(guò)對(duì)冷、熱數(shù)據(jù)的嚴(yán)格區(qū)分,更加清晰的規(guī)定了靜態(tài)磨損均衡做的工作,盡可能地避免了數(shù)據(jù)的無(wú)效搬移,減少寫放大,使得磨損均衡更加有效地達(dá)到延長(zhǎng)固態(tài)存儲(chǔ)設(shè)備壽命的目的。
附圖說(shuō)明
圖1是靜態(tài)磨損均衡原理圖;
圖2是冷數(shù)據(jù)和熱數(shù)據(jù)相互轉(zhuǎn)換狀態(tài)圖;
圖3是磨損均衡狀態(tài)轉(zhuǎn)換示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
圖2是冷數(shù)據(jù)和熱數(shù)據(jù)相互轉(zhuǎn)換狀態(tài)圖;所有主機(jī)新寫入數(shù)據(jù)或更新數(shù)據(jù)都定義為熱數(shù)據(jù);當(dāng)數(shù)據(jù)在超過(guò)預(yù)先設(shè)定的冷卻時(shí)間內(nèi)不存在任何主機(jī)更新數(shù)據(jù)的操作,則將該塊定義為冷數(shù)據(jù)。
熱數(shù)據(jù)具體包括:
1)第一次寫入固態(tài)存儲(chǔ)器操作2a,且沒有超過(guò)預(yù)先設(shè)定的“冷卻時(shí)間”的數(shù)據(jù);
2)“冷卻時(shí)間”未到,又就被更新操作的新的數(shù)據(jù);
3)“冷卻時(shí)間”未到,因?yàn)槔厥詹僮骰蛘呔獠僮鞫M(jìn)行內(nèi)部數(shù)據(jù)搬移,搬移后的數(shù)據(jù);
4)冷數(shù)據(jù)被更新操作2c之后,且“冷卻時(shí)間”未到的數(shù)據(jù)。
冷數(shù)據(jù)具體包括:
1)熱數(shù)據(jù)達(dá)到預(yù)先設(shè)定的“冷卻時(shí)間”(稱為冷卻2b)后的數(shù)據(jù);
2)冷數(shù)據(jù)因?yàn)槔厥詹僮骰蛘呔獠僮鞫M(jìn)行內(nèi)部數(shù)據(jù)搬移,搬移后的數(shù)據(jù)冷數(shù)據(jù)。
按照以上原則進(jìn)行數(shù)據(jù)劃分操作帶來(lái)的特點(diǎn)是:數(shù)據(jù)變冷之后就無(wú)法變熱,除非被更新;數(shù)據(jù)一旦被更新就變?yōu)闊釘?shù)據(jù),直到數(shù)據(jù)“冷卻”;熱數(shù)據(jù)被搬移后依然是熱數(shù)據(jù),冷數(shù)據(jù)被搬移后依然是冷數(shù)據(jù)。
圖1是靜態(tài)磨損均衡原理圖。ftl內(nèi)部搬移操作,如垃圾回收,會(huì)根據(jù)冷數(shù)據(jù)和熱數(shù)據(jù)的類型進(jìn)行分類回收;在這樣的策略下,會(huì)使得冷熱數(shù)據(jù)的逐漸分離,冷數(shù)據(jù)會(huì)聚集到一些數(shù)據(jù)塊中,而熱數(shù)據(jù)會(huì)聚集到另外一些數(shù)據(jù)塊中,有利于減少寫放大。
當(dāng)冷、熱數(shù)據(jù)逐漸分離,一些存放冷數(shù)據(jù)的塊就不會(huì)被垃圾回收,不會(huì)被擦除,擦除次數(shù)不增長(zhǎng),導(dǎo)致在寫入數(shù)據(jù)一段時(shí)間后,它的ec值和所有塊的ec最大值的偏差會(huì)超過(guò)既定的閾值。
檢索當(dāng)前存放冷數(shù)據(jù)所在的塊中選取擦除次數(shù)小于預(yù)先設(shè)定的可釋放閾值,將其定義為磨損均衡冷數(shù)據(jù)源塊,尋找源塊按照如下具體方法進(jìn)行:用
檢索當(dāng)前空閑或冷數(shù)據(jù)寫入點(diǎn)塊中選取擦除次數(shù)已經(jīng)超過(guò)預(yù)先設(shè)定的冷數(shù)據(jù)可搬入閾值的塊,將其定義為磨損均衡目標(biāo)數(shù)據(jù)塊,尋找均衡目標(biāo)數(shù)據(jù)塊按照如下具體方法進(jìn)行:
ecwpb表示待評(píng)估的寫入點(diǎn)塊的ec值,
當(dāng)vpcsrc≤fpcwpb且
或者當(dāng)vpcsrc≤fpcwpb且
或者當(dāng)vpcsrc>fpcwpb、
或者當(dāng)vpcsrc>fpcwpb、
圖3是磨損均衡狀態(tài)轉(zhuǎn)換示意圖,可以根據(jù)是否找到冷數(shù)據(jù)源塊和目標(biāo)數(shù)據(jù)塊是否滿足要求,將靜態(tài)磨損均衡模塊的狀態(tài)分為三種:
空閑狀態(tài):檢索沒有找不到冷數(shù)據(jù)源塊;
工作狀態(tài):找到冷數(shù)據(jù)源塊和找到目標(biāo)數(shù)據(jù)塊,且目標(biāo)數(shù)據(jù)塊滿足要求,進(jìn)行數(shù)據(jù)交換操作或搬移操作;
等待狀態(tài):找到冷數(shù)據(jù)源塊,但目標(biāo)數(shù)據(jù)塊不滿足要求。
空閑狀態(tài)的狀態(tài)轉(zhuǎn)換由周期性的檢查,檢索是否有滿足條件的冷數(shù)據(jù)源塊來(lái)驅(qū)動(dòng),當(dāng)檢索無(wú)冷數(shù)據(jù)源塊5a,則繼續(xù)維持空閑狀態(tài);如果找到冷數(shù)據(jù)源塊和找到目標(biāo)數(shù)據(jù)塊,且目標(biāo)數(shù)據(jù)塊滿足要求5c,則轉(zhuǎn)入工作狀態(tài),如果找到冷數(shù)據(jù)源塊,但目標(biāo)數(shù)據(jù)塊不滿足要求5h。
工作狀態(tài)的狀態(tài)轉(zhuǎn)換由每次搬移完成一個(gè)冷數(shù)據(jù)塊之后的檢查來(lái)驅(qū)動(dòng);當(dāng)找到后續(xù)的冷數(shù)據(jù)源塊和找到目標(biāo)數(shù)據(jù)塊,且目標(biāo)數(shù)據(jù)塊滿足要求5d,則繼續(xù)維持工作狀態(tài);如果找到后續(xù)的冷數(shù)據(jù)源塊,但目標(biāo)數(shù)據(jù)塊不滿足要求5e,則轉(zhuǎn)入等待狀態(tài);如果檢索無(wú)后續(xù)的滿足條件的冷數(shù)據(jù)源塊,則轉(zhuǎn)入空閑狀態(tài)。
等待狀態(tài)的狀態(tài)轉(zhuǎn)換由周期性的檢查是否有滿足條件的目標(biāo)塊來(lái)驅(qū)動(dòng)。檢索當(dāng)找到找到目標(biāo)數(shù)據(jù)塊,且目標(biāo)數(shù)據(jù)塊滿足要求5f,則繼續(xù)轉(zhuǎn)入工作狀態(tài);如果找到后續(xù)的冷數(shù)據(jù)源塊,但目標(biāo)數(shù)據(jù)塊不滿足要求5e,則維持等待狀態(tài)。
以上所揭露的僅為本發(fā)明一種實(shí)施例而已,當(dāng)然不能以此來(lái)限定本之權(quán)利范圍,本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例的全部或部分流程,并依本發(fā)明權(quán)利要求所作的等同變化,仍屬于本發(fā)明所涵蓋的范圍。