处理器和区分系统管理模式条目的方法_2

文档序号:9687362阅读:来源:国知局
微处理器100具有不按程序顺序发出指令以供执行的非循序执行微架构。在一个实施例中,微处理器110具有能够针对各时钟周期向执行单元112发出多个指令以供执行的超标量微架构。在一个实施例中,微处理器100大致符合x86 ISA,然而其它的ISA亦可应用在本发明中。
[0028]指令高速缓冲存储器102对从与总线接口单元116进行通信的系统存储器所预取的架构指令进行高速缓存。在一个实施例中,转译后备缓冲器(TLB)(例如,图2中的TLB207)与对指令的地址转译进行高速缓存的指令高速缓冲存储器102相关联。TLB 207是还可以包括一个或多个分页高速缓存结构的转译地址高速缓冲存储器(TAC)206的一个示例。在一个实施例中,指令转译器104将从指令高速缓冲存储器102预取的架构指令转译成微处理器100的微架构的微指令集中的微指令。执行单元112执行这些微指令。从架构指令所转译成的微指令实现该架构指令。
[0029]执行单元112从架构寄存器114(或者从重排序缓冲器或转发总线)接收源操作数。将操作数从存储器经由存储器子系统122载入寄存器114。存储器子系统122相对于高速缓存存储器层级体系118(例如,1级数据高速缓冲存储器、2级高速缓冲存储器、3级高速缓冲存储器)进行数据的写入和读取。在一个实施例中,各高速缓冲存储器具有诸如图2的TLB207等的关联TLB。如果针对高速缓冲存储器层级体系118的最后一级高速缓冲存储器发生高速缓存未命中,则从自系统存储器提取高速缓存行的总线接口单元116请求数据或指令高速缓存行。
[0030]如以下针对图4更详细地所述,存储器子系统122(例如,表查找引擎)还访问系统存储器中的转译表(例如,被称为x86 ISA中的分页结构)以进行页表查找,从而生成虚拟到物理的地址转译,其中这些地址转译随后被载入处理器100的TLB、诸如图2的TLB 207等。转译表可以包括对页进行映像的表(例如,x86 ISA页表)或者参考转译表层级体系中的其它转译表(例如,x86 ISA页目录、页目录指针表、PML4表)的表。转译表还可以包括将虚拟物理地址(例如,x86 ISA中,将虚拟物理地址称为客户物理地址并且将转译表称为x86 ISA中的扩展页表(EPT))映像到真实物理地址(例如,被称为x86 ISA中的主机物理地址)的表。在一个实施例中,包括对这些页表中的一个或多个页表的信息进行高速缓存的分页结构高速缓冲存储器(PSC)(例如,图2中的PSC 209)oPSC 209是TAC 206的另一示例。通常,TAC 206包括TLB 207、PSC 209或这两者。
[0031]处理器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_0N值130。在一个实施例中,SMM_0N值130包括至少一个位,其中该至少一个位具有表示处理器100以SMM进行工作的第一状态(例如,逻辑“1”),并且具有表示处理器不是以SMM(以非SMM(诸如正常操作模式等))进行工作的第二状态(例如,逻辑“0”)。
[0032]微码单元106可以包括:微码存储器(例如,只读存储器或R0M),其被配置为存储可以包括微码例程的微码132,而微码132还可以包括微序列器(未示出),用于从微码存储器预取微码132的指令。在一个实施例中,微码指令是微指令;在一个实施例中,将微码指令转译成微指令。微码132实现架构指令中的一部分,诸如特别复杂的架构指令等。微码132包括用于进行处理器100的各种功能的微码例程等。
[0033]在例示实施例中,微码132包括响应于SMI而进入SMM的SMM进入例程134、和响应于SMI处理程序的恢复指令RSM的SMM退出例程136。响应于S丽中断SMI,执行S丽进入例程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内)。
[0034]SMI处理程序进行SMM的各种功能。例如,SMI处理程序可以进行用于使处理器100置于一个或多个低电力模式中的任一个的省电功能。在SMI处理程序检测到期望退出SMM并且返回至正常操作模式(非SMM)的情况下,SMI处理程序执行RSM指令以将控制权转移至SMM退出例程136,其中该SMM退出例程136进行各种内部管理任务以使处理器100的操作返回至SMI的点,从而恢复操作,例如恢复在SMRAM的保存状态映像区域中的处理器100的当前上下文。SMM退出例程136还清除SMM_0N值以表示非SMM操作模式(例如,将SMM_0N位重置成假或逻辑“0”)。然后,操作返回至发生SMI的操作点以恢复操作。
[0035]在根据一个实施例进入SMM的情况下,SMM进入例程134还使处理器100进入隔离操作模式或状态,并且将上下文改变为“真实(real)”模式。SMI处理程序可以重新启用保护模式,并针对不同的地址转译上下文进行分页。此外,SMM进入例程134可以执行用以改变SMS址的指令。根据RSM,SMM退出例程136利用更新值来改变SM基址寄存器的内容。在对下一 SMI进行设置时,可以将操作转移至不同SMRAM位置的不同的SMI处理程序。这样,SMM操作针对各SMM会话(sess1n)可能不是以统一或一致的地址转译上下文进行工作。因而,在一个SMM会话期间TLB 207中所存储的地址转译,对下一SMM会话可能并非有效。
[0036]在传统结构中,(包括TLB207和/或PSC 209的)TAC 206中所存储的条目中的大部分或全部被刷新或无效。由于SMM被视为不同的地址空间中的独立操作模式,因此进行TAC206的刷新以确保在恢复正常操作的情况下的适当操作。这样一来,在SMM中断之前,TAC206中所存储的许多有价值的转译将会丢失,于是在恢复操作的情况下,各新的地址查找需要进行新的且耗时的表查找以确定相应的地址转译,因此(包括TLB 207和PSC 209中的任意或这两者的)TAC 206的有效性和效率会临时丢失。本创新避免了这些有价值的转译中的大部分(如果不是所有)转译的刷新或无效。
[0037]如在SMM进入例程134内所示,在对SMM_0N值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 内。
[0038]如在SMM退出例程136内所示,在清除SMM_0N值130以表示非SMM之前,TAC 206中所存储的转译仅与SMM相关联的S丽转译被刷新或无效。如上所述,处理器100可以在TAC 206中生成并添加与SMM相关联的SMM转译,从而被确定在S丽外的一些转译被取代,然而,再次地,SMM转译的数量通常大大小于TAC 206中的条目的总数,使得有价值的非SMM转译中的许多非SMM转译仍保持存储在TAC 206内。
[0039]在一个实施例中,可以在进入或退出SMM时避免对TAC 206中包括SMM转译的任何转译进行刷新。在这种情况下,假定在进入SMM时,在SMM处理程序代码启动分页的情况下,对在TAC 206中被确定是先前SMM会话的SMM转译进行刷新。
[0040]在一个实施例中,如利用SMM进入例程134所进行的操作所示,仅在进入SMM时对SMM转译进行刷新。在本实施例中,在退出SMM时不对SMM转译进行刷新。在另一实施例中,如利用SMM退出例程136所进行的操作所示,仅在退出SMM时对SMM转译进行刷新。在本实施例中,在进入SMM时不对SMM转译进行刷新。在又一实施例中,在如利用SMM进入例程134所进行的操作所示的进入SMM、以及在如利用SMM退出例程136所进行的操作所示的退出SMM,这两者时都对SMM转译进行刷新。
[0041 ]图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_L0CAL)位向量232和/或无效全局(INV_GL0BAL)位向量234,来有利地同时使TAC 206中的多个本地地址转译和/或多个全局地址转译无效。
[0042]另外,响应于接收到PCID 252、VPID 254和EPTP 256,映射模块204可以更新当前本地上下文标识符(CUR_LID) 242和/或当前全局上下文标识符(CUR_GID) 244。CUR_LID 242和⑶R_GID 244标识当前地址转译上下文。如以下更详细地所述,具体地,OTR_LID 242标识当前地址转译上下文的本地存储器页,并且CTR_GID 244标识当前地址转译上下文的全局存储器页。在一个实施例中,CUR_LID 242是编码值,并且解码器262对⑶R_LID 242进行解码,并将查找本地有效(L00KUP_LVAL)解码独热位向量272(即,设置一个位并且清除其它位)提供至TAC 206;并且⑶R_GID 244是编码值,并且解码器264对⑶R_GID 244进行解码,并将查找全局有效(L00KUP_GVAL)解码独热位向量274提供至TLB 207。其它用于表示CUR_LID 242和⑶R_GID 244的其它实施例亦可包含于本发明中。例如,在无需解码器262/264的情况下,这两者本身可以以解码形式存储并且被直接提供至TAC 206。
[0043]当存储器子系统122在TAC206中进行存储器页的虚拟地址的查找的情况下,存储器子系统122将查找地址(L00KUP_ADDR)276提供至TAC 206,还将L00KUP_LVAL 272和L00KUP_GVAL 274提供至TAC 206并且包括在该查找中。另外,将来自状态控制寄存器128的SMM_0N值130提供至TAC 206,以使得该比较可以考虑SMM上下文。TAC 206经由命中指示符224表示是否发生命中,并且如果发生了命中,则将转译后的地址(TRANSLATED_ADDR)226提供至存储器子系统122。以下参考图4来更详细地说明该操作。
[0044]在例示结构中,示出包括各自对地址转译信息进行高速缓存的TLB 207和PSC 209的TAC 206。然而,应当理解的是
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1