CN105993004A - 支持同时无效化共同内容的地址转译快取 - Google Patents

支持同时无效化共同内容的地址转译快取 Download PDF

Info

Publication number
CN105993004A
CN105993004A CN201480065922.9A CN201480065922A CN105993004A CN 105993004 A CN105993004 A CN 105993004A CN 201480065922 A CN201480065922 A CN 201480065922A CN 105993004 A CN105993004 A CN 105993004A
Authority
CN
China
Prior art keywords
bit
address
translation
project
universe
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
CN201480065922.9A
Other languages
English (en)
Other versions
CN105993004B (zh
Inventor
柯林.艾迪
密斯瓦纳斯.摩罕
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.)
Shanghai Zhaoxin Semiconductor Co Ltd
Original Assignee
Shanghai Zhaoxin Integrated Circuit Co Ltd
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 Shanghai Zhaoxin Integrated Circuit Co Ltd filed Critical Shanghai Zhaoxin Integrated Circuit Co Ltd
Publication of CN105993004A publication Critical patent/CN105993004A/zh
Application granted granted Critical
Publication of CN105993004B publication Critical patent/CN105993004B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/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]
    • 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/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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • 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
    • 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/1041Resource optimization
    • G06F2212/1044Space efficiency 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/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

Abstract

一种处理器,包含一映射模块,用以将架构虚拟处理器标识符映射至非架构全域标识符并将架构程序内容标识符映射至非架构区域标识符。此处理器还包含一具有多个地址转译的转译后备缓冲器(TLB)。对于其中每个地址转译:当此地址转译为全域地址转译时,会在此地址转译加上其中一个非架构全域标识符,而映射模块已将其中一个虚拟处理器标识符映射至此非架构全域标识符;当此地址转译为区域地址转译时,会在此地址转译加上其中一个非架构区域标识符,而映射模块已将其中一个程序内容标识符映射至此非架构区域标识符。

Description

支持同时无效化共同内容的地址转译快取
相关申请交叉引用
本申请主张申请日为2014年7月21日的美国专利第62/026,830号临时申请的优先权。该优先权申请的全文并入本申请以供参考。
背景技术
现代处理器支持虚拟存储器功能。虚拟存储器系统将由程序使用的虚拟地址映射或转译至由硬件使用的物理地址以对存储器定址。虚拟存储器可以对程序隐藏物理存储器散布的问题,以利程序重定位(relocation)的进行,并可容许程序看到相较于可取用的物理存储器更大的地址空间。这些优点尤其有利于现代使用多程序或进程以支持处理器时间共享(time-sharing)的系统。
操作系统(operationg system)产生并维护存储器转译表(memorytranslation table)。存储器转译表通常被称为分页虚拟存储器系统的页表(pagetable),用以将虚拟地址映射至物理地址。此转译表可采取阶层表单的型式,其中部分表单将虚拟地址映射至中间表单的地址。在程序利用虚拟地址来存取存储器的时候,转译表必须能被存取,以完成虚拟地址转译至其物理位置的过程,这过程通常被称为页表移动(page table walk)或表移动(table walk)。这个存取转译表的额外存取动作,会明显造成存取存储器以取得程序所需的数据或指令的最终存取动作的延迟。
现代处理器具有转译后备缓冲器(translation-lookaside buffer,TLB)来处理这个问题并提升效能。TLB是一个处理器的硬件结构,通过依序存取虚拟至物理地址的转译,以大幅降低需要存取转译表的可能性。先在TLB内查看待转译的虚拟地址,然后再由TLB提供物理地址。如果此虚拟地址存在(命中)于TLB内,所需要的时间就会明显少于存取存储器内的转译表来执行页移动所需的时间。TLB的效率(命中率)对于处理器的效能来说非常关键。
各个进程(process)或内容(context)都具有其特殊地址空间与相关联的地址转译。因此,对于一个进程而言正确的TLB项目,对于另一个进程来说未必正确。当处理器切换处理进程时,TLB效能会降低。此系统必须确保没有因为使用过时的TLB项目而误用TLB中用于旧进程的地址转译来转译新进程的虚拟地址。
发明内容
本发明提供一种处理器。此处理器包含一映射模块,用以将架构虚拟处理器标识符(architectural virtual processor identifier)映射至非架构全域标识符(non-architectural global identifier),并将架构进程内容标识符(architecturalprocess context identifier)映射至非架构区域标识符(non-architectural localidentifier)。此处理器还包含一转译后备缓冲器(translation-lookaside buffer,TLB)。此转译后备缓冲器具有多个地址转译(address translation)。对于其中每个地址转译:当此地址转译为全域地址转译时,会在此地址转译加上其中一个非架构全域标识符,而映射模块已将其中一个虚拟处理器标识符映射至此非架构全域标识符;当此地址转译为区域地址转译时,会在此地址转译加上其中一个非架构区域标识符,而映射模块已将其中一个进程内容标识符映射至此非架构区域标识符。
本发明并提供一种方法以操作一处理器。此处理器包含一转译后备缓冲器,而此转译后备缓冲器具有多个地址转译。此方法包含将架构虚拟处理器标识符映射至非架构全域标识符,以及将架构进程内容标识符映射至非架构区域标识符。此方法还包含,对于其中每个地址转译:当此地址转译为全域地址转译时,会在此地址转译加上其中一个非架构全域标识符,而映射模块已将其中一个虚拟处理器标识符映射至此非架构全域标识符;当此地址转译为区域地址转译时,会在此地址转译加上其中一个非架构区域标识符,而映射模块已将其中一个进程内容标识符映射至此非架构区域标识符。
本发明更提供一编码于至少一非暂态计算机可使用介质(non transitorycomputer usable medium)的计算机程序产品,以供一计算装置使用。此计算机程序产品包含计算机可使用程序代码,实现于此介质内,以特定一处理器。此计算机可使用程序代码包含一第一程序代码以特定一映射模块,将架构虚拟处理器标识符映射至非架构全域标识符,以及将架构进程内容标识符映射至非架构区域标识符。此计算机可使用程序代码还包含第二程序代码,以特定一转译后备缓冲器。而此转译后备缓冲器具有多个地址转译。对于其中每个地址转译:当此地址转译为全域地址转译时,会在此地址转译加上其中一个非架构全域标识符,而映射模块已将其中一个虚拟处理器标识符映射至此非架构全域标识符;当此地址转译为区域地址转译时,会在此地址转译加上其中一个非架构区域标识符,而映射模块已将其中一个进程内容标识符映射至此非架构区域标识符。
本发明所采用的具体实施例,将藉由以下的实施例及附图作进一步的说明。
附图说明
图1是一处理器的方块示意图;
图2是一方块图详细显示图1的处理器;
图3是转译后备缓冲器的一项目的方块示意图;
图4是一流程图显示图1的处理器填入转译后备缓冲器的项目的操作流程;
图5是一方块示意图显示一位于转译后备缓冲器内的逻辑以确认查找过程中是否发生命中;
图6是一方块示意图显示一逻辑,用以无效化转译后备缓冲器(请参照图2)的项目(请参照图3)的LVAL比特向量的比特;
图7是一方块示意图显示图1的处理器内的一控制寄存器;
图8是一流程图显示映射模块响应于图7的控制寄存器中各个不同比特的设定所执行的操作;
图9是一方块示意图详细显示图2的区域内容表;
图10是一方块示意图详细显示图2的全域内容表;
图11是一流程图显示图1的处理器执行指令使处理器的架构特征失效的操作,而此处理器支持多个进程内容标识符(process context identifier,PCID);
图12是一流程图显示图1的处理器执行指令以改变当前地址转译内容的操作;
图13是一流程图,显示图1的处理器执行图12的步骤(以及图19与图21的步骤1918与2106)所呼叫的MOV_CR3()例程的操作;
图14是一流程图显示图1的处理器执行图13的步骤1308(以及图16与图17的步骤1606与1722)所呼叫的ALLOCATE_LOCAL_CONTEXT()例程的操作;
图15是一流程图显示图1的处理器在虚拟机器监视器至客户的移转过程的操作;
图16是一流程图显示图1的处理器执行例程MOVTOCR3NOVPID的操作;
图17是一流程图显示图1的处理器执行例程MOVTOCR3VPID的操作;
图18是一流程图显示图1的处理器执行图17的步骤1712所呼叫的ALLOCATE_GLOBAL_CONTEXT()例程的操作。
图19是一流程图显示图1的处理器在由客户至虚拟机器监视器的移转过程的操作;
图20是一流程图显示图1的处理器进入系统管理模式(systemmanagement mode,SMM)的移转过程的操作;
图21是一流程图显示图1的处理器离开SMM的移转过程的操作;
图22,此图是一流程图显示处理器执行指令以无效化转译后备缓冲器中与一进程内容标识符有关的地址转译的操作;
图23A与图23B(整体称为图23)是一流程图显示处理器执行指令以无效化转译后备缓冲器中关联于一虚拟处理器标识符(virtual processor identifier,VPID)的地址转译的操作;以及
图24是一流程图显示处理器执行指令以无效化转译后备缓冲器中关联于一扩展页表指针(extended page table pointer)的地址转译的操作。
具体实施方式
名词说明
地址转译内容(address translation context)是一组可以使存储器地址从一第一存储器地址空间转译至一第二存储器地址空间的信息。举例来说,在x86指令集架构中,地址转译内容可以是一组位于CR3寄存器(与其他控制寄存器,例如CR0与CR4与相关的特定模式寄存器(model specific register,MSR))、页表(page table)、页目录(page directory)、页目录指针表(page-directory-pointertable,PDPT)、PML4表、扩展页表指针(extended page table pointer,EPTP)、与/或扩展页表(extended page table,EPT)内的信息,可以使线性地址(linearaddress)转译为物理存储器地址。不过,在其他指令集架构中(例如MIPS、SPARC),则可由操作系统执行此转译。而在ARM指令集架构中,地址转译内容可以是一组位于转译表基址寄存器(translation table base register,TTBR)(与其他控制寄存器,例如转译控制寄存器(translation control register,TCR)、系统控制寄存器(system control register,SCTLR)与Hyp组态寄存器(Hypconfiguration register,HCR))与/或转译表内的信息。
地址转译(address translation)是一对存储器地址,这对存储器地址的第一个是待转译地址,而这对存储器地址的第二个是转译后地址。
区域地址转译(local address translation)是一种地址转译,使用单一个地址转译内容来将待转译地址转译为转译后地址。
全域地址转译(global address translation)是一种地址转译,使用多个地址转译内容来将待转译地址转译为转译后地址。
区域存储器页(local memory page)(或是区域页(local page),是一个具有一区域地址转译的存储器页。
全域存储器页(global memory page)(或是全域页(global page)),是一个具有一全域地址转译的存储器页。
许多习知的指令集架构(ISA)都具有设计来提升TLB效率的特征。举例来说,x86指令集架构可支持PCIDs、VPIDs与EPTEs。处理器一次无效化一个相关的TLB项目的实施方式会需要相对较长的时间来执行指令,尤其是在TLB较大且具有多个项目需要被无效化的情形。相较之下,本文所描述的实施例则可支持多个TLB项目的同时无效化。
此外,为了避免在各个TLB项目内纳入大量比特以储存处理器指令集架构所支持的整个地址转译内容空间所需要的信息,本文所述的实施例将此大空间映射至远小于此空间的非架构空间,如此,TLB项目内只须纳入少量比特。然而,当新的地址转译内容需要被映射至较小的非架构空间内时,就需要针对非由此非架构空间所映射的一地址转译空间,无效化其相关的TLB项目。本文所描述的实施例使处理器可以同时无效化所有与待映射的地址转译内容相关的TLB项目。这些实施例并考量到区域与全域地址转译的性质不同,而能支持此二种类型的TLB项目的无效化处理。
现在请参照图1,此图是一处理器100的方块示意图。此处理器100包含一指令快取102、一包含微码(microcode)106的指令转译器104、执行单元112、架构寄存器114、一存储器子系统122、一快取存储器阶层架构(cachememory hierarchy)118与一总线接口单元116。其他功能单元(图中未显示)可包含一表移动引擎(table walk engine),执行转译表移动以产生虚拟至物理的地址转译;分支预测器(branch predictor);一重排缓冲器;保留站;一指令排程器(instruction scheduler);与数据预撷取单元(data prefetch unit)等等。在一实施例中,此微处理器100具有一超纯量微架构(superscalarmicroarchitecture),而能在单一时钟周期发布多个指令给执行单元112执行。在一实施例中,微处理器100大致符合x86指令集架构,不过也可能符合其他不同的指令集架构。
指令快取102储存(cache)撷取自系统存储器的架构指令,而此系统存储器与总线接口单元116互相沟通。就一较佳实施例而言,TLB关联于储存地址转译供指令使用的指令快取102,例如图2的TLB 206。在一实施例中,指令转译器104将撷取自指令快取102的架构指令转译为此微处理器100的微架构的微指令集的微指令。执行单元112执行这些微指令。这些由架构指令转译出的微指令可实现架构指令。
执行单元112由架构寄存器114(或是由重排缓冲器或一转送总线)接收源运算元(source operand)。这些运算元由存储器通过存储器子系统122载入寄存器114。存储器子系统122可将数据写入快取存储器阶层结构118(例如:第一层数据快取、第二层快取、第三层快取)或将数据读出。就一较佳实施例而言,各个快取存储器具有一相关联的TLB,如图2的TLB 206。若是在快取阶层结构118的最末层快取发生快取失误(cache miss),总线接口单元116就会针对数据或指令快取线(cache line)发出请求,而从系统存储器撷取快取线。
存储器子系统122(例如表移动引擎)并于系统存储器存取转译表(例如,x86指令集架构所称的分页结构(paging structure))来执行页表移动以产生虚拟至物理的地址转译。在后续步骤中,此地址转译会载入处理器100的TLB,例如图2的TLB 206。这部分在后续的图4中会有更详细的说明。在一转译表阶层结构中,前述转译表可包含映射至页的表(例如:x86指令集架构的页表),或是参照至其他转译表的表(例如:x86指令集架构的页目录、页目录指针表、PML4表)。此转译表并可包含将虚拟的物理地址(virtualizedphysical address)(例如x86指令集架构中的客户物理地址(guest physicaladdress),而相对应的转译表则为扩展页表(extended page table,EPT))是指映射至真实的物理地址(trun physical address)的表(例如x86指令集架构中的主机物理地址(host physical address))。
就一较佳实施例而言,处理器100包含一微码单元(microcode unit)。微码单元包含一用以储存微码106或微码例程(microcode routine)的微码存储器,以及一用以从微码存储器撷取微码指令的微序列器(microsequencer)。在一实施例中,这些微码程序是微指令。在一实施例中,这些微码指令则是会被转译为微指令。微码106可实现某些架构指令,例如特别复杂的架构指令。在一实施例中,图11、图12、图15、图21至图24中分别显示的MOV CR4、MOV CR3、VMLAUNCH/VMRESUME、RSM、INVPCID、INVVPID与INVEPT指令由微码106加以实现。此外,微码106并可执行处理器100的其他功能。在一实施例中,微码106处理图19与图20分别显示的虚拟机器退出(VM exit)与SMIs,详见后述。
现在请参照图2,此图是一方块图详细显示图1的处理器100。此处理器100包含一转译后备缓冲器(translation lookaside buffer,TLB)206、一耦接于TLB 206的映射模块(mapping module)204、一耦接于TLB 206与映射模块204的存储器子系统122、以及耦接于映射模块204的一区域内容表(local contexttable)212与一全域内容表(global context table)214。映射模块204包含微码、一硬件状态机器(hardware state machine)、或是其组合。映射模块204接收一进程内容标识符(process context identifier,PCID)252、一虚拟处理器标识符(virtual processor identifier,VPID)254、与一扩展页表指针(extended page tablepointer,EPTP)256。映射模块204会响应于各种事件,例如改变当前地址转译内容与/或无效化地址转译内容的指令,来接收PCID 252、VPID 254与EPTP256,详见后述。响应于所接收的PCID 252、VPID 254与EPTP 256,映射模块204可通过产生一无效化区域(INV_LOCAL)比特向量232与/或一无效化全域(INV_GLOBAL)比特向量234分别同时无效化TLB 206内的多个区域地址转译与/或多个全域地址转译。其操作过程如后续图6至图8的描述,而其用途如后续图11、图13至图14、图16、图18至图20与图22至图24的描述。
此外,响应于所接收的PCID 252、VPID 254与EPTP 256,映射模块204可更新当前区域内容标识符(CUR_LID)242与/或当前全域内容标识符(CUR_GID)244。CUR_LID 242与CUR_GID 244会识别当前地址转译内容。特别是,CUR_LID 242会识别当前地址转译内容的区域存储器页,而CUR_GID 244会识别当前地址转译内容的全域存储器页,详见后述。就一较佳实施例而言,CUR_LID 242是一编码值(encoded value),解码器262将CUR_LID 242解码并提供一查找区域有效(LOOKUP_LVAL)的解码独热(one-hot)比特向量272(即一个比特被设定而其他比特被清除)至TLB 206。CUR_GLD 244是一编码值,解码器264将CUR_GID 244解码并提供一查找全域有效(LOOKUP_GVAL)的解码独热比特向量274至TLB 206。其他表示CUR_LID 242与CUR_GID 244的实施例亦可用于本发明。举例来说,他们可以用解码后的形式进行储存,并直接提供至TLB 206而无需使用解码器262/264。
当存储器子系统122想要针对TLB 206内的存储器页的虚拟地址执行一查找(lookup)动作,它会提供查找地址(LOOKUP_ADDR)276给TLB 206。LOOKUP_LVAL 272与LOOKUP_GVAL 274也会提供给TLB 206并被纳入此查找中。TLB 206会利用一命中指标(hit indicator)224指出是否有命中(hit)发生,若有,就提供转译后地址(TRANSLATED_ADDR)226至存储器子系统122。此操作详见后续图4的描述。
现在请参照图3,此图是TLB 206的一项目300的方块示意图。TLB 206的各个项目300都包含一区域有效比特向量(LVAL)302、一全域有效比特向量(GVAL)304、一虚拟页地址(VPADDR)306与一物理页地址(PPADDR)308。在一实施例中,LVAL 302包含四个比特且GVAL 304包含四个比特。LVAL302、GVAL 304与VPADDR 306在一起即为此项目300的地址转译。就一较佳实施例而言,TLB项目300并具有权限比特(permissions bit)(未图示)来设定与页有关的权限。
在一实施例中,映射模块204可确保:(1)各个LID映射自一唯一的VPID:EPTP:PCID组合(扩展页表的特征生效)、VPID:PCID组合(扩展页表的特征失效)、或PCID(虚拟处理器标识符的特征失效);(2)各个GID映射自一唯一的VPID:EPTP组合(扩展页表的特征生效)或VPID(扩展页表的特征失效);(3)若是TLB 206的项目300是一有效全域地址转译(如:GVAL304为非零),它就不会是一有效区域地址转译(LVAL 302为零);反之,(4)若是TLB 206的项目300是一有效区域地址转译(如:LVAL 302为非零),它就不会是一有效全域地址转译(GVAL 304为零)。如此可产生以下优点:(1)映射模块204可同时无效化所有TLB 206的全域地址转译;以及(2)映射模块204可同时无效化所有TLB 206的区域地址转译。此外,映射模块204并不保证LID会映射自特别的PCID。也就是说,相同的PCID值可由多个虚拟处理器设定而映射至不同的ILD。同样地,映射模块204亦可使多个ILD关联于一给定的GID。不过,反之则否,亦即,映射模块204不会使多个GID关联于一给定的ILD。不过,在处理器100操作的某个阶段,每个ILD可对应至一个唯一的GID,例如:在GID的数量等于ILD的数量(标识符为N)的实施例中,有N个虚拟处理器各自设定一个PCID。
现在请参照图4,此图是一流程图显示图1的处理器100填入TLB 206的项目300的操作流程。此流程始于步骤402。
在步骤402中,存储器子系统122检测到TLB 206内的查找地址276显示为未命中(miss)而执行表移动(tablewalk)以产生一地址转译。亦即,存储器子系统122利用当前地址转译内容来将未命中的查找地址276转译至一物理地址。存储器子系统122可包含一表移动引擎(未图示)以执行表移动。表移动可包含使用遗留页结构(legacy paging structure)(例如x86指令集架构的页描述子基址(page descriptor base address)、页描述子表(page descriptor table)与页表项目)的部分以及与处理器100的虚拟机能力有关的扩展页表(例如x86指令集架构的虚拟机扩展(Virtual Machine eXtensions,VMX)扩展页表指针(EPTP)与扩展页表(EPT))。接下来前进至步骤404。
在步骤404中,存储器子系统122在TLB 206内选择一项目来取代。在一实施例中,TLB 206是一集合关联快取(set-associative cache),而此TLB 206的各个集合包含有取代信息,例如最近最少使用(least recently used,LRU)的信息或伪LRU的信息,而存储器子系统122依据取代信息的指示,在设有目录的集合中,选择要取代的项目。接下来前进至步骤406。
在决策步骤406中,存储器子系统122确认此地址转译为全域转译或区域转译。就一较佳实施例而言,存储器子系统122依据步骤402中执行表移动所用的当前地址转译内容的信息来进行此确认动作。若为全域转译,此流程就前进至步骤412;否则就前进至步骤408。
在步骤408中,存储器子系统122会将一个因为是区域地址转译而为零的GVAL 304、一个等于LOOKUP_LVAL 272以代表CUR_LID 242的LVAL302、一个等于未命中的LOOKUP_ADDR 276的VPADDR 306与一个等于转译后地址(即步骤402的表移动所产生的物理地址)的PPADDR 308填入前述步骤404所选定的TLB 206的项目300内。流程到此结束。
在步骤412中,存储器子系统122会将一个等于LOOKUP_GVAL 274以代表CUR_GID 244的GVAL 304、一个因为是全域地址转译而为零的LVAL302、一个等于未命中的LOOKUP_ADDR 276的VPADDR 306与一个等于转译后地址(即步骤402的表移动所产生的物理地址)的PPADDR 308填入前述步骤404所选定的TLB 206的项目300内。流程到此结束。
现在请参照图5,此图是一方块示意图显示一位于TLB 206内的逻辑500以确认查找过程中是否发生命中。如图5所示,逻辑500(除了OR功能534)对应至TLB 206的单一项目300以确认此项目是否产生命中。需要理解的是,对于一全关联(fully associative)的实施例,TLB 206内的逻辑500用于每一个项目300,为简化说明,此特征并未显示于图示中。而对于一集合关联(setassociative)的实施例,逻辑500则是用于各个路(per way)。TLB 206的所有项目300的命中指标524会由OR功能534执行逻辑或(OR-ed)的布尔(Boolean)运算,以产生图1所示的TLB 206的命中指标224。需要理解的是,在图5与其他图示中所显示的多种布尔逻辑功能对应有布尔门(Boolean gate)(例如AND门、OR门),而这些布尔门可进行合成或客制化设计;不过,此逻辑500亦可包含其他已知可执行所示布尔逻辑功能(例如:线或(wired-OR))的硬件元件,并且可以由多种逻辑类型,包含静态或动态逻辑,来加以实现。本实施例可以同时无效化TLB 206的区域与/或全域地址转译,不论其底下的处理技术或逻辑类型为何。
此逻辑500具有比较LOOKUP_LVAL 272与项目300的LVAL 302的第一比较功能522,其输出作为布尔OR功能528的二个输入中的第一个输入。此逻辑500并具有比较LOOKUP_GVAL 274与项目300的GVAL 304的第二比较功能524,而其输出作为前述布尔OR功能528的第二个输入。布尔OR功能528的输出作为一布尔AND功能532的二个输入中的第一个输入。而此逻辑500并具有比较LOOKUP_ADDR 276与项目300的VPADDR 306的第三比较功能522,其输出作为布尔AND功能532的第二个输入。布尔AND功能532所输出的信号就是命中指标,在LOOKUP_LVAL 272与LVAL 302一致、LOOKUP_GVAL 274与GVAL 304一致且LOOKUP_ADDR 276与VPADDR 306一致时,命中指标为真,否则即为假。
在图5中可以观察到,TLB 206内的各个区域地址转译由其相对应的LVAL 302来进行确认,LVAL即为其区域内容标识符(local context identifier)的代表,而各个全域地址转译由其相对应的GVAL 304来进行确认,GVAL即为其全域内容标识符(global context identifier)的代表。LOOKUP_LVAL 272与LOOKUP_GVAL 274包含在TLB 206的查找中。不过,在LOOKU_ADDR276与VPADDR 306一致的情况下,为了使命中发生,只需要LOOKUP_LVAL272与LVAL 302一致,或是LOOKUP_GVAL 274与GVAL 304一致,而不需要二者,即整个标识符(tag),都一致。因此,如同对应于图4与图5的操作所能观察到,为了使用来自TLB 206的地址转译,从VPADDR 306转译出PPADDR 308所使用的地址转译内容,必须是与CUR_LID 242相关联的地址转译内容或是多个与CUR_GID 244相关联的地址转译内容的其中之一。
现在请参照图6,此图是一方块示意图显示一逻辑600,用以无效化TLB206(请参照图2)的项目300(请参照图3)的LVAL比特向量302的比特。图6显示LVAL比特向量302的单一个比特。此比特的储存装置可以是一正反器(flip-flop)、一存储器阵列比特胞(memory array bit cell)、或其他比特储存装置。布尔求反(invert或NOT)功能604接收INV_LOCAL比特向量232的比特,此比特对应于LVAL比特向量302的比特。举例来说,用于LVAL比特向量302的比特[2]的布尔求反功能604接收INV_LOCAL比特向量232的比特[2]。比特求反功能604的输出作为布尔AND功能606的二个输入中的第一个输入。布尔AND功能606并接收LVAL比特向量302的当前值做为其第二个输入。布尔AND功能606的输出开始做为LVAL比特向量302的新值。因此,映射模块204可通过设定INV_LOCAL比特向量232的相对应比特,来清除LVAL比特向量302内的任何比特。
虽然图6所显示的逻辑600仅用于单一个比特,不过在TLB 206内可对此逻辑600进行复制,以适用到各个项目300的LVAL比特向量302的各个比特。通过设定INV_LOCAL比特向量232的比特,映射模块204可针对TLB206的每个项目300,清除其LVAL比特向量302的相对应比特。因为对于各别的地址转译内容的所有区域地址转译而言,相对应的LVAL 302的各个比特位置均为有效比特,因此,无效化逻辑600能够使映射模块204同时无效化TLB 206内用于各别的地址转译内容的所有区域地址转译。此方式会比依序无效化TLB 206的所有区域地址转译的处理方式来的快。而随着TLB 206增大(例如:具有一大型末层(last-level)的TLB 206),所能节省的时间也变得更为明显。
对于各个项目的GVAL比特向量304的各个比特,TLB 206具有类似的逻辑600来处理,不过,此逻辑600接收INV_GLOBAL比特向量234的比特,而非INV_LOCAL比特向量232的比特。通过设定INV_GLOBAL比特向量234的比特,映射模块204可针对TLB 206的每个项目300,清除其GVAL比特向量304的相对应比特。因为对于各别的地址转译内容的所有全域地址转译而言,相对应的GVAL 304的各个比特位置均为有效比特,因此,无效化逻辑600能够使映射模块204同时无效化TLB 206内用于各别的地址转译内容的所有全域地址转译,而具有与前述无效化区域地址转译相同的优点。
虽然在图中并未显示,不过,此逻辑600可具有其他功能来来设定或清除LVAL/GVAL比特向量302/304的比特。举例来说,为了配合图4的步骤408与412的需求,存储器子系统122可将此比特写为二元状态(binary state)的其中之一。此外,存储器子系统122可清除TLB 206的一特别集合(set)与路(way)的LVAL比特302,如同图22与图23所示的步骤2214或步骤2308所需的处理过程。就一较佳实施例而言,在比特302前方设有多工功能(未图示),其多个输入的其中之一接收布尔AND功能606的输出,而其他输入则是接收其他前述逻辑的输出。
值得注意的是,在必要的时候,可通过分别设定INV_LOCAL比特向量232与INV_GLOBAL比特234向量的比特,同时清除LVAL 302与GVAL 304的比特。举例来说,存储器子系统122可在步骤1828、2318、2326、2408与2414中执行此操作。最后,在必要的时候,可通过分别设定INV_LOCAL比特向量232与INV_GLOBAL比特向量234的所有比特,同时清除LVAL 302与GVAL 304的所有比特。举例来说,存储器子系统122可在步骤1602、1914与2004中执行此操作。
现在请参照图7,此图是一方块示意图显示图1的处理器100内的一控制寄存器700。在一实施例中,微码106可写入此控制寄存器700以无效化TLB 206的地址转译。此控制寄存器700包含INV_LOCAL比特702、INV_GLOBAL比特704、INV_ALL_LOCALS比特706、INV_ALL_GLOBALS比特708与INV_ALL比特712。映射模块204响应于这些比特的设定所执行的操作将会在后续图8中进行描述。
现在请参照图8,此图是一流程图显示映射模块204响应于图7所示的控制寄存器700中各个不同比特的设定所执行的操作。此流程始于步骤802。
在步骤802中,此控制寄存器700中一个或多个比特被设定,例如被微码106设定。接下来前进至步骤804。
在决策步骤804中,若是INV_LOCAL比特702被设定,流程会前进至步骤806;否则就会前进至决策步骤814。
在步骤806中,映射模块204对CUR_LID 242解码以产生一独热(one-hot)比特向量值,并主张此位于INV_LOCAL比特向量232上的数值。对TLB 206的任何项目300,此数值清除LVAL 302中对应于INV_LOCAL比特向量232中被设定比特的比特,以无效化TLB 206内使用当前地址转译内容进行转译的所有区域地址转译。接下来前进至决策步骤814。
在决策步骤814中,若是INV_GLOBAL比特704被设定,流程会前进至步骤816;否则就会前进至决策步骤824。
在步骤816中,映射模块204对CUR_GID 244解码以产生一独热比特向量值,并主张此位于INV_GLOBAL比特向量234上的数值。对TLB 206的任何项目300,此数值清除GVAL 304中对应于INV_GLOBAL比特向量234中被设定比特的比特,以无效化TLB 206内使用当前地址转译内容进行转译的所有全域地址转译。接下来前进至决策步骤824。
在决策步骤824中,若是INV_ALL_LOCALS比特706被设定,流程会前进至步骤826;否则就会前进至决策步骤834。
在步骤826中,映射模块204会主张所有INV_LOCAL比特向量232的比特,而对于TLB 206的任何项目300,这些比特会清除LVAL 302的所有比特,而无效化TLB 206内使用任何地址转译内容进行转译的所有区域地址转译。接下来前进至决策步骤834。
在决策步骤834中,若是INV_ALL_GLOBALS比特708被设定,流程会前进至步骤836;否则就会前进至决策决策步骤844。
在步骤836中,映射模块204会主张INV_GLOBAL比特向量234的所有比特,而对于TLB 206的任何项目300,这些比特会清除GVAL 304的所有比特,而无效化TLB 206内使用任何地址转译内容进行转译的所有全域地址转译。接下来前进至决策步骤844。
在决策步骤844中,若是INV_ALL比特712为设定,流程会前进至步骤846;否则流程就会终止。
在步骤846中,映射模块204会主张INV_LOCAL比特向量232与INV_GLOBAL比特向量234的所有比特,而对于TLB 206的任何项目300,这些比特会清除LVAL 302与GVAL 304的所有比特,而无效化TLB 206内使用任何地址转译内容进行转译的所有地址转译。此流程终止于此。
现在请参照图9,此图是一方块示意图详细显示图2的区域内容表212。各个项目包含一有效比特906、一全域内容标识符(global context identifier,GID)904、一区域内容标识符(local context identifier,LID)902、一进程内容标识符(process context identifier,PCID)908与一地址转译内容基址(addresstranslation context base address,ATCB)912。对于区域内容表212的各个项目,GID 904会指向图10的全域内容表214中具有匹配的GID 1004数值的项目。映射模块204确保区域内容表212的各个有效项目都具有一唯一的LID 902数值,而全域内容表214的各个有效项目都具有一唯一的GID 1004数值。举例来说,就一x86指令集架构而言,PCID 908对应于一x86的PCID而ATCB912对应于CR3寄存器中设定页目录基址(page directory base address)的比特[63:12]。在一实施例中,CR3寄存器的比特[63:36]位被使用。在图9的实施例中,区域内容表212包含四个项目而各个LID 902均为二比特编码值,即表示非架构区域内容标识符空间(non-architectural local context identifier space)的大小为四。在一实施例中,亦表示同时至多四个地址转译内容的地址转译可以在TLB 206内生效。不过,本发明并不限于此,具有不同数量项目与LID902比特的实施例亦可适用于本发明。在一实施例中,映射模块204通过清除有效比特906、对区域内容表212的各个项目的LID 902指定唯一值、并使剩下的字段归零,来开始区域内容表212的运作。在一实施例中,映射模块204使区域内容表212的项目维持在一推迭状态,其中置顶(top most)的项目为最近最常使用(most recently used)的项目,而置底(bottom)的项目为最近最少使用(least recently used)的项目。最近最少使用(置底)的项目会被重新配置。映射模块204通过将一项目置顶来使其为最近最常使用的项目,并在必要时下移其他项目。区域内容表212与其字段的操作在后续其他图示中会有更详细的说明。
现在请参照图10,此图是一方块示意图详细显示图2的全域内容表214。各个项目包含一有效比特1006、一全域内容标识符(global context identifier,GID)1004、一虚拟处理器标识符(virtual processor identifier,VPID)1008与一扩展页表指针(extended page table pointer,EPTP)1012。举例来说,就一x86指令集架构而言,VPID 1008对应于一x86VMX虚拟处理器标识符(VPID),而EPTP 1012对应于虚拟机器控制结构(virtual machine control structure,VMCS)特定的VMX EPTP。在图10的实施例中,全域内容表214包含四个项目而各个GID 1004均为二比特编码值,即表示非架构全域内容标识符空间(non-architectural global context identifier space)的大小为四。不过,本发明并不限于此,具有不同数量项目与GID 904比特的实施例亦可适用于本发明。在一实施例中,映射模块204通过清除有效比特1006、对全域内容表214的各个项目的GID 1004指定唯一值、并使剩下的字段归零,来开始全域内容表214的运作。在一实施例中,映射模块204使全域内容表214的项目维持在一类似于前述区域内容表212的推迭状态。全域内容表214与其字段的操作在后续其他图示中会有更详细的说明。由本文描述可以发现,LID与GID的关联状态会随着处理器100执行的操作而改变。举例来说,在图9与图10的实施例中,一个给定的GID可能有一个到四个相关联的LID。不过,若是多于一个LID关联至一个GID,就会减少当前生效的GID的数量。举例来说,若是各个GID具有两个相关联的LID,就只会有两个GID生效。
在x86指令集架构的实施例中,在非虚拟机扩展(non-VMX)线性地址空间的情况下,VPID与EPTP会被设定为零;而在虚拟机扩展主机(VMX host)的情况下,VPID与EPTP会被设定为零。因此,在x86指令集架构的一实施例中,映射模块204会将全域表214的一项目(置顶项目、项目零)视为特殊项目,因为此项目总是有效(即有效(V)比特1006在一开始会赋予一设定值,并且始终维持在设定状态)、从不会被取代(例如:此项目绝不会是最近最少使用项目)以及总是保持在VPID 1008与EPTP 1012被设为零的情况。在LID的数量有限但又需要将大量地址转译内容映射置这些LID的情况下,可以减少需要执行的TLB 206地址转译无效化。在一实施例中,区域内容表212与全域内容表214被保留在处理器100的一私有存储器(PRAM)内。
现在请参照图11,此图是一流程图显示图1的处理器100执行指令使处理器100的架构特征失效的操作,而此处理器100支持多个进程内容标识符(process context identifier)。此流程始于步骤1102。
在步骤1102中,处理器100遭遇到一个使处理器100的架构特征失效的指令。此处理器100支持多进程内容标识符。举例来说,在x86指令集架构的实施例中,此指令可以是MOV CR4指令,其可清除PCIDE比特,而使x86PCID特征失效。接下来前进至步骤1104。
在步骤1104中,响应于在步骤1102中遭遇到的指令,映射模块204在区域内容表212寻找所有具有非零PCID值的项目。接下来前进至步骤1106。
在步骤1106中,对于在步骤1104于区域内容表212内找到的各个项目,映射模块204会(1)无效化TLB 206内,关联于区域内容表212匹配项目的LID902的区域地址转译(例如:通过解码LID 902并将此解码值用于INV_LOCAL比特向量232);(2)无效化此区域内容表212的匹配项目。此实施例假定PCID为零是一有效值,亦即当PCID特征失效时,PCID为零。如此即可使与PCID为零有关的TLB 206地址转译维持完好。接下来前进至步骤1106。
现在请参照图12,此图是一流程图显示图1的处理器100执行指令以改变当前地址转译内容的操作。此流程始于步骤1202。
在步骤1202中,处理器100遭遇到一个改变当前地址转译内容的指令。举例来说,在x86指令集架构的实施例中,此指令可以是MOV CR3指令。接下来前进至步骤1204。
在步骤1204中,响应于在步骤1202中遭遇到的指令,在一定条件出现的情况下,处理器100会作为一虚拟机器监视器(hypervisor)。在一实施例中,此指令由微码106所实现。举例来说,在x86指令集架构的实施例中,虚拟机器监视器是VMX主机,而条件为一个VMX客户(guest)执行MOV CR3指令,并且响应于此MOV CR3指令,存在错误或VMX控制标识符VM退出。接下来前进至步骤1206。
在步骤1206中,对一例程(routine)(在此称为MOV_CR3())进行呼叫(call)。此例程会在图13加以说明。需要理解的是,虽然步骤1206的操作称为对于例程(以及本文所述的其他操作)的呼叫,在图11至图25所描述的功能可以利用硬件、微码、或是其组合来实现。此流程终止于步骤1206。
现在请参照图13,此图是一流程图,显示图1的处理器100执行图12的步骤1206(以及图19与图21的步骤1918与2106)所呼叫的MOV_CR3()例程1300的操作。此流程始于步骤1304。
在步骤1304中,映射模块204在区域内容表212寻找PCID值的一有效匹配作为MOV_CR3()例程1300的输入。当例程在步骤1206被呼叫后,PCID输入值就会是步骤1202的指令所特定的值。当例程在步骤1918或在步骤2106被呼叫后,PCID输入值就会是虚拟机器监视器的PCID值,而在x86VMX的实施例中,此数值为零。接下来前进至步骤1306。
在步骤1306中,映射模块204确认步骤1304是否存在匹配。若是,流程前进至步骤1322;否则就前进至步骤1308。
在步骤1308中,呼叫ALLOCATE_LOCAL_CONTEXT()例程。此例程会在图14加以说明。接下来前进至步骤1312。
在步骤1312中,传递至MOV_CR3()例程的CR3寄存器输入值被载入架构寄存器CR3。在步骤1206呼叫例程后,CR3输入值就会是由步骤1202的指令所特定的值。当例程在步骤1918或在步骤2106被呼叫后,CR3输入值就会是虚拟机器监视器的CR3值。而在非x86的实施例中,则是载入类似于CR3寄存器的架构寄存器。接下来前进至步骤1314。
在步骤1314中,映射模块204利用步骤1308配置的区域内容表212项目的LID 902与GID 904,分别更新CUR_LID 242与CUR_GID 244。接下来,前进至步骤1316,流程会回到MOV_CR3()例程被呼叫的时候。
在步骤1322中,映射模块204将区域内容表212的匹配项目(即步骤1304找到的项目)作为最近最常使用项目。接下来前进至步骤1324。
在步骤1324中,映射模块204利用区域内容表212的匹配项目的LID 902与GID 904,分别更新CUR_LID 242与CUR_GID 244。接下来前进至决策步骤1326。
在决策步骤1326中,映射模块204确认所呼叫的MOV_CR3()例程是否呼应VM进入或退出。若是,流程前进至决策步骤1328;否则就前进至步骤1334。
在决策步骤1328中,映射模块204确认VPID特征是否开启。若是,前进至步骤1322,流程会回到MOV_CR3()例程被呼叫的时候;否则就前进至步骤1334。
在步骤1334中,若是寄存器CR3的比特63的值为零,映射模块204会无效化TLB 206中与CUR_LID 242值有关的区域地址转译(例如:通过解码CUR_LID 242并将解码值用于INV_LOCAL比特向量232)。也就是说,映射模块204会无效化用于当前地址转译内容的区域地址转译。接下来,前进至步骤1336,流程会到MOV_CR3()例程被呼叫的时候。
现在请参照图14,此图是一流程图显示图1的处理器100执行图13的步骤1308(以及图16与图17的步骤1606与1722)所呼叫的ALLOCATE_LOCAL_CONTEXT()例程1400的操作。此流程始于步骤1404。
在步骤1404中,映射模块204确认区域内容表212的最近最少使用项目来进行配置。不过,本发明并不限于此,使用最近最少使用(LRU)以外的其他运算方式来进行取代的实施例亦可适用于本发明。接下来前进至步骤1406。
在步骤1406中,映射模块204无效化TLB 206内与步骤1404配置的区域内容表212项目的LID 902有关的区域地址转译。也就是说,此映射模块204会无效化用于被逐出(evicted)的地址转译内容的区域地址转译。接下来前进至步骤1408。
在步骤1408中,映射模块204计算区域内容表212的项目的新值。特别是,此映射模块204会:保留LID 902字段的数值,亦即,此新项目会承接其所要取代的项目的LID 902值;将CUR_GID 244值填入GID 904字段,以使区域内容表212的项目连结至适当的全域内容表214的项目;以及在PCID908与ACTB 912的字段中,填入传递至ALLOCATE_LOCAL_CONTEXT()例程的相对应数值。若是此例程响应于一RSM(请参照图21)而从MOVTOCR3VPID、MOVTOCR3NOVPID或MOV_CR3()中呼叫,PCID与ACTB的值就会是由SMI中断的进程的值。若是此例程响应于一VM项目(请参照图15)而从MOVTOCR3VPID或MOVTOCR3NOVPID中呼叫,PCID与ACTB的值就会是由接收到控制权的虚拟处理器的VMCS取得的值。若是此例程响应于一VM退出(exit)(请参照图19)而从MOV_CR3()呼叫,PCID与ACTB的值就会是虚拟机器监视器的值。若是此例程响应于一MOV CR3指令(请参照图12)而从MOV_CR3()呼叫,PCID与ACTB的值就会是由指令特定的值。映射模块204接下来会将计算出来的新值载入步骤1404所配置的项目,并将其配置为最近最常使用项目。接下来,在步骤1412,流程会到ALLOCATE_LOCAL_CONTEXT()例程被呼叫的时候。
现在请参照图15,此图是一流程图显示图1的处理器100在虚拟机器监视器至客户的移转过程的操作。此流程始于步骤1502。
在步骤1502中,发生虚拟机器监视器至客户的移转。举例来说,在x86指令集架构的实施例中,此移转被称为VM进入(entry),会响应于VMXVMLAUNCH或VMRESUME指令的执行而发生。接下来前进至步骤1504。
在步骤1504中,映射模块204从VMCS取得新的PCIDE值与CR3寄存器的新值,此新值包含一新的PCID值。接下来前进至步骤1506。
在步骤1506中,映射模块204确认VIPD特征是否开启。若是,流程前进至步骤1508;否则就前进至步骤1512。
在步骤1508中,此流程移转至图17所描述的例程MOVTOCR3VPID。
在步骤1512中,此流程移转至图16所描述的例程MOVTOCR3NOVPID。
现在请参照图16,此图是一流程图显示图1的处理器100执行例程MOVTOCR3NOVPID 1600的操作。此流程始于步骤1602。
在步骤1602中,映射模块204无效化TLB 206的所有地址转译。接下来流程前进至步骤1604。
在步骤1604中,映射模块204使区域内容表212与全域内容表214开始运作。此外,映射模块204将全域内容标识符的一暂时值设定为零,以传递给ALLOCATE_LOCAL_CONTEXT()例程(请参照图14)。接下来流程前进至步骤1606。
在步骤1606中,映射模块204呼叫ALLOCATE_LOCAL_CONTEXT()例程。接下来前进至步骤1608。
在步骤1608中,架构寄存器CR3中载入传递至ALLOCATE_LOCAL_CONTEXT()例程的CR3寄存器输入值。此例程的数值将会是由SMI中断的进程的值(RSM的实施例)或是从接收到控制权的虚拟处理器的VMCS取得的值(VM进入的实施例)。接下来前进至步骤1612。
在步骤1612中,映射模块204以零值更新CUR_LID 242与CUR_GID244。此流程终止于此。
现在请参照图17,此图是一流程图显示图1的处理器100执行例程MOVTOCR3VPID 1700的操作。流程始于步骤1712。
在步骤1712中,映射模块204呼叫图18所描述的例程ALLOCATE_GLOBAL_CONTEXT()。接下来前进至步骤1714。
在步骤1714中,若是PCIDE比特为零,映射模块204就会将新的PCID值设定为零。接下来前进至步骤1716。
在步骤1716中,映射模块204在区域内容表212寻找由步骤1712的呼叫步骤取得的全域内容标识符与新的PCID值的一有效匹配。此新的PCID值由步骤1504或是图21的步骤2116恢复(resume)控制的VMX客户的VMCS取得。接下来前进至决策步骤1718。
在决策步骤1718中,若是在步骤1716中找到匹配项目,流程就会前进至步骤1724;否则就会前进至步骤1722。
在步骤1722中,映射模块204呼叫ALLOCATE_LOCAL_CONTEXT()例程(请参照图14)。接下来前进至步骤1726。
在步骤1724中,映射模块204将区域内容表212的匹配项目作为最近最常使用项目。此映射模块204并使新的区域内容标识符等于区域内容表212的匹配项目的LID 902。接下来前进至步骤1726。
在步骤1726中,架构寄存器CR3中载入CR3寄存器输入值。此新的CR3数值由步骤1504或是图21的步骤2116恢复(resume)控制的VMX客户的VMCS取得。接下来前进至步骤1728。
在步骤1728中,映射模块204以步骤1712取得的新的全域内容标识符更新CUR_GID 244并以步骤1722或步骤1724取得的新的区域内容标识符更新CUR_LID 242。此流程终止于此。
现在请参照图18,此图是一流程图显示图1的处理器100执行图17的步骤1712所呼叫的ALLOCATE_GLOBAL_CONTEXT()例程1800的操作。此流程始于步骤1802。
在步骤1802中,映射模块204从赋予控制权的VMX客户的VMCS取得VPID与EPTP。接下来前进至步骤1804。
在步骤1804中,若是EPT特征关闭,映射模块204就会将EPTP设为零。接下来前进至步骤1806。
在步骤1806中,映射模块204从全域内容表214寻找VIPD与EPTP的一有效匹配。在前文图10所描述的实施例中,置顶项目为特殊项目,而此步骤只会寻找非特殊项目,因此,此特殊项目不会被重新配置,也不会与VMX客户建立关联。接下来前进至步骤1808。
在步骤1808中,映射模块204确认步骤1806是否找到匹配。若是,流程前进至步骤1812;否则就前进至步骤1822。
在步骤1812中,映射模块204将全域内容表214的匹配项目作为最近最常使用项目。接下来前进至步骤1814。
在步骤1814中,映射模块204以此全域内容表214的匹配项目的GID1004值更新CUR_GID 244。接下来,在步骤1816,此流程会回到呼叫ALLOCATE_GLOBAL_CONTEXT()例程的时候。
在步骤1822中,映射模块204确认全域内容表214的最近最少使用项目,以有效逐出此项目。然后,此映射模块204会对将被逐出的项目的GID 1004值指定一个变数EVICTED_GID。接下来前进至步骤1824。
在步骤1824中,映射模块204计算全域内容表214的项目的新值。特别是,映射模块204会以EVICTED_GID填入GID字段1004,并以传递至ALLOCATE_GLOBAL_CONTEXT()的相对应数值填入VPID 1008与EPTP1012。这些数值将会是由SMI中断的进程的值(RSM的实施例)或是从接收到控制权的虚拟处理器的VMCS取得的值(VM进入的实施例)。然后,映射模块204会以计算出来的新值载入在步骤1822中配置的项目。然后,映射模块204会将此项目设为最近最常使用项目。接下来前进至步骤1826。
在步骤1826中,映射模块204在区域内容表212寻找EVICTED_GID的一有效匹配。接下来前进至步骤1828。
在步骤1828中,对于步骤1826在区域内容表212找到的各个项目,映射模块204会(1)无效化TLB 206中,与匹配项目的LID 902有关的区域地址转译;(2)无效化TLB 206中,与EVICTED_GID有关的全域地址转译(例如:通过解码EVICTED_GID并将此解码值用于INV_GLOBAL比特向量234);(3)无效化区域内容表212的匹配项目。接下来,在步骤1832中,流程会回到呼叫ALLOCATE_GLOBAL_CONTEXT()例程的时候。
现在请参照图19,此图是一流程图显示图1的处理器100在由客户至虚拟机器监视器的移转过程的操作。此流程始于步骤1902。
在步骤1902中,发生客户至虚拟机器监视器的移转。举例来说,在x86指令集架构的实施例中,此移转被称为VM退出(exit),会响应于一定指令的执行(VM退出需要仰赖对于控制字段的设定)与非根虚拟化操作(VMXnon-root operation)的一定事件,如例外事件(exception)、中断(interrupt)、任务切换(task switch)与中断计时器触发(preemption timer tick)。接下来前进至步骤1904。
在步骤1904中,映射模块204从VMCS取得CR3寄存器的新值,此新值包含一新的PCID值,此数值为虚拟机器监视器的PCID值。接下来前进至步骤1906。
在步骤1906中,映射模块204会使EPT特征失效(因为虚拟机器监视器不需使用此特征)、将暂时全域内容标识符的变数与VPID设为零,这些数值是与虚拟机器监视器有关的数值。接下来前进至步骤1908。
在步骤1908中,架构寄存器CR3内载入步骤1904所取得的CR3寄存器值。接下来前进至决策步骤1912。
在决策步骤1912中,映射模块204确认VIPD特征是否开启。若是,流程前进至步骤1918;否则就前进至步骤1914。
在步骤1914中,映射模块204无效化TLB 206的所有地址转译。接下来前进至步骤1916。
在步骤1916中,映射模块204使区域内容表212开始运作。接下来前进至步骤1918。
在步骤1918中,此流程呼叫MOV_CR3()例程(请参照图13)。此流程终止于此。
现在请参照图20,此图是一流程图显示图1的处理器100进入系统管理模式(system management mode,SMM)的移转过程的操作。此流程始于步骤2002。
在步骤2002中,发生进入系统管理模式的移转过程,这也称为SMM进入。举例来说,在x86指令集架构的实施例中,此移转会通过一系统管理中断(system management interrupt,SMI)发生。接下来前进至步骤2004。
在步骤2004中,映射模块204无效化TLB 206的所有地址转译。接下来前进至步骤2006。
在步骤2006中,映射模块204使区域内容表212与全域内容表214开始运作。接下来前进至步骤2008。
在步骤2008中,映射模块204以零值更新CUR_LID 242与CUR_GID244。此流程终止于此。
现在请参照图21,此图是一流程图显示图1的处理器100离开SMM的移转过程的操作。此流程始于步骤2102。
在步骤2102中,发生离开SMM的移转过程。举例来说,在x86指令集架构的实施例,在执行一返回原来模式(return from SMM,RSM)指令时,即会发生此移转。接下来前进至决策步骤2104。
在决策步骤2104中,映射模块204确认VMX特征是否关闭。若是,流程前进至步骤2106;否则就前进至决策步骤2112。
在步骤2106中,此流程呼叫MOV_CR3()例程(请参照图13)。接下来前进至步骤2108。
在步骤2108中,此流程跳跃(jump)至MOVTOCR3NOVPID(请参照图16)。此流程终止于此。
在决策步骤2112中,映射模块204确认此返回原来模式是否为返回至虚拟机器监视器,在x86指令集架构的实施例中,即为虚拟机扩展主机(VMXhost)。若是,流程前进至步骤2116;否则就前进至决策步骤2114。
在决策步骤2114中,映射模块确认VPID特征是否开启。若是,流程前进至步骤2116;否则流程就前进至步骤2108。
在步骤2116中,此流程跳跃至MOVTOCR3VPID(请参照图17)。此流程终止于此。
现在请参照图22,此图是一流程图显示处理器100执行指令以无效化TLB 206中与一进程内容标识符有关的地址转译的操作。此流程始于步骤2202。
在步骤2202中,处理器100遭遇到一个指令,会无效化TLB 206中与一进程内容标识符有关的地址转译。举例来说,在x86指令集架构的实施例中,此指令可以是INVPCID指令。接下来前进至步骤2204。
在步骤2204中,映射模块204在全域内容表214中寻找当前VPID的一有效匹配。若没有找到匹配,此流程就会终止。否则,映射模块204会将此全域内容表214的匹配项目的GID 1004指派给一暂时变数THIS_GID。接下来前进至决策步骤2206。
在决策步骤2206中,映射模块204确认指令类型(例如:x86INVPCID指令的寄存器运算元)是否为零。若是,流程前进至步骤2208;否则前进至决策步骤2216。
在步骤2208中,映射模块204在区域内容表212内寻找变数THIS_GID与INVPCID指令所特定的PCID的有效匹配。接下来前进至决策步骤2212。
在决策步骤2212中,映射模块204确认在步骤2208中是否找到匹配。若是,流程前进至步骤2214;否则流程就终止于此。
在步骤2214中,映射模块204将步骤2208找到的区域内容表212的匹配项目的LID 902指派给一暂时变数THIS_LID。然后,映射模块204无效化TLB 206中,关联于变数THIS_LID并具有由INVPCID指令所特定的虚拟地址(在x86指令集架构中,即为线性地址)的区域地址转译。TLB 206并具有一目录输入,选择TLB 206的一列(row)执行读取(read)或写入(write)。在一实施例中,TLB 206是一多路(multiple way)集合关联快取,并具有一额外输入来特定进行读取或写入的路(way)。在一实施例中,此目录/路输入可用于特定所要无效化的项目。在一实施例中,当存储器子系统122执行一微码无效化页微指令(microcode invalidate page microinstruction)以特定一虚拟地址,此存储器子系统122会在TLB 206中检测此虚拟地址的匹配,并接收命中此虚拟地址的目录/路。此外,存储器子系统122会利用一最近最少使用项目的目录/路,将一项目配置于TLB 206内。此流程终止于步骤2214。
在决策步骤2216中,映射模块204确认类型是否为一。若是,流程前进至步骤2218;否则就前进至决策步骤2226。
在步骤2218中,映射模块204在区域内容表212内寻找THIS_GID与由INVPCID指令特定的PCID的有效匹配。接下来前进至决策步骤2222。
在决策步骤2222中,映射模块204确认在步骤2218中是否找到匹配。若是,流程前进至步骤2224;否则流程终止。
在步骤2224中,映射模块204将步骤2218中找到的区域内容表212的匹配项目的LID 902指派给一暂时变数THIS_LID。然后,此映射模块204无效化TLB 206内关联于变数THIS_LID的区域地址转译。此流程终止于步骤2224。
在决策步骤2226中,映射模块204确认类型是否为二。若是,流程前进至步骤2228;否则流程就前进至决策步骤2236。
在步骤2228中,映射模块204无效化TLB 206内关联于变数THIS_GID的全域地址转译。接下来前进至步骤2238。
在决策步骤2236中,映射模块204确认类型是否为三。若是,流程前进至步骤2238;否则前进至步骤2248。
在步骤2238中,映射模块204在区域内容表212内寻找THIS_GID的有效匹配。对于区域内容表212中每一个找到的项目,映射模块204会(1)将区域内容表212的匹配项目的LID 902指派为一暂时变数THIS_LID;以及(2)无效化TLB 206中,关联于变数THIS_LID的区域地址转译。此流程终止于步骤2238。
在步骤2248中,映射模块204会引起处理器100错误(fault)的产生,就x86指令集架构的实施例而言,即为一般保护错误(general protection fault)。此流程终止于步骤2248。
现在请参照图23A与图23B(整体称为图23),此图是一流程图显示处理器100执行指令以无效化TLB 206中关联于一虚拟处理器标识符(virtualprocessor identifier)的地址转译的操作。此流程始于步骤2302。
在步骤2302中,处理器100遭遇到一个指令,会无效化TLB 206中与一虚拟处理器标识符有关的地址转译。举例来说,在x86指令集架构的实施例中,此指令可以是INVVPID指令。接下来前进至决策步骤2304。
在决策步骤2304中,映射模块204确认指令类型(例如:x86INVVPID指令的寄存器运算元)是否为零。若是,流程前进至步骤2306;否则前进至决策步骤2314。
在步骤2306中,映射模块204在全域内容表214内寻找当前VPID的有效匹配。若是未找到匹配,此流程终止;否则,映射模块204会将全域内容表214内的匹配项目的GID 1004指派给一暂时变数THIS_GID。接下来前进至步骤2308。
在步骤2308中,映射模块204无效化关联于变数THIS_GID的全域地址转译。此映射模块204并于区域内容表212内寻找变数THIS_GID的有效匹配。对于区域内容表212中找到的各个匹配项目,映射模块204会(1)将区域内容表212的匹配项目的LID 902指派为一暂时变数THIS_LID;以及(2)无效化TLB 206内,关联于变数THIS_LID且具有特定于INVPCID指令内的虚拟地址(在x86指令集架构的实施例中,即为线性地址)的区域地址转译。此流程终止于步骤2308。
在决策步骤2314中,映射模块204确认指令类型是否为一。若是,流程前进至步骤2316;否则就前进至决策步骤2324。
在步骤2316中,映射模块204在全域内容表214内寻找当前VPID的有效匹配。若未找到匹配,此流程终止。否则,映射模块204会将全域内容表214内的匹配项目的GID 1004指派给一暂时变数THIS_GID。接下来前进至步骤2318。
在步骤2318中,映射模块204无效化关联于变数THIS_GID的全域地址转译。此映射模块204并于区域内容表212中寻找变数THIS_GID的有效匹配。对于区域内容表212中找到的各个匹配项目,映射模块204会(1)将区域内容表212的匹配项目的LID 902指派为一暂时变数THIS_LID;以及(2)无效化TLB 206内,关联于变数THIS_LID的区域地址转译。此流程终止于步骤2318。
在决策步骤2324中,映射模块204确认指令类型是否为二。若是,流程前进至步骤2326;否则流程前进至决策步骤2334。
在步骤2326中,映射模块204在全域内容表214中寻找每个非零VPID值的有效匹配。若未找到匹配,此流程终止;否则,对于全域内容表214的各个匹配项目,映射模块204会:(1)将全域内容表214的匹配项目的GID 1004指派为一暂时变数THIS_GID;(2)无效化TLB 206内,关联于变数THIS_GID的全域地址转译;以及(3)在区域内容表212中寻找变数THIS_GID的有效匹配,并且对于区域内容表212中各个找到的匹配项目,(A)将区域内容表212的匹配项目的LID 902指派为一暂时变数THIS_LID,以及(B)无效化TLB 206内,关联于变数THIS_LID的区域地址转译。此流程终止于步骤2326。
在决策步骤2334中,映射模块204确认指令类型是否为三。若是,流程前进至步骤2336;否则就前进至步骤2342。
在步骤2336中,映射模块204在全域内容表214内寻找当前VPID的有效匹配。若未找到匹配,此流程终止;否则就前进至步骤2338。
在步骤2338中,映射模块204在区域内容表212内寻找THIS_GID的有效匹配。对于区域内容表212中各个匹配项目,映射模块204会(1)将此区域内容表212的匹配项目的LID 902指派为一暂时变数THIS_LID;以及(2)无效化TLB 206中,关联于变数THIS_LID的区域地址转译。此流程终止于步骤2338。
在步骤2342中,映射模块204会引起处理器100错误的产生,就x86指令集架构的实施例而言,即为一般保护错误(general protection fault)。此流程终止于步骤2342。
现在请参照图24,此图是一流程图显示处理器100执行指令以无效化TLB 206中关联于一扩展页表指针(extended page table pointer)的地址转译的操作。此流程始于步骤2402。
在步骤2402中,处理器100遭遇到一个指令,会无效化TLB 206中与一扩展页表指针有关的地址转译。举例来说,在x86指令集架构的实施例中,此指令是一INVEPT指令。接下来前进至决策步骤2404。
在决策步骤2404中,映射模块204确认指令类型(例如:x86INVEPT指令的寄存器运算元)是否为一。若是,流程前进至步骤2406;否则前进至决策步骤2412。
在步骤2406中,映射模块204在全域内容表214内寻找于INVEPT指令内特定的EPTP的有效匹配。若未找到匹配,此流程终止;否则,映射模块204会将全域内容表214的匹配项目的GID 1004指派为一暂时变数THIS_GID。接下来前进至步骤2408。
在步骤2408中,映射模块204无效化关联于变数THIS_GID的全域地址转译。此映射模块204并于区域内容表212内寻找变数THIS_GID的有效匹配。对于区域内容表212内各个找到的匹配项目,此映射模块204会(1)将此区域内容表212匹配项目的LID 902指派为一暂时变数THIS_LID;以及(2)无效化TLB 206中,关联于变数THIS_LID的区域地址转译。此流程终止于步骤2408。
在决策步骤2412中,映射模块204确认指令类型是否为二。若是,流程前进至步骤2414;否则前进至步骤2442。
在步骤2414中,映射模块204在全域内容表214内寻找每个非零EPTP值的有效匹配。若未找到匹配,此流程终止;否则,对于全域内容表214的各个匹配项目,映射模块204会:(1)将全域内容表214的匹配项目的GID 1004指派为一暂时变数THIS_GID;(2)无效化关联于变数THIS_GID的全域地址转译;以及(3)在区域内容表212中寻找变数THIS_GID的有效匹配,并且对于区域内容表212中各个找到的匹配项目,(A)将区域内容表212匹配项目的LID 902指派为一暂时变数THIS_LID,以及(B)无效化TLB 206内,关联于变数THIS_LID的区域地址转译。此流程终止于步骤2414。
在步骤2442中,映射模块会引起处理器100错误的产生,就x86指令集架构的实施例而言,即为一般保护错误(general protection fault)。此流程终止于步骤2442。
在前述各实施例中,区域(与全域)内容标识符空间的尺寸是一预设尺寸(例如:四),不过,本发明并不限于此。此区域(与全域)内容标识符空间的尺寸可依据所需的设计目的,效能、尺寸与功耗,而有不同。此外,本文所述的实施例对应于单一个TLB,不过,所属技术领域者当能理解,本文描述的机制可用于其他转译快取结构,例如分页结构快取(paging structurecache)。举例来说,在x86指令集架构中,即为PML4快取、PDPTE快取与PDE快取。此外,本文所述的实施例中出现的比特具有一特别的定义,如设定(set)或清除(clear)或零或一。不过,所属技术领域者当能理解,正逻辑(positive logic)与负逻辑(negative logic)的实施方式均可适用于本发明。最后,虽然本文描述多种对应于x86指令集架构的实施例,不过,本文所述的将大的架构地址转译内容空间映射至一小的非架构地址转译内容空间的机制,以及同时无效化地址转译的机制,可适用于其他指令集架构,如ARM、MIPS或Sun指令集架构。
惟以上所述者,仅为本发明的较佳实施例而已,当不能以此限定本发明实施的范围,即大凡依本发明权利要求及发明说明内容所作的简单的等效变化与修饰,皆仍属本发明专利涵盖的范围内。举例来说,软件可以执行本发明所述的装置与方法的功能、制造、形塑、模拟、描述以及/或测试等。这可由一般的程序语言(如C、C++)、硬件描述语言(HDL)包含Verilog HDL,VHDL等,或是其他既有程序来达成。此软件可以设置于任何已知的计算机可利用介质,如磁带、半导体、磁碟、光碟(如CD-ROM、DVD-ROM等)、网络接线、无线或是其他通讯介质。此处描述的装置与方法的实施例可被包含于一半导体智财核心,例如一微处理核心(如以硬件描述语言的实施方式)并且通过集成电路的制作转换为硬件。此外,本文所描述的装置与方法亦可包含硬件与软件的结合。因此,本文所述的任何实施例,并非用以限定本发明的范围。此外,本发明可应用于一般通用计算机的微处理器装置。最后,所属技术领域具有通常知识者利用本发明所揭露的观念与实施例作为基础,来设计并调整出不同的结构已达成相同的目的,亦不超出本发明的范围。
藉由以上较佳具体实施例之详,希望能更加清楚描述本发明的特征与精神,而并非以上述所揭露的较佳具体实施例来对本发明的范畴加以限制。相反地,其目的是希望能涵盖各种改变及具相等性的安排于本发明所欲申请的专利范围的范畴内。

Claims (20)

1.一种转译后备缓冲器,包含:
多个项目,各该项目用以确保一地址转译与一有效比特向量,对于一相对应的地址转译内容,该有效比特向量的各个比特在该比特被设定时,指出该地址转译为有效,而在该比特被清除时,指出该地址转译为无效;
一无效化比特向量,该无效化比特向量的比特对应于该多个项目的该有效比特向量的比特,其中,该无效化比特向量具有一设定比特以表示同时清除各该项目的该有效比特向量的该相对应比特。
2.如权利要求1所述的转译后备缓冲器,其中,该有效比特向量包含全域与区域部分,该无效化比特向量包含分别对应于该有效比特向量的该全域与该区域部分的全域与区域部分,其中,该全域与该区域部分为互斥,其中,当该有效比特向量的该区域部分具有一个或多个比特被设定时,该地址转译就会是一有效区域地址转译,其中,当该有效比特向量的该全域部分具有一个或多个比特被设定时,该地址转译就会是一有效全域地址转译。
3.如权利要求2所述的转译后备缓冲器,其中,该无效化比特向量的该区域部分具有一设定比特以表示同时清除各该项目的该有效比特向量的该区域部分的该相对应比特,该无效化比特向量的该全域部分具有一设定比特以表示同时清除各该项目的该有效比特向量的该全域部分的该相对应比特。
4.如权利要求3所述的转译后备缓冲器,其中,该转译后备缓冲器用于同时清除各该项目的该有效比特向量的该区域部分的该相对应比特与各该项目的该有效比特向量的该全域部分的该相对应比特。
5.如权利要求2所述的转译后备缓冲器,
其中,该地址转译包含一对存储器地址,其中,该对存储器地址的第一个是一待转译地址,而该对存储器地址的第二个是一转译后地址;
其中,对于该些项目其中之一,当该项目的待转译地址符合提供至该转译后备缓冲器的一查找地址,并且,该项目的该有效比特向量的该区域部分包含一设定比特,符合提供至该转译后备缓冲器的一查找区域比特向量的一相对应设定比特,或者该项目的该有效比特向量的该全域部分包含一设定比特,符合提供至该转译后备缓冲器的一查找全域比特向量的一相对应设定比特,该转译后备缓冲器显示命中并提供该项目的该转译后地址,否则即显示未命中;以及
其中,该查找区域比特向量与该查找全域比特向量整体指出与产生该查找地址的进程有关的一当前地址转译内容。
6.如权利要求1所述的转译后备缓冲器,
其中,该地址转译包含一对存储器地址,其中,该对存储器地址的第一个是一待转译地址,而该对存储器地址的第二个是一转译后地址;
其中,对于该些项目其中之一,当该项目的待转译地址符合提供至该转译后备缓冲器的一查找地址,并且,该项目的该有效比特向量包含一设定比特,符合提供至该转译后备缓冲器的一查找比特向量的一相对应设定比特,该转译后备缓冲器显示命中并提供该项目的该转译后地址,否则即显示未命中;以及
其中,该查找比特向量指出与产生该查找地址的进程有关的一当前地址转译内容。
7.一种操作一转译后备缓冲器的方法,该转译后备缓冲器包含多个项目,各该项目用以确保一地址转译与一有效比特向量,对于一相对应的地址转译内容,该有效比特向量的各个比特在该比特被设定时,指出该地址转译为有效,而在该比特被清除时,指出该地址转译为无效,该方法包含:
接收一无效化比特向量,该无效化比特向量的比特对应于该多个项目的该有效比特向量的该比特;以及
相对应于该无效化比特向量的一设定比特,同时清除各该项目的该有效比特向量的该比特。
8.如权利要求7所述的方法,其中,该有效比特向量包含全域与区域部分,该无效化比特向量包含分别对应于该有效比特向量的该全域与该区域部分的全域与区域部分,其中,该全域与该区域部分为互斥,其中,当该有效比特向量的该区域部分具有一个或多个比特被设定时,该地址转译就会是一有效区域地址转译,其中,当该有效比特向量的该全域部分具有一个或多个比特被设定时,该地址转译就会是一有效全域地址转译。
9.如权利要求8所述的方法,其中,该相对应于该无效化比特向量的一设定比特,同时清除各该项目的该有效比特向量的该比特的步骤包含:
相对应于该无效化比特向量的该区域部分的一设定比特,同时清除各该项目的该有效比特向量的该区域部分的该相对应比特;以及
相对应于该无效化比特向量的该全域部分的一设定比特,同时清除各该项目的该有效比特向量的该全域部分的该相对应比特。
10.如权利要求9所述的方法,其中,该同时清除各该项目的该有效比特向量的该区域部分的该相对应比特的步骤与该同时清除各该项目的该有效比特向量的该全域部分的该相对应比特的步骤同时执行。
11.如权利要求8所述的方法,其中,该地址转译包含一对存储器地址,其中,该对存储器地址的第一个是一待转译地址,而该对存储器地址的第二个是一转译后地址,该方法还包含:
对于该些项目其中之一,当该项目的待转译地址符合提供至该转译后备缓冲器的一查找地址,并且,该项目的该有效比特向量的该区域部分包含一设定比特,符合提供至该转译后备缓冲器的一查找区域比特向量的一相对应设定比特,或者该项目的该有效比特向量的该全域部分包含一设定比特,符合提供至该转译后备缓冲器的一查找全域比特向量的一相对应设定比特,该转译后备缓冲器显示命中并提供该项目的该转译后地址,否则即显示未命中;以及
其中,该查找区域比特向量与该查找全域比特向量整体指出与产生该查找地址的进程有关的一当前地址转译内容。
12.如权利要求7所述的方法,其中,该地址转译包含一对存储器地址,其中,该对存储器地址的第一个是一待转译地址,而该对存储器地址的第二个是一转译后地址,该方法还包含:
对于该些项目其中之一,当该项目的待转译地址符合提供至该转译后备缓冲器的一查找地址,并且,该项目的该有效比特向量包含一设定比特,符合提供至该转译后备缓冲器的一查找比特向量的一相对应设定比特,该转译后备缓冲器显示命中并提供该项目的该转译后地址,否则即显示未命中;以及
其中,该查找比特向量指出与产生该查找地址的进程有关的一当前地址转译内容。
13.如权利要求7所述的方法,还包含:
对应于未命中一查找地址的该转译后备缓冲器的情形,使用一当前地址转译内容来产生一新的地址转译;
将该新的地址转译填入该些项目其中之一的该地址转译;以及
将以比特向量化表示的一当前内容标识符填入该些项目其中之一的该有效比特向量,该当前内容标识符用以识别关联于产生该查找地址的一进程的一当前地址转译内容。
14.一处理器,包含:
一转译后备缓冲器,包含:
多个项目,各该项目用以确保一地址转译与一有效比特向量,对于一相对应的地址转译内容,该有效比特向量的各个比特在该比特被设定时,指出该地址转译为有效,而在该比特被清除时,指出该地址转译为无效;
一无效化比特向量,该无效化比特向量的比特对应于该多个项目的该有效比特向量的比特,其中,该无效化比特向量具有一设定比特以表示同时清除各该项目的该有效比特向量的该相对应比特;以及
一映射模块,用以产生该无效化比特向量。
15.如权利要求14所述的处理器,其中,该有效比特向量包含全域与区域部分,该无效化比特向量包含分别对应于该有效比特向量的该全域与该区域部分的全域与区域部分,其中,该全域与该区域部分为互斥,其中,当该有效比特向量的该区域部分具有一个或多个比特被设定时,该地址转译就会是一有效区域地址转译,其中,当该有效比特向量的该全域部分具有一个或多个比特被设定时,该地址转译就会是一有效全域地址转译。
16.如权利要求15所述的处理器,其中,该无效化比特向量的该区域部分具有一设定比特以表示同时清除各该项目的该有效比特向量的该区域部分的该相对应比特,该无效化比特向量的该全域部分具有一设定比特以表示同时清除各该项目的该有效比特向量的该全域部分的该相对应比特。
17.如权利要求16所述的处理器,其中,该转译后备缓冲器用于同时清除各该项目的该有效比特向量的该区域部分的该相对应比特与各该项目的该有效比特向量的该全域部分的该相对应比特。
18.如权利要求15所述的处理器,
其中,该地址转译包含一对存储器地址,其中,该对存储器地址的第一个是一待转译地址,而该对存储器地址的第二个是一转译后地址;
其中,对于该些项目其中之一,当该项目的待转译地址符合提供至该转译后备缓冲器的一查找地址,并且,该项目的该有效比特向量的该区域部分包含一设定比特,符合提供至该转译后备缓冲器的一查找区域比特向量的一相对应设定比特,或者该项目的该有效比特向量的该全域部分包含一设定比特,符合提供至该转译后备缓冲器的一查找全域比特向量的一相对应设定比特,该转译后备缓冲器显示命中并提供该项目的该转译后地址,否则即显示未命中;以及
其中,该查找区域比特向量与该查找全域比特向量整体指出与产生该查找地址的进程有关的一当前地址转译内容。
19.如权利要求14所述的处理器,
其中,该地址转译包含一对存储器地址,其中,该对存储器地址的第一个是一待转译地址,而该对存储器地址的第二个是一转译后地址;
其中,对于该些项目其中之一,当该项目的待转译地址符合提供至该转译后备缓冲器的一查找地址,并且,该项目的该有效比特向量包含一设定比特,符合提供至该转译后备缓冲器的一查找比特向量的一相对应设定比特,该转译后备缓冲器显示命中并提供该项目的该转译后地址,否则即显示未命中;以及
其中,该查找比特向量指出与产生该查找地址的进程有关的一当前地址转译内容。
20.如权利要求14所述的处理器,还包含:
一存储器子系统,对应于未命中一查找地址的该转译后备缓冲器的情形,该存储器子系统使用一当前地址转译内容来产生一新的地址转译,将该新的地址转译填入该些项目其中之一的该地址转译,并将以比特向量化表示的一当前内容标识符填入该些项目其中之一的该有效比特向量,该当前内容标识符用以识别关联于产生该查找地址的一进程的一当前地址转译内容。
CN201480065922.9A 2014-07-21 2014-11-26 转译后备缓冲器、操作其的方法以及包含其的处理器 Active CN105993004B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201462026830P 2014-07-21 2014-07-21
US62/026,830 2014-07-21
PCT/IB2014/003116 WO2016012832A1 (en) 2014-07-21 2014-11-26 Address translation cache that supports simultaneous invalidation of common context entries

Publications (2)

Publication Number Publication Date
CN105993004A true CN105993004A (zh) 2016-10-05
CN105993004B CN105993004B (zh) 2019-04-02

Family

ID=55162551

Family Applications (3)

Application Number Title Priority Date Filing Date
CN201480065923.3A Active CN105993005B (zh) 2014-07-21 2014-11-26 具有地址转译快取的处理器及其操作方法
CN201480065921.4A Active CN105993003B (zh) 2014-07-21 2014-11-26 转译后备缓冲器、操作转译后备缓冲器的方法以及处理器
CN201480065922.9A Active CN105993004B (zh) 2014-07-21 2014-11-26 转译后备缓冲器、操作其的方法以及包含其的处理器

Family Applications Before (2)

Application Number Title Priority Date Filing Date
CN201480065923.3A Active CN105993005B (zh) 2014-07-21 2014-11-26 具有地址转译快取的处理器及其操作方法
CN201480065921.4A Active CN105993003B (zh) 2014-07-21 2014-11-26 转译后备缓冲器、操作转译后备缓冲器的方法以及处理器

Country Status (7)

Country Link
US (3) US9760496B2 (zh)
EP (2) EP3172673B1 (zh)
JP (1) JP6081672B2 (zh)
KR (2) KR101770496B1 (zh)
CN (3) CN105993005B (zh)
TW (3) TWI592867B (zh)
WO (3) WO2016012832A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023216450A1 (zh) * 2022-05-09 2023-11-16 支付宝(杭州)信息技术有限公司 在虚拟化平台中管理tlb高速缓存的方法和装置
US11947992B2 (en) 2022-05-09 2024-04-02 Alipay (Hangzhou) Information Technology Co., Ltd. Methods and apparatuses for managing TLB cache in virtualization platform

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105993005B (zh) * 2014-07-21 2019-06-04 上海兆芯集成电路有限公司 具有地址转译快取的处理器及其操作方法
US9697137B2 (en) 2014-11-14 2017-07-04 Cavium, Inc. Filtering translation lookaside buffer invalidations
US9684606B2 (en) * 2014-11-14 2017-06-20 Cavium, Inc. Translation lookaside buffer invalidation suppression
US9672159B2 (en) * 2015-07-02 2017-06-06 Arm Limited Translation buffer unit management
US10509729B2 (en) * 2016-01-13 2019-12-17 Intel Corporation Address translation for scalable virtualization of input/output devices
US10042691B2 (en) * 2016-04-26 2018-08-07 International Business Machines Corporation Operation of a multi-slice processor implementing exception handling in a nested translation environment
DK3502906T3 (da) 2016-06-08 2021-08-30 Google Llc Tlb-shootdown for lav overhead
US10540292B2 (en) 2016-06-08 2020-01-21 Google Llc TLB shootdowns for low overhead
US10108554B2 (en) * 2016-12-05 2018-10-23 Intel Corporation Apparatuses, methods, and systems to share translation lookaside buffer entries
WO2018107322A1 (en) 2016-12-12 2018-06-21 Intel Corporation System and method to improve nested virtual machine monitor performance
US10725685B2 (en) 2017-01-19 2020-07-28 International Business Machines Corporation Load logical and shift guarded instruction
US10496311B2 (en) 2017-01-19 2019-12-03 International Business Machines Corporation Run-time instrumentation of guarded storage event processing
US10579377B2 (en) 2017-01-19 2020-03-03 International Business Machines Corporation Guarded storage event handling during transactional execution
US10452288B2 (en) 2017-01-19 2019-10-22 International Business Machines Corporation Identifying processor attributes based on detecting a guarded storage event
US10496292B2 (en) 2017-01-19 2019-12-03 International Business Machines Corporation Saving/restoring guarded storage controls in a virtualized environment
US10732858B2 (en) 2017-01-19 2020-08-04 International Business Machines Corporation Loading and storing controls regulating the operation of a guarded storage facility
US11409551B2 (en) 2017-02-27 2022-08-09 Red Hat, Inc. Emulating VPID correctly for a nested hypervisor
US10228981B2 (en) 2017-05-02 2019-03-12 Intel Corporation High-performance input-output devices supporting scalable virtualization
US10713050B2 (en) 2017-09-19 2020-07-14 International Business Machines Corporation Replacing Table of Contents (TOC)-setting instructions in code with TOC predicting instructions
US10884929B2 (en) 2017-09-19 2021-01-05 International Business Machines Corporation Set table of contents (TOC) register instruction
US10705973B2 (en) 2017-09-19 2020-07-07 International Business Machines Corporation Initializing a data structure for use in predicting table of contents pointer values
US11061575B2 (en) 2017-09-19 2021-07-13 International Business Machines Corporation Read-only table of contents register
US10725918B2 (en) 2017-09-19 2020-07-28 International Business Machines Corporation Table of contents cache entry having a pointer for a range of addresses
US10896030B2 (en) 2017-09-19 2021-01-19 International Business Machines Corporation Code generation relating to providing table of contents pointer values
US10620955B2 (en) 2017-09-19 2020-04-14 International Business Machines Corporation Predicting a table of contents pointer value responsive to branching to a subroutine
US10725822B2 (en) * 2018-07-31 2020-07-28 Advanced Micro Devices, Inc. VMID as a GPU task container for virtualization
US11221957B2 (en) 2018-08-31 2022-01-11 International Business Machines Corporation Promotion of ERAT cache entries
US10769076B2 (en) 2018-11-21 2020-09-08 Nvidia Corporation Distributed address translation in a multi-node interconnect fabric
US11663118B2 (en) * 2021-03-10 2023-05-30 Infineon Technologies Ag Address vectors for data storage elements
US20220414016A1 (en) * 2021-06-23 2022-12-29 Advanced Micro Devices, Inc. Concurrent processing of memory mapping invalidation requests

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1369808A (zh) * 2001-07-18 2002-09-18 智权第一公司 储存存储器型式数据的转译旁视缓冲器
JP3821644B2 (ja) * 1999-12-17 2006-09-13 ヒューレット・パッカード・カンパニー 旧キャッシュラインを無効化および除去する装置
CN101213526A (zh) * 2005-06-29 2008-07-02 高通股份有限公司 阻止针对存储器中同一页的多次转译后备缓冲器存取
US8099559B2 (en) * 2007-09-11 2012-01-17 International Business Machines Corporation System and method for generating fast instruction and data interrupts for processor design verification and validation
CN103620547A (zh) * 2011-01-27 2014-03-05 索夫特机械公司 使用处理器的转换后备缓冲器的基于客户指令到本机指令范围的映射
CN103778072A (zh) * 2012-10-25 2014-05-07 辉达公司 多线程处理单元中的高效存储器虚拟化

Family Cites Families (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0690688B2 (ja) * 1990-10-20 1994-11-14 富士通株式会社 変換バッファを具備する情報処理装置
US5430850A (en) 1991-07-22 1995-07-04 Massachusetts Institute Of Technology Data processing system with synchronization coprocessor for multiple threads
US5845331A (en) * 1994-09-28 1998-12-01 Massachusetts Institute Of Technology Memory system including guarded pointers
US5926642A (en) * 1995-10-06 1999-07-20 Advanced Micro Devices, Inc. RISC86 instruction set
US5715427A (en) 1996-01-26 1998-02-03 International Business Machines Corporation Semi-associative cache with MRU/LRU replacement
US6041396A (en) 1996-03-14 2000-03-21 Advanced Micro Devices, Inc. Segment descriptor cache addressed by part of the physical address of the desired descriptor
US5953520A (en) 1997-09-22 1999-09-14 International Business Machines Corporation Address translation buffer for data processing system emulation mode
US6047363A (en) 1997-10-14 2000-04-04 Advanced Micro Devices, Inc. Prefetching data using profile of cache misses from earlier code executions
JP2000020399A (ja) * 1998-06-30 2000-01-21 Hitachi Ltd 仮想計算機システム
US8065504B2 (en) 1999-01-28 2011-11-22 Ati International Srl Using on-chip and off-chip look-up tables indexed by instruction address to control instruction execution in a processor
US8074055B1 (en) * 1999-01-28 2011-12-06 Ati Technologies Ulc Altering data storage conventions of a processor when execution flows from first architecture code to second architecture code
US6212613B1 (en) * 1999-03-22 2001-04-03 Cisco Technology, Inc. Methods and apparatus for reusing addresses in a computer
US6490671B1 (en) 1999-05-28 2002-12-03 Oracle Corporation System for efficiently maintaining translation lockaside buffer consistency in a multi-threaded, multi-processor virtual memory system
US6412043B1 (en) * 1999-10-01 2002-06-25 Hitachi, Ltd. Microprocessor having improved memory management unit and cache memory
US6604187B1 (en) * 2000-06-19 2003-08-05 Advanced Micro Devices, Inc. Providing global translations with address space numbers
US6510506B2 (en) * 2000-12-28 2003-01-21 Intel Corporation Error detection in cache tag array using valid vector
US7073044B2 (en) * 2001-03-30 2006-07-04 Intel Corporation Method and apparatus for sharing TLB entries
US6662289B1 (en) 2001-05-15 2003-12-09 Hewlett-Packard Development Company, Lp. Method and apparatus for direct conveyance of physical addresses from user level code to peripheral devices in virtual memory systems
US7089396B2 (en) 2002-10-10 2006-08-08 International Business Machines Corporation Method and profiling cache for management of virtual memory
US7363462B2 (en) * 2003-04-04 2008-04-22 Sun Microsystems, Inc. Performing virtual to global address translation in processing subsystem
US7284100B2 (en) * 2003-05-12 2007-10-16 International Business Machines Corporation Invalidating storage, clearing buffer entries, and an instruction therefor
KR100591755B1 (ko) * 2003-07-22 2006-06-22 삼성전자주식회사 복수의 스레드를 동시에 처리하는 장치 및 방법
US7167970B2 (en) * 2004-05-24 2007-01-23 Sun Microsystems, Inc. Translating loads for accelerating virtualized partition
US7234038B1 (en) 2004-05-28 2007-06-19 Sun Microsystems, Inc. Page mapping cookies
US7551614B2 (en) 2004-12-14 2009-06-23 Hewlett-Packard Development Company, L.P. Aggregation over multiple processing nodes of network resources each providing offloaded connections between applications over a network
US8522253B1 (en) 2005-03-31 2013-08-27 Guillermo Rozas Hardware support for virtual machine and operating system context switching in translation lookaside buffers and virtually tagged caches
US20080005529A1 (en) 2006-06-30 2008-01-03 Morris Robert P Methods, Systems, and Computer Program Products for Providing Access to Addressable Entities Using a Non-Sequential Virtual Address Space
US20080005528A1 (en) * 2006-06-30 2008-01-03 Morris Robert P Methods, Systems, and Computer Program Products for Using a Structured Data Storage System to Provide Access to Addressable Entities in Virtual Address Space
US7484073B2 (en) * 2006-07-12 2009-01-27 Microsoft Corporation Tagged translation lookaside buffers in a hypervisor computing environment
US7555628B2 (en) 2006-08-15 2009-06-30 Intel Corporation Synchronizing a translation lookaside buffer to an extended paging table
US7490191B2 (en) 2006-09-22 2009-02-10 Intel Corporation Sharing information between guests in a virtual machine environment
US7836258B2 (en) * 2006-11-13 2010-11-16 International Business Machines Corporation Dynamic data cache invalidate with data dependent expiration
JP2009146344A (ja) * 2007-12-18 2009-07-02 Hitachi Ltd 計算機仮想化装置のtlb仮想化方法および計算機仮想化プログラム
US7937556B2 (en) * 2008-04-30 2011-05-03 Oracle America, Inc. Minimizing TLB comparison size
JP5300407B2 (ja) * 2008-10-20 2013-09-25 株式会社東芝 仮想アドレスキャッシュメモリ及び仮想アドレスキャッシュ方法
CN101398768B (zh) * 2008-10-28 2011-06-15 北京航空航天大学 一种分布式虚拟机监视器系统的构建方法
CN101794214B (zh) * 2009-02-04 2013-11-20 世意法(北京)半导体研发有限责任公司 使用多块物理寄存器映射表的寄存器重命名系统及其方法
US8443156B2 (en) 2009-03-27 2013-05-14 Vmware, Inc. Virtualization system using hardware assistance for shadow page table coherence
US8533437B2 (en) * 2009-06-01 2013-09-10 Via Technologies, Inc. Guaranteed prefetch instruction
US8301865B2 (en) * 2009-06-29 2012-10-30 Oracle America, Inc. System and method to manage address translation requests
US8412911B2 (en) 2009-06-29 2013-04-02 Oracle America, Inc. System and method to invalidate obsolete address translations
US8930635B2 (en) * 2009-12-14 2015-01-06 International Business Machines Corporation Page invalidation processing with setting of storage key to predefined value
US8386749B2 (en) * 2010-03-16 2013-02-26 Advanced Micro Devices, Inc. Address mapping in virtualized processing system
US9003171B2 (en) 2010-06-23 2015-04-07 Apple Inc. Page fault prediction for processing vector instructions
US8527736B1 (en) * 2010-09-07 2013-09-03 Adtran, Inc. Systems and methods for improving address translation speed
US8880851B2 (en) * 2011-04-07 2014-11-04 Via Technologies, Inc. Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
JP2013097671A (ja) * 2011-11-02 2013-05-20 Fujitsu Ltd アドレス変換装置、アドレス変換装置の制御方法及び演算処理装置
EP2836906B1 (en) 2012-03-30 2019-11-20 Intel Corporation System and method for real time instruction tracing
US8856789B2 (en) 2012-09-06 2014-10-07 Assured Information Security, Inc. Facilitating execution of a self-modifying executable
WO2014142867A1 (en) * 2013-03-14 2014-09-18 Intel Corporation Power efficient level one data cache access with pre-validated tags
US9507597B2 (en) 2013-06-10 2016-11-29 Via Alliance Semiconductor Co., Ltd. Selective accumulation and use of predicting unit history
US10324863B2 (en) 2013-06-24 2019-06-18 Intel Corporation Protected memory view for nested page table access by virtual machine guests
CN104424034A (zh) 2013-09-04 2015-03-18 华为技术有限公司 硬件资源访问方法及装置
CN105993005B (zh) * 2014-07-21 2019-06-04 上海兆芯集成电路有限公司 具有地址转译快取的处理器及其操作方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3821644B2 (ja) * 1999-12-17 2006-09-13 ヒューレット・パッカード・カンパニー 旧キャッシュラインを無効化および除去する装置
CN1369808A (zh) * 2001-07-18 2002-09-18 智权第一公司 储存存储器型式数据的转译旁视缓冲器
CN101213526A (zh) * 2005-06-29 2008-07-02 高通股份有限公司 阻止针对存储器中同一页的多次转译后备缓冲器存取
US8099559B2 (en) * 2007-09-11 2012-01-17 International Business Machines Corporation System and method for generating fast instruction and data interrupts for processor design verification and validation
CN103620547A (zh) * 2011-01-27 2014-03-05 索夫特机械公司 使用处理器的转换后备缓冲器的基于客户指令到本机指令范围的映射
CN103778072A (zh) * 2012-10-25 2014-05-07 辉达公司 多线程处理单元中的高效存储器虚拟化

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023216450A1 (zh) * 2022-05-09 2023-11-16 支付宝(杭州)信息技术有限公司 在虚拟化平台中管理tlb高速缓存的方法和装置
US11947992B2 (en) 2022-05-09 2024-04-02 Alipay (Hangzhou) Information Technology Co., Ltd. Methods and apparatuses for managing TLB cache in virtualization platform

Also Published As

Publication number Publication date
EP3172673B1 (en) 2020-09-02
KR20160033653A (ko) 2016-03-28
CN105993005B (zh) 2019-06-04
WO2016012832A1 (en) 2016-01-28
JP6081672B2 (ja) 2017-02-15
WO2016012831A1 (en) 2016-01-28
TWI581098B (zh) 2017-05-01
CN105993004B (zh) 2019-04-02
CN105993003B (zh) 2019-04-09
EP2997478B1 (en) 2019-03-13
JP2016527652A (ja) 2016-09-08
TW201610837A (zh) 2016-03-16
US9727480B2 (en) 2017-08-08
TWI592867B (zh) 2017-07-21
TWI605339B (zh) 2017-11-11
US20160041922A1 (en) 2016-02-11
KR101770495B1 (ko) 2017-08-22
US20160179688A1 (en) 2016-06-23
US9760496B2 (en) 2017-09-12
US9842055B2 (en) 2017-12-12
TW201610683A (zh) 2016-03-16
KR101770496B1 (ko) 2017-09-05
EP2997478A1 (en) 2016-03-23
EP3172673A1 (en) 2017-05-31
CN105993003A (zh) 2016-10-05
KR20160033654A (ko) 2016-03-28
TW201617898A (zh) 2016-05-16
EP3172673A4 (en) 2018-03-28
EP2997478A4 (en) 2017-06-07
CN105993005A (zh) 2016-10-05
WO2016012830A1 (en) 2016-01-28
US20160179701A1 (en) 2016-06-23

Similar Documents

Publication Publication Date Title
CN105993004A (zh) 支持同时无效化共同内容的地址转译快取
CA2874186C (en) Compare and replace dat table entry
KR100834365B1 (ko) 스토리지 무효화, 버퍼 엔트리 제거
US10078597B2 (en) System and method of distinguishing system management mode entries in a translation address cache of a processor
EP2862059B1 (en) Local clearing control
US20160162411A9 (en) Invalidating a Range of Two or More Translation Table Entries and Instruction Therefore

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address

Address after: Room 301, 2537 Jinke Road, Zhangjiang High Tech Park, Pudong New Area, Shanghai 201203

Patentee after: Shanghai Zhaoxin Semiconductor Co.,Ltd.

Address before: Room 301, 2537 Jinke Road, Zhangjiang hi tech park, Shanghai 201203

Patentee before: VIA ALLIANCE SEMICONDUCTOR Co.,Ltd.

CP03 Change of name, title or address