一種基于硬件的虛擬化設(shè)計(jì)簡化多核處理器的方案
基于硬件的隊(duì)列管理能在系統(tǒng)的各個部件之間提供保護(hù)。最基本的故障隔離方式是阻止對分配給其它應(yīng)用的內(nèi)存與資源帶寬的訪問。為了使虛擬化資源對應(yīng)用完全透明,隊(duì)列和流量管理器必須只對損壞的應(yīng)用采取行動。換句話說,必須要將應(yīng)用與其它應(yīng)用的活動屏蔽開來,并且要適應(yīng)其它應(yīng)用的故障,以維持穩(wěn)定性。就其特性而言,專用隊(duì)列可隔離故障,防止其它處理器和應(yīng)用受到影響。這類隊(duì)列還有利于有效的錯誤恢復(fù);專用隊(duì)列可以完全地清除錯誤,而不會使其它應(yīng)用的數(shù)據(jù)受到損失。
一個隊(duì)列與流量管理控制器可以實(shí)現(xiàn)對非法資源訪問的多級響應(yīng)。最簡單的響應(yīng)是阻止訪問,并給應(yīng)用生成一個警報(bào),通常是通過一個中斷。這個警報(bào)告訴應(yīng)用,它試圖做了一些不應(yīng)做的事。第二種方法是由開發(fā)人員記錄下使用的違背情況,幫助在現(xiàn)場查錯。隊(duì)列與流量控制器亦必須能夠通過觸發(fā)一個復(fù)位,并重新初始化一個可能損壞的應(yīng)用,逐步升級其響應(yīng)。理想情況下,開發(fā)人員可以創(chuàng)建一個控制此響應(yīng)的策略。例如,開發(fā)人員可以設(shè)定一個閾值,如果某個應(yīng)用做了三次非法訪問,就認(rèn)為它是一個已損壞的應(yīng)用,必須重新啟動。
6 部分虛擬化
當(dāng)一系列事務(wù)必須依次發(fā)生時,這種要求就成為了一個阻塞實(shí)例,因?yàn)槠渌埱蠓奖仨毜却耸聞?wù)的完成,然后才能獲得資源的控制權(quán)??紤]一個典型的SATA(串行先進(jìn)技術(shù)連接)事務(wù),此時首先要配置SATA端口,然后執(zhí)行一個指令序列。與數(shù)據(jù)包都是單個事件的以太網(wǎng)端口不同,SATA端口必須鎖定給某個應(yīng)用,直到事務(wù)完成時為止;否則,兩個應(yīng)用會相互覆蓋,致使誰也無法完成自己的任務(wù)。
圖4.(a)硬件實(shí)施的虛擬化在有完全寬帶管理的SOC中也能實(shí)現(xiàn)資源分配
(b)這種方案能夠在整個系統(tǒng)上高效地共享資源
盡管各個應(yīng)用無法完全共享支持這種事務(wù)特性的資源,但對配額可以做部分虛擬化。首先,等待使用資源的應(yīng)用必須確認(rèn)端口空閑可用,然后在使用期間鎖定端口。對鎖定的支持要求在操作系統(tǒng)中有一個薄的軟件層,這樣就能相互通信,看哪個應(yīng)用擁有對鎖的控制權(quán)。不過,硬件的使用可以管理鎖,并加快鎖的獲得速度。必須用硬件實(shí)現(xiàn)鎖的獲取,從而為資源提供一種失效恢復(fù)機(jī)制;或者,也可以用一個加鎖處理器去鎖定資源。
根據(jù)應(yīng)用情況,系統(tǒng)必須支持可以完全虛擬化的共享資源,以及需要鎖定的共享資源。例如,一片SoC可以提供一個不共享的SATA端口,但只有一個處理器可以使用它,而資源的共享必須在軟件中實(shí)現(xiàn)。另外通過對可鎖定資源的支持,SoC中的核心仍能夠以一種對所有應(yīng)用透明的方式,共享資源,具有失效恢復(fù)的可靠性。
多核架構(gòu)的一個重要方面是易于集成。將多個處理器做到一只芯片上的能力,需要應(yīng)用軟件的直接遷移;否則,開發(fā)人員還不如去設(shè)計(jì)一個新的系統(tǒng)。
在確定遷移到虛擬化架構(gòu)是否方便時,必須考慮一系列因素。例如,架構(gòu)必須支持多操作系統(tǒng),因?yàn)楦鶕?jù)需要支持的應(yīng)用情況,多處理器經(jīng)常會在多個核心上使用多個操作系統(tǒng)。僅支持一個操作系統(tǒng)的多核架構(gòu)會使開發(fā)人員被迫采用該操作系統(tǒng),然后將所有代碼移植到它上面。而支持多個操作系統(tǒng)時,一片多核SoC就簡化了代碼遷移工作。
另外,還需要考慮到QoS問題,因?yàn)楦鱾€應(yīng)用有不同的帶寬需求。延時敏感型應(yīng)用(如視頻流)需要實(shí)時訪問共享資源,而數(shù)據(jù)型的應(yīng)用(如內(nèi)容下載)可以容忍延遲,充分利用未使用的帶寬。為不同帶寬需求提供服務(wù)的能力使開發(fā)人員能夠在相同的處理簇下整合異質(zhì)的應(yīng)用。
還要考慮架構(gòu)是否包含了透明的資源共享,因?yàn)橥该餍阅茏岄_發(fā)人員同時遷移支持虛擬化的應(yīng)用以及不支持虛擬化的應(yīng)用。另外一個方面是去除軟件虛擬化層。雖然在做SoC之間的移植時,某些代碼的重寫是必要的,但對很多應(yīng)用來說,當(dāng)轉(zhuǎn)向采用硬件資源共享的SoC時,大多數(shù)的變動并不是修改軟件,而是消除軟件虛擬化層。去掉這一層可簡化系統(tǒng)設(shè)計(jì)與查錯工作,增加了系統(tǒng)的效率。對于制造商已取得虛擬化代碼許可的情況,去掉此層還可以降低系統(tǒng)成本。
還有一個要考慮的因素,即架構(gòu)是否整合了系統(tǒng)資源。當(dāng)一個系統(tǒng)采用多只芯片和操作系統(tǒng)時,每個都有自己的存儲資源。通過資源的硬件管理,所有任務(wù)都可以共享對資源的訪問。例如,一塊硬盤或一個以太網(wǎng)端口可以服務(wù)于整個系統(tǒng)(甚至跨各個SoC),而不是像傳統(tǒng)架構(gòu)那樣需要多塊硬盤。這種方案可節(jié)省設(shè)備成本,降低系統(tǒng)部件的總數(shù)。
SoC之間的通信也很重要。各個應(yīng)用可以通過一個大帶寬系統(tǒng)總線(如PCIe)共享資源,從而實(shí)現(xiàn)了SoC之間的共享。傳統(tǒng)架構(gòu)會給每個處理器分配一個固定帶寬,這種方法限制了各核之間的有效QoS管理,難以超額申請(圖4a)。采用基于硬件的虛擬化時,即使在SoC之間,資源的分配也是靈活的(圖4b)。通過速率監(jiān)管、流量整形,以及隊(duì)列仲裁,反映并平衡著每個處理器與應(yīng)用的需求,從而能夠?qū)崿F(xiàn)全帶寬管理。同樣,這種方案還能夠獲得資源(如一塊硬盤或一個安全引擎)在整個系統(tǒng)上的有效共享,而不僅是一只處理器。
另外還應(yīng)考慮的是處理器之間的通信,因?yàn)槎嗵幚砥飨到y(tǒng)經(jīng)常要在各處理器之間傳輸相當(dāng)多的數(shù)據(jù)。隊(duì)列管理機(jī)制為SoC上各處理器之間以及多個SoC之間的通信提供了一種簡單而有效的加速方法。
7 結(jié)語
今天的下一代SoC是復(fù)雜的多處理器環(huán)境,它必須共享片上資源,而不會帶來額外開銷,降低系統(tǒng)的效率。隊(duì)列管理有助于芯片資源的虛擬化,通過一種可靠的機(jī)制,分配帶寬、隔離故障,以及促進(jìn)可靠的錯誤恢復(fù),簡化了資源共享工作。流量管理通過一種滿足不同應(yīng)用對延時和流量需求的方式,控制流量進(jìn)出隊(duì)列的速率,從而確保了系統(tǒng)公平地共享資源。通過硬件實(shí)現(xiàn)的虛擬化,開發(fā)人員可以卸載隊(duì)列與流量管理工作,從而增強(qiáng)應(yīng)用的效率、獲得最大的資源吞吐量、減少延時,增加系統(tǒng)的可靠性。
評論