嵌入式應(yīng)用程序中的虛擬化與其企業(yè)和桌面等價(jià)物有很多共同之處。獨(dú)特的嵌入式用例和專門的底層技術(shù)為開發(fā)人員提供了優(yōu)化設(shè)計(jì)以提高性能和響應(yīng)能力的新機(jī)會(huì)。
在臺(tái)式機(jī)、數(shù)據(jù)中心以及現(xiàn)在的嵌入式設(shè)計(jì)中采用多核技術(shù)可以滿足類似的需求——在不提高系統(tǒng)時(shí)鐘的情況下擴(kuò)展計(jì)算容量,并為下一代設(shè)備和應(yīng)用程序獲得更高的每瓦 MIPS。
桌面和數(shù)據(jù)中心的主流多核需要來自已部署操作系統(tǒng) (OS) 的對(duì)稱多處理 (SMP) 支持。Linux 內(nèi)核已經(jīng)支持 SMP 近十年了,支持 SMP 的 Windows 和 Mac OS 版本在今天被廣泛使用。
相比之下,嵌入式操作系統(tǒng)正試圖趕上支持多核 CPU。即使操作系統(tǒng)越來越擅長(zhǎng)在多核環(huán)境中運(yùn)行,應(yīng)用程序和中間件仍然面臨線程安全、并發(fā)和負(fù)載平衡的挑戰(zhàn)。
虛擬化軟件架構(gòu)
為了解決這些挑戰(zhàn),出現(xiàn)了不同的虛擬化策略,從類型 I 和類型 II 開始,如圖 1 所示。在類型 I 虛擬化中,管理程序“擁有”CPU 并負(fù)責(zé)引導(dǎo)和運(yùn)行客戶操作系統(tǒng)。I 型平臺(tái)是“精益、 中庸”和成熟的,從大型機(jī)和小型機(jī)的幾代開發(fā)中出現(xiàn),現(xiàn)在用于移動(dòng)設(shè)備。相比之下,VMware Fusion、Parallels 和 Sun VirtualBox 等平臺(tái)提供的 Type II 虛擬化側(cè)重于最終用戶體驗(yàn),管理程序作為應(yīng)用程序在另一個(gè)操作系統(tǒng)上運(yùn)行,沒有性能保證。
圖 1: Type I 管理程序啟動(dòng)并運(yùn)行客戶操作系統(tǒng),而 Type II 管理程序作為應(yīng)用程序在另一個(gè)操作系統(tǒng)上運(yùn)行。
嵌入式虛擬化遵循自己的范式。在路由器、交換機(jī)和網(wǎng)關(guān)等基礎(chǔ)設(shè)施應(yīng)用程序中,用例類似于企業(yè)。I 類管理程序托管 Linux 或?qū)崟r(shí)操作系統(tǒng) (RTOS) 實(shí)例,以支持單個(gè)硬件或冗余高可用性架構(gòu)中的虛擬備件上的虛擬設(shè)備(防火墻、深度包檢查器和其他設(shè)備)。
在移動(dòng)設(shè)備中,OEM 使用裸機(jī)虛擬化來整合多個(gè) CPU,以便在單個(gè) CPU 上運(yùn)行基帶、多媒體和應(yīng)用程序堆棧以及不同的操作系統(tǒng)(Android 或 Linux 在一個(gè)或多個(gè)虛擬機(jī)中,以及 RTOS 在另一個(gè))以節(jié)省費(fèi)用材料成本。
走向多核
除了硬件整合之外,虛擬化還提供了一種在單個(gè)處理器中跨多個(gè)內(nèi)核分配現(xiàn)有負(fù)載的良好機(jī)制。嵌入式操作系統(tǒng)架構(gòu)師傾向于將多核芯片視為離散 CPU 的集合。大多數(shù)傳統(tǒng) RTOS 多核支持都反映了這一觀點(diǎn),要求操作系統(tǒng)和堆棧的唯一副本在不同的內(nèi)核上準(zhǔn)協(xié)作運(yùn)行。
隨著 RTOS 供應(yīng)商開始創(chuàng)建其產(chǎn)品的多核版本,他們經(jīng)常使用負(fù)載到多核芯片中內(nèi)核的靜態(tài)映射。一些嵌入式虛擬化平臺(tái)需要靜態(tài)分配管理程序及其托管和運(yùn)行的負(fù)載(即每個(gè) CPU 內(nèi)核一個(gè)管理程序,如圖 2 所示)。
圖 2:在負(fù)載的靜態(tài)映射中,每個(gè) CPU 內(nèi)核分配一個(gè)管理程序。
物理硅到虛擬化負(fù)載的靜態(tài)映射效率低下,并且無法提供虛擬化所賦予的優(yōu)勢(shì)。一種更有效的方法是為每個(gè)客戶操作系統(tǒng)配置一個(gè)虛擬 CPU,該虛擬 CPU 可以映射到單個(gè) CPU(一對(duì)一)、共享一個(gè) CPU(多對(duì)一)或分布在多個(gè)內(nèi)核(一對(duì)多),如圖 3 所示。
圖 3:虛擬化支持負(fù)載到內(nèi)核的一對(duì)一、多對(duì)一和一對(duì)多映射。
將負(fù)載映射到虛擬 CPU 到物理內(nèi)核可以在集成時(shí)鎖定或改變以平衡負(fù)載,如以下應(yīng)用程序所示。
負(fù)載均衡
當(dāng)今的網(wǎng)絡(luò)設(shè)備——移動(dòng)電話、機(jī)頂盒、車載系統(tǒng)、網(wǎng)絡(luò)設(shè)備和幾乎任何類型的智能設(shè)備——都是應(yīng)用平臺(tái),其負(fù)載與臺(tái)式計(jì)算機(jī)、數(shù)據(jù)中心刀片和服務(wù)器一樣多變且復(fù)雜。多核 CPU 承諾現(xiàn)代嵌入式軟件的高吞吐量和快速響應(yīng),但預(yù)測(cè)負(fù)載和核心利用率超過了集成來自各種來源的軟件的過程,尤其是來自應(yīng)用商店的軟件。
虛擬化為開發(fā)人員和集成商提供了額外的工具來優(yōu)化設(shè)備性能。嵌入式管理程序可以監(jiān)控來賓操作系統(tǒng)和主機(jī)策略軟件的負(fù)載,以相應(yīng)地分配 CPU 周期和其他資源。
多核電源管理
多核系統(tǒng)可能對(duì)針對(duì)單核系統(tǒng)優(yōu)化的電源管理方案提出嚴(yán)峻挑戰(zhàn)。特別是,許多多核片上系統(tǒng) (SoC) 對(duì)動(dòng)態(tài)電壓和頻率縮放 (DVFS) 的范圍和能力有限制:
· SoC 子系統(tǒng)和多核 CPU 通常共享電源電壓、時(shí)鐘、緩存和其他資源,這意味著 DVFS 適用于所有內(nèi)核。
· 在一個(gè) SoC 子系統(tǒng)上縮放電壓(如果可能)可以限制通過本地總線與其他子系統(tǒng)的通信,并拒絕訪問共享內(nèi)存,包括子系統(tǒng)自己的 DRAM。
· 單個(gè) SoC 子系統(tǒng)的時(shí)鐘縮放限制了互操作性,尤其是對(duì)于同步總線。
· 一些操作全速使用或根本不使用核心,但其他操作會(huì)施加不同的負(fù)載。全有或全無使用很容易管理,但多核上的動(dòng)態(tài)負(fù)載提出了更大的電源管理挑戰(zhàn)。
現(xiàn)在添加多個(gè)操作系統(tǒng)。高級(jí)操作系統(tǒng)通常包括 DVFS 電源管理,例如 Linux 高級(jí)電源管理和動(dòng)態(tài)電源管理以及 Windows/BIOS 高級(jí)配置和電源接口。大多數(shù) RTOS 避免了限制實(shí)時(shí)響應(yīng)的操作,并且當(dāng)它們確實(shí)提供像 vxLib 的 vxPowerDown() 這樣的顯式電源管理 API 時(shí),它們?nèi)狈﹄娫垂芾聿呗浴<词挂粋€(gè)操作系統(tǒng)能夠管理其自己域中的電源,它也不會(huì)了解同一系統(tǒng)中其對(duì)等方的功能和狀態(tài)。
DVFS 通過降低電壓和時(shí)鐘頻率來提供能源效率。支持 DVFS 的 CPU 在固定電壓和頻率下提供安全工作點(diǎn)。隨著負(fù)載/需求的增加或減少,電源管理中間件或操作系統(tǒng)會(huì)從工作點(diǎn)轉(zhuǎn)換到工作點(diǎn),如圖 4 所示。
圖 4:通過動(dòng)態(tài)電壓和頻率縮放,可以跨內(nèi)核遷移負(fù)載以節(jié)省功耗。
DVFS 的一個(gè)邏輯擴(kuò)展是將電壓降低到 0 VDC 并通過僅利用兩個(gè)操作點(diǎn)(完全停止和完全節(jié)流)在可用內(nèi)核范圍內(nèi)應(yīng)用來停止 CPU 時(shí)鐘。這種巧妙的技巧只有使用虛擬 CPU(參見圖 3 和圖 4)才能實(shí)現(xiàn),用于將負(fù)載映射到物理芯片并在 CPU 內(nèi)核之間透明地遷移運(yùn)行負(fù)載。關(guān)閉整個(gè)內(nèi)核比 DVFS 更易于管理,并導(dǎo)致線性、高度可預(yù)測(cè)的性能-能源權(quán)衡。
多核基帶
隨著高帶寬 4G 網(wǎng)絡(luò)(尤其是 LTE)的出現(xiàn),移動(dòng)設(shè)備需要將更多的處理能力用于無線數(shù)據(jù)通信。為了以更高的并發(fā)性提高吞吐量,新出現(xiàn)的需求要求將整個(gè)內(nèi)核專用于 4G I/O 操作。這一要求使無線芯片組供應(yīng)商和傳統(tǒng) RTOS 供應(yīng)商爭(zhēng)先恐后地為 SMP 操作重新配置基帶操作系統(tǒng)和軟件堆棧。
更簡(jiǎn)單的解決方案是使用移動(dòng)/嵌入式虛擬化來提高 4G 吞吐量。管理程序可以根據(jù)需要將可用內(nèi)核映射到輸入或輸出操作,并縮減該映射以支持其他 CPU 密集型操作或執(zhí)行每個(gè)內(nèi)核的電源管理,而不是將兩個(gè)、四個(gè)或更多內(nèi)核專用于基帶處理。
只有虛擬化可以擴(kuò)展
多核軟件設(shè)計(jì)既復(fù)雜又簡(jiǎn)單。系統(tǒng)架構(gòu)師應(yīng)該抵制將遺留軟件元素批量分配給下一代嵌入式芯片上的可用內(nèi)核的誘惑。
處理器路線圖指向可用處理器內(nèi)核的進(jìn)一步倍增:今天在嵌入式 CPU 上是 2 倍,很快會(huì)達(dá)到 4 倍、8 倍甚至更高。這種過剩的硅片將很快超過用于配置和管理多核軟件負(fù)載的靜態(tài)方法。
只有嵌入式/移動(dòng)虛擬化才能提供可擴(kuò)展且靈活的機(jī)制,以實(shí)現(xiàn)多核處理能力的優(yōu)勢(shì)并簡(jiǎn)化系統(tǒng)設(shè)計(jì)、集成和部署,同時(shí)使這些系統(tǒng)更加可靠和安全。
審核編輯:郭婷
-
處理器
+關(guān)注
關(guān)注
68文章
19384瀏覽量
230511 -
嵌入式
+關(guān)注
關(guān)注
5088文章
19158瀏覽量
306486 -
cpu
+關(guān)注
關(guān)注
68文章
10890瀏覽量
212425
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論