Systems and methods for selectively controlling multithreaded execution of executable code segments
First Claim
1. A method comprising:
- determining, on an instruction-by-instruction basis, instruction control information for selectively controlling multithreaded execution of executable code segments of instructions executable upon one or more processing units of a multicore processor-based system, wherein the instruction control information includes context switching control information configured to inform a processing unit of the one or more processing units of the multicore processor-based system whether to initiate a thread switch from a thread in which an executable code segment of an instruction corresponding to the context switching control information is executed by the processing unit to another thread executed by the processing unit and thread control information configured to designate to the processing unit of the multicore processor-based system between an operand field of an executable code segment of the instruction corresponding to the thread control information (i) indexing to a user data register block of the multicore processor-based system and (ii) indexing to a control register block of the multicore processor-based system, wherein the thread control information comprises information for a plurality of operands of the executable code segment of the instruction corresponding to the thread control information, wherein the information of the thread control information includes information corresponding to each operand of the plurality of operands and independently designates to the processing unit that the corresponding operand indexes to one of the user data register block and the control register block; and
including the instruction control information having the context switching control information and the thread control information in an instruction format having one or more instruction control information fields and one or more executable code segment fields, wherein the thread control information is fully contained in an instruction control information field of the one or more instruction control information fields separate from the plurality of operands contained in the one or more executable code segment fields.
10 Assignments
0 Petitions
Accused Products
Abstract
Systems and methods which provide a modular processor framework and instruction set architecture designed to efficiently execute applications whose memory access patterns are irregular or non-unit stride are disclosed. A hybrid multithreading framework (HMTF) of embodiments provides a framework for constructing tightly coupled, chip-multithreading (CMT) processors that contain specific features well-suited to hiding latency to main memory and executing highly concurrent applications. The HMTF of embodiments includes an instruction set designed specifically to exploit the high degree of parallelism and concurrency control mechanisms present in the HMTF hardware modules. The instruction format implemented by a HMTF of embodiments is designed to give the architecture, the runtime libraries, and/or the application ultimate control over how and when concurrency between thread cache units is initiated. For example, one or more bit of the instruction payload may be designated as a context switch bit (CTX) for expressly controlling context switching.
213 Citations
21 Claims
-
1. A method comprising:
determining, on an instruction-by-instruction basis, instruction control information for selectively controlling multithreaded execution of executable code segments of instructions executable upon one or more processing units of a multicore processor-based system, wherein the instruction control information includes context switching control information configured to inform a processing unit of the one or more processing units of the multicore processor-based system whether to initiate a thread switch from a thread in which an executable code segment of an instruction corresponding to the context switching control information is executed by the processing unit to another thread executed by the processing unit and thread control information configured to designate to the processing unit of the multicore processor-based system between an operand field of an executable code segment of the instruction corresponding to the thread control information (i) indexing to a user data register block of the multicore processor-based system and (ii) indexing to a control register block of the multicore processor-based system, wherein the thread control information comprises information for a plurality of operands of the executable code segment of the instruction corresponding to the thread control information, wherein the information of the thread control information includes information corresponding to each operand of the plurality of operands and independently designates to the processing unit that the corresponding operand indexes to one of the user data register block and the control register block; and
including the instruction control information having the context switching control information and the thread control information in an instruction format having one or more instruction control information fields and one or more executable code segment fields, wherein the thread control information is fully contained in an instruction control information field of the one or more instruction control information fields separate from the plurality of operands contained in the one or more executable code segment fields.- View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
-
14. A method comprising:
- determining instruction control information for selectively controlling multithreaded execution of executable code segments of instructions executable upon one or more processing units of a multicore processor-based system, wherein the instruction control information of a first instruction unit includes (a) context switching control information configured to inform a processing unit of the one or more processing units of the multicore processor-based system whether to initiate a thread switch from a thread in which an executable code segment of the first instruction unit is executed by the processing unit to another thread executed by the processing unit, (b) thread control information configured to designate to the processing unit of the multicore processor-based system between an operand field of the executable code segment of the first instruction unit (i) indexing to a user data register block of the multicore processor-based system and (ii) indexing to a control register block of the multicore processor-based system, and (c) immediate bundling control information configured to signal that a latter instruction unit comprises an immediate value to be bundled with the first instruction unit, wherein the first instruction unit comprises the executable code segment and the latter instruction unit comprises the immediate value used by the executable code segment of the first instruction unit; and
including the instruction control information having the context switching control information, the thread control information, and the immediate bundling control information in an instruction control field of an instruction format that includes the instruction control field and one or more fields in which a corresponding executable code segment is carried, wherein the one or more fields includes the operand field, wherein the thread control information is fully contained in the instruction control field separate from the operand field; and
wherein the thread control information comprises thread control information for a plurality of operands of the executable code segment of the first instruction unit, wherein thread control information corresponding to each operand independently informs the processing unit whether the corresponding operand relates to the user data register block or the control register block. - View Dependent Claims (15, 16, 17, 18, 19, 20, 21)
- determining instruction control information for selectively controlling multithreaded execution of executable code segments of instructions executable upon one or more processing units of a multicore processor-based system, wherein the instruction control information of a first instruction unit includes (a) context switching control information configured to inform a processing unit of the one or more processing units of the multicore processor-based system whether to initiate a thread switch from a thread in which an executable code segment of the first instruction unit is executed by the processing unit to another thread executed by the processing unit, (b) thread control information configured to designate to the processing unit of the multicore processor-based system between an operand field of the executable code segment of the first instruction unit (i) indexing to a user data register block of the multicore processor-based system and (ii) indexing to a control register block of the multicore processor-based system, and (c) immediate bundling control information configured to signal that a latter instruction unit comprises an immediate value to be bundled with the first instruction unit, wherein the first instruction unit comprises the executable code segment and the latter instruction unit comprises the immediate value used by the executable code segment of the first instruction unit; and
Specification