本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)分配方法和裝置。
背景技術(shù):
隨著芯片規(guī)模的擴(kuò)大,越來(lái)越多的芯片使用眾核架構(gòu)。然而,目前的眾核架構(gòu)中使用的末級(jí)緩存(Last Level Cache,LLC)的數(shù)據(jù)分配機(jī)制主要是將數(shù)據(jù)僅保留在芯片本地的本地(Home)LLC。當(dāng)芯片中節(jié)點(diǎn)需要使用某數(shù)據(jù)時(shí),該節(jié)點(diǎn)向Home LLC所在的節(jié)點(diǎn)發(fā)送數(shù)據(jù)請(qǐng)求,Home LLC所在的節(jié)點(diǎn)接收到該數(shù)據(jù)請(qǐng)求后,將Home LLC中存儲(chǔ)的該數(shù)據(jù)復(fù)制數(shù)據(jù)至該節(jié)點(diǎn)。然而,由于在眾核架構(gòu)中芯片中可以存在很多節(jié)點(diǎn),這樣不同節(jié)點(diǎn)與Home LLC所在的節(jié)點(diǎn)之間的傳輸路徑會(huì)不同,這樣必然會(huì)存在一些節(jié)點(diǎn)與Home LLC所在的節(jié)點(diǎn)之間的傳輸路徑會(huì)比較遠(yuǎn),這樣該節(jié)點(diǎn)與Home LLC所在的節(jié)點(diǎn)傳輸數(shù)據(jù)時(shí)開(kāi)銷會(huì)比較大。從而,在目前的眾核架構(gòu)中會(huì)存在傳輸開(kāi)銷過(guò)大的問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供了一種數(shù)據(jù)分配方法和裝置,可以減少眾核架構(gòu)中的傳輸開(kāi)銷。
第一方面,本發(fā)明提供一種數(shù)據(jù)分配方法,包括:
請(qǐng)求節(jié)點(diǎn)向本地Home末級(jí)緩存LLC所在的節(jié)點(diǎn)發(fā)送請(qǐng)求包;
當(dāng)所述Home LLC所在的節(jié)點(diǎn)接收到所述請(qǐng)求包時(shí),根據(jù)所述請(qǐng)求包識(shí)別所述請(qǐng)求節(jié)點(diǎn)與所述Home LLC所在的節(jié)點(diǎn)之間的傳輸開(kāi)銷是否超過(guò)預(yù)設(shè)傳輸開(kāi)銷閾值;
當(dāng)所述傳輸開(kāi)銷超過(guò)預(yù)設(shè)傳輸開(kāi)銷閾值時(shí),將所述請(qǐng)求包所請(qǐng)求的數(shù)據(jù)所在的緩存行從所述Home LLC中復(fù)制到所述請(qǐng)求節(jié)點(diǎn)的LLC中。
在第一方面的第一種可能的實(shí)現(xiàn)方式中,所述請(qǐng)求節(jié)點(diǎn)向Home LLC所在的節(jié)點(diǎn)發(fā)送請(qǐng)求包的過(guò)程中所述請(qǐng)求包每經(jīng)過(guò)一個(gè)節(jié)點(diǎn)時(shí),所述請(qǐng)求包中片上網(wǎng)絡(luò)計(jì)數(shù)器加N,其中,所述N為大于或者等于1的整數(shù);
所述根據(jù)所述請(qǐng)求包識(shí)別所述請(qǐng)求節(jié)點(diǎn)與所述Home LLC所在的節(jié)點(diǎn)之間 的傳輸開(kāi)銷是否超過(guò)預(yù)設(shè)傳輸開(kāi)銷閾值,包括:
判斷所述請(qǐng)求包中的所述片上網(wǎng)絡(luò)計(jì)數(shù)器的當(dāng)前值是否大于預(yù)設(shè)傳輸開(kāi)銷閾值。
結(jié)合第一方面的第一種可能的實(shí)現(xiàn)方式,在第一方面的第二種可能的實(shí)現(xiàn)方式中,所述請(qǐng)求包為向所述Home LLC所在的節(jié)點(diǎn)讀取數(shù)據(jù)的讀請(qǐng)求包;
所述方法還包括:
當(dāng)所述Home LLC所在的節(jié)點(diǎn)接收到所述請(qǐng)求包時(shí),將預(yù)設(shè)的用于統(tǒng)計(jì)所述請(qǐng)求節(jié)點(diǎn)讀取第一緩存行的讀取次數(shù)的本地計(jì)數(shù)器加N,其中,所述第一緩存行為所述讀請(qǐng)求包所讀取的數(shù)據(jù)所在的緩存行;
所述判斷所述請(qǐng)求包中的所述片上網(wǎng)絡(luò)計(jì)數(shù)器的當(dāng)前值是否大于預(yù)設(shè)傳輸開(kāi)銷閾值,包括:
判斷所述請(qǐng)求包中的所述片上網(wǎng)絡(luò)計(jì)數(shù)器的當(dāng)前值與所述本地計(jì)數(shù)器的當(dāng)前值之和是否大于預(yù)設(shè)傳輸開(kāi)銷閾值;
所述當(dāng)所述傳輸開(kāi)銷超過(guò)預(yù)設(shè)傳輸開(kāi)銷閾值時(shí),將所述請(qǐng)求包所請(qǐng)求的數(shù)據(jù)所在的緩存行從所述Home LLC中復(fù)制到所述請(qǐng)求節(jié)點(diǎn)的LLC中,包括:
當(dāng)所述片上網(wǎng)絡(luò)計(jì)數(shù)器的當(dāng)前值與所述本地計(jì)數(shù)器的當(dāng)前值之和大于所述預(yù)設(shè)傳輸開(kāi)銷閾值時(shí),將所述第一緩存行從所述Home LLC中復(fù)制到所述請(qǐng)求節(jié)點(diǎn)的LLC和一級(jí)緩存中。
結(jié)合第一方面的第二種可能的實(shí)現(xiàn)方式,在第一方面的第三種可能的實(shí)現(xiàn)方式中,所述方法還包括:
當(dāng)所述片上網(wǎng)絡(luò)計(jì)數(shù)器的當(dāng)前值與所述本地計(jì)數(shù)器的當(dāng)前值之和小于或者等于所述預(yù)設(shè)傳輸開(kāi)銷閾值時(shí),將所述第一緩存行從所述Home LLC中復(fù)制到所述請(qǐng)求節(jié)點(diǎn)的一級(jí)緩存中。
結(jié)合第一方面的第一種可能的實(shí)現(xiàn)方式,在第一方面的第四種可能的實(shí)現(xiàn)方式中,所述請(qǐng)求包為向所述Home LLC的第二緩存行進(jìn)行寫操作的寫請(qǐng)求包;
所述判斷所述請(qǐng)求包中的所述片上網(wǎng)絡(luò)計(jì)數(shù)器的當(dāng)前值是否大于預(yù)設(shè)傳輸開(kāi)銷閾值,包括:
判斷所述請(qǐng)求包中的所述片上網(wǎng)絡(luò)計(jì)數(shù)器的當(dāng)前值與遠(yuǎn)端計(jì)數(shù)器的當(dāng)前值之和是否大于預(yù)設(shè)傳輸開(kāi)銷閾值,其中,所述遠(yuǎn)端計(jì)數(shù)器為預(yù)先設(shè)置用于統(tǒng)計(jì)遠(yuǎn)端節(jié)點(diǎn)讀取所述第二緩存行的讀取次數(shù),所述遠(yuǎn)端節(jié)點(diǎn)為芯片中除所述Home LLC所在的節(jié)點(diǎn)之外的節(jié)點(diǎn);
所述當(dāng)所述傳輸開(kāi)銷超過(guò)預(yù)設(shè)傳輸開(kāi)銷閾值時(shí),將所述請(qǐng)求包所請(qǐng)求的數(shù)據(jù)所在的緩存行從所述Home LLC中復(fù)制到所述請(qǐng)求節(jié)點(diǎn)的LLC中,包括:
當(dāng)所述片上網(wǎng)絡(luò)計(jì)數(shù)器的當(dāng)前值與所述遠(yuǎn)端計(jì)數(shù)器的當(dāng)前值之和大于預(yù)設(shè)傳輸開(kāi)銷閾值時(shí),將修改后的第二緩存行從所述Home LLC中復(fù)制到所述請(qǐng)求節(jié)點(diǎn)的LLC和一級(jí)緩存中,其中,所述修改后的第二緩存行為響應(yīng)所述寫請(qǐng)求包對(duì)所述第二緩存行進(jìn)行寫操作而生成的緩存行。
結(jié)合第一方面的第四種可能的實(shí)現(xiàn)方式,在第一方面的第五種可能的實(shí)現(xiàn)方式中,所述方法還包括:
將所述芯片中存儲(chǔ)的所述第二緩存行的副本無(wú)效,其中,所述第二緩存行的副本為未響應(yīng)所述寫請(qǐng)求包時(shí)所述第二緩存行存儲(chǔ)的數(shù)據(jù)。
第二方面,本發(fā)明提供一種數(shù)據(jù)分配裝置,包括:請(qǐng)求單元、識(shí)別單元和第一復(fù)制單元,其中:
所述請(qǐng)求單元,用于控制請(qǐng)求節(jié)點(diǎn)向本地Home末級(jí)緩存LLC所在的節(jié)點(diǎn)發(fā)送請(qǐng)求包;
所述識(shí)別單元,用于當(dāng)所述Home LLC所在的節(jié)點(diǎn)接收到所述請(qǐng)求包時(shí),根據(jù)所述請(qǐng)求包識(shí)別所述請(qǐng)求節(jié)點(diǎn)與所述Home LLC所在的節(jié)點(diǎn)之間的傳輸開(kāi)銷是否超過(guò)預(yù)設(shè)傳輸開(kāi)銷閾值;
所述第一復(fù)制單元,用于當(dāng)所述傳輸開(kāi)銷超過(guò)預(yù)設(shè)傳輸開(kāi)銷閾值時(shí),將所述請(qǐng)求包所請(qǐng)求的數(shù)據(jù)所在的緩存行從所述Home LLC中復(fù)制到所述請(qǐng)求節(jié)點(diǎn)的LLC中。
在第二方面的第一種可能的實(shí)現(xiàn)方式中,所述請(qǐng)求節(jié)點(diǎn)向Home LLC所在的節(jié)點(diǎn)發(fā)送請(qǐng)求包的過(guò)程中所述請(qǐng)求包每經(jīng)過(guò)一個(gè)節(jié)點(diǎn)時(shí),所述請(qǐng)求包中片上網(wǎng)絡(luò)計(jì)數(shù)器加N,其中,所述N為大于或者等于1的整數(shù);
所述識(shí)別單元用于判斷所述請(qǐng)求包中的所述片上網(wǎng)絡(luò)計(jì)數(shù)器的當(dāng)前值是否大于預(yù)設(shè)傳輸開(kāi)銷閾值。
結(jié)合第二方面的第一種可能的實(shí)現(xiàn)方式,在第二方面的第二種可能的實(shí)現(xiàn)方式中,所述請(qǐng)求包為向所述Home LLC所在的節(jié)點(diǎn)讀取數(shù)據(jù)的讀請(qǐng)求包;
所述裝置還包括:
計(jì)數(shù)單元,用于當(dāng)所述Home LLC所在的節(jié)點(diǎn)接收到所述請(qǐng)求包時(shí),將預(yù) 設(shè)的用于統(tǒng)計(jì)所述請(qǐng)求節(jié)點(diǎn)讀取第一緩存行的讀取次數(shù)的本地計(jì)數(shù)器加N,其中,所述第一緩存行為所述讀請(qǐng)求包所讀取的數(shù)據(jù)所在的緩存行;
所述識(shí)別單元用于判斷所述請(qǐng)求包中的所述片上網(wǎng)絡(luò)計(jì)數(shù)器的當(dāng)前值與所述本地計(jì)數(shù)器的當(dāng)前值之和是否大于預(yù)設(shè)傳輸開(kāi)銷閾值;
所述第一復(fù)制單元用于當(dāng)所述片上網(wǎng)絡(luò)計(jì)數(shù)器的當(dāng)前值與所述本地計(jì)數(shù)器的當(dāng)前值之和大于所述預(yù)設(shè)傳輸開(kāi)銷閾值時(shí),將所述第一緩存行從所述Home LLC中復(fù)制到所述請(qǐng)求節(jié)點(diǎn)的LLC和一級(jí)緩存中。
結(jié)合第二方面的第二種可能的實(shí)現(xiàn)方式,在第二方面的第三種可能的實(shí)現(xiàn)方式中,所述裝置還包括:
第二復(fù)制單元,用于當(dāng)所述片上網(wǎng)絡(luò)計(jì)數(shù)器的當(dāng)前值與所述本地計(jì)數(shù)器的當(dāng)前值之和小于或者等于所述預(yù)設(shè)傳輸開(kāi)銷閾值時(shí),將所述第一緩存行從所述Home LLC中復(fù)制到所述請(qǐng)求節(jié)點(diǎn)的一級(jí)緩存中。
結(jié)合第二方面的第二種可能的實(shí)現(xiàn)方式,在第二方面的第四種可能的實(shí)現(xiàn)方式中,所述請(qǐng)求包為向所述Home LLC的第二緩存行進(jìn)行寫操作的寫請(qǐng)求包;
所述識(shí)別單元用于判斷所述請(qǐng)求包中的所述片上網(wǎng)絡(luò)計(jì)數(shù)器的當(dāng)前值與遠(yuǎn)端計(jì)數(shù)器的當(dāng)前值之和是否大于預(yù)設(shè)傳輸開(kāi)銷閾值,其中,所述遠(yuǎn)端計(jì)數(shù)器為預(yù)先設(shè)置用于統(tǒng)計(jì)遠(yuǎn)端節(jié)點(diǎn)讀取所述第二緩存行的讀取次數(shù),所述遠(yuǎn)端節(jié)點(diǎn)為芯片中除所述Home LLC所在的節(jié)點(diǎn)之外的節(jié)點(diǎn);
所述第一復(fù)制單元用于當(dāng)所述片上網(wǎng)絡(luò)計(jì)數(shù)器的當(dāng)前值與遠(yuǎn)端計(jì)數(shù)器的當(dāng)前值之和大于預(yù)設(shè)傳輸開(kāi)銷閾值時(shí),將修改后的第二緩存行從所述Home LLC中復(fù)制到所述請(qǐng)求節(jié)點(diǎn)的LLC和一級(jí)緩存中,其中,所述修改后的第二緩存行為響應(yīng)所述寫請(qǐng)求包對(duì)所述第二緩存行進(jìn)行寫操作而生成的緩存行。
結(jié)合第二方面的第四種可能的實(shí)現(xiàn)方式,在第二方面的第五種可能的實(shí)現(xiàn)方式中,所述裝置還包括:
無(wú)效單元,用于將所述芯片中存儲(chǔ)的所述第二緩存行的副本無(wú)效,其中,所述第二緩存行的副本為未響應(yīng)所述寫請(qǐng)求包時(shí)所述第二緩存行存儲(chǔ)的數(shù)據(jù)。上述技術(shù)方案中,請(qǐng)求節(jié)點(diǎn)向本地Home末級(jí)緩存LLC所在的節(jié)點(diǎn)發(fā)送請(qǐng)求包;當(dāng)所述Home LLC所在的節(jié)點(diǎn)接收到所述請(qǐng)求包時(shí),根據(jù)所述請(qǐng)求包識(shí)別所述請(qǐng)求節(jié)點(diǎn)與所述Home LLC所在的節(jié)點(diǎn)之間的傳輸開(kāi)銷是否超過(guò)預(yù)設(shè)傳輸開(kāi)銷閾值;當(dāng)所述傳輸開(kāi)銷超過(guò)預(yù)設(shè)傳輸開(kāi)銷閾值時(shí),將所述請(qǐng)求包所請(qǐng)求的數(shù)據(jù) 所在的緩存行從所述Home LLC中復(fù)制到所述請(qǐng)求節(jié)點(diǎn)的LLC中。由于可以將請(qǐng)求節(jié)點(diǎn)請(qǐng)求的數(shù)據(jù)所在的緩存行緩存到該請(qǐng)求節(jié)點(diǎn)的LLC中,這樣該請(qǐng)求節(jié)點(diǎn)在使用該數(shù)據(jù)時(shí),直接從該節(jié)點(diǎn)的LLC中獲取就行,而不需要去Home LLC所在的節(jié)點(diǎn)獲取,從而可以減少眾核架構(gòu)中的傳輸開(kāi)銷。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明實(shí)施例提供一種數(shù)據(jù)分配方法的流程示意圖;
圖2是本發(fā)明實(shí)施例提供的一種請(qǐng)求包傳輸?shù)膫鬏斅窂绞疽鈭D;
圖3是本發(fā)明實(shí)施例提供的另一種數(shù)據(jù)分配方法的流程示意圖;
圖4是本發(fā)明實(shí)施例提供的一種眾核架構(gòu)中緩存數(shù)據(jù)副本的示意圖;
圖5是本發(fā)明實(shí)施例提供的一種數(shù)據(jù)分配裝置的結(jié)構(gòu)示意圖;
圖6是本發(fā)明實(shí)施例提供的另一種數(shù)據(jù)分配裝置的結(jié)構(gòu)示意圖;
圖7是本發(fā)明實(shí)施例提供的另一種數(shù)據(jù)分配裝置的結(jié)構(gòu)示意圖;
圖8是本發(fā)明實(shí)施例提供的一種眾核架構(gòu)的芯片結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
請(qǐng)參閱圖1,圖1是本發(fā)明實(shí)施例提供一種數(shù)據(jù)分配方法的流程示意圖,如圖1所示,包括以下步驟:
101、請(qǐng)求節(jié)點(diǎn)向Home LLC所在的節(jié)點(diǎn)發(fā)送請(qǐng)求包。
其中,上述請(qǐng)求節(jié)點(diǎn)可以是眾核架構(gòu)中的除上述Home LLC所在的節(jié)點(diǎn)之外的任意節(jié)點(diǎn),上述Home LLC可以是該眾核架構(gòu)中用于緩存數(shù)據(jù)的LLC,其中,該Home LLC緩存的數(shù)據(jù)可以被該眾核架構(gòu)中任意節(jié)點(diǎn)讀取,另外,該眾 核架構(gòu)中的任意節(jié)點(diǎn)還可以對(duì)Home LLC中緩存的數(shù)據(jù)進(jìn)行寫操作。
本實(shí)施例中,上述請(qǐng)求包可以是讀請(qǐng)求包,即向Home LLC讀操作;或者上述請(qǐng)求包還可以是寫請(qǐng)求包,即向Home LLC中寫操作。
102、當(dāng)所述Home LLC所在的節(jié)點(diǎn)接收到所述請(qǐng)求包時(shí),根據(jù)所述請(qǐng)求包識(shí)別所述請(qǐng)求節(jié)點(diǎn)與所述Home LLC所在的節(jié)點(diǎn)之間的傳輸開(kāi)銷是否超過(guò)預(yù)設(shè)傳輸開(kāi)銷閾值。
上述傳輸開(kāi)銷可以理解為請(qǐng)求節(jié)點(diǎn)與Home LLC所在的節(jié)點(diǎn)之間的傳輸路徑距離,或者可以理解為請(qǐng)求節(jié)點(diǎn)與Home LLC所在的節(jié)點(diǎn)之外的傳輸路徑所經(jīng)過(guò)的節(jié)點(diǎn)數(shù);或者上述傳輸開(kāi)銷還可以理解為請(qǐng)求節(jié)點(diǎn)發(fā)送上述請(qǐng)求包至Home LLC所在的節(jié)點(diǎn)所消耗的時(shí)長(zhǎng),通過(guò)該時(shí)長(zhǎng)為反映請(qǐng)求包的傳輸開(kāi)銷。
103、當(dāng)所述傳輸開(kāi)銷超過(guò)預(yù)設(shè)傳輸開(kāi)銷閾值時(shí),將所述請(qǐng)求包所請(qǐng)求的數(shù)據(jù)所在的緩存行從所述Home LLC中復(fù)制到所述請(qǐng)求節(jié)點(diǎn)的LLC中。
在步驟103中當(dāng)傳輸開(kāi)銷超過(guò)預(yù)設(shè)傳輸開(kāi)銷閾值時(shí),就說(shuō)明請(qǐng)求節(jié)點(diǎn)與Home LLC所在的節(jié)點(diǎn)傳輸開(kāi)銷較大,如果請(qǐng)求節(jié)點(diǎn)向Home LLC中讀取數(shù)據(jù)時(shí),那么片上網(wǎng)絡(luò)(Network on Chip,NoC)的傳輸開(kāi)銷就會(huì)很大,而步驟103將數(shù)據(jù)復(fù)制到請(qǐng)求節(jié)點(diǎn)的LLC中,這樣當(dāng)請(qǐng)求節(jié)點(diǎn)使用該數(shù)據(jù)時(shí),直接可以從請(qǐng)求節(jié)點(diǎn)的LLC中讀取,從而可以減少NoC的傳輸開(kāi)銷就會(huì)很大;其中,該NoC可以用于眾核架構(gòu)的芯片上多節(jié)點(diǎn)通信的網(wǎng)絡(luò)。
另外,上述請(qǐng)求包所請(qǐng)求的數(shù)據(jù)所在的緩存行可以是請(qǐng)求包所請(qǐng)求進(jìn)行讀操作的數(shù)據(jù)所在的緩存行,或者上述請(qǐng)求包所請(qǐng)求進(jìn)行寫操作的數(shù)據(jù)所在的緩存行,且上述緩存行可以是一個(gè)或者多個(gè)緩存行。
例如:如圖2所示請(qǐng)求節(jié)點(diǎn)201和Home LLC所在的節(jié)點(diǎn)202,請(qǐng)求節(jié)點(diǎn)201和Home LLC所在的節(jié)點(diǎn)202之間的傳輸路徑如圖2所示的傳輸路徑203。通過(guò)圖2可知,請(qǐng)求節(jié)點(diǎn)201和Home LLC所在的節(jié)點(diǎn)202之間傳輸路徑的距離較遠(yuǎn),即請(qǐng)求節(jié)點(diǎn)201和Home LLC所在的節(jié)點(diǎn)202之間傳輸數(shù)據(jù)的傳輸開(kāi)銷會(huì)比較大,而通過(guò)上述步驟將Home LLC中緩存請(qǐng)求節(jié)點(diǎn)所需要的數(shù)據(jù)所在緩存行復(fù)制到請(qǐng)求節(jié)點(diǎn)201的LLC,這樣下次使用該數(shù)據(jù)時(shí),請(qǐng)求節(jié)點(diǎn)就不需要發(fā)送請(qǐng)求包,從而可以減少傳輸開(kāi)銷。
另外,在步驟103中將請(qǐng)求包所請(qǐng)求的數(shù)據(jù)所在的緩存行從所述Home LLC中復(fù)制到請(qǐng)求節(jié)點(diǎn)的LLC中可以是按照傳輸請(qǐng)求包的傳輸路徑將該緩存行復(fù)制 到請(qǐng)求節(jié)點(diǎn)的LLC;或者步驟103中將請(qǐng)求包所請(qǐng)求的數(shù)據(jù)所在的緩存行從所述Home LLC中復(fù)制到請(qǐng)求節(jié)點(diǎn)的LLC中可以是芯片的數(shù)據(jù)處理器將該緩存行直接復(fù)制到請(qǐng)求節(jié)點(diǎn)的LLC中。另外,上述復(fù)制可以是復(fù)制緩存行的副本,上述緩存行可以是Cacheline,或者高速緩存行。
本實(shí)施例中,上述方法可以應(yīng)用于任意眾核架構(gòu)的芯片中,或者應(yīng)用于任意包括眾核架構(gòu)的芯片的智能設(shè)備。
本實(shí)施例中,請(qǐng)求節(jié)點(diǎn)向本地Home末級(jí)緩存LLC所在的節(jié)點(diǎn)發(fā)送請(qǐng)求包;當(dāng)所述Home LLC所在的節(jié)點(diǎn)接收到所述請(qǐng)求包時(shí),根據(jù)所述請(qǐng)求包識(shí)別所述請(qǐng)求節(jié)點(diǎn)與所述Home LLC所在的節(jié)點(diǎn)之間的傳輸開(kāi)銷是否超過(guò)預(yù)設(shè)傳輸開(kāi)銷閾值;當(dāng)所述傳輸開(kāi)銷超過(guò)預(yù)設(shè)傳輸開(kāi)銷閾值時(shí),將所述請(qǐng)求包所請(qǐng)求的數(shù)據(jù)所在的緩存行從所述Home LLC中復(fù)制到所述請(qǐng)求節(jié)點(diǎn)的LLC中。由于可以將請(qǐng)求節(jié)點(diǎn)請(qǐng)求的數(shù)據(jù)所在的緩存行緩存到該請(qǐng)求節(jié)點(diǎn)的LLC中,這樣該請(qǐng)求節(jié)點(diǎn)在使用該數(shù)據(jù)時(shí),直接從該節(jié)點(diǎn)的LLC中獲取就行,而不需要去Home LLC所在的節(jié)點(diǎn)獲取,從而可以減少眾核架構(gòu)中的傳輸開(kāi)銷。
請(qǐng)參閱圖3,圖3是本發(fā)明實(shí)施例提供的另一種數(shù)據(jù)分配方法的流程示意圖,如圖3所示,包括以下步驟:
301、請(qǐng)求節(jié)點(diǎn)向Home LLC所在的節(jié)點(diǎn)發(fā)送請(qǐng)求包,其中,所述請(qǐng)求節(jié)點(diǎn)向Home LLC所在的節(jié)點(diǎn)發(fā)送請(qǐng)求包的過(guò)程中所述請(qǐng)求包每經(jīng)過(guò)一個(gè)節(jié)點(diǎn)時(shí),所述請(qǐng)求包中片上網(wǎng)絡(luò)計(jì)數(shù)器加N,其中,所述N為大于或者等于1的整數(shù)。
其中,請(qǐng)求節(jié)點(diǎn)向Home LLC所在的節(jié)點(diǎn)發(fā)送請(qǐng)求包是通過(guò)請(qǐng)求節(jié)點(diǎn)與Home LLC所在的節(jié)點(diǎn)之間的節(jié)點(diǎn)傳輸?shù)模鐖D2所示的傳輸路徑202。這樣該請(qǐng)求包每經(jīng)過(guò)一個(gè)節(jié)點(diǎn)時(shí),該節(jié)點(diǎn)就將請(qǐng)求包中的片上網(wǎng)絡(luò)計(jì)數(shù)器加N(例如:加1),當(dāng)Home LLC所在的節(jié)點(diǎn)獲取的該請(qǐng)求包時(shí),就可以通過(guò)該請(qǐng)求包中的片上網(wǎng)絡(luò)計(jì)數(shù)的當(dāng)前值識(shí)別該請(qǐng)求包經(jīng)過(guò)了多個(gè)個(gè)節(jié)點(diǎn),即該請(qǐng)求包的傳輸開(kāi)銷。另外,在請(qǐng)求節(jié)點(diǎn)發(fā)送上述請(qǐng)求包時(shí),可以為該請(qǐng)求包中的片上網(wǎng)絡(luò)計(jì)數(shù)器設(shè)定一個(gè)初始值,例如:0。另外,上述片上網(wǎng)絡(luò)計(jì)數(shù)器可以定義為(NoC Count,NC),該NC用于統(tǒng)計(jì)請(qǐng)求包在片上網(wǎng)絡(luò)中的傳輸距離,該NC可以位于請(qǐng)求包的包頭中。
302、當(dāng)所述Home LLC所在的節(jié)點(diǎn)接收到所述請(qǐng)求包時(shí),判斷所述請(qǐng)求包 中的所述片上網(wǎng)絡(luò)計(jì)數(shù)器的當(dāng)前值是否大于預(yù)設(shè)傳輸開(kāi)銷閾值。
其中,上述預(yù)設(shè)傳輸開(kāi)銷閾值可以是用戶預(yù)先設(shè)定的,例如:5、10、20等,具體可以根據(jù)眾核架構(gòu)中節(jié)點(diǎn)的數(shù)量而設(shè)定,或者根據(jù)眾核架構(gòu)的傳輸路徑而設(shè)定。
303、當(dāng)片上網(wǎng)絡(luò)計(jì)數(shù)器的當(dāng)前值大于預(yù)設(shè)傳輸開(kāi)銷閾值,將所述請(qǐng)求包所請(qǐng)求的數(shù)據(jù)所在的緩存行從所述Home LLC中復(fù)制到所述請(qǐng)求節(jié)點(diǎn)的LLC中。
當(dāng)片上網(wǎng)絡(luò)計(jì)數(shù)器的當(dāng)前值大于預(yù)設(shè)傳輸開(kāi)銷閾值時(shí),就說(shuō)明請(qǐng)求節(jié)點(diǎn)與Home LLC中所在的節(jié)點(diǎn)之間傳輸距離較遠(yuǎn)。
本實(shí)施便中,上述請(qǐng)求包可以為向所述Home LLC所在的節(jié)點(diǎn)讀取數(shù)據(jù)的讀請(qǐng)求包,即請(qǐng)求節(jié)點(diǎn)向Home LLC請(qǐng)求讀取某數(shù)據(jù)。例如:請(qǐng)求節(jié)點(diǎn)的一級(jí)緩存(L1 Cache)發(fā)送缺失(miss)后,且在請(qǐng)求節(jié)點(diǎn)中的LLC沒(méi)有讀取到所需要的數(shù)據(jù)時(shí),請(qǐng)求節(jié)點(diǎn)就可以向緩存有該數(shù)據(jù)的Home LLC所在的節(jié)點(diǎn)發(fā)送讀請(qǐng)求包。其中,請(qǐng)求節(jié)點(diǎn)可以通過(guò)目錄查找到緩存有請(qǐng)求節(jié)點(diǎn)所需要的數(shù)據(jù)的Home LLC。
該實(shí)施方式中,上述方法還可以包括如下步驟:
當(dāng)所述Home LLC所在的節(jié)點(diǎn)接收到所述請(qǐng)求包時(shí),將預(yù)設(shè)的用于統(tǒng)計(jì)所述請(qǐng)求節(jié)點(diǎn)讀取第一緩存行的讀取次數(shù)的本地計(jì)數(shù)器加N,其中,所述第一緩存行為所述讀請(qǐng)求包所讀取的數(shù)據(jù)所在的緩存行;
步驟302可以包括:
判斷所述請(qǐng)求包中的所述片上網(wǎng)絡(luò)計(jì)數(shù)器的當(dāng)前值與所述本地計(jì)數(shù)器的當(dāng)前值之和是否大于預(yù)設(shè)傳輸開(kāi)銷閾值;
步驟303可以包括:
當(dāng)所述片上網(wǎng)絡(luò)計(jì)數(shù)器的當(dāng)前值與所述本地計(jì)數(shù)器的當(dāng)前值之和大于所述預(yù)設(shè)傳輸開(kāi)銷閾值時(shí),將所述第一緩存行從所述Home LLC中復(fù)制到所述請(qǐng)求節(jié)點(diǎn)的LLC和一級(jí)緩存中。
其中,上述本地計(jì)數(shù)器為預(yù)先設(shè)定的,且本地計(jì)數(shù)器是為緩存行為粒度的,以及可以為每個(gè)緩存行設(shè)定多個(gè)本地計(jì)數(shù)器,每個(gè)本地計(jì)數(shù)器用于統(tǒng)計(jì)一個(gè)節(jié)點(diǎn)讀取該緩存行的次數(shù),例如:針對(duì)上述第一緩存行可以設(shè)定M個(gè)本地計(jì)數(shù)器,其中,M個(gè)本地計(jì)數(shù)器中存一個(gè)用于統(tǒng)計(jì)上述請(qǐng)求節(jié)點(diǎn)讀取第一緩存行的次數(shù)。另外,上述本地計(jì)數(shù)器可以定義為(Home Count,HC),該HC用于統(tǒng)計(jì)本地的 緩存行被訪問(wèn)的頻率。
該實(shí)施方式中可以實(shí)現(xiàn)統(tǒng)計(jì)請(qǐng)求節(jié)點(diǎn)讀取上述第一緩存行的次數(shù),當(dāng)請(qǐng)求節(jié)點(diǎn)讀取第一緩存行的次數(shù)與請(qǐng)求包所經(jīng)過(guò)的節(jié)點(diǎn)數(shù)量之和大于所述預(yù)設(shè)傳輸開(kāi)銷閾值時(shí),將所述第一緩存行從所述Home LLC中復(fù)制到所述請(qǐng)求節(jié)點(diǎn)的LLC和一級(jí)緩存中。這樣可以實(shí)現(xiàn)以請(qǐng)求節(jié)點(diǎn)讀取第一緩存行次數(shù)和請(qǐng)求包所經(jīng)過(guò)的節(jié)點(diǎn)數(shù)這兩個(gè)維度來(lái)決定是否將第一緩存行復(fù)制到請(qǐng)求節(jié)點(diǎn)的LLC。因?yàn)楫?dāng)請(qǐng)求節(jié)點(diǎn)讀取第一緩存行的次數(shù)較多時(shí),說(shuō)明第一緩存行對(duì)于請(qǐng)求節(jié)點(diǎn)比較重要,從而可以將第一緩存行復(fù)制到請(qǐng)求節(jié)點(diǎn)的LLC,以及請(qǐng)求節(jié)點(diǎn)多次從Home LLC讀取第一緩存行,從而造成較大的傳輸開(kāi)銷;另外,當(dāng)請(qǐng)求節(jié)點(diǎn)與Home LLC之間的傳輸路徑較遠(yuǎn)時(shí),請(qǐng)求節(jié)點(diǎn)從Home LLC讀取第一緩存行也會(huì)造成較大的傳輸開(kāi)銷。
另外,本實(shí)施方式中可以將第一緩存行復(fù)制到請(qǐng)求節(jié)點(diǎn)的一級(jí)緩存中,這樣請(qǐng)求節(jié)點(diǎn)在一級(jí)緩存發(fā)送miss時(shí)可以實(shí)現(xiàn)將一級(jí)緩存所需要的數(shù)據(jù)復(fù)制到一級(jí)緩存中,從而解決miss問(wèn)題。
本實(shí)施方式中,上述方法還可以包括如下步驟:
當(dāng)所述片上網(wǎng)絡(luò)計(jì)數(shù)器的當(dāng)前值與所述本地計(jì)數(shù)器的當(dāng)前值之和小于或者等于所述預(yù)設(shè)傳輸開(kāi)銷閾值時(shí),將所述第一緩存行從所述Home LLC中復(fù)制到所述請(qǐng)求節(jié)點(diǎn)的一級(jí)緩存中。
該實(shí)施方式可以實(shí)現(xiàn)請(qǐng)求節(jié)點(diǎn)在一級(jí)緩存發(fā)送miss時(shí)可以實(shí)現(xiàn)將一級(jí)緩存所需要的數(shù)據(jù)復(fù)制到一級(jí)緩存中,從而解決miss問(wèn)題。另外,由于片上網(wǎng)絡(luò)計(jì)數(shù)器的當(dāng)前值與本地計(jì)數(shù)器的當(dāng)前值之和小于或者等于所述預(yù)設(shè)傳輸開(kāi)銷閾值時(shí),說(shuō)明請(qǐng)求節(jié)點(diǎn)讀取第一緩存行的次數(shù)較少,或者請(qǐng)求節(jié)點(diǎn)與Home LLC所在的節(jié)點(diǎn)之間的傳輸路徑的距離較近,所以可以不將第一緩存行復(fù)制至請(qǐng)求節(jié)點(diǎn)的LLC中。
本實(shí)施例中,上述請(qǐng)求包為向所述Home LLC的第二緩存行進(jìn)行寫操作的寫請(qǐng)求包;
上述判斷所述請(qǐng)求包中的所述片上網(wǎng)絡(luò)計(jì)數(shù)器的當(dāng)前值是否大于預(yù)設(shè)傳輸開(kāi)銷閾值的步驟,可以包括:
判斷所述請(qǐng)求包中的所述片上網(wǎng)絡(luò)計(jì)數(shù)器的當(dāng)前值與遠(yuǎn)端計(jì)數(shù)器的當(dāng)前值之和是否大于預(yù)設(shè)傳輸開(kāi)銷閾值,其中,所述遠(yuǎn)端計(jì)數(shù)器為預(yù)先設(shè)置用于統(tǒng)計(jì) 遠(yuǎn)端節(jié)點(diǎn)讀取所述第二緩存行的讀取次數(shù),所述遠(yuǎn)端節(jié)點(diǎn)為芯片中除所述Home LLC所在的節(jié)點(diǎn)之外的節(jié)點(diǎn);
步驟303可以包括:
當(dāng)所述片上網(wǎng)絡(luò)計(jì)數(shù)器的當(dāng)前值與遠(yuǎn)端計(jì)數(shù)器的當(dāng)前值之和大于預(yù)設(shè)傳輸開(kāi)銷閾值時(shí),將修改后的第二緩存行從所述Home LLC中復(fù)制到所述請(qǐng)求節(jié)點(diǎn)的LLC和一級(jí)緩存中,其中,所述修改后的第二緩存行為響應(yīng)所述寫請(qǐng)求包對(duì)所述第二緩存行進(jìn)行寫操作而生成的緩存行。
上述遠(yuǎn)端節(jié)點(diǎn)為芯片中除所述Home LLC所在的節(jié)點(diǎn)之外的所有節(jié)點(diǎn),或者上述遠(yuǎn)端節(jié)點(diǎn)為芯片中除所述Home LLC所在的節(jié)點(diǎn)和上述請(qǐng)求節(jié)點(diǎn)之外的所有節(jié)點(diǎn)。這樣通過(guò)上述遠(yuǎn)端計(jì)數(shù)器可以統(tǒng)計(jì)出第二緩存行被讀取或者被訪問(wèn)的次數(shù)或者頻率。另外,上述遠(yuǎn)端計(jì)數(shù)器可以定義為(Remote Count,RC)。例如:每當(dāng)遠(yuǎn)端節(jié)點(diǎn)讀取第二緩存行時(shí),該RC加1。
另外,該實(shí)施方式中,上述請(qǐng)求包還可以根據(jù)一致性協(xié)議將請(qǐng)求包所進(jìn)行的寫操作的數(shù)據(jù)相應(yīng)的信息發(fā)送給Home LLC所在的節(jié)點(diǎn)。
另外,該實(shí)施方式中上述方法還可以包括如下步驟:
響應(yīng)上述請(qǐng)求包,對(duì)第二緩存行進(jìn)行寫操作。
該寫操作可以包括修改、添加或者刪除等寫操作。通過(guò)該寫操作后的第二緩存行即為上述修改后的第二緩存行。
該實(shí)施方式可以實(shí)現(xiàn)當(dāng)片上網(wǎng)絡(luò)計(jì)數(shù)器的當(dāng)前值與遠(yuǎn)端計(jì)數(shù)器的當(dāng)前值之和大于預(yù)設(shè)傳輸開(kāi)銷閾值時(shí),將請(qǐng)求節(jié)點(diǎn)所進(jìn)行寫操作的緩存行復(fù)制到請(qǐng)求節(jié)點(diǎn)的LLC中
該實(shí)施方式中,上述方法還可以包括如下步驟:
將所述芯片中存儲(chǔ)的所述第二緩存行的副本無(wú)效,其中,所述第二緩存行的副本為未響應(yīng)所述寫請(qǐng)求包時(shí)所述第二緩存行存儲(chǔ)的數(shù)據(jù)。
例如:當(dāng)片上網(wǎng)絡(luò)計(jì)數(shù)器的當(dāng)前值與遠(yuǎn)端計(jì)數(shù)器的當(dāng)前值之和小于或者等于預(yù)設(shè)傳輸開(kāi)銷閾值時(shí),不將修改后的第二緩存行從所述Home LLC中復(fù)制到所述請(qǐng)求節(jié)點(diǎn)的LLC和一級(jí)緩存中,只是將所述芯片中存儲(chǔ)的所述第二緩存行的副本無(wú)效。因?yàn)樵谛酒谐松鲜鯤ome LLC緩存在第二緩存行的副本外,可能還存在其他節(jié)點(diǎn)與緩存有第二緩存行的副本,這樣當(dāng)上述請(qǐng)求包對(duì)第二緩存行進(jìn)行寫操作后,那么第二緩存行就修改了。但只是對(duì)Home LLC中的第二 緩存行進(jìn)行修改了,而其他節(jié)點(diǎn)緩存的第二緩存行卻沒(méi)有修改,從而需要將這些節(jié)點(diǎn)中的LLC中緩存中第二緩存行的副本無(wú)效。例如:可以發(fā)送出無(wú)效(Invalid)信息將其他節(jié)點(diǎn)中緩存的第二緩存行的副本無(wú)效。例如:如圖4所示,Home LLC所在的節(jié)點(diǎn)401、其中,第二緩存行的副本被遠(yuǎn)端節(jié)點(diǎn)402、遠(yuǎn)端節(jié)點(diǎn)403和遠(yuǎn)端節(jié)點(diǎn)404的LLC緩存,這樣該實(shí)施方式中可以將遠(yuǎn)端節(jié)點(diǎn)402、遠(yuǎn)端節(jié)點(diǎn)403和遠(yuǎn)端節(jié)點(diǎn)404的LLC緩存的第二緩存行的副本無(wú)效。
另外,還可以是當(dāng)所述片上網(wǎng)絡(luò)計(jì)數(shù)器的當(dāng)前值與所述遠(yuǎn)端計(jì)數(shù)器的當(dāng)前值之和大于預(yù)設(shè)傳輸開(kāi)銷閾值時(shí),將修改后的第二緩存行從所述Home LLC中復(fù)制到所述請(qǐng)求節(jié)點(diǎn)的LLC和一級(jí)緩存中時(shí),將所述芯片中存儲(chǔ)的所述第二緩存行的副本無(wú)效。因?yàn)楫?dāng)上述請(qǐng)求包對(duì)第二緩存行進(jìn)行寫操作后,那么第二緩存行就修改了。但只是對(duì)Home LLC中的第二緩存行進(jìn)行修改了,而其他節(jié)點(diǎn)緩存的第二緩存行卻沒(méi)有修改,從而需要將這些節(jié)點(diǎn)中的LLC中緩存中第二緩存行的副本無(wú)效。
本實(shí)施例中,在圖1所示的實(shí)施例的基礎(chǔ)上增加了多種可選的實(shí)施方式,且都可以實(shí)現(xiàn)減少眾核架構(gòu)中的傳輸開(kāi)銷。
下面為本發(fā)明裝置實(shí)施例,本發(fā)明裝置實(shí)施例用于執(zhí)行本發(fā)明方法實(shí)施例一至二實(shí)現(xiàn)的方法,為了便于說(shuō)明,僅示出了與本發(fā)明實(shí)施例相關(guān)的部分,具體技術(shù)細(xì)節(jié)未揭示的,請(qǐng)參照本發(fā)明實(shí)施例一和實(shí)施例二。
請(qǐng)參閱圖5,圖5是本發(fā)明實(shí)施例提供的一種數(shù)據(jù)分配裝置的結(jié)構(gòu)示意圖,如圖5所示,包括:請(qǐng)求單元51、識(shí)別單元52和第一復(fù)制單元53,其中:
請(qǐng)求單元51,用于控制請(qǐng)求節(jié)點(diǎn)向本地Home末級(jí)緩存LLC所在的節(jié)點(diǎn)發(fā)送請(qǐng)求包。
其中,上述請(qǐng)求節(jié)點(diǎn)可以是眾核架構(gòu)中的除上述Home LLC所在的節(jié)點(diǎn)之外的任意節(jié)點(diǎn),上述Home LLC可以是該眾核架構(gòu)中用于緩存數(shù)據(jù)的LLC,其中,該Home LLC緩存的數(shù)據(jù)可以被該眾核架構(gòu)中任意節(jié)點(diǎn)讀取,另外,該眾核架構(gòu)中的任意節(jié)點(diǎn)還可以對(duì)Home LLC中緩存的數(shù)據(jù)進(jìn)行寫操作。
本實(shí)施例中,上述請(qǐng)求包可以是讀請(qǐng)求包,即向Home LLC讀操作;或者上述請(qǐng)求包還可以是寫請(qǐng)求包,即向Home LLC中寫操作。
識(shí)別單元52,用于當(dāng)所述Home LLC所在的節(jié)點(diǎn)接收到所述請(qǐng)求包時(shí),根據(jù)所述請(qǐng)求包識(shí)別所述請(qǐng)求節(jié)點(diǎn)與所述Home LLC所在的節(jié)點(diǎn)之間的傳輸開(kāi)銷是否超過(guò)預(yù)設(shè)傳輸開(kāi)銷閾值。
上述傳輸開(kāi)銷可以理解為請(qǐng)求節(jié)點(diǎn)與Home LLC所在的節(jié)點(diǎn)之間的傳輸路徑距離,或者可以理解為請(qǐng)求節(jié)點(diǎn)與Home LLC所在的節(jié)點(diǎn)之外的傳輸路徑所經(jīng)過(guò)的節(jié)點(diǎn)數(shù);或者上述傳輸開(kāi)銷還可以理解為請(qǐng)求節(jié)點(diǎn)發(fā)送上述請(qǐng)求包至Home LLC所在的節(jié)點(diǎn)所消耗的時(shí)長(zhǎng),通過(guò)該時(shí)長(zhǎng)為反映請(qǐng)求包的傳輸開(kāi)銷。
第一復(fù)制單元53,用于當(dāng)所述傳輸開(kāi)銷超過(guò)預(yù)設(shè)傳輸開(kāi)銷閾值時(shí),將所述請(qǐng)求包所請(qǐng)求的數(shù)據(jù)所在的緩存行從所述Home LLC中復(fù)制到所述請(qǐng)求節(jié)點(diǎn)的LLC中。
在第一復(fù)制單元53中當(dāng)傳輸開(kāi)銷超過(guò)預(yù)設(shè)傳輸開(kāi)銷閾值時(shí),就說(shuō)明請(qǐng)求節(jié)點(diǎn)與Home LLC所在的節(jié)點(diǎn)傳輸開(kāi)銷較大,如果請(qǐng)求節(jié)點(diǎn)向Home LLC中讀取數(shù)據(jù)時(shí),那么NoC的傳輸開(kāi)銷就會(huì)很大,而步驟103將數(shù)據(jù)復(fù)制到請(qǐng)求節(jié)點(diǎn)的LLC中,這樣當(dāng)請(qǐng)求節(jié)點(diǎn)使用該數(shù)據(jù)時(shí),直接可以從請(qǐng)求節(jié)點(diǎn)的LLC中讀取,從而可以減少NoC的傳輸開(kāi)銷就會(huì)很大;其中,該NoC可以用于眾核架構(gòu)的芯片上多節(jié)點(diǎn)通信的網(wǎng)絡(luò)。
另外,上述請(qǐng)求包所請(qǐng)求的數(shù)據(jù)所在的緩存行可以是請(qǐng)求包所請(qǐng)求進(jìn)行讀操作的數(shù)據(jù)所在的緩存行,或者上述請(qǐng)求包所請(qǐng)求進(jìn)行寫操作的數(shù)據(jù)所在的緩存行,且上述緩存行可以是一個(gè)或者多個(gè)緩存行。
例如:如圖2所示請(qǐng)求節(jié)點(diǎn)201和Home LLC所在的節(jié)點(diǎn)202,請(qǐng)求節(jié)點(diǎn)201和Home LLC所在的節(jié)點(diǎn)202之間的傳輸路徑如圖2所示的傳輸路徑203。通過(guò)圖2可知,請(qǐng)求節(jié)點(diǎn)201和Home LLC所在的節(jié)點(diǎn)202之間傳輸路徑的距離較遠(yuǎn),即請(qǐng)求節(jié)點(diǎn)201和Home LLC所在的節(jié)點(diǎn)202之間傳輸數(shù)據(jù)的傳輸開(kāi)銷會(huì)比較大,而通過(guò)上述步驟將Home LLC中緩存請(qǐng)求節(jié)點(diǎn)所需要的數(shù)據(jù)所在緩存行復(fù)制到請(qǐng)求節(jié)點(diǎn)201的LLC,這樣下次使用該數(shù)據(jù)時(shí),請(qǐng)求節(jié)點(diǎn)就不需要發(fā)送請(qǐng)求包,從而可以減少傳輸開(kāi)銷。
另外,在第一復(fù)制單元53中將請(qǐng)求包所請(qǐng)求的數(shù)據(jù)所在的緩存行從所述Home LLC中復(fù)制到請(qǐng)求節(jié)點(diǎn)的LLC中可以是按照傳輸請(qǐng)求包的傳輸路徑將該緩存行復(fù)制到請(qǐng)求節(jié)點(diǎn)的LLC;或者第一復(fù)制單元53中將請(qǐng)求包所請(qǐng)求的數(shù)據(jù)所在的緩存行從所述Home LLC中復(fù)制到請(qǐng)求節(jié)點(diǎn)的LLC中可以是芯片的數(shù)據(jù) 處理器將該緩存行直接復(fù)制到請(qǐng)求節(jié)點(diǎn)的LLC中。另外,上述復(fù)制可以是復(fù)制緩存行的副本,上述緩存行可以是Cacheline,或者高速緩存行。
本實(shí)施例中,上述方法可以應(yīng)用于任意眾核架構(gòu)的芯片中,或者應(yīng)用于任意包括眾核架構(gòu)的芯片的智能設(shè)備。
本實(shí)施例中,請(qǐng)求節(jié)點(diǎn)向本地Home末級(jí)緩存LLC所在的節(jié)點(diǎn)發(fā)送請(qǐng)求包;當(dāng)所述Home LLC所在的節(jié)點(diǎn)接收到所述請(qǐng)求包時(shí),根據(jù)所述請(qǐng)求包識(shí)別所述請(qǐng)求節(jié)點(diǎn)與所述Home LLC所在的節(jié)點(diǎn)之間的傳輸開(kāi)銷是否超過(guò)預(yù)設(shè)傳輸開(kāi)銷閾值;當(dāng)所述傳輸開(kāi)銷超過(guò)預(yù)設(shè)傳輸開(kāi)銷閾值時(shí),將所述請(qǐng)求包所請(qǐng)求的數(shù)據(jù)所在的緩存行從所述Home LLC中復(fù)制到所述請(qǐng)求節(jié)點(diǎn)的LLC中。由于可以將請(qǐng)求節(jié)點(diǎn)請(qǐng)求的數(shù)據(jù)所在的緩存行緩存到該請(qǐng)求節(jié)點(diǎn)的LLC中,這樣該請(qǐng)求節(jié)點(diǎn)在使用該數(shù)據(jù)時(shí),直接從該節(jié)點(diǎn)的LLC中獲取就行,而不需要去Home LLC所在的節(jié)點(diǎn)獲取,從而可以減少眾核架構(gòu)中的傳輸開(kāi)銷。
請(qǐng)參閱圖6,圖6是本發(fā)明實(shí)施例提供的另一種數(shù)據(jù)分配裝置的結(jié)構(gòu)示意圖,如圖6所示,包括:請(qǐng)求單元61、識(shí)別單元62和第一復(fù)制單元63,其中:
請(qǐng)求單元61,用于控制請(qǐng)求節(jié)點(diǎn)向Home LLC所在的節(jié)點(diǎn)發(fā)送請(qǐng)求包,其中,所述請(qǐng)求節(jié)點(diǎn)向Home LLC所在的節(jié)點(diǎn)發(fā)送請(qǐng)求包的過(guò)程中所述請(qǐng)求包每經(jīng)過(guò)一個(gè)節(jié)點(diǎn)時(shí),所述請(qǐng)求包中片上網(wǎng)絡(luò)計(jì)數(shù)器加N,其中,所述N為大于或者等于1的整數(shù)。
其中,請(qǐng)求節(jié)點(diǎn)向Home LLC所在的節(jié)點(diǎn)發(fā)送請(qǐng)求包是通過(guò)請(qǐng)求節(jié)點(diǎn)與Home LLC所在的節(jié)點(diǎn)之間的節(jié)點(diǎn)傳輸?shù)?,如圖2所示的傳輸路徑202。這樣該請(qǐng)求包每經(jīng)過(guò)一個(gè)節(jié)點(diǎn)時(shí),該節(jié)點(diǎn)就將請(qǐng)求包中的片上網(wǎng)絡(luò)計(jì)數(shù)器加N(例如:加1),當(dāng)Home LLC所在的節(jié)點(diǎn)獲取的該請(qǐng)求包時(shí),就可以通過(guò)該請(qǐng)求包中的片上網(wǎng)絡(luò)計(jì)數(shù)的當(dāng)前值識(shí)別該請(qǐng)求包經(jīng)過(guò)了多個(gè)個(gè)節(jié)點(diǎn),即該請(qǐng)求包的傳輸開(kāi)銷。另外,在請(qǐng)求節(jié)點(diǎn)發(fā)送上述請(qǐng)求包時(shí),可以為該請(qǐng)求包中的片上網(wǎng)絡(luò)計(jì)數(shù)器設(shè)定一個(gè)初始值,例如:0。另外,上述片上網(wǎng)絡(luò)計(jì)數(shù)器可以定義為(NoC Count,NC),該NC用于統(tǒng)計(jì)請(qǐng)求包在片上網(wǎng)絡(luò)中的傳輸距離,該NC可以位于請(qǐng)求包的包頭中。
識(shí)別單元62,用于當(dāng)所述Home LLC所在的節(jié)點(diǎn)接收到所述請(qǐng)求包時(shí),判斷所述請(qǐng)求包中的所述片上網(wǎng)絡(luò)計(jì)數(shù)器的當(dāng)前值是否大于預(yù)設(shè)傳輸開(kāi)銷閾值。
其中,上述預(yù)設(shè)傳輸開(kāi)銷閾值可以是用戶預(yù)先設(shè)定的,例如:5、10、20等,具體可以根據(jù)眾核架構(gòu)中節(jié)點(diǎn)的數(shù)量而設(shè)定,或者根據(jù)眾核架構(gòu)的傳輸路徑而設(shè)定。
第一復(fù)制單元63,用于當(dāng)片上網(wǎng)絡(luò)計(jì)數(shù)器的當(dāng)前值大于預(yù)設(shè)傳輸開(kāi)銷閾值,將所述請(qǐng)求包所請(qǐng)求的數(shù)據(jù)所在的緩存行從所述Home LLC中復(fù)制到所述請(qǐng)求節(jié)點(diǎn)的LLC中。
當(dāng)片上網(wǎng)絡(luò)計(jì)數(shù)器的當(dāng)前值大于預(yù)設(shè)傳輸開(kāi)銷閾值時(shí),就說(shuō)明請(qǐng)求節(jié)點(diǎn)與Home LLC中所在的節(jié)點(diǎn)之間傳輸距離較遠(yuǎn)。
本實(shí)施便中,上述請(qǐng)求包可以為向所述Home LLC所在的節(jié)點(diǎn)讀取數(shù)據(jù)的讀請(qǐng)求包,即請(qǐng)求節(jié)點(diǎn)向Home LLC請(qǐng)求讀取某數(shù)據(jù)。例如:請(qǐng)求節(jié)點(diǎn)的一級(jí)緩存(L1Cache)發(fā)送缺失(miss)后,且在請(qǐng)求節(jié)點(diǎn)中的LLC沒(méi)有讀取到所需要的數(shù)據(jù)時(shí),請(qǐng)求節(jié)點(diǎn)就可以向緩存有該數(shù)據(jù)的Home LLC所在的節(jié)點(diǎn)發(fā)送讀請(qǐng)求包。其中,請(qǐng)求節(jié)點(diǎn)可以通過(guò)目錄查找到緩存有請(qǐng)求節(jié)點(diǎn)所需要的數(shù)據(jù)的Home LLC。
該實(shí)施方式中,所述裝置還可以包括:
計(jì)數(shù)單元64,用于當(dāng)所述Home LLC所在的節(jié)點(diǎn)接收到所述請(qǐng)求包時(shí),將預(yù)設(shè)的用于統(tǒng)計(jì)所述請(qǐng)求節(jié)點(diǎn)讀取第一緩存行的讀取次數(shù)的本地計(jì)數(shù)器加N,其中,所述第一緩存行為所述讀請(qǐng)求包所讀取的數(shù)據(jù)所在的緩存行;
所述識(shí)別單元62可以用于判斷所述請(qǐng)求包中的所述片上網(wǎng)絡(luò)計(jì)數(shù)器的當(dāng)前值與所述本地計(jì)數(shù)器的當(dāng)前值之和是否大于預(yù)設(shè)傳輸開(kāi)銷閾值;
所述第一復(fù)制單元63可以用于當(dāng)所述片上網(wǎng)絡(luò)計(jì)數(shù)器的當(dāng)前值與所述本地計(jì)數(shù)器的當(dāng)前值之和大于所述預(yù)設(shè)傳輸開(kāi)銷閾值時(shí),將所述第一緩存行從所述Home LLC中復(fù)制到所述請(qǐng)求節(jié)點(diǎn)的LLC和一級(jí)緩存中。
其中,上述本地計(jì)數(shù)器為預(yù)先設(shè)定的,且本地計(jì)數(shù)器是為緩存行為粒度的,以及可以為每個(gè)緩存行設(shè)定多個(gè)本地計(jì)數(shù)器,每個(gè)本地計(jì)數(shù)器用于統(tǒng)計(jì)一個(gè)節(jié)點(diǎn)讀取該緩存行的次數(shù),例如:針對(duì)上述第一緩存行可以設(shè)定M個(gè)本地計(jì)數(shù)器,其中,M個(gè)本地計(jì)數(shù)器中存一個(gè)用于統(tǒng)計(jì)上述請(qǐng)求節(jié)點(diǎn)讀取第一緩存行的次數(shù)。另外,上述本地計(jì)數(shù)器可以定義為(Home Count,HC),該HC用于統(tǒng)計(jì)本地的緩存行被訪問(wèn)的頻率。
該實(shí)施方式中可以實(shí)現(xiàn)統(tǒng)計(jì)請(qǐng)求節(jié)點(diǎn)讀取上述第一緩存行的次數(shù),當(dāng)請(qǐng)求 節(jié)點(diǎn)讀取第一緩存行的次數(shù)與請(qǐng)求包所經(jīng)過(guò)的節(jié)點(diǎn)數(shù)量之和大于所述預(yù)設(shè)傳輸開(kāi)銷閾值時(shí),將所述第一緩存行從所述Home LLC中復(fù)制到所述請(qǐng)求節(jié)點(diǎn)的LLC和一級(jí)緩存中。這樣可以實(shí)現(xiàn)以請(qǐng)求節(jié)點(diǎn)讀取第一緩存行次數(shù)和請(qǐng)求包所經(jīng)過(guò)的節(jié)點(diǎn)數(shù)這兩個(gè)維度來(lái)決定是否將第一緩存行復(fù)制到請(qǐng)求節(jié)點(diǎn)的LLC。因?yàn)楫?dāng)請(qǐng)求節(jié)點(diǎn)讀取第一緩存行的次數(shù)較多時(shí),說(shuō)明第一緩存行對(duì)于請(qǐng)求節(jié)點(diǎn)比較重要,從而可以將第一緩存行復(fù)制到請(qǐng)求節(jié)點(diǎn)的LLC,以及請(qǐng)求節(jié)點(diǎn)多次從Home LLC讀取第一緩存行,從而造成較大的傳輸開(kāi)銷;另外,當(dāng)請(qǐng)求節(jié)點(diǎn)與Home LLC之間的傳輸路徑較遠(yuǎn)時(shí),請(qǐng)求節(jié)點(diǎn)從Home LLC讀取第一緩存行也會(huì)造成較大的傳輸開(kāi)銷。
另外,本實(shí)施方式中可以將第一緩存行復(fù)制到請(qǐng)求節(jié)點(diǎn)的一級(jí)緩存中,這樣請(qǐng)求節(jié)點(diǎn)在一級(jí)緩存發(fā)送miss時(shí)可以實(shí)現(xiàn)將一級(jí)緩存所需要的數(shù)據(jù)復(fù)制到一級(jí)緩存中,從而解決miss問(wèn)題。
本實(shí)施例中,所述裝置還可以包括:
第二復(fù)制單元65,用于當(dāng)所述片上網(wǎng)絡(luò)計(jì)數(shù)器的當(dāng)前值與所述本地計(jì)數(shù)器的當(dāng)前值之和小于或者等于所述預(yù)設(shè)傳輸開(kāi)銷閾值時(shí),將所述第一緩存行從所述Home LLC中復(fù)制到所述請(qǐng)求節(jié)點(diǎn)的一級(jí)緩存中。
該實(shí)施方式可以實(shí)現(xiàn)請(qǐng)求節(jié)點(diǎn)在一級(jí)緩存發(fā)送miss時(shí)可以實(shí)現(xiàn)將一級(jí)緩存所需要的數(shù)據(jù)復(fù)制到一級(jí)緩存中,從而解決miss問(wèn)題。另外,由于片上網(wǎng)絡(luò)計(jì)數(shù)器的當(dāng)前值與本地計(jì)數(shù)器的當(dāng)前值之和小于或者等于所述預(yù)設(shè)傳輸開(kāi)銷閾值時(shí),說(shuō)明請(qǐng)求節(jié)點(diǎn)讀取第一緩存行的次數(shù)較少,或者請(qǐng)求節(jié)點(diǎn)與Home LLC所在的節(jié)點(diǎn)之間的傳輸路徑的距離較近,所以可以不將第一緩存行復(fù)制至請(qǐng)求節(jié)點(diǎn)的LLC中。
本實(shí)施例中,上述請(qǐng)求包可以為向所述Home LLC的第二緩存行進(jìn)行寫操作的寫請(qǐng)求包;
所述識(shí)別單元62可以用于判斷所述請(qǐng)求包中的所述片上網(wǎng)絡(luò)計(jì)數(shù)器的當(dāng)前值與遠(yuǎn)端計(jì)數(shù)器的當(dāng)前值之和是否大于預(yù)設(shè)傳輸開(kāi)銷閾值,其中,所述遠(yuǎn)端計(jì)數(shù)器為預(yù)先設(shè)置用于統(tǒng)計(jì)遠(yuǎn)端節(jié)點(diǎn)讀取所述第二緩存行的讀取次數(shù),所述遠(yuǎn)端節(jié)點(diǎn)為芯片中除所述Home LLC所在的節(jié)點(diǎn)之外的節(jié)點(diǎn);
所述第一復(fù)制單元可以用于當(dāng)所述片上網(wǎng)絡(luò)計(jì)數(shù)器的當(dāng)前值與遠(yuǎn)端計(jì)數(shù)器的當(dāng)前值之和大于預(yù)設(shè)傳輸開(kāi)銷閾值時(shí),將修改后的第二緩存行從所述Home LLC中復(fù)制到所述請(qǐng)求節(jié)點(diǎn)的LLC和一級(jí)緩存中,其中,所述修改后的第二緩存行為響應(yīng)所述寫請(qǐng)求包對(duì)所述第二緩存行進(jìn)行寫操作而生成的緩存行。
上述遠(yuǎn)端節(jié)點(diǎn)為芯片中除所述Home LLC所在的節(jié)點(diǎn)之外的所有節(jié)點(diǎn),或者上述遠(yuǎn)端節(jié)點(diǎn)為芯片中除所述Home LLC所在的節(jié)點(diǎn)和上述請(qǐng)求節(jié)點(diǎn)之外的所有節(jié)點(diǎn)。這樣通過(guò)上述遠(yuǎn)端計(jì)數(shù)器可以統(tǒng)計(jì)出第二緩存行被讀取或者被訪問(wèn)的次數(shù)或者頻率。另外,上述遠(yuǎn)端計(jì)數(shù)器可以定義為(Remote Count,RC)。例如:每當(dāng)遠(yuǎn)端節(jié)點(diǎn)讀取第二緩存行時(shí),該RC加1。
另外,該實(shí)施方式中,上述請(qǐng)求包還可以根據(jù)一致性協(xié)議將請(qǐng)求包所進(jìn)行的寫操作的數(shù)據(jù)相應(yīng)的信息發(fā)送給Home LLC所在的節(jié)點(diǎn)。
另外,該實(shí)施方式中上述裝置還可以用于響應(yīng)上述請(qǐng)求包,對(duì)第二緩存行進(jìn)行寫操作。
該寫操作可以包括修改、添加或者刪除等寫操作。通過(guò)該寫操作后的第二緩存行即為上述修改后的第二緩存行。
該實(shí)施方式可以實(shí)現(xiàn)當(dāng)片上網(wǎng)絡(luò)計(jì)數(shù)器的當(dāng)前值與遠(yuǎn)端計(jì)數(shù)器的當(dāng)前值之和大于預(yù)設(shè)傳輸開(kāi)銷閾值時(shí),將請(qǐng)求節(jié)點(diǎn)所進(jìn)行寫操作的緩存行復(fù)制到請(qǐng)求節(jié)點(diǎn)的LLC中
該實(shí)施方式中,如圖7所示,所述裝置還可以包括:
無(wú)效單元66,用于將所述芯片中存儲(chǔ)的所述第二緩存行的副本無(wú)效,其中,所述第二緩存行的副本為未響應(yīng)所述寫請(qǐng)求包時(shí)所述第二緩存行存儲(chǔ)的數(shù)據(jù)。
例如:當(dāng)片上網(wǎng)絡(luò)計(jì)數(shù)器的當(dāng)前值與遠(yuǎn)端計(jì)數(shù)器的當(dāng)前值之和小于或者等于預(yù)設(shè)傳輸開(kāi)銷閾值時(shí),不將修改后的第二緩存行從所述Home LLC中復(fù)制到所述請(qǐng)求節(jié)點(diǎn)的LLC和一級(jí)緩存中,只是將所述芯片中存儲(chǔ)的所述第二緩存行的副本無(wú)效。因?yàn)樵谛酒谐松鲜鯤ome LLC緩存在第二緩存行的副本外,可能還存在其他節(jié)點(diǎn)與緩存有第二緩存行的副本,這樣當(dāng)上述請(qǐng)求包對(duì)第二緩存行進(jìn)行寫操作后,那么第二緩存行就修改了。但只是對(duì)Home LLC中的第二緩存行進(jìn)行修改了,而其他節(jié)點(diǎn)緩存的第二緩存行卻沒(méi)有修改,從而需要將這些節(jié)點(diǎn)中的LLC中緩存中第二緩存行的副本無(wú)效。例如:可以發(fā)送出無(wú)效(Invalid)信息將其他節(jié)點(diǎn)中緩存的第二緩存行的副本無(wú)效。例如:如圖4所示,Home LLC所在的節(jié)點(diǎn)401、其中,第二緩存行的副本被遠(yuǎn)端節(jié)點(diǎn)402、遠(yuǎn)端節(jié)點(diǎn)403和遠(yuǎn)端節(jié)點(diǎn)404的LLC緩存,這樣該實(shí)施方式中可以將遠(yuǎn)端節(jié)點(diǎn)402、 遠(yuǎn)端節(jié)點(diǎn)403和遠(yuǎn)端節(jié)點(diǎn)404的LLC緩存的第二緩存行的副本無(wú)效。
另外,還可以是當(dāng)所述片上網(wǎng)絡(luò)計(jì)數(shù)器的當(dāng)前值與所述遠(yuǎn)端計(jì)數(shù)器的當(dāng)前值之和大于預(yù)設(shè)傳輸開(kāi)銷閾值時(shí),將修改后的第二緩存行從所述Home LLC中復(fù)制到所述請(qǐng)求節(jié)點(diǎn)的LLC和一級(jí)緩存中時(shí),將所述芯片中存儲(chǔ)的所述第二緩存行的副本無(wú)效。因?yàn)楫?dāng)上述請(qǐng)求包對(duì)第二緩存行進(jìn)行寫操作后,那么第二緩存行就修改了。但只是對(duì)Home LLC中的第二緩存行進(jìn)行修改了,而其他節(jié)點(diǎn)緩存的第二緩存行卻沒(méi)有修改,從而需要將這些節(jié)點(diǎn)中的LLC中緩存中第二緩存行的副本無(wú)效。
本實(shí)施例中,在圖5所示的實(shí)施例的基礎(chǔ)上增加了多種可選的實(shí)施方式,且都可以實(shí)現(xiàn)減少眾核架構(gòu)中的傳輸開(kāi)銷。
請(qǐng)參閱圖8,圖8是本發(fā)明實(shí)施例提供的一種眾核架構(gòu)的芯片結(jié)構(gòu)示意圖,如圖8所示,包括:M個(gè)節(jié)點(diǎn)81、通信總線82、處理器83和存儲(chǔ)器84,其中,其中,所述M個(gè)節(jié)點(diǎn)中包括請(qǐng)求節(jié)點(diǎn)811和Home LLC所在的節(jié)點(diǎn)812,其中,請(qǐng)求節(jié)點(diǎn)811包括一級(jí)緩存和LLC,Home LLC所在的節(jié)點(diǎn)812包括Home LLC,其中,通信總線82用于連接各個(gè)節(jié)點(diǎn)81、處理器83和存儲(chǔ)器84,其中,所述處理器83用于調(diào)用存儲(chǔ)器84存儲(chǔ)的程序執(zhí)行如下操作:
控制請(qǐng)求節(jié)點(diǎn)811向Home LLC所在的節(jié)點(diǎn)812發(fā)送請(qǐng)求包;
當(dāng)所述Home LLC所在的節(jié)點(diǎn)812接收到所述請(qǐng)求包時(shí),根據(jù)所述請(qǐng)求包識(shí)別所述請(qǐng)求節(jié)點(diǎn)與所述Home LLC所在的節(jié)點(diǎn)之間的傳輸開(kāi)銷是否超過(guò)預(yù)設(shè)傳輸開(kāi)銷閾值;
當(dāng)所述傳輸開(kāi)銷超過(guò)預(yù)設(shè)傳輸開(kāi)銷閾值時(shí),將所述請(qǐng)求包所請(qǐng)求的數(shù)據(jù)所在的緩存行從所述Home LLC中復(fù)制到所述請(qǐng)求節(jié)點(diǎn)811的LLC中。
本實(shí)施例中,請(qǐng)求節(jié)點(diǎn)向Home LLC所在的節(jié)點(diǎn)發(fā)送請(qǐng)求包的過(guò)程中所述請(qǐng)求包每經(jīng)過(guò)一個(gè)節(jié)點(diǎn)時(shí),所述請(qǐng)求包中片上網(wǎng)絡(luò)計(jì)數(shù)器可以加N,其中,所述N為大于或者等于1的整數(shù);
處理器83執(zhí)行的根據(jù)所述請(qǐng)求包識(shí)別所述請(qǐng)求節(jié)點(diǎn)與所述Home LLC所在的節(jié)點(diǎn)之間的傳輸開(kāi)銷是否超過(guò)預(yù)設(shè)傳輸開(kāi)銷閾值的操作,可以包括:
判斷所述請(qǐng)求包中的所述片上網(wǎng)絡(luò)計(jì)數(shù)器的當(dāng)前值是否大于預(yù)設(shè)傳輸開(kāi)銷閾值。
本實(shí)施例中,請(qǐng)求包可以為向所述Home LLC所在的節(jié)點(diǎn)讀取數(shù)據(jù)的讀請(qǐng)求包;
處理器83執(zhí)行的操作還可以包括:
當(dāng)所述Home LLC所在的節(jié)點(diǎn)接收到所述請(qǐng)求包時(shí),將預(yù)設(shè)的用于統(tǒng)計(jì)所述請(qǐng)求節(jié)點(diǎn)讀取第一緩存行的讀取次數(shù)的本地計(jì)數(shù)器加N,其中,所述第一緩存行為所述讀請(qǐng)求包所讀取的數(shù)據(jù)所在的緩存行;
處理器83執(zhí)行的判斷所述請(qǐng)求包中的所述片上網(wǎng)絡(luò)計(jì)數(shù)器的當(dāng)前值是否大于預(yù)設(shè)傳輸開(kāi)銷閾值的操作,可以包括:
判斷所述請(qǐng)求包中的所述片上網(wǎng)絡(luò)計(jì)數(shù)器的當(dāng)前值與所述本地計(jì)數(shù)器的當(dāng)前值之和是否大于預(yù)設(shè)傳輸開(kāi)銷閾值;
處理器83執(zhí)行的當(dāng)所述傳輸開(kāi)銷超過(guò)預(yù)設(shè)傳輸開(kāi)銷閾值時(shí),將所述請(qǐng)求包所請(qǐng)求的數(shù)據(jù)所在的緩存行從所述Home LLC中復(fù)制到所述請(qǐng)求節(jié)點(diǎn)的LLC中的操作,可以包括:
當(dāng)所述片上網(wǎng)絡(luò)計(jì)數(shù)器的當(dāng)前值與所述本地計(jì)數(shù)器的當(dāng)前值之和大于所述預(yù)設(shè)傳輸開(kāi)銷閾值時(shí),將所述第一緩存行從所述Home LLC中復(fù)制到所述請(qǐng)求節(jié)點(diǎn)的LLC和一級(jí)緩存中。
本實(shí)施例中,處理器83執(zhí)行的操作還可以包括:
當(dāng)所述片上網(wǎng)絡(luò)計(jì)數(shù)器的當(dāng)前值與所述本地計(jì)數(shù)器的當(dāng)前值之和小于或者等于所述預(yù)設(shè)傳輸開(kāi)銷閾值時(shí),將所述第一緩存行從所述Home LLC中復(fù)制到所述請(qǐng)求節(jié)點(diǎn)的一級(jí)緩存中。
本實(shí)施例中,請(qǐng)求包可以為向所述Home LLC的第二緩存行進(jìn)行寫操作的寫請(qǐng)求包;
處理器83執(zhí)行的判斷所述請(qǐng)求包中的所述片上網(wǎng)絡(luò)計(jì)數(shù)器的當(dāng)前值是否大于預(yù)設(shè)傳輸開(kāi)銷閾值的操作,可以包括:
判斷所述請(qǐng)求包中的所述片上網(wǎng)絡(luò)計(jì)數(shù)器的當(dāng)前值與遠(yuǎn)端計(jì)數(shù)器的當(dāng)前值之和是否大于預(yù)設(shè)傳輸開(kāi)銷閾值,其中,所述遠(yuǎn)端計(jì)數(shù)器為預(yù)先設(shè)置用于統(tǒng)計(jì)遠(yuǎn)端節(jié)點(diǎn)讀取所述第二緩存行的讀取次數(shù),所述遠(yuǎn)端節(jié)點(diǎn)為芯片中除所述Home LLC所在的節(jié)點(diǎn)之外的節(jié)點(diǎn);
處理器83執(zhí)行的當(dāng)所述傳輸開(kāi)銷超過(guò)預(yù)設(shè)傳輸開(kāi)銷閾值時(shí),將所述請(qǐng)求包所請(qǐng)求的數(shù)據(jù)所在的緩存行從所述Home LLC中復(fù)制到所述請(qǐng)求節(jié)點(diǎn)的LLC中 的操作,可以包括:
當(dāng)所述片上網(wǎng)絡(luò)計(jì)數(shù)器的當(dāng)前值與所述遠(yuǎn)端計(jì)數(shù)器的當(dāng)前值之和大于預(yù)設(shè)傳輸開(kāi)銷閾值時(shí),將修改后的第二緩存行從所述Home LLC中復(fù)制到所述請(qǐng)求節(jié)點(diǎn)的LLC和一級(jí)緩存中,其中,所述修改后的第二緩存行為響應(yīng)所述寫請(qǐng)求包對(duì)所述第二緩存行進(jìn)行寫操作而生成的緩存行。
本實(shí)施例中,處理器83執(zhí)行的操作還可以包括:
將所述芯片中存儲(chǔ)的所述第二緩存行的副本無(wú)效,其中,所述第二緩存行的副本為未響應(yīng)所述寫請(qǐng)求包時(shí)所述第二緩存行存儲(chǔ)的數(shù)據(jù)。
本實(shí)施例中,請(qǐng)求節(jié)點(diǎn)向本地Home末級(jí)緩存LLC所在的節(jié)點(diǎn)發(fā)送請(qǐng)求包;當(dāng)所述Home LLC所在的節(jié)點(diǎn)接收到所述請(qǐng)求包時(shí),根據(jù)所述請(qǐng)求包識(shí)別所述請(qǐng)求節(jié)點(diǎn)與所述Home LLC所在的節(jié)點(diǎn)之間的傳輸開(kāi)銷是否超過(guò)預(yù)設(shè)傳輸開(kāi)銷閾值;當(dāng)所述傳輸開(kāi)銷超過(guò)預(yù)設(shè)傳輸開(kāi)銷閾值時(shí),將所述請(qǐng)求包所請(qǐng)求的數(shù)據(jù)所在的緩存行從所述Home LLC中復(fù)制到所述請(qǐng)求節(jié)點(diǎn)的LLC中。由于可以將請(qǐng)求節(jié)點(diǎn)請(qǐng)求的數(shù)據(jù)所在的緩存行緩存到該請(qǐng)求節(jié)點(diǎn)的LLC中,這樣該請(qǐng)求節(jié)點(diǎn)在使用該數(shù)據(jù)時(shí),直接從該節(jié)點(diǎn)的LLC中獲取就行,而不需要去Home LLC所在的節(jié)點(diǎn)獲取,從而可以減少眾核架構(gòu)中的傳輸開(kāi)銷。
本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以通過(guò)計(jì)算機(jī)程序來(lái)指令相關(guān)的硬件來(lái)完成,所述的程序可存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲(chǔ)介質(zhì)可為磁碟、光盤、只讀存儲(chǔ)記憶體(Read-Only Memory,ROM)或隨機(jī)存取存儲(chǔ)器(Random Access Memory,簡(jiǎn)稱RAM)等。
以上所揭露的僅為本發(fā)明較佳實(shí)施例而已,當(dāng)然不能以此來(lái)限定本發(fā)明之權(quán)利范圍,因此依本發(fā)明權(quán)利要求所作的等同變化,仍屬本發(fā)明所涵蓋的范圍。