專利名稱:用于多核處理器的網(wǎng)絡(luò)犧牲Cache及基于該Cache的數(shù)據(jù)請求方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)技術(shù)領(lǐng)域,尤其涉及一種用于多核處理器的網(wǎng)絡(luò)犧牲 高速緩沖存儲器(Cache)及基于該網(wǎng)絡(luò)犧牲Cache的數(shù)據(jù)請求方法。
背景技術(shù):
商業(yè)和科學(xué)計(jì)算應(yīng)用對大數(shù)據(jù)量的需求使共享L2 Cache結(jié)構(gòu)在多核處理器 (CMP)中得到了廣泛應(yīng)用,共享L2 Cache結(jié)構(gòu)可以最大限度的利用片上Cache的容量并減 少對片外存儲器的訪問,Piranha, Niagara, XLR和Power 5等商用處理器都采用共享L2 Cache結(jié)構(gòu)。出于物理布局以及芯片制造的考慮,未來大規(guī)模多核處理器通常采用分片的結(jié) 構(gòu),每片包含一個(gè)處理器內(nèi)核、一個(gè)私有的Ll Cache、一個(gè)L2Cache Bank和一個(gè)路由器,這 些片通過路由器連接到片上網(wǎng)絡(luò),其中物理分布的L2 Cache Bank通過地址交叉組成一個(gè) 大容量的共享L2Cache。共享L2 Cache的多核處理器中一般采用基于目錄的一致性協(xié)議來 維護(hù)私有Ll Cache的一致性。在共享L2 Cache的多核處理器中,目錄分布在每個(gè)片的L2 CacheBank中,且通常 包含在L2 Cache Bank的標(biāo)簽CTag)陣列中。通過這種方式,L2 Cache為其每一個(gè)數(shù)據(jù)塊 保存一個(gè)目錄向量,用以跟蹤緩存該數(shù)據(jù)塊的Ll Cache的位置,Ll Cache的缺失會引起對 宿主節(jié)點(diǎn)L2Cache Bank的訪問,查找目錄信息,并執(zhí)行相應(yīng)的一致性操作。在共享L2 Cache 的多核處理器中,目錄訪問延遲與L2 Cache Bank的訪問延遲相同。隨著多核處理器規(guī)模的擴(kuò)大,目錄的存儲開銷會隨著處理器核的數(shù)目和L2 Cache 的大小線性增加,將消耗寶貴的片上資源,嚴(yán)重影響多核處理器的擴(kuò)展性。以全目錄為例, 當(dāng)L2 Cache中數(shù)據(jù)塊的大小為64字節(jié)時(shí),16核多核處理器的目錄存儲開銷占L2 Cache的 3% ;當(dāng)多核處理器的核數(shù)增加到64核時(shí),目錄存儲開銷增加到12. 5% ;進(jìn)一步增加多核處 理器的核數(shù)到512核時(shí),目錄存儲開銷增加到100%。目錄會消耗大量的片上Cache資源, 嚴(yán)重影響多核處理器的可用性。實(shí)際上,在多核處理器運(yùn)行過程時(shí),L2 Cache中只有很小一部分?jǐn)?shù)據(jù)被緩存在Ll Cache中,只有這部分?jǐn)?shù)據(jù)的目錄向量中記錄著LlCache的位置信息,其他數(shù)據(jù)的目錄向量 是空的。在最壞的情況下,L2 Cache中使用的目錄向量的數(shù)目等于Ll Cache所能容納的 數(shù)據(jù)塊的數(shù)目。由于Ll Cache的容量遠(yuǎn)小于L2 Cache的容量,大部分的目錄向量處于空 閑狀態(tài),目錄的利用率很低,大量目錄存儲空間被浪費(fèi)了。活躍目錄結(jié)構(gòu)取消了 L2 Cache中的目錄結(jié)構(gòu),減小了目錄存儲空間,提高了目錄 訪問速度,也能滿足絕大部分的目錄訪問請求,加快一部分Ll Cache缺失訪問的速度。隨著 處理器規(guī)模的擴(kuò)大,Ll Cache缺失訪問的延遲越來越大,而活躍目錄Cache結(jié)構(gòu)節(jié)省的L2 Cache訪問延遲占Ll Cache缺失訪問延遲的比例會越來越小,其性能優(yōu)勢會降低,性能的 擴(kuò)展性不好。如果減少Ll Cache到宿主節(jié)點(diǎn)的缺失訪問請求的數(shù)目,則可以降低Ll Cache 缺失訪問的延遲,提高系統(tǒng)的性能,且擴(kuò)展性比單純降低單次Ll Cache缺失訪問延遲更具
4優(yōu)勢。
發(fā)明內(nèi)容
(一)要解決的技術(shù)問題本發(fā)明所要解決的技術(shù)問題是如何加快Ll Cache缺失訪問的速度,提高多核處 理器的性能。( 二 )技術(shù)方案為解決上述問題,本發(fā)明提供了一種用于多核處理器的網(wǎng)絡(luò)犧牲Cache,設(shè)置于網(wǎng) 絡(luò)接口部件中,該網(wǎng)絡(luò)犧牲Cache包括犧牲Cache,用于存放從Ll Cache替換出來的數(shù)據(jù) 塊;活躍目錄Cache,用于保存以及維護(hù)目錄信息。其中,所述活躍目錄Cache進(jìn)一步包括目錄存儲部件,為Cache結(jié)構(gòu),Cache行由 地址標(biāo)簽、目錄狀態(tài)、以及目錄向量組成;目錄控制器,用于維護(hù)所述目錄存儲部件中每一 個(gè)Cache行的目錄狀態(tài)以及目錄向量;L2 Cache接口,為所述活躍目錄Cache與L2 Cache 的接口。本發(fā)明還提供了一種基于上述用于多核處理器的網(wǎng)絡(luò)犧牲Cache的數(shù)據(jù)請求方 法,其特征在于,該方法包括步驟當(dāng)接收到Ll Cache的替換請求時(shí),犧牲Cache為請求的地址分配一個(gè)Cache行, 保存要替換的數(shù)據(jù)塊,將分配的Cache行的目錄狀態(tài)設(shè)為共享狀態(tài),并向Ll Cache返回替 換回應(yīng)信號;當(dāng)接收到Ll Cache的寫回請求時(shí),犧牲Cache為請求的地址分配一個(gè)Cache行, 保存要寫回的數(shù)據(jù)塊,將分配的Cache行的目錄狀態(tài)設(shè)為修改狀態(tài),并向Ll Cache返回寫 回回應(yīng)信號;當(dāng)接收到Ll Cache的讀請求時(shí),查找犧牲Cache,若請求的地址存在且其所在 Cache行的目錄狀態(tài)為共享狀態(tài),則向Ll Cache返回請求的數(shù)據(jù)塊,并把該地址從犧牲 Cache中刪除;若請求的地址存在且其所在的Cache行的目錄狀態(tài)為修改狀態(tài),則向Ll Cache返回請求的數(shù)據(jù)塊,標(biāo)識該數(shù)據(jù)塊為臟數(shù)據(jù),并將該地址從犧牲Cache中刪除;若請 求的地址不存在或處于無效狀態(tài),則把所述讀請求轉(zhuǎn)發(fā)給宿主節(jié)點(diǎn);當(dāng)接收到Ll Cache的寫請求時(shí),查找犧牲Cache,若請求的地址存在且其所在的 Cache行的目錄狀態(tài)為共享狀態(tài),則把該地址從犧牲Cache中刪除,把所述寫請求轉(zhuǎn)發(fā)給宿 主節(jié)點(diǎn);若請求的地址存在且其所在的Cache行的目錄狀態(tài)為修改狀態(tài),則向Ll Cache返 回寫授權(quán)以及請求的數(shù)據(jù)塊,并把該地址從犧牲Cache中刪除;若該請求的地址不存在或 處于無效狀態(tài),則把所述寫請求轉(zhuǎn)發(fā)給宿主節(jié)點(diǎn);當(dāng)接收到來自宿主節(jié)點(diǎn)的無效請求時(shí),查找犧牲Cache,若請求的地址所在的 Cache行的目錄狀態(tài)為共享狀態(tài),則把該Cache行從犧牲Cache中刪除,并向宿主節(jié)點(diǎn)返回 無效回應(yīng)消息;若請求的地址所在的Cache行的目錄狀態(tài)為修改狀態(tài),則把該Cache行從犧 牲Cache中刪除,并向宿主節(jié)點(diǎn)返回相應(yīng)的數(shù)據(jù)塊;若請求的地址不存在或處于無效狀態(tài), 則把所述無效請求轉(zhuǎn)發(fā)給處理器;當(dāng)犧牲Cache由于容量沖突必須進(jìn)行替換時(shí),若要替換的Cache行的目錄狀態(tài)為 共享狀態(tài),則向宿主節(jié)點(diǎn)發(fā)出替換請求,接收到宿主節(jié)點(diǎn)的替換回應(yīng)信號后,將所述Cache行從犧牲Cache中刪除;若要替換的Cache行的目錄狀態(tài)為修改狀態(tài),則向宿主節(jié)點(diǎn)發(fā)出寫 回請求,接收到宿主節(jié)點(diǎn)的寫回回應(yīng)信號后,將所述Cache行從犧牲Cache中刪除。其中,所有處理器的讀寫缺失請求都引發(fā)對宿主節(jié)點(diǎn)L2 Cache的訪問,這些訪問 由目錄控制器捕獲,所述目錄控制器首先查找活躍目錄Cache中的目錄信息,然后根據(jù)請 求的類型決定是否向本地L2Cache發(fā)送讀寫請求。其中,當(dāng)請求為讀請求時(shí) 如果活躍目錄Cache命中,在目錄向量中加入請求節(jié)點(diǎn)的位置,如果命中的Cache 行的目錄狀態(tài)為共享狀態(tài),則向本地L2 Cache發(fā)出讀數(shù)據(jù)請求,得到L2 Cache的數(shù)據(jù)回應(yīng) 后,將請求的數(shù)據(jù)塊轉(zhuǎn)發(fā)給請求節(jié)點(diǎn),完成讀操作;如果命中的Cache行的目錄狀態(tài)為修改 狀態(tài),則向擁有該數(shù)據(jù)塊的共享節(jié)點(diǎn)發(fā)出降級寫回請求,目錄控制器接收到寫回的數(shù)據(jù)時(shí), 將寫回的數(shù)據(jù)塊轉(zhuǎn)發(fā)給請求節(jié)點(diǎn),并把該數(shù)據(jù)塊寫回本地L2 Cache,目錄狀態(tài)變?yōu)樾薷臓?態(tài);如果活躍目錄Cache缺失,則在活躍目錄Cache中添加目錄項(xiàng),然后向本地L2 Cache發(fā) 出讀請求,得到L2 Cache的數(shù)據(jù)回應(yīng)后,把請求的數(shù)據(jù)塊轉(zhuǎn)發(fā)給請求節(jié)點(diǎn),目錄狀態(tài)變?yōu)楣?享狀態(tài)。其中,當(dāng)請求為寫請求時(shí)如果活躍目錄Cache命中且命中的Cache行的目錄狀態(tài)為共享狀態(tài),則向所有共 享節(jié)點(diǎn)發(fā)出無效信號,并向本地L2 Cache發(fā)出讀請求,目錄控制器收集到所有的無效回應(yīng) 消息后,將相應(yīng)的節(jié)點(diǎn)位置從目錄向量中刪除,把從本地L2 Cache返回的數(shù)據(jù)塊回應(yīng)轉(zhuǎn)發(fā) 給請求節(jié)點(diǎn),把目錄狀態(tài)改變?yōu)樾薷臓顟B(tài),在目錄向量中加入請求節(jié)點(diǎn)的位置;如果命中的 Cache的目錄狀態(tài)為修改狀態(tài),則向共享節(jié)點(diǎn)發(fā)出無效并寫回請求,目錄控制器收到寫回的 數(shù)據(jù)塊時(shí),相應(yīng)的節(jié)點(diǎn)位置從目錄向量中刪除,把數(shù)據(jù)塊轉(zhuǎn)發(fā)給請求節(jié)點(diǎn),在目錄向量中加 入請求節(jié)點(diǎn)的位置;如果活躍目錄Cache未命中,則在活躍目錄Cache中添加目錄項(xiàng),向本 地L2 Cache發(fā)出讀請求,得到本地L2 Cache的數(shù)據(jù)回應(yīng)后,把請求的數(shù)據(jù)塊轉(zhuǎn)發(fā)給請求節(jié) 點(diǎn),目錄狀態(tài)變?yōu)樾薷臓顟B(tài),在目錄向量中加入請求節(jié)點(diǎn)的位置。其中,當(dāng)請求為替換請求時(shí)將相應(yīng)的節(jié)點(diǎn)位置從目錄向量中刪除,并向請求節(jié)點(diǎn)返回替換回應(yīng)信號;如果請 求的地址是唯一的共享節(jié)點(diǎn),則把該目錄向量從活躍目錄Cache中刪除。其中,當(dāng)請求為寫回請求時(shí)將相應(yīng)的節(jié)點(diǎn)位置從目錄向量中刪除,把要寫回的數(shù)據(jù)塊寫回到本地L2 Cache, 并向請求節(jié)點(diǎn)返回寫回回應(yīng)信號,把該目錄向量從活躍目錄Cache中刪除。其中,當(dāng)活躍目錄Cache由于容量沖突而發(fā)生替換時(shí),進(jìn)行替換操作向所有共享 節(jié)點(diǎn)發(fā)出無效請求,如果目錄狀態(tài)為共享狀態(tài),則目錄控制器收集到所有的無效回應(yīng)后,把 該目錄向量從活躍目錄Cache中刪除;如果目錄狀態(tài)為修改狀態(tài),則目錄控制器收到寫回 的數(shù)據(jù)塊后,把該數(shù)據(jù)塊寫回到本地L2 Cache中,然后刪除該目錄向量。其中,當(dāng)接收到本地L2 Cache的無效請求時(shí),如果活躍目錄Cache不命中,則直接 向本地L2 Cache返回?zé)o效回應(yīng)信號;如果活躍目錄Cache命中,則進(jìn)行活躍目錄Cache的 替換操作,替換操作完成后,向本地L2 Cache返回?zé)o效回應(yīng)信號或?qū)懟匦盘?,把目錄向量?活躍目錄Cache中刪除。(三)有益效果
本發(fā)明的用于多核處理器的網(wǎng)絡(luò)犧牲Cache結(jié)構(gòu)是在網(wǎng)絡(luò)接口部件中增加一個(gè) 犧牲Cache,存放從Ll Cache替換出來的數(shù)據(jù)。根據(jù)數(shù)據(jù)的局部性原理,從Ll Cache替換出 來的數(shù)據(jù)通常會被再次訪問。后續(xù)對該地址的訪問可以在犧牲Cache中得到滿足,從而減 少到宿主節(jié)點(diǎn)的缺失訪問請求的數(shù)目,降低了 Ll Cache缺失訪問延遲。在網(wǎng)絡(luò)犧牲Cache 結(jié)構(gòu)中,目錄信息由網(wǎng)絡(luò)接口部件中的活躍目錄Cache維護(hù),L2 Cache中不保存和維護(hù)目 錄信息,提高了目錄的使用效率,減少了目錄的浪費(fèi)。實(shí)驗(yàn)結(jié)果表明,在采用網(wǎng)絡(luò)犧牲Cache 結(jié)構(gòu)的16核處理器中,系統(tǒng)的性能平均提高了 ,系統(tǒng)的存儲開銷降低了 1 %。網(wǎng)絡(luò)犧牲 Cache通過減少遠(yuǎn)程訪問來提高系統(tǒng)的性能,隨著處理器規(guī)模的擴(kuò)大,其性能優(yōu)勢會更加顯
-frh-
zW O ο
圖1為依照本發(fā)明一種實(shí)施方式的用于多核處理器的網(wǎng)絡(luò)犧牲Cache結(jié)構(gòu)示意 圖;圖2為依照本發(fā)明一種實(shí)施方式的基于圖1的網(wǎng)絡(luò)犧牲Cache的數(shù)據(jù)請求方法示 意圖。
具體實(shí)施例方式對于本發(fā)明所提出的用于多核處理器的網(wǎng)絡(luò)犧牲Cache及基于該網(wǎng)絡(luò)犧牲Cache 的數(shù)據(jù)請求方法,結(jié)合附圖和實(shí)施例詳細(xì)說明。本發(fā)明提供了一種用于多核處理器的網(wǎng)絡(luò)犧牲Cache結(jié)構(gòu),在網(wǎng)絡(luò)接口部件中增 加一個(gè)犧牲Cache (Victim Cache),存放從Ll Cache替換出來的數(shù)據(jù)。根據(jù)數(shù)據(jù)的局部性 原理,從Ll Cache替換出來的數(shù)據(jù)通常會被再次訪問。后續(xù)對該地址的訪問可以在犧牲 Cache中得到滿足,從而減少到宿主節(jié)點(diǎn)的缺失訪問請求的數(shù)目,降低Ll Cache缺失訪問 的延遲,提高多核處理器的性能。目錄信息由網(wǎng)絡(luò)接口中的活躍目錄Cache維護(hù),L2 Cache 中不再保存和維護(hù)目錄信息,目的是降低片上目錄存儲開銷。如圖1所示,依照本發(fā)明一種實(shí)施方式的用于多核處理器的網(wǎng)絡(luò)犧牲Cache,該網(wǎng) 絡(luò)犧牲Cache設(shè)置于網(wǎng)絡(luò)接口部件中,包括犧牲Cache,用于存放從Ll Cache替換出來的數(shù)據(jù)塊;Ll Cache的缺失訪問請求 經(jīng)過網(wǎng)絡(luò)接口部件時(shí),首先查找犧牲Cache,如果請求能夠滿足,則把數(shù)據(jù)返回給處理器,并 把數(shù)據(jù)塊從犧牲Cache中刪除?;钴S目錄Cache,用于保存以及維護(hù)目錄信息,進(jìn)一步包括目錄存儲部件、目錄 控制器、以及L2 Cache接口。目錄存儲部件,為Cache結(jié)構(gòu),Cache行由地址標(biāo)簽、目錄狀態(tài)、以及目錄向量組 成;目錄向量的目的是跟蹤緩存該地址的私有Cache的位置。目錄向量中為每一個(gè)包含私 有Ll Cache的處理器核保留一個(gè)共享位。目錄控制器的作用是維護(hù)目錄存儲部件中每一個(gè)Cache行的目錄狀態(tài)和目錄向 量。處理器的讀寫缺失請求都會引發(fā)對宿主節(jié)點(diǎn)L2Cache的訪問,這些訪問被網(wǎng)絡(luò)接口上 的目錄控制器捕獲。目錄控制器首先查找活躍目錄Cache中的目錄信息,然后根據(jù)請求的 類型決定是否向本地L2 Cache發(fā)送讀寫請求。
L2 Cache接口,為所述活躍目錄Cache與L2 Cache的接口。處理器的讀寫缺失 請求在訪問活躍目錄Cache后,把必要的L2 Cache讀寫請求通過L2 Cache接口發(fā)送給L2 Cache,把L2 Cache的回應(yīng)信號返回給活躍目錄Cache。本發(fā)明還提供了一種基于上述用于多核處理器的網(wǎng)絡(luò)犧牲Cache的路由方法,如 圖2所示,該方法包括步驟當(dāng)接收到Ll Cache的替換請求時(shí),犧牲Cache為請求的地址分配一個(gè)Cache行, 保存要替換的數(shù)據(jù)塊,將分配的Cache行的目錄狀態(tài)設(shè)為共享(S)狀態(tài),并向Ll Cache返 回替換回應(yīng)信號;當(dāng)接收到Ll Cache的寫回請求時(shí),犧牲Cache為請求的地址分配一個(gè)Cache行, 保存要寫回的數(shù)據(jù)塊,將分配的Cache行的目錄狀態(tài)設(shè)為修改(M)狀態(tài),并向Ll Cache返 回寫回回應(yīng)信號;當(dāng)接收到Ll Cache的讀請求時(shí),查找犧牲Cache,若請求的地址存在且其所在 Cache行的目錄狀態(tài)為S,則向Ll Cache返回請求的數(shù)據(jù)塊,并把該地址從犧牲Cache中刪 除,Ll Cache接收到該數(shù)據(jù)后把狀態(tài)修改為修改(M)狀態(tài);若請求的地址存在且其所在的 Cache行的目錄狀態(tài)為M,則向Ll Cache返回請求的數(shù)據(jù)塊,標(biāo)識該數(shù)據(jù)塊為臟數(shù)據(jù),并將 該地址從犧牲Cache中刪除;若請求的地址不存在或處于無效狀態(tài),則把所述讀請求轉(zhuǎn)發(fā) 給宿主節(jié)點(diǎn);當(dāng)接收到Ll Cache的寫請求時(shí),查找犧牲Cache,若請求的地址存在且其所在的 Cache行的目錄狀態(tài)為S,則把該地址從犧牲Cache中刪除,把所述寫請求轉(zhuǎn)發(fā)給宿主節(jié)點(diǎn); 若請求的地址存在且其所在的Cache行的目錄狀態(tài)為M,則向Ll Cache返回寫授權(quán)以及請 求的數(shù)據(jù)塊,并把該地址從犧牲Cache中刪除;若該請求的地址不存在或處于無效狀態(tài),則 把所述寫請求轉(zhuǎn)發(fā)給宿主節(jié)點(diǎn);當(dāng)接收到來自宿主節(jié)點(diǎn)的無效請求時(shí),查找犧牲Cache,若請求的地址所在的 Cache行的目錄狀態(tài)為S,則把該Cache行從犧牲Cache中刪除,并向宿主節(jié)點(diǎn)返回?zé)o效回 應(yīng)消息;若請求的地址所在的Cache行的目錄狀態(tài)為M,則把該Cache行從犧牲Cache中刪 除,并向宿主節(jié)點(diǎn)返回相應(yīng)的數(shù)據(jù)塊;若請求的地址不存在或處于無效狀態(tài),則把所述無效 請求轉(zhuǎn)發(fā)給處理器;當(dāng)犧牲Cache由于容量沖突必須進(jìn)行替換時(shí),若要替換的Cache行的目錄狀態(tài)為 S,則向宿主節(jié)點(diǎn)發(fā)出替換請求,接收到宿主節(jié)點(diǎn)的替換回應(yīng)信號后,將所述Cache行從犧 牲Cache中刪除;若要替換的Cache行的目錄狀態(tài)為M,則向宿主節(jié)點(diǎn)發(fā)出寫回請求,接收 到宿主節(jié)點(diǎn)的寫回回應(yīng)信號后,將所述Cache行從犧牲Cache中刪除。所有處理器的讀寫缺失請求都引發(fā)對宿主節(jié)點(diǎn)L2 Cache的訪問,這些訪問由目錄 控制器捕獲,所述目錄控制器首先查找活躍目錄Cache中的目錄信息,然后根據(jù)請求的類 型決定是否向本地L2 Cache發(fā)送讀寫請求。當(dāng)請求為讀請求時(shí) 如果活躍目錄Cache命中,在目錄向量中加入請求節(jié)點(diǎn)的位置,如果命中的Cache 行的目錄狀態(tài)為S,則向本地L2 Cache發(fā)出讀數(shù)據(jù)請求,得到L2 Cache的數(shù)據(jù)回應(yīng)后,將 請求的數(shù)據(jù)塊轉(zhuǎn)發(fā)給請求節(jié)點(diǎn),完成讀操作;如果命中的Cache行的目錄狀態(tài)為M,則向擁 有該數(shù)據(jù)塊的共享節(jié)點(diǎn)發(fā)出降級寫回請求,目錄控制器接收到寫回的數(shù)據(jù)時(shí),將寫回的數(shù)據(jù)塊轉(zhuǎn)發(fā)給請求節(jié)點(diǎn),并把該數(shù)據(jù)塊寫回本地L2 Cache,目錄狀態(tài)變?yōu)镸 ;如果活躍目錄 Cache缺失,則在活躍目錄Cache中添加目錄項(xiàng),然后向本地L2 Cache發(fā)出讀請求,得到L2 Cache的數(shù)據(jù)回應(yīng)后,把請求的數(shù)據(jù)塊轉(zhuǎn)發(fā)給請求節(jié)點(diǎn),目錄狀態(tài)變?yōu)镾。當(dāng)請求為寫請求時(shí)如果活躍目錄Cache命中且命中的Cache行的目錄狀態(tài)為共享狀態(tài),則向所有共 享節(jié)點(diǎn)發(fā)出無效信號,并向本地L2 Cache發(fā)出讀請求,目錄控制器收集到所有的無效回應(yīng) 消息后,將相應(yīng)的節(jié)點(diǎn)位置從目錄向量中刪除,把從本地L2 Cache返回的數(shù)據(jù)塊回應(yīng)轉(zhuǎn)發(fā) 給請求節(jié)點(diǎn),把目錄狀態(tài)改變?yōu)镸,在目錄向量中加入請求節(jié)點(diǎn)的位置;如果命中的Cache 的目錄狀態(tài)為M,則向共享節(jié)點(diǎn)發(fā)出無效并寫回請求,目錄控制器收到寫回的數(shù)據(jù)塊時(shí),相 應(yīng)的節(jié)點(diǎn)位置從目錄向量中刪除,把數(shù)據(jù)塊轉(zhuǎn)發(fā)給請求節(jié)點(diǎn),在目錄向量中加入請求節(jié)點(diǎn) 的位置;如果活躍目錄Cache未命中,則在活躍目錄Cache中添加目錄項(xiàng),向本地L2Cache 發(fā)出讀請求,得到L2 Cache的數(shù)據(jù)回應(yīng)后,把請求的數(shù)據(jù)塊轉(zhuǎn)發(fā)給請求節(jié)點(diǎn),目錄狀態(tài)變?yōu)?M,在目錄向量中加入請求節(jié)點(diǎn)的位置。當(dāng)請求為替換請求時(shí)將相應(yīng)的節(jié)點(diǎn)位置從目錄向量中刪除,并向請求節(jié)點(diǎn)返回替換回應(yīng)信號;如果請 求的地址是唯一的共享節(jié)點(diǎn),則把該目錄向量從活躍目錄Cache中刪除。當(dāng)請求為寫回請求時(shí)將相應(yīng)的節(jié)點(diǎn)位置從目錄向量中刪除,把要寫回的數(shù)據(jù)塊寫回到本地L2 Cache, 并向請求節(jié)點(diǎn)返回寫回回應(yīng)信號,把該目錄向量從活躍目錄Cache中刪除。當(dāng)活躍目錄Cache由于容量沖突而發(fā)生替換時(shí),進(jìn)行替換操作向所有共享節(jié)點(diǎn) 發(fā)出無效請求,如果目錄狀態(tài)為S,則目錄控制器收集到所有的無效回應(yīng)后,把該目錄向量 從活躍目錄Cache中刪除;如果目錄狀態(tài)為M,則目錄控制器收到寫回的數(shù)據(jù)塊后,把該數(shù) 據(jù)塊寫回到本地L2 Cache中,然后刪除該目錄向量。當(dāng)接收到本地L2 Cache的無效請求時(shí),如果活躍目錄Cache不命中,則直接向本 地L2 Cache返回?zé)o效回應(yīng)信號;如果活躍目錄Cache命中,則進(jìn)行活躍目錄Cache的替換 操作,替換操作完成后,向本地L2 Cache返回?zé)o效回應(yīng)信號或?qū)懟匦盘?,把目錄向量從活躍 目錄Cache中刪除。以上實(shí)施方式僅用于說明本發(fā)明,而并非對本發(fā)明的限制,有關(guān)技術(shù)領(lǐng)域的普通 技術(shù)人員,在不脫離本發(fā)明的精神和范圍的情況下,還可以做出各種變化和變型,因此所有 等同的技術(shù)方案也屬于本發(fā)明的范疇,本發(fā)明的專利保護(hù)范圍應(yīng)由權(quán)利要求限定。
權(quán)利要求
1.一種用于多核處理器的網(wǎng)絡(luò)犧牲Cache,設(shè)置于網(wǎng)絡(luò)接口部件中,其特征在于,該網(wǎng) 絡(luò)犧牲Cache包括犧牲Cache,用于存放從Ll Cache替換出來的數(shù)據(jù)塊; 活躍目錄Cache,用于保存以及維護(hù)目錄信息。
2.如權(quán)利要求1所述的用于多核處理器的網(wǎng)絡(luò)犧牲Cache,其特征在于,所述活躍目錄 Cache進(jìn)一步包括目錄存儲部件,為Cache結(jié)構(gòu),Cache行由地址標(biāo)簽、目錄狀態(tài)、以及目錄向量組成; 目錄控制器,用于維護(hù)所述目錄存儲部件中每一個(gè)Cache行的目錄狀態(tài)以及目錄向量;L2 Cache接口,為所述活躍目錄Cache與L2 Cache的接口。
3.一種基于權(quán)利要求1-2任一項(xiàng)所述的用于多核處理器的網(wǎng)絡(luò)犧牲Cache的數(shù)據(jù)請求 方法,其特征在于,該方法包括步驟當(dāng)接收到Ll Cache的替換請求時(shí),犧牲Cache為請求的地址分配一個(gè)Cache行,保存 要替換的數(shù)據(jù)塊,將分配的Cache行的目錄狀態(tài)設(shè)為共享狀態(tài),并向Ll Cache返回替換回應(yīng)信號;當(dāng)接收到Ll Cache的寫回請求時(shí),犧牲Cache為請求的地址分配一個(gè)Cache行,保存 要寫回的數(shù)據(jù)塊,將分配的Cache行的目錄狀態(tài)設(shè)為修改狀態(tài),并向Ll Cache返回寫回回應(yīng)信號;當(dāng)接收到Ll Cache的讀請求時(shí),查找犧牲Cache,若請求的地址存在且其所在Cache行 的目錄狀態(tài)為共享狀態(tài),則向Ll Cache返回請求的數(shù)據(jù)塊,并把該地址從犧牲Cache中刪 除;若請求的地址存在且其所在的Cache行的目錄狀態(tài)為修改狀態(tài),則向Ll Cache返回請 求的數(shù)據(jù)塊,標(biāo)識該數(shù)據(jù)塊為臟數(shù)據(jù),并將該地址從犧牲Cache中刪除;若請求的地址不存 在或處于無效狀態(tài),則把所述讀請求轉(zhuǎn)發(fā)給宿主節(jié)點(diǎn);當(dāng)接收到Ll Cache的寫請求時(shí),查找犧牲Cache,若請求的地址存在且其所在的Cache 行的目錄狀態(tài)為共享狀態(tài),則把該地址從犧牲Cache中刪除,把所述寫請求轉(zhuǎn)發(fā)給宿主節(jié) 點(diǎn);若請求的地址存在且其所在的Cache行的目錄狀態(tài)為修改狀態(tài),則向Ll Cache返回寫 授權(quán)以及請求的數(shù)據(jù)塊,并把該地址從犧牲Cache中刪除;若該請求的地址不存在或處于 無效狀態(tài),則把所述寫請求轉(zhuǎn)發(fā)給宿主節(jié)點(diǎn);當(dāng)接收到來自宿主節(jié)點(diǎn)的無效請求時(shí),查找犧牲Cache,若請求的地址所在的Cache行 的目錄狀態(tài)為共享狀態(tài),則把該Cache行從犧牲Cache中刪除,并向宿主節(jié)點(diǎn)返回?zé)o效回應(yīng) 消息;若請求的地址所在的Cache行的目錄狀態(tài)為修改狀態(tài),則把該Cache行從犧牲Cache 中刪除,并向宿主節(jié)點(diǎn)返回相應(yīng)的數(shù)據(jù)塊;若請求的地址不存在或處于無效狀態(tài),則把所述 無效請求轉(zhuǎn)發(fā)給處理器;當(dāng)犧牲Cache由于容量沖突必須進(jìn)行替換時(shí),若要替換的Cache行的目錄狀態(tài)為共享 狀態(tài),則向宿主節(jié)點(diǎn)發(fā)出替換請求,接收到宿主節(jié)點(diǎn)的替換回應(yīng)信號后,將所述Cache行從 犧牲Cache中刪除;若要替換的Cache行的目錄狀態(tài)為修改狀態(tài),則向宿主節(jié)點(diǎn)發(fā)出寫回請 求,接收到宿主節(jié)點(diǎn)的寫回回應(yīng)信號后,將所述Cache行從犧牲Cache中刪除。
4.如權(quán)利要求3所述的數(shù)據(jù)請求方法,其特征在于,所有處理器的讀寫缺失請求都引 發(fā)對宿主節(jié)點(diǎn)L2 Cache的訪問,這些訪問由目錄控制器捕獲,所述目錄控制器首先查找活躍目錄Cache中的目錄信息,然后根據(jù)請求的類型決定是否向本地L2 Cache發(fā)送讀寫請 求。
5.如權(quán)利要求4所述的數(shù)據(jù)請求方法,其特征在于,當(dāng)請求為讀請求時(shí)如果活躍目錄Cache命中,在目錄向量中加入請求節(jié)點(diǎn)的位置,如果命中的Cache行的 目錄狀態(tài)為共享狀態(tài),則向本地L2 Cache發(fā)出讀數(shù)據(jù)請求,得到L2 Cache的數(shù)據(jù)回應(yīng)后, 將請求的數(shù)據(jù)塊轉(zhuǎn)發(fā)給請求節(jié)點(diǎn),完成讀操作;如果命中的Cache行的目錄狀態(tài)為修改狀 態(tài),則向擁有該數(shù)據(jù)塊的共享節(jié)點(diǎn)發(fā)出降級寫回請求,目錄控制器接收到寫回的數(shù)據(jù)時(shí),將 寫回的數(shù)據(jù)塊轉(zhuǎn)發(fā)給請求節(jié)點(diǎn),并把該數(shù)據(jù)塊寫回本地L2 Cache,目錄狀態(tài)變?yōu)樾薷臓顟B(tài); 如果活躍目錄Cache缺失,則在活躍目錄Cache中添加目錄項(xiàng),然后向本地L2 Cache發(fā)出 讀請求,得到L2 Cache的數(shù)據(jù)回應(yīng)后,把請求的數(shù)據(jù)塊轉(zhuǎn)發(fā)給請求節(jié)點(diǎn),目錄狀態(tài)變?yōu)楣蚕?狀態(tài)。
6.如權(quán)利要求4所述的數(shù)據(jù)請求方法,其特征在于,當(dāng)請求為寫請求時(shí)如果活躍目錄Cache命中且命中的Cache行的目錄狀態(tài)為共享狀態(tài),則向所有共享 節(jié)點(diǎn)發(fā)出無效信號,并向本地L2 Cache發(fā)出讀請求,目錄控制器收集到所有的無效回應(yīng)消 息后,將相應(yīng)的節(jié)點(diǎn)位置從目錄向量中刪除,把從本地L2 Cache返回的數(shù)據(jù)塊回應(yīng)轉(zhuǎn)發(fā)給 請求節(jié)點(diǎn),把目錄狀態(tài)改變?yōu)樾薷臓顟B(tài),在目錄向量中加入請求節(jié)點(diǎn)的位置;如果命中的 Cache的目錄狀態(tài)為修改狀態(tài),則向共享節(jié)點(diǎn)發(fā)出無效并寫回請求,目錄控制器收到寫回的 數(shù)據(jù)塊時(shí),相應(yīng)的節(jié)點(diǎn)位置從目錄向量中刪除,把數(shù)據(jù)塊轉(zhuǎn)發(fā)給請求節(jié)點(diǎn),在目錄向量中加 入請求節(jié)點(diǎn)的位置;如果活躍目錄Cache未命中,則在活躍目錄Cache中添加目錄項(xiàng),向本 地L2 Cache發(fā)出讀請求,得到本地L2 Cache的數(shù)據(jù)回應(yīng)后,把請求的數(shù)據(jù)塊轉(zhuǎn)發(fā)給請求節(jié) 點(diǎn),目錄狀態(tài)變?yōu)樾薷臓顟B(tài),在目錄向量中加入請求節(jié)點(diǎn)的位置。
7.如權(quán)利要求4所述的數(shù)據(jù)請求方法,其特征在于,當(dāng)請求為替換請求時(shí)將相應(yīng)的節(jié)點(diǎn)位置從目錄向量中刪除,并向請求節(jié)點(diǎn)返回替換回應(yīng)信號;如果請求的 地址是唯一的共享節(jié)點(diǎn),則把該目錄向量從活躍目錄Cache中刪除。
8.如權(quán)利要求4所述的數(shù)據(jù)請求方法,其特征在于,當(dāng)請求為寫回請求時(shí)將相應(yīng)的節(jié)點(diǎn)位置從目錄向量中刪除,把要寫回的數(shù)據(jù)塊寫回到本地L2 Cache,并向 請求節(jié)點(diǎn)返回寫回回應(yīng)信號,把該目錄向量從活躍目錄Cache中刪除。
9.如權(quán)利要求4所述的數(shù)據(jù)請求方法,其特征在于,當(dāng)活躍目錄Cache由于容量沖突而 發(fā)生替換時(shí),進(jìn)行替換操作向所有共享節(jié)點(diǎn)發(fā)出無效請求,如果目錄狀態(tài)為共享狀態(tài),則 目錄控制器收集到所有的無效回應(yīng)后,把該目錄向量從活躍目錄Cache中刪除;如果目錄 狀態(tài)為修改狀態(tài),則目錄控制器收到寫回的數(shù)據(jù)塊后,把該數(shù)據(jù)塊寫回到本地L2 Cache中, 然后刪除該目錄向量。
10.如權(quán)利要求9所述的數(shù)據(jù)請求方法,其特征在于,當(dāng)接收到本地L2Cache的無效請 求時(shí),如果活躍目錄Cache不命中,則直接向本地L2 Cache返回?zé)o效回應(yīng)信號;如果活躍目 錄Cache命中,則進(jìn)行活躍目錄Cache的替換操作,替換操作完成后,向本地L2 Cache返回 無效回應(yīng)信號或?qū)懟匦盘?,把目錄向量從活躍目錄Cache中刪除。
全文摘要
本發(fā)明公開了一種用于多核處理器的網(wǎng)絡(luò)犧牲Cache及基于該網(wǎng)絡(luò)犧牲Cache的數(shù)據(jù)請求方法,該網(wǎng)絡(luò)犧牲Cache設(shè)置于網(wǎng)絡(luò)接口部件中,包括犧牲Cache,用于存放從L1 Cache替換出來的數(shù)據(jù)塊;活躍目錄Cache,用于保存以及維護(hù)目錄信息。本發(fā)明的網(wǎng)絡(luò)犧牲Cache及數(shù)據(jù)請求方法能夠加快L1 Cache缺失訪問的速度,提高多核處理器的性能。
文檔編號G06F12/08GK102063407SQ201010621069
公開日2011年5月18日 申請日期2010年12月24日 優(yōu)先權(quán)日2010年12月24日
發(fā)明者汪東升, 王驚雷 申請人:清華大學(xué)