一種內(nèi)存數(shù)據(jù)訪問(wèn)方法、裝置和系統(tǒng)的制作方法
【專利摘要】本發(fā)明實(shí)施例公開(kāi)了一種內(nèi)存數(shù)據(jù)訪問(wèn)方法、裝置和系統(tǒng)。本發(fā)明實(shí)施例采用在根據(jù)預(yù)設(shè)規(guī)則,當(dāng)確定需要頻繁訪問(wèn)處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)時(shí),將該處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)復(fù)制到本地節(jié)點(diǎn)的內(nèi)存中,然后從該本地節(jié)點(diǎn)的內(nèi)存中訪問(wèn)所述處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù);由于訪問(wèn)本地節(jié)點(diǎn)的處理器的內(nèi)存的延時(shí)遠(yuǎn)遠(yuǎn)小于訪問(wèn)遠(yuǎn)端處理器的內(nèi)存的延時(shí),因此,在需要頻繁訪問(wèn)處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)時(shí),采用該方案可以大大降低讀取處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)的延時(shí),提高系統(tǒng)性能。
【專利說(shuō)明】一種內(nèi)存數(shù)據(jù)訪問(wèn)方法、裝置和系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信【技術(shù)領(lǐng)域】,具體涉及一種內(nèi)存數(shù)據(jù)訪問(wèn)方法、裝置和系統(tǒng)。
【背景技術(shù)】
[0002]在高性能處理器組建的緩存一致性-非對(duì)稱存儲(chǔ)器訪問(wèn)(CC-NUMA,CacheCoherence Non-Uniform Memory Access)系統(tǒng)中,由于處理器本身的擴(kuò)展能力有限,所以需要將處理器分布在多個(gè)節(jié)點(diǎn)中,例如,可以將兩個(gè)以上的處理器組成一個(gè)節(jié)點(diǎn),然后各個(gè)節(jié)點(diǎn)之間再通過(guò)節(jié)點(diǎn)控制器(NC,Node Controller)進(jìn)行多處理器擴(kuò)展,以增加并行處理的處理器個(gè)數(shù),提升系統(tǒng)性能。
[0003]在CC-NUMA系統(tǒng)中,每個(gè)處理器都有自己的第三層高速緩沖存儲(chǔ)器(L3Cache,簡(jiǎn)稱L3緩存),并且可以進(jìn)行內(nèi)存擴(kuò)展,各節(jié)點(diǎn)上所有的處理器可以對(duì)自身內(nèi)存、以及同節(jié)點(diǎn)中的其他處理器的內(nèi)存、以及對(duì)系統(tǒng)中其他節(jié)點(diǎn)中的處理器的內(nèi)存進(jìn)行一致性的訪問(wèn),但是,訪問(wèn)系統(tǒng)中其他節(jié)點(diǎn)的處理器的內(nèi)存(即訪問(wèn)遠(yuǎn)端處理器的內(nèi)存)的延時(shí)是訪問(wèn)本地節(jié)點(diǎn)的處理器的內(nèi)存的延時(shí)的數(shù)倍。
[0004]在對(duì)現(xiàn)有技術(shù)的研究和實(shí)踐過(guò)程中,本發(fā)明的發(fā)明人發(fā)現(xiàn),如果一個(gè)進(jìn)程需要訪問(wèn)的處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)過(guò)多,則處理器的時(shí)間都消耗在等待該處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)的響應(yīng)的延時(shí)中,這將導(dǎo)致系統(tǒng)性能急劇下降。
【發(fā)明內(nèi)容】
[0005]本發(fā)明實(shí)施例提供一種內(nèi)存數(shù)據(jù)訪問(wèn)方法、裝置和系統(tǒng),可以降低讀取遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)的延時(shí),提高系統(tǒng)性能。
[0006]第一方面,本發(fā)明實(shí)施例提供一種內(nèi)存數(shù)據(jù)訪問(wèn)方法,應(yīng)用于緩存一致性-非對(duì)稱存儲(chǔ)器訪問(wèn)系統(tǒng),包括:
[0007]根據(jù)預(yù)設(shè)規(guī)則,當(dāng)確定需要頻繁訪問(wèn)處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)時(shí),將所述處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)復(fù)制到本地節(jié)點(diǎn)的內(nèi)存中;
[0008]從所述本地節(jié)點(diǎn)的內(nèi)存中訪問(wèn)所述處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)。
[0009]在第一種可能的實(shí)施方式中,結(jié)合第一方面,所述將所述處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)復(fù)制到本地節(jié)點(diǎn)的內(nèi)存中,包括:
[0010]向遠(yuǎn)端節(jié)點(diǎn)發(fā)送數(shù)據(jù)請(qǐng)求,所述數(shù)據(jù)請(qǐng)求中攜帶所請(qǐng)求的內(nèi)存數(shù)據(jù)的物理地址;
[0011]接收遠(yuǎn)端節(jié)點(diǎn)根據(jù)所述物理地址返回的內(nèi)存數(shù)據(jù);
[0012]在獲取到本地節(jié)點(diǎn)的內(nèi)存中的目標(biāo)物理地址的獨(dú)占權(quán)限后,將接收到的內(nèi)存數(shù)據(jù)寫(xiě)入所述目標(biāo)物理地址。
[0013]在第二種可能的實(shí)施方式中,結(jié)合第一方面的第一種可能的實(shí)施方式,所述根據(jù)預(yù)設(shè)規(guī)則,當(dāng)確定需要頻繁訪問(wèn)遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù),包括:
[0014]監(jiān)測(cè)虛實(shí)地址映射表,所述虛實(shí)地址映射表用于保存內(nèi)存數(shù)據(jù)的虛擬地址和物理地址的映射關(guān)系;[0015]確定所述虛實(shí)地址映射表中指向遠(yuǎn)端節(jié)點(diǎn)的物理地址的數(shù)目大于預(yù)置閾值時(shí),確定需要頻繁訪問(wèn)處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)。
[0016]在第三種可能的實(shí)施方式中,結(jié)合第一方面的第二種可能的實(shí)施方式,所述將接收到的內(nèi)存數(shù)據(jù)寫(xiě)入所述目標(biāo)物理地址之后,還包括:
[0017]將所述接收到的內(nèi)存數(shù)據(jù)在虛實(shí)地址映射表中的物理地址更新為所述目標(biāo)物理地址。
[0018]在第四種可能的實(shí)施方式中,結(jié)合第一方面、第一方面的第一或第二種可能的實(shí)施方式,具體可以以內(nèi)存數(shù)據(jù)頁(yè)為單位將所述處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)復(fù)制到本地節(jié)點(diǎn)的內(nèi)存中,則:
[0019]所述將所述處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)復(fù)制到本地節(jié)點(diǎn)的內(nèi)存中之前,還包括:對(duì)需要復(fù)制的內(nèi)存數(shù)據(jù)所在的內(nèi)存數(shù)據(jù)頁(yè)進(jìn)行鎖定;
[0020]所述將所述處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)復(fù)制到本地節(jié)點(diǎn)的內(nèi)存中之后,還包括:對(duì)已經(jīng)復(fù)制的內(nèi)存數(shù)據(jù)所在的內(nèi)存數(shù)據(jù)頁(yè)進(jìn)行解鎖。
[0021]第二方面,本發(fā)明實(shí)施例還提供一種內(nèi)存數(shù)據(jù)訪問(wèn)裝置,應(yīng)用于緩存一致性-非對(duì)稱存儲(chǔ)器訪問(wèn)系統(tǒng),包括復(fù)制單元和訪問(wèn)單元;
[0022]復(fù)制單元,用于根據(jù)預(yù)設(shè)規(guī)則,當(dāng)確定需要頻繁訪問(wèn)處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)時(shí),將所述處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)復(fù)制到本地節(jié)點(diǎn)的內(nèi)存中;
[0023]訪問(wèn)單元,用于從所述本地節(jié)點(diǎn)的內(nèi)存中訪問(wèn)所述處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)。
[0024]在第一種可能的實(shí)施方式中,結(jié)合第二方面,所述復(fù)制單元包括請(qǐng)求子單元、接收子單元和寫(xiě)入子單元;
[0025]請(qǐng)求子單元,用于根據(jù)預(yù)設(shè)規(guī)則,當(dāng)確定需要頻繁訪問(wèn)處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)時(shí),向遠(yuǎn)端節(jié)點(diǎn)發(fā)送數(shù)據(jù)請(qǐng)求,所述數(shù)據(jù)請(qǐng)求中攜帶所請(qǐng)求的內(nèi)存數(shù)據(jù)的物理地址;
[0026]接收子單元,用于接收遠(yuǎn)端節(jié)點(diǎn)根據(jù)所述物理地址返回的內(nèi)存數(shù)據(jù);
[0027]寫(xiě)入子單元,用于在獲取到本地節(jié)點(diǎn)的內(nèi)存中的目標(biāo)物理地址的獨(dú)占權(quán)限后,將接收到的內(nèi)存數(shù)據(jù)寫(xiě)入所述目標(biāo)物理地址。
[0028]在第二種可能的實(shí)施方式中,結(jié)合第二方面的第一種可能的實(shí)施方式,其中:
[0029]所述請(qǐng)求子單元,具體用于監(jiān)測(cè)虛實(shí)地址映射表,所述虛實(shí)地址映射表用于保存內(nèi)存數(shù)據(jù)的虛擬地址和物理地址的映射關(guān)系;確定所述虛實(shí)地址映射表中指向遠(yuǎn)端節(jié)點(diǎn)的物理地址的數(shù)目大于預(yù)置閾值時(shí),向遠(yuǎn)端節(jié)點(diǎn)發(fā)送數(shù)據(jù)請(qǐng)求,所述數(shù)據(jù)請(qǐng)求中攜帶所請(qǐng)求的內(nèi)存數(shù)據(jù)的物理地址。
[0030]在第三種可能的實(shí)施方式中,結(jié)合第二方面的第二種可能的實(shí)施方式,所述復(fù)制單元還包括更新子單元;
[0031]更新子單元,用于將所述接收到的內(nèi)存數(shù)據(jù)在虛實(shí)地址映射表中的物理地址更新為所述目標(biāo)物理地址。
[0032]在第四種可能的實(shí)施方式中,結(jié)合第二方面、第二方面的第一或第二種可能的實(shí)施方式,其中,所述內(nèi)存數(shù)據(jù)訪問(wèn)裝置還包括鎖定單元和解鎖單元;
[0033]所述復(fù)制單元,具體用于以內(nèi)存數(shù)據(jù)頁(yè)為單位將所述處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)復(fù)制到本地節(jié)點(diǎn)的內(nèi)存中;
[0034]鎖定單元,用于在將所述處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)復(fù)制到本地節(jié)點(diǎn)的內(nèi)存中之前,對(duì)需要復(fù)制的內(nèi)存數(shù)據(jù)所在的內(nèi)存數(shù)據(jù)頁(yè)進(jìn)行鎖定;
[0035]解鎖單元,用于在將所述處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)復(fù)制到本地節(jié)點(diǎn)的內(nèi)存中之后,對(duì)已經(jīng)復(fù)制的內(nèi)存數(shù)據(jù)所在的內(nèi)存數(shù)據(jù)頁(yè)進(jìn)行解鎖。
[0036]第三方面,本發(fā)明實(shí)施例還提供一種通信系統(tǒng),包括本發(fā)明實(shí)施例提供的任一種內(nèi)存數(shù)據(jù)訪問(wèn)裝置。
[0037]本發(fā)明實(shí)施例采用在根據(jù)預(yù)設(shè)規(guī)則,當(dāng)確定需要頻繁訪問(wèn)處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)時(shí),將該處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)復(fù)制到本地節(jié)點(diǎn)的內(nèi)存中(即將處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)搬移到本地節(jié)點(diǎn)中),然后從該本地節(jié)點(diǎn)的內(nèi)存中訪問(wèn)所述處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù);由于訪問(wèn)本地節(jié)點(diǎn)的處理器的內(nèi)存的延時(shí)遠(yuǎn)遠(yuǎn)小于訪問(wèn)遠(yuǎn)端處理器的內(nèi)存的延時(shí),因此,即便加上內(nèi)存數(shù)據(jù)搬移的時(shí)間,在需要頻繁訪問(wèn)處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)時(shí),采用該方案也可以大大降低讀取處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)的延時(shí),從而大大提高系統(tǒng)性能。
【專利附圖】
【附圖說(shuō)明】
[0038]為了更清楚地說(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ù)這些附圖獲得其他的附圖。
[0039]圖1是本發(fā)明實(shí)施例提供的內(nèi)存數(shù)據(jù)訪問(wèn)方法的流程圖;
[0040]圖2a是本發(fā)明實(shí)施例提供的CC-NUMA系統(tǒng)的結(jié)構(gòu)示意圖;
[0041]圖2b是本發(fā)明實(shí)施例提供的內(nèi)存數(shù)據(jù)訪問(wèn)方法的另一流程圖;
[0042]圖2c是本發(fā)明實(shí)施例提供的內(nèi)存數(shù)據(jù)訪問(wèn)方法的場(chǎng)景示意圖;
[0043]圖3是本發(fā)明實(shí)施例提供的內(nèi)存數(shù)據(jù)訪問(wèn)方法的又一流程圖;
[0044]圖4是本發(fā)明實(shí)施例提供的內(nèi)存數(shù)據(jù)訪問(wèn)裝置的結(jié)構(gòu)示意圖;
[0045]圖5是本發(fā)明實(shí)施例提供的網(wǎng)絡(luò)設(shè)備的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0046]下面將結(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ù)的范圍。
[0047]本發(fā)明實(shí)施例提供一種內(nèi)存數(shù)據(jù)訪問(wèn)方法、裝置和系統(tǒng)。以下分別進(jìn)行詳細(xì)說(shuō)明。
[0048]實(shí)施例一、
[0049]本實(shí)施例將從內(nèi)存數(shù)據(jù)訪問(wèn)裝置的角度進(jìn)行描述。該內(nèi)存數(shù)據(jù)訪問(wèn)裝置具體可以為節(jié)點(diǎn)控制器等設(shè)備。
[0050]一種內(nèi)存數(shù)據(jù)訪問(wèn)方法,應(yīng)用于CC-NUMA系統(tǒng),包括:根據(jù)預(yù)設(shè)規(guī)則,當(dāng)確定需要頻繁訪問(wèn)處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)時(shí),將該處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)復(fù)制到本地節(jié)點(diǎn)的內(nèi)存中,從該本地節(jié)點(diǎn)的內(nèi)存中訪問(wèn)該處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)。
[0051]如圖1所示,具體流程可以如下:
[0052]101、根據(jù)預(yù)設(shè)規(guī)則,當(dāng)確定需要頻繁訪問(wèn)處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)時(shí),將該處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)復(fù)制到本地節(jié)點(diǎn)的內(nèi)存中。例如,具體可以如下:
[0053]根據(jù)預(yù)設(shè)規(guī)則,當(dāng)確定需要頻繁訪問(wèn)處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)時(shí),向遠(yuǎn)端節(jié)點(diǎn)發(fā)送數(shù)據(jù)請(qǐng)求,其中,該數(shù)據(jù)請(qǐng)求中攜帶所請(qǐng)求的內(nèi)存數(shù)據(jù)的物理地址等信息,接收遠(yuǎn)端節(jié)點(diǎn)根據(jù)該物理地址返回的內(nèi)存數(shù)據(jù),在獲取到本地節(jié)點(diǎn)的內(nèi)存中的目標(biāo)物理地址的獨(dú)占權(quán)限后,將接收到的內(nèi)存數(shù)據(jù)寫(xiě)入該目標(biāo)物理地址。
[0054]其中,預(yù)設(shè)規(guī)則可以根據(jù)實(shí)際應(yīng)用的需求進(jìn)行設(shè)置,即確定對(duì)處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)的訪問(wèn)是否頻繁,可以有多種方式,例如,可以監(jiān)測(cè)虛實(shí)地址映射表,如果虛實(shí)地址映射表中指向遠(yuǎn)端節(jié)點(diǎn)的物理地址的數(shù)目大于預(yù)置閾值,則表明需要頻繁訪問(wèn)處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù),等等。其中,虛實(shí)地址映射表用于保存內(nèi)存數(shù)據(jù)的虛擬地址和物理地址的映射關(guān)系,而該閾值可以根據(jù)實(shí)際應(yīng)用的需求進(jìn)行設(shè)置。
[0055]t:匕如,以節(jié)點(diǎn)O (NodeO)的進(jìn)程向節(jié)點(diǎn)I (Nodel)請(qǐng)求物理地址P (A)的最新內(nèi)存數(shù)據(jù)為例,具體可以如下:
[0056]節(jié)點(diǎn)O的進(jìn)程向節(jié)點(diǎn)I請(qǐng)求物理地址P (A)的最新內(nèi)存數(shù)據(jù);
[0057]節(jié)點(diǎn)O的進(jìn)程得到節(jié)點(diǎn)I響應(yīng)的物理地址P (A)對(duì)應(yīng)的內(nèi)存數(shù)據(jù)Data (A);
[0058]節(jié)點(diǎn)O的進(jìn)程請(qǐng)求節(jié)點(diǎn)O中的目標(biāo)物理地址P(B)的獨(dú)占權(quán)限;
[0059]節(jié)點(diǎn)O的進(jìn)程取得節(jié)點(diǎn)O中的目標(biāo)物理地址P (B)的獨(dú)占權(quán)限;
[0060]節(jié)點(diǎn)O的進(jìn)程中將內(nèi)存數(shù)據(jù)Data (A)寫(xiě)入目標(biāo)物理地址P (B),至此,內(nèi)存數(shù)據(jù)回與完成。
[0061]此外,在將接收到的內(nèi)存數(shù)據(jù)寫(xiě)入目標(biāo)物理地址之后,即完成內(nèi)存數(shù)據(jù)回寫(xiě)之后,還可以將該接收到的內(nèi)存數(shù)據(jù)在虛實(shí)地址映射表中的物理地址更新為該目標(biāo)物理地址,t匕如,由V (A)->p (A)修改為ν(Α)->Ρ(Β)。這樣,后續(xù)節(jié)點(diǎn)O的進(jìn)程在對(duì)地址V(A)進(jìn)行訪問(wèn)時(shí),就可以被映射到本節(jié)點(diǎn)內(nèi)的地址P (B),從而可以在較低的延時(shí)下工作。
[0062]一般來(lái)說(shuō),內(nèi)存裝載以及地址映射表都是按照操作系統(tǒng)內(nèi)存數(shù)據(jù)頁(yè)(Page)為單位進(jìn)行,所以,在進(jìn)行內(nèi)存數(shù)據(jù)搬移時(shí)也可以按照Page為單位來(lái)進(jìn)行,即以內(nèi)存數(shù)據(jù)頁(yè)為單位將該處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)復(fù)制到本地節(jié)點(diǎn)的內(nèi)存中。
[0063]另外,為了在復(fù)制內(nèi)存數(shù)據(jù)時(shí),該內(nèi)存數(shù)據(jù)不會(huì)被其他設(shè)備訪問(wèn),可以將對(duì)應(yīng)的內(nèi)存數(shù)據(jù)頁(yè)進(jìn)行鎖定,然后在復(fù)制完成后,將該被鎖定的內(nèi)存數(shù)據(jù)頁(yè)進(jìn)行解鎖,以便其可以繼續(xù)運(yùn)行;即,在步驟“將處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)復(fù)制到本地節(jié)點(diǎn)的內(nèi)存中”之前,該內(nèi)存數(shù)據(jù)訪問(wèn)方法還可以包括:
[0064]對(duì)需要復(fù)制的內(nèi)存數(shù)據(jù)所在的內(nèi)存數(shù)據(jù)頁(yè)進(jìn)行鎖定;
[0065]相應(yīng)的,在步驟“將處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)復(fù)制到本地節(jié)點(diǎn)的內(nèi)存中”之后,內(nèi)存數(shù)據(jù)訪問(wèn)方法還可以包括:
[0066]對(duì)已經(jīng)復(fù)制的內(nèi)存數(shù)據(jù)所在的內(nèi)存數(shù)據(jù)頁(yè)進(jìn)行解鎖。
[0067]102、從本地節(jié)點(diǎn)的內(nèi)存中訪問(wèn)該處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)。
[0068]例如,如果在步驟101中,節(jié)點(diǎn)O的進(jìn)程中已經(jīng)將內(nèi)存數(shù)據(jù)Data (A)寫(xiě)入目標(biāo)物理地址P (B),則此時(shí),可以從物理地址P (B)中讀取到內(nèi)存數(shù)據(jù)Data (A)0
[0069]由上可知,本實(shí)施例采用在根據(jù)預(yù)設(shè)規(guī)則,當(dāng)確定需要頻繁訪問(wèn)處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)時(shí),將該處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)復(fù)制到本地節(jié)點(diǎn)的內(nèi)存中(即將處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)搬移到本地節(jié)點(diǎn)中),然后從該本地節(jié)點(diǎn)的內(nèi)存中訪問(wèn)所述處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù);由于訪問(wèn)本地節(jié)點(diǎn)的處理器的內(nèi)存的延時(shí)遠(yuǎn)遠(yuǎn)小于訪問(wèn)遠(yuǎn)端處理器的內(nèi)存的延時(shí),因此,即便加上內(nèi)存數(shù)據(jù)搬移的時(shí)間,在需要頻繁訪問(wèn)處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)時(shí),采用該方案也可以大大降低讀取處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)的延時(shí),從而大大提高系統(tǒng)性能。
[0070]實(shí)施例二、
[0071]根據(jù)實(shí)施例一所描述的方法,以下將舉例作進(jìn)一步詳細(xì)說(shuō)明。
[0072]如圖2a所示,該CC-NUMA系統(tǒng)可以包括N+1個(gè)節(jié)點(diǎn),即節(jié)點(diǎn)O、節(jié)點(diǎn)1、節(jié)點(diǎn)2……,以及節(jié)點(diǎn)N,其中,每個(gè)節(jié)點(diǎn)中均可以包括η個(gè)處理器(CPU, Central Processing Unit),每個(gè)處理器都有自己的L3緩存,以及對(duì)應(yīng)的內(nèi)存,例如,節(jié)點(diǎn)O中的處理器I對(duì)應(yīng)著節(jié)點(diǎn)O中的內(nèi)存I,節(jié)點(diǎn)O中的處理器η對(duì)應(yīng)著節(jié)點(diǎn)O中的內(nèi)存η,節(jié)點(diǎn)2中的處理器I對(duì)應(yīng)著節(jié)點(diǎn)2中的內(nèi)存1,節(jié)點(diǎn)2中的處理器η對(duì)應(yīng)著節(jié)點(diǎn)2中的內(nèi)存η,等等。每個(gè)節(jié)點(diǎn)中的每個(gè)處理器都通過(guò)所屬節(jié)點(diǎn)中的節(jié)點(diǎn)控制器(即NC)進(jìn)行連接,而節(jié)點(diǎn)與節(jié)點(diǎn)之間也通過(guò)各自的節(jié)點(diǎn)控制器進(jìn)行通信。
[0073]在本實(shí)施例中,將以節(jié)點(diǎn)O訪問(wèn)節(jié)點(diǎn)2中的內(nèi)存數(shù)據(jù)為例進(jìn)行說(shuō)明,如圖2b所示,一種內(nèi)存數(shù)據(jù)訪問(wèn)方法,具體流程可以如下:
[0074]201、當(dāng)節(jié)點(diǎn)O的處理器I中的進(jìn)程需要訪問(wèn)節(jié)點(diǎn)2的內(nèi)存I中的內(nèi)存數(shù)據(jù)時(shí),相應(yīng)進(jìn)程中的虛實(shí)地址將會(huì)被映射為V (A) ->P (A),并記錄在虛實(shí)地址映射表中。
[0075]其中,V㈧為虛擬地址,P(A)為該需要訪問(wèn)的數(shù)據(jù)的物理地址。
[0076]202、節(jié)點(diǎn)O的節(jié)點(diǎn)控制器監(jiān)測(cè)虛實(shí)地址映射表,如果確定需要頻繁訪問(wèn)節(jié)點(diǎn)2的內(nèi)存數(shù)據(jù),則執(zhí)行步驟203。
[0077]其中,確定對(duì)節(jié)點(diǎn)2的內(nèi)存數(shù)據(jù)的訪問(wèn)是否頻繁,可以有多種方式,例如,可以監(jiān)測(cè)虛實(shí)地址映射表,如果虛實(shí) 地址映射表中指向節(jié)點(diǎn)2的物理地址的數(shù)目大于預(yù)置閾值,則表明需要頻繁訪問(wèn)節(jié)點(diǎn)2的內(nèi)存數(shù)據(jù),等等。
[0078]其中,該閾值可以根據(jù)實(shí)際應(yīng)用的需求進(jìn)行設(shè)置。
[0079]203、節(jié)點(diǎn)O的節(jié)點(diǎn)控制器向節(jié)點(diǎn)2請(qǐng)求物理地址P (A)的最新內(nèi)存數(shù)據(jù)。
[0080]例如,具體可以向節(jié)點(diǎn)2發(fā)送數(shù)據(jù)請(qǐng)求如獨(dú)占請(qǐng)求,其中,該數(shù)據(jù)請(qǐng)求(比如獨(dú)占請(qǐng)求)中攜帶所請(qǐng)求的內(nèi)存數(shù)據(jù)的物理地址P (A),例如,可參見(jiàn)圖2c中的步驟1,該圖為該內(nèi)存數(shù)據(jù)訪問(wèn)方法的場(chǎng)景示意圖。
[0081]204、節(jié)點(diǎn)2的節(jié)點(diǎn)控制器接收到節(jié)點(diǎn)O發(fā)送的數(shù)據(jù)請(qǐng)求后,根據(jù)該數(shù)據(jù)請(qǐng)求中所攜帶的物理地址P (A)獲取對(duì)應(yīng)的內(nèi)存數(shù)據(jù)“Data (A)”,并將該內(nèi)存數(shù)據(jù)“Data (A)”通過(guò)數(shù)據(jù)響應(yīng)返回給節(jié)點(diǎn)O。
[0082]例如,可參見(jiàn)圖2c中的步驟2,由于物理地址P (A)位于節(jié)點(diǎn)2中的處理器O所對(duì)應(yīng)的內(nèi)存,即內(nèi)存0,因此,節(jié)點(diǎn)2的節(jié)點(diǎn)控制器會(huì)將該接收到的數(shù)據(jù)請(qǐng)求傳送給節(jié)點(diǎn)2中的處理器0,由處理器O來(lái)獲取內(nèi)存數(shù)據(jù)“Data (A)”,并由處理器O將該獲取到的內(nèi)存數(shù)據(jù)“Data (A)”轉(zhuǎn)送給節(jié)點(diǎn)2中的節(jié)點(diǎn)控制器,由節(jié)點(diǎn)2中的節(jié)點(diǎn)控制器將該內(nèi)存數(shù)據(jù)“Data(A)”通過(guò)數(shù)據(jù)響應(yīng)返回給節(jié)點(diǎn)O。
[0083]需說(shuō)明的是,節(jié)點(diǎn)O在發(fā)送數(shù)據(jù)請(qǐng)求,比如發(fā)送獨(dú)占請(qǐng)求時(shí),必須符合緩存一致性(CC,Cache Coherence)協(xié)議,即需要根據(jù)目錄和需要進(jìn)行偵聽(tīng),拿到獨(dú)占態(tài)數(shù)據(jù)響應(yīng)或獨(dú)占權(quán)限后,才能正確地完成數(shù)據(jù)搬移。因此,在返回?cái)?shù)據(jù)響應(yīng)給節(jié)點(diǎn)O之前,節(jié)點(diǎn)2還需要進(jìn)行偵聽(tīng),例如,具體可以如下:[0084]節(jié)點(diǎn)O的節(jié)點(diǎn)控制器向節(jié)點(diǎn)2發(fā)送關(guān)于物理P (A)地址的獨(dú)占請(qǐng)求,意味著節(jié)點(diǎn)O需要拿到物理地址P(A)對(duì)應(yīng)的數(shù)據(jù)的獨(dú)占權(quán)限,由于該CC-NUMA系統(tǒng)中所有的處理器都可以訪問(wèn)物理地址P(A),因此,若假設(shè)節(jié)點(diǎn)I中有的處理器緩存了物理地址P(A)的數(shù)據(jù),則獨(dú)占請(qǐng)求到達(dá)節(jié)點(diǎn)2的處理器O后,處理器O會(huì)根據(jù)CC協(xié)議向緩存了物理地址P (A)的數(shù)據(jù)的節(jié)點(diǎn)I發(fā)起偵聽(tīng),即通知其他節(jié)點(diǎn)將此數(shù)據(jù)無(wú)效(如果有臟(Dirty)數(shù)據(jù)則需要寫(xiě)回主存),而此時(shí)節(jié)點(diǎn)I可以返回一個(gè)表示數(shù)據(jù)無(wú)效的響應(yīng),從而保證節(jié)點(diǎn)O對(duì)物理地址P (A)的獨(dú)占權(quán)限。通過(guò)偵聽(tīng)處理,可以使得物理地址P(A)對(duì)應(yīng)的內(nèi)存數(shù)據(jù)在除了節(jié)點(diǎn)2之外的其他節(jié)點(diǎn)無(wú)其他副本存在,且管理物理地址P (A)的處理器中有最新的數(shù)據(jù)副本。
[0085]經(jīng)過(guò)偵聽(tīng)之后,節(jié)點(diǎn)2即可向節(jié)點(diǎn)O返回?cái)?shù)據(jù)響應(yīng),以確保節(jié)點(diǎn)O能夠得到物理地址P㈧的最新的數(shù)據(jù)副本,即根據(jù)數(shù)據(jù)請(qǐng)求(如獨(dú)占請(qǐng)求)中所攜帶的物理地址P (A)獲取對(duì)應(yīng)的內(nèi)存數(shù)據(jù)“Data (A)”,并將該內(nèi)存數(shù)據(jù)“Data (A)”通過(guò)數(shù)據(jù)響應(yīng)返回給節(jié)點(diǎn)O。
[0086]205、在接收到節(jié)點(diǎn)2發(fā)送的數(shù)據(jù)響應(yīng)后,節(jié)點(diǎn)O的節(jié)點(diǎn)控制器發(fā)送獨(dú)占權(quán)限請(qǐng)求給節(jié)點(diǎn)O中的內(nèi)存I (參見(jiàn)圖2c中的步驟3),以請(qǐng)求節(jié)點(diǎn)O中的目標(biāo)物理地址P (B)的獨(dú)占權(quán)限。
[0087]例如,節(jié)點(diǎn)O的節(jié)點(diǎn)控制器可以控制處理器0,由處理器O發(fā)送獨(dú)占權(quán)限請(qǐng)求給節(jié)點(diǎn)O中的內(nèi)存1,以請(qǐng)求節(jié)點(diǎn)O中的目標(biāo)物理地址P (B)的獨(dú)占權(quán)限。
[0088]206、節(jié)點(diǎn)O的節(jié)點(diǎn)控制器接收節(jié)點(diǎn)O的內(nèi)存I所返回的獨(dú)占響應(yīng)(參見(jiàn)圖2c中的步驟4),從而取得目標(biāo)物理地址P (B)的獨(dú)占權(quán)限。
[0089]例如,具體可以由節(jié)點(diǎn)O的處理器O接收節(jié)點(diǎn)O的內(nèi)存I所返回的獨(dú)占響應(yīng),然后再由節(jié)點(diǎn)O的處理器O將該獨(dú)占響應(yīng)傳送給節(jié)點(diǎn)O的節(jié)點(diǎn)控制器。
[0090]207、在取得目標(biāo)物理地址P (B)的獨(dú)占權(quán)限后,節(jié)點(diǎn)O的節(jié)點(diǎn)控制器將接收到的內(nèi)存數(shù)據(jù)“Data (A)”寫(xiě)入目標(biāo)物理地址P (B),并接收內(nèi)存I所返回的寫(xiě)入響應(yīng)(可參見(jiàn)圖2c中的步驟5和6)。
[0091]例如,節(jié)點(diǎn)O的節(jié)點(diǎn)控制器可以控制節(jié)點(diǎn)O的處理器0,由節(jié)點(diǎn)O的處理器O將接收到的內(nèi)存數(shù)據(jù)“Data (A)”寫(xiě)入目標(biāo)物理地址P (B),并接收內(nèi)存I所返回的寫(xiě)入響應(yīng),然后再由節(jié)點(diǎn)O的處理器O將該寫(xiě)入響應(yīng)傳送給節(jié)點(diǎn)O的節(jié)點(diǎn)控制器。
[0092]208、節(jié)點(diǎn)O的節(jié)點(diǎn)控制器將該接收到的內(nèi)存數(shù)據(jù)在虛實(shí)地址映射表中的物理地址更新為該目標(biāo)物理地址,即將V (A) ->P (A)修改為V (A) ->P (B)。
[0093]209、節(jié)點(diǎn)O的進(jìn)程在對(duì)地址V (A)進(jìn)行訪問(wèn)時(shí),從本節(jié)點(diǎn)內(nèi)的地址P (B)中獲取內(nèi)存數(shù)據(jù) “Data (A)”。
[0094]由上可知,本實(shí)施例的節(jié)點(diǎn)O在確定需要頻繁訪問(wèn)遠(yuǎn)端節(jié)點(diǎn)如節(jié)點(diǎn)2的內(nèi)存數(shù)據(jù)時(shí),將該處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)復(fù)制到本地節(jié)點(diǎn)的內(nèi)存中(即將處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)搬移到本地節(jié)點(diǎn)中),然后從該本地節(jié)點(diǎn)的內(nèi)存中訪問(wèn)所述處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù);由于訪問(wèn)本地節(jié)點(diǎn)的處理器的內(nèi)存的延時(shí)遠(yuǎn)遠(yuǎn)小于訪問(wèn)遠(yuǎn)端處理器的內(nèi)存的延時(shí),因此,即便加上內(nèi)存數(shù)據(jù)搬移的時(shí)間,在需要頻繁訪問(wèn)處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)時(shí),采用該方案也可以大大降低讀取處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)的延時(shí),從而大大提高系統(tǒng)性能。
[0095]實(shí)施例三、
[0096]在實(shí)施例二的基礎(chǔ)上,進(jìn)一步的,為了在復(fù)制內(nèi)存數(shù)據(jù)時(shí),該內(nèi)存數(shù)據(jù)不會(huì)被其他設(shè)備訪問(wèn),可以將對(duì)應(yīng)的內(nèi)存數(shù)據(jù)頁(yè)(以內(nèi)存裝載和地址映射表都是按照操作系統(tǒng)內(nèi)存數(shù)據(jù)頁(yè)(Page)為單位為例)進(jìn)行鎖定,然后在復(fù)制完成后,將該被鎖定的內(nèi)存數(shù)據(jù)頁(yè)進(jìn)行解鎖,以下將進(jìn)行詳細(xì)說(shuō)明。
[0097]在本實(shí)施例中,還是以圖2a所示的CC-NUMA系統(tǒng)結(jié)構(gòu)為例進(jìn)行說(shuō)明。
[0098]一種內(nèi)存數(shù)據(jù)訪問(wèn)方法,如圖3所示,具體流程可以如下:
[0099]301、當(dāng)節(jié)點(diǎn)O的處理器I中的進(jìn)程需要訪問(wèn)節(jié)點(diǎn)2的內(nèi)存I中的內(nèi)存數(shù)據(jù)時(shí),相應(yīng)進(jìn)程中的虛實(shí)地址將會(huì)被映射為V (A) ->P (A),并記錄在虛實(shí)地址映射表中。
[0100]其中,V㈧為虛擬地址,P(A)為該需要訪問(wèn)的數(shù)據(jù)的物理地址。
[0101]302、節(jié)點(diǎn)O的節(jié)點(diǎn)控制器監(jiān)測(cè)虛實(shí)地址映射表,如果確定需要頻繁訪問(wèn)節(jié)點(diǎn)2的內(nèi)存數(shù)據(jù),則執(zhí)行步驟303。
[0102]其中,確定對(duì)節(jié)點(diǎn)2的內(nèi)存數(shù)據(jù)的訪問(wèn)是否頻繁,可以有多種方式,例如,可以監(jiān)測(cè)虛實(shí)地址映射表,如果虛實(shí)地址映射表中指向節(jié)點(diǎn)2的物理地址的數(shù)目大于預(yù)置閾值,則表明需要頻繁訪問(wèn)節(jié)點(diǎn)2的內(nèi)存數(shù)據(jù),等等。
[0103]其中,該閾值可以根據(jù)實(shí)際應(yīng)用的需求進(jìn)行設(shè)置。
[0104]303、節(jié)點(diǎn)O的節(jié)點(diǎn)控制器對(duì)需要復(fù)制的內(nèi)存數(shù)據(jù)所在的內(nèi)存數(shù)據(jù)頁(yè)進(jìn)行鎖定,然后執(zhí)彳了步驟304。
[0105]304、節(jié)點(diǎn)O的節(jié)點(diǎn)控制器向節(jié)點(diǎn)2請(qǐng)求物理地址P (A)的最新內(nèi)存數(shù)據(jù)。
[0106]例如,具體可以向節(jié)點(diǎn)2發(fā)送數(shù)據(jù)請(qǐng)求如獨(dú)占請(qǐng)求,其中,該數(shù)據(jù)請(qǐng)求(比如獨(dú)占請(qǐng)求)中攜帶所請(qǐng)求的內(nèi)存數(shù)據(jù)的物理地址P (A),例如,可參見(jiàn)圖2c中的步驟1,該圖為該內(nèi)存數(shù)據(jù)訪問(wèn)方法的場(chǎng)景示意圖。
[0107]305、節(jié)點(diǎn)2的節(jié)點(diǎn)控制器接收到節(jié)點(diǎn)O發(fā)送的數(shù)據(jù)請(qǐng)求后,根據(jù)該數(shù)據(jù)請(qǐng)求中所攜帶的物理地址P (A)獲取對(duì)應(yīng)的內(nèi)存數(shù)據(jù)“Data (A)”,并將該內(nèi)存數(shù)據(jù)“Data (A)”通過(guò)數(shù)據(jù)響應(yīng)返回給節(jié)點(diǎn)O。
[0108]例如,可參見(jiàn)圖2c中的步驟2,由于物理地址P (A)位于節(jié)點(diǎn)2中的處理器O所對(duì)應(yīng)的內(nèi)存,即內(nèi)存0,因此,節(jié)點(diǎn)2的節(jié)點(diǎn)控制器會(huì)將該接收到的數(shù)據(jù)請(qǐng)求傳送給節(jié)點(diǎn)2中的處理器0,由處理器O來(lái)獲取內(nèi)存數(shù)據(jù)“Data (A)”,并由處理器O將該獲取到的內(nèi)存數(shù)據(jù)“Data (A)”轉(zhuǎn)送給節(jié)點(diǎn)2中的節(jié)點(diǎn)控制器,由節(jié)點(diǎn)2中的節(jié)點(diǎn)控制器將該內(nèi)存數(shù)據(jù)“Data(A)”通過(guò)數(shù)據(jù)響應(yīng)返回給節(jié)點(diǎn)O。
[0109]需說(shuō)明的是,節(jié)點(diǎn)O在發(fā)送數(shù)據(jù)請(qǐng)求,比如發(fā)送獨(dú)占請(qǐng)求時(shí),必須符合緩存一致性(CC,Cache Coherence)協(xié)議,即需要根據(jù)目錄和需要進(jìn)行偵聽(tīng),拿到獨(dú)占態(tài)數(shù)據(jù)響應(yīng)或獨(dú)占權(quán)限后,才能正確地完成數(shù)據(jù)搬移。因此,在返回?cái)?shù)據(jù)響應(yīng)給節(jié)點(diǎn)O之前,節(jié)點(diǎn)2還需要進(jìn)行偵聽(tīng),例如,具體可以如下:
[0110]節(jié)點(diǎn)O的節(jié)點(diǎn)控制器向節(jié)點(diǎn)2發(fā)送關(guān)于物理P (A)地址的獨(dú)占請(qǐng)求,意味著節(jié)點(diǎn)O需要拿到物理地址P(A)對(duì)應(yīng)的數(shù)據(jù)的獨(dú)占權(quán)限,由于該CC-NUMA系統(tǒng)中所有的處理器都可以訪問(wèn)物理地址P(A),因此,若假設(shè)節(jié)點(diǎn)I中有的處理器緩存了物理地址P(A)的數(shù)據(jù),則獨(dú)占請(qǐng)求到達(dá)節(jié)點(diǎn)2的處理器O后,處理器O會(huì)根據(jù)CC協(xié)議向緩存了物理地址P(A)的數(shù)據(jù)的節(jié)點(diǎn)I發(fā)起偵聽(tīng),即通知其他節(jié)點(diǎn)將此數(shù)據(jù)無(wú)效(如果有臟(Dirty)數(shù)據(jù)則需要寫(xiě)回主存),而此時(shí)節(jié)點(diǎn)I可以返回一個(gè)表示數(shù)據(jù)無(wú)效的響應(yīng),從而保證節(jié)點(diǎn)O對(duì)物理地址P (A)的獨(dú)占權(quán)限。通過(guò)偵聽(tīng)處理,可以使得物理地址P(A)對(duì)應(yīng)的內(nèi)存數(shù)據(jù)在除了節(jié)點(diǎn)2之外的其他節(jié)點(diǎn)無(wú)其他副本存在,且管理物理地址P (A)的處理器中有最新的數(shù)據(jù)副本。[0111]經(jīng)過(guò)偵聽(tīng)之后,節(jié)點(diǎn)2即可向節(jié)點(diǎn)O返回?cái)?shù)據(jù)響應(yīng),以確保節(jié)點(diǎn)O能夠得到物理地址P㈧的最新的數(shù)據(jù)副本,即根據(jù)數(shù)據(jù)請(qǐng)求(如獨(dú)占請(qǐng)求)中所攜帶的物理地址P (A)獲取對(duì)應(yīng)的內(nèi)存數(shù)據(jù)“Data (A)”,并將該內(nèi)存數(shù)據(jù)“Data (A)”通過(guò)數(shù)據(jù)響應(yīng)返回給節(jié)點(diǎn)O。
[0112]306、在接收到節(jié)點(diǎn)2發(fā)送的數(shù)據(jù)響應(yīng)后,節(jié)點(diǎn)O的節(jié)點(diǎn)控制器發(fā)送獨(dú)占權(quán)限請(qǐng)求給節(jié)點(diǎn)O中的內(nèi)存I (參見(jiàn)圖2c中的步驟3),以請(qǐng)求節(jié)點(diǎn)O中的目標(biāo)物理地址P (B)的獨(dú)占權(quán)限。
[0113]例如,節(jié)點(diǎn)O的節(jié)點(diǎn)控制器可以控制處理器0,由處理器O發(fā)送獨(dú)占權(quán)限請(qǐng)求給節(jié)點(diǎn)O中的內(nèi)存1,以請(qǐng)求節(jié)點(diǎn)O中的目標(biāo)物理地址P (B)的獨(dú)占權(quán)限。
[0114]307、節(jié)點(diǎn)O的節(jié)點(diǎn)控制器接收節(jié)點(diǎn)O的內(nèi)存I所返回的獨(dú)占響應(yīng)(參見(jiàn)圖2c中的步驟4),從而取得目標(biāo)物理地址P (B)的獨(dú)占權(quán)限。
[0115]例如,具體可以由節(jié)點(diǎn)O的處理器O接收節(jié)點(diǎn)O的內(nèi)存I所返回的獨(dú)占響應(yīng),然后再由節(jié)點(diǎn)O的處理器O將該獨(dú)占響應(yīng)傳送給節(jié)點(diǎn)O的節(jié)點(diǎn)控制器。
[0116]308、在取得目標(biāo)物理地址P (B)的獨(dú)占權(quán)限后,節(jié)點(diǎn)O的節(jié)點(diǎn)控制器將接收到的內(nèi)存數(shù)據(jù)“Data (A)”寫(xiě)入目標(biāo)物理地址P (B),并接收內(nèi)存I所返回的寫(xiě)入響應(yīng)(可參見(jiàn)圖2c中的步驟5和6)。
[0117]例如,節(jié)點(diǎn)O的節(jié)點(diǎn)控制器可以控制節(jié)點(diǎn)O的處理器0,由節(jié)點(diǎn)O的處理器O將接收到的內(nèi)存數(shù)據(jù)“Data (A)”寫(xiě)入目標(biāo)物理地址P (B),并接收內(nèi)存I所返回的寫(xiě)入響應(yīng),然后再由節(jié)點(diǎn)O的處理器O將該寫(xiě)入響應(yīng)傳送給節(jié)點(diǎn)O的節(jié)點(diǎn)控制器。
[0118]309、節(jié)點(diǎn)O的節(jié)點(diǎn)控制器將該接收到的內(nèi)存數(shù)據(jù)在虛實(shí)地址映射表中的物理地址更新為該目標(biāo)物理地址,即將V (A) ->P (A)修改為V (A) ->P (B)。
[0119]310、節(jié)點(diǎn)O的節(jié)點(diǎn)控制器對(duì)已經(jīng)復(fù)制的內(nèi)存數(shù)據(jù)所在的內(nèi)存數(shù)據(jù)頁(yè)進(jìn)行解鎖。
[0120]311、節(jié)點(diǎn)O的進(jìn)程在對(duì)地址V (A)進(jìn)行訪問(wèn)時(shí),從本節(jié)點(diǎn)內(nèi)的地址P⑶中獲取內(nèi)存數(shù)據(jù) “Data (A)”。
[0121]由上可知,本實(shí)施例的節(jié)點(diǎn)O在確定需要頻繁訪問(wèn)遠(yuǎn)端節(jié)點(diǎn)如節(jié)點(diǎn)2的內(nèi)存數(shù)據(jù)時(shí),可以將該處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)復(fù)制到本地節(jié)點(diǎn)的內(nèi)存中,然后從該本地節(jié)點(diǎn)的內(nèi)存中訪問(wèn)所述處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù);由于訪問(wèn)本地節(jié)點(diǎn)的處理器的內(nèi)存的延時(shí)遠(yuǎn)遠(yuǎn)小于訪問(wèn)遠(yuǎn)端處理器的內(nèi)存的延時(shí),因此,即便加上內(nèi)存數(shù)據(jù)搬移的時(shí)間,在需要頻繁訪問(wèn)處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)時(shí),采用該方案也可以大大降低讀取處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)的延時(shí),從而大大提高系統(tǒng)性能。而且,在本實(shí)施例中,在對(duì)將該處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)復(fù)制到本地節(jié)點(diǎn)的內(nèi)存中之前,還可以對(duì)該需要復(fù)制的內(nèi)存數(shù)據(jù)進(jìn)行鎖定,并在復(fù)制完畢后才進(jìn)行解鎖,因此,可以防止其他設(shè)備在此期間訪問(wèn)該內(nèi)存數(shù)據(jù),避免復(fù)制出錯(cuò),保證數(shù)據(jù)的準(zhǔn)確性,可以進(jìn)一步提高系統(tǒng)的性能。
[0122]實(shí)施例四、
[0123]相應(yīng)的,本發(fā)明實(shí)施例還提供一種內(nèi)存數(shù)據(jù)訪問(wèn)裝置,應(yīng)用于CC-NUMA系統(tǒng),如圖4所示,內(nèi)存數(shù)據(jù)訪問(wèn)裝置包括復(fù)制單元401和訪問(wèn)單元402。
[0124]復(fù)制單元401,用于根據(jù)預(yù)設(shè)規(guī)則,當(dāng)確定需要頻繁訪問(wèn)處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)時(shí),將該處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)復(fù)制到本地節(jié)點(diǎn)的內(nèi)存中;
[0125]訪問(wèn)單元402,用于從本地節(jié)點(diǎn)的內(nèi)存中訪問(wèn)該處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)。
[0126]其中,復(fù)制單元401可以包括請(qǐng)求子單元、接收子單元和寫(xiě)入子單元;[0127]請(qǐng)求子單元,用于根據(jù)預(yù)設(shè)規(guī)則,當(dāng)確定需要頻繁訪問(wèn)處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)時(shí),向遠(yuǎn)端節(jié)點(diǎn)發(fā)送數(shù)據(jù)請(qǐng)求,其中,該數(shù)據(jù)請(qǐng)求中攜帶所請(qǐng)求的內(nèi)存數(shù)據(jù)的物理地址等信息;
[0128]接收子單元,用于接收遠(yuǎn)端節(jié)點(diǎn)根據(jù)該物理地址返回的內(nèi)存數(shù)據(jù);
[0129]寫(xiě)入子單元,用于在獲取到本地節(jié)點(diǎn)的內(nèi)存中的目標(biāo)物理地址的獨(dú)占權(quán)限后,將接收到的內(nèi)存數(shù)據(jù)寫(xiě)入所述目標(biāo)物理地址。
[0130]其中,預(yù)設(shè)規(guī)則可以根據(jù)實(shí)際應(yīng)用的需求進(jìn)行設(shè)置,即確定對(duì)處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)的訪問(wèn)是否頻繁,可以有多種方式,例如,可以監(jiān)測(cè)虛實(shí)地址映射表,如果虛實(shí)地址映射表中指向遠(yuǎn)端節(jié)點(diǎn)的物理地址的數(shù)目大于預(yù)置閾值,則表明需要頻繁訪問(wèn)處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù),等等。即:
[0131]請(qǐng)求子單元,具體可以用于監(jiān)測(cè)虛實(shí)地址映射表,確定該虛實(shí)地址映射表中指向遠(yuǎn)端節(jié)點(diǎn)的物理地址的數(shù)目大于預(yù)置閾值時(shí),向遠(yuǎn)端節(jié)點(diǎn)發(fā)送數(shù)據(jù)請(qǐng)求,所述數(shù)據(jù)請(qǐng)求中攜帶所請(qǐng)求的內(nèi)存數(shù)據(jù)的物理地址。
[0132]其中,虛實(shí)地址映射表用于保存內(nèi)存數(shù)據(jù)的虛擬地址和物理地址的映射關(guān)系,而該閾值可以根據(jù)實(shí)際應(yīng)用的需求進(jìn)行設(shè)置。
[0133]此外,在將接收到的內(nèi)存數(shù)據(jù)寫(xiě)入目標(biāo)物理地址之后,即完成內(nèi)存數(shù)據(jù)回寫(xiě)之后,還可以將該接收到的內(nèi)存數(shù)據(jù)在虛實(shí)地址映射表中的物理地址更新為該目標(biāo)物理地址,比如,如果原物理地址為P (A),而該目標(biāo)物理地址為P (B),則可以由V (A) ->P (A)修改為
V(A)->P (B)0這樣,后續(xù)節(jié)點(diǎn)O的進(jìn)程在對(duì)地址V(A)進(jìn)行訪問(wèn)時(shí),就可以被映射到本節(jié)點(diǎn)內(nèi)的地址P (B),從而可以在較低的延時(shí)下工作。即復(fù)制單元401還可以包括更新子單元;
[0134]更新子單元,用于將對(duì)接收到的內(nèi)存數(shù)據(jù)在虛實(shí)地址映射表中的物理地址更新為該目標(biāo)物理地址。
[0135]一般來(lái)說(shuō),內(nèi)存裝載以及地址映射表都是按照操作系統(tǒng)內(nèi)存數(shù)據(jù)頁(yè)(Page)為單位進(jìn)行,所以,在進(jìn)行內(nèi)存數(shù)據(jù)搬移時(shí)也可以按照Page為單位來(lái)進(jìn)行,即以內(nèi)存數(shù)據(jù)頁(yè)為單位將該處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)復(fù)制到本地節(jié)點(diǎn)的內(nèi)存中。
[0136]另外,為了在復(fù)制內(nèi)存數(shù)據(jù)時(shí),該內(nèi)存數(shù)據(jù)不會(huì)被其他設(shè)備訪問(wèn),可以將對(duì)應(yīng)的內(nèi)存數(shù)據(jù)頁(yè)進(jìn)行鎖定,然后在復(fù)制完成后,將該被鎖定的內(nèi)存數(shù)據(jù)頁(yè)進(jìn)行解鎖,以便其可以繼續(xù)運(yùn)行;即該內(nèi)存數(shù)據(jù)訪問(wèn)裝置還可以包括鎖定單元和解鎖單元,如下:
[0137]復(fù)制單元,具體可以用于以內(nèi)存數(shù)據(jù)頁(yè)為單位將該處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)復(fù)制到本地節(jié)點(diǎn)的內(nèi)存中;
[0138]鎖定單元,用于在將該處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)復(fù)制到本地節(jié)點(diǎn)的內(nèi)存中之前,對(duì)需要復(fù)制的內(nèi)存數(shù)據(jù)所在的內(nèi)存數(shù)據(jù)頁(yè)進(jìn)行鎖定;
[0139]解鎖單元,用于在將該處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)復(fù)制到本地節(jié)點(diǎn)的內(nèi)存中之后,對(duì)已經(jīng)復(fù)制的內(nèi)存數(shù)據(jù)所在的內(nèi)存數(shù)據(jù)頁(yè)進(jìn)行解鎖。
[0140]該內(nèi)存數(shù)據(jù)訪問(wèn)裝置具體可以為節(jié)點(diǎn)控制器等設(shè)備。
[0141]具體實(shí)施時(shí),以上各個(gè)單元可以作為獨(dú)立的實(shí)體來(lái)實(shí)現(xiàn),也可以進(jìn)行任意組合,作為同一或若干個(gè)實(shí)體來(lái)實(shí)現(xiàn),以上各個(gè)單元的具體實(shí)施可參見(jiàn)前面的實(shí)施例,在此不再贅述。
[0142]由上可知,本實(shí)施例的內(nèi)存數(shù)據(jù)訪問(wèn)裝置的復(fù)制單元401可以在根據(jù)預(yù)設(shè)規(guī)則,當(dāng)確定需要頻繁訪問(wèn)處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)時(shí),將該處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)復(fù)制到本地節(jié)點(diǎn)的內(nèi)存中(即將處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)搬移到本地節(jié)點(diǎn)中),然后由訪問(wèn)單元402從該本地節(jié)點(diǎn)的內(nèi)存中訪問(wèn)所述處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù);由于訪問(wèn)本地節(jié)點(diǎn)的處理器的內(nèi)存的延時(shí)遠(yuǎn)遠(yuǎn)小于訪問(wèn)遠(yuǎn)端處理器的內(nèi)存的延時(shí),因此,即便加上內(nèi)存數(shù)據(jù)搬移的時(shí)間,在需要頻繁訪問(wèn)處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)時(shí),采用該方案也可以大大降低讀取處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)的延時(shí),從而大大提高系統(tǒng)性能。
[0143]實(shí)施例五、
[0144]相應(yīng)的,本發(fā)明實(shí)施例還提供一種通信系統(tǒng),包括本發(fā)明實(shí)施例提供的任一種內(nèi)存數(shù)據(jù)訪問(wèn)裝置。例如,具體可以如下:
[0145]內(nèi)存數(shù)據(jù)訪問(wèn)裝置,用于根據(jù)預(yù)設(shè)規(guī)則,當(dāng)確定需要頻繁訪問(wèn)處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)時(shí),將該處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)復(fù)制到本地節(jié)點(diǎn)的內(nèi)存中,從該本地節(jié)點(diǎn)的內(nèi)存中訪問(wèn)該處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)。
[0146]例如,內(nèi)存數(shù)據(jù)訪問(wèn)裝置,具體可以用于根據(jù)預(yù)設(shè)規(guī)則,當(dāng)確定需要頻繁訪問(wèn)處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)時(shí),向遠(yuǎn)端節(jié)點(diǎn)發(fā)送數(shù)據(jù)請(qǐng)求,其中,該數(shù)據(jù)請(qǐng)求中攜帶所請(qǐng)求的內(nèi)存數(shù)據(jù)的物理地址等信息;接收遠(yuǎn)端節(jié)點(diǎn)根據(jù)該物理地址返回的內(nèi)存數(shù)據(jù);在獲取到本地節(jié)點(diǎn)的內(nèi)存中的目標(biāo)物理地址的獨(dú)占權(quán)限后,將接收到的內(nèi)存數(shù)據(jù)寫(xiě)入所述目標(biāo)物理地址。
[0147]其中,預(yù)設(shè)規(guī)則可以根據(jù)實(shí)際應(yīng)用的需求進(jìn)行設(shè)置,即確定對(duì)處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)的訪問(wèn)是否頻繁,可以有多種方式,例如,可以監(jiān)測(cè)虛實(shí)地址映射表,如果虛實(shí)地址映射表中指向遠(yuǎn)端節(jié)點(diǎn)的物理地址的數(shù)目大于預(yù)置閾值,則表明需要頻繁訪問(wèn)處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù),等等。即:
[0148]內(nèi)存數(shù)據(jù)訪問(wèn)裝置,具體可以用于監(jiān)測(cè)虛實(shí)地址映射表,確定該虛實(shí)地址映射表中指向遠(yuǎn)端節(jié)點(diǎn)的物理地址的數(shù)目大于預(yù)置閾值時(shí),向遠(yuǎn)端節(jié)點(diǎn)發(fā)送數(shù)據(jù)請(qǐng)求,所述數(shù)據(jù)請(qǐng)求中攜帶所請(qǐng)求的內(nèi)存數(shù)據(jù)的物理地址。
[0149]其中,虛實(shí)地址映射表用于保存內(nèi)存數(shù)據(jù)的虛擬地址和物理地址的映射關(guān)系,而該閾值可以根據(jù)實(shí)際應(yīng)用的需求進(jìn)行設(shè)置。
[0150]此外,在將接收到的內(nèi)存數(shù)據(jù)寫(xiě)入目標(biāo)物理地址之后,即完成內(nèi)存數(shù)據(jù)回寫(xiě)之后,還可以將該接收到的內(nèi)存數(shù)據(jù)在虛實(shí)地址映射表中的物理地址更新為該目標(biāo)物理地址,比如,如果原物理地址為P (A),而該目標(biāo)物理地址為P (B),則可以由V (A) ->P (A)修改為
V(A)->P (B)0這樣,后續(xù)節(jié)點(diǎn)O的進(jìn)程在對(duì)地址V(A)進(jìn)行訪問(wèn)時(shí),就可以被映射到本節(jié)點(diǎn)內(nèi)的地址P (B),從而可以在較低的延時(shí)下工作。即:
[0151]內(nèi)存數(shù)據(jù)訪問(wèn)裝置,還可以用于將對(duì)接收到的內(nèi)存數(shù)據(jù)在虛實(shí)地址映射表中的物理地址更新為該目標(biāo)物理地址。
[0152]一般來(lái)說(shuō),內(nèi)存裝載以及地址映射表都是按照操作系統(tǒng)內(nèi)存數(shù)據(jù)頁(yè)(Page)為單位進(jìn)行,所以,在進(jìn)行內(nèi)存數(shù)據(jù)搬移時(shí)也可以按照Page為單位來(lái)進(jìn)行,即以內(nèi)存數(shù)據(jù)頁(yè)為單位將該處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)復(fù)制到本地節(jié)點(diǎn)的內(nèi)存中。
[0153]另外,為了在復(fù)制內(nèi)存數(shù)據(jù)時(shí),該內(nèi)存數(shù)據(jù)不會(huì)被其他設(shè)備訪問(wèn),可以將對(duì)應(yīng)的內(nèi)存數(shù)據(jù)頁(yè)進(jìn)行鎖定,然后在復(fù)制完成后,將該被鎖定的內(nèi)存數(shù)據(jù)頁(yè)進(jìn)行解鎖,以便其可以繼續(xù)運(yùn)行,即:
[0154]該內(nèi)存數(shù)據(jù)訪問(wèn)裝置,還可以用于將該處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)復(fù)制到本地節(jié)點(diǎn)的內(nèi)存中之前,對(duì)需要復(fù)制的內(nèi)存數(shù)據(jù)所在的內(nèi)存數(shù)據(jù)頁(yè)進(jìn)行鎖定;并在將該處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)復(fù)制到本地節(jié)點(diǎn)的內(nèi)存中之后,對(duì)已經(jīng)復(fù)制的內(nèi)存數(shù)據(jù)所在的內(nèi)存數(shù)據(jù)頁(yè)進(jìn)行解鎖。
[0155]此外,該通信系統(tǒng)還可以包括其他的設(shè)備,比如終端、服務(wù)器等。該內(nèi)存數(shù)據(jù)訪問(wèn)裝置的具體實(shí)施可參見(jiàn)前面的實(shí)施例,在此不再贅述。
[0156]以下將舉例對(duì)該通信系統(tǒng)進(jìn)行簡(jiǎn)略說(shuō)明。
[0157]例如,該通信系統(tǒng)可以包括第一節(jié)點(diǎn)和第二節(jié)點(diǎn),其中,第一節(jié)點(diǎn)和第二節(jié)點(diǎn)中均包括節(jié)點(diǎn)控制器,節(jié)點(diǎn)控制器中集成了有本發(fā)明實(shí)施例所提供的內(nèi)存數(shù)據(jù)訪問(wèn)裝置,則具體可以如下:
[0158]第一節(jié)點(diǎn),用于根據(jù)預(yù)設(shè)規(guī)則,當(dāng)確定需要頻繁訪問(wèn)第二節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)時(shí),向第二節(jié)點(diǎn)發(fā)送數(shù)據(jù)請(qǐng)求,其中,該數(shù)據(jù)請(qǐng)求中攜帶所請(qǐng)求的內(nèi)存數(shù)據(jù)的物理地址等信息;接收第二節(jié)點(diǎn)根據(jù)該物理地址返回的內(nèi)存數(shù)據(jù);在獲取到本地節(jié)點(diǎn)(即第一節(jié)點(diǎn))的內(nèi)存中的目標(biāo)物理地址的獨(dú)占權(quán)限后,將接收到的內(nèi)存數(shù)據(jù)寫(xiě)入所述目標(biāo)物理地址。
[0159]第二節(jié)點(diǎn),用于接收第一節(jié)點(diǎn)發(fā)送的數(shù)據(jù)請(qǐng)求,根據(jù)所請(qǐng)求的內(nèi)存數(shù)據(jù)的物理地址獲取內(nèi)存數(shù)據(jù),將該內(nèi)存數(shù)據(jù)發(fā)送給第一節(jié)點(diǎn)。
[0160]例如,第一節(jié)點(diǎn),具體可以監(jiān)測(cè)虛實(shí)地址映射表,確定該虛實(shí)地址映射表中指向遠(yuǎn)端節(jié)點(diǎn)的物理地址的數(shù)目大于預(yù)置閾值時(shí),向遠(yuǎn)端節(jié)點(diǎn)發(fā)送數(shù)據(jù)請(qǐng)求,其中,該數(shù)據(jù)請(qǐng)求中攜帶所請(qǐng)求的內(nèi)存數(shù)據(jù)的物理地址。
[0161]另外,第一節(jié)點(diǎn),還可以用于在將接收到的內(nèi)存數(shù)據(jù)寫(xiě)入目標(biāo)物理地址之后,將對(duì)接收到的內(nèi)存數(shù)據(jù)在虛實(shí)地址映射表中的物理地址更新為該目標(biāo)物理地址。以及,
[0162]第一節(jié)點(diǎn),還可以用于將該處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)復(fù)制到本地節(jié)點(diǎn)的內(nèi)存中之前,對(duì)需要復(fù)制的內(nèi)存數(shù)據(jù)所在的內(nèi)存數(shù)據(jù)頁(yè)進(jìn)行鎖定;并在將該處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)復(fù)制到本地節(jié)點(diǎn)的內(nèi)存中之后,對(duì)已經(jīng)復(fù)制的內(nèi)存數(shù)據(jù)所在的內(nèi)存數(shù)據(jù)頁(yè)進(jìn)行解鎖。
[0163]此外,還需說(shuō)明的是,第一節(jié)點(diǎn)在發(fā)送數(shù)據(jù)請(qǐng)求,比如發(fā)送獨(dú)占請(qǐng)求時(shí),必須符合CC協(xié)議,即需要根據(jù)目錄和需要進(jìn)行偵聽(tīng),拿到獨(dú)占態(tài)數(shù)據(jù)響應(yīng)或獨(dú)占權(quán)限后,才能正確地完成數(shù)據(jù)搬移。因此,在返回?cái)?shù)據(jù)響應(yīng)給第一節(jié)點(diǎn)之前,第二節(jié)點(diǎn)還需要進(jìn)行偵聽(tīng),即:
[0164]第二節(jié)點(diǎn),還用于根據(jù)CC協(xié)議向緩存了該第一節(jié)點(diǎn)請(qǐng)求的內(nèi)存數(shù)據(jù)的其他節(jié)點(diǎn)發(fā)起偵聽(tīng),即通知其他節(jié)點(diǎn)將此內(nèi)存數(shù)據(jù)無(wú)效(如果有臟(Dirty)數(shù)據(jù)則需要寫(xiě)回主存),具體可以參見(jiàn)前面的實(shí)施例,在此不再贅述。
[0165]由上可知,本實(shí)施例的通信系統(tǒng)采用在根據(jù)預(yù)設(shè)規(guī)則,當(dāng)確定需要頻繁訪問(wèn)處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)時(shí),將該處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)復(fù)制到本地節(jié)點(diǎn)的內(nèi)存中(即將處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)搬移到本地節(jié)點(diǎn)中),然后從該本地節(jié)點(diǎn)的內(nèi)存中訪問(wèn)所述處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù);由于訪問(wèn)本地節(jié)點(diǎn)的處理器的內(nèi)存的延時(shí)遠(yuǎn)遠(yuǎn)小于訪問(wèn)遠(yuǎn)端處理器的內(nèi)存的延時(shí),因此,即便加上內(nèi)存數(shù)據(jù)搬移的時(shí)間,在需要頻繁訪問(wèn)處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)時(shí),采用該方案也可以大大降低讀取處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)的延時(shí),從而大大提高系統(tǒng)性能。
[0166]實(shí)施例六、
[0167]此外,本發(fā)明實(shí)施例還提供一種網(wǎng)絡(luò)設(shè)備,如圖5所示,該網(wǎng)絡(luò)設(shè)備包括處理器501、用于存儲(chǔ)數(shù)據(jù)的存儲(chǔ)器502和用于收發(fā)數(shù)據(jù)的收發(fā)接口 503,其中:[0168]處理器501,用于根據(jù)預(yù)設(shè)規(guī)則,當(dāng)確定需要頻繁訪問(wèn)處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)時(shí),將該處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)復(fù)制到本地節(jié)點(diǎn)的內(nèi)存中,從該本地節(jié)點(diǎn)的內(nèi)存中訪問(wèn)該處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)。
[0169]例如,處理器501,具體可以用于根據(jù)預(yù)設(shè)規(guī)則,當(dāng)確定需要頻繁訪問(wèn)處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)時(shí),通過(guò)收發(fā)接口 503向遠(yuǎn)端節(jié)點(diǎn)發(fā)送數(shù)據(jù)請(qǐng)求,其中,該數(shù)據(jù)請(qǐng)求中攜帶所請(qǐng)求的內(nèi)存數(shù)據(jù)的物理地址等信息;通過(guò)收發(fā)接口 503接收遠(yuǎn)端節(jié)點(diǎn)根據(jù)該物理地址返回的內(nèi)存數(shù)據(jù);在獲取到本地節(jié)點(diǎn)的內(nèi)存中的目標(biāo)物理地址的獨(dú)占權(quán)限后,將接收到的內(nèi)存數(shù)據(jù)寫(xiě)入所述目標(biāo)物理地址。
[0170]其中,預(yù)設(shè)規(guī)則可以根據(jù)實(shí)際應(yīng)用的需求進(jìn)行設(shè)置,即確定對(duì)處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)的訪問(wèn)是否頻繁,可以有多種方式,例如,可以監(jiān)測(cè)虛實(shí)地址映射表,如果虛實(shí)地址映射表中指向遠(yuǎn)端節(jié)點(diǎn)的物理地址的數(shù)目大于預(yù)置閾值,則表明需要頻繁訪問(wèn)處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù),等等。即:
[0171]處理器501,具體可以用于監(jiān)測(cè)虛實(shí)地址映射表,確定該虛實(shí)地址映射表中指向遠(yuǎn)端節(jié)點(diǎn)的物理地址的數(shù)目大于預(yù)置閾值時(shí),通過(guò)收發(fā)接口 503向遠(yuǎn)端節(jié)點(diǎn)發(fā)送數(shù)據(jù)請(qǐng)求,其中,該數(shù)據(jù)請(qǐng)求中攜帶所請(qǐng)求的內(nèi)存數(shù)據(jù)的物理地址。
[0172]其中,虛實(shí)地址映射表用于保存內(nèi)存數(shù)據(jù)的虛擬地址和物理地址的映射關(guān)系,而該閾值可以根據(jù)實(shí)際應(yīng)用的需求進(jìn)行設(shè)置。
[0173]此外,在將接收到的內(nèi)存數(shù)據(jù)寫(xiě)入目標(biāo)物理地址之后,即完成內(nèi)存數(shù)據(jù)回寫(xiě)之后,還可以將該接收到的內(nèi)存數(shù)據(jù)在虛實(shí)地址映射表中的物理地址更新為該目標(biāo)物理地址,比如,如果原物理地址為P (A),而該目標(biāo)物理地址為P (B),則可以由V (A) ->p (A)修改為
V(A)->P (B)0這樣,后續(xù)節(jié)點(diǎn)O的進(jìn)程在對(duì)地址V(A)進(jìn)行訪問(wèn)時(shí),就可以被映射到本節(jié)點(diǎn)內(nèi)的地址P (B),從而可以在較低的延時(shí)下工作。即:
[0174]處理器501,還可以用于將對(duì)接收到的內(nèi)存數(shù)據(jù)在虛實(shí)地址映射表中的物理地址更新為該目標(biāo)物理地址。
[0175]一般來(lái)說(shuō),內(nèi)存裝載以及地址映射表都是按照操作系統(tǒng)內(nèi)存數(shù)據(jù)頁(yè)(Page)為單位進(jìn)行,所以,在進(jìn)行內(nèi)存數(shù)據(jù)搬移時(shí)也可以按照Page為單位來(lái)進(jìn)行,即以內(nèi)存數(shù)據(jù)頁(yè)為單位將該處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)復(fù)制到本地節(jié)點(diǎn)的內(nèi)存中。
[0176]另外,為了在復(fù)制內(nèi)存數(shù)據(jù)時(shí),該內(nèi)存數(shù)據(jù)不會(huì)被其他設(shè)備訪問(wèn),可以將對(duì)應(yīng)的內(nèi)存數(shù)據(jù)頁(yè)進(jìn)行鎖定,然后在復(fù)制完成后,將該被鎖定的內(nèi)存數(shù)據(jù)頁(yè)進(jìn)行解鎖,以便其可以繼續(xù)運(yùn)行,即:
[0177]該處理器501,還可以用于將該處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)復(fù)制到本地節(jié)點(diǎn)的內(nèi)存中之前,對(duì)需要復(fù)制的內(nèi)存數(shù)據(jù)所在的內(nèi)存數(shù)據(jù)頁(yè)進(jìn)行鎖定;并在將該處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)復(fù)制到本地節(jié)點(diǎn)的內(nèi)存中之后,對(duì)已經(jīng)復(fù)制的內(nèi)存數(shù)據(jù)所在的內(nèi)存數(shù)據(jù)頁(yè)進(jìn)行解鎖。
[0178]以上操作的實(shí)施具體可參見(jiàn)前面的實(shí)施例,在此不再贅述。
[0179]由上可知,本實(shí)施例的網(wǎng)絡(luò)設(shè)備采用在根據(jù)預(yù)設(shè)規(guī)則,當(dāng)確定需要頻繁訪問(wèn)處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)時(shí),將該處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)復(fù)制到本地節(jié)點(diǎn)的內(nèi)存中(即將處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)搬移到本地節(jié)點(diǎn)中),然后從該本地節(jié)點(diǎn)的內(nèi)存中訪問(wèn)所述處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù);由于訪問(wèn)本地節(jié)點(diǎn)的處理器的內(nèi)存的延時(shí)遠(yuǎn)遠(yuǎn)小于訪問(wèn)遠(yuǎn)端處理器的內(nèi)存的延時(shí),因此,即便加上內(nèi)存數(shù)據(jù)搬移的時(shí)間,在需要頻繁訪問(wèn)處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)時(shí),采用該方案也可以大大降低讀取處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)的延時(shí),從而大大提高系統(tǒng)性能。
[0180]本領(lǐng)域普通技術(shù)人員可以理解上述實(shí)施例的各種方法中的全部或部分步驟是可以通過(guò)程序來(lái)指令相關(guān)的硬件來(lái)完成,該程序可以存儲(chǔ)于一計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,存儲(chǔ)介質(zhì)可以包括:只讀存儲(chǔ)器(ROM, Read Only Memory)、隨機(jī)存取記憶體(RAM, RandomAccess Memory)、磁盤(pán)或光盤(pán)等。
[0181]以上對(duì)本發(fā)明實(shí)施例所提供的一種內(nèi)存數(shù)據(jù)訪問(wèn)方法、裝置和系統(tǒng)進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的技術(shù)人員,依據(jù)本發(fā)明的思想,在【具體實(shí)施方式】及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說(shuō)明書(shū)內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。
【權(quán)利要求】
1.一種內(nèi)存數(shù)據(jù)訪問(wèn)方法,其特征在于,應(yīng)用于緩存一致性-非對(duì)稱存儲(chǔ)器訪問(wèn)系統(tǒng),包括: 根據(jù)預(yù)設(shè)規(guī)則,當(dāng)確定需要頻繁訪問(wèn)處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)時(shí),將所述處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)復(fù)制到本地節(jié)點(diǎn)的內(nèi)存中; 從所述本地節(jié)點(diǎn)的內(nèi)存中訪問(wèn)所述處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述將所述處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)復(fù)制到本地節(jié)點(diǎn)的內(nèi)存中,包括: 向遠(yuǎn)端節(jié)點(diǎn)發(fā)送數(shù)據(jù)請(qǐng)求,所述數(shù)據(jù)請(qǐng)求中攜帶所請(qǐng)求的內(nèi)存數(shù)據(jù)的物理地址; 接收遠(yuǎn)端節(jié)點(diǎn)根據(jù)所述物理地址返回的內(nèi)存數(shù)據(jù); 在獲取到本地節(jié)點(diǎn)的內(nèi)存中的目標(biāo)物理地址的獨(dú)占權(quán)限后,將接收到的內(nèi)存數(shù)據(jù)寫(xiě)入所述目標(biāo)物理地址。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述根據(jù)預(yù)設(shè)規(guī)則,當(dāng)確定需要頻繁訪問(wèn)處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)時(shí),包括: 監(jiān)測(cè)虛實(shí)地址映射表,所述虛實(shí)地址映射表用于保存內(nèi)存數(shù)據(jù)的虛擬地址和物理地址的映射關(guān)系; 確定所述虛實(shí)地址映射表中指向遠(yuǎn)端節(jié)點(diǎn)的物理地址的數(shù)目大于預(yù)置閾值時(shí),確定需要頻繁訪問(wèn)處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述將接收到的內(nèi)存數(shù)據(jù)寫(xiě)入所述目標(biāo)物理地址之后,還包括: 將所述接收到的內(nèi)存數(shù)據(jù)在虛實(shí)地址映射表中的物理地址更新為所述目標(biāo)物理地址。
5.根據(jù)權(quán)利要求1至4任一項(xiàng)所述的方法,其特征在于,以內(nèi)存數(shù)據(jù)頁(yè)為單位將所述處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)復(fù)制到本地節(jié)點(diǎn)的內(nèi)存中,則: 所述將所述處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)復(fù)制到本地節(jié)點(diǎn)的內(nèi)存中之前,還包括:對(duì)需要復(fù)制的內(nèi)存數(shù)據(jù)所在的內(nèi)存數(shù)據(jù)頁(yè)進(jìn)行鎖定; 所述將所述處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)復(fù)制到本地節(jié)點(diǎn)的內(nèi)存中之后,還包括:對(duì)已經(jīng)復(fù)制的內(nèi)存數(shù)據(jù)所在的內(nèi)存數(shù)據(jù)頁(yè)進(jìn)行解鎖。
6.一種內(nèi)存數(shù)據(jù)訪問(wèn)裝置,其特征在于,應(yīng)用于緩存一致性-非對(duì)稱存儲(chǔ)器訪問(wèn)系統(tǒng),包括: 復(fù)制單元,用于根據(jù)預(yù)設(shè)規(guī)則,當(dāng)確定需要頻繁訪問(wèn)處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)時(shí),將所述處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)復(fù)制到本地節(jié)點(diǎn)的內(nèi)存中; 訪問(wèn)單元,用于從所述本地節(jié)點(diǎn)的內(nèi)存中訪問(wèn)所述處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)。
7.根據(jù)權(quán)利要求6所述的內(nèi)存數(shù)據(jù)訪問(wèn)裝置,其特征在于,所述復(fù)制單元包括請(qǐng)求子單元、接收子單元和寫(xiě)入子單元; 請(qǐng)求子單元,用于根據(jù)預(yù)設(shè)規(guī)則,當(dāng)確定需要頻繁訪問(wèn)處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)時(shí),向遠(yuǎn)端節(jié)點(diǎn)發(fā)送數(shù)據(jù)請(qǐng)求,所述數(shù)據(jù)請(qǐng)求中攜帶所請(qǐng)求的內(nèi)存數(shù)據(jù)的物理地址; 接收子單元,用于接收遠(yuǎn)端節(jié)點(diǎn)根據(jù)所述物理地址返回的內(nèi)存數(shù)據(jù); 寫(xiě)入子單元,用于在獲取到本地節(jié)點(diǎn)的內(nèi)存中的目標(biāo)物理地址的獨(dú)占權(quán)限后,將接收到的內(nèi)存數(shù)據(jù)寫(xiě)入所述目標(biāo)物理地址。
8.根據(jù)權(quán)利要求7所述的內(nèi)存數(shù)據(jù)訪問(wèn)裝置,其特征在于,所述請(qǐng)求子單元,具體用于監(jiān)測(cè)虛實(shí)地址映射表,所述虛實(shí)地址映射表用于保存內(nèi)存數(shù)據(jù)的虛擬地址和物理地址的映射關(guān)系;確定所述虛實(shí)地址映射表中指向遠(yuǎn)端節(jié)點(diǎn)的物理地址的數(shù)目大于預(yù)置閾值時(shí),向遠(yuǎn)端節(jié)點(diǎn)發(fā)送數(shù)據(jù)請(qǐng)求,所述數(shù)據(jù)請(qǐng)求中攜帶所請(qǐng)求的內(nèi)存數(shù)據(jù)的物理地址。
9.根據(jù)權(quán)利要求8所述的內(nèi)存數(shù)據(jù)訪問(wèn)裝置,其特征在于,所述復(fù)制單元還包括更新子單元; 更新子單元,用于將對(duì)所述接收到的內(nèi)存數(shù)據(jù)在虛實(shí)地址映射表中的物理地址更新為所述目標(biāo)物理地址。
10.根據(jù)權(quán)利要求6至9任一項(xiàng)所述的內(nèi)存數(shù)據(jù)訪問(wèn)裝置,其特征在于,還包括鎖定單元和解鎖單元; 所述復(fù)制單元,具體用于以內(nèi)存數(shù)據(jù)頁(yè)為單位將所述處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)復(fù)制到本地節(jié)點(diǎn)的內(nèi)存中; 鎖定單元,用于在將所述處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)復(fù)制到本地節(jié)點(diǎn)的內(nèi)存中之前,對(duì)需要復(fù)制的內(nèi)存數(shù)據(jù)所在的內(nèi)存數(shù)據(jù)頁(yè)進(jìn)行鎖定; 解鎖單元,用于在將所述處于遠(yuǎn)端節(jié)點(diǎn)的內(nèi)存數(shù)據(jù)復(fù)制到本地節(jié)點(diǎn)的內(nèi)存中之后,對(duì)已經(jīng)復(fù)制的內(nèi)存數(shù)據(jù)所在的內(nèi)存數(shù)據(jù)頁(yè)進(jìn)行解鎖。
11.一種通信系統(tǒng),其特征在于,包括權(quán)利要求6至10任一項(xiàng)所述的內(nèi)存數(shù)據(jù)訪問(wèn)裝置。
【文檔編號(hào)】G06F12/08GK103744799SQ201310733844
【公開(kāi)日】2014年4月23日 申請(qǐng)日期:2013年12月26日 優(yōu)先權(quán)日:2013年12月26日
【發(fā)明者】程永波, 賀成洪, 蘭可嘉 申請(qǐng)人:華為技術(shù)有限公司