支持同时无效化共同内容的地址转译快取的制作方法

文档序号:10628099阅读:443来源:国知局
支持同时无效化共同内容的地址转译快取的制作方法【专利摘要】一种处理器,包含一映射模块,用以将架构虚拟处理器标识符映射至非架构全域标识符并将架构程序内容标识符映射至非架构区域标识符。此处理器还包含一具有多个地址转译的转译后备缓冲器(TLB)。对于其中每个地址转译:当此地址转译为全域地址转译时,会在此地址转译加上其中一个非架构全域标识符,而映射模块已将其中一个虚拟处理器标识符映射至此非架构全域标识符;当此地址转译为区域地址转译时,会在此地址转译加上其中一个非架构区域标识符,而映射模块已将其中一个程序内容标识符映射至此非架构区域标识符。【专利说明】支持同时无效化共同内容的地址转译快取[0001]相关申请交叉引用[0002]本申请主张申请日为2014年7月21日的美国专利第62/026,830号临时申请的优先权。该优先权申请的全文并入本申请以供参考。【
背景技术
】[0003]现代处理器支持虚拟存储器功能。虚拟存储器系统将由程序使用的虚拟地址映射或转译至由硬件使用的物理地址以对存储器定址。虚拟存储器可以对程序隐藏物理存储器散布的问题,以利程序重定位(relocat1n)的进行,并可容许程序看到相较于可取用的物理存储器更大的地址空间。这些优点尤其有利于现代使用多程序或进程以支持处理器时间共享(time-sharing)的系统。[0004]操作系统(operat1ngsystem)产生并维护存储器转译表(memorytranslat1ntable)。存储器转译表通常被称为分页虚拟存储器系统的页表(pagetable),用以将虚拟地址映射至物理地址。此转译表可采取阶层表单的型式,其中部分表单将虚拟地址映射至中间表单的地址。在程序利用虚拟地址来存取存储器的时候,转译表必须能被存取,以完成虚拟地址转译至其物理位置的过程,这过程通常被称为页表移动(pagetablewalk)或表移动(tablewalk)。这个存取转译表的额外存取动作,会明显造成存取存储器以取得程序所需的数据或指令的最终存取动作的延迟。[0005]现代处理器具有转译后备缓冲器(translat1n-lookasidebuffer,TLB)来处理这个问题并提升效能。TLB是一个处理器的硬件结构,通过依序存取虚拟至物理地址的转译,以大幅降低需要存取转译表的可能性。先在TLB内查看待转译的虚拟地址,然后再由TLB提供物理地址。如果此虚拟地址存在(命中)于TLB内,所需要的时间就会明显少于存取存储器内的转译表来执行页移动所需的时间。TLB的效率(命中率)对于处理器的效能来说非常关键。[0006]各个进程(process)或内容(context)都具有其特殊地址空间与相关联的地址转译。因此,对于一个进程而言正确的TLB项目,对于另一个进程来说未必正确。当处理器切换处理进程时,TLB效能会降低。此系统必须确保没有因为使用过时的TLB项目而误用TLB中用于旧进程的地址转译来转译新进程的虚拟地址。【
发明内容】[0007]本发明提供一种处理器。此处理器包含一映射模块,用以将架构虚拟处理器标识符(architecturalvirtualprocessoridentifier)映射至非架构全域标识符(non-architecturalglobalidentifier),并将架构进程内容标识符(architecturalprocesscontextidentifier)映射至非架构区域标识符(non-architecturallocalidentifier)。此处理器还包含一转译后备缓冲器(translat1n-lookasidebuffer,TLB)〇此转译后备缓冲器具有多个地址转译(addresstranslat1n)。对于其中每个地址转译:当此地址转译为全域地址转译时,会在此地址转译加上其中一个非架构全域标识符,而映射模块已将其中一个虚拟处理器标识符映射至此非架构全域标识符;当此地址转译为区域地址转译时,会在此地址转译加上其中一个非架构区域标识符,而映射模块已将其中一个进程内容标识符映射至此非架构区域标识符。[0008]本发明并提供一种方法以操作一处理器。此处理器包含一转译后备缓冲器,而此转译后备缓冲器具有多个地址转译。此方法包含将架构虚拟处理器标识符映射至非架构全域标识符,以及将架构进程内容标识符映射至非架构区域标识符。此方法还包含,对于其中每个地址转译:当此地址转译为全域地址转译时,会在此地址转译加上其中一个非架构全域标识符,而映射模块已将其中一个虚拟处理器标识符映射至此非架构全域标识符;当此地址转译为区域地址转译时,会在此地址转译加上其中一个非架构区域标识符,而映射模块已将其中一个进程内容标识符映射至此非架构区域标识符。[00〇9]本发明更提供一编码于至少一非暂态计算机可使用介质(nontransitorycomputerusablemedium)的计算机程序产品,以供一计算装置使用。此计算机程序产品包含计算机可使用程序代码,实现于此介质内,以特定一处理器。此计算机可使用程序代码包含一第一程序代码以特定一映射模块,将架构虚拟处理器标识符映射至非架构全域标识符,以及将架构进程内容标识符映射至非架构区域标识符。此计算机可使用程序代码还包含第二程序代码,以特定一转译后备缓冲器。而此转译后备缓冲器具有多个地址转译。对于其中每个地址转译:当此地址转译为全域地址转译时,会在此地址转译加上其中一个非架构全域标识符,而映射模块已将其中一个虚拟处理器标识符映射至此非架构全域标识符;当此地址转译为区域地址转译时,会在此地址转译加上其中一个非架构区域标识符,而映射模块已将其中一个进程内容标识符映射至此非架构区域标识符。[0010]本发明所采用的具体实施例,将藉由以下的实施例及附图作进一步的说明。【附图说明】[0011]图1是一处理器的方块示意图;[0012]图2是一方块图详细显示图1的处理器;[0013]图3是转译后备缓冲器的一项目的方块示意图;[0014]图4是一流程图显示图1的处理器填入转译后备缓冲器的项目的操作流程;[0015]图5是一方块示意图显示一位于转译后备缓冲器内的逻辑以确认查找过程中是否发生命中;[0016]图6是一方块示意图显示一逻辑,用以无效化转译后备缓冲器(请参照图2)的项目(请参照图3)的LVAL比特向量的比特;[〇〇17]图7是一方块示意图显示图1的处理器内的一控制寄存器;[0018]图8是一流程图显示映射模块响应于图7的控制寄存器中各个不同比特的设定所执行的操作;[0019]图9是一方块示意图详细显示图2的区域内容表;[0〇2〇]图10是一方块示意图详细显示图2的全域内容表;[〇〇21]图11是一流程图显示图1的处理器执行指令使处理器的架构特征失效的操作,而此处理器支持多个进程内容标识符(processcontextidentifier,PCID);[〇〇22]图12是一流程图显示图1的处理器执行指令以改变当前地址转译内容的操作;[0023]图13是一流程图,显示图1的处理器执行图12的步骤(以及图19与图21的步骤1918与2106)所呼叫的M0V_CR3()例程的操作;[〇〇24]图14是一流程图显示图1的处理器执行图13的步骤1308(以及图16与图17的步骤1606与1722)所呼叫的ALL0CATE_L0CAL_C0NTEXT()例程的操作;[〇〇25]图15是一流程图显示图1的处理器在虚拟机器监视器至客户的移转过程的操作;[〇〇26]图16是一流程图显示图1的处理器执行例程M0VT0CR3N0VPID的操作;[〇〇27]图17是一流程图显示图1的处理器执行例程M0VT0CR3VPID的操作;[〇〇28]图18是一流程图显示图1的处理器执行图17的步骤1712所呼叫的ALL0CATE_GL0BAL_C0NTEXT()例程的操作。[〇〇29]图19是一流程图显示图1的处理器在由客户至虚拟机器监视器的移转过程的操作;[0030]图20是一流程图显示图1的处理器进入系统管理模式(systemmanagementmode,SMM)的移转过程的操作;[0031]图21是一流程图显示图1的处理器离开SMM的移转过程的操作;[〇〇32]图22,此图是一流程图显示处理器执行指令以无效化转译后备缓冲器中与一进程内容标识符有关的地址转译的操作;[〇〇33]图23A与图23B(整体称为图23)是一流程图显示处理器执行指令以无效化转译后备缓冲器中关联于一虚拟处理器标识符(virtualprocessoridentifier,VPID)的地址转译的操作;以及[〇〇34]图24是一流程图显示处理器执行指令以无效化转译后备缓冲器中关联于一扩展页表指针(extendedpagetablepointer)的地址转译的操作。【具体实施方式】[〇〇35]名词说明[0036]地址转译内容(addresstranslat1ncontext)是一组可以使存储器地址从一第一存储器地址空间转译至一第二存储器地址空间的信息。举例来说,在x86指令集架构中,地址转译内容可以是一组位于CR3寄存器(与其他控制寄存器,例如CR0与CR4与相关的特定模式寄存器(modelspecificregister,MSR))、页表(pagetable)、页目录(pagedirectory)、页目录指针表(page-directory-pointertableJDPT)、PML4表、扩展页表指针(extendedpagetablepointer,EPTP)、与/或扩展页表(extendedpagetable,EPT)内的信息,可以使线性地址(linearaddress)转译为物理存储器地址。不过,在其他指令集架构中(例如MIPS、SPARC),则可由操作系统执行此转译。而在ARM指令集架构中,地址转译内容可以是一组位于转译表基址寄存器(translat1ntablebaseregister,TTBR)(与其他控制寄存器,例如转译控制寄存器(translat1ncontrolregister,TCR)、系统控制寄存器(systemcontrolregister,SCTLR)与Hyp组态寄存器(Hypconfigurat1nregister,HCR))与/或转译表内的信息。[0037]地址转译(addresstranslat1n)是一对存储器地址,这对存储器地址的第一个是待转译地址,而这对存储器地址的第二个是转译后地址。[0038]区域地址转译(localaddresstranslat1n)是一种地址转译,使用单一个地址转译内容来将待转译地址转译为转译后地址。[0039]全域地址转译(globaladdresstranslat1n)是一种地址转译,使用多个地址转译内容来将待转译地址转译为转译后地址。[0040]区域存储器页(localmemorypage)(或是区域页(localpage),是一个具有一区域地址转译的存储器页。[0〇41]全域存储器页(globalmemorypage)(或是全域页(globalpage)),是一个具有一全域地址转译的存储器页。[〇〇42]许多习知的指令集架构(ISA)都具有设计来提升TLB效率的特征。举例来说,x86指令集架构可支持PCIDs、VPIDs与EPTEs。处理器一次无效化一个相关的TLB项目的实施方式会需要相对较长的时间来执行指令,尤其是在TLB较大且具有多个项目需要被无效化的情形。相较之下,本文所描述的实施例则可支持多个TLB项目的同时无效化。[〇〇43]此外,为了避免在各个TLB项目内纳入大量比特以储存处理器指令集架构所支持的整个地址转译内容空间所需要的信息,本文所述的实施例将此大空间映射至远小于此空间的非架构空间,如此,TLB项目内只须纳入少量比特。然而,当新的地址转译内容需要被映射至较小的非架构空间内时,就需要针对非由此非架构空间所映射的一地址转译空间,无效化其相关的TLB项目。本文所描述的实施例使处理器可以同时无效化所有与待映射的地址转译内容相关的TLB项目。这些实施例并考量到区域与全域地址转译的性质不同,而能支持此二种类型的TLB项目的无效化处理。[〇〇44]现在请参照图1,此图是一处理器100的方块示意图。此处理器100包含一指令快取102、一包含微码(microcode)106的指令转译器104、执行单元112、架构寄存器114、一存储器子系统122、一,决取存储器阶层架构(cachememoryhierarchy)118与一总线接口单元116。其他功能单元(图中未显示)可包含一表移动引擎(tablewalkengine),执行转译表移动以产生虚拟至物理的地址转译;分支预测器(branchpredictor);—重排缓冲器;保留站;一指令排程器(instruct1nscheduler);与数据预撷取单元(dataprefetchunit)等等。在一实施例中,此微处理器100具有一超纯量微架构(superscalarmicroarchitecture),而能在单一时钟周期发布多个指令给执行单元112执行。在一实施例中,微处理器100大致符合x86指令集架构,不过也可能符合其他不同的指令集架构。[0045]指令快取102储存(cache)撷取自系统存储器的架构指令,而此系统存储器与总线接口单元116互相沟通。就一较佳实施例而言,TLB关联于储存地址转译供指令使用的指令快取102,例如图2的TLB206。在一实施例中,指令转译器104将撷取自指令快取102的架构指令转译为此微处理器100的微架构的微指令集的微指令。执行单元112执行这些微指令。这些由架构指令转译出的微指令可实现架构指令。[0046]执行单元112由架构寄存器114(或是由重排缓冲器或一转送总线)接收源运算元(sourceoperand)。这些运算元由存储器通过存储器子系统122载入寄存器114。存储器子系统122可将数据写入快取存储器阶层结构118(例如:第一层数据快取、第二层快取、第三层快取)或将数据读出。就一较佳实施例而言,各个快取存储器具有一相关联的TLB,如图2的TLB206。若是在快取阶层结构118的最末层快取发生快取失误(cachemiss),总线接口单元116就会针对数据或指令快取线(cacheline)发出请求,而从系统存储器撷取快取线。[0047]存储器子系统122(例如表移动引擎)并于系统存储器存取转译表(例如,x86指令集架构所称的分页结构(pagingstructure))来执行页表移动以产生虚拟至物理的地址转译。在后续步骤中,此地址转译会载入处理器100的TLB,例如图2的TLB206。这部分在后续的图4中会有更详细的说明。在一转译表阶层结构中,前述转译表可包含映射至页的表(例如:x86指令集架构的页表),或是参照至其他转译表的表(例如:x86指令集架构的页目录、页目录指针表、PML4表)。此转译表并可包含将虚拟的物理地址(virtualizedphysicaladdress)(例如x86指令集架构中的客户物理地址(guestphysicaladdress),而相对应的转译表则为扩展页表(extendedpagetable,EPT))是指映射至真实的物理地址(trunphysicaladdress)的表(例如x86指令集架构中的主机物理地址(hostphysicaladdress))〇[OO48]就一较佳实施例而言,处理器100包含一微码单元(microcodeunit)。微码单元包含一用以储存微码106或微码例程(microcoderoutine)的微码存储器,以及一用以从微码存储器撷取微码指令的微序列器(microsequencer)。在一实施例中,这些微码程序是微指令。在一实施例中,这些微码指令则是会被转译为微指令。微码106可实现某些架构指令,例如特别复杂的架构指令。在一实施例中,图11、图12、图15、图21至图24中分别显示的MOVCR4、M0V0?3、¥]?1^1^01/^疆^51]]\^、1?]\1、1附?(:10、1附¥?10与1^^31'指令由微码106加以实现。此外,微码106并可执行处理器100的其他功能。在一实施例中,微码106处理图19与图20分别显示的虚拟机器退出(VMexit)与SMIs,详见后述。[〇〇49]现在请参照图2,此图是一方块图详细显示图1的处理器100。此处理器100包含一转译后备缓冲器(translat1nlookasidebuffer,TLB)206、一親接于TLB206的映射模块(mappingmodule)204、一耦接于TLB206与映射模块204的存储器子系统122、以及耦接于映射模块204的一区域内容表(localcontexttable)212与一全域内容表(globalcontexttable)214。映射模块204包含微码、一硬件状态机器(hardwarestatemachine)、或是其组合。映射模块204接收一进程内容标识符(processcontextidentifier,PCID)252、一虚拟处理器标识符(virtualprocessoridentifier,VPID)254、与一扩展页表指针(extendedpagetablepointer,EPTP)256。映射模块204会响应于各种事件,例如改变当前地址转译内容与/或无效化地址转译内容的指令,来接收PCID252、VPID254与EPTP256,详见后述。响应于所接收的PCID252、VPID254与EPTP256,映射模块204可通过产生一无效化区域(INV_L0CAL)比特向量232与/或一无效化全域(INV_GL0BAL)比特向量234分别同时无效化TLB206内的多个区域地址转译与/或多个全域地址转译。其操作过程如后续图6至图8的描述,而其用途如后续图11、图13至图14、图16、图18至图20与图22至图24的描述。[0050]此外,响应于所接收的PCID252、VPID254与EPTP256,映射模块204可更新当前区域内容标识符(CUR_LID)242与/或当前全域内容标识符(CUR_GID)244<XUR_LID242与CTR_GID244会识别当前地址转译内容。特别是,CUR_LID242会识别当前地址转译内容的区域存储器页,而CUR_GID244会识别当前地址转译内容的全域存储器页,详见后述。就一较佳实施例而言,CUR_LID242是一编码值(encodedvalue),解码器262将CUR_LID242解码并提供一查找区域有效(L00KUP_LVAL)的解码独热(one-hot)比特向量272(即一个比特被设定而其他比特被清除)至TLB206。〇^_6〇)244是一编码值,解码器264将⑶R_GID244解码并提供一查找全域有效(L00KUP_GVAL)的解码独热比特向量274至TLB206。其他表示CUR_LID242与CUR_GID244的实施例亦可用于本发明。举例来说,他们可以用解码后的形式进行储存,并直接提供至TLB206而无需使用解码器262/264。[〇〇511当存储器子系统122想要针对TLB206内的存储器页的虚拟地址执行一查找(1〇〇1〇^)动作,它会提供查找地址(10010^_4001〇276给1'1^206丄0010^_1^41272与L00KUP_GVAL274也会提供给TLB206并被纳入此查找中。TLB206会利用一命中指标(hitindicator)224指出是否有命中(hit)发生,若有,就提供转译后地址(TRANSLATED_ADDR)226至存储器子系统122。此操作详见后续图4的描述。[〇〇52]现在请参照图3,此图是TLB206的一项目300的方块示意图。TLB206的各个项目300都包含一区域有效比特向量(LVAL)302、一全域有效比特向量(GVAL)304、一虚拟页地址(VPADDR)306与一物理页地址(PPADDR)308。在一实施例中,LVAL302包含四个比特且GVAL304包含四个比特。LVAL302、GVAL304与VPADDR306在一起即为此项目300的地址转译。就一较佳实施例而言,TLB项目300并具有权限比特(permiss1nsbit)(未图示)来设定与页有关的权限。[〇〇53]在一实施例中,映射模块204可确保:(1)各个LID映射自一唯一的VPID:EPTP:PCID组合(扩展页表的特征生效)、VPID:PCID组合(扩展页表的特征失效)、或PCID(虚拟处理器标识符的特征失效);(2)各个GID映射自一唯一的VPID:EPTP组合(扩展页表的特征生效)或VPID(扩展页表的特征失效);(3)若是TLB206的项目300是一有效全域地址转译(如:GVAL304为非零),它就不会是一有效区域地址转译(LVAL302为零);反之,(4)若是TLB206的项目300是一有效区域地址转译(如:LVAL302为非零),它就不会是一有效全域地址转译(GVAL304为零)。如此可产生以下优点:(1)映射模块204可同时无效化所有TLB206的全域地址转译;以及(2)映射模块204可同时无效化所有TLB206的区域地址转译。此外,映射模块204并不保证LID会映射自特别的PCID。也就是说,相同的PCID值可由多个虚拟处理器设定而映射至不同的ILD。同样地,映射模块204亦可使多个ILD关联于一给定的GID。不过,反之则否,亦即,映射模块204不会使多个GID关联于一给定的ILD。不过,在处理器100操作的某个阶段,每个ILD可对应至一个唯一的GID,例如:在GID的数量等于ILD的数量(标识符为N)的实施例中,有N个虚拟处理器各自设定一个PCID。[〇〇54]现在请参照图4,此图是一流程图显示图1的处理器100填入TLB206的项目300的操作流程。此流程始于步骤402。[〇〇55]在步骤402中,存储器子系统122检测到TLB206内的查找地址276显示为未命中(miss)而执行表移动(tablewalk)以产生一地址转译。亦即,存储器子系统122利用当前地址转译内容来将未命中的查找地址276转译至一物理地址。存储器子系统122可包含一表移动引擎(未图示)以执行表移动。表移动可包含使用遗留页结构(legacypagingstructure)(例如x86指令集架构的页描述子基址(pagedescriptorbaseaddress)、页描述子表(pagedescriptortable)与页表项目)的部分以及与处理器100的虚拟机能力有关的扩展页表(例如x86指令集架构的虚拟机扩展(VirtualMachineextens1ns,VMX)扩展页表指针(EPTP)与扩展页表(EPT))。接下来前进至步骤404。[〇〇56]在步骤404中,存储器子系统122在TLB206内选择一项目来取代。在一实施例中,TLB206是一集合关联快取(set-associativecache),而此TLB206的各个集合包含有取代信息,例如最近最少使用(leastrecentlyused,LRU)的信息或伪LRU的信息,而存储器子系统122依据取代信息的指示,在设有目录的集合中,选择要取代的项目。接下来前进至步骤406。[0057]在决策步骤406中,存储器子系统122确认此地址转译为全域转译或区域转译。就一较佳实施例而言,存储器子系统122依据步骤402中执行表移动所用的当前地址转译内容的信息来进行此确认动作。若为全域转译,此流程就前进至步骤412;否则就前进至步骤408〇[〇〇58]在步骤408中,存储器子系统122会将一个因为是区域地址转译而为零的GVAL304、一个等于L00KUP_LVAL272以代表CUR_LID242的LVAL302、一个等于未命中的L00KUP_ADDR276的VPADDR306与一个等于转译后地址(即步骤402的表移动所产生的物理地址)的PPADDR308填入前述步骤404所选定的TLB206的项目300内。流程到此结束。[0059]在步骤412中,存储器子系统122会将一个等于L00KUP_GVAL274以代表CUR_GID244的GVAL304、一个因为是全域地址转译而为零的LVAL302、一个等于未命中的L00KUP_ADDR276的VPADDR306与一个等于转译后地址(即步骤402的表移动所产生的物理地址)的PPADDR308填入前述步骤404所选定的TLB206的项目300内。流程到此结束。[0060]现在请参照图5,此图是一方块示意图显示一位于TLB206内的逻辑500以确认查找过程中是否发生命中。如图5所示,逻辑500(除了0R功能534)对应至TLB206的单一项目300以确认此项目是否产生命中。需要理解的是,对于一全关联(fullyassociative)的实施例,TLB206内的逻辑500用于每一个项目300,为简化说明,此特征并未显示于图示中。而对于一集合关联(setassociative)的实施例,逻辑500则是用于各个路(perway)JLB206的所有项目300的命中指标524会由OR功能534执行逻辑或(OR-ed)的布尔(Boolean)运算,以产生图1所示的TLB206的命中指标224。需要理解的是,在图5与其他图示中所显示的多种布尔逻辑功能对应有布尔门(Booleangate)(例如AND门、0R门),而这些布尔门可进行合成或客制化设计;不过,此逻辑500亦可包含其他已知可执行所示布尔逻辑功能(例如:线或(wired-OR))的硬件元件,并且可以由多种逻辑类型,包含静态或动态逻辑,来加以实现。本实施例可以同时无效化TLB206的区域与/或全域地址转译,不论其底下的处理技术或逻辑类型为何。[0061]此逻辑500具有比较L00KUP_LVAL272与项目300的LVAL302的第一比较功能522,其输出作为布尔0R功能528的二个输入中的第一个输入。此逻辑500并具有比较L00KUP_GVAL274与项目300的GVAL304的第二比较功能524,而其输出作为前述布尔OR功能528的第二个输入。布尔0R功能528的输出作为一布尔AND功能532的二个输入中的第一个输入。而此逻辑500并具有比较L00KUP_ADDR276与项目300的VPADDR306的第三比较功能522,其输出作为布尔AND功能532的第二个输入。布尔AND功能532所输出的信号就是命中指标,在L00KUP_LVAL272与LVAL302—致、L00KUP_GVAL274与GVAL304—致且L00KUP_ADDR276与VPADDR306—致时,命中指标为真,否则即为假。[〇〇62]在图5中可以观察到,TLB206内的各个区域地址转译由其相对应的LVAL302来进行确认,LVAL即为其区域内容标识符(localcontextidentifier)的代表,而各个全域地址转译由其相对应的GVAL304来进行确认,GVAL即为其全域内容标识符(globalcontextidentifier)的代表。L00KUP_LVAL272与L00KUP_GVAL274包含在TLB206的查找中。不过,在L00KU_ADDR276与VPADDR306—致的情况下,为了使命中发生,只需要L00KUP_LVAL272与LVAL302—致,或是L00KUP_GVAL274与GVAL304—致,而不需要二者,即整个标识符(tag),都一致。因此,如同对应于图4与图5的操作所能观察到,为了使用来自TLB206的地址转译,从VPADDR306转译出PPADDR308所使用的地址转译内容,必须是与CUR_LID242相关联的地址转译内容或是多个与CUR_GID244相关联的地址转译内容的其中之一。[0〇63]现在请参照图6,此图是一方块示意图显示一逻辑600,用以无效化TLB206(请参照图2)的项目300(请参照图3)的LVAL比特向量302的比特。图6显示LVAL比特向量302的单一个比特。此比特的储存装置可以是一正反器(flip-flop)、一存储器阵列比特胞(memoryarraybitcell)、或其他比特储存装置。布尔求反(invert或NOT)功能604接收INV_L0CAL比特向量232的比特,此比特对应于LVAL比特向量302的比特。举例来说,用于LVAL比特向量302的比特[2]的布尔求反功能604接收INV_L0CAL比特向量232的比特[2]。比特求反功能604的输出作为布尔AND功能606的二个输入中的第一个输入。布尔AND功能606并接收LVAL比特向量302的当前值做为其第二个输入。布尔AND功能606的输出开始做为LVAL比特向量302的新值。因此,映射模块204可通过设定INV_L0CAL比特向量232的相对应比特,来清除LVAL比特向量302内的任何比特。[〇〇64]虽然图6所显示的逻辑600仅用于单一个比特,不过在TLB206内可对此逻辑600进行复制,以适用到各个项目300的LVAL比特向量302的各个比特。通过设定INV_L0CAL比特向量232的比特,映射模块204可针对TLB206的每个项目300,清除其LVAL比特向量302的相对应比特。因为对于各别的地址转译内容的所有区域地址转译而言,相对应的LVAL302的各个比特位置均为有效比特,因此,无效化逻辑600能够使映射模块204同时无效化TLB206内用于各别的地址转译内容的所有区域地址转译。此方式会比依序无效化TLB206的所有区域地址转译的处理方式来的快。而随着TLB206增大(例如:具有一大型末层(last-level)的TLB206),所能节省的时间也变得更为明显。[〇〇65]对于各个项目的GVAL比特向量304的各个比特,TLB206具有类似的逻辑600来处理,不过,此逻辑600接收INV_GL0BAL比特向量234的比特,而非INV_L0CAL比特向量232的比特。通过设定INV_GL0BAL比特向量234的比特,映射模块204可针对TLB206的每个项目300,清除其GVAL比特向量304的相对应比特。因为对于各别的地址转译内容的所有全域地址转译而言,相对应的GVAL304的各个比特位置均为有效比特,因此,无效化逻辑600能够使映射模块204同时无效化TLB206内用于各别的地址转译内容的所有全域地址转译,而具有与前述无效化区域地址转译相同的优点。[〇〇66]虽然在图中并未显示,不过,此逻辑600可具有其他功能来来设定或清除LVAL/GVAL比特向量302/304的比特。举例来说,为了配合图4的步骤408与412的需求,存储器子系统122可将此比特写为二元状态(binarystate)的其中之一。此外,存储器子系统122可清除TLB206的一特别集合(set)与路(way)的LVAL比特302,如同图22与图23所示的步骤2214或步骤2308所需的处理过程。就一较佳实施例而言,在比特302前方设有多工功能(未图示),其多个输入的其中之一接收布尔AND功能606的输出,而其他输入则是接收其他前述逻辑的输出。[〇〇67]值得注意的是,在必要的时候,可通过分别设定INV_L0CAL比特向量232与INV_GLOBAL比特234向量的比特,同时清除LVAL302与GVAL304的比特。举例来说,存储器子系统122可在步骤1828、2318、2326、2408与2414中执行此操作。最后,在必要的时候,可通过分别设定INV_L0CAL比特向量232与INV_GL0BAL比特向量234的所有比特,同时清除LVAL302与GVAL304的所有比特。举例来说,存储器子系统122可在步骤1602、1914与2004中执行此操作。[〇〇68]现在请参照图7,此图是一方块示意图显示图1的处理器100内的一控制寄存器700。在一实施例中,微码106可写入此控制寄存器700以无效化TLB206的地址转译。此控制寄存器700包含INV_L0CAL比特702、INV_GL0BAL比特704、INV_ALL_L0CALS比特706、INV_ALL_GL0BALS比特708与INV_ALL比特712。映射模块204响应于这些比特的设定所执行的操作将会在后续图8中进行描述。[〇〇69]现在请参照图8,此图是一流程图显示映射模块204响应于图7所示的控制寄存器700中各个不同比特的设定所执行的操作。此流程始于步骤802。[0070]在步骤802中,此控制寄存器700中一个或多个比特被设定,例如被微码106设定。接下来前进至步骤804。[〇〇71]在决策步骤804中,若是INV_L0CAL比特702被设定,流程会前进至步骤806;否则就会前进至决策步骤814。[〇〇72]在步骤806中,映射模块204对⑶R_LID242解码以产生一独热(one-hot)比特向量值,并主张此位于INV_L0CAL比特向量232上的数值。对TLB206的任何项目300,此数值清除LVAL302中对应于INV_L0CAL比特向量232中被设定比特的比特,以无效化TLB206内使用当前地址转译内容进行转译的所有区域地址转译。接下来前进至决策步骤814。[〇〇73]在决策步骤814中,若是INV_GL0BAL比特704被设定,流程会前进至步骤816;否则就会前进至决策步骤824。[〇〇74]在步骤816中,映射模块204对CUR_GID244解码以产生一独热比特向量值,并主张此位于INV_GL0BAL比特向量234上的数值。对TLB206的任何项目300,此数值清除GVAL304中对应于INV_GL0BAL比特向量234中被设定比特的比特,以无效化TLB206内使用当前地址转译内容进行转译的所有全域地址转译。接下来前进至决策步骤824。[〇〇75]在决策步骤824中,若是INV_ALL_L0CALS比特706被设定,流程会前进至步骤826;否则就会前进至决策步骤834。[〇〇76]在步骤826中,映射模块204会主张所有INV_L0CAL比特向量232的比特,而对于TLB206的任何项目300,这些比特会清除LVAL302的所有比特,而无效化TLB206内使用任何地址转译内容进行转译的所有区域地址转译。接下来前进至决策步骤834。[〇〇77]在决策步骤834中,若是INV_ALL_GLOBALS比特708被设定,流程会前进至步骤836;否则就会前进至决策决策步骤844。[〇〇78]在步骤836中,映射模块204会主张INV_GL0BAL比特向量234的所有比特,而对于TLB206的任何项目300,这些比特会清除GVAL304的所有比特,而无效化TLB206内使用任何地址转译内容进行转译的所有全域地址转译。接下来前进至决策步骤844。[〇〇79]在决策步骤844中,若是INV_ALL比特712为设定,流程会前进至步骤846;否则流程就会终止。[0080]在步骤846中,映射模块204会主张INV_L0CAL比特向量232与INV_GL0BAL比特向量234的所有比特,而对于TLB206的任何项目300,这些比特会清除LVAL302与GVAL304的所有比特,而无效化TLB206内使用任何地址转译内容进行转译的所有地址转译。此流程终止于此。[0081]现在请参照图9,此图是一方块示意图详细显示图2的区域内容表212。各个项目包含一有效比特906、一全域内容标识符(globalcontextidentifier,GID)904、一区域内容标识符(localcontextidentifier,LID)902、一进程内容标识符(processcontextidentifier,PCID)908与一地址转译内容基址(addresstranslat1ncontextbaseaddress,ATCB)912。对于区域内容表212的各个项目,GID904会指向图10的全域内容表214中具有匹配的GID1004数值的项目。映射模块204确保区域内容表212的各个有效项目都具有一唯一的LID902数值,而全域内容表214的各个有效项目都具有一唯一的GID1004数值。举例来说,就一x86指令集架构而言,PCID908对应于一x86的PCID而ATCB912对应于CR3寄存器中设定页目录基址(pagedirectorybaseaddress)的比特[63:12]。在一实施例中,CR3寄存器的比特[63:36]位被使用。在图9的实施例中,区域内容表212包含四个项目而各个LID902均为二比特编码值,即表示非架构区域内容标识符空间(11〇11-architecturallocalcontextidentifierspace)的大小为四。在一实施例中,亦表不同时至多四个地址转译内容的地址转译可以在TLB206内生效。不过,本发明并不限于此,具有不同数量项目与LID902比特的实施例亦可适用于本发明。在一实施例中,映射模块204通过清除有效比特906、对区域内容表212的各个项目的LID902指定唯一值、并使剩下的字段归零,来开始区域内容表212的运作。在一实施例中,映射模块204使区域内容表212的项目维持在一推迭状态,其中置顶(topmost)的项目为最近最常使用(mostrecentlyused)的项目,而置底(bottom)的项目为最近最少使用(leastrecentlyused)的项目。最近最少使用(置底)的项目会被重新配置。映射模块204通过将一项目置顶来使其为最近最常使用的项目,并在必要时下移其他项目。区域内容表212与其字段的操作在后续其他图示中会有更详细的说明。[〇〇82]现在请参照图10,此图是一方块示意图详细显示图2的全域内容表214。各个项目包含一有效比特1006、一全域内容标识符(globalcontextidentifier,GID)1004、一虚拟处理器标识符(virtualprocessoridentifier,VPID)1008与一扩展页表指针(extendedpagetablepointer,EPTP)1012。举例来说,就一x86指令集架构而言,VPID1008对应于一x86VMX虚拟处理器标识符(VPID),而EPTP1012对应于虚拟机器控制结构(virtualmachinecontrolstructure,VMCS)特定的VMXEPTP。在图10的实施例中,全域内容表214包含四个项目而各个GID1004均为二比特编码值,即表示非架构全域内容标识符空间(non-architecturalglobalcontextidentifierspace)的大小为四。不过,本发明并不限于此,具有不同数量项目与GID904比特的实施例亦可适用于本发明。在一实施例中,映射模块204通过清除有效比特1006、对全域内容表214的各个项目的GID1004指定唯一值、并使剩下的字段归零,来开始全域内容表214的运作。在一实施例中,映射模块204使全域内容表214的项目维持在一类似于前述区域内容表212的推迭状态。全域内容表214与其字段的操作在后续其他图示中会有更详细的说明。由本文描述可以发现,LID与GID的关联状态会随着处理器100执行的操作而改变。举例来说,在图9与图10的实施例中,一个给定的GID可能有一个到四个相关联的LID。不过,若是多于一个LID关联至一个GID,就会减少当前生效的GID的数量。举例来说,若是各个GID具有两个相关联的LID,就只会有两个GID生效。[〇〇83]在x86指令集架构的实施例中,在非虚拟机扩展(non-VMX)线性地址空间的情况下,VPID与EPTP会被设定为零;而在虚拟机扩展主机(VMXhost)的情况下,VPID与EPTP会被设定为零。因此,在x86指令集架构的一实施例中,映射模块204会将全域表214的一项目(置顶项目、项目零)视为特殊项目,因为此项目总是有效(即有效(V)比特1006在一开始会赋予一设定值,并且始终维持在设定状态)、从不会被取代(例如:此项目绝不会是最近最少使用项目)以及总是保持在VPID1008与EPTP1012被设为零的情况。在LID的数量有限但又需要将大量地址转译内容映射置这些LID的情况下,可以减少需要执行的TLB206地址转译无效化。在一实施例中,区域内容表212与全域内容表214被保留在处理器100的一私有存储器(PRAM)内。[〇〇84]现在请参照图11,此图是一流程图显示图1的处理器100执行指令使处理器100的架构特征失效的操作,而此处理器1〇〇支持多个进程内容标识符(processcontextidentifier)。此流程始于步骤1102。[〇〇85]在步骤1102中,处理器100遭遇到一个使处理器100的架构特征失效的指令。此处理器100支持多进程内容标识符。举例来说,在X86指令集架构的实施例中,此指令可以是MOVCR4指令,其可清除PCIDE比特,而使X86PCID特征失效。接下来前进至步骤1104。[〇〇86]在步骤1104中,响应于在步骤1102中遭遇到的指令,映射模块204在区域内容表212寻找所有具有非零PCID值的项目。接下来前进至步骤1106。[〇〇87]在步骤1106中,对于在步骤1104于区域内容表212内找到的各个项目,映射模块204会(1)无效化TLB206内,关联于区域内容表212匹配项目的LID902的区域地址转译(例如:通过解码LID902并将此解码值用于INV_L0CAL比特向量232);(2)无效化此区域内容表212的匹配项目。此实施例假定PCID为零是一有效值,亦即当PCID特征失效时,PCID为零。如此即可使与PCID为零有关的TLB206地址转译维持完好。接下来前进至步骤1106。[〇〇88]现在请参照图12,此图是一流程图显示图1的处理器100执行指令以改变当前地址转译内容的操作。此流程始于步骤1202。[〇〇89]在步骤1202中,处理器100遭遇到一个改变当前地址转译内容的指令。举例来说,在x86指令集架构的实施例中,此指令可以是MOVCR3指令。接下来前进至步骤1204。[0090]在步骤1204中,响应于在步骤1202中遭遇到的指令,在一定条件出现的情况下,处理器100会作为一虚拟机器监视器(hypervisor)。在一实施例中,此指令由微码106所实现。举例来说,在x86指令集架构的实施例中,虚拟机器监视器是VMX主机,而条件为一个VMX客户(guest)执行MOVCR3指令,并且响应于此MOVCR3指令,存在错误或VMX控制标识符VM退出。接下来前进至步骤1206。[0091]在步骤1206中,对一例程(routine)(在此称为M0V_CR3())进行呼叫(call)。此例程会在图13加以说明。需要理解的是,虽然步骤1206的操作称为对于例程(以及本文所述的其他操作)的呼叫,在图11至图25所描述的功能可以利用硬件、微码、或是其组合来实现。此流程终止于步骤1206。[〇〇92]现在请参照图13,此图是一流程图,显示图1的处理器100执行图12的步骤1206(以及图19与图21的步骤1918与2106)所呼叫的M0V_CR3()例程1300的操作。此流程始于步骤1304。[〇〇93]在步骤1304中,映射模块204在区域内容表212寻找PCID值的一有效匹配作为M0V_CR3〇例程1300的输入。当例程在步骤1206被呼叫后,PCID输入值就会是步骤1202的指令所特定的值。当例程在步骤1918或在步骤2106被呼叫后,PCID输入值就会是虚拟机器监视器的PCID值,而在x86VMX的实施例中,此数值为零。接下来前进至步骤1306。[〇〇94]在步骤1306中,映射模块204确认步骤1304是否存在匹配。若是,流程前进至步骤1322;否则就前进至步骤1308。[0095]在步骤1308中,呼叫ALL0CATE_L0CAL_C0NTEXT()例程。此例程会在图14加以说明。接下来前进至步骤1312。[〇〇96]在步骤1312中,传递至M0V_CR3〇例程的CR3寄存器输入值被载入架构寄存器CR3。在步骤1206呼叫例程后,CR3输入值就会是由步骤1202的指令所特定的值。当例程在步骤1918或在步骤2106被呼叫后,CR3输入值就会是虚拟机器监视器的CR3值。而在非x86的实施例中,则是载入类似于CR3寄存器的架构寄存器。接下来前进至步骤1314。[〇〇97]在步骤1314中,映射模块204利用步骤1308配置的区域内容表212项目的LID902与GID904,分别更新⑶R_LID242与⑶R_GID244。接下来,前进至步骤1316,流程会回到M0V_CR3()例程被呼叫的时候。[〇〇98]在步骤1322中,映射模块204将区域内容表212的匹配项目(即步骤1304找到的项目)作为最近最常使用项目。接下来前进至步骤1324。[〇〇99]在步骤1324中,映射模块204利用区域内容表212的匹配项目的LID902与GID904,分别更新CUR_LID242与CUR_GID244。接下来前进至决策步骤1326。[0100]在决策步骤1326中,映射模块204确认所呼叫的M0V_CR3〇例程是否呼应VM进入或退出。若是,流程前进至决策步骤1328;否则就前进至步骤1334。[0101]在决策步骤1328中,映射模块204确认VPID特征是否开启。若是,前进至步骤1322,流程会回到M0V_CR3〇例程被呼叫的时候;否则就前进至步骤1334。[0102]在步骤1334中,若是寄存器CR3的比特63的值为零,映射模块204会无效化TLB206中与⑶R_LID242值有关的区域地址转译(例如:通过解码⑶R_LID242并将解码值用于INV_L0CAL比特向量232)。也就是说,映射模块204会无效化用于当前地址转译内容的区域地址转译。接下来,前进至步骤1336,流程会到M0V_CR3〇例程被呼叫的时候。[0103]现在请参照图14,此图是一流程图显示图1的处理器100执行图13的步骤1308(以及图16与图17的步骤1606与1722)所呼叫的ALL0CATE_L0CAL_C0NTEXT()例程1400的操作。此流程始于步骤1404。[0104]在步骤1404中,映射模块204确认区域内容表212的最近最少使用项目来进行配置。不过,本发明并不限于此,使用最近最少使用(LRU)以外的其他运算方式来进行取代的实施例亦可适用于本发明。接下来前进至步骤1406。[〇1〇5]在步骤1406中,映射模块204无效化TLB206内与步骤1404配置的区域内容表212项目的LID902有关的区域地址转译。也就是说,此映射模块204会无效化用于被逐出(evicted)的地址转译内容的区域地址转译。接下来前进至步骤1408。[〇1〇6]在步骤1408中,映射模块204计算区域内容表212的项目的新值。特别是,此映射模块204会:保留LID902字段的数值,亦即,此新项目会承接其所要取代的项目的LID902值;将⑶R_GID244值填入GID904字段,以使区域内容表212的项目连结至适当的全域内容表214的项目;以及在PCID908与ACTB912的字段中,填入传递至ALL0CATE_L0CAL_C0NTEXT〇例程的相对应数值。若是此例程响应于一RSM(请参照图21)而从M0VT0CR3VPID、M0VT0CR3N0VPID或M0V_CR3()中呼叫,PCID与ACTB的值就会是由SMI中断的进程的值。若是此例程响应于一VM项目(请参照图15)而从M0VT0CR3VPID或M0VT0CR3N0VPID中呼叫,PCID与ACTB的值就会是由接收到控制权的虚拟处理器的VMCS取得的值。若是此例程响应于一VM退出(exit)(请参照图19)而从M0V_CR3()呼叫,PCID与ACTB的值就会是虚拟机器监视器的值。若是此例程响应于一MOVCR3指令(请参照图12)而从M0V_CR3()呼叫,PCID与ACTB的值就会是由指令特定的值。映射模块204接下来会将计算出来的新值载入步骤1404所配置的项目,并将其配置为最近最常使用项目。接下来,在步骤1412,流程会到ALLOCATE_LOCAL_CONTEXT0例程被呼叫的时候。[0107]现在请参照图15,此图是一流程图显示图1的处理器100在虚拟机器监视器至客户的移转过程的操作。此流程始于步骤1502。[0108]在步骤1502中,发生虚拟机器监视器至客户的移转。举例来说,在x86指令集架构的实施例中,此移转被称为VM进入(entry),会响应于VMXVMLAUNCH或VMRESUME指令的执行而发生。接下来前进至步骤1504。[〇1〇9]在步骤1504中,映射模块204从VMCS取得新的PCIDE值与CR3寄存器的新值,此新值包含一新的PCID值。接下来前进至步骤1506。[〇11〇]在步骤1506中,映射模块204确认VIH)特征是否开启。若是,流程前进至步骤1508;否则就前进至步骤1512。[0111]在步骤1508中,此流程移转至图17所描述的例程M0VT0CR3VPID。[0112]在步骤1512中,此流程移转至图16所描述的例程M0VT0CR3N0VPID。[0113]现在请参照图16,此图是一流程图显示图1的处理器100执行例程M0VT0CR3N0VPID1600的操作。此流程始于步骤1602。[0114]在步骤1602中,映射模块204无效化TLB206的所有地址转译。接下来流程前进至步骤1604。[0115]在步骤1604中,映射模块204使区域内容表212与全域内容表214开始运作。此外,映射模块204将全域内容标识符的一暂时值设定为零,以传递给ALL0CATE_L0CAL_C0NTEXT0例程(请参照图14)。接下来流程前进至步骤1606。[0116]在步骤1606中,映射模块204呼叫ALL0CATE_L0CAL_C0NTEXT()例程。接下来前进至步骤1608。[0117]在步骤1608中,架构寄存器CR3中载入传递至ALL0CATE_L0CAL_C0NTEXT()例程的CR3寄存器输入值。此例程的数值将会是由SMI中断的进程的值(RSM的实施例)或是从接收到控制权的虚拟处理器的VMCS取得的值(VM进入的实施例)。接下来前进至步骤1612。[0118]在步骤1612中,映射模块204以零值更新CUR_LID242与⑶R_GID244。此流程终止于此。[0119]现在请参照图17,此图是一流程图显示图1的处理器100执行例程M0VT0CR3VPID1700的操作。流程始于步骤1712。[0120]在步骤1712中,映射模块204呼叫图18所描述的例程ALL0CATE_GL0BALJ:0NTEXT0。接下来前进至步骤1714。[〇121]在步骤1714中,若是PCIDE比特为零,映射模块204就会将新的PCID值设定为零。接下来前进至步骤1716。[0122]在步骤1716中,映射模块204在区域内容表212寻找由步骤1712的呼叫步骤取得的全域内容标识符与新的PCID值的一有效匹配。此新的PCID值由步骤1504或是图21的步骤2116恢复(resume)控制的VMX客户的VMCS取得。接下来前进至决策步骤1718。[0123]在决策步骤1718中,若是在步骤1716中找到匹配项目,流程就会前进至步骤1724;否则就会前进至步骤1722。[0124]在步骤1722中,映射模块204呼叫ALL0CATE_L0CAL_C0NTEXT()例程(请参照图14)。接下来前进至步骤1726。[0125]在步骤1724中,映射模块204将区域内容表212的匹配项目作为最近最常使用项目。此映射模块204并使新的区域内容标识符等于区域内容表212的匹配项目的LID902。接下来前进至步骤1726。[0126]在步骤1726中,架构寄存器CR3中载入CR3寄存器输入值。此新的CR3数值由步骤1504或是图21的步骤2116恢复(resume)控制的VMX客户的VMCS取得。接下来前进至步骤1728〇[0127]在步骤1728中,映射模块204以步骤1712取得的新的全域内容标识符更新⑶R_GID244并以步骤1722或步骤1724取得的新的区域内容标识符更新⑶R_LID242。此流程终止于此。[0128]现在请参照图18,此图是一流程图显示图1的处理器100执行图17的步骤1712所呼叫的ALL0CATE_GL0BAL_C0NTEXT()例程1800的操作。此流程始于步骤1802。[0129]在步骤1802中,映射模块204从赋予控制权的VMX客户的VMCS取得VPID与EPTP。接下来前进至步骤1804。[〇13〇]在步骤1804中,若是EPT特征关闭,映射模块204就会将EPTP设为零。接下来前进至步骤1806。[0131]在步骤1806中,映射模块204从全域内容表214寻找VIPD与EPTP的一有效匹配。在前文图10所描述的实施例中,置顶项目为特殊项目,而此步骤只会寻找非特殊项目,因此,此特殊项目不会被重新配置,也不会与VMX客户建立关联。接下来前进至步骤1808。[0132]在步骤1808中,映射模块204确认步骤1806是否找到匹配。若是,流程前进至步骤1812;否则就前进至步骤1822。[0133]在步骤1812中,映射模块204将全域内容表214的匹配项目作为最近最常使用项目。接下来前进至步骤1814。[0134]在步骤1814中,映射模块204以此全域内容表214的匹配项目的GID1004值更新CUR_GID244。接下来,在步骤1816,此流程会回到呼叫ALL0CATE_GL0BAL_C0NTEXT()例程的时候。[0135]在步骤1822中,映射模块204确认全域内容表214的最近最少使用项目,以有效逐出此项目。然后,此映射模块204会对将被逐出的项目的GID1004值指定一个变数EVICTED_GID。接下来前进至步骤1824。[0136]在步骤1824中,映射模块204计算全域内容表214的项目的新值。特别是,映射模块204会以EVICTED_GID填入GID字段1004,并以传递至ALL0CATE_GL0BAL_C0NTEXT()的相对应数值填入VPID1008与EPTP1012。这些数值将会是由SMI中断的进程的值(RSM的实施例)或是从接收到控制权的虚拟处理器的VMCS取得的值(VM进入的实施例)。然后,映射模块204会以计算出来的新值载入在步骤1822中配置的项目。然后,映射模块204会将此项目设为最近最常使用项目。接下来前进至步骤1826。[0137]在步骤1826中,映射模块204在区域内容表212寻找EVICTED_GID的一有效匹配。接下来前进至步骤1828。[0138]在步骤1828中,对于步骤1826在区域内容表212找到的各个项目,映射模块204会(1)无效化TLB206中,与匹配项目的LID902有关的区域地址转译;(2)无效化TLB206中,与EVICTED_GID有关的全域地址转译(例如:通过解码EVICTED_GID并将此解码值用于INV_GLOBAL比特向量234);(3)无效化区域内容表212的匹配项目。接下来,在步骤1832中,流程会回到呼叫ALL0CATE_GL0BAL_C0NTEXT()例程的时候。[0139]现在请参照图19,此图是一流程图显示图1的处理器100在由客户至虚拟机器监视器的移转过程的操作。此流程始于步骤1902。[0140]在步骤1902中,发生客户至虚拟机器监视器的移转。举例来说,在x86指令集架构的实施例中,此移转被称为VM退出(exit),会响应于一定指令的执行(VM退出需要仰赖对于控制字段的设定)与非根虚拟化操作(VMXnon-rootoperat1n)的一定事件,如例外事件(except1n)、中断(interrupt)、任务切换(taskswitch)与中断计时器触发(preempt1ntimertick)。接下来前进至步骤1904。[0141]在步骤1904中,映射模块204从VMCS取得CR3寄存器的新值,此新值包含一新的PCID值,此数值为虚拟机器监视器的PCID值。接下来前进至步骤1906。[0142]在步骤1906中,映射模块204会使EPT特征失效(因为虚拟机器监视器不需使用此特征)、将暂时全域内容标识符的变数与VPID设为零,这些数值是与虚拟机器监视器有关的数值。接下来前进至步骤1908。[0143]在步骤1908中,架构寄存器CR3内载入步骤1904所取得的CR3寄存器值。接下来前进至决策步骤1912。[0144]在决策步骤1912中,映射模块204确认VIPD特征是否开启。若是,流程前进至步骤1918;否则就前进至步骤1914。[0145]在步骤1914中,映射模块204无效化TLB206的所有地址转译。接下来前进至步骤1916〇[0146]在步骤1916中,映射模块204使区域内容表212开始运作。接下来前进至步骤1918。[0147]在步骤1918中,此流程呼叫M0V_CR3〇例程(请参照图13)。此流程终止于此。[0148]现在请参照图20,此图是一流程图显示图1的处理器100进入系统管理模式(systemmanagementmode,SMM)的移转过程的操作。此流程始于步骤2002。[0149]在步骤2002中,发生进入系统管理模式的移转过程,这也称为SMM进入。举例来说,在x86指令集架构的实施例中,此移转会通过一系统管理中断(systemmanagementinterrupt,SMI)发生。接下来前进至步骤2004。[0150]在步骤2004中,映射模块204无效化TLB206的所有地址转译。接下来前进至步骤2006〇[0151]在步骤2006中,映射模块204使区域内容表212与全域内容表214开始运作。接下来前进至步骤2008。[0152]在步骤2008中,映射模块204以零值更新CUR_LID242与⑶R_GID244。此流程终止于此。[0153]现在请参照图21,此图是一流程图显示图1的处理器100离开SMM的移转过程的操作。此流程始于步骤2102。[0154]在步骤2102中,发生离开SMM的移转过程。举例来说,在x86指令集架构的实施例,在执行一返回原来模式(returnfromSMM,RSM)指令时,S卩会发生此移转。接下来前进至决策步骤2104。[0155]在决策步骤2104中,映射模块204确认VMX特征是否关闭。若是,流程前进至步骤2106;否则就前进至决策步骤2112。[0156]在步骤2106中,此流程呼叫M0V_CR3()例程(请参照图13)。接下来前进至步骤2108〇[0157]在步骤2108中,此流程跳跃(jump)至M0VT0CR3N0VPID(请参照图16)。此流程终止于此。[0158]在决策步骤2112中,映射模块204确认此返回原来模式是否为返回至虚拟机器监视器,在x86指令集架构的实施例中,即为虚拟机扩展主机(VMXhost)。若是,流程前进至步骤2116;否则就前进至决策步骤2114。[0159]在决策步骤2114中,映射模块确认VPID特征是否开启。若是,流程前进至步骤2116;否则流程就前进至步骤2108。[0160]在步骤2116中,此流程跳跃至M0VT0CR3VPID(请参照图17)。此流程终止于此。[0161]现在请参照图22,此图是一流程图显示处理器100执行指令以无效化TLB206中与一进程内容标识符有关的地址转译的操作。此流程始于步骤2202。[0162]在步骤2202中,处理器100遭遇到一个指令,会无效化TLB206中与一进程内容标识符有关的地址转译。举例来说,在x86指令集架构的实施例中,此指令可以是INVPCID指令。接下来前进至步骤2204。[0163]在步骤2204中,映射模块204在全域内容表214中寻找当前VPID的一有效匹配。若没有找到匹配,此流程就会终止。否则,映射模块204会将此全域内容表214的匹配项目的GID1004指派给一暂时变数THIS_GID。接下来前进至决策步骤2206。[0164]在决策步骤2206中,映射模块204确认指令类型(例如:x86INVPCID指令的寄存器运算元)是否为零。若是,流程前进至步骤2208;否则前进至决策步骤2216。[0165]在步骤2208中,映射模块204在区域内容表212内寻找变数THIS_GID与INVPCID指令所特定的PCID的有效匹配。接下来前进至决策步骤2212。[0166]在决策步骤2212中,映射模块204确认在步骤2208中是否找到匹配。若是,流程前进至步骤2214;否则流程就终止于此。[0167]在步骤2214中,映射模块204将步骤2208找到的区域内容表212的匹配项目的LID902指派给一暂时变数THIS_LID。然后,映射模块204无效化TLB206中,关联于变数THIS_LID并具有由INVPCID指令所特定的虚拟地址(在x86指令集架构中,即为线性地址)的区域地址转译。TLB206并具有一目录输入,选择TLB206的一列(row)执行读取(read)或写入(write)。在一实施例中,TLB206是一多路(multipleway)集合关联快取,并具有一额外输入来特定进行读取或写入的路(way)。在一实施例中,此目录/路输入可用于特定所要无效化的项目。在一实施例中,当存储器子系统122执行一微码无效化页微指令(microcodeinvalidatepagemicroinstruct1n)以特定一虚拟地址,此存储器子系统122会在TLB206中检测此虚拟地址的匹配,并接收命中此虚拟地址的目录/路。此外,存储器子系统122会利用一最近最少使用项目的目录/路,将一项目配置于TLB206内。此流程终止于步骤2214〇[0168]在决策步骤2216中,映射模块204确认类型是否为一。若是,流程前进至步骤2218;否则就前进至决策步骤2226。[0169]在步骤2218中,映射模块204在区域内容表212内寻找THIS_GID与由INVPCID指令特定的PCID的有效匹配。接下来前进至决策步骤2222。[0170]在决策步骤2222中,映射模块204确认在步骤2218中是否找到匹配。若是,流程前进至步骤2224;否则流程终止。[0171]在步骤2224中,映射模块204将步骤2218中找到的区域内容表212的匹配项目的LID902指派给一暂时变数THIS_LID。然后,此映射模块204无效化TLB206内关联于变数THIS_LID的区域地址转译。此流程终止于步骤2224。[0172]在决策步骤2226中,映射模块204确认类型是否为二。若是,流程前进至步骤2228;否则流程就前进至决策步骤2236。[0173]在步骤2228中,映射模块204无效化TLB206内关联于变数THIS_GID的全域地址转译。接下来前进至步骤2238。[0174]在决策步骤2236中,映射模块204确认类型是否为三。若是,流程前进至步骤2238;否则前进至步骤2248。[0175]在步骤2238中,映射模块204在区域内容表212内寻找THIS_GID的有效匹配。对于区域内容表212中每一个找到的项目,映射模块204会(1)将区域内容表212的匹配项目的LID902指派为一暂时变数THIS_LID;以及(2)无效化TLB206中,关联于变数THIS_LID的区域地址转译。此流程终止于步骤2238。[0176]在步骤2248中,映射模块204会引起处理器100错误(fault)的产生,就x86指令集架构的实施例而言,即为一般保护错误(generalprotect1nfault)。此流程终止于步骤2248〇[0177]现在请参照图23A与图23B(整体称为图23),此图是一流程图显示处理器100执行指令以无效化TLB206中关联于一虚拟处理器标识符(virtualprocessoridentifier)的地址转译的操作。此流程始于步骤2302。[0178]在步骤2302中,处理器100遭遇到一个指令,会无效化TLB206中与一虚拟处理器标识符有关的地址转译。举例来说,在x86指令集架构的实施例中,此指令可以是INVVPID指令。接下来前进至决策步骤2304。[0179]在决策步骤2304中,映射模块204确认指令类型(例如:x86INVVPID指令的寄存器运算元)是否为零。若是,流程前进至步骤2306;否则前进至决策步骤2314。[0180]在步骤2306中,映射模块204在全域内容表214内寻找当前VPID的有效匹配。若是未找到匹配,此流程终止;否则,映射模块204会将全域内容表214内的匹配项目的GID1004指派给一暂时变数THIS_GID。接下来前进至步骤2308。[0181]在步骤2308中,映射模块204无效化关联于变数THIS_GID的全域地址转译。此映射模块204并于区域内容表212内寻找变数THIS_GID的有效匹配。对于区域内容表212中找到的各个匹配项目,映射模块204会(1)将区域内容表212的匹配项目的LID902指派为一暂时变数THIS_LID;以及(2)无效化TLB206内,关联于变数THIS_LID且具有特定于INVPCID指令内的虚拟地址(在x86指令集架构的实施例中,即为线性地址)的区域地址转译。此流程终止于步骤2308。[0182]在决策步骤2314中,映射模块204确认指令类型是否为一。若是,流程前进至步骤2316;否则就前进至决策步骤2324。[0183]在步骤2316中,映射模块204在全域内容表214内寻找当前VPID的有效匹配。若未找到匹配,此流程终止。否则,映射模块204会将全域内容表214内的匹配项目的GID1004指派给一暂时变数THIS_GID。接下来前进至步骤2318。[0184]在步骤2318中,映射模块204无效化关联于变数THIS_GID的全域地址转译。此映射模块204并于区域内容表212中寻找变数THIS_GID的有效匹配。对于区域内容表212中找到的各个匹配项目,映射模块204会(1)将区域内容表212的匹配项目的LID902指派为一暂时变数THIS_LID;以及(2)无效化TLB206内,关联于变数THIS_LID的区域地址转译。此流程终止于步骤2318。[0185]在决策步骤2324中,映射模块204确认指令类型是否为二。若是,流程前进至步骤2326;否则流程前进至决策步骤2334。[0186]在步骤2326中,映射模块204在全域内容表214中寻找每个非零VPID值的有效匹配。若未找到匹配,此流程终止;否则,对于全域内容表214的各个匹配项目,映射模块204会:(1)将全域内容表214的匹配项目的GID1004指派为一暂时变数THIS_GID;(2)无效化TLB206内,关联于变数THIS_GID的全域地址转译;以及(3)在区域内容表212中寻找变数THIS_GID的有效匹配,并且对于区域内容表212中各个找到的匹配项目,(A)将区域内容表212的匹配项目的LID902指派为一暂时变数THIS_LID,以及(B)无效化TLB206内,关联于变数THIS_LID的区域地址转译。此流程终止于步骤2326。[0187]在决策步骤2334中,映射模块204确认指令类型是否为三。若是,流程前进至步骤2336;否则就前进至步骤2342。[0188]在步骤2336中,映射模块204在全域内容表214内寻找当前VPID的有效匹配。若未找到匹配,此流程终止;否则就前进至步骤2338。[0189]在步骤2338中,映射模块204在区域内容表212内寻找THIS_GID的有效匹配。对于区域内容表212中各个匹配项目,映射模块204会(1)将此区域内容表212的匹配项目的LID902指派为一暂时变数THIS_LID;以及(2)无效化TLB206中,关联于变数THIS_LID的区域地址转译。此流程终止于步骤2338。[0190]在步骤2342中,映射模块204会引起处理器100错误的产生,就x86指令集架构的实施例而言,即为一般保护错误(generalprotect1nfault)。此流程终止于步骤2342。[0191]现在请参照图24,此图是一流程图显示处理器100执行指令以无效化TLB206中关联于一扩展页表指针(extendedpagetablepointer)的地址转译的操作。此流程始于步骤2402。[0192]在步骤2402中,处理器100遭遇到一个指令,会无效化TLB206中与一扩展页表指针有关的地址转译。举例来说,在x86指令集架构的实施例中,此指令是一INVEPT指令。接下来前进至决策步骤2404。[0193]在决策步骤2404中,映射模块204确认指令类型(例如:x86INVEPT指令的寄存器运算元)是否为一。若是,流程前进至步骤2406;否则前进至决策步骤2412。[0194]在步骤2406中,映射模块204在全域内容表214内寻找于INVEPT指令内特定的EPTP的有效匹配。若未找到匹配,此流程终止;否则,映射模块204会将全域内容表214的匹配项目的GID1004指派为一暂时变数THIS_GID。接下来前进至步骤2408。[0195]在步骤2408中,映射模块204无效化关联于变数THIS_GID的全域地址转译。此映射模块204并于区域内容表212内寻找变数THIS_GID的有效匹配。对于区域内容表212内各个找到的匹配项目,此映射模块204会(1)将此区域内容表212匹配项目的LID902指派为一暂时变数THIS_LID;以及(2)无效化TLB206中,关联于变数THIS_LID的区域地址转译。此流程终止于步骤2408。[0196]在决策步骤2412中,映射模块204确认指令类型是否为二。若是,流程前进至步骤2414;否则前进至步骤2442。[0197]在步骤2414中,映射模块204在全域内容表214内寻找每个非零EPTP值的有效匹配。若未找到匹配,此流程终止;否则,对于全域内容表214的各个匹配项目,映射模块204会:(1)将全域内容表214的匹配项目的GID1004指派为一暂时变数THIS_GID;(2)无效化关联于变数THIS_GID的全域地址转译;以及(3)在区域内容表212中寻找变数THIS_GID的有效匹配,并且对于区域内容表212中各个找到的匹配项目,(A)将区域内容表212匹配项目的LID902指派为一暂时变数THIS_LID,以及(B)无效化TLB206内,关联于变数THIS_LID的区域地址转译。此流程终止于步骤2414。[0198]在步骤2442中,映射模块会引起处理器100错误的产生,就x86指令集架构的实施例而言,即为一般保护错误(generalprotect1nfault)。此流程终止于步骤2442。[0199]在前述各实施例中,区域(与全域)内容标识符空间的尺寸是一预设尺寸(例如:四),不过,本发明并不限于此。此区域(与全域)内容标识符空间的尺寸可依据所需的设计目的,效能、尺寸与功耗,而有不同。此外,本文所述的实施例对应于单一个TLB,不过,所属
技术领域
者当能理解,本文描述的机制可用于其他转译快取结构,例如分页结构快取(pagingstructurecache)。举例来说,在x86指令集架构中,即为PML4快取、PDPTE快取与PDE快取。此外,本文所述的实施例中出现的比特具有一特别的定义,如设定(set)或清除(clear)或零或一。不过,所属
技术领域
者当能理解,正逻辑(positivelogic)与负逻辑(negativelogic)的实施方式均可适用于本发明。最后,虽然本文描述多种对应于x86指令集架构的实施例,不过,本文所述的将大的架构地址转译内容空间映射至一小的非架构地址转译内容空间的机制,以及同时无效化地址转译的机制,可适用于其他指令集架构,如ARM、MIPS或Sun指令集架构。[〇2〇〇]惟以上所述者,仅为本发明的较佳实施例而已,当不能以此限定本发明实施的范围,即大凡依本发明权利要求及发明说明内容所作的简单的等效变化与修饰,皆仍属本发明专利涵盖的范围内。举例来说,软件可以执行本发明所述的装置与方法的功能、制造、形塑、模拟、描述以及/或测试等。这可由一般的程序语言(如C、C++)、硬件描述语言(HDL)包含VerilogHDL,VHDL等,或是其他既有程序来达成。此软件可以设置于任何已知的计算机可利用介质,如磁带、半导体、磁碟、光碟(如CD_R〇M、DVD-ROM等)、网络接线、无线或是其他通讯介质。此处描述的装置与方法的实施例可被包含于一半导体智财核心,例如一微处理核心(如以硬件描述语言的实施方式)并且通过集成电路的制作转换为硬件。此外,本文所描述的装置与方法亦可包含硬件与软件的结合。因此,本文所述的任何实施例,并非用以限定本发明的范围。此外,本发明可应用于一般通用计算机的微处理器装置。最后,所属
技术领域
具有通常知识者利用本发明所揭露的观念与实施例作为基础,来设计并调整出不同的结构已达成相同的目的,亦不超出本发明的范围。[0201]藉由以上较佳具体实施例之详,希望能更加清楚描述本发明的特征与精神,而并非以上述所揭露的较佳具体实施例来对本发明的范畴加以限制。相反地,其目的是希望能涵盖各种改变及具相等性的安排于本发明所欲申请的专利范围的范畴内。【主权项】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所述的处理器,还包含:一存储器子系统,对应于未命中一查找地址的该转译后备缓冲器的情形,该存储器子系统使用一当前地址转译内容来产生一新的地址转译,将该新的地址转译填入该些项目其中之一的该地址转译,并将以比特向量化表示的一当前内容标识符填入该些项目其中之一的该有效比特向量,该当前内容标识符用以识别关联于产生该查找地址的一进程的一当前地址转译内容。【文档编号】G06F12/1027GK105993004SQ201480065922【公开日】2016年10月5日【申请日】2014年11月26日【发明人】柯林.艾迪,密斯瓦纳斯.摩罕【申请人】上海兆芯集成电路有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1