用于动态优化的程序阶段检测的制作方法

文档序号:6655396阅读:120来源:国知局
专利名称:用于动态优化的程序阶段检测的制作方法
用于动态优化的程序阶段检测技术领域本实施例涉及可管理的运行时计算机系统环境技术,更具体地, 涉及通过阶段检测进行的动态优化。
背景技术
设计成运行于可管理的运ft时环境(MRTE)的计算机程序是以中 性字节码的格式分发的,且这些程序必须由动态编译器编译成本地机 器码。受到管理的应用程序的性能取决于由编译器执行的优化和代码 生成的质量。可将系统利用率监视用于确定何时需要优化各种应用程 序。随着运行在系统上的应用程序的数量的增加,对应用程序优化的 需要也随之增加了。许多微处理器结构依赖于编译器的性能优化。某些结构的性能非 常依赖于昂贵和复杂的代码生成优化(如全局调度和控制预测)。为优化可执行代码,使用了性能反馈和优化技术。这些技术的问 题是,它们通常通过硬件实施或是专用的,因此并不适于动态优化或 软件实施。而且,许多优化要求等待-观察的方法,因为要试验不同 的优化标准来实现优化。这个过程相当耗时,而且由于系统利用的变 化,可能仅能在短时间内优化应用程序。


在附图的各幅图中,通过举例而非限制的方式说明了本发明的实 施例,其中,相似的附图标记指示相似的组件。应当注意,在本公开 中,本发明的"某一"实施例不一定指相同的实施例,且它们意味着 至少一个实施例。
图1示出了用于检测稳定的程序阶段(phase)的进程(process)的 一个实施例。
图2示出了分支跟踪緩冲区(BTrB)的样本地址随时间的实例緩 冲区的图。
图3示出了对应于两个已检测阶段的直方图。
图4示出了使用图2中的数据时检测到的阶段序列。
图5示出了一个系统的实施例。
图6示出了与另一系统耦合的系统的实施例。
具体实施例方式
本文讨论的实施例通常涉及一种用于动态检测稳定进程阶段的 方法和系统。参考附图,下面将描述一些示范实施例。这些示范实施 例用于说明实施例,且不应当将它们视为对实施例范围的限制。
具有动态档案导引优化(例如可管理的运行时环境、动态二进 制优化器、以及动态二进制翻译器)的系统试图确定何时动态地重新 优化正在执行的程序。图1示出了用于可执行代码的动态优化的、检 测稳定程序阶段的进程的一个实施例。在框110处,进程100以选择 阶段阈值开始。该阶段阈值可以是在时间t采集的分支地址的M个 连续样本的函数。在一个实施例中,用户选择上述阶段阈值,并将该 值作为进程中的预定静态参数输入。也可通过用户输入装置动态修改 阶段阈值。
进程100继续进行到框120。在框120中,接收多个经过排序的 緩冲区(buffer)。在一个实施例中,性能监视单元(PMU)收集经过排序 的分支跟踪緩冲区(BTrB)。可以将这些经过排序的緩冲区存储在本地 存储器或文件中。所接收的緩冲区包括所取得的最后L个分支的地 址。L的值可以是预定的或是由用户选定(如4、 8、 10等)。所取得的 分支地址的緩冲区对应于特定的采样时刻。图2示出了在执行诸如基 准程序的实例程序期间,BTrB才羊本地址的实例緩冲区随时间的图。在框120完成后,进程100继续进行到框130。框130确定在至 少两个连续直方图区间的中心之间的距离。在一个实施例中,分支地 址的向量如下确定bt=(bt,lv..ba)T,它代表在时间t的单个BTrB样本 的分支地址的向量。Bt-bt,bw,...btM是某一时刻可用的M个连续样本 的緩冲区。M是预定的或由用户动态调整,如1000、 1400、 1820, 等等。稳定阶段定义为Bt的一维直方图,并被标注为H产[ht,i,...ht,w;T。 直方图Ht是大小为N的向量,其中N是直方图区间的总数。Wlv..WN 是一组间隔相等且非重叠的直方图区间,它们覆盖了可能分支地址的 整个空间。AW-Wk-Wk,,是两个连续直方图区间的中心之间的距离。 在一个实施例中,用欧几里得3巨离计算方法来测量距离,即距离(Hk,(V,-hLi)2,5。应当注意,在不偏离本实施例范围情况下,也可以使用本技术领域已知的其他距离算法。在框130完成之后,框140将所确定的距离与阶段阈值进行比 较。如果两个连续直方图区间之间的距离等于或大于阶段阈值,则Bk 与B,中的样本属于不同的阶段,否则这些样本属于相同的阶段。因 此,根据比较的结果确定可执4亍进程的主执行阶段。在框140完成之后,如果Bk与B,中的样本属于相同阶段,则进 程IOO继续进行到框150。在一个实施例中,设置指示相同阶段的变 量。如果Bk与B,中的样本属于不同阶段,则在一个实施例中,框145 设置指示不同阶段的变量。在一个实施例中,框160发送信号,以便 重新优化正在执行的进程。可将该信号发送到例如动态编译器。应当注意,增加直方图区间的距离宽度AW会粗化分辨率,并 会减少阶段检测进程100的复杂度。粗分辨率用于阶段检测,而细分 辨率用于热跟踪检测。设置AW—,便将每个单个的分支地址放置在 不同的直方图区间中。这样,便创建了细粒度直方图。创建细粒度直 方图的结果是,减慢了阶段检测进程100,且可能增加阶段的数量。
设置△ W>> 1 ,便将相同存储区中的分支地址放置在相同的直方图区 间中。这样的结果是创建了粗粒度直方图。创建粗粒直方图加速了阶段检测进程100,并减少了阶段的数量。通过改变AW,可以对不同 分辨率的直方图作出分析。因而,可实现阶段检测开销和阶段检测精 度之间的动态折中。在一个实施例中,进程100的主执行阶段的确定 是以预定周期速度执行的动态进程。例如,可用选定的速度(如每5 分钟、每小时、每24小时等)执行进程100。在另一个实施例中,进 程100是人工执行的,因为它是由用户选择的。为了举例,图2示出在实例程序执行期间BTrB样本地址的实例 緩沖区随时间的图表具有以下设置L=4,M=1820,AW=105,且阶段 阈值-0.4M。图3示出了对应于两个已检测阶段的直方图,而图4示 出了使用图2中的数据时所检测的阶段序列(对37个数据块而言)。可以在采用动态档案导引优化(如MRTE、动态二进制优化器和 动态二进制翻译器)的系统中应用进程100。这类系统包含硬件性能监 视,且它们的性能依赖于档案导引优化。图5示出了一个系统的实施例。系统500包括连接到存储器520 的处理器510。在一个实施例中,存储器520是诸如随机存取存储器 (RAM)、静态随机存取存储器(SRAM)、动态随机存取存储器 (DRAM)、同步DRAM(SDRAM)、只读存储器(ROM)之类的主存储 器。在另一个实施例中,存储器520是高速緩冲存储器。进程100采 用运行在处理器510中并与存储器520进行通信的可执行进程的形 式。在该实施例中,进程IOO是阶段检测器进程,该阶段检测器进程 确定运行在存储器520中的另一个可执行进程的主执行阶段。在系统 500中,进程100确定何时对运行在系统500中的另一可执行进程进 行重新优化。根据应用场合,可以将系统500与其他已知的组件进行 组合。例如,如果将系统500用于多处理器系统中,则可将其它多处 理器系统的典型的已知组件与系统500进行耦合。系统500可用于多种应用场合,如个人计算机(PC)、个人数字助理(PDA)、笔记本计算 机、服务器、MRTE、动态二进制优化器、动态二进制翻译器等。在 一个实施例中,阶段#:测器进程100作为硬件单元存在,且该硬件单 元具有逻辑电路和用以接收緩冲区的接收器。如上所述,该阶段检测 器的逻辑组件包括用于执行进程100所执行的指令的电路。图6示出了耦合到系统650的系统600。系统600包括至少一个 处理器610、编译器620和存储器640。根据应用场合,系统600也 包括其它诸如多处理器系统、PC、 PDA等的典型系统的组件。编译 器620是动态编译器。系统650包括处理器670、存储器680和编译 器660。在一个实施例中,编译器620和660是动态编译器。在一个 实施例中,进程100采用运行在系统600或650中的可执行进程的形 式。在本实施例中,进程IOO是阶段检测器进程,该阶段检测器进程 确定在系统600和/或650中运行的另一个可执行进程的主执行阶 段。也就是说,进程100可以在系统600中运行,以检测系统650中 的主执行阶段,和/或进程100可以在系统650中运行,以检测系统 600中的主执行阶段。系统600和650可以同处一地,可以是分布式 系统或联网的系统。在一个实施例中,存储器640和存储器680均可 以是主存储器(例如随机存取存储器(RAM)、静态随机存取存储器 (SRAM)、动态随机存取存储器(DRAM)、同步DRAM(SDRAM)、只 读存储器(ROM)等)或高速緩沖存储器。在一个实施例中,阶段检测 器是具有逻辑电路和用于接收緩冲区的接收器的硬件单元。如上所 述,上述阶段检测器的逻辑组件包括用于执行进程100所执行的指令 的电路。也可将以上实施例存储在装置或机器可读介质上,并通过机器读 取来执行指令。机器可读介质包括提供(即存储和/或传送)以机器(例 如计算机)可读形式的信息的任何机构。例如,机器可读介质包括只 读存储器(ROM),随机存取存储器(RAM),磁盘存储介质,光存储介
质,闪存装置,生物电路、机械系统,电、光、声或其它形式的传播 信号(例如,载波、红外信号、凄丈字信号等)。上述装置或机器可读介 质可包括微机电系统(MEMS)、纳米技术装置、有机物装置、全息装 置、固态存储装置和/或旋转磁盘或光盘。当指令的各个部分已分别 保存在不同的机器中(如分别保存在相互连接的计算机中)时,可将装 置或机器可读介质分布设置。
尽管已描述了 一些特定的示范实施例,并在附图中示出了这些实 施例,但是,仍应当理解,这些实施例仅仅是对本发明的解释,而不 对其构成限制,并且本发明不限于所示和所述的特定结构和配置,因 为对本领域的普通技术人员而言,可以对上述实施例进行各种其他的 修改。
权利要求
1. 一种方法,包括 选择阶段阈值,接收多个经过排序的緩冲区,确定在至少两个连续直方图区间的中心之间的距离, 将所述距离与所述选择的阈值进行比较,以及 根椐所述比较来确定可执行进程的主执行阶段。
2. 如权利要求1所述的方法,所述多个经过排序的援沖区包括 多个样本,所述样本包含在某一采样时间取得的多个分支的地址。
3. 如权利要求1所述的方法,还包括 确定代表分支跟踪緩冲区的多个分支地址, 确定代表所述分支跟踪緩冲区的多个连续分支地址, 为所述多个连续分支地址确定稳定阶段直方图,以及为所有可能的分支地址确定多个间隔相等且非重叠的直方图区间。
4. 如权利要求1所述的方法,其中所述确定主执行阶段的结果 发信号要求动态编译可执行代码,以便优化所述可执行代码。
5. 如权利要求l所述的方法,还包括确定所述至少两个连续直方图区间是否处于相同的阶段。
6. 如权利要求5所述的方法,如果所述距离比等于和小于所述 选择的阶段阈值其中之一要小,则所述至少两个连续直方图处于相同 阶段。
7. —种包括机器可读介质的设备,所述机器可读介质包含指 令,当机器执行所述指令时,使得所述机器执行以下操作选择阶段阈值,接收多个经过排序的緩沖区,确定代表分支跟踪緩沖区的多个分支地址, 确定在至少两个连续直方图区间的中心之间的距离,其中所述至 少两个直方图区间是非重叠的,以及将所述距离与所述选择的阈值进行比较。
8. 如权利要求7所述的设备,还包括指令,当机器执行所述指 令时,使得所述机器执行以下操作确定代表所述分支跟踪緩冲区的多个连续分支地址, 为所述多个连续分支地址确定稳定阶段直方图, 为所有可能的分支地址确定多个间隔相等且非重叠的直方图区 间,以及根据所述比较确定可执行进程的主执行阶段。
9. 如权利要求8所述的设备,其中所述确定主执行阶段以预定 的周期速度动态变化。
10. 如权利要求8所述的设备,其中所述确定主执行阶段是以人 工方式开始的。
11. 如权利要求7所述的设备,所述多个经过排序的緩冲区包括 多个样本,所述样本包含在某一采样时间取得的多个分支的地址。
12. 如权利要求7所述的设备,其中所述确定主执行阶段的指令 的结果发信号要求动态编译可执行代码,以便优化所述可执行代码。
13. 如权利要求7所述的设备,还包括指令,当机器执行所述指 令时,使得所述机器执行以下操作确定所述至少两个连续直方图区间是否处于相同的阶段。
14. 如权利要求13所述的设备,如果所述距离比等于和小于所 述选择的阶段阈值的其中之一小,则所述至少两个连续直方图处于相 同阶段。
15. —种系统,包括耦合到主存储器和高速緩冲存储器其中之一的处理器,与所述存储器通信的至少一个进程,以及确定所述至少 一个进程的主执行阶段的阶段检测器。
16. 如权利要求15所述的系统,所述确定的主执行阶段用于确定何时重新优化所述进程。
17. 如权利要求15所述的系统,所述阶段检测器包括用于接收 多个经过排序的緩冲区的接收器,其中所述阶段检测器用于确定代表分支跟踪緩沖区的多个分支 地址,确定在至少两个连续直方图区间的中心之间的距离,其中所述至 少两个直方图区间是非重叠的,以及 将所述距离与预定的阈值进行比较。
18. 如权利要求17所述的系统,所述阶段检测器具有逻辑电路, 用来确定代表所述分支跟踪緩冲区的多个连续分支地址, 为所述多个连续分支地址确定稳定阶段直方图,以及为所有可能的分支地址确定多个间隔相等且非重叠的直方图区间。
19. 如权利要求15所述的系统,其中所述阶段检测器具有以预 定的周期速度动态地确定主执《亍阶段的逻辑电路。
20. 如权利要求17所述的系统,所述多个经过排序的緩冲区包 括多个样本,所述样本包含在某一采样时间取得的多个分支的地址。
21. —种系统,包括第一装置,具有耦合到第一存储器的第一处理器和至少一个与所 述第一存储器通信的进程,以及第二装置,具有耦合到第二存储器的第二处理器和至少另 一个与 所述第二存储器通信的进程,其中阶段检测器进程在所述第一处理器和所述第二处理器其中 之一中工作,以便确定所述第一装置和所述第二装置其中之一内的所 述一个进程和所述另一个进程其中之一的主执行阶段。
22. 如权利要求21所述的系统,所述主执行阶段用于确定何时 重新优化所述一个进程和所述另 一个进程。
23. 如权利要求21所述的系统,所述阶段检测器具有逻辑电路, 用来接收多个经过排序的緩冲区, 确定代表分支跟踪緩冲区的多个分支地址, 确定在至少两个连续直方图区间的中心之间的距离,其中所述至 少两个直方图区间是非重叠的,以及 将所述距离与预定的阈值进行比较。
24. 如权利要求23所述的系统,所述阶段检测器具有逻辑电路, 用来确定代表所述分支跟踪緩冲区的多个连续分支地址,为所述多个连续分支地址确定稳定阶段直方图,以及为所有可能的分支地址确定多个间隔相等且非重叠的直方图区间。
25. 如权利要求21所述的系统,其中所述阶段检测器具有以预 定的周期速度动态确定主执行阶段的逻辑电路。
26. 如权利要求23所述的系统,所述多个经过排序的緩冲区包 括多个样本,所述样本包含在某一采样时间取得的多个分支的地址。
全文摘要
一种方法、装置和系统,包括选择阶段阈值,接收多个经过排序的缓冲区,确定至少两个连续直方图区间的中心之间的距离,将该距离与选定的阈值进行比较,并根据该比较确定可执行进程的主执行阶段。
文档编号G06F9/45GK101124550SQ200580009418
公开日2008年2月13日 申请日期2005年3月30日 优先权日2004年3月31日
发明者A·-R·阿德尔-塔巴塔拜, A·V·内费安 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1