当前位置: 首页 > 专利查询>英特尔公司专利>正文

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

技术编号:2846418 阅读:248 留言:0更新日期:2012-04-11 18:40
本文公开了基于无用单元收集器的分析和编译器的分析来插入预取指令的方法和装置。在一种示例方法中,从处理器系统中的性能监视单元接收与高速缓存未命中相关联的一批或多批样本。基于过失信息从这一批或多批样本中选择一个或多个样本。生成与这一个或多个样本相关联的性能影响指标。基于该性能指标,启动无用单元收集器分析和编译器分析中的至少一个来标识一条或多条过失路径。基于无用单元收集器分析和编译器分析中的至少一个,标识要插入预取指令的一个或多个预取点。

【技术实现步骤摘要】
【国外来华专利技术】
本专利技术所公开的内容一般涉及编译器,尤其涉及基于编译器和无用单元收集器的分析来动态地插入预取指令的方法和装置。背景为了提高和优化处理器系统的性能,使用了许多不同的预取技术(即,预见数据输入请求的需要)来消除或“隐藏”处理器系统的等待时间(即,延迟)。特别地,使用了预取算法(即,预执行或预计算)来为与在编译时期间难以预测的数据地址相关联的高速缓存未命中而预取数据。即,编译器首先标识生成高速缓存未命中的数据地址所需的指令,然后投机地预执行那些指令。一般而言,链式数据结构(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标识与每条过失路径的基本过失类型相关联的每个过失加本文档来自技高网...

【技术保护点】
一种方法,包括:从处理器系统中的性能监视单元接收与高速缓存未命中相关联的一批或多批样本;基于过失信息从所述的一批或多批样本中选择一个或多个样本;生成与所述一个或多个样本相关联的性能影响指标;基于所述性能影响指标来启动无用单元收集器分析和编译器分析中的至少一个,以标识一条或多条过失路径;以及基于所述无用单元收集器分析和所述编译器分析中的至少一个来标识要插入预取指令的一个或多个预取点。

【技术特征摘要】
【国外来华专利技术】US 2003-12-19 10/742,0091.一种方法,包括从处理器系统中的性能监视单元接收与高速缓存未命中相关联的一批或多批样本;基于过失信息从所述的一批或多批样本中选择一个或多个样本;生成与所述一个或多个样本相关联的性能影响指标;基于所述性能影响指标来启动无用单元收集器分析和编译器分析中的至少一个,以标识一条或多条过失路径;以及基于所述无用单元收集器分析和所述编译器分析中的至少一个来标识要插入预取指令的一个或多个预取点。2.如权利要求1所述的方法,其特征在于,基于过失信息来选择所述一个或多个样本中的至少一个包括,基于过失区域、过失类型、过失加载和过失线程中的至少一个来选择所述一个或多个样本中的至少一个。3.如权利要求1所述的方法,其特征在于,基于性能影响指标来启动无用单元收集器分析和编译器分析中的至少一个包括,响应于标识出一个或多个过失区域中的高速缓存未命中,使无用单元收集器标识与所述一个或多个过失区域相关联的过失路径和增量。4.如权利要求1所述的方法,其特征在于,基于性能影响指标来启动无用单元收集器分析和编译器分析中的至少一个包括,响应于标识出一个或多个过失区域之外的一个或多个类型,使编译器标识过失路径。5.如权利要求1所述的方法,其特征在于,基于所述无用单元收集器分析和所述编译器分析中的至少一个来标识所述要插入预取指令的一个或多个预取点包括,生成与所述一个或多个预取点相关联的全局置信估算量。6.如权利要求1所述的方法,其特征在于,基于所述无用单元收集器分析和所述编译器分析中的至少一个来标识所述要插入预取指令的一个或多个预取点包括,确认所述一条或多条过失路径。7.如权利要求1所述的方法,其特征在于,还包括选择从所述处理器系统中的性能监视单元接收所述一批或多批样本所使用的采样率。8.一种存储了指令的机器可读介质,当所述指令被执行时使得机器从处理器系统中的性能监视单元接收与高速缓存未命中相关联的一批或多批样本;基于过失信息从所述一批或多批样本中选择一个或多个样本;生成与所述一个或多个样本相关联的性能影响指标;基于所述性能影响指标来启动无用单元收集器分析和编译器分析中的至少一个,以标识一条或多条过失路径;以及基于所述无用单元收集器分析和所述编译器分析中的至少一个来标识要插入预取指令的一个或多个预取点。9.如权利要求8所述的机器可读介质,其特征在于,当所述指令被执行时,使得机器通过基于过失区域、过失类型、过失加载和过失线程中的至少一个来选择所述一个或多个样本中的至少一个,从而基于过失信息来选择所述一个或多个样本中的至少一个。10.如权利要求8所述的机器可读介质,其特征在于,当所述指令被执行时,使得机器通过响应于标识出一个或多个过失区域中的高速缓存未命中来启动无用单元收集器以标识与所述一个或多个过失区域相关联的过失路径和增量,从而基于性能影响指标来启动无用单元收集器分析和编译器分析中的至少一个。11.如权利要求8所述的机器可读介质,其特征在于,当所述指令被执行时,使得机器通过响应于标识出一个或多个过失区域之外的一个或多个类型来使编译器标识过失路径,从而基于性能影响指标来启动无用单元收集器分析和编译器分析中的至少一个。12.如权利要求8所述的机器可读介质,其特征在于,当所述指令被执行时,使得机器通过生成与所述一个或多个预取点相关联的全局置信估算量,从而基于所述无用单元收集器分析和所述编译器分析中的至少一个来标识所述要插入预取指令的一个或多个预取点。13.如权利要求8所述的机器可读介质,其特征在于,当所述指令被执行时,使得机器通过确认所述一...

【专利技术属性】
技术研发人员:M塞拉诺S萨布拉蒙尼R赫德森AR爱德尔塔巴泰拜
申请(专利权)人:英特尔公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1