一種緩存數(shù)據(jù)控制方法、節(jié)點(diǎn)控制器和系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,尤其涉及一種緩存數(shù)據(jù)控制方法、節(jié)點(diǎn)控制器和系統(tǒng)。
【背景技術(shù)】
[0002]在高性能處理器組建的CC-NUMA系統(tǒng)中,由于處理器本身的擴(kuò)展能力有限,需要將處理器分成多個(gè)節(jié)點(diǎn),利用節(jié)點(diǎn)內(nèi)的NC (Node Controller,節(jié)點(diǎn)控制器,簡(jiǎn)稱NC)進(jìn)行多處理器擴(kuò)展,以增加并行處理的處理器個(gè)數(shù),提升系統(tǒng)性能。CC-NUMA系統(tǒng)中,處理器通常具有大容量的擴(kuò)展內(nèi)存和較大容量的高速緩存(例如,L3緩存)。例如,常見的CC-NUMA系統(tǒng)中,單個(gè)處理器的擴(kuò)展內(nèi)存達(dá)到IT以上,L3緩存的容量達(dá)到30MB左右,一個(gè)節(jié)點(diǎn)的擴(kuò)展內(nèi)存的容量通常在幾個(gè)TB,以一個(gè)16個(gè)處理器的CC-NUMA系統(tǒng)為例,節(jié)點(diǎn)的處理器的L3緩存的總?cè)萘窟_(dá)到30*16 = 480MB左右,緩存的容量遠(yuǎn)遠(yuǎn)小于內(nèi)存容量。在NC中為每一個(gè)Cache Line都設(shè)置一個(gè)目錄項(xiàng)記錄是沒有,NC—般會(huì)采用壓縮目錄的方式,以減少目錄的容量。但是隨著節(jié)點(diǎn)內(nèi)擴(kuò)展內(nèi)存的急劇增加,目錄的容量也急劇增加,現(xiàn)有的壓縮目錄的方式無法很好的減少目錄存儲(chǔ)空間的需求。
【發(fā)明內(nèi)容】
[0003]本發(fā)明實(shí)施例所要解決的技術(shù)問題在于,提供一種一種緩存數(shù)據(jù)控制方法、節(jié)點(diǎn)控制器和系統(tǒng)??蓽p少目錄對(duì)存儲(chǔ)空間的需求。
[0004]為了解決上述技術(shù)問題,本發(fā)明實(shí)施例第一方面提供了一種多處理器系統(tǒng)的緩存數(shù)據(jù)控制方法,包括:
[0005]節(jié)點(diǎn)控制器接收源節(jié)點(diǎn)發(fā)送的數(shù)據(jù)訪問請(qǐng)求;其中,所述數(shù)據(jù)訪問請(qǐng)求攜帶訪問地址和訪問類型;
[0006]若所述訪問類型為共享請(qǐng)求,所述節(jié)點(diǎn)控制器查詢第一目錄中是否存在所述訪問地址的第一目錄項(xiàng),若為是,確定所述訪問地址對(duì)應(yīng)的緩存數(shù)據(jù)為獨(dú)占態(tài);
[0007]根據(jù)所述第一目錄項(xiàng)中的存儲(chǔ)位置確定所述緩存數(shù)據(jù)所在的目標(biāo)節(jié)點(diǎn);
[0008]所述節(jié)點(diǎn)控制器向所述目標(biāo)節(jié)點(diǎn)發(fā)送第一偵聽消息,所述第一偵聽消息用于指示所述目標(biāo)節(jié)點(diǎn)將所述緩存數(shù)據(jù)返回給所述節(jié)點(diǎn)控制器;
[0009]所述節(jié)點(diǎn)控制器將所述緩存數(shù)據(jù)返回至所述源節(jié)點(diǎn),并刪除所述第一目錄中所述第一目錄項(xiàng)。
[0010]結(jié)合第一方面,在第一種可能的實(shí)現(xiàn)方式中,還包括:
[0011]若所述訪問類型為獨(dú)占請(qǐng)求且所述第一目錄中存在所述訪問地址的第一目錄項(xiàng),確定所述訪問地址對(duì)應(yīng)的緩存數(shù)據(jù)為獨(dú)占態(tài);
[0012]根據(jù)所述第一目錄項(xiàng)中的存儲(chǔ)位置確定所述緩存數(shù)據(jù)所在的目標(biāo)節(jié)點(diǎn);
[0013]所述節(jié)點(diǎn)控制器向所述目標(biāo)節(jié)點(diǎn)節(jié)點(diǎn)發(fā)起第二偵聽消息,所述第二偵聽消息用于指示所述目標(biāo)節(jié)點(diǎn)將所述數(shù)據(jù)緩存返回給所述節(jié)點(diǎn)控制器;
[0014]所述節(jié)點(diǎn)控制器將所述訪問地址對(duì)應(yīng)的緩存數(shù)據(jù)返回至所述源節(jié)點(diǎn),并更新所述第一目錄中所述訪問地址的目錄項(xiàng)。
[0015]結(jié)合第一方面,在第二種可能的實(shí)現(xiàn)方式中,還包括:
[0016]若所述訪問類型為共享請(qǐng)求且所述第一目錄中不存在所述訪問地址的第一目錄項(xiàng),查詢所述訪問地址對(duì)應(yīng)的目標(biāo)處理器;
[0017]所述節(jié)點(diǎn)控制器向所述目標(biāo)處理器發(fā)送所述共享請(qǐng)求,所述共享請(qǐng)求用于指示所述目標(biāo)處理器在第二目錄中查詢所述訪問地址的第二目錄項(xiàng),若根據(jù)所述第二目錄項(xiàng)確定所述緩存數(shù)據(jù)為共享態(tài)且所述目標(biāo)處理器關(guān)聯(lián)的緩存中存在所述緩存數(shù)據(jù),所述目標(biāo)處理器向所述節(jié)點(diǎn)控制器返回所述緩存數(shù)據(jù);
[0018]所述節(jié)點(diǎn)控制器所述緩存數(shù)據(jù)返回至所述源節(jié)點(diǎn)。
[0019]結(jié)合第一方面的第一種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,還包括:
[0020]若所述訪問類型為獨(dú)占請(qǐng)求且所述第一目錄中不存在所述訪問地址的第一目錄項(xiàng),查詢所述訪問地址對(duì)應(yīng)的目標(biāo)處理器;
[0021 ] 所述節(jié)點(diǎn)控制器向所述目標(biāo)處理器發(fā)送所述獨(dú)占請(qǐng)求,所述獨(dú)占請(qǐng)求用于指示所述目標(biāo)處理器在第二目錄中查詢所述訪問地址的第二目錄項(xiàng),在所述第二目錄項(xiàng)中確定所述緩存數(shù)據(jù)的存儲(chǔ)狀態(tài)和存儲(chǔ)位置,若所述數(shù)據(jù)緩存為共享態(tài),所述目標(biāo)處理器向所述目標(biāo)處理器所在的節(jié)點(diǎn)內(nèi)的其他處理器和所述存儲(chǔ)位置對(duì)應(yīng)的節(jié)點(diǎn)發(fā)送第三偵聽消息,所述第三偵聽消息用于指示所述其他處理器或所述存儲(chǔ)位置對(duì)應(yīng)的其他節(jié)點(diǎn)返回所述數(shù)據(jù)緩存;
[0022]所述節(jié)點(diǎn)控制器將所述數(shù)據(jù)緩存返回至所述源節(jié)點(diǎn),并在所述第一目錄中創(chuàng)建所述訪問地址的第三目錄項(xiàng)。
[0023]結(jié)合第一方面至第三種可能的實(shí)現(xiàn)方式中的任意一種,在第四種可能的實(shí)現(xiàn)方式中,所述數(shù)據(jù)訪問請(qǐng)求可以由本地節(jié)點(diǎn)中的任意一個(gè)處理器發(fā)出或所述至少一個(gè)遠(yuǎn)端節(jié)點(diǎn)中任意一個(gè)遠(yuǎn)端節(jié)點(diǎn)發(fā)出。
[0024]本發(fā)明實(shí)施例第二方面提供了一種節(jié)點(diǎn)控制器,包括:
[0025]接收模塊,用于接收源節(jié)點(diǎn)發(fā)送的數(shù)據(jù)訪問請(qǐng)求;其中,所述數(shù)據(jù)訪問請(qǐng)求攜帶訪問地址和訪問類型,所述節(jié)點(diǎn)控制器位于本地節(jié)點(diǎn);
[0026]第一查詢模塊,用于若所述訪問類型為共享請(qǐng)求,查詢第一目錄中是否存在所述訪問地址的第一目錄項(xiàng),若為是,確定所述訪問地址對(duì)應(yīng)的緩存數(shù)據(jù)為獨(dú)占態(tài);
[0027]第一確定模塊,用于根據(jù)所述第一目錄項(xiàng)中的存儲(chǔ)位置確定所述緩存數(shù)據(jù)所在的第一遠(yuǎn)端目標(biāo)節(jié)點(diǎn);
[0028]第一發(fā)送模塊,用于向所述目標(biāo)節(jié)點(diǎn)發(fā)送第一偵聽消息,所述第一偵聽消息用于指示所述目標(biāo)節(jié)點(diǎn)將所述緩存數(shù)據(jù)返回給所述節(jié)點(diǎn)控制器;
[0029]刪除模塊,用于將所述緩存數(shù)據(jù)返回至所述源節(jié)點(diǎn),并刪除所述第一目錄中所述第一目錄項(xiàng)。
[0030]結(jié)合第二方面,在第一種可能的實(shí)現(xiàn)方式中,還包括:
[0031]第二查詢模塊,用于若所述訪問類型為獨(dú)占請(qǐng)求且所述第一目錄中存在所述訪問地址的第一目錄項(xiàng),確定所述訪問地址對(duì)應(yīng)的緩存數(shù)據(jù)為獨(dú)占態(tài);
[0032]第二確定模塊,用于根據(jù)所述第一目錄項(xiàng)中的存儲(chǔ)位置確定所述緩存數(shù)據(jù)所在的目標(biāo)節(jié)點(diǎn);
[0033]第二發(fā)送模塊,用于向所述目標(biāo)節(jié)點(diǎn)節(jié)點(diǎn)發(fā)起第二偵聽消息,所述第二偵聽消息用于指示所述目標(biāo)節(jié)點(diǎn)將所述數(shù)據(jù)緩存返回給所述節(jié)點(diǎn)控制器;
[0034]更新模塊,用于將所述訪問地址對(duì)應(yīng)的緩存數(shù)據(jù)返回至所述源節(jié)點(diǎn),并更新所述第一目錄中所述訪問地址的目錄項(xiàng)。
[0035]結(jié)合第二方面,在第二種可能的實(shí)現(xiàn)方式中,還包括:
[0036]第三查詢模塊,用于若所述訪問類型為共享請(qǐng)求且所述第一目錄中不存在所述訪問地址的第一目錄項(xiàng),查詢所述訪問地址對(duì)應(yīng)的目標(biāo)處理器;
[0037]第三發(fā)送模塊,用于向所述目標(biāo)處理器發(fā)送所述共享請(qǐng)求,所述共享請(qǐng)求用于指示所述目標(biāo)處理器在第二目錄中查詢所述訪問地址的第二目錄項(xiàng),若根據(jù)所述第二目錄項(xiàng)確定所述緩存數(shù)據(jù)為共享態(tài)且所述目標(biāo)處理器關(guān)聯(lián)的緩存中存在所述緩存數(shù)據(jù),所述目標(biāo)處理器向所述節(jié)點(diǎn)控制器返回所述緩存數(shù)據(jù);
[0038]返回模塊,用于所述緩存數(shù)據(jù)返回至所述源節(jié)點(diǎn)。
[0039]結(jié)合第二方面的第二種可能的實(shí)現(xiàn)方式,在第三種可能的實(shí)現(xiàn)方式中,還包括:
[0040]第四查詢模塊,用于若所述訪問類型為獨(dú)占請(qǐng)求且所述第一目錄中不存在所述訪問地址的第一目錄項(xiàng),查詢所述訪問地址對(duì)應(yīng)的目標(biāo)處理器;
[0041]第四發(fā)送模塊,用于向所述目標(biāo)處理器發(fā)送所述獨(dú)占請(qǐng)求,所述獨(dú)占請(qǐng)求用于指示所述目標(biāo)處理器在第二目錄中查詢所述訪問地址的第二目錄項(xiàng),在所述第二目錄項(xiàng)中確定所述緩存數(shù)據(jù)的存儲(chǔ)狀態(tài)和存儲(chǔ)位置,若所述數(shù)據(jù)緩存為共享態(tài),所述目標(biāo)處理器向所述目標(biāo)處理器所在的節(jié)點(diǎn)內(nèi)的其他處理器和所述存儲(chǔ)位置對(duì)應(yīng)的節(jié)點(diǎn)發(fā)送第三偵聽消息,所述第三偵聽消息用于指示所述其他處理器或所述存儲(chǔ)位置對(duì)應(yīng)的其他節(jié)點(diǎn)返回所述數(shù)據(jù)緩存;
[0042]創(chuàng)建模塊,用于將所述數(shù)據(jù)緩存返回至所述源節(jié)點(diǎn),并在所述第一目錄中創(chuàng)建所述訪問地址的第三目錄項(xiàng)。
[0043]本發(fā)明實(shí)施例第三方面提供了一種多處理器系統(tǒng),其特征在于,包括至少兩個(gè)節(jié)點(diǎn),其中,每個(gè)節(jié)點(diǎn)中有兩個(gè)上述任意一項(xiàng)所述的節(jié)點(diǎn)控制器。
[0044]實(shí)施本發(fā)明實(shí)施例,具有如下有益效果:
[0045]節(jié)點(diǎn)控制器的目錄中只記錄獨(dú)占態(tài)的緩存數(shù)據(jù)的目錄項(xiàng),不再記錄共享態(tài)的緩存數(shù)據(jù)的目錄項(xiàng),這樣減少目錄對(duì)存儲(chǔ)空間的需求,提高節(jié)點(diǎn)內(nèi)存儲(chǔ)器的利用率。
【附圖說明】
[0046]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0047]圖1是本發(fā)明實(shí)施例提供的一種多處理器系統(tǒng)的網(wǎng)絡(luò)架構(gòu)圖;
[0048]圖2是本發(fā)明實(shí)施例提供的一種多處理器系統(tǒng)的緩存數(shù)據(jù)控制方法的流程示意圖;
[0049]圖3a和圖3b是本發(fā)明實(shí)施例提供的一種處理器系統(tǒng)的緩存數(shù)據(jù)控制方法的另一流程示意圖;
[0050]圖4是本發(fā)明實(shí)施例提供的一種多處理器系統(tǒng)的第一交互示意圖;
[0051]圖5是本發(fā)明實(shí)施例提供的一種多處理器系統(tǒng)的第二交互示意圖;
[0052]圖6是本發(fā)明實(shí)施例提供的一種多處理器系統(tǒng)的第三交互示意圖;
[0053]圖7