專利名稱:控制器集成的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種用于數(shù)據(jù)處理系統(tǒng)的網(wǎng)絡(luò)接口的新結(jié)構(gòu)和一種用于在數(shù)據(jù)處理 系統(tǒng)的處理器之間交換網(wǎng)絡(luò)數(shù)據(jù)的方法,特別是一種刀片式服務(wù)器。還公開(kāi)了一種PCIe設(shè) 備的新結(jié)構(gòu)。
背景技術(shù):
包括了一個(gè)或更多個(gè)處理器和存儲(chǔ)器的傳統(tǒng)數(shù)據(jù)處理系統(tǒng)借助外圍網(wǎng)絡(luò)接口設(shè) 備連接到網(wǎng)絡(luò)上。網(wǎng)絡(luò)接口設(shè)備使數(shù)據(jù)處理系統(tǒng)能夠通過(guò)網(wǎng)絡(luò)接收并發(fā)送數(shù)據(jù)。數(shù)據(jù)處理 系統(tǒng)和網(wǎng)絡(luò)接口設(shè)備通過(guò)諸如PCIe這樣的外圍數(shù)據(jù)總線通信。以太網(wǎng)網(wǎng)絡(luò)接口設(shè)備包括控制器,該控制器典型地形成通過(guò)網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)分 組,控制通過(guò)該設(shè)備的數(shù)據(jù)流,并在數(shù)據(jù)處理系統(tǒng)和網(wǎng)絡(luò)接口設(shè)備之間協(xié)調(diào)數(shù)據(jù)總線上數(shù) 據(jù)的傳輸。網(wǎng)絡(luò)上數(shù)據(jù)的物理傳輸由網(wǎng)絡(luò)接口設(shè)備的所謂“PHY”處理,“PHY”在以太網(wǎng)規(guī) 范的物理層級(jí)上進(jìn)行網(wǎng)絡(luò)上網(wǎng)絡(luò)數(shù)據(jù)的信令(傳輸)(signalling)。在典型的數(shù)據(jù)處理系統(tǒng)中,網(wǎng)絡(luò)上數(shù)據(jù)的發(fā)送或接收涉及多條數(shù)據(jù)總線。通常在 處理器和存儲(chǔ)器之間、本地存儲(chǔ)設(shè)備和諸如網(wǎng)絡(luò)接口設(shè)備這樣的外圍設(shè)備之間有不同的總 線。在每條總線上的數(shù)據(jù)傳輸具有關(guān)聯(lián)的開(kāi)銷,并且在網(wǎng)絡(luò)上數(shù)據(jù)發(fā)送或接收期間,除了 PHY,各種數(shù)據(jù)總線電路通常是在引起的延遲和功率需求方面最昂貴的組件。并且,在網(wǎng)絡(luò)結(jié)構(gòu)上數(shù)據(jù)分組的傳輸速率本身受到了網(wǎng)絡(luò)帶寬的限制,這限制了 網(wǎng)絡(luò)上的主機(jī)之間的最大數(shù)據(jù)速率。如果將網(wǎng)絡(luò)結(jié)構(gòu)用于連接刀片式服務(wù)器的刀片,那么 這可能尤其具有限制性。傳統(tǒng)的網(wǎng)絡(luò)接口設(shè)備被提供為通過(guò)諸如PCIe這樣的外圍總線與數(shù)據(jù)處理系統(tǒng)相 連接的外圍設(shè)備。網(wǎng)絡(luò)接口設(shè)備可以是獨(dú)立的外圍卡或者它可以由數(shù)據(jù)處理系統(tǒng)的主板來(lái) 支承,但該設(shè)備由數(shù)據(jù)處理系統(tǒng)通過(guò)適當(dāng)?shù)目偩€訪問(wèn)。這種配置如圖1所示,其中數(shù)據(jù)處理 系統(tǒng)101的CPU 103通過(guò)PCIe總線106訪問(wèn)網(wǎng)絡(luò)接口設(shè)備(NIC) 102。在CPU和PCIe總線 之間的接口由芯片集105提供,通常其借助于存儲(chǔ)器控制器提供對(duì)存儲(chǔ)器的直接存儲(chǔ)器訪 問(wèn)(DMA)。網(wǎng)絡(luò)接口設(shè)備102包括控制器107和PHY108,控制器主要處理在網(wǎng)絡(luò)109上使 用的網(wǎng)絡(luò)協(xié)議的鏈路層上的數(shù)據(jù)流,PHY根據(jù)該網(wǎng)絡(luò)協(xié)議的物理層需求來(lái)處理網(wǎng)絡(luò)上的網(wǎng) 絡(luò)數(shù)據(jù)分組的發(fā)送和接收。由于在處理器103上執(zhí)行的應(yīng)用的接收和發(fā)送隊(duì)列位于存儲(chǔ)器104中,網(wǎng)絡(luò)接口 設(shè)備為了通過(guò)網(wǎng)絡(luò)發(fā)送和接收數(shù)據(jù),必須直接讀寫(xiě)該存儲(chǔ)器。每個(gè)發(fā)送操作通常需要兩次 或三次存儲(chǔ)器訪問(wèn)來(lái)實(shí)現(xiàn),并且需要一次或兩次存儲(chǔ)器訪問(wèn)來(lái)實(shí)現(xiàn)每個(gè)接收操作。通常網(wǎng) 絡(luò)接口設(shè)備借助于直接存儲(chǔ)器訪問(wèn)(DMA)來(lái)讀寫(xiě)存儲(chǔ)器,但還必須通過(guò)外圍數(shù)據(jù)總線執(zhí)行 所有的這種訪問(wèn)。每個(gè)發(fā)送或接收操作的功耗是不可忽視的,因?yàn)槊看卧L問(wèn)必須經(jīng)過(guò)芯片 集105處的串行/去串行(serialisation/deserialisation,SERDES)電路(它為處理器 /存儲(chǔ)器控制器提供到總線的接口)以及在網(wǎng)絡(luò)接口設(shè)備處的SERDES電路(它為NIC提供 到總線的接口)。對(duì)于高速網(wǎng)絡(luò)接口設(shè)備來(lái)說(shuō),每秒可執(zhí)行上千次發(fā)送和/或接收操作,這種結(jié)構(gòu)的總功耗將變得非常大。類似地,通過(guò)外圍數(shù)據(jù)總線重復(fù)的存儲(chǔ)器訪問(wèn)給通過(guò)網(wǎng)絡(luò) 接口設(shè)備執(zhí)行的發(fā)送和接收操作帶來(lái)了明顯的延遲。為了特定的應(yīng)用已經(jīng)開(kāi)發(fā)了包括處理核和網(wǎng)絡(luò)接口設(shè)備的片上系統(tǒng) (System-on-a-Chip,SoC)設(shè)備,從而將網(wǎng)絡(luò)接口設(shè)備和處理器所能訪問(wèn)的存儲(chǔ)器設(shè)置得更 近。例如,SoC設(shè)備的STMicroelectronics STM32W系列提供了 32位的ARM處理器和集成 的IEEE 802. 15. 4無(wú)線電裝置。然而,將包括PHY的整個(gè)網(wǎng)絡(luò)接口集成到處理器中極大地 增加了處理器所需的功率以及熱量,必須在處理器處應(yīng)對(duì)該熱量。并且,在PHY中處理的信 號(hào)給處理器引入了大量的附加電干擾,使得SoC結(jié)構(gòu)不適用于高速CPU。已經(jīng)提出了允許數(shù)據(jù)處理系統(tǒng)的組件(例如CPU和網(wǎng)絡(luò)接口設(shè)備)互相通信的 改進(jìn)結(jié)構(gòu),但是沒(méi)有提供一種為具有到主機(jī)存儲(chǔ)器的低延遲數(shù)據(jù)通道的網(wǎng)絡(luò)接口提供低功 率的結(jié)構(gòu)。之前所作出的用于改善數(shù)據(jù)處理系統(tǒng)內(nèi)部通信的結(jié)構(gòu)的嘗試包括在MMiZZ www, transputer. net/tn/06/tn06. html 所公開(kāi)的、由 INMOS Ltd 于 1988 年 1 月在 INMOS Technical Note 6, "IMS T800Architecture” 中引入的 IMST800 晶片機(jī)(transputer)。 其他的這種結(jié)構(gòu)描述在以下文獻(xiàn)中Finn,Gregory G. "An Integration of Network Communication with WorkstationArchitecture,,,ACM Computer Communication Review, 1991 年 10 月;禾口 Hayter,Μ.,McAuley, D.,"The Desk Area Network,,,ACM Transactions onOperating Systems, 14-21 頁(yè),1991 年 10 月。在申請(qǐng)?zhí)枮?0/548,121和12/105,412的美國(guó)專利申請(qǐng)中描述了之前提議的、描 述以太網(wǎng)協(xié)議封裝的方案。因此,需要一種具有低功率需求并且具有到主機(jī)存儲(chǔ)器的低延遲數(shù)據(jù)通道的改進(jìn) 網(wǎng)絡(luò)接口設(shè)備結(jié)構(gòu)。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的第一方面,提供了一種包括中央處理單元和分離的網(wǎng)絡(luò)接口功能組 的數(shù)據(jù)處理系統(tǒng),所述分離的網(wǎng)絡(luò)接口功能組包括與中央處理單元設(shè)置在一起的第一子 單元,被配置為通過(guò)為每個(gè)網(wǎng)絡(luò)數(shù)據(jù)分組生成數(shù)據(jù)鏈路層信息來(lái)至少部分地形成發(fā)送給網(wǎng) 絡(luò)端點(diǎn)的一系列網(wǎng)絡(luò)數(shù)據(jù)分組;以及在中央處理單元外部并通過(guò)互連(interconnect)與 該中央處理單元相耦合的第二子單元,該第二子單元被配置為通過(guò)網(wǎng)絡(luò)物理地傳送所述一 系列網(wǎng)絡(luò)數(shù)據(jù)分組。優(yōu)選地,第一子單元被配置來(lái)根據(jù)在互連上使用的數(shù)據(jù)協(xié)議,將所述系列中的每 個(gè)網(wǎng)絡(luò)數(shù)據(jù)分組封裝在一個(gè)或更多個(gè)互連數(shù)據(jù)分組。優(yōu)選地,第一子單元被配置為將互連 數(shù)據(jù)分組發(fā)送給第二子單元,以使第二子單元通過(guò)網(wǎng)絡(luò)傳送各個(gè)網(wǎng)絡(luò)數(shù)據(jù)分組。優(yōu)選地,第一子單元被配置為部分地形成所述一系列網(wǎng)絡(luò)數(shù)據(jù)分組,第二子單元 被配置為在網(wǎng)絡(luò)上使用的網(wǎng)絡(luò)協(xié)議的數(shù)據(jù)鏈路層完成每一個(gè)所述一系列網(wǎng)絡(luò)數(shù)據(jù)分組的 形成。相應(yīng)地,第二子單元被配置為通過(guò)為每個(gè)網(wǎng)絡(luò)數(shù)據(jù)分組計(jì)算一個(gè)或更多個(gè)校驗(yàn)和來(lái) 在數(shù)據(jù)鏈路層完成每一個(gè)所述一系列網(wǎng)絡(luò)數(shù)據(jù)分組的形成。優(yōu)選地,第二子單元被配置為根據(jù)在網(wǎng)絡(luò)上使用的網(wǎng)絡(luò)協(xié)議的物理層需求,通過(guò) 網(wǎng)絡(luò)物理地傳送一系列完成的數(shù)據(jù)分組。優(yōu)選地,所述數(shù)據(jù)處理系統(tǒng)進(jìn)一步包括與中央處理單元耦合的存儲(chǔ)器和/或高速緩存以及中央處理單元中的存儲(chǔ)器管理單元,該存儲(chǔ)器管理單元被配置為為中央處理單元 和第一子單元提供到存儲(chǔ)器和/或高速緩存的訪問(wèn)。優(yōu)選地,存儲(chǔ)器和/高速緩存被配置 為保存包括通過(guò)網(wǎng)絡(luò)發(fā)送的數(shù)據(jù)的發(fā)送隊(duì)列,并且第一子單元被配置為借助于對(duì)存儲(chǔ)器管 理單元的讀請(qǐng)求來(lái)訪問(wèn)發(fā)送隊(duì)列,并使用通過(guò)網(wǎng)絡(luò)發(fā)送的數(shù)據(jù)來(lái)形成所述一系列網(wǎng)絡(luò)數(shù)據(jù) 分組。優(yōu)選地,可操作第二子單元來(lái)通過(guò)網(wǎng)絡(luò)接收一系列網(wǎng)絡(luò)數(shù)據(jù)分組,第一子單元被 配置為在數(shù)據(jù)鏈路層至少部分地處理每個(gè)接收的網(wǎng)絡(luò)數(shù)據(jù)分組以便提取攜帶在該網(wǎng)絡(luò)數(shù) 據(jù)分組中的數(shù)據(jù)。優(yōu)選地,第一子單元被配置為在存儲(chǔ)器中存儲(chǔ)轉(zhuǎn)發(fā)表,該轉(zhuǎn)發(fā)表包括了這樣的信 息以使第一子單元能夠?yàn)槊總€(gè)接收的網(wǎng)絡(luò)數(shù)據(jù)分組,依賴于接收的網(wǎng)絡(luò)數(shù)據(jù)分組的內(nèi)容, 將提取的數(shù)據(jù)路由給在存儲(chǔ)器和/或其他網(wǎng)絡(luò)設(shè)備中的一個(gè)或更多個(gè)接收隊(duì)列。相應(yīng)地,第二子單元被配置為根據(jù)在接近第二子單元的互連的數(shù)據(jù)鏈路上使用的 數(shù)據(jù)協(xié)議,將每個(gè)接收的網(wǎng)絡(luò)數(shù)據(jù)分組封裝在一個(gè)或更多個(gè)互連數(shù)據(jù)分組中。優(yōu)選地,第二子單元被配置為將互連數(shù)據(jù)分組發(fā)送給第一子單元,以使第一子單 元在數(shù)據(jù)鏈路層至少部分地處理每個(gè)接收的網(wǎng)絡(luò)數(shù)據(jù)分組并提取在接收的網(wǎng)絡(luò)數(shù)據(jù)分組 中攜帶的數(shù)據(jù)。根據(jù)本發(fā)明的第二個(gè)方面,提供了一種數(shù)據(jù)處理系統(tǒng),包括包括網(wǎng)絡(luò)接口控制 器的中央處理單元,該網(wǎng)絡(luò)接口控制器被配置為通過(guò)根據(jù)網(wǎng)絡(luò)協(xié)議在數(shù)據(jù)鏈路層至少部分 地將通過(guò)網(wǎng)絡(luò)發(fā)送的數(shù)據(jù)形成幀(framing)來(lái)形成中間數(shù)據(jù)單元,每個(gè)中間數(shù)據(jù)單元包括 用于發(fā)送的數(shù)據(jù)的目的地網(wǎng)絡(luò)地址;與中央處理單元耦合的存儲(chǔ)器;與網(wǎng)絡(luò)連接的媒體接 口,被配置為通過(guò)網(wǎng)絡(luò)發(fā)送完全形成的數(shù)據(jù)分組;以及在中央處理單元和媒體接口之間延 伸的第一互連,該互連由一條或多條數(shù)據(jù)鏈路形成;其中所述網(wǎng)絡(luò)接口控制器被配置為將 網(wǎng)絡(luò)協(xié)議的中間數(shù)據(jù)單元封裝在通過(guò)第一互連發(fā)送的互連數(shù)據(jù)分組中,并且所述媒體接口 被配置為從通過(guò)第一互連接收的互連數(shù)據(jù)分組中提取中間數(shù)據(jù)單元,并在物理層處理該中 間數(shù)據(jù)單元,以便根據(jù)網(wǎng)絡(luò)協(xié)議完成數(shù)據(jù)分組的形成。優(yōu)選地,網(wǎng)絡(luò)接口控制器被配置為根據(jù)在接近中央處理單元的第一互連的數(shù)據(jù)鏈 路上使用的數(shù)據(jù)協(xié)議,將每個(gè)中間數(shù)據(jù)單元封裝在一個(gè)或更多個(gè)互連數(shù)據(jù)分組中。優(yōu)選地, 網(wǎng)絡(luò)接口控制器被配置為促使將一個(gè)或更多個(gè)互連數(shù)據(jù)分組發(fā)送給媒體接口,以便使媒體 接口通過(guò)網(wǎng)絡(luò)發(fā)送完全形成的網(wǎng)絡(luò)數(shù)據(jù)分組。優(yōu)選地,網(wǎng)絡(luò)接口控制器被配置為將封裝頭部寫(xiě)到每個(gè)互連數(shù)據(jù)分組中,該封裝 頭部包括這樣的信息以使媒體接口用互連數(shù)據(jù)分組來(lái)重組各個(gè)中間數(shù)據(jù)單元。相應(yīng)地,第一互連包括兩條數(shù)據(jù)鏈路在中央處理單元和轉(zhuǎn)換單元之間延伸的第 一數(shù)據(jù)鏈路,以及在轉(zhuǎn)換單元和媒體接口之間延伸的第二數(shù)據(jù)鏈路。轉(zhuǎn)換單元被配置為將 根據(jù)在第一數(shù)據(jù)鏈路上使用的數(shù)據(jù)協(xié)議而形成幀(frame)的互連數(shù)據(jù)分組轉(zhuǎn)換為根據(jù)在 第二數(shù)據(jù)鏈路上使用的數(shù)據(jù)協(xié)議形成幀的互連數(shù)據(jù)分組,反之亦然。優(yōu)選地,轉(zhuǎn)換單元被配置為通過(guò)以下方式來(lái)轉(zhuǎn)換互連數(shù)據(jù)分組移除在第一數(shù)據(jù) 鏈路上使用的數(shù)據(jù)協(xié)議的成幀數(shù)據(jù),并根據(jù)在第二數(shù)據(jù)鏈路上使用的數(shù)據(jù)協(xié)議來(lái)重新成幀 一個(gè)或更多個(gè)互連數(shù)據(jù)分組;或者,根據(jù)在第二數(shù)據(jù)鏈路上使用的數(shù)據(jù)協(xié)議,增加關(guān)于一個(gè) 或更多個(gè)互連數(shù)據(jù)分組的附加成幀層。優(yōu)選地,第一數(shù)據(jù)鏈路是CPU互連,第二數(shù)據(jù)鏈路是外部數(shù)據(jù)總線。優(yōu)選地,在外圍數(shù)據(jù)總線上支持媒體接口。CPU互連可以是HyperTransport 互連、QuickPath互連和PCIe互連的其中之一。優(yōu)選地外圍數(shù)據(jù)總線是PCIe。優(yōu)選地,中央處理單元進(jìn)一步包括存儲(chǔ)器管理單元,被配置為為中央處理單元和 網(wǎng)絡(luò)接口控制器提供到存儲(chǔ)器的訪問(wèn)。優(yōu)選地,如果目的地網(wǎng)絡(luò)地址屬于中央處理單元處支持的進(jìn)程,網(wǎng)絡(luò)接口控制器 被配置為直接將用于發(fā)送的數(shù)據(jù)寫(xiě)入存儲(chǔ)器中的接收隊(duì)列,而不將該數(shù)據(jù)封裝到一個(gè)或更 多個(gè)互連數(shù)據(jù)分組中,該接收隊(duì)列對(duì)應(yīng)于所述目的地網(wǎng)絡(luò)地址。優(yōu)選地,網(wǎng)絡(luò)接口控制器進(jìn) 一步被配置為不根據(jù)網(wǎng)絡(luò)協(xié)議在數(shù)據(jù)鏈路層將該數(shù)據(jù)形成幀。優(yōu)選地,存儲(chǔ)器被配置為保存一個(gè)或更多個(gè)包括了通過(guò)網(wǎng)絡(luò)發(fā)送的數(shù)據(jù)的發(fā)送隊(duì) 列,并且可操作網(wǎng)絡(luò)接口控制器來(lái)借助于對(duì)存儲(chǔ)器管理單元的讀請(qǐng)求,在所述用于發(fā)送的 數(shù)據(jù)的各發(fā)送隊(duì)列處訪問(wèn)該數(shù)據(jù)。優(yōu)選地,存儲(chǔ)器管理單元包括高速緩存,可操作來(lái)存儲(chǔ)保存在存儲(chǔ)器中的至少一 些數(shù)據(jù)的副本,該高速緩存可由中央處理單元和網(wǎng)絡(luò)接口控制器訪問(wèn)。優(yōu)選地,該高速緩存 被配置為存儲(chǔ)由中央處理單元在存儲(chǔ)器中最近訪問(wèn)的數(shù)據(jù)。優(yōu)選地,網(wǎng)絡(luò)接口控制器被配置為對(duì)于任何既能從存儲(chǔ)器中又能從高速緩存中獲 得的用于發(fā)送的數(shù)據(jù),從高速緩存中讀取用于發(fā)送的數(shù)據(jù)優(yōu)先于從存儲(chǔ)器中讀取該數(shù)據(jù)。 優(yōu)選地,網(wǎng)絡(luò)接口控制器被配置為對(duì)于不能從高速緩存獲得的用于發(fā)送的數(shù)據(jù),從存儲(chǔ)器 中讀取所述數(shù)據(jù),并且不將該數(shù)據(jù)寫(xiě)入高速緩存。優(yōu)選地,網(wǎng)絡(luò)接口控制器被配置為當(dāng)從高 速緩存讀取用于發(fā)送的數(shù)據(jù)時(shí),使高速緩存的相應(yīng)的線無(wú)效以便使其他在中央處理單元處 執(zhí)行的進(jìn)程改寫(xiě)那些線。優(yōu)選地,可操作媒體接口來(lái)通過(guò)網(wǎng)絡(luò)接收網(wǎng)絡(luò)數(shù)據(jù)分組,并將接收的網(wǎng)絡(luò)數(shù)據(jù)分 組封裝在通過(guò)第一互連發(fā)送的互連數(shù)據(jù)分組中;并且網(wǎng)絡(luò)接口控制器被配置為從互連數(shù)據(jù) 分組中提取接收的網(wǎng)絡(luò)數(shù)據(jù)分組,并根據(jù)網(wǎng)絡(luò)協(xié)議在數(shù)據(jù)鏈路層至少部分地處理每個(gè)接收 的網(wǎng)絡(luò)數(shù)據(jù)分組,以便提取攜帶在每個(gè)接收的網(wǎng)絡(luò)數(shù)據(jù)分組中的數(shù)據(jù)。優(yōu)選地,媒體接口被配置為根據(jù)在接近該媒體接口的第一互連的數(shù)據(jù)鏈路上使用 的數(shù)據(jù)協(xié)議,將每個(gè)接收的網(wǎng)絡(luò)數(shù)據(jù)分組封裝在一個(gè)或更多個(gè)互連數(shù)據(jù)分組中。優(yōu)選地,媒 體接口被配置為將互連數(shù)據(jù)分組發(fā)送給網(wǎng)絡(luò)接口控制器,以使網(wǎng)絡(luò)接口控制器在數(shù)據(jù)鏈路 層至少部分地處理每個(gè)接收的網(wǎng)絡(luò)數(shù)據(jù)分組并將攜帶在每個(gè)接收的網(wǎng)絡(luò)數(shù)據(jù)分組中的數(shù) 據(jù)寫(xiě)入在由包括在所接收網(wǎng)絡(luò)數(shù)據(jù)分組中的目的地網(wǎng)絡(luò)地址所識(shí)別的存儲(chǔ)器處的至少一 個(gè)接收隊(duì)列中。優(yōu)選地,網(wǎng)絡(luò)接口控制器被配置為當(dāng)將攜帶在所接收網(wǎng)絡(luò)數(shù)據(jù)分組中的數(shù)據(jù)寫(xiě)入 存儲(chǔ)器處的接收隊(duì)列時(shí),將該數(shù)據(jù)寫(xiě)入高速緩存。優(yōu)選地,網(wǎng)絡(luò)接口控制器被配置為在存儲(chǔ)器處存儲(chǔ)轉(zhuǎn)發(fā)表,該轉(zhuǎn)發(fā)表包括這樣的 信息以使網(wǎng)絡(luò)接口控制器依靠目的地網(wǎng)絡(luò)地址為每個(gè)接收的網(wǎng)絡(luò)數(shù)據(jù)分組在存儲(chǔ)器和/ 或其他網(wǎng)絡(luò)設(shè)備處選取一個(gè)或更多個(gè)將向其路由所接收網(wǎng)絡(luò)數(shù)據(jù)分組的數(shù)據(jù)的接收隊(duì)列。優(yōu)選地,媒體接口被配置為把封裝頭部寫(xiě)給每個(gè)互連數(shù)據(jù)分組,該封裝頭部包括 這樣的信息以使網(wǎng)絡(luò)接口控制器用互連數(shù)據(jù)分組重組各個(gè)網(wǎng)絡(luò)數(shù)據(jù)分組。優(yōu)選地,存儲(chǔ)器管理單元被配置為當(dāng)從中央處理單元或網(wǎng)絡(luò)接口控制器接收到訪 問(wèn)虛擬存儲(chǔ)器地址的請(qǐng)求時(shí),將該虛擬存儲(chǔ)器地址轉(zhuǎn)換為數(shù)據(jù)處理系統(tǒng)的物理存儲(chǔ)器地址,并訪問(wèn)該物理存儲(chǔ)器地址。優(yōu)選地,存儲(chǔ)器管理單元被配置為,如果代表網(wǎng)絡(luò)接口控制器的虛擬存儲(chǔ)器地址 的轉(zhuǎn)換失敗,則向網(wǎng)絡(luò)接口控制器產(chǎn)生頁(yè)面錯(cuò)誤(pagefault)。優(yōu)選地,網(wǎng)絡(luò)接口控制器被 配置為,如果虛擬存儲(chǔ)器地址涉及發(fā)送隊(duì)列,響應(yīng)于頁(yè)面錯(cuò)誤,使相應(yīng)于該虛擬存儲(chǔ)器地址 的發(fā)送隊(duì)列暫停,直到各個(gè)頁(yè)面已經(jīng)被重寫(xiě)入存儲(chǔ)器;或者如果虛擬存儲(chǔ)器地址涉及接收 隊(duì)列,響應(yīng)于頁(yè)面錯(cuò)誤,根據(jù)提出的是哪個(gè)請(qǐng)求,將接收的網(wǎng)絡(luò)數(shù)據(jù)分組的數(shù)據(jù)寫(xiě)入由數(shù)據(jù) 處理系統(tǒng)的協(xié)議處理實(shí)體檢索的預(yù)留緩沖。相應(yīng)地,數(shù)據(jù)處理系統(tǒng)進(jìn)一步包括包括第二網(wǎng)絡(luò)接口控制器的第二中央處理單 元,該第二網(wǎng)絡(luò)接口控制器也被配置為通過(guò)根據(jù)網(wǎng)絡(luò)協(xié)議在數(shù)據(jù)鏈路層至少部分地將發(fā)送 的數(shù)據(jù)形成幀,形成中間數(shù)據(jù)單元,每個(gè)中間數(shù)據(jù)單元包括用于發(fā)送的數(shù)據(jù)的目的地網(wǎng)絡(luò) 地址;以及在第二中央處理單元和媒體接口之間延伸的第二互連,第二互連由一條或多條 數(shù)據(jù)鏈路形成;其中第二網(wǎng)絡(luò)接口控制器被配置為將網(wǎng)絡(luò)協(xié)議的中間數(shù)據(jù)單元封裝在通 過(guò)第二互連發(fā)送的互連數(shù)據(jù)分組中,并且媒體接口被配置為從通過(guò)互連接收的互連數(shù)據(jù)分 組提取中間數(shù)據(jù)單元并在物理層處理中間數(shù)據(jù)單元,以便根據(jù)網(wǎng)絡(luò)協(xié)議完成數(shù)據(jù)分組的形 成。第二互連的一條或多條數(shù)據(jù)鏈路可與第一互連的一條或多條數(shù)據(jù)鏈路共享。優(yōu)選地,網(wǎng)絡(luò)接口控制器被配置為,如果在中央處理單元處形成的中間數(shù)據(jù)單元 的目標(biāo)地網(wǎng)絡(luò)地址是在第二中央處理單元處支持的網(wǎng)絡(luò)地址,則將包括該中間數(shù)據(jù)單元的 經(jīng)封裝的互連數(shù)據(jù)分組發(fā)送到第二網(wǎng)絡(luò)接口控制器。優(yōu)選地,媒體接口包括管理控制器,該管理控制器被配置為處理接收的、用于由 (a)媒體接口和網(wǎng)絡(luò)接口控制器和(b)媒體接口和第二網(wǎng)絡(luò)接口控制器形成的網(wǎng)絡(luò)接口設(shè) 備的管理命令。相應(yīng)地,數(shù)據(jù)處理系統(tǒng)是包括了在機(jī)架處支持的一個(gè)或更多個(gè)刀片的刀片式服務(wù) 器,每個(gè)刀片具有一個(gè)或更多個(gè)中央處理單元,該一個(gè)或更多個(gè)中央處理單元中的至少一 個(gè)包括網(wǎng)絡(luò)接口控制器,媒體接口位于刀片式服務(wù)器的機(jī)架處。中央處理單元和第二中央處理單元可位于刀片式服務(wù)器的同一刀片處。優(yōu)選地, 通過(guò)包括第一互連的數(shù)據(jù)鏈路和第二互連的數(shù)據(jù)鏈路的CPU互連,中央處理單元和第二中 央處理單元互相可訪問(wèn)。中央處理單元和第二中央處理單元可位于刀片式服務(wù)器的不同的刀片處。優(yōu)選 地,網(wǎng)絡(luò)接口控制器被配置為,如果在中央處理單元處形成的中間數(shù)據(jù)單元的目的地網(wǎng)絡(luò) 地址是屬于在第二中央處理單元處支持的進(jìn)程的網(wǎng)絡(luò)地址,使封裝中間數(shù)據(jù)單元的互連數(shù) 據(jù)分組不經(jīng)由媒體接口、通過(guò)CPU互連被發(fā)送給第二網(wǎng)絡(luò)接口控制器。優(yōu)選地,在外圍數(shù)據(jù)總線處支持媒體接口,并且刀片式服務(wù)器的刀片被配置為通 過(guò)外圍數(shù)據(jù)總線互相通信。優(yōu)選地,數(shù)據(jù)處理系統(tǒng)在刀片式服務(wù)器的機(jī)架處進(jìn)一步包括交換機(jī),該交換機(jī)被 配置為在刀片式服務(wù)器的刀片之間路由互連數(shù)據(jù)分組。相應(yīng)地,該交換機(jī)被配置為,依靠在 外圍數(shù)據(jù)總線上使用的數(shù)據(jù)協(xié)議的層次上的互連數(shù)據(jù)分組的成幀信息來(lái)路由互連數(shù)據(jù)分 組。相應(yīng)地,該交換機(jī)被配置為,依靠在網(wǎng)絡(luò)協(xié)議的層級(jí)上的中間數(shù)據(jù)單元的成幀信息路由 封裝中間數(shù)據(jù)單元的互連數(shù)據(jù)分組。相應(yīng)地,外圍數(shù)據(jù)總線是PCIe,交換機(jī)是PCIe交換機(jī)。媒體接口可以是常規(guī)PCIe設(shè)備、SR-IOV PCIe設(shè)備和MR-IOV PCIe設(shè)備的其中之一。媒體接口可以是SR-IOV PCIe設(shè) 備,并且交換機(jī)是MR-IOV PCIe交換機(jī)。相應(yīng)地,媒體接口和數(shù)據(jù)處理系統(tǒng)的每個(gè)網(wǎng)絡(luò)接口控制器被配置為借助于一個(gè)或 更多個(gè)互連數(shù)據(jù)分組來(lái)交換控制數(shù)據(jù)。優(yōu)選地,網(wǎng)絡(luò)協(xié)議是以太網(wǎng)。根據(jù)本發(fā)明的第三方面,提供了一種通過(guò)網(wǎng)絡(luò)從數(shù)據(jù)處理系統(tǒng)發(fā)送數(shù)據(jù)的方法, 該數(shù)據(jù)處理系統(tǒng)包括,在到網(wǎng)絡(luò)的接口處的媒體接口、具有用于訪問(wèn)存儲(chǔ)器的存儲(chǔ)器管理 單元的中央處理單元和在中央處理單元和媒體接口之間連接的互連,該方法包括借助存 儲(chǔ)器管理單元,位于中央處理單元處的網(wǎng)絡(luò)接口控制器從存儲(chǔ)器中的發(fā)送隊(duì)列獲取通過(guò)網(wǎng) 絡(luò)發(fā)送的數(shù)據(jù);在數(shù)據(jù)鏈路層上將網(wǎng)絡(luò)協(xié)議的包含所獲取的數(shù)據(jù)的數(shù)據(jù)分組至少部分地形 成幀;并根據(jù)在互連上使用的數(shù)據(jù)協(xié)議,將網(wǎng)絡(luò)協(xié)議的數(shù)據(jù)分組封裝在通過(guò)互連發(fā)送的數(shù) 據(jù)分組中,并將該數(shù)據(jù)分組通過(guò)互連發(fā)送給媒體接口 ;媒體接口接收經(jīng)封裝的數(shù)據(jù)分組,從 經(jīng)封裝的數(shù)據(jù)分組中提取網(wǎng)絡(luò)協(xié)議的數(shù)據(jù)分組,在物理層處理網(wǎng)絡(luò)協(xié)議的數(shù)據(jù)分組以便根 據(jù)網(wǎng)絡(luò)協(xié)議完成數(shù)據(jù)分組的成幀,并將完全形成的網(wǎng)絡(luò)協(xié)議的數(shù)據(jù)分組發(fā)送到網(wǎng)絡(luò)上。根據(jù)本發(fā)明的第四方面,提供了一種在數(shù)據(jù)處理系統(tǒng)中通過(guò)網(wǎng)絡(luò)接收數(shù)據(jù)的方 法,該數(shù)據(jù)處理系統(tǒng)包括,位于連接到網(wǎng)絡(luò)的接口處的媒體接口、具有用于訪問(wèn)存儲(chǔ)器的存 儲(chǔ)器管理單元的中央處理單元和在中央處理單元和媒體接口之間連接的互連,該方法包 括媒體接口通過(guò)網(wǎng)絡(luò)接收網(wǎng)絡(luò)數(shù)據(jù)分組,并根據(jù)在互連上使用的數(shù)據(jù)協(xié)議,將接收的網(wǎng)絡(luò) 數(shù)據(jù)分組封裝在通過(guò)互連發(fā)送的數(shù)據(jù)分組中,并將該數(shù)據(jù)分組通過(guò)互連發(fā)送給位于中央處 理單元處的網(wǎng)絡(luò)接口控制器;網(wǎng)絡(luò)接口控制器接收經(jīng)封裝的數(shù)據(jù)分組,從經(jīng)封裝的數(shù)據(jù) 分組提取接收的網(wǎng)絡(luò)數(shù)據(jù)分組;根據(jù)網(wǎng)絡(luò)協(xié)議,在數(shù)據(jù)鏈路層至少部分地處理每個(gè)接收的 網(wǎng)絡(luò)數(shù)據(jù)分組,以便提取攜帶在每個(gè)接收的網(wǎng)絡(luò)數(shù)據(jù)分組中的數(shù)據(jù);并且借助于存儲(chǔ)器管 理單元,將提取的數(shù)據(jù)寫(xiě)入存儲(chǔ)器中的接收隊(duì)列。根據(jù)本發(fā)明的第五方面,提供了一種用于在數(shù)據(jù)處理系統(tǒng)處在中央處理單元間通 信數(shù)據(jù)的方法,數(shù)據(jù)處理系統(tǒng)具有借助于互連耦合在一起的第一中央處理單元和第二中央 處理單元,每個(gè)中央處理單元包括各自的網(wǎng)絡(luò)接口控制器,可操作網(wǎng)絡(luò)接口控制器來(lái)(a) 通過(guò)根據(jù)網(wǎng)絡(luò)協(xié)議在數(shù)據(jù)鏈路層至少部分地形成用于通信的數(shù)據(jù)的幀,來(lái)形成中間數(shù)據(jù)單 元,和(b)根據(jù)網(wǎng)絡(luò)協(xié)議在數(shù)據(jù)鏈路層至少部分地處理中間數(shù)據(jù)單元,以便提取攜帶在每 個(gè)中間數(shù)據(jù)單元中的通信的數(shù)據(jù),該方法包括第一中央處理單元將通信的數(shù)據(jù)傳遞給它 的第一網(wǎng)絡(luò)接口控制器;第一網(wǎng)絡(luò)接口控制器通過(guò)在數(shù)據(jù)鏈路層根據(jù)網(wǎng)絡(luò)協(xié)議至少部分地 形成通信的數(shù)據(jù)的幀,來(lái)形成包括通信數(shù)據(jù)的中間數(shù)據(jù)單元,將網(wǎng)絡(luò)協(xié)議的中間數(shù)據(jù)單元 封裝在通過(guò)互連發(fā)送的數(shù)據(jù)分組中,并通過(guò)互連將經(jīng)封裝的數(shù)據(jù)分組發(fā)送給第二網(wǎng)絡(luò)接口 控制器;第二網(wǎng)絡(luò)接口控制器接收經(jīng)封裝的數(shù)據(jù)分組,從經(jīng)封裝的數(shù)據(jù)分組提取中間數(shù)據(jù) 單元,在數(shù)據(jù)鏈路層根據(jù)網(wǎng)絡(luò)協(xié)議至少部分地處理每個(gè)中間數(shù)據(jù)單元,以便提取攜帶在每 個(gè)中間數(shù)據(jù)單元中的數(shù)據(jù),并將提取的數(shù)據(jù)傳遞給第二中央處理單元。根據(jù)本發(fā)明的第六方面,提供了一種數(shù)據(jù)處理系統(tǒng)的中央處理單元,該中央處理 單元包括處理核;鏈路模塊,用于通過(guò)數(shù)據(jù)總線通信預(yù)定數(shù)據(jù)協(xié)議的數(shù)據(jù)分組;存儲(chǔ)器管 理單元,可操作來(lái)從與中央處理單元耦合的存儲(chǔ)器獲取數(shù)據(jù);以及網(wǎng)絡(luò)接口控制器,被配置 為借助于存儲(chǔ)器管理單元,獲取通過(guò)網(wǎng)絡(luò)發(fā)送的數(shù)據(jù),在數(shù)據(jù)鏈路層將網(wǎng)絡(luò)協(xié)議的數(shù)據(jù)分組形成幀,數(shù)據(jù)分組中包括所獲取數(shù)據(jù);并且將這些分組封裝在預(yù)定數(shù)據(jù)協(xié)議的數(shù)據(jù)分組 中,并通過(guò)數(shù)據(jù)總線借助鏈路模塊通信。優(yōu)選地,網(wǎng)絡(luò)接口控制器在網(wǎng)絡(luò)協(xié)議的物理層不將數(shù)據(jù)分組形成幀。根據(jù)本發(fā)明的第七方面,提供了一種數(shù)據(jù)處理系統(tǒng)的中央處理單元,該中央處理 單元包括處理核;高速緩存;存儲(chǔ)器管理單元,可操作來(lái)從與中央處理單元耦合的存儲(chǔ)器 獲取數(shù)據(jù);和網(wǎng)絡(luò)接口控制器,被配置為當(dāng)使用時(shí)在與中央處理單元耦合的存儲(chǔ)器中存儲(chǔ) 至少一些自身的狀態(tài);其中處理核和網(wǎng)絡(luò)接口控制器被配置為,借助于存儲(chǔ)器管理單元訪 問(wèn)與中央處理單元耦合的存儲(chǔ)器,并且高速緩存被配置為,高速緩存在與中央處理單元耦 合的存儲(chǔ)器中存儲(chǔ)的數(shù)據(jù)。相應(yīng)地,網(wǎng)絡(luò)接口控制器的狀態(tài)包括轉(zhuǎn)發(fā)表和地址轉(zhuǎn)換表的其中之一或兩者。根據(jù)本發(fā)明的第八方面,提供一種在數(shù)據(jù)處理系統(tǒng)中支持的并對(duì)于該數(shù)據(jù)處理系 統(tǒng)將自身表現(xiàn)為PCIe設(shè)備的電子設(shè)備,數(shù)據(jù)處理系統(tǒng)包括中央處理單元和PCIe數(shù)據(jù)總線, 外圍設(shè)備包括兩個(gè)組件位于中央處理單元處的核心組件,操作該核心組件以處理對(duì)電子 設(shè)備的I/O請(qǐng)求;以及核心組件通過(guò)PCIe數(shù)據(jù)總線可訪問(wèn)的外圍組件;其中核心組件被配 置為響應(yīng)于發(fā)送給外圍組件的I/O請(qǐng)求。優(yōu)選地,為核心組件分配定義其控制范圍(control aperture)的硬件地址范圍, 并且外圍組件被配置為,提供指示包括核心組件控制范圍的基地址的硬件地址的范圍的基 地址寄存器,以便在核心組件的控制范圍內(nèi)處理發(fā)送給由基地址寄存器指示的硬件地址范 圍的I/O請(qǐng)求。相應(yīng)地,外圍組件附加的是一個(gè)或更多個(gè)其他PCIe設(shè)備的組件,并且外圍組件被 配置為,為每個(gè)其他PCIe設(shè)備提供附加的基地址寄存器,每個(gè)附加的基地址寄存器被配置 以便在其他PCIe設(shè)備各自的核心組件中處理發(fā)送給由該基地址寄存器指示的硬件地址范 圍的I/O請(qǐng)求。優(yōu)選地,外圍組件被配置為,將其接收的中斷配置請(qǐng)求轉(zhuǎn)發(fā)給核心組件,以在該核 心組件中處理。優(yōu)選地,外圍組件進(jìn)一步提供支持傳統(tǒng)(legacy)寄存器組的傳統(tǒng)基地址寄存器, 該外圍組件被配置為,當(dāng)讀或?qū)憘鹘y(tǒng)寄存器時(shí),將該讀或?qū)懹成浣o該傳統(tǒng)寄存器以對(duì)核心 組件的控制范圍進(jìn)行讀或?qū)?,以便在核心組件的控制范圍處處理發(fā)送給傳統(tǒng)寄存器組的傳 統(tǒng)I/O請(qǐng)求。
現(xiàn)在將參考附圖以示例的方式描述本發(fā)明,其中圖1是借助外圍總線與數(shù)據(jù)處理系統(tǒng)耦合的傳統(tǒng)網(wǎng)絡(luò)接口設(shè)備的示意圖。圖2是根據(jù)本發(fā)明配置的網(wǎng)絡(luò)接口設(shè)備的示意圖。圖3是具有根據(jù)本發(fā)明配置的網(wǎng)絡(luò)接口設(shè)備的數(shù)據(jù)處理系統(tǒng)的示意圖。圖4是根據(jù)互連以太網(wǎng)(Ethernet-over-Intercormect)數(shù)據(jù)協(xié)議配置的數(shù)據(jù)分 組的示意圖。圖5a和5b是具有根據(jù)本發(fā)明配置的網(wǎng)絡(luò)接口設(shè)備的多處理器數(shù)據(jù)處理系統(tǒng)的示 意圖。
圖6是根據(jù)本發(fā)明的教導(dǎo),具有分離結(jié)構(gòu)的PCIe設(shè)備的示意圖。圖7是根據(jù)本發(fā)明配置的控制器單元的示意圖。圖8是根據(jù)本發(fā)明配置的媒體接口的示意圖。圖9是具有根據(jù)本發(fā)明配置的媒體接口和多個(gè)控制器單元的刀片式服務(wù)器的示意圖。
具體實(shí)施例方式提出以下說(shuō)明以使任何本領(lǐng)域的技術(shù)人員能夠做出并使用該發(fā)明,并且在特殊應(yīng)用的上下文中提供以下說(shuō)明。對(duì)公開(kāi)實(shí)施例的各種變型對(duì)于那些本領(lǐng)域技術(shù)人員來(lái)說(shuō)將是 顯而易見(jiàn)的。在此定義的總原則可應(yīng)用于其他實(shí)施例和應(yīng)用,而不脫離本發(fā)明的精神和范圍。 因此,并不意在將本發(fā)明限制在所展示的實(shí)施例,而是被授予與在此公開(kāi)的原則和特征一 致的最寬的范圍。本發(fā)明涉及一種在數(shù)據(jù)處理系統(tǒng)中網(wǎng)絡(luò)接口設(shè)備的新裝置。根據(jù)本發(fā)明配置的網(wǎng)絡(luò)接口設(shè)備和處理器如圖2所示。處理器202是適合在諸如 服務(wù)器或個(gè)人計(jì)算機(jī)這樣的數(shù)據(jù)處理系統(tǒng)中使用的中央處理單元(CPU)。處理器可包括在 單一集成電路封裝中的一個(gè)或更多個(gè)處理核(這些核可以位于或者不位于同一模具(die) 上)。網(wǎng)絡(luò)接口設(shè)備包括兩個(gè)單元控制器單元203,位于處理器202中,并且具有用于處理 數(shù)據(jù)分組通過(guò)網(wǎng)絡(luò)的發(fā)送和接收的控制邏輯;以及媒體接口單元206,位于物理網(wǎng)絡(luò)鏈路 210中,并且被配置為為處理器提供到網(wǎng)絡(luò)209的物理接口。處理器202通過(guò)互連208與媒 體接口單元206相耦合。處理器被配置為使控制器單元使用互連208。控制器單元203是由控制器單元和媒體接口單元形成的網(wǎng)絡(luò)接口設(shè)備的控制器 電路??刂破鲉卧幚戆l(fā)送和接收操作的邏輯方面,例如從主機(jī)存儲(chǔ)器以及向主機(jī)存儲(chǔ)器 讀和寫(xiě)數(shù)據(jù),根據(jù)在網(wǎng)絡(luò)(例如以太網(wǎng))上使用的協(xié)議,形成通過(guò)網(wǎng)絡(luò)發(fā)送的數(shù)據(jù)分組;根 據(jù)一個(gè)或更多個(gè)服務(wù)質(zhì)量算法,執(zhí)行分組優(yōu)先排序;并確定所接收的數(shù)據(jù)應(yīng)當(dāng)被路由到的 適當(dāng)端點(diǎn),并相應(yīng)地路由該接收的數(shù)據(jù)。媒體接口單元在控制器單元的控制下,通過(guò)網(wǎng)絡(luò)進(jìn) 行數(shù)據(jù)的物理發(fā)送和接收。媒體接口單元包括被配置為在物理層通過(guò)網(wǎng)絡(luò)介質(zhì)210(可能是光纖或銅線鏈路)進(jìn)行信號(hào)傳送的電路207。這種電路典型地被提供為集成電路,并被稱為PHY。PHY是 網(wǎng)絡(luò)接口設(shè)備的形成鏈路層數(shù)據(jù)分組和網(wǎng)絡(luò)上的物理層信令之間的接口的那部分。例如, 對(duì)于以太網(wǎng)網(wǎng)絡(luò)接口設(shè)備,PHY根據(jù)IEEE 802. 3執(zhí)行物理層信令傳輸。如傳統(tǒng)的那樣,在處理器202的集成電路處提供控制器單元203,在網(wǎng)絡(luò)接口設(shè)備 處不提供。因此,處理器和控制器單元可以直接通信,因?yàn)檫@兩者之間的數(shù)據(jù)通路不經(jīng)過(guò)互 連或任何外圍總線。這減少了處理器和控制器之間通信的延遲。進(jìn)一步地,控制器單元可 受益于典型地用于中央處理單元結(jié)構(gòu)中的高級(jí)處理技術(shù),減少模尺寸(die size)和網(wǎng)絡(luò)接 口設(shè)備的凈功耗,潛在地使該電路可以以更高的時(shí)鐘速度運(yùn)行。更高的時(shí)鐘速度具有減小 延遲并增加最大數(shù)據(jù)傳輸速率的優(yōu)點(diǎn)。如果互連208是CPU互連或在處理器本地的數(shù)據(jù)總線,例如QuickPath互連 (QPI)^HyperTransport(HT)或PCI Express(PCIe)鏈接,這將是有益的。這使控制器單元能利用處理器的互連電路,而不需要處理器包括用于控制器單元和媒體接口之間的通信的 附加電路。并且,與諸如外圍組件互連(PCI)這樣的外圍數(shù)據(jù)總線相比,CPU互連典型地提 供高帶寬和低延遲。在該情況下,媒體接口 206將被配置為通過(guò)為其提供適當(dāng)?shù)拇?去 串行(SERDES)電路來(lái)支持通過(guò)CPU互連的通信。作為另選方式,互連208可以是外圍數(shù)據(jù)總線或組合,或由可選I/O集線器205耦 合在一起的兩個(gè)或多個(gè)鏈路。例如,控制器單元和媒體接口之間的數(shù)據(jù)傳輸可以通過(guò)諸如 HT這樣的CPU互連被攜帶給處理器以及從處理器被帶走,并且可在I/O集線器處得以轉(zhuǎn)換, 以通過(guò)在其上支持媒體接口的、諸如PCIe這樣的外圍數(shù)據(jù)總線來(lái)傳輸。在典型的數(shù)據(jù)處理 系統(tǒng)中,將在支持處理器202的芯片集處提供I/O集線器。如果在外圍數(shù)據(jù)總線處支持媒體接口,則處理器可被配置為包括必要的電路以使 其直接通過(guò)該數(shù)據(jù)總線通信。例如,如果在PCIe數(shù)據(jù)總線上提供媒體接口,可為處理器提 供可由控制器單元訪問(wèn)的并被配置為支持去往和來(lái)自處理器的PCIe通信的電路。圖3展示了在數(shù)據(jù)處理系統(tǒng)中,根據(jù)本發(fā)明配置的網(wǎng)絡(luò)接口設(shè)備的使用。圖2的 處理器形成了數(shù)據(jù)處理器系統(tǒng)201的中央處理單元,數(shù)據(jù)處理系統(tǒng)201具有處理器借助存 儲(chǔ)器總線211可訪問(wèn)的存儲(chǔ)器204。數(shù)據(jù)處理系統(tǒng)支持被配置為在處理器202處執(zhí)行并利 用由控制器單元203和媒體接口 206形成的網(wǎng)絡(luò)接口設(shè)備(NIC)的軟件。在此所謂的數(shù)據(jù)處理系統(tǒng)可以是任何類型的計(jì)算機(jī),例如服務(wù)器、刀片、桌上機(jī)器 或者便攜式設(shè)備。數(shù)據(jù)處理系統(tǒng)包括一個(gè)或更多個(gè)處理核(這些將被稱為處理器,雖然每 個(gè)物理處理器實(shí)際上可支持多個(gè)核)以及存儲(chǔ)器,處理器借助集成在處理器中的存儲(chǔ)器控 制器可直接訪問(wèn)該存儲(chǔ)器。典型的數(shù)據(jù)處理系統(tǒng)可通過(guò)適當(dāng)?shù)目偩€和互連來(lái)支持一個(gè)或更 多個(gè)網(wǎng)絡(luò)接口設(shè)備、存儲(chǔ)設(shè)備以及其他外圍設(shè)備。數(shù)據(jù)處理系統(tǒng)可使得網(wǎng)絡(luò)接口設(shè)備經(jīng)由網(wǎng)絡(luò)發(fā)送存儲(chǔ)在存儲(chǔ)器204中的數(shù)據(jù)。類 似地,一旦接收到數(shù)據(jù),網(wǎng)絡(luò)接口設(shè)備可在由數(shù)據(jù)處理系統(tǒng)建立的接收隊(duì)列處將接收的數(shù) 據(jù)寫(xiě)入存儲(chǔ)器204。為實(shí)現(xiàn)數(shù)據(jù)發(fā)送/接收,由控制器單元對(duì)數(shù)據(jù)處理系統(tǒng)的存儲(chǔ)器執(zhí)行讀 /寫(xiě)操作,因此通過(guò)將控制器單元設(shè)置在處理器中可以實(shí)現(xiàn)顯著的性能優(yōu)勢(shì)。特別地,網(wǎng)絡(luò) 接口設(shè)備的控制器單元被配置為,使用處理器的存儲(chǔ)器管理單元212,并通過(guò)處理器的存儲(chǔ) 器總線211訪問(wèn)存儲(chǔ)器204。這減少了與每次發(fā)送或接收操作相關(guān)的延遲。如圖1所示,考慮由處理器103和存儲(chǔ)器104通過(guò)外圍總線106可訪問(wèn)的傳統(tǒng)網(wǎng)絡(luò) 接口設(shè)備102來(lái)處理的發(fā)送操作。為了通過(guò)網(wǎng)絡(luò)發(fā)送數(shù)據(jù),NIC典型地(a)從存儲(chǔ)器104讀 取描述符,該描述符標(biāo)識(shí)存儲(chǔ)器的存儲(chǔ)傳輸數(shù)據(jù)的位置,(b)通過(guò)總線讀取經(jīng)識(shí)別的數(shù)據(jù), 并(c)通過(guò)網(wǎng)絡(luò)發(fā)送該數(shù)據(jù)。因此每個(gè)發(fā)送操作典型地包括兩次存儲(chǔ)器訪問(wèn),總線的I/O 集線器處的存儲(chǔ)器管理單元提供存儲(chǔ)器地址轉(zhuǎn)換。并且,每次存儲(chǔ)器訪問(wèn)通過(guò)外圍總線來(lái) 完成。相對(duì)照地,根據(jù)本發(fā)明配置的網(wǎng)絡(luò)接口設(shè)備的控制器單元能夠通過(guò)執(zhí)行以下步驟 來(lái)進(jìn)行發(fā)送操作(i)借助于處理器的高速存儲(chǔ)器總線211從存儲(chǔ)器讀取標(biāo)識(shí)符;(ii)通過(guò)同一高速存儲(chǔ)器總線讀取標(biāo)識(shí)的數(shù)據(jù)(典型地被存儲(chǔ)在發(fā)送隊(duì)列處);(iii)通過(guò)互連208將該數(shù)據(jù)傳遞給媒體接口 206,并使該媒體接口通過(guò)網(wǎng)絡(luò)發(fā)送 該數(shù)據(jù)。
控制器單元所需的任何存儲(chǔ)器地址轉(zhuǎn)換可由處理器的存儲(chǔ)器管理單元提供,這一 般明顯的比從I/O集線器請(qǐng)求存儲(chǔ)器地址轉(zhuǎn)換要更快些。以這種方式控制器單元可以借助 于對(duì)存儲(chǔ)器管理單元的讀取請(qǐng)求訪問(wèn)發(fā)送隊(duì)列。通常,控制器單元可訪問(wèn)存儲(chǔ)器處的用于 發(fā)送的數(shù)據(jù)、標(biāo)識(shí)用于發(fā)送的數(shù)據(jù)的元數(shù)據(jù)和其他控制信息(例如卸載和高速緩存選項(xiàng)的 控制)。如果標(biāo)識(shí)符和用于發(fā)送的數(shù)據(jù)可借助于對(duì)存儲(chǔ)器管理單元的讀取請(qǐng)求從CPU存儲(chǔ) 器高速緩存中直接讀取,從高速緩存中讀取所引起的延遲非常低,這是更優(yōu)選的。如果網(wǎng)絡(luò)接口設(shè)備的控制器和媒體接口之間的數(shù)據(jù)傳輸通過(guò)高帶寬、低延遲的 CPU互連發(fā)生,并且附加地?cái)U(kuò)展到由網(wǎng)絡(luò)接口設(shè)備執(zhí)行的接收操作,則本發(fā)明的優(yōu)點(diǎn)甚至更 大。將網(wǎng)絡(luò)接口設(shè)備控制器(控制器單元)設(shè)置在CPU處的一個(gè)特殊優(yōu)點(diǎn)是在同一處 理器處支持的網(wǎng)絡(luò)端點(diǎn)之間的存儲(chǔ)器傳輸通過(guò)非常低延遲的數(shù)據(jù)通道發(fā)生。這種情況頻繁 地出現(xiàn)在虛擬化的數(shù)據(jù)處理系統(tǒng)中,在該系統(tǒng)中通過(guò)諸如管理程序(hypervisor)這樣的 特權(quán)方式域支持多個(gè)訪客操作系統(tǒng)(guest operating system)。由于每個(gè)訪客OS獨(dú)立于 其他訪客地運(yùn)行,在一個(gè)訪客OS處的應(yīng)用可能不知道其想發(fā)送數(shù)據(jù)到的網(wǎng)絡(luò)端點(diǎn)是否在 同一處理器處、同一服務(wù)器處的不同的處理器處、或可通過(guò)物理網(wǎng)絡(luò)自身訪問(wèn)的遠(yuǎn)程服務(wù) 器上被支持。因此,在一個(gè)訪客OS處的應(yīng)用可能請(qǐng)求(由控制器單元和媒體接口形成的) 網(wǎng)絡(luò)接口設(shè)備向?qū)嶋H上在同一處理器處被支持的另一個(gè)客戶OS處的網(wǎng)絡(luò)端點(diǎn)發(fā)送數(shù)據(jù)。 在這種情況下(假設(shè)數(shù)據(jù)處理系統(tǒng)不是根據(jù)VEPA協(xié)議配置的),控制器單元確定目的網(wǎng)絡(luò) 端點(diǎn)是它管理的一個(gè),并將該數(shù)據(jù)寫(xiě)入目標(biāo)端點(diǎn)的接收緩沖器中。因此在同一處理器處支 持的端點(diǎn)間的網(wǎng)絡(luò)傳輸不涉及媒體接口,并且可通過(guò)從主機(jī)存儲(chǔ)器中的發(fā)送緩沖器讀取并 寫(xiě)入在同一主機(jī)存儲(chǔ)器中的接收緩沖器來(lái)實(shí)現(xiàn)。由于這種網(wǎng)絡(luò)數(shù)據(jù)分組不經(jīng)過(guò)媒體接口, 可以僅僅部分地形成這些數(shù)據(jù)分組。當(dāng)然,在原理上將包括網(wǎng)絡(luò)接口設(shè)備的PHY的媒體接口附加地集成在處理器處 (即完全集成網(wǎng)絡(luò)接口設(shè)備和處理器)是可能的。然而,這具有一些缺點(diǎn)需要在CPU包裝 處的附加管腳,本質(zhì)上需要定義新的插座規(guī)范(socket specification);這將增加CPU所 需的功率以及在CPU處必須處理的熱量;在PHY處處理的高速信號(hào)將把大量的附加電干擾 引入CPU ;并且,因?yàn)镃PU在數(shù)據(jù)處理系統(tǒng)的低功率狀態(tài)下關(guān)閉,在網(wǎng)絡(luò)接口設(shè)備處處理遠(yuǎn) 程系統(tǒng)管理和LAN上喚醒(wake-on-LAN)非常困難?;ミB以太網(wǎng)(Ethernet-over-interconnect)通常,控制器單元203被配置為根據(jù)相關(guān)網(wǎng)絡(luò)協(xié)議的鏈路層需求充分地形成網(wǎng)絡(luò) 數(shù)據(jù)分組,媒體接口 207被配置為根據(jù)網(wǎng)絡(luò)協(xié)議的物理層需求,將那些數(shù)據(jù)分組傳送到網(wǎng) 絡(luò)結(jié)構(gòu)上。一些鏈路層需求可留給媒體接口,例如校驗(yàn)和的計(jì)算或其他通常在外圍網(wǎng)絡(luò)接 口設(shè)備處的專用硬件上執(zhí)行的協(xié)議處理。為了將至少部分形成的網(wǎng)絡(luò)數(shù)據(jù)分組(即分組可能被分段和/或具有不完 整的頭部或者其它數(shù)據(jù)結(jié)構(gòu))從控制器單元傳輸給媒體接口,提議了一種協(xié)議來(lái)將 網(wǎng)絡(luò)數(shù)據(jù)分組封裝到在互連上使用的數(shù)據(jù)協(xié)議的分組中。將該協(xié)議稱為互連以太網(wǎng) (Ethernet-over-interconnect)或者Eol,因?yàn)樵趦?yōu)選實(shí)施例中,網(wǎng)絡(luò)協(xié)議是以太網(wǎng)。然 而,在可選的實(shí)施例中,由控制器單元和媒體接口形成的網(wǎng)絡(luò)接口設(shè)備可支持通過(guò)除以太 網(wǎng)之外的網(wǎng)絡(luò)結(jié)構(gòu)的通信,在這種情況下,上述Eol協(xié)議將替代地定義那種其它協(xié)議的數(shù)據(jù)分組的封裝。例如,由控制器單元和媒體接口形成的網(wǎng)絡(luò)接口設(shè)備可以是無(wú)限帶寬 (Infiniband)網(wǎng)絡(luò)接口設(shè)備,具有被配置為形成無(wú)限帶寬數(shù)據(jù)鏈路層數(shù)據(jù)分組的控制器單 元和被配置為根據(jù)無(wú)限帶寬規(guī)范物理層需求發(fā)送信號(hào)的媒體接口。因此,在此使用的術(shù)語(yǔ) “Eol ” 一般是指對(duì)網(wǎng)絡(luò)數(shù)據(jù)分組在數(shù)據(jù)分組中的封裝進(jìn)行控制的協(xié)議,該數(shù)據(jù)分組適合于 在數(shù)據(jù)處理系統(tǒng)中通過(guò)互連在控制器單元和媒體接口之間傳輸??刂破鲉卧兔襟w接口被配置為,按照在它們之間延伸的互連上使用的數(shù)據(jù)協(xié)議 來(lái)傳送數(shù)據(jù)分組,那些數(shù)據(jù)分組本身的有效載荷符合Eol協(xié)議。因此,通過(guò)互連發(fā)送的數(shù)據(jù) 分組將典型地具有如圖4所示的嵌套結(jié)構(gòu)?;ミB頭部401對(duì)Eol頭部402進(jìn)行封裝,Eol 頭部402反過(guò)來(lái)封裝在控制器單元處形成的網(wǎng)絡(luò)數(shù)據(jù)分組403的至少一部分。如各協(xié)議所 需,這些頭部可具有相應(yīng)的尾部(footer)404。如前所述,優(yōu)選地,由控制器單元203和媒體接口 207形成的網(wǎng)絡(luò)接口設(shè)備是以太 網(wǎng)網(wǎng)絡(luò)接口設(shè)備。因此,控制器單元被配置為,根據(jù)IEEE802. 3的鏈路層需求充分地形成以 太網(wǎng)分組,媒體接口被配置為,根據(jù)IEEE 802. 3的物理層需求將以太網(wǎng)數(shù)據(jù)分組傳送到網(wǎng) 絡(luò)結(jié)構(gòu)上。以太網(wǎng)分組優(yōu)選地將包括以太網(wǎng)頭部,但不包括幀同步(framing)、前導(dǎo)和在媒 體接口處計(jì)算的CRC數(shù)據(jù)。依賴于它們相對(duì)的分組大小,在控制器單元處形成的網(wǎng)絡(luò)數(shù)據(jù)分組可橫跨(span) 一個(gè)或更多個(gè)互連數(shù)據(jù)分組400。Eol頭部包括正確重組每個(gè)網(wǎng)絡(luò)數(shù)據(jù)分組部分所需的信 息和目的地設(shè)備地址。在互連上的每個(gè)設(shè)備具有互連數(shù)據(jù)分組能被尋址到的設(shè)備地址。優(yōu) 選地,Eol協(xié)議支持控制分組和數(shù)據(jù)通路分組??刂品纸M優(yōu)選地可由它們的Eol頭部標(biāo)識(shí), 使控制器單元能配置、控制和查詢媒體接口。媒體接口被配置為用一個(gè)或更多個(gè)控制分組 來(lái)響應(yīng)來(lái)自控制器單元的查詢。數(shù)據(jù)分組的Eol頭部可進(jìn)一步包括由中間數(shù)據(jù)總線交換機(jī)或控制器單元使用的 附加信息。這種信息可包括VLAN信息、業(yè)務(wù)類型信息和數(shù)據(jù)分組優(yōu)先級(jí)信息。該信息可從 經(jīng)封裝的網(wǎng)絡(luò)數(shù)據(jù)分組(例如以太網(wǎng))被映射。對(duì)于嚴(yán)格保持兩個(gè)端點(diǎn)間數(shù)據(jù)分組順序的互連數(shù)據(jù)協(xié)議,可省略Eol頭部。在這 種情況下,媒體接口可被配置為,通過(guò)解析輸入的互連數(shù)據(jù)分組得到包括在其中的網(wǎng)絡(luò)數(shù) 據(jù)分組的開(kāi)始和結(jié)束端點(diǎn),來(lái)重組網(wǎng)絡(luò)數(shù)據(jù)分組。在本發(fā)明的該實(shí)施例中,控制分組可被支 持為封裝在網(wǎng)絡(luò)數(shù)據(jù)分組中的協(xié)議,或被支持為封裝在互連數(shù)據(jù)分組中的分離控制信道。由于Eol數(shù)據(jù)分組遵守在互連上使用數(shù)據(jù)協(xié)議,依賴于互連頭部,不改變地執(zhí)行 數(shù)據(jù)分組的路由。因此,從控制器單元發(fā)送至媒體接口或者從媒體接口發(fā)送至控制器單 元的數(shù)據(jù)分組在互連層級(jí)上(典型地通過(guò)使用物理設(shè)備地址)被尋址到目標(biāo)設(shè)備。如果 數(shù)據(jù)必須經(jīng)過(guò)多于一條的在控制器單元和媒體接口之間的鏈路,則耦合這兩條鏈路的I/ 0集線器或互連交換機(jī)執(zhí)行任何需要的地址轉(zhuǎn)換,并且可(a)剝離來(lái)自初始鏈路的互連頭 部并將它替換為根據(jù)下一鏈路的協(xié)議的互連頭部,或(b)根據(jù)下一鏈路的協(xié)議封裝互連 數(shù)據(jù)分組。例如,如果正初始地通過(guò)HyperTransport鏈路到I/O集線器、然后通過(guò)PCIe 總線從控制器單元向媒體接口發(fā)送以太網(wǎng)數(shù)據(jù)分組,則互連數(shù)據(jù)分組在(a)的情況下 將其HyperTransport頭部替換為PCIe頭部,或者在(b)的情況下增加PCIe頭部,封裝 HyperTransport 數(shù)據(jù)分組。重要地,因?yàn)榭刂破鲉卧兔襟w接口借助于Eol數(shù)據(jù)分組互相交換數(shù)據(jù),數(shù)據(jù)鏈路層網(wǎng)絡(luò)數(shù)據(jù)作為尋址(在互連頭部中)到各個(gè)目標(biāo)設(shè)備的互連數(shù)據(jù)分組,在控制器單元 和媒體接口之間被傳輸。例如,為了通過(guò)網(wǎng)絡(luò)執(zhí)行發(fā)送操作,控制器單元將形成網(wǎng)絡(luò)數(shù)據(jù)分 組,并使該網(wǎng)絡(luò)數(shù)據(jù)分組被封裝,并在一個(gè)或更多個(gè)互連數(shù)據(jù)分組中被發(fā)送給媒體接口。因 此,控制器單元能通過(guò)根據(jù)Eol協(xié)議封裝數(shù)據(jù)并將其發(fā)送到互連上來(lái)將數(shù)據(jù)推送(push)給 媒體接口。這與傳統(tǒng)的在外圍數(shù)據(jù)總線處支持的網(wǎng)絡(luò)接口設(shè)備形成了對(duì)比,傳統(tǒng)的網(wǎng)絡(luò)接 口設(shè)備通過(guò)從在主機(jī)存儲(chǔ)器中的一個(gè)或更多個(gè)地址請(qǐng)求用于發(fā)送的數(shù)據(jù)來(lái)執(zhí)行發(fā)送操作。 換句話說(shuō),傳統(tǒng)的網(wǎng)絡(luò)接口設(shè)備必須從主機(jī)存儲(chǔ)器獲取其發(fā)送操作所需的所有數(shù)據(jù),這比 較慢,因?yàn)楸仨毾韧ㄟ^(guò)外圍數(shù)據(jù)總線告知網(wǎng)絡(luò)接口設(shè)備哪些存儲(chǔ)器地址含有用于發(fā)送的數(shù) 據(jù)。使用Eol使能了處理器和媒體接口之間對(duì)稱的數(shù)據(jù)傳輸當(dāng)處理器有數(shù)據(jù)要通過(guò) 網(wǎng)絡(luò)發(fā)送時(shí),它使控制器單元將該數(shù)據(jù)推送給媒體接口 ;當(dāng)媒體接口通過(guò)網(wǎng)絡(luò)接收數(shù)據(jù)時(shí), 媒體接口將該數(shù)據(jù)推送給控制器單元。并且,在處理器處提供控制器單元和在互連上使用Eol協(xié)議,使在多處理器數(shù)據(jù) 處理系統(tǒng)中的處理器能夠借助于由控制器單元支持的網(wǎng)絡(luò)協(xié)議(優(yōu)選的以太網(wǎng)協(xié)議)在 CPU層級(jí)上邏輯地通信。然而,控制器單元間的通信并不采用媒體接口提供到其的接口 的網(wǎng)絡(luò)結(jié)構(gòu)的速度,而是采用處理器間互連的速度。這種數(shù)據(jù)處理系統(tǒng)的處理器形成了 邏輯上由網(wǎng)絡(luò)協(xié)議互連的、物理上由相對(duì)(與典型的以太網(wǎng)鏈路相比較)高速的互連所 互連的處理器網(wǎng)。優(yōu)選地,這些互連是提供高帶寬和低延遲鏈路的CPU互連,例如QPI、 HyperTransport或者PCIe。注意,根據(jù)網(wǎng)絡(luò)協(xié)議處理的處理器間通信不需要涉及媒體接 口,優(yōu)選地,該通信在通信的處理器的控制器單元間或者在兩個(gè)處理器都能訪問(wèn)的單個(gè)控 制器單元內(nèi)直接進(jìn)行。如果單一的媒體接口被配置為支持多處理器系統(tǒng)的多個(gè)控制器單元的通信,也是 有益的。對(duì)于PCIe互連,這可通過(guò)使用PCIe媒體接口來(lái)實(shí)現(xiàn)。這使得媒體接口提供到其 的接口的一個(gè)或更多個(gè)物理網(wǎng)絡(luò)端口可被具有根據(jù)本發(fā)明配置的控制器單元的多個(gè)處理 器所共享。在具有PCIe多根能力的系統(tǒng)中,媒體接口優(yōu)選地是PCIe MR-IOV設(shè)備。數(shù)據(jù)處 理系統(tǒng)(多處理器或相反)可支持多個(gè)媒體接口,每一個(gè)媒體接口可提供到不同網(wǎng)絡(luò)的訪 問(wèn)——控制器單元簡(jiǎn)單地尋址任何一個(gè)適合給定通信操作的媒體接口。在數(shù)據(jù)處理系統(tǒng)內(nèi)多個(gè)控制器單元之間共享媒體接口的優(yōu)點(diǎn)包括,由于需要更少 的PHY,減少了功率需求,以及需要更少的數(shù)據(jù)處理系統(tǒng)的網(wǎng)絡(luò)交換端口。注意,所有的Eol數(shù)據(jù)分組的路由在互連層級(jí)處被執(zhí)行。每個(gè)控制器單元被配置 為促使形成具有適當(dāng)互連頭部的互連數(shù)據(jù)分組,從而每個(gè)網(wǎng)絡(luò)數(shù)據(jù)分組到達(dá)它的目標(biāo)端 點(diǎn)。例如,將發(fā)送給在多處理器系統(tǒng)的另一個(gè)處理器處的控制器單元的網(wǎng)絡(luò)數(shù)據(jù)分組進(jìn)行 封裝,并通過(guò)互連(該互連可包括一個(gè)或更多個(gè)鏈接,例如HyperTransport和PCIe鏈接) 路由給另一個(gè)處理器的控制器單元。對(duì)發(fā)送給通過(guò)網(wǎng)絡(luò)可訪問(wèn)的遠(yuǎn)程數(shù)據(jù)處理系統(tǒng)的網(wǎng)絡(luò) 數(shù)據(jù)分組進(jìn)行封裝,并通過(guò)互連路由給適當(dāng)?shù)拿襟w接口以發(fā)送到網(wǎng)絡(luò)上。優(yōu)選地,在處理器處提供被配置為通過(guò)互連執(zhí)行數(shù)據(jù)分組的物理信令發(fā)送的 SERDES電路。對(duì)控制器單元和處理器進(jìn)行配置以便使控制器單元能借助于SERDES電路通 過(guò)互連傳送數(shù)據(jù)。優(yōu)選地,控制器單元維護(hù)一個(gè)或更多個(gè)查找表,查找表包括網(wǎng)絡(luò)地址和互 連上設(shè)備地址之間的對(duì)應(yīng)關(guān)系。例如,將要發(fā)送到媒體接口提供到其的接口的網(wǎng)絡(luò)上的網(wǎng)絡(luò)地址的數(shù)據(jù)分組發(fā)送給在互連上媒體接口的設(shè)備地址;將要發(fā)送到與在另一個(gè)處理器上 執(zhí)行的應(yīng)用的端點(diǎn)相對(duì)應(yīng)的網(wǎng)絡(luò)地址的數(shù)據(jù)分組發(fā)送給那個(gè)處理器的控制器單元的設(shè)備 地址。設(shè)備地址可以在或可以不在與數(shù)據(jù)處理系統(tǒng)的物理存儲(chǔ)器相同的地址空間中。在圖5a和5b中展現(xiàn)了根據(jù)本發(fā)明原理配置的以太網(wǎng)網(wǎng)絡(luò)接口設(shè)備的兩種實(shí)現(xiàn)。在圖5a中,數(shù)據(jù)處理器系統(tǒng)501包括兩個(gè)處理器502、503,它們中的每一個(gè)具有控 制器單元504、505。媒體接口 508借助于可以是HyperTransport鏈路的CPU互連結(jié)構(gòu)509 與每個(gè)處理器相耦合。為了在處理器502處執(zhí)行的第一應(yīng)用將數(shù)據(jù)發(fā)送給在處理器503處執(zhí)行的第二應(yīng) 用,第一應(yīng)用通過(guò)(由控制器單元和媒體接口形成的)網(wǎng)絡(luò)接口設(shè)備向第二應(yīng)用的端點(diǎn)作 出發(fā)送操作的請(qǐng)求。這典型地借助于從第一應(yīng)用到網(wǎng)絡(luò)接口設(shè)備的設(shè)備驅(qū)動(dòng)的軟件調(diào)用來(lái) 實(shí)現(xiàn)??刂破鲉卧?04形成發(fā)送給第二應(yīng)用的端點(diǎn)的以太網(wǎng)數(shù)據(jù)分組,并使該以太網(wǎng)數(shù)據(jù) 分組被封裝在一個(gè)或更多個(gè)尋址的互連數(shù)據(jù)分組中,以便使該互連數(shù)據(jù)分組被路由給處理 器503的控制器單元505?;ミB數(shù)據(jù)分組在處理器間直接路由,不經(jīng)過(guò)媒體接口。如果需 要,控制器單元504被配置為為以太網(wǎng)數(shù)據(jù)分組形成Eol頭部。在處理器503的去串行電 路處,提取以太網(wǎng)數(shù)據(jù)分組,并且控制器單元將該數(shù)據(jù)寫(xiě)入與該數(shù)據(jù)分組的目的地以太網(wǎng) 地址對(duì)應(yīng)的接收隊(duì)列。因此,在處理器502處執(zhí)行的第一應(yīng)用可以僅僅以就像第二應(yīng)用通過(guò)網(wǎng)絡(luò)510在 遠(yuǎn)程數(shù)據(jù)處理系統(tǒng)的處理器處執(zhí)行一樣的方式,來(lái)向在處理器503處執(zhí)行的第二應(yīng)用發(fā)送 數(shù)據(jù)。然而,因?yàn)橥ㄟ^(guò)處理器間的CPU互連來(lái)攜帶以太網(wǎng)數(shù)據(jù)分組,數(shù)據(jù)使用低延遲、高帶 寬數(shù)據(jù)通道。注意,圖5a僅是示意性的,數(shù)據(jù)處理器系統(tǒng)501的各組件間的鏈接可采用任 何適當(dāng)?shù)呐渲?。在圖5b中,數(shù)據(jù)處理系統(tǒng)511包括兩個(gè)處理器512、513,它們的每一個(gè)具有控制器 單元514、515。該實(shí)現(xiàn)與在圖5a中所示的那個(gè)類似,但是在該例中,媒體接口 518是在外圍 數(shù)據(jù)總線517上支持的外圍設(shè)備,外圍數(shù)據(jù)總線可以是PCIe數(shù)據(jù)總線。因此,需要I/O集線 器或交換機(jī)516來(lái)提供外圍數(shù)據(jù)總線和每個(gè)處理器之間的接口。在處理器512和514之間 的通信優(yōu)選地僅以如上圖5a所述的相同方式通過(guò)互連結(jié)構(gòu)519 (例如HyperTransport)直 接實(shí)現(xiàn)。然而,在處理器512和媒體接口 518之間的互連由兩條鏈路組成在處理器和I/O 集線器之間的CPU數(shù)據(jù)總線520 (它可以是諸如HyperTransport這樣的CPU互連,或者是 諸如處理器512的前側(cè)總線這樣的其他類型的數(shù)據(jù)總線),和在I/O集線器和媒體接口之間 的諸如PCIe這樣的外圍數(shù)據(jù)總線。目的地為媒體接口的互連數(shù)據(jù)分組被發(fā)送到CPU數(shù)據(jù) 總線上,然后在I/O集線器處被轉(zhuǎn)換為適合于在PCIe總線上傳輸?shù)臄?shù)據(jù)分組。優(yōu)選地,CPU 數(shù)據(jù)總線是CPU互連,并且最優(yōu)地,I/O集線器可由處理器通過(guò)該CPU互連訪問(wèn)。參考圖2如上所述,包括與在外圍數(shù)據(jù)總線處支持的媒體接口一起形成部分網(wǎng)絡(luò) 接口設(shè)備的控制器單元的處理器自身可包括適當(dāng)?shù)腟ERDES電路,以使該處理器能直接從 外圍數(shù)據(jù)總線和向外圍數(shù)據(jù)總線讀和寫(xiě)。在外圍數(shù)據(jù)總線是PCIe數(shù)據(jù)總線的情況下,控制 器單元自身可以是通過(guò)PCIe數(shù)據(jù)總線可尋址的PCIe設(shè)備。如果處理器/控制器單元可通 過(guò)外圍數(shù)據(jù)總線直接通信,則不需要I/O集線器,因?yàn)闉榱伺c媒體接口通信,控制器單元可 以直接將封裝了以太網(wǎng)數(shù)據(jù)的適當(dāng)數(shù)據(jù)分組發(fā)送到外圍數(shù)據(jù)總線上。包括被配置為與媒體 接口和一個(gè)或更多個(gè)包括控制器單元的處理器通信的控制器單元的處理器,因此能夠依賴于數(shù)據(jù)分組的目的地,將以太網(wǎng)數(shù)據(jù)分組封裝在適合于通過(guò)CPU互連或外圍數(shù)據(jù)總線發(fā)送 的數(shù)據(jù)分組中。圖5b僅是示意性的每個(gè)處理器可具有它自己的I/O集線器,并且在數(shù)據(jù)處理系 統(tǒng)511的各組件間的鏈路可以采取任何適當(dāng)?shù)呐渲?。注意,由于在同一?shù)據(jù)處理系統(tǒng)處的控制器單元(例如在多處理器計(jì)算機(jī)系統(tǒng)處 的處理器或刀片式服務(wù)器的刀片)間的數(shù)據(jù)傳輸不經(jīng)過(guò)媒體接口,封裝后的網(wǎng)絡(luò)數(shù)據(jù)分組 在到達(dá)目的地控制器單元前(校驗(yàn)和和其他卸載可在媒體接口處完成)可以不根據(jù)鏈路層 網(wǎng)絡(luò)協(xié)議被完全地形成。分離PCIe設(shè)備現(xiàn)在將描述一種新穎的分離PCIe設(shè)備結(jié)構(gòu),它是用于根據(jù)本發(fā)明配置的PCIe網(wǎng) 絡(luò)接口設(shè)備的優(yōu)選結(jié)構(gòu)。如果由控制器單元和媒體接口形成的網(wǎng)絡(luò)接口設(shè)備對(duì)于數(shù)據(jù)處理系統(tǒng)(和在其 上運(yùn)行的軟件)來(lái)說(shuō)是常規(guī)的PCIe設(shè)備,這種情況是有益的。這對(duì)維護(hù)與現(xiàn)有軟件和硬件 的兼容性有幫助。在本發(fā)明的一些實(shí)施例中,在處理器處沒(méi)有提供PCIe主機(jī)電路,因此沒(méi) 有為控制器單元提供任何PCIe邏輯。為了給這種數(shù)據(jù)處理系統(tǒng)提供PCIe網(wǎng)絡(luò)接口設(shè)備, 向媒體接口提供PCIe邏輯。圖6顯示了包括PCIe設(shè)備601 (它可以不是網(wǎng)絡(luò)接口設(shè)備)的數(shù)據(jù)處理系統(tǒng)600, PCIe設(shè)備601具有兩個(gè)部分在處理器603處的控制器單元602和在PCIe數(shù)據(jù)總線605上 支持的接口單元604。PCIe數(shù)據(jù)總線典型地可由處理器借助于I/O集線器608訪問(wèn)??刂?器單元602包括PCIe設(shè)備的至少部分邏輯功能組,并被配置為借助于處理器的適當(dāng)?shù)墓δ?(例如存儲(chǔ)器管理單元)訪問(wèn)存儲(chǔ)器606。優(yōu)選地,控制器單元也能夠訪問(wèn)處理器的高速緩 存607,高速緩存607被配置為存儲(chǔ)在存儲(chǔ)器606中保存的某些數(shù)據(jù)的副本。處理器的高速 緩存可以被認(rèn)為在它的存儲(chǔ)器管理單元(處理器的提供到主機(jī)存儲(chǔ)器的訪問(wèn)的部分)處。 在處理器處提供該設(shè)備的那些功能是有益的,該設(shè)備得益于對(duì)主機(jī)存儲(chǔ)器606和處理器高 速緩存607的低延遲訪問(wèn)。就接口單元604物理上在PCIe數(shù)據(jù)總線處被支持的意義來(lái)說(shuō),接口單元604是 PCIe設(shè)備,它能夠借助于它的PCIe主機(jī)邏輯通過(guò)PCIe數(shù)據(jù)總線通信??刂破鲉卧?02被 配置為支持一個(gè)或更多個(gè)控制范圍(controlaperture)??刂品秶且粋€(gè)設(shè)備負(fù)責(zé)的物理 地址范圍,換句話說(shuō),在數(shù)據(jù)處理系統(tǒng)處運(yùn)行的軟件可以通過(guò)從和向在設(shè)備的控制范圍內(nèi) 的地址讀和寫(xiě)來(lái)與該設(shè)備交互。接口單元604被配置為支持一個(gè)或更多個(gè)基地址寄存器(BaseAddress Register, BAR),基地址寄存器根據(jù)PCI Express規(guī)范來(lái)表示PCIe設(shè)備的控制范圍。稱為 BAR的基地址寄存器標(biāo)識(shí)控制范圍的開(kāi)始地址。在接口單元處支持的BAR中的至少一個(gè) 的基地址被配置為位于控制器單元的控制范圍內(nèi),使得在數(shù)據(jù)處理系統(tǒng)處運(yùn)行的軟件讀或 寫(xiě)由接口單元的BAR表示的地址范圍時(shí),那些讀或?qū)憣?shí)際上被發(fā)送給控制器單元的控制范 圍。換句話說(shuō),由接口單元表示的(被分配給它的)物理地址范圍的至少一部分實(shí)際上被 分配給控制器單元。由于在數(shù)據(jù)處理系統(tǒng)處運(yùn)行的主機(jī)軟件從PCIe設(shè)備的BAR獲取該設(shè) 備的控制范圍的地址范圍,該主機(jī)軟件將使用分配給該控制器單元的地址范圍來(lái)與由控制 器單元和接口單元兩者形成的PCIe設(shè)備交互。
典型地,支持PCIe設(shè)備的數(shù)據(jù)處理系統(tǒng)的基本輸入/輸出系統(tǒng)(BIOS)分配將被 系統(tǒng)中的每個(gè)設(shè)備用作控制范圍的地址范圍,并且當(dāng)需要使用它們時(shí)對(duì)每個(gè)設(shè)備進(jìn)行編 程。這些操作可在數(shù)據(jù)處理系統(tǒng)啟動(dòng)時(shí)進(jìn)行??刂破鲉卧獌?yōu)選地被配置為處理PCIe接口單元的中斷。由于主機(jī)軟件程序在外 圍PCIe設(shè)備(在該例中接口單元)處進(jìn)行設(shè)備中斷的配置,因此這可以通過(guò)配置接口單元 向控制器單元轉(zhuǎn)發(fā)對(duì)它的中斷寄存器的更新來(lái)實(shí)現(xiàn),從而使控制器單元能直接在處理器自 身處引發(fā)中斷??梢宰龀鲞M(jìn)一步的規(guī)定來(lái)允許上述分離PCIe設(shè)備支持傳統(tǒng)的I/0BAR。傳統(tǒng)的I/ 0 BAR允許PCIe設(shè)備能向后兼容指向傳統(tǒng)設(shè)備地址范圍的傳統(tǒng)讀和寫(xiě)。這可以通過(guò)將接口 單元配置為提供在控制器單元的控制范圍上指向傳統(tǒng)I/O BAR的間接的讀和寫(xiě)來(lái)處理。傳統(tǒng)I/O BAR的寄存器被設(shè)置為接收對(duì)網(wǎng)絡(luò)接口設(shè)備的傳統(tǒng)寄存器的讀和寫(xiě),并 將那些讀和寫(xiě)映射為對(duì)控制單元的控制范圍的讀和寫(xiě)。對(duì)接口單元的傳統(tǒng)寄存器的讀和寫(xiě) 到對(duì)控制器單元的控制范圍的讀和寫(xiě)的映射可以是直接對(duì)應(yīng)關(guān)系、間接映射或其他映射。 可以有分開(kāi)的每次讀和寫(xiě)的間接性,或者對(duì)傳統(tǒng)I/O BAR寄存器的每次讀和寫(xiě)的事實(shí)上的 多次間接性。因此,在此所述的對(duì)接口單元的傳統(tǒng)寄存器的傳統(tǒng)讀和寫(xiě)變成通過(guò)PCIe總線(以 及可能附加的達(dá)到處理器的互連鏈路)對(duì)控制器單元的存儲(chǔ)器讀或?qū)?。這避免了在接口單 元處對(duì)被配置為處理傳統(tǒng)I/O讀的邏輯的需要,使控制器單元能維護(hù)對(duì)PCIe設(shè)備的讀和寫(xiě) 控制。接口單元可以是支持一個(gè)或更多個(gè)物理功能(physical function, PF)和虛擬功 能(virtual function, VF)的單根輸入/輸出虛擬化(SR-IOV)或多根輸入/輸出虛擬化 (MR-IOV) PCIe 設(shè)備。對(duì)于多處理器數(shù)據(jù)處理系統(tǒng)或刀片式服務(wù)器中特定類型的分離PCIe設(shè)備,接口 單元可被配置為支持多個(gè)控制器單元,其中每個(gè)控制器單元位于不同的處理器處。接口單 元604因此被配置為為每個(gè)控制器單元支持一個(gè)或更多個(gè)BAR,特定控制器單元的至少一 個(gè)BAR的基地址被配置為位于那個(gè)控制器單元的控制范圍內(nèi)。類似地,接口單元可被配置 為以上述方式為多個(gè)控制器單元處理傳統(tǒng)的I/O BAR。注意,接口單元優(yōu)選地進(jìn)一步支持設(shè)備的配置訪問(wèn)、VPD(VitalProduCt Data,重要產(chǎn)品數(shù)據(jù))和引導(dǎo)ROM (boot ROM)。當(dāng)應(yīng)用于根據(jù)本發(fā)明配置的PCIe網(wǎng)絡(luò)接口設(shè)備時(shí),接口單元604是媒體接口,控制器單元602是控制器單元。在本發(fā)明的優(yōu)選實(shí)施例中,參考圖2-9在此描述的控制器單 元和媒體接口是具有分離PCIe設(shè)備結(jié)構(gòu)的PCIe設(shè)備。在處理器處控制器單元的實(shí)現(xiàn)在圖7中展示了在處理器處控制器單元的優(yōu)選實(shí)現(xiàn)的示意圖。如在圖2和3中所 述那樣,控制器單元702被配置為處理發(fā)送和接收操作的邏輯方面,是由控制器單元和媒 體接口形成的網(wǎng)絡(luò)接口設(shè)備的控制器,媒體接口提供到網(wǎng)絡(luò)的物理訪問(wèn)??刂破鲉卧?02 在處理器701處得以支持,處理器701是數(shù)據(jù)處理系統(tǒng)的中央處理單元(CPU),因此能夠訪 問(wèn)主機(jī)存儲(chǔ)器703和借助于其可訪問(wèn)該數(shù)據(jù)處理器系統(tǒng)的設(shè)備(例如在外圍數(shù)據(jù)總線上的 媒體接口)的至少一個(gè)數(shù)據(jù)總線709 (例如CPU互連)。存儲(chǔ)器703可由處理器通過(guò)專用數(shù)據(jù)總線708訪問(wèn)。其他存儲(chǔ)器可由處理器通過(guò)數(shù)據(jù)總線709訪問(wèn)。數(shù)據(jù)總線708和709可 以是同一條數(shù)據(jù)總線。注意,處理器701可包括共享單個(gè)控制器單元702的多個(gè)處理核。控制器單元進(jìn)一步包括封裝電路711,封裝電路711被配置為執(zhí)行(a)將在控制器 單元處形成的網(wǎng)絡(luò)數(shù)據(jù)分組封裝在適合于通過(guò)數(shù)據(jù)總線709發(fā)送的數(shù)據(jù)分組中,和(b)從 通過(guò)數(shù)據(jù)總線709接收的數(shù)據(jù)分組中提取網(wǎng)絡(luò)數(shù)據(jù)分組。網(wǎng)絡(luò)數(shù)據(jù)分組的這種封裝和提取 根據(jù)參考圖4所示的Eol協(xié)議得以執(zhí)行。處理器701優(yōu)選地包括至少一個(gè)高速緩存705,高速緩存705被配置為存儲(chǔ)保持在 包括703的主機(jī)存儲(chǔ)器中的數(shù)據(jù)的副本。處理器的高速緩存705可被認(rèn)為位于存儲(chǔ)器管理 單元704。高速緩存為處理器提供在它的運(yùn)行期間對(duì)所需數(shù)據(jù)的低延遲訪問(wèn)。最優(yōu)地,高速 緩存是由CPU的所有處理核共享的片上高速緩存。將處理器配置為使控制器單元能夠訪問(wèn) 高速緩存705以便控制器單元甚至能夠比通過(guò)存儲(chǔ)器總線708更低延遲地訪問(wèn)數(shù)據(jù),這是 有益的。由于處理器支持軟件應(yīng)用線程以及處理形成數(shù)據(jù)分組所依據(jù)的網(wǎng)絡(luò)協(xié)議的網(wǎng)絡(luò) 棧,CPU通常執(zhí)行被形成為用于通過(guò)網(wǎng)絡(luò)傳輸?shù)木W(wǎng)絡(luò)數(shù)據(jù)分組的數(shù)據(jù)和協(xié)議處理中的至少 一些。這種軟件網(wǎng)絡(luò)棧典型地在將部分形成的數(shù)據(jù)分組傳遞給網(wǎng)絡(luò)接口設(shè)備以完成較低層 (例如以太網(wǎng))上的網(wǎng)絡(luò)數(shù)據(jù)分組和硬件卸載(例如TCP校驗(yàn)和卸載)之前,在OSI模型的 較高層執(zhí)行數(shù)據(jù)分組(例如TCP/IP數(shù)據(jù)分組)的初始形成。由于CPU的高速緩存典型地 包括處理器頻繁或最近使用的數(shù)據(jù),因此有好的可能性控制器單元完成給定網(wǎng)絡(luò)數(shù)據(jù)分 組所需的至少一些數(shù)據(jù)將在該高速緩存中找到。結(jié)果,如果控制器單元702被配置為,當(dāng)從主機(jī)存儲(chǔ)器請(qǐng)求數(shù)據(jù)時(shí),為該數(shù)據(jù)首先 訪問(wèn)高速緩存,如果在高速緩存處未找到該數(shù)據(jù),則隨后從主機(jī)存儲(chǔ)器中讀取該數(shù)據(jù),這是 有益的。特別地,如果控制器單元被配置為為保存在主機(jī)存儲(chǔ)器中的發(fā)送隊(duì)列處的分組數(shù) 據(jù)而首先訪問(wèn)高速緩存,這是優(yōu)選的??刂破鲉卧獌?yōu)選地被配置為,如果該控制器單元所需 的分組數(shù)據(jù)未在高速緩存處找到,則當(dāng)該分組數(shù)據(jù)從主機(jī)存儲(chǔ)器中被讀取時(shí)不被復(fù)制入高 速緩存605。因?yàn)橐坏┌l(fā)送數(shù)據(jù)被發(fā)送,控制器單元或處理器通常不再需要它,這避免了用 后續(xù)不太可能需要的數(shù)據(jù)污染高速緩存??刂破鲉卧獌?yōu)選地被配置為,如果在高速緩存處 找到該控制器單元所需的分組數(shù)據(jù),則使該高速緩存中該分組數(shù)據(jù)所駐存的高速緩存線無(wú) 效。由于控制器單元或處理器不太可能后續(xù)需要該分組數(shù)據(jù),因此這釋放了高速緩存中的 空間,并避免了將分組數(shù)據(jù)寫(xiě)回主機(jī)存儲(chǔ)器,節(jié)約了總線和存儲(chǔ)器帶寬。最優(yōu)地,是否無(wú)效 高速緩存線的決定在軟件的控制下作出。類似地,一旦通過(guò)網(wǎng)絡(luò)接收到數(shù)據(jù)分組,典型地由網(wǎng)絡(luò)接口設(shè)備在將分組中的數(shù) 據(jù)寫(xiě)入主機(jī)存儲(chǔ)器之前,在較低網(wǎng)絡(luò)協(xié)議層上處理接收的數(shù)據(jù)分組,以使在處理器處執(zhí)行 的軟件網(wǎng)絡(luò)棧能完成所接收數(shù)據(jù)分組的協(xié)議處理。因此,軟件網(wǎng)絡(luò)棧的一個(gè)或更多個(gè)進(jìn)程 在網(wǎng)絡(luò)棧執(zhí)行該數(shù)據(jù)分組的協(xié)議處理時(shí),可能訪問(wèn)所接收數(shù)據(jù)分組的數(shù)據(jù)。因此,如果控制 器單元被配置為一旦向主機(jī)存儲(chǔ)器寫(xiě)入接收的分組數(shù)據(jù),就將該數(shù)據(jù)的至少一些寫(xiě)入隨后 在處理器處執(zhí)行的進(jìn)程(比在主機(jī)存儲(chǔ)器中)能更高效地訪問(wèn)的高速緩存中,這是有益的。 控制器單元可被配置為僅向高速緩存寫(xiě)入所接收數(shù)據(jù)分組的所選部分,該選擇優(yōu)選地由該 數(shù)據(jù)分組所根據(jù)的協(xié)議來(lái)確定。所接收數(shù)據(jù)分組的所選部分可以是該數(shù)據(jù)分組的頭部???制器單元可以被配置為,對(duì)于預(yù)定網(wǎng)絡(luò)協(xié)議組的數(shù)據(jù)分組,不將這些數(shù)據(jù)分組的任何部分寫(xiě)入高速緩存。最優(yōu)地,控制器單元由管理軟件根據(jù)在數(shù)據(jù)處理系統(tǒng)上運(yùn)行的軟件進(jìn)程的 配置來(lái)配置。特別地與控制數(shù)據(jù)相關(guān),控制器單元優(yōu)選地被配置為,當(dāng)進(jìn)行控制數(shù)據(jù)的讀取時(shí) 首先訪問(wèn)高速緩存,并且當(dāng)向主機(jī)存儲(chǔ)器進(jìn)行控制數(shù)據(jù)的寫(xiě)時(shí)將控制數(shù)據(jù)寫(xiě)入高速緩存。 控制數(shù)據(jù)可包括描述符、通知事件和來(lái)自地址轉(zhuǎn)換表和轉(zhuǎn)發(fā)表的數(shù)據(jù)。轉(zhuǎn)發(fā)表典型地包括 確定網(wǎng)絡(luò)接口設(shè)備如何處理(a)接收的網(wǎng)絡(luò)數(shù)據(jù)分組(即應(yīng)當(dāng)將所接收數(shù)據(jù)分組的數(shù)據(jù)傳 遞給哪個(gè)(哪些)接收隊(duì)列,和/或應(yīng)當(dāng)將該數(shù)據(jù)分組發(fā)送給哪些其他網(wǎng)絡(luò)設(shè)備)和(b) 用于發(fā)送的網(wǎng)絡(luò)數(shù)據(jù)分組(例如向數(shù)據(jù)分組寫(xiě)入哪些目的地地址信息,以使該數(shù)據(jù)分組被 路由至適當(dāng)?shù)亩它c(diǎn))的信息。優(yōu)選地,控制器單元所需的轉(zhuǎn)發(fā)表706和地址轉(zhuǎn)換表707存 儲(chǔ)在主機(jī)存儲(chǔ)器703處,而不是控制器單元的專用存儲(chǔ)器處。這使控制器單元能在處理器 模上占用較少的空間,并且由于控制器單元能訪問(wèn)到主機(jī)存儲(chǔ)器和高速緩存的處理器的低 延遲連接,因此不會(huì)對(duì)網(wǎng)絡(luò)接口設(shè)備的性能產(chǎn)生負(fù)面影響。一般來(lái)說(shuō),控制器單元在主機(jī)存 儲(chǔ)器中存儲(chǔ)它的狀態(tài)。作為另一種方式,可以為控制器單元提供它自己的專用的等級(jí)1高 速緩存710,在高速緩存710中存儲(chǔ)由控制器單元處理的數(shù)據(jù)流的控制數(shù)據(jù)。對(duì)于在外圍數(shù)據(jù)總線處支持的傳統(tǒng)網(wǎng)絡(luò)接口設(shè)備,數(shù)據(jù)處理系統(tǒng)的物理和虛擬域 之間的存儲(chǔ)器地址轉(zhuǎn)換通常在網(wǎng)絡(luò)接口設(shè)備和主機(jī)存儲(chǔ)器之間的數(shù)據(jù)通路上的I/O存儲(chǔ) 器管理單元(IOMMU)處執(zhí)行。由于控制器單元位于處理器處而不在外圍設(shè)備處,IOMMU(如 果存在的話)不在控制器單元和主機(jī)存儲(chǔ)器之間。因此,優(yōu)選地,控制器單元被配置為將處 理器的存儲(chǔ)器管理單元(MMU) 704用于地址轉(zhuǎn)換。存儲(chǔ)器管理單元被配置為為控制器單元 發(fā)出的從主機(jī)存儲(chǔ)器和向主機(jī)存儲(chǔ)器的讀和寫(xiě)進(jìn)行存儲(chǔ)器地址轉(zhuǎn)換。為控制器單元提供對(duì) MMU的訪問(wèn),使得控制器單元能夠處理虛擬存儲(chǔ)器地址。這意味著可信軟件域(例如內(nèi)核或 系統(tǒng)管理程序)和不可信軟件域(例如訪客操作系統(tǒng)或應(yīng)用)都可向控制器單元標(biāo)識(shí)主機(jī) 存儲(chǔ)器緩沖(例如發(fā)送隊(duì)列),因?yàn)榭刂破鲉卧饶軌蚴褂梦锢淼挠帜軌蚴褂锰摂M的存儲(chǔ) 器地址。并且,為控制器單元提供對(duì)處理器的MMU的訪問(wèn),避免了需要控制器單元管理分離 的I/O地址空間,并簡(jiǎn)化了在虛擬化系統(tǒng)和利用用戶級(jí)聯(lián)網(wǎng)的系統(tǒng)中不可信軟件域的直接 設(shè)備訪問(wèn)的實(shí)現(xiàn)。為了使MMU能代表控制器單元進(jìn)行地址轉(zhuǎn)換,控制器單元維護(hù)由控制器單元表示 的物理網(wǎng)絡(luò)接口設(shè)備的每個(gè)虛擬網(wǎng)絡(luò)接口設(shè)備(VNIC)與為其分配了 VNIC的各個(gè)虛擬化域 的地址空間之間的對(duì)應(yīng)關(guān)系。這使控制器單元能夠向MMU標(biāo)識(shí)存儲(chǔ)器讀或?qū)懪c哪個(gè)虛擬地 址空間相關(guān)。為了避免設(shè)備在主機(jī)存儲(chǔ)器的發(fā)送隊(duì)列中改寫(xiě)(overwrite)數(shù)據(jù),數(shù)據(jù)處理系統(tǒng) 通常被配置為,當(dāng)用于發(fā)送的數(shù)據(jù)已被寫(xiě)入存儲(chǔ)器的頁(yè)面時(shí)鎖定(Pin)該頁(yè)面。這預(yù)留了 存儲(chǔ)器頁(yè)面,并防止了頁(yè)面被重分配。這種鎖定對(duì)由根據(jù)本發(fā)明配置的網(wǎng)絡(luò)接口設(shè)備執(zhí)行 的發(fā)送操作來(lái)說(shuō)不是必要的。優(yōu)選地替代地,不執(zhí)行存儲(chǔ)器鎖定,并且如果地址轉(zhuǎn)換失敗 (例如因?yàn)橐严虼鎯?chǔ)設(shè)備的頁(yè)面文件寫(xiě)入存儲(chǔ)器頁(yè)面,并且該頁(yè)面被重分配),MMU被配置 為產(chǎn)生一個(gè)錯(cuò)誤,來(lái)指示在主機(jī)存儲(chǔ)器中不存在虛擬地址。因此,轉(zhuǎn)換失敗被處理器作為頁(yè) 面故障而被處理。這允許通過(guò)以下方式在數(shù)據(jù)處理系統(tǒng)中處理轉(zhuǎn)換過(guò)程中的失敗。當(dāng)控制器單元對(duì) 在主機(jī)存儲(chǔ)器處的發(fā)送隊(duì)列數(shù)據(jù)發(fā)出由MMU轉(zhuǎn)換的讀,并且該轉(zhuǎn)換失敗時(shí),MMU在控制器單元處為所述讀相關(guān)的存儲(chǔ)器頁(yè)面產(chǎn)生頁(yè)面故障錯(cuò)誤。在響應(yīng)中,控制器單元暫停與所述讀 相關(guān)的發(fā)送操作關(guān)聯(lián)的發(fā)送隊(duì)列,并向軟件實(shí)體(典型地是網(wǎng)絡(luò)接口設(shè)備的設(shè)備驅(qū)動(dòng))發(fā) 送通知。軟件使該頁(yè)面在存儲(chǔ)器中可獲得(這典型地由數(shù)據(jù)處理系統(tǒng)的特權(quán)模式軟件實(shí)體 (例如部分內(nèi)核或系統(tǒng)管理軟件)來(lái)處理)。一旦使頁(yè)面可獲得,處理發(fā)送操作的軟件解除 暫停發(fā)送隊(duì)列,并使控制器單元重新嘗試發(fā)出讀,并繼續(xù)在發(fā)送隊(duì)列處處理數(shù)據(jù)。通過(guò)減少需要鎖定的存儲(chǔ)器量,管理主機(jī)存儲(chǔ)器的特權(quán)軟件(例如內(nèi)核或系統(tǒng)管 理軟件)具有更多自由以將存儲(chǔ)器外的頁(yè)面寫(xiě)回?cái)?shù)據(jù)存儲(chǔ)(例如在非易失性存儲(chǔ)設(shè)備處的 頁(yè)面文件)中。上述機(jī)制不會(huì)給MMU引入任何附加的復(fù)雜度,并且由于不需要鎖定操作,減 少了復(fù)雜度和發(fā)送通路上的CPU開(kāi)銷。通過(guò)在在數(shù)據(jù)目標(biāo)地址轉(zhuǎn)換失敗的情況下能將在控制器單元處接收的數(shù)據(jù)寫(xiě)入 到的主機(jī)存儲(chǔ)器處維護(hù)經(jīng)鎖定的接收緩沖池,也可以在接收操作期間最小化在主機(jī)存儲(chǔ)器 處的緩沖鎖定。這消除了鎖定主機(jī)存儲(chǔ)器處接收隊(duì)列的頁(yè)面的需要。優(yōu)選地,當(dāng)控制器單 元向主機(jī)存儲(chǔ)器中的接收隊(duì)列發(fā)布所接收分組數(shù)據(jù)的寫(xiě)并且對(duì)該接收隊(duì)列的目的地址轉(zhuǎn) 換在MMU處失敗時(shí),接收的分組數(shù)據(jù)被寫(xiě)入主機(jī)存儲(chǔ)器中的被預(yù)留作為不能立即被寫(xiě)入適 當(dāng)?shù)慕邮贞?duì)列的所接收數(shù)據(jù)分組的回退(fall back)的另選緩沖中。這是重要的,因?yàn)椴?像分組發(fā)送的情況,不可能暫停接收隊(duì)列,直到地址轉(zhuǎn)換成功——任何時(shí)候都可能接收到 接收隊(duì)列的新數(shù)據(jù)分組。在將接收的數(shù)據(jù)分組寫(xiě)入另選緩沖后,控制器單元繼續(xù)處理接收 的數(shù)據(jù)分組,為了將接收的數(shù)據(jù)復(fù)制到它各自的接收隊(duì)列中而適當(dāng)時(shí)發(fā)布寫(xiě)請(qǐng)求。當(dāng)?shù)刂忿D(zhuǎn)換失敗時(shí),由控制器單元通知在數(shù)據(jù)處理系統(tǒng)中處理接收操作的軟件, 并通過(guò)重新分配由各個(gè)接收隊(duì)列使用的一個(gè)或更多個(gè)存儲(chǔ)器頁(yè)面來(lái)作出響應(yīng)。為了處理沒(méi) 有被寫(xiě)入它的接收隊(duì)列的所接收數(shù)據(jù)分組,該軟件還訪問(wèn)另選緩沖。對(duì)于數(shù)據(jù)處理系統(tǒng)的 每個(gè)軟件域可能有一組經(jīng)鎖定的另選緩沖。媒體接口的實(shí)現(xiàn)參考如上所述的圖2和3,媒體接口為控制器單元提供到網(wǎng)絡(luò)的物理接口。媒體接 口可以在諸如PCIe這樣的外圍數(shù)據(jù)總線上得以支持,或者可以借助于CPU互連直接與包括 控制器單元的處理器相耦合。由于在控制器單元和媒體接口之間的互連上采用了基于分組 的路由,單一的媒體接口優(yōu)選地可操作來(lái)支持多個(gè)控制器單元的發(fā)送和接收操作。圖8展示了根據(jù)本發(fā)明配置的媒體接口的示意圖。媒體接口 801包括被配置為 通過(guò)網(wǎng)絡(luò)803執(zhí)行數(shù)據(jù)分組的物理傳送的PHY 802,和被配置為使媒體接口能夠通過(guò)數(shù)據(jù) 總線809傳送網(wǎng)絡(luò)數(shù)據(jù)分組的封裝電路805。封裝電路805被配置為執(zhí)行(a)將通過(guò)網(wǎng)絡(luò) 接收的網(wǎng)絡(luò)數(shù)據(jù)分組封裝在適合于通過(guò)數(shù)據(jù)總線809發(fā)送給控制器單元的數(shù)據(jù)分組中,和 (b)從通過(guò)數(shù)據(jù)總線809從控制器單元接收的數(shù)據(jù)分組中提取用于通過(guò)網(wǎng)絡(luò)發(fā)送的網(wǎng)絡(luò)數(shù) 據(jù)分組。根據(jù)參考圖4的上述Eol協(xié)議進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)分組的這種封裝和提取。如果媒體接口包括用于網(wǎng)絡(luò)接口設(shè)備的管理控制器806,這是有益的。管理控制 器使網(wǎng)絡(luò)接口設(shè)備能夠借助于通過(guò)網(wǎng)絡(luò)接收的命令被遠(yuǎn)程地管理。通過(guò)在媒體接口處設(shè) 置管理控制器,管理控制器可以在處理器被斷電的數(shù)據(jù)處理系統(tǒng)的低功率狀態(tài)期間保持有 電。管理控制器可以被配置為與在父親數(shù)據(jù)處理系統(tǒng)的基板處的基板管理控制器(BMC)通 信。這使得數(shù)據(jù)處理系統(tǒng),如現(xiàn)有技術(shù)中眾所周知的那樣,能夠被通過(guò)網(wǎng)絡(luò)接收的命令遠(yuǎn)程 管理。在具有共享媒體接口的多個(gè)控制器單元的系統(tǒng)中,管理控制器806被配置為代表所有控制器單元處理管理命令。對(duì)于校驗(yàn)和的計(jì)算來(lái)說(shuō),通常將其卸載到它們能在諸如狀態(tài)機(jī)這樣的專用電路中 高效地被執(zhí)行的外圍網(wǎng)絡(luò)接口設(shè)備。媒體接口優(yōu)選地包括被配置為執(zhí)行適合于在網(wǎng)絡(luò)上使 用的網(wǎng)絡(luò)協(xié)議的校驗(yàn)和計(jì)算的電路807,例如,對(duì)于以太網(wǎng)網(wǎng)絡(luò),校驗(yàn)和可以是32位的CRC 校驗(yàn)和。通常,媒體接口執(zhí)行特定于在網(wǎng)絡(luò)上使用的網(wǎng)絡(luò)協(xié)議(例如以太網(wǎng))的功能。大 多數(shù)其它功能在控制器單元處得以完成。然而,特定的邏輯操作在靠近物理網(wǎng)絡(luò)端口 804 的媒體接口處得以完成,這通常是有益的。為了給出一些示例,對(duì)于以下協(xié)議,控制器單元 和媒體接口之間的功能組劃分是優(yōu)選地i.諸如IEEE 802. IQbb (每?jī)?yōu)先級(jí)暫停,Per-Priority Pause)這樣的鏈路層流量 控制優(yōu)選地在媒體接口處進(jìn)行;ii. IEEE 802. IQaz (增強(qiáng)型傳輸選擇,Enhanced Transmission Selection)優(yōu)選 地在控制器單元處完成;iii. IEEE 802. IQau(擁塞通知,Congestion Notification)優(yōu)選地既在控制器單 元又在媒體接口處完成。優(yōu)選地,其他功能和任何從在父親數(shù)據(jù)處理系統(tǒng)上運(yùn)行的軟件網(wǎng)絡(luò)棧卸載的協(xié)議 處理在控制器單元處進(jìn)行。這包括a.用于協(xié)議(例如IP、TCP、UDP、iSCSI和通過(guò)以太網(wǎng)的光纖信道(Fibre Channel over Ethernet, FCoE))的校驗(yàn)和卸載b.為iWARP結(jié)構(gòu)處理的TCP卸載c. iSCSI、FCoE 卸載d. TCP 分段卸載(TCP segmentation offloading, TS0),大接收卸載(large receive offload, LR0)和接收側(cè)調(diào)節(jié)(receive side scaling, RSS)e. NIC 虛擬化在一些實(shí)施例中,媒體接口不包括PHY,該P(yáng)HY替代地可由媒體接口通過(guò)接口訪問(wèn) 并控制。例如,媒體接口可與支持包括控制器單元的處理器的芯片集(例如,在1/0集線器 處)集成在一起,PHY可位于數(shù)據(jù)處理系統(tǒng)的物理網(wǎng)絡(luò)端口處。這種媒體接口如在此所述那 樣運(yùn)行,但在與媒體接口集成電路本身分離的PHY處的媒體接口的控制下執(zhí)行物理傳送。對(duì)刀片式服務(wù)器的應(yīng)用根據(jù)本發(fā)明配置的分離網(wǎng)絡(luò)接口設(shè)備,在刀片式服務(wù)器中有特殊的應(yīng)用。刀片式 服務(wù)器是具有多個(gè)刀片的模塊化計(jì)算機(jī)系統(tǒng),每個(gè)刀片支持一個(gè)或更多個(gè)處理器、存儲(chǔ)器 和用于與其他刀片和機(jī)架通信的1/0接口。通常,每個(gè)刀片的1/0接口由網(wǎng)絡(luò)控制器利用 諸如IEEE 10GBASE-KR接口這樣的高速串行數(shù)據(jù)接口在物理層提供。機(jī)架典型地支持交換 機(jī)以連接刀片和為刀片式服務(wù)器的刀片提供到更寬網(wǎng)絡(luò)的訪問(wèn)。作為另一種方式,每個(gè)刀 片的1/0接口可由諸如PCIe這樣的外圍數(shù)據(jù)總線來(lái)提供,并且刀片共享位于機(jī)架的一個(gè)或 更多個(gè)網(wǎng)絡(luò)控制器。在這種刀片式服務(wù)器中,網(wǎng)絡(luò)控制器典型地是PCIe MR-IOV設(shè)備。每個(gè)刀片本身是一個(gè)數(shù)據(jù)處理系統(tǒng)并且能支持一個(gè)或更多個(gè)操作系統(tǒng)——通常 刀片具有虛擬化結(jié)構(gòu),在該結(jié)構(gòu)中有多個(gè)由特權(quán)模式軟件域(例如系統(tǒng)管理軟件)支持的 訪客操作系統(tǒng)(例如虛擬機(jī))。因此,一個(gè)單獨(dú)的刀片式服務(wù)器可以支持多個(gè)操作系統(tǒng),每個(gè)操作系統(tǒng)反過(guò)來(lái)可以支持希望與在刀片中的其他處理器處、在其他刀片上的處理器處或 者在通過(guò)網(wǎng)絡(luò)可訪問(wèn)的其他服務(wù)器或刀片式服務(wù)器上執(zhí)行的其他應(yīng)用進(jìn)行通信的多個(gè)應(yīng)用。圖9展示了根據(jù)本發(fā)明配置的刀片式服務(wù)器的示意圖。刀片式服務(wù)器900包括多 個(gè)刀片901、914,每個(gè)刀片具有包括控制器單元702的一個(gè)或更多個(gè)處理器701。刀片還包 括處理器可訪問(wèn)的一個(gè)或更多個(gè)存儲(chǔ)器703。刀片在包括媒體接口 801的機(jī)架902處得以 支持,媒體接口 801可操作來(lái)提供到網(wǎng)絡(luò)913的訪問(wèn)。媒體接口被配置為為刀片式服務(wù)器 的多個(gè)刀片提供到網(wǎng)絡(luò)913的訪問(wèn)。換句話說(shuō),在該服務(wù)器的任何刀片上的任何處理器中 的控制器單元可被配置為借助于媒體接口來(lái)通信。機(jī)架902可以包括多個(gè)媒體接口,每個(gè) 媒體接口可例如提供到不同網(wǎng)絡(luò)或子網(wǎng)的訪問(wèn)。多處理器刀片的處理器通過(guò)諸如HyperTransport或QPI這樣的CPU互連相連接。 這使得控制器單元能借助于高速CPU互連直接地互相通信,如參考圖5a所述那樣。媒體接 口在還形成了刀片式服務(wù)器的刀片間的互連的、諸如PCIe這樣的刀片式服務(wù)器的數(shù)據(jù)總 線916處得以支持。每個(gè)刀片可包括一個(gè)或更多個(gè)I/O集線器909,以使每個(gè)處理器能通過(guò) 數(shù)據(jù)總線通信。最優(yōu)地,每個(gè)處理器支持到數(shù)據(jù)總線的一個(gè)接口,在該情況下不需要I/O集 線器909。通過(guò)向媒體接口提供標(biāo)識(shí)每個(gè)控制器單元支持的網(wǎng)絡(luò)端點(diǎn)組的一個(gè)或更多個(gè)轉(zhuǎn) 發(fā)表,媒體接口可被配置為在刀片式服務(wù)器的不同刀片上的網(wǎng)絡(luò)端點(diǎn)間進(jìn)行數(shù)據(jù)的內(nèi)部路 由。例如,如果數(shù)據(jù)總線是PCIe數(shù)據(jù)總線,媒體接口可以是被配置為支持多個(gè)PCIe根(典 型地每個(gè)刀片一個(gè))的MR-IOV PCIe設(shè)備。一旦通過(guò)PCIe總線從在第一刀片處的控制器 單元接收到在第二刀片的處理器處支持的網(wǎng)絡(luò)端點(diǎn)的Eol封裝網(wǎng)絡(luò)數(shù)據(jù)分組,媒體接口將 使用轉(zhuǎn)發(fā)表確定該網(wǎng)絡(luò)節(jié)點(diǎn)在第二刀片的控制單元處得以支持,然后通過(guò)PCIe數(shù)據(jù)總線 將該網(wǎng)絡(luò)數(shù)據(jù)分組路由給那個(gè)控制器單元。以這種方式,媒體接口可在刀片式服務(wù)器的刀 片之間以及網(wǎng)絡(luò)和刀片之間的網(wǎng)絡(luò)協(xié)議層(例如鏈路層以太網(wǎng))上處理數(shù)據(jù)分組的路由。然而,為了進(jìn)行刀片式服務(wù)器的刀片間數(shù)據(jù)的內(nèi)部路由,如果在機(jī)架處提供數(shù)據(jù) 總線交換機(jī)911而不是讓媒體接口進(jìn)行刀片間路由,這是優(yōu)選的。這意味著刀片式服務(wù)器 的刀片間的內(nèi)部數(shù)據(jù)傳輸并不一定要經(jīng)過(guò)媒體接口到數(shù)據(jù)總線的連接,如果媒體接口被配 置為進(jìn)行所有的路由,這是一個(gè)特殊的瓶頸。優(yōu)選地,數(shù)據(jù)總線是PCIe數(shù)據(jù)總線,交換機(jī) 是PCIe交換機(jī)。與在單獨(dú)的PCIe設(shè)備(例如媒體接口)處或在網(wǎng)絡(luò)913上的邊緣交換機(jī) 處的數(shù)據(jù)處理系統(tǒng)外部(例如如果刀片式服務(wù)器根據(jù)虛擬以太網(wǎng)端口聚合協(xié)議(Virtual Ethernet Port Aggregator Protocol)或VEPA被配置)執(zhí)行交換相比,PCIe交換機(jī)能夠 提供非常大的帶寬。在第一實(shí)施例中,數(shù)據(jù)總線交換機(jī)911被配置為,依賴于在數(shù)據(jù)總線分組的頭部 的地址信息(即在數(shù)據(jù)總線上使用的數(shù)據(jù)協(xié)議的層級(jí)上)在數(shù)據(jù)總線916上進(jìn)行數(shù)據(jù)分組 的路由。由于該路由由交換機(jī)在數(shù)據(jù)總線協(xié)議的層級(jí)上進(jìn)行,內(nèi)部數(shù)據(jù)傳輸?shù)难舆t得以改 善。然而,這種設(shè)置需要每個(gè)控制器單元702的每個(gè)轉(zhuǎn)發(fā)表706包括刀片式服務(wù)器的每個(gè) 控制器單元的設(shè)備地址和由每個(gè)控制器單元支持的網(wǎng)絡(luò)端點(diǎn)的地址之間的對(duì)應(yīng)關(guān)系。這使 得每個(gè)控制器單元能夠確定是否特定的網(wǎng)絡(luò)端點(diǎn)在刀片式服務(wù)器處被支持,能夠?qū)⑼ㄟ^(guò)數(shù) 據(jù)總線發(fā)送的每個(gè)數(shù)據(jù)分組相應(yīng)地尋址。
例如,假設(shè)在第一刀片的處理器處的應(yīng)用有數(shù)據(jù)要發(fā)送給在第二刀片的處理器處 的應(yīng)用,刀片和媒體接口由PCIe數(shù)據(jù)總線互連并提供到以太網(wǎng)網(wǎng)絡(luò)的接口。第一處理器的 控制器單元形成發(fā)送給在第二刀片的處理器處的應(yīng)用的端點(diǎn)的以太網(wǎng)數(shù)據(jù)分組。在形成封 裝以太網(wǎng)數(shù)據(jù)分組的一個(gè)或更多個(gè)Eol PCIe數(shù)據(jù)分組時(shí),控制器單元將在它的轉(zhuǎn)發(fā)表中查 找在第二刀片的處理器處的控制器單元的設(shè)備地址,并將該設(shè)備地址插入PCIe數(shù)據(jù)分組 的路由信息中。一旦到達(dá)PCIe交換機(jī),該交換機(jī)識(shí)別目標(biāo)設(shè)備(在第二刀片的處理器處的 控制器單元)并將該P(yáng)CIe數(shù)據(jù)分組相應(yīng)地路由。注意,如果網(wǎng)絡(luò)端點(diǎn)未在刀片式服務(wù)器處 得以支持(即它是遠(yuǎn)程網(wǎng)絡(luò)地址),控制器單元將使用媒體接口的設(shè)備地址。在優(yōu)選的第二實(shí)施例中,數(shù)據(jù)總線交換機(jī)911被配置為在網(wǎng)絡(luò)協(xié)議層級(jí)(例如鏈 路層以太網(wǎng))上在刀片式服務(wù)器的刀片間處理數(shù)據(jù)分組的路由。因此,數(shù)據(jù)總線交換機(jī)被 配置為解析封裝在該交換機(jī)處接收的EolPCIe數(shù)據(jù)分組中的網(wǎng)絡(luò)數(shù)據(jù)分組的至少一些頭 部信息。只需要該交換機(jī)支持轉(zhuǎn)發(fā)表,該轉(zhuǎn)發(fā)表包括在刀片式服務(wù)器的每個(gè)控制單元的設(shè) 備地址和由每個(gè)控制器單元支持的網(wǎng)絡(luò)端點(diǎn)的地址之間的對(duì)應(yīng)關(guān)系。如果在刀片內(nèi)將在控 制器單元間路由數(shù)據(jù)而不經(jīng)過(guò)交換機(jī),每個(gè)控制器單元僅需要支持用于在它的刀片處支持 的網(wǎng)絡(luò)端點(diǎn)的轉(zhuǎn)發(fā)表。這減小了每個(gè)控制器單元所需的轉(zhuǎn)發(fā)表大小,并且簡(jiǎn)化了刀片式服 務(wù)器的控制平面。例如,假設(shè)在第一刀片的處理器處的應(yīng)用有數(shù)據(jù)要發(fā)送給在第二刀片的處理器處 的應(yīng)用,刀片和媒體接口由PCIe數(shù)據(jù)總線互連,并且提供到以太網(wǎng)網(wǎng)絡(luò)的接口。第一處理 器的控制器單元形成發(fā)送給在第二刀片的處理器處的應(yīng)用的端點(diǎn)的以太網(wǎng)數(shù)據(jù)分組。在形 成封裝以太網(wǎng)數(shù)據(jù)分組的一個(gè)或更多個(gè)Eol PCIe數(shù)據(jù)分組時(shí),控制器單元識(shí)別在第一刀片 處不支持?jǐn)?shù)據(jù)分組將被發(fā)送至的以太網(wǎng)地址,結(jié)果,它將把PCIe交換機(jī)的設(shè)備地址插入到 PCIe數(shù)據(jù)分組的路由信息中。一旦到達(dá)PCIe交換機(jī),該交換機(jī)解析該P(yáng)CIe數(shù)據(jù)分組,并從 包括在其中的網(wǎng)絡(luò)數(shù)據(jù)分組中識(shí)別目標(biāo)以太網(wǎng)地址。該交換機(jī)然后在它的轉(zhuǎn)發(fā)表中查找相 應(yīng)于該目標(biāo)以太網(wǎng)地址(即在支持該以太網(wǎng)地址的第二刀片的處理器處的控制器單元設(shè) 備)的設(shè)備地址,并在將該數(shù)據(jù)分組推送到適當(dāng)?shù)腜CIe數(shù)據(jù)總線上前,相應(yīng)地更新該P(yáng)CIe 數(shù)據(jù)分組頭部。第二實(shí)施例也改善了多播流量的性能,因?yàn)檫@種流量?jī)H需要從控制器單元或媒體 接口傳輸給數(shù)據(jù)總線交換機(jī)一次交換機(jī)將把該多播流量發(fā)送到每個(gè)適當(dāng)?shù)亩它c(diǎn)上。在第 一實(shí)施例中,控制器單元必須分別將多播流量發(fā)送給在刀片式服務(wù)器中的每個(gè)接收者,因 為在交換機(jī)處的路由在數(shù)據(jù)總線層進(jìn)行。如果媒體接口是PCIe設(shè)備,并且互連刀片的數(shù)據(jù)總線是PCIe數(shù)據(jù)總線,這是有益 的,因?yàn)榕c傳統(tǒng)的刀片式服務(wù)器結(jié)構(gòu)相比這普遍地減少了所需的PHY數(shù)量,從而降低了每 個(gè)刀片的功率需求。傳統(tǒng)的刀片式服務(wù)器通常在每個(gè)刀片處具有到底板(backplane)的串 行I/O接口(PHY#1),每個(gè)I/O接口由PCIe總線(PHY#2)在該刀片處被支持。通過(guò)將PCIe 數(shù)據(jù)總線用作刀片式服務(wù)器的底板,不再需要PHY#1。最優(yōu)地,媒體接口是支持在刀片式服務(wù)器處的每個(gè)控制器單元的通信的MR-IOV PCIe設(shè)備。換句話說(shuō),MR-IOV媒體接口支持用于刀片式服務(wù)器的每個(gè)刀片的至少一個(gè)物 理功能(physical function, PF)或虛擬功能(virtual function, VF)。如果為每個(gè)刀片 分配一個(gè)PF,并且為刀片的每個(gè)控制器單元分配一個(gè)屬于那個(gè)刀片的PF的VF,這是最直接的。然而,正如對(duì)外圍設(shè)備領(lǐng)域的技術(shù)人員而言將顯而易見(jiàn)的那樣,可使用其他設(shè)置。注意,交換機(jī)或網(wǎng)格拓?fù)淇杀挥糜诘镀g的連接。在此描述的實(shí)際的刀片式服務(wù)器結(jié)構(gòu)與虛擬以太網(wǎng)橋(VirtualEthernet Bridge, VEB)或虛擬以太網(wǎng)端口聚合(VEPA)協(xié)議兼容。在VEB的情況下,在刀片式服務(wù)器 的刀片處的網(wǎng)絡(luò)端點(diǎn)間的數(shù)據(jù)傳輸如上所述那樣運(yùn)行。在VEPA的情況下,在端點(diǎn)(甚至是在同一處理器處支持的那些)之間的所有交換都在網(wǎng)絡(luò)913的邊緣交換機(jī)處進(jìn)行。如果強(qiáng) 制采用VEPA協(xié)議,則控制器單元、數(shù)據(jù)總線交換機(jī)和媒體接口被配置為通過(guò)媒體接口將所 有網(wǎng)絡(luò)數(shù)據(jù)分組傳遞給相關(guān)的邊緣交換機(jī)。數(shù)據(jù)總線交換機(jī)可以形成或不形成與媒體接口相同的集成電路的一部分。參考刀片系統(tǒng)在此描述的實(shí)施例,可等同地應(yīng)用于其他雖然沒(méi)有物理刀片、但仍 然可以被認(rèn)為是包括了多個(gè)數(shù)據(jù)處理系統(tǒng)的多處理器系統(tǒng)。注意,在在此描述的任何實(shí)施例中,媒體接口可支持一個(gè)或更多個(gè)物理網(wǎng)絡(luò)端口。據(jù)此,申請(qǐng)人分別公開(kāi)了每個(gè)在此描述的單獨(dú)特征和兩個(gè)或多個(gè)這種特征的任意 組合,到達(dá)了根據(jù)本領(lǐng)域技術(shù)人公知常識(shí),基于作為整體的本說(shuō)明書(shū)這種特征或組合能夠 實(shí)現(xiàn)的程度,無(wú)論這種特征或特征的組合是否解決了在此公開(kāi)的任何問(wèn)題,而不限制權(quán)利 要求的范圍。申請(qǐng)人指出本發(fā)明的方面可包括任意這種特征或特征的組合。鑒于前述的描 述,對(duì)于本領(lǐng)域技術(shù)人員來(lái)說(shuō)在本發(fā)明的范圍內(nèi)作出各種變型將是必然的。
權(quán)利要求
一種包括中央處理器單元和分離網(wǎng)絡(luò)接口功能組的數(shù)據(jù)處理系統(tǒng),該分離網(wǎng)絡(luò)接口功能組包括第一子單元,該第一子單元與所述中央處理單元設(shè)置在一起,并且被配置為,通過(guò)為各網(wǎng)絡(luò)數(shù)據(jù)分組生成數(shù)據(jù)鏈路層信息,至少部分地形成用于發(fā)送給網(wǎng)絡(luò)端點(diǎn)的一系列網(wǎng)絡(luò)數(shù)據(jù)分組;以及第二子單元,該第二子單元在所述中央處理單元外部,并通過(guò)互連與該中央處理單元相耦合,該第二子單元被配置為通過(guò)網(wǎng)絡(luò)物理地傳送所述一系列網(wǎng)絡(luò)數(shù)據(jù)分組。
2.如權(quán)利要求1所述的數(shù)據(jù)處理系統(tǒng),其中,所述第一子單元被配置為根據(jù)在所述互 連上使用的數(shù)據(jù)協(xié)議,將所述一系列網(wǎng)絡(luò)數(shù)據(jù)分組中的各個(gè)網(wǎng)絡(luò)數(shù)據(jù)分組封裝在一個(gè)或更 多個(gè)互連數(shù)據(jù)分組中。
3.如權(quán)利要求1或2所述的數(shù)據(jù)處理系統(tǒng),其中,所述第一子單元被配置為向所述第 二子單元發(fā)送所述互連數(shù)據(jù)分組,以使所述第二子單元通過(guò)所述網(wǎng)絡(luò)傳送各個(gè)網(wǎng)絡(luò)數(shù)據(jù)分 組。
4.如任一項(xiàng)前述權(quán)利要求所述的數(shù)據(jù)處理系統(tǒng),其中,所述第一子單元被配置為部分 地形成所述一系列網(wǎng)絡(luò)數(shù)據(jù)分組,并且所述第二子單元被配置為在所述網(wǎng)絡(luò)上使用的所述 網(wǎng)絡(luò)協(xié)議的數(shù)據(jù)鏈路層完成所述一系列網(wǎng)絡(luò)數(shù)據(jù)分組中各個(gè)網(wǎng)絡(luò)數(shù)據(jù)分組的形成。
5.如權(quán)利要求4所述的數(shù)據(jù)處理系統(tǒng),其中,所述第二子單元被配置為通過(guò)針對(duì)各個(gè) 網(wǎng)絡(luò)數(shù)據(jù)分組計(jì)算一個(gè)或更多個(gè)校驗(yàn)和,在所述數(shù)據(jù)鏈路層完成所述一系列網(wǎng)絡(luò)數(shù)據(jù)分組 中各個(gè)網(wǎng)絡(luò)數(shù)據(jù)分組的形成。
6.如任一項(xiàng)前述權(quán)利要求所述的數(shù)據(jù)處理系統(tǒng),其中,所述第二子單元被配置為根據(jù) 在所述網(wǎng)絡(luò)上使用的所述網(wǎng)絡(luò)協(xié)議的物理層需求,通過(guò)所述網(wǎng)絡(luò)物理傳送完成后的所述一 系列網(wǎng)絡(luò)數(shù)據(jù)分組。
7.如任一項(xiàng)前述權(quán)利要求所述的數(shù)據(jù)處理系統(tǒng),該數(shù)據(jù)處理系統(tǒng)還包括與所述中央處 理單元耦合的存儲(chǔ)器和/或高速緩存,在所述中央處理單元處,存儲(chǔ)器管理單元被配置為 為所述中央處理單元和所述第一子單元提供到所述存儲(chǔ)器和/或高速緩存的訪問(wèn)。
8.如權(quán)利要求7所述的數(shù)據(jù)處理系統(tǒng),其中,所述存儲(chǔ)器和/或高速緩存被配置為保存 包括用于通過(guò)所述網(wǎng)絡(luò)發(fā)送的數(shù)據(jù)在內(nèi)的發(fā)送隊(duì)列,并且所述第一子單元被配置為借助于 對(duì)所述存儲(chǔ)器管理單元的讀請(qǐng)求訪問(wèn)所述發(fā)送隊(duì)列,并使用用于通過(guò)所述網(wǎng)絡(luò)發(fā)送的數(shù)據(jù) 來(lái)形成所述一系列網(wǎng)絡(luò)數(shù)據(jù)分組。
9.如任一項(xiàng)前述權(quán)利要求所述的數(shù)據(jù)處理系統(tǒng),其中,所述第二子單元能夠操作以通 過(guò)所述網(wǎng)絡(luò)接收一系列網(wǎng)絡(luò)數(shù)據(jù)分組,并且所述第一子單元被配置為在所述數(shù)據(jù)鏈路層至 少部分地處理各個(gè)接收到的網(wǎng)絡(luò)數(shù)據(jù)分組,以便提取在該網(wǎng)絡(luò)數(shù)據(jù)分組中攜帶的數(shù)據(jù)。
10.如從屬于權(quán)利要求7的權(quán)利要求9所述的數(shù)據(jù)處理系統(tǒng),其中,所述第一子單元被 配置為在所述存儲(chǔ)器處存儲(chǔ)轉(zhuǎn)發(fā)表,該轉(zhuǎn)發(fā)表包括信息,該信息所述第一子單元能夠針對(duì) 各個(gè)接收到的網(wǎng)絡(luò)數(shù)據(jù)分組,依賴于該接收到的網(wǎng)絡(luò)數(shù)據(jù)分組的內(nèi)容將提取的數(shù)據(jù)路由至 所述存儲(chǔ)器和/或其他網(wǎng)絡(luò)設(shè)備中的一個(gè)或更多個(gè)接收隊(duì)列。
11.如權(quán)利要求9或10所述的數(shù)據(jù)處理系統(tǒng),其中,所述第二子單元被配置為根據(jù)在接 近所述第二子單元的所述互連的數(shù)據(jù)鏈路上使用的數(shù)據(jù)協(xié)議,將各個(gè)接收到的網(wǎng)絡(luò)數(shù)據(jù)分 組封裝在一個(gè)或更多個(gè)互連數(shù)據(jù)分組中。
12.如權(quán)利要求9至11中的任一項(xiàng)所述的數(shù)據(jù)處理系統(tǒng),其中,所述第二子單元被配 置為向所述第一子單元發(fā)送所述互連數(shù)據(jù)分組,以便使所述第一子單元在所述數(shù)據(jù)鏈路層 至少部分地處理各個(gè)接收到的網(wǎng)絡(luò)數(shù)據(jù)分組,并提取在接收到的網(wǎng)絡(luò)數(shù)據(jù)分組內(nèi)攜帶的數(shù) 據(jù)。
13.一種數(shù)據(jù)處理系統(tǒng),該數(shù)據(jù)處理系統(tǒng)包括中央處理單元,該中央處理單元包括網(wǎng)絡(luò)接口控制器,該網(wǎng)絡(luò)接口控制器被配置為,根 據(jù)網(wǎng)絡(luò)協(xié)議,通過(guò)在數(shù)據(jù)鏈路層將用于通過(guò)網(wǎng)絡(luò)發(fā)送的數(shù)據(jù)至少部分地形成幀,來(lái)形成中 間數(shù)據(jù)單元,每個(gè)中間數(shù)據(jù)單元包括用于傳輸?shù)臄?shù)據(jù)的目的地網(wǎng)絡(luò)地址;存儲(chǔ)器,該存儲(chǔ)器與所述中央處理單元相耦合;媒體接口,該媒體接口與所述網(wǎng)絡(luò)相連接,并且被配置為通過(guò)所述網(wǎng)絡(luò)發(fā)送完全形成 的數(shù)據(jù)分組;以及第一互連,該第一互連在所述中央處理單元和所述媒體接口之間延伸,該互連由一條 或更多條數(shù)據(jù)鏈路形成;其中,所述網(wǎng)絡(luò)接口控制器被配置為,將所述網(wǎng)絡(luò)協(xié)議的中間數(shù)據(jù)單元封裝在通過(guò)所 述第一互連發(fā)送的互連數(shù)據(jù)分組中,并且所述媒體接口被配置為,從通過(guò)所述第一互連接 收的互連數(shù)據(jù)分組中提取中間數(shù)據(jù)單元,并在物理層處理該中間數(shù)據(jù)單元,以便根據(jù)所述 網(wǎng)絡(luò)協(xié)議完成數(shù)據(jù)分組的形成。
14.如權(quán)利要求13所述的數(shù)據(jù)處理系統(tǒng),其中,所述網(wǎng)絡(luò)接口控制器被配置為,根據(jù)在 接近所述中央處理單元的所述第一互連的數(shù)據(jù)鏈路上使用的數(shù)據(jù)協(xié)議,將每個(gè)中間數(shù)據(jù)單 元封裝在一個(gè)或更多個(gè)互連數(shù)據(jù)分組中。
15.如權(quán)利要求13至14所述的數(shù)據(jù)處理系統(tǒng),其中,所述網(wǎng)絡(luò)接口控制器被配置為,使 一個(gè)或更多個(gè)互連數(shù)據(jù)分組被發(fā)送給所述媒體接口,以便使所述媒體接口通過(guò)所述網(wǎng)絡(luò)發(fā) 送完整形成的網(wǎng)絡(luò)數(shù)據(jù)分組。
16.如權(quán)利要求13至15中的任一項(xiàng)所述的數(shù)據(jù)處理系統(tǒng),其中,所述網(wǎng)絡(luò)接口控制器 被配置為,將封裝頭部寫(xiě)入每個(gè)互連數(shù)據(jù)分組,該封裝頭部包括使所述媒體接口能根據(jù)互 連數(shù)據(jù)分組來(lái)重組各中間數(shù)據(jù)單元的信息。
17.如權(quán)利要求13至16中的任一項(xiàng)所述的數(shù)據(jù)處理系統(tǒng),其中,所述第一互連包括以 下兩條數(shù)據(jù)鏈路第一數(shù)據(jù)鏈路,該第一數(shù)據(jù)鏈路在所述中央處理單元和轉(zhuǎn)換單元之間延伸;以及第二數(shù)據(jù)鏈路,該第二數(shù)據(jù)鏈路在所述轉(zhuǎn)換單元和所述媒體接口之間延伸;所述轉(zhuǎn)換單元被配置為,將根據(jù)在所述第一數(shù)據(jù)鏈路上使用的數(shù)據(jù)協(xié)議而形成幀的互 連數(shù)據(jù)分組轉(zhuǎn)換為根據(jù)在所述第二數(shù)據(jù)鏈路上使用的數(shù)據(jù)協(xié)議而形成幀的互連數(shù)據(jù)分組, 和將根據(jù)在所述第二數(shù)據(jù)鏈路上使用的數(shù)據(jù)協(xié)議而形成幀的互連數(shù)據(jù)分組轉(zhuǎn)換為根據(jù)在 所述第一數(shù)據(jù)鏈路上使用的數(shù)據(jù)協(xié)議而形成幀的互連數(shù)據(jù)分組。
18.如權(quán)利要求17所述的數(shù)據(jù)處理系統(tǒng),其中,所述轉(zhuǎn)換單元被配置為通過(guò)以下操作 來(lái)轉(zhuǎn)換互連數(shù)據(jù)分組移除在所述第一數(shù)據(jù)鏈路上使用的數(shù)據(jù)協(xié)議的幀形成數(shù)據(jù),并根據(jù)在所述第二數(shù)據(jù)鏈 路上使用的數(shù)據(jù)協(xié)議來(lái)對(duì)所述一個(gè)或更多個(gè)互連數(shù)據(jù)分組重新形成幀,或者根據(jù)在所述第二數(shù)據(jù)鏈路上使用的數(shù)據(jù)協(xié)議,增加關(guān)于所述一個(gè)或更多個(gè)互連數(shù)據(jù)分組的附加幀形成層。
19.如權(quán)利要求17或18所述的數(shù)據(jù)處理系統(tǒng),其中,所述第一數(shù)據(jù)鏈路是CPU互連,并 且所述第二數(shù)據(jù)鏈路是外圍數(shù)據(jù)總線。
20.如權(quán)利要求19所述的數(shù)據(jù)處理系統(tǒng),其中,所述媒體接口在所述外圍數(shù)據(jù)總線處 被支持。
21.如權(quán)利要求19或20所述的數(shù)據(jù)處理系統(tǒng),其中,所述CPU互連是HyperTransport 互連、QuickPath互連和PCIe互連中的一個(gè)。
22.如權(quán)利要求19至21中的任一項(xiàng)所述的數(shù)據(jù)處理系統(tǒng),其中,所述外圍數(shù)據(jù)總線是 PCIe0
23.如權(quán)利要求13至22中的任一項(xiàng)所述的數(shù)據(jù)處理系統(tǒng),其中,所述中央處理單元進(jìn) 一步包括存儲(chǔ)器管理單元,該存儲(chǔ)器管理單元被配置為為所述中央處理單元和所述網(wǎng)絡(luò)接 口控制器提供到所述存儲(chǔ)器的訪問(wèn)。
24.如權(quán)利要求13至23中的任一項(xiàng)所述的數(shù)據(jù)處理系統(tǒng),其中,所述網(wǎng)絡(luò)接口控制器 被配置為,如果目的地網(wǎng)絡(luò)地址屬于在所述中央處理單元處支持的進(jìn)程,則直接將用于發(fā) 送的數(shù)據(jù)寫(xiě)入所述存儲(chǔ)器處的接收隊(duì)列,而不將該數(shù)據(jù)封裝在一個(gè)或更多個(gè)互連數(shù)據(jù)分組 中,所述接收隊(duì)列對(duì)應(yīng)于所述目的地網(wǎng)絡(luò)地址。
25.如權(quán)利要求24所述的數(shù)據(jù)處理系統(tǒng),其中,所述網(wǎng)絡(luò)接口控制器進(jìn)一步被配置為 不根據(jù)所述網(wǎng)絡(luò)協(xié)議在所述數(shù)據(jù)鏈路層對(duì)所述數(shù)據(jù)形成幀。
26.如權(quán)利要求23至25中的任一項(xiàng)所述的數(shù)據(jù)處理系統(tǒng),其中,所述存儲(chǔ)器被配置為 保存包括用于通過(guò)所述網(wǎng)絡(luò)發(fā)送的數(shù)據(jù)的一個(gè)或更多個(gè)發(fā)送隊(duì)列,并且所述網(wǎng)絡(luò)接口控制 器能夠操作以借助于對(duì)所述存儲(chǔ)器管理單元的讀請(qǐng)求,在用于發(fā)送的數(shù)據(jù)各自的發(fā)送隊(duì)列 處訪問(wèn)所述數(shù)據(jù)。
27.如權(quán)利要求23至26中的任一項(xiàng)所述的數(shù)據(jù)處理系統(tǒng),其中,所述存儲(chǔ)器管理單元 包括高速緩存,該高速緩存能夠操作來(lái)存儲(chǔ)在所述存儲(chǔ)器處保存的至少一些數(shù)據(jù)的副本, 并且該高速緩存能由所述中央處理單元和所述網(wǎng)絡(luò)接口控制器兩者訪問(wèn)。
28.如權(quán)利要求27所述的數(shù)據(jù)處理系統(tǒng),其中,所述高速緩存被配置為存儲(chǔ)由所述中 央處理單元最近在所述存儲(chǔ)器處訪問(wèn)的數(shù)據(jù)。
29.如權(quán)利要求27或28所述的數(shù)據(jù)處理系統(tǒng),其中,所述網(wǎng)絡(luò)接口控制器被配置為對(duì) 于能在所述存儲(chǔ)器和所述高速緩存處獲得的任何用于發(fā)送的數(shù)據(jù),優(yōu)先于從所述存儲(chǔ)器讀 取該用于發(fā)送的數(shù)據(jù)而從所述高速緩存讀取該數(shù)據(jù)。
30.如權(quán)利要求27或28所述的數(shù)據(jù)處理系統(tǒng),其中,所述網(wǎng)絡(luò)接口控制器被配置為,對(duì) 于不能在所述高速緩存處獲得的用于發(fā)送的數(shù)據(jù),從所述存儲(chǔ)器讀取所述數(shù)據(jù)并且不向所 述高速緩存寫(xiě)入該數(shù)據(jù)。
31.如權(quán)利要求29所述的數(shù)據(jù)處理系統(tǒng),其中,所述網(wǎng)絡(luò)接口控制器被配置為,一旦從 所述高速緩存讀取了用于發(fā)送的數(shù)據(jù),則使所述高速緩存的相應(yīng)的線無(wú)效,以使在所述中 央處理單元處執(zhí)行的其他進(jìn)程能改寫(xiě)這些線。
32.如權(quán)利要求13至31中的任一項(xiàng)所述的數(shù)據(jù)處理系統(tǒng),其中所述媒體接口能操作來(lái)通過(guò)所述網(wǎng)絡(luò)接收網(wǎng)絡(luò)數(shù)據(jù)分組,并將接收到的網(wǎng)絡(luò)數(shù)據(jù)分組 封裝在用于通過(guò)所述第一互連發(fā)送的互連數(shù)據(jù)分組中;并且所述網(wǎng)絡(luò)接口控制器被配置為,從互連數(shù)據(jù)分組中提取接收到的網(wǎng)絡(luò)數(shù)據(jù)分組,并且 根據(jù)網(wǎng)絡(luò)協(xié)議至少部分地在數(shù)據(jù)鏈路層處理各個(gè)接收到的網(wǎng)絡(luò)數(shù)據(jù)分組,以便提取在各個(gè) 接收到的網(wǎng)絡(luò)數(shù)據(jù)分組中攜帶的數(shù)據(jù)。
33.如權(quán)利要求32所述的數(shù)據(jù)處理系統(tǒng),其中,所述媒體接口被配置為,根據(jù)在接近所 述媒體接口的所述第一互連的數(shù)據(jù)鏈路上使用的數(shù)據(jù)協(xié)議,將各個(gè)接收到的網(wǎng)絡(luò)數(shù)據(jù)分組 封裝在一個(gè)或更多個(gè)互連數(shù)據(jù)分組中。
34.如權(quán)利要求32或33所述的數(shù)據(jù)處理系統(tǒng),其中,所述媒體接口被配置為,將所述互 連數(shù)據(jù)分組發(fā)送給所述網(wǎng)絡(luò)接口控制器,以使所述網(wǎng)絡(luò)接口控制器在所述數(shù)據(jù)鏈路層至少 部分地處理各個(gè)接收到的網(wǎng)絡(luò)數(shù)據(jù)分組,并將攜帶在各個(gè)接收到的網(wǎng)絡(luò)數(shù)據(jù)分組中的數(shù)據(jù) 寫(xiě)入在所述存儲(chǔ)器處的至少一個(gè)接收隊(duì)列,該至少一個(gè)接收隊(duì)列由在接收到的網(wǎng)絡(luò)數(shù)據(jù)分 組內(nèi)包括的目的地網(wǎng)絡(luò)地址標(biāo)識(shí)。
35.如從屬于權(quán)利要求27的權(quán)利要求34所述的數(shù)據(jù)處理系統(tǒng),其中,所述網(wǎng)絡(luò)接口控 制器被配置為,一旦將攜帶在接收到的網(wǎng)絡(luò)數(shù)據(jù)分組內(nèi)的數(shù)據(jù)寫(xiě)入在所述存儲(chǔ)器處的接收 隊(duì)列,就將該數(shù)據(jù)寫(xiě)入所述高速緩存。
36.如權(quán)利要求32至35中的任一項(xiàng)所述的數(shù)據(jù)處理系統(tǒng),其中,所述網(wǎng)絡(luò)接口控制器 被配置為,在所述存儲(chǔ)器處存儲(chǔ)轉(zhuǎn)發(fā)表,該轉(zhuǎn)發(fā)表包括信息,該信息使得所述網(wǎng)絡(luò)接口控制 器能夠針對(duì)各個(gè)接收到的網(wǎng)絡(luò)數(shù)據(jù)分組,根據(jù)所述目的地網(wǎng)絡(luò)地址選擇所接收到的網(wǎng)絡(luò)數(shù) 據(jù)分組的數(shù)據(jù)要被路由到的所述存儲(chǔ)器和/或其他網(wǎng)絡(luò)設(shè)備處的一個(gè)或更多個(gè)接收隊(duì)列。
37.如權(quán)利要求32至36中的任一項(xiàng)所述的數(shù)據(jù)處理系統(tǒng),其中,所述媒體接口被配置 為,將封裝頭部寫(xiě)入每個(gè)互連數(shù)據(jù)分組,該封裝頭部包括使所述網(wǎng)絡(luò)接口控制器能根據(jù)互 連數(shù)據(jù)分組重組各個(gè)網(wǎng)絡(luò)數(shù)據(jù)分組的信息。
38.如從屬于權(quán)利要求23的權(quán)利要求24至37中的任一項(xiàng)所述的數(shù)據(jù)處理系統(tǒng),其中, 所述存儲(chǔ)器管理單元被配置為,一旦從所述中央處理單元或所述網(wǎng)絡(luò)接口控制器接收到訪 問(wèn)虛擬存儲(chǔ)器地址的請(qǐng)求,就將該虛擬存儲(chǔ)器地址轉(zhuǎn)換為所述數(shù)據(jù)處理系統(tǒng)的物理存儲(chǔ)器 地址并訪問(wèn)該物理存儲(chǔ)器地址。
39.如權(quán)利要求38所述的數(shù)據(jù)處理系統(tǒng),其中,所述存儲(chǔ)器管理單元被配置為,如果對(duì) 代表所述網(wǎng)絡(luò)接口控制器的虛擬存儲(chǔ)器地址的轉(zhuǎn)換失敗,則向所述網(wǎng)絡(luò)接口控制器發(fā)起頁(yè) 面故障。
40.如權(quán)利要求39所述的數(shù)據(jù)處理系統(tǒng),其中,所述網(wǎng)絡(luò)接口控制器被配置為響應(yīng)于 頁(yè)面故障執(zhí)行以下操作如果虛擬存儲(chǔ)器地址與發(fā)送隊(duì)列相關(guān),則使對(duì)應(yīng)于該虛擬存儲(chǔ)器地址的發(fā)送隊(duì)列被暫 停,直到各個(gè)頁(yè)面被重新寫(xiě)入所述存儲(chǔ)器;或者如果虛擬存儲(chǔ)器地址與接收隊(duì)列相關(guān),則將與所發(fā)出的請(qǐng)求有關(guān)的、接收到的網(wǎng)絡(luò)數(shù) 據(jù)分組的數(shù)據(jù)寫(xiě)入預(yù)留緩沖,以供所述數(shù)據(jù)處理系統(tǒng)的協(xié)議處理實(shí)體來(lái)獲取。
41.如權(quán)利要求13至40中的任一項(xiàng)所述的數(shù)據(jù)處理系統(tǒng),該數(shù)據(jù)處理系統(tǒng)進(jìn)一步包括第二中央處理單元,該第二中央處理單元包括第二網(wǎng)絡(luò)接口控制器,該第二網(wǎng)絡(luò)接口 控制器也被配置為,根據(jù)網(wǎng)絡(luò)協(xié)議通過(guò)在數(shù)據(jù)鏈路層至少部分地對(duì)用于發(fā)送的數(shù)據(jù)的形成 幀,來(lái)形成中間數(shù)據(jù)單元,每個(gè)中間數(shù)據(jù)單元包括用于發(fā)送的數(shù)據(jù)的目的地網(wǎng)絡(luò)地址;以及第二互連,該第二互連在所述第二中央處理單元和所述媒體接口之間延伸,該第二互 連由一條或更多條數(shù)據(jù)鏈路形成;其中,所述第二網(wǎng)絡(luò)接口控制器被配置為,將網(wǎng)絡(luò)協(xié)議的中間數(shù)據(jù)單元封裝在用于通 過(guò)所述第二互連發(fā)送的互連數(shù)據(jù)分組中,并且所述媒體接口被配置為,從通過(guò)所述互連接 收的互連數(shù)據(jù)分組提取中間數(shù)據(jù)單元,并且在物理層處理該中間數(shù)據(jù)單元,以便根據(jù)網(wǎng)絡(luò) 協(xié)議完成數(shù)據(jù)分組的形成。
42.如權(quán)利要求41所述的數(shù)據(jù)處理系統(tǒng),其中,所述第二互連的一個(gè)或更多個(gè)數(shù)據(jù)鏈 路與所述第一互連的一個(gè)或更多個(gè)數(shù)據(jù)鏈路共享。
43.如權(quán)利要求41或42所述的數(shù)據(jù)處理系統(tǒng),其中,所述網(wǎng)絡(luò)接口控制器被配置為,如 果在所述中央處理單元處形成的中間數(shù)據(jù)單元的目的地網(wǎng)絡(luò)地址是在所述第二中央處理 單元處支持的網(wǎng)絡(luò)地址,則使包括中間數(shù)據(jù)單元的封裝后的互連數(shù)據(jù)分組被發(fā)送給所述第 二網(wǎng)絡(luò)接口控制器。
44.如權(quán)利要求41至43中的任一項(xiàng)所述的數(shù)據(jù)處理系統(tǒng),其中,所述媒體接口包括管 理控制器,該管理控制器被配置為處理接收到的用于網(wǎng)絡(luò)接口設(shè)備的管理命令,該網(wǎng)絡(luò)接 口設(shè)備(a)由所述媒體接口和所述網(wǎng)絡(luò)接口控制器形成和(b)由所述媒體接口和所述第二 網(wǎng)絡(luò)接口控制器形成。
45.如權(quán)利要求13至44中的任一項(xiàng)所述的數(shù)據(jù)處理系統(tǒng),其中,所述數(shù)據(jù)處理系統(tǒng)是 包括一個(gè)或更多個(gè)在機(jī)架處支持的刀片的刀片式服務(wù)器,每個(gè)刀片具有一個(gè)或更多個(gè)中央 處理單元,該一個(gè)或更多個(gè)中央處理單元中的至少一個(gè)包括網(wǎng)絡(luò)接口控制器,并且所述媒 體接口位于刀片式服務(wù)器的機(jī)架處。
46.如權(quán)利要求45所述的數(shù)據(jù)處理系統(tǒng),其中,所述中央處理單元和所述第二中央處 理單元位于刀片式服務(wù)器的同一刀片處。
47.如權(quán)利要求46所述的數(shù)據(jù)處理系統(tǒng),其中,所述中央處理單元和所述第二中央處 理單元通過(guò)包括所述第一互連的數(shù)據(jù)鏈路和所述第二互連的數(shù)據(jù)鏈路在內(nèi)的CPU互連能 夠互相訪問(wèn)。
48.如權(quán)利要求45所述的數(shù)據(jù)處理系統(tǒng),其中,所述中央處理單元和所述第二中央處 理單元位于刀片式服務(wù)器的不同的刀片處。
49.如權(quán)利要求45至48中的任一項(xiàng)所述的數(shù)據(jù)處理系統(tǒng),其中,所述網(wǎng)絡(luò)接口控制器 被配置為,如果在所述中央處理單元處形成的中間數(shù)據(jù)單元的目的地網(wǎng)絡(luò)地址是屬于在所 述第二中央處理單元處支持的進(jìn)程的網(wǎng)絡(luò)地址,則通過(guò)所述CPU互連、不經(jīng)由所述媒體接 口將封裝中間數(shù)據(jù)單元的互連數(shù)據(jù)分組發(fā)送給所述第二網(wǎng)絡(luò)接口控制器。
50.如權(quán)利要求45至49中的任一項(xiàng)所述的數(shù)據(jù)處理系統(tǒng),其中,所述媒體接口在外圍 數(shù)據(jù)總線處被支持,并且所述刀片式服務(wù)器的刀片被配置為通過(guò)所述外圍數(shù)據(jù)總線互相通信。
51.如權(quán)利要求50所述的數(shù)據(jù)處理系統(tǒng),該數(shù)據(jù)處理系統(tǒng)進(jìn)一步包括在所述刀片式服 務(wù)器的機(jī)架處的交換機(jī),該交換機(jī)被配置為在所述刀片式服務(wù)器的刀片間路由互連數(shù)據(jù)分組。
52.如權(quán)利要求51所述的數(shù)據(jù)處理系統(tǒng),其中,所述交換機(jī)被配置為根據(jù)互連數(shù)據(jù)分 組的幀形成信息,在所述外圍數(shù)據(jù)總線上使用的數(shù)據(jù)協(xié)議的層級(jí)上路由互連數(shù)據(jù)分組。
53.如權(quán)利要求51所述的數(shù)據(jù)處理系統(tǒng),其中,所述交換機(jī)被配置為,在網(wǎng)絡(luò)協(xié)議的層級(jí)上根據(jù)中間數(shù)據(jù)單元的幀形成信息,路由封裝中間數(shù)據(jù)單元的互連數(shù)據(jù)分組。
54.如權(quán)利要求51至53中的任一項(xiàng)所述的數(shù)據(jù)處理系統(tǒng),其中,所述外圍數(shù)據(jù)總線是 PCIe,并且所述交換機(jī)是PCIe交換機(jī)。
55.如權(quán)利要求13至54中的任一項(xiàng)所述的數(shù)據(jù)處理系統(tǒng),其中,所述媒體接口是常規(guī) PCIe設(shè)備、SR-IOV PCIe設(shè)備和MR-IOV PCIe設(shè)備中的一個(gè)。
56.如權(quán)利要求54所述的數(shù)據(jù)處理系統(tǒng),其中,所述媒體接口是SR-IOVPCIe設(shè)備,并 且所述交換機(jī)是MR-IOV PCIe交換機(jī)。
57.如權(quán)利要求13至56中的任一項(xiàng)所述的數(shù)據(jù)處理系統(tǒng),其中,所述數(shù)據(jù)處理系統(tǒng)的 所述媒體接口和每個(gè)網(wǎng)絡(luò)接口控制器被配置為借助于一個(gè)或更多個(gè)互連數(shù)據(jù)分組來(lái)交換 控制數(shù)據(jù)。
58.如權(quán)利要求13至57中的任一項(xiàng)所述的數(shù)據(jù)處理系統(tǒng),其中,所述網(wǎng)絡(luò)協(xié)議是以太 網(wǎng)協(xié)議。
59.一種通過(guò)網(wǎng)絡(luò)從數(shù)據(jù)處理系統(tǒng)發(fā)送數(shù)據(jù)的方法,該數(shù)據(jù)處理系統(tǒng)包括在到所述網(wǎng) 絡(luò)的接口處的媒體接口、具有用于訪問(wèn)存儲(chǔ)器的存儲(chǔ)器管理單元的中央處理單元以及在所 述中央處理單元和所述媒體接口之間連接的互連,該方法包括以下步驟由位于中央處理單元處的網(wǎng)絡(luò)接口控制器執(zhí)行以下操作通過(guò)所述存儲(chǔ)器管理單元從位于所述存儲(chǔ)器處的發(fā)送隊(duì)列中獲取用于通過(guò)所述網(wǎng)絡(luò) 發(fā)送的數(shù)據(jù);在數(shù)據(jù)鏈路層上至少部分地形成網(wǎng)絡(luò)協(xié)議的包含獲取的數(shù)據(jù)的數(shù)據(jù)分組的幀;以及 根據(jù)在互連上使用的數(shù)據(jù)協(xié)議,將網(wǎng)絡(luò)協(xié)議的數(shù)據(jù)分組封裝在用于通過(guò)所述互連發(fā)送 的數(shù)據(jù)分組中,并將該數(shù)據(jù)分組通過(guò)所述互連發(fā)送給所述媒體接口 ; 由所述媒體接口執(zhí)行以下操作 接收封裝后的數(shù)據(jù)分組; 從封裝后的數(shù)據(jù)分組提取網(wǎng)絡(luò)協(xié)議的數(shù)據(jù)分組;在物理層處理網(wǎng)絡(luò)協(xié)議的數(shù)據(jù)分組,以便根據(jù)網(wǎng)絡(luò)協(xié)議完成該數(shù)據(jù)分組的幀形成;以及將完全形成的網(wǎng)絡(luò)協(xié)議的數(shù)據(jù)分組發(fā)送到所述網(wǎng)絡(luò)上。
60.一種通過(guò)網(wǎng)絡(luò)在數(shù)據(jù)處理系統(tǒng)處接收數(shù)據(jù)的方法,該數(shù)據(jù)處理系統(tǒng)包括在到所述 網(wǎng)絡(luò)的接口處的媒體接口、具有用于訪問(wèn)存儲(chǔ)器的存儲(chǔ)器管理單元的中央處理單元和在所 述中央處理單元和所述媒體接口之間連接的互連,該方法包括以下步驟由所述媒體接口執(zhí)行以下操作 通過(guò)所述網(wǎng)絡(luò)接收網(wǎng)絡(luò)數(shù)據(jù)分組;和根據(jù)在所述互連上使用的數(shù)據(jù)協(xié)議,將接收的網(wǎng)絡(luò)數(shù)據(jù)分組封裝在用于通過(guò)所述互連 發(fā)送的數(shù)據(jù)分組中,并將該數(shù)據(jù)分組通過(guò)所述互連發(fā)送給位于所述中央處理單元處的所述 網(wǎng)絡(luò)接口控制器;由網(wǎng)絡(luò)接口控制器執(zhí)行以下操作接收封裝后的數(shù)據(jù)分組;從封裝后的數(shù)據(jù)分組提取接收的網(wǎng)絡(luò)數(shù)據(jù)分組;根據(jù)網(wǎng)絡(luò)協(xié)議在數(shù)據(jù)鏈路層至少部分地處理每個(gè)接收的網(wǎng)絡(luò)數(shù)據(jù)分組,以便提取在每 個(gè)接收的網(wǎng)絡(luò)數(shù)據(jù)分組內(nèi)攜帶的數(shù)據(jù);和借助于所述存儲(chǔ)器管理單元將提取的數(shù)據(jù)寫(xiě)入在所述存儲(chǔ)器處的接收隊(duì)列。
61.一種在數(shù)據(jù)處理系統(tǒng)處的中央處理單元間通信數(shù)據(jù)的方法,該數(shù)據(jù)處理系統(tǒng)具有 借助于互連耦合在一起的第一中央處理單元和第二中央處理單元,每個(gè)中央處理單元包括 各自的網(wǎng)絡(luò)接口控制器,所述網(wǎng)絡(luò)接口控制器能操作來(lái)(a)根據(jù)網(wǎng)絡(luò)協(xié)議,在數(shù)據(jù)鏈路層 通過(guò)至少部分地形成以用于通信的數(shù)據(jù)的幀來(lái)形成中間數(shù)據(jù)單元,和(b)根據(jù)網(wǎng)絡(luò)協(xié)議在 數(shù)據(jù)鏈路層至少部分地處理中間數(shù)據(jù)單元,以便提取在每個(gè)中間數(shù)據(jù)單元內(nèi)攜帶的用于通 信的數(shù)據(jù),該方法包括以下步驟所述第一中央處理單元將用于通信的數(shù)據(jù)傳遞給它的第一網(wǎng)絡(luò)接口控制器; 由所述第一網(wǎng)絡(luò)接口控制器執(zhí)行以下操作根據(jù)網(wǎng)絡(luò)協(xié)議在數(shù)據(jù)鏈路層通過(guò)至少部分地形成用于通信的數(shù)據(jù)的幀來(lái)形成包括用 于通信的數(shù)據(jù)的中間數(shù)據(jù)單元;將網(wǎng)絡(luò)協(xié)議的中間數(shù)據(jù)單元封裝在用于通過(guò)所述互連發(fā)送的數(shù)據(jù)分組中;和 將封裝后的數(shù)據(jù)分組通過(guò)所述互連發(fā)送給ν第二網(wǎng)絡(luò)接口控制器; 由所述第二網(wǎng)絡(luò)接口控制器執(zhí)行以下操作 接收封裝后的數(shù)據(jù)分組; 從封裝后的數(shù)據(jù)分組提取中間數(shù)據(jù)單元;根據(jù)網(wǎng)絡(luò)協(xié)議在數(shù)據(jù)鏈路層至少部分地處理每個(gè)中間數(shù)據(jù)單元,以便提取在每個(gè)中間 數(shù)據(jù)單元內(nèi)攜帶的數(shù)據(jù);和將提取的數(shù)據(jù)傳遞給所述第二中央處理單元。
62.一種用于數(shù)據(jù)處理系統(tǒng)的中央處理單元,該中央處理單元包括 處理核;鏈路模塊,該鏈路模塊用于通過(guò)數(shù)據(jù)總線傳送預(yù)定數(shù)據(jù)協(xié)議的數(shù)據(jù)分組; 存儲(chǔ)器管理單元,該存儲(chǔ)器管理單元能夠操作來(lái)從與所述中央處理單元耦合的存儲(chǔ)器 獲取數(shù)據(jù);和網(wǎng)絡(luò)接口控制器,該網(wǎng)絡(luò)接口控制器被配置為 借助于所述存儲(chǔ)器管理單元獲取用于通過(guò)網(wǎng)絡(luò)發(fā)送的數(shù)據(jù); 在數(shù)據(jù)鏈路層形成包含獲取的數(shù)據(jù)的網(wǎng)絡(luò)協(xié)議的數(shù)據(jù)分組的幀;和 使所述分組被封裝在預(yù)定數(shù)據(jù)協(xié)議的數(shù)據(jù)分組中,并借助于所述鏈路模塊通過(guò)數(shù)據(jù)總 線被傳送。
63.如權(quán)利要求62所述的中央處理單元,其中,所述網(wǎng)絡(luò)接口控制器不在物理層對(duì)網(wǎng) 絡(luò)協(xié)議的數(shù)據(jù)分組形成幀。
64.一種用于數(shù)據(jù)處理系統(tǒng)的中央處理單元,該中央處理單元包括 處理核;高速緩存;存儲(chǔ)器管理單元,該存儲(chǔ)器管理單元能夠操作來(lái)從與所述中央處理單元耦合的存儲(chǔ)器 獲取數(shù)據(jù);和網(wǎng)絡(luò)接口管理器,該網(wǎng)絡(luò)接口管理器被配置為當(dāng)使用時(shí)將至少一些它的狀態(tài)存儲(chǔ)在與所述中央處理單元耦合的所述存儲(chǔ)器處;其中,所述處理核和所述網(wǎng)絡(luò)接口控制器被配置為,借助于所述存儲(chǔ)器管理單元訪問(wèn) 與所述中央處理單元耦合的所述存儲(chǔ)器,并且所述高速緩存被配置為高速地緩存在與所述 中央處理單元耦合的所述存儲(chǔ)器處存儲(chǔ)的數(shù)據(jù)。
65.如權(quán)利要求61所述的中央處理單元,其中,所述網(wǎng)絡(luò)接口控制器的狀態(tài)包括轉(zhuǎn)發(fā) 表和地址轉(zhuǎn)換表中的一個(gè)或全部?jī)蓚€(gè)。
66.一種在數(shù)據(jù)處理系統(tǒng)處支持的、對(duì)該數(shù)據(jù)處理系統(tǒng)將其自身表現(xiàn)為PCIe設(shè)備的電 子設(shè)備,該數(shù)據(jù)處理系統(tǒng)包括中央處理單元和PCIe數(shù)據(jù)總線,并且外圍設(shè)備具有以下兩個(gè) 組件核心組件,該核心組件位于中央處理單元處,能夠操作來(lái)處理對(duì)所述電子設(shè)備的I/O 請(qǐng)求;和外圍組件,所述核心設(shè)備通過(guò)PCIe數(shù)據(jù)總線可訪問(wèn)該外圍組件;其中,所述核心組件被配置為對(duì)發(fā)送給所述外圍組件的I/O請(qǐng)求進(jìn)行響應(yīng)。
67.如權(quán)利要求66所述的電子設(shè)備,其中,所述核心組件被分配了定義其控制范圍的 硬件地址范圍,并且所述外圍組件被配置為,提供指示包括了所述核心組件的控制范圍的 基地址的硬件地址范圍的基地址寄存器,使得針對(duì)由基地址寄存器指示的硬件地址范圍的 I/O請(qǐng)求在所述核心組件的控制范圍處得以處理。
68.如權(quán)利要求66所述的電子設(shè)備,其中,所述外圍組件附加地是一個(gè)或更多個(gè)其他 PCIe設(shè)備的組件,并且所述外圍組件被配置為,為每個(gè)其他PCIe設(shè)備提供附加的基地址寄 存器,每個(gè)附加的基地址寄存器被配置為使得針對(duì)由該基地址寄存器指示的硬件地址范圍 的I/O請(qǐng)求在該其他PCIe設(shè)備的相應(yīng)的核心組件處得以處理。
69.如權(quán)利要求66或67所述的電子設(shè)備,其中,所述外圍組件被配置為,將其接收的中 斷配置請(qǐng)求轉(zhuǎn)發(fā)給所述核心組件以在該核心組件處處理。
70.如權(quán)利要求66至69中的任意一項(xiàng)所述的電子設(shè)備,其中,所述外圍組件進(jìn)一步提 供支持傳統(tǒng)寄存器組的傳統(tǒng)基地址寄存器,所述外圍組件被配置為當(dāng)讀或?qū)懰鰝鹘y(tǒng)寄存 器時(shí),將對(duì)所述傳統(tǒng)寄存器的讀或?qū)懹成錇閷?duì)所述核心組件的控制范圍的讀或?qū)?,使得?對(duì)所述傳統(tǒng)寄存器組的傳統(tǒng)I/O請(qǐng)求在所述核心組件的控制范圍處得以處理。
71. 一種本質(zhì)上如參考圖2至9中任一個(gè)在此描述的網(wǎng)絡(luò)接口設(shè)備。
全文摘要
本發(fā)明涉及控制器集成。提供了一種包括中央處理單元和分離網(wǎng)絡(luò)接口功能組的數(shù)據(jù)處理系統(tǒng),該分離網(wǎng)絡(luò)接口功能組包括與中央處理單元設(shè)置在一起的第一子單元,被配置為通過(guò)為每個(gè)網(wǎng)絡(luò)數(shù)據(jù)分組生成數(shù)據(jù)鏈路層信息來(lái)至少部分地形成用于發(fā)送給網(wǎng)絡(luò)端點(diǎn)的一系列網(wǎng)絡(luò)數(shù)據(jù)分組;以及在中央處理單元外部并且通過(guò)互連部與中央處理單元相耦合的第二子單元,該第二子單元被配置為通過(guò)網(wǎng)絡(luò)物理地傳送一系列網(wǎng)絡(luò)數(shù)據(jù)分組。
文檔編號(hào)H04L29/06GK101990002SQ20101028068
公開(kāi)日2011年3月23日 申請(qǐng)日期2010年7月29日 優(yōu)先權(quán)日2009年7月29日
發(fā)明者史蒂夫·波普, 大衛(wèi)·里多克, 德里克·羅伯茨 申請(qǐng)人:索樂(lè)弗萊爾通訊公司