CN101901129B - 以高性能方式从cpu或处理单元中访问物理存储器的方法和装置 - Google Patents

以高性能方式从cpu或处理单元中访问物理存储器的方法和装置 Download PDF

Info

Publication number
CN101901129B
CN101901129B CN2010101281837A CN201010128183A CN101901129B CN 101901129 B CN101901129 B CN 101901129B CN 2010101281837 A CN2010101281837 A CN 2010101281837A CN 201010128183 A CN201010128183 A CN 201010128183A CN 101901129 B CN101901129 B CN 101901129B
Authority
CN
China
Prior art keywords
physical address
memory
address
type
virtual
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.)
Expired - Fee Related
Application number
CN2010101281837A
Other languages
English (en)
Other versions
CN101901129A (zh
Inventor
S·蒙达尔
R·帕特尔
L·史密斯三世
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
Publication of CN101901129A publication Critical patent/CN101901129A/zh
Application granted granted Critical
Publication of CN101901129B publication Critical patent/CN101901129B/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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • 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/30181Instruction operation extension or modification
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass

Landscapes

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

Abstract

在此描述了一种用处理器来访问由物理地址引用的物理存储器位置的方法和装置。该处理器取出/接收带有对虚拟存储器地址的引用和/或对物理地址的引用的指令。翻译逻辑将该虚拟存储器地址翻译成物理地址并将该物理地址提供给公用接口。物理寻址逻辑解码对物理地址的引用并且基于由该物理寻址逻辑存储的存储器类型而将这些物理地址提供给公用接口。

Description

以高性能方式从CPU或处理单元中访问物理存储器的方法和装置
本申请是PCT国际申请号为PCT/US2005/042154、国际申请日为2005年11月17日,中国国家申请号为200580046263.5,题为“以高性能方式从CPU或处理单元中访问物理存储器的方法和装置”的申请的分案申请。
领域
本发明涉及处理器领域,尤其涉及用处理元件来访问存储器。
背景
随着处理资源的日益增加,对于在单个微处理器上运行多个软件应用程序和操作***的要求也已随之增加。通常被称为虚拟机扩展(VMX)体系结构的环境向各软件应用程序和操作***分配单个处理器的资源。因此,单个微处理器或多个处理元件的资源可以在多个操作***和多个应用程序之间划分,这就允许用户潜在地增加在计算平台上对这些处理器或处理元件的利用。
通常在VMX环境中,虚拟机监控器(VMM)程序与诸如虚拟机(VM)程序等一个或多个软件程序以及一个或多个微处理器相接口。虚拟机(VM)可以包括诸如操作***(OS)或其他软件应用程序等客机软件。通常,为允许多个VM在单个处理器上运行,在存储器内存储与该VMM和每个VM程序有关的状态信息和控制信息。
普遍用于存储这一状态和控制信息的一种结构是虚拟机控制结构(VMCS)。在微处理器中存储VMCS能够潜在地对该VMCS体系结构进行特定寻址;因此,VMCS通常位于主***存储器的一部分内。
然而,在***存储器中定位VMCS通常会造成对使用虚拟存储器寻址的微处理器的寻址限制。通常,利用虚拟存储器的微处理器为要取出或写入的存储器位置生成线性地址。该线性地址由微处理器内的翻译单元翻译成***存储器中各存储器位置的物理地址。虽然可以按此方式对***存储器的VMCS部分进行寻址,但是诸如页错误等翻译过程中的差错在VMX环境中是难以处理的。因此,诸如VMWRITE、VMREAD和其他VMX指令之类的许多指令对***存储器中的存储器位置进行物理寻址,而不是提供要被翻译的线性地址。
在利用虚拟存储器分页的微处理器中,VMX指令需要直接访问物理存储器而无需线性至物理地址的翻译。然而,当前的***通常要求在对存储器的直接物理地址访问能够进行之前禁用虚拟存储器分页并刷新线性至物理地址翻译缓冲器。禁用分页及刷新翻译缓冲器所需的时间量通常会招致较长执行时间的惩罚。
附图简述
本发明以示例的方式示出,且并不旨在受到附图中各图的限制。
图1示出了带有两个虚拟机、虚拟机监控器、处理器和***存储器的***的一个实施例。
图2示出了在图1中描绘的处理器的部分功能框图。
图3示出了在图2中描绘的物理地址逻辑的一个实施例。
图4示出了具有微处理器以及带有虚拟机控制结构的存储器的***的一个实施例。
图5示出了对存储器位置进行线性寻址的指令和对存储器位置进行物理寻址的指令的一个实施例。
详细描述
在随后的描述中,将阐明诸如特定虚拟机环境、特定组件和特定功能块之类的各种特定细节以提供对本发明的透彻理解。然而本领域普通技术人员显而易见的是无需利用这些特定细节也能够实践本发明。在其他实例中,对公知的组件或方法,诸如公知的微处理器功能块等未做出详细描述以免不必要地混淆本发明。
图1示出了用于将也可被称为虚拟机或虚拟机程序的客机软件与处理器120接口的虚拟机环境。具体地,图1描绘了第一虚拟机105和第二虚拟机110。虚拟机105和110可以是以下的任何一项或其任意组合:操作***、操作***专用应用程序、通用应用程序、软件例程或者可以在处理器120上运行的任何其他程序。在一个实施例中,处理器120具有多个逻辑处理器。在另一个实施例中,处理器120是***中多个物理处理器之一。
图1还示出了用于将虚拟机105和虚拟机110与处理器120接口的虚拟机管理器(VMM)115。在一个实施例中,有关VM 105、VM 110和VMM 115的状态和控制信息被存储在***存储器125中。例如,图1描绘了驻留在***存储器125内用于存储有关VM 105、VM 110和VMM 115的状态和控制信息的虚拟机控制结构(VMCS)130。虽然图1将VMCS 130描绘为驻留在***存储器125中,但是VMCS可以驻留在位于***内的任何存储器结构中,包括驻留在处理器120内的存储器或仅耦合至处理器120的存储器,诸如***存储器125。作为一个优势,如果VMCS驻留在主***存储器中,则指令可以仅通过提供要加到有关该VMCS部分的已建立的基地址的偏移量来引用特定的物理地址。这种偏移量寻址通常减少了与在微处理器内放置物理寻址的存储器相关联的体系结构特有的实现问题。然而,VMCS部分130如上所述并不限于驻留在***存储器125内。
在一个实施例中,VM 105和110以及VMM 115发出对***存储器125进行线性寻址的指令。处理器120随后将该线性地址翻译成***存储器125内的物理地址。在另一个实施例中,VM 105、VM 110或VMM 115发出对***存储器125进行物理寻址的指令。处理器120随后直接访问***存储器125内的物理地址而无需地址翻译。如下将参考图2更详细地讨论处理器120和地址翻译。
***存储器125可以是***中使用的任何种类的存取存储器。在一个实施例中,***存储器125可以是诸如静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、单倍数据速率(SDR)RAM、双倍数据速率(DDR)RAM、任何其他多倍数据速率RAM之类的随机存取存储器(RAM)设备,或者可以是任何其他类型的存取存储器。在另一个实施例中,***存储器125可以是与处理器120相关联的任何其他存储设备,包括硬盘驱动器、位于远程的存储设备或任何其他短期或长期存储设备。
转向图2,示出了处理器120的一个示例性实施例。在一个实施例中,处理器120是能够独立于另一个处理器操作的微处理器。在另一个实施例中,处理器120是结合其他处理元件来操作的协处理元件。
在一个实施例中,处理器120包括其中包含用于取出和/或接收指令的逻辑的取出单元,诸如指令取出210。例如,指令可以包括对单个或多个数据操作数执行的单次操作。又如,指令包括对单个或多个数据操作数执行的多次操作,也被称为微操作。包括多次操作的指令通常被称为宏指令,而单独的各操作则通常被称为微指令。例如,对两个数据操作数进行操作的宏指令可以包括多个微指令,其中第一微指令指示处理器120载入第一数据操作数,第二微指令指示处理器120载入第二数据操作数,而第三微指令则指示处理器120对第一和第二数据操作数进行操作。在一个实施例中,指令取出单元210取出固定长度指令。在另一个实施例中,指令取出单元210取出可变长度指令。在又一个实施例中,指令取出单元210取出x86指令。
处理器120还可包括指令解码215。在一个实施例中,指令解码215是用于对由指令取出210取出的包括固定长度、可变长度和x86指令在内的各指令进行解码的解码单元或解码逻辑。例如,解码逻辑将由指令单元210取出的指令解码成其独立的微操作。在一个实施例中,指令解码215包括用于解码复杂指令的微码只读存储器。在另一个实施例中,指令解码215包括用于存储最近取出的指令或用于存储最近解码的指令的低级高速缓存。在又一个实施例中,指令解码215包括协助推测指令(speculative instruction)解码和执行的分支预测或推测逻辑。
处理器120还示出了耦合至指令解码215和指令取出210的微定序器220。在一个实施例中,处理器120是按照指令和微操作被取出和解码的顺序来执行这些指令和微操作的有序执行处理器。在有序处理器的一个实施例中,取出的指令被解码并且直接从解码逻辑或存储被解码指令的高速缓存中执行。在一替换实施例中,微定序器220位于有序执行处理器内,用于接收、传递并跟踪来自指令解码215和指令高速缓存(未示出)的被解码的微操作。
在另一个实施例中,处理器120是无序执行处理器,其中各指令和微操作被重新排序并以非推测和/或推测的方式执行。因此,微定序器220可以包括无序地执行微操作并跟踪这些微操作执行状态的无序执行逻辑、跟踪推测分支执行并更新每个微指令执行状态的分支预测和更新逻辑、确认推测分支执行成功的引退逻辑、以及无序执行指令的其他逻辑。有序执行和无序执行处理器设计都是公知的。
在一个实施例中,被取出并解码的指令引用或包括了引用虚拟存储器/线性地址的微操作。在另一个实施例中,被取出并解码的指令引用或包括了引用物理地址的微操作。在又一个实施例中,带有多个微操作的宏指令包括引用线性地址的微操作和引用物理地址的微操作。
在一个实施例中,线性地址被送至通常也被称为线性至物理地址翻译器、线性地址翻译单元和翻译后备缓冲器(TLB)的翻译缓冲器235。在一个实施例中,翻译缓冲器235接收对线性地址的引用并将一物理地址的表示提供给公用接口,诸如公用接口290。随后将更为详细地讨论公用接口290。
通常线性地址被称作是在已启用虚拟存储器分页的处理器内的虚拟存储器地址。在一个实施例中,对送至翻译缓冲器235的线性地址的引用包括该线性地址本身。在另一个实施例中,送至翻译缓冲器235的地址包括该线性地址的已编码表示或者对被解码或处理以获得物理地址表示的线性地址的某一其他引用。显而易见的是虚拟存储器地址不限于线性地址,而是可以被翻译成物理地址的任何形式的虚拟存储器地址。
在一个实施例中,翻译缓冲器235包括用于将虚拟存储器地址翻译成物理地址的查找表。在另一个实施例中,翻译缓冲器235还包括将输入的虚拟存储器地址解码成物理地址的翻译逻辑。在又一个实施例中,翻译缓冲器235包括存储器类型寄存器240或与其相关联。在一个实施例中,也可被称为存储器类型读寄存器(MTRR)的存储器类型寄存器(MTR)读取和/或存储用于公用接口290的存储器类型。作为一个说明性示例,MTR 240可读或可存储的存储器类型是可高速缓存的。在一个实施例中,当MTR 240存储可高速缓存的存储器类型时,翻译缓冲器235将物理地址的表示提供给作为诸如高速缓存接口260等高速缓存接口的公用接口290。在一个实施例中,物理地址的表示包括实际的物理地址。在另一个实施例中,物理地址的表示包括用于将物理地址存入/写入高速缓存265中的标签。
在MTR 240内存储的存储器类型的另一个说明性示例是不可高速缓存的存储器类型。在一个实施例中,翻译缓冲器235将物理地址的已翻译表示提供给公用接口290。在一个实施例中,公用接口290是数据接口或数据取出逻辑,诸如外部数据接口270。
作为一个说明性示例,公用接口290可以是可用于载入与处理器120内的物理地址相关联的数据操作数、请求/取出来自位于处理器120或***处理器120内的物理地址的元素、或者监听/取出由诸如高速缓存265等高速缓存内的物理地址所引用的元素的任何接口逻辑。在一个实施例中,元素包括数据操作数。在另一个实施例中,元素包括指令。在又一个实施例中,元素包括状态或控制信息的一部分。然而,元素不限于指令、数据操作数、状态信息或控制信息。
处理器120还包括也可被称为物理寻址逻辑或物理地址单元的物理地址逻辑245。在一个实施例中,物理地址逻辑245引用一物理地址并将物理地址的表示提供给公用接口290。作为第一示例,对物理地址的引用包括该物理地址本身。作为第二示例,对物理地址的引用包括离物理存储器内的基地址的偏移量。作为第三示例,对物理地址的引用包括物理地址或偏移量的已编码表示。
在一个实施例中,物理地址逻辑如图3所示还包括解码逻辑305。作为一示例,解码逻辑305可用于解码已编码的物理地址和/或从指令或微操作中提供的偏移量中生成物理地址。作为一个特定示例,较早的微操作为物理地址逻辑245提供一个基地址以供将来的微操作使用。随后的微操作包括其中含有偏移量的已编码表示的表示。物理地址逻辑245解码该偏移量并通过将基地址和偏移量相加来生成物理地址。在另一个实施例中,对物理地址的引用由物理地址逻辑245解码,以便指向微定序器220提供的下一个微操作。标题为“Virtual Machine Control StructureIdentification Decoder”的序列号为10/876,509的共同待批的连续申请更为详细地讨论了可在物理地址逻辑245中用于引用一物理地址并提供该物理地址的表示的ID解码引擎的一个示例。
在又一个实施例中,物理地址逻辑245如图3所示包括用以存储存储器类型的控制寄存器310或与该控制寄存器310相关联。作为第一示例,所存储的存储器类型是可高速缓存的,也被称为回写(WB)。作为第二示例,所存储的存储器类型是不可高速缓存的(UC)。在一个实施例中,存储器类型寄存器240和控制寄存器310存储相同的存储器类型。在一替换实施例中,存储器类型寄存器240和控制寄存器310存储不同的存储器类型。
作为第一个说明性示例,处理器120至少包括带控制寄存器310的物理地址逻辑245、与MTR240相关联以存储可高速缓存的存储器类型的翻译缓冲器235、高速缓存接口260、高速缓存265以及外部数据接口270。因此,当翻译缓冲器235翻译虚拟存储器地址时,它检查存储在MTR 240内的存储器类型并将物理地址的已翻译表示提供给高速缓存接口260。高速缓存接口260检查高速缓存265以观察是否有已翻译物理地址所引用元素的有效副本存在。如果高速缓存265具有该元素的有效副本,则将该元素从高速缓存265读入处理器120内的逻辑,诸如寄存器文件275。此外,如果高速缓存265内不存在有效副本,则外部数据接口270或某一其他数据取出逻辑从存储器中的位置中读取由该物理地址引用的元素。
继续上述示例,在一个实施例中,控制寄存器310存储不可高速缓存的存储器类型。即使这样,存储器类型寄存器240仍存储可高速缓存的存储器类型,控制寄存器310不限于由MTR 240存储的相同存储器类型。如果控制寄存器310的确存储了可高速缓存的存储器类型,则物理地址逻辑245将物理地址提供给高速缓存接口260并且发生与上述相同的查找过程。然而,如果物理地址逻辑245检查控制寄存器310并且控制寄存器310存储不可高速缓存的存储器类型,则物理地址逻辑245将物理地址的表示直接提供给诸如外部数据接口270等数据取出逻辑。外部数据接口270从由该物理地址引用的存储器位置中取出该元素。
虽然上述示例中的控制寄存器310存储与MTR240不同的存储器类型,但是在另一个实施例中,物理地址逻辑245读MTR 240并在随后将相同的存储器类型存入控制寄存器310。然而,物理地址逻辑不限于包括控制寄存器310或与其相关联。在又一个实施例中,物理地址逻辑245从MTR 240中读出存储器类型。
上述示例使用写/存储作为一示例;然而在另一个实施例中,相同的装置和方法适用于包括对虚拟存储器地址或物理地址的引用的写和其他指令。修改上述说明性示例,如果发生写,则把要写入存储器的元素的物理地址提供给高速缓存接口260和/或外部数据接口270。如果存储器类型是可高速缓存的,则将该元素写入高速缓存265并在随后由高速缓存265或外部数据接口270写入存储器位置。如果存储器类型是不可高速缓存的,则由外部数据接口270将该元素直接写入存储器位置。
处理器120还可以包括寄存器文件275和执行单元280。在一个实施例中,寄存器文件275可用于载入并存储数据操作数,以及将这些数据操作数提供给诸如执行单元280等执行资源。在一个实施例中,执行单元280能够串行和/或并行地操作单个或多个数据操作数。
虽然没有特别地描绘,但是在处理器120的其它实施例中,处理器120中还可以包括以下各项中的任何一项、任何多项或各项的任何组合:数据路径、指令路径、算术逻辑单元(ALU)、能够执行单条指令或多条指令以串行或并行地操作单个或多个数据操作数的浮点计算单元、体系结构状态寄存器、总线控制器、中断控制器、以及高级可编程中断控制器(APIC)、预取单元。
转向图4,描绘了包括物理地址逻辑245和VMCS 430的***的一个实施例。微处理器405被示为由互连410耦合至存储器控制器415。存储器控制器415由互连435耦合至图形设备440。在一个替换实施例中,图形设备440被集成在存储器控制器415内。存储器控制器415由互连420耦合至存储器425。在一个实施例中,存储器425是***存储器。在另一个实施例中,存储器425是位于***内的任何存储器设备。存储器426被描绘为包括VMCS部分430,用于存储有关在***上运行的VMM和/或客机软件的状态和/或控制信息。
存储器控制器415还被描绘为由互连445耦合至输入/输出(I/O)控制器450。I/O控制器450由互连455耦合至存储460、网络接口465和输入/输出设备470。在一个实施例中,存储460是硬盘驱动器。在另一个实施例中,存储460是磁盘驱动器。在又一个实施例中,存储460是***中的任何静态存储设备。在一个实施例中,网络接口465与局域网(LAN)接口。在另一实施例中,网络接口465与诸如因特网等更大的网络接口。输入/输出设备470可以包括任何用户输入或***相关输出设备,诸如键盘、鼠标、监视器或打印机。
参见图5,示出了从存储器中载入一元素并将一元素存入存储器的示例。来自VMM 510的第一指令,诸如载入575,包括从第一虚拟/线性存储器地址中载入第一元素的操作。在一个实施例中,该第一元素是指令。在另一个实施例中,第二元素是数据操作数。在第三个实施例中,该第一元素是通常存储在存储器内的任何其他元素。载入575被描绘为由VM 505生成。然而在另一个实施例中,载入575由在处理器520上运行的其他客机软件程序生成。翻译缓冲器525将第一虚拟/线性存储器地址翻译成第一物理存储器地址,该地址引用第一存储器位置,诸如存储器560内的第一存储器位置565。在一个实施例中,存储器560具有多个存储单元并且第一存储器位置565是多个存储单元中的至少一个存储单元。
翻译缓冲器525还将第一物理地址提供给高速缓存接口535或直接提供给外部数据接口545。如果高速缓存接口535接收到带有第一物理地址的请求,则高速缓存接口535检查高速缓存540以观察存储在第一存储器位置565内的第一元素的有效副本是否存在。如果有效副本存在,则将该第一元素载入寄存器文件550或载入其他处理器逻辑520。然而,如果翻译缓冲器直接将该第一物理地址提供给外部数据接口545或者高速缓存540内不存在第一存储器位置565内的第一元素的有效副本,则外部数据接口545从第一存储器位置565中取出该第一元素。一旦取出该第一元素,就将其存储在高速缓存540内和/或将其载入寄存器文件550。寄存器文件550还将第一元素载入执行单元555以供操作。
此外,处理器520取出或接收第二指令,诸如存储580。存储580请求处理器520将第二元素存储在引用第二存储器位置570的第二物理地址中。在一个实施例中,该第二元素是由载入指令575先前载入的第一元素。在另一个实施例中,第二元素是由执行单元555对第一元素575执行操作并在寄存器文件550和/或高速缓存540中对该第一元素575进行更新的结果。在又一个实施例中,第二元素是存储在处理器520内的不相关元素。如上所述,存储指令580可以含有包括要与基地址相加的偏移量在内的第二物理地址的任何表示。物理地址逻辑530基于所存储的存储器类型将第二物理地址提供给高速缓存接口535和/或外部数据接口545。外部数据接口545随后将该元素写入/存入第二存储器位置570。
如上可见,如果在***存储器内保留VMCS部分,则微处理器内的物理地址逻辑允许该微处理器接收引用线性/虚拟存储器地址和物理地址两者的多个指令或单个宏指令。此外,该微处理器能够解码该地址并将物理地址提供给接口逻辑,用以从由该物理地址引用的存储器位置中检索/载入元素,无需禁用分页、刷新翻译缓冲器以及重新启用分页,而禁用分页、刷新翻译缓冲器以及重新启用分页通常会导致大量执行时间的惩罚。
在前述说明书中,已经参考了其具体的示例性实施例描述了本发明。但显而易见的是可以对其做出各种修改和改变而不背离在所附权利要求书中所阐明的本发明的广义精神和范围。因此,可以认为该说明书和附图是示例性而非限制性的。

Claims (29)

1.一种用于支持有效的物理和虚拟寻址的微处理器,包括:
用以解码第一和第二指令的解码逻辑模块,其中所述第一指令引用线性地址,而所述第二指令引用第一物理地址;
第一存储器类型寄存器和第二存储器类型寄存器,其中每个存储器类型寄存器都适于持有可高速缓存存储器类型或不可高速缓存存储器类型;
线性地址至物理地址翻译逻辑模块,适于将所述线性地址翻译成第二物理地址,根据持有可高速缓存存储器类型的第一存储器类型寄存器将所述第二物理地址的表示提供给高速缓存接口,并且根据持有不可高速缓存存储器类型的第一存储器类型寄存器将所述第二物理地址的表示提供给外部接口;以及
物理寻址逻辑模块,适于根据持有不可高速缓存存储器类型的第二存储器类型寄存器,将所述第一物理地址的表示直接提供给所述外部接口,无需禁用分页和刷新所述线性地址至物理地址翻译逻辑模块,且根据持有可高速缓存存储器类型的第二存储器类型寄存器,将所述第一物理地址的表示提供给所述高速缓存接口。
2.如权利要求1所述的微处理器,其特征在于,所述第一物理地址包括相对基物理地址的偏移,所述第一物理地址的表示包括用于访问存储单元的全物理地址,并且所述物理寻址逻辑模块包括用于从所述偏移生成所述全物理地址的解码逻辑模块。
3.如权利要求1所述的微处理器,其特征在于,所述第一指令和所述第二指令都包含多个微操作,并且所述第一指令中的所述多个微操作之一将包括对所述线性地址的引用,而所述第二指令中的所述多个微操作之一将包括对所述第一物理地址的引用。
4.如权利要求1所述的微处理器,其特征在于,所述第一物理地址引用***存储器中的第一位置,所述线性地址是所述第二物理地址的虚拟表示,所述第二物理地址引用所述***存储器内的第二位置,所述线性地址和所述第二物理地址是不同的。
5.一种用于支持有效的物理和虚拟寻址的集成电路,包括:
外部接口,其能够从存储器取出元素;
高速缓存逻辑模块,其与所述外部接口耦合,用于保持从所述存储器取出元素;
解码单元,用于解码引用线性地址的第一微操作以及引用第一物理地址的第二微操作;
耦合至所述解码单元的翻译缓冲器,用以将所述线性地址翻译成第二物理地址,并将所述第二物理地址的表示提供给所述高速缓存逻辑模块;
物理地址存储器访问类型控制寄存器,其适于持有用于指示不可高速缓存的存储器访问类型的第一值,或用于指示可高速缓存的存储器访问类型的第二值;以及
耦合至所述解码单元的物理寻址逻辑模块,用以响应于所述物理地址存储器访问类型控制寄存器持有用于指示不可高速缓存的存储器访问类型的第一值而将所述第一物理地址的表示直接提供给所述外部接口,以及用以响应于所述物理地址存储器访问类型控制寄存器持有用于指示可高速缓存的存储器访问类型的第二值而将所述第一物理地址的表示直接提供给所述高速缓存逻辑模块。
6.如权利要求5所述的集成电路,其特征在于,所述物理寻址逻辑模块包括用以根据对所述第一物理地址的引用生成所述第一物理地址的表示的解码逻辑模块。
7.如权利要求6所述的集成电路,其特征在于,所述物理寻址逻辑模块和所述翻译缓冲器通过定序逻辑模块耦合至所述解码单元,所述定序逻辑模块能够对包括第一和第二微操作的无序微操作排序。
8.如权利要求7所述的集成电路,其特征在于,还包括:
耦合至所述高速缓存逻辑模块以持有来自所述高速缓存逻辑模块的元素的寄存器文件;以及
对所述寄存器文件中持有的所述元素进行操作的至少一个执行单元。
9.如权利要求8所述的集成电路,其特征在于,所述第一和第二微操作包含在宏指令中,并且所述解码单元能够对可变长度的宏指令进行解码。
10.如权利要求6所述的集成电路,其特征在于,还包括虚拟存储器访问类型寄存器,其与所述翻译缓冲器相关联,以持有用于指示不可高速缓存的存储器访问类型的第一值以及用于指示可高速缓存的存储器访问类型的第二值。
11.如权利要求10所述的集成电路,其特征在于,所述物理寻址逻辑模块用于读出所述虚拟存储器访问类型寄存器中持有的值,并将该值存储在所述物理地址存储器访问类型控制寄存器中。
12.如权利要求10所述的集成电路,其特征在于,所述虚拟存储器访问类型寄存器和所述物理地址存储器访问类型控制寄存器持有不同的值。
13.一种用于支持有效的物理和虚拟寻址的***,包括:
***存储器;
耦合至所述***存储器的微处理器,其中所述微处理器包括外部接口,其能够从所述***存储器取出信息;高速缓存存储器,用于高速缓存来自所述***存储器的信息;解码单元,用于解码指令;线性地址翻译单元,用以将线性地址翻译成物理地址;控制寄存器,其持有用于指示第一存储器访问类型的第一值和用于指示第二存储器访问类型的第二值;以及物理地址访问单元,用于响应于所述控制寄存器持有第一值而将物理地址提供给高速缓存接口,并且响应于所述控制寄存器持有第二值而直接将物理地址提供给所述外部接口,无需通过所述线性地址翻译单元进行翻译。
14.如权利要求13所述的***,其特征在于,所述***存储器包括用于虚拟机监控器VMM的虚拟机控制结构VCMS。
15.如权利要求13所述的***,其特征在于,所述物理地址访问单元还用于提供物理地址,无需刷新所述线性地址翻译单元。
16.如权利要求13所述的***,其特征在于,所述物理地址访问单元包括将偏移解码成所述物理地址的表示的解码器。
17.如权利要求16所述的***,其特征在于,所述第一存储器访问类型和所述第二存储器访问类型中的每个均选自由可高速缓存的和不可高速缓存的存储器访问类型所组成的组。
18.如权利要求16所述的***,其特征在于,第二指令是虚拟机扩展VMX指令,其用所述偏移对存储单元进行物理寻址。
19.一种微处理器中使用的用于支持有效的物理和虚拟寻址的设备,所述微处理器包括用于持有包括可高速缓存或不可高速缓存存储器类型的虚拟存储器访问类型的虚拟存储器访问类型寄存器,以及用于持有包括可高速缓存或不可高速缓存存储器类型的物理存储器访问类型的物理地址存储器访问类型控制寄存器,而所述设备包括:
用于接收第一指令以从第一虚拟存储器地址中读取第一元素的装置,其中所述第一指令由第一虚拟机生成;
用于将所述第一虚拟存储器地址翻译成第一物理地址的装置;
用于从由所述第一物理地址引用的第一位置中取出所述第一元素的装置,其中第一位置基于所述虚拟存储器访问类型寄存器所持有的所述虚拟存储器访问类型;
用于接收第二指令以在第二物理地址中存储第二元素的装置,其中所述第二指令由第二虚拟机生成;以及
用于在由所述第二物理地址引用的第二位置中存储所述第二元素的装置,无需禁用或刷新用于翻译第一虚拟存储器地址的所述装置,其中第二位置基于所述物理地址存储器访问类型控制寄存器所持有的所述虚拟存储器访问类型。
20.如权利要求19所述的设备,其特征在于,所述第一元素是数据操作数。
21.如权利要求19所述的设备,其特征在于,所述第二元素包括所述第一元素。
22.如权利要求20所述的设备,其特征在于,还包括:用于操作所述第一元素以获得第一结果的装置,其中所述第二元素基于所述第一结果。
23.如权利要求20所述的设备,其特征在于,用于将所述第一虚拟存储器地址翻译成第一物理地址的所述装置包括翻译后备缓冲器TLB。
24.如权利要求23所述的设备,其特征在于,所述第一和第二位置在***存储器内。
25.如权利要求19所述的设备,其特征在于,所述第一和第二虚拟机是相同的虚拟机。
26.如权利要求24所述的设备,其特征在于,从由所述第一物理地址引用的第一位置中读取所述第一元素包括:检查在与所述微处理器相关联的高速缓存中是否存在所述数据操作数的有效副本;
如果所述有效副本存在,则从所述高速缓存中读取所述数据操作数的所述有效副本;以及
如果所述有效副本不存在,则从***存储器内的所述第一位置中读取所述数据操作数。
27.如权利要求24所述的设备,其特征在于,在由所述第二物理地址所引用的第二位置中存储所述第二元素包括:
确定来自所述微处理器内的控制寄存器的一存储器类型;
如果所述存储器类型是可高速缓存的,则将所述第二元素写入与所述微处理器相关联的高速缓存;以及
如果所述存储器类型是不可高速缓存的,则将所述数据操作数写入所述***存储器中的所述第二位置。
28.一种用于支持有效的物理和虚拟寻址的***,包括:
***存储器(425),包括虚拟机控制结构,所述虚拟机控制结构用于存储有关在***上运行的虚拟机监控器和/或客机软件中的状态和/或控制信息;
耦合到所述***存储器的存储器控制器(415);
耦合到所述存储器控制器的微处理器(405,120);
耦合到所述存储器控制器的输入/输出控制器(450);
其中,所述微处理器(120)包括:
第一控制寄存器,用于存储第一存储器类型;
第二控制寄存器,用于存储第二存储器类型;
并且,所述微处理器被构造成用于接收包括虚拟地址和物理地址的存储器访问,用翻译逻辑模块将所述虚拟地址翻译成经翻译的物理地址,根据存储在所述第一控制寄存器中的第一存储器类型,将所述经翻译的物理地址提供给高速缓存存储器或外部接口,并且根据存储在所述第二控制寄存器中的第二存储器类型,将所述物理地址直接提供给所述高速缓存存储器或所述外部接口,无需禁用或刷新所述翻译逻辑模块。
29.如权利要求28所述的***,其特征在于所述第一存储器类型从由可高速缓存的和不可高速缓存的存储器类型组成的组中选出。
CN2010101281837A 2004-12-02 2005-11-17 以高性能方式从cpu或处理单元中访问物理存储器的方法和装置 Expired - Fee Related CN101901129B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/004,753 2004-12-02
US11/004,753 US9280473B2 (en) 2004-12-02 2004-12-02 Method and apparatus for accessing physical memory from a CPU or processing element in a high performance manner

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN2005800462635A Division CN101099130B (zh) 2004-12-02 2005-11-17 以高性能方式从cpu或处理单元中访问物理存储器的方法和装置

Publications (2)

Publication Number Publication Date
CN101901129A CN101901129A (zh) 2010-12-01
CN101901129B true CN101901129B (zh) 2013-11-06

Family

ID=35976479

Family Applications (2)

Application Number Title Priority Date Filing Date
CN2005800462635A Expired - Fee Related CN101099130B (zh) 2004-12-02 2005-11-17 以高性能方式从cpu或处理单元中访问物理存储器的方法和装置
CN2010101281837A Expired - Fee Related CN101901129B (zh) 2004-12-02 2005-11-17 以高性能方式从cpu或处理单元中访问物理存储器的方法和装置

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN2005800462635A Expired - Fee Related CN101099130B (zh) 2004-12-02 2005-11-17 以高性能方式从cpu或处理单元中访问物理存储器的方法和装置

Country Status (5)

Country Link
US (3) US9280473B2 (zh)
JP (1) JP5027669B2 (zh)
CN (2) CN101099130B (zh)
DE (1) DE112005003098B4 (zh)
WO (1) WO2006060220A2 (zh)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9280473B2 (en) * 2004-12-02 2016-03-08 Intel Corporation Method and apparatus for accessing physical memory from a CPU or processing element in a high performance manner
US20070052715A1 (en) * 2005-09-07 2007-03-08 Konstantin Levit-Gurevich Device, system and method of graphics processing
US8099574B2 (en) * 2006-12-27 2012-01-17 Intel Corporation Providing protected access to critical memory regions
JP4864817B2 (ja) * 2007-06-22 2012-02-01 株式会社日立製作所 仮想化プログラム及び仮想計算機システム
US7526638B1 (en) 2008-03-16 2009-04-28 International Business Machines Corporation Hardware alteration of instructions in a microcode routine
US8819839B2 (en) * 2008-05-24 2014-08-26 Via Technologies, Inc. Microprocessor having a secure execution mode with provisions for monitoring, indicating, and managing security levels
US8522354B2 (en) * 2008-05-24 2013-08-27 Via Technologies, Inc. Microprocessor apparatus for secure on-die real-time clock
US8514994B1 (en) * 2008-10-02 2013-08-20 Altera Corporation Double data rate operation in an integrated circuit
US8479196B2 (en) * 2009-09-22 2013-07-02 International Business Machines Corporation Nested virtualization performance in a computer system
US8904115B2 (en) * 2010-09-28 2014-12-02 Texas Instruments Incorporated Cache with multiple access pipelines
US8621477B2 (en) 2010-10-29 2013-12-31 International Business Machines Corporation Real-time monitoring of job resource consumption and prediction of resource deficiency based on future availability
US9378560B2 (en) 2011-06-17 2016-06-28 Advanced Micro Devices, Inc. Real time on-chip texture decompression using shader processors
US8966478B2 (en) * 2011-06-28 2015-02-24 The Boeing Company Methods and systems for executing software applications using hardware abstraction
US20130179642A1 (en) * 2012-01-10 2013-07-11 Qualcomm Incorporated Non-Allocating Memory Access with Physical Address
US9524162B2 (en) * 2012-04-25 2016-12-20 Freescale Semiconductor, Inc. Apparatus and method for memory copy at a processor
US9411983B2 (en) 2013-03-15 2016-08-09 Intel Corporation Apparatus and method to protect digital content
CN104182269B (zh) * 2014-08-12 2017-04-26 山东省计算中心(国家超级计算济南中心) 一种kvm虚拟机的物理内存取证方法
US9880748B2 (en) * 2015-02-13 2018-01-30 Qualcomm Incorporated Bifurcated memory management for memory elements
US9672159B2 (en) * 2015-07-02 2017-06-06 Arm Limited Translation buffer unit management
US10901940B2 (en) * 2016-04-02 2021-01-26 Intel Corporation Processors, methods, systems, and instructions to atomically store to memory data wider than a natively supported data width
CN107479860B (zh) * 2016-06-07 2020-10-09 华为技术有限公司 一种处理器芯片以及指令缓存的预取方法
US20180011792A1 (en) * 2016-07-06 2018-01-11 Intel Corporation Method and Apparatus for Shared Virtual Memory to Manage Data Coherency in a Heterogeneous Processing System
CN111078285B (zh) * 2018-10-19 2021-01-26 中科寒武纪科技股份有限公司 运算方法、***及相关产品
CN109684031B (zh) * 2018-11-22 2021-07-06 海光信息技术股份有限公司 一种访问虚拟机控制块的方法和装置以及cpu核
CN112527209A (zh) * 2020-12-21 2021-03-19 江苏国科微电子有限公司 一种数据写入方法、装置、电子设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5317754A (en) * 1990-10-23 1994-05-31 International Business Machines Corporation Method and apparatus for enabling an interpretive execution subset
US20040073766A1 (en) * 2002-10-10 2004-04-15 International Business Machines Corporation Method, apparatus and system for allocating and accessing memory-mapped facilities within a data processing system

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01106149A (ja) 1987-10-20 1989-04-24 Fujitsu Ltd 情報処理装置
DE68924557T2 (de) 1988-06-06 1996-06-27 Digital Equipment Corp Seitentabellen in einem virtuellen Speicher.
US5157777A (en) * 1989-12-22 1992-10-20 Intel Corporation Synchronous communication between execution environments in a data processing system employing an object-oriented memory protection mechanism
JPH0793221A (ja) 1993-09-28 1995-04-07 Hitachi Ltd 仮想計算機システム及びその制御方法
DE69427734T2 (de) * 1993-10-29 2002-05-23 Advanced Micro Devices Inc Linearadressierter Mikroprozessorcachespeicher
US5715418A (en) * 1994-07-27 1998-02-03 Seagate Technologies, Inc. Autonomous high speed linear space address mode translation for use with a computer hard disc system
US5752274A (en) * 1994-11-08 1998-05-12 Cyrix Corporation Address translation unit employing a victim TLB
US5963984A (en) * 1994-11-08 1999-10-05 National Semiconductor Corporation Address translation unit employing programmable page size
US6006312A (en) 1995-02-27 1999-12-21 Sun Microsystems, Inc. Cachability attributes of virtual addresses for optimizing performance of virtually and physically indexed caches in maintaining multiply aliased physical addresses
US5895503A (en) * 1995-06-02 1999-04-20 Belgard; Richard A. Address translation method and mechanism using physical address information including during a segmentation process
US5774686A (en) * 1995-06-07 1998-06-30 Intel Corporation Method and apparatus for providing two system architectures in a processor
US5732404A (en) * 1996-03-29 1998-03-24 Unisys Corporation Flexible expansion of virtual memory addressing
US5913923A (en) * 1996-12-06 1999-06-22 National Semiconductor Corporation Multiple bus master computer system employing a shared address translation unit
US6397242B1 (en) * 1998-05-15 2002-05-28 Vmware, Inc. Virtualization system including a virtual machine monitor for a computer with a segmented architecture
US6496847B1 (en) 1998-05-15 2002-12-17 Vmware, Inc. System and method for virtualizing computer systems
US6363470B1 (en) * 1998-10-06 2002-03-26 Texas Instruments Incorporated Circular buffer management
EP0992916A1 (en) * 1998-10-06 2000-04-12 Texas Instruments Inc. Digital signal processor
US6430657B1 (en) 1998-10-12 2002-08-06 Institute For The Development Of Emerging Architecture L.L.C. Computer system that provides atomicity by using a tlb to indicate whether an exportable instruction should be executed using cache coherency or by exporting the exportable instruction, and emulates instructions specifying a bus lock
US6658552B1 (en) * 1998-10-23 2003-12-02 Micron Technology, Inc. Processing system with separate general purpose execution unit and data string manipulation unit
US6470444B1 (en) * 1999-06-16 2002-10-22 Intel Corporation Method and apparatus for dividing a store operation into pre-fetch and store micro-operations
US6351806B1 (en) 1999-10-06 2002-02-26 Cradle Technologies Risc processor using register codes for expanded instruction set
US6748512B2 (en) * 2000-12-08 2004-06-08 Intel Corporation Method and apparatus for mapping address space of integrated programmable devices within host system memory
US6549997B2 (en) 2001-03-16 2003-04-15 Fujitsu Limited Dynamic variable page size translation of addresses
US6681311B2 (en) * 2001-07-18 2004-01-20 Ip-First, Llc Translation lookaside buffer that caches memory type information
US6742097B2 (en) * 2001-07-30 2004-05-25 Rambus Inc. Consolidation of allocated memory to reduce power consumption
US8156343B2 (en) * 2003-11-26 2012-04-10 Intel Corporation Accessing private data about the state of a data processing machine from storage that is publicly accessible
US7937525B2 (en) 2004-06-25 2011-05-03 Intel Corporation Method and apparatus for decoding a virtual machine control structure identification
US9280473B2 (en) 2004-12-02 2016-03-08 Intel Corporation Method and apparatus for accessing physical memory from a CPU or processing element in a high performance manner

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5317754A (en) * 1990-10-23 1994-05-31 International Business Machines Corporation Method and apparatus for enabling an interpretive execution subset
US20040073766A1 (en) * 2002-10-10 2004-04-15 International Business Machines Corporation Method, apparatus and system for allocating and accessing memory-mapped facilities within a data processing system

Also Published As

Publication number Publication date
WO2006060220A3 (en) 2007-02-22
CN101099130B (zh) 2010-05-12
CN101099130A (zh) 2008-01-02
DE112005003098T5 (de) 2007-10-25
WO2006060220A2 (en) 2006-06-08
JP2008522321A (ja) 2008-06-26
US20130191603A1 (en) 2013-07-25
US20180004671A1 (en) 2018-01-04
JP5027669B2 (ja) 2012-09-19
US9280473B2 (en) 2016-03-08
CN101901129A (zh) 2010-12-01
DE112005003098B4 (de) 2017-04-27
US20060123184A1 (en) 2006-06-08
US10282300B2 (en) 2019-05-07
US9710385B2 (en) 2017-07-18

Similar Documents

Publication Publication Date Title
CN101901129B (zh) 以高性能方式从cpu或处理单元中访问物理存储器的方法和装置
US10409603B2 (en) Processors, methods, systems, and instructions to check and store indications of whether memory addresses are in persistent memory
US5381533A (en) Dynamic flow instruction cache memory organized around trace segments independent of virtual address line
US9472248B2 (en) Method and apparatus for implementing a heterogeneous memory subsystem
ES2297417T3 (es) Invalidacion de almacenamiento, borrado de elementos de la memoria intermedia.
JP6143872B2 (ja) 装置、方法、およびシステム
US6665749B1 (en) Bus protocol for efficiently transferring vector data
US6513107B1 (en) Vector transfer system generating address error exception when vector to be transferred does not start and end on same memory page
US20050055536A1 (en) Compiler instructions for vector transfer unit
JPH05210585A (ja) キャッシュ管理システム
US20180095892A1 (en) Processors, methods, systems, and instructions to determine page group identifiers, and optionally page group metadata, associated with logical memory addresses
CN113412472A (zh) 具有中断表的定向中断虚拟化
WO2019005105A1 (en) ACTIVATION OF SPECULATIVE MEMORY
US11119925B2 (en) Apparatus and method for managing capability metadata
CN113424150A (zh) 具有运行指示符的定向中断虚拟化
JPH07104816B2 (ja) コンピュータシステムを動作する方法及びコンピュータシステムにおけるメモリ管理装置
US6553486B1 (en) Context switching for vector transfer unit
JP6457836B2 (ja) プロセッサおよび命令コード生成装置
JP2990195B2 (ja) レガシ指令のエミュレ―ション装置及び方法
US6820254B2 (en) Method and system for optimizing code using an optimizing coprocessor
US5117491A (en) Ring reduction logic using parallel determination of ring numbers in a plurality of functional units and forced ring numbers by instruction decoding
JPH08212779A (ja) メモリアレイ、キャッシュ、およびマイクロプロセッサ
US20230093247A1 (en) Memory access tracker in device private memory
US20030135717A1 (en) Method and apparatus for transferring vector data

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
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20131106