具有PCIe接口的裝置共享系統(tǒng)及方法
【專利摘要】一種具有PCIe接口的裝置共享系統(tǒng),運行于請求服務(wù)器與提供PCIe接口裝置為待共享裝置的共享服務(wù)器中,包括:共享驅(qū)動獲取請求服務(wù)器中虛擬機(jī)對待共享裝置的訪問,共享管理根據(jù)該訪問將待共享裝置的型號及待共享裝置的PCIe的基址寄存器的內(nèi)存地址回傳給共享代理。所述共享驅(qū)動在虛擬機(jī)的指定存儲空間建立第一窗口以映射到待共享裝置的PCIe的基址寄存器內(nèi)存。所述共享管理在共享服務(wù)器的存儲裝置中建立第二窗口以映射到虛擬機(jī)中的指定存儲空間中。本發(fā)明還提供一種具有PCIe接口的裝置共享方法。利用本發(fā)明可實現(xiàn)多個服務(wù)器之間的具有PCIe接口的裝置共享。
【專利說明】具有PCIe接口的裝置共享系統(tǒng)及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及硬件共享技術(shù),尤其涉及一種具有快速外設(shè)組件互連標(biāo)準(zhǔn)PCIe接口的裝置共享系統(tǒng)及方法。
【背景技術(shù)】
[0002]輸入輸出設(shè)備可以被用于在多個裝置之間進(jìn)行共享,然而,在一個裝置需要共享其他裝置的輸入輸出設(shè)備時,往往需要修改該裝置本地端的相應(yīng)的驅(qū)動程序。例如,以網(wǎng)卡為例,一個服務(wù)器想使用其他服務(wù)器上的網(wǎng)卡實現(xiàn)數(shù)據(jù)傳輸時,需要使用特定的驅(qū)動程序,必然導(dǎo)致需要對本地端的網(wǎng)卡驅(qū)動程序進(jìn)行修改才能實現(xiàn)對不同類型的網(wǎng)卡的調(diào)用,并最終實現(xiàn)具有PCIe接口的裝置共享,如此,必然導(dǎo)致網(wǎng)卡的使用效率低下?;蛘?,若是該服務(wù)器不對本地端的網(wǎng)卡驅(qū)動程序進(jìn)行修改,那么,則必然僅能使用與該網(wǎng)卡驅(qū)動程序相對應(yīng)的網(wǎng)卡,則必然使得能調(diào)用的網(wǎng)卡類型受到很大的限制,從而影響網(wǎng)卡在多個裝置之間的共享。
【發(fā)明內(nèi)容】
[0003]鑒于以上內(nèi)容,有必要提供一種具有PCIe接口的裝置共享系統(tǒng)及方法,可實現(xiàn)在多個裝置之間進(jìn)行網(wǎng)卡的共享。
[0004]一種具有快速外設(shè)組件互連標(biāo)準(zhǔn)PCIe接口的裝置共享系統(tǒng),運行于多個服務(wù)器中,至少一個請求服務(wù)器與另一個共享服務(wù)器相連接,所述共享服務(wù)器提供具有PCIe接口的裝置并將所述具有PCIe接口的裝置作為待共享裝置,該系統(tǒng)包括共享驅(qū)動、共享代理以及共享管理,其中:所述的共享驅(qū)動,用于獲取所述請求服務(wù)器中的虛擬機(jī)對所述共享服務(wù)器的待共享裝置的PCIe的配置空間的訪問以獲取所述待共享裝置的型號,并將該訪問傳給所述的共享代理;所述的共享代理,用于將該訪問傳送給所述共享服務(wù)器中的共享管理;所述共享管理,用于接收該訪問,將該待共享裝置的型號以及將該待共享裝置的PCIe的基址寄存器BAR的內(nèi)存地址回傳給所述共享代理;所述共享代理,還用于將該待共享裝置的型號反饋給所述虛擬機(jī),所述虛擬機(jī)根據(jù)該待共享裝置的型號確定相對應(yīng)該待共享裝置的驅(qū)動程序;所述共享驅(qū)動,還用于在所述虛擬機(jī)的指定存儲空間中建立第一窗口,根據(jù)該待共享裝置的PCIe的基址寄存器的內(nèi)存地址將該第一窗口映射到該待共享裝置的PCIe的基址寄存器內(nèi)存;及所述共享管理,還用于在所述共享服務(wù)器的存儲裝置中建立第二窗口,將該第二窗口映射到所述虛擬機(jī)中的指定存儲空間中。
[0005]一種具有快速外設(shè)組件互連標(biāo)準(zhǔn)PCIe接口的裝置共享方法執(zhí)行的具有PCIe接口的裝置共享方法,運行于多個服務(wù)器中,至少一個請求服務(wù)器與另一個共享服務(wù)器相連接,所述共享服務(wù)器提供具有PCIe接口的裝置并將所述具有PCIe接口的裝置作為待共享裝置,該方法包括如下步驟:共享驅(qū)動獲取所述請求服務(wù)器中的虛擬機(jī)對所述共享服務(wù)器的待共享裝置的PCIe的配置空間的訪問以獲取所述待共享裝置的型號,并將該訪問傳給所述的共享代理;共享代理將該訪問傳送給所述共享服務(wù)器中的共享管理;所述共享管理接收該訪問,將該待共享裝置的型號以及將該待共享裝置的PCIe的基址寄存器BAR的內(nèi)存地址回傳給所述共享代理;所述共享代理將該待共享裝置的型號反饋給所述虛擬機(jī),所述虛擬機(jī)根據(jù)該待共享裝置的型號確定相對應(yīng)該待共享裝置的驅(qū)動程序;所述共享驅(qū)動在所述虛擬機(jī)的指定存儲空間中建立第一窗口,根據(jù)該待共享裝置的PCIe的基址寄存器的內(nèi)存地址將該第一窗口映射到該待共享裝置的PCIe的基址寄存器內(nèi)存;及所述共享管理在所述共享服務(wù)器的存儲裝置中建立第二窗口,將該第二窗口映射到所述虛擬機(jī)中的指定存儲空間中。
[0006]相較于現(xiàn)有技術(shù),所述的具有快速外設(shè)組件互連標(biāo)準(zhǔn)接口的裝置共享系統(tǒng)及方法,可實現(xiàn)在多個裝置之間進(jìn)行網(wǎng)卡的共享,并且無需修改相應(yīng)的網(wǎng)卡驅(qū)動程序。
【專利附圖】
【附圖說明】
[0007]圖1是本發(fā)明具有PCIe接口的裝置共享系統(tǒng)的較佳實施方式的應(yīng)用環(huán)境圖。
[0008]圖2是本發(fā)明具有PCIe接口的裝置共享系統(tǒng)的較佳實施方式的功能模塊圖。
[0009]圖3是本發(fā)明具有PCIe接口的裝置共享方法的較佳實施方式的流程圖。
[0010]主要元件符號說明
【權(quán)利要求】
1.一種具有快速外設(shè)組件互連標(biāo)準(zhǔn)PCIe接口的裝置共享系統(tǒng),運行于多個服務(wù)器中,其特征在于,至少一個請求服務(wù)器與另一個共享服務(wù)器相連接,所述共享服務(wù)器提供具有PCIe接口的裝置并將所述具有PCIe接口的裝置作為待共享裝置,該系統(tǒng)包括共享驅(qū)動、共享代理以及共享管理,其中: 所述的共享驅(qū)動,用于獲取所述請求服務(wù)器中的虛擬機(jī)對所述共享服務(wù)器的待共享裝置的PCIe的配置空間的訪問以獲取所述待共享裝置的型號,并將該訪問傳給所述的共享代理; 所述的共享代理,用于將該訪問傳送給所述共享服務(wù)器中的共享管理; 所述共享管理,用于接收該訪問,將該待共享裝置的型號以及將該待共享裝置的PCIe的基址寄存器BAR的內(nèi)存地址回傳給所述共享代理; 所述共享代理,還用于將該待共享裝置的型號反饋給所述虛擬機(jī),所述虛擬機(jī)根據(jù)該待共享裝置的型號確定相對應(yīng)該待共享裝置的驅(qū)動程序; 所述共享驅(qū)動,還用于在所述虛擬機(jī)的指定存儲空間中建立第一窗口,根據(jù)該待共享裝置的PCIe的基址寄存器的內(nèi)存地址將該第一窗口映射到該待共享裝置的PCIe的基址寄存器內(nèi)存;及 所述共享管理,還用于在所述共享服務(wù)器的存儲裝置中建立第二窗口,將該第二窗口映射到所述虛擬機(jī)中的指定存儲空間中。
2.如權(quán)利要求1所述的具有快速外設(shè)組件互連標(biāo)準(zhǔn)PCIe接口的裝置共享系統(tǒng),其特征在于,所述的共享代理還用于在偵測到所述虛擬機(jī)利用所述第一窗口執(zhí)行存取動作時,將該存取所述虛擬機(jī)的指定存儲空間的指令轉(zhuǎn)換為存取所述共享服務(wù)器中該待共享裝置的基址寄存器的內(nèi)存的指令,并執(zhí)行轉(zhuǎn)換后的指令。`
3.如權(quán)利要求1所述的具有快速外設(shè)組件互連標(biāo)準(zhǔn)PCIe接口的裝置共享系統(tǒng),其特征在于,所述的共享管理還用于設(shè)置所述共享服務(wù)器及請求服務(wù)器上的輸入/輸出內(nèi)存管理單元IOMMU對于該待共享裝置的直接內(nèi)存操作DMA指令進(jìn)行地址轉(zhuǎn)換。
4.如權(quán)利要求3所述的具有快速外設(shè)組件互連標(biāo)準(zhǔn)PCIe接口的裝置共享系統(tǒng),其特征在于,所述的共享管理還用于: 在偵測到該待共享裝置需對所述請求服務(wù)器的虛擬機(jī)的存儲裝置進(jìn)行存取時,利用所述共享服務(wù)器上的IOMMU將該待共享裝置所發(fā)出的DMA指令轉(zhuǎn)換成存取第二窗口的DMA指令;及 利用請求服務(wù)器上的IOMMU將所述存取第二窗口的DMA指令轉(zhuǎn)換為存取所述請求服務(wù)器中的虛擬機(jī)的指定存儲空間的指令,并執(zhí)行轉(zhuǎn)換后的指令。
5.如權(quán)利要求1所述的具有快速外設(shè)組件互連標(biāo)準(zhǔn)PCIe接口的裝置共享系統(tǒng),其特征在于,所述第一、第二窗口的建立是利用PCIe的非透明橋接NTB進(jìn)行的,以及所述第一、第二窗口的映射是利用IOMMU進(jìn)行的。
6.一種利用如權(quán)利要求1所述的具有快速外設(shè)組件互連標(biāo)準(zhǔn)PCIe接口的裝置共享系統(tǒng)執(zhí)行的具有PCIe接口的裝置共享方法,運行于多個服務(wù)器中,其特征在于,至少一個請求服務(wù)器與另一個共享服務(wù)器相連接,所述共享服務(wù)器提供具有PCIe接口的裝置并將所述具有PCIe接口的裝置作為待共享裝置,該方法包括如下步驟: 共享驅(qū)動獲取所述請求服務(wù)器中的虛擬機(jī)對所述共享服務(wù)器的待共享裝置的PCIe的配置空間的訪問以獲取所述待共享裝置的型號,并將該訪問傳給所述的共享代理; 共享代理將該訪問傳送給所述共享服務(wù)器中的共享管理; 所述共享管理接收該訪問,將該待共享裝置的型號以及將該待共享裝置的PCIe的基址寄存器BAR的內(nèi)存地址回傳給所述共享代理; 所述共享代理將該待共享裝置的型號反饋給所述虛擬機(jī),所述虛擬機(jī)根據(jù)該待共享裝置的型號確定相對應(yīng)該待共享裝置的驅(qū)動程序; 所述共享驅(qū)動在所述虛擬機(jī)的指定存儲空間中建立第一窗口,根據(jù)該待共享裝置的PCIe的基址寄存器的內(nèi)存地址將該第一窗口映射到該待共享裝置的PCIe的基址寄存器內(nèi)存 '及 所述共享管理在所述共享服務(wù)器的存儲裝置中建立第二窗口,將該第二窗口映射到所述虛擬機(jī)中的指定存儲空間中。
7.如權(quán)利要求6所述的具有快速外設(shè)組件互連標(biāo)準(zhǔn)PCIe接口的裝置共享方法,其特征在于,該方法還包括: 共享代理在偵測到所述虛擬機(jī)利用所述第一窗口執(zhí)行存取動作時,將該存取所述虛擬機(jī)的指定存儲空間的指令轉(zhuǎn)換為存取所述共享服務(wù)器中該待共享裝置的基址寄存器的內(nèi)存的指令,并執(zhí)行轉(zhuǎn)換后的指令。
8.如權(quán)利要求6所述的具有快速外設(shè)組件互連標(biāo)準(zhǔn)PCIe接口的裝置共享方法,其特征在于,該方法還包括: 設(shè)置所述共享服務(wù)器及請求服務(wù)器上的IOMMU對于該待共享裝置的DMA指令進(jìn)行地址轉(zhuǎn)換。
9.如權(quán)利要求8所`述的具有快速外設(shè)組件互連標(biāo)準(zhǔn)PCIe接口的裝置共享方法,其特征在于,該方法還包括: 在偵測到該待共享裝置需對所述請求服務(wù)器的虛擬機(jī)的存儲裝置進(jìn)行存取時,利用所述共享服務(wù)器上的IOMMU將該待共享裝置所發(fā)出的直接內(nèi)存操作DMA指令轉(zhuǎn)換成存取第二窗口的DMA指令;及 利用請求服務(wù)器上的IOMMU將所述存取第二窗口的DMA指令轉(zhuǎn)換為存取所述請求服務(wù)器中的虛擬機(jī)的指定存儲空間的指令,并執(zhí)行轉(zhuǎn)換后的指令。
10.如權(quán)利要求6所述的具有快速外設(shè)組件互連標(biāo)準(zhǔn)PCIe接口的裝置共享方法,其特征在于,當(dāng)所述共享服務(wù)器包括多個待共享裝置時,該方法還包括: 所述的共享管理分配所述共享服務(wù)器中的待共享裝置給所述虛擬機(jī)。
【文檔編號】H04L29/08GK103873489SQ201210525640
【公開日】2014年6月18日 申請日期:2012年12月10日 優(yōu)先權(quán)日:2012年12月10日
【發(fā)明者】楊佳儒 申請人:鴻富錦精密工業(yè)(深圳)有限公司, 鴻海精密工業(yè)股份有限公司