采用混合目錄的雙控存儲服務(wù)器的緩存一致性實現(xiàn)方法
【專利摘要】本發(fā)明公開了一種采用混合目錄的雙控存儲服務(wù)器的緩存一致性實現(xiàn)方法,針對雙控存儲服務(wù)器的緩存一致性實現(xiàn),將有限目錄和鏈?zhǔn)侥夸浗Y(jié)合在一起,構(gòu)成一種新的目錄方式;在某一時刻,有限目錄的限制是最多m塊,存儲某個內(nèi)存塊的高速緩存的數(shù)量為k,那么當(dāng)k<m時,采用有限目錄的方式;當(dāng)k>m時,超過有限目錄容量的部分采用鏈?zhǔn)侥夸?。這樣既可以保證系統(tǒng)的可擴(kuò)展性,又提高了系統(tǒng)的效率,同時兼顧了有限目錄的效率和鏈?zhǔn)侥夸浀娜萘俊2捎帽景l(fā)明所提供的技術(shù),既可以保證系統(tǒng)的可擴(kuò)展性,又提高了系統(tǒng)的效率,同時兼顧了有限目錄的效率和鏈?zhǔn)侥夸浀娜萘俊?br>
【專利說明】采用混合目錄的雙控存儲服務(wù)器的緩存一致性實現(xiàn)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種采用混合目錄的雙控存儲服務(wù)器的緩存一致性實現(xiàn)方法,屬于計算機(jī)存儲服務(wù)器設(shè)計領(lǐng)域。
【背景技術(shù)】
[0002]Cache 一致性協(xié)議決定系統(tǒng)為維護(hù)一致性所做的具體動作,直接影響系統(tǒng)性能。
[0003]基于目錄的協(xié)議的特點是:內(nèi)存塊中保存有聞速緩存目錄,記錄了聞速緩存塊駐留在哪里的信息,從而維護(hù)高速緩存的一致性。
[0004]基于目錄的協(xié)議又可以分為三類:全映射目錄、有限目錄和鏈?zhǔn)侥夸洝?br>
[0005]基于目錄的協(xié)議的工作方式是:在內(nèi)存塊的高速緩存目錄中記錄著每個存儲塊當(dāng)前的狀態(tài)和當(dāng)前的信息。
[0006]當(dāng)前的信息指明哪些高速緩存中有該存儲器的拷貝。
[0007]當(dāng)高速緩存需要讀一個塊的信息時,它向內(nèi)存發(fā)送申請,內(nèi)存接到申請后,將其當(dāng)前的內(nèi)容發(fā)送給高速緩存,并在目錄中記錄該高速緩存的地址;當(dāng)高速緩存需要將某個塊置為無效時,除了在高速緩存中將其置為無效外,還應(yīng)該發(fā)消息通知內(nèi)存修改其目錄;當(dāng)存儲器的信息被修改時,內(nèi)存需要根據(jù)目錄中的信息對具有其拷貝的高速緩存塊發(fā)廣播,通知其信息已經(jīng)更改,將這個拷貝設(shè)置成無效。
[0008]在全映射目錄中,存放與全局存儲器的每個塊有關(guān)的數(shù)據(jù),系統(tǒng)中的每個高速緩存可以同時存儲任何數(shù)據(jù)塊的拷貝。
[0009]而在有限目錄中,目錄的個數(shù)是有限的,最多只允許有限個數(shù)的高速緩存同時存儲合格數(shù)據(jù)塊的內(nèi)容。當(dāng)有超過限制個數(shù)的高速緩存申請讀這個內(nèi)存塊時,需要進(jìn)行驅(qū)逐,選擇一個高速緩存,將其置為無效。
【發(fā)明內(nèi)容】
[0010]本發(fā)明要解決的技術(shù)問題是:提供一種采用混合目錄的雙控存儲服務(wù)器的緩存一致性實現(xiàn)方法。
[0011]本發(fā)明所采用的技術(shù)方案為:
一種采用混合目錄的雙控存儲服務(wù)器的緩存一致性實現(xiàn)方法,針對雙控存儲服務(wù)器的緩存一致性實現(xiàn),將有限目錄和鏈?zhǔn)侥夸浗Y(jié)合在一起,構(gòu)成一種新的目錄方式;在某一時亥|J,有限目錄的限制是最多m塊,存儲某個內(nèi)存塊的高速緩存的數(shù)量為k,那么當(dāng)Km時,采用有限目錄的方式;當(dāng)k>m時,超過有限目錄容量的部分采用鏈?zhǔn)侥夸洝_@樣既可以保證系統(tǒng)的可擴(kuò)展性,又提高了系統(tǒng)的效率,同時兼顧了有限目錄的效率和鏈?zhǔn)侥夸浀娜萘俊?br>
[0012]當(dāng)k小于m時,采用有限目錄的方式,具體操作如下:
有控制器要讀取數(shù)據(jù)時,向內(nèi)存塊發(fā)送請求,內(nèi)存塊檢查其內(nèi)容的有效性;如果重寫位為0,直接將內(nèi)存的數(shù)據(jù)發(fā)送給高速緩存,并添加在有限目錄第k+Ι個位置上,k=k+l ;如果重寫位為1,命令重寫的高速緩存將最新的數(shù)據(jù)分別發(fā)送給申請數(shù)據(jù)的高速緩存和內(nèi)存,并將重寫位置O,將申請數(shù)據(jù)的高速緩存添加進(jìn)目錄;
有控制器將高速緩存置為無效時,向內(nèi)存塊發(fā)送通知,內(nèi)存塊將這個處理機(jī)的序號從目錄中刪除,刪除時直接將當(dāng)前的最后一項移動到空缺的位置上。
[0013]有控制器對內(nèi)存進(jìn)行寫操作時,將當(dāng)前在讀的其它高速緩存全部置為無效,對當(dāng)前的目錄項進(jìn)行一次掃描,逐個向相應(yīng)的高速緩存發(fā)送無效消息,確認(rèn)所有塊都無效后將重寫位置I。
[0014]當(dāng)k大于m時,超過的部分采用鏈?zhǔn)侥夸浗Y(jié)構(gòu),具體操作如下:
有控制器要讀取數(shù)據(jù)時,內(nèi)存向高速緩存發(fā)送數(shù)據(jù),將這個控制器添加到鏈表的首部。
[0015]有控制器需要將高速緩存置為無效時,對有限目錄和鏈表均進(jìn)行掃描,如果記錄在有限目錄中,將其從目錄中刪除,再將鏈表的首記錄信息移動到有限目錄中,刪掉隊首的記錄;如果是在鏈表中,直接刪除鏈表的這個元素即可。
[0016]若有控制器對內(nèi)存進(jìn)行寫操作時,將當(dāng)前在讀的其它高速緩存全部置為無效,對當(dāng)前的目錄項以及鏈表元素進(jìn)行一次掃描,逐個向相應(yīng)的高速緩存發(fā)送無效消息、確認(rèn)所有塊都無效,將重寫位置I。
[0017]所述鏈?zhǔn)侥夸浲ㄟ^一個目錄指針鏈表來跟蹤共享數(shù)據(jù)拷貝,內(nèi)存塊中只保存這個鏈表的首指針,各個高速緩存中保存鏈表的元素,申請讀數(shù)據(jù)塊和置數(shù)據(jù)塊為無效表現(xiàn)為對鏈表的維護(hù)。在有限目錄中,目錄的個數(shù)是有限的,最多只允許有限個數(shù)的高速緩存同時存儲合格數(shù)據(jù)塊的內(nèi)容。當(dāng)有超過限制個數(shù)的高速緩存申請讀這個內(nèi)存塊時,需要選擇一個高速緩存,將其置為無效。
[0018]本發(fā)明的有益效果為:采用本發(fā)明所提供的技術(shù),既可以保證系統(tǒng)的可擴(kuò)展性,又提高了系統(tǒng)的效率,同時兼顧了有限目錄的效率和鏈?zhǔn)侥夸浀娜萘俊?br>
【具體實施方式】
[0019]下面通過【具體實施方式】對本發(fā)明進(jìn)一步說明:
實施例1:
一種采用混合目錄的雙控存儲服務(wù)器的緩存一致性實現(xiàn)方法,針對雙控存儲服務(wù)器的緩存一致性實現(xiàn),其特征在于:將有限目錄和鏈?zhǔn)侥夸浗Y(jié)合在一起,構(gòu)成一種新的目錄方式,在某一時刻,有限目錄的限制是最多m塊,存儲某個內(nèi)存塊的高速緩存的數(shù)量為k,那么當(dāng)k〈m時,采用有限目錄的方式;ik>m時,超過有限目錄容量的部分采用鏈?zhǔn)侥夸洝?br>
[0020]實施例2:
在實施I的基礎(chǔ)上,所述方法當(dāng)k小于m時,采用有限目錄的方式,具體操作方法如下:有控制器要讀取數(shù)據(jù)時,向內(nèi)存塊發(fā)送請求,內(nèi)存塊檢查其內(nèi)容的有效性;如果重寫位為0,直接將內(nèi)存的數(shù)據(jù)發(fā)送給高速緩存,并添加在有限目錄第k+Ι個位置上,k=k+l ;如果重寫位為1,命令重寫的高速緩存將最新的數(shù)據(jù)分別發(fā)送給申請數(shù)據(jù)的高速緩存和內(nèi)存,并將重寫位置0,將申請數(shù)據(jù)的高速緩存添加進(jìn)目錄,操作需要0(1)的時間;
有控制器將高速緩存置為無效時,向內(nèi)存塊發(fā)送通知,內(nèi)存塊將這個處理機(jī)的序號從目錄中刪除,刪除時直接將當(dāng)前的最后一項移動到空缺的位置上,刪除操作只需要0(1)的時間,但是查找這個目錄項需要O(k)的時間,總的需要0(k)的時間。
[0021]有控制器對內(nèi)存進(jìn)行寫操作時,將當(dāng)前在讀的其它高速緩存全部置為無效,對當(dāng)前的目錄項進(jìn)行一次掃描,逐個向相應(yīng)的高速緩存發(fā)送無效消息,確認(rèn)所有塊都無效后將重寫位置I,需要O (k)的時間。
[0022]實施例3:
在實施例1的基礎(chǔ)上,所述方法當(dāng)k大于m時,超過的部分采用鏈?zhǔn)侥夸浗Y(jié)構(gòu),具體操作步驟如下:
有控制器要讀取數(shù)據(jù)時,內(nèi)存向高速緩存發(fā)送數(shù)據(jù),將這個控制器添加到鏈表的首部,需要0(1)時間完成。
[0023]有控制器需要將高速緩存置為無效時,對有限目錄和鏈表均進(jìn)行掃描,如果記錄在有限目錄中,將其從目錄中刪除,再將鏈表的首記錄信息移動到有限目錄中,刪掉隊首的記錄;如果是在鏈表中,直接刪除鏈表的這個元素即可,查找需要0(k)的時間,而刪除記錄只需要0(1)時間,總的需要0(k)的時間。
[0024]若有控制器對內(nèi)存進(jìn)行寫操作時,將當(dāng)前在讀的其它高速緩存全部置為無效,對當(dāng)前的目錄項以及鏈表元素進(jìn)行一次掃描,逐個向相應(yīng)的高速緩存發(fā)送無效消息、確認(rèn)所有塊都無效,將重寫位置I。這個操作需要0(k)的時間。
【權(quán)利要求】
1.一種采用混合目錄的雙控存儲服務(wù)器的緩存一致性實現(xiàn)方法,針對雙控存儲服務(wù)器的緩存一致性實現(xiàn),其特征在于:將有限目錄和鏈?zhǔn)侥夸浗Y(jié)合在一起,構(gòu)成一種新的目錄方式,在某一時刻,有限目錄的限制是最多m塊,存儲某個內(nèi)存塊的高速緩存的數(shù)量為k,那么當(dāng)k〈m時,采用有限目錄的方式;當(dāng)k>m時,超過有限目錄容量的部分采用鏈?zhǔn)侥夸洝?br>
2.根據(jù)權(quán)利要求1所述的采用混合目錄的雙控存儲服務(wù)器的緩存一致性實現(xiàn)方法,其特征在于,當(dāng)k小于m時,采用有限目錄的方式,具體操作如下: 有控制器要讀取數(shù)據(jù)時,向內(nèi)存塊發(fā)送請求,內(nèi)存塊檢查其內(nèi)容的有效性;如果重寫位為O,直接將內(nèi)存的數(shù)據(jù)發(fā)送給高速緩存,并添加在有限目錄第k+Ι個位置上,k=k+l ;如果重寫位為1,命令重寫的高速緩存將最新的數(shù)據(jù)分別發(fā)送給申請數(shù)據(jù)的高速緩存和內(nèi)存,并將重寫位置O,將申請數(shù)據(jù)的高速緩存添加進(jìn)目錄; 有控制器將高速緩存置為無效時,向內(nèi)存塊發(fā)送通知,內(nèi)存塊將這個處理機(jī)的序號從目錄中刪除,刪除時直接將當(dāng)前的最后一項移動到空缺的位置上; 有控制器對內(nèi)存進(jìn)行寫操作時,將當(dāng)前在讀的其它高速緩存全部置為無效,對當(dāng)前的目錄項進(jìn)行一次掃描,逐個向相應(yīng)的高速緩存發(fā)送無效消息,確認(rèn)所有塊都無效后將重寫位置I。
3.根據(jù)權(quán)利要求1所述的采用混合目錄的雙控存儲服務(wù)器的緩存一致性實現(xiàn)方法,其特征在于,當(dāng)k大于m時,超過的部分采用鏈?zhǔn)侥夸浗Y(jié)構(gòu),具體操作如下: 有控制器要讀取數(shù)據(jù)時,內(nèi)存向高速緩存發(fā)送數(shù)據(jù),將這個控制器添加到鏈表的首部; 有控制器需要將高速緩存置為無效時,對有限目錄和鏈表均進(jìn)行掃描,如果記錄在有限目錄中,將其從目錄中刪除,再將鏈表的首記錄信息移動到有限目錄中,刪掉隊首的記錄;如果是在鏈表中,直接刪除鏈表的這個元素即可; 若有控制器對內(nèi)存進(jìn)行寫操作時,將當(dāng)前在讀的其它高速緩存全部置為無效,對當(dāng)前的目錄項以及鏈表元素進(jìn)行一次掃描,逐個向相應(yīng)的高速緩存發(fā)送無效消息、確認(rèn)所有塊都無效,將重寫位置I。
4.根據(jù)權(quán)利要求1、2或3所述的采用混合目錄的雙控存儲服務(wù)器的緩存一致性實現(xiàn)方法,其特征在于:所述鏈?zhǔn)侥夸浲ㄟ^一個目錄指針鏈表來跟蹤共享數(shù)據(jù)拷貝,內(nèi)存塊中只保存這個鏈表的首指針,各個高速緩存中保存鏈表的元素,申請讀數(shù)據(jù)塊和置數(shù)據(jù)塊為無效表現(xiàn)為對鏈表的維護(hù)。
【文檔編號】G06F12/08GK104133785SQ201410367779
【公開日】2014年11月5日 申請日期:2014年7月30日 優(yōu)先權(quán)日:2014年7月30日
【發(fā)明者】戴鴻君, 于治樓 申請人:浪潮集團(tuán)有限公司