Compile-time feedback-directed optimizations using estimated edge profiles from hardware-event sampling
    2.
    发明授权
    Compile-time feedback-directed optimizations using estimated edge profiles from hardware-event sampling 有权
    使用来自硬件事件采样的估计边缘轮廓的编译时反馈优化

    公开(公告)号:US08387026B1

    公开(公告)日:2013-02-26

    申请号:US12343635

    申请日:2008-12-24

    IPC分类号: G06F9/45

    CPC分类号: G06F8/443

    摘要: Traditional feedback-directed optimization (FDO) is not widely used due to the significant computational overhead involved in using instrumented binaries. The described embodiments provide methods that eliminate the need for instrumented binaries by permitting the conversion of hardware-event sampling information into edge frequencies usable by FDO compilers. Some advantages include: the ability to collect feedback data on production systems; the ability to perform FDO on the OS kernel; and the ability to avoid disrupting timing paths from instrumented binaries.

    摘要翻译: 传统的反馈导向优化(FDO)由于使用仪器化二进制文件所涉及的重大计算开销,未被广泛使用。 所描述的实施例提供了通过允许将硬件事件采样信息转换成FDO编译器可用的边缘频率来消除对仪表二进制文件的需要的方法。 一些优势包括:收集生产系统反馈数据的能力; 在OS内核上执行FDO的能力; 以及避免破坏仪器化二进制文件的时序路径的能力。

    Method and apparatus for controlling execution of a child process generated by a modified parent process
    3.
    发明授权
    Method and apparatus for controlling execution of a child process generated by a modified parent process 失效
    用于控制由修改的父进程生成的子进程的执行的方法和装置

    公开(公告)号:US07415699B2

    公开(公告)日:2008-08-19

    申请号:US10608330

    申请日:2003-06-27

    IPC分类号: G06F9/44

    CPC分类号: G06F9/4843

    摘要: A monitoring interface, includes logic responsive to a pre-fork event, the pre-fork event responsive to a vfork system call. The pre-fork event includes indicia that identifies a child process to be created in accordance with the vfork system call. A method for controlling the execution of a child process created from a parent process, where the parent process is monitored by a software tool includes, receiving indicia that a vfork system call will be executed by the parent process, suspending execution of the parent process, extracting a process identifier from the indicia of the vfork system call, the process identifier corresponding to a child process to be generated by the parent process when the parent process executes the vfork system call, setting a process monitor thread to observe the child process, and resuming execution of the parent process to enable the parent process to execute past the vfork system call.

    摘要翻译: 监视接口包括响应于前叉事件的逻辑,响应于vfork系统调用的前叉事件。 前叉事件包括标记根据vfork系统调用创建的子进程的标记。 用于控制由父进程创建的子进程的执行方法,其中父进程由软件工具监视,包括:接收由父进程执行的vfork系统调用的标记,暂停父进程的执行, 从Vfork系统调用的标记中提取进程标识符,当父进程执行vfork系统调用时,由父进程生成的子进程对应的进程标识符,设置进程监视线程以观察子进程,以及 恢复执行父进程以使父进程能够通过vfork系统调用执行。

    Partitioning modules for cross-module optimization
    4.
    发明申请
    Partitioning modules for cross-module optimization 失效
    用于跨模块优化的分区模块

    公开(公告)号:US20050155023A1

    公开(公告)日:2005-07-14

    申请号:US10756881

    申请日:2004-01-13

    IPC分类号: G06F9/45

    CPC分类号: G06F8/443

    摘要: Techniques for partitioning modules into smaller groups are disclosed. In various embodiments, cross-module optimization may be performed on these smaller groups. Further, related modules are grouped together based on a predefined algorithm. Relatedness, or closeness, or affinity, of modules are considered based on various factors including, for example, the number of calls between routines in different modules, possibility of in-lining a first routine in a first module into a second routine in a second module, characteristics of parameters being passed between routines in different modules, etc.

    摘要翻译: 公开了将模块分成较小组的技术。 在各种实施例中,可以对这些较小的组执行交叉模块优化。 此外,相关模块基于预定义的算法被分组在一起。 基于各种因素考虑模块的相关性,或亲密性,或亲和性,例如包括例如不同模块中的例程之间的调用次数,将第一模块中的第一程序内插到第二程序中的第二程序的可能性 模块,在不同模块中的例程之间传递参数的特性等

    Optimizing an executable computer program having address-bridging code segments
    5.
    发明授权
    Optimizing an executable computer program having address-bridging code segments 有权
    优化具有地址桥接代码段的可执行计算机程序

    公开(公告)号:US06851110B2

    公开(公告)日:2005-02-01

    申请号:US09876655

    申请日:2001-06-07

    IPC分类号: G06F9/45

    CPC分类号: G06F8/4441

    摘要: Method and apparatus for optimizing an executable computer program having address-bridging code segments. Various embodiments are described for optimizing an executable computer program that occupies a first address space and has address-bridging code segments. Address-bridging code segments, target code segments referenced by the address-bridging segments, and calling code segments that reference the address-bridging segments are identified during execution of the program. A second address space is allocated for storage of relocated functions. The calling code segments and the target code segments are relocated to the second address space, and references to the address-bridging code segments are replaced with references to the target code segments in the second address space. For references to the calling code segments in the first address space, control is directed to the calling code segments in the second address space.

    摘要翻译: 用于优化具有地址桥接代码段的可执行计算机程序的方法和装置。 描述了用于优化占用第一地址空间并具有地址桥接代码段的可执行计算机程序的各种实施例。 地址桥接代码段,由地址桥接段引用的目标代码段以及引用地址桥接段的调用代码段在程序执行期间被识别。 分配第二个地址空间用于存储重新定位的功能。 调用代码段和目标代码段被重定位到第二地址空间,并且对地址桥接代码段的引用被替换为对第二地址空间中的目标代码段的引用。 对于对第一地址空间中的调用代码段的引用,控制被引导到第二地址空间中的调用代码段。

    Cloning programming code
    6.
    发明授权
    Cloning programming code 有权
    克隆编程代码

    公开(公告)号:US07401330B2

    公开(公告)日:2008-07-15

    申请号:US10734551

    申请日:2003-12-11

    IPC分类号: G06F9/44

    CPC分类号: G06F8/54 G06F8/443

    摘要: Techniques for cloning programming code are disclosed. In an embodiment, the cloned code is in the form of functions in the C language. Further, in a method embodiment, a clone of a function is invoked, and information mapping the clone to the function is generated. At link time, if no function body of the clone is accessible by a linker, then the linker uses information mapping the clone to the function to satisfy a linker's requirement. At load time, if no function body of the clone is accessible by a loader, then the loader, based on the mapping information, allows selection of a body of the function. However, if the body function of the clone is accessible by the loader, then the loader allows selection of the body of the clone.

    摘要翻译: 公开了克隆程序代码的技术。 在一个实施例中,克隆的代码是C语言中的函数的形式。 此外,在方法实施例中,调用功能的克隆,并且生成将克隆映射到功能的信息。 在链接时,如果链接器不能访问克隆的函数体,则链接器将使用将该克隆映射到该函数以满足链接器要求的信息。 在加载时,如果克隆的功能主体不能由加载程序访问,则加载程序基于映射信息,允许选择一个主体的功能。 但是,如果克隆的正文功能可由加载程序访问,则加载程序允许选择克隆的正文。

    Uninstrumenting in-line code instrumentation on-the-fly
    7.
    发明授权
    Uninstrumenting in-line code instrumentation on-the-fly 失效
    不间断的在线代码仪表

    公开(公告)号:US07249349B2

    公开(公告)日:2007-07-24

    申请号:US10017342

    申请日:2001-12-13

    IPC分类号: G06F9/44

    CPC分类号: G06F9/468 G06F8/656

    摘要: A method and system for reverting a process in an in-line instrumented state to an uninstrumented state. In one embodiment, the present invention modifies selected text segment portions from the process to be uninstrumented. The present embodiment then unmaps instrumented code space such that the instrumented code space is inaccessible to the process. In this embodiment, provided an instruction pointer resides in the instrumented code space, the present invention updates the instruction pointer to uninstrumented code space. The present embodiment also executes the process and, provided the process generates a fault by seeking to access an address in instrumented code space, provides a corresponding address in uninstrumented code space. In one embodiment, the present invention then continues execution at the address in instrumented code space.

    摘要翻译: 一种用于将在线仪器状态的过程还原为非仪器状态的方法和系统。 在一个实施例中,本发明将从未被过滤的过程中修改所选择的文本段部分。 然后,本实施例取消对仪器化代码空间的映射,使得所检测的代码空间对于该过程是不可访问的。 在本实施例中,如果指令指示器驻留在被检测的代码空间中,则本发明将指令指针更新到非仪器化代码空间。 本实施例还执行该过程,并且如果该过程通过寻求访问装载的代码空间中的地址来产生故障,则在非仪器化代码空间中提供对应的地址。 在一个实施例中,本发明随后在仪器化代码空间中的地址处继续执行。

    Uninstrumenting in-line code instrumentation via stack unwinding and cleanup

    公开(公告)号:US07017153B2

    公开(公告)日:2006-03-21

    申请号:US10016953

    申请日:2001-12-13

    IPC分类号: G06F9/45 H02H3/05

    摘要: A method and system for reverting a process in an in-line instrumented state to an uninstrumented state. In one embodiment, the present invention modifies selected text segment portions from the process to be uninstrumented. The present embodiment then unmaps instrumented code space such that the instrumented code space is inaccessible to the process. In this embodiment, the present invention also cleans a call stack of the process by unwinding the call stack and resetting the storage locations for return pointers from the instrumented code space to uninstrumented code space.

    Systems and methods for branch profiling loops of an executable program
    9.
    发明申请
    Systems and methods for branch profiling loops of an executable program 审中-公开
    可执行程序的分支分析循环的系统和方法

    公开(公告)号:US20050251791A1

    公开(公告)日:2005-11-10

    申请号:US11089585

    申请日:2004-04-14

    申请人: Robert Hundt

    发明人: Robert Hundt

    IPC分类号: G06F9/44

    摘要: Systems and methods for branch profiling an executable program are disclosed. One embodiment relates to a method of branch profiling an executable program. The method may comprise inserting an integer add instruction in branches of a loop of the executable program, inserting path counter instructions after a last branch of the loop and prior to an exit point of the loop, and inserting loop counter array update instructions after the exit point of the loop.

    摘要翻译: 公开了用于分支分析可执行程序的系统和方法。 一个实施例涉及分支分析可执行程序的方法。 该方法可以包括在可执行程序的循环的分支中插入整数加法指令,在循环的最后一个分支之后并在循环的退出点之前插入路径计数器指令,以及在退出之后插入循环计数器阵列更新指令 循环点。