具有载入扩展页表指令的处理器本申请案主张申请日为2015年5月11日的美国专利第62/159,776号临时申请案的
优先权。该优先权案的全文并入本案以供参考。
技术领域
本发明关于由处理器执行的地址转译,特别是关于一载入扩展页表(extended
pagetable,EPT)指令,此指令可以在启动虚拟化(virtualization)时执行,借以直接将客
户端实体地址转换为真的实体地址。
背景技术
现代处理器支持虚拟存储器功能。虚拟存储器系统是将由程序使用的虚拟地址
(也称为线性地址)映射或转译至由硬件使用的实体地址以对存储器寻址。透过虚拟存储
器,可以隐藏物理存储器的零碎状况(fragmentation),以利程序重定位(relocation)的进
行,并使程序可以看到相较于比实际可取用的物理存储器更大的地址空间。这些优点尤其
有利于现今由多程序或程序支持处理器时间共享(time-sharing)的系统。
操作系统(operationgsystem,OS)是透过产生并维护系统存储器转译表来实现
虚拟存储器系统,在分页虚拟存储器系统中,系统存储器转译表通常被称为的页表(page
table)。页表可将虚拟地址映射至与处理器连接的系统存储器的实体地址中。此转译表可
采取阶层表单的形式,其中部分表单是将虚拟地址映射至中介表单的地址。程序利用虚拟
地址来存取存储器的时候,会依序存取转译表来完成由虚拟地址转译至相对应实体位置的
程序,这个程序通常被称为页表寻访(pagetablewalk)或表寻访(tablewalk)。
许多处理器也会支持虚拟机扩展(virtualmachineextensions,VMX)使处理器
硬件能透过虚拟化适用于多个软件环境。如同公元2015年1月公布的64与IA-32架
构软件开发手册的卷3C:系统程序指南(本文称为“系统程序指南”)的第28章所述,
此架构包含有两个支持虚拟机扩展作业所需的地址转译的特征,即虚拟处理器标示
(virtual-processoridentifiers,VPIDs)与扩展页表(extendedpage-table,EPT)机制。
此指南的全文是并入本案以供参考。虚拟机处理器标示提供虚拟地址转译所需的机制,而
扩展页表的机制则是定义一地址转译层以扩大虚拟地址的转译。超监视器(hypervisor)或
具有类似功能者会虚拟化系统资源使多个独立的操作系统共享硬件资源。在执行虚拟存储
器系统时,操作系统并不会察觉到它的页表也被虚拟化,而操作系统的“实体地址”被视为
“客户端(guest)”的实体地址,其需要透过一组扩展页表页结构(EPTpagingstructure)
进一步转译以产生可用以存取系统存储器的“真实的(true)”实体地址。
在虚拟化启动时,EPT机制是套入(nested)一般的表寻访程序,用以将来自页表的
各个客户端实体地址转换为相对应的真实的实体地址,以存取系统存储器内真正的相对应
页表。此EPT机制包含一EPT表寻访引擎,透过存取EPT页机构来将客户端实体地址转换为真
实的实体地址,以补足表寻访程序。如此,即可在一虚拟化系统架构的各个表寻访程序的过
程中,执行多个EPT转换。
传统上,支持虚拟机扩展使处理器硬件透过虚拟化而适用于多个软件环境的处理
器,通常包含EPT转译机制,用以将虚拟地址转换至实体地址以存取系统存储器。不过,传统
的处理器并不具有一个独立于前述标准转译程序外,而可以将客户端实体地址直接转换至
真实的实体地址的机制。
发明内容
本发明的一实施例提供一种处理器,此处理器包括一个于虚拟化程序
(virtualization)启动的扩展页表(extendedpagetable,EPT)转译机制与一载入EPT指
令。载入EPT指令是于该处理器执行该载入EPT指令时,直接调用(invoke)该EPT转译机制,
以直接将所提供的一客户端实体地址转译为一相对应的真实的实体地址。此EPT转译机制
包括一EPT页结构(pagingstructure)与一EPT表寻访引擎(tablewalkengine)。EPT页结
构是于该EPT转译机制启动时产生并储存于该系统存储器。EPT表寻访引擎是用以存取该
EPT页结构以将该客户端实体地址转换为该相对应的真实的实体地址。EPT表寻访引擎于执
行该载入EPT指令时,可执行相关检验(check)以触发EPT误配置(misconfiguration)与EPT
违反(violation)。
本发明的一实施例还提供一种操作一处理器的方法。此方法包括在虚拟化程序
中,启动一EPT转译机制,以及执行一载入EPT指令,其包括直接调用EPT转译机制,以直接将
所提供的一客户端实体地址转译为一相对应的真实的实体地址。
本发明的一实施例还提供一种计算机程序产品,编码于至少一非瞬时计算机可使
用媒介内,以供一计算机装置使用。此计算机程序产品包括实现于前述媒介的计算机可使
用程序代码,以指定一处理器,此计算机可使用程序代码包括第一程序代码与第二程序代
码。第一程序代码是指定一EPT转译机制,此EPT转译机制是于虚拟化程序启动。第二程序代
码是指定一载入EPT指令,处理器执行此载入EPT指令时,会直接调用EPT转译机制,以直接
将所提供的一客户端实体地址转译为一相对应的真实的实体地址。
附图说明
图1为本发明一实施例的具有一微码单元的处理器的方块示意图,而此微码单元
为纳入一载入扩展页表(EPT)指令;
图2为一方块示意图,显示由图1的处理器依据适当的虚拟化程序所实现的虚拟化
系统;
图3为一方块示意图,显示依据本发明一实施例的载入EPT指令的操作流程,在此
流程中,载入EPT指令(LD_EPTinstruction)是透过直接调用(invoke)EPT表寻访引擎来
利用图1的EPT页结构,来达到直接调用EPT转译机制以直接执行实体地址转译的目的;
图4显示一用于虚拟地址转译的PAE页结构,在虚拟化操作启动图1的EPT转译机制
的同时,此虚拟地址转译会使用PAE页面来转译出一个4K字节(Byte)的页面;以及
图5为本发明一实施例的一微码载入例程的流程图,此微码载入例程可以用来由
系统存储器载入图4的PDPTE缓存器。
附图标记:
100:处理器;102:指令高速缓存;
104:指令转译器;106:微码;
114:缓存器;112:执行单元;
116:存储器子系统;118:高速缓存;
120:总线接口单元;124:表寻访引擎;
126:EPT表寻访引擎;122:系统存储器;
128:转译表;130:EPT页结构;
132:LD_EPT指令;134:EPT转译机制;
200:虚拟化系统;202、204、206:虚拟机器;
208:超监视器;304:加法器;
306:EPT指针;308:EPT第四层页映射(PML4)表;
310:EPT页目录指针(PDPT)表;312:EPT页目录(PD)表;
314:EPT页表;400:PAE页结构;
402:页目录指针表项目(PDPTE)缓存器;404:页目录;
406:页表;408:页面;
410:虚拟地址;412:实体地址。
具体实施方式
本文所述的处理器是支持虚拟化操作,而此虚拟化操作是包括一EPT转译机制来
将一“客户端(guest)”实体地址转换为一“真实的(true)”实体地址以存取系统存储器。在
虚拟化操作不起作用或是尚未被启动的情况下,一虚拟存储器系统会启动处理器上所执行
的转换程序,来将虚拟地址直接转换为实体地址,以正确地存取系统存储器内想要存取的
位置。不过,在虚拟化操作被启动的情况下,各个操作系统(operatingsystem,OS)或各个
虚拟机器(virtualmachine,VM)的一个或多个程序会在一客户端环境(guest
environment)执行。在虚拟化操作的过程中,会使用一个虚拟化程序(virtualization
scheme)来有效地虚拟化存储器系统,如此,各个操作系统或虚拟机器就不会意识到它并不
是直接存取系统存储器。相反地,虚拟存储器系统会产生“客户端”实体地址,此地址无法正
确地存取系统存储器内想要存取的位置。各个客户端实体地址必须进一步转换或复位向至
相对应的真实的实体地址,方能正确地存取系统存储器内的位置。
本文所述的处理器是支持一EPT转译机制,而此EPT转译机制是于虚拟化操作的过
程中嵌入虚拟存储器系统内,以将客户端实体地址转换为真实的实体地址。如本文所述,此
处理器还纳入一载入EPT指令,来实现由客户端实体地址转换至对应真实实体地址的直接
转换程序,此功能并不存在于传统处理器。此载入EPT指令可直接调用(invoke)EPT转译机
制来执行正确的转换程序。此载入EPT指令提供一便利的机制,能够在处理器需要进行转换
时,直接转换实体地址。举例来说,此载入EPT指令可支持实体地址扩展(physicaladdress
extension,PAE)页面模式,而如本文所述,可改善EPT寻址模式下的地址转译。其它任何处
理器需要将客户端实体地址直接转换为相对应的真实的实体地址的状态,也为本文所述的
处理器所支持。
图1是本发明一实施例的具有一微码单元106的处理器100的方块示意图,而此微
码单元106是纳入一载入扩展页表(EPT)指令。此处理器100包括一指令高速缓存102,一指
令转译器104,执行单元112,架构缓存器114,一存储器子系统116,一高速缓存阶层结构
(hierarchy)118与一总线接口单元120。指令转译器104可包括前述微码单元106,不过本发
明并不限于此种配置方式。其它可能的功能方块(未图标)包括分支预测器,一重排单元,一
重排缓冲器,保留站,一指令排程器(instructionscheduler)与数据预取单元(data
prefetchunit)。在一实施例中,此微处理器100具有一非循序执行微架构(out-of-order
executionmicroarchitecture),指令可以不依照程序顺序发布执行。在一实施例中,此微
处理器100具有一超纯量微架构(superscalarmicroarchitecture),能够在单一个时钟周
期内发布多个指令至执行单元112以执行。在一实施例中,此微处理器100实质上是符合x86
指令集架构。不过,本发明也可用于其它指令集架构,而不限于x86指令集架构。
指令高速缓存102是透过总线接口120储存由系统存储器122取得的架构指令。转
译后备缓冲器(translationlook-asidebuffer,TLB)(未图示)是关联于这些储存地址转
译以供指令使用的指令高速缓存102。在一实施例中,指令转译器104是由指令高速缓存102
取得架构指令并将其转译为微处理器100的微架构的微指令集的微指令。执行单元112执行
微指令以实现此组架构指令所欲执行的功能。
执行单元112接收来自架构缓存器114(或是重排缓冲器或一转送总线)的来源操
作数(sourceoperand)。这些操作数是由系统存储器122经由存储器子系统116载入缓存器
114。存储器子系统116会将数据写入高速缓存阶层结构118或从高速缓存阶层结构118将数
据读出。举例来说,此高速缓存阶层结构118可以是第一层数据高速缓存、第二层高速缓存、
第三层高速缓存等等。各个高速缓存可具有一相关联的转译后备缓冲器。若是在高速缓存
阶层结构118的最末层高速缓存发生高速缓存失误(cachemiss),总线接口单元120就会针
对数据或指令高速缓存线(cacheline)发出请求,而从系统存储器122取得高速缓存线
(cacheline)。
存储器子系统116包括一表寻访(tablewalk,TW)引擎124,可执行地址转译的表寻
访以产生虚拟至实体地址间的地址转换。表寻访引擎124存取系统存储器122内的转译表
128(例如x86指令集架构下的页结构)以执行页面的表寻访(pagetablewalk)以产生虚拟
至实体间的地址转换。此地址转换在后续步骤中会载入处理器100的转译后备缓冲器内。这
些转译表128可包括一转译表阶层结构中,映射至页面的表(例如x86指令集架构的页表
(pagetable))或是参照其它转译表的表(例如x86指令集架构的页目录(page
directory)、页目录指针表(page-directory-pointertable)、PML4表等等)。
在本文所述的实施例中,处理器100是支持虚拟化操作,例如可使处理器硬件虚拟
化的虚拟机器扩展(如x86指令集架构的VMX)。当虚拟化操作启动时,处理器100会启动存储
器子系统116内的EPT表寻访引擎126的操作,以利于实体地址转译。此处理器100并会在系
统存储器122内产生一扩展页表(EPT)页结构130(依据x86指令集架构的说法)将虚拟化的
实体地址,也称为客户端实体地址(guestphysicaladdress),映射至真实的实体地址(例
如x86指令集架构中所称的主机端实体地址(hostphysicaladdress))。此EPT表寻访引擎
126存取EPT页结构130以执行EPT实体地址转译。当虚拟化操作启动时,表寻访引擎124会与
EPT表寻访引擎126合作来存取转译表128与EPT页结构130,借以将虚拟地址转换为相对应
的真实的实体地址以存取系统存储器122中被指定的存储器位置,这部分在后续章节会有
进一步描述。EPT表寻访引擎126与EPT页结构130是一并被称为EPT转译机制134。
微码单元106可包括一用以储存微码或微码例程(microcoderoutine)的微码存
储器(例如只读存储器(readonlymemory,ROM)),以及一用以从微码存储器取得微码指令
的微序列器(microsequencer)(未图示)。在一实施例中,前述微码指令就是微指令
(microinstruction);而在另一实施例中,微码指令则是转译自微指令。微码可实现某些架
构指令,例如特别复杂的架构指令。微码包括微码例程或其类似者,以执行处理器100的多
种不同功能。在本文所述的配置中,微指令包括一载入EPT指令,此指令在微码单元106中表
示为符号“LD_EPT”。如同本文所述,此LD_EPT指令132直接存取EPT转译机制134,而通常只
有表寻访引擎124会直接存取此转译机制。特别是,此LD_EPT指令132会直接调用EPT表寻访
引擎126来存取EPT页结构以直接将所提供的客户端实体地址转换为相对应的真实的实体
地址。
图2是一方块示意图,显示由处理器100依据适当的虚拟化程序所实现的虚拟化系
统200。此处理器100是耦接至系统存储器122,例如可透过前文所述的总线接口单元120。此
处理器100是支持虚拟机器扩展(VMX)或其它相类似功能,而能启动虚拟化程序
(virtualizationsheme),借此,处理器100即可支持硬件资源的虚拟化。超监视器
(hypervisor)208是操作为虚拟机监视器(virtualmachinemonitor,VMM),其作为一个或
多N个虚拟机器(virtualmachine)的主机,这些虚拟机器可表示为VM1202,VM2204…VMN
206,N可为零或其它正整数。此超监视器208具有对于处理器100的完全控制,而能启动对于
系统资源的分享存取,例如对于处理器100,系统存储器122与其它以此处理器100为接口的
硬件资源(例如键盘、视讯、鼠标、图像、储存装置、输入/输出端口等)的分享存取。各个虚拟
机器202-206均为客户端软件环境,此客户端软件环境可支持相对应的操作系统与应用软
件,并可单独操作。超监视器208管理各个虚拟机器202-206对于系统资源的存取。处理器
100的微码单元106结合微码指令、微码例程与其它类似者,以促进虚拟化的操作。
当虚拟化操作启动时,处理器100启动EPT表寻访引擎126的操作并在系统存储器
122内产生EPT页结构130。一般而言,为了执行虚拟化,处理器会启动一EPT转译机制134来
执行实体地址转译。微码单元106并具有此LD_EPT指令132,此指令经执行,可直接调用EPT
转译机制134来将所提供的客户端实体地址转换为相对应的真实的实体地址。
图3是一方块示意图,显示依据本发明一实施例的载入EPT(LD_EPT)指令132的操
作流程。在此流程中,LD_EPT指令132是透过直接调用EPT表寻访引擎126来利用EPT页结构
130,来达到直接调用EPT转译机制134以直接执行实体地址转译的目的。载入EPT指令132是
由相对应的编码语法(codesyntax)来指定。在一实施例中,此语法包括符号LD_EPT,而其
后面有储存操作数供指令使用的第一与第二缓存器R1,R2。第一缓存器R1是作为一目的缓
存器(destinationregister)以保存指令执行结果,而第二缓存器R2是作为一来源缓存器
(sourceregister)以储存输入操作数。客户端实体地址GPA,即前述输入操作数,是载入来
源缓存器R2,而当LD_EPT指令132执行时,EPT表寻访引擎126会与EPT页结构130合作以产生
一相对应的真实的实体地址TPA并将其载入目的缓存器R1。
在一实施例中,此EPT页结构130包括一EPT指针(EPTP)306,其指向一EPT第四层页
映射(PML4)表308。客户端实体地址GPA的第一部分为来自来源缓存器R2的一PML4值,此
PML4值是作为一偏移量(offset)加入EPT指针306,借以从EPTPML4表308中取得一PML4项
目(PML4E)。图中显示有一系列的加法器304来执行加法功能。PML4项目是指向一EPT页目录
指针(PDPT)表310。客户端实体地址的一第二部分是一导向指针(directorpointer)DIR
PTR,此指针是加入PML4项目,借以从EPTPDPT表310中取得一EPTPDPT项目,此PDPT项目是
指向一EPT页目录(PD)表312。客户端实体地址的一第三部分是一目录指针(directory
pointer)DIR,此指针是加入PDPT项目,借以从EPT页目录表312中取得一EPT页目录项目
(PDE),此页目录项目PDE是指向一EPT页表(PT)314。客户端实体地址的一第四部分则是一
表指针TABLE,此指针是加入页目录项目,借以从EPT页表314中取得一EPT页表项目(PTE)。
此客户端实体地址的一第五部分是一偏移值OFFSET,此数值是加入页表项目PTE,借以形成
真实的实体地址TPA并载入目的缓存器R1。
在EPT转译机制134的执行过程中(包括由LD_EPT指令312所调用的部分),EPT表寻
访引擎126会侦测EPT误配置(misconfiguration)与EPT违反(violation)。EPT误配置通常
是指EPT页结构130的某些位元内存在错误(error),EPT违反则会在使用客户端实体地址进
行存取但转译过程并未造成EPT误配置的情况下发生。举例来说,在客户端实体地址的转译
过程碰到未出现的EPT页结构项目,就会产生EPT违反。在此情况下,此直接调用EPT转译机
制134的LD_EPT指令132会执行相关的检验(check)以产生并指出EPT误配置与EPT违反。
图4显示一用于虚拟地址转译的PAE页结构400,用以在虚拟化操作启动EPT转译机
制134的同时,使用PAE分页来转译出一个页面408(例如4K字节(Byte)的页面)。虚拟机器,
例如虚拟化系统200的虚拟机器VM1202,可针对一给定配置选择执行PAE页面。可以理解的
是,不同的地址转译机制可定义为具有不同的页结构。此PAE页结构400使用一组页目录指
针表项目(PDPTE)缓存器402、一页目录404、一页表406与一页面408来将一虚拟地址
(virtualaddress,VA)410转换为一实体地址(physicaladdress,PA)412。在一实施例中,
一MOV指令被执行,而将一指向PDPTE缓存器402的基底的指针PTR载入控制缓存器CR3。此
MOV指令会使微码单元106执行一微码例程,而将一PAE指针值从系统存储器122载入PDPTE
缓存器402。在虚拟化操作不起作用的时候,此指针PTR为真实的实体地址,或表示为TPA_
PTR,而使PAE指针值从系统存储器122直接载入PDPTE缓存器402。也就是说,在使用虚拟化
操作时,此提供的指针PTR为能够从系统存储器122正确对PAE指针值寻址的真实的实体地
址。
不过,在虚拟化操作启动时,此指针PTR就不是真实的实体地址,而是客户端的实
体地址,或表示为GPR_PTR。此客户端实体地址必须先转换为真实的实体地址,借以从系统
存储器122内的正确位置适当地存取PAE指针值。LD_EPT指令132可透过直接调用EPT转译机
制134来将客户端实体地址直接转换为真实的实体地址以存取系统存储器122内的正确位
置,因而有利于此程序的执行。
需要注意的是,在虚拟化操作启动时,各个目录/表402,404,406与408在PAE页面
模式下的输出值也会是客户端实体地址。各个PAE表的GPA输出会透过EPT转译机制134的使
用,转换为相对应的真实的实体地址。EPT转译机制134可使实体地址412成为存取系统存储
器122所需的真实的实体地址。
在PAE指针值适当地载入PDPTE缓存器402后,PAE转换机制就会利用PAE页结构将
虚拟地址VA410转换为实体地址PA412。在转换过程中,虚拟地址VA410的第一部分会是
一目录指针(DP),此目录指针会从这些PDPTE缓存器402之一选择一个相对应的PDPTE值。此
选定的PDPTE值是由PDPTE缓存器402输出,并经EPT转译机制134转换为一指向页目录404基
底(base)的实体地址。虚拟地址410的第二部分会是一目录值DIR,此目录值会从页目录404
选择一PDE值。此PDE值会由EPT转译机制134转换为一指向页表406基底的实体地址值。虚拟
地址410的第三部分会是数值TABLE,此数值TABLE会从页表406中选择一PTE值,而此PTE值
是经EPT转译机制134转换为一指向页面408基底的实体地址值。虚拟地址410的第四部分会
是一偏移值OFFSET,此数值会从页面408选择一客户端实体地址值,而此数值是经EPT转译
机制134转换为实体地址PA412。此实体地址412即为虚拟地址410欲转换的值。
图5是本发明一实施例的一微码载入例程的流程图,此例程可用以将一数值由系
统存储器122载入PDPTE缓存器402。如前述,MOV指令会将指向PDPTE缓存器402基底的指针
PTR载入控制缓存器CR3,此指令并会使微码单元106执行一微码载入例程而将一PAE指针值
从系统存储器122载入PDPTE缓存器402。在步骤502中,MOVTO指令会将指针PTR值移动至适
当的目的缓存器,即缓存器R2。此PTR值可位于另一个缓存器,或可由特殊的指令来移动。在
此,此PTR值可为一真实的实体地址指针(TPT_PTR,当虚拟化操作尚未启动),或可为一客户
端实体地址指针(GPT_PTR,当虚拟化操作被启动)。在下一个步骤504中会检查PTR值以确认
虚拟化操作(virtualiztion,VIRT)是否被启动,此虚拟化操作可由一EPT参数或其它能表
示虚拟化程序的操作的参数来表示。在虚拟化操作并未启动时,EPT就不会启动,而指针PTR
就会是真实的实体地址TPA_PTR,而能使PAE指针值直接载入PDPTR缓存器402。在此情况下,
流程会直接前进至步骤506以直接载入PAE指针值。
在步骤506中,使用LD_PHY指令来将TPA_PTR值由缓存器R2载入缓存器R1。此LD_
PHY指令包括一第三操作数,此操作数是来源缓存器R2所提供源值的一偏移量。在第一个指
令集中,偏移量呈现为零(0)乘上一预设偏移值OFF(其中米字“*”表示乘法)。因此,此第一
LD_PHY指令会使系统存储器122内由缓存器R2内的真实的实体地址所寻址的位置的内容被
载入缓存器R1。下一个指令,即CALL_CHK_PDPTE指令,会检验由系统存储器122载入缓存器
R1的数值的正确与否,以判断其可否作为PDPTE缓存器402的一PDPTE值。若是不正确,此操
作中止并执行一错误例程(errorroutine)。反之,若是缓存器R1内的数值正确,此操作程
序会前进至下一个指令,即MOVTOPDPTE0,R1指令,使缓存器R1的内容移动至PDPTE缓存器
402的第一位置PDPTE0。在位置名称末端的“0”(例如PDPTE0末端的“0”),表示PDPTE缓存器
402的第一连续位置。
下一个指令集与此类似,除了其中用于LD_PHY指令的偏移量为数值一(1)乘上偏
移值OFF,表示为(LD_PHYR1,R2,1*OFF)。在此情况下,缓存器R2的指针值会加上偏移值
OFF,而储存于缓存器R1的结果会作为系统存储器122的真实的实体地址。OFF的数值是一任
意值,用于此特殊配置并且通常会指向系统存储器122内下一个载入PDPTE缓存器402的存
储器位置。在一实施例中,举例来说,数值OFF可代表8个位,不过,本发明并不限于此。与前
述指令集类似,系统存储器122的下一个数值是首先载入缓存器R1,然后利用指令CALL_
CHK_PDPTE检验其是否正确。若是正确,此数值就会由缓存器R1移动至PDPTE缓存器402的下
一个位置,表示为PDPTE1。在位置名称末端的“1”,如PDPTE1,表示PDPTE缓存器402的第二连
续位置。
基本上,这些指令会再重复二次,分别配合2*OFF与3*OFF的偏移量,从系统存储器
122中将后续两个PAE指针值分别载入PDPTE缓存器402的第三与第四连续位置,即PDPTE2与
PDPTE3。在这些数值载入PDPTE缓存器402后,此操作流程随即结束。
请回到步骤504,若是虚拟化操作被启动,缓存器R2内的PTR值就不会是真实的实
体地址,而会是一客户端实体地址。若是客户端实体地址用于步骤506的操作,它就会指向
系统存储器122内不正确的位置而造成操作错误。在此情况下,此操作流程会改为前进至步
骤508,在此步骤中,首先执行LD_EPT指令来将储存于缓存器R2的客户端实体地址指针GPA_
PTR转换为真实的实体地址指针TPA_PTR并载入缓存器R1。如前述,LD_EPT指令会直接调用
EPT转译机制(即使用EPT表寻访引擎126来存取EPT页结构130)来将客户端实体地址转换为
真实的实体地址。在此情况下,来源缓存器就会是保留GPA_PTR的缓存器R2,而转换出的相
对应的真实的实体地址指针TPA_PTR会载入目的缓存器R1。
在实体地址指针转换为真实的实体地址PTR并载入缓存器R1后,此流程会前进至
下一个步骤510来将TPA_PTR传送至缓存器R2。接下来,操作流程会前进至步骤506来将系统
存储器122的四个连续值载入PDPTE缓存器402的四个连续位置,而这四个连续位置是始于
由缓存器R2内的真实的实体地址指针TPA_PTR所指向的位置。在将这些数值载入PDPTE缓存
器402后,此操作流程随即结束。
LD_EPT指令是有利于客户端实体地址需要被直接转换为真实的实体地址以正确
存取系统存储器122的情形。而本文所设定的PAE页面模式即为LD_EPT指令有利于直接进行
实体地址转换的情形。虽然如此,处理器100还是可以随时在任何需要执行直接实体地址转
译的其它功能中,使用LD_EPT指令。
虽然本文所述的实施例是针对x86指令集架构,不过此载入EPT指令或其类似形式
亦可适用于其它指令集架构中,例如ARM、MIPS或Sun指令集架构。本文所述的载入EPT指令
当可用于任何支持虚拟化程序的指令集架构。惟以上所述者,仅为本发明实施例而已,当不
能以此限定本发明实施的范围,即大凡依本发明申请专利范围及发明说明内容所作的简单
的等效变化与修饰,皆仍属本发明专利涵盖的范围内。此处描述的装置与方法的实施例可
被包括于一半导体知识产权核心,例如一微处理核心(如以硬件描述语言的实施方式)并且
透过集成电路的制作转换为硬件。此外,本文所描述的装置与方法亦可包括硬件与软件的
结合。因此,本文所述的任何实施例,并非用以限定本发明的范围。此外,本发明可应用于一
般通用计算机的微处理器装置。最后,所属技术领域具有通常知识者利用本发明所揭露的
观念与实施例作为基础,来设计并调整出不同的结构已达成相同的目的,亦不超出本发明
的范围。
通过以上具体实施例的详述,是希望能更加清楚描述本发明的特征与精神,而并
非以上述所揭露的具体实施例来对本发明的范畴加以限制。相反地,其目的是希望能涵盖
各种改变及具相等性的安排于本发明所欲申请的专利范围的范畴内。