一种计算机及计算机上配置高速缓存控制策略的方法转让专利

申请号 : CN200710304033.5

文献号 : CN101470668B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 陈军

申请人 : 联想(北京)有限公司

摘要 :

本发明提供一种计算机及计算机上配置高速缓存控制策略的方法,涉及计算机领域,为解决现有的计算机中客户操作系统不支持Cache控制策略而运行效率低的问题而发明。本发明的方法包括:拦截客户操作系统对虚拟高速缓存控制策略寄存器的配置,并获取欲配置的高速缓存控制策略类型;根据所述高速缓存控制策略类型,从虚拟系统平台中查找高速缓存控制策略类型对应的类型映射;将所述类型映射配置给所述虚拟高速缓存控制策略寄存器。上述方案使客户操作系统支持Cache控制策略类型,客户操作系统的运行效率也由此得到了提高。

权利要求 :

1.一种计算机,包括:

虚拟系统平台,

至少两个客户操作系统,安装在所述虚拟系统平台上;

其特征在于,还包括:

与所述客户操作一一对应的虚拟高速缓存控制策略寄存器;

所述虚拟系统平台将所述客户操作系统欲配置的高速缓存控制策略类型对应的类型映射,传输给所述客户操作系统,由所述客户操作系统将所述类型映射配置给所述客户操作系统对应的虚拟高速缓存控制策略寄存器。

2.根据权利要求1所述的计算机,其特征在于,所述虚拟系统平台包括:硬件平台和安装在所述硬件平台上的虚拟机管理器。

3.根据权利要求2所述的计算机,其特征在于,所述硬件平台包括:与所述虚拟高速缓存控制策略寄存器对应的物理高速缓存控制策略寄存器。

4.根据权利要求3所述的计算机,其特征在于,所述客户操作系统包括一配置模块,用于将高速缓存控制策略类型对应的类型映射配置给所述客户操作系统对应的虚拟高速缓存控制策略寄存器。

5.根据权利要求4所述的计算机,其特征在于,所述虚拟机管理器包括:一拦截模块,与所述配置模块连接,用于拦截所述配置模块对所述虚拟高速缓存控制策略寄存器的配置,并获取欲配置的高速缓存控制策略类型;

一查找模块,分别与所述拦截模块和配置模块连接,用于根据所述拦截模块获取的高速缓存控制策略类型,从所述物理高速缓存控制策略寄存器中查找高速缓存控制策略类型对应的类型映射,并将该类型映射返回至所述客户操作系统的配置模块,由所述配置模块将所述类型映射配置给所述虚拟高速缓存控制策略寄存器。

6.根据权利要求1至5中任一项所述的计算机,其特征在于,所述虚拟高速缓存控制策略寄存器具体为:虚拟特殊模式寄存器;所述高速缓存控制策略类型对应的类型映射为:高速缓存控制策略类型索引。

7.根据权利要求1至5中任一项所述的计算机,其特征在于,所述虚拟高速缓存控制策略寄存器具体为:虚拟存储区域类型寄存器;所述高速缓存控制策略类型对应的类型映射为:所述控制策略类型对应的机器内存地址。

8.一种计算机上配置高速缓存控制策略的方法,其特征在于,包括:拦截客户操作系统对其对应的虚拟高速缓存控制策略寄存器的配置,并获取欲配置的高速缓存控制策略类型,其中,所述客户操作系统为至少两个;

根据所述高速缓存控制策略类型,从虚拟系统平台中查找高速缓存控制策略类型对应的类型映射;

将所述类型映射配置给所述客户操作系统对应的虚拟高速缓存控制策略寄存器。

9.根据权利要求8所述的计算机上配置高速缓存控制策略的方法,其特征在于,所述虚拟高速缓存控制策略寄存器具体为:虚拟特殊模式寄存器;所述高速缓存控制策略类型对应的类型映射为:高速缓存控制策略类型索引。

10.根据权利要求8所述的计算机上配置高速缓存控制策略的方法,其特征在于,所述虚拟高速缓存控制策略寄存器具体为:虚拟存储区域类型寄存器;所述高速缓存控制策略类型对应的类型映射为:所述控制策略类型对应的机器内存地址。

11.一种计算机上配置高速缓存控制策略的方法,该计算机包括:虚拟系统平台和安装在所述虚拟系统平台上的一个客户操作系统,其特征在于,该方法包括:根据所述客户操作系统欲配置的高速缓存控制策略类型,从虚拟系统平台中查找高速缓存控制策略类型对应的类型映射;

将所述类型映射配置给所述虚拟系统平台的物理高速缓存控制策略寄存器。

12.根据权利要求11所述的计算机上配置高速缓存控制策略的方法,其特征在于,所述物理高速缓存控制策略寄存器具体为:物理特殊模式寄存器;所述高速缓存控制策略类型对应的类型映射为:高速缓存控制策略类型索引。

13.根据权利要求11所述的计算机上配置高速缓存控制策略的方法,其特征在于,所述物理高速缓存控制策略寄存器具体为:物理存储区域类型寄存器;所述高速缓存控制策略类型对应的类型映射为:所述控制策略类型对应的机器内存地址。

说明书 :

一种计算机及计算机上配置高速缓存控制策略的方法

技术领域

[0001] 本发明涉及计算机领域,特别是指一种计算机以及计算机上配置高速缓存(Cache)控制策略的方法。

背景技术

[0002] 随着计算机的发展,虚拟化(Virtual)技术已被广泛地应用,虚拟化技术是利用虚拟机(Virtual Machine,简称VM)允许一台电脑上同时运行多个单独的操作系统,这些操作系统之间互不干扰,应用程序都可以在相互隔离的操作系统上运行而互不影响,可以简化软件的重新配置过程,从而显著提高计算机的工作效率。如图1所示,现有的计算机包括:Hardware(硬件设备,如一台电脑)、用于资源管理的VMM(VM Monitor,虚拟机管理器)和多个操作系统,其中,运行虚拟机软件的操作系统称为Host OS(主操作系统),在虚拟机里运行的操作系统称为Guest OS(客户操作系统),如:在一台电脑上安装了Win2000Server,再在Win2000Server上安装虚拟机软件(如VMWare),利用虚拟机软件可模拟出来3台计算机,在这3台计算机上分别运行DOS、Win98和Linux操作系统。包括Win2000Server在内,这4个操作系统同时在一台电脑上运行,相互隔离、互不干扰,由VMM成功地对一台电脑的资源进行划分和管理。
[0003] 在计算机的CPU与内存之间相互通信的过程中,Cache(高速缓冲存储器,简称高速缓存)起着重要的作用,高速缓存寄存器是位于CPU和内存之间的小规模、速度快的存储器,用于保存CPU常用的数据;当Cache中保存CPU要读写的数据时,CPU直接访问Cache。由于Cache的速度与CPU相当,CPU就能在零等待状态下迅速地实现数据存取。只有在Cache中不含有CPU所需的数据时,CPU才去访问内存。CPU借助于Cache,可以高效地完成内存和CPU之间的速度匹配。
[0004] 不同的Cache控制策略决定了CPU访问内存时Cache的使用方式。Cache的控制策略主要有:Strong Uncacheable(UC,不缓存)、Uncacheable(UC-,不缓存)、Write Combining(WC,写组合)、Write Through(WT,写通过)、Write Back(WB,写返回)。Write Protected(WP,写保护)。其中,UC和UC-对CPU的读写内存不做Cache;WC是把CPU的写入数据先buffer(缓存)住,然后以突发方式写入到总线,提高总的写效率;WT是CPU读取数据时,先从Cache中读取,没有命中后再从内存中读取,写的时候同时写入Cache和内存;WB是CPU只向Cache写入,并用标记加以注明,直到Cache中被写过的块要被进入的信息块取代时,才一次写入主存。例如:将显存的地址范围上使用“WC”策略,CPU能够在PCI/AGP总线上,将许多次少量的数据写入集合成一次大的数据写入,这样能够获得2.5倍以下图像传送速度的提升。
[0005] 目前,在虚拟环境下,客户操作系统要想使用Cache控制策略寄存器,就必须直接访问物理CPU中的Cache控制策略寄存器,但虚拟系统中客户操作系统往往是多个,如果让每一个客户操作系统都直接去访问物理CPU,就会出现:其中一个客户操作系统使用Cache控制策略寄存器时,即向物理Cache控制策略寄存器中写入其要使用的Cache类型,其他的客户操作系统也写入自己要使用的Cache类型,这样不但每一个客户操作系统的运行效率得不到保证,而且会出现错误,也就是说,目前客户操作系统不支持Cache策略控制机制,这对Guest OS的运行效率有很大的影响,例如:Guest OS不能把内存设置为“WC”控制策略类型,就不能提高写组合的效率。

发明内容

[0006] 本发明的实施例提供一种计算机及计算机上配置高速缓存控制策略的方法,使计算机的客户操作系统支持Cache策略控制机制,客户操作系统的运行效率由此得到极大提高。
[0007] 为解决上述技术问题,一方面,提供一种计算机,包括:
[0008] 虚拟系统平台,
[0009] 至少两个客户操作系统,安装在所述虚拟系统平台上;
[0010] 与所述客户操作系统一一对应的虚拟高速缓存控制策略寄存器;
[0011] 所述虚拟系统平台将所述客户操作系统欲配置的高速缓存控制策略类型对应的类型映射,传输给所述客户操作系统,由所述客户操作系统将所述类型映射配置给所述客户操作系统对应的虚拟高速缓存控制策略寄存器。
[0012] 优选的,上述虚拟系统平台包括:硬件平台和安装在所述硬件平台上的虚拟机管理器。
[0013] 优选的,上述硬件平台包括:与所述虚拟高速缓存控制策略寄存器对应的物理高速缓存控制策略寄存器。
[0014] 优选的,上述客户操作系统包括一配置模块,用于将高速缓存控制策略类型对应的类型映射配置给所述客户操作系统对应的虚拟高速缓存控制策略寄存器。
[0015] 优选的,上述虚拟机管理器包括:
[0016] 一拦截模块,与所述配置模块连接,用于拦截所述配置模块对所述虚拟高速缓存控制策略寄存器的配置,并获取欲配置的高速缓存控制策略类型;
[0017] 一查找模块,分别与所述拦截模块和配置模块连接,用于根据所述拦截模块获取的高速缓存控制策略类型,从所述物理高速缓存控制策略寄存器中查找高速缓存控制策略类型对应的类型映射,并将该类型映射返回至所述客户操作系统的配置模块,由所述配置模块将所述类型映射配置给所述虚拟高速缓存控制策略寄存器。
[0018] 优选的,上述虚拟高速缓存控制策略寄存器具体为:虚拟特殊模式寄存器;所述高速缓存控制策略类型对应的类型映射为:高速缓存控制策略类型索引。
[0019] 优选的,上述虚拟高速缓存控制策略寄存器具体为:虚拟存储区域类型寄存器;所述高速缓存控制策略类型对应的类型映射为:所述控制策略类型对应的机器内存地址。
[0020] 另一方面,还提供一种计算机上配置高速缓存控制策略的方法,包括:
[0021] 拦截客户操作系统对其对应的虚拟高速缓存控制策略寄存器的配置,并获取欲配置的高速缓存控制策略类型,其中,所述客户操作系统为至少两个;
[0022] 根据所述高速缓存控制策略类型,从虚拟系统平台中查找高速缓存控制策略类型对应的类型映射;
[0023] 将所述类型映射配置给所述客户操作系统对应的虚拟高速缓存控制策略寄存器。
[0024] 优选的,上述虚拟高速缓存控制策略寄存器具体为:虚拟特殊模式寄存器;所述高速缓存控制策略类型对应的类型映射为:高速缓存控制策略类型索引。
[0025] 优选的,上述虚拟高速缓存控制策略寄存器具体为:虚拟存储区域类型寄存器;所述高速缓存控制策略类型对应的类型映射为:所述控制策略类型对应的机器内存地址。
[0026] 再一方面,提供一种计算机上配置高速缓存控制策略的方法,该计算机包括:虚拟系统平台和安装在所述虚拟系统平台上的一个客户操作系统,该方法包括:
[0027] 根据所述客户操作系统欲配置的高速缓存控制策略类型,从虚拟系统平台中查找高速缓存控制策略类型对应的类型映射;
[0028] 将所述类型映射配置给所述虚拟系统平台的物理高速缓存控制策略寄存器。
[0029] 优选的,上述物理高速缓存控制策略寄存器具体为:物理特殊模式寄存器;所述高速缓存控制策略类型对应的类型映射为:高速缓存控制策略类型索引。
[0030] 优选的,上述物理高速缓存控制策略寄存器具体为:物理存储区域类型寄存器;所述高速缓存控制策略类型对应的类型映射为:所述控制策略类型对应的机器内存地址。
[0031] 上述技术方案,通过为客户操作系统分别配置虚拟高速缓存控制策略寄存器,并为高速缓存控制策略寄存器配置高速缓存控制策略类型,当客户操作系统只有一个时,也可以将高速缓存控制策略类型直接配置给硬件平台的物理高速缓存控制策略寄存器,使客户操作系统支持Cache策略控制机制,客户操作系统的运行效率由此得到极大提高。

附图说明

[0032] 图1为现有技术中计算机结构示意图;
[0033] 图2为本发明的实施例计算机结构示意图;
[0034] 图3为图2所示计算机的一具体结构示意图;
[0035] 图4为本发明的实施例计算机上配置高速缓存控制策略方法流程示意图;
[0036] 图5为图4所示流程中,虚拟机管理器从虚拟MSR中查找Cache控制策略类型的示意图;
[0037] 图6为图4所示流程中,虚拟机管理器从物理MSR中找到Cache控制策略类型,并构建该类型值所对应的表项索引示意图;
[0038] 图7为图4所示流程中,配置MTRR高速缓存控制策略的方法流程示意图;
[0039] 图8为图7所示流程中,虚拟机管理器从物理MTRR中找到真实的Cache控制策略对应的机器内存地址,并将该机器内存地址配置给客户操作系统所对应的虚拟MTRR示意图。

具体实施方式

[0040] 为使本发明的实施例要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。
[0041] 本发明的实施例针对现有虚拟环境下,客户操作系统不支持Cache控制策略,导致客户操作系统运行效率低的问题,提供一种计算机。
[0042] 如图2所示,该计算机包括:虚拟系统平台;客户操作系统,安装在所述虚拟系统平台上;以及虚拟高速缓存控制策略寄存器,所述虚拟系统平台将所述客户操作系统欲配置的高速缓存控制策略类型对应的类型映射,传输给所述客户操作系统,由所述客户操作系统将所述类型映射配置给所述虚拟高速缓存控制策略寄存器。
[0043] 上述客户操作系统可以为至少两个,虚拟高速缓存控制策略寄存器也为至少两个;每个所述客户操作系统都分别对应一个所述虚拟高速缓存控制策略寄存器,所述客户操作系统将所述类型映射配置给其对应的虚拟高速缓存控制策略寄存器。
[0044] 上述系统中,虚拟系统平台包括:硬件平台(如一台计算机,包括CPU、内存、硬盘、显卡、操作系统和显示器等)和安装在所述硬件平台上的虚拟机管理器(VMM,如VMWare软件等)。利用VMM可以在一台计算机上虚拟出若干台计算机,包括若干个客户操作系统,VMM对安装在一台计算机上的多个客户操作系统进行管理,这些客户操作系统之间互不干扰,应用程序都可以在相互隔离的操作系统上运行而互不影响。
[0045] 其中,所述硬件平台的CPU中包括:与虚拟高速缓存控制策略寄存器对应的物理高速缓存控制策略寄存器;如,物理高速缓存控制策略寄存器为物理MSR(Model Specific Register,特殊模式寄存器),则虚拟高速缓存控制策略寄存器为虚拟MSR,或者物理高速缓存控制策略寄存器为物理MTRR(Memory Type Range Register,存储区域类型寄存器),则虚拟高速缓存控制策略寄存器为虚拟MTRR。
[0046] 内存的Cache策略控制通常是操作系统所做的事情,CPU提供了一种基于页表的内存Cache控制机制PAT(Page Attribute Table,页面属性表),在CPU的物理MSRs中提供了一个IA32CR PAT MSR,该寄存器为64位的寄存器,也可以是128位的寄存器,其内容如下表所示:
[0047]
[0048] 表1
[0049] 上述表中,PA0占3位二进制位,Reserved占5位的二进制位,PA0和第3~7位的Reserved组成PAT0,PA1和第11~15位的Reserved组成PAT1,其它依次类推。PA0~PA7里的数据代表Cache控制策略类型,如下表:
[0050]Encoding(编码) Mnemonic(内存类型)
00H Uncacheable(UC)
01H Write Combining(WC)
02H Reserved*
03H Reserved*
04H Write Through(WT)
05H Write Protected(WP)
06H Write Back(WB)
07H Uncacheable(UC-)
08H~FFH Reserved*
[0051] 表2
[0052] 上述表2中,Cache控制策略类型有8种,如果是9~16种,则PA0~PA7相应地由4位二进制位表示,依次类推,Reserved相应地占4位二进制位;在有了IA32_CR_PAT MSR后,为一页选择Cache控制策略类型,是由指向该页的页表项里的PAT,PCD(Page Cache Disable)和PWT(Page Write Through)共同组成索引,当然也可以由四个或者更多表项共同组成索引,根据Cache控制策略类型的种类数而有所变化。从IA32CR PAT MSR选择一个Cache控制机制,如下表:
[0053]PAT PCD PWT PAT Entry
0 0 0 PAT0
0 0 1 PAT1
0 1 0 PAT2
0 1 1 PAT3
1 0 0 PAT4
1 0 1 PAT5
1 1 0 PAT6
1 1 1 PAT7
[0054] 表3
[0055] 而CPU提供的MTRR规定了某段范围内物理内存的Cache控制策略,用于优化CPU的数据传送性能,其结构如图8所示,即多段连续的存储区域,其中,每段存储区域可以有不同的Cache控制策略。
[0056] 如图3所示,上述客户操作系统还包括一配置模块,用于将高速缓存控制策略类型对应的类型映射配置给所述客户操作系统对应的虚拟高速缓存控制策略寄存器;
[0057] 上述虚拟机管理器包括:一拦截模块,与所述配置模块连接,用于拦截所述配置模块对所述虚拟高速缓存控制策略寄存器配置,并获取欲配置的高速缓存控制策略类型;
[0058] 如第一客户操作系统配置其对应IA32_CR_PAT MSR;拦截模块不让客户操作系统将配置的内容写入物理高速缓存控制策略寄存器中,并从中获取客户操作系统对其对应MSR配置的高速缓存控制策略类型,若该高速缓存控制策略类型索引为(PAT,PCD,PWT)=(0,1,1),对应的是PAT3中的高速缓存控制策略类型,如果虚拟IA32_CR_PAT MSR中PAT3中的值是04H,则Cache策略控制类型为WT;
[0059] 一查找模块,分别与所述拦截模块和配置模块连接,用于根据所述拦截模块获取的高速缓存控制策略类型,从所述物理高速缓存控制策略类型寄存器中查找高速缓存控制策略类型对应的类型映射,并将该类型映射返回至所述客户操作系统的配置模块,由所述配置模块将所述类型映射配置给所述虚拟高速缓存控制策略寄存器;
[0060] 该查找模块从CPU的物理IA32_CR_PAT MSR中找到一个PAT为04H的项,比如PA1中的值为04H,则会构造高速缓存控制策略类型索引(PAT,PCD,PWT)=(0,0,1),即所述高速缓存控制策略类型对应的类型映射,并将该类型映射配置给该客户操作系统对应的虚拟IA32_CR_PAT MSR。
[0061] 相应的,上述图3所示的计算机上配置MTRR的Cache控制策略的过程如下:
[0062] 第一客户操作系统配置其对应MTRR;
[0063] 拦截模块拦截客户操作系统对其虚拟MTRR的配置;
[0064] 查找模块从硬件平台的物理MTRR中,找到客户操作系统欲配置MTRR的控制策略类型对应的类型映射,即机器内存地址;
[0065] 客户操作系统的配置模块将该机器内存地址配置给该客户操作系统对应的MTRR(如图8所示)。
[0066] 如图4所示,本发明的实施例还包括一种上述图2所示计算机上,配置高速缓存控制策略的方法,包括如下步骤:
[0067] 步骤41、拦截客户操作系统对其对应的虚拟高速缓存控制策略寄存器的配置,并获取欲配置的高速缓存控制策略类型;
[0068] 具体的,客户操作系统欲配置其对应的虚拟高速缓存控制策略寄存器,虚拟机管理器(VMM)拦截客户操作系统的配置,不让客户操作系统将配置的内容写入物理高速缓存控制策略寄存器中,从中获取客户操作系统欲配置的高速缓存控制策略类型。
[0069] 步骤42、根据所述高速缓存控制策略类型,从物理高速缓存控制策略寄存器中查找高速缓存控制策略类型对应的类型映射;
[0070] 具体的,虚拟机管理器根据客户操作系统欲配置的高速缓存控制策略类型,从虚拟系统平台的物理高速缓存控制策略寄存器中,查找该类型所对应的类型映射。
[0071] 步骤43、将所述类型映射配置给所述客户操作系统对应的虚拟高速缓存控制策略寄存器;
[0072] 该步骤中,当高速缓存控制策略寄存器为MSR寄存器时,高速缓存控制策略类型对应的类型映射为:高速缓存控制策略类型索引,即高速缓存控制类型策略类型所对应的表项索引;当高速缓存控制策略寄存器为MTRR时,高速缓存控制策略类型对应的类型映射为:物理MTRR的机器内存地址。
[0073] 下面分别以MSR寄存器和MTRR寄存器为例说明,在虚拟环境下,客户操作系统如何使用Cache控制策略,提高其运行效率的。
[0074] 一.客户操作系统配置MSR的Cache控制策略的实施例
[0075] 如图5、图6所示,客户操作系统配置IA32_CR_PAT MSR寄存器的Cache控制策略的过程如下:
[0076] 步骤51、客户操作系统欲配置其对应的IA32_CR_PAT MSR;
[0077] 步骤52、虚拟机管理器拦截客户操作系统对其虚拟IA32_CR_PAT MSR的配置;
[0078] 步骤53、虚拟机管理器将其拦截到的配置内容记录到虚拟IA32_CR_PATMSR中(如图5所示),并获取客户操作系统欲配置的高速缓存控制策略类型;
[0079] 如客户操作系统欲分配其虚拟IA32_CR_PAT MSR,高速缓存控制策略类型索引为(PAT,PCD,PWT)=(0,1,1),对应的是PAT3中的高速缓存控制策略类型,则虚拟机管理器从虚拟的IA32_CR_PAT MSR中,找到该PAT3中的值如果是04H,则Cache策略控制类型为WT;
[0080] 步骤54、虚拟机管理器从虚拟机硬件平台的物理IA32_CR_PAT MSR中找到一个PAT为04H的项,比如,表1中PA1中的值为04H,则虚拟机管理器就会构造(PAT,PCD,PWT)=(0,0,1),配置给该客户操作系统对应的IA32_CR_PAT MSR中(如图6所示);
[0081] 步骤55、结束配置。
[0082] 在上述客户操作系统配置其虚拟的IA32_CR_PAT MSR过程中,由于可用的Cache控制策略类型为8种,IA32_CR_PAT MSR也有8项PAT,因此只有把真实的IA32_CR_PAT MSR的8项写入不同的Cache控制策略类型值,则总能在上述步骤54中找到一个客户操作系统需要的Cache控制策略类型。
[0083] 上述实施例的优点:虚拟机管理器为该客户操作系统分配虚拟IA32_CR_PAT MSR,客户操作系统配置其虚拟IA32_CR_PAT MSR的Cache策略类型,当客户操作系统配置其对应的IA32_CR_PAT MSR页的PAT、PCD、PWT后,VMM查找出PAT、PCD、PWT组成的索引所对应的高速缓存控制策略类型,并构建该类型值在物理IA32_CR_PAT MSR中对应的PAT、PCD、PWT索引,写入该客户操作系统对应的IA32_CR_PAT MSR的页表的机器页表项里。使客户操作系统支持基于页表的Cache控制策略,从而提高了客户操作系统的运行效率;另外,由于客户操作系统支持Cache类型控制机制,也可以避免DMA(Direct Memory Access,直接存储器存取)出错的问题,DMA是一种快速传送数据的机制,数据传递可以从适配卡到内存,从内存到适配卡或从一段内存到另一段内存,DMA与Cache的区别是存取数据不需要CPU的参与。如一段内存的Cache类型是WB,Guest OS需要把它设置为WT,以便把它作为DMA缓存,由于WB类型的内存在写的时候不直接写入内存,而是写入到Cache中,这样设备在作DMA操作时,从DMA buffer里获取的数据不是Guest OS写入的数据(写入的数据还在Cache里),从而产生错误,而采用上述方法后,不会再产生这样的错误。
[0084] 二.客户操作系统配置MTRR的Cache控制策略的实施例
[0085] MTRR规定了某段范围内物理内存的Cache控制策略,用于优化CPU的数据传送性能。因此,客户操作系统如果能够支持MTRR,则其运行效率将会得到大大地提高。
[0086] 如图7、图8所示,客户操作系统配置MTRR的Cache控制策略的过程如下:
[0087] 步骤71、虚拟机管理器对客户操作系统的内存进行连续分配;
[0088] 步骤72、客户操作系统配置其对应的虚拟MTRR;
[0089] 步骤73、虚拟机管理器拦截客户操作系统对其虚拟MTRR的配置;
[0090] 步骤74、虚拟机管理器从硬件平台的物理MTRR中,找到客户操作系统欲配置MTRR的控制策略类型对应的类型映射,即机器内存地址;
[0091] 步骤75、虚拟机管理器将其找到的机器内存地址,配置给客户操作系统对应的虚拟MTRR(如图8所示);
[0092] 步骤76、配置结束。
[0093] 上述实施例中,由于MTRR是按段配置物理内存的类型,因此虚拟机管理器在给客户操作系统分配使用的内存也是连续的段(如图8所示)。该实施例的优点:虚拟机管理器让客户操作系统知道MTRR的存在,并且由虚拟机管理器拦截客户操作系统对MTRR的访问,由于客户操作系统看到的是客户操作系统的MTRR的虚拟地址,当客户操作系统配置MTRR虚拟地址的控制策略类型的时候,由虚拟机管理器找到对应的物理机器内存地址,并把机器内存地址的Cache类型配置给客户操作系统对应的虚拟MTRR。
[0094] 另外,在上述客户操作系统配置MSR的Cache控制策略的实施例,和客户操作系统配置MTRR的Cache控制策略的实施例中,如果计算机中只有一个客户操作系统,则虚拟机管理器可不为该客户操作系统分配虚拟MSR或者虚拟MTRR,而将Cache控制策略类型所对应的表项索引或者机器内存地址,直接写入硬件平台的物理MSR或者MTRR中,具体方法包括:
[0095] 步骤91、根据客户操作系统欲配置的高速缓存控制策略类型,从虚拟系统平台的物理高速缓存控制策略寄存器中查找高速缓存控制策略类型对应的类型映射;
[0096] 步骤92、将该类型映射配置给所述物理高速缓存控制策略寄存器。
[0097] 如,客户操作系统配置其页表的表项(PAT,PCD,PWT)=(0,1,1),对应的是PAT3中的Cache策略控制类型,则该PAT3中的值如果是04H,则Cache策略控制类型为WT,而在物理MSR中PAT1中的值为04H,则构建(PAT,PCD,PWT)=(0,0,1),直接写入该物理IA32_CR_PAT MSR中,这里高速缓存控制策略类型对应的类型映射为:IA32_CR_PAT MSR的页表表项索引。
[0098] 同样,客户操作系统配置其MTRR,虚拟机管理器从硬件平台的物理MTRR中,找到客户操作系统欲配置MTRR的控制策略类型对应的机器内存地址,直接配置给该MTRR。
[0099] 综上所述,本发明的实施例通过为客户操作系统分配虚拟的高速缓存控制策略寄存器,并为客户操作系统配置相应的Cache控制策略,使客户操作系统支持Cache控制策略,在虚拟环境下,使客户操作系统的运行效率得到极大地提高,同时由于客户操作系统支持Cache控制策略,设备在作DMA操作时,也可避免出现DMA错误。
[0100] 以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明实施例所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。