一種目錄Cache一致性方法
【專利摘要】本發(fā)明提供一種目錄Cache一致性方法,其實(shí)現(xiàn)過(guò)程為:結(jié)合有限目錄與全映射目錄,在使用了存儲(chǔ)器Cache的基礎(chǔ)上設(shè)置雙協(xié)議的兩級(jí)目錄存儲(chǔ)結(jié)構(gòu);并在存儲(chǔ)器層和存儲(chǔ)器Cache層之間的替換算法使用一種共享數(shù)加權(quán)的偽最近最少使用算法來(lái)保證。該一種目錄Cache一致性方法和現(xiàn)有技術(shù)相比,解決了全映射目錄占用過(guò)大的存儲(chǔ)開(kāi)銷,有限目錄會(huì)受目錄項(xiàng)溢出的限制,鏈?zhǔn)侥夸浀臅r(shí)間有效性較低等問(wèn)題,實(shí)用性強(qiáng),易于推廣。
【專利說(shuō)明】一種目錄Cache —致性方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)【技術(shù)領(lǐng)域】,更具體地說(shuō)是目錄Cache —致性方法。
【背景技術(shù)】
[0002]在多級(jí)網(wǎng)絡(luò)中,高速緩存目錄存放了有關(guān)高速緩存行拷貝駐留在哪里的信息,以支持高速緩存一致性。各種目錄方法的主要差別是目錄如何維護(hù)信息和存放什么信息。第一個(gè)目錄方案是用一個(gè)中心目錄存放所有高速緩存目錄的拷貝,中心目錄能提供為保證一致性所需要的全部信息。因此,其容量非常大且必須采用聯(lián)想方法進(jìn)行檢索,這和單個(gè)高速緩存的目錄類似。大型多處理機(jī)系統(tǒng)采用中心目錄會(huì)有沖突和檢索時(shí)間過(guò)長(zhǎng)兩個(gè)缺點(diǎn)。分布式目錄方案是由Censier和Feautrier提出來(lái)的。在分布式目錄中每個(gè)存儲(chǔ)器模塊維護(hù)各自的目錄,目錄中記錄著每個(gè)存儲(chǔ)器塊的狀態(tài)和當(dāng)前的信息,其中狀態(tài)信息是本地的,而當(dāng)前信息指明哪些高速緩存中有該存儲(chǔ)器塊的拷貝。不同類型的目錄方法可分為全映射目錄、有限目錄和鏈?zhǔn)侥夸浫?。其中全映射目錄占用過(guò)大的存儲(chǔ)開(kāi)銷,有限目錄會(huì)受目錄項(xiàng)溢出的限制,鏈?zhǔn)侥夸浀臅r(shí)間有效性較低等問(wèn)題?;诖?,本發(fā)明提供一種改進(jìn)的目錄Cache 一致性方法,將有限目錄與全映射目錄結(jié)合在一起來(lái)解決上述問(wèn)題。
【發(fā)明內(nèi)容】
[0003]本發(fā)明的技術(shù)任務(wù)是解決現(xiàn)有技術(shù)的不足,提供一種操作簡(jiǎn)單、易于實(shí)現(xiàn)、改進(jìn)的目錄Cache —致性方法。
[0004]本發(fā)明的技術(shù)方案是按以下方式實(shí)現(xiàn)的,該一種目錄Cache—致性方法,其具體實(shí)現(xiàn)過(guò)程為:
一、設(shè)置兩級(jí)目錄存儲(chǔ)結(jié)構(gòu),即全映射目錄和有限目錄,其中全映射目錄存放與全局存儲(chǔ)器中每個(gè)塊有關(guān)的數(shù)據(jù),使得系統(tǒng)中的每個(gè)高速緩存可以同時(shí)存儲(chǔ)任何數(shù)據(jù)塊的拷貝,每個(gè)目錄項(xiàng)包含N個(gè)指針,N是系統(tǒng)中處理器的數(shù)目;有限目錄與全映射目錄不同之處為其每個(gè)目錄項(xiàng)均含有固定數(shù)目的指針;
二、在存儲(chǔ)器層和存儲(chǔ)器Cache層之間使用的共享數(shù)加權(quán)的偽最近最少使用算法:假定存儲(chǔ)器層的每個(gè)目錄項(xiàng)使用Q個(gè)指針,則替換時(shí)只對(duì)共享數(shù)小于Q的高速緩存行使用該算法進(jìn)行替換;當(dāng)存儲(chǔ)器Cache中所有高速緩存行的共享數(shù)皆大于Q時(shí),將共享數(shù)最小的高速緩存行替換出存儲(chǔ)器Cache并且進(jìn)行相應(yīng)作廢處理。
[0005]所述的兩級(jí)目錄存儲(chǔ)結(jié)構(gòu)中,用全映射方法實(shí)現(xiàn)的目錄項(xiàng)中有一個(gè)處理器位和一個(gè)臟位:前者表示相應(yīng)處理器的高速緩存塊存在或不存在的狀態(tài);后者如果為“1”,而且有一個(gè)也只有一個(gè)處理器位為“ 1”,則該處理器就可以對(duì)該塊進(jìn)行寫(xiě)操作,高速緩存的每個(gè)塊均有兩個(gè)狀態(tài)位:一位表示塊是否有效;另一位表示有效塊是否允許寫(xiě)。
[0006]所述共享數(shù)加權(quán)的偽最近最少使用算法的詳細(xì)內(nèi)容為:
1)若高速緩存行在存儲(chǔ)器Cache,則執(zhí)行2,否則執(zhí)行5;
2)從存儲(chǔ)器Cache中讀取數(shù)據(jù); 3)若為新的共享節(jié)點(diǎn),則執(zhí)行4,否則執(zhí)行14;
4)修改Cache目錄項(xiàng),執(zhí)行14;
5)從存儲(chǔ)器中讀取數(shù)據(jù);
6)若為新的共享節(jié)點(diǎn),則執(zhí)行7,否則執(zhí)行9;
7)若存儲(chǔ)器目錄項(xiàng)溢出,則執(zhí)行8,否則執(zhí)行9;
8)記錄溢出項(xiàng);
9)若Cache中有空閑目錄項(xiàng),則執(zhí)行10,否則執(zhí)行11;
10)將數(shù)據(jù)加入Cache并根據(jù)存儲(chǔ)器目錄項(xiàng)修改Cache目錄項(xiàng),跳至14;
11)若Cache中有共享數(shù)小于Q的目錄項(xiàng),則執(zhí)行12,否則執(zhí)行13;
12)在共享數(shù)小于Q的高速緩存行中使用LRU算法選擇一塊數(shù)據(jù)替換出Cache,執(zhí)行10;
13)選擇一共享最小的高速緩存行進(jìn)行共享作廢的相應(yīng)處理,執(zhí)行10;
14)完成。
[0007]本發(fā)明與現(xiàn)有技術(shù)相比所產(chǎn)生的有益效果是:
本發(fā)明的一種目錄Cache —致性方法將有限目錄與全映射目錄結(jié)合在一起,進(jìn)而使用兩級(jí)目錄的Cache—致性方法,解決了全映射目錄占用過(guò)大的存儲(chǔ)開(kāi)銷,有限目錄會(huì)受目錄項(xiàng)溢出的限制,鏈?zhǔn)侥夸浀臅r(shí)間有效性較低等問(wèn)題。在存儲(chǔ)器層使用有限目錄,由于有限目錄單個(gè)目錄項(xiàng)占用空間小,因此能夠使需要大量目錄項(xiàng)的存儲(chǔ)器層節(jié)省不少存儲(chǔ)空間。同時(shí),在存儲(chǔ)器Cache層使用全映射目錄,Cache容量有限,所以即使單個(gè)目錄項(xiàng)占用空間大,總共占用的空間也不會(huì)多。不但解決了有限目錄的目錄項(xiàng)溢出問(wèn)題,而且使用頻率最高的數(shù)據(jù)及其目錄項(xiàng)一直處于使用全映射目錄的存儲(chǔ)器Cache層中,因而這種兩級(jí)式存儲(chǔ)結(jié)構(gòu)的訪問(wèn)速度可以與其第一級(jí)存儲(chǔ)器即存儲(chǔ)器Cache速度相當(dāng),實(shí)用性強(qiáng),易于推廣。
【專利附圖】
【附圖說(shuō)明】
[0008]附圖1為兩級(jí)目錄存儲(chǔ)結(jié)構(gòu)示意圖。
[0009]附圖2為本發(fā)明中共享數(shù)加權(quán)的偽最近最少使用算法流程圖。
【具體實(shí)施方式】
[0010]下面結(jié)合附圖對(duì)本發(fā)明的一種目錄Cache —致性方法作以下詳細(xì)說(shuō)明。
[0011]如附圖1所示,本發(fā)明提出了一種目錄Cache—致性方法,其具體實(shí)現(xiàn)過(guò)程為:
設(shè)置兩級(jí)目錄存儲(chǔ)結(jié)構(gòu),將有限目錄與全映射目錄結(jié)合在一起,進(jìn)而使用兩級(jí)目錄的
Cache 一致性方法,解決了全映射目錄占用過(guò)大的存儲(chǔ)開(kāi)銷,全映射目錄存放與全局存儲(chǔ)器中每個(gè)塊有關(guān)的數(shù)據(jù),使得系統(tǒng)中的每個(gè)高速緩存可以同時(shí)存儲(chǔ)任何數(shù)據(jù)塊的拷貝,每個(gè)目錄項(xiàng)包含N個(gè)指針,N是系統(tǒng)中處理器的數(shù)目。有限目錄與全映射目錄不同之處是不管系統(tǒng)規(guī)模有多大,其每個(gè)目錄項(xiàng)均含有固定數(shù)目的指針。
[0012]在存儲(chǔ)器層和存儲(chǔ)器Cache層之間使用替換算法,即共享數(shù)加權(quán)的偽最近最少使用的LRU算法,所以共享數(shù)目超過(guò)存儲(chǔ)器層有限目錄指針數(shù)的高速緩存行都能保證在存儲(chǔ)器Cache中,實(shí)現(xiàn)利用相對(duì)較少的存儲(chǔ)空間保障高速緩存數(shù)據(jù)一致性。
[0013]在上述兩級(jí)目錄存儲(chǔ)結(jié)構(gòu)中,用全映射方法實(shí)現(xiàn)的目錄項(xiàng)中有一個(gè)處理器位和一個(gè)臟位:前者表示相應(yīng)處理器的高速緩存塊存在或不存在的狀態(tài);后者如果為“1”,而且有一個(gè)也只有一個(gè)處理器位為“1”,則該處理器就可以對(duì)該塊進(jìn)行寫(xiě)操作。高速緩存的每塊有兩個(gè)狀態(tài)位:一位表示塊是否有效;另一位表示有效塊是否允許寫(xiě)。高速緩存一致性方法必須保證存儲(chǔ)器目錄的狀態(tài)位與高速緩存的狀態(tài)位一致。有限目錄方法可以緩解目錄過(guò)大的問(wèn)題,如果任一數(shù)據(jù)塊同時(shí)在高速緩存中的拷貝數(shù)目有一定限制,那么目錄的大小不會(huì)超過(guò)某個(gè)常數(shù)。
[0014]所述的共享數(shù)加權(quán)的偽最近最少使用LRU算法,共享數(shù)目超過(guò)存儲(chǔ)器層有限目錄指針數(shù)的高速緩存行都能保證在存儲(chǔ)Cache中。假定存儲(chǔ)器層的每個(gè)目錄項(xiàng)使用Q個(gè)指針,則替換時(shí)只對(duì)共享數(shù)小于Q的高速緩存行使用LRU替換算法進(jìn)行替換。只有當(dāng)存儲(chǔ)器Cache中所有高速緩存行的共享數(shù)皆大于Q時(shí),才將一共享數(shù)最小的高速緩存行替換出存儲(chǔ)器Cache并且進(jìn)行相應(yīng)作廢處理。而這種目錄項(xiàng)溢出的情況能夠通過(guò)適當(dāng)設(shè)置存儲(chǔ)器Cache的大小來(lái)避免。
[0015]如附圖2所示,所述共享數(shù)加權(quán)的偽最近最少使用算法的詳細(xì)內(nèi)容為:
I)若高速緩存行在存儲(chǔ)器Cache,則執(zhí)行2,否則執(zhí)行5。
[0016]2 )從存儲(chǔ)器Cache中讀取數(shù)據(jù)。
[0017]3)若為新的共享節(jié)點(diǎn),則執(zhí)行4,否則執(zhí)行14。
[0018]4)修改Cache目錄項(xiàng),執(zhí)行14。
[0019]5)從存儲(chǔ)器中讀取數(shù)據(jù)。
[0020]6)若為新的共享節(jié)點(diǎn),則執(zhí)行7,否則執(zhí)行9。
[0021]7)若存儲(chǔ)器目錄項(xiàng)溢出,則執(zhí)行8,否則執(zhí)行9。
[0022]8)記錄溢出項(xiàng)。
[0023]9)若Cache中有空閑目錄項(xiàng),則執(zhí)行10,否則執(zhí)行11。
[0024]10)將數(shù)據(jù)加入Cache并根據(jù)存儲(chǔ)器目錄項(xiàng)修改Cache目錄項(xiàng),跳至14。
[0025]11)若Cache中有共享數(shù)小于Q的目錄項(xiàng),則執(zhí)行12,否則執(zhí)行13。
[0026]12)在共享數(shù)小于Q的高速緩存行中使用LRU算法選擇一塊數(shù)據(jù)替換出Cache,執(zhí)行10。
[0027]13)選擇一共享最小的高速緩存行進(jìn)行共享作廢的相應(yīng)處理,執(zhí)行10。
[0028]14)完成。
[0029]至此,已經(jīng)完整實(shí)現(xiàn)了一種改進(jìn)的目錄Cache—致性方法。在系統(tǒng)性能方面,根據(jù)任務(wù)的粗細(xì)粒度和應(yīng)用的時(shí)間局限性以及讀寫(xiě)操作所占比例,合理設(shè)置存儲(chǔ)器Cache和高速緩存行的大小并且使用適合的替換算法來(lái)保證存儲(chǔ)器Cache獲得較高的命中率。當(dāng)存儲(chǔ)器層的某一目錄項(xiàng)發(fā)生溢出時(shí),目錄項(xiàng)信息將會(huì)復(fù)制到存儲(chǔ)器Cache層中。而根據(jù)共享數(shù)加權(quán)的替換算法,此項(xiàng)目錄信息將一直保持在存儲(chǔ)器Cache中,直到其共享節(jié)點(diǎn)數(shù)小于存儲(chǔ)器層的有限目錄項(xiàng)指針數(shù)Q時(shí),才可以被替換出存儲(chǔ)器Cache。因此,不但解決了有限目錄的目錄項(xiàng)溢出問(wèn)題,而且使用頻率最高的數(shù)據(jù)及其目錄項(xiàng)一直處于使用全映射目錄的存儲(chǔ)器Cache層中,因而這種兩級(jí)式存儲(chǔ)結(jié)構(gòu)的訪問(wèn)速度可以與其第一級(jí)存儲(chǔ)器即存儲(chǔ)器Cache速度相當(dāng)。
[0030]當(dāng)然,本發(fā)明還可有其他多種實(shí)施例,在不背離本發(fā)明精神及其實(shí)質(zhì)的情況下,熟悉本領(lǐng)域的技術(shù)人員當(dāng)可根據(jù)本發(fā)明作出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明的權(quán)利要求的保護(hù)范圍。
【權(quán)利要求】
1.一種目錄Cache—致性方法,其特征在于其具體實(shí)現(xiàn)過(guò)程為: 一、設(shè)置兩級(jí)目錄存儲(chǔ)結(jié)構(gòu),即全映射目錄和有限目錄,其中全映射目錄存放與全局存儲(chǔ)器中每個(gè)塊有關(guān)的數(shù)據(jù),使得系統(tǒng)中的每個(gè)高速緩存可以同時(shí)存儲(chǔ)任何數(shù)據(jù)塊的拷貝,每個(gè)目錄項(xiàng)包含N個(gè)指針,N是系統(tǒng)中處理器的數(shù)目;有限目錄與全映射目錄不同之處為其每個(gè)目錄項(xiàng)均含有固定數(shù)目的指針; 二、在存儲(chǔ)器層和存儲(chǔ)器Cache層之間使用的共享數(shù)加權(quán)的偽最近最少使用算法:假定存儲(chǔ)器層的每個(gè)目錄項(xiàng)使用Q個(gè)指針,則替換時(shí)只對(duì)共享數(shù)小于Q的高速緩存行使用該算法進(jìn)行替換;當(dāng)存儲(chǔ)器Cache中所有高速緩存行的共享數(shù)皆大于Q時(shí),將共享數(shù)最小的高速緩存行替換出存儲(chǔ)器Cache并且進(jìn)行相應(yīng)作廢處理。
2.根據(jù)權(quán)利要求1所述的一種目錄Cache—致性方法,其特征在于:所述的兩級(jí)目錄存儲(chǔ)結(jié)構(gòu)中,用全映射方法實(shí)現(xiàn)的目錄項(xiàng)中有一個(gè)處理器位和一個(gè)臟位:前者表不相應(yīng)處理器的高速緩存塊存在或不存在的狀態(tài);后者如果為“1”,而且有一個(gè)也只有一個(gè)處理器位為“1”,則該處理器就可以對(duì)該塊進(jìn)行寫(xiě)操作,高速緩存的每個(gè)塊均有兩個(gè)狀態(tài)位:一位表不塊是否有效;另一位表不有效塊是否允許寫(xiě)。
3.根據(jù)權(quán)利要求2所述的一種目錄Cache—致性方法,其特征在于:所述共享數(shù)加權(quán)的偽最近最少使用算法的詳細(xì)內(nèi)容為: 1)若高速緩存行在存儲(chǔ)器Cache,則執(zhí)行2,否則執(zhí)行5; 2)從存儲(chǔ)器Cache中讀取數(shù)據(jù); 3)若為新的共享節(jié)點(diǎn),則執(zhí)行4,否則執(zhí)行14; 4)修改Cache目錄項(xiàng),執(zhí)行14; 5)從存儲(chǔ)器中讀取數(shù)據(jù); 6)若為新的共享節(jié)點(diǎn),則執(zhí)行7,否則執(zhí)行9; 7)若存儲(chǔ)器目錄項(xiàng)溢出,則執(zhí)行8,否則執(zhí)行9; 8)記錄溢出項(xiàng); 9)若Cache中有空閑目錄項(xiàng),則執(zhí)行10,否則執(zhí)行11; 10)將數(shù)據(jù)加入Cache并根據(jù)存儲(chǔ)器目錄項(xiàng)修改Cache目錄項(xiàng),跳至14; 11)若Cache中有共享數(shù)小于Q的目錄項(xiàng),則執(zhí)行12,否則執(zhí)行13; 12)在共享數(shù)小于Q的高速緩存行中使用LRU算法選擇一塊數(shù)據(jù)替換出Cache,執(zhí)行.10 ; 13)選擇一共享最小的高速緩存行進(jìn)行共享作廢的相應(yīng)處理,執(zhí)行10; 14)完成。
【文檔編號(hào)】G06F12/08GK103729309SQ201410017448
【公開(kāi)日】2014年4月16日 申請(qǐng)日期:2014年1月15日 優(yōu)先權(quán)日:2014年1月15日
【發(fā)明者】韓東濤 申請(qǐng)人:浪潮電子信息產(chǎn)業(yè)股份有限公司