只讀緩存的去冗余系統(tǒng)及方法以及緩存的去冗余方法
【專利摘要】本發(fā)明涉及一種只讀緩存的去冗余系統(tǒng)、只讀緩存的去冗余方法和緩存的去冗余方法,所述去冗余系統(tǒng)包括主控模塊、數(shù)據(jù)塊和索引模塊,數(shù)據(jù)塊與索引模塊一一對(duì)應(yīng),索引模塊內(nèi)設(shè)有緩存替換信息單元和數(shù)據(jù)地址標(biāo)簽單元,索引模塊內(nèi)還設(shè)有數(shù)據(jù)塊哈希值單元,數(shù)據(jù)地址標(biāo)簽單元內(nèi)設(shè)有多個(gè)的數(shù)據(jù)地址標(biāo)簽,同一數(shù)據(jù)地址標(biāo)簽單元中所有的數(shù)據(jù)地址標(biāo)簽在緩存中均指代對(duì)應(yīng)的同一數(shù)據(jù)塊。本發(fā)明通過(guò)計(jì)算比較每個(gè)數(shù)據(jù)塊的哈希值,尋找并合并冗余數(shù)據(jù),同時(shí)給每個(gè)數(shù)據(jù)塊增加了多個(gè)數(shù)據(jù)地址標(biāo)簽,以達(dá)到對(duì)應(yīng)不同數(shù)據(jù)地址的冗余數(shù)據(jù)塊在緩存中共享一個(gè)數(shù)據(jù)塊的目的,節(jié)省了緩存的存儲(chǔ)空間。
【專利說(shuō)明】只讀緩存的去冗余系統(tǒng)及方法以及緩存的去冗余方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及電數(shù)據(jù)存儲(chǔ)及處理【技術(shù)領(lǐng)域】,尤其涉及一種只讀緩存的去冗余系統(tǒng)、只讀緩存的去冗余方法和緩存的去冗余方法。
【背景技術(shù)】
[0002]緩存的數(shù)據(jù)存儲(chǔ)于高速存儲(chǔ)介質(zhì)中,數(shù)據(jù)通常以數(shù)據(jù)塊的形式在緩存中管理,每個(gè)數(shù)據(jù)塊需要使用數(shù)據(jù)地址標(biāo)簽來(lái)存儲(chǔ)數(shù)據(jù)使用者在訪問(wèn)低速存儲(chǔ)介質(zhì)時(shí)使用的數(shù)據(jù)地址,為了實(shí)現(xiàn)高效的緩存替換算法,每個(gè)數(shù)據(jù)塊還需要存儲(chǔ)一些緩存替換信息。在典型的緩存設(shè)計(jì)中,大部分緩存存儲(chǔ)空間被數(shù)據(jù)塊占用,緩存替換信息和數(shù)據(jù)地址標(biāo)簽只占用少量空間。由于高速存儲(chǔ)介質(zhì)的價(jià)格昂貴,緩存的數(shù)據(jù)存儲(chǔ)容量通常遠(yuǎn)小于低速存儲(chǔ)介質(zhì),在高速存儲(chǔ)介質(zhì)性能一定的情況下,緩存對(duì)系統(tǒng)性能的幫助很大程度上取決于緩存的數(shù)據(jù)存儲(chǔ)容量,因此提高緩存的有效數(shù)據(jù)容量將提高系統(tǒng)的整體性能。
[0003]現(xiàn)有緩存設(shè)計(jì)中每個(gè)數(shù)據(jù)塊都對(duì)應(yīng)于某個(gè)訪問(wèn)低速存儲(chǔ)介質(zhì)時(shí)使用的數(shù)據(jù)地址,該地址存儲(chǔ)于緩存的數(shù)據(jù)地址標(biāo)簽中。緩存通過(guò)該地址來(lái)判斷數(shù)據(jù)使用者需要訪問(wèn)的數(shù)據(jù)是否已經(jīng)存儲(chǔ)在緩存中,在很多緩存應(yīng)用中,不同數(shù)據(jù)地址標(biāo)簽對(duì)應(yīng)的數(shù)據(jù)塊內(nèi)容是相同的,這些為冗余數(shù)據(jù)塊,對(duì)于這些冗余數(shù)據(jù)塊,緩存仍然給每個(gè)數(shù)據(jù)塊都分配存儲(chǔ)空間,造成了緩存存儲(chǔ)空間的浪費(fèi)。
【發(fā)明內(nèi)容】
[0004]本發(fā)明所要解決的技術(shù)問(wèn)題是針對(duì)現(xiàn)有技術(shù)存在的上述問(wèn)題,提供了一種提高緩存有效容量的只讀緩存的去冗余系統(tǒng)、只讀緩存的去冗余方法和緩存的去冗余方法。
[0005]為解決上述問(wèn)題,本發(fā)明的一種技術(shù)方案是:
[0006]一種只讀緩存的去冗余系統(tǒng),包括主控模塊、若干用于存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)塊和若干用于索引數(shù)據(jù)塊的索引模塊,主控模塊分別與數(shù)據(jù)塊和索引模塊相連,數(shù)據(jù)塊與索引模塊一一對(duì)應(yīng),索引模塊內(nèi)設(shè)有用于存儲(chǔ)數(shù)據(jù)塊訪問(wèn)記錄的緩存替換信息單元和用于存儲(chǔ)低速存儲(chǔ)介質(zhì)上訪問(wèn)數(shù)據(jù)地址的數(shù)據(jù)地址標(biāo)簽單元,所述索引模塊內(nèi)還設(shè)有用于存儲(chǔ)數(shù)據(jù)塊哈希值的數(shù)據(jù)塊哈希值單元,主控模塊計(jì)算數(shù)據(jù)塊的哈希值并將哈希值寫入數(shù)據(jù)塊哈希值單元中存儲(chǔ),所述數(shù)據(jù)地址標(biāo)簽單元內(nèi)設(shè)有多個(gè)的數(shù)據(jù)地址標(biāo)簽,同一數(shù)據(jù)地址標(biāo)簽單元中所有的數(shù)據(jù)地址標(biāo)簽在低速存儲(chǔ)介質(zhì)上指代的數(shù)據(jù)內(nèi)容相同,同一數(shù)據(jù)地址標(biāo)簽單元中所有的數(shù)據(jù)地址標(biāo)簽在緩存中均指代對(duì)應(yīng)的同一數(shù)據(jù)塊。
[0007]優(yōu)選地,所述緩存替換信息單元內(nèi)存儲(chǔ)有數(shù)據(jù)塊的訪問(wèn)記錄和數(shù)據(jù)冗余度,所述數(shù)據(jù)冗余度為數(shù)據(jù)地址標(biāo)簽單元中有效數(shù)據(jù)地址標(biāo)簽的個(gè)數(shù)。
[0008]相比較于現(xiàn)有技術(shù),本發(fā)明的只讀緩存的去冗余系統(tǒng)通過(guò)計(jì)算比較每個(gè)數(shù)據(jù)塊的哈希值,尋找并合并冗余數(shù)據(jù),同時(shí)給每個(gè)數(shù)據(jù)塊增加了多個(gè)數(shù)據(jù)地址標(biāo)簽,這些數(shù)據(jù)標(biāo)簽用于存儲(chǔ)數(shù)據(jù)內(nèi)容相同的數(shù)據(jù)塊所對(duì)應(yīng)的數(shù)據(jù)使用者在訪問(wèn)低速存儲(chǔ)介質(zhì)時(shí)使用的數(shù)據(jù)地址,以達(dá)到對(duì)應(yīng)不同數(shù)據(jù)地址的冗余數(shù)據(jù)塊在緩存中共享一個(gè)數(shù)據(jù)塊的目的,節(jié)省了緩存的存儲(chǔ)空間。
[0009]本發(fā)明的另一種技術(shù)方案是:
[0010]一種只讀緩存的去冗余方法,所述方法基于上述提及的去冗余系統(tǒng),所述方法包括如下步驟:
[0011]a)主控模塊讀取數(shù)據(jù)時(shí),根據(jù)讀取的訪問(wèn)數(shù)據(jù)地址,搜索只讀緩存中所有數(shù)據(jù)地址標(biāo)簽單元中的數(shù)據(jù)地址標(biāo)簽,若數(shù)據(jù)地址標(biāo)簽單元中包含所述訪問(wèn)數(shù)據(jù)地址,則讀取訪問(wèn)數(shù)據(jù)地址對(duì)應(yīng)數(shù)據(jù)塊中的數(shù)據(jù)并將數(shù)據(jù)返回到主控模塊,同時(shí)更新緩存替換信息單元中的替換信息,否則,進(jìn)入步驟b;
[0012]b)從低速存儲(chǔ)介質(zhì)中讀取所述訪問(wèn)數(shù)據(jù)地址對(duì)應(yīng)的訪問(wèn)數(shù)據(jù)并將數(shù)據(jù)返回到主控模塊,同時(shí)主控模塊計(jì)算訪問(wèn)數(shù)據(jù)的哈希值;
[0013]c)將訪問(wèn)數(shù)據(jù)的哈希值與緩存中所有數(shù)據(jù)塊哈希值單元中的哈希值進(jìn)行比較,若緩存中包含訪問(wèn)數(shù)據(jù)的哈希值,則將所述訪問(wèn)數(shù)據(jù)地址存儲(chǔ)到哈希值相同的索引模塊的數(shù)據(jù)地址標(biāo)簽單元中,同時(shí)更新緩存替換信息單元中的替換信息,否則,進(jìn)入步驟d ;
[0014]d)檢測(cè)緩存是否已滿,若緩存未滿,將所述訪問(wèn)數(shù)據(jù)寫入緩存的數(shù)據(jù)塊中,進(jìn)入步驟e,否則,根據(jù)緩存替換算法選擇需要被替換的數(shù)據(jù)塊,將訪問(wèn)數(shù)據(jù)寫入需要被替換的數(shù)據(jù)塊中,進(jìn)入步驟e;
[0015]e)更新與步驟d中數(shù)據(jù)塊對(duì)應(yīng)的索引模塊,將所述訪問(wèn)數(shù)據(jù)地址存儲(chǔ)到數(shù)據(jù)地址標(biāo)簽單元中,更新緩存替換信息單元中的替換信息,并將步驟b中計(jì)算得到的哈希值寫入數(shù)據(jù)塊哈希值單元中存儲(chǔ)。
[0016]優(yōu)選地,所述更新緩存替換信息單元中的替換信息具體為:更新數(shù)據(jù)塊的訪問(wèn)記錄和數(shù)據(jù)冗余度,所述數(shù)據(jù)冗余度為數(shù)據(jù)地址標(biāo)簽單元中有效數(shù)據(jù)地址標(biāo)簽的個(gè)數(shù)。
[0017]優(yōu)選地,所述步驟d中的緩存替換算法具體為:將緩存中所有數(shù)據(jù)塊根據(jù)數(shù)據(jù)冗余度從低到高進(jìn)行排序,選擇數(shù)據(jù)冗余度相同且數(shù)據(jù)冗余度最低的數(shù)據(jù)塊,采用LRU算法計(jì)算出需要被替換的數(shù)據(jù)塊。
[0018]優(yōu)選地,所述哈希值是采用哈希函數(shù)計(jì)算得到,哈希函數(shù)為MD5、SHA或SHA256中的一種。
[0019]相比較于現(xiàn)有技術(shù),本發(fā)明的只讀緩存的去冗余方法通過(guò)數(shù)據(jù)塊哈希值比較尋找并合并冗余數(shù)據(jù),同時(shí)給每個(gè)數(shù)據(jù)塊增加了多個(gè)數(shù)據(jù)地址標(biāo)簽,這些數(shù)據(jù)標(biāo)簽用于存儲(chǔ)數(shù)據(jù)內(nèi)容相同的數(shù)據(jù)塊所對(duì)應(yīng)的數(shù)據(jù)使用者在訪問(wèn)低速存儲(chǔ)介質(zhì)時(shí)使用的數(shù)據(jù)地址,以達(dá)到對(duì)應(yīng)不同數(shù)據(jù)地址的冗余數(shù)據(jù)塊在緩存中共享一個(gè)數(shù)據(jù)塊的目的,節(jié)省了緩存的存儲(chǔ)空間,同時(shí)結(jié)合數(shù)據(jù)的冗余度優(yōu)化了緩存替換算法。
[0020]本發(fā)明的再一種技術(shù)方案是:
[0021]一種緩存的去冗余方法,所述方法基于權(quán)利要求1所述的去冗余系統(tǒng),所述方法包括操作類型判斷步驟、讀操作去冗余步驟和寫操作步驟,具體為:
[0022]操作類型判斷步驟:判斷主控模塊的操作類型,若是讀操作,則進(jìn)入讀操作去冗余步驟,若是寫操作,則進(jìn)入寫操作步驟;
[0023]讀操作去冗余步驟:根據(jù)讀操作的訪問(wèn)數(shù)據(jù)地址,判斷訪問(wèn)數(shù)據(jù)地址是否已保存在只讀緩存或讀寫緩存中,若訪問(wèn)數(shù)據(jù)地址均不在只讀緩存和讀寫緩存中,則進(jìn)入步驟A,若訪問(wèn)數(shù)據(jù)地址已保存在讀寫緩存中存儲(chǔ),則進(jìn)入步驟B,若訪問(wèn)數(shù)據(jù)地址已保存在只讀緩存中,則進(jìn)入步驟C,否則,返回操作類型判斷步驟;
[0024]寫操作步驟:根據(jù)寫操作的訪問(wèn)數(shù)據(jù)地址,判斷訪問(wèn)數(shù)據(jù)地址是否已保存在只讀緩存和讀寫緩存中,若訪問(wèn)數(shù)據(jù)地址均不在只讀緩存和讀寫緩存中,則進(jìn)入步驟B,若訪問(wèn)數(shù)據(jù)地址已保存在讀寫緩存中存儲(chǔ),則進(jìn)入步驟B,若訪問(wèn)數(shù)據(jù)地址已保存在只讀緩存中,則進(jìn)入步驟D,否則,返回操作類型判斷步驟;
[0025]A)從低速存儲(chǔ)介質(zhì)中讀取所述訪問(wèn)數(shù)據(jù)地址對(duì)應(yīng)的訪問(wèn)數(shù)據(jù)并將數(shù)據(jù)返回到主控模塊,同時(shí)主控模塊計(jì)算訪問(wèn)數(shù)據(jù)的哈希值;將訪問(wèn)數(shù)據(jù)的哈希值與只讀緩存中所有數(shù)據(jù)塊哈希值單元中的哈希值進(jìn)行比較,若只讀緩存中包含訪問(wèn)數(shù)據(jù)的哈希值,則將所述訪問(wèn)數(shù)據(jù)地址存儲(chǔ)到哈希值相同的索引模塊的數(shù)據(jù)地址標(biāo)簽單元中,同時(shí)更新緩存替換信息單元中的替換信息,返回操作類型判斷步驟,否則,進(jìn)入步驟Al ;
[0026]Al)檢測(cè)只讀緩存是否已滿,若緩存未滿,將所述訪問(wèn)數(shù)據(jù)寫入緩存的數(shù)據(jù)塊中,進(jìn)入步驟A2,否則,根據(jù)緩存替換算法選擇需要被替換的數(shù)據(jù)塊,將訪問(wèn)數(shù)據(jù)寫入需要被替換的數(shù)據(jù)塊中,進(jìn)入步驟A2;
[0027]A2)更新與步驟Al中數(shù)據(jù)塊對(duì)應(yīng)的索引模塊,將所述訪問(wèn)數(shù)據(jù)地址存儲(chǔ)到數(shù)據(jù)地址標(biāo)簽單元中,更新緩存替換信息單元中的替換信息,并將步驟A中計(jì)算得到的哈希值寫入數(shù)據(jù)塊哈希值單元中存儲(chǔ),返回操作類型判斷步驟;
[0028]B)由讀寫緩存處進(jìn)行讀寫訪問(wèn),返回操作類型判斷步驟;
[0029]C)根據(jù)讀取的訪問(wèn)數(shù)據(jù)地址,讀取訪問(wèn)數(shù)據(jù)地址對(duì)應(yīng)數(shù)據(jù)塊中的數(shù)據(jù)并將數(shù)據(jù)返回到主控模塊,同時(shí)更新緩存替換信息單元中的替換信息,返回操作類型判斷步驟;
[0030]D)在只讀緩存中刪除寫操作地址對(duì)應(yīng)的數(shù)據(jù)地址標(biāo)簽,返回步驟B。
[0031]優(yōu)選地,所述更新緩存替換信息單元中的替換信息具體為:更新數(shù)據(jù)塊的記錄和數(shù)據(jù)冗余度,所述數(shù)據(jù)冗余度為數(shù)據(jù)地址標(biāo)簽單元中有效數(shù)據(jù)地址標(biāo)簽的個(gè)數(shù)。
[0032]優(yōu)選地,所述步驟Al中的緩存替換算法具體為:將緩存中所有數(shù)據(jù)塊根據(jù)數(shù)據(jù)冗余度從低到高進(jìn)行排序,選擇數(shù)據(jù)冗余度相同且數(shù)據(jù)冗余度最低的數(shù)據(jù)塊,采用LRU算法計(jì)算出需要被替換的數(shù)據(jù)塊。
[0033]相比較于現(xiàn)有技術(shù),本發(fā)明的緩存的去冗余方法適用于緩存的讀操作和寫操作,通過(guò)讀寫操作的區(qū)分及訪問(wèn)地址的存儲(chǔ)位置來(lái)判斷是否應(yīng)用只讀緩存去冗余方法,針對(duì)于只讀緩存,使用數(shù)據(jù)塊哈希值比較尋找并合并冗余數(shù)據(jù),同時(shí)給每個(gè)數(shù)據(jù)塊增加了多個(gè)數(shù)據(jù)地址標(biāo)簽,以達(dá)到對(duì)應(yīng)不同數(shù)據(jù)地址的冗余數(shù)據(jù)塊在緩存中共享一個(gè)數(shù)據(jù)塊的目的,節(jié)省了緩存的存儲(chǔ)空間,同時(shí)結(jié)合數(shù)據(jù)的冗余度優(yōu)化了緩存替換算法,針對(duì)于讀寫緩存則采用普通緩存方式,該方法尤其適合文件和磁盤等需要支持讀寫操作的緩存。
【專利附圖】
【附圖說(shuō)明】
[0034]圖1是本發(fā)明只讀緩存的去冗余系統(tǒng)的結(jié)構(gòu)原理框圖。
[0035]圖2是本發(fā)明只讀緩存的去冗余方法的流程圖。
[0036]圖3是本發(fā)明只讀緩存的去冗余方法中一種實(shí)例的緩存結(jié)構(gòu)框圖。
[0037]圖4是本發(fā)明緩存的去冗余方法的緩存結(jié)構(gòu)框圖。
[0038]圖5是本發(fā)明緩存的去冗余方法的條件判斷圖?!揪唧w實(shí)施方式】
[0039]下面結(jié)合附圖和實(shí)施例進(jìn)一步詳細(xì)說(shuō)明本發(fā)明,但本發(fā)明的保護(hù)范圍并不限于此。
[0040]參照?qǐng)D1,本發(fā)明的只讀緩存的去冗余系統(tǒng),包括主控模塊、若干用于存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)塊和若干用于索引數(shù)據(jù)塊的索引模塊,主控模塊分別與數(shù)據(jù)塊和索引模塊相連,數(shù)據(jù)
塊與索引模塊--對(duì)應(yīng),即索引模塊I用于索引數(shù)據(jù)塊I,索引模塊N用于索引數(shù)據(jù)塊N。索
引模塊和數(shù)據(jù)塊存儲(chǔ)于只讀緩存中,用于提高光驅(qū)等只讀設(shè)備的訪問(wèn)性能。索引模塊內(nèi)設(shè)有緩存替換信息單元、數(shù)據(jù)地址 標(biāo)簽單元和數(shù)據(jù)塊哈希值單元,緩存替換信息單元、數(shù)據(jù)地址標(biāo)簽單元和數(shù)據(jù)塊哈希值單元用于提高只讀緩存的有效容量。
[0041]數(shù)據(jù)塊哈希值單元用于存儲(chǔ)數(shù)據(jù)塊哈希值,主控模塊在讀取訪問(wèn)時(shí),會(huì)計(jì)算每個(gè)數(shù)據(jù)塊的哈希值并將哈希值寫入與該數(shù)據(jù)塊對(duì)應(yīng)的數(shù)據(jù)塊哈希值單元中存儲(chǔ),通過(guò)每個(gè)數(shù)據(jù)塊的哈希值可以識(shí)別只讀緩存中內(nèi)容相同的冗余數(shù)據(jù)塊。數(shù)據(jù)塊哈希值單元給緩存中每個(gè)數(shù)據(jù)塊增加一個(gè)字段用于存儲(chǔ)數(shù)據(jù)內(nèi)容的哈希值,哈希值用于快速判斷不同數(shù)據(jù)塊的數(shù)據(jù)內(nèi)容是否相同。哈希值的計(jì)算方法可以使用通用的哈希函數(shù)如MD5 (Message DigestAlgorithm MD5)、SHA (Secure HashAlgorithm)等,將大塊的數(shù)據(jù)通過(guò)數(shù)學(xué)運(yùn)算得到一個(gè)數(shù)據(jù)量很小的哈希值。比如使用一個(gè)256位的二進(jìn)制數(shù)來(lái)存儲(chǔ)一個(gè)8K字節(jié)數(shù)據(jù)塊的哈希值,通過(guò)哈希值的比較,緩存可以快速的判斷兩個(gè)數(shù)據(jù)塊是否包含完全一樣的數(shù)據(jù)。如果兩個(gè)數(shù)據(jù)塊的哈希值不同,那么這兩個(gè)數(shù)據(jù)塊的數(shù)據(jù)內(nèi)容必然不同,如果兩個(gè)數(shù)據(jù)塊的哈希值相同,那么這兩個(gè)數(shù)據(jù)塊有很高的概率包含相同的數(shù)據(jù)。根據(jù)實(shí)際應(yīng)用的要求,可以選擇是否對(duì)哈希值相同的數(shù)據(jù)塊進(jìn)行完整數(shù)據(jù)比較來(lái)確定數(shù)據(jù)內(nèi)容是否相同,如果采用SHA256等用于加密應(yīng)用的哈希函數(shù),兩個(gè)不同數(shù)據(jù)塊產(chǎn)生同樣哈希值的概率遠(yuǎn)遠(yuǎn)小于硬件存儲(chǔ)設(shè)備數(shù)據(jù)出錯(cuò)的概率,因此對(duì)大多數(shù)應(yīng)用將不需要再進(jìn)行完整數(shù)據(jù)比較。
[0042]數(shù)據(jù)地址標(biāo)簽單元用于存儲(chǔ)低速存儲(chǔ)介質(zhì)上訪問(wèn)數(shù)據(jù)地址,數(shù)據(jù)地址標(biāo)簽單元內(nèi)設(shè)有多個(gè)的數(shù)據(jù)地址標(biāo)簽,同一數(shù)據(jù)地址標(biāo)簽單元中所有的數(shù)據(jù)地址標(biāo)簽在低速存儲(chǔ)介質(zhì)上指代的數(shù)據(jù)內(nèi)容相同,同一數(shù)據(jù)地址標(biāo)簽單元中所有的數(shù)據(jù)地址標(biāo)簽在緩存中均指代對(duì)應(yīng)的同一數(shù)據(jù)塊。緩存的每個(gè)數(shù)據(jù)塊相對(duì)于現(xiàn)有技術(shù)增加了多個(gè)數(shù)據(jù)地址標(biāo)簽,這些數(shù)據(jù)標(biāo)簽用于存儲(chǔ)數(shù)據(jù)內(nèi)容相同的數(shù)據(jù)塊所對(duì)應(yīng)的數(shù)據(jù)使用者在訪問(wèn)低速存儲(chǔ)介質(zhì)時(shí)使用的數(shù)據(jù)地址。由于數(shù)據(jù)塊的容量通常遠(yuǎn)大于數(shù)據(jù)地址標(biāo)簽對(duì)存儲(chǔ)空間的占用,并且合并了內(nèi)容相同的冗余數(shù)據(jù)塊,這樣的設(shè)計(jì)就能達(dá)到對(duì)應(yīng)不同數(shù)據(jù)地址的冗余數(shù)據(jù)塊在緩存中共享一個(gè)數(shù)據(jù)塊的目的,節(jié)省了緩存的存儲(chǔ)空間。
[0043]緩存替換信息單元用于存儲(chǔ)數(shù)據(jù)塊訪問(wèn)記錄等,緩存替換信息單元內(nèi)存儲(chǔ)有數(shù)據(jù)塊的訪問(wèn)記錄和數(shù)據(jù)冗余度,訪問(wèn)記錄包括訪問(wèn)頻次、訪問(wèn)時(shí)間等,其中數(shù)據(jù)冗余度為數(shù)據(jù)地址標(biāo)簽單元中數(shù)據(jù)地址標(biāo)簽的有效存儲(chǔ)個(gè)數(shù),即存儲(chǔ)的訪問(wèn)數(shù)據(jù)地址的個(gè)數(shù)。根據(jù)緩存替換信息單元的替換信息,優(yōu)化了傳統(tǒng)的緩存替換算法。如果緩存的存儲(chǔ)空間已經(jīng)完全被數(shù)據(jù)塊占用,再分配新的數(shù)據(jù)塊到緩存時(shí)就需要用新的數(shù)據(jù)塊替換掉一個(gè)原有的數(shù)據(jù)塊,緩存替換算法用于在緩存中選擇相對(duì)不重要的數(shù)據(jù)塊作為被替換的對(duì)象。使用本發(fā)明提出的去冗余緩存設(shè)計(jì)之后,可以根據(jù)數(shù)據(jù)塊的數(shù)據(jù)冗余度來(lái)判斷數(shù)據(jù)塊的重要性,數(shù)據(jù)冗余度指某個(gè)數(shù)據(jù)塊對(duì)應(yīng)的不同數(shù)據(jù)地址的數(shù)量,該值越大,就有越多的地址包含該數(shù)據(jù)塊的數(shù)據(jù),其數(shù)據(jù)冗余度和相對(duì)重要性就越高。因此,緩存替換算法需要優(yōu)先選擇冗余度低的數(shù)據(jù)塊作為被替換的對(duì)象。
[0044]參照?qǐng)D1-2,本發(fā)明的一種只讀緩存的去冗余方法,所述方法基于上述提及的去冗余系統(tǒng),所述方法包括如下步驟:
[0045]a)主控模塊讀取數(shù)據(jù)時(shí),根據(jù)讀取的訪問(wèn)數(shù)據(jù)地址,搜索只讀緩存中所有數(shù)據(jù)地址標(biāo)簽單元中的數(shù)據(jù)地址標(biāo)簽,若數(shù)據(jù)地址標(biāo)簽單元中包含所述訪問(wèn)數(shù)據(jù)地址,則讀取訪問(wèn)數(shù)據(jù)地址對(duì)應(yīng)數(shù)據(jù)塊中的數(shù)據(jù)并將數(shù)據(jù)返回到主控模塊,同時(shí)更新緩存替換信息單元中的替換信息,否則,進(jìn)入步驟b;
[0046]b)從低速存儲(chǔ)介質(zhì)中讀取所述訪問(wèn)數(shù)據(jù)地址對(duì)應(yīng)的訪問(wèn)數(shù)據(jù)并將數(shù)據(jù)返回到主控模塊,同時(shí)主控模塊計(jì)算訪問(wèn)數(shù)據(jù)的哈希值;
[0047]c)將訪問(wèn)數(shù)據(jù)的哈希值與緩存中所有數(shù)據(jù)塊哈希值單元中的哈希值進(jìn)行比較,若緩存中包含訪問(wèn)數(shù)據(jù)的哈希值,則將所述訪問(wèn)數(shù)據(jù)地址存儲(chǔ)到哈希值相同的索引模塊的數(shù)據(jù)地址標(biāo)簽單元中,同時(shí)更新緩存替換信息單元中的替換信息,否則,進(jìn)入步驟d ;
[0048]d)檢測(cè)緩存是否已滿,若緩存未滿,將所述訪問(wèn)數(shù)據(jù)寫入緩存的數(shù)據(jù)塊中,進(jìn)入步驟e,否則,根據(jù)緩存替換算法選擇需要被替換的數(shù)據(jù)塊,將訪問(wèn)數(shù)據(jù)寫入需要被替換的數(shù)據(jù)塊中,進(jìn)入步驟e;
[0049]e)更新與步驟d中數(shù)據(jù)塊對(duì)應(yīng)的索引模塊,將所述訪問(wèn)數(shù)據(jù)地址存儲(chǔ)到數(shù)據(jù)地址標(biāo)簽單元中,更新緩存替換信息單元中的替換信息,將緩存中所有數(shù)據(jù)塊根據(jù)數(shù)據(jù)冗余度從低到高進(jìn)行排序,選擇數(shù)據(jù)冗余度相同且數(shù)據(jù)冗余度最低的數(shù)據(jù)塊,采用LRU(LeastRecently Used)算法計(jì)算出需要被替換的數(shù)據(jù)塊,并將步驟b中計(jì)算得到的哈希值寫入數(shù)據(jù)塊哈希值單兀中存儲(chǔ)。
[0050]上述步驟中提及的更新緩存替換信息單元中的替換信息具體為:更新數(shù)據(jù)塊的訪問(wèn)記錄和數(shù)據(jù)冗余度,所述數(shù)據(jù)冗余度為數(shù)據(jù)地址標(biāo)簽單元中有效數(shù)據(jù)地址標(biāo)簽的個(gè)數(shù)。其中,哈希值是采用哈希函數(shù)計(jì)算得到,哈希函數(shù)為MD5、SHA或SHA256中的一種。
[0051]參照?qǐng)D3的緩存結(jié)構(gòu)框圖,本發(fā)明的一個(gè)比較簡(jiǎn)單的應(yīng)用,該應(yīng)用的場(chǎng)景是為只讀光盤驅(qū)動(dòng)器增加一個(gè)高速讀緩存,對(duì)于同一數(shù)據(jù)地址,數(shù)據(jù)使用者只對(duì)數(shù)據(jù)進(jìn)行讀取操作。該實(shí)例中的低速存儲(chǔ)介質(zhì)指光盤驅(qū)動(dòng)器,緩存的存儲(chǔ)介質(zhì)使用操作系統(tǒng)管理的動(dòng)態(tài)內(nèi)存。該實(shí)例假設(shè)只讀設(shè)備數(shù)據(jù)訪問(wèn)的地址為20位,該緩存分為256個(gè)緩存區(qū)域,每個(gè)緩存區(qū)域包含64個(gè)數(shù)據(jù)塊。每個(gè)數(shù)據(jù)塊的大小是4K字節(jié),每個(gè)數(shù)據(jù)塊哈希值為256位,那么整個(gè)緩存的數(shù)據(jù)塊容量總和是64M字節(jié)。數(shù)據(jù)使用者訪問(wèn)緩存時(shí)首先定位緩存區(qū)域,緩存區(qū)域一般由數(shù)據(jù)地址的高8位確定,數(shù)據(jù)地址標(biāo)簽包含數(shù)據(jù)地址的低12位,每個(gè)數(shù)據(jù)塊最多可以對(duì)應(yīng)四個(gè)數(shù)據(jù)地址標(biāo)簽,使用四個(gè)數(shù)據(jù)地址標(biāo)簽來(lái)存儲(chǔ)該數(shù)據(jù)塊對(duì)應(yīng)的訪問(wèn)數(shù)據(jù)地址。緩存替換信息包括最近最少使用(LRU)算法需要使用的數(shù)據(jù)塊訪問(wèn)相對(duì)時(shí)間信息以及數(shù)據(jù)塊的冗余度,數(shù)據(jù)冗余度等于數(shù)據(jù)塊對(duì)應(yīng)的有效數(shù)據(jù)地址標(biāo)簽的個(gè)數(shù),其值為O至4。在使用緩存替換算法選擇需要被替換的數(shù)據(jù)塊時(shí),首先在數(shù)據(jù)冗余度為O的數(shù)據(jù)塊中使用LRU算法選擇需要被替換的數(shù)據(jù)塊,如果沒(méi)有數(shù)據(jù)冗余度為O的數(shù)據(jù)塊,則在數(shù)據(jù)冗余度為I的數(shù)據(jù)塊中選擇,以此類推。這樣的緩存替換算法將優(yōu)先保留數(shù)據(jù)冗余度高的數(shù)據(jù)塊,以便覆蓋更多的數(shù)據(jù)地址,從而提高緩存的有效容量。
[0052]參照?qǐng)D2-3,本實(shí)例只讀緩存的去冗余方法,包括如下步驟:
[0053]a)主控模塊讀取數(shù)據(jù)時(shí),根據(jù)讀取的訪問(wèn)數(shù)據(jù)地址的高8位確定緩存區(qū)域,搜索緩存區(qū)域中所有數(shù)據(jù)地址標(biāo)簽單元中的數(shù)據(jù)地址標(biāo)簽,若數(shù)據(jù)地址標(biāo)簽單元中包含所述訪問(wèn)數(shù)據(jù)地址,則讀取訪問(wèn)數(shù)據(jù)地址對(duì)應(yīng)數(shù)據(jù)塊中的數(shù)據(jù)并將數(shù)據(jù)返回到主控模塊,同時(shí)更新緩存替換信息單元中的替換信息,否則,進(jìn)入步驟b;
[0054]b)從低速存儲(chǔ)介質(zhì)中讀取所述訪問(wèn)數(shù)據(jù)地址對(duì)應(yīng)的訪問(wèn)數(shù)據(jù)并將數(shù)據(jù)返回到主控模塊,同時(shí)主控模塊計(jì)算訪問(wèn)數(shù)據(jù)的哈希值;
[0055]c)將訪問(wèn)數(shù)據(jù)的哈希值與緩存區(qū)域中所有數(shù)據(jù)塊哈希值單元中的哈希值進(jìn)行比較,若緩存區(qū)域中包含訪問(wèn)數(shù)據(jù)的哈希值,檢測(cè)該哈希值對(duì)應(yīng)的數(shù)據(jù)塊已有有效的數(shù)據(jù)地址標(biāo)簽,數(shù)據(jù)地址標(biāo)簽單元中數(shù)據(jù)地址標(biāo)簽是否已滿,若已經(jīng)有四個(gè)有效的數(shù)據(jù)地址標(biāo)簽了,則隨機(jī)刪除一個(gè)已有數(shù)據(jù)地址標(biāo)簽,替換為當(dāng)前訪問(wèn)數(shù)據(jù)地址,若未滿,則將所述訪問(wèn)數(shù)據(jù)地址存儲(chǔ)到哈希值相同的索引模塊的數(shù)據(jù)地址標(biāo)簽單元中,同時(shí)更新緩存替換信息單元中的替換信息,若緩存中不包含訪問(wèn)數(shù)據(jù)的哈希值,進(jìn)入步驟d ;
[0056]d)檢測(cè)緩存區(qū)域是否已滿,若緩存未滿,將所述訪問(wèn)數(shù)據(jù)寫入緩存區(qū)域的數(shù)據(jù)塊中,進(jìn)入步驟e,否則,根據(jù)緩存替換算法選擇需要被替換的數(shù)據(jù)塊,將訪問(wèn)數(shù)據(jù)寫入需要被替換的數(shù)據(jù)塊中,進(jìn)入步驟e;
[0057]e)更新與步驟d中數(shù)據(jù)塊對(duì)應(yīng)的索引模塊,將所述訪問(wèn)數(shù)據(jù)地址存儲(chǔ)到數(shù)據(jù)地址標(biāo)簽單元中,更新緩存替換信息單元中的替換信息,將緩存區(qū)域中所有數(shù)據(jù)塊根據(jù)數(shù)據(jù)冗余度從低到高進(jìn)行排序,選擇數(shù)據(jù)冗余度相同且數(shù)據(jù)冗余度最低的數(shù)據(jù)塊中,采用LRU算法計(jì)算出需要被替換的數(shù)據(jù)塊,并將步驟b中計(jì)算得到的哈希值寫入數(shù)據(jù)塊哈希值單元中存儲(chǔ)。
[0058]參照?qǐng)D4-5,本發(fā)明的另一技術(shù)方案:緩存的去冗余方法,所述方法包括操作類型判斷步驟、讀操作去冗余步驟和寫操作步驟,該方法主要針對(duì)硬盤文件緩存,并將硬盤文件緩存區(qū)分為只讀緩存和讀寫緩存兩種。采用該方法進(jìn)行緩存時(shí),具有如下特點(diǎn):其一,需要支持對(duì)數(shù)據(jù)的寫操作;其二,文件的大小是可變的,而不是固定的大?。黄淙?,數(shù)據(jù)讀取的地址是文件的路徑和文件名而不是一個(gè)固定長(zhǎng)度的數(shù)據(jù)地址。本文中為了簡(jiǎn)化說(shuō)明,在此設(shè)計(jì)實(shí)例中我們假設(shè)操作系統(tǒng)可以將文件的路徑和文件名通過(guò)一個(gè)表格映射為一個(gè)20位的地址。
[0059]本發(fā)明的緩存的去冗余方法具體為:
[0060]操作類型判斷步驟:判斷主控模塊的操作類型,若是讀操作,則進(jìn)入讀操作去冗余步驟,若是寫操作,則進(jìn)入寫操作步驟;
[0061]讀操作去冗余步驟:根據(jù)讀操作的訪問(wèn)數(shù)據(jù)地址,判斷訪問(wèn)數(shù)據(jù)地址是否已保存在只讀緩存或讀寫緩存中,若訪問(wèn)數(shù)據(jù)地址均不在只讀緩存和讀寫緩存中,則進(jìn)入步驟A,若訪問(wèn)數(shù)據(jù)地址已保存在讀寫緩存中存儲(chǔ),則進(jìn)入步驟B,若訪問(wèn)數(shù)據(jù)地址已保存在只讀緩存中,則進(jìn)入步驟C,否則,返回操作類型判斷步驟;
[0062]寫操作步驟:根據(jù)寫操作的訪問(wèn)數(shù)據(jù)地址,判斷訪問(wèn)數(shù)據(jù)地址是否已保存在只讀緩存和讀寫緩存中,若訪問(wèn)數(shù)據(jù)地址均不在只讀緩存和讀寫緩存中,則進(jìn)入步驟B,若訪問(wèn)數(shù)據(jù)地址已保存在讀寫緩存中存儲(chǔ),則進(jìn)入步驟B,若訪問(wèn)數(shù)據(jù)地址已保存在只讀緩存中,則進(jìn)入步驟D,否則,返回操作類型判斷步驟;
[0063]A)從低速存儲(chǔ)介質(zhì)中讀取所述訪問(wèn)數(shù)據(jù)地址對(duì)應(yīng)的訪問(wèn)數(shù)據(jù)并將數(shù)據(jù)返回到主控模塊,同時(shí)主控模塊計(jì)算訪問(wèn)數(shù)據(jù)的哈希值;將訪問(wèn)數(shù)據(jù)的哈希值與只讀緩存中所有數(shù)據(jù)塊哈希值單元中的哈希值進(jìn)行比較,若只讀緩存中包含訪問(wèn)數(shù)據(jù)的哈希值,則將所述訪問(wèn)數(shù)據(jù)地址存儲(chǔ)到哈希值相同的索引模塊的數(shù)據(jù)地址標(biāo)簽單元中,同時(shí)更新緩存替換信息單元中的替換信息,返回操作類型判斷步驟,否則,進(jìn)入步驟Al ;
[0064]Al)檢測(cè)只讀緩存是否已滿,若緩存未滿,將所述訪問(wèn)數(shù)據(jù)寫入緩存的數(shù)據(jù)塊中,進(jìn)入步驟A2,否則,根據(jù)緩存替換算法選擇需要被替換的數(shù)據(jù)塊,將訪問(wèn)數(shù)據(jù)寫入需要被替換的數(shù)據(jù)塊中,進(jìn)入步驟A2;
[0065]A2)更新與步驟Al中數(shù)據(jù)塊對(duì)應(yīng)的索引模塊,將所述訪問(wèn)數(shù)據(jù)地址存儲(chǔ)到數(shù)據(jù)地址標(biāo)簽單元中,更新緩存替換信息單元中的替換信息,并將步驟A中計(jì)算得到的哈希值寫入數(shù)據(jù)塊哈希值單元中存儲(chǔ),返回操作類型判斷步驟;
[0066]B)由讀寫緩存處進(jìn)行讀寫訪問(wèn),返回操作類型判斷步驟;
[0067]C)根據(jù)讀取的訪問(wèn)數(shù)據(jù)地址,讀取訪問(wèn)數(shù)據(jù)地址對(duì)應(yīng)數(shù)據(jù)塊中的數(shù)據(jù)并將數(shù)據(jù)返回到主控模塊,同時(shí)更新緩存替換信息單元中的替換信息,返回操作類型判斷步驟;
[0068]D)在只讀緩存中刪除寫操作地址對(duì)應(yīng)的數(shù)據(jù)地址標(biāo)簽,返回步驟B。
[0069]其中,更新緩存替換信息單元中的替換信息具體為:更新數(shù)據(jù)塊的訪問(wèn)記錄和數(shù)據(jù)冗余度,所述數(shù)據(jù)冗余度為數(shù)據(jù)地址標(biāo)簽單元中有效數(shù)據(jù)地址標(biāo)簽的個(gè)數(shù)。步驟Al中的緩存替換算法具體為:將緩存中所有數(shù)據(jù)塊根據(jù)數(shù)據(jù)冗余度從低到高進(jìn)行排序,選擇數(shù)據(jù)冗余度相同且數(shù)據(jù)冗余度最低的數(shù)據(jù)塊中,采用LRU算法計(jì)算出需要被替換的數(shù)據(jù)塊。
[0070]參照?qǐng)D4,本發(fā)明的緩存的去冗余方法的緩存結(jié)構(gòu)框圖,在利用本發(fā)明的方法消除冗余時(shí),把文件分為兩類,第一類是有大量讀操作,但是很少有寫操作的文件,該類文件擁有比較穩(wěn)定的冗余性。比如在硬盤用于存儲(chǔ)多個(gè)虛擬機(jī)用戶的應(yīng)用軟件時(shí),同一個(gè)軟件的文件在不同用戶的存儲(chǔ)空間中實(shí)際上包含同樣的內(nèi)容,并且,這些軟件的大部分文件是不需要更改的。第二類文件是有大量的寫操作的文件,比如用戶配置信息等,這類文件通常只有很少的冗余性,并且其內(nèi)容多變,難于在緩存中實(shí)現(xiàn)高效的去冗余?;谝陨戏诸?,本發(fā)明將第一類文件緩存于本發(fā)明提出的去冗余緩存中,并且只支持讀操作,由圖4中的只讀緩存完成該功能,只讀緩存的設(shè)計(jì)與本發(fā)明中只讀緩存的去冗余方法相同。第二類文件緩存于不帶去冗余功能的傳統(tǒng)緩存中,由圖4中的讀寫緩存完成該功能。并且,只讀緩存和讀寫緩存的內(nèi)容具有互斥性,同一數(shù)據(jù)地址的文件只能在兩種緩存中的一個(gè)出現(xiàn)。
[0071]本發(fā)明的緩存的去冗余方法適用于緩存的讀操作和寫操作,對(duì)于只讀緩存和讀寫緩存都不包括的數(shù)據(jù)按照第一類文件處理,并將其存儲(chǔ)于只讀緩存中,對(duì)于有任何寫操作的文件,都按照第二類文件處理,由讀寫緩存完成數(shù)據(jù)訪問(wèn)。通過(guò)讀寫操作的區(qū)分及訪問(wèn)地址的存儲(chǔ)位置來(lái)判斷是否應(yīng)用緩存去冗余方法,針對(duì)與只讀緩存,使用數(shù)據(jù)塊哈希值比較尋找并合并冗余數(shù)據(jù),同時(shí)給每個(gè)數(shù)據(jù)塊增加了多個(gè)數(shù)據(jù)地址標(biāo)簽,已達(dá)到對(duì)應(yīng)不同數(shù)據(jù)地址的冗余數(shù)據(jù)塊在緩存中共享一個(gè)數(shù)據(jù)塊的目的,節(jié)省了緩存的存儲(chǔ)空間,同時(shí)結(jié)合數(shù)據(jù)的冗余度優(yōu)化了緩存替換算法,針對(duì)于讀寫緩存則采用普通緩存方式,該方法尤其適合文件類緩存。
[0072]上述說(shuō)明中,凡未加特別說(shuō)明的,均采用現(xiàn)有技術(shù)中的技術(shù)手段。
【權(quán)利要求】
1.一種只讀緩存的去冗余系統(tǒng),包括主控模塊、若干用于存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)塊和若干用于索引數(shù)據(jù)塊的索引模塊,主控模塊分別與數(shù)據(jù)塊和索引模塊相連,數(shù)據(jù)塊與索引模塊一一對(duì)應(yīng),索引模塊內(nèi)設(shè)有用于存儲(chǔ)數(shù)據(jù)塊訪問(wèn)記錄的緩存替換信息單元和用于存儲(chǔ)低速存儲(chǔ)介質(zhì)上訪問(wèn)數(shù)據(jù)地址的數(shù)據(jù)地址標(biāo)簽單元,其特征在于,所述索引模塊內(nèi)還設(shè)有用于存儲(chǔ)數(shù)據(jù)塊哈希值的數(shù)據(jù)塊哈希值單元,主控模塊計(jì)算數(shù)據(jù)塊的哈希值并將哈希值寫入數(shù)據(jù)塊哈希值單元中存儲(chǔ),所述數(shù)據(jù)地址標(biāo)簽單元內(nèi)設(shè)有多個(gè)的數(shù)據(jù)地址標(biāo)簽,同一數(shù)據(jù)地址標(biāo)簽單元中所有的數(shù)據(jù)地址標(biāo)簽在低速存儲(chǔ)介質(zhì)上指代的數(shù)據(jù)內(nèi)容相同,同一數(shù)據(jù)地址標(biāo)簽單元中所有的數(shù)據(jù)地址標(biāo)簽在緩存中均指代對(duì)應(yīng)的同一數(shù)據(jù)塊。
2.根據(jù)權(quán)利要求1所述的只讀緩存的去冗余系統(tǒng),其特征在于,所述緩存替換信息單元內(nèi)存儲(chǔ)有數(shù)據(jù)塊的訪問(wèn)記錄和數(shù)據(jù)冗余度,所述數(shù)據(jù)冗余度為數(shù)據(jù)地址標(biāo)簽單元中有效數(shù)據(jù)地址標(biāo)簽的個(gè)數(shù)。
3.一種只讀緩存的去冗余方法,其特征在于,所述方法基于權(quán)利要求1所述的去冗余系統(tǒng),所述方法包括如下步驟: a)主控模塊讀取數(shù)據(jù)時(shí),根據(jù)讀取的訪問(wèn)數(shù)據(jù)地址,搜索只讀緩存中所有數(shù)據(jù)地址標(biāo)簽單元中的數(shù)據(jù)地址標(biāo)簽,若數(shù)據(jù)地址標(biāo)簽單元中包含所述訪問(wèn)數(shù)據(jù)地址,則讀取訪問(wèn)數(shù)據(jù)地址對(duì)應(yīng)數(shù)據(jù)塊中的數(shù)據(jù)并將數(shù)據(jù)返回到主控模塊,同時(shí)更新緩存替換信息單元中的替換信息,否則,進(jìn)入步驟b; b)從低速存儲(chǔ)介質(zhì)中讀取所述訪問(wèn)數(shù)據(jù)地址對(duì)應(yīng)的訪問(wèn)數(shù)據(jù)并將數(shù)據(jù)返回到主控模塊,同時(shí)主控模塊 計(jì)算訪問(wèn)數(shù)據(jù)的哈希值; c)將訪問(wèn)數(shù)據(jù)的哈希值與緩存中所有數(shù)據(jù)塊哈希值單元中的哈希值進(jìn)行比較,若緩存中包含訪問(wèn)數(shù)據(jù)的哈希值,則將所述訪問(wèn)數(shù)據(jù)地址存儲(chǔ)到哈希值相同的索引模塊的數(shù)據(jù)地址標(biāo)簽單元中,同時(shí)更新緩存替換信息單元中的替換信息,否則,進(jìn)入步驟d ; d)檢測(cè)緩存是否已滿,若緩存未滿,將所述訪問(wèn)數(shù)據(jù)寫入緩存的數(shù)據(jù)塊中,進(jìn)入步驟e,否則,根據(jù)緩存替換算法選擇需要被替換的數(shù)據(jù)塊,將訪問(wèn)數(shù)據(jù)寫入需要被替換的數(shù)據(jù)塊中,進(jìn)入步驟e; e)更新與步驟d中數(shù)據(jù)塊對(duì)應(yīng)的索引模塊,將所述訪問(wèn)數(shù)據(jù)地址存儲(chǔ)到數(shù)據(jù)地址標(biāo)簽單元中,更新緩存替換信息單元中的替換信息,并將步驟b中計(jì)算得到的哈希值寫入數(shù)據(jù)塊哈希值單元中存儲(chǔ)。
4.根據(jù)權(quán)利要求3所述的只讀緩存的去冗余方法,其特征在于,所述更新緩存替換信息單元中的替換信息具體為:更新數(shù)據(jù)塊的訪問(wèn)記錄和數(shù)據(jù)冗余度,所述數(shù)據(jù)冗余度為數(shù)據(jù)地址標(biāo)簽單元中有效數(shù)據(jù)地址標(biāo)簽的個(gè)數(shù)。
5.根據(jù)權(quán)利要求4所述的只讀緩存的去冗余方法,其特征在于,所述步驟d中的緩存替換算法具體為:將緩存中所有數(shù)據(jù)塊根據(jù)數(shù)據(jù)冗余度從低到高進(jìn)行排序,選擇數(shù)據(jù)冗余度相同且數(shù)據(jù)冗余度最低的數(shù)據(jù)塊,采用LRU算法計(jì)算出需要被替換的數(shù)據(jù)塊。
6.根據(jù)權(quán)利要求3所述的只讀緩存的去冗余方法,其特征在于,所述哈希值是采用哈希函數(shù)計(jì)算得到,哈希函數(shù)為MD5、SHA或SHA256中的一種。
7.一種緩存的去冗余方法,其特征在于,所述方法基于權(quán)利要求1所述的去冗余系統(tǒng),所述方法包括操作類型判斷步驟、讀操作去冗余步驟和寫操作步驟,具體為: 操作類型判斷步驟:判斷主控模塊的操作類型,若是讀操作,則進(jìn)入讀操作去冗余步驟,若是寫操作,則進(jìn)入寫操作步驟; 讀操作去冗余步驟:根據(jù)讀操作的訪問(wèn)數(shù)據(jù)地址,判斷訪問(wèn)數(shù)據(jù)地址是否已保存在只讀緩存或讀寫緩存中,若訪問(wèn)數(shù)據(jù)地址均不在只讀緩存和讀寫緩存中,則進(jìn)入步驟A,若訪問(wèn)數(shù)據(jù)地址已保存在讀寫緩存中存儲(chǔ),則進(jìn)入步驟B,若訪問(wèn)數(shù)據(jù)地址已保存在只讀緩存中,則進(jìn)入步驟C,否則,返回操作類型判斷步驟; 寫操作步驟:根據(jù)寫操作的訪問(wèn)數(shù)據(jù)地址,判斷訪問(wèn)數(shù)據(jù)地址是否已保存在只讀緩存和讀寫緩存中,若訪問(wèn)數(shù)據(jù)地址均不在只讀緩存和讀寫緩存中,則進(jìn)入步驟B,若訪問(wèn)數(shù)據(jù)地址已保存在讀寫緩存中存儲(chǔ),則進(jìn)入步驟B,若訪問(wèn)數(shù)據(jù)地址已保存在只讀緩存中,則進(jìn)入步驟D, 否則,返回操作類型判斷步驟; A)從低速存儲(chǔ)介質(zhì)中讀取所述訪問(wèn)數(shù)據(jù)地址對(duì)應(yīng)的訪問(wèn)數(shù)據(jù)并將數(shù)據(jù)返回到主控模塊,同時(shí)主控模塊計(jì)算訪問(wèn)數(shù)據(jù)的哈希值;將訪問(wèn)數(shù)據(jù)的哈希值與只讀緩存中所有數(shù)據(jù)塊哈希值單元中的哈希值進(jìn)行比較,若只讀緩存中包含訪問(wèn)數(shù)據(jù)的哈希值,則將所述訪問(wèn)數(shù)據(jù)地址存儲(chǔ)到哈希值相同的索引模塊的數(shù)據(jù)地址標(biāo)簽單元中,同時(shí)更新緩存替換信息單元中的替換信息,返回操作類型判斷步驟,否則,進(jìn)入步驟Al ; Al)檢測(cè)只讀緩存是否已滿,若緩存未滿,將所述訪問(wèn)數(shù)據(jù)寫入緩存的數(shù)據(jù)塊中,進(jìn)入步驟A2,否則,根據(jù)緩存替換算法選擇需要被替換的數(shù)據(jù)塊,將訪問(wèn)數(shù)據(jù)寫入需要被替換的數(shù)據(jù)塊中,進(jìn)入步驟A2; A2)更新與步驟Al中數(shù)據(jù)塊對(duì)應(yīng)的索引模塊,將所述訪問(wèn)數(shù)據(jù)地址存儲(chǔ)到數(shù)據(jù)地址標(biāo)簽單元中,更新緩存替換信息單元中的替換信息,并將步驟A中計(jì)算得到的哈希值寫入數(shù)據(jù)塊哈希值單元中存儲(chǔ),返回操作類型判斷步驟; B)由讀寫緩存處進(jìn)行讀寫訪問(wèn),返回操作類型判斷步驟; C)根據(jù)讀取的訪問(wèn)數(shù)據(jù)地址,讀取訪問(wèn)數(shù)據(jù)地址對(duì)應(yīng)數(shù)據(jù)塊中的數(shù)據(jù)并將數(shù)據(jù)返回到主控模塊,同時(shí)更新緩存替換信息單元中的替換信息,返回操作類型判斷步驟; D)在只讀緩存中刪除寫操作地址對(duì)應(yīng)的數(shù)據(jù)地址標(biāo)簽,返回步驟B。
8.根據(jù)權(quán)利要求7所述的緩存的去冗余方法,其特征在于,所述更新緩存替換信息單元中的替換信息具體為:更新數(shù)據(jù)塊的訪問(wèn)記錄和數(shù)據(jù)冗余度,所述數(shù)據(jù)冗余度為數(shù)據(jù)地址標(biāo)簽單元中有效數(shù)據(jù)地址標(biāo)簽的個(gè)數(shù)。
9.根據(jù)權(quán)利要求8所述的緩存的去冗余方法,其特征在于,所述步驟Al中的緩存替換算法具體為:將緩存中所有數(shù)據(jù)塊根據(jù)數(shù)據(jù)冗余度從低到高進(jìn)行排序,選擇數(shù)據(jù)冗余度相同且數(shù)據(jù)冗余度最低的數(shù)據(jù)塊,采用LRU算法計(jì)算出需要被替換的數(shù)據(jù)塊。
【文檔編號(hào)】G06F12/08GK103942161SQ201410168498
【公開(kāi)日】2014年7月23日 申請(qǐng)日期:2014年4月24日 優(yōu)先權(quán)日:2014年4月24日
【發(fā)明者】高宏亮 申請(qǐng)人:杭州冰特科技有限公司