版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
PAGE74中國科學(xué)技術(shù)大學(xué)計算機(jī)學(xué)院高級計算機(jī)系統(tǒng)結(jié)構(gòu)課程案例案例名稱:多核服務(wù)器平臺系統(tǒng)虛擬化解決方案成員名單:廖鵬楊曉亮陳奭李志政盧佳帥指導(dǎo)教師:吳俊敏中國科學(xué)技術(shù)大學(xué)計算機(jī)科學(xué)與技術(shù)學(xué)院日期:2009年4月14日摘要摘要長期以來處理器性能的提升都是通過提高單一線程執(zhí)行流的主頻和指令級并行性(流水線、分支預(yù)測等)來實現(xiàn)的。如今這些技術(shù)對性能的提升已經(jīng)達(dá)到了極限。為此學(xué)術(shù)界提出了線程級并行性解決方案來克服指令級并行性(ILP)的局限性。目前已經(jīng)有大量的線程級并行性(TLP)處理器,如共享大部分資源的SMT,主要集中在Cache層次共享的CMP等。此外,當(dāng)前計算機(jī)體系結(jié)構(gòu)研究的趨勢表明未來CMP/SMT處理器將進(jìn)一步增加上下文數(shù)量,因此片上處理器核數(shù)量將從2,4,8個增加到數(shù)百個。大規(guī)模多核處理器所面臨的問題之一就是如何“發(fā)掘”計算機(jī)系統(tǒng)中的線程來充分利用片上資源。解決這一問題的一種方案就是在同一個多核心片上同時運(yùn)行多個操作系統(tǒng)(或者邏輯域)。為了達(dá)到這一目標(biāo),需要引入一個通常被稱為管理程序(Hypervisor)的系統(tǒng)虛擬機(jī)固件層來協(xié)調(diào)所有來自于不同邏輯域的請求和限制。Sun公司的Hypervisor就是針對上述目標(biāo)所設(shè)計的基于UltralSPARCT2多核處理器的開源系統(tǒng)虛擬機(jī)。本文首先介紹了項目背景、虛擬機(jī)以及SUNUltraSPARCHypervisor,然后詳細(xì)介紹了Hypervisor資源管理的五個方面:邏輯域資源、存儲資源的劃分與管理、虛擬外設(shè)管理、邏輯域間通信機(jī)制和各種資源的劃分與調(diào)度。最后總結(jié)了Hypervisor的資源管理機(jī)制。關(guān)鍵詞:多核虛擬化管理程序AbstractAbstractProcessorsperformanceimprovementhasbeenhistoricallyobtainedincreasingboththefrequencyclockspeedandtheinstructionlevelparallelism(pipeline,branchprediction,etc)ofasinglethreadexecutionflow.Thosetechniqueshavereachedtheirasymptoticlimitand,nowadays,donotguaranteefurtherimprovementsasinthepast.ThreadlevelparallelismhasbeenproposedasasolutiontoovercomethelimitationsofILP.ThereisawidevarietyofTLPprocessors,rangingfromSMT,wheremostoftheresourcesareshared,toCMPswheretheresourcesharingislow,mainlyfocusingonthecache.Besides,currenttrendsincomputerarchitecturepointthatfutureCMP/SMTprocessorswillhaveanincreasingnumberofcontexts.Hence,wewillmovefrom2-,4-,8-corechipstodozensorhundredsofcoresinachip.Oneoftheproblemsofmassivemulticoreprocessorsishowto“find”threadsinacomputingsysteminordertofullytakeprofitofthosefuturemassivemulticoresystems.Oneofthesolutionstothisproblemistorunatthesametimeseveraloperatingsystems(orlogicaldomains)onthesamemulticorechip.Inordertodoso,itisrequiredtohaveafirmwarelayer,normallycalledhypervisorthattakescareofcoordinatingthealltherequestsandconstraintsofthedifferentlogicaldomains.SundevelopedasystemvirtualmachinenamedhypervisorbasedonUltraSPARCT2multicoreprocessortoobtaintheforegoingtarget.Thispaperfirstlyintroducesthebackgroundofproject,someknowledgeaboutvirtualmachinesandSUNUltraSPARCHypervisor.Then5aspectsofHypervisorresourcemanagementisdetailed,thatislogicaldomainresource,partitionandmanagementofmemoryresource,virtualI/Omanagement,commucationmechanismbetweenlogicaldomains,partitionandschedulingofallkindsofresource.Inthelastpartofthispaper,wesummariedthemanagementmechanismofHypervisorresource.KeyWords:Multicore/Virtualization/Hypervisor目錄目錄第一章引言 11.1項目背景 11.2虛擬機(jī) 11.3SUNUltraSPARCHypervisor 21.4論文安排 4第二章邏輯域資源 52.1背景 52.2MachineDescriptions 52.3Hypervisor中的MD 62.3.1MD結(jié)構(gòu)圖 62.3.2Header 72.3.3NodeBlock 72.3.4NameBlock 82.3.5DataBlock 82.3.6Tag的含義 92.3.7NODE 92.3.8NODE種類 102.3.9有向無環(huán)圖 102.4本章小結(jié) 11第三章存儲器資源的劃分及管理 123.1傳統(tǒng)內(nèi)存管理 123.1.1地址類型 123.1.2內(nèi)存尋址 123.2Hypervisor的內(nèi)存管理 143.2.1地址模式 143.2.2Hypervisor中的MMU服務(wù) 153.2.3地址翻譯過程 183.3Hypervisor的硬件支持 193.3.1TSB訪問的硬件支持 193.3.2實到虛地址映射與預(yù)測取指 203.4小結(jié) 21第四章虛擬外設(shè)總線管理 224.1IO總線概述 224.1.1 IO總線的發(fā)展 224.1.2 PCIExpress基本規(guī)范介紹 234.2 UltraSPACET2外設(shè)總線的特性 254.2.1PCIExpress概述 254.2.2UST2中PIU的操作 264.3 Hypervisor中總線及虛擬外設(shè)管理的實現(xiàn) 344.3.1 虛擬設(shè)備 344.3.2設(shè)備及總線管理的代碼實現(xiàn) 354.4 小結(jié)及感想 39第五章邏輯域間通信機(jī)制 405.1邏輯域通道 405.1.1無狀態(tài)連接 405.1.2LDC安全 405.2LDC服務(wù) 415.2.1端點 415.2.2LDC隊列 415.2.3LDC中斷 425.2.4LDCAPI 425.3LDC基本結(jié)構(gòu) 425.3.1概述 425.3.2Hypervisor基本結(jié)構(gòu) 445.3.3LDC虛擬鏈路層(LDCvirtuallinklayer) 495.4小結(jié) 56第六章各種資源的劃分及調(diào)度 576.1對資源進(jìn)行劃分及調(diào)度的意義 576.2Xen的邏輯域管理的機(jī)制 586.2.1概述 586.2.2Xen的架構(gòu) 586.2.3XenHypervisor 596.2.4Domain0 596.2.5DomainU 596.2.6Domain管理和控制(DomainManagementandControl) 606.2.7XenOperation 626.3SunHypervisor的資源的劃分及調(diào)度 636.3.1邏輯域在Hypervisor中的作用 636.3.2域的依賴 646.3.3域管理操作 656.3.4MD資源的查找支持相關(guān)函數(shù)舉例 676.4小結(jié) 68第七章結(jié)論 69參考文獻(xiàn) 70致謝 71第一章引言第一章引言1.1項目背景 長期以來處理器性能的提升都是通過提高單一線程執(zhí)行流的主頻和指令級并行性(流水線、分支預(yù)測等)來實現(xiàn)的。如今這些技術(shù)對性能的提升已經(jīng)達(dá)到了極限。為此學(xué)術(shù)界提出了線程級并行性解決方案來克服指令級并行性(ILP)的局限性。目前已經(jīng)有大量的線程級并行性(TLP)處理器,如共享大部分資源的SMT,主要集中在Cache層次共享的CMP等。此外,當(dāng)前計算機(jī)體系結(jié)構(gòu)研究的趨勢表明未來CMP/SMT處理器將進(jìn)一步增加上下文數(shù)量,因此片上處理器核數(shù)量將從2,4,8個增加到數(shù)百個。大規(guī)模多核處理器所面臨的問題之一就是如何“發(fā)掘”計算機(jī)系統(tǒng)中的線程來充分利用片上資源。解決這一問題的一種方案就是在同一個多核心片上同時運(yùn)行多個操作系統(tǒng)(或者邏輯域)。為了達(dá)到這一目標(biāo),需要引入一個通常被稱為管理程序(Hypervisor)的系統(tǒng)虛擬機(jī)固件層來協(xié)調(diào)所有來自于不同邏輯域的請求和限制。1.2虛擬機(jī) “虛擬機(jī)是以某種易于用戶和應(yīng)用程序從中獲益的方式來表示計算資源的過程,而不是根據(jù)這些資源的實現(xiàn)、地理位置或物理封裝的專有方式來表示計算資源。換言之,虛擬機(jī)為數(shù)據(jù)、計算能力、存儲資源以及其他資源提供了一個邏輯視圖,而不是物理視圖?!备鶕?jù)虛擬機(jī)的用途以及它們與真實硬件的相關(guān)程度可以將虛擬機(jī)分成兩大類。系統(tǒng)虛擬機(jī)可以提供一個支持操作系統(tǒng)運(yùn)行的完整的系統(tǒng)平臺;而進(jìn)程虛擬機(jī)的設(shè)計則是針對單個程序的執(zhí)行,這意味著它支持單獨(dú)的進(jìn)程。實際上,虛擬機(jī)是將運(yùn)行于其上的軟件限制在虛擬機(jī)所提供的資源和抽象的內(nèi)部。1)系統(tǒng)虛擬機(jī)系統(tǒng)虛擬機(jī)(硬件虛擬機(jī))允許在運(yùn)行各自操作系統(tǒng)的不同虛擬機(jī)之間共享底層的物理機(jī)器資源。提供這種虛擬化的軟件被稱為虛擬機(jī)監(jiān)控器或者管理程序(Hypervisor)。管理程序目前主要分為兩類:類型1管理程序(本地虛擬機(jī))是一種直接運(yùn)行于給定硬件平臺之上的軟件(作為一個操作系統(tǒng)控制程序),客戶操作系統(tǒng)則以第二層次運(yùn)行在硬件之上。最典型的類型1管理程序是IBM在1960s開發(fā)的CP/CMS[1]。最近的一些具有代表性的產(chǎn)品主要包括Oracle的VM,VMware的ESXServer[2],IBM的POWERHypervisor(PR/SM)[3],微軟的Hyper-V[4](2008年6月發(fā)布),ScaleMP的vSMPFoundation(2005年發(fā)布)以及Sun的LogicalDomainsHypervisor(2005年發(fā)布)。類型2管理程序(宿主虛擬機(jī))是運(yùn)行于操作系統(tǒng)環(huán)境之內(nèi)的軟件,“客戶”操作系統(tǒng)作為第三個層次運(yùn)行于硬件之上。典型產(chǎn)品包括VMwareServer,VMwareWorkstation,VMwareFusion,開源的QEMU,微軟的虛擬PC和虛擬服務(wù)器產(chǎn)品,Sun的VirtualBox以及并行工作站和并行桌面。系統(tǒng)虛擬機(jī)的主要優(yōu)點在于:多個操作系統(tǒng)環(huán)境可以同時存在于同一個計算資源之上,彼此之間相互隔離虛擬機(jī)可以提供一種與真實機(jī)器不同的指令集體系結(jié)構(gòu)(ISA)進(jìn)程虛擬機(jī)進(jìn)程虛擬機(jī)(應(yīng)用虛擬機(jī))作為一個普通的應(yīng)用運(yùn)行在操作系統(tǒng)內(nèi)部同時支持單一的進(jìn)程。在該進(jìn)程開始時進(jìn)程虛擬機(jī)被創(chuàng)建,當(dāng)進(jìn)程結(jié)束時虛擬機(jī)則被銷毀。它的作用就是一個平臺無關(guān)的編程環(huán)境,這一環(huán)境可以抽象出底層硬件或者操作系統(tǒng)的細(xì)節(jié),并且可以保證程序在所有平臺上都以相同的方式執(zhí)行。與系統(tǒng)虛擬機(jī)所提供的指令集體系結(jié)構(gòu)(ISA)抽象相比,進(jìn)程虛擬機(jī)提供了更高層次的抽象,即高級編程語言抽象,Java虛擬機(jī)就是一種最典型進(jìn)程虛擬機(jī)。進(jìn)程虛擬機(jī)是通過解釋器和及時編譯的方式來實現(xiàn)的。1.3SUNUltraSPARCHypervisorUltraHypervisor是Sun公司設(shè)計的基于UltralSPARCT2多核處理器的開源系統(tǒng)虛擬機(jī),它是一個軟件層,該軟件層位于操作系統(tǒng)和硬件平臺之間,主要作用是對資源進(jìn)行管理。通過使用Hypervisor和SUN4v技術(shù),可將具體的硬件資源虛擬化,將操作系統(tǒng)與寄存器隔離開,具體圖示見圖1.1。圖1.1架構(gòu)示意圖 在Hypervisor的資源管理中,主要包括五個方面的內(nèi)容:邏輯域資源(LogicalDomain)UltraSPARCHypervisor不僅能提供操作系統(tǒng)所需要的系統(tǒng)服務(wù),還能夠分隔物理資源,這樣就能有多個虛擬機(jī)運(yùn)行在同一個SPRAC硬件平臺上。每個虛擬機(jī)是一個自包含的劃分,能夠支持獨(dú)立的操作系統(tǒng)。這個自包含的劃分稱之為一個邏輯域。示意圖見圖1.2。圖1.2邏輯域存儲器資源(Memory)在Sun4V體系結(jié)構(gòu)中,有兩類地址,虛擬地址和實地址。對每個用戶看到的是一個虛擬地址,中間通過MMU轉(zhuǎn)換為一個實地址,再轉(zhuǎn)換為一個物理地址。對每個邏輯域都有一塊自己的存儲器資源。Hypervisor對存儲資源的描述以及虛擬地址和物理地址之間的轉(zhuǎn)換有自己專門的機(jī)制。與外設(shè)相關(guān)資源(I/O)在UltraSPARCHypervisor中,I/O設(shè)備直接映射一個邏輯域來對其進(jìn)行管理,這個是叫直接I/O,直接I/O是I/O訪問一個邏輯域的基本模式。然而,為了能夠讓多個邏輯域能夠訪問多個物理I/O設(shè)備,提出了虛擬I/O的概念。邏輯域通道資源(LogicalDomainChannel)在Hypervisor中,一個邏輯域通道是一個點對點的,成對的,虛擬連接兩個的邏輯域的通信管道。為兩個邏輯域之間傳送數(shù)據(jù)提供通道,還是兩個邏輯域之間異步通信的機(jī)制。資源分配及調(diào)度(ResourceManagement)在Hypervisor中,所有上述資源將描述為一個有向無環(huán)圖MD,Hypervisor會根據(jù)用戶的指定將資源分配給相應(yīng)的邏輯域。1.4論文安排 本文主要是對SUNUltraSPARCHypervisor的資源管理作研究,在研究之前還對一些背景知識作介紹,安排如下:背景知識引言介紹了項目背景、虛擬機(jī)相關(guān)知識,以及SUNUltraSPARCHypervisor.從五個方面分別介紹Hypervisor資源管理邏輯域資源介紹了邏輯域和MD的概念,并詳細(xì)分析說明了Hypervisor中MD的具體實現(xiàn)。存儲資源的劃分及管理首先介紹了傳統(tǒng)內(nèi)存管理策略,之后再介紹Hypervisor中的內(nèi)存管理,包括地址模式、MMU以及地址翻譯過程,最后介紹了Hypervisor中的TLB虛擬外設(shè)管理(網(wǎng)卡、PCI-E)首先介紹傳統(tǒng)外設(shè)總線,之后介紹UltraSPARCT2中的PCI與PIU,最后介紹Hypervisor中虛擬外設(shè)管理策略邏輯域間通信機(jī)制主要介紹:邏輯域之間,以及邏輯域與外部實體之間的通信機(jī)制。它有兩種方式:一是使用一個虛擬的鏈路層進(jìn)行數(shù)據(jù)包的傳輸;二是采用共享內(nèi)存的形式進(jìn)行遠(yuǎn)程訪問。各種資源的劃分及調(diào)度首先介紹Xen的邏輯域資源管理機(jī)制,之后介紹SUNHypervisor資源劃分及調(diào)度。第七章結(jié)論第二章邏輯域資源第二章邏輯域資源2.1背景 在UltraSPARCHypervisor中,Hypervisor不僅能提供操作系統(tǒng)所需要的系統(tǒng)服務(wù),還能夠分隔物理資源,這樣就能有多個虛擬機(jī)運(yùn)行在同一個SPRAC硬件平臺上。每個虛擬機(jī)是一個自包含的劃分,能夠支持獨(dú)立的操作系統(tǒng)。這個自包含的劃分便稱之為一個邏輯域。 UltraSPARCHypervisor的目的是在一個平臺上并行運(yùn)行多個操作系統(tǒng)。但是UltraSPARCHypervisor必須滿足4個體系結(jié)構(gòu)上的要求才達(dá)到這個目標(biāo),即安全性、通用性(支持多種操作系統(tǒng))、可行性與高性能要求[5]。 實際上,Hypervisor的目標(biāo)就是創(chuàng)建多個與經(jīng)典獨(dú)立的機(jī)器具有同樣屬性的虛擬機(jī),但是它將這些虛擬機(jī)整合到一個單獨(dú)的平臺上,這個平臺上的資源是被共享的。同時共享資源策略的高效性保證了額外的操作不會影響整體的性能[5]。邏輯域劃分解決方案是這樣一種方案,即將一個平臺盡量多地劃分為多個虛擬機(jī),每個虛擬機(jī)都能啟動、關(guān)閉、重啟和機(jī)器崩潰,同時虛擬機(jī)之間是相互獨(dú)立的。 圖2.1描述了Hypervisor上的邏輯域。圖2.1邏輯域示意圖2.2MachineDescriptions運(yùn)行在一個虛擬機(jī)中的操作系統(tǒng)代碼需要一種方法來發(fā)現(xiàn)虛擬機(jī)中的所有可用資源。在傳統(tǒng)的非虛擬的機(jī)器中,硬件資源通常是由操作系統(tǒng)自己探查到的,比如說操作系統(tǒng)檢查硬件寄存器,或是等待某種硬件資源的回應(yīng),這種方法很耗時[5]。在一個并行虛擬化的世界中,沒有必要使用這種方法來得到想要的資源。HypervisorAPI提供了一個詳細(xì)描述虛擬機(jī)中資源的描述符,這種資源描述符被叫做“MachineDescription”(或MD),它是一個客戶操作系統(tǒng)所能得到的所有資源的一個目錄。除了那些基本的,比如說CPU和內(nèi)存映射細(xì)節(jié)信息,一個域的MD包含資源之間的詳細(xì)關(guān)系,例如NUMA延遲和在內(nèi)存層次中的cache之間的共享[5]。MD中提供的一些信息是必須要有的,其它的信息則是可選的,這些信息是在性能優(yōu)化的時候需要用到。Hypervisor存儲這些信息,一個最重要的優(yōu)點是這些資源總可以被一個域獲取到。這就避免了在一個主控制域中分發(fā)信息所出現(xiàn)的任何瓶頸。同時,一個系統(tǒng)中的所有的邏輯域可以在加電之后同時啟動,而不會出現(xiàn)任何由主控制域在啟動時所引起的單點錯誤。2.3Hypervisor中的MD 在Hypervisor中,MD主要目的是用來描述某個虛擬機(jī)器(或邏輯域)中的所有資源,MD主要由在每個邏輯域或虛擬機(jī)器環(huán)境中的操作系統(tǒng)使用,操作系統(tǒng)通過MD來得到其所想要的資源。 Hypervisor將會根據(jù)操作系統(tǒng)的請求來為其分配MD,分配時,MD被寫入到Guest(代表操作系統(tǒng)的結(jié)構(gòu)體)的一個緩存中,而已分配給這個Guest的MD便是該Guest專有的,不與其它Guest共享。因為某個Guest有自己專有的、獨(dú)一無二的MD,所以更新某個MD即代表又提供了一個全新的MD。2.3.1MD結(jié)構(gòu)圖 MD的結(jié)構(gòu)圖如圖2.2。MD由四部分構(gòu)成:Header、NodeBlock、NameBlock和DataBlock,如圖2.2中A部分。圖2.2MD結(jié)構(gòu)圖2.3.2Header MDHeader部分的定義如圖2.3所示。圖2.3MDheader對于big-endian機(jī)器,Header結(jié)構(gòu)體描述如下:structmd_header{ uint32_t transport_version; uint32_t node_blk_sz; /*sizeinbytesofthenodeblock*/ uint32_t name_blk_sz; /*sizeinbytesofthenameblock*/ uint32_t data_blk_sz; /*sizeinbytesofthedatablock*/};Transport_sersion指的是MD編碼的版本,它是32bit整數(shù),高16位指定主版本號,低16位指定修正版本號。Header部分的總大小為16Byte.2.3.3NodeBlockNodeBlock部分其實是由一個線性數(shù)組構(gòu)成,數(shù)組中每個元素可以看作一個Node,這個線性數(shù)組的最后一個元素為LIST_END,其值為0x0,如圖2.2中的C部分所示。每一個Node是由多個element組成的,每個element大小為16byte,如圖2.2中的D部分所示。Cstructure表示element如下:structmd_element{//1+1+4+8Byte uint8_t tag; uint8_t namelen; uint32_t name; union{ struct { uint32_t len; uint32_t offset; }prop_data; /*forPROP_DATAandPROP_STR*/ uint64_tprop_val; /*forPROP_VAL*/ uint64_tprop_idx; /*forPROP_ARCandNODE*/ }d;};2.3.4NameBlock NameBlock為每個結(jié)點提供名字,合法的名字字符串定義如下: 一個名字字符串是由一串線性字符數(shù)組構(gòu)成的可讀字符串,字符數(shù)組以空字符(‘\0’ 字符的編碼是遵循ISO標(biāo)準(zhǔn),且是所有人類可以識別的字母和符號,但是不包括以下:即空格,“/”,“\”,“;”,“[“,“]”,“@”。 要引用某個名字字符串,你必須使用NameBlock中的某個名字字符串的起始字節(jié)偏移。 在NameBlock中,可能有重復(fù)的字符串,也有可能一個給定的字符串在NameBlock中只出現(xiàn)一次。因此,NameBlock中某個字符串的偏移便成為該字符串在機(jī)器描述符中的唯一標(biāo)識。 單個名字字符串可被多個結(jié)點元素引用。 NameBlock使用了全0字節(jié)來填充,這樣保證后邊的DataBlock的起始地址相對于MD的起始地址來說,是16字節(jié)的整數(shù)倍。這些填充的字節(jié)也包含在NameBlocksize中。2.3.5DataBlock DataBlock為NodeBlock中的結(jié)點提供了一些原數(shù)據(jù)(rawdata)。與NodeBlock中的元素相關(guān)聯(lián)的原數(shù)據(jù)就是一個簡單的線性rawdata連接串,它沒有更復(fù)雜的結(jié)構(gòu)。每個原數(shù)據(jù)的大小、位置以及內(nèi)容是通過NodeBlock中的引用元素來標(biāo)識。 DataBlock中的內(nèi)容沒有對齊要求,除非引用該內(nèi)容的元素要求它這樣做。如果需要對齊,則它的對齊規(guī)則同NameBlock,也是采用全0填充,起始地址相對MD起始地址來說是16字節(jié)的整數(shù)倍。 MD的創(chuàng)建者必須安排DataBlock中的內(nèi)容,以使得DataBlock滿足對齊要求。同時,MD的使用者必須使用一個足夠大的緩沖區(qū)來讀入這個MD,或者M(jìn)D使用者必須時刻準(zhǔn)備好正確地處理每一個沒有對齊的數(shù)據(jù)。2.3.6Tag的含義 定義ElementTag是為了方便調(diào)試,elementtag的定義見表2.1.表2.1ElementTag定義TagValueASCIINameDescriptionValuefield0x0\0LIST_ENDEndofelementlist-0x4e'N'NODEStartofnodedefinition64bitindextonextnodeinlistofnodes0x45'E'NODE_ENDEndofNodedefinition-0x''NODE_NULLNooperation-tobeignored00x61'a'PROP_ARCNodepropertyarc'ingtoanothernode64bitindexofnodereferenced0x76'v'PROP_VALNodepropertywithanintegervalue64bitintegervalueforproperty0x73's'PROP_STRNodepropertywithastringvalueoffsetandlengthofstringwithindatablock0x64'd'PROP_DATANodepropertywithablockofdataoffsetandlengthofpropertydatawithinthedatablock 在具體的C代碼中,ElementTag可以定義如下:#define DT_LIST_END 0x0#define DT_NULL ''#define DT_NODE 'N'#define DT_NODE_END 'E'#define DT_PROP_ARC 'a'#define DT_PROP_VAL 'v'#define DT_PROP_STR 's'#define DT_PROP_DAT 'd'2.3.7NODE每一個Node至少包含兩個元素:tag=NODE的元素,是每個Node的開始元素;tag=NODE_END的元素,是這個Node結(jié)束元素。在這兩個元素中間有0個或多少PROP_*元素。如圖3.4所示。將NODE元素與名字關(guān)聯(lián)起來,來定義一個Node的類型,NODE元素是這個結(jié)點在MDNodeBlock的起始位置。通過線性搜索并匹配類型或是順著有向無環(huán)圖中的PROP_ARCs,可以找到相應(yīng)的結(jié)點。圖2.4一個Node2.3.8NODE種類 MD中的Nodes主要有兩個作用。其一就是提供他們所代表的虛擬資源的相關(guān)信息,另外還可以當(dāng)作DAG中的一個結(jié)點,DAG是由MD所構(gòu)成的有向無環(huán)圖。這個結(jié)點包含了特定資源的屬性,但Node的最主要的一個功能是為DAG中的有向邊arc提供一個容器,arc將各種資源連接起來。 Nodes有4種,不同的Node代表使用不同的walker來處理。同時一個node的類別也決定了這種node是否可以在MD中被找到,或是這種node是可選的,可以被忽略。Node的分類定義如表2.2:表2.2Node種類種類詳細(xì)說明core表示這種結(jié)點必須出現(xiàn)在MD中resourcerequired如果結(jié)點所描述的資源在虛擬機(jī)器中存在,則與這種資源相關(guān)聯(lián)的結(jié)點必須出現(xiàn)在MD中,以用來表示這種資源。requiredbyX如果一個X類型的結(jié)點出現(xiàn)在MD中,則一個或多個這種類型的結(jié)點將會出現(xiàn)在MD中,并且與X關(guān)聯(lián)起來optional表示這種類型結(jié)點不是必須出現(xiàn)在MD中,它完全是可選的.2.3.9有向無環(huán)圖 MD的本質(zhì)是一個有向無環(huán)圖(DAG)的集合,而DAG則是由一些描述虛擬機(jī)器中可用資源的Node所組成的,這些資源信息則是通過MD請求API來分配給操作系統(tǒng)的。一個典型的MD有向無環(huán)圖見圖2.5。圖2.5MD-有向無環(huán)圖2.4本章小結(jié)在UltraSPARCHypervisor中,每個虛擬機(jī)是一個自包含的劃分,即一個邏輯域,它能夠支持獨(dú)立的操作系統(tǒng)。邏輯域中有許多可用的資源,Hypervisor使用MD來描述這些資源。在這一章,我們介紹了邏輯域和MD的概念,并詳細(xì)分析說明了Hypervisor中MD的具體實現(xiàn)。第三章存儲器資源的劃分及管理第三章存儲器資源的劃分及管理3.1傳統(tǒng)內(nèi)存管理3.1.1地址類型在Intelx86微處理器體系結(jié)構(gòu)下,地址分三類:邏輯地址:機(jī)器語音指令仍用這種地址只讀一個操作數(shù)或一條指令的地址。這種尋址方式在Intel有各的分段結(jié)構(gòu)中表現(xiàn)得尤為具體,它促使DOS或Windows程序員把程序分成若干段,每一個邏輯地址都由一個段和偏移量組成。偏移量指明了從段開始的地方的實際地址之間的距離。線性地址:是一個32位的無符號整數(shù),可以用來表示高達(dá)4GB的地址。線性地址通常用16進(jìn)制數(shù)字表示,值范圍從0x00000000到0xffffffff。物理地址:用于芯片級別內(nèi)存單元尋址。它們與從微處理器的地址引腳發(fā)送到內(nèi)存總線上的電信號相對應(yīng)。 CPU控制單元通過一種稱為分段單元的硬件電路把一個邏輯地址轉(zhuǎn)換成線性地址;接著,第二個稱為分頁單元的硬件電路把一個線性地址轉(zhuǎn)換成物理地址。圖內(nèi)存尋址3.1.2首先檢查選擇符TI域,用于決定段描述符保存在哪個一個描述附表中。TI域指明了描述符是GDT中還是在激活的LDT中。從段選擇符的索引域計算段描述符的地址,索引域的值乘以8,這個結(jié)果被放到GDTR或LDTR寄存器中。把邏輯地址偏移量與段描述符基地址域的值相加,就得到了線性地址。圖.2Intel處理器的分頁單元處理4KB的頁。32位的線性地址被分成3個域:目錄:最高的10位;頁表:中間的10位;偏移量:最低的12位。線性地址的轉(zhuǎn)換由兩步完成,每一步都是基于一種轉(zhuǎn)換表,第一種轉(zhuǎn)換表為頁目錄表,第二種轉(zhuǎn)換表稱為頁表。正在使用的頁目錄表的物理地址存放在處理器CR3寄存器種,線性地址內(nèi)的目錄域決定了它指向頁目錄表中的哪個項,即指向哪個頁表。地址的頁表域決定頁表中的一項,此項含有此頁所在頁框的物理地址。偏移量域,決定了本頁框內(nèi)的相對位置。圖3.33.2Hypervisor的內(nèi)存管理3.2.1地址模式3.2.1本節(jié)定義了Sun4v的內(nèi)存管理體系結(jié)構(gòu)。為提供內(nèi)存尋址,為虛擬化架構(gòu),同時取消明確依賴硬件機(jī)制的虛擬內(nèi)存管理。這種機(jī)制提供特權(quán)模式來操縱內(nèi)存,并在轉(zhuǎn)向虛擬化,使這種內(nèi)存提供給非特權(quán)模式進(jìn)程。3.2.1.與傳統(tǒng)體系結(jié)構(gòu)一樣,在Sun4v架構(gòu)中有兩種地址類型。主要不同的是,虛擬地址轉(zhuǎn)化為實地址,而不是被翻譯物理地址。這一變化是為物理隔離內(nèi)存分為多個分區(qū)。虛擬地址的翻譯由MMU來完成,以便尋址數(shù)據(jù)的物理內(nèi)存。這個定義不變于在現(xiàn)有系統(tǒng)中的nonprivileged和privileged模式地址。實地址用于提供給privileged級軟件來描述物理內(nèi)存的。翻譯存儲緩沖器(TSBs)維持著用privileged級軟件的privileged模式或nonprivileged模式虛地址翻譯為實地址。MMUBypass地址在特權(quán)模式中也為實地址。三種地址類型的完整格式如下:virtualaddress:<partitionID>::<contextID>::<address>realaddress:<partitionID>::<address>physicaladdress:<address>其中partitionID包含在TLB項中,允許多個客戶操作系統(tǒng)共享MMU。contextID用于描述一個線程的執(zhí)行環(huán)境,在一個實地址空間中,它將虛擬地址空間劃分為多個。3.2.1.在UltraSPARCT2體系結(jié)構(gòu)中支持48位的虛地址空間和40位的物理地址空間.40位的物理地址空間被分割成兩節(jié),bit[39]=0的位內(nèi)存地址空間,bit[39]=1的為I/O的地址空間。 UltraSparcT2的支持48位子集的64位的全部虛實地址空間。雖然全部生成64位的地址空間,并儲存在整數(shù)正數(shù)寄存器中,但合法地址僅限于在”VAhole”之外的地址。VAHole:0x0000800000000000~0xFFFF7FFFFFFFFFFF。48位的虛實地址空間分布圖如下:圖.4通過地址空間標(biāo)識符,指令可以明確指定一個地址空間。所有的SPARCv9的ASI定義在sun4v中不變,同時一些新的ASIs被定了。ASIs與內(nèi)存管理相關(guān)詳細(xì)說明如下:表Hypervisor中的MMU服務(wù)這些Hypervisor的服務(wù)控制著地址翻譯的行為。一個基于Sun4v的客戶操作系統(tǒng),不需要這些服務(wù)。在缺省或初始的操作環(huán)境下,不允許客戶操作系統(tǒng)的進(jìn)行虛擬地址翻譯。在這種模式下,所有的指令和相關(guān)的數(shù)據(jù)將使用實地址。 如果一個客戶操作系統(tǒng)能使用MMU進(jìn)行地址翻譯,那么虛到實的地址映射可能在被指定的三種方法中的一種;無論是固定映射,或是映射地址可能被換出,并重新加載系統(tǒng)TLBs或是間接通過翻譯存儲緩沖器(TSBs)。此外,在翻譯啟用的前提下,一個客戶操作系統(tǒng)都必須聲明故障狀態(tài)區(qū),在翻譯出錯的情況下,為hypervisor的提供出錯信息。地址翻譯緩存(TranslationStorageBuffer,TSB)由一組TTE構(gòu)成的數(shù)據(jù)緩存表并完全由軟件管理,功能類似于一個cache,作為地址翻譯緩存表,當(dāng)TLBmiss的時候,用于迅速重新加載TLB。圖3.5TSB函數(shù)控制兩類TSBs,一是為當(dāng)虛擬地址的內(nèi)容為0時,另一個是當(dāng)虛擬地址的內(nèi)容為非0時。demap函數(shù)的功能是從硬件TLB中去除翻譯功能。圖.2在Sun4v架構(gòu)的翻譯表條目(TTEs)中,定義了用于編碼頁大小的值。頁大小的掩碼表明這些編碼在給定TSB中的某一個指定TTEs中。如果每一個位在頁大小位掩碼被設(shè)置,Sun4v的頁大小被確定。例如,位0對應(yīng)于一個了8Kb頁面大小。在TTE中的表示,如下表:表.3內(nèi)容索引是TSB的一個描述域,內(nèi)容索引值(contextvalue)為頁翻譯供應(yīng)TSB的條目,或是一個單一的值應(yīng)用整個TSB。后者能夠使得一個TSB使用多個(contextvalue)。內(nèi)容索引域的使用可適用于兩種模式的TSB。MMU的API分兩大類,一類是用于指令地址翻譯,另一類是用于數(shù)據(jù)地址翻譯。因此,很多接口使用MMUflags參數(shù)用于區(qū)分采用指令映射方式還是數(shù)據(jù)映射方式,或是兩者同時映射方式。為確保MMU服務(wù)之間的一致性,對MMU的flags參數(shù)進(jìn)行如下定義:Flags參數(shù)設(shè)置為1時,對應(yīng)的API進(jìn)行指令地址翻譯方式。Flags參數(shù)設(shè)置為0時,對應(yīng)的API進(jìn)行數(shù)據(jù)地址翻譯方式。一個TTE在TSB中用于描述虛地址到實地址之間的映射。地址翻譯表項(TranslationTableEntry,TTE),存放著單個頁面映射的信息。TTE被分成兩個64位的字,分別是表示tag和data的翻譯。tag的使用僅在硬件cache中使用,用于判斷是否TSB命中。TSBentry(TTE)format圖地址翻譯過程3.2.3.地址翻譯的行為:虛擬地址到實地址的翻譯過程由特權(quán)級軟件管理。實地址到物理地址的翻譯過程由超特權(quán)級軟件管理。特權(quán)級的軟件通過一個叫做軟件翻譯表的仲裁數(shù)據(jù)結(jié)構(gòu)來做保存翻譯的信息。TSB為軟件翻譯表提供一個類似于Cache的功能,當(dāng)TLB缺失的時候,使其快速加載TLB。MMUTLBs作為獨(dú)立緩存的軟件轉(zhuǎn)換表,提供虛擬到物理地址翻譯。超特權(quán)級軟件維持著從實際地址到物理地址的翻譯信息。圖.當(dāng)給定一個63位的虛擬地址時,Hypervisor首先將虛擬地址轉(zhuǎn)換位56位的實際地址,再轉(zhuǎn)換位56位的物理地址。分別以8KB頁面大小和256MB頁面大小為例。 圖3.83.3Hypervisor的硬件支持3.3.1TSB訪問的硬件支持當(dāng)TLB項目重新加載缺失時,MMU硬件提供TLB缺失處理服務(wù):硬件從新加載缺失的TTE項目(hardwaretablewalk)。用缺失處的虛擬地址形成TSB指針。通過TSBtag比較,形成TTEtag目標(biāo)。通過單一存儲ASI操作來原語寫一個TLB項。3.3.1.硬件游走表是一個硬件狀態(tài)機(jī),為重新加載TLB提供服務(wù)。它訪問TSBs找到與VA匹配的TTEs。硬件游走表提供了從RPN到PPN的轉(zhuǎn)換機(jī)制。監(jiān)控程序可控制TTE,但是監(jiān)控程序不能訪問或控制物理內(nèi)存,因此TTE包含了RPNs。硬件游走表不能翻譯實際地址請求,在實地址確實的時候,TLU發(fā)出inst_real_translation_miss或data_real_translation_miss信號。硬件游走表被用作流水線的一級。當(dāng)一個TLB缺失的時,硬件游走表啟用情況下,重填序列過程如下:產(chǎn)生TTE地址:計算TSB的物理地址,來檢測TTE。加載TTE:從L2cache中取出4字加載到請求的TTE地址。TTE命中判斷:比較VPN,context,頁大小。TTE缺失:通過instruction_access_MMU_miss或data_access_MMU_misstrap判斷產(chǎn)生。TTE地址的產(chǎn)生:首先獲得TSB的基地址,通過TSB配置寄存器獲得其次是偏移量:由VA中獲得。地址計算公式:3.3.1.虛擬地址到物理地址翻譯:虛擬地址到物理地址翻譯時候,引起的TLB缺失,一個fast_instruction_access_MMU_miss或fast_data_access_MMU_miss異常。比較合適TLB缺失處理應(yīng)加載從MMU切換空間中加載的TSB指針和TTEtag目標(biāo)。TLB缺失處理核查,如果需要的TTE存在于TSB中,TTE的數(shù)據(jù)存儲到TLB數(shù)據(jù)寄存器中。如果需要的TTE不在TSB中,TLBS缺失處理將跳轉(zhuǎn)到一個更準(zhǔn)確的TSB缺失處理。實際地址到物理地址翻譯:實際地址到物理地址翻譯時候,引起的TLB缺失,instruction_real_translation_miss或adata_real_translation_miss異常。合適實缺失處理取決于進(jìn)行實到虛地址的翻譯。如果實到虛地址的翻譯,由插入的TLB中的r位置位,則指令翻譯重試。3.3.2實到虛地址映射與預(yù)測取指UltraSparcT2的預(yù)測取指,在某些情況下,可使內(nèi)存控制器不受物理地址支持??紤]下面的指令序列,退出hyperprivileged模式和返回用戶或特權(quán)模式。jmpl%g3+%g0,%g0wrhpr%g0,%g0,%hpstateIMMU將使用bypass方式進(jìn)行地址翻譯,也就是VA[39:0]直接傳給PA[39:0]。然而,跳轉(zhuǎn)目標(biāo)的取指是被預(yù)測的,所以內(nèi)存控制器可以VA[39:0]的跳轉(zhuǎn)目標(biāo)看成物理地址。但在software_recoverable_errortrap內(nèi)不支持。3.4小結(jié)在Sun4V體系結(jié)構(gòu)中,有兩類地址,虛擬地址和實地址。對每個用戶看到的是一個虛擬地址,中間通過MMU轉(zhuǎn)換為一個實地址,再轉(zhuǎn)換為一個物理地址。對每個邏輯域都有一塊自己的存儲器資源。本章主要描述Hypervisor如何對存儲資源進(jìn)行描述以及虛擬地址和物理地址之間的轉(zhuǎn)換機(jī)制。第四章虛擬處設(shè)總線管理第四章虛擬外設(shè)總線管理4.1IO總線概述 計算機(jī)系統(tǒng)硬件結(jié)構(gòu)的基礎(chǔ)是系統(tǒng)總線,用系統(tǒng)總線將處理器、主存儲器和外圍設(shè)備連接起來,傳輸數(shù)據(jù)、控制和狀態(tài)信息。系統(tǒng)總線包括處理器總線和IO總線。處理器總線因處理器而異,隨著處理器的變化和發(fā)展而更新。IO總線是通用總線,用于硬件平臺中外圍設(shè)備的互聯(lián)和外圍設(shè)備與主存儲器的通信。處理器也經(jīng)過IO總線對外圍設(shè)備進(jìn)行訪問。IO總線是PC計算機(jī)平臺的骨架,它的協(xié)議直接決定了計算機(jī)的硬件架構(gòu)與配置,它的性能與指標(biāo)直接影響著計算機(jī)IO子系統(tǒng)的數(shù)據(jù)傳輸和處理能力。4.1.1IO總線的發(fā)展IO總線的發(fā)展歷程粗略地可劃分為三代:IO總線包括ISA、EISA、MC和VESA其中ISA總線的數(shù)據(jù)寬度為16位,數(shù)據(jù)傳輸速率約5MBps;EISA為增強(qiáng)型ISA較ISA將數(shù)據(jù)總線寬度和地址總線寬度均擴(kuò)展為32為;VESA數(shù)據(jù)地址總線寬度為32位,總線時鐘頻率達(dá)33MHz,數(shù)據(jù)傳輸率可達(dá)132MBps。第一代IO總線有一個共同的特點,其信號的功能和時序與處理器引腳關(guān)系密切,幾乎是處理器信號的延伸和擴(kuò)展,有些信號還與主板上的硬件資源有關(guān)系。IO總線包括PCI、AGP和PCI-XPCI總線的和地址線寬32位,數(shù)據(jù)線可擴(kuò)展為64位,PCI1.0和PCI2.0的數(shù)據(jù)傳輸率為133MBps(64位數(shù)據(jù)線,可使數(shù)據(jù)傳輸率達(dá)到266MBps)。PCI總線是一個標(biāo)準(zhǔn)的、與處理器無關(guān)的局部外圍總線,不受制于系統(tǒng)所使用的處理器的種類,通用性更強(qiáng)。以上第一代和第二代總線都是并行的,有多條地址線、數(shù)據(jù)線和控制線,掛連多個設(shè)備成為多下掛式總線,總線帶寬由多個設(shè)備共享。顯然,在并行總線上掛接多個設(shè)備后,必須進(jìn)一步提高時鐘頻率。但是,以提高總線頻率來提高帶寬并不是無限制的,頻率越高總線上能夠掛連得電氣負(fù)載設(shè)備越少。實際上,頻率為266MHz以上的PCI-X總線只能帶一個擴(kuò)展槽。高性能IO總線PCIExpressPCI-E在總線結(jié)構(gòu)上采取了根本性的變革,主要體現(xiàn)在兩個方面:一是由并行總線變?yōu)榇锌偩€;二是采用點對點的連接。在基于PCI的計算機(jī)中,主存儲器設(shè)備掛在主橋上,PCI總線專用于外圍設(shè)備的連接。因此,在SPACET2體系結(jié)構(gòu)中內(nèi)置了對PCIExpress總線架構(gòu)支持,以下就PCI-E架構(gòu)做以簡介。4.1.2PCIExpress基本規(guī)范介紹PCIExpress是用來互連未來各類計算機(jī)和通信平臺應(yīng)用中連接外圍設(shè)備的高性能I/O總線。在UST2中也增加了對該總線結(jié)構(gòu)的支持,它采用了與PCI總線相同的使用模型,加載存貯結(jié)構(gòu)和軟件接口等技術(shù),而用高速串行接口代替了并行總線執(zhí)行方式。PCIExpress利用點到點連接方式,基于交換器的技術(shù)和基于數(shù)據(jù)的通信協(xié)議使其性能達(dá)到一個新的水平。PCIExpress拓?fù)浣Y(jié)構(gòu)由將一組設(shè)備連接在一起的點到點的鏈路組成。圖1描述的實例由一個根聯(lián)合體(RC),多個終端(I/O設(shè)備),一個交換器和一個PCIExpress-PCI橋組成,由PCIExpress鏈路連接。拓?fù)浣Y(jié)構(gòu)中的每一個組件都映射到一個單獨(dú)的地址空間中,可通過與PCI相類似的加載存貯命令訪問。圖4.1PCIExpress拓?fù)浣Y(jié)構(gòu)根聯(lián)合體(RootComplex)指的是連接CPU和存貯子系統(tǒng)的設(shè)備,位于I/O層次的根部。根聯(lián)合體可以支持一個或多個PCIExpress端口。通過根聯(lián)合體對對等事務(wù)的性質(zhì)是可選的,并且可以獨(dú)立執(zhí)行。根聯(lián)合體作為請求者支持三種請求方式:發(fā)起配置請求;發(fā)起I/O請求;發(fā)起鎖定請求,但當(dāng)其作為應(yīng)答者后只響應(yīng)鎖定請求。端點分為PCIExpress端點和傳統(tǒng)端點。傳統(tǒng)的端點必須出現(xiàn)在根聯(lián)合體的下一層定義域中,其作為完成者支持以上三種請求方式。PCIExpress端點作為完成者只支持配置請求。交換器是多PCI到PCI虛擬橋的邏輯集。交換器可看做有兩個或多個邏輯PCI到PCI橋組成,交換器使用PCI橋機(jī)制轉(zhuǎn)發(fā)事物,還必須能在任意組端口轉(zhuǎn)發(fā)所有類型的處理層數(shù)據(jù)包。PCIExpress層次概述PCIExpress規(guī)范定義了三層分離的邏輯層體系結(jié)構(gòu)。這些層分別是處理層、數(shù)據(jù)鏈路層和物理層。它們在垂直方向上又可以進(jìn)一步分成兩個部分:處理出站流量的發(fā)送部分和處理入站流量的接收部分。PCIExpress使用數(shù)據(jù)包在設(shè)備間傳遞信息。數(shù)據(jù)包在處理層和數(shù)據(jù)鏈路層形成,將信息從發(fā)送部分傳遞到接收部分。當(dāng)發(fā)送的數(shù)據(jù)包到達(dá)其它層時,會給它加上相應(yīng)層處理數(shù)據(jù)包可需的附加信息。在接收端執(zhí)行相反的過程,將數(shù)據(jù)包從物理層描述轉(zhuǎn)換成鏈路描述,最終(對于處理層數(shù)據(jù)包而言)轉(zhuǎn)換成接收設(shè)備的處理層能夠處理的形式。圖4.2層次關(guān)系簡圖處理層主要負(fù)責(zé)處理層數(shù)據(jù)包的裝配與拆解。同時處理層還負(fù)責(zé)管理基于信用的流控制,它支持四種地址空間:包含三種PCI地址空間(存貯器,I/O和配置)和消息。處理層服務(wù)主要負(fù)責(zé)生成出站TLP流量和接收入站TLP流量,在鏈路另一端與之對應(yīng)的處理層之間交換流控制信息,同時它還負(fù)責(zé)支持軟件電源管理。數(shù)據(jù)鏈路層的主要功能是鏈路管理和數(shù)據(jù)完整性,包括錯誤檢測和錯誤糾正。數(shù)據(jù)鏈路層服務(wù),主要負(fù)責(zé)與鏈路另一端數(shù)據(jù)鏈路層交換信息的可靠性,包括:初始化和電源管理服務(wù),數(shù)據(jù)保護(hù),錯誤檢查和重試服務(wù)等內(nèi)容。物理層包括所有的電氣接口操作驅(qū)動器和輸入緩存器,并行到串行和串行到并行轉(zhuǎn)換,PLL和阻抗匹配電路。同時它還包括有關(guān)接口的初始化和定向的邏輯功能。物理層服務(wù)包括:接口初始化、維護(hù)控制和狀態(tài)跟蹤;符號和專門的有序集產(chǎn)生(8b/10b的編碼/解碼,內(nèi)嵌的時鐘調(diào)整和矯正);符號傳輸和矯正等內(nèi)容。PCIExpress事務(wù)介紹PCIExpress設(shè)備之間的數(shù)據(jù)傳送是以事務(wù)組織的,根復(fù)合體能夠發(fā)起指向端點的事物,端點可以發(fā)起指向另一個端點的事物。PCIExpress事物可以分為四中:存儲器事務(wù)、IO事務(wù)、配置事務(wù)和消息事務(wù)。事物的執(zhí)行或者完成是由發(fā)送和接受事務(wù)包(TLP)來具體實現(xiàn)的,事務(wù)被定義為,為實現(xiàn)請求者和完成者之間某種信息傳送所要求的、有一個或若干個包組成的發(fā)送序列。表中列出了PCIExpress的事務(wù),這些事務(wù)分為非轉(zhuǎn)發(fā)事務(wù)和轉(zhuǎn)發(fā)事務(wù)。表4.1PCIExpress的事務(wù)事務(wù)類型類型MemroyRead非轉(zhuǎn)發(fā)事務(wù)MemoryWrite轉(zhuǎn)發(fā)事務(wù)MemoryReadLock非轉(zhuǎn)發(fā)事務(wù)IORead非轉(zhuǎn)發(fā)事務(wù)IOWrite非轉(zhuǎn)發(fā)事務(wù)事務(wù)類型類型ConfigurationRead(Type0,Type1)非轉(zhuǎn)發(fā)事務(wù)ConfigurationWrite(Type0,Type1)非轉(zhuǎn)發(fā)事務(wù)Message轉(zhuǎn)發(fā)事務(wù)非轉(zhuǎn)發(fā)事務(wù)按照分割事務(wù)的方法處理,請求這發(fā)送TLP請求包給完成者,然后,該完成者返TLP完成包給請求者,通知請求者它已經(jīng)接收到了請求TLP,若是讀事務(wù),其完成TLP中還包含有返回的讀數(shù)據(jù)。轉(zhuǎn)發(fā)事務(wù)只需請求者發(fā)送TLP請求包給完成者,完成者不返回完成TLP請求包給請求者,雖然請求者不知道是否該請求已被完成者成功的接受收,但總線性能得到優(yōu)化。轉(zhuǎn)發(fā)事務(wù)類的消息請求TLP中,有的帶數(shù)據(jù),有的不帶數(shù)據(jù)。4.2UltraSPACET2外設(shè)總線的特性UtralSPACET2內(nèi)部集成了PCIExpress接口單元(PIU)和網(wǎng)絡(luò)接口單元(NIU),其中NIU單元也是通過PCI接口實現(xiàn)通信的。4.2.1PCIExpress概述在UltraSPARCT2Soc中PCIExpress接口單元集成了PCIE橋中的主端功能,也就是上文所提到的根聯(lián)合體。它允許一個基于PCIExpress的I/O子系統(tǒng)以一種較為靈活的方式通過標(biāo)準(zhǔn)的PICExpress元件連接到某個UltraSPARCT2處理器當(dāng)中,這些元件包括:1)PCI-E橋和交換器;2)PCI-E—PCI或PCI-E—PCI-X橋;3)本地PCI-E設(shè)備。UltraSPARCT2中PCI-E的特性UltraSPARCT2支持一個x8PCI-E端口操作。PCI-E使用8-bit/10-bit編碼,全雙工點對點連接,每個通道每周期傳送1bit數(shù)據(jù)。每個通道理論上最大的帶寬可達(dá)到2.0Gbit/s(每個連接的單向速率)。則UltraSPARCT2有8個通道,所以其最高速度為2.0GB/s。UltraSPARCT2中支持PCI-E的特性包括:1)UltraSPARCT2片上系統(tǒng)集成了PCIE主控制器;2)每個x8(2.5GHz)PCIE端口內(nèi)部包含一個串并行轉(zhuǎn)換器;3)將PICE的配置,I/O和PCIE的32bit和64bit的內(nèi)存地址空間映射到UltraSPARCT2的物理地址空間;4)將UltraSPARCT2的物理地址空間映射到PCIE的內(nèi)存地址空間。支持Bypass和通過mmu的傳輸訪問形式。支持hyperviseor為設(shè)備請求特殊的傳輸方式;5)將PCIExpressMSI/MSI-X中斷轉(zhuǎn)換為UltraSPARCT2的響應(yīng)中斷;6)INTX特性被完全支持;7)電源管理。此外UltraSPARCT2中PCIExpress接口包括三個核:DMU(數(shù)據(jù)管理單元):由FireASIC的DMC模塊驅(qū)動。包括體系結(jié)構(gòu),編程模型,內(nèi)存映射,寄存器,IOMMU(sun4u模式),錯誤處理和中斷機(jī)構(gòu)。PEU(PCIExpress單元):是一個第三方的用來實現(xiàn)PCIExpress底層協(xié)議的IP核。PSR(PCI-E串并行轉(zhuǎn)換器):UltraSPARCT2的PCIE串并行轉(zhuǎn)換器宏單元由TI提供。DMU,PEU和PSR的結(jié)合成為PCIE接口單元,各個單元對于PIU都是可以屏蔽的。地址映射FireASIC在JBUS地址空間中提供三種可編址的區(qū)域。一個JBUS的物理地址有43個bit按如下方式編碼:一個8M的非緩沖區(qū)用來讓PIO訪問FireASIC控制狀態(tài)寄存器。一個64G的非緩沖區(qū)用來映射PCIExpress的配置,PCIExpress的IO和PCIExpress的32-bit和64-bit地址空間的子區(qū)域。沒有使用的64G的緩存區(qū)域。UltraSPARCT2支持8M和64G的非緩沖區(qū)域與FireASIC具有不同的基地址,但是在這些區(qū)域中地址譯碼在UST2上和在FireASIC是完全相同的,因此,8M非緩沖區(qū)中的控制狀態(tài)寄存器和64G非緩沖區(qū)的子區(qū)域在UST2和FireASIC中一樣具有相同的偏移量。4.2.2UST2中PIU的操作PIU具有針對NCU,SIU的接口和一個獨(dú)立的PCIExpress葉結(jié)點。該葉幾點包括一個MMU,一個TSB的cache,36個事件隊列,MSI映射狀態(tài),和中斷響應(yīng)控制器。PCI-E協(xié)議中請求者的ID與其總線號,設(shè)備號,和功能號相關(guān)聯(lián)且唯一,用于區(qū)別發(fā)出請求的設(shè)備。PIU的PCI-E請求ID通過DMCPCI-E配置寄存器軟件可編程的。NCU對PIU(下行)的事務(wù)通過不同的編碼方式UST2決定使用8M的片上空間還是使用64G的非片上空間,對于8M的非緩沖區(qū)域的訪問,CSR具有如下編碼:{39:32}=0x88,選定PIU中8M的非緩沖區(qū)進(jìn)行操作。{31:23}=0。{22:00}=8M區(qū)域中的偏移量。對于64G的非緩沖區(qū)(映射了如下子區(qū)域:PCI-E配置區(qū)間,PCI-E的IO空間和32-bit與64-bit的內(nèi)存區(qū)域空間):{39:36}=0xC對片外64G的PCIE的非緩沖區(qū)空間進(jìn)行操作。{35:00}=64G區(qū)域中的偏移量。如上所述,對于NCU的40bit的物理地址,UST2中的PIU-E映射如下:表4.2NCUAddress-to-UnitMappingTableMSB地址范圍{39:32}分配8816片內(nèi)PIU狀態(tài)寄存器(包含8M非緩沖區(qū)域)C016-CF16片外PCI-E空間(64G片外非緩沖區(qū)域)其中8M的非緩沖區(qū)域中包含的了所有的CSR,64G的空間被分成了多個子區(qū)域PIU解碼并響應(yīng)PCIE端口的三個單獨(dú)區(qū)域。每個子區(qū)域的便宜和大小在芯片初始化時又NCU通過偏移基地址和偏移掩碼寄存器進(jìn)行編程初始化。64G非緩沖區(qū)域的分區(qū)如下:表4.364-Gbyte非緩沖區(qū)分區(qū)子區(qū)域容量UST2-to-PIU事務(wù)組PCIECFG/IO512Mbit非緩沖讀(最大4byte)非緩沖寫(最大4byte)PCIEMem3216Mbyte-4Gbyte非緩沖讀非緩沖寫PCIEMem6416Mbyte-64Gbyte非緩沖讀非緩沖寫以下就這幾個區(qū)域做以詳細(xì)描述。64G和8M空間區(qū)域中PIO的讀寫權(quán)限如下:表4.4AllowablePIOWriteAccessSizes字節(jié)大小64Gbyte空間8Mbyte空間Conf/IOMem32Mem64CSR1YYYN2YYYN4YYYN8NYYY存儲器掩碼指令NYYN表4.5AllowablePIOReadAccessSizes字節(jié)大小64Gbyte空間8Mbyte空間Conf/IOMem32Mem64CSR1YYYN2YYYN4YYYN8NYYY64GB地址空間中的PCIE的配置和IO子區(qū)域是512Mbyte對其的。PIU的64GB空間中的偏移和大小的定義是由NCU的PCIE-Cfg/IO的偏移量寄存器和掩碼寄存器。該子區(qū)域的偏移量基址和掩碼寄存器必須是被初始化為512M。若操作失敗將會發(fā)生不可預(yù)計的錯誤。PCIE的配置和IO子區(qū)域的第一個256MB的空間被映射為PCIE的配置空間,后256MB被映射為IO空間。所有的配置和IO數(shù)據(jù)包通過虛擬通道號為零的通道發(fā)送。軟件相關(guān)的物理地址和PCI-E-Cfg/IO區(qū)域的映射關(guān)系如下:{39:29}配置和IO地址匹配,該區(qū)域用于判斷對PIU地址的方位是否落在配置和IO子區(qū)域當(dāng)中。{28}配置和IO地址操作。0配置操作;1IO操作。{27:00}配置和IO空間尋址信息。當(dāng)訪問的空間為配置空間時該組信息由如下各位組成:272019151412110總線號設(shè)備號功能號配置寄存器地址圖4.3配置和IO空間尋址格式當(dāng)訪問空間落在IO空間時,該區(qū)域值表示PCIE的IO地址值。此時{28:31}的值需設(shè)置為0。對于內(nèi)存區(qū)域,UST2分為32bit內(nèi)存區(qū)域和64bit內(nèi)存區(qū),其中對于第一種情況由36個比特進(jìn)行尋址,其中35:x+1個用來判斷訪問區(qū)域是否是在Mem32的范圍內(nèi),x由Mem32的大小決定,x:00PCIE的內(nèi)存地址。對于后一種情況即64bit內(nèi)存區(qū)域器尋址方式和32bit內(nèi)存類似,對于PCIE的Mem64的PIO地址組合方式如下:{offset{63:36},(offset{35:24}|pioaddr{35:24}),pioaddr{23:2}}wherepioaddr{35:0}={(pa{35:24}&~mask{35:24}),pa{23:0}}andoffset{63:24}isfromtheMem64PCIEOffsetregisterPIU對內(nèi)存(上行)事務(wù)該事務(wù)可以分為四個內(nèi)存地址空間,分別為:PCIE配置空間,PCIE的IO地址空間,PCIE內(nèi)存空間和PCIE消息地址空間。也就是需要考慮對PCIE對內(nèi)存事務(wù)的處理和對消息事務(wù)的處理。PCIE內(nèi)存事務(wù)的處理和內(nèi)存轉(zhuǎn)換是基于以下方面的考慮:1)IOMMU的操作模式;2)PCIE的尋址模式;3)內(nèi)存轉(zhuǎn)換是否被使能;4)Bypass是否被使能;5)PCIE在64bit尋址模式下的尋址的{63:39}值。6)IO
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)療急救知識普及與技能提升
- 2026年成都紡織高等專科學(xué)校單招綜合素質(zhì)考試參考題庫帶答案解析
- 2026年常州紡織服裝職業(yè)技術(shù)學(xué)院單招職業(yè)技能考試備考題庫帶答案解析
- 醫(yī)療護(hù)理團(tuán)隊管理與績效評估
- 醫(yī)療健康產(chǎn)業(yè)與大數(shù)據(jù)
- 護(hù)理創(chuàng)新實踐與案例研究
- 護(hù)理護(hù)理人員的職業(yè)素養(yǎng)與行為規(guī)范
- 財稅專業(yè)涉稅增值稅課件
- 醫(yī)院后勤人員職業(yè)形象禮儀
- 2026年湖南吉利汽車職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試模擬試題有答案解析
- 2024-2025學(xué)年廣東省廣州市越秀區(qū)九年級(上)期末化學(xué)試題及答案
- 光伏CAD基礎(chǔ)知識培訓(xùn)課件
- 國家民用航空安全保衛(wèi)質(zhì)量控制方案
- 基于杜邦分析法的企業(yè)盈利能力分析-以格力電器為例
- WPF在醫(yī)學(xué)影像三維顯示中的應(yīng)用-洞察及研究
- 漢服設(shè)計培訓(xùn)課件
- 2026屆浙江省杭州市西湖區(qū)學(xué)軍中學(xué)(紫金港校區(qū))高三上學(xué)期9月月考英語試題
- 電廠氨使用安全培訓(xùn)課件
- 2025年供銷社資產(chǎn)管理員招聘面試預(yù)測題及答題技巧
- 2025秋季學(xué)期國開電大法律事務(wù)??啤缎谭▽W(xué)(2)》期末紙質(zhì)考試名詞解釋題庫珍藏版
- 2025-2030碳纖維復(fù)合材料成型設(shè)備技術(shù)發(fā)展與市場前景
評論
0/150
提交評論