本發(fā)明涉及閃存存儲(chǔ)技術(shù)領(lǐng)域,特別涉及閃存存儲(chǔ)系統(tǒng)中數(shù)據(jù)緩沖區(qū)置換方法。
背景技術(shù):
閃存具有存取速度快、功耗低、集成度高和抗震能力好等優(yōu)點(diǎn)。近年來隨著閃存技術(shù)的發(fā)展,閃存介質(zhì)價(jià)格下降,閃存被廣泛運(yùn)用在消費(fèi)電子、企業(yè)級(jí)服務(wù)器和數(shù)據(jù)中心等領(lǐng)域。
緩沖區(qū)是介于外存和內(nèi)存之間的一個(gè)數(shù)據(jù)緩沖單元,主要用于計(jì)算機(jī)系統(tǒng)中低速外存和高速內(nèi)存之間的速度匹配,提高計(jì)算機(jī)系統(tǒng)的整體性能。在閃存存儲(chǔ)系統(tǒng)中,閃存數(shù)據(jù)緩沖區(qū)設(shè)計(jì)相對(duì)于傳統(tǒng)磁盤存儲(chǔ)系統(tǒng)的數(shù)據(jù)緩沖區(qū)設(shè)計(jì)有諸多不同。在磁盤中,對(duì)磁盤的讀操作和寫操作延遲相差不大,因此不需要區(qū)別對(duì)待緩沖區(qū)中的臟數(shù)據(jù)頁和非臟數(shù)據(jù)頁,僅需要考慮如何將最不常用的數(shù)據(jù)頁換出緩沖區(qū)即可。然而,閃存介質(zhì)的讀寫操作開銷不一致,寫操作開銷往往是讀操作開銷的數(shù)倍。當(dāng)緩沖區(qū)內(nèi)的被修改過的臟數(shù)據(jù)頁需要換出時(shí),就需要將該臟數(shù)據(jù)頁寫回外存中;而對(duì)非臟數(shù)據(jù)頁則可直接丟棄,不需要寫回。因此,臟數(shù)據(jù)頁的換出開銷往往是非臟數(shù)據(jù)頁換出開銷的數(shù)倍。此外,寫操作還會(huì)消耗閃存有限的擦寫次數(shù),因此頻繁的寫回閃存會(huì)對(duì)閃存的壽命和可靠性造成負(fù)面影響。所以,閃存數(shù)據(jù)緩沖區(qū)要區(qū)別對(duì)待臟數(shù)據(jù)頁和非臟數(shù)據(jù)頁的換出,考慮臟數(shù)據(jù)頁換出對(duì)閃存造成的性能和壽命影響,盡量避免數(shù)據(jù)頁寫回操作。
針對(duì)上述問題,本發(fā)明提出新型的基于數(shù)據(jù)頁訪問間隔的兩級(jí)閃存緩沖區(qū)置換方法,根據(jù)數(shù)據(jù)頁的重用距離,區(qū)分冷熱數(shù)據(jù)頁,將所有數(shù)據(jù)頁分為冷臟數(shù)據(jù)頁、熱臟數(shù)據(jù)頁、冷非臟數(shù)據(jù)頁和熱非臟數(shù)據(jù)頁,并優(yōu)先換出非臟的冷數(shù)據(jù)頁,在保證閃存命中率的同時(shí),減少由于臟數(shù)據(jù)頁換出而造成的閃存數(shù)據(jù)寫回操作,從而減少對(duì)閃存性能和壽命的負(fù)面影響。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提供一種基于頁面訪問間隔的閃存數(shù)據(jù)緩沖區(qū)置換方法,解決如何設(shè)計(jì)適用于閃存存儲(chǔ)系統(tǒng)的數(shù)據(jù)緩沖區(qū)機(jī)制,如何根據(jù)閃存介質(zhì)的存取特性,針對(duì)性的設(shè)計(jì)能夠減少閃存數(shù)據(jù)緩沖區(qū)中臟數(shù)據(jù)頁換出而導(dǎo)致的閃存寫回的緩沖區(qū)置換方法。本發(fā)明通過設(shè)計(jì)基于數(shù)據(jù)頁訪問間隔的閃存兩級(jí)緩沖區(qū),分離冷熱數(shù)據(jù)頁,并通過優(yōu)先換出冷的非臟數(shù)據(jù)頁,減少由于臟數(shù)據(jù)頁換出而造成的閃存數(shù)據(jù)寫回操作,從而提高閃存系統(tǒng)的性能和壽命。
本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的:
本發(fā)明基于頁面的訪問間隔,將數(shù)據(jù)頁分為熱數(shù)據(jù)頁和冷數(shù)據(jù)頁,通過優(yōu)先換出冷非臟數(shù)據(jù)頁,在保證緩沖區(qū)命中率的同時(shí)減少由于臟數(shù)據(jù)頁寫回而導(dǎo)致的閃存寫操作,從而提高閃存系統(tǒng)的性能和壽命。
本發(fā)明采取一種基于頁面訪問間隔的閃存數(shù)據(jù)緩沖區(qū)置換方法,方法的步驟包括:
步驟1:對(duì)請(qǐng)求的數(shù)據(jù)頁,在閃存數(shù)據(jù)緩沖區(qū)中檢索目標(biāo)數(shù)據(jù)頁;
步驟2:閃存數(shù)據(jù)緩沖區(qū)分為一級(jí)數(shù)據(jù)緩沖區(qū)和二級(jí)數(shù)據(jù)緩沖區(qū);一級(jí)數(shù)據(jù)緩沖區(qū)和二級(jí)數(shù)據(jù)緩沖區(qū)以lru鏈表形式組織數(shù)據(jù)頁,每一個(gè)lru鏈表結(jié)點(diǎn)是一個(gè)數(shù)據(jù)頁數(shù)據(jù)頁;將緩沖區(qū)內(nèi)緩存的所有數(shù)據(jù)頁分為熱臟數(shù)據(jù)頁、冷臟數(shù)據(jù)頁、熱非臟數(shù)據(jù)頁、冷非臟數(shù)據(jù)頁,使用不同標(biāo)志位進(jìn)行標(biāo)記,其中熱數(shù)據(jù)頁數(shù)量隨著一級(jí)數(shù)據(jù)緩沖區(qū)和二級(jí)數(shù)據(jù)緩沖區(qū)的相對(duì)大小動(dòng)態(tài)變化,當(dāng)一級(jí)數(shù)據(jù)緩沖區(qū)較大時(shí),減少熱數(shù)據(jù)頁數(shù)量,當(dāng)一級(jí)數(shù)據(jù)緩沖區(qū)較小時(shí),增加熱數(shù)據(jù)頁數(shù)量。
步驟3:若一級(jí)數(shù)據(jù)緩沖區(qū)內(nèi)的冷數(shù)據(jù)頁被命中時(shí),無論其臟或非臟,由于其訪問間隔小于一級(jí)數(shù)據(jù)緩沖區(qū)的最后一個(gè)熱數(shù)據(jù)頁,因此,將發(fā)生冷熱數(shù)據(jù)頁轉(zhuǎn)換;
優(yōu)選地,在冷熱數(shù)據(jù)頁轉(zhuǎn)換時(shí),命中的冷數(shù)據(jù)頁會(huì)被轉(zhuǎn)換為熱數(shù)據(jù)頁,一級(jí)數(shù)據(jù)緩沖區(qū)尾部的熱數(shù)據(jù)頁會(huì)被轉(zhuǎn)換為冷數(shù)據(jù)頁,同時(shí),還會(huì)將一級(jí)數(shù)據(jù)緩沖區(qū)尾部的所有冷數(shù)據(jù)頁移動(dòng)到二級(jí)數(shù)據(jù)緩沖區(qū)首部,這是因?yàn)檫@些冷數(shù)據(jù)頁的訪問間隔均比一級(jí)數(shù)據(jù)緩沖區(qū)尾部的熱數(shù)據(jù)頁要大,因此沒有機(jī)會(huì)轉(zhuǎn)換為熱數(shù)據(jù)頁;
步驟4:緩沖區(qū)內(nèi)命中的數(shù)據(jù)頁,無論是否臟數(shù)據(jù)頁、冷熱性質(zhì),均會(huì)被放到一級(jí)數(shù)據(jù)緩沖區(qū)鏈表首部;
步驟5:在需要進(jìn)行緩沖區(qū)數(shù)據(jù)頁淘汰時(shí),優(yōu)先選擇二級(jí)數(shù)據(jù)緩沖區(qū)中的冷非臟數(shù)據(jù)頁
步驟6:在沒有冷非臟數(shù)據(jù)頁時(shí),才會(huì)選擇冷臟數(shù)據(jù)頁換出,此時(shí),由于優(yōu)先換出冷非臟數(shù)據(jù)頁,因此可以有效減少對(duì)閃存的寫回次數(shù),同時(shí)不會(huì)對(duì)緩沖區(qū)命中率造成太大影響;
優(yōu)選地,在二級(jí)緩沖區(qū)中進(jìn)行冷非臟數(shù)據(jù)頁淘汰時(shí),根據(jù)lru原則,選擇最不常用的冷非臟數(shù)據(jù)頁進(jìn)行淘汰。
本發(fā)明的技術(shù)效果如下:
1.提高閃存系統(tǒng)性能。本發(fā)明提出基于頁面訪問間隔的兩級(jí)閃存數(shù)據(jù)緩沖區(qū)置換方法,通過兩級(jí)緩沖區(qū)分離冷熱數(shù)據(jù)頁,通過優(yōu)先換出二級(jí)數(shù)據(jù)緩沖區(qū)中的冷數(shù)據(jù)頁,保證緩沖區(qū)命中率,減少由于緩沖區(qū)失效而需要對(duì)閃存進(jìn)行的數(shù)據(jù)頁讀操作。此外,通過優(yōu)先換出冷非臟數(shù)據(jù)頁可以減少由于數(shù)據(jù)同步所造成的大開銷閃存寫回操作,提高系統(tǒng)性能。
2.提高閃存系統(tǒng)壽命。閃存系統(tǒng)的擦寫壽命優(yōu)先,而緩沖區(qū)內(nèi)臟數(shù)據(jù)頁的頻繁換出,會(huì)造成較多的閃存寫回操作,影響閃存系統(tǒng)壽命。本發(fā)明通過優(yōu)先換出二級(jí)數(shù)據(jù)緩沖區(qū)內(nèi)的非臟數(shù)據(jù)頁,可以減少閃存寫回操作,從而延長閃存壽命。
附圖說明
圖1是本發(fā)明實(shí)施方案框架;
圖2是本發(fā)明實(shí)施所述的方法流程圖。
具體實(shí)施方式
下面結(jié)合附圖和實(shí)施例,對(duì)本發(fā)明的具體實(shí)施方法做進(jìn)一步的詳細(xì)解釋。以下實(shí)施例用于說明本發(fā)明的具體實(shí)施方法,但并不會(huì)限制本發(fā)明的范圍。
實(shí)施例所述的框架模塊包括:
模塊1緩沖區(qū)檢索模塊,用于檢索緩沖區(qū)內(nèi)是否有請(qǐng)求的數(shù)據(jù)頁;
模塊2一級(jí)數(shù)據(jù)緩沖區(qū),用于存放熱數(shù)據(jù)頁和最近被訪問過的冷數(shù)據(jù)頁;
模塊3二級(jí)數(shù)據(jù)緩沖區(qū),用于存放被從一級(jí)數(shù)據(jù)緩沖區(qū)中淘汰的冷數(shù)據(jù)頁;
模塊4緩沖區(qū)替換模塊,用于選擇二級(jí)緩沖區(qū)的冷非臟數(shù)據(jù)頁進(jìn)行淘汰。
參照?qǐng)D1、圖2所示,本發(fā)明所述閃存緩沖區(qū)置換方法基本流程,包括:
步驟1:對(duì)請(qǐng)求的數(shù)據(jù)頁,在緩沖區(qū)中檢索目標(biāo)數(shù)據(jù)頁;
優(yōu)選地,根據(jù)哈希方法快速檢索目標(biāo)數(shù)據(jù)頁,但不限于具體的檢索方法。
步驟2:數(shù)據(jù)緩沖區(qū)分為一級(jí)數(shù)據(jù)緩沖區(qū)和二級(jí)數(shù)據(jù)緩沖區(qū)以lru鏈表形式組織數(shù)據(jù)頁,每一個(gè)lru結(jié)點(diǎn)是代表一個(gè)數(shù)據(jù)頁;數(shù)據(jù)緩沖區(qū)內(nèi)緩存的所有數(shù)據(jù)頁分為熱臟數(shù)據(jù)頁、冷臟數(shù)據(jù)頁、熱非臟數(shù)據(jù)頁、冷非臟數(shù)據(jù)頁,即為每一個(gè)lru結(jié)點(diǎn)添加冷熱標(biāo)志位和是否臟標(biāo)志位,每個(gè)標(biāo)志位占用1bit空間。熱數(shù)據(jù)頁數(shù)量最大值隨著一級(jí)數(shù)據(jù)緩沖區(qū)和二級(jí)數(shù)據(jù)緩沖區(qū)的相對(duì)大小動(dòng)態(tài)變化,當(dāng)一級(jí)數(shù)據(jù)緩沖區(qū)較大時(shí),減少熱數(shù)據(jù)頁數(shù)量最大值,當(dāng)一級(jí)數(shù)據(jù)緩沖區(qū)較小時(shí),增加熱數(shù)據(jù)頁數(shù)量最大值。
優(yōu)選地,當(dāng)一級(jí)數(shù)據(jù)緩沖區(qū)總緩沖區(qū)大小占比大于0.8時(shí),減少熱數(shù)據(jù)頁數(shù)量最大值;當(dāng)一級(jí)數(shù)據(jù)緩沖區(qū)總緩沖區(qū)大小占比小于0.5時(shí),增加熱數(shù)據(jù)頁數(shù)量最大值;其他時(shí)候不改變熱數(shù)據(jù)頁數(shù)量最大值。
步驟3:若一級(jí)數(shù)據(jù)緩沖區(qū)內(nèi)的冷數(shù)據(jù)頁被命中且熱數(shù)據(jù)頁數(shù)量達(dá)到最大值時(shí),無論其臟或非臟,由于其訪問間隔小于一級(jí)數(shù)據(jù)緩沖區(qū)的最后一個(gè)熱數(shù)據(jù)頁,因此,將發(fā)生冷熱數(shù)據(jù)頁轉(zhuǎn)換;
在冷熱數(shù)據(jù)頁轉(zhuǎn)換時(shí),命中的冷數(shù)據(jù)頁會(huì)被轉(zhuǎn)換為熱數(shù)據(jù)頁,一級(jí)數(shù)據(jù)緩沖區(qū)尾部的熱數(shù)據(jù)頁會(huì)被轉(zhuǎn)換為冷數(shù)據(jù)頁,冷熱數(shù)據(jù)頁的變化通過改變對(duì)應(yīng)數(shù)據(jù)頁結(jié)點(diǎn)的冷熱標(biāo)志位實(shí)現(xiàn)。
同時(shí),還會(huì)將一級(jí)數(shù)據(jù)緩沖區(qū)尾部的所有冷數(shù)據(jù)頁移動(dòng)到二級(jí)數(shù)據(jù)緩沖區(qū)首部,這是因?yàn)檫@些冷數(shù)據(jù)頁的訪問間隔均比一級(jí)數(shù)據(jù)緩沖區(qū)尾部的熱數(shù)據(jù)頁要大,因此沒有機(jī)會(huì)轉(zhuǎn)換為熱數(shù)據(jù)頁;
步驟4:緩沖區(qū)內(nèi)命中的數(shù)據(jù)頁,無論是否臟數(shù)據(jù)頁、冷熱性質(zhì),均放到一級(jí)數(shù)據(jù)緩沖區(qū)鏈表首部;
步驟5:在需要進(jìn)行緩沖區(qū)數(shù)據(jù)頁淘汰時(shí),優(yōu)先選擇二級(jí)數(shù)據(jù)緩沖區(qū)中的冷非臟數(shù)據(jù)頁進(jìn)行淘汰,此時(shí),由于優(yōu)先換出冷非臟數(shù)據(jù)頁,因此可以有效減少對(duì)閃存的寫回次數(shù),同時(shí)不會(huì)對(duì)緩沖區(qū)命中率造成太大影響;
優(yōu)選地,在二級(jí)數(shù)據(jù)緩沖區(qū)中進(jìn)行冷非臟數(shù)據(jù)頁淘汰時(shí),可根據(jù)lru原則,選擇最不常用的冷非臟數(shù)據(jù)頁進(jìn)行淘汰,但不限于具體的規(guī)則。
步驟6:在二級(jí)數(shù)據(jù)緩沖區(qū)沒有冷非臟數(shù)據(jù)頁時(shí),則選擇冷臟數(shù)據(jù)頁進(jìn)行淘汰,此時(shí)需要將臟數(shù)據(jù)頁寫回閃存,以保證數(shù)據(jù)一致性;
優(yōu)選地,在二級(jí)緩沖區(qū)中進(jìn)行冷臟數(shù)據(jù)頁淘汰時(shí),可根據(jù)lru原則,選擇最不常用的冷臟數(shù)據(jù)頁進(jìn)行淘汰,但不限于具體的規(guī)則。
本發(fā)明用于閃存中的閃存轉(zhuǎn)換層ftl模塊。
本發(fā)明適用于nandflash型閃存。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。