過去幾年來,虛擬化(virtualization)的概念——將軟體從承載其的硬體中分離出來——已經為許多人所熟知。在本文中,我們將描述虛擬化是什麼,並以PowerVR GPU為例看看它如何運作,以及如何為各種市場(特別是汽車產業)帶來巨大的利益。

對於電腦來說,目前的虛擬化技術能夠讓一台電腦同時執行多個作業系統(OS),例如,開發人員可以在微軟(Microsoft) Windows主機上執行一個Linux「訪客」OS,而對於企業而言,它通常用來整合工作負載以減少CapEx和OpEx。在嵌入式平台上,虛擬化技術的主要目的是在降低成本的同時透過分離確保安全性。

當涉及到GPU時,虛擬化提供了支援多個OS同時運作的能力,每個OS都能夠將圖形工作負載提交給底層的圖形硬體實體。這在汽車領域變得越來越重要。例如,透過將一些要求嚴格的系統,如先進駕駛輔助系統(ADAS)和數位化顯示面板,分別放在完全獨立域內以確保他們安全獨立的運行。

讓我們逐一看看虛擬化GPU必須執行的操作:

  • 管理程式(Hypervisor):這基本上是為訪客OS提供的共用虛擬硬體平台(在本例中為GPU硬體)並管理客戶OS託管的軟體實體。
  • 主機作業系統(Host OS)——相較於訪客OS,主機OS具有完整的驅動程式並且對底層硬體具有更高層級的控制能力。
  • 訪客作業系統(Guest OS):由虛擬機器管理程式託管的具有OS的虛擬機器,可以是一個或多個,它們可以共用底層可用的硬體資源。

硬體虛擬化vs半虛擬化

以Imagination Technologies的PowerVR為例,自Series6系列GPU核心以來,它已經具備先進的、完整的硬體虛擬化特性,並且在Series8XT中得到了進一步的增強。透過完全虛擬化,意味著在管理程式下執行的每個訪客OS都不會意識到正與其他訪客OS和主機OS共用GPU資源。每個訪客系統都具有完整的驅動程式,並且可以以獨立和同步的方式直接向底層硬體提交任務。這種方式的好處是在處理不同「訪客」的任務提交時不會再有管理程式的開銷,從而也減少了向GPU提交任務的等待時間,因此具有更高的利用率。

這與半虛擬化(paravirtualization)解決方案有所不同,在半虛擬化方式中,訪客OS能夠意識到它們是虛擬化的並且與其他訪客系統共用底層硬體資源。這種情況下訪客系統需要透過管理程式(Hypervisor)提交任務,整個系統必須作為一個內聚單元協同工作。該解決方案的缺點是管理程式(運行在CPU上)的開銷過高,任務提交延遲過長,這潛在的降低了底層GPU硬體的有效利用率。此外,還需要修改訪客OS(添加額外的功能)以使得它們能夠通過管理程式進行通訊。

GPU虛擬化使用案例: GPU虛擬化應用案例很多,主要集中在嵌入式市場:

  • 汽車
  • 數位電視(DTV)/機上盒(STB)
  • 物聯網(IoT)/穿戴式裝置
  • 智慧型手機/平板電腦

本文中討論的虛擬化主要集中在汽車方面,因為在這個市場,虛擬化將會帶來很多的好處。它有特定的要求,但這也使它成為比較複雜的市場之一。

為什麼汽車市場需要虛擬化?

GPU虛擬化正成為汽車產業的必備需求。大多數一級(Tier 1)代理商和OEM都選擇加入更多的ADAS功能,同時,在新款汽車中支援多個高解析度顯示器也變得越來越普遍。

隨著汽車越來越自動化,ADAS的功能也隨之增加。這些功能在計算上十分複雜,而現在GPU強大的平行運算能力使得它們能夠很好的處理這些任務。於此同時,儀表板和資訊娛樂設備(在儀錶板和後排座位處)以及擋風玻璃上更高解析度的顯示正成為重要發展趨勢。

汽車系統虛擬化環境中支援多個應用程式展示

針對汽車產業

那麼,為什麼PowerVR虛擬化特性適用於汽車呢?從本質上講,這是因為它提供了一系列解決多種問題的特性,例如,硬體穩健性以實現最大的安全性和服務品質,以確保持續的性能,以及硬體的最大硬體利用率。

隔離

首先讓我們看看基本的隔離方式,這是不同OS及其對應應用之間的隔離,這些應用之間透過隔離以確保安全性,這正是虛擬化基本的好處之一。

透過展示來看,它顯示了一個OS、一個顯示關鍵資訊如速度、警示燈等的顯示器,其旁並搭配一個導航應用程式,這是一個不太重要的OS,先是衛星導航應用程式崩潰(人為),緊隨其後是「核心崩潰」,然後是全面的重啟。我們要注意的要點是這些並不會影響運行於其他OS上的儀表板顯示應用;它繼續不間斷的工作,另外請注意,一旦這個OS重新開機,就能再次無縫地向GPU提交任務。

服務品質:保確性能水準

汽車產業的關鍵要求之一是需要一個或多個關鍵應用程式/OS得到足夠的資源來提供所需的性能。在PowerVR上,這是透過優先順序機制實現的,GPU中一個專用的微控制器(MCU)處理調度並對每個OS的優先順序進行設置(如果需要也可以設置每個OS中應用程式/工作負載的優先順序)。當更高優先順序OS的工作負載提交給GPU時,低優先順序OS的工作負載會從上下文中切換出來。

簡單來說,「上下文切換」(context switching)是當前操作在盡可能早的時間點暫停的地方,所需的資料會被保存下來以便在稍後的時間點恢復操作時使用。

例如,中使用Series6XT(第一代PowerVR GPU支援完全硬體虛擬化)平台最早可能使用的時間點是:

  • 幾何處理:調用繪製細微性
  • 畫素處理:貼片細微性
  • 運算處理:工作組細微性

一旦更高優先順序OS的工作負載完成後,較低優先順序的工作負載就會恢復並完成,這個特性有助於確保關鍵的更高優先順序的工作負載獲得所需的GPU資源,從而保證所需的性能要求。

在展示中,GPU上運行了兩個OS,一個被認為十分關鍵(執行儀表板集群應用程式),另一個則不那麼重要(執行導航應用程式)。

在展示的第一部份,關鍵OS被設置為高優先順序,它要求的性能為60fps(每秒60格)。將其提高到90fps,然後再提高到120fps,從展示中可知,不那麼重要的OS的導航應用程式的fps隨之下降了,當目標fps的值下降到10和20fps,導航應用程式的畫面更新率則會相應增加。

最後,當關鍵OS所需的性能級被設置為「最大可能」時,由於其優先順序更高,它將消耗所有的GPU資源,而且正如預期的那樣,導航應用程式會呈現完全的停滯。

硬體虛擬化的好處

完全硬體虛擬化的一個關鍵優勢是:在GPU上調度不同OS任務時的有效性,以及最大的利用率和性能。

在展示中兩個OS提交的工作負載是相同的,結果可以直接進行比較。

最初,兩個OS的工作負載具有相同的優先順序,因此在硬體上(透過GPU中有專用的調度微控制器)以迴圈的方式調度。二者能平等地共用GPU資源,並且具有相同的性能(以每秒格數來量化)。其次,左側OS中應用程式的性能被人為限制為最大幀率,該速率每隔幾秒變化一次,右側OS的應用程式的性能(fps)會相應增加,它沒有固定的幀率設置。這說明調度效率和相應的最大利用率在虛擬化環境中實現了,即從虛擬化的GPU硬體獲得最大性能。

第一個支援完全硬體虛擬化的PowerVR系列是Series6XT,本節將討論?Imagination Technologies的Series8XT如何進一步增強,並提供新的特性和增強功能。

上下文切換細細微性

在Series8XT上,中上下文切換可以更細細微性地執行,從而確保更快速的上下文切換,在較低優先順序的工作負載和較高優先順序的工作負載之間的切換,上下文切換細細微性目前主要是:

  • 頂點處理:原始細微性
  • 畫素處理:次平鋪或最壞情況下回到貼片細微性

每個資料主的終止

在優先順序較低的應用沒有在定義的時間範圍內切換上下文的情況下,這時需要根據資料主(計算、頂點或畫素處理)採用DoS機制終止某個集成或者將應用程式進行軟體重定。前幾代只支援計算終止,而頂點和畫素處理則需要軟重定,因此如果與不安全的低優先順序應用程式重疊運行,則會影響高優先順序的工作負載。在Series8XT中,現在所有資料主都可以被終止,確保即使高優先順序/關鍵的工作負載與需要結束的應用程式重疊時也不會受到影響。

每個SPU工作負載的提交控制

得益於此特性,一個特定的應用程式就可以在GPU中為它自己的可擴展處理單元(SPU)執行它的工作負載。例如,有利於汽車中基於運算長時間運行的ADAS應用,在應用中可以不間斷的運行自己的專用SPU,而其他應用程式,可能來自於其他OS,則使用另一種機制(比如基於上下文切換的更高優先順序任務)分享剩餘的GPU資源。

緊密整合二級MMU

上一代的GPU採用一級MMU,因此要求SoC供應商設計並實現二級/系統級MMU或相似的機制來支援虛擬化。現在Series8XT已經在GPU中整合了二級MMU,這帶來了以下好處:

  • 最佳化設計並與一級MMU緊密耦合,實現低延遲並提高效率
  • 降低SoC供應商的開發難度,使產品更快的上市
  • 在管理應用程式中對於可用的實體設置對應的獨立軟體
  • 支援全/雙向相干支援,提高性能並減少系統頻寬
  • 從本質上說,可以在虛擬化環境中提供更高級別的保護和更小的細細微性安全支援

GPU整合的硬體虛擬化技術非常的有效,非常適合並滿足汽車產業的許多需求。例如最新的Series8XT GPU進一步加強了功能,可協助實現下一代車載資訊娛樂和自動駕駛,安全且經濟高效。