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

文档序号:9687362阅读:来源:国知局
针对TLB 207的VPADDR比较相同。所示的命中逻辑500(除0R函数534外)与TLB 207的单个条目300相对应,以判断是否针对该条目300生成命中524。然而,应当理解的是,对于完全相关联的实施例,在TAC 206内针对TLB 207和PSC 209的每个条目存在命中逻辑500,但为了简便和清楚而没有示出,并且对于组关联实施例,每一路径存在逻辑500。利用0R函数534对TLB 207的所有条目的命中指示符524进行布尔0R运算,以生成图1的TLB 207命中指示符224。应当理解的是,图中所示的各种布尔函数均可以与可以合成或自定义设计的布尔门(例如,AND(与)门、OR门、X0R(异或)门、XN0R(抑或非)门等)相对应;然而,命中逻辑500可以包括为了进行所示的布尔函数(例如,连线OR(wired-OR))而已知的其它硬件组件,并且可以在包括静态或动态逻辑的各种逻辑类型中实现。有利地,所述实施例使得能够使TAC 206的本地和/或全局地址转译同时无效,而与基础工艺技术或逻辑类型无关。
[0064]命中逻辑500包括一第一比较函数522,其输入L00KUP_LVAL 272和条目300的LVAL302,并将输出提供予布尔OR函数528两个输入的第一个输入。命中逻辑500还包括第二比较函数524,其输入L00KUP_GVAL 274和条目300的GVAL 304,而输出则提供布尔OR函数528并作为第二个输入。布尔0R函数528的输出被提供为布尔AND函数532的三个输入中的第一个输入。命中逻辑500包括第三比较函数526,其输入L00KUP_ADDR 276和条目300的VPADDR306,而其输出被提供为布尔AND函数532的第二个输入。命中逻辑500包括布尔同或(XN0R)函数536,其中该布尔同或(XN0R)函数536具有接收SMM_0N值130的第一个输入、接收各条目300的SMM标识符310的第二个输入、和被设置为向布尔AND函数532的第三个输入的输出。
[0065]布尔AND函数532的输出是命中指示符524,其中如果L00KUP_LVAL 272与LVAL 302相匹配或者L00KUP_GVAL 274与GVAL 304相匹配、并且如果L00KUP_ADDR 276与VPADDR 306相匹配、并且如果条目300的S丽标识符310与SMM_0N值130相匹配,则该命中指示符524为真,否则命中指示符524为假。XN0R函数536确保了仅在SMM转译与S丽中的查找地址相匹配的情况下、或者非SMM转译与非SMM中的查找地址匹配的情况下,才发生命中。因而,在处于SMM的情况下非SMM转译将不会命中,并且在不是处于SMM的情况下SMM转译将不会命中。
[0066]如从图5可以观察到,TLB207内的各本地地址转译由其本地上下文标识符所代表的各个LVAL 302来标识;并且各全局地址转译由其全局上下文标识符所代表的各个GVAL304来标识。L00KUP_LVAL 272和L00KUP_GVAL 274包括在TLB 207查找中。然而,连同L00KUP_ADDR 276和VPADDR 306的匹配一起,仅L00KUP_LVAL 272需要与LVAL 302相匹配或者L00KUP_GVAL 274需要与GVAL 304相匹配,而并非这两者、即并非整个标签,发生命中。因而,如通过针对图4和5所述的操作可以观察到,为了使用来自TLB 207的地址转译,用于根据VPADDR 306来转译PPADDR 308的地址转译上下文,必须是与⑶R_LID 242相关联的地址转译上下文、或者与CUR_GID 244相关联的多个地址转译上下文其中之一。此外,SMM上下文必须匹配。
[0067]图6是示出根据一个实施例的用于使图2的TLB207的条目300的LVAL位向量302的位无效的刷新逻辑600的框图。再次地,条目300的参考类似于PSC 209的条目1000的运用方式。图6示出LVAL位向量302的单个位。该位所用的存储器可以是触发器、存储器阵列位单元或其它位存储装置。布尔反转(NOT(非))函数604接收与LVAL位向量302的位相对应的INV_LOCAL位向量232的位。例如,INV_L0CAL位向量232的位[2]由针对LVAL位向量302的位[2]的反转函数604接收到,而将反转函数604的输出提供至向布尔AND函数606的三个输入其中之一。布尔AND函数606的第二输入接收LVAL位向量302的当前值。布尔XN0R函数602接收SMM_ON值130和条目300的SMM标识符310,并且将布尔XN0R函数602的输出提供至布尔AND函数606的第三个输入。将布尔AND函数606的输出予以记录并当作是LVAL位向量302的新值。因而,映射模块204能够通过设置INV_L0CAL位向量232的相应位来清除LVAL位向量302的任何位。尽管图6仅示出针对单个位的刷新逻辑600,但针对TLB 207的各条目300和PSC 209的各条目1000中的LVAL位向量302的各位而言,可在TAC 206内复制该刷新逻辑600。
[0068]XN0R函数602确保了仅在相同的SMM上下文内进行刷新操作的情况下,AND函数606的输出才为真(或被设置为逻辑“1”)。在一个实施例中,仅在表示处理器100的操作模式的SMM_ON值130与TAC 206的相应条目300或1000的SMM标识符310相匹配的情况下,XNOR函数602的输出才为真。
[0069 ] 有利地,通过设置INV_L0CAL位向量232的位,映射模块204在相同的SMM上下文内,针对TLB 207的每个条目300清除LVAL位向量302的相应位。由于LVAL 302的各位位置针对各个地址转译上下文对于所有的本地地址转译均是有效位,因此刷新逻辑600使得映射模块204能够针对SMM或非SMM之各个地址转译上下文使TLB 207中的所有本地地址转译均无效。由于这相比于针对各个地址转译上下文使TLB 207中的本地地址转译顺次无效更快,因此这是有利的。实际上,随着TLB 207(例如,针对大的最后一级TLB 207)的大小增长,所节省的时间可能更明显。
[0070]图7是示出根据一个实施例的用于使图2的TLB207的条目300的GVAL位向量304的位无效的刷新逻辑700的框图。这样,尽管刷新逻辑700接收INV_GL0BAL位向量234而不是INV_L0CAL位向量232的相应位,但TLB 207针对TLB 207的各条目300中的GVAL位向量304的各位包括相似的刷新逻辑700。由于不包括GVAL,因此对于PSC 209不需要刷新逻辑700。以与刷新逻辑600相似的方式,刷新逻辑700包括:布尔反转函数704,用于接收INV_GL0BAL位向量234的相应位;布尔XN0R函数702,用于接收SMM标识符310和条目300的SMM_0N值130 ;以及布尔AND函数706,用于接收布尔反转函数704的输出、布尔XN0R函数702的输出和GVAL位向量304的当前值。刷新逻辑700记录GVAL位向量304的新值。
[0071]尽管图7示出针对单个位的刷新逻辑700,但针对TLB 207的各条目300中的GVAL位向量304的各位而言,可在TLB 207内复制该刷新逻辑700。有利地,通过设置INV_GL0BAL位向量234的位,映射模块204在相同的SMM上下文内,针对TLB 207的每个条目300清除GVAL位向量304的相应位。由于GVAL 304的各位位置针对各个地址转译上下文对于所有全局地址转译均是有效位,因此刷新逻辑700使得映射模块204能够针对各个地址转译并且在相同的SMM上下文内使TLB 207中的所有全局地址转译同时无效。由于相比于针对各个地址转译上下文使TLB 207中的全局地址转译顺次无效更快,因此这是有利的。实际上,随着TLB 207(例如,针对大的最后一级T LB 20 7)的大小增长,所节省的时间可能更明显。
[0072]尽管没有示出,但刷新逻辑600和700可以包括针对LVAL/GVAL位向量302/304的各位的其它函数以设置或清除该位。
[0073]应当注意的是,如果有需要的话,可以通过分别针对SMM或非SMM处理模式在INV_LOCAL位向量232和INV_GL0BAL位向量234中设置位来同时清除LVAL 302和GVAL 304的位。此外,如果有需要的话,可以通过分别针对S丽或非S丽在INV_L0CAL位向量232和/或INV_GLOBAL位向量234中,设置所有的位来同时清除LVAL 302和/或GVAL 304的所有位。包括布尔XN0R函数602和702确保了仅对与SMM或非SMM相对应的转译进行刷新。
[0074]图8是示出图1的处理器100的刷新控制寄存器800的框图。在一个实施例中,可以利用微码132对刷新控制寄存器800进行写入,从而使TAC 206地址转译无效。如这里进一步所述,该机制例如可用于在SMM进入例程134和SMM退出例程136中的任一者或两者中对与SMM相关联的转译条目进行刷新。刷新控制寄存器800包括INV_L0CAL位802、INV_GL0BAL位804、INV_ALL_L0CALS 位806、INV_ALL_GLOBALS 位808 和 INV_ALL 位 812。现在针对图 9 来说明响应于这些位的设置的映射模块204的操作。
[0075]现在参考图9,示出例示响应于图8的刷新控制寄存器800的各种位的设置的映射模块204的操作的流程图。图9的流程图适用于TAC 206的TLB 207和PSC 209这两者,尽管PSC 209的条目1000不包括全局值。微码确保了在设置INV_GL0BAL位的情况下,还设置INV_LOCAL ο同样,在设置INV_ALL_GLOBALS的情况下,还设置INV_ALL_L0CALS。这样,响应于刷新控制寄存器800的位的设置来对TLB 207和PSC 209这两者的适当条目进行刷新。流程从块902开始。
[0076]在块902中,例如利用微码106来设置刷新控制寄存器800的一个或多个位。流程进入判定块904。
[0077]在判定块904中,如果INV_L0CAL位902被设置,则流程进入块906 ;否则,流程进入判定块914。
[0078]在块906中,映射模块204对⑶R_LID 242进行解码以生成独热位向量值并且对INV_L0CAL位向量232上的值进行设置,这样针对TAC 206的每个条目300或1000清除与INV_LOCAL位向量232中的一个设置位相对应的LVAL 302的位,从而使使用当前地址转译上下文并且在相同SMM上下文内进行转译后的TAC 206中的所有本地地址转译无效。流程进入判定块 914。
[0079]在判定块914中,如果INV_GL0BAL位804被设置,则流程进入块916;否则,流程进入判定块924。
[0080]在块916中,映射模块204对⑶R_GID 244进行解码以生成独热位向量值并且对INV_GL0BAL位向量234上的值进行设置,这样针对TLB 207的每个条目300清除与INV_GLOBAL位向量234中的一个设置位相对应的GVAL 304的位,从而使使用当前地址转译上下文并且在相同SMM上下文内进行转译后的TLB 207中的所有本地地址转译无效。流程进入判定块924。
[0081 ] 在判定块924中,如果设置了 INV_ALL_L0CALS位806,则流程进入块926;否则流程进入判定块934。
[0082]在块926中,映像模块204对INV_L0CAL位向量232的所有位进行设置,这样针对TAC206的每个条目300或1000清除LVAL 302的所有位,从而使使用当前地址转译上下文并且在相同SMM上下文内进行转译后的TAC 206中的所有本地地址转译无效。流程进入判定块934。
[0083]在判定块934中,如果INV_ALL_GLOBALS位808被设置,则流程进入块936;否则流程进入判定块944。
[0084]在块936中,映像模块204对INV_GL0BAL位向量234的所有位进行设置,这样针对TLB 207的每个条目300清除GVAL 304的所有位,从而使使用任何地址转译上下文并且在相同SMM上下文内进行转译后的
当前第4页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1