基于编译器和无用单元收集器的分析来动态地插入预取指令的方法和装置的制作方法

文档序号:6502751阅读:234来源:国知局
专利名称:基于编译器和无用单元收集器的分析来动态地插入预取指令的方法和装置的制作方法
技术领域
本发明所公开的内容一般涉及编译器,尤其涉及基于编译器和无用单元收集器的分析来动态地插入预取指令的方法和装置。
背景为了提高和优化处理器系统的性能,使用了许多不同的预取技术(即,预见数据输入请求的需要)来消除或“隐藏”处理器系统的等待时间(即,延迟)。特别地,使用了预取算法(即,预执行或预计算)来为与在编译时期间难以预测的数据地址相关联的高速缓存未命中而预取数据。即,编译器首先标识生成高速缓存未命中的数据地址所需的指令,然后投机地预执行那些指令。
一般而言,链式数据结构(LDS)是使用在前对象中所找到的指针来遍历的软件对象的集合。遍历LDS可能会导致LDS中的每个对象上都有长等待时间的高速缓存未命中。因为LDS中的对象的地址是在该对象本身可被加载之前从在前对象加载的,所以高速缓存未命中可能是无法避免的。另一方面,当访问其后续对象的地址可从该数据数组结构的基础上来计算的数据数组结构时,在迭代通过该数据数组结构时,可将循环解开,并执行诸如跨距(stride)预取等技术来防止高速缓存未命中。这些技术假定后续对象的地址可使用数据数组结构的基础来计算。但是,大多数LDS并不具有可被跨距预取技术利用的布局属性。此外,处理器与存储器速度之间的差距持续增大。因此,当在遍历LDS时试图正确地插入预取指令以减少等待时间的时候,受管运行时环境(MRTE)可能会遭遇困难。
附图简述

图1是示例性预取指令插入系统的框图表示。
图2是可被执行以使图1中所示的示例性预取指令插入系统插入预取指令的示例性机器可读指令的流程图表示。
图3是可被执行以使图1中所示的示例性预取指令插入系统执行后处理的示例性机器可读指令的流程图表示。
图4是示例性过失(delinquent)类型图的框图表示。
图5是示例性路径图的框图表示。
图6是图5中所示的路径图的示例性分配序列的框图表示。
图7是可被用来实现图1中所示的示例性预取指令插入系统的示例性处理器系统的框图表示。
详细描述尽管以下公开了包括在硬件上执行的软件或固件以及其它组件的示例性系统,但是应当注意,此类系统纯粹是示意性的,而不应被视为是限定性的。例如,可构想任何或所有公开的硬件、软件、和/或固件组件可唯一地以硬件具体化,可唯一地以软件具体化,可唯一地以固件具体化,或可以硬件、软件、和/或固件的某种组合具体化。
在图1的示例中,所示的预取指令插入系统100包括运行的应用程序110、虚拟机(VM)类加载器115、性能监视单元(PMU)120、VM 130、无用单元收集器(GC)140、以及编译器150。VM 130包括软件统计过滤单元(SSFU)132和初始效益分析单元(IPAU)134。
运行的应用程序110(也称为诱变器)包括被编译成处理器(例如,图7的处理器1020)可执行的一个或多个方法(即,用于操纵数据的功能、例程、或子例程)。本领域普通技术人员将能容易地认识到,VM类加载器115被配置成维护诸如VTable(即,虚拟表)等包括唯一地标识类或类型的信息的元数据结构。类提供对象的模板,并描述这些对象内部是如何结构化的。实例是从类创建或实例化的对象。
PMU 120被配置成当在受管运行时环境(MRTE)对VM 130的控制下执行运行的应用程序110时标识和提供与高速缓存未命中相关联的样本。每个样本包括诸如引起高速缓存未命中的有效地址、引起高速缓存未命中的指令(例如,加载指令)的指令指针(IP)、执行该指令的线程、以及等待时间信息等过失信息。有效地址包括加载指令可访问的数据的地址。IP包括引起高速缓存未命中的指令的地址。等待时间信息包括服务该高速缓存未命中所需的周期数。
基于过失信息,SSFU 132选择PMU 120所提供的样本中在优化高速缓存性能时很可能有用的一个或多个样本。未被SSFU 132选择的样本不再被处理。样本是基于以下因素来选择的,(1)它们对性能的影响,以及(1)与这些样本相关联的过失指标是否简明。例如,SSFI 132可标识诸如在所有高速缓存等级中都未命中的地址等与长等待时间未命中相关联的样本,因为对性能的影响较大。又如,SSFU 132可从经过选择的一组下述信息来选择样本,(1)引起大部分的高速缓存未命中的加载指令(即,过失加载),(2)发生了大部分的高速缓存未命中的对象类型(即,过失类型),和/或(3)造成大部分的高速缓存未命中的线程(即,过失线程)。SSFU132还可通过对来自PMU 120的样本执行统计确认,来标识被不正确地生成并传递给VM 130的一个或多个样本。
此外,SSFU 132向PMU 120提供采样率,PMU 120以该采样率来标识与高速缓存未命中相关联的样本。即,SSFU 132可先提供高采样率,并逐渐降低采样率,以优化预取指令插入系统100的额外开销。在一个具体示例中,SSFU 132可指数地降低采样率。SSFU 132还可基于预取指令插入系统100的结果来控制采样率。例如,如果PMU 120未能在预定时段内标识和提供样本,则SSFU 132可提高采样率。或者,如果PMU 120标识并提供了多于阈值的样本个数,则SSFU 132可降低采样率。
IPAU 134处理来自SSFU 132的已过滤的样本。具体地,IPAU 134将已过滤的样本与历史信息相比较。IPAU 134确定进一步的分析是否有收益(即,优化数据访问)。如果通过插入预取指令和/或改善数据布局可进一步优化数据访问,则IPAU 134确定此类优化的效果。
IPAU 134确定如果尚未执行优化,或如果已执行对照现有优化的性能比较,则是否要执行进一步的分析。IPAU 134从一批样本中确定数据高速缓存未命中的性能影响(PI)指标。例如,PI指标与一常数及特定一批中所包含的样本数(NS)成正比,并与该批样本中的过失线程的平均数(NT)、采样率(SR)、以及收集该批样本的时间(TIME)成反比(即,PI=(常数*NS)/(NT*SR*TIME))。过失线程的平均数是一组线程对高速缓存未命中的总数的影响的近似值。IPAU 134响应于检测到相变而发起进一步的分析。如果生成样本的线程数改变了,如果过失加载的个数和/或组成改变了,和/或如果当前一批样本的PI指标大于前一批的PI指标,则检测到相变。如果执行了优化,过失类型和过失加载的个数相似或减少,并且当前PI指标相对于先前的PI指标有所降低,则进一步的分析可能并非必需。IPAU 134还被配置成确定是否要改变PMU 120的采样率以减少额外开销或获得足够数量的样本。
已过滤的样本按过失区域(即,具有集中的高速缓存未命中的一个或多个存储器区域)来组织。已过滤的样本被提供给GC 140。GC 140通过对过失区域执行堆遍历来生成从属对象的关注路径。GC 140基于已过滤的样本来标识一组过失类型。GC 140还基于过失类型和来自堆遍历的信息来生成过失路径。基于与已过滤的样本相关联的IP信息,GC 140生成与每条过失路径相关联的IP的列表。该IP列表可被编译器150用来标识要插入预取指令的点。
GC 140还被配置成基于已过滤样本和过失路径来标识过失路径中基本过失类型与其它过失类型之间的增量信息。具体地,GC 140标识与每条过失路径的基本过失类型相关联的每个过失加载的增量。增量信息包括偏移信息(即,对象内发生高速缓存未命中的位置)。通过在路径中距离基对象相对偏移处插入预取指令以隐藏该路径上更下游处的过失子对象的高速缓存未命中的等待时间,编译器150可消除指针跨对象进行追踪的必要。基于过失路径和增量信息,GC 140生成过失路径图。
编译器150基于GC 140所生成的过失路径图和/或IPAU 134所执行的分析来生成再编译计划。如果GC 140没能在过失区域中标识出关注路径,则编译器150可标识插入预取指令的位置。例如,如果过失类型仅具有少数几个过失加载,则编译器150可标识插入预取指令的位置。
图2示出表示可由处理器执行以插入预取指令的机器可读指令的流程图200。本领域普通技术人员将会认识到,这些指令可用许多不同方法中的任何一种来实现,这些方法使用存储在诸如易失性或非易失性存储器或是其它大容量存储器件(例如,软盘、CD和DVD等)等许多计算机或机器可读介质中的任何一种上的许多不同编程代码中的任何一种。例如,这些机器可读指令可被包含在诸如可擦除可编程只读存储器(EPROM)、只读存储器(ROM)、随机存取存储器(RAM)、磁介质、光介质和/或任何其它合适类型的介质等机器可读介质中。或者,这些机器可读指令可被包含在可编程门阵列和/或专用集成电路(ASIC)中。此外,尽管图2中示出了特定次序的动作,但是本领域普通技术人员将会认识到,可按其它时间顺序来执行这些动作。同样,提供流程图200纯粹是作为插入预取指令的一种方式的示例。
流程图200开始于PMU 120以SSFU 132所确定的采样率标识并向VM 130提供与MRTE系统的高速缓存未命中相关联的一批样本(框210)。VM 130从这批样本中标识过失对象(框220)。VM 130还从这批样本中标识与每个样本相关联的过失信息(框230)。如上所述,每批样本包括诸如过失加载、过失类型、过失区域和/或过失线程等过失信息。过失加载包括大多数高速缓存未命中发生的指令地址。过失类型包括大多数高速缓存未命中发生的对象类型。过失区域包括大多数高速缓存未命中发生的存储器区域段。每个存储器区域段包括若干连续的存储器地址(例如,一兆字节的存储器(1MB))。过失线程包括生成大多数高速缓存未命中的线程。
预取指令插入系统100提供运行应用程序110的动态重编译。一些过失加载可能会出现在作为较旧方法的重编译版本的方法中。因此,VM 130重新映射过失信息(框240)。特别地,较旧版本的过失加载被重新映射到最新版本的过失加载。
为减少标识过失对象时的错误并集中在有较大过失指标的样本上,SSFU 132对来自PMU 120的这批样本进行过滤(框250)。例如,SSFU 132可丢弃其IP与任何过失加载不相关联的样本以集中在过失加载上。为标识造成大量高速缓存未命中的对象,SSFU 132可丢弃不是过失的类型的样本。SSFU 132可丢弃在过失加载中不重要的类型的样本。SSFU 132还可丢弃地址没有被包括在过失区域中、但却作为由编译器150分析的主加载和/或主类型而被包括的样本。这些样本不是由GC140分析,因为GC 140可能没有被配置成标识低高速缓存未命中区域中的对象之间的关系。此外,SSFU 132可丢弃不生成非常大量的重要高速缓存未命中的线程的样本和/或不指向堆中的区域的样本。
IPAU 134如上所述地确定是否还需要进一步的分析(框255)。例如,IPAU134可生成与来自PMU 120的这批样本相关联的PI指标。如果不再需要进一步的分析,则PMU 120继续标识并向VM 130提供样本。否则,如果需要进一步的分析(即,相变),则IPAU 134确定高速缓存未命中是否是在过失区域中(框257)。如果高速缓存未命中是在过失区域中,则IPAU 134在过失区域中标识高速缓存未命中(框260),并如上所述地启动GC 140来标识与过失区域相关联的过失路径和增量(框280)。回到框257,如果高速缓存未命中是在过失区域之外,则IPAU134标识过失区域之外的类型(框270),并如上所述地启动编译器150来标识过失路径(框290)。由此,编译器150如图3所示地对来自PMU 120的这批样本执行后处理(即,生成重编译计划以插入预取指令)。
为确定预取指令是否会有效,编译器150确认路径(框310)。GC 140所生成的每条路径包括一类型序列,并且每个类型包括IP。但是,GC 140所生成的类型序列可能不包含指示这些类型何时被访问的信息。通常,这些类型被迅速地连续访问。如果在沿路径从子对象检索到基类型时发出了预取指令,则由早先的预取指令带来的高速缓存线可能不会被其它高速缓存未命中丢弃。
编译器150将路径中的类型的IP与动态调用图相匹配,并估算沿该路径的执行计数。即,编译器150监视很可能丢弃预取指令所带来的高速缓存线的高行程(high-trip)计数循环或代码段。特别地,编译器150标识与路径的IP相关联的方法,并对该方法的所有路径使用代码的执行计数。如果执行计数是平均的(即,没有检测到高行程计数循环),则编译器确认该路径。例如,假定类型A指向类型B,类型A和B都引起严重的高速缓存未命中,两个数组(即,数组A和数组B)分别指向类型A和B的对象,并且两个单独的循环分别通过数组A和B来访问类型A和B的对象。GC 140可生成指向类型B的类型A的路径,因为与该特定路径相关联的高速缓存未命中比在两个数组中产生的高速缓存未命中更为重要。但是,第一循环呈现类型A的对象的高速缓存未命中,而第二循环呈现类型B的对象的未命中。因此,被插入在来自代表类型B的类型A的第一循环中的预取指令可能是无效的。因此,编译器150可能不会确认此特定路径,因为具有高执行频率的两个高行程计数循环独立地访问类型A和类型B的对象。
如果IP全部被包含在循环中,则编译器150也可确认该路径,因为预取指令可能是有效的。此外,编译器150可使用来自PMU 120的这批样本来匹配通过其它手段(例如,使用本领域普通技术人员将很容易认识到的MRTE系统服务等)所获得的动态调用图。动态调用图是表达由特定方法所调用的方法的图。此外,该图在运行时(即,动态的)被连续更新。在动态调用图中搜索PMU 120所提供的每个样本的IP以标识该IP所属的方法的基本块。通过其它方法获得的基本块概况信息被用来估算两个IP点之间的执行计数。沿两个或多个IP点的路径来分析概况信息。沿该路径的概况信息未命中的分布可被用来估算预取指令的效益。如果分布是平均的,则编译器150确认该路径。但是,如果分布不平均(即,高执行计数与低执行计数混杂在一起)(这可能会丢掉预取指令),则执行高行程计数循环。由此,编译器150拒绝该路径。
来自GC 140和/或编译器150(即,分别为图2中的框280和/或290)的分析生成一系列过失路径和增量信息。由此,编译器150生成过失类型图来确定这一系列过失路径是否共享公共基类型(即,将过失路径组合)(框320)。如果这一系列过失路径共享公共基类型和预取点,则可组合与这一系列过失路径相关联的各个增量以减少冗余的预取。在图4的示例中,来自GC 140和/或编译器150的分析生成三条路径,被一般示为410、420和430。具体地,第一路径410从节点440经由字段“keys(密钥)”452到长整型数组422,第二路径420从节点440经由字段“branch(分支)”到对象数组444,而第三路径430从节点440经由字段“vals(值)”456到对象数组456。编译器150组合这三条路径410、420和430,以从节点440发出对由字段452、454和456指向的三个对象442、444和446的预取指令。为将各增量组合,编译器150搜索共享相似过失加载的匹配基类型。各匹配基类型被组合为具有数个子类型的单个类型。如果找到匹配,则编译器150将子类型的增量合并。特别地,如果增量指示三个子类型是连续排列,则编译器150可对共享的高速缓存线注入单个预取指令。例如,编译器150可匹配与这三条路径中的每一个基类型相关联的IP。如果两条路径中的两个基类型共享非常相似的过失加载,则编译器150可连结或组合这两个基类型,因为这两个基类型是来自同一个代码。
回到图3,编译器150生成置信估算量来提供定位预取指令时更高的准确性,因为增量不总是准确的。例如,两个对象的对齐可能会导致子对象在不同的高速缓存线上,即使这两个对象隔开固定的距离。又如,增量值对于由路径连结的对象之间可变大小的对象可能是不准确的。置信估算量可降低高速缓存污染并提供更加准确的预取。
编译器150组合独立的置信估算量来为包括路径图中邻近的对象的高速缓存线生成全局置信估算量。在图5的示例中,所示的路径图500包括类型“Item(项目)”510、类型“String(串)”520、530、以及类型“Char array(字符数组)”540、550。基于这些类型,路径图500包括两条公共路径。在第一路径512中,类型“Item”510经由字段“name(名称)”560指向类型“String”520的实例,而后者进而经由字段“vals(值)”580指向“Char array”540的实例。在第二路径514中,类型“brandInfo(品牌信息)”570经由字段“brandInfo”570指向类型“String”530的另一个实例,而后者进而经由字段“vals”590指向类型“Char array”550的另一个实例。但是,“Char array”540和“Char array”550可为不同的大小。
在图6的示例中,所示的分配序列600是基于路径图500。如图6的分配序列600中所示,在基路径(即,类型“Item”510)与沿图5的第一路径512或第二路径514的对象之间的增量距离中有相对很少的置信度。但是,如果编译器150组合第一和第二路径512、514的置信度估算量,则编译器150可通过预取所选择的高速缓存线来捕捉第一或第二路径512、514的对象,而这些所选择的高速缓存线单独包含第一或第二路径512、514的对象的可能性否则本应较低。如上所述,“Char array”540和“Char array”550大小可能会变化。如果第一路径512和第二路径514是独立地考虑的,则“Char array”540变化的大小降低了类型“Item”510、“String”530和“Char array”550之间的增量的准确性。但是,如果将第一和第二路径512、514如图6中所示地组合,并组合各个增量,则所得的预取对沿第一和第二路径512、514中的一条可有所帮助。
编译器150通过分析对应的增量直方图及向从单独的增量导出的每一条高速缓存线分配一个或多个置信值来组合第一和第二路径512、514。编译器150将每条高速缓存线的置信度估算量累加以生成置信度估算量。如果该置信度估算量大于一阈值,则编译器预取该高速缓存线。
图7是适用于实现本文中所公开的方法和装置的示例性处理器系统1000的框图。处理器系统1000可以是台式计算机、膝上型计算机、笔记本计算机、个人数字助理(PDA)、服务器、因特网设施或任何其它类型的计算设备。
图7中所示的处理器系统1000提供存储器和I/O管理功能、以及可由处理器1020访问或使用的多个通用和/或专用寄存器、计时器等。处理器1020使用一个或多个处理器来实现。例如,处理器1020可使用IntelPentium技术、IntelItanium技术、IntelCentrinoTM技术和/或IntelXScale技术等中的一种或多种来实现。作为替换,也可使用其它处理技术来实现处理器1020。处理器1020包括高速缓存1022,它可使用一级统一高速缓存(L1)、二级统一高速缓存(L2)、三级统一高速缓存(L3)和/或本领域普通技术人员能很容易地认识到的任何其它合适的用于存储数据的结构来实现。
常规情况下,易失性存储器控制器1036和非易失性存储器控制器1038执行使处理器1020能够经由总线1040访问并与包括易失性存储器1032和非易失性存储器1034的主存储器1030通信的功能。易失性存储器1032可由同步动态随机存取存储器(SDRAM)、动态随机存取存储器(DRAM)、RAMBUS动态随机存取存储器(RDRAM)和/或任何其它类型的随机存取存储器设备来实现。非易失性存储器1034可使用闪存、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)和/或其它合乎需要的类型的存储设备来实现。
处理器系统1000还包括接口电路1050,它被耦合到总线1040。接口电路1050可使用诸如以太网接口、通用串行总线(USB)、第三代输入/输出接口(3GIO)接口和/或任何其它合适类型的接口等任何类型的公知接口标准来实现。
一个或多个输入设备1060被连接到接口电路1050。输入设备1060允许用户向处理器1020输入数据和命令。例如,输入设备1060可由键盘、鼠标、触敏显示器、跟踪板、跟踪球、等点(isopoint)和/或语音识别系统来实现。
一个或多个输出设备1070也被连接到接口电路1050。例如,输出设备1070可由显示设备(例如,发光显示器(LED)、液晶显示器(LCD)、阴极射线管(CRT)显示器、打印机和/或扬声器)实现。因此,接口电路1050通常包括图形驱动卡等。
处理器系统1000还包括一个或多个大容量存储设备1080,用于存储软件和数据。此类大容量存储设备1080的示例包括软盘及驱动器、硬盘驱动器、光盘及驱动器、以及数字多功能盘(DVD)及驱动器。
接口电路1050还包括诸如调制解调器或网络接口卡等通信设备,以便于经由网络与外部计算机交换数据。处理器系统1000与网络之间的通信链路可以是任何类型的网络连接,诸如以太网连接、数字用户线(DSL)、电话线、蜂窝电话系统、同轴电缆等等。
对输入设备1060、输出设备1070、大容量存储设备1080和/或网络的访问通常由I/O控制器1014以常规方式来控制。特别地,I/O控制器1014执行使处理器1020能经由总线1040和接口电路1050与输入设备1060、输出设备1070、大容量存储设备1080和/或网络通信的功能。
尽管图7中所示的组件被描绘为处理器系统1000内单独的块,但是由这些块中的一些所执行的功能可被集成到单个半导体电路内,或可使用两个或多个单独的集成电路来实现。例如,尽管I/O控制器1014、易失性存储器控制器1036和非易失性存储器控制器1038被描绘为单独的框,但是本领域普通技术人员将能容易地认识到,I/O控制器1014、易失性存储器控制器1036和非易失性存储器控制器1038可被集成到单个半导体电路内。
尽管本文中描述了某些示例性方法、装置和产品,但是本发明的覆盖范围并不限于此。相反,本发明覆盖字面意义上或在等同原则下合法地落入所附权利要求范围内的所有方法、装置和产品。
权利要求
1.一种方法,包括从处理器系统中的性能监视单元接收与高速缓存未命中相关联的一批或多批样本;基于过失信息从所述的一批或多批样本中选择一个或多个样本;生成与所述一个或多个样本相关联的性能影响指标;基于所述性能影响指标来启动无用单元收集器分析和编译器分析中的至少一个,以标识一条或多条过失路径;以及基于所述无用单元收集器分析和所述编译器分析中的至少一个来标识要插入预取指令的一个或多个预取点。
2.如权利要求1所述的方法,其特征在于,基于过失信息来选择所述一个或多个样本中的至少一个包括,基于过失区域、过失类型、过失加载和过失线程中的至少一个来选择所述一个或多个样本中的至少一个。
3.如权利要求1所述的方法,其特征在于,基于性能影响指标来启动无用单元收集器分析和编译器分析中的至少一个包括,响应于标识出一个或多个过失区域中的高速缓存未命中,使无用单元收集器标识与所述一个或多个过失区域相关联的过失路径和增量。
4.如权利要求1所述的方法,其特征在于,基于性能影响指标来启动无用单元收集器分析和编译器分析中的至少一个包括,响应于标识出一个或多个过失区域之外的一个或多个类型,使编译器标识过失路径。
5.如权利要求1所述的方法,其特征在于,基于所述无用单元收集器分析和所述编译器分析中的至少一个来标识所述要插入预取指令的一个或多个预取点包括,生成与所述一个或多个预取点相关联的全局置信估算量。
6.如权利要求1所述的方法,其特征在于,基于所述无用单元收集器分析和所述编译器分析中的至少一个来标识所述要插入预取指令的一个或多个预取点包括,确认所述一条或多条过失路径。
7.如权利要求1所述的方法,其特征在于,还包括选择从所述处理器系统中的性能监视单元接收所述一批或多批样本所使用的采样率。
8.一种存储了指令的机器可读介质,当所述指令被执行时使得机器从处理器系统中的性能监视单元接收与高速缓存未命中相关联的一批或多批样本;基于过失信息从所述一批或多批样本中选择一个或多个样本;生成与所述一个或多个样本相关联的性能影响指标;基于所述性能影响指标来启动无用单元收集器分析和编译器分析中的至少一个,以标识一条或多条过失路径;以及基于所述无用单元收集器分析和所述编译器分析中的至少一个来标识要插入预取指令的一个或多个预取点。
9.如权利要求8所述的机器可读介质,其特征在于,当所述指令被执行时,使得机器通过基于过失区域、过失类型、过失加载和过失线程中的至少一个来选择所述一个或多个样本中的至少一个,从而基于过失信息来选择所述一个或多个样本中的至少一个。
10.如权利要求8所述的机器可读介质,其特征在于,当所述指令被执行时,使得机器通过响应于标识出一个或多个过失区域中的高速缓存未命中来启动无用单元收集器以标识与所述一个或多个过失区域相关联的过失路径和增量,从而基于性能影响指标来启动无用单元收集器分析和编译器分析中的至少一个。
11.如权利要求8所述的机器可读介质,其特征在于,当所述指令被执行时,使得机器通过响应于标识出一个或多个过失区域之外的一个或多个类型来使编译器标识过失路径,从而基于性能影响指标来启动无用单元收集器分析和编译器分析中的至少一个。
12.如权利要求8所述的机器可读介质,其特征在于,当所述指令被执行时,使得机器通过生成与所述一个或多个预取点相关联的全局置信估算量,从而基于所述无用单元收集器分析和所述编译器分析中的至少一个来标识所述要插入预取指令的一个或多个预取点。
13.如权利要求8所述的机器可读介质,其特征在于,当所述指令被执行时,使得机器通过确认所述一条或多条过失路径,从而基于所述无用单元收集器分析和所述编译器分析中的至少一个来标识所述要插入预取指令的一个或多个预取点。
14.如权利要求8所述的机器可读介质,其特征在于,当所述指令被执行时,使得机器选择从处理器系统中的性能监视单元接收所述一批或多批样本所使用的采样率。
15.如权利要求8所述的机器可读介质,其特征在于,所述机器可读介质包括可编程门阵列、专用集成电路、可擦除可编程只读存储器、只读存储器、随机存取存储器、磁介质、以及光介质中的一种。
16.一种装置,包括性能监视单元,它被配置成提供与高速缓存未命中相关联的一批或多批样本;统计过滤单元,它被配置成基于过失信息从所述一批或多批样本中标识并选择一个或多个样本;无用单元收集器,它被配置成标识与一个或多个过失区域相关联的一条或多条过失路径;编译器,它被配置成标识与所述一个或多个过失区域之外的一个或多个类型相关联的一条或多条过失路径;以及初始收益分析单元,它被配置成基于性能影响指标来启动所述无用单元收集器和所述编译器中的至少一个来标识一条或多条过失路径,其中所述编译器基于所述无用单元收集器分析和所述编译器分析中的至少一个来标识要插入预取指令的一个或多个预取点。
17.如权利要求16所述的装置,其特征在于,所述过失信息包括过失区域、过失类型、过失加载、以及过失线程中的至少一个。
18.如权利要求16所述的装置,其特征在于,响应于标识出所述一个或多个过失区域中的高速缓存未命中,所述无用单元收集器标识与所述一个或多个过失区域相关联的过失路径和增量。
19.如权利要求16所述的装置,其特征在于,响应于标识出一个或多个过失区域之外的一个或多个类型,所述编译器标识过失路径。
20.如权利要求16所述的装置,其特征在于,所述编译器生成与所述一个或多个预取点相关联的全局置信估算量。
21.如权利要求16所述的装置,其特征在于,所述编译器确认所述一条或多条过失路径。
22.如权利要求16所述的装置,其特征在于,所述统计过滤单元选择所述性能监视单元提供所述与高速缓存未命中相关联的一批或多批样本所使用的采样率。
23.一种处理器系统,包括动态随机存取存储器;以及操作上耦合到所述动态随机存取存储器的处理器,所述处理器被编程为从处理器系统中的性能监视单元接收与高速缓存未命中相关联的一批或多批样本,基于过失信息从所述一批或多批样本中选择一个或多个样本,生成与所述一个或多个样本相关联的性能影响指标,基于所述性能影响指标来启动无用单元收集器分析与编译器分析中的至少一个,以及基于所述无用单元收集器分析和所述编译器分析中的至少一个来标识要插入预取指令的一个或多个预取点。
24.如权利要求23所述的处理器系统,其特征在于,所述处理器被编程为基于过失区域、过失类型、过失加载和过失线程中的至少一个来选择所述至少一个或多个样本。
25.如权利要求23所述的处理器系统,其特征在于,所述处理器被编程为响应于标识出一个或多个过失区域中的高速缓存未命中,使无用单元收集器标识与所述一个或多个过失区域相关联的过失路径和增量。
26.如权利要求23所述的处理器系统,其特征在于,所述处理器被编程为响应于标识出一个或多个过失区域之外的一个或多个类型,使编译器标识过失路径。
27.如权利要求23所述的处理器系统,其特征在于,所述处理器被编程为生成与所述一个或多个预取点相关联的全局置信估算量。
28.如权利要求23所述的处理器系统,其特征在于,所述处理器被编程为确认所述一条或多条过失路径。
29.如权利要求23所述的处理器系统,其特征在于,所述处理器被编程为选择从处理器系统中的所述性能监视单元接收所述一批或多批样本所使用的采样率。
全文摘要
本文公开了基于无用单元收集器的分析和编译器的分析来插入预取指令的方法和装置。在一种示例方法中,从处理器系统中的性能监视单元接收与高速缓存未命中相关联的一批或多批样本。基于过失信息从这一批或多批样本中选择一个或多个样本。生成与这一个或多个样本相关联的性能影响指标。基于该性能指标,启动无用单元收集器分析和编译器分析中的至少一个来标识一条或多条过失路径。基于无用单元收集器分析和编译器分析中的至少一个,标识要插入预取指令的一个或多个预取点。
文档编号G06F12/02GK1894664SQ200480037016
公开日2007年1月10日 申请日期2004年12月8日 优先权日2003年12月19日
发明者M·塞拉诺, S·萨布拉蒙尼, R·赫德森, A·-R·爱德尔-塔巴泰拜 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1