IP Library Granted Patent US 10,223,141
Granted Patent B2
US 10,223,141 · App. 15/428,917 · Granted Mar 5, 2019

Runtime compiler environment with dynamic co-located code execution

Inventors: Jason Mars (Ann Arbor, MI); Michael Laurenzano (Dexter, MI); Lingjia Tang (Ann Arbor, MI)
Assignee: THE REGENTS OF THE UNIVERSITY OF MICHIGAN
G06F9/4552G06F8/443
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,223,141
App. No.
15/428,917
Granted
Mar 5, 2019
Kind
B2
Abstract

A system is provided for monitoring, regenerating and replacing the code of running applications with semantically equivalent, specialized code versions that reflect the demands of the execution environment. The system includes a co-designed compiler and runtime system that virtualizes a selected set of edges in a host program, where these edges provide hooks through which the runtime system may redirect execution into an intermediate representation utilized to optimize introspective and extrospective processes.

Claims (29)

1. A computer-implemented method of executing a host application code using one or more runtime processors and using co-located code instructions accessible to the one or more runtime processors, the method comprising:

monitoring the host application code introspectively during runtime, the host application code including a plurality of functions and/or code regions, and/or monitoring extrospectively for changes in a runtime environment;

identifying one or more control edges within the host application code, where the one or more edges are redirection points for a subset of the plurality of functions and/or code regions;

caching a code variant for each function and/or code region associated with the one or more control edges; and

during runtime execution of the host application code, redirecting code execution out of host application code at each of the one or more control edges to execute the cached code variant corresponding to the function and/or code region associated with the one or more edges and redirecting code execution back into the host application code after completion of the executed cached code variant, wherein redirecting code execution occurs in response to a trigger determined from the introspective monitoring and/or the extrospective monitoring.

2. The method of claim 1 , wherein introspective monitoring includes identifying a hot code region.

3. The method of claim 1 , wherein extrospective monitoring includes monitoring for changes in the input/load fluctuation, changes in the starting or stopping of co-running applications, phase changes in the host application code, and/or phase changes in a runtime execution environment.

4. The method of claim 3 , wherein the phase changes in the host application code comprise changes in the instructions per cycle or branches retired per cycle.

5. The method of claim 3 , wherein the phase changes in hardware performance comprise cache misses, bandwidth usage, queries per second, and/or latency.

6. The method of claim 1 , further comprising:

identifying, through the monitoring of the host application during runtime, that one or more performance slowdown conditions are present during runtime; and

determining (i) when to identify the one or more control edges within the application code, (ii) the number of the one or more control edges to be identify, and (iii) the number of code variants to cache so that the one or more performance slowdown conditions are reversed as a result of the redirecting code execution out of host application code.

7. The method of claim 1 , further comprising caching the code variant for each function and/or code region associated with the one or more control edges in a low-level virtual machine state.

8. The method of claim 1 , further comprising caching the code variant for each function and/or code region associated with the one or more control edges buy updating a metadata table in the host application code, the metadata table mapping of subset of the plurality of functions and/or code regions to the one or more control edges.

9. A system comprising:

one or more processors and one or more memories, the one or more memories storing instructions that when executed by the one or more processors, cause the one or more processors to:

monitor host application code introspectively during runtime, the host application code including a plurality of functions and/or code regions and/or monitor extrospectively for changes in a runtime environment;

identify one or more control edges within the host application code, where the one or more edges are redirection points for a subset of the plurality of functions and/or code regions;

cache a code variant for each function and/or code region associated with the one or more control edges; and

during runtime execution of the host application code, redirect code execution out of host application code at each of the one or more control edges to execute the cached code variant corresponding to the function and/or code region associated with the one or more edges and redirecting code execution back into the host application code after completion of the executed cached code variant, wherein redirecting code execution occurs in response to a trigger determined from the introspective monitoring and/or the extrospective monitoring.

10. The system of claim 9 , wherein the one or more memories further store instructions that when executed by the one or more processors, cause the one or more processors to identify a hot code region.

11. The system of claim 10 , wherein extrospective monitoring includes monitoring for changes in the input/load fluctuation, changes in the starting or stopping of co-running applications, phase changes in the host application code, and/or phase changes in a runtime execution environment.

12. The system of claim 11 , wherein the phase changes in the host application code comprise changes in the instructions per cycle or branches retired per cycle.

13. The system of claim 11 , wherein the phase changes in hardware performance comprise cache misses, bandwidth usage, queries per second, and/or latency.

14. The system of claim 9 , wherein the one or more memories further store instructions that when executed by the one or more processors, cause the one or more processors to:

identify, through the monitoring of the host application during runtime, that one or more performance slowdown conditions are present during runtime;

determine (i) when to identify the one or more control edges within the application code, (ii) the number of the one or more control edges to be identify, and (iii) the number of code variants to cache so that the one or more performance slowdown conditions are reversed as a result of the redirecting code execution out of host application code.

15. The system of claim 9 , wherein the one or more memories further store instructions that when executed by the one or more processors, cause the one or more processors to cache the code variant for each function and/or code region associated with the one or more control edges in a low-level virtual machine state.

16. The system of claim 9 , wherein the one or more memories further store instructions that when executed by the one or more processors, cause the one or more processors to cache the code variant for each function and/or code region associated with the one or more control edges buy updating a metadata table in the host application code, the metadata table mapping of subset of the plurality of functions and/or code regions to the one or more control edges.

Assignments (2)
CONFIRMATORY LICENSE Recorded Feb 20, 2019
From: UNIVERSITY OF MICHIGAN
To: NATIONAL SCIENCE FOUNDATION
Reel/Frame 048382/0905 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 28, 2017
From: MARS, JASON; LAURENZANO, MICHAEL; TANG, LINGJIA
To: THE REGENTS OF THE UNIVERSITY OF MICHIGAN
Reel/Frame 042846/0758 →
Continuity (3)
Division 14966965 · Dec 11, 2015
Provisional Application 62091297 · Dec 12, 2014
Related Publication 20170249172A1 · Aug 31, 2017
Cited By (1)
US 12,517,725