IP Library Granted Patent US 7,000,091
Granted Patent B2
US 7,000,091 · App. 10/215,095 · Granted Feb 14, 2006

System and method for independent branching in systems with plural processing elements

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,000,091
App. No.
10/215,095
Granted
Feb 14, 2006
Kind
B2
Abstract

The invention is a system and method for executing a program that comprises a plurality of basic blocks on a computer system that comprises a plurality of processing elements. The invention generates a branch instruction by one processing element of the plurality of processing elements, sends the branch instruction to the plurality of processing elements. The invention then independently branches to a target of the branch instruction by each of the processing elements of the plurality of processing elements when each processing element receives the sent branch instruction. At least one processing element of the plurality of processing elements receives the branch instruction at a time later than another processing element of the plurality of processing elements.

Claims (52)

1. A method for executing a program that comprises a plurality of basic blocks on a computer system that comprises a plurality of processing elements:

generating a branch target address by one processing element of the plurality of processing elements;

sending the branch target address to at least one other processing element of the plurality of processing elements; and

independently branching to a target of the branch target address by each of the processing elements of the plurality of processing elements when each processing element receives the sent branch target address;

wherein at least one processing element of the plurality of processing elements receives the branch target address at a time later than another processing element of the plurality of processing elements.

2. The method of claim 1 , further comprising:

after branching, executing a basic block located at the target by each processing element of the plurality of processing elements.

3. The method of claim 1 , wherein the sending comprises:

transporting the branch target address by a network.

4. The method of claim 1 , wherein:

the computer system is a VLIW system.

5. The method of claim 1 , further comprising:

forming a branch latency table for the system.

6. The method of claim 5 , wherein the table comprises a plurality of branch vectors that describe a latency for sending the branch target address from the one processing element to each processing element of the plurality of processing elements.

7. The method of claim 5 , wherein:

the forming a branch latency table is performed by a compiler.

8. The method of claim 1 , wherein:

the program is statically scheduled by a compiler.

9. The method of claim 8 , further comprising:

scheduling the program without padding branch latency time.

10. The method of claim 1 , wherein:

the branch generating the branch target address is a conditional branch that has at least two targets, wherein selection of each target is dependent upon satisfaction of a condition.

11. A system for executing a program that comprises a plurality of basic blocks, the system comprising:

a plurality of processing elements, wherein at least one processing element of the plurality of processing elements generates a branch target address during processing of a basic block; and

a branch transport network that delivers the branch target address to at least one other processing element of the plurality of processing elements;

wherein the at least one processing element and the at least one other processing element branch to a target of the branch target address independently of each other; and

wherein the at least one other processing element receives the branch target address at a time different from the one processing element.

12. The system of claim 11 , wherein:

the computer system is a VLIW system.

13. The system of claim 11 , further comprising:

a branch latency table having at least one branch vector that describe a latency for sending the branch target address from the at least one processing element to the at least one other processing element.

14. The system of claim 13 , wherein:

the branch latency table is formed by a compiler.

15. The system of claim 11 , wherein:

the program is statically scheduled by a compiler.

16. The system of claim 11 , wherein:

the branch generating the branch target address is a conditional branch that has at least two targets, wherein selection of each target is dependent upon satisfaction of a condition.

17. A computer program product having a computer readable medium having computer program logic recorded thereon for executing a program that comprises a plurality of basic blocks on a computer system that comprises a plurality of processing element, the computer program product comprising:

means for sending a branch target address generated by one processing element of the plurality of processing elements from processing a basic block to at least one other processing element;

means for branching to a target of the branch target address by the one processing element; and

means for branching to the target of the branch target address by the at least one other processing element, which is independent of the means for branching to the target of the branch target address by the one processing element;

wherein at least one other processing element of the plurality of processing elements receives the branch target address at a time different from the one processing element.

18. The computer program product of claim 17 , further comprising:

means for executing the basic block located at the target by the one processing element after branching; and

means for executing the basic block located at the target by the at least one other processing element after branching.

19. The computer program product of claim 17 , further comprising:

means for describing a latency for sending the branch target address from the one processing element to the at least one other processing element.

20. The computer program product of claim 19 , further comprising:

means for scheduling the program without padding branch latency time that uses the means for describing.

21. The method of claim 1 , wherein any of said plurality of processing elements can generate a branching instruction.

22. The method of claim 11 , wherein any of said plurality of processing elements can generate a branching instruction.

23. The method of claim 17 , wherein any of said plurality of processing elements can generate a branching instruction.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 11, 2011
From: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.; HEWLETT-PACKARD COMPANY
To: SAMSUNG ELECTRONICS CO., LTD.
Reel/Frame 026008/0690 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 18, 2003
From: HEWLETT-PACKARD COMPANY
To: HEWLETT-PACKARD DEVELOPMENT COMPANY, L.P.
Reel/Frame 013776/0928 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 31, 2002
From: SCHLANSKER, MICHAEL S
To: HEWLETT-PACKARD COMPANY
Reel/Frame 013644/0585 →