專利名稱:支持高速緩存一致的片上網(wǎng)絡(luò)系統(tǒng)及數(shù)據(jù)請求方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)技術(shù)領(lǐng)域,特別涉及一種支持高速緩存一致的片上網(wǎng) 絡(luò)系統(tǒng)及數(shù)據(jù)請求方法。
背景技術(shù):
進(jìn)入單芯片十億晶體管的時(shí)代后,體系結(jié)構(gòu)研究的重點(diǎn)已從如何利用有限資源實(shí) 現(xiàn)所需功能逐步轉(zhuǎn)向如何充分利用不斷增長的晶體管資源設(shè)計(jì)滿足高性能、低功耗等要求 的處理器。多核處理器(Multicore processors)為有效利用這些晶體管資源提供了一種 高效、可擴(kuò)展的方案,受到了學(xué)術(shù)界和工業(yè)界的熱捧。一顆芯片上將集成多個(gè)(Multic0re) 或眾多個(gè)(Manyc0re)處理器核,即大規(guī)模多核處理器。大規(guī)模多核處理器面臨的主要挑戰(zhàn) 是設(shè)計(jì)復(fù)雜性、擴(kuò)展性和存儲訪問延遲等。隨著多核處理器規(guī)模的增大,需要片上存儲系統(tǒng)為其提供大量的數(shù)據(jù)。出于降低 存儲訪問延遲以及降低編程復(fù)雜性的考慮,多核處理器通常采用共享Cache的片上存儲系 統(tǒng)。由于處理器核中通常包含私有Cache,在多核處理器中,必須使用Cache —致性協(xié)議來 維護(hù)私有Cache中數(shù)據(jù)的一致性和完整性。隨著多核處理器規(guī)模的擴(kuò)大,總線結(jié)構(gòu)以及基 于總線的偵聽一致性協(xié)議已無法滿足擴(kuò)展性的要求。為了解決這個(gè)問題,片上網(wǎng)絡(luò)和目錄 的一致性協(xié)議被用來替代總線和偵聽協(xié)議。目錄一致性協(xié)議是多核處理器的一種基本的通訊機(jī)制,保證了多核處理器中數(shù)據(jù) 的一致性和完整性,其實(shí)現(xiàn)與多個(gè)部件有關(guān)1、處理器核在處理器核中維護(hù)私有Cache的一致性狀態(tài);2、共享Cache 在共享Cache中保存和維護(hù)目錄信息;3、片上網(wǎng)絡(luò)片上網(wǎng)絡(luò)為一致性操作提供傳輸服務(wù)。由于目錄一致性協(xié)議與處理器、共享Cache和片上網(wǎng)絡(luò)都緊密相關(guān),增加了多核 處理器設(shè)計(jì)的難度。異構(gòu)多核處理器由于性能和功耗的優(yōu)勢,在工業(yè)界得到了廣泛應(yīng)用,如IBM公司 的Cell處理器,AMD公司的Bulldozer處理器等。但是異構(gòu)多核處理器中不同處理器核之 間存在一致性協(xié)議的不兼容問題,有的支持一致性協(xié)議,有的不支持一致性協(xié)議。如IBM公 司的 PowerPC 755 處理器支持MEI (modified,exclusive,and invalid)協(xié)議,INTEL 公司的 IA-32 系列處理器支持 MESI (modified, exclusive, shared, and invalid)協(xié)議,SUN 公司的 Ultrasparc 處理器支持MOESI (exclusive modified, shared modified, exclusive clean, shared clean, andinvalid)協(xié)議,AMD 64 系列支持 MOESI (modified, owned, exclusive, shared,and invalid)協(xié)議,但與Ultrasparc處理器所支持的MOESI協(xié)議有很大差異。TI 公司的DSP提供了維護(hù)處理器與二級緩存之間一致性的簡單功能。一些嵌入式處理器如 MIPS 4K系列,ARM 7系列等處理器雖然包含私有Cache,但不支持一致性協(xié)議。大部分專 用處理器和硬件加速部件也不支持一致性協(xié)議。不兼容的一致性協(xié)議使異構(gòu)多核處理器設(shè) 計(jì)異常困難。
由于一致性協(xié)議與處理器、共享Cache以及片上網(wǎng)絡(luò)都緊密相關(guān),特別是異構(gòu)多 核處理器中不兼容的一致性協(xié)議,使得在設(shè)計(jì)新的多核處理器時(shí),各個(gè)部件都需要為維護(hù) 一致性而重新設(shè)計(jì),降低了部件的可重用性,增加了設(shè)計(jì)的難度。隨著多核處理器規(guī)模的擴(kuò)大,目錄一致性協(xié)議存在嚴(yán)重的擴(kuò)展性問題。在基于目 錄的一致性協(xié)議中,目錄的存儲會占用一部分片上資源。以全目錄一致性協(xié)議為例,當(dāng)數(shù)據(jù) 塊的大小為64B時(shí),16核多核處理器中目錄的存儲開銷占二級緩存存儲開銷的3%;增加到 64核時(shí),目錄存儲開銷的比例增加到12. 5%;增加到512核時(shí),目錄存儲開銷的比例增加到 50%。目錄一致性協(xié)議中的目錄存儲開銷不僅增加芯片面積和成本,還增加了系統(tǒng)的功耗, 嚴(yán)重影響了多核處理器的擴(kuò)展性。在目錄一致性協(xié)議中,目錄通常保存在最后一級Cache (如兩級Cache結(jié)構(gòu)中的二 級緩存)中,二級緩存中的每一個(gè)數(shù)據(jù)塊都維護(hù)一個(gè)目錄向量,用以跟蹤緩存該數(shù)據(jù)塊的 處理器。處理器的所有缺失請求都需要到宿主節(jié)點(diǎn)的二級緩存中查找目錄信息,并執(zhí)行相 應(yīng)的一致性操作。隨著處理器規(guī)模的擴(kuò)大,對目錄的訪問延遲也隨之增大,嚴(yán)重影響多核處 理器的性能。目錄一致性協(xié)議也是大規(guī)模多核處理器的性能瓶頸。
發(fā)明內(nèi)容
(一)要解決的技術(shù)問題本發(fā)明要解決的技術(shù)問題是多核處理器中一致性協(xié)議所帶來的設(shè)計(jì)復(fù)雜、目錄難 以擴(kuò)展以及訪問延遲較大的問題(二)技術(shù)方案為解決上述技術(shù)問題,本發(fā)明提供了一種支持高速緩存一致的片上網(wǎng)絡(luò)系統(tǒng),包 括網(wǎng)絡(luò)接口部件,所述網(wǎng)絡(luò)接口部件連接路由器,并連接多核處理器和二級緩存,在所述 網(wǎng)絡(luò)接口部件中增設(shè)有與多核處理器相連的一致性狀態(tài)緩存,所述一致性狀態(tài)緩存用于保 存并維護(hù)多核處理器的每個(gè)核的一級緩存中數(shù)據(jù)塊的一致性狀態(tài)。其中,所述一致性狀態(tài)緩存包括一致性狀態(tài)存儲器,具有與所述一級緩存相同的存儲行,用于保存所述一級緩存 中數(shù)據(jù)塊的一致性狀態(tài);處理器接口,連接所述多核處理器,用于從不同類型處理器核的總線請求中分離 出一致性狀態(tài)緩存所需要的請求信號,并把一致性狀態(tài)緩存對多核處理器的回應(yīng)或請求信 號轉(zhuǎn)換成多核處理器可以識別的信號;一致性協(xié)議控制器,用于當(dāng)多核處理器的一級緩存訪問缺失請求或回應(yīng)消息經(jīng)過 網(wǎng)絡(luò)接口部件時(shí),通過所述處理器接口獲取該訪問缺失請求或回應(yīng)消息,從中分離出地址 標(biāo)簽,并維護(hù)相應(yīng)的一致性狀態(tài)。其中,所述網(wǎng)絡(luò)接口部件中還增設(shè)有與二級緩存相連的活躍目錄緩存,用于緩存 和維護(hù)二級緩存中經(jīng)常被所述一級緩存訪問的數(shù)據(jù)塊的目錄信息。其中,所述活躍目錄緩存包括目錄存儲器,用于緩存二級緩存中經(jīng)常被所述一級緩存訪問的數(shù)據(jù)塊的目錄信 息包括所述數(shù)據(jù)塊的地址標(biāo)簽、目錄狀態(tài)和目錄向量;二級緩存接口,連接二級緩存,用于將多核處理器的訪問缺失請求發(fā)送給所述二級緩存,或?qū)⒍壘彺娴幕貞?yīng)信號返回給活躍目錄緩存;目錄控制器,用于通過二級緩存接口獲取多核處理器對二級緩存的訪問請求,并 查找目錄存儲器中的目錄信息,然后根據(jù)請求的類型決定是否向本地二級緩存發(fā)送該訪問 請求。本發(fā)明還提供了一種利用上述的系統(tǒng)的數(shù)據(jù)請求方法,包括以下步驟Sl 請求節(jié)點(diǎn)的一致性協(xié)議控制器捕獲所述請求節(jié)點(diǎn)處理器的一級緩存訪問缺失 請求,S2:所述請求節(jié)點(diǎn)的一致性協(xié)議控制器在一致性狀態(tài)存儲器中查找所述缺失請求 的地址標(biāo)簽,并根據(jù)相應(yīng)的一致性狀態(tài)向宿主節(jié)點(diǎn)的二級緩存發(fā)出數(shù)據(jù)請求;S3:所述宿主節(jié)點(diǎn)路由器的網(wǎng)絡(luò)接口部件中活躍目錄緩存的目錄控制器捕獲所述 數(shù)據(jù)請求,并在該目錄存儲器中查找所述數(shù)據(jù)請求對應(yīng)的目錄信息,然后根據(jù)請求類型決 定是否向該宿主節(jié)點(diǎn)的二級緩存發(fā)送所述數(shù)據(jù)請求;S4:所述宿主節(jié)點(diǎn)的二級緩存根據(jù)所述數(shù)據(jù)請求向請求節(jié)點(diǎn)處理器返回消息,在 經(jīng)過請求節(jié)點(diǎn)的路由器時(shí),該路由器的一致性協(xié)議控制器捕獲該消息,并根據(jù)消息類型改 變或保持一致性狀態(tài)緩存中所述地址標(biāo)簽的地址中存儲數(shù)據(jù)的一致性狀態(tài),并把消息中包 含的請求數(shù)據(jù)返回給請求節(jié)點(diǎn)處理器。其中,所述步驟S2具體包括當(dāng)所述缺失請求為讀請求操作在請求節(jié)點(diǎn)的一致性狀態(tài)緩存的一致性狀態(tài)存儲器中為該請求地址 分配一個(gè)緩存行,并把一致性狀態(tài)設(shè)為臨時(shí)狀態(tài)IS,同時(shí)向宿主節(jié)點(diǎn)的二級緩存轉(zhuǎn)發(fā)該請 求,所述臨時(shí)狀態(tài)IS表示讀請求還沒有完成,等待該二級緩存的數(shù)據(jù)回應(yīng);寫請求操作如果請求節(jié)點(diǎn)的一致性狀態(tài)緩存不命中,則為該地址分配一個(gè)緩存 行,并把一致性狀態(tài)設(shè)為臨時(shí)狀態(tài)IM,并向宿主節(jié)點(diǎn)的二級緩存轉(zhuǎn)發(fā)該寫請求,所述臨時(shí)狀 態(tài)IM表示寫請求還沒有完成,等待該二級緩存的寫回應(yīng);如果請求節(jié)點(diǎn)的一致性狀態(tài)緩存 命中且處于共享狀態(tài),則把一致性狀態(tài)設(shè)為IM狀態(tài),并向宿主節(jié)點(diǎn)的二級緩存發(fā)送寫更新 請求;如果請求節(jié)點(diǎn)的一致性狀態(tài)緩存命中且處于修改狀態(tài),則直接向請求節(jié)點(diǎn)處理器返 回寫回應(yīng)信號,一致性狀態(tài)緩存中的狀態(tài)不改變;更新請求操作將請求節(jié)點(diǎn)的一致性狀態(tài)緩存中的一致性狀態(tài)設(shè)為IM狀態(tài),然后 向宿主節(jié)點(diǎn)發(fā)送更新請求;替換和寫回請求操作請求節(jié)點(diǎn)的一致性狀態(tài)緩存直接把該請求轉(zhuǎn)發(fā)給宿主節(jié)點(diǎn) 的二級緩存;替換操作當(dāng)請求節(jié)點(diǎn)的一致性狀態(tài)緩存由于容量沖突發(fā)生替換操作時(shí),則向請 求節(jié)點(diǎn)處理器發(fā)出無效信號,請求節(jié)點(diǎn)處理器的私有一級緩存則會根據(jù)其狀態(tài)向宿主節(jié)點(diǎn) 發(fā)出無效回應(yīng)或?qū)懟叵ⅲ埱蠊?jié)點(diǎn)的一致性狀態(tài)緩存接收到請求節(jié)點(diǎn)處理器的無效回應(yīng) 或?qū)懟叵⒑?,向宿主?jié)點(diǎn)的二級緩存發(fā)出替換或?qū)懟卣埱?,等到收到宿主?jié)點(diǎn)的替換回 應(yīng)或?qū)懟鼗貞?yīng)消息后,把該緩存行從請求節(jié)點(diǎn)的一致性狀態(tài)緩存中刪除。其中,所述步驟S3具體包括當(dāng)所述缺失請求為讀請求操作如果宿主節(jié)點(diǎn)的活躍目錄緩存命中,在活躍目錄信息的目錄向量中 加入請求節(jié)點(diǎn)的位置,如果目錄狀態(tài)處于共享狀態(tài),則向該宿主節(jié)點(diǎn)的二級緩存發(fā)出讀數(shù) 據(jù)請求,得到二級緩存的數(shù)據(jù)回應(yīng)后,把該數(shù)據(jù)轉(zhuǎn)發(fā)給請求節(jié)點(diǎn)的處理器;如果目錄狀態(tài)處于修改狀態(tài),則向擁有該數(shù)據(jù)的共享節(jié)點(diǎn)發(fā)出降級寫回請求,目錄控制器接收到寫回的數(shù) 據(jù)時(shí),把寫回的數(shù)據(jù)轉(zhuǎn)發(fā)給請求節(jié)點(diǎn)的處理器,并把該數(shù)據(jù)寫回該宿主節(jié)點(diǎn)的二級緩存,目 錄狀態(tài)變?yōu)楣蚕頎顟B(tài);如果宿主節(jié)點(diǎn)的活躍目錄緩存缺失,則在活躍目錄緩存中添加目錄 項(xiàng),然后向該宿主節(jié)點(diǎn)的二級緩存發(fā)出讀請求,得到緩存的數(shù)據(jù)回應(yīng)后,把請求的數(shù)據(jù)轉(zhuǎn)發(fā) 給請求節(jié)點(diǎn)的處理器,目錄狀態(tài)變?yōu)楣蚕頎顟B(tài);寫請求操作如果宿主節(jié)點(diǎn)的活躍目錄緩存命中且處于共享狀態(tài),則向所有共享 節(jié)點(diǎn)的處理器發(fā)出無效信號,并向該宿主節(jié)點(diǎn)的二級緩存發(fā)出讀請求,目錄控制器收集到 所有的無效回應(yīng)消息后,將相應(yīng)的共享節(jié)點(diǎn)的位置從目錄向量中刪除,把從二級緩存返回 的數(shù)據(jù)回應(yīng)轉(zhuǎn)發(fā)給請求節(jié)點(diǎn)的處理器,把宿主節(jié)點(diǎn)的活躍目錄緩存的目錄狀態(tài)改變?yōu)樾薷?狀態(tài),在目錄向量中加入請求節(jié)點(diǎn)的位置;如果宿主節(jié)點(diǎn)的活躍目錄緩存處于修改狀態(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)的位置;如果宿 主節(jié)點(diǎn)的活躍目錄緩存不命中,則在活躍目錄緩存中添加目錄項(xiàng),向該宿主節(jié)點(diǎn)的二級緩 存發(fā)出讀請求,得到二級緩存的數(shù)據(jù)回應(yīng)后,把請求的數(shù)據(jù)轉(zhuǎn)發(fā)給請求節(jié)點(diǎn),目錄狀態(tài)變?yōu)?修改狀態(tài),在目錄向量中加入請求節(jié)點(diǎn)的位置;替換請求操作將待替換的請求節(jié)點(diǎn)位置從宿主節(jié)點(diǎn)的目錄向量中刪除,并向該 請求節(jié)點(diǎn)返回替換回應(yīng)信號,如果是唯一的共享節(jié)點(diǎn),則把該目錄向量從宿主節(jié)點(diǎn)的活躍 目錄緩存中刪除;寫回請求操作將節(jié)點(diǎn)位置從宿主節(jié)點(diǎn)的目錄向量中刪除,把數(shù)據(jù)寫回到該宿主 節(jié)點(diǎn)的二級緩存,并向請求節(jié)點(diǎn)返回寫回回應(yīng)信號,把該目錄向量從宿主節(jié)點(diǎn)的活躍目錄 緩存中刪除;替換操作宿主節(jié)點(diǎn)的活躍目錄緩存由于容量沖突而發(fā)生替換時(shí),向所有共享節(jié) 點(diǎn)發(fā)出無效請求,如果該目錄存儲器的目錄狀態(tài)處于共享狀態(tài),則目錄控制器收集到所有 的無效回應(yīng)后,把該目錄向量從活躍目錄緩存中刪除;如果該目錄存儲器目錄狀態(tài)處于修 改狀態(tài),則目錄控制器收到寫回的數(shù)據(jù)后,把該數(shù)據(jù)寫回到該宿主節(jié)點(diǎn)的二級緩存中,然后 刪除該數(shù)據(jù)對應(yīng)的目錄向量;接收到宿主節(jié)點(diǎn)的二級緩存的無效請求時(shí),如果該節(jié)點(diǎn)的活躍目錄緩存不命中, 則直接向二級緩存返回?zé)o效回應(yīng)信號,如果活躍目錄緩存命中,則進(jìn)行活躍目錄緩存的替 換操作,替換操作完成后,向二級緩存返回?zé)o效回應(yīng)信號或?qū)懟匦盘?,把目錄向量從活躍目 錄緩存中刪除。其中,所述步驟S4具體包括當(dāng)所述缺失請求對應(yīng)的回應(yīng)操作為讀回應(yīng)操作將請求節(jié)點(diǎn)的一致性狀態(tài)緩存的IS狀態(tài)改變?yōu)楣蚕頎顟B(tài),并向請求 節(jié)點(diǎn)處理器返回?cái)?shù)據(jù);寫回應(yīng)和更新回應(yīng)操作將請求節(jié)點(diǎn)的一致性狀態(tài)緩存的IM狀態(tài)改變?yōu)樾薷臓?態(tài),并向請求節(jié)點(diǎn)處理器返回寫回應(yīng)或更新回應(yīng);替換回應(yīng)和寫回回應(yīng)操作刪除請求節(jié)點(diǎn)的一致性狀態(tài)緩存中該地址所在的緩存 行,并把回應(yīng)信號轉(zhuǎn)發(fā)給請求節(jié)點(diǎn)處理器;無效請求操作請求節(jié)點(diǎn)的一致性狀態(tài)緩存接收到來自宿主節(jié)點(diǎn)二級緩存的無效 請求時(shí),直接轉(zhuǎn)發(fā)給請求節(jié)點(diǎn)處理器;
8
無效回應(yīng)操作請求節(jié)點(diǎn)的一致性狀態(tài)緩存接收到來自請求節(jié)點(diǎn)處理器的無效回 應(yīng)信號時(shí),刪除對應(yīng)的緩存行,并把無效回應(yīng)信號轉(zhuǎn)發(fā)宿主節(jié)點(diǎn)。(三)有益效果本發(fā)明提出的支持高速緩存一致的片上網(wǎng)絡(luò)系統(tǒng)通過在片上網(wǎng)絡(luò)的網(wǎng)絡(luò)接口部 件中集成一致性狀態(tài)緩存和活躍目錄緩存,把一致性維護(hù)工作從處理器中分離出來,把目 錄維護(hù)工作從二級緩存中分離出來,并且取消了二級緩存中的目錄結(jié)構(gòu),簡化了多核處理 器的設(shè)計(jì)和驗(yàn)證過程,降低了芯片的存儲及延時(shí)開銷,提高了多核處理器的性能。
圖1是本發(fā)明實(shí)施例的支持高速緩存一致的片上網(wǎng)絡(luò)系統(tǒng)結(jié)構(gòu)示意圖;圖2是本發(fā)明實(shí)施例的支持高速緩存一致的片上網(wǎng)絡(luò)系統(tǒng)中一致性狀態(tài)緩存結(jié) 構(gòu)示意圖;圖3是本發(fā)明實(shí)施例的支持高速緩存一致的片上網(wǎng)絡(luò)系統(tǒng)中活躍目錄緩存的結(jié) 構(gòu)示意圖;圖4是本發(fā)明實(shí)施例的利用上述的系統(tǒng)的數(shù)據(jù)請求方法流程圖。
具體實(shí)施例方式下面結(jié)合附圖和實(shí)施例,對本發(fā)明的具體實(shí)施方式
作進(jìn)一步詳細(xì)描述。以下實(shí)施 例用于說明本發(fā)明,但不用來限制本發(fā)明的范圍。在多核處理器中,緩存一致性協(xié)議的操作是通過片上網(wǎng)絡(luò)傳輸?shù)?。多核處理器?私有緩存(一級緩存)缺失請求通過網(wǎng)絡(luò)接口部件發(fā)送到片上網(wǎng)絡(luò)中,回應(yīng)信息也通過片 上網(wǎng)絡(luò)傳輸給請求節(jié)點(diǎn)的路由器,再通過網(wǎng)絡(luò)接口部件返回給多核處理器。對共享二級緩 存中目錄以及數(shù)據(jù)的訪問也是通過網(wǎng)絡(luò)接口部件傳輸?shù)摹9蚕矶壘彺鎸Χ嗪颂幚砥鞯幕?應(yīng)消息以及對私有緩存的無效消息通過網(wǎng)絡(luò)接口部件注入到片上網(wǎng)絡(luò),傳輸給相應(yīng)的多核 處理器。網(wǎng)絡(luò)接口部件可以獲取系統(tǒng)中的所有一致性協(xié)議操作,并做出進(jìn)一步的處理。為了把一致性狀態(tài)維護(hù)工作從處理器中分離出來,本發(fā)明在網(wǎng)絡(luò)接口部件中增加 了一個(gè)一致性狀態(tài)緩存,如圖1所示,所述一致性狀態(tài)緩存用于保存并維護(hù)本地私有一級 緩存中數(shù)據(jù)塊的一致性狀態(tài),而多核處理器的一級緩存按自己的方式工作,不必關(guān)心一致 性維護(hù)工作。通過一致性狀態(tài)緩存,實(shí)現(xiàn)了一致性協(xié)議與處理器的分離,兼容具有不同一致 性協(xié)議的多核處理器。如圖2所示,上述一致性狀態(tài)緩存包括一致性狀態(tài)存儲器,具有與所述一級緩存相同的存儲行,存儲行中的存儲有一級 緩存的地址標(biāo)簽和一致性狀態(tài),用于保存所述一級緩存中數(shù)據(jù)塊的一致性狀態(tài)。處理器接口,連接所述多核處理器,用于從不同類型處理器核的總線請求中分離 出一致性狀態(tài)緩存所需要的請求信號,并把一致性狀態(tài)緩存對多核處理器的回應(yīng)或請求信 號轉(zhuǎn)換成多核處理器可以識別的信號。一致性協(xié)議控制器,用于當(dāng)多核處理器的一級緩存訪問缺失請求或回應(yīng)消息經(jīng)過 網(wǎng)絡(luò)接口部件時(shí),通過所述處理器接口獲取該訪問請求或回應(yīng)消息,從中分離出地址標(biāo)簽, 并維護(hù)相應(yīng)的一致性狀態(tài)。
為了把目錄存儲和維護(hù)工作從二級緩存中分離出來,網(wǎng)絡(luò)接口部件中還增設(shè)有與 二級緩存相連的活躍目錄緩存,如圖1所示,活躍目錄緩存用于緩存和維護(hù)二級緩存中經(jīng) 常被一級緩存訪問的數(shù)據(jù)塊的目錄信息。同時(shí)取消二級緩存中的目錄存儲空間和目錄維護(hù) 工作?;钴S目錄緩存降低了目錄存儲開銷,實(shí)現(xiàn)了一致性協(xié)議與二級緩存的分離?;钴S目 錄緩存也降低了目錄訪問延遲,使系統(tǒng)的性能有所提高。如圖3所示,上述活躍目錄緩存包括目錄存儲器,用于緩存二級緩存中經(jīng)常被所述一級緩存訪問的數(shù)據(jù)塊的目錄信 息,每個(gè)存儲行由所述數(shù)據(jù)塊的地址標(biāo)簽、目錄狀態(tài)和目錄向量等組成。目錄向量的目的是 跟蹤緩存該地址的一級緩存的位置。目錄向量中為每一個(gè)包含私有一級緩存的處理器核保 留一個(gè)共享位。二級緩存接口,連接二級緩存,多核處理器的缺失請求在訪問活躍目錄緩存后,用 于將多核處理器的訪問缺失請求發(fā)送給所述二級緩存,或?qū)⒍壘彺娴幕貞?yīng)信號返回給活 躍目錄緩存。目錄控制器,用于通過二級緩存接口獲取多核處理器對二級緩存的訪問請求,并 查找目錄存儲器中的目錄信息,然后根據(jù)請求的類型決定是否向本地二級緩存發(fā)送該訪問 請求。相對于傳統(tǒng)的片上網(wǎng)絡(luò),在支持高速緩存一致的片上網(wǎng)絡(luò)系統(tǒng)結(jié)構(gòu)中增加了一致 性狀態(tài)緩存和活躍目錄緩存。它們都實(shí)現(xiàn)在片上網(wǎng)絡(luò)的網(wǎng)絡(luò)接口部件中。一致性狀態(tài)緩 存是路由器與處理器的接口,活躍目錄緩存是路由器與二級緩存的接口。一致性狀態(tài)維護(hù) 和目錄維護(hù)工作分別由一致性狀態(tài)緩存和活躍目錄緩存完成。網(wǎng)絡(luò)接口部件的主要功能是 對發(fā)送的數(shù)據(jù)進(jìn)行打包以及對接收的數(shù)據(jù)進(jìn)行解包處理。一致性狀態(tài)緩存和活躍目錄緩存 與網(wǎng)絡(luò)接口的打包和解包部件并行工作,掩藏了一致性狀態(tài)緩存和活躍目錄緩存的訪問延 遲。這樣的設(shè)計(jì)沒有改變路由器的結(jié)構(gòu),對拓?fù)浣Y(jié)構(gòu)和路由算法都沒有影響,增加了支持高 速緩存一致的片上網(wǎng)絡(luò)結(jié)構(gòu)的適應(yīng)性和靈活性。本發(fā)明支持多核處理器和二級緩存通過支 持高速緩存一致的片上網(wǎng)絡(luò)結(jié)構(gòu)直接連接到片上網(wǎng)絡(luò)中,實(shí)現(xiàn)多核處理器的無縫集成,一 致性協(xié)議對多核處理器和二級緩存是透明的。本發(fā)明還公開了一種利用上述的系統(tǒng)的數(shù)據(jù)請求方法,該方法可以使請求節(jié)點(diǎn)的 處理器向網(wǎng)絡(luò)上的宿主節(jié)點(diǎn)的二級緩存請求數(shù)據(jù),所述請求節(jié)點(diǎn)是指發(fā)出數(shù)據(jù)請求的處理 器所在的計(jì)算機(jī)節(jié)點(diǎn),所述宿主節(jié)點(diǎn)是指保存該數(shù)據(jù)的二級緩存所在的網(wǎng)絡(luò)上的計(jì)算機(jī)節(jié) 點(diǎn)。如圖4所示,包括步驟S401,所述請求節(jié)點(diǎn)的一致性協(xié)議控制器捕獲所述請求節(jié)點(diǎn)處理器的一級緩 存訪問缺失請求。步驟S402,所述請求節(jié)點(diǎn)的一致性協(xié)議控制器在一致性狀態(tài)存儲器中查找所述缺 失請求的地址標(biāo)簽,并根據(jù)相應(yīng)的一致性狀態(tài)向宿主節(jié)點(diǎn)的二級緩存發(fā)出數(shù)據(jù)請求。步驟S403,所述宿主節(jié)點(diǎn)路由器的網(wǎng)絡(luò)接口部件中活躍目錄緩存的目錄控制器捕 獲所述數(shù)據(jù)請求,并在所述目錄存儲器中查找所述數(shù)據(jù)請求對應(yīng)的目錄信息,然后根據(jù)請 求類型決定是否向該宿主節(jié)點(diǎn)的二級緩存發(fā)送所述數(shù)據(jù)請求。步驟S404,所述宿主節(jié)點(diǎn)的二級緩存根據(jù)所述數(shù)據(jù)請求向所述請求節(jié)點(diǎn)處理器返 回消息,在經(jīng)過請求節(jié)點(diǎn)的路由器時(shí),該路由器的一致性協(xié)議控制器捕獲該消息,并根據(jù)消息類型改變或保持一致性狀態(tài)緩存中所述地址標(biāo)簽的地址中存儲數(shù)據(jù)的一致性狀態(tài),并把 消息中包含的請求數(shù)據(jù)返回給請求節(jié)點(diǎn)處理器。本發(fā)明的片上網(wǎng)系統(tǒng)工作原理如下上述支持高速緩存一致的片上網(wǎng)絡(luò)系統(tǒng)中,處理器的存儲訪問缺失請求經(jīng)過網(wǎng)絡(luò) 接口部件時(shí),進(jìn)入一致性狀態(tài)緩存。一致性協(xié)議控制器首先在一致性狀態(tài)緩存中查找一級 緩存請求地址的地址標(biāo)簽,并根據(jù)相應(yīng)的一致性狀態(tài)信息,向宿主節(jié)點(diǎn)的二級緩存發(fā)出請 求。如果一致性狀態(tài)緩存中沒有該地址標(biāo)簽,則添加該地址標(biāo)簽。二級緩存返回給該多核 處理器的回應(yīng)消息被一致性協(xié)議控制器截獲,一致性協(xié)議控制器根據(jù)回應(yīng)消息的類型,改 變或維持一致性狀態(tài)緩存中的一致性狀態(tài),同時(shí),把請求的數(shù)據(jù)轉(zhuǎn)發(fā)給多核處理器,完成一 次處理器缺失訪問操作。二級緩存對多核處理器的數(shù)據(jù)塊無效請求以及多核處理器的無效 回應(yīng)消息也被一致性協(xié)議控制器截獲,并對一致性狀態(tài)進(jìn)行相應(yīng)的改變。具體的一致性協(xié) 議操作如下讀請求操作在請求節(jié)點(diǎn)的一致性狀態(tài)緩存的一致性狀態(tài)存儲器中為該請求地址 分配一個(gè)緩存行,并把一致性狀態(tài)設(shè)為IS狀態(tài)(IS是一種臨時(shí)狀態(tài),表示讀請求還沒有完 成,等待該二級緩存的數(shù)據(jù)回應(yīng)),并向宿主節(jié)點(diǎn)的二級緩存轉(zhuǎn)發(fā)該請求。寫請求操作如果請求節(jié)點(diǎn)的一致性狀態(tài)緩存不命中,則為該地址分配一個(gè)緩存 行,并把一致性狀態(tài)設(shè)為IM狀態(tài)(IM也是一種臨時(shí)狀態(tài),表示寫請求還沒有完成,等待該 二級緩存的寫回應(yīng)),并向宿主節(jié)點(diǎn)的二級緩存轉(zhuǎn)發(fā)該寫請求;如果請求節(jié)點(diǎn)的一致性狀 態(tài)緩存命中且處于共享(S)狀態(tài),則把一致性狀態(tài)設(shè)為IM狀態(tài),并向宿主節(jié)點(diǎn)發(fā)送寫更新 (Update)請求;如果請求節(jié)點(diǎn)的一致性狀態(tài)緩存命中且處于修改(M)狀態(tài),則直接向請求 節(jié)點(diǎn)處理器返回寫回應(yīng)信號,一致性狀態(tài)緩存中的狀態(tài)不改變。更新請求操作將請求節(jié)點(diǎn)的一致性狀態(tài)緩存中的一致性狀態(tài)設(shè)為IM狀態(tài),然后 向宿主節(jié)點(diǎn)發(fā)送更新請求。當(dāng)接收到多核處理器的更新請求時(shí),一致性狀態(tài)緩存應(yīng)處于共 享⑶狀態(tài)。替換和寫回請求操作請求節(jié)點(diǎn)的一致性狀態(tài)緩存直接把該請求轉(zhuǎn)發(fā)給宿主節(jié)點(diǎn) 的二級緩存。當(dāng)接收到多核處理器的替換請求時(shí),一致性狀態(tài)緩存應(yīng)處于共享(S)狀態(tài)。當(dāng) 接收到多核處理器的寫回請求時(shí),一致性狀態(tài)緩存應(yīng)處于修改(M)狀態(tài)。讀回應(yīng)操作將請求節(jié)點(diǎn)的一致性狀態(tài)緩存的IS狀態(tài)改變?yōu)楣蚕?S)狀態(tài),并向 請求節(jié)點(diǎn)處理器返回?cái)?shù)據(jù)。寫回應(yīng)和更新回應(yīng)操作將請求節(jié)點(diǎn)的一致性狀態(tài)緩存的IM狀態(tài)改變?yōu)樾薷?M) 狀態(tài),并向請求節(jié)點(diǎn)處理器返回寫回應(yīng)或更新回應(yīng)。替換回應(yīng)和寫回回應(yīng)操作刪除請求節(jié)點(diǎn)的一致性狀態(tài)緩存中該地址所在的緩存 行,并把回應(yīng)信號轉(zhuǎn)發(fā)給請求節(jié)點(diǎn)處理器。無效請求操作請求節(jié)點(diǎn)的一致性狀態(tài)緩存接收到來自宿主節(jié)點(diǎn)二級緩存的無效 請求時(shí),直接轉(zhuǎn)發(fā)給請求節(jié)點(diǎn)處理器。無效回應(yīng)操作請求節(jié)點(diǎn)的一致性狀態(tài)緩存接收到來自多核處理器的無效回應(yīng)信 號時(shí),刪除對應(yīng)的緩存行,并把無效回應(yīng)信號轉(zhuǎn)發(fā)宿主節(jié)點(diǎn)。替換操作當(dāng)請求節(jié)點(diǎn)的一致性狀態(tài)緩存由于容量沖突發(fā)生替換操作時(shí),則向請 求節(jié)點(diǎn)處理器發(fā)出無效信號,請求節(jié)點(diǎn)處理器的私有一級緩存則會根據(jù)其狀態(tài)向宿主節(jié)點(diǎn)
11發(fā)出無效回應(yīng)或?qū)懟叵?。請求?jié)點(diǎn)的一致性狀態(tài)緩存接收到請求節(jié)點(diǎn)處理器的無效回應(yīng) 或?qū)懟叵⒑螅蛩拗鞴?jié)點(diǎn)發(fā)出替換或?qū)懟卣埱?。等到收到宿主?jié)點(diǎn)的替換回應(yīng)或?qū)懟鼗?應(yīng)消息后,把該緩存行從請求節(jié)點(diǎn)的一致性狀態(tài)緩存中刪除。上述支持高速緩存一致的片上網(wǎng)絡(luò)系統(tǒng)中,活躍目錄緩存保存最近經(jīng)常訪問的數(shù) 據(jù)的目錄信息。所有多核處理器的讀寫缺失請求都會引發(fā)對宿主節(jié)點(diǎn)二級緩存的訪問,這 些訪問被網(wǎng)絡(luò)接口上的活躍目錄緩存捕獲?;钴S目錄緩存中的目錄控制器首先查找活躍目 錄緩存的目錄存儲器中目錄信息,然后根據(jù)請求的類型決定是否向本地二級緩存發(fā)送讀寫 請求。其工作過程如下讀請求操作如果宿主節(jié)點(diǎn)的活躍目錄緩存命中,在目錄向量中加入請求節(jié)點(diǎn)的 位置,如果目錄狀態(tài)處于共享(S)狀態(tài),則向該宿主節(jié)點(diǎn)的二級緩存發(fā)出讀數(shù)據(jù)請求,得到 二級緩存的數(shù)據(jù)回應(yīng)后,把該數(shù)據(jù)轉(zhuǎn)發(fā)給請求節(jié)點(diǎn)的處理器,完成讀操作。如果目錄狀態(tài)處 于修改(M)狀態(tài),則向擁有該數(shù)據(jù)的共享節(jié)點(diǎn)發(fā)出降級寫回請求,目錄控制器接收到寫回 的數(shù)據(jù)時(shí),把寫回的數(shù)據(jù)轉(zhuǎn)發(fā)給請求節(jié)點(diǎn)的處理器,并把該數(shù)據(jù)寫回該宿主節(jié)點(diǎn)的二級緩 存,目錄狀態(tài)變?yōu)楣蚕?S)狀態(tài)。如果該宿主節(jié)點(diǎn)的活躍目錄緩存缺失,則在活躍目錄緩存 中添加目錄項(xiàng),然后向該宿主節(jié)點(diǎn)的二級緩存發(fā)出讀請求,得到緩存的數(shù)據(jù)回應(yīng)后,把請求 的數(shù)據(jù)轉(zhuǎn)發(fā)給請求節(jié)點(diǎn)的處理器,目錄狀態(tài)變?yōu)楣蚕?S)狀態(tài)。寫請求操作如果宿主節(jié)點(diǎn)的活躍目錄緩存命中且處于共享(S)狀態(tài),則向所有 共享節(jié)點(diǎn)的處理器發(fā)出無效信號,并向該宿主節(jié)點(diǎn)的二級緩存發(fā)出讀請求。寫請求實(shí)際上 也是一個(gè)讀操作,這是因?yàn)閷懼噶钍轻槍σ粋€(gè)字的,而讀寫請求都是針對一個(gè)Cache行的, 在進(jìn)行寫請求時(shí),需要把Cache行的數(shù)據(jù)全部讀出,送到請求節(jié)點(diǎn),與寫入的內(nèi)容合并為一 個(gè)新的Cache行。目錄控制器收集到所有的無效回應(yīng)消息后,相應(yīng)的共享節(jié)點(diǎn)位置從目錄 向量中刪除,把從二級緩存返回的數(shù)據(jù)回應(yīng)轉(zhuǎn)發(fā)給請求節(jié)點(diǎn)的處理器,把宿主節(jié)點(diǎn)的活躍 目錄緩存的目錄的狀態(tài)改變?yōu)樾薷?M)狀態(tài),在目錄向量中加入請求節(jié)點(diǎn)的位置。如果宿 主節(jié)點(diǎn)的活躍目錄緩存處于修改(M)狀態(tài),則向共享節(jié)點(diǎn)的處理器發(fā)出無效并寫回請求, 因?yàn)檫@時(shí)共享節(jié)點(diǎn)的保存的副本是唯一正確的副本,需要寫回。目錄控制器收到寫回的數(shù) 據(jù)時(shí),相應(yīng)的節(jié)點(diǎn)位置從目錄向量中刪除,把數(shù)據(jù)轉(zhuǎn)發(fā)給請求節(jié)點(diǎn),在目錄向量中加入請求 節(jié)點(diǎn)的位置。如果宿主節(jié)點(diǎn)的活躍目錄緩存不命中,則在活躍目錄緩存中添加目錄項(xiàng),向該 宿主節(jié)點(diǎn)的二級緩存發(fā)出讀請求,得到二級緩存的數(shù)據(jù)回應(yīng)后,把請求的數(shù)據(jù)轉(zhuǎn)發(fā)給請求 節(jié)點(diǎn),目錄狀態(tài)變?yōu)樾薷?M)狀態(tài),在目錄向量中加入請求節(jié)點(diǎn)的位置。替換請求操作將待替換的請求節(jié)點(diǎn)位置從目錄向量中刪除,并向請求節(jié)點(diǎn)返回 替換回應(yīng)信號。如果是唯一的共享節(jié)點(diǎn),則把該目錄向量從宿主節(jié)點(diǎn)的活躍目錄緩存中刪 除。寫回請求操作將節(jié)點(diǎn)位置從宿主節(jié)點(diǎn)的目錄向量中刪除,把數(shù)據(jù)寫回到該宿主 節(jié)點(diǎn)的二級緩存,并向請求節(jié)點(diǎn)返回寫回回應(yīng)信號,則把該目錄向量從宿主節(jié)點(diǎn)的活躍目 錄緩存中刪除。替換操作宿主節(jié)點(diǎn)的活躍目錄緩存由于容量沖突而發(fā)生替換時(shí),向所有共享節(jié) 點(diǎn)發(fā)出無效請求。如果該目錄存儲器的目錄狀態(tài)處于共享(S)狀態(tài),則目錄控制器收集到 所有的無效回應(yīng)后,把該目錄向量從活躍目錄緩存中刪除。如果該目錄存儲器的目錄狀態(tài) 處于修改(M)狀態(tài),則目錄控制器收到寫回的數(shù)據(jù)后,把該數(shù)據(jù)寫回到該宿主節(jié)點(diǎn)的二級
12緩存中,然后刪除該數(shù)據(jù)對應(yīng)的目錄向量。接收到宿主節(jié)點(diǎn)的二級緩存的無效請求時(shí),如果該節(jié)點(diǎn)活躍目錄緩存不命中,則 直接向二級緩存返回?zé)o效回應(yīng)信號。如果活躍目錄緩存命中,則進(jìn)行活躍目錄緩存的替換 操作,替換操作完成后,向二級緩存返回?zé)o效回應(yīng)信號或?qū)懟匦盘枺涯夸浵蛄繌幕钴S目錄 緩存中刪除。以上實(shí)施方式僅用于說明本發(fā)明,而并非對本發(fā)明的限制,有關(guān)技術(shù)領(lǐng)域的普通 技術(shù)人員,在不脫離本發(fā)明的精神和范圍的情況下,還可以做出各種變化和變型,因此所有 等同的技術(shù)方案也屬于本發(fā)明的范疇,本發(fā)明的專利保護(hù)范圍應(yīng)由權(quán)利要求限定。
權(quán)利要求
一種支持高速緩存一致的片上網(wǎng)絡(luò)系統(tǒng),包括網(wǎng)絡(luò)接口部件,所述網(wǎng)絡(luò)接口部件連接路由器,并連接多核處理器和二級緩存,其特征在于,在所述網(wǎng)絡(luò)接口部件中增設(shè)有與多核處理器相連的一致性狀態(tài)緩存,所述一致性狀態(tài)緩存用于保存并維護(hù)多核處理器的每個(gè)核的一級緩存中數(shù)據(jù)塊的一致性狀態(tài)。
2.如權(quán)利要求1所述的支持高速緩存一致的片上網(wǎng)絡(luò)系統(tǒng),其特征在于,所述一致性 狀態(tài)緩存包括一致性狀態(tài)存儲器,具有與所述一級緩存相同的存儲行,用于保存所述一級緩存中數(shù) 據(jù)塊的一致性狀態(tài);處理器接口,連接所述多核處理器,用于從不同類型處理器核的總線請求中分離出一 致性狀態(tài)緩存所需要的請求信號,并把一致性狀態(tài)緩存對多核處理器的回應(yīng)或請求信號轉(zhuǎn) 換成多核處理器可以識別的信號;一致性協(xié)議控制器,用于當(dāng)多核處理器的一級緩存訪問缺失請求或回應(yīng)消息經(jīng)過網(wǎng)絡(luò) 接口部件時(shí),通過所述處理器接口獲取該訪問缺失請求或回應(yīng)消息,從中分離出地址標(biāo)簽, 并維護(hù)相應(yīng)的一致性狀態(tài)。
3.如權(quán)利要求2所述的支持高速緩存一致的片上網(wǎng)絡(luò)系統(tǒng),其特征在于,所述網(wǎng)絡(luò)接 口部件中還增設(shè)有與二級緩存相連的活躍目錄緩存,用于緩存和維護(hù)二級緩存中經(jīng)常被所 述一級緩存訪問的數(shù)據(jù)塊的目錄信息。
4.如權(quán)利要求3所述的支持高速緩存一致的片上網(wǎng)絡(luò)系統(tǒng),其特征在于,所述活躍目 錄緩存包括目錄存儲器,用于緩存二級緩存中經(jīng)常被所述一級緩存訪問的數(shù)據(jù)塊的目錄信息包 括所述數(shù)據(jù)塊的地址標(biāo)簽、目錄狀態(tài)和目錄向量;二級緩存接口,連接二級緩存,用于將多核處理器的訪問缺失請求發(fā)送給所述二級緩 存,或?qū)⒍壘彺娴幕貞?yīng)信號返回給活躍目錄緩存;目錄控制器,用于通過二級緩存接口獲取多核處理器對二級緩存的訪問請求,并查找 目錄存儲器中的目錄信息,然后根據(jù)請求的類型決定是否向本地二級緩存發(fā)送該訪問請 求。
5.一種利用權(quán)利要求4所述的系統(tǒng)的數(shù)據(jù)請求方法,其特征在于,包括以下步驟Sl 請求節(jié)點(diǎn)的一致性協(xié)議控制器捕獲所述請求節(jié)點(diǎn)處理器的一級緩存訪問缺失請求,S2:所述請求節(jié)點(diǎn)的一致性協(xié)議控制器在一致性狀態(tài)存儲器中查找所述缺失請求的地 址標(biāo)簽,并根據(jù)相應(yīng)的一致性狀態(tài)向宿主節(jié)點(diǎn)的二級緩存發(fā)出數(shù)據(jù)請求;S3:所述宿主節(jié)點(diǎn)路由器的網(wǎng)絡(luò)接口部件中活躍目錄緩存的目錄控制器捕獲所述數(shù)據(jù) 請求,并在該目錄存儲器中查找所述數(shù)據(jù)請求對應(yīng)的目錄信息,然后根據(jù)請求類型決定是 否向該宿主節(jié)點(diǎn)的二級緩存發(fā)送所述數(shù)據(jù)請求;S4:所述宿主節(jié)點(diǎn)的二級緩存根據(jù)所述數(shù)據(jù)請求向請求節(jié)點(diǎn)處理器返回消息,在經(jīng)過 請求節(jié)點(diǎn)的路由器時(shí),該路由器的一致性協(xié)議控制器捕獲該消息,并根據(jù)消息類型改變或 保持一致性狀態(tài)緩存中所述地址標(biāo)簽的地址中存儲數(shù)據(jù)的一致性狀態(tài),并把消息中包含的 請求數(shù)據(jù)返回給請求節(jié)點(diǎn)處理器。
6.如權(quán)利要求5所述的數(shù)據(jù)請求方法,其特征在于,所述步驟S2具體包括當(dāng)所述缺失請求為讀請求操作在請求節(jié)點(diǎn)的一致性狀態(tài)緩存的一致性狀態(tài)存儲器中為該請求地址分配 一個(gè)緩存行,并把一致性狀態(tài)設(shè)為臨時(shí)狀態(tài)IS,同時(shí)向宿主節(jié)點(diǎn)的二級緩存轉(zhuǎn)發(fā)該請求,所 述臨時(shí)狀態(tài)IS表示讀請求還沒有完成,等待該二級緩存的數(shù)據(jù)回應(yīng);寫請求操作如果請求節(jié)點(diǎn)的一致性狀態(tài)緩存不命中,則為該地址分配一個(gè)緩存行, 并把一致性狀態(tài)設(shè)為臨時(shí)狀態(tài)IM,并向宿主節(jié)點(diǎn)的二級緩存轉(zhuǎn)發(fā)該寫請求,所述臨時(shí)狀態(tài) IM表示寫請求還沒有完成,等待該二級緩存的寫回應(yīng);如果請求節(jié)點(diǎn)的一致性狀態(tài)緩存命 中且處于共享狀態(tài),則把一致性狀態(tài)設(shè)為IM狀態(tài),并向宿主節(jié)點(diǎn)的二級緩存發(fā)送寫更新請 求;如果請求節(jié)點(diǎn)的一致性狀態(tài)緩存命中且處于修改狀態(tài),則直接向請求節(jié)點(diǎn)處理器返回 寫回應(yīng)信號,一致性狀態(tài)緩存中的狀態(tài)不改變;更新請求操作將請求節(jié)點(diǎn)的一致性狀態(tài)緩存中的一致性狀態(tài)設(shè)為IM狀態(tài),然后向宿 主節(jié)點(diǎn)發(fā)送更新請求;替換和寫回請求操作請求節(jié)點(diǎn)的一致性狀態(tài)緩存直接把該請求轉(zhuǎn)發(fā)給宿主節(jié)點(diǎn)的二 級緩存;替換操作當(dāng)請求節(jié)點(diǎn)的一致性狀態(tài)緩存由于容量沖突發(fā)生替換操作時(shí),則向請求節(jié) 點(diǎn)處理器發(fā)出無效信號,請求節(jié)點(diǎn)處理器的私有一級緩存則會根據(jù)其狀態(tài)向宿主節(jié)點(diǎn)發(fā)出 無效回應(yīng)或?qū)懟叵?,請求?jié)點(diǎn)的一致性狀態(tài)緩存接收到請求節(jié)點(diǎn)處理器的無效回應(yīng)或?qū)?回消息后,向宿主節(jié)點(diǎn)的二級緩存發(fā)出替換或?qū)懟卣埱?,等到收到宿主?jié)點(diǎn)的替換回應(yīng)或 寫回回應(yīng)消息后,把該緩存行從請求節(jié)點(diǎn)的一致性狀態(tài)緩存中刪除。
7.如權(quán)利要求5所述的數(shù)據(jù)請求方法,其特征在于,所述步驟S3具體包括當(dāng)所述缺 失請求為讀請求操作如果宿主節(jié)點(diǎn)的活躍目錄緩存命中,在活躍目錄信息的目錄向量中加入 請求節(jié)點(diǎn)的位置,如果目錄狀態(tài)處于共享狀態(tài),則向該宿主節(jié)點(diǎn)的二級緩存發(fā)出讀數(shù)據(jù)請 求,得到二級緩存的數(shù)據(jù)回應(yīng)后,把該數(shù)據(jù)轉(zhuǎn)發(fā)給請求節(jié)點(diǎn)的處理器;如果目錄狀態(tài)處于修 改狀態(tài),則向擁有該數(shù)據(jù)的共享節(jié)點(diǎn)發(fā)出降級寫回請求,目錄控制器接收到寫回的數(shù)據(jù)時(shí), 把寫回的數(shù)據(jù)轉(zhuǎn)發(fā)給請求節(jié)點(diǎn)的處理器,并把該數(shù)據(jù)寫回該宿主節(jié)點(diǎn)的二級緩存,目錄狀 態(tài)變?yōu)楣蚕頎顟B(tài);如果宿主節(jié)點(diǎn)的活躍目錄緩存缺失,則在活躍目錄緩存中添加目錄項(xiàng),然 后向該宿主節(jié)點(diǎn)的二級緩存發(fā)出讀請求,得到緩存的數(shù)據(jù)回應(yīng)后,把請求的數(shù)據(jù)轉(zhuǎn)發(fā)給請 求節(jié)點(diǎn)的處理器,目錄狀態(tài)變?yōu)楣蚕頎顟B(tài);寫請求操作如果宿主節(jié)點(diǎn)的活躍目錄緩存命中且處于共享狀態(tài),則向所有共享節(jié)點(diǎn) 的處理器發(fā)出無效信號,并向該宿主節(jié)點(diǎn)的二級緩存發(fā)出讀請求,目錄控制器收集到所有 的無效回應(yīng)消息后,將相應(yīng)的共享節(jié)點(diǎn)的位置從目錄向量中刪除,把從二級緩存返回的數(shù) 據(jù)回應(yīng)轉(zhuǎn)發(fā)給請求節(jié)點(diǎn)的處理器,把宿主節(jié)點(diǎn)的活躍目錄緩存的目錄狀態(tài)改變?yōu)樾薷臓?態(tài),在目錄向量中加入請求節(jié)點(diǎn)的位置;如果宿主節(jié)點(diǎn)的活躍目錄緩存處于修改狀態(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)的位置;如果宿主 節(jié)點(diǎn)的活躍目錄緩存不命中,則在活躍目錄緩存中添加目錄項(xiàng),向該宿主節(jié)點(diǎn)的二級緩存 發(fā)出讀請求,得到二級緩存的數(shù)據(jù)回應(yīng)后,把請求的數(shù)據(jù)轉(zhuǎn)發(fā)給請求節(jié)點(diǎn),目錄狀態(tài)變?yōu)樾?改狀態(tài),在目錄向量中加入請求節(jié)點(diǎn)的位置;替換請求操作將待替換的請求節(jié)點(diǎn)位置從宿主節(jié)點(diǎn)的目錄向量中刪除,并向該請求 節(jié)點(diǎn)返回替換回應(yīng)信號,如果是唯一的共享節(jié)點(diǎn),則把該目錄向量從宿主節(jié)點(diǎn)的活躍目錄 緩存中刪除;寫回請求操作將節(jié)點(diǎn)位置從宿主節(jié)點(diǎn)的目錄向量中刪除,把數(shù)據(jù)寫回到該宿主節(jié)點(diǎn) 的二級緩存,并向請求節(jié)點(diǎn)返回寫回回應(yīng)信號,把該目錄向量從宿主節(jié)點(diǎn)的活躍目錄緩存 中刪除;替換操作宿主節(jié)點(diǎn)的活躍目錄緩存由于容量沖突而發(fā)生替換時(shí),向所有共享節(jié)點(diǎn)發(fā) 出無效請求,如果該目錄存儲器的目錄狀態(tài)處于共享狀態(tài),則目錄控制器收集到所有的無 效回應(yīng)后,把該目錄向量從活躍目錄緩存中刪除;如果該目錄存儲器目錄狀態(tài)處于修改狀 態(tài),則目錄控制器收到寫回的數(shù)據(jù)后,把該數(shù)據(jù)寫回到該宿主節(jié)點(diǎn)的二級緩存中,然后刪除 該數(shù)據(jù)對應(yīng)的目錄向量;接收到宿主節(jié)點(diǎn)的二級緩存的無效請求時(shí),如果該節(jié)點(diǎn)的活躍目錄緩存不命中,則直 接向二級緩存返回?zé)o效回應(yīng)信號,如果活躍目錄緩存命中,則進(jìn)行活躍目錄緩存的替換操 作,替換操作完成后,向二級緩存返回?zé)o效回應(yīng)信號或?qū)懟匦盘枺涯夸浵蛄繌幕钴S目錄緩 存中刪除。
8.如權(quán)利要求5所述的數(shù)據(jù)請求方法,其特征在于,所述步驟S4具體包括當(dāng)所述缺 失請求對應(yīng)的回應(yīng)操作為讀回應(yīng)操作將請求節(jié)點(diǎn)的一致性狀態(tài)緩存的IS狀態(tài)改變?yōu)楣蚕頎顟B(tài),并向請求節(jié)點(diǎn) 處理器返回?cái)?shù)據(jù);寫回應(yīng)和更新回應(yīng)操作將請求節(jié)點(diǎn)的一致性狀態(tài)緩存的IM狀態(tài)改變?yōu)樾薷臓顟B(tài),并 向請求節(jié)點(diǎn)處理器返回寫回應(yīng)或更新回應(yīng);替換回應(yīng)和寫回回應(yīng)操作刪除請求節(jié)點(diǎn)的一致性狀態(tài)緩存中該地址所在的緩存行, 并把回應(yīng)信號轉(zhuǎn)發(fā)給請求節(jié)點(diǎn)處理器;無效請求操作請求節(jié)點(diǎn)的一致性狀態(tài)緩存接收到來自宿主節(jié)點(diǎn)二級緩存的無效請求 時(shí),直接轉(zhuǎn)發(fā)給請求節(jié)點(diǎn)處理器;無效回應(yīng)操作請求節(jié)點(diǎn)的一致性狀態(tài)緩存接收到來自請求節(jié)點(diǎn)處理器的無效回應(yīng)信 號時(shí),刪除對應(yīng)的緩存行,并把無效回應(yīng)信號轉(zhuǎn)發(fā)宿主節(jié)點(diǎn)。
全文摘要
本發(fā)明公開了一種支持高速緩存一致的片上網(wǎng)絡(luò)系統(tǒng),包括網(wǎng)絡(luò)接口部件和路由器,所述網(wǎng)絡(luò)接口部件連接所述路由器,并連接多核處理器和二級緩存,在所述網(wǎng)絡(luò)接口部件中增設(shè)有與多核處理器相連的一致性狀態(tài)緩存,所述一致性狀態(tài)緩存用于保存并維護(hù)多核處理器的一級緩存中數(shù)據(jù)塊的一致性狀態(tài);所述網(wǎng)絡(luò)接口部件中還增設(shè)有與二級緩存相連的活躍目錄緩存,用于緩存和維護(hù)二級緩存中經(jīng)常被所述一級緩存訪問的數(shù)據(jù)塊的目錄信息。把一致性維護(hù)工作從處理器中分離出來,把目錄維護(hù)工作從二級緩存中分離出來,并且取消了二級緩存中的目錄結(jié)構(gòu),簡化了多核處理器的設(shè)計(jì)和驗(yàn)證過程,降低了芯片的存儲開銷,提高了多核處理器的性能。本發(fā)明還公開了該系統(tǒng)的數(shù)據(jù)請求方法。
文檔編號H04L12/56GK101958834SQ20101029401
公開日2011年1月26日 申請日期2010年9月27日 優(yōu)先權(quán)日2010年9月27日
發(fā)明者汪東升, 王驚雷 申請人:清華大學(xué)