CN109240950B - 处理器、区分系统管理模式条目的方法以及存储介质 - Google Patents

处理器、区分系统管理模式条目的方法以及存储介质 Download PDF

Info

Publication number
CN109240950B
CN109240950B CN201811067012.0A CN201811067012A CN109240950B CN 109240950 B CN109240950 B CN 109240950B CN 201811067012 A CN201811067012 A CN 201811067012A CN 109240950 B CN109240950 B CN 109240950B
Authority
CN
China
Prior art keywords
system management
management mode
smm
address
translation
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.)
Active
Application number
CN201811067012.0A
Other languages
English (en)
Other versions
CN109240950A (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 CN109240950A publication Critical patent/CN109240950A/zh
Application granted granted Critical
Publication of CN109240950B publication Critical patent/CN109240950B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

一种处理器、区分系统管理模式条目的方法以及存储介质。处理器包括:存储器,用于存储表示处理器是否处于系统管理模式(SMM)的SMM值;转译地址高速缓冲存储器(TAC),包括用于存储地址转译的多个条目,各条目包括SMM标识符;命中逻辑,用于将查找地址与TAC中所存储的地址转译进行比较以判断命中,仅在条目的相应SMM标识符与SMM值相匹配的情况下,才判断为命中;以及条目逻辑,用于选择TAC中的用于存储所确定的地址转译的条目,并且对TAC中的所选择的条目的SMM标识符进行编程以匹配SMM值。处理器还可包括:刷新逻辑,用于区分SMM条目;以及处理逻辑,用于在进入和/或退出SMM的情况下命令进行刷新。在进入和退出SMM的情况下非SMM条目可保持在TAC中。

Description

处理器、区分系统管理模式条目的方法以及存储介质
本申请是申请日为2015年12月1日、申请号为201510869158.7、发明名称为“处理器和区分系统管理模式条目的方法”的申请的分案申请。
技术领域
本发明通常涉及处理器的转译地址高速缓冲存储器中的条目,尤其涉及用于区分转译地址高速缓冲存储器中的系统管理模式(SMM)条目以使得能够在进入和/或退出SMM时维持非SMM条目的系统和方法。
背景技术
现代处理器支持虚拟存储器性能。虚拟存储器系统将程序所使用的虚拟地址映像到或转译成硬件所使用的物理地址以对存储器进行寻址。虚拟存储器具有如下优点:对程序隐藏物理存储器的碎片状态、便于进行程序复位位、并且允许程序看到比可用的实际物理存储器大的存储器地址空间。这些优点在利用多个程序或处理来支持处理器的分时的现代系统中特别有益。
操作系统创建并且维持在页式虚拟存储器系统中经常被称为页表的将虚拟地址映像到物理地址的存储器转译表。这些转译表可以采用表的层级体系的形式,其中这些表中的一些表将虚拟地址映像到中介表地址。在程序使用虚拟地址来访问存储器的情况下,访问这些转译表以实现虚拟地址向其物理地址的转译、通常被称为页表查找或“表查找(tablewalk)”。用以访问该转译表的额外存储器访问,将对向存储器获得程序所期望数据或指令的最终访问产生明显的延迟。
现代处理器包括一个或多个转译地址高速缓冲存储器以通过解决存储器访问和延迟问题来改善性能。转译地址高速缓冲存储器可以包括转译后备缓冲器(TLB)。TLB是对虚拟向物理的地址转译进行高速缓存、以大大降低需要表查找的可能性的处理器的硬件结构。将要转译的虚拟地址与TLB中的先前存储的虚拟地址进行比较,并且如果虚拟地址在TLB中命中(例如,在发现虚拟地址匹配的情况下),则TLB提供物理地址。相比于访问存储器中的转译表以进行表查找所需的时间,从TLB中检索物理地址所消耗的时间少得多。TLB的效率(命中率)对于处理器性能而言至关重要。
转译地址高速缓冲存储器还可以包括对页表中的一个或多个页表的信息进行高速缓存的分页结构高速缓冲存储器。例如,一些分页模式可以使用4级页映射表(PML4)、页目录指针表(PDPT)、页目录(PD)和页表(PT),而高速缓冲存储器可为这些页表中的一个或多个页表进行设置,分页结构高速缓冲存储器包含这些分页高速缓冲存储器中的任一个或多个。这样,即使在TLB中发生未命中,在所请求的地址转译被高速缓存在分页结构高速缓冲存储器内的情况下,也可以大大加速表查找处理。
现代处理器和处理系统支持正常处理被中断并暂停的系统管理模式(SMM),以响应于诸如SMM中断(SMI)等的外部激发而进入SMM操作。SMM操作通常是临时的,其中可以在正常处理被中断的点处恢复该正常处理。SMM对于进入任一个或多个低电力模式以节约电力而言特别有利。处理器响应于设置为SMM中断而进入SMM。在进入SMM之前,处理器微码将处理器的状态保存在SMM保存区域中并且将处理器置入已知状态。该已知状态可被视为隔离操作模式,该模式用以进行与正常操作模式分开的一个或多个有价值的功能、诸如进行省电功能等。在期望返回至正常操作模式的情况下,执行恢复(RSM)指令以退出SMM。在退出SMM的过程中,微码从SMM保存区域恢复所保存的状态并且使处理器返回进入在SMI之前所存在的操作模式。
在传统结构中,在处理器进入和/或退出SMM时,对所缓存的大部分(如果不是所有的)地址转译进行刷新。由于SMM被视为使用不同的地址空间的独立操作模式,因此进行所缓存信息的刷新以确保在恢复正常操作的情况下的适当操作。在正常模式期间在转译地址高速缓冲存储器(例如,TLB或分页结构高速缓冲存储器)内的利用SMM条目的命中将引起误命中,而这可能导致不适当的操作或者甚至系统故障。
发明内容
根据一个实施例的处理器包括:存储器,用于存储表示所述处理器是否处于系统管理模式的系统管理模式值;转译地址高速缓冲存储器,其包括用于存储地址转译的多个条目,其中所述多个条目各自包括系统管理模式标识符;命中逻辑,用于将查找地址与所述转译地址高速缓冲存储器的所述多个条目中所存储的地址转译进行比较以判断命中,其中所述命中逻辑仅在条目的相应系统管理模式标识符与所述系统管理模式值相匹配时才判断为命中;以及条目逻辑,用于选择所述转译地址高速缓冲存储器的所述多个条目中的用于存储所确定的地址转译的条目,并且对所述转译地址高速缓冲存储器中的所选择的条目的系统管理模式标识符进行编程以匹配所述系统管理模式值。
所述处理器可以包括处理逻辑,所述处理逻辑用于响应于进入所述系统管理模式,来命令对所述转译地址高速缓冲存储器中所存储的具有表示所述系统管理模式的相应系统管理模式标识符的地址转译进行刷新。该处理器可以包括处理逻辑,所述处理逻辑用于响应于退出所述系统管理模式,来命令对所述转译地址高速缓冲存储器中所存储的具有表示所述系统管理模式的相应系统管理模式标识符的地址转译进行刷新。可以针对进入和退出系统管理模式这两者命令刷新。
该处理器可以包括刷新逻辑,所述刷新逻辑用于响应于刷新命令,来仅对所述转译地址高速缓冲存储器中所存储的具有与所述系统管理模式值相匹配的相应系统管理模式标识符的地址转译进行刷新。该处理器可以包括处理逻辑,所述处理逻辑用于响应于系统管理模式中断来对所述系统管理模式值进行设置以表示所述系统管理模式,然后发出所述刷新命令。该处理器可以包括处理逻辑,所述处理逻辑用于响应于退出所述系统管理模式来发出所述刷新命令,然后清除所述系统管理模式值。处理逻辑可以针对进入和退出系统管理模式这两者发出刷新命令。转译地址高速缓冲存储器可以是转译后备缓冲器或分页结构高速缓冲存储器或它们的任何组合。
一种能够使处理器进行工作以区分转译地址高速缓冲存储器中的系统管理模式条目的方法,所述方法包括以下步骤:存储表示所述处理器是否处于系统管理模式的系统管理模式值;针对所述转译地址高速缓冲存储器中的用于存储地址转译的多个条目各自设置系统管理模式标识符;在将查找地址应用于所述转译地址高速缓冲存储器以寻找匹配地址的情况下,仅在条目的相应系统管理模式标识符与所述系统管理模式值相匹配时才在所述转译地址高速缓冲存储器中判断为命中;以及在所述转译地址高速缓冲存储器中发生未命中的情况下,对所述转译地址高速缓冲存储器的所述多个条目中的所选择的条目的系统管理模式标识符进行编程以匹配所述系统管理模式值,并且将所确定的地址转译存储在所述所选择的条目中。
附图说明
图1是根据本发明的一个实施例所实现的具有系统管理模式(SMM)并且被配置为在进入和退出SMM的情况下维持地址转译的处理器的框图。
图2是更详细地示出图1的处理器的包括转译地址高速缓冲存储器(TAC)的一部分的框图。
图3是示出根据一个实施例所实现的TLB中的包括系统管理模式标识符的条目的框图。
图4是示出根据一个实施例的图1的处理器用以利用相应转译来填充TLB的条目的操作的流程图。
图5是示出在图2的TAC内根据一个实施例所实现的用于判断是否响应于地址查询而发生命中的命中逻辑的框图。
图6是示出根据一个实施例的用于使图2的TLB的条目中的LVAL位向量的位无效的刷新逻辑的框图,其是应用类似于图2的PSC的方式来进行。
图7是示出根据一个实施例的用于使图2的TLB的条目中的GVAL位向量的位无效的刷新逻辑的框图。
图8是示出图1的处理器的刷新控制寄存器的框图。
图9是示出映射模块的响应于图8的控制寄存器的各种位的设置的操作的流程图。
图10是示出根据一个实施例所实现的图2的PSC中的包括SMM标识符的条目的框图。
图11是示出根据一个实施例的图1的处理器100的用以利用相应转译来填充图2的PSC的分页结构高速缓冲存储器的条目的操作的流程图。
具体实施方式
各种众所周知的指令集架构(ISA)包括被设计成具有提高转译地址高速缓存效率的特征。例如,x86ISA包括针对程序上下文标识符(PCID)、虚拟处理器标识符(VPID)和扩展页表指针(EPTP)的支持。x86ISA还包括指示处理器以使与给定的PCID、VPID和/或EPTP相关联的高速缓存转译条目无效的指令。这里针对支持大量不同的地址空间并且使用高效的地址转译高速缓存的处理器来说明本发明。这里所述的处理器还使用支持共同的上下文条目的同时无效的地址转译高速缓冲存储器。例如,说明如下实施例:将大空间映射到小得多的非架构空间,从而有利地使高速缓存转译条目能够包括少得多的位。这里说明有利地允许处理器使与未被映像的地址转译上下文相关联的所有高速缓存转译条目同时无效的实施例。有利地,实施例考虑本地地址转译和全局地址转译的性质,并且支持用于使这两个类型的高速缓存转译条目无效的效率。本发明亦包括具有或不具有地址空间映像功能和同时高速缓存无效功能的处理器。
如这里所使用的,地址转译上下文是使得能够将存储器地址从第一存储器地址空间转译到第二存储器地址空间的一组信息。x86指令集架构(ISA)中的地址转译上下文的示例,可以是CR3寄存器(和其它控制寄存器,例如CR0和CR4以及相关特殊模块寄存器(MSR))、页表、页目录、页目录指针表、PML4表、扩展页表指针(EPTP)、和/或使得能够进行线性地址向物理存储器地址的转译的扩展页表(EPT)中所包括的一组信息。在x86ISA的情况下,利用处理器内的硬件来进行该转译。然而,在其它的ISA(例如,MIPS、SPARC)中,操作系统可以进行该转译。ARM ISA中的地址转译上下文的另一示例,可以是转译表基址寄存器(TTBR)(和其它控制寄存器,例如转译控制寄存器(TCR)、系统控制寄存器(SCTLR)和Hyp配置寄存器(HCR))和/或转译表中所包括的一组信息。
同样如这里所使用的,地址转译是一对存储器地址,其中该对中的第一个存储器地址是要进行转译的地址,并且该对中的第二个存储器地址是转译后的地址。本地地址转译是使用单个地址转译上下文来将要转译的地址转译成转译后的地址的地址转译,全局地址转译是使用多个地址转译上下文来将要转译的地址转译成转译后的地址的地址转译。本地存储器页或本地页是具有本地地址转译的存储器页,全局存储器页或全局页是具有全局地址转译的存储器页。
如这里所述的处理器支持包括这里被称为系统管理模式(SMM)的替代操作环境模式的多个操作模式。在SMM以外的操作期间所确定的地址转译,可以存储在诸如TLB或分页结构高速缓冲存储器(非SMM条目)等的转译地址高速缓冲存储器中。如这里所使用的,转译地址高速缓冲存储器可包括TLB和分页结构高速缓冲存储器中的任一个或这两者。基于诸如包括但不限于任一个或多个省电模式等的各种原因,可以使处理器置于SMM。而转译地址高速缓冲存储器中所存储的许多具有价值的非SMM条目在退出SMM之后保持有效,而传统上,这些条目被刷新或无效。有利地,本发明避免了在进入和退出SMM的情况下对非SMM条目进行刷新。如这里针对实施例所述,向各转译高速缓冲存储器条目添加SMM标识符,以在SMM转译条目和非SMM转译条目之间进行区分。处理器还包括可编程SMM ON(开启)值,其存储用于标识处理器的当前操作模式,包括SMM或非SMM。SMM ON值用于针对各新的转译条目设置SMM标识符。命中逻辑使用SMM ON值来与各SMM标识符进行比较以避免误命中。刷新逻辑也使用SMM ON值来与各SMM标识符位进行比较,以仅刷新与适用模式相对应的这些值,由此避免对其它模式中的有效条目进行刷新。
图1是根据本发明的一个实施例所实现的具有系统管理模式(SMM),并且被配置为在进入和退出SMM的情况下维持地址转译的处理器100的框图。处理器100包括指令高速缓冲存储器102、包含微码单元106的指令转译器104、执行单元112、架构寄存器114、存储器子系统122、高速缓存存储器层级体系118和总线接口单元116。其它功能单元(未示出)可以包括:表查找引擎,用于进行转译表查找以生成虚拟到物理的地址转译;分支预测器;重排序单元;保留站;指令调度器;以及数据预取单元;等等。在一个实施例中,微处理器100具有不按程序顺序发出指令以供执行的非循序执行微架构。在一个实施例中,微处理器110具有能够针对各时钟周期向执行单元112发出多个指令以供执行的超标量微架构。在一个实施例中,微处理器100大致符合x86ISA,然而其它的ISA亦可应用在本发明中。
指令高速缓冲存储器102对从与总线接口单元116进行通信的系统存储器所预取的架构指令进行高速缓存。在一个实施例中,转译后备缓冲器(TLB)(例如,图2中的TLB207)与对指令的地址转译进行高速缓存的指令高速缓冲存储器102相关联。TLB 207是还可以包括一个或多个分页高速缓存结构的转译地址高速缓冲存储器(TAC)206的一个示例。在一个实施例中,指令转译器104将从指令高速缓冲存储器102预取的架构指令转译成微处理器100的微架构的微指令集中的微指令。执行单元112执行这些微指令。从架构指令所转译成的微指令实现该架构指令。
执行单元112从架构寄存器114(或者从重排序缓冲器或转发总线)接收源操作数。将操作数从存储器经由存储器子系统122载入寄存器114。存储器子系统122相对于高速缓存存储器层级体系118(例如,1级数据高速缓冲存储器、2级高速缓冲存储器、3级高速缓冲存储器)进行数据的写入和读取。在一个实施例中,各高速缓冲存储器具有诸如图2的TLB207等的关联TLB。如果针对高速缓冲存储器层级体系118的最后一级高速缓冲存储器发生高速缓存未命中,则从自系统存储器提取高速缓存行的总线接口单元116请求数据或指令高速缓存行。
如以下针对图4更详细地所述,存储器子系统122(例如,表查找引擎)还访问系统存储器中的转译表(例如,被称为x86ISA中的分页结构)以进行页表查找,从而生成虚拟到物理的地址转译,其中这些地址转译随后被载入处理器100的TLB、诸如图2的TLB 207等。转译表可以包括对页进行映像的表(例如,x86ISA页表)或者参考转译表层级体系中的其它转译表(例如,x86ISA页目录、页目录指针表、PML4表)的表。转译表还可以包括将虚拟物理地址(例如,x86ISA中,将虚拟物理地址称为客户物理地址并且将转译表称为x86ISA中的扩展页表(EPT))映像到真实物理地址(例如,被称为x86ISA中的主机物理地址)的表。在一个实施例中,包括对这些页表中的一个或多个页表的信息进行高速缓存的分页结构高速缓冲存储器(PSC)(例如,图2中的PSC209)。PSC 209是TAC 206的另一示例。通常,TAC 206包括TLB207、PSC 209或这两者。
处理器100可以包括SMM中断(SMI)引脚SMI#124,其中该SMM中断(SMI)引脚SMI#124可启动SMM中断(SMI)的外部设置,以使处理器100置于被称为SMM的替代操作环境模式。另外,或在替代例中,处理器100可以包括高级可编程中断控制器(APIC)126,其中该APIC126也能启动经由SMI消息等的SMI外部设置。布尔(Boolean)OR(或)函数125经由SMI#引脚124或APIC 126接收SMM中断并且对SMI进行设置。处理器100的架构寄存器114包括包含状态控制寄存器128的各种控制寄存器,其中该状态控制寄存器128存储表示操作的SMM的SMM_ON值130。在一个实施例中,SMM_ON值130包括至少一个位,其中该至少一个位具有表示处理器100以SMM进行工作的第一状态(例如,逻辑“1”),并且具有表示处理器不是以SMM(以非SMM(诸如正常操作模式等))进行工作的第二状态(例如,逻辑“0”)。
微码单元106可以包括:微码存储器(例如,只读存储器或ROM),其被配置为存储可以包括微码例程的微码132,而微码132还可以包括微序列器(未示出),用于从微码存储器预取微码132的指令。在一个实施例中,微码指令是微指令;在一个实施例中,将微码指令转译成微指令。微码132实现架构指令中的一部分,诸如特别复杂的架构指令等。微码132包括用于进行处理器100的各种功能的微码例程等。
在例示实施例中,微码132包括响应于SMI而进入SMM的SMM进入例程134、和响应于SMI处理程序的恢复指令RSM的SMM退出例程136。响应于SMM中断SMI,执行SMM进入例程134以进行各种内部管理任务(housekeeping tasks)后,将控制权转移到SMI处理程序。举例来说,在处理器100接收到SMI的情况下,SMM进入例程134等待当前指令引退并且等待存储而完成其工作。然后,SMM进入例程134将处理器100的当前上下文保存在位于SM基址寄存器(未示出)中所存储的预定或可编程的SM基址的SMRAM等(未示出)内的保存状态映射区域中。SMM进入例程134的内部管理功能包括在状态控制寄存器128中对SMM_ON值130进行设置,以表示处理器正以SMM进行工作(例如,将SMM_ON位设置成真或设置为逻辑“1”)。在保存了处理器100的当前上下文之后,SMM进入例程134最终将控制权转移至SMI处理程序(可以位于SMRAM内)。
SMI处理程序进行SMM的各种功能。例如,SMI处理程序可以进行用于使处理器100置于一个或多个低电力模式中的任一个的省电功能。在SMI处理程序检测到期望退出SMM并且返回至正常操作模式(非SMM)的情况下,SMI处理程序执行RSM指令以将控制权转移至SMM退出例程136,其中该SMM退出例程136进行各种内部管理任务以使处理器100的操作返回至SMI的点,从而恢复操作,例如恢复在SMRAM的保存状态映像区域中的处理器100的当前上下文。SMM退出例程136还清除SMM_ON值以表示非SMM操作模式(例如,将SMM_ON位重置成假或逻辑“0”)。然后,操作返回至发生SMI的操作点以恢复操作。
在根据一个实施例进入SMM的情况下,SMM进入例程134还使处理器100进入隔离操作模式或状态,并且将上下文改变为“真实(real)”模式。SMI处理程序可以重新启用保护模式,并针对不同的地址转译上下文进行分页。此外,SMM进入例程134可以执行用以改变SM基址的指令。根据RSM,SMM退出例程136利用更新值来改变SM基址寄存器的内容。在对下一SMI进行设置时,可以将操作转移至不同SMRAM位置的不同的SMI处理程序。这样,SMM操作针对各SMM会话(session)可能不是以统一或一致的地址转译上下文进行工作。因而,在一个SMM会话期间TLB 207中所存储的地址转译,对下一SMM会话可能并非有效。
在传统结构中,(包括TLB 207和/或PSC 209的)TAC 206中所存储的条目中的大部分或全部被刷新或无效。由于SMM被视为不同的地址空间中的独立操作模式,因此进行TAC206的刷新以确保在恢复正常操作的情况下的适当操作。这样一来,在SMM中断之前,TAC206中所存储的许多有价值的转译将会丢失,于是在恢复操作的情况下,各新的地址查找需要进行新的且耗时的表查找以确定相应的地址转译,因此(包括TLB 207和PSC 209中的任意或这两者的)TAC 206的有效性和效率会临时丢失。本创新避免了这些有价值的转译中的大部分(如果不是所有)转译的刷新或无效。
如在SMM进入例程134内所示,在对SMM_ON值130进行设置以表示SMM之后,TAC 206中所存储且仅与SMM相关联的转译(SMM转译)被刷新或无效。这样一来,在TAC 206中,被确定是SMM外的TAC 206的所有转译都保持在TAC 206内。处理器100可以在TAC 206中生成并添加与SMM相关联的转译,这当然可能会使被确定在SMM外的非SMM转译被取代。即使如此,仍可想象仍有许多有价值的非SMM转译保持存储在TAC 206内,而SMM转译和非SMM转译共存于TAC 206内。
如在SMM退出例程136内所示,在清除SMM_ON值130以表示非SMM之前,TAC 206中所存储的转译仅与SMM相关联的SMM转译被刷新或无效。如上所述,处理器100可以在TAC 206中生成并添加与SMM相关联的SMM转译,从而被确定在SMM外的一些转译被取代,然而,再次地,SMM转译的数量通常大大小于TAC 206中的条目的总数,使得有价值的非SMM转译中的许多非SMM转译仍保持存储在TAC 206内。
在一个实施例中,可以在进入或退出SMM时避免对TAC 206中包括SMM转译的任何转译进行刷新。在这种情况下,假定在进入SMM时,在SMM处理程序代码启动分页的情况下,对在TAC 206中被确定是先前SMM会话的SMM转译进行刷新。
在一个实施例中,如利用SMM进入例程134所进行的操作所示,仅在进入SMM时对SMM转译进行刷新。在本实施例中,在退出SMM时不对SMM转译进行刷新。在另一实施例中,如利用SMM退出例程136所进行的操作所示,仅在退出SMM时对SMM转译进行刷新。在本实施例中,在进入SMM时不对SMM转译进行刷新。在又一实施例中,在如利用SMM进入例程134所进行的操作所示的进入SMM、以及在如利用SMM退出例程136所进行的操作所示的退出SMM,这两者时都对SMM转译进行刷新。
图2是更详细地输出图1的处理器100的一部分的框图。处理器100包括TAC 206(包含TLB 207和PSC 209)、连接至TAC 206的映射模块204、连接至TAC 206和映射模块204的存储器子系统122、以及连接至映像模块204的本地上下文表212和全局上下文表214。映射模块204包括微码、硬件状态机或它们的组合。映射模块204接收PCID 252、VPID 254和扩展页表指针EPTP 256。映射模块204响应于诸如改变当前地址转译上下文、和/或使地址转译上下文无效的指令等的各种事件来接收PCID 252、VPID 254和EPTP 256,其中以下说明这些事件中的一部分。响应于接收到PCID 252、VPID 254和EPTP 256,映射模块204可以通过分别生成无效本地(INV_LOCAL)位向量232和/或无效全局(INV_GLOBAL)位向量234,来有利地同时使TAC 206中的多个本地地址转译和/或多个全局地址转译无效。
另外,响应于接收到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是编码值,并且解码器262对CUR_LID 242进行解码,并将查找本地有效(LOOKUP_LVAL)解码独热位向量272(即,设置一个位并且清除其它位)提供至TAC 206;并且CUR_GID 244是编码值,并且解码器264对CUR_GID 244进行解码,并将查找全局有效(LOOKUP_GVAL)解码独热位向量274提供至TLB 207。其它用于表示CUR_LID 242和CUR_GID 244的其它实施例亦可包含于本发明中。例如,在无需解码器262/264的情况下,这两者本身可以以解码形式存储并且被直接提供至TAC206。
当存储器子系统122在TAC 206中进行存储器页的虚拟地址的查找的情况下,存储器子系统122将查找地址(LOOKUP_ADDR)276提供至TAC 206,还将LOOKUP_LVAL 272和LOOKUP_GVAL 274提供至TAC 206并且包括在该查找中。另外,将来自状态控制寄存器128的SMM_ON值130提供至TAC206,以使得该比较可以考虑SMM上下文。TAC 206经由命中指示符224表示是否发生命中,并且如果发生了命中,则将转译后的地址(TRANSLATED_ADDR)226提供至存储器子系统122。以下参考图4来更详细地说明该操作。
在例示结构中,示出包括各自对地址转译信息进行高速缓存的TLB 207和PSC 209的TAC 206。然而,应当理解的是,TLB 207和PSC 209具有不同的功能性。在虚拟地址的查找期间,大致同时并且以相似方式搜索TLB 207和PSC 209这两者。由于可以从TLB 207直接提供物理地址信息,因此TLB207内的命中在已发起表查找的情况下将终止表查找、或者可以避免发起表查找。应注意的是,出于为了改善性能的时机考虑,甚至在TLB 207内进行搜索的情况下,也可能提早发起表查找。在一个实施例中,例如,TLB 207包括可由处理流水线直接访问的更小更快的1级(L1)TLB和包含在表查找引擎内的第二个更大更慢的2级(L2)TLB。在L1TLB中发生命中的情况下,可快速地提供信息并且完全避免了表查找。在L1TLB中虚拟地址未命中的情况下,在还对L2TLB进行搜索时便进行表查找是两难的。如果整个TLB 207未命中,则发起表查找(如果尚未发起的话),而PSC 209内的命中会加速表查找过程,这是因为可从PSC 209直接提供地址转译信息的至少一部分而不必访问系统存储器中的相应页表。在TLB 207和PSC 209这两者中均未命中时将进行完整的表查找,在TLB 207中未命中但在PSC 209内命中时将进行加速或部分表查找。
将TLB 207以简化形式示出为单个块。然而,应当理解的是,TLB 207可以包括不同的TLB高速缓冲存储器等(诸如数据所用(例如,dTLB)和指令所用(例如,iTLB)的单独TLB高速缓冲存储器等)、与单独的TLB高速缓冲存储器层级(诸如包括更小更快的TLB的第一级(L1)和可能更大且略慢的多个二级(例如,L2TLB)等)的层级体系。同样,将PSC 209以简化形式示出为单个块,但处理器100仍支持的一个或多个页表的高速缓冲存储器。
图3是示出根据一个实施例所实现的TLB 207中的包括SMM标识符310的条目300的框图。各TLB条目300包括本地有效位向量(LVAL)302、全局有效位向量(GVAL)304、虚拟页地址(VPADDR 306)和物理页地址(PPADDR)308。在一个实施例中,LVAL 302包括四个位并且GVAL 304包括四个位。将LVAL 302、GVAL 304和VPADDR 306统称为条目300的标签。将VPADDR 306和PPADDR 308统称为条目300的地址转译。尽管没有示出,但优选TLB条目300还包括指定与页相关联的许可的许可位。
在一个实施例中,映射模块204确保了以下操作:(1)根据独特的VPID:EPTP:PCID组合(扩展页表特征有效)、VPID:PCID组合(扩展页表特征无效)或PCID(虚拟处理器标识符特征无效)来映射每个LID;(2)根据独特的VPID:EPTP组合(扩展页表特征有效)或VPID(扩展页表特征无效)来映射每个GID;(3)如果TLB条目300是有效全局地址转译(例如,GVAL304为非0),则TLB条目300不是有效本地地址转译(LVAL 302为0);反之亦然(4)如果TLB条目300是有效本地地址转译(例如,LVAL 302为非0),则TLB条目300不是有效全局地址转译(GVAL 304为0)。上述操作的一些优点是映射模块204可以进行以下操作:(1)使TLB 207的所有全局地址转译同时无效;以及(2)使TLB 207的所有本地地址转译同时无效。此外,映射模块204不确保根据独特的PCID来映射LID。也就是说,同一PCID值可以由多个虚拟处理器指定,因此可以被映像至不同的LID。同样,映射模块204可以使多个LID与一给定GID相关联。然而,反之则不成立,即映射模块204不使多个GID与给定LID相关联。然而,在处理器100的操作中的某点处,例如在GID和LID的数量相等(表示为N)的实施例中并且在存在各自指定了单个PCID的N个虚拟处理器的时间点处,每个LID可以与独特的GID相对应。
另外,TLB 207的各条目300包括SMM标识符310。SMM标识符310表示相应转译与以SMM还是非SMM进行工作的处理器100相关联。在一个实施例中,SMM标识符310包括至少一个位,其中该至少一个位被设置为第一状态(例如,逻辑“1”)以表示SMM,并且被重置或清除为另一状态(例如,逻辑“0”)以表示诸如正常模式等的非SMM。
图10是根据一个实施例所实现的PSC 209中的包括SMM标识符310的条目1000的框图。PSC 209的各条目包括SMM标识符310和LVAL 302,并以与TLB 207的条目大致相同的方式被运用。全局地址转译GVAL没有包括在PSC209的各条目内。利用虚拟页地址VPADD 1006来替换虚拟页地址(VPADDR306),其中该虚拟页地址VPADD 1006仅包括虚拟页地址的一部分,并根据使用中的特定地址转译上下文和实现中的特定分页结构高速缓冲存储器而定。物理页地址(PPADDR)308也被物理地址PPADD 1008所替换,其依赖于实现中的特定分页结构高速缓冲存储器而定。
作为示例,IA-32e分页的分页结构层级体系可以包括分页表PML4、PDPT、PD和PT。处理器100可以支持独立的分页结构高速缓冲存储器中的任一个或多个分页结构以改善性能。PDPT表的分页结构高速缓冲存储器的各条目包括:VPADD 1006值,其包括与PDPT表相对应的虚拟地址的位;以及PPADD 1008物理地址,其指向下一分页表PD的基址。在48个位[47:0]的虚拟地址的一个实施例中,VPADD 1006可以包括位[47:30],并且PPADD 1008是指向分页结构层级体系中的作为PD表的下一表的基址的物理地址。这样,PDPT高速缓冲存储器内的命中可避免对PML4分页结构和PDPT分页结构进行搜索并且使得搜索能够从PD表开始以改善性能。同样,针对PD表的分页结构高速缓冲存储器的各条目包括:VPADD 1006值,其包括与PD表相对应的虚拟地址的位;以及PPADD 1008物理地址,其指向下一分页表PT的基址。假定48位的虚拟地址,则VPADD 1006可以包括位[47:21],并且PPADD 1008是指向作为分页结构层级体系中的下一表的PT表的基址的物理地址。这样,PD高速缓冲存储器内的命中可避免对PML4分页结构、PDPT分页结构和PD分页结构进行搜索,并且使得搜索能够从PT表开始以改善性能。
图4是示出根据一个流程图,其示例图1实施例的处理器100利用相应转译来填充TLB 207的条目300的操作流程。流程从块402开始。
在块402中,存储器子系统122检测到LOOKUP_ADDR 276在TLB 207中未命中,并且进行表查找以生成地址转译。也就是说,存储器子系统122使用当前地址转译上下文来将未命中的LOOKUP_ADDR 276转译成物理地址。存储器子系统122可以包括进行表查找的表查找引擎(未示出)。表查找可以包括使用传统分页结构(例如,x86ISA页描述符基址、页描述符表和页表条目)和与处理器100的虚拟机性能相关联的扩展页表(例如,x86ISA虚拟机扩展(VMX)扩展页表指针(EPTP)和扩展页表(EPT))的一部分。例程进入块404。
在块404中,存储器子系统122选择TLB 207中,存储用以更换的相应地址转译的条目300。在一个实施例中,TLB 207是组关联高速缓冲存储器,并且TLB 207的各组包括诸如最近使用(LRU)或伪LRU信息等的更换信息,并且存储器子系统122选择该更换信息所指示的索引组的条目300以供更换。流程进入判定块405。
在判定块405中,存储器子系统122查询SMM_ON值130以判断处理器100是否正以SMM进行工作。如果SMM_ON值130为真从而表示处理器100在SMM下工作,则流程进入块407;否则,处理器100不是处于SMM(非SMM),使得流程进入块409。
在块407中,对所选择的TLB条目300的SMM标识符310进行编程为SMM操作模式,以表示存储中转译与SMM相关联。流程从块407进入判定块406。
在块409中,对所选择的TLB条目300的SMM标识符310进行编程为非SMM操作模式,以表示存储中转译不与SMM相关联。流程从块409进入判定块406。
在判定块406中,存储器子系统122判断地址转译是全局转译还是本地转译。存储器子系统122可以基于在块402中进行表查找时的当前地址转译上下文中的信息来进行该判断。如果为全局转译,则流程进入块412;否则,流程进入块408。
在块408中,存储器子系统122利用GVAL 304=0(由于地址转译是本地地址转译)、LVAL 302=(作为CUR_LID 242的代表的)LOOKUP_LVAL 272、VPADDR 306=未命中的LOOKUP_ADDR 276、和PPADDR 308=转译后的地址,亦即在块402中通过表查找所生成的物理地址来填充在块404中所选择的TLB条目300。流程在块408中结束。
在块412中,存储器子系统122利用GVAL 304=(作为CUR_GID 244的代表的)LOOKUP_GVAL 274、LVAL 302=0(由于地址转译是全局地址转译)、VPADDR 306=未命中的LOOKUP_ADDR 276、和PPADDR 308=转译后的地址,亦即在块402中通过表查找所生成的物理地址来填充在块404中所选择的TLB条目300。流程在块412中结束。
图11是示出根据一个流程图,其示例图1实施例的处理器100用于利用相应转译来填充PSC 209的分页结构高速缓冲存储器的条目1000的操作的流程图。用于对PSC 209的各条目的SMM标识符310进行编程的处理与TLB 207的处理大致相同。对条目的SMM标识符310进行编程以匹配SMM_ON值130,由此对各条目进行编程以反映适当的SMM上下文。本流程可实施于每个执行中的分页结构高速缓冲存储器。另一方面,多个分页结构高速缓冲存储器也可被同时更新。
流程从块1102开始,其中在该块1102中,以与前面所述相似的方式进行表查找以确定物理地址。在块1104中,存储器子系统122选择PSC 209中的分页结构高速缓冲存储器中,存储有用以更换的相应地址转译的条目1000,可以使用LRU或其它更换策略。在下一块1105中,存储器子系统122查询SMM_ON值130以判断处理器100是否正以SMM进行工作。如果SMM_ON值130为真表示处理器100处于SMM,则流程进入块1107;否则,处理器100不是处于SMM(非SMM),由此流程进入块1109。在块1107中,对所选择的PSC条目1000的SMM标识符310进行编程,以将存储中与SMM相关联的转译表示为SMM。可选地,在块1109中,对所选择的PSC条目1000的SMM标识符310进行编程,以将存储中与SMM相关联的转译表示为非SMM操作模式。流程从块1107或1109进入判定块1111。
在块1111中,存储器子系统122利用LVAL 302=(作为CUR_LID 242的代表的)LOOKUP_LVAL 272来填充块1104中所选择的PSC条目1000。存储器子系统122利用虚拟地址的相应高位来填充VPADD 1006,并且利用指向层级体系中的下一分页结构的基址的物理地址来填充PPADD 1008。VPADD 1006所使用的虚拟地址和PPADD 1008所使用的物理地址的高位依赖于如前面所述的特定分页结构高速缓冲存储器而定。流程在块1111中结束。
图5是示出TAC 206内的根据一个实施例所实现的用于判断响应于针对TLB 207的地址查找是否发生命中224的命中逻辑500的框图。命中逻辑500与PSC 209的命中逻辑大致相同,使得图5的说明通常适用于TAC 206的任意高速缓冲存储器类型。针对TLB 207的条目300的参考以大致相同的方式适用于PSC 209的条目1000。然而,PSC 209的条目100不包括GVAL,使得PSC 209不包括GVAL比较或者不使用GVAL的比较。此外,除所比较的应用位数是根据实现中的特定分页高速缓存结构而定外,针对PSC 209的VPADD的比较与针对TLB 207的VPADDR比较相同。所示的命中逻辑500(除OR函数534外)与TLB 207的单个条目300相对应,以判断是否针对该条目300生成命中524。然而,应当理解的是,对于完全相关联的实施例,在TAC 206内针对TLB 207和PSC 209的每个条目存在命中逻辑500,但为了简便和清楚而没有示出,并且对于组关联实施例,每一路径存在逻辑500。利用OR函数534对TLB 207的所有条目的命中指示符524进行布尔OR运算,以生成图1的TLB 207命中指示符224。应当理解的是,图中所示的各种布尔函数均可以与可以合成或自定义设计的布尔门(例如,AND(与)门、OR门、XOR(异或)门、XNOR(抑或非)门等)相对应;然而,命中逻辑500可以包括为了进行所示的布尔函数(例如,连线OR(wired-OR))而已知的其它硬件组件,并且可以在包括静态或动态逻辑的各种逻辑类型中实现。有利地,所述实施例使得能够使TAC 206的本地和/或全局地址转译同时无效,而与基础工艺技术或逻辑类型无关。
命中逻辑500包括一第一比较函数522,其输入LOOKUP_LVAL 272和条目300的LVAL302,并将输出提供予布尔OR函数528两个输入的第一个输入。命中逻辑500还包括第二比较函数524,其输入LOOKUP_GVAL 274和条目300的GVAL 304,而输出则提供布尔OR函数528并作为第二个输入。布尔OR函数528的输出被提供为布尔AND函数532的三个输入中的第一个输入。命中逻辑500包括第三比较函数526,其输入LOOKUP_ADDR 276和条目300的VPADDR306,而其输出被提供为布尔AND函数532的第二个输入。命中逻辑500包括布尔同或(XNOR)函数536,其中该布尔同或(XNOR)函数536具有接收SMM_ON值130的第一个输入、接收各条目300的SMM标识符310的第二个输入、和被设置为向布尔AND函数532的第三个输入的输出。
布尔AND函数532的输出是命中指示符524,其中如果LOOKUP_LVAL272与LVAL 302相匹配或者LOOKUP_GVAL 274与GVAL 304相匹配、并且如果LOOKUP_ADDR 276与VPADDR 306相匹配、并且如果条目300的SMM标识符310与SMM_ON值130相匹配,则该命中指示符524为真,否则命中指示符524为假。XNOR函数536确保了仅在SMM转译与SMM中的查找地址相匹配的情况下、或者非SMM转译与非SMM中的查找地址匹配的情况下,才发生命中。因而,在处于SMM的情况下非SMM转译将不会命中,并且在不是处于SMM的情况下SMM转译将不会命中。
如从图5可以观察到,TLB 207内的各本地地址转译由其本地上下文标识符所代表的各个LVAL 302来标识;并且各全局地址转译由其全局上下文标识符所代表的各个GVAL304来标识。LOOKUP_LVAL 272和LOOKUP_GVAL274包括在TLB 207查找中。然而,连同LOOKUP_ADDR 276和VPADDR 306的匹配一起,仅LOOKUP_LVAL 272需要与LVAL 302相匹配或者LOOKUP_GVAL 274需要与GVAL 304相匹配,而并非这两者、即并非整个标签,发生命中。因而,如通过针对图4和5所述的操作可以观察到,为了使用来自TLB 207的地址转译,用于根据VPADDR 306来转译PPADDR 308的地址转译上下文,必须是与CUR_LID 242相关联的地址转译上下文、或者与CUR_GID 244相关联的多个地址转译上下文其中之一。此外,SMM上下文必须匹配。
图6是示出根据一个实施例的用于使图2的TLB 207的条目300的LVAL位向量302的位无效的刷新逻辑600的框图。再次地,条目300的参考类似于PSC209的条目1000的运用方式。图6示出LVAL位向量302的单个位。该位所用的存储器可以是触发器、存储器阵列位单元或其它位存储装置。布尔反转(NOT(非))函数604接收与LVAL位向量302的位相对应的INV_LOCAL位向量232的位。例如,INV_LOCAL位向量232的位[2]由针对LVAL位向量302的位[2]的反转函数604接收到,而将反转函数604的输出提供至向布尔AND函数606的三个输入其中之一。布尔AND函数606的第二输入接收LVAL位向量302的当前值。布尔XNOR函数602接收SMM_ON值130和条目300的SMM标识符310,并且将布尔XNOR函数602的输出提供至布尔AND函数606的第三个输入。将布尔AND函数606的输出予以记录并当作是LVAL位向量302的新值。因而,映射模块204能够通过设置INV_LOCAL位向量232的相应位来清除LVAL位向量302的任何位。尽管图6仅示出针对单个位的刷新逻辑600,但针对TLB207的各条目300和PSC 209的各条目1000中的LVAL位向量302的各位而言,可在TAC 206内复制该刷新逻辑600。
XNOR函数602确保了仅在相同的SMM上下文内进行刷新操作的情况下,AND函数606的输出才为真(或被设置为逻辑“1”)。在一个实施例中,仅在表示处理器100的操作模式的SMM_ON值130与TAC 206的相应条目300或1000的SMM标识符310相匹配的情况下,XNOR函数602的输出才为真。
有利地,通过设置INV_LOCAL位向量232的位,映射模块204在相同的SMM上下文内,针对TLB 207的每个条目300清除LVAL位向量302的相应位。由于LVAL 302的各位位置针对各个地址转译上下文对于所有的本地地址转译均是有效位,因此刷新逻辑600使得映射模块204能够针对SMM或非SMM之各个地址转译上下文使TLB 207中的所有本地地址转译均无效。由于这相比于针对各个地址转译上下文使TLB 207中的本地地址转译顺次无效更快,因此这是有利的。实际上,随着TLB 207(例如,针对大的最后一级TLB 207)的大小增长,所节省的时间可能更明显。
图7是示出根据一个实施例的用于使图2的TLB 207的条目300的GVAL位向量304的位无效的刷新逻辑700的框图。这样,尽管刷新逻辑700接收INV_GLOBAL位向量234而不是INV_LOCAL位向量232的相应位,但TLB207针对TLB 207的各条目300中的GVAL位向量304的各位包括相似的刷新逻辑700。由于不包括GVAL,因此对于PSC 209不需要刷新逻辑700。以与刷新逻辑600相似的方式,刷新逻辑700包括:布尔反转函数704,用于接收INV_GLOBAL位向量234的相应位;布尔XNOR函数702,用于接收SMM标识符310和条目300的SMM_ON值130;以及布尔AND函数706,用于接收布尔反转函数704的输出、布尔XNOR函数702的输出和GVAL位向量304的当前值。刷新逻辑700记录GVAL位向量304的新值。
尽管图7示出针对单个位的刷新逻辑700,但针对TLB 207的各条目300中的GVAL位向量304的各位而言,可在TLB 207内复制该刷新逻辑700。有利地,通过设置INV_GLOBAL位向量234的位,映射模块204在相同的SMM上下文内,针对TLB 207的每个条目300清除GVAL位向量304的相应位。由于GVAL 304的各位位置针对各个地址转译上下文对于所有全局地址转译均是有效位,因此刷新逻辑700使得映射模块204能够针对各个地址转译并且在相同的SMM上下文内使TLB 207中的所有全局地址转译同时无效。由于相比于针对各个地址转译上下文使TLB 207中的全局地址转译顺次无效更快,因此这是有利的。实际上,随着TLB 207(例如,针对大的最后一级TLB 207)的大小增长,所节省的时间可能更明显。
尽管没有示出,但刷新逻辑600和700可以包括针对LVAL/GVAL位向量302/304的各位的其它函数以设置或清除该位。
应当注意的是,如果有需要的话,可以通过分别针对SMM或非SMM处理模式在INV_LOCAL位向量232和INV_GLOBAL位向量234中设置位来同时清除LVAL 302和GVAL 304的位。此外,如果有需要的话,可以通过分别针对SMM或非SMM在INV_LOCAL位向量232和/或INV_GLOBAL位向量234中,设置所有的位来同时清除LVAL 302和/或GVAL 304的所有位。包括布尔XNOR函数602和702确保了仅对与SMM或非SMM相对应的转译进行刷新。
图8是示出图1的处理器100的刷新控制寄存器800的框图。在一个实施例中,可以利用微码132对刷新控制寄存器800进行写入,从而使TAC 206地址转译无效。如这里进一步所述,该机制例如可用于在SMM进入例程134和SMM退出例程136中的任一者或两者中对与SMM相关联的转译条目进行刷新。刷新控制寄存器800包括INV_LOCAL位802、INV_GLOBAL位804、INV_ALL_LOCALS位806、INV_ALL_GLOBALS位808和INV_ALL位812。现在针对图9来说明响应于这些位的设置的映射模块204的操作。
现在参考图9,示出例示响应于图8的刷新控制寄存器800的各种位的设置的映射模块204的操作的流程图。图9的流程图适用于TAC 206的TLB 207和PSC 209这两者,尽管PSC 209的条目1000不包括全局值。微码确保了在设置INV_GLOBAL位的情况下,还设置INV_LOCAL。同样,在设置INV_ALL_GLOBALS的情况下,还设置INV_ALL_LOCALS。这样,响应于刷新控制寄存器800的位的设置来对TLB 207和PSC 209这两者的适当条目进行刷新。流程从块902开始。
在块902中,例如利用微码106来设置刷新控制寄存器800的一个或多个位。流程进入判定块904。
在判定块904中,如果INV_LOCAL位902被设置,则流程进入块906;否则,流程进入判定块914。
在块906中,映射模块204对CUR_LID 242进行解码以生成独热位向量值并且对INV_LOCAL位向量232上的值进行设置,这样针对TAC 206的每个条目300或1000清除与INV_LOCAL位向量232中的一个设置位相对应的LVAL302的位,从而使使用当前地址转译上下文并且在相同SMM上下文内进行转译后的TAC 206中的所有本地地址转译无效。流程进入判定块914。
在判定块914中,如果INV_GLOBAL位804被设置,则流程进入块916;否则,流程进入判定块924。
在块916中,映射模块204对CUR_GID 244进行解码以生成独热位向量值并且对INV_GLOBAL位向量234上的值进行设置,这样针对TLB 207的每个条目300清除与INV_GLOBAL位向量234中的一个设置位相对应的GVAL 304的位,从而使使用当前地址转译上下文并且在相同SMM上下文内进行转译后的TLB 207中的所有本地地址转译无效。流程进入判定块924。
在判定块924中,如果设置了INV_ALL_LOCALS位806,则流程进入块926;否则流程进入判定块934。
在块926中,映像模块204对INV_LOCAL位向量232的所有位进行设置,这样针对TAC206的每个条目300或1000清除LVAL 302的所有位,从而使使用当前地址转译上下文并且在相同SMM上下文内进行转译后的TAC 206中的所有本地地址转译无效。流程进入判定块934。
在判定块934中,如果INV_ALL_GLOBALS位808被设置,则流程进入块936;否则流程进入判定块944。
在块936中,映像模块204对INV_GLOBAL位向量234的所有位进行设置,这样针对TLB 207的每个条目300清除GVAL 304的所有位,从而使使用任何地址转译上下文并且在相同SMM上下文内进行转译后的TLB 207中的所有全局地址转译无效。流程进入判定块944。
在判定块944中,如果INV_ALL位812被设置,则流程进入块946;否则流程结束。
在块946中,映像模块204对INV_LOCAL位向量232的所有位和INV_GLOBAL位向量234的所有位进行设置,这样针对TAC 206的每个条目300或1000清除LVAL 302的所有位和GVAL 304的所有位(仅TLB 207),从而使使用任何地址转译上下文并且在相同SMM上下文内进行转译后的TAC206中的所有地址转译无效。流程在块946中结束。
总之,图1示出处理器100基于状态控制器寄存器128中的编程后的SMM_ON值130而以系统管理模式(SMM)或非SMM模式进行工作。图3示出TAC 206的各条目300或1000包括SMM标识符310。图4示出对各新地址转译的SMM标识符310进行编程,以表示新的转译条目是属于非SMM地址转译上下文还是属于SMM地址转译上下文。图5示出仅在SMM上下文相同的情况下、即在转译条目的SMM标识符310与SMM_ON值130的当前值相匹配的情况下,各地址查找才产生命中。这样,避免了非SMM操作期间的利用SMM上下文转译的地址转译匹配所引起的误命中;同样,避免了SMM操作期间的利用非SMM上下文转译的地址转译匹配所引起的误命中。
这样,应当理解,在不存在可能会引起误命中和误操作的冲突的情况下,SMM转译和非SMM转译可以共存于TAC 206内。因而,在进入或退出SMM操作的情况下,不对TAC 206中的有价值的非SMM高速缓存地址转译进行刷新。在恢复非SMM操作的情况下,有价值的高速缓存地址转译中的大部分(如果不是所有)保持存储在TAC 206中,由此避免发生需要访问系统存储器的过度表查找的情形。保留处理器的转译地址高速缓冲存储器(诸如处理器100的TLB 207和/或PSC 209等)中所存储的有价值的非SMM高速缓存地址转译提高了操作性能和效率。
然而,如这里所述,地址转译上下文通常针对各SMM会话而有所不同。如图6和7所示,刷新逻辑被配置为考虑到SMM上下文并且仅对操作模式特有的条目进行刷新。因而,例如,在进入和/或退出SMM操作时对SMM转译条目进行刷新的情况下,非SMM转译条目未被刷新并且保持存储在TAC 206中。如图1所示,SMM进入例程134首先对SMM_ON值130进行编程以表示SMM,然后对TAC 206中所存储的SMM转译进行刷新。另外或作为代替,在SMM_ON值130仍表示SMM的情况下,SMM退出例程136首先对TAC 206中所存储的SMM转译进行刷新,然后对SMM_ON值130进行重新编程以表示非SMM操作。例如针对SMM操作设置SMM_ON位并且针对非SMM操作重置或清除SMM_ON位,进行这些操作以确保可避免误命中。
在传统结构中,可以针对各刷新操作单独搜索TAC 206中所存储的SMM地址转译并使其无效。然而,与图6和7所示的刷新逻辑相组合的图8和9示出TAC刷新的特别有利的方式。一旦设置了SMM_ON值130以表示SMM,可以简单地由SMM进入例程134,通过设置INV_ALL位812来对SMM转译进行刷新。作为代替或另外,SMM退出例程132简单地通过在SMM_ON值130表示SMM的情况下设置INV_ALL位812来对SMM转译进行刷新。刷新逻辑600和700的XNOR逻辑(或其它合适逻辑)确保了仅使TAC 206中的具有匹配的SMM标识符310的条目300无效。这样,(除非在SMM期间利用SMM地址转译进行替换)在SMM操作期间,非SMM转译条目未被刷新或无效,并且保持在TAC 206中。
应注意的是,无论SMM上下文为何皆对TAC 206中的转译条目进行刷新可能是有利的。例如,希望在正常操作期间重置或清除整个TAC 206。刷新逻辑600和700是以简化形式示出的,并且可以进行修改以使得能够简单地通过添加用以绕过XNOR逻辑602和/或702的逻辑,以在无论SMM上下文为何的情况下进行无效。例如,可以设置通用刷新允许位(未示出)并且与XNIR逻辑602和/或702各自的输出进行布尔OR,以使得无论SMM_ON值130或SMM标识符310的值为何,皆可使用通用刷新允许位来绕过SMM上下文而使TAC条目300无效。
尽管已经说明了本地(和全局)上下文标识符空间的大小是预定大小(例如,四个)的实施例,但本地(和全局)上下文标识符空间的大小根据诸如性能、大小和电力消耗等的期望设计目标而不同的其它实施例亦可包含于本发明内。另外,尽管已经针对单个TLB和/或单个PSC说明了实施例,但应当理解,可以在具有多个TAC的处理器中针对各TLB或PSC采用所述机制。此外,尽管说明了位似乎具有设置或清除或者0或1的特殊含义的实施例,但应当理解,可以采用正逻辑和负逻辑的实现。最后,尽管针对x86ISA说明了各种实施例,但用于将大的架构地址转译上下文空间映射到较小的非架构地址转译上下文空间、以及如本文所述的同时无效地址转译的机制,亦可运用在诸如ARM、MIPS或Sun ISA等的其它ISA中。
尽管这里已经说明了本发明的各种实施例,但应当理解,这些实施例是以示例而非限制性的方式呈现的。相关计算机领域的技术人员将明白,可以在没有背离本发明的范围的情况下对这些实施例进行形式和细节方面的各种改变。这里所述的设备和方法的实施例可以包括在(例如HDL中所嵌入或指定的)诸如微处理器内核等的半导体知识产权内核中,并且在集成电路的制造中变换成硬件。另外,可以将这里所述的设备和方法体现为硬件和软件的组合。因而,本发明不应局限于这里所述任何典型实施例,而是应仅根据所附权利要求书及其等同物来定义。具体地,可以在可用于通用计算机的微处理器装置内实现本发明。最后,本领域技术人员应当理解,在没有背离如所附权利要求书所定义的本发明的范围的情况下,这些技术人员可以容易地使用所公开的概念和特定实施例作为用于设计或修改用于执行本发明的相同目的的其它结构。

Claims (18)

1.一种处理器,包括:
存储器,用于存储表示所述处理器是否处于系统管理模式的系统管理模式值;
转译地址高速缓冲存储器,其包括用于存储地址转译的多个条目,其中所述多个条目各自包括系统管理模式标识符;
命中逻辑,用于将查找地址与所述转译地址高速缓冲存储器的所述多个条目中所存储的地址转译进行比较以判断命中,其中所述命中逻辑仅在条目的相应系统管理模式标识符与所述系统管理模式值相匹配时才判断为命中;
条目逻辑,用于选择所述转译地址高速缓冲存储器的所述多个条目中的用于存储所判断的地址转译的条目,并且对所述转译地址高速缓冲存储器中的所选择的条目的系统管理模式标识符进行编程以匹配所述系统管理模式值;以及
刷新逻辑,用于响应于进入所述系统管理模式和退出所述系统管理模式中的至少一个,来仅对所述转译地址高速缓冲存储器中所存储的具有与所述系统管理模式值相匹配的相应系统管理模式标识符的地址转译进行刷新。
2.根据权利要求1所述的处理器,其中,还包括处理逻辑,所述处理逻辑用于响应于进入所述系统管理模式,来命令对所述转译地址高速缓冲存储器中所存储的具有表示所述系统管理模式的相应系统管理模式标识符的地址转译进行刷新。
3.根据权利要求1所述的处理器,其中,还包括处理逻辑,所述处理逻辑用于响应于退出所述系统管理模式,来命令对所述转译地址高速缓冲存储器中所存储的具有表示所述系统管理模式的相应系统管理模式标识符的地址转译进行刷新。
4.根据权利要求1所述的处理器,其中,所述刷新逻辑用于响应于刷新命令,来仅对所述转译地址高速缓冲存储器中所存储的具有与所述系统管理模式值相匹配的相应系统管理模式标识符的地址转译进行刷新。
5.根据权利要求4所述的处理器,其中,还包括处理逻辑,所述处理逻辑用于响应于系统管理模式中断来对所述系统管理模式值进行设置以表示所述系统管理模式,然后发出所述刷新命令。
6.根据权利要求4所述的处理器,其中,还包括处理逻辑,所述处理逻辑用于响应于退出所述系统管理模式来发出所述刷新命令,然后清除所述系统管理模式值。
7.根据权利要求4所述的处理器,其中,还包括:
第一处理逻辑,用于进行以下操作:
响应于系统管理模式中断来对所述系统管理模式值进行设置以表示所述系统管理模式,
发出所述刷新命令,以及
将控制权转移至处理程序例程;以及
第二处理逻辑,用于进行以下操作:
响应于退出所述处理程序例程而发出所述刷新命令,
清除所述系统管理模式值,以及
使操作返回至正常操作模式。
8.根据权利要求1所述的处理器,其中,所述转译地址高速缓冲存储器包括转译后备缓冲器。
9.根据权利要求1所述的处理器,其中,所述转译地址高速缓冲存储器包括分页结构高速缓冲存储器。
10.一种能够使处理器进行工作以区分转译地址高速缓冲存储器中的系统管理模式条目的方法,所述方法包括以下步骤:
存储表示所述处理器是否处于系统管理模式的系统管理模式值;
针对所述转译地址高速缓冲存储器中的用于存储地址转译的多个条目各自设置系统管理模式标识符;
在将查找地址应用于所述转译地址高速缓冲存储器以寻找匹配地址的情况下,仅在条目的相应系统管理模式标识符与所述系统管理模式值相匹配时才在所述转译地址高速缓冲存储器中判断为命中;
在所述转译地址高速缓冲存储器中发生未命中的情况下,对所述转译地址高速缓冲存储器的所述多个条目中的所选择的条目的系统管理模式标识符进行编程以匹配所述系统管理模式值,并且将所判断的地址转译存储在所述所选择的条目中;以及
基于进入所述系统管理模式和从所述系统管理模式返回中的至少一个,来仅对所述转译地址高速缓冲存储器中所存储的具有与所述系统管理模式值相匹配的相应系统管理模式标识符的地址转译进行刷新。
11.根据权利要求10所述的方法,其中,还包括以下步骤:响应于进入所述系统管理模式,来命令对所述转译地址高速缓冲存储器中所存储的具有表示所述系统管理模式的相应系统管理模式标识符的地址转译进行刷新。
12.根据权利要求10所述的方法,其中,还包括以下步骤:响应于从所述系统管理模式返回,来命令对所述转译地址高速缓冲存储器中所存储的具有表示操作的所述系统管理模式的相应系统管理模式标识符的地址转译进行刷新。
13.根据权利要求10所述的方法,其中,还包括以下步骤:
响应于进入所述系统管理模式,来命令对所述转译地址高速缓冲存储器中所存储的具有表示所述系统管理模式的相应系统管理模式标识符的地址转译进行刷新;以及
响应于从所述系统管理模式返回,来命令对所述转译地址高速缓冲存储器中所存储的具有表示操作的所述系统管理模式的相应系统管理模式标识符的地址转译进行刷新。
14.根据权利要求10所述的方法,其中,还包括以下步骤:响应于刷新命令,来仅对所述转译地址高速缓冲存储器中所存储的具有与所述系统管理模式值相匹配的相应系统管理模式标识符的地址转译进行刷新。
15.根据权利要求14所述的方法,其中,还包括以下步骤:响应于系统管理模式中断来对所述系统管理模式值进行设置以表示所述系统管理模式,然后提供所述刷新命令。
16.根据权利要求14所述的方法,其中,还包括以下步骤:响应于从所述系统管理模式返回来提供所述刷新命令,然后清除所述系统管理模式值。
17.根据权利要求14所述的方法,其中,还包括以下步骤:
响应于接收到系统管理模式中断而进行以下操作:
对所述系统管理模式值进行设置以表示所述系统管理模式,
提供所述刷新命令,以及
使控制权转移至处理程序例程;以及
响应于从所述处理程序例程返回而进行以下操作:
提供所述刷新命令,
清除所述系统管理模式值,以及
使操作转移至正常操作模式。
18.一种计算机可读存储介质,其上记录有计算机程序,其中,该计算机程序被处理器执行时实现根据权利要求10至17中任一项所述的方法的步骤。
CN201811067012.0A 2015-04-03 2015-12-01 处理器、区分系统管理模式条目的方法以及存储介质 Active CN109240950B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/678,600 US10078597B2 (en) 2015-04-03 2015-04-03 System and method of distinguishing system management mode entries in a translation address cache of a processor
US14/678,600 2015-04-03
CN201510869158.7A CN105446900B (zh) 2015-04-03 2015-12-01 处理器和区分系统管理模式条目的方法

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201510869158.7A Division CN105446900B (zh) 2015-04-03 2015-12-01 处理器和区分系统管理模式条目的方法

Publications (2)

Publication Number Publication Date
CN109240950A CN109240950A (zh) 2019-01-18
CN109240950B true CN109240950B (zh) 2020-10-23

Family

ID=55557123

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201510869158.7A Active CN105446900B (zh) 2015-04-03 2015-12-01 处理器和区分系统管理模式条目的方法
CN201811067012.0A Active CN109240950B (zh) 2015-04-03 2015-12-01 处理器、区分系统管理模式条目的方法以及存储介质

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201510869158.7A Active CN105446900B (zh) 2015-04-03 2015-12-01 处理器和区分系统管理模式条目的方法

Country Status (2)

Country Link
US (1) US10078597B2 (zh)
CN (2) CN105446900B (zh)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10162762B2 (en) * 2015-04-22 2018-12-25 Arm Limited Managing memory based on hint data generated from mapping data entries
US10180906B2 (en) * 2016-07-26 2019-01-15 Samsung Electronics Co., Ltd. HBM with in-memory cache manager
CN109690505B (zh) * 2016-09-26 2023-08-08 英特尔公司 用于针对虚拟化输入/输出实施方式的混合层地址映射的设备和方法
US10380032B2 (en) 2017-03-09 2019-08-13 Internatinoal Business Machines Corporation Multi-engine address translation facility
GB2563879B (en) * 2017-06-28 2019-07-17 Advanced Risc Mach Ltd Realm identifier comparison for translation cache lookup
US11314578B2 (en) * 2019-03-06 2022-04-26 Dell Products L.P. Information handling system and method to detect and recover from spurious resets of PCIe devices
US11392503B2 (en) * 2019-12-27 2022-07-19 Intel Corporation Memory tagging apparatus and method
US11693785B2 (en) 2019-12-27 2023-07-04 Intel Corporation Memory tagging apparatus and method
US11755731B2 (en) 2020-07-23 2023-09-12 Ventana Micro Systems Inc. Processor that prevents speculative execution across translation context change boundaries to mitigate side channel attacks
US11803638B2 (en) 2020-07-23 2023-10-31 Ventana Micro Systems Inc. Microprocessor core with a store dependence predictor accessed using a translation context
US11755732B2 (en) 2020-07-23 2023-09-12 Ventana Micro Systems Inc. Microprocessor that conditions store-to-load forwarding on circumstances associated with a translation context update
US11803637B2 (en) * 2020-07-23 2023-10-31 Ventana Micro Systems Inc. Microprocessor that prevents store-to-load forwarding between different translation contexts
US11748136B2 (en) * 2020-07-30 2023-09-05 Red Hat, Inc. Event notification support for nested virtual machines
GB2602480B (en) * 2020-12-31 2023-05-24 Advanced Risc Mach Ltd Context information translation cache
US20240143227A1 (en) * 2022-10-26 2024-05-02 Western Digital Technologies, Inc. Data Storage Device and Method for Reducing Flush Latency
CN117331676B (zh) * 2023-11-30 2024-03-19 上海兆芯集成电路股份有限公司 系统管理模式进入方法、处理器和计算机系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7849310B2 (en) * 2002-11-18 2010-12-07 Arm Limited Switching between secure and non-secure processing modes
CN102326153A (zh) * 2008-12-19 2012-01-18 Ati技术无限责任公司 以复制写入请求用于一致性存储器拷贝的方法及设备
CN104067246A (zh) * 2012-01-10 2014-09-24 高通股份有限公司 通过物理地址进行的非分配存储器存取

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5544344A (en) * 1994-12-06 1996-08-06 Digital Equipment Corporation Apparatus for caching smram in an intel processor based computer system employing system management mode
US5954812A (en) * 1996-10-29 1999-09-21 Texas Instruments Incorporated Apparatus for caching system management memory in a computer having a system management mode employing address translation
US7171539B2 (en) * 2002-11-18 2007-01-30 Arm Limited Apparatus and method for controlling access to a memory
GB0226874D0 (en) * 2002-11-18 2002-12-24 Advanced Risc Mach Ltd Switching between secure and non-secure processing modes
GB0226875D0 (en) * 2002-11-18 2002-12-24 Advanced Risc Mach Ltd Control of access to a memory by a device
US7552255B1 (en) * 2003-07-30 2009-06-23 Intel Corporation Dynamically partitioning pipeline resources
US9703346B2 (en) * 2014-06-23 2017-07-11 Intel Corporation Firmware interface with backup non-volatile memory storage

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7849310B2 (en) * 2002-11-18 2010-12-07 Arm Limited Switching between secure and non-secure processing modes
CN102326153A (zh) * 2008-12-19 2012-01-18 Ati技术无限责任公司 以复制写入请求用于一致性存储器拷贝的方法及设备
CN104067246A (zh) * 2012-01-10 2014-09-24 高通股份有限公司 通过物理地址进行的非分配存储器存取

Also Published As

Publication number Publication date
CN105446900B (zh) 2018-10-26
CN109240950A (zh) 2019-01-18
CN105446900A (zh) 2016-03-30
US10078597B2 (en) 2018-09-18
US20160292075A1 (en) 2016-10-06

Similar Documents

Publication Publication Date Title
CN109240950B (zh) 处理器、区分系统管理模式条目的方法以及存储介质
EP3172673B1 (en) Address translation cache that supports simultaneous invalidation of common context entries
EP3238074B1 (en) Cache accessed using virtual addresses
US9152572B2 (en) Translation lookaside buffer for multiple context compute engine
US20070094475A1 (en) Caching memory attribute indicators with cached memory data field
US9898418B2 (en) Processor including single invalidate page instruction
US11687466B1 (en) Translation lookaside buffer consistency directory for use with virtually-indexed virtually-tagged first level data cache that holds page table permissions
JP2000339221A (ja) 変換装置のエントリを無効化するシステム及び方法
TWI782754B (zh) 微處理器和在微處理器中實現的方法
US11853228B1 (en) Partial-address-translation-invalidation request

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address
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.