本發(fā)明涉及數(shù)據(jù)塊處理領(lǐng)域,尤其涉及根據(jù)目錄信息維護(hù)Cache數(shù)據(jù)一致性的方法及裝置。
背景技術(shù):
分布共享存儲多處理器系統(tǒng)指由一個公共存儲器和多個處理器所構(gòu)成的數(shù)據(jù)塊處理系統(tǒng)。在眾多類型的分布共享存儲多處理器系統(tǒng)中,非一致性內(nèi)存架構(gòu)(Non Uniform Memory Access Architecture,簡稱NUMA)系統(tǒng)以其方便的編程環(huán)境和較好的可擴(kuò)展性,成為最常用的分布共享存儲多處理器系統(tǒng)。
NUMA系統(tǒng)通常由多個多處理器系統(tǒng)構(gòu)成,其中每一個子系統(tǒng)中可以由主存儲器(Main Memory)和若干處理器(Processer)構(gòu)成,各個子處理系統(tǒng)之間可以共享主存儲器的空間。由于NUMA系統(tǒng)中各個處理器共享主存儲器,各個處理器都可以改寫主存儲器中的任意數(shù)據(jù)塊,而各個處理器高速緩沖存儲器(Cache)也可以緩存主存儲器中的任意數(shù)據(jù)塊,從而可能會出現(xiàn)第一處理器Cache緩存了主存儲器中某個數(shù)據(jù)塊后,該數(shù)據(jù)塊又被第二處理器改寫的情況,導(dǎo)致第一處理器Cache所緩存的數(shù)據(jù)與主存儲器中的數(shù)據(jù)不一致。由于在NUMA系統(tǒng)中處理器的數(shù)量越多,出現(xiàn)處理器Cache所緩存的數(shù)據(jù)與主存儲器中的數(shù)據(jù)不一致的可能性越大,因此處理器高速緩沖存儲器(Cache)數(shù)據(jù)的一致性問題,成為限制NUMA系統(tǒng)規(guī)模及可擴(kuò)展性的關(guān)鍵問題。
現(xiàn)有技術(shù)中,NUMA系統(tǒng)通常會利用保存在互連芯片上的目錄信息來保證Cache數(shù)據(jù)的一致性。具體來說,現(xiàn)有NUMA系統(tǒng)中通常會設(shè)有一個互連芯片,該互連芯片中開辟有目錄存儲空間,該目錄存儲空間用于保存目錄信息,所述目錄信息用于記錄主存儲器中各個數(shù)據(jù)塊是否被處理器Cache所緩存,以及被哪個處理器Cache所緩存等。當(dāng)某個指定處理器需要修改主存儲器中某個數(shù)據(jù)塊時,首先根據(jù)目錄信息確定是否有處理器Cache中已經(jīng)緩存了該數(shù)據(jù)塊;當(dāng)發(fā)現(xiàn)目標(biāo)處理器Cache中緩存有該數(shù)據(jù)塊時,該指定處理器可以向該目標(biāo)處理器發(fā)送點對點的消息,以使其目標(biāo)處理器Cache中已緩存的該數(shù)據(jù)塊失效,在發(fā)送完所述點對點消息之后,所述指定處理器才能修改該數(shù)據(jù)塊。采用此方式,可以確保系統(tǒng)中各個處理器Cache中已緩存的數(shù)據(jù)塊與主存儲器中數(shù)據(jù)塊一致,從而解決處理器Cache數(shù)據(jù)的一致性問題。
在利用目錄信息來保證處理器Cache數(shù)據(jù)的一致性時,NUMA系統(tǒng)的擴(kuò)展和處理器個數(shù)的增加會導(dǎo)致目錄信息的數(shù)據(jù)量隨之增加,目錄存儲器的存儲空間也需要隨著目錄信 息的數(shù)據(jù)量的增加而加大。因此,采用現(xiàn)有方法解決處理器Cache數(shù)據(jù)的一致性問題,在NUMA系統(tǒng)規(guī)模較大時,因此需要使用較的目錄存儲空間來存儲目錄信息互聯(lián)芯片具有較大存儲,而目錄存儲空間加大伴隨的代價是互連芯片結(jié)構(gòu)復(fù)雜化及芯片面積大幅增加。而互連芯片結(jié)構(gòu)復(fù)雜化及芯片面積大幅增加,則會增加NUMA系統(tǒng)設(shè)計和實現(xiàn)的難度。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例提供了根據(jù)目錄信息維護(hù)Cache數(shù)據(jù)一致性的方法及裝置,可以降低NUMA系統(tǒng)設(shè)計和實現(xiàn)的難度。
第一方面,本發(fā)明實施例提供了一種根據(jù)目錄信息維護(hù)Cache數(shù)據(jù)一致性的方法,目錄信息保存在主存儲器中,所述目錄信息用于記錄主存儲器系統(tǒng)區(qū)域中數(shù)據(jù)塊被各個處理器高速緩沖存儲器所緩存的狀況,所述方法包括:接收數(shù)據(jù)塊狀態(tài)變更請求;根據(jù)所述數(shù)據(jù)塊狀態(tài)變更請求確定主存儲器系統(tǒng)區(qū)域中的指定數(shù)據(jù)塊;根據(jù)保存在所述主存儲器中的目錄信息確定目標(biāo)處理器,其中,所述目標(biāo)處理器是指已將指定數(shù)據(jù)塊存儲至處理器Cache中的處理器;向所述目標(biāo)處理器發(fā)送狀態(tài)變更指示,所述數(shù)據(jù)塊狀態(tài)變更請求用于請求所述目標(biāo)處理器變更目標(biāo)處理器Cache中已緩存所述指定數(shù)據(jù)塊的狀態(tài)。
結(jié)合第一方面,在第一方面第一種可能的實現(xiàn)方式中,所述根據(jù)保存在所述主存儲器中的目錄信息確定目標(biāo)處理器包括:檢測所述主存儲器的目錄區(qū)域中是否存在與所述指定數(shù)據(jù)塊對應(yīng)的指定目錄信息,所述主存儲器的目錄區(qū)域用于保存所述目錄信息;當(dāng)所述主存儲器的目錄區(qū)域中存在所述指定目錄信息時,根據(jù)所述指定目錄信息確定所述目標(biāo)處理器。
結(jié)合第一方面,在第一方面第二種可能的實現(xiàn)方式中,所述根據(jù)保存在所述主存儲器中的目錄信息確定目標(biāo)處理器包括:檢測互連芯片的目錄緩存中是否存在與所述指定數(shù)據(jù)塊對應(yīng)的指定目錄信息;當(dāng)互連芯片的目錄緩存中不存在所述指定目錄信息時,檢測所述主存儲器的目錄區(qū)域中是否存在與所述指定數(shù)據(jù)塊對應(yīng)的指定目錄信息;當(dāng)所述主存儲器的目錄區(qū)域中存在所述指定目錄信息時,根據(jù)所述指定目錄信息確定所述目標(biāo)處理器。
結(jié)合第一方面第二種可能的實現(xiàn)方式,在第二方面第三種可能的實現(xiàn)方式中,所述方法還包括:當(dāng)互連芯片的目錄緩存中存在所述指定目錄信息時,根據(jù)所述指定目錄信息確定所述目標(biāo)處理器。
結(jié)合第一方面第二種可能的實現(xiàn)方式,在第二方面第四種可能的實現(xiàn)方式中,所述方法還包括:當(dāng)互連芯片的目錄緩存中不存在所述指定目錄信息時,更新所述目錄緩存 中的目錄信息。
結(jié)合第一方面第二至四種可能的實現(xiàn)方式中任意一種,在第二方面第五種可能的實現(xiàn)方式中,所述目錄緩存中保存的目錄信息由所述主存儲器目錄區(qū)域中的目錄信息以多路組相聯(lián)方式映射生成。
結(jié)合第一方面或第一方面第一至五種可能的實現(xiàn)方式中任意一種,在第一方面第六種可能的實現(xiàn)方式中,其特征在于,所述向目標(biāo)處理器發(fā)送狀態(tài)變更指示包括:當(dāng)所述數(shù)據(jù)塊狀態(tài)變更請求為數(shù)據(jù)塊改寫請求時,向所述目標(biāo)處理器發(fā)送失效指示,所述失效指示用于指示所述目標(biāo)處理器失效目標(biāo)處理器Cache中已緩存的所述指定數(shù)據(jù)塊;或者,當(dāng)所述數(shù)據(jù)塊狀態(tài)變更請求為數(shù)據(jù)塊共享請求時,向所述目標(biāo)處理器發(fā)送共享指示,所述共享指示用于指示所述目標(biāo)處理器將目標(biāo)處理器Cache中已緩存的所述指定數(shù)據(jù)塊修改為共享模式。
結(jié)合第一方面或第一方面第一至六種可能的實現(xiàn)方式中任意一種,在第一方面第七種可能的實現(xiàn)方式中,所述目錄信息包括訪問狀態(tài)字段、信息狀態(tài)字段及緩存指示字段,其中所述訪問狀態(tài)字段用于指示所述目錄信息是否正在被訪問,所述信息狀態(tài)字段用于指示所述目錄信息的狀態(tài),所述緩存指示字段用于指示所述目錄信息所對應(yīng)數(shù)據(jù)塊被處理器Cache所緩存的狀況。
第二方面,本發(fā)明實施例提供了一種根據(jù)目錄信息維護(hù)Cache數(shù)據(jù)一致性的裝置,目錄信息保存在主存儲器中,所述目錄信息用于記錄主存儲器系統(tǒng)區(qū)域中數(shù)據(jù)塊被各個處理器高速緩沖存儲器所緩存的狀況,所述裝置包括:接收單元,用于接收數(shù)據(jù)塊狀態(tài)變更請求;指定數(shù)據(jù)塊確定單元,用于根據(jù)所述數(shù)據(jù)塊狀態(tài)變更請求確定主存儲器系統(tǒng)區(qū)域中的指定數(shù)據(jù)塊;目標(biāo)處理器確定單元,用于根據(jù)保存在所述主存儲器中的目錄信息確定目標(biāo)處理器,其中,所述目標(biāo)處理器是指已將指定數(shù)據(jù)塊存儲至處理器Cache中的處理器;發(fā)送單元,用于向所述目標(biāo)處理器發(fā)送狀態(tài)變更指示,所述數(shù)據(jù)塊狀態(tài)變更請求用于請求所述目標(biāo)處理器變更目標(biāo)處理器Cache中已緩存所述指定數(shù)據(jù)塊的狀態(tài)。
結(jié)合第二方面,在第二方面第一種可能的實現(xiàn)方式中,所述目標(biāo)處理器確定單元,包括:第一檢測子單元,用于檢測所述主存儲器的目錄區(qū)域中是否存在與所述指定數(shù)據(jù)塊對應(yīng)的指定目錄信息,所述主存儲器的目錄區(qū)域用于保存所述目錄信息;第一確定子單元,用于在所述主存儲器的目錄區(qū)域中存在所述指定目錄信息時,根據(jù)所述指定目錄信息確定所述目標(biāo)處理器。
結(jié)合第二方面,在第二方面第二種可能的實現(xiàn)方式中,所述目標(biāo)處理器確定單元,包括:第二檢測子單元,用于檢測互連芯片的目錄緩存中是否存在與所述指定數(shù)據(jù)塊對 應(yīng)的指定目錄信息;第三檢測子單元,用于在互連芯片的目錄緩存中不存在所述指定目錄信息時,檢測所述主存儲器的目錄區(qū)域中是否存在與所述指定數(shù)據(jù)塊對應(yīng)的指定目錄信息;第二確定子單元,用于在所述主存儲器的目錄區(qū)域中存在所述指定目錄信息時,根據(jù)所述指定目錄信息確定所述目標(biāo)處理器。
結(jié)合第二方面第二種可能的實現(xiàn)方式,在第二方面第三種可能的實現(xiàn)方式中,所述第二確定子單元,還用于在互連芯片的目錄緩存中存在所述指定目錄信息時,根據(jù)所述指定目錄信息確定所述目標(biāo)處理器。
結(jié)合第二方面第二種可能的實現(xiàn)方式,在第二方面第四種可能的實現(xiàn)方式中,所述目標(biāo)處理器確定單元,還包括:更新子單元,用于在互連芯片的目錄緩存中不存在所述指定目錄信息時,更新所述目錄緩存中的目錄信息
結(jié)合第二方面第二至四種可能的實現(xiàn)方式中任意一種,在第二方面第五種可能的實現(xiàn)方式中,所述目錄緩存中保存的目錄信息由所述主存儲器目錄區(qū)域中的目錄信息以多路組相聯(lián)方式映射生成。
結(jié)合第二方面或第二方面第一至五種可能的實現(xiàn)方式中任意一種,在第二方面第六種可能的實現(xiàn)方式中,所述發(fā)送單元,用于當(dāng)所述數(shù)據(jù)塊狀態(tài)變更請求為數(shù)據(jù)塊改寫請求時,向所述目標(biāo)處理器發(fā)送失效指示,所述失效指示用于指示所述目標(biāo)處理器失效目標(biāo)處理器Cache中已緩存的所述指定數(shù)據(jù)塊;或者,用于當(dāng)所述數(shù)據(jù)塊狀態(tài)變更請求為數(shù)據(jù)塊共享請求時,向所述目標(biāo)處理器發(fā)送共享指示,所述共享指示用于指示所述目標(biāo)處理器將目標(biāo)處理器Cache中已緩存的所述指定數(shù)據(jù)塊修改為共享模式。
結(jié)合第二方面或第二方面第一至六種可能的實現(xiàn)方式中任意一種,在第二方面第七種可能的實現(xiàn)方式中,所述目錄信息包括訪問狀態(tài)字段、信息狀態(tài)字段及緩存指示字段,其中所述訪問狀態(tài)字段用于指示所述目錄信息是否正在被訪問,所述信息狀態(tài)字段用于指示所述目錄信息的狀態(tài),所述緩存指示字段用于指示所述目錄信息所對應(yīng)數(shù)據(jù)塊被處理器Cache所緩存的狀況。
在本發(fā)明實施例中,接收數(shù)據(jù)塊狀態(tài)變更請求;根據(jù)所述數(shù)據(jù)塊狀態(tài)變更請求確定主存儲器系統(tǒng)區(qū)域中的指定數(shù)據(jù)塊;根據(jù)保存在所述主存儲器中的目錄信息確定目標(biāo)處理器,其中,所述目錄信息用于記錄主存儲器系統(tǒng)區(qū)域中數(shù)據(jù)塊被各個處理器Cache所緩存的狀況,所述目標(biāo)處理器是指已將指定數(shù)據(jù)塊存儲至處理器Cache中的處理器;向所述目標(biāo)處理器發(fā)送狀態(tài)變更指示,所述數(shù)據(jù)塊狀態(tài)變更請求用于請求所述目標(biāo)處理器變更目標(biāo)處理器Cache中已緩存所述指定數(shù)據(jù)塊的狀態(tài)。采用本發(fā)明實施例,目錄信息存儲在主存儲器中,從而可以避免使用互聯(lián)芯片的目錄存儲空間來存儲目錄信息,降低 NUMA系統(tǒng)設(shè)計和實現(xiàn)的難度。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,對于本領(lǐng)域普通技術(shù)人員而言,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明根據(jù)目錄信息維護(hù)Cache數(shù)據(jù)一致性的方法一個實施例的流程圖;
圖2為本發(fā)明目錄信息的結(jié)構(gòu)示意圖;
圖3為本發(fā)明根據(jù)目錄信息維護(hù)Cache數(shù)據(jù)一致性的裝置一個實施例的示意圖。
具體實施方式
下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整的描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
在此需要說明的是,其本發(fā)明的該非一致內(nèi)存訪問架構(gòu)系統(tǒng),可以由至少一個多處理器系統(tǒng)(Multiprocessor Systems)構(gòu)成,其中每一個多處理器系統(tǒng)可以包含主存儲器(Main Memory)和至少兩個處理器,目錄信息可以保存在主存儲器中。其中,主存儲器包含目錄區(qū)域及系統(tǒng)區(qū)域,所述目錄區(qū)域中用于保存目錄信息,而系統(tǒng)區(qū)域用于保存主存儲器所需保存的數(shù)據(jù)塊,每一個目錄區(qū)域既可以用于存儲其所屬主存儲器系統(tǒng)區(qū)域中數(shù)據(jù)塊的目錄信息,也可以用于存儲其他主存儲器系統(tǒng)區(qū)域中數(shù)據(jù)塊的目錄信息。
參見圖1,為本發(fā)明根據(jù)目錄信息維護(hù)Cache數(shù)據(jù)一致性的方法一個實施例的流程示意圖。該方法包括如下步驟:
步驟101,接收數(shù)據(jù)塊狀態(tài)變更請求。
NUMA系統(tǒng)中的處理器首先接收數(shù)據(jù)塊狀態(tài)變更請求,其中所述數(shù)據(jù)塊狀態(tài)變更請求可以由系統(tǒng)中的應(yīng)用發(fā)送。其中,所述數(shù)據(jù)塊狀態(tài)變更請求可以是數(shù)據(jù)塊改寫請求、數(shù)據(jù)塊共享請求等,其中,數(shù)據(jù)塊改寫請求用于請求改寫主存儲器中的某數(shù)據(jù)塊,而數(shù)據(jù)塊共享請求用于請求共享主存儲器中某數(shù)據(jù)塊。
步驟102,根據(jù)所述數(shù)據(jù)塊狀態(tài)變更請求確定主存儲器系統(tǒng)區(qū)域中的指定數(shù)據(jù)塊。
處理器在接收到數(shù)據(jù)塊狀態(tài)變更請求后,首先根據(jù)該數(shù)據(jù)塊狀態(tài)變更請求確定需要改寫主存儲器系統(tǒng)區(qū)域中的哪一個數(shù)據(jù)塊。
例如,在所述數(shù)據(jù)塊狀態(tài)變更請求中攜帶有指定數(shù)據(jù)塊的地址范圍時,可以認(rèn)為該地址范圍內(nèi)的數(shù)據(jù)塊即為指定數(shù)據(jù)塊。在所述數(shù)據(jù)塊狀態(tài)變更請求中攜帶有指定數(shù)據(jù)塊的起始地址,并能夠根據(jù)數(shù)據(jù)塊狀態(tài)變更請求確定指定數(shù)據(jù)塊的大小時,可以根據(jù)所述指定數(shù)據(jù)塊的起始地址及指定數(shù)據(jù)塊的大小確定指定數(shù)據(jù)塊。
步驟103,根據(jù)保存在所述主存儲器中的目錄信息確定目標(biāo)處理器,其中,所述目錄信息用于記錄主存儲器系統(tǒng)區(qū)域中數(shù)據(jù)塊被各個處理器Cache所緩存的狀況,所述目標(biāo)處理器是指已將指定數(shù)據(jù)塊存儲至處理器Cache中的處理器。
在指定數(shù)據(jù)塊被確定之后,處理器可以檢測所述主存儲器的目錄區(qū)域中是否存在與所述指定數(shù)據(jù)塊對應(yīng)的指定目錄信息;當(dāng)所述主存儲器目錄區(qū)域中存在所述指定目錄信息時,根據(jù)所述指定目錄信息確定所述目標(biāo)處理器。
所述主存儲器目錄區(qū)域中每一條目錄信息可以與主存儲器中一個固定大小的數(shù)據(jù)塊相對應(yīng),該數(shù)據(jù)塊的大小可以根據(jù)需要預(yù)先設(shè)置,例如,可以與處理器Cache中每一個緩存行(Cacheline)的大小相同。
目錄區(qū)域中的目錄信息可以采用局部性原理以多路組相聯(lián)方式映射生成。采用局部性原理,并以多路組相聯(lián)的方式映射生成目錄信息,可以僅生成主存儲器中可能被處理器Cache緩存的數(shù)據(jù)塊對應(yīng)的目錄信息,而不必生成主存儲器中所有數(shù)據(jù)塊對應(yīng)的目錄信息,從而可以大大減小目錄信息的數(shù)據(jù)量,減小目錄區(qū)域所占用的空間;并且系統(tǒng)區(qū)域中固定地址的數(shù)據(jù)塊對應(yīng)的信息會被保存在目錄區(qū)域的固定地址,根據(jù)數(shù)據(jù)塊的地址可以很容忍確定該數(shù)據(jù)塊對應(yīng)目錄信息的保存地址,從而可以加快目錄信息的查找速度。
其中,所述目錄信息的結(jié)構(gòu)可以如圖2所示,所述目錄信息包括訪問狀態(tài)字段、信息狀態(tài)字段、緩存指示字段,其中所述訪問狀態(tài)字段用于指示所述目錄信息是否正在被訪問,所述信息狀態(tài)字段用于指示所述目錄信息的狀態(tài),所述緩存指示字段用于指示所述目錄信息所對應(yīng)數(shù)據(jù)塊被處理器Cache所緩存的狀況。通常情況下,所述訪問狀態(tài)字段的長度可以為1bit,所述信息狀態(tài)字段的長度可以為3bit,而緩存指示字段的長度可以為4bit。其中,所述目錄信息所對應(yīng)數(shù)據(jù)塊被處理器Cache所緩存的狀況是指,所述目錄信息對應(yīng)的數(shù)據(jù)塊是否被處理器Cache所緩存以及被哪一個處理器Cache所緩存等。
為加快數(shù)據(jù)塊改寫的處理速度,所述NUMA系統(tǒng)也可以包括一個互連芯片,該互連芯片上設(shè)置有目錄緩存,該目錄緩存用于以緩存方式存儲主存儲器目錄區(qū)域中目錄信息。 為減少目錄緩存的空間,所述目錄緩存中保存的目錄信息由所述主存儲器目錄區(qū)域中的目錄信息以多路組相聯(lián)方式映射生成。
因此在指定數(shù)據(jù)塊確定之后,處理器也可以先檢測互連芯片的目錄緩存中是否存在與所述指定數(shù)據(jù)塊對應(yīng)的指定目錄信息;當(dāng)互連芯片的目錄緩存中存在所述指定目錄信息時,根據(jù)所述指定目錄信息確定所述目標(biāo)處理器。當(dāng)互連芯片的目錄緩存中不存在所述指定目錄信息時,處理器再檢測所述主存儲器的目錄區(qū)域中是否存在與所述指定數(shù)據(jù)塊對應(yīng)的指定目錄信息;當(dāng)所述主存儲器目錄區(qū)域中存在所述指定目錄信息時,根據(jù)所述指定目錄信息確定所述目標(biāo)處理器。
如果所述目錄信息包括訪問狀態(tài)字段、信息狀態(tài)字段、緩存指示字段,在根據(jù)指定目錄信息確定目標(biāo)處理器時,可以分析所述指定目錄信息的緩存指示字段的內(nèi)容,根據(jù)緩存指示字段的內(nèi)容確定目標(biāo)處理器。例如,在根據(jù)緩存指示字段確定第一處理器Cache中緩存有該指定數(shù)據(jù)塊時,可以確定第一處理器為目標(biāo)處理器。在根據(jù)緩存指示字段確定第二處理器Cache及第三處理器Cache中均緩存有該指定數(shù)據(jù)塊時,可以確定第二處理器及第三處理器均為目標(biāo)處理器。
如果互連芯片的目錄緩存及所述主存儲器目錄區(qū)域中均不存在指定目錄信息,則可以認(rèn)為指定數(shù)據(jù)塊未被任何一個處理器Cache所緩存,處理器可以根據(jù)所述數(shù)據(jù)塊狀態(tài)變更請求直接變更所述指定數(shù)據(jù)塊的狀態(tài)。
步驟104,向所述目標(biāo)處理器發(fā)送狀態(tài)變更指示,所述數(shù)據(jù)塊狀態(tài)變更請求用于請求所述目標(biāo)處理器變更目標(biāo)處理器Cache中已緩存所述指定數(shù)據(jù)塊的狀態(tài)。
如果根據(jù)所述目錄信息確定存在目標(biāo)處理器,那么處理器可以向所述目標(biāo)處理器發(fā)送狀態(tài)變更指示,所述數(shù)據(jù)塊狀態(tài)變更請求用于請求所述目標(biāo)處理器變更目標(biāo)處理器Cache中已緩存所述指定數(shù)據(jù)塊的狀態(tài)。目標(biāo)處理器可以根據(jù)所述數(shù)據(jù)塊狀態(tài)變更請求修改所述指定數(shù)據(jù)塊的狀態(tài),從而可以保證各個處理器Cache中數(shù)據(jù)的一致性。
根據(jù)數(shù)據(jù)塊狀態(tài)變更請求類型的不同,所述狀態(tài)變更指示的可以不相同。例如,當(dāng)所述數(shù)據(jù)塊狀態(tài)變更請求為數(shù)據(jù)塊改寫請求時,向所述目標(biāo)處理器發(fā)送失效指示,所述失效指示用于指示所述目標(biāo)處理器失效目標(biāo)處理器Cache中已緩存的所述指定數(shù)據(jù)塊;或者,當(dāng)所述數(shù)據(jù)塊狀態(tài)變更請求為數(shù)據(jù)塊共享請求時,向所述目標(biāo)處理器發(fā)送共享指示,所述共享指示用于指示所述目標(biāo)處理器將目標(biāo)處理器Cache中已緩存的所述指定數(shù)據(jù)塊修改為共享模式。
目標(biāo)處理器在接收到所述狀態(tài)變更指示之后,可以根據(jù)狀態(tài)變更指示改變指定數(shù)據(jù) 塊的狀態(tài)。例如,當(dāng)目標(biāo)處理器接收到失效指示時,可以使目標(biāo)處理器Cache中該失效指示對應(yīng)的指定數(shù)據(jù)塊失效;而當(dāng)目標(biāo)處理器接收到共享指示時,則可以共享目標(biāo)處理器Cache中該共享指示對應(yīng)的指定數(shù)據(jù)塊。
在本實施例中,接收數(shù)據(jù)塊狀態(tài)變更請求;根據(jù)所述數(shù)據(jù)塊狀態(tài)變更請求確定主存儲器系統(tǒng)區(qū)域中的指定數(shù)據(jù)塊;根據(jù)保存在所述主存儲器中的目錄信息確定目標(biāo)處理器,其中,所述目錄信息用于記錄主存儲器系統(tǒng)區(qū)域中數(shù)據(jù)塊被各個處理器Cache所緩存的狀況,所述目標(biāo)處理器是指已將指定數(shù)據(jù)塊存儲至處理器Cache中的處理器;向所述目標(biāo)處理器發(fā)送狀態(tài)變更指示,所述數(shù)據(jù)塊狀態(tài)變更請求用于請求所述目標(biāo)處理器變更目標(biāo)處理器Cache中已緩存所述指定數(shù)據(jù)塊的狀態(tài)。采用本實施例,目錄信息存儲在主存儲器中,從而可以避免使用互聯(lián)芯片的目錄存儲空間來存儲目錄信息,降低NUMA系統(tǒng)設(shè)計和實現(xiàn)的難度。
與根據(jù)目錄信息維護(hù)Cache數(shù)據(jù)一致性的方法的實施例相對應(yīng),本發(fā)明實施例還提供了根據(jù)目錄信息維護(hù)Cache數(shù)據(jù)一致性的裝置的實施例。
參見圖3,為本發(fā)明根據(jù)目錄信息維護(hù)Cache數(shù)據(jù)一致性的裝置一個實施例的結(jié)構(gòu)示意圖,其中,目錄信息保存在主存儲器中,所述目錄緩存中保存的目錄信息由所述主存儲器目錄區(qū)域中的目錄信息以多路組相聯(lián)方式映射生成。該裝置可以用于執(zhí)行前述實施例中根據(jù)目錄信息維護(hù)Cache數(shù)據(jù)一致性的方法。
如圖3所示,所述裝置可以包括:接收單元301,指定數(shù)據(jù)塊確定單元302,目標(biāo)處理器確定單元303及發(fā)送單元304。
其中,接收單元301,用于接收數(shù)據(jù)塊狀態(tài)變更請求;指定數(shù)據(jù)塊確定單元302,用于根據(jù)所述數(shù)據(jù)塊狀態(tài)變更請求確定主存儲器系統(tǒng)區(qū)域中的指定數(shù)據(jù)塊;目標(biāo)處理器確定單元303,用于根據(jù)保存在所述主存儲器中的目錄信息確定目標(biāo)處理器,其中,所述目標(biāo)處理器是指已將指定數(shù)據(jù)塊存儲至處理器Cache中的處理器;發(fā)送單元304,用于向所述目標(biāo)處理器發(fā)送狀態(tài)變更指示,所述數(shù)據(jù)塊狀態(tài)變更請求用于請求所述目標(biāo)處理器變更目標(biāo)處理器Cache中已緩存所述指定數(shù)據(jù)塊的狀態(tài)。
可選的,所述目標(biāo)處理器確定單元303,包括:第一檢測子單元,用于檢測所述主存儲器的目錄區(qū)域中是否存在與所述指定數(shù)據(jù)塊對應(yīng)的指定目錄信息,所述主存儲器的目錄區(qū)域用于保存所述目錄信息;第一確定子單元,用于在所述主存儲器的目錄區(qū)域中存在所述指定目錄信息時,根據(jù)所述指定目錄信息確定所述目標(biāo)處理器。
可選的,所述目標(biāo)處理器確定單元303,包括:第二檢測子單元,用于檢測互連芯 片的目錄緩存中是否存在與所述指定數(shù)據(jù)塊對應(yīng)的指定目錄信息;第三檢測子單元,用于在互連芯片的目錄緩存中不存在所述指定目錄信息時,檢測所述主存儲器的目錄區(qū)域中是否存在與所述指定數(shù)據(jù)塊對應(yīng)的指定目錄信息;第二確定子單元,用于在所述主存儲器的目錄區(qū)域中存在所述指定目錄信息時,根據(jù)所述指定目錄信息確定所述目標(biāo)處理器。其中,所述第二確定子單元,還可以用于在互連芯片的目錄緩存中存在所述指定目錄信息時,根據(jù)所述指定目錄信息確定所述目標(biāo)處理器。所述目標(biāo)處理器確定單元303,還可以包括:更新子單元,用于在互連芯片的目錄緩存中不存在所述指定目錄信息時,更新所述目錄緩存中的目錄信息。
可選的,所述發(fā)送單元304,用于當(dāng)所述數(shù)據(jù)塊狀態(tài)變更請求為數(shù)據(jù)塊改寫請求時,向所述目標(biāo)處理器發(fā)送失效指示,所述失效指示用于指示所述目標(biāo)處理器失效目標(biāo)處理器Cache中已緩存的所述指定數(shù)據(jù)塊;或者,用于當(dāng)所述數(shù)據(jù)塊狀態(tài)變更請求為數(shù)據(jù)塊共享請求時,向所述目標(biāo)處理器發(fā)送共享指示,所述共享指示用于指示所述目標(biāo)處理器將目標(biāo)處理器Cache中已緩存的所述指定數(shù)據(jù)塊修改為共享模式。其中,所述目錄信息可以包括訪問狀態(tài)字段、信息狀態(tài)字段及緩存指示字段,其中所述訪問狀態(tài)字段用于指示所述目錄信息是否正在被訪問,所述信息狀態(tài)字段用于指示所述目錄信息的狀態(tài),所述緩存指示字段用于指示所述目錄信息所對應(yīng)數(shù)據(jù)塊被處理器Cache所緩存的狀況。
在本實施例中,根據(jù)目錄信息維護(hù)Cache數(shù)據(jù)一致性的裝置包括:接收單元,用于接收數(shù)據(jù)塊狀態(tài)變更請求;指定數(shù)據(jù)塊確定單元,用于根據(jù)所述數(shù)據(jù)塊狀態(tài)變更請求確定主存儲器系統(tǒng)區(qū)域中的指定數(shù)據(jù)塊;目標(biāo)處理器確定單元,用于根據(jù)保存在所述主存儲器中的目錄信息確定目標(biāo)處理器,發(fā)送單元,用于向所述目標(biāo)處理器發(fā)送狀態(tài)變更指示。采用本實施例,目錄信息存儲在主存儲器中,從而可以避免使用互聯(lián)芯片的目錄存儲空間來存儲目錄信息,降低NUMA系統(tǒng)設(shè)計和實現(xiàn)的難度。
本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明實施例中的技術(shù)可借助軟件加必需的通用硬件平臺的方式來實現(xiàn)?;谶@樣的理解,本發(fā)明實施例中的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品可以存儲在存儲介質(zhì)中,如ROM/RAM、磁碟、光盤等,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例或者實施例的某些部分所述的方法。
本說明書中的各個實施例均采用遞進(jìn)的方式描述,各個實施例之間相同相似的部分互相參見即可,每個實施例重點說明的都是與其他實施例的不同之處。尤其,對于裝置實施例而言,由于其基本相似于方法實施例,所以描述的比較簡單,相關(guān)之處參見方法實施例的部分說明即可。
以上所述的本發(fā)明實施方式,并不構(gòu)成對本發(fā)明保護(hù)范圍的限定。任何在本發(fā)明的精神和原則之內(nèi)所作的修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。