IP Library Granted Patent US 9,158,584
Granted Patent B2
US 9,158,584 · App. 13/856,102 · Granted Oct 13, 2015

Distributed application execution in a heterogeneous processing system

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 9,158,584
App. No.
13/856,102
Granted
Oct 13, 2015
Kind
B2
Abstract

A method for distributing execution of a computer program to a plurality of hardware architectures of different types including: analyzing the computer program to identify a plurality of execution boundaries; selecting one or more execution boundaries from the plurality of execution boundaries; linking the computer program to the selected one or more execution boundaries; executing the computer program with linked execution boundaries; saving a hardware agnostic state of the execution of the computer program, when the execution encounters a boundary from the selected one or more execution boundaries; and transmitting the hardware agnostic state to a remote hardware architecture to be executed on the remote hardware architecture, responsive to the hardware agnostic state.

Claims (33)

1. A method for distributing sequential execution of a computer program to a plurality of hardware architectures of different types, the method comprising:

analyzing the computer program to identify a plurality of execution boundaries, wherein there is an execution boundary when the computer program transfers execution control to a library, and when execution control is transferred back to the computer program;

selecting one or more execution boundaries from the plurality of execution boundaries, based on predetermined parameters;

linking the computer program to the selected one or more execution boundaries;

executing the computer program with linked execution boundaries in an originating hardware architecture;

saving a hardware agnostic state of the execution of the computer program at a first execution stop point in the computer program, when the execution encounters a boundary from the selected one or more execution boundaries;

transmitting the hardware agnostic state to a remote hardware architecture to be executed on the remote hardware architecture, responsive to the hardware agnostic state; and

sequentially executing the computer program starting from the first execution stop point, by the remote hardware architecture, wherein the computer program is executed by a single hardware architecture at any point of time, during its execution.

2. The method of claim 1 , further comprising grouping the selected one or more boundaries for different types of hardware architectures; and linking the computer program to the grouping.

3. The method of claim 2 , further comprising saving a plurality of hardware agnostic states of the execution of the computer program responsive to the grouping; and transmitting the plurality of hardware agnostic states to a respective remote hardware architecture, responsive to the grouping.

4. The method of claim 1 , wherein analyzing the computer program further comprises determining which operating system and libraries are used by the computer program, determining what execution boundaries the identified operating system and libraries utilize within the computer program; and collecting boundary information for selecting one or more execution boundaries within the computer program.

5. The method of claim 4 , wherein the boundary information includes calling frequency of the execution boundary, and number of unique calls to the execution boundary.

6. The method of claim 5 , wherein the boundary information further includes call timing and calling dependency information.

7. The method of claim 1 , wherein the selected one or more execution boundaries are selected based on how, often they are used and how widespread their usage is.

8. The method of claim 1 , wherein the selected one or more execution boundaries are selected based on the type of the computer program.

9. The method of claim 1 , further comprising transferring the result of execution of the hardware agnostic state from the remote hardware to the originating hardware architecture.

10. The method of claim 1 , further comprising identifying a method of transmitting the hardware agnostic state to the remote hardware architecture.

11. The method of claim 1 , wherein the remote hardware architecture is selected randomly from a list of remote hardware architectures.

12. The method of claim 1 , wherein registers of the originating hardware architecture are converted to the registers of the hardware agnostic state and registers of the hardware agnostic state are converted to the registers of the remote hardware architecture.

13. A method for distributing execution of a computer program to a plurality of hardware architectures of different types, the method comprising:

analyzing the computer program to identify an execution boundary, wherein there is an execution boundary when the computer program transfers execution control to a library, and when execution control is transferred back to the computer program;

linking the computer program to the execution boundary;

executing the computer program with the linked execution boundary in an originating hardware architecture;

saving a hardware agnostic state of the execution of the computer program at a first execution stop point in the computer program, when the execution encounters said execution boundary;

transmitting the hardware agnostic state to a remote hardware architecture to be executed on the remote hardware architecture, responsive to the hardware agnostic state, wherein the remote hardware architecture is selected randomly from a list of remote hardware architectures; and

sequentially executing the computer program starting from the first execution stop point, by the remote hardware architecture, wherein the computer program is executed by a single hardware architecture at any point of time, during its execution.

14. The method of claim 13 , wherein the execution boundary includes calling frequency of the execution boundary, and number of unique calls to the execution boundary.

15. The method of claim 14 , wherein the execution boundary further includes call timing and calling dependency information.

16. The method of claim 13 , wherein the execution boundary is identified based on how often it is used and how widespread its usage is.

17. The method of claim 13 , wherein the execution boundaries is identified based on the type of the computer program.

18. The method of claim 13 , further comprising transferring the result of execution of the hardware agnostic state from the remote hardware to the originating hardware architecture.

19. The method of claim 13 , further comprising identifying a method of transmitting the hardware agnostic state to the remote hardware architecture.

20. The method of claim 13 , wherein registers of the originating hardware architecture are converted to the registers of the hardware agnostic state and registers of the hardware agnostic state are converted to the registers of the remote hardware architecture.

Assignments (15)
CHANGE OF NAME Recorded Mar 21, 2025
From: FORCEPOINT FEDERAL HOLDINGS LLC
To: EVERFOX HOLDINGS LLC
Reel/Frame 070585/0524 →
PARTIAL PATENT RELEASE AND REASSIGNMENT AT REEL/FRAME 055052/0302 Recorded Oct 3, 2023
From: CREDIT SUISSE, AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
To: FORCEPOINT FEDERAL HOLDINGS LLC (F/K/A FORCEPOINT LLC)
Reel/Frame 065103/0147 →
SECURITY INTEREST Recorded Sep 29, 2023
From: FORCEPOINT FEDERAL HOLDINGS LLC
To: APOLLO ADMINISTRATIVE AGENCY LLC, AS COLLATERAL AGENT
Reel/Frame 065086/0822 →
CHANGE OF NAME Recorded May 12, 2021
From: FORCEPOINT LLC
To: FORCEPOINT FEDERAL HOLDINGS LLC
Reel/Frame 056216/0309 →
PATENT SECURITY AGREEMENT Recorded Jan 20, 2021
From: REDOWL ANALYTICS, INC.; FORCEPOINT LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 055052/0302 →
RELEASE OF SECURITY INTEREST IN PATENTS Recorded Jan 8, 2021
From: RAYTHEON COMPANY
To: FORCEPOINT LLC
Reel/Frame 055452/0207 →
RELEASE OF SECURITY INTEREST IN PATENTS Recorded Jan 8, 2021
From: RAYTHEON COMPANY
To: WEBSENSE, INC.; PORTAUTHORITY TECHNOLOGIES, LLC (FKA PORTAUTHORITY TECHNOLOGIES, INC.); RAYTHEON OAKLEY SYSTEMS, LLC; FORCEPOINT FEDERAL LLC (FKA RAYTHEON CYBER PRODUCTS, LLC, FKA RAYTHEON CYBER PRODUCTS, INC.)
Reel/Frame 055492/0146 →
PATENT SECURITY AGREEMENT SUPPLEMENT Recorded Feb 27, 2020
From: FORCEPOINT LLC
To: RAYTHEON COMPANY
Reel/Frame 052045/0482 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 1, 2017
From: FORCEPOINT FEDERAL LLC
To: FORCEPOINT LLC
Reel/Frame 043397/0460 →
CHANGE OF NAME Recorded Feb 16, 2016
From: RAYTHEON CYBER PRODUCTS, LLC
To: FORCEPOINT FEDERAL LLC
Reel/Frame 037821/0818 →
PATENT SECURITY AGREEMENT Recorded Jun 9, 2015
From: WEBSENSE, INC.; RAYTHEON OAKLEY SYSTEMS, LLC; RAYTHEON CYBER PRODUCTS, LLC (FORMERLY KNOWN AS RAYTHEON CYBER PRODUCTS, INC.); PORT AUTHORITY TECHNOLOGIES, INC.
To: RAYTHEON COMPANY
Reel/Frame 035859/0282 →
CHANGE OF NAME Recorded Jun 2, 2015
From: RAYTHEON CYBER PRODUCTS, INC.
To: RAYTHEON CYBER PRODUCTS, LLC
Reel/Frame 035806/0367 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 28, 2015
From: RAYTHEON BBN TECHNOLOGIES CORP.
To: RAYTHEON CYBER PRODUCTS, INC.
Reel/Frame 035794/0226 →
CONFIRMATORY LICENSE Recorded Jun 12, 2013
From: RAYTHEON BBN TECHNOLOGIES CORPORATION
To: AFRL/RIJ
Reel/Frame 030601/0462 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 3, 2013
From: MARTZ, ROBERT; MATTHEWS, DAVID; EDMISON, JOSHUA
To: RAYTHEON BBN TECHNOLOGIES CORP.
Reel/Frame 030144/0514 →