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