通用pci express端口的制作方法
【技術(shù)領(lǐng)域】
[0001]本公開一般涉及計(jì)算領(lǐng)域,并且更具體地涉及用于在計(jì)算機(jī)系統(tǒng)中提供通用PCIExpress(PCIe)端口的方法和系統(tǒng)。
【背景技術(shù)】
[0002]計(jì)算機(jī)服務(wù)器通常包括諸如中央處理單元(CPU)、存儲(chǔ)器、和輸入/輸出(I/O)設(shè)備之類的組件。隨著針對計(jì)算的需求增加,計(jì)算機(jī)服務(wù)器中的組件的數(shù)量也在增加。為互連這些組件,刀片服務(wù)器底架能夠提供機(jī)架單元,在該機(jī)架單元中,組件卡可通過多個(gè)插槽被插入互連結(jié)構(gòu)中。在售的刀片服務(wù)器底架可在單個(gè)底架中提供4、8、12、16或更多個(gè)插槽。
[0003]通過刀片服務(wù)器底架中提供的互連結(jié)構(gòu),組件卡能夠與刀片服務(wù)器底架中的其他組件卡或者(例如,當(dāng)?shù)镀?wù)器底架提供網(wǎng)絡(luò)連通性時(shí))通過網(wǎng)絡(luò)與其他系統(tǒng)通信?;ミB結(jié)構(gòu)的功能通常由專用硬件提供(出于性能原因),例如互連結(jié)構(gòu)可被實(shí)現(xiàn)為專用集成電路(ASIC)。取決于所選取的刀片服務(wù)器底架的配置,互連結(jié)構(gòu)將具有各自被配置為僅接收特定類型的組件卡(例如,具有一個(gè)或多個(gè)CPU的主機(jī)、具有1設(shè)備的目標(biāo)設(shè)備、網(wǎng)絡(luò)接口控制器、或者硬件驅(qū)動(dòng)(或者類似的存儲(chǔ)設(shè)備))的插槽。
[0004]因此,互連結(jié)構(gòu)中將底架的組件卡互連的專用硬件對服務(wù)器組件能夠在數(shù)據(jù)中心中進(jìn)行配置的方式提出了一些限制。例如,添加不可與現(xiàn)有底架中的空插槽協(xié)作的組件提起了對于新底架的昂貴購買。在另一實(shí)例中,底架中的一些插槽可能被空置,因而浪費(fèi)了底架的有價(jià)值的物理空間和資源。另外,如果不同的組件不能夠被容易地分解,針對各種類型的組件卡的基礎(chǔ)設(shè)施以及組件卡自身不能夠被獨(dú)立地調(diào)整或更新。
【附圖說明】
[0005]為提供對本公開及其特征和優(yōu)點(diǎn)的更全面理解,結(jié)合附圖參考以下描述,其中類似的標(biāo)號表;^類似的部分,其中:
[0006]圖1根據(jù)本公開的一些實(shí)施例示出了刀片服務(wù)器底架中的互連結(jié)構(gòu)的示意性框圖;
[0007]圖2根據(jù)本公開的一些實(shí)施例示出了互連結(jié)構(gòu)的示意性功能圖示;
[0008]圖3根據(jù)本公開的一些實(shí)施例示出了通過網(wǎng)絡(luò)通信地連接的兩個(gè)互連結(jié)構(gòu)的示意性框圖;
[0009]圖4根據(jù)本公開的一些實(shí)施例示出了示意性PCIe以太網(wǎng)分組;以及
[0010]圖5根據(jù)本公開的實(shí)施例示出了用于重傳PCIe以太網(wǎng)分組的場景。
【具體實(shí)施方式】
[0011]挺述
[0012]這里公開了用于提供通用PCIe端口的方法和系統(tǒng)。相同的端口被配置為對稱地將PCIe連接接受為主機(jī)(例如,作為上游端口或虛擬交換機(jī)端口的PCIe組件)或者端點(diǎn)(例如,具有下游連接的PCIe組件)。如果PCIe設(shè)備是主機(jī)或者端點(diǎn),則PCIe端口分別被連接到主機(jī)接口或者根聯(lián)合體接口。可為主機(jī)提供將主機(jī)與相應(yīng)端點(diǎn)(或端點(diǎn)設(shè)備)相關(guān)聯(lián)的虛擬拓?fù)?。虛擬拓?fù)渲械南鄳?yīng)端點(diǎn)的虛擬地址與相應(yīng)端點(diǎn)的本地地址之間的映射被提供。
[0013]另外,這里公開了用于提供通用PCIe端口的方法和系統(tǒng)。相同的端口被配置為對稱地將PCIe連接接受為主機(jī)或者端點(diǎn)。朝向端點(diǎn)的下游業(yè)務(wù)被截獲并且通過使用映射將下游業(yè)務(wù)中的虛擬地址轉(zhuǎn)換為本地地址。下游業(yè)務(wù)使用本地地址而不是虛擬地址被轉(zhuǎn)發(fā)到端點(diǎn)。針對對于多個(gè)主機(jī)共享相同本地地址的端點(diǎn),反向查找可被提供以在轉(zhuǎn)發(fā)上游業(yè)務(wù)時(shí)確定本地地址對應(yīng)于這些主機(jī)中的哪個(gè)主機(jī)。
[0014]作為一個(gè)實(shí)施例,提供了用于允許遠(yuǎn)程PCIe設(shè)備透明地與本地主機(jī)(例如,上游端口或虛擬交換機(jī)端口)相關(guān)聯(lián)的PCIe以太網(wǎng)(PCIe over Etheret)。除了提供PCIe虛擬化機(jī)制外,PCIe以太網(wǎng)實(shí)施例還提供了經(jīng)采取以確保傳輸機(jī)制仍然滿足PCIe express標(biāo)準(zhǔn)中的傳輸層分組所需的要求的非平凡措施。
[0015]示例實(shí)施例
[0016]一種普遍的互連結(jié)構(gòu)架構(gòu)包括外設(shè)組件互連快速(Peripheral ComponentInterconnect Express,PCIe?)架構(gòu)(例如,在2011年11月29日公布的PCIe?協(xié)議版本4.0(此后稱為PCIe?規(guī)范))。注意,本公開可應(yīng)用于任何版本的PCIe規(guī)范。PCIe(由PC1-SIG(PCI特殊興趣小組)維護(hù)和研發(fā)的標(biāo)準(zhǔn))的首要目標(biāo)是使得來自不同供應(yīng)商的組件和設(shè)備能夠在跨多個(gè)市場區(qū)段(客戶端(臺(tái)式和移動(dòng))、服務(wù)器(標(biāo)準(zhǔn)和企業(yè)級)、以及嵌入式和通信設(shè)備)的開放架構(gòu)中相互操作。PCIe是針對各種各樣的計(jì)算和通信平臺(tái)定義的高性能通用I/O互連。PCIe的近期版本利用了點(diǎn)對點(diǎn)互連、基于交換的技術(shù)、以及分組化協(xié)議的進(jìn)步來達(dá)到性能和功能的新層次。PCIe是用于服務(wù)器處理器(包括x86和ARM架構(gòu))的首要連通性選項(xiàng)。
[0017]為提供更多的靈活性,物理PCIe端口已經(jīng)能夠被實(shí)現(xiàn)為在PCIe接口處被虛擬化,這使得PCIe端口能夠通用且對稱地接受主機(jī)和端點(diǎn)(或者端點(diǎn)設(shè)備)。通用PCIe端口在服務(wù)器配置中提供了更多的靈活性,允許服務(wù)器設(shè)計(jì)者通過將服務(wù)器的主機(jī)(例如,被配置為上游端口或虛擬交換機(jī)端口的計(jì)算機(jī)處理單元和存儲(chǔ)器)與端點(diǎn)(例如,諸如存儲(chǔ)設(shè)備和網(wǎng)絡(luò)接口控制器之類的輸入/輸出(I/O)設(shè)備、端點(diǎn)設(shè)備)相分離來分解數(shù)據(jù)中心中的服務(wù)器組件。分解允許服務(wù)器設(shè)計(jì)將端點(diǎn)與主機(jī)解耦合,允許這些子系統(tǒng)被獨(dú)立地調(diào)整并被獨(dú)立地刷新至新的技術(shù)步驟。另外,在PCIe接口處分解服務(wù)器允許被解耦合的子系統(tǒng)在基于長期標(biāo)準(zhǔn)的總線間進(jìn)行演進(jìn)。例如,具有插入式刀片(組件卡)的多服務(wù)器底架可受益于允許服務(wù)器刀片(主機(jī))或I/O子系統(tǒng)刀片(端點(diǎn))被插入到任何可用插槽中的一個(gè)或多個(gè)通用PCIe端口。因此,物理PCIe連接的虛擬化允許獨(dú)立的服務(wù)器和I/O在相同的物理封裝(envelop)內(nèi)進(jìn)行調(diào)整。
[0018]例如,刀片底架插槽可被配置為接受服務(wù)器刀片、基于PCIe的閃存刀片、包括PCIe控制器的傳統(tǒng)存儲(chǔ)介質(zhì)刀片、用于浮點(diǎn)加速的GPU、加密加速器、以及其他設(shè)備,這允許顧客使用共同的基礎(chǔ)設(shè)施在不同的時(shí)候在不同方向擴(kuò)展服務(wù)器能力。這具有允許顧客獨(dú)立于10子系統(tǒng)聯(lián)合體(端點(diǎn))地升級和調(diào)整GPU和存儲(chǔ)器聯(lián)合體(主機(jī))的優(yōu)點(diǎn)。當(dāng)與允許設(shè)備或功能被分配給此服務(wù)器的本地地址空間中的個(gè)體服務(wù)器的虛擬化技術(shù)相結(jié)合時(shí),該優(yōu)點(diǎn)被成倍放大,因?yàn)樗沟?0設(shè)備能夠跨越多個(gè)服務(wù)器(包括舊有操作系統(tǒng))被共享和調(diào)整,因?yàn)樗揽坑跇?biāo)準(zhǔn)設(shè)備列舉(enumerat1n)、資源映射、和命名機(jī)制。另外,PCIe結(jié)構(gòu)或交換機(jī)可被配置為支持設(shè)備虛擬化,單個(gè)I/O設(shè)備可在多個(gè)獨(dú)立服務(wù)器間被共享。
[0019]在本公開的上下文內(nèi),主機(jī)可包括一個(gè)或多個(gè)處理器(通常是服務(wù)器系統(tǒng)的“CPU”)以及可選地包括支持一個(gè)或多個(gè)處理器的一個(gè)或多個(gè)存儲(chǔ)器元件。主機(jī)可被配置為上游端口或虛擬交換機(jī)端口,端點(diǎn)可與該上游端口或虛擬交換機(jī)端口進(jìn)行通信。I/o或端點(diǎn)(或者端點(diǎn)設(shè)備)可包括以下各項(xiàng)中的一項(xiàng)或多項(xiàng):網(wǎng)絡(luò)接口控制器(NIC)、插入卡、音頻處理器、網(wǎng)絡(luò)處理器、圖形卡、硬驅(qū)、存儲(chǔ)設(shè)備、CD/DVD/R0M、監(jiān)視器、打印機(jī)、鼠標(biāo)、鍵盤、路由器、便攜式存儲(chǔ)設(shè)備、火線設(shè)備、通用串行總線(USB)設(shè)備、掃描器、以及其他輸入/輸出設(shè)備。一般在PCIe用語中,這樣的I/O或端點(diǎn)設(shè)備被稱作端點(diǎn)。在不同的術(shù)語中,主機(jī)可以是“主設(shè)備(master)”并且端點(diǎn)可以是“從設(shè)備(slave)”。在一些情形中,設(shè)備可包括PCIe至PCI/PC1-X橋接以支持舊有或其他版本的PCI設(shè)備。
[0020]提供通用PCIe端口不是普通的任務(wù)。在創(chuàng)建統(tǒng)一通用端口時(shí)存在設(shè)備虛擬化、地址、和命名問題,以及其他難題。通用PCIe端點(diǎn)是到PCIe結(jié)構(gòu)或交換機(jī)的連接,其支持到相同物理端口的主機(jī)CPU連通性以及I/O設(shè)備端點(diǎn)連通性。通用PCIe端口邏輯包含PCIe MAC(介質(zhì)訪問控制器,或者一般作為端口管理器),該P(yáng)CIe MAC具有連接到上游(或者PCIe根聯(lián)合體端口)或者下游(或者PCIe設(shè)備或交換機(jī)端口)的能力。除了PCIe MAC之外,具有虛擬化PCI e地址空間、PCI e設(shè)備標(biāo)識(shí)、PCI e消息傳送、和PCI e終端的邏輯也存在。此硬件設(shè)備虛擬化是關(guān)鍵組件,因?yàn)樗试S不同設(shè)備或功能被分配到相關(guān)聯(lián)端口的地址空間和名稱空間內(nèi)的不同服務(wù)器主機(jī)。
[0021]為提供通用PCIe端口,許多特性在服務(wù)器底架中的改進(jìn)互連結(jié)構(gòu)中被提供,其中互連結(jié)構(gòu)由將一組設(shè)備互連的點(diǎn)對點(diǎn)鏈路組成。一般而言,互連結(jié)構(gòu)包括用于處理設(shè)備之間的業(yè)務(wù)以及用于提供通信路由能力(即,交換機(jī)、總線、信號線等等)以轉(zhuǎn)發(fā)這些業(yè)務(wù)的專用硬件和電路。例如,互連結(jié)構(gòu)可被至少部分地實(shí)現(xiàn)在專用集成電路(ASIC)上,并且通用PCIe端口可包括PCIe組件/卡/設(shè)備能夠連接到的輸入和輸出引腳/引線并且在PCIe組件/卡/設(shè)備與互連結(jié)構(gòu)之間提供到互連結(jié)構(gòu)的信號連通性。為進(jìn)行說明,圖1根據(jù)本公開的一些實(shí)施例示出了刀片服務(wù)器底架中的互連結(jié)構(gòu)100的示意性框圖。
[0022]一個(gè)或多個(gè)主機(jī)可通過PCIe通道102連接到主機(jī)接口 105,并且每個(gè)主機(jī)可利用一個(gè)或多個(gè)虛擬拓?fù)?04(被示出為PCIe層次結(jié)構(gòu)(或者被稱為“PCIe樹”))被虛擬化。虛擬拓?fù)鋵⒅鳈C(jī)與一個(gè)或多個(gè)端點(diǎn)相關(guān)聯(lián),表明服務(wù)器系統(tǒng)中一個(gè)或多個(gè)主機(jī)與一個(gè)或多個(gè)端點(diǎn)間的關(guān)系。連接到互連結(jié)構(gòu)的其他設(shè)備以及互連結(jié)構(gòu)中的設(shè)備可通過主機(jī)接口尋址并與主機(jī)進(jìn)行通信。一個(gè)或多個(gè)端點(diǎn)設(shè)備可通過PCIe通道108連接到根聯(lián)合體接口 106。使用端點(diǎn)的一個(gè)或多個(gè)本地地址,連接到互連結(jié)構(gòu)的其他連接/設(shè)備以及互連結(jié)構(gòu)中的設(shè)備可通過根聯(lián)合體接口尋址并與主機(jī)進(jìn)行通信。
[0023]一般地,互連結(jié)構(gòu)包括一個(gè)或多個(gè)處理器110和本地存儲(chǔ)器112(包括一個(gè)或多個(gè)存儲(chǔ)器元件)以處理設(shè)備間的業(yè)務(wù)。一個(gè)或多個(gè)處理器可包括任何處理元件,例如微處理器、主機(jī)處理器、嵌入式處理器、協(xié)處理器、或其他處理器。本地存儲(chǔ)器112可包括任何適合的一個(gè)或多個(gè)計(jì)算機(jī)可讀非暫態(tài)存儲(chǔ)器元件。一個(gè)或多個(gè)處理器110和本地存儲(chǔ)器112扮演若干重要角色。
[0024]首先,互連結(jié)構(gòu)中的一個(gè)或多個(gè)處理器可用作配置代理和/或端口處理器。一個(gè)或多個(gè)處理器可確定連接到通用PCIe端口的物理PCIe組件是要被配置為主機(jī)還是端點(diǎn)。PCIe組件卡不是帶有主機(jī)就是帶有端點(diǎn)(可能具有多個(gè)主機(jī)和端點(diǎn)),因此一些互連結(jié)構(gòu)可具有檢測/確定PCIe組件是要被配置為主機(jī)(例如,上游設(shè)備)還是端點(diǎn)(下游設(shè)備)的能力。在一些實(shí)例中,如果互連結(jié)構(gòu)不能夠自己確定PCIe組件卡是帶有主機(jī)還是帶有端