依循車載應用場景需求 虛擬化設計抓緊七重點(1)

在上一期文章中,我們介紹了幾種常見的嵌入式裝置虛擬化方法。要將一個裝置虛擬化,並在互相隔離的軟體間進行共享,必須根據不同的情境,遵循相對應的某些要求。本文將以車載嵌入式設備為討論範疇,提供SoC架構師應該遵循的整套指引。為了就這部分進行說明,我們把所有遵循這些指引的裝置,都稱為「運轉良好的裝置」。 裝置情境與指定 本文使用「情境」這個名詞,來描述裝置功能性中可以獨立指定給軟體使用的部份。此類情境可能包括與其運作有關聯的狀態。任何的嵌入式裝置,例如支援或不支援硬體虛擬化的硬體加速器或週邊裝置,都具備一個或數個此類的情境(圖1)。 圖1 裝置情境   我們檢視所有現行的裝置,可以觀察到它們都擁有單一的主情境,以及零個或一個以上的次情境。主情境包含管理次情境(如果存在的話)指定的控制部份,並且可能包含其它的行為,且這些行為通常原本只供使用裝置、且級別最高的特權軟體使用(圖2)。運轉良好的裝置上所有的次情境,都必須彼此獨立且相互隔離(此類裝置通常被稱為支援硬體虛擬化)。 圖2 具備次情境的裝置   我們也必須定義裝置指定的意思:在本文中,要把裝置的情境指定給軟體,需要: ‧被指定使用裝置的軟體可直接使用情境(若有的話)提供的任何記憶體映射暫存器。 ‧裝置情境代表軟體進行記憶體的存取,必須接受記憶體保護硬體,如系統記憶體管理單元或系統記憶體保護單元的監督,且該硬體接受負責提供情節隔離之更高級別的特權軟體的管理(允許的組合詳述如下)。 ‧裝置情境觸發的中斷,被導引至應對該情境被指定的軟體 在運轉良好的裝置上,主情境行為通常可能產生從次情境內部就可以看到的效果。此類行為的例子可能包括: ‧對其它情境產生效應的裝置行為,且必須接受特權軟體判定 ‧對效能無關鍵影響的裝置行為,並透過裝置模擬或半虛擬化由較低級別的特權軟體取用 常見的設計樣態雖然都要讓次情境相同,但裝置要運轉良好,所有的次情境並不需要完全相同。一個次情境的運作,不能產生任何一種可從另一個次情境看到的效果,但卻可以允許產生從主情境看得到的效果。 如此一來,已被指定給不同次情境的軟體實體,彼此間可維持隔離性。當效能隔離並非使用場景需求時,次情境也可能共享裝置資源。在這種情況下,Arm建議由主情境提供機制來靜態或動態判定資源的分配,以確保能符合及時性的限制。不管有沒有共享裝置,在Armv8-R...
2024 年 01 月 15 日

依循車載應用場景需求 虛擬化設計抓緊七重點(2)

在上一期文章中,我們介紹了幾種常見的嵌入式裝置虛擬化方法。要將一個裝置虛擬化,並在互相隔離的軟體間進行共享,必須根據不同的情境,遵循相對應的某些要求。本文將以車載嵌入式設備為討論範疇,提供SoC架構師應該遵循的整套指引。為了就這部分進行說明,我們把所有遵循這些指引的裝置,都稱為「運轉良好的裝置」。 記憶體映射暫存器 當此類運轉良好的裝置具備記憶體映射暫存器時,促成適當的隔離以便存取這些暫存器也相當重要,否則軟體實體可能會影響到其他沒有指定給它的情境。就其真正意義來說,與可個別指定的情境(主情境或次情境)有關聯性的記憶體映射暫存器,在實體的位址映射中,必須與包含其它系統所有情境的暫存器,處於不同的保護區域內。 在一些處理元件(PE)支援虛擬記憶體系統架構(VMSA)的系統中,與某一情境(主情境或次情境)相關聯的記憶體映射暫存器,必須處於實體位址映射的不同分頁裡。Arm建議與情境相關聯的記憶體映射暫存器可預期的隔離精度為64kB,並讓它同時相容於4kB及16kB。 直接記憶體存取 針對支援DMA的情境,我們可以使用其中的一個情境,來存取它被指定的軟體實體允許的位址空間以外的記憶體。針對這點有一個可以實作的機制,就是讓運轉良好的裝置情境的所有記憶體存取,都與一套執行時間不變的識別符產生關聯,而這些識別符同時對裝置內的情境具有獨特性。 特權軟體必須能夠發現到這套識別符,並用以防止已經指定好情境的軟體實體出現未經允許的存取。針對已指定的情境,特權軟體必須能夠連結識別符,以及情境已指定好的軟體實體的虛擬記憶體識別符(VMID)。 中斷 由於裝置的中斷是裝置互動中相當關鍵的一環,因此大家對它產生興趣,特別是即時系統的裝置中斷。運轉良好的裝置中斷必須具備事先定義好的語意(準位或邊緣二選一),並在指定期間都不能改變。此外,隔離保證要求此類裝置不得與其它裝置共享中斷,且次情境也不得與其它次情境共享中斷。倘若與某主情境關聯的中斷可以從某次情境產出,則該主情境必需具備一套機制,以記錄並回報哪個次情境產出中斷。無論如何,特權軟體代理程式在適當的情況下應該處理中斷,並把中斷注入適當的虛擬機,成為虛擬IRQ或虛擬FIQ。 錯誤 當我們檢視裝置虛擬化時,也必須考量到錯誤。為了避免破壞系統的隔離特性,我們有必要管控錯誤影響到的範圍。因此,對於運轉良好的裝置來說,次情境錯誤必須控制在產出該錯誤的情境內。 記憶體保護 對於運轉良好的裝置而言,系統層級的記憶體保護機制是有必要的。 例如,負責提供情境隔離且級別較高的特權軟體,必須確保與有效情境關聯的記憶體映射暫存器,只能透過擁有該情境的軟體啟動的交易才能進行存取。關於這一點,我們可以利用PE或記憶體系統中的記憶體保護機制來執行。 對運轉良好的裝置進行直接記憶體存取,都必須透過系統的記憶體保護機制。系統的配置必須是: ‧第一階段的系統...
2024 年 01 月 14 日

嵌入式系統擁抱虛擬化 實現方式各有優缺(1)

虛擬化正在從PC、伺服器逐漸向嵌入式運算系統及其應用市場擴散,但虛擬化有許多種不同的實作方法,各有其優點跟限制。因此,針對應用需求選擇最適合的虛擬化方式,是非常重要的。 虛擬化已不再是雲端伺服器或個人電腦的專利,而是被普遍運用在各種裝置上。由於Arm不管是在雲端或即時裝置,都使用同樣的技術,因此Arm處在一個為虛擬化釋放更多應用場景,推動虛擬化革命的合適位置上。 在各種應用中,嵌入式虛擬化已成為應對各種功能複雜度挑戰的關鍵技術之一。例如,汽車產業正在探索自動駕駛、更強的連接性與顛覆性的移動方式,因此軟體開發的工作將急遽增加。 在這些裝了輪子的電腦上,軟體的複雜度跟元件數量正在快速成長,因此虛擬化變成一個簡化軟體整合工作,把來自不同供應商的軟體整合到Domain或Zonal控制器上的重要技術。 嵌入式虛擬化的挑戰與解法 不過,虛擬化雖能帶來諸多好處,但也會為裝置的使用模式增加一些複雜性。舉例來說,開發人員可能會遇到以下幾個問題: ‧如何把裝置資源分配給多個安全(包含功能安全與資訊安全)且互相隔離的多種應用跟作業系統? ‧如何擴充資源? ‧如何維持最小權限原則? 目前有兩種方式讓軟體可以使用裝置資源: ‧透過中介:例如讓作業系統使用系統呼叫、透過模擬層,或是透過虛擬機管理器實現半虛擬化 ‧裝置指定 到目前為止,透過中介仍是最主要的方式,而它也能應對各式不同的使用場景,例如低效能的裝置,或是當裝置存取頻率較低時。不過,這種方式的擴充性不佳,並且可能會對效能與耗電產生負面影響。對於這些使用場景,裝置指定(可藉此從虛擬化的軟體內部直接使用實體裝置)可能會是個比較好的解決方案。 裝置指定有以下幾個優點: ‧提供近乎原生的裝置效能 ‧移除裝置特定的程式碼,把可信任運算庫(TCB)的大小降到最低 ‧降低上游成本與複雜性 ‧建立驅動程式領域(Driver...
2023 年 12 月 21 日

嵌入式系統擁抱虛擬化 實現方式各有優缺(2)

虛擬化正在從PC、伺服器逐漸向嵌入式運算系統及其應用市場擴散,但虛擬化有許多種不同的實作方法,各有其優點跟限制。因此,針對應用需求選擇最適合的虛擬化方式,是非常重要的。 Zonal架構為虛擬化帶來新要求 隨著整個汽車產業轉而採用具備中央運算系統與專屬Zonal控制器的軟體定義汽車輛(SDV)方式,虛擬化變成釋放潛力的關鍵需求,這包括更獨立與可管理的功能,以及更快的測試、驗證與更新。不過,加速器與週邊設備的妥善虛擬化可能具有相當的挑戰性。 車用架構轉而採用Zonal架構以解決擴充性問題、並降低配線長度、重量與成本,需要新世代的即時運算力,而它必須支援整合了混合關鍵性的軟體製品。這些混合關鍵性系統(MCS)需要更強大的隔離功能,這包括時間、空間與故障隔離,以避免干擾且同時保有即時支援性。 然而,隔離設計倘若未能妥善處理,可能會造成龐大的資源浪費與效能劣化。因此,妥善的資源共享與隔離越來越有必要。虛擬化在維持充份的時間、空間與故障隔離同時,雖然仍是CPU資源共享的常見選項,裝置(包括GPU、NPU與影像訊號處理器等硬體加速器)與I/O週邊設備在維持妥適隔離性的同時,也必須進行共享。 例如,當某一I/O通訊週邊設備進行共享時,同時維持適當的隔離與足夠的效能水準極為關鍵;這在某些情況下意味必須包含對虛擬化提供硬體的支援,例如處理元件(PE)與裝置之間、或裝置與記憶體之間的程式過濾與分離。 Safety...
2023 年 12 月 20 日