中国科学技术大学计算机学院高级计算机系统结构课程案例_第1页
中国科学技术大学计算机学院高级计算机系统结构课程案例_第2页
中国科学技术大学计算机学院高级计算机系统结构课程案例_第3页
中国科学技术大学计算机学院高级计算机系统结构课程案例_第4页
中国科学技术大学计算机学院高级计算机系统结构课程案例_第5页
已阅读5页,还剩71页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中国科学技木大学奸算机号靛

高级计算机系统结构课程案例案例名称:多核服务器平台系统虚拟

化解决方案成员名单:廖鹏杨晓亮陈熊李志政卢佳帅指导教师:吴俊敏中国科学技术大学计算机科学与技术学院

日期:2009年4月14日摘要长期以来处理器性能的提升都是通过提高单ー线程执行流的主频和指令级并行性(流水线、分支预测等)来实现的。如今这些技术对性能的提升已经达到了极限。为此学术界提出了线程级并行性解决方案来克服指令级并行性(ILP)的局限性。目前己经有大量的线程级并行性(TLP)处理器,如共享大部分资源的SMT,主要集中在Cache层次共享的CMP等。此外,当前计算机体系结构研究的趋势表明未来CMP/SMT处理器将进一步增加上下文数量,因此片上处理器核数量将从2,4,8个增加到数百个。大规模多核处理器所面临的问题之一就是如何“发掘”计算机系统中的线程来充分利用片上资源。解决这ー问题的一种方案就是在同一个多核心片上同时运行多个操作系统(或者逻辑域)。为了达到这一目标,需要引入ー个通常被称为管理程序(Hypervisor)的系统虚拟机固件层来协调所有来自于不同逻辑域的请求和限制。Sun公司的Hypervisor就是针对上述目标所设计的基于UltralSPARCT2多核处理器的开源系统虚拟机。本文首先介绍了项目背景、虚拟机以及SUNUltraSPARCHypervisor,然后详细介绍了Hypervisor资源管理的五个方面:逻辑域资源、存储资源的划分与管理、虚拟外设管理、逻辑域间通信机制和各种资源的划分与调度。最后总结了Hypervisor的资源管理机制。关键词:多核虚拟化管理程序AbstractProcessorsperformanceimprovementhasbeenhistoricallyobtainedincreasingboththefrequencyclockspeedandtheinstructionlevelparallelism(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目录TOC\o"1-5"\h\z\o"CurrentDocument"第一章引言 1\o"CurrentDocument".!项目背景 1\o"CurrentDocument"虚拟机 1\o"CurrentDocument"SUNUltraSPARCHypervisor 2\o"CurrentDocument"论文安排 4\o"CurrentDocument"第二章逻辑域资源 5\o"CurrentDocument"背景 5\o"CurrentDocument"MachineDescriptions 5\o"CurrentDocument"Hypervisor中的MD 6\o"CurrentDocument"MD结构图 6\o"CurrentDocument"Header 7\o"CurrentDocument"NodeBlock 7\o"CurrentDocument"DataBlock 8\o"CurrentDocument"NODE 9\o"CurrentDocument"NODE种类 10\o"CurrentDocument"有向无环图 10\o"CurrentDocument"第三章存储器资源的划分及管理 12\o"CurrentDocument"传统内存管理 12\o"CurrentDocument"地址类型 12\o"CurrentDocument"内存寻址 12Hypervisor的内存管理 14地址模式 14\o"CurrentDocument"Hypervisor中的MMU月艮务 15\o"CurrentDocument"地址翻译过程 18Hypervisor的硬件支持 19TSB访问的硬件支持 19\o"CurrentDocument"实到虚地址映射与预测取指 20\o"CurrentDocument"小结 21第四章虚拟外设总线管理 错误!未定义书签.10总线概述 错误!未定义书签。IO总线的发展 错误!未定义书签.PCIExpress基本规范介绍 错误!未定义书签。UltraSPACET2外设总线的特性 错误!未定义书签。PCIExpress概述 错误!未定义书签。UST2中PIU的操作 错误!未定义书签。Hypervisor中总线及虚拟外设管理的实现 错误!未定义书签。虚拟设备 错误!未定义书签.设备及总线管理的代码实现 错误!未定义书签.小结及感想 错误!未定义书签。TOC\o"1-5"\h\z\o"CurrentDocument"第五章逻辑域间通信机制 22\o"CurrentDocument"逻辑域通道 42\o"CurrentDocument"无状态连接 42\o"CurrentDocument"LDC安全 42\o"CurrentDocument"LDC服务 43\o"CurrentDocument"端点 43\o"CurrentDocument"LDC队列 43\o"CurrentDocument"LDCAPI 44LDC基本结构 45概述 45\o"CurrentDocument"Hypervisor基本结构 47\o"CurrentDocument"LDC虚拟链路层(LDCvirtuallinklayer) 51\o"CurrentDocument"小结 58\o"CurrentDocument"第六章各种资源的划分及调度 59\o"CurrentDocument"对资源进行划分及调度的意义 59\o"CurrentDocument"Xen的逻辑域管理的机制 60\o"CurrentDocument"概述 60\o"CurrentDocument"XenHypervisor 61\o"CurrentDocument"Domain管理和控制(DomainManagementandControl) 62\o"CurrentDocument"SunHypervisor的资源的划分及调度 65\o"CurrentDocument"逻辑域在Hypervisor中的作用 65域的依赖 66\o"CurrentDocument"域管理操作 67\o"CurrentDocument"MD资源的查找支持相关函数举例 69\o"CurrentDocument"小结 70\o"CurrentDocument"第七章结论 71参考文献 72致谢 错误!未定义书签。第一章引言项目背景长期以来处理器性能的提升都是通过提高单ー线程执行流的主频和指令级并行性(流水线、分支预测等)来实现的。如今这些技术对性能的提升已经达到了极限。为此学术界提出了线程级并行性解决方案来克服指令级并行性(ILP)的局限性。目前己经有大量的线程级并行性(TLP)处理器,如共享大部分资源的SMT,主要集中在Cache层次共享的CMP等。此外,当前计算机体系结构研究的趋势表明未来CMP/SMT处理器将进一步增加上下文数量,因此片上处理器核数量将从2,4,8个增加到数百个。大规模多核处理器所面临的问题之一就是如何“发掘”计算机系统中的线程来充分利用片上资源。解决这ー问题的一种方案就是在同一个多核心片上同时运行多个操作系统(或者逻辑域)。为了达到这一目标,需要引入一个通常被称为管理程序(Hypervisor)的系统虚拟机固件层来协调所有来自于不同逻辑域的请求和限制。虚拟机“虚拟机是以某种易于用户和应用程序从中获益的方式来表示计算资源的过程,而不是根据这些资源的实现、地理位置或物理封装的专有方式来表示计算资源。换言之,虚拟机为数据、计算能力、存储资源以及其他资源提供了一个逻辑视图,而不是物理视图。”根据虚拟机的用途以及它们与真实硬件的相关程度可以将虚拟机分成两大类。系统虚拟机可以提供一个支持操作系统运行的完整的系统平台;而进程虚拟机的设计则是针对单个程序的执行,这意味着它支持单独的进程。实际上,虚拟机是将运行于其上的软件限制在虚拟机所提供的资源和抽象的内部。1)系统虚拟机系统虚拟机(硬件虚拟机)允许在运行各自操作系统的不同虚拟机之间共享底层的物理机器资源。提供这种虚拟化的软件被称为虚拟机监控器或者管理程序(Hypervisor)〇管理程序目前主要分为两类:•类型1管理程序(本地虚拟机)是ー种直接运行于给定硬件平台之上的软件(作为一个操作系统控制程序),客户操作系统则以第二层次运行在硬件之±〇最典型的类型1管理程序是!BM在1960s开发的CP/CMS[l]o最近的ー些具有代表性的产品主要包括Oracle的VM,VMware的ESXServer[2],IBM的POWERHypervisor(PR/SM)[3].微软的Hyper-V[4](2008年6月发布),ScaleMP的vSMPFoundation(2005年发布)以及Sun的LogicalDomainsHypervisor(2005年发布)。•类型2管理程序(宿主虚拟机)是运行于操作系统环境之内的软件,“客户”操作系统作为第三个层次运行于硬件之上。典型产品包括VMwareServer,VMwareWorkstation,VMwareFusion,开源的QEMU,微软的虚拟PC和虚拟服务器产品,Sun的VirtualBox以及并行工作站和并行桌面。系统虚拟机的主要优点在于:•多个操作系统环境可以同时存在于同一个计算资源之上,彼此之间相互隔离•虚拟机可以提供ー种与真实机器不同的指令集体系结构(ISA)2)进程虚拟机进程虚拟机(应用虚拟机)作为ー个普通的应用运行在操作系统内部同时支持单ー的进程。在该进程开始时进程虚拟机被创建,当进程结束时虚拟机则被销毁。它的作用就是ー个平台无关的编程环境,这ー环境可以抽象出底层硬件或者操作系统的细节,并且可以保证程序在所有平台上都以相同的方式执行。与系统虚拟机所提供的指令集体系结构(ISA)抽象相比,进程虚拟机提供了更高层次的抽象,即高级编程语言抽象,Java虚拟机就是ー种最典型进程虚拟机。进程虚拟机是通过解释器和及时编译的方式来实现的。1.3SUNUltraSPARCHypervisorUltraHypervisor是Sun公司设计的基于UltralSPARCT2多核处理器的开源系统虚拟机,它是一个软件层,该软件层位于操作系统和硬件平台之间,主要作用是对资源进行管理。通过使用Hypervisor和SUN4V技术,可将具体的硬件资源虚拟化,将操作系统与寄存器隔离开,具体图示见图1.1。图1.1架构示意图在Hypervisor的资源管理中,主要包括五个方面的内容:.逻辑域资源(LogicalDomain)UltraSPARCHypervisor不仅能提供操作系统所需要的系统服务,还能够分隔物理资源,这样就能有多个虚拟机运行在同一个SPRAC硬件平台上。每个虚拟机是ー个自包含的划分,能够支持独立的操作系统。这个自包含的划分称之为ー个逻辑域。示意图见图1.20图1.2逻辑域.存储器资源(Memory)在Sun4V体系结构中,有两类地址,虚拟地址和实地址。对每个用户看到的是ー个虚拟地址,中间通过MMU转换为ー个实地址,再转换为ー个物理地址。对每个逻辑域都有一块自己的存储器资源。Hypervisor对存储资源的描述以及虚拟地址和物理地址之间的转换有自己专门的机制。.与外设相关资源(I/O)在UltraSPARCHypervisor中,I/O设备直接映射ー个逻辑域来对其进行管理,这个是叫直接I/O,直接I/O是I/O访问ー个逻辑域的基本模式。然而,为了能够让多个逻辑域能够访问多个物理I/O设备,提出了虚拟!/O的概念。.逻辑域通道资源(LogicalDomainChannel)在Hypervisor中,ー个逻辑域通道是ー个点对点的,成对的,虚拟连接两个的逻辑域的通信管道。为两个逻辑域之间传送数据提供通道,还是两个逻辑域之间异步通信的机制。.资源分配及调度(ResourceManagement)在Hypervisor中,所有上述资源将描述为ー个有向无环图MD,Hypervisor会根据用户的指定将资源分配给相应的逻辑域。1.4论文安排本文主要是对SUNUltraSPARCHypervisor的资源管理作研究,在研究之前还对ー些背景知识作介绍,安排如下:•背景知识第一章引言介绍了项目背景、虚拟机相关知识,以及SUNUltraSPARCHypervisor.,从五个方面分别介绍Hypervisor资源管理第二章逻辑域资源介绍了逻辑域和MD的概念,并详细分析说明了Hypervisor中MD的具体实现。第三章存储资源的划分及管理首先介绍了传统内存管理策略,之后再介绍Hypervisor中的内存管理,包括地址模式、MMU以及地址翻译过程,最后介绍了Hypervisor中的TLB第四章虚拟外设管理(网卡、PCI-E)首先介绍传统外设总线,之后介绍UltraSPARCT2中的PCI与PIU,最后介绍Hypervisor中虚拟外设管理策略第五章逻辑域间通信机制主要介绍:逻辑域之间,以及逻辑域与外部实体之间的通信机制。它有两种方式:ー是使用一个虚拟的链路层进行数据包的传输;二是采用共享内存的形式进行远程访问。第六章各种资源的划分及调度首先介绍Xen的逻辑域资源管理机制,之后介绍SUNHypervisor资源划分及调度。第七章结论第二章逻辑域资源2.1背景在UltraSPARCHypervisor中,Hypervisor不仅能提供操作系统所需要的系统服务,还能够分隔物理资源,这样就能有多个虚拟机运行在同一个SPRAC硬件平台上。每个虚拟机是ー个自包含的划分,能够支持独立的操作系统。这个自包含的划分便称之为ー个逻辑域。UltraSPARCHypervisor的目的是在ー个平台上并行运行多个操作系统。但是UltraSPARCHypervisor必须满足4个体系结构上的要求オ达到这个目标,即安全性、通用性(支持多种操作系统)、可行性与高性能要求[5]。实际上,Hypervisor的目标就是创建多个与经典独立的机器具有同样属性的虚拟机,但是它将这些虚拟机整合到ー个单独的平台上,这个平台上的资源是被共享的。同时共享资源策略的高效性保证了额外的操作不会影响整体的性能[5]。逻辑域划分解决方案是这样一种方案,即将一个平台尽量多地划分为多个虚拟机,每个虚拟机都能启动、关闭、重启和机器崩溃,同时虚拟机之间是相互独立的。图2.1描述了Hypervisor上的逻辑域。!sun4vvirtualmachine!sun4vvirtualmachineSPARChardware逻辑域示意图图2.1SPARChardware逻辑域示意图图2.1stable,interface"sun4v"MachineDescriptions运行在ー个虚拟机中的操作系统代码需要一种方法来发现虚拟机中的所有可用资源。在传统的非虚拟的机器中,硬件资源通常是由操作系统自己探查到的,比如说操作系统检查硬件寄存器,或是等待某种硬件资源的回应,这种方法很耗时[5]。在ー个并行虚拟化的世界中,没有必要使用这种方法来得到想要的资源。HypervisorAPI提供了一个详细描述虚拟机中资源的描述符,这种资源描述符被叫做"MachineDescription"(或MD),它是ー个客户操作系统所能得到的所有资源的一个目录。除了那些基本的,比如说CPU和内存映射细节信息,一个域的MD包含资源之间的详细关系,例如NUMA延迟和在内存层次中的cache之间的共享[5]。MD中提供的ー些信息是必须要有的,其它的信息则是可选的,这些信息是在性能优化的时候需要用到。Hypervisor存储这些信息,ー个最重要的优点是这些资源总可以被ー个域获取到。这就避免了在ー个主控制域中分发信息所出现的任何瓶颈。同时,ー个系统中的所有的逻辑域可以在加电之后同时启动,而不会出现任何由主控制域在启动时所引起的单点错误。Hypervisor中的MD在Hypervisor中,MD主要目的是用来描述某个虚拟机器(或逻辑域)中的所有资源,MD主要由在每个逻辑域或虚拟机器环境中的操作系统使用,操作系统通过MD来得到其所想要的资源。Hypervisor将会根据操作系统的请求来为其分配MD,分配时,MD被写入到Guest(代表操作系统的结构体)的ー个缓存中,而已分配给这个Guest的MD便是该Guest专有的,不与其它Guest共享。因为某个Guest有自己专有的、独一无二的MD,所以更新某个MD即代表又提供了一个全新的MDoMD结构图MD的结构图如图2.2〇MD由四部分构成:Header,NodeBlock.NameBlock和DataBlock,如图2.2中A部分。

图2.2MD结构图HeaderMDHeader部分的定义如图2.3所示ByteoffsetSizeinbytesFieldnameDescription04transport_versionTransportversionnumber44node_blk_szSizeinbytesofnodeblock84name_blk_szSizeinbytesofnameblock124data_blk_szSizeinbytesofdatablock图2.3MDheader对于big-endian机器,Header结构体描述如下:structmdjieader{uint32_ttransport_version;uint32_tnode_blk_sz;/*sizeinbytesofthenodeblock*/uint32_tname_blk_sz;/*sizeinbytesofthenameblock*/uint32jtdata_blk_sz;/*sizeinbytesofthedatablock*/};Transport.sersion指的是MD编码的版本,它是32bit整数,高16位指定主版本号,低16位指定修正版本号。Header部分的总大小为!6Byte.NodeBlockNodeBlock部分其实是由一个线性数组构成,数组中每个元素可以看作一个Node,这个线性数组的最后ー个元素为LIST_END,其值为0x0,如图2.2中的C部分所示。每一个Node是由多个element组成的,每个element大小为16byte,如图2.2中的D部分所示。Cstructure表示element如下:structmd_element{//I+1-^-4+8Byteuint8_ttag;uint8_tnamelen;uint32_tname;union{struct{uint32_tlen;uint32jtoffset;}pmp_data; /*forPROP_DA7AandPROP_STRシuint64_tprop_val;/*forPROP_VAL*/uint64jpropjdx;/*forPROP_ARCandNODE*/1d;ノ;NameBlockNameBlock为每个结点提供名字,合法的名字字符串定义如下:ー个名字字符串是由一串线性字符数组构成的可读字符串,字符数组以空字符(へ(T)结束。Null结束符结尾,可以让我们使用C库中的strcmp函数来做比较。字符的编码是遵循ISO标准,且是所有人类可以识别的字母和符号,但是不包括以下:即空格,ウ”,“ヽ”,七”,“厂’,“广,“@”。要引用某个名字字符串,你必须使用NameBlock中的某个名字字符串的起始字节偏移。在NameBlock中,可能有重复的字符串,也有可能一个给定的字符串在NameBlock中只出现一次。因此,NameBlock中某个字符串的偏移便成为该字符串在机器描述符中的唯一标识。单个名字字符串可被多个结点元素引用。NameBlock使用了全〇字节来填充,这样保证后边的DataBlock的起始地址相对于MD的起始地址来说,是16字节的整数倍。这些填充的字节也包含在NameBlocksize中。DataBlockDataBlock为NodeBlock中的结点提供了一些原数据(rawdata)〇与NodeBlock中的元素相关联的原数据就是ー个简单的线性rawdata连接串,它没有更复杂的结构。每个原数据的大小、位置以及内容是通过NodeBlock中的引用元素来标识。DataBlock中的内容没有对齐要求,除非引用该内容的元素要求它这样做。如果需要对齐,则它的对齐规则同NameBlock,也是采用全。填充,起始地址相对MD起始地址来说是!6字节的整数倍。MD的创建者必须安排DataBlock中的内容,以使得DataBlock满足对齐要求。同时,MD的使用者必须使用ー个足够大的缓冲区来读入这个MD,或者MD使用者必须时刻准备好正确地处理每ー个没有对齐的数据。Tag的含义定义ElementTag是为了方便调试,elementtag的定义见表2.1.表2.1ElementTag定义TagValueASCIINameDescriptionValuefield0x0\0LIST.ENDEndofelementlist-0x4e,N'NODEStartofnodedefinition64bitindextonextnodeinlistofnodes0x45ENODE.ENDEndofNodedefinition-Ox,TNODE_NULLNooperation-tobeignored00x61•a1PROP.ARCNodepropertyarc*ingtoanothernode64bitindexofnodereferenced0x76PROP_VALNodepropertywithanintegervalue64bitintegervalueforproperty0x73父PROP_STRNodepropertywithastringvalueoffsetandlengthofstringwithindatablock0x64'd'PROP_DATANodepropertywithablockofdataoffsetandlengthofpropertydatawithinthedatablock在具体的C代码中,ElementTag可以定义如下:^define#defineDT_LIST_ENDDT_NULL0x0(t#defineDT_NODEN#defineDT_NODE_ENDE^defineDT_PROP_ARC'a'#defineDT_PROP_VAL^defineDT_PROP_STR's'#defineDT_PROP_DATNODE每ー个Node至少包含两个元素:tag=NODE的元素,是每个Node的开始元素;tag=NODE_END的元素,是这个Node结束元素。在这两个元素中间有0

个或多少PROP_・元素。如图3.4所示。将NODE元素与名字关联起来,来定义ー个Node的类型,NODE元素是这个结点在MDNodeBlock的起始位置。通过线性搜索并匹配类型或是顺着有向无环图中的PROP_ARCs,可以找到相应的结点。图2.4ー个NodeNODE种类MD中的Nodes主要有两个作用。其一就是提供他们所代表的虚拟资源的相关信息,另外还可以当作DAG中的ー个结点,DAG是由MD所构成的有向无环图。这个结点包含了特定资源的属性,但Node的最主要的一个功能是为DAG中的有向边arc提供ー个容器,arc将各种资源连接起来。Nodes有4种,不同的Node代表使用不同的walker来处理。同时ー个node的类别也决定了这种node是否可以在MD中被找到,或是这种node是可选的,可以被忽略。Node的分类定义如表2.2:表2.2Node种类种类详细说明core表示这种结点必须出现在MD中resourcerequired如果结点所描述的资源在虚拟机器中存在,则与这种资源相关联的结点必须出现在MD中,以用来表示这种资源。requiredbyX如果一个X类型的结点出现在MD中,则ー个或多个这种类型的结点将会出现在MD中,并且与X关联起来optional表示这种类型结点不是必须出现在MD中,它完全是可选的.有向无环图MD的本质是ー个有向无环图(DAG)的集合,而DAG则是由一些描述虚拟机

器中可用资源的Node所组成的,这些资源信息则是通过MD请求API来分配给操作系统的。ー个典型的MD有向无环图见图2.5。图2.5MD-有向无环图本章小结在UltraSPARCHypervisor中,每个虚拟机是ー个自包含的划分,即ー个逻辑域,它能够支持独立的操作系统。逻辑域中有许多可用的资源,Hypervisor使用MD来描述这些资源。在这一章,我们介绍了逻辑域和MD的概念,并详细分析说明了Hypervisor中MD的具体实现。第三章存储器资源的划分及管理传统内存管理地址类型在Intelx86微处理器体系结构下,地址分三类:逻辑地址:机器语音指令仍用这种地址只读ー个操作数或一条指令的地址。这种寻址方式在Inte!有各的分段结构中表现得尤为具体,它促使DOS或Windows程序员把程序分成若干段,每ー个逻辑地址都由一个段和偏移量组成。偏移量指明了从段开始的地方的实际地址之间的距离。线性地址:是ー个32位的无符号整数,可以用来表示高达4GB的地址。线性地址通常用16进制数字表示,值范围从0x00000000到Oxffffffff。物理地址:用于芯片级别内存单元寻址。它们与从微处理器的地址引脚发送到内存总线上的电信号相对应。CPU控制单元通过ー种称为分段单元的硬件电路把一个逻辑地址转换成线性地址;接着,第二个称为分页单元的硬件电路把一个线性地址转换成物理地址。分段单元 分页单元逻辑地址 A线性地址 A物理地址图3.1内存寻址逻辑地址到线性地址首先检查选择符TI域,用于决定段描述符保存在哪个ー个描述附表中。TI域指明了描述符是GDT中还是在激活的LDT中。从段选择符的索引域计算段描述符的地址,索引域的值乘以8,这个结果被放到GDTR或LDTR寄存器中。把逻辑地址偏移量与段描述符基地址域的值相加,就得到了线性地址。

图线性地址到物理地址Intel处理器的分页单元处理4KB的页。32位的线性地址被分成3个域:目录:最高的10位;页表:中间的10位;偏移量:最低的12位。线性地址的转换由两步完成,每ー步都是基于ー种转换表,第一种转换表为页目录表,第二种转换表称为页表。正在使用的页目录表的物理地址存放在处理器CR3寄存器种,线性地址内的目录域决定了它指向页目录表中的哪个项,即指向哪个页表。地址的页表域决定页表中的ー项,此项含有此页所在页框的物理地址。偏移量域,决定了本页框内的相对位置。UiwM断enHypervisor的内存管理地址模式背景本节定义了Sun4V的内存管理体系结构。为提供内存寻址,为虚拟化架构,同时取消明确依赖硬件机制的虚拟内存管理。这种机制提供特权模式来操纵内存,并在转向虚拟化,使这种内存提供给非特权模式进程。地址类型与传统体系结构ー样,在Sun4V架构中有两种地址类型。主要不同的是,虚拟地址转化为实地址,而不是被翻译物理地址。这ー变化是为物理隔离内存分为多个分区。虚拟地址的翻译由MMU来完成,以便寻址数据的物理内存。这个定义不变于在现有系统中的nonprivileged和privileged模式地址。实地址用于提供给privileged级软件来描述物理内存的。翻译存储缓冲器(TSBs)维持着用privileged级软件的privileged模式或nonprivileged模式虚地址翻译为实地址。MMUBypass地址在特权模式中也为实地址。三种地址类型的完整格式如下:virtualaddress:<partitionID>::<contextID>::<address>realaddress:<partitionID>::<address>physicaladdress:<address>其中partitionID包含在TLB项中,允许多个客户操作系统共享MMU〇contextID用于描述一个线程的执行环境,在ー个实地址空间中,它将虚拟地址空间划分为多个。地址空间在UltraSPARCT2体系结构中支持48位的虚地址空间和40位的物理地址空间.40位的物理地址空间被分割成两节,bit[39]=0的位内存地址空间,bit[39]=!的为I/O的地址空间。UltraSparcT2的支持48位子集的64位的全部虚实地址空间。虽然全部生成64位的地址空间,并储存在整数正数寄存器中,但合法地址仅限于在“VAhole”之外的地址。VAHole:Ox0000800000000000〜OxFFFF7FFFFFFFFFFFo48位的虚实地址空间分布图如下:FFFFFFFFFFFFFFFFOutofRangeVA(RA)(the-VAHole"("RAHole"))ノノノノノノノノノノンノノノノノノノノノノノノノノノノノノノノノノノノノノノノノノノノノノノンノノノノノノノノノノノノノノノノノノノノノノノノノノノノノノノノノノノノノノノノノノノノノノノノノノノノノノノノノノノノノノノノノノノノノノFFFF800000000000FFFF7FFFFFFFFFFFSeeNote(1)000080000000000000007FFFFFFFFFFF00007FFFFFFFDFFF0000000000000000Note(1):Useofthisregionrestrictedtodataonly.FIGURE9-1UltraSPARCT2*s48-bitVirtualandRealAddressSpaces,WithHole图.4地址空间标识符(ASIs)通过地址空间标识符,指令可以明确指定一个地址空间。所有的SPARO9的ASI定义在sun4V中不变,同时一些新的ASIs被定了。ASIs与内存管理相关详细说明如下:表3.1AS1#ASIName0x14REAL_MEM0x15REALJO0x1cREAL_MEM_L1TTLEOxIdREAL_lO_LriTLE0x21MMU3.2.2Hypervisor中的MMU服务这些Hypervisor的服务控制着地址翻译的行为。ー个基于Sun4v的客户操作系统,不需要这些服务。在缺省或初始的操作环境下,不允许客户操作系统的进行虚拟地址翻译。在这种模式下,所有的指令和相关的数据将使用实地址。如果一个客户操作系统能使用MMU进行地址翻译,那么虚到实的地址映射可能在被指定的三种方法中的ー种;无论是固定映射,或是映射地址可能被换出,并重新加载系统TLBs或是间接通过翻译存储缓冲器(TSBs)。此外,在翻译启用的前提下,ー个客户操作系统都必须声明故障状态区,在翻译出错的情况下,为hypervisor的提供出错信息。TSB地址翻译缓存(TranslationStorageBuffer,TSB)由一组TTE构成的数据缓存表并完全由软件管理,功能类似于ー个cache,作为地址翻译缓存表,当TLBmiss的时候,用于迅速重新加载TLB。Tag1(8bytes),Datal(8bytes)0000w/VLinesinTSB0008,6TagN(8bytes)।Data/V(8bytes)figure12-1TSBOrganization图3.5TSB函数控制两类TSBs,ー是为当虚拟地址的内容为〇时,另ー个是当虚拟地址的内容为非〇时。demap函数的功能是从硬件TLB中去除翻译功能。ATSBdescriptionisamemorydataslructurethatdefinesasir^»leTSB:offsetsizecontents02pagesizetouseforindexshiftinTSB22associativityofTSB44sizeofTSBinTTEs(16bytes)84context_index124pa群sizebitmask168realaddressofTSBbase248reserved图.2页大小在Sun4V架构的翻译表条目(TTEs)中,定义了用于编码页大小的值。页大小的掩码表明这些编码在给定TSB中的某ー个指定TTEs中。如果每ー个位在页大小位掩码被设置,Sun4V的页大小被确定。例如,位〇对应于ー个了8Kb页面大小。在TTE中的表示,如下表:表3.2Size{2:O}PageSizeOOO8KBOO164KBO1OReservedO114MB1OOReserved1O1256MB110-111Reserved内容索引内容索引是TSB的ー个描述域,内容索引值(contextvalue)为页翻译供应TSB的条目,或是一个单ー的值应用整个TSB。后者能够使得一个TSB使用多个(contextvalue)〇内容索引域的使用可适用于两种模式的TSB。MMU标志MMU的API分两大类,ー类是用于指令地址翻译,另一类是用于数据地址翻译。因此,很多接口使用MMUflags参数用于区分采用指令映射方式还是数据映射方式,或是两者同时映射方式。为确保MMU服务之间的一致性,对MMU的flags参数进行如下定义:Flags参数设置为1时,对应的AP!进行指令地址翻译方式。Flags参数设置为〇时,对应的AP!进行数据地址翻译方式。地址翻译表项ー个TTE在TSB中用于描述虚地址到实地址之间的映射。地址翻译表项(TranslationTableEntry,TTE),存放着单个页面映射的信息。TTE被分成两个64位的字,分别是表示tag和data的翻译。tag的使用仅在硬件cache中使用,用于判断是否TSB命中。TSBentry(TTE)formatTSBdatawordVNFOswRA(NN:13]IEECPCVpXwswswSz(3^)|63 62 61 5655 131211109 876 5 43 0TSBtagwordContextreservedVA[63:22]« 4847 4241 0图地址翻译过程行为翻译过程地址翻译的行为:虚拟地址到实地址的翻译过程由特权级软件管理。实地址到物理地址的翻译过程由超特权级软件管理。特权级的软件通过ー个叫做软件翻译表的仲裁数据结构来做保存翻译的信息。TSB为软件翻译表提供一个类似于Cache的功能,当TLB缺失的时候,使其快速加载TLB。MMUTLBs作为独立缓存的软件转换表,提供虚拟到物理地址翻译。超特权级软件维持着从实际地址到物理地址的翻译信息。Memory OperatingSystemDataStructureMemory OperatingSystemDataStructure-Managedbyprivileged >modesoftware-Managedbyprivileged >modesoftwarehyperpnvileged

modesoftware图.2寻址翻译过程当给定一个63位的虚拟地址时,Hypervisor首先将虚拟地址转换位56位的实际地址,再转换位56位的物理地址。分别以8KB页面大小和256MB页面大小为例。55 1312 03.3Hypervisor的硬件支持TSB访问的硬件支持当TLB项目重新加载缺失时,MMU硬件提供TLB缺失处理服务:硬件从新加载缺失的TTE项目(hardwaretablewalk)〇用缺失处的虚拟地址形成TSB指针。通过TSBtag比较,形成TTEtag目标。通过单一存储ASI操作来原语写ー个TLB项。3.1.1硬件游走表(hardwaretablewalk)硬件游走表是一个硬件状态机,为重新加载TLB提供服务。它访问TSBs找到与VA匹配的TTEs。硬件游走表提供了从RPN到PPN的转换机制。监控程序可控制TTE,但是监控程序不能访问或控制物理内存,因此TTE包含了RPNs。硬件游走表不能翻译实际地址请求,在实地址确实的时候,TLU发出instrealtranslationmiss或datarealtranslationmiss信号。硬件游走表我用作流水线的ー或。当ー个TLB缺失的时,硬件游走表启用情况下,重填序列过程如下:产生TTE地址:计算TSB的物理地址,来检测TTE。加载TTE;从L2cache中取出4字加载到请求的HE地址。TTE命中判断:比较VPN,context,页大小。TTE缺失:通过instruction-access_MMU_miss或data_access_MMU_misstrap判断产生。TTE地址的产生:首先获得TSB的基地址,通过TSB配置寄存器获得IeusecidOusecid1-tsbbase-ranotpa pagesize tsbsize63 62 61 605655 13129 8 7 4 3 0其次是偏移量:由VA中获得。地址计算公式:PA{39:0)=TSB_Base{39:13+N)||VA(21+N+3*PS:13+3*PS)||0000软件TLB重新加载(hardwaretablewalkdisabled)虚拟地址到物理地址翻译:虚拟地址到物理地址翻译时候,引起的TLB缺失,一个fast_instruction_access_MMU_miss或fast_data_access_MMU_miss异,吊。比较合矗TLB缺失处理应加载从MMU切换空间中加载あTSB指针和TTEtag目标。TLB缺失处理核查,如果需要的TTE存在于TSB中,TTE的数据存储到TLB数据寄存器中。如果需要的HE不在TSB中,TLBS缺失处理将跳转到ー个更准确的TSB缺失处理。实际地址到物理地址翻译:实际地址到物理地址翻译时候,引起的TLB缺失,instructionrealtranslationmiss或adatarealtranslationmiss异常。合适实晨处施取决于进行受到虚地址的翻译:如果实到虚地址的翻译,由插入的TLB中的r位置位,则指令翻译重试。3.3.2实到虚地址映射与预测取指UltraSparcT2的预测取指,在某些情况下,可使内存控制器不受物理地址支持。考虑下面的指令序列,退出hyperprivileged模式和返回用户或特权模式。jmpl%g3+%g0,%g0wrhpr%g0,%g0,%hpstateIMMU将使用bypass方式进行地址翻译,也就是VA[39:0]直接传给PA[39:0]o然而,跳转目标的取指是被预测的,所以内存控制器可以VA[39:0]的跳转目标看成物理地址。但在software_recoverable_errortrap内不支持。3.4小结在Sun4V体系结构中,有两类地址,虚拟地址和实地址。对每个用户看到的是ー个虚拟地址,中间通过MMU转换为ー个实地址,再转换为ー个物理地址。对每个逻辑域都有一块自己的存储器资源。本章主要描述Hypervisor如何对存储资源进行描述以及虚拟地址和物理地址之间的转换机制。第四章虚拟外设总线管理I0总线概述计算机系统硬件结构的基础是系统总线,用系统总线将处理器、主存储器和外围设备连接起来,传输数据、控制和状态信息。系统总线包括处理器总线和1O总线。处理器总线因处理器而异,随着处理器的变化和发展而更新。10总线是通用总线,用于硬件平台中外围设备的互联和外围设备与主存储器的通信。处理器也经过IO总线对外围设备进行访问。IO总线是PC计算机平台的骨架,它的协议直接决定了计算机的硬件架构与配置,它的性能与指标直接影响着计算机IO子系统的数据传输和处理能力。IO总线的发展10总线的发展历程粗略地可划分为三代:IO总线包括ISA、EISA、MC和VESA其中!SA总线的数据宽度为!6位,数据传输速率约5MBps;EISA为增强型ISA较!SA将数据总线宽度和地址总线宽度均扩展为32为;VESA数据地址总线宽度为32位,总线时钟频率达33MHz,数据传输率可达132MBps。第一代IO总线有一个共同的特点,其信号的功能和时序与处理器引脚关系密切,几乎是处理器信号的延伸和扩展,有些信号还与主板上的硬件资源有关系。IO总线包括PCI、AGP和PCI-XPCI总线的和地址线宽32位,数据线可扩展为64位,PCI1.0和PCI2.0的数据传输率为133MBps(64位数据线,可使数据传输率达到266MBps)。PCI总线是ー个标准的、与处理器无关的局部外围总线,不受制于系统所使用的处理器的种类,通用性更强。以上第一代和第二代总线都是并行的,有多条地址线、数据线和控制线,挂连多个设备成为多下挂式总线,总线带宽由多个设备共享。显然,在并行总线上挂接多个设备后,必须进ー步提高时钟频率。但是,以提高总线频率来提高带宽并不是无限制的,频率越高总线上能够挂连得电气负载设备越少。实际上,频率为266MHz以上的PCI-X总线只能带ー个扩展槽。髙性能1O总线PCIExpressPCI-E在总线结构上采取了根本性的变革,主要体现在两个方面:ー是由并行总线变为串行总线;ニ是采用点对点的连接。在基于?CI的计算机中,主存储器设备挂在主桥上,PCI总线专用于外围设备的连接。因此,在SPACET2体系结构中内置了对PCIExpress总线架构支持,以下就PCI-E架构做以简介。PCIExpress基本规范介绍PCIExpress是用来互连未来各类计算机和通信平台应用中连接外围设备的高性能I/O总线。在UST2中也增加了对该总线结构的支持,它采用了与PCI总线相同的使用模型,加载存贮结构和软件接口等技术,而用高速串行接口代替了并行总线执行方式。PCIExpress利用点到点连接方式,基于交换器的技术和基于数据的通信协议使其性能达到ー个新的水平。PCIExpress拓扑结构由将一组设备连接在ー起的点到点的链路组成图1描述的实例由一个根联合体(RC),多个终端(I/O设备),ー个交换器和一个PCIExpress-PCI桥组成,由PCIExpress链路连接。拓扑结构中的每一个组件都映射到ー个单独的地址空间中,可通过与PCI相类似的加载存贮命令访问。图4.1PCIExpress拓扑结构根联合体(RootComplex)指的是连接CPU和存贮子系统的设备,位于I/O层次的根部。根联合体可ホ支持ー个或多个PCIExpress端口。通过根联合体对对等事务的性质是可选的,并且可以独立执行。根联合体作为请求者支持三种请求方式:发起配置请求;发起I/O请求;发起锁定请求,但当其作为应答者后只响应锁定请求。端点分为PCIExpress端点和传统端点。传统的端点必须出现在根联合体的下一层定义域中,其作为完成者支持以上三种请求方式。PCIExpress端点作为完成者只支持配置请求。交换器是多PCI到PCI虚拟桥的逻辑集。交换器可看做有两个或多个逻辑PCI到PCI桥组成,交换器使用PCI桥机制转发事物,还必须能在任意组端口转发所有类型的处理层数据包。PCIExpress层次概述PCIExpress规范定义了三层分离的逻辑层体系结构。这些层分别是处理层、数据链路层和物理层。它们在垂直方向上又可以进ー步分成两个部分:处理出站流量的发送部分和处理入站流量的接收部分。PCIExpress使用数据包在设备间传递信息。数据包在处理层和数据链路层形成,将信息从发送部分传递到接收部分。当发送的数据包到达其它层时,会给它加上相应层处理数据包可需的附加信息。在接收端执行相反的过程将数据包从物理层描述转换成链路描述最终(对于处理层数据包而言)转换成接收设备的处理层能够处理的形式。处理层主要负责处理层数据包的装配与拆解。同时处理层还负责管理基于信用的流控制,它支持四种地址空间:包含三种PCI地址空间(存贮器,I/O和配置)和消息。处理层服务主要负责生成出站TLP流量和接收入站TLP流量,在链路另一端与之对应的处理层之间交换流控制信息同时它还负责支持软件电源管理。数据链路层的主要功能是链路管理和数据完整性,包括错误检测和错误纠正。数据链路层服务,主要负责与链路另一端数据链路层交换信息的可靠性,包括:初始化和电源管理服务,数据保护,错误检查和重试服务等内容。物理层包括所有的电气接口操作驱动器和输入缓存器并行到串行和串行到并行转换,PLL和阻抗匹配电路。同时它还包括有关接口的初始化和定向的逻辑功能。物理层服务包括:接口初始化、维护控制和状态跟踪;符号和专门的有序集产生(8bn0b的编码/解码,内嵌的时钟调整和矫正);符号传输和矫正等内容。PCIExpress事务介绍PCIExpress设备之间的数据传送是以事务组织的,根复合体能够发起指向端点的事物,端点可以发起指向另一个端点的事物。PCIExpress事物可以分为四中:存储器事务、1O事务、配置事务和消息事务。事物的执行或者完成是由发送和接受事务包(TLP)来具体实现的,事务被定义为,为实现请求者和完成者之间某种信息传送所要求的、有一个或若干个包组成的发送序列。表中列出了PCIExpress的事务,这些事务分为非转发事务和转发事务。表4.1PCIExpress的事务事务类型类型MemroyRead非转发事务MemoryWrite转发事务MemoryReadLock非转发事务IORead非转发事务IOWrite非转发事务事务类型类型ConfigurationRead(Type0,Type1)ConfigurationWrite(Type0,Type1)Message非转发事务非转发事务转发事务非转发事务按照分割事务的方法处理,请求这发送TLP请求包给完成者,然后,该完成者返TLP完成包给请求者,通知请求者它已经接收到了请求TLP,若是读事务,其完成TLP中还包含有返回的读数据。转发事务只需请求者发送TLP请求包给完成者,完成者不返回完成TLP请求包给请求者,虽然请求者不知道是否该请求已被完成者成功的接受收,但总线性能得到优化。转发事务类的消息请求TLP中,有的带数据,有的不带数据。4.2UltraSPACET2外设总线的特性UtralSPACET2内部集成了PCIExpress接口单元(PIU)和网络接口单元(NIU),其中NIU单元也是通过PCI接口实现通信的。PCIExpress概述在UltraSPARCT2Soc中PCIExpress接口单元集成了PCIE桥中的主端功能,也就是上文所提到的根联合体。它允许ー个基于PCIExpress的I/O子系统以ー种较为灵活的方式通过标准的PICExpress元件连接到某个UltraSPARCT2处理器当中,这些元件包括:PCI-E桥和交换器;PCI-E—PC!或PCI-E—PCI-X桥;3)本地PCI-E设备。2.1.1UltraSPARCT2中PCI-E的特性UltraSPARCT2支持ー个x8PCI-E端口操作。PCLE使用8-bit/10-bit编码,全双工点对点连接,每个通道每周期传送Ibit数据。每个通道理论上最大的带宽可达到2.0Gbit/s(每个连接的单向速率)。则UltraSPARCT2有8个通道,所以其最高速度为2.0GB/soUltraSPARCT2中支持PCI-E的特性包括:1)UltraSPARCT2片上系统集成了PCIE主控制器;2)每个x8(2.5GHz)PCIE端口内部包含一个串并行转换器;3)将PICE的配置,I/O和PCIE的32bit和64bit的内存地址空间映射到UltraSPARCT2的物理地址空间;4)将UltraSPARCT2的物理地址空间映射到PCIE的内存地址空间。支持Bypass和通过mmu的传输访问形式。支持hyperviseor为设备请求特殊的传输方式;5)将PCIExpressMSI/MSI-X中断转换为UltraSPARCT2的响应中断;6)INTX特性被完全支持;7)电源管理。此外UltraSPARCT2中PCIExpress接口包括三个核:DMU(数据管理单元):由FireASIC的DMC模块驱动。包括体系结构,编程模型,内存映射,寄存器,IOMMU(sun4u模式),错误处理和中断机构。PEU(PCIExpress单元):是一个第三方的用来实现PCIExpress底层协议的IP核。PSR(PCI-E串并行转换器):UltraSPARCT2的PCIE串并行转换器宏单元由TI提供。DMU,PEU和PSR的结合成为PCIE接口单元,各个单元对于PIU都是可以屏蔽的。地址映射FireASIC在JBUS地址空间中提供三种可编址的区域。ー个JBUS的物理地址有43个bit按如下方式编码:ー个8M的非缓冲区用来让PIO访问FireASIC控制状态寄存器。ー个64G的非缓冲区用来映射PCIExpress的配置,PCIExpress的IO和PCIExpress的32-bit和64-bit地址空间的子区域。没有使用的64G的缓存区域。UltraSPARCT2支持8M和64G的非缓冲区域与FireASIC具有不同的基地址,但是在这些区域中地址译码在UST2上和在FireASIC是完全相同的,因此,8M非缓冲区中的控制状态寄存器和64G非缓冲区的子区域在UST2和FireASIC中ー样具有相同的偏移量。4.2.2UST2中PIU的操作PIU具有针对NCU,SIU的接口和一个独立的PCIExpress叶结点。该叶几点包括ー个MMU,ー个TSB的cache,36个事件队列,MSI映射状态,和中断响应控制器。PCI-E协议中请求者的ID与其总线号,设备号,和功能号相关联且唯一,用于区别发出请求的设备。PIU的PCLE请求ID通过DMCPCI-E配置寄存器软件可编程的。NCU对PIU(下行)的事务通过不同的编码方式UST2决定使用8M的片上空间还是使用64G的非片上空间,对于8M的非缓冲区域的访问,CSR具有如下编码:{39:32}=0x88,选定PIU中8M的非缓冲区进行操作。{31:23)=0〇{22:00}=8M区域中的偏移量。对于64G的非缓冲区(映射了如下子区域:PCI-E配置区间,PCI-E的IO空间和32-bit与64-bit的内存区域空间):{39:36}=OxC对片外64G的PCIE的非缓冲区空间进行操作。{35:00}=64G区域中的偏移量。如上所述,对于NCU的40bit的物理地址,UST2中的PIU-E映射如下:表4.2NCUAddress-to-UnitMappingTableMSB地址范围(39:32}分配8816CO16-CF)6片内PIU状态寄存器(包含8M非缓冲区域)片外PCI-E空间(64G片外非缓冲区域)其中8M的非缓冲区域中包含的了所有的CSR,64G的空间被分成了多个子区域PIU解码并响应PCIE端口的三个单独区域。每个子区域的便宜和大小在芯片初始化时又NCU通过偏移基地址和偏移掩码寄存器进行编程初始化。64G非缓冲区域的分区如下:表4.364-Gbyte非缓冲区分区子区域容量UST2-to-PlU事务组PCIECFG/IO512Mbit非缓冲读(最大4byte)非缓冲写(最大4byte)PCIEMem3216Mbyte-4Gbyte非缓冲读非缓冲写PCIEMem6416Mbyte-64Gbyte非缓冲读非缓冲写以下就这几个区域做以详细描述。64G和8M空间区域中PIO的读写权限如下:表4.4AllowablePIOWriteAccessSizes字节大小64Gbyte空间8Mbyte空间Conf/IOMem32Mem64CSR1YYYN2YYYN4YYYN8NYYY存储器掩码指令NYYN表4.5AllowablePIOReadAccessSizes字节大小64Gbyte空间8Mbyte空间Conf/IOMem32Mem64CSR1YYYN2YYYN4YYYN8NYYY64GB地址空间中的PCIE的配置和10子区域是512Mbyte对其的。PIU的64GB空间中的偏移和大小的定义是由NCU的PCIE-Cfg/IO的偏移量寄存器和掩码寄存器。该子区域的偏移量基址和掩码寄存器必须是被初始化为512M。若操作失败将会发生不可预计的错误。PCIE的配置和10子区域的第一个256MB的空间被映射为PCIE的配置空间,后256MB被映射为10空间。所有的配置和!0数据包通过虚拟通道号为零的通道发送。软件相关的物理地址和PCI-E-Cfg/IO区域的映射关系如下:{39:29)配置和10地址匹配,该区域用于判断对PIU地址的方位是否落在配置和10子区域当中。{28}配置和10地址操作。〇配置操作;110操作。{27:00}配置和10空间寻址信息。当访问的空间为配置空间时该组信息由如下各位组成:27 2019 1514 1211 0总线号设备号功能号配置寄存器地址图4.3配置和10空间寻址格式当访问空间落在10空间时,该区域值表示PCIE的!0地址值。此时{28:31}的值需设置为〇。对于内存区域,UST2分为32bit内存区域和64bit内存区,其中对于第一种情况由36个比特进行寻址,其中35:x+1个用来判断访问区域是否是在Mem32的范围内,x由Mem32的大小决定,x:OOPCIE的内存地址。对于后一种情况即64bit内存区域器寻址方式和32bit内存类似,对于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对内存(上行)事务该事务可以分为四个内存地址空间,分别为:PCIE配置空间,PCIE的10地址空间,PCIE内存空间和PCIE消息地址空间。也就是需要考虑对PCIE对内存事务的处理和对消息事务的处理。PCIE内存事务的处理和内存转换是基于以下方面的考虑:I0MMU的操作模式;PCIE的寻址模式;3)内存转换是否被使能;Bypass是否被使能;PCIE在64bit寻址模式下的寻址的{63:39}值。I0MMU是UST2中PCIE子系统的ー个功能单元模块,它能够将PCIE的虚拟地址转换为UST2的物理地址。7)PCIE定义了两种消息类型标准消息和高级交换消息用来进行事务的处理。UST2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论