IP Library Granted Patent US 7,743,370
Granted Patent B1
US 7,743,370 · App. 11/251,994 · Granted Jun 22, 2010

System and methods for determination of independence of sub-graphs in a graph-based intermediate representation of program instructions

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 7,743,370
App. No.
11/251,994
Granted
Jun 22, 2010
Kind
B1
Abstract

An intermediate representation of sequences of instructions for a stacked based computer is a code graph using a numbering method on the nodes of the graph, along with a set of relations among the nodes, to determine, in a single pass, the independence of each node or sub-graph represented by the node. The numbering is a post-order that directly, by numerical comparison defines the relevant hierarchical relationships among sub-graphs. The sub-graph of a particular node may have one or more alias nodes that refers to target nodes, a target node being a node representing an argument which is the result of a previous program instruction. For a subgraph to be considered independent, any aliases generated by nodes within the subgraph must themselves be contained in it, and conversely, any aliases in the subgraph must have been generated by nodes also within it.

Claims (35)

1. A computer-implemented method for optimizing the operation of sequences of computer program instructions executing within a computing system by determining independence of a sub-graph in a code graph, wherein the code graph is a graph-based representation of the sequences of computer program instructions and the sub-graph represents part of the computer program that would be affected by the certain rearrangement of sequences of instructions for optimization, comprising the steps of:

visiting a plurality of nodes in the code graph in post-order fashion; determining for a current node being visited whether a sub-graph of the current node has an alias node that refers to a target node, said target node being a node representing an argument which is the result of a previous program instruction;

determining whether the target node is outside of the sub-graph of the current node by determining a smallest post-order node number of all said target nodes of all alias nodes in the sub-graph of the current node, comparing said smallest post-order node number of all said target nodes to a smallest post-order node number overall in the sub-graph of the current node and indicating the target node is outside the sub-graph of the current node if said smallest post-order node number of all said target nodes is not greater than or equal to the smallest post-order node number overall in the sub-graph of the current node;

determining a total number of alias nodes in the sub-graph of the current node;

determining a total number of alias nodes generated as a result of program instructions represented in the sub-graph of the current node;

indicating that the sub-graph of the current node is not independent if the total number of alias nodes in the sub-graph does not equal the total number of alias nodes generated as a result of program instructions represented in the sub-graph; and

indicating that the sub-graph is not independent if the target node is outside the sub-graph of the current node.

2. A computer readable storage medium having instructions thereon for performing the method of claim 1 .

3. The method of claim 1 wherein the total number of alias nodes in the sub-graph and the total number of alias nodes generated as a result of program instructions represented in the sub-graph is tracked and stored during creation of the code graph.

4. A computer readable storage medium having instructions thereon for performing the method of claim 3 .

5. A computer-implemented method for determining the independence of a sub-graph in a code graph, wherein the code graph is a graph-based representation of the sequences of computer program instructions executing within a computing system, the method comprising:

visiting a plurality of nodes in the code graph in post-order fashion;

determining for a current node being visited whether a sub-graph of the current node has an alias node that refers to a target node, said target node being a node representing an argument which is the result of a previous program instruction;

determining whether the target node is outside of the sub-graph of the current node;

indicating that the sub-graph is not independent if the target node is outside the sub-graph of the current node;

determining for the current node whether there is at least one node within the sub-graph of the current node that represents that a basic block corresponding to the program instructions represented by the code graph contains an instruction some or all of whose arguments are supplied from a different basic block not represented by the code graph;

indicating that the sub-graph of the current node is not independent if there is at least one such said node within the sub-graph of the current node;

determining a total number of alias nodes in the sub-graph of the current node;

determining a total number of alias nodes generated as a result of program instructions represented in the sub-graph of the current node;

and indicating that the sub-graph of the current node is not independent if the total number of alias nodes in the sub-graph does not equal the total number of alias nodes generated as a result of program instructions represented in the sub-graph.

6. A computer readable storage medium having instructions thereon for performing the method of claim 5 .

7. The method of claim 5 wherein the total number of alias nodes in the sub-graph and the total number of alias nodes generated as a result of program instructions represented in the sub-graph is tracked and stored during creation of the code graph.

8. A computer readable storage medium having instructions thereon for performing the method of claim 7 .

9. A system for determining the independence of a sub-graph in a code graph, wherein the code graph is a graph-based representation of the sequences of computer program instructions comprising:

means for visiting a plurality of nodes in the code graph in post-order fashion;

means for determining for a current node being visited whether a sub-graph of the current node has an alias node that refers to a target node, said target node being a node representing an argument which is the result of a previous program instruction;

means for determining whether the target node is outside of the sub-graph of the current node, comprising means for determining a smallest post-order node number of all said target nodes of all alias nodes in the sub-graph of the current node;

means for comparing said smallest post-order node number of all said target nodes to a smallest post-order node number overall in the sub-graph of the current node;

means for indicating the target node is outside the sub-graph of the current node if said smallest post-order node number of all said target nodes is not greater than or equal to the smallest post-order node number overall in the sub-graph of the current node;

means for determining for the current node whether there is at least one node within the sub-graph of the current node that represents that a basic block corresponding to the program instructions represented by the code graph contains an instruction some or all of whose arguments are supplied from a different basic block not represented by the code graph;

means for indicating that the sub-graph of the current node is not independent if there is at least one such said node within the sub-graph of the current node;

means for determining a total number of alias nodes in the sub-graph of the current node;

means for determining a total number of alias nodes generated as a result of program instructions represented in the sub-graph of the current node; and

means for indicating that the sub-graph of the current node is not independent if the total number of alias nodes in the sub-graph does not equal the total number of alias nodes generated as a result of program instructions represented in the sub-graph.

10. The system of claim 9 wherein the total number of alias nodes in the sub-graph and the total number of alias nodes generated as a result of program instructions represented in the sub-graph is tracked and stored during creation of the code graph.

Assignments (12)
AMENDED AND RESTATED PATENT SECURITY AGREEMENT Recorded Jun 27, 2025
From: UNISYS CORPORATION; UNISYS HOLDING CORPORATION; UNISYS NPL, INC.; UNISYS AP INVESTMENT COMPANY I
To: COMPUTERSHARE TRUST COMPANY, N.A., AS COLLATERAL TRUSTEE
Reel/Frame 071759/0527 →
RELEASE OF SECURITY INTEREST Recorded Jul 12, 2022
From: VENTURE LENDING & LEASING IX, INC.; WTI FUND X, INC.
To: PARALLEL WIRELESS, INC.
Reel/Frame 060900/0022 →
RELEASE OF SECURITY INTEREST Recorded Oct 28, 2020
From: WELLS FARGO BANK, NATIONAL ASSOCIATION
To: UNISYS CORPORATION
Reel/Frame 054231/0496 →
RELEASE OF SECURITY INTEREST Recorded Nov 9, 2017
From: WELLS FARGO BANK, NATIONAL ASSOCIATION (SUCCESSOR TO GENERAL ELECTRIC CAPITAL CORPORATION)
To: UNISYS CORPORATION
Reel/Frame 044416/0358 →
SECURITY INTEREST Recorded Oct 6, 2017
From: UNISYS CORPORATION
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 044144/0081 →
PATENT SECURITY AGREEMENT Recorded Apr 27, 2017
From: UNISYS CORPORATION
To: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS COLLATERAL TRUSTEE
Reel/Frame 042354/0001 →
RELEASE OF SECURITY INTEREST Recorded Mar 26, 2013
From: DEUTSCHE BANK TRUST COMPANY AMERICAS, AS COLLATERAL TRUSTEE
To: UNISYS CORPORATION
Reel/Frame 030082/0545 →
RELEASE OF SECURITY INTEREST Recorded Mar 15, 2013
From: DEUTSCHE BANK TRUST COMPANY
To: UNISYS CORPORATION
Reel/Frame 030004/0619 →
SECURITY AGREEMENT Recorded Jun 27, 2011
From: UNISYS CORPORATION
To: GENERAL ELECTRIC CAPITAL CORPORATION, AS AGENT
Reel/Frame 026509/0001 →
RELEASE BY SECURED PARTY Recorded Jul 31, 2009
From: CITIBANK, N.A.
To: UNISYS CORPORATION; UNISYS HOLDING CORPORATION
Reel/Frame 023086/0255 →
SECURITY AGREEMENT Recorded Jun 20, 2006
From: UNISYS CORPORATION; UNISYS HOLDING CORPORATION
To: CITIBANK, N.A.
Reel/Frame 018003/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 17, 2005
From: KRABLIN, G. LAWRENCE; BARTELS, STEPHEN R.
To: UNISYS CORPORATION
Reel/Frame 017121/0072 →