新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 一種基于硬件的虛擬化設(shè)計簡化多核處理器的方案

一種基于硬件的虛擬化設(shè)計簡化多核處理器的方案

作者: 時間:2012-03-12 來源:網(wǎng)絡(luò) 收藏

引言

本文引用地址:http://m.butianyuan.cn/article/149462.htm

今天的SoC(系統(tǒng)單芯片)都集成了一系列的核心、加速器和其它處理單元。這些異質(zhì)的多核架構(gòu)提供了更多的計算能力,但其復(fù)雜性也為各種應(yīng)用中嵌入系統(tǒng)的開發(fā)人員帶來了新的挑戰(zhàn),這些應(yīng)用包括控制層、視頻服務(wù)器、無線基站,以及寬帶網(wǎng)關(guān)等。如果是分立的核心,每個核心都能完全地訪問和控制自己的資源。這種可預(yù)測的訪問能夠做直接的管理,而有實時約束的應(yīng)用也具備了確定的性能。然而,在一個多核架構(gòu)中,各個核心共享資源,潛在的競爭使很多因素復(fù)雜化,例如處理延時以及可靠地中斷處理。

為了提供與單核器件相當(dāng)?shù)拇_定性能,多核架構(gòu)開始采用已經(jīng)過網(wǎng)絡(luò)通信驗證的資源共享與管理技術(shù)。這些架構(gòu)使用已有的隊列與流量管理技術(shù),在多個核心之間有效地分配資源、使吞吐量最大化、盡可能減小響應(yīng)延時,并且避免了不必要的擁擠。

1 資源

從架構(gòu)的角度看,SoC是多核心的復(fù)雜系統(tǒng),它通過一個高速結(jié)構(gòu),將各種控制與資源連接起來(圖1)。在很多方式上,一片SoC內(nèi)部的無數(shù)交互操作都很像一個有很多資源(或核心)的通信網(wǎng)絡(luò),這些資源與相同目的地做交互操作,包括內(nèi)存、外設(shè)與總線。顯然,人員用于提高網(wǎng)絡(luò)效率的帶寬管理技術(shù)(如)也能用于管理多核心以及共享外設(shè)之間的流量。

下一代SOC是多核心訪問相同的共同資源的復(fù)雜系統(tǒng)

圖1.下一代SOC是多核心訪問相同的共同資源的復(fù)雜系統(tǒng)

片上資源的使各個核心能夠共享訪問權(quán);這種共享的訪問權(quán)對應(yīng)用是透明的。每個應(yīng)用都可以把一個資源看作像自己獨有一樣,而一個虛擬化管理器用于匯總共享的所有權(quán)(由所分配的帶寬量所測定)。對資源的虛擬訪問和共享訪問都需要一個隊列管理器和一個流量管理器。各應(yīng)用使用一個或多個隊列,緩存對某個資源的訪問。虛擬化為隊列增加事件或事務(wù),當(dāng)資源可用時將它們從隊列中拉出。隊列包含了一個指向緩沖區(qū)中數(shù)據(jù)的緩存描述符(buffer descriptor),并且實現(xiàn)隊列可以有多種方式,具體取決于應(yīng)用的需求。一只SoC所支持的隊列數(shù)是不定的,從數(shù)百個到數(shù)萬個,可滿足各種應(yīng)用的需求。

隊列管理器可刷新隊列的狀態(tài),即:隊列大小、頭指針、尾指針,以及起始地址,并且維護(hù)填充水平與閾值,包括全滿(full)、將滿(almoST full)、將空(almost empty)和全空(empty)。隊列管理器還為每個隊列提供完全的內(nèi)存管理,包括空閑池的緩沖分配與回收,以及當(dāng)某個隊列中增加事件時的訪問權(quán)檢查(圖2)。多個請求者可以同時為一個或多個隊列增加描述符,也能在等待某項服務(wù)的多個隊列中做出選擇。

對于指向相同資源的多個隊列,管理器作為可用帶寬的仲裁器。此任務(wù)不僅是在共享某個資源的各應(yīng)用之間,也包括一個應(yīng)用可能必須使能QoS(服務(wù)質(zhì)量)的多個隊列之間。

流量管理采用監(jiān)管與整形機(jī)制,測量并控制指定給某個流或一組流的帶寬數(shù)。監(jiān)管機(jī)制用于控制流量管理器為某個隊列增加事件的速率,而整形機(jī)制則是流量管理器從隊列中去除事件的速率。為了獲得最佳的控制,以及管理隊列優(yōu)先權(quán)的能力,必須在每個隊列基礎(chǔ)上實現(xiàn)監(jiān)管與整形。流量管理器亦根據(jù)一個預(yù)設(shè)的服務(wù)算法,將多個隊列映射到單一的共享資源。

有了隊列和流量管理,就可以提供可靠的端至端QoS。這種允許多個路徑共享一個資源,而不會對帶寬的預(yù)訂產(chǎn)生負(fù)面影響。精細(xì)粒度QoS支持SLA(服務(wù)水平協(xié)議),保證了在每個流量基礎(chǔ)上的最小、平均和最大帶寬。開發(fā)人員可以實現(xiàn)隊列水平的流量標(biāo)記與度量,以防止出現(xiàn)擁塞。擁塞的早期通知使隊列管理器能夠采用正確的措施,通過向流量資源的反饋,去除對可能丟棄數(shù)據(jù)包的不必要處理,或理想情況下,能完全避免擁塞。

舉例來說,一個隊列與流量管理的以太網(wǎng)驅(qū)動程序能防止任何一個處理器不公平地獨占端口帶寬。它還能確保帶寬分配以及最大的延時約束,而與其它隊列狀態(tài)無關(guān)。驅(qū)動程序支持對仲裁方法的選擇(例如:嚴(yán)格優(yōu)先級或帶權(quán)重的輪叫),有助于實現(xiàn)可靠的實時服務(wù),如視頻流。最后,多個資源還可以共享以太網(wǎng)端口,而不會對帶寬預(yù)訂產(chǎn)生負(fù)面影響。像IP(互聯(lián)網(wǎng)協(xié)議)轉(zhuǎn)發(fā)這類任務(wù)很容易可靠地實現(xiàn),而對延時敏感的應(yīng)用(如音視頻的發(fā)送)則受益于確定且可靠的端口管理。另外,當(dāng)用實現(xiàn)了隊列和流量管理時,驅(qū)動程序幾乎無需軟件開銷,就可以維持端至端的QoS。

2 虛擬化層

早期的多核SoC與初期的網(wǎng)絡(luò)處理器類似,都將虛擬化資源的全部工作留給了開發(fā)人員。應(yīng)用在某種程度上必須判斷出自己在與其它應(yīng)用共享某個資源。當(dāng)一個應(yīng)用使用某個共享資源時,它必須以某種與其它應(yīng)用共存的方式這樣做。操作系統(tǒng)也需要支持虛擬化。

圖2.的虛擬化卸下了應(yīng)用處理器的隊列管理負(fù)擔(dān),包括刷新隊列狀態(tài),維持填充水平和閾值,分配與重新分配緩沖區(qū),以及當(dāng)應(yīng)用要訪問某隊列時,確認(rèn)其訪問權(quán)限。

在一個傳統(tǒng)架構(gòu)中,處理器通過一個軟件層,管理著自己對共享資源的訪問(圖3a)。處理器必須知道哪個資源是可用的,以及自己可以使用它們的頻率。隨著處理數(shù)量的增加,資源共享的復(fù)雜性也在增長。軟件虛擬化的一個缺點在于,它為數(shù)據(jù)包存儲以及接下來數(shù)據(jù)包獲取的每個事務(wù)都引入了一個開銷。這種開銷消耗了處理器周期,為代碼處理帶來了復(fù)雜性。它還給虛擬化軟件帶來了帶寬管理和滿足預(yù)訂保證的負(fù)擔(dān)。即使通過工具實現(xiàn)了虛擬化代碼的自動化創(chuàng)建,開發(fā)者仍然必須在應(yīng)用交互通過虛擬化代碼時,進(jìn)行查錯調(diào)試。


上一頁 1 2 3 4 下一頁

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉