CN105378683B - 用于在计算***处的软件程序中便于动态和高效地管理转换缓冲器预取的机制 - Google Patents
用于在计算***处的软件程序中便于动态和高效地管理转换缓冲器预取的机制 Download PDFInfo
- Publication number
- CN105378683B CN105378683B CN201380073137.3A CN201380073137A CN105378683B CN 105378683 B CN105378683 B CN 105378683B CN 201380073137 A CN201380073137 A CN 201380073137A CN 105378683 B CN105378683 B CN 105378683B
- Authority
- CN
- China
- Prior art keywords
- tlb
- block
- prefetching
- code
- analysis
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/654—Look-ahead translation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
描述了根据一种实施例的便于动态和高效的基于二进制转换的转换后备缓冲器预取的机制。一种实施例的方法,如本文描述的那样,包括在计算设备处将代码块转换成代码转换块。为了执行提交所述代码转换块。该方法可进一步包括在运行时跟踪该代码转换块的动态***行为,以及基于所跟踪的动态***行为的分析推测转换后备缓冲器(TLB)的预取。
Description
技术领域
本文描述的实施例一般涉及计算机编程。更特别的,实施例涉及用于在计算***处的软件程序中便于动态和高效地管理转换缓冲器预取的机制。
背景技术
转换旁路缓冲器(TLB)涉及硬件缓存,该硬件缓存存储虚拟-物理地址转换以及被用于提高虚拟地址转换速度。当存储器访问时,执行TLB查找以在该TLB中查找请求的地址转换,并且如果没找到该转换,该未命中被称为TLB未命中。然而传统的解决方案并不提供高效的管理TLB未命中的方法;例如,为基于硬件的页面行程表提供的一种传统方法确定该存储器访问的物理地址或者确定是否存在特定虚拟地址的入口。基于硬件的页面行程的高延迟使得TLB未命中昂贵和低效,其经常导致执行负载的显著放慢,导致功率和性能减缓。
发明内容
本申请提供一种便于转换缓冲器预取的装置,包括:用于在计算设备处将代码块转换为代码转换块的转换逻辑,其中代码转换块被提交以用于执行;以及用于在运行时跟踪代码转换块的动态***行为的推测逻辑,其中推测逻辑还用于基于对所跟踪的动态***行为的分析来推测转换旁路缓冲器TLB预取,其中转换逻辑还用于基于对动态***行为的分析将代码转换块重转换成代码重转换块。
本申请还提供一种便于转换缓冲器预取的方法,包括:在计算设备处将代码块转换为代码转换块,其中代码转换块被提交以用于执行;在运行时跟踪代码转换块的动态***行为;基于对所跟踪的动态***行为的分析来推测转换旁路缓冲器TLB预取;以及基于对动态***行为的分析将代码转换块重转换成代码重转换块。
本申请还提供一种机器可读介质,包括多个指令,指令响应于在计算设备上执行致使计算设备执行上述方法。
本申请还提供一种便于转换缓冲器预取的***,包括用于执行上述方法的机制。
本申请还提供一种便于转换缓冲器预取的装置,包括用于执行上述方法的部件。
本申请还提供一种计算设备,布置成用于执行上述方法。
本申请还提供一种通信设备,布置成用于执行上述方法。
本申请还提供一种便于转换缓冲器预取的装置,包括:用于在计算设备处将代码块转换为代码转换块的部件,其中代码转换块被提交以用于执行;用于在运行时跟踪代码转换块的动态***行为的部件;用于基于对所跟踪的动态***行为的分析来推测转换旁路缓冲器TLB预取的部件;以及用于基于对动态***行为的分析将代码转换块重转换成代码重转换块的部件。
附图说明
在附图中通过举例的方式、但不是以限制的方式阐明实施例,在附图中类似的附图标记指代类似的元件。
图1示出了根据一种实施例的具有预取机制的二进制转换,其为了在软件程序中便于转换缓冲器预取的基于二进制转换的管理。
图2示出了根据一种实施例的具有预取机制的二进制转换。
图3示出了根据一种实施例采用由图1的具有预取机制的二进制转换推动的二进制转换引擎的***。
图4A示出了根据一种实施例基于利用二进制转换的静态代码分析的便于TLB预取控制的方法。
图4B示出了根据一种实施例基于利用二进制转换的动态代码分析和性能分析的便于TLB预取控制的方法。
图4C示出了根据一种实施例基于便于动态和高效的二进制转换的TLB预取的方法。
图5示出了根据一种实施例的适于实现本公开的实施例的计算机***。
具体实施方式
在接下来的描述中,阐明了许多特定的细节。然而如文本描述的这样的实施例可被实行而不需要这些特定的细节。在其它示例中,为了不模糊本说明书的理解,并没有详细地示出众所周知的电路、结构和方法。
实施例提供了一种基于硬件-软件的机制,该机制用于利用基于二进制转换(BT)的TLB预取机制减少转换旁路缓冲器(TLB)的未命中的发生。在一种实施例中,基于BT的预取机制可包括使用基于硬件-软件的解决方案,这样当采用用于确定、预测和调度TLB预取的方法时,指令集架构(ISA)可被用于启用基于BT的TLB预取。在一种实施例,基于BT的机制克服了与传统方法有关的任何问题/限制,并且更通过提高TLB预取的质量而且减少了与传统的基于硬件-软件的TLB预取方案的有关的复杂性,为关于如静态代码分析和动态性能分析的信息的利用做准备以高效地控制和维持TLB预取。
提供未来TLB查找的精确预测的实施例通过消除传统地与页面行程延迟相关的减缓和TLB未命中而增加TLB命中的数目以加速执行代码。例如,TLB查找模式可被观察到并被用于预测未来的TLB查找。而且,可生成对这些未来的查找的预取请求和提供给例如TLB页面未命中处理程序(PMH),PMH然后行走页面表以及用被预取的地址转换填入TLB。
实施例提供了灵活的和简易的解决方案,其优于死板的和复杂的仅仅硬件的解决方案。例如,在一种实施例中,利用BT机制,在预取不具有相当的益处时,对于部分或所有的负载可关掉预取,。此外,BT机制兼容于任何数目的不能由具有传统的基于硬件的技术完成的机器、硬件封装和预取方案等。
而且,诸如当确定静态属性(如在循环中的页面访问中的跨步)可立即用于快速TLB预取线索(利用传统的***则这不可能),而这个信息可通过分析静态代码获得时,实施例可允许确定代码的静态和动态属性。类似的,BT机制的运行时组件通过对代码的动态属性进行简单的性能分析和分析来得知动态TLB行为。
图1示出了根据一种实施例的具有预取机制的二进制转换110,其为了在软件程序中便于管理基于二进制转换的转换缓冲器预取。计算设备100用作主机器以采用具有预取机制的二进制转换(“二进制转换机制”或简化为“BT机制”)110,其在一种实施例中,当采用用于精确确定、预测和调度的TLB预取的方法时,便于基于硬件-软件的解决方案利用ISA以启用基于BT的TLB预取。这个基于BT的TLB查找的精确预测通过消除与由传统方法带来的延迟一贯相关的缓慢和TLB未命中可增加TLB命中的数目以加速执行代码和它的工作量。
计算设备100可包括移动计算设备,如包括智能电话(如苹果公司的iPhone、动态研究公司的黑莓等)的蜂窝式电话、个人数字助理(PDA)等、平板计算机(如苹果公司的iPad、三星公司的Galaxy 3等)、膝上计算机(如笔记本、上网本、超级本等)、电子阅读器(如亚马逊公司的Kindle、庞诺书店的Nook等)等。计算设备100可进一步包括机顶盒(如基于因特网的有线电视机顶盒等)、以及较大的计算设备,如台式计算机、服务器计算机等。
计算设备100进一步包括一个或多个处理器102、存储设备104、网络设备、驱动器等等、操作***(OS)106、以及输入/输出(I/O)源108,如触摸屏、触摸面板、触摸板、虚拟或常规键盘、虚拟或常规鼠标等。需要注意的是类似“计算设备”、“节点”、“计算节点”、“客户端”、“主机”、“服务器”、“存储服务器”、“机器”、“设备”、“计算设备”、“计算机”、“计算***”等等的术语在整个文档中可被可替换的使用。
在一种实施例中,二进制转换机制110提供采用利用BT的硬件-软件方式的解决方案以控制和管理TLB预取,该解决方案减少了基于硬件的复杂性,提高了与预取有关的精确性以及减少了用于TLB预取的功率耗损。在一种实施例中,通过分析静态代码和观察动态TLB查找,BT被用于推断TLB访问模式。进而,这个推断的模式被用于控制使用控制指令和明确的预取请求的TLB预取行为。
图2示出了根据一种实施例的具有预取机制的二进制转换110。在一种实施例中,二进制转换机制110包括数个组件,如接收逻辑202、转变逻辑204、包括分析器208的推测/预测逻辑206、具有选择模块212和应用模块214的指令逻辑210、传送逻辑216、执行逻辑216、以及通信/兼容性模块218。整个这篇文档,“逻辑”可被替换的称作“组件”或“模块”,并且通过举例的方式包括软件、硬件和/或软件和硬件的任何组合,如固件。
在一种实施例中,接收逻辑202接收来自于一个或多个源(如,图3中的硬件预取器302、304、306)的软件程序的代码指令或代码块,在这种情况下代码指令随后被转发到转换逻辑204。BT机制110提供虚拟化技术,在这种情况下,通过转换逻辑204可执行的二进制被从一种ISA无缝的转换为另一种,例如以获得高效率和高性能而不浪费资源和功率的目的。
在一些实施例中,转换逻辑204分析源二进制的代码块并且在目标ISA中生成功能性等同的代码块(也称为“代码转换”或“代码转换块”),进而,转换逻辑204在代码转换上执行优化以及为了执行而调度被转换的目标ISA代码块。运行时可负责跟踪所生成的代码块、在观察代码流的基础上链接起代码转换、跟踪类似于分支行为的动态***行为以及通过重转换源二进制代码块响应这些动态行为。在特定场景和实施例中,当源和目标ISA可能保持一样时,BT也可纯粹地被用于代码优化。可以考虑的是BT机制110不依赖于任何特定的ISA或目标ISA是否与源ISA相同或不同。
在一种实施例中,前面提到的“运行时”指代的是推测/预测逻辑(“推测逻辑”)206,其包括能够在运行时或转换代码块执行期间执行转换代码块的运行时跟踪。执行这个运行时跟踪以当转换代码块正被执行时跟踪它的动态***行为。然后可通过分析模块208分析(为动态分析)该动态***行为,然后将结果发送到转换逻辑204以基于与它们的动态***行为有关的结果重转换所转换的代码块。然后为了更加动态和高效的TLB预取,重新提交所重转换的代码块以用于执行以增加TLB命中和减少TLB未命中。在一种实施例中,执行逻辑216被用于提交代码或任何其他转换以用于执行或实现。例如初始所转换的代码块(基于静态分析)可由执行逻辑216提交以用于执行,类似的,仍然可由执行逻辑216提交重转换的代码块(基于动态分析)以用于执行。
在一种实施例中,由推测/预测逻辑206利用如由分析器208提供的静态代码分析和/或动态代码分析处理代码转换以预测TLB访问的模式,在这种情况下,所推测的模式然后被用于控制和预测TLB预取。进而,在一种实施例中,所提出的基于BT的TLB预取对于不用基于硬件的TLB预取器的是适用的和可行的,在这种情况中BT软件生成明确的TLB预取请求以如利用硬件驱动的TLB预取器一样执行软件驱动预取,例如硬件驱动的TLB预取器如图3的硬件预取器302、304、306,在这种情况中,除了生成预取,允许灵活性和设计折衷的BT软件也调谐和控制所述硬件预取器。进而,利用BT机制110,BT运行时被用于得知TLB预取的效率,其包括当TLB预取被认为是不利的时,禁用TLB预取。
一旦推测/预测逻辑206提出推测,该推测和任何相关的信息就可被转发到指令逻辑210。在一种实施例中,指令逻辑210被用于提出TLB预取指令(“TLBPF”或“TLBPF指令”)。选择模块212选择TLBPF指令,而应用模块214应用所选择的TLBPF指令。为了预测和控制TLB预取,该选择的TLBPF指令可用作BT机制110的工具以利用所收集的有关执行负载的TLB行为的信息。例如,接下来的TLBPF指令三个变形可被用于:1)TLBPF0立即(imm)用于设置TLB预取模式至立即;2)TLBPF1 imm用于设置TLB预取跨向立即;3)TLBPF2 存储器(mem)用于为地址存储器***TLB预取请求。
例如以及在一种实施例中,TLBPF0指令可被用于启用或禁用TLB预取。进而,例如,在出现多个硬件预取器,如图3的硬件预取器302、304和306的情况中,TLBPF0指令也可被用于选择一个或多个现有的硬件预取器。这个TLBPF指令的变形可具有例如8比特立即值的一个操作数。对于该操作数的编码,如图3的比特序列350,可以是如下这样的:|HE|SE|0|0|H3|H2|H1|H0|,其中,HE表示以及可被用于编程硬件驱动TLB预取启用(或禁用),SE表示以及可被用于编程软件驱动TLB预取启用(或禁用),H3-H0涉及选中16个可能的硬件预取器中的一个(例如0000可意指没有硬件预取器被选中,1111可意指所有的硬件预取器被选中等等)。如前述的,比特HE和SE可被各自用于启用/禁用硬件驱动预取或软件驱动预取,但是这两个比特可被用于完全启用/禁用TLB预取。例如,如果没有存在硬件预取器,HE比特可被忽略。如果HE和SE比特两者都是0,然后预取可被禁用。除了启用硬件驱动预取,TLBPF0指令被用于仅仅选择若干潜在的现有的硬件预取器中的一个。
关于8比特操作数的低四位,H3-H0可被用于编程硬件(“HW”)预取(“PF”)选择,如图3的HW PF选择312,以选择如图3的硬件预取器302、304和306中的哪一个硬件预取器可被用于填充预取请求队列。所有1的编码可启用所有的硬件预取器;相反,所有0的编码可禁用所有的硬件预取器。类似的,如果HE和SE两者都是0,则这可禁用整个TLB预取,在此期间清除相关的TLB预取请求队列并且设置HW PF选择到0000(如所有的预取器保持禁用那样)。完成具有突出的页面未命中处理程序(“PMH”)行程的任何预取请求后,但不会启用更多的用于服务于所预取的请求的PMH行程。进而,通过这个TLBPF0指令的执行并不会生成错误。如果硬件不支持TLB预取(类似于解耦PMH和预取请求队列),TLBPF0指令可被忽略并且不会被排序在其它存储器访问指令上,如加载、存储等,以及可仅仅被排序在序列化指令上。
关于TLBPF1指令,如果这些硬件预取器存在,则其为调谐而被用于在硬件预取器中设置参数,硬件预取器如图3的硬件预取器302、304、306。一个示例包括在基于跨步的预取器中的跨步的设置。这个TLBPF1指令可具有立即操作数,立即操作数指定将被编程到预取器的值。如果不存在硬件驱动的TLB预取器,则这个指令可被静默地忽略。类似的,如果存在多个硬件驱动的预取器,则操作数值可被编程到所有当前被选中的硬件预取器,如由HWPF选择编程,如图3的HW PF选择312。如果HE被编程为0,这个跨步值可不被写到任何预取器。如果只有多个存在的硬件预取器中的一个已被先前执行的TLBPF0指令选中,该跨步值可仅仅被编程到那个特定的预取器。而且,这个指令的执行可能不会生成错误。如果硬件不支持TLB预取或如果硬件驱动预取未被启用,则TLBPF1指令可被静默地忽略。TLBPF1指令可能不会被排序到其它存储器访问指令上,如加载、存储等,并且可能仅仅会被排序到串行化指令上。
在一种实施例中,TLBPF2指令可被用于由软件生成明确的TLB预取请求。这个TLBPF2指令可具有一个操作数,这个操作数指定虚拟页码(“VPN”),为了这个VPN转换将被预取。在执行时,如果SE已经由前面执行的TLBPF0指令启用,则对于该指定的VPN的预取请求可被生成并且被***到预取请求队列中。该队列可由解耦的PMH轮询并且执行所请求的转换的页面行程。在完成时,可增加条目到TLB以及利用比特标记该条目以指示这是预取的结果。确定在预取队列中的服务于请求相对于服务于非预取TLB未命中的优先级的策略可依赖于一种方式,使得依赖于PMH上的压力,可能不会服务于任何所生成的预取请求。而且,通过这个指令的执行不会生成错误。如果硬件不支持TLB预取或如果软件驱动预取未被启用,TLBPF2指令可被静默地忽略。任何由页面行程引起的页面错误可被静默地忽略并且不会被激活到页面错误处理程序。TLBPF0指令可能不会被排序到其它存储器访问指令上,如加载、存储等,并且可能仅仅会被排序到串行化指令上。
回去参考转换逻辑204,当产生代码转换时,它为潜在优化检查源代码。这个阶段可被平衡(leverage)来检查静态代码以推测TLB访问模式。例如,考虑具有级数循环的源代码,其利用循环计数器作为索引访问数组中的元素。访问其相对于数组开始的偏移量是页面大小的倍数的任何元素都很可能涉及对于映射到新页面的地址的TLB查找,其潜在的会在TLB中未命中。分析器208分析这个代码并且利用内在的跨步的TLB访问模式理解在该代码中的循环结构。
另一个在其中可由分析器208利用静态分析推测TLB访问模式的示例可包括一场景,在其中由生产者指令操纵的数据变成对于消费者指令的地址(或指令偏移量)。例如,考虑一场景,在其中通过写入新值到栈指针(“SP”)实例化新栈,并且然后数据被写入到这个栈。这个代码结构的分析可被用于产生代码转换,其中栈指针的初始化可被移动到该代码转换的顶部,并且跟随初始化可立即触发对于加载到SP的地址的TLB的预取。利用TLB预取和从栈读或写的第一消费者指令之间的足够距离,地址转换可被加载到TLB中,并且这个方式,可避免TLB未命中。
除了分析静态代码,BT运行时也可被用于观察动态TLB访问模式。当由代码块高频率访问的存储器位置的特定集合(如访问参考数据)而在代码块执行期间引起对于同样的虚拟地址重复TLB查找时,这个方法很有用。该运行时被用于保持频繁发射的TLB查找的计数,其对应于特定代码转换。例如,一旦对于特定虚拟地址的查找频率超过阈值,可利用这个信息注释该代码转换,并且当执行这个代码时,对应于这个地址的地址转换可触发预取。由二进制转换器推测的TLB访问模式可然后被用于控制利用一个或多个前述的TLB预取指令的TLB预取。分别参考图4和图5示出了基于静态代码分析和动态代码分析的TLB预取控制。
在一种实施例中,接下来的是用于控制TLB预取的推测模式的用途:1)利用指令逻辑210的选择模块212的预取模式的选择;2)利用应用模块214调谐基于硬件的预取器;3)利用应用模块214禁用TLB预取;4)利用例如由选择模块212选择和由应用模块214应用的TLBPF2指令生成明确的预取指令;以及5)当链接二个或多个代码转换时提升TLB预取控制指令并且利用转换逻辑204执行另外的或重转换。将会进一步在下面以及在整个文档中描述这些用途。
关于利用应用模块214的基于硬件预取器的调谐,除了选择硬件预取器的类型外,由推测/预测逻辑206的分析器208在分析代码中获取的信息可被用于调谐硬件预取器,尤其是当利用基于跨步的预取器时。考虑前述的具有简单循环的代码,在预取器中的跨步参数可被设置为利用TLBPF1指令(与选择基于跨步的硬件预取器的TLBPF0指令一起,如果需要的话)的循环的连续迭代中的页面访问和观察的跨步值之间的距离作为操作数。例如具有TLBPF1指令的代码转换指示基于跨步的预取和设置1的跨步可表现为:
例如,当跨步和非跨步的TLB查找交错会使得精确估计跨步很困难时,利用从静态分析观察到的跨步与来自于观察动态TLB查找模式的跨步相比可得到较高的预测精确性。此外,既然在这个特定代码块中的跨步可保持一样,对于这个代码块的代码转换可利用这个跨步注释,并且记录和分析TLB查找以确定跨步的硬件预取器的部分可在代码转换的连续执行期间为功率门控。
现在参考利用例如TLBPF2指令生成精确预取指令,TLBPF2指令由选择模块212选择和由应用模块214应用,关于跨步的观察可被用于生成如下的TLBPF2指令:
例如,这些指令将会具有虚拟地址,其的映射将会作为指令编码的一部分被预取。在执行上,假如软件驱动的预取还未被禁用,TLBPF2指令解码虚拟地址并且为这个地址***预取请求到由解耦的PMH(如图3的解耦的PMH 320)保持的队列中。不像实际的TLB未命中,TLBPF2指令不强制PMH服务这个请求。例如,依赖于突出的不被服务的TLB未命中数目,PMH可延迟或甚至忽略TLBPF指令以避免将TLB预取(其本质上可能是推测的)优先于TLB未命中。另一个实例是在基于栈的访问中的,其中TLBPF指令可被用于生成TLB预取,其中,代码转换的顶部可利用TLBPF2指令注释以预取映射由栈指针指向的页的地址。
考虑当利用转换逻辑204链接起二个或多个代码转换和执行额外的或重转换时提升TLB预取控制指令,在一种实施例中,可由BT转换逻辑204执行单个优化以建立链,在链中涉及二个或多个代码转换,正如如果从代码转换A传送的控制比代码转换B的占优势的情况下的链接代码转换A和代码转换B。这个链接可以是***从代码转换A到代码转换B的直接跳转的形式,或者组合代码转换A和B以形成更优化的转换(如传动提升)。当被链接在一起的单个代码转换包括TLB预取控制指令时,进一步的优化可能是可行的。而且,任何在代码转换B中的TLBPF2指令可被提升跨过转换边界到代码转换A。这个提升技术在生产者-消费者情形中可尤其有用,例如,增加了预取和消费者(其利用被预取的TLB条目)之间的距离并且在消费者执行之前为预取提供了足够的前置期以填入具有被请求的条目的TLB。类似的,在链中提升TLBPF1指令跨过代码转换边界对确保及时设置跨步以预取被请求的条目是有用的。当两个转换被传动提升(gear-promoted)时,可检测和消除在TLB预取控制指令中的冗余,如两个连续的代码转换设置同样的预取模式。
归功于TLB的有限容量,从TLB收回缓存的地址以为了缓存另一个地址转换,以及随后的对于该收回的地址转换的TLB查找可能会导致TLB未命中。
此外,利用如由BT机制110促进的二进制转换预测很可能在将来被发射的TLB查找以及在查找被实际发射前预取这些地址转换显著的提高了结果是TLB命中的查找的机会,并且相反,减少了TLB未命中。如由BT机制110促进的TLB预取提供预取技术,预取技术包括硬件-软件共同设计的TLB预取的用户,与复杂的、死板的和非智能的传统的只有硬件预取相反,且进而为推测TLB模式提供观察和利用静态代码分析和动态代码分析两者以利用控制指令和明确的预取请求控制TLB预取。
通信/配置逻辑216可促进与各种硬件预取器、软件预取器、编译器、编程代码、指令等动态通信和保持配置的能力。在确保与变化的技术、参数、协议、标准等的兼容性时,通信/配置逻辑216进一步促进与各种计算设备(如移动计算设备(如各种类型的智能电话、平板计算机、笔记本计算机等)、网络(如因特网、云计算网络等)、网站(如社交网站(如Facebook、LinkedIn、Google+等))等动态通信和保持配置的能力。
可以预想的是任何数量和类型的组件可被增加和/或从BT机制110移除以便于包括增加、移除、和/或提升特定特征的各个实施例。为了简洁、清楚和易于理解宏融合机制110,本文没有显示或详述多个标准的和/或周知的组件,如计算设备的那些。可以预想的是本文描述的实施例并不限制任何特定的技术、拓扑、***、架构和/或标准并足够动态以适用和适配到任何未来的改变。
图3示出了根据一种实施例的采用由图1的具有预取机制110的二进制转换推动的二进制转换引擎310的***300。如图所示,在一种实施例中,***300包括BT引擎310,其通过BT机制110便于基于BT的收集和分析与用于动态和高效的负载执行的TLB行为有关的信息以控制TLB预取。需要注意的是实施例并不会限制于本文图3中示出的各种组件,并且任何数量的组件可被增加、移除、或替换,如***300采用三个硬件预取器302-306,但是实施例并不会限制于三个预取器或简单的硬件预取器,并且可使用任何数目和类型的预取器,如软件预取器或者甚至是硬件和软件预取器的组合。此外,为了简洁、清楚和易于理解,这里不会再描述或重复上面参考图2描述的BT机制110的多个特征。
在一种实施例中,如在图2中所示的BT机制110的各种组件被用于推动所示出的BT引擎310,如指令逻辑210以选择和应用指令以用于执行它的对应的任务,如这里所示出的TLBPF0指令以启用/禁用TLB预取。基于由参考图2所示的转换逻辑204和推测/预测逻辑206分别执行的代码的转换和TLB模式的推测/预测推荐和应用这些指令。
如参考图2前述的那样,用于操作数的编码,如比特序列350可以是如下的:|HE|SE|0|0|H3|H2|H1|H0|,其中HE表示以及可被用于编程硬件驱动的TLB预取启用(或禁用),SE表示以及可被用于编程软件驱动的TLB预取启用(或禁用),H3-H0指代选择16个可能的硬件预取器中的1个(例如,0000可意指没有硬件预取器被选择,1111可意指所有的硬件预取器被选择等)。而且,如图示的,比特HE 324和SE 326可分别被用于启用/禁用硬件驱动的预取314或软件驱动的预取318,但是这二个比特也可被用于完全启用或禁用TLB预取。例如,如果不存在硬件预取器302、304、306,则HE比特324可被忽略,如果HE和SE比特324和326两者都是0,则可能禁用预取。除了启用硬件驱动预取,TLBPF0指令可被用于仅仅选择若干潜在的现有硬件预取器中的一个。
在实施例中,硬件预取器302、304、306服务于将预取请求放入预取队列,预取队列然后由HW PF选择312复用,HW PF选择312接收选择指令322的H3-H0比特,如TLBPF0指令。所选的预取请求可然后被馈送到TLB预取队列316(如先进先出(FIFO)队列等),其由HW PF启用314门控以确定硬件驱动的预取是否被如由在HW PF启用314处接收的TLBPF0指令324的HE比特确定的那样启用或禁用。类似的,由软件(例如使用TLBPF2指令)生成的任何明确的预取请求也可被馈送到TLB预取队列316,其由SW PF启用318门控以确定软件驱动的预取是否被如来自TLBPF0指令326的SE比特确定的那样启用或禁用。在一种实施例中,解耦的PMH320可然后消耗任何从TLB预取队列316接收的请求并且当以预取条目填入TLB时执行页面行程。
图4A示出了根据一种实施例的便于TLB预取控制的方法400,该方法基于利用二进制转换的静态代码分析。方法400可由包括硬件(如电路、专用逻辑、可编程逻辑等)、软件(如在处理设备上运行的指令)、或者它们的组合的处理逻辑实现。在一种实施例中,方法400可由图1的二进制转换机制110实现。
返回参考图2的生成明确预取指令,在设计中这个方法是有用的,在设计中基于BT的TLB预取与多个基于硬件的预取器联合使用,其中硬件预取器可被用于跟踪TLB访问的特定模式,如包括常规跨步的空间模式或在其中可观察TLB查找的时间顺序的时间模式。关于TLB访问模式的推测可被用于确定启用硬件预取器的类型而保持禁用其它预取器。为了获得这个效果,在一种实施例中,可通过在代码转换的顶部增加TLBPF0指令扩充,并且然后当执行每一个代码转换时,这个指令启用合适的硬件预取器和禁用所有其它的预取器。在一种实施例中,TLBPF0指令也可被用于功率门控未使用的硬件预取器以减小功率包络。首先,例如,当HW PF选择比特被用于启用所有的硬件预取器以馈送请求给请求队列,如参考图3描述的那样,每一个代码转换设置启用硬件驱动和软件驱动预取集的模式。一旦执行代码分析,对应于类似于展示了代码模式的访问模式中的跨步的循环的代码模式的所有代码转换通过改变TLBFP0指令被修改以仅仅选择基于跨步的硬件预取器,如这里在图4A中显示的。
方法400始于具有代码生成的开始的块402处。在块404处,以TLBPF0指令注释代码转换,以及在块406处,确定是否具有基于跨步的访问。如果没有,则在块408处所有的TLBPF指令被收集并且被提升到代码转换的顶部,并且随后在块410处以代码生成的结束来结束该处理。返回到块406,如果有基于跨步的访问,则在块412处保持TLBPF0指令注释,并且随后在块414处执行基于TLBPF0指令的注释,以及在块408处继续该处理。
图4B示出了根据一种实施例基于利用二进制转换的动态代码分析和性能分析的便于TLB预取控制的方法420。方法420可由可包括硬件(如电路、专用逻辑、可编程逻辑等)、软件(如在处理设备上允许的指令)、或者它们的组合的处理逻辑实现。在一种实施例中,方法420可由图1的二进制转换机制110实现。
返回利用参考图2的应用模块214禁用TLB预取,首先,每一个代码转换被指派选择时间TLB预取模式的TLBPF0指令。运行时可被用于跟踪这里如在图4B中示出的在每个代码转换基础上启用的预取的数目和预取的精度。依赖于这些观察,在那些没有从预取中获益的代码转换中的TLBPF0指令可被改变为禁用TLB预取。在这个所改变的TLBPF0指令执行上,在随后的这些代码转换的运行期间,硬件TLB预取器被功率门控到较低的功率状态。
方法420始于开始动态分析的块422处,在块424处,对TLB未命中进行性能分析。在块426处,确定是否TLB PF被启用。如果是,则在块428处,为预取条目对TLB未命中率进行性能分析并且在块430处,还确定是否TLB预取被禁用。如果是,则在块432处TLBPF指令被指派给代码转换并且在块436处收集所有的TLBPF指令。动态分析的过程结束于块438处。返回到块430和426,如果分别TLB预取未被禁用或TLB PF被启用,则在块434处继续处理,还确定TLB未命中的数量是否超过未命中的预定义的阈值数目。如果是,则在块440处TLBPF2指令被指派或注释,以及处理在收集所有的TLBPF指令的块436中继续并且在块438处结束。如果TLB未命中的数目不超过阈值,则处理跳转到收集所有的TLBPF指令的块436并且在块438处结束。
图4C示出了根据一种实施例的便于动态和高效的基于二进制转换的TLB预取的方法450。方法450可由可包括硬件(如电路、专用逻辑、可编程逻辑等)、软件(如在处理设备上允许的指令)、或者它们的组合的处理逻辑实现。在一种实施例中,方法450可由图1的二进制转换机制110实现。
方法450始于代码生成开始的块452处,并且在初始启用所有的硬件和软件预取的块454处继续。在块456处,在一个实施例中,分析静态负载和存储模式。在块458处,确定一个或多个所分析的模式是否是由具有给定参数(如参数#X)的给定的硬件预取器(如HWPF#N)可预测。如果是,则处理继续,在块460处当观察到的参数对HW PF#N设置为参数X时,除了HW PF#N外禁用所有的硬件预取器。一旦完成那个处理或返回到块458,如果一个或多个模式是不可预测的,则处理继续,在块462处,提升TLBPF指令到代码转换的顶部。在块464处代码转换被完成和执行。
在一个实施例中,在所转换的代码执行期间,在块466处以动态分析可继续该处理,并且进而在块468处继续跟踪TLB预取的益处。在470处,确定TLB预取是否是有益的。如果TLB预取是无益的,则在块472处禁用TLB预取。然后处理继续,在块474处提升TLBFP指令到代码转换的顶部。在块476处,这个动态分析的处理结束,但是在执行期间,可在块466处继续另一动态分析。
返回到块470,如果TLB预取被认为是有益的,则在块478处确定TLB未命中的数目是否大于预定义的未命中的阈值的数目。如果是,则在块480处,代码可被***到用于软件预取的转换中并且在块474处处理继续以提升TLBPF指令到代码转换的顶部。在块476处,这个动态分析处理结束,但是在执行期间,可在块466处继续另一动态分析。
图5示出了计算***500的实施例。计算***500表示计算和电子设备(有线或无线)的范畴,设备包括,例如桌面计算***、笔记本计算***、蜂窝电话、包括蜂窝启用PDA的个人数字助理(PDA)、机顶盒、智能电话、平板计算机等。可替换的计算***可包括更多、更少和/或不同的组件。
计算***500包括总线505(或链接、互联、或另一种类型的通信设备或通信信息的接口)和耦合到总线505上可处理信息的处理器510。虽然示出了计算设备500具有单个处理器,但是电子***500可包括多个处理器和/或协处理器,如一个或多个中央处理器、图形处理器和物理处理器等。计算***500可进一步包括随机访问存储器(RAM)或其他动态存储装置520(被称为主存),其耦合到总线505并且可存储信息和由处理器510执行的指令。主存520也可在由处理器510执行指令期间被用于存储临时变量或其它中间信息。
计算***500也可包括耦合到总线505可存储静态信息和用于处理器510的指令的只读存储器(ROM)和/或其它存储设备530。数据存储设备540可耦合到总线505以存储信息和指令。数据存储设备540,如磁盘或光盘和对应的驱动器,可以耦合到计算***500。
计算***500也可经由总线505耦合到显示设备550,如阴极射线管(CRT)、液晶显示器(LCD)或有机发光二极管(OLED)阵列,以显示信息给用户。用户输入设备560,包括含有字母数字的或其他键,可被耦合到总线505以通信信息和命令选择给处理器510。另一种类型的用户输入设备560是光标控制570,如鼠标、轨迹球、或光标方向键,以通信方向信息和命令选择给控制器510和控制在显示器550上的光标移动。计算***500的摄像机和麦克风阵列590可被耦合到总线505上以观察动作、记录视频和音频以及接收和传送视觉和声音命令。
计算***500可进一步包括网络接口580以提供对网络的访问,网络如局域网(LAN)、广域网(WAN)、城域网(MAN)、个人区域网络(PAN)、蓝牙、云网络、移动网络(如第三代(3G)等)、内联网、因特网等。网络接口580可包括,例如具有天线585的无线网络接口,天线585可表示一个或多个天线。网络接口580也可包括,例如与远程设备经由网络电缆587通信的有线网络接口,网络电缆587可以是,例如以太网电缆、同轴电缆、光纤电缆、串行电缆或并行电缆。
网络接口580可例如通过遵守IEEE 802.11b和/或802.11g标准提供对于LAN的访问和/或无线网络接口可例如通过遵守蓝牙标准提供对个人局域网络的访问。也可支持其它无线网络接口和/或协议,包括先前的和后来的标准的版本。
除了或代替经由无线LAN标准的通信,网络接口580可利用如时分多址(TDMA)协议、全球移动通信***(GSM)协议、码分多址(CDMA)协议和/或其它类型的无线通信协议提供无线通信。
网络接口580可包括一个或多个通信接口,如调制解调器、网络接口卡或其它周知的接口设备,如用于耦合到以太网、令牌环网或其它类型的物理有线或无线附件,其目的在于提供通信链接以支持例如LAN和WAN的(设备)。在这种方式中,计算***也可经由传统网络架构被耦合到数个外部设备、客户端、控制面、控制台或服务器,传统网络架构包括例如内联网或因特网。
可以认识到的是比上面描述的示例更少或更多配置的***对特定实现可以是优选的。因此计算***500的配置可依赖于许多因素从实现到实现变化,因素如价格约束、性能要求、技术改进或其它环境条件。电子设备或计算***500的示例可包括而不限于移动设备、个人数字助理、移动计算设备、智能电话、蜂窝电话、手持机、单向传呼机、双向寻呼机、消息设备、计算机、个人计算就(PC)、台式计算机、膝上计算机、笔记本计算机、手持计算机、平板计算机、服务器、服务器阵列或服务器场、网页服务器、网络服务器、因特网服务器、工作站、迷你计算机、大型计算机、超级计算机、网络设备、网页设备、分布式计算***、多处理器***、基于处理器的***、消费电子、可编程消费电子、电视、数字电视、机顶盒、无线访问点、基站、用户服务站、移动用户中心、无线网络控制器、路由器、集线器、网关、桥接器、交换机、机器或它们的组合。
实施例可被实现为以下任何或其组合:使用母板互联的一个或多个微芯片或集成电路、硬连线逻辑、由存储设备存储和由微处理器执行的软件、固件、专用集成电路(ASIC)和/或现场可编程门阵列(FPGA)。术语“逻辑”可包括,以举例的方式,软件或硬件和/或软件和硬件的组合。
实施例可被提供为例如计算机程序产品,计算机程序产品可包括具有在其上存储机器可执行指令的一个或多个机器可读介质,当机器可执行指令由一个或个多个机器,如计算机、计算机网络和其它电子设备执行时,其可致使一个或多个机器执行根据本文描述的实施例的操作。机器可读介质可包括但并不限于:软盘、光盘、CD-ROM(压缩盘-只读存储器)、磁光盘、ROM、RAM、EPROM(可擦除可编程只读存储器)、EEPROM(电可擦除可编程只读存储器)、磁的或光的卡、闪存或其它类型的适于存储机器可执行指令的介质/机器可读介质。
此外,实施例可像计算程序产品一样被下载,其中程序可经由通信链接(如调制解调器和/或网络连接)以一种或多种以载波或其它传播媒介体实现和/或调制的数据信号的方式从远程计算机(如服务器)被传送到请求的计算机(如客户端)。
对“一种实施例”、“实施例、“示例实施例”、“各种实施例”等的参考指示所描述的这些实施例可包括特定的特征、结构或特性,但是并不是每一种实施例都必须包括这些特定的特征、结构或特性。而且,一些实施例可具有对其它实施例而言的一些、所有、没有的特征。
在接下来的描述和权利要求中,可使用术语“耦合”以及它的衍生词。“耦合”被用于指示两个或多个元件协同操作或彼此交互,但是它们在它们之间可能有物理或电子元件介入,也可能没有。
如在权利要求中使用的这样,除非另有规定,序数形容词“第一”、“第二”、“第三”等用于描述通常元件,仅仅指示类似元件的不同实例将被参考,并不意图必须以给定时间、空间、等级或在任何其的他方式的顺序应用所描述的元件。
接下来的句子和/或示例关于进一步的实施例或示例。在这些示例中的细节可被用于一个或多个实施例中的任何地方。不同实施例或示例中的各个特征可以与包括的一些特征和不包括的其它特征广泛组合以适用于各种不同应用。一些实施例关于一种方法,包括:在计算设备处将代码块转换为代码转换块,其中所述代码转换块被提交用于执行;在运行时跟踪代码转换块的动态***行为;以及基于所跟踪的动态***行为的分析推测转换旁路缓冲器(TLB)预取。
实施例或示例包括任何以上的方法,进一步包括:分析所述代码转换块的该动态***行为,其中在静态分析和动态性能分析期间该分析为TLB访问提供模式,其中动态性能分析包括该动态***行为运行时跟踪。
实施例或示例包括任何以上的方法,进一步包括基于该动态***行为的该分析将所述代码转换块重转换成代码重转换块。
实施例或示例包括任何以上的方法,进一步包括为执行而提交所述代码转换块,其中该执行逻辑进一步为执行而提交所述代码重转换块。
实施例或示例包括任何以上的方法,进一步包括基于该动态***行为的该分析将指令与所述代码重转换块关联以控制该TLB预取。
实施例或示例包括任何以上的方法,其中所述指令包括基于该动态***行为的分析启用或禁用该TLB预取的第一指令,其中当确定TLB预取没有益处时禁用该TLB预取或当确定其有益处时启用该TLB预取。
实施例或示例包括任何以上的方法,其中所述指令进一步包括:在硬件预取器中设置参数的第二指令,其中该硬件预取器包括基于跨步的预取器;以及便于对于虚拟页码的TLB预取请求的生成的第三指令,为该虚拟页码执行该TLB预取,其中具有该虚拟页码的该TLB预取请求被置于预取请求队列中,其中该预取请求队列包括先进先出队列。
实施例或示例包括任何以上的方法,其中该计算***包括台式计算机、服务器计算机、机顶盒、包括智能电话、个人数字助理PDA、平板计算机、电子阅读器和膝上计算机中的一个或多个的移动计算机中的一个或多个。
另一实施例或示例包括执行上述的任一方法的任何装置。
在另一实施例或示例中,一种装置包括用于执行上述的任一方法的装置。
仍在另一实施例或示例中,至少一种机器可读存储介质包括多个指令,其响应于在计算设备上被执行,致使该计算设备执行根据上述的任一的方法的方法。
还在另一实施例或示例中,至少一种非易失性或有形的机器可读存储介质包括多个指令,其响应于在计算设备上被执行,致使该计算设备执行根据上述的任一的方法的方法。
还在另一实施例或示例中,布置计算设备以用于执行根据上述的任一方法的方法。
一些实施例属于一种装置包括:在计算设备处将代码块转换为代码转换块的转换逻辑,其中所述代码转换块被提交以用于执行;以及在运行时跟踪所述代码转换块的动态***行为的推测逻辑,其中该推测逻辑进一步基于所跟踪的动态***行为的该分析推测转换旁路缓冲器(TLB)预取。
实施例或示例包括任一以上的装置,其中该推测逻辑进一步分析所述代码转换块的动态***行为,其中在静态分析和动态性能分析期间,该分析为TLB访问提供模式,其中动态性能分析包括所述动态***行为的运行时跟踪。
实施例或示例包括任一以上的装置,其中该转换逻辑进一步基于该动态***行为的该分析将所述代码转换块重转换成代码重转换块。
实施例或示例包括任一以上的装置,进一步包括为执行而提交所述代码转换块的执行逻辑,其中该执行逻辑进一步为执行而提交所述代码重转换块。
实施例或示例包括任一以上的装置,进一步包括指令逻辑以基于该动态***行为的该分析将指令与所述代码重转换块关联以控制该TLB预取。
实施例或示例包括任一以上的装置,其中所述指令包括第一指令以基于该动态***行为的该分析启用或禁用该TLB预取,其中当确定TLB预取没有益处时禁用该TLB预取或当确定其有益处时启用该TLB预取。
实施例或示例包括任一以上的装置,其中所述指令进一步包括:第二指令以在硬件预取器中设置参数,其中该硬件预取器包括基于跨步的预取器;以及第三指令以便于对于虚拟页码的TLB预取请求的生成,为该虚拟页码执行该TLB预取,其中具有该虚拟页码的该TLB预取请求被置于预取请求队列中,其中该预取请求队列包括先进先出队列。
实施例或示例包括任一以上的装置,其中该计算***包括台式计算机、服务器计算机、机顶盒、包括智能电话、个人数字助理PDA、平板计算机、电子阅读器和膝上计算机中的一个或多个的移动计算机中的一个或多个。
一些实施例属于一种***包括:具有存储指令的存储器的计算设备,和执行所述指令的处理设备,该计算设备进一步包括机制以:在计算设备处将代码块转换为代码转换块,其中所述代码转换块为执行而被提交;在运行时跟踪所述代码转换块的动态***行为;以及基于所跟踪的动态***行为的该分析推测转换旁路缓冲器(TLB)预取。
实施例或示例包括任一以上的***,其中该机制进一步分析所述代码转换块的动态***行为,其中在静态分析和动态性能分析期间,该分析为TLB访问提供模式,其中动态性能分析包括所述动态***行为的运行时跟踪。
实施例或示例包括任一以上的***,进一步包括基于该动态***行为的该分析将所述代码转换块重转换成代码重转换块,其中所述代码重转换块为执行而被提交。
实施例或示例包括任一以上的***,进一步包括基于该动态***行为的该分析将指令与所述代码重转换块关联以控制该TLB预取。
实施例或示例包括任一以上的***,其中所述指令包括:基于该动态***行为的该分析启用或禁用该TLB预取的第一指令,其中当确定TLB预取没有益处时禁用该TLB预取或当确定其有益处时启用该TLB预取。在硬件预取器中设置参数的第二指令,其中该硬件预取器包括基于跨步的预取器;以及便于对于虚拟页码的TLB预取请求的生成的第三指令,为该虚拟页码执行该TLB预取,其中具有该虚拟页码的该TLB预取请求被置于预取请求队列中,其中该预取请求队列包括先进先出队列。
实施例或示例包括任一以上的***,其中该计算***包括台式计算机、服务器计算机、机顶盒、包括智能电话、个人数字助理PDA、平板计算机、电子阅读器和膝上计算机中的一个或多个的移动计算机中的一个或多个。
附图和前面的描述给出了实施例的示例。本领域技术人员会认识到一个或多个描述的元件可很好的组成单个功能元件。可替换的,特定元件可被拆分成多个功能元件。来自一种实施例的元件可以被加到另一种实施例。例如本文描述的处理顺序可以被改变并不限于本文描述的方式。而且,在任何流程图中的动作不需要以显示的顺序执行,或不必要需要执行所有的动作。同样,不依赖于其它动作的那些动作可以与其他动作并行执行。实施例的范围不意味着限于这些特定示例。不管是否在本说明书中明确给出或未给出,各种变形,如结构、维度和材料的使用的不同是可能的。实施例的范围至少跟下面的权利要求给出的范围一样宽。
Claims (26)
1.一种便于转换缓冲器预取的装置,包括:
用于在计算设备处将代码块转换为代码转换块的转换逻辑,其中所述代码转换块被提交以用于执行;以及
用于在运行时跟踪所述代码转换块的动态***行为的推测逻辑,其中所述推测逻辑还用于基于对所跟踪的动态***行为的分析来推测转换旁路缓冲器TLB预取,
其中所述转换逻辑还用于基于对所述动态***行为的所述分析将所述代码转换块重转换成代码重转换块。
2.权利要求1所述的装置,其中所述推测逻辑还用于分析所述代码转换块的动态***行为,其中在静态分析和动态性能分析期间,所述分析用于提供TLB访问的模式,其中动态性能分析包括对所述动态***行为的运行时跟踪。
3.权利要求1所述的装置,还包括用于提交所述代码转换块以用于执行的执行逻辑,其中所述执行逻辑还用于提交所述代码重转换块以用于执行。
4.权利要求1所述的装置,还包括用于基于对所述动态***行为的所述分析将指令与所述代码重转换块关联以控制所述TLB预取的指令逻辑。
5.权利要求4所述的装置,其中所述指令包括基于对所述动态***行为的所述分析来启用或禁用所述TLB预取的第一指令,其中当确定所述TLB预取没有益处时禁用所述TLB预取或当确定其有益处时启用所述TLB预取。
6.权利要求4所述的装置,其中所述指令还包括:
在硬件预取器中设置参数的第二指令,其中所述硬件预取器包括基于跨步的预取器;以及
便于生成对于虚拟页码的TLB预取请求的第三指令,是为所述虚拟页码执行所述TLB预取,其中具有所述虚拟页码的所述TLB预取请求被置于预取请求队列中,其中所述预取请求队列包括先进先出队列。
7.权利要求1所述的装置,其中所述计算设备包括以下各项中的一个或多个:台式计算机、服务器计算机、机顶盒、移动计算机,所述移动计算机包括以下各项中的一个或多个:智能电话、个人数字助理PDA、平板计算机、电子阅读器和膝上计算机。
8.一种便于转换缓冲器预取的方法,包括:
在计算设备处将代码块转换为代码转换块,其中所述代码转换块被提交以用于执行;
在运行时跟踪所述代码转换块的动态***行为;
基于对所跟踪的动态***行为的分析来推测转换旁路缓冲器TLB预取;以及
基于对所述动态***行为的所述分析将所述代码转换块重转换成代码重转换块。
9.权利要求8所述的方法,还包括分析所述代码转换块的动态***行为,其中在静态分析和动态性能分析期间,所述分析用于提供TLB访问的模式,其中动态性能分析包括对所述动态***行为的运行时跟踪。
10.权利要求8所述的方法,还包括提交所述代码转换块以用于执行以及提交所述代码重转换块以用于执行。
11.权利要求8所述的方法,还包括基于对所述动态***行为的所述分析将指令与所述代码重转换块关联以控制所述TLB预取。
12.权利要求11所述的方法,其中所述指令包括基于对所述动态***行为的所述分析来启用或禁用所述TLB预取的第一指令,其中当确定所述TLB预取没有益处时禁用所述TLB预取或当确定其有益处时启用所述TLB预取。
13.权利要求11所述的方法,其中所述指令还包括:
在硬件预取器中设置参数的第二指令,其中所述硬件预取器包括基于跨步的预取器;以及
便于生成对于虚拟页码的TLB预取请求的第三指令,是为所述虚拟页码执行所述TLB预取,其中具有所述虚拟页码的所述TLB预取请求被置于预取请求队列中,其中所述预取请求队列包括先进先出队列。
14.权利要求8所述的方法,其中所述计算设备包括以下各项中的一个或多个:台式计算机、服务器计算机、机顶盒、移动计算机,所述移动计算机包括以下各项中的一个或多个:智能电话、个人数字助理PDA、平板计算机、电子阅读器和膝上计算机。
15.一种机器可读介质,包括多个指令,所述指令响应于在计算设备上执行致使所述计算设备执行根据权利要求8至14的任一项的操作。
16.一种便于转换缓冲器预取的***,包括用于执行根据权利要求8至14的任一项的操作的机制。
17.一种便于转换缓冲器预取的装置,包括用于执行根据权利要求8至14的任一项的操作的部件。
18.一种计算设备,布置成用于执行根据权利要求8至14的任一项的操作。
19.一种通信设备,布置成用于执行根据权利要求8至14的任一项的操作。
20.一种便于转换缓冲器预取的装置,包括:
用于在计算设备处将代码块转换为代码转换块的部件,其中所述代码转换块被提交以用于执行;
用于在运行时跟踪所述代码转换块的动态***行为的部件;
用于基于对所跟踪的动态***行为的分析来推测转换旁路缓冲器TLB预取的部件;以及
用于基于对所述动态***行为的所述分析将所述代码转换块重转换成代码重转换块的部件。
21.权利要求20所述的装置,还包括用于分析所述代码转换块的动态***行为的部件,其中在静态分析和动态性能分析期间,所述分析用于提供TLB访问的模式,其中动态性能分析包括对所述动态***行为的运行时跟踪。
22.权利要求20所述的装置,还包括用于提交所述代码转换块以用于执行的部件以及用于提交所述代码重转换块以用于执行的部件。
23.权利要求20所述的装置,还包括用于基于对所述动态***行为的所述分析将指令与所述代码重转换块关联以控制所述TLB预取的部件。
24.权利要求23所述的装置,其中所述指令包括基于对所述动态***行为的所述分析来启用或禁用所述TLB预取的第一指令,其中当确定所述TLB预取没有益处时禁用所述TLB预取或当确定其有益处时启用所述TLB预取。
25.权利要求23所述的装置,其中所述指令还包括:
在硬件预取器中设置参数的第二指令,其中所述硬件预取器包括基于跨步的预取器;以及
便于生成对于虚拟页码的TLB预取请求的第三指令,是为所述虚拟页码执行所述TLB预取,其中具有所述虚拟页码的所述TLB预取请求被置于预取请求队列中,其中所述预取请求队列包括先进先出队列。
26.权利要求20所述的装置,其中所述计算设备包括以下各项中的一个或多个:台式计算机、服务器计算机、机顶盒、移动计算机,所述移动计算机包括以下各项中的一个或多个:智能电话、个人数字助理PDA、平板计算机、电子阅读器和膝上计算机。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2013/032632 WO2014143055A1 (en) | 2013-03-15 | 2013-03-15 | Mechanism for facilitating dynamic and efficient management of translation buffer prefetching in software programs at computing systems |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105378683A CN105378683A (zh) | 2016-03-02 |
CN105378683B true CN105378683B (zh) | 2020-03-17 |
Family
ID=51533963
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380073137.3A Active CN105378683B (zh) | 2013-03-15 | 2013-03-15 | 用于在计算***处的软件程序中便于动态和高效地管理转换缓冲器预取的机制 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9460022B2 (zh) |
EP (1) | EP2972896B1 (zh) |
CN (1) | CN105378683B (zh) |
WO (1) | WO2014143055A1 (zh) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102070136B1 (ko) * | 2013-05-03 | 2020-01-28 | 삼성전자주식회사 | 프리페치를 위한 캐시 제어 장치 및 그 캐시 제어 장치를 이용한 프리페치 방법 |
US9223553B2 (en) * | 2013-09-26 | 2015-12-29 | Intel Corporation | Methods and apparatus to validate translated guest code in a dynamic binary translator |
US9507726B2 (en) * | 2014-04-25 | 2016-11-29 | Apple Inc. | GPU shared virtual memory working set management |
US9563571B2 (en) * | 2014-04-25 | 2017-02-07 | Apple Inc. | Intelligent GPU memory pre-fetching and GPU translation lookaside buffer management |
GB2528842B (en) * | 2014-07-29 | 2021-06-02 | Advanced Risc Mach Ltd | A data processing apparatus, and a method of handling address translation within a data processing apparatus |
US9645935B2 (en) * | 2015-01-13 | 2017-05-09 | International Business Machines Corporation | Intelligent bandwidth shifting mechanism |
US9792215B2 (en) | 2015-03-28 | 2017-10-17 | Qualcomm Incorporated | Command-driven translation pre-fetch for memory management units |
CN106326150B (zh) * | 2015-06-26 | 2020-09-15 | 中兴通讯股份有限公司 | 内存访问处理方法及装置 |
US20170024145A1 (en) * | 2015-07-23 | 2017-01-26 | Qualcomm Incorporated | Address translation and data pre-fetch in a cache memory system |
US10657067B1 (en) * | 2016-09-12 | 2020-05-19 | Xilinx, Inc. | Memory management unit with prefetch |
US20190163642A1 (en) | 2017-11-27 | 2019-05-30 | Intel Corporation | Management of the untranslated to translated code steering logic in a dynamic binary translation based processor |
US10841367B2 (en) | 2018-05-17 | 2020-11-17 | International Business Machines Corporation | Optimizing dynamical resource allocations for cache-dependent workloads in disaggregated data centers |
US10977085B2 (en) * | 2018-05-17 | 2021-04-13 | International Business Machines Corporation | Optimizing dynamical resource allocations in disaggregated data centers |
US10936374B2 (en) | 2018-05-17 | 2021-03-02 | International Business Machines Corporation | Optimizing dynamic resource allocations for memory-dependent workloads in disaggregated data centers |
US10893096B2 (en) | 2018-05-17 | 2021-01-12 | International Business Machines Corporation | Optimizing dynamical resource allocations using a data heat map in disaggregated data centers |
US10601903B2 (en) | 2018-05-17 | 2020-03-24 | International Business Machines Corporation | Optimizing dynamical resource allocations based on locality of resources in disaggregated data centers |
US11221886B2 (en) | 2018-05-17 | 2022-01-11 | International Business Machines Corporation | Optimizing dynamical resource allocations for cache-friendly workloads in disaggregated data centers |
US11330042B2 (en) | 2018-05-17 | 2022-05-10 | International Business Machines Corporation | Optimizing dynamic resource allocations for storage-dependent workloads in disaggregated data centers |
CN109325049A (zh) * | 2018-07-27 | 2019-02-12 | 平安科技(深圳)有限公司 | 分程异步加载方法、装置、终端设备及存储介质 |
GB2576528B (en) * | 2018-08-22 | 2021-06-23 | Advanced Risc Mach Ltd | Performing address translation on predicted virtual memory address |
US10754791B2 (en) * | 2019-01-02 | 2020-08-25 | International Business Machines Corporation | Software translation prefetch instructions |
US11645208B2 (en) | 2021-03-29 | 2023-05-09 | International Business Machines Corporation | Translation bandwidth optimized prefetching strategy through multiple translation lookaside buffers |
US11556475B2 (en) | 2021-03-29 | 2023-01-17 | International Business Machines Corporation | Power optimized prefetching in set-associative translation lookaside buffer structure |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007131089A3 (en) * | 2006-05-03 | 2008-09-04 | Sony Computer Entertainment Inc | Code translation and pipeline optimization |
WO2012067848A1 (en) * | 2010-11-19 | 2012-05-24 | Apple Inc. | Streaming translation in display pipe |
CN102498477A (zh) * | 2009-07-13 | 2012-06-13 | 苹果公司 | Tlb预取 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7624384B2 (en) | 2004-11-30 | 2009-11-24 | Intel Corporation | Apparatus, system, and method of dynamic binary translation with translation reuse |
US8386748B2 (en) * | 2009-10-29 | 2013-02-26 | Apple Inc. | Address translation unit with multiple virtual queues |
US9092358B2 (en) * | 2011-03-03 | 2015-07-28 | Qualcomm Incorporated | Memory management unit with pre-filling capability |
-
2013
- 2013-03-15 US US13/977,688 patent/US9460022B2/en active Active
- 2013-03-15 EP EP13878512.6A patent/EP2972896B1/en active Active
- 2013-03-15 WO PCT/US2013/032632 patent/WO2014143055A1/en active Application Filing
- 2013-03-15 CN CN201380073137.3A patent/CN105378683B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007131089A3 (en) * | 2006-05-03 | 2008-09-04 | Sony Computer Entertainment Inc | Code translation and pipeline optimization |
CN102498477A (zh) * | 2009-07-13 | 2012-06-13 | 苹果公司 | Tlb预取 |
WO2012067848A1 (en) * | 2010-11-19 | 2012-05-24 | Apple Inc. | Streaming translation in display pipe |
Also Published As
Publication number | Publication date |
---|---|
WO2014143055A1 (en) | 2014-09-18 |
EP2972896A4 (en) | 2016-11-23 |
EP2972896A1 (en) | 2016-01-20 |
US20140281352A1 (en) | 2014-09-18 |
EP2972896B1 (en) | 2018-05-02 |
CN105378683A (zh) | 2016-03-02 |
US9460022B2 (en) | 2016-10-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105378683B (zh) | 用于在计算***处的软件程序中便于动态和高效地管理转换缓冲器预取的机制 | |
US8341357B2 (en) | Pre-fetching for a sibling cache | |
US9280474B2 (en) | Adaptive data prefetching | |
US20200285580A1 (en) | Speculative memory activation | |
US20140189249A1 (en) | Software and Hardware Coordinated Prefetch | |
US9158702B2 (en) | Apparatus and method for implementing a scratchpad memory using priority hint | |
US9477610B2 (en) | Address range priority mechanism | |
EP3278228B1 (en) | Command-driven translation pre-fetch for memory management units | |
US20170286118A1 (en) | Processors, methods, systems, and instructions to fetch data to indicated cache level with guaranteed completion | |
EP3671473A1 (en) | A scalable multi-key total memory encryption engine | |
CN107077336B (zh) | 二进制转换机制 | |
CN112579175B (zh) | 分支预测方法、分支预测装置和处理器核 | |
US20180181329A1 (en) | Memory aware reordered source | |
WO2017222714A1 (en) | Lightweight trusted execution for internet-of-things devices | |
US10621099B2 (en) | Apparatus, method, and system for enhanced data prefetching based on non-uniform memory access (NUMA) characteristics | |
US20150095579A1 (en) | Apparatus and method for efficient handling of critical chunks | |
US9342303B2 (en) | Modified execution using context sensitive auxiliary code | |
US11327762B2 (en) | Method and apparatus for instruction prefetching with alternating buffers and sequential instruction address matching | |
EP3283966B1 (en) | Virtualization-aware prefetching | |
US20140143526A1 (en) | Branch Prediction Gating | |
US9552293B1 (en) | Emulating eviction data paths for invalidated instruction cache | |
CN115080464B (zh) | 数据处理方法和数据处理装置 | |
Lee | Control Mechanism for Low Power Embedded TLB |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |