2011/06/14 一種基于硬件的虛擬化設計簡(jiǎn)化多核處理器的方案
今天的SoC(系統單芯片)處理器都集成了一系列的核心、加速器和其它處理單元。這些異質(zhì)的多核架構提供了更多的計算能力,但其復雜性也為各種應用中嵌入系統的開(kāi)發(fā)人員帶來(lái)了新的挑戰,這些應用包括控制層處理器、視頻服務(wù)器、無(wú)線(xiàn)基站,以及寬帶網(wǎng)關(guān)等。如果是分立的核心,每個(gè)核心都能完全地訪(fǎng)問(wèn)和控制自己的資源。這種可預測的訪(fǎng)問(wèn)能夠做直接的管理,而有實(shí)時(shí)約束的應用也具備了確定的性能。然而,在一個(gè)多核架構中,各個(gè)核心共享資源,潛在的競爭使很多設計因素復雜化,例如處理延時(shí)以及可靠地中斷處理。
為了提供與單核器件相當的確定性能,多核架構開(kāi)始采用已經(jīng)過(guò)網(wǎng)絡(luò )通信驗證的資源共享與管理技術(shù)。這些架構使用已有的隊列與流量管理技術(shù),在多個(gè)核心之間有效地分配資源、使吞吐量最大化、盡可能減小響應延時(shí),并且避免了不必要的擁擠。
1 資源虛擬化
從架構的角度看,SoC是多核心的復雜系統,它通過(guò)一個(gè)高速結構,將各種控制與資源連接起來(lái)(圖1)。在很多方式上,一片SoC內部的無(wú)數交互操作都很像一個(gè)有很多資源(或核心)的通信網(wǎng)絡(luò ),這些資源與相同目的地做交互操作,包括內存、外設與總線(xiàn)。顯然,設計人員用于提高網(wǎng)絡(luò )效率的帶寬管理技術(shù)(如虛擬化)也能用于管理多處理器核心以及共享外設之間的流量。

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