CN101872316B - 体系结构事件期间维持处理器资源的方法、设备、处理器 - Google Patents
体系结构事件期间维持处理器资源的方法、设备、处理器 Download PDFInfo
- Publication number
- CN101872316B CN101872316B CN2010102276573A CN201010227657A CN101872316B CN 101872316 B CN101872316 B CN 101872316B CN 2010102276573 A CN2010102276573 A CN 2010102276573A CN 201010227657 A CN201010227657 A CN 201010227657A CN 101872316 B CN101872316 B CN 101872316B
- Authority
- CN
- China
- Prior art keywords
- address space
- asid
- processor
- client
- subclauses
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 42
- 238000013519 translation Methods 0.000 claims abstract description 43
- 230000009471 action Effects 0.000 claims abstract description 12
- 230000004044 response Effects 0.000 claims 3
- 238000003860 storage Methods 0.000 description 23
- 230000008569 process Effects 0.000 description 16
- 238000010586 diagram Methods 0.000 description 10
- 229910003460 diamond Inorganic materials 0.000 description 8
- 239000010432 diamond Substances 0.000 description 8
- 230000008859 change Effects 0.000 description 7
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000014509 gene expression Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000000295 complement effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0891—Addressing 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1063—Address 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/109—Address translation for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45591—Monitoring or debugging support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/15—Use in a specific computing environment
- G06F2212/152—Virtualized environment, e.g. logically partitioned system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/30—Providing cache or TLB in specific location of a processing system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/50—Control mechanisms for virtual memory, cache or TLB
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
- G06F2212/604—Details relating to cache allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/651—Multi-level translation tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
- G06F2212/683—Invalidation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
- G06F2212/684—TLB miss handling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/70—Details 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转换。不同指令和事件的这些不同实现可在处理器微代码中实现。例如,对于客户软件内的MOVto 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或由客户支配的其他资源。随后,因为虚拟化软件处理本文中所述的清除活动,所以由客户承担的某些事件(例如,MOVto 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,则软件可用已经存储在那里的完全相同值执行MOVto CR3指令。因为该软件不指定哪个ASID需要被清除,所以当处理器看见这一CR4写入时,该处理器就清除用于所有ASID的所有TLB。在各个实施例中,如果PDE(或更高)条目被改变或者如果CR3从CR3目标值中移除并且监视器不再保护它,则软件就可清除用于一地址空间的整个TLB。
现参看图5,示出了根据本发明一实施例的另一种方法的流程图。具体地,方法250用于清除所有ASID的所有TLB。如图5所示,这一方法通过接收MOV to CR4指令(椭圆框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 (19)
1.一种用于在体系结构事件期间维持处理器资源的方法,包括:
确定预定指令是否未修改选定值;以及
如果未修改所述选定值则对处理器资源采取动作,其中采取动作包括清除至少一个翻译后备缓冲器;
所述翻译后备缓冲器的条目被扩展有地址空间标识符字段,所述地址空间标识符字段指示它所对应的地址空间,所述地址空间标识符字段包括在载入所述翻译后备缓冲器的条目时的当前地址空间标识符的值。
2.如权利要求1所述的方法,其特征在于,还包括清除所述处理器资源的所有地址空间内的所有条目。
3.如权利要求1所述的方法,其特征在于,所述预定指令包括移动至控制寄存器指令。
4.如权利要求1所述的方法,其特征在于,所述选定值包括控制寄存器值。
5.一种用于在体系结构事件期间维持处理器资源的设备,包括:
用于确定预定指令是否未修改选定值的装置;以及
用于如果所述选定值未被修改则对处理器资源执行一动作的装置,其中采取动作包括清除至少一个翻译后备缓冲器;
所述翻译后备缓冲器的条目被扩展有地址空间标识符字段,所述地址空间标识符字段指示它所对应的地址空间,所述地址空间标识符字段包括在载入所述翻译后备缓冲器的条目时的当前地址空间标识符的值。
6.如权利要求5所述的设备,其特征在于,还包括:用于清除所述处理器资源的所有地址空间内所有条目的装置。
7.一种用于在体系结构事件期间维持处理器资源的处理器,包括:
控制寄存器,存储页面目录基址;
翻译后备缓冲器,包含多个条目,所述多个条目包括地址空间标识符字段;以及
执行逻辑单元,执行移动到控制寄存器的指令,以在地址空间之间进行 切换而不清除所述翻译后备缓冲器。
8.如权利要求7所述的处理器,其特征在于,所述控制寄存器是CR3。
9.如权利要求7所述的处理器,其特征在于,所述执行逻辑单元进一步在第一客户的地址空间和第二客户的地址空间之间进行切换而不清除所述翻译后备缓冲器,所述第一客户的地址空间对应于第一地址空间标识符,所述第二客户的地址空间对应于第二地址空间标识符。
10.如权利要求7所述的处理器,其特征在于,所述翻译后备缓冲器将存储地址空间标识符(ASID)。
11.如权利要求7所述的处理器,其特征在于,所述地址空间标识符字段包括多个比特。
12.如权利要求7所述的处理器,其特征在于,所述执行逻辑单元进一步响应于确定地址空间标识符列表已满而清除所述翻译后备缓冲器。
13.一种用于在体系结构事件期间维持处理器资源的方法,包括:
在控制寄存器中存储页面目录基址;
在翻译后备缓冲器存储地址空间标识符;以及
执行移动到控制寄存器的指令,以在地址空间之间进行切换而不清除所述翻译后备缓冲器。
14.如权利要求13所述的方法,其特征在于,所述控制寄存器是CR3。
15.如权利要求13所述的方法,其特征在于,还包括:在第一客户的地址空间和第二客户的地址空间之间进行切换而不清除所述翻译后备缓冲器,所述第一客户的地址空间对应于第一地址空间标识符,所述第二客户的地址空间对应于第二地址空间标识符。
16.如权利要求13所述的方法,其特征在于,所述地址空间标识符包括多个比特。
17.如权利要求13所述的方法,其特征在于,还包括:响应于确定地址空间标识符列表已满而清除所述翻译后备缓冲器。
18.一种执行虚拟机监视器的处理器,所述虚拟机监视器向客户软件呈现一个或多个虚拟机,所述处理器包括:
控制寄存器,存储页面目录基址;
翻译后备缓冲器,包含多个条目,所述多个条目包括地址空间标识符字段;以及
执行逻辑单元,执行到控制寄存器指令的移动,以在第一客户的地址空间和第二客户的地址空间之间进行切换而不清除所述翻译后备缓冲器,所述第一客户的地址空间对应于第一地址空间标识符,所述第二客户的地址空间对应于第二地址空间标识符。
19.如权利要求18所述的处理器,其特征在于,所述执行逻辑单元进一步响应于确定地址空间标识符列表已满而清除所述翻译后备缓冲器。
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 CN101872316A (zh) | 2010-10-27 |
CN101872316B true CN101872316B (zh) | 2013-04-10 |
Family
ID=35207593
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200580025726XA Expired - Fee Related CN1993683B (zh) | 2004-07-30 | 2005-07-14 | 体系结构事件期间维持处理器资源 |
CN2010102276573A Expired - Fee Related CN101872316B (zh) | 2004-07-30 | 2005-07-14 | 体系结构事件期间维持处理器资源的方法、设备、处理器 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200580025726XA Expired - Fee Related CN1993683B (zh) | 2004-07-30 | 2005-07-14 | 体系结构事件期间维持处理器资源 |
Country Status (6)
Country | Link |
---|---|
US (14) | US7562179B2 (zh) |
JP (10) | JP2008508598A (zh) |
CN (2) | CN1993683B (zh) |
DE (3) | DE112005003863B3 (zh) |
HK (1) | HK1101436A1 (zh) |
WO (1) | WO2006019914A2 (zh) |
Families Citing this family (72)
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 |
US7596677B1 (en) | 2007-02-06 | 2009-09-29 | Parallels Software International, Inc. | Paging cache optimization for virtual machine |
US8171255B1 (en) | 2007-02-06 | 2012-05-01 | Parallels IP Holdings GmbH | Optimization of paging cache protection in virtual environment |
US7685355B2 (en) * | 2007-05-07 | 2010-03-23 | Microsoft Corporation | Hardware memory management unit simulation using concurrent lookups for address translation data |
US8560806B2 (en) * | 2007-12-31 | 2013-10-15 | Intel Corporation | Using a multiple stage memory address translation structure to manage protected micro-contexts |
US20090172346A1 (en) * | 2007-12-31 | 2009-07-02 | Ravi Sahita | Transitioning between software component partitions using a page table pointer target list |
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 |
US9916257B2 (en) * | 2011-07-26 | 2018-03-13 | Intel Corporation | Method and apparatus for TLB shoot-down in a heterogeneous computing system supporting shared virtual memory |
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 |
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 |
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 |
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 |
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 |
US10176110B2 (en) | 2016-07-18 | 2019-01-08 | International Business Machines Corporation | Marking storage keys to indicate memory used to back address translation structures |
US10176006B2 (en) | 2016-07-18 | 2019-01-08 | International Business Machines Corporation | Delaying purging of structures associated with address translation |
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 |
US10176111B2 (en) | 2016-07-18 | 2019-01-08 | International Business Machines Corporation | Host page management using active guest page table indicators |
US10223281B2 (en) | 2016-07-18 | 2019-03-05 | International Business Machines Corporation | Increasing the scope of local purges of structures associated with address translation |
US10248573B2 (en) | 2016-07-18 | 2019-04-02 | International Business Machines Corporation | Managing 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 |
US10168902B2 (en) | 2016-07-18 | 2019-01-01 | International Business Machines Corporation | Reducing 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 |
CN112099907B (zh) * | 2020-08-26 | 2024-01-26 | 海光信息技术股份有限公司 | 一种虚拟机运行方法、装置及服务器 |
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 (4)
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 |
CN1489058A (zh) * | 2002-10-10 | 2004-04-14 | �Ҵ���˾ | 管理数据处理器系统中虚拟化的物理存储器的方法和系统 |
CN1489059A (zh) * | 2002-10-10 | 2004-04-14 | �Ҵ���˾ | 管理多处理器系统中虚拟化的物理存储器的方法和系统 |
Family Cites Families (64)
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 | キャッシュの制御装置および制御方法 |
JPH07134659A (ja) * | 1993-11-09 | 1995-05-23 | Hitachi Ltd | 仮想計算機システムのアドレス変換バッファ制御方式 |
JPH07134658A (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 |
AU2002366404A1 (en) | 2001-12-14 | 2003-06-30 | Koninklijke Philips Electronics N.V. | Data processing system |
US7127548B2 (en) * | 2002-04-16 | 2006-10-24 | Intel Corporation | Control register access virtualization performance improvement in the virtual-machine architecture |
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 |
US7552255B1 (en) | 2003-07-30 | 2009-06-23 | Intel Corporation | Dynamically partitioning pipeline resources |
US7552254B1 (en) | 2003-07-30 | 2009-06-23 | Intel Corporation | Associating address space identifiers with active contexts |
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 |
WO2014021995A1 (en) * | 2012-07-31 | 2014-02-06 | 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 |
-
2004
- 2004-07-30 US US10/903,704 patent/US7562179B2/en active Active
-
2005
- 2005-07-14 DE DE112005003863.7T patent/DE112005003863B3/de active Active
- 2005-07-14 DE DE112005003859.9T patent/DE112005003859B4/de active Active
- 2005-07-14 WO PCT/US2005/024997 patent/WO2006019914A2/en active Application Filing
- 2005-07-14 CN CN200580025726XA patent/CN1993683B/zh not_active Expired - Fee Related
- 2005-07-14 DE DE112005001798.2T patent/DE112005001798B4/de active Active
- 2005-07-14 CN CN2010102276573A patent/CN101872316B/zh not_active Expired - Fee Related
- 2005-07-14 JP JP2007523610A patent/JP2008508598A/ja active Pending
-
2007
- 2007-08-27 HK HK07109284A patent/HK1101436A1/xx not_active IP Right Cessation
-
2009
- 2009-03-30 US US12/413,655 patent/US7904694B2/en not_active Expired - Lifetime
- 2009-06-12 US US12/483,519 patent/US7899972B2/en not_active Expired - Lifetime
-
2010
- 2010-08-10 JP JP2010179220A patent/JP5214676B2/ja active Active
- 2010-08-10 JP JP2010179219A patent/JP2011023017A/ja active Pending
-
2011
- 2011-02-03 US US13/020,161 patent/US8543793B2/en not_active Expired - Lifetime
- 2011-05-11 JP JP2011106136A patent/JP5372994B2/ja not_active Expired - Fee Related
- 2011-05-11 JP JP2011106137A patent/JP5378450B2/ja not_active Expired - Fee Related
-
2012
- 2012-12-07 US US13/708,547 patent/US8788790B2/en not_active Expired - Lifetime
-
2013
- 2013-03-15 US US13/837,997 patent/US9086958B2/en not_active Expired - Fee Related
- 2013-03-15 US US13/843,601 patent/US8806172B2/en not_active Expired - Lifetime
- 2013-04-25 JP JP2013092397A patent/JP5670508B2/ja not_active Expired - Fee Related
- 2013-09-30 JP JP2013204470A patent/JP2013257911A/ja active Pending
-
2014
- 2014-12-22 US US14/579,526 patent/US9164901B2/en not_active Expired - Fee Related
- 2014-12-22 US US14/579,040 patent/US9152561B2/en not_active Expired - Fee Related
- 2014-12-23 US US14/580,345 patent/US9164918B2/en not_active Expired - Fee Related
-
2015
- 2015-02-04 JP JP2015020410A patent/JP2015084260A/ja active Pending
- 2015-09-18 US US14/858,835 patent/US9507730B2/en not_active Expired - Lifetime
-
2016
- 2016-08-16 JP JP2016159588A patent/JP2016192241A/ja active Pending
- 2016-11-29 US US15/362,820 patent/US9996475B2/en not_active Expired - Lifetime
-
2018
- 2018-06-11 US US16/005,385 patent/US10303620B2/en not_active Expired - Fee Related
- 2018-11-20 JP JP2018217401A patent/JP6995731B2/ja active Active
-
2019
- 2019-05-02 US US16/401,889 patent/US10740249B2/en not_active Expired - Fee Related
Patent Citations (4)
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 |
CN1489058A (zh) * | 2002-10-10 | 2004-04-14 | �Ҵ���˾ | 管理数据处理器系统中虚拟化的物理存储器的方法和系统 |
CN1489059A (zh) * | 2002-10-10 | 2004-04-14 | �Ҵ���˾ | 管理多处理器系统中虚拟化的物理存储器的方法和系统 |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101872316B (zh) | 体系结构事件期间维持处理器资源的方法、设备、处理器 | |
EP2889777B1 (en) | Modifying memory permissions in a secure processing environment | |
US6651132B1 (en) | System and method for emulating the operation of a translation look-aside buffer | |
CN102129410B (zh) | 提供扩展的存储器保护 | |
US7330942B2 (en) | Method for efficient virtualization of physical memory in a virtual-machine monitor | |
US6789156B1 (en) | Content-based, transparent sharing of memory units | |
US7222221B1 (en) | Maintaining coherency of derived data in a computer system | |
US8166276B2 (en) | Translate and verify instruction for a processor | |
US5852738A (en) | Method and apparatus for dynamically controlling address space allocation | |
EP1891533B1 (en) | Translating loads for accelerating virtualized partition | |
US20110010483A1 (en) | Memory protection unit in a virtual processing environment | |
US20190188028A1 (en) | Paravirtualized access for device assignment by bar extension | |
CN101833515A (zh) | 微处理器及缩短分页表寻访时间的方法 | |
EP3830719B1 (en) | Binary search procedure for control table stored in memory system | |
CN105393229A (zh) | 虚拟机中的页面错误注入使得经换出的存储器页面映射到虚拟机虚拟化存储器中 | |
JPH10187538A (ja) | 仮想アドレス変換資源の共用化の方法及びシステム | |
KR20220061983A (ko) | 입출력 메모리 관리 유닛으로부터 게스트 운영 시스템으로의 인터럽트 제공 | |
KR20220001016A (ko) | 게스트 운영체제에 입출력 메모리 관리 유닛 레지스터 복사본을 제공하는 방법 | |
US7685381B2 (en) | Employing a data structure of readily accessible units of memory to facilitate memory access | |
JPH11265286A (ja) | レガシ指令のエミュレ―ション装置及び方法 | |
US8091090B2 (en) | Method for providing scratch registers for use by a virtual-machine monitor | |
JP4047281B2 (ja) | キャッシュメモリをメインメモリに同期させる方法 | |
EP1901171A1 (en) | Apparatus and method for handling interrupt disabled section and page pinning apparatus and method | |
US20050268021A1 (en) | Method and system for operating a cache memory | |
US20240311152A1 (en) | Translation lookaside buffer maintenance method and related device |
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: 20130410 |