硬件加速器虛擬化的制作方法
【專利說明】
【背景技術】
[0001]除非在此處進行說明,否則此處所描述的材料不是本申請權利要求的現有技術并且不因包含在該部分中而承認是現有技術。
[0002]云計算可以指作為服務在因特網上輸送的應用以及在提供那些服務的數據中心中的硬件連同系統軟件,云計算近年來已經在信息技術占據了中心地位。通過虛擬化技術(云計算的組成部分)底層硬件資源可以由每個均運行其自己的操作系統(OS)的多個虛擬機或域所共享。共享硬件資源可以產生較高的硬件利用率和較低的功耗。虛擬機監控器(VMM)(有時還稱為管理程序)通常負責將OS的每個運行實例與底層物理機隔離。VMM可以轉換或仿真客體OS的特殊指令。
[0003]基于圖形處理單元(GPU)的和基于現場可編程門陣列(FPGA)的硬件加速器也正在服務器行業變得普及。加速器加速應用的計算密集部分。將硬件加速器成功地且高效地添加到虛擬化服務器中可以使得云客戶端對于各種應用得到明顯加速。GPU通常較廉價且利用高級語言和應用編程接口(API)編程,這不考慮硬件細節。FGPA在許多具體應用上超越GPU。而且,執行部分運行時重構(run-time reconfigurat1n)的能力可以是FPGA的顯著區別。
[0004]一些FPGA虛擬化解決方案會導致在單個OS上停留在多任務級。普遍的GPU虛擬化方法主要是截獲API調用且將API調用重引導至主機或特權域的用戶空間,導致效率降低且開銷較高。另外,在一些FPGA虛擬化或GPU虛擬化解決方案中,加速器通常可以每次僅服務一個請求。
[0005]概述
[0006]本公開一般描述了虛擬化硬件加速技術。
[0007]根據一些示例,提供了各種訪問虛擬化的硬件加速模塊的方法。示例的方法可以包括:識別來自第一虛擬機(VM)的對能夠在硬件加速模塊上執行的第一加速器應用的的第一訪問請求;以及識別來自第二VM的對能夠在硬件加速模塊上執行的第二加速器應用的第二訪問請求。該方法還可以包括:利用協同監管器來安排第一訪問請求和第二訪問請求。該方法可以進一步包括:通過將對所述第一加速器應用的所述第一訪問請求的至少一部分和對所述第二加速器應用的所述第二訪問請求的一部分加載且同時處理所述訪問請求的第一部分和第二部分來使所述硬件加速模塊處理至少所述第一訪問請求的所述一部分和所述第二訪問請求的所述一部分。
[0008]根據其它示例,描述了虛擬化硬件加速模塊的各種協同監管器。示例的協同監管器可以包括能夠在處理器上執行的請求插入模塊。該請求插入模塊可被配置為識別來自第一虛擬機(VM)的對能夠在硬件加速模塊上執行的第一加速器應用的的第一訪問請求;以及識別來自第二 VM的對能夠在硬件加速模塊上執行的第二加速器應用的第二訪問請求。示例的協同監管器還可以包括能夠在同一處理器上執行的排程模塊。該排程模塊可被配置為安排第一訪問請求和第二訪問請求。協同監管器可被配置為:通過將對所述第一加速器應用的所述第一訪問請求的至少一部分和對所述第二加速器應用的所述第二訪問請求的一部分加載且同時處理所述訪問請求的第一部分和第二部分來使所述硬件加速模塊處理至少所述第一訪問請求的所述一部分和所述第二訪問請求的所述一部分。
[0009]根據另外的示例,提供了虛擬化硬件加速的各種數據中心。數據中心可以包括至少:第一虛擬機(VM)和第二 VM,每個均能夠操作以便能夠在一個或多個物理機上執行;硬件加速模塊,其被配置為執行至少第一加速器應用和第二加速器應用;以及數據中心控制器,其能夠在一個或多個服務器上執行。該數據中心控制器可被配置為:識別來自第一虛擬機(VM)的對能夠在硬件加速模塊上執行的第一加速器應用的第一訪問請求;以及識別來自第二 VM的對能夠在硬件加速模塊上執行的第二加速器應用的第二訪問請求。該數據中心控制器還可被配置為:安排第一訪問請求和第二訪問請求,以及通過將對所述第一加速器應用的所述第一訪問請求的一部分和對所述第二加速器應用的所述第二訪問請求的一部分加載且同時處理所述訪問請求的第一部分和第二部分來使所述硬件加速模塊處理至少所述第一訪問請求的所述一部分和所述第二訪問請求的所述一部分。
[0010]根據又另外的示例,非暫態計算機可讀存儲介質可以存儲有訪問數據中心處的虛擬化硬件加速模塊的指令。響應于指令在一個或多個計算設備上執行,可以執行類似于本文所描述的方法。
[0011]前面的概述僅僅是示例性的,而不意在以任何方式進行限制。通過參考附圖以及下面的詳細說明,除了上文所描述的示例性的方案、實施例和特征之外,另外的方案、實施例和特征將變得清晰可見。
【附圖說明】
[0012]通過下面結合附圖給出的詳細說明和隨附的權利要求,本公開的前述特征以及其它特征將變得更加清晰。應理解的是,這些附圖僅描繪了依照本公開的多個實施例,因此,不應視為對本公開范圍的限制,將通過利用附圖結合附加的具體描述和細節對本公開進行說明,在附圖中:
[0013]圖1示出了示例的基于數據中心的系統,其中可以實施硬件加速器的虛擬化;
[0014]圖2示出了示例的系統,其中可以實施硬件加速器。
[0015]圖3示出了示例的系統,其中可以利用協同監管器(coprovisor)來虛擬化硬件加速器;
[0016]圖4示出了示例的協同監管器的實施方式;
[0017]圖5示出了存儲器訪問上下文切換如何可用于加速加速器應用周轉時間;
[0018]圖6示出了在用于硬件加速器的示例的協同監管器安排的流水線操作中請求狀態過渡圖和直接存儲器訪問(DMA)讀(READ)信道狀態過渡圖;
[0019]圖7示出了通用計算設備,其可用于提供硬件加速器的虛擬化;
[0020]圖8是示出可通過諸如圖7中的計算設備的計算設備執行的、提供對虛擬化硬件加速器的訪問的示例的方法的流程圖;以及
[0021]圖9示出了示例的計算機程序產品的框圖,
[0022]全部依照本文所描述的至少一些實施例來布置。
【具體實施方式】
[0023]在下面的詳細說明中,將參考附圖,附圖構成了詳細說明的一部分。在附圖中,除非上下文指出,否則相似的符號通常表示相似的部件。在詳細說明、附圖和權利要求中所描述的示例性實施例不意在限制。可以使用其它實施例,并且可以做出其它改變,而不偏離本文呈現的主題的精神或范圍。將易于理解的是,如本文大致描述且如圖中所圖示的,本公開的方案能夠以各種不同配置來布置、替代、組合、分離和設計,所有這些都在本文中明確地構思出。
[0024]本公開一般尤其涉及與訪問或以其它方式操作虛擬化硬件加速模塊有關的方法、裝置、系統、設備和/或計算機程序產品。
[0025]簡言之,一般描述了虛擬化硬件加速的技術。在一些示例中,協同監管器組件可被配置為多路復用多個域的請求,以在半虛擬化(paravirtualized)環境中訪問諸如現場可編程門陣列(FPGA)、專用集成電路(ASIC)或相當的加速器的硬件加速器。超請求可用于硬件加速虛擬化,其中硬件加速模塊同時加載對第一加速器應用的請求的數據的一部分和對第二加速器應用的另一請求的數據的一部分且同時處理這兩個部分的數據。由于直接位于設備驅動器層上,協同監管器可以通過直接存儲器訪問(DMA)上下文切換來安排同時對硬件加速器的訪問請求的部分。
[0026]實施例可以實現于涉及到多個服務器和硬件加速器的機器級或數據中心級。此夕卜,如本文所使用的,硬件加速器可以包括例如FGPA、ASIC和類似的極大規模集成(VLSI)電路。在數據中心實施方式中,在一個或多個物理服務器上執行的多個虛擬機(VM)可以將請求提交給一個或多個硬件加速器(例如,FPGA),其中請求可由協同監管器來安排。
[0027]如本文所使用的數據中心可以是指通過一個或多個物理服務器裝置以及在那些服務器裝置中執行的一個或多個虛擬機來為客戶提供(host)服務和應用的實體。數據中心的客戶,也稱為租戶,可以是為多個用戶提供對他們的服務的訪問權的組織。一個示例的配置可以包括執行由一個或多個數據中心所提供的例如金融市場或科學計算中所使用的那些計算密集型計算的應用,其中數據中心(多個)可以采用加速。因此,客戶可以在一個或多個網絡上通過諸如瀏覽器的客戶應用來與零售服務的那些應用通信以及接收所提供的服務,而不需要實現實際上執行各個應用。該方案與每個服務提供商將執行他們的應用且使他們的用戶訪問在物理地定位于零售服務場所(premises)之上的零售服務的自身服務器上的那些應用的配置形成對比。
[0028]圖1示出了依照本文所描述的至少一些實施例布置的示例的基于數據中心的系統,其中可以實施硬件加速器的虛擬化。
[0029]如示意圖100所示,物理數據中心102可以包括一個或多個物理服務器110、111和113,其中每個物理服務器均可被配置為提供一個或多個虛擬機104。例如,物理服務器111和113可配置為分別提供四個虛擬機和兩個虛擬機。在一些實施例中,一個或多個虛擬機可以組合成一個或多個虛擬數據中心。例如,由服務器111提供的四個虛擬機可組合成一個虛擬數據中心112。虛擬機104和/或虛擬數據中心112可被配置為經由云106將云相關數據/計算服務(諸如各種應用、數據存儲、數據處理或類似物)提供給一組客戶108(諸如在計算設備處的個體客戶或企業客戶)。
[0030]在一些示例中,半虛擬化的FPGA(pvFPGA)加速器115可實施為物理數據中心102的部分(或者在該物理數據中心102之外)并且可以使用共享存儲器用于VM之間的數據傳輸。VM可以通過一個調用來訪問FPGA加速器115,而典型的GPU實施方式可以采用若干API調用。而且,不同于在GHJ虛擬化中,多路復用方案可以為不同的VM供給不同的最大數據傳輸帶寬。用于VM的不同的最大數據傳輸帶寬可通過共享數據池的尺寸的調整來實現。協同監管器可以管理設備驅動器層處FPGA加速器115的多路復用。另外,DMA上下文切換可以使FPGA加速器115能夠同時服務多于一個的請求。
[0031]圖2示出了依照本文所描述的至少一些實施例布置的示例系統,其中可以實施硬件加速器。
[0032]如示意圖200所示,物理服務器202(例如,圖1中的物理服務器110、111或113)可以被配置為執行多個虛擬機,諸如第一虛擬機204、第二虛擬機208和其它虛擬機(未示出)。每個虛擬機均可以執行一個或多個應用。例如,第一虛擬機204可以執行第一應用(appl)206,第二虛擬機208可以執行第二應用(app2)210。虛擬機管理器(VMM)212可以被配置為管理虛擬機。
[0033]物理服務器202還可以包括硬件加速模塊218。硬件加速模塊218可被配置為實施硬件加速器,以提高計算效率且降低用于可并行處理或應用的操作成本。在一些實施例中,硬件加速模塊218可以包括FPGA、ASIC或具有多個邏輯單元或數字單元的類似集成電路,其可以組合而形成具有各種特征或功能的電路和/或處理器。配置控制器214可被配置為將一個或多個硬件加速器(例如,作為一個或多個配置件或配置文件,在下文中更詳細說明)加載到硬件加速模塊218上。在一些實施例中,每個加載到硬件加速模塊218上的硬件加速器可以與在虛擬機上實施的一個或多個應用相關聯。例如,一個硬件加速器可以與第一應用(appl )206相關聯,另一硬件加速器可以與第二應用(app2)210相關聯。在一些實施例中,虛擬機204、208可以通過例如經由共享系統存儲器220傳送數據而將它們的計算負載的部分傳輸給硬件加速模塊218上的關聯的硬件加速器。這可以提高虛擬機204、208和應用206、210的計算效率以及速度。
[0034]在一些實施例中,配置控制器214可被配置為基于一個或多個配置程序或配置件216將硬件加速器加