CN105487837A - 具有载入扩展页表指令的处理器 - Google Patents
具有载入扩展页表指令的处理器 Download PDFInfo
- Publication number
- CN105487837A CN105487837A CN201510824797.1A CN201510824797A CN105487837A CN 105487837 A CN105487837 A CN 105487837A CN 201510824797 A CN201510824797 A CN 201510824797A CN 105487837 A CN105487837 A CN 105487837A
- Authority
- CN
- China
- Prior art keywords
- ept
- page
- address
- instruction
- physical 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
Abstract
一种处理器,包括一个于虚拟化程序启动的扩展页表(extended?page?table,EPT)转译机制与一载入EPT指令。载入EPT指令是于该处理器执行该载入EPT指令时,直接调用EPT转译机制,以直接将所提供的一客户端实体地址转译为一相对应的真实的实体地址。此EPT转译机制包括一EPT页结构与一EPT表寻访引擎。EPT页结构是于该EPT转译机制启动时产生并储存于系统存储器。EPT表寻访引擎是用以存取EPT页结构以将客户端实体地址转换为相对应的真实的实体地址。EPT表寻访引擎于执行载入EPT指令时可执行相关检验以触发EPT误配置与EPT违反。
Description
本申请案主张申请日为2015年5月11日的美国专利第62/159,776号临时申请案的优先权。该优先权案的全文并入本案以供参考。
技术领域
本发明关于由处理器执行的地址转译,特别是关于一载入扩展页表(extendedpagetable,EPT)指令,此指令可以在启动虚拟化(virtualization)时执行,借以直接将客户端实体地址转换为真的实体地址。
背景技术
现代处理器支持虚拟存储器功能。虚拟存储器系统是将由程序使用的虚拟地址(也称为线性地址)映射或转译至由硬件使用的实体地址以对存储器寻址。透过虚拟存储器,可以隐藏物理存储器的零碎状况(fragmentation),以利程序重定位(relocation)的进行,并使程序可以看到相较于比实际可取用的物理存储器更大的地址空间。这些优点尤其有利于现今由多程序或程序支持处理器时间共享(time-sharing)的系统。
操作系统(operationgsystem,OS)是透过产生并维护系统存储器转译表来实现虚拟存储器系统,在分页虚拟存储器系统中,系统存储器转译表通常被称为的页表(pagetable)。页表可将虚拟地址映射至与处理器连接的系统存储器的实体地址中。此转译表可采取阶层表单的形式,其中部分表单是将虚拟地址映射至中介表单的地址。程序利用虚拟地址来存取存储器的时候,会依序存取转译表来完成由虚拟地址转译至相对应实体位置的程序,这个程序通常被称为页表寻访(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)的一个或多个程序会在一客户端环境(guestenvironment)执行。在虚拟化操作的过程中,会使用一个虚拟化程序(virtualizationscheme)来有效地虚拟化存储器系统,如此,各个操作系统或虚拟机器就不会意识到它并不是直接存取系统存储器。相反地,虚拟存储器系统会产生“客户端”实体地址,此地址无法正确地存取系统存储器内想要存取的位置。各个客户端实体地址必须进一步转换或复位向至相对应的真实的实体地址,方能正确地存取系统存储器内的位置。
本文所述的处理器是支持一EPT转译机制,而此EPT转译机制是于虚拟化操作的过程中嵌入虚拟存储器系统内,以将客户端实体地址转换为真实的实体地址。如本文所述,此处理器还纳入一载入EPT指令,来实现由客户端实体地址转换至对应真实实体地址的直接转换程序,此功能并不存在于传统处理器。此载入EPT指令可直接调用(invoke)EPT转译机制来执行正确的转换程序。此载入EPT指令提供一便利的机制,能够在处理器需要进行转换时,直接转换实体地址。举例来说,此载入EPT指令可支持实体地址扩展(physicaladdressextension,PAE)页面模式,而如本文所述,可改善EPT寻址模式下的地址转译。其它任何处理器需要将客户端实体地址直接转换为相对应的真实的实体地址的状态,也为本文所述的处理器所支持。
图1是本发明一实施例的具有一微码单元106的处理器100的方块示意图,而此微码单元106是纳入一载入扩展页表(EPT)指令。此处理器100包括一指令高速缓存102,一指令转译器104,执行单元112,架构缓存器114,一存储器子系统116,一高速缓存阶层结构(hierarchy)118与一总线接口单元120。指令转译器104可包括前述微码单元106,不过本发明并不限于此种配置方式。其它可能的功能方块(未图标)包括分支预测器,一重排单元,一重排缓冲器,保留站,一指令排程器(instructionscheduler)与数据预取单元(dataprefetchunit)。在一实施例中,此微处理器100具有一非循序执行微架构(out-of-orderexecutionmicroarchitecture),指令可以不依照程序顺序发布执行。在一实施例中,此微处理器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指令集架构的页目录(pagedirectory)、页目录指针表(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…VMN206,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)DIRPTR,此指针是加入PML4项目,借以从EPTPDPT表310中取得一EPTPDPT项目,此PDPT项目是指向一EPT页目录(PD)表312。客户端实体地址的一第三部分是一目录指针(directorypointer)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指令当可用于任何支持虚拟化程序的指令集架构。惟以上所述者,仅为本发明实施例而已,当不能以此限定本发明实施的范围,即大凡依本发明申请专利范围及发明说明内容所作的简单的等效变化与修饰,皆仍属本发明专利涵盖的范围内。此处描述的装置与方法的实施例可被包括于一半导体知识产权核心,例如一微处理核心(如以硬件描述语言的实施方式)并且透过集成电路的制作转换为硬件。此外,本文所描述的装置与方法亦可包括硬件与软件的结合。因此,本文所述的任何实施例,并非用以限定本发明的范围。此外,本发明可应用于一般通用计算机的微处理器装置。最后,所属技术领域具有通常知识者利用本发明所揭露的观念与实施例作为基础,来设计并调整出不同的结构已达成相同的目的,亦不超出本发明的范围。
通过以上具体实施例的详述,是希望能更加清楚描述本发明的特征与精神,而并非以上述所揭露的具体实施例来对本发明的范畴加以限制。相反地,其目的是希望能涵盖各种改变及具相等性的安排于本发明所欲申请的专利范围的范畴内。
Claims (16)
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所述的处理器,其特征在于,还包括一启动例程(activationroutine),该启动例程是储存于该内部存储器以支持实体地址扩展页(physicaladdressextensionpaging),其中,当该实体地址扩展页(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),一页目录指针表(pagedirectorypointertable),一页目录表(pagedirectorytable)与一页表(pagetable)。
14.根据权利要求12所述的方法,其特征在于,利用该客户端实体地址的选定部分作为偏移量(offset)的步骤包括:于执行该载入EPT指令时,将该客户端实体地址的该选定部分加入由该EPT页结构取回的一项目。
15.根据权利要求9所述的方法,其特征在于,还包括:
于执行该载入EPT指令时,执行相关的检验(check)以触发EPT误配置(misconfiguration)与EPT违反(violation)。
16.根据权利要求9所述的方法,其特征在于,还包括:
启动实体地址扩展页(physicaladdressextensionpaging),其中,启动该实体地址扩展页(physicaladdressextensionpaging)的步骤包括,执行该载入EPT指令,借以将一外部系统存储器的至少一实体地址载入该处理器内的一内部指针表存储器(internalpointertablememory)中,以将该客户端实体地址转换为该相对应的真实的实体地址。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562159776P | 2015-05-11 | 2015-05-11 | |
US62/159,776 | 2015-05-11 | ||
US14/727,242 US9792223B2 (en) | 2015-05-11 | 2015-06-01 | Processor including load EPT instruction |
US14/727,242 | 2015-06-01 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105487837A true CN105487837A (zh) | 2016-04-13 |
CN105487837B CN105487837B (zh) | 2018-10-09 |
Family
ID=55674839
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510824797.1A Active CN105487837B (zh) | 2015-05-11 | 2015-11-24 | 具有载入扩展页表指令的处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105487837B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107391225A (zh) * | 2017-07-13 | 2017-11-24 | 北京航空航天大学 | 一种基于多ept列表的监控方法和系统 |
WO2020252779A1 (en) * | 2019-06-21 | 2020-12-24 | Intel Corporation | Methods, systems, articles of manufacture and apparatus to control address space isolation in a virtual machine |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080046679A1 (en) * | 2006-08-15 | 2008-02-21 | Bennett Steven M | Synchronizing a translation lookaside buffer to an extended paging table |
CN104375890A (zh) * | 2008-12-31 | 2015-02-25 | 英特尔公司 | 用于执行安全嵌入式容器的处理器扩展 |
US20150120985A1 (en) * | 2013-10-30 | 2015-04-30 | International Business Machines Corporation | Mechanisms for eliminating a race condition between a hypervisor-performed emulation process requiring a translation operation and a concurrent translation table entry invalidation |
-
2015
- 2015-11-24 CN CN201510824797.1A patent/CN105487837B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080046679A1 (en) * | 2006-08-15 | 2008-02-21 | Bennett Steven M | Synchronizing a translation lookaside buffer to an extended paging table |
CN104375890A (zh) * | 2008-12-31 | 2015-02-25 | 英特尔公司 | 用于执行安全嵌入式容器的处理器扩展 |
US20150120985A1 (en) * | 2013-10-30 | 2015-04-30 | International Business Machines Corporation | Mechanisms for eliminating a race condition between a hypervisor-performed emulation process requiring a translation operation and a concurrent translation table entry invalidation |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107391225A (zh) * | 2017-07-13 | 2017-11-24 | 北京航空航天大学 | 一种基于多ept列表的监控方法和系统 |
WO2020252779A1 (en) * | 2019-06-21 | 2020-12-24 | Intel Corporation | Methods, systems, articles of manufacture and apparatus to control address space isolation in a virtual machine |
US11971827B2 (en) | 2019-06-21 | 2024-04-30 | Intel Corporation | Methods, systems, articles of manufacture and apparatus to control address space isolation in a virtual machine |
Also Published As
Publication number | Publication date |
---|---|
CN105487837B (zh) | 2018-10-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11074191B2 (en) | Linear to physical address translation with support for page attributes | |
EP2788864B1 (en) | Techniques to prelink software to improve memory de-duplication in a virtual system | |
AU2012382781B2 (en) | Compare and replace DAT table entry | |
US10048881B2 (en) | Restricted address translation to protect against device-TLB vulnerabilities | |
US9336036B2 (en) | System method for memory virtualization control logic for translating virtual memory in space of guest memory based on translated codes in response to memory failure | |
CN102625934B (zh) | 共享虚拟存储器 | |
US9244854B2 (en) | Transparent code patching including updating of address translation structures | |
EP2483783B1 (en) | Facilitating memory accesses | |
US11086624B2 (en) | Function virtualization facility for blocking instruction function of a multi-function instruction of a virtual processor | |
US9785352B2 (en) | Transparent code patching | |
RU2562372C2 (ru) | Активация/деактивация адаптеров вычислительной среды | |
WO2012093488A1 (ja) | スケジューリング方法、およびマルチコアプロセッサシステム | |
MX2012014859A (es) | Taduccion de direcciones de netrada/salida a direcciones de memoria. | |
US8190652B2 (en) | Achieving coherence between dynamically optimized code and original code | |
JP2015201227A (ja) | 多機能命令のうちの選択されたインストール済み機能を隠蔽するためのコンピュータで実装される方法、コンピュータ・システム、およびコンピュータ・プログラム | |
US20160103768A1 (en) | TLB Management Method and Computer | |
KR101247259B1 (ko) | 가상화 장치 및 그 처리 방법 | |
CN115827502A (zh) | 一种内存访问系统、方法及介质 | |
KR20140004786A (ko) | 결합 퍼실리티를 테스트하기 위한 운영자 메시지 커맨드 | |
US20150278111A1 (en) | Hierarchical translation structures providing separate translations for instruction fetches and data accesses | |
US7685381B2 (en) | Employing a data structure of readily accessible units of memory to facilitate memory access | |
CN105487837A (zh) | 具有载入扩展页表指令的处理器 | |
TWI591481B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: Room 301, 2537 Jinke Road, Zhangjiang High Tech Park, Pudong New Area, Shanghai 201203 Patentee after: Shanghai Zhaoxin Semiconductor Co.,Ltd. Address before: Room 301, 2537 Jinke Road, Zhangjiang High Tech Park, Pudong New Area, Shanghai 201203 Patentee before: VIA ALLIANCE SEMICONDUCTOR Co.,Ltd. |