專利名稱:用于多核處理器的一致性維護(hù)裝置的制作方法
技術(shù)領(lǐng)域:
用于多核處理器的一致性維護(hù)裝置
技術(shù)領(lǐng)域:
本實(shí)用新型涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及多核處理器Cache —致性維護(hù)的相關(guān)裝置和一致性交互方法。
背景技術(shù):
良好的可擴(kuò)展性和對(duì)芯片面積的高效利用促使CMP處理器(ChipMulti-Processor)被廣泛使用。然而,芯片上連線的電氣特性不可能與半導(dǎo)體工藝等比例縮放,線延遲問題已經(jīng)成為未來CMP設(shè)計(jì)的重要限制因素。研究者提出延遲非一致的Cache訪問(Non-Uniform Cache Access, NUCA)結(jié)構(gòu)來減輕線延遲對(duì)訪問Cache延遲的負(fù)面影響,如D-NUCA, NuRAPID, Victim Replication等。在NUCA結(jié)構(gòu)下,訪存延遲依賴于請(qǐng)求內(nèi)核與目標(biāo)數(shù)據(jù)之間的具體物理距離。如果目標(biāo)數(shù)據(jù)存在于請(qǐng)求內(nèi)核附近內(nèi)核中,則平均數(shù)據(jù)訪問延遲就能夠被減少,這一特性同樣適用于Cache —致性問題。 Cache 一致性協(xié)議是CMP處理器正確運(yùn)行的保證,考慮到擴(kuò)展性問題,相對(duì)于總線監(jiān)聽協(xié)議來說,基于目錄的Cache —致性協(xié)議是大規(guī)模CMP更合適的選擇。目錄能夠跟蹤全局的一致性狀態(tài)和L2Cache中數(shù)據(jù)所有共享者的標(biāo)識(shí)。缺失內(nèi)核將通過網(wǎng)絡(luò)把消息發(fā)送到相應(yīng)目錄內(nèi)核中進(jìn)行處理。然而,不斷提升的線延遲和多個(gè)內(nèi)核問復(fù)雜的一致性交互直接導(dǎo)致了訪存延遲的提升。如何為深亞微米工藝下的多核處理器設(shè)計(jì)高效、可擴(kuò)展的Cache一致性協(xié)議已經(jīng)成為體系結(jié)構(gòu)領(lǐng)域研究的重要內(nèi)容。通過研究已有的基于目錄的Cache —致性協(xié)議,我們發(fā)現(xiàn)發(fā)生讀缺失內(nèi)核需要訪問目錄內(nèi)核來間接得到一致性信息,這將增加Cache讀缺失延遲。更重要的是,在較為常用的瓦片式CMP結(jié)構(gòu)下,這種間接性將導(dǎo)致更多的Cache缺失。原因是目錄信息通常是通過物理地址映射關(guān)系分布在這些瓦片式的內(nèi)核中,而不考慮內(nèi)核可能訪問任何一個(gè)數(shù)據(jù)塊,因此需要訪問遠(yuǎn)程Cache的可能性大大增加。間接性的讀操作將在以下兩方面對(duì)性能產(chǎn)生負(fù)面影響首先,相對(duì)于寫操作來說,讀操作的效率能夠在更大程度上影響系統(tǒng)的整體性能。其次,在多個(gè)請(qǐng)求同時(shí)訪問目錄的情況下,目錄訪問會(huì)發(fā)生擁塞,多個(gè)讀操作不得不被排隊(duì)依次響應(yīng),從而增加了讀缺失的平均訪存延遲。與讀缺失類似,寫操作也存在同樣的間接性。為了減少一致性交互延遲,文獻(xiàn) I “ Stefanos Kaxiras and GeorgiosKeramidas. 2010. SARC Coherence Scaling Directory Cache Coherence in Performanceand Power. IEEE Micro 30, 5 (September 2010), 54-65. ” 提出 Writer—致性協(xié)議,該協(xié)議的創(chuàng)新在于使用基于預(yù)測(cè)的透明讀操作,能夠使一部分讀操作在獲得數(shù)據(jù)后不在目錄中保留“蹤跡”,而是在同步操作時(shí)自作廢,后續(xù)寫操作不用作廢這些透明讀數(shù)據(jù)。這降低了一致性狀態(tài)轉(zhuǎn)換頻率(E或M— S),簡化了寫操作一致性交互過程,但同時(shí)也削弱了已經(jīng)建立的數(shù)據(jù)局部性。寫操作同樣基于歷史預(yù)測(cè),但如果預(yù)測(cè)錯(cuò)誤需要增加額外的一致性交互延遲。另外,這種協(xié)議需要弱順序存儲(chǔ)模型和復(fù)雜的軟件同步策略,限制了其應(yīng)用范圍。文獻(xiàn)2 “Alberto Ros, Manuel E. Acacio, and Jose M. Garcia. 2010. A DirectCoherence Protocol for Many-Core Chip Multiprocessors. IEEE Transaction ofParallel and Distributed System. 21,12 (December 2010),1779-1792. ” 提出 DiCo-CMP一致性協(xié)議,通過將目錄信息集成在數(shù)據(jù)擁有者內(nèi)核中,DiCo-CMP能直接將請(qǐng)求發(fā)送到數(shù)據(jù)的擁有者,而不是先發(fā)送到目錄內(nèi)核,再轉(zhuǎn)發(fā)到數(shù)據(jù)擁有者,避免了間接數(shù)據(jù)訪問。相對(duì)于普通目錄協(xié)議,DiCo-CMP能夠使訪存延遲平均減少6%左右。DiCo-CMP只考慮到直接提供有效數(shù)據(jù),由于集成目錄的數(shù)據(jù)擁有者內(nèi)核位置固定,而無法兼顧到該有效數(shù)據(jù)是否距離請(qǐng)求內(nèi)核最近,事實(shí)上可能存在距離請(qǐng)求內(nèi)核更近的有效數(shù)據(jù),因此訪存延遲仍有降低空間。文獻(xiàn) 3 “Hongbo Zeng ; Jun Wang ;Ge Zhang ;ffeiwu Hu ;An interconnect-awarepower efficient cache coherence protocol for CMPs, Parallel and DistributedProcessing,2008. IPDPS 2008. IEEE International Symposium on, vol., no. , pp. 1-11,14-18April 2008”提出了基于片上網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的Cache —致性協(xié)議,這種協(xié)議不從目錄內(nèi)核返回?cái)?shù)據(jù),而是通過目錄內(nèi)核將請(qǐng)求轉(zhuǎn)發(fā)至距離請(qǐng)求內(nèi)核最近的目標(biāo)數(shù)據(jù)副本內(nèi)核, 使之響應(yīng)請(qǐng)求并發(fā)送數(shù)據(jù)。這種機(jī)制最小化了數(shù)據(jù)在連線上的傳輸距離,能使網(wǎng)絡(luò)鏈路功耗減少9. 3% ;并且通過減少鏈路擁塞加快通信速度,使整體性能提升I. 4%。該協(xié)議雖然能提供距離最近的數(shù)據(jù)副本,有效降低功耗,但仍需要先訪問目錄,間接事件仍然存在,一致性交互延遲難以降低。
實(shí)用新型內(nèi)容本實(shí)用新型的目的在于提供一種用于多核處理器的一致性維護(hù)裝置,能偶有效隱藏多核處理器一致性交互過程中的目錄訪問延遲,從而提升訪存效率。為了實(shí)現(xiàn)上述目的,本實(shí)用新型一種用于多核處理器的一致性維護(hù)裝置采用如下技術(shù)方案一種用于多核處理器的一致性維護(hù)裝置,包括若干處理器內(nèi)核和片上網(wǎng)絡(luò);所述若干處理器內(nèi)核均連接片上網(wǎng)絡(luò);所述處理器內(nèi)核包括路由器、全局目錄單元、節(jié)點(diǎn)目錄片段單元、節(jié)點(diǎn)目錄控制器、全局目錄控制器、節(jié)點(diǎn)預(yù)測(cè)緩存單元、節(jié)點(diǎn)共享歷史信息緩存單元、節(jié)點(diǎn)掛起指針單元;所述路由器連接全局目錄控制器單元和節(jié)點(diǎn)目錄控制器單元;所述全局目錄控制器單元連接所述全局目錄單元和節(jié)點(diǎn)目錄控制器單元;所述節(jié)點(diǎn)目錄控制器單元連接節(jié)點(diǎn)掛起指針單元、節(jié)點(diǎn)目錄片段單元、節(jié)點(diǎn)預(yù)測(cè)緩存單元和節(jié)點(diǎn)共享歷史"[目息緩存單兀。 所述一致性維護(hù)裝置還包括私有一級(jí)緩存單元(私有LI Cache)和共享二級(jí)緩存片段單元(共享L2Cache片段);所述私有一級(jí)緩存單元連接節(jié)點(diǎn)目錄控制器單元和共享二級(jí)緩存片段單元;所述共享二級(jí)緩存片段單元連接路由器和全局目錄控制器單元。所述處理器內(nèi)核通過路由器連接所述片上網(wǎng)絡(luò)。所述若干處理器內(nèi)核構(gòu)成包含多個(gè)節(jié)點(diǎn)的二位網(wǎng)絡(luò)矩陣;每個(gè)節(jié)點(diǎn)包含2n個(gè)處理器內(nèi)核,n為大于等于I的正整數(shù),處理器內(nèi)核的個(gè)數(shù)為2n的整數(shù)倍。所述全局目錄中設(shè)有最后寫節(jié)點(diǎn)指針單元。本實(shí)用新型一種用于多核處理器的一致性維護(hù)裝置進(jìn)行一致性交互的方法,包括節(jié)點(diǎn)目錄訪問方法,所述節(jié)點(diǎn)目錄訪問方法包括[0016]將節(jié)點(diǎn)目錄分成2n個(gè)片段,每個(gè)內(nèi)核存儲(chǔ)一個(gè)節(jié)點(diǎn)目錄片段,按照數(shù)據(jù)地址末段與節(jié)點(diǎn)中內(nèi)核編碼相對(duì)應(yīng)的方式將節(jié)點(diǎn)內(nèi)的數(shù)據(jù)共享信息分布到所有節(jié)點(diǎn)中內(nèi)核的節(jié)點(diǎn)目錄片段上;訪問節(jié)點(diǎn)目錄時(shí)第一步首先根據(jù)數(shù)據(jù)地址的末n位訪問對(duì)應(yīng)編碼內(nèi)核的節(jié)點(diǎn)目錄片段,如果訪問命中,則結(jié)束訪問;如果在該節(jié)點(diǎn)目錄片段沒有命中,則第二步同時(shí)訪問本節(jié)點(diǎn)內(nèi)剩余的節(jié)點(diǎn)目錄片,如果仍然不命中,說明該數(shù)據(jù)在該節(jié)點(diǎn)中不存在,則節(jié)點(diǎn)目錄訪問結(jié)束。本實(shí)用新型進(jìn)一步的改進(jìn)在于某一處理器內(nèi)核發(fā)生讀缺失時(shí),該處理器內(nèi)核首先根據(jù)缺失數(shù)據(jù)地址采用節(jié)點(diǎn)目錄訪問方法訪問本節(jié)點(diǎn)的節(jié)點(diǎn)目錄,如果節(jié)點(diǎn)目錄命中,則直接從本節(jié)點(diǎn)的其它處理器內(nèi)核中獲得缺失數(shù)據(jù)副本,并更新節(jié)點(diǎn)目錄;如果節(jié)點(diǎn)目錄不命中,則根據(jù)缺失數(shù)據(jù)地址查找本節(jié)點(diǎn)內(nèi)對(duì)應(yīng)的節(jié)點(diǎn)預(yù)測(cè)Cache預(yù)測(cè)信息,如果節(jié)點(diǎn)預(yù)測(cè)Cache也不命中,則按照3-hops讀操作流程訪問缺失數(shù)據(jù)地址對(duì) 應(yīng)的全局目錄,由該全局目錄通知緩存有效數(shù)據(jù)副本且距離最近的節(jié)點(diǎn)向讀缺失處理器內(nèi)核發(fā)送數(shù)據(jù),讀缺失處理器內(nèi)核收到數(shù)據(jù)后根據(jù)數(shù)據(jù)地址更新相應(yīng)的節(jié)點(diǎn)目錄片段,同時(shí)全局目錄加入讀缺失節(jié)點(diǎn)共享信息;如果節(jié)點(diǎn)目錄不命中,但節(jié)點(diǎn)預(yù)測(cè)Cache命中,則根據(jù)節(jié)點(diǎn)預(yù)測(cè)Cache中的最近節(jié)點(diǎn)指針向預(yù)測(cè)節(jié)點(diǎn)發(fā)出讀數(shù)據(jù)請(qǐng)求;被預(yù)測(cè)訪問節(jié)點(diǎn)首先訪問節(jié)點(diǎn)內(nèi)目錄,如果不命中則將該請(qǐng)求轉(zhuǎn)發(fā)至該請(qǐng)求數(shù)據(jù)的全局目錄,然后按照3-hops讀操作流程,由該全局目錄通知緩存有效數(shù)據(jù)副本且距離最近的節(jié)點(diǎn)向讀缺失處理器內(nèi)核發(fā)送數(shù)據(jù),讀缺失處理器內(nèi)核收到數(shù)據(jù)后根據(jù)數(shù)據(jù)地址更新相應(yīng)的節(jié)點(diǎn)目錄片段,同時(shí)全局目錄加入讀缺失節(jié)點(diǎn)共享信息;如果節(jié)點(diǎn)預(yù)測(cè)Cache命中,且被預(yù)測(cè)訪問節(jié)點(diǎn)的節(jié)點(diǎn)內(nèi)目錄也命中,說明預(yù)測(cè)節(jié)點(diǎn)預(yù)測(cè)Cache預(yù)測(cè)正確,則被預(yù)測(cè)訪問的節(jié)點(diǎn)在向讀缺失節(jié)點(diǎn)發(fā)送數(shù)據(jù)副本前先將節(jié)點(diǎn)掛起指針指向讀缺失節(jié)點(diǎn),將讀缺失節(jié)點(diǎn)掛起;然后向讀缺失節(jié)點(diǎn)發(fā)送數(shù)據(jù)副本,并同時(shí)通知全局目錄加入讀缺失節(jié)點(diǎn)信息;全局目錄更新完畢后,被預(yù)測(cè)訪問的節(jié)點(diǎn)清除節(jié)點(diǎn)掛起指針,節(jié)點(diǎn)掛起過程結(jié)束;如果在掛起過程結(jié)束前數(shù)據(jù)被作廢,則被預(yù)測(cè)訪問的節(jié)點(diǎn)在收到全局目錄的作廢消息后,根據(jù)節(jié)點(diǎn)掛起指針將讀缺失節(jié)點(diǎn)剛收到的數(shù)據(jù)副本作廢掉。本實(shí)用新型進(jìn)一步的改進(jìn)在于,包括以下步驟對(duì)處于I狀態(tài)的寫缺失數(shù)據(jù)將從下一級(jí)存儲(chǔ)器先讀入數(shù)據(jù),再進(jìn)行修改;發(fā)生寫缺失時(shí),寫缺失處理器內(nèi)核首先根據(jù)缺失數(shù)據(jù)地址訪問對(duì)應(yīng)節(jié)點(diǎn)預(yù)測(cè)Cache,如果節(jié)點(diǎn)預(yù)測(cè)Cache不命中,則向全局目錄發(fā)送請(qǐng)求,然后按照3-hops寫缺失流程,由該全局目錄向所有緩存該數(shù)據(jù)副本的節(jié)點(diǎn)發(fā)送作廢請(qǐng)求,距離寫缺失處理器內(nèi)核最近且接收到作廢請(qǐng)求的節(jié)點(diǎn)向?qū)懭笔幚砥鲀?nèi)核發(fā)送缺失數(shù)據(jù)副本,所有接收到作廢請(qǐng)求的節(jié)點(diǎn)作廢自身的數(shù)據(jù)副本;寫缺失處理器內(nèi)核收到數(shù)據(jù)后根據(jù)數(shù)據(jù)地址更新相應(yīng)的節(jié)點(diǎn)目錄片段,所有接收到作廢請(qǐng)求的節(jié)點(diǎn)根據(jù)數(shù)據(jù)地址更新相應(yīng)的節(jié)點(diǎn)目錄片段,同時(shí)全局目錄加入寫缺失節(jié)點(diǎn)共享信息并刪除被作廢節(jié)點(diǎn)的共享信息;如果節(jié)點(diǎn)預(yù)測(cè)Cache命中,則根據(jù)最近節(jié)點(diǎn)指針進(jìn)行直接預(yù)測(cè)訪問,寫缺失處理器內(nèi)核向全局目錄和預(yù)測(cè)節(jié)點(diǎn)同時(shí)發(fā)出兩個(gè)訪問請(qǐng)求,根據(jù)寫缺失數(shù)據(jù)所處狀態(tài)的不同,分為以下兩種情況處理[0026]I)、當(dāng)寫缺失數(shù)據(jù)是M或E狀態(tài)時(shí),發(fā)往全局目錄的請(qǐng)求查詢到寫缺失數(shù)據(jù)狀態(tài)為M或E后,全局目錄忽略該請(qǐng)求;而發(fā)往預(yù)測(cè)節(jié)點(diǎn)的請(qǐng)求在最近節(jié)點(diǎn)指針預(yù)測(cè)正確的情況下將直接作廢掉處于M或E狀態(tài)的唯一寫缺失數(shù)據(jù)副本;而在最近節(jié)點(diǎn)指針預(yù)測(cè)錯(cuò)誤的情況下請(qǐng)求將被錯(cuò)誤預(yù)測(cè)節(jié)點(diǎn)轉(zhuǎn)發(fā)到全局目錄進(jìn)行處理;2)、發(fā)往全局目錄的請(qǐng)求查詢到寫缺失數(shù)據(jù)的狀態(tài)為S后,按照4-hops寫缺失流程,由該全局目錄向所有緩存該數(shù)據(jù)副本的節(jié)點(diǎn)發(fā)送作廢請(qǐng)求,距離寫缺失處理器內(nèi)核最近且接收到作廢請(qǐng)求的節(jié)點(diǎn)向?qū)懭笔幚砥鲀?nèi)核發(fā)送缺失數(shù)據(jù)副本,所有接收到作廢請(qǐng)求的節(jié)點(diǎn)作廢自身的數(shù)據(jù)副本;寫缺失處理器內(nèi)核收到數(shù)據(jù)后根據(jù)數(shù)據(jù)地址更新相應(yīng)的節(jié)點(diǎn)目錄片段,所有接收到作廢請(qǐng)求的節(jié)點(diǎn)根據(jù)數(shù)據(jù)地址更新相應(yīng)的節(jié)點(diǎn)目錄片段,同時(shí)全局目錄加入寫缺失節(jié)點(diǎn)共享信息并刪除被作廢節(jié)點(diǎn)的共享信息;而發(fā)往最近節(jié)點(diǎn)指針預(yù)測(cè)節(jié)點(diǎn)的請(qǐng)求在預(yù)測(cè)正確的情況下將查詢到寫缺失數(shù)據(jù)的狀態(tài)為S,此后該被預(yù)測(cè)訪問節(jié)點(diǎn)將忽略該請(qǐng)求;在最近節(jié)點(diǎn)指針預(yù)測(cè)錯(cuò)誤的情況下,請(qǐng)求將被錯(cuò)誤預(yù)測(cè)節(jié)點(diǎn)轉(zhuǎn)發(fā)到全局目錄,而全局目錄將忽略該轉(zhuǎn)發(fā)的請(qǐng)求。 本實(shí)用新型進(jìn)一步的改進(jìn)在于(a)替換處于M或E狀態(tài)的數(shù)據(jù)時(shí),包括如下具體步驟當(dāng)被替換的數(shù)據(jù)處于M或E狀態(tài)時(shí),一致性維護(hù)裝置上只存在唯一數(shù)據(jù)副本,發(fā)生替換的處理器內(nèi)核先發(fā)送消息剔除該數(shù)據(jù)所在節(jié)點(diǎn)目錄中的內(nèi)核信息和全局目錄中對(duì)應(yīng)的節(jié)點(diǎn)信息;發(fā)生替換的處理器內(nèi)核收到確認(rèn)消息后進(jìn)行替換操作;M狀態(tài)數(shù)據(jù)替換前還需要寫回主存;(b)替換處于S狀態(tài)的數(shù)據(jù)時(shí),包括如下兩種情況第一種情況,所在的節(jié)點(diǎn)中只存在唯一副本,替換過程與E狀態(tài)發(fā)生替換時(shí)相同;第二種情況,所在的節(jié)點(diǎn)中存在多個(gè)副本,只需要通知節(jié)點(diǎn)目錄剔除發(fā)生替換操作的內(nèi)核信息后進(jìn)行替換,而無需通知全局目錄;(c)替換操作所引起節(jié)點(diǎn)預(yù)測(cè)Cache預(yù)測(cè)訪問的撲空,在讀、寫缺失時(shí),該類撲空均按照節(jié)點(diǎn)預(yù)測(cè)Cache預(yù)測(cè)錯(cuò)誤處理。本實(shí)用新型進(jìn)一步的改進(jìn)在于對(duì)共享同一數(shù)據(jù)的節(jié)點(diǎn)在全局目錄中留下的共享信息的處理包括以下情況I)、對(duì)一個(gè)節(jié)點(diǎn)來說,每當(dāng)數(shù)據(jù)發(fā)生I — S、I — E、M—S或E — S的狀態(tài)轉(zhuǎn)換時(shí),生成新的全局目錄共享信息;2)、對(duì)一個(gè)節(jié)點(diǎn)來說,每當(dāng)數(shù)據(jù)發(fā)生S — M或E — M的狀態(tài)轉(zhuǎn)換時(shí),也就是寫操作發(fā)生時(shí),當(dāng)前全局目錄中的共享信息將由寫操作節(jié)點(diǎn)回收,并與之前的共享歷史向量信息進(jìn)行“或”操作產(chǎn)生新的共享歷史向量信息,存儲(chǔ)在寫操作節(jié)點(diǎn)的節(jié)點(diǎn)共享歷史信息Cache中;3)、沒有發(fā)生過寫操作的數(shù)據(jù)不存在共享歷史向量信息,對(duì)一個(gè)節(jié)點(diǎn)來說,當(dāng)數(shù)據(jù)第一次發(fā)生I — M、S — M或E — M的狀態(tài)轉(zhuǎn)換時(shí)生成共享歷史向量信息;在后續(xù)發(fā)生寫操作時(shí)根據(jù)全局目錄共享信息生成新的共享歷史向量信息,并在發(fā)生寫操作的節(jié)點(diǎn)問傳遞,從而實(shí)現(xiàn)了節(jié)點(diǎn)共享歷史信息的保存;4)、對(duì)一個(gè)節(jié)點(diǎn)來說,每當(dāng)數(shù)據(jù)發(fā)生S — I、E — I或M — I的狀態(tài)轉(zhuǎn)換時(shí),說明其它節(jié)點(diǎn)進(jìn)行了寫操作,該數(shù)據(jù)的全局目錄共享信息被作廢掉。本實(shí)用新型進(jìn)一步的改進(jìn)在于,基于寫操作的節(jié)點(diǎn)預(yù)測(cè)Cache歷史信息更新方法包括以下情況I)、發(fā)生寫缺失時(shí),當(dāng)數(shù)據(jù)處于E狀態(tài),對(duì)應(yīng)共享歷史向量信息還未生成,無需進(jìn)行歷史信息更新;2)、發(fā)生寫缺失時(shí),當(dāng)數(shù)據(jù)處于M狀態(tài),數(shù)據(jù)副本唯一并且與對(duì)應(yīng)共享歷史向量信息一起存儲(chǔ)在上一個(gè)寫操作節(jié)點(diǎn)中,寫缺失節(jié)點(diǎn)根據(jù)節(jié)點(diǎn)預(yù)測(cè)Cache預(yù)測(cè)信息進(jìn)行預(yù)測(cè)訪問;在最近節(jié)點(diǎn)指針預(yù)測(cè)正確的情況下,上一個(gè)寫操作節(jié)點(diǎn)收到訪問請(qǐng)求,并根據(jù)本節(jié)點(diǎn)中存儲(chǔ)的共享歷史向量信息對(duì)歷史共享節(jié)點(diǎn)中的節(jié)點(diǎn)預(yù)測(cè)Cache信息進(jìn)行更新,使最近節(jié)點(diǎn)指針指向?qū)懭笔Ч?jié)點(diǎn);在最近節(jié)點(diǎn)指針預(yù)測(cè)錯(cuò)誤的情況下,請(qǐng)求將由全局目錄中轉(zhuǎn)到達(dá)上一個(gè)寫操作節(jié)點(diǎn),并根據(jù)本節(jié)點(diǎn)中存儲(chǔ)的共享歷史向量信息對(duì)歷史共享節(jié)點(diǎn)中的節(jié)點(diǎn)預(yù)測(cè)Cache信息進(jìn)行更新,使最近節(jié)點(diǎn)指針指向?qū)懭笔Ч?jié)點(diǎn);3)、發(fā)生寫缺失且數(shù)據(jù)處于S狀態(tài)時(shí),數(shù)據(jù)副本不唯一,共享歷史向量信息與其中一個(gè)數(shù)據(jù)副本一起存儲(chǔ)在上一個(gè)寫操作節(jié)點(diǎn)中;全局目錄響應(yīng)寫缺失節(jié)點(diǎn)的請(qǐng)求,并根據(jù)目錄信息向數(shù)據(jù)副本所在節(jié)點(diǎn)發(fā)出作廢消息;存有寫缺失數(shù)據(jù)對(duì)應(yīng)共享歷史向量信息的數(shù)據(jù)共享節(jié)點(diǎn)收到消息后不僅要作廢自身數(shù)據(jù)副本,還要根據(jù)共享歷史向量信息對(duì)歷史共享節(jié)點(diǎn)中的節(jié)點(diǎn)預(yù)測(cè)Cache信息進(jìn)行更新,使最近節(jié)點(diǎn)指針指向?qū)懭笔Ч?jié)點(diǎn);其它共享節(jié)點(diǎn)只需作廢數(shù)據(jù)即可;4)、發(fā)生寫命中時(shí),如果上一個(gè)寫操作節(jié)點(diǎn)與當(dāng)前寫操作節(jié)點(diǎn)相同,則無需更新歷史信息;如果上一個(gè)寫操作節(jié)點(diǎn)與當(dāng)前寫操作節(jié)點(diǎn)不同,且當(dāng)數(shù)據(jù)處于E、M、S狀態(tài)時(shí),更新過程分別與對(duì)應(yīng)的上述I)、2)、3)中寫缺失更新過程相同。本實(shí)用新型進(jìn)一步的改進(jìn)在于,基于讀操作的節(jié)點(diǎn)預(yù)測(cè)Cache歷史信息更新方法包括以下情況I)、讀缺失內(nèi)核的數(shù)據(jù)狀態(tài)變化為I — E時(shí),數(shù)據(jù)從下一級(jí)存儲(chǔ)器中取入,共享歷史向量信息不存在,無須更新節(jié)點(diǎn)預(yù)測(cè)Cache ;2)、讀缺失內(nèi)核的數(shù)據(jù)狀態(tài)變化為I — S,且數(shù)據(jù)由一致性維護(hù)裝置上處于E狀態(tài)節(jié)點(diǎn)提供時(shí),共享歷史向量信息不存在,無須更新節(jié)點(diǎn)預(yù)測(cè)Cache ;3)、讀缺失內(nèi)核的數(shù)據(jù)狀態(tài)變化為I — S,且數(shù)據(jù)由一致性維護(hù)裝置上處于M或S狀態(tài)節(jié)點(diǎn)提供時(shí),共享歷史向量信息已經(jīng)存在,節(jié)點(diǎn)預(yù)測(cè)Cache更新過程包括以下兩種情況3. I)、當(dāng)讀缺失節(jié)點(diǎn)的節(jié)點(diǎn)預(yù)測(cè)Cache命中時(shí),上一個(gè)寫操作節(jié)點(diǎn)利用自身存儲(chǔ)的共享歷史向量信息和當(dāng)前全局目錄共享信息進(jìn)行兩次過濾操作,生成最終需要更新的歷史共享節(jié)點(diǎn)信息,并根據(jù)該最終共享歷史向量進(jìn)行節(jié)點(diǎn)預(yù)測(cè)Cache的更新;更新節(jié)點(diǎn)預(yù)測(cè)Cache時(shí),檢查更新前后歷史共享節(jié)點(diǎn)與其預(yù)測(cè)節(jié)點(diǎn)間的距離變化情況,只在距離縮短的情況下才更新歷史共享節(jié)點(diǎn)的節(jié)點(diǎn)預(yù)測(cè)Cache ;3. 2)、當(dāng)讀缺失節(jié)點(diǎn)的節(jié)點(diǎn)預(yù)測(cè)Cache不命中或命中但預(yù)測(cè)錯(cuò)誤時(shí),除需要全局目錄轉(zhuǎn)發(fā)請(qǐng)求外,更新過程與節(jié)點(diǎn)預(yù)測(cè)Cache命中相同;4)、如果最后寫節(jié)點(diǎn)指針指向的上一個(gè)寫操作節(jié)點(diǎn)中讀缺失數(shù)據(jù)副本和對(duì)應(yīng)共享歷史向量信息已經(jīng)被替換出去,則本次節(jié)點(diǎn)預(yù)測(cè)Cache更新終止。[0055]與現(xiàn)有技術(shù)相比,本實(shí)用新型主要具有以下優(yōu)點(diǎn)本實(shí)用新型公開了一種用于多核處理器的一致性維護(hù)裝置,主要用于解決現(xiàn)有多核處理器Cache —致性協(xié)議在處理讀缺失和寫缺失的一致性交互過程中目錄訪問延遲大的技術(shù)問題。本實(shí)用新型將多核處理器的所有內(nèi)核劃分為并列關(guān)系的多個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)包含多個(gè)內(nèi)核。在發(fā)生讀、寫缺失時(shí)根據(jù)節(jié)點(diǎn)預(yù)測(cè)Cache直接預(yù)測(cè)訪問與讀、寫缺失內(nèi)核最近的有效數(shù)據(jù)副本節(jié)點(diǎn),并將更新目錄步驟推遲到數(shù)據(jù)訪問(讀操作或作廢操作)結(jié)束以后進(jìn)行,從而完全隱藏目錄訪問延遲,提升了訪存效率;雙層目錄結(jié)構(gòu)將目錄存儲(chǔ)開銷由指數(shù)級(jí)增長轉(zhuǎn)化為線性增長,更具可擴(kuò)展性;由于以節(jié)點(diǎn)為單位進(jìn)行粗粒度預(yù)測(cè),相對(duì)以內(nèi)核為單位進(jìn)行的細(xì)粒度預(yù)測(cè)節(jié)省了預(yù)測(cè)信息的存儲(chǔ)開銷;另外,還配套設(shè)計(jì)了節(jié)點(diǎn)預(yù)測(cè)Cache的動(dòng)態(tài)更新算法來保證其預(yù)測(cè)精確性,減少了由于預(yù)測(cè)錯(cuò)誤或不準(zhǔn)確造成的額外延遲。
圖I是基準(zhǔn)多核處理器結(jié)構(gòu)圖;
圖2是多核處理器的節(jié)點(diǎn)劃分示例圖;圖3是本實(shí)用新型一致性維護(hù)裝置中的目錄組織結(jié)構(gòu)圖;圖4是本實(shí)用新型一致性維護(hù)裝置相對(duì)于基準(zhǔn)多核結(jié)構(gòu)的變化圖;圖5是節(jié)點(diǎn)掛起技術(shù)的工作流程圖;其中圖5(a)為節(jié)點(diǎn)掛起讀操作流程,圖5 (b)節(jié)點(diǎn)掛起讀操作中加入寫操作的作廢流程;圖6是本實(shí)用新型對(duì)讀缺失的一致性交互方法圖;圖7是本實(shí)用新型對(duì)M、E狀態(tài)寫缺失數(shù)據(jù)的一致性交互方法圖;其中圖7(a)為基于CNP正確預(yù)測(cè)的M、E狀態(tài)數(shù)據(jù)的2-hops寫缺失處理流程;圖7 (b)為基于CNP錯(cuò)誤預(yù)測(cè)的M、E狀態(tài)數(shù)據(jù)的4-hops寫缺失處理流程;圖8是本實(shí)用新型對(duì)S狀態(tài)寫缺失數(shù)據(jù)的一致性交互方法圖;其中圖8 (a)為基于CNP正確預(yù)測(cè)的S狀態(tài)數(shù)據(jù)寫缺失處理流程;圖8 (b)為基于CNP錯(cuò)誤預(yù)測(cè)的S狀態(tài)數(shù)據(jù)寫缺失處理流程;圖9是“簽名”與SHV信息的流向與變化圖;其中圖9(a)為“簽名”信息的生成、作廢和回收?qǐng)D;圖9(b)為以圖2為例SHV信息的產(chǎn)生、傳遞過程圖;圖10是M、S狀態(tài)數(shù)據(jù)基于寫缺失的NPC更新流程圖;圖11是基于讀缺失的NPC更新算法圖;圖12是全映射目錄與本實(shí)用新型的讀缺失一致性交互過程對(duì)比圖;其中圖12(a)為23X 23個(gè)內(nèi)核CMP中全映射目錄協(xié)議的3-hops讀缺失處理圖,包括以下步驟(I)P55發(fā)生缺失,向目錄發(fā)出讀請(qǐng)求,(2)目錄通知距離P55最近的P62提供數(shù)據(jù),(3)P62向P55發(fā)送數(shù)據(jù),同時(shí)向目錄發(fā)確認(rèn)消息;圖12(b)為對(duì)23X 23內(nèi)核、節(jié)點(diǎn)規(guī)模22內(nèi)核CMP的讀缺失處理圖,包括以下步驟(1)P55發(fā)生缺失,向節(jié)點(diǎn)目錄發(fā)出讀請(qǐng)求,(2)P55所在節(jié)點(diǎn)16的節(jié)點(diǎn)目錄未命中,訪問P56中NPC,根據(jù)CNP預(yù)測(cè)訪問節(jié)點(diǎn)15的節(jié)點(diǎn)目錄,(3)在P54節(jié)點(diǎn)目錄片段命中,將NHP指向節(jié)點(diǎn)16,并通知P62向P55提供數(shù)據(jù);同時(shí)向全局目錄發(fā)出目錄更新請(qǐng)求,(4) P62向P55發(fā)送數(shù)據(jù),并更新P56節(jié)點(diǎn)目錄片段,(5) P54收到全局目錄更新確認(rèn)消息后將NHP清除;圖13是現(xiàn)有的全映射目錄協(xié)議讀缺失一致性交互過程圖;其中圖13(a)為4-hops讀缺失處理流程,圖13(b)為3-hops讀缺失處理流程;圖14是現(xiàn)有的全映射目錄協(xié)議寫缺失一致性交互過程圖;其中圖14(a)為M、E狀態(tài)數(shù)據(jù)4-hops寫缺失處理流程,圖14(b)為M、E狀態(tài)數(shù)據(jù)3-hops寫缺失處理流程,圖14(c)為S狀態(tài)數(shù)據(jù)4-hops寫缺失處理流程;圖15本實(shí)用新型一致性維護(hù)裝置多個(gè)功能部件的連接關(guān)系圖。
具體實(shí)施方式請(qǐng)參閱圖I至圖15所示,本實(shí)用新型一種用于多核處理器的一致性維護(hù)裝置,包括全局目錄單元、節(jié)點(diǎn)目錄單元、目錄控制器單元、節(jié)點(diǎn)預(yù)測(cè)緩存單元、節(jié)點(diǎn)共享歷史信息緩存單元、最后寫節(jié)點(diǎn)指針單元和節(jié)點(diǎn)掛起指針單元。包括以下方面(a)節(jié)點(diǎn)劃分方法片上所有內(nèi)核被劃分為多個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)包含2n(n^ I)個(gè)內(nèi)核,假設(shè)片上有N
個(gè)內(nèi)核(N為2n的整數(shù)倍),則該處理器包含$個(gè)節(jié)點(diǎn),N個(gè)內(nèi)核構(gòu)成2-D MESH陣列。一個(gè)
節(jié)點(diǎn)內(nèi)的2n個(gè)內(nèi)核使用n位二進(jìn)制數(shù)進(jìn)行節(jié)點(diǎn)內(nèi)編碼索引,如n = 2時(shí),節(jié)點(diǎn)內(nèi)的4個(gè)內(nèi)核分別編碼為00、01、10、11。多個(gè)節(jié)點(diǎn)間是同一層次并列關(guān)系,如圖2。(b)雙層目錄結(jié)構(gòu)如圖3所示,全局目錄以粗向量的方式跟蹤數(shù)據(jù)所在節(jié)點(diǎn)。由于數(shù)據(jù)地址以靜態(tài)的方式映射到所有L2Cache片段,因此全局目錄只負(fù)責(zé)跟蹤其對(duì)應(yīng)L2Cache片段中數(shù)據(jù)副本。節(jié)點(diǎn)目錄采用全映射位向量目錄,負(fù)責(zé)在節(jié)點(diǎn)內(nèi)跟蹤數(shù)據(jù)副本所在的內(nèi)核位置。(C)節(jié)點(diǎn)目錄的兩步訪問方法將節(jié)點(diǎn)目錄分成多個(gè)片段,每個(gè)內(nèi)核存儲(chǔ)一個(gè)目錄片段,簡稱為NDS(NodeDirectory Slice),按照數(shù)據(jù)地址末段與節(jié)點(diǎn)中內(nèi)核編碼相對(duì)應(yīng)的方式將節(jié)點(diǎn)內(nèi)的數(shù)據(jù)共享信息分布到所有節(jié)點(diǎn)中內(nèi)核的目錄片段上。設(shè)節(jié)點(diǎn)規(guī)模為M,則訪問節(jié)點(diǎn)目錄時(shí)第一步首先根據(jù)數(shù)據(jù)地址的末n位訪問對(duì)應(yīng)編碼內(nèi)核的NDS,如果數(shù)據(jù)確實(shí)存在于該節(jié)點(diǎn)中,則訪問將在該目錄命中。如果在該NDS沒有命中,則第二步同時(shí)訪問剩余的M-I個(gè)NDS,如果仍然不命中,說明該數(shù)據(jù)在該節(jié)點(diǎn)中不存在。舉例來說,假設(shè)節(jié)點(diǎn)包含4個(gè)內(nèi)核,即n = 2。使用2位二進(jìn)制數(shù)對(duì)節(jié)點(diǎn)中內(nèi)核進(jìn)行編碼,分別是00、01、10、11,共享數(shù)據(jù)地址末兩位為11的數(shù)據(jù)首先將其共享信息存儲(chǔ)在編碼為11內(nèi)核的NDS中。如果該內(nèi)核的NDS已滿,再寫入其它三個(gè)內(nèi)核的NDS中,其它數(shù)據(jù)以此類推。訪問節(jié)點(diǎn)目錄時(shí)首先根據(jù)數(shù)據(jù)地址的末兩位訪問對(duì)應(yīng)編碼內(nèi)核的NDS,如果不命中再訪問其它三個(gè)內(nèi)核的NDS。(d)目錄控制器與目錄集成在一起,用于對(duì)兩級(jí)目錄進(jìn)行控制,接收和發(fā)送一致性交互消息,并對(duì)一致性交互過程進(jìn)行管理。(e)節(jié)點(diǎn)預(yù)測(cè) Cache如圖4,節(jié)點(diǎn)預(yù)測(cè)Cache-NPC (Node Predicting Cache),用于保存距離請(qǐng)求內(nèi)核節(jié)點(diǎn)最近的有效目標(biāo)數(shù)據(jù)副本節(jié)點(diǎn),為發(fā)生缺失時(shí)的直接訪問提供歷史信息依據(jù);NPC條目中除tag外還保存了最近節(jié)點(diǎn)指針CNP(Closest Node Pointer),該指針指向距離請(qǐng)求內(nèi)核節(jié)點(diǎn)最近的有效目標(biāo)數(shù)據(jù)副本節(jié)點(diǎn)。發(fā)生讀、寫缺失時(shí),內(nèi)核根據(jù)NPC中存儲(chǔ)的CNP信息就能夠直接進(jìn)行訪問,而不需要訪問目錄。與節(jié)點(diǎn)目錄類似,每個(gè)內(nèi)核的NPC只存儲(chǔ)地址末n位與該內(nèi)核n位節(jié)點(diǎn)內(nèi)二進(jìn)制編碼相同的數(shù)據(jù)的預(yù)測(cè)信息,也就是說發(fā)生讀、寫缺失的內(nèi)核需要根據(jù)缺失數(shù)據(jù)的地址末n位來訪問該數(shù)據(jù)CNP預(yù)測(cè)信息所在的NPC。(f)節(jié)點(diǎn)共享歷史信息Cache如圖4,節(jié)點(diǎn)共享歷史信息Cache_SHC(Sharing History Cache),用于保存節(jié)點(diǎn)對(duì)數(shù)據(jù)的共享歷史向量,為節(jié)點(diǎn)預(yù)測(cè)Cache的更新提供歷史信息依據(jù);CNP的有效性和準(zhǔn)確性需要更新算法來保證,為了保證更新算法的精確性,SHC中保存了共享歷史向量SHV (Sharing History Vector),用來保證更新時(shí)只對(duì)那些曾經(jīng)緩存數(shù)據(jù)副本的節(jié)點(diǎn)發(fā)出
更新請(qǐng)求,避免造成網(wǎng)絡(luò)擁塞和不完整更新。(g)最后與節(jié)點(diǎn)指針如圖11,SHV存在于最后發(fā)生寫操作的節(jié)點(diǎn)中,為了在數(shù)據(jù)處于S狀態(tài)時(shí)能跟蹤SHV信息的位置,為全局目錄的每個(gè)條目增加一個(gè)最后寫節(jié)點(diǎn)指針LWP(Last WriterPointer)來跟蹤上一個(gè)寫操作節(jié)點(diǎn)。LWP指針在每次發(fā)生寫操作時(shí)被更新一次,始終指向最后發(fā)生寫操作的節(jié)點(diǎn)。(h)節(jié)點(diǎn)掛起指針為隱藏讀缺失目錄訪問延遲,為每個(gè)節(jié)點(diǎn)目錄片段(NDS)增加一個(gè)節(jié)點(diǎn)掛起指針-NHP(Node Hanging Pointer)。被預(yù)測(cè)訪問的節(jié)點(diǎn)在向讀缺失節(jié)點(diǎn)發(fā)送數(shù)據(jù)副本前先將NHP指向讀缺失節(jié)點(diǎn),將讀缺失節(jié)點(diǎn)掛起。然后向讀缺失節(jié)點(diǎn)發(fā)送數(shù)據(jù)副本,并同時(shí)通知全局目錄加入讀缺失節(jié)點(diǎn)信息。全局目錄更新完畢后,被預(yù)測(cè)訪問的節(jié)點(diǎn)清除NHP指針,節(jié)點(diǎn)掛起過程結(jié)束。如果在掛起過程結(jié)束前數(shù)據(jù)被作廢,則被預(yù)測(cè)訪問的節(jié)點(diǎn)在收到全局目錄的作廢消息后,根據(jù)NHP指針也將讀缺失節(jié)點(diǎn)剛收到的數(shù)據(jù)副本作廢掉。一致性維護(hù)裝置進(jìn)行一致性交互的方法,包括以下兩方面(a)讀缺失一致性交互發(fā)生讀缺失時(shí),讀缺失內(nèi)核首先根據(jù)缺失數(shù)據(jù)地址訪問本節(jié)點(diǎn)目錄,如果節(jié)點(diǎn)目錄命中,則直接從本節(jié)點(diǎn)的其它內(nèi)核中獲得缺失數(shù)據(jù)副本,并更新節(jié)點(diǎn)目錄。如果節(jié)點(diǎn)目錄不命中,則根據(jù)缺失數(shù)據(jù)地址查找本節(jié)點(diǎn)內(nèi)對(duì)應(yīng)的NPC預(yù)測(cè)信息,如果NPC也不命中,則按照?qǐng)D13中現(xiàn)有的3-hops讀操作流程訪問全局目錄,由全局目錄通知緩存有效數(shù)據(jù)副本且距離最近的節(jié)點(diǎn)向讀缺失內(nèi)核發(fā)送數(shù)據(jù),讀缺失內(nèi)核收到數(shù)據(jù)后根據(jù)數(shù)據(jù)地址更新相應(yīng)的NDS,同時(shí)全局目錄加入讀缺失節(jié)點(diǎn)共享信息。如果節(jié)點(diǎn)目錄不命中,但NPC命中,則根據(jù)NPC中的CNP向預(yù)測(cè)節(jié)點(diǎn)發(fā)出讀數(shù)據(jù)請(qǐng)求。被預(yù)測(cè)訪問節(jié)點(diǎn)首先訪問節(jié)點(diǎn)內(nèi)目錄,如果不命中則將將該請(qǐng)求轉(zhuǎn)發(fā)至該請(qǐng)求數(shù)據(jù)的全局目錄,剩余流程與現(xiàn)有3-hops讀操作流程相同。如果NPC命中,且被預(yù)測(cè)訪問節(jié)點(diǎn)的節(jié)點(diǎn)內(nèi)目錄也命中,說明預(yù)測(cè)NPC預(yù)測(cè)正確,則被預(yù)測(cè)訪問的節(jié)點(diǎn)在向讀缺失節(jié)點(diǎn)發(fā)送數(shù)據(jù)副本前先將NHP指向讀缺失節(jié)點(diǎn),將讀缺失節(jié)點(diǎn)掛起。然后向讀缺失節(jié)點(diǎn)發(fā)送數(shù)據(jù)副本,并同時(shí)通知全局目錄加入讀缺失節(jié)點(diǎn)信息。全局目錄更新完畢后,被預(yù)測(cè)訪問的節(jié)點(diǎn)清除NHP指針,節(jié)點(diǎn)掛起過程結(jié)束。[0097]如果在掛起過程結(jié)束前數(shù)據(jù)被作廢,則被預(yù)測(cè)訪問的節(jié)點(diǎn)在收到全局目錄的作廢消息后,根據(jù)NHP指針也將讀缺失節(jié)點(diǎn)剛收到的數(shù)據(jù)副本作廢掉。(b)寫缺失一致性交互在寫命中的情況下,仍需訪問全局目錄將其它副本作廢。對(duì)處于I狀態(tài)的寫缺失數(shù)據(jù)將從下一級(jí)存儲(chǔ)器先讀入數(shù)據(jù),再進(jìn)行修改。發(fā)生寫缺失時(shí),寫缺失內(nèi)核首先根據(jù)缺失數(shù)據(jù)地址訪問對(duì)應(yīng)NPC,如果NPC不命中,則向全局目錄發(fā)送請(qǐng)求,執(zhí)行圖14中現(xiàn)有的3-hops寫缺失流程。如果NPC命中,則根據(jù)CNP進(jìn)行直接預(yù)測(cè)訪問,寫缺失內(nèi)核向全局目錄和預(yù)測(cè)節(jié)點(diǎn)同時(shí)發(fā)出兩個(gè)訪問請(qǐng)求,根據(jù)寫缺失數(shù)據(jù)所處狀態(tài)的不同,分為以下兩種情況處理 當(dāng)寫缺失數(shù)據(jù)是M或E狀態(tài)時(shí),發(fā)往全局目錄的請(qǐng)求查詢到寫缺失數(shù)據(jù)狀態(tài)為M或E后,全局目錄忽略該請(qǐng)求。而發(fā)往預(yù)測(cè)節(jié)點(diǎn)的請(qǐng)求在CNP預(yù)測(cè)正確的情況下將直接作廢掉處于M或E狀態(tài)的唯一寫缺失數(shù)據(jù)副本。而在CNP預(yù)測(cè)錯(cuò)誤的情況下請(qǐng)求將被錯(cuò)誤預(yù)測(cè)節(jié)點(diǎn)轉(zhuǎn)發(fā)到全局目錄進(jìn)行處理 發(fā)往全局目錄的請(qǐng)求查詢到寫缺失數(shù)據(jù)的狀態(tài)為S后,按照?qǐng)D14中4-hops交互流程處理。而發(fā)往CNP預(yù)測(cè)節(jié)點(diǎn)的請(qǐng)求在預(yù)測(cè)正確的情況下將查詢到寫缺失數(shù)據(jù)的狀態(tài)為S,此后該被預(yù)測(cè)訪問節(jié)點(diǎn)將忽略該請(qǐng)求。在CNP預(yù)測(cè)錯(cuò)誤的情況下,請(qǐng)求將被錯(cuò)誤預(yù)測(cè)節(jié)點(diǎn)轉(zhuǎn)發(fā)到全局目錄,而全局目錄將忽略該轉(zhuǎn)發(fā)的請(qǐng)求。(3) 一種利用一致性維護(hù)裝置進(jìn)行的保證中節(jié)點(diǎn)預(yù)測(cè)訪問準(zhǔn)確性的歷史信息更新方法,包括以下幾方面(a) “簽名”信息回收技術(shù)本實(shí)用新型基于MESI數(shù)據(jù)狀態(tài)轉(zhuǎn)換協(xié)議和如圖I所示的多核處理器基準(zhǔn)結(jié)構(gòu)進(jìn)行說明,在采用如MSI、MOESI等其它數(shù)據(jù)狀態(tài)轉(zhuǎn)換協(xié)議和其它多核處理器結(jié)構(gòu)但仍符合本實(shí)用新型權(quán)利要求范圍的情況下,也屬于本實(shí)用新型的范疇。本實(shí)用新型將曾經(jīng)共享同一數(shù)據(jù)的節(jié)點(diǎn)在全局目錄中留下的共享信息稱為“簽名”信息,對(duì)“簽名”信息的處理包括如下步驟如圖9 (a),對(duì)一個(gè)節(jié)點(diǎn)來說,每當(dāng)數(shù)據(jù)發(fā)生I — S、I — E、M — S、E — S的狀態(tài)轉(zhuǎn)換時(shí),生成新的“簽名”信息。對(duì)一個(gè)節(jié)點(diǎn)來說,每當(dāng)數(shù)據(jù)發(fā)生S — M、E — M的狀態(tài)轉(zhuǎn)換時(shí),也就是寫操作(包括缺失和命中)發(fā)生時(shí),當(dāng)前全局目錄中的“簽名”信息將由寫操作節(jié)點(diǎn)回收,并與之前的SHV信息(如果有的話)進(jìn)行“0R”操作產(chǎn)生新的SHV信息,存儲(chǔ)在寫操作節(jié)點(diǎn)的SHC中。如圖9(b),沒有發(fā)生過寫操作的數(shù)據(jù)不存在SHV信息,對(duì)一個(gè)節(jié)點(diǎn)來說,當(dāng)數(shù)據(jù)第一次發(fā)生I — M、S — M、E — M的狀態(tài)轉(zhuǎn)換時(shí)生成SHV信息。在后續(xù)發(fā)生寫操作時(shí)根據(jù)“簽名”信息生成新的SHV信息,并在發(fā)生寫操作的節(jié)點(diǎn)間傳遞,從而實(shí)現(xiàn)了節(jié)點(diǎn)共享歷史信息的保存。對(duì)一個(gè)節(jié)點(diǎn)來說,每當(dāng)數(shù)據(jù)發(fā)生S — I、E — I、M — I的狀態(tài)轉(zhuǎn)換時(shí),說明其它節(jié)點(diǎn)進(jìn)行了寫操作,該數(shù)據(jù)的“簽名”信息被作廢掉。替換操作也會(huì)改變“簽名”信息的內(nèi)容,但本實(shí)用新型認(rèn)為發(fā)生替換的節(jié)點(diǎn)重用該數(shù)據(jù)的可能性不強(qiáng),對(duì)其歷史信息不予保存。(b)基于寫操作的歷史信息更新方法[0114]利用權(quán)利要求3(a)的“簽名”信息回收技術(shù),本實(shí)用新型實(shí)現(xiàn)了基于寫操作的節(jié)點(diǎn)預(yù)測(cè)Cache歷史信息更新方法,其特征在于包括以下步驟發(fā)生寫缺失時(shí),當(dāng)數(shù)據(jù)處于E狀態(tài),對(duì)應(yīng)SHV信息還未生成,無需進(jìn)行歷史信息更新。發(fā)生寫缺失時(shí),當(dāng)數(shù)據(jù)處于M狀態(tài),數(shù)據(jù)副本唯一并且與對(duì)應(yīng)SHV信息一起存儲(chǔ)在上一個(gè)寫操作節(jié)點(diǎn)中,寫缺失節(jié)點(diǎn)根據(jù)NPC預(yù)測(cè)信息進(jìn)行預(yù)測(cè)訪問。在CNP預(yù)測(cè)正確的情況下,上一個(gè)寫操作節(jié)點(diǎn)收到訪問請(qǐng)求,并根據(jù)本節(jié)點(diǎn)中存儲(chǔ)的SHV信息對(duì)歷史共享節(jié)點(diǎn)中的NPC信息進(jìn)行更新,使CNP指向?qū)懭笔Ч?jié)點(diǎn)。在CNP預(yù)測(cè)錯(cuò)誤的情況下,請(qǐng)求將由全局目錄中轉(zhuǎn)到達(dá)上一個(gè)寫操作節(jié)點(diǎn),并開始相同的歷史信息更新過程。發(fā)生寫缺失且數(shù)據(jù)處于S狀態(tài)時(shí),數(shù)據(jù)副本不唯一,SHV信息與其中一個(gè)數(shù)據(jù)副本一起存儲(chǔ)在上一個(gè)寫操作節(jié)點(diǎn)中。全局目錄響應(yīng)寫缺失節(jié)點(diǎn)的請(qǐng)求,并根據(jù)目錄信息向數(shù)據(jù)副本所在節(jié)點(diǎn)發(fā)出作廢消息。存有寫缺失數(shù)據(jù)對(duì)應(yīng)SHV信息的數(shù)據(jù)共享節(jié)點(diǎn)收到消息后 不僅要作廢自身數(shù)據(jù)副本,還要根據(jù)SHV信息更新歷史共享節(jié)點(diǎn)中的NPC信息進(jìn)行更新,使CNP指向?qū)懭笔Ч?jié)點(diǎn)。其它共享節(jié)點(diǎn)只需作廢數(shù)據(jù)即可。發(fā)生寫命中時(shí),如果上一個(gè)寫操作節(jié)點(diǎn)與當(dāng)前寫操作節(jié)點(diǎn)相同,則無需更新歷史信息。如果上一個(gè)寫操作節(jié)點(diǎn)與當(dāng)前寫操作節(jié)點(diǎn)不同,則更新過程與發(fā)生寫缺失時(shí)相同。(c)基于讀缺失的歷史信息更新方法利用權(quán)利要求3(a)的“簽名”信息回收技術(shù),本實(shí)用新型實(shí)現(xiàn)了基于讀操作的節(jié)點(diǎn)預(yù)測(cè)Cache歷史信息更新方法,其特征在于包括以下步驟讀缺失內(nèi)核的數(shù)據(jù)狀態(tài)變化為I — E時(shí),數(shù)據(jù)從下一級(jí)存儲(chǔ)器中取入,SHV信息不存在,無須更新NPC。讀缺失內(nèi)核的數(shù)據(jù)狀態(tài)變化為I — S,且數(shù)據(jù)由片上處于E狀態(tài)節(jié)點(diǎn)提供時(shí),SHV信息不存在,無須更新NPC。讀缺失內(nèi)核的數(shù)據(jù)狀態(tài)變化為I — S,且數(shù)據(jù)由片上處于M或S狀態(tài)節(jié)點(diǎn)提供時(shí),SHV信息已經(jīng)存在,NPC更新過程的特征在于包括以下步驟 當(dāng)讀缺失節(jié)點(diǎn)NPC命中時(shí),上一個(gè)寫操作節(jié)點(diǎn)利用自身存儲(chǔ)的SHV信息和當(dāng)前“簽名”信息進(jìn)行兩次過濾操作,生成最終需要更新的歷史共享節(jié)點(diǎn)信息,并根據(jù)該最終SHV進(jìn)行NPC的更新。 更新NPC時(shí),檢查更新前后歷史共享節(jié)點(diǎn)與其預(yù)測(cè)節(jié)點(diǎn)間的距離變化情況,只在距離縮短的情況下才更新歷史共享節(jié)點(diǎn)NPC中存儲(chǔ)的CNP指針。 當(dāng)讀缺失節(jié)點(diǎn)NPC不命中或命中但預(yù)測(cè)錯(cuò)誤時(shí),除需要全局目錄轉(zhuǎn)發(fā)請(qǐng)求外,更新過程與NPC命中相同。如果LWP指向的上一個(gè)寫操作節(jié)點(diǎn)中讀缺失數(shù)據(jù)副本和對(duì)應(yīng)SHV信息已經(jīng)被替換出去,則本次NPC更新終止。
以下結(jié)合附圖I至15和具體的實(shí)施例對(duì)本實(shí)用新型做進(jìn)一步詳細(xì)描述。對(duì)于本實(shí)用新型所提出的用于多核處理器的一致性維護(hù)裝置,如無特別說明,后文均基于規(guī)模為4的節(jié)點(diǎn)、MESI數(shù)據(jù)狀態(tài)轉(zhuǎn)換協(xié)議和Inclusive兩級(jí)Cache層次關(guān)系結(jié)合附圖進(jìn)行實(shí)例詳細(xì)說明。本實(shí)用新型所提出的一致性維護(hù)裝置是為了保持CMP處理器的存儲(chǔ)系統(tǒng)一致性而設(shè)計(jì)的。因此,為了能夠清楚的說明本實(shí)用新型的技術(shù)方案,首先對(duì)CMP處理器的存儲(chǔ)系統(tǒng)結(jié)構(gòu)作說明。如圖I和圖3所示,本實(shí)用新型所基于的CMP處理器的存儲(chǔ)系統(tǒng)具有以下特征片上網(wǎng)絡(luò)(Network on Chip,NoC)是CMP處理器廣泛使用的內(nèi)核互聯(lián)方式,NOC以陣列的方式將多個(gè)同一尺寸內(nèi)核連接起來。本實(shí)用新型基于2-D MESHN0C互連和MESI狀態(tài)轉(zhuǎn)換協(xié)議進(jìn)行說明;所有內(nèi)核私有LlCache,共享L2Cache和主存;共享L2Cache以多個(gè)片段的方式分布在所有內(nèi)核中,整個(gè)L2Cache在物理上分布放置。片上兩級(jí)Cache間采用Inclusive模式。因此,目錄用來維護(hù)一個(gè)共享的L2Cache與多個(gè)私有LlCache之間的數(shù)據(jù)一致性。目錄跟蹤每個(gè)LlCache數(shù)據(jù)塊的狀態(tài)。目錄和關(guān)聯(lián)的一致性控制器也與它們控制的私有LlCache和共享L2Cache片段在片上分布放置。本實(shí)用新型提供的用于多核處理器的一致性維護(hù)裝置包括如下功能部件 全局目錄(Global Directory),以粗向量的方式跟蹤數(shù)據(jù)所在節(jié)點(diǎn); 節(jié)點(diǎn)目錄(Node Directory),負(fù)責(zé)在節(jié)點(diǎn)內(nèi)跟蹤數(shù)據(jù)副本所在的內(nèi)核位置;節(jié)點(diǎn)目錄片段,負(fù)責(zé)在節(jié)點(diǎn)內(nèi)跟蹤數(shù)據(jù)副本所在的內(nèi)核位置;一個(gè)節(jié)點(diǎn)內(nèi)的所有節(jié)點(diǎn)目錄片段構(gòu)成該節(jié)點(diǎn)完整的節(jié)點(diǎn)目錄; 目錄控制器,包括節(jié)點(diǎn)目錄控制器和全局目錄控制器,用于接收、發(fā)送一致性交互消息,控制兩級(jí)目錄維護(hù)數(shù)據(jù)一致性。 節(jié)點(diǎn)預(yù)測(cè)Cache-NPC(Node Predicting Cache),用于保存距離請(qǐng)求內(nèi)核節(jié)點(diǎn)最近的有效目標(biāo)數(shù)據(jù)副本節(jié)點(diǎn),為發(fā)生缺失時(shí)的直接訪問提供歷史信息依據(jù); 節(jié)點(diǎn)共享歷史信息Cache-SHC(Sharing History Cache),用于保存節(jié)點(diǎn)對(duì)數(shù)據(jù)的共享歷史向量,為節(jié)點(diǎn)預(yù)測(cè)Cache的更新提供歷史信息依據(jù); 節(jié)點(diǎn)掛起指針-NHP(Node Hanging Pointer),用于在讀缺失過程中暫存讀缺失節(jié)點(diǎn)指針,為隱藏目錄訪問延遲提供支持; 最后寫節(jié)點(diǎn)指針-LWP (Last Writer Pointer),用于在基于讀缺失的NPC更新過程中指明SHV向量所在節(jié)點(diǎn)位置。當(dāng)數(shù)據(jù)處于S態(tài),并且該S態(tài)是從M態(tài)轉(zhuǎn)換而來時(shí),存有SHV信息的上一個(gè)寫操作節(jié)點(diǎn)已經(jīng)“淹沒”在多個(gè)S態(tài)節(jié)點(diǎn)中,導(dǎo)致無法定位SHV信息的位置。本實(shí)用新型為全局目錄增加一個(gè)LWP指針來跟蹤上一個(gè)寫操作節(jié)點(diǎn)。本實(shí)用新型一致性維護(hù)裝置所包含的多個(gè)功能部件的連接關(guān)系如圖15所示(I)處理器內(nèi)核與私有LlCache的連接用于訪存指令的數(shù)據(jù)訪問;(2)私有LlCache與節(jié)點(diǎn)目錄控制器之間的連接用于在LlCache缺失時(shí)傳送缺失數(shù)據(jù)地址、訪問節(jié)點(diǎn)目錄片段、跟蹤LlCache中的數(shù)據(jù)副本狀況;(3)節(jié)點(diǎn)目錄控制器與多個(gè)節(jié)點(diǎn)目錄片段的連接用與控制節(jié)點(diǎn)目錄對(duì)LlCache中數(shù)據(jù)的跟蹤;(4)節(jié)點(diǎn)目錄控制器與節(jié)點(diǎn)預(yù)測(cè)Cache間的連接用與數(shù)據(jù)在本節(jié)點(diǎn)內(nèi)所有LlCache中均未命中時(shí),獲取有效數(shù)據(jù)所在的最近節(jié)點(diǎn)的指針,根據(jù)該指針能夠進(jìn)行直接數(shù)據(jù)訪問;[0149](5)節(jié)點(diǎn)目錄控制器與路由器之間的連接用于傳送與節(jié)點(diǎn)內(nèi)其它內(nèi)核的節(jié)點(diǎn)目錄片段交互的控制信號(hào)、接收發(fā)送SHV信息、來自全局目錄的共享向量和更新NPC的信息等;(6)節(jié)點(diǎn)目錄控制器與節(jié)點(diǎn)共享歷史信息Cache-SHC之間的連接用于在發(fā)生寫操作時(shí)傳送來自其它節(jié)點(diǎn)的SHV信息和當(dāng)前全局目錄向量;(7)節(jié)點(diǎn)目錄控制器與本內(nèi)核全局目錄控制器之間的連接用于傳送當(dāng)前全局目錄
向量;(8)私有LlCache與共享L2Cache片段之間的連接用于LlCache缺失時(shí)訪問共享L2Cache ;(9)L2Cache片段與路由器之間的連接用于訪問其它共享L2Cache片段或者在共享L2Cache缺失時(shí)訪問主存; (10)L2Cache片段與全局目錄控制器之間的連接用于傳送缺失數(shù)據(jù)地址、訪問全局目錄、跟蹤L2Cache片段中的數(shù)據(jù)副本狀況;(11)全局目錄與全局目錄控制器之間的連接用于控制全局目錄對(duì)L2Cache片段中數(shù)據(jù)的跟蹤;(12)全局目錄控制器與路由器之間的連接用于傳送與其它節(jié)點(diǎn)的節(jié)點(diǎn)目錄連接的一致性交互的控制信號(hào)、缺失時(shí)提供的全局目錄信息和更新NPC時(shí)需要的當(dāng)前目錄向量?;诒緦?shí)用新型提供的一致性維護(hù)裝置,本實(shí)用新型還提供了一致性維護(hù)方法,具體實(shí)施方式
包括以下步驟(I)讀缺失一致性交互(a)為每個(gè)節(jié)點(diǎn)目錄片段(NDS)增加一個(gè)節(jié)點(diǎn)掛起指針NHP(Node HangingPointer),在全局目錄加入讀缺失節(jié)點(diǎn)信息前在數(shù)據(jù)提供節(jié)點(diǎn)中臨時(shí)保留讀缺失節(jié)點(diǎn)的“蹤跡”,該“蹤跡”的存在是數(shù)據(jù)提供節(jié)點(diǎn)發(fā)送請(qǐng)求數(shù)據(jù)的前提條件。如圖5 (a),設(shè)節(jié)點(diǎn)A中某內(nèi)核緩存了節(jié)點(diǎn)B請(qǐng)求的數(shù)據(jù)D副本,節(jié)點(diǎn)掛起的具體步驟包括 當(dāng)節(jié)點(diǎn)A收到來自節(jié)點(diǎn)B的數(shù)據(jù)請(qǐng)求時(shí),則將對(duì)應(yīng)NDS關(guān)聯(lián)的NHP指向節(jié)點(diǎn)B (掛起節(jié)點(diǎn)B); 然后向節(jié)點(diǎn)B發(fā)送數(shù)據(jù)D的同時(shí)也向全局目錄發(fā)送目錄更新請(qǐng)求; 全局目錄收到請(qǐng)求并加入節(jié)點(diǎn)B信息后返回一個(gè)確認(rèn)消息; 節(jié)點(diǎn)A收到該確認(rèn)消息后清除對(duì)應(yīng)NHP指針,節(jié)點(diǎn)掛起過程結(jié)束; 節(jié)點(diǎn)掛起只針對(duì)來自讀缺失節(jié)點(diǎn)的數(shù)據(jù)請(qǐng)求,對(duì)于來自全局目錄的請(qǐng)求不予掛起。(b)由于全局目錄收到節(jié)點(diǎn)A的目錄更新請(qǐng)求前并沒有被鎖定,仍可能處理其它寫操作。如果這時(shí)產(chǎn)生了一個(gè)對(duì)該請(qǐng)求數(shù)據(jù)的寫操作,則利用節(jié)點(diǎn)掛起指針進(jìn)行作廢操作。如圖5(b)所示,具體步驟包括 由于節(jié)點(diǎn)A存有請(qǐng)求數(shù)據(jù)副本,節(jié)點(diǎn)A會(huì)收到來自全局目錄的作廢消息; 節(jié)點(diǎn)A在作廢節(jié)點(diǎn)內(nèi)數(shù)據(jù)副本的同時(shí)根據(jù)相應(yīng)NHP的內(nèi)容也向節(jié)點(diǎn)B轉(zhuǎn)發(fā)該作廢消息; 節(jié)點(diǎn)B作廢掉剛得到的數(shù)據(jù)副本后向節(jié)點(diǎn)A返回作廢確認(rèn)消息; 節(jié)點(diǎn)A收到來自節(jié)點(diǎn)B的作廢確認(rèn)后向全局目錄發(fā)送作廢確認(rèn)消息,至此寫作廢過程結(jié)束。(c)如圖6,當(dāng)內(nèi)核發(fā)生讀缺失時(shí),一致性交互包括如下具體步驟 發(fā)生讀缺失的節(jié)點(diǎn)B內(nèi)核根據(jù)缺失數(shù)據(jù)地址按照權(quán)利要求(I) (C)的兩步目錄訪問方案訪問節(jié)點(diǎn)B目錄; 如果在節(jié)點(diǎn)目錄命中,則訪問節(jié)點(diǎn)B中內(nèi)核,并更新節(jié)點(diǎn)目錄; 如果節(jié)點(diǎn)目錄不命中,則查找節(jié)點(diǎn)B內(nèi)對(duì)應(yīng)NPC的預(yù)測(cè)信息,如果NPC不命中,則按照?qǐng)D13中3-hops讀操作流程訪問全局目錄,由全局目錄通知緩存有效數(shù)據(jù)副本的節(jié)點(diǎn)向請(qǐng)求內(nèi)核發(fā)送數(shù)據(jù),請(qǐng)求內(nèi)核收到數(shù)據(jù)后根據(jù)數(shù)據(jù)地址更新相應(yīng)的NDS,同時(shí)全局目錄加入節(jié)點(diǎn)B共享信息。 如果NPC命中,則根據(jù)CNP向預(yù)測(cè)節(jié)點(diǎn)A發(fā)出讀數(shù)據(jù)請(qǐng)求。節(jié)點(diǎn)A按照兩步目錄 訪問方案訪問節(jié)點(diǎn)內(nèi)目錄; 如果節(jié)點(diǎn)A內(nèi)目錄不命中則節(jié)點(diǎn)A將該請(qǐng)求轉(zhuǎn)發(fā)至該請(qǐng)求數(shù)據(jù)的全局目錄,剩余流程與3-hops讀操作相同; 如果在節(jié)點(diǎn)A內(nèi)目錄命中,則按照?qǐng)D5的節(jié)點(diǎn)掛起流程進(jìn)行處理。(d)當(dāng)片上Cache中不存在被請(qǐng)求數(shù)據(jù)副本時(shí)訪問主存獲得數(shù)據(jù)。(2)寫缺失一致性交互(a)當(dāng)寫缺失數(shù)據(jù)處于M、E狀態(tài),NPC命中,且對(duì)應(yīng)CNP預(yù)測(cè)正確時(shí),能將寫缺失一致性交互過程縮短為2-hops。當(dāng)NPC不命中時(shí),按照3-hops流程處理。如圖7,包括如下具體步驟 寫缺失內(nèi)核同時(shí)向全局目錄和NPC預(yù)測(cè)節(jié)點(diǎn)發(fā)出兩個(gè)訪問請(qǐng)求; 發(fā)往全局目錄的請(qǐng)求查詢到數(shù)據(jù)D狀態(tài)為M或E后,全局目錄忽略該請(qǐng)求,如圖7中的Ia消息; 根據(jù)NPC中CNP預(yù)測(cè)發(fā)出的請(qǐng)求在預(yù)測(cè)正確的情況下將直接作廢掉處于M或E狀態(tài)的唯一數(shù)據(jù)D副本,實(shí)現(xiàn)了 2-hops寫缺失一致性交互,如圖7(a); 在NPC中CNP預(yù)測(cè)錯(cuò)誤的情況下請(qǐng)求將被錯(cuò)誤預(yù)測(cè)節(jié)點(diǎn)轉(zhuǎn)發(fā)到全局目錄進(jìn)行處理,整個(gè)過程為4-hops交互,錯(cuò)誤預(yù)測(cè)代價(jià)為1-hops,如圖7(b)。(b)對(duì)處于S狀態(tài)的寫缺失數(shù)據(jù)仍維持4-hops交互,只是交互過程稍有不同。如圖8,包括如下具體步驟 對(duì)于狀態(tài)為S的寫缺失數(shù)據(jù),寫缺失內(nèi)核也同時(shí)向全局目錄和NPC預(yù)測(cè)節(jié)點(diǎn)發(fā)出兩個(gè)訪問請(qǐng)求; 發(fā)往全局目錄的請(qǐng)求查詢到數(shù)據(jù)D的狀態(tài)為S后,繼續(xù)按照?qǐng)D14中4-hops交互流程處理; 發(fā)往NPC預(yù)測(cè)節(jié)點(diǎn)的請(qǐng)求在預(yù)測(cè)正確的情況下將查詢到數(shù)據(jù)D的狀態(tài)為S,此后該數(shù)據(jù)D共享節(jié)點(diǎn)將忽略該請(qǐng)求,如圖8 (a)中Ib消息。 在NPC預(yù)測(cè)錯(cuò)誤的情況下,請(qǐng)求將被錯(cuò)誤預(yù)測(cè)節(jié)點(diǎn)轉(zhuǎn)發(fā)到全局目錄,而全局目錄將忽略該轉(zhuǎn)發(fā)的請(qǐng)求,如圖8(b)中2c消息。(c)對(duì)處于I狀態(tài)的寫缺失數(shù)據(jù)將從下一級(jí)存儲(chǔ)器先讀入數(shù)據(jù),再進(jìn)行修改。(d)在寫命中的情況下,仍需訪問全局目錄將其它副本作廢。(3)替換[0192](a)替換處于M或E狀態(tài)的數(shù)據(jù)時(shí),包括如下具體步驟 當(dāng)被替換的數(shù)據(jù)處于M或E狀態(tài)時(shí),片上只存在唯一數(shù)據(jù)副本,發(fā)生替換的內(nèi)核先發(fā)送消息剔除該數(shù)據(jù)所在節(jié)點(diǎn)目錄中的內(nèi)核信息和全局目錄中對(duì)應(yīng)的節(jié)點(diǎn)信息; 發(fā)生替換的內(nèi)核收到確認(rèn)消息后進(jìn)行替換操作; M狀態(tài)數(shù)據(jù)替換前還需要寫回主存。(b)替換處于S狀態(tài)的數(shù)據(jù)時(shí),根據(jù)節(jié)點(diǎn)中被替換數(shù)據(jù)的副本數(shù)量分為兩種情況。包括如下具體步驟 第一種情況,所在的節(jié)點(diǎn)中只存在唯一副本,替換過程與E狀態(tài)類似; 第二種情況,所在的節(jié)點(diǎn)中存在多個(gè)副本。只需要通知節(jié)點(diǎn)目錄剔除發(fā)生替換操 作的內(nèi)核信息后進(jìn)行替換,而無需通知全局目錄。(c)替換操作可能引起NPC預(yù)測(cè)訪問的撲空。在讀、寫缺失時(shí),該類撲空均按照NPC預(yù)測(cè)錯(cuò)誤處理?;诒緦?shí)用新型提供的一致性維護(hù)裝置,本實(shí)用新型還為一致性維護(hù)方法配套提供了歷史信息更新算法,具體實(shí)施方式
包括以下步驟(I)基于讀缺失的NPC更新當(dāng)發(fā)生讀缺失時(shí),新出現(xiàn)的數(shù)據(jù)共享節(jié)點(diǎn)將縮短部分歷史共享節(jié)點(diǎn)與有效數(shù)據(jù)副本節(jié)點(diǎn)的最小距離,而另一部分則保持不變。本實(shí)用新型只對(duì)前者的NPC內(nèi)容進(jìn)行精確更新,不會(huì)發(fā)出多余的更新消息,保證更新后歷史共享節(jié)點(diǎn)與其預(yù)測(cè)節(jié)點(diǎn)間的距離小于其與所有當(dāng)前數(shù)據(jù)共享節(jié)點(diǎn)間的距離。如圖9,根據(jù)讀缺失內(nèi)核的兩種數(shù)據(jù)狀態(tài)變化1 — E和I — S,NPC更新包括以下具體步驟(a)當(dāng)讀缺失內(nèi)核的數(shù)據(jù)狀態(tài)變化為I — E時(shí),數(shù)據(jù)從下一級(jí)存儲(chǔ)器中取入,SHV信息還未生成,無須更新NPC ;(b)當(dāng)讀缺失內(nèi)核的數(shù)據(jù)狀態(tài)變化為I — S時(shí),如果數(shù)據(jù)由片上處于E狀態(tài)節(jié)點(diǎn)提供時(shí),SHV信息不存在,也無須更新NPC ;(c)當(dāng)讀缺失內(nèi)核的數(shù)據(jù)狀態(tài)變化為I — S時(shí),如果數(shù)據(jù)由片上處于M或S狀態(tài)(該S狀態(tài)由M狀態(tài),而非E狀態(tài)轉(zhuǎn)換而來)節(jié)點(diǎn)提供時(shí),SHV信息已經(jīng)存在,故本實(shí)用新型只對(duì)該情況下發(fā)生的讀缺失進(jìn)行NPC更新,包括以下具體步驟 如圖9 (a),當(dāng)讀缺失節(jié)點(diǎn)NPC命中時(shí),全局目錄向數(shù)據(jù)提供節(jié)點(diǎn)發(fā)出目錄更新確認(rèn)消息的同時(shí)也將GDV信息發(fā)送到LWP指向的OldWriter節(jié)點(diǎn),在那里將進(jìn)行兩次過濾操作; 第一次過濾先用⑶V與SHV信息進(jìn)行“AND”操作,再將結(jié)果與SHV信息進(jìn)行“X0R”操作,過濾掉當(dāng)前已經(jīng)緩存數(shù)據(jù)副本的歷史共享節(jié)點(diǎn); 第二次過濾對(duì)SHV指向的歷史共享節(jié)點(diǎn)與數(shù)據(jù)提供節(jié)點(diǎn)和讀缺失節(jié)點(diǎn)之間的距離進(jìn)行計(jì)算,過濾掉所有與讀缺失節(jié)點(diǎn)間距離大于與數(shù)據(jù)提供節(jié)點(diǎn)間距離的歷史共享節(jié)點(diǎn)。節(jié)點(diǎn)間距離的計(jì)算方法如下對(duì)于一個(gè)有2nX2nf節(jié)點(diǎn)的2-D MESH CMP來說,需要2n位二進(jìn)制數(shù)對(duì)節(jié)點(diǎn)進(jìn)行編碼。編碼的高n位指明節(jié)點(diǎn)位于哪一行,低n位指明節(jié)點(diǎn)位于哪一列。設(shè)節(jié)點(diǎn)A和B的編碼分別為a2lria2n_2. . . 和. . Id1Idci,則節(jié)點(diǎn)A與B之間的距尚為 I b2n—ib2n—2. bn—a2n—i£i2n—2. £in I +1 bn—ibn—2. b?!阨n—i£in—2. £1。I ; 這兩次過濾操作可并行進(jìn)行,最后將兩次過濾的結(jié)果進(jìn)行“AND”操作生成最終需要更新的歷史共享節(jié)點(diǎn)信息,如圖9(a); Oldffriter節(jié)點(diǎn)(上一個(gè)寫操作節(jié)點(diǎn))根據(jù)該最終SHV進(jìn)行NPC的更新。更新時(shí)OldWriter節(jié)點(diǎn)將讀缺失節(jié)點(diǎn)編碼發(fā)送到需要更新的歷史共享節(jié)點(diǎn)中; 歷史共享節(jié)點(diǎn)節(jié)點(diǎn)收到更新消息后用讀缺失節(jié)點(diǎn)編碼與自身NPC中存儲(chǔ)的CNP節(jié)點(diǎn)編碼做距離比較。如果讀缺失節(jié)點(diǎn)與歷史共享節(jié)點(diǎn)間的距離小于CNP節(jié)點(diǎn)與歷史共享節(jié)點(diǎn)間的距離,則用讀缺失節(jié)點(diǎn)編碼更新歷史共享節(jié)點(diǎn)NPC中存儲(chǔ)的CNP指針,否則,保持原CNP內(nèi)容不變。如圖9(b)中,假設(shè)S狀態(tài)節(jié)點(diǎn)SI是距離讀缺失節(jié)點(diǎn)R最近的有效數(shù)據(jù)節(jié)點(diǎn),則所有深色區(qū)域節(jié)點(diǎn)與R節(jié)點(diǎn)的距離均小于與SI節(jié)點(diǎn)的距離,所有位于深色區(qū)域且未緩存讀缺失數(shù)據(jù)副本的HS節(jié)點(diǎn)都應(yīng)更新其NPC信息,如HS3 (CNP = S2)、HS4 (CNP = SI)和HS5(CNP = SI)。更新時(shí)發(fā)現(xiàn)HS3雖然位于深色區(qū)域,但HS3與其存儲(chǔ)的CNP指向的S2節(jié)點(diǎn)間距離仍小于HS3與R間的距離,故保持HS3節(jié)點(diǎn)原先存儲(chǔ)的CNP不變; 當(dāng)讀缺失節(jié)點(diǎn)NPC不命中或命中但預(yù)測(cè)錯(cuò)誤時(shí),全局目錄響應(yīng)請(qǐng)求并通知距離 讀缺失節(jié)點(diǎn)最近的有效數(shù)據(jù)副本節(jié)點(diǎn)發(fā)送數(shù)據(jù)。數(shù)據(jù)發(fā)送節(jié)點(diǎn)向全局目錄返回確認(rèn)消息后,全局目錄根據(jù)LWP向OldWriter節(jié)點(diǎn)發(fā)送⑶V,并開始與NPC命中相同的更新過程; 如果LWP指向的OldWriter節(jié)點(diǎn)中讀缺失數(shù)據(jù)副本和對(duì)應(yīng)SHV信息已經(jīng)被替換出去,則本次NPC更新終止; 如果LWP為空,當(dāng)前讀缺失數(shù)據(jù)處于S狀態(tài),這說明該S是由E狀態(tài)轉(zhuǎn)換而來,SHV信息不存在,本次NPC更新終止。(2)基于寫操作的NPC更新(a)如圖10(a) (b),當(dāng)數(shù)據(jù)D處于M狀態(tài)時(shí),NPC更新包括以下具體步驟 OldWriter節(jié)點(diǎn)在收到NewWriter節(jié)點(diǎn)(當(dāng)前寫缺失節(jié)點(diǎn))的請(qǐng)求后,作廢自身數(shù)據(jù)D副本并在本節(jié)點(diǎn)對(duì)應(yīng)NPC中分配空間,將CNP指向NewWriter節(jié)點(diǎn); 接著根據(jù)OldWriter節(jié)點(diǎn)對(duì)應(yīng)SHC中的SHV信息更新歷史共享節(jié)點(diǎn),將它們的數(shù)據(jù)D CNP信息更新為NewWriter節(jié)點(diǎn); Oldffriter節(jié)點(diǎn)將SHV信息傳遞給NewWriter節(jié)點(diǎn); Newffriter節(jié)點(diǎn)將收到來自全局目錄的數(shù)據(jù)D當(dāng)前共享信息⑶V (GlobalDirectory Vector)和來自O(shè)ldWriter節(jié)點(diǎn)的SHV信息,NewWriter節(jié)點(diǎn)將這兩者做“0 R”操作,將結(jié)果作為新的SHV存儲(chǔ)在節(jié)點(diǎn)SHC中。(b)如圖10(c),當(dāng)數(shù)據(jù)D處于S狀態(tài)時(shí),NPC更新包括以下具體步驟 當(dāng)數(shù)據(jù)D處于S狀態(tài)時(shí),NPC的更新流程與M狀態(tài)時(shí)類似。不同的是,在有多個(gè)S狀態(tài)節(jié)點(diǎn)時(shí),需要這些S狀態(tài)節(jié)點(diǎn)同時(shí)訪問自身的SHC,并從發(fā)生命中的OldWriter節(jié)點(diǎn)中取出SHV送往NewWriter節(jié)點(diǎn); 如果所有S狀態(tài)節(jié)點(diǎn)的SHC均未命中,說明OldWriter節(jié)點(diǎn)中所有數(shù)據(jù)D副本和對(duì)應(yīng)SHV已經(jīng)被替換出LlCache和SHC,這時(shí)則不用向NewWriter節(jié)點(diǎn)發(fā)送SHV ; Newffriter節(jié)點(diǎn)直接將收到的⑶V作為新的SHV信息; S狀態(tài)時(shí)如果CNP預(yù)測(cè)錯(cuò)誤,由錯(cuò)誤節(jié)點(diǎn)轉(zhuǎn)發(fā)的請(qǐng)求不會(huì)被全局目錄響應(yīng),因此NPC更新流程與CNP預(yù)測(cè)正確時(shí)相同。(c)當(dāng)數(shù)據(jù)D處于E狀態(tài)時(shí),NPC更新包括以下具體步驟 當(dāng)數(shù)據(jù)D處于E狀態(tài)時(shí),數(shù)據(jù)D的SHV信息沒有生成,如果這時(shí)發(fā)生數(shù)據(jù)D寫操作,緩存數(shù)據(jù)D唯一副本的節(jié)點(diǎn)收到NewWriter節(jié)點(diǎn)的請(qǐng)求后不用進(jìn)行歷史共享節(jié)點(diǎn)的NPC更新,也不用進(jìn)行自身SHV信息的傳遞。 數(shù)據(jù)副本所在節(jié)點(diǎn)只需作廢自身數(shù)據(jù)D副本并在本節(jié)點(diǎn)對(duì)應(yīng)NPC中分配空間,將CNP指向NewWriter節(jié)點(diǎn)即可;^ewWriter節(jié)點(diǎn)只會(huì)收到來自數(shù)據(jù)D全局目錄的⑶V信息,并直接將其作為新的SHV信息。(d)發(fā)生寫命中時(shí),如果上一個(gè)寫操作節(jié)點(diǎn)與當(dāng)前寫操作節(jié)點(diǎn)相同,則無需更新歷史信息。如果上一個(gè)寫操作節(jié)點(diǎn)與當(dāng)前寫操作節(jié)點(diǎn)不同,則更新過程與發(fā)生寫缺失時(shí)相同。(3) NPC 更新時(shí)的 CNP 與 SHV(a)當(dāng)一個(gè)數(shù)據(jù)D副本存在于某節(jié)點(diǎn)的LlCache中時(shí),該節(jié)點(diǎn)對(duì)應(yīng)的NPC中無需保存該數(shù)據(jù)的CNP信息,因?yàn)槠浔旧砭褪窃撚行?shù)據(jù)的最近節(jié)點(diǎn);(b)只有當(dāng)節(jié)點(diǎn)中所有數(shù)據(jù)D副本都被作廢掉(替換操作不分配CNP)時(shí)才在NPC中為數(shù)據(jù)D分配CNP指針,這樣能提升NPC空間的利用率;(c)對(duì)數(shù)據(jù)D來說,其對(duì)應(yīng)SHV信息在數(shù)據(jù)D發(fā)生第一個(gè)寫操作時(shí)首次出現(xiàn),并隨后續(xù)寫操作節(jié)點(diǎn)傳遞;(d)當(dāng)發(fā)生替換操作,并且被替換數(shù)據(jù)與其對(duì)應(yīng)SHV信息位于同一內(nèi)核時(shí),SHV信息也從SHC中被替換;(e)對(duì)LlCache進(jìn)行替換操作時(shí),優(yōu)先替換那些沒有在SHC中緩存對(duì)應(yīng)SHV信息的數(shù)據(jù)。以上實(shí)施方式僅用于說明本實(shí)用新型,而非對(duì)本實(shí)用新型的限制,相關(guān)技術(shù)領(lǐng)域的科研人員,在不脫離本實(shí)用新型精神和范圍的情況下,還可以做出各種變化和變型,因此,所有等同的技術(shù)方案也屬于本實(shí)用新型的范疇,本實(shí)用新型的專利保護(hù)范圍應(yīng)由權(quán)力要求限定。
權(quán)利要求1.一種用于多核處理器的一致性維護(hù)裝置,其特征在于,包括若干處理器內(nèi)核和片上網(wǎng)絡(luò);所述若干處理器內(nèi)核均連接片上網(wǎng)絡(luò);所述處理器內(nèi)核包括路由器。
2.根據(jù)權(quán)利要求I所述的ー種用于多核處理器的一致性維護(hù)裝置,其特征在于,所述處理器內(nèi)核通過路由器連接所述片上網(wǎng)絡(luò)。
3.根據(jù)權(quán)利要求I所述的ー種用于多核處理器的一致性維護(hù)裝置,其特征在于,所述若干處理器內(nèi)核構(gòu)成包含多個(gè)節(jié)點(diǎn)的ニ維網(wǎng)絡(luò)矩陣;每個(gè)節(jié)點(diǎn)包含2n個(gè)處理器內(nèi)核,n為大于等于I的正整數(shù),處理器內(nèi)核的個(gè)數(shù)為2n的整數(shù)倍。
專利摘要本實(shí)用新型公開了一種用于多核處理器的一致性維護(hù)裝置,包括若干處理器內(nèi)核和片上網(wǎng)絡(luò);所述若干處理器內(nèi)核均連接片上網(wǎng)絡(luò);所述處理器內(nèi)核包括路由器。在發(fā)生讀、寫缺失時(shí)根據(jù)節(jié)點(diǎn)預(yù)測(cè)緩存單元直接預(yù)測(cè)訪問與讀、寫缺失內(nèi)核最近的有效數(shù)據(jù)副本節(jié)點(diǎn),并利用節(jié)點(diǎn)掛起指針單元將更新目錄步驟推遲到數(shù)據(jù)訪問結(jié)束以后進(jìn)行,從而完全隱藏目錄訪問延遲,提升了訪存效率。
文檔編號(hào)G06F12/08GK202563494SQ20112038085
公開日2012年11月28日 申請(qǐng)日期2011年10月9日 優(yōu)先權(quán)日2011年10月9日
發(fā)明者張駿, 趙季中, 梅魁志 申請(qǐng)人:西安交通大學(xué)