一種總線虛擬化的方法、裝置及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,具體涉及一種總線虛擬化的方法、裝置及系統(tǒng)。
【背景技術(shù)】
[0002] 現(xiàn)有技術(shù)中的多內(nèi)核操作系統(tǒng)是指在一個(gè)物理計(jì)算節(jié)點(diǎn)內(nèi)包含多個(gè)處理器內(nèi)核, 處理器內(nèi)核使用同一根全局?jǐn)?shù)據(jù)總線,也叫前端總線,前端總線通過主橋(hostbridge)或 者根復(fù)合體(RC,rootcomplex)的轉(zhuǎn)接可W連接到PCIE總線,于是,運(yùn)行于不同處理器內(nèi) 核的內(nèi)核代碼都可W通過一個(gè)配置寄存器對掃描連接在PCIE總線上的總線設(shè)備、對PCI總 線上的總線設(shè)備進(jìn)行訪問。一個(gè)配置寄存器對包括一個(gè)地址寄存器和一個(gè)數(shù)據(jù)寄存器。
[0003] 現(xiàn)有技術(shù)中,每個(gè)處理器內(nèi)核都可W通過一個(gè)配置寄存器對掃描總線和配置讀寫 總線設(shè)備。送樣;所有的處理器內(nèi)核只有一個(gè)配置寄存器對,多個(gè)處理器內(nèi)核對該配置寄存 器對進(jìn)行共享,送樣,地址寄存器和數(shù)據(jù)寄存器中的值就會出現(xiàn)混亂,導(dǎo)致正確性的問題。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明實(shí)施例提供一種總線虛擬化的方法,可W確保每個(gè)處理器內(nèi)核在訪問總線 設(shè)備時(shí),可W使用獨(dú)立的一個(gè)配置寄存器對,從而可W保證處理器內(nèi)核對總線設(shè)備訪問正 確性。本發(fā)明實(shí)施例還提供了相應(yīng)的裝置及系統(tǒng)。
[0005] 本發(fā)明第一方面提供一種總線虛擬化的方法,包括;所述總線的根復(fù)合體RC中包 括多個(gè)配置寄存器對,且每個(gè)配置寄存器對包括一個(gè)地址寄存器和一個(gè)數(shù)據(jù)寄存器;
[0006] 所述RC接收處理器內(nèi)核中的總線代理裝置發(fā)出的總線事務(wù)消息,所述總線事務(wù) 消息中包含本次總線事務(wù)的標(biāo)識,所述本次總線事務(wù)的標(biāo)識用于標(biāo)識發(fā)起所述本次總線事 務(wù)的所述處理器內(nèi)核;
[0007] 所述RC從所述多個(gè)配置寄存器對中,確定所述本次總線事務(wù)的標(biāo)識對應(yīng)的所述 處理器內(nèi)核應(yīng)使用的配置寄存器對,W便所述處理器內(nèi)核向確定的所述配置寄存器對的地 址寄存器中寫入要配置的地址信息,向確定的所述配置寄存器對的數(shù)據(jù)寄存器中讀寫要給 總線設(shè)備配置的數(shù)據(jù)。
[0008] 結(jié)合第一方面,在第一種可能的實(shí)現(xiàn)方式中,所述RC從所述多個(gè)配置寄存器對 中,確定所述本次總線事務(wù)的標(biāo)識對應(yīng)的所述處理器內(nèi)核應(yīng)使用的配置寄存器對,包括:
[0009] 所述RC根據(jù)所述本次總線事務(wù)的標(biāo)識,從總線事務(wù)標(biāo)識與配置寄存器對的關(guān)聯(lián) 關(guān)系中,確定與所述本次總線事務(wù)的標(biāo)識對應(yīng)的配置寄存器對,作為所述本次總線事務(wù)的 標(biāo)識對應(yīng)的所述處理器內(nèi)核應(yīng)使用的配置寄存器對。
[0010] 結(jié)合第一方面,在第二種可能的實(shí)現(xiàn)方式中,所述RC從所述多個(gè)配置寄存器對 中,確定所述本次總線事務(wù)的標(biāo)識對應(yīng)的所述處理器內(nèi)核應(yīng)使用的配置寄存器對,包括:
[0011] 所述RC從所述多個(gè)配置寄存器對中,確定狀態(tài)處于空閑態(tài)的配置寄存器對;
[0012] 從狀態(tài)處于空閑態(tài)的配置寄存器對中,選擇一個(gè)配置寄存器對,作為所述本次總 線事務(wù)的標(biāo)識對應(yīng)的所述處理器內(nèi)核應(yīng)使用的配置寄存器對。
[0013] 結(jié)合第一方面第二種可能的實(shí)現(xiàn)方式,在第H種可能的實(shí)現(xiàn)方式中,所述從狀態(tài) 處于空閑態(tài)的配置寄存器對中,選擇一個(gè)配置寄存器對,作為所述本次總線事務(wù)的標(biāo)識對 應(yīng)的所述處理器內(nèi)核應(yīng)使用的配置寄存器對之后,所述方法還包括:
[0014] 將選擇的所述一個(gè)配置寄存器對中記錄的總線事務(wù)標(biāo)識修改為所述本次總線事 務(wù)的標(biāo)識,將所述一個(gè)配置寄存器對的狀態(tài)修改為使用狀態(tài)。
[0015] 結(jié)合第一方面第二種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,當(dāng)確定狀態(tài) 處于空閑態(tài)的配置寄存器對時(shí),確定出所述多個(gè)配置寄存器對的狀態(tài)都處于使用狀態(tài),貝U 向所述處理器內(nèi)核發(fā)出異常報(bào)告。
[0016] 結(jié)合第一方面、第一方面第一種至第四種可能的實(shí)現(xiàn)方式中的任意一種,在第五 種可能的實(shí)現(xiàn)方式中,當(dāng)所述總線事務(wù)消息中還包含事務(wù)類型的索引信息時(shí),所述RC從所 述多個(gè)配置寄存器對中,確定所述本次總線事務(wù)的標(biāo)識對應(yīng)的所述處理器內(nèi)核應(yīng)使用的配 置寄存器對之后,所述方法還包括:
[0017] 根據(jù)所述事務(wù)類型的索引信息和設(shè)備訪問權(quán)限表,確定所述處理器內(nèi)核對所述事 務(wù)類型的索引信息所標(biāo)識的總線設(shè)備是否具有訪問權(quán)限,所述設(shè)備訪問權(quán)限表用于描述處 理器內(nèi)核對事務(wù)類型的索引信息所標(biāo)識的總線設(shè)備是否具有訪問權(quán)限;
[0018] 當(dāng)確定具有訪問權(quán)限時(shí),則允許所述處理器內(nèi)核訪問所述事務(wù)類型的索引信息所 標(biāo)識的總線設(shè)備。
[0019] 結(jié)合第一方面、第一方面第一種至第四種可能的實(shí)現(xiàn)方式中的任意一種,在第六 種可能的實(shí)現(xiàn)方式中,所述本次總線事務(wù)的標(biāo)識為單核中央處理器CPU的標(biāo)識、運(yùn)行于處 理器內(nèi)核上的負(fù)載操作系統(tǒng)的標(biāo)識或者是多個(gè)負(fù)載操作系統(tǒng)構(gòu)成的分區(qū)的區(qū)域標(biāo)識。
[0020] 本發(fā)明第二方面提供一種總線的根復(fù)合體RC裝置,包括:多個(gè)配置寄存器對,且 每個(gè)配置寄存器對包括一個(gè)地址寄存器和一個(gè)數(shù)據(jù)寄存器;
[0021] 接收單元,用于接收處理器內(nèi)核中的總線代理裝置發(fā)出的總線事務(wù)消息,所述總 線事務(wù)消息中包含本次總線事務(wù)的標(biāo)識,所述本次總線事務(wù)的標(biāo)識用于標(biāo)識發(fā)起所述本次 總線事務(wù)的所述處理器內(nèi)核;
[0022] 確定單元,用于從所述多個(gè)配置寄存器對中,確定所述接收單元接收的所述本次 總線事務(wù)的標(biāo)識對應(yīng)的所述處理器內(nèi)核應(yīng)使用的配置寄存器對,W便所述處理器內(nèi)核向確 定的所述配置寄存器對的地址寄存器中寫入要配置的地址信息,向確定的所述配置寄存器 對的數(shù)據(jù)寄存器中讀寫要給總線設(shè)備配置的數(shù)據(jù)。
[0023] 結(jié)合第二方面,在第一種可能的實(shí)現(xiàn)方式中,
[0024] 所述確定單元,用于根據(jù)所述本次總線事務(wù)的標(biāo)識,從總線事務(wù)標(biāo)識與配置寄存 器對的關(guān)聯(lián)關(guān)系中,確定與所述本次總線事務(wù)的標(biāo)識對應(yīng)的配置寄存器對,作為所述本次 總線事務(wù)的標(biāo)識對應(yīng)的所述處理器內(nèi)核應(yīng)使用的配置寄存器對。
[00巧]結(jié)合第二方面,在第二種可能的實(shí)現(xiàn)方式中,
[0026]所述確定單元,用于從所述多個(gè)配置寄存器對中,確定狀態(tài)處于空閑態(tài)的配置寄 存器對,從狀態(tài)處于空閑態(tài)的配置寄存器對中,選擇一個(gè)配置寄存器對,作為所述本次總線 事務(wù)的標(biāo)識對應(yīng)的所述處理器內(nèi)核應(yīng)使用的配置寄存器對。
[0027] 結(jié)合第二方面第二種可能的實(shí)現(xiàn)方式,在第H種可能的實(shí)現(xiàn)方式中,
[0028]所述確定單元,還用于將選擇的所述一個(gè)配置寄存器對中記錄的總線事務(wù)標(biāo)識修 改為所述本次總線事務(wù)的標(biāo)識,將所述一個(gè)配置寄存器對的狀態(tài)修改為使用狀態(tài)。
[0029] 結(jié)合第二方面第二種可能的實(shí)現(xiàn)方式,在第四種可能的實(shí)現(xiàn)方式中,所述裝置還 包括發(fā)送單元,
[0030] 所述發(fā)送單元,用于當(dāng)所述確定單元確定狀態(tài)處于空閑態(tài)的配置寄存器對時(shí),確 定出所述多個(gè)配置寄存器對的狀態(tài)都處于使用狀態(tài),則向所述處理器內(nèi)核發(fā)出異常報(bào)告。
[0031] 結(jié)合第二方面、第二方面第一種至第四種可能的實(shí)現(xiàn)方式中的任意一種,在第五 種可能的實(shí)現(xiàn)方式中,當(dāng)所述總線事務(wù)消息中還包含事務(wù)類型的索引信息時(shí),
[0032] 所述確定單元,還用于根據(jù)所述事務(wù)類型的索引信息和設(shè)備訪問權(quán)限表,確定所 述處理器內(nèi)核對所述事務(wù)類型的索引信息所標(biāo)識的總線設(shè)備是否具有訪問權(quán)限,所述設(shè)備 訪問權(quán)限表用于描述處理器內(nèi)核對事務(wù)類型的索引信息所標(biāo)識的總線設(shè)備是否具有訪問 權(quán)限;
[0033] 所述裝置還包括:
[0034] 權(quán)限驗(yàn)證單元,用于當(dāng)所述確定單元確定具有訪問權(quán)限時(shí),則允許所述處理器內(nèi) 核訪問所述事務(wù)類型的索引信息所標(biāo)識的總線設(shè)備。
[0035] 本發(fā)明第H方面提供一種總線虛擬化的系統(tǒng),包括:多個(gè)處理器內(nèi)核、總線的根復(fù) 合體RC和總線設(shè)備,所述每個(gè)處理器內(nèi)核中都包含一個(gè)總線代理裝置,所述總線的根復(fù)合 體RC中包括多個(gè)配置寄存器對,且每個(gè)配置寄存器對包括一個(gè)地址寄存器和一個(gè)數(shù)據(jù)寄 存器;
[0036] 所述RC接收處理器內(nèi)核中的總線代理裝置發(fā)出的總線事務(wù)消息,所述總線事務(wù) 消息中包含本次總線事務(wù)的標(biāo)識,所述本次總線事務(wù)的標(biāo)識用于標(biāo)識發(fā)起所述本次總線事 務(wù)的所述處理器內(nèi)核;
[0037] 所述RC從所述多個(gè)配置寄存器對中,確定所述本次總線事務(wù)的標(biāo)識對應(yīng)的所述 處理器內(nèi)核應(yīng)使用的配置寄存器對,W便所述處理器內(nèi)核向確定的所述配置寄存器對的地 址寄存器中寫入要配置的地址信息,向確定的所述配置寄存器對的數(shù)據(jù)寄存器中讀寫要給 總線設(shè)備配置的數(shù)據(jù)。
[0038] 本發(fā)明實(shí)施例提供的總線虛擬化的方法中,所述總線的根復(fù)合體RC中包括多個(gè) 配置寄存器對,且每個(gè)配置寄存器對包括一個(gè)地址寄存器和一個(gè)數(shù)據(jù)寄存器;所述RC接收 處理器內(nèi)核中的總線代理裝置發(fā)出的總線事務(wù)消息,所述總線事務(wù)消息中包含本次總線事 務(wù)的標(biāo)識,所述本次總線事務(wù)的標(biāo)識用于標(biāo)識發(fā)起所述本次總線事務(wù)的所述處理器內(nèi)核; 所述RC從所述多個(gè)配置寄存器對中,確定所述本次總線事務(wù)的標(biāo)識對應(yīng)