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

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

Info

Publication number
CN101099130B
CN101099130B CN2005800462635A CN200580046263A CN101099130B CN 101099130 B CN101099130 B CN 101099130B CN 2005800462635 A CN2005800462635 A CN 2005800462635A CN 200580046263 A CN200580046263 A CN 200580046263A CN 101099130 B CN101099130 B CN 101099130B
Authority
CN
China
Prior art keywords
physical address
logic module
memory
address
physical
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
CN2005800462635A
Other languages
English (en)
Other versions
CN101099130A (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 CN101099130A publication Critical patent/CN101099130A/zh
Application granted granted Critical
Publication of CN101099130B publication Critical patent/CN101099130B/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或处理单元中访问物理存储器的方法和装置
领域
本发明涉及处理器领域,尤其涉及用处理元件来访问存储器。
背景
随着处理资源的日益增加,对于在单个微处理器上运行多个软件应用程序和操作系统的要求也已随之增加。通常被称为虚拟机扩展(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存储与MTR 240不同的存储器类型,但是在另一个实施例中,物理地址逻辑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 (36)

1.一种微处理器,包括:
用以解码第一和第二指令的解码逻辑模块,其中所述第一指令将包括对线性地址的引用,而所述第二指令将包括对第一物理地址的引用;
线性地址至物理地址翻译逻辑模块,用以将所述线性地址翻译成第二物理地址并将所述第二物理地址的表示提供给接口逻辑模块;以及
物理寻址逻辑模块,用以持有第一存储器类型的表示并根据第一存储器类型的所述表示将所述第一物理地址的表示直接提供给所述接口逻辑模块,不禁用所述线性地址至物理地址翻译逻辑模块。
2.如权利要求1所述的微处理器,其特征在于,所述第一物理地址包括相对基物理地址的偏移,所述第一物理地址的表示包括用于访问存储单元的全物理地址,并且所述物理寻址逻辑模块包括用于将所述偏移翻译为所述全物理地址的翻译逻辑模块。
3.如权利要求1所述的微处理器,其特征在于,所述第一指令和所述第二指令都包含多个微操作,并且所述第一指令中的所述多个微操作之一将包括对所述线性地址的引用,而所述第二指令中的所述多个微操作之一将包括对所述第一物理地址的引用。
4.如权利要求1所述的微处理器,其特征在于,所述接口逻辑模块包括同时耦合至所述线性地址至物理地址翻译逻辑模块和所述物理寻址逻辑模块的高速缓存逻辑模块,并且所述物理寻址逻辑模块包括第一存储器类型寄存器,用于持有第一存储器类型的表示。
5.如权利要求4所述的微处理器,其特征在于,所述接口逻辑模块还包括耦合至所述高速缓存逻辑模块的外部接口逻辑模块。
6.如权利要求5所述的微处理器,其特征在于,所述第一存储器类型是可高速缓存的,并且用于将所述第一物理地址的表示直接提供给所述接口逻辑模块而不禁用所述线性地址至物理地址翻译逻辑模块的所述物理寻址逻辑模块构成用于响应于所述第一存储器类型是可高速缓存的而将所述第一物理地址的表示直接提供给所述高速缓存逻辑模块的物理寻址逻辑模块。
7.如权利要求5所述的微处理器,其特征在于,所述第一存储器类型是不可高速缓存的,并且用于将所述第一物理地址的表示直接提供给所述接口逻辑模块而不禁用所述线性地址至物理地址翻译逻辑模块的所述物理寻址逻辑模块构成用于响应所述第一存储器类型是不可高速缓存的而将所述第一物理地址的表示直接提供给所述外部接口逻辑模块的物理寻址逻辑模块。
8.如权利要求5所述的微处理器,其特征在于,还包括与所述线性地址至物理地址翻译逻辑模块相关联以持有第二存储器类型的第二存储器类型寄存器。
9.如权利要求8所述的微处理器,其特征在于,所述第一存储器类型与所述第二存储器类型相同。
10.如权利要求1所述的微处理器,其特征在于,所述第一物理地址引用系统存储器中的第一单元,所述线性地址是所述第二物理地址的虚拟表示,其引用所述系统存储器内的第二单元,所述线性地址和所述第二物理地址是不同的。
11.一种集成电路,包括:
外部接口,用于从存储器取出元素;
高速缓存逻辑模块,其与所述外部接口耦合,用于持有从所述存储器取出元素;
解码单元,用于解码引用第一线性地址的第一微操作以及引用第一物理地址的第二微操作;
耦合至所述解码单元的翻译缓冲器,用以将所述第一线性地址翻译成第二物理地址并将所述第二物理地址的表示提供给所述高速缓存逻辑模块;
第一存储器类型寄存器,其持有用于指示不可高速缓存的存储器类型的第一值;以及
耦合至所述解码单元的物理寻址逻辑模块,用以响应于所述第一存储器类型寄存器持有用于指示不可高速缓存的存储器类型的第一值而将所述第一物理地址的表示直接提供给所述外部接口。
12.如权利要求11所述的集成电路,其特征在于,所述物理寻址逻辑模块包括用以根据对所述第一物理地址的引用生成所述第一物理地址的表示的解码逻辑模块。
13.如权利要求11所述的集成电路,其特征在于,所述第一存储器类型寄存器将持有用于指示可高速缓存的存储器类型的第二值,并且所述物理寻址逻辑模块还响应于所述第一存储器类型寄存器持有用于指示可高速缓存的存储器类型的第二值而将所述第一物理地址的表示直接提供给所述高速缓存逻辑模块。
14.如权利要求12所述的集成电路,其特征在于,所述物理寻址逻辑模块和所述翻译缓冲器通过定序逻辑模块耦合至所述解码单元,所述定序用于对包括第一和第二微操作的无序微操作排序。
15.如权利要求14所述的集成电路,其特征在于,还包括:
耦合至所述高速缓存逻辑模块以持有来自所述高速缓存逻辑模块的元素的寄存器文件;以及
对所述寄存器文件中持有的所述元素进行操作的至少一个执行单元。
16.如权利要求15所述的集成电路,其特征在于,所述第一和第二微操作包含在宏指令中,并且所述解码单元能够对可变长度的宏指令进行解码。
17.如权利要求13所述的集成电路,其特征在于,还包括第二存储器类型寄存器,其与所述翻译缓冲器相关联,以持有用于指示不可高速缓存的存储器类型的第一值以及用于指示可高速缓存的存储器类型的第二值。
18.如权利要求17所述的集成电路,其特征在于,所述物理寻址逻辑模块用于读出所述第二存储器类型寄存器中持有的值,并将该值存储在所述第一存储器类型寄存器中。
19.如权利要求17所述的集成电路,其特征在于,所述第二存储器类型寄存器和所述第一存储器类型寄存器持有不同的值。
20.一种用于访问存储器的系统,包括:
具有多个存储单元的系统存储器,其中带有第一物理地址的第一存储单元能够存储第一指令,带有第二物理地址的第二存储单元能够存储第一数据操作数,而带有第三物理地址的第三存储单元能够存储第二数据操作数;
耦合至所述系统存储器的微处理器,其中所述微处理器包括取出单元,用于从所述第一存储单元中取出所述第一指令;解码单元,用于将所述第一指令解码成引用第一线性地址的至少第一微操作以及引用所述第二物理地址的至少第二微操作;线性地址翻译单元,用于将所述第一线性地址翻译成所述第三物理地址,并将所述第三物理地址的表示提供给公用接口;以及物理地址访问单元,用于将所述第二物理地址的表示提供给所述公用接口而不禁用所述线性地址翻译单元,其中所述公用接口用于从所述第二存储单元和所述第三存储单元中取出所述第一数据操作数和所述第二数据操作数.
21.如权利要求20所述的系统,其特征在于,所述取出单元和所述解码单元用于取出并解码可变长度指令。
22.如权利要求21所述的系统,其特征在于,所述公用接口是高速缓存接口,并且所述微处理器还包括用于在所述第一和第二数据操作数被取出之后存储所述第一和第二数据操作数的高速缓存。
23.如权利要求22所述的系统,其特征在于,还包括寄存器文件和执行单元,其中所述寄存器文用于从高速缓存中载入所述第一和第二数据操作数并且将所述第一和第二数据操作数提供给所述执行单元。
24.如权利要求20所述的系统,其特征在于,所述物理地址访问单元包括解码器,用于解码所述第二物理地址,以及控制寄存器,用于存储第一存储器类型。
25.如权利要求24所述的系统,其特征在于,所述微处理器还包括存储器类型寄存器,该寄存器与所述线性地址翻译单元相关联,用以存储第二存储器类型。
26.如权利要求25所述的系统,其特征在于,所述第一存储器类型选自由可高速缓存的和不可高速缓存的存储器类型组成的组。
27.如权利要求26所述的系统,其特征在于,所述第一和第二存储器类型是不同的存储器类型。
28.一种用于访问存储器的方法,包括:
用微处理器接收第一指令以从第一虚拟存储器地址中读取第一元素,其中所述第一指令由第一虚拟机生成;
地址翻译单元将所述第一虚拟存储器地址翻译成第一物理地址;
从由所述第一物理地址引用的第一位置中取出所述第一元素;
用所述微处理器接收第二指令以在第二物理地址中存储第二元素,其中所述第二指令由第二虚拟机生成;以及
在由所述第二物理地址引用的第二位置中存储所述第二元素,不禁用所述地址翻译单元。
29.如权利要求28所述的方法,其特征在于,所述第一元素是数据操作数。
30.如权利要求28所述的方法,其特征在于,所述第二元素是所述第一元素。
31.如权利要求29所述的方法,其特征在于,还包括:用所述微处理器操作所述第一元素以获得第一结果,其中所述第二元素基于所述第一结果。
32.如权利要求29所述的方法,其特征在于,将所述第一虚拟存储器地址翻译成第一物理地址是用翻译后备缓冲器(TLB)来完成的。
33.如权利要求32所述的方法,其特征在于,所述第一和第二位置在系统存储器内。
34.如权利要求28所述的方法,其特征在于,所述第一和第二虚拟机是相同的虚拟机。
35.如权利要求33所述的方法,其特征在于,从由所述第一物理地址引用的第一位置中读取所述数据操作数包括:
检查在与所述微处理器相关联的高速缓存中是否存在所述数据操作数的有效副本;
如果所述有效副本存在,则从所述高速缓存中读取所述数据操作数的所述有效副本;以及
如果所述有效副本不存在,则从系统存储器内的所述第一位置中读取所述数据操作数。
36.如权利要求33所述的方法,其特征在于,将所述第二元素写入由所述第二物理地址所引用的所述第二位置包括:
确定来自所述微处理器内的控制寄存器的一存储器类型;
如果所述存储器类型是可高速缓存的,则将所述第二元素写入与所述微处理器相关联的高速缓存;以及
如果所述存储器类型是不可高速缓存的,则将所述数据操作数写入所述系统存储器中的所述第二位置。
CN2005800462635A 2004-12-02 2005-11-17 以高性能方式从cpu或处理单元中访问物理存储器的方法和装置 Expired - Fee Related CN101099130B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
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
US11/004,753 2004-12-02
PCT/US2005/042154 WO2006060220A2 (en) 2004-12-02 2005-11-17 Method and apparatus for accessing physical memory from a cpu or processing element in a high performance manner

Related Child Applications (1)

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

Publications (2)

Publication Number Publication Date
CN101099130A CN101099130A (zh) 2008-01-02
CN101099130B true CN101099130B (zh) 2010-05-12

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 After (1)

Application Number Title Priority Date Filing Date
CN2010101281837A Expired - Fee Related CN101901129B (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
US8762687B2 (en) * 2008-05-24 2014-06-24 Via Technologies, Inc. Microprocessor providing isolated timers and counters for execution of secure code
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核
CN112527209B (zh) * 2020-12-21 2024-10-11 江苏国科微电子有限公司 一种数据写入方法、装置、电子设备及存储介质

Citations (3)

* 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
EP1241579A2 (en) * 2001-03-16 2002-09-18 Fujitsu Limited Dynamic variable page size translation of addresses
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 (27)

* 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 情報処理装置
ATE129351T1 (de) 1988-06-06 1995-11-15 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 仮想計算機システム及びその制御方法
EP0651332B1 (en) * 1993-10-29 2001-07-18 Advanced Micro Devices, Inc. Linearly addressable microprocessor cache
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
US5963984A (en) * 1994-11-08 1999-10-05 National Semiconductor Corporation Address translation unit employing programmable page size
US5752274A (en) * 1994-11-08 1998-05-12 Cyrix Corporation Address translation unit employing a victim TLB
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
EP0992916A1 (en) * 1998-10-06 2000-04-12 Texas Instruments Inc. Digital signal processor
US6363470B1 (en) * 1998-10-06 2002-03-26 Texas Instruments Incorporated Circular buffer management
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
WO2001025900A1 (en) 1999-10-06 2001-04-12 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
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 (3)

* 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
EP1241579A2 (en) * 2001-03-16 2002-09-18 Fujitsu Limited Dynamic variable page size translation of addresses
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
US20130191603A1 (en) 2013-07-25
JP2008522321A (ja) 2008-06-26
WO2006060220A3 (en) 2007-02-22
JP5027669B2 (ja) 2012-09-19
US20060123184A1 (en) 2006-06-08
DE112005003098T5 (de) 2007-10-25
US20180004671A1 (en) 2018-01-04
DE112005003098B4 (de) 2017-04-27
CN101901129B (zh) 2013-11-06
WO2006060220A2 (en) 2006-06-08
US10282300B2 (en) 2019-05-07
CN101901129A (zh) 2010-12-01
US9710385B2 (en) 2017-07-18
CN101099130A (zh) 2008-01-02
US9280473B2 (en) 2016-03-08

Similar Documents

Publication Publication Date Title
CN101099130B (zh) 以高性能方式从cpu或处理单元中访问物理存储器的方法和装置
US10409603B2 (en) Processors, methods, systems, and instructions to check and store indications of whether memory addresses are in persistent memory
JP6143872B2 (ja) 装置、方法、およびシステム
US6665749B1 (en) Bus protocol for efficiently transferring vector data
JP5837126B2 (ja) 現在実行している命令セット以外の命令セットから命令をプリロードするシステム、方法およびソフトウェア
EP3049924B1 (en) Method and apparatus for cache occupancy determination and instruction scheduling
US6813701B1 (en) Method and apparatus for transferring vector data between memory and a register file
US11275637B2 (en) Aggregated page fault signaling and handling
TWI516937B (zh) 用於資料讀取/寫入延伸分頁表違例之處理的決策動作決定技術之方法、裝置及非暫態機器可讀媒體
US6513107B1 (en) Vector transfer system generating address error exception when vector to be transferred does not start and end on same memory page
US20180095892A1 (en) Processors, methods, systems, and instructions to determine page group identifiers, and optionally page group metadata, associated with logical memory addresses
JPH08278886A (ja) データ処理システムでの拡張システム管理操作のための方法およびシステム
WO2019005105A1 (en) ACTIVATION OF SPECULATIVE MEMORY
TWI465920B (zh) 結構存取處理器、方法、系統及指令
US5596735A (en) Circuit and method for addressing segment descriptor tables
WO2017172240A1 (en) Processors, methods, systems, and instructions to fetch data to indicated cache level with guaranteed completion
US11119925B2 (en) Apparatus and method for managing capability metadata
JP6457836B2 (ja) プロセッサおよび命令コード生成装置
US20020147970A1 (en) Method and system for optimizing code using an optimizing coprocessor
CN115934584A (zh) 设备私有存储器中的存储器访问跟踪器
US6625720B1 (en) System for posting vector synchronization instructions to vector instruction queue to separate vector instructions from different application programs
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) メモリアレイ、キャッシュ、およびマイクロプロセッサ
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: 20100512