CN101872316A - 体系结构事件期间维持处理器资源 - Google Patents

体系结构事件期间维持处理器资源 Download PDF

Info

Publication number
CN101872316A
CN101872316A CN201010227657A CN201010227657A CN101872316A CN 101872316 A CN101872316 A CN 101872316A CN 201010227657 A CN201010227657 A CN 201010227657A CN 201010227657 A CN201010227657 A CN 201010227657A CN 101872316 A CN101872316 A CN 101872316A
Authority
CN
China
Prior art keywords
asid
tlb
address space
subclauses
clauses
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
CN201010227657A
Other languages
English (en)
Other versions
CN101872316B (zh
Inventor
J·布兰特
S·K·蒙达尔
R·乌利希
G·尼格
R·乔治
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 CN101872316A publication Critical patent/CN101872316A/zh
Application granted granted Critical
Publication of CN101872316B publication Critical patent/CN101872316B/zh
Active 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/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting means
    • 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
    • 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/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1063Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed
    • 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/109Address translation for multiple virtual address spaces, e.g. segmentation
    • 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/12Replacement control
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support
    • 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/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/152Virtualized environment, e.g. logically partitioned system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/604Details relating to cache allocation
    • 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/651Multi-level translation tables
    • 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/683Invalidation
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/70Details relating to dynamic memory management

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)

Abstract

本发明涉及体系结构事件期间维持处理器资源。在本发明一实施例中,一种方法包括在第一地址空间和第二地址空间之间切换,确定在地址空间列表内是否存在该第二地址空间;并且在切换之后维持翻译缓冲器内第一地址空间的条目。这样,可降低与上下文切换相关联的额外开销。

Description

体系结构事件期间维持处理器资源
本申请是申请号为200580025726.X、国际申请日为2005年7月14日、发明名称为“体系结构事件期间维持处理器资源”的发明专利申请的分案申请。
背景
本发明一般涉及数据处理系统,尤其涉及使用处理器在不同上下文中进行处理。
许多现有的计算机系统使用虚拟存储器系统来管理存储器,并将其分配给在系统中运行的多个进程,这就允许在该系统上运行的每个进程像它能控制由该系统提供的全部范围的地址那样来工作。操作系统(OS)将用于每个进程的虚拟地址空间映射至用于该系统的实际物理地址空间。通常使用页面表来维持从物理地址到虚拟地址的映射。
处理器性能可经由多级流水线体系结构改进,在该多级流水线体系结构中诸如高速缓存、缓冲器、阵列等的各种流水线资源可更为有效地用于执行指令。改进虚拟存储器系统的使用的一种流水线资源是翻译后备缓冲器(TLB)。TLB是处理器流水线内存储器的相对较小部分,用于高速缓存部分系统虚拟地址至物理地址的翻译。具体地,翻译集的少量元素被存储在处理器能极快访问的TLB中。系统中可存在各种TLB。例如,存在用于指令和数据的单独TLB(分别为指令TLB(iTLB)和数据TLB(dTLB)。此外,在某些系统中可存在二级dTLB(STLB)。
如果在TLB中不存在对特定虚拟地址的翻译,则会出现“翻译遗漏”并且使用更一般机制来解决地址翻译。处理以此方式继续直到出现上下文切换。上下文切换会在多任务OS停止时运行一个进程(例如,应用软件)并开始运行另一个进程时发生。当发生上下文切换时,包括页面目录的页面表和用于新进程的页面表被载入,并且该TLB和其他流水线资源必须被清除。清除意味着资源内容被清空。
某些系统可实现其中虚拟机监视器(VMM)可向其他软件呈现一个或多个虚拟机的抽象的虚拟机(VM)环境。每个VM都可用作自主式平台,从而运行它自己的“客户操作系统”(即,由VMM提供的OS)以及被统称为客户软件(或简称为“客户”)的其他软件。客户软件期望像在专用计算机而非虚拟机上运行那样来工作。因此,客户软件期望控制各种事件并能够访问诸如驻留处理器资源、驻留于存储器内的资源和驻留于基础硬件平台的资源的硬件资源。
在虚拟机环境中,VMM通常对这些事件和硬件资源有着最终控制权,以提供客户软件的合适操作,并且为在不同虚拟机上运行的客户软件或在这些软件之间提供保护。为了实现这一目标,VMM通常在客户软件访问受保护资源时或在出现其他事件(诸如中断或异常)时接收控制(即,影响环境切换)。
在VM或其他环境中的上下文切换会引起现代微处理器中相当大的额外开销。该额外开销会因为在每次上下文切换时必须清除并重新加载的巨大二级TLB而加剧。这样该额外开销就会对性能,特别是带有多个活动上下文的系统中的性能产生不利影响。于是就需要在上下文切换时能更有效地维持流水线资源。
附图简述
图1是根据本发明一实施例的线性地址翻译。
图2是根据本发明一实施例的系统的一部分的框图。
图3是根据本发明一实施例的方法的流程图。
图4是根据本发明另一实施例的方法的流程图。
图5是根据本发明又一实施例的方法的流程图。
图6是本发明一实施例的代表性计算机系统的框图。
详细描述
在本发明的各个实施例中,诸如TLB、跟踪缓存(TC)、分支预测单元(BPU)阵列、小型标志等的流水线资源或结构可支持多地址空间。在此使用的术语“地址空间”指的是存储器内对应于给定应用程序(例如上下文)的一组地址。
在各个实施例中,地址空间可受到确定或影响物理翻译线性的体系结构控制寄存器的组合(例如,包括页面目录基址寄存器(CR3.PDBR)、页面级高速缓存禁用位(PCD)、页面级直写位(PWT)的控制寄存器3;包括分页位(CR0.PG)、保护启用位(CR0.PE)的控制寄存器0;包括页面大小扩展位(CR4.PSE)以及页面全局启用位和物理地址扩展位(CR4.PGE和PAE)、经扩展的功能启用长寄存器模式寻址(EFER.LMA)和非执行位(EFER.NXE)的控制寄存器4)的控制。
在各个实施例中,地址空间标识符(ASID)可用于以指向与各个流水线资源中的线性地址相关联的上下文的指针来增加这些地址。在这里使用的“地址空间标识符”可以是标识与其相关联的一个或多个地址空间的任何数字、代码或其他符号。在一个实施例中,ASID可使用每个线程两位ASID(即,四个地址空间上下文)来实现,尽管本发明的范围并非如此有限。这就允许多个应用程序上下文共享流水线结构,从而降低了上下文切换的额外开销。例如,当上下文切换出现时,可改变当前的ASID值,而不是清除流水线结构。类似地,在某些实施例中,可提供线程标识符(线程ID)以标识用于对应地址空间的给定处理器线程。
根据本发明的各个实施例,各种体系结构事件都可能会引起TLB的选择性清除。这些事件例如可包括:移至CR3(MOV to CR3)指令;改变CR0页面模式位:CRO.PE和CR0.PG以及EFER.LMA;改变CR4页面模式位;VM进入(Entry)/退出(Exit);以及32位上下文切换(如果改变了CR0或CR4中的分页模式位)。在某些实施例中,这些事件中仅有MOV to CR3操作或VMEntry/VMExit事件可改变/递增ASID。
许多流水线结构被线性标志或索引。在某些实施例中,ASID可用指向对应地址空间的指针来增加这些流水线资源内的线性地址。在这些实施例中,微处理器可以维持在创建新的地址空间时或改变至不同的先前已见的地址空间时更新的全局当前ASID寄存器。可用当前ASID值扩展TLB插入,并且只有当ASID标志与当前ASID值匹配时TLB查找才匹配。当上下文切换(例如,MOV to CR3或者VM entry/exit)触发了地址空间改变时,微处理器可切换至表示此新地址空间的不同ASID值,而不清除TLB或其他流水线结构。在某些实施例中,不清除任何条目或者选择性地清除对应于特定地址空间的部分或所有条目可为带有多个上下文的环境提供实质上的性能增益。
现参看图1,示出了根据本发明一实施例的适于64位地址翻译的线性地址翻译。如图1所示,可使用线性地址300来寻址存储器240内的页面。如图1所示,线性地址300包括索引四级分页结构以访问存储器240内物理地址的多个字段。偏移字段(位0至11)用于寻址存储器240的一个页面内的物理地址。页面表条目(位12至20)寻址页面表(PT)310内的页面表条目。页面目录条目(位21至29)寻址页面目录(PD)320内的页面目录条目。页面目录指针(位30至38)寻址页面目录指针表(PDPT)330内的页面目录指针条目。最后,页面映射级四(PML4)指针(位39至47)寻址PML4340内的PML4条目。使用CR3内的指针就可访问PML4340的基址。以此方式,可使用64位线性地址实现四级分页结构以访问物理地址。
在各个实施例中,根据一实施例的TLB可包括物理地址(标志地址)和相关联的有效线程ID以及ASID位,连同相对应的线性和物理地址。TLB条目包括在其标志内指示它们所对应地址空间的ASID字段。该ASID字段包括在载入TLB条目时的当前ASID值。因为ASID字段在TLB条目的标志内,所以TLB条目只有在当前ASID值与该TLB条目内的ASID字段相匹配时才能被命中。
当一地址空间改变(例如,上下文切换)时,微代码会将关于当前地址空间/ASID(CR3、CR0和CR4分页位、LMA)的信息保存到便笺式存储器,并且可将新地址空间与每个ASID的已存储地址空间信息相比较。如果没有已存储地址空间/ASID与新地址空间相匹配,则在之前未看到过该地址空间。因而微代码可为该地址空间分配新ASID,或选择一现有ASID来代替例如最近最少使用(LRU)策略。在后一种情况下,微代码可清除用于该LRU ASID的TLB条目。
现参看图2,示出了根据本发明一实施例的系统的一部分的框图。如图2所示,系统10包括系统存储器20和多个软件实体,包括第一客户软件(即,第一客户)30、第二客户软件(即,第二客户)40和虚拟机扩展(VMX)监视器50。在一个实施例中,系统存储器20可包括代码和数据两者,并且可由例如动态随机存取存储器(DRAM)形成。
在图2的实施例中,VMX监视器50可向其他软件(例如,客户软件)呈现一个或多个虚拟机的抽象。VMX监视器50可向各种客户机提供相同或不同的抽象。在各VM上运行的客户软件可包括客户OS和各种客户软件应用程序。这些客户OS和软件应用程序在此被统称为客户软件。客户软件期望访问该客户软件在其上运行的VM内的物理资源(例如,处理器寄存器、存储器和输入/输出(I/O)设备)。VMX监视器50可有助于访问客户软件所期望的资源,同时还保持对平台硬件内资源的最终控制。
在一个实施例中,可使用存储在虚拟机控制结构(VMCS)(未在图2中具体示出)内一个或多个指定字段中的数据来定义标准(控制传送标准和/或故障标准)。例如,VMCS可存储客户软件的状态和信息以控制其操作。VMCS可驻留于存储器20中并且可由处理器维持。应该理解,可使用任何其他的数据结构(例如,芯片内高速缓存、文件、查找表等)存储已存储在VMCS内的信息。
在一个实施例中,如果传送标准确定当前事件必须由VMX监视器50处理,则控制就被传送至VMX监视器50。VMX监视器50然后可处理该事件并将控制传送回客户软件。从VMM或VMX监视器到客户软件的控制传送在这里可被称为VM进入,而从客户软件到VMM或VMX监视器的控制传送在此可被称为VM退出。
如图2所示,存储器20可包括可使用关于第一客户软件30的页面表条目(PTE)访问的第一页面35,以及可使用关于第二客户软件40的PTE访问的第二页面45。也就是说,第一页面35和第二页面45可包括分别对应于第一客户30和第二客户40的代码和/或数据。在图2的实施例中,存储器20可以对应于包括代码和数据两者的物理地址,并且对应于客户软件30和客户软件40的ASID的地址可对应于用来指向物理地址空间的线性地址(或其一部分)。
仍参看图2,第一客户30具有第一ASID值(即,ASID=1),并且还包括对应于第一地址空间的CR3值。同样地,第二客户40具有第二ASID值(即,ASID=2)并且还具有与其相关联的CR3值。
控制第一客户软件30和第二客户软件40的执行的VMX监视器还具有与其相关联的ASID值。例如,如图2的实施例中所示,VMX监视器50可具有三个与其相关联的ASID值。
如图2所示,可执行MOV to CR3指令以产生如箭头55所示的上下文切换。此外,VMX监视器50通过产生由标号60表示的VM退出来控制客户软件的操作,该VM退出引起从当前执行客户中退出以强制控制返回VMX监视器50。类似地,VMX监视器50可通过执行VM进入(由图2中的标号70表示)就可引起客户的起动或恢复。
在各个实施例中,VMX体系结构增强能允许VMX监视器在上下文切换和使用ASID的VMX转换时避免清除TLB或其他类似的处理器资源。在各个实施例 中,既不需要软件也不需要硬件中的显式ASID管理来检测交叉地址空间污染。
在各个实施例中,基于诸如图2所示的事件,包括使用MOV to CR3指令执行的上下文切换、VM退出或VM进入,可避免对TLB或其他处理器资源的清除,从而在该上下文切换以及其他体系结构事件时改进性能并降低额外开销。
在某些实施例中,系统存储器20内的页面以及其他被高速缓存的页面于是就可由跨所有地址空间的VMX监视器50来保护,从而对这些页面的任何尝试存储都可引起从起动这一存储的客户软件的VMX退出。对于这一事件,VMX监视器50可使得对应于这些存储的地址在所有TLB和其他处理器资源内无效。
在各个实施例中,处理器可不同地处理某些事件、指令和VMX转换。不同指令和事件的这些不同实现可在处理器微代码中实现。例如,对于客户软件内的MOV to CR3指令、VM退出或VM进入,处理器可寻找与新地址空间匹配的现有ASID。这一确定可通过比较新地址的ASID与处理器维持的ASID列表来作出。如果匹配存在,则处理器使该ASID成为当前ASID而无需清除任何TLB条目。否则,在一个实施例中对应于LRU ASID的所有TLB条目就被清除,并且最近最少使用ASID的ASID值就作为当前ASID。如果该ASID未被清除,则可维持来自在前地址空间的TLB条目。
与之相反,可不同地处理使用于特定页面的TLB条目无效的指令(例如,INVLPG指令)。例如,在一个实施例中,可基于这一指令使所有TLB内的线性地址空间无效。不同的操作仍可对其他指令出现。例如,在一个实施例中,检测到CR4值内无改变的MOV to CR4指令可使每一ASID内的所有TLB条目无效。
现在参看图3,示出了根据本发明一实施例的方法的流程图。方法100可用于在处理器内的不同上下文之间切换。如图3所示,可进行第一和第二地址空间之间的切换(框110)。虽然未在图3中示出,但是在这一切换之前,第一地址空间可被保存到对应于当前地址空间标识符的控制寄存器(或其他存储器)中。在其它实施例中,这一保存可在其他时刻进行。
地址空间切换可对应于VM退出或VM进入,或者可由MOV to CR3指令或其他类似事件所引起。接着,可确定ASID列表中是否存在第二地址空间(菱形框120)。这一列表可由处理器维持以标识不同的活动地址空间、与其相对应的线性地址空间内的位置、以及其他任选信息。例如,ASID列表可以是处理器中的便笺式存储器。
如果ASID列表内存在第二地址空间,则控制就可传至框130,其中可维持包括了对应于第一地址空间的TLB内任何条目的第一地址空间。此外,第二ASID可被存储在处理器的控制寄存器(例如,当前ASID寄存器)(或其他存储器位置)内以指示该第二地址空间(即,在菱形框120中找到的地址空间)是处理器内当前执行的地址空间(框135)。
如果相反在菱形框120处确定ASID列表内不存在第二地址空间,则接着就确定ASID列表是否已满(菱形框140)。如果该列表未满,则控制可传至框145,其中可维持包括了对应于第一地址空间的TLB内任何条目的第一地址空间。此外,第二ASID可被存储在处理器的控制寄存器(例如,当前ASID寄存器或其他存储器位置)内以指示该第二地址空间(即,来自以下讨论的框160的空地址空间或自由地址空间)是处理器内的当前执行地址空间(框150)。
如果相反在菱形框140处确定ASID列表已满,则在ASID列表内对应于LRU条目的TLB内的条目就被清除(菱形框160)。随后控制可传至方框145以便于进一步的处理,其中如上所述在该框145处第二ASID可被存储在LRU条目内。因此,就能启用TLB条目以及与第二ASID相关联的其他资源。
虽然在图3实施例中示为使用LRU策略来清除TLB条目,但是应该理解,在其它实施例中也可使用其他策略或机制来确定在ASID列表全满时清除的合适地址空间。
在某些实施例中,取决于地址空间切换的原因,可使用软件清除TLB内的特定条目或其他处理器资源。例如,如上所述,如果对受保护页面的存储尝试引起VM退出,则清除对应于该受保护空间的TLB内的地址。也就是说,在VMX体系结构的各种实现中,VMX监视器保护每个分页的分层结构。在虚拟化的环境中,软件可用于清除TLB或由客户支配的其他资源。随后,因为虚拟化软件处理本文中所述的清除活动,所以由客户承担的某些事件(例如,MOV to CR3指令)将不会清除资源。于是在客户中,如果任何存储指令修改了由CR3在CR3目标值中使用的TLB条目,则会产生VM退出。
使用根据本发明一实施例的半透明ASID,软件在这一VM退出之后可清除对应于引起该VM退出的存储指令的所有TLB条目,即使客户在VM退出时刻并没有使用该TLB条目。在这一实施例中,如果软件期望清除单个条目,则软件可用合适地址空间内对应于TLB条目的线性地址来执行INVLPG指令。对于这一软件调用INVLPG,处理器可清除对应于该线性地址的任何TLB条目,而无需考虑它们的ASID。虽然描述了使用INVLPG指令来实现,但是在其它实施例中其他指令或操作也可清除这些条目。
现在参看图4,示出了根据本发明一实施例的方法的流程图。更具体地,图4示出了用于清除TLB内某些条目的方法200。这一方法可在VM环境内执行,并且可基于VM退出起动。如图4所示,方法200可通过确定VM退出的原因(框210)开始。例如,在一个实施例中,可分析在VM退出之前的最后一个操作以确定是否对受保护存储器空间执行存储或其他存储器操作引起了该VM退出。当然也存在使VM退出发生的许多其他原因。
然后,在菱形框220处可确定存储操作是否尝试修改受保护的条目,诸如受保护的TLB条目(例如,对应于不同地址空间)。如果不是,在可继续VMX监视器的正常执行(框230)。这一执行可取决于程序指令采取许多形式。在这一执行之后,控制可在需要时返回给客户。
如果相反确定存储尝试修改受保护的条目,则因为该VMX监视器能访问该客户不能访问的受保护位置,所以该VMX监视器可执行该存储操作(框235)。然后,对应于该存储地址的所有TLB条目可从所有TLB和其他存储器资源中清除(框240)。VM进入然后将控制返回给客户以便继续执行(框245)。这一执行例如可在下一个客户指令处继续。
在其它实施例中,可期望清除所有TLB内的所有条目。例如,如果已经修改了更高级的分页机制,则可期望该清除能清空TLB或在VMX监视器不再保护地址空间时从TLB中移除该地址空间。在一实施例中,如果软件期望清除用于一地址空间的整个TLB,则软件可用已经存储在那里的完全相同值执行MOV to CR3指令。因为该软件不指定哪个ASID需要被清除,所以当处理器看见这一CR4写入时,该处理器就清除用于所有ASID的所有TLB。在各个实施例中,如果PDE(或更高)条目被改变或者如果CR3从CR3目标值中移除并且监视器不再保护它,则软件就可清除用于一地址空间的整个TLB。
现参看图5,示出了根据本发明一实施例的另一种方法的流程图。具体地,方法250用于清除所有ASID的所有TLB。如图5所示,这一方法通过接收MOV to CR3指令(椭圆框255)开始。处理器基于该指令的接收确定新CR4值是否与其前一值相同(菱形框260)。如果该新地址值不同,则执行正常的CR4操作(框270)。这些操作可基于CR4内不同位的状态而变化。例如,基于位状态可清除诸如TLB的处理器资源,并且可进行其他处理。例如,改变数据的CR4转换可引起对清除至少当前TLB内条目的需要。此外,这一CR4转换可要求地址空间的改变。可用与参看图3所述的相类似的方式来执行这一地址空间改变。
如果相反确定新值与前一值相同,则这可以是指示VMX监视器或其他实体期望清除所有TLB的标志。如上所述,存在清除所有TLB的各种原因。因此,在框280处,可对所有ASID清除所有TLB。最后,执行可在相同(即,初始)地址空间内继续(框290)(例如,在下一个指令处)。
虽然在图5的实施例中描述为基于MOV to CR3指令实现,但是应该理解,在其它实施例中也可使用其他指令或操作来作为指示VMX监视器或其他条目期望清除所有TLB的标志。此外,虽然参看图5的具体实现做出了描述,但是在其它实施例中也可分析因预定指令产生的任何选定值以确定是否有值改变。如果没有,就可对一个或多个处理器资源执行期望动作。
现在参看图6,示出了根据本发明一实施例的代表性计算机系统400的框图。如图6所示,计算机系统400包括处理器401。在一个实施例中,处理器401可经由前侧总线420耦合至存储器集线器430,而该存储器集线器430可经由存储器总线耦合至共享主存储器440。如图6所示,处理器401根据本发明一实施例可包括TLB 403和ASID列表405。此外,2级(L2)高速缓存407可耦合至处理器401。
存储器集线器430还可(经由集线器链路)耦合至I/O集线器435,而该I/O集线器435则耦合至I/O扩展总线455和外围总线450。在各实施例中,I/O扩展总线455可耦合至诸如键盘和鼠标的各种I/O设备。外围总线450可耦合至诸如可以是诸如闪存、插入卡之类存储器设备的外围设备470的各种组件。虽然本说明书提到了系统400的具体部件,但是对所示实施例的各种修改也是可能的。
各实施例可用存储在存储介质上的计算机程序实现,其中这些程序具有编程计算机系统来执行这些实施例的指令。存储介质可包括但不限于:包括软盘、光盘、光盘只读存储器(CD-ROM)、可重写光盘(CD-RW)和磁光盘的任何类型的盘;诸如只读存储器(ROM)、例如动态或静态随机存取存储器(RAM)的RAM、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、闪存、磁性卡或光学卡的半导体器件;或者用于存储电子指令的任何类型的介质。其他实施例可被实现为由可编程控制设备执行的软件模块。
因为软件有助于处理器保护和无效TLB条目,所以在各实施例中可以在上下文切换(例如,MOV to CR3、VM退出和VM进入)时维持TLB条目。于是在各实施例中无需窥探TLB硬件,从而避免了窥探TLB容量或其他限制。
在其它实施例中,半透明ASID可用于含有不将ID显式地分配给不同的地址空间、但要求处理器即使在TLB条目未被当前地址空间使用的情况下也在修改页面表之后采取具体动作清除TLB条目的页面表的任何体系结构中。
因此,在各实施例中,处理器可支持ASID并避免TLB清除(例如,在上下文切换时),而无需专门的硬件检测交叉地址空间污染、也无需显式的软件控制和ASID分配。
虽然已对有限数目的实施例描述了本发明,但是本领域技术人员应该认识到可从中做出许多修改和变化。所附权利要求旨在覆盖落入本发明真实精神和范围内的所有这些修改和变化。

Claims (8)

1.一种方法,包括:
确定预定指令是否未修改选定值;以及
如果未修改所述选定值则对处理器资源采取动作。
2.如权利要求1所述的方法,其特征在于,还包括清除所述处理器资源的所有地址空间内的所有条目。
3.如权利要求1所述的方法,其特征在于,所述预定指令包括移动至控制寄存器指令。
4.如权利要求1所述的方法,其特征在于,所述选定值包括控制寄存器值。
5.如权利要求1所述的方法,其特征在于,采取动作包括清除至少一个翻译后备缓冲器。
6.一种设备,包括:
用于确定预定指令是否未修改选定值的装置;以及
用于如果所述选定值未被修改则对处理器资源执行一动作的装置。
7.如权利要求6所述的设备,其特征在于,还包括:用于清除所述处理器资源的所有地址空间内所有条目的装置。
8.如权利要求6所述的设备,其特征在于,还包括:用于清除至少一个翻译后备缓冲器的装置。
CN2010102276573A 2004-07-30 2005-07-14 体系结构事件期间维持处理器资源的方法、设备、处理器 Active CN101872316B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/903,704 2004-07-30
US10/903,704 US7562179B2 (en) 2004-07-30 2004-07-30 Maintaining processor resources during architectural events

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN200580025726XA Division CN1993683B (zh) 2004-07-30 2005-07-14 体系结构事件期间维持处理器资源

Publications (2)

Publication Number Publication Date
CN101872316A true CN101872316A (zh) 2010-10-27
CN101872316B CN101872316B (zh) 2013-04-10

Family

ID=35207593

Family Applications (2)

Application Number Title Priority Date Filing Date
CN2010102276573A Active CN101872316B (zh) 2004-07-30 2005-07-14 体系结构事件期间维持处理器资源的方法、设备、处理器
CN200580025726XA Active CN1993683B (zh) 2004-07-30 2005-07-14 体系结构事件期间维持处理器资源

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN200580025726XA Active CN1993683B (zh) 2004-07-30 2005-07-14 体系结构事件期间维持处理器资源

Country Status (6)

Country Link
US (14) US7562179B2 (zh)
JP (10) JP2008508598A (zh)
CN (2) CN101872316B (zh)
DE (3) DE112005001798B4 (zh)
HK (1) HK1101436A1 (zh)
WO (1) WO2006019914A2 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106776379A (zh) * 2011-07-26 2017-05-31 英特尔公司 用于在支持共享虚拟存储器的异构计算系统中的tlb关闭的方法和装置
CN112099907A (zh) * 2020-08-26 2020-12-18 海光信息技术有限公司 一种虚拟机运行方法、装置及服务器

Families Citing this family (70)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7562179B2 (en) 2004-07-30 2009-07-14 Intel Corporation Maintaining processor resources during architectural events
US7395400B2 (en) * 2004-09-20 2008-07-01 Hewlett-Packard Development Company, L.P. Adaptive address space operating system
US7886126B2 (en) * 2005-01-14 2011-02-08 Intel Corporation Extended paging tables to map guest physical memory addresses from virtual memory page tables to host physical memory addresses in a virtual machine system
US8214830B2 (en) * 2005-01-19 2012-07-03 Intel Corporation Performance in a virtualization architecture with a processor abstraction layer
US7395405B2 (en) * 2005-01-28 2008-07-01 Intel Corporation Method and apparatus for supporting address translation in a virtual machine environment
US7685635B2 (en) * 2005-03-11 2010-03-23 Microsoft Corporation Systems and methods for multi-level intercept processing in a virtual machine environment
US7386669B2 (en) * 2005-03-31 2008-06-10 International Business Machines Corporation System and method of improving task switching and page translation performance utilizing a multilevel translation lookaside buffer
US8327353B2 (en) * 2005-08-30 2012-12-04 Microsoft Corporation Hierarchical virtualization with a multi-level virtualization mechanism
US7555628B2 (en) * 2006-08-15 2009-06-30 Intel Corporation Synchronizing a translation lookaside buffer to an extended paging table
US8479264B2 (en) * 2006-09-29 2013-07-02 Micron Technology, Inc. Architecture for virtual security module
US7945761B2 (en) * 2006-11-21 2011-05-17 Vmware, Inc. Maintaining validity of cached address mappings
US8615643B2 (en) * 2006-12-05 2013-12-24 Microsoft Corporation Operational efficiency of virtual TLBs
US8171255B1 (en) 2007-02-06 2012-05-01 Parallels IP Holdings GmbH Optimization of paging cache protection in virtual environment
US7596677B1 (en) 2007-02-06 2009-09-29 Parallels Software International, Inc. Paging cache optimization for virtual machine
US7685355B2 (en) * 2007-05-07 2010-03-23 Microsoft Corporation Hardware memory management unit simulation using concurrent lookups for address translation data
US20090172346A1 (en) * 2007-12-31 2009-07-02 Ravi Sahita Transitioning between software component partitions using a page table pointer target list
US8560806B2 (en) * 2007-12-31 2013-10-15 Intel Corporation Using a multiple stage memory address translation structure to manage protected micro-contexts
US8549254B2 (en) * 2007-12-31 2013-10-01 Intel Corporation Using a translation lookaside buffer in a multiple stage memory address translation structure to manage protected microcontexts
US9098625B2 (en) * 2008-02-29 2015-08-04 International Business Machines Corporation Viral trace
FR2929729A1 (fr) * 2008-04-03 2009-10-09 Alveol Technology Sarl Dispositif de gestion de la memoire d'un environnement informatique
US8316211B2 (en) 2008-06-30 2012-11-20 Intel Corporation Generating multiple address space identifiers per virtual machine to switch between protected micro-contexts
US8140825B2 (en) * 2008-08-05 2012-03-20 International Business Machines Corporation Systems and methods for selectively closing pages in a memory
JP5300407B2 (ja) * 2008-10-20 2013-09-25 株式会社東芝 仮想アドレスキャッシュメモリ及び仮想アドレスキャッシュ方法
JP5459006B2 (ja) * 2010-03-24 2014-04-02 富士通株式会社 メモリ管理装置、メモリ管理方法及びメモリ管理プログラム
KR20120068573A (ko) * 2010-12-17 2012-06-27 삼성전자주식회사 심리스 애플리케이션 통합 장치 및 방법
KR20120071554A (ko) * 2010-12-23 2012-07-03 한국전자통신연구원 완전가상화를 위한 주소공간 전환 방법 및 장치
US9158592B2 (en) * 2011-05-02 2015-10-13 Green Hills Software, Inc. System and method for time variant scheduling of affinity groups comprising processor core and address spaces on a synchronized multicore processor
US9804870B2 (en) * 2011-10-28 2017-10-31 Intel Corporation Instruction-set support for invocation of VMM-configured services without VMM intervention
US8719464B2 (en) * 2011-11-30 2014-05-06 Advanced Micro Device, Inc. Efficient memory and resource management
WO2013099414A1 (ja) * 2011-12-26 2013-07-04 インターナショナル・ビジネス・マシーンズ・コーポレーション レジスタ・マッピング方法
WO2013100921A1 (en) * 2011-12-28 2013-07-04 Intel Corporation Allocating memory access control policies
US9465748B2 (en) * 2011-12-30 2016-10-11 Advanced Micro Devices, Inc. Instruction fetch translation lookaside buffer management to support host and guest O/S translations
US10037228B2 (en) * 2012-10-25 2018-07-31 Nvidia Corporation Efficient memory virtualization in multi-threaded processing units
US10310973B2 (en) 2012-10-25 2019-06-04 Nvidia Corporation Efficient memory virtualization in multi-threaded processing units
US10169091B2 (en) 2012-10-25 2019-01-01 Nvidia Corporation Efficient memory virtualization in multi-threaded processing units
US10078518B2 (en) * 2012-11-01 2018-09-18 International Business Machines Corporation Intelligent context management
US10102003B2 (en) 2012-11-01 2018-10-16 International Business Machines Corporation Intelligent context management
US9158702B2 (en) 2012-12-28 2015-10-13 Intel Corporation Apparatus and method for implementing a scratchpad memory using priority hint
CN104239237B (zh) * 2013-06-20 2017-07-14 华为技术有限公司 一种tlb管理方法及装置
WO2015030746A1 (en) * 2013-08-28 2015-03-05 Empire Technology Development, Llc Virtual machine exit analyzer
US9317443B2 (en) 2014-04-17 2016-04-19 International Business Machines Corporation Managing translations across multiple contexts using a TLB with entries directed to multiple privilege levels and to multiple types of address spaces
US9323692B2 (en) 2014-04-17 2016-04-26 International Business Machines Corporation Managing translation of a same address across multiple contexts using a same entry in a translation lookaside buffer
US9626221B2 (en) * 2015-02-24 2017-04-18 Red Hat Israel, Ltd. Dynamic guest virtual machine identifier allocation
US11354128B2 (en) 2015-03-04 2022-06-07 Intel Corporation Optimized mode transitions through predicting target state
TWI518585B (zh) * 2015-05-18 2016-01-21 國立成功大學 具有草稿式記憶體的電子裝置與草稿式記憶體的管理方法
WO2017044124A1 (en) * 2015-09-11 2017-03-16 Hewlett Packard Enterprise Development Lp Switch process virtual address space
US9946566B2 (en) * 2015-09-28 2018-04-17 Intel Corporation Method and apparatus for light-weight virtualization contexts
US20170220466A1 (en) * 2016-01-30 2017-08-03 Intel Corporation Sharing a guest physical address space among virtualized contexts
KR102525229B1 (ko) * 2016-05-13 2023-04-25 에스케이하이닉스 주식회사 메모리 모듈 및 이를 포함하는 시스템
US10180909B2 (en) 2016-07-18 2019-01-15 International Business Machines Corporation Host-based resetting of active use of guest page table indicators
US10176111B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Host page management using active guest page table indicators
US10282305B2 (en) 2016-07-18 2019-05-07 International Business Machines Corporation Selective purging of entries of structures associated with address translation in a virtualized environment
US10162764B2 (en) 2016-07-18 2018-12-25 International Business Machines Corporation Marking page table/page status table entries to indicate memory used to back address translation structures
US10169243B2 (en) 2016-07-18 2019-01-01 International Business Machines Corporation Reducing over-purging of structures associated with address translation
US10176110B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Marking storage keys to indicate memory used to back address translation structures
US10241924B2 (en) 2016-07-18 2019-03-26 International Business Machines Corporation Reducing over-purging of structures associated with address translation using an array of tags
US10248573B2 (en) 2016-07-18 2019-04-02 International Business Machines Corporation Managing memory used to back address translation structures
US10168902B2 (en) 2016-07-18 2019-01-01 International Business Machines Corporation Reducing purging of structures associated with address translation
US10223281B2 (en) 2016-07-18 2019-03-05 International Business Machines Corporation Increasing the scope of local purges of structures associated with address translation
US10176006B2 (en) 2016-07-18 2019-01-08 International Business Machines Corporation Delaying purging of structures associated with address translation
US10802986B2 (en) 2016-07-18 2020-10-13 International Business Machines Corporation Marking to indicate memory used to back address translation structures
KR102439466B1 (ko) * 2017-03-27 2022-09-02 엘지전자 주식회사 단말기 및 그 제어 방법
US10866904B2 (en) * 2017-11-22 2020-12-15 Arm Limited Data storage for multiple data types
US11579770B2 (en) * 2018-03-15 2023-02-14 Western Digital Technologies, Inc. Volatility management for memory device
JP2019212244A (ja) * 2018-06-08 2019-12-12 富士通株式会社 通知制御プログラム、通知制御方法および情報処理装置
US11797665B1 (en) * 2018-06-28 2023-10-24 Advanced Micro Devices, Inc. Protection against branch target buffer poisoning by a management layer
US10891238B1 (en) 2019-06-28 2021-01-12 International Business Machines Corporation Dynamically joining and splitting dynamic address translation (DAT) tables based on operational context
US10970224B2 (en) * 2019-06-28 2021-04-06 International Business Machines Corporation Operational context subspaces
US11074195B2 (en) 2019-06-28 2021-07-27 International Business Machines Corporation Access to dynamic address translation across multiple spaces for operational context subspaces
US11513963B2 (en) * 2021-03-11 2022-11-29 Western Digital Technologies. Inc. Data storage device and method for application identifier handler heads-up for faster storage response

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1139489A (zh) * 1993-11-02 1997-01-01 帕拉科姆有限公司 加速计算机数据库事务处理的装置
US6604187B1 (en) * 2000-06-19 2003-08-05 Advanced Micro Devices, Inc. Providing global translations with address space numbers
US20030217250A1 (en) * 2002-04-16 2003-11-20 Steve Bennett Control register access virtualization performance improvement in the virtual-machine architecture
CN1489059A (zh) * 2002-10-10 2004-04-14 �Ҵ���˾ 管理多处理器系统中虚拟化的物理存储器的方法和系统
CN1489058A (zh) * 2002-10-10 2004-04-14 �Ҵ���˾ 管理数据处理器系统中虚拟化的物理存储器的方法和系统

Family Cites Families (63)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3855456A (en) * 1972-11-22 1974-12-17 Ebasco Serv Monitor and results computer system
JPS553077A (en) 1978-06-23 1980-01-10 Fujitsu Ltd Multi-virtual data processing system
JPS6091462A (ja) * 1983-10-26 1985-05-22 Toshiba Corp 演算制御装置
JPS60100245A (ja) 1983-11-02 1985-06-04 Mitsubishi Electric Corp アドレス変換装置
AU559311B2 (en) * 1984-02-15 1987-03-05 Matsushita Electric Industrial Co., Ltd. Pay tv charge/time data display
US5123101A (en) * 1986-11-12 1992-06-16 Xerox Corporation Multiple address space mapping technique for shared memory wherein a processor operates a fault handling routine upon a translator miss
JPH0336648A (ja) * 1989-07-03 1991-02-18 Hitachi Ltd 電子計算機及びtlb装置とマイクロプロセッサチップ
JPH03185539A (ja) * 1989-12-14 1991-08-13 Hitachi Ltd データ処理装置
EP0464333A3 (en) * 1990-07-03 1992-07-29 International Business Machines Corporation Virtual memory
JPH04349548A (ja) 1991-05-28 1992-12-04 Nec Eng Ltd アドレス変換方式
US5319760A (en) * 1991-06-28 1994-06-07 Digital Equipment Corporation Translation buffer for virtual machines with address space match
JPH06139149A (ja) * 1992-10-29 1994-05-20 Mitsubishi Electric Corp 多重仮想空間制御装置
US6356989B1 (en) * 1992-12-21 2002-03-12 Intel Corporation Translation lookaside buffer (TLB) arrangement wherein the TLB contents retained for a task as swapped out and reloaded when a task is rescheduled
JPH06332803A (ja) * 1993-05-25 1994-12-02 Hitachi Ltd 仮想計算機システムにおけるtlb制御方法
US5892944A (en) * 1993-07-20 1999-04-06 Kabushiki Kaisha Toshiba Program execution and operation right management system suitable for single virtual memory scheme
JPH0784883A (ja) * 1993-09-17 1995-03-31 Hitachi Ltd 仮想計算機システムのアドレス変換バッファパージ方法
JPH07105091A (ja) 1993-10-01 1995-04-21 Hitachi Ltd キャッシュの制御装置および制御方法
JPH07134658A (ja) * 1993-11-09 1995-05-23 Hitachi Ltd 仮想計算機システムのアドレス変換バッファ制御方式
JPH07134659A (ja) * 1993-11-09 1995-05-23 Hitachi Ltd 仮想計算機システムのアドレス変換バッファ制御方式
JP3740195B2 (ja) * 1994-09-09 2006-02-01 株式会社ルネサステクノロジ データ処理装置
US5682495A (en) 1994-12-09 1997-10-28 International Business Machines Corporation Fully associative address translation buffer having separate segment and page invalidation
GB9502864D0 (en) * 1995-02-14 1995-04-05 Digicash Bv Cryptographic reduced instruction set processor
JPH09109380A (ja) 1995-10-20 1997-04-28 Brother Ind Ltd インクジェットプリンタ
JP3557026B2 (ja) * 1996-01-12 2004-08-25 株式会社東芝 仮想記憶管理方法
US5906001A (en) * 1996-12-19 1999-05-18 Intel Corporation Method and apparatus for performing TLB shutdown operations in a multiprocessor system without invoking interrup handler routines
US6075938A (en) * 1997-06-10 2000-06-13 The Board Of Trustees Of The Leland Stanford Junior University Virtual machine monitors for scalable multiprocessors
JPH117411A (ja) 1997-06-17 1999-01-12 Fujitsu Ltd アドレス変換装置
JPH1117411A (ja) 1997-06-27 1999-01-22 Nec Corp マイクロ波回路
GB2339037B (en) 1998-07-03 2002-11-20 Advanced Risc Mach Ltd Memory address translation in a data processing system
US7409694B2 (en) * 1998-09-09 2008-08-05 Microsoft Corporation Highly componentized system architecture with loadable virtual memory manager
US6230248B1 (en) * 1998-10-12 2001-05-08 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for pre-validating regions in a virtual addressing scheme
US6418521B1 (en) * 1998-12-23 2002-07-09 Intel Corporation Hierarchical fully-associative-translation lookaside buffer structure
US6327646B1 (en) * 1999-03-12 2001-12-04 Intel Corporation Translation look-aside buffer utilizing high-order bits for fast access
US6604184B2 (en) 1999-06-30 2003-08-05 Intel Corporation Virtual memory mapping using region-based page tables
JP2001022927A (ja) 1999-07-06 2001-01-26 Fuji Photo Film Co Ltd 画像処理装置、画像処理方法、及び記憶媒体
US6625720B1 (en) * 1999-08-17 2003-09-23 Nec Electronics, Inc. System for posting vector synchronization instructions to vector instruction queue to separate vector instructions from different application programs
US6889319B1 (en) * 1999-12-09 2005-05-03 Intel Corporation Method and apparatus for entering and exiting multiple threads within a multithreaded processor
JP2001236221A (ja) 2000-02-21 2001-08-31 Keisuke Shindo マルチスレッドを利用するパイプライン並列プロセッサ
US6510508B1 (en) * 2000-06-15 2003-01-21 Advanced Micro Devices, Inc. Translation lookaside buffer flush filter
EP1182568A3 (en) * 2000-08-21 2004-07-21 Texas Instruments Incorporated TLB operation based on task-id
US6907600B2 (en) * 2000-12-27 2005-06-14 Intel Corporation Virtual translation lookaside buffer
US6854046B1 (en) * 2001-08-03 2005-02-08 Tensilica, Inc. Configurable memory management unit
US6646899B2 (en) 2001-09-21 2003-11-11 Broadcom Corporation Content addressable memory with power reduction technique
CN1320458C (zh) 2001-12-14 2007-06-06 皇家飞利浦电子股份有限公司 数据处理系统
US7073042B2 (en) * 2002-12-12 2006-07-04 Intel Corporation Reclaiming existing fields in address translation data structures to extend control over memory accesses
US7793286B2 (en) * 2002-12-19 2010-09-07 Intel Corporation Methods and systems to manage machine state in virtual machine operations
US7409487B1 (en) * 2003-06-30 2008-08-05 Vmware, Inc. Virtualization system for computers that use address space indentifiers
US7552254B1 (en) 2003-07-30 2009-06-23 Intel Corporation Associating address space identifiers with active contexts
US7552255B1 (en) 2003-07-30 2009-06-23 Intel Corporation Dynamically partitioning pipeline resources
US7870553B2 (en) * 2003-08-28 2011-01-11 Mips Technologies, Inc. Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts
US20050182903A1 (en) * 2004-02-12 2005-08-18 Mips Technologies, Inc. Apparatus and method for preventing duplicate matching entries in a translation lookaside buffer
US7562179B2 (en) 2004-07-30 2009-07-14 Intel Corporation Maintaining processor resources during architectural events
US8312452B2 (en) * 2005-06-30 2012-11-13 Intel Corporation Method and apparatus for a guest to access a privileged register
US8555081B2 (en) * 2007-10-30 2013-10-08 Vmware, Inc. Cryptographic multi-shadowing with integrity verification
JP5459006B2 (ja) * 2010-03-24 2014-04-02 富士通株式会社 メモリ管理装置、メモリ管理方法及びメモリ管理プログラム
US8751833B2 (en) * 2010-04-30 2014-06-10 Arm Limited Data processing system
US8667258B2 (en) * 2010-06-23 2014-03-04 International Business Machines Corporation High performance cache translation look-aside buffer (TLB) lookups using multiple page size prediction
US9465748B2 (en) * 2011-12-30 2016-10-11 Advanced Micro Devices, Inc. Instruction fetch translation lookaside buffer management to support host and guest O/S translations
US9804896B2 (en) * 2012-07-31 2017-10-31 Empire Technology Development Llc Thread migration across cores of a multi-core processor
US10310973B2 (en) * 2012-10-25 2019-06-04 Nvidia Corporation Efficient memory virtualization in multi-threaded processing units
US9009413B2 (en) * 2012-12-21 2015-04-14 Intel Corporation Method and apparatus to implement lazy flush in a virtually tagged cache memory
US9703951B2 (en) * 2014-09-30 2017-07-11 Amazon Technologies, Inc. Allocation of shared system resources
US10209991B2 (en) * 2016-01-21 2019-02-19 Advanced Micro Devices, Inc. Instruction set and micro-architecture supporting asynchronous memory access

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1139489A (zh) * 1993-11-02 1997-01-01 帕拉科姆有限公司 加速计算机数据库事务处理的装置
US6604187B1 (en) * 2000-06-19 2003-08-05 Advanced Micro Devices, Inc. Providing global translations with address space numbers
US20030217250A1 (en) * 2002-04-16 2003-11-20 Steve Bennett Control register access virtualization performance improvement in the virtual-machine architecture
CN1489059A (zh) * 2002-10-10 2004-04-14 �Ҵ���˾ 管理多处理器系统中虚拟化的物理存储器的方法和系统
CN1489058A (zh) * 2002-10-10 2004-04-14 �Ҵ���˾ 管理数据处理器系统中虚拟化的物理存储器的方法和系统

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106776379A (zh) * 2011-07-26 2017-05-31 英特尔公司 用于在支持共享虚拟存储器的异构计算系统中的tlb关闭的方法和装置
CN112099907A (zh) * 2020-08-26 2020-12-18 海光信息技术有限公司 一种虚拟机运行方法、装置及服务器
CN112099907B (zh) * 2020-08-26 2024-01-26 海光信息技术股份有限公司 一种虚拟机运行方法、装置及服务器

Also Published As

Publication number Publication date
US20150113199A1 (en) 2015-04-23
JP5214676B2 (ja) 2013-06-19
DE112005003863B3 (de) 2022-02-10
US9164901B2 (en) 2015-10-20
US20160011986A1 (en) 2016-01-14
DE112005003859B4 (de) 2022-01-27
HK1101436A1 (en) 2007-10-18
JP2008508598A (ja) 2008-03-21
US20130232316A1 (en) 2013-09-05
US20110125952A1 (en) 2011-05-26
JP2015084260A (ja) 2015-04-30
CN1993683A (zh) 2007-07-04
JP5670508B2 (ja) 2015-02-18
US8788790B2 (en) 2014-07-22
US20170235678A1 (en) 2017-08-17
US20180357179A1 (en) 2018-12-13
US20090248951A1 (en) 2009-10-01
JP2011023017A (ja) 2011-02-03
US10303620B2 (en) 2019-05-28
DE112005003859A5 (de) 2014-09-04
JP2011008805A (ja) 2011-01-13
JP2013257911A (ja) 2013-12-26
US20150227470A1 (en) 2015-08-13
US20090193222A1 (en) 2009-07-30
US9996475B2 (en) 2018-06-12
CN1993683B (zh) 2010-09-01
US9164918B2 (en) 2015-10-20
DE112005001798B4 (de) 2018-09-06
US8543793B2 (en) 2013-09-24
DE112005001798T5 (de) 2007-05-24
JP6995731B2 (ja) 2022-01-17
US8806172B2 (en) 2014-08-12
JP2013145599A (ja) 2013-07-25
CN101872316B (zh) 2013-04-10
US20130212314A1 (en) 2013-08-15
US10740249B2 (en) 2020-08-11
US20060026384A1 (en) 2006-02-02
JP2016192241A (ja) 2016-11-10
US7899972B2 (en) 2011-03-01
JP2019050027A (ja) 2019-03-28
US7562179B2 (en) 2009-07-14
JP5372994B2 (ja) 2013-12-18
US9152561B2 (en) 2015-10-06
JP5378450B2 (ja) 2013-12-25
WO2006019914A3 (en) 2006-06-22
JP2011181094A (ja) 2011-09-15
WO2006019914A2 (en) 2006-02-23
US20150113200A1 (en) 2015-04-23
US9086958B2 (en) 2015-07-21
US9507730B2 (en) 2016-11-29
JP2011181095A (ja) 2011-09-15
US20130097360A1 (en) 2013-04-18
US7904694B2 (en) 2011-03-08
US20190324920A1 (en) 2019-10-24

Similar Documents

Publication Publication Date Title
CN1993683B (zh) 体系结构事件期间维持处理器资源
EP2889777B1 (en) Modifying memory permissions in a secure processing environment
US7330942B2 (en) Method for efficient virtualization of physical memory in a virtual-machine monitor
US8166276B2 (en) Translate and verify instruction for a processor
EP1405191B1 (en) Multiprocessor system implementing virtual memory using a shared memory, and a page replacement method for maintaining paged memory coherence
CN109074316B (zh) 页面错误解决方案
US5852738A (en) Method and apparatus for dynamically controlling address space allocation
EP1891533B1 (en) Translating loads for accelerating virtualized partition
WO2009001153A1 (en) Memory protection unit in a virtual processing environment
CN110196757A (zh) 虚拟机的tlb填写方法、装置及存储介质
JPH10187538A (ja) 仮想アドレス変換資源の共用化の方法及びシステム
US8091090B2 (en) Method for providing scratch registers for use by a virtual-machine monitor
JP2612173B2 (ja) 仮想計算機
JPH02196350A (ja) 情報処理装置

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