WO2016167797A1 - Morphed instruction according to configuration update - Google Patents

Morphed instruction according to configuration update Download PDF

Info

Publication number
WO2016167797A1
WO2016167797A1 PCT/US2015/026412 US2015026412W WO2016167797A1 WO 2016167797 A1 WO2016167797 A1 WO 2016167797A1 US 2015026412 W US2015026412 W US 2015026412W WO 2016167797 A1 WO2016167797 A1 WO 2016167797A1
Authority
WO
WIPO (PCT)
Prior art keywords
instruction
compiled
control parameter
instructions
control
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
PCT/US2015/026412
Other languages
French (fr)
Inventor
Thomas A. Keaveny
Diego Valverde Garro
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hewlett Packard Enterprise Development LP
Original Assignee
Hewlett Packard Enterprise Development LP
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Enterprise Development LP filed Critical Hewlett Packard Enterprise Development LP
Priority to US15/565,179 priority Critical patent/US20180101384A1/en
Priority to PCT/US2015/026412 priority patent/WO2016167797A1/en
Publication of WO2016167797A1 publication Critical patent/WO2016167797A1/en
Anticipated expiration legal-status Critical
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation

Definitions

  • Figure 1 shows an example of a system that supports instruction morphing.
  • Figure 2 shows an example of control parameter identification and mapping.
  • Figure 3 shows an example of a control mapping that maps a control parameter to a particular instruction field of a compiled instruction.
  • Figure 4 shows an example of morphed instruction generation according to a configuration update.
  • Figure 5 shows an example of a morphed instruction generated using a control mapping.
  • Figure 6 shows an example of logic that a control system may implement to support instruction morphing.
  • Figure 7 shows an example of a device that supports instruction morphing.
  • instruction morphing may include modifying a processor instruction (e.g., a machine instruction) to reflect an update to a control parameter or system setting. Instruction morphing may thus support real-time and on demand adjusting of system configurations, program behavior, control flow, debug hooks, and more, on an instruction-specific level.
  • processor instruction e.g., a machine instruction
  • Instruction morphing may thus support real-time and on demand adjusting of system configurations, program behavior, control flow, debug hooks, and more, on an instruction-specific level.
  • instruction morphing may be utilized by a control entity managing any number of execution units, e.g., processors or devices.
  • a network control system may employ instruction morphing to modify individual instructions for execution by network devices (e.g., routers) in a communication system.
  • a master processor may likewise modify individual instructions for execution by any number of slave processors managed by the master processor.
  • the control entity may reduce additional latency the executing unit may incur had the updated control parameter been implemented instead through, for example, a memory register access by the execution unit.
  • the morphed instruction itself includes the updated control parameter, the executing unit may incur reduced or no additional latency to effectuate the updated control parameter.
  • instruction morphing may provide a clean, efficient, and scalable mechanism to propagate configuration changes in a system.
  • Figure 1 shows an example of a system 100 that supports instruction morphing.
  • the system 100 may implement a control entity that is communicatively linked to an executing unit, which may be remote or local to the system 100.
  • the system 100 may implement a network control entity controlling remote routing devices, a master processor controlling a slave processor, a programmable logic controller (PLC) controlling devices in an industrial environment, a production control device managing field level devices in a distributed control system, or any other control entity that provides instructions to a managed executing unit for execution.
  • PLC programmable logic controller
  • the system 100 in Figure 1 includes a compiler 1 10 and an instruction manager 120.
  • the compiler 1 10, instruction manager 120, or both may be implemented through any combination of hardware, circuitry, executable instructions stored on a machine-readable medium, or various other forms.
  • the compiler 1 10 and instruction manager 120 may support instruction morphing by linking control parameters annotated in application code to particular compiled instructions generated from the application code that implement the control parameter.
  • a control parameter may refer to any control point, value, instruction, setting, or other parameter that affects application behavior.
  • the control parameter may take the form of a quantifiable value used to evaluate a control flow condition in the application code, a selector to determine a particular element among multiple elements, a pointer value, a comparison operator (e.g., less than, greater than, equal to), an instruction operation (e.g., add, subtract, decrement, increment, multiply, and more), loop parameters, an execution criterion or variable for test conditions in a control flow, a target address, label, or code location to branch execution flow to, or any other element that affects the execution of the application code.
  • the compiler 1 10 includes the modules 1 1 1 and 1 12, through which the compiler 1 10 may compile the application code into compiled instructions and map the control parameter to a particular compiled instruction among the compiled instructions.
  • the application code may include a control annotation for a control parameter, the control annotation to support modification of the control parameter.
  • the instruction manager 120 includes the modules 121 , 122, 123, and 124, through which the instruction manager 120 may send the compiled instructions, including the particular compiled instruction, to a remote executing unit; receive a configuration update for the control parameter; modify the particular compiled instruction among the compiled instructions according to the configuration update to obtain a morphed instruction; and send the morphed instruction to the remote executing unit to replace the particular compiled instruction.
  • Figure 2 shows an example of control parameter identification and mapping.
  • Figure 2 shows an example of how the compiler 1 10 and instruction manager 120 may identify a control parameter that can be updated through instruction morphing and map the control parameter to a particular compiled instruction.
  • the compiler 1 10 may access application code 210.
  • the application code 210 may include source code for an application or function to be executed by an executing unit.
  • the application code 210 may include a control annotation 21 1 through which the compiler 1 10 may recognize a control point in the application code 210 that is modifiable through instruction morphing.
  • the control annotation 21 1 may be set at any point in the application code 210, for example by a developer, through any automated control detection methods, or in other ways.
  • the compiler 1 10 may parse the application code 210 to identify the control annotation 21 1 .
  • the compiler 1 10 identifies the control annotation 21 1 for a control parameter according to an annotation syntax.
  • annotation syntax the compiler 1 10 may recognize control annotations in the application code 210 according to the following format:
  • the "morph_control” string may signal the presence and start of a control annotation in the application code 210.
  • the "name” field may specify a control parameter name that identifies a particular control parameter and the "DEFAULT” field may specify a default value for the control parameter.
  • the compiler 1 10 may be configured to identify a control annotation according to any variety of specific syntax implementations.
  • the application code 210 may include or implement the following code:
  • the compiler 1 10 may identify a control annotation within a particular portion of the application code 210 above for the control parameter named FN_max_attempts. The compiler 1 10 may also determine that the control parameter FN_max_attempts has a default value of 10 through the control annotation (e.g., as set through the variable DEFAU LT_MAX_ATTEM PTS).
  • the compiler 1 10 may identify any number of control annotations in the application code 210.
  • the control annotation 21 1 may annotate a control parameter in the form of a comparison operator, for example as the annotation "morph_control FN_comparison (GREATER THAN)".
  • the compiler 1 10 may identify the default operator for control parameter FN_comparison as a greater than operation, and later morphing of a compiled instruction could update the FN_comparison control parameter to a less than operation, greater than or equal to operation, or any other operation.
  • Control annotations in the application code 210 may identify control parameters of various other forms as well.
  • the compiler 1 10 may compile the application code 210 to generate the compiled instructions 221 . As part of or as an addition to compiling the application code 210, the compiler 1 10 may map a control parameter indicated through a control annotation to a particular compiled instruction. To illustrate with respect to Figure 2A, the compiler 1 10 may map the control parameter specified in the control annotation 21 1 to one or more of the compiled instructions 221 generated from the application code 210, including the particular compiled instruction among the compiled instructions 221 that is shaded in Figure 2A. [0022] The compiler 1 10 may determine the particular compiled instruction(s) to map the control parameter according to a location of the control annotation 21 1 within the application code 210.
  • the compiler 1 10 may track which compiled instruction(s) that are generated from compiling the particular portion (e.g., line or instruction) of application code where the control annotation 21 1 occurs.
  • the compiler 1 10 may compile the code portion for the "while” expression, specifically the code for "while (counter- > morph_control FN_max_attempts (DEFAULT_MAX_ATTEMPTS)".
  • the compiled instruction(s) resulting from this portion of the application code 210 may be flagged by the compiler 1 10 for mapping to the control parameter named FN_max_attempts.
  • the compiler 1 10 may set a value for control value as the default value specified in the control annotation 21 1 .
  • the compiler 1 10 may map the control parameter indicated by a control annotation to a particular instruction field of a compiled instruction.
  • the compiler 1 10 may map the control parameter to a particular operand or other distinct instruction field of a compiled instruction.
  • the control parameter FN_max_attempts may be set as a scalar value in an operand field of a branch instruction compiled from the application code 210.
  • the compiler 1 10 may map the control parameter FN_max_attempts to the particular instruction operand field of the particular branch instruction generated through the compilation process.
  • the compiler 1 10 may map a control parameter to an operation field or address field of a compiled instruction, depending on the particular control parameter being mapped.
  • the compiler 1 10 may track mappings of control parameters to instruction fields of compiled instructions through a control mapping 222.
  • a control mapping 222 may take the form of any data structure that maps a control parameter to a particular compiled instruction or instruction field thereof.
  • the compiler 1 10 may generate the control mapping 222 as, for example, a table or database, a list of control parameter to instruction field mappings, or in any other data form.
  • the control mapping 222 indicates a particular compiled instruction or particular instruction field of the particular compiled instruction as an offset value, e.g., a number of offset bytes from a particular data address or position.
  • An example of a control mapping is also presented in Figure 3, which is discussed next.
  • Figure 3 shows an example of a control mapping 310 that maps a control parameter to a particular instruction field of a compiled instruction.
  • the specific example shown in Figure 3 continues the example code and control annotation discussed above for the control parameter FN_max_attempts.
  • the control mapping 310 includes a control parameter name field to identify the relevant control parameter, which in Figure 3 is F N_m ax_atte m p ts .
  • the control mapping 310 also includes an instruction field mapping field, which may indicate a particular instruction field of compiled instruction that the control parameter maps to.
  • Figure 3 illustrates conceptually how the control parameter FN_max_attempts maps to the "Op A" field of the original compiled instruction 312, as the control annotation in application code for FN_max_attempts may correspond to the original compiled instruction 312.
  • the compiler 1 10 may generate a branch- greater-than machine instruction to compile the "while (counter- > morph_control FN_max_attempts (DEFAULT_MAX_ATTEMPTS)" portion of code from the application code.
  • the compiler 1 10 may populate the control mapping 310 to indicate the mapping of the control parameter FN_max_attempts to the "Op A" field of the original compiled instruction 312.
  • the compiler 1 10 may specify the instruction field mapping to map to the particular instruction field through, for example, an offset value, a memory address, an instruction and field indicator, or through any other data specifying the compiled instruction and instruction field therein.
  • the compiler 1 10 may map a particular control parameter to multiple compiled instructions. Such a scenario may occur when the application code includes multiple control annotations for a particular control parameter. Accordingly, the instruction field mappings field of the control mapping 310 may map the control parameter to the respective instruction field of multiple compiled instructions, such as through multiple offset values. In doing so, the compiler 1 10 may support morphing of multiple compiled instructions based on the same configuration update.
  • the instruction manager 120 may receive the compiled instructions 221 and the control mappings 222 from the compiler 1 10. The instruction manager 120 may then send the compiled instructions 221 to an executing unit for execution, and the executing unit may include a processor that supports the instruction set architecture of the compiled instructions 221 .
  • the compiled instructions 221 may include specific (e.g., default) values for the control parameters as implemented through the compiled instructions 221 , which may be subject to later morphing as illustrated through Figure 4.
  • Figure 4 shows an example of morphed instruction generation according to a configuration update.
  • the instruction manager 120 receives a configuration update 410.
  • the configuration update 410 may be received by the instruction manager 120 after sending the compiled instructions 221 to an executing unit.
  • the configuration update 410 may specify a change to a control parameter for the application code.
  • the configuration update 410 may indicate a change to the value of the FN_max_attempts control parameter from 10 to 20, for example.
  • the instruction manager 120 may identify a control parameter specified by the configuration update 410 and morph any number of compiled instructions impacted by the configuration update. To do so, the instruction manager 120 may access a control mapping for the control parameter to identify a particular compiled instruction impacted by the configuration update 410, including the particular instruction field that the control parameter maps to. An example of this process is illustrated in Figure 5, which is discussed next.
  • Figure 5 shows an example of a morphed instruction generated using a control mapping.
  • Figure 5 continues the FN_max_attempts illustration and with reference to the control mapping 310 described in Figure 3.
  • the control mapping 310 maps the control parameter FN_max_attempts to the "Op A" instruction field of the original compiled instruction 312.
  • the instruction manager 120 may retrieve the control mapping 310 and identify the original compiled instruction 312 as being affected by the configuration update 410.
  • the instruction manager 120 may morph (e.g. modify) the original compiled instruction 312 to obtain a morphed instruction 412.
  • the instruction manager 120 may modify the original compiled instruction 312 by updating the mapped instruction field of the particular compiled instruction to the updated value.
  • the instruction manager 120 modifies the "Op A" instruction field value from 10 (in the original compiled instruction 312) to the updated value of 20 as specified in the configuration update 410.
  • the instruction manager 120 may generate the morphed instruction 412 that includes the updated value of 20 in the "Op A" instruction field, implementing the control parameter change specified by the configuration update 410.
  • the instruction manager 120 may generate multiple morphed instructions by modifying the respective instruction field value of the multiple compiled instructions according to the configuration update 410.
  • the instruction manager 120 may send the morphed instruction 412 to the executing unit to replace a previously sent compiled instruction. As the instruction manager 120 may morph a particular compiled instruction impacted by the configuration update 410 without altering other compiled instructions, the instruction manager 120 may send the morphed instruction 412 to the executing unit without sending the entirety of the compiled instructions 221 . That is, the instruction manager 120 may selectively send the morphed instruction 412 without sending others among the compiled instructions 221 , e.g., those that remain unchanged by the configuration update 410.
  • the instruction manager 120 may reduce the amount of instructions that the executing unit must reload to effectuate the configuration update 410. Instead of having to reload the entire application code through the compiled instructions 221 , the executing unit may instead replace a particular compiled instruction with the morphed instruction 412, while unaffected instructions remain intact and unchanged. Instruction morphing may thus provide a graceful, efficient, and flexible mechanism to update the control parameter on an instruction-level basis.
  • Figure 6 shows an example of logic 600 that a control system may implement to support instruction morphing.
  • the system 100 may implement the logic 600 as part of the instruction manager 120, the compiler 1 10, or a combination of both.
  • the control system may implement the logic 600 as hardware, firmware, executable instructions stored on a machine-readable medium, or any combination thereof.
  • the control system may execute the logic 600 as a method or process to support instruction morphing.
  • the control system may send compiled instructions generated from application code to a remote executing unit (602).
  • the compiled instructions may include a particular compiled instruction that maps to a control parameter for the application code.
  • the control system may receive a configuration update specifying an updated value for the control parameter for the application code (604).
  • the control system may modify the particular compiled instruction according to the configuration update to obtain a morphed instruction (606). Then, the control system may send the morphed instruction to the remote executing unit to replace the particular compiled instruction (608).
  • the control system may identify a control annotation in the application code for the control parameter.
  • the control annotation may occur at a particular point (e.g., line) in the application code.
  • the control system may map the control parameter to a particular compiled instruction instructions that correspond to the location of the control annotation.
  • the control system may and map the control parameter to a particular instruction field that implements the control parameter, such as a particular instruction operand storing the value of the control parameter.
  • the control system may modify the particular compiled instruction according to the configuration update by setting the particular instruction field of the particular compiled instruction to the updated value specified by the configuration update.
  • the configuration update may be set in various ways.
  • the control system receives the configuration update as a user- specified change to the control parameter, e.g., through a user interface or user dashboard.
  • the configuration updates may be automated according to any number of update criteria, examples of which include time of day, resource bandwidth, consumption, or availability thresholds, environmental triggers, and more.
  • the control system may send the morphed instruction to an executing unit logically or physically remote to the control system.
  • the control system may manage multiple executing units, and thus the control system may send the morphed instruction to multiple remote executing units.
  • the control system sends the morphed instruction during an initialization state of the remote executing unit, e.g., when a remote device receiving instructions from the control system starts a boot sequence or initially powers up.
  • the control system sends the morphed instruction during a run-time state of the executing unit.
  • the control system may utilize instruction morphing to implement real-time configuration changes to the remote executing unit without disrupting real-time processing by the executing unit.
  • a network control device may utilize instruction morphing to propagate updated routing parameters to managed network devices to meet in-line processing requirements of the managed network devices.
  • FIG. 7 shows an example of a device 700 that supports instruction morphing.
  • the device 700 may include a processor 710.
  • the processor 710 may include a central processing unit (CPU), microprocessor, and/or any hardware device suitable for executing instructions stored on a machine- readable medium.
  • CPU central processing unit
  • microprocessor microprocessor
  • any hardware device suitable for executing instructions stored on a machine- readable medium any hardware device suitable for executing instructions stored on a machine- readable medium.
  • the device 700 may include a machine-readable medium 720.
  • the machine-readable medium 720 may be any electronic, magnetic, optical, or other physical storage device that stores executable instructions, such as the instruction morphing instructions 722 shown in Figure 7.
  • the machine- readable medium 720 may be, for example, Random Access Memory (RAM), an Electrically-Erasable Programmable Read-Only Memory (EEPROM), a storage drive, an optical disk, and the like.
  • the device 700 may execute instructions stored on the machine- readable medium 720 through the processor 710. Executing the instructions may cause the device 700 to perform any combination of the features described herein, including features with respect to the compiler 1 10 and the instruction manager 120.
  • executing the instruction morphing instructions 722 may cause the device 700 to map a control annotation in application code to a particular compiled instruction among compiled instructions generated from the application code, the control annotation identifying a control parameter for the application code; send the compiled instructions generated from the application code, including the particular compiled instruction, to a remote executing unit; receive a configuration update specifying a change to the control parameter; modify the particular compiled instruction according to the configuration update to obtain a morphed instruction 724, the morphed instruction 724 implementing the change to the control parameter; and send the morphed instruction 724 to the remote executing unit to replace the particular compiled instruction.
  • executing the instruction morphing instructions 722 may further cause the device 700 to map the control parameter to a particular instruction field of the particular compiled instruction. As another example, executing the instruction morphing instructions 722 may further cause the device 700 to identify the control parameter in the application code by identifying a control annotation for the control parameter in the application code. As yet another example, executing the instruction morphing instructions 722 may further cause the device 700 to send the morphed instruction to multiple remote executing units.
  • the methods, devices, systems, and logic described above, including the compiler 1 10, the instruction manager 120, or both, may be implemented in many different ways in many different combinations of hardware, executable instructions stored on a machine-readable medium, or both.
  • the compiler 1 10, the instruction manager 120, or both may include circuitry in a controller, a microprocessor, or an application specific integrated circuit (ASIC), or may be implemented with discrete logic or components, or a combination of other types of analog or digital circuitry, combined on a single integrated circuit or distributed among multiple integrated circuits.
  • a product, such as a computer program product may include a storage medium and machine readable instructions stored on the medium, which when executed in an endpoint, computer system, or other device, cause the device to perform operations according to any of the description above.
  • the processing capability of the systems, devices, and circuitry described herein, including the compiler 1 10 and the instruction manager 120, may be distributed among multiple system components, such as among multiple processors and memories, optionally including multiple distributed processing systems.
  • Parameters, databases, and other data structures may be separately stored and managed, may be incorporated into a single memory or database, may be logically and physically organized in many different ways, and may implemented in many ways, including data structures such as linked lists, hash tables, or implicit storage mechanisms.
  • Programs may be parts (e.g., subroutines) of a single program, separate programs, distributed across several memories and processors, or implemented in many different ways, such as in a library, such as a shared library (e.g., a dynamic link library (DLL)).
  • the DLL for example, may store code that performs any of the system processing described above.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

In some examples, a method includes sending compiled instructions generated from application code to a remote executing unit, the compiled instructions including a particular compiled instruction that maps to a control parameter for the application code. The method may also include receiving a configuration update specifying an updated value for the control parameter, modifying the particular compiled instruction according to the configuration update to obtain a morphed instruction, and sending the morphed instruction to the remote executing unit to replace the particular compiled instruction.

Description

MORPHED INSTRUCTION ACCORDING TO CONFIGURATION UPDATE
BACKGROUND
[0001] With rapid advances in technology, computing systems are increasingly prevalent in society today. Computing systems execute and support applications that may communicate and process immense amounts of data, many times with performance constraints to meet the increasing demands of users. Increasing the efficiency, speed, and effectiveness of computing systems will further improve user experience.
BRIEF DESCRIPTION OF THE DRAWINGS
[0002] Certain examples are described in the following detailed description and in reference to the drawings.
[0003] Figure 1 shows an example of a system that supports instruction morphing.
[0004] Figure 2 shows an example of control parameter identification and mapping.
[0005] Figure 3 shows an example of a control mapping that maps a control parameter to a particular instruction field of a compiled instruction.
[0006] Figure 4 shows an example of morphed instruction generation according to a configuration update.
[0007] Figure 5 shows an example of a morphed instruction generated using a control mapping.
[0008] Figure 6 shows an example of logic that a control system may implement to support instruction morphing. [0009] Figure 7 shows an example of a device that supports instruction morphing.
DETAILED DESCRIPTION
[0010] The disclosure below provides systems, devices, circuitry, logic, and methods that support instruction morphing. As described in greater detail below, instruction morphing may include modifying a processor instruction (e.g., a machine instruction) to reflect an update to a control parameter or system setting. Instruction morphing may thus support real-time and on demand adjusting of system configurations, program behavior, control flow, debug hooks, and more, on an instruction-specific level.
[0011] In some examples, instruction morphing may be utilized by a control entity managing any number of execution units, e.g., processors or devices. Thus, a network control system may employ instruction morphing to modify individual instructions for execution by network devices (e.g., routers) in a communication system. As another example, a master processor may likewise modify individual instructions for execution by any number of slave processors managed by the master processor. By modifying an instruction itself with an updated control parameter, the control entity may reduce additional latency the executing unit may incur had the updated control parameter been implemented instead through, for example, a memory register access by the execution unit. As the morphed instruction itself includes the updated control parameter, the executing unit may incur reduced or no additional latency to effectuate the updated control parameter. Accordingly, instruction morphing may provide a clean, efficient, and scalable mechanism to propagate configuration changes in a system.
[0012] Figure 1 shows an example of a system 100 that supports instruction morphing. The system 100 may implement a control entity that is communicatively linked to an executing unit, which may be remote or local to the system 100. As examples, the system 100 may implement a network control entity controlling remote routing devices, a master processor controlling a slave processor, a programmable logic controller (PLC) controlling devices in an industrial environment, a production control device managing field level devices in a distributed control system, or any other control entity that provides instructions to a managed executing unit for execution.
[0013] The system 100 in Figure 1 includes a compiler 1 10 and an instruction manager 120. The compiler 1 10, instruction manager 120, or both, may be implemented through any combination of hardware, circuitry, executable instructions stored on a machine-readable medium, or various other forms. As described in greater detail below, the compiler 1 10 and instruction manager 120 may support instruction morphing by linking control parameters annotated in application code to particular compiled instructions generated from the application code that implement the control parameter.
[0014] A control parameter may refer to any control point, value, instruction, setting, or other parameter that affects application behavior. As examples, the control parameter may take the form of a quantifiable value used to evaluate a control flow condition in the application code, a selector to determine a particular element among multiple elements, a pointer value, a comparison operator (e.g., less than, greater than, equal to), an instruction operation (e.g., add, subtract, decrement, increment, multiply, and more), loop parameters, an execution criterion or variable for test conditions in a control flow, a target address, label, or code location to branch execution flow to, or any other element that affects the execution of the application code.
[0015] For example, in Figure 1 , the compiler 1 10 includes the modules 1 1 1 and 1 12, through which the compiler 1 10 may compile the application code into compiled instructions and map the control parameter to a particular compiled instruction among the compiled instructions. The application code may include a control annotation for a control parameter, the control annotation to support modification of the control parameter. In Figure 1 , the instruction manager 120 includes the modules 121 , 122, 123, and 124, through which the instruction manager 120 may send the compiled instructions, including the particular compiled instruction, to a remote executing unit; receive a configuration update for the control parameter; modify the particular compiled instruction among the compiled instructions according to the configuration update to obtain a morphed instruction; and send the morphed instruction to the remote executing unit to replace the particular compiled instruction.
[0016] Some instruction morphing examples are present next through Figures 2-5. Figure 2 shows an example of control parameter identification and mapping. In particular, Figure 2 shows an example of how the compiler 1 10 and instruction manager 120 may identify a control parameter that can be updated through instruction morphing and map the control parameter to a particular compiled instruction.
[0017] The compiler 1 10 may access application code 210. The application code 210 may include source code for an application or function to be executed by an executing unit. In particular, the application code 210 may include a control annotation 21 1 through which the compiler 1 10 may recognize a control point in the application code 210 that is modifiable through instruction morphing. The control annotation 21 1 may be set at any point in the application code 210, for example by a developer, through any automated control detection methods, or in other ways. The compiler 1 10 may parse the application code 210 to identify the control annotation 21 1 .
[0018] In some examples, the compiler 1 10 identifies the control annotation 21 1 for a control parameter according to an annotation syntax. As one example annotation syntax, the compiler 1 10 may recognize control annotations in the application code 210 according to the following format:
morph_control <name> (DEFAULT)
In the example annotation syntax above, the "morph_control" string may signal the presence and start of a control annotation in the application code 210. The "name" field may specify a control parameter name that identifies a particular control parameter and the "DEFAULT" field may specify a default value for the control parameter. While example fields and syntax format are provided in the example above, the compiler 1 10 may be configured to identify a control annotation according to any variety of specific syntax implementations.
[0019] To provide a continuing illustration, the application code 210 may include or implement the following code:
#define DEFAULT MAX ATTEMPTS 10 while ( counter-- > morph_control FN_max_attempts
(DEFAULT_MAX_ATTEMPTS) ) {
result = issue_request (parameters) ;
if (result .valid) break;
}
In this FN_max_attempts illustration, the compiler 1 10 may identify a control annotation within a particular portion of the application code 210 above for the control parameter named FN_max_attempts. The compiler 1 10 may also determine that the control parameter FN_max_attempts has a default value of 10 through the control annotation (e.g., as set through the variable DEFAU LT_MAX_ATTEM PTS).
[0020] The compiler 1 10 may identify any number of control annotations in the application code 210. To provide another control annotation example, the control annotation 21 1 may annotate a control parameter in the form of a comparison operator, for example as the annotation "morph_control FN_comparison (GREATER THAN)". The compiler 1 10 may identify the default operator for control parameter FN_comparison as a greater than operation, and later morphing of a compiled instruction could update the FN_comparison control parameter to a less than operation, greater than or equal to operation, or any other operation. Control annotations in the application code 210 may identify control parameters of various other forms as well.
[0021] The compiler 1 10 may compile the application code 210 to generate the compiled instructions 221 . As part of or as an addition to compiling the application code 210, the compiler 1 10 may map a control parameter indicated through a control annotation to a particular compiled instruction. To illustrate with respect to Figure 2A, the compiler 1 10 may map the control parameter specified in the control annotation 21 1 to one or more of the compiled instructions 221 generated from the application code 210, including the particular compiled instruction among the compiled instructions 221 that is shaded in Figure 2A. [0022] The compiler 1 10 may determine the particular compiled instruction(s) to map the control parameter according to a location of the control annotation 21 1 within the application code 210. For instance, the compiler 1 10 may track which compiled instruction(s) that are generated from compiling the particular portion (e.g., line or instruction) of application code where the control annotation 21 1 occurs. In the illustration above, the compiler 1 10 may compile the code portion for the "while" expression, specifically the code for "while (counter- > morph_control FN_max_attempts (DEFAULT_MAX_ATTEMPTS)". The compiled instruction(s) resulting from this portion of the application code 210 may be flagged by the compiler 1 10 for mapping to the control parameter named FN_max_attempts. In generating the compiled instruction that includes or implements the control parameter, the compiler 1 10 may set a value for control value as the default value specified in the control annotation 21 1 .
[0023] The compiler 1 10 may map the control parameter indicated by a control annotation to a particular instruction field of a compiled instruction. In that regard, the compiler 1 10 may map the control parameter to a particular operand or other distinct instruction field of a compiled instruction. As one example, the control parameter FN_max_attempts may be set as a scalar value in an operand field of a branch instruction compiled from the application code 210. The compiler 1 10 may map the control parameter FN_max_attempts to the particular instruction operand field of the particular branch instruction generated through the compilation process. In other examples, the compiler 1 10 may map a control parameter to an operation field or address field of a compiled instruction, depending on the particular control parameter being mapped.
[0024] The compiler 1 10 may track mappings of control parameters to instruction fields of compiled instructions through a control mapping 222. A control mapping 222 may take the form of any data structure that maps a control parameter to a particular compiled instruction or instruction field thereof. The compiler 1 10 may generate the control mapping 222 as, for example, a table or database, a list of control parameter to instruction field mappings, or in any other data form. In some examples, the control mapping 222 indicates a particular compiled instruction or particular instruction field of the particular compiled instruction as an offset value, e.g., a number of offset bytes from a particular data address or position. An example of a control mapping is also presented in Figure 3, which is discussed next.
[0025] Figure 3 shows an example of a control mapping 310 that maps a control parameter to a particular instruction field of a compiled instruction. The specific example shown in Figure 3 continues the example code and control annotation discussed above for the control parameter FN_max_attempts. As seen in Figure 3, the control mapping 310 includes a control parameter name field to identify the relevant control parameter, which in Figure 3 is F N_m ax_atte m p ts .
[0026] The control mapping 310 also includes an instruction field mapping field, which may indicate a particular instruction field of compiled instruction that the control parameter maps to. Figure 3 illustrates conceptually how the control parameter FN_max_attempts maps to the "Op A" field of the original compiled instruction 312, as the control annotation in application code for FN_max_attempts may correspond to the original compiled instruction 312. Continuing the illustration above, the compiler 1 10 may generate a branch- greater-than machine instruction to compile the "while (counter- > morph_control FN_max_attempts (DEFAULT_MAX_ATTEMPTS)" portion of code from the application code. Accordingly, the compiler 1 10 may populate the control mapping 310 to indicate the mapping of the control parameter FN_max_attempts to the "Op A" field of the original compiled instruction 312. The compiler 1 10 may specify the instruction field mapping to map to the particular instruction field through, for example, an offset value, a memory address, an instruction and field indicator, or through any other data specifying the compiled instruction and instruction field therein.
[0027] The compiler 1 10 may map a particular control parameter to multiple compiled instructions. Such a scenario may occur when the application code includes multiple control annotations for a particular control parameter. Accordingly, the instruction field mappings field of the control mapping 310 may map the control parameter to the respective instruction field of multiple compiled instructions, such as through multiple offset values. In doing so, the compiler 1 10 may support morphing of multiple compiled instructions based on the same configuration update.
[0028] Returning to Figure 2, the instruction manager 120 may receive the compiled instructions 221 and the control mappings 222 from the compiler 1 10. The instruction manager 120 may then send the compiled instructions 221 to an executing unit for execution, and the executing unit may include a processor that supports the instruction set architecture of the compiled instructions 221 . The compiled instructions 221 may include specific (e.g., default) values for the control parameters as implemented through the compiled instructions 221 , which may be subject to later morphing as illustrated through Figure 4.
[0029] Turning to Figure 4, Figure 4 shows an example of morphed instruction generation according to a configuration update. In Figure 4, the instruction manager 120 receives a configuration update 410. The configuration update 410 may be received by the instruction manager 120 after sending the compiled instructions 221 to an executing unit. The configuration update 410 may specify a change to a control parameter for the application code. In the continuing FN_max_attempts illustration, the configuration update 410 may indicate a change to the value of the FN_max_attempts control parameter from 10 to 20, for example.
[0030] In response to receiving the configuration update 410, the instruction manager 120 may identify a control parameter specified by the configuration update 410 and morph any number of compiled instructions impacted by the configuration update. To do so, the instruction manager 120 may access a control mapping for the control parameter to identify a particular compiled instruction impacted by the configuration update 410, including the particular instruction field that the control parameter maps to. An example of this process is illustrated in Figure 5, which is discussed next.
[0031] Figure 5 shows an example of a morphed instruction generated using a control mapping. Figure 5 continues the FN_max_attempts illustration and with reference to the control mapping 310 described in Figure 3. As seen in Figure 5 and discussed above, the control mapping 310 maps the control parameter FN_max_attempts to the "Op A" instruction field of the original compiled instruction 312. In response to receiving a configuration update 410 for the FN_max_attempts control parameter, the instruction manager 120 may retrieve the control mapping 310 and identify the original compiled instruction 312 as being affected by the configuration update 410.
[0032] The instruction manager 120 may morph (e.g. modify) the original compiled instruction 312 to obtain a morphed instruction 412. As the configuration update 410 may specify an updated value for the control parameter of the application code, the instruction manager 120 may modify the original compiled instruction 312 by updating the mapped instruction field of the particular compiled instruction to the updated value. In the example shown in Figure 5, the instruction manager 120 modifies the "Op A" instruction field value from 10 (in the original compiled instruction 312) to the updated value of 20 as specified in the configuration update 410. Accordingly, the instruction manager 120 may generate the morphed instruction 412 that includes the updated value of 20 in the "Op A" instruction field, implementing the control parameter change specified by the configuration update 410. For control parameters that map to multiple compiled instructions, the instruction manager 120 may generate multiple morphed instructions by modifying the respective instruction field value of the multiple compiled instructions according to the configuration update 410.
[0033] Returning to Figure 4, the instruction manager 120 may send the morphed instruction 412 to the executing unit to replace a previously sent compiled instruction. As the instruction manager 120 may morph a particular compiled instruction impacted by the configuration update 410 without altering other compiled instructions, the instruction manager 120 may send the morphed instruction 412 to the executing unit without sending the entirety of the compiled instructions 221 . That is, the instruction manager 120 may selectively send the morphed instruction 412 without sending others among the compiled instructions 221 , e.g., those that remain unchanged by the configuration update 410.
[0034] In doing so, the instruction manager 120 may reduce the amount of instructions that the executing unit must reload to effectuate the configuration update 410. Instead of having to reload the entire application code through the compiled instructions 221 , the executing unit may instead replace a particular compiled instruction with the morphed instruction 412, while unaffected instructions remain intact and unchanged. Instruction morphing may thus provide a graceful, efficient, and flexible mechanism to update the control parameter on an instruction-level basis.
[0035] Figure 6 shows an example of logic 600 that a control system may implement to support instruction morphing. For example, the system 100 may implement the logic 600 as part of the instruction manager 120, the compiler 1 10, or a combination of both. The control system may implement the logic 600 as hardware, firmware, executable instructions stored on a machine-readable medium, or any combination thereof. The control system may execute the logic 600 as a method or process to support instruction morphing.
[0036] By implementing or executing the logic 600, the control system may send compiled instructions generated from application code to a remote executing unit (602). The compiled instructions may include a particular compiled instruction that maps to a control parameter for the application code. The control system may receive a configuration update specifying an updated value for the control parameter for the application code (604). In response to receiving the configuration update, the control system may modify the particular compiled instruction according to the configuration update to obtain a morphed instruction (606). Then, the control system may send the morphed instruction to the remote executing unit to replace the particular compiled instruction (608).
[0037] In some examples, the control system may identify a control annotation in the application code for the control parameter. The control annotation may occur at a particular point (e.g., line) in the application code. Thus, the control system may map the control parameter to a particular compiled instruction instructions that correspond to the location of the control annotation. In particular, the control system may and map the control parameter to a particular instruction field that implements the control parameter, such as a particular instruction operand storing the value of the control parameter. Thus, the control system may modify the particular compiled instruction according to the configuration update by setting the particular instruction field of the particular compiled instruction to the updated value specified by the configuration update.
[0038] The configuration update may be set in various ways. In some examples, the control system receives the configuration update as a user- specified change to the control parameter, e.g., through a user interface or user dashboard. In other examples, the configuration updates may be automated according to any number of update criteria, examples of which include time of day, resource bandwidth, consumption, or availability thresholds, environmental triggers, and more.
[0039] The control system may send the morphed instruction to an executing unit logically or physically remote to the control system. The control system may manage multiple executing units, and thus the control system may send the morphed instruction to multiple remote executing units. In some examples, the control system sends the morphed instruction during an initialization state of the remote executing unit, e.g., when a remote device receiving instructions from the control system starts a boot sequence or initially powers up. In some examples, the control system sends the morphed instruction during a run-time state of the executing unit. As such, the control system may utilize instruction morphing to implement real-time configuration changes to the remote executing unit without disrupting real-time processing by the executing unit. For example, in a communication network scenario, a network control device may utilize instruction morphing to propagate updated routing parameters to managed network devices to meet in-line processing requirements of the managed network devices.
[0040] Figure 7 shows an example of a device 700 that supports instruction morphing. The device 700 may include a processor 710. The processor 710 may include a central processing unit (CPU), microprocessor, and/or any hardware device suitable for executing instructions stored on a machine- readable medium.
[0041] The device 700 may include a machine-readable medium 720. The machine-readable medium 720 may be any electronic, magnetic, optical, or other physical storage device that stores executable instructions, such as the instruction morphing instructions 722 shown in Figure 7. Thus, the machine- readable medium 720 may be, for example, Random Access Memory (RAM), an Electrically-Erasable Programmable Read-Only Memory (EEPROM), a storage drive, an optical disk, and the like.
[0042] The device 700 may execute instructions stored on the machine- readable medium 720 through the processor 710. Executing the instructions may cause the device 700 to perform any combination of the features described herein, including features with respect to the compiler 1 10 and the instruction manager 120. To illustrate, executing the instruction morphing instructions 722 may cause the device 700 to map a control annotation in application code to a particular compiled instruction among compiled instructions generated from the application code, the control annotation identifying a control parameter for the application code; send the compiled instructions generated from the application code, including the particular compiled instruction, to a remote executing unit; receive a configuration update specifying a change to the control parameter; modify the particular compiled instruction according to the configuration update to obtain a morphed instruction 724, the morphed instruction 724 implementing the change to the control parameter; and send the morphed instruction 724 to the remote executing unit to replace the particular compiled instruction.
[0043] In some examples, executing the instruction morphing instructions 722 may further cause the device 700 to map the control parameter to a particular instruction field of the particular compiled instruction. As another example, executing the instruction morphing instructions 722 may further cause the device 700 to identify the control parameter in the application code by identifying a control annotation for the control parameter in the application code. As yet another example, executing the instruction morphing instructions 722 may further cause the device 700 to send the morphed instruction to multiple remote executing units.
[0044] The methods, devices, systems, and logic described above, including the compiler 1 10, the instruction manager 120, or both, may be implemented in many different ways in many different combinations of hardware, executable instructions stored on a machine-readable medium, or both. For example, the compiler 1 10, the instruction manager 120, or both, may include circuitry in a controller, a microprocessor, or an application specific integrated circuit (ASIC), or may be implemented with discrete logic or components, or a combination of other types of analog or digital circuitry, combined on a single integrated circuit or distributed among multiple integrated circuits. A product, such as a computer program product, may include a storage medium and machine readable instructions stored on the medium, which when executed in an endpoint, computer system, or other device, cause the device to perform operations according to any of the description above.
[0045] The processing capability of the systems, devices, and circuitry described herein, including the compiler 1 10 and the instruction manager 120, may be distributed among multiple system components, such as among multiple processors and memories, optionally including multiple distributed processing systems. Parameters, databases, and other data structures may be separately stored and managed, may be incorporated into a single memory or database, may be logically and physically organized in many different ways, and may implemented in many ways, including data structures such as linked lists, hash tables, or implicit storage mechanisms. Programs may be parts (e.g., subroutines) of a single program, separate programs, distributed across several memories and processors, or implemented in many different ways, such as in a library, such as a shared library (e.g., a dynamic link library (DLL)). The DLL, for example, may store code that performs any of the system processing described above.
[0046] While various examples have been described above, many more implementations are possible.

Claims

1 . A system comprising:
a compiler to:
compile application code into compiled instructions, the application code including a control annotation for a control parameter, the control annotation to support modification of the control parameter; and map the control parameter to a particular compiled instruction among the compiled instructions; and
an instruction manager to:
send the compiled instructions, including the particular compiled
instruction, to a remote executing unit;
receive a configuration update for the control parameter;
modify the particular compiled instruction among the compiled
instructions according to the configuration update to obtain a morphed instruction; and
send the morphed instruction to the remote executing unit to replace the particular compiled instruction.
2. The system of claim 1 , wherein the compiler is to map the control annotation to a particular compiled instruction field of the particular compiled instruction.
3. The system of claim 2, wherein the configuration update specifies an updated value for the control parameter of the application code; and
wherein the instruction manager is to modify the particular compiled instruction by updating the particular field of the particular compiled instruction to the updated value.
4. The system of claim 1 , wherein the compiler is further to map the control parameter to multiple compiled instructions; and
wherein instruction manager is further to: determine that the configuration update for the control parameter affects multiple compiled instructions, including the particular compiled instruction; and modify the multiple compiled instructions according to the configuration update to obtain multiple morphed instructions.
5. The system of claim 1 , wherein the instruction manager is to send the morphed instruction to the remote executing unit to replace the particular compiled instruction without sending other compiled instructions among the compiled instructions.
6. A method comprising:
sending compiled instructions generated from application code to a remote executing unit, the compiled instructions including a particular compiled instruction that maps to a control parameter for the application code;
receiving a configuration update specifying an updated value for the control parameter;
modifying the particular compiled instruction according to the
configuration update to obtain a morphed instruction; and
sending the morphed instruction to the remote executing unit to replace the particular compiled instruction.
7. The method of claim 6, further comprising:
identifying a control annotation in the application code for the control parameter; and
mapping the control parameter to a particular instruction field of the particular compiled instruction.
8. The method of claim 7, wherein modifying the particular compiled instruction comprises setting the particular instruction field of the particular compiled instruction to the updated value specified by the configuration update.
9. The method of claim 6, wherein receiving the configuration update comprises receiving a user-specified change to the control parameter.
10. The method of claim 6, wherein sending the morphed instruction comprises sending the morphed instruction during a run-time state of the executing unit.
1 1 . The method of claim 6, comprising sending the morphed instruction to multiple executing units.
12. A non-transitory machine-readable medium storing executable instructions to:
map a control parameter in application code to a particular compiled instruction among compiled instructions generated from the application code; send the compiled instructions generated from the application code, including the particular compiled instruction, to a remote executing unit;
receive a configuration update specifying a change to the control parameter;
modify the particular compiled instruction according to the configuration update to obtain a morphed instruction, the morphed instruction implementing the change to the control parameter; and
send the morphed instruction to the remote executing unit to replace the particular compiled instruction.
13. The non-transitory machine-readable medium of claim 12, wherein the executable instructions are further to map the control parameter to a particular instruction field of the particular compiled instruction.
14. The non-transitory machine-readable medium of claim 12, wherein the executable instructions are further to identify the control parameter in the application code by identifying a control annotation for the control parameter in the application code.
15. The non-transitory machine-readable medium of claim 12, wherein the executable instructions are to send the morphed instruction to multiple remote executing units.
PCT/US2015/026412 2015-04-17 2015-04-17 Morphed instruction according to configuration update Ceased WO2016167797A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US15/565,179 US20180101384A1 (en) 2015-04-17 2015-04-17 Morphed instruction according to configuration update
PCT/US2015/026412 WO2016167797A1 (en) 2015-04-17 2015-04-17 Morphed instruction according to configuration update

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2015/026412 WO2016167797A1 (en) 2015-04-17 2015-04-17 Morphed instruction according to configuration update

Publications (1)

Publication Number Publication Date
WO2016167797A1 true WO2016167797A1 (en) 2016-10-20

Family

ID=57126901

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2015/026412 Ceased WO2016167797A1 (en) 2015-04-17 2015-04-17 Morphed instruction according to configuration update

Country Status (2)

Country Link
US (1) US20180101384A1 (en)
WO (1) WO2016167797A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114356341A (en) * 2022-01-04 2022-04-15 腾讯科技(成都)有限公司 A data processing method, device, equipment, storage medium and product

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP4080354A1 (en) * 2021-04-23 2022-10-26 Nxp B.V. Processor and instruction set
US11567775B1 (en) * 2021-10-25 2023-01-31 Sap Se Dynamic generation of logic for computing systems

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6031992A (en) * 1996-07-05 2000-02-29 Transmeta Corporation Combining hardware and software to provide an improved microprocessor
US20020073398A1 (en) * 1998-12-14 2002-06-13 Jeffrey L. Tinker Method and system for modifying executable code to add additional functionality
US20040107416A1 (en) * 2002-12-02 2004-06-03 Microsoft Corporation Patching of in-use functions on a running computer system
US20110238961A1 (en) * 2003-07-16 2011-09-29 John Banning System and method of instruction modification
US20120179897A1 (en) * 2011-01-07 2012-07-12 Campbell Neil A Techniques for modifying a processor code sequence

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5832205A (en) * 1996-08-20 1998-11-03 Transmeta Corporation Memory controller for a microprocessor for detecting a failure of speculation on the physical nature of a component being addressed
US6199152B1 (en) * 1996-08-22 2001-03-06 Transmeta Corporation Translated memory protection apparatus for an advanced microprocessor
US7058699B1 (en) * 2000-06-16 2006-06-06 Yahoo! Inc. System and methods for implementing code translations that enable persistent client-server communication via a proxy
US20030088860A1 (en) * 2001-11-02 2003-05-08 Fu-Hwa Wang Compiler annotation for binary translation tools
AU2003295864A1 (en) * 2002-11-22 2004-06-18 John D. Bixler Autism treatment system and method
US8505002B2 (en) * 2006-09-29 2013-08-06 Arm Limited Translation of SIMD instructions in a data processing system
US9904547B2 (en) * 2011-12-22 2018-02-27 Intel Corporation Packed data rearrangement control indexes generation processors, methods, systems and instructions
US10877765B2 (en) * 2015-03-10 2020-12-29 Intel Corporation Apparatuses and methods to assign a logical thread to a physical thread

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6031992A (en) * 1996-07-05 2000-02-29 Transmeta Corporation Combining hardware and software to provide an improved microprocessor
US20020073398A1 (en) * 1998-12-14 2002-06-13 Jeffrey L. Tinker Method and system for modifying executable code to add additional functionality
US20040107416A1 (en) * 2002-12-02 2004-06-03 Microsoft Corporation Patching of in-use functions on a running computer system
US20110238961A1 (en) * 2003-07-16 2011-09-29 John Banning System and method of instruction modification
US20120179897A1 (en) * 2011-01-07 2012-07-12 Campbell Neil A Techniques for modifying a processor code sequence

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114356341A (en) * 2022-01-04 2022-04-15 腾讯科技(成都)有限公司 A data processing method, device, equipment, storage medium and product

Also Published As

Publication number Publication date
US20180101384A1 (en) 2018-04-12

Similar Documents

Publication Publication Date Title
Seifzadeh et al. A survey of dynamic software updating
CN105911885B (en) Industrial control unit (ICU) for improving industrial control system
GB2527060A (en) Method and device for updating software executed from non-volatile memory
US20130055217A1 (en) Breakpoint synchronization for modified program source code
US10338910B2 (en) Multi-tenant upgrading
JP2018519556A (en) System and method for provisioning cloud services across heterogeneous computing environments
US8347278B2 (en) Instrumenting a compiled software routine for augmentation
US20180101384A1 (en) Morphed instruction according to configuration update
US9841982B2 (en) Locating import class files at alternate locations than specified in classpath information
CN103077066B (en) A kind of method and system of embedded product key message when compiling
US11442708B2 (en) Compiler-generated alternate memory-mapped data access operations
US11455156B1 (en) Generating tie code fragments for binary translation
EP3564764B1 (en) Device for processing programmable logic controller program
CN108268266A (en) A kind of upgrade method and device
EP3065051A1 (en) Flow control for language-embedded programming in general-purpose computing on graphics processing units
US20120151153A1 (en) Programmable Controller
US11023238B1 (en) Optimized branching using safe static keys
CN111475684B (en) Data processing network system and calculation chart generation method thereof
WO2024205585A1 (en) System and method for generating control applications on real-time platforms
Kang et al. Dynamic software updating for cyber-physical systems
CN108958795A (en) BootLoader code huge profit method and development board in a kind of embedded system
US20150205697A1 (en) Software development apparatus and method
CN116431472B (en) Custom function block development system and running debugging method
CN120653259B (en) A method, apparatus, medium, and program product for compiling program code.
CN118093212B (en) Synchronization method for multi-user task access global variable and related equipment

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 15889389

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 15889389

Country of ref document: EP

Kind code of ref document: A1