Statically linking an application process with a wrapper library
    1.
    发明授权
    Statically linking an application process with a wrapper library 失效
    将应用程序流程与包装库静态链接

    公开(公告)号:US06282703B1

    公开(公告)日:2001-08-28

    申请号:US09182364

    申请日:1998-10-29

    IPC分类号: G06F9445

    CPC分类号: G06F8/54

    摘要: A technique for statically linking an application process to a wrapper library employed in intercepting one or more calls invoked by the application process. The intercepted calls may comprise system calls or library calls. In a first link step, the application process is statically linked with at least the intercept library, and in one embodiment, all libraries associated with the application process except for the wrapper library. This first statically linking step creates a first module. Thereafter, at least one call invoked by the application process, and to be intercepted by the intercept library, is renamed. The renaming of the intercepted call is from its original name to a temporary name in the standard program library, the intercept library and the application program. This renaming step creates a second module that no longer contains the original name of the at least one intercepted call. The second linking step is to statically link the second module with the wrapper library, thereby creating an executable module wherein the application process is statically linked to all libraries while still providing for interception of the at least one system or library call within the executable.

    摘要翻译: 一种用于将应用程序进程静态链接到拦截应用程序调用的一个或多个调用的包装库。 截获的呼叫可能包括系统调用或库调用。 在第一链接步骤中,应用进程至少与截取库静态链接,并且在一个实施例中,除了包装库之外与应用进程相关联的所有库。 第一个静态链接步骤创建一个第一个模块。 此后,由应用进程调用并由拦截库拦截的至少一个调用被重命名。 被拦截的呼叫的重命名是从其原始名称到标准程序库中的临时名称,拦截库和应用程序。 此重命名步骤创建不再包含至少一个被截取的呼叫的原始名称的第二个模块。 第二链接步骤是将第二模块与包装库静态链接,从而创建可执行模块,其中应用程序进程静态链接到所有库,同时仍提供在可执行程序内截取至少一个系统或库调用。

    Method and storage medium for building very large executable programs
    2.
    发明授权
    Method and storage medium for building very large executable programs 有权
    用于构建非常大的可执行程序的方法和存储介质

    公开(公告)号:US6145125A

    公开(公告)日:2000-11-07

    申请号:US190166

    申请日:1998-11-12

    IPC分类号: G06F9/445 G06F9/45 G06F9/42

    CPC分类号: G06F8/447 G06F9/44521

    摘要: A method for effecting a direct jump in an executable program module to a target address displaced from a source address by a specified distance that is greater than a maximum permitted range. During program linkage the direct jump is split into at least two component direct jumps each no greater than the maximum permitted range, thus allowing the direct jump to be achieved by jumping sequentially from the source address to the target address via each of the component direct jumps. A storage medium for storing data representative of the executable program module contains at least one trampoline for performing the component direct jumps.

    摘要翻译: 一种用于将可执行程序模块直接跳转到从源地址偏移大于最大允许范围的指定距离的目标地址的方法。 在程序联动期间,直接跳转被分成至少两个不超过最大允许范围的分量直接跳跃,从而允许通过每个分量直接跳跃从源地址到目标地址顺序跳转来实现直接跳转 。 用于存储表示可执行程序模块的数据的存储介质包含至少一个用于执行部件直接跳转的蹦床。

    Methods and hardware for safe memory allocation in arbitrary program environments
    3.
    发明授权
    Methods and hardware for safe memory allocation in arbitrary program environments 有权
    在任意程序环境中安全内存分配的方法和硬件

    公开(公告)号:US07269830B2

    公开(公告)日:2007-09-11

    申请号:US10667274

    申请日:2003-09-16

    申请人: Jan Civlin

    发明人: Jan Civlin

    IPC分类号: G06F9/445

    CPC分类号: G06F12/145 G06F12/0223

    摘要: In a method for dynamic allocation of memory address space, an original version of a program is executed. This execution includes the execution of a request to use memory address space occupied by an optimized version of the program that is protected from modification. When this request is detected, execution control is passed to an optimization code that was used to define the optimized program. The optimization code copies a portion of the optimized program residing in the memory address space requested by the original program, writes the copied portion to unallocated memory address space, and adjusts the code of the optimized program. The protection of the copied portion of the optimized program is released, and execution control is returned to the original program. The request to use the memory address space occupied by the portion of the optimized for which the protection has been released is then re-executed.

    摘要翻译: 在用于动态分配存储器地址空间的方法中,执行程序的原始版本。 该执行包括执行使用被保护以免修改的程序的优化版本所占用的存储器地址空间的请求。 当检测到此请求时,执行控制将传递给用于定义优化程序的优化代码。 优化代码复制驻留在原始程序请求的存储器地址空间中的优化程序的一部分,将复制的部分写入未分配的存储器地址空间,并调整优化程序的代码。 释放优化程序复制部分的保护,执行控制返回到原程序。 然后重新执行使用被优化的部分所占用的存储器地址空间的请求,该部分被保护已被释放。

    Method and apparatus for prefetching memory pages during execution of a computer program
    4.
    发明授权
    Method and apparatus for prefetching memory pages during execution of a computer program 有权
    在执行计算机程序期间预取存储器页的方法和装置

    公开(公告)号:US07143399B2

    公开(公告)日:2006-11-28

    申请号:US10354331

    申请日:2003-01-29

    申请人: Jan Civlin

    发明人: Jan Civlin

    IPC分类号: G06F9/45 G06F12/00

    CPC分类号: G06F8/4442

    摘要: One embodiment of the present invention provides a system that facilitates prefetching memory pages for a computer program. The system operates by analyzing the computer program within a compiler to identify memory pages accessed within a portion of the computer program. Next, the system creates a map of these memory pages accessed by the computer program, wherein the map is indexed by a program counter for the computer program. A given program counter value indexes memory pages within this map that are likely to be accessed during subsequent execution of the computer program. The system examines the map during execution of the computer program, and if the current program counter for the computer program indexes memory pages in the map, the system touches the memory pages, thereby causing the system to prefetch the memory pages.

    摘要翻译: 本发明的一个实施例提供一种便于预取计算机程序的存储器页面的系统。 该系统通过分析编译器内的计算机程序来识别在计算机程序的一部分内访问的存储器页面。 接下来,系统创建由计算机程序访问的这些存储器页面的映射,其中,映射由计算机程序的程序计数器索引。 给定的程序计数器值对该映射中的后续执行计算机程序中可能被访问的内存页进行索引。 系统在执行计算机程序期间检查地图,如果计算机程序的当前程序计数器对映射中的存储器页进行索引,则系统触摸存储器页面,从而使系统预取存储器页面。

    Method and apparatus for using a non-committing data cache to facilitate speculative execution

    公开(公告)号:US06772294B2

    公开(公告)日:2004-08-03

    申请号:US10191937

    申请日:2002-07-08

    申请人: Jan Civlin

    发明人: Jan Civlin

    IPC分类号: G06F1208

    摘要: One embodiment of the present invention provides a system that facilitates speculative execution of instructions within a computer system. Upon encountering a stall during execution of an instruction stream, the system synchronizes a cache containing data that is being operated on by the instruction stream. Next, the system configures the cache so that the cache operates as before except that changes to cache lines are not propagated to lower levels of the memory system. The system then speculatively executes a subsequent portion of the instruction stream without waiting for the event that caused the stall to be resolved. In this way, the speculative execution can only change data within the cache, and these changes are not propagated to lower levels of the memory system unless a subsequent commit operation takes place.

    Method for safely instrumenting large binary code
    6.
    发明授权
    Method for safely instrumenting large binary code 有权
    安全测量大二进制码的方法

    公开(公告)号:US07269828B2

    公开(公告)日:2007-09-11

    申请号:US10315967

    申请日:2002-12-09

    申请人: Jan Civlin

    发明人: Jan Civlin

    IPC分类号: G06F9/45 G06F9/44

    CPC分类号: G06F11/3644 G06F8/60

    摘要: A method is provided for safely editing a binary code to be executed on a computer system. The method allows the binary code to be directly edited without compromising its integrity. More specifically, a larger binary code is transformed into a number of smaller binary code segments having sizes within a reference range of a control transfer function such as a branch instruction. A branch slamming operation can then used to displace a binary instruction contained within a smaller binary code segment with a branch instruction referring to a binary patch that is appended to the smaller binary code segment. The binary instruction displaced by the branch instruction is preserved in the binary patch. Upon completion of the binary patch execution, the smaller binary code segment continues executing with a binary instruction immediately following the branch instruction. The method for safely editing the binary code is particularly useful with large binary codes having sizes greater than the reference range of the control transfer function.

    摘要翻译: 提供了一种用于安全地编辑要在计算机系统上执行的二进制代码的方法。 该方法允许直接编辑二进制代码而不损害其完整性。 更具体地说,较大的二进制码被转换成具有诸如分支指令之类的控制传递函数的参考范围内的大小的较小的二进制代码段。 然后可以使用分支激活操作来移位包含在较小的二进制代码段内的二进制指令,其中分支指令引用附加到较小的二进制代码段的二进制补丁。 由分支指令移位的二进制指令保留在二进制补丁中。 二进制补丁执行完成后,较小的二进制代码段继续执行紧跟在分支指令之后的二进制指令。 用于安全地编辑二进制代码的方法对于具有大于控制传递函数的参考范围的大型二进制代码特别有用。

    Processor with tagging buffer and methods for avoiding memory collisions
    7.
    发明授权
    Processor with tagging buffer and methods for avoiding memory collisions 有权
    具有标记缓冲区的处理器和避免内存冲突的方法

    公开(公告)号:US07080231B2

    公开(公告)日:2006-07-18

    申请号:US10273714

    申请日:2002-10-18

    申请人: Jan Civlin

    发明人: Jan Civlin

    IPC分类号: G06F12/00

    摘要: A processor includes a tagging buffer for storing information that advises the processor of potential memory collisions caused by program instruction pairs that refer to the same memory address. In one method for avoiding memory collisions, a program having tagging code identifying program instruction pairs of the program that refer to a same memory address is compiled. The program instruction pairs in the compiled program code are processed while verifying an order in which the program instruction pairs are to be executed using the compiled tagging code, which is loaded into a tagging buffer. In another method, a program that does not include tagging code is compiled. When a trap occurs in the processing of a program instruction pair, program counters that cause the instructions to be executed in a desired order are added to a tagging buffer. A computer system including the processor also is described.

    摘要翻译: 处理器包括标记缓冲器,用于存储向处理器通知引用相同存储器地址的程序指令对引起的潜在存储器冲突的信息。 在一种用于避免存储器冲突的方法中,编译具有识别参考相同存储器地址的程序的程序指令对的标签代码的程序。 在编译程序代码中的程序指令对被处理,同时使用加载到标记缓冲器中的编译标签代码验证要执行程序指令对的顺序。 在另一种方法中,编译不包括标记代码的程序。 当在程序指令对的处理中发生陷阱时,使得以所需顺序执行指令的程序计数器被添加到标记缓冲器。 还描述了包括处理器的计算机系统。

    Methods for execution control acquisition of a program and for executing an optimized version of a program
    8.
    发明申请
    Methods for execution control acquisition of a program and for executing an optimized version of a program 有权
    用于执行控制获取程序并执行程序的优化版本的方法

    公开(公告)号:US20050050530A1

    公开(公告)日:2005-03-03

    申请号:US10650190

    申请日:2003-08-27

    申请人: Jan Civlin

    发明人: Jan Civlin

    IPC分类号: G06F9/318 G06F9/45 G06F9/48

    CPC分类号: G06F9/45525 G06F9/4812

    摘要: In a method for execution control acquisition of a program, during the execution of the program, it is determined when a hardware performance counter has reached a threshold. When the threshold is reached, execution control is switched to a dynamic optimizer. Thereafter, an optimized version of the program is executed. In a method for executing an optimized version of a program, during execution of the optimized version, an interrupt is received and execution control is returned to an operating system. An original version of the program is then executed. During the execution of the original version, a hardware performance counter is monitored. When the hardware performance counter reaches a threshold during the execution of the original version, execution control is switched to a dynamic optimizer. Thereafter, the execution of the optimized version of the program is continued as directed by the dynamic optimizer.

    摘要翻译: 在程序的执行控制获取方法中,在程序执行期间,确定硬件性能计数器何时达到阈值。 当达到阈值时,执行控制切换到动态优化器。 此后,执行程序的优化版本。 在执行程序的优化版本的方法中,在优化版本的执行期间,接收到中断并将执行控制返回到操作系统。 然后执行程序的原始版本。 在执行原始版本期间,监视硬件性能计数器。 当硬件性能计数器在执行原始版本期间达到阈值时,执行控制切换到动态优化器。 此后,根据动态优化器的指示继续执行程序的优化版本。

    Method for dynamic recompilation of a program
    9.
    发明申请
    Method for dynamic recompilation of a program 审中-公开
    程序动态重新编译的方法

    公开(公告)号:US20050028148A1

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

    申请号:US10633108

    申请日:2003-08-01

    申请人: Jan Civlin

    发明人: Jan Civlin

    IPC分类号: G06F9/45

    CPC分类号: G06F9/45516

    摘要: In a method for dynamic recompilation of a program, binary code for a program is identified, a portion of the binary code is obtained, and the obtained portion of the binary code is executed while being optimized for, e.g., use with a new hardware architecture. During execution, dynamic changes in flow are identified to enable additional portions of the binary code to be obtained and executed. The executed and optimized portion of the binary code and any additional portions of the binary code are saved to an optimized binary code file for the program. The obtaining and executing of portions of the binary code is continued until all portions of the binary code have been saved to the optimized binary code file for the program. Thereafter, when the program is called, the optimized binary code file for the program can be executed.

    摘要翻译: 在用于程序的动态重新编译的方法中,识别用于程序的二进制代码,获得二进制代码的一部分,并且所获得的二进制代码部分在被优化时被执行,例如使用新的硬件架构 。 在执行期间,识别流动的动态变化,以使二进制代码的附加部分得到并被执行。 将二进制代码的执行和优化部分以及二进制代码的任何其他部分保存到程序的优化二进制代码文件中。 继续获取并执行二进制代码的部分,直到二进制代码的所有部分都被保存到程序的优化的二进制代码文件中。 此后,当调用程序时,可以执行程序的优化二进制代码文件。

    Systems and methods for profiling an application running on a parallel-processing computer system
    10.
    发明授权
    Systems and methods for profiling an application running on a parallel-processing computer system 有权
    用于分析在并行处理计算机系统上运行的应用程序的系统和方法

    公开(公告)号:US08375368B2

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

    申请号:US11716508

    申请日:2007-03-09

    IPC分类号: G06F9/44

    摘要: A runtime system implemented in accordance with the present invention provides an application platform for parallel-processing computer systems. Such a runtime system enables users to leverage the computational power of the parallel-processing computer systems to accelerate/optimize numeric and array-intensive computations in their application programs. A profiling tool is used to collect, analyze, and visualize the performance data of an application in connection with its execution on a parallel-processing computer system through the runtime system. This profiling tool greatly enhances an application developer's ability to understand how an application is executed on the parallel-processing computer system and fine-tune the application to achieve high performance.

    摘要翻译: 根据本发明实现的运行时系统提供了一种用于并行处理计算机系统的应用平台。 这样的运行时系统使得用户能够利用并行处理计算机系统的计算能力来加速/优化其应用程序中的数字和阵列密集型计算。 分析工具用于收集,分析和可视化与通过运行时系统在并行处理计算机系统上执行相关的应用程序的性能数据。 此分析工具大大提高了应用程序开发人员了解应用程序在并行处理计算机系统上的执行情况,并调整应用程序以实现高性能的能力。