CN101315614A - 支持页属性的虚拟地址至物理地址的转换 - Google Patents

支持页属性的虚拟地址至物理地址的转换 Download PDF

Info

Publication number
CN101315614A
CN101315614A CNA2008101000501A CN200810100050A CN101315614A CN 101315614 A CN101315614 A CN 101315614A CN A2008101000501 A CNA2008101000501 A CN A2008101000501A CN 200810100050 A CN200810100050 A CN 200810100050A CN 101315614 A CN101315614 A CN 101315614A
Authority
CN
China
Prior art keywords
memory address
physical memory
page
instruction
pointer
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
Application number
CNA2008101000501A
Other languages
English (en)
Other versions
CN101315614B (zh
Inventor
O·法里克
B-Z·弗莱德曼
J·D·多维科
E·维斯曼
J·B·克罗斯兰德
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Priority to CN201210167652.5A priority Critical patent/CN102789429B/zh
Publication of CN101315614A publication Critical patent/CN101315614A/zh
Application granted granted Critical
Publication of CN101315614B publication Critical patent/CN101315614B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/342Extension of operand address space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/50Control mechanisms for virtual memory, cache or TLB
    • G06F2212/507Control mechanisms for virtual memory, cache or TLB using speculative control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/684TLB miss handling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

本发明的实施例一般涉及用于支持页属性的线性至物理地址转换的系统、方法和装置。在某些实施例中,系统接收一指令以将存储器指针转换成存储器位置的物理存储器地址。该系统可返回物理存储器地址和一个或多个页属性。描述并要求保护包括其它实施例。

Description

支持页属性的虚拟地址至物理地址的转换
技术领域
本发明的实施例一般涉及计算系统领域,尤其涉及用于支持页属性的虚拟地址至物理地址转换的系统、方法和装置。
背景技术
虚拟存储器允许程序员使用比处理器可用的实际物理存储器所提供的范围更大的存储器用于程序和数据。此外,虚拟存储器允许程序相互平行地加载,并具有与其它程序的存在及其加载的位置无关的存储器映射。计算系统利用地址转换硬件将程序的虚拟地址(在IA32体系结构中也称为线性地址——在本说明书中“线性地址”或LA与“虚拟地址”在使用时意思相同)映射到真实的硬件存储器地址(例如,物理存储器地址)。该硬件使用存储器中的表树作为地址转换的输入数据。该树的跟由保持页表树中第一表的物理地址的寄存器所指向。这一寄存器的例子是IA32体系结构中的CR3。页表项(PTE)利用基址和索引来寻址。基址是从寄存器或先前的表存储器指针中取出的。索引利用线性地址的一部分。PTE或者包括页——如果存储器中不存在其余的子树,或者包括以下讨论的存储器指针和其它信息。存储器指针针对存储器中可以包括数据(属于应用程序或操作系统)或另一级页表的页。如果是后一种情况,则线性地址的另一部分用于索引至类似于所述内容的方案中的表。如果地址针对应用程序页,则物理地址通过将剩余的地址位(没有用于索引)添加至从页表项检索的页基地址来构造。同样,某些实施例可例示出如寄存器中所述的几种转换方案(例如,不同的表树索引结构),为了简化本说明书,我们将考虑这些CR3寄存器中的信息部分,即使它可以保持在一个或多个其它寄存器中。
除地址转换信息外,这些表包括诸如访问权读取、写入或执行、存储器中数据的存在、高速缓存策略指示、页修改状态等信息。在某些情形中,页表可包括不同大小的页,其中较大的页指向页表树的较低级(而不是指向另一指针页)。将所指向的页大小在页表树中存储为属性(一般在指向数据页的级中)。
为了检索物理地址,以从根(IA32中的CR3)开始的递归方式读取页表项,并检索和合并页性质。IA32程序员参考手册(例如,卷3A)提供了一个检索物理地址的常规方法的例子。该进程需要若干存储器访问操作,并由页-表处理硬件或uCode(u码)序列来实现。
有时,需要软件来检索物理存储器地址。在这种情形中,使用仿真全表遍历(emulated full table walk)或者基于操作系统施加的表设置限度的经缩短启发法。
转换后备缓冲器(TLB)是保持先前转换结果的高速缓存,使得对一个地址(或地址范围)的连续访问可避免遍历数据结构,并可使用先前转换的结果。在很多情形中,地址转换还检查操作,以满足为存储器位置所设置的条件。常规的地址转换指令一般被提供作为操作数以返回针对线性地址的物理存储器地址,而无需提供任何附加信息。
附图简述
本发明的实施例在附图的各图中作为例子而不是限制示出,附图中相同的附图标记指示相似的元件。
图1是示出根据本发明的一个实施例实现的计算系统的所选方面的高级框图。
图2是根据本发明的一个实施例示出地址转换硬件的所选方面的框图。
图3是根据本发明的一个实施例示出具有扩展页表的页树的所选方面的框图。
图4是根据本发明的一个实施例示出页表项的所选方面的框图。
图5是根据本发明的一个实施例示出支持页属性的线性至物理地址转换的方法的所选方面的流程图。
详细描述
本发明的实施例一般涉及支持页属性的虚拟(将被称为线性)至物理地址转换的系统、方法和装置。在某些实施例中,系统接收一指令,以将线性存储器指针转换成存储器位置的物理存储器地址。系统可返回物理存储器地址和一个或多个页属性。
图1是示出根据本发明的一个实施例实现的计算系统的所选方面的高级框图。系统100包括应用程序102、内核104和硬件106。内核104管理硬件106并在应用程序102和硬件106之间提供通信。为了提供故障容错和安全性,内核104可以在高于应用程序102的特权级(例如,环0)操作。在某些实施例中,内核104包括LOAD PHYSICAL ADDRESS(加载物理地址)指令(LAP)108。LPA 108的输入参数几乎可以包括指向存储器的任何指针。LPA 108的输出参数包括与上述指针和一个或多个页属性对应的物理存储器地址(PA)。如以下参考图2-5进一步描述的,LPA 108可支持touch(创建)操作和/或虚拟化技术。
表1示出根据本发明的某些实施例的LPAxx指令的所选方面。在某些实施例中,LPAxx指令取出线性地址(例如,m8)作为输入,并输出该存储器位置的物理地址以及一个或多个页属性。在32位模式中且在物理地址可能大于寄存器的情况下,指令可具有2个寄存器用于地址输出(以支持大于32位的物理地址空间)。在64位模式中,单个输出寄存器就足够了。在某些实施例中,指令的基本结构支持读语义。可支持写语义以直接检查页是否是写使能的(例如,参见以下的设计方案(trap)讨论)。
表1
Figure A20081010005000081
Figure A20081010005000091
N.E.-在该模式中指令未被编码
在某些实施例中,当在旧版本模式中操作时,LPAxx指令将DS:(E)SI中的字节地址的地址移至EDX:EAX,且EBX保持访问许可和页大小。在64位模式中,LPAxx可将(R|E)SI中的字节地址的地址移至EDX:EAX(或r64寄存器),且EBX保持访问许可和页大小。在可选实施例中,可使用不同的寄存器,并可支持不同的模式。
在某些实施例中,LPAxx指令是在例如内核级中运行的受保护的指令。在应用程序级运行该指令可导致违反用户应用程序虚拟化效应(例如,用户应用程序不知道其运行的实际地址)。在某些实施例中,LPAxx指令在同步操作系统调用中操作,其中内核代码与用户上下文(在IA32模式中这指示特定的CR3值)一起操作。在可选实施例中(如以下进一步描述的),指令在异步操作系统(OS)调用中操作。在某些实施例中,LPAxx的使用类似于操作系统中存在的等价SW操作,以确保所得到的物理地址与页表同步。
输入参数可以是指向存储器的几乎任何有效方式。例如,m8值或r/m8值可以被选择性地用于在特定线性地址中给予指令更大的灵活性。地址转换硬件(例如,系统200,图2所示)可进行地址转换操作,好像该指令所要求的读(写)一样,同时返回不同的结果。转换后备缓冲器(例如,图2所示的TLB 204)中的地址信息可被直接使用,而无需通过页遍历阶段。
在某些实施例中,输出参数是物理地址(PA)(例如,长度达64位)和一个或多个页属性(例如,表2中所示属性中的一个或多个)。可将PA存储在单个64位寄存器中(例如,在IA32e模式中操作时)或隐含定义的寄存器对中(例如,在IA32模式或可选的IA32e兼容模式中操作时)。可将一个或多个页属性存储在隐含定义的寄存器中。在替换实施例中,使用了使得数据可用于稍后使用的软件的其它手段,诸如将信息存储在专用寄存器或存储器位置中。
如表1所示,在某些实施例中,可存在两种(或更多种)类型的LPAxx指令。例如,某些实施例可包括LPA指令和带有touch指令的LPA。如上所述,LPA指令接收LA作为作为输入,并返回PA和一个或多个页属性。带有touch指令的LPA也返回PA和一个或多个页属性。此外,带有touch指令的LPA确定页是否存在于存储器中(根据页表末级中的状态)。如果最后页不存在,则带有touch指令的LPA产生错误,该错误与由RD或WR分别针对LPARD和LPAWR产生的错误相同。这允许标准错误处理程序维护错误情况(例如,在页错误的情况下把该页带入存储器,或针对写touch将只读页变换成写使能)。带有touch指令的LPA确定页状态而不访问存储器中的数据,这节省了对存储器分层结构的访问和在很多情况下会高速缓存未命中。相反,状态的确定则是基于页表项(PTE)的状态。
图2是根据本发明的一个实施例示出地址转换硬件的所选方面的框图。地址转换硬件200包括存储器请求单元(MRU)202、转换备用缓冲器(TLB)204、页未命中处理程序(PMH)206、存储器子系统(MSU)208、物理地址返回寄存器(PARR)210以及多路复用器(MUX)212。在替换实施例中,地址转换硬件200包括更多的元件、更少的元件和/或不同的元件。
MRU 202发出包括线性地址(例如,线性地址214)的存储器请求(例如,负载或存储)。TLB 204是保持物理地址和已被转换的线性地址的属性的高速缓存机构(其可包括多层TLB)。并非所有先前转换的地址都被保持在TLB中,且应用各种高速缓存启发法以确定哪些地址被保持。当页表被更新时,受影响的项由直接软件控制(软件管理的TLB相关性)或由硬件(硬件管理的TLB相关性)从TLB中清除。如果在TLB 204中发现LA 214的转换,则TLB直接输出物理存储器地址(PA)。PA(例如,PA 216)可用于直接从MSU 208获取数据。如果TLB 204不包括地址,则LA被发送(218)至PMH 206。PMH 206执行页遍历,且在页遍历成功完成时将PA(220)返回至TLB 204。当PMH遍历失败(例如,存储器中不存在针对页表任何级的数据)时,生成服从操作系统的一个异常。对于某些实施例中的LPA操作,操作用指示发生错误的状态终止而不生成异常,关于所返回信息的更多细节将在下文中提供。MSU 208表示存储器分层结构,它可由直接访问的存储器或用于减少存储器访问延迟的一级或多级高速缓存组成。MSU 208将存储在物理地址216中的数据经由返回总线返回至数据寄存器(222)。
在某些实施例中,除(取决于具体情况从TLB 204或PMH 206)获取PA外,可响应于指令获取一个或多个页属性。PA和相关联的页属性作为LPA参数的一部分返回至处理器寄存器。在某些实施例中,PA和相关联的页属性被置于物理地址返回寄存器(例如,PARR 210)中,该寄存器是专用于保持PA和/或属性信息以及指示操作完成的状态的寄存器。可选地,处理器可使用微代码来从PARR读取数据并将其置于通用寄存器。在可选的实施例中,PARR可由其它处理器指令直接寻址。在另一个可选实施例中,PA和相关联的页属性可经由读取返回总线(例如,224)返回至处理器。在又一个实施例中,不同的技术可用于将PA和相关联的页属性返回至处理器。
表2在本发明的某些实施例中提供可被返回的带PA的所选页属性的列表。在可选实施例中,可返回更多属性、更少属性和/或不同属性。
表2
  页属性   简述
  存在位(P-位)   指示页是否存在于存储器中。
  读/写(R/W位)   指示页是否是只读的或读/写访问是否可能。
  用户/管理员位(U/S位)   指示页的保护级。
  访问位(A位)   指示页是否被访问。
  脏位(D位)   指示页是否被修改。
  全局标志(G位)   指示页被全局使用(全局标志)。
  执行禁用位(EXB位)   指示页是数据页,且代码不能从其执行
  页大小   根据页表结构指示页大小。例如,页的大小可以是4KB、2MB、4MB等。
  转换表错误   指示在访问页表之一的同时地址转换的过程中发生页错误。该值指示从根开始的页表级(例如,正如由CR3寄存器或任何其它适当的寄存器所指向的)。页自身的存在由P位所指示。当页转换被存储在TLB中时,页表树存在检验可有波动。
对于大多数情况,异常以与对于正常的存储器访问(读或写)基本相同的方式来处理。然而,在某些实施例中,应用以下的异常。如果LPAxx未能访问数据页,则指令返回等于0的地址,且p位被清零。如果地址转换未能访问任何页表,则“转换页表错误”状态被置位,以指示错误和错误的级别。关于带有touch指令的LPAxx,在对页访问失败时页错误被取得(例如,生成页错误异常)。在某些实施例中,在对利用“转换页表错误”状态标记的任何页表访问失败时异常未被取得。
在某些实施例中,LPAxx指令支持带有增强页表(EPT)的虚拟化技术(VT)。当在VT环境中操作时,地址转换可部分地取决于请求者是客机OS还是主机OS(或虚拟机管理器-VMM),如处理器中的状态位所指示的。在某些实施例中,如果请求者是主机OS,则LPAxx指令返回主机PA(HPA)。然而,如果请求者是客机OS,则LPAxx指令可返回客机PA(GPA)。图3是根据本发明的一个实施例示出VT环境中地址转换的所选方面的框图。
页表树300包括扩展页表(EPT)302-306。EPT 302-306类似于常规页表(例如,308和310),不同在于EPT 302-306属于主机OS。EPT使用由EPT基址寄存器指向的表树来将GPA转换至HPA。该操作针对需要包括对作为客机页表遍历一部分的客机页表的访问的转换的任何GPA而执行。客机LA(GLA)312的一部分和CR3(314)引用EPT 302中的位置。EPT 302又指向页目录308中的位置。页目录308和GLA 312的另一部分可用于引用EPT 304中的位置。该过程可持续几乎任何级数直到到达GPA 316。EPT 306将GPA 316映射到HPA 318。在某些实施例中,当在VT环境中操作时,LPAxx指令返回存储在最后客机页表中的页自身的GPA(例如,GPA 316)以及一个或多个相关联的页属性。
在某些实施例中,TLB仅保持HPA,这需要遍历页表用以返回GPA,就像在TLB未命中情况下所做的那样。在替换实施例中,TLB包括保持GPA和使能从TLB检索GPA的页属性的附加字段。
图4是根据本发明的一个实施例示出页表项(PTE)的所选方面的框图。在某些实施例中,LPAxx指令的输出参数可从TLB(例如,TLB 204)中的PTE(例如,PTE 400)或TLB内的类似项中获取。例如,PA地址可从字段402中获取,且相关联的页属性可从字段404-420中获取。字段404-420中所示的页属性在以上的表2中进行了讨论。在可选实施例中,PTE 400可包括更多的字段、更少的字段和/或不同的字段。
图5是根据本发明的一个实施例示出支持页属性的线性至物理地址转换的方法的所选方面的流程图。参考过程块502,地址转换逻辑(例如,图2所示的地址转换逻辑200)接收一指令(例如,LPAxx指令)以将存储器指针(例如,LA)转换至PA。地址转换逻辑将存储器指针转换至PA而不进行存储器访问。相反,或者从TLB项或者从PTE获取输出参数。参考过程块506,PA和一个或多个相关联的页属性被返回至处理器(例如,通过将数据置于PARR或经由读取返回总线返回数据)。短语“不进行存储器访问”指的是依赖页表信息来进行转换。页表信息可由页表项(例如,TLB中)或从存储器提供。
在某些实施例中,LPAxx指令除同步调用外还支持异步调用。异步调用指的是从不与正用于转换的当前CR3对应的应用程序至LPAxx指令的调用。在某些实施例中,LPAxx指令包括告知页树页表遍历从哪开始的附加参数(例如,与进行异步调用的应用程序对应的CR3值)。在很多情况下,TLB中的数据在异步调用期间不能使用,因为该数据对应于不同的程序。于是在很多情况下,指向页表遍历以获取PA和一个或多个相关联的页属性。在其它情况下,提供标志以标识TLB项与哪个地址空间(CR3)相关联。这可实现在异步调用中使用TLB项。
还可将本发明的实施例的各元素提供为用于存储机器可执行指令的机器可读介质。机器可读介质可包括但不限于闪存、光盘、紧致盘只读存储器(CD-ROM)、数字通用/视频盘(DVD)ROM、随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、磁或光卡、传播介质或适用于存储电子指令的其它类型的机器可读介质。例如,本发明的实施例可作为从远程计算机(例如,服务器)经由通信链路(例如,调制解调器或网络连接)作为包括在载波或其它传播介质中的数据信号传输至请求计算机(例如,客户机)的计算机程序下载。
应意识到,在本说明书中对“一个实施例”和“实施例”的应用表示结合包括在本发明的至少一个实施例中的实施例所描述的特定特征、结构或特性。因此,强调并应意识到,在本说明书的各部分中对“实施例”或“一个实施例”或“可选实施例”的两个或多个引用未必全指同一实施例。此外,特定特征、结构或特性可适当地结合在本发明的一个或多个实施例中。
类似地,应意识到,在本发明的实施例的上述描述中,为了使公开简单化以帮助理解各发明方面中的一个或多个方面的目的,有时可将各特征组合在单个实施例、附图或其描述中。然而,这种公开方法不应被解释为反映发明所要求保护的主体需要比各权利要求中所明确陈诉的特征要多。相反,如以下权利要求所反映的,发明方面少于单个上述公开实施例的全部特征。因此,详细描述之后的权利要求由此明确地结合在该详细描述中。

Claims (20)

1.一种机器实现方法,包括:
接收一指令以将虚拟存储器指针转换成存储器位置的物理存储器地址;
基于页表信息将所述虚拟存储器指针转换成所述物理存储器地址;以及
返回所述物理存储器地址和一个或多个页属性。
2.如权利要求1所述的方法,其特征在于,所述基于页表信息将所述虚拟存储器指针转换成所述物理存储器地址包括:
读取转换备用缓冲器(TLB)项以获取所述物理存储器地址和所述一个或多个页属性。
3.如权利要求1所述的方法,其特征在于,所述基于页表信息将所述虚拟存储器指针转换成所述物理存储器地址包括:
在TLB不包括所述物理存储器地址时,读取至少一个页表项以获取所述物理存储器地址和所述一个或多个页属性。
4.如权利要求1所述的方法,其特征在于,所述一个或多个属性包括以下至少一个:
存在位,
读/写位,
用户/管理员位,
访问位,
脏位,
全局标志,
执行禁用位,
页大小指示符,以及
转换表错误。
5.如权利要求1所述的方法,其特征在于,所述返回所述物理存储器地址和所述一个或多个页属性包括:
在专用寄存器中存储所述物理存储器地址和所述一个或多个页属性;以及
至少部分地利用微代码访问所述专用寄存器。
6.如权利要求1所述的方法,其特征在于,所述返回所述物理存储器地址和所述一个或多个页属性包括:
经由读取返回总线返回所述物理存储器地址和所述一个或多个页属性。
7.如权利要求1所述的方法,其特征在于,所述接收指令以将虚拟存储器指针转换成存储器位置的物理存储器地址包括从虚拟机管理器接收所述指令;以及
另外其中所述返回所述物理存储器地址和所述一个或多个页属性包括返回主机物理存储器地址。
8.如权利要求1所述的方法,其特征在于,所述接收指令以将虚拟存储器指针转换成存储器位置的物理存储器地址包括从客机操作系统接收所述指令;以及
另外其中所述返回所述物理存储器地址和所述一个或多个页属性包括返回客机物理存储器地址。
9.如权利要求1所述的方法,其特征在于,所述接收指令以将虚拟存储器指针转换成存储器位置的物理存储器地址包括:
接收异步指令以将所述虚拟存储器指针转换成物理存储器地址,所述指令包括用于定义所述指令的上下文的操作数。
10.如权利要求1所述的方法,其特征在于,所述基于页表信息将所述虚拟存储器指针转换成所述物理存储器地址包括:
不基于页表信息,确定与所述虚拟存储器指针相对应的页是否在存储器中。
11.一种系统,包括:
存储设备;以及
处理器和可在其上执行的逻辑,用以
接收一指令以将虚拟存储器指针转换成存储器位置的物理存储器地址;
基于页表信息将所述虚拟存储器指针转换成所述物理存储器地址;以及
返回所述物理存储器地址和一个或多个页属性。
12.如权利要求11所述的系统,其特征在于,基于页表信息用以将所述虚拟存储器指针转换成所述物理存储器地址的所述逻辑包括:
用于读取转换备用缓冲器(TLB)项以获取所述物理存储器地址和所述一个或多个页属性的逻辑。
13.如权利要求11所述的系统,其特征在于,基于页表信息用以将所述虚拟存储器指针转换成所述物理存储器地址的所述逻辑包括:
在TLB不包括所述物理存储器地址时,读取页表项以获取所述物理存储器地址和所述一个或多个页属性的逻辑。
14.如权利要求11所述的系统,其特征在于,所述一个或多个属性包括以下至少一个:
存在位,
读/写位,
用户/管理员位,
访问位,
脏位,
全局标志,
执行禁用位,
页大小指示符,以及
转换表错误。
15.如权利要求11所述的系统,其特征在于,用于接收指令以将虚拟存储器指针转换成存储器位置的物理存储器地址的所述逻辑包括用于从虚拟机管理器接收所述指令的逻辑;以及
另外其中用于返回所述物理存储器地址和所述一个或多个页属性的逻辑包括用于返回主机物理存储器地址的逻辑。
16.一种制品包括:
提供指令的电可访问介质,所述指令在由装置执行时致使所述装置
接收一指令以将虚拟存储器指针转换成存储器位置的物理存储器地址;
基于页表信息将所述虚拟存储器指针转换成所述物理存储器地址;以及
返回所述物理存储器地址和一个或多个页属性。
17.如权利要求16所述的制品,其特征在于,所述指令在由所述装置执行时致使所述装置基于页表信息将所述虚拟存储器指针转换成所述物理存储器地址,导致所述装置:
读取转换备用缓冲器(TLB)项以获取所述物理存储器地址和所述一个或多个页属性。
18.如权利要求16所述的制品,其特征在于,所述指令在由所述装置执行时致使所述装置基于页表信息将所述虚拟存储器指针转换成所述物理存储器地址,导致所述装置:
在TLB不包括所述物理存储器地址时,读取页表项以获取所述物理存储器地址和所述一个或多个页属性。
19.如权利要求16所述的制品,其特征在于,所述一个或多个属性包括以下至少一个:
存在位,
读/写位,
用户/管理员位,
访问位,
脏位,
全局标志,
执行禁用位,
页大小指示符,以及
转换表错误。
20.如权利要求16所述的制品,其特征在于,所述指令在由所述装置执行时致使所述装置接收指令以将虚拟存储器指针转换成存储器位置的物理存储器地址,致使所述装置从虚拟机管理器接收所述指令;以及
另外其中所述指令在由所述装置执行时致使所述装置返回所述物理存储器地址和一个或多个页属性,致使所述装置返回主机物理存储器地址。
CN2008101000501A 2007-06-01 2008-05-30 支持页属性的虚拟地址至物理地址的转换 Expired - Fee Related CN101315614B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210167652.5A CN102789429B (zh) 2007-06-01 2008-05-30 支持页属性的虚拟地址至物理地址的转换

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/757,103 US8799620B2 (en) 2007-06-01 2007-06-01 Linear to physical address translation with support for page attributes
US11/757,103 2007-06-01

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201210167652.5A Division CN102789429B (zh) 2007-06-01 2008-05-30 支持页属性的虚拟地址至物理地址的转换

Publications (2)

Publication Number Publication Date
CN101315614A true CN101315614A (zh) 2008-12-03
CN101315614B CN101315614B (zh) 2012-07-04

Family

ID=39596288

Family Applications (2)

Application Number Title Priority Date Filing Date
CN2008101000501A Expired - Fee Related CN101315614B (zh) 2007-06-01 2008-05-30 支持页属性的虚拟地址至物理地址的转换
CN201210167652.5A Active CN102789429B (zh) 2007-06-01 2008-05-30 支持页属性的虚拟地址至物理地址的转换

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201210167652.5A Active CN102789429B (zh) 2007-06-01 2008-05-30 支持页属性的虚拟地址至物理地址的转换

Country Status (5)

Country Link
US (7) US8799620B2 (zh)
JP (5) JP2008299844A (zh)
CN (2) CN101315614B (zh)
DE (1) DE102008025476A1 (zh)
GB (1) GB2449749B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101882113B (zh) * 2009-05-05 2012-02-22 北京大学 一种基于客户操作系统内核代码替换的内存虚拟化方法
CN104025060A (zh) * 2011-09-30 2014-09-03 英特尔公司 支持近存储器和远存储器访问的存储器通道
CN104380270A (zh) * 2012-06-14 2015-02-25 国际商业机器公司 存储器的根表转换
US9600407B2 (en) 2011-09-30 2017-03-21 Intel Corporation Generation of far memory access signals based on usage statistic tracking
US9600416B2 (en) 2011-09-30 2017-03-21 Intel Corporation Apparatus and method for implementing a multi-level memory hierarchy

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8799620B2 (en) 2007-06-01 2014-08-05 Intel Corporation Linear to physical address translation with support for page attributes
US9213651B2 (en) * 2009-06-16 2015-12-15 Vmware, Inc. Synchronizing a translation lookaside buffer with page tables
CN102763381B (zh) 2009-12-04 2015-04-22 纳派泰克股份公司 在通过控制对队列填充程度进行更新来节省带宽的同时接收并存储数据的组件和方法
US8934341B2 (en) 2009-12-04 2015-01-13 Napatech A/S Apparatus and a method of receiving and storing data packets controlled by a central controller
WO2013101188A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Memory event notification
JP5958195B2 (ja) * 2012-08-31 2016-07-27 日本電気株式会社 仮想記憶管理システム、仮想記憶管理装置、仮想記憶初期化方法および仮想記憶初期化プログラム
US9507729B2 (en) * 2013-10-01 2016-11-29 Synopsys, Inc. Method and processor for reducing code and latency of TLB maintenance operations in a configurable processor
JP6552512B2 (ja) 2013-10-27 2019-07-31 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated 入出力メモリマップユニット及びノースブリッジ
KR20150065435A (ko) * 2013-12-05 2015-06-15 삼성전자주식회사 저장 장치 및 컴퓨팅 시스템
JP2016048502A (ja) * 2014-08-28 2016-04-07 富士通株式会社 情報処理装置及びメモリアクセス処理方法
US9842065B2 (en) * 2015-06-15 2017-12-12 Intel Corporation Virtualization-based platform protection technology
US9672159B2 (en) * 2015-07-02 2017-06-06 Arm Limited Translation buffer unit management
US9996357B2 (en) 2015-10-30 2018-06-12 International Business Machines Corporation Resolving page faults out of context for shared contexts
US9588758B1 (en) 2015-12-18 2017-03-07 International Business Machines Corporation Identifying user managed software modules
US10255196B2 (en) 2015-12-22 2019-04-09 Intel Corporation Method and apparatus for sub-page write protection
US10713177B2 (en) 2016-09-09 2020-07-14 Intel Corporation Defining virtualized page attributes based on guest page attributes
US10324857B2 (en) * 2017-01-26 2019-06-18 Intel Corporation Linear memory address transformation and management
CN108132894B (zh) * 2017-12-23 2021-11-30 天津国芯科技有限公司 一种cpu中tlb多命中异常的定位装置及方法
US10997083B2 (en) * 2018-09-04 2021-05-04 Arm Limited Parallel page table entry access when performing address translations
US11954026B1 (en) * 2018-09-18 2024-04-09 Advanced Micro Devices, Inc. Paging hierarchies for extended page tables and extended page attributes
CN109918131B (zh) * 2019-03-11 2021-04-30 中电海康无锡科技有限公司 一种基于非阻塞指令cache的指令读取方法
US10877788B2 (en) * 2019-03-12 2020-12-29 Intel Corporation Processing vectorized guest physical address translation instructions
KR102400977B1 (ko) * 2020-05-29 2022-05-25 성균관대학교산학협력단 프로세서를 통한 페이지 폴트 처리 방법

Family Cites Families (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5734251A (en) * 1980-08-07 1982-02-24 Toshiba Corp Address conversion and generating system
US4363095A (en) * 1980-12-31 1982-12-07 Honeywell Information Systems Inc. Hit/miss logic for a cache memory
GB2176918B (en) 1985-06-13 1989-11-01 Intel Corp Memory management for microprocessor system
US5173872A (en) * 1985-06-13 1992-12-22 Intel Corporation Content addressable memory for microprocessor system
JP2556870B2 (ja) * 1987-10-02 1996-11-27 健 坂村 データ処理装置
US5182811A (en) 1987-10-02 1993-01-26 Mitsubishi Denki Kabushiki Kaisha Exception, interrupt, and trap handling apparatus which fetches addressing and context data using a single instruction following an interrupt
JPH0391046A (ja) * 1989-09-04 1991-04-16 Hitachi Ltd データ処理装置
JPH07117918B2 (ja) 1989-09-25 1995-12-18 株式会社日立製作所 データ処理システム
JPH04131931A (ja) * 1990-09-25 1992-05-06 Nec Software Ltd 実アドレスロード命令制御方式
DE4030267A1 (de) 1990-09-25 1992-05-07 Alten K Verformbare dichtung des spaltes zwischen dem rand einer gebaeudeoeffnung und dem heck eines an diese herangefahrenen fahrzeuges
EP0526114A1 (en) * 1991-07-29 1993-02-03 Motorola, Inc. A method and apparatus for performing address translation in a data processor using masked protection indirection page descriptors
JPH05189320A (ja) * 1992-01-16 1993-07-30 Mitsubishi Electric Corp メモリ管理ユニット
JPH05250260A (ja) * 1992-03-04 1993-09-28 Toshiba Corp 物理アドレス読出し機能を持つ仮想記憶制御方式の情報処理装置
JPH07152654A (ja) * 1993-10-04 1995-06-16 Motorola Inc メモリ・アクセス誤りを処理しアドレス変換キャッシュを更新する方法
JPH07287668A (ja) * 1994-04-19 1995-10-31 Hitachi Ltd データ処理装置
US5754818A (en) * 1996-03-22 1998-05-19 Sun Microsystems, Inc. Architecture and method for sharing TLB entries through process IDS
US5918251A (en) 1996-12-23 1999-06-29 Intel Corporation Method and apparatus for preloading different default address translation attributes
US5893166A (en) * 1997-05-01 1999-04-06 Oracle Corporation Addressing method and system for sharing a large memory address space using a system space global memory section
US6105113A (en) * 1997-08-21 2000-08-15 Silicon Graphics, Inc. System and method for maintaining translation look-aside buffer (TLB) consistency
US6085296A (en) * 1997-11-12 2000-07-04 Digital Equipment Corporation Sharing memory pages and page tables among computer processes
US6260131B1 (en) * 1997-11-18 2001-07-10 Intrinsity, Inc. Method and apparatus for TLB memory ordering
US6351797B1 (en) * 1997-12-17 2002-02-26 Via-Cyrix, Inc. Translation look-aside buffer for storing region configuration bits and method of operation
US6289432B1 (en) * 1998-03-25 2001-09-11 International Business Machines Corporation Sharing segments of storage by enabling the sharing of page tables
US6564311B2 (en) * 1999-01-19 2003-05-13 Matsushita Electric Industrial Co., Ltd. Apparatus for translation between virtual and physical addresses using a virtual page number, a physical page number, a process identifier and a global bit
JP2001051900A (ja) * 1999-08-17 2001-02-23 Hitachi Ltd 仮想計算機方式の情報処理装置及びプロセッサ
US6598050B1 (en) * 2000-02-11 2003-07-22 Integrated Device Technology, Inc. Apparatus and method for limited data sharing in a multi-tasking system
JP2001282616A (ja) * 2000-04-03 2001-10-12 Mitsubishi Electric Corp メモリ管理方式
US6604187B1 (en) * 2000-06-19 2003-08-05 Advanced Micro Devices, Inc. Providing global translations with address space numbers
US6651156B1 (en) * 2001-03-30 2003-11-18 Mips Technologies, Inc. Mechanism for extending properties of virtual memory pages by a TLB
US7124327B2 (en) * 2002-06-29 2006-10-17 Intel Corporation Control over faults occurring during the operation of guest software in the virtual-machine architecture
US6895491B2 (en) * 2002-09-26 2005-05-17 Hewlett-Packard Development Company, L.P. Memory addressing for a virtual machine implementation on a computer processor supporting virtual hash-page-table searching
US7284100B2 (en) * 2003-05-12 2007-10-16 International Business Machines Corporation Invalidating storage, clearing buffer entries, and an instruction therefor
US7194582B1 (en) * 2003-05-30 2007-03-20 Mips Technologies, Inc. Microprocessor with improved data stream prefetching
US7177985B1 (en) * 2003-05-30 2007-02-13 Mips Technologies, Inc. Microprocessor with improved data stream prefetching
US7552255B1 (en) * 2003-07-30 2009-06-23 Intel Corporation Dynamically partitioning pipeline resources
US20050144422A1 (en) * 2003-12-30 2005-06-30 Mcalpine Gary L. Virtual to physical address translation
US7302546B2 (en) * 2004-01-09 2007-11-27 International Business Machines Corporation Method, system, and article of manufacture for reserving memory
US20050182903A1 (en) * 2004-02-12 2005-08-18 Mips Technologies, Inc. Apparatus and method for preventing duplicate matching entries in a translation lookaside buffer
US7167970B2 (en) 2004-05-24 2007-01-23 Sun Microsystems, Inc. Translating loads for accelerating virtualized partition
EP1617335A1 (fr) 2004-07-12 2006-01-18 Stmicroelectronics SA Procédé de programmation d'un contrôleur de DMA dans un système sur puce et système sur puce associé
US20060036830A1 (en) * 2004-07-31 2006-02-16 Dinechin Christophe De Method for monitoring access to virtual memory pages
US8954751B2 (en) * 2004-10-08 2015-02-10 International Business Machines Corporation Secure memory control parameters in table look aside buffer data fields and support memory array
JP2006185284A (ja) * 2004-12-28 2006-07-13 Renesas Technology Corp データ処理装置
US7428626B2 (en) * 2005-03-08 2008-09-23 Microsoft Corporation Method and system for a second level address translation in a virtual machine environment
US7334076B2 (en) * 2005-03-08 2008-02-19 Microsoft Corporation Method and system for a guest physical address virtualization in a virtual machine environment
US20060224815A1 (en) * 2005-03-30 2006-10-05 Koichi Yamada Virtualizing memory management unit resources
US7363463B2 (en) * 2005-05-13 2008-04-22 Microsoft Corporation Method and system for caching address translations from multiple address spaces in virtual machines
EP1883865A4 (en) * 2005-05-24 2010-12-15 Marathon Techn Corp FAULT TOLERANT COMPUTER SYSTEM WITH SYMMETRIC MULTIPROCESSOR
US7426626B2 (en) * 2005-08-23 2008-09-16 Qualcomm Incorporated TLB lock indicator
US20070061549A1 (en) * 2005-09-15 2007-03-15 Kaniyur Narayanan G Method and an apparatus to track address translation in I/O virtualization
US7805588B2 (en) * 2005-10-20 2010-09-28 Qualcomm Incorporated Caching memory attribute indicators with cached memory data field
WO2007060990A1 (ja) 2005-11-24 2007-05-31 Tonen Chemical Corporation ポリオレフィン微多孔膜及びその製造方法、並びに電池用セパレータ及び電池
JP4647477B2 (ja) 2005-12-02 2011-03-09 株式会社トーツヤ・エコー 両面装飾体用の印刷物、その製造方法、及び両面装飾体
US7555628B2 (en) * 2006-08-15 2009-06-30 Intel Corporation Synchronizing a translation lookaside buffer to an extended paging table
US8799620B2 (en) 2007-06-01 2014-08-05 Intel Corporation Linear to physical address translation with support for page attributes
JP4814970B2 (ja) 2009-03-30 2011-11-16 株式会社沖データ 画像形成装置

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101882113B (zh) * 2009-05-05 2012-02-22 北京大学 一种基于客户操作系统内核代码替换的内存虚拟化方法
US10282323B2 (en) 2011-09-30 2019-05-07 Intel Corporation Memory channel that supports near memory and far memory access
CN104025060B (zh) * 2011-09-30 2017-06-27 英特尔公司 支持近存储器和远存储器访问的存储器通道
US9342453B2 (en) 2011-09-30 2016-05-17 Intel Corporation Memory channel that supports near memory and far memory access
US9600407B2 (en) 2011-09-30 2017-03-21 Intel Corporation Generation of far memory access signals based on usage statistic tracking
CN107391397A (zh) * 2011-09-30 2017-11-24 英特尔公司 支持近存储器和远存储器访问的存储器通道
US9619408B2 (en) 2011-09-30 2017-04-11 Intel Corporation Memory channel that supports near memory and far memory access
CN107391397B (zh) * 2011-09-30 2021-07-27 英特尔公司 支持近存储器和远存储器访问的存储器通道
US10719443B2 (en) 2011-09-30 2020-07-21 Intel Corporation Apparatus and method for implementing a multi-level memory hierarchy
US9600416B2 (en) 2011-09-30 2017-03-21 Intel Corporation Apparatus and method for implementing a multi-level memory hierarchy
US10241943B2 (en) 2011-09-30 2019-03-26 Intel Corporation Memory channel that supports near memory and far memory access
US10241912B2 (en) 2011-09-30 2019-03-26 Intel Corporation Apparatus and method for implementing a multi-level memory hierarchy
CN104025060A (zh) * 2011-09-30 2014-09-03 英特尔公司 支持近存储器和远存储器访问的存储器通道
US10282322B2 (en) 2011-09-30 2019-05-07 Intel Corporation Memory channel that supports near memory and far memory access
US10691626B2 (en) 2011-09-30 2020-06-23 Intel Corporation Memory channel that supports near memory and far memory access
CN104380270B (zh) * 2012-06-14 2017-08-25 国际商业机器公司 存储器的根表转换
CN104380270A (zh) * 2012-06-14 2015-02-25 国际商业机器公司 存储器的根表转换

Also Published As

Publication number Publication date
US20080301398A1 (en) 2008-12-04
JP2012123814A (ja) 2012-06-28
US20220050791A1 (en) 2022-02-17
JP2008299844A (ja) 2008-12-11
US9158703B2 (en) 2015-10-13
US9164917B2 (en) 2015-10-20
GB2449749B (en) 2010-03-03
GB2449749A (en) 2008-12-03
CN102789429B (zh) 2016-06-22
JP6212102B2 (ja) 2017-10-11
US20180060246A1 (en) 2018-03-01
US8799620B2 (en) 2014-08-05
US20160041921A1 (en) 2016-02-11
CN101315614B (zh) 2012-07-04
US9164916B2 (en) 2015-10-20
JP5855632B2 (ja) 2016-02-09
US11074191B2 (en) 2021-07-27
GB0809264D0 (en) 2008-06-25
CN102789429A (zh) 2012-11-21
JP2016066372A (ja) 2016-04-28
US20140304488A1 (en) 2014-10-09
DE102008025476A1 (de) 2008-12-18
JP6567618B2 (ja) 2019-08-28
JP2014067445A (ja) 2014-04-17
US20140351554A1 (en) 2014-11-27
JP2018022508A (ja) 2018-02-08
US20140351553A1 (en) 2014-11-27

Similar Documents

Publication Publication Date Title
CN101315614B (zh) 支持页属性的虚拟地址至物理地址的转换
US8688953B2 (en) Method and apparatus for managing software controlled cache of translating the physical memory access of a virtual machine between different levels of translation entities
EP2771794B1 (en) Software translation lookaside buffer for persistent pointer management
KR101572409B1 (ko) 비교 및 대체 dat 테이블 엔트리
US8195917B2 (en) Extended page size using aggregated small pages
US8301863B2 (en) Recursive logical partition real memory map
US8185692B2 (en) Unified cache structure that facilitates accessing translation table entries
US7596677B1 (en) Paging cache optimization for virtual machine
KR20080041707A (ko) Tlb 록 표시자
CN114328295A (zh) 存储管理装置、处理器、相关装置和相关方法
JP2007520014A (ja) 状況切換え環境中におけるアドレス変換技術
US12008261B2 (en) Method and device for accessing memory
US20220365712A1 (en) Method and device for accessing memory

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120704

Termination date: 20140530