一種虛擬設(shè)備訪問(wèn)方法及裝置制造方法
【專(zhuān)利摘要】本發(fā)明公開(kāi)了一種虛擬內(nèi)存訪問(wèn)方法、裝置,應(yīng)用在本地服務(wù)器,本地服務(wù)器與遠(yuǎn)端服務(wù)器通過(guò)非透明PCI橋連接,非透明PCI橋用于將對(duì)遠(yuǎn)端服務(wù)器映射到本地服務(wù)器上地址的訪問(wèn)轉(zhuǎn)換為對(duì)遠(yuǎn)端服務(wù)器上地址的訪問(wèn);本地服務(wù)器中保存有本地服務(wù)器與遠(yuǎn)端服務(wù)器間的地址空間映射關(guān)系;該方法包括:根據(jù)接收的訪問(wèn)虛擬內(nèi)存指令中的虛擬地址獲得虛擬內(nèi)存所在遠(yuǎn)端服務(wù)器,及虛擬內(nèi)存在該遠(yuǎn)端服務(wù)器上的地址;根據(jù)地址空間映射關(guān)系及虛擬內(nèi)存在所在遠(yuǎn)端服務(wù)器上的地址,獲得虛擬內(nèi)存映射到本地服務(wù)器上的地址;通過(guò)對(duì)虛擬內(nèi)存映射到本地服務(wù)器上地址的訪問(wèn),訪問(wèn)虛擬內(nèi)存。本發(fā)明還公開(kāi)了一種虛擬直通設(shè)備訪問(wèn)方法、裝置。提高了分布式虛擬化系統(tǒng)的性能。
【專(zhuān)利說(shuō)明】一種虛擬設(shè)備訪問(wèn)方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)【技術(shù)領(lǐng)域】,具體涉及一種虛擬設(shè)備訪問(wèn)方法及裝置。
【背景技術(shù)】
[0002]虛擬化技術(shù)是指在物理服務(wù)器上用軟件方式模擬出一個(gè)或多個(gè)虛擬機(jī),并讓操作系統(tǒng)運(yùn)行在虛擬機(jī)上,從而達(dá)到在有限的物理資源條件下實(shí)現(xiàn)較大利用率和節(jié)省能耗。分布式虛擬化技術(shù)則可以將多個(gè)物理服務(wù)器上的物理資源進(jìn)行整合,統(tǒng)一分配給所模擬的虛擬機(jī),從而實(shí)現(xiàn)更高的資源利用率。在分布式虛擬化的環(huán)境下,因?yàn)樘摂M機(jī)的虛擬CPU(Central Processing Unit,中央處理器)、虛擬內(nèi)存、虛擬直通設(shè)備即一種虛擬輸入輸出IO設(shè)備均可能被劃分且分布在不同物理服務(wù)器上,所述當(dāng)虛擬CPU執(zhí)行軟件指令時(shí),需要根據(jù)指令訪問(wèn)不同物理服務(wù)器上的虛擬硬件資源,實(shí)現(xiàn)跨節(jié)點(diǎn)訪問(wèn)。
[0003]在分布式虛擬化中,當(dāng)虛擬機(jī)試圖訪問(wèn)虛擬內(nèi)存或虛擬直通設(shè)備時(shí),需要找到該虛擬內(nèi)存或虛擬直通設(shè)備所位于的物理服務(wù)器以及在該物理服務(wù)器中的實(shí)際位置,并實(shí)現(xiàn)對(duì)它的訪問(wèn)。在現(xiàn)有技術(shù)中,每個(gè)物理服務(wù)器中均有一通信模塊,當(dāng)虛擬內(nèi)存或虛擬直通設(shè)備在遠(yuǎn)端物理服務(wù)器時(shí),需要由發(fā)起訪問(wèn)的物理服務(wù)器中的通信模塊利用互聯(lián)網(wǎng)向遠(yuǎn)端物理服務(wù)器發(fā)送訪問(wèn)請(qǐng)求,當(dāng)發(fā)送寫(xiě)訪問(wèn)請(qǐng)求時(shí),還需要由通信模塊向遠(yuǎn)端物理服務(wù)器發(fā)送需要寫(xiě)入的數(shù)據(jù),當(dāng)發(fā)送讀訪問(wèn)請(qǐng)求時(shí),還需要由遠(yuǎn)端物理服務(wù)器的通信模塊向發(fā)起訪問(wèn)的物理服務(wù)器的通信模塊傳輸讀取的數(shù)據(jù)。
[0004]但是,所有物理服務(wù)器間信息、請(qǐng)求和數(shù)據(jù)的傳遞全部需要同時(shí)借助物理服務(wù)器中額外的通信模塊,且物理服務(wù)器間信息、請(qǐng)求和數(shù)據(jù)的傳遞需要借助互聯(lián)網(wǎng)絡(luò),而目前很多的互聯(lián)網(wǎng)絡(luò)速度較慢,導(dǎo)致物理服務(wù)器間通信速度慢,不僅降低了虛擬機(jī)指令的運(yùn)行速度也額外占用了處理器運(yùn)行時(shí)間,因而降低了分布式虛擬化系統(tǒng)的性能。
【發(fā)明內(nèi)容】
[0005]有鑒于此,本發(fā)明提供了一種虛擬設(shè)備訪問(wèn)方法及裝置,可以解決現(xiàn)有技術(shù)中物理服務(wù)器間通信速度慢,從而降低了分布式虛擬化系統(tǒng)性能的問(wèn)題。
[0006]為解決上述問(wèn)題,本發(fā)明提供的技術(shù)方案如下:
[0007]第一方面,本發(fā)明提供了一種虛擬內(nèi)存訪問(wèn)方法,應(yīng)用在本地物理服務(wù)器中,所述本地物理服務(wù)器通過(guò)本地非透明PCI橋與遠(yuǎn)端物理服務(wù)器的非透明PCI橋連接,所述非透明PCI橋用于將對(duì)遠(yuǎn)端物理服務(wù)器映射到本地物理服務(wù)器上的地址的訪問(wèn)轉(zhuǎn)換為對(duì)遠(yuǎn)端物理服務(wù)器上的物理地址的訪問(wèn);所述本地物理服務(wù)器中保存有利用所述非透明PCI橋建立的所述本地物理服務(wù)器與所述遠(yuǎn)端物理服務(wù)器之間的地址空間映射關(guān)系;所述方法包括:
[0008]接收訪問(wèn)虛擬內(nèi)存指令,根據(jù)所述訪問(wèn)虛擬內(nèi)存指令中包含的虛擬地址獲得所述虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器,并獲得所述虛擬內(nèi)存在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址;[0009]根據(jù)所述地址空間映射關(guān)系以及所述虛擬內(nèi)存在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址,獲得所述虛擬內(nèi)存映射到本地物理服務(wù)器上的地址;
[0010]通過(guò)對(duì)所述虛擬內(nèi)存映射到本地物理服務(wù)器上的地址的訪問(wèn),訪問(wèn)所述虛擬內(nèi)存。
[0011]在第一方面的第一種實(shí)現(xiàn)方式中,所述根據(jù)所述訪問(wèn)虛擬內(nèi)存指令中包含的虛擬地址獲得所述虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器,包括:
[0012]根據(jù)所述訪問(wèn)虛擬內(nèi)存指令中包含的虛擬內(nèi)存的虛擬地址,查找保存的虛擬內(nèi)存分布信息,獲得所述虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器。
[0013]在第一方面的第二種實(shí)現(xiàn)方式中,所述本地物理服務(wù)器中還保存有遠(yuǎn)端物理服務(wù)器中的P2M表的地址,所述遠(yuǎn)端物理服務(wù)器中的P2M表包括位于該遠(yuǎn)端物理服務(wù)器中的虛擬內(nèi)存的虛擬地址與該遠(yuǎn)端服務(wù)器的物理地址的對(duì)應(yīng)關(guān)系;
[0014]所述獲得所述虛擬內(nèi)存在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址,包括:
[0015]根據(jù)所述地址空間映射關(guān)系以及所述虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表的地址,獲得所述虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表映射到本地物理服務(wù)器的地址;
[0016]通過(guò)對(duì)所述虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表映射到本地物理服務(wù)器的地址的訪問(wèn),訪問(wèn)所述虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表,在所述P2M表中查找所述虛擬內(nèi)存的虛擬地址獲得所述虛擬內(nèi)存在所位于的物理服務(wù)器上的物理地址。
[0017]第二方面,本發(fā)明提供了一種虛擬直通設(shè)備訪問(wèn)方法,應(yīng)用在本地物理服務(wù)器中,所述本地物理服務(wù)器通過(guò)本地非透明PCI橋與遠(yuǎn)端物理服務(wù)器的非透明PCI橋連接,所述非透明PCI橋用于將對(duì)遠(yuǎn)端物理服務(wù)器映射到本地物理服務(wù)器上的地址的訪問(wèn)轉(zhuǎn)換為對(duì)遠(yuǎn)端物理服務(wù)器上的物理地址的訪問(wèn);所述本地物理服務(wù)器中保存有利用所述非透明PCI橋建立的所述本地物理服務(wù)器與所述遠(yuǎn)端物理服務(wù)器之間的地址空間映射關(guān)系;所述方法包括:
[0018]接收訪問(wèn)虛擬直通設(shè)備指令,根據(jù)所述訪問(wèn)虛擬直通設(shè)備指令中包含的虛擬地址獲得所述虛擬直通設(shè)備所位于的遠(yuǎn)端物理服務(wù)器,并獲得所述虛擬直通設(shè)備在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址;
[0019]根據(jù)所述地址空間映射關(guān)系以及所述虛擬直通設(shè)備在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址,獲得所述虛擬直通設(shè)備映射到本地物理服務(wù)器上的地址;
[0020]通過(guò)對(duì)所述虛擬直通設(shè)備映射到本地物理服務(wù)器上的地址的訪問(wèn),訪問(wèn)所述虛擬直通設(shè)備。
[0021]在第二方面的第一種實(shí)現(xiàn)方式中,所述根據(jù)所述訪問(wèn)虛擬直通設(shè)備指令中包含的虛擬地址獲得所述虛擬直通設(shè)備所位于的遠(yuǎn)端物理服務(wù)器,并獲得所述虛擬直通設(shè)備在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址,包括:
[0022]根據(jù)所述訪問(wèn)虛擬直通設(shè)備指令中包含的虛擬直通設(shè)備的虛擬地址,查找保存的虛擬直通設(shè)備分布信息,獲得所述虛擬直通設(shè)備所位于的遠(yuǎn)端物理服務(wù)器,并獲得所述虛擬直通設(shè)備在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址。
[0023]結(jié)合第二方面或者第二方面的第一種實(shí)現(xiàn)方式,在第二方面的第二種實(shí)現(xiàn)方式中,所述方法還包括:[0024]根據(jù)所述訪問(wèn)虛擬直通設(shè)備指令,判斷所述虛擬直通設(shè)備是否需要寫(xiě)入數(shù)據(jù)到虛擬內(nèi)存,如果是,獲得所述虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器,并獲得所述虛擬內(nèi)存在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址;
[0025]根據(jù)所述地址空間映射關(guān)系以及所述虛擬內(nèi)存在所位于的物理服務(wù)器上的物理地址,獲得所述虛擬內(nèi)存映射到所述虛擬直通設(shè)備所位于的物理服務(wù)器上的地址;
[0026]將所述虛擬內(nèi)存映射到虛擬直通設(shè)備所位于的物理服務(wù)器上的地址寫(xiě)入所述虛擬直通設(shè)備映射到本地物理服務(wù)器上的地址,使所述虛擬直通設(shè)備將需要寫(xiě)入的數(shù)據(jù)寫(xiě)入所述虛擬內(nèi)存。
[0027]結(jié)合第二方面的第二種實(shí)現(xiàn)方式,在第二方面的第三種實(shí)現(xiàn)方式中,所述獲得所述虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器,包括:
[0028]根據(jù)所述訪問(wèn)虛擬直通設(shè)備指令中包含的虛擬內(nèi)存的虛擬地址,查找保存的虛擬內(nèi)存分布信息,獲得所述虛擬內(nèi)存所位于的物理服務(wù)器。
[0029]結(jié)合第二方面的第二種實(shí)現(xiàn)方式,在第二方面的第四種實(shí)現(xiàn)方式中,所述本地物理服務(wù)器中還保存有遠(yuǎn)端物理服務(wù)器中的P2M表的地址,所述遠(yuǎn)端物理服務(wù)器中的P2M表包括位于該遠(yuǎn)端物理服務(wù)器中的虛擬內(nèi)存的虛擬地址與該遠(yuǎn)端服務(wù)器的物理地址的對(duì)應(yīng)關(guān)系;
[0030]所述獲得所述虛擬內(nèi)存在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址,包括:
[0031]根據(jù)所述地址空間映射關(guān)系以及所述虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表的地址,獲得所述虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表映射到本地物理服務(wù)器的地址;
[0032]通過(guò)對(duì)所述虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表映射到本地物理服務(wù)器的地址的訪問(wèn),訪問(wèn)所述虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表,在所述P2M表中查找所述虛擬內(nèi)存的虛擬地址獲得所述虛擬內(nèi)存在所位于的物理服務(wù)器上的物理地址。
[0033]第三方面,本發(fā)明提供了一種虛擬內(nèi)存訪問(wèn)裝置,應(yīng)用在本地物理服務(wù)器中,所述本地物理服務(wù)器通過(guò)本地非透明PCI橋與遠(yuǎn)端物理服務(wù)器的非透明PCI橋連接,所述非透明PCI橋用于將對(duì)遠(yuǎn)端物理服務(wù)器映射到本地物理服務(wù)器上的地址的訪問(wèn)轉(zhuǎn)換為對(duì)遠(yuǎn)端物理服務(wù)器上的物理地址的訪問(wèn);所述本地物理服務(wù)器中保存有利用所述非透明PCI橋建立的所述本地物理服務(wù)器與所述遠(yuǎn)端物理服務(wù)器之間的地址空間映射關(guān)系;所述裝置包括:
[0034]接收單元,用于接收訪問(wèn)虛擬內(nèi)存指令;
[0035]第一獲得單元,用于根據(jù)所述接收單元接收到的訪問(wèn)虛擬內(nèi)存指令包含的虛擬地址獲得所述虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器;
[0036]第二獲得單元,用于在所述第一獲得單元獲得所述虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器后,獲得所述虛擬內(nèi)存在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址;
[0037]第三獲得單元,用于根據(jù)所述地址空間映射關(guān)系以及所述第二獲得單元獲得的所述虛擬內(nèi)存在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址,獲得所述虛擬內(nèi)存映射到本地物理服務(wù)器上的地址;
[0038]訪問(wèn)單元,用于通過(guò)對(duì)所述第三獲得單元獲得的所述虛擬內(nèi)存映射到本地物理服務(wù)器上的地址的訪問(wèn),訪問(wèn)所述虛擬內(nèi)存。[0039]在第三方面的第一種實(shí)現(xiàn)方式中,所述本地物理服務(wù)器中還保存有遠(yuǎn)端物理服務(wù)器中的P2M表的地址,所述遠(yuǎn)端物理服務(wù)器中的P2M表包括位于該遠(yuǎn)端物理服務(wù)器中的虛擬內(nèi)存的虛擬地址與該遠(yuǎn)端服務(wù)器的物理地址的對(duì)應(yīng)關(guān)系;
[0040]所述第二獲得單元包括:
[0041]第一獲得子單元,用于根據(jù)所述地址空間映射關(guān)系以及所述虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表的地址,獲得所述虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表映射到本地物理服務(wù)器的地址;
[0042]訪問(wèn)子單元,用于通過(guò)對(duì)所述第一獲得子單元獲得的所述虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表映射到本地物理服務(wù)器的地址的訪問(wèn),訪問(wèn)所述虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表,在所述P2M表中查找所述虛擬內(nèi)存的虛擬地址獲得所述虛擬內(nèi)存在所位于的物理服務(wù)器上的物理地址。
[0043]第四方面,本發(fā)明提供了一種虛擬直通設(shè)備訪問(wèn)裝置,應(yīng)用在本地物理服務(wù)器中,所述本地物理服務(wù)器通過(guò)本地非透明PCI橋與遠(yuǎn)端物理服務(wù)器的非透明PCI橋連接,所述非透明PCI橋用于將對(duì)遠(yuǎn)端物理服務(wù)器映射到本地物理服務(wù)器上的地址的訪問(wèn)轉(zhuǎn)換為對(duì)遠(yuǎn)端物理服務(wù)器上的物理地址的訪問(wèn);所述本地物理服務(wù)器中保存有利用所述非透明PCI橋建立的所述本地物理服務(wù)器與所述遠(yuǎn)端物理服務(wù)器之間的地址空間映射關(guān)系;所述裝置包括:
[0044]接收單元,用于接收訪問(wèn)虛擬直通設(shè)備指令;
[0045]第一獲得單元,用于根據(jù)所述訪問(wèn)虛擬直通設(shè)備指令中包含的虛擬地址獲得所述虛擬直通設(shè)備所位于的遠(yuǎn)端物理服務(wù)器,并獲得所述虛擬直通設(shè)備在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址;
[0046]第二獲得單元,用于根據(jù)所述地址空間映射關(guān)系以及所述第一獲得單元獲得的所述虛擬直通設(shè)備在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址,獲得所述虛擬直通設(shè)備映射到本地物理服務(wù)器上的地址;
[0047]訪問(wèn)單元,用于通過(guò)對(duì)所述第二獲得單元獲得的所述虛擬直通設(shè)備映射到本地物理服務(wù)器上的地址的訪問(wèn),訪問(wèn)所述虛擬直通設(shè)備。
[0048]在第四方面的第一種實(shí)現(xiàn)方式中,所述第一獲得單元包括:
[0049]接收子單元,用于接收訪問(wèn)虛擬直通設(shè)備指令;
[0050]第一查找子單元,用于根據(jù)所述接收子單元接收到的訪問(wèn)虛擬直通設(shè)備指令中包含的虛擬直通設(shè)備的虛擬地址,查找保存的虛擬直通設(shè)備分布信息;
[0051]第一獲得子單元,用于根據(jù)所述第一查找子單元的結(jié)果獲得所述虛擬直通設(shè)備所位于的遠(yuǎn)端物理服務(wù)器,并獲得所述虛擬直通設(shè)備在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址。
[0052]結(jié)合第四方面或者第四方面的第一種實(shí)現(xiàn)方式,在第四方面的第二種實(shí)現(xiàn)方式中,所述裝置還包括:
[0053]判斷單元,用于根據(jù)所述接收單元接收到的訪問(wèn)虛擬直通設(shè)備指令,判斷所述虛擬直通設(shè)備是否需要寫(xiě)入數(shù)據(jù)到虛擬內(nèi)存;
[0054]第三獲得單元,用于如果所述判斷單元的判斷結(jié)果為是,獲得所述虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器;[0055]第四獲得單元,用于如果所述判斷單元的判斷結(jié)果為是,在所述第三獲得單元獲得所述虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器后,獲得所述虛擬內(nèi)存在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址;
[0056]第五獲得單元,用于根據(jù)所述地址空間映射關(guān)系以及所述第四獲得單元獲得的所述虛擬內(nèi)存在所位于的物理服務(wù)器上的物理地址,獲得所述虛擬內(nèi)存映射到所述虛擬直通設(shè)備所位于的物理服務(wù)器上的地址;
[0057]寫(xiě)入單元,用于將所述第五獲得單元獲得的所述虛擬內(nèi)存映射到虛擬直通設(shè)備所位于的物理服務(wù)器上的地址寫(xiě)入所述虛擬直通設(shè)備映射到本地物理服務(wù)器上的地址,使所述虛擬直通設(shè)備將需要寫(xiě)入的數(shù)據(jù)寫(xiě)入所述虛擬內(nèi)存。
[0058]結(jié)合第四方面的第二種實(shí)現(xiàn)方式,在第四方面的第三種實(shí)現(xiàn)方式中,所述本地物理服務(wù)器中還保存有遠(yuǎn)端物理服務(wù)器中的P2M表的地址,所述遠(yuǎn)端物理服務(wù)器中的P2M表包括位于該遠(yuǎn)端物理服務(wù)器中的虛擬內(nèi)存的虛擬地址與該遠(yuǎn)端服務(wù)器的物理地址的對(duì)應(yīng)關(guān)系;
[0059]所述第四獲得單元包括:
[0060]第二獲得子單元,用于根據(jù)所述地址空間映射關(guān)系以及所述虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表的地址,獲得所述虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表映射到本地物理服務(wù)器的地址;
[0061]訪問(wèn)子單元,用于通過(guò)對(duì)所述第二獲得子單元獲得的所述虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表映射到本地物理服務(wù)器的地址的訪問(wèn),訪問(wèn)所述虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表,在所述P2M表中查找所述虛擬內(nèi)存的虛擬地址獲得所述虛擬內(nèi)存在所位于的物理服務(wù)器上的物理地址。
[0062]由此可見(jiàn),本發(fā)明實(shí)施例具有如下有益效果:
[0063]本發(fā)明實(shí)施例非透明PCI橋建立各個(gè)物理服務(wù)器之間的地址空間映射關(guān)系,基于地址空間映射關(guān)系利用非透明PCI橋?qū)崿F(xiàn)物理服務(wù)器之間直接互訪彼此的地址空間,可以使物理服務(wù)器中運(yùn)行的虛擬機(jī)直接訪問(wèn)遠(yuǎn)端物理服務(wù)器中虛擬設(shè)備所占用的物理設(shè)備,不需要各物理服務(wù)器之間基于互聯(lián)網(wǎng)的通信即可實(shí)現(xiàn)分布式訪問(wèn)虛擬內(nèi)存和分布式訪問(wèn)虛擬直通設(shè)備,提高了物理服務(wù)器間通信速度,從而提高了分布式虛擬化系統(tǒng)的性能。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0064]圖1為本發(fā)明實(shí)施例提供的虛擬內(nèi)存訪問(wèn)方法實(shí)施例一的流程圖;
[0065]圖2為本發(fā)明實(shí)施例中各個(gè)物理服務(wù)器間地址空間映射關(guān)系的示意圖;
[0066]圖3為本發(fā)明實(shí)施例提供的虛擬內(nèi)存訪問(wèn)方法實(shí)施例二的流程圖;
[0067]圖4為本發(fā)明實(shí)施例提供的虛擬直通設(shè)備訪問(wèn)方法實(shí)施例一的流程圖;
[0068]圖5為本發(fā)明實(shí)施例提供的虛擬直通設(shè)備訪問(wèn)方法實(shí)施例二的流程圖;
[0069]圖6為本發(fā)明實(shí)施例提供的虛擬內(nèi)存訪問(wèn)裝置實(shí)施例的示意圖;
[0070]圖7為本發(fā)明實(shí)施例提供的虛擬內(nèi)存訪問(wèn)裝置實(shí)施例中第二獲得單元的示意圖;
[0071]圖8為本發(fā)明實(shí)施例提供的本地服務(wù)器實(shí)施例一的示意圖;
[0072]圖9為本發(fā)明實(shí)施例提供的虛擬直通設(shè)備訪問(wèn)裝置實(shí)施例一的示意圖;
[0073]圖10為本發(fā)明實(shí)施例提供的虛擬直通設(shè)備訪問(wèn)裝置實(shí)施例二的示意圖;[0074]圖11為本發(fā)明實(shí)施例提供的本地服務(wù)器實(shí)施例二的示意圖。
【具體實(shí)施方式】
[0075]為了使本【技術(shù)領(lǐng)域】的人員更好地理解本發(fā)明方案,下面將結(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í)施例,都應(yīng)當(dāng)屬于本發(fā)明保護(hù)的范圍。
[0076]本發(fā)明實(shí)施例提供的虛擬設(shè)備訪問(wèn)方法及裝置,可以應(yīng)用在分布式虛擬化系統(tǒng)中,分布式虛擬化系統(tǒng)通常包括多個(gè)物理服務(wù)器,在多個(gè)物理服務(wù)器中可以運(yùn)行統(tǒng)一的分布式虛擬機(jī)監(jiān)視器(DVMM, Distributed Virtual Machine Monitor),將多個(gè)物理服務(wù)器上的物理資源進(jìn)行整合,統(tǒng)一分配給所模擬的虛擬機(jī)使用。在虛擬機(jī)啟動(dòng)后,在物理服務(wù)器上運(yùn)行的DVMM會(huì)攔截虛擬機(jī)所發(fā)出的指令,如果指令訪問(wèn)分布在不同物理服務(wù)器上的虛擬硬件資源,則不同物理服務(wù)器之間需要跨網(wǎng)絡(luò)通信合作模擬出指令的執(zhí)行效果。但是,現(xiàn)有技術(shù)中物理服務(wù)器間信息、請(qǐng)求和數(shù)據(jù)的傳遞全部需要同時(shí)借助物理服務(wù)器中額外的通信模塊,且物理服務(wù)器間信息、請(qǐng)求和數(shù)據(jù)的傳遞需要借助互聯(lián)網(wǎng)絡(luò),而目前很多的互聯(lián)網(wǎng)絡(luò)速度較慢,導(dǎo)致物理服務(wù)器間通信速度慢,降低了分布式虛擬化系統(tǒng)的性能,為此本發(fā)明實(shí)施例提供了如下的虛擬設(shè)備訪問(wèn)方法及裝置,分別從訪問(wèn)虛擬內(nèi)存的實(shí)現(xiàn)以及訪問(wèn)虛擬直通設(shè)備的實(shí)現(xiàn)兩方面進(jìn)行說(shuō)明。
[0077]參見(jiàn)圖1所示,本發(fā)明實(shí)施例中所提供的虛擬內(nèi)存訪問(wèn)方法實(shí)施例一,本發(fā)明實(shí)施例可以應(yīng)用在本地物理服務(wù)器中,本地物理服務(wù)器通過(guò)本地非透明PCI橋與遠(yuǎn)端物理服務(wù)器的非透明PCI橋連接,非透明PCI橋用于將對(duì)遠(yuǎn)端物理服務(wù)器映射到本地物理服務(wù)器上的地址的訪問(wèn)轉(zhuǎn)換為對(duì)遠(yuǎn)端物理服務(wù)器上的物理地址的訪問(wèn);本地物理服務(wù)器中保存有利用非透明PCI橋建立的本地物理服務(wù)器與遠(yuǎn)端物理服務(wù)器之間的地址空間映射關(guān)系。
[0078]非透明PCI (Peripheral Component Interconnect,外設(shè)部件互連標(biāo)準(zhǔn))橋(NTB,non-transparent bridge)用于實(shí)現(xiàn)兩個(gè)物理服務(wù)器之間直接互訪彼此的地址空間,NTB的兩端可以分別連接一個(gè)物理服務(wù)器,并且通過(guò)對(duì)NTB的兩端進(jìn)行配置,可以分別把兩個(gè)物理服務(wù)器的地址空間映射到對(duì)方的地址空間中,那么通過(guò)訪問(wèn)對(duì)方服務(wù)器所映射到本地服務(wù)器的一段地址就能夠直接訪問(wèn)對(duì)方服務(wù)器的地址空間。
[0079]本地物理服務(wù)器可以保存有本地物理服務(wù)器與其他各個(gè)遠(yuǎn)端物理服務(wù)器之間的地址空間映射關(guān)系,為后續(xù)步驟本地物理服務(wù)器訪問(wèn)其他遠(yuǎn)端物理服務(wù)器的地址空間做好準(zhǔn)備。需要注意的是,地址空間映射關(guān)系的建立方案并不唯一,只要滿(mǎn)足地址空間映射關(guān)系建立之后,本地物理服務(wù)器可以保存有本地物理服務(wù)器與其他各個(gè)物理服務(wù)器之間的地址空間映射關(guān)系即可。
[0080]以三個(gè)物理服務(wù)器為例,具體說(shuō)明建立各個(gè)物理服務(wù)器之間的地址空間映射關(guān)系的過(guò)程,基于NTB的物理服務(wù)器互聯(lián)架構(gòu)可以參見(jiàn)圖2所示,其中物理服務(wù)器1、物理服務(wù)器2、物理服務(wù)器3分別通過(guò)NTB1、NTB2、NTB3與控制節(jié)點(diǎn)C (即地址空間映射配置節(jié)點(diǎn))相連。由此物理服務(wù)器1、物理服務(wù)器2、物理服務(wù)器3可以分別實(shí)現(xiàn)與控制節(jié)點(diǎn)C之間的地址空間映射。間接地,物理服務(wù)器1、物理服務(wù)器2、物理服務(wù)器3兩兩之間也可以建立相互的地址空間映射。
[0081]具體的,每個(gè)NTB有兩端,分別稱(chēng)為虛擬端(Virtual端)和連接端(Link端)。配置NTB過(guò)程就是其他遠(yuǎn)端物理服務(wù)器中的一段有用地址空間映射為本地物理服務(wù)器的一段地址空間,當(dāng)本地服務(wù)器去訪問(wèn)這段地址空間時(shí),NTB會(huì)自動(dòng)翻譯轉(zhuǎn)而去訪問(wèn)其他遠(yuǎn)端物理服務(wù)器當(dāng)中這段有用地址空間。即NTB用于將對(duì)遠(yuǎn)端物理服務(wù)器映射到本地物理服務(wù)器上的地址的訪問(wèn)轉(zhuǎn)換為對(duì)遠(yuǎn)端物理服務(wù)器上的物理地址的訪問(wèn)。
[0082]例如,參見(jiàn)圖2所示,將物理服務(wù)器1、物理服務(wù)器2、物理服務(wù)器3地址空間上的4G-16G通過(guò)NTB映射為控制節(jié)點(diǎn)C地址空間上的4G-16G,也即當(dāng)物理服務(wù)器訪問(wèn)4G-16G的這段地址空間時(shí),就會(huì)去訪問(wèn)控制節(jié)點(diǎn)C中4G-16G的地址空間;
[0083]將控制節(jié)點(diǎn)C地址空間上的4G-8G通過(guò)NTB映射為物理服務(wù)器I上的實(shí)用地址空間0G-4G,也即在控制節(jié)點(diǎn)C中訪問(wèn)4G-8G這段地址空間時(shí),就會(huì)轉(zhuǎn)去訪問(wèn)物理服務(wù)器I中0G-4G的地址空間;將控制節(jié)點(diǎn)C地址空間上的8G-12G通過(guò)NTB映射為物理服務(wù)器2上的實(shí)用地址空間0G-4G,也即在控制節(jié)點(diǎn)C中訪問(wèn)8G-12G這段地址空間時(shí),就會(huì)轉(zhuǎn)去訪問(wèn)物理服務(wù)器2中0G-4G的地址空間;將控制節(jié)點(diǎn)C地址空間上的12G-16G通過(guò)NTB映射為服務(wù)器3上的實(shí)用地址空間0G-4G,也即在控制節(jié)點(diǎn)C中訪問(wèn)12G-16G這段地址空間時(shí),就會(huì)轉(zhuǎn)去訪問(wèn)物理服務(wù)器3中0G-4G的地址空間;
[0084]經(jīng)過(guò)以上配置過(guò)程,如果物理服務(wù)器I要訪問(wèn)物理服務(wù)器2上的實(shí)用地址空間0G-4G中的一個(gè)地址,只要在本地物理服務(wù)器訪問(wèn)8G-12G中的一個(gè)對(duì)應(yīng)地址就可以實(shí)現(xiàn)。因?yàn)樵撛L問(wèn)會(huì)被NTB轉(zhuǎn)去訪問(wèn)控制節(jié)點(diǎn)地址空間中的8G-12G中的一個(gè)對(duì)應(yīng)地址,再進(jìn)而被另一個(gè)NTB轉(zhuǎn)去訪問(wèn)物理服務(wù)器2上的實(shí)用地址空間0G-4G中的一個(gè)對(duì)應(yīng)地址。
[0085]因此,對(duì)于物理服務(wù)器I而言,物理服務(wù)器2和物理服務(wù)器3的實(shí)用地址空間在本地地址空間的映射基地址分別為SG和12G。同理,可以得到物理服務(wù)器2和物理服務(wù)器3中要保存的地址空間映射的基地址的信息。從而,各個(gè)物理服務(wù)器可以保存通過(guò)非透明PCI橋建立的本地物理服務(wù)器與其他各個(gè)物理服務(wù)器之間的地址空間映射關(guān)系,在實(shí)際應(yīng)用中可以以各物理服務(wù)器在本地地址空間的映射基地址作為地址空間映射關(guān)系進(jìn)行保存,其中基地址就是一個(gè)地址空間的起始地址。
[0086]可以用B(x,y)表示遠(yuǎn)端物理服務(wù)器X的地址空間映射到本地物理服務(wù)器y的地址空間時(shí)的映射基地址,也就是說(shuō)如果要訪問(wèn)遠(yuǎn)端物理服務(wù)器X中的一個(gè)地址Address,等效于在本地物理服務(wù)器I中訪問(wèn)地址(AddreSS+B(X,y))。繼續(xù)以圖2為例,B(3, I)可以表示遠(yuǎn)端物理服務(wù)器3的有用地址空間映射到本地物理服務(wù)器I中后的映射基地址,即B (3, I) =12G,如果要從本地物理服務(wù)器I中訪問(wèn)遠(yuǎn)端物理服務(wù)器3中地址為A位置的數(shù)據(jù)時(shí),只需要在本地物理服務(wù)器I中訪問(wèn)(12G+A)這個(gè)地址即可。
[0087]則本發(fā)明實(shí)施例中所提供的虛擬內(nèi)存訪問(wèn)方法實(shí)施例一可以包括以下步驟:
[0088]步驟101:本地物理服務(wù)器接收訪問(wèn)虛擬內(nèi)存指令,根據(jù)訪問(wèn)虛擬內(nèi)存指令中包含的虛擬地址獲得虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器,并獲得虛擬內(nèi)存在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址。
[0089]在本發(fā)明的一些實(shí)施例中,根據(jù)訪問(wèn)虛擬內(nèi)存指令中包含的虛擬地址獲得虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器的具體實(shí)現(xiàn)可以包括:
[0090]根據(jù)訪問(wèn)虛擬內(nèi)存指令中包含的虛擬內(nèi)存的虛擬地址,查找保存的虛擬內(nèi)存分布信息,獲得虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器。
[0091]物理服務(wù)器中的DVMM可以有一分布式內(nèi)存虛擬化模塊,當(dāng)運(yùn)行在本地物理服務(wù)器上的虛擬機(jī)需要訪問(wèn)一塊虛擬內(nèi)存時(shí),本地物理服務(wù)器可以接收到訪問(wèn)虛擬內(nèi)存指令,本地物理服務(wù)器的分布式內(nèi)存虛擬化模塊可以根據(jù)保存的虛擬內(nèi)存分布信息判斷出該虛擬內(nèi)存所位于的物理服務(wù)器,例如該虛擬內(nèi)存位于本地物理服務(wù)器或者處于其他哪個(gè)遠(yuǎn)端物理服務(wù)器。在本發(fā)明實(shí)施例中,具體針對(duì)虛擬內(nèi)存位于遠(yuǎn)端物理服務(wù)器的情況,也即根據(jù)虛擬內(nèi)存指令中包含的虛擬內(nèi)存的虛擬地址,查找保存的虛擬內(nèi)存分布信息,獲得虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器。
[0092]又由于虛擬機(jī)實(shí)際是一個(gè)模擬出來(lái)的機(jī)器,它里面的每個(gè)物理地址都只有對(duì)應(yīng)或者說(shuō)映射到真實(shí)宿主機(jī)的地址才有實(shí)際意義。訪問(wèn)虛擬內(nèi)存指令中會(huì)包括所要訪問(wèn)的虛擬內(nèi)存的地址GPA (Guest Physical Address,客戶(hù)機(jī)物理地址,即虛擬機(jī)偽物理地址),因此需要進(jìn)一步獲得所要訪問(wèn)的虛擬內(nèi)存在所位于的遠(yuǎn)端物理服務(wù)器上的實(shí)際物理地址HPA(Host Physical Address,宿主機(jī)物理地址)。
[0093]步驟102:本地物理服務(wù)器根據(jù)地址空間映射關(guān)系以及虛擬內(nèi)存在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址,獲得虛擬內(nèi)存映射到本地物理服務(wù)器上的地址。
[0094]步驟103:本地物理服務(wù)器通過(guò)對(duì)虛擬內(nèi)存映射到本地物理服務(wù)器上的地址的訪問(wèn),訪問(wèn)虛擬內(nèi)存。
[0095]如果該虛擬內(nèi)存占用的是本地物理服務(wù)器的物理內(nèi)存,則虛擬內(nèi)存對(duì)應(yīng)在所位于的物理服務(wù)器上的地址則為虛擬內(nèi)存對(duì)應(yīng)在本地物理服務(wù)器上的地址,虛擬機(jī)可以直接訪問(wèn)本地物理服務(wù)器的物理內(nèi)存,在此不再贅述。
[0096]如果該虛擬內(nèi)存占用的是其他遠(yuǎn)端物理服務(wù)器的物理內(nèi)存,基于上述說(shuō)明,可以用B(x,y)表示遠(yuǎn)端物理服務(wù)器X的地址空間映射到本地物理服務(wù)器y的地址空間時(shí)的映射基地址,則也就是說(shuō)如果要訪問(wèn)遠(yuǎn)端物理服務(wù)器X中的一個(gè)地址Address,在可以在本地物理服務(wù)器y中訪問(wèn)地址(Address+B(x,y))。具體的,是由NTB將訪問(wèn)遠(yuǎn)端物理服務(wù)器映射到本地物理服務(wù)器上的地址(Address+B(x,y))轉(zhuǎn)換為了訪問(wèn)遠(yuǎn)端物理服務(wù)器X中的地址 Address。
[0097]這時(shí),設(shè)本地物理服務(wù)器為物理服務(wù)器y,虛擬內(nèi)存所位于的物理服務(wù)器為物理服務(wù)器X,虛擬內(nèi)存對(duì)應(yīng)在所位于的物理服務(wù)器上的地址為addr_HPA,則虛擬內(nèi)存映射到本地物理服務(wù)器上的地址為addr_HPA+B(x,y)。如果要訪問(wèn)虛擬內(nèi)存即需要訪問(wèn)物理服務(wù)器X中的一個(gè)地址addr_HPA,則可以等效訪問(wèn)虛擬內(nèi)存映射到本地物理服務(wù)器上的地址,即直接訪問(wèn)物理服務(wù)器I中的地址addr_HPA+B (x, y)。訪問(wèn)本地物理服務(wù)器y中的地址addr_HPA+B (X,y)會(huì)被NTB轉(zhuǎn)換為訪問(wèn)遠(yuǎn)端物理服務(wù)器x中的地址addr_HPA,這樣就實(shí)現(xiàn)了在本地物理服務(wù)器訪問(wèn)位于遠(yuǎn)端物理服務(wù)器的虛擬內(nèi)存。
[0098]由于分布式內(nèi)存虛擬化需要牽扯到各個(gè)物理服務(wù)器上的實(shí)用地址空間,利用非透明PCI橋NTB,則可以把各個(gè)服務(wù)器上的實(shí)用地址空間映射到本地地址空間當(dāng)中,本地物理服務(wù)器上的分布式內(nèi)存虛擬化模塊就可以處理客戶(hù)機(jī)物理地址到所有其他物理服務(wù)器的實(shí)用地址空間的映射。
[0099]這樣,本實(shí)施例中非透明PCI橋建立各個(gè)物理服務(wù)器之間的地址空間映射關(guān)系,基于地址空間映射關(guān)系利用非透明PCI橋?qū)崿F(xiàn)物理服務(wù)器之間直接互訪彼此的地址空間,可以使物理服務(wù)器中運(yùn)行的虛擬機(jī)直接訪問(wèn)遠(yuǎn)端物理服務(wù)器中虛擬內(nèi)存所占用的物理內(nèi)存,不需要各物理服務(wù)器之間基于互聯(lián)網(wǎng)的通信即可實(shí)現(xiàn)分布式內(nèi)存虛擬化,提高了物理服務(wù)器間通信速度,從而提高了分布式內(nèi)存虛擬化系統(tǒng)的性能。
[0100]參見(jiàn)圖3所示,是本發(fā)明實(shí)施例中所提供的虛擬內(nèi)存訪問(wèn)方法實(shí)施例二,本地物理服務(wù)器中還保存有遠(yuǎn)端物理服務(wù)器中的P2M表的地址,遠(yuǎn)端物理服務(wù)器中的P2M表包括位于該遠(yuǎn)端物理服務(wù)器中的虛擬內(nèi)存的虛擬地址與該遠(yuǎn)端服務(wù)器的物理地址的對(duì)應(yīng)關(guān)系;
[0101]P2M (Pseudo-physical Address to Machine Physical Address,客戶(hù)機(jī)偽物理地址到宿主機(jī)物理地址映射)表可以保存在物理服務(wù)器的分布式內(nèi)存虛擬化模塊當(dāng)中,P2M表保存的就是虛擬內(nèi)存的地址即客戶(hù)機(jī)物理地址GPA到所位于的物理服務(wù)器地址HPA的映射關(guān)系,P2M表的作用是虛擬機(jī)指令中的地址是訪問(wèn)客戶(hù)機(jī)物理地址GPA,而虛擬化系統(tǒng)需要借助P2M表找到這個(gè)客戶(hù)機(jī)物理地址GPA對(duì)應(yīng)在實(shí)際物理服務(wù)器中真正的位置(宿主機(jī)物理地址ΗΡΑ)。
[0102]對(duì)于一個(gè)物理服務(wù)器來(lái)說(shuō),任一物理服務(wù)器中的Ρ2Μ表的地址均是可知的,這里的可知表示物理服務(wù)器X中需要知道另一個(gè)物理服務(wù)器y的P2M表在物理服務(wù)器y的地址空間中的地址,例如,可以通過(guò)網(wǎng)絡(luò)通訊接收各個(gè)物理服務(wù)器中的P2M表的地址,或者每個(gè)物理服務(wù)器的P2M表均固定保存的某個(gè)地址位置。
[0103]則本地物理服務(wù)器獲得虛擬內(nèi)存在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址的具體實(shí)現(xiàn)過(guò)程可以包括以下步驟:
[0104]步驟301:本地物理服務(wù)器根據(jù)地址空間映射關(guān)系以及虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表的地址,獲得虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表映射到本地物理服務(wù)器的地址。
[0105]基于前述說(shuō)明,設(shè)本地物理服務(wù)器為物理服務(wù)器y,虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器為物理服務(wù)器X,虛擬內(nèi)存所位于的物理服務(wù)器中的P2M表地址addr_P2M,則虛擬內(nèi)存所位于的物理服務(wù)器中的P2M表映射到本地物理服務(wù)器的地址為addr_P2M+B(x,y)。
[0106]步驟302:通過(guò)對(duì)虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表映射到本地物理服務(wù)器的地址的訪問(wèn),訪問(wèn)虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表,在P2M表中查找虛擬內(nèi)存的虛擬地址獲得虛擬內(nèi)存在所位于的物理服務(wù)器上的物理地址。
[0107]訪問(wèn)虛擬內(nèi)存所位于的物理服務(wù)器中的P2M表映射到本地物理服務(wù)器的地址addr_P2M+B(x, y),則由NTB轉(zhuǎn)換為訪問(wèn)虛擬內(nèi)存所位于的物理服務(wù)器中的P2M表的地址addr_P2M,這樣可以在虛擬內(nèi)存所位于的物理服務(wù)器的P2M表中查找該虛擬內(nèi)存的GPA對(duì)應(yīng)的HPA,即獲得虛擬內(nèi)存對(duì)應(yīng)在所位于的物理服務(wù)器上的物理地址。
[0108]進(jìn)一步就可以獲得虛擬內(nèi)存映射到本地物理服務(wù)器上的地址,訪問(wèn)虛擬內(nèi)存映射到本地物理服務(wù)器上的地址,NTB將訪問(wèn)虛擬內(nèi)存映射到本地物理服務(wù)器上的地址轉(zhuǎn)換為訪問(wèn)虛擬內(nèi)存在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址,就可以實(shí)現(xiàn)訪問(wèn)該虛擬內(nèi)存。
[0109]在物理服務(wù)器上運(yùn)行的虛擬機(jī)訪問(wèn)虛擬內(nèi)存的模擬的基本原理是根據(jù)截獲的GPA在P2M表中查找對(duì)應(yīng)HPA,最后去訪問(wèn)HPA,以達(dá)到模擬虛擬機(jī)訪問(wèn)虛擬內(nèi)存的效果,下面再以一個(gè)具體的例子說(shuō)明一下分布式內(nèi)存虛擬化的實(shí)現(xiàn)過(guò)程。
[0110]假設(shè)本地物理服務(wù)器為物理服務(wù)器y,虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器為物理服務(wù)器X,遠(yuǎn)端物理服務(wù)器X的地址空間映射到本地物理服務(wù)器y的地址空間上時(shí)的基地址為B(x,y),每個(gè)P2M表在各自服務(wù)器中的基地址為addr_P2M,P2M表的每個(gè)表項(xiàng)的長(zhǎng)度為len_item,截獲的內(nèi)存訪問(wèn)指令中的目標(biāo)GPA即所要訪問(wèn)的虛擬內(nèi)存的虛擬地址為addr_GPA,該addr_GPA在P2M表對(duì)應(yīng)的宿主機(jī)物理地址即虛擬內(nèi)存對(duì)應(yīng)在所位于的物理服務(wù)器上的物理地址為addr_HPA。
[0111]分布式內(nèi)存虛擬化的實(shí)現(xiàn)過(guò)程為:
[0112]獲取遠(yuǎn)端物理服務(wù)器X的P2M表映射到本地物理服務(wù)器J的地址空間上時(shí)的地址B(x,y)+addr_P2M ;在本地物理服務(wù)器y中去查找這個(gè)P2M表中的GPA值為addr_GPA的表項(xiàng),并獲取該表項(xiàng)中的HPA值,具體的,可以通過(guò)循環(huán)在本地物理服務(wù)器I中去訪問(wèn)B (x, y)+addr_P2M+i*len_item這個(gè)地址來(lái)實(shí)現(xiàn)(i=0, I, 2, 3...),當(dāng)i不斷一次增加I的時(shí)候,訪問(wèn)這個(gè)地址就是去遍歷遠(yuǎn)端物理服務(wù)器X上P2M表上的每個(gè)表項(xiàng),在訪問(wèn)P2M表中每個(gè)表項(xiàng)時(shí),如果發(fā)現(xiàn)表項(xiàng)中的GPA值為addr_GPA,那么就獲取表項(xiàng)中的HPA值,即addr_HPA ;當(dāng)獲取了 addr_HPA,也就是知道了要訪問(wèn)的虛擬內(nèi)存在遠(yuǎn)端物理服務(wù)器X的地址空間中的物理地址,最后只需在本地物理服務(wù)器I中訪問(wèn)B(x,y)+addr_HPA即訪問(wèn)在遠(yuǎn)端物理服務(wù)器X中的虛擬內(nèi)存映射在本地物理服務(wù)器I中的地址,NTB會(huì)將對(duì)B (X,y) +addr_HPA的訪問(wèn)轉(zhuǎn)換為在遠(yuǎn)端物理服務(wù)器X中對(duì)地址addr_HPA的訪問(wèn),完成對(duì)該虛擬內(nèi)存的訪問(wèn)。
[0113]也就是說(shuō)P2M表保存了客戶(hù)機(jī)物理地址到對(duì)應(yīng)的宿主機(jī)地址的轉(zhuǎn)換映射信息,NTB則負(fù)責(zé)宿主機(jī)地址空間到其他各個(gè)物理服務(wù)器的實(shí)用地址空間的轉(zhuǎn)換,兩者協(xié)同起來(lái),可以實(shí)現(xiàn)客戶(hù)機(jī)物理地址到各個(gè)服務(wù)器的真實(shí)地址空間中的地址的轉(zhuǎn)換映射。
[0114]參見(jiàn)圖4所示,是本發(fā)明實(shí)施例中所提供的虛擬直通設(shè)備訪問(wèn)方法實(shí)施例一,本發(fā)明實(shí)施例可以應(yīng)用在本地物理服務(wù)器中,本地物理服務(wù)器通過(guò)本地非透明PCI橋與遠(yuǎn)端物理服務(wù)器的非透明PCI橋連接,非透明PCI橋用于將對(duì)遠(yuǎn)端物理服務(wù)器映射到本地物理服務(wù)器上的地址的訪問(wèn)轉(zhuǎn)換為對(duì)遠(yuǎn)端物理服務(wù)器上的物理地址的訪問(wèn);本地物理服務(wù)器中保存有利用非透明PCI橋建立的本地物理服務(wù)器與遠(yuǎn)端物理服務(wù)器之間的地址空間映射關(guān)系。
[0115]在虛擬直通設(shè)備訪問(wèn)中,同樣需要預(yù)先通過(guò)非透明PCI橋建立的本地物理服務(wù)器與其他各個(gè)物理服務(wù)器之間的地址空間映射關(guān)系,與虛擬內(nèi)存訪問(wèn)類(lèi)似,在此不再贅述。虛擬直通設(shè)備(VMDC, Virtual Machine Direct ConnectDevice),虛擬直通設(shè)備雖然是為虛擬機(jī)模擬的,但是當(dāng)虛擬機(jī)要使用這個(gè)虛擬直通設(shè)備時(shí)(訪問(wèn)這個(gè)虛擬直通設(shè)備),這個(gè)訪問(wèn)操作會(huì)被直接轉(zhuǎn)到真實(shí)的物理設(shè)備上,因此這樣的虛擬IO設(shè)備被稱(chēng)為虛擬直通設(shè)備。
[0116]則本發(fā)明實(shí)施例中所提供的虛擬直通設(shè)備訪問(wèn)方法實(shí)施例一可以包括以下步驟:
[0117]步驟401:本地物理服務(wù)器接收訪問(wèn)虛擬直通設(shè)備指令,根據(jù)訪問(wèn)虛擬直通設(shè)備指令中包含的虛擬地址獲得虛擬直通設(shè)備所位于的遠(yuǎn)端物理服務(wù)器,并獲得虛擬直通設(shè)備在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址。
[0118]在本發(fā)明的一些實(shí)施例中,本地物理服務(wù)器根據(jù)訪問(wèn)虛擬直通設(shè)備指令中包含的虛擬地址獲得虛擬直通設(shè)備所位于的遠(yuǎn)端物理服務(wù)器,并獲得虛擬直通設(shè)備在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址的具體實(shí)現(xiàn)可以包括:
[0119]本地物理服務(wù)器根據(jù)訪問(wèn)虛擬直通設(shè)備指令中包含的虛擬直通設(shè)備的虛擬地址,查找保存的虛擬直通設(shè)備分布信息,獲得虛擬直通設(shè)備所位于的遠(yuǎn)端物理服務(wù)器,并獲得虛擬直通設(shè)備在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址。
[0120]在一個(gè)物理服務(wù)器里全部直通設(shè)備需要接受物理服務(wù)器或者說(shuō)是物理服務(wù)器中的處理器的查詢(xún)和控制,因此直通設(shè)備在一個(gè)物理服務(wù)器中需要有相互區(qū)別的地址,可以稱(chēng)為統(tǒng)一編址。這種在同一個(gè)物理服務(wù)器中統(tǒng)一編址的地址有兩類(lèi):P0RT地址(端口地址)和 MMIO (Memory mapping I/O,內(nèi)存映射 I/O)地址。
[0121]在本實(shí)施例中,物理服務(wù)器中的DVMM可以有一分布式直通設(shè)備虛擬化模塊,當(dāng)運(yùn)行在本地物理服務(wù)器上的虛擬機(jī)需要訪問(wèn)直通設(shè)備,本地物理服務(wù)器可以接收到訪問(wèn)虛擬直通設(shè)備指令,分布式直通設(shè)備虛擬化模塊會(huì)根據(jù)所截獲訪問(wèn)虛擬直通設(shè)備指令中所要訪問(wèn)的虛擬Port地址或者虛擬MMIO地址和保存的該虛擬機(jī)的虛擬直通設(shè)備分布信息,判斷出該虛擬直通設(shè)備所位于的物理服務(wù)器,并找出該虛擬Port地址或者虛擬MMIO地址在該直通設(shè)備所位于的服務(wù)器中映射到得真實(shí)物理Port地址或MMIO地址。
[0122]步驟402:本地物理服務(wù)器根據(jù)地址空間映射關(guān)系以及虛擬直通設(shè)備在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址,獲得虛擬直通設(shè)備映射到本地物理服務(wù)器上的地址。
[0123]步驟403:本地物理服務(wù)器通過(guò)對(duì)虛擬直通設(shè)備映射到本地物理服務(wù)器上的地址的訪問(wèn),訪問(wèn)虛擬直通設(shè)備。
[0124]如果該虛擬直通設(shè)備占用的是本地物理服務(wù)器的物理直通設(shè)備,則虛擬直通設(shè)備對(duì)應(yīng)在所位于的物理服務(wù)器上的地址則為虛擬直通設(shè)備對(duì)應(yīng)在本地物理服務(wù)器上的地址,虛擬機(jī)可以直接訪問(wèn)本地物理服務(wù)器的物理直通設(shè)備,在此不再贅述。
[0125]如果該虛擬直通設(shè)備占用的是其他物理服務(wù)器的物理直通設(shè)備,基于上述實(shí)施例中的說(shuō)明,可以用B (X,y)表示遠(yuǎn)端物理服務(wù)器X的地址空間映射到本地物理服務(wù)器y的地址空間時(shí)的映射基地址,也就是說(shuō)如果要訪問(wèn)遠(yuǎn)端物理服務(wù)器X中的一個(gè)地址Address,等效于在本地物理服務(wù)器Y中訪問(wèn)地址(Address+B(x, y))。
[0126]這時(shí),設(shè)本地物理服務(wù)器為物理服務(wù)器y,虛擬直通設(shè)備所位于的遠(yuǎn)端物理服務(wù)器為物理服務(wù)器X,如果要訪問(wèn)虛擬直通設(shè)備即需要訪問(wèn)物理服務(wù)器X中的真實(shí)Port地址或MMIO地址,則可以等效訪問(wèn)虛擬直通設(shè)備映射到本地物理服務(wù)器上的地址,即利用非透明PCI橋?qū)⒃L問(wèn)物理服務(wù)器y中的B (X,y) +地址真實(shí)Port地址或MMIO地址,轉(zhuǎn)換為訪問(wèn)物理服務(wù)器X中的真實(shí)Port地址或MMIO地址,完成對(duì)遠(yuǎn)端物理服務(wù)器X中的虛擬直通設(shè)備的訪問(wèn)。
[0127]由于分布式直通設(shè)備虛擬化需要牽扯到各個(gè)物理服務(wù)器上的實(shí)用地址空間,利用非透明PCI橋NTB,則可以把各個(gè)服務(wù)器上的實(shí)用地址空間映射到本地地址空間當(dāng)中,本地物理服務(wù)器上的分布式直通設(shè)備虛擬化模塊就可以處理客戶(hù)機(jī)物理地址到所有其他物理服務(wù)器的實(shí)用地址空間的映射。
[0128]這樣,本實(shí)施例中非透明PCI橋建立各個(gè)物理服務(wù)器之間的地址空間映射關(guān)系,基于地址空間映射關(guān)系利用非透明PCI橋?qū)崿F(xiàn)物理服務(wù)器之間直接互訪彼此的地址空間,可以使物理服務(wù)器中運(yùn)行的虛擬機(jī)直接訪問(wèn)遠(yuǎn)端物理服務(wù)器中虛擬直通設(shè)備所占用的物理直通設(shè)備,不需要各物理服務(wù)器之間基于互聯(lián)網(wǎng)的通信即可實(shí)現(xiàn)分布式直通設(shè)備虛擬化,提高了物理服務(wù)器間通信速度,從而提高了分布式直通設(shè)備虛擬化系統(tǒng)的性能。
[0129]分布式直通設(shè)備虛擬化相較于分布式內(nèi)存虛擬化會(huì)有更復(fù)雜的情況,具體對(duì)虛擬直通設(shè)備的訪問(wèn)需要解決兩方面問(wèn)題,第一,當(dāng)訪問(wèn)虛擬直通設(shè)備指令所要訪問(wèn)的虛擬直通設(shè)備不位于本地物理服務(wù)器時(shí),如何定位并訪問(wèn)該虛擬直通設(shè)備所占用的物理直通設(shè)備,在虛擬直通設(shè)備訪問(wèn)方法實(shí)施例一中是對(duì)該問(wèn)題的解決方案;第二,當(dāng)訪問(wèn)虛擬直通設(shè)備指令為一個(gè)寫(xiě)設(shè)備指令,且該訪問(wèn)虛擬直通設(shè)備指令中包括虛擬直通設(shè)備需要進(jìn)一步寫(xiě)入數(shù)據(jù)到虛擬內(nèi)存,則該指令中可以包括虛擬直通設(shè)備進(jìn)一步使用的虛擬內(nèi)存的客戶(hù)機(jī)物理地址GPA,當(dāng)虛擬直通設(shè)備與虛擬內(nèi)存又處于不同物理服務(wù)器時(shí),應(yīng)該如何正確寫(xiě)該虛擬直通設(shè)備所占用物理直通設(shè)備,為此,本發(fā)明實(shí)施例進(jìn)一步提供了虛擬直通設(shè)備訪問(wèn)方法實(shí)施例二以解決該問(wèn)題。
[0130]具體的,在本發(fā)明的一些實(shí)施例中,虛擬直通設(shè)備的訪問(wèn)方法還可以包括:
[0131]本地物理服務(wù)器根據(jù)訪問(wèn)虛擬直通設(shè)備指令,判斷虛擬直通設(shè)備是否需要寫(xiě)入數(shù)據(jù)到虛擬內(nèi)存,如果是,獲得虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器,并獲得虛擬內(nèi)存在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址;
[0132]本地物理服務(wù)器根據(jù)地址空間映射關(guān)系以及虛擬內(nèi)存在所位于的物理服務(wù)器上的物理地址,獲得虛擬內(nèi)存映射到虛擬直通設(shè)備所位于的物理服務(wù)器上的地址;
[0133]本地物理服務(wù)器將虛擬內(nèi)存映射到虛擬直通設(shè)備所位于的物理服務(wù)器上的地址寫(xiě)入虛擬直通設(shè)備映射到本地物理服務(wù)器上的地址,使虛擬直通設(shè)備將需要寫(xiě)入的數(shù)據(jù)寫(xiě)入虛擬內(nèi)存。
[0134]其中,與訪問(wèn)虛擬內(nèi)存類(lèi)似,在本發(fā)明的一些實(shí)施例中,獲得虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器的具體實(shí)現(xiàn)可以包括:
[0135]本地物理服務(wù)器根據(jù)訪問(wèn)虛擬直通設(shè)備指令中包含的虛擬內(nèi)存的虛擬地址,查找保存的虛擬內(nèi)存分布信息,獲得虛擬內(nèi)存所位于的物理服務(wù)器。
[0136]在本發(fā)明的一些實(shí)施例中,本地物理服務(wù)器中還保存有遠(yuǎn)端物理服務(wù)器中的P2M表的地址,遠(yuǎn)端物理服務(wù)器中的P2M表包括位于該遠(yuǎn)端物理服務(wù)器中的虛擬內(nèi)存的虛擬地址與該遠(yuǎn)端服務(wù)器的物理地址的對(duì)應(yīng)關(guān)系;則獲得虛擬內(nèi)存在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址的具體實(shí)現(xiàn)可以包括:
[0137]本地物理服務(wù)器根據(jù)地址空間映射關(guān)系以及虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表的地址,獲得虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表映射到本地物理服務(wù)器的地址;
[0138]本地物理服務(wù)器通過(guò)對(duì)虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表映射到本地物理服務(wù)器的地址的訪問(wèn),訪問(wèn)虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表,在P2M表中查找虛擬內(nèi)存的虛擬地址獲得虛擬內(nèi)存在所位于的物理服務(wù)器上的物理地址。
[0139]參見(jiàn)圖5所示,是本發(fā)明實(shí)施例中所提供的虛擬直通設(shè)備訪問(wèn)方法實(shí)施例二,本地物理服務(wù)器通過(guò)本地非透明PCI橋與遠(yuǎn)端物理服務(wù)器的非透明PCI橋連接,非透明PCI橋用于將對(duì)遠(yuǎn)端物理服務(wù)器映射到本地物理服務(wù)器上的地址的訪問(wèn)轉(zhuǎn)換為對(duì)遠(yuǎn)端物理服務(wù)器上的物理地址的訪問(wèn);本地物理服務(wù)器中保存有利用非透明PCI橋建立的本地物理服務(wù)器與遠(yuǎn)端物理服務(wù)器之間的地址空間映射關(guān)系;本地物理服務(wù)器中還保存有遠(yuǎn)端物理服務(wù)器中的P2M表的地址,遠(yuǎn)端物理服務(wù)器中的P2M表包括位于該遠(yuǎn)端物理服務(wù)器中的虛擬內(nèi)存的虛擬地址與該遠(yuǎn)端服務(wù)器的物理地址的對(duì)應(yīng)關(guān)系。
[0140]則虛擬直通設(shè)備訪問(wèn)方法實(shí)施例二可以包括以下步驟:[0141]步驟501:本地物理服務(wù)器接收訪問(wèn)虛擬直通設(shè)備指令,根據(jù)訪問(wèn)虛擬直通設(shè)備指令中包含的虛擬地址獲得虛擬直通設(shè)備所位于的遠(yuǎn)端物理服務(wù)器,并獲得虛擬直通設(shè)備在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址。
[0142]步驟502:本地物理服務(wù)器根據(jù)地址空間映射關(guān)系以及虛擬直通設(shè)備在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址,獲得虛擬直通設(shè)備映射到本地物理服務(wù)器上的地址。
[0143]步驟503:本地物理服務(wù)器根據(jù)訪問(wèn)虛擬直通設(shè)備指令,判斷虛擬直通設(shè)備是否需要寫(xiě)入數(shù)據(jù)到虛擬內(nèi)存,如果是,進(jìn)入步驟504,如果否,進(jìn)入步驟509。
[0144]步驟504:本地物理服務(wù)器根據(jù)訪問(wèn)虛擬直通設(shè)備指令中包含的虛擬內(nèi)存的虛擬地址,查找保存的虛擬內(nèi)存分布信息,獲得虛擬內(nèi)存所位于的物理服務(wù)器。
[0145]步驟505:本地物理服務(wù)器根據(jù)地址空間映射關(guān)系以及虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表的地址,獲得虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表映射到本地物理服務(wù)器的地址。
[0146]步驟506:本地物理服務(wù)器通過(guò)對(duì)虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表映射到本地物理服務(wù)器的地址的訪問(wèn),訪問(wèn)虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表,在P2M表中查找虛擬內(nèi)存的虛擬地址獲得虛擬內(nèi)存在所位于的物理服務(wù)器上的物理地址。
[0147]步驟507:本地物理服務(wù)器根據(jù)地址空間映射關(guān)系以及虛擬內(nèi)存在所位于的物理服務(wù)器上的物理地址,獲得虛擬內(nèi)存映射到虛擬直通設(shè)備所位于的物理服務(wù)器上的地址。
[0148]步驟508:本地物理服務(wù)器將虛擬內(nèi)存映射到虛擬直通設(shè)備所位于的物理服務(wù)器上的地址寫(xiě)入虛擬直通設(shè)備映射到本地物理服務(wù)器上的地址,使虛擬直通設(shè)備將需要寫(xiě)入的數(shù)據(jù)寫(xiě)入虛擬內(nèi)存。
[0149]步驟509:本地物理服務(wù)器通過(guò)對(duì)虛擬直通設(shè)備映射到本地物理服務(wù)器上的地址的訪問(wèn),訪問(wèn)虛擬直通設(shè)備。
[0150]也即假設(shè)本地物理服務(wù)器為物理服務(wù)器i,虛擬直通設(shè)備和虛擬內(nèi)存分別處于物理服務(wù)器d和物理服務(wù)器m,首先,物理服務(wù)器i中的分布式直通設(shè)備虛擬化模塊會(huì)判斷出虛擬直通設(shè)備所位于的物理服務(wù)器是物理服務(wù)器d,以及虛擬直通設(shè)備在物理服務(wù)器d中的地址;還可以根據(jù)訪問(wèn)虛擬直通設(shè)備指令中包含的表示接下來(lái)虛擬直通設(shè)備可以使用的虛擬內(nèi)存的GPA,和虛擬內(nèi)存分布信息,判斷出該虛擬內(nèi)存所在服務(wù)器是物理服務(wù)器m;然后根據(jù)各物理服務(wù)器間地址空間映射關(guān)系和已經(jīng)預(yù)知的P2M表在物理服務(wù)器m中的地址,計(jì)算出該P(yáng)2M表在物理服務(wù)器i中的映射地址B (m, i) +P2M表的地址,并直接利用NTB去查找該P(yáng)2M表,獲取該GPA所映射到得HPA也即虛擬內(nèi)存對(duì)應(yīng)在所位于的物理服務(wù)器上的地址;分布式直通設(shè)備虛擬化模塊會(huì)根據(jù)各節(jié)點(diǎn)間地址空間映射關(guān)系和該HPA,計(jì)算出虛擬內(nèi)存在物理服務(wù)器d中的映射地址,把該映射地址去寫(xiě)入虛擬直通設(shè)備。這樣,以后當(dāng)虛擬直通設(shè)備需要把數(shù)據(jù)寫(xiě)入虛擬機(jī)虛擬內(nèi)存時(shí),就可以直接根據(jù)這個(gè)地址,利用NTB將數(shù)據(jù)寫(xiě)到虛擬內(nèi)存中供虛擬機(jī)使用。從而實(shí)現(xiàn)當(dāng)訪問(wèn)虛擬直通設(shè)備指令為一個(gè)寫(xiě)設(shè)備指令,且該訪問(wèn)虛擬直通設(shè)備指令中包括虛擬直通設(shè)備需要進(jìn)一步寫(xiě)入數(shù)據(jù)到虛擬內(nèi)存時(shí)的分布式虛擬化方案。
[0151]參見(jiàn)圖6所示,本發(fā)明實(shí)施例中還提供一種虛擬內(nèi)存訪問(wèn)裝置實(shí)施例,可以應(yīng)用在本地物理服務(wù)器中,本地物理服務(wù)器通過(guò)本地非透明PCI橋與遠(yuǎn)端物理服務(wù)器的非透明PCI橋連接,非透明PCI橋用于將對(duì)遠(yuǎn)端物理服務(wù)器映射到本地物理服務(wù)器上的地址的訪問(wèn)轉(zhuǎn)換為對(duì)遠(yuǎn)端物理服務(wù)器上的物理地址的訪問(wèn);本地物理服務(wù)器中保存有利用非透明PCI橋建立的本地物理服務(wù)器與遠(yuǎn)端物理服務(wù)器之間的地址空間映射關(guān)系。
[0152]虛擬內(nèi)存訪問(wèn)裝置實(shí)施例可以包括:
[0153]接收單元601,用于接收訪問(wèn)虛擬內(nèi)存指令。
[0154]第一獲得單元602,用于根據(jù)接收單元接收到的訪問(wèn)虛擬內(nèi)存指令包含的虛擬地址獲得虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器。
[0155]第二獲得單元603,用于在第一獲得單元獲得虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器后,獲得虛擬內(nèi)存在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址。
[0156]第三獲得單元604,用于根據(jù)地址空間映射關(guān)系以及第二獲得單元獲得的虛擬內(nèi)存在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址,獲得虛擬內(nèi)存映射到本地物理服務(wù)器上的地址。
[0157]訪問(wèn)單元605,用于通過(guò)對(duì)第三獲得單元獲得的虛擬內(nèi)存映射到本地物理服務(wù)器上的地址的訪問(wèn),訪問(wèn)虛擬內(nèi)存。
[0158]其中,在本發(fā)明的一些實(shí)施例中,第一獲得單元可以具體用于:
[0159]根據(jù)訪問(wèn)虛擬內(nèi)存指令中包含的虛擬內(nèi)存的虛擬地址,查找保存的虛擬內(nèi)存分布信息,獲得虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器。
[0160]參見(jiàn)圖7所示,在本發(fā)明的一些實(shí)施例中,本地物理服務(wù)器中還保存有遠(yuǎn)端物理服務(wù)器中的P2M表的地址,遠(yuǎn)端物理服務(wù)器中的P2M表包括位于該遠(yuǎn)端物理服務(wù)器中的虛擬內(nèi)存的虛擬地址與該遠(yuǎn)端服務(wù)器的物理地址的對(duì)應(yīng)關(guān)系。
[0161 ] 第二獲得單元603可以包括:
[0162]第一獲得子單元701,用于根據(jù)地址空間映射關(guān)系以及虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表的地址,獲得虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表映射到本地物理服務(wù)器的地址;
[0163]訪問(wèn)子單元702,用于通過(guò)對(duì)第一獲得子單元獲得的虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表映射到本地物理服務(wù)器的地址的訪問(wèn),訪問(wèn)虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表,在P2M表中查找虛擬內(nèi)存的虛擬地址獲得虛擬內(nèi)存在所位于的物理服務(wù)器上的物理地址。
[0164]本實(shí)施例中利用非透明PCI橋建立各個(gè)物理服務(wù)器之間的地址空間映射關(guān)系,基于地址空間映射關(guān)系利用非透明PCI橋?qū)崿F(xiàn)物理服務(wù)器之間直接互訪彼此的地址空間,可以使物理服務(wù)器中運(yùn)行的虛擬機(jī)直接訪問(wèn)遠(yuǎn)端物理服務(wù)器中虛擬內(nèi)存所占用的物理內(nèi)存,不需要各物理服務(wù)器之間基于互聯(lián)網(wǎng)的通信即可實(shí)現(xiàn)分布式內(nèi)存虛擬化,提高了物理服務(wù)器間通信速度,從而提高了分布式內(nèi)存虛擬化系統(tǒng)的性能。
[0165]上面從模塊化功能實(shí)體的角度對(duì)本發(fā)明實(shí)施例中的虛擬內(nèi)存訪問(wèn)裝置進(jìn)行描述,下面從硬件處理的角度對(duì)本發(fā)明實(shí)施例中的虛擬內(nèi)存訪問(wèn)裝置進(jìn)行描述,參見(jiàn)圖8所示,本發(fā)明實(shí)施例中虛擬內(nèi)存訪問(wèn)裝置可以應(yīng)用在本地物理服務(wù)器中,本地物理服務(wù)器通過(guò)本地非透明PCI橋與遠(yuǎn)端物理服務(wù)器的非透明PCI橋連接,非透明PCI橋用于將對(duì)遠(yuǎn)端物理服務(wù)器映射到本地物理服務(wù)器上的地址的訪問(wèn)轉(zhuǎn)換為對(duì)遠(yuǎn)端物理服務(wù)器上的物理地址的訪問(wèn)。在本發(fā)明的實(shí)施例中,本地服務(wù)器實(shí)施例一可以包括:[0166]輸入裝置801、輸出裝置802、處理器803和存儲(chǔ)器804 (其中從終端800中的處理器801的數(shù)量可以一個(gè)或多個(gè),圖8中以一個(gè)處理器801為例)。在本發(fā)明的一些實(shí)施例中,輸入裝置801、輸出裝置802、處理器803和存儲(chǔ)器804可通過(guò)總線或其它方式連接,其中,圖8中以通過(guò)總線連接為例。
[0167]其中,通過(guò)調(diào)用存儲(chǔ)器804存儲(chǔ)的操作指令,存儲(chǔ)器804中保存有利用非透明PCI橋建立的本地物理服務(wù)器與遠(yuǎn)端物理服務(wù)器之間的地址空間映射關(guān)系;存儲(chǔ)器804中還保存有遠(yuǎn)端物理服務(wù)器中的P2M表的地址,遠(yuǎn)端物理服務(wù)器中的P2M表包括位于該遠(yuǎn)端物理服務(wù)器中的虛擬內(nèi)存的虛擬地址與該遠(yuǎn)端服務(wù)器的物理地址的對(duì)應(yīng)關(guān)系。處理器803用于執(zhí)行如下步驟:
[0168]接收訪問(wèn)虛擬內(nèi)存指令,根據(jù)訪問(wèn)虛擬內(nèi)存指令中包含的虛擬地址獲得虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器,并獲得虛擬內(nèi)存在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址;
[0169]根據(jù)地址空間映射關(guān)系以及虛擬內(nèi)存在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址,獲得虛擬內(nèi)存映射到本地物理服務(wù)器上的地址;
[0170]通過(guò)對(duì)虛擬內(nèi)存映射到本地物理服務(wù)器上的地址的訪問(wèn),訪問(wèn)虛擬內(nèi)存。
[0171]處理器803還用于執(zhí)行根據(jù)訪問(wèn)虛擬內(nèi)存指令中包含的虛擬內(nèi)存的虛擬地址,查找保存的虛擬內(nèi)存分布信息,獲得虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器。
[0172]處理器803還用于執(zhí)行根據(jù)地址空間映射關(guān)系以及虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表的地址,獲得虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表映射到本地物理服務(wù)器的地址;
[0173]通過(guò)對(duì)虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表映射到本地物理服務(wù)器的地址的訪問(wèn),訪問(wèn)虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表,在P2M表中查找虛擬內(nèi)存的虛擬地址獲得虛擬內(nèi)存在所位于的物理服務(wù)器上的物理地址。
[0174]本實(shí)施例中,通過(guò)非透明PCI橋建立各個(gè)物理服務(wù)器之間的地址空間映射關(guān)系,處理器803基于地址空間映射關(guān)系利用非透明PCI橋?qū)崿F(xiàn)物理服務(wù)器之間直接互訪彼此的地址空間,可以使物理服務(wù)器中運(yùn)行的虛擬機(jī)直接訪問(wèn)遠(yuǎn)端物理服務(wù)器中虛擬內(nèi)存所占用的物理內(nèi)存,不需要各物理服務(wù)器之間基于互聯(lián)網(wǎng)的通信即可實(shí)現(xiàn)分布式內(nèi)存虛擬化,提高了物理服務(wù)器間通信速度,從而提高了分布式內(nèi)存虛擬化系統(tǒng)的性能。
[0175]參見(jiàn)圖9所示,是本發(fā)明實(shí)施例中提供的一種虛擬直通設(shè)備訪問(wèn)裝置實(shí)施例一,可以應(yīng)用在本地物理服務(wù)器中,本地物理服務(wù)器通過(guò)本地非透明PCI橋與遠(yuǎn)端物理服務(wù)器的非透明PCI橋連接,非透明PCI橋用于將對(duì)遠(yuǎn)端物理服務(wù)器映射到本地物理服務(wù)器上的地址的訪問(wèn)轉(zhuǎn)換為對(duì)遠(yuǎn)端物理服務(wù)器上的物理地址的訪問(wèn);本地物理服務(wù)器中保存有利用非透明PCI橋建立的本地物理服務(wù)器與遠(yuǎn)端物理服務(wù)器之間的地址空間映射關(guān)系。
[0176]虛擬直通設(shè)備訪問(wèn)裝置實(shí)施例一可以包括:
[0177]接收單元901,用于接收訪問(wèn)虛擬直通設(shè)備指令。
[0178]第一獲得單元902,用于根據(jù)訪問(wèn)虛擬直通設(shè)備指令中包含的虛擬地址獲得虛擬直通設(shè)備所位于的遠(yuǎn)端物理服務(wù)器,并獲得虛擬直通設(shè)備在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址。
[0179]第二獲得單元903,用于根據(jù)地址空間映射關(guān)系以及第一獲得單元獲得的虛擬直通設(shè)備在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址,獲得虛擬直通設(shè)備映射到本地物理服務(wù)器上的地址。
[0180]訪問(wèn)單元904,用于通過(guò)對(duì)第二獲得單元獲得的虛擬直通設(shè)備映射到本地物理服務(wù)器上的地址的訪問(wèn),訪問(wèn)虛擬直通設(shè)備。
[0181]其中,在本發(fā)明的一些實(shí)施例中,第一獲得單元902可以包括:
[0182]接收子單元,用于接收訪問(wèn)虛擬直通設(shè)備指令;
[0183]第一查找子單元,用于根據(jù)接收子單元接收到的訪問(wèn)虛擬直通設(shè)備指令中包含的虛擬直通設(shè)備的虛擬地址,查找保存的虛擬直通設(shè)備分布信息;
[0184]第一獲得子單元,用于根據(jù)第一查找子單元的結(jié)果獲得虛擬直通設(shè)備所位于的遠(yuǎn)端物理服務(wù)器,并獲得虛擬直通設(shè)備在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址。
[0185]也即第一獲得單元可以具體用于根據(jù)訪問(wèn)虛擬直通設(shè)備指令中包含的虛擬直通設(shè)備的虛擬地址,查找保存的虛擬直通設(shè)備分布信息,獲得虛擬直通設(shè)備所位于的遠(yuǎn)端物理服務(wù)器,并獲得虛擬直通設(shè)備在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址。
[0186]參見(jiàn)圖10所示,是本發(fā)明實(shí)施例中提供的虛擬直通設(shè)備訪問(wèn)裝置實(shí)施例二,可以應(yīng)用在本地物理服務(wù)器中,本地物理服務(wù)器通過(guò)本地非透明PCI橋與遠(yuǎn)端物理服務(wù)器的非透明PCI橋連接,非透明PCI橋用于將對(duì)遠(yuǎn)端物理服務(wù)器映射到本地物理服務(wù)器上的地址的訪問(wèn)轉(zhuǎn)換為對(duì)遠(yuǎn)端物理服務(wù)器上的物理地址的訪問(wèn);本地物理服務(wù)器中保存有利用非透明PCI橋建立的本地物理服務(wù)器與遠(yuǎn)端物理服務(wù)器之間的地址空間映射關(guān)系。
[0187]則虛擬直通設(shè)備訪問(wèn)裝置實(shí)施例二可以包括:
[0188]接收單元901,用于接收訪問(wèn)虛擬直通設(shè)備指令。
[0189]第一獲得單元902,用于根據(jù)訪問(wèn)虛擬直通設(shè)備指令中包含的虛擬地址獲得虛擬直通設(shè)備所位于的遠(yuǎn)端物理服務(wù)器,并獲得虛擬直通設(shè)備在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址。
[0190]第二獲得單元903,用于根據(jù)地址空間映射關(guān)系以及第一獲得單元獲得的虛擬直通設(shè)備在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址,獲得虛擬直通設(shè)備映射到本地物理服務(wù)器上的地址。
[0191]判斷單元1001,用于根據(jù)接收單元接收到的訪問(wèn)虛擬直通設(shè)備指令,判斷虛擬直通設(shè)備是否需要寫(xiě)入數(shù)據(jù)到虛擬內(nèi)存。
[0192]第三獲得單元1002,用于如果判斷單元的判斷結(jié)果為是,獲得虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器。
[0193]第四獲得單元1003,用于如果判斷單元的判斷結(jié)果為是,在第三獲得單元獲得虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器后,獲得虛擬內(nèi)存在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址。
[0194]第五獲得單元1004,用于根據(jù)地址空間映射關(guān)系以及第四獲得單元獲得的虛擬內(nèi)存在所位于的物理服務(wù)器上的物理地址,獲得虛擬內(nèi)存映射到虛擬直通設(shè)備所位于的物理服務(wù)器上的地址。
[0195]寫(xiě)入單元1005,用于將第五獲得單元獲得的虛擬內(nèi)存映射到虛擬直通設(shè)備所位于的物理服務(wù)器上的地址寫(xiě)入虛擬直通設(shè)備映射到本地物理服務(wù)器上的地址,使虛擬直通設(shè)備將需要寫(xiě)入的數(shù)據(jù)寫(xiě)入虛擬內(nèi)存。
[0196]訪問(wèn)單元904,用于通過(guò)對(duì)第二獲得單元獲得的虛擬直通設(shè)備映射到本地物理服務(wù)器上的地址的訪問(wèn),訪問(wèn)虛擬直通設(shè)備。
[0197]其中,在本發(fā)明的一些實(shí)施例中,第三獲得單元1002可以具體用于:根據(jù)訪問(wèn)虛擬直通設(shè)備指令中包含的虛擬內(nèi)存的虛擬地址,查找保存的虛擬內(nèi)存分布信息,獲得虛擬內(nèi)存所位于的物理服務(wù)器。
[0198]在本發(fā)明的一些實(shí)施例中,本地物理服務(wù)器中還保存有遠(yuǎn)端物理服務(wù)器中的P2M表的地址,遠(yuǎn)端物理服務(wù)器中的P2M表包括位于該遠(yuǎn)端物理服務(wù)器中的虛擬內(nèi)存的虛擬地址與該遠(yuǎn)端服務(wù)器的物理地址的對(duì)應(yīng)關(guān)系;則第四獲得單元1004可以包括:
[0199]第二獲得子單元,用于根據(jù)地址空間映射關(guān)系以及虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表的地址,獲得虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表映射到本地物理服務(wù)器的地址;
[0200]訪問(wèn)子單元,用于通過(guò)對(duì)第二獲得子單元獲得的虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表映射到本地物理服務(wù)器的地址的訪問(wèn),訪問(wèn)虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表,在P2M表中查找虛擬內(nèi)存的虛擬地址獲得虛擬內(nèi)存在所位于的物理服務(wù)器上的物理地址。
[0201]這樣,本實(shí)施例中利用非透明PCI橋建立各個(gè)物理服務(wù)器之間的地址空間映射關(guān)系,基于地址空間映射關(guān)系利用非透明PCI橋?qū)崿F(xiàn)物理服務(wù)器之間直接互訪彼此的地址空間,可以使物理服務(wù)器中運(yùn)行的虛擬機(jī)直接訪問(wèn)遠(yuǎn)端物理服務(wù)器中虛擬直通設(shè)備所占用的物理直通設(shè)備,不需要各物理服務(wù)器之間基于互聯(lián)網(wǎng)的通信即可實(shí)現(xiàn)分布式直通設(shè)備虛擬化,提高了物理服務(wù)器間通信速度,從而提高了分布式直通設(shè)備虛擬化系統(tǒng)的性能。
[0202]上面從模塊化功能實(shí)體的角度對(duì)本發(fā)明實(shí)施例中的虛擬直通設(shè)備訪問(wèn)裝置進(jìn)行描述,下面從硬件處理的角度對(duì)本發(fā)明實(shí)施例中的虛擬直通設(shè)備訪問(wèn)裝置進(jìn)行描述,本發(fā)明實(shí)施例虛擬直通設(shè)備訪問(wèn)裝置可以應(yīng)用在本地物理服務(wù)器中,本地物理服務(wù)器通過(guò)本地非透明PCI橋與遠(yuǎn)端物理服務(wù)器的非透明PCI橋連接,非透明PCI橋用于將對(duì)遠(yuǎn)端物理服務(wù)器映射到本地物理服務(wù)器上的地址的訪問(wèn)轉(zhuǎn)換為對(duì)遠(yuǎn)端物理服務(wù)器上的物理地址的訪問(wèn)。參見(jiàn)圖11所示,本發(fā)明實(shí)施例中本地服務(wù)器的實(shí)施例二可以包括:
[0203]輸入裝置1101、輸出裝置1102、處理器1103和存儲(chǔ)器1104 (其中從終端1100中的處理器1101的數(shù)量可以一個(gè)或多個(gè),圖11中以一個(gè)處理器1101為例)。在本發(fā)明的一些實(shí)施例中,輸入裝置1101、輸出裝置1102、處理器1103和存儲(chǔ)器1104可通過(guò)總線或其它方式連接,其中,圖11中以通過(guò)總線連接為例。
[0204]其中,通過(guò)調(diào)用存儲(chǔ)器1104存儲(chǔ)的操作指令,存儲(chǔ)器1104中保存有利用非透明PCI橋建立的本地物理服務(wù)器與遠(yuǎn)端物理服務(wù)器之間的地址空間映射關(guān)系;存儲(chǔ)器1104中還保存有遠(yuǎn)端物理服務(wù)器中的P2M表的地址,遠(yuǎn)端物理服務(wù)器中的P2M表包括位于該遠(yuǎn)端物理服務(wù)器中的虛擬內(nèi)存的虛擬地址與該遠(yuǎn)端服務(wù)器的物理地址的對(duì)應(yīng)關(guān)系;處理器1103用于執(zhí)行如下步驟:
[0205]接收訪問(wèn)虛擬直通設(shè)備指令,根據(jù)訪問(wèn)虛擬直通設(shè)備指令中包含的虛擬地址獲得虛擬直通設(shè)備所位于的遠(yuǎn)端物理服務(wù)器,并獲得虛擬直通設(shè)備在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址;
[0206]根據(jù)地址空間映射關(guān)系以及虛擬直通設(shè)備在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址,獲得虛擬直通設(shè)備映射到本地物理服務(wù)器上的地址;[0207]通過(guò)對(duì)虛擬直通設(shè)備映射到本地物理服務(wù)器上的地址的訪問(wèn),訪問(wèn)虛擬直通設(shè)備。
[0208]處理器1103還用于執(zhí)行根據(jù)訪問(wèn)虛擬直通設(shè)備指令中包含的虛擬直通設(shè)備的虛擬地址,查找保存的虛擬直通設(shè)備分布信息,獲得虛擬直通設(shè)備所位于的遠(yuǎn)端物理服務(wù)器,并獲得虛擬直通設(shè)備在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址。
[0209]處理器1103還用于執(zhí)行根據(jù)訪問(wèn)虛擬直通設(shè)備指令,判斷虛擬直通設(shè)備是否需要寫(xiě)入數(shù)據(jù)到虛擬內(nèi)存,如果是,獲得虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器,并獲得虛擬內(nèi)存在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址;
[0210]根據(jù)地址空間映射關(guān)系以及虛擬內(nèi)存在所位于的物理服務(wù)器上的物理地址,獲得虛擬內(nèi)存映射到虛擬直通設(shè)備所位于的物理服務(wù)器上的地址;
[0211]將虛擬內(nèi)存映射到虛擬直通設(shè)備所位于的物理服務(wù)器上的地址寫(xiě)入虛擬直通設(shè)備映射到本地物理服務(wù)器上的地址,使虛擬直通設(shè)備將需要寫(xiě)入的數(shù)據(jù)寫(xiě)入虛擬內(nèi)存。
[0212]處理器1103還用于執(zhí)行根據(jù)訪問(wèn)虛擬直通設(shè)備指令中包含的虛擬內(nèi)存的虛擬地址,查找保存的虛擬內(nèi)存分布信息,獲得虛擬內(nèi)存所位于的物理服務(wù)器。
[0213]處理器1103還用于執(zhí)行根據(jù)地址空間映射關(guān)系以及虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表的地址,獲得虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表映射到本地物理服務(wù)器的地址;
[0214]通過(guò)對(duì)虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表映射到本地物理服務(wù)器的地址的訪問(wèn),訪問(wèn)虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表,在P2M表中查找虛擬內(nèi)存的虛擬地址獲得虛擬內(nèi)存在所位于的物理服務(wù)器上的物理地址。
[0215]本實(shí)施例中利用非透明PCI橋建立各個(gè)物理服務(wù)器之間的地址空間映射關(guān)系,處理器1103基于地址空間映射關(guān)系利用非透明PCI橋?qū)崿F(xiàn)物理服務(wù)器之間直接互訪彼此的地址空間,可以使物理服務(wù)器中運(yùn)行的虛擬機(jī)直接訪問(wèn)遠(yuǎn)端物理服務(wù)器中虛擬直通設(shè)備所占用的物理直通設(shè)備,不需要各物理服務(wù)器之間基于互聯(lián)網(wǎng)的通信即可實(shí)現(xiàn)分布式直通設(shè)備虛擬化,提高了物理服務(wù)器間通信速度,從而提高了分布式直通設(shè)備虛擬化系統(tǒng)的性能。
[0216]所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為描述的方便和簡(jiǎn)潔,上述描述的系統(tǒng),裝置和單元的具體工作過(guò)程,可以參考前述方法實(shí)施例中的對(duì)應(yīng)過(guò)程,在此不再贅述。
[0217]在本申請(qǐng)所提供的幾個(gè)實(shí)施例中,應(yīng)該理解到,所揭露的系統(tǒng),裝置和方法,可以通過(guò)其它的方式實(shí)現(xiàn)。例如,以上所描述的裝置實(shí)施例僅僅是示意性的,例如,單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過(guò)一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。
[0218]作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開(kāi)的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。
[0219]另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以?xún)蓚€(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。[0220]集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷(xiāo)售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:U盤(pán)、移動(dòng)硬盤(pán)、只讀存儲(chǔ)器(ROM, Read-Only Memory)>隨機(jī)存取存儲(chǔ)器(RAM, Random Access Memory)、磁碟或者光盤(pán)等各種可以存儲(chǔ)程序代碼的介質(zhì)。
[0221]還需要說(shuō)明的是,在本文中,諸如第一和第二等之類(lèi)的關(guān)系術(shù)語(yǔ)僅僅用來(lái)將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開(kāi)來(lái),而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、物品或者設(shè)備所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過(guò)程、方法、物品或者設(shè)備中還存在另外的相同要素。
[0222]以上所述,以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技`術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精神和范圍。
【權(quán)利要求】
1.一種虛擬內(nèi)存訪問(wèn)方法,應(yīng)用在本地物理服務(wù)器中,其特征在于,所述本地物理服務(wù)器通過(guò)本地非透明PCI橋與遠(yuǎn)端物理服務(wù)器的非透明PCI橋連接,所述非透明PCI橋用于將對(duì)遠(yuǎn)端物理服務(wù)器映射到本地物理服務(wù)器上的地址的訪問(wèn)轉(zhuǎn)換為對(duì)遠(yuǎn)端物理服務(wù)器上的物理地址的訪問(wèn);所述本地物理服務(wù)器中保存有利用所述非透明PCI橋建立的所述本地物理服務(wù)器與所述遠(yuǎn)端物理服務(wù)器之間的地址空間映射關(guān)系;所述方法包括: 接收訪問(wèn)虛擬內(nèi)存指令,根據(jù)所述訪問(wèn)虛擬內(nèi)存指令中包含的虛擬地址獲得所述虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器,并獲得所述虛擬內(nèi)存在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址; 根據(jù)所述地址空間映射關(guān)系以及所述虛擬內(nèi)存在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址,獲得所述虛擬內(nèi)存映射到本地物理服務(wù)器上的地址; 通過(guò)對(duì)所述虛擬內(nèi)存映射到本地物理服務(wù)器上的地址的訪問(wèn),訪問(wèn)所述虛擬內(nèi)存。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)所述訪問(wèn)虛擬內(nèi)存指令中包含的虛擬地址獲得所述虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器,包括: 根據(jù)所述訪問(wèn)虛擬內(nèi)存指令中包含的虛擬內(nèi)存的虛擬地址,查找保存的虛擬內(nèi)存分布信息,獲得所述虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述本地物理服務(wù)器中還保存有遠(yuǎn)端物理服務(wù)器中的P2M表的地址,所述遠(yuǎn)端物理服務(wù)器中的P2M表包括位于該遠(yuǎn)端物理服務(wù)器中的虛擬內(nèi)存的虛擬地址與該遠(yuǎn)端服務(wù)器的物理地址的對(duì)應(yīng)關(guān)系; 所述獲得所述虛擬內(nèi)存在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址,包括: 根據(jù)所述地址空間映射關(guān)系以及所述虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表的地址,獲得所述虛擬內(nèi)存所位于的遠(yuǎn)端物`理服務(wù)器中的P2M表映射到本地物理服務(wù)器的地址; 通過(guò)對(duì)所述虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表映射到本地物理服務(wù)器的地址的訪問(wèn),訪問(wèn)所述虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表,在所述P2M表中查找所述虛擬內(nèi)存的虛擬地址獲得所述虛擬內(nèi)存在所位于的物理服務(wù)器上的物理地址。
4.一種虛擬直通設(shè)備訪問(wèn)方法,應(yīng)用在本地物理服務(wù)器中,其特征在于,所述本地物理服務(wù)器通過(guò)本地非透明PCI橋與遠(yuǎn)端物理服務(wù)器的非透明PCI橋連接,所述非透明PCI橋用于將對(duì)遠(yuǎn)端物理服務(wù)器映射到本地物理服務(wù)器上的地址的訪問(wèn)轉(zhuǎn)換為對(duì)遠(yuǎn)端物理服務(wù)器上的物理地址的訪問(wèn);所述本地物理服務(wù)器中保存有利用所述非透明PCI橋建立的所述本地物理服務(wù)器與所述遠(yuǎn)端物理服務(wù)器之間的地址空間映射關(guān)系;所述方法包括: 接收訪問(wèn)虛擬直通設(shè)備指令,根據(jù)所述訪問(wèn)虛擬直通設(shè)備指令中包含的虛擬地址獲得所述虛擬直通設(shè)備所位于的遠(yuǎn)端物理服務(wù)器,并獲得所述虛擬直通設(shè)備在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址; 根據(jù)所述地址空間映射關(guān)系以及所述虛擬直通設(shè)備在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址,獲得所述虛擬直通設(shè)備映射到本地物理服務(wù)器上的地址; 通過(guò)對(duì)所述虛擬直通設(shè)備映射到本地物理服務(wù)器上的地址的訪問(wèn),訪問(wèn)所述虛擬直通設(shè)備。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述根據(jù)所述訪問(wèn)虛擬直通設(shè)備指令中包含的虛擬地址獲得所述虛擬直通設(shè)備所位于的遠(yuǎn)端物理服務(wù)器,并獲得所述虛擬直通設(shè)備在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址,包括: 根據(jù)所述訪問(wèn)虛擬直通設(shè)備指令中包含的虛擬直通設(shè)備的虛擬地址,查找保存的虛擬直通設(shè)備分布信息,獲得所述虛擬直通設(shè)備所位于的遠(yuǎn)端物理服務(wù)器,并獲得所述虛擬直通設(shè)備在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址。
6.根據(jù)權(quán)利要求4或5所述的方法,其特征在于,所述方法還包括: 根據(jù)所述訪問(wèn)虛擬直通設(shè)備指令,判斷所述虛擬直通設(shè)備是否需要寫(xiě)入數(shù)據(jù)到虛擬內(nèi)存,如果是,獲得所述虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器,并獲得所述虛擬內(nèi)存在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址; 根據(jù)所述地址空間映射關(guān)系以及所述虛擬內(nèi)存在所位于的物理服務(wù)器上的物理地址,獲得所述虛擬內(nèi)存映射到所述虛擬直通設(shè)備所位于的物理服務(wù)器上的地址; 將所述虛擬內(nèi)存映射到虛擬直通設(shè)備所位于的物理服務(wù)器上的地址寫(xiě)入所述虛擬直通設(shè)備映射到本地物理服務(wù)器上的地址,使所述虛擬直通設(shè)備將需要寫(xiě)入的數(shù)據(jù)寫(xiě)入所述虛擬內(nèi)存。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述獲得所述虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器,包括: 根據(jù)所述訪問(wèn)虛擬直通設(shè)備指令中包含的虛擬內(nèi)存的虛擬地址,查找保存的虛擬內(nèi)存分布信息,獲得所述虛擬內(nèi)存所位于的物理服務(wù)器。
8.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述本地物理服務(wù)器中還保存有遠(yuǎn)端物理服務(wù)器中的P2M表的地址,所述遠(yuǎn)端物理服務(wù)器中的P2M表包括位于該遠(yuǎn)端物理服務(wù)器中的虛擬內(nèi)存的虛擬地址與該·遠(yuǎn)端服務(wù)器的物理地址的對(duì)應(yīng)關(guān)系; 所述獲得所述虛擬內(nèi)存在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址,包括: 根據(jù)所述地址空間映射關(guān)系以及所述虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表的地址,獲得所述虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表映射到本地物理服務(wù)器的地址; 通過(guò)對(duì)所述虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表映射到本地物理服務(wù)器的地址的訪問(wèn),訪問(wèn)所述虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表,在所述P2M表中查找所述虛擬內(nèi)存的虛擬地址獲得所述虛擬內(nèi)存在所位于的物理服務(wù)器上的物理地址。
9.一種虛擬內(nèi)存訪問(wèn)裝置,應(yīng)用在本地物理服務(wù)器中,其特征在于,所述本地物理服務(wù)器通過(guò)本地非透明PCI橋與遠(yuǎn)端物理服務(wù)器的非透明PCI橋連接,所述非透明PCI橋用于將對(duì)遠(yuǎn)端物理服務(wù)器映射到本地物理服務(wù)器上的地址的訪問(wèn)轉(zhuǎn)換為對(duì)遠(yuǎn)端物理服務(wù)器上的物理地址的訪問(wèn);所述本地物理服務(wù)器中保存有利用所述非透明PCI橋建立的所述本地物理服務(wù)器與所述遠(yuǎn)端物理服務(wù)器之間的地址空間映射關(guān)系;所述裝置包括: 接收單元,用于接收訪問(wèn)虛擬內(nèi)存指令; 第一獲得單元,用于根據(jù)所述接收單元接收到的訪問(wèn)虛擬內(nèi)存指令包含的虛擬地址獲得所述虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器; 第二獲得單元,用于在所述第一獲得單元獲得所述虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器后,獲得所述虛擬內(nèi)存在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址; 第三獲得單元,用于根據(jù)所述地址空間映射關(guān)系以及所述第二獲得單元獲得的所述虛擬內(nèi)存在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址,獲得所述虛擬內(nèi)存映射到本地物理服務(wù)器上的地址; 訪問(wèn)單元,用于通過(guò)對(duì)所述第三獲得單元獲得的所述虛擬內(nèi)存映射到本地物理服務(wù)器上的地址的訪問(wèn),訪問(wèn)所述虛擬內(nèi)存。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述本地物理服務(wù)器中還保存有遠(yuǎn)端物理服務(wù)器中的P2M表的地址,所述遠(yuǎn)端物理服務(wù)器中的P2M表包括位于該遠(yuǎn)端物理服務(wù)器中的虛擬內(nèi)存的虛擬地址與該遠(yuǎn)端服務(wù)器的物理地址的對(duì)應(yīng)關(guān)系; 所述第二獲得單元包括: 第一獲得子單元,用于根據(jù)所述地址空間映射關(guān)系以及所述虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表的地址,獲得所述虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表映射到本地物理服務(wù)器的地址; 訪問(wèn)子單元,用于通過(guò)對(duì)所述第一獲得子單元獲得的所述虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表映射到本地物理服務(wù)器的地址的訪問(wèn),訪問(wèn)所述虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表,在所述P2M表中查找所述虛擬內(nèi)存的虛擬地址獲得所述虛擬內(nèi)存在所位于的物理服務(wù)器上的物理地址。
11.一種虛擬直通設(shè)備訪問(wèn)裝置,應(yīng)用在本地物理服務(wù)器中,其特征在于,所述本地物理服務(wù)器通過(guò)本地非透明PCI橋與遠(yuǎn)端物理服務(wù)器的非透明PCI橋連接,所述非透明PCI橋用于將對(duì)遠(yuǎn)端物理服務(wù)器映射到本地物理服務(wù)器上的地址的訪問(wèn)轉(zhuǎn)換為對(duì)遠(yuǎn)端物理服務(wù)器上的物理地址的訪問(wèn);所述本地物理服務(wù)器中保存有利用所述非透明PCI橋建立的所述本地物理服務(wù)器與所述遠(yuǎn)端物理服務(wù)器之間的地址空間映射關(guān)系;所述裝置包括: 接收單元,用于接收訪問(wèn)虛擬直通設(shè)備指令; 第一獲得單元,用于根據(jù) 所述訪問(wèn)虛擬直通設(shè)備指令中包含的虛擬地址獲得所述虛擬直通設(shè)備所位于的遠(yuǎn)端物理服務(wù)器,并獲得所述虛擬直通設(shè)備在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址; 第二獲得單元,用于根據(jù)所述地址空間映射關(guān)系以及所述第一獲得單元獲得的所述虛擬直通設(shè)備在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址,獲得所述虛擬直通設(shè)備映射到本地物理服務(wù)器上的地址; 訪問(wèn)單元,用于通過(guò)對(duì)所述第二獲得單元獲得的所述虛擬直通設(shè)備映射到本地物理服務(wù)器上的地址的訪問(wèn),訪問(wèn)所述虛擬直通設(shè)備。
12.根據(jù)權(quán)利要求11所述的裝置,其特征在于,所述第一獲得單元包括: 接收子單元,用于接收訪問(wèn)虛擬直通設(shè)備指令; 第一查找子單元,用于根據(jù)所述接收子單元接收到的訪問(wèn)虛擬直通設(shè)備指令中包含的虛擬直通設(shè)備的虛擬地址,查找保存的虛擬直通設(shè)備分布信息; 第一獲得子單元,用于根據(jù)所述第一查找子單元的結(jié)果獲得所述虛擬直通設(shè)備所位于的遠(yuǎn)端物理服務(wù)器,并獲得所述虛擬直通設(shè)備在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址。
13.根據(jù)權(quán)利要求11或12所述的裝置,其特征在于,所述裝置還包括: 判斷單元,用于根據(jù)所述接收單元接收到的訪問(wèn)虛擬直通設(shè)備指令,判斷所述虛擬直通設(shè)備是否需要寫(xiě)入數(shù)據(jù)到虛擬內(nèi)存; 第三獲得單元,用于如果所述判斷單元的判斷結(jié)果為是,獲得所述虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器;第四獲得單元,用于如果所述判斷單元的判斷結(jié)果為是,在所述第三獲得單元獲得所述虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器后,獲得所述虛擬內(nèi)存在所位于的遠(yuǎn)端物理服務(wù)器上的物理地址; 第五獲得單元,用于根據(jù)所述地址空間映射關(guān)系以及所述第四獲得單元獲得的所述虛擬內(nèi)存在所位于的物理服務(wù)器上的物理地址,獲得所述虛擬內(nèi)存映射到所述虛擬直通設(shè)備所位于的物理服務(wù)器上的地址; 寫(xiě)入單元,用于將所述第五獲得單元獲得的所述虛擬內(nèi)存映射到虛擬直通設(shè)備所位于的物理服務(wù)器上的地址寫(xiě)入所述虛擬直通設(shè)備映射到本地物理服務(wù)器上的地址,使所述虛擬直通設(shè)備將需要寫(xiě)入的數(shù)據(jù)寫(xiě)入所述虛擬內(nèi)存。
14.根據(jù)權(quán)利要求13所述的裝置,其特征在于,所述本地物理服務(wù)器中還保存有遠(yuǎn)端物理服務(wù)器中的P2M表的地址,所述遠(yuǎn)端物理服務(wù)器中的P2M表包括位于該遠(yuǎn)端物理服務(wù)器中的虛擬內(nèi)存的虛擬地址與該遠(yuǎn)端服務(wù)器的物理地址的對(duì)應(yīng)關(guān)系; 所述第四獲得單元包括: 第二獲得子單元,用于根據(jù)所述地址空間映射關(guān)系以及所述虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表的地址,獲得所述虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表映射到本地物理服務(wù)器的地址; 訪問(wèn)子單元,用于通過(guò)對(duì)所述第二獲得子單元獲得的所述虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表映射到本地物理服務(wù)器的地址的訪問(wèn),訪問(wèn)所述虛擬內(nèi)存所位于的遠(yuǎn)端物理服務(wù)器中的P2M表,在所述P2M表中查找所述虛擬內(nèi)存的虛擬地址獲得所述虛擬內(nèi)存在所位于的物理服務(wù)器上的物理地址`。
【文檔編號(hào)】G06F3/06GK103823638SQ201410046060
【公開(kāi)日】2014年5月28日 申請(qǐng)日期:2014年2月8日 優(yōu)先權(quán)日:2014年2月8日
【發(fā)明者】王海波, 李利江, 盧自聰 申請(qǐng)人:華為技術(shù)有限公司