CN102662869A - 虚拟机中的内存访问方法和装置及查找器 - Google Patents
虚拟机中的内存访问方法和装置及查找器 Download PDFInfo
- Publication number
- CN102662869A CN102662869A CN2012100965922A CN201210096592A CN102662869A CN 102662869 A CN102662869 A CN 102662869A CN 2012100965922 A CN2012100965922 A CN 2012100965922A CN 201210096592 A CN201210096592 A CN 201210096592A CN 102662869 A CN102662869 A CN 102662869A
- Authority
- CN
- China
- Prior art keywords
- finger
- physical address
- address
- virtual
- virtual address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供了一种虚拟机中的内存访问方法和装置及查找器,其中,该方法包括:根据来自虚拟机的访问指令中的虚拟地址在第一查找器中查找与虚拟地址对应的物理地址,其中,第一查找器为由CAM和物理地址查找逻辑组成的软硬件协同物理地址查找器;若在第一查找器中查找到与虚拟地址对应的物理地址,则访问查找到的物理地址指示的物理内存。本发明解决了相关技术中的虚拟机技术使用纯软件TLB进行内存访问会带来额外性能开销的问题,达到减小了虚拟机工作过程中的开销的技术效果。
Description
技术领域
本发明涉及通信领域,具体而言,涉及一种虚拟机中的内存访问方法和装置及查找器。
背景技术
随着计算机硬件设计技术的发展,计算机硬件平台日益多元化,在带来计算性能大幅提升的同时,也加剧了软件兼容性问题。异构虚拟机技术是解决软件兼容性问题的重要手段。异构虚拟机能够在一种硬件平台上运行针对另一种硬件平台编写的二进制可执行程序,其原理是在宿主硬件平台上通过软件或软硬件结合的方式虚拟出目标硬件平台的指令系统和相关硬件部件,从而使针对目标硬件平台设计的软件能够在其上运行。
在异构虚拟机系统中,TLB(Translation Lookaside Buffer,转译后备缓冲器)的模拟效率是影响虚拟机整体效率的关键。TLB为典型的内容可寻址存储器,存放虚拟地址和其对应的物理地址条目,用来加速虚拟地址到物理地址的转换过程。其索引关键字为虚拟内存地址,索引结果为物理内存地址。当CPU在执行过程中需要访问内存时,会根据指令中的虚拟内存地址向TLB发出查询请求。如果请求的虚拟地址在TLB中存在,TLB将在非常短的时间内返回对应的物理地址给CPU,之后CPU就可以使用得到的物理地址访问内存。如果请求的虚拟地址不在TLB中,就会使用软件的页表进行虚实地址转换,而软件页表的访问速度比TLB慢很多。由于访存操作在一般软件中的执行频率非常高,因而TLB模拟器在虚拟机的执行过程中的访问频率也非常高,TLB模拟器的性能直接影响整个虚拟机的执行性能。
已有的虚拟机大多采用纯软件的方法模拟目标机虚拟地址到宿主机物理地址的转换过程(如QEMU,Bochs,Simple-scalar等)。以著名开源虚拟机软件QEMU为例,其目标机虚拟地址到宿主机物理地址的转换过程可分为三步:1)由目标机虚拟地址到目标机物理地址的转换,这里的目标机物理地址实质上是QEMU模拟的目标机内存的物理地址。QEMU通过纯软件模拟的TLB完成这一转换过程。2)由目标机物理地址到宿主机虚拟地址的转换,QEMU通过把目标机物理地址与模拟的目标机内存首地址对应的宿主机虚拟地址相加完成这一转换。3)由宿主机虚拟地址到宿主机物理地址的转换,这一步转换不是由虚拟机直接完成,而是交由宿主机硬件完成。
QEMU在上述步骤1中采用纯软件的方式模拟TLB的功能,通过哈希查找的方式完成由目标机虚拟地址到目标机物理地址的转换,以目标计算平台基本块的首条指令物理地址作为检索键值,以宿主计算平台基本块的首条指令虚拟地址作为检索内容。为了提高转换效率,QEMU对高频执行的基本块,建立每个链最多只有一个node的hash快表(称为指令cache),在针对一个指令地址查找基本块时,采用两级查找:首先在指令cache、其次在hash表中进行查找。
这种纯软件的TLB模拟方式将原本硬件完成的工作上升到软件层次完成,使得需要用软件指令处理不同体系结构之间的差异性,因而会带来明显的额外性能开销。具体来说,图1中虚线部分示出这种纯软件TLB模拟方法,包括:步骤(1):查找软件TLB;如果查找到,获取相应的物理地址,如果查找不到,执行步骤(2):进行TLB缺失异常处理。在上述的步骤(1)中,查找TLB需要遍历软件TLB表,包含循环操作,其时间复杂度与TLB表项数成正比。即使在某些情况下可通过hash表加速其查找过程,仍需要数十条指令方可完成,因而会带来明显的额外性能开销。
针对相关技术中的上述问题,目前尚未提出有效的解决方案。
发明内容
本发明提供了一种虚拟机中的内存访问方法和装置及查找器,以至少解决相关技术中虚拟机技术使用纯软件TLB进行内存访问会带来额外性能开销的问题。
根据本发明的一个方面,提供了一种虚拟机中的内存访问方法,包括:根据来自虚拟机的访问指令中的虚拟地址在第一查找器中查找与虚拟地址对应的物理地址,其中,第一查找器为由CAM和物理地址查找逻辑组成的软硬件协同物理地址查找器;若在第一查找器中查找到与虚拟地址对应的物理地址,则访问查找到的物理地址指示的物理内存。
优选的,根据指令中的虚拟地址在第一查找器中查找与虚拟地址对应的物理地址包括:判断CAM中是否存在索引域内容与检索键值相同的表项,其中,检索键值为来自虚拟机的访问指令中的虚拟地址;若CAM中是存在索引域内容与检索键值相同的表项,则CAM返回索引域内容与检索键值相同的数据域内容。
优选的,根据来自虚拟机的访问指令中的虚拟地址在第一查找器中查找与虚拟地址对应的物理地址之后,还包括:若在第一查找器未查找到与虚拟地址对应的物理地址,则通过第二查找器查找与虚拟地址对应的物理地址,其中,第二查找器为纯软件物理地址查找器;若在第二查找器中查找到与虚拟地址对应的物理地址,则获取虚拟地址对应的物理地址,并根据获取的虚拟地址对应的物理地址访问物理内存。
优选的,通过第二查找器查找与虚拟地址对应的物理地址之后,还包括:若在第二查找器未查找到与虚拟地址对应的物理地址,则分配内存地址与虚拟地址对应,并访问分配的内存地址;将虚拟地址和分配的内存地址存入第二查找器。
优选的,其特征在于,还包括:若在第二查找器中记录的物理地址被查找的频率超过预定阈值,则将虚拟地址和与虚拟地址对应的物理地址存入第一查找器的CAM中。
根据本发明的另一个方面,提供了一种查找器,该查找器为由CAM和物理地址查找逻辑组成的软硬件协同物理地址查找器,包括:第一查找单元,用于根据来自虚拟机的访问指令中的虚拟地址查找与虚拟地址对应的物理地址;第一访问单元,用于在第一查找单元查找到与虚拟地址对应的物理地址时,访问查找到的物理地址指示的物理内存。
优选的,第一查找单元包括:第一判断模块,用于判断CAM中是否存在索引域内容与检索键值相同的表项,其中,检索键值为来自虚拟机的访问指令中的虚拟地址;第一返回模块,用于在第一判断模块判断出CAM中是存在索引域内容与检索键值相同的表项时,返回CAM中索引域内容与检索键值相同的数据域内容。
根据本发明的又一个方面,提供了一种虚拟机中的内存访问装置,该装置包括:第二查找单元,用于根据来自虚拟机的访问指令中的虚拟地址在第一查找器中查找与虚拟地址对应的物理地址,其中,第一查找器为由CAM和物理地址查找逻辑组成的软硬件协同物理地址查找器;第二访问单元,用于在第一查找器中查找到与虚拟地址对应的物理地址时,访问查找到的物理地址指示的物理内存。
优选的,第二查找单元包括:第二判断模块,用于判断CAM中是否存在索引域内容与检索键值相同的表项,其中,检索键值为来自虚拟机的访问指令中的虚拟地址;第二返回模块,用于在CAM中是存在索引域内容与检索键值相同的表项时,返回CAM中索引域内容与检索键值相同的数据域内容。
优选的,还包括:第三查找单元,用于在第一查找器未查找到与虚拟地址对应的物理地址时,通过第二查找器查找与虚拟地址对应的物理地址,其中,第二查找器为纯软件物理地址查找器;第三访问单元,用于在第二查找器中查找到与虚拟地址对应的物理地址时,获取虚拟地址对应的物理地址,并根据获取的虚拟地址对应的物理地址访问物理内存。
优选的,还包括:分配单元,用于在第二查找器未查找到与虚拟地址对应的物理地址时,分配内存地址与虚拟地址对应,并访问分配的内存地址;第一存储单元,用于将虚拟地址和分配的内存地址存入第二查找器。
通过本发明,在虚拟机中从目标机虚拟地址到宿主机物理地址的转换过程中,首先在由内容索引全相联存储器CAM和物理地址查找逻辑组成的软硬件协同物理地址查找器中进行查找,若查找到虚拟地址对应的物理地址,直接访问查找到的物理地址。这种使用CAM和物理地址查找逻辑组成的软硬件协同物理地址查找器将大部分的查找操作从查找内存中的数组转化为查找硬件CAM,能够在单次CAM访问的时间内获得需要的结果,解决了相关技术中虚拟机技术使用纯软件TLB进行内存访问会带来额外性能开销的问题,达到减小了虚拟机工作过程中的开销的技术效果。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据相关技术的纯软件的TLB模拟方式的一种示意图;
图2是根据本发明实施例的虚拟机中的内存访问方法的一种优选的流程图;
图3是根据本发明实施例的查找器的一种优选的结构示意图;
图4是根据本发明实施例的虚拟机中的内存访问装置的一种优选的结构图;
图5是根据本发明实施例的虚拟机中的内存访问装置的又一种优选的结构图;
图6是根据本发明实施例的虚拟机中的内存访问装置的又一种优选的结构图;
图7是根据本发明实施例的虚拟机中的内存访问装置的又一种优选的结构图;
图8是根据本发明实施例的虚拟机中的内存访问装置的另一种优选的结构图;
图9是根据本发明实施例的虚拟机中的内存访问方法的一种优选的流程示意图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
实施例1
本实施例提供了一种虚拟机中的内存访问方法,具体地,如图2所示,该方法包括:
S202,根据来自虚拟机的访问指令中的虚拟地址在第一查找器中查找与虚拟地址对应的物理地址,其中,第一查找器为由内容索引全相联存储器CAM和物理地址查找逻辑组成的软硬件协同物理地址查找器;
S204,若在第一查找器中查找到与虚拟地址对应的物理地址,则访问查找到的物理地址指示的物理内存。
上述优选的实施方式的实施,在虚拟机中从目标机虚拟地址到宿主机物理地址的转换过程中,首先在由内容索引全相联存储器CAM和物理地址查找逻辑组成的软硬件协同物理地址查找器(第一查找器)中进行查找,若查找到虚拟地址对应的物理地址,直接访问查找到的物理地址。这种使用CAM和物理地址查找逻辑组成的软硬件协同物理地址查找器将大部分的查找操作从查找内存中的数组转化为查找硬件CAM,能够在单次CAM访问的时间内获得需要的结果,解决了相关技术中虚拟机技术使用纯软件TLB进行内存访问会带来额外性能开销的问题,减小了虚拟机工作过程中的开销。
本优选的实施例还提供了一种根据指令中的虚拟地址在第一查找器中查找与虚拟地址对应的物理地址的方法,具体来说,该方法包括:判断CAM中是否存在索引域内容与检索键值相同的表项,其中,检索键值为来自虚拟机的访问指令中的虚拟地址;若CAM中是存在索引域内容与检索键值相同的表项,则CAM返回索引域内容与检索键值相同的数据域内容。在上述优选的实施方式中,把虚拟地址作为检索键值在第一查找器CAM的索引域内容查找虚拟地址对应的物理地址,由于第一查找器为由CAM和物理地址查找逻辑组成的软硬件协同物理地址查找器,因此能够在单次CAM访问的时间内获得需要的结果,减小了虚拟机工作过程中的开销。
本优选的实施例还对上述的虚拟机中的内存访问方法进行了优化,具体地,在根据来自虚拟机的访问指令中的虚拟地址在第一查找器中查找与虚拟地址对应的物理地址之后,该方法还包括:若在第一查找器未查找到与虚拟地址对应的物理地址,则通过第二查找器查找与虚拟地址对应的物理地址,其中,第二查找器为纯软件物理地址查找器;若在第二查找器中查找到与虚拟地址对应的物理地址,则获取虚拟地址对应的物理地址,并根据获取的虚拟地址对应的物理地址访问物理内存。在上述优选的实施方式中,在虚拟机从目标机虚拟地址到宿主机物理地址的转换过程中,先通过第一查找器查找,由于第一查找器为由CAM和物理地址查找逻辑组成的软硬件协同物理地址查找器,因此能够在单次CAM访问的时间内获得需要的结果,可以减小虚拟机工作过程中的开销,在第一查找器未查找到与虚拟地址对应的物理地址时,使用纯软件的物理地址查找器查找,保证虚拟机从目标机虚拟地址到宿主机物理地址的转换过程的顺利完成。
本实施例还对上述的虚拟机中的内存访问方法进行了进一步优化了,优选的,通过第二查找器查找与虚拟地址对应的物理地址之后,还包括:若在第二查找器未查找到与虚拟地址对应的物理地址,则分配内存地址与虚拟地址对应,并访问分配的内存地址;将虚拟地址和分配的内存地址存入第二查找器。在上述优选的实施方式中,优化了上述的虚拟机中的内存访问方法,在第二查找器未查找到与虚拟地址对应的物理地址时,系统分配分配新的内存地址与虚拟地址对应,并访问分配的内存地址,进一步保证虚拟机从目标机虚拟地址到宿主机物理地址的转换过程的顺利完成。
优选的,若在第二查找器中记录的物理地址被查找的频率超过预定阈值,则将虚拟地址和与虚拟地址对应的物理地址存入第一查找器的CAM中。上述优选的技术方案的实施,在第二查找器被查找的物理地址频率较高时,可将虚拟地址和虚拟地址对应的物理地址存入第一查找器,方便以后第一查找器的查找,进一步的,减小了虚拟机工作过程中系统的开销。
实施例2
在上述实施例1的基础上,本优选的实施例提供了一种查找器,该查找器为由CAM和物理地址查找逻辑组成的软硬件协同物理地址查找器,优选的,上述的CAM中包含索引域和与该索引域对应的数据域。具体来说,如图3所示,该查找器包括:第一查找单元302,用于根据来自虚拟机的访问指令中的虚拟地址查找与虚拟地址对应的物理地址;第一访问单元304,用于在第一查找单元302查找到与虚拟地址对应的物理地址时,访问查找到的物理地址指示的物理内存。
上述优选的实施方式的实施,在虚拟机中从目标机虚拟地址到宿主机物理地址的转换过程中,首先在由内容索引全相联存储器CAM和物理地址查找逻辑组成的软硬件协同物理地址查找器中进行查找,若查找到虚拟地址对应的物理地址,直接访问查找到的物理地址。这种使用CAM和物理地址查找逻辑组成的软硬件协同物理地址查找器将大部分的查找操作从查找内存中的数组转化为查找硬件CAM,能够在单次CAM访问的时间内获得需要的结果,解决了相关技术中虚拟机技术使用纯软件TLB进行内存访问会带来额外性能开销的问题,减小了虚拟机工作过程中的开销。
进一步地,本实施例还对上述第一查找单元302进行了改进,优选的,如图4所示,上述第一查找单元302包括:第一判断模块402,用于判断CAM中是否存在索引域内容与检索键值相同的表项,其中,检索键值为来自虚拟机的访问指令中的虚拟地址;第一返回模块404,用于在第一判断模块402判断出CAM中是存在索引域内容与检索键值相同的表项时,返回CAM中索引域内容与检索键值相同的数据域内容,上述优选的技术方案的实施,提供了一种具体的根据指令中的虚拟地址在第一查找器中查找与虚拟地址对应的物理地址的方法,以实现在虚拟机中从目标机虚拟地址到宿主机物理地址的转换过程。
实施例3
在上述实施例1和实施例2的基础上,本实施例提供了一种虚拟机中的内存访问装置,具体来说,如图5所示,该装置包括:第二查找单元502,用于根据来自虚拟机的访问指令中的虚拟地址在第一查找器中查找与虚拟地址对应的物理地址,其中,第一查找器为由CAM和物理地址查找逻辑组成的软硬件协同物理地址查找器;第二访问单元504,用于在第一查找器中查找到与虚拟地址对应的物理地址时,访问查找到的物理地址指示的物理内存。
在虚拟机中从目标机虚拟地址到宿主机物理地址的转换过程中,首先在由内容索引全相联存储器CAM和物理地址查找逻辑组成的软硬件协同物理地址查找器(第一查找器)中进行查找,若查找到虚拟地址对应的物理地址,直接访问查找到的物理地址。这种使用CAM和物理地址查找逻辑组成的软硬件协同物理地址查找器将大部分的查找操作从查找内存中的数组转化为查找硬件CAM,能够在单次CAM访问的时间内获得需要的结果,解决了相关技术中虚拟机技术使用纯软件TLB进行内存访问会带来额外性能开销的问题,减小了虚拟机工作过程中的开销。
本实施例还对上述第二查找单元502进行了改进,以实现根据指令中的虚拟地址在第一查找器中查找与虚拟地址对应的物理地址。为实现上述目的,具体地,如图6所示,上述第二查找单元502还包括:第二判断模块602,用于判断CAM中是否存在索引域内容与检索键值相同的表项,其中,检索键值为来自虚拟机的访问指令中的虚拟地址;第二返回模块604,用于在CAM中是存在索引域内容与检索键值相同的表项时,返回CAM中索引域内容与检索键值相同的数据域内容。在上述优选的实施方式中,把虚拟地址作为检索键值在第一查找器CAM的索引域内容查找虚拟地址对应的物理地址,由于第一查找器为由CAM和物理地址查找逻辑组成的软硬件协同物理地址查找器,因此能够在单次CAM访问的时间内获得需要的结果,减小了虚拟机工作过程中的开销。
本实施例还对上述虚拟机中的内存访问装置进行了优化,具体来说,如图7所示,该装置还包括:第三查找单元702,用于在第一查找器未查找到与虚拟地址对应的物理地址时,通过第二查找器查找与虚拟地址对应的物理地址,其中,第二查找器为纯软件物理地址查找器;第三访问单元704,用于在第二查找器中查找到与虚拟地址对应的物理地址时,获取虚拟地址对应的物理地址,并根据获取的虚拟地址对应的物理地址访问物理内存。在上述优选的实施方式中,在虚拟机从目标机虚拟地址到宿主机物理地址的转换过程中,先通过第一查找器查找,由于第一查找器为由CAM和物理地址查找逻辑组成的软硬件协同物理地址查找器,因此能够在单次CAM访问的时间内获得需要的结果,可以减小虚拟机工作过程中的开销,在第一查找器未查找到与虚拟地址对应的物理地址时,使用纯软件的物理地址查找器查找,保证虚拟机从目标机虚拟地址到宿主机物理地址的转换过程的顺利完成。
本实施例还对上述虚拟机中的内存访问装置进行了进一步的优化,具体来说,如图8所示,该装置还包括:分配单元802,用于在第二查找器未查找到与虚拟地址对应的物理地址时,分配物理内存地址与虚拟地址对应,并访问分配的物理内存地址;第一存储单元804,用于将虚拟地址和分配的内存地址存入第二查找器。在上述优选的实施方式中,优化了上述的虚拟机中的内存访问方法,在第二查找器未查找到与虚拟地址对应的物理地址时,系统分配分配新的物理地址与虚拟地址对应,并访问分配的内存地址,进一步保证虚拟机从目标机虚拟地址到宿主机物理地址的转换过程的顺利完成。
优选的,上述虚拟机中的内存访问装还包括:第二存储单元,若在第二查找器中记录的物理地址被查找的频率超过预定阈值,则将虚拟地址和与虚拟地址对应的物理地址存入第一查找器的CAM中。上述优选的技术方案的实施,在第二查找器被查找的物理地址频率较高时,可将虚拟地址和虚拟地址对应的物理地址存入第一查找器,方便以后第一查找器的查找,进一步的,减小了虚拟机工作过程中系统的开销。
实施例4
在上述实施例1-3的基础上,本发明还提供了一种具体的虚拟机中的内存访问方法,图9虚线内示出该方法具体的步骤:
步骤(1):查找CAM;
具体来说,虚拟机的虚拟CPU在执行过程中,以循环的方式不断取出目标指令。如果该目标指令为访存指令,则取出该指令的地址(即目标机虚拟地址),作为模拟器的输入。以目标机虚拟地址作为检索键值,查找CAM。如果CAM中存在索引域内容与检索键值相同的表项,则CAM会返回对应的数据域内容,即查找结果,执行步骤(4)。如果CAM中不存在符合条件的表项,则返回一个失败信号,执行步骤(2)。
优选的,在上述步骤(1)中,如果CAM的容量不足,需要将之前存入CAM的虚拟地址和物理地址索引信息替换出去。优选的,可以采用全部清空策略,先进先出策略(FIFO),随机策略(Random)或最近最少使用策略(LRU)。
优选的,在上述步骤(1)中,CAM中的数据域存储的内容可以是目标机的物理地址,也可以是宿主机的虚拟地址或者宿主机的物理地址,具体存储哪种地址可根据虚拟机运行的软硬件环境和实现复杂度来选择。
步骤(2):查找软件TLB;
具体来说,在CAM没有查找到虚拟地址对应的物理地址时,使用目标虚拟地址在软件实现的TLB查找器中查找物理地址。优选的,软件TLB查找器使用数组存储目标虚拟地址和物理地址对应信息,优选的,可通过对数组内容建立hash索引加快查找速度,优选的,为了提高查找效率,可使用多级hash表存储虚拟地址和物理地址的索引信息。如果hash索引中存在与目标虚拟地址相同的键值,则返回对应的数组内容,即为所要查找的物理地址,执行步骤(4)。同时,将目标虚拟地址和对应的物理地址装入CAM以供下次查询使用。优选的,也可在物理地址被查找的频率超过预定阈值时再将将目标虚拟地址和对应的物理地址装入CAM以供下次查询使用。如果hash索引中不存在与目标虚拟地址相同的键值,则返回软件TLB缺失信号,执行步骤(3)。
步骤(3):TLB缺失异常处理;
重新分配内存地址与虚拟地址对应,并访问分配的内存地址;优选的,将虚拟地址和分配的内存地址存入软件的TLB查找器中。
步骤(4):根据找到的物理地址,完成计算机物理内存的访问。
以上就是本发明的一次完整模拟过程。在这一过程中,使用CAM将传统的纯软件模拟TLB方法改为软硬件结合完成,将其中90%以上的查找操作从查找内存中的数组转化为查找硬件CAM,查找开销从数十条指令减少到一次CAM访问。
下面以在龙芯3A平台上运行X86虚拟机为例,说明在这两种异构平台上用CAM实现软硬件协同TLB模拟器的方法。
龙芯3A完全兼容MIPS指令系统,能够同时支持4K,16K等不同页面,常见的X86的CPU和操作系统可支持4K页面,因而,能够以龙芯3A为宿主计算平台模拟目标X86的虚拟机。
具体地,在龙芯3A中实现了一个包含64项存储空间的CAM,并提供了3条CAM操作指令,优选的,该指令包括:CAMPV(查询CAM表项),CAMWI(写CAM表项),CAMRD(读CAM表项)。
假设虚拟机使用连续的宿主机物理内存模拟X86物理内存,并且其初始物理地址为0x40000000。在虚拟的X86的CPU中,应用程序存在如下虚拟地址到物理地址的映射关系:虚拟地址0x834e0000,该虚拟地址对应的物理地址为0x00070000,并且此映射关系已经被装入CAM中。此时,应用程序需要执行指令:MOV ECX,0x834e0002。此指令经虚拟机翻译后成为如下龙芯3A指令:
lui t0,0x834e0000
ori t0,0x0002
1w s0,0(t0)
宿主机龙芯3A的CPU在执行最后一条1w s0,0(t0)指令时,使用虚拟的页面基地址0x834e0000作为查询键值,使用指令CAMPV向CAM发出查询请求。因为CAM中存在索引域为0x834e0000的表项,CAMPV会返回该表项中数据域的内容,即0x40070000。这一物理地址再加上页内偏移0x00000002,即为实际的物理地址0x40070002。
从上述描述中可以看出,本发明所提供的虚拟机中的内存访问方法能够在单条CPU指令周期(CAMPV指令)内返回正确的物理地址。过程简单,能明显减少开销。
从以上的描述中,可以看出,本发明在虚拟机中从目标机虚拟地址到宿主机物理地址的转换过程中,首先在由内容索引全相联存储器CAM和物理地址查找逻辑组成的软硬件协同物理地址查找器中进行查找,若查找到虚拟地址对应的物理地址,直接访问查找到的物理地址。这种使用CAM和物理地址查找逻辑组成的软硬件协同物理地址查找器将大部分的查找操作从查找内存中的数组转化为查找硬件CAM,能够在单次CAM访问的时间内获得需要的结果,解决相关技术中虚拟机技术使用纯软件TLB进行内存访问会带来额外性能开销的问题,减小虚拟机工作过程中的开销。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (11)
1.一种虚拟机中的内存访问方法,其特征在于,包括:
根据来自虚拟机的访问指令中的虚拟地址在第一查找器中查找与所述虚拟地址对应的物理地址,其中,所述第一查找器为由CAM和物理地址查找逻辑组成的软硬件协同物理地址查找器;
若在所述第一查找器中查找到与所述虚拟地址对应的物理地址,则访问查找到的所述物理地址指示的物理内存。
2.根据权利要求1所述的方法,其特征在于,所述根据指令中的虚拟地址在第一查找器中查找与所述虚拟地址对应的物理地址包括:
判断所述CAM中是否存在索引域内容与检索键值相同的表项,其中,所述检索键值为所述来自虚拟机的访问指令中的虚拟地址;
若所述CAM中是存在索引域内容与所述检索键值相同的表项,则所述CAM返回所述索引域内容与所述检索键值相同的数据域内容。
3.根据权利要求1或2所述的方法,其特征在于,根据来自虚拟机的访问指令中的虚拟地址在第一查找器中查找与所述虚拟地址对应的物理地址之后,还包括:
若在所述第一查找器未查找到与所述虚拟地址对应的物理地址,则通过第二查找器查找与所述虚拟地址对应的物理地址,其中,所述第二查找器为纯软件物理地址查找器;
若在所述第二查找器中查找到与所述虚拟地址对应的物理地址,则获取所述虚拟地址对应的物理地址,并根据获取的所述虚拟地址对应的物理地址访问物理内存。
4.根据权利要求3所述的方法,其特征在于,通过第二查找器查找与所述虚拟地址对应的物理地址之后,还包括:
若在所述第二查找器未查找到与所述虚拟地址对应的物理地址,则分配内存地址与所述虚拟地址对应,并访问所述分配的内存地址;
将所述虚拟地址和所述分配的内存地址存入所述第二查找器。
5.根据权利要求3所述的方法,其特征在于,还包括:
若在所述第二查找器中记录的物理地址被查找的频率超过预定阈值,则将所述虚拟地址和与所述虚拟地址对应的物理地址存入第一查找器的CAM中。
6.一种查找器,其特征在于,所述查找器为由CAM和物理地址查找逻辑组成的软硬件协同物理地址查找器,包括:
第一查找单元,用于根据来自虚拟机的访问指令中的虚拟地址查找与所述虚拟地址对应的物理地址;
第一访问单元,用于在所述第一查找单元查找到与所述虚拟地址对应的物理地址时,访问查找到的所述物理地址指示的物理内存。
7.根据权利要求6所述的查找器,其特征在于,所述第一查找单元包括:
第一判断模块,用于判断所述CAM中是否存在索引域内容与所述检索键值相同的表项,其中,所述检索键值为所述来自虚拟机的访问指令中的虚拟地址;
第一返回模块,用于在所述第一判断模块判断出所述CAM中是存在索引域内容与所述检索键值相同的表项时,返回所述CAM中索引域内容与所述检索键值相同的数据域内容。
8.一种虚拟机中的内存访问装置,其特征在于,包括:
第二查找单元,用于根据来自虚拟机的访问指令中的虚拟地址在第一查找器中查找与所述虚拟地址对应的物理地址,其中,所述第一查找器为由CAM和物理地址查找逻辑组成的软硬件协同物理地址查找器;
第二访问单元,用于在所述第一查找器中查找到与所述虚拟地址对应的物理地址时,访问查找到的所述物理地址指示的物理内存。
9.根据权利要求8所述的装置,其特征在于,所述第二查找单元包括:
第二判断模块,用于判断所述CAM中是否存在索引域内容与检索键值相同的表项,其中,所述检索键值为所述来自虚拟机的访问指令中的虚拟地址;
第二返回模块,用于在所述CAM中是存在索引域内容与所述检索键值相同的表项时,返回所述CAM中索引域内容与所述检索键值相同的数据域内容。
10.根据权利要求8或9所述的装置,其特征在于,还包括:
第三查找单元,用于在所述第一查找器未查找到与所述虚拟地址对应的物理地址时,通过第二查找器查找与所述虚拟地址对应的物理地址,其中,所述第二查找器为纯软件物理地址查找器;
第三访问单元,用于在所述第二查找器中查找到与所述虚拟地址对应的物理地址时,获取所述虚拟地址对应的物理地址,并根据获取的所述虚拟地址对应的物理地址访问物理内存。
11.根据权利要求10所述的装置,其特征在于,还包括:
分配单元,用于在所述第二查找器未查找到与所述虚拟地址对应的物理地址时,分配内存地址与所述虚拟地址对应,并访问所述分配的内存地址;
第一存储单元,用于将所述虚拟地址和所述分配的内存地址存入所述第二查找器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210096592.2A CN102662869B (zh) | 2012-04-01 | 2012-04-01 | 虚拟机中的内存访问方法和装置及查找器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210096592.2A CN102662869B (zh) | 2012-04-01 | 2012-04-01 | 虚拟机中的内存访问方法和装置及查找器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102662869A true CN102662869A (zh) | 2012-09-12 |
CN102662869B CN102662869B (zh) | 2015-08-26 |
Family
ID=46772365
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210096592.2A Active CN102662869B (zh) | 2012-04-01 | 2012-04-01 | 虚拟机中的内存访问方法和装置及查找器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102662869B (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105824761A (zh) * | 2016-03-10 | 2016-08-03 | 北京金山安全软件有限公司 | 一种物理内存信息获取方法及装置 |
CN106201652A (zh) * | 2016-06-29 | 2016-12-07 | 联想(北京)有限公司 | 一种数据处理方法及虚拟机 |
WO2017066944A1 (zh) * | 2015-10-21 | 2017-04-27 | 华为技术有限公司 | 一种存储设备访问方法、装置和系统 |
CN107025180A (zh) * | 2016-02-01 | 2017-08-08 | 龙芯中科技术有限公司 | 内存管理方法和装置 |
WO2017133493A1 (zh) * | 2016-02-03 | 2017-08-10 | 华为技术有限公司 | 虚拟机的内存地址分配方法以及装置 |
CN107665151A (zh) * | 2016-07-27 | 2018-02-06 | 龙芯中科技术有限公司 | 内存稳定性验证方法及装置 |
WO2018077219A1 (zh) * | 2016-10-27 | 2018-05-03 | 深圳创维数字技术有限公司 | 内存管理方法及系统 |
CN110196757A (zh) * | 2019-05-31 | 2019-09-03 | 龙芯中科技术有限公司 | 虚拟机的tlb填写方法、装置及存储介质 |
CN112256598A (zh) * | 2020-10-27 | 2021-01-22 | 上海壁仞智能科技有限公司 | 一种内存分配的方法及装置、内存寻址的方法及装置 |
CN113434371A (zh) * | 2021-08-26 | 2021-09-24 | 阿里云计算有限公司 | 内存访问信息的采集方法、计算设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003081476A2 (en) * | 2002-03-20 | 2003-10-02 | Intel Corporation | Method and data structure for a low memory overhead database |
CN1658172A (zh) * | 2004-02-19 | 2005-08-24 | 国际商业机器公司 | 在分段操作系统中提供用于页面转换的预转换段的设备和方法 |
EP1581873B1 (en) * | 2002-12-12 | 2008-03-26 | International Business Machines Corporation | Improved memory management for real-time applications |
WO2011116070A1 (en) * | 2010-03-16 | 2011-09-22 | Advanced Micro Devices, Inc. | Address mapping in virtualized processing system |
-
2012
- 2012-04-01 CN CN201210096592.2A patent/CN102662869B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003081476A2 (en) * | 2002-03-20 | 2003-10-02 | Intel Corporation | Method and data structure for a low memory overhead database |
EP1581873B1 (en) * | 2002-12-12 | 2008-03-26 | International Business Machines Corporation | Improved memory management for real-time applications |
CN1658172A (zh) * | 2004-02-19 | 2005-08-24 | 国际商业机器公司 | 在分段操作系统中提供用于页面转换的预转换段的设备和方法 |
WO2011116070A1 (en) * | 2010-03-16 | 2011-09-22 | Advanced Micro Devices, Inc. | Address mapping in virtualized processing system |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017066944A1 (zh) * | 2015-10-21 | 2017-04-27 | 华为技术有限公司 | 一种存储设备访问方法、装置和系统 |
US10713074B2 (en) | 2015-10-21 | 2020-07-14 | Huawei Technologies Co., Ltd. | Method, apparatus, and system for accessing storage device |
CN107025180B (zh) * | 2016-02-01 | 2020-03-13 | 龙芯中科技术有限公司 | 内存管理方法和装置 |
CN107025180A (zh) * | 2016-02-01 | 2017-08-08 | 龙芯中科技术有限公司 | 内存管理方法和装置 |
WO2017133493A1 (zh) * | 2016-02-03 | 2017-08-10 | 华为技术有限公司 | 虚拟机的内存地址分配方法以及装置 |
US10817432B2 (en) | 2016-02-03 | 2020-10-27 | Huawei Technologies Co., Ltd. | Memory address assignment method for virtual machine and apparatus |
CN105824761B (zh) * | 2016-03-10 | 2019-01-08 | 珠海豹趣科技有限公司 | 一种物理内存信息获取方法及装置 |
CN105824761A (zh) * | 2016-03-10 | 2016-08-03 | 北京金山安全软件有限公司 | 一种物理内存信息获取方法及装置 |
CN106201652A (zh) * | 2016-06-29 | 2016-12-07 | 联想(北京)有限公司 | 一种数据处理方法及虚拟机 |
CN107665151A (zh) * | 2016-07-27 | 2018-02-06 | 龙芯中科技术有限公司 | 内存稳定性验证方法及装置 |
CN107665151B (zh) * | 2016-07-27 | 2021-02-23 | 龙芯中科技术股份有限公司 | 内存稳定性验证方法及装置 |
WO2018077219A1 (zh) * | 2016-10-27 | 2018-05-03 | 深圳创维数字技术有限公司 | 内存管理方法及系统 |
CN110196757A (zh) * | 2019-05-31 | 2019-09-03 | 龙芯中科技术有限公司 | 虚拟机的tlb填写方法、装置及存储介质 |
CN112256598A (zh) * | 2020-10-27 | 2021-01-22 | 上海壁仞智能科技有限公司 | 一种内存分配的方法及装置、内存寻址的方法及装置 |
CN113434371A (zh) * | 2021-08-26 | 2021-09-24 | 阿里云计算有限公司 | 内存访问信息的采集方法、计算设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN102662869B (zh) | 2015-08-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102662869A (zh) | 虚拟机中的内存访问方法和装置及查找器 | |
US10831672B2 (en) | Memory management for a hierarchical memory system | |
CN102792285B (zh) | 用于处理数据的装置和方法 | |
US7930515B2 (en) | Virtual memory management | |
US8370575B2 (en) | Optimized software cache lookup for SIMD architectures | |
CN104809179B (zh) | 访问哈希表的装置和方法 | |
CN105283855B (zh) | 一种寻址方法及装置 | |
US9612975B2 (en) | Page cache device and method for efficient mapping | |
US20120331265A1 (en) | Apparatus and Method for Accelerated Hardware Page Table Walk | |
CN102110073B (zh) | 一种片上共享高速缓存的替换装置和方法以及相应处理器 | |
CN104239237A (zh) | 一种tlb管理方法及装置 | |
US20130297877A1 (en) | Managing buffer memory | |
WO2019106491A1 (en) | Dynamic address translation for a virtual machine | |
US7562204B1 (en) | Identifying and relocating relocatable kernel memory allocations in kernel non-relocatable memory | |
CN103077198B (zh) | 一种操作系统及其文件缓存定位方法 | |
CN103377141A (zh) | 高速存储区的访问方法以及访问装置 | |
CN107291630A (zh) | 一种高速缓冲存储器处理方法及装置 | |
US20070266199A1 (en) | Virtual Address Cache and Method for Sharing Data Stored in a Virtual Address Cache | |
US20140013054A1 (en) | Storing data structures in cache | |
Hua et al. | Early resolution of address translation in cache design | |
CN113448897B (zh) | 适用于纯用户态远端直接内存访问的优化方法 | |
Cui et al. | AFPT: Accelerating Read Performance of In-Memory File System Through Adaptive File Page Table. | |
US9785574B2 (en) | Translation lookaside buffer that employs spacial locality | |
Yu et al. | DTtree: A Novel Read/Write-Optimized Learned Index for Database Systems | |
CN116880780A (zh) | 树的数据写入方法、装置、机器可读介质及存储器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing Patentee after: Loongson Zhongke Technology Co.,Ltd. Address before: 100190 No. 10 South Road, Zhongguancun Academy of Sciences, Haidian District, Beijing Patentee before: LOONGSON TECHNOLOGY Corp.,Ltd. |