專利名稱:遷移虛擬端點(diǎn)的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本申請一般涉及改進(jìn)的數(shù)據(jù)處理系統(tǒng)和方法。更具體地,本申 請涉及用于將虛擬端點(diǎn)從一個虛擬平面遷移到另一個虛擬平面的機(jī)制。
背景技術(shù):
大部分現(xiàn)代計算設(shè)備利用使用外圍組件互連標(biāo)準(zhǔn)的某個版本或
實(shí)現(xiàn)的總線和輸入/輸出u/o)適配器,其中外圍組件互連標(biāo)準(zhǔn)最初
由英特爾公司在20世紀(jì)90年代建立。外圍組件互連(PCI)標(biāo)準(zhǔn)規(guī) 定了用于將外圍組件附接到計算機(jī)主板的計算機(jī)總線。PCT Express 或PCIe是使用現(xiàn)有PCI編程概念的PCI計算機(jī)總線的實(shí)現(xiàn),但是該 實(shí)現(xiàn)是基于完全不同且更快的串行物理層通信協(xié)議的計算機(jī)總線。 物理層不包括可以在多個設(shè)備之間共享的雙向總線,而是包括嚴(yán)格 地連接到兩個設(shè)備的單一單向鏈路。
圖1是示出了根據(jù)PCIe規(guī)范的PCI Express ( PCIe )架構(gòu)拓樸的 示意圖。如圖1所示,PCIe架構(gòu)拓樸100包括耦合到根聯(lián)合體130 的主處理器(CPU) 100和存儲器120,根聯(lián)合體130接著耦合到一 個或多個PCIe端點(diǎn)140 (在PCIe規(guī)范中使用術(shù)語"端點(diǎn)"來表示支 持PCIe的I/O適配器)、PCIExpress-PCI橋150以及一個或多個互 連交換機(jī)160。根聯(lián)合體130表示將CPU/存儲器連接到I/O適配器 的1/0層級的根。根聯(lián)合體130包括主橋、集成了零個或多個根聯(lián)合 體的端點(diǎn)、零個或多個根聯(lián)合體事件收集器、以及一個或多個根端 口 。每個根端口支持單獨(dú)的1/0層級。I/0層級可以包括根聯(lián)合體130、 零個或多個互連交換機(jī)160和/或橋150(其包含交換或PCIe架構(gòu))、 以及一個或者多個諸如端點(diǎn)170和182-188的端點(diǎn)。關(guān)于PCI和PCIe
的更多信息,參見在外圍組件互連特殊興趣組(PCI-SIG)的網(wǎng)站www.pcisig.com上可獲4尋的PCI和PCIe規(guī)范。
今天,將PCI和PCIe I/O適配器、總線等集成到包括刀片服務(wù) 器的刀片的幾乎每一個計算設(shè)備的主板上。刀片服務(wù)器本質(zhì)上是用 于大量的單獨(dú)的最小封裝的計算機(jī)主板"刀片"的殼體,每個刀片 包括一個或多個處理器、計算機(jī)存儲器、計算機(jī)存儲設(shè)備和計算機(jī) 網(wǎng)絡(luò)連接,但共享機(jī)箱的公共電源和空氣冷卻資源。刀片服務(wù)器對 于諸如Web主控和集群計算的特定用途是理想的。
如前所述,通常將PCI和PCIel/0適配器集成到刀片自身之中。 結(jié)果,在相同刀片服務(wù)器的刀片之間無法共享1/0適配器。而且,I/O 適配器的集成限制了鏈路速率的可擴(kuò)展性。即,隨著時間的過去, 鏈路速率無法隨著處理器性能而擴(kuò)展。到目前為止,還沒有設(shè)計出 一種機(jī)制以允許由多個系統(tǒng)鏡像跨過多個刀片而共享PCI和PCIe 1/0適配器。而且,還沒有設(shè)計出一種機(jī)制以允許以非集成的方式來 提供PCI和PCIe I/O適配器,以供刀片服務(wù)器中的多個刀片使用。
發(fā)明內(nèi)容
為了解決由于當(dāng)前PCI和PCIe I/O適配器集成的限制,說明性 的實(shí)施方式提供了一種機(jī)制,其允許由兩個或更多的系統(tǒng)鏡像(SI) 本地地共享PCIe適配器。例如,提供一種機(jī)制,用于使在相同根聯(lián) 合體內(nèi)或跨過多個根聯(lián)合體(RC)的多個SI能夠同時共享例如PCIe I/O適配器的端點(diǎn),其中所述多個根聯(lián)合體(RC)共享(即,耦合 到)公共PCI交換架構(gòu)。該機(jī)制允許每個根聯(lián)合體及其相關(guān)聯(lián)的物 理和/或虛擬端點(diǎn)(VEP)具有其自身唯一的PCI存儲器地址空間。
此外,在基本的PCI規(guī)范中缺少但對于管瑝由端點(diǎn)的共享而產(chǎn) 生的聯(lián)合體配置所需要的是用于確定和管理在端點(diǎn)中的可能的PCI 功能的組合的必要性。因此,此處說明性的實(shí)施方式提供了用于在 刀片服務(wù)器中的第一刀片的一個根聯(lián)合體與在相同或不同刀片服務(wù) 器中的第二刀片的第二根聯(lián)合體進(jìn)行通信的機(jī)制。該說明性的實(shí)施方式通過提供一種機(jī)制來支持這種通信,該機(jī)制用以初始化在用于 支持這種通信的多根刀片集群的根聯(lián)合體和端點(diǎn)之間的共享存儲 器。
在一個說明性的實(shí)施方式中,多根PCIe配置管理器(MR-PCIM) 通過發(fā)現(xiàn)PCIe交換架構(gòu)(即,PCIe層級)以及通過遍歷所有經(jīng)由 PCIe交換架構(gòu)的互連的交換機(jī)可訪問的所有鏈路,來初始化在根聯(lián) 合體和端點(diǎn)之間的共享存儲器。因?yàn)楸闅v了鏈路,MR-PCIM比較針 對根聯(lián)合體和端點(diǎn)的每個而獲得的信息,以確定哪個端點(diǎn)和根聯(lián)合 體位于相同刀片上。然后,生成虛擬PCIe樹數(shù)據(jù)結(jié)構(gòu),該虛擬PCIe 樹數(shù)據(jù)結(jié)構(gòu)將在PCIe交換架構(gòu)上可用的端點(diǎn)綁定到每個根聯(lián)合體。 作為相同PCI樹的部分(即,關(guān)聯(lián)于同一根聯(lián)合體)的端點(diǎn)在虛擬 PCIe樹數(shù)據(jù)結(jié)構(gòu)中是相關(guān)聯(lián)的。
然后,MR-PCIM在端點(diǎn)所屬的PCIe存儲器地址空間內(nèi)對于每 個端點(diǎn)給出一個基(base)和界限。類似地,然后,MR-PCIM在根 聯(lián)合體所屬的PCIe存儲器地址空間內(nèi)對于每個根聯(lián)合體給出 一 個基 和界限。為了在各種端點(diǎn)和根聯(lián)合體的PCIe存儲器地址空間之間的 映射,可以生成存儲器轉(zhuǎn)換和保護(hù)表數(shù)據(jù)結(jié)構(gòu)。
例如,對于特定的端點(diǎn)或根聯(lián)合體,該端點(diǎn)或根聯(lián)合體可以與 第一主機(jī)的實(shí)際存儲器地址空間相關(guān)聯(lián)。通過第二主機(jī),經(jīng)由第二 主存儲器上的PCIe孔徑(aperture),可以訪問相同的端點(diǎn)或根聯(lián)合 體,其中該第二主存儲器作為直接存儲器訪問I/O,通過第一主機(jī)的 PCI總線存儲器地址是可訪問的。第 一主機(jī)可以使用存儲器轉(zhuǎn)換和保 護(hù)表數(shù)據(jù)結(jié)構(gòu)以將由第二主機(jī)看到的PCIe存儲器地址映射到第 一主 機(jī)的實(shí)際存儲器地址。
在另一個說明性的實(shí)施方式中,已經(jīng)初始化了主機(jī)系統(tǒng)的存儲 器地址空間,使得可以跨過主機(jī)系統(tǒng)由根聯(lián)合體訪問端點(diǎn),然后, 可使用這些存儲器地址空間以允許與這些根聯(lián)合體相關(guān)聯(lián)的系統(tǒng)鏡 像和它們對應(yīng)的應(yīng)用來與端點(diǎn)進(jìn)行通信。
支持這種通信的 一 種方式是通過隊列系統(tǒng),其中隊列系統(tǒng)利用
在不同主機(jī)系統(tǒng)中的這些經(jīng)初始化的存儲器地址空間。這種隊列系 統(tǒng)可包括工作隊列結(jié)構(gòu)和完成隊列結(jié)構(gòu)。工作隊列結(jié)構(gòu)和完成隊列
結(jié)構(gòu)二者可包括用于識別大量隊列單元(工作隊列單元(WQE) 或者完成隊列單元(CQE),這依賴于該隊列結(jié)構(gòu)是工作隊列結(jié)構(gòu) 還是完成隊列結(jié)構(gòu))的門鈴結(jié)構(gòu)、用于隊列的起始的基地址、用于 隊列的末尾的界限地址和指示在隊列中將要被處理的下一個WQE 或CQE的偏移量??梢允褂霉ぷ麝犃薪Y(jié)構(gòu)和完成隊列結(jié)構(gòu)二者來發(fā) 送和接收數(shù)據(jù)。
可在對應(yīng)于將與其進(jìn)行通信的根聯(lián)合體和端點(diǎn)的主機(jī)系統(tǒng)存儲 器的部分中提供隊列結(jié)構(gòu)和門鈴結(jié)構(gòu)??梢陨申犃袉卧?,并將所 述隊列單元添加到隊列結(jié)構(gòu)中,以及可以寫入門鈴結(jié)構(gòu),以1更由此 就隊列單元可用于處理而通知端點(diǎn)或根聯(lián)合體??梢詧?zhí)行PCIe DMA 才喿作,以取回隊列單元以及對應(yīng)于該隊列單元的數(shù)據(jù)。而且,可以 執(zhí)行PCIeDMA操作,以返回完成隊列單元(CQE),來指示對隊 列單元的處理的完成。
根據(jù)示例性的一個實(shí)施方式,可建立一種面向事務(wù)的協(xié)議,用 于使用說明性的實(shí)施方式的共享存儲器來在相同或不同的主機(jī)系統(tǒng) 的根聯(lián)合體和端點(diǎn)之間進(jìn)行通信。該面向事務(wù)的協(xié)議規(guī)定了將由例 如根聯(lián)合體或端點(diǎn)的各種單元執(zhí)行的 一 系列事務(wù),用以推送或拉回 (push or pull)數(shù)據(jù)。在不脫離本發(fā)明的精神和范圍的情況下,可利 用多種推送和拉回事務(wù)的組合。之后,在詳細(xì)說明中將更詳細(xì)地描 述各種組合。
此外,說明性的實(shí)施方式的機(jī)制可進(jìn)一步用于支持在相同或不 同主機(jī)系統(tǒng)的根聯(lián)合體和端點(diǎn)之間通過上述的共享存儲器而進(jìn)行的 基于套接字協(xié)議的通信。利用這種基于套接字的通信,可使用在主 機(jī)系統(tǒng)中的工作隊列以偵聽輸入的套接字初始化請求。即,希望與 第二主機(jī)系統(tǒng)建立套接字通信連接的第一主機(jī)系統(tǒng)可在其工作隊列 中生成套接字初始化請求WQE,并可以向該第二主機(jī)系統(tǒng)通知該套 接字初始化請求WQE對處理可用。
然后,第二主機(jī)系統(tǒng)可接受或拒絕該請求。如果第二主機(jī)系統(tǒng) 接受該請求,則其返回套接字參數(shù)的后半個用于由第 一 主機(jī)系統(tǒng)執(zhí) 行在第 一和第二主機(jī)系統(tǒng)之間的基于套接字的通信中使用。這些參 數(shù)可以規(guī)定隊列結(jié)構(gòu)中將要與套接字相關(guān)聯(lián)的部分以及門鈴結(jié)構(gòu), 門鈴結(jié)構(gòu)用于通知主機(jī)系統(tǒng)何時可獲得隊列單元用于經(jīng)由套接字進(jìn) 行處理。實(shí)際的套接字通信可能涉及例如在主機(jī)系統(tǒng)之間拉回事務(wù) 和/或推送事務(wù)。
在根聯(lián)合體之間的資源的本地共享創(chuàng)建了在PCIe架構(gòu)中的實(shí)體 和主機(jī)系統(tǒng)之間的關(guān)系,其可被利用以提供在系統(tǒng)鏡像之間和/或端 點(diǎn)之間遷移功能及其相關(guān)聯(lián)的應(yīng)用的機(jī)制。需要該遷移功能性,以 滿足在系統(tǒng)管理領(lǐng)域中對負(fù)載均衡能力的不斷增長的需要。當(dāng)前在 PCIe規(guī)范中缺少這種機(jī)制。
在一個說明性的實(shí)施方式中,單根PCI配置管理器(SR-PCIM) 提供了具有由端點(diǎn)(EP)支持的可能的虛擬功能(VF)遷移場景的 系統(tǒng)鏡像。執(zhí)行管理任務(wù)的系統(tǒng)管理員或軟件應(yīng)用(例如,負(fù)載均 衡應(yīng)用)可以執(zhí)行命令,該命令向單根PCI管理器(SR-PCIM)指 示需要進(jìn)行從一個SI到另一個的對VF和與該VF相關(guān)聯(lián)的應(yīng)用的 無狀態(tài)遷移。通過遷移該VF及其相關(guān)聯(lián)的應(yīng)用(其是依賴于VF而 操作的應(yīng)用),可補(bǔ)充不同的資源,以在更有效的環(huán)境中繼續(xù)操作。 例如,利用負(fù)載均衡,可以使用所述說明性的實(shí)施方式的機(jī)制來移 動以太網(wǎng)VF及其相關(guān)聯(lián)的依賴的應(yīng)用,以便利用在不同物理功能 (PF)上可用的較快的連接(較少擁塞)的優(yōu)勢,該物理功能(PF) 可以與不同的si或甚至EP關(guān)聯(lián)在一起。
運(yùn)行在主機(jī)系統(tǒng)上的軟件中介(SWI)或虛擬化中介指示SI來 完成對VF的未完成的請求,并且接下來,啟動所需的任何進(jìn)程以將 其停止。 一旦由SI向該SWI通知了已經(jīng)完成了對VF的所有請求, 則SWI可以將與VF相關(guān)聯(lián)的任何應(yīng)用從SI移除,并將VF從相關(guān) 聯(lián)的物理功能(PF)中分離。
然后,SWI可以將VF附加到目標(biāo)PF,該P(yáng)F可以在相同或不同的EP中。而且,目標(biāo)PF可以與不同的SI相關(guān)聯(lián)。SWI使VF對于 現(xiàn)在與該VF相關(guān)聯(lián)的SI可用,并指令SI來配置VF。 SI配置VF, 由此使其對于相關(guān)聯(lián)的應(yīng)用可用。然后,SWI可以指令SI來啟動相 關(guān)聯(lián)的應(yīng)用,從而它們可以在新遷移的VF上使用該資源。
如此后所述,利用說明性的實(shí)施方式的機(jī)制,相同根聯(lián)合體內(nèi) 或跨過共享共同PCIe架構(gòu)的多個根聯(lián)合體的多個系統(tǒng)鏡像可以同時 共享端點(diǎn)。每個根聯(lián)合體及其相關(guān)聯(lián)的虛擬端點(diǎn)(VE)被給予其自 己唯一的存儲器地址空間。例如,如果刀片機(jī)箱具有兩個處理器刀片,其中一個處理器刀片具有第一根聯(lián)合體RC1,而另一個處理器 刀片具有第二根聯(lián)合體RC2,且PCIe MRA交換機(jī)將RC1和RC2連 4妻到可以支持兩個VE (即VE1和VE2)的單個端點(diǎn)上,則上述^/L 制將RC1和VE1放置在其自己的PCIe存儲器地址空間中,該存儲 器地址空間對RC1和VC1是唯一的,且對RC2和VE2是不可見的。 類似地,說明性的實(shí)施方式的上述機(jī)制將RC2和VE2放置在其自己 的PCIe存儲器空間地址中,該存儲器空間地址對RC2和VE2是唯 一的,且對RC1和VE1是不可見的。
層級中。RC可以定義多個虛擬平面,VE中的功能^皮分配給這些虛 擬平面。由此,可能出現(xiàn)VE需要從一個虛擬平面移動到另一個虛擬 平面的情況。除上述各種機(jī)制外,說明性的實(shí)施方式還提供了用于 將VE從一個虛擬平面移動到另 一個虛擬平面的機(jī)制。
說明性的實(shí)施方式的機(jī)制還包括提供了第一虛擬平面(即"平 面A")中的源虛擬功能向第二虛擬平面(即"平面B")中的目 的地虛擬功能的遷移。用于將虛擬功能從一個虛擬平面遷移到另一 個虛擬平面的機(jī)制可以與多根PCIe架構(gòu)中其它虛擬資源的管理協(xié)調(diào) 使用,例如,與相關(guān)聯(lián)的系統(tǒng)鏡像跨過根聯(lián)合體的遷移協(xié)調(diào)使用。
利用說明性的實(shí)施方式的機(jī)制,當(dāng)執(zhí)行源虛擬功能向另 一 個虛 擬平面中的目的地虛擬功能的遷移時,首先由MR-RCIM (其已經(jīng)被 管理應(yīng)用指示)中斷源SR-PCIM,以將狀態(tài)改變?yōu)獒槍ζ矫鍭中源虛擬功能的"源遷移",并停止處理事務(wù)。按照這種方式,用于虛 擬功能的事務(wù)被靜默。然后,服務(wù)與虛擬功能相關(guān)聯(lián)的所有"未完 成"事務(wù)。
然后針對該無狀態(tài)遷移在目的地虛擬功能上對定義了源虛擬功 能的配置信息進(jìn)行重定義。然而,可以封裝和移動與應(yīng)用相關(guān)聯(lián)的 更高層級的狀態(tài),以用于與目的地虛擬功能的關(guān)聯(lián)。然后,可以在 源虛擬功能上執(zhí)行功能層級的重置。
MR-PCIM可以利用針對平面B中目的地虛擬功能的"目的地遷 移"中斷來將目的地SR-PCIM中斷。然后,可以在目的地虛擬功能 上執(zhí)行功能層級的重置。然后,可以將目的地虛擬功能的狀態(tài)改為 "活動"狀態(tài),使得被遷移的虛擬功能開始處理事務(wù)。
在一個說明性的實(shí)施方式中,提供了一種用于將虛擬端點(diǎn)從數(shù) 據(jù)處理系統(tǒng)的第 一虛擬平面遷移到第二虛擬平面的方法。該方法可 以包括接收將與第一虛擬平面相關(guān)聯(lián)的第一虛擬端點(diǎn)從第一虛擬平 面遷移到第二虛擬平面的遷移請求。該方法還可以包括靜默與 一個 或多個第一虛擬功能相關(guān)聯(lián)的請求,其中該第一虛擬功能與第一虛 擬平面相關(guān)聯(lián)。而且,該方法可以包括配置與第二虛擬平面相關(guān)聯(lián) 的第二虛擬端點(diǎn),以使其如第一虛擬端點(diǎn)那樣操作,并配置通信架 構(gòu),以使其將指向第一虛擬端點(diǎn)的輸入/輸出(1/0)請求路由到與第 二虛擬平面相關(guān)聯(lián)的第二虛擬端點(diǎn)??梢约せ畹诙摂M端點(diǎn)的一個 或多個第二虛擬功能,使得利用所述一個或多個第二虛擬功能來處理1/0請求。
靜默與一個或多個第一虛擬功能相關(guān)聯(lián)的請求可以包括確定 是否存在針對該一個或多個第一虛擬功能的未完成請求,并響應(yīng)于 確定不存在針對第一虛擬功能的未完成請求,執(zhí)行該一個或多個第 一虛擬功能的功能層級的重置。配置第二虛擬端點(diǎn)以使其如第一虛 擬端點(diǎn)那樣操作可以包括發(fā)送目的地遷移中斷給第二虛擬平面, 并響應(yīng)于該目的地遷移中斷,執(zhí)行第二虛擬平面中的一個或多個虛 擬功能的功能層級的重置。
配置通信架構(gòu)以使其將指向第一虛擬端點(diǎn)的輸入/輸出(I/O)請 求路由到與第二虛擬平面相關(guān)聯(lián)的第二虛擬端點(diǎn)可以包括在通信架構(gòu)的至少 一個中介交換機(jī)中刪除與第 一虛擬平面相關(guān)聯(lián)的 一個或 多個地址??梢岳糜糜诘诙摂M平面的 一個或多個地址對至少一 個中介交換機(jī)進(jìn)行編程。
可以從第三虛擬平面中運(yùn)行的多根外圍組件互連管理器(MR-PCIM)接收遷移請求。MR-PCIM可以響應(yīng)于從管理應(yīng)用接收 的命令而發(fā)送遷移請求。
可以由第一虛擬平面中運(yùn)行的輸入/輸出(I/O)虛擬化中介 (IO VI)執(zhí)行接收遷移請求以及靜默與 一 個或多個第 一 虛擬功能相 關(guān)聯(lián)的請求。該方法還可以包括封裝與第一虛擬端點(diǎn)相關(guān)聯(lián)的應(yīng) 用的應(yīng)用狀態(tài),以產(chǎn)生應(yīng)用狀態(tài)容器,并將該應(yīng)用狀態(tài)容器從第一 虛擬平面轉(zhuǎn)移到第二虛擬平面。
第一虛擬端點(diǎn)可以在第一物理端點(diǎn)中,且第二虛擬端點(diǎn)可以在 不同于第 一物理端點(diǎn)的第二物理端點(diǎn)中。第 一物理端點(diǎn)和第二物理 端點(diǎn)可以是外圍組件互連擴(kuò)展(PCIe)適配器。通信架構(gòu)可以是包 括一個或多個PCIe交換機(jī)的PCIe架構(gòu)。
在其它說明性的實(shí)施方式中,提供了一種計算機(jī)程序產(chǎn)品,其 包括具有計算機(jī)可讀程序的計算機(jī)可用介質(zhì)。當(dāng)計算機(jī)可讀程序在 計算設(shè)備上被執(zhí)行時,將使計算設(shè)備執(zhí)行上文關(guān)于方法的說明性的 實(shí)施方式中略述的各種操作及其組合。
在又一個說明性的實(shí)施方式中,提供了一種數(shù)據(jù)處理系統(tǒng)。數(shù) 據(jù)處理系統(tǒng)可以包括提供第 一 虛擬平面和第二虛擬平面的主機(jī)系 統(tǒng);以及經(jīng)由通信架構(gòu)耦合到主機(jī)系統(tǒng)的的至少一個物理端點(diǎn)。主其組合。
在下文對本發(fā)明的示例性實(shí)施方式的詳細(xì)描述中,將描述本發(fā) 明的這些和其他特征及優(yōu)點(diǎn),而當(dāng)看到在下文的對本發(fā)明的示例性 實(shí)施方式的詳細(xì)描述時,本發(fā)明的這些和其他特征及優(yōu)點(diǎn)對本領(lǐng)域
普通技術(shù)人員將變得顯而易見。
在所附的權(quán)利要求中闡明了確信新穎的本發(fā)明的特征。然而, 通過結(jié)合附圖閱讀下文對說明性的實(shí)施方式的詳細(xì)描述,將更好地 理解本發(fā)明自身、以及優(yōu)選的使用模式、其進(jìn)一步的目標(biāo)和優(yōu)點(diǎn),
其中
圖1是示出了在本領(lǐng)域公知的PCIe架構(gòu)拓樸的示例性示意圖2是示出了在本領(lǐng)域公知的系統(tǒng)虛擬化的示例性示意圖3是示出了使用I/O虛擬化中介對PCI根聯(lián)合體的I/O進(jìn)行虛
擬化的第一方法的示例性示意圖4是示出了使用本地共享的PCI 1/0適配器對PCI根聯(lián)合體的
I/O進(jìn)行虛擬化的第二方法的示例性示意圖5是支持PCIe I/O虛擬化的端點(diǎn)的示例性示意圖6是示出了沒有本地虛擬化的單根端點(diǎn)的物理和虛擬功能的
示例性示意圖7是示出了支持本地I/0虛擬化的單根端點(diǎn)的物理和虛擬功能 的示例性示意圖8是示出了根據(jù)一個說明性的實(shí)施方式的多根虛擬化I/0拓樸 的示例性示意圖9是示出了根據(jù)一個說明性的實(shí)施方式的從根節(jié)點(diǎn)的 SR-PCIM的視角的多根虛擬化I/O拓樸的虛擬層級視圖的示例性示 意圖10是示出了根據(jù)一個說明性的實(shí)施方式的基于共享存儲器的 PCIe系統(tǒng)的示例性示意圖IIA和11B是表示了根據(jù)一個說明性的實(shí)施方式的示例性虛 擬PCI樹數(shù)據(jù)結(jié)構(gòu)的示意圖12是概括了根據(jù)一個說明性的實(shí)施方式的用于為端點(diǎn)的共享 而將主機(jī)系統(tǒng)的存儲器地址空間進(jìn)行初始化的示例性操作的流程圖13是示出了根據(jù)一個說明性的實(shí)施方式的用于從第一主機(jī)系
統(tǒng)向第二主機(jī)系統(tǒng)發(fā)送工作隊列單元(WQE)的過程的示例性的框 圖14是示出了根據(jù)一個說明性的實(shí)施方式的用于從第二主機(jī)系 統(tǒng)向第一主機(jī)系統(tǒng)發(fā)送完成隊列單元(CQE)的過程的示例性的框
圖15是概括了根據(jù) 一 個示例性實(shí)施方式的用于在第 一 主機(jī)系統(tǒng) 的根聯(lián)合體和與第二主機(jī)系統(tǒng)相關(guān)聯(lián)的端點(diǎn)之間傳送WQE的示例 性操作的示例性流程圖16是概括了根據(jù)一個示例性實(shí)施方式的用于從第二主機(jī)系統(tǒng) 的端點(diǎn)向第 一主機(jī)系統(tǒng)的根聯(lián)合體傳送CQE的示例性操作的示例性 流程圖17是示出了可以用于在相同或不同的主^/L系統(tǒng)的根聯(lián)合體和 端點(diǎn)之間執(zhí)行通信的事務(wù)的各種可能的組合的示例性表;
圖18是示出了根據(jù) 一 個示例性實(shí)時方式的用于建立套接字并在 第 一 主機(jī)系統(tǒng)和第二主機(jī)系統(tǒng)之間執(zhí)行基于套接字的通信的過程的 示例性框圖19是概括了根據(jù) 一 個說明性的實(shí)施方式的用于使用基于套接 字的通信連接來執(zhí)行拉回事務(wù)的示例性操作的流程圖20是概括了根據(jù) 一 個說明性的實(shí)施方式的用于使用基于套接 字的通信連接而執(zhí)行推送事務(wù)的示例性操作的流程圖21A和21B是示出了根據(jù)一個說明性的實(shí)施方式的從在相同 PCIe適配器上的一個物理功能向另一個物理功能的虛擬功能及其相 關(guān)聯(lián)的應(yīng)用的單根無狀態(tài)遷移的示例性示意圖22A和22B是示出了根據(jù)一個說明性的實(shí)施方式的從一個 PCIe適配器向另一個PCIe適配器的虛擬功能及其相關(guān)聯(lián)的應(yīng)用的 單根無狀態(tài)遷移的示例性示意圖23A和23B是示出了根據(jù)一個說明性的實(shí)施方式的從一個系統(tǒng)鏡像向另 一 個系統(tǒng)鏡像的虛擬功能及其相關(guān)聯(lián)的應(yīng)用的單根無狀態(tài)遷移的示例性示意圖24是概括了根據(jù)一個說明性的實(shí)施方式的用于遷移虛擬功能 的示例性操作的流程圖25A和25B是示出了根據(jù)一個說明性的實(shí)施方式的用于將虛擬 端點(diǎn)(VE)從一個虛擬平面(VP)遷移到另一個虛擬平面的示例性 框圖26是概括了根據(jù)一個說明性的實(shí)施方式的用于將虛擬端點(diǎn)從 一個虛擬平面遷移到另 一 個虛擬平面的示例性操作的流程圖27A和27B是概括了用于將虛擬功能從一個虛擬平面遷移到同 一根聯(lián)合體中的另一個虛擬平面的操作的示意圖;以及
圖28是概括了根據(jù)一個說明性的實(shí)施方式的用于將虛擬功能從 一個虛擬平面遷移到另 一個虛擬平面的示例性操作的流程圖。
具體實(shí)施例方式
說明性的實(shí)施方式提供了 一種機(jī)制,該機(jī)制允許由相同或不同的 才艮聯(lián)合體的兩個或更多系統(tǒng)鏡像(SI)來本地地(natively )共享PCIe 適配器或"端點(diǎn)”,其中所述相同或不同的根聯(lián)合體可以位于相同或 不同的根節(jié)點(diǎn)(例如,刀片服務(wù)器的刀片)上。另外,說明性的實(shí)施 方式提供了 一種支持在系統(tǒng)鏡像和本地共享的端點(diǎn)之間的通信的機(jī) 制。此外,說明性的實(shí)施方式提供了用于在虛擬平面(plane)、根聯(lián) 合體和系統(tǒng)鏡像之間遷移虛擬功能的機(jī)制,以實(shí)現(xiàn)對PCIe架構(gòu)的管 理。另外,說明性的實(shí)施方式提供了一種機(jī)制,其中通過該機(jī)制,根 聯(lián)合體的單根PCI管理器(SR-PCIM)能夠從端點(diǎn)讀取該端點(diǎn)的實(shí)現(xiàn) 者在設(shè)計該端點(diǎn)時所允許的功能的有效組合。然后,SR-PCIM可以設(shè) 置將在當(dāng)前配置中使用的功能的組合,其中在該當(dāng)前配置中正在使用 該端點(diǎn)。
圖2是示出了本領(lǐng)域中公知的系統(tǒng)虛擬化的示例性示意圖。系 統(tǒng)虛擬化是對物理系統(tǒng)的處理器、存儲器、1/0適配器、存儲設(shè)備以 及其他資源的劃分,其中每組資源與其自身的系統(tǒng)鏡像實(shí)例和應(yīng)用
一起獨(dú)立地操作。在這種系統(tǒng)虛擬化中,虛擬資源由物理資源組成, 并作為物理資源的代理來操作,其中物理資源例如為具有相同外部 接口和功能的存儲器、磁盤驅(qū)動器以及具有構(gòu)建的接口 /功能的其他 爿哽件組件。系統(tǒng)虛擬化通常利用虛擬化中介,該虛擬化中介創(chuàng)建虛 擬資源并將其映射到物理資源,由此提供虛擬資源之間的隔離。通 常,將虛擬化中介提供作為軟件、固件和硬件機(jī)制之一或其組合。
如圖2所示,通常在虛擬化系統(tǒng)中,應(yīng)用210與系統(tǒng)鏡像(SI) 220進(jìn)行通信,其中該系統(tǒng)鏡像(SI) 220為諸如通用或?qū)S貌僮飨?統(tǒng)的軟件組件,由該軟件組件分配特定的虛擬和物理資源。系統(tǒng)鏡 像220與虛擬系統(tǒng)230相關(guān)聯(lián),虛擬系統(tǒng)230包括為運(yùn)行單個SI實(shí) 例所必需的物理或虛擬化資源,例如,虛擬化的處理器、存儲器、I/O 適配器、存儲設(shè)備等。
系統(tǒng)鏡像220通過使用虛擬系統(tǒng)230而經(jīng)由虛擬化中介240來 訪問物理系統(tǒng)資源250。虛擬化中介240管理對SI的資源分配,并 隔離分配給SI的資源免受其他SI訪問。通常,基于由虛擬化中介 240執(zhí)行的資源映射以及由虛擬化中介240維護(hù)的一個或多個資源 映射數(shù)據(jù)結(jié)構(gòu)來執(zhí)行這種分配和隔離。
可使用這種虛擬化以允許對I/O操作和I/O資源的虛擬化。即, 關(guān)于I/0虛擬化(IOV),可由使用1/0虛擬化中介(IOVI)(諸如 虛擬化中介240)的多于一個的SI來共享單個物理I/O單元。IOVI 可以是軟件、固件等,用于通過干預(yù)例如一個或多個的配置、I/O、 來自SI的存儲器操作、以及直接存儲器訪問(DMA)、完成和對 SI的中斷操作來支持IOV。
圖3是示出了使用1/0虛擬化中介的對PCI根聯(lián)合體的1/0進(jìn)行 虛擬化的第一方法的示例性示意圖。如圖3所示,主機(jī)計算機(jī)組310 可以是一個或者多個芯片處理器、主板、刀片等,該主機(jī)計算機(jī)組 310可以支持多個系統(tǒng)鏡像320-330,應(yīng)用(未示出)通過這些系統(tǒng) 鏡像可以訪問諸如PCIe端點(diǎn)370-390的系統(tǒng)資源。通過I/O虛擬化 中介340、 PCIe根聯(lián)合體350以及一個或多個PCIe交換機(jī)360和/
或其他PCIe架構(gòu)單元,該系統(tǒng)鏡像與虛擬化的資源進(jìn)行通信。
利用圖3所示的方法,1/O虛擬化中介340介入到所有的1/0事 務(wù)中,并執(zhí)行所有的1/0虛擬化功能。例如,1/O虛擬化中介340將 來自各種SI的I/O隊列多路傳輸?shù)絇CIe端點(diǎn)370-390中的單一隊列。 這樣,I/O虛擬化中介充當(dāng)在SI 320-330和物理PCIe端點(diǎn)370-390 之間的代理。
這種I/O虛擬化中介340的介入可能在I/O操作中? 1入額外的延 遲,這限制了每時間單位的1/0操作的數(shù)量,并且由此限制了 1/0性 能。此外,I/O中介需要額外的CPU周期,這樣,降低了對其他系 統(tǒng)操作可用的CPU性能。此方法所需要的額外的上下文交換和中斷 重定向機(jī)制也會影響系統(tǒng)的整體性能。而且,當(dāng)在多個根聯(lián)合體之 間共享端點(diǎn)370-390時,IOVI 340是不可行的。
圖4是示出了使用本地共享的PCI I/O適配器對PCI根聯(lián)合體的 1/0進(jìn)行虛擬化的第二方法的示例性示意圖。如圖4中所示,主機(jī)處 理器組410可以是一個或多個芯片處理器、主板、刀片等,該主機(jī) 處理器組410可以支持多個系統(tǒng)鏡像420-430,應(yīng)用(未示出)通過 這些系統(tǒng)鏡像可以訪問諸如PCIe 1/0虛擬化(IOV)端點(diǎn)470-490的 系統(tǒng)資源。該系統(tǒng)鏡像420-430通過PCIe根聯(lián)合體440和一個或多 個PCIe交換機(jī)460、和/或其他PCIe架構(gòu)單元來與虛擬化的資源進(jìn) 行通信。
PCIe根聯(lián)合體440包括根聯(lián)合體虛擬化引擎(enabler) ( RCVE ) 442,其中該根聯(lián)合體虛擬化引擎(RCVE) 442可包括一個或多個 地址轉(zhuǎn)換和保護(hù)表數(shù)據(jù)結(jié)構(gòu)、中斷表數(shù)據(jù)結(jié)構(gòu)等,其實(shí)現(xiàn)與支持IOV 的端點(diǎn)470-490的I/O操作的虛擬化。例如,可以由PCIe根聯(lián)合體 440使用地址轉(zhuǎn)換和保護(hù)表數(shù)據(jù)結(jié)構(gòu)來執(zhí)行在用于虛擬化資源的虛 擬和實(shí)際地址之間的地址轉(zhuǎn)換,基于虛擬資源至SI的映射來控制對 虛擬資源的訪問,以及其他虛擬化操作。例如,通過PCIe存儲器地 址空間可訪問這些根聯(lián)合體中斷表數(shù)據(jù)結(jié)構(gòu),并且這些根聯(lián)合體中 斷表數(shù)據(jù)結(jié)構(gòu)可用于將中斷映射到與SI相關(guān)聯(lián)的合適的中斷處理器.
如圖3所示的布置,在圖4的虛擬化結(jié)構(gòu)中也提供了 1/0虛擬化接口 450。將I/0虛擬化接口 450與不支持IOV的PCIe端點(diǎn)一起使用,其中所述不支持IOV的PCIe端點(diǎn)可耦合到PCIe交換機(jī)460。 即,對于那些對I/0虛擬化(IOV)沒有本地(即,在端點(diǎn)內(nèi)部)支持的PCIe端點(diǎn),以同如前所述的關(guān)于圖3相類似的方式,將I/0虛 擬化接口 ( IOVI) 450與PCIe端點(diǎn)一起使用。
對于支持IOV的PCIe端點(diǎn)470-490,使用IOVI 450主要用于 配置事務(wù)的目的,并且在存儲器地址空間操作中不涉及IOVI 450, 所述存儲器地址空間操作諸如為從SI發(fā)起的存儲器映射的輸入/輸 出(MMIO )操作、或者從PCIe端點(diǎn)470-490發(fā)起的直接存儲器訪 問(DMA)操作。相反,直接執(zhí)行在SI 420-430和端點(diǎn)470-490之 間的數(shù)據(jù)傳輸,而無需由1OVI 450干預(yù)。如同將在下文更詳細(xì)描述的,通過RCVE 442和支持IOV的PCIe端點(diǎn)470-490的內(nèi)置I/O虛 擬化邏輯(例如,物理和虛擬功能),在SI 420-430和端點(diǎn)470-490 之間的直接I/O操作變?yōu)榭赡?。?zhí)行直接I/O操作的能力極大地增加 了能夠執(zhí)行I/O操作的速度,但這需要PCle端點(diǎn)470-490支持I/O 虛擬化。
圖5是支持PCIel/0虛擬化(IOV)的端點(diǎn)的示例性示意圖。如 圖5中所示,PCIeIOV端點(diǎn)500包括PCIe端口 510,通過該端口可執(zhí)行與PCIe架構(gòu)的PCIe交換機(jī)等的通信。內(nèi)部路由520提供到配 置管理功能530和多個虛擬功能(VF) 540-560的通信通路。配置管理功能530可以是與虛擬功能540-560相對的物理功能。如同在PCI 規(guī)范中所用的"術(shù)語物理"功能,,是由單一配置空間所表示的一組邏輯。換言之,物理"功能"是電路邏輯,其基于在存儲器中與該功能相關(guān)聯(lián)的配置空間中存儲的數(shù)據(jù)是可配置的,例如可在不可分 離的資源570中提供。
可使用配置管理功能530來配置虛擬功能540-560。在支持I/O 虛擬化的端點(diǎn)內(nèi),虛擬功能是共享一個或多個例如鏈路的物理端點(diǎn)資源,并且可以與其他功能一起提供在例如PCIeIOV端點(diǎn)500的可 共享資源池580中的功能。無需通過I/0虛擬化中介的運(yùn)行時干預(yù), 虛擬功能可以直接是針對來自系統(tǒng)鏡像的I/O和存儲器操作的宿(sink),以及是對系統(tǒng)鏡像(SI)的中斷、完成、以及直接存儲器訪問(DMA)操作的源。
PCIe端點(diǎn)關(guān)于由PCIe端點(diǎn)所支持的"功能"可以具有許多不同 的配置類型。例如,端點(diǎn)可以支持單物理功能(PF)、多個獨(dú)立的PF、或甚至多個依賴的PF。在支持本地I/0虛擬化的端點(diǎn)中,由端點(diǎn)支持的每個PF可以與一個或多個虛擬功能(VF)相關(guān)聯(lián),這些虛擬功能(VF)自身可以依賴于與其他PF相關(guān)聯(lián)的VF。將在下文的圖6和圖7中示出在物理和虛擬功能之間示例性關(guān)系。
圖6是示出了沒有本地虛擬化的單根端點(diǎn)的物理和虛擬功能的示例性示意圖。術(shù)語"單根端點(diǎn)"是指與單根節(jié)點(diǎn)(即,單主機(jī)系統(tǒng))的單根聯(lián)合體相關(guān)聯(lián)的端點(diǎn)。利用單根端點(diǎn),可由與單根聯(lián)合體相關(guān)聯(lián)的多個系統(tǒng)鏡像(SI)共享該端點(diǎn),但無法在相同或不同的根節(jié)點(diǎn)上的多個根聯(lián)合體之間共享該端點(diǎn)。
如圖6所示,根節(jié)點(diǎn)600包括與PCIe端點(diǎn)670-690通信的多個系統(tǒng)鏡像610、 612; 1/0虛擬化中介630 (其如前所述地使用); PCIe根聯(lián)合體640;以及一個或多個PCIe交換機(jī)650和/或其他PCIe 架構(gòu)單元。根節(jié)點(diǎn)600進(jìn)一步包括單根PCIe配置管理(SR-PCIM) 單元620。 SR-PCIM單元620負(fù)責(zé)管理PCIe架構(gòu)和端點(diǎn)670-690, 該P(yáng)CIe架構(gòu)包括根聯(lián)合體640、 一個或多個PCIe交換機(jī)650等。 SR-PCIM 620的管理責(zé)任包括確定要將哪個功能分配給哪個SI 610、 620,并建立端點(diǎn)670-690的配置空間。根據(jù)SI的能力以及來自用戶(諸如,系統(tǒng)管理員)的輸入、或者關(guān)于將哪些資源分配給哪個SI 610、 612的負(fù)載均衡軟件,SR-PCIM620可以配置各種端點(diǎn)670-690 的功能。SI的能力可以包括各種因素,這些因素包括多少地址空間可用于分配給端點(diǎn)670-690,多少中斷可用于分配給端點(diǎn)670-690 等等。
每個PCIe端點(diǎn)670-690可以支持一個或多個物理功能(PF )。 一個或多個PF可以彼此獨(dú)立,或以某種方式彼此依賴?;诠?yīng)商 定義的功能依賴性,PF可以依賴于另一個PF,其中例如一個PF需 要另一個PF的操作或者由另一個PF生成的結(jié)果,以便正確地操作。 在所描述的例子中,PCIe端點(diǎn)670支持單PF,而PCIe端點(diǎn)680支 持1到M的不同類型的多個獨(dú)立的PF (即,PFO到PFN)。類型涉 及PF或VF的功能性,例如以太網(wǎng)功能和光纖通道功能是兩種不同 類型的功能。端點(diǎn)690支持具有兩個或多個相關(guān)PF的不同類型的多 個PF。在所描述的例子中,PF0依賴于PF1,或者反之亦然。
在圖6中示例性的例子中,端點(diǎn)670-690是由系統(tǒng)鏡像(SI) 610-612通過由1/0虛擬化中介(IOVI) 630可用的虛擬化機(jī)制而共 享的。如前所述,在這種布置中,在SI 610、 612和PCIe端點(diǎn)670-690 之間的所有PCIe事務(wù)中涉及IOVI 630。單獨(dú)的PCIe端點(diǎn)670-690 無需在其自身中支持虛擬化,這是因?yàn)樘幚硖摂M化的負(fù)擔(dān)完全放在 IOVI 630上。結(jié)果,雖然在這種布置中可以使用已知的用于虛擬化 的機(jī)制,但與如果在每個1/0操作中均沒有涉及I0VI 630的I/O速 率潛力相比,可以執(zhí)行I/O操作的速率相對較慢。
圖7是示出了支持本地虛擬化的單根端點(diǎn)的物理和虛擬功能的 示例性示意圖。在圖7中示例性的布置與圖6的布置相似,但由于 PCIe端點(diǎn)770-790本地地(即,在端點(diǎn)自身內(nèi)部)支持I/O虛擬化 (IOV)而有一些重要不同。結(jié)果,針對支持IOV的PCIe端點(diǎn) 770-790,可以有效地移除在圖6中的1/0虛擬化中介630,當(dāng)然, 不能移除配置操作。然而,如果在此布置中還利用了不支持IOV的 PCIe端點(diǎn)(未示出),例如,傳統(tǒng)端點(diǎn),則可以連同在圖7中示例 性的單元來使用I/O虛擬化中介,以處理在系統(tǒng)鏡像710和712之間 的對這種不支持IOV的PCIe端點(diǎn)的共享。
如圖7中所示,支持IOV的PEIe端點(diǎn)770-790可以支持一個或 多個獨(dú)立或依賴的物理功能(PF),然后該物理功能(PF)可以與 一個或多個獨(dú)立或依賴的虛擬功能(VF)相關(guān)聯(lián)。在此上下文中,
由SR-PCIM 720使用PF來管理一組VF,以及也使用PF管理諸如 物理錯誤和事件的端點(diǎn)功能。與PF相關(guān)聯(lián)的配置空間定義了 VF的 能力,包括與該P(yáng)F相關(guān)聯(lián)的VF的最大數(shù)量、PF和VF與其他PF 和VF的組合等。
由SI使用VF來訪問位于支持IOV的PCIe端點(diǎn)770-790上的資 源,例如存儲器空間、隊列、中斷等。這樣,針對將要共享特定PF 的每個SI 710和712來生成不同的VF。在對應(yīng)的PF的配置空間中, 由端點(diǎn)770-790基于SR-PCIM 720的VF的數(shù)量的設(shè)置來生成VF。 按照這種方式,將PF虛擬化,使得可由多個SI710、 712來共享該 PF。
如圖7中所示,VF和PF可以依賴于其他VF和PF。通常,如 果PF是依賴的PF,那么與該P(yáng)F相關(guān)聯(lián)的所有VF也將是依賴的。 這才羊,例如,PFO的VF可以依賴于對應(yīng)的PF1的VF。
對于圖7所示的布置,SI 710、 712可以通過PCI根聯(lián)合體730 和PCIe交換機(jī)740與支持IOV的PCIe端點(diǎn)770-790直接進(jìn)行通信, 反之亦然,而無需包括I/0虛擬化中介。通過在端點(diǎn)770-790中和在 SR-PCIM 720中提供的IOV支持,可以進(jìn)行這種直接通信,SR-PCIM 720對在端點(diǎn)770-790中的PF和VF進(jìn)行配置。
在SI和端點(diǎn)之間的直接通信顯著地增加了可以在多個SI 710-712和共享的支持IOV的PCIe端點(diǎn)770-790之間執(zhí)行I/O操作 的速度。然而,為使這種性能增強(qiáng)變得可行,PCIe端點(diǎn)770-790必 須通過在SR-PCIM 720和端點(diǎn)770-790的物理功能(PF )中提供用 于生成和管理虛擬功能(VF)的機(jī)制而支持I/0虛擬化。
上文對PCIe層級的描述局限于單根層級。換言之,僅由在與單 PCI根聯(lián)合體730相關(guān)聯(lián)的單根節(jié)點(diǎn)700上的SI 710、 712來共享PCIe 端點(diǎn)。上述的機(jī)制對共享PCIe端點(diǎn)的多根聯(lián)合體沒有提供支持。這 樣,無法向多個節(jié)點(diǎn)提供對PCIe端點(diǎn)的資源的共享訪問。這限制了 利用這種布置的系統(tǒng)的可擴(kuò)展性,這是因?yàn)閷τ诿總€根節(jié)點(diǎn)需要單 獨(dú)的端點(diǎn)集合。
這里,說明性的實(shí)施方式利用多個根I/0虛擬化,其中多個PCI根聯(lián)合體可以共享對同一組支持IOV的PCIe端點(diǎn)的訪問。結(jié)果,與 這些PCI根聯(lián)合體的每個相關(guān)聯(lián)的系統(tǒng)鏡像的每個可以共享對同一 組支持IOV的PCIe端點(diǎn)資源的訪問,但在適當(dāng)位置處具有針對在每 個根節(jié)點(diǎn)上的每個SI的虛擬化的保護(hù)。這樣,通過提供允許添加根 節(jié)點(diǎn)和對應(yīng)的PCI根聯(lián)合體的機(jī)制而將可擴(kuò)展性最大化,其中這些 根聯(lián)合體可以共享支持10V的PCIe端點(diǎn)的相同的現(xiàn)有組。
圖8是示出了根據(jù)一個說明性的實(shí)施方式的多根虛擬化的1/0拓 樸的示例性示意圖。如圖8所示,提供多個根節(jié)點(diǎn)810和820,每一 個根節(jié)點(diǎn)具有單根pci配置管理器(SR-PCIM) 812、 822、 一個或 多個系統(tǒng)鏡像(SI) 814、 816、 824、 826、以及PCI才艮聯(lián)合體818 和828。將這些例如可以是在刀片服務(wù)器中的刀片的根節(jié)點(diǎn)810和 820耦合到PCIe交換架構(gòu)的一個或多個多根感知(MRA)PCIe交換機(jī) 840,其中該P(yáng)CIe交換架構(gòu)可以包括一個或多個這種MRA PCIe 交換機(jī)840和/或其他PCIe架構(gòu)單元。MRA交換機(jī)840不同于在圖 7中的非MRA交換機(jī)的類型,原因在于MRA交換機(jī)840具有用于 附加的根節(jié)點(diǎn)的連接,并包含用于保持那些不同根節(jié)點(diǎn)的地址空間 獨(dú)立和獨(dú)特所需要的機(jī)制。
除了這些根節(jié)點(diǎn)810和820,還提供包括多根PCI配置管理器 (MR-PCIM) 832和對應(yīng)的PCI根聯(lián)合體834的第三根節(jié)點(diǎn)830。 MR-PCIM 832是負(fù)責(zé)發(fā)現(xiàn)并配置圖8中示出的在多根(MR)拓樸中 的虛擬層級,這將在下文更加詳細(xì)地描述。這樣,MR-PCIM 832針 對多根節(jié)點(diǎn)的多根聯(lián)合體匹配端點(diǎn)的物理和虛擬功能。SR-PCIM 812 和822配置與其相關(guān)聯(lián)的單根聯(lián)合體的物理和虛擬功能。換言之, MR-PCIM將MR拓樸看作一個整體,而SR-PCIM僅看到在MR拓 樸內(nèi)的其自身的虛擬層級,這將在下文更加詳細(xì)地描述。
如圖8所示,支持IOV的PCIe端點(diǎn)850和860支持一個或多個 虛擬端點(diǎn)(VE) 852、 854、 862、 864。 VE是分配給根聯(lián)合體的一 組物理和虛擬功能。這樣,例如在支持IOV的PCIe端點(diǎn)850和860上為根節(jié)點(diǎn)810的PCI根聯(lián)合體818提供單獨(dú)的VE 852和862。類 似地,在支持IOV的PCIe端點(diǎn)850和860上為根節(jié)點(diǎn)820的PCI 根聯(lián)合體828提供單獨(dú)的VE 854和864。
將每個VE分配給具有單根聯(lián)合體的虛擬層級(VH),在該層 級中,單根聯(lián)合體作為VH的根,而VE作為終結(jié)節(jié)點(diǎn)。VH是分配 給根聯(lián)合體或SR-PCIM的完整功能的PCIe層級。應(yīng)該注意,將VE 中的所有物理功能(PF)和虛擬功能(VF)分配給相同的VH。
每個支持IOV的PCIe端點(diǎn)850和860支持基本功能(BF ) 859 和869。 BF 859、 869是由MR-PCIM 832所使用的物理功能,用于 管理相應(yīng)的端點(diǎn)850、 860的VE。例如,BF 859、 869負(fù)責(zé)向相應(yīng)端 點(diǎn)850、 860的VE分配功能。MR-PCIM 832通過使用在BF的配置 空間中的字段而向VE分配功能,該配置空間允許將VH號分配給在 端點(diǎn)850、 860中的每個PF。盡管本發(fā)明并非局限于此,在所說明 性的實(shí)施方式中,每個節(jié)點(diǎn)僅有一個BF。
如圖8中所示,每個VE 852、 854、 862和864可支持其自身的 物理和虛擬功能組。如前所述,這種功能組可以包括獨(dú)立的物理功 能、依賴的物理功能、以及它們的相關(guān)的獨(dú)立/依賴虛擬功能。如圖 8中所示,VE 852利用其相關(guān)聯(lián)的虛擬功能(VF)來支持單物理功 能(PFO) 。 VE 854同樣地利用其相關(guān)聯(lián)的虛擬功能(VF)來支持 單物理功能(PFO) 。 VE 862支持多個獨(dú)立的物理功能(PFO-PFN) 以及其相關(guān)聯(lián)的虛擬功能(VF)。然而,VE 864支持多個依賴的物 理功能(PFO-PFN)。
當(dāng)且僅當(dāng)將VE分配給SI已經(jīng)訪問的VH時,VE 852、 854、 862 或864可以與根節(jié)點(diǎn)810和820的SI 814、 816和826直接通信,并 且反之亦然。端點(diǎn)850和860自身必須支持諸如前面所述的單根1/0 虛擬化,以及如關(guān)于當(dāng)前說明性的實(shí)施方式而描述的多根I/O虛擬 化。這種要求所基于的事實(shí)在于拓樸支持多根聯(lián)合體,但每個單 獨(dú)的根節(jié)點(diǎn)僅看到其相關(guān)聯(lián)的基于單根的虛擬層級。
圖9是示出了根據(jù)一個說明性的實(shí)施方式的從根節(jié)點(diǎn)的根聯(lián)合
體的視角所見的多根虛擬化I/O拓樸的虛擬層級視圖的示例性示意
圖。如圖9中所示,雖然多根(MR)拓樸可以是如圖8所示的那樣, 但是每個單獨(dú)的根節(jié)點(diǎn)的每個根聯(lián)合體僅看到它的MR拓樸的部分。 這樣,例如,與根節(jié)點(diǎn)810相關(guān)聯(lián)的PCI根聯(lián)合體818看到它的主 機(jī)處理器組、它自己的系統(tǒng)鏡像(SI) 814、 816、 MRA交換機(jī)840、 以及它自己的虛擬端點(diǎn)(VE) 852和862。在此虛擬層級中,存在完 全的PCIe功能性,然而,PCI根聯(lián)合體818沒有看到不是它自身的 虛擬層級部分的VE、根聯(lián)合體、系統(tǒng)鏡像等。
由于此布置,在MP拓樸中的根節(jié)點(diǎn)的根聯(lián)合體之間的通信上施 加了限制。即,因?yàn)閷CIe的功能性局限于與根聯(lián)合體相關(guān)聯(lián)的虛 擬層級,所以根聯(lián)合體無法與另一個根聯(lián)合體通信。而且,與各種 根聯(lián)合體相關(guān)聯(lián)的系統(tǒng)鏡像無法與其他根聯(lián)合體的系統(tǒng)鏡像通信。 為解決這種限制,這里說明性的實(shí)施方式提供了各種機(jī)制,用以對 在虛擬層級之間(具體地是在不同根節(jié)點(diǎn)的根聯(lián)合體之間)的通信 提供支持。
對于說明性的實(shí)施方式的主機(jī)系統(tǒng),為了經(jīng)由其根聯(lián)合體與多 個端點(diǎn)通信,該主機(jī)系統(tǒng)使用由各種端點(diǎn)和根聯(lián)合體共享的共享存 儲器,其中該主機(jī)系統(tǒng)與該根聯(lián)合體相關(guān)聯(lián)。為了確保端點(diǎn)與主機(jī) 系統(tǒng)正確的操作,必須初始化該共享存儲器,使得與主機(jī)系統(tǒng)相關(guān) 聯(lián)的每個端點(diǎn)被提供有其自己的共享存儲器部分,其中通過該共享 存儲器可以執(zhí)行各種通信。說明性的實(shí)施方式利用了用于初始化主 機(jī)系統(tǒng)的共享存儲器的機(jī)制,其中發(fā)現(xiàn)PCIe架構(gòu),并且將PCIe架 構(gòu)的端點(diǎn)虛擬地綁定到該主機(jī)系統(tǒng)的根聯(lián)合體。然后,為每個端點(diǎn) 和根聯(lián)合體給出每個主機(jī)系統(tǒng)的共享存儲器地址空間的每個端點(diǎn)和 根聯(lián)合體自己的部分,每個端點(diǎn)和根聯(lián)合體是虛擬地綁定到每個主 機(jī)系統(tǒng)。通過主機(jī)系統(tǒng)的共享存儲器的這些部分,與一個主機(jī)系統(tǒng) 的根聯(lián)合體相關(guān)聯(lián)的端點(diǎn)可以同其他主機(jī)系統(tǒng)的一個或多個其他根 聯(lián)合體進(jìn)行通信。
圖10是示出了根據(jù)一種說明性的實(shí)施方式的基于共享存儲器
PCIe的系統(tǒng)的示例性示意圖。如圖10所示,系統(tǒng)1000具有包括第 一根聯(lián)合體(RC1 ) 1012和第一端點(diǎn)(EP1 ) 1014的主機(jī)系統(tǒng)1010, 并且主機(jī)系統(tǒng)1010與第一多根感知(MRA)交換才幾1016相關(guān)聯(lián), 該多根感知(MRA)交換機(jī)1016可以同樣作為主才幾系統(tǒng)1010的一 部分而提供。系統(tǒng)IOOO具有包括第二根聯(lián)合體(CR2) 1022和第二 端點(diǎn)(EP2) 1024的第二主機(jī)系統(tǒng)1020,并且第二主機(jī)系統(tǒng)1020也 與第二多根感知(MRA)交換機(jī)1026相關(guān)聯(lián),該多根感知(MRA) 交換機(jī)1026可以同樣作為主機(jī)系統(tǒng)1020的一部分而提供。這些主 機(jī)系統(tǒng)1010和1020的每一個可以代表例如在相同的多才艮刀片集群 系統(tǒng)1000中的單獨(dú)的刀片??蛇x地,可以在單獨(dú)的計算設(shè)備上完全 地4是供主機(jī)系統(tǒng)1010和1020。每個主機(jī)系統(tǒng)1010和1020位于其自 己的虛擬層級(VH)中。通過與PCIe架構(gòu)1030的一個或多個MRA 交換才幾1016、 1026和1032的通信1連路,主才幾系統(tǒng)1010和1020 ;f皮 此連接,并且與其他共享端點(diǎn)EP3-EP6 1042-1044和1052-1054相連 接。與主機(jī)系統(tǒng)1010和1020以及端點(diǎn)1042-1044和1052-1054相關(guān) 聯(lián)的通信鏈路可以與一個或多個虛擬平面(VP)相關(guān)聯(lián)。
在PCIe架構(gòu)中沒有使用虛擬層級(VH)標(biāo)識符以區(qū)分哪個主機(jī) 系統(tǒng)1010和1020與給定的PCIe事務(wù)相關(guān)聯(lián)。作為替代,使用了鏈 路本地虛擬平面(VP)標(biāo)識符。由于VP標(biāo)識符是鏈路本地的,所 以RC 1的VH可以是例如在1032和1016之間的鏈路上具有VP=4, 而在1032和1042之間的鏈路上具有VP-4。換言之,VH由一組PCIe 組件和連接這些組件的鏈路構(gòu)成,這些鏈路的每個都具有鏈路本地 VP標(biāo)識符,用于指明給定事務(wù)正引用哪個VH。
在所描述的例子中,目標(biāo)是允許根聯(lián)合體1012、以及因此允許 與同該根聯(lián)合體1012相關(guān)聯(lián)的 一個或多個系統(tǒng)鏡像相聯(lián)合運(yùn)行的應(yīng) 用來同與另 一個根聯(lián)合體相關(guān)聯(lián)的端點(diǎn)(例如,與根聯(lián)合體RC2 1022 相關(guān)聯(lián)的端點(diǎn)EP2 1024)進(jìn)行通信。這樣,例如,可由運(yùn)行在根聯(lián) 合體RC1 1012上的系統(tǒng)鏡像來將EP2 1024作為端點(diǎn)而使用。按照 這種方式,可以在不同虛擬平面和/或主機(jī)系統(tǒng)上的系統(tǒng)鏡像之間共享與根聯(lián)合體位于同一位置的端點(diǎn)。結(jié)果,當(dāng)在節(jié)點(diǎn)之間通信時, 可以實(shí)現(xiàn)高性能的節(jié)點(diǎn)到節(jié)點(diǎn)(即,主機(jī)系統(tǒng)到主機(jī)系統(tǒng))的通信
和負(fù)載均4纖,并通過消除對通過諸如InfiniBand或以太網(wǎng)交換才幾的外 部網(wǎng)絡(luò)適配器和交換機(jī)的需要而降低系統(tǒng)成本。
為了允許在主機(jī)系統(tǒng)之間由系統(tǒng)鏡像共享端點(diǎn),在主機(jī)系統(tǒng) 1010或1020之一或者單獨(dú)的主機(jī)系統(tǒng)1060中提供的多根PCI配置 管理器(MR-PCIM )1062初始化主機(jī)系統(tǒng)的存儲器空間1070和1080, 以建立用于根聯(lián)合體和端點(diǎn)的基(base )和界限孔徑(limit aperture )。 MR-PCIM 1062通過PCIe架構(gòu)1030中的一個或多個MRA交換機(jī) 1032和MRA交換機(jī)1064來訪問PCIe架構(gòu)1030。
MR-PCIM 1062通過各種互連的交換才幾,以本^頁i或爿/^知的方式遍 歷(traverse) PCIe架構(gòu)1030的鏈路,以識別與PCIe架構(gòu)1030相 關(guān)聯(lián)的根聯(lián)合體和端點(diǎn)。然而,對于說明性的實(shí)施方式所執(zhí)行的遍 歷,除了執(zhí)行發(fā)現(xiàn)架構(gòu)遍歷操作的根聯(lián)合體(RC)之外,在該發(fā)現(xiàn) 架構(gòu)遍歷期間,將所有的根聯(lián)合體(RC)視為端點(diǎn)。
當(dāng)MR-PCIM 1062遍歷PCIe架構(gòu)時,它在才艮聯(lián)合體和端點(diǎn)之間 執(zhí)行大量檢查,以確定給定的根聯(lián)合體與給定的端點(diǎn)是否相關(guān)聯(lián)。 根據(jù)產(chǎn)生的信息,MR-PCIM 1062生成一個或多個虛擬PCI樹數(shù)據(jù)結(jié) 構(gòu),其將在PCIe架構(gòu)1030上可用的端點(diǎn)綁定到每個根聯(lián)合體。在 虛擬PCI樹數(shù)據(jù)結(jié)構(gòu)中,與相同根聯(lián)合體相關(guān)聯(lián)的端點(diǎn)之間是互相 關(guān)聯(lián)的。
當(dāng)MR-PCIM 1062發(fā)現(xiàn)并配置了架構(gòu)后,相應(yīng)的RC允許它們相 關(guān)聯(lián)的SR-PCIM 1018和1028發(fā)現(xiàn)并配置VH。每個SR-PCIM 1018、 1028為每個給定的端點(diǎn)分配在其所屬的PCIe存儲器地址空間中的 基地址和界限,該P(yáng)CIe存儲器地址空間例如是與主機(jī)系統(tǒng)1存儲器 1070和主機(jī)系統(tǒng)2存儲器1080相關(guān)聯(lián)的PCIe存儲器地址空間。 SR-PCIM 1018、 1028將所述基地址和界限寫入EP的基地址寄存器 (BAR)。然后,可將工作請求和完成消息寫入PCI存儲器地址空 間的這些部分,以便實(shí)現(xiàn)在跨過主機(jī)系統(tǒng)1010和1020的不同根聯(lián)
合體和端點(diǎn)之間的通信,這將在下文更加詳細(xì)地描述。
如上所述,對于說明性的實(shí)施方式,當(dāng)MR-PCIM 1062遍歷PCIe 架構(gòu)1030時,它在根聯(lián)合體和端點(diǎn)之間執(zhí)行大量的4企查。例如,如 PCI規(guī)范所定義的,MR-PCIM 1062訪問每個功能(EP的物理功能 和虛擬功能)的PCIe配置空間,其中PCIe配置空間位于EP中。例 如,MR-PCIM也訪問對于每個端點(diǎn)的重要產(chǎn)品數(shù)據(jù)(VPD)字段, 并為稍后的比較而存儲VPD信息,諸如存儲在耦合到MR-PCIM 1062的非易失性存儲器區(qū)域(未示出)中。
VPD是唯一地定義了諸如系統(tǒng)的硬件、軟件和微碼單元等項(xiàng)目 的信息。VPD向系統(tǒng)提供了關(guān)于各種字段可替換單元(FRU)的信 息,其中字段可替換單元(FRU)包括供應(yīng)商名稱、零件編號、序 列號和對經(jīng)營、資產(chǎn)管理和任何需要PCI設(shè)備唯一標(biāo)識的事情有用 的其他詳細(xì)信息。VPD信息通常位于PCI設(shè)備(諸如端點(diǎn)1014 、 1024 ) 的存儲設(shè)備(例如串行EEPROM)內(nèi)??梢詮脑?www.pcisig.com可 獲得的PCI本地總線規(guī)范3.0版本來獲得關(guān)于VPD的更多信息。
在已經(jīng)取回并存儲了對于每個端點(diǎn)1014、 1024、 1042、 1044、 1052和1054的VPD信息之后,MR-PCIM 1062識別哪些EP和RC 駐留在例如刀片的同 一硬件設(shè)備上。例如,MR-PCIM 1062訪問包含 共同駐留(co-residency)字段的MRA交換機(jī)1016、 1026、 1032的 VPD信息,所述共同駐留字段指示它與保持RC和EP的硬件設(shè)備相 關(guān)聯(lián)。MRA交換機(jī)1016、 1026、 1032存儲分配給RC的VH,然后, 可以使用該VH以確定哪些EP和RC駐留在相同的石更件設(shè)備上。
在確定了 EP與RC共同存在相同的主機(jī)上之后,MR-PCIM 1062 創(chuàng)建一個或多個虛擬PCI樹數(shù)據(jù)結(jié)構(gòu),諸如圖IIA和IIB中所示例 性的。如同在圖IIA和11B中示例性的,虛擬PCI樹數(shù)據(jù)結(jié)構(gòu)將在 PCIe架構(gòu)上可用的端點(diǎn)綁定到每個根聯(lián)合體。
假設(shè)在圖11A中示例性的虛擬PCI樹數(shù)據(jù)結(jié)構(gòu)中,通過由用戶 指示給MR-PCIM 1062的分配,使得端點(diǎn)EP2 1024、EP4 1044和EP5 1052與根聯(lián)合體RC1 1012相關(guān)聯(lián)。僅執(zhí)行上述的VPD匹配以允許
RC確定EP物理地位于該RC的主機(jī)上。這告訴RC,通過在RC的 地址空間中的標(biāo)準(zhǔn)存儲器映射尋址,EP對該RC是可訪問的。這是 物理的關(guān)聯(lián)。利用虛擬PCI樹數(shù)據(jù)結(jié)構(gòu),通過用戶指示他/她希望 MR-PCIM 1062創(chuàng)建這種邏輯關(guān)聯(lián)來指定邏輯關(guān)聯(lián)。
類似地,在圖11B中假設(shè)端點(diǎn)EP1 1014、 EP3 1042和EP6 1054 通過描述邏輯關(guān)聯(lián)的用戶輸入、和它們的VPD信息以及由MR-PCIM 1062做出的比較,來與根聯(lián)合體RC1 1012相關(guān)聯(lián)。這樣,在圖11A 中示例性的所描述的例子中,端點(diǎn)EP2 1024經(jīng)由交換機(jī)2 1026和交 換機(jī)1 1016關(guān)聯(lián)于(或綁定到)根聯(lián)合體RC1 1012。端點(diǎn)EP4 1044 和EP5 1052經(jīng)由交換機(jī)3 1032和交換機(jī)1 1016而與根聯(lián)合體RC1 1012相關(guān)聯(lián)。在圖11B中,端點(diǎn)EP1 1014經(jīng)由交換機(jī)1 1016和交 換機(jī)2 1026而關(guān)聯(lián)于(或綁定到)根聯(lián)合體2 1022。端點(diǎn)EP3 1042 和EP6 1054經(jīng)由交換機(jī)3 1032而與根聯(lián)合體RC2 1022相關(guān)聯(lián)。
基于這些虛擬PCI樹數(shù)據(jù)結(jié)構(gòu),MR-PCIM 1062對每個端點(diǎn)在其 所屬的PCIe存儲器地址空間內(nèi)分配基地址和限制。可將基地址存儲 于端點(diǎn)的基地址寄存器(BAR)中。例如,通過兩個PCIe存儲器地 址空間1070和1080可訪問EP1 1014。在主機(jī)系統(tǒng)11010中,通過 主機(jī)系統(tǒng)的存儲器1070地址空間,該主機(jī)系統(tǒng)的處理器(未示出) 可訪問EP1 1014。在主機(jī)系統(tǒng)2 1020中,EP1 1014具有在主機(jī)系統(tǒng) 2的存儲器1080地址空間中的由EP1基地址和限制定義的PCIe孔 徑,其中主機(jī)系統(tǒng)2的存儲器1080地址空間可通過PCI總線存儲器 地址,經(jīng)由存儲器影射的I/O來訪問。例如,主機(jī)系統(tǒng)l IOIO的處 理器可使用存儲器地址轉(zhuǎn)換和保護(hù)表(未示出),以將由主機(jī)系統(tǒng)2 1020的處理器看到的PCIe存儲器地址映射成為主機(jī)系統(tǒng)1的存儲器 地址,該存儲器地址轉(zhuǎn)換和保護(hù)表諸如是在虛擬化中介(諸如管理 程序、根聯(lián)合體1012等)中提供的。
類似地,通過用于主機(jī)系統(tǒng)存儲器1070和1080的兩個PCI存 儲器地址空間,可訪問EP2 1024。在主機(jī)系統(tǒng)2 1020中,由主機(jī)系 統(tǒng)2的處理器通過用于其存儲器1080的主機(jī)系統(tǒng)2的實(shí)際存儲器地址可訪問EP2 1024。在主機(jī)系統(tǒng)1 1010中,EP2 1024具有在主機(jī)系 統(tǒng)1的存儲器1070中的由用于EP2 1024的基地址和限制所定義的 PCIe孔徑,其中作為存儲器映射的1/0,通過PCI總線存儲器地址 可訪問該存儲器1070。主機(jī)系統(tǒng)2 1020可使用存儲器地址轉(zhuǎn)換和保 護(hù)表(未示出),以將由主機(jī)系統(tǒng)1 IOIO看到的PCIe存儲器地址映 射到主機(jī)系統(tǒng)2的實(shí)際存儲器地址。
可針對根聯(lián)合體RC1 1012和RC2 1022來初始化主才幾系統(tǒng)存儲 器1070和1080的類似部分。例如,在主機(jī)系統(tǒng)11010中,由主機(jī) 系統(tǒng)1的處理器,通過用于主機(jī)系統(tǒng)1的存儲器1070的主機(jī)系統(tǒng)1 的實(shí)際存儲器地址可訪問RC1 1012。 RC1 1012在主才幾系統(tǒng)2的存儲 器空間中具有PCIe孔徑,其中經(jīng)由直接存儲器訪問(DMA) I/O, 通過主機(jī)系統(tǒng)1的PCI總線存儲器地址可訪問該主才幾系統(tǒng)2的存儲器空間。主機(jī)系統(tǒng)1 1010可使用存儲器地址轉(zhuǎn)換和保護(hù)表(未示出), 以將由主機(jī)系統(tǒng)2 1020看到的PCIe存儲器地址映射成為主機(jī)系統(tǒng)1 的實(shí)際存儲器地址。
類似地,在主機(jī)系統(tǒng)2 1020中,主機(jī)系統(tǒng)2的處理器通過用于存儲器1080的主機(jī)系統(tǒng)2的實(shí)際存儲器地址可訪問RC2 1022。 RC2 1022具有在主機(jī)系統(tǒng)1的存儲器1070中的PCIe孔徑,其中作為DMA 1/0,通過主機(jī)系統(tǒng)2的PCI總線存儲器地址可訪問該主才幾系統(tǒng)1的存儲器1070。主機(jī)系統(tǒng)2 1020可使用存儲器地址轉(zhuǎn)換和保護(hù)表(未示出),以將由主才幾系統(tǒng)1 1010看到的PCIe存4諸器地址映射成為主機(jī)系統(tǒng)2的實(shí)際存儲器地址。
這樣,說明性的實(shí)施方式的機(jī)制提供了對在主機(jī)系統(tǒng)中的存儲器空間的初始化,使得在多個主機(jī)系統(tǒng)中,可由多于一個的根聯(lián)合 體來訪問端點(diǎn)。然后,可由根聯(lián)合體利用分配給不同端點(diǎn)的存儲器空間的部分,以向端點(diǎn)發(fā)送請求和完成消息,和從端點(diǎn)發(fā)送請求和完成消息。
圖12是概括了根據(jù)一個說明性的實(shí)施方式的用于為端點(diǎn)的共享而初始化主機(jī)系統(tǒng)的存儲器地址空間的示例性操作的流程圖。應(yīng)該
理解,可以由計算機(jī)程序指令來實(shí)現(xiàn)在圖12中示例性的流程圖和下 文描述的流程圖的每一塊以及在流程圖中的塊的組合??梢韵蛱幚?器或其他可編程數(shù)據(jù)處理裝置提供這些計算機(jī)程序指令,以產(chǎn)生一 種機(jī)器,使得在處理器或其他可編程數(shù)據(jù)處理裝置上執(zhí)行的指令創(chuàng) 建用于實(shí)現(xiàn)在一個或多個流程圖塊中描述的功能的裝置。也可以在 計算機(jī)可讀存儲器或存儲介質(zhì)中存儲這些計算機(jī)程序指令,該計算 機(jī)可讀存儲器或存儲介質(zhì)能引導(dǎo)處理器或其他可編程數(shù)據(jù)處理裝置 以特定方式運(yùn)行,使得在計算機(jī)可讀存儲器或存儲介質(zhì)中存儲的指 令產(chǎn)生包括指令裝置的制造物品,其中所述指令裝置實(shí)現(xiàn)了在一個 或多個流程圖塊中描述的功能。
這樣,流程圖的塊支持用于執(zhí)行所描述的功能的裝置的組合、 用于執(zhí)行所描述的功能的步驟的組合、以及用于執(zhí)行所描述的功能 的程序指令裝置。還應(yīng)該理解,流程圖的每個塊以及流程圖中的塊 的組合可由基于專用硬件的計算機(jī)系統(tǒng)或?qū)S糜布陀嬎銠C(jī)指令的 組合實(shí)現(xiàn),該基于專用硬件的計算機(jī)系統(tǒng)執(zhí)行所描述的功能或步驟。
如圖12所示,操作開始于MR-PCIM通過遍歷所有鏈路而發(fā)現(xiàn) 該P(yáng)CIe架構(gòu)(步驟1210),其中所述鏈路通過PCIe架構(gòu)的互連的 交換機(jī)可訪問。存儲在PCIe架構(gòu)的發(fā)現(xiàn)期間所發(fā)現(xiàn)的對于每個端點(diǎn) 和根聯(lián)合體的VPD信息(步驟1220)。
MR-PCIM將對于每個端點(diǎn)的VPD信息與對于每個根聯(lián)合體的 VPD信息進(jìn)行比較,以確定給定的端點(diǎn)與給定的根聯(lián)合體是否相關(guān) 聯(lián)(步驟1230 )。對于每次比較,如果對于端點(diǎn)和根聯(lián)合體的VPD 信息相匹配,則MR-PCIM設(shè)置對應(yīng)的共同駐留字段(步驟1240)。 基于所發(fā)現(xiàn)的端點(diǎn)和根聯(lián)合體信息以及針對每個比較的共同駐留字 段的設(shè)置,MR-PCIM生成一個或多個虛擬PCI樹數(shù)據(jù)結(jié)構(gòu)(步驟 1250)。
基于所生成的虛擬PCI樹數(shù)據(jù)結(jié)構(gòu),MR-PCIM為每個端點(diǎn)在該 端點(diǎn)所屬的每個PCIe存儲器地址空間內(nèi)分配基地址和界限(步驟 1260)?;谒傻奶摂MPCI樹數(shù)據(jù)結(jié)構(gòu),MR-PCIM為每個根聯(lián)合體在根聯(lián)合體所屬的每個PCIe存儲器地址空間內(nèi)分配基地址和界 限(步驟1270)。然后,該操作終止。
已經(jīng)初始化了主機(jī)系統(tǒng)的存儲器地址空間,使得根聯(lián)合體跨過 主機(jī)系統(tǒng)可訪問端點(diǎn),然后,可使用這些存儲器地址空間,以允許 與這些根聯(lián)合體相關(guān)聯(lián)的系統(tǒng)鏡像和它們對應(yīng)的應(yīng)用來與端點(diǎn)進(jìn)行 通信。實(shí)現(xiàn)這種通信的一種方式是通過隊列系統(tǒng),該隊列系統(tǒng)利用 在不同主機(jī)系統(tǒng)中的這些經(jīng)初始化的存儲器地址空間。這種隊列系 統(tǒng)可包括工作隊列結(jié)構(gòu)和完成隊列結(jié)構(gòu)。工作隊列結(jié)構(gòu)和完成隊列 結(jié)構(gòu)二者可包括用于識別大量隊列單元(或者是工作隊列單元 (WQE)或者是完成隊列單元(CQE),這依賴于該隊列結(jié)構(gòu)是工 作隊列結(jié)構(gòu)還是完成隊列結(jié)構(gòu))的門鈴結(jié)構(gòu)、用于隊列的起始的基 地址、用于隊列的末尾的界限地址、和指示在隊列中將要處理的下 一個WQE或CQE的偏移量。可以4吏用工作隊列結(jié)構(gòu)和完成隊列結(jié) 構(gòu)二者來發(fā)送和接收數(shù)據(jù)。
圖13是示出了根據(jù)一個說明性的實(shí)施方式的用于從第一主機(jī)系 統(tǒng)向第二主機(jī)系統(tǒng)發(fā)送工作隊列單元(WQE)的過程的示例性的框 圖。出于描述的目的,假i殳建立了具有主機(jī)系統(tǒng)的系統(tǒng),所述主機(jī) 系統(tǒng)例如是通過PCIe架構(gòu)1330連接的第一主機(jī)系統(tǒng)1310和第二主 機(jī)系統(tǒng)1320,所述主機(jī)系統(tǒng)具有多個共享的PCI根聯(lián)合體,例如, RC1 1312和RC2 1322,其中第一主機(jī)系統(tǒng)1310和第二主機(jī)系統(tǒng)1:320 可以包括MRA交換機(jī)1316以及1326。進(jìn)一步假設(shè)位于具有根聯(lián) 合體RC2 1322的第二主機(jī)系統(tǒng)1320中的端點(diǎn)(例如EP2 1324)將 跨過PCIe架構(gòu)1330而與第一主機(jī)系統(tǒng)1310的根聯(lián)合體RC1 1312 共享,并且,將該端點(diǎn)恰當(dāng)?shù)赜成涞降诙鳈C(jī)系統(tǒng)1320的內(nèi)部存儲 器1380的地址空間以及第一主機(jī)系統(tǒng)的PCI總線存儲器地址空間。 可通過例如^L用前面關(guān)于例如圖10至圖12所描述的初始化^L制來 實(shí)現(xiàn)該系統(tǒng)配置。
如圖13所示,通過與兩個主機(jī)系統(tǒng)存儲器1370和1380相關(guān)聯(lián) 的存儲器空間,可訪問端點(diǎn)EP1 1314。在第一主機(jī)系統(tǒng)1310上,第
一主機(jī)系統(tǒng)的處理器通過用于第一主機(jī)系統(tǒng)的存儲器1370的第一主
機(jī)系統(tǒng)的實(shí)際存儲器地址可訪問端點(diǎn)EP1 1314。在第二主機(jī)系統(tǒng) 1320上,端點(diǎn)EP1 1314具有在第二主機(jī)系統(tǒng)的存儲器1380上的PCIe 孔徑1382,其中作為存儲器映射的I/O,通過PCI總線存儲器地址 可訪問該第二主存儲器1380。第一主機(jī)系統(tǒng)1310可^f吏用存儲器地址 轉(zhuǎn)換和保護(hù)表(ATPT) 1318,以將由第二主機(jī)系統(tǒng)1320看到的PCIe 存儲器地址映射成為用于第 一主機(jī)系統(tǒng)的存儲器空間1370的實(shí)際存 儲器地址。
類似地,通過兩個主機(jī)系統(tǒng)存儲器空間1370和1380可訪問端 點(diǎn)EP2 1324。在第二主機(jī)系統(tǒng)1320中,第二主機(jī)系統(tǒng)的處理器通過 第二主機(jī)系統(tǒng)的實(shí)際存儲器地址和存儲器地址空間1380可訪問端點(diǎn) EP2 1324。在第一主機(jī)系統(tǒng)1310中,端點(diǎn)EP2 1324具有在第一主機(jī) 系統(tǒng)的存儲器1370上的PCIe孔徑1372,其中作為存儲器映射的I/O, 通過PCI總線存儲器地址可訪問該第一主機(jī)系統(tǒng)的存儲器1370。第 二主機(jī)系統(tǒng)1320可使用存儲器地址轉(zhuǎn)換和保護(hù)表(ATPT) 1328, 以將由第一主機(jī)系統(tǒng)1310發(fā)送的PCIe存儲器地址映射到第二主機(jī) 系統(tǒng)的存儲器空間1380的實(shí)際存儲器地址。
工作隊列結(jié)構(gòu)1374可包括門鈴結(jié)構(gòu)1375,該門鈴結(jié)構(gòu)1375用 以傳遞大量的WQE、用于隊列的開始的基地址、用于隊列的末尾的 界限地址以及指示在工作隊列中將要處理的下一個WQE的偏移量。 類似地,完成隊列結(jié)構(gòu)1376可包括門鈴結(jié)構(gòu)1377,該門鈴結(jié)構(gòu)1377 用于傳遞大量的CQE、用于隊列的開始的基地址、用于隊列的末尾 的界限地址、以及指示在完成隊列中將要處理的下一個CQE的偏移 量。
為了從第一主機(jī)系統(tǒng)1310向第二主機(jī)系統(tǒng)1320發(fā)送WQE,第 一主機(jī)系統(tǒng)1310通過向其發(fā)送工作隊列1374插入一個或多個WQE 而發(fā)起該過程。每個WQE包含數(shù)據(jù)段的列表,其中每個數(shù)據(jù)段包括 都位于第二主機(jī)系統(tǒng)的PCIe存儲器總線地址空間中的基地址和界限 地址,并且還通過地址轉(zhuǎn)換和保護(hù)表(ATPT)將該基地址和界限地
址映射到在第一主機(jī)系統(tǒng)的存儲器空間1370中的實(shí)際存儲器地址。
然后,第一主機(jī)系統(tǒng)1310將所發(fā)送的WQE的數(shù)量寫入到用于 門鈴結(jié)構(gòu)1375的端點(diǎn)EP2的PCIe地址之中。通過ATPT,將用于此 門鈴結(jié)構(gòu)的地址映射到第 一 主機(jī)系統(tǒng)的P CI e存儲器總線地址空間, 并且還映射到在第二主機(jī)系統(tǒng)的存儲器空間1380中的實(shí)際存儲器地 址。當(dāng)門鈴寫操作完成時,第二主機(jī)系統(tǒng)1320的RC輪詢或者收到 一個中斷然后輪詢,以通過第 一 主機(jī)系統(tǒng)的實(shí)際存儲器地址空間 1380取回門鈴結(jié)構(gòu)1375。即,可將第二主機(jī)系統(tǒng)1320的RC配置為 周期地輪詢用于門鈴結(jié)構(gòu)1375的地址,以確定是否要處理新的 WQE??蛇x地,第一主;t幾系統(tǒng)1310對門鈴結(jié)構(gòu)1375的設(shè)置可生成 對第二主才幾系統(tǒng)1320的中斷,以向第二主才幾系統(tǒng)1320的RC通知可 獲得新的WQE用于處理。然后,第二主機(jī)系統(tǒng)1320的RC可以輪 詢用于新的WQE信息的門鈴結(jié)構(gòu)1375,并且據(jù)此處理它們。
然后,端點(diǎn)EP2 1324對根聯(lián)合體RC1 1312執(zhí)行PCIe DMA操 作以取回WQE。每個DMA操作使用第一主機(jī)系統(tǒng)的PCIe存儲器總 線地址空間,并將DMA操作的結(jié)果放入第二主機(jī)系統(tǒng)的存儲器 1380,其中在第二主機(jī)系統(tǒng)1320上,通過其實(shí)際存儲器地址空間可 訪問第二主機(jī)系統(tǒng)的存儲器1380。這樣,使用主機(jī)系統(tǒng)1310和1320 的初始化的共享存儲器,實(shí)現(xiàn)了在不同主機(jī)系統(tǒng)1310和1320中的 根聯(lián)合體和端點(diǎn)之間的工作隊列單元的通信。
圖14是示出了根據(jù)一個說明性的實(shí)施方式的用于從第二主機(jī)系 統(tǒng)1320向第一主機(jī)系統(tǒng)1310發(fā)送完成隊列單元(CQE)的過程的 示例性的框圖。如圖14所示, 一旦完成了與一個WQE或一組WQE 相關(guān)聯(lián)的工作,則端點(diǎn)EP2 1324對根聯(lián)合體RC1 1312執(zhí)行一個或 多個PCIe DMA操作,以向根聯(lián)合體RC1 1312發(fā)送一個或多個CQE。 在RC1 1312可以輪詢或等待指示CQE可用的中斷的意義上,可以 使用門鈴。
每個DMA操作使用第 一 主機(jī)系統(tǒng)的PCIe存儲器總線地址空間, 并將結(jié)果放入第一主機(jī)系統(tǒng)1310上的存儲器1370,其中在第一主機(jī)系統(tǒng)1310上,通過其實(shí)際存儲器地址空間可訪問第一主機(jī)系統(tǒng)的存儲器1370。優(yōu)選地,將結(jié)果存儲在存儲器1370的DMA可尋址部分, 依賴于所使用的特定OS, DMA可尋址部分位于存儲器1370中的不 同部分。
圖15是概括了根據(jù) 一 個示例性實(shí)施方式的用于在第 一 主機(jī)系統(tǒng) 的根聯(lián)合體和與第二主機(jī)系統(tǒng)相關(guān)聯(lián)的端點(diǎn)之間傳送WQE的示例 性操作的示例性流程圖。如圖15所示,該操作開始于第一主機(jī)系統(tǒng) 向其發(fā)送工作隊列插入一個或多個WQE(步驟1510)。然后,第一 主機(jī)系統(tǒng)將所發(fā)送的WQE的數(shù)量寫入對于門鈴結(jié)構(gòu)的目標(biāo)端點(diǎn)的 PCIe地址之中(步驟1520 )。當(dāng)門鈴寫操作完成時,第二主機(jī)系統(tǒng)輪詢或者收到中斷然后輪詢,以通過第 一 主機(jī)系統(tǒng)的實(shí)際存儲器地 址空間來取回門鈴結(jié)構(gòu)(步驟1530)。
然后,目標(biāo)端點(diǎn)對第一主機(jī)系統(tǒng)的根聯(lián)合體執(zhí)行PCIe DMA操 作,以取回WQE (步驟1540)。然后,目標(biāo)端點(diǎn)將DMA操作的結(jié) 果放入第二主機(jī)系統(tǒng)的存儲器(步驟1550 )。然后,該操作終止。
圖16是概括了根據(jù)一個示例性實(shí)施方式的用于從第二主機(jī)系統(tǒng) 的端點(diǎn)向第 一主機(jī)系統(tǒng)的根聯(lián)合體傳送CQE的示例性操作的示例性 流程圖。該操作開始于端點(diǎn)完成與向端點(diǎn)提交的 一 個或多個WQE相 關(guān)聯(lián)的處理工作(步驟1610)。然后,該端點(diǎn)對與主機(jī)系統(tǒng)相關(guān)聯(lián) 的根聯(lián)合體執(zhí)行一個或多個PCIe DMA才喿作,以向根聯(lián)合體發(fā)送一 個或多個CQE,其中從該主機(jī)系統(tǒng)接收該一個或多個WQE (步驟 1620 )。將DMA操作的結(jié)果放入第 一主機(jī)系統(tǒng)的存儲器(步驟1630 )。 然后,該操作終止。
這樣,可使用說明性的實(shí)施方式的共享存儲器,以提供隊列結(jié) 構(gòu),其中通過該隊列結(jié)構(gòu),可在不同主機(jī)系統(tǒng)上的根聯(lián)合體和端點(diǎn) 之間交換工作請求和完成消息。這樣,根聯(lián)合體可以同與提供了該 根聯(lián)合體的主機(jī)系統(tǒng)不同的主機(jī)系統(tǒng)上的端點(diǎn)進(jìn)行通信,并且反之 亦然。
根據(jù)在此示例性的一種實(shí)施方式,可建立一種面向事務(wù)的協(xié)議,
用于使用說明性的實(shí)施方式的共享存儲器,以在相同或不同的主機(jī) 系統(tǒng)的根聯(lián)合體和端點(diǎn)之間通信。如同下文將要描述的,面向事務(wù) 的協(xié)議描述了將由例如根聯(lián)合體或端點(diǎn)的各種單元執(zhí)行的 一 系列事 務(wù),以推送或拉回數(shù)據(jù)。
返回圖13,上文關(guān)于向端點(diǎn)提供WQE并向根聯(lián)合體返回CQE 的方式的描述是拉回-拉回-推送協(xié)議的一個例子。即,響應(yīng)于第一主 機(jī)系統(tǒng)1310對門鈴結(jié)構(gòu)1375的寫入,第二主機(jī)系統(tǒng)1320的端點(diǎn)EP2 1324使用PCIe DMA操作從第一主機(jī)系統(tǒng)的共享存儲器1370拉回 WQE。這些WQE提供了用于將要執(zhí)行的操作的"命令"?;谠?WQE中存儲的段信息,第二主機(jī)系統(tǒng)1320的端點(diǎn)EP2 1324從在第 一主機(jī)系統(tǒng)的共享存4諸器1370的工作隊列結(jié)構(gòu)1374中拉回對應(yīng)的 數(shù)據(jù)。 一旦完成了對應(yīng)于WQE的工作,則第二主4凡系統(tǒng)1320的端 點(diǎn)EP2 1324使用一個或多個PCIe DMA操作向第一主機(jī)系統(tǒng)1310 的根聯(lián)合體RC1 1312推送CQE。這樣,在上文描述的圖13的例子 中利用了拉回-拉回-推送事務(wù)協(xié)議。
拉回和推送事務(wù)的其他可能的組合對于不同的事務(wù)協(xié)議的建立也是可能的。圖17是示出了可以用于執(zhí)行在相同或不同主機(jī)系統(tǒng)的 根聯(lián)合體和端點(diǎn)之間的通信的事務(wù)的多種可能組合的示例性表。如 圖17所示,可以連同說明性的實(shí)施方式的機(jī)制一起來利用拉回和推 送事務(wù)的任何組合,以便由此建立事務(wù)協(xié)議,用于對說明性的實(shí)施 方式的共享存儲器的使用。
根聯(lián)合體和端點(diǎn)負(fù)責(zé)實(shí)施選擇的協(xié)議。例如,OS系統(tǒng)棧和端點(diǎn) 執(zhí)行操作,用于拉回和推送數(shù)據(jù),作為諸如如前所述的選擇的事務(wù) 協(xié)議的部分。對將要利用的協(xié)議的選擇依賴于由端點(diǎn)所利用的特定 的PCIe架構(gòu),例如InfiniBand或以太網(wǎng)架構(gòu)??梢愿鶕?jù)編程的選擇, 例如是否使用輪詢、中.斷處理或輪詢和中斷處理的組合,來確定協(xié) 議的特殊性。
說明性的實(shí)施方式的機(jī)制可進(jìn)一步用于支持基于套接字協(xié)議的 通信,該通信是通過上述的共享存儲器來在相同或不同主機(jī)系統(tǒng)的根聯(lián)合體和端點(diǎn)之間進(jìn)行。當(dāng)存在恒定的連接時,可使用這種套接字協(xié)議。可基于所希望的效率和可靠性來確定是使用套接字協(xié)議還 是基于事務(wù)的協(xié)議,諸如,上文描述的推送-拉回事務(wù)。
利用套接字協(xié)議,可使用在主機(jī)系統(tǒng)中的工作隊列,以偵聽輸入的套接字初始化請求。即,希望與第二主機(jī)系統(tǒng)建立套接字通信 連接的第一主機(jī)系統(tǒng)可在其工作隊列中生成套接字初始化請求WQE,并向該第二主機(jī)系統(tǒng)通知該套接字初始化請求WQE對處理可用。然后,第二主機(jī)系統(tǒng)可接受或拒絕該請求。如果第二主機(jī)系統(tǒng)接受該請求,它返回套接字參數(shù)的后一半,用于由第一主機(jī)系統(tǒng) 在第一和第二主機(jī)系統(tǒng)之間執(zhí)行基于套接字的通信中使用。這種通信可以涉及例如在主機(jī)系統(tǒng)之間的拉回事務(wù)和/或推送事務(wù)。
圖18是示出了根據(jù)一個說明性的實(shí)施方式的用于在第一主機(jī)系 統(tǒng)和第二主機(jī)系統(tǒng)之間建立套接字并執(zhí)行基于套接字的通信的過程 的示例性的框圖。在說明性的實(shí)施方式的基于套接字的實(shí)現(xiàn)中,在 主機(jī)系統(tǒng)(諸如主機(jī)系統(tǒng)1810)上的端點(diǎn)(諸如EP2 1824)包含接 收緩沖器1876、緩沖器滿標(biāo)記1877以及門鈴結(jié)構(gòu)1878。緩沖器滿 標(biāo)記1877和門鈴結(jié)構(gòu)1878可包括用以指示事件已經(jīng)發(fā)生的存儲器 中的地址。例如主才幾系統(tǒng)1810的發(fā)送者主機(jī)系統(tǒng)通過在接收者主機(jī)系統(tǒng)1820的存儲器1870中的PCIe孔徑1872來寫入門鈴結(jié)構(gòu)1878, 其中PCIe孔徑1872可由發(fā)送者主機(jī)系統(tǒng)的根聯(lián)合體RC1 1812訪問, 對應(yīng)于例如端點(diǎn)EP2 1824的連接端點(diǎn)。
如前所述,在為實(shí)現(xiàn)在相同或不同的主才幾系統(tǒng)上的多個才艮聯(lián)合體之間共享端點(diǎn)而初始化主機(jī)系統(tǒng)的共享存儲器期間,針對每個所
發(fā)現(xiàn)的根聯(lián)合體和端點(diǎn)來讀出重要產(chǎn)品數(shù)據(jù)(VPD)信息,以便生成虛擬PCI樹數(shù)據(jù)結(jié)構(gòu)。該VPD信息可包括指示特定的根聯(lián)合體或 端點(diǎn)是否支持PCIe上的套接字的字段。根據(jù)一種說明性的實(shí)施方式, 可使用此信息以標(biāo)識可以與哪些端點(diǎn)建立套接字用于基于套接字的 通信。
這樣,在初始化期間,第一主機(jī)系統(tǒng)1810可以例如通過在用于端點(diǎn)EP2 1824的VPD中的供應(yīng)商特定字^:、可由如前所述的 MR-PCIM以及由主機(jī)系統(tǒng)自身可訪問的位于EP中的VPD信息,來 確定端點(diǎn)EP2 1824支持PCIe上的套接字。類似地,第二主機(jī)系統(tǒng) 1820可通過在對于端點(diǎn)EP1 1814的VPD信息中的其供應(yīng)商特定字 段來確定端點(diǎn)EP1 1814支持PCIe上的套4妄字。
每個主機(jī)系統(tǒng)1810和1820具有工作隊列(WQ) 1850和1860, 該工作隊列用于監(jiān)聽輸入的套接字初始化請求。例如,第二主機(jī)系 統(tǒng)1820 (即,接收主機(jī)系統(tǒng))阻塞或等待到其工作隊列1860表面的 套4妄字初始化請求,或拉回端點(diǎn)EP2 1824的門鈴結(jié)構(gòu)1878,以確定 套接字初始化請求是否已經(jīng)到達(dá)。套接字初始化請求包含到工作隊 列1850中的基、界限和起始偏移量,這將用于套接字的第一主機(jī)系 統(tǒng)的那一半。
第一主機(jī)系統(tǒng)1810 (即,發(fā)送主機(jī)系統(tǒng))可在其工作隊列1850 中生成套接字初始化請求,并可以寫入EP2 1824的門鈴結(jié)構(gòu)1878, 指示套接字初始化請求WQE可用。 一旦在門鈴結(jié)構(gòu)1878中取回數(shù) 據(jù)時,第二主機(jī)系統(tǒng)的端點(diǎn)EP2 1824可執(zhí)行PCIe DMA操作,以使 用根聯(lián)合體RC1的PCIe總線存儲器地址來從第 一主機(jī)系統(tǒng)的工作隊 列1850中取回套接字初始化請求,端點(diǎn)EP2 1824可訪問該根聯(lián)合 體RC1的PCIe總線存儲器地址。
然后,第二主機(jī)系統(tǒng)1820可解析該套接字初始化請求,并且以 應(yīng)用或操作系統(tǒng)特定的方式確定接受還是拒絕該套接字初始化請 求。如果第二主機(jī)系統(tǒng)1820拒絕套接字初始化請求,則第二主機(jī)系 統(tǒng)1820向第 一主機(jī)系統(tǒng)的根聯(lián)合體RC1 1812發(fā)送非連接響應(yīng)PCIe DMA,并且如果需要,則中斷第一主機(jī)系統(tǒng)的根聯(lián)合體RC1 1812。
如果第二主機(jī)系統(tǒng)1820接受套接字初始化請求,則端點(diǎn)EP2 1824對第 一主機(jī)系統(tǒng)的根聯(lián)合體RC1 1812執(zhí)行PCIe DMA操作,指 示套接字參數(shù)的后一半,即,基、界限和在工作隊列1860內(nèi)的起始
偏移量,用于套接字的第二主機(jī)系統(tǒng)的那一半。
一旦已經(jīng)以上述方式初始化了套接字,可按照拉回事務(wù)或推送事務(wù)兩種方式之一,使用建立的套接字來執(zhí)行發(fā)送/接收操作。利用
拉回事務(wù),第一主才幾系統(tǒng)1810的根聯(lián)合體RC1 1812通過向其工作 隊列1850寫入WQE而執(zhí)行發(fā)送操作,并然后寫入與端點(diǎn)EP2 1824 相關(guān)聯(lián)的門鈴結(jié)構(gòu)1878,其中通過根聯(lián)合體RC1 1812PCIe總線存 儲器地址空間可訪問該門鈴結(jié)構(gòu)1878。當(dāng)門鈴寫入操作完成時,第 二主機(jī)系統(tǒng)或者1820輪詢或者收到中斷然后輪詢,以通過第二主機(jī) 系統(tǒng)的實(shí)際存儲器地址空間來取回門鈴結(jié)構(gòu)1878。端點(diǎn)EP2 1824然 后對根聯(lián)合體RC1 1812執(zhí)行PCIeDMA操作,以取回與發(fā)送操作相 關(guān)聯(lián)的WQE。PCIe DMA操作使用第一主機(jī)系統(tǒng)的PCIe存儲器總線 地址空間,并將結(jié)果放入第二主機(jī)系統(tǒng)上的存儲器1880,其中通過 第二主機(jī)系統(tǒng)的實(shí)際存儲器地址空間可訪問該存儲器1880。第二主 機(jī)系統(tǒng)1820然后取回在WQE中描述的并且與發(fā)送4喿作相關(guān)聯(lián)的數(shù) 據(jù)段。
當(dāng)?shù)诙鳈C(jī)系統(tǒng)完成在WQE中的工作請求時,端點(diǎn)EP2 1824 對根聯(lián)合體RC1 1812執(zhí)行PCIe DMA操作,以推送信令通知發(fā)送才喿 作已經(jīng)完成的CQE。該DMA操作使用第一主機(jī)系統(tǒng)的PCIe存儲器 總線地址空間,并將結(jié)果放入第一主機(jī)系統(tǒng)上的存儲器1870,其中 通過第 一主機(jī)系統(tǒng)的實(shí)際存儲器地址空間可訪問該存儲器1870。
對于推送事務(wù),根聯(lián)合體RC2 1822寫入用于端點(diǎn)EP1 1814的 門鈴結(jié)構(gòu)1888,指示已經(jīng)可用的接收WQE的數(shù)量。當(dāng)端點(diǎn)EP1 1814 有數(shù)據(jù)要發(fā)送時,端點(diǎn)EP1 1814檢查以確定端點(diǎn)EP1 1814在根聯(lián)合 體RC2 1822的工作隊列1860上是否具有可用的接收WQE。如果沒 有可用的接收WQE,則根聯(lián)合體RC1 1812寫入端點(diǎn)EP2的緩沖器 滿標(biāo)記1887,以指示第一主機(jī)系統(tǒng)1810有數(shù)據(jù)要在套接字上發(fā)送, 而第二主機(jī)系統(tǒng)1820針對該套接字需要通過接收WQE來公告 一 些 緩沖區(qū)。
如果存在可用的接收WQE,.則第二端點(diǎn)EP2 1824對根聯(lián)合體 RC1 1812執(zhí)行PCIe DMA操作,以取回在根聯(lián)合體RC1的工作隊列 1850中下一個可用的WQE。 DMA操作使用第一主機(jī)系統(tǒng)的PCIe
存儲器總線地址空間,并將結(jié)果放入在第二主機(jī)系統(tǒng)1820上的存儲 器1880中,其中通過第二主機(jī)系統(tǒng)的實(shí)際存儲器地址空間可訪問該 存儲器1880。然后,第二主機(jī)系統(tǒng)1820將其數(shù)據(jù)發(fā)送到在接收WQE 中傳遞的數(shù)據(jù)段。
當(dāng)?shù)诙鳈C(jī)系統(tǒng)1820完成工作^清求時,端點(diǎn)EP2 1824然后對才艮 聯(lián)合體RC1 1812執(zhí)行PCIe DMA操作,以推送信令通知發(fā)送才喿作已 經(jīng)完成的CQE。該DMA操作使用第一主機(jī)系統(tǒng)的PCIe存儲器總線 地址空間,并將結(jié)果放入第一主機(jī)系統(tǒng)1810上的存儲器,其中通過 第 一 主機(jī)系統(tǒng)的實(shí)際存儲器地址空間可訪問該存儲器。
圖19是概括了根據(jù) 一 個說明性的實(shí)施方式的用于使用基于套接 字的通信連接來執(zhí)行拉回事務(wù)的示例性操作的流程圖。該操作開始 于第一主機(jī)系統(tǒng)的根聯(lián)合體向其工作隊列寫入WQE (步驟1910), 并然后寫入與目標(biāo)端點(diǎn)相關(guān)聯(lián)的門鈴結(jié)構(gòu)(步驟1920)。當(dāng)門鈴寫 入操作完成時,第二主機(jī)系統(tǒng)輪詢或者收到中斷然后輪詢,以通過 第二主機(jī)系統(tǒng)的實(shí)際存儲器地址空間來取回門鈴(步驟1930 )。
目標(biāo)端點(diǎn)然后對第 一主機(jī)系統(tǒng)的根聯(lián)合體執(zhí)行PCIe DMA操作, 以取回與發(fā)送操作相關(guān)聯(lián)的WQE (步驟1940)。目標(biāo)端點(diǎn)將PCIe DMA操作的結(jié)果放入在第二主機(jī)系統(tǒng)上的存儲器(步驟1950)。第 二主機(jī)系統(tǒng)然后取回在WQE中描述的并且與發(fā)送操作相關(guān)聯(lián)的數(shù) 據(jù)段(步驟1960)。
響應(yīng)于第二主機(jī)系統(tǒng)完成在WQE中請求的工作(步驟1970), 目標(biāo)端點(diǎn)對第一主機(jī)系統(tǒng)的根聯(lián)合體執(zhí)行PCIe DMA操作,以推送 信令通知發(fā)送操作已經(jīng)完成的CQE (步驟1980)。第一主機(jī)系統(tǒng)的 根聯(lián)合體將PCIe DMA操作的結(jié)果放入第一主機(jī)系統(tǒng)的存儲器(步 驟1990 )。然后,該#:作終止。
圖20是概括了根據(jù) 一個說明性的實(shí)施方式的用于使用基于套接 字的通信連接來執(zhí)行推送事務(wù)的示例性操作的流程圖。第二主機(jī)系 統(tǒng)的根聯(lián)合體寫入用于第 一 主機(jī)系統(tǒng)的端點(diǎn)的門鈴結(jié)構(gòu),指示根聯(lián) 合體已經(jīng)可用的接收WQE的數(shù)量(步驟2010)。響應(yīng)于第一主機(jī)
系統(tǒng)的端點(diǎn)具有要發(fā)送的數(shù)據(jù)(步驟2020),第一主機(jī)系統(tǒng)的端點(diǎn)
才全查以確定該端點(diǎn)在第二主機(jī)系統(tǒng)的才艮聯(lián)合體的工作隊列上是否具
有任何可用的接收WQE (步驟2030 )。如果沒有可用的接收WQE, 則第 一主機(jī)系統(tǒng)的根聯(lián)合體將第二主機(jī)系統(tǒng)的緩沖器滿標(biāo)記寫入第 二端點(diǎn),以指示第一主機(jī)系統(tǒng)有數(shù)據(jù)要在套接字上發(fā)送,并且第二 主機(jī)系統(tǒng)需要針對該套接字將接收WQE記入一些緩沖器(步驟 2040 )。然后,操作返回到步驟2030。
如果存在可用的接收WQ E,第二端點(diǎn)對第 一 主機(jī)系統(tǒng)的根聯(lián)合 體執(zhí)行PCIe DMA操作,以取回在第一主機(jī)系統(tǒng)的工作隊列的根聯(lián) 合體上可用的下一個WQE(步驟2050 )。第二端點(diǎn)將PCIeDMA操 作的結(jié)果放入在第二主機(jī)系統(tǒng)上的存儲器(步驟2060)。然后,第 二主機(jī)系統(tǒng)將其數(shù)據(jù)發(fā)送到在接收WQE中傳遞的數(shù)據(jù)段(步驟 2070)。
當(dāng)?shù)诙鳈C(jī)系統(tǒng)完成了所請求的工作時,第二端點(diǎn)對第 一 主機(jī) 系統(tǒng)的根聯(lián)合體執(zhí)行PCIe DMA操作,以推送信令通知發(fā)送操作已 經(jīng)完成的CQE (步驟2080)。第二端點(diǎn)將PCIeDMA操作的結(jié)果放 入在第一主機(jī)系統(tǒng)上的存儲器(步驟2090)。然后,該操作終止。
如同上文所討論的,多根系統(tǒng)的端點(diǎn)可以支持具有一個或多個 相關(guān)聯(lián)的虛擬功能的一個或多個物理功能。說明性的實(shí)施方式的機(jī) 制,除了在相同或不同的主機(jī)系統(tǒng)的根聯(lián)合體和端點(diǎn)之間提供通信, 也提供用于管理端點(diǎn)的物理和虛擬功能的機(jī)制。由說明性的實(shí)施方 式的機(jī)制提供的 一種功能提供了將單根無狀態(tài)虛擬功能及其相關(guān)聯(lián) 的應(yīng)用從一個物理功能遷移到相同端點(diǎn)上的另一個的能力。對于滿 足在系統(tǒng)管理領(lǐng)域?qū)ω?fù)載均衡能力的不斷增長的需要來說,該遷移 功能性是重要的。
通過遷移VF及其相關(guān)聯(lián)的應(yīng)用(該應(yīng)用是依賴于VF而操作的 應(yīng)用),可補(bǔ)充不同的資源,以在更有效的環(huán)境中繼續(xù)操作。例如, 利用負(fù)載均衡,可以使用說明性的實(shí)施方式的機(jī)制來移動以太網(wǎng)VF 及其相關(guān)聯(lián)的依賴的應(yīng)用,以便利用在不同PF上可用的較快(例如,
較少擁塞)連接的優(yōu)勢,其中PF可以與不同的SI或甚至EP相關(guān)聯(lián)
在一起。
圖21A和21B是示出了根據(jù)一個說明性的實(shí)施方式的從在相同 端點(diǎn)(例如,PCIe適配器)上的一個物理功能向另一個物理功能的 虛擬功能及其相關(guān)聯(lián)的應(yīng)用的單根無狀態(tài)遷移的示例性示意圖。如 圖21A中所示,如連接單元2110和2120的虛線所示,與系統(tǒng)鏡像
(SI) 2105相關(guān)聯(lián)的應(yīng)用2110與虛擬功能(VF) 2120相關(guān)聯(lián)?;?于來自SR-PCIM 2100的信息,軟件中介2115可以向系統(tǒng)管理員或 者等同的管理負(fù)責(zé)人來描述遷移場景。這可以包括但不限于顯示在 PCIe架構(gòu)中可用的等同的VF,該VF可以是用于經(jīng)由系統(tǒng)管理4妄口
(未示出)遷移的目標(biāo)。
可以例如基于VF遷移能力位來確定可由SR-PCIM2100描述的 特定的遷移場景,其中SR-PCIM訪問該VF遷移能力位以確定特定 的VF是否可遷移?;趤碜許R-PCIM2100的所述信息,SWI2115 可以通過管理控制臺或?qū)嶓w解譯并將此數(shù)據(jù)轉(zhuǎn)換為對用戶可用的 VF遷移場景。這些遷移場景將高度依賴于所討論的組件的設(shè)計。例 如,為了遷移以太網(wǎng)適配器,OS可能必須對其進(jìn)行解配置。如果 OS沒有提供這種功能性,則管理實(shí)用工具將無法描述這種場景。換 言之,管理實(shí)用工具維護(hù)組件(系統(tǒng)鏡像類型、硬件等)的知識, 然后使用該知識來描述遷移場景。所述信息以及存儲于VF的遷移能 力位中的遷移能力信息標(biāo)識哪些用于遷移的場景可供選擇。
系統(tǒng)管理員啟動該過程,以遷移所希望的VF 2120和相關(guān)^f關(guān)的 應(yīng)用2110。例如,諸如在圖形用戶界面顯示中,管理軟件(未示出) 可將VF及其相關(guān)聯(lián)的應(yīng)用描述為實(shí)體,其中可在主機(jī)系統(tǒng)和PCIe 架構(gòu)上的可用資源之間遷移所述實(shí)體。管理軟件可以存在于諸如從 國際商業(yè)機(jī)器公司可獲得的HM C的硬件管理控制臺上、或者存在于 設(shè)計為與固件(例如,軟件中介或管理程序)交互并控制硬件資源 的功能的系統(tǒng)運(yùn)行軟件的任何其他控制臺或部分之中。
運(yùn)行在主機(jī)系統(tǒng)上的軟件中介(SWI) 2115可向SI-A2105發(fā)送請求,以請求完成所有的未完成的請求或遷移VF2120的靈活性,其 中軟件中介(SWI) 2115是任意類型的固件或軟件代碼,其使用在 管理應(yīng)用和硬件之間以創(chuàng)建允許額外的功能性的抽象層。例如,SI-A 2105和SWI2115可以具有應(yīng)用程序接口 ( API) , SI-A 2105和SWI 2115通過應(yīng)用程序接口 (API)進(jìn)行通信。SI-A 2105可以通過暫停 或停止使用VF 2120的任何應(yīng)用2110來響應(yīng)該請求。SI-A 2105可 以確保完成對VF 2120的未完成的所有請求。本質(zhì)上,SI-A 2105枱r 查以確信所有的隊列都處于表示沒有未決的請求以及已經(jīng)完成了所 有事務(wù)的狀態(tài)中。例如,完全此任務(wù)的一種方式是檢查所有的WQE 都具有對應(yīng)的CQE。
然后,SI-A 2105可以對其VF 2120的邏輯表示進(jìn)行解配置,有 效地停止SI-A對VF 2120的使用。這是可以由例如用于在SI-A 2105 上的VF2120的設(shè)備驅(qū)動器(未示出)執(zhí)行的操作。然后SI-A 2105 可以向SWI 2115通知所有請求已經(jīng)完成以及可以移除VF 2120。SWI 2115接著可以從SI-A 2105中移除VF 2120。這將使VF 2120呈現(xiàn)出 由SI-A 2105不可^l罙測和不可配置。SWI 2115現(xiàn)在可以通過清除在 端點(diǎn)的配置空間中的VF的表示來將VF2120^Mv目標(biāo)物理功能(PF)2135中分離。
現(xiàn)在參考圖21B,然后,SWI 2115可以將目標(biāo)VF 2145附接到 其PF 2140。然后SWI 2115使得VF 2145可用于由SI-A 2105進(jìn)行 配置,并指示SI-A 2105配置VF 2145。例如,SWI2115更新在固件 中的SI-A的設(shè)備樹,以包括例如VF 2145的新設(shè)備,該VF 2145可 以呈現(xiàn)為例如新的端點(diǎn)。該新端點(diǎn)或VF 2145可以是任何類型的端 點(diǎn)設(shè)備,其在OS中的邏輯表示依賴于在SI-A的設(shè)備樹中發(fā)現(xiàn)它的 設(shè)備驅(qū)動器,其中由固件代碼將該設(shè)備樹提供給OS。 一旦在SI-A 的設(shè)備樹中存在用于新設(shè)備(例如VF 2145 )的實(shí)體,則用于該設(shè)備 的設(shè)備驅(qū)動器將檢測并配置該新設(shè)備。
一旦SI-A 2105使用例如設(shè)備驅(qū)動器配置VF 2145,則相關(guān)聯(lián)的 應(yīng)用2110能夠使用VF2145。現(xiàn)在,SWI 2115現(xiàn)在可指示SI-A 2105啟動完成該遷移的相關(guān)聯(lián)的應(yīng)用2110。結(jié)果,如由虛線所示,應(yīng)用
2110和VF2120依然是相關(guān)聯(lián)的,但已經(jīng)將VF 2120從其與PF 2135 相關(guān)聯(lián)遷移到現(xiàn)在的與PF2140相關(guān)聯(lián)。
圖22A和圖22B是示出了根據(jù)一個說明性的實(shí)施方式的從例如 PCIe適配器的一個端點(diǎn)向另一個端點(diǎn)的對虛擬功能(VF)及其相關(guān) 聯(lián)的應(yīng)用的單根無狀態(tài)遷移的示例性示意圖。用于從 一 個端點(diǎn)向另 一個的VF的無狀態(tài)遷移的#:作類似于上文關(guān)于圖21A和圖21B的 描述。總而言之,在圖21A至圖21B的操作和圖22A至圖22B的操 作之間的主要的不同在于VF位于不同的端點(diǎn)上,而不是僅與在相 同端點(diǎn)內(nèi)的不同的物理功能相關(guān)聯(lián)。
如圖22A中所示,如由連接單元2210和2220的虛線所示的, 與系統(tǒng)鏡像(SI) 2205相關(guān)聯(lián)的應(yīng)用2210是與虛擬功能(VF) 2220 相關(guān)聯(lián)。SR-PCIM2200向系統(tǒng)管理員或等同的管理負(fù)責(zé)人描述遷移 場景。這可以包括但不限于顯示在PCIe架構(gòu)上可用的等同的VF, 其中所述VF可以是用于經(jīng)由系統(tǒng)管理接口(未示出)的遷移的目標(biāo)。
系統(tǒng)管理員啟動該過程,以遷移所希望的VF 2220和相關(guān)連的 應(yīng)用2210。例如,管理軟件(未示出)可將VF及其相關(guān)聯(lián)的應(yīng)用 描述為諸如在管理控制臺或?qū)嶓w的圖形用戶界面顯示中的實(shí)體,其 中可在P CI e架構(gòu)和主機(jī)系統(tǒng)上的可用資源之間遷移所述實(shí)體。運(yùn)行 在主機(jī)系統(tǒng)上的軟件中介(SWI) 2215可以向SI-A 2205發(fā)送針對待 遷移的VF 2220完成所有未完成的請求的請求。例如,SI-A 2205和 SWI 2215可以具有應(yīng)用程序接口 ( API),其中SI-A 2205和SWI 2215 通過該應(yīng)用程序接口 (API)進(jìn)行通信。SI-A 2205可以通過暫?;?停止使用VF 2220的任何應(yīng)用2210來響應(yīng)該請求。SI-A 2205可以 確保完成對VF 2220的所有未完成的請求。
然后,SI-A 2205可以解配置其VF 2220的邏輯表示,有效地停 止SI-A對VF 2220的使用。這是可以由例如用于在SI-A 2205上的 VF 2220的設(shè)備驅(qū)動器(未示出)執(zhí)行的操作。然后,SI-A 2205可 以向SWI 2215通知所有請求已經(jīng)完成以及可以移除VF 2220。 SWI
2215接著可以從SI-A 2205中移除VF 2220。這將使VF 2220呈現(xiàn)出 由SI-A 2205不可纟果測和不可配置。SWI 2215現(xiàn)在可以通過清除在 端點(diǎn)的配置空間中的VF的表示來將VF2220從目標(biāo)物理功能(PF) 2235中分離。
現(xiàn)在參考圖21B,然后,SWI 2215可以將目標(biāo)VF 2245附接到 其PF 2240上,該P(yáng)F 2240位于與PF 2235不同的端點(diǎn)上,其中VF 2220(現(xiàn)在是VF 2245 )最初是與PF 2235相關(guān)聯(lián)的。然后,SWI 2215 使VF 2245可用于SI-A2205進(jìn)行配置,并且指示SI-A 2205配置VF 2245。例如,SWI 2215更新在固件中的SI-A的設(shè)備樹,以包括新設(shè) 備。SI-A 2205可以使用例如設(shè)備驅(qū)動器來配置VF 2245,設(shè)備驅(qū)動 器的類型將依賴于所討論的設(shè)備或功能的特定屬性。相關(guān)聯(lián)的應(yīng)用 2210現(xiàn)在可以使用VF 2245。 SWI現(xiàn)在可以指示SI-A 2205啟動完成 遷移的相關(guān)聯(lián)的應(yīng)用2210。結(jié)果,如由虛線所示,應(yīng)用2210和VF 2220依然是相關(guān)聯(lián)的,但已經(jīng)將VF 2220從其與PF 2235相關(guān)聯(lián)遷 移到現(xiàn)在的與在不同端點(diǎn)上的PF 2240相關(guān)聯(lián)。
可以執(zhí)行類似的操作,以從一 個系統(tǒng)鏡像向另 一 個系統(tǒng)鏡像遷 移虛擬功能。圖23A和圖23B是示出了根據(jù)一個說明性的實(shí)施方式 的從一個系統(tǒng)鏡像向另 一個系統(tǒng)鏡像的對虛擬功能及其相關(guān)聯(lián)的應(yīng) 用的單根無狀態(tài)遷移的示例性圖。如圖23A所示,用于停止目標(biāo)為 待遷移的VF 2320的才喿作的#:作與前面關(guān)于圖21A和圖22A的描述 基本上相同。 一旦停止了與VF 2320相關(guān)聯(lián)的應(yīng)用2310,并且完成 了目標(biāo)為VF 2320的操作,則SI-A 2305解配置其VF 2320的邏輯表 示,向SWI 2314通知已經(jīng)完成所有請求并且可以移除VF 2320。
如果針對VF 2320將執(zhí)行SI改變,則SWI 2315將VF 2320從 相關(guān)聯(lián)的PF 2335分離,并將VF 2345附接到目標(biāo)PF 2340。目標(biāo)PF 2340可以位于相同或不同的端點(diǎn)上。SWI 2315使得VF 2345可用于 例如SI-B 2350的目標(biāo)SI進(jìn)行配置,并且指示目標(biāo)SI 2350配置VF 2345。目標(biāo)SI 2350有效地配置VF 2345, 4吏其可為相關(guān)聯(lián)(現(xiàn)在與 SI-B 2350相關(guān)聯(lián))的應(yīng)用2310所用。SWI 2315通知目標(biāo)SI 2350啟動相關(guān)聯(lián)的應(yīng)用,以使用在新的VF 2345上的資源。
圖2 4是概括了根據(jù) 一 個說明性的實(shí)施方式的用于遷移虛擬功能 的示例性操作的流程圖。如圖24所示,操作開始于用戶指定將要遷 移的VF、以及針對該VF的目標(biāo)目的地(步驟2410)。運(yùn)行在主機(jī)系統(tǒng)上的SWI向SI發(fā)送完成對VF的所有未完成的請求以Y更遷移 VF的請求(步驟2420) 。 SI暫?;蛲V故褂肰F的任何應(yīng)用(步驟 2430),并確保已經(jīng)完成了對VF的所有未完成的請求(步驟2440)。 然后,SI解配置其VF的邏輯表示(步驟2450 ) 。 SI向SWI通知已 經(jīng)完成所有請求并且可以移除VF (步驟2460)。
然后,SWI從SI中移除VF,并將VF從相關(guān)聯(lián)的PF分離(步 驟2470 )。然后,SWI將VF附接到可以在相同或不同端點(diǎn)上并且 可以與相同或不同的系統(tǒng)鏡像相關(guān)聯(lián)的的目標(biāo)PF (步驟2480)。然 后,SWI指示現(xiàn)在與VF相關(guān)聯(lián)SI來配置VF,由此使其可為相關(guān)聯(lián) 的應(yīng)用所用(步驟2490)。 SWI指示SI啟動相關(guān)聯(lián)的應(yīng)用,以使用 在新VF上的資源(步驟2495 )。然后,該操作終止。
這樣,利用說明性的實(shí)施方式,可在相同的端點(diǎn)內(nèi)、不同的端 點(diǎn)之間、以及在相同或不同端點(diǎn)上的不同的系統(tǒng)鏡像之間遷移虛擬 功能。這種遷移使得可以執(zhí)行多種負(fù)載均衡操作。而且,這種遷移 允許將虛擬功能移動到更有益于虛擬功能的有效操作的操作環(huán)境。
這樣,概括的說明性的實(shí)施方式提供了用于在相同的根聯(lián)合體 內(nèi)或跨過多個根聯(lián)合體(RC)的多個系統(tǒng)鏡像(SI)之間同時共享 例如PCIe適配器的端點(diǎn)的機(jī)制。而且,說明性的實(shí)施方式的機(jī)制支 持使用基于隊列的通信、基于推送-拉回協(xié)議的通信和基于套接字的 通信的能力。另外,說明性的實(shí)施方式提供了用于從在相同或不同 端點(diǎn)上一個物理功能向另 一個物理功能以及從一個系統(tǒng)鏡像向另一 個系統(tǒng)鏡像遷移虛擬功能及其相關(guān)聯(lián)的應(yīng)用實(shí)例的機(jī)制。
如上所述,利用說明性的實(shí)施方式的機(jī)制,相同根聯(lián)合體內(nèi)或 跨過共享共同pcie架構(gòu)的多個根聯(lián)合體的多個系統(tǒng)鏡像可以同時共 享端點(diǎn)。給予每個根聯(lián)合體及其相關(guān)聯(lián)的虛擬端點(diǎn)(VE)其自己唯
一的存儲器地址空間。例如,如果刀片機(jī)箱具有兩個處理器刀片, 其一個處理器刀片具有第一根聯(lián)合體RC1,而另一個處理器刀片具
有第二根聯(lián)合體RC2,且PCIe MRA交換機(jī)將RC1和RC2連接到可 以支持兩個VE(即VE1和VE2)的單個端點(diǎn)上,則上述機(jī)制將RC1 和VE1放置在其自己的PCIe存儲器地址空間中,該存儲器地址空間 對RC1和VC1是唯一的,且對RC2和VE2是不可見的。類似地, 說明性的實(shí)施方式的上述機(jī)制將RC2和VE2放置在其自己的PCIe 存儲器空間地址中,該存儲器空間地址對RC2和VE2是唯一的,且 對RC1和VE1是不可見的。
如前所述,RC和VE之間的所有PCIe操作都存在于由虛擬平面 劃界的虛擬層級中。RC可以定義多個虛擬平面,VE中的功能被分 配給這些虛擬平面。將端點(diǎn)劃分為多個虛擬平面支持整個虛擬端點(diǎn) 從源VP到目的地VP的移動,其被稱之為虛擬端點(diǎn)遷移??邕^虛擬 平面的虛擬端點(diǎn)遷移的應(yīng)用情境由各種更高層操作來驅(qū)動,這些更 高層操作包括系統(tǒng)鏡像遷移,工作負(fù)載均衡,以及系統(tǒng)維護(hù)。
使用系統(tǒng)鏡像遷移(包括1/0)來管理系統(tǒng)中的虛擬資源。例如, 用于將虛擬端點(diǎn)從一個虛擬平面遷移到另一個的機(jī)制可以與其關(guān)聯(lián) 的系統(tǒng)鏡像跨過根聯(lián)合體的遷移協(xié)調(diào)使用。
當(dāng)系統(tǒng)利用在正常處理中變得不平衡時,工作負(fù)載均衡是重要 的??梢允褂锰摂M端點(diǎn)的移動來平衡系統(tǒng)的工作負(fù)載。當(dāng)源系統(tǒng)進(jìn) 入過載狀態(tài)時,可以將系統(tǒng)A上的虛擬端點(diǎn)移動到系統(tǒng)B,以降低 源系統(tǒng)上的利用。當(dāng)系統(tǒng)達(dá)到最佳邊界(例如,性能,利用)時, 可以移動虛擬端點(diǎn)以重新進(jìn)入性能平衡狀態(tài)。
當(dāng)系統(tǒng)需要維護(hù)時,可以將虛擬端點(diǎn)從系統(tǒng)中移走,使得維護(hù) 可以進(jìn)行。例如,今天,數(shù)據(jù)中心正在達(dá)到功率和冷卻管理的極限。 虛擬端點(diǎn)的智能移動可以對平衡系統(tǒng)的功率和冷卻需求起到幫助。
而且,當(dāng)OS需要維護(hù)或調(diào)試時,可以將活動虛擬端點(diǎn)從系統(tǒng)中 移走以將系統(tǒng)使用減小到零。在系統(tǒng)被更新后,例如對固件的更新, 可以將活動虛擬端點(diǎn)移回被更新的系統(tǒng)。說明性的實(shí)施方式提供了用于將VE所有權(quán)從源虛擬平面移動到目的地虛擬平面的機(jī)制。圖25是示出了根據(jù)一個說明性的實(shí)施例 的用于將虛擬端點(diǎn)(VE)所有權(quán)從源虛擬平面(VP2)遷移到目的 地虛擬平面(VP1)的過程的示意圖。如圖25所示,假設(shè)存在現(xiàn)有 的部件布置,其包括與源虛擬平面VP2 2540相關(guān)聯(lián)的虛擬端點(diǎn)(VE ) 2510和源根聯(lián)合體RC2 2556。說明性的實(shí)施方式的機(jī)制允許VE 2510的所有權(quán)從源VP2 2540轉(zhuǎn)移到與根聯(lián)合體RC1 2526相關(guān)聯(lián)的 目的地虛擬平面VP1 2530。
管理應(yīng)用2580請求MR-PCIM 2590執(zhí)行針對源虛擬平面VP2 2540中的源虛擬端點(diǎn)2510的源遷移操作。通過這樣的配置,在源主 機(jī)系統(tǒng)2550上運(yùn)行的I/O虛擬化中介(IOVI) 2554接收來自 MR-PCIM 2590的源遷移中斷。如果源IOVI 2554已經(jīng)4十對與VE 2510相關(guān)聯(lián)的物理功能設(shè)置了遷移使能位,則遷移隨后發(fā)生。
I/O虛擬化中介(IOVI) 2554向源系統(tǒng)鏡像2551、 2552發(fā)送請 求,請求其處理完(drain)任何針對源虛擬功能2514和2516的未 完成請求,其中源系統(tǒng)鏡像2551、 2552與VE 2510中所有與源物理 功能2512相鏈接的源虛擬功能(例如VE 2510中的虛擬功能2514 和2516)相關(guān)聯(lián)。應(yīng)當(dāng)注意,物理功能2512和所有與其相關(guān)聯(lián)的虛 擬功能2514和2516都與一個根聯(lián)合體(例如根聯(lián)合體RC2 2556 ) 相關(guān)聯(lián)。因此,只有單個源IOVI (例如IOVI 2554)與上述操作相 關(guān)聯(lián),并且所有源系統(tǒng)鏡像都在同一虛擬平面內(nèi),例如VP2 2540內(nèi)。
一旦源IOVI 2554從所有系統(tǒng)鏡像2551, 2552接收到了通知, 指示不存在針對VE2510中任何源虛擬功能2514, 2516的剩余未完 成請求,則源10VI 2554在虛擬功能2514, 2516的配置空間中設(shè)置 適當(dāng)?shù)奈唬栽谠刺摂M功能2514, 2516上創(chuàng)建功能層級的重置,用 以清除與源虛擬功能2514, 2516相關(guān)聯(lián)的任何狀態(tài),從而為無狀態(tài) VE遷移掃清障礙。可以封裝更高層的應(yīng)用狀態(tài),為向VE2510的移 動做準(zhǔn)備。
源IOVI 2554等待直到由PCI SIG標(biāo)準(zhǔn)定義的功能層級的重置在所有虛擬功能上完成,并且向MR-PCIM 2590通知需要目的地遷移。 MR-PCIM 2590發(fā)送目的地虛擬端點(diǎn)遷移中斷到目的地IOVI 2524。 如果目的地IOVI 2524已經(jīng)針對與VE 2510相關(guān)聯(lián)的物理功能設(shè)置 了遷移使能位,則遷移隨后發(fā)生。
目的地IOVI 2524通過在配置空間中設(shè)置適當(dāng)?shù)奈?,在目的地?擬功能2518-2519上執(zhí)行功能層級的重置。然后可以將被封裝用于源 虛擬功能的更高層級應(yīng)用狀態(tài)移動到適當(dāng)位置。
如果沒有任何交換機(jī)端點(diǎn)中的其它功能與源虛擬平面VP2 2540 相關(guān)聯(lián),則MR-PCIM 2590通過/人上端口和下端口刪除與源虛擬平 面VP2 2540、源物理功能2512以及源虛擬功能2514、 2516相關(guān)聯(lián) 的地址,來重編程任何中介交換機(jī),例如可被MR-PCIM 2590基于 其表數(shù)據(jù)結(jié)構(gòu)標(biāo)識的交換機(jī)2570,該表數(shù)據(jù)結(jié)構(gòu)為MR-PCIM 2590 提供了 PCIe架構(gòu)的全局視圖。
MR-PCIM 2590然后利用用于目的地虛擬平面VP1 2530的地址 對中介交換機(jī)表進(jìn)行編程。目的地IOVI 2524然后將目的地虛擬端點(diǎn) 和目的地虛擬功能2518、 2519通知目的地系統(tǒng)鏡像SIn 2522。為了 啟動目的地VE 2560,目的地IOVI 2524然后將目的地物理功能2517 的狀態(tài)和所有目的地虛擬功能2518-2519的狀態(tài)在其可能被使用的 點(diǎn)改為"活動,,。由此,VE 2860現(xiàn)在與VP1 2530相關(guān)聯(lián),并因而 被從VP2 2540遷移到了 VP1 2530。
如果虛擬端點(diǎn)2510也被跨過端點(diǎn)遷移,用以,例如,在端點(diǎn)上 進(jìn)行同步維護(hù),MR-PCIM 2590對根聯(lián)合體和端點(diǎn)之間的中介交換積^ 重編程,使得源根聯(lián)合體RC1 2526可以訪問被遷移的目的地虛擬端 點(diǎn)2560。目的地IOVI 2524然后將目的地虛擬端點(diǎn)和目的地虛擬功 能2518、 2519通知目的地系統(tǒng)鏡像SIn 2522,并將目的地物理功能 2517和目的地虛擬功能2518-2519初始化為活動。
圖26是概括了根據(jù)一個說明性的實(shí)施方式的用于將虛擬端點(diǎn)從一個虛擬平面遷移到另一個虛擬平面的示例性操作的流程圖。如圖26所示,操作開始于管理應(yīng)用請求將由MR-PCIM執(zhí)行的虛擬端點(diǎn)
的源遷移操作(步驟2610) 。 MR-PCIM發(fā)送遷移中斷給虛擬端點(diǎn)的 源IOVI (步驟2615 )。確定是否針對與虛擬端點(diǎn)相關(guān)聯(lián)的物理功能 設(shè)置了遷移位(步驟2620)。如果沒有設(shè)置遷移位,返回錯誤消息 (步驟2625 )并終止操作。
如果針對該物理功能設(shè)置了遷移位,源IOVI請求遷移與虛擬端 點(diǎn)中的虛擬功能相關(guān)聯(lián)的系統(tǒng)鏡像處理完針對虛擬功能的未完成請 求(步驟2630 )。源IOVI然后等待來自系統(tǒng)鏡像的不再有針對虛擬 功能的未完成請求的通知(步驟2635 )。源IOVI然后針對虛擬功能 設(shè)置配置位,以啟動功能層級的重置(步驟2640)。然后可以封裝 應(yīng)用狀態(tài),用于隨虛擬端點(diǎn)的遷移一同遷移。
源IOVI等待功能層級的重置完成并將目的地遷移請求通知 MR-PCIM (步驟2650) 。 MR-PCIM發(fā)送目的地遷移中斷給目的地 IOVI (步驟2655 )。目的地IOVI通過設(shè)置適當(dāng)?shù)呐渲梦灰詥庸?能層級的重置,來執(zhí)行目的地虛擬功能的功能層級的重置(步驟 2660 )。
MR-PCIM通過移除與源虛擬平面、源物理功能和源虛擬功能相 關(guān)聯(lián)的地址來對中介交換機(jī)(如果有)重編程(步驟2665 )。 MR-PCIM 利用用于目的地虛擬平面的地址對中介交換機(jī)重編程(步驟2670)。 目的地IOVI將目的地虛擬功能通知相關(guān)聯(lián)的系統(tǒng)鏡像,并將現(xiàn)在與 目的地虛擬平面相關(guān)聯(lián)的目的地虛擬功能初始化為活動(2675 )。 操作然后終止。
這樣,除了可以在系統(tǒng)鏡像和端點(diǎn)之間遷移虛擬功能外,說明 性的實(shí)施方式的機(jī)制還提供了用于在PCIe架構(gòu)中主機(jī)系統(tǒng)的虛擬平 面之間遷移虛擬端點(diǎn)及其相關(guān)聯(lián)的虛擬功能的功能。說明性的實(shí)施 方式的機(jī)制還提供了虛擬功能從一個虛擬平面到另 一個虛擬平面的 遷移。在優(yōu)選實(shí)施方式中,每個根聯(lián)合體只使用一個虛擬平面(可 能存在的根聯(lián)合體的例外是同時具有管理平面和普通地址平面), 因此這種遷移是在根聯(lián)合體之間的。然而,應(yīng)當(dāng)理解,說明性的實(shí) 施方式不限于此,且PCIe架構(gòu)的虛擬平面之間的任何遷移都可以利
用說明性的實(shí)施方式的機(jī)制。
如上文與虛擬端點(diǎn)遷移一同討論的,跨過虛擬平面的虛擬功能 遷移的應(yīng)用情境由多種更高層操作來驅(qū)動,這些更高層操作包括系 統(tǒng)鏡像遷移,工作負(fù)載均衡,以及維護(hù)操作。系統(tǒng)鏡像遷移(包括 I/O)被用以管理系統(tǒng)中的虛擬資源。例如,用于將虛擬功能從一個 虛擬平面遷移到另 一個虛擬平面的機(jī)制可以與相關(guān)聯(lián)的系統(tǒng)鏡像跨 過根聯(lián)合體的遷移協(xié)調(diào)使用。
當(dāng)系統(tǒng)利用在正常處理中變得不平衡時,工作負(fù)載均衡是重要 的。虛擬功能的移動可被用以平衡系統(tǒng)上的工作負(fù)載。當(dāng)源系統(tǒng)進(jìn)入過載狀態(tài)時,可將"系統(tǒng)A"上的一些虛擬功能移動到"系統(tǒng)B" 上以降低院系統(tǒng)上的利用。而且,當(dāng)系統(tǒng)達(dá)到最優(yōu)邊界(例如,性 能、利用)時,可以移動虛擬功能以重新進(jìn)入性能平衡狀態(tài)。
當(dāng)系統(tǒng)需要維護(hù)時,可以將虛擬功能從系統(tǒng)移走,使得維護(hù)可 以進(jìn)行。當(dāng)今,資料數(shù)據(jù)中心正在達(dá)到功率和制冷管理的極限。虛 擬功能智能的移動可以對平衡系統(tǒng)的功率和制冷需求起到幫助。當(dāng) OS需要維護(hù)或調(diào)試時,為了將系統(tǒng)使用減小到零,可以將活動虛擬 動能從系統(tǒng)移走。在系統(tǒng)被升級(例如固件)之后,可以將工作移 回4皮升級的系統(tǒng)。
圖27是概括了用于將虛擬端點(diǎn)從一個虛擬平面遷移到同 一根聯(lián) 合體中另一個虛擬平面的操作的示意圖。如圖27所示,操作假設(shè)存 在已有的配置,其中源虛擬功能2710被分配給了與源根聯(lián)合體RC2 2730和源系統(tǒng)鏡像SI2 2740相關(guān)聯(lián)的源虛擬平面VP2 2720。管理應(yīng) 用2780請求MR-PCIM 2790執(zhí)行針對源虛擬平面VP2 2720中源虛 擬功能2710的源遷移操作。利用這種配置,運(yùn)行在源主機(jī)系統(tǒng)2720 上的1/0虛擬化中介(IOVI) 2750接收到源遷移中斷,其請求源系 統(tǒng)鏡像SI2 2740處理完(drain)針對將被遷移的源虛擬功能2710的 任何未完成請求。如果源IOVI2750已經(jīng)針對與VF 2710相關(guān)聯(lián)的物 理功能設(shè)置了遷移使能位,遷移隨后發(fā)生。 一旦源1OVI 2750從源系 統(tǒng)鏡像SI2接到了通知,指示沒有針對源虛擬功能2710的剩余未完成請求,則源IOVI 2750在源虛擬功能2710上執(zhí)行功能層級的重置, 以清除與虛擬功能2710相關(guān)聯(lián)的任何狀態(tài),從而為無狀態(tài)遷移掃清 障礙??梢苑庋b更高層應(yīng)用狀態(tài),為向目的地虛擬功能2791的移動 做準(zhǔn)備。
源IOVI 2750等待功能層級的重置完成,并通知MR-PCIM2790 目的地遷移被請求。MR-PCIM2790發(fā)送目的地虛擬功能中斷給目的 地IOVI 2792。如果目的地IOVI 2792已經(jīng)針對與目的地VF 2791相 關(guān)聯(lián)的物理功能設(shè)置了遷移使能位,遷移隨后發(fā)生。10VI 2792在目 的地虛擬功能2791上執(zhí)行功能層級的重置。然后將被封裝的針對源 虛擬功能的更高層次的應(yīng)用狀態(tài)移動到適當(dāng)位置。
如果任何交換機(jī)端點(diǎn)中沒有其它功能與虛擬平面VP2 2720相關(guān) 聯(lián),則源IOVI 2750通過從上端口和下端口刪除與虛擬平面VP2 2720 以及源虛擬功能2710相關(guān)聯(lián)的地址,來對任何中介交換才幾重編程。 目的地IOVI 2792然后利用用于虛擬平面VP1 2770的地址對中介交 換機(jī)編程。目的地IOVI 2792然后將目的地虛擬功能通知目的地系統(tǒng) 鏡像SI1 2793。 IOVI 2792然后將目的地虛擬功能2791的狀態(tài)在其 可能被使用的點(diǎn)改為"活動"。
如果虛擬功能2710也被跨過端點(diǎn)遷移,用以,例如,在端點(diǎn)上 進(jìn)行同步維護(hù),目的地IOVI 2792對根聯(lián)合體和端點(diǎn)之間的交換機(jī)重 編程,使得根聯(lián)合體RC1 2760可以訪問被遷移的目的地虛擬功能 2791。目的地IOVI 2792然后將目的地虛擬功能通知目的地系統(tǒng)鏡像 SI1 2793,并將目的地虛擬功能2791初始化為活動。
圖28是概括了根據(jù)一個說明性的實(shí)施方式的用于將虛擬功能從 一個虛擬平面遷移到另 一 個虛擬平面的示例性操作的流程圖。如圖 28所示,操作開始于管理應(yīng)用請求MR-PCIM執(zhí)行虛擬端點(diǎn)的源遷 移操作(步驟2810)。 MR-PCIM發(fā)送遷移中斷給虛擬端點(diǎn)的源IOVI (步驟2815)。確定是否針對與虛擬端點(diǎn)相關(guān)聯(lián)的物理功能設(shè)置了 遷移位(步驟2820)。如果沒有設(shè)置遷移位,返回錯誤消息(步驟 2825 )并終止操作。
如果針對該物理功能設(shè)置了遷移位,源IOVI請求遷移與虛擬端 點(diǎn)中的虛擬功能相關(guān)聯(lián)的系統(tǒng)鏡像處理完針對虛擬功能的未完成請求(步驟2830 )。源IOVI然后等待來自系統(tǒng)鏡像的不再有針對虛擬 功能的未完成請求的通知(步驟2835 )。源IOVI然后針對虛擬功能 設(shè)置配置位,以啟動功能層級的重置(步驟2840)。然后可以封裝 應(yīng)用狀態(tài),用于隨虛擬端點(diǎn)的遷移一同遷移(步驟2845 )。
源IOVI等待功能層級的重置完成并將目的地遷移請求通知 MR-PCIM (步驟2850 ) 。 MR-PCIM發(fā)送目的地遷移中斷給目的地 IOVI (步驟2855 ) 。 MR-PCIM確定是否針對與目的地虛擬端點(diǎn)相 關(guān)聯(lián)的物理功能設(shè)置了遷移位(步驟2860 )。如果沒有,則返回錯 誤消息(步驟2825 )。否則,如果已經(jīng)設(shè)置了遷移位,目的地IOVI 通過設(shè)置適當(dāng)?shù)呐渲梦灰詥庸δ軐蛹壍闹刂茫瑏?丸行目的地虛擬 功能妁功能層級的重置(步驟2865 )??梢詫⒈环庋b的應(yīng)用狀態(tài)也 遷移到目的地虛擬平面(步驟2870)。
MR-PCIM通過刪除與源虛擬平面、源物理功能和源虛擬功能相 關(guān)聯(lián)的地址來對中介交換機(jī)(如果有)重編程(步驟2875 )。 MR-PCIM 利用用于目的地虛擬平面的地址對中介交換機(jī)(2880 )重編程。目 的地IOVI將目的地虛擬功能通知相關(guān)聯(lián)的系統(tǒng)鏡像,并將現(xiàn)在與目 的地虛擬平面相關(guān)聯(lián)的目的地虛擬功能初始化為活動狀態(tài)(2885 )。 操作然后終止。
這樣,除了可以在端點(diǎn)、虛擬端點(diǎn)、系統(tǒng)鏡像等之間遷移虛擬 功能和應(yīng)用外,說明性的實(shí)施方式的機(jī)制還提供了用于在同 一 根聯(lián) 合體的虛擬平面之間遷移虛擬功能的功能性。說明性的實(shí)施方式的 機(jī)制提供了各種用于跨過多個系統(tǒng)鏡像和根聯(lián)合體共享端點(diǎn)的功能 性。這些功能性包括配置共享存儲器空間用于在根聯(lián)合體和端點(diǎn)之 間的通信中使用,遷移虛擬功能,端點(diǎn)等。這些各種機(jī)制均向系統(tǒng) 添加了當(dāng)需求隨時間變化時進(jìn)行擴(kuò)展的能力。而且,這些不同的機(jī) 制增強(qiáng)了工作負(fù)載均衡、同步維護(hù),以及其它所需的系統(tǒng)能力的冗 余。
請?zhí)貏e注意,盡管已經(jīng)在全功能的數(shù)據(jù)處理系統(tǒng)的上下文中描
述了本發(fā)明,但本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,本發(fā)明的處理能夠以指 令的計算機(jī)可讀介質(zhì)的形式以及各種形式來分發(fā),并且應(yīng)當(dāng)理解,
可以等同地應(yīng)用本發(fā)明,而無論實(shí)際用于執(zhí)行該分發(fā)的信號承載介
質(zhì)的特定類型。計算機(jī)可讀介質(zhì)的例子包括可記錄類型介質(zhì),諸 如軟盤、硬盤驅(qū)動器、RAM、 CD-ROM、 DVD-ROM;以及傳輸類型 介質(zhì),諸如數(shù)字和模擬通信鏈路、使用例如射頻以及光波傳輸?shù)膫?輸形式的有線或無線鏈路。計算機(jī)可讀介質(zhì)可以采用編碼格式的形 式,其中針對在特定數(shù)據(jù)處理系統(tǒng)中的實(shí)際使用,對所述編碼格式 進(jìn)行解碼。
為了示例和說明的目的,提供本發(fā)明的說明,并且本發(fā)明的說明并 非旨在窮盡性的或者將本發(fā)明限制于所公開的形式。許多修改和變型對 于本領(lǐng)域技術(shù)人員將是明顯的。選擇和說明這些實(shí)施方式,以便最好地 解釋本發(fā)明的原理和實(shí)際應(yīng)用,并使得本領(lǐng)域的其他技術(shù)人員理解本發(fā) 明,具有各種修改的各種實(shí)施方式適用于所預(yù)期的特定使用。
權(quán)利要求
1.一種在數(shù)據(jù)處理系統(tǒng)中用于將虛擬端點(diǎn)從數(shù)據(jù)處理系統(tǒng)的第一虛擬平面遷移到第二虛擬平面的方法,包括接收將與所述第一虛擬平面相關(guān)聯(lián)的第一虛擬端點(diǎn)從所述第一虛擬平面遷移到所述第二虛擬平面的遷移請求;靜默與一個或多個第一虛擬功能相關(guān)聯(lián)的請求,其中所述第一虛擬功能與所述第一虛擬平面相關(guān)聯(lián);配置與所述第二虛擬平面相關(guān)聯(lián)的第二虛擬端點(diǎn),以使其如所述第一虛擬端點(diǎn)那樣操作;配置所述通信架構(gòu),以使其將指向所述第一虛擬端點(diǎn)的輸入/輸出(I/O)請求路由到與所述第二虛擬平面相關(guān)聯(lián)的所述第二虛擬端點(diǎn);以及激活所述第二虛擬端點(diǎn)的一個或多個第二虛擬功能,使得利用所述一個或多個第二虛擬功能來處理I/O請求。
2. 根據(jù)權(quán)利要求1所述的方法,其中靜默與所述一個或多個第 一虛擬功能相關(guān)聯(lián)的請求包括確定是否存在針對所述一個或多個第一虛擬功能的未完成請求; 以及響應(yīng)于確定不存在針對所述第一虛擬功能的未完成請求,執(zhí)行所 述一個或多個第一虛擬功能的功能層級的重置。
3. 根據(jù)權(quán)利要求1所述的方法,其中配置所述第二虛擬端點(diǎn)以 使其如所述第 一虛擬端點(diǎn)那樣操作包括發(fā)送目的地遷移中斷給所述第二虛擬平面;以及 響應(yīng)于所述目的地遷移中斷,執(zhí)行所述第二虛擬平面中的所述一 個或多個虛擬功能的功能層級的重置。
4. 根據(jù)權(quán)利要求1所述的方法,其中配置通信架構(gòu)以使其將指 向所述第 一 虛擬端點(diǎn)的輸入/輸出(I/O )請求路由到與所述第二虛擬 平面相關(guān)聯(lián)的所述第二虛擬端點(diǎn)包括 在所述通信架構(gòu)的至少 一個中介交換機(jī)中刪除與所述第 一虛擬平面相關(guān)聯(lián)的一個或多個地址;以及利用用于所述第二虛擬平面的一個或多個地址對所述至少一個 中介交換機(jī)編程。
5. 根據(jù)權(quán)利要求1所述的方法,其中從第三虛擬平面中運(yùn)行的 多根外圍組件互連管理器(MR-PCIM)接收所述遷移請求。
6. 根據(jù)權(quán)利要求5所述的方法,其中所述MR-PCIM響應(yīng)于從管 理應(yīng)用接收的命令而發(fā)送所述遷移請求。
7. 根據(jù)權(quán)利要求1所述的方法,其中由所述第一虛擬平面中運(yùn) 行的輸入/輸出(I/O)虛擬化中介(IOVI)執(zhí)行接收所述遷移請求以 及靜默與所述一個或多個第 一虛擬功能相關(guān)聯(lián)的請求。
8. 根據(jù)權(quán)利要求1所述的方法,還包括封裝與所述第一虛擬端點(diǎn)相關(guān)聯(lián)的應(yīng)用的應(yīng)用狀態(tài),以產(chǎn)生應(yīng)用 狀態(tài)容器;以及將所述應(yīng)用狀態(tài)容器從所述第一虛擬平面轉(zhuǎn)移到所述第二虛擬 平面。
9. 根據(jù)權(quán)利要求1所述的方法,其中所述第一虛擬端點(diǎn)在第一 物理端點(diǎn)中,以及所述第二虛擬端點(diǎn)在不同于所述第一物理端點(diǎn)的 第二物理端點(diǎn)中。
10. 根據(jù)權(quán)利要求9所述的方法,其中所述第一物理端點(diǎn)和所述 第二物理端點(diǎn)是外圍組件互連擴(kuò)展(PCIe)適配器,以及其中所述 通信架構(gòu)是包括一個或多個PCIe交換機(jī)的PCIe架構(gòu)。
11. 一種數(shù)據(jù)處理系統(tǒng),包括提供第一虛擬平面和第二虛擬平面的主機(jī)系統(tǒng);以及 經(jīng)由通信架構(gòu)耦合到所述主機(jī)系統(tǒng)的至少 一個物理端點(diǎn),其中所 述主才幾系統(tǒng)接收將與所述第一虛擬平面相關(guān)聯(lián)的物理端點(diǎn)中的第一虛擬端 點(diǎn)從所述第 一虛擬平面遷移到第二虛擬平面的遷移請求;靜默與一個或多個第一虛擬功能相關(guān)聯(lián)的請求,其中所述第一虛 擬功能與所述第一虛擬平面相關(guān)聯(lián);配置與所述第二虛擬平面相關(guān)聯(lián)的所述物理端點(diǎn)中的第二虛擬端點(diǎn),以使其如所述第一虛擬端點(diǎn)那樣操作;配置所述通信架構(gòu),以使其將指向所述第 一虛擬端點(diǎn)的輸入/輸 出(I/O)請求路由到與所述第二虛擬平面相關(guān)聯(lián)的所述第二虛擬端 點(diǎn);以及激活所述第二虛擬端點(diǎn)的 一 個或多個第二虛擬功能,使得利用所 述一個或多個第二虛擬功能來處理1/0請求。
全文摘要
提供了一種用于將虛擬端點(diǎn)從一個虛擬平面遷移到另一個虛擬平面的系統(tǒng)和方法。利用該系統(tǒng)和方法,當(dāng)管理應(yīng)用請求將虛擬端點(diǎn)(VE)從一個虛擬平面(VP)遷移到另一個虛擬平面時,架構(gòu)管理器向輸入/輸出虛擬化中介(IOVI)提供中斷,用以執(zhí)行無狀態(tài)遷移。IOVI靜默針對VE的虛擬功能(VF)的未完成請求,促使VF的功能層級的重置,解配置中介交換機(jī)中對應(yīng)于VP的地址,并向架構(gòu)管理器通知目的地遷移被請求。架構(gòu)管理器發(fā)送中斷給目的地IOVI,目的地IOVI執(zhí)行目的地VF的功能層級的重置,并利用目的地VP的地址對中介交換機(jī)重編程。然后,可以將目的地VF設(shè)置為活動狀態(tài)。
文檔編號G06F13/12GK101206623SQ20071017022
公開日2008年6月25日 申請日期2007年11月15日 優(yōu)先權(quán)日2006年12月19日
發(fā)明者C·A·薩爾茲伯格, D·M·弗賴穆特, J·A·瓦爾加斯, R·J·雷西奧, S·M·瑟伯 申請人:國際商業(yè)機(jī)器公司