IP Library Granted Patent US 10,430,190
Granted Patent B2
US 10,430,190 · App. 13/834,362 · Granted Oct 1, 2019

Systems and methods for selectively controlling multithreaded execution of executable code segments

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 10,430,190
App. No.
13/834,362
Granted
Oct 1, 2019
Kind
B2
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.

Claims (25)

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.

2. The method of claim 1 , further comprising:

analyzing code, from which the instructions are generated, for instruction scheduling, wherein the determining instruction control information is based at least in part on the analyzing.

3. The method of claim 2 , wherein the analyzing comprises:

analyzing the executable code segments to determine when long latency events will occur.

4. The method of claim 2 , wherein the analyzing comprises:

analyzing the executable code segments for pragmas inserted into the code for controlling execution of the instructions.

5. The method of claim 1 , wherein the instruction format includes the instruction control information field in which the instruction control information having the context switching control information and the thread control information of the instruction corresponding to the thread control information is carried and the one or more executable code segment fields in which the executable code segment of the instruction corresponding to the thread control information is carried, wherein the one or more executable code segment fields includes the operand field.

6. The method of claim 1 , wherein a control register of the control register block comprises a user defined register corresponding to the thread control information.

7. The method of claim 1 , wherein a control register of the control register block comprises a macro index indicating a specific case of a payload corresponding to the thread control information.

8. The method of claim 1 , wherein a control register of the control register block comprises a thread cache control register corresponding to the thread control information.

9. The method of claim 1 , wherein a control register of the control register block comprises context switch information corresponding to the thread control information.

10. The method of claim 1 , wherein the instruction control information further includes debugging support and control information configured to support debugging capabilities of the processing unit.

11. The method of claim 10 , wherein the debugging support and control information comprises a step bit controlling subsequent execution to progress a single instruction at a time.

12. The method of claim 10 , wherein the debugging support and control information comprises a break bit signaling a breakpoint to initiate a context save operation of all currently executing thread cache units of the multicore processor-based system prior to execution of the executable code segment of the instruction corresponding to the thread control information.

13. The method of claim 1 , wherein the instruction control information further includes immediate bundling control information configured to signal that a latter instruction unit comprises an immediate value to be bundled with the instruction corresponding to the thread control information.

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.

15. The method of claim 14 , wherein a control register of the control register block comprises a user defined register corresponding to the thread control information.

16. The method of claim 14 , wherein a control register of the control register block comprises a macro index indicating a specific case of a payload corresponding to the thread control information.

17. The method of claim 14 , wherein a control register of the control register block comprises a thread cache control register corresponding to the thread control information.

18. The method of claim 14 , wherein a control register of the control register block comprises context switch information corresponding to the thread control information.

19. The method of claim 14 , wherein the instruction control information further includes debugging support and control information configured to support debugging capabilities of the processing unit.

20. The method of claim 19 , wherein the debugging support and control information comprises a step bit controlling subsequent execution to progress a single instruction at a time.

21. The method of claim 19 , wherein the debugging support and control information comprises a break bit signaling a breakpoint to initiate a context save operation of all currently executing thread cache units of the multicore processor-based system prior to execution of the executable code segment of the first instruction unit.

Assignments (10)
RELEASE OF SECURITY INTEREST Recorded Nov 12, 2019
From: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: MICRON TECHNOLOGY, INC.; MICRON SEMICONDUCTOR PRODUCTS, INC.
Reel/Frame 051028/0001 →
RELEASE OF SECURITY INTEREST Recorded Oct 9, 2019
From: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
To: MICRON TECHNOLOGY, INC.
Reel/Frame 050937/0001 →
RELEASE OF SECURITY INTEREST Recorded Aug 23, 2018
From: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: MICRON TECHNOLOGY, INC.
Reel/Frame 047243/0001 →
SECURITY INTEREST Recorded Jul 13, 2018
From: MICRON TECHNOLOGY, INC.; MICRON SEMICONDUCTOR PRODUCTS, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 047540/0001 →
CORRECTIVE ASSIGNMENT TO CORRECT THE REPLACE ERRONEOUSLY FILED PATENT #7358718 WITH THE CORRECT PATENT #7358178 PREVIOUSLY RECORDED ON REEL 038669 FRAME 0001. ASSIGNOR(S) HEREBY CONFIRMS THE SECURITY INTEREST. Recorded Jun 8, 2017
From: MICRON TECHNOLOGY, INC.
To: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 043079/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 15, 2017
From: WALKER, DEAN; BREWER, TONY M.; BOLDING, JOE D.; LEIDEL, JOHN D.; WADLEIGH, KEVIN R.
To: MICRON TECHNOLOGY, INC.
Reel/Frame 042379/0674 →
PATENT SECURITY AGREEMENT Recorded Jun 2, 2016
From: MICRON TECHNOLOGY, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS COLLATERAL AGENT
Reel/Frame 038954/0001 →
SECURITY INTEREST Recorded May 12, 2016
From: MICRON TECHNOLOGY, INC.
To: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 038669/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 6, 2015
From: CONVEY COMPUTER CORPORATION
To: MICRON TECHNOLOGY, INC
Reel/Frame 035578/0838 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 25, 2013
From: LIEIDEL, JOHN D.; WADLEIGN, KEVIN R.; BOLDING, JOE; BREWER, TONY; WALKER, DEAN E.
To: CONVEY COMPUTER
Reel/Frame 030684/0110 →