專(zhuān)利名稱(chēng):對(duì)稱(chēng)式多核處理器維護(hù)二級(jí)緩存一致性的裝置及其方法
技術(shù)領(lǐng)域:
本發(fā)明涉及對(duì)稱(chēng)式多核處理器領(lǐng)域,尤其是涉及ー種基于PLB6總線(xiàn)結(jié)構(gòu)的對(duì)稱(chēng)式多核處理器維護(hù)ニ級(jí)緩存一致性的裝置及其方法。
背景技術(shù):
處理器最初發(fā)展的時(shí)候是單核體系結(jié)構(gòu),處理器的性能主要靠提高核心工作頻率來(lái)提高,由于物理限制,不能把處理器無(wú)限提高頻率,所以多核處理器結(jié)構(gòu)已經(jīng)成為處理器體系結(jié)構(gòu)發(fā)展的ー個(gè)重要趨勢(shì)。在對(duì)稱(chēng)式多核處理器(SMP)系統(tǒng)中,每個(gè)處理器都可以獨(dú)立地訪問(wèn)主存。主存中能被系統(tǒng)中不同處理器訪問(wèn)的數(shù)據(jù)部分叫做主存的共享數(shù)據(jù)。處理器的緩存(Cache)保存了主存中的副本,如果系統(tǒng)中不同的處理器訪問(wèn)主存共享數(shù)據(jù),就可能導(dǎo)致緩存中的數(shù)據(jù) 與主存不一致,產(chǎn)生了緩存一致性(Coherency)問(wèn)題。比如當(dāng)系統(tǒng)中ー個(gè)處理器訪問(wèn)主存中的共享數(shù)據(jù),進(jìn)行數(shù)據(jù)更新,而這部分?jǐn)?shù)據(jù)已經(jīng)在系統(tǒng)其它處理器的緩存中,則系統(tǒng)中其它處理器需要緩存一致性處理,如將該緩存行設(shè)為無(wú)效狀態(tài)。所以緩存一致性設(shè)計(jì)則成為了對(duì)稱(chēng)式多核處理器設(shè)計(jì)中ー個(gè)重要的方面和難點(diǎn)。在對(duì)稱(chēng)式多核處理器系統(tǒng)中,ー級(jí)緩存(LI Cache)通常在每個(gè)處理器核內(nèi),ニ級(jí)緩存(L2 Cache)通常在處理器核外,ニ級(jí)緩存一邊和處理器核內(nèi)的一級(jí)緩存相連,另ー邊通常和系統(tǒng)總線(xiàn)相連接。一級(jí)緩存和ニ級(jí)緩存的一致性維護(hù)主要是由處理器的局部總線(xiàn)完成,不同的處理器架構(gòu)一般都定義了對(duì)應(yīng)的一致性處理方法。對(duì)于每個(gè)處理器擁有獨(dú)立的ニ級(jí)緩存系統(tǒng),需要在系統(tǒng)集成時(shí)解決ニ級(jí)緩存的數(shù)據(jù)一致性問(wèn)題。目前一些對(duì)稱(chēng)式多核處理器系統(tǒng)采用將主存中的共享數(shù)據(jù)設(shè)置為不可緩存(Non-Cacheable),處理器直接訪問(wèn)主存,雖然這樣不好帶來(lái)ニ級(jí)緩存一致性問(wèn)題,但是這樣嚴(yán)重降低了系統(tǒng)性能,特別是在共享數(shù)據(jù)部分占據(jù)主存的比例較大的系統(tǒng)。另外ー些對(duì)稱(chēng)式多核處理器系統(tǒng)的ニ級(jí)緩存一致性設(shè)計(jì)中,采用了軟件方式或軟硬件協(xié)同方式。軟件開(kāi)銷(xiāo)很大,増加了大量的對(duì)主存訪問(wèn)的開(kāi)銷(xiāo),在一定程度上降低了系統(tǒng)性能。而且隨著更多的處理器加入對(duì)稱(chēng)式多核處理器系統(tǒng),為了解決緩存一致性問(wèn)題,軟件需要較大的修改,不利于系統(tǒng)擴(kuò)展。PLB6協(xié)議為多核系統(tǒng)定義了一套完備的總線(xiàn)規(guī)范,能夠有效維護(hù)ニ級(jí)緩存的數(shù)據(jù)一致性,并且能夠減少對(duì)主存的訪問(wèn)開(kāi)銷(xiāo),適合對(duì)稱(chēng)式多核處理器系統(tǒng)集成。但是PLB6協(xié)議的復(fù)雜性使得硬件設(shè)計(jì)方案面臨很大的難度。
發(fā)明內(nèi)容
本發(fā)明提供了一種基于PLB6總線(xiàn)結(jié)構(gòu)的對(duì)稱(chēng)式多核處理器維護(hù)ニ級(jí)緩存一致性的裝置及其方法。本發(fā)明的特征在于對(duì)稱(chēng)式多核處理器維護(hù)ニ級(jí)緩存一致性裝置,該裝置設(shè)置在對(duì)稱(chēng)式多核處理器系統(tǒng)內(nèi)ー個(gè)處理器子系統(tǒng)中的系統(tǒng)PLB6總線(xiàn)和ニ級(jí)緩存控制器之間,且與系統(tǒng)PLB6總線(xiàn)和ニ級(jí)緩存控制器相連,由ニ級(jí)緩存監(jiān)控單元,共享數(shù)據(jù)緩存狀態(tài)機(jī)單元,干渉接ロ単元,監(jiān)聽(tīng)接ロ単元和主設(shè)備接ロ単元五個(gè)部分組成,共享數(shù)據(jù)緩存狀態(tài)機(jī)單元分別與ニ級(jí)緩存監(jiān)控單元、監(jiān)聽(tīng)接ロ単元和主設(shè)備接ロ単元相連,監(jiān)聽(tīng)接ロ単元與干渉接ロ単元相連。
ニ級(jí)緩存監(jiān)控單元包括寄存器和與寄存器相連的比較電路。共享數(shù)據(jù)緩存狀態(tài)機(jī)單元包括依次相連的共享數(shù)據(jù)緩存行狀態(tài)陣列,狀態(tài)陣列控制邏輯和主設(shè)備ID比較電路。干渉接ロ単元包括ニ級(jí)緩存控制邏輯,PLB6干渉數(shù)據(jù)發(fā)送時(shí)序單元,PLB6發(fā)送干涉數(shù)據(jù)請(qǐng)求時(shí)序產(chǎn)生單元和數(shù)據(jù)緩沖器,數(shù)據(jù)緩沖器和PLB6發(fā)送干渉數(shù)據(jù)請(qǐng)求時(shí)序產(chǎn)生単元分別與PLB6干渉數(shù)據(jù)發(fā)送時(shí)序單元相連,ニ級(jí)緩存控制邏輯分別與數(shù)據(jù)緩沖器和PLB6發(fā)送干涉數(shù)據(jù)請(qǐng)求時(shí)序產(chǎn)生單元相連。監(jiān)聽(tīng)接ロ単元包括依次相連的緩存行查詢(xún)/反饋邏輯,PLB6復(fù)合應(yīng)答接收時(shí)序單元,PLB6局部響應(yīng)發(fā)送時(shí)序單元和PLB6監(jiān)聽(tīng)命令接收時(shí)序単元,其中緩存行查詢(xún)/反饋邏輯與PLB6局部響應(yīng)發(fā)送時(shí)序單元相連,緩存行查詢(xún)/反饋邏輯與PLB6監(jiān)聽(tīng)命令接收時(shí)序單元相連。主設(shè)備接ロ単元包括依次相連的緩存行查詢(xún)邏輯,PLB6主設(shè)備命令時(shí)序生成單元,PLB6主設(shè)備命令應(yīng)答接收時(shí)序單元,PLB6主設(shè)備數(shù)據(jù)發(fā)送時(shí)序單元,PLB6主設(shè)備命令應(yīng)答接收時(shí)序單元與PLB6主設(shè)備數(shù)據(jù)接收時(shí)序單元相連,PLB6主設(shè)備數(shù)據(jù)發(fā)送時(shí)序單元與寫(xiě)數(shù)據(jù)緩沖器相連,PLB6主設(shè)備數(shù)據(jù)接收時(shí)序單元與讀數(shù)據(jù)緩沖器相連。對(duì)稱(chēng)式多核處理器維護(hù)ニ級(jí)緩存一致性的方法,包括如下步驟步驟1000 :處理器子系統(tǒng)A更新共享數(shù)據(jù)某條緩存行的內(nèi)容;步驟1001 :處理器子系統(tǒng)A的維護(hù)ニ級(jí)緩存一致性裝置將該共享數(shù)據(jù)地址對(duì)應(yīng)的緩存行更新為修改;步驟1002 :處理器子系統(tǒng)A的維護(hù)ニ級(jí)緩存一致性裝置將產(chǎn)生DClaim命令到PLB6主設(shè)備總線(xiàn);步驟1003 :其它處理器子系統(tǒng)的維護(hù)ニ級(jí)緩存一致性裝置內(nèi)部監(jiān)聽(tīng)接ロ收到該DClaim 命令;步驟1004 :其它處理器子系統(tǒng)的維護(hù)ニ級(jí)緩存一致性裝置內(nèi)將DClaim命令中共享數(shù)據(jù)地址對(duì)應(yīng)的緩存行在共享數(shù)據(jù)緩存狀態(tài)機(jī)中的狀態(tài)更新為無(wú)效;步驟1005 :它處理器子系統(tǒng)的維護(hù)ニ級(jí)緩存一致性裝置將更新ニ級(jí)緩存中對(duì)應(yīng)的共享數(shù)據(jù)的緩存行為無(wú)效;步驟1010 :處理器子系統(tǒng)B需要讀取主存共享數(shù)據(jù),該共享數(shù)據(jù)地址在步驟1000處理器子系統(tǒng)更新的緩存行的地址范圍內(nèi)。處理器子系統(tǒng)B的維護(hù)ニ級(jí)緩存一致性裝置在PLB6主設(shè)備總線(xiàn)發(fā)出讀命令;步驟1011 :處理器子系統(tǒng)A的維護(hù)ニ級(jí)緩存一致性裝置收到PLb6監(jiān)聽(tīng)總線(xiàn)的命令;步驟1012 :處理器子系統(tǒng)A的維護(hù)ニ級(jí)緩存一致性裝置根據(jù)監(jiān)聽(tīng)命令的地址要求,從ニ級(jí)緩存中取出處理器子系統(tǒng)B需要的數(shù)據(jù);步驟1013 :監(jiān)聽(tīng)命令的地址對(duì)應(yīng)的緩存行在處理器子系統(tǒng)A中為修改狀態(tài),處理器子系統(tǒng)A的維護(hù)ニ級(jí)緩存一致性裝置發(fā)送局部響應(yīng)信號(hào),表明可以提供修改intervention ;步驟1014 :處理器子系統(tǒng)A的維護(hù)ニ級(jí)緩存一致性裝置收到監(jiān)聽(tīng)接ロ收到的復(fù)合應(yīng)答信號(hào);步驟1015 :處理器子系統(tǒng)A的維護(hù)ニ級(jí)緩存一致性裝置將監(jiān)聽(tīng)命令中共享數(shù)據(jù)地址對(duì)應(yīng)的緩存行在共享數(shù)據(jù)緩存狀態(tài)機(jī)中的狀態(tài)由修改更新為標(biāo)記;步驟1016 :處理器子系統(tǒng)A的維護(hù)ニ級(jí)緩存一致性裝置通過(guò)干涉總線(xiàn)將從ニ級(jí)緩存中取得的數(shù)據(jù)發(fā)送;步驟1017 :處理器子系統(tǒng)B獲得處理器子系統(tǒng)A的數(shù)據(jù),處理器子系統(tǒng)B的維護(hù)ニ級(jí)緩存一致性裝置將共享數(shù)據(jù)地址對(duì)應(yīng)的緩存行在共享數(shù)據(jù)緩存狀態(tài)機(jī)中的狀態(tài)更新為Shared-Last。表明處理器子系統(tǒng)B將提供干渉數(shù);。步驟1020 :處理器子系統(tǒng)C需要讀取主存共享數(shù)據(jù),該共享數(shù)據(jù)地址在步驟1000處理器子系統(tǒng)更新的緩存行的地址范圍內(nèi)。處理器子系統(tǒng)C的維護(hù)ニ級(jí)緩存一致性裝置在PLB6主設(shè)備總線(xiàn)發(fā)出讀命令;步驟1021 :處理器子系統(tǒng)B的維護(hù)ニ級(jí)緩存一致性裝置收到PLb6監(jiān)聽(tīng)總線(xiàn)的命令;步驟1022 :處理器子系統(tǒng)B的維護(hù)ニ級(jí)緩存一致性裝置根據(jù)監(jiān)聽(tīng)命令的地址要求,從ニ級(jí)緩存中取出處理器子系統(tǒng)B需要的數(shù)據(jù);步驟1023 :處監(jiān)聽(tīng)命令的地址對(duì)應(yīng)的緩存行在處理器子系統(tǒng)B中為Shared-Last狀態(tài),處理理器子系統(tǒng)B的維護(hù)ニ級(jí)緩存一致性裝置發(fā)送局部響應(yīng)信號(hào),表明可以提供Shared-Last Intervention ;步驟1024 :處理器子系統(tǒng)B的維護(hù)ニ級(jí)緩存一致性裝置收到監(jiān)聽(tīng)接ロ收到的復(fù)合
應(yīng)答信號(hào)。步驟1025 :處理器子系統(tǒng)B的維護(hù)ニ級(jí)緩存一致性裝置將監(jiān)聽(tīng)命令中共享數(shù)據(jù)地址對(duì)應(yīng)的緩存行在共享數(shù)據(jù)緩存狀態(tài)機(jī)中的狀態(tài)由Shared-Last更新為共享。表明處理器子系統(tǒng)B將不再提供干涉數(shù)據(jù);步驟1026 :處理器子系統(tǒng)B的維護(hù)ニ級(jí)緩存一致性裝置通過(guò)干涉總線(xiàn)將從ニ級(jí)緩存中取得的數(shù)據(jù)發(fā)送。步驟1027 :處理器子系統(tǒng)C獲得處理器子系統(tǒng)B的數(shù)據(jù),處理器子系統(tǒng)C的維護(hù)ニ級(jí)緩存一致性裝置將共享數(shù)據(jù)地址對(duì)應(yīng)的緩存行在共享數(shù)據(jù)緩存狀態(tài)機(jī)中的狀態(tài)更新為Shared-Last。表明處理器子系統(tǒng)C將提供干涉數(shù)據(jù);步驟1030 :步驟1020處理器B的讀請(qǐng)求也可以被處理器A的監(jiān)聽(tīng)接ロ收到;步驟1031 :監(jiān)聽(tīng)命令的地址對(duì)應(yīng)的緩存行在處理器子系統(tǒng)A中為標(biāo)記狀態(tài),處理器子系統(tǒng)A的維護(hù)ニ級(jí)緩存一致性裝置發(fā)送局部響應(yīng)信號(hào),表明可以提供teggedintervention ;步驟1032 :處理器子系統(tǒng)A的維護(hù)ニ級(jí)緩存一致性裝置收到監(jiān)聽(tīng)接ロ收到的復(fù)合應(yīng)答信號(hào);步驟1033 :處理器子系統(tǒng)A的維護(hù)ニ級(jí)緩存一致性裝置收到監(jiān)聽(tīng)接ロ收到的復(fù)合應(yīng)答信號(hào)表明不需要處理器子系統(tǒng)A提供監(jiān)聽(tīng)命令中的地址對(duì)應(yīng)的共享數(shù)據(jù),轉(zhuǎn)入步驟1035。復(fù)合應(yīng)答信號(hào)表明需要處理器子系統(tǒng)A提供監(jiān)聽(tīng)命令中的地址對(duì)應(yīng)的共享數(shù)據(jù),可能的情況是處理器子系統(tǒng)B的ニ級(jí)緩存控制器將處理器子系統(tǒng)C的讀命令中地址對(duì)應(yīng)的緩存行標(biāo)記設(shè)為無(wú)效,所以處理器子系統(tǒng)B無(wú)法提供所需的數(shù)據(jù)。在這種情況下,轉(zhuǎn)入步驟1034 ;步驟1034 :處理器子系統(tǒng)A的維護(hù)ニ級(jí)緩存一致性裝置根據(jù)監(jiān)聽(tīng)命令的地址要求,從ニ級(jí)緩存中取出處理器子系統(tǒng)C需要的數(shù)據(jù)。處理器子系統(tǒng)A的維護(hù)ニ級(jí)緩存一致性裝置通過(guò)干涉總線(xiàn)將從ニ級(jí)緩存中取得的數(shù)據(jù)發(fā)送。處理器C獲得數(shù)據(jù)并更新共享數(shù)據(jù)緩存行的狀態(tài),和步驟1027 —致;步驟1035 :無(wú)論處理器子系統(tǒng)A是否提供干涉數(shù)據(jù),都不會(huì)更新監(jiān)控命令中地址對(duì)應(yīng)的緩存行在共享數(shù)據(jù)緩存狀態(tài)機(jī)中的狀態(tài)。該設(shè)計(jì)主要應(yīng)用于具有獨(dú)立ニ級(jí)緩存的對(duì)稱(chēng)式多核處理器系統(tǒng),以硬件方式自動(dòng)完成緩存一致性處理,軟件干預(yù)很少。同時(shí)利用PLB6協(xié)議的干涉(Intervention)總線(xiàn)規(guī)范,在對(duì)共享數(shù)據(jù)進(jìn)行讀訪問(wèn)時(shí),可以從其它處理器緩存該數(shù)據(jù)的ニ級(jí)緩存中讀取數(shù)據(jù),通 過(guò)干涉接ロ將讀數(shù)據(jù)返回,這樣減小了訪問(wèn)主存的開(kāi)銷(xiāo),提高了系統(tǒng)性能。
圖I是根據(jù)本發(fā)明實(shí)施的一種基于PLB6總線(xiàn)架構(gòu)的對(duì)稱(chēng)式多核處理器系統(tǒng)ニ級(jí)緩存一致性裝置的結(jié)構(gòu)框圖及該裝置在系統(tǒng)中的位置示意圖;圖2是本發(fā)明中二級(jí)緩存監(jiān)控單元的結(jié)構(gòu)框圖;圖3是本發(fā)明中監(jiān)聽(tīng)接ロ單元結(jié)構(gòu)框圖;圖4是本發(fā)明中干渉接ロ單元結(jié)構(gòu)框圖;圖5是本發(fā)明中共享數(shù)據(jù)緩存狀態(tài)機(jī)單元的結(jié)構(gòu)框圖;圖6是本發(fā)明中共享數(shù)據(jù)緩存行狀態(tài)陣列設(shè)計(jì)示意圖;圖7是本發(fā)明中主設(shè)備接ロ單元結(jié)構(gòu)框圖;圖8是本發(fā)明中共享數(shù)據(jù)緩存行狀態(tài)轉(zhuǎn)換示意圖;圖9是使用該裝置的PLB6總線(xiàn)架構(gòu)的對(duì)稱(chēng)式多核處理器系統(tǒng)示意圖;圖10是使用本發(fā)明維護(hù)ニ級(jí)緩存一致性的流程圖。
具體實(shí)施例方式如圖I所示,本發(fā)明中維護(hù)ニ級(jí)緩存一致性裝置100位于ニ級(jí)緩存控制器120和系統(tǒng)PLB6總線(xiàn)之間。處理器150,ニ級(jí)緩存一致性的裝置100,ニ級(jí)緩存控制器120和ニ級(jí)緩存110共同構(gòu)成了對(duì)稱(chēng)式多核處理器系統(tǒng)中ー個(gè)處理器子系統(tǒng)。維護(hù)ニ級(jí)緩存一致性裝置100,由ニ級(jí)緩存監(jiān)控單元101,共享數(shù)據(jù)緩存狀態(tài)機(jī)單元102,干渉接ロ単元103,監(jiān)聽(tīng)接ロ単元104和主設(shè)備接ロ単元105五個(gè)部分組成,共享數(shù)據(jù)緩存狀態(tài)機(jī)單元102分別與ニ級(jí)緩存監(jiān)控單元101、監(jiān)聽(tīng)接ロ単元和主設(shè)備接ロ単元相連,監(jiān)聽(tīng)接ロ単元與干渉接ロ單元相連。ニ級(jí)緩存控制器120通過(guò)處理器局部總線(xiàn)130和處理器150相連,用于接受處理器150的控制。
ニ級(jí)緩存監(jiān)控單元101,用于監(jiān)控ニ級(jí)緩存控制器120對(duì)ニ級(jí)緩存110的標(biāo)記更新,并將監(jiān)控結(jié)果返回給共享數(shù)據(jù)緩存狀態(tài)機(jī)單元102,ニ級(jí)緩存監(jiān)控單元101可以改變共享數(shù)據(jù)緩存狀態(tài)機(jī)單元102中的共享數(shù)據(jù)緩存行的狀態(tài)。共享數(shù)據(jù)緩存狀態(tài)機(jī)單元102通過(guò)低速設(shè)備總線(xiàn)140和處理器150相連,用于處理器150初始化共享數(shù)據(jù)的在主存中的物理地址,共享數(shù)據(jù)緩存狀態(tài)機(jī)單元102可以對(duì)ニ級(jí)緩存110的某緩存行的標(biāo)記更新為無(wú)效。干渉接ロ単元103和PLB6干涉總線(xiàn)131相連,干渉接ロ単元103可以讀取ニ級(jí)緩存110的內(nèi)容。監(jiān)聽(tīng)接ロ單元104和PLB6監(jiān)聽(tīng)總線(xiàn)132相連,監(jiān)聽(tīng)接ロ單元104可以查詢(xún)共享數(shù)據(jù)緩存狀態(tài)機(jī)單元102中的共享數(shù)據(jù)緩存行的狀態(tài)。監(jiān)聽(tīng)接ロ單元104可以改變共享數(shù)據(jù)緩存狀態(tài)機(jī)單元102中的共享數(shù)據(jù)緩存行的狀態(tài)。 主設(shè)備接ロ單元105和PLB6主設(shè)備總線(xiàn)133相連。主設(shè)備接ロ單元105,用于接收ニ級(jí)緩存控制器120的訪問(wèn)請(qǐng)求返回應(yīng)答以響應(yīng)請(qǐng)求,并和ニ級(jí)緩存控制器120進(jìn)行相關(guān)的數(shù)據(jù)傳遞。主設(shè)備接ロ単元105可以查詢(xún)共享數(shù)據(jù)緩存狀態(tài)機(jī)單元102中的共享數(shù)據(jù)緩存行的狀態(tài)。如圖I、圖2所示,ニ級(jí)緩存監(jiān)控單元101主要監(jiān)控ニ級(jí)緩存控制器120對(duì)ニ級(jí)緩存Iio的標(biāo)記更新,將更新使能211,物理地址210和標(biāo)記212等ニ級(jí)緩存控制器120的控制信號(hào)作為監(jiān)控對(duì)象。物理地址210寄存后直接作為物理地址213輸出給共享數(shù)據(jù)緩存狀態(tài)機(jī)單元102。標(biāo)記212在比較電路201中和修改狀態(tài)值進(jìn)行對(duì)比,如果相同并且更新使能211有效,貝1J在下一個(gè)時(shí)鐘周期輸出修改信號(hào)214為高,表明修改有效。標(biāo)記212在比較電路202中和無(wú)效狀態(tài)值進(jìn)行對(duì)比,如果相同并且更新使能211有效,則在下一個(gè)時(shí)鐘周期輸出無(wú)效信號(hào)215為高,表明無(wú)效有效。標(biāo)記212在比較電路203中和排它狀態(tài)值進(jìn)行對(duì)比,如果相同并且更新使能211有效,則在下一個(gè)時(shí)鐘周期輸出排它信號(hào)216為高,表明排它有效。如圖3所示,監(jiān)聽(tīng)接ロ單元104由緩存行查詢(xún)/反饋邏輯701,PLB6復(fù)合應(yīng)答(Combined Response)接收時(shí)序單兀702,PLB6局部響應(yīng)(Partial Response)發(fā)送時(shí)序單元703和PLB6監(jiān)聽(tīng)命令接收時(shí)序單元704組成。PLB6復(fù)合應(yīng)答時(shí)序單元702,PLB6局部響應(yīng)發(fā)送時(shí)序單元703和PLB6監(jiān)聽(tīng)命令接收時(shí)序單元704和PLB6監(jiān)聽(tīng)總線(xiàn)132相連。PLB6監(jiān)聽(tīng)命令接收時(shí)序單元704按照PLB6監(jiān)聽(tīng)總線(xiàn)時(shí)序要求接收到PLB6監(jiān)聽(tīng)總線(xiàn)132的監(jiān)聽(tīng)命令,將命令傳遞給緩存行查詢(xún)/反饋邏輯701。緩存行查詢(xún)/反饋邏輯701將監(jiān)聽(tīng)命令的物理地址713,監(jiān)聽(tīng)命令類(lèi)型717和監(jiān)聽(tīng)命令主設(shè)備ID718發(fā)送給共享數(shù)據(jù)緩存狀態(tài)機(jī)単元102。共享數(shù)據(jù)緩存狀態(tài)機(jī)單元102返回共享數(shù)據(jù)緩存行的狀態(tài)335。PLB6監(jiān)聽(tīng)命令接收時(shí)序單元704接收到監(jiān)聽(tīng)命令后,通知PLB6局部響應(yīng)發(fā)送時(shí)序單元703準(zhǔn)備發(fā)送響應(yīng)信號(hào)。PLB6監(jiān)聽(tīng)局部響應(yīng)答發(fā)送時(shí)序単元703根據(jù)返回的共享數(shù)據(jù)緩存行的狀態(tài)335來(lái)產(chǎn)生監(jiān)聽(tīng)?wèi)?yīng)答。PLB6局部響應(yīng)發(fā)送時(shí)序單元703按照PLB6監(jiān)聽(tīng)總線(xiàn)的時(shí)序發(fā)送局部應(yīng)答后,通知PLB6復(fù)合應(yīng)答接收時(shí)序單元702準(zhǔn)備接收PLB6監(jiān)聽(tīng)總線(xiàn)復(fù)合應(yīng)答714。PLB6復(fù)合應(yīng)答接收時(shí)序單元702將接收到的復(fù)合應(yīng)答714輸出給共享數(shù)據(jù)緩存狀態(tài)機(jī)單元102,同時(shí)輸出給緩存行查詢(xún)/反饋邏輯701。
收到的監(jiān)聽(tīng)命令由其它處理器子系統(tǒng)引起,且為讀命令吋,如果共享數(shù)據(jù)緩存狀態(tài)機(jī)單元返回的共享數(shù)據(jù)緩存行的狀態(tài)335為Shared-Last,修改或排它,則輸出有效的干涉使能710,數(shù)據(jù)長(zhǎng)度719和監(jiān)聽(tīng)命令的物理地址716給干涉接ロ單元103。如果共享數(shù)據(jù)緩存狀態(tài)機(jī)單元返回的共享數(shù)據(jù)緩存行的狀態(tài)335為標(biāo)記。接收到的復(fù)合應(yīng)答信號(hào)表明只有標(biāo)記狀態(tài)的ニ級(jí)緩存可以提供干涉數(shù)據(jù),則緩存行查詢(xún)/反饋邏輯701輸出有效的干涉使能710,數(shù)據(jù)長(zhǎng)度719和監(jiān)聽(tīng)命令的物理地址716給干涉接ロ單元103。如圖4所示,干渉接ロ単元103由ニ級(jí)緩存控制邏輯801,PLB6干涉數(shù)據(jù)發(fā)送時(shí)序單元802,PLB6發(fā)送干涉數(shù)據(jù)請(qǐng)求時(shí)序產(chǎn)生單元803和數(shù)據(jù)緩沖器(datebuffer) 804組成。PLB6干渉數(shù)據(jù)發(fā)送時(shí)序單元802和PLB6發(fā)送干涉數(shù)據(jù)請(qǐng)求時(shí)序產(chǎn)生單元803和PLB6干渉 總線(xiàn)131相連。PLB6發(fā)送干涉數(shù)據(jù)請(qǐng)求時(shí)序產(chǎn)生單元803收到監(jiān)聽(tīng)接ロ單元104的有效的干涉使能710和物理地址716后,將物理地址716傳送給ニ級(jí)緩存控制邏輯801。ニ級(jí)緩存控制邏輯801根據(jù)收到的物理地址讀取ニ級(jí)緩存中相應(yīng)的緩存行的緩存內(nèi)容,將內(nèi)容保存在數(shù)據(jù)緩沖器804。從ニ級(jí)緩存獲得數(shù)據(jù)后,PLB6發(fā)送干涉數(shù)據(jù)請(qǐng)求時(shí)序產(chǎn)生單元803根據(jù)PLB6總線(xiàn)時(shí)序產(chǎn)生PLB6干渉數(shù)據(jù)發(fā)送命令,并通知PLB6干渉數(shù)據(jù)發(fā)送時(shí)序單元802準(zhǔn)備發(fā)送數(shù)據(jù)。PLB6干渉數(shù)據(jù)發(fā)送時(shí)序單元802將數(shù)據(jù)緩沖器804中的數(shù)據(jù)按照PLB6干渉總線(xiàn)時(shí)序發(fā)送,發(fā)送的長(zhǎng)度由監(jiān)聽(tīng)接ロ單元輸入的數(shù)據(jù)長(zhǎng)度719決定。如圖5所示,共享數(shù)據(jù)緩存狀態(tài)機(jī)單元102主要包括共享數(shù)據(jù)緩存行狀態(tài)陣列301,狀態(tài)陣列控制邏輯304,主設(shè)備ID比較電路302等組成。共享數(shù)據(jù)緩存行狀態(tài)陣列301的ー個(gè)設(shè)計(jì)實(shí)例如圖6所示。共享數(shù)據(jù)緩存行狀態(tài)陣列有N條記錄,每條記錄對(duì)應(yīng)主存中共享數(shù)據(jù)在ニ級(jí)緩存中的一條緩存行。在ー個(gè)32位地址總線(xiàn)和ニ級(jí)緩存行的長(zhǎng)度為128字節(jié)的系統(tǒng)內(nèi),每條記錄長(zhǎng)度為32bit。高25bit401保存了緩存在ニ級(jí)緩存行中的共享數(shù)據(jù)的高位地址。狀態(tài)陣列控制邏輯304確定待查詢(xún)的物理地址是否屬于主存中共享數(shù)據(jù)地址時(shí),就是比較待查詢(xún)物理地址的高25bit是否等于共享數(shù)據(jù)緩存行狀態(tài)陣列中的一條記錄的高25bit。bit6到bit4為這條緩存行的狀態(tài)402,低4bit403為保留位。狀態(tài)編碼如圖4所示410。處理器通過(guò)低速設(shè)備總線(xiàn)140進(jìn)行共享數(shù)據(jù)緩存行狀態(tài)陣列301的初始化配置,將系統(tǒng)中使用的共享數(shù)據(jù)物理地址按照緩存行大小劃分,將每條緩存行的數(shù)據(jù)高位物理地址寫(xiě)入一個(gè)記錄的高25bit。如圖7所示,主設(shè)備接ロ単元105由緩存行查詢(xún)邏輯604,寫(xiě)數(shù)據(jù)緩沖器602,讀數(shù)據(jù)緩沖器603,PLB6主設(shè)備命令時(shí)序生成單元605,PLB6主設(shè)備命令應(yīng)答接收時(shí)序單元606,PLB6主設(shè)備數(shù)據(jù)發(fā)送時(shí)序單元607和PLB6主設(shè)備數(shù)據(jù)接收時(shí)序單元601組成。PLB6主設(shè)備命令時(shí)序生成單元605,PLB6主設(shè)備命令應(yīng)答接收時(shí)序單元606,PLB6主設(shè)備數(shù)據(jù)發(fā)送時(shí)序單元607和PLB6主設(shè)備數(shù)據(jù)接收時(shí)序單元601連接了 PLB6主設(shè)備總線(xiàn)133。PLB6主設(shè)備命令時(shí)序生成單元605接收ニ級(jí)緩存控制器的對(duì)主存的訪問(wèn)請(qǐng)求616,按照PLB6主設(shè)備總線(xiàn)的時(shí)序產(chǎn)生相關(guān)命令。緩存行查詢(xún)邏輯604根據(jù)ニ級(jí)緩存控制器訪問(wèn)的物理地址611向共享數(shù)據(jù)緩存狀態(tài)機(jī)單元102進(jìn)行查詢(xún)。共享數(shù)據(jù)緩存狀態(tài)機(jī)單元102返回缺失(Miss)330或命中(Hit)331。如果返回命中331,表明ニ級(jí)緩存控制器120訪問(wèn)的物理地址屬于主存中的共享數(shù)據(jù),緩存行查詢(xún)邏輯604通知PLB6主設(shè)備命令時(shí)序生成単元604產(chǎn)生PLB6主設(shè)備命令時(shí)將監(jiān)聽(tīng)信號(hào)置為高電平,這樣將引起PLB6總線(xiàn)監(jiān)聽(tīng)命令的發(fā)生。當(dāng)ニ級(jí)緩存控制器120更新某共享數(shù)據(jù)緩存行的內(nèi)容時(shí)修改,共享數(shù)據(jù)緩存狀態(tài)機(jī)單元102會(huì)通知PLB6主設(shè)備命令時(shí)序生成單元605生成DClaim命令,輸入PLB6主設(shè)備命令時(shí)序生成單元有效的DClaim使能332和DClaim使能332的物理地址334。PLB6主設(shè)備接命令時(shí)序生成單元605產(chǎn)生PLB6總線(xiàn)主設(shè)備命令后,會(huì)通知PLB6主設(shè)備命令應(yīng)答接收時(shí)序單元606按照PLB6主設(shè)備總線(xiàn)命令應(yīng)答接收時(shí)序來(lái)接收PLB6主設(shè)備總線(xiàn)133的命令應(yīng)答信號(hào),并將請(qǐng)求應(yīng)答信號(hào)619返回給ニ級(jí)緩存控制器120作為請(qǐng)求響應(yīng)。對(duì)于寫(xiě)訪問(wèn),PLB6主設(shè)備命令應(yīng)答接收時(shí)序單元606通知PLB6主設(shè)備數(shù)據(jù)發(fā)送時(shí)序單元607準(zhǔn)備向PLB6總線(xiàn)寫(xiě)數(shù)據(jù),寫(xiě)數(shù)數(shù)來(lái)自ニ級(jí)緩存控制器120的輸入617,先存在 寫(xiě)數(shù)據(jù)緩沖器602中,PLB6主設(shè)備數(shù)據(jù)發(fā)送時(shí)序單元607從寫(xiě)數(shù)據(jù)緩沖器602中獲得數(shù)據(jù)按照PLB6總線(xiàn)時(shí)序要求發(fā)送。對(duì)于讀訪問(wèn),PLB6主設(shè)備接ロ命令接收時(shí)序單元606通知PLB6主設(shè)備數(shù)據(jù)接收時(shí)序単元601準(zhǔn)備接收PLB6總線(xiàn)讀返回?cái)?shù)據(jù)。返回的數(shù)據(jù)線(xiàn)存入讀數(shù)據(jù)緩沖器603中。ニ級(jí)緩存控制器120從讀數(shù)據(jù)緩沖器603中取走數(shù)據(jù)618。共享數(shù)據(jù)緩存行的狀態(tài)變化由圖5、圖8所示。I、狀態(tài)陣列控制邏輯304根據(jù)主設(shè)備接ロ単元105輸入的物理地址611從共享數(shù)據(jù)緩存行狀態(tài)陣列301查找是否該物理地址屬于主存中共享數(shù)據(jù)地址,如果屬于,產(chǎn)生命中331,如果不屬于,產(chǎn)生缺失330,輸出給主設(shè)備接ロ單元105。2、當(dāng)ニ級(jí)緩存監(jiān)控單元101輸入有效的修改214時(shí),表明ニ級(jí)緩存控制器120更新某條緩存行的標(biāo)記為修改。該緩存行的物理地址由ニ級(jí)緩存監(jiān)控單元輸入物理地址213。狀態(tài)陣列控制邏輯304從共享數(shù)據(jù)緩存行狀態(tài)陣列301查找是否該物理地址屬于主存中共享數(shù)據(jù)地址,如果屬于則向主設(shè)備接ロ単元105發(fā)送DClaim使能332。該緩存行的舊狀態(tài)不可能為無(wú)效將被更新為修改503。3、當(dāng)ニ級(jí)緩存監(jiān)控單元101輸入有效的無(wú)效215,表明ニ級(jí)緩存控制器120更新某條緩存行的標(biāo)記為無(wú)效。該緩存行的物理地址由ニ級(jí)緩存監(jiān)控單元101輸入物理地址213。狀態(tài)陣列控制邏輯304從共享數(shù)據(jù)緩存行狀態(tài)陣列301查找是否該物理地址屬于主存中共享數(shù)據(jù)地址,如果屬于則將緩存行的狀態(tài)更新為無(wú)效501。4、如果監(jiān)聽(tīng)接ロ單元104輸入有效的DClaim313,表明系統(tǒng)中其它處理器更新了某共享數(shù)據(jù)的緩存行的內(nèi)容。狀態(tài)陣列控制邏輯304根據(jù)DClaim命令的物理地址713將共享數(shù)據(jù)緩存行狀態(tài)陣列301中該緩存行的狀態(tài)更新為無(wú)效501。同時(shí)狀態(tài)陣列控制邏輯304輸出無(wú)效命令333和DClaim使能的物理地址334給ニ級(jí)緩存,將ニ級(jí)緩存中相關(guān)緩存行的標(biāo)記更新為無(wú)效501。5、主設(shè)備ID比較電路302比較監(jiān)聽(tīng)命令的主設(shè)備ID718。如果監(jiān)聽(tīng)命令的主設(shè)備ID718不等于本處理器子系統(tǒng)的主設(shè)備ID,監(jiān)聽(tīng)命令是由其它處理器子系統(tǒng)訪問(wèn)主存引起。如果監(jiān)聽(tīng)命令的主設(shè)備ID718等于本處理器子系統(tǒng)的主設(shè)備ID,監(jiān)聽(tīng)命令是由本處理器訪問(wèn)主存引起。6、如果監(jiān)聽(tīng)命令類(lèi)型717為讀命令,且是由對(duì)稱(chēng)式多核處理器系統(tǒng)中其它處理器子系統(tǒng)引起的監(jiān)聽(tīng)命令,狀態(tài)陣列控制邏輯304根據(jù)監(jiān)聽(tīng)接ロ單元輸入的監(jiān)聽(tīng)命令物理地址713將該地址對(duì)應(yīng)的緩存行狀態(tài)335從共享數(shù)據(jù)緩存行狀態(tài)陣列301讀出并輸出給監(jiān)聽(tīng)接ロ單元104。根據(jù)監(jiān)聽(tīng)接ロ單元104輸入的復(fù)合應(yīng)答信號(hào)714,狀態(tài)陣列控制邏輯304將更新緩存行狀態(tài)。如果舊的狀態(tài)為排它02,將更新為共享505。如果舊的狀態(tài)為修改503,將更新為標(biāo)記504,如果舊的狀態(tài)為Shared-Last506,將更新為共享505,其余情況保持狀態(tài)不變。7、如果監(jiān)聽(tīng)命令類(lèi)型717為讀命令,且是本處理器子系統(tǒng)的引起的監(jiān)聽(tīng)命令,狀態(tài)陣列控制邏輯304將監(jiān)聽(tīng)接ロ單元輸入的物理地址713和監(jiān)聽(tīng)接ロ單元104輸入的復(fù)合應(yīng)答信號(hào)714保存。8、當(dāng)ニ級(jí)緩存監(jiān)控單元輸入有效的排它216時(shí),表明ニ級(jí)緩存某行緩存行獲得了主存數(shù)據(jù)或者執(zhí)行了 Cache Clean操作。該緩存行的物理地址由ニ級(jí)緩存監(jiān)控單元輸入物理地址213。狀態(tài)陣列控制邏輯304從共享數(shù)據(jù)緩存行狀態(tài)陣列301查找是否該物理地址屬于主存中共享數(shù)據(jù)地址,如果屬于則將該物理地址對(duì)應(yīng)的緩存行的狀態(tài)取出。如果狀態(tài)為無(wú)效501,表明ニ級(jí)緩存某行緩存行獲得了需要的主存數(shù)據(jù)。狀態(tài)陣列控制邏輯304將ニ級(jí)緩存監(jiān)控單元輸入的物理地址213和保存的監(jiān)聽(tīng)接ロ單元104輸入的物理地址713比 較。如果物理地址一致,則根據(jù)保存的監(jiān)聽(tīng)接ロ單元輸入的復(fù)合應(yīng)答信號(hào)更新緩存行狀態(tài)。如果復(fù)合應(yīng)答信號(hào)表明從主存中獲得數(shù)據(jù),則緩存行狀態(tài)更新為排它502。如果復(fù)合應(yīng)答信號(hào)表明從其它處理器ニ級(jí)緩存中獲得數(shù)據(jù),則緩存行狀態(tài)更新為Shared-LaSt506。如果狀態(tài)不為無(wú)效500,表明當(dāng)前處理器子系統(tǒng)對(duì)某行緩存行進(jìn)行了 Cache Clean操作。狀態(tài)陣列控制邏輯304把ニ級(jí)緩存監(jiān)控單元輸入314對(duì)應(yīng)的緩存行狀態(tài)從共享數(shù)據(jù)緩存行狀態(tài)陣列301取出,如果舊狀態(tài)為修改503,將更新為排它502。如果舊狀態(tài)為標(biāo)記504,將更新為共享505,其余情況保持狀態(tài)不變。9、如果監(jiān)聽(tīng)命令類(lèi)型717為寫(xiě)命令,且不為Cache Clean,監(jiān)聽(tīng)命令由系統(tǒng)中其它處理器子系統(tǒng)引起,狀態(tài)陣列控制邏輯304將共享數(shù)據(jù)緩存行狀態(tài)陣列301中和監(jiān)聽(tīng)接ロ單元輸入的物理地址713對(duì)應(yīng)的緩存行狀態(tài)更新為無(wú)效501。10、如果監(jiān)聽(tīng)命令類(lèi)型717為Cache Clean,,監(jiān)聽(tīng)命令由系統(tǒng)中其它處理器子系統(tǒng)引起,狀態(tài)陣列控制邏輯304把監(jiān)聽(tīng)接ロ單元輸入的物理地址713對(duì)應(yīng)的緩存行狀態(tài)從共享數(shù)據(jù)緩存行狀態(tài)陣列301取出,如果舊狀態(tài)為標(biāo)記504,將更新為共享505,其余情況保持不變。使用如上所述的維護(hù)ニ級(jí)緩存的一致性裝置非常便于系統(tǒng)擴(kuò)展。圖9所述為使用該裝置的PLB6總線(xiàn)架構(gòu)的對(duì)稱(chēng)式多核處理器系統(tǒng)示意圖。加入新的處理器時(shí),只需增加一個(gè)新的處理器子系統(tǒng),維護(hù)ニ級(jí)緩存的一致性將由硬件自動(dòng)完成。在圖9所示對(duì)稱(chēng)式多核處理器系統(tǒng)中,維護(hù)ニ級(jí)緩存一致性的流程圖如圖10所示。步驟1000 :處理器子系統(tǒng)A更新共享數(shù)據(jù)某條緩存行的內(nèi)容;步驟1001 :處理器子系統(tǒng)A的ニ級(jí)緩存一致性裝置將該共享數(shù)據(jù)地址對(duì)應(yīng)的緩存行更新為修改;步驟1002 :處理器子系統(tǒng)A的ニ級(jí)緩存一致性裝置將產(chǎn)生DClaim命令到PLB6主設(shè)備總線(xiàn);步驟1003 :其它處理器子系統(tǒng)的ニ級(jí)緩存一致性裝置內(nèi)部監(jiān)聽(tīng)接ロ收到該DClaim 命令;步驟1004 :其它處理器子系統(tǒng)的ニ級(jí)緩存一致性裝置內(nèi)將DClaim命令中共享數(shù)據(jù)地址對(duì)應(yīng)的緩存行在共享數(shù)據(jù)緩存狀態(tài)機(jī)中的狀態(tài)更新為無(wú)效;步驟1005 :它處理器子系統(tǒng)的ニ級(jí)緩存一致性裝置將更新ニ級(jí)緩存中對(duì)應(yīng)的共享數(shù)據(jù)的緩存行為無(wú)效;步驟1010 :處理器子系統(tǒng)B需要讀取主存共享數(shù)據(jù),該共享數(shù)據(jù)地址在步驟1000處理器子系統(tǒng)更新的緩存行的地址范圍內(nèi)。處理器子系統(tǒng)B的ニ級(jí)緩存一致性裝置在PLB6主設(shè)備總線(xiàn)發(fā)出讀命令;步驟1011 :處理器子系統(tǒng)A的ニ級(jí)緩存一致性裝置收到PLb6監(jiān)聽(tīng)總線(xiàn)的命令;步驟1012 :處理器子系統(tǒng)A的ニ級(jí)緩存一致性裝置根據(jù)監(jiān)聽(tīng)命令的地址要求,從ニ級(jí)緩存中取出處理器子系統(tǒng)B需要的數(shù)據(jù);
步驟1013 :監(jiān)聽(tīng)命令的地址對(duì)應(yīng)的緩存行在處理器子系統(tǒng)A中為修改狀態(tài),處理器子系統(tǒng)A的ニ級(jí)緩存一致性裝置發(fā)送局部響應(yīng)信號(hào),表明可以提供修改Intervention ;步驟1014 :處理器子系統(tǒng)A的ニ級(jí)緩存一致性裝置收到監(jiān)聽(tīng)接ロ收到的復(fù)合應(yīng)答
信號(hào);步驟1015 :處理器子系統(tǒng)A的ニ級(jí)緩存一致性裝置將監(jiān)聽(tīng)命令中共享數(shù)據(jù)地址對(duì)應(yīng)的緩存行在共享數(shù)據(jù)緩存狀態(tài)機(jī)中的狀態(tài)由修改更新為標(biāo)記;步驟1016 :處理器子系統(tǒng)A的ニ級(jí)緩存一致性裝置通過(guò)干涉總線(xiàn)將從ニ級(jí)緩存中取得的數(shù)據(jù)發(fā)送;步驟1017 :處理器子系統(tǒng)B獲得處理器子系統(tǒng)A的數(shù)據(jù),處理器子系統(tǒng)B的ニ級(jí)緩存一致性裝置將共享數(shù)據(jù)地址對(duì)應(yīng)的緩存行在共享數(shù)據(jù)緩存狀態(tài)機(jī)中的狀態(tài)更新為Shared-Last。表明處理器子系統(tǒng)B將提供干涉數(shù);。步驟1020 :處理器子系統(tǒng)C需要讀取主存共享數(shù)據(jù),該共享數(shù)據(jù)地址在步驟1000處理器子系統(tǒng)更新的緩存行的地址范圍內(nèi)。處理器子系統(tǒng)C的ニ級(jí)緩存一致性裝置在PLB6主設(shè)備總線(xiàn)發(fā)出讀命令;步驟1021 :處理器子系統(tǒng)B的ニ級(jí)緩存一致性裝置收到PLb6監(jiān)聽(tīng)總線(xiàn)的命令;步驟1022 :處理器子系統(tǒng)B的ニ級(jí)緩存一致性裝置根據(jù)監(jiān)聽(tīng)命令的地址要求,從ニ級(jí)緩存中取出處理器子系統(tǒng)B需要的數(shù)據(jù);步驟1023 :處監(jiān)聽(tīng)命令的地址對(duì)應(yīng)的緩存行在處理器子系統(tǒng)B中為Shared-Last狀態(tài),處理理器子系統(tǒng)B的ニ級(jí)緩存一致性裝置發(fā)送局部響應(yīng)信號(hào),表明可以提供Shared-Last Intervention ;步驟1024 :處理器子系統(tǒng)B的ニ級(jí)緩存一致性裝置收到監(jiān)聽(tīng)接ロ收到的復(fù)合應(yīng)答信號(hào)。步驟1025 :處理器子系統(tǒng)B的ニ級(jí)緩存一致性裝置將監(jiān)聽(tīng)命令中共享數(shù)據(jù)地址對(duì)應(yīng)的緩存行在共享數(shù)據(jù)緩存狀態(tài)機(jī)中的狀態(tài)由Shared-Last更新為共享。表明處理器子系統(tǒng)B將不再提供干渉數(shù)據(jù);步驟1026 :處理器子系統(tǒng)B的ニ級(jí)緩存一致性裝置通過(guò)干涉總線(xiàn)將從ニ級(jí)緩存中取得的數(shù)據(jù)發(fā)送。步驟1027 :處理器子系統(tǒng)C獲得處理器子系統(tǒng)B的數(shù)據(jù),處理器子系統(tǒng)C的ニ級(jí)緩存一致性裝置將共享數(shù)據(jù)地址對(duì)應(yīng)的緩存行在共享數(shù)據(jù)緩存狀態(tài)機(jī)中的狀態(tài)更新為Shared-Last0表明處理器子系統(tǒng)C將提供干涉數(shù)據(jù);
步驟1030 :步驟1020處理器B的讀請(qǐng)求也可以被處理器A的監(jiān)聽(tīng)接ロ收到;步驟1031 :監(jiān)聽(tīng)命令的地址對(duì)應(yīng)的緩存行在處理器子系統(tǒng)A中為標(biāo)記狀態(tài),處理器子系統(tǒng)A的ニ級(jí)緩存一致性裝置發(fā)送局部響應(yīng)信號(hào),表明可以提供teggedintervention ;步驟1032 :處理器子系統(tǒng)A的ニ級(jí)緩存一致性裝置收到監(jiān)聽(tīng)接ロ收到的復(fù)合應(yīng)答
信號(hào);步驟1033 :處理器子系統(tǒng)A的ニ級(jí)緩存一致性裝置收到監(jiān)聽(tīng)接ロ收到的復(fù)合應(yīng)答信號(hào)表明不需要處理器子系統(tǒng)A提供監(jiān)聽(tīng)命令中的地址對(duì)應(yīng)的共享數(shù)據(jù),轉(zhuǎn)入步驟1035。復(fù)合應(yīng)答信號(hào)表明需要處理器子系統(tǒng)A提供監(jiān)聽(tīng)命令中的地址對(duì)應(yīng)的共享數(shù)據(jù),可能的情況是處理器子系統(tǒng)B的ニ級(jí)緩存控制器將處理器子系統(tǒng)C的讀命令中地址對(duì)應(yīng)的緩存行標(biāo)記設(shè)為無(wú)效,所以處理器子系統(tǒng)B無(wú)法提供所需的數(shù)據(jù)。在這種情況下,轉(zhuǎn)入步驟1034 ;步驟1034 :處理器子系統(tǒng)A的ニ級(jí)緩存一致性裝置根據(jù)監(jiān)聽(tīng)命令的地址要求,從ニ級(jí)緩存中取出處理器子系統(tǒng)C需要的數(shù)據(jù)。處理器子系統(tǒng)A的ニ級(jí)緩存一致性裝置通過(guò)干涉總線(xiàn)將從ニ級(jí)緩存中取得的數(shù)據(jù)發(fā)送。處理器C獲得數(shù)據(jù)并更新共享數(shù)據(jù)緩存行的狀態(tài),和步驟1027 一致;步驟1035 :無(wú)論處理器子系統(tǒng)A是否提供干涉數(shù)據(jù),都不會(huì)更新監(jiān)控命令中地址對(duì)應(yīng)的緩存行在共享數(shù)據(jù)緩存狀態(tài)機(jī)中的狀態(tài)。
以上對(duì)本發(fā)明的一個(gè)實(shí)施例進(jìn)行了詳細(xì)說(shuō)明,但所述內(nèi)容僅為本發(fā)明的較佳實(shí)施例,不能被認(rèn)為用于限定本發(fā)明的實(shí)施范圍。凡依本發(fā)明申請(qǐng)范圍所作的均等變化與改進(jìn)等,均應(yīng)仍歸屬于本發(fā)明的專(zhuān)利涵蓋范圍之內(nèi)。
權(quán)利要求
1.對(duì)稱(chēng)式多核處理器維護(hù)二級(jí)緩存一致性裝置,該裝置設(shè)置在對(duì)稱(chēng)式多核處理器系統(tǒng)內(nèi)一個(gè)處理器子系統(tǒng)中的系統(tǒng)PLB6總線(xiàn)和二級(jí)緩存控制器之間,且與系統(tǒng)PLB6總線(xiàn)和二級(jí)緩存控制器相連,其特征在于由二級(jí)緩存監(jiān)控單元,共享數(shù)據(jù)緩存狀態(tài)機(jī)單元,干涉接口單元,監(jiān)聽(tīng)接口單元和主設(shè)備接口單元五個(gè)部分組成,共享數(shù)據(jù)緩存狀態(tài)機(jī)單元分別與二級(jí)緩存監(jiān)控單元、監(jiān)聽(tīng)接口單元和主設(shè)備接口單元相連,監(jiān)聽(tīng)接口單元與干涉接口單元相連。
2.根據(jù)權(quán)利要求I所述的對(duì)稱(chēng)式多核處理器維護(hù)二級(jí)緩存一致性裝置,其特征在于二級(jí)緩存監(jiān)控單元包括寄存器和與寄存器相連的比較電路。
3.根據(jù)權(quán)利要求I所述的對(duì)稱(chēng)式多核處理器維護(hù)二級(jí)緩存一致性裝置,其特征在于共享數(shù)據(jù)緩存狀態(tài)機(jī)單元包括依次相連的共享數(shù)據(jù)緩存行狀態(tài)陣列,狀態(tài)陣列控制邏輯和主設(shè)備ID比較電路。
4.根據(jù)權(quán)利要求I所述的對(duì)稱(chēng)式多核處理器維護(hù)二級(jí)緩存一致性裝置,其特征在于干涉接口單元包括二級(jí)緩存控制邏輯,PLB6干涉數(shù)據(jù)發(fā)送時(shí)序單元,PLB6發(fā)送干涉數(shù)據(jù)請(qǐng)求時(shí)序產(chǎn)生單元和數(shù)據(jù)緩沖器,數(shù)據(jù)緩沖器和PLB6發(fā)送干涉數(shù)據(jù)請(qǐng)求時(shí)序產(chǎn)生單元分別與PLB6干涉數(shù)據(jù)發(fā)送時(shí)序單元相連,二級(jí)緩存控制邏輯分別與數(shù)據(jù)緩沖器和PLB6發(fā)送干涉數(shù)據(jù)請(qǐng)求時(shí)序產(chǎn)生單元相連。
5.根據(jù)權(quán)利要求I所述的對(duì)稱(chēng)式多核處理器維護(hù)二級(jí)緩存一致性裝置,其特征在于監(jiān)聽(tīng)接口單元包括依次相連的緩存行查詢(xún)/反饋邏輯,PLB6復(fù)合應(yīng)答接收時(shí)序單元,PLB6局部響應(yīng)發(fā)送時(shí)序單元和PLB6監(jiān)聽(tīng)命令接收時(shí)序單元,其中緩存行查詢(xún)/反饋邏輯與PLB6局部響應(yīng)發(fā)送時(shí)序單元相連,緩存行查詢(xún)/反饋邏輯與PLB6監(jiān)聽(tīng)命令接收時(shí)序單元相連。
6.根據(jù)權(quán)利要求I所述的對(duì)稱(chēng)式多核處理器維護(hù)二級(jí)緩存一致性裝置,其特征在于主設(shè)備接口單元包括依次相連的緩存行查詢(xún)邏輯,PLB6主設(shè)備命令時(shí)序生成單元,PLB6主設(shè)備命令應(yīng)答接收時(shí)序單元,PLB6主設(shè)備數(shù)據(jù)發(fā)送時(shí)序單元,PLB6主設(shè)備命令應(yīng)答接收時(shí)序單元與PLB6主設(shè)備數(shù)據(jù)接收時(shí)序單元相連,PLB6主設(shè)備數(shù)據(jù)發(fā)送時(shí)序單元與寫(xiě)數(shù)據(jù)緩沖器相連,PLB6主設(shè)備數(shù)據(jù)接收時(shí)序單元與讀數(shù)據(jù)緩沖器相連。
7.一種采用如權(quán)利要求I所述的對(duì)稱(chēng)式多核處理器維護(hù)二級(jí)緩存一致性裝置的維護(hù)二級(jí)緩存一致性的方法,其特征在于包括如下步驟 步驟1000 :處理器子系統(tǒng)A更新共享數(shù)據(jù)某條緩存行的內(nèi)容; 步驟1001 :處理器子系統(tǒng)A的維護(hù)二級(jí)緩存一致性裝置將該共享數(shù)據(jù)地址對(duì)應(yīng)的緩存行更新為修改; 步驟1002 :處理器子系統(tǒng)A的維護(hù)二級(jí)緩存一致性裝置將產(chǎn)生DClaim命令到PLB6主設(shè)備總線(xiàn); 步驟1003:其它處理器子系統(tǒng)的維護(hù)二級(jí)緩存一致性裝置內(nèi)部監(jiān)聽(tīng)接口收到該DClaim 命令; 步驟1004 :其它處理器子系統(tǒng)的維護(hù)二級(jí)緩存一致性裝置內(nèi)將DClaim命令中共享數(shù)據(jù)地址對(duì)應(yīng)的緩存行在共享數(shù)據(jù)緩存狀態(tài)機(jī)中的狀態(tài)更新為無(wú)效; 步驟1005 :它處理器子系統(tǒng)的維護(hù)二級(jí)緩存一致性裝置將更新二級(jí)緩存中對(duì)應(yīng)的共享數(shù)據(jù)的緩存行為無(wú)效; 步驟1010 :處理器子系統(tǒng)B需要讀取主存共享數(shù)據(jù),該共享數(shù)據(jù)地址在步驟1000處理器子系統(tǒng)更新的緩存行的地址范圍內(nèi)。處理器子系統(tǒng)B的維護(hù)二級(jí)緩存一致性裝置在PLB6主設(shè)備總線(xiàn)發(fā)出讀命令; 步驟1011 :處理器子系統(tǒng)A的維護(hù)二級(jí)緩存一致性裝置收到PLb6監(jiān)聽(tīng)總線(xiàn)的命令;步驟1012 :處理器子系統(tǒng)A的維護(hù)二級(jí)緩存一致性裝置根據(jù)監(jiān)聽(tīng)命令的地址要求,從二級(jí)緩存中取出處理器子系統(tǒng)B需要的數(shù)據(jù); 步驟1013 :監(jiān)聽(tīng)命令的地址對(duì)應(yīng)的緩存行在處理器子系統(tǒng)A中為修改狀態(tài),處理器子系統(tǒng)A的維護(hù)二級(jí)緩存一致性裝置發(fā)送局部響應(yīng)信號(hào),表明可以提供修改Intervention ;步驟1014 :處理器子系統(tǒng)A的維護(hù)二級(jí)緩存一致性裝置收到監(jiān)聽(tīng)接口收到的復(fù)合應(yīng)答 信號(hào); 步驟1015 :處理器子系統(tǒng)A的維護(hù)二級(jí)緩存一致性裝置將監(jiān)聽(tīng)命令中共享數(shù)據(jù)地址對(duì)應(yīng)的緩存行在共享數(shù)據(jù)緩存狀態(tài)機(jī)中的狀態(tài)由修改更新為標(biāo)記; 步驟1016 :處理器子系統(tǒng)A的維護(hù)二級(jí)緩存一致性裝置通過(guò)干涉總線(xiàn)將從二級(jí)緩存中取得的數(shù)據(jù)發(fā)送; 步驟1017 :處理器子系統(tǒng)B獲得處理器子系統(tǒng)A的數(shù)據(jù),處理器子系統(tǒng)B的維護(hù)二級(jí)緩存一致性裝置將共享數(shù)據(jù)地址對(duì)應(yīng)的緩存行在共享數(shù)據(jù)緩存狀態(tài)機(jī)中的狀態(tài)更新為Shared-Last。表明處理器子系統(tǒng)B將提供干涉數(shù);。
步驟1020 :處理器子系統(tǒng)C需要讀取主存共享數(shù)據(jù),該共享數(shù)據(jù)地址在步驟1000處理器子系統(tǒng)更新的緩存行的地址范圍內(nèi)。處理器子系統(tǒng)C的維護(hù)二級(jí)緩存一致性裝置在PLB6主設(shè)備總線(xiàn)發(fā)出讀命令; 步驟1021 :處理器子系統(tǒng)B的維護(hù)二級(jí)緩存一致性裝置收到PLb6監(jiān)聽(tīng)總線(xiàn)的命令;步驟1022 :處理器子系統(tǒng)B的維護(hù)二級(jí)緩存一致性裝置根據(jù)監(jiān)聽(tīng)命令的地址要求,從二級(jí)緩存中取出處理器子系統(tǒng)B需要的數(shù)據(jù); 步驟1023 :處監(jiān)聽(tīng)命令的地址對(duì)應(yīng)的緩存行在處理器子系統(tǒng)B中為Shared-Last狀態(tài),處理理器子系統(tǒng)B的維護(hù)二級(jí)緩存一致性裝置發(fā)送局部響應(yīng)信號(hào),表明可以提供Shared-Last Intervention ; 步驟1024 :處理器子系統(tǒng)B的維護(hù)二級(jí)緩存一致性裝置收到監(jiān)聽(tīng)接口收到的復(fù)合應(yīng)答信號(hào)。
步驟1025 :處理器子系統(tǒng)B的維護(hù)二級(jí)緩存一致性裝置將監(jiān)聽(tīng)命令中共享數(shù)據(jù)地址對(duì)應(yīng)的緩存行在共享數(shù)據(jù)緩存狀態(tài)機(jī)中的狀態(tài)由Shared-Last更新為共享。表明處理器子系統(tǒng)B將不再提供干涉數(shù)據(jù); 步驟1026 :處理器子系統(tǒng)B的維護(hù)二級(jí)緩存一致性裝置通過(guò)干涉總線(xiàn)將從二級(jí)緩存中取得的數(shù)據(jù)發(fā)送。
步驟1027 :處理器子系統(tǒng)C獲得處理器子系統(tǒng)B的數(shù)據(jù),處理器子系統(tǒng)C的維護(hù)二級(jí)緩存一致性裝置將共享數(shù)據(jù)地址對(duì)應(yīng)的緩存行在共享數(shù)據(jù)緩存狀態(tài)機(jī)中的狀態(tài)更新為Shared-Last0表明處理器子系統(tǒng)C將提供干涉數(shù)據(jù); 步驟1030 :步驟1020處理器B的讀請(qǐng)求也可以被處理器A的監(jiān)聽(tīng)接口收到; 步驟1031 :監(jiān)聽(tīng)命令的地址對(duì)應(yīng)的緩存行在處理器子系統(tǒng)A中為標(biāo)記狀態(tài),處理器子系統(tǒng)A的維護(hù)二級(jí)緩存一致性裝置發(fā)送局部響應(yīng)信號(hào),表明可以提供teggedIntervention ;步驟1032 :處理器子系統(tǒng)A的維護(hù)二級(jí)緩存一致性裝置收到監(jiān)聽(tīng)接口收到的復(fù)合應(yīng)答信號(hào); 步驟1033 :處理器子系統(tǒng)A的維護(hù)二級(jí)緩存一致性裝置收到監(jiān)聽(tīng)接口收到的復(fù)合應(yīng)答信號(hào)表明不需要處理器子系統(tǒng)A提供監(jiān)聽(tīng)命令中的地址對(duì)應(yīng)的共享數(shù)據(jù),轉(zhuǎn)入步驟1035。復(fù)合應(yīng)答信號(hào)表明需要處理器子系統(tǒng)A提供監(jiān)聽(tīng)命令中的地址對(duì)應(yīng)的共享數(shù)據(jù),可能的情況是處理器子系統(tǒng)B的二級(jí)緩存控制器將處理器子系統(tǒng)C的讀命令中地址對(duì)應(yīng)的緩存行標(biāo)記設(shè)為無(wú)效,所以處理器子系統(tǒng)B無(wú)法提供所需的數(shù)據(jù)。在這種情況下,轉(zhuǎn)入步驟1034 ;步驟1034 :處理器子系統(tǒng)A的維護(hù)二級(jí)緩存一致性裝置根據(jù)監(jiān)聽(tīng)命令的地址要求,從二級(jí)緩存中取出處理器子系統(tǒng)C需要的數(shù)據(jù)。處理器子系統(tǒng)A的維護(hù)二級(jí)緩存一致性裝置通過(guò)干涉總線(xiàn)將從二級(jí)緩存中取得的數(shù)據(jù)發(fā)送。處理器C獲得數(shù)據(jù)并更新共享數(shù)據(jù)緩存行的狀態(tài),和步驟1027 —致; 步驟1035 :無(wú)論處理器子系統(tǒng)A是否提供干涉數(shù)據(jù),都不會(huì)更新監(jiān)控命令中地址對(duì)應(yīng)的緩存行在共享數(shù)據(jù)緩存狀態(tài)機(jī)中的狀態(tài)。
全文摘要
本發(fā)明提供對(duì)稱(chēng)式多核處理器維護(hù)二級(jí)緩存一致性的裝置及其方法,由二級(jí)緩存監(jiān)控單元,共享數(shù)據(jù)緩存狀態(tài)機(jī)單元,干涉接口單元,監(jiān)聽(tīng)接口單元和主設(shè)備接口單元五個(gè)部分組成,共享數(shù)據(jù)緩存狀態(tài)機(jī)單元分別與二級(jí)緩存監(jiān)控單元、監(jiān)聽(tīng)接口單元和主設(shè)備接口單元相連,監(jiān)聽(tīng)接口單元與干涉接口單元相連。本發(fā)明的有益效果是以硬件方式自動(dòng)完成緩存一致性處理,軟件干預(yù)很少,同時(shí)利用PLB6協(xié)議的干涉總線(xiàn)規(guī)范,在對(duì)共享數(shù)據(jù)進(jìn)行讀訪問(wèn)時(shí),可以從其它處理器緩存該數(shù)據(jù)的二級(jí)緩存中讀取數(shù)據(jù),通過(guò)干涉接口將讀數(shù)據(jù)返回,這樣減小了訪問(wèn)主存的開(kāi)銷(xiāo),提高了系統(tǒng)性能。
文檔編號(hào)G06F13/16GK102662885SQ20121009618
公開(kāi)日2012年9月12日 申請(qǐng)日期2012年4月1日 優(yōu)先權(quán)日2012年4月1日
發(fā)明者李楠, 王忠海, 肖佐楠, 鄭茳 申請(qǐng)人:天津國(guó)芯科技有限公司