專利名稱:用于多核處理器的Cache的主動復(fù)制方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及Cache (高速緩沖存儲器)技術(shù)領(lǐng)域,尤其涉及一種用于多核處理器的 Cache的主動復(fù)制方法及系統(tǒng)。
背景技術(shù):
多核處理器最后一級Cache (L2 Cache)通常采用分布式設(shè)計,呈現(xiàn)一種非一致性 訪問(Non-Uniform CacheAccess, NUCA)的特點,處理器對L2 Cache的訪問延遲取決于處 理器核與各個L2 Cache之間的物理距離。L2 Cache有兩種組織方式私有L2 Cache設(shè)計 和共享L2Cache設(shè)計。私有L2 Cache設(shè)計是處理器核把本地的L2 Cache作為私有Cache 使用,以獲得更多的本地訪問,降低訪問延遲。共享L2 Cache設(shè)計則是通過地址交叉的方 式,把數(shù)據(jù)分布到各個L2 Cache中。私有L2 Cache設(shè)計中存在大量的重復(fù)數(shù)據(jù),降低了 L2 Cache的有效容量,會導(dǎo)致更多的片外存儲器訪問。共享L2 Cache設(shè)計中沒有重復(fù)的數(shù)據(jù), 可以充分利用片上Cache來保存盡可能多的數(shù)據(jù),減少片外存儲器訪問,但數(shù)據(jù)的隨機分 布導(dǎo)致了大量對遠程L2 Cache的訪問。一方面,隨著多核處理器規(guī)模的增長以及應(yīng)用程序 對大數(shù)據(jù)集的需求,需要L2 Cache為片上處理器核提供更多的數(shù)據(jù);另一方面,多核處理 器規(guī)模的增長也使處理器核與L2 Cache之間的訪問延遲越來越大。單純的私有L2 Cache 設(shè)計或單純的共享L2 Cache設(shè)計已無法滿足大規(guī)模多核處理器的應(yīng)用需求?;旌螸2 Cache設(shè)計結(jié)合了私有L2 Cache設(shè)計低延遲與共享L2Cache設(shè)計大容量 的特點。雖然在L2 Cache中可以混合安排私有L2Cache和共享L2 Cache,以達到混合L2 Cache設(shè)計的目的,但是這種方法的適應(yīng)性和擴展性都比較差。與這種方案相比,以共享L2 Cache設(shè)計為基礎(chǔ)的復(fù)制和遷移機制則具有很好的適應(yīng)性和擴展性,是混合L2 Cache設(shè)計 中經(jīng)常使用的方法。復(fù)制是把數(shù)據(jù)塊復(fù)制到請求者節(jié)點的本地L2 Cache中,宿主節(jié)點的L2 Cache中還保留該數(shù)據(jù)的副本,L2Cache中存在多個副本。遷移則是把數(shù)據(jù)遷移到請求者節(jié) 點附近的L2Cache中,宿主節(jié)點只保留遷移數(shù)據(jù)的目的節(jié)點信息,不保留該數(shù)據(jù)的副本,L2 Cache中只有唯一的副本。復(fù)制和遷移機制能夠根據(jù)應(yīng)用程序的需要把數(shù)據(jù)放置在距離使 用者更近的位置,降低L2 Cache的訪問延遲,既使L2 Cache的容量接近共享L2 Cache的 容量,又使訪問延遲接近私有L2 Cache的訪問延遲。目前多核處理器中采用的復(fù)制和遷移機制大都是被動的。例如當數(shù)據(jù)從私有 Cache替換時,把它復(fù)制到本地的L2 Cache中,或者把遠程數(shù)據(jù)逐步遷移到請求者節(jié)點附 近的L2 Cache中。這些復(fù)制和遷移機制大都是基于對Cache訪問的分類,對不同類型的 Cache訪問采用不同的策略,如對只讀數(shù)據(jù)采用復(fù)制策略,對讀寫數(shù)據(jù)采用遷移策略。這些 被動復(fù)制和遷移機制存在以下問題1、基于本地的決策,沒有考慮數(shù)據(jù)的共享模式,具有一定的盲目性,副本的冗余度 大,分布不合理;2、復(fù)制的副本只能被本地使用,利用率低;3、多方向遷移造成數(shù)據(jù)聚集和性能下降;
4、不精確的分類方法帶來的額外的一致性問題和額外的開銷;5、回避對讀寫數(shù)據(jù)的復(fù)制和遷移;6、對復(fù)制和遷移數(shù)據(jù)的查找復(fù)雜、耗時。
發(fā)明內(nèi)容
(一)要解決的技術(shù)問題本發(fā)明所要解決的技術(shù)問題是如何提高副本利用率,減少副本的冗余,合理分布 副本,以及避免多方向遷移引起的數(shù)據(jù)聚集,從而降低系統(tǒng)訪問延遲,擴大系統(tǒng)容量。(二)技術(shù)方案未解決上述問題,本發(fā)明提供了一種用于多核處理器的Cache的主動復(fù)制方法, 該方法包括步驟Si.宿主節(jié)點實時分析訪問該節(jié)點共享L2 Cache中使用數(shù)據(jù)塊的處理器核的位 置和訪問次數(shù),動態(tài)地確定復(fù)制副本的位置及其分布,根據(jù)設(shè)定的副本間距從訪問該數(shù)據(jù) 塊的處理器核中選取一個或多個候選副本節(jié)點;S2.若所述數(shù)據(jù)塊被訪問的次數(shù)達到設(shè)定的復(fù)制閾值,則宿主節(jié)點將所述數(shù)據(jù)塊 復(fù)制到步驟Sl所選取的候選副本節(jié)點中,并在遷移表中記錄副本的位置;S3.若宿主節(jié)點接收到對已復(fù)制數(shù)據(jù)塊的讀請求,則將所述讀請求轉(zhuǎn)發(fā)至離該請 求節(jié)點最近的副本節(jié)點,所述副本節(jié)點接收到所述讀請求后,向所述請求節(jié)點回應(yīng)所述數(shù) 據(jù)塊;S4.所述請求節(jié)點接收到所述副本節(jié)點回應(yīng)的數(shù)據(jù)塊后,將所述副本節(jié)點的位置 記錄在請求節(jié)點網(wǎng)絡(luò)接口的地址映射表中,當請求節(jié)點后續(xù)對所述數(shù)據(jù)塊進行讀請求時, 根據(jù)所述地址映射表的記錄,把讀請求轉(zhuǎn)發(fā)至所記錄的副本節(jié)點。其中,步驟Sl進一步包括宿主節(jié)點的模式分析Cache保存訪問該節(jié)點共享L2 Cache中數(shù)據(jù)塊的處理器核 的編號,并按訪問先后順序,確定所述設(shè)定個數(shù)的處理器核的優(yōu)先級;當有處理器核訪問所述數(shù)據(jù)塊時,判斷所述處理器核的編號是否已經(jīng)保存,若是, 則將所述處理器核編號的優(yōu)先級提升至最高,優(yōu)先級高于所述處理器核編號的原優(yōu)先級的 處理器核的編號的優(yōu)先級都下降一位;否則將所述處理器核編號的優(yōu)先級設(shè)為最高,其他 處理器核的ID的優(yōu)先級下降一位。其中,候選副本節(jié)點位置的選取方法是處于最高優(yōu)先級的處理器核編號為第一 候選副本節(jié)點位置;根據(jù)設(shè)定的副本距離,在訪問過該數(shù)據(jù)塊的其余處理器核中選擇大于 或等于該設(shè)定副本距離的次高優(yōu)先級的處理器核編號作為下一個候選副本節(jié)點位置;以此 類推,直到選出所有候選副本節(jié)點位置。其中,該方法還包括步驟若宿主節(jié)點接收到對已復(fù)制數(shù)據(jù)塊的寫請求,則根據(jù)遷移表中所記錄的副本位 置,向相應(yīng)的副本節(jié)點發(fā)送無效信號,并等待副本節(jié)點的無效回應(yīng)信號;所述副本節(jié)點把緩存所述數(shù)據(jù)塊的副本的所有處理器核中的所述數(shù)據(jù)塊無效后, 向所述宿主節(jié)點發(fā)送無效回應(yīng)信號;所述宿主節(jié)點收到所有副本節(jié)點的無效回應(yīng)信號后,向發(fā)送所述寫請求的請求節(jié)點發(fā)送寫回應(yīng)信號,完成寫操作。若宿主節(jié)點接收到對未復(fù)制數(shù)據(jù)塊的寫請求,則將緩存所述數(shù)據(jù)塊的所有處理器 核中的所述數(shù)據(jù)塊無效后,向發(fā)送所述寫請求的請求節(jié)點發(fā)送寫回應(yīng)信號,完成寫操作。其中,所述數(shù)據(jù)塊被訪問的次數(shù)計算方法如下若接收到對所述數(shù)據(jù)塊的讀請求, 則被訪問的次數(shù)加1,若接收到對所述數(shù)據(jù)塊的寫請求,則被訪問的次數(shù)清0。其中,步驟S2中還包括所述宿主節(jié)點按設(shè)定優(yōu)先級順序向候選副本節(jié)點發(fā)送復(fù)制請求,并等待候選副本 節(jié)點的回應(yīng)信號;候選副本節(jié)點收到所述遷移請求時,在該副本節(jié)點的L2 Cache中為所述數(shù)據(jù)塊分 配Cache行,并向所述宿主節(jié)點發(fā)送回應(yīng)信號;所述宿主節(jié)點接收到所述副本節(jié)點的回應(yīng)信號時,在該宿主節(jié)點的遷移表中記錄 相應(yīng)的副本節(jié)點的位置,直至該宿主節(jié)點收到所有復(fù)制請求的回應(yīng)信號,完成主動復(fù)制操 作。其中,若所述宿主節(jié)點也為候選副本節(jié)點,則在遷移表中記錄其該宿主節(jié)點的位 置,但不向其自身發(fā)送復(fù)制請求;若所述宿主節(jié)點不是候選副本節(jié)點,則主動復(fù)制操作完成 后,將所述數(shù)據(jù)塊從該宿主節(jié)點的L2 Cache中刪除。其中,所述宿主節(jié)點收到讀請求時,如果所述讀請求的地址是該宿主節(jié)點的本地 地址,則同時查找該宿主節(jié)點的L2 Cache和遷移表,如果所述遷移表命中,則將所述讀請求 轉(zhuǎn)發(fā)至離所述請求節(jié)點最近的副本節(jié)點;如果所述讀請求的地址不是該宿主節(jié)點的本地地 址,則查找該宿主節(jié)點的L2 Cache,如果命中,則返回請求數(shù)據(jù)塊,否則,把該讀請求轉(zhuǎn)發(fā)給 宿主節(jié)點。本發(fā)明還提供了一種用于多核處理器的Cache的主動復(fù)制系統(tǒng),該系統(tǒng)包括模 式分析Cache,用于實時分析訪問該節(jié)點共享L2 Cache中使用數(shù)據(jù)塊的處理器核的位置和 訪問次數(shù),動態(tài)地確定復(fù)制副本的位置及其分布,根據(jù)設(shè)定的副本間距從訪問該數(shù)據(jù)塊的 處理器核中選取一個或多個候選副本節(jié)點;以及當所述數(shù)據(jù)塊被訪問的次數(shù)達到設(shè)定的復(fù) 制閾值時,將所述數(shù)據(jù)塊復(fù)制到所選取的候選副本節(jié)點中,并在遷移表中記錄副本的位置; 轉(zhuǎn)發(fā)模塊,用于當宿主節(jié)點接收到對已復(fù)制數(shù)據(jù)塊的讀請求時,將所述讀請求轉(zhuǎn)發(fā)至離該 請求節(jié)點最近的副本節(jié)點,在所述副本節(jié)點接收到所述讀請求后,向所述請求節(jié)點回應(yīng)所 述數(shù)據(jù)塊;地址映射模塊,用于在所述請求節(jié)點接收到所述副本節(jié)點回應(yīng)的數(shù)據(jù)塊后,將所 述副本節(jié)點的位置記錄在請求節(jié)點網(wǎng)絡(luò)接口的地址映射表中,當請求節(jié)點后續(xù)對所述數(shù)據(jù) 塊進行讀請求時,根據(jù)所述地址映射表的記錄,把讀請求轉(zhuǎn)發(fā)至所記錄的副本節(jié)點。其中,所述地址映射模塊集成在網(wǎng)絡(luò)接口中,當接收到回應(yīng)的數(shù)據(jù)塊時,根據(jù)數(shù)據(jù) 的地址和回應(yīng)數(shù)據(jù)塊的源節(jié)點位置,判斷該回應(yīng)數(shù)據(jù)塊是來自于宿主節(jié)點還是副本節(jié)點, 如果回應(yīng)數(shù)據(jù)塊來自于副本節(jié)點,則把該副本節(jié)點的位置記錄在地址映射表中;如果回應(yīng) 數(shù)據(jù)塊來自于宿主節(jié)點,則不在地址映射表中保存該位置,如果地址映射表中已經(jīng)保存有 該記錄,則刪除該記錄;當后續(xù)對所述數(shù)據(jù)塊進行讀請求進入網(wǎng)絡(luò)接口時,首先查找地址映 射表,如果地址映射表命中,則把該讀請求發(fā)送至該地址映射表中所記錄的副本節(jié)點,如果 地址映射表不命中,則把該讀請求發(fā)送至宿主節(jié)點。(三)有益效果
本發(fā)明提出的Cache的主動復(fù)制方法及系統(tǒng),結(jié)合復(fù)制和遷移的特點,利用局部 性原理,對數(shù)據(jù)訪問模式的實時分析,把頻繁訪問的數(shù)據(jù)主動遷移到最近頻繁訪問該數(shù)據(jù) 的一個或多個節(jié)點的L2 Cache中,宿主節(jié)點跟蹤這些副本的位置,維護副本的一致性。為 了提高副本的利用效率,減少L2 Cache中副本的冗余,本發(fā)明方法對副本的分布進行有效 的控制,并通過網(wǎng)絡(luò)地址映射和快速查找機制,使副本可以被鄰近的節(jié)點使用。避免了盲目 復(fù)制所帶來的副本冗余以及副本分布不合理,以及多方向遷移所帶來的數(shù)據(jù)聚集等問題, 使系統(tǒng)的訪問延遲接近私有L2 Cache的低延遲,而容量接近共享L2 Cache的大容量。對 數(shù)據(jù)不進行明確的分類,通過寫長度(兩次寫操作之間讀操作的次數(shù))的判斷對讀寫數(shù)據(jù) 進行遷移,可以適用于所有的訪問類型,具有很強的適應(yīng)性。
圖1為依照本發(fā)明一種實施方式的用于多核處理器的Cache的主動復(fù)制方法流程 圖;圖2為依照本發(fā)明一種實施方式的用于多核處理器的Cache的主動復(fù)制系統(tǒng)中模 式分析Cache (PAC)結(jié)構(gòu)示意圖。
具體實施例方式對于本發(fā)明所提出的用于多核處理器的Cache的主動復(fù)制方法及系統(tǒng),結(jié)合附圖 和實施例詳細說明。本發(fā)明提出的用于多核處理器的Cache主動遷移(Cache Active Migration,CAM) 方法、系統(tǒng)及其硬件實現(xiàn)方法,結(jié)合復(fù)制和遷移的特點,利用局部性原理,對數(shù)據(jù)訪問模式 進行實時分析,把L2 Cache中頻繁訪問的數(shù)據(jù)塊主動遷移到最近頻繁訪問該數(shù)據(jù)的一個或 多個節(jié)點的L2 Cache中,宿主節(jié)點跟蹤這些副本的位置,對副本的數(shù)量和分布情況進行有 效控制,維護副本的一致性。為了提高副本的利用率,減少副本的冗余,CAM對副本的數(shù)量 和分布了進行有效的控制,并通過網(wǎng)絡(luò)地址映射和快速查找機制,使副本可以被鄰近的節(jié) 點訪問,實現(xiàn)請求節(jié)點對鄰近副本的快速訪問。Cache主動遷移方法的主要思想是對L2 Cache中數(shù)據(jù)塊的訪問模式進行實時分 析,動態(tài)確定副本的位置和分布以及啟動數(shù)據(jù)塊遷移的時機。當達到數(shù)據(jù)塊遷移的閾值時, 主動把數(shù)據(jù)塊遷移到前面確定的一個或多個副本位置,宿主節(jié)點跟蹤這些副本的位置。當 宿主節(jié)點接收到后續(xù)對這個數(shù)據(jù)塊的讀請求時,把讀請求轉(zhuǎn)發(fā)給離請求處理器核最近的副 本節(jié)點。副本節(jié)點接收到宿主節(jié)點轉(zhuǎn)發(fā)的讀請求時,向請求節(jié)點回應(yīng)數(shù)據(jù)塊。返回的數(shù)據(jù)塊 到達請求節(jié)點的網(wǎng)絡(luò)接口時,網(wǎng)絡(luò)接口捕獲提供該數(shù)據(jù)快的副本節(jié)點的位置并記錄在地址 映射表中。請求節(jié)點后續(xù)對該地址的讀請求經(jīng)過網(wǎng)絡(luò)接口時,根據(jù)地址映射表中記錄的副 本位置,把讀請求轉(zhuǎn)發(fā)給副本節(jié)點,而不是宿主節(jié)點,實現(xiàn)了處理器核對鄰近副本的快速訪 問。副本節(jié)點跟蹤緩存該副本的處理器核的位置,維護它們的一致性,副本的一致性由宿主 節(jié)點維護。處理器核的寫請求都直接發(fā)送給宿主節(jié)點,宿主節(jié)點根據(jù)記錄的副本位置,把副 本節(jié)點無效,副本節(jié)點也把緩存該副本的相應(yīng)的處理器核中的數(shù)據(jù)塊無效,以維護一致性。如圖1所示,依照本發(fā)明一種實施方式的用于多核處理器的Cache的主動復(fù)制方 法,包括步驟
Si.宿主節(jié)點的模式分析Cache實時分析訪問該節(jié)點的共享L2Cache中最近頻 繁使用數(shù)據(jù)塊的處理器核的位置以及訪問次數(shù)等信息,動態(tài)地確定復(fù)制副本的位置及其分 布,根據(jù)設(shè)定的副本間距從最近頻繁訪問該數(shù)據(jù)塊的處理器核中選取一個或多個候選副本 節(jié)點; S2.若該數(shù)據(jù)塊被訪問的次數(shù)達到設(shè)定的復(fù)制閾值,則宿主節(jié)點將所述數(shù)據(jù)塊復(fù) 制到候選副本節(jié)點中,并在遷移表中記錄副本的位置;其中,數(shù)據(jù)塊被訪問的次數(shù)計算方法如下若接收到對該數(shù)據(jù)塊的讀請求,則被訪 問的次數(shù)加1,若接收到對該數(shù)據(jù)塊的寫請求,則被訪問的次數(shù)清0。S3.若宿主節(jié)點接收到對已復(fù)制數(shù)據(jù)塊的讀請求,則將該讀請求轉(zhuǎn)發(fā)至離該請求 節(jié)點最近的副本節(jié)點,該副本節(jié)點接收到該讀請求后,向該請求節(jié)點回應(yīng)該數(shù)據(jù)塊;S4.請求節(jié)點接收到所述副本節(jié)點回應(yīng)的該數(shù)據(jù)塊后,并將該副本節(jié)點的位置記 錄在請求節(jié)點網(wǎng)絡(luò)接口的地址映射表(Address Mapping Table, AMT)中,當請求節(jié)點后續(xù) 對該數(shù)據(jù)塊進行讀請求時,根據(jù)地址映射表的記錄,把讀請求轉(zhuǎn)發(fā)至所記錄的該副本節(jié)點。當Ll Cache讀缺失訪問請求經(jīng)過處理器核的網(wǎng)絡(luò)接口時,首先查找AMT,如果請 求地址在AMT中,則把訪問請求發(fā)給AMT中所記錄的副本節(jié)點。從而避免了 3跳訪問,實現(xiàn) 了副本的快速查找。如果請求地址不在AMT中,則把請求直接發(fā)給宿主節(jié)點。如果網(wǎng)絡(luò)接 口捕獲到與AMT中不同的節(jié)點發(fā)來的數(shù)據(jù)回應(yīng)信號時,如果該節(jié)點是宿主節(jié)點,則把AMT項 刪除;如果是非宿主節(jié)點,則把映射地址更新為新的回應(yīng)節(jié)點地址。其中,步驟Sl進一步包括宿主節(jié)點的模式分析Cache保存訪問該節(jié)點共享L2 Cache中數(shù)據(jù)塊的N個處理 器核的編號,并按訪問先后順序,確定該N個處理器核的優(yōu)先級從低到高,即最近訪問的處 理器核的優(yōu)先級最高;采用類似最近最少使用(Least Recently Used, LRU)的替換算法,當有處理器核 訪問該數(shù)據(jù)塊時,判斷訪問該數(shù)據(jù)塊的處理器核的編號是否已經(jīng)保存,若是,則將該處理器 核的編號的優(yōu)先級提升至最高,優(yōu)先級高于該處理器核的編號的原優(yōu)先級的處理器核的編 號的優(yōu)先級都下降一位;否則將該處理器核的編號的優(yōu)先級設(shè)為最高,其他處理器核的編 號的優(yōu)先級下降一位。候選副本節(jié)點位置的選取方法是處于最高優(yōu)先級的處理器核編號為第一候選副 本節(jié)點位置;根據(jù)設(shè)定的副本距離,在訪問過該數(shù)據(jù)塊的其余處理器核中選擇大于或等于 該設(shè)定副本距離的次高優(yōu)先級的處理器核編號作為下一個候選副本節(jié)點位置;以此類推, 直到選出所有候選副本節(jié)點位置。處理器核的所有寫請求都直接發(fā)送給宿主節(jié)點,若宿主節(jié)點接收到對已復(fù)制數(shù)據(jù) 塊的寫請求,則根據(jù)遷移表中所記錄的副本位置,向相應(yīng)的副本節(jié)點發(fā)送無效信號,并等待 副本節(jié)點的無效回應(yīng)信號;所述副本節(jié)點把緩存所述數(shù)據(jù)塊的副本的所有處理器核中的所述數(shù)據(jù)塊無效后, 向所述宿主節(jié)點發(fā)送無效回應(yīng)信號;宿主節(jié)點收到所有副本節(jié)點的無效回應(yīng)信號后,向發(fā)送所述寫請求的請求節(jié)點發(fā) 送寫回應(yīng)信號,完成寫操作。若宿主節(jié)點接收到對未復(fù)制數(shù)據(jù)塊的寫請求,則將緩存所述數(shù)據(jù)塊的所有處理器核中的所述數(shù)據(jù)塊無效后,向發(fā)送所述寫請求的請求節(jié)點發(fā)送寫回應(yīng)信號,完成寫操作。其中,步驟S2中還包括宿主節(jié)點按設(shè)定的優(yōu)先級順序向候選副本節(jié)點發(fā)送復(fù)制請求,并等待候選副本節(jié) 點的回應(yīng)信號;候選副本節(jié)點收到遷移請求時,在該副本節(jié)點的本地L2 Cache中為該數(shù)據(jù)塊分配 Cache行,并向宿主節(jié)點發(fā)送回應(yīng)信號;宿主節(jié)點接收到該副本節(jié)點的回應(yīng)信號時,在該宿主節(jié)點的遷移表(Migration Table,MT)中記錄相應(yīng)的副本節(jié)點的位置,直至該宿主節(jié)點收到所有復(fù)制請求的回應(yīng)信號, 完成主動復(fù)制操作。若宿主節(jié)點也為候選副本節(jié)點,則在MT中記錄該宿主節(jié)點的位置,但不向其自身 發(fā)送復(fù)制請求;若宿主節(jié)點不是候選副本節(jié)點,則主動復(fù)制操作完成后,將該數(shù)據(jù)塊從該宿 主節(jié)點的L2 Cache中刪除。當宿主節(jié)點收到讀請求時,如果讀請求地址是該宿主節(jié)點的本地地址,則同時查 找該宿主節(jié)點的L2 Cache和MT,如果MT命中,則將所述讀請求轉(zhuǎn)發(fā)至離該請求節(jié)點最近的 副本節(jié)點;如果讀請求的地址不是該宿主節(jié)點的本地地址,則查找該宿主節(jié)點的L2 Cache, 如果命中,則返回請求數(shù)據(jù)塊,否則,把該讀請求轉(zhuǎn)發(fā)給宿主節(jié)點。另外,Ll Cache的寫缺失請求在經(jīng)過網(wǎng)絡(luò)接口時,不管AMT是否命中,都直接發(fā)給 宿主節(jié)點,以維護Cache的一致性。通過AMT,LlCache的缺失訪問請求可以在最近的副本 節(jié)點得到滿足。各個副本維護共享該副本的Ll Cache的一致性。副本之間的一致性由宿 主節(jié)點維護。讀請求不會影響Cache的一致性。若宿主節(jié)點接收到對數(shù)據(jù)塊的寫請求,則根據(jù)記錄的該數(shù)據(jù)塊的副本的位置,向 相應(yīng)的副本節(jié)點發(fā)送無效信號,并等待副本節(jié)點的無效回應(yīng)信號;副本節(jié)點把緩存該數(shù)據(jù) 塊的副本的所有處理器核中的該數(shù)據(jù)塊無效后,向宿主節(jié)點發(fā)送無效回應(yīng)信號;宿主節(jié)點 收到所有副本節(jié)點的無效回應(yīng)信號后,向發(fā)送該寫請求的請求節(jié)點發(fā)送寫回應(yīng)信號,并把 該地址從遷移表(MT)中刪除,完成寫操作。本發(fā)明還提供了一種用于多核處理器的Cache的主動復(fù)制系統(tǒng),該系統(tǒng)包括模 式分析Cache,用于實時分析訪問該節(jié)點共享L2 Cache中使用數(shù)據(jù)塊的處理器核的位置 和訪問次數(shù),動態(tài)地確定復(fù)制副本的位置及其分布,根據(jù)設(shè)定的副本間距從訪問該數(shù)據(jù)塊 的處理器核中選取一個或多個候選副本節(jié)點;以及當所述數(shù)據(jù)塊被訪問的次數(shù)達到設(shè)定的 復(fù)制閾值時,將所述數(shù)據(jù)塊復(fù)制到所選取的候選副本節(jié)點中,并在遷移表中記錄副本的位 置;轉(zhuǎn)發(fā)模塊,用于當宿主節(jié)點接收到對已復(fù)制數(shù)據(jù)塊的讀請求時,將所述讀請求轉(zhuǎn) 發(fā)至離該請求節(jié)點最近的副本節(jié)點,在所述副本節(jié)點接收到所述讀請求后,向所述請求節(jié) 點回應(yīng)所述數(shù)據(jù)塊;地址映射模塊,用于在所述請求節(jié)點接收到所述副本節(jié)點回應(yīng)的數(shù)據(jù)塊后,將所 述副本節(jié)點的位置記錄在請求節(jié)點網(wǎng)絡(luò)接口的地址映射表中,當請求節(jié)點后續(xù)對所述數(shù)據(jù) 塊進行讀請求時,根據(jù)所述地址映射表的記錄,把讀請求轉(zhuǎn)發(fā)至所記錄的副本節(jié)點。其中,地址映射模塊集成在網(wǎng)絡(luò)接口中,當接收到回應(yīng)的數(shù)據(jù)塊時,根據(jù)數(shù)據(jù)的地 址和回應(yīng)數(shù)據(jù)塊的源節(jié)點位置,判斷該回應(yīng)數(shù)據(jù)塊是來自于宿主節(jié)點還是副本節(jié)點,如果回應(yīng)數(shù)據(jù)塊來自于副本節(jié)點,則把該副本節(jié)點的位置記錄在地址映射表中;如果回應(yīng)數(shù)據(jù) 塊來自于宿主節(jié)點,則不在地址映射表中保存該位置,如果地址映射表中已經(jīng)保存有該記 錄,則刪除該記錄;當后續(xù)對所述數(shù)據(jù)塊進行讀請求進入網(wǎng)絡(luò)接口時,首先查找地址映射 表,如果地址映射表命中,則把該讀請求發(fā)送至該地址映射表中所記錄的副本節(jié)點,如果地 址映射表不命中,則把該讀請求發(fā)送至宿主節(jié)點。
模式分析Cache進一步包括副本節(jié)點選取模塊,用于實時分析訪問該節(jié)點共享L2 Cache中使用數(shù)據(jù)塊的處理 器核的位置和訪問次數(shù),動態(tài)地確定復(fù)制副本的位置及其分布,根據(jù)設(shè)定的副本間距從訪 問該數(shù)據(jù)塊的處理器核中選取一個或多個候選副本節(jié)點;主動復(fù)制模塊,用于當所述數(shù)據(jù)塊被訪問的次數(shù)達到設(shè)定的復(fù)制閾值時,將所述 數(shù)據(jù)塊復(fù)制到所述副本節(jié)點選取模塊所選取的候選副本節(jié)點中,并在遷移表中記錄副本的 位置;如圖2所示,每一個模式分析Cache (PAC)行包含一個地址標簽、一個有效位、一個 訪問模式單元(Access Pattern Unit,APU)和一個計數(shù)器。APU用于保存訪問所述數(shù)據(jù)塊 的設(shè)定個數(shù)的處理器核的ID,并按訪問先后順序,確定所述設(shè)定個數(shù)的處理器核的優(yōu)先級 從低到高。PAC中還包含有一個距離閾值和一個啟動閾值,及上述的設(shè)定的副本間距以及設(shè) 定的遷移閾值。遷移表,采用與L2 Cache相似的組織方式,每一行包含一個地址標簽(Tag)、一個 有效位和一個目錄向量。遷移表中的目錄向量用于指示副本節(jié)點的位置。地址映射表在網(wǎng) 絡(luò)接口模塊中實現(xiàn),記錄離該節(jié)點最近的副本節(jié)點的位置。每一行包含地址標簽、有效位和 節(jié)點地址三個域。采用與Ll Cache相似的組織方式。本發(fā)明的CAM避免了盲目復(fù)制所帶來的副本冗余和分布不合理,以及多方向遷移 所帶來的數(shù)據(jù)聚集等問題,使系統(tǒng)的訪問延遲接近私有L2 Cache的低延遲,而容量接近共 享L2 Cache的大容量。CAM對數(shù)據(jù)不進行明確的分類,通過寫長度(兩次寫操作之間讀操 作的次數(shù))的判斷對讀寫數(shù)據(jù)進行遷移,可以適用于所有的類型的訪問,具有很強的適應(yīng) 性。以上實施方式僅用于說明本發(fā)明,而并非對本發(fā)明的限制,有關(guān)技術(shù)領(lǐng)域的普通 技術(shù)人員,在不脫離本發(fā)明的精神和范圍的情況下,還可以做出各種變化和變型,因此所有 等同的技術(shù)方案也屬于本發(fā)明的范疇,本發(fā)明的專利保護范圍應(yīng)由權(quán)利要求限定。
權(quán)利要求
1.一種用于多核處理器的Cache的主動復(fù)制方法,其特征在于,該方法包括步驟s1.宿主節(jié)點實時分析訪問該節(jié)點共享L2Cache中數(shù)據(jù)塊的處理器核的位置和訪問 次數(shù),動態(tài)地確定復(fù)制副本的位置及其分布,根據(jù)設(shè)定的副本間距從訪問該數(shù)據(jù)塊的處理 器核中選取一個或多個候選副本節(jié)點;s2.若所述數(shù)據(jù)塊被訪問的次數(shù)達到設(shè)定的復(fù)制閾值,則宿主節(jié)點將所述數(shù)據(jù)塊復(fù)制 到步驟Sl所選取的候選副本節(jié)點中,并在遷移表中記錄副本的位置;s3.若宿主節(jié)點接收到對已復(fù)制數(shù)據(jù)塊的讀請求,則將所述讀請求轉(zhuǎn)發(fā)至離該請求 節(jié)點最近的副本節(jié)點,所述副本節(jié)點接收到所述讀請求后,向所述請求節(jié)點回應(yīng)所述數(shù)據(jù) 塊;s4.所述請求節(jié)點接收到所述副本節(jié)點回應(yīng)的數(shù)據(jù)塊后,將所述副本節(jié)點的位置記錄 在請求節(jié)點網(wǎng)絡(luò)接口的地址映射表中,當請求節(jié)點后續(xù)對所述數(shù)據(jù)塊進行讀請求時,根據(jù) 所述地址映射表的記錄,把讀請求轉(zhuǎn)發(fā)至所記錄的副本節(jié)點。
2.如權(quán)利要求1所述的用于多核處理器的Cache的主動復(fù)制方法,其特征在于,步驟 Sl進一步包括宿主節(jié)點的模式分析Cache保存訪問該節(jié)點共享L2 Cache中數(shù)據(jù)塊的處理器核的編 號,并按訪問先后順序,確定所述設(shè)定個數(shù)的處理器核的優(yōu)先級;當有處理器核訪問所述數(shù)據(jù)塊時,判斷所述處理器核的編號是否已經(jīng)保存,若是,則將 所述處理器核編號的優(yōu)先級提升至最高,優(yōu)先級高于所述處理器核編號的原優(yōu)先級的處理 器核的編號的優(yōu)先級都下降一位;否則將所述處理器核編號的優(yōu)先級設(shè)為最高,其他處理 器核的ID的優(yōu)先級下降一位。
3.如權(quán)利要求2所述的用于多核處理器的Cache的主動復(fù)制方法,在于,候選副本節(jié)點 位置的選取方法是處于最高優(yōu)先級的處理器核編號為第一候選副本節(jié)點位置;根據(jù)設(shè)定 的副本距離,在訪問過該數(shù)據(jù)塊的其余處理器核中選擇大于或等于該設(shè)定副本距離的次高 優(yōu)先級的處理器核編號作為下一個候選副本節(jié)點位置;以此類推,直到選出所有候選副本 節(jié)點位置。
4.如權(quán)利要求1所述的用于多核處理器的Cache的主動復(fù)制方法,其特征在于,該方法 還包括步驟若宿主節(jié)點接收到對已復(fù)制數(shù)據(jù)塊的寫請求,則根據(jù)遷移表中所記錄的副本位置,向 相應(yīng)的副本節(jié)點發(fā)送無效信號,并等待副本節(jié)點的無效回應(yīng)信號;所述副本節(jié)點把緩存所述數(shù)據(jù)塊的副本的所有處理器核中的所述數(shù)據(jù)塊無效后,向所 述宿主節(jié)點發(fā)送無效回應(yīng)信號;所述宿主節(jié)點收到所有副本節(jié)點的無效回應(yīng)信號后,向發(fā)送所述寫請求的請求節(jié)點發(fā) 送寫回應(yīng)信號,完成寫操作。若宿主節(jié)點接收到對未復(fù)制數(shù)據(jù)塊的寫請求,則將緩存所述數(shù)據(jù)塊的所有處理器核中 的所述數(shù)據(jù)塊無效后,向發(fā)送所述寫請求的請求節(jié)點發(fā)送寫回應(yīng)信號,完成寫操作。
5.如權(quán)利要求4所述的用于多核處理器的Cache的主動復(fù)制方法,其特征在于,所述數(shù) 據(jù)塊被訪問的次數(shù)計算方法如下若接收到對所述數(shù)據(jù)塊的讀請求,則被訪問的次數(shù)加1, 若接收到對所述數(shù)據(jù)塊的寫請求,則被訪問的次數(shù)清0。
6.如權(quán)利要求3所述的用于多核處理器的Cache的主動復(fù)制方法,其特征在于,步驟S2中還包括所述宿主節(jié)點按設(shè)定優(yōu)先級順序向候選副本節(jié)點發(fā)送復(fù)制請求,并等待候選副本節(jié)點 的回應(yīng)信號;候選副本節(jié)點收到所述遷移請求時,在該副本節(jié)點的L2 Cache中為所述數(shù)據(jù)塊分配 Cache行,并向所述宿主節(jié)點發(fā)送回應(yīng)信號;所述宿主節(jié)點接收到所述副本節(jié)點的回應(yīng)信號時,在該宿主節(jié)點的遷移表中記錄相應(yīng) 的副本節(jié)點的位置,直至該宿主節(jié)點收到所有復(fù)制請求的回應(yīng)信號,完成主動復(fù)制操作。
7.如權(quán)利要求5所述的用于多核處理器的Cache的主動復(fù)制方法,其特征在于,若所述 宿主節(jié)點也為候選副本節(jié)點,則在遷移表中記錄其該宿主節(jié)點的位置,但不向其自身發(fā)送 復(fù)制請求;若所述宿主節(jié)點不是候選副本節(jié)點,則主動復(fù)制操作完成后,將所述數(shù)據(jù)塊從該 宿主節(jié)點的L2 Cache中刪除。
8.如權(quán)利要求7所述的用于多核處理器的Cache的主動復(fù)制方法,其特征在于,所述宿 主節(jié)點收到讀請求時,如果所述讀請求的地址是該宿主節(jié)點的本地地址,則同時查找該宿 主節(jié)點的L2 Cache和遷移表,如果所述遷移表命中,則將所述讀請求轉(zhuǎn)發(fā)至離所述請求節(jié) 點最近的副本節(jié)點;如果所述讀請求的地址不是該宿主節(jié)點的本地地址,則查找該宿主節(jié) 點的L2 Cache,如果命中,則返回請求數(shù)據(jù)塊,否則,把該讀請求轉(zhuǎn)發(fā)給宿主節(jié)點。
9.一種用于多核處理器的Cache的主動復(fù)制系統(tǒng),其特征在于,該系統(tǒng)包括模式分析Cache,用于實時分析訪問該節(jié)點共享L2 Cache中使用數(shù)據(jù)塊的處理器核的 位置和訪問次數(shù),動態(tài)地確定復(fù)制副本的位置及其分布,根據(jù)設(shè)定的副本間距從訪問該數(shù) 據(jù)塊的處理器核中選取一個或多個候選副本節(jié)點;以及當所述數(shù)據(jù)塊被訪問的次數(shù)達到設(shè) 定的復(fù)制閾值時,將所述數(shù)據(jù)塊復(fù)制到所選取的候選副本節(jié)點中,并在遷移表中記錄副本 的位置;轉(zhuǎn)發(fā)模塊,用于當宿主節(jié)點接收到對已復(fù)制數(shù)據(jù)塊的讀請求時,將所述讀請求轉(zhuǎn)發(fā)至 離該請求節(jié)點最近的副本節(jié)點,在所述副本節(jié)點接收到所述讀請求后,向所述請求節(jié)點回 應(yīng)所述數(shù)據(jù)塊;地址映射模塊,用于在所述請求節(jié)點接收到所述副本節(jié)點回應(yīng)的數(shù)據(jù)塊后,將所述副 本節(jié)點的位置記錄在請求節(jié)點網(wǎng)絡(luò)接口的地址映射表中,當請求節(jié)點后續(xù)對所述數(shù)據(jù)塊進 行讀請求時,根據(jù)所述地址映射表的記錄,把讀請求轉(zhuǎn)發(fā)至所記錄的副本節(jié)點。
10.如權(quán)利要求9所述的用于多核處理器的Cache的主動復(fù)制系統(tǒng),其特征在于,所述 地址映射模塊集成在網(wǎng)絡(luò)接口中,當接收到回應(yīng)的數(shù)據(jù)塊時,根據(jù)數(shù)據(jù)的地址和回應(yīng)數(shù)據(jù) 塊的源節(jié)點位置,判斷該回應(yīng)數(shù)據(jù)塊是來自于宿主節(jié)點還是副本節(jié)點,如果回應(yīng)數(shù)據(jù)塊來 自于副本節(jié)點,則把該副本節(jié)點的位置記錄在地址映射表中;如果回應(yīng)數(shù)據(jù)塊來自于宿主 節(jié)點,則不在地址映射表中保存該位置,如果地址映射表中已經(jīng)保存有該記錄,則刪除該記 錄;當后續(xù)對所述數(shù)據(jù)塊進行讀請求進入網(wǎng)絡(luò)接口時,首先查找地址映射表,如果地址映射 表命中,則把該讀請求發(fā)送至該地址映射表中所記錄的副本節(jié)點,如果地址映射表不命中, 則把該讀請求發(fā)送至宿主節(jié)點。
全文摘要
本發(fā)明公開了一種用于多核處理器的Cache的主動復(fù)制方法及系統(tǒng),包括S1.宿主節(jié)點分析訪問共享L2 Cache中數(shù)據(jù)塊的處理器核的位置和訪問次數(shù),選取候選副本節(jié)點;S2.若數(shù)據(jù)塊被訪問的次數(shù)達到復(fù)制閾值,將數(shù)據(jù)塊復(fù)制到副本節(jié)點中,并記錄副本的位置;S3.若宿主節(jié)點接收到對已復(fù)制數(shù)據(jù)塊的讀請求,將其轉(zhuǎn)發(fā)至最近的副本節(jié)點,由副本節(jié)點回應(yīng)數(shù)據(jù)塊;S4.請求節(jié)點接收到回應(yīng)后,將副本節(jié)點的位置記錄在地址映射表中,把后續(xù)對該數(shù)據(jù)塊的讀請求轉(zhuǎn)發(fā)至該副本節(jié)點。本發(fā)明方法及系統(tǒng)避免了盲目復(fù)制帶來的副本冗余和分布不合理,訪問延遲接近私有L2 Cache的低延遲,容量接近共享L2Cache的大容量。
文檔編號G06F12/08GK102117262SQ201010615029
公開日2011年7月6日 申請日期2010年12月21日 優(yōu)先權(quán)日2010年12月21日
發(fā)明者汪東升, 王驚雷 申請人:清華大學(xué)