IP Library Granted Patent US 7,401,329
Granted Patent B2
US 7,401,329 · App. 11/113,307 · Granted Jul 15, 2008

Compiling computer programs to exploit parallelism without exceeding available processing resources

Assignee: ARM Limited
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,401,329
App. No.
11/113,307
Granted
Jul 15, 2008
Kind
B2
Abstract

A compilation technique for computer programs forms a data flow graph of vertices which are analysed to form clusters C for parallel execution where those clusters are added to up to the point at which arbitrary selection between further vertices C, D to be added must be made. This data flow graph with these small clusters is then scheduled such that the clusters do not overlap with other clusters or with vertices outside of clusters. This starting point scheduled data flow graph is then subject to iterative processing whereby a window of timestamps is analysed to see if a candidate cluster formed by the parallel execution of the vertices within that window will result in faster execution whilst avoiding exceeding architectural constraints, such as register occupancy. If the rescheduled vertices do improve performance without exceeding architectural constraints, then this new schedule is adopted and the following vertices are subject to an adjustment in their timestamps to account for this. A window at a different point within the schedule is then adopted and an attempted rescheduling examined. This process is repeated until no progress is being made in reducing the overall execution time.

Claims (26)

1. A method of compiling a computer program, said method comprising the steps of:

(i) forming from said computer program a data flow graph corresponding to a plurality of linked vertices, a vertex representing a data processing operation performed by said computer program and a link between vertices representing data flow between data processing operations;

(ii) associating linked vertices within said data flow graph to form clusters of linked vertices corresponding to data processing operations to be scheduled together for execution, said clusters being grown with vertices being added to a cluster until an arbitrary selection of a next vertex to be added to said cluster has to be made between two or more vertices;

(iii) scheduling said vertices within each cluster and then scheduling said clusters for non-overlapped execution to form a current schedule and associating a timestamp with vertices within said clusters indicative of a scheduled time of execution;

(iv) disassociating said vertices within said clusters;

(v) associating a plurality of vertices adjacent in timestamp order to form a candidate cluster, vertices being added to a current candidate cluster until a threshold criteria for said current candidate cluster is exceeded whereupon adding of vertices to said candidate cluster is stopped;

(vi) rescheduling said vertices within said candidate cluster to form a candidate schedule;

(vii) determining if a time for execution of said vertices within said candidate cluster in accordance with said candidate schedule is less than with said current schedule and that said threshold criteria is not exceeded;

(viii) if said time for execution is less and said threshold criteria is not exceeded, then retaining said candidate schedule as a new current schedule for said vertices within said candidate cluster and rescheduling and modifying timestamps for following vertices within said data flow graph to compensate for said new current schedule;

(ix) if said time for execution is not less or said threshold criteria exceeded, then discarding said candidate schedule and retaining said current schedule;

(x) if attempted rescheduling of a sufficient proportion of said vertices of said data flow graph has not been performed, then returning to step (v) to start forming a next candidate cluster starting from a vertex having different starting timestamp;

(xi) if rescheduling of at least one candidate cluster has reduced said time for execution of said computer program sufficiently in accordance with a convergence criteria, then returning to step (v); and

(xii) if rescheduling of at least one candidate cluster has not reduced said time for execution of said computer program sufficiently in accordance with said convergence criteria, then generating an output compiled computer program in accordance with said current scheduling.

2. A method as claimed in claim 1 , wherein said threshold criteria is exceeding available processing resources.

3. A method as claimed in claim 1 , wherein said computer program is a computer program for controlling processing operations performed by a VLIW device having a plurality of parallel data processing paths to be controlled.

4. A method as claimed in claim 2 , wherein said available processing resources comprise one or more of:

available data storage registers;

available execution units;

available memory; and

available data transfer bandwidth.

5. A method as claimed in claim 1 , wherein when performing step (xi) and returning to step (v) said associating linked vertices starts with a different timestamp.

6. A method as claimed in claim 1 , wherein said arbitrary selection comprises an arbitrary scheduling decision.

7. A method as claimed in claim 1 , wherein said step of forming a next candidate cluster starting from a vertex having different starting timestamp comprises forming a next candidate cluster starting from a vertex having next timestamp.

8. A method as claimed in claim 1 , wherein said sufficient proportion of said vertices of said data flow graph comprises all of said vertices of said data flow graph.

9. A method as claimed in claim 1 , wherein said convergence criteria comprises any reduction in time.

10. A computer program product comprising a computer program recording medium including a computer program operable to control a computer to perform a method as claimed in claim 1 .

Assignments (5)
CHANGE OF NAME Recorded Oct 4, 2019
From: COGNOVO LIMITED
To: U-BLOX UK MELBOURN LTD
Reel/Frame 050631/0337 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 4, 2019
From: U-BLOX MELBOURN LTD
To: U-BLOX AG
Reel/Frame 050633/0018 →
CHANGE OF NAME Recorded Oct 4, 2019
From: U-BLOX UK MELBOURN LTD
To: U-BLOX MELBOURN LTD
Reel/Frame 050638/0132 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 18, 2012
From: ARM LIMITED
To: COGNOVO LIMITED
Reel/Frame 028577/0845 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 12, 2005
From: DE RIJCK, BERT
To: ARM LIMITED
Reel/Frame 016766/0954 →
Continuity (1)
Related Publication 20060242633A1 · Oct 26, 2006