两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

在運(yùn)行的PCIe架構(gòu)中熱插/拔新組件的系統(tǒng)和方法

文檔序號(hào):6613344閱讀:264來源:國知局
專利名稱:在運(yùn)行的PCIe架構(gòu)中熱插/拔新組件的系統(tǒng)和方法
技術(shù)領(lǐng)域
本申請(qǐng)一般涉及改進(jìn)的數(shù)據(jù)處理系統(tǒng)和方法。更具體地,本申 請(qǐng)涉及用于在運(yùn)行的外圍組件互連Express ( PCIe )結(jié)構(gòu)中熱插/拔新 組件的機(jī)制。
背景技術(shù)
大部分現(xiàn)代計(jì)算設(shè)備利用使用外圍組件互連標(biāo)準(zhǔn)的某個(gè)版本或 實(shí)現(xiàn)的總線和輸入/輸出(1/0)適配器,其中外圍組件互連標(biāo)準(zhǔn)最初 由英特爾公司在20世紀(jì)90年代建立。外圍組件互連(PCI)標(biāo)準(zhǔn)規(guī) 定了用于將外圍組件附接到計(jì)算機(jī)主板的計(jì)算機(jī)總線。PCT Express 或PCIe是使用現(xiàn)有PCI編程概念的PCI計(jì)算機(jī)總線的實(shí)現(xiàn),但是該 實(shí)現(xiàn)是基于完全不同且更快的串行物理層通信協(xié)議的計(jì)算機(jī)總線。 物理層不包括可以在多個(gè)設(shè)備之間共享的雙向總線,而是包括嚴(yán)格 地連接到兩個(gè)設(shè)備的單一單向鏈路。
圖1是示出了根據(jù)PCIe規(guī)范的PCI Express ( PCIe )架構(gòu)拓樸的 示意圖。如圖1所示,PCIe架構(gòu)拓樸100包括耦合到根聯(lián)合體130 的主處理器(CPU) IOO和存儲(chǔ)器120,根聯(lián)合體130接著耦合到一 個(gè)或多個(gè)PCIe端點(diǎn)140 (在PCIe規(guī)范中使用術(shù)語"端點(diǎn)"來表示支 持PCIe的I/O適配器)、PCI Express-PCI橋150以及一個(gè)或多個(gè)互 連交換機(jī)160。根聯(lián)合體130表示將CPU/存儲(chǔ)器連接到I/O適配器 的1/0層級(jí)的根。根聯(lián)合體130包括主橋、集成了零個(gè)或多個(gè)根聯(lián)合 體的端點(diǎn)、零個(gè)或多個(gè)根聯(lián)合體事件收集器、以及一個(gè)或多個(gè)根端 口 。每個(gè)根端口支持單獨(dú)的1/0層級(jí)。I/0層級(jí)可以包括根聯(lián)合體130、 零個(gè)或多個(gè)互連交換機(jī)160和/或橋150(其包含交換或PCIe架構(gòu))、 以及一個(gè)或者多個(gè)諸如端點(diǎn)170和182-188的端點(diǎn)。關(guān)于PCI和PCIe的更多信息,參見在外圍組件互連特殊興趣組(PCI-SIG)的網(wǎng)站 www.peisig.com上可獲得的PCI和PCIe頭見范。
今天,將PCI和PCIe 1/0適配器、總線等集成到包括刀片服務(wù) 器的刀片的幾乎每一個(gè)計(jì)算設(shè)備的主板上。刀片服務(wù)器本質(zhì)上是用 于大量的單獨(dú)的最小封裝的計(jì)算機(jī)主板"刀片"的殼體,每個(gè)刀片 包括一個(gè)或多個(gè)處理器、計(jì)算機(jī)存儲(chǔ)器、計(jì)算機(jī)存儲(chǔ)設(shè)備和計(jì)算機(jī) 網(wǎng)絡(luò)連接,但共享機(jī)箱的公共電源和空氣冷卻資源。刀片服務(wù)器對(duì) 于諸如Web主控和集群計(jì)算的特定用途是理想的。
如前所述,通常將PCI和PCIel/0適配器集成到刀片自身之中。 結(jié)果,在相同刀片服務(wù)器的刀片之間無法共享1/0適配器。而且,I/O 適配器的集成限制了鏈路速率的可擴(kuò)展性。即,隨著時(shí)間的過去, 鏈路速率無法隨著處理器性能而擴(kuò)展。到目前為止,還沒有設(shè)計(jì)出 一種機(jī)制以允許由多個(gè)系統(tǒng)鏡像跨過多個(gè)刀片而共享PCI和PCIe 1/0適配器。而且,還沒有設(shè)計(jì)出一種^li制以允許以非集成的方式來 提供PCI和PCIe I/O適配器,以供刀片服務(wù)器中的多個(gè)刀片使用。

發(fā)明內(nèi)容
為了解決由于當(dāng)前PCI和PCIe 1/0適配器集成的限制,說明性 的實(shí)施方式提供了一種機(jī)制,其允許由兩個(gè)或更多的系統(tǒng)鏡像(SI) 本地地共享PCIe適配器。例如,提供一種機(jī)制,用于使在相同根聯(lián) 合體內(nèi)或跨過多個(gè)根聯(lián)合體(RC )的多個(gè)SI能夠同時(shí)共享例如PCIe I/O適配器的端點(diǎn),其中所述多個(gè)根聯(lián)合體(RC)共享(即,耦合 到)公共PCI交換架構(gòu)。該機(jī)制允許每個(gè)根聯(lián)合體及其相關(guān)聯(lián)的物 理和/或虛擬端點(diǎn)(VEP)具有其自身唯一的PCI存儲(chǔ)器地址空間。
此外,在基本的PCI規(guī)范中缺少但對(duì)于管理由端點(diǎn)的共享而產(chǎn) 生的聯(lián)合體配置所需要的是用于確定和管理在端點(diǎn)中的可能的PCI 功能的組合的必要性。因此,此處說明性的實(shí)施方式提供了用于在 刀片服務(wù)器中的第一刀片的 一個(gè)根聯(lián)合體與在相同或不同刀片服務(wù) 器中的第二刀片的第二根聯(lián)合體進(jìn)行通信的機(jī)制。該說明性的實(shí)施方式通過提供一種機(jī)制來支持這種通信,該機(jī)制用以初始化在用于 支持這種通信的多根刀片集群的根聯(lián)合體和端點(diǎn)之間的共享存儲(chǔ)器。
在 一個(gè)說明性的實(shí)施方式中,多根PCIe配置管理器(MR-PCIM ) 通過發(fā)現(xiàn)PCIe交換架構(gòu)(即,PCIe層級(jí))以及通過遍歷所有經(jīng)由 PCIe交換架構(gòu)的互連的交換機(jī)可訪問的所有鏈路,來初始化在根聯(lián) 合體和端點(diǎn)之間的共享存儲(chǔ)器。因?yàn)楸闅v了鏈路,MR-PCIM比較針 對(duì)根聯(lián)合體和端點(diǎn)的每個(gè)而獲得的信息,以確定哪個(gè)端點(diǎn)和根聯(lián)合 體位于相同刀片上。然后,生成虛擬PCIe樹數(shù)據(jù)結(jié)構(gòu),該虛擬PCIe 樹數(shù)據(jù)結(jié)構(gòu)將在PCIe交換架構(gòu)上可用的端點(diǎn)綁定到每個(gè)根聯(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存儲(chǔ)器地址空間內(nèi)對(duì)于每 個(gè)端點(diǎn)給出一個(gè)基(base)和界限。類似地,然后,MR-PCIM在根 聯(lián)合體所屬的PCIe存儲(chǔ)器地址空間內(nèi)對(duì)于每個(gè)根聯(lián)合體給出一個(gè)基 和界限。為了在各種端點(diǎn)和根聯(lián)合體的PCIe存儲(chǔ)器地址空間之間的 映射,可以生成存儲(chǔ)器轉(zhuǎn)換和保護(hù)表數(shù)據(jù)結(jié)構(gòu)。
例如,對(duì)于特定的端點(diǎn)或根聯(lián)合體,該端點(diǎn)或根聯(lián)合體可以與 第一主機(jī)的實(shí)際存儲(chǔ)器地址空間相關(guān)聯(lián)。通過第二主機(jī),經(jīng)由第二 主存儲(chǔ)器上的PCIe孔徑(aperture),可以訪問相同的端點(diǎn)或根聯(lián)合 體,其中該第二主存儲(chǔ)器作為直接存儲(chǔ)器訪問1/0,通過第一主機(jī)的 P CI總線存儲(chǔ)器地址是可訪問的。第 一 主機(jī)可以使用存儲(chǔ)器轉(zhuǎn)換和保 護(hù)表數(shù)據(jù)結(jié)構(gòu)以將由第二主機(jī)看到的PCIe存儲(chǔ)器地址映射到第一主 機(jī)的實(shí)際存儲(chǔ)器地址。
在另 一個(gè)說明性的實(shí)施方式中,已經(jīng)初始化了主機(jī)系統(tǒng)的存儲(chǔ)器地址空間,使得可以跨過主機(jī)系統(tǒng)由根聯(lián)合體訪問端點(diǎn),然后, 可使用這些存儲(chǔ)器地址空間以允許與這些根聯(lián)合體相關(guān)聯(lián)的系統(tǒng)鏡 像和它們對(duì)應(yīng)的應(yīng)用來與端點(diǎn)進(jìn)行通信。
支持這種通信的 一種方式是通過隊(duì)列系統(tǒng),其中隊(duì)列系統(tǒng)利用在不同主機(jī)系統(tǒng)中的這些經(jīng)初始化的存儲(chǔ)器地址空間。這種隊(duì)列系 統(tǒng)可包括工作隊(duì)列結(jié)構(gòu)和完成隊(duì)列結(jié)構(gòu)。工作隊(duì)列結(jié)構(gòu)和完成隊(duì)列
結(jié)構(gòu)二者可包括用于識(shí)別大量隊(duì)列單元(工作隊(duì)列單元(WQE) 或者完成隊(duì)列單元(CQE),這依賴于該隊(duì)列結(jié)構(gòu)是工作隊(duì)列結(jié)構(gòu) 還是完成隊(duì)列結(jié)構(gòu))的門鈴結(jié)構(gòu)、用于隊(duì)列的起始的基地址、用于 隊(duì)列的末尾的界限地址和指示在隊(duì)列中將要被處理的下一個(gè)WQE 或CQE的偏移量??梢允褂霉ぷ麝?duì)列結(jié)構(gòu)和完成隊(duì)列結(jié)構(gòu)二者來發(fā) 送和接收數(shù)據(jù)。
可在對(duì)應(yīng)于將與其進(jìn)行通信的根聯(lián)合體和端點(diǎn)的主機(jī)系統(tǒng)存儲(chǔ) 器的部分中提供隊(duì)列結(jié)構(gòu)和門鈴結(jié)構(gòu)??梢陨申?duì)列單元,并將所 述隊(duì)列單元添加到隊(duì)列結(jié)構(gòu)中,以及可以寫入門鈴結(jié)構(gòu),以Y更由此 就隊(duì)列單元可用于處理而通知端點(diǎn)或根聯(lián)合體??梢詧?zhí)行PCIe DMA 操作,以取回隊(duì)列單元以及對(duì)應(yīng)于該隊(duì)列單元的數(shù)據(jù)。而且,可以 執(zhí)行PCIeDMA操作,以返回完成隊(duì)列單元(CQE),來指示對(duì)隊(duì) 列單元的處理的完成。
根據(jù)示例性的一個(gè)實(shí)施方式,可建立一種面向事務(wù)的協(xié)議,用 于使用說明性的實(shí)施方式的共享存儲(chǔ)器來在相同或不同的主機(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)之間通過上述的共享存儲(chǔ)器而進(jìn)行的 基于套接字協(xié)議的通信。利用這種基于套接字的通信,可使用在主
機(jī)系統(tǒng)中的工作隊(duì)列以偵聽輸入的套接字初始化請(qǐng)求。即,希望與 第二主機(jī)系統(tǒng)建立套接字通信連接的第 一主機(jī)系統(tǒng)可在其工作隊(duì)列 中生成套4妾字初始化請(qǐng)求WQE,并可以向該第二主才幾系統(tǒng)通知該套 接字初始化請(qǐng)求WQE對(duì)處理可用。
然后,第二主機(jī)系統(tǒng)可接受或拒絕該請(qǐng)求。如果第二主機(jī)系統(tǒng) 接受該請(qǐng)求,則其返回套接字參數(shù)的后半個(gè)用于由第 一 主機(jī)系統(tǒng)執(zhí) 行在第 一和第二主機(jī)系統(tǒng)之間的基于套接字的通信中使用。這些參 數(shù)可以規(guī)定隊(duì)列結(jié)構(gòu)中將要與套接字相關(guān)聯(lián)的部分以及門鈴結(jié)構(gòu), 門鈴結(jié)構(gòu)用于通知主機(jī)系統(tǒng)何時(shí)可獲得隊(duì)列單元用于經(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)域中對(duì)負(fù)載均衡能力的不斷增長的需要。當(dāng)前在 PCIe -見范中缺少這種機(jī)制。
在一個(gè)說明性的實(shí)施方式中,單根PCI配置管理器(SR-PCIM) 提供了具有由端點(diǎn)(EP)支持的可能的虛擬功能(VF)遷移場(chǎng)景的
系統(tǒng)鏡像。執(zhí)行管理任務(wù)的系統(tǒng)管理員或軟件應(yīng)用(例如,負(fù)載均 衡應(yīng)用)可以執(zhí)行命令,該命令向單根PCI管理器(SR-PCIM)指 示需要進(jìn)行從一個(gè)SI到另一個(gè)的對(duì)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ī)制來移 動(dòng)以太網(wǎng)VF及其相關(guān)聯(lián)的依賴的應(yīng)用,以便利用在不同物理功能 (PF)上可用的較快的連接(較少擁塞)的優(yōu)勢(shì),該物理功能(PF) 可以與不同的SI或甚至EP關(guān)聯(lián)在一起。
運(yùn)行在主機(jī)系統(tǒng)上的軟件中介(SWI)或虛擬化中介指示SI來 完成對(duì)VF的未完成的請(qǐng)求,并且接下來,啟動(dòng)所需的任何進(jìn)程以將 其停止。 一旦由SI向該SWI通知了已經(jīng)完成了對(duì)VF的所有請(qǐng)求, 則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對(duì)于 現(xiàn)在與該VF相關(guān)聯(lián)的SI可用,并指令SI來配置VF。 SI配置VF, 由此使其對(duì)于相關(guān)聯(lián)的應(yīng)用可用。然后,SWI可以指令SI來啟動(dòng)相 關(guān)聯(lián)的應(yīng)用,從而它們可以在新遷移的VF上使用該資源。
除了上文的機(jī)制,說明性的實(shí)施方式進(jìn)一步提供了用于執(zhí)行將新組件熱插入到運(yùn)行中的多根PCIe架構(gòu)或從運(yùn)行中的多根PCIe架 構(gòu)中熱拔出新組件的功能性。這些機(jī)制允許根聯(lián)合體例如熱插入到運(yùn)行中的PCIe架構(gòu)或從運(yùn)行中的PCIe架構(gòu)中熱拔出。例如,可將刀片熱插入到刀片機(jī)箱,而其相關(guān)聯(lián)的根聯(lián)合體可以實(shí)時(shí)地結(jié)合到 在現(xiàn)有系統(tǒng)中的PCIe架構(gòu)之中。
這種熱插/拔能力允許PCIe架構(gòu)增長,并允許跨過新合并的根聯(lián)合體而本地地共享虛擬功能。因此,可擴(kuò)展PCIe架構(gòu)而無需為此關(guān)閉系統(tǒng)。PCI-SIG I/O虛擬化標(biāo)準(zhǔn)沒有提供用于CPIe架構(gòu)的這種動(dòng)態(tài)擴(kuò)展的能力或標(biāo)準(zhǔn)。
在一個(gè)說明性的實(shí)施方式中,提供了 一種用于將組件熱插到運(yùn)行的通信架構(gòu)中的方法。該方法可以包括在多根外圍組件互連管理器(MR-PCIM)中,接收指示新組件已被添加到數(shù)據(jù)處理系統(tǒng)的 事件通知。該方法還可以包括由MR-PCIM執(zhí)行一個(gè)或多個(gè)配置空 間操作以確定新組件的特征,以及基于新組件的一個(gè)或多個(gè)特征, 更新與MR-PCIM相關(guān)聯(lián)的配置數(shù)據(jù)結(jié)構(gòu)。而且,該方法可以包括基于與MR-PCIM相關(guān)聯(lián)的更新的配置數(shù)據(jù)結(jié)構(gòu),使用新組件處理通信架構(gòu)中的輸入/輸出操作??梢栽谕ㄐ偶軜?gòu)繼續(xù)運(yùn)行的同時(shí)動(dòng)態(tài)地執(zhí)行該方法。
新組件可以是才艮聯(lián)合體、交換機(jī)或端點(diǎn)中的一個(gè)。如果新添加的組件是交換機(jī),則可以關(guān)于交換機(jī)的每個(gè)端口執(zhí)行 一 個(gè)或多個(gè)配 置空間操作,以確定耦合到交換機(jī)的附加組件的存在,并配置任何耦合到交換機(jī)端口的附加組件。如果組件是根聯(lián)合體或端點(diǎn),則MR-PCIM可以將該根聯(lián)合體或端點(diǎn)與虛擬平面相關(guān)聯(lián)。
該方法還可以包括接收用戶輸入,其指定將與新組件相關(guān)聯(lián)的一個(gè)或更多端點(diǎn)。此外,該方法可以包括將新組件以及一個(gè)或更多端點(diǎn)與數(shù)據(jù)處理系統(tǒng)中的虛擬平面相關(guān)聯(lián)。
事件通知可以是物理熱插控制器響應(yīng)于檢測(cè)到新組件添加到通信架構(gòu)而提供的中斷。事件通知可以標(biāo)識(shí)通信架構(gòu)中的多根感知(MRA)交換機(jī)以及與新組件相關(guān)聯(lián)的交換機(jī)端口。
該方法還可以包括接收指示將從通信架構(gòu)中移除的組件的通知,更新配置數(shù)據(jù)結(jié)構(gòu)以移除被指示的組件,以及在與移除組件相 關(guān)聯(lián)的配置數(shù)據(jù)結(jié)構(gòu)中的虛擬樹數(shù)據(jù)結(jié)構(gòu)的樹分支中,更新相關(guān)聯(lián)的組件的配置空間,以將相關(guān)聯(lián)的組件從對(duì)應(yīng)于移除的組件的虛擬平面中移除。如果移除的組件是端點(diǎn),將該端點(diǎn)返回給組件池,以供與其先前所關(guān)聯(lián)的根聯(lián)合體不同的根聯(lián)合體使用。
數(shù)據(jù)處理系統(tǒng)可以是刀片服務(wù)器,且主機(jī)設(shè)備可以是刀片服務(wù)器中的刀片。通信架構(gòu)可以是多根感知(MRA )外圍組件互連Express(PCIe)架構(gòu)。
在另 一個(gè)說明性的實(shí)施方式中,提供了一種計(jì)算機(jī)程序產(chǎn)品,其包括具有計(jì)算機(jī)可讀程序的計(jì)算機(jī)可用介質(zhì)。當(dāng)計(jì)算機(jī)可讀程序在計(jì)算設(shè)備上被執(zhí)行時(shí),將使計(jì)算設(shè)備執(zhí)行上文關(guān)于方法的說明性的實(shí)施方式中概述的各種操作及其組合。
在另一個(gè)說明性的實(shí)施方式中,提供了一種數(shù)據(jù)處理系統(tǒng)。數(shù)據(jù)處理系統(tǒng)可以包括多個(gè)根聯(lián)合體,通過通信架構(gòu)耦合到多個(gè)根聯(lián)合體的至少一個(gè)輸入/輸出組件,以及耦合到通信架構(gòu)的通信架構(gòu)配置管理器。通信架構(gòu)配置管理器可以執(zhí)行上文關(guān)于方法的說明性的 實(shí)施方式中概述的各種操作及其組合。
在下文對(duì)本發(fā)明的示例性實(shí)施方式的詳細(xì)描述中,將描述本發(fā)明的這些和其他特征及優(yōu)點(diǎn),而當(dāng)看到在下文的對(duì)本發(fā)明的示例性實(shí)施方式的詳細(xì)描述時(shí),本發(fā)明的這些和其他特征及優(yōu)點(diǎn)對(duì)本領(lǐng)域普通技術(shù)人員將變得顯而易見。


在所附的權(quán)利要求中闡明了確信新穎的本發(fā)明的特征。然而, 通過結(jié)合附圖閱讀下文對(duì)說明性的實(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是示出了使用1/0虛擬化中介對(duì)PCI根聯(lián)合體的1/0進(jìn)行虛擬化的第 一 方法的示例性示意圖4是示出了使用本地共享的PCI 1/0適配器對(duì)PCI根聯(lián)合體的I / O進(jìn)行虛擬化的第二方法的示例性示意圖5是支持PCIe I/O虛擬化的端點(diǎn)的示例性示意圖6是示出了沒有本地虛擬化的單根端點(diǎn)的物理和虛擬功能的示例性示意圖7是示出了支持本地I/O虛擬化的單根端點(diǎn)的物理和虛擬功能 的示例性示意圖8是示出了根據(jù) 一 個(gè)說明性的實(shí)施方式的多根虛擬化I/O拓樸 的示例性示意圖9是示出了根據(jù)一個(gè)說明性的實(shí)施方式的從根節(jié)點(diǎn)的 SR-PCIM的視角的多根虛擬化I/O拓樸的虛擬層級(jí)視圖的示例性示 意圖IO是示出了根據(jù)一個(gè)說明性的實(shí)施方式的基于共享存儲(chǔ)器的 PCIe系統(tǒng)的示例性示意圖IIA和11B是表示了根據(jù)一個(gè)說明性的實(shí)施方式的示例性虛 擬PCI樹數(shù)據(jù)結(jié)構(gòu)的示意圖12是概括了根據(jù) 一 個(gè)說明性的實(shí)施方式的用于為端點(diǎn)的共享 而將主機(jī)系統(tǒng)的存儲(chǔ)器地址空間進(jìn)行初始化的示例性操作的流程 圖13是示出了根據(jù) 一 個(gè)說明性的實(shí)施方式的用于從第 一 主機(jī)系 統(tǒng)向第二主機(jī)系統(tǒng)發(fā)送工作隊(duì)列單元(WQE)的過程的示例性的框圖14是示出了根據(jù)一個(gè)說明性的實(shí)施方式的用于從第二主機(jī)系 統(tǒng)向第一主機(jī)系統(tǒng)發(fā)送完成隊(duì)列單元(CQE)的過程的示例性的框圖15是概括了根據(jù)一個(gè)示例性實(shí)施方式的用于在第 一主機(jī)系統(tǒng) 的根聯(lián)合體和與第二主機(jī)系統(tǒng)相關(guān)聯(lián)的端點(diǎn)之間傳送WQE的示例 性操作的示例性流程圖16是概括了根據(jù) 一 個(gè)示例性實(shí)施方式的用于從第二主機(jī)系統(tǒng) 的端點(diǎn)向第 一主機(jī)系統(tǒng)的根聯(lián)合體傳送CQE的示例性操作的示例性 流程圖17是示出了可以用于在相同或不同的主機(jī)系統(tǒng)的根聯(lián)合體和 端點(diǎn)之間執(zhí)行通信的事務(wù)的各種可能的組合的示例性表;
圖18是示出了根據(jù)一個(gè)示例性實(shí)時(shí)方式的用于建立套接字并在 第 一 主機(jī)系統(tǒng)和第二主機(jī)系統(tǒng)之間執(zhí)行基于套接字的通信的過程的 示例性框圖19是概括了根據(jù) 一 個(gè)說明性的實(shí)施方式的用于使用基于套接 字的通信連接來執(zhí)行拉回事務(wù)的示例性操作的流程圖2 0是概括了根據(jù) 一 個(gè)說明性的實(shí)施方式的用于使用基于套接 字的通信連接而執(zhí)行推送事務(wù)的示例性操作的流程圖21A和21B是示出了根據(jù)一個(gè)說明性的實(shí)施方式的從在相同 PCIe適配器上的一個(gè)物理功能向另一個(gè)物理功能的虛擬功能及其相 關(guān)聯(lián)的應(yīng)用的單根無狀態(tài)遷移的示例性示意圖22A和22B是示出了根據(jù)一個(gè)說明性的實(shí)施方式的從一個(gè) PCIe適配器向另一個(gè)PCIe適配器的虛擬功能及其相關(guān)聯(lián)的應(yīng)用的 單根無狀態(tài)遷移的示例性示意圖23A和23B是示出了根據(jù)一個(gè)說明性的實(shí)施方式的從一個(gè)系 統(tǒng)鏡像向另 一個(gè)系統(tǒng)鏡像的虛擬功能及其相關(guān)聯(lián)的應(yīng)用的單根無狀 態(tài)遷移的示例性示意圖2 4是概括了根據(jù) 一 個(gè)說明性的實(shí)施方式的用于遷移虛擬功能的示例性操作的流程圖25是示出了根據(jù)一個(gè)說明性的實(shí)施方式的用于根聯(lián)合體的熱 插入操作的示例性框圖26是概括了根據(jù)一個(gè)說明性的實(shí)施方式的用于向PCIe架構(gòu) 增加組件的示例性操作的流程圖;以及
圖27是概括了根據(jù)一個(gè)說明性的實(shí)施方式的用于從PCIe架構(gòu) 動(dòng)態(tài)移除組件的示例性操作的流程圖。
具體實(shí)施例方式
說明性的實(shí)施方式提供了一種機(jī)制,該機(jī)制允許由相同或不同 的根聯(lián)合體的兩個(gè)或更多系統(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) 對(duì)PCIe架構(gòu)的管理。另外,說明性的實(shí)施方式提供了一種機(jī)制,其 中通過該機(jī)制,根聯(lián)合體的單根PCI管理器(SR-PCIM)能夠從端 點(diǎn)讀取該端點(diǎn)的實(shí)現(xiàn)者在設(shè)計(jì)該端,泉時(shí)所允許的功能的有效組合。 然后,SR-PCIM可以設(shè)置將在當(dāng)前配置中使用的功能的組合,其中 在該當(dāng)前配置中正在使用該端點(diǎn)。
圖2是示出了本領(lǐng)域中公知的系統(tǒng)虛擬化的示例性示意圖。系 統(tǒng)虛擬化是對(duì)物理系統(tǒng)的處理器、存儲(chǔ)器、1/0適配器、存儲(chǔ)設(shè)備以 及其他資源的劃分,其中每組資源與其自身的系統(tǒng)鏡像實(shí)例和應(yīng)用 一起獨(dú)立地操作。在這種系統(tǒng)虛擬化中,虛擬資源由物理資源組成, 并作為物理資源的代理來操作,其中物理資源例如為具有相同外部 接口和功能的存儲(chǔ)器、磁盤驅(qū)動(dòng)器以及具有構(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)行單個(gè)SI實(shí) 例所必需的物理或虛擬化資源,例如,虛擬化的處理器、存儲(chǔ)器、I/O 適配器、存儲(chǔ)設(shè)備等。
系統(tǒng)鏡像220通過使用虛擬系統(tǒng)230而經(jīng)由虛擬化中介240來 訪問物理系統(tǒng)資源250。虛擬化中介240管理對(duì)SI的資源分配,并 隔離分配給SI的資源免受其他SI訪問。通常,基于由虛擬化中介 240執(zhí)行的資源映射以及由虛擬化中介240維護(hù)的一個(gè)或多個(gè)資源 映射數(shù)據(jù)結(jié)構(gòu)來執(zhí)行這種分配和隔離。
可使用這種虛擬化以允許對(duì)1/0操作和I/O資源的虛擬化。即, 關(guān)于I/0虛擬化(IOV),可由使用1/0虛擬化中介(IOVI)(諸如 虛擬化中介240)的多于一個(gè)的SI來共享單個(gè)物理I/O單元。IOVI 可以是軟件、固件等,用于通過干預(yù)例如一個(gè)或多個(gè)的配置、1/0、 來自SI的存儲(chǔ)器操作、以及直接存儲(chǔ)器訪問(DMA)、完成和對(duì) SI的中斷操作來支持IOV。
圖3是示出了使用1/0虛擬化中介的對(duì)PCI根聯(lián)合體的I/O進(jìn)行 虛擬化的第一方法的示例性示意圖。如圖3所示,主機(jī)計(jì)算機(jī)組310 可以是一個(gè)或者多個(gè)芯片處理器、主板、刀片等,該主機(jī)計(jì)算機(jī)組 310可以支持多個(gè)系統(tǒng)鏡像320-330,應(yīng)用(未示出)通過這些系統(tǒng) 鏡像可以訪問諸如PCIe端點(diǎn)370-390的系統(tǒng)資源。通過I/O虛擬化 中介340、 PCIe根聯(lián)合體350以及一個(gè)或多個(gè)PCIe交換機(jī)360和/ 或其他PCIe架構(gòu)單元,該系統(tǒng)鏡像與虛擬化的資源進(jìn)行通信。
通過圖3所示的方法,1/O虛擬化中介340介入到所有的1/0事 務(wù)中,并執(zhí)行所有的1/0虛擬化功能。例如,1/O虛擬化中介M0將 來自各種SI的I/O隊(duì)列多路傳輸?shù)絇CIe端點(diǎn)370-390中的單一隊(duì)列。 這樣,I/O虛擬化中介充當(dāng)在SI 320-330和物理PCIe端點(diǎn)370-390
之間的代理。
這種I/O虛擬化中介340的介入可能在I/O操作中引入額外的延 遲,這限制了每時(shí)間單位的1/0操作的數(shù)量,并且由此限制了 1/0性 能。此外,I/O中介需要額外的CPU周期,這樣,降低了對(duì)其他系 統(tǒng)操作可用的CPU性能。此方法所需要的額外的上下文交換和中斷 重定向機(jī)制也會(huì)影響系統(tǒng)的整體性能。而且,當(dāng)在多個(gè)根聯(lián)合體之 間共享端點(diǎn)370-390時(shí),1OVI 340是不可行的。
圖4是示出了使用本地共享的PCI 1/0適配器對(duì)PCI根聯(lián)合體的 1/0進(jìn)行虛擬化的第二方法的示例性示意圖。如圖4中所示,主機(jī)處 理器組410可以是一個(gè)或多個(gè)芯片處理器、主板、刀片等,該主機(jī) 處理器組410可以支持多個(gè)系統(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和一個(gè)或多 個(gè)PCIe交換機(jī)460、和/或其他PCIe架構(gòu)單元來與虛擬化的資源進(jìn) 行通信。
PCIe根聯(lián)合體440包括根聯(lián)合體虛擬化引擎(enabler) ( RCVE ) 442,其中該根聯(lián)合體虛擬化引擎(RCVE) 442可包括一個(gè)或多個(gè) 地址轉(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的映射來控制對(duì) 虛擬資源的訪問,以及其他虛擬化操作。例如,通過PCIe存儲(chǔ)器地 址空間可訪問這些根聯(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。 即,對(duì)于那些對(duì)I/0虛擬化(IOV)沒有本地(即,在端點(diǎn)內(nèi)部)支
持的PCIe端點(diǎn),以同如前所述的關(guān)于圖3相類似的方式,將I/0虛 擬化接口 ( IOVI) 450與PCIe端點(diǎn)一起使用。
對(duì)于支持IOV的PCIe端點(diǎn)470-4卯,使用IOVI 450主要用于 配置事務(wù)的目的,并且在存儲(chǔ)器地址空間操作中不涉及IOVI 450, 所述存儲(chǔ)器地址空間操作諸如為從SI發(fā)起的存儲(chǔ)器映射的輸入/輸 出(MMIO)操作、或者從PCIe端點(diǎn)470-490發(fā)起的直接存儲(chǔ)器訪 問(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操作的速度,但這需要PCIe端點(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和多個(gè)虛擬功能(VF) 540-560的通信通路。配置管 理功能530可以是與虛擬功能540-560相對(duì)的物理功能。如同在PCI 規(guī)范中所用的,術(shù)語物理"功能,,是由單一配置空間所表示的一組 邏輯。換言之,物理"功能,,是電路邏輯,其基于在存儲(chǔ)器中與該 功能相關(guān)聯(lián)的配置空間中存儲(chǔ)的數(shù)據(jù)是可配置的,例如可在不可分 離的資源570中提供。
可使用配置管理功能530來配置虛擬功能540-560。在支持I/O 虛擬化的端點(diǎn)內(nèi),虛擬功能是共享 一 個(gè)或多個(gè)例如鏈路的物理端點(diǎn) 資源,并且可以與其他功能一起提供在例如PCIeIOV端點(diǎn)500的可 共享資源池580中的功能。無需通過I/0虛擬化中介的運(yùn)行時(shí)干預(yù), 虛擬功能可以直接是針對(duì)來自系統(tǒng)鏡像的I/O和存儲(chǔ)器操作的宿 (sink),以及是對(duì)系統(tǒng)鏡像(SI)的中斷、完成、以及直接存儲(chǔ)器 訪問(DMA)操作的源。
PCIe端點(diǎn)關(guān)于由PCIe端點(diǎn)所支持的"功能,,可以具有許多不同 的配置類型。例如,端點(diǎn)可以支持單物理功能(PF)、多個(gè)獨(dú)立的 PF、或甚至多個(gè)依賴的PF。在支持本地I/0虛擬化的端點(diǎn)中,由端 點(diǎn)支持的每個(gè)PF可以與一個(gè)或多個(gè)虛擬功能(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)的多個(gè)系統(tǒng)鏡像(SI)共享該端點(diǎn),但無法在相同或不同 的根節(jié)點(diǎn)上的多個(gè)根聯(lián)合體之間共享該端點(diǎn)。
如圖6所示,根節(jié)點(diǎn)600包括與PCIe端點(diǎn)670-690通信的多 個(gè)系統(tǒng)鏡像610、 612; 1/0虛擬化中介630 (其如前所述地使用); PCIe根聯(lián)合體640;以及一個(gè)或多個(gè)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、 一個(gè)或多個(gè)PCIe交換機(jī)650等。 SR-PCIM 620的管理責(zé)任包括確定要將哪個(gè)功能分配給哪個(gè)SI610、 620,并建立端點(diǎn)670-690的配置空間。根據(jù)SI的能力以及來自用戶 (諸如,系統(tǒng)管理員)的輸入、或者關(guān)于將哪些資源分配給哪個(gè)SI 610、 612的負(fù)載均衡軟件,SR-PCIM 620可以配置各種端點(diǎn)670-690 的功能。SI的能力可以包括各種因素,這些因素包括多少地址空
間可用于分配給端點(diǎn)670-690,多少中斷可用于分配主合端點(diǎn)670-690
乂 f f虧。
每個(gè)PCIe端點(diǎn)670-690可以支持一個(gè)或多個(gè)物理功能(PF )。 一個(gè)或多個(gè)PF可以彼此獨(dú)立,或以某種方式彼此依賴。基于供應(yīng)商 定義的功能依賴性,PF可以依賴于另一個(gè)PF,其中例如一個(gè)PF需 要另一個(gè)PF的操作或者由另一個(gè)PF生成的結(jié)果,以便正確地搡作。 在所描述的例子中,PCIe端點(diǎn)670支持單PF,而PCIe端點(diǎn)680支
持1到M的不同類型的多個(gè)獨(dú)立的PF (即,PF0到PFN )。類型涉 及PF或VF的功能性,例如以太網(wǎng)功能和光纖通道功能是兩種不同 類型的功能。端點(diǎn)690支持具有兩個(gè)或多個(gè)相關(guān)PF的不同類型的多 個(gè)PF。在所描述的例子中,PFO依賴于PFl,或者反之亦然。
在圖6中示例性的例子中,端點(diǎn)670-690是由系統(tǒng)鏡像(SI) 610-612通過由I/O虛擬化中介(IOVI) 630可用的虛擬化^L制而共 享的。如前所述,在這種布置中,在SI610、 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ī)制,但與如果在每個(gè)1/0操作中均沒有涉及I0VI 630的I/O速 率潛力相比,可以執(zhí)行I/O操作的速率相對(duì)較慢。
圖7是示出了支持本地虛擬化的單根端點(diǎn)的物理和虛擬功能的 示例性示意圖。在圖7中示例性的布置與圖6的布置相似,但由于 PCIe端點(diǎn)770-790本地地(即,在端點(diǎn)自身內(nèi)部)支持I/O虛擬化 (IOV)而有一些重要不同。結(jié)果,針對(duì)支持IOV的PCIe端點(diǎn) 770-790,可以有效地移除在圖6中的I/O虛擬化中介630,當(dāng)然, 不能移除配置操作。然而,如果在此布置中還利用了不支持IOV的 PCIe端點(diǎn)(未示出),例如,傳統(tǒng)端點(diǎn),則可以連同在圖7中示例 性的單元來使用I/O虛擬化中介,以處理在系統(tǒng)鏡像710和712之間 的對(duì)這種不支持IOV的PCIe端點(diǎn)的共享。
如圖7中所示,支持IOV的PEIe端點(diǎn)770-790可以支持一個(gè)或 多個(gè)獨(dú)立或依賴的物理功能(PF),然后該物理功能(PF)可以與 一個(gè)或多個(gè)獨(dú)立或依賴的虛擬功能(VF)相關(guān)聯(lián)。在此上下文中, 由SR-PCIM 720使用PF來管理一組VF,以及也使用PF管理諸如 物理錯(cuò)誤和事件的端點(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上的資
源,例如存儲(chǔ)器空間、隊(duì)列、中斷等。這樣,針對(duì)將要共享特定PF
的每個(gè)SI710和712來生成不同的VF。在對(duì)應(yīng)的PF的配置空間中, 由端點(diǎn)770-790基于SR-PCIM 720的VF的數(shù)量的設(shè)置來生成VF。 按照這種方式,將PF虛擬化,使得可由多個(gè)SI710、 712來共享該 PF。
如圖7中所示,VF和PF可以依賴于其他VF和PF。通常,如 果PF是依賴的PF,那么與該P(yáng)F相關(guān)聯(lián)的所有VF也將是依賴的。 這樣,例如,PFO的VF可以依賴于對(duì)應(yīng)的PF1的VF。
對(duì)于圖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對(duì)在端點(diǎn)770-790中的PF和VF進(jìn)行配置。
在SI和端點(diǎn)之間的直接通信顯著地增加了可以在多個(gè)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虛擬化。
上文對(duì)PCIe層級(jí)的描述局限于單根層級(jí)。換言之,僅由在與單 PCI根聯(lián)合體730相關(guān)聯(lián)的單根節(jié)點(diǎn)700上的SI 710、712來共享PCIe 端點(diǎn)。上述的機(jī)制對(duì)共享PCIe端點(diǎn)的多根聯(lián)合體沒有提供支持。這 樣,無法向多個(gè)節(jié)點(diǎn)提供對(duì)PCIe端點(diǎn)的資源的共享訪問。這限制了 利用這種布置的系統(tǒng)的可擴(kuò)展性,這是因?yàn)閷?duì)于每個(gè)根節(jié)點(diǎn)需要單 獨(dú)的端點(diǎn)集合。
這里,說明性的實(shí)施方式利用多個(gè)根I/0虛擬化,其中多個(gè)PCI 根聯(lián)合體可以共享對(duì)同一組支持IOV的PCIe端點(diǎn)的訪問。結(jié)果,與 這些PCI根聯(lián)合體的每個(gè)相關(guān)聯(lián)的系統(tǒng)鏡像的每個(gè)可以共享對(duì)同一 組支持10V的PCIe端點(diǎn)資源的訪問,但在適當(dāng)位置處具有針對(duì)在每 個(gè)根節(jié)點(diǎn)上的每個(gè)SI的虛擬化的保護(hù)。這樣,通過提供允許添加根
節(jié)點(diǎn)和對(duì)應(yīng)的PCI根聯(lián)合體的機(jī)制而將可擴(kuò)展性最大化,其中這些
根聯(lián)合體可以共享支持IOV的PCIe端點(diǎn)的相同的現(xiàn)有組。
圖8是示出了根據(jù)一個(gè)說明性的實(shí)施方式的多根虛擬化的l/o拓 樸的示例性示意圖。如圖8所示,提供多個(gè)根節(jié)點(diǎn)810和820,每一 個(gè)根節(jié)點(diǎn)具有單根PCI配置管理器(SR-PCIM) 812、 822、 一個(gè)或 多個(gè)系統(tǒng)鏡像(SI) 814、 816、 824、 826、以及PCI根聯(lián)合體818 和828。將這些例如可以是在刀片服務(wù)器中的刀片的根節(jié)點(diǎn)810和 820耦合到PCIe交換架構(gòu)的一個(gè)或多個(gè)多根感知(MRA)PCIe交換 才幾840,其中該P(yáng)CIe交換架構(gòu)可以包括一個(gè)或多個(gè)這種MRA PCIe 交換才幾840和/或其他PCIe架構(gòu)單元。MRA交換才幾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和對(duì)應(yīng)的PCI根聯(lián)合體834的第三根節(jié)點(diǎn)830。 MR-PCIM 832是負(fù)責(zé)發(fā)現(xiàn)并配置圖8中示出的在多根(MR)拓樸中 的虛擬層級(jí),這將在下文更加詳細(xì)地描述。這樣,MR-PCIM 832針 對(duì)多根節(jié)點(diǎn)的多根聯(lián)合體匹配端點(diǎn)的物理和虛擬功能。SR-PCIM 812 和822配置與其相關(guān)聯(lián)的單根聯(lián)合體的物理和虛擬功能。換言之, MR-PCIM將MR拓樸看作一個(gè)整體,而SR-PCIM僅看到在MR拓 樸內(nèi)的其自身的虛擬層級(jí),這將在下文更加詳細(xì)地描述。
如圖8所示,支持IOV的PCIe端點(diǎn)850和860支持一個(gè)或多個(gè) 虛擬端點(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。
將每個(gè)VE分配給具有單根聯(lián)合體的虛擬層級(jí)(VH),在該層 級(jí)中,單根聯(lián)合體作為VH的根,而VE作為終結(jié)節(jié)點(diǎn)。VH是分配給根聯(lián)合體或SR-PCIM的完整功能的PCIe層級(jí)。應(yīng)該注意,將VE 中的所有物理功能(PF)和虛擬功能(VF)分配給相同的VH。
每個(gè)支持IOV的PCIe端點(diǎn)850和860支持基本功能(BF ) 859 和869。 BF 859、 869是由MR-PCIM 832所4吏用的物理功能,用于 管理相應(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號(hào)分配給在 端點(diǎn)850、 860中的每個(gè)PF。盡管本發(fā)明并非局限于此,在所說明 性的實(shí)施方式中,每個(gè)節(jié)點(diǎn)僅有一個(gè)BF。
如圖8中所示,每個(gè)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支持多個(gè)獨(dú)立的物理功能(PFO-PFN) 以及其相關(guān)聯(lián)的虛擬功能(VF)。然而,VE 864支持多個(gè)依賴的物 理功能(PFO-PFN)。
當(dāng)且僅當(dāng)將VE分配給SI已經(jīng)訪問的VH時(shí),VE 852、 854、 862 或864可以與才艮節(jié)點(diǎn)810和820的SI 814、 816和826直接通信,并 且反之亦然。端點(diǎn)850和860自身必須支持諸如前面所述的單根I/O 虛擬化,以及如關(guān)于當(dāng)前說明性的實(shí)施方式而描述的多根I/O虛擬 化。這種要求所基于的事實(shí)在于拓樸支持多根聯(lián)合體,但每個(gè)單 獨(dú)的根節(jié)點(diǎn)僅看到其相關(guān)聯(lián)的基于單根的虛擬層級(jí)。
圖9是示出了根據(jù)一個(gè)說明性的實(shí)施方式的從根節(jié)點(diǎn)的根聯(lián)合 體的視角所見的多根虛擬化I/O拓樸的虛擬層級(jí)視圖的示例性示意 圖。如圖9中所示,雖然多根(MR)拓樸可以是如圖8所示的那樣, 但是每個(gè)單獨(dú)的根節(jié)點(diǎn)的每個(gè)根聯(lián)合體僅看到它的MR拓樸的部分。 這樣,例如,與根節(jié)點(diǎn)810相關(guān)聯(lián)的PCI根聯(lián)合體818看到它的主 機(jī)處理器組、它自己的系統(tǒng)鏡像(SI) 814、 816、 MRA交換沖幾840、
以及它自己的虛擬端點(diǎn)(VE) 852和862。在此虛擬層級(jí)中,存在完 全的PCIe功能性,然而,PCI根聯(lián)合體818沒有看到不是它自身的 虛擬層級(jí)部分的VE、根聯(lián)合體、系統(tǒng)鏡像等。
由于此布置,在MP拓樸中的根節(jié)點(diǎn)的根聯(lián)合體之間的通信上施 加了限制。即,因?yàn)閷CIe的功能性局限于與根聯(lián)合體相關(guān)聯(lián)的虛 擬層級(jí),所以根聯(lián)合體無法與另一個(gè)根聯(lián)合體通信。而且,與各種 根聯(lián)合體相關(guān)聯(lián)的系統(tǒng)鏡像無法與其他根聯(lián)合體的系統(tǒng)鏡像通信。 為解決這種限制,這里說明性的實(shí)施方式提供了各種機(jī)制,用以對(duì) 在虛擬層級(jí)之間(具體地是在不同根節(jié)點(diǎn)的根聯(lián)合體之間)的通信 提供支持。
對(duì)于說明性的實(shí)施方式的主機(jī)系統(tǒng),為了經(jīng)由其根聯(lián)合體與多 個(gè)端點(diǎn)通信,該主機(jī)系統(tǒng)使用由各種端點(diǎn)和根聯(lián)合體共享的共享存 儲(chǔ)器,其中該主機(jī)系統(tǒng)與該根聯(lián)合體相關(guān)聯(lián)。為了確保端點(diǎn)與主機(jī) 系統(tǒng)正確的操作,必須初始化該共享存儲(chǔ)器,使得與主機(jī)系統(tǒng)相關(guān) 聯(lián)的每個(gè)端點(diǎn)被提供有其自己的共享存儲(chǔ)器部分,其中通過該共享 存儲(chǔ)器可以執(zhí)行各種通信。說明性的實(shí)施方式利用了用于初始化主 機(jī)系統(tǒng)的共享存儲(chǔ)器的機(jī)制,其中發(fā)現(xiàn)PCIe架構(gòu),并且將PCIe架
構(gòu)的端點(diǎn)虛擬地綁定到該主機(jī)系統(tǒng)的根聯(lián)合體。然后,為每個(gè)端點(diǎn) 和根聯(lián)合體給出每個(gè)主機(jī)系統(tǒng)的共享存儲(chǔ)器地址空間的每個(gè)端點(diǎn)和
根聯(lián)合體自己的部分,每個(gè)端點(diǎn)和根聯(lián)合體是虛擬地綁定到每個(gè)主 機(jī)系統(tǒng)。通過主機(jī)系統(tǒng)的共享存儲(chǔ)器的這些部分,與一個(gè)主機(jī)系統(tǒng) 的根聯(lián)合體相關(guān)聯(lián)的端點(diǎn)可以同其他主機(jī)系統(tǒng)的 一個(gè)或多個(gè)其他根 聯(lián)合體進(jìn)行通信。
圖10是示出了根據(jù)一種說明性的實(shí)施方式的基于共享存儲(chǔ)器 PCIe的系統(tǒng)的示例性示意圖。如圖10所示,系統(tǒng)1000具有包括第 一根聯(lián)合體(RC1 ) 1012和第一端點(diǎn)(EP1 ) 1014的主機(jī)系統(tǒng)1010, 并且主機(jī)系統(tǒng)1010與第一多根感知(MRA)交換機(jī)1016相關(guān)聯(lián), 該多根感知(MRA)交換機(jī)1016可以同樣作為主機(jī)系統(tǒng)1010的一 部分而提供。系統(tǒng)IOOO具有包括第二根聯(lián)合體(CR2) 10K和第二
端點(diǎn)(EP2) 1024的第二主機(jī)系統(tǒng)1020,并且第二主機(jī)系統(tǒng)1020也 與第二多根感知(MRA)交換機(jī)1026相關(guān)聯(lián),該多根感知(MRA) 交換才幾1026可以同樣作為主機(jī)系統(tǒng)1020的一部分而提供。這些主 機(jī)系統(tǒng)1010和1020的每一個(gè)可以代表例如在相同的多根刀片集群 系統(tǒng)1000中的單獨(dú)的刀片。可選地,可以在單獨(dú)的計(jì)算設(shè)備上完全 i也4是供主才幾系統(tǒng)1010和1020。每個(gè)主才幾系統(tǒng)1010和102(M立于其自 己的虛擬層級(jí)(VH)中。通過與PCIe架構(gòu)1030的一個(gè)或多個(gè)MRA 交換機(jī)1016、 1026和1032的通信《連路,主才幾系統(tǒng)1010和1020拔: 此連接,并且與其他共享端點(diǎn)EP3-EP6 1042-1044和1052-1054相連 接。與主才幾系統(tǒng)1010和1020以及端點(diǎn)1042-1044和1052-1054相關(guān) 聯(lián)的通信鏈路可以與一個(gè)或多個(gè)虛擬平面(VP)相關(guān)聯(lián)。
在PCIe架構(gòu)中沒有^f吏用虛擬層級(jí)(VH )標(biāo)識(shí)符以區(qū)分哪個(gè)主^L 系統(tǒng)1010和1020與給定的PCIe事務(wù)相關(guān)聯(lián)。作為替代,使用了鏈 路本地虛擬平面(VP)標(biāo)識(shí)符。由于VP標(biāo)識(shí)符是鏈路本地的,所 以RC 1的VH可以是例如在1032和1016之間的鏈路上具有VP=4, 而在1032和1042之間的鏈路上具有VP^4。換言之,VH由一組PCIe 組件和連接這些組件的鏈路構(gòu)成,這些鏈路的每個(gè)都具有鏈路本地 VP標(biāo)識(shí)符,用于指明給定事務(wù)正引用哪個(gè)VH。
在所描述的例子中,目標(biāo)是允許根聯(lián)合體1012、以及因此允許 與同該根聯(lián)合體1012相關(guān)聯(lián)的一個(gè)或多個(gè)系統(tǒng)鏡像相聯(lián)合運(yùn)行的應(yīng) 用來同與另 一個(gè)根聯(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í), 可以實(shí)現(xiàn)高性能的節(jié)點(diǎn)到節(jié)點(diǎn)(即,主機(jī)系統(tǒng)到主機(jī)系統(tǒng))的通信 和負(fù)載均衡,并通過消除對(duì)通過諸如InfiniBand或以太網(wǎng)交換機(jī)的外 部網(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)的存儲(chǔ)器空間1070和1080, 以建立用于根聯(lián)合體和端點(diǎn)的基(base )和界限孔徑(limit aperture )。 MR-PCIM 1062通過PCIe架構(gòu)1030中的一個(gè)或多個(gè)MRA交換機(jī) 1032和MRA交換才幾1064來訪問PCIe架構(gòu)1030。
MR-PCIM 1062通過各種互連的交換機(jī),以本領(lǐng)域公知的方式遍 歷(traverse) PCIe架構(gòu)1030的鏈3各,以識(shí)別與PCIe架構(gòu)1030相 關(guān)聯(lián)的纟艮聯(lián)合體和端點(diǎn)。然而,對(duì)于說明性的實(shí)施方式所沖丸行的遍 歷,除了執(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)時(shí),它在根聯(lián)合體和端點(diǎn)之間 執(zhí)行大量檢查,以確定給定的根聯(lián)合體與給定的端點(diǎn)是否相關(guān)聯(lián)。 根據(jù)產(chǎn)生的信息,MR-PCIM 1062生成一個(gè)或多個(gè)虛擬PCI樹數(shù)據(jù)結(jié) 構(gòu),其將在PCIe架構(gòu)1030上可用的端點(diǎn)綁定到每個(gè)根聯(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。每個(gè)SR-PCIM 1018、 1028為每個(gè)給定的端點(diǎn)分配在其所屬的PCIe存儲(chǔ)器地址空間中的 基地址和界限,該P(yáng)CIe存儲(chǔ)器地址空間例如是與主機(jī)系統(tǒng)1存儲(chǔ)器 1070和主機(jī)系統(tǒng)2存儲(chǔ)器1080相關(guān)聯(lián)的PCIe存儲(chǔ)器地址空間。 SR-PCIM 1018、 1028將所述基地址和界限寫入EP的基地址寄存器 (BAR)。然后,可將工作請(qǐng)求和完成消息寫入PCI存儲(chǔ)器地址空 間的這些部分,以^更實(shí)現(xiàn)在^t過主才幾系統(tǒng)1010和1020的不同才艮聯(lián) 合體和端點(diǎn)之間的通信,這將在下文更加詳細(xì)地描述。
如上所述,對(duì)于說明性的實(shí)施方式,當(dāng)MR-PCIM 1062遍歷PCIe 架構(gòu)1030時(shí),它在根聯(lián)合體和端點(diǎn)之間執(zhí)行大量的檢查。例如,如 PCI規(guī)范所定義的,MR-PCIM 1062訪問每個(gè)功能(EP的物理功能 和虛擬功能)的PCIe配置空間,其中PCIe配置空間位于EP中。例
如,MR-PCIM也訪問對(duì)于每個(gè)端點(diǎn)的重要產(chǎn)品數(shù)據(jù)(VPD)字段, 并為稍后的比較而存儲(chǔ)VPD信息,諸如存儲(chǔ)在耦合到MR-PCIM 1062的非易失性存儲(chǔ)器區(qū)域(未示出)中。
VPD是唯一地定義了諸如系統(tǒng)的硬件、軟件和微碼單元等項(xiàng)目 的信息。VPD向系統(tǒng)提供了關(guān)于各種字段可替換單元(FRU)的信 息,其中字段可替換單元(FRU)包括供應(yīng)商名稱、零件編號(hào)、序 列號(hào)和對(duì)經(jīng)營、資產(chǎn)管理和任何需要PCI設(shè)備唯一標(biāo)識(shí)的事情有用 的其他詳細(xì)信息。VPD信息通常位于PCI設(shè)備(諸如端點(diǎn)1014、 1024 ) 的存儲(chǔ)設(shè)備(例如串行EEPROM)內(nèi)??梢詮脑趙ww.pcisig.com可 獲得的PCI本地總線規(guī)范3.0版本來獲得關(guān)于VPD的更多信息。
在已經(jīng)取回并存儲(chǔ)了對(duì)于每個(gè)端點(diǎn)1014、 1024、 1042、 1044、 1052和1054的VPD信息之后,MR-PCIM 1062識(shí)別哪些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存儲(chǔ)分配給RC的VH,然后, 可以使用該VH以確定哪些EP和RC駐留在相同的硬件設(shè)備上。
在確定了 EP與RC共同存在相同的主機(jī)上之后,MR-PCIM 1062 創(chuàng)建一個(gè)或多個(gè)虛擬PCI樹數(shù)據(jù)結(jié)構(gòu),諸如圖UA和11B中所示例 性的。如同在圖IIA和11B中示例性的,虛擬PCI樹數(shù)據(jù)結(jié)構(gòu)將在 PCIe架構(gòu)上可用的端點(diǎn)綁定到每個(gè)根聯(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的主才幾上。這告訴RC,通過在RC的 地址空間中的標(biāo)準(zhǔn)存儲(chǔ)器映射尋址,EP對(duì)該RC是可訪問的。這是 物理的關(guān)聯(lián)。利用虛擬PCI樹數(shù)據(jù)結(jié)構(gòu),通過用戶指示他/她希望 MR-PCIM 1062創(chuàng)建這種邏輯關(guān)聯(lián)來指定邏輯關(guān)聯(lián)。
類似地,在圖llB中假設(shè)端點(diǎn)EPl 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)由交換才幾3 1032和交換才幾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對(duì)每個(gè)端點(diǎn)在其 所屬的PCIe存儲(chǔ)器地址空間內(nèi)分配基地址和限制。可將基地址存儲(chǔ) 于端點(diǎn)的基地址寄存器(BAR)中。例如,通過兩個(gè)PCIe存儲(chǔ)器地 址空間1070和1080可訪問EP1 1014。在主機(jī)系統(tǒng)11010中,通過 主機(jī)系統(tǒng)的存儲(chǔ)器1070地址空間,該主機(jī)系統(tǒng)的處理器(未示出) 可訪問EP11014。在主機(jī)系統(tǒng)2 1020中,EP1 1014具有在主機(jī)系統(tǒng) 2的存儲(chǔ)器1080地址空間中的由EP1基地址和限制定義的PCIe孔 徑,其中主機(jī)系統(tǒng)2的存儲(chǔ)器1080地址空間可通過PCI總線存儲(chǔ)器 地址,經(jīng)由存儲(chǔ)器影射的I/O來訪問。例如,主機(jī)系統(tǒng)l IOIO的處 理器可使用存儲(chǔ)器地址轉(zhuǎn)換和保護(hù)表(未示出),以將由主機(jī)系統(tǒng)2 1020的處理器看到的P CI e存儲(chǔ)器地址映射成為主機(jī)系統(tǒng)1的存儲(chǔ)器 地址,該存儲(chǔ)器地址轉(zhuǎn)換和保護(hù)表諸如是在虛擬化中介(諸如管理 程序、根聯(lián)合體1012等)中提供的。
類似地,通過用于主機(jī)系統(tǒng)存儲(chǔ)器1070和1080的兩個(gè)PCI存 儲(chǔ)器地址空間,可訪問EP2 1024。在主機(jī)系統(tǒng)2 1020中,由主機(jī)系 統(tǒng)2的處理器通過用于其存儲(chǔ)器1080的主機(jī)系統(tǒng)2的實(shí)際存儲(chǔ)器地 址可訪問EP2 1024。在主機(jī)系統(tǒng)1 1010中,EP2 1024具有在主機(jī)系 統(tǒng)1的存儲(chǔ)器1070中的由用于EP2 1024的基地址和限制所定義的 PCIe孔徑,其中作為存儲(chǔ)器映射的1/0,通過PCI總線存儲(chǔ)器地址 可訪問該存儲(chǔ)器1070。主機(jī)系統(tǒng)2 1020可使用存儲(chǔ)器地址轉(zhuǎn)換和保 護(hù)表(未示出),以將由主機(jī)系統(tǒng)1 IOIO看到的PCIe存儲(chǔ)器地址映
射到主機(jī)系統(tǒng)2的實(shí)際存儲(chǔ)器地址。
可針對(duì)根聯(lián)合體RC1 1012和RC2 1022來初始化主機(jī)系統(tǒng)存儲(chǔ) 器1070和1080的類似部分。例如,在主機(jī)系統(tǒng)1 1010中,由主機(jī) 系統(tǒng)1的處理器,通過用于主機(jī)系統(tǒng)1的存儲(chǔ)器1070的主機(jī)系統(tǒng)1 的實(shí)際存儲(chǔ)器地址可訪問RC1 1012。 RC1 1012在主機(jī)系統(tǒng)2的存儲(chǔ) 器空間中具有PCIe孔徑,其中經(jīng)由直接存儲(chǔ)器訪問(DMA) I/O, 通過主機(jī)系統(tǒng)1的PCI總線存儲(chǔ)器地址可訪問該主機(jī)系統(tǒng)2的存儲(chǔ) 器空間。主機(jī)系統(tǒng)1 IOIO可使用存儲(chǔ)器地址轉(zhuǎn)換和保護(hù)表(未示出), 以將由主機(jī)系統(tǒng)2 1020看到的PCIe存儲(chǔ)器地址映射成為主機(jī)系統(tǒng)1 的實(shí)際存儲(chǔ)器地址。
類似地,在主^L系統(tǒng)2 1020中,主^l系統(tǒng)2的處理器通過用于 存儲(chǔ)器1080的主機(jī)系統(tǒng)2的實(shí)際存儲(chǔ)器地址可訪問RC2 1022。 RC2 1022具有在主機(jī)系統(tǒng)1的存儲(chǔ)器1070中的PCIe孔徑,其中作為DMA 1/0,通過主機(jī)系統(tǒng)2的PCI總線存儲(chǔ)器地址可訪問該主機(jī)系統(tǒng)1的 存儲(chǔ)器1070。主機(jī)系統(tǒng)2 1020可使用存儲(chǔ)器地址轉(zhuǎn)換和保護(hù)表(未 示出),以將由主機(jī)系統(tǒng)1 1010看到的PCIe存儲(chǔ)器地址映射成為主 機(jī)系統(tǒng)2的實(shí)際存儲(chǔ)器地址。
這樣,說明性的實(shí)施方式的機(jī)制提供了對(duì)在主機(jī)系統(tǒng)中的存儲(chǔ) 器空間的初始化,使得在多個(gè)主機(jī)系統(tǒng)中,可由多于一個(gè)的根聯(lián)合 體來訪問端點(diǎn)。然后,可由根聯(lián)合體利用分配給不同端點(diǎn)的存儲(chǔ)器 空間的部分,以向端點(diǎn)發(fā)送請(qǐng)求和完成消息,和從端點(diǎn)發(fā)送請(qǐng)求和 完成消息。
圖12是概括了根據(jù) 一 個(gè)說明性的實(shí)施方式的用于為端點(diǎn)的共享 而初始化主機(jī)系統(tǒng)的存儲(chǔ)器地址空間的示例性操作的流程圖。應(yīng)該 理解,可以由計(jì)算機(jī)程序指令來實(shí)現(xiàn)在圖12中示例性的流程圖和下 文描述的流程圖的每 一 塊以及在流程圖中的塊的組合??梢韵蛱幚?器或其他可編程數(shù)據(jù)處理裝置提供這些計(jì)算機(jī)程序指令,以產(chǎn)生一 種機(jī)器,使得在處理器或其他可編程數(shù)據(jù)處理裝置上執(zhí)行的指令創(chuàng) 建用于實(shí)現(xiàn)在一個(gè)或多個(gè)流程圖塊中描述的功能的裝置。也可以在
計(jì)算機(jī)可讀存儲(chǔ)器或存儲(chǔ)介質(zhì)中存儲(chǔ)這些計(jì)算機(jī)程序指令,該計(jì)算 機(jī)可讀存儲(chǔ)器或存儲(chǔ)介質(zhì)能引導(dǎo)處理器或其他可編程數(shù)據(jù)處理裝置 以特定方式運(yùn)行,使得在計(jì)算機(jī)可讀存儲(chǔ)器或存儲(chǔ)介質(zhì)中存儲(chǔ)的指 令產(chǎn)生包括指令裝置的制造物品,其中所述指令裝置實(shí)現(xiàn)了在 一 個(gè) 或多個(gè)流程圖塊中描述的功能。
這樣,流程圖的塊支持用于執(zhí)行所描述的功能的裝置的組合、 用于執(zhí)行所描述的功能的步驟的組合、以及用于執(zhí)行所描述的功能 的程序指令裝置。還應(yīng)該理解,流程圖的每個(gè)塊以及流程圖中的塊 的組合可由基于專用硬件的計(jì)算機(jī)系統(tǒng)或?qū)S糜布陀?jì)算機(jī)指令的 組合實(shí)現(xiàn),該基于專用硬件的計(jì)算機(jī)系統(tǒng)執(zhí)行所描述的功能或步驟。
如圖12所示,操作開始于MR-PCIM通過遍歷所有鏈路而發(fā)現(xiàn) 該P(yáng)CIe架構(gòu)(步驟1210),其中所述鏈路通過PCIe架構(gòu)的互連的 交換機(jī)可訪問。存儲(chǔ)在PCIe架構(gòu)的發(fā)現(xiàn)期間所發(fā)現(xiàn)的對(duì)于每個(gè)端點(diǎn) 和根聯(lián)合體的VPD信息(步驟1220)。
MR-PCIM將對(duì)于每個(gè)端點(diǎn)的VPD信息與對(duì)于每個(gè)根聯(lián)合體的 VPD信息進(jìn)行比較,以確定給定的端點(diǎn)與給定的根聯(lián)合體是否相關(guān) 聯(lián)(步驟1230 )。對(duì)于每次比較,如果對(duì)于端點(diǎn)和根聯(lián)合體的VPD 信息相匹配,則MR-PCIM設(shè)置對(duì)應(yīng)的共同駐留字段(步驟1240)。 基于所發(fā)現(xiàn)的端點(diǎn)和根聯(lián)合體信息以及針對(duì)每個(gè)比較的共同駐留字 段的設(shè)置,MR-PCIM生成一個(gè)或多個(gè)虛擬PCI樹數(shù)據(jù)結(jié)構(gòu)(步驟 1250 )。
基于所生成的虛擬PCI樹數(shù)據(jù)結(jié)構(gòu),MR-PCIM為每個(gè)端點(diǎn)在該 端點(diǎn)所屬的每個(gè)PCIe存儲(chǔ)器地址空間內(nèi)分配基地址和界限(步驟 1260)?;谒傻奶摂MPCI樹數(shù)據(jù)結(jié)構(gòu),MR-PCIM為每個(gè)根聯(lián) 合體在根聯(lián)合體所屬的每個(gè)PCIe存儲(chǔ)器地址空間內(nèi)分配基地址和界 限(步驟1270)。然后,該操作終止。
已經(jīng)初始化了主機(jī)系統(tǒng)的存儲(chǔ)器地址空間,使得根聯(lián)合體跨過 主機(jī)系統(tǒng)可訪問端點(diǎn),然后,可使用這些存儲(chǔ)器地址空間,以允許 與這些根聯(lián)合體相關(guān)聯(lián)的系統(tǒng)鏡像和它們對(duì)應(yīng)的應(yīng)用來與端點(diǎn)進(jìn)行
通信。實(shí)現(xiàn)這種通信的一種方式是通過隊(duì)列系統(tǒng),該隊(duì)列系統(tǒng)利用 在不同主機(jī)系統(tǒng)中的這些經(jīng)初始化的存儲(chǔ)器地址空間。這種隊(duì)列系 統(tǒng)可包括工作隊(duì)列結(jié)構(gòu)和完成隊(duì)列結(jié)構(gòu)。工作隊(duì)列結(jié)構(gòu)和完成隊(duì)列 結(jié)構(gòu)二者可包括用于識(shí)別大量隊(duì)列單元(或者是工作隊(duì)列單元
(WQE)或者是完成隊(duì)列單元(CQE),這依賴于該隊(duì)列結(jié)構(gòu)是工 作隊(duì)列結(jié)構(gòu)還是完成隊(duì)列結(jié)構(gòu))的門鈴結(jié)構(gòu)、用于隊(duì)列的起始的基 地址、用于隊(duì)列的末尾的界限地址、和指示在隊(duì)列中將要處理的下 一個(gè)WQE或CQE的偏移量??梢允褂霉ぷ麝?duì)列結(jié)構(gòu)和完成隊(duì)列結(jié) 構(gòu)二者來發(fā)送和接收數(shù)據(jù)。
圖13是示出了根據(jù)一個(gè)說明性的實(shí)施方式的用于從第一主機(jī)系 統(tǒng)向第二主機(jī)系統(tǒng)發(fā)送工作隊(duì)列單元(WQE)的過程的示例性的框 圖。出于描述的目的,假設(shè)建立了具有主機(jī)系統(tǒng)的系統(tǒng),所述主機(jī) 系統(tǒng)例如是通過PCIe架構(gòu)1330連接的第 一主才幾系統(tǒng)1310和第二主 機(jī)系統(tǒng)1320,所述主機(jī)系統(tǒng)具有多個(gè)共享的PCI根聯(lián)合體,例如, RC1 1312和RC2 1322,其中第一主機(jī)系統(tǒng)1310和第二主機(jī)系統(tǒng)1320 可以包括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)部存儲(chǔ) 器1380的地址空間以及第一主機(jī)系統(tǒng)的PCI總線存儲(chǔ)器地址空間。 可通過例如使用前面關(guān)于例如圖10至圖12所描述的初始化^li制來 實(shí)現(xiàn)該系統(tǒng)配置。
如圖13所示,通過與兩個(gè)主機(jī)系統(tǒng)存儲(chǔ)器1370和1380相關(guān)聯(lián) 的存儲(chǔ)器空間,可訪問端點(diǎn)EP1 1314。在第一主機(jī)系統(tǒng)1310上,第 一主機(jī)系統(tǒng)的處理器通過用于第一主機(jī)系統(tǒng)的存儲(chǔ)器1370的第一主 機(jī)系統(tǒng)的實(shí)際存儲(chǔ)器地址可訪問端點(diǎn)EP1 1314。在第二主機(jī)系統(tǒng) 1320上,端點(diǎn)EP1 1314具有在第二主機(jī)系統(tǒng)的存儲(chǔ)器1380上的PCIe 孔徑1382,其中作為存儲(chǔ)器映射的I/O,通過PCI總線存儲(chǔ)器地址 可訪問該第二主存儲(chǔ)器1380。第一主機(jī)系統(tǒng)1310可使用存儲(chǔ)器地址轉(zhuǎn)換和保護(hù)表(ATPT) 1318,以將由第二主機(jī)系統(tǒng)1320看到的PCIe
存儲(chǔ)器地址映射成為用于第 一 主機(jī)系統(tǒng)的存儲(chǔ)器空間13 70的實(shí)際存 儲(chǔ)器地址。
類似地,通過兩個(gè)主才幾系統(tǒng)存儲(chǔ)器空間1370和1380可訪問端 點(diǎn)EP2 1324。在第二主機(jī)系統(tǒng)1320中,第二主機(jī)系統(tǒng)的處理器通過 第二主機(jī)系統(tǒng)的實(shí)際存儲(chǔ)器地址和存儲(chǔ)器地址空間1380可訪問端點(diǎn) EP2 1324。在第一主機(jī)系統(tǒng)1310中,端點(diǎn)EP2 1324具有在第一主機(jī) 系統(tǒng)的存儲(chǔ)器1370上的PCIe孔徑1372,其中作為存儲(chǔ)器映射的I/O , 通過PCI總線存儲(chǔ)器地址可訪問該第一主機(jī)系統(tǒng)的存儲(chǔ)器1370。第 二主機(jī)系統(tǒng)1320可使用存儲(chǔ)器地址轉(zhuǎn)換和保護(hù)表(ATPT) 1328, 以將由第一主機(jī)系統(tǒng)1310發(fā)送的PCIe存儲(chǔ)器地址映射到第二主機(jī) 系統(tǒng)的存儲(chǔ)器空間1380的實(shí)際存儲(chǔ)器地址。
工作隊(duì)列結(jié)構(gòu)1374可包括門鈴結(jié)構(gòu)1375,該門鈴結(jié)構(gòu)1375用 以傳遞大量的WQE、用于隊(duì)列的開始的基地址、用于隊(duì)列的末尾的 界限地址以及指示在工作隊(duì)列中將要處理的下一個(gè)WQE的偏移量。 類似地,完成隊(duì)列結(jié)構(gòu)1376可包括門鈴結(jié)構(gòu)1377,該門鈴結(jié)構(gòu)1377 用于傳遞大量的CQE、用于隊(duì)列的開始的基地址、用于隊(duì)列的末尾 的界限地址、以及指示在完成隊(duì)列中將要處理的下 一 個(gè)C QE的偏移量。
為了從第一主機(jī)系統(tǒng)1310向第二主機(jī)系統(tǒng)1320發(fā)送WQE,第 一主機(jī)系統(tǒng)1310通過向其發(fā)送工作隊(duì)列1374插入一個(gè)或多個(gè)WQE 而發(fā)起該過程。每個(gè)WQE包含數(shù)據(jù)段的列表,其中每個(gè)數(shù)據(jù)段包括 都位于第二主機(jī)系統(tǒng)的PCIe存儲(chǔ)器總線地址空間中的基地址和界限 地址,并且還通過地址轉(zhuǎn)換和保護(hù)表(ATPT)將該基地址和界限地 址映射到在第一主機(jī)系統(tǒng)的存儲(chǔ)器空間1370中的實(shí)際存儲(chǔ)器地址。
然后,第一主機(jī)系統(tǒng)1310將所發(fā)送的WQE的數(shù)量寫入到用于 門鈴結(jié)構(gòu)1375的端點(diǎn)EP2的PCIe地址之中。通過ATPT,將用于此 門鈴結(jié)構(gòu)的地址映射到第 一 主機(jī)系統(tǒng)的PCIe存儲(chǔ)器總線地址空間, 并且還映射到在第二主機(jī)系統(tǒng)的存儲(chǔ)器空間1380中的實(shí)際存儲(chǔ)器地
址。當(dāng)門鈴寫操作完成時(shí),第二主機(jī)系統(tǒng)1320的RC輪詢或者收到 一個(gè)中斷然后輪詢,以通過第 一 主機(jī)系統(tǒng)的實(shí)際存儲(chǔ)器地址空間 1380取回門鈴結(jié)構(gòu)1375。即,可將第二主機(jī)系統(tǒng)1320的RC配置為 周期地輪詢用于門鈴結(jié)構(gòu)1375的地址,以確定是否要處理新的 WQE??蛇x地,第一主機(jī)系統(tǒng)1310對(duì)門鈴結(jié)構(gòu)1375的設(shè)置可生成 對(duì)第二主機(jī)系統(tǒng)1320的中斷,以向第二主機(jī)系統(tǒng)1320的RC通知可 獲得新的WQE用于處理。然后,第二主機(jī)系統(tǒng)1320的RC可以輪 詢用于新的WQE信息的門鈴結(jié)構(gòu)1375,并且據(jù)此處理它們。
然后,端點(diǎn)EP2 1324對(duì)根聯(lián)合體RC1 1312執(zhí)行PCIe DMA操 作以取回WQE。每個(gè)DMA操作使用第一主機(jī)系統(tǒng)的PCIe存儲(chǔ)器總 線地址空間,并將DMA操作的結(jié)果放入第二主機(jī)系統(tǒng)的存儲(chǔ)器 1380,其中在第二主機(jī)系統(tǒng)1320上,通過其實(shí)際存儲(chǔ)器地址空間可 訪問第二主機(jī)系統(tǒng)的存儲(chǔ)器1380。這樣,使用主機(jī)系統(tǒng)1310和1320 的初始化的共享存儲(chǔ)器,實(shí)現(xiàn)了在不同主機(jī)系統(tǒng)1310和1320中的 根聯(lián)合體和端點(diǎn)之間的工作隊(duì)列單元的通信。
圖14是示出了根據(jù)一個(gè)說明性的實(shí)施方式的用于從第二主機(jī)系 統(tǒng)1320向第一主機(jī)系統(tǒng)1310發(fā)送完成隊(duì)列單元(CQE)的過程的 示例性的框圖。如圖14所示, 一旦完成了與一個(gè)WQE或一組WQE 相關(guān)聯(lián)的工作,則端點(diǎn)EP2 1324對(duì)根聯(lián)合體RC1 1312執(zhí)行一個(gè)或 多個(gè)PCIe DMA操作,以向根聯(lián)合體RC 11312發(fā)送一個(gè)或多個(gè)CQE。 在RC1 1312可以輪詢或等待指示CQE可用的中斷的意義上,可以 使用門鈴。
每個(gè)DMA操作使用第一主機(jī)系統(tǒng)的PCIe存儲(chǔ)器總線地址空間, 并將結(jié)果放入第一主機(jī)系統(tǒng)1310上的存儲(chǔ)器1370,其中在第一主機(jī) 系統(tǒng)1310上,通過其實(shí)際存儲(chǔ)器地址空間可訪問第一主機(jī)系統(tǒng)的存 儲(chǔ)器1370。優(yōu)選地,將結(jié)果存儲(chǔ)在存儲(chǔ)器1370的DMA可尋址部分, 依賴于所使用的特定OS, DMA可尋址部分位于存儲(chǔ)器1370中的不 同部分。
圖15是概括了根據(jù) 一 個(gè)示例性實(shí)施方式的用于在第 一 主機(jī)系統(tǒng)
的根聯(lián)合體和與第二主機(jī)系統(tǒng)相關(guān)聯(lián)的端點(diǎn)之間傳送WQE的示例 性操作的示例性流程圖。如圖15所示,該操作開始于第一主機(jī)系統(tǒng) 向其發(fā)送工作隊(duì)列插入一個(gè)或多個(gè)WQE (步驟1510)。然后,第一 主機(jī)系統(tǒng)將所發(fā)送的WQE的數(shù)量寫入對(duì)于門鈴結(jié)構(gòu)的目標(biāo)端點(diǎn)的 PCIe地址之中(步驟1520 )。當(dāng)門鈴寫操作完成時(shí),第二主機(jī)系統(tǒng) 輪詢或者收到中斷然后輪詢,以通過第 一主機(jī)系統(tǒng)的實(shí)際存儲(chǔ)器地 址空間來取回門鈴結(jié)構(gòu)(步驟1530)。
然后,目標(biāo)端點(diǎn)對(duì)第 一主機(jī)系統(tǒng)的根聯(lián)合體執(zhí)行PCIe DMA操 作,以取回WQE (步驟1540)。然后,目標(biāo)端點(diǎn)將DMA操作的結(jié) 果放入第二主機(jī)系統(tǒng)的存儲(chǔ)器(步驟1550)。然后,該操作終止。
圖16是概括了根據(jù) 一 個(gè)示例性實(shí)施方式的用于從第二主機(jī)系統(tǒng) 的端點(diǎn)向第 一主機(jī)系統(tǒng)的根聯(lián)合體傳送CQE的示例性操作的示例性 流程圖。該操作開始于端點(diǎn)完成與向端點(diǎn)提交的一個(gè)或多個(gè)WQE相 關(guān)聯(lián)的處理工作(步驟1610)。然后,該端點(diǎn)對(duì)與主機(jī)系統(tǒng)相關(guān)聯(lián) 的根聯(lián)合體執(zhí)行一個(gè)或多個(gè)PCIe DMA操作,以向根聯(lián)合體發(fā)送一 個(gè)或多個(gè)CQE,其中從該主機(jī)系統(tǒng)接收該一個(gè)或多個(gè)WQE(步驟 1620 )。將DMA操作的結(jié)果放入第 一主機(jī)系統(tǒng)的存儲(chǔ)器(步驟1630 )。 然后,該操作終止。
這樣,可使用說明性的實(shí)施方式的共享存儲(chǔ)器,以提供隊(duì)列結(jié) 構(gòu),其中通過該隊(duì)列結(jié)構(gòu),可在不同主機(jī)系統(tǒng)上的根聯(lián)合體和端點(diǎn) 之間交換工作請(qǐng)求和完成消息。這樣,根聯(lián)合體可以同與提供了該 根聯(lián)合體的主機(jī)系統(tǒng)不同的主機(jī)系統(tǒng)上的端點(diǎn)進(jìn)行通信,并且反之 亦然。
根據(jù)在此示例性的一種實(shí)施方式,可建立一種面向事務(wù)的協(xié)議, 用于使用說明性的實(shí)施方式的共享存儲(chǔ)器,以在相同或不同的主機(jī) 系統(tǒng)的根聯(lián)合體和端點(diǎn)之間通信。如同下文將要描述的,面向事務(wù) 的協(xié)議描述了將由例如根聯(lián)合體或端點(diǎn)的各種單元執(zhí)行的 一 系列事 務(wù),以推送或拉回?cái)?shù)據(jù)。
返回圖13,上文關(guān)于向端點(diǎn)提供WQE并向根聯(lián)合體返回CQE的方式的描述是拉回-拉回-推送協(xié)議的一個(gè)例子。即,響應(yīng)于第一主機(jī)系統(tǒng)1310對(duì)門鈴結(jié)構(gòu)1375的寫入,第二主機(jī)系統(tǒng)1320的端點(diǎn)EP2 l!324使用PCIe DMA操作從第一主機(jī)系統(tǒng)的共享存儲(chǔ)器1370拉回 WQE。這些WQE提供了用于將要執(zhí)行的操作的"命令"?;谠?WQE中存儲(chǔ)的段信息,第二主機(jī)系統(tǒng)1320的端點(diǎn)EP2 1324從在第 一主機(jī)系統(tǒng)的共享存儲(chǔ)器1370的工作隊(duì)列結(jié)構(gòu)1374中拉回對(duì)應(yīng)的 數(shù)據(jù)。 一旦完成了對(duì)應(yīng)于WQE的工作,則第二主才幾系統(tǒng)1320的端 點(diǎn)EP2 1324使用一個(gè)或多個(gè)PCIe DMA操作向第一主機(jī)系統(tǒng)1310 的根聯(lián)合體RC1 1312推送CQE。這樣,在上文描述的圖13的例子 中利用了拉回-拉回-推送事務(wù)協(xié)議。
拉回和推送事務(wù)的其他可能的組合對(duì)于不同的事務(wù)協(xié)議的建立也是可能的。圖17是示出了可以用于執(zhí)行在相同或不同主機(jī)系統(tǒng)的 根聯(lián)合體和端點(diǎn)之間的通信的事務(wù)的多種可能組合的示例性表。如 圖17所示,可以連同說明性的實(shí)施方式的才幾制一起來利用拉回和推 送事務(wù)的任何組合,以便由此建立事務(wù)協(xié)議,用于對(duì)說明性的實(shí)施方式的共享存儲(chǔ)器的使用。
根聯(lián)合體和端點(diǎn)負(fù)責(zé)實(shí)施選^奪的協(xié)議。例如,OS系統(tǒng)棧和端點(diǎn) 執(zhí)行操作,用于拉回和推送數(shù)據(jù),作為諸如如前所述的選擇的事務(wù) 協(xié)議的部分。對(duì)將要利用的協(xié)議的選擇依賴于由端點(diǎn)所利用的特定 的PCIe架構(gòu),例如InfiniBand或以太網(wǎng)架構(gòu)??梢愿鶕?jù)編程的選擇, 例如是否使用輪詢、中斷處理或輪詢和中斷處理的組合,來確定協(xié) 議的特,未性。
說明性的實(shí)施方式的機(jī)制可進(jìn) 一 步用于支持基于套接字協(xié)議的 通信,該通信是通過上述的共享存儲(chǔ)器來在相同或不同主機(jī)系統(tǒng)的 根聯(lián)合體和端點(diǎn)之間進(jìn)行。當(dāng)存在恒定的連接時(shí),可使用這種套接 字協(xié)議??苫谒M男屎涂煽啃詠泶_定是使用套接字協(xié)議還 是基于事務(wù)的協(xié)議,諸如,上文描述的推送-拉回事務(wù)。
利用套接字協(xié)議,可使用在主機(jī)系統(tǒng)中的工作隊(duì)列,以偵聽輸 入的套接字初始化請(qǐng)求。即,希望與第二主機(jī)系統(tǒng)建立套接字通信
連接的第一主機(jī)系統(tǒng)可在其工作隊(duì)列中生成套接字初始化請(qǐng)求
WQE,并向該第二主機(jī)系統(tǒng)通知該套接字初始化請(qǐng)求WQE對(duì)處理 可用。然后,第二主機(jī)系統(tǒng)可接受或拒絕該請(qǐng)求。如果第二主機(jī)系 統(tǒng)接受該請(qǐng)求,它返回套接字參數(shù)的后一半,用于由第一主機(jī)系統(tǒng) 在第 一和第二主機(jī)系統(tǒng)之間執(zhí)行基于套接字的通信中使用。這種通 信可以涉及例如在主機(jī)系統(tǒng)之間的拉回事務(wù)和/或推送事務(wù)。
圖18是示出了根據(jù)一個(gè)說明性的實(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ā)生的存儲(chǔ)器 中的地址。例如主機(jī)系統(tǒng)1810的發(fā)送者主機(jī)系統(tǒng)通過在接收者主枳^ 系統(tǒng)1820的存儲(chǔ)器1870中的PCIe孔徑1872來寫入門鈴結(jié)構(gòu)1878, 其中PCIe孔徑1872可由發(fā)送者主機(jī)系統(tǒng)的根聯(lián)合體RC1 1812訪問, 對(duì)應(yīng)于例如端點(diǎn)EP2 1824的連接端點(diǎn)。
如前所述,在為實(shí)現(xiàn)在相同或不同的主機(jī)系統(tǒng)上的多個(gè)根聯(lián)合 體之間共享端點(diǎn)而初始化主機(jī)系統(tǒng)的共享存儲(chǔ)器期間,針對(duì)每個(gè)所
發(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)識(shí)可以與哪些端點(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可通過在對(duì)于端點(diǎn)EP1 1814的VPD信息中的其供應(yīng)商特定字 段來確定端點(diǎn)EP1 1814支持PCIe上的套接字。
每個(gè)主機(jī)系統(tǒng)1810和1820具有工作隊(duì)列(WQ) 1850和1860, 該工作隊(duì)列用于監(jiān)聽輸入的套接字初始化請(qǐng)求。例如,第二主機(jī)系
統(tǒng)1820 (即,接收主機(jī)系統(tǒng))阻塞或等待到其工作隊(duì)列1860表面的 套4妄字初始化請(qǐng)求,或拉回端點(diǎn)EP2 1824的門鈴結(jié)構(gòu)1878,以確定 套接字初始化請(qǐng)求是否已經(jīng)到達(dá)。套接字初始化請(qǐng)求包含到工作隊(duì) 列1850中的基、界限和起始偏移量,這將用于套接字的第一主機(jī)系 統(tǒng)的那一半。
第一主機(jī)系統(tǒng)1810 (即,發(fā)送主機(jī)系統(tǒng))可在其工作隊(duì)列1850 中生成套接字初始化請(qǐng)求,并可以寫入EP2 1824的門鈴結(jié)構(gòu)1878, 指示套接字初始化請(qǐng)求WQE可用。 一旦在門鈴結(jié)構(gòu)1878中取回?cái)?shù) 據(jù)時(shí),第二主機(jī)系統(tǒng)的端點(diǎn)EP2 1824可執(zhí)行PCIe DMA操作,以使 用根聯(lián)合體RC1的PCIe總線存儲(chǔ)器地址來從第一主機(jī)系統(tǒng)的工作隊(duì) 列1850中取回套接字初始化請(qǐng)求,端點(diǎn)EP2 1824可訪問該根聯(lián)合 體RC1的PCIe總線存儲(chǔ)器地址。
然后,第二主機(jī)系統(tǒng)1820可解析該套接字初始化請(qǐng)求,并且以 應(yīng)用或操作系統(tǒng)特定的方式確定接受還是拒絕該套接字初始化請(qǐng) 求。如果第二主機(jī)系統(tǒng)1820拒絕套接字初始化請(qǐng)求,則第二主機(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接受套接字初始化請(qǐng)求,則端點(diǎn)EP2 1824對(duì)第 一 主機(jī)系統(tǒng)的根聯(lián)合體RC1 1812執(zhí)行PCIe DMA操作,指 示套接字參數(shù)的后一半,即,基、界限和在工作隊(duì)列1860內(nèi)的起始
偏移量,用于套接字的第二主機(jī)系統(tǒng)的那一半。
一旦已經(jīng)以上述方式初始化了套接字,可按照拉回事務(wù)或推送 事務(wù)兩種方式之一,使用建立的套接字來執(zhí)行發(fā)送/接收操作。利用 拉回事務(wù),第一主機(jī)系統(tǒng)1810的根聯(lián)合體RC1 1812通過向其工作 隊(duì)列1850寫入WQE而執(zhí)行發(fā)送操作,并然后寫入與端點(diǎn)EP2 1824 相關(guān)聯(lián)的門鈴結(jié)構(gòu)1878,其中通過根聯(lián)合體RC1 1812PCIe總線存 ^f諸器地址空間可訪問該門鈴結(jié)構(gòu)1878。當(dāng)門鈴寫入#:作完成時(shí),第
二主機(jī)系統(tǒng)或者1820輪詢或者收到中斷然后輪詢,以通過第二主機(jī) 系統(tǒng)的實(shí)際存儲(chǔ)器地址空間來取回門鈴結(jié)構(gòu)1878。端點(diǎn)EP2 1824然 后對(duì)根聯(lián)合體RC1 1812執(zhí)行PCIe DMA操作,以取回與發(fā)送操作相 關(guān)聯(lián)的WQE。PCIe DMA操作使用第一主機(jī)系統(tǒng)的PCIe存儲(chǔ)器總線 地址空間,并將結(jié)果放入第二主機(jī)系統(tǒng)上的存儲(chǔ)器1880,其中通過 第二主機(jī)系統(tǒng)的實(shí)際存儲(chǔ)器地址空間可訪問該存儲(chǔ)器1880。第二主 機(jī)系統(tǒng)1820然后取回在WQE中描述的并且與發(fā)送操作相關(guān)聯(lián)的數(shù) 據(jù)段。
當(dāng)?shù)诙鳈C(jī)系統(tǒng)完成在WQE中的工作請(qǐng)求時(shí),端點(diǎn)EP2 1824 對(duì)根聯(lián)合體RC1 1812執(zhí)行PCIe DMA操作,以推送信令通知發(fā)送操 作已經(jīng)完成的CQE。該DMA操作使用第一主機(jī)系統(tǒng)的PCIe存儲(chǔ)器 總線地址空間,并將結(jié)果放入第一主機(jī)系統(tǒng)上的存儲(chǔ)器1870,其中 通過第 一主機(jī)系統(tǒng)的實(shí)際存儲(chǔ)器地址空間可訪問該存儲(chǔ)器1870。
對(duì)于推送事務(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ā)送時(shí),端點(diǎn)EP1 1814檢查以確定端點(diǎn)EP1 1814在根聯(lián)合 體RC2 1822的工作隊(duì)列1860上是否具有可用的接收WQE。如果沒 有可用的接收WQE,則根聯(lián)合體RC1 1812寫入端點(diǎn)EP2的緩沖器 滿標(biāo)記1887,以指示第一主機(jī)系統(tǒng)1810有數(shù)據(jù)要在套接字上發(fā)送, 而第二主機(jī)系統(tǒng)1820針對(duì)該套接字需要通過接收WQE來公告一些 緩沖區(qū)。
如果存在可用的接收WQE,則第二端點(diǎn)EP2 1824對(duì)根聯(lián)合體 RC1 1812執(zhí)行PCIe DMA操作,以取回在根聯(lián)合體RC1的工作隊(duì)列 1850中下一個(gè)可用的WQE。 DMA操作使用第一主才幾系統(tǒng)的PCIe 存儲(chǔ)器總線地址空間,并將結(jié)果放入在第二主機(jī)系統(tǒng)1820上的存儲(chǔ) 器1880中,其中通過第二主機(jī)系統(tǒng)的實(shí)際存儲(chǔ)器地址空間可訪問該 存儲(chǔ)器1880。然后,第二主機(jī)系統(tǒng)1820將其數(shù)據(jù)發(fā)送到在接收WQE 中傳遞的數(shù)據(jù)段。
當(dāng)?shù)诙鳈C(jī)系統(tǒng)1820完成工作請(qǐng)求時(shí),端點(diǎn)EP2 1824然后對(duì)根 聯(lián)合體RC1 1812執(zhí)行PCIe DMA操作,以推送信令通知發(fā)送操作已 經(jīng)完成的CQE。該DMA操作使用第一主機(jī)系統(tǒng)的PCIe存儲(chǔ)器總線 地址空間,并將結(jié)果放入第一主機(jī)系統(tǒng)1810上的存儲(chǔ)器,其中通過 第 一主機(jī)系統(tǒng)的實(shí)際存儲(chǔ)器地址空間可訪問該存儲(chǔ)器。
圖19是概括了根據(jù) 一 個(gè)說明性的實(shí)施方式的用于使用基于套接 字的通信連接來執(zhí)行拉回事務(wù)的示例性操作的流程圖。該操作開始 于第一主機(jī)系統(tǒng)的根聯(lián)合體向其工作隊(duì)列寫入WQE (步驟1910), 并然后寫入與目標(biāo)端點(diǎn)相關(guān)聯(lián)的門鈴結(jié)構(gòu)(步驟1920)。當(dāng)門鈴寫 入操作完成時(shí),第二主機(jī)系統(tǒng)輪詢或者收到中斷然后輪詢,以通過 第二主機(jī)系統(tǒng)的實(shí)際存儲(chǔ)器地址空間來取回門鈴(步驟1930 )。
目標(biāo)端點(diǎn)然后對(duì)第 一主機(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)上的存儲(chǔ)器(步驟1950)。第 二主機(jī)系統(tǒng)然后取回在WQE中描述的并且與發(fā)送操作相關(guān)聯(lián)的數(shù) 據(jù)段(步驟1960)。
響應(yīng)于第二主機(jī)系統(tǒng)完成在WQE中請(qǐng)求的工作(步驟1970), 目標(biāo)端點(diǎn)對(duì)第一主機(jī)系統(tǒng)的根聯(lián)合體執(zhí)行PCIe DMA操作,以推送 信令通知發(fā)送操作已經(jīng)完成的CQE (步驟1980 )。第一主機(jī)系統(tǒng)的 根聯(lián)合體將PCIe DMA操作的結(jié)果放入第一主機(jī)系統(tǒng)的存儲(chǔ)器(步 驟1990)。然后,該操作終止。
圖20是概括了根據(jù)一個(gè)說明性的實(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)合體的工作隊(duì)列上是否具 有任何可用的接收WQE (步驟2030 )。如果沒有可用的接收WQE, 則第 一主機(jī)系統(tǒng)的根聯(lián)合體將第二主機(jī)系統(tǒng)的緩沖器滿標(biāo)記寫入第 二端點(diǎn),以指示第一主機(jī)系統(tǒng)有數(shù)據(jù)要在套接字上發(fā)送,并且第二
主機(jī)系統(tǒng)需要針對(duì)該套接字將接收WQE記入一些緩沖器(步驟 2040)。然后,操作返回到步驟2030。
如果存在可用的接收WQE,第二端點(diǎn)對(duì)第一主機(jī)系統(tǒng)的根聯(lián)合 體執(zhí)行PCIe DMA操作,以取回在第一主才幾系統(tǒng)的工作隊(duì)列的才艮聯(lián) 合體上可用的下一個(gè)WQE (步驟2050 )。第二端點(diǎn)將PCIeDMA操 作的結(jié)果放入在第二主機(jī)系統(tǒng)上的存儲(chǔ)器(步驟2060)。然后,第 二主機(jī)系統(tǒng)將其數(shù)據(jù)發(fā)送到在接收WQE中傳遞的數(shù)據(jù)段(步驟 2070 )。
當(dāng)?shù)诙鳈C(jī)系統(tǒng)完成了所請(qǐng)求的工作時(shí),第二端點(diǎn)對(duì)第 一 主機(jī) 系統(tǒng)的根聯(lián)合體執(zhí)行PCIe DMA操作,以推送信令通知發(fā)送操作已 經(jīng)完成的CQE (步驟2080)。第二端點(diǎn)將PCIeDMA操作的結(jié)果放 入在第一主機(jī)系統(tǒng)上的存儲(chǔ)器(步驟2090)。然后,該操作終止。
如同上文所討論的,多根系統(tǒng)的端點(diǎn)可以支持具有 一 個(gè)或多個(gè) 相關(guān)聯(lián)的虛擬功能的一個(gè)或多個(gè)物理功能。說明性的實(shí)施方式的機(jī) 制,除了在相同或不同的主機(jī)系統(tǒng)的根聯(lián)合體和端點(diǎn)之間提供通信, 也提供用于管理端點(diǎn)的物理和虛擬功能的機(jī)制。由說明性的實(shí)施方 式的機(jī)制提供的一種功能提供了將單根無狀態(tài)虛擬功能及其相關(guān)聯(lián) 的應(yīng)用從一個(gè)物理功能遷移到相同端點(diǎn)上的另 一個(gè)的能力。對(duì)于滿 足在系統(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ī)制來移動(dòng)以太網(wǎng)VF 及其相關(guān)聯(lián)的依賴的應(yīng)用,以便利用在不同PF上可用的較快(例如, 較少擁塞)連接的優(yōu)勢(shì),其中PF可以與不同的SI或甚至EP相關(guān)聯(lián) 在一起。
圖21A和21B是示出了根據(jù)一個(gè)說明性的實(shí)施方式的從在相同 端點(diǎn)(例如,PCIe適配器)上的一個(gè)物理功能向另一個(gè)物理功能的 虛擬功能及其相關(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é)人來描述遷移場(chǎng)景。這可以包括但不限于顯示在 PCIe架構(gòu)中可用的等同的VF,該VF可以是用于經(jīng)由系統(tǒng)管理接口 (未示出)遷移的目標(biāo)。
可以例如基于VF遷移能力位來確定可由SR-PCIM2100描述的 特定的遷移場(chǎng)景,其中SR-PCIM訪問該VF遷移能力位以確定特定 的VF是否可遷移?;趤碜許R-PCIM2100的所述信息,SWI2115 可以通過管理控制臺(tái)或?qū)嶓w解譯并將此數(shù)據(jù)轉(zhuǎn)換為對(duì)用戶可用的 VF遷移場(chǎng)景。這些遷移場(chǎng)景將高度依賴于所討論的組件的設(shè)計(jì)。例 如,為了遷移以太網(wǎng)適配器,OS可能必須對(duì)其進(jìn)行解配置。如果 OS沒有提供這種功能性,則管理實(shí)用工具將無法描述這種場(chǎng)景。換 言之,管理實(shí)用工具維護(hù)組件(系統(tǒng)鏡像類型、硬件等)的知識(shí), 然后使用該知識(shí)來描述遷移場(chǎng)景。所述信息以及存儲(chǔ)于VF的遷移能 力位中的遷移能力信息標(biāo)識(shí)哪些用于遷移的場(chǎng)景可供選擇。
系統(tǒng)管理員啟動(dòng)該過程,以遷移所希望的VF 2120和相關(guān)聯(lián)的 應(yīng)用2U0。例如,諸如在圖形用戶界面顯示中,管理軟件(未示出) 可將VF及其相關(guān)聯(lián)的應(yīng)用描述為實(shí)體,其中可在主機(jī)系統(tǒng)和PCIe 架構(gòu)上的可用資源之間遷移所述實(shí)體。管理軟件可以存在于諸如從 國際商業(yè)機(jī)器公司可荻得的HMC的硬件管理控制臺(tái)上、或者存在于 設(shè)計(jì)為與固件(例如,軟件中介或管理程序)交互并控制硬件資源 的功能的系統(tǒng)運(yùn)行軟件的任何其他控制臺(tái)或部分之中。
運(yùn)行在主機(jī)系統(tǒng)上的軟件中介(SWI) 2115可向SI-A2105發(fā)送 請(qǐng)求,以請(qǐng)求完成所有的未完成的請(qǐng)求或遷移VF2120的靈活性,其 中軟件中介(SWI) 2115是任意類型的固件或軟件代碼,其使用在 管理應(yīng)用和硬件之間以創(chuàng)建允許額外的功能性的抽象層。例如,SI-A 2105和SWI2115可以具有應(yīng)用程序接口 ( API) , SI-A2105和SWI 2115通過應(yīng)用程序接口 (API)進(jìn)行通信。SI-A 2105可以通過暫停
或停止使用VF 2120的任何應(yīng)用2110來響應(yīng)該請(qǐng)求。SI-A 2105可 以確保完成對(duì)VF2120的未完成的所有請(qǐng)求。本質(zhì)上,SI-A2105檢 查以確信所有的隊(duì)列都處于表示沒有未決的請(qǐng)求以及已經(jīng)完成了所 有事務(wù)的狀態(tài)中。例如,完全此任務(wù)的一種方式是檢查所有的WQE 都具有對(duì)應(yīng)的CQE。
然后,SI-A 2105可以對(duì)其VF 2120的邏輯表示進(jìn)行解配置,有 效地停止SI-A對(duì)VF 2120的使用。這是可以由例如用于在SI-A 2105 上的VF2120的設(shè)備驅(qū)動(dòng)器(未示出)執(zhí)行的操作。然后SI-A2105 可以向SWI 2115通知所有"i貪求已經(jīng)完成以及可以移除VF 2120。SWI 2115接著可以從SI-A 2105中移除VF 2120。這將使VF 2120呈現(xiàn)出 由SI-A 2105不可探測(cè)和不可配置。SWI 2115現(xiàn)在可以通過清除在 端點(diǎn)的配置空間中的VF的表示來將VF 2120從目標(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ū)動(dòng)器,其中由固件代碼將該設(shè)備樹提供給OS。 一旦在SI-A 的設(shè)備樹中存在用于新設(shè)備(例如VF2145)的實(shí)體,則用于該設(shè)備 的設(shè)備驅(qū)動(dòng)器將檢測(cè)并配置該新設(shè)備。
一旦SI-A 2105使用例如設(shè)備驅(qū)動(dòng)器配置VF 2145,則相關(guān)聯(lián)的 應(yīng)用2110能夠使用VF 2145。現(xiàn)在,SWI 2115現(xiàn)在可指示SI-A2105 啟動(dòng)完成該遷移的相關(guān)聯(lián)的應(yīng)用2110。結(jié)果,如由虛線所示,應(yīng)用 2110和VF 2120依然是相關(guān)聯(lián)的,但已經(jīng)將VF 2120從其與PF 2135 相關(guān)聯(lián)遷移到現(xiàn)在的與PF 2140相關(guān)聯(lián)。
圖22A和圖22B是示出了根據(jù)一個(gè)說明性的實(shí)施方式的從例如 PCIe適配器的一個(gè)端點(diǎn)向另一個(gè)端點(diǎn)的對(duì)虛擬功能(VF)及其相關(guān)
聯(lián)的應(yīng)用的單根無狀態(tài)遷移的示例性示意圖。用于從一個(gè)端點(diǎn)向另
一個(gè)的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é)人描述遷移 場(chǎng)景。這可以包括但不限于顯示在PCIe架構(gòu)上可用的等同的VF, 其中所述VF可以是用于經(jīng)由系統(tǒng)管理接口(未示出)的遷移的目標(biāo)。
系統(tǒng)管理員啟動(dòng)該過程,以遷移所希望的VF 2220和相關(guān)連的 應(yīng)用2210。例如,管理軟件(未示出)可將VF及其相關(guān)聯(lián)的應(yīng)用 描述為諸如在管理控制臺(tái)或?qū)嶓w的圖形用戶界面顯示中的實(shí)體,其 中可在PCIe架構(gòu)和主機(jī)系統(tǒng)上的可用資源之間遷移所述實(shí)體。運(yùn)行 在主機(jī)系統(tǒng)上的軟件中介(SWI) 2215可以向SI-A 2205發(fā)送針對(duì)待 遷移的VF 2220完成所有未完成的請(qǐng)求的請(qǐng)求。例如,SI-A 2205和 SWI 2215可以具有應(yīng)用程序接口( API),其中SI-A 2205和SWI 2215 通過該應(yīng)用程序接口 (API)進(jìn)行通信。SI-A 2205可以通過暫?;?停止^f吏用VF 2220的任何應(yīng)用2210來響應(yīng)該請(qǐng)求。SI-A 2205可以 確保完成對(duì)VF 2220的所有未完成的請(qǐng)求。
然后,SI-A 2205可以解配置其VF 2220的邏輯表示,有效地停 止SI-A對(duì)VF 2220的使用。這是可以由例如用于在SI-A 2205上的 VF 2220的設(shè)備驅(qū)動(dòng)器(未示出)執(zhí)行的操作。然后,SI-A 2205可 以向SWI 2215通知所有請(qǐng)求已經(jīng)完成以及可以移除VF 2220。 SWI 2215接著可以從SI-A 2205中移除VF 2220。這將使VF 2220呈現(xiàn)出 由SI-A 2205不可探測(cè)和不可配置。SWI 2215現(xiàn)在可以通過清除在 端點(diǎn)的配置空間中的VF的表示來將VF 2220從目標(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ū)動(dòng)器來配置VF 2245,設(shè)備驅(qū)動(dòng) 器的類型將依賴于所討論的設(shè)備或功能的特定屬性。相關(guān)聯(lián)的應(yīng)用 2210現(xiàn)在可以使用VF 2245。 SWI現(xiàn)在可以指示SI-A 2205啟動(dòng)完成 遷移的相關(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í)行類似的操作,以從一個(gè)系統(tǒng)鏡像向另 一個(gè)系統(tǒng)鏡像遷 移虛擬功能。圖23A和圖23B是示出了根據(jù)一個(gè)說明性的實(shí)施方式 的從一個(gè)系統(tǒng)鏡像向另 一個(gè)系統(tǒng)鏡像的對(duì)虛擬功能及其相關(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)完成所有請(qǐng)求并且可以移除VF 2320。
如果針對(duì)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,使其可為相關(guān)聯(lián)(現(xiàn)在與 SI-B 2350相關(guān)聯(lián))的應(yīng)用2310所用。SWI 2315通知目標(biāo)SI 2350 啟動(dòng)相關(guān)聯(lián)的應(yīng)用,以使用在新的VF 2345上的資源。
圖24是概括了根據(jù) 一 個(gè)說明性的實(shí)施方式的用于遷移虛擬功能 的示例性操作的流程圖。如圖24所示,操作開始于用戶指定將要遷 移的VF、以及針對(duì)該VF的目標(biāo)目的地(步驟2410)。運(yùn)行在主機(jī) 系統(tǒng)上的SWI向SI發(fā)送完成對(duì)VF的所有未完成的請(qǐng)求以便遷移
VF的請(qǐng)求(步驟2420) 。 SI暫?;蛲V故褂肰F的任何應(yīng)用(步驟 2430),并確保已經(jīng)完成了對(duì)VF的所有未完成的請(qǐng)求(步驟2440)。 然后,SI解配置其VF的邏輯表示(步驟2450) 。 SI向SWI通知已 經(jīng)完成所有請(qǐ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啟動(dòng)相關(guān)聯(lián)的應(yīng)用,以使用 在新VF上的資源(步驟2495 )。然后,該操作終止。
這樣,利用說明性的實(shí)施方式,可在相同的端點(diǎn)內(nèi)、不同的端 點(diǎn)之間、以及在相同或不同端點(diǎn)上的不同的系統(tǒng)鏡像之間遷移虛擬 功能。這種遷移使得可以執(zhí)行多種負(fù)載均衡操作。而且,這種遷移 允許將虛擬功能移動(dòng)到更有益于虛擬功能的有效操作的操作環(huán)境。
這樣,概括的說明性的實(shí)施方式提供了用于在相同的根聯(lián)合體 內(nèi)或跨過多個(gè)根聯(lián)合體(RC)的多個(gè)系統(tǒng)鏡像(SI)之間同時(shí)共享 例如PCIe適配器的端點(diǎn)的才幾制。而且,沈明性的實(shí)施方式的沖幾制支 持使用基于隊(duì)列的通信、基于推送-拉回協(xié)議的通信和基于套接字的 通信的能力。另外,說明性的實(shí)施方式提供了用于從在相同或不同 端點(diǎn)上一個(gè)物理功能向另一個(gè)物理功能以及從一個(gè)系統(tǒng)鏡像向另一 個(gè)系統(tǒng)鏡像遷移虛擬功能及其相關(guān)聯(lián)的應(yīng)用實(shí)例的機(jī)制。
除了這些機(jī)制,說明性的實(shí)施方式進(jìn) 一 步提供了用于執(zhí)行將新 組件熱插入到運(yùn)行中的多根PCIe架構(gòu)或從運(yùn)行中的多根PCIe架構(gòu) 中熱拔出的功能性。這些機(jī)制允許根聯(lián)合體例如熱插入到運(yùn)行中的 PCIe架構(gòu)或從運(yùn)行中的PCIe架構(gòu)中熱拔出。例如,可將刀片熱插入 到刀片機(jī)箱,而其相關(guān)聯(lián)的根聯(lián)合體可以實(shí)時(shí)地結(jié)合到在現(xiàn)有系統(tǒng) 中的PCIe架構(gòu)之中。
這種熱插/拔能力允許PCIe架構(gòu)擴(kuò)展并且在新合并的根聯(lián)合體 之間本地地共享虛擬功能。因此,PCIe架構(gòu)可擴(kuò)展,而無需為此停 下系統(tǒng)。PCI-SIG I/O虛擬化標(biāo)準(zhǔn)沒有提供這種用于CPIe架構(gòu)的動(dòng)態(tài) 擴(kuò)展的能力或標(biāo)準(zhǔn)。
利用所說明性的實(shí)施方式機(jī)制,假設(shè)存在具有一個(gè)或多個(gè)PCI 根聯(lián)合體和支持多根感知(MRA)的交換機(jī)的現(xiàn)有主機(jī)系統(tǒng)。例如, 主機(jī)系統(tǒng)可以具有兩個(gè)根聯(lián)合體RC1和RC2,其中根聯(lián)合體RC1和 RC2由具有一個(gè)或多個(gè)MRA交換機(jī)的PCI架構(gòu)連接。而且,假設(shè)存 在一個(gè)或多個(gè)端點(diǎn)連接到該P(yáng)CIe架構(gòu)的端點(diǎn),其中可將該P(yáng)CIe架 構(gòu)配置為與現(xiàn)有的根聯(lián)合體以及新引入的根聯(lián)合體進(jìn)行通信。而且, 假設(shè)多根(MR) PCI配置管理器(MR-PCIM)能夠并且已經(jīng)通過遍 歷所有通過互連的PCIe架構(gòu)的交換機(jī)可訪問的鏈路而發(fā)現(xiàn)PCIe架 構(gòu),其中該多根(MR) PCI配置管理器(MR-PCIM)可位于主機(jī)系 統(tǒng)之一的帶內(nèi)或帶外。上文描述的關(guān)于在此闡明的說明性的實(shí)施方 式的多種機(jī)制可滿足所有這些假設(shè)。
利用上文假設(shè)的配置,當(dāng)系統(tǒng)管理員等向現(xiàn)有的PCIe架構(gòu)添加 新的根聯(lián)合體(例如,向刀片機(jī)箱中插入新的刀片)時(shí),自動(dòng)機(jī)制 (諸如熱插入控制器)或系統(tǒng)管理員至少之一通過諸如管理員接口 等向MR-PCIM通知根聯(lián)合體的添加。例如,可通過向MR-PCIM公 告一個(gè)指示已經(jīng)發(fā)生了向架構(gòu)添加新實(shí)體的動(dòng)作的事件來進(jìn)行這種
通知。這種事件可標(biāo)識(shí)交換機(jī)和交換機(jī)端口,其中在所述交換機(jī)和 交換機(jī)端口處現(xiàn)在新的根聯(lián)合體連接到PCIe架構(gòu),即,在所述交換 機(jī)和交換機(jī)端口處插入了根聯(lián)合體。
然后,MR-PCIM可以通過^l行大量"J乘作以初始化在現(xiàn)有PCIe 架構(gòu)中的新根聯(lián)合體而處理該公告的事件。例如,MR-PCIM可利用 關(guān)于新增加的組件的信息來更新其PCIe架構(gòu)配置數(shù)據(jù)結(jié)構(gòu)。由 MR-PCIM使用PCIe架構(gòu)配置數(shù)據(jù)結(jié)構(gòu)來表示PCIe架構(gòu)的配置。由 MR-PCIM從PCIe架構(gòu)配置寄存器并從來自系統(tǒng)管理員的輸入(例 如,通過與MR-PCIM的管理用戶接口 )來收集存儲(chǔ)在PCIe架構(gòu)配 置數(shù)據(jù)結(jié)構(gòu)中的信息。下面,將更充分地描述PCIe架構(gòu)配置數(shù)據(jù)結(jié) 構(gòu)的內(nèi)容以及對(duì)此內(nèi)容的使用。
在更新了 PCIe架構(gòu)配置數(shù)據(jù)結(jié)構(gòu)之后,然后,MR-PCIM執(zhí)行 如由PCI規(guī)范所定義的PCI配置空間操作,以按照PCI規(guī)范來確定 新增加的組件的特征,例如,是否是端點(diǎn)、根聯(lián)合體、交換機(jī)等, 端點(diǎn)、根聯(lián)合體、交換機(jī)等是何種類型等等。如果確定新增加的組 件是交換機(jī),則關(guān)于交換機(jī)的每個(gè)端口來執(zhí)行PCI配置空間操作, 以確定存在耦合到交換機(jī)的附加組件。然后,將針對(duì)新增加的組件 的特征信息(例如組件類型、供應(yīng)商名稱、零件編號(hào)、序列號(hào)等) 存儲(chǔ)在虛擬PCIe架構(gòu)配置數(shù)據(jù)結(jié)構(gòu)中,以供MR-PCIM使用。
如果組件是新根聯(lián)合體或新端點(diǎn),MR-PCIM將該新根聯(lián)合體或 端點(diǎn)與虛擬平面相關(guān)聯(lián)。按照這種方式,使得該新根聯(lián)合體或端點(diǎn) 對(duì)系統(tǒng)可用。如果組件是MRA交換機(jī),則MR-PCIM按照PCI I/O 虛擬化規(guī)范來配置該交換機(jī)的虛擬平面表。如果組件是交換機(jī),則 檢查交換機(jī)端口,以察看哪些組件(如果有的話)附接到這些端口, 并且MR-PCIM也按照類似的方式基于關(guān)于這些組件的信息來配置 其PCIe架構(gòu)配置數(shù)據(jù)結(jié)構(gòu)。按照這種方式,可以動(dòng)態(tài)地將新組件添 加到PCIe架構(gòu)。
關(guān)于新根聯(lián)合體,已經(jīng)將MR-PCIM配置為包括對(duì)于新根聯(lián)合體 的特征信息,并將該新根聯(lián)合體與虛擬平面相關(guān)聯(lián),可以在PCIe架 構(gòu)中使用該新聯(lián)合體。這樣,說明性的實(shí)施方式的機(jī)制允許向現(xiàn)有 運(yùn)行中的PCIe架構(gòu)添加根聯(lián)合體及其相關(guān)聯(lián)的組件。結(jié)果,當(dāng)擴(kuò)展 系統(tǒng)以包括附加組件時(shí),針對(duì)該系統(tǒng)沒有停機(jī)時(shí)間。
圖25是示出了根據(jù)一個(gè)說明性的實(shí)施方式的用于根聯(lián)合體的熱 插入操作的示例性框圖。應(yīng)該理解,盡管圖25示出了用于根聯(lián)合體 的熱插入操作,但示例性實(shí)施方式并不局限于此。相反,正如上文 所述的,該熱插入操作可以關(guān)于端點(diǎn)、交換機(jī)以及其他類型的組件 來執(zhí)行而并不脫離本發(fā)明的精神和范圍。
如圖25中所示,主機(jī)系統(tǒng)2510具有分別與虛擬平面2511和2513 相關(guān)聯(lián)的現(xiàn)有根聯(lián)合體RC1 2512和RC2 2514?,F(xiàn)有根聯(lián)合體RC1 2512和RC2 2514由MR-PCIM 2562配置以與在虛擬平面2541和
2550內(nèi)的端點(diǎn)2542、2544、2552以及2554進(jìn)行通信。MR-PCIM 2562 維護(hù)架構(gòu)配置數(shù)據(jù)結(jié)構(gòu)2566,其中架構(gòu)配置數(shù)據(jù)結(jié)構(gòu)2566存儲(chǔ)了用 于PCIe架構(gòu)2530的所有組件以及附接到PCIe架構(gòu)2530的組件(包 括主機(jī)系統(tǒng)2510的組件)的特征信息。
在所描繪的例子中,假設(shè)已經(jīng)將新根聯(lián)合體RC N 2516加入主 機(jī)系統(tǒng)2510。例如,該根聯(lián)合體RC N 2516可以與刀片相關(guān)聯(lián),并 且主機(jī)系統(tǒng)2510可以是具有機(jī)箱的刀片服務(wù)器,其中可以插入與 RC N 2516相關(guān)聯(lián)的刀片??梢允褂每商峁㏑C N 2516的其他類型的 設(shè)備,而不脫離說明性的實(shí)施方式的精神和范圍。
對(duì)于說明性的實(shí)施方式,存在與每個(gè)交換機(jī)端口相關(guān)聯(lián)的兩種 類型的標(biāo)準(zhǔn)PCI熱插入控制器,其中所述交換機(jī)端口允許組件的熱 插/拔。由MR-PCIM 2562使用這些熱插入控制器的其中之一,用于 熱插/拔操作的物理方面,并被稱為"物理熱插入"控制器。對(duì)于每 個(gè)可熱插入的端口 ,存在這些物理熱插入控制器中的一個(gè)。
另外,提供"虛擬熱插入"控制器用于根聯(lián)合體,其中該根聯(lián) 合體使用虛擬熱插入控制器,以控制在交換機(jī)端口下的它們通往共 享組件的邏輯連接。對(duì)于由交換機(jī)端口所支持的每個(gè)虛擬平面,存 在一個(gè)虛擬熱插入控制器。
對(duì)于說明性的實(shí)施方式,響應(yīng)于對(duì)新RC N 2516的添加,在與 RC N 2516相關(guān)聯(lián)的交換機(jī)2532端口處,物理熱插入控制器向 MR-PCIM 2562發(fā)送"存在檢測(cè)改變,,中斷消息,以通知MR-PCIM 2562新組件已被加入PCIe架構(gòu)。此中斷消息由PCI規(guī)范所定義,但 此處的使用是為了將中斷引導(dǎo)至MR-PCIM 2562而并非引導(dǎo)至沒有 運(yùn)行MR-PCIM 2562的根聯(lián)合體。可選地,作為新組件添加的另一 種通知形式,在插入前,系統(tǒng)管理員還可以通過通往MR-PCIM 2562 的管理接口 (未示出)來通知MR-PCIM 2562。
MR-PCIM 2562然后可以通過執(zhí)行多個(gè)操作來處理"存在檢測(cè)改 變,,中斷,以初始化在現(xiàn)有PCIe架構(gòu)2530中的新組件,例如,根 聯(lián)合體RCN2516。例如,MR-PCIM 2562利用關(guān)于新添加的組件的信息來更新其架構(gòu)配置數(shù)據(jù)結(jié)構(gòu)2566。在更新架構(gòu)配置數(shù)據(jù)結(jié)構(gòu) 2566中,MR-PCIM 2562執(zhí)行PCI配置空間操作,以查詢并確定該 新添加組件的特征,例如,其是否為端點(diǎn)、根聯(lián)合體、交換機(jī)等, 其是何種類型的端點(diǎn)、根聯(lián)合體、交換機(jī)等,供應(yīng)商名稱、零件編 號(hào)、序列號(hào)等。
除了此自動(dòng)查詢,當(dāng)所添加的組件為根聯(lián)合體時(shí),該系統(tǒng)管理 員也可以例如通過通往MR-PCIM 2562的管理接口 (未示出),來 告知MR-PCIM 2562將哪些組件配置給該新添加的一艮聯(lián)合體。例如, MR-PCIM 2562需要知到系統(tǒng)管理員希望將哪些端點(diǎn)分配給新RC N 2516,佳j尋可以^)夸那些端點(diǎn)添加至正確的虛擬平面,/人而該新RCN 2516能獲得對(duì)它們的訪問。通過MR-PCIM 2562訪問MRA交換機(jī) 2532的PCI配置空間中的PCI多根配置結(jié)構(gòu)并且如果該端點(diǎn)為MRA 端點(diǎn),除了在MRA交換機(jī)2532之外還訪問在該端點(diǎn)中的PCI多根 配置結(jié)構(gòu),來執(zhí)行這種向虛擬平面的端點(diǎn)分配。
在描述的例子中,所添加的新組件為根聯(lián)合體RCN2516,例如 提供RC N 2516的刀片。然而,該組件可以是多個(gè)不同類型的組件 中的任意一個(gè),并且因此,MR-PCIM 2562可以基于從所添加的組件 收集的特征信息來確定添加組件的類型?;诖_定的添加組件的類 型,MR-PCIM2562可以執(zhí)行各種操作,以動(dòng)態(tài)地向PCIe架構(gòu)2530 添加組件,使得其可以使用于PCIe架構(gòu)2530的通信和操作。
因?yàn)樵谒枋龅睦又?,添加組件為新根聯(lián)合體RCN2516,所并且然后將系統(tǒng)管理員已經(jīng)指定給新根聯(lián)合體RC N 2516的端點(diǎn)相 關(guān)聯(lián),如上文的詳細(xì)描述的那樣。按照這種方式,新組件可以動(dòng)態(tài) 添加至PCIe架構(gòu)。
隨著新根聯(lián)合體RCN2516已由MR-PCIM 2562添加至PCIe架 構(gòu)2530,通過在架構(gòu)配置數(shù)據(jù)結(jié)構(gòu)2566中包括對(duì)于新根聯(lián)合體RC N 2516的特征信息,將該組件的PCI配置空間設(shè)置為與該新根聯(lián)合體 相關(guān)聯(lián),并將該新根聯(lián)合體與虛擬平面2515相關(guān)聯(lián),可在PCIe架
構(gòu)2530中使用新根聯(lián)合體RC N 2516。上述操作可以在PCIe架構(gòu) 2530繼續(xù)工作的同時(shí)動(dòng)態(tài)地加以執(zhí)行。因此,說明性的實(shí)施方式提 供一種用于向運(yùn)行中的PCIe架構(gòu)2530中熱插入組件的機(jī)制。
應(yīng)該注意,架構(gòu)配置數(shù)據(jù)結(jié)構(gòu)2566可以用于多種目的,其中該 架構(gòu)配置數(shù)據(jù)結(jié)構(gòu)2566由MR-PCIM 2562關(guān)于該系統(tǒng)配置保持為當(dāng) 前值。例如,其可用于經(jīng)由MR-PCIM管理接口向系統(tǒng)管理員顯示 PCIe架構(gòu)2530的I/O配置。即,可以通過由MR-PCIM 2562所提供 的管理接口來向給系統(tǒng)管理員提供將哪些端點(diǎn)分配給哪些根聯(lián)合
架構(gòu)配置數(shù)據(jù)結(jié)構(gòu)2 5 66還可以跨過系統(tǒng)電源周期而在諸如閃存或硬 盤的非易失性存儲(chǔ)器中持續(xù)保存,使得當(dāng)該系統(tǒng)啟動(dòng)時(shí),可以由 MR-PCIM 2562自動(dòng)恢復(fù)先前的端點(diǎn)到根聯(lián)合體的分配,如系統(tǒng)管理 員先前分配的那樣。
利用從I/O通信架構(gòu)2530、端點(diǎn)PCI配置寄存器已知信息以及 系統(tǒng)管理員經(jīng)由MR-PCIM 2562的管理接口輸入的信息,來保持架 構(gòu)配置數(shù)據(jù)結(jié)構(gòu)2566。架構(gòu)配置數(shù)據(jù)結(jié)構(gòu)2566標(biāo)識(shí)I/O結(jié)構(gòu)的樹數(shù) 據(jù)結(jié)構(gòu),并因此可以用于知道當(dāng)執(zhí)行移除操作時(shí)將移除哪些組件, 如下文所述。
在上文的例子中,添加了根聯(lián)合體。當(dāng)發(fā)生這種情況時(shí),作為 正常加電操作的 一部分,該根聯(lián)合體的固件和軟件使用正常的配置 訪問來探測(cè)在架構(gòu)配置數(shù)據(jù)結(jié)構(gòu)2566中的1/0配置信息。當(dāng)端點(diǎn)為 正在添加至運(yùn)行中的1/0通信架構(gòu)2530的組件時(shí), 一旦系統(tǒng)管理員 已通過MR-PCIM的管理接口向該期望的根聯(lián)合體添加了該組件,則 在如上文所述向期望的虛擬平面配置了該端點(diǎn)之后,MR-PCIM 2562 信令通知該根聯(lián)合體已經(jīng)通過上文所涉及的虛擬熱插入控制器添加 了該端點(diǎn)。作為結(jié)果,該根聯(lián)合體從該虛擬熱插入控制器接收中斷, 以及對(duì)將配置并開始使用該新端點(diǎn)的軟件加以初始化。因此,可以 添加端點(diǎn),而無需停止當(dāng)前系統(tǒng)操作。
另外,說明性的實(shí)施方式的機(jī)制還提供了用于從PCIe架構(gòu)2530
動(dòng)態(tài)移除組件的功能性。類似于"添加,,事件,系統(tǒng)管理員可以經(jīng)
由接口、自動(dòng)檢測(cè)機(jī)制等向MR-PCIM 2562通知"移除"事件。對(duì) 于"移除,,事件,該事件對(duì)MR-PCIM 2562標(biāo)識(shí)在由MR-PCIM 2562 管理的虛擬層級(jí)中的哪個(gè)虛擬樹數(shù)據(jù)分支上,該移除操作(即,組 件的熱插入移除)已發(fā)生或?qū)⒁l(fā)生。
在移除操作中,由架構(gòu)配置數(shù)據(jù)結(jié)構(gòu)2566標(biāo)識(shí)待移除的組件。 如上文所述,此架構(gòu)配置數(shù)據(jù)結(jié)構(gòu)2566標(biāo)識(shí)了 1/0組件的樹數(shù)據(jù)結(jié) 構(gòu)。該移除操作指向在該樹數(shù)據(jù)結(jié)構(gòu)中待移除的組件,并且該組件 以下的所有也都將被移除。例如,通過經(jīng)由MR-PCIM 2562管理接 口向系統(tǒng)管理員顯示的圖形管理界面來指向待移除的組件。在這種 情況下,MR-PCIM 2562經(jīng)由架構(gòu)配置數(shù)據(jù)結(jié)構(gòu)2566而知道所選擇 的組件如何涉及其他組件。
優(yōu)選地,可以由與該組件的虛擬熱插入控制器中的狀態(tài)位來標(biāo) 識(shí)組件的關(guān)系。在后者的情況下,虛擬熱插入控制器可以向 MR-PCIM2562發(fā)布中斷消息,MR-PCIM 2562然后可以從該虛擬熱 插入控制器的寄存器中讀取狀態(tài),以查看哪些組件將被移除。在這 種情況下,MR-PCIM 2562可以掃描架構(gòu)配置數(shù)據(jù)結(jié)構(gòu)2566以查找 該組件,以便發(fā)現(xiàn)哪些組件需要被移除。
移除操作的實(shí)例包括移除端點(diǎn)EP5 2552的操作,在此情況下, 基于架構(gòu)配置數(shù)據(jù)結(jié)構(gòu)2566中的樹數(shù)據(jù)結(jié)構(gòu),僅將該端點(diǎn)標(biāo)識(shí)用于 移除。在另一例子中,基于架構(gòu)配置數(shù)據(jù)結(jié)構(gòu)2566的樹數(shù)據(jù)結(jié)構(gòu), MRA交換機(jī)3 2532的移除將涉及MRA交換機(jī)3 2532和端點(diǎn) EP3-EP6 2542-2554的移除。
MR-PCIM 2562通過更新其虛擬PCIe架構(gòu)配置數(shù)據(jù)結(jié)構(gòu)2566來 處理"移除,,事件,以便移除與"移除,,事件相關(guān)聯(lián)的組件,并且 在所涉及的一個(gè)或者多個(gè)樹分支中更新所述組件的PCI配置空間, 以將它們從它們先前所占用的虛擬平面內(nèi)移除。在移除之后,端點(diǎn) 可以被返回至未使用的組件池,并可以隨后由系統(tǒng)管理員分配給另 一根聯(lián)合體。具體地,如果該組件是如架構(gòu)配置數(shù)據(jù)結(jié)構(gòu)2566中的PCI配置信息所標(biāo)識(shí)的端點(diǎn),則MR-PCIM 2562在該端點(diǎn)所在的虛擬 樹數(shù)據(jù)層級(jí)中將該端點(diǎn)從虛擬平面移除。如果該組件是根聯(lián)合體、 或提供了根聯(lián)合體,則從作為此虛擬平面的部分的所有組件中移除 與該組件相關(guān)聯(lián)的虛擬平面。這樣,除了能夠動(dòng)態(tài)地向PCIe架構(gòu)添 加組件之外,說明性的實(shí)施方式的機(jī)制還提供在PCIe架構(gòu)處于操作 或運(yùn)行的同時(shí)從PCIe架構(gòu)動(dòng)態(tài)地移除組件的能力。
圖26是概括了根據(jù)一個(gè)說明性的實(shí)施方式的用于向PCIe架構(gòu) 添加組件的示例性操作的流程圖。如圖26所示,該操作開始于在 MR-PCIM中接收到指示向PCIe架構(gòu)添加組件的"添加"事件(步 驟2610)。如上文所述,此事件可以標(biāo)識(shí)組件所添加到的交換才幾和 交換j幾端口 ,并可以例如響應(yīng)于組件添加的自動(dòng)4企測(cè)或響應(yīng)于系統(tǒng) 管理員命令輸入來產(chǎn)生該事件。該"添加,,事件可以作為"存在檢
測(cè)改變"中斷的部分而接收,其中"呈現(xiàn);險(xiǎn)測(cè)改變"中斷例如由PCIe 交換機(jī)的物理熱插入控制器響應(yīng)于檢測(cè)到添加新組件而發(fā)出。
MR-PCIM收集對(duì)于添加的組件的特征信息(步驟2620 )。此收 集可以包括與該組件進(jìn)行通信以取回特征信息,諸如從與組件相關(guān) 聯(lián)的VPD存儲(chǔ)設(shè)備等中取回特征信息。另外,該收集可以包括 MR-PCIM執(zhí)行PCI配置空間操作以確定新添加組件的這些特征。 MR-PCIM基于收集的特征信息來確定該組件是否為交換機(jī)(步驟 2630)。如果該組件為交換機(jī),則MR-PCIM收集對(duì)于附接到該交換 機(jī)端口的任何組件的特征信息(步驟2640 ) 。 MR-PCIM基于對(duì)于該 組件的特征信息確定該交換機(jī)是MRA交換機(jī)還是基本交換機(jī)(步驟 2650)。如果該交換機(jī)為MRA交換機(jī),貝'j MR-PCIM配置MRA交 換機(jī)虛擬平面表(步驟2660 )。如果該交換機(jī)為基本交換機(jī),則 MR-PCIM向一個(gè)虛擬平面分配交換機(jī)上所有的端口 (步驟2670)。 如果該組件并非交換機(jī),則MR-PCIM確定該組件提供了新根聯(lián) 合體或者端點(diǎn)。MR-PCIM將該根聯(lián)合體或端點(diǎn)與虛擬平面相關(guān)聯(lián) (步驟2680)。然后,使用對(duì)于該組件的特征信息,以基于該相關(guān) 聯(lián)的虛擬平面來更新與MR-PCIM相關(guān)聯(lián)的PCIe架構(gòu)配置數(shù)據(jù)結(jié)構(gòu)(步驟2690)。此更新可以包括,例如,更新在架構(gòu)配置數(shù)據(jù)結(jié)構(gòu) 中保持的一個(gè)或多個(gè)虛擬層級(jí)。最終,MR-PCIM更新PCI配置空間 VP標(biāo)識(shí)符(步驟2695 )。然后,操作終止。
圖27是概括了根據(jù)一個(gè)說明性的實(shí)施方式的用于從PCIe架構(gòu) 中動(dòng)態(tài)地移除組件的示例性操作的流程圖。如圖27所示,該操作開 始于MR-PCIM接收到"移除,,事件(步驟2710)。如上文所述, 可以例如響應(yīng)于組件移除的自動(dòng)檢測(cè)或著響應(yīng)于系統(tǒng)管理員命令輸 入而產(chǎn)生該事件。
MR-PCIM確定該正在移除的組件是否為端點(diǎn)(步驟2720)。如 果該組件為端點(diǎn),則將該組件從虛擬平面內(nèi)移除(步驟2730 ),其 中在與MR-PCIM相關(guān)聯(lián)的PCIe架構(gòu)配置數(shù)據(jù)結(jié)構(gòu)中已經(jīng)將該組件 分配給該虛擬平面。如果該組件并非端點(diǎn),則該組件為沖艮聯(lián)合體。 如果該組件為根聯(lián)合體,則MR-PCIM將與該根聯(lián)合體相關(guān)聯(lián)的虛擬 平面從P CI e架構(gòu)配置數(shù)據(jù)結(jié)構(gòu)中作為此虛擬平面的部分的所有組件 中移除(步驟2740)。除了從MR-PCIM的架構(gòu)配置數(shù)據(jù)結(jié)構(gòu)中移 除組件之外,MR-PCIM還向受影響的組件發(fā)出PCI配置操作,以更 新該組件中的VP數(shù)量(步驟2750 )。然后,該操作終止。
因此,說明性的實(shí)施方式的機(jī)制提供了用于在多個(gè)系統(tǒng)鏡像和 根聯(lián)合體來共享端點(diǎn)的各種功能性。這些功能性包括配置共享存 儲(chǔ)器空間用于在根聯(lián)合體和端點(diǎn)之間的通信中使用,動(dòng)態(tài)地添加或 移除根聯(lián)合體以及其他組件等。這些各種機(jī)制均向系統(tǒng)添加了當(dāng)需 求隨時(shí)間變化時(shí)進(jìn)行擴(kuò)展的能力。此外,這些各種機(jī)制增強(qiáng)了負(fù)載 均衡、并發(fā)維護(hù)、以及其他期望的系統(tǒng)能力的冗余。
請(qǐng)?zhí)貏e注意,盡管已經(jīng)在全功能的數(shù)據(jù)處理系統(tǒng)的上下文中描 述了本發(fā)明,但本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解,本發(fā)明的處理能夠以指 令的計(jì)算機(jī)可讀介質(zhì)的形式以及各種形式來分發(fā),并且應(yīng)當(dāng)理解,
可以等同地應(yīng)用本發(fā)明,而無論實(shí)際用于執(zhí)行該分發(fā)的信號(hào)承載介 質(zhì)的特定類型。計(jì)算機(jī)可讀介質(zhì)的例子包括可記錄類型介質(zhì),諸 如軟盤、硬盤驅(qū)動(dòng)器、RAM、 CD-ROM、 DVD-ROM;以及傳輸類型
介質(zhì),諸如數(shù)字和模擬通信鏈路、使用例如射頻以及光波傳輸?shù)膫?輸形式的有線或無線鏈路。計(jì)算機(jī)可讀介質(zhì)可以采用編碼格式的形 式,其中針對(duì)在特定數(shù)據(jù)處理系統(tǒng)中的實(shí)際使用,對(duì)所述編碼格式
進(jìn)行解碼。
為了示例和說明的目的,提供本發(fā)明的說明,并且本發(fā)明的說明并 非旨在窮盡性的或者將本發(fā)明限制于所公開的形式。許多修改和變型對(duì) 于本領(lǐng)域技術(shù)人員將是明顯的。選擇和說明這些實(shí)施方式,以便最好地 解釋本發(fā)明的原理和實(shí)際應(yīng)用,并使得本領(lǐng)域的其他技術(shù)人員理解本發(fā) 明,具有各種修改的各種實(shí)施方式適用于所預(yù)期的特定使用。
權(quán)利要求
1.一種在數(shù)據(jù)處理系統(tǒng)中用于將組件熱插到運(yùn)行的通信架構(gòu)中的方法,該方法包括在多根外圍組件互連管理器(MR-PCIM)中,接收指示新組件已被添加到所述數(shù)據(jù)處理系統(tǒng)的事件通知;由所述MR-PCIM執(zhí)行一個(gè)或多個(gè)配置空間操作以確定所述新組件的特征;基于所述新組件的一個(gè)或多個(gè)特征,更新與所述MR-PCIM相關(guān)聯(lián)的配置數(shù)據(jù)結(jié)構(gòu);以及基于與所述MR-PCIM相關(guān)聯(lián)的更新的配置數(shù)據(jù)結(jié)構(gòu),使用所述新組件來處理所述通信架構(gòu)中的輸入/輸出操作。
2. 根據(jù)權(quán)利要求1所述的方法,其中所述新組件是根聯(lián)合體、 交換機(jī)或端點(diǎn)中的一個(gè)。
3. 根據(jù)權(quán)利要求2所述的方法,其中如果所述新添加的組件是 交換機(jī),則關(guān)于所述交換機(jī)的每個(gè)端口執(zhí)行所述一個(gè)或多個(gè)配置空 間操作,以確定耦合到所述交換機(jī)的附加組件的存在,并且配置任 何耦合到所述交換機(jī)的端口的附加組件。
4. 根據(jù)權(quán)利要求2所述的方法,其中如果所述組件是根聯(lián)合體 或端點(diǎn),則所述MR-PCIM將所述根聯(lián)合體或端點(diǎn)與虛擬平面相關(guān) 聯(lián)。
5. 根據(jù)權(quán)利要求1所述的方法,其中在所述通信架構(gòu)繼續(xù)運(yùn)行 的同時(shí)動(dòng)態(tài)地#1行所述方法。
6. 根據(jù)權(quán)利要求1所述的方法,還包括接收用戶輸入,所述用戶輸入指定將與所述新組件相關(guān)聯(lián)的 一 個(gè) 或多個(gè)端點(diǎn);以及將所述新組件以及所述 一 個(gè)或多個(gè)端點(diǎn)與所述數(shù)據(jù)處理系統(tǒng)中 的虛擬平面相關(guān)聯(lián)。
7. 根據(jù)權(quán)利要求1所述的方法,其中所述事件通知是由物理熱插控制器響應(yīng)于檢測(cè)到所述新組件添加到所述通信架構(gòu)中而提供的 中斷。
8. 根據(jù)權(quán)利要求1所述的方法,其中所述事件通知標(biāo)識(shí)在所述 通信架構(gòu)中的多才艮感知(MRA)交換機(jī)以及與所述新組件相關(guān)聯(lián)的 交換機(jī)端口 。
9. 根據(jù)權(quán)利要求1所述的方法,還包括 接收指示將從所述通信架構(gòu)中移除的組件的通知; 更新所述配置數(shù)據(jù)結(jié)構(gòu)以移除所述指示的組件;以及在與所述移除的組件相關(guān)聯(lián)的配置數(shù)據(jù)結(jié)構(gòu)中的虛擬樹數(shù)據(jù)結(jié) 構(gòu)的樹分支中,更新相關(guān)聯(lián)的組件的配置空間,以將所述相關(guān)聯(lián)的 組件從對(duì)應(yīng)于所述移除的組件的虛擬平面中移除。
10. 根據(jù)權(quán)利要求9所述的方法,其中如果所述移除的組件是端 點(diǎn),則將所述端點(diǎn)返回給組件池,以供與其先前所關(guān)聯(lián)的根聯(lián)合體 不同的根聯(lián)合體使用。
11. 根據(jù)權(quán)利要求1所述的方法,其中所述數(shù)據(jù)處理系統(tǒng)是刀片 服務(wù)器,以及所述主機(jī)設(shè)備是所述刀片服務(wù)器中的刀片。
12. 根據(jù)權(quán)利要求1所述的方法,其中所述通信架構(gòu)是多根感知 (MRA)夕卜圍組件互連Express ( PCIe )架構(gòu)。
13. —種數(shù)據(jù)處理系統(tǒng),包括 多個(gè)根聯(lián)合體;通過通信架構(gòu)耦合到所述多個(gè)根聯(lián)合體的至少 一 個(gè)輸入/輸出組 件;以及耦合到所述通信架構(gòu)的通信架構(gòu)配置管理器,其中所述通信架構(gòu) 配置管理器接收指示新組件已被添加到所述數(shù)據(jù)處理系統(tǒng)的事件通知; 執(zhí)行 一 個(gè)或多個(gè)配置空間操作以確定所述新組件的特征; 基于所述新組件的一個(gè)或多個(gè)特征,更新與通信架構(gòu)配置管理器 相關(guān)聯(lián)的配置數(shù)據(jù)結(jié)構(gòu);以及基于與所述通信架構(gòu)配置管理器相關(guān)聯(lián)的更新的配置數(shù)據(jù)結(jié)構(gòu),使用所述新組件處理所述通信架構(gòu)中的輸入/輸出操作。
全文摘要
提供了一種用于在運(yùn)行的通信架構(gòu)(例如PCIe架構(gòu))中熱插/拔新組件的系統(tǒng)和方法。利用該系統(tǒng)和方法,檢測(cè)架構(gòu)中新組件的添加,并發(fā)送事件給多根架構(gòu)配置管理器。多根架構(gòu)配置管理器收集關(guān)于新組件的信息,并在其配置數(shù)據(jù)結(jié)構(gòu)中更新其I/O組件樹結(jié)構(gòu)以包括新組件。然后,可以經(jīng)由更新的配置數(shù)據(jù)結(jié)構(gòu)使用新組建。當(dāng)組件將被移除時(shí),多根架構(gòu)配置管理器接收指示組件將被移除的事件,確定樹結(jié)構(gòu)的哪些分支受到移除的影響,并相應(yīng)地更新其配置數(shù)據(jù)結(jié)構(gòu),以將該組件及其相關(guān)聯(lián)的組件從移除的組件的虛擬平面內(nèi)移除。
文檔編號(hào)G06F13/38GK101206629SQ200710169928
公開日2008年6月25日 申請(qǐng)日期2007年11月8日 優(yōu)先權(quán)日2006年12月19日
發(fā)明者C·A·薩爾茲伯格, D·M·弗賴穆特, J·A·瓦爾加斯, R·J·雷西奧, S·M·瑟伯 申請(qǐng)人:國際商業(yè)機(jī)器公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
六安市| 洛阳市| 肃北| 永城市| 余干县| 孝昌县| 尼木县| 万荣县| 德格县| 湟中县| 丰台区| 赤壁市| 泸州市| 保德县| 乡城县| 新邵县| 公安县| 象州县| 洪湖市| 扎兰屯市| 卢龙县| 临沧市| 炎陵县| 秦皇岛市| 峨山| 承德市| 莱西市| 上饶市| 呼图壁县| 册亨县| 柯坪县| 哈密市| 通山县| 金湖县| 延长县| 治多县| 枣阳市| 修水县| 蒲江县| 景德镇市| 乐陵市|