具有载入扩展页表指令的处理器的制造方法【专利说明】[00011本申请案主张申请日为2015年5月11日的美国专利第62/159,776号临时申请案的优先权。该优先权案的全文并入本案以供参考。
技术领域:
[0002]本发明关于由处理器执行的地址转译,特别是关于一载入扩展页表(extendedpagetable,EPT)指令,此指令可以在启动虚拟化(virtualization)时执行,借以直接将客户端实体地址转换为真的实体地址。【
背景技术:
】[0003]现代处理器支持虚拟存储器功能。虚拟存储器系统是将由程序使用的虚拟地址(也称为线性地址)映射或转译至由硬件使用的实体地址以对存储器寻址。透过虚拟存储器,可以隐藏物理存储器的零碎状况(fragmentation),以利程序重定位(relocation)的进行,并使程序可以看到相较于比实际可取用的物理存储器更大的地址空间。这些优点尤其有利于现今由多程序或程序支持处理器时间共享(time-sharing)的系统。[0004]操作系统(operationgsystem,0S)是透过产生并维护系统存储器转译表来实现虚拟存储器系统,在分页虚拟存储器系统中,系统存储器转译表通常被称为的页表(pagetable)。页表可将虚拟地址映射至与处理器连接的系统存储器的实体地址中。此转译表可采取阶层表单的形式,其中部分表单是将虚拟地址映射至中介表单的地址。程序利用虚拟地址来存取存储器的时候,会依序存取转译表来完成由虚拟地址转译至相对应实体位置的程序,这个程序通常被称为页表寻访(pagetablewalk)或表寻访(tablewalk)。[0005]许多处理器也会支持虚拟机扩展(virtualmachineextensions,VMX)使处理器硬件能透过虚拟化适用于多个软件环境。如同公元2015年1月公布的Int_el·?64与IA-32架构软件开发手册的卷3C:系统程序指南(本文称为"Intel?系统程序指南")的第28章所述,此架构包含有两个支持虚拟机扩展作业所需的地址转译的特征,即虚拟处理器标示(virtual-processoridentifiers,VPIDs)与扩展页表(extendedpage-table,EPT)机制。此指南的全文是并入本案以供参考。虚拟机处理器标示提供虚拟地址转译所需的机制,而扩展页表的机制则是定义一地址转译层以扩大虚拟地址的转译。超监视器(hypervisor)或具有类似功能者会虚拟化系统资源使多个独立的操作系统共享硬件资源。在执行虚拟存储器系统时,操作系统并不会察觉到它的页表也被虚拟化,而操作系统的"实体地址"被视为"客户端(guest)"的实体地址,其需要透过一组扩展页表页结构(EPTpagingstructure)进一步转译以产生可用以存取系统存储器的"真实的(true)"实体地址。[0006]在虚拟化启动时,EPT机制是套入(nested)-般的表寻访程序,用以将来自页表的各个客户端实体地址转换为相对应的真实的实体地址,以存取系统存储器内真正的相对应页表。此EPT机制包含一EPT表寻访引擎,透过存取EPT页机构来将客户端实体地址转换为真实的实体地址,以补足表寻访程序。如此,即可在一虚拟化系统架构的各个表寻访程序的过程中,执行多个EPT转换。[0007]传统上,支持虚拟机扩展使处理器硬件透过虚拟化而适用于多个软件环境的处理器,通常包含EPT转译机制,用以将虚拟地址转换至实体地址以存取系统存储器。不过,传统的处理器并不具有一个独立于前述标准转译程序外,而可以将客户端实体地址直接转换至真实的实体地址的机制。【
发明内容】[0008]本发明的一实施例提供一种处理器,此处理器包括一个于虚拟化程序(virtualization)启动的扩展页表(extendedpagetable,EPT)转译机制与一载入EPT指令。载入EPT指令是于该处理器执行该载入EPT指令时,直接调用(invoke)该EPT转译机制,以直接将所提供的一客户端实体地址转译为一相对应的真实的实体地址。此EPT转译机制包括一EPT页结构(pagingstructure)与一EPT表寻访引擎(tablewalkengine)eEPT页结构是于该EPT转译机制启动时产生并储存于该系统存储器。EPT表寻访引擎是用以存取该EPT页结构以将该客户端实体地址转换为该相对应的真实的实体地址。EPT表寻访引擎于执行该载入EPT指令时,可执行相关检验(check)以触发EPT误配置(misconfiguration;^EPT违反(violation)〇[0009]本发明的一实施例还提供一种操作一处理器的方法。此方法包括在虚拟化程序中,启动一EPT转译机制,以及执行一载入EPT指令,其包括直接调用EPT转译机制,以直接将所提供的一客户端实体地址转译为一相对应的真实的实体地址。[0010]本发明的一实施例还提供一种计算机程序产品,编码于至少一非瞬时计算机可使用媒介内,以供一计算机装置使用。此计算机程序产品包括实现于前述媒介的计算机可使用程序代码,以指定一处理器,此计算机可使用程序代码包括第一程序代码与第二程序代码。第一程序代码是指定一EPT转译机制,此EPT转译机制是于虚拟化程序启动。第二程序代码是指定一载入EPT指令,处理器执行此载入EPT指令时,会直接调用EPT转译机制,以直接将所提供的一客户端实体地址转译为一相对应的真实的实体地址。【附图说明】[0011]图1为本发明一实施例的具有一微码单元的处理器的方块示意图,而此微码单元为纳入一载入扩展页表(EPT)指令;[0012]图2为一方块示意图,显示由图1的处理器依据适当的虚拟化程序所实现的虚拟化系统;[0013]图3为一方块示意图,显示依据本发明一实施例的载入EPT指令的操作流程,在此流程中,载入EPT指令(LD_EPTinstruction)是透过直接调用(invoke)EPT表寻访引擎来利用图1的EPT页结构,来达到直接调用EPT转译机制以直接执行实体地址转译的目的;[0014]图4显示一用于虚拟地址转译的PAE页结构,在虚拟化操作启动图1的EPT转译机制的同时,此虚拟地址转译会使用PAE页面来转译出一个4K字节(Byte)的页面;以及[0015]图5为本发明一实施例的一微码载入例程的流程图,此微码载入例程可以用来由系统存储器载入图4的Η)ΡΤΕ缓存器。[0016]附图标记:[0017]100:处理器;102:指令高速缓存;[0018]104:指令转译器;106:微码;[0019]114:缓存器;112:执行单元;[0020]116:存储器子系统;118:高速缓存;[0021]120:总线接口单元;124:表寻访引擎;[0022]126:EPT表寻访引擎;122:系统存储器;[0023]128:转译表;130:EPT页结构;[0024]132:LD_EPT指令;134:EPT转译机制;[0025]200:虚拟化系统;202、204、206:虚拟机器;[0026]208:超监视器;304:加法器;[0027]306:EPT指针;308:EPT第四层页映射(PML4)表;[0028]310:EPT页目录指针(PDPT)表;312:EPT页目录(PD)表;[0029]314:EPT页表;400:PAE页结构;[0030]402:页目录指针表项目(PDPTE)缓存器;404:页目录;[0031]406:页表;408:页面;[0032]410:虚拟地址;412:实体地址。【具体实施方式】[0033]本文所述的处理器是支持虚拟化操作,而此虚拟化操作是包括一EPT转译机制来将一"客户端(guest)"实体地址转换为一"真实的(true)"实体地址以存取系统存储器。在虚拟化操作不起作用或是尚未被启动的情况下,一虚拟存储器系统会启动处理器上所执行的转换程序,来将虚拟地址直接转换为实体地址,以正确地存取系统存储器内想要存取的位置。不过,在虚拟化操作被启动的情况下,各个操作系统(operatingsystem,0S)或各个虚拟机器(virtualmachine,VM)的一个或多个程序会在一客户端环境(guestenvironment)执行。在虚拟化操作的过程中,会使用一个虚拟化程序(virtualizationscheme)来有效地虚拟化存储器系统,如此,各个操作系统或虚拟机器就不会意识到它并不是直接存取系统存储器。相反地,虚拟存储器系统会产生"客户端"实体地址,此地址无法正确地存取系统存储器内想要存取的位置。各个客户端实体地址必须进一步转换或复位向至相对应的真实的实体地址,方能正确地存取系统存储器内的位置当前第1页1 2 3 4 
。
[0034]本文所述的处理器是支持一 EPT转译机制,而此EPT转译机制是于虚拟化操作的过 程中嵌入虚拟存储器系统内,以将客户端实体地址转换为真实的实体地址。如本文所述,此 处理器还纳入一载入EPT指令,来实现由客户端实体地址转换至对应真实实体地址的直接 转换程序,此功能并不存在于传统处理器。此载入EPT指令可直接调用(invoke)EPT转译机 制来执行正确的转换程序。此载入EPT指令提供一便利的机制,能够在处理器需要进行转换 时,直接转换实体地址。举例来说,此载入EPT指令可支持实体地址扩展(physical address extension,PAE)页面模式,而如本文所述,可改善EPT寻址模式下的地址转译。其它任何处 理器需要将客户端实体地址直接转换为相对应的真实的实体地址的状态,也为本文所述的 处理器所支持。
[0035]图1是本发明一实施例的具有一微码单元106的处理器100的方块示意图,而此微 码单元106是纳入一载入扩展页表(EPT)指令。此处理器100包括一指令高速缓存102,一指 令转译器104,执行单元112,架构缓存器114,一存储器子系统116,一高速缓存阶层结构 (hierarchy) 118与一总线接口单元120。指令转译器104可包括前述微码单元106,不过本发 明并不限于此种配置方式。其它可能的功能方块(未图标)包括分支预测器,一重排单元,一 重排缓冲器,保留站,一指令排程器(instruction scheduler)与数据预取单元(data prefetch unit)。在一实施例中,此微处理器100具有一非循序执行微架构(out-of-order execution microarchitecture),指令可以不依照程序顺序发布执行。在一实施例中,此微 处理器100具有一超纯量微架构(superscalar microarchitecture),能够在单一个时钟周 期内发布多个指令至执行单元112以执行。在一实施例中,此微处理器100实质上是符合x86 指令集架构。不过,本发明也可用于其它指令集架构,而不限于x86指令集架构。
[0036] 指令高速缓存102是透过总线接口 120储存由系统存储器122取得的架构指令。转 译后备缓冲器(translation look-aside buffer,TLB)(未图示)是关联于这些储存地址转 译以供指令使用的指令高速缓存102。在一实施例中,指令转译器104是由指令高速缓存102 取得架构指令并将其转译为微处理器100的微架构的微指令集的微指令。执行单元112执行 微指令以实现此组架构指令所欲执行的功能。
[0037] 执行单元112接收来自架构缓存器114(或是重排缓冲器或一转送总线)的来源操 作数(source operand)。这些操作数是由系统存储器122经由存储器子系统116载入缓存器 114。存储器子系统116会将数据写入高速缓存阶层结构118或从高速缓存阶层结构118将数 据读出。举例来说,此高速缓存阶层结构118可以是第一层数据高速缓存、第二层高速缓存、 第三层高速缓存等等。各个高速缓存可具有一相关联的转译后备缓冲器。若是在高速缓存 阶层结构118的最末层高速缓存发生高速缓存失误(cache miss),总线接口单元120就会针 对数据或指令高速缓存线(cache line)发出请求,而从系统存储器122取得高速缓存线 (cache line)。
[0038] 存储器子系统116包括一表寻访(tablewalk,TW)引擎124,可执行地址转译的表寻 访以产生虚拟至实体地址间的地址转换。表寻访引擎124存取系统存储器122内的转译表 128(例如x86指令集架构下的页结构)以执行页面的表寻访(page tablewalk)以产生虚拟 至实体间的地址转换。此地址转换在后续步骤中会载入处理器1〇〇的转译后备缓冲器内。这 些转译表128可包括一转译表阶层结构中,映射至页面的表(例如x86指令集架构的页表 (p a g e t a b 1 e ))或是参照其它转译表的表(例如X 8 6指令集架构的页目录(p a g e directory)、页目录指针表(page-directory-pointer table)、PML4表等等)。
[0039] 在本文所述的实施例中,处理器100是支持虚拟化操作,例如可使处理器硬件虚拟 化的虚拟机器扩展(如x86指令集架构的VMX)。当虚拟化操作启动时,处理器100会启动存储 器子系统116内的EPT表寻访引擎126的操作,以利于实体地址转译。此处理器100并会在系 统存储器122内产生一扩展页表(EPT)页结构130(依据x86指令集架构的说法)将虚拟化的 实体地址,也称为客户端实体地址(guest physical address),映射至真实的实体地址(例 如x86指令集架构中所称的主机端实体地址(host physical address))。此EPT表寻访引擎 126存取EPT页结构130以执行EPT实体地址转译。当虚拟化操作启动时,表寻访引擎124会与 EPT表寻访引擎126合作来存取转译表128与EPT页结构130,借以将虚拟地址转换为相对应 的真实的实体地址以存取系统存储器122中被指定的存储器位置,这部分在后续章节会有 进一步描述。EPT表寻访引擎126与EPT页结构130是一并被称为EPT转译机制134。
[0040] 微码单元106可包括一用以储存微码或微码例程(microcode routine)的微码存 储器(例如只读存储器(read only memory,R0M)),以及一用以从微码存储器取得微码指令 的微序列器(microsequencer)(未图示)。在一实施例中,前述微码指令就是微指令 (microinstruction);而在另一实施例中,微码指令则是转译自微指令。微码可实现某些架 构指令,例如特别复杂的架构指令。微码包括微码例程或其类似者,以执行处理器100的多 种不同功能。在本文所述的配置中,微指令包括一载入EPT指令,此指令在微码单元106中表 示为符号"LD_EPT"。如同本文所述,此LD_EPT指令132直接存取EPT转译机制134,而通常只 有表寻访引擎124会直接存取此转译机制。特别是,此LD_EPT指令132会直接调用EPT表寻访 引擎126来存取EPT页结构以直接将所提供的客户端实体地址转换为相对应的真实的实体 地址。
[0041] 图2是一方块示意图,显示由处理器100依据适当的虚拟化程序所实现的虚拟化系 统200。此处理器100是耦接至系统存储器122,例如可透过前文所述的总线接口单元120。此 处理器10 0是支持虚拟机器扩展(VMX)或其它相类似功能,而能启动虚拟化程序 (virtual ization sheme ),借此,处理器100即可支持硬件资源的虚拟化。超监视器 (hypervisor)208是操作为虚拟机监视器(virtual machine monitor,VMM),其作为一个或 多N个虚拟机器(virtual machine)的主机,这些虚拟机器可表示为VM1 202,VM2 204…VMN 206,N可为零或其它正整数。此超监视器208具有对于处理器100的完全控制,而能启动对于 系统资源的分享存取,例如对于处理器100,系统存储器122与其它以此处理器100为接口的 硬件资源(例如键盘、视讯、鼠标、图像、储存装置、输入/输出端口等)的分享存取。各个虚拟 机器202-206均为客户端软件环境,此客户端软件环境可支持相对应的操作系统与应用软 件,并可单独操作。超监视器208管理各个虚拟机器202-206对于系统资源的存取。处理器 100的微码单元106结合微码指令、微码例程与其它类似者,以促进虚拟化的操作。
[0042]当虚拟化操作启动时,处理器100启动EPT表寻访引擎126的操作并在系统存储器 122内产生EPT页结构130。一般而言,为了执行虚拟化,处理器会启动一EPT转译机制134来 执行实体地址转译。微码单元106并具有此LD_EPT指令132,此指令经执行,可直接调用EPT 转译机制134来将所提供的客户端实体地址转换为相对应的真实的实体地址。
[0043]图3是一方块示意图,显示依据本发明一实施例的载入EPT(LD_EPT)指令132的操 作流程。在此流程中,LD_EPT指令132是透过直接调用EPT表寻访引擎126来利用EPT页结构 130,来达到直接调用EPT转译机制134以直接执行实体地址转译的目的。载入EPT指令132是 由相对应的编码语法(code syntax)来指定。在一实施例中,此语法包括符号LD_EPT,而其 后面有储存操作数供指令使用的第一与第二缓存器R1,R2。第一缓存器R1是作为一目的缓 存器(destination register)以保存指令执行结果,而第二缓存器R2是作为一来源缓存器 (source register)以储存输入操作数。客户端实体地址GPA,即前述输入操作数,是载入来 源缓存器R2,而当LD_EPT指令132执行时,EPT表寻访引擎126会与EPT页结构130合作以产生 一相对应的真实的实体地址TPA并将其载入目的缓存器R1。
[0044] 在一实施例中,此EPT页结构130包括一E
PT指针(EPTP)306,其指向一EPT第四层页 映射(PML4)表308。客户端实体地址GPA的第一部分为来自来源缓存器R2的一 PML4值,此 PML4值是作为一偏移量(offset)加入EPT指针306,借以从EPT PML4表308中取得一PML4项 目(PML4E)。图中显示有一系列的加法器304来执行加法功能。PML4项目是指向一EPT页目录 指针(PDPT)表310。客户端实体地址的一第二部分是一导向指针(director pointer)DIR PTR,此指针是加入PML4项目,借以从ΕΡΤ Η)ΡΤ表310中取得一ΕΡΤ Η)ΡΤ项目,此Η)ΡΤ项目是 指向一EPT页目录(PD)表312。客户端实体地址的一第三部分是一目录指针(directory pointer)DIR,此指针是加入PDPT项目,借以从ΕΡΤ页目录表312中取得一ΕΡΤ页目录项目 (PDE),此页目录项目TOE是指向一ΕΡΤ页表(ΡΤ)314。客户端实体地址的一第四部分则是一 表指针TABLE,此指针是加入页目录项目,借以从ΕΡΤ页表314中取得一ΕΡΤ页表项目(ΡΤΕ)。 此客户端实体地址的一第五部分是一偏移值OFFSET,此数值是加入页表项目PTE,借以形成 真实的实体地址TPA并载入目的缓存器R1。
[0045]在EPT转译机制134的执行过程中(包括由LD_EPT指令312所调用的部分),EPT表寻 访引擎126会侦测EPT误配置(misconfiguration)与EPT违反(violation) JPT误配置通常 是指EPT页结构130的某些位元内存在错误(error),EPT违反则会在使用客户端实体地址进 行存取但转译过程并未造成EPT误配置的情况下发生。举例来说,在客户端实体地址的转译 过程碰到未出现的EPT页结构项目,就会产生EPT违反。在此情况下,此直接调用EPT转译机 制134的LD_EPT指令132会执行相关的检验(check)以产生并指出EPT误配置与EPT违反。 [0046]图4显示一用于虚拟地址转译的PAE页结构400,用以在虚拟化操作启动EPT转译机 制134的同时,使用PAE分页来转译出一个页面408(例如4K字节(Byte)的页面)。虚拟机器, 例如虚拟化系统200的虚拟机器VM1 202,可针对一给定配置选择执行PAE页面。可以理解的 是,不同的地址转译机制可定义为具有不同的页结构。此PAE页结构400使用一组页目录指 针表项目(PDPTE)缓存器402、一页目录404、一页表406与一页面408来将一虚拟地址 (virtual address,VA)410转换为一实体地址(physical address,PA)412。在一实施例中, 一M0V指令被执行,而将一指向PDPTE缓存器402的基底的指针PTR载入控制缓存器CR3。此 M0V指令会使微码单元106执行一微码例程,而将一 PAE指针值从系统存储器122载入Η)ΡΤΕ 缓存器402。在虚拟化操作不起作用的时候,此指针PTR为真实的实体地址,或表示为TPA_ PTR,而使PAE指针值从系统存储器122直接载入Η)ΡΤΕ缓存器402。也就是说,在使用虚拟化 操作时,此提供的指针PTR为能够从系统存储器122正确对PAE指针值寻址的真实的实体地 址。
[0047]不过,在虚拟化操作启动时,此指针PTR就不是真实的实体地址,而是客户端的实 体地址,或表示为GPR_PTR。此客户端实体地址必须先转换为真实的实体地址,借以从系统 存储器122内的正确位置适当地存取PAE指针值。LD_EPT指令132可透过直接调用EPT转译机 制134来将客户端实体地址直接转换为真实的实体地址以存取系统存储器122内的正确位 置,因而有利于此程序的执行。
[0048] 需要注意的是,在虚拟化操作启动时,各个目录/表402,404,406与408在PAE页面 模式下的输出值也会是客户端实体地址。各个PAE表的GPA输出会透过EPT转译机制134的使 用,转换为相对应的真实的实体地址。EPT转译机制134可使实体地址412成为存取系统存储 器122所需的真实的实体地址。
[0049]在PAE指针值适当地载入PDPTE缓存器402后,PAE转换机制就会利用PAE页结构将 虚拟地址VA 410转换为实体地址PA 412。在转换过程中,虚拟地址VA 410的第一部分会是 一目录指针(DP),此目录指针会从这些Η)ΡΤΕ缓存器402之一选择一个相对应的Η)ΡΤΕ值。此 选定的roPTE值是由roPTE缓存器402输出,并经EPT转译机制134转换为一指向页目录404基 底(base)的实体地址。虚拟地址410的第二部分会是一目录值DIR,此目录值会从页目录404 选择一 TOE值。此TOE值会由EPT转译机制134转换为一指向页表406基底的实体地址值。虚拟 地址410的第三部分会是数值TABLE,此数值TABLE会从页表406中选择一 PTE值,而此PTE值 是经EPT转译机制134转换为一指向页面408基底的实体地址值。虚拟地址410的第四部分会 是一偏移值OFFSET,此数值会从页面408选择一客户端实体地址值,而此数值是经EPT转译 机制134转换为实体地址PA 412。此实体地址412即为虚拟地址410欲转换的值。
[0050]图5是本发明一实施例的一微码载入例程的流程图,此例程可用以将一数值由系 统存储器122载入roPTE缓存器402。如前述,MOV指令会将指向roPTE缓存器402基底的指针 PTR载入控制缓存器CR3,此指令并会使微码单元106执行一微码载入例程而将一 PAE指针值 从系统存储器122载入PDPTE缓存器402。在步骤502中,M0VT0指令会将指针PTR值移动至适 当的目的缓存器,即缓存器R2。此PTR值可位于另一个缓存器,或可由特殊的指令来移动。在 此,此PTR值可为一真实的实体地址指针(TPT_PTR,当虚拟化操作尚未启动),或可为一客户 端实体地址指针(GPT_PTR,当虚拟化操作被启动)。在下一个步骤504中会检查PTR值以确认 虚拟化操作(virtual izt ion,VIRT)是否被启动,此虚拟化操作可由一 EPT参数或其它能表 示虚拟化程序的操作的参数来表示。在虚拟化操作并未启动时,EPT就不会启动,而指针PTR 就会是真实的实体地址TPA_PTR,而能使PAE指针值直接载入H)PTR缓存器402。在此情况下, 流程会直接前进至步骤506以直接载入PAE指针值。
[0051 ] 在步骤506中,使用LD_PHY指令来将TPA_PTR值由缓存器R2载入缓存器R1。此LD_ PHY指令包括一第三操作数,此操作数是来源缓存器R2所提供源值的一偏移量。在第一个指 令集中,偏移量呈现为零(〇)乘上一预设偏移值OFF(其中米字表示乘法)。因此,此第一 LD_PHY指令会使系统存储器122内由缓存器R2内的真实的实体地址所寻址的位置的内容被 载入缓存器R1。下一个指令,即CALL_CHK_PDPTE指令,会检验由系统存储器122载入缓存器 R1的数值的正确与否,以判断其可否作为PDPTE缓存器40 2的一Η)ΡΤΕ值。若是不正确,此操 作中止并执行一错误例程(error routine)。反之,若是缓存器R1内的数值正确,此操作程 序会前进至下一个指令,即M0VT0 PDPTE0,R1指令,使缓存器R1的内容移动至Η)ΡΤΕ缓存器 402的第一位置Η)ΡΤΕ0。在位置名称末端的"0"(例如Η)ΡΤΕ0末端的"0"),表示PDPTE缓存器 402的第一连续位置。
[0052] 下一个指令集与此类似,除了其中用于LD_PHY指令的偏移量为数值一(1)乘上偏 移值0FF,表示为(LD_PHY 1?1,1?2,1*(^?)。在此情况下,缓存器1?2的指针值会加上偏移值 0FF,而储存于缓存器R1的结果会作为系统存储器122的真实的实体地址。OFF的数值是一任 意值,用于此特殊配置并且通常会指向系统存储器122内下一个载入Η)ΡΤΕ缓存器402的存 储器位置。在一实施例中,举例来说,数值OFF可代表8个位,不过,本发明并不限于此。与前 述指令集类似,系统存储器122的下一个数值是首先载入缓存器R1,然后利用指令CALL_ CHK_PDPTE检验其是否正确。若是正确,此数值就会由缓存器R1移动至Η)ΡΤΕ缓存器402的下 一个位置,表示为roPTE 1。在位置名称末端的"Γ,如roPTE 1,表示roPTE缓存器402的第二连 续位置。
[0053] 基本上,这些指令会再重复二次,分别配合2*0FF与3*0FF的偏移量,从系统存储器 122中将后续两个PAE指针值分别载入Η)ΡΤΕ缓存器402的第三与第四连续位置,即PDPTE2与 PDPTE3。在这些数值载入Η)ΡΤΕ缓存器402后,此操作流程随即结束。
[0054] 请回到步骤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。
[0055] 在实体地址指针转换为真实的实体地址PTR并载入缓存器R1后,此流程会前进至 下一个步骤510来将TPA_PTR传送至缓存器R2。接下来,操作流程会前进至步骤506来将系统 存储器122的四个连续值载入PDPTE缓存器402的四个连续位置,而这四个连续位置是始于 由缓存器R2内的真实的实体地址指针TPA_PTR所指向的位置。在将这些数值载入PDPTE缓存 器402后,此操作流程随即结束。
[0056] LD_EPT指令是有利于客户端实体地址需要被直接转换为真实的实体地址以正确 存取系统存储器122的情形。而本文所设定的PAE页面模式即为LD_EPT指令有利于直接进行 实体地址转换的情形。虽然如此,处理器100还是可以随时在任何需要执行直接实体地址转 译的其它功能中,使用LD_EPT指令。
[0057] 虽然本文所述的实施例是针对x86指令集架构,不过此载入EPT指令或其类似形式 亦可适用于其它指令集架构中,例如ARM、MIPS或Sun指令集架构。本文所述的载入EPT指令 当可用于任何支持虚拟化程序的指令集架构。惟以上所述者,仅为本发明实施例而已,当不 能以此限定本发明实施的范围,即大凡依本发明申请专利范围及发明说明内容所作的简单 的等效变化与修饰,皆仍属本发明专利涵盖的范围内。此处描述的装置与方法的实施例可 被包括于一半导体知识产权核心,例如一微处理核心(如以硬件描述语言的实施方式)并且 透过集成电路的制作转换为硬件。此外,本文所描述的装置与方法亦可包括硬件与软件的 结合。因此,本文所述的任何实施例,并非用以限定本发明的范围。此外,本发明可应用于一 般通用计算机的微处理器装置。最后,所属技术领域具有通常知识者利用本发明所揭露的 观念与实施例作为基础,来设计并调整出不同的结构已达成相同的目的,亦不超出本发明 的范围。
[0058] 通过以上具体实施例的详述,是希望能更加清楚描述本发明的特征与精神,而并 非以上述所揭露的具体实施例来对本发明的范畴加以限制。相反地,其目的是希望能涵盖 各种改变及具相等性的安排于本发明所欲申请的专利范围的范畴内。
【主权项】
1. 一种处理器,其特征在于,包括: 一扩展页表(extendedpagetable,EPT)转译机制,于虚拟化程序(virtualization) 启动; 一载入EPT指令,于该处理器执行该载入EPT指令时,直接调用(invoke)该EPT转译机 制,以直接将所提供的一客户端实体地址转译为一相对应的真实的实体地址。2. 根据权利要求1所述的处理器,其特征在于,该载入EPT指令是指定一第一与一第二 内部存储器位置,其中,该第一内部存储器位置是储存该所提供的客户端实体地址,其中, 于执行该载入EPT指令时,该相对应的真实的实体地址是载入该第二内部存储器位置。3. 根据权利要求2所述的处理器,其特征在于,该第一与第二内部存储器位置包括该处 理器的内部缓存器(internalregister)。4. 根据权利要求1所述的处理器,其特征在于,还包括: 一总线接口,作为连接至一外部的系统存储器的接口; 其中,该EPT转译机制包括: 一EPT页结构(pagingstructure),于该EPT转译机制启动时产生并储存于该系统存储 器; 一EPT表寻访引擎(tablewalkengine),用以存取该EPT页结构以将该客户端实体地址 转换为该相对应的真实的实体地址。5. 根据权利要求4所述的处理器,其特征在于,该处理器产生多个扩展页表于该系统存 储器内以作为该EPT页结构,并且,该EPT表寻访引擎是利用该客户端实体地址的选定部分 作为偏移量(offset),并存取该多个扩展页表内的项目(entry),以将该客户端实体地址转 换为该相对应的真实的实体地址。6. 根据权利要求4所述的处理器,其特征在于,该EPT页结构包括一EPT指针(pointer), 一EPT页映射表(pagemaptable),一页目录指针表(pagedirectorypointertable),一 页目录表(pagedirectorytable)与一页表(pagetable),其中,该客户端实体地址包括 多个数值,各该数值是加入由该EPT表寻访引擎于执行该载入EPT指令时由该EPT页结构取 回的一相对应项目。7. 根据权利要求4所述的处理器,其特征在于,该EPT表寻访引擎于执行该载入EPT指令 时,执行相关的检验(check)以触发EPT误配置(misconfiguration)与EPT违反 (violation)〇8. 根据权利要求1所述的处理器,其特征在于,还包括一启动例程(activation routine),该启动例程是储存于该内部存储器以支持实体地址扩展页(physicaladdress extensionpaging),其中,当该实体地址扩展页(physicaladdressextensionpaging) 启动时,该启动例程执行该载入EPT指令,借以将一外部系统存储器的至少一实体地址载入 该处理器内的一内部指针表存储器(internalpointertablememory)中,以将该客户端 实体地址转换为该相对应的真实的实体地址。9. 一种操作一处理器的方法,其特征在于,包括: 在虚拟化程序中,启动一扩展页表(extendedpagetable,EPT)转译机制; 执行一载入EPT指令,包括直接调用(invoke)该EPT转译机制,以直接将所提供的一客 户端实体地址转译为一相对应的真实的实体地址。10. 根据权利要求9所述的方法,其特征在于,还包括: 于执行该载入EPT指令时,指定一第一内部存储器位置以储存该所提供的客户端实体 地址以及指定一第二内部存储器位置以储存该相对应的真实的实体地址。11. 根据权利要求9所述的方法,其特征在于,还包括: 于该EPT转译机制启动时,产生并储存一EPT页结构(pagingstructure)于一外部系统 存储器;以及 于执行该载入EPT指令时,存取该EPT页结构以将该客户端实体地址转换为该相对应的 真实的实体地址。12. 根据权利要求11所述的方法,其特征在于,产生并储存该EPT页结构的步骤包括:提 供多个扩展页表于该外部系统存储器内; 其中,该存取该EPT页结构的步骤包括:利用该客户端实体地址的选定部分作为偏移量 (offset),存取该多个扩展页表内的项目(entry),以将该客户端实体地址转换为该相对应 的真实的实体地址。13. 根据权利要求12所述的方法,其特征在于,提供多个扩展页表的步骤包括:提供一 EPT指针(pointer),一EPT页映射表(pagemaptable),一页目录指针表(pagedirectory pointertable),一页目录表(pagedirectorytable)与一页表(pagetable)。14. 根据权利要求12所述的方法,其特征在于,利用该客户端实体地址的选定部分作为 偏移量(offset)的步骤包括:于执行该载入EPT指令时,将该客户端实体地址的该选定部分 加入由该EPT页结构取回的一项目。15. 根据权利要求9所述的方法,其特征在于,还包括: 于执行该载入EPT指令时,执行相关的检验(check)以触发EPT误配置 (misconfiguration)与EPT违反(violation) 〇16. 根据权利要求9所述的方法,其特征在于,还包括: 启动实体地址扩展页(physicaladdressextensionpaging),其中,启动该实体地址 扩展页(physicaladdressextensionpaging)的步骤包括,执行该载入EPT指令,借以将 一外部系统存储器的至少一实体地址载入该处理器内的一内部指针表存储器(internal pointertablememory)中,以将该客户端实体地址转换为该相对应的真实的实体地址。
【专利摘要】一种处理器,包括一个于虚拟化程序启动的扩展页表(extended?page?table,EPT)转译机制与一载入EPT指令。载入EPT指令是于该处理器执行该载入EPT指令时,直接调用EPT转译机制,以直接将所提供的一客户端实体地址转译为一相对应的真实的实体地址。此EPT转译机制包括一EPT页结构与一EPT表寻访引擎。EPT页结构是于该EPT转译机制启动时产生并储存于系统存储器。EPT表寻访引擎是用以存取EPT页结构以将客户端实体地址转换为相对应的真实的实体地址。EPT表寻访引擎于执行载入EPT指令时可执行相关检验以触发EPT误配置与EPT违反。
【IPC分类】G06F12/1009, G06F9/455, G06F9/30
【公开号】CN105487837
【申请号】CN201510824797
【发明人】柯林·艾迪, 泰瑞·派克斯
【申请人】上海兆芯集成电路有限公司
【公开日】2016年4月13日
【申请日】2015年11月24日