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

文档序号:9620869阅读:来源:国知局
及在查找被实际发射前预取这些地址转换显著的提高了结果是TLB命中的查找的机 会,并且相反,减少了TLB未命中。如由BT机制110促进的TLB预取提供预取技术,预取技 术包括硬件-软件共同设计的TLB预取的用户,与复杂的、死板的和非智能的传统的只有硬 件预取相反,且进而为推测TLB模式提供观察和利用静态代码分析和动态代码分析两者以 利用控制指令和明确的预取请求控制TLB预取。
[0041] 通信/配置逻辑216可促进与各种硬件预取器、软件预取器、编译器、编程代码、指 令等动态通信和保持配置的能力。在确保与变化的技术、参数、协议、标准等的兼容性时,通 信/配置逻辑216进一步促进与各种计算设备(如移动计算设备(如各种类型的智能电话、 平板计算机、笔记本计算机等)、网络(如因特网、云计算网络等)、网站(如社交网站(如 Facebook?、LinkedIn?、Googlef?等))等动态通信和保持配置的能力。
[0042] 可以预想的是任何数量和类型的组件可被增加和/或从BT机制110移除以便于 包括增加、移除、和/或提升特定特征的各个实施例。为了简洁、清楚和易于理解宏融合机 制110,本文没有显示或详述多个标准的和/或周知的组件,如计算设备的那些。可以预想 的是本文描述的实施例并不限制任何特定的技术、拓扑、系统、架构和/或标准并足够动态 以适用和适配到任何未来的改变。
[0043]图3示出了根据一种实施例的采用由图1的具有预取机制110的二进制转换推动 的二进制转换引擎310的系统300。如图所示,在一种实施例中,系统300包括BT引擎310, 其通过BT机制110便于基于BT的收集和分析与用于动态和高效的负载执行的TLB行为有 关的信息以控制TLB预取。需要注意的是实施例并不会限制于本文图3中示出的各种组件, 并且任何数量的组件可被增加、移除、或替换,如系统300采用三个硬件预取器302-306,但 是实施例并不会限制于三个预取器或简单的硬件预取器,并且可使用任何数目和类型的预 取器,如软件预取器或者甚至是硬件和软件预取器的组合。此外,为了简洁、清楚和易于理 解,这里不会再描述或重复上面参考图2描述的BT机制110的多个特征。
[0044] 在一种实施例中,如在图2中所示的BT机制110的各种组件被用于推动所示出的 BT引擎310,如指令逻辑210以选择和应用指令以用于执行它的对应的任务,如这里所示出 的TLBPF0指令以启用/禁用TLB预取。基于由参考图2所示的转换逻辑204和推测/预 测逻辑206分别执行的代码的转换和TLB模式的推测/预测推荐和应用这些指令。
[0045] 如参考图2前述的那样,用于操作数的编码,如比特序列350可以是如下的: HE | SE | 0 | 0 | H3 | H2 | H11H0 |,其中HE表示以及可被用于编程硬件驱动的TLB预取启用(或 禁用),SE表示以及可被用于编程软件驱动的TLB预取启用(或禁用),H3-H0指代选择16 个可能的硬件预取器中的1个(例如,〇〇〇〇可意指没有硬件预取器被选择,1111可意指所 有的硬件预取器被选择等)。而且,如图示的,比特HE 324和SE 326可分别被用于启用/ 禁用硬件驱动的预取314或软件驱动的预取318,但是这二个比特也可被用于完全启用或 禁用TLB预取。例如,如果不存在硬件预取器302、304、306,则HE比特324可被忽略,如果 HE和SE比特324和326两者都是0,则可能禁用预取。除了启用硬件驱动预取,TLBPR)指 令可被用于仅仅选择若干潜在的现有硬件预取器中的一个。
[0046] 在实施例中,硬件预取器302、304、306服务于将预取请求放入预取队列,预取队 列然后由Hff PF选择312复用,Hff PF选择312接收选择指令322的H3-H0比特,如TLBPF0 指令。所选的预取请求可然后被馈送到TLB预取队列316 (如先进先出(FIFO)队列等), 其由Hff PF启用314门控以确定硬件驱动的预取是否被如由在Hff PF启用314处接收的 TLBPF0指令324的HE比特确定的那样启用或禁用。类似的,由软件(例如使用TLBPF2指 令)生成的任何明确的预取请求也可被馈送到TLB预取队列316,其由SWPF启用318门控 以确定软件驱动的预取是否被如来自TLBPF0指令326的SE比特确定的那样启用或禁用。 在一种实施例中,解耦的PMH320可然后消耗任何从TLB预取队列316接收的请求并且当以 预取条目填入TLB时执行页面行程。
[0047] 图4A示出了根据一种实施例的便于TLB预取控制的方法400,该方法基于利用二 进制转换的静态代码分析。方法400可由包括硬件(如电路、专用逻辑、可编程逻辑等)、软 件(如在处理设备上运行的指令)、或者它们的组合的处理逻辑实现。在一种实施例中,方 法400可由图1的二进制转换机制110实现。
[0048] 返回参考图2的生成明确预取指令,在设计中这个方法是有用的,在设计中基于 BT的TLB预取与多个基于硬件的预取器联合使用,其中硬件预取器可被用于跟踪TLB访 问的特定模式,如包括常规跨步的空间模式或在其中可观察TLB查找的时间顺序的时间模 式。关于TLB访问模式的推测可被用于确定启用硬件预取器的类型而保持禁用其它预取 器。为了获得这个效果,在一种实施例中,可通过在代码转换的顶部增加TLBPF0指令扩充, 并且然后当执行每一个代码转换时,这个指令启用合适的硬件预取器和禁用所有其它的预 取器。在一种实施例中,TLBPF0指令也可被用于功率门控未使用的硬件预取器以减小功率 包络。首先,例如,当Hff PF选择比特被用于启用所有的硬件预取器以馈送请求给请求队列, 如参考图3描述的那样,每一个代码转换设置启用硬件驱动和软件驱动预取集的模式。一 旦执行代码分析,对应于类似于展示了代码模式的访问模式中的跨步的循环的代码模式的 所有代码转换通过改变TLBFP0指令被修改以仅仅选择基于跨步的硬件预取器,如这里在 图4A中显示的。
[0049] 方法400始于具有代码生成的开始的块402处。在块404处,以TLBPR)指令注释 代码转换,以及在块406处,确定是否具有基于跨步的访问。如果没有,则在块408处所有 的TLBPF指令被收集并且被提升到代码转换的顶部,并且随后在块410处以代码生成的结 束来结束该处理。返回到块406,如果有基于跨步的访问,则在块412处保持TLBPF0指令注 释,并且随后在块414处执行基于TLBPF0指令的注释,以及在块408处继续该处理。
[0050] 图4B示出了根据一种实施例基于利用二进制转换的动态代码分析和概括的便于 TLB预取控制的方法420。方法420可由可包括硬件(如电路、专用逻辑、可编程逻辑等)、 软件(如在处理设备上允许的指令)、或者它们的组合的处理逻辑实现。在一种实施例中, 方法420可由图1的二进制转换机制110实现。
[0051] 返回利用参考图2的应用模块214禁用TLB预取,首先,每一个代码转换被指派选 择时间TLB预取模式的TLBPF0指令。运行时可被用于跟踪这里如在图4B中示出的在每个 代码转换基础上启用的预取的数目和预取的精度。依赖于这些观察,在那些没有从预取中 获益的代码转换中的TLBPF0指令可被改变为禁用TLB预取。在这个所改变的TLBPF0指令 执行上,在随后的这些代码转换的运行期间,硬件TLB预取器被功率门控到较低的功率状 ??τ〇
[0052] 方法420始于开始动态分析的块422处,在块424处,概括TLB未命中。在块426 处,确定是否TLBPF被启用。如果是,则在块428处,为预取条目概括TLB未命中率并且在 块430处,还确定是否TLB预取被禁用。如果是,则在块432处TLBPF指令被指派给代码转 换并且在块436处收集所有的TLBPF指令。动态分析的过程结束于块438处。返回到块 430和426,如果分别TLB预取未被禁用或TLBPF被启用,则在块434处继续处理,还确定 TLB未命中的数量是否超过未命中的预定义的阈值数目。如果是,则在块440处TLBPF2指 令被指派或注释,以及处理在收集所有的TLBPF指令的块436中继续并且在块438处结束。 如果TLB未命中的数目不超过阈值,则处理跳转到收集所有的TLBPF指令的块436并且在 块438处结束。
[0053] 图4C示出了根据一种实施例的便于动态和高效的基于二进制转换的TLB预取的 方法450。方法450可由可包括硬件(如电路、专用逻辑、可编程逻辑等)、软件(如在处理 设备上允许的指令)、或者它们的组合的处理逻辑实现。在一种实施例中,方法450可由图 1的二进制转换机制110实现。
[0054] 方法450始于代码生成开始的块452处,并且在初始启用所有的硬件和软件预取 的块454处继续。在块456处,在一个实施例中,分析静态负载和存储模式。在块458处,确 定一个或多个所分析的模式是否是由具有给定参数(如参数#X)的给定的硬件预取器(如 HffPF·)可预测。如果是,则处理继续,在块460处当观察到的参数对HffPF#N设置为参数 X时,除了HffPF#N外禁用所有的硬件预取器。一旦完成那个处理或返回到块458,如果一 个或多个模式是不可预测的,则处理继续,在块462处,提升TLBPF指令到代码转换的顶部。 在块464处代码转换被完成和执行。
[0055] 在一个实施例中,在所转换的代码执行期间,在块466处以动态分析可继续该处 理,并且进而在块468处继续跟踪TLB预取的益处。在470处,确定TLB预取是否是有益 的。如果TLB预取是无益的,则在块472处禁用TLB预取。然后处理继续,在块474处提升 TLBFP指令到代码转换的顶部。在块476处,这个动态分析的处理结束,但是在执行期间,可 在块466处继续另一动态分析。
[0056] 返回到块470,如果TLB预取被认为是有益的,则在块478处确定TLB未命中的数 目是否大于预定义的未命中的阈值的数目。如果是,则在块480处,代码可被插入到用于软 件预取的转换中并且在块474处处理继续以提升TLBPF指令到代码转换的顶部。在块476 处,这个动态分析处理结束,但是在执行期间,可在块466处继续另一动态分析。
[005
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1