31

Dec . 2024

AURIX™ TC4x虛擬化技術詳解

分享至

引言

在之前的《AURIX™ TC4x虛擬化技術輔助下一代汽車EE架構設計》一文中,我們已經介紹了嵌入式虛擬化的發展歷史,基本概念,使用案例,它的優勢以及當前面臨的挑戰。接下來,我們將深入探討TC4x對虛擬化技術的硬體支持,軟體開發流程以及現有的軟體Demo。

1. AURIX™ TC4x虛擬化硬體架構

圖1 AURIX™ TC4x虛擬化架構

AURIX™ TC4x在硬體上全面支援虛擬化技術,包括CPU虛擬化,記憶體虛擬化,中斷虛擬化,週邊虛擬化以及虛擬機器之間的IPC通訊(如圖1所示)

2. CPU虛擬化

圖2 AURIX™ TC3x核心硬體資源簇

  2.1 CPU虛擬化的硬體支持  


我們知道,CPU的軟體運作狀態透過一套硬體資源簇來管理,圖2是AURIX™ TC3x 1.6.2核心的硬體資源簇。

圖3 TC4x硬體資源簇

TC4x 核心架構從1.6.2升級到1.8,一個重要的改變就是增加了對虛擬化的支援。為此,TC4x採用了三套硬體資源簇(HRA,HRB和HRHV)來管理CPU的運作(圖3)。

圖4 TC4x硬體資源簇與虛擬機器的對應關係

TC4x最多支援6個CPU,每個CPU最多支援8個虛擬機器。其中,VM0用作Hypervisor,負責調度上層的7個虛擬機(Guest VM),並由硬體資源簇HRHV來管控;VM1是一個即時虛擬機,獨享硬體資源簇HRA;另外6個虛擬機VM2- VM7,共享硬體資源簇HRB,可透過輪詢調度的方式佔用HRB。如圖4所示:

核心復位後,虛擬化功能預設是開啟的。透過修改VCON0的EN位,使用者可以去啟用或停用某一個CPU的虛擬化功能。需要注意的是VCON0.EN位元具有「write once」的屬性,即在系統的一個上電週期內只能修改一次,二次修改該值無效。


每個CPU同一時刻只能有一個虛擬機器運行,使用者可以透過讀取VCON1的CVMN位元來取得目前運行的虛擬機器的Number。而下一個需要運作的目標虛擬機,則可以透過VCON2的VMN位元進行設定。此外,為了支援虛擬機器之前的切換,TriCore1.8核心引入了兩個新的指令,RFH(Return from Hypervisor)和HVCALL:


  • RFH:用於Hypervisor到上層Guest VM的切換。客戶在Hypervisor軟體中呼叫RFH指令,則可以實現從Hypervisor到其他目標虛擬機器的切換。
  • HVCALL:類似之前TriCore1.6的SYSCALL,用於上層Guest VM到Hypervisor的切換。因為上層VM之間不能直接切換,需要Hypervisor來統一調度,所以上層虛擬機器執行完成之後,需要呼叫HVCALL回到Hypervisor軟體中去。

圖5 虛擬機器在CPU中的部署

  2.2 虛擬機器在CPU中的部署  


CPU在重設之後都會先進入VM0(也就是Hypervisor軟體),在Hypervisor中完成硬體資源的初始化後,則開始進行虛擬機器的調度,虛擬機器在CPU中的部署有以下幾種:

  • Hypervisor上層只有一個虛擬機器VM1運作(圖5.a):類似傳統的CPU,使用者進入VM0之後可以直接切換到VM1,VM1獨享CPU的硬體資源和週期性任務。
  • Hypervisor上層有兩個虛擬機器VM1和VM2運作(圖5.b):使用者需要分別為VM1和VM2分配硬體資源,Hypervisor需要依照客戶的需求調度VM1和VM2。
  • Hypervisor上層有兩個以上VM運作(圖5.c):由於VM2-VM7是共用一套資源簇HRB,所以每次切換到HRB進行操作時,需要特別指定是哪一個VM進行操作,一般客戶可以透過輪詢的方式去調度HRB裡面的虛擬機器。

圖6 TC4x多核心虛擬化

以上是單核心的情況,在多核心場景下,每個核心都可以靈活地使用不同的虛擬機器分配機制來實現整個系統的調度,如圖6所示:

圖7 虛擬化部署範例

圖7是虛擬機器在不同CPU內部署的範例,假設我們有兩個應用APP1和APP2,它們分別佔用CPU0/1/2/3/4的VM1和CPU3/4/5的VM2。可以看到,不同CPU裡面Hypervisor的調度是不同的,有可能存在一個VM獨享CPU的情況(CPU0/1/2/5),也有可能需要Hypervisor去調度多個虛擬機器(CPU3/4),具體如何使用可以根據客戶的需求靈活配置。

3. 記憶體虛擬化

圖8 TC4x L1/L2 MPU

在TC2x/TC3x的核心架構中,記憶體保護都是任務層級的。作業系統透過MPU模組,對不同任務設定Memory的存取權限。這項功能在TC4x的核心架構中依然沿用,並且我們將任務層級的MPU保護稱為Level 1 MPU。而當我們啟用了虛擬化功能後,對於不同虛擬機器之間的存取保護,則需要額外的MPU保護,我們將不同Guest VM(VM1-VM7)之間的MPU保護稱為Level 2 MPU。如圖8所示:

圖9 L1 MPU保護暫存器

  3.1 Level 1 MPU保護  

L1的MPU保護是透過HRx_CORECON.PROTEN暫存器的PROTEN位元來啟用。 HRHV,HRA和HRB均可獨立設定是否啟用L1的MPU保護。 TC4x支援多達24個資料段和16個代碼段的存取權限設定。客戶可以在每個VM的RTOS中,透過配置CPXEy,DPWEy以及DPREy暫存器來選擇自身VM運行存取的資料段和代碼段,並透過配置CPUx_HRx_PSW暫存器的PRS2和PRS位元來切換不同任務需要保護的資料和代碼段,TC4x最多支援8個保護暫存器簇(PRS0-PRS7)。圖9是L1 MPU保護所涉及的暫存器示意圖。

圖10 L2 MPU保護暫存器

  3.2 Level 2 MPU保護  

在啟用了虛擬化功能之後,L2的MPU保護預設是開啟的,使用者可以根據自身需求,在Hypervisor軟體中配置不同虛擬機器的存取權限。 HRHV_CPXE_x,HRHV_DPRE_x以及HRHV_DPWE_x中的x由VCON2.L2_PRS位元來決定,其他的配置部分與L1 MPU相同。圖10是L1 MPU保護所涉及的暫存器示意圖。

4. 中斷虛擬化

圖11 TC3x/TC4x SRC暫存器對比

  4.1 中斷虛擬化的硬體支持  

如下圖所示,是TC3x和TC4x的服務請求控制暫存器(SRC),可以看到對於TC4x的SRC暫存器,除了我們熟悉的優先權配置SRPN,服務請求啟用位元SRE,以及服務控制類型TOS以外,也額外增加了VM的位元域。這表示,對於每一個中斷服務請求節點,使用者可以設定VM0-VM7的選項,從而將中斷的處理對應到某一個CPU的某一個VM中去。

圖12 虛擬機器的中斷仲裁

  4.2 虛擬機器的中斷仲裁和回應機制  

中斷控制單元ICU會對不同硬體資源群集內部的虛擬機器中斷服務請求進行仲裁,虛擬機器是否參與仲裁由暫存器VMEMz.VMy的配置決定。仲裁採用輪詢機制,VM0-VM1-VMz依序輪詢,其中VMz表示的是HRB裡面的虛擬機,HRB內部也依照輪詢機制進行二級仲裁。當某一台虛擬機器參與仲裁之後,其產生的最高優先權的中斷服務請求會更新到VMxn_ICR的PIPN位元等待ICU的仲裁。如下圖(圖12)所示:

圖13 虛擬機器的中斷處理流程

此外,虛擬機器的中斷還支援搶佔功能,使用者可以對每個虛擬機器的中斷設定搶佔閾值,只有高於該閾值的優先權中斷才可以搶佔目前的虛擬機器中斷。此功能可透過配置VMn_PETHRESH暫存器的的PE_THRESH位元域來實現。


整個虛擬機器的中斷處理流程如下(圖13):


  • 當產生中斷的回應虛擬機器為目前正在運作的虛擬機器時,則不需要做任何的虛擬機器切換,只需要確認目前VM的中斷啟用程式VMn_ICR.IE置1,且其PIPN號碼大於正在運作的虛擬機器的中斷優先權號,則直接處理新的中斷,否則新的中斷將處於Pending狀態。此機制適用於VM0,VM1以及VM2-7。
  • 當產生中斷的回應虛擬機器是Hypervisor,而目前正運作在VM1或VM2-7時,則需要判斷新中斷的PIPN號是否大於Hypervisor的搶佔閾值,如果大於搶佔閾值且大於目前的CCPN號,則可以直接切到Hypervisor中執行新的中斷,否則新的中斷將處於Pending狀態。
  • 當產生中斷的回應虛擬機器是VM1,而目前正運行在VM2-7,或反過來的情形,則需要判斷新中斷的PIPN號是否大於正在執行的虛擬機器的搶佔閾值,如果大於搶佔閾值且大於目前的CCPN號,此時會產生Hypervisor的Trap,然後在該Trap中做好虛擬機器的配置工作,再切到新的虛擬機器之後進行中斷處理,否則新的中斷將處於Pending狀態。
  • 當產生的中斷回應虛擬機器時VM2-7,而目前正運作在VM2-7不同於先前虛擬機器之中,則需要判斷新中斷的PIPN號碼是否大於正在運作的虛擬機器的搶佔閾值,如果大於搶佔閾值且大於目前的CCPN號,此時會產生一個的Trap,然後在該Trap中進行虛擬機器的Swap操作,再切到新的虛擬機器之後進行中斷處理,否則新的中斷將處於Pending狀態。

5. 週邊虛擬化

圖14 TC3x/TC4x外設暫存器保護

週邊裝置的存取權限是透過ACCEN暫存器來實現的,只有ACCEN選取的Master才執行存取該週邊裝置的資源。 TC3x中Master用6個bit的Tag ID表示。在TC4x中,我們對Master的定義做了額外的擴展,除了依據TAG ID以外,還額外增加了VM ID和PRS ID,客戶可以設定任意CPU的任意VM對外設的存取權。如下圖所示:

圖15 寄存器修改權限

此外,TC4x針對原有的和SafetyEndinit 機制也做了修改,新的PROT和PROTE暫存器保護機制會兼顧不同虛擬機器的暫存器權限設置,將暫存器修改的權限下發到VM層級。如下圖所示:

6. IPC通信

圖16 虛擬機器的IPC通信

有別於先前的核間通信,引進虛擬機器之後,也會牽涉到虛擬機器之間的通信(圖16)。虛擬機器直接按的通訊一般可採用Share memory的方式。利用先前章節介紹的​​記憶體虛擬化機制,為不同虛擬機器開闢一塊共享記憶體用於資訊互動。

7. 虛擬化軟體開發流程與例程

圖17 虛擬機器軟體開發流程

  7.1 虛擬化軟體開發流程  

一般來講,虛擬化軟體的開發可以分為四個步驟(圖17):


1. 需求定義

首先,客戶需要根據專案的實際需求,做系統級的資源分配。將不同的軟體分配到不同的CPU,以及CPU內部不同的VM中去。


2. Hypervisor軟體配置

有了最基本的硬體資源分配之後,客戶需要開發一個統一的Hypervisor軟體去管理和調度不同的虛擬機器。

配置:包括對週邊資源的分配,記憶體保護的設定以及中斷資源的分配等

調度:根據客戶的需求,設定不同的調度策略,例如基於時間觸發的調度或基於事件回應的調度策略。


3. 虛擬機器開發

Hypervisor軟體開發完成之後,不同的虛擬機開發團隊基於Hypervisor的配置,獨立開發各自的應用,彼此之前沒有任何外設,內存,中斷的相互幹擾。開發完成後,需要基於Hypervisor的調度策略做虛擬機器層級的整合測試,以驗證虛擬機器應用的基本功能和可靠性。


4. 系統整合測試

不同虛擬機器開發團隊將各自的虛擬機器整合到ECU中去,基於Hypervisor做系統級的整合測試,以驗證整體功能的完整性和可靠性。

圖18 ADS中Hypervisor Demo介紹

  7.2 虛擬化軟體例程  


7.2.1 Demo工程介紹

英飛凌將多個TC4x虛擬化的例程放在ADS Limited開發環境中,客戶可透過ADS Limited搜尋「Hypervisor」或「Virtualized」等關鍵字找到相關例程。


本文以iLLD_TC4D9_ADS_Virtualization_Hypervisor_StandAlone這個Demo。此Demo支援All-in-one模式,即Hypervisor和虛擬機器軟體在同一個工程裡面。此外,該Demo同時支援Standalone模式,即上述工程只提供Hypervisor的初始化配置和調度功能,虛擬機軟體需要額外的軟體支持,額外的軟體包含iLLD_TC4D9_ADS_Blinky_LDE_Virtualized和iLLD_TC4D9_ADS_CAN_Blinky_LDE_Virtualized和iLLD_TC4D9_ADS_CAN_Loop_Back_Mode_LirtualBack_Mode_FirtFirtBcDS_CAN_Loop_Back_Mode_LirtualAack_Rirt_Loop_Pirt_CAN_Loop。兩個工程的切換需要透過Ifx_Cfg.h裡面的IFX_CFG_HYPERVISOR_STANDALONE完成。如圖18所示:


圖19 Hypervisor軟體啟動流程

  7.2.2 Demo工程的啟動流程  

以All-in-one工程為例,以下是其啟動流程(圖19):


  1. 上電之後首先會運行晶片內部的boot,之後跳轉的VM0的Start函數跑SSW軟體,SSW軟體和TC3x的啟動流程類似,包括BIST測試,PLL的初始化,CSA的配置,Trap和中斷向量表的配置等待
  2. 之後就正式開始Hypervisor軟體的執行,主要包含每一個core的初始化配置,L2的MPU保護,各個虛擬機器的中斷配置,調度策略的初始化等等。之後就確定下一個需要運作的目標虛擬機VM1,呼叫RFH指令切到VM1虛擬機
  3. 開始執行VM1裡面的任務,完成任務後重新切回Hypervisor裡面進行下一次虛擬機器的調度

圖20 Hypervisor調度策略

  7.2.3 Hypervisor的調度策略  

此Demo支援兩種調度策略(圖20):


  • Counter Based:基於counter計數(事件觸發)的調度策略,當Guest VM中的程式碼運行到某個counter值的時候,透過呼叫HVCALL切回Hypervisor,從而完成本次虛擬機器的調度
  • Timer-interrupt based:基於STM定時器中斷(時間觸發)的調度策略,STM的中斷回應配置為Hypervisor,當在Guest VM裡面運行到某一個時刻,STM觸發中斷,此時non running VM的中斷會觸發Hypervisor Trap進入Hypervisor,Hypervisor Trap的位址對應調度表的位址,從而進行下一次調度。

此Demo可以實現多個虛擬機器的輪詢調度,客戶可以根據自身的需求靈活地配置Hypervisor,實現適合自己專案開發的虛擬機器配置和軟體調度策略。

總結

本文首先介紹了TC4x的硬體對虛擬化的全面支持,包括對CPU,Memory,中斷,週邊裝置的虛擬化,以及虛擬機器之間的IPC通訊。其次,從實際專案開發的角度,介紹了嵌入式虛擬化的開發流程以及Hypervisor的兩種調度策略。嵌入式虛擬化的引入,可以幫助可以更好地實現資源分配和安全隔離,幫助客戶節省更多開發和集成的成本。



文章來源:英飛凌汽車電子生態圈

半導體元件詢問單
Inquiry Form
如您對本公司產品有任何的問題(產品報價、技術諮詢、產品文件、樣品索取、合作代理…等),都可以透過諮詢表單跟我們聯絡,我們將有專人回覆。
隱私權暨個人資料保護聲明

STEP

01
!

有標示 欄位為必填,請確實填寫謝謝。

諮詢需求
市場應用

↑若無法選擇適當的產業類別,請直接在此欄輸入您的所屬產業

↑請直接在此欄輸入您的所屬市場應用

諮詢商品

↑若無法搜尋到您要諮詢的品牌,請直接在此欄輸入品牌名稱

↑若無法搜尋到您要諮詢的料號,請直接在此欄輸入料號

備註內容

下一步,聯繫資料填寫

STEP

02
!

有標示 欄位為必填,請確實填寫謝謝。

公司名稱
所屬部門
聯絡人
職稱
聯絡電話
電子信箱
聯絡地址
交貨地址
是否為貿易商
驗證碼
訂閱電子報
Subscribe to Newsletter
!

有標示 * 欄位為必填,請確實填寫謝謝。

公司名稱
所屬部門
姓名
職稱
聯絡電話
選擇電子報語系
電子信箱
驗證碼