用于在计算系统处的软件程序中便于动态和高效地管理转换缓冲器预取的机制的制作方法_2

文档序号:9620869阅读:来源:国知局
br>[0026] 例如以及在一种实施例中,TLBPR)指令可被用于启用或禁用TLB预取。进而,例 如,在出现多个硬件预取器,如图3的硬件预取器302、304和306的情况中,TLBPR)指令也 可被用于选择一个或多个现有的硬件预取器。这个TLBPF指令的变形可具有例如8比特 立即值的一个操作数。对于该操作数的编码,如图3的比特序列350,可以是如下这样的: HE | SE | 0 | 0 | H3 | H2 | H11H0 |,其中,HE表示以及可被用于编程硬件驱动TLB预取启用(或禁 用),SE表示以及可被用于编程软件驱动TLB预取启用(或禁用),H3-H0涉及选中16个可 能的硬件预取器中的一个(例如〇〇〇〇可意指没有硬件预取器被选中,1111可意指所有的硬 件预取器被选中等等)。如前述的,比特HE和SE可被各自用于启用/禁用硬件驱动预取或 软件驱动预取,但是这两个比特可被用于完全启用/禁用TLB预取。例如,如果没有存在硬 件预取器,HE比特可被忽略。如果HE和SE比特两者都是0,然后预取可被禁用。除了启用 硬件驱动预取,TLBPF0指令被用于仅仅选择若干潜在的现有的硬件预取器中的一个。
[0027] 关于8比特操作数的低四位,H3-H0可被用于编程硬件("服")预取("PF")选 择,如图3的Hff PF选择312,以选择如图3的硬件预取器302、304和306中的哪一个硬件 预取器可被用于填充预取请求队列。所有1的编码可启用所有的硬件预取器;相反,所有0 的编码可禁用所有的硬件预取器。类似的,如果HE和SE两者都是0,则这可禁用整个TLB 预取,在此期间清除相关的TLB预取请求队列并且设置Hff PF选择到0000 (如所有的预取 器保持禁用那样)。完成具有突出的页面未命中处理程序("PMH")行程的任何预取请求 后,但不会启用更多的用于服务于所预取的请求的PMH行程。进而,通过这个TLBPF0指令 的执行并不会生成错误。如果硬件不支持TLB预取(类似于解耦PMH和预取请求队列), TLBPF0指令可被忽略并且不会被排序在其它存储器访问指令上,如加载、存储等,以及可仅 仅被排序在序列化指令上。
[0028] 关于TLBPF1指令,如果这些硬件预取器存在,则其为调谐而被用于在硬件预取器 中设置参数,硬件预取器如图3的硬件预取器302、304、306。一个示例包括在基于跨步的 预取器中的跨步的设置。这个TLBPF1指令可具有立即操作数,立即操作数指定将被编程到 预取器的值。如果不存在硬件驱动的TLB预取器,则这个指令可被静默地忽略。类似的,如 果存在多个硬件驱动的预取器,则操作数值可被编程到所有当前被选中的硬件预取器,如 由Hff PF选择编程,如图3的Hff PF选择312。如果HE被编程为0,这个跨步值可不被写到 任何预取器。如果只有多个存在的硬件预取器中的一个已被先前执行的TLBPF0指令选中, 该跨步值可仅仅被编程到那个特定的预取器。而且,这个指令的执行可能不会生成错误。 如果硬件不支持TLB预取或如果硬件驱动预取未被启用,则TLBPF1指令可被静默地忽略。 TLBPF1指令可能不会被排序到其它存储器访问指令上,如加载、存储等,并且可能仅仅会被 排序到串行化指令上。
[0029] 在一种实施例中,TLBPF2指令可被用于由软件生成明确的TLB预取请求。这个 TLBPF2指令可具有一个操作数,这个操作数指定虚拟页码("VPN"),为了这个VPN转换将 被预取。在执行时,如果SE已经由前面执行的TLBPF0指令启用,则对于该指定的VPN的预 取请求可被生成并且被插入到预取请求队列中。该队列可由解耦的PMH轮询并且执行所请 求的转换的页面行程。在完成时,可增加条目到TLB以及利用比特标记该条目以指示这是 预取的结果。确定在预取队列中的服务于请求相对于服务于非预取TLB未命中的优先级的 策略可依赖于一种方式,使得依赖于PMH上的压力,可能不会服务于任何所生成的预取请 求。而且,通过这个指令的执行不会生成错误。如果硬件不支持TLB预取或如果软件驱动 预取未被启用,TLBPF2指令可被静默地忽略。任何由页面行程引起的页面错误可被静默地 忽略并且不会被激活到页面错误处理程序。TLBPFO指令可能不会被排序到其它存储器访问 指令上,如加载、存储等,并且可能仅仅会被排序到串行化指令上。
[0030] 回去参考转换逻辑204,当产生代码转换时,它为潜在优化检查源代码。这个阶段 可被平衡(leverage)来检查静态代码以推测TLB访问模式。例如,考虑具有级数循环的源 代码,其利用循环计数器作为索引访问数组中的元素。访问其相对于数组开始的偏移量是 页面大小的倍数的任何元素都很可能涉及对于映射到新页面的地址的TLB查找,其潜在的 会在TLB中未命中。分析器208分析这个代码并且利用内在的跨步的TLB访问模式理解在 该代码中的循环结构。
[0031] 另一个在其中可由分析器208利用静态分析推测TLB访问模式的示例可包括一场 景,在其中由生产者指令操纵的数据变成对于消费者指令的地址(或指令偏移量)。例如, 考虑一场景,在其中通过写入新值到栈指针("SP")实例化新栈,并且然后数据被写入到这 个栈。这个代码结构的分析可被用于产生代码转换,其中栈指针的初始化可被移动到该代 码转换的顶部,并且跟随初始化可立即触发对于加载到SP的地址的TLB的预取。利用TLB 预取和从栈读或写的第一消费者指令之间的足够距离,地址转换可被加载到TLB中,并且 这个方式,可避免TLB未命中。
[0032] 除了分析静态代码,BT运行时也可被用于观察动态TLB访问模式。当由代码块高 频率访问的存储器位置的特定集合(如访问参考数据)而在代码块执行期间引起对于同样 的虚拟地址重复TLB查找时,这个方法很有用。该运行时被用于保持频繁发射的TLB查找的 计数,其对应于特定代码转换。例如,一旦对于特定虚拟地址的查找频率超过阈值,可利用 这个信息注释该代码转换,并且当执行这个代码时,对应于这个地址的地址转换可触发预 取。由二进制转换器推测的TLB访问模式可然后被用于控制利用一个或多个前述的TLB预 取指令的TLB预取。分别参考图4和图5示出了基于静态代码分析和动态代码分析的TLB 预取控制。
[0033] 在一种实施例中,接下来的是用于控制TLB预取的推测模式的用途:1)利用指令 逻辑210的选择模块212的预取模式的选择;2)利用应用模块214调谐基于硬件的预取器; 3)利用应用模块214禁用TLB预取;4)利用例如由选择模块212选择和由应用模块214应 用的TLBPF2指令生成明确的预取指令;以及5)当链接二个或多个代码转换时提升TLB预 取控制指令并且利用转换逻辑204执行另外的或重转换。将会进一步在下面以及在整个文 档中描述这些用途。
[0034] 关于利用应用模块214的基于硬件预取器的调谐,除了选择硬件预取器的类型 外,由推测/预测逻辑206的分析器208在分析代码中获取的信息可被用于调谐硬件预取 器,尤其是当利用基于跨步的预取器时。考虑前述的具有简单循环的代码,在预取器中的跨 步参数可被设置为利用TLBPF1指令(与选择基于跨步的硬件预取器的TLBPFO指令一起, 如果需要的话)的循环的连续迭代中的页面访问和观察的跨步值之间的距离作为操作数。 例如具有TLBPF1指令的代码转换指示基于跨步的预取和设置1的跨步可表现为: TLBPF1 Oxl
[0035] 例如,当跨步和非跨步的TLB查找交错会使得精确估计跨步很困难时,利用从静 态分析观察到的跨步与来自于观察动态TLB查找模式的跨步相比可得到较高的预测精确 性。此外,既然在这个特定代码块中的跨步可保持一样,对于这个代码块的代码转换可利用 这个跨步注释,并且记录和分析TLB查找以确定跨步的硬件预取器的部分可在代码转换的 连续执行期间为功率门控。
[0036] 现在参考利用例如TLBPF2指令生成精确预取指令,TLBPF2指令由选择模块212选 择和由应用模块214应用,关于跨步的观察可被用于生成如下的TLBPF2指令:
[0037] 例如,这些指令将会具有虚拟地址,其的映射将会作为指令編妈的一部分被饿取。 在执行上,假如软件驱动的预取还未被禁用,TLBPF2指令解码虚拟地址并且为这个地址插 入预取请求到由解耦的PMH(如图3的解耦的PMH 320)保持的队列中。不像实际的TLB未 命中,TLBPF2指令不强制PMH服务这个请求。例如,依赖于突出的不被服务的TLB未命中数 目,PMH可延迟或甚至忽略TLBPF指令以避免将TLB预取(其本质上可能是推测的)优先 于TLB未命中。另一个实例是在基于栈的访问中的,其中TLBPF指令可被用于生成TLB预 取,其中,代码转换的顶部可利用TLBPF2指令注释以预取映射由栈指针指向的页的地址。
[0038] 考虑当利用转换逻辑204链接起二个或多个代码转换和执行额外的或重转换时 提升TLB预取控制指令,在一种实施例中,可由BT转换逻辑204执行单个优化以建立链,在 链中涉及二个或多个代码转换,正如如果从代码转换A传送的控制比代码转换B的占优势 的情况下的链接代码转换A和代码转换B。这个链接可以是插入从代码转换A到代码转换 B的直接跳转的形式,或者组合代码转换A和B以形成更优化的转换(如传动提升)。当被 链接在一起的单个代码转换包括TLB预取控制指令时,进一步的优化可能是可行的。而且, 任何在代码转换B中的TLBPF2指令可被提升跨过转换边界到代码转换A。这个提升技术 在生产者-消费者情形中可尤其有用,例如,增加了预取和消费者(其利用被预取的TLB条 目)之间的距离并且在消费者执行之前为预取提供了足够的前置期以填入具有被请求的 条目的TLB。类似的,在链中提升TLBPF1指令跨过代码转换边界对确保及时设置跨步以预 取被请求的条目是有用的。当两个转换被传动提升(gear-promoted)时,可检测和消除在 TLB预取控制指令中的冗余,如两个连续的代码转换设置同样的预取模式。
[0039] 归功于TLB的有限容量,从TLB收回缓存的地址以为了缓存另一个地址转换,以及 随后的对于该收回的地址转换的TLB查找可能会导致TLB未命中。
[0040] 此外,利用如由BT机制110促进的二进制转换预测很可能在将来被发射的TLB查 找以
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1