一种高效且支持QoS的虚拟内存架构

文档序号:25586273发布日期:2021-06-22 17:01阅读:134来源:国知局
本发明涉及操作系统和芯片微架构
技术领域
:,尤其涉及一种高效且支持qos的虚拟内存架构。
背景技术
::随着新兴存储介质的涌现和应用程序的多样化,现有的虚拟内存越来越不能满足其需求,其缺陷主要有两个:1、访问延迟太大。尤其在虚拟环境下,每次访存都需要多次地址翻译,这显著增加了访存延迟。2、不支持qos。因为应用程序的qos对硬件是不可见的或未知的,所以会限制系统的优化空间,阻碍性能和效率的提高。因此,需要一种高效且支持qos的虚拟内存,使系统自适应的、动态的配置内存资源,以最大限度的提高系统性能和效率。技术实现要素:本发明的目的是提供一种高效且支持qos的虚拟内存架构,可以实现物理内存的动态、高效管理,有效缓解了上述技术缺陷。本发明的目的是通过以下技术方案实现的:一种高效且支持qos的虚拟内存架构,包括:虚拟块vb与硬件微架构,并且还设置了两类配套的元数据结构pvm与atm,所述pvm为虚拟块的元数据结构,所述atm为地址翻译的元数据结构,其中:所有进程处于同一个虚拟地址空间,虚拟地址空间由若干互不交叠的vb的构成,每个所述vb都是一段连续的虚拟地址空间,用于存储程序的代码和数据;每个进程都有一个所述pvm,用于维护进程对vb的所有权;每个所述vb维护一个所述atm,所述atm中存储了相应vb的qos信息;所述硬件微架构,用于执行地址翻译,并结合所述atm实现混合物理内存的管理。从上述本发明提供的技术方案可以看出,所有进程处于同一个虚拟地址空间,其由互不交叠的vb组成,从而避免了vivtcaches(虚拟高速缓存)的homonym(同名异物)和synonym(同物异名)问题;由pvm维护进程对相应vb的所有权,消除了在虚拟化环境下需要多次地址翻译的问题;根据atm并借助于内存实时监测及数据迁移单元,实现了物理内存的动态、高效管理。附图说明为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。图1为本发明实施例提供的一种高效且支持qos的虚拟内存架构的原理图;图2是本发明实施例的risc-vsv48模式下的虚拟地址构成图;图3是本发明实施例的pvm和vitentry设计图;图4是本发明实施例的rangetranslation原理图;图5是本发明实施例的rangetable设计图;图6是本发明实施例的虚拟内存硬件架构总图;图7是本发明实施例的tlb访问流程图;图8是本发明实施例的rangetlb微架构图;图9是本发明实施例的支持qos的内存控制器微架构图;图10是本发明实施例的内存数据动态迁移流程图。具体实施方式下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明的保护范围。本发明实施例提供一种高效且支持qos的虚拟内存架构,如图1所示,其主要包括:vb(virtualblock,虚拟块)与硬件微架构,并且还设置了两类配套的元数据结构pvm(process-vbmetadata,进程虚拟块的元数据结构)与atm(addresstranslationmetadata,地址翻译的元数据结构),其中:所有进程处于同一个虚拟地址空间,虚拟地址空间由若干互不交叠的vb的构成,每个所述vb都是一段连续的虚拟地址空间,用于存储程序的代码和数据;每个进程都有一个pvm,用于维护进程和vb的绑定关系,控制内存访问权限;每个所述vb维护一个atm,所述atm中存储了相应vb的qos信息;所述硬件微架构,用于执行地址翻译,并结合atm实现混合物理内存的管理。当访问内存时,首先要通过pvm的核验,然后系统根据atm中的qos信息和当前内存的带宽利用率,自适应地配置硬件资源,以最大限度地提高性能和效率。进一步的,每一所述vb都是全局唯一且互不交叠的。进一步的,所述pvm中存储有进程所属vb的相关信息、以及进程对vb的访问权限;其中,vb的相关信息包括:vb的全局唯一编号以及vb的容量。进一步的,所述atm包括:vit(vbinfotable,虚拟块信息表)和page或rangetable(页表或区间表);其中,vit中存储了相应vb的qos信息。进一步的,所述硬件微架构包括:pvmcache(进程虚拟块的元数据的高速缓存)和支持qos的内存控制器;其中,支持qos的内存控制器用于执行地址翻译和内存管理,其包括:atmcache(地址翻译的元数据缓冲器)、内存实时监测单元和数据迁移单元。在访问虚拟内存时,通过atmcache得到vb的qos信息,结合数据迁移单元处理访问请求,以及结合内存实时监测单元获取的内存带宽利用率等信息,来动态分配与迁移数据。本发明实施例上述方案中,所有进程处于同一个虚拟地址空间,其由互不交叠的vb组成,从而避免了vivt(virtuallyindexed、virtuallytagged,虚拟高速缓存)caches的homonym(同名异物)和synonym(同物异名)问题;由pvm维护了进程和vb的绑定关系,从而消除了在虚拟化环境下需要多次地址翻译问题。另外,把访问权限和地址翻译做分离,即把内存访问权限从传统的页表项中移除,放在pvm中维护;把page或rangetable、以及vb的qos信息放在atm中维护,并把地址翻译放在内存控制器中实现。为提高tlb(转译后备缓冲器)命中率,在pagetable的基础上增加了rangetable和rangetlb。最后,为提高内存动态管理的时效性,在硬件微架构中引入了pvmcache和atmcache,其中,atmcache包含vitcache和tlb两部分。为了便于理解,下面针对虚拟内存架构中的各个部分以及工作原理做详细的介绍。如图1所示,互不交叠的vb(如图1中的vb1~vb4)构成了一个虚拟地址空间(singlevirtualaddressspace),所有进程都处于该虚拟地址空间中。每个进程都对应有一个pvm(如图1中的p1、p2、…、pn),pvm存储有进程所属vb的相关信息以及进程对vb的访问权限。用所有权(ownership)对vb资源进行管理,即该进程对相应vb具有所有权(ownership),并且进程之间可以转让或共享对vb的所有权。此外,操作系统会为每个vb维护一个atm,atm存储vb的qos信息(如延迟与带宽敏感性),根据atm中的qos并借助于内存实时监测及数据迁移单元,实现了混合物理内存的动态、高效管理。需要说明的是,图1所示的vb数目仅为举例,并非构成限制,在实际应用中,用户可根据实际需求来设定vb的数目;同样的,pvm的数目也是根据实际情况发生变动。如图2所示,单虚拟地址空间为64位,如果是单机,则采用risc-vsv-48页表模式,如果是分布式系统或集群,则采用risc-vsv-64页表模式。根据具体应用场景和需求,vb的容量可以是4kb、8kb、16kb…128tb之中的任意8种,而且每个vb都有全局唯一编号(vbuniqueid,简称vbuid)。因为vbuid是全局唯一的,所以消除了vivtcaches(虚拟高速缓存)同名异物的可能性性;由于vb不重叠,进而又消除了vivtcaches同物异名的可能性,因此该设计为vivtcaches(虚拟高速缓存)的实际采用扫清了障碍。如图3所示,每个进程都有一个pvm,用于存储该进程所属的vb和访问权限。如图3的(a)部分所示为pvm表项设计图。进程和vb可以动态绑定和解绑定,无论是主机的进程还是虚拟机的进程,其绑定/解绑定的原理是相同的。通过该设计,在虚拟化环境下每次访存最多只需一次地址翻译,从而消除了传统系统中需要多次地址翻译的问题。另外,操作系统会为每个vb维护一个atm。atm包括vit和page或rangetable两个部分。如图3的(b)部分所示为vit表项设计图。在vitentry(虚拟块信息表项)中,props(数据特征)存储着vb的qos信息(如延迟与带宽敏感性)。如图4所示,连续虚拟地址空间[base,limit]映射到连续物理地址空间[base+offset,limit+offset],并且内存地址是以页表大小为单位对齐的。相对于细粒度的pagetable,使用rangetable可以覆盖更大的内存空间,提高了tlb命中率。如图5所示,采用4阶b树实现rangetable(区间表),当树的深度为3时,rte(rangetableentry)的存储上限是124个,可以满足绝大多数应用的需求。该设计不但查询操作的时间复杂度低(对数级),而且b树数据局部性好,高速缓存访问效率高。如图6所示,在vb向操作系统申请成功后,用index和offset组成的地址访问pvmcache。其中,index为指令所属的vb在pvm中的索引,offset为指令在vb内的偏移量。在pvm核验成功后,生成由vbuid和offset构成的虚拟地址,然后据此访问l1cache(一级高速缓存)、l2cache(二级高速缓存)和llc(采用vivtcaches)。因为采用vivtcaches设计,所以只有在llc缺失时才做地址翻译。若llc缺失,则首先根据虚拟地址访问atm中的vit,然后根据其中的ptr2page或ptr2range指针访问page或rangetable,把虚拟地址转换为物理地址。最后,为了降低pvm和atm的访问延迟,在硬件微架构中引入pvmcache和atmcache,分别用于缓存pvm和atm。其中,atmcache包含vitcache和tlb两部分。如图7所示,首先访问l1tlb。若l1tlb缺失,则并行访问l2tlb和rangetlb。如图8所示,rangetlb采用32-entry全相联设计,占用很小的芯片面积。在mru(mostrecentlyused)中存放最近使用的条目。若mru缺失,则把虚拟地址的页号与[base,limit]比较,如果再查询offset,最后根据物理帧号pfn和offset生成物理地址。如图9所示,硬件微架构中的混合物理内存由mem0和mem1组成,mem0是低延迟、高带宽的dram(如3d-dram),mem1是低成本、高容量的ddr-dram或持久性内存(persistentmemory)。vit中的props把数据的分为三类qos,优先级从高到低依次为延迟敏感型(latencysensitive)、带宽敏感型(bandwidthsensitive)和不敏感型(insensitivesensitive)。这里把未标识qos要求的数据称为不敏感型数据。经常访问的数据称为热数据,不常访问的数据称为冷数据,热数据的优先级高于冷数据。所以,总的优先级如下:延迟敏感型热数据>延迟敏感型冷数据>带宽敏感型热数据>带宽敏感型冷数据>不敏感型热数据>不敏感型冷数据。数据迁移单元(migrationcontroller)中:remaptable记录着迁移中的内存块的旧物理地址到新物理地址的映射关系,migrationbuffer中缓存着正在迁移的页面数据;waitqueue缓存着要访问正在迁移页面的读写请求。在访问内存时,首先访问atmcache中的vitcache,把虚拟地址翻译为物理地址。若物理地址包含在正在迁移的内存块,则查询remaptable,若命中则查询migrationbuffer,若缺失则把读写请求放在waitqueue;若物理地址不在迁移中的内存块里,则根据props(数据特征)把请求派送到相应队列,最后再由mem0和mem1控制器处理读写请求。此外,monitoringunit(内存实时监测单元)会定时监测内存的带宽利用率,处理器据此动态分配、迁移数据,以最大限度地提高性能和效率。如图10所示,由于内存带宽利用率和延迟呈正相关,因此可以以带宽利用率为监测参数来衡量延时。以中等带宽利用率k1和高带宽利用率k2为界限(k1与k2的具体数值可根据实际情况或者经验设定),把物理内存分为三种状态:lmu(lowmemoryutilization,带宽利用率低)、hmu(highmemoryutilization,带宽利用率高)和congested(拥堵)。monitoringunit实时监测物理内存的带宽利用率,系统据此自适应调整、动态迁移数据,以最大限度地提高性能和效率,主要流程为:monitoringunit实时监测mem0和mem1的带宽利用率,之后根据实际情况执行数据分配或者数据迁移子流程:1)判断是否申请分配内存空间,若是,则判断mem0是否处于lmu状态且有空闲空间;若是,则在mem0中分配空间,若否,则在mem1中分配空间。2)判断mem0是否处于lmu状态;若是,则把mem1中优先级最高的内存块迁移至mem0中,若否,则把mem0中最低优先级的内存块和mem1中最高优先级的内存块做交换,之后,判断mem0是否处于hmu状态且mem1是否处于lmu状态,若是,则将mem0中最低优先级的内存块迁移到mem1。以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域
:的技术人员在本发明披露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1