欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

目錄協(xié)議對多處理器結(jié)點內(nèi)臟數(shù)據(jù)共享的支持方法

文檔序號:7614024閱讀:258來源:國知局
專利名稱:目錄協(xié)議對多處理器結(jié)點內(nèi)臟數(shù)據(jù)共享的支持方法
技術(shù)領(lǐng)域
本發(fā)明涉及CC-NUMA(Cache Coherent-Non Uniform Memory Access支持Cache一致性協(xié)議的非均勻存儲訪問的分布式共享存儲系統(tǒng)結(jié)構(gòu))系統(tǒng)中數(shù)據(jù)共享方法,尤其是支持結(jié)點內(nèi)多CPU通過總線監(jiān)聽方式構(gòu)造CC-NUMA系統(tǒng)中基于目錄的Cache一致性協(xié)議對數(shù)據(jù)共享的實現(xiàn)方法。
背景技術(shù)
目前基于SMP(Symmetrical Multi-Processing)的CC-NUMA系統(tǒng)的一致性協(xié)議大部分采用單層目錄協(xié)議,比如SGI的Origin 2000。該類協(xié)議一般通過通信輔助部件(CommunicationAssist)查找對應(yīng)的目錄項信息來進(jìn)行一致性處理,實現(xiàn)結(jié)點內(nèi)數(shù)據(jù)的共享。這種實現(xiàn)方法雖然簡單,但嚴(yán)重犧牲了結(jié)點內(nèi)Cache與Cache之間數(shù)據(jù)共享的潛在優(yōu)勢,無法充分利用結(jié)點內(nèi)的資源。基于SMP的CC-NUMA系統(tǒng)的另一種比較常見的實現(xiàn)方法是采用兩層協(xié)議方式,結(jié)點間采用一層協(xié)議,結(jié)點內(nèi)也采用一層協(xié)議,兩層協(xié)議的類型可以相同也可以不同。一種常用的結(jié)構(gòu)是結(jié)點內(nèi)采用監(jiān)聽協(xié)議,結(jié)點間采用目錄協(xié)議,這種協(xié)議方式的優(yōu)勢在于1.實現(xiàn)了結(jié)點內(nèi)高速緩存與高速緩存之間數(shù)據(jù)的共享;2.結(jié)點內(nèi)的通信代價更低;3.能夠充分挖掘數(shù)據(jù)的空間局部性和時間局部性,使得請求盡量在結(jié)點內(nèi)得到處理,減少對遠(yuǎn)程結(jié)點的訪問次數(shù);4.能夠合并結(jié)點內(nèi)的請求,減少網(wǎng)絡(luò)上數(shù)據(jù)的通信量;5.能利用層次封裝的優(yōu)勢;在監(jiān)聽-目錄兩層協(xié)議系統(tǒng)中,監(jiān)聽協(xié)議是指MSI(Modified,Shared,Invalid)協(xié)議,處理器流出的請求包括共享讀(READ_SH)、獨占讀(READ_OWN)、寫更新(UPGRADE)和寫回(WB)請求。各請求的產(chǎn)生情況是處理器在出現(xiàn)讀失效的情況下產(chǎn)生READ_SH請求;寫失效的情況下產(chǎn)生READ_OWN請求;UPGRADE請求是由擁有共享態(tài)數(shù)據(jù)塊的處理器發(fā)出的獲得數(shù)據(jù)塊所有權(quán)的請求;WB請求用于將Cache塊數(shù)據(jù)寫回存儲器。
采用監(jiān)聽-目錄兩層協(xié)議方式的系統(tǒng)對以上各種請求的處理與單層目錄協(xié)議的不同之處在于(1)目錄塊處于專有狀態(tài)時對READ_OWN請求的處理采用監(jiān)聽-目錄兩層協(xié)議方式的系統(tǒng)對READ_OWN請求的處理過程是請求方處理器流出READ_OWN請求,結(jié)點內(nèi)的其它處理器監(jiān)聽總線,如果某處理器有臟副本,就由擁有臟副本的處理器流出帶數(shù)據(jù)的響應(yīng),該處理器的狀態(tài)變?yōu)闊o效,請求方處理器接收響應(yīng)并將處理器的狀態(tài)由無效變?yōu)榕K。該請求在結(jié)點內(nèi)完成,整個處理過程由監(jiān)聽協(xié)議獨立完成,不需要修改目錄塊。如果結(jié)點內(nèi)其它處理器不存在臟副本,就將請求發(fā)送給Home結(jié)點,其處理方式和單層目錄協(xié)議的相同。
(2)目錄塊處于專有狀態(tài)時對READ_SH請求的處理當(dāng)目錄塊處于專有狀態(tài)時,監(jiān)聽-目錄兩層協(xié)議方式的系統(tǒng)對READ_SH請求的處理方式為如果沒有監(jiān)聽到臟副本,其處理方式和單層目錄協(xié)議的相同。否則,就要使用監(jiān)聽協(xié)議來進(jìn)行一致性處理。對READ_SH請求的處理流程是擁有臟副本的處理器流出數(shù)據(jù),對應(yīng)Cache塊的狀態(tài)由臟變?yōu)闊o效,請求方處理器接收數(shù)據(jù)并將Cache塊的狀態(tài)由無效變?yōu)楣蚕?結(jié)點內(nèi)唯一的數(shù)據(jù)副本,且最新的數(shù)據(jù)沒有寫回存儲器)。此時目錄塊的狀態(tài)仍為專有,如果不采取有效的機(jī)制將臟副本寫回存儲器并修改目錄塊的狀態(tài)就會出現(xiàn)一致性協(xié)議的失效。因為如果接下來再有外部或內(nèi)部結(jié)點對該塊數(shù)據(jù)發(fā)生讀寫請求時,就會出現(xiàn)擁有者不確定的問題(因為擁有該Cache塊最新數(shù)據(jù)的處理器的狀態(tài)為共享,而處理器只有在臟狀態(tài)時才能流出數(shù)據(jù)),導(dǎo)致系統(tǒng)內(nèi)一致性協(xié)議的失效。目前還沒有公開的資料來解決這個技術(shù)問題。如何在監(jiān)聽-目錄兩層協(xié)議方式的系統(tǒng)中實現(xiàn)正確、有效的數(shù)據(jù)共享,是長期困繞人們的難點問題。
在一致性協(xié)議的實現(xiàn)時會用到下列定義MSI的監(jiān)聽協(xié)議中,Cache塊可能出現(xiàn)的狀態(tài)有●無效(Invalid)該處理器的Cache塊沒有此塊的拷貝。
●共享(Shared)多個處理器的Cache塊有該塊數(shù)據(jù)的拷貝。
●臟(Modified)只有一個處理器有此塊數(shù)據(jù)的拷貝,該處理器稱為此塊的擁有者。
目錄協(xié)議中,目錄塊可能出現(xiàn)的狀態(tài)有●未緩沖(Dir_Unowned)所有處理器的Cache塊都沒有此塊的拷貝。
●共享(Dir_Shared)在一個或多個處理器上具有此塊數(shù)據(jù)的拷貝,且在主存中的值是最新值。
●專有(Dir_Private)僅在一個處理器有此塊數(shù)據(jù)的拷貝,且已對此塊進(jìn)行了寫操作,而主存的拷貝仍是舊的。這個處理器結(jié)點稱為此塊的擁有者。
●忙(Dir_Busy)表明目錄正在處理有關(guān)該數(shù)據(jù)塊的請求,不能馬上處理現(xiàn)在的請求。
對于一個給定的高速緩存或存儲器塊Home結(jié)點包含了該塊的主存儲器所在的結(jié)點。
臟結(jié)點其高速緩存中有塊的副本并處于專有狀態(tài)的結(jié)點。一個塊的Home結(jié)點和臟結(jié)點可能是一個。
臟副本處于臟狀態(tài)的Cache塊數(shù)據(jù)。只有Cache塊中擁有數(shù)據(jù)塊的最新值,存儲器中的數(shù)據(jù)是舊的。
擁有者結(jié)點某個處理器保持塊的有效副本,在需要時能夠提供數(shù)據(jù)的結(jié)點。在目錄協(xié)議中可能是Home結(jié)點或臟結(jié)點。
請求結(jié)點發(fā)出對塊請求的處理器所在的結(jié)點。

發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是在采用監(jiān)聽-目錄兩層協(xié)議方式的基于SMP的CC-NUMA系統(tǒng)中,避免對臟狀態(tài)的數(shù)據(jù)共享后帶來的擁有者不確定情況,實現(xiàn)結(jié)點內(nèi)數(shù)據(jù)的提前共享。
本發(fā)明的技術(shù)方案是在目錄協(xié)議的基礎(chǔ)上,在結(jié)點控制器NC的硬件邏輯中設(shè)計WSRM(Write to Shared for Read Modified Cacheline)請求產(chǎn)生邏輯,由WSRM請求產(chǎn)生邏輯監(jiān)聽總線,當(dāng)監(jiān)聽到總線上出現(xiàn)臟命中且請求的類型為READ_SH時,NC接收總線上的臟副本,產(chǎn)生一個可以對目錄塊進(jìn)行操作的WSRM請求,由Home結(jié)點所在的NC對WSRM請求進(jìn)行相應(yīng)的處理,將最新副本寫回存儲器,實現(xiàn)未寫回存儲器的最新數(shù)據(jù)在結(jié)點內(nèi)的多個處理器中的提前共享,解決擁有者不確定問題,使基于SMP的CC-NUMA系統(tǒng)在監(jiān)聽-目錄兩層協(xié)議方式下正常的運行。
WSRM請求的數(shù)據(jù)結(jié)構(gòu)包括CMD項、W項和T項。CMD項用來標(biāo)志W(wǎng)SRM請求,W項和T項是對WSRM請求的響應(yīng)類型和是否與外部請求產(chǎn)生沖突的標(biāo)志。如果W=1,代表收到一個忙應(yīng)答WSRMBAK;否則,表示收到正常的應(yīng)答WSRMEAK。如果T=1,代表收到來自外部的Intervention請求;T=0代表沒有收到外部的沖突。
NC的硬件邏輯分為三大部分第一部分實現(xiàn)由CPU流向NC的通信,為邏輯輸出部分,包括WSRM請求產(chǎn)生邏輯、輸出命令(命令包括請求和響應(yīng)兩種類型)處理邏輯和輸出報文FIFO;第二部分實現(xiàn)由NC流向CPU的通信,為邏輯輸入部分,包括輸入報文FIFO和輸入命令處理邏輯;第三部分是未決請求緩沖區(qū)。
WSRM請求產(chǎn)生邏輯在NC監(jiān)聽到總線上出現(xiàn)臟命中且請求的類型是READ_SH時,接收總線上的臟副本,產(chǎn)生相應(yīng)的WSRM請求并送入輸出命令處理邏輯。
輸出命令處理邏輯不僅接收WSRM請求產(chǎn)生邏輯生成的WSRM請求,而且接收由CPU直接流出的其他命令,并統(tǒng)一進(jìn)行處理。如果是響應(yīng)類型的命令,則直接將命令形成內(nèi)部報文送入輸出報文FIFO模塊。如果流出的是請求類型的命令,且該請求和未決緩沖區(qū)模塊中的任何一項請求不沖突,則將命令形成內(nèi)部報文送入輸出報文FIFO等待發(fā)送,同時將該請求存入未決請求緩沖區(qū),置等待完成標(biāo)志;如果請求和未決請求緩沖區(qū)中的某個等待完成的請求沖突,則將該請求放入未決請求緩沖區(qū)并置掛起標(biāo)志,等待沖突解除后再次處理。
輸入命令處理邏輯首先將輸入報文FIFO送來的報文轉(zhuǎn)換成命令格式,再與未決請求緩沖區(qū)進(jìn)行地址匹配,決定如何處理。如果是響應(yīng)類型的命令,在未決請求緩沖區(qū)中找出和該響應(yīng)匹配的請求項,將其從緩沖區(qū)刪除,同時在緩沖區(qū)內(nèi)檢查是否存在被該響應(yīng)對應(yīng)的請求掛起的其它請求,如果有,就將這些被掛起的請求解掛,來自結(jié)點內(nèi)的請求送入輸出命令處理邏輯,來自外部結(jié)點的請求送入輸入命令處理邏輯。如果是請求類型的命令,則判斷是否與未決請求緩沖區(qū)中的任何一項沖突如果有沖突,就將該請求送入未決請求緩沖區(qū)并掛起,直到?jīng)_突處理完再流入輸入命令處理邏輯進(jìn)行處理;否則直接將該請求通過總線送入處理器進(jìn)行處理。
未決請求緩沖區(qū)記錄所有結(jié)點內(nèi)還沒有完成的和流入該結(jié)點的存在沖突的外部請求,提供輸出命令處理邏輯和輸入命令處理邏輯的訪問接口,返回命令地址的匹配標(biāo)識信息。未決緩沖區(qū)中每一項的數(shù)據(jù)結(jié)構(gòu)包括有效位Valid,目的地址Address,請求類型CMD,掛起標(biāo)志位Hold,響應(yīng)類型W,沖突標(biāo)志位T。置位Valid項說明該請求有效;否則無效。Address項表明該請求需要的數(shù)據(jù)塊在存儲器中的地址。CMD項用于說明請求的類型,包括READ_SH、READ_OWN、UPGRADE、WB、WSRM請求。置位Hold項說明該請求會被掛起,直到該位置為0,表明解掛后才能處理該請求。T項表示該請求是否有沖突請求命中該請求,需要進(jìn)行沖突處理。如果輸出命令處理邏輯進(jìn)行訪問,則未決請求緩沖區(qū)查找所有等待完成的請求,如果沒有地址相同的,則返回沒有沖突的標(biāo)識(T=0),通知輸出命令處理邏輯可以流出命令,如果有地址相同的,則返回有沖突的標(biāo)識(T=1),通知輸出命令處理邏輯掛起命令;如果輸入命令處理邏輯進(jìn)行訪問,則未決命令緩沖區(qū)對所有等待完成的命令進(jìn)行地址比較,找到地址匹配的命令,提供信息返回給輸入命令處理邏輯,同時對被掛起的命令進(jìn)行地址比較,找到地址匹配且被掛起的命令項,根據(jù)命令的來源返回給對應(yīng)的輸入或輸出命令處理邏輯。
輸出報文FIFO存放流出NC的報文,并等待流到網(wǎng)絡(luò)上去。
輸入報文FIFO存放從網(wǎng)絡(luò)上流入NC等待處理的報文。
WSRM請求由Home結(jié)點所在的NC進(jìn)行相應(yīng)的處理。具體過程是WSRM請求由請求結(jié)點L的NC發(fā)出,Home結(jié)點H的NC收到WSRM請求后,如果目錄塊的狀態(tài)為Dir_Private狀態(tài),則數(shù)據(jù)寫入存儲器,目錄狀態(tài)轉(zhuǎn)換為Dir_Shared狀態(tài);如果請求結(jié)點L的NC收到WSRMEAK響應(yīng)(即HOME處于Dir_Private時的應(yīng)答),則該NC直接釋放未決緩沖區(qū);如果請求結(jié)點L的NC收到WSRMBAK(目錄處于Dir_Busy時的應(yīng)答),則該NC釋放未決緩沖區(qū)時,需判斷該未決緩沖區(qū)項的T是否為1(即沖突的Intervention請求是否收到),如果T=0,則NC不能釋放該請求的資源,因為NC需要等待處理沖突的Intervention請求,并可能要返回應(yīng)答給其他請求者。在T=1時,表示沖突處理已經(jīng)完成,NC在收到WSRM請求對應(yīng)的應(yīng)答WSRMBAK后釋放WSRM請求占用的數(shù)據(jù)緩沖區(qū)。這種對結(jié)點內(nèi)臟數(shù)據(jù)共享的處理方法實現(xiàn)了未寫回存儲器的最新數(shù)據(jù)在結(jié)點內(nèi)的多個處理器中的提前共享,能充分利用結(jié)點內(nèi)的資源,實現(xiàn)起來簡單且方便。
采用WSRM請求的處理方法,能使CPU將最新的數(shù)據(jù)副本流出并寫回存儲器,但在完成對HOME結(jié)點存儲器的修改之前,該NC仍然是該Cache塊的擁有者,必須處理由于此種情況帶來的沖突,具體的處理方法是(1)CPU請求和WSRM請求的沖突處理在NC產(chǎn)生WSRM請求時,擁有數(shù)據(jù)的CPU的Cache狀態(tài)處于Shared狀態(tài)。如果擁有數(shù)據(jù)的CPU需要進(jìn)行修改,則會流出沖突的UPGRADE請求;如果其他的CPU需要數(shù)據(jù),則會流出沖突READ_SH和READ_OWN請求。采取的CPU請求和WSRM請求沖突處理的原則是暫停所有沖突的UPGRADE、READ_SH或者READ_OWN的流出,等待WSRM請求完成之后,恢復(fù)沖突請求的流出。
(2)Intervention請求與WSRM請求的沖突處理按照目錄協(xié)議,流出WSRM請求的結(jié)點在WSRM未到達(dá)HOME結(jié)點之前,該結(jié)點仍是該Cache塊的擁有者,有可能收到HOME結(jié)點轉(zhuǎn)發(fā)的Intervention請求,NC需要對沖突進(jìn)行處理。
如果NC收到Intervention請求,發(fā)現(xiàn)和WSRM請求沖突,則NC處理沖突的Intervention請求,同時置WSRM請求的T=1,等待WSRM請求的應(yīng)答WSRMBAK收到后,撤銷WSRM請求。
a)如果沖突的Intervention請求是IREAD_SH(Intervention of REAS_SH),則NC不需處理(不失效CPU的Cache數(shù)據(jù));b)如果沖突的Intervention請求是IREAD_OWN(Intervention ofREAS_OWN),則NC將IREAD_OWN轉(zhuǎn)為INVAL,必須失效NC所在結(jié)點內(nèi)所有的共享副本;在NC處理WSRM請求與Intervention請求沖突時,如果NC需要失效Cache中的數(shù)據(jù)(收到IREAD_OWN),則NC在向CPU發(fā)送失效請求的同時,也必須對未決緩沖區(qū)進(jìn)行檢查,如果發(fā)現(xiàn)有因為和WSRM請求沖突而暫停流出的UPGRADE請求,則該請求會被失效并由CPU負(fù)責(zé)重發(fā)。
(3)Invalidate請求與WSRM請求沖突的處理另外,WSRM請求也可能收到?jīng)_突的INVAL(Invalid)請求,發(fā)生的原因是先前的WSRMEAK響應(yīng)耽誤在途中,其他的結(jié)點流出了READ_OWN等請求,此時Home結(jié)點的目錄狀態(tài)為Dir_Shared,要對其進(jìn)行失效,HOME流出的INVAL請求先于WSRMEAK到達(dá)NC,導(dǎo)致沖突發(fā)生。如果計算機(jī)系統(tǒng)采用維序路由的方式,則可以避免這種情況。
如果NC發(fā)現(xiàn)有沖突的INVAL請求,則將CPU的副本進(jìn)行失效,返回IVACK,不等待WSRMEAK回來,讓INVAL請求完成,即不判斷WSRM請求是否和INVAL沖突。
采用本發(fā)明可以達(dá)到以下技術(shù)效果(1)解決了采用監(jiān)聽-目錄兩層協(xié)議方式的基于SMP的CC-NUMA系統(tǒng)對臟狀態(tài)的數(shù)據(jù)共享后帶來的擁有者不確定問題;(2)實現(xiàn)了最新數(shù)據(jù)在結(jié)點內(nèi)的提前使用;(3)減少了結(jié)點內(nèi)對臟副本數(shù)據(jù)使用的通信延遲;(4)實現(xiàn)了結(jié)點內(nèi)監(jiān)聽協(xié)議和結(jié)點間目錄協(xié)議的有機(jī)融合;


圖1是采用單層目錄協(xié)議的SGI的Origin2000體系結(jié)構(gòu)示意圖;圖2是監(jiān)聽-目錄兩層協(xié)議方式的基于SMP的CC-NUMA體系結(jié)構(gòu)示意圖;圖3是監(jiān)聽到臟副本情況下對同一結(jié)點內(nèi)READ_OWN請求的處理流程圖;圖4是監(jiān)聽到臟副本情況下對同一結(jié)點內(nèi)READ_SH請求的處理流程圖;圖5是本發(fā)明的WSRM請求的報文格式圖;圖6是系統(tǒng)的未決請求緩沖區(qū)的數(shù)據(jù)結(jié)構(gòu)圖;圖7是本發(fā)明的NC的邏輯結(jié)構(gòu)圖;圖8是本發(fā)明的WSRM請求的處理流程圖;圖9是本發(fā)明的WSRM和Intervention請求的沖突處理流程具體實施例方式圖1是采用單層目錄協(xié)議的SGI的Origin2000體系結(jié)構(gòu)示意圖。SGI的Origin2000系統(tǒng)有多個處理結(jié)點組成。這些處理結(jié)點由基于交換的互連網(wǎng)絡(luò)連接在一起,構(gòu)成整個CC-NUMA系統(tǒng)。每個處理結(jié)點包括一個MIPSR10000處理器和一個結(jié)點控制器HUB,每個處理器都有一級和二級Cache,HUB包括存儲器復(fù)位接口、互連網(wǎng)絡(luò)接口和I/O接口。HUB硬件實現(xiàn)Cache一致性協(xié)議,實現(xiàn)分布共享存儲器訪問,它可以看見結(jié)點內(nèi)的處理器請求在所有二級Cache不命中,不管它們是被本地還是遠(yuǎn)程滿足;它從網(wǎng)絡(luò)接收事務(wù);也能從本地處理器Cache取得數(shù)據(jù)。
圖2是監(jiān)聽-目錄兩層協(xié)議方式的基于SMP的CC-NUMA體系結(jié)構(gòu)示意圖。該系統(tǒng)由互連網(wǎng)絡(luò)連接所有結(jié)點組成。結(jié)點內(nèi)是采用監(jiān)聽協(xié)議的SMP系統(tǒng),結(jié)點間是采用目錄協(xié)議的CC-NUMA系統(tǒng)。每個處理結(jié)點包括多個處理器,每個處理器都配有Cache,結(jié)點還包括存儲器(主存的一部分)和NC(NodeController)。NC作為結(jié)點控制器,不僅要監(jiān)聽總線,完成對請求/響應(yīng)的處理,還要實現(xiàn)網(wǎng)絡(luò)接口的功能。NC可以從網(wǎng)絡(luò)接收事務(wù),也能從本地處理器Cache取得數(shù)據(jù),同時負(fù)責(zé)結(jié)點間的一致性協(xié)議的維護(hù)。
圖3是在監(jiān)聽協(xié)議層次監(jiān)聽到臟副本情況下對同一結(jié)點內(nèi)READ_OWN請求的處理流程圖。其處理過程為由O處理器(臟結(jié)點內(nèi)的一處理器)發(fā)送數(shù)據(jù)給R處理器(請求方結(jié)點內(nèi)的一處理器),且O處理器中的Cache中的狀態(tài)由臟變?yōu)闊o效,R處理器中Cache中的狀態(tài)由無效變?yōu)榕K,目錄塊的狀態(tài)仍為專有。
圖4是在監(jiān)聽協(xié)議層次監(jiān)聽到臟副本情況下對同一結(jié)點內(nèi)READ_SH請求的處理流程圖。其處理方式和單層目錄協(xié)議的相同;如果該處理器在結(jié)點內(nèi)監(jiān)聽到O處理器中有臟副本,就由O處理器將數(shù)據(jù)發(fā)送給請求方處理器R,提供數(shù)據(jù)的O處理器Cache中的狀態(tài)由臟變?yōu)闊o效,R處理器Cache中的狀態(tài)由無效變?yōu)楣蚕怼?br> 圖5是本發(fā)明的WSRM請求的報文格式圖。WSRM請求的報文包括標(biāo)志W(wǎng)SRM請求的CMD項和需要的標(biāo)志位W和T。如果W=1,代表收到一個忙應(yīng)答WSRMBAK;否則,表示返回的是正常的應(yīng)答WSRMEAK。如果T=1,代表收到來自外部的Intervention請求,外部沖突請求處理完成;T=0代表沒有收到外部的沖突。
圖6是系統(tǒng)的未決請求緩沖區(qū)的數(shù)據(jù)結(jié)構(gòu)圖。未決緩沖區(qū)中每一項的數(shù)據(jù)結(jié)構(gòu)包括有效位Valid,目的地址Address,請求類型CMD,掛起標(biāo)志位Hold,響應(yīng)類型W,沖突標(biāo)志位T。置位Valid項說明該請求有效;否則無效。Address項表明該請求需要的數(shù)據(jù)塊在存儲器中的地址。CMD項用于說明請求的類型,包括READ_SH、READ_OWN、UPGRADE、WB、WSRM請求。置位Hold項說明該請求會被掛起,直到該位置為0,表明解掛后才能處理該請求。T項表示該請求是否有沖突請求命中該請求,需要進(jìn)行沖突處理。
圖7是本發(fā)明的NC的邏輯結(jié)構(gòu)圖。NC的邏輯結(jié)構(gòu)包括WSRM請求產(chǎn)生邏輯、輸出命令處理邏輯、輸入命令處理邏輯、未決請求緩沖區(qū)(Pending RequestBuffer)、輸出報文FIFO(First-In First-Out)、輸入報文FIFO。
NC接收來自CPU的命令和來自網(wǎng)絡(luò)的報文并分別進(jìn)行處理。圖的左半邊是對CPU命令的處理部件。對CPU流出命令,NC判斷是否需要產(chǎn)生WSRM請求如需要,則進(jìn)入WSRM請求產(chǎn)生邏輯生成對應(yīng)的WSRM請求,并將該請求送入輸出命令處理邏輯進(jìn)行處理;否則,直接進(jìn)入輸出命令處理邏輯進(jìn)行處理。輸出命令處理邏輯判斷命令類型并進(jìn)行相應(yīng)的處理。如果是響應(yīng)類型的命令,則直接將命令形成內(nèi)部報文送入輸出報文FIFO模塊。如果流出的是請求類型的命令,且該請求和未決緩沖區(qū)模塊中的任何一項請求不沖突,則將命令形成內(nèi)部報文送入輸出報文FIFO模塊等待發(fā)送,同時將該請求存入未決請求緩沖區(qū),置Valid=1,標(biāo)明該請求有效,目前處于等待完成階段;如果請求和未決請求緩沖區(qū)中的某個等待完成的請求沖突,則將該命令放入未決請求緩沖區(qū)并置掛起標(biāo)志,置Hold項為1,等待沖突解除后再次處理。輸出報文FIFO存放流出NC的報文,并等待流到網(wǎng)絡(luò)上去。
圖的右半邊是對網(wǎng)絡(luò)的報文的處理部件。輸入報文FIFO存放從網(wǎng)絡(luò)上流入NC的報文。輸入命令處理邏輯將輸入報文FIFO送來的報文轉(zhuǎn)換成命令格式,再與未決請求緩沖區(qū)進(jìn)行地址匹配,決定如何處理。如果是響應(yīng)類型的命令,在未決請求緩沖區(qū)中找出和該響應(yīng)匹配的請求項,將其從緩沖區(qū)刪除,同時在緩沖區(qū)內(nèi)檢查是否存在被該響應(yīng)對應(yīng)的請求掛起的其它請求,如果有,就將這些被掛起的請求解掛,并將其送入輸入或是輸出命令處理邏輯進(jìn)行處理。如果是請求類型的命令,則判斷是否與未決請求緩沖區(qū)中的任何一項沖突如果有沖突,就將該請求送入未決請求緩沖區(qū)并掛起,直到?jīng)_突處理完再流入輸入命令處理邏輯進(jìn)行處理;否則直接將該請求通過總線送入處理器進(jìn)行處理。
圖8是在目錄協(xié)議層次本發(fā)明的WSRM請求的處理流程圖。WSRM請求處理涉及的結(jié)點包括請求結(jié)點L和Home結(jié)點H。WSRM請求首先由請求結(jié)點L的NC發(fā)出,Home結(jié)點H的NC收到WSRM請求后,如果目錄塊的狀態(tài)為Dir_Private狀態(tài),則數(shù)據(jù)寫入存儲器,目錄狀態(tài)轉(zhuǎn)換為Dir_Shared狀態(tài)。如果請求結(jié)點L的NC收到WSRMEAK響應(yīng),則該NC直接釋放未決緩沖區(qū);如果請求結(jié)點L的NC收到WSRMBAK(收到目錄的忙應(yīng)答),則該NC釋放未決緩沖區(qū)時,需判斷該未決緩沖區(qū)項的T是否為1(即沖突的Intervention請求是否收到),如果T=0,則NC不能釋放該請求的資源,因為NC需要等待處理沖突的Intervention請求,并可能要返回應(yīng)答給其他請求者。在T=1時,表示NC已經(jīng)收到?jīng)_突的Intervention請求,并且沖突處理已經(jīng)完成,NC在收到WSRM請求對應(yīng)的應(yīng)答WSRMBAK后釋放WSRM請求占用的數(shù)據(jù)緩沖區(qū)。
圖9本發(fā)明的WSRM和Intervention請求的沖突處理流程圖。這種情況的處理可以利用目錄狀態(tài)的含義,由Home結(jié)點的NC轉(zhuǎn)發(fā)WSRM請求攜帶的有效數(shù)據(jù),有效完成數(shù)據(jù)的傳遞和目錄狀態(tài)轉(zhuǎn)換的過程。在一個結(jié)點流出WSRM請求并等待完成期間,另一個請求結(jié)點L也發(fā)出了對該數(shù)據(jù)塊的訪問請求(READ_SH或者READ_OWN),并且先于WSRM請求到達(dá)Home結(jié)點,則該訪問請求將由Home結(jié)點的NC接收并轉(zhuǎn)發(fā)給產(chǎn)生WSRM請求的結(jié)點R。結(jié)點R的NC會在收到WSRM請求對應(yīng)的響應(yīng)之前收到?jīng)_突的Intervention請求,需要立即處理該沖突情況。如果結(jié)點R的NC發(fā)現(xiàn)有沖突的Intervention請求,則根據(jù)Intervention請求的類型進(jìn)行處理,如果是IREAD_OWN,則將CPU的副本進(jìn)行失效;如果是IREAD_SH,則不進(jìn)行失效操作。兩種沖突情況都要標(biāo)記未決請求緩沖區(qū)內(nèi)等待完成的WSRM請求的狀態(tài)位T=1(Intervention請求命中),讓Intervention請求完成,最后請求結(jié)點R的NC會收到WSRMBAK應(yīng)答,WSRM請求完成。對于請求結(jié)點L,將收到Home結(jié)點NC處理WSRM請求時轉(zhuǎn)發(fā)WSRM請求攜帶數(shù)據(jù)的響應(yīng)報文。
權(quán)利要求
1.一種目錄協(xié)議對多處理器結(jié)點內(nèi)臟數(shù)據(jù)共享的支持方法,采用監(jiān)聽-目錄兩層協(xié)議方式,其特征在于在結(jié)點控制器NC的硬件邏輯中設(shè)計WSRM請求產(chǎn)生邏輯,由WSRM請求產(chǎn)生邏輯監(jiān)聽總線,當(dāng)監(jiān)聽到總線上出現(xiàn)臟命中且請求的類型為READ_SH時,NC接收總線上的臟副本,產(chǎn)生一個可以對目錄塊進(jìn)行操作的WSRM請求,由Home結(jié)點所在的NC對WSRM請求進(jìn)行相應(yīng)的處理,將最新副本寫回存儲器,實現(xiàn)未寫回存儲器的最新數(shù)據(jù)在結(jié)點內(nèi)的多個處理器中的提前共享,解決擁有者不確定問題,使基于SMP的CC-NUMA系統(tǒng)在監(jiān)聽-目錄兩層協(xié)議方式下正常的運行。
2.如權(quán)利要求1所述的目錄協(xié)議對多處理器結(jié)點內(nèi)臟數(shù)據(jù)共享的支持方法,其特征在于所述WSRM請求的數(shù)據(jù)結(jié)構(gòu)包括CMD項、W項和T項CMD項用來標(biāo)志W(wǎng)SRM請求,W項和T項是對WSRM請求的響應(yīng)類型和是否與外部請求產(chǎn)生沖突的標(biāo)志,如果W=1,代表收到一個忙應(yīng)答WSRMBAK;否則,返回正常的應(yīng)答WSRMEAK;如果T=1,代表收到來自外部的Intervention請求;T=0代表沖突已完成。
3.如權(quán)利要求1所述的目錄協(xié)議對多處理器結(jié)點內(nèi)臟數(shù)據(jù)共享的支持方法,其特征在于所述NC的硬件邏輯分為三大部分第一部分實現(xiàn)由CPU流向NC的通信,為邏輯輸出部分,包括WSRM請求產(chǎn)生邏輯、輸出命令處理邏輯和輸出報文FIFO;第二部分實現(xiàn)由NC流向CPU的通信,為邏輯輸入部分,包括輸入報文FIFO和輸入命令處理邏輯;第三部分是未決請求緩沖區(qū)3.1WSRM請求產(chǎn)生邏輯在NC監(jiān)聽到總線上出現(xiàn)臟命中且請求的類型是READ_SH時,接收總線上的臟副本,產(chǎn)生相應(yīng)的WSRM請求并送入輸出命令處理邏輯;3.2輸出命令處理邏輯不僅接收WSRM請求產(chǎn)生邏輯生成的WSRM請求,而且接收由CPU直接流出的其他命令,并統(tǒng)一進(jìn)行處理,如果是響應(yīng)類型的命令,則直接將命令形成內(nèi)部報文送入輸出報文FIFO模塊;如果流出的是請求類型的命令,且該請求和未決緩沖區(qū)模塊中的任何一項請求不沖突,則將命令形成內(nèi)部報文送入輸出報文FIFO等待發(fā)送,同時將該請求存入未決請求緩沖區(qū),置等待完成標(biāo)志;如果請求和未決請求緩沖區(qū)中的某個等待完成的請求沖突,則將該命令放入未決請求緩沖區(qū)并置掛起標(biāo)志,等待沖突解除后再次處理;3.3輸入命令處理邏輯首先將輸入報文FIFO送來的報文轉(zhuǎn)換成命令格式,再與未決請求緩沖區(qū)進(jìn)行地址匹配,決定如何處理如果是響應(yīng)類型的命令,在未決請求緩沖區(qū)中找出和該響應(yīng)匹配的請求項,將其從緩沖區(qū)刪除,同時在緩沖區(qū)內(nèi)檢查是否存在被該響應(yīng)對應(yīng)的請求掛起的其它請求,如果有,就將這些被掛起的請求解掛,結(jié)點內(nèi)請求送入輸入命令處理邏輯,外部結(jié)點的請求送入輸出命令處理邏輯;如果是請求類型的命令,則判斷是否與未決請求緩沖區(qū)中的任何一項沖突如果有沖突,就將該請求送入未決請求緩沖區(qū)并掛起,直到?jīng)_突處理完再流入輸入命令處理邏輯進(jìn)行處理;否則直接將該請求通過總線送入處理器進(jìn)行處理;3.4未決請求緩沖區(qū)記錄所有結(jié)點內(nèi)還沒有完成的和流入該結(jié)點的存在沖突的外部請求,提供輸出命令處理邏輯和輸入命令處理邏輯的訪問接口,返回命令地址的匹配標(biāo)識信息,未決緩沖區(qū)中每一項的數(shù)據(jù)結(jié)構(gòu)包括有效位Valid,目的地址Address,請求類型CMD,掛起標(biāo)志位Hold,響應(yīng)類型W,沖突標(biāo)志位T,置位Valid項說明該請求有效;否則無效;Address項表明該請求需要的數(shù)據(jù)塊在存儲器中的地址;CMD項用于說明請求的類型,包括READ_SH、READ_OWN、UPGRADE、WB、WSRM請求;置位Hold項說明該請求會被掛起,直到該位置為0,表明解掛后才能處理該請求;T項表示該請求是否有沖突請求命中該請求,需要進(jìn)行沖突處理;如果輸出命令處理邏輯進(jìn)行訪問,則未決請求緩沖區(qū)查找所有等待完成的請求,如果沒有地址相同的,則返回沒有沖突的標(biāo)識即T=0,通知輸出命令處理邏輯可以流出命令,如果有地址相同的,則返回有沖突的標(biāo)識即T=1,通知輸出命令處理邏輯掛起命令;如果輸入命令處理邏輯進(jìn)行訪問,則未決命令緩沖區(qū)對所有等待完成的命令進(jìn)行地址比較,找到地址匹配的命令,提供信息返回給輸入命令處理邏輯,同時對被掛起的命令進(jìn)行地址比較,找到地址匹配且被掛起的命令項,根據(jù)命令的來源返回給對應(yīng)的輸入或輸出命令處理邏輯;3.5輸出報文FIFO存放流出NC的報文,并等待流到網(wǎng)絡(luò)上去;3.6輸入報文FIFO存放從網(wǎng)絡(luò)上流入NC等待處理的報文。
4.如權(quán)利要求1所述的目錄協(xié)議對多處理器結(jié)點內(nèi)臟數(shù)據(jù)共享的支持方法,其特征在于所述WSRM請求由Home結(jié)點所在的NC進(jìn)行相應(yīng)的處理,具體過程是WSRM請求由請求結(jié)點L的NC發(fā)出,Home結(jié)點H的NC收到WSRM請求后,如果目錄塊的狀態(tài)為Dir_Private狀態(tài),則數(shù)據(jù)寫入存儲器,目錄狀態(tài)轉(zhuǎn)換為Dir_Shared狀態(tài);如果請求結(jié)點L的NC收到WSRMEAK響應(yīng)即HOME處于Dir_Private時的應(yīng)答,則該NC直接釋放未決緩沖區(qū);如果請求結(jié)點L的NC收到WSRMBAK即目錄處于Dir_Busy時的應(yīng)答,則該NC釋放未決緩沖區(qū)時,需判斷該未決緩沖區(qū)項的T是否為1,如果T=1,則NC不釋放該請求的資源,NC處理沖突的Intervention請求,并可能要返回應(yīng)答給其他請求者;在T=0時,表示沖突處理已經(jīng)完成,NC在收到WSRM請求對應(yīng)的應(yīng)答WSRMBAK后釋放WSRM請求占用的數(shù)據(jù)緩沖區(qū)。
5.如權(quán)利要求1所述的目錄協(xié)議對多處理器結(jié)點內(nèi)臟數(shù)據(jù)共享的支持方法,其特征在于所述沖突的處理方法是5.1 CPU請求和WSRM請求的沖突處理方法是在NC產(chǎn)生WSRM請求時,擁有數(shù)據(jù)的CPU的Cache狀態(tài)處于Shared狀態(tài),如果擁有數(shù)據(jù)的CPU需要進(jìn)行修改,則會流出沖突的UPGRADE請求;如果其他的CPU需要數(shù)據(jù),則會流出沖突READ_SH和READ_OWN請求,采取的CPU請求和WSRM請求沖突處理的原則是暫停所有沖突的UPGRADE、READ_SH或者READ_OWN的流出,等待WSRM請求完成之后,恢復(fù)沖突請求的流出;5.2Intervention請求與WSRM請求的沖突處理如果NC收到Intervention請求,發(fā)現(xiàn)和WSRM請求沖突,則NC處理沖突的Intervention請求,同時置WSRM請求的T=1,等待WSRM請求的應(yīng)答WSRMBAK收到后,撤銷WSRM請求,a)如果沖突的Intervention請求是IREAD_SH,則NC不處理;b)如果沖突的Intervention請求是IREAD_OWN(Intervention ofREAS_OWN),則NC將IREAD_OWN轉(zhuǎn)為INVAL,必須失效NC所在結(jié)點內(nèi)所有的共享副本;在NC處理WSRM請求與Intervention請求沖突時,如果NC需要失效Cache中的數(shù)據(jù)即收到IREAD_OWN時,則NC在向CPU發(fā)送失效請求的同時,也必須對未決緩沖區(qū)進(jìn)行檢查,如果發(fā)現(xiàn)有因為和WSRM請求沖突而暫停流出的UPGRADE請求,則該請求會被失效并由CPU負(fù)責(zé)重發(fā);5.3Invalidate請求與WSRM請求沖突的處理如果NC發(fā)現(xiàn)有沖突的INVAL請求,則將CPU的副本進(jìn)行失效,返回IVACK,不等待WBEAK回來,讓INVAL請求完成,即不判斷WSRM請求是否和INVAL沖突。
全文摘要
本發(fā)明公開了一種目錄協(xié)議對多處理器結(jié)點內(nèi)臟數(shù)據(jù)共享的支持方法,目的是在采用監(jiān)聽-目錄兩層協(xié)議方式的基于SMP的CC-NUMA系統(tǒng)中,解決對臟狀態(tài)的數(shù)據(jù)共享后帶來的擁有者不確定問題,實現(xiàn)結(jié)點內(nèi)數(shù)據(jù)的提前共享。技術(shù)方案是在結(jié)點控制器NC的硬件邏輯中設(shè)計WSRM請求產(chǎn)生邏輯,由WSRM請求產(chǎn)生邏輯監(jiān)聽總線,當(dāng)監(jiān)聽到總線上出現(xiàn)臟命中且請求的類型為READ_SH時,NC接收總線上的臟副本,產(chǎn)生一個可以對目錄塊進(jìn)行操作的WSRM請求,由Home結(jié)點所在的NC對WSRM請求進(jìn)行相應(yīng)的處理,將最新副本寫回存儲器。本發(fā)明實現(xiàn)了未寫回存儲器的最新數(shù)據(jù)在結(jié)點內(nèi)的多個處理器中的提前共享,解決了擁有者不確定問題。
文檔編號H04L29/06GK1664795SQ20051003139
公開日2005年9月7日 申請日期2005年3月30日 優(yōu)先權(quán)日2005年3月30日
發(fā)明者劉光明, 龐征斌, 李永進(jìn), 竇強(qiáng), 謝倫國, 鄭義, 李小芳, 李楠, 黃子中 申請人:中國人民解放軍國防科學(xué)技術(shù)大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
南充市| 惠东县| 鲁甸县| 阿拉尔市| 凤台县| 正定县| 泰兴市| 海伦市| 榆树市| 临潭县| 林周县| 墨玉县| 隆子县| 宿州市| 广宁县| 玉林市| 焉耆| 黄骅市| 建瓯市| 清远市| 玛曲县| 仁化县| 光泽县| 盱眙县| 沅陵县| 漳浦县| 积石山| 师宗县| 瓦房店市| 剑阁县| 涟水县| 无为县| 莒南县| 新闻| 肇源县| 乐东| 茂名市| 宣威市| 普兰县| 方正县| 师宗县|