具有载入扩展页表指令的处理器的制造方法_3

文档序号:9727117阅读:来源:国知局
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并载
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1