欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種固態(tài)盤內(nèi)部緩存管理方法

文檔序號:9631366閱讀:892來源:國知局
一種固態(tài)盤內(nèi)部緩存管理方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于計(jì)算機(jī)存儲技術(shù)領(lǐng)域,更具體地,涉及一種固態(tài)盤內(nèi)部緩存管理方法。
【背景技術(shù)】
[0002] 閃存(NANDFLASH)具有讀、寫速度快,能耗低及抗震性好的特點(diǎn),因此,基于閃存 的固態(tài)盤已廣泛應(yīng)用于高端服務(wù)器及筆記本電腦。存芯片由很多數(shù)據(jù)塊組成,每個(gè)數(shù)據(jù)塊 又包含多個(gè)數(shù)據(jù)頁。閃存中,讀、寫操作的最小單位為頁,閃存芯片可以隨機(jī)讀閃存中的任 意一頁,但寫操作時(shí)如果目標(biāo)頁中以前有數(shù)據(jù),則必須先將該頁的數(shù)據(jù)擦除,然后才能寫新 的數(shù)據(jù),閃存擦除的單位為塊,即每次至少擦除一塊,同時(shí),對某個(gè)具體閃存塊,它的擦除次 數(shù)是有限的;閃存中讀、寫操作所需時(shí)間是不對稱的,在閃存中寫一頁所需時(shí)間通常是讀一 頁所需時(shí)間的8~12倍。為了提高基于閃存的固態(tài)盤的性能,在基于閃存的固態(tài)盤中,通 常會加入一個(gè)高速的緩存用于臨時(shí)存放系統(tǒng)將來可能再次使用的數(shù)據(jù),因此,如何有效管 理固態(tài)盤內(nèi)部的緩存對提高固態(tài)盤性能及壽命具有重要的意義。
[0003]目前常用的緩存管理算法有LeastRecentlyUsed(LRU)、2queue(2Q)、Low Inter-referenceRecencySet(LIRS)、AdaptiveReplacementCache(ARC)等,這些常用 的緩存管理算法都是針對主機(jī)端的緩存管理。由于閃存具有讀、寫不對稱的特點(diǎn),因此直接 將它們用在固態(tài)盤內(nèi)部的緩存管理中效果并不理想。
[0004] 針對固態(tài)盤內(nèi)部的緩存管理算法主要有針對混合映射FlashTranslation Layer(FTL)的BPLRU(BlockPaddingLeastRecentlyUsed)算法和針對頁映射的 CFLRU(Clean-FirstLRU)算法,BPLRU算法是當(dāng)訪問到閃存中某塊的任一頁時(shí),就將其整個(gè) 塊調(diào)入緩存中,換出緩存時(shí)也是將整個(gè)塊一次性寫回FLASH,該算法的優(yōu)點(diǎn)是可以將隨機(jī)讀 寫轉(zhuǎn)換成順序讀寫,同時(shí)減少混合存儲中合并(merger)操作;但BPLRU法不適用于頁映射 的固態(tài)盤,因?yàn)轫撚成涞墓虘B(tài)盤中每個(gè)邏輯頁可以映射到固態(tài)盤任意的物理頁上。
[0005] 頁映射FTL具有簡單、高效的特點(diǎn),目前固態(tài)盤中常采用頁映射FTL算法,在頁映 射FTL固態(tài)盤中,SSD內(nèi)部緩存管理通常采用CFLRU算法,當(dāng)緩存寫滿數(shù)據(jù)需要替換時(shí),緩 存中只要存在干凈數(shù)據(jù)頁,就將干凈數(shù)據(jù)頁以LRU方式替換出去;CFLRU法沒有考慮干凈數(shù) 據(jù)頁(讀數(shù)據(jù))在將來系統(tǒng)是否還會再訪問,在極端情況下,該方法會退化成只對臟數(shù)據(jù)頁 (寫數(shù)據(jù))進(jìn)行緩存的LRU算法;在以讀操作為主的負(fù)載中,CFLRU的命中率會很低,從而影 響SSD的性能和壽命;同時(shí),CFLRU將導(dǎo)致很多一次性寫數(shù)據(jù)長期滯留在緩存中,影響固態(tài) 盤的性能。

【發(fā)明內(nèi)容】

[0006] 針對現(xiàn)有技術(shù)的以上缺陷或改進(jìn)需求,本發(fā)明提供了一種固態(tài)盤內(nèi)部緩存管理方 法,其目的在于解決現(xiàn)有固態(tài)盤內(nèi)部緩存管理方法緩存命中率低的問題。
[0007] 為了實(shí)現(xiàn)上述目的,本發(fā)明提供了一種固態(tài)盤內(nèi)部緩存管理方法,具體包括如下 步驟:
[0008] (1)當(dāng)固態(tài)盤接收到上層訪問數(shù)據(jù)頁X命令,設(shè)置數(shù)據(jù)頁X權(quán)值的初始值;并判斷 數(shù)據(jù)頁X是否處于隊(duì)列Alin中;若是,則訪問該數(shù)據(jù)頁,進(jìn)入步驟(9);若否,則進(jìn)入步驟 (2);
[0009] (2)判斷數(shù)據(jù)頁X是否處于環(huán)AClock中,若是,則進(jìn)入步驟(3),若否,則進(jìn)入步驟 (5);
[0010] (3)判斷訪問數(shù)據(jù)頁X的動(dòng)作是否為讀操作,若是,將該數(shù)據(jù)頁X移到環(huán)AClock的 尾部,進(jìn)入步驟(9);若否,則表明訪問數(shù)據(jù)頁X的動(dòng)作為寫操作,進(jìn)入步驟(4);
[0011] (4)將該數(shù)據(jù)頁X的權(quán)值設(shè)置為最大值,并將該數(shù)據(jù)頁X移到環(huán)AClock的尾部,進(jìn) 入步驟(9);
[0012] (5)為數(shù)據(jù)頁X在緩存中分配空間,進(jìn)入步驟(6);
[0013] (6)判斷數(shù)據(jù)頁X的標(biāo)識是否在隊(duì)列Alout中,若是,進(jìn)入步驟(7);若否,則進(jìn)入 步驟(8);
[0014] (7)設(shè)置數(shù)據(jù)頁X權(quán)值的初始值,并將該頁插入到AClock的尾部,進(jìn)入步驟(9);
[0015] (8)將數(shù)據(jù)頁X插入到隊(duì)列Alin的頭部,進(jìn)入步驟(9);
[0016] (9)結(jié)束讀寫訪問;
[0017] 其中,Alin是指固態(tài)盤中內(nèi)部緩存中的一個(gè)先進(jìn)先出隊(duì)列;Alout是指固態(tài)盤內(nèi) 部緩存中的一個(gè)近期最少使用隊(duì)列,即LRU隊(duì)列;AClock是固態(tài)盤內(nèi)部緩存中一個(gè)用指針 連接起來的單向環(huán),該單向環(huán)中保存了兩個(gè)指針,頭部指針和尾部指針,尾部指針緊連著頭 部指針,即尾部指針的下一節(jié)點(diǎn)指向頭部節(jié)點(diǎn);
[0018] Alin和AClock均用于存放緩存數(shù)據(jù);Alout用于存放數(shù)據(jù)頁的標(biāo)識;當(dāng)一個(gè)數(shù)據(jù) 頁從Alin中替換出緩存時(shí),將該數(shù)據(jù)頁的標(biāo)識保存到Alout隊(duì)列;當(dāng)一個(gè)頁面從AClock環(huán) 中替換出緩存時(shí),將該頁丟棄。
[0019] 優(yōu)選的,設(shè)置數(shù)據(jù)頁X權(quán)值的初始值的方法具體如下:
[0020] (a)對于寫操作,數(shù)據(jù)頁X權(quán)值初始值的設(shè)定方法為:
[0021] 將閃存寫一個(gè)數(shù)據(jù)頁所用的時(shí)間除以閃存讀一個(gè)數(shù)據(jù)頁所用的時(shí)間,對獲得的結(jié) 果乘以系數(shù)〇. 6,再取整,獲得寫權(quán)值初始值;如果系數(shù)太大則緩存中將保存大量的一次性 訪問的寫數(shù)據(jù)頁,如果系數(shù)太小,則很多將來可能再次被訪問的寫數(shù)據(jù)頁可能會被替換出 緩存,導(dǎo)致系統(tǒng)性能降低,壽命減??;實(shí)驗(yàn)結(jié)果顯示當(dāng)系數(shù)為〇. 6時(shí)系統(tǒng)能達(dá)到較優(yōu)的結(jié) 果;如下公式所示:
[0022]
[0023] 其中,丨1:表示對數(shù)值取整;
[0024] (b)對于讀操作,數(shù)據(jù)頁權(quán)值初始值為0。
[0025] 優(yōu)選的,上述步驟(4)中,將數(shù)據(jù)頁X的權(quán)值取5 ;寫的開銷10倍于讀操作;對于 寫操作而言,若寫權(quán)值過大,則會延長一次性寫數(shù)據(jù)頁在緩存中的停留時(shí)間,將導(dǎo)致很多將 來可能再被訪問的讀數(shù)據(jù)被替換出緩存,影響系統(tǒng)整體性能;如果寫權(quán)值過小,則寫數(shù)據(jù)頁 將會較快的替換出緩存,會降低寫操作的命中率。
[0026] 優(yōu)選的,Alin隊(duì)列長度最大值Kin為緩存大小的20%~30% ;AClock環(huán)的大小為 緩存總量的70%~80% ;Alout隊(duì)列保存了各數(shù)據(jù)頁的標(biāo)識,在Alout隊(duì)列中,可保存標(biāo)識 的最大個(gè)數(shù)Kout為緩存所能存放數(shù)據(jù)頁面?zhèn)€數(shù)的40 %~60 %。
[0027] 優(yōu)選的,所述在緩存中為數(shù)據(jù)頁X分配空間的方法,具體包括如下步驟:
[0028] (5. 1)判斷緩存中是否有空閑空間,若是,則進(jìn)入步驟(5. 2),若否,則進(jìn)入步驟 (5. 3);
[0029] (5. 2)將數(shù)據(jù)頁X存入分配到的緩存空間節(jié)點(diǎn)Z中,進(jìn)入步驟(5. 12);
[0030] (5. 3)判斷隊(duì)列Alin長度是否大于Alin隊(duì)列長度最大值Kin,若是,則進(jìn)入步驟 (5.4);若否,則進(jìn)入步驟(5. 10);
[0031] (5.4)將Alin尾部的數(shù)據(jù)塊替換出緩存,替換出的數(shù)據(jù)記為Y,進(jìn)入步驟(5.5);
[0032] (5. 5)將數(shù)據(jù)頁X放入替換出的緩存節(jié)點(diǎn)Z中,進(jìn)入步驟(5. 6);
[0033] (5. 6)提取替換出的數(shù)據(jù)Y的標(biāo)志位,進(jìn)入步驟(5. 7);
[0034] (5. 7)判斷隊(duì)列Alout長度是否大于Alout隊(duì)列可保存標(biāo)識符的最大個(gè)數(shù)Kout, 若是,進(jìn)入步驟(5.8);若否,則進(jìn)入步驟(5.9);
[0035] (5. 8)將Alout的尾部節(jié)點(diǎn)從Alout隊(duì)列中刪除,進(jìn)入步驟(5. 9);
[0036] (5. 9)將上述替換出的數(shù)據(jù)Y的標(biāo)志位放入新的節(jié)點(diǎn)L中,將L節(jié)點(diǎn)的下一節(jié)點(diǎn)指 向Alout的頭節(jié)點(diǎn),并將L節(jié)點(diǎn)作為Alout的頭節(jié)點(diǎn),進(jìn)入步驟(5. 12);
[0037] (5. 10)獲取AClock頭部節(jié)點(diǎn)數(shù)據(jù)頁的權(quán)值,判斷該權(quán)值是否為0,若是,則進(jìn)入步 驟(5. 12);若否,則進(jìn)入步驟(5. 11);
[0038] (5. 11)將該數(shù)據(jù)頁權(quán)值減1,使尾部指針指向頭部頁節(jié)點(diǎn),頭部指針指向下一個(gè) 數(shù)據(jù)頁節(jié)點(diǎn),進(jìn)入步驟(5. 10);
[0039] (5. 12)將頭部節(jié)點(diǎn)記作Z,使頭部指針指向Z節(jié)點(diǎn)的下一節(jié)點(diǎn),使尾部指針的下一 節(jié)點(diǎn)指向頭部節(jié)點(diǎn),進(jìn)入步驟(5. 13);
[0040] (5. 13)將Z節(jié)點(diǎn)從AClock中剝離,將數(shù)據(jù)X放入Z節(jié)點(diǎn)中,進(jìn)入步驟(5. 14);
[0041] (5. 14)函數(shù)返回Z節(jié)點(diǎn),分配空間結(jié)束;
[0042] 在AClock中,初始時(shí)給讀數(shù)據(jù)頁和寫數(shù)據(jù)頁賦予不同的權(quán)值;在系統(tǒng)運(yùn)行過程 中,各數(shù)據(jù)頁的權(quán)值動(dòng)態(tài)變化,在AClock環(huán)中進(jìn)行替換操作時(shí)對權(quán)值為0的頁面節(jié)點(diǎn)進(jìn)行 替換;
[0043] 權(quán)值為0的數(shù)據(jù)頁有讀數(shù)據(jù)頁和在緩存中長時(shí)間沒被訪問的寫數(shù)據(jù)頁,由于讀數(shù) 據(jù)頁為干凈頁面,替換時(shí)不需要對閃存進(jìn)行操作,替換讀數(shù)據(jù)頁的開銷較??;當(dāng)權(quán)值為〇的 頁面為寫數(shù)據(jù)頁時(shí),則表明該頁面在較長時(shí)間沒有被訪問,根據(jù)局部性原理,替換權(quán)值變?yōu)?〇的與數(shù)據(jù)頁可提尚緩存的命中率,從而提尚系統(tǒng)性能。
[0044] 總體而言,通過本發(fā)明所構(gòu)思的以上技術(shù)方案與現(xiàn)有技術(shù)相比,對寫操作及讀操 作數(shù)據(jù)頁賦予不同的權(quán)值,使寫數(shù)據(jù)頁在緩存中停留的時(shí)間比讀數(shù)據(jù)頁在緩存中停留的時(shí) 間更長,并根據(jù)數(shù)據(jù)頁的命中情況,動(dòng)態(tài)的調(diào)整各頁面的權(quán)值,使緩存在保持較高的總命中 率的情況下提高寫命中率,達(dá)到提高系統(tǒng)性能,延遲使用壽命的目的;具體能夠取得如下所 列的有益效果:
[0045] (1)本發(fā)明提供的固態(tài)盤內(nèi)部緩存管理方法,根據(jù)閃存讀、寫速度不對稱性的特 點(diǎn),對固態(tài)盤內(nèi)部緩存中讀、寫數(shù)據(jù)頁賦予不同的權(quán)值;寫數(shù)據(jù)頁的權(quán)值大于讀數(shù)據(jù)頁;緩 存中數(shù)據(jù)頁的權(quán)值依據(jù)緩存中數(shù)據(jù)頁命中情況及數(shù)據(jù)頁在緩存中存放的時(shí)間進(jìn)行動(dòng)態(tài)調(diào) 整,當(dāng)緩存寫滿數(shù)據(jù)需要替換時(shí),系統(tǒng)查找緩存中權(quán)值為0的數(shù)據(jù)頁進(jìn)行替換;
[0046] 由于寫數(shù)據(jù)頁權(quán)值比讀數(shù)據(jù)也權(quán)值大,寫數(shù)據(jù)頁在緩存中的停留時(shí)間比讀數(shù)據(jù)頁 在緩存中停留的時(shí)間長,以提尚緩存與命中率;因此,在保證緩存總命中率(讀命中率+與 命中率)的情況下提高了寫數(shù)據(jù)頁的命中率,從而提高了固態(tài)盤的性能,同時(shí)延長了固態(tài) 盤的壽命;
[0047] (2)本發(fā)明提供的固態(tài)盤內(nèi)部緩存管理方法,具有與2Q等傳統(tǒng)的緩存管理算法相 當(dāng)?shù)目偯新剩ㄗx命中+寫命中),但由于本發(fā)明中將寫數(shù)據(jù)頁比讀數(shù)據(jù)頁賦予更高的權(quán) 值,使寫數(shù)據(jù)頁在緩存中停留的時(shí)間比讀數(shù)據(jù)頁停留的時(shí)間更長,提高了寫命中率;實(shí)驗(yàn)結(jié) 果顯不,它的與命中率比2Q等傳統(tǒng)算法最多可提尚30%;另外,在Aclock環(huán)中,各頁依據(jù) 局部性原理,動(dòng)態(tài)調(diào)整權(quán)值,從而保證了系統(tǒng)具有較高的總命中率;
[0048] (3)本發(fā)明提供的固態(tài)盤內(nèi)部緩存管理方法,與基于頁映射的固態(tài)盤內(nèi)部緩存管 理算法如CFLRU比較而言,由于該發(fā)明緩存中使用了兩個(gè)隊(duì)列,消除了一次性數(shù)據(jù)對緩存 的污染;使其總命中率比
當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
武鸣县| 外汇| 伊宁市| 眉山市| 集贤县| 全南县| 新邵县| 黎城县| 永兴县| 陆丰市| 奉新县| 乌兰县| 河北区| 民乐县| 扎兰屯市| 湄潭县| 教育| 自贡市| 嘉荫县| 司法| 尚义县| 乌什县| 务川| 腾冲县| 将乐县| 大方县| 桑植县| 龙川县| 金寨县| 寿阳县| 赤城县| 图们市| 天镇县| 泽库县| 巍山| 尚义县| 南部县| 乌兰县| 南昌市| 黔西县| 金门县|