2011/06/14 一種基于硬件的虛擬化設(shè)計(jì)簡(jiǎn)化多核處理器的方案
今天的SoC(系統(tǒng)單芯片)處理器都集成了一系列的核心、加速器和其它處理單元。這些異質(zhì)的多核架構(gòu)提供了更多的計(jì)算能力,但其復(fù)雜性也為各種應(yīng)用中嵌入系統(tǒng)的開(kāi)發(fā)人員帶來(lái)了新的挑戰(zhàn),這些應(yīng)用包括控制層處理器、視頻服務(wù)器、無(wú)線基站,以及寬帶網(wǎng)關(guān)等。如果是分立的核心,每個(gè)核心都能完全地訪問(wèn)和控制自己的資源。這種可預(yù)測(cè)的訪問(wèn)能夠做直接的管理,而有實(shí)時(shí)約束的應(yīng)用也具備了確定的性能。然而,在一個(gè)多核架構(gòu)中,各個(gè)核心共享資源,潛在的競(jìng)爭(zhēng)使很多設(shè)計(jì)因素復(fù)雜化,例如處理延時(shí)以及可靠地中斷處理。
為了提供與單核器件相當(dāng)?shù)拇_定性能,多核架構(gòu)開(kāi)始采用已經(jīng)過(guò)網(wǎng)絡(luò)通信驗(yàn)證的資源共享與管理技術(shù)。這些架構(gòu)使用已有的隊(duì)列與流量管理技術(shù),在多個(gè)核心之間有效地分配資源、使吞吐量最大化、盡可能減小響應(yīng)延時(shí),并且避免了不必要的擁擠。
1 資源虛擬化
從架構(gòu)的角度看,SoC是多核心的復(fù)雜系統(tǒng),它通過(guò)一個(gè)高速結(jié)構(gòu),將各種控制與資源連接起來(lái)(圖1)。在很多方式上,一片SoC內(nèi)部的無(wú)數(shù)交互操作都很像一個(gè)有很多資源(或核心)的通信網(wǎng)絡(luò),這些資源與相同目的地做交互操作,包括內(nèi)存、外設(shè)與總線。顯然,設(shè)計(jì)人員用于提高網(wǎng)絡(luò)效率的帶寬管理技術(shù)(如虛擬化)也能用于管理多處理器核心以及共享外設(shè)之間的流量。
圖1.下一代SOC是多核心訪問(wèn)相同的共同資源的復(fù)雜系統(tǒng)
片上資源的虛擬化使各個(gè)核心能夠共享訪問(wèn)權(quán);這種共享的訪問(wèn)權(quán)對(duì)應(yīng)用是透明的。每個(gè)應(yīng)用都可以把一個(gè)資源看作像自己獨(dú)有一樣,而一個(gè)虛擬化管理器用于匯總共享的所有權(quán)(由所分配的帶寬量所測(cè)定)。對(duì)資源的虛擬訪問(wèn)和共享訪問(wèn)都需要一個(gè)隊(duì)列管理器和一個(gè)流量管理器。各應(yīng)用使用一個(gè)或多個(gè)隊(duì)列,緩存對(duì)某個(gè)資源的訪問(wèn)。虛擬化為隊(duì)列增加事件或事務(wù),當(dāng)資源可用時(shí)將它們從隊(duì)列中拉出。隊(duì)列包含了一個(gè)指向緩沖區(qū)中數(shù)據(jù)的緩存描述符(buffer descriptor),并且實(shí)現(xiàn)隊(duì)列可以有多種方式,具體取決于應(yīng)用的需求。一只SoC所支持的隊(duì)列數(shù)是不定的,從數(shù)百個(gè)到數(shù)萬(wàn)個(gè),可滿足各種應(yīng)用的需求。
隊(duì)列管理器可刷新隊(duì)列的狀態(tài),即:隊(duì)列大小、頭指針、尾指針,以及起始地址,并且維護(hù)填充水平與閾值,包括全滿(full)、將滿(almoST full)、將空(almost empty)和全空(empty)。隊(duì)列管理器還為每個(gè)隊(duì)列提供完全的內(nèi)存管理,包括空閑池的緩沖分配與回收,以及當(dāng)某個(gè)隊(duì)列中增加事件時(shí)的訪問(wèn)權(quán)檢查(圖2)。多個(gè)請(qǐng)求者可以同時(shí)為一個(gè)或多個(gè)隊(duì)列增加描述符,也能在等待某項(xiàng)服務(wù)的多個(gè)隊(duì)列中做出選擇。
對(duì)于指向相同資源的多個(gè)隊(duì)列,管理器作為可用帶寬的仲裁器。此任務(wù)不僅是在共享某個(gè)資源的各應(yīng)用之間,也包括一個(gè)應(yīng)用可能必須使能QoS(服務(wù)質(zhì)量)的多個(gè)隊(duì)列之間。
流量管理采用監(jiān)管與整形機(jī)制,測(cè)量并控制指定給某個(gè)流或一組流的帶寬數(shù)。監(jiān)管機(jī)制用于控制流量管理器為某個(gè)隊(duì)列增加事件的速率,而整形機(jī)制則是流量管理器從隊(duì)列中去除事件的速率。為了獲得最佳的控制,以及管理隊(duì)列優(yōu)先權(quán)的能力,必須在每個(gè)隊(duì)列基礎(chǔ)上實(shí)現(xiàn)監(jiān)管與整形。流量管理器亦根據(jù)一個(gè)預(yù)設(shè)的服務(wù)算法,將多個(gè)隊(duì)列映射到單一的共享資源。
有了隊(duì)列和流量管理,就可以提供可靠的端至端QoS。這種方案允許多個(gè)路徑共享一個(gè)資源,而不會(huì)對(duì)帶寬的預(yù)訂產(chǎn)生負(fù)面影響。精細(xì)粒度QoS支持SLA(服務(wù)水平協(xié)議),保證了在每個(gè)流量基礎(chǔ)上的最小、平均和最大帶寬。開(kāi)發(fā)人員可以實(shí)現(xiàn)隊(duì)列水平的流量標(biāo)記與度量,以防止出現(xiàn)擁塞。擁塞的早期通知使隊(duì)列管理器能夠采用正確的措施,通過(guò)向流量資源的反饋,去除對(duì)可能丟棄數(shù)據(jù)包的不必要處理,或理想情況下,能完全避免擁塞。
舉例來(lái)說(shuō),一個(gè)基于隊(duì)列與流量管理的以太網(wǎng)驅(qū)動(dòng)程序能防止任何一個(gè)處理器不公平地獨(dú)占端口帶寬。它還能確保帶寬分配以及最大的延時(shí)約束,而與其它隊(duì)列狀態(tài)無(wú)關(guān)。驅(qū)動(dòng)程序支持對(duì)仲裁方法的選擇(例如:嚴(yán)格優(yōu)先級(jí)或帶權(quán)重的輪叫),有助于實(shí)現(xiàn)可靠的實(shí)時(shí)服務(wù),如視頻流。最后,多個(gè)資源還可以共享以太網(wǎng)端口,而不會(huì)對(duì)帶寬預(yù)訂產(chǎn)生負(fù)面影響。像IP(互聯(lián)網(wǎng)協(xié)議)轉(zhuǎn)發(fā)這類任務(wù)很容易可靠地實(shí)現(xiàn),而對(duì)延時(shí)敏感的應(yīng)用(如音視頻的發(fā)送)則受益于確定且可靠的端口管理。另外,當(dāng)用硬件實(shí)現(xiàn)了隊(duì)列和流量管理時(shí),驅(qū)動(dòng)程序幾乎無(wú)需軟件開(kāi)銷,就可以維持端至端的QoS。
2 虛擬化層
早期的多核SoC與初期的網(wǎng)絡(luò)處理器類似,都將虛擬化資源的全部工作留給了開(kāi)發(fā)人員。應(yīng)用在某種程度上必須判斷出自己在與其它應(yīng)用共享某個(gè)資源。當(dāng)一個(gè)應(yīng)用使用某個(gè)共享資源時(shí),它必須以某種與其它應(yīng)用共存的方式這樣做。操作系統(tǒng)也需要支持虛擬化。
圖2.基于硬件的虛擬化卸下了應(yīng)用處理器的隊(duì)列管理負(fù)擔(dān),包括刷新隊(duì)列狀態(tài),維持填充水平和閾值,分配與重新分配緩沖區(qū),以及當(dāng)應(yīng)用要訪問(wèn)某隊(duì)列時(shí),確認(rèn)其訪問(wèn)權(quán)限。
評(píng)論