一種內(nèi)存訪問的方法、相關(guān)裝置和系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機技術(shù)領(lǐng)域,尤其涉及一種內(nèi)存訪問的方法、相關(guān)裝置和系統(tǒng)。
【背景技術(shù)】
[0002]在傳統(tǒng)的內(nèi)存管理流程中,當(dāng)中央處理器(Central Processing Unit, CPU)發(fā)起內(nèi)存訪問時,會先訪問其內(nèi)部的私有緩存(cache),此時CPU先將訪問請求發(fā)送至CPU內(nèi)部的內(nèi)存管理單元(Memory Management Unit,MMU) ,MMU根據(jù)訪問請求中的虛地址信息,查找傳輸后備緩沖器(Translat1n Lookaside Buffer,TLB)中該虛地址所對應(yīng)的實地址,即物理地址,CPU通過該物理地址訪問私有緩存,當(dāng)發(fā)生高速緩存不命中(cache miss),即CPU訪問私有緩存失敗后,CHJ將該內(nèi)存訪問請求發(fā)送至內(nèi)存控制器(Memory Controller,MC),通過MC訪問該物理地址所對應(yīng)的內(nèi)存。
[0003]然而,現(xiàn)有技術(shù)內(nèi)存管理存在如下兩個問題:
[0004]第一,由于MMU和TLB位于CPU訪問私有緩存的關(guān)鍵路徑上,當(dāng)MMU和TLB發(fā)生問題,如MMU在通過TLB查找不到該虛地址所對應(yīng)的實地址(TLB miss)時,CPU就無法訪問私有緩存。
[0005]第二,缺頁中斷處理與處理器硬件綁定,一旦MMU從TLB和內(nèi)存中都無法找到虛地址對應(yīng)的實地址,則觸發(fā)缺頁中斷,處理器將花大量時間處理缺頁中斷。
[0006]現(xiàn)有技術(shù)提出了一種有效的內(nèi)存管理技術(shù):全虛cache (Virtual indexedVirtual Tagged)技術(shù)。全虛cache的主要思想是將TLB和MMU等硬件從CPU訪問私有cache的關(guān)鍵路徑中移除,CPU直接采用虛地址索引cache,只有cachemiss后才將訪問請求發(fā)送至MMU,MMU通過TLB進行虛實地址翻譯,采用實地址訪問內(nèi)存。該方法能夠縮短CPU訪問cache的關(guān)鍵路徑,同時,由于TLB不在訪問cache的關(guān)鍵路徑上,TLB可以做得很大,TLB的命中率增高,從而有效地降低了 TLB miss的次數(shù)。
[0007]因此,全虛cache技術(shù)有效的解決了上述第一個問題,但是,發(fā)生缺頁中斷后仍由CPU對其進行處理,導(dǎo)致CPU將大量時間浪費在處理缺頁中斷,當(dāng)CPU缺頁中斷處理完成之后,才能訪問上述訪問請求中請求訪問的內(nèi)存,導(dǎo)致內(nèi)存訪問效率較低。
【發(fā)明內(nèi)容】
[0008]本發(fā)明的實施例提供一種內(nèi)存訪問的方法、相關(guān)裝置和系統(tǒng),解決了現(xiàn)有技術(shù)內(nèi)存訪問效率較低的問題。
[0009]為達到上述目的,本發(fā)明的實施例采用如下技術(shù)方案:
[0010]第一方面,本發(fā)明實施例提供了一種內(nèi)存訪問的方法,該方法包括:
[0011 ] 接收進程的內(nèi)存訪問請求消息,其中,所述內(nèi)存訪問請求消息包括所述進程請求訪問的內(nèi)存對應(yīng)的虛擬地址的信息;
[0012]根據(jù)所述進程從預(yù)設(shè)的映射關(guān)系集合中獲取所述進程所對應(yīng)的映射關(guān)系,所述映射關(guān)系為所述虛擬地址與所述進程請求訪問的內(nèi)存對應(yīng)的內(nèi)存控制器MC的對應(yīng)關(guān)系;
[0013]根據(jù)所述虛擬地址的信息和所述映射關(guān)系,獲取所述進程請求訪問的內(nèi)存所對應(yīng)的MC ;
[0014]將所述內(nèi)存訪問請求消息發(fā)送至所述MC。
[0015]在第一種可能的實施方式中,結(jié)合第一方面,所述映射關(guān)系為以所述虛擬地址為變量的函數(shù),或者,
[0016]所述映射關(guān)系為所述虛擬地址的L個預(yù)設(shè)位信息,其中,10
[0017]在第二種可能的實施方式中,結(jié)合第一方面或第一種可能的實施方式,在根據(jù)所述虛擬地址的信息和所述映射關(guān)系,獲取所述進程請求訪問的內(nèi)存所對應(yīng)的MC之前,該方法還包括:
[0018]獲取所述進程對應(yīng)的更新的映射關(guān)系;
[0019]在預(yù)設(shè)的映射關(guān)系集合中將所述進程所對應(yīng)的映射關(guān)系替換為所述更新的映射關(guān)系;
[0020]根據(jù)所述虛擬地址的信息和所述映射關(guān)系,獲取所述進程請求訪問的內(nèi)存所對應(yīng)的MC具體包括:
[0021]根據(jù)所述虛擬地址信息和所述更新的映射關(guān)系,獲取所述進程請求訪問的內(nèi)存所對應(yīng)的MC。
[0022]在第三種可能的實施方式中,結(jié)合第二種可能的實施方式,在所述獲取所述進程對應(yīng)的更新的映射關(guān)系之前,還包括:
[0023]接收所述MC發(fā)送的請求消息,所述請求消息用于指示所述MC的空閑物理頁面低于預(yù)設(shè)值;
[0024]根據(jù)獲取的所有MC分配給對應(yīng)進程的頁面數(shù)目,向所述MC發(fā)送指示消息,所述指示消息用于指示所述MC將分配給所述進程的頁面的數(shù)據(jù)遷移到第一 MC對應(yīng)的內(nèi)存中,其中,所述第一 MC為所述所有MC除所述MC之外的任一 MC ;
[0025]所述獲取所述進程對應(yīng)的更新的映射關(guān)系具體包括:
[0026]根據(jù)所述進程與所述第一 MC,獲取所述進程對應(yīng)的更新的映射關(guān)系。
[0027]第二方面,本發(fā)明實施例提供了一種內(nèi)存訪問的方法,該方法包括:
[0028]內(nèi)存控制器MC向中央處理器CPU發(fā)送請求消息,所述請求消息用于指示所述MC的空閑物理頁面低于預(yù)設(shè)值,其中,所述CPU存儲有所有MC分配給對應(yīng)進程的頁面數(shù)目;
[0029]所述MC接收所述CPU發(fā)送的指示消息,所述指示消息用于指示所述MC將分配給第一進程的頁面的數(shù)據(jù)遷移到第一 MC對應(yīng)的內(nèi)存中,其中,所述第一 MC為所述所有MC除所述MC之外的任一 MC ;
[0030]所述MC根據(jù)所述指示消息,將分配給所述第一進程的頁面的數(shù)據(jù)遷移至所述第一 MC對應(yīng)的內(nèi)存中。
[0031]在第一種可能的實施方式中,結(jié)合第二方面,所述將分配給所述第一進程的頁面的數(shù)據(jù)遷移至所述第一 MC對應(yīng)的內(nèi)存中之后,該方法還包括:
[0032]所述MC向所述CPU發(fā)送響應(yīng)消息,所述響應(yīng)消息用于指示所述MC完成對分配給所述第一進程所對應(yīng)的頁面的數(shù)據(jù)的遷移,以使得所述CPU根據(jù)所述響應(yīng)消息,獲取所述第一進程對應(yīng)的更新的映射關(guān)系,并根據(jù)所述更新的映射關(guān)系和所述第一進程請求訪問的內(nèi)存對應(yīng)的虛擬地址信息,將所述第一進程的內(nèi)存訪問請求消息發(fā)送至所述第一 MC。
[0033]第三方面,本發(fā)明實施例提供了一種內(nèi)存訪問的裝置,該裝置包括:接收單元,第一獲取單元,第二獲取單元和發(fā)送單元;
[0034]所述接收單元,用于接收進程的內(nèi)存訪問請求消息,其中,所述內(nèi)存訪問請求消息包括所述進程請求訪問的內(nèi)存對應(yīng)的虛擬地址的信息;
[0035]所述第一獲取單元,用于根據(jù)所述進程從預(yù)設(shè)的映射關(guān)系集合中獲取所述進程所對應(yīng)的映射關(guān)系,所述映射關(guān)系為所述虛擬地址與所述進程請求訪問的內(nèi)存對應(yīng)的內(nèi)存控制器MC的對應(yīng)關(guān)系;
[0036]所述第二獲取單元,用于根據(jù)所述虛擬地址的信息和所述映射關(guān)系,獲取所述進程請求訪問的內(nèi)存所對應(yīng)的MC ;
[0037]所述發(fā)送單元,用于將所述內(nèi)存訪問請求消息發(fā)送至所述MC。
[0038]在第一種可能的實施方式中,結(jié)合第三方面,所述映射關(guān)系為以所述虛擬地址為變量的函數(shù),或者,
[0039]所述映射關(guān)系為所述虛擬地址的L個預(yù)設(shè)位信息,其中,10
[0040]在第二種可能的實施方式中,結(jié)合第三方面或第一種可能的實施方式,所述第一獲取單元還用于:
[0041]獲取所述進程對應(yīng)的更新的映射關(guān)系;
[0042]在預(yù)設(shè)的映射關(guān)系集合中將所述進程所對應(yīng)的映射關(guān)系替換為所述更新的映射關(guān)系;
[0043]所述第二獲取單元具體用于:
[0044]根據(jù)所述虛擬地址信息和所述更新的映射關(guān)系,獲取所述進程請求訪問的內(nèi)存所對應(yīng)的MC。
[0045]在第三種可能的實施方式中,結(jié)合第二種可能的實施方式,所述接收單元還用于:接收所述MC發(fā)送的請求消息,所述請求消息用于指示所述MC的空閑物理頁面低于預(yù)設(shè)值;
[0046]所述發(fā)送單元還用于:根據(jù)獲取的所有MC分配給對應(yīng)進程的頁面數(shù)目,向所述MC發(fā)送指示消息,所述指示消息用于指示所述MC將分配給所述進程的頁面的數(shù)據(jù)遷移到第一 MC對應(yīng)的內(nèi)存中,其中,所述第一 MC為所述所有MC除所述MC之外的任一 MC ;
[0047]所述第一獲取單元具體用于:根據(jù)所述進程與所述第一 MC,獲取所述進程對應(yīng)的更新的映射關(guān)系。