Method and system for constructing a program including out-of-order threads and processor and method for executing threads out-of-order
First Claim
1. A method of constructing a program suitable for execution by a data processing system, said method comprising:
- assigning each of a plurality of instructions to at least one of a plurality of threads, said plurality of threads including first, second, and third threads, wherein said third thread follows said first thread and precedes said second thread in a logical program order; and
constructing a data structure associated with said first thread, said data structure including an indication that execution of said second thread is to be initiated prior to initiation of execution of said third thread such that said second and third threads are executed out-of-order, wherein said data structure and said plurality of threads together comprise said program.
1 Assignment
0 Petitions
Accused Products
Abstract
A method and system for constructing a program are provided. According to the method, each of a plurality of instructions are assigned to at least one of a plurality of threads. The plurality of threads include first, second, and third threads, where the third thread follows the first thread and precedes the second thread in a logical program order. A data structure associated with the first thread is then constructed. The data structure includes an indication that execution of the second thread is to be initiated prior to initiation of execution of the third thread. According to one embodiment, the indication within the data structure is a pointer that specifies a second data structure associated with the second thread.
179 Citations
22 Claims
-
1. A method of constructing a program suitable for execution by a data processing system, said method comprising:
-
assigning each of a plurality of instructions to at least one of a plurality of threads, said plurality of threads including first, second, and third threads, wherein said third thread follows said first thread and precedes said second thread in a logical program order; and constructing a data structure associated with said first thread, said data structure including an indication that execution of said second thread is to be initiated prior to initiation of execution of said third thread such that said second and third threads are executed out-of-order, wherein said data structure and said plurality of threads together comprise said program. - View Dependent Claims (2, 3, 4)
-
-
5. A system for constructing a program suitable for execution by a data processing system, said system comprising:
-
means for assigning each of a plurality of instructions to at least one of a plurality of threads, said plurality of threads including first, second, and third threads, wherein said third thread follows said first thread and precedes said second thread in a logical program order; and means for constructing a data structure associated with said first thread, said data structure including an indication that execution of said second thread is to be initiated prior to initiation of execution of said third thread such that said second and third threads are executed out-of-order, wherein said data structure and said plurality of threads together comprise said program. - View Dependent Claims (6, 7, 8)
-
-
9. A computer program product for constructing a program suitable for execution by a data processing system, said method comprising:
-
a computer-readable medium; instruction code within said computer-readable medium for causing a data processing system to assign each of a plurality of instructions to at least one of a plurality of threads, said plurality of threads including first, second, and third threads, wherein said third thread follows said first thread and precedes said second thread in a logical program order; and instruction code within said computer-readable medium for causing said data processing system to construct a data structure associated with said first thread, said data structure including indication that execution of said second thread is to be initiated prior to initiation of execution of said third thread such that said second and third threads are executed out-of-order, wherein said data structure and said plurality of threads together comprise said program.
-
-
10. A computer program product, comprising:
-
a program capable of execution by a data processing system, said program including; a plurality of threads, said plurality of threads including first, second, and third threads, wherein said third thread follows said first thread and precedes said second thread in a logical program order; a data structure associated with said first thread, said data structure including an indication that execution of said second thread is to be initiated prior to initiation of execution of said third thread such that said second and third threads are executed out-of-order; and computer-readable medium containing said program.
-
-
11. A method of executing a program within a data processing system, said program including first, second, and third threads, wherein said third thread follows said first thread and precedes said second thread in a logical program order, said method comprising:
-
detecting whether a data structure associated with said first thread includes an indication that execution of said second thread is to be initiated prior to initiation of execution of said third in response to said detection, initiating execution of said second thread; and thereafter, initiating execution of said third thread, such that said second and third threads are executed out-of-order. - View Dependent Claims (12, 13, 14, 15, 16)
-
-
17. A processor, comprising:
-
at least one processing element for executing threads; and a thread scheduler, including; means, responsive to receipt of data structure associated with a first thread of a program including first, second, and third threads, said third thread following said first thread and preceding said second thread in a logical program order, for detecting whether said data structure includes an indication that execution of said second thread is to be initiated prior to initiation of execution of said third thread; and means, responsive to detecting that said data structure includes an indication that execution of said second thread is to be initiated prior to initiation of execution of said third thread, for assigning said second thread to said at least one processing element for execution and for thereafter assigning said third thread to said at least one processing element for execution, such that said second and third threads are executed out-of-order. - View Dependent Claims (18, 19, 20, 21, 22)
-
Specification