G06F8/434

Performing multiple functions in single accelerator program without reload overhead in heterogenous computing system

Examples herein describe compiling source code for a heterogeneous computing system that contains jump logic for executing multiple accelerator functions. The jump logic instructs the accelerator to execute different functions without the overhead of reconfiguring the accelerator by, e.g., providing a new configuration bitstream to the accelerator. At start up when a host program is first executed, the host configures the accelerator to perform the different functions. The methods or system calls in the host program corresponding to the different functions then use jump logic to pass function selection values to an accelerator program in the accelerator that inform the accelerator program which function it is being instructed to perform. This jump logic can be generated by an accelerator compiler and then inserted into the host program as a host compiler generates the executable (e.g., the compiled binary) for the host program.

COMPILATION AND EXECUTION OF SOURCE CODE AS SERVICES

This document relates to compilation of source code into services. One example method involves receiving input source code, identifying data dependencies in the input source code, and identifying immutability points in the input source code based at least on the data dependencies. The example method also involves converting at least some of the input source code occurring after the immutability points to one or more service modules.

Method for data migration of a pointer element in the course of data migration of a program state of a control program of an automation system
11640293 · 2023-05-02 · ·

A method for data migration of a pointer element in the course of data migration of a program state of a control program of an automation system comprises identifying the first pointer element and the second pointer element as pointer elements associated with each other via a first relation in a pointer-identifying step, and mapping the first pointer element to the second pointer element in a pointer migration step. The pointer migration step comprises identifying the first pointer object referenced by the first pointer element, identifying an object associated with the first pointer object as the second pointer object, determining an absolute memory address of the second pointer object, and writing the determined memory address of the second pointer object as a value of the second pointer element into the second pointer element.

Compilation and execution of source code as services

This document relates to compilation of source code into services. One example method involves receiving input source code, identifying data dependencies in the input source code, and identifying immutability points in the input source code based at least on the data dependencies. The example method also involves converting at least some of the input source code occurring after the immutability points to one or more service modules.

METHOD FOR DATA MIGRATION OF A POINTER ELEMENT IN THE COURSE OF DATA MIGRATION OF A PROGRAM STATE OF A CONTROL PROGRAM OF AN AUTOMATION SYSTEM
20220261237 · 2022-08-18 ·

A method for data migration of a pointer element in the course of data migration of a program state of a control program of an automation system comprises identifying the first pointer element and the second pointer element as pointer elements associated with each other via a first relation in a pointer-identifying step, and mapping the first pointer element to the second pointer element in a pointer migration step. The pointer migration step comprises identifying the first pointer object referenced by the first pointer element, identifying an object associated with the first pointer object as the second pointer object, determining an absolute memory address of the second pointer object, and writing the determined memory address of the second pointer object as a value of the second pointer element into the second pointer element.

METHOD FOR THE EXECUTION OF A BINARY CODE OF A COMPUTER PROGRAM BY A MICROPROCESSOR

A method for the execution of a binary code defining a data structure including a particular field to be read using a pointer, this method including writing, to the main memory, the value of the particular field associated with a first identifier of a pointer that points directly to this particular field, this identifier being determined from an identifier of the particular field that differs for all of the fields of the data structure that are adjacent to the particular field, and then constructing a pointer that points directly to this particular field, this construction including determining an identifier of this constructed pointer, and then checking that the identifier constructed in step b) corresponds to the identifier associated with this particular field in step a), and when these pointer identifiers do not match, triggering the signaling of an execution fault.

Optimizing runtime alias checks

Optimizing runtime alias checks includes identifying, by a compiler, a base pointer and a plurality of different memory accesses based on the base pointer in a code loop; generating, by the compiler, a first portion of runtime code to determine a minimum access and a maximum access of the plurality of different memory accesses; and generating, by the compiler, a second portion of runtime code including one or more runtime alias checks for the minimum access and one or more runtime alias checks for the maximum access.

Source to source compiler, compilation method, and computer-readable medium for predictable memory management
11288049 · 2022-03-29 · ·

Described are various embodiments of a source-to-source compiler, compilation method, and computer-readable medium for predictable memory management. One embodiment is described as a memory management system operable on input source code for an existing computer program, the system comprising: a computer-readable medium having computer-readable code portions stored thereon to implement, when executed, a deterministic memory manager (DMM), wherein said code portions comprise smart pointer code portions and associated node pointer code portions for implementing a smart pointer that automatically corrects for memory misallocations in target memory allocation source code portions.

Non-invasive program execution protection
11294783 · 2022-04-05 · ·

A method for use in a computing device having a processor, the method comprising: executing a computer program on the processor; while the computer program is running, detecting whether any of a plurality of transition instructions of the computer program is executed, the detecting being performed by using resources that are external to the computer program; in response to detecting that a given one of the transition instructions is executed, detecting whether a current execution flow of the computer program matches a control flow graph for the computer program; and performing a countermeasure action based on one of a mismatch of the current execution flow of the computer program and the control flow graph or a current value of a memory location associated with the computer program; wherein the control flow graph for the computer program is generated by simulating an execution of the computer program.

Runtime type identification of an object utilizing class inheritance relationships

Embodiments of the present disclosure relate to runtime type identification (RTTI) of an object. In an embodiment, a computer-implemented method is disclosed. A class inheritance relationship between a plurality of classes in at least one source code section is generated. Respective type identifications are assigned to identify the classes in the class inheritance relationship. In accordance with presence of a first operation related to accessing a target pointer to an object of a target class of the classes, a type identification for the target class is caused to be recorded with at least one bit of a memory address of the target pointer that can be omitted in addressing the target pointer. RTTI is caused to be performed based on the class inheritance relationship and the at least one bit of the memory address of the target pointer. In other embodiments, a system and a computer program product are disclosed.