用于多页尺寸转换后备缓冲器(tlb)的装置和方法_4

文档序号:9221635阅读:来源:国知局
的指令构成。因此,指令转换器712通过仿真、模拟或任何其他过程来表 示允许不具有x86指令集处理器或核的处理器或其他电子设备执行x86二进制代码706的 软件、固件、硬件或其组合。
[0065] 用于多页尺寸TLB的装置和方法
[0066] 以下陈述的本发明的各实施例提供用于与多于一个页尺寸共享同一TLB阵列的 高效装置和方法,从而使得任何TLB条目可包含任何页尺寸。尽管以下描述集中在为一个 分派端口流水线使用两个特定的页尺寸,4K(小页尺寸)和2M(大页尺寸),可使用任何数 量的页尺寸实现本发明的基础原理。例如,本发明的基础原理可与不同页尺寸的任何组合 一起使用。还可使用多于一个分派端口流水线实现这些实施例。
[0067] 图9示出示例性处理器或核910,该处理器或核包括用执行指令的执行单元904、 用于访问主存储器910(例如,随机存取存储器)的存储器管理单元(MMU)920以及用于存 储数据和地址以供执行单元904和MMU920使用的寄存器组901。这些处理器组件所执行 的基本功能由本领域普通技术人员很好地理解并且将不在此详细描述以便避免混淆本发 明的基础原理。
[0068]MMU920可包括用于高速缓存虚拟到物理地址转换的转换后备缓冲器(TLB)922, 以及用于响应于TLB未命中(即,当所需要的地址转换未存储在TLB922中时)从存储器 910中的页表912访问地址转换的页未命中处理器921。例如,在一个实施例中,PMH921实 现用于在TLB未命中时访问页表的页走查操作。PMH921可执行有限状态机(FSM)以便访 问页表912以及检查所访问的页的权限和属性。
[0069] 如所示,TLB922的一个实施例包括标记阵列925、选择逻辑926和数据阵列927, 用于实现在此描述的技术以便为多个页尺寸存储转换。在一个实施例中,标记阵列925具 有用于不同页尺寸中的每个页尺寸的读/内容可寻址存储器(CAM)。这样,每个读端口从线 性地址(LA)的不同部分取出其设置位。
[0070] 例如,返回参照图8,一个读端口可从LA[15:12]读取设置位而另一个读端口可从 LA[24:21]读取设置位。因此,"小页读端口"(例如,针对4K页)将LA[12]作为设置位的 LSB而"大页读端口 "(例如,针对2M页)将LA[21]作为设置位的LSB。此外,每一个读端 口可读取不同的标记位,从而使得这些标记位全部是比设置位高的LA位。针对小页读端 口,标记位是LA[: : 16],并且针对2M读端口,标记位是LA[: : 25]。注意,大页CAM端口具有 比小页CAM端口更少量的标记位。
[0071] 在一个实施例中,标记阵列925中的每个条目包括被称为"大页"的新位以便在大 页和小页之间进行区分。当该条目有效时,该位指示该条目是保持着大页转换(例如,大页 位=1)还是小页转换(例如,大页位=0)。当存在来自阵列的读/比较时,每个端口使用 "大页"位来对命中结果赋予资格(qualify)。针对大读端口,仅当"大页"==1时命中才 是真。针对小读端口,仅当"大页" ==0时命中才是真。
[0072] 在一个实施例中,使用在图10A中示出的装置实现以上技术,该图示出标记阵列 925、数据阵列927以及耦合在这两个阵列之间的包括OR门1001和复用器1002的选择逻 辑926的各部分。确切地,标记阵列925对小页CAM端口执行小设置位的读/比较并且对 大页CAM端口执行大设置位的读/比较。如果使用小或大设置位发生"命中",使用"大页" 位来为命中赋予资格。如果使用大设置位检测到大页命中并且大页位被设置为1,则生成 非零n位大命中向量信号并且将其应用于OR门1001。大命中向量信号(指示大页命中) 的n位中的任何位中的任何非零值导致从OR门1001输出的的大命中值1,OR门1001控 制复用器1002在小设置位和大设置位之间进行选择。所选择的大或小设置应用于数据阵 列927 (即,以便选择数据阵列的高速缓存集合中的一个集合)。因此,从OR门1001输出的 大命中值1致使复用器1002选择大设置位而从OR门1001输出的大命中值0致使复用器 1002选择小设置位。在每一种情况中,设置位用于择选TLB数据阵列927中的特定高速缓 存集合。在替代实现方式中,小命中向量可应用于OR门,诸如1001,而用作选择信号的输出 应用于复用器1002 (即,以便对于非零值选择小设置位)。
[0073] 因此,标记阵列925如同在常规TLB中一样,仅要求一个写端口。该写端口根据被 写入TLB的页尺寸选择小或大设置位。同样,根据正在被写的页的尺寸写"大页"位值。
[0074] 在一个实施例中,数据阵列927具有一个读端口用于节省功率和面积,以及使得 数据阵列与任何常规的TLB数据阵列完全相同。为此,需要为数据阵列读仲裁(arbitrate) 标记命中向量(用作通道选择信号,如下所描述的)和设置位。在一个实施例中,仲裁策略 按如下实现。如果大读端口中存在命中,大设置位用于读数据阵列并且使用大读端口命中 向量。否则,使用小设置位和小读端口命中向量。
[0075] 总体上在图10B中示出了这种情况,该图示出包括复用器1005-1006和OR门1001 的选择逻辑926的一个实施例的附加细节。来自标记阵列925的小命中向量和大命中向量 被应用为对于复用器1006的输入,其中复用器1006响应于从OR门1001输出的大命中信 号而被控制。因此,如果存在大页命中,大命中输出将是1并且将致使复用器1006选择大 命中向量;如果存在小页命中,从OR门1001输出的大命中将是〇并且将致使复用器1006 选择小命中向量。
[0076] 在一个实施例中,n位小/大命中向量标识有待从数据阵列927读取的高速缓存 通道(cacheway)。例如,如果数据阵列927被实现为4通道(4 一way)高速缓存,通道选 择命中向量可包括4位信号,其中,每个位标识数据阵列927的不同通道(例如,通道1 = 0010,通道0 = 0001等等)。因此,大/小命中向量被应用于复用器1004以便选择与经由 大/小设置位选择的高速缓存集合相关联的数据阵列927的通道之一。
[0077]另一个复用器1005用于基于来自OR门1001的大命中信号选择物理地址(PA)位 [20:12]。如果存在大页命中,这些位取自线性地址位LA[20:12](与位[11:0]相同)。如 果存在小页命中,这些位取自数据阵列(与位[::21]相同)。
[0078] 以上配置允许将TLB内的任何条目用于任何所需页尺寸。这样,根据应用的需要 填充TLB。因为存在一个阵列而不是两个或更多个,存在大幅的面积和功率节省。成本相对 较小:标记阵列中的额外读/CAM端口和每个条目一个位以用于指示当前正在高速缓存的 页尺寸。另一个成本是数据阵列读的延迟,或者可替代地,还向数据阵列添加读端口。新复 用器的成本是可忽略的。
[0079] 在替代实施例中,可通过以与以上针对标记阵列描述的方式相同的方式向数据阵 列添加读端口来与标记阵列一起读取数据阵列。这样,为每个页尺寸提供其自身的读端口。 这些端口之间的仲裁被延后并仅在命中向量上或者在小和大通道选择复用器之后完成。在 这种配置中,面积和功率较高但是仍比使用单独的阵列更低。
[0080] 此外,阵列可被分割从而使得这些集合中的一些集合是统一的,同时这些集合中 的一些集合专用于仅一个页尺寸。例如,这些集合中的一半可由小页和大页共享,而这些集 合中的另一半可专用于仅小页。这样,对于非统一集合,额外读端口的成本得到节省。
[0081] 可替代地或附加地,阵列可被分割从而使得这些通道中的一些通道是统一的,同 时这些通道中的一些通道专用于仅一个页尺寸。例如,这些通道中的一半可由小页和大页 共享,而这些通道中的另一半可专用于仅小页。这样,对于非统一通道,额外读端口的成本 得到节省。
[0082] 图11中示出根据本发明的一个实施例的方法。在1110,从阵列(例如,诸如以上 讨论的TLB)读取大和小设置条目。在1101,生成大页命中向量和小页命中向量。在1102, 确定是存在大页命中还是小页命中(例如,基于来自1101的命中向量)。如果大页命中,则 在1103,大设置位用于从高速缓存数据阵列选择集合,并且在1105,大页命中向量用于从 数据阵列选择通道。如果在1102确定小页命中,则在1104,小设置位用于从高速缓存数据 阵列选择集合,并且在1106,小页命中向量用于从数据阵列选择通道。在每一种情况下,在 1107,某些经转换的或者未经转换的位可在结果中使用,取决于是存在大命中还是小命中。 例如,如以上所描述的,在一个实施例中,未经转换的位LA[20:12]可用于大命中并且从数 据阵列927读取的经转换的位PA[20:12]可用于小命中。在1108,在所选择的设置和通道 从高速缓存数据读取物理地址转换。
[0083] 尽管以上描述的本发明的各实施例经由大命中向量
当前第4页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1