無(wú)論軟件開(kāi)發(fā)人員喜不喜歡,也不管他們是否為此做好準(zhǔn)備,幾乎每個(gè)稱職的半導(dǎo)體制造商都在生產(chǎn)多核片上系統(tǒng) (SoC)。這些 SoC 通常將兩個(gè)或更多 CPU 內(nèi)核與額外的特定應(yīng)用硬件加速器配對(duì),以提供完整的系統(tǒng)。例如,Cavium Networks、NetLogic Microsystems 和 Freescale Semiconductor 生產(chǎn)用于網(wǎng)絡(luò)處理的 SoC,而德州儀器和 Broadcom 則生產(chǎn)用于數(shù)字媒體設(shè)備的 SoC。
對(duì)于軟件人員來(lái)說(shuō),這提出了一個(gè)有趣的挑戰(zhàn),即使應(yīng)用程序能夠從這些多核 SoC 環(huán)境中獲得所有可用的處理能力。開(kāi)發(fā)人員如何確保他們的應(yīng)用程序與可用內(nèi)核線性擴(kuò)展,并充分利用媒體加速器和數(shù)據(jù)包引擎等其他 SoC 硬件組件?需要明確的是,對(duì)于許多應(yīng)用程序來(lái)說(shuō),可擴(kuò)展性問(wèn)題仍然是一個(gè)真正的科學(xué)項(xiàng)目。然而,有一些系統(tǒng)要構(gòu)建和產(chǎn)品要發(fā)布,所以開(kāi)發(fā)人員不能等待理論上完美的解決方案。
在過(guò)去的一年中,MontaVista Software 研究了廣泛的應(yīng)用程序中的大量客戶用例,包括網(wǎng)絡(luò)處理、數(shù)字電視、車載信息娛樂(lè)、超低功耗服務(wù)器 Web 托管等。目標(biāo)是了解基于 Linux 的軟件解決方案如何在廣泛的應(yīng)用需求中充分利用底層 SoC 硬件。該研究確定了任何解決方案都必須滿足的以下高級(jí)要求。
多核支持
現(xiàn)代嵌入式系統(tǒng)的需求正在加速采用多核 SoC。同時(shí)運(yùn)行多個(gè)系統(tǒng)的要求進(jìn)一步強(qiáng)調(diào)了這些要求;因此,該解決方案必須提供一種使用和管理多核環(huán)境的有效方式。
安全
根據(jù)定義,下載到設(shè)備的任何內(nèi)容都是不安全的。該解決方案必須有效隔離從核心設(shè)備功能下載的任何內(nèi)容,并且不得允許下載的應(yīng)用程序污染其他應(yīng)用程序。
資源擁塞
必須防止下載的應(yīng)用程序占用系統(tǒng)資源。目標(biāo)是有效地共享內(nèi)存、CPU 時(shí)間和 I/O 等資源。這種共享必須允許更重要的系統(tǒng)功能優(yōu)先于不太重要的下載應(yīng)用程序。
國(guó)外系統(tǒng)集成
許多環(huán)境運(yùn)行在 Linux 內(nèi)核之上。但是,這些環(huán)境可能需要不同的用戶空間庫(kù)以及不同的內(nèi)核補(bǔ)丁。例如,Android 系統(tǒng)有自己的設(shè)備驅(qū)動(dòng)程序和內(nèi)核補(bǔ)丁。理想情況下,系統(tǒng)可以運(yùn)行在 Linux 內(nèi)核上運(yùn)行的任何用戶空間。與這些環(huán)境相關(guān)的內(nèi)核補(bǔ)丁和用戶空間必須與安全性和資源共享相結(jié)合。
這種分析促成了基于 Linux 的架構(gòu)的開(kāi)發(fā),該架構(gòu)最大限度地發(fā)揮了當(dāng)今強(qiáng)大的多核 SoC 的底層功能。
架構(gòu)概述
要了解該軟件的整體架構(gòu),有必要了解一些現(xiàn)代操作系統(tǒng) (OS) 環(huán)境,尤其是虛擬化技術(shù)。但小心點(diǎn); 圍繞虛擬化有很多炒作(或者,正如我們喜歡說(shuō)的,圍繞虛擬機(jī)管理程序有很多炒作)。
虛擬化是一種將計(jì)算機(jī)資源劃分為多個(gè)執(zhí)行環(huán)境的方法。目前使用的虛擬化主要分為三大類,它們之間的主要區(qū)別在于發(fā)生虛擬化的層:
全虛擬化和半虛擬化:這些類型的虛擬化用于托管多個(gè)相互隔離的客戶操作系統(tǒng)。雖然功能強(qiáng)大,但由于管理程序和多個(gè)操作系統(tǒng)的開(kāi)銷,性能(沒(méi)有大量?jī)?yōu)化)非常低。示例包括 QEMU、基于內(nèi)核的虛擬機(jī) (KVM)、Zen 和 VMware。
操作系統(tǒng)資源虛擬化:這種類型的虛擬化用于隔離和擴(kuò)展使用單個(gè)操作系統(tǒng)的應(yīng)用程序。這里的優(yōu)勢(shì)是單一操作系統(tǒng)和較低的開(kāi)銷,在大多數(shù)情況下通常不到 1%。因?yàn)殚_(kāi)銷很小,所以擴(kuò)展和/或優(yōu)化性能的能力是一個(gè)巨大的好處。示例包括 Linux 容器和 BDS Jails。
硬件分段(非對(duì)稱多處理或 AMP):這種高性能配置將硬件專用于在用戶模式下運(yùn)行的特定應(yīng)用程序,以獲得最佳性能。這可以通過(guò)使用簡(jiǎn)單的運(yùn)行時(shí)執(zhí)行程序或利用操作系統(tǒng)資源虛擬化和處理器內(nèi)核關(guān)聯(lián)功能將內(nèi)核和 I/O 專用于進(jìn)程而幾乎沒(méi)有開(kāi)銷來(lái)實(shí)現(xiàn)。
這些類型的虛擬化提供不同的性能特征,需要不同的設(shè)置和維護(hù)開(kāi)銷,將獨(dú)特級(jí)別的復(fù)雜性引入運(yùn)行時(shí)環(huán)境,并解決不同的問(wèn)題。
雖然業(yè)界目前專注于推動(dòng)完全虛擬化的管理程序作為多核優(yōu)化的萬(wàn)能解決方案,但現(xiàn)實(shí)情況是嵌入式開(kāi)發(fā)人員需要一系列可針對(duì)特定應(yīng)用程序需求量身定制的選項(xiàng)。開(kāi)發(fā)人員將需要一種或多種這些虛擬化技術(shù)的某種組合,以提供符合硬件限制并滿足設(shè)計(jì)性能特征的產(chǎn)品。簡(jiǎn)而言之,訣竅是將應(yīng)用程序與正確的操作系統(tǒng)服務(wù)相匹配,以滿足整體系統(tǒng)要求,包括性能、可靠性和安全性。
MontaVista 提供三種基于非專有、開(kāi)源 Linux 技術(shù)的虛擬化方法,并支持多處理器架構(gòu)。因?yàn)樗菃蝹€(gè)運(yùn)行時(shí),所以有一個(gè)編譯器和一組工具可用于任何用例或用例組合。圖 1 顯示了這種方法的總體情況。這三種方法是:
KVM Hypervisor(完全虛擬化)
Linux 容器(操作系統(tǒng)資源虛擬化)
MontaVista Bare Metal Engine(操作系統(tǒng)資源虛擬化和 SoC 硬件分割)
圖 1:一個(gè)編譯器和一組工具可用于任何用例或使用 MontaVista 的三種虛擬化方法的組合。
微服務(wù)器用例
微服務(wù)器背后的想法是利用更小、更節(jié)能的處理器來(lái)降低一類以 Web 為中心的 IT 應(yīng)用程序的物理和能源消耗足跡。對(duì)于某些工作負(fù)載,幾個(gè)低功耗處理器可能比更少、更強(qiáng)大的處理器更高效。Cavium Octeon 處理器和其他半導(dǎo)體供應(yīng)商的處理器非常適合在內(nèi)核本身的功率效率的基礎(chǔ)上滿足微服務(wù)器概念的密度和功率效率要求。這些 SoC 還包括專用硬件來(lái)處理基于 Web 的應(yīng)用程序所需的前端安全和加密/解密處理。
從軟件的角度來(lái)看,MontaVista Linux Containers 和 Bare Metal Engine 技術(shù)有助于完成這幅畫(huà)。容器用于提供操作系統(tǒng)級(jí)別的虛擬化,允許對(duì)工作負(fù)載要求進(jìn)行非常有效的虛擬化。例如,容器可用于托管數(shù)千個(gè)獨(dú)立網(wǎng)站,每個(gè)網(wǎng)站彼此安全隔離。容器允許精確控制分配給每個(gè)容器的運(yùn)行時(shí)資源,因此每個(gè)網(wǎng)站都可以限制在客戶購(gòu)買的性能水平上。或者,更重要的是,可以使用相同的機(jī)制阻止流氓網(wǎng)站過(guò)度消耗資源,從而阻止拒絕服務(wù)類型的攻擊。
Bare Metal Engine 為每個(gè)托管網(wǎng)站所需的安全和加密/解密操作提供運(yùn)行時(shí)環(huán)境。例如,一個(gè) 32 核的 SoC 可以利用大部分核心進(jìn)行應(yīng)用程序處理,而少數(shù)專用于數(shù)據(jù)包處理,所有這些都由一個(gè) Linux 實(shí)例控制。
Linux 提供了一個(gè)簡(jiǎn)單的解決方案
人們普遍認(rèn)為,必須利用 Linux 與實(shí)時(shí)操作系統(tǒng) (RTOS) 或簡(jiǎn)單的運(yùn)行時(shí)環(huán)境的組合來(lái)充分實(shí)現(xiàn)多核處理器的高性能。助長(zhǎng)這種誤解的想法是,Linux 本身無(wú)法滿足要求,因?yàn)樗蟆⑻也皇菍?shí)時(shí)的。這種謬誤還推動(dòng)了管理程序和/或虛擬化必須調(diào)解和隔離不同的運(yùn)行時(shí)環(huán)境并促進(jìn)它們之間的相互通信的要求。通常是 RTOS 供應(yīng)商自己使這種錯(cuò)誤信念永久化。
最后,這些對(duì) Linux 驅(qū)動(dòng)器的誤解增加了開(kāi)發(fā)過(guò)程的復(fù)雜性和成本。由于多個(gè)運(yùn)行時(shí)和開(kāi)發(fā)環(huán)境(Linux、RTOS 和可能的管理程序各一個(gè)),復(fù)雜性增加。由于專有 RTOS 和虛擬機(jī)管理程序的特許權(quán)使用費(fèi),成本增加,更不用說(shuō)開(kāi)發(fā)復(fù)雜性本身帶來(lái)的額外成本,需要更多的開(kāi)發(fā)人員在更長(zhǎng)的時(shí)間內(nèi)。
在任何地方都使用 Linux 并在可能無(wú)法滿足某些要求的地方對(duì)其進(jìn)行修復(fù)的方法會(huì)產(chǎn)生單一的操作系統(tǒng)環(huán)境、單一的工具鏈以及適用于應(yīng)用程序所有方面的通用開(kāi)發(fā)和調(diào)試工具。正如愛(ài)因斯坦所說(shuō),“讓一切盡可能簡(jiǎn)單,但不要簡(jiǎn)單。”
作者:Jim Ready,Patrick MacCartee
審核編輯:郭婷
-
驅(qū)動(dòng)器
+關(guān)注
關(guān)注
52文章
8227瀏覽量
146258 -
Linux
+關(guān)注
關(guān)注
87文章
11293瀏覽量
209340 -
RTOS
+關(guān)注
關(guān)注
22文章
811瀏覽量
119596
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論