具有功能鏈接能力的網絡功能虛擬化平臺的制作方法
【專利摘要】本申請公開了具有功能鏈接能力的網絡功能虛擬化平臺。本申請提供一種用于網絡功能虛擬化(NFV)的虛擬化平臺。虛擬化平臺可以包括耦合至加速器協處理器的主處理器。加速器協處理器可以是可重新配置的集成電路,以有助于提供針對NFV的改進的靈活性和敏捷性。協處理器可以包括多個虛擬功能硬件加速器模塊,每個虛擬功能硬件加速器模塊經配置以執行相應的加速器功能。運行在主處理器上的虛擬機可希望在協處理器處對給定數據連續執行多個加速器功能。在一個合適的布置中,由加速器功能中的每個輸出的中間數據可以被反饋至主處理器。在另一合適的布置中,連續的功能調用可以被鏈接在一起,以便僅有最終所得數據被反饋至主處理器。
【專利說明】具有功能鏈接能力的網絡功能虛擬化平臺
[0001 ] 本申請要求在2015年4月28日提交的美國專利申請N0.14/698636的優先權,該美國專利申請通過引用以其整體并入本文。
技術領域
【背景技術】
[0002]互聯網的發展已經幫助創建將全球范圍內的數十億臺設備連接在一起的網絡的網絡。通常,最快和最可靠的網絡利用定制的專用集成電路(ASIC)和專用硬件建成。因此,大型企業網絡往往類似于復雜的單片系統。在此類定制系統中,臨時添加功能并對這些系統做出改變的同時確保網絡不遭受任何干擾是非常具有挑戰性的。
[0003]由于近來網絡在商品計算硬件方面集聚的進步,以前只能通過專有的專用硬件才能夠被供給的服務現在可以使用運行在商品硬件上的軟件通過利用標準信息技術(IT)的虛擬化技術來提供,該標準信息技術(IT)的虛擬化技術在大容量服務器、交換機和存儲硬件上運行以虛擬化網絡功能。通過利用標準IT虛擬化技術來將不同類型的網絡設備整合到商用“現成的”大容量服務器、交換機和存儲裝置上,網絡功能諸如網絡地址轉換(NAT)、防火墻、入侵檢測、域名服務(DNS)、負載均衡和高速緩存(僅舉幾例)可以從專有硬件被解耦并且代替地可以以軟件運行。這種在商品硬件上的網絡功能的虛擬化有時被稱為網絡功能虛擬化(NFV)。
[0004]為了開發完全虛擬化的基礎設施,領先的服務供應商已經走到一起并創建了用于網絡功能虛擬化(NFV)的歐洲電信標準協會(ETSI)行業規范組(ISG)。該行業規范組已幫助創建了用于虛擬化電信網絡內的各種功能的體系結構和相關要求。網絡功能虛擬化的益處包含降低資本支出(即,通過減少購買專用硬件的需求)、運營支出(即,通過減少空間、電力和冷卻要求)、減少進入市場的時間(S卩,加速部署)、提高了解決不斷變化的需求的靈活性等。
[0005]正是在這種背景下,出現了本文所描述的實施例。
【發明內容】
[0006]本發明提供一種網絡功能虛擬化(NFV)平臺,其包括耦合至充當硬件加速器的可重新配置的協處理器的主處理器。協處理器可以包括虛擬功能硬件加速器,所述虛擬功能硬件加速器用于提高運行在主處理器上的至少一些虛擬機的性能。根據一個實施例,在協處理器中的多個虛擬功能硬件加速器模塊可以經配置以執行不同的功能。
[0007]例如,第一加速器模塊可經配置以執行第一功能,第二加速器模塊可經配置以執行不同于第一功能的第二功能,以及第三加速器模塊可經配置以執行不同于第一功能和第二功能的第三功能。具體地,所述協處理器可以包括數據交換電路,所述數據交換電路接收從第一加速器模塊輸出的數據并將所述數據直接路由回至第二加速器模塊(同時防止所述數據被輸出到主處理器)。類似地,所述數據交換電路也可以接收從第二加速器模塊輸出的數據并將所述數據直接路由回至第三加速器模塊(同時防止所述數據被輸出到主處理器)。
[0008]正由加速器模塊處理的數據可以從外部存儲器裝置被檢索,所述外部存儲器裝置使用協處理器內的直接存儲器存取(DMA)引擎而被直接附連至主處理器。
[0009]數據交換電路可經配置以根據條件鏈接指令組執行功能鏈接而無需將中間數據發送回至外部存儲器裝置。
[0010]根據另一實施例,數據交換電路可將中間數據結果路由回至外部存儲器裝置以用于臨時存儲。換句話說,中間數據結果可仍然被發送回至主處理器,即使它們將被立即發送回至另一加速器模塊以執行連續的功能調用。
[0011]通過隨附附圖和以下的詳細描述,本發明的進一步特征、其本質以及各種優點將更加明顯。
【附圖說明】
[0012I圖1是根據實施例示出網絡功能虛擬化(NFV)的示意圖。
[0013]圖2是根據實施例的說明性可編程集成電路的示意圖。
[0014]圖3是根據實施例的包括耦合至可編程硬件加速器的中央處理單元(CPU)的說明性NFV平臺的示意圖。
[0015]圖4是根據實施例示出在其中每個硬件加速器功能結果被發送回至主存儲器的一個合適的實施方式的示意圖。
[0016]圖5是根據實施例的用于操作圖4的電路實施方式的說明性步驟的流程圖。
[0017]圖6根據實施例示出提供硬件加速器功能鏈接能力的另一合適的實施方式的示意圖。
[0018]圖7是根據實施例的說明性數據類型描述符的示意圖。
[0019]圖8是根據實施例的與具體路由標識符的數據相關聯的說明性鏈接指令的示意圖。
[0020]圖9是根據實施例示出需要被滿足以便執行圖8的鏈接指令中的每個的示例性條件的示意圖。
[0021]圖10是根據圖6-9的實施例的涉及操作NFV平臺的說明性步驟的流程圖。
【具體實施方式】
[0022]本發明的實施例涉及網絡功能虛擬化(NFV),并且更具體地涉及用于NFV的硬件加速。本領域的技術人員將認識到,本示例性實施例可以在沒有這些具體細節的一些或全部的情況下來實施。在其它實例中,眾所周知的操作并沒有被詳細描述,以免不必要地模糊本實施例。
[0023]通常,使用零散的非商品硬件來創建復雜的網絡。當擴展或升級網絡時,需要安裝新的專用硬件,這不僅增加現有供應商的部署成本,而且對新供應商呈現出大的進入壁皇,限制了創新和競爭。
[0024]為了加快新網絡服務的部署,以滿足不斷增長的提高網絡速度和可靠性的消費者需求,供應商(例如,電信運營商或服務提供商,諸如AT&T、Verizon、British Telecom等)已經走到一起并創建了歐洲電信標準協會(ETSI)行業規范組(ISG)。自此以來,ETSI ISG已引進了可應用到聯網(networking)技術以形成更智能和更靈活的服務基礎設施的虛擬化技術。運行網絡功能諸如通常由專用路由器、防火墻、負載均衡器、內容分發網絡(CDN)、寬帶網絡網關(BNG)、網絡地址轉換器(NAT)、域名系統(DNS)以及在商品硬件上以軟件形式的其它聯網設備所執行的那些網絡功能的這種概念有時被稱為網絡功能虛擬化(NFV)。
[0025]網絡功能虛擬化的概念在圖1中被示出。如圖1的系統100所示,NFV允許由多個獨立供應商提供的服務單獨運行在云102中的一個或多個虛擬應用104上。實際上,由不同軟件供應商提供的網絡服務可以使用運行在商用的現成硬件上的虛擬應用104來實現,所述硬件包括但不限于標準大容量交換機106、標準大容量存儲器108和標準大容量服務器110(例如,網絡功能可以被編排并被遠程地安裝在商品物理基礎設施上而不是在更昂貴的制造商設計的專用硬件上)。
[0026]將不同的網絡組件轉移到商品硬件有助于消除針對現場的(onsite)不同應用而對更昂貴的專用硬件的使用,并且因此有助于消除浪費的過度配置并可以大大減少資本支出。整體基礎設施的虛擬化還有助于簡化用于管理網絡的操作過程和設備。由于所有的服務都在相同的商品硬件上被運行,所以數據中心運營商不再需要支持多個供應商和硬件模型,從而簡化了基礎硬件支持/管理,并提供允許在不同的服務和組件內和在不同的服務和組件之間的自動操作和編排的統一的基礎設施。
[0027]例如,網絡管理員可以協調資源的可用性(在NFV框架內)并且使服務可用所需要的程序自動操作,這減少了管理過程的人類操作員的需求,并從而降低錯誤的可能性。此夕卜,NFV也可以幫助減少時間以在對網絡基礎設施的破壞最小化的情況下部署新聯網服務,從而有助于抓住新的市場機遇并提高新服務的投資回報(ROI),同時通過允許服務以軟件形式迅速地被擴大或縮小以滿足客戶的需求來提供增強的敏捷性和靈活性。如果需要的話,NFV可以結合軟件定義聯網(SDN)方法來實現,該方法使網絡的控制面和轉發面分離以提供更集中的分布式網絡視圖,以便網絡服務的更有效的編排和自動化。
[0028]通常,可以存在至少兩種不同類型的網絡功能虛擬化平臺,其包括本地(native)“裸機(bare metal ),’虛擬化實施方式和“托管/主控(hosted)”虛擬化實施方式。裸機虛擬化包括在主機上安裝作為第一操作系統的管理程序(hypervisor)(S卩,創建并運行一個或多個虛擬機的計算機軟件),而托管虛擬化包括在運行在主機上的已活(live)的操作系統(即,主操作系統)之上安裝管理程序。“裸機”虛擬化提供對主機上的硬件資源的直接訪問并且通常被用于企業解決方案。另一方面,托管虛擬化除了允許運行多個訪客(guest)操作系統外只可以通過主操作系統訪問硬件,并且因此托管虛擬化通常被用于桌面(desktop)解決方案。
[0029]通常,與裸機實施方式相比,托管實施方式在平均響應時間上表現出增加的延時和相對較寬的統計擴散(statistical spread)。托管實施方式的這種延時增加和變化性可能是由于通過共享資源所引起的爭奪并且也可能由于與用于在多個訪客操作系統之間處理所需要的額外聯網層相關聯的開銷。
[0030]為了提供改進的性能可預測性,數據中心運營商(例如,網絡協調器(orchestrator),諸如微軟、谷歌和亞馬遜,僅舉幾例)為通用中央處理單元(例如,圖1的設備106、108和110內的用于實現虛擬應用的CPU)提供資源可用性描述(RAD)。然而,資源可用性描述只提供本地信息(諸如CPU速度和本地存儲的量/類型),但并不明確說明CPU與外部組件交互的如何。
[0031]為進一步加強虛擬化網絡的可實現速度,商品CPU可耦合到硬件加速器集成電路(有時候稱為“協處理器”)。根據一個實施例,硬件加速器器件可以是可編程集成電路,諸如可編程邏輯器件(PLD)。可以作為硬件加速器使用的該類型的說明性集成電路在圖2中被示出。如圖2所示,集成電路10可以包括存儲器元件20。存儲器元件20可以被加載有配置數據以配置可編程晶體管,諸如在可編程電路(可編程邏輯)18中的導通(pass)晶體管(有時被稱為導通柵極(gate)或導通柵極晶體管)。
[0032]因為存儲器元件20可以被用于存儲可編程邏輯18的配置數據,所以存儲器元件20有時可以被稱為配置隨機存取存儲器元件(CRAM)。集成電路10可以被配置為通過配置可編程邏輯18而實現自定義邏輯功能,因此集成電路10有時可以被稱為可編程集成電路。
[0033]如圖2所示,可編程集成電路10可具有用于經由輸入-輸出引腳14驅離器件10的信號和接收來自其他器件的信號的輸入/輸出電路12。互連資源16 (諸如全局和局部的垂直和水平的導線和總線)可以被用于路由器件10上的信號。互連資源16可以包括固定互連(導線)和可編程互連(即,在相應固定互連之間的可編程連接)。
[0034]可編程邏輯18可以包括組合邏輯電路和時序邏輯電路。可編程邏輯18可以經配置以執行自定義邏輯功能。與互連資源16相關聯的可編程互連可以被認為形成可編程邏輯18的一部分。
[0035]當存儲器元件20被加載有配置數據時,所述存儲器元件中的每個提供對應的靜態控制輸出信號,所述靜態控制輸出信號控制可編程邏輯18中相關聯的邏輯組件的狀態。例如,存儲器元件的輸出信號可以被用于控制可編程組件(諸如復用器、邏輯門諸如“與”門、“與非”門等)中的金屬氧化物半導體(MOS)(諸如η溝道金屬氧化物半導體(匪OS)導通晶體管)晶體管的柵極。如果需要的話,P溝道金屬氧化物半導體(例如,P溝道金屬氧化物半導體導通晶體管)也可以由來自存儲器元件20的輸出信號來控制。當與NMOS導通晶體管相關聯的存儲器元件輸出為高時,由該存儲器元件控制的導通晶體管被接通并從其輸入端向其輸出端傳送邏輯信號。在存儲器元件輸出為低時,NMOS導通晶體管被關斷并且不傳送邏輯信號。當來自存儲器元件的輸出端的被施加到P溝道金屬氧化物半導體(PMOS)導通晶體管的柵極的信號為低(例如,O伏)時,所述P溝道金屬氧化物半導體(PMOS)導通晶體管被接通,并且當存儲器元件的輸出為高(即,NMOS和PMOS控制信號的極性被反轉)時,所述P溝道金屬氧化物半導體(PMOS)導通晶體管被關斷。
[0036]配置隨機存取存儲器元件20可以被布置成陣列模式。例如,在集成電路10上可以存在數百萬個存儲器元件20。在編程操作期間,存儲器元件的陣列被提供有配置數據。一旦存儲器元件20被加載配置數據,其可以選擇性地控制(例如,接通和關斷)可編程邏輯18中的電路的部分并且由此自定義電路1的電路功能。
[0037]可編程集成電路10的電路可使用任何合適的體系結構來組織。作為示例,可編程集成電路10的電路可以被組織為一系列可編程邏輯塊(區域)的行和列,每個可編程邏輯塊(區域)包括多個更小的邏輯區域。集成電路10的邏輯資源可以通過互連資源16(諸如相關聯的垂直導線和水平導線)而被互連。這些導線可以包括基本上跨越器件10的全部的全局導線、跨越器件10的一部分的部分線諸如半線或四分之一線、特定長度的交錯線(例如,足夠互連幾個邏輯區)、更小的局部線或任何其它合適的互連資源布置。如果需要的話,可編程集成電路10的電路可以以更多的級或層來被布置,其中多個大的區域被互連以形成更大的邏輯部分。其它器件布置可仍然使用不是以行和列布置的邏輯。
[0038]在其中器件10被描述為可編程集成電路的圖2的示例僅僅是說明性的,并且不用于限制本發明的范圍。本文所描述的方法和裝置可被并入任何合適的電路。例如,所述方法和裝置也可以被并入多種類型的器件,諸如微處理器、數字信號處理器、專用標準產品(ASSP)、專用集成電路(ASIC)、可編程陣列邏輯(PAL)、可編程邏輯陣列(PLA)、現場可編程邏輯陣列(FPLA)、電可編程邏輯器件(EPLD)、電可擦除可編程邏輯器件(EEPLD)、邏輯單元陣列(LCA)、現場可編程門陣列(FPGA),僅舉幾例。
[0039]圖3是說明性NFV平臺300的示意圖,其中中央處理單元(CPU)302被耦合到硬件加速器協處理器(諸如可編程集成電路350)。如圖3所示,在CPU302上運行的軟件/固件可以至少包括管理程序308和N個相關聯的虛擬機306 (例如,虛擬機306-1、306-2.....306-n)以及虛擬根310。管理程序308被安裝在其上的CPU 302可以被稱為“主機”。
[0040]如上所述,管理程序308可以充當在服務器上運行一個或多個虛擬機306的虛擬機管理器(VMM)。每個虛擬機306可以被稱為“訪客機”并且均可以運行訪客操作系統(OS)。管理程序向訪客操作系統呈現虛擬操作平臺并管理訪客操作系統的執行,同時共享虛擬化硬件資源。管理程序308可以(作為類型-1裸機管理程序)直接運行在主機的硬件上或可以(作為類型-2托管管理程序)運行在現有的主操作系統之上。如果需要的話,附加的半虛擬化驅動程序和工具(未示出)可被用來幫助每個訪客虛擬機與底層物理硬件更有效地通信。CPU302也是可操作的以與片外主存儲器304直接通信。在其它合適的實施例中,CPU302可經配置以與網卡、盤驅動器控制器、圖形卡、聲卡等通信。
[0041]在圖3的示例中,根310可用作根復合體(complex),其使用快速外圍組件互連(PCIe)標準與加速器350中的對應的虛擬端點(endpoint)352連接(interface)。在PCIe系統中,根復合體可以指經配置將CPU連接至其它PCIe端點和/或PCIe開關的器件,PCIe端點和其它類型的端點可以被連接到所述器件。根復合體通常利用包括事務層、數據鏈路層和物理層的完整PCIe協議棧來實現。使用PCIe總線來連接CPU 302和協處理器350僅是說明性的。如果需要的話,可以使用其它類型的輸入輸出接口技術,其包括工業標準體系結構(ISA)總線標準、微通道體系結構(MCA)總線標準、視頻電子標準協會本地總線(VESA)總線標準、傳統PCI總線標準、加速圖形端口(AGP)總線標準、通用串行總線(USB)標準、通用異步接收器/發送器(UART)總線標準等。
[0042]仍參考圖3,在協處理器350上運行的軟件/固件也可以至少包括存儲器控制器358(例如,用于與直接耦合至協處理器350的外部存儲器360連接的存儲器控制器)、直接存儲器存取(DMA)引擎354、數據交換電路356、輸入/輸出(1)組件362和364以及一個或多個虛擬功能硬件加速器模塊(有時被稱為虛擬功能硬件加速器片)366。
[0043]每個虛擬功能加速器片366可以用于向運行在主處理器302上的一個或多個虛擬機306提供硬件加速。組件362和364可以用作與耦合至協處理器350的其它1裝置進行通信的入口和/或出口接口。數據交換電路356可經配置以在加速器366、1組件362和364以及DMA引擎354之間路由數據。直接存儲器存取引擎354可經配置以將數據從主機CHJ存儲器304路由至協處理器350 ο加速器366也能夠經由路徑359與存儲器控制器358直接通信。
[0044]具有硬件加速器的NFV系統有時可以一個緊接一個地使用多個虛擬功能加速器來處理數據。例如,在協處理器中的第一硬件加速器模塊經配置以執行第一指定功能,并且在協處理器中的第二硬件加速器模塊經配置以執行第二指定功能。在該示例中,考慮主處理器需要數據(例如,存儲在外部主存儲器裝置的數據)以使用在第一硬件加速器處的第一指定功能和使用在第二硬件加速器處的第二指定功能而連續被處理的情況。在此類情況中,需要存在針對處理后的數據在主處理器和協處理器之間(例如,在片外主存儲器裝置和協處理器中的虛擬功能硬件加速器片之間)流體傳送的方法。
[0045]根據一個實施例,在對協處理器中的對應加速器片的每個功能調用后的結果可以被發送回至主存儲器(參見,例如圖4)。如圖4所示,第一虛擬功能硬件加速器模塊366-1經配置以執行第一功能/函數(funct1n)F(X),而第二虛擬功能硬件加速器模塊366-2可經配置以執行第二功能/函數(funct1n)G(x)。
[0046]在圖4的示例中,在主處理器中的虛擬機的選定的一個可要求數據以使用第一功能F(X)并接著使用第二功能G(X)來被處理。涉及使用F(X)并接著使用G(X)來執行連續的功能調用的說明性步驟在圖5中示出。例如,選定的虛擬機可以引導主存儲器控制器從主存儲器304檢索數據A(步驟500)。作為響應,數據A可以經由DMA引擎和數據交換電路356被發送至加速器模塊366-1。在步驟502,第一加速器模塊366-1可對數據A執行第一功能以生成所得數據B。在步驟504,數據B(即,功能調用F(A)的結果)隨后可被傳送回至主存儲器304以用于臨時存儲。
[0047]此時,由于還沒有對所得數據執行第二功能,數據B被立即檢索并經由DMA引擎和數據交換電路被傳送至第二加速器模塊366-2(步驟506)。作為響應,第二加速器模塊366-2可對數據B執行第二功能以生成所得數據C。在步驟508,數據C(即,功能調用G(B)的結果)可隨后被反饋回至CPU存儲器304以用于存儲。操作可以以通過在相關的硬件加速器模塊和主存儲器之間來回發送中間數據的這種方式繼續直到全部的連續功能調用完成(如點510所指示的)。換句話說,任何數量的連續功能調用可以使用這種迭代方法而被執行。
[0048]根據另一合適的實施例,多個功能調用可以被“鏈接”在一起以有助于降低在主存儲器接口處的數據擁堵同時提高整體性能。鏈接連續功能調用確保中間數據結果停留在協處理器內,并且所述中間數據結果直接被反饋到下一加速器模塊而無需被反饋到主存儲器。換句話說,只有最終結果應當被傳送至主存儲器以用于存儲。以這種方式將多個“工作”鏈接在一起可以幫助提供在主處理器和協處理器之間的更有效的通信方案。
[0049]這種鏈接方案在圖6中示出。如圖6所示,第一虛擬功能硬件加速器模塊366-1可經配置以執行第一功能F(x);第二虛擬功能硬件加速器模塊366-2可經配置以執行第二功能G(X);以及第三虛擬功能硬件加速器模塊366-3可經配置以執行第三功能H(X)。
[0050]在圖6的示例中,在主處理器中的虛擬機的選定的一個可要求數據相繼使用功能FU)、功能G(X)和功能H(X)來處理。例如,選定的虛擬機可引導主在儲器控制器從主存儲器304檢索數據A。作為響應,數據A可經由DMA引擎和數據交換電路356被發送至加速器模塊366-1。第一加速器模塊366-1隨后可對數據A執行第一功能以生成所得數據B。
[0051]當數據交換電路356接收來自第一加速器模塊366-1的中間所得數據B時,所述數據交換電路可分析到達的數據并識別出這種數據需要被發送至另一加速器片以便進一步處理。在該具體示例中,數據B可以被直接發送至第二VF硬件加速器模塊366-2(如路徑600所指示的)同時防止數據B被發送回至主處理器。第二加速器模塊366-2可隨后對數據B執行第二功能G(x)以生成所得數據C(即,功能調用G(B)的結果,其等于G[F(A)])。
[0052]當數據交換電路356接收來自第二加速器模塊366-2的中間所得數據C時,所述數據交換電路可分析到達的數據并識別出該數據需要被發送至另一加速器片以便進一步處理同時防止數據C被發送回至主處理器。在該具體示例中,數據C可被直接發送回至第三VF硬件加速器模塊366-3(如路徑602所指示的)。第三加速器模塊366-3可隨后對數據C執行第三功能H(X)以生成最終數據D(即,功能調用H(C)的結果,其等于H{G[F(A)]})。
[0053]在數據D到達數據交換電路時,所述數據交換電路可識別出該數據不需要被發送回至另一加速器模塊(即,沒有附加的功能調用需要被鏈接)并可以繼續經由主處理器將該最終數據發送回至CHJ存儲器304(如路徑604所指示的)。在其中三個HW加速器功能調用已被鏈接在一起的圖6的示例僅僅是說明性的,并不用于限制本發明的范圍。如果需要的話,少于或多于三個加速器功能可以以這種方式串聯鏈接。
[0054]根據另一實施例,將由協處理器處理的數據可以具有相關聯的虛擬機寫數據移動描述符(參見,例如圖7)。如圖7所示,數據描述符700可為具有第一源地址和第一目的地址的數據分配第一路由標識符(即,ID-1 ),為具有第二源地址和第二目的地址的數據分配第二路由標識符(即,ID-2)等。不同的路由ID可被用于識別針對所述特定數據將要執行哪些類型的鏈接指令。例如,被分配路由ID-1的數據可具有第一組預定鏈接指令,而被分配路由ID-2的數據可具有不同于第一組鏈接指令的第二組預定鏈接指令。
[0055]圖8示出針對被分配路由ID-1的數據的示例性虛擬機寫鏈接指令。如圖8所示,鏈接指令可以指定如果滿足第一組條件,則第一功能F(X)被執行,如果滿足第二組條件,則第二功能G(X)被執行,如果滿足第三組條件,則第三功能/函數(funct1n)H(x)被執行,等等。如果需要的話,鏈接指令可以指定任何數量的虛擬功能硬件加速器功能調用以條件方式被鏈接。當特定組的條件未被滿足時,在鏈接指令中的一個功能可以被跳過。這種類型的條件功能路由有時可以被稱為“動態”加速器功能鏈接。
[0056]用于確定連續加速器功能調用是否應被鏈接的條件檢查可基于(I)與被處理的數據相關聯的參數/變元(argument),(2)由硬件加速器生成的附加邊帶信號,和/或其它合適的動態數據字段。鏈接控制可以主要由數據交換電路來處理(如圖6的示例所示)。
[0057]圖9是根據一個實施例示出需要被滿足以便執行圖8的鏈接指令中的每個的示例性條件的示意圖。如圖9的表格900所示,當與被處理的數據相關聯的參數等于Argl或Arg2時,第一加速器功能F(X)可以被執行。當邊帶(SB)信號等于特定值X時,第二加速器功能G(X)可以被執行。當與被處理的數據相關聯的參數等于Arg5或Arg6時,第三加速器功能H(X)可以被執行。
[0058]例如,考慮給定的虛擬機經配置以處理視頻數據包的情況。虛擬機可以首先需要確定當前接收的數據塊是否確實是視頻格式。在該示例中,虛擬機可以將具有相關聯的參數的接收的數據發送到第一“視頻類型檢測”加速器模塊。如果數據類型表示MP4文件類型(例如,如果圖9的參數Argl等于MP4),則第一加速器模塊可隨后生成帶有反映MP4文件格式的邊帶信號的結果。
[0059]該結果可以被直接鏈接至第二“視頻解壓縮”加速器模塊。第二加速器模塊可以將MP4邊帶信號識別為壓縮的文件格式并對該接收到的數據進行解壓縮。第二加速器模塊可隨后生成對應的解壓縮后的數據。
[0060]解壓縮后的數據可隨后被直接鏈接至第三“網絡封包”加速器模塊。第三加速器模塊可經配置以向解壓縮后的數據添加以太網標頭(head)、循環冗余校驗(CRC)位以及其它聯網控制位。至第三加速器模塊的參數可以是以太網類型(例如,在圖9中的參數Arg6等于以太網類型)。在第三加速器模塊已向解壓縮后的視頻數據添加期望的網絡控制位后,最終輸出可隨后被發送回至虛擬機。
[0061]在其中用于處理視頻數據的三個Hff加速器功能被鏈接的這個示例僅是說明性的。表格900中的條件902可表示在處理具有路由ID-1的數據時需要滿足的標準。當處理具有其它路由標識符的數據時,可以使用不同于條件902的其它條件(例如,條件904)。
[0062]圖10是根據圖6-9的實施例的操作NFV平臺所涉及的說明性步驟的流程圖。在步驟1000,數據可以從主CPU存儲器在指定的源地址處被檢索(例如,如在圖7的數據描述符中指定的源地址)。
[0063]如果針對第一加速器模塊的條件已被滿足,則第一加速器功能F(X)可以被執行(在步驟1004)。如果針對第一加速器模塊的條件沒有被滿足(在步驟1002),則第一加速器功能F(X)可以被跳過。
[0064]無論第一加速器功能F(X)是否被執行,數據交換電路可以基于參數或邊帶信息確定所得中間數據是否應當被鏈接至如由結合圖8描述的類型的鏈接指令所指定的第二加速器模塊。如果針對第二加速器模塊的條件已被滿足,則第二加速器功能G(X)可以被執行(在步驟1008)。如果針對第二加速器模塊的條件未被滿足(在步驟1006),則可跳過第二加速器功能G(X)。
[0065]無論第二加速器功能G(X)是否被執行,數據交換電路可基于參數或邊帶信息確定所得中間數據是否應當被鏈接至如由相關聯的鏈接指令所指定的第三加速器模塊。如果針對第三加速器模塊的條件已被滿足,則第三加速器功能H(X)可以被執行(在步驟1012)。如果針對第三加速器模塊的條件未被滿足(在步驟1010),則可跳過第三加速器功能H(X)。
[0066]在鏈接指令中的最終功能被完成或跳過后,所得最終數據可以被傳送回至主存儲器以用于存儲(在步驟1014)。圖10的步驟僅是說明性的,并不旨限制本發明的范圍。一般來講,這種鏈接方法可以被擴展至協處理器中的任何數量的VM硬件加速器功能調用(當不滿足相應條件時不管功能是否被跳過)而無需將任何中間數據發送回至主處理器。以這種方式操作NFV平臺可以幫助減少使用CPU系統存儲器的數據擁堵同時最小化延時。
[0067]圖4-5的實施例和圖6-10的實施例可以在一個NFV平臺中單獨使用或一起使用。例如,一些類型的數據不需要具有任何鏈接指令,而其它類型的數據可以被設置有鏈接指令。例如,僅需要兩個連續功能調用的數據可以不需要被鏈接,而需要三個或更多連續加速器功能調用的數據可以具有具體的鏈接指令/條件。作為另一示例,針對第一數據類型的處理(例如,電子郵件文件)可以不需要被鏈接,而針對第二數據類型的處理(例如,聲音數據)可以具有具體的鏈接指令/條件。作為又另一示例,具有相對低優先級的數據可以不需要被鏈接,而帶有相對較高優先級的數據可以具有具體的鏈接指令/條件。
[0068]在本文的一個或多個實施例中描述的可編程邏輯器件可以是數據處理系統的一部分,所述數據處理系統包括以下組件中的一個或多個:處理器;存儲器;1電路;以及外圍設備。數據處理可以在各種各樣的應用中被使用,諸如計算機聯網、數據聯網、儀器、視頻處理、數字信號處理或在其中使用可編程或可重新編程邏輯的優點是有利的任何合適的其它應用。可編程邏輯器件可以被用于執行各種不同的邏輯功能。例如,可編程邏輯器件可以被配置為協同系統處理器工作的處理器或控制器。可編程邏輯器件也可被用作用于在數據處理系統中仲裁對共享資源的訪問的仲裁器。在另一示例中,可編程邏輯器件可以被配置為在處理器和系統中的其它組件中的一個組件之間的接口。在一個實施例中,可編程邏輯器件可以是由ALTERA公司擁有的器件系列中的一種。
[0069]雖然操作的方法以特定順序被描述,但是應當理解,其它操作可以在描述的操作之間被執行,描述的操作可以被調整,使得它們在稍微不同的時間處發生或描述的操作可以被分布在系統中,這允許處理操作發生在與所述處理相關聯的不同時間間隔處,只要覆蓋操作的處理以期望的方式被執行。
[0070]附加實施例:
[0071]附加實施例1.一種網絡功能虛擬化(NFV)平臺中的集成電路,其包括:執行第一功能的第一虛擬功能硬件加速器模塊;執行第二功能的第二虛擬功能硬件加速器模塊;以及數據交換電路,其接收從第一虛擬功能硬件加速器模塊輸出的數據并將所述數據直接路由回至第二虛擬功能硬件加速器模塊。
[0072]附加實施例2.根據附加實施例1所述的集成電路,其中由所述第二虛擬功能硬件加速器模塊執行的所述第二功能不同于由所述第一虛擬功能硬件加速器模塊執行的所述第一功能。
[0073]附加實施例3.根據附加實施例1所述的集成電路,還包括:執行第三功能的第三虛擬功能硬件加速器模塊,其中所述數據交換電路接收從所述第二虛擬功能硬件加速器模塊輸出的數據并將該數據直接路由回至所述第三虛擬功能硬件加速器模塊。
[0074]附加實施例4.根據附加實施例1所述的集成電路,還包括:直接存儲器存取(DMA)引擎,其接收來自片外存儲器裝置的數據。
[0075]附加實施例5.根據附加實施例1所述的集成電路,其中從所述第二虛擬功能硬件加速器模塊輸出的所述數據被反饋至在外部主處理器上運行的多個虛擬機中的選定的虛擬機,所述外部主處理器耦合至所述集成電路并且運行管理程序。
[0076]附加實施例6.根據附加實施例5所述的集成電路,還包括:可編程邏輯元件,其能夠經重新配置以執行不同的自定義功能。
[0077]附加實施例7.根據附加實施例5所述的集成電路,其中所述數據交換電路經配置以根據一組預定的鏈接指令執行功能鏈接而無需將中間數據發送回至所述外部主處理器。
[0078]附加實施例8.—種操作具有主處理器和協處理器的網絡功能虛擬化(NFV)系統的方法,其包括:在所述協處理器處接收來自所述主處理器的第一數據;使用在所述協處理器中的第一虛擬功能加速器模塊來對所述第一數據執行第一功能以產生第二數據;并且使用在所述協處理器中的第二虛擬功能加速器模塊來對所述第二數據執行第二功能以產生第三數據,而無需將所述第二數據輸出到所述主處理器。
[0079]附加實施例9.根據附加實施例8所述的方法,還包括:使用數據交換電路在多個虛擬功能加速器模塊之間路由數據,所述多個虛擬功能加速器模塊包括所述第一虛擬功能加速器模塊和第二虛擬功能加速器模塊,其中所述數據交換電路經配置以根據預定的鏈接指令組支持虛擬功能加速器鏈接。
[0080]附加實施例10.根據附加實施例8所述的方法,還包括:使用在所述協處理器中的第三虛擬功能加速器模塊對所述第三數據執行第三功能以產生第四數據而無需將所述第三數據輸出到所述主處理器。
[0081]附加實施例11.根據附加實施例10所述的方法,還包括:在所述協處理器處僅將所述第四數據輸出到所述主處理器。
[0082]附加實施例12.根據附加實施例8所述的方法,其中響應于第一加速器條件被滿足而執行所述第一功能。
[0083]附加實施例13.根據附加實施例12所述的方法,還包括:當所述第一加速器條件已沒有被滿足時,跳過所述第一功能。
[0084]附加實施例14.根據附加實施例12所述的方法,其中響應于第二加速器條件被滿足而執行所述第二功能,并且其中所述第二加速器條件不同于所述第一加速器條件。
[0085]附加實施例15.根據附加實施例8所述的方法,還包括:分析與所述第二數據相關聯的邊帶信號以確定是否應當對所述第二數據執行所述第二功能。
[0086]附加實施例16.—種網絡功能虛擬化(NFV)平臺,其包括:具有管理程序的主處理器,所述管理程序創建并運行虛擬機;以及協處理器,其具有用于加速所述虛擬機的性能的多個加速器模塊,其中在所述多個加速器模塊中的第一加速器模塊經配置對第一數據執行第一功能以產生第二數據,并且其中在所述多個加速器模塊中的第二加速器模塊經配置對所述第二數據執行第二功能以產生第三數據。
[0087]附加實施例17.根據附加實施例16所述的網絡功能虛擬化平臺,還包括:直接附連至所述主處理器的外部存儲器裝置,其中所述第一數據從所述外部存儲器裝置被檢索。
[0088]附加實施例18.根據附加實施例17所述的網絡功能虛擬化平臺,還包括:在所述協處理器中的數據交換電路,所述數據交換電路經配置以將所述第二數據路由回至所述第二加速器模塊而同時防止所述第二數據從所述協處理器被輸出至所述主處理器。
[0089]附加實施例19.根據附加實施例18所述的網絡功能虛擬化平臺,其中所述數據交換電路經配置以基于預定的條件鏈接指令組執行加速器功能鏈接。
[0090]附加實施例20.根據附加實施例17所述的網絡功能虛擬化平臺,還包括:在所述協處理器中的數據交換電路,所述數據交換電路經配置以將所述第二數據路由回至所述主處理器。
[0091]前述僅用于說明本發明的原理,并且本領域的技術人員可以進行各種更改。前述實施例可以單獨或以任何組合來實施。
【主權項】
1.一種在網絡功能虛擬化即NFV平臺中的集成電路,其包括: 執行第一功能的第一虛擬功能硬件加速器模塊; 執行第二功能的第二虛擬功能硬件加速器模塊;以及 數據交換電路,其接收從所述第一虛擬功能硬件加速器模塊輸出的數據并將所述數據直接路由回至所述第二虛擬功能硬件加速器模塊。2.根據權利要求1所述的集成電路,其中由所述第二虛擬功能硬件加速器模塊執行的第二功能不同于由所述第一虛擬功能硬件加速器模塊執行的第一功能。3.根據權利要求1所述的集成電路,還包括: 執行第三功能的第三虛擬功能硬件加速器模塊,其中所述數據交換電路接收從所述第二虛擬功能硬件加速器模塊輸出的數據并將該數據直接路由回至所述第三虛擬功能硬件加速器模塊。4.根據權利要求1所述的集成電路,還包括: 直接存儲器存取即DMA引擎,其從片外存儲器裝置接收所述數據。5.根據權利要求1所述的集成電路,其中從所述第二虛擬功能硬件加速器模塊輸出的所述數據被反饋至運行在外部主處理器上的多個虛擬機中的選定的虛擬機,所述外部主處理器被耦合至所述集成電路并且運行管理程序。6.根據權利要求5所述的集成電路,還包括: 可編程邏輯元件,其能夠被重新配置以執行不同的自定義功能。7.根據權利要求5所述的集成電路,其中所述數據交換電路經配置以根據預定的鏈接指令組執行功能鏈接而無需將中間數據發送回至所述外部主處理器。8.一種操作具有主處理器和協處理器的網絡功能虛擬化即NFV系統的方法,其包括: 在所述協處理器處接收來自所述主處理器的第一數據; 使用在所述協處理器中的第一虛擬功能加速器模塊對所述第一數據執行第一功能以產生第二數據;以及 使用在所述協處理器中的第二虛擬功能加速器模塊對所述第二數據執行第二功能以產生第三數據而無需將所述第二數據輸出至所述主處理器。9.根據權利要求8所述的方法,還包括: 使用數據交換電路在包括所述第一和第二虛擬功能加速器模塊的多個虛擬功能加速器模塊之間路由數據,其中所述數據交換電路經配置以根據預定的鏈接指令組來支持虛擬功能加速器鏈接。10.根據權利要求8所述的方法,還包括: 使用在所述協處理器中的第三虛擬功能加速器模塊對所述第三數據執行第三功能以產生第四數據而無需將所述第三數據輸出至所述主處理器。11.根據權利要求10所述的方法,還包括: 在所述協處理器處僅將所述第四數據輸出至所述主處理器。12.根據權利要求8所述的方法,其中響應于第一加速器條件被滿足,所述第一功能被執行。13.根據權利要求12所述的方法,還包括: 當所述第一加速器條件沒有被滿足時,跳過所述第一功能。14.根據權利要求12所述的方法,其中響應于第二加速器條件被滿足,所述第二功能被執行,并且其中所述第二加速器條件不同于所述第一加速器條件。15.根據權利要求8所述的方法,還包括: 分析與所述第二數據相關聯的邊帶信號以確定是否應當對所述第二數據執行所述第二功能。16.—種網絡功能虛擬化即NFV平臺,其包括: 主處理器,其具有創建并運行虛擬機的管理程序;和 協處理器,其具有用于加速所述虛擬機的性能的多個加速器模塊,其中在所述多個加速器模塊中的第一加速器模塊經配置以對第一數據執行第一功能以產生第二數據,并且其中在所述多個加速器模塊中的第二加速器模塊經配置以對所述第二數據執行第二功能以產生第三數據。17.根據權利要求16所述的網絡功能虛擬化平臺,還包括: 直接附連至所述主處理器的外部存儲器裝置,其中所述第一數據檢索自所述外部存儲器裝置。18.根據權利要求17所述的網絡功能虛擬化平臺,還包括: 在所述協處理器中的數據交換電路,所述數據交換電路經配置以將所述第二數據路由回至所述第二加速器模塊,同時防止所述第二數據從所述協處理器被輸出至所述主處理器。19.根據權利要求18所述的網絡功能虛擬化平臺,其中所述數據交換電路經配置以基于預定的條件鏈接指令組來執行加速器功能鏈接。20.根據權利要求17所述的網絡功能虛擬化平臺,還包括: 在所述協處理器中的數據交換電路,所述數據交換電路經配置以將所述第二數據路由回至所述主處理器。
【文檔編號】G06F15/173GK106095719SQ201610277917
【公開日】2016年11月9日
【申請日】2016年4月27日 公開號201610277917.5, CN 106095719 A, CN 106095719A, CN 201610277917, CN-A-106095719, CN106095719 A, CN106095719A, CN201610277917, CN201610277917.5
【發明人】A·H·瑞比, A·陳, M·J·路易斯, J·張
【申請人】阿爾特拉公司